Deploy website - based on 61851bc5a9f890accd2015ab6878cec8372c827d
diff --git a/0581431b.42102481.js b/0581431b.3f38c1ae.js
similarity index 98%
rename from 0581431b.42102481.js
rename to 0581431b.3f38c1ae.js
index 4ec6ba6..f66e9e5 100644
--- a/0581431b.42102481.js
+++ b/0581431b.3f38c1ae.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[3],{209:function(e,t,n){"use strict";n.d(t,"a",(function(){return s})),n.d(t,"b",(function(){return d}));var r=n(0),a=n.n(r);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function c(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?l(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):l(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function o(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var b=a.a.createContext({}),p=function(e){var t=a.a.useContext(b),n=t;return e&&(n="function"==typeof e?e(t):c(c({},t),e)),n},s=function(e){var t=p(e.components);return a.a.createElement(b.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},u=a.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,l=e.parentName,b=o(e,["components","mdxType","originalType","parentName"]),s=p(n),u=r,d=s["".concat(l,".").concat(u)]||s[u]||m[u]||i;return n?a.a.createElement(d,c(c({ref:t},b),{},{components:n})):a.a.createElement(d,c({ref:t},b))}));function d(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,l=new Array(i);l[0]=u;var c={};for(var o in t)hasOwnProperty.call(t,o)&&(c[o]=t[o]);c.originalType=e,c.mdxType="string"==typeof e?e:r,l[1]=c;for(var b=2;b<i;b++)l[b]=n[b];return a.a.createElement.apply(null,l)}return a.a.createElement.apply(null,n)}u.displayName="MDXCreateElement"},68:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return l})),n.d(t,"metadata",(function(){return c})),n.d(t,"toc",(function(){return o})),n.d(t,"default",(function(){return p}));var r=n(3),a=n(7),i=(n(0),n(209)),l={title:"Experiment Client"},c={unversionedId:"userDocs/submarine-sdk/experiment-client",id:"userDocs/submarine-sdk/experiment-client",isDocsHomePage:!1,title:"Experiment Client",description:"\x3c!--",source:"@site/docs/userDocs/submarine-sdk/experiment-client.md",slug:"/userDocs/submarine-sdk/experiment-client",permalink:"/docs/next/userDocs/submarine-sdk/experiment-client",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/userDocs/submarine-sdk/experiment-client.md",version:"current",sidebar:"docs",previous:{title:"Notebook REST API",permalink:"/docs/next/userDocs/api/notebook"},next:{title:"Submarine CLI",permalink:"/docs/next/userDocs/submarine-sdk/submarine-cli"}},o=[{value:"class ExperimentClient()",id:"class-experimentclient",children:[{value:"<code>create_experiment(experiment_spec: json) -&gt; dict</code>",id:"create_experimentexperiment_spec-json---dict",children:[]},{value:"<code>patch_experiment(id: str, experiment_spec: json) -&gt; dict</code>",id:"patch_experimentid-str-experiment_spec-json---dict",children:[]},{value:"<code>get_experiment(id: str) -&gt; dict</code>",id:"get_experimentid-str---dict",children:[]},{value:"<code>list_experiments(status: Optional[str]=None) -&gt; list[dict]</code>",id:"list_experimentsstatus-optionalstrnone---listdict",children:[]},{value:"<code>delete_experiment(id: str) -&gt; dict</code>",id:"delete_experimentid-str---dict",children:[]},{value:"<code>get_log(id: str, onlyMaster: Optional[bool]=False) -&gt; None</code>",id:"get_logid-str-onlymaster-optionalboolfalse---none",children:[]},{value:"<code>list_log(status: str) -&gt; list[dict]</code>",id:"list_logstatus-str---listdict",children:[]},{value:"<code>wait_for_finish(id: str, polling_interval: Optional[int]=10) -&gt; dict</code>",id:"wait_for_finishid-str-polling_interval-optionalint10---dict",children:[]}]}],b={toc:o};function p(e){var t=e.components,n=Object(a.a)(e,["components"]);return Object(i.b)("wrapper",Object(r.a)({},b,n,{components:t,mdxType:"MDXLayout"}),Object(i.b)("h2",{id:"class-experimentclient"},"class ExperimentClient()"),Object(i.b)("p",null,"Client of a submarine server that creates and manages experients and logs."),Object(i.b)("h3",{id:"create_experimentexperiment_spec-json---dict"},Object(i.b)("inlineCode",{parentName:"h3"},"create_experiment(experiment_spec: json) -> dict")),Object(i.b)("p",null,"Create an experiment."),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Parameters")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"experiment_spec"),": Submarine experiment spec. More detailed information can be found at ",Object(i.b)("a",{parentName:"li",href:"https://submarine.apache.org/docs/userDocs/api/experiment"},"Experiment API"),"."))),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Returns"),": The detailed info about the submarine experiment.")),Object(i.b)("p",null,"Example"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-python"},'from submarine import *\nclient = ExperimentClient()\nclient.create_experiment({\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=1024M"\n    }\n  }\n})\n')),Object(i.b)("h3",{id:"patch_experimentid-str-experiment_spec-json---dict"},Object(i.b)("inlineCode",{parentName:"h3"},"patch_experiment(id: str, experiment_spec: json) -> dict")),Object(i.b)("p",null,"Patch an experiment."),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Parameters")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"id"),": Submarine experiment id. "),Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"experiment_spec"),": Submarine experiment spec. More detailed information can be found at ",Object(i.b)("a",{parentName:"li",href:"https://submarine.apache.org/docs/userDocs/api/experiment"},"Experiment API"),"."))),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Returns")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},"The detailed info about the submarine experiment."))),Object(i.b)("p",null,"Example"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-python"},'client.patch_experiment("experiment_1626160071451_0008", {\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    "Worker": {\n      "replicas": 2,\n      "resources": "cpu=1,memory=1024M"\n    }\n  }\n})\n')),Object(i.b)("h3",{id:"get_experimentid-str---dict"},Object(i.b)("inlineCode",{parentName:"h3"},"get_experiment(id: str) -> dict")),Object(i.b)("p",null,"Get the experiment's detailed info by id."),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Parameters")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"id"),": Submarine experiment id."))),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Returns")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},"The detailed info about the submarine experiment."))),Object(i.b)("p",null,"Example"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-python"},'experiment = client.get_experiment("experiment_1626160071451_0008")\n')),Object(i.b)("h3",{id:"list_experimentsstatus-optionalstrnone---listdict"},Object(i.b)("inlineCode",{parentName:"h3"},"list_experiments(status: Optional[str]=None) -> list[dict]")),Object(i.b)("p",null,"List all experiment for the user."),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Parameters")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"status"),": Accepted, Created, Running, Succeeded, Deleted."))),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Returns")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},"List of submarine experiments."))),Object(i.b)("p",null,"Example"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-python"},"experiments = client.list_experiments()\n")),Object(i.b)("h3",{id:"delete_experimentid-str---dict"},Object(i.b)("inlineCode",{parentName:"h3"},"delete_experiment(id: str) -> dict")),Object(i.b)("p",null,"Delete the submarine experiment."),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Parameters")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"id"),": Submarine experiment id."))),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Returns")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},"The detailed info about the deleted submarine experiment."))),Object(i.b)("p",null,"Example"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-python"},'client.delete_experiment("experiment_1626160071451_0008")\n')),Object(i.b)("h3",{id:"get_logid-str-onlymaster-optionalboolfalse---none"},Object(i.b)("inlineCode",{parentName:"h3"},"get_log(id: str, onlyMaster: Optional[bool]=False) -> None")),Object(i.b)("p",null,"Print training logs of all pod of the experiment.\nBy default print all the logs of Pod."),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Parameters")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"id"),": Submarine experiment id."),Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"onlyMaster"),': By default include pod log of "master" which might be Tensorflow PS/Chief or PyTorch master.'))),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Return")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},"The info of pod logs"))),Object(i.b)("p",null,"Example"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-python"},'client.get_log("experiment_1626160071451_0009")\n')),Object(i.b)("h3",{id:"list_logstatus-str---listdict"},Object(i.b)("inlineCode",{parentName:"h3"},"list_log(status: str) -> list[dict]")),Object(i.b)("p",null,"List experiment log."),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Parameters")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"status"),": Accepted, Created, Running, Succeeded, Deleted."))),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Returns")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},"List of submarine experiment logs."))),Object(i.b)("p",null,"Example"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-python"},'logs = client.list_log("Succeeded")\n')),Object(i.b)("h3",{id:"wait_for_finishid-str-polling_interval-optionalint10---dict"},Object(i.b)("inlineCode",{parentName:"h3"},"wait_for_finish(id: str, polling_interval: Optional[int]=10) -> dict")),Object(i.b)("p",null,"Waits until the experiment is finished or failed."),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Parameters")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"id"),": Submarine experiment id."),Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"polling_interval"),": How many seconds between two polls for the status of the experiment."))),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Returns")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},"Submarine experiment logs."))),Object(i.b)("p",null,"Example"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-python"},'logs = client.wait_for_finish("experiment_1626160071451_0009", 5)\n')))}p.isMDXComponent=!0}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[3],{194:function(e,t,n){"use strict";n.d(t,"a",(function(){return s})),n.d(t,"b",(function(){return d}));var r=n(0),a=n.n(r);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function c(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?l(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):l(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function o(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var b=a.a.createContext({}),p=function(e){var t=a.a.useContext(b),n=t;return e&&(n="function"==typeof e?e(t):c(c({},t),e)),n},s=function(e){var t=p(e.components);return a.a.createElement(b.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},u=a.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,l=e.parentName,b=o(e,["components","mdxType","originalType","parentName"]),s=p(n),u=r,d=s["".concat(l,".").concat(u)]||s[u]||m[u]||i;return n?a.a.createElement(d,c(c({ref:t},b),{},{components:n})):a.a.createElement(d,c({ref:t},b))}));function d(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,l=new Array(i);l[0]=u;var c={};for(var o in t)hasOwnProperty.call(t,o)&&(c[o]=t[o]);c.originalType=e,c.mdxType="string"==typeof e?e:r,l[1]=c;for(var b=2;b<i;b++)l[b]=n[b];return a.a.createElement.apply(null,l)}return a.a.createElement.apply(null,n)}u.displayName="MDXCreateElement"},68:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return l})),n.d(t,"metadata",(function(){return c})),n.d(t,"toc",(function(){return o})),n.d(t,"default",(function(){return p}));var r=n(3),a=n(7),i=(n(0),n(194)),l={title:"Experiment Client"},c={unversionedId:"userDocs/submarine-sdk/experiment-client",id:"userDocs/submarine-sdk/experiment-client",isDocsHomePage:!1,title:"Experiment Client",description:"\x3c!--",source:"@site/docs/userDocs/submarine-sdk/experiment-client.md",slug:"/userDocs/submarine-sdk/experiment-client",permalink:"/docs/next/userDocs/submarine-sdk/experiment-client",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/userDocs/submarine-sdk/experiment-client.md",version:"current",sidebar:"docs",previous:{title:"Notebook REST API",permalink:"/docs/next/userDocs/api/notebook"},next:{title:"Submarine CLI",permalink:"/docs/next/userDocs/submarine-sdk/submarine-cli"}},o=[{value:"class ExperimentClient()",id:"class-experimentclient",children:[{value:"<code>create_experiment(experiment_spec: json) -&gt; dict</code>",id:"create_experimentexperiment_spec-json---dict",children:[]},{value:"<code>patch_experiment(id: str, experiment_spec: json) -&gt; dict</code>",id:"patch_experimentid-str-experiment_spec-json---dict",children:[]},{value:"<code>get_experiment(id: str) -&gt; dict</code>",id:"get_experimentid-str---dict",children:[]},{value:"<code>list_experiments(status: Optional[str]=None) -&gt; list[dict]</code>",id:"list_experimentsstatus-optionalstrnone---listdict",children:[]},{value:"<code>delete_experiment(id: str) -&gt; dict</code>",id:"delete_experimentid-str---dict",children:[]},{value:"<code>get_log(id: str, onlyMaster: Optional[bool]=False) -&gt; None</code>",id:"get_logid-str-onlymaster-optionalboolfalse---none",children:[]},{value:"<code>list_log(status: str) -&gt; list[dict]</code>",id:"list_logstatus-str---listdict",children:[]},{value:"<code>wait_for_finish(id: str, polling_interval: Optional[int]=10) -&gt; dict</code>",id:"wait_for_finishid-str-polling_interval-optionalint10---dict",children:[]}]}],b={toc:o};function p(e){var t=e.components,n=Object(a.a)(e,["components"]);return Object(i.b)("wrapper",Object(r.a)({},b,n,{components:t,mdxType:"MDXLayout"}),Object(i.b)("h2",{id:"class-experimentclient"},"class ExperimentClient()"),Object(i.b)("p",null,"Client of a submarine server that creates and manages experients and logs."),Object(i.b)("h3",{id:"create_experimentexperiment_spec-json---dict"},Object(i.b)("inlineCode",{parentName:"h3"},"create_experiment(experiment_spec: json) -> dict")),Object(i.b)("p",null,"Create an experiment."),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Parameters")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"experiment_spec"),": Submarine experiment spec. More detailed information can be found at ",Object(i.b)("a",{parentName:"li",href:"https://submarine.apache.org/docs/userDocs/api/experiment"},"Experiment API"),"."))),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Returns"),": The detailed info about the submarine experiment.")),Object(i.b)("p",null,"Example"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-python"},'from submarine import *\nclient = ExperimentClient()\nclient.create_experiment({\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=1024M"\n    }\n  }\n})\n')),Object(i.b)("h3",{id:"patch_experimentid-str-experiment_spec-json---dict"},Object(i.b)("inlineCode",{parentName:"h3"},"patch_experiment(id: str, experiment_spec: json) -> dict")),Object(i.b)("p",null,"Patch an experiment."),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Parameters")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"id"),": Submarine experiment id. "),Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"experiment_spec"),": Submarine experiment spec. More detailed information can be found at ",Object(i.b)("a",{parentName:"li",href:"https://submarine.apache.org/docs/userDocs/api/experiment"},"Experiment API"),"."))),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Returns")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},"The detailed info about the submarine experiment."))),Object(i.b)("p",null,"Example"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-python"},'client.patch_experiment("experiment_1626160071451_0008", {\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    "Worker": {\n      "replicas": 2,\n      "resources": "cpu=1,memory=1024M"\n    }\n  }\n})\n')),Object(i.b)("h3",{id:"get_experimentid-str---dict"},Object(i.b)("inlineCode",{parentName:"h3"},"get_experiment(id: str) -> dict")),Object(i.b)("p",null,"Get the experiment's detailed info by id."),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Parameters")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"id"),": Submarine experiment id."))),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Returns")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},"The detailed info about the submarine experiment."))),Object(i.b)("p",null,"Example"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-python"},'experiment = client.get_experiment("experiment_1626160071451_0008")\n')),Object(i.b)("h3",{id:"list_experimentsstatus-optionalstrnone---listdict"},Object(i.b)("inlineCode",{parentName:"h3"},"list_experiments(status: Optional[str]=None) -> list[dict]")),Object(i.b)("p",null,"List all experiment for the user."),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Parameters")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"status"),": Accepted, Created, Running, Succeeded, Deleted."))),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Returns")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},"List of submarine experiments."))),Object(i.b)("p",null,"Example"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-python"},"experiments = client.list_experiments()\n")),Object(i.b)("h3",{id:"delete_experimentid-str---dict"},Object(i.b)("inlineCode",{parentName:"h3"},"delete_experiment(id: str) -> dict")),Object(i.b)("p",null,"Delete the submarine experiment."),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Parameters")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"id"),": Submarine experiment id."))),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Returns")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},"The detailed info about the deleted submarine experiment."))),Object(i.b)("p",null,"Example"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-python"},'client.delete_experiment("experiment_1626160071451_0008")\n')),Object(i.b)("h3",{id:"get_logid-str-onlymaster-optionalboolfalse---none"},Object(i.b)("inlineCode",{parentName:"h3"},"get_log(id: str, onlyMaster: Optional[bool]=False) -> None")),Object(i.b)("p",null,"Print training logs of all pod of the experiment.\nBy default print all the logs of Pod."),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Parameters")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"id"),": Submarine experiment id."),Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"onlyMaster"),': By default include pod log of "master" which might be Tensorflow PS/Chief or PyTorch master.'))),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Return")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},"The info of pod logs"))),Object(i.b)("p",null,"Example"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-python"},'client.get_log("experiment_1626160071451_0009")\n')),Object(i.b)("h3",{id:"list_logstatus-str---listdict"},Object(i.b)("inlineCode",{parentName:"h3"},"list_log(status: str) -> list[dict]")),Object(i.b)("p",null,"List experiment log."),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Parameters")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"status"),": Accepted, Created, Running, Succeeded, Deleted."))),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Returns")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},"List of submarine experiment logs."))),Object(i.b)("p",null,"Example"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-python"},'logs = client.list_log("Succeeded")\n')),Object(i.b)("h3",{id:"wait_for_finishid-str-polling_interval-optionalint10---dict"},Object(i.b)("inlineCode",{parentName:"h3"},"wait_for_finish(id: str, polling_interval: Optional[int]=10) -> dict")),Object(i.b)("p",null,"Waits until the experiment is finished or failed."),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Parameters")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"id"),": Submarine experiment id."),Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"polling_interval"),": How many seconds between two polls for the status of the experiment."))),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Returns")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},"Submarine experiment logs."))),Object(i.b)("p",null,"Example"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-python"},'logs = client.wait_for_finish("experiment_1626160071451_0009", 5)\n')))}p.isMDXComponent=!0}}]);
\ No newline at end of file
diff --git a/0b49bfb5.4330d396.js b/0b49bfb5.22ff41c8.js
similarity index 96%
rename from 0b49bfb5.4330d396.js
rename to 0b49bfb5.22ff41c8.js
index 80bdda6..40ab9a5 100644
--- a/0b49bfb5.4330d396.js
+++ b/0b49bfb5.22ff41c8.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[4],{209:function(e,r,t){"use strict";t.d(r,"a",(function(){return f})),t.d(r,"b",(function(){return m}));var n=t(0),o=t.n(n);function c(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function i(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function a(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?i(Object(t),!0).forEach((function(r){c(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):i(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}function u(e,r){if(null==e)return{};var t,n,o=function(e,r){if(null==e)return{};var t,n,o={},c=Object.keys(e);for(n=0;n<c.length;n++)t=c[n],r.indexOf(t)>=0||(o[t]=e[t]);return o}(e,r);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(e);for(n=0;n<c.length;n++)t=c[n],r.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}var s=o.a.createContext({}),l=function(e){var r=o.a.useContext(s),t=r;return e&&(t="function"==typeof e?e(r):a(a({},r),e)),t},f=function(e){var r=l(e.components);return o.a.createElement(s.Provider,{value:r},e.children)},p={inlineCode:"code",wrapper:function(e){var r=e.children;return o.a.createElement(o.a.Fragment,{},r)}},b=o.a.forwardRef((function(e,r){var t=e.components,n=e.mdxType,c=e.originalType,i=e.parentName,s=u(e,["components","mdxType","originalType","parentName"]),f=l(t),b=n,m=f["".concat(i,".").concat(b)]||f[b]||p[b]||c;return t?o.a.createElement(m,a(a({ref:r},s),{},{components:t})):o.a.createElement(m,a({ref:r},s))}));function m(e,r){var t=arguments,n=r&&r.mdxType;if("string"==typeof e||n){var c=t.length,i=new Array(c);i[0]=b;var a={};for(var u in r)hasOwnProperty.call(r,u)&&(a[u]=r[u]);a.originalType=e,a.mdxType="string"==typeof e?e:n,i[1]=a;for(var s=2;s<c;s++)i[s]=t[s];return o.a.createElement.apply(null,i)}return o.a.createElement.apply(null,t)}b.displayName="MDXCreateElement"},69:function(e,r,t){"use strict";t.r(r),t.d(r,"frontMatter",(function(){return i})),t.d(r,"metadata",(function(){return a})),t.d(r,"toc",(function(){return u})),t.d(r,"default",(function(){return l}));var n=t(3),o=t(7),c=(t(0),t(209)),i={title:"Write Dockerfiles for Submarine"},a={unversionedId:"userDocs/yarn/Dockerfiles",id:"version-0.6.0/userDocs/yarn/Dockerfiles",isDocsHomePage:!1,title:"Write Dockerfiles for Submarine",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/userDocs/yarn/Dockerfiles.md",slug:"/userDocs/yarn/Dockerfiles",permalink:"/docs/userDocs/yarn/Dockerfiles",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/yarn/Dockerfiles.md",version:"0.6.0"},u=[],s={toc:u};function l(e){var r=e.components,t=Object(o.a)(e,["components"]);return Object(c.b)("wrapper",Object(n.a)({},s,t,{components:r,mdxType:"MDXLayout"}),Object(c.b)("p",null,Object(c.b)("a",{parentName:"p",href:"WriteDockerfileTF"},"How to write Dockerfile for Submarine TensorFlow jobs")),Object(c.b)("p",null,Object(c.b)("a",{parentName:"p",href:"WriteDockerfilePT"},"How to write Dockerfile for Submarine PyTorch jobs")),Object(c.b)("p",null,Object(c.b)("a",{parentName:"p",href:"WriteDockerfileMX"},"How to write Dockerfile for Submarine MXNet jobs")))}l.isMDXComponent=!0}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[4],{194:function(e,r,t){"use strict";t.d(r,"a",(function(){return f})),t.d(r,"b",(function(){return m}));var n=t(0),o=t.n(n);function c(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function i(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function a(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?i(Object(t),!0).forEach((function(r){c(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):i(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}function u(e,r){if(null==e)return{};var t,n,o=function(e,r){if(null==e)return{};var t,n,o={},c=Object.keys(e);for(n=0;n<c.length;n++)t=c[n],r.indexOf(t)>=0||(o[t]=e[t]);return o}(e,r);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(e);for(n=0;n<c.length;n++)t=c[n],r.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}var s=o.a.createContext({}),l=function(e){var r=o.a.useContext(s),t=r;return e&&(t="function"==typeof e?e(r):a(a({},r),e)),t},f=function(e){var r=l(e.components);return o.a.createElement(s.Provider,{value:r},e.children)},p={inlineCode:"code",wrapper:function(e){var r=e.children;return o.a.createElement(o.a.Fragment,{},r)}},b=o.a.forwardRef((function(e,r){var t=e.components,n=e.mdxType,c=e.originalType,i=e.parentName,s=u(e,["components","mdxType","originalType","parentName"]),f=l(t),b=n,m=f["".concat(i,".").concat(b)]||f[b]||p[b]||c;return t?o.a.createElement(m,a(a({ref:r},s),{},{components:t})):o.a.createElement(m,a({ref:r},s))}));function m(e,r){var t=arguments,n=r&&r.mdxType;if("string"==typeof e||n){var c=t.length,i=new Array(c);i[0]=b;var a={};for(var u in r)hasOwnProperty.call(r,u)&&(a[u]=r[u]);a.originalType=e,a.mdxType="string"==typeof e?e:n,i[1]=a;for(var s=2;s<c;s++)i[s]=t[s];return o.a.createElement.apply(null,i)}return o.a.createElement.apply(null,t)}b.displayName="MDXCreateElement"},69:function(e,r,t){"use strict";t.r(r),t.d(r,"frontMatter",(function(){return i})),t.d(r,"metadata",(function(){return a})),t.d(r,"toc",(function(){return u})),t.d(r,"default",(function(){return l}));var n=t(3),o=t(7),c=(t(0),t(194)),i={title:"Write Dockerfiles for Submarine"},a={unversionedId:"userDocs/yarn/Dockerfiles",id:"version-0.6.0/userDocs/yarn/Dockerfiles",isDocsHomePage:!1,title:"Write Dockerfiles for Submarine",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/userDocs/yarn/Dockerfiles.md",slug:"/userDocs/yarn/Dockerfiles",permalink:"/docs/userDocs/yarn/Dockerfiles",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/yarn/Dockerfiles.md",version:"0.6.0"},u=[],s={toc:u};function l(e){var r=e.components,t=Object(o.a)(e,["components"]);return Object(c.b)("wrapper",Object(n.a)({},s,t,{components:r,mdxType:"MDXLayout"}),Object(c.b)("p",null,Object(c.b)("a",{parentName:"p",href:"WriteDockerfileTF"},"How to write Dockerfile for Submarine TensorFlow jobs")),Object(c.b)("p",null,Object(c.b)("a",{parentName:"p",href:"WriteDockerfilePT"},"How to write Dockerfile for Submarine PyTorch jobs")),Object(c.b)("p",null,Object(c.b)("a",{parentName:"p",href:"WriteDockerfileMX"},"How to write Dockerfile for Submarine MXNet jobs")))}l.isMDXComponent=!0}}]);
\ No newline at end of file
diff --git a/0bc74cd0.b207bf46.js b/0bc74cd0.cc1ad21e.js
similarity index 98%
rename from 0bc74cd0.b207bf46.js
rename to 0bc74cd0.cc1ad21e.js
index a7ea7b6..63c95ed 100644
--- a/0bc74cd0.b207bf46.js
+++ b/0bc74cd0.cc1ad21e.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[5],{209:function(e,t,n){"use strict";n.d(t,"a",(function(){return u})),n.d(t,"b",(function(){return h}));var a=n(0),r=n.n(a);function l(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){l(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},l=Object.keys(e);for(a=0;a<l.length;a++)n=l[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a<l.length;a++)n=l[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var b=r.a.createContext({}),c=function(e){var t=r.a.useContext(b),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},u=function(e){var t=c(e.components);return r.a.createElement(b.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},m=r.a.forwardRef((function(e,t){var n=e.components,a=e.mdxType,l=e.originalType,i=e.parentName,b=s(e,["components","mdxType","originalType","parentName"]),u=c(n),m=a,h=u["".concat(i,".").concat(m)]||u[m]||p[m]||l;return n?r.a.createElement(h,o(o({ref:t},b),{},{components:n})):r.a.createElement(h,o({ref:t},b))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var l=n.length,i=new Array(l);i[0]=m;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o.mdxType="string"==typeof e?e:a,i[1]=o;for(var b=2;b<l;b++)i[b]=n[b];return r.a.createElement.apply(null,i)}return r.a.createElement.apply(null,n)}m.displayName="MDXCreateElement"},70:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return i})),n.d(t,"metadata",(function(){return o})),n.d(t,"toc",(function(){return s})),n.d(t,"default",(function(){return c}));var a=n(3),r=n(7),l=(n(0),n(209)),i={title:"Deploy Submarine with Helm"},o={unversionedId:"gettingStarted/helm",id:"version-0.6.0/gettingStarted/helm",isDocsHomePage:!1,title:"Deploy Submarine with Helm",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/gettingStarted/helm.md",slug:"/gettingStarted/helm",permalink:"/docs/gettingStarted/helm",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/gettingStarted/helm.md",version:"0.6.0"},s=[{value:"Prerequisite",id:"prerequisite",children:[]},{value:"Deploy Submarine to Kubernetes",id:"deploy-submarine-to-kubernetes",children:[]},{value:"Verify installation",id:"verify-installation",children:[]},{value:"Uninstall Submarine",id:"uninstall-submarine",children:[]},{value:"Volume Type",id:"volume-type",children:[{value:"Access to Submarine Server",id:"access-to-submarine-server",children:[]}]}],b={toc:s};function c(e){var t=e.components,n=Object(r.a)(e,["components"]);return Object(l.b)("wrapper",Object(a.a)({},b,n,{components:t,mdxType:"MDXLayout"}),Object(l.b)("h1",{id:"deploy-submarine-with-helm"},"Deploy Submarine with Helm"),Object(l.b)("p",null,"With the help of ",Object(l.b)("a",{parentName:"p",href:"https://helm.sh/"},"Helm"),", users can deploy Submarine service to Kubernetes in one command.\nCheck ",Object(l.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/tree/master/helm-charts/submarine"},"helm-charts/submarine")," for more details."),Object(l.b)("h2",{id:"prerequisite"},"Prerequisite"),Object(l.b)("ul",null,Object(l.b)("li",{parentName:"ul"},"Install Helm v3: ",Object(l.b)("a",{parentName:"li",href:"https://helm.sh/docs/intro/install/"},"https://helm.sh/docs/intro/install/")," "),Object(l.b)("li",{parentName:"ul"},"A Kubernetes environment (ex: minikube or kind)")),Object(l.b)("h2",{id:"deploy-submarine-to-kubernetes"},"Deploy Submarine to Kubernetes"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-bash"},"git clone https://github.com/apache/submarine.git\ncd submarine\nhelm install submarine ./helm-charts/submarine\n")),Object(l.b)("ul",null,Object(l.b)("li",{parentName:"ul"},'With these commands, the Submarine service will be deployed to the "default" namespace.'),Object(l.b)("li",{parentName:"ul"},"The first time installation will take about 10 mins because the docker images are pulled from ",Object(l.b)("a",{parentName:"li",href:"https://hub.docker.com/r/apache/submarine"},"apache/submarine")," on DockerHub.")),Object(l.b)("h2",{id:"verify-installation"},"Verify installation"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-bash"},"kubectl get all\n")),Object(l.b)("ul",null,Object(l.b)("li",{parentName:"ul"},"TODO: screenshot")),Object(l.b)("h2",{id:"uninstall-submarine"},"Uninstall Submarine"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-bash"},"helm uninstall submarine\n\n# Check\nhelm ls \n")),Object(l.b)("h1",{id:"helm-chart-configuation-valuesyaml"},"Helm chart configuation (values.yaml)"),Object(l.b)("h2",{id:"volume-type"},"Volume Type"),Object(l.b)("p",null,"Submarine can support various ",Object(l.b)("a",{parentName:"p",href:"https://kubernetes.io/docs/concepts/storage/volumes/#nfs"},"volume types"),", currently including hostPath (default) and NFS. It can be easily configured in the ",Object(l.b)("inlineCode",{parentName:"p"},"./helm-charts/submarine/values.yaml"),", or you can override the default values in ",Object(l.b)("inlineCode",{parentName:"p"},"values.yaml")," by ",Object(l.b)("a",{parentName:"p",href:"https://helm.sh/docs/helm/helm_install/"},"helm CLI"),"."),Object(l.b)("h4",{id:"hostpath"},"hostPath"),Object(l.b)("ul",null,Object(l.b)("li",{parentName:"ul"},"In hostPath, you can store data directly in your node."),Object(l.b)("li",{parentName:"ul"},"Usage:",Object(l.b)("ol",{parentName:"li"},Object(l.b)("li",{parentName:"ol"},"Configure setting in ",Object(l.b)("inlineCode",{parentName:"li"},"./helm-charts/submarine/values.yaml"),"."),Object(l.b)("li",{parentName:"ol"},"To enable hostPath storage, set ",Object(l.b)("inlineCode",{parentName:"li"},".storage.type")," to ",Object(l.b)("inlineCode",{parentName:"li"},"host"),"."),Object(l.b)("li",{parentName:"ol"},"To set the root path for your storage, set ",Object(l.b)("inlineCode",{parentName:"li"},".storage.host.root")," to ",Object(l.b)("inlineCode",{parentName:"li"},"<any-path>")))),Object(l.b)("li",{parentName:"ul"},"Example:",Object(l.b)("pre",{parentName:"li"},Object(l.b)("code",{parentName:"pre",className:"language-yaml"},"# ./helm-charts/submarine/values.yaml\nstorage:\n  type: host\n  host:\n    root: /tmp\n")))),Object(l.b)("h4",{id:"nfs-network-file-system"},"NFS (Network File System)"),Object(l.b)("ul",null,Object(l.b)("li",{parentName:"ul"},"In NFS, it allows multiple clients to access a shared space."),Object(l.b)("li",{parentName:"ul"},"Prerequisite:",Object(l.b)("ol",{parentName:"li"},Object(l.b)("li",{parentName:"ol"},"A pre-existing NFS server. You have two options.",Object(l.b)("ol",{parentName:"li"},Object(l.b)("li",{parentName:"ol"},"Create NFS server",Object(l.b)("pre",{parentName:"li"},Object(l.b)("code",{parentName:"pre",className:"language-bash"},"kubectl create -f ./dev-support/nfs-server/nfs-server.yaml\n")),"It will create a nfs-server pod in kubernetes cluster, and expose nfs-server ip at ",Object(l.b)("inlineCode",{parentName:"li"},"10.96.0.2")),Object(l.b)("li",{parentName:"ol"},"Use your own NFS server"))),Object(l.b)("li",{parentName:"ol"},"Install NFS dependencies in your nodes",Object(l.b)("ul",{parentName:"li"},Object(l.b)("li",{parentName:"ul"},"Ubuntu",Object(l.b)("pre",{parentName:"li"},Object(l.b)("code",{parentName:"pre",className:"language-bash"},"apt-get install -y nfs-common\n"))),Object(l.b)("li",{parentName:"ul"},"CentOS",Object(l.b)("pre",{parentName:"li"},Object(l.b)("code",{parentName:"pre",className:"language-bash"},"yum install nfs-util\n"))))))),Object(l.b)("li",{parentName:"ul"},"Usage:",Object(l.b)("ol",{parentName:"li"},Object(l.b)("li",{parentName:"ol"},"Configure setting in ",Object(l.b)("inlineCode",{parentName:"li"},"./helm-charts/submarine/values.yaml"),"."),Object(l.b)("li",{parentName:"ol"},"To enable NFS storage, set ",Object(l.b)("inlineCode",{parentName:"li"},".storage.type")," to ",Object(l.b)("inlineCode",{parentName:"li"},"nfs"),"."),Object(l.b)("li",{parentName:"ol"},"To set the ip for NFS server, set ",Object(l.b)("inlineCode",{parentName:"li"},".storage.nfs.ip")," to ",Object(l.b)("inlineCode",{parentName:"li"},"<any-ip>")))),Object(l.b)("li",{parentName:"ul"},"Example:",Object(l.b)("pre",{parentName:"li"},Object(l.b)("code",{parentName:"pre",className:"language-yaml"},"# ./helm-charts/submarine/values.yaml\nstorage:\n  type: nfs\n  nfs:\n    ip: 10.96.0.2\n")))),Object(l.b)("h3",{id:"access-to-submarine-server"},"Access to Submarine Server"),Object(l.b)("p",null,"Submarine server by default expose 8080 port within K8s cluster. After Submarine v0.5\nuses Traefik as reverse-proxy by default. If you don't want to\nuse Traefik, you can modify below value to ",Object(l.b)("strong",{parentName:"p"},Object(l.b)("em",{parentName:"strong"},"false"))," in ",Object(l.b)("inlineCode",{parentName:"p"},"./helm-charts/submarine/values.yaml"),"."),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-yaml"},"# Use Traefik by default\ntraefik:\n  enabled: true\n")),Object(l.b)("p",null,"To access the server from outside of the cluster, we use Traefik ingress controller and\nNodePort for external access.\\\nPlease refer to ",Object(l.b)("inlineCode",{parentName:"p"},"./helm-charts/submarine/charts/traefik/values.yaml")," and ",Object(l.b)("a",{parentName:"p",href:"https://docs.traefik.io/"},"Traefik docs"),"\nfor more details if you want to customize the default value for Traefik."),Object(l.b)("p",null,Object(l.b)("em",{parentName:"p"},"Notice:"),"\nIf you use ",Object(l.b)("inlineCode",{parentName:"p"},"kind")," to run local Kubernetes cluster,\nplease refer to this ",Object(l.b)("a",{parentName:"p",href:"https://kind.sigs.k8s.io/docs/user/configuration/#extra-port-mappings"},"docs"),'\nand set the configuration "extraPortMappings" when creating the k8s cluster.'),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"kind: Cluster\napiVersion: kind.x-k8s.io/v1alpha4\nnodes:\n- role: control-plane\n  extraPortMappings:\n  - containerPort: 32080\n    hostPort: [the port you want to access]\n")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"# Use nodePort and Traefik ingress controller by default.\n# To access the submarine server, open the following URL in your browser.\nhttp://127.0.0.1:32080\n")),Object(l.b)("p",null,"If minikube is installed, use the following command to find the URL to the Submarine server."),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"$ minikube service submarine-traefik --url\n")))}c.isMDXComponent=!0}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[5],{194:function(e,t,n){"use strict";n.d(t,"a",(function(){return u})),n.d(t,"b",(function(){return h}));var a=n(0),r=n.n(a);function l(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){l(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},l=Object.keys(e);for(a=0;a<l.length;a++)n=l[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a<l.length;a++)n=l[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var b=r.a.createContext({}),c=function(e){var t=r.a.useContext(b),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},u=function(e){var t=c(e.components);return r.a.createElement(b.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},m=r.a.forwardRef((function(e,t){var n=e.components,a=e.mdxType,l=e.originalType,i=e.parentName,b=s(e,["components","mdxType","originalType","parentName"]),u=c(n),m=a,h=u["".concat(i,".").concat(m)]||u[m]||p[m]||l;return n?r.a.createElement(h,o(o({ref:t},b),{},{components:n})):r.a.createElement(h,o({ref:t},b))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var l=n.length,i=new Array(l);i[0]=m;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o.mdxType="string"==typeof e?e:a,i[1]=o;for(var b=2;b<l;b++)i[b]=n[b];return r.a.createElement.apply(null,i)}return r.a.createElement.apply(null,n)}m.displayName="MDXCreateElement"},70:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return i})),n.d(t,"metadata",(function(){return o})),n.d(t,"toc",(function(){return s})),n.d(t,"default",(function(){return c}));var a=n(3),r=n(7),l=(n(0),n(194)),i={title:"Deploy Submarine with Helm"},o={unversionedId:"gettingStarted/helm",id:"version-0.6.0/gettingStarted/helm",isDocsHomePage:!1,title:"Deploy Submarine with Helm",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/gettingStarted/helm.md",slug:"/gettingStarted/helm",permalink:"/docs/gettingStarted/helm",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/gettingStarted/helm.md",version:"0.6.0"},s=[{value:"Prerequisite",id:"prerequisite",children:[]},{value:"Deploy Submarine to Kubernetes",id:"deploy-submarine-to-kubernetes",children:[]},{value:"Verify installation",id:"verify-installation",children:[]},{value:"Uninstall Submarine",id:"uninstall-submarine",children:[]},{value:"Volume Type",id:"volume-type",children:[{value:"Access to Submarine Server",id:"access-to-submarine-server",children:[]}]}],b={toc:s};function c(e){var t=e.components,n=Object(r.a)(e,["components"]);return Object(l.b)("wrapper",Object(a.a)({},b,n,{components:t,mdxType:"MDXLayout"}),Object(l.b)("h1",{id:"deploy-submarine-with-helm"},"Deploy Submarine with Helm"),Object(l.b)("p",null,"With the help of ",Object(l.b)("a",{parentName:"p",href:"https://helm.sh/"},"Helm"),", users can deploy Submarine service to Kubernetes in one command.\nCheck ",Object(l.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/tree/master/helm-charts/submarine"},"helm-charts/submarine")," for more details."),Object(l.b)("h2",{id:"prerequisite"},"Prerequisite"),Object(l.b)("ul",null,Object(l.b)("li",{parentName:"ul"},"Install Helm v3: ",Object(l.b)("a",{parentName:"li",href:"https://helm.sh/docs/intro/install/"},"https://helm.sh/docs/intro/install/")," "),Object(l.b)("li",{parentName:"ul"},"A Kubernetes environment (ex: minikube or kind)")),Object(l.b)("h2",{id:"deploy-submarine-to-kubernetes"},"Deploy Submarine to Kubernetes"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-bash"},"git clone https://github.com/apache/submarine.git\ncd submarine\nhelm install submarine ./helm-charts/submarine\n")),Object(l.b)("ul",null,Object(l.b)("li",{parentName:"ul"},'With these commands, the Submarine service will be deployed to the "default" namespace.'),Object(l.b)("li",{parentName:"ul"},"The first time installation will take about 10 mins because the docker images are pulled from ",Object(l.b)("a",{parentName:"li",href:"https://hub.docker.com/r/apache/submarine"},"apache/submarine")," on DockerHub.")),Object(l.b)("h2",{id:"verify-installation"},"Verify installation"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-bash"},"kubectl get all\n")),Object(l.b)("ul",null,Object(l.b)("li",{parentName:"ul"},"TODO: screenshot")),Object(l.b)("h2",{id:"uninstall-submarine"},"Uninstall Submarine"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-bash"},"helm uninstall submarine\n\n# Check\nhelm ls \n")),Object(l.b)("h1",{id:"helm-chart-configuation-valuesyaml"},"Helm chart configuation (values.yaml)"),Object(l.b)("h2",{id:"volume-type"},"Volume Type"),Object(l.b)("p",null,"Submarine can support various ",Object(l.b)("a",{parentName:"p",href:"https://kubernetes.io/docs/concepts/storage/volumes/#nfs"},"volume types"),", currently including hostPath (default) and NFS. It can be easily configured in the ",Object(l.b)("inlineCode",{parentName:"p"},"./helm-charts/submarine/values.yaml"),", or you can override the default values in ",Object(l.b)("inlineCode",{parentName:"p"},"values.yaml")," by ",Object(l.b)("a",{parentName:"p",href:"https://helm.sh/docs/helm/helm_install/"},"helm CLI"),"."),Object(l.b)("h4",{id:"hostpath"},"hostPath"),Object(l.b)("ul",null,Object(l.b)("li",{parentName:"ul"},"In hostPath, you can store data directly in your node."),Object(l.b)("li",{parentName:"ul"},"Usage:",Object(l.b)("ol",{parentName:"li"},Object(l.b)("li",{parentName:"ol"},"Configure setting in ",Object(l.b)("inlineCode",{parentName:"li"},"./helm-charts/submarine/values.yaml"),"."),Object(l.b)("li",{parentName:"ol"},"To enable hostPath storage, set ",Object(l.b)("inlineCode",{parentName:"li"},".storage.type")," to ",Object(l.b)("inlineCode",{parentName:"li"},"host"),"."),Object(l.b)("li",{parentName:"ol"},"To set the root path for your storage, set ",Object(l.b)("inlineCode",{parentName:"li"},".storage.host.root")," to ",Object(l.b)("inlineCode",{parentName:"li"},"<any-path>")))),Object(l.b)("li",{parentName:"ul"},"Example:",Object(l.b)("pre",{parentName:"li"},Object(l.b)("code",{parentName:"pre",className:"language-yaml"},"# ./helm-charts/submarine/values.yaml\nstorage:\n  type: host\n  host:\n    root: /tmp\n")))),Object(l.b)("h4",{id:"nfs-network-file-system"},"NFS (Network File System)"),Object(l.b)("ul",null,Object(l.b)("li",{parentName:"ul"},"In NFS, it allows multiple clients to access a shared space."),Object(l.b)("li",{parentName:"ul"},"Prerequisite:",Object(l.b)("ol",{parentName:"li"},Object(l.b)("li",{parentName:"ol"},"A pre-existing NFS server. You have two options.",Object(l.b)("ol",{parentName:"li"},Object(l.b)("li",{parentName:"ol"},"Create NFS server",Object(l.b)("pre",{parentName:"li"},Object(l.b)("code",{parentName:"pre",className:"language-bash"},"kubectl create -f ./dev-support/nfs-server/nfs-server.yaml\n")),"It will create a nfs-server pod in kubernetes cluster, and expose nfs-server ip at ",Object(l.b)("inlineCode",{parentName:"li"},"10.96.0.2")),Object(l.b)("li",{parentName:"ol"},"Use your own NFS server"))),Object(l.b)("li",{parentName:"ol"},"Install NFS dependencies in your nodes",Object(l.b)("ul",{parentName:"li"},Object(l.b)("li",{parentName:"ul"},"Ubuntu",Object(l.b)("pre",{parentName:"li"},Object(l.b)("code",{parentName:"pre",className:"language-bash"},"apt-get install -y nfs-common\n"))),Object(l.b)("li",{parentName:"ul"},"CentOS",Object(l.b)("pre",{parentName:"li"},Object(l.b)("code",{parentName:"pre",className:"language-bash"},"yum install nfs-util\n"))))))),Object(l.b)("li",{parentName:"ul"},"Usage:",Object(l.b)("ol",{parentName:"li"},Object(l.b)("li",{parentName:"ol"},"Configure setting in ",Object(l.b)("inlineCode",{parentName:"li"},"./helm-charts/submarine/values.yaml"),"."),Object(l.b)("li",{parentName:"ol"},"To enable NFS storage, set ",Object(l.b)("inlineCode",{parentName:"li"},".storage.type")," to ",Object(l.b)("inlineCode",{parentName:"li"},"nfs"),"."),Object(l.b)("li",{parentName:"ol"},"To set the ip for NFS server, set ",Object(l.b)("inlineCode",{parentName:"li"},".storage.nfs.ip")," to ",Object(l.b)("inlineCode",{parentName:"li"},"<any-ip>")))),Object(l.b)("li",{parentName:"ul"},"Example:",Object(l.b)("pre",{parentName:"li"},Object(l.b)("code",{parentName:"pre",className:"language-yaml"},"# ./helm-charts/submarine/values.yaml\nstorage:\n  type: nfs\n  nfs:\n    ip: 10.96.0.2\n")))),Object(l.b)("h3",{id:"access-to-submarine-server"},"Access to Submarine Server"),Object(l.b)("p",null,"Submarine server by default expose 8080 port within K8s cluster. After Submarine v0.5\nuses Traefik as reverse-proxy by default. If you don't want to\nuse Traefik, you can modify below value to ",Object(l.b)("strong",{parentName:"p"},Object(l.b)("em",{parentName:"strong"},"false"))," in ",Object(l.b)("inlineCode",{parentName:"p"},"./helm-charts/submarine/values.yaml"),"."),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-yaml"},"# Use Traefik by default\ntraefik:\n  enabled: true\n")),Object(l.b)("p",null,"To access the server from outside of the cluster, we use Traefik ingress controller and\nNodePort for external access.\\\nPlease refer to ",Object(l.b)("inlineCode",{parentName:"p"},"./helm-charts/submarine/charts/traefik/values.yaml")," and ",Object(l.b)("a",{parentName:"p",href:"https://docs.traefik.io/"},"Traefik docs"),"\nfor more details if you want to customize the default value for Traefik."),Object(l.b)("p",null,Object(l.b)("em",{parentName:"p"},"Notice:"),"\nIf you use ",Object(l.b)("inlineCode",{parentName:"p"},"kind")," to run local Kubernetes cluster,\nplease refer to this ",Object(l.b)("a",{parentName:"p",href:"https://kind.sigs.k8s.io/docs/user/configuration/#extra-port-mappings"},"docs"),'\nand set the configuration "extraPortMappings" when creating the k8s cluster.'),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"kind: Cluster\napiVersion: kind.x-k8s.io/v1alpha4\nnodes:\n- role: control-plane\n  extraPortMappings:\n  - containerPort: 32080\n    hostPort: [the port you want to access]\n")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"# Use nodePort and Traefik ingress controller by default.\n# To access the submarine server, open the following URL in your browser.\nhttp://127.0.0.1:32080\n")),Object(l.b)("p",null,"If minikube is installed, use the following command to find the URL to the Submarine server."),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"$ minikube service submarine-traefik --url\n")))}c.isMDXComponent=!0}}]);
\ No newline at end of file
diff --git a/0c952090.4acecd69.js b/0c952090.a7ad2758.js
similarity index 97%
rename from 0c952090.4acecd69.js
rename to 0c952090.a7ad2758.js
index afe08c9..3244a24 100644
--- a/0c952090.4acecd69.js
+++ b/0c952090.a7ad2758.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[6],{209:function(e,n,t){"use strict";t.d(n,"a",(function(){return u})),t.d(n,"b",(function(){return d}));var r=t(0),a=t.n(r);function o(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(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 l(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?i(Object(t),!0).forEach((function(n){o(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):i(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function c(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var p=a.a.createContext({}),s=function(e){var n=a.a.useContext(p),t=n;return e&&(t="function"==typeof e?e(n):l(l({},n),e)),t},u=function(e){var n=s(e.components);return a.a.createElement(p.Provider,{value:n},e.children)},b={inlineCode:"code",wrapper:function(e){var n=e.children;return a.a.createElement(a.a.Fragment,{},n)}},m=a.a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,o=e.originalType,i=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),u=s(t),m=r,d=u["".concat(i,".").concat(m)]||u[m]||b[m]||o;return t?a.a.createElement(d,l(l({ref:n},p),{},{components:t})):a.a.createElement(d,l({ref:n},p))}));function d(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var o=t.length,i=new Array(o);i[0]=m;var l={};for(var c in n)hasOwnProperty.call(n,c)&&(l[c]=n[c]);l.originalType=e,l.mdxType="string"==typeof e?e:r,i[1]=l;for(var p=2;p<o;p++)i[p]=t[p];return a.a.createElement.apply(null,i)}return a.a.createElement.apply(null,t)}m.displayName="MDXCreateElement"},71:function(e,n,t){"use strict";t.r(n),t.d(n,"frontMatter",(function(){return i})),t.d(n,"metadata",(function(){return l})),t.d(n,"toc",(function(){return c})),t.d(n,"default",(function(){return s}));var r=t(3),a=t(7),o=(t(0),t(209)),i={title:"Submarine Python SDK"},l={unversionedId:"gettingStarted/python-sdk",id:"gettingStarted/python-sdk",isDocsHomePage:!1,title:"Submarine Python SDK",description:"\x3c!--",source:"@site/docs/gettingStarted/python-sdk.md",slug:"/gettingStarted/python-sdk",permalink:"/docs/next/gettingStarted/python-sdk",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/gettingStarted/python-sdk.md",version:"current"},c=[{value:"Prepare Python Environment to run Submarine SDK",id:"prepare-python-environment-to-run-submarine-sdk",children:[]},{value:"Install Submarine SDK",id:"install-submarine-sdk",children:[{value:"Install SDK from pypi.org (recommended)",id:"install-sdk-from-pypiorg-recommended",children:[]},{value:"Install SDK from source code",id:"install-sdk-from-source-code",children:[]}]},{value:"Manage Submarine Experiment",id:"manage-submarine-experiment",children:[]},{value:"Training a DeepFM model",id:"training-a-deepfm-model",children:[]}],p={toc:c};function s(e){var n=e.components,t=Object(a.a)(e,["components"]);return Object(o.b)("wrapper",Object(r.a)({},p,t,{components:n,mdxType:"MDXLayout"}),Object(o.b)("p",null,"Submarine Python SDK can runs on any machine and it will talk to Submarine Server via REST API. So you can install Submarine Python SDK on your laptop, a gateway machine, your favorite IDE (like PyCharm/Jupyter, etc.)."),Object(o.b)("p",null,"Furthermore, Submarine supports an extensible package of CTR models based on ",Object(o.b)("strong",{parentName:"p"},"TensorFlow")," and ",Object(o.b)("strong",{parentName:"p"},"PyTorch")," along with lots of core components layers that can be used to easily build custom models. You can train any model with ",Object(o.b)("inlineCode",{parentName:"p"},"model.train()")," and ",Object(o.b)("inlineCode",{parentName:"p"},"model.predict()"),"."),Object(o.b)("h2",{id:"prepare-python-environment-to-run-submarine-sdk"},"Prepare Python Environment to run Submarine SDK"),Object(o.b)("p",null,"Submarine SDK requires Python3.7+.\nIt's better to use a new Python environment created by ",Object(o.b)("inlineCode",{parentName:"p"},"Anoconda")," or Python ",Object(o.b)("inlineCode",{parentName:"p"},"virtualenv")," to try this to avoid trouble to existing Python environment.\nA sample Python virtual env can be setup like this:"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-bash"},"wget https://files.pythonhosted.org/packages/33/bc/fa0b5347139cd9564f0d44ebd2b147ac97c36b2403943dbee8a25fd74012/virtualenv-16.0.0.tar.gz\ntar xf virtualenv-16.0.0.tar.gz\n\n# Make sure to install using Python 3\npython3 virtualenv-16.0.0/virtualenv.py venv\n. venv/bin/activate\n")),Object(o.b)("h2",{id:"install-submarine-sdk"},"Install Submarine SDK"),Object(o.b)("h3",{id:"install-sdk-from-pypiorg-recommended"},"Install SDK from pypi.org (recommended)"),Object(o.b)("p",null,"Starting from ",Object(o.b)("inlineCode",{parentName:"p"},"0.4.0"),", Submarine provides Python SDK. Please change it to a proper version needed. "),Object(o.b)("p",null,"More detail: ",Object(o.b)("a",{parentName:"p",href:"https://pypi.org/project/apache-submarine/"},"https://pypi.org/project/apache-submarine/")),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-bash"},"# Install latest stable version\npip install apache-submarine\n# Install specific version\npip install apache-submarine==<REPLACE_VERSION>\n")),Object(o.b)("h3",{id:"install-sdk-from-source-code"},"Install SDK from source code"),Object(o.b)("p",null,"Please first clone code from github or go to ",Object(o.b)("inlineCode",{parentName:"p"},"http://submarine.apache.org/download.html")," to download released source code."),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-bash"},"git clone https://github.com/apache/submarine.git\n# (optional) chackout specific branch or release\ngit checkout <correct release tag/branch>\ncd submarine/submarine-sdk/pysubmarine\npip install .\n")),Object(o.b)("h2",{id:"manage-submarine-experiment"},"Manage Submarine Experiment"),Object(o.b)("p",null,"Assuming you've installed submarine on K8s and forward the traefik service to localhost, now you can open a Python shell, Jupyter notebook or any tools with Submarine SDK installed."),Object(o.b)("p",null,"Follow ",Object(o.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/blob/master/submarine-sdk/pysubmarine/example/submarine_experiment_sdk.ipynb"},"SDK experiment example")," to run an experiment."),Object(o.b)("h2",{id:"training-a-deepfm-model"},"Training a DeepFM model"),Object(o.b)("p",null,"The Submarine also supports users to train an easy-to-use CTR model with a few lines of code and a configuration file, so they don\u2019t need to reimplement the model by themself. In addition, they can train the model on both local on distributed systems, such as Hadoop or Kubernetes."),Object(o.b)("p",null,"Follow ",Object(o.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/blob/master/submarine-sdk/pysubmarine/example/deepfm_example.ipynb"},"SDK DeepFM example")," to try the model."))}s.isMDXComponent=!0}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[6],{194:function(e,n,t){"use strict";t.d(n,"a",(function(){return u})),t.d(n,"b",(function(){return d}));var r=t(0),a=t.n(r);function o(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(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 l(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?i(Object(t),!0).forEach((function(n){o(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):i(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function c(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var p=a.a.createContext({}),s=function(e){var n=a.a.useContext(p),t=n;return e&&(t="function"==typeof e?e(n):l(l({},n),e)),t},u=function(e){var n=s(e.components);return a.a.createElement(p.Provider,{value:n},e.children)},b={inlineCode:"code",wrapper:function(e){var n=e.children;return a.a.createElement(a.a.Fragment,{},n)}},m=a.a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,o=e.originalType,i=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),u=s(t),m=r,d=u["".concat(i,".").concat(m)]||u[m]||b[m]||o;return t?a.a.createElement(d,l(l({ref:n},p),{},{components:t})):a.a.createElement(d,l({ref:n},p))}));function d(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var o=t.length,i=new Array(o);i[0]=m;var l={};for(var c in n)hasOwnProperty.call(n,c)&&(l[c]=n[c]);l.originalType=e,l.mdxType="string"==typeof e?e:r,i[1]=l;for(var p=2;p<o;p++)i[p]=t[p];return a.a.createElement.apply(null,i)}return a.a.createElement.apply(null,t)}m.displayName="MDXCreateElement"},71:function(e,n,t){"use strict";t.r(n),t.d(n,"frontMatter",(function(){return i})),t.d(n,"metadata",(function(){return l})),t.d(n,"toc",(function(){return c})),t.d(n,"default",(function(){return s}));var r=t(3),a=t(7),o=(t(0),t(194)),i={title:"Submarine Python SDK"},l={unversionedId:"gettingStarted/python-sdk",id:"gettingStarted/python-sdk",isDocsHomePage:!1,title:"Submarine Python SDK",description:"\x3c!--",source:"@site/docs/gettingStarted/python-sdk.md",slug:"/gettingStarted/python-sdk",permalink:"/docs/next/gettingStarted/python-sdk",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/gettingStarted/python-sdk.md",version:"current"},c=[{value:"Prepare Python Environment to run Submarine SDK",id:"prepare-python-environment-to-run-submarine-sdk",children:[]},{value:"Install Submarine SDK",id:"install-submarine-sdk",children:[{value:"Install SDK from pypi.org (recommended)",id:"install-sdk-from-pypiorg-recommended",children:[]},{value:"Install SDK from source code",id:"install-sdk-from-source-code",children:[]}]},{value:"Manage Submarine Experiment",id:"manage-submarine-experiment",children:[]},{value:"Training a DeepFM model",id:"training-a-deepfm-model",children:[]}],p={toc:c};function s(e){var n=e.components,t=Object(a.a)(e,["components"]);return Object(o.b)("wrapper",Object(r.a)({},p,t,{components:n,mdxType:"MDXLayout"}),Object(o.b)("p",null,"Submarine Python SDK can runs on any machine and it will talk to Submarine Server via REST API. So you can install Submarine Python SDK on your laptop, a gateway machine, your favorite IDE (like PyCharm/Jupyter, etc.)."),Object(o.b)("p",null,"Furthermore, Submarine supports an extensible package of CTR models based on ",Object(o.b)("strong",{parentName:"p"},"TensorFlow")," and ",Object(o.b)("strong",{parentName:"p"},"PyTorch")," along with lots of core components layers that can be used to easily build custom models. You can train any model with ",Object(o.b)("inlineCode",{parentName:"p"},"model.train()")," and ",Object(o.b)("inlineCode",{parentName:"p"},"model.predict()"),"."),Object(o.b)("h2",{id:"prepare-python-environment-to-run-submarine-sdk"},"Prepare Python Environment to run Submarine SDK"),Object(o.b)("p",null,"Submarine SDK requires Python3.7+.\nIt's better to use a new Python environment created by ",Object(o.b)("inlineCode",{parentName:"p"},"Anoconda")," or Python ",Object(o.b)("inlineCode",{parentName:"p"},"virtualenv")," to try this to avoid trouble to existing Python environment.\nA sample Python virtual env can be setup like this:"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-bash"},"wget https://files.pythonhosted.org/packages/33/bc/fa0b5347139cd9564f0d44ebd2b147ac97c36b2403943dbee8a25fd74012/virtualenv-16.0.0.tar.gz\ntar xf virtualenv-16.0.0.tar.gz\n\n# Make sure to install using Python 3\npython3 virtualenv-16.0.0/virtualenv.py venv\n. venv/bin/activate\n")),Object(o.b)("h2",{id:"install-submarine-sdk"},"Install Submarine SDK"),Object(o.b)("h3",{id:"install-sdk-from-pypiorg-recommended"},"Install SDK from pypi.org (recommended)"),Object(o.b)("p",null,"Starting from ",Object(o.b)("inlineCode",{parentName:"p"},"0.4.0"),", Submarine provides Python SDK. Please change it to a proper version needed. "),Object(o.b)("p",null,"More detail: ",Object(o.b)("a",{parentName:"p",href:"https://pypi.org/project/apache-submarine/"},"https://pypi.org/project/apache-submarine/")),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-bash"},"# Install latest stable version\npip install apache-submarine\n# Install specific version\npip install apache-submarine==<REPLACE_VERSION>\n")),Object(o.b)("h3",{id:"install-sdk-from-source-code"},"Install SDK from source code"),Object(o.b)("p",null,"Please first clone code from github or go to ",Object(o.b)("inlineCode",{parentName:"p"},"http://submarine.apache.org/download.html")," to download released source code."),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-bash"},"git clone https://github.com/apache/submarine.git\n# (optional) chackout specific branch or release\ngit checkout <correct release tag/branch>\ncd submarine/submarine-sdk/pysubmarine\npip install .\n")),Object(o.b)("h2",{id:"manage-submarine-experiment"},"Manage Submarine Experiment"),Object(o.b)("p",null,"Assuming you've installed submarine on K8s and forward the traefik service to localhost, now you can open a Python shell, Jupyter notebook or any tools with Submarine SDK installed."),Object(o.b)("p",null,"Follow ",Object(o.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/blob/master/submarine-sdk/pysubmarine/example/submarine_experiment_sdk.ipynb"},"SDK experiment example")," to run an experiment."),Object(o.b)("h2",{id:"training-a-deepfm-model"},"Training a DeepFM model"),Object(o.b)("p",null,"The Submarine also supports users to train an easy-to-use CTR model with a few lines of code and a configuration file, so they don\u2019t need to reimplement the model by themself. In addition, they can train the model on both local on distributed systems, such as Hadoop or Kubernetes."),Object(o.b)("p",null,"Follow ",Object(o.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/blob/master/submarine-sdk/pysubmarine/example/deepfm_example.ipynb"},"SDK DeepFM example")," to try the model."))}s.isMDXComponent=!0}}]);
\ No newline at end of file
diff --git a/0e4b5d7a.7f9d833f.js b/0e4b5d7a.10e71edd.js
similarity index 99%
rename from 0e4b5d7a.7f9d833f.js
rename to 0e4b5d7a.10e71edd.js
index 7216ef5..f3dc575 100644
--- a/0e4b5d7a.7f9d833f.js
+++ b/0e4b5d7a.10e71edd.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[7],{209:function(e,n,t){"use strict";t.d(n,"a",(function(){return s})),t.d(n,"b",(function(){return d}));var a=t(0),r=t.n(a);function l(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function m(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?i(Object(t),!0).forEach((function(n){l(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):i(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,a,r=function(e,n){if(null==e)return{};var t,a,r={},l=Object.keys(e);for(a=0;a<l.length;a++)t=l[a],n.indexOf(t)>=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a<l.length;a++)t=l[a],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var c=r.a.createContext({}),b=function(e){var n=r.a.useContext(c),t=n;return e&&(t="function"==typeof e?e(n):m(m({},n),e)),t},s=function(e){var n=b(e.components);return r.a.createElement(c.Provider,{value:n},e.children)},u={inlineCode:"code",wrapper:function(e){var n=e.children;return r.a.createElement(r.a.Fragment,{},n)}},o=r.a.forwardRef((function(e,n){var t=e.components,a=e.mdxType,l=e.originalType,i=e.parentName,c=p(e,["components","mdxType","originalType","parentName"]),s=b(t),o=a,d=s["".concat(i,".").concat(o)]||s[o]||u[o]||l;return t?r.a.createElement(d,m(m({ref:n},c),{},{components:t})):r.a.createElement(d,m({ref:n},c))}));function d(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var l=t.length,i=new Array(l);i[0]=o;var m={};for(var p in n)hasOwnProperty.call(n,p)&&(m[p]=n[p]);m.originalType=e,m.mdxType="string"==typeof e?e:a,i[1]=m;for(var c=2;c<l;c++)i[c]=t[c];return r.a.createElement.apply(null,i)}return r.a.createElement.apply(null,t)}o.displayName="MDXCreateElement"},72:function(e,n,t){"use strict";t.r(n),t.d(n,"frontMatter",(function(){return i})),t.d(n,"metadata",(function(){return m})),t.d(n,"toc",(function(){return p})),t.d(n,"default",(function(){return b}));var a=t(3),r=t(7),l=(t(0),t(209)),i={title:"Experiment Template REST API"},m={unversionedId:"userDocs/api/experiment-template",id:"version-0.6.0/userDocs/api/experiment-template",isDocsHomePage:!1,title:"Experiment Template REST API",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/userDocs/api/experiment-template.md",slug:"/userDocs/api/experiment-template",permalink:"/docs/userDocs/api/experiment-template",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/api/experiment-template.md",version:"0.6.0",sidebar:"docs",previous:{title:"Environment REST API",permalink:"/docs/userDocs/api/environment"},next:{title:"Notebook REST API",permalink:"/docs/userDocs/api/notebook"}},p=[{value:"Create Experiment Template",id:"create-experiment-template",children:[{value:"Parameters",id:"parameters",children:[]},{value:"Code Example",id:"code-example",children:[]}]},{value:"List Experiment Template",id:"list-experiment-template",children:[{value:"Code Example",id:"code-example-1",children:[]}]},{value:"Patch Experiment Template",id:"patch-experiment-template",children:[{value:"Parameters",id:"parameters-1",children:[]},{value:"Code Example",id:"code-example-2",children:[]}]},{value:"Delete Experiment Template",id:"delete-experiment-template",children:[{value:"Parameters",id:"parameters-2",children:[]},{value:"Code Example",id:"code-example-3",children:[]}]},{value:"Use Template to Create a Experiment",id:"use-template-to-create-a-experiment",children:[{value:"Parameters",id:"parameters-3",children:[]},{value:"Code Example",id:"code-example-4",children:[]}]}],c={toc:p};function b(e){var n=e.components,t=Object(r.a)(e,["components"]);return Object(l.b)("wrapper",Object(a.a)({},c,t,{components:n,mdxType:"MDXLayout"}),Object(l.b)("h2",{id:"create-experiment-template"},"Create Experiment Template"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"POST /api/v1/template\n")),Object(l.b)("h3",{id:"parameters"},"Parameters"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"In"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment template name. This is required.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"author"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Author name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"description"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Description of the experiment template.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"parameters"),Object(l.b)("td",{parentName:"tr",align:null},"List<ExperimentTemplateParamSpec",">"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Parameters of the experiment template.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"experimentSpec"),Object(l.b)("td",{parentName:"tr",align:null},"ExperimentSpec"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Spec of the experiment template.")))),Object(l.b)("h4",{id:"experimenttemplateparamspec"},Object(l.b)("strong",{parentName:"h4"},"ExperimentTemplateParamSpec")),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Parameter name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"required"),Object(l.b)("td",{parentName:"tr",align:null},"Boolean"),Object(l.b)("td",{parentName:"tr",align:null},"true / false. Whether the parameter is required.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"description"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Description of the parameter.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"value"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Value of the parameter.")))),Object(l.b)("h4",{id:"experimentspec"},Object(l.b)("strong",{parentName:"h4"},"ExperimentSpec")),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"meta"),Object(l.b)("td",{parentName:"tr",align:null},"ExperimentMeta"),Object(l.b)("td",{parentName:"tr",align:null},"Meta data of the experiment template.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"environment"),Object(l.b)("td",{parentName:"tr",align:null},"EnvironmentSpec"),Object(l.b)("td",{parentName:"tr",align:null},"Environment of the experiment template.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"spec"),Object(l.b)("td",{parentName:"tr",align:null},"Map<String, ExperimentTaskSpec",">"),Object(l.b)("td",{parentName:"tr",align:null},"Spec of pods.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"code"),Object(l.b)("td",{parentName:"tr",align:null},"CodeSpec"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment codespec.")))),Object(l.b)("h4",{id:"experimentmeta"},Object(l.b)("strong",{parentName:"h4"},"ExperimentMeta")),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment Name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"namespace"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment namespace.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"framework"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment framework.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"cmd"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Command.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"envVars"),Object(l.b)("td",{parentName:"tr",align:null},"Map<String, String",">"),Object(l.b)("td",{parentName:"tr",align:null},"Environmental variables.")))),Object(l.b)("h4",{id:"environmentspec"},Object(l.b)("strong",{parentName:"h4"},"EnvironmentSpec")),Object(l.b)("p",null,"See more details in ",Object(l.b)("a",{parentName:"p",href:"https://submarine.apache.org/docs/userDocs/api/environment"},"environment api"),"."),Object(l.b)("h4",{id:"experimenttaskspec"},Object(l.b)("strong",{parentName:"h4"},"ExperimentTaskSpec")),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"replicas"),Object(l.b)("td",{parentName:"tr",align:null},"Integer"),Object(l.b)("td",{parentName:"tr",align:null},"Numbers of replicas.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"resoureces"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Resouces of the task")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Task name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"image"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Image name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"cmd"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Command.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"envVars"),Object(l.b)("td",{parentName:"tr",align:null},"Map<String, String",">"),Object(l.b)("td",{parentName:"tr",align:null},"Environmental variables.")))),Object(l.b)("h4",{id:"codespec"},Object(l.b)("strong",{parentName:"h4"},"CodeSpec")),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"syncMode"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"sync mode of code spec.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"url"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"url of code spec.")))),Object(l.b)("h3",{id:"code-example"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},'curl -X POST -H "Content-Type: application/json" -d \'\n{\n  "name": "my-tf-mnist-template",\n  "author": "author",\n  "description": "This is a template to run tf-mnist",\n  "parameters": [{\n      "name": "learning_rate",\n      "value": 0.1,\n      "required": true,\n      "description": "This is learning_rate of training."\n    },\n    {\n      "name": "batch_size",\n      "value": 150,\n      "required": true,\n      "description": "This is batch_size of training."\n    },\n    {\n      "name": "experiment_name",\n      "value": "tf-mnist1",\n      "required": true,\n      "description": "the name of experiment."\n    }\n  ],\n  "experimentSpec": {\n    "meta": {\n      "cmd": "python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate={{learning_rate}} --batch_size={{batch_size}}",\n      "name": "{{experiment_name}}",\n      "envVars": {\n        "ENV1": "ENV1"\n      },\n      "framework": "TensorFlow",\n      "namespace": "default"\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=1024M"\n      }\n    },\n    "environment": {\n      "image": "apache/submarine:tf-mnist-with-summaries-1.0"\n    }\n  }\n}\n\' http://127.0.0.1:32080/api/v1/template\n')),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    "experimentTemplateId":{\n      "id":1,\n      "serverTimestamp":1626160071451\n    },\n    "experimentTemplateSpec":{\n      "name":"my-tf-mnist-template",\n      "author":"author",\n      "description":"This is a template to run tf-mnist",\n      "parameters":\n      [{\n          "name":"learning_rate",\n          "required":"true",\n          "description":"This is learning_rate of training.",\n          "value":"0.1"\n        },\n        {\n          "name":"batch_size",\n          "required":"true",\n          "description":"This is batch_size of training.",\n          "value":"150"\n        },\n        {\n          "name":"experiment_name",\n          "required":"true",\n          "description":"the name of experiment.",\n          "value":"tf-mnist1"\n        },\n        {\n          "name":"spec.Ps.replicas",\n          "required":"false",\n          "description":"",\n          "value":"1"\n        },\n        {\n          "name":"spec.Ps.resourceMap.cpu",\n          "required":"false",\n          "description":"",\n          "value":"1"\n        },\n        {\n          "name":"spec.Ps.resourceMap.memory",\n          "required":"false",\n          "description":"",\n          "value":"1024M"\n        },\n        {\n          "name":"spec.Worker.replicas",\n          "required":"false",\n          "description":"",\n          "value":"1"\n        },\n        {\n          "name":"spec.Worker.resourceMap.cpu",\n          "required":"false",\n          "description":"",\n          "value":"1"\n        },\n        {\n          "name":"spec.Worker.resourceMap.memory",\n          "required":"false",\n          "description":"","\n          value":"1024M"\n        }],\n      "experimentSpec":{\n        "meta":{\n          "name":"{{experiment_name}}",\n          "namespace":"default",\n          "framework":"TensorFlow",\n          "cmd":"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d{{learning_rate}} --batch_size\\u003d{{batch_size}}",\n          "envVars":{"ENV1":"ENV1"}\n        },\n        "environment":{\n          "name":null,\n          "dockerImage":null,\n          "kernelSpec":null,\n          "description":null,\n          "image":"apache/submarine:tf-mnist-with-summaries-1.0"\n        },\n        "spec":{\n          "Ps":{\n            "replicas":1,\n            "resources":"cpu\\u003d1,memory\\u003d1024M",\n            "name":null,\n            "image":null,\n            "cmd":null,\n            "envVars":null,\n            "resourceMap":{\n              "memory":"1024M",\n              "cpu":"1"\n            }\n          },\n          "Worker":{\n            "replicas":1,\n            "resources":"cpu\\u003d1,memory\\u003d1024M",\n            "name":null,\n            "image":null,\n            "cmd":null,\n            "envVars":null,\n            "resourceMap":{\n              "memory":"1024M",\n              "cpu":"1"\n            }\n          }\n        },\n        "code":null\n      }\n    }\n  },\n  "attributes":{}\n}\n')),Object(l.b)("h2",{id:"list-experiment-template"},"List Experiment Template"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"GET /api/v1/template\n")),Object(l.b)("h3",{id:"code-example-1"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/template\n")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    [{\n      "experimentTemplateId":{\n        "id":1,\n        "serverTimestamp":1626160071451\n      },\n      "experimentTemplateSpec":{\n        "name":"my-tf-mnist-template",\n        "author":"author",\n        "description":"This is a template to run tf-mnist",\n        "parameters":\n        [{\n            "name":"learning_rate",\n            "required":"true",\n            "description":"This is learning_rate of training.",\n            "value":"0.1"\n          },\n          {\n            "name":"batch_size",\n            "required":"true",\n            "description":"This is batch_size of training.",\n            "value":"150"\n          },\n          {\n            "name":"experiment_name",\n            "required":"true",\n            "description":"the name of experiment.",\n            "value":"tf-mnist1"\n          },\n          {\n            "name":"spec.Ps.replicas",\n            "required":"false",\n            "description":"",\n            "value":"1"\n          },\n          {\n            "name":"spec.Ps.resourceMap.cpu",\n            "required":"false",\n            "description":"",\n            "value":"1"\n          },\n          {\n            "name":"spec.Ps.resourceMap.memory",\n            "required":"false",\n            "description":"",\n            "value":"1024M"\n          },\n          {\n            "name":"spec.Worker.replicas",\n            "required":"false",\n            "description":"",\n            "value":"1"\n          },\n          {\n            "name":"spec.Worker.resourceMap.cpu",\n            "required":"false",\n            "description":"",\n            "value":"1"\n          },\n          {\n            "name":"spec.Worker.resourceMap.memory",\n            "required":"false",\n            "description":"","\n            value":"1024M"\n          }],\n        "experimentSpec":{\n          "meta":{\n            "name":"{{experiment_name}}",\n            "namespace":"default",\n            "framework":"TensorFlow",\n            "cmd":"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d{{learning_rate}} --batch_size\\u003d{{batch_size}}",\n            "envVars":{"ENV1":"ENV1"}\n          },\n          "environment":{\n            "name":null,\n            "dockerImage":null,\n            "kernelSpec":null,\n            "description":null,\n            "image":"apache/submarine:tf-mnist-with-summaries-1.0"\n          },\n          "spec":{\n            "Ps":{\n              "replicas":1,\n              "resources":"cpu\\u003d1,memory\\u003d1024M",\n              "name":null,\n              "image":null,\n              "cmd":null,\n              "envVars":null,\n              "resourceMap":{\n                "memory":"1024M",\n                "cpu":"1"\n              }\n            },\n            "Worker":{\n              "replicas":1,\n              "resources":"cpu\\u003d1,memory\\u003d1024M",\n              "name":null,\n              "image":null,\n              "cmd":null,\n              "envVars":null,\n              "resourceMap":{\n                "memory":"1024M",\n                "cpu":"1"\n              }\n            }\n          },\n          "code":null\n        }\n      }\n    }],\n  "attributes":{}\n}\n')),Object(l.b)("h2",{id:"patch-experiment-template"},"Patch Experiment Template"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"PATCH /api/v1/template{name}\n")),Object(l.b)("h3",{id:"parameters-1"},"Parameters"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"In"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"path and body"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment template name. This is required.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"author"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Author name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"description"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Description of the experiment template.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"parameters"),Object(l.b)("td",{parentName:"tr",align:null},"List<ExperimentTemplateParamSpec",">"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Parameters of the experiment template.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"experimentSpec"),Object(l.b)("td",{parentName:"tr",align:null},"ExperimentSpec"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Spec of the experiment template.")))),Object(l.b)("h3",{id:"code-example-2"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},'curl -X PATCH -H "Content-Type: application/json" -d \'\n{\n  "name": "my-tf-mnist-template",\n  "author": "author-new",\n  "description": "This is a template to run tf-mnist",\n  "parameters": [{\n      "name": "learning_rate",\n      "value": 0.1,\n      "required": true,\n      "description": "This is learning_rate of training."\n    },\n    {\n      "name": "batch_size",\n      "value": 150,\n      "required": true,\n      "description": "This is batch_size of training."\n    },\n    {\n      "name": "experiment_name",\n      "value": "tf-mnist1",\n      "required": true,\n      "description": "the name of experiment."\n    }\n  ],\n  "experimentSpec": {\n    "meta": {\n      "cmd": "python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate={{learning_rate}} --batch_size={{batch_size}}",\n      "name": "{{experiment_name}}",\n      "envVars": {\n        "ENV1": "ENV1"\n      },\n      "framework": "TensorFlow",\n      "namespace": "default"\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=1024M"\n      }\n    },\n    "environment": {\n      "image": "apache/submarine:tf-mnist-with-summaries-1.0"\n    }\n  }\n}\n\' http://127.0.0.1:32080/api/v1/template/my-tf-mnist-template\n')),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    "experimentTemplateId":{\n      "id":2,\n      "serverTimestamp":1626160071451\n    },\n    "experimentTemplateSpec":{\n      "name":"my-tf-mnist-template",\n      "author":"author-new",\n      "description":"This is a template to run tf-mnist",\n      "parameters":\n      [{\n        "name":"learning_rate",\n        "required":"true",\n        "description":"This is learning_rate of training.",\n        "value":"0.1"\n        },\n        {\n          "name":"batch_size",\n          "required":"true",\n          "description":"This is batch_size of training.",\n          "value":"150"\n        },\n        {\n          "name":"experiment_name",\n          "required":"true",\n          "description":"the name of experiment.",\n          "value":"tf-mnist1"\n        },\n        {\n          "name":"spec.Ps.replicas",\n          "required":"false",\n          "description":"",\n          "value":"1"\n        },\n        {\n          "name":"spec.Ps.resourceMap.cpu",\n          "required":"false",\n          "description":"",\n          "value":"1"\n        },\n        {\n          "name":"spec.Ps.resourceMap.memory",\n          "required":"false",\n          "description":"",\n          "value":"1024M"\n        },\n        {\n          "name":"spec.Worker.replicas",\n          "required":"false",\n          "description":"",\n          "value":"1"\n        },\n        {\n          "name":"spec.Worker.resourceMap.cpu",\n          "required":"false",\n          "description":"",\n          "value":"1"\n        },\n        {\n          "name":"spec.Worker.resourceMap.memory",\n          "required":"false",\n          "description":"",\n          "value":"1024M"\n      }],\n      "experimentSpec":{\n        "meta":{\n          "name":"{{experiment_name}}",\n          "namespace":"default",\n          "framework":"TensorFlow",\n          "cmd":"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d{{learning_rate}} --batch_size\\u003d{{batch_size}}",\n          "envVars":{"ENV1":"ENV1"}\n        },\n        "environment":{\n          "name":null,\n          "dockerImage":null,\n          "kernelSpec":null,\n          "description":null,\n          "image":"apache/submarine:tf-mnist-with-summaries-1.0"\n        },\n        "spec":{\n          "Ps":{\n            "replicas":1,\n            "resources":"cpu\\u003d1,memory\\u003d1024M",\n            "name":null,\n            "image":null,\n            "cmd":null,\n            "envVars":null,\n            "resourceMap":{"memory":"1024M","cpu":"1"}\n          },\n          "Worker":{\n            "replicas":1,\n            "resources":"cpu\\u003d1,memory\\u003d1024M",\n            "name":null,\n            "image":null,\n            "cmd":null,\n            "envVars":null,\n            "resourceMap":{"memory":"1024M","cpu":"1"}\n          }\n        },\n        "code":null\n      }\n    }\n  },\n  "attributes":{}\n}\n')),Object(l.b)("h2",{id:"delete-experiment-template"},"Delete Experiment Template"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"DELETE /api/v1/template{name}\n")),Object(l.b)("h3",{id:"parameters-2"},"Parameters"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"In"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"path"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment template name. This is required.")))),Object(l.b)("h3",{id:"code-example-3"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},"curl -X DELETE http://127.0.0.1:32080/api/v1/template/my-tf-mnist-template\n")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"reponse")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    "experimentTemplateId":{\n      "id":2,\n      "serverTimestamp":1626160071451\n    },\n    "experimentTemplateSpec":{\n      "name":"my-tf-mnist-template",\n      "author":"author-new",\n      "description":"This is a template to run tf-mnist",\n      "parameters":\n      [{\n        "name":"learning_rate",\n        "required":"true",\n        "description":"This is learning_rate of training.",\n        "value":"0.1"\n      },\n      {\n        "name":"batch_size",\n        "required":"true",\n        "description":"This is batch_size of training.",\n        "value":"150"\n      },\n      {\n        "name":"experiment_name",\n        "required":"true",\n        "description":"the name of experiment.",\n        "value":"tf-mnist1"\n      },\n      {\n        "name":"spec.Ps.replicas",\n        "required":"false",\n        "description":"",\n        "value":"1"\n      },\n      {\n        "name":"spec.Ps.resourceMap.cpu",\n        "required":"false",\n        "description":"",\n        "value":"1"\n      },\n      {\n        "name":"spec.Ps.resourceMap.memory",\n        "required":"false",\n        "description":"",\n        "value":"1024M"\n      },\n      {\n        "name":"spec.Worker.replicas",\n        "required":"false",\n        "description":"",\n        "value":"1"\n      },\n      {\n        "name":"spec.Worker.resourceMap.cpu",\n        "required":"false",\n        "description":"",\n        "value":"1"\n      },\n      {\n        "name":"spec.Worker.resourceMap.memory",\n        "required":"false",\n        "description":"",\n        "value":"1024M"\n      }],\n      "experimentSpec":{\n        "meta":{\n          "name":"{{experiment_name}}",\n          "namespace":"default",\n          "framework":"TensorFlow",\n          "cmd":"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d{{learning_rate}} --batch_size\\u003d{{batch_size}}",\n          "envVars":{"ENV1":"ENV1"}\n        },\n        "environment":{\n          "name":null,\n          "dockerImage":null,\n          "kernelSpec":null,\n          "description":null,\n          "image":"apache/submarine:tf-mnist-with-summaries-1.0"\n        },\n        "spec":{\n          "Ps":{\n            "replicas":1,\n            "resources":"cpu\\u003d1,memory\\u003d1024M",\n            "name":null,\n            "image":null,\n            "cmd":null,\n            "envVars":null,\n            "resourceMap":{"memory":"1024M","cpu":"1"}\n          },\n          "Worker":{\n            "replicas":1,\n            "resources":"cpu\\u003d1,memory\\u003d1024M",\n            "name":null,\n            "image":null,\n            "cmd":null,\n            "envVars":null,\n            "resourceMap":{"memory":"1024M","cpu":"1"}\n          }\n        },\n        "code":null\n      }\n    }\n  },\n  "attributes":{}\n}\n')),Object(l.b)("h2",{id:"use-template-to-create-a-experiment"},"Use Template to Create a Experiment"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"POST /api/v1/experiment/{template_name}\n")),Object(l.b)("h3",{id:"parameters-3"},"Parameters"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"In"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"template_name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"path"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment template name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment template name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"params"),Object(l.b)("td",{parentName:"tr",align:null},"Map<String, String>"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Parameters of the experiment including ",Object(l.b)("inlineCode",{parentName:"td"},"experiment_name"),".")))),Object(l.b)("h3",{id:"code-example-4"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},'curl -X POST -H "Content-Type: application/json" -d \'\n{\n    "name": "tf-mnist",\n    "params": {\n        "learning_rate":"0.01",\n        "batch_size":"150",\n        "experiment_name":"newexperiment1"\n    }\n}\n\' http://127.0.0.1:32080/api/v1/experiment/my-tf-mnist-template\n')),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    "experimentId":"experiment_1626160071451_0001",\n    "name":"newexperiment1",\n    "uid":"b895985c-411c-4e89-90e0-c60a2a8a4235",\n    "status":"Accepted",\n    "acceptedTime":"2021-07-13T16:21:31.000+08:00",\n    "createdTime":null,\n    "runningTime":null,\n    "finishedTime":null,\n    "spec":{\n      "meta":{\n        "name":"newexperiment1",\n        "namespace":"default",\n        "framework":"TensorFlow",\n        "cmd":"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150",\n        "envVars":{"ENV1":"ENV1"}\n      },\n      "environment":{\n        "name":null,\n        "dockerImage":null,\n        "kernelSpec":null,\n        "description":null,\n        "image":"apache/submarine:tf-mnist-with-summaries-1.0"\n      },\n      "spec":{\n        "Ps":{\n          "replicas":1,\n          "resources":"cpu\\u003d1,memory\\u003d1024M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"1024M","cpu":"1"}\n        },\n        "Worker":{\n          "replicas":1,\n          "resources":"cpu\\u003d1,memory\\u003d1024M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"1024M","cpu":"1"}\n        }\n      },\n      "code":null\n    }\n  },\n  "attributes":{}\n}\n')))}b.isMDXComponent=!0}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[7],{194:function(e,n,t){"use strict";t.d(n,"a",(function(){return s})),t.d(n,"b",(function(){return d}));var a=t(0),r=t.n(a);function l(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function m(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?i(Object(t),!0).forEach((function(n){l(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):i(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,a,r=function(e,n){if(null==e)return{};var t,a,r={},l=Object.keys(e);for(a=0;a<l.length;a++)t=l[a],n.indexOf(t)>=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a<l.length;a++)t=l[a],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var c=r.a.createContext({}),b=function(e){var n=r.a.useContext(c),t=n;return e&&(t="function"==typeof e?e(n):m(m({},n),e)),t},s=function(e){var n=b(e.components);return r.a.createElement(c.Provider,{value:n},e.children)},u={inlineCode:"code",wrapper:function(e){var n=e.children;return r.a.createElement(r.a.Fragment,{},n)}},o=r.a.forwardRef((function(e,n){var t=e.components,a=e.mdxType,l=e.originalType,i=e.parentName,c=p(e,["components","mdxType","originalType","parentName"]),s=b(t),o=a,d=s["".concat(i,".").concat(o)]||s[o]||u[o]||l;return t?r.a.createElement(d,m(m({ref:n},c),{},{components:t})):r.a.createElement(d,m({ref:n},c))}));function d(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var l=t.length,i=new Array(l);i[0]=o;var m={};for(var p in n)hasOwnProperty.call(n,p)&&(m[p]=n[p]);m.originalType=e,m.mdxType="string"==typeof e?e:a,i[1]=m;for(var c=2;c<l;c++)i[c]=t[c];return r.a.createElement.apply(null,i)}return r.a.createElement.apply(null,t)}o.displayName="MDXCreateElement"},72:function(e,n,t){"use strict";t.r(n),t.d(n,"frontMatter",(function(){return i})),t.d(n,"metadata",(function(){return m})),t.d(n,"toc",(function(){return p})),t.d(n,"default",(function(){return b}));var a=t(3),r=t(7),l=(t(0),t(194)),i={title:"Experiment Template REST API"},m={unversionedId:"userDocs/api/experiment-template",id:"version-0.6.0/userDocs/api/experiment-template",isDocsHomePage:!1,title:"Experiment Template REST API",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/userDocs/api/experiment-template.md",slug:"/userDocs/api/experiment-template",permalink:"/docs/userDocs/api/experiment-template",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/api/experiment-template.md",version:"0.6.0",sidebar:"docs",previous:{title:"Environment REST API",permalink:"/docs/userDocs/api/environment"},next:{title:"Notebook REST API",permalink:"/docs/userDocs/api/notebook"}},p=[{value:"Create Experiment Template",id:"create-experiment-template",children:[{value:"Parameters",id:"parameters",children:[]},{value:"Code Example",id:"code-example",children:[]}]},{value:"List Experiment Template",id:"list-experiment-template",children:[{value:"Code Example",id:"code-example-1",children:[]}]},{value:"Patch Experiment Template",id:"patch-experiment-template",children:[{value:"Parameters",id:"parameters-1",children:[]},{value:"Code Example",id:"code-example-2",children:[]}]},{value:"Delete Experiment Template",id:"delete-experiment-template",children:[{value:"Parameters",id:"parameters-2",children:[]},{value:"Code Example",id:"code-example-3",children:[]}]},{value:"Use Template to Create a Experiment",id:"use-template-to-create-a-experiment",children:[{value:"Parameters",id:"parameters-3",children:[]},{value:"Code Example",id:"code-example-4",children:[]}]}],c={toc:p};function b(e){var n=e.components,t=Object(r.a)(e,["components"]);return Object(l.b)("wrapper",Object(a.a)({},c,t,{components:n,mdxType:"MDXLayout"}),Object(l.b)("h2",{id:"create-experiment-template"},"Create Experiment Template"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"POST /api/v1/template\n")),Object(l.b)("h3",{id:"parameters"},"Parameters"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"In"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment template name. This is required.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"author"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Author name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"description"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Description of the experiment template.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"parameters"),Object(l.b)("td",{parentName:"tr",align:null},"List<ExperimentTemplateParamSpec",">"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Parameters of the experiment template.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"experimentSpec"),Object(l.b)("td",{parentName:"tr",align:null},"ExperimentSpec"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Spec of the experiment template.")))),Object(l.b)("h4",{id:"experimenttemplateparamspec"},Object(l.b)("strong",{parentName:"h4"},"ExperimentTemplateParamSpec")),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Parameter name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"required"),Object(l.b)("td",{parentName:"tr",align:null},"Boolean"),Object(l.b)("td",{parentName:"tr",align:null},"true / false. Whether the parameter is required.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"description"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Description of the parameter.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"value"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Value of the parameter.")))),Object(l.b)("h4",{id:"experimentspec"},Object(l.b)("strong",{parentName:"h4"},"ExperimentSpec")),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"meta"),Object(l.b)("td",{parentName:"tr",align:null},"ExperimentMeta"),Object(l.b)("td",{parentName:"tr",align:null},"Meta data of the experiment template.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"environment"),Object(l.b)("td",{parentName:"tr",align:null},"EnvironmentSpec"),Object(l.b)("td",{parentName:"tr",align:null},"Environment of the experiment template.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"spec"),Object(l.b)("td",{parentName:"tr",align:null},"Map<String, ExperimentTaskSpec",">"),Object(l.b)("td",{parentName:"tr",align:null},"Spec of pods.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"code"),Object(l.b)("td",{parentName:"tr",align:null},"CodeSpec"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment codespec.")))),Object(l.b)("h4",{id:"experimentmeta"},Object(l.b)("strong",{parentName:"h4"},"ExperimentMeta")),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment Name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"namespace"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment namespace.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"framework"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment framework.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"cmd"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Command.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"envVars"),Object(l.b)("td",{parentName:"tr",align:null},"Map<String, String",">"),Object(l.b)("td",{parentName:"tr",align:null},"Environmental variables.")))),Object(l.b)("h4",{id:"environmentspec"},Object(l.b)("strong",{parentName:"h4"},"EnvironmentSpec")),Object(l.b)("p",null,"See more details in ",Object(l.b)("a",{parentName:"p",href:"https://submarine.apache.org/docs/userDocs/api/environment"},"environment api"),"."),Object(l.b)("h4",{id:"experimenttaskspec"},Object(l.b)("strong",{parentName:"h4"},"ExperimentTaskSpec")),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"replicas"),Object(l.b)("td",{parentName:"tr",align:null},"Integer"),Object(l.b)("td",{parentName:"tr",align:null},"Numbers of replicas.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"resoureces"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Resouces of the task")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Task name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"image"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Image name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"cmd"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Command.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"envVars"),Object(l.b)("td",{parentName:"tr",align:null},"Map<String, String",">"),Object(l.b)("td",{parentName:"tr",align:null},"Environmental variables.")))),Object(l.b)("h4",{id:"codespec"},Object(l.b)("strong",{parentName:"h4"},"CodeSpec")),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"syncMode"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"sync mode of code spec.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"url"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"url of code spec.")))),Object(l.b)("h3",{id:"code-example"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},'curl -X POST -H "Content-Type: application/json" -d \'\n{\n  "name": "my-tf-mnist-template",\n  "author": "author",\n  "description": "This is a template to run tf-mnist",\n  "parameters": [{\n      "name": "learning_rate",\n      "value": 0.1,\n      "required": true,\n      "description": "This is learning_rate of training."\n    },\n    {\n      "name": "batch_size",\n      "value": 150,\n      "required": true,\n      "description": "This is batch_size of training."\n    },\n    {\n      "name": "experiment_name",\n      "value": "tf-mnist1",\n      "required": true,\n      "description": "the name of experiment."\n    }\n  ],\n  "experimentSpec": {\n    "meta": {\n      "cmd": "python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate={{learning_rate}} --batch_size={{batch_size}}",\n      "name": "{{experiment_name}}",\n      "envVars": {\n        "ENV1": "ENV1"\n      },\n      "framework": "TensorFlow",\n      "namespace": "default"\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=1024M"\n      }\n    },\n    "environment": {\n      "image": "apache/submarine:tf-mnist-with-summaries-1.0"\n    }\n  }\n}\n\' http://127.0.0.1:32080/api/v1/template\n')),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    "experimentTemplateId":{\n      "id":1,\n      "serverTimestamp":1626160071451\n    },\n    "experimentTemplateSpec":{\n      "name":"my-tf-mnist-template",\n      "author":"author",\n      "description":"This is a template to run tf-mnist",\n      "parameters":\n      [{\n          "name":"learning_rate",\n          "required":"true",\n          "description":"This is learning_rate of training.",\n          "value":"0.1"\n        },\n        {\n          "name":"batch_size",\n          "required":"true",\n          "description":"This is batch_size of training.",\n          "value":"150"\n        },\n        {\n          "name":"experiment_name",\n          "required":"true",\n          "description":"the name of experiment.",\n          "value":"tf-mnist1"\n        },\n        {\n          "name":"spec.Ps.replicas",\n          "required":"false",\n          "description":"",\n          "value":"1"\n        },\n        {\n          "name":"spec.Ps.resourceMap.cpu",\n          "required":"false",\n          "description":"",\n          "value":"1"\n        },\n        {\n          "name":"spec.Ps.resourceMap.memory",\n          "required":"false",\n          "description":"",\n          "value":"1024M"\n        },\n        {\n          "name":"spec.Worker.replicas",\n          "required":"false",\n          "description":"",\n          "value":"1"\n        },\n        {\n          "name":"spec.Worker.resourceMap.cpu",\n          "required":"false",\n          "description":"",\n          "value":"1"\n        },\n        {\n          "name":"spec.Worker.resourceMap.memory",\n          "required":"false",\n          "description":"","\n          value":"1024M"\n        }],\n      "experimentSpec":{\n        "meta":{\n          "name":"{{experiment_name}}",\n          "namespace":"default",\n          "framework":"TensorFlow",\n          "cmd":"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d{{learning_rate}} --batch_size\\u003d{{batch_size}}",\n          "envVars":{"ENV1":"ENV1"}\n        },\n        "environment":{\n          "name":null,\n          "dockerImage":null,\n          "kernelSpec":null,\n          "description":null,\n          "image":"apache/submarine:tf-mnist-with-summaries-1.0"\n        },\n        "spec":{\n          "Ps":{\n            "replicas":1,\n            "resources":"cpu\\u003d1,memory\\u003d1024M",\n            "name":null,\n            "image":null,\n            "cmd":null,\n            "envVars":null,\n            "resourceMap":{\n              "memory":"1024M",\n              "cpu":"1"\n            }\n          },\n          "Worker":{\n            "replicas":1,\n            "resources":"cpu\\u003d1,memory\\u003d1024M",\n            "name":null,\n            "image":null,\n            "cmd":null,\n            "envVars":null,\n            "resourceMap":{\n              "memory":"1024M",\n              "cpu":"1"\n            }\n          }\n        },\n        "code":null\n      }\n    }\n  },\n  "attributes":{}\n}\n')),Object(l.b)("h2",{id:"list-experiment-template"},"List Experiment Template"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"GET /api/v1/template\n")),Object(l.b)("h3",{id:"code-example-1"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/template\n")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    [{\n      "experimentTemplateId":{\n        "id":1,\n        "serverTimestamp":1626160071451\n      },\n      "experimentTemplateSpec":{\n        "name":"my-tf-mnist-template",\n        "author":"author",\n        "description":"This is a template to run tf-mnist",\n        "parameters":\n        [{\n            "name":"learning_rate",\n            "required":"true",\n            "description":"This is learning_rate of training.",\n            "value":"0.1"\n          },\n          {\n            "name":"batch_size",\n            "required":"true",\n            "description":"This is batch_size of training.",\n            "value":"150"\n          },\n          {\n            "name":"experiment_name",\n            "required":"true",\n            "description":"the name of experiment.",\n            "value":"tf-mnist1"\n          },\n          {\n            "name":"spec.Ps.replicas",\n            "required":"false",\n            "description":"",\n            "value":"1"\n          },\n          {\n            "name":"spec.Ps.resourceMap.cpu",\n            "required":"false",\n            "description":"",\n            "value":"1"\n          },\n          {\n            "name":"spec.Ps.resourceMap.memory",\n            "required":"false",\n            "description":"",\n            "value":"1024M"\n          },\n          {\n            "name":"spec.Worker.replicas",\n            "required":"false",\n            "description":"",\n            "value":"1"\n          },\n          {\n            "name":"spec.Worker.resourceMap.cpu",\n            "required":"false",\n            "description":"",\n            "value":"1"\n          },\n          {\n            "name":"spec.Worker.resourceMap.memory",\n            "required":"false",\n            "description":"","\n            value":"1024M"\n          }],\n        "experimentSpec":{\n          "meta":{\n            "name":"{{experiment_name}}",\n            "namespace":"default",\n            "framework":"TensorFlow",\n            "cmd":"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d{{learning_rate}} --batch_size\\u003d{{batch_size}}",\n            "envVars":{"ENV1":"ENV1"}\n          },\n          "environment":{\n            "name":null,\n            "dockerImage":null,\n            "kernelSpec":null,\n            "description":null,\n            "image":"apache/submarine:tf-mnist-with-summaries-1.0"\n          },\n          "spec":{\n            "Ps":{\n              "replicas":1,\n              "resources":"cpu\\u003d1,memory\\u003d1024M",\n              "name":null,\n              "image":null,\n              "cmd":null,\n              "envVars":null,\n              "resourceMap":{\n                "memory":"1024M",\n                "cpu":"1"\n              }\n            },\n            "Worker":{\n              "replicas":1,\n              "resources":"cpu\\u003d1,memory\\u003d1024M",\n              "name":null,\n              "image":null,\n              "cmd":null,\n              "envVars":null,\n              "resourceMap":{\n                "memory":"1024M",\n                "cpu":"1"\n              }\n            }\n          },\n          "code":null\n        }\n      }\n    }],\n  "attributes":{}\n}\n')),Object(l.b)("h2",{id:"patch-experiment-template"},"Patch Experiment Template"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"PATCH /api/v1/template{name}\n")),Object(l.b)("h3",{id:"parameters-1"},"Parameters"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"In"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"path and body"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment template name. This is required.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"author"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Author name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"description"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Description of the experiment template.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"parameters"),Object(l.b)("td",{parentName:"tr",align:null},"List<ExperimentTemplateParamSpec",">"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Parameters of the experiment template.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"experimentSpec"),Object(l.b)("td",{parentName:"tr",align:null},"ExperimentSpec"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Spec of the experiment template.")))),Object(l.b)("h3",{id:"code-example-2"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},'curl -X PATCH -H "Content-Type: application/json" -d \'\n{\n  "name": "my-tf-mnist-template",\n  "author": "author-new",\n  "description": "This is a template to run tf-mnist",\n  "parameters": [{\n      "name": "learning_rate",\n      "value": 0.1,\n      "required": true,\n      "description": "This is learning_rate of training."\n    },\n    {\n      "name": "batch_size",\n      "value": 150,\n      "required": true,\n      "description": "This is batch_size of training."\n    },\n    {\n      "name": "experiment_name",\n      "value": "tf-mnist1",\n      "required": true,\n      "description": "the name of experiment."\n    }\n  ],\n  "experimentSpec": {\n    "meta": {\n      "cmd": "python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate={{learning_rate}} --batch_size={{batch_size}}",\n      "name": "{{experiment_name}}",\n      "envVars": {\n        "ENV1": "ENV1"\n      },\n      "framework": "TensorFlow",\n      "namespace": "default"\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=1024M"\n      }\n    },\n    "environment": {\n      "image": "apache/submarine:tf-mnist-with-summaries-1.0"\n    }\n  }\n}\n\' http://127.0.0.1:32080/api/v1/template/my-tf-mnist-template\n')),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    "experimentTemplateId":{\n      "id":2,\n      "serverTimestamp":1626160071451\n    },\n    "experimentTemplateSpec":{\n      "name":"my-tf-mnist-template",\n      "author":"author-new",\n      "description":"This is a template to run tf-mnist",\n      "parameters":\n      [{\n        "name":"learning_rate",\n        "required":"true",\n        "description":"This is learning_rate of training.",\n        "value":"0.1"\n        },\n        {\n          "name":"batch_size",\n          "required":"true",\n          "description":"This is batch_size of training.",\n          "value":"150"\n        },\n        {\n          "name":"experiment_name",\n          "required":"true",\n          "description":"the name of experiment.",\n          "value":"tf-mnist1"\n        },\n        {\n          "name":"spec.Ps.replicas",\n          "required":"false",\n          "description":"",\n          "value":"1"\n        },\n        {\n          "name":"spec.Ps.resourceMap.cpu",\n          "required":"false",\n          "description":"",\n          "value":"1"\n        },\n        {\n          "name":"spec.Ps.resourceMap.memory",\n          "required":"false",\n          "description":"",\n          "value":"1024M"\n        },\n        {\n          "name":"spec.Worker.replicas",\n          "required":"false",\n          "description":"",\n          "value":"1"\n        },\n        {\n          "name":"spec.Worker.resourceMap.cpu",\n          "required":"false",\n          "description":"",\n          "value":"1"\n        },\n        {\n          "name":"spec.Worker.resourceMap.memory",\n          "required":"false",\n          "description":"",\n          "value":"1024M"\n      }],\n      "experimentSpec":{\n        "meta":{\n          "name":"{{experiment_name}}",\n          "namespace":"default",\n          "framework":"TensorFlow",\n          "cmd":"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d{{learning_rate}} --batch_size\\u003d{{batch_size}}",\n          "envVars":{"ENV1":"ENV1"}\n        },\n        "environment":{\n          "name":null,\n          "dockerImage":null,\n          "kernelSpec":null,\n          "description":null,\n          "image":"apache/submarine:tf-mnist-with-summaries-1.0"\n        },\n        "spec":{\n          "Ps":{\n            "replicas":1,\n            "resources":"cpu\\u003d1,memory\\u003d1024M",\n            "name":null,\n            "image":null,\n            "cmd":null,\n            "envVars":null,\n            "resourceMap":{"memory":"1024M","cpu":"1"}\n          },\n          "Worker":{\n            "replicas":1,\n            "resources":"cpu\\u003d1,memory\\u003d1024M",\n            "name":null,\n            "image":null,\n            "cmd":null,\n            "envVars":null,\n            "resourceMap":{"memory":"1024M","cpu":"1"}\n          }\n        },\n        "code":null\n      }\n    }\n  },\n  "attributes":{}\n}\n')),Object(l.b)("h2",{id:"delete-experiment-template"},"Delete Experiment Template"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"DELETE /api/v1/template{name}\n")),Object(l.b)("h3",{id:"parameters-2"},"Parameters"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"In"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"path"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment template name. This is required.")))),Object(l.b)("h3",{id:"code-example-3"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},"curl -X DELETE http://127.0.0.1:32080/api/v1/template/my-tf-mnist-template\n")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"reponse")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    "experimentTemplateId":{\n      "id":2,\n      "serverTimestamp":1626160071451\n    },\n    "experimentTemplateSpec":{\n      "name":"my-tf-mnist-template",\n      "author":"author-new",\n      "description":"This is a template to run tf-mnist",\n      "parameters":\n      [{\n        "name":"learning_rate",\n        "required":"true",\n        "description":"This is learning_rate of training.",\n        "value":"0.1"\n      },\n      {\n        "name":"batch_size",\n        "required":"true",\n        "description":"This is batch_size of training.",\n        "value":"150"\n      },\n      {\n        "name":"experiment_name",\n        "required":"true",\n        "description":"the name of experiment.",\n        "value":"tf-mnist1"\n      },\n      {\n        "name":"spec.Ps.replicas",\n        "required":"false",\n        "description":"",\n        "value":"1"\n      },\n      {\n        "name":"spec.Ps.resourceMap.cpu",\n        "required":"false",\n        "description":"",\n        "value":"1"\n      },\n      {\n        "name":"spec.Ps.resourceMap.memory",\n        "required":"false",\n        "description":"",\n        "value":"1024M"\n      },\n      {\n        "name":"spec.Worker.replicas",\n        "required":"false",\n        "description":"",\n        "value":"1"\n      },\n      {\n        "name":"spec.Worker.resourceMap.cpu",\n        "required":"false",\n        "description":"",\n        "value":"1"\n      },\n      {\n        "name":"spec.Worker.resourceMap.memory",\n        "required":"false",\n        "description":"",\n        "value":"1024M"\n      }],\n      "experimentSpec":{\n        "meta":{\n          "name":"{{experiment_name}}",\n          "namespace":"default",\n          "framework":"TensorFlow",\n          "cmd":"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d{{learning_rate}} --batch_size\\u003d{{batch_size}}",\n          "envVars":{"ENV1":"ENV1"}\n        },\n        "environment":{\n          "name":null,\n          "dockerImage":null,\n          "kernelSpec":null,\n          "description":null,\n          "image":"apache/submarine:tf-mnist-with-summaries-1.0"\n        },\n        "spec":{\n          "Ps":{\n            "replicas":1,\n            "resources":"cpu\\u003d1,memory\\u003d1024M",\n            "name":null,\n            "image":null,\n            "cmd":null,\n            "envVars":null,\n            "resourceMap":{"memory":"1024M","cpu":"1"}\n          },\n          "Worker":{\n            "replicas":1,\n            "resources":"cpu\\u003d1,memory\\u003d1024M",\n            "name":null,\n            "image":null,\n            "cmd":null,\n            "envVars":null,\n            "resourceMap":{"memory":"1024M","cpu":"1"}\n          }\n        },\n        "code":null\n      }\n    }\n  },\n  "attributes":{}\n}\n')),Object(l.b)("h2",{id:"use-template-to-create-a-experiment"},"Use Template to Create a Experiment"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"POST /api/v1/experiment/{template_name}\n")),Object(l.b)("h3",{id:"parameters-3"},"Parameters"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"In"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"template_name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"path"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment template name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment template name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"params"),Object(l.b)("td",{parentName:"tr",align:null},"Map<String, String>"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Parameters of the experiment including ",Object(l.b)("inlineCode",{parentName:"td"},"experiment_name"),".")))),Object(l.b)("h3",{id:"code-example-4"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},'curl -X POST -H "Content-Type: application/json" -d \'\n{\n    "name": "tf-mnist",\n    "params": {\n        "learning_rate":"0.01",\n        "batch_size":"150",\n        "experiment_name":"newexperiment1"\n    }\n}\n\' http://127.0.0.1:32080/api/v1/experiment/my-tf-mnist-template\n')),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    "experimentId":"experiment_1626160071451_0001",\n    "name":"newexperiment1",\n    "uid":"b895985c-411c-4e89-90e0-c60a2a8a4235",\n    "status":"Accepted",\n    "acceptedTime":"2021-07-13T16:21:31.000+08:00",\n    "createdTime":null,\n    "runningTime":null,\n    "finishedTime":null,\n    "spec":{\n      "meta":{\n        "name":"newexperiment1",\n        "namespace":"default",\n        "framework":"TensorFlow",\n        "cmd":"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150",\n        "envVars":{"ENV1":"ENV1"}\n      },\n      "environment":{\n        "name":null,\n        "dockerImage":null,\n        "kernelSpec":null,\n        "description":null,\n        "image":"apache/submarine:tf-mnist-with-summaries-1.0"\n      },\n      "spec":{\n        "Ps":{\n          "replicas":1,\n          "resources":"cpu\\u003d1,memory\\u003d1024M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"1024M","cpu":"1"}\n        },\n        "Worker":{\n          "replicas":1,\n          "resources":"cpu\\u003d1,memory\\u003d1024M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"1024M","cpu":"1"}\n        }\n      },\n      "code":null\n    }\n  },\n  "attributes":{}\n}\n')))}b.isMDXComponent=!0}}]);
\ No newline at end of file
diff --git a/1.a006e7ff.js b/1.dab80c77.js
similarity index 82%
rename from 1.a006e7ff.js
rename to 1.dab80c77.js
index ea9a4aa..7b66e36 100644
--- a/1.a006e7ff.js
+++ b/1.dab80c77.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[1],{210:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(262);Object.defineProperty(t,"useThemeConfig",{enumerable:!0,get:function(){return r.useThemeConfig}});var o=n(277);Object.defineProperty(t,"docVersionSearchTag",{enumerable:!0,get:function(){return o.docVersionSearchTag}}),Object.defineProperty(t,"DEFAULT_SEARCH_TAG",{enumerable:!0,get:function(){return o.DEFAULT_SEARCH_TAG}});var i=n(263);Object.defineProperty(t,"isDocsPluginEnabled",{enumerable:!0,get:function(){return i.isDocsPluginEnabled}});var u=n(281);Object.defineProperty(t,"isSamePath",{enumerable:!0,get:function(){return u.isSamePath}});var s=n(282);Object.defineProperty(t,"useTitleFormatter",{enumerable:!0,get:function(){return s.useTitleFormatter}});var c=n(283);Object.defineProperty(t,"useDocsPreferredVersion",{enumerable:!0,get:function(){return c.useDocsPreferredVersion}}),Object.defineProperty(t,"useDocsPreferredVersionByPluginId",{enumerable:!0,get:function(){return c.useDocsPreferredVersionByPluginId}});var a=n(264);Object.defineProperty(t,"DocsPreferredVersionContextProvider",{enumerable:!0,get:function(){return a.DocsPreferredVersionContextProvider}})},211:function(e,t,n){"use strict";function r(e){var t,n,o="";if("string"==typeof e||"number"==typeof e)o+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(n=r(e[t]))&&(o&&(o+=" "),o+=n);else for(t in e)e[t]&&(o&&(o+=" "),o+=t);return o}t.a=function(){for(var e,t,n=0,o="";n<arguments.length;)(e=arguments[n++])&&(t=r(e))&&(o&&(o+=" "),o+=t);return o}},212:function(e,t,n){"use strict";n.r(t);var r=n(10);n.d(t,"MemoryRouter",(function(){return r.d})),n.d(t,"Prompt",(function(){return r.f})),n.d(t,"Redirect",(function(){return r.g})),n.d(t,"Route",(function(){return r.h})),n.d(t,"Router",(function(){return r.i})),n.d(t,"StaticRouter",(function(){return r.j})),n.d(t,"Switch",(function(){return r.k})),n.d(t,"generatePath",(function(){return r.l})),n.d(t,"matchPath",(function(){return r.m})),n.d(t,"useHistory",(function(){return r.n})),n.d(t,"useLocation",(function(){return r.o})),n.d(t,"useParams",(function(){return r.p})),n.d(t,"useRouteMatch",(function(){return r.q})),n.d(t,"withRouter",(function(){return r.r})),n.d(t,"BrowserRouter",(function(){return r.a})),n.d(t,"HashRouter",(function(){return r.b})),n.d(t,"Link",(function(){return r.c})),n.d(t,"NavLink",(function(){return r.e}))},213:function(e,t,n){"use strict";var r=n(0),o=n.n(r),i=n(10),u=n(232),s=n(11),c=Object(r.createContext)({collectLink:function(){}}),a=n(216),f=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]])}return n};t.a=function(e){var t,n,d,l=e.isNavLink,v=e.to,g=e.href,p=e.activeClassName,h=e.isActive,D=e["data-noBrokenLinkCheck"],P=e.autoAddBaseUrl,b=void 0===P||P,m=f(e,["isNavLink","to","href","activeClassName","isActive","data-noBrokenLinkCheck","autoAddBaseUrl"]),V=Object(a.b)().withBaseUrl,_=Object(r.useContext)(c),O=v||g,A=Object(u.a)(O),y=null==O?void 0:O.replace("pathname://",""),j=void 0!==y?(n=y,b&&function(e){return e.startsWith("/")}(n)?V(n):n):void 0,w=Object(r.useRef)(!1),C=l?i.e:i.c,E=s.a.canUseIntersectionObserver;Object(r.useEffect)((function(){return!E&&A&&window.docusaurus.prefetch(j),function(){E&&d&&d.disconnect()}}),[j,E,A]);var L=null!==(t=null==j?void 0:j.startsWith("#"))&&void 0!==t&&t,x=!j||!A||L;return j&&A&&!L&&!D&&_.collectLink(j),x?o.a.createElement("a",Object.assign({href:j},O&&!A&&{target:"_blank",rel:"noopener noreferrer"},m)):o.a.createElement(C,Object.assign({},m,{onMouseEnter:function(){w.current||(window.docusaurus.preload(j),w.current=!0)},innerRef:function(e){var t,n;E&&e&&A&&(t=e,n=function(){window.docusaurus.prefetch(j)},(d=new window.IntersectionObserver((function(e){e.forEach((function(e){t===e.target&&(e.isIntersecting||e.intersectionRatio>0)&&(d.unobserve(t),d.disconnect(),n())}))}))).observe(t))},to:j||""},l&&{isActive:h,activeClassName:p}))}},214:function(e,t,n){try{e.exports=n(278)}catch(r){e.exports={}}},216:function(e,t,n){"use strict";n.d(t,"b",(function(){return i})),n.d(t,"a",(function(){return u}));var r=n(22),o=n(232);function i(){var e=Object(r.default)().siteConfig,t=(e=void 0===e?{}:e).baseUrl,n=void 0===t?"/":t,i=e.url;return{withBaseUrl:function(e,t){return function(e,t,n,r){var i=void 0===r?{}:r,u=i.forcePrependBaseUrl,s=void 0!==u&&u,c=i.absolute,a=void 0!==c&&c;if(!n)return n;if(n.startsWith("#"))return n;if(Object(o.b)(n))return n;if(s)return t+n;var f=n.startsWith(t)?n:t+n.replace(/^\//,"");return a?e+f:f}(i,n,e,t)}}}function u(e,t){return void 0===t&&(t={}),(0,i().withBaseUrl)(e,t)}},232:function(e,t,n){"use strict";function r(e){return!0===/^(\w*:|\/\/)/.test(e)}function o(e){return void 0!==e&&!r(e)}n.d(t,"b",(function(){return r})),n.d(t,"a",(function(){return o}))},262:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.useThemeConfig=void 0;var o=r(n(22));t.useThemeConfig=function(){return o.default().siteConfig.themeConfig}},263:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isDocsPluginEnabled=void 0;var r=n(214);t.isDocsPluginEnabled=!!r.useAllDocsData},264:function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.hasOwnProperty.call(e,n)&&r(t,e,n);return o(t,e),t},u=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.useDocsPreferredVersionContext=t.DocsPreferredVersionContextProvider=void 0;var s=i(n(0)),c=n(262),a=n(263),f=n(214),d=u(n(284));function l(e){var t=e.pluginIds,n=e.versionPersistence,r=e.allDocsData;var o={};return t.forEach((function(e){o[e]=function(e){var t=d.default.read(e,n);return r[e].versions.some((function(e){return e.name===t}))?{preferredVersionName:t}:(d.default.clear(e,n),{preferredVersionName:null})}(e)})),o}function v(){var e=f.useAllDocsData(),t=c.useThemeConfig().docs.versionPersistence,n=s.useMemo((function(){return Object.keys(e)}),[e]),r=s.useState((function(){return function(e){var t={};return e.forEach((function(e){t[e]={preferredVersionName:null}})),t}(n)})),o=r[0],i=r[1];return s.useEffect((function(){i(l({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]),[o,s.useMemo((function(){return{savePreferredVersion:function(e,n){d.default.save(e,t,n),i((function(t){var r;return Object.assign(Object.assign({},t),((r={})[e]={preferredVersionName:n},r))}))}}}),[i])]}var g=s.createContext(null);function p(e){var t=e.children,n=v();return s.default.createElement(g.Provider,{value:n},t)}t.DocsPreferredVersionContextProvider=function(e){var t=e.children;return a.isDocsPluginEnabled?s.default.createElement(p,null,t):s.default.createElement(s.default.Fragment,null,t)},t.useDocsPreferredVersionContext=function(){var e=s.useContext(g);if(!e)throw new Error("Can't find docs preferred context, maybe you forgot to use the DocsPreferredVersionContextProvider ?");return e}},277:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.docVersionSearchTag=t.DEFAULT_SEARCH_TAG=void 0,t.DEFAULT_SEARCH_TAG="default",t.docVersionSearchTag=function(e,t){return"docs-"+e+"-"+t}},278:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.useDocVersionSuggestions=t.useActiveDocContext=t.useActiveVersion=t.useLatestVersion=t.useVersions=t.useActivePluginAndVersion=t.useActivePlugin=t.useDocsData=t.useAllDocsData=void 0;var r=n(212),o=n(279),i=n(280);t.useAllDocsData=function(){return o.useAllPluginInstancesData("docusaurus-plugin-content-docs")},t.useDocsData=function(e){return o.usePluginData("docusaurus-plugin-content-docs",e)},t.useActivePlugin=function(e){void 0===e&&(e={});var n=t.useAllDocsData(),o=r.useLocation().pathname;return i.getActivePlugin(n,o,e)},t.useActivePluginAndVersion=function(e){void 0===e&&(e={});var n=t.useActivePlugin(e),o=r.useLocation().pathname;if(n)return{activePlugin:n,activeVersion:i.getActiveVersion(n.pluginData,o)}},t.useVersions=function(e){return t.useDocsData(e).versions},t.useLatestVersion=function(e){var n=t.useDocsData(e);return i.getLatestVersion(n)},t.useActiveVersion=function(e){var n=t.useDocsData(e),o=r.useLocation().pathname;return i.getActiveVersion(n,o)},t.useActiveDocContext=function(e){var n=t.useDocsData(e),o=r.useLocation().pathname;return i.getActiveDocContext(n,o)},t.useDocVersionSuggestions=function(e){var n=t.useDocsData(e),o=r.useLocation().pathname;return i.getDocVersionSuggestions(n,o)}},279:function(e,t,n){"use strict";n.r(t),n.d(t,"default",(function(){return o})),n.d(t,"useAllPluginInstancesData",(function(){return i})),n.d(t,"usePluginData",(function(){return u}));var r=n(22);function o(){var e=Object(r.default)().globalData;if(!e)throw new Error("Docusaurus global data not found");return e}function i(e){var t=o()[e];if(!t)throw new Error("Docusaurus plugin global data not found for pluginName="+e);return t}function u(e,t){void 0===t&&(t="default");var n=i(e)[t];if(!n)throw new Error("Docusaurus plugin global data not found for pluginName="+e+" and pluginId="+t);return n}},280:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getDocVersionSuggestions=t.getActiveDocContext=t.getActiveVersion=t.getLatestVersion=t.getActivePlugin=void 0;var r=n(212);t.getActivePlugin=function(e,t,n){void 0===n&&(n={});var o=Object.entries(e).find((function(e){e[0];var n=e[1];return!!r.matchPath(t,{path:n.path,exact:!1,strict:!1})})),i=o?{pluginId:o[0],pluginData:o[1]}:void 0;if(!i&&n.failfast)throw new Error("Can't find active docs plugin for pathname="+t+", while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: "+Object.values(e).map((function(e){return e.path})).join(", "));return i},t.getLatestVersion=function(e){return e.versions.find((function(e){return e.isLast}))},t.getActiveVersion=function(e,n){var o=t.getLatestVersion(e);return[].concat(e.versions.filter((function(e){return e!==o})),[o]).find((function(e){return!!r.matchPath(n,{path:e.path,exact:!1,strict:!1})}))},t.getActiveDocContext=function(e,n){var o,i,u=t.getActiveVersion(e,n),s=null==u?void 0:u.docs.find((function(e){return!!r.matchPath(n,{path:e.path,exact:!0,strict:!1})}));return{activeVersion:u,activeDoc:s,alternateDocVersions:s?(o=s.id,i={},e.versions.forEach((function(e){e.docs.forEach((function(t){t.id===o&&(i[e.name]=t)}))})),i):{}}},t.getDocVersionSuggestions=function(e,n){var r=t.getLatestVersion(e),o=t.getActiveDocContext(e,n),i=o.activeVersion!==r;return{latestDocSuggestion:i?null==o?void 0:o.alternateDocVersions[r.name]:void 0,latestVersionSuggestion:i?r:void 0}}},281:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isSamePath=void 0,t.isSamePath=function(e,t){var n=function(e){return!e||(null==e?void 0:e.endsWith("/"))?e:e+"/"};return n(e)===n(t)}},282:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.useTitleFormatter=void 0;var o=r(n(22));t.useTitleFormatter=function(e){var t=o.default().siteConfig,n=void 0===t?{}:t,r=n.title,i=n.titleDelimiter,u=void 0===i?"|":i;return e&&e.trim().length?e.trim()+" "+u+" "+r:r}},283:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.useDocsPreferredVersionByPluginId=t.useDocsPreferredVersion=void 0;var r=n(0),o=n(264),i=n(214),u=n(285);t.useDocsPreferredVersion=function(e){void 0===e&&(e=u.DEFAULT_PLUGIN_ID);var t=i.useDocsData(e),n=o.useDocsPreferredVersionContext(),s=n[0],c=n[1],a=s[e].preferredVersionName;return{preferredVersion:a?t.versions.find((function(e){return e.name===a})):null,savePreferredVersionName:r.useCallback((function(t){c.savePreferredVersion(e,t)}),[c])}},t.useDocsPreferredVersionByPluginId=function(){var e=i.useAllDocsData(),t=o.useDocsPreferredVersionContext()[0],n=Object.keys(e),r={};return n.forEach((function(n){r[n]=function(n){var r=e[n],o=t[n].preferredVersionName;return o?r.versions.find((function(e){return e.name===o})):null}(n)})),r}},284:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(e){return"docs-preferred-version-"+e},o={save:function(e,t,n){"none"===t||window.localStorage.setItem(r(e),n)},read:function(e,t){return"none"===t?null:window.localStorage.getItem(r(e))},clear:function(e,t){"none"===t||window.localStorage.removeItem(r(e))}};t.default=o},285:function(e,t,n){"use strict";n.r(t),n.d(t,"DEFAULT_PLUGIN_ID",(function(){return r}));var r="default"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[1],{195:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(245);Object.defineProperty(t,"useThemeConfig",{enumerable:!0,get:function(){return r.useThemeConfig}});var o=n(260);Object.defineProperty(t,"docVersionSearchTag",{enumerable:!0,get:function(){return o.docVersionSearchTag}}),Object.defineProperty(t,"DEFAULT_SEARCH_TAG",{enumerable:!0,get:function(){return o.DEFAULT_SEARCH_TAG}});var i=n(246);Object.defineProperty(t,"isDocsPluginEnabled",{enumerable:!0,get:function(){return i.isDocsPluginEnabled}});var u=n(264);Object.defineProperty(t,"isSamePath",{enumerable:!0,get:function(){return u.isSamePath}});var s=n(265);Object.defineProperty(t,"useTitleFormatter",{enumerable:!0,get:function(){return s.useTitleFormatter}});var c=n(266);Object.defineProperty(t,"useDocsPreferredVersion",{enumerable:!0,get:function(){return c.useDocsPreferredVersion}}),Object.defineProperty(t,"useDocsPreferredVersionByPluginId",{enumerable:!0,get:function(){return c.useDocsPreferredVersionByPluginId}});var a=n(247);Object.defineProperty(t,"DocsPreferredVersionContextProvider",{enumerable:!0,get:function(){return a.DocsPreferredVersionContextProvider}})},196:function(e,t,n){"use strict";function r(e){var t,n,o="";if("string"==typeof e||"number"==typeof e)o+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(n=r(e[t]))&&(o&&(o+=" "),o+=n);else for(t in e)e[t]&&(o&&(o+=" "),o+=t);return o}t.a=function(){for(var e,t,n=0,o="";n<arguments.length;)(e=arguments[n++])&&(t=r(e))&&(o&&(o+=" "),o+=t);return o}},197:function(e,t,n){"use strict";n.r(t);var r=n(10);n.d(t,"MemoryRouter",(function(){return r.d})),n.d(t,"Prompt",(function(){return r.f})),n.d(t,"Redirect",(function(){return r.g})),n.d(t,"Route",(function(){return r.h})),n.d(t,"Router",(function(){return r.i})),n.d(t,"StaticRouter",(function(){return r.j})),n.d(t,"Switch",(function(){return r.k})),n.d(t,"generatePath",(function(){return r.l})),n.d(t,"matchPath",(function(){return r.m})),n.d(t,"useHistory",(function(){return r.n})),n.d(t,"useLocation",(function(){return r.o})),n.d(t,"useParams",(function(){return r.p})),n.d(t,"useRouteMatch",(function(){return r.q})),n.d(t,"withRouter",(function(){return r.r})),n.d(t,"BrowserRouter",(function(){return r.a})),n.d(t,"HashRouter",(function(){return r.b})),n.d(t,"Link",(function(){return r.c})),n.d(t,"NavLink",(function(){return r.e}))},198:function(e,t,n){"use strict";var r=n(0),o=n.n(r),i=n(10),u=n(210),s=n(11),c=Object(r.createContext)({collectLink:function(){}}),a=n(201),f=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]])}return n};t.a=function(e){var t,n,d,l=e.isNavLink,v=e.to,g=e.href,p=e.activeClassName,h=e.isActive,D=e["data-noBrokenLinkCheck"],P=e.autoAddBaseUrl,b=void 0===P||P,m=f(e,["isNavLink","to","href","activeClassName","isActive","data-noBrokenLinkCheck","autoAddBaseUrl"]),V=Object(a.b)().withBaseUrl,_=Object(r.useContext)(c),O=v||g,A=Object(u.a)(O),y=null==O?void 0:O.replace("pathname://",""),j=void 0!==y?(n=y,b&&function(e){return e.startsWith("/")}(n)?V(n):n):void 0,w=Object(r.useRef)(!1),C=l?i.e:i.c,E=s.a.canUseIntersectionObserver;Object(r.useEffect)((function(){return!E&&A&&window.docusaurus.prefetch(j),function(){E&&d&&d.disconnect()}}),[j,E,A]);var L=null!==(t=null==j?void 0:j.startsWith("#"))&&void 0!==t&&t,x=!j||!A||L;return j&&A&&!L&&!D&&_.collectLink(j),x?o.a.createElement("a",Object.assign({href:j},O&&!A&&{target:"_blank",rel:"noopener noreferrer"},m)):o.a.createElement(C,Object.assign({},m,{onMouseEnter:function(){w.current||(window.docusaurus.preload(j),w.current=!0)},innerRef:function(e){var t,n;E&&e&&A&&(t=e,n=function(){window.docusaurus.prefetch(j)},(d=new window.IntersectionObserver((function(e){e.forEach((function(e){t===e.target&&(e.isIntersecting||e.intersectionRatio>0)&&(d.unobserve(t),d.disconnect(),n())}))}))).observe(t))},to:j||""},l&&{isActive:h,activeClassName:p}))}},199:function(e,t,n){try{e.exports=n(261)}catch(r){e.exports={}}},201:function(e,t,n){"use strict";n.d(t,"b",(function(){return i})),n.d(t,"a",(function(){return u}));var r=n(22),o=n(210);function i(){var e=Object(r.default)().siteConfig,t=(e=void 0===e?{}:e).baseUrl,n=void 0===t?"/":t,i=e.url;return{withBaseUrl:function(e,t){return function(e,t,n,r){var i=void 0===r?{}:r,u=i.forcePrependBaseUrl,s=void 0!==u&&u,c=i.absolute,a=void 0!==c&&c;if(!n)return n;if(n.startsWith("#"))return n;if(Object(o.b)(n))return n;if(s)return t+n;var f=n.startsWith(t)?n:t+n.replace(/^\//,"");return a?e+f:f}(i,n,e,t)}}}function u(e,t){return void 0===t&&(t={}),(0,i().withBaseUrl)(e,t)}},210:function(e,t,n){"use strict";function r(e){return!0===/^(\w*:|\/\/)/.test(e)}function o(e){return void 0!==e&&!r(e)}n.d(t,"b",(function(){return r})),n.d(t,"a",(function(){return o}))},245:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.useThemeConfig=void 0;var o=r(n(22));t.useThemeConfig=function(){return o.default().siteConfig.themeConfig}},246:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isDocsPluginEnabled=void 0;var r=n(199);t.isDocsPluginEnabled=!!r.useAllDocsData},247:function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.hasOwnProperty.call(e,n)&&r(t,e,n);return o(t,e),t},u=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.useDocsPreferredVersionContext=t.DocsPreferredVersionContextProvider=void 0;var s=i(n(0)),c=n(245),a=n(246),f=n(199),d=u(n(267));function l(e){var t=e.pluginIds,n=e.versionPersistence,r=e.allDocsData;var o={};return t.forEach((function(e){o[e]=function(e){var t=d.default.read(e,n);return r[e].versions.some((function(e){return e.name===t}))?{preferredVersionName:t}:(d.default.clear(e,n),{preferredVersionName:null})}(e)})),o}function v(){var e=f.useAllDocsData(),t=c.useThemeConfig().docs.versionPersistence,n=s.useMemo((function(){return Object.keys(e)}),[e]),r=s.useState((function(){return function(e){var t={};return e.forEach((function(e){t[e]={preferredVersionName:null}})),t}(n)})),o=r[0],i=r[1];return s.useEffect((function(){i(l({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]),[o,s.useMemo((function(){return{savePreferredVersion:function(e,n){d.default.save(e,t,n),i((function(t){var r;return Object.assign(Object.assign({},t),((r={})[e]={preferredVersionName:n},r))}))}}}),[i])]}var g=s.createContext(null);function p(e){var t=e.children,n=v();return s.default.createElement(g.Provider,{value:n},t)}t.DocsPreferredVersionContextProvider=function(e){var t=e.children;return a.isDocsPluginEnabled?s.default.createElement(p,null,t):s.default.createElement(s.default.Fragment,null,t)},t.useDocsPreferredVersionContext=function(){var e=s.useContext(g);if(!e)throw new Error("Can't find docs preferred context, maybe you forgot to use the DocsPreferredVersionContextProvider ?");return e}},260:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.docVersionSearchTag=t.DEFAULT_SEARCH_TAG=void 0,t.DEFAULT_SEARCH_TAG="default",t.docVersionSearchTag=function(e,t){return"docs-"+e+"-"+t}},261:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.useDocVersionSuggestions=t.useActiveDocContext=t.useActiveVersion=t.useLatestVersion=t.useVersions=t.useActivePluginAndVersion=t.useActivePlugin=t.useDocsData=t.useAllDocsData=void 0;var r=n(197),o=n(262),i=n(263);t.useAllDocsData=function(){return o.useAllPluginInstancesData("docusaurus-plugin-content-docs")},t.useDocsData=function(e){return o.usePluginData("docusaurus-plugin-content-docs",e)},t.useActivePlugin=function(e){void 0===e&&(e={});var n=t.useAllDocsData(),o=r.useLocation().pathname;return i.getActivePlugin(n,o,e)},t.useActivePluginAndVersion=function(e){void 0===e&&(e={});var n=t.useActivePlugin(e),o=r.useLocation().pathname;if(n)return{activePlugin:n,activeVersion:i.getActiveVersion(n.pluginData,o)}},t.useVersions=function(e){return t.useDocsData(e).versions},t.useLatestVersion=function(e){var n=t.useDocsData(e);return i.getLatestVersion(n)},t.useActiveVersion=function(e){var n=t.useDocsData(e),o=r.useLocation().pathname;return i.getActiveVersion(n,o)},t.useActiveDocContext=function(e){var n=t.useDocsData(e),o=r.useLocation().pathname;return i.getActiveDocContext(n,o)},t.useDocVersionSuggestions=function(e){var n=t.useDocsData(e),o=r.useLocation().pathname;return i.getDocVersionSuggestions(n,o)}},262:function(e,t,n){"use strict";n.r(t),n.d(t,"default",(function(){return o})),n.d(t,"useAllPluginInstancesData",(function(){return i})),n.d(t,"usePluginData",(function(){return u}));var r=n(22);function o(){var e=Object(r.default)().globalData;if(!e)throw new Error("Docusaurus global data not found");return e}function i(e){var t=o()[e];if(!t)throw new Error("Docusaurus plugin global data not found for pluginName="+e);return t}function u(e,t){void 0===t&&(t="default");var n=i(e)[t];if(!n)throw new Error("Docusaurus plugin global data not found for pluginName="+e+" and pluginId="+t);return n}},263:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getDocVersionSuggestions=t.getActiveDocContext=t.getActiveVersion=t.getLatestVersion=t.getActivePlugin=void 0;var r=n(197);t.getActivePlugin=function(e,t,n){void 0===n&&(n={});var o=Object.entries(e).find((function(e){e[0];var n=e[1];return!!r.matchPath(t,{path:n.path,exact:!1,strict:!1})})),i=o?{pluginId:o[0],pluginData:o[1]}:void 0;if(!i&&n.failfast)throw new Error("Can't find active docs plugin for pathname="+t+", while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: "+Object.values(e).map((function(e){return e.path})).join(", "));return i},t.getLatestVersion=function(e){return e.versions.find((function(e){return e.isLast}))},t.getActiveVersion=function(e,n){var o=t.getLatestVersion(e);return[].concat(e.versions.filter((function(e){return e!==o})),[o]).find((function(e){return!!r.matchPath(n,{path:e.path,exact:!1,strict:!1})}))},t.getActiveDocContext=function(e,n){var o,i,u=t.getActiveVersion(e,n),s=null==u?void 0:u.docs.find((function(e){return!!r.matchPath(n,{path:e.path,exact:!0,strict:!1})}));return{activeVersion:u,activeDoc:s,alternateDocVersions:s?(o=s.id,i={},e.versions.forEach((function(e){e.docs.forEach((function(t){t.id===o&&(i[e.name]=t)}))})),i):{}}},t.getDocVersionSuggestions=function(e,n){var r=t.getLatestVersion(e),o=t.getActiveDocContext(e,n),i=o.activeVersion!==r;return{latestDocSuggestion:i?null==o?void 0:o.alternateDocVersions[r.name]:void 0,latestVersionSuggestion:i?r:void 0}}},264:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isSamePath=void 0,t.isSamePath=function(e,t){var n=function(e){return!e||(null==e?void 0:e.endsWith("/"))?e:e+"/"};return n(e)===n(t)}},265:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.useTitleFormatter=void 0;var o=r(n(22));t.useTitleFormatter=function(e){var t=o.default().siteConfig,n=void 0===t?{}:t,r=n.title,i=n.titleDelimiter,u=void 0===i?"|":i;return e&&e.trim().length?e.trim()+" "+u+" "+r:r}},266:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.useDocsPreferredVersionByPluginId=t.useDocsPreferredVersion=void 0;var r=n(0),o=n(247),i=n(199),u=n(268);t.useDocsPreferredVersion=function(e){void 0===e&&(e=u.DEFAULT_PLUGIN_ID);var t=i.useDocsData(e),n=o.useDocsPreferredVersionContext(),s=n[0],c=n[1],a=s[e].preferredVersionName;return{preferredVersion:a?t.versions.find((function(e){return e.name===a})):null,savePreferredVersionName:r.useCallback((function(t){c.savePreferredVersion(e,t)}),[c])}},t.useDocsPreferredVersionByPluginId=function(){var e=i.useAllDocsData(),t=o.useDocsPreferredVersionContext()[0],n=Object.keys(e),r={};return n.forEach((function(n){r[n]=function(n){var r=e[n],o=t[n].preferredVersionName;return o?r.versions.find((function(e){return e.name===o})):null}(n)})),r}},267:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(e){return"docs-preferred-version-"+e},o={save:function(e,t,n){"none"===t||window.localStorage.setItem(r(e),n)},read:function(e,t){return"none"===t?null:window.localStorage.getItem(r(e))},clear:function(e,t){"none"===t||window.localStorage.removeItem(r(e))}};t.default=o},268:function(e,t,n){"use strict";n.r(t),n.d(t,"DEFAULT_PLUGIN_ID",(function(){return r}));var r="default"}}]);
\ No newline at end of file
diff --git a/10dc6c9a.abe7d86f.js b/10dc6c9a.ad0b736b.js
similarity index 94%
rename from 10dc6c9a.abe7d86f.js
rename to 10dc6c9a.ad0b736b.js
index fde5e4c..4a7b91c 100644
--- a/10dc6c9a.abe7d86f.js
+++ b/10dc6c9a.ad0b736b.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[8],{209:function(e,t,r){"use strict";r.d(t,"a",(function(){return p})),r.d(t,"b",(function(){return d}));var n=r(0),o=r.n(n);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?i(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function c(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var s=o.a.createContext({}),u=function(e){var t=o.a.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},p=function(e){var t=u(e.components);return o.a.createElement(s.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return o.a.createElement(o.a.Fragment,{},t)}},f=o.a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,a=e.originalType,i=e.parentName,s=c(e,["components","mdxType","originalType","parentName"]),p=u(r),f=n,d=p["".concat(i,".").concat(f)]||p[f]||m[f]||a;return r?o.a.createElement(d,l(l({ref:t},s),{},{components:r})):o.a.createElement(d,l({ref:t},s))}));function d(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=r.length,i=new Array(a);i[0]=f;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l.mdxType="string"==typeof e?e:n,i[1]=l;for(var s=2;s<a;s++)i[s]=r[s];return o.a.createElement.apply(null,i)}return o.a.createElement.apply(null,r)}f.displayName="MDXCreateElement"},233:function(e,t,r){"use strict";r.r(t),t.default=r.p+"assets/images/mlflow-ui-e2fbae31ba60c324e66f00f0ae3caebf.png"},73:function(e,t,r){"use strict";r.r(t),r.d(t,"frontMatter",(function(){return i})),r.d(t,"metadata",(function(){return l})),r.d(t,"toc",(function(){return c})),r.d(t,"default",(function(){return u}));var n=r(3),o=r(7),a=(r(0),r(209)),i={title:"MLflow UI"},l={unversionedId:"userDocs/others/mlflow",id:"version-0.6.0/userDocs/others/mlflow",isDocsHomePage:!1,title:"MLflow UI",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/userDocs/others/mlflow.md",slug:"/userDocs/others/mlflow",permalink:"/docs/userDocs/others/mlflow",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/others/mlflow.md",version:"0.6.0",sidebar:"docs",previous:{title:"Building Submarine Spark Security Plugin",permalink:"/docs/userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin"},next:{title:"Tensorboard",permalink:"/docs/userDocs/others/tensorboard"}},c=[{value:"Usage",id:"usage",children:[]},{value:"Example",id:"example",children:[]}],s={toc:c};function u(e){var t=e.components,i=Object(o.a)(e,["components"]);return Object(a.b)("wrapper",Object(n.a)({},s,i,{components:t,mdxType:"MDXLayout"}),Object(a.b)("h3",{id:"usage"},"Usage"),Object(a.b)("p",null,"MLflow UI shows the tracking result of the experiments. When we\nuse the log_param or log_metric in ModelClient API, we could view\nthe result in MLflow UI. Below is the example of the usage of MLflow\nUI."),Object(a.b)("h3",{id:"example"},"Example"),Object(a.b)("ol",null,Object(a.b)("li",{parentName:"ol"},"Run the following code in the cluster")),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre",className:"language-python"},'from submarine import ModelsClient\nimport random\nimport time\n\nif __name__ == "__main__":\n  modelClient = ModelsClient()\n  with modelClient.start() as run:\n      modelClient.log_param("learning_rate", random.random())\n      for i in range(100):\n        time.sleep(1)\n        modelClient.log_metric("mse", random.random() * 100, i)\n        modelClient.log_metric("acc", random.random(), i)\n')),Object(a.b)("ol",{start:2},Object(a.b)("li",{parentName:"ol"},"In the MLflow UI page, you can see the log_param and the log_metric\nresult. You can also compare the training between different workers.")),Object(a.b)("p",null,Object(a.b)("img",{src:r(233).default})))}u.isMDXComponent=!0}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[8],{194:function(e,t,r){"use strict";r.d(t,"a",(function(){return p})),r.d(t,"b",(function(){return d}));var n=r(0),o=r.n(n);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?i(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function c(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var s=o.a.createContext({}),u=function(e){var t=o.a.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},p=function(e){var t=u(e.components);return o.a.createElement(s.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return o.a.createElement(o.a.Fragment,{},t)}},f=o.a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,a=e.originalType,i=e.parentName,s=c(e,["components","mdxType","originalType","parentName"]),p=u(r),f=n,d=p["".concat(i,".").concat(f)]||p[f]||m[f]||a;return r?o.a.createElement(d,l(l({ref:t},s),{},{components:r})):o.a.createElement(d,l({ref:t},s))}));function d(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=r.length,i=new Array(a);i[0]=f;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l.mdxType="string"==typeof e?e:n,i[1]=l;for(var s=2;s<a;s++)i[s]=r[s];return o.a.createElement.apply(null,i)}return o.a.createElement.apply(null,r)}f.displayName="MDXCreateElement"},211:function(e,t,r){"use strict";r.r(t),t.default=r.p+"assets/images/mlflow-ui-e2fbae31ba60c324e66f00f0ae3caebf.png"},73:function(e,t,r){"use strict";r.r(t),r.d(t,"frontMatter",(function(){return i})),r.d(t,"metadata",(function(){return l})),r.d(t,"toc",(function(){return c})),r.d(t,"default",(function(){return u}));var n=r(3),o=r(7),a=(r(0),r(194)),i={title:"MLflow UI"},l={unversionedId:"userDocs/others/mlflow",id:"version-0.6.0/userDocs/others/mlflow",isDocsHomePage:!1,title:"MLflow UI",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/userDocs/others/mlflow.md",slug:"/userDocs/others/mlflow",permalink:"/docs/userDocs/others/mlflow",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/others/mlflow.md",version:"0.6.0",sidebar:"docs",previous:{title:"Building Submarine Spark Security Plugin",permalink:"/docs/userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin"},next:{title:"Tensorboard",permalink:"/docs/userDocs/others/tensorboard"}},c=[{value:"Usage",id:"usage",children:[]},{value:"Example",id:"example",children:[]}],s={toc:c};function u(e){var t=e.components,i=Object(o.a)(e,["components"]);return Object(a.b)("wrapper",Object(n.a)({},s,i,{components:t,mdxType:"MDXLayout"}),Object(a.b)("h3",{id:"usage"},"Usage"),Object(a.b)("p",null,"MLflow UI shows the tracking result of the experiments. When we\nuse the log_param or log_metric in ModelClient API, we could view\nthe result in MLflow UI. Below is the example of the usage of MLflow\nUI."),Object(a.b)("h3",{id:"example"},"Example"),Object(a.b)("ol",null,Object(a.b)("li",{parentName:"ol"},"Run the following code in the cluster")),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre",className:"language-python"},'from submarine import ModelsClient\nimport random\nimport time\n\nif __name__ == "__main__":\n  modelClient = ModelsClient()\n  with modelClient.start() as run:\n      modelClient.log_param("learning_rate", random.random())\n      for i in range(100):\n        time.sleep(1)\n        modelClient.log_metric("mse", random.random() * 100, i)\n        modelClient.log_metric("acc", random.random(), i)\n')),Object(a.b)("ol",{start:2},Object(a.b)("li",{parentName:"ol"},"In the MLflow UI page, you can see the log_param and the log_metric\nresult. You can also compare the training between different workers.")),Object(a.b)("p",null,Object(a.b)("img",{src:r(211).default})))}u.isMDXComponent=!0}}]);
\ No newline at end of file
diff --git a/11695589.16a0a8c4.js b/11695589.9ed08ca0.js
similarity index 99%
rename from 11695589.16a0a8c4.js
rename to 11695589.9ed08ca0.js
index 654db8f..9ba58a5 100644
--- a/11695589.16a0a8c4.js
+++ b/11695589.9ed08ca0.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[9],{209:function(e,n,t){"use strict";t.d(n,"a",(function(){return u})),t.d(n,"b",(function(){return d}));var a=t(0),r=t.n(a);function l(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function m(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function i(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?m(Object(t),!0).forEach((function(n){l(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):m(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function c(e,n){if(null==e)return{};var t,a,r=function(e,n){if(null==e)return{};var t,a,r={},l=Object.keys(e);for(a=0;a<l.length;a++)t=l[a],n.indexOf(t)>=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a<l.length;a++)t=l[a],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var p=r.a.createContext({}),b=function(e){var n=r.a.useContext(p),t=n;return e&&(t="function"==typeof e?e(n):i(i({},n),e)),t},u=function(e){var n=b(e.components);return r.a.createElement(p.Provider,{value:n},e.children)},s={inlineCode:"code",wrapper:function(e){var n=e.children;return r.a.createElement(r.a.Fragment,{},n)}},o=r.a.forwardRef((function(e,n){var t=e.components,a=e.mdxType,l=e.originalType,m=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),u=b(t),o=a,d=u["".concat(m,".").concat(o)]||u[o]||s[o]||l;return t?r.a.createElement(d,i(i({ref:n},p),{},{components:t})):r.a.createElement(d,i({ref:n},p))}));function d(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var l=t.length,m=new Array(l);m[0]=o;var i={};for(var c in n)hasOwnProperty.call(n,c)&&(i[c]=n[c]);i.originalType=e,i.mdxType="string"==typeof e?e:a,m[1]=i;for(var p=2;p<l;p++)m[p]=t[p];return r.a.createElement.apply(null,m)}return r.a.createElement.apply(null,t)}o.displayName="MDXCreateElement"},74:function(e,n,t){"use strict";t.r(n),t.d(n,"frontMatter",(function(){return m})),t.d(n,"metadata",(function(){return i})),t.d(n,"toc",(function(){return c})),t.d(n,"default",(function(){return b}));var a=t(3),r=t(7),l=(t(0),t(209)),m={title:"Experiment REST API"},i={unversionedId:"userDocs/api/experiment",id:"userDocs/api/experiment",isDocsHomePage:!1,title:"Experiment REST API",description:"\x3c!--",source:"@site/docs/userDocs/api/experiment.md",slug:"/userDocs/api/experiment",permalink:"/docs/next/userDocs/api/experiment",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/userDocs/api/experiment.md",version:"current",sidebar:"docs",previous:{title:"Jupyter Notebook",permalink:"/docs/next/gettingStarted/notebook"},next:{title:"Environment REST API",permalink:"/docs/next/userDocs/api/environment"}},c=[{value:"Create Experiment (Using Anonymous/Embedded Environment)",id:"create-experiment-using-anonymousembedded-environment",children:[{value:"Parameters",id:"parameters",children:[]},{value:"Code Example",id:"code-example",children:[]}]},{value:"Create Experiment (Using Pre-defined/Stored Environment)",id:"create-experiment-using-pre-definedstored-environment",children:[{value:"Parameters",id:"parameters-1",children:[]},{value:"Code Example",id:"code-example-1",children:[]}]},{value:"List Experiment",id:"list-experiment",children:[{value:"Code Example",id:"code-example-2",children:[]}]},{value:"Get Experiment",id:"get-experiment",children:[{value:"Parameters",id:"parameters-2",children:[]},{value:"Code Example",id:"code-example-3",children:[]}]},{value:"Patch Experiment",id:"patch-experiment",children:[{value:"Parameters",id:"parameters-3",children:[]},{value:"Code Example",id:"code-example-4",children:[]},{value:"Delete Experiment",id:"delete-experiment",children:[]},{value:"Parameters",id:"parameters-4",children:[]},{value:"Code Example",id:"code-example-5",children:[]}]},{value:"List Experiment Log",id:"list-experiment-log",children:[{value:"Code Example",id:"code-example-6",children:[]}]},{value:"Get Experiment Log",id:"get-experiment-log",children:[{value:"Parameters",id:"parameters-5",children:[]},{value:"Code Example",id:"code-example-7",children:[]}]}],p={toc:c};function b(e){var n=e.components,t=Object(r.a)(e,["components"]);return Object(l.b)("wrapper",Object(a.a)({},p,t,{components:n,mdxType:"MDXLayout"}),Object(l.b)("h2",{id:"create-experiment-using-anonymousembedded-environment"},"Create Experiment (Using Anonymous/Embedded Environment)"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},"POST /api/v1/experiment\n")),Object(l.b)("h3",{id:"parameters"},"Parameters"),Object(l.b)("p",null,"Put ExperimentSpec in request body."),Object(l.b)("h4",{id:"experimentspec"},Object(l.b)("strong",{parentName:"h4"},"ExperimentSpec")),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"meta"),Object(l.b)("td",{parentName:"tr",align:null},"ExperimentMeta"),Object(l.b)("td",{parentName:"tr",align:null},"Meta data of the experiment template.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"environment"),Object(l.b)("td",{parentName:"tr",align:null},"EnvironmentSpec"),Object(l.b)("td",{parentName:"tr",align:null},"Environment of the experiment template.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"spec"),Object(l.b)("td",{parentName:"tr",align:null},"Map<String, ExperimentTaskSpec>"),Object(l.b)("td",{parentName:"tr",align:null},"Spec of pods.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"code"),Object(l.b)("td",{parentName:"tr",align:null},"CodeSpec"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment codespec.")))),Object(l.b)("h4",{id:"experimentmeta"},Object(l.b)("strong",{parentName:"h4"},"ExperimentMeta")),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"namespace"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment namespace.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"framework"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Experiemnt framework.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"cmd"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Command.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"envVars"),Object(l.b)("td",{parentName:"tr",align:null},"Map<String, String>"),Object(l.b)("td",{parentName:"tr",align:null},"Environmental variables.")))),Object(l.b)("h4",{id:"environmentspec"},Object(l.b)("strong",{parentName:"h4"},"EnvironmentSpec")),Object(l.b)("p",null,"There are two types of environment: Anonymous and Predefined."),Object(l.b)("ul",null,Object(l.b)("li",{parentName:"ul"},"Anonymous environment: only specify ",Object(l.b)("inlineCode",{parentName:"li"},"dockerImage")," in environment spec. The container will be built on the docker image."),Object(l.b)("li",{parentName:"ul"},"Embedded environment: specify ",Object(l.b)("inlineCode",{parentName:"li"},"name")," in environment spec. The container will be built on the existing environment (including dockerImage and kernalSpec).")),Object(l.b)("p",null,"See more details in ",Object(l.b)("a",{parentName:"p",href:"https://submarine.apache.org/docs/userDocs/api/environment"},"environment api"),"."),Object(l.b)("h4",{id:"experimenttaskspec"},Object(l.b)("strong",{parentName:"h4"},"ExperimentTaskSpec")),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"replicas"),Object(l.b)("td",{parentName:"tr",align:null},"Integer"),Object(l.b)("td",{parentName:"tr",align:null},"Numbers of replicas.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"resoureces"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Resouces of the task")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Task name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"image"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Image name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"cmd"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Command.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"envVars"),Object(l.b)("td",{parentName:"tr",align:null},"Map<String, String>"),Object(l.b)("td",{parentName:"tr",align:null},"Environmental variables.")))),Object(l.b)("h4",{id:"codespec"},Object(l.b)("strong",{parentName:"h4"},"CodeSpec")),Object(l.b)("p",null,"Currently only support pulling from github. HDFS, NFS and s3 are in development"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"syncMode"),Object(l.b)("td",{parentName:"tr",align:null},"String ","(","git","|","hdfs","|","nfs","|","s3",")"),Object(l.b)("td",{parentName:"tr",align:null},"sync mode of code spec.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"url"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"url of code spec.")))),Object(l.b)("h3",{id:"code-example"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("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')),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    "experimentId":"experiment_1626160071451_0002",\n    "name":"tf-mnist-json",\n    "uid":"5a6ec922-6c90-43d4-844f-039f6804ed36",\n    "status":"Accepted",\n    "acceptedTime":"2021-07-13T16:47:51.000+08:00",\n    "createdTime":null,\n    "runningTime":null,\n    "finishedTime":null,\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\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150",\n        "envVars":{"ENV_1":"ENV1"}\n      },\n      "environment":{\n        "name":null,\n        "dockerImage":null,\n        "kernelSpec":null,\n        "description":null,\n        "image":"apache/submarine:tf-mnist-with-summaries-1.0"\n      },\n      "spec":{\n        "Ps":{\n          "replicas":1,\n          "resources":"cpu\\u003d1,memory\\u003d1024M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"1024M","cpu":"1"}\n        },\n        "Worker":{\n          "replicas":1,\n          "resources":"cpu\\u003d1,memory\\u003d2048M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"2048M","cpu":"1"}\n        }\n      },\n      "code":null\n    }\n  },\n  "attributes":{}\n}\n')),Object(l.b)("h2",{id:"create-experiment-using-pre-definedstored-environment"},"Create Experiment (Using Pre-defined/Stored Environment)"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"POST /api/v1/experiment\n")),Object(l.b)("h3",{id:"parameters-1"},"Parameters"),Object(l.b)("p",null,"Put ExperimentSpec in request body."),Object(l.b)("h3",{id:"code-example-1"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("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')),Object(l.b)("p",null,'Above example assume environment "my-submarine-env" already exists in Submarine. Please refer Environment API Reference doc to ',Object(l.b)("a",{parentName:"p",href:"https://submarine.apache.org/docs/userDocs/api/environment"},"environment rest api"),"."),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    "experimentId":"experiment_1626160071451_0005",\n    "name":"tf-mnist-json",\n    "uid":"4944c603-0f21-49e5-826a-2ff820bb4d93",\n    "status":"Accepted",\n    "acceptedTime":"2021-07-13T16:57:27.000+08:00",\n    "createdTime":null,\n    "runningTime":null,\n    "finishedTime":null,\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\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150",\n        "envVars":{"ENV_1":"ENV1"}\n      },\n      "environment":{\n        "name":"my-submarine-env",\n        "dockerImage":null,\n        "kernelSpec":null,\n        "description":null,\n        "image":null\n      },\n      "spec":{\n        "Ps":{\n          "replicas":1,\n          "resources":"cpu\\u003d1,memory\\u003d1024M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"1024M","cpu":"1"}\n        },\n        "Worker":{\n          "replicas":1,\n          "resources":"cpu\\u003d1,memory\\u003d2048M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"2048M","cpu":"1"}\n        }\n      },\n      "code":null\n    }\n  },\n  "attributes":{}\n}\n')),Object(l.b)("h2",{id:"list-experiment"},"List Experiment"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"GET /api/v1/experiment\n")),Object(l.b)("h3",{id:"code-example-2"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/experiment\n")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":\n  [{\n    "experimentId":"experiment_1626160071451_0001",\n    "name":"newexperiment1",\n    "uid":"b895985c-411c-4e89-90e0-c60a2a8a4235",\n    "status":"Succeeded",\n    "acceptedTime":"2021-07-13T16:21:31.000+08:00",\n    "createdTime":"2021-07-13T16:21:31.000+08:00",\n    "runningTime":"2021-07-13T16:21:46.000+08:00",\n    "finishedTime":"2021-07-13T16:26:54.000+08:00",\n    "spec":{\n      "meta":{\n        "name":"newexperiment1",\n        "namespace":"default",\n        "framework":"TensorFlow",\n        "cmd":"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150",\n        "envVars":{"ENV1":"ENV1"}\n      },\n      "environment":{\n        "name":null,\n        "dockerImage":null,\n        "kernelSpec":null,\n        "description":null,\n        "image":"apache/submarine:tf-mnist-with-summaries-1.0"\n      },\n      "spec":{\n        "Ps":{\n          "replicas":1,\n          "resources":"cpu\\u003d1,memory\\u003d1024M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"1024M","cpu":"1"}\n        },\n        "Worker":{\n          "replicas":1,\n          "resources":"cpu\\u003d1,memory\\u003d1024M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"1024M","cpu":"1"}\n        }\n      },\n      "code":null\n    }\n  },\n  {\n    "experimentId":"experiment_1626160071451_0005",\n    "name":"tf-mnist-json",\n    "uid":"4944c603-0f21-49e5-826a-2ff820bb4d93",\n    "status":"Accepted",\n    "acceptedTime":"2021-07-13T16:57:27.000+08:00",\n    "createdTime":null,\n    "runningTime":null,\n    "finishedTime":null,\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\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150",\n        "envVars":{"ENV_1":"ENV1"}\n      },\n      "environment":{\n        "name":"my-submarine-env",\n        "dockerImage":null,\n        "kernelSpec":null,\n        "description":null,\n        "image":null\n      },\n      "spec":{\n        "Ps":{\n          "replicas":1,\n          "resources":"cpu\\u003d1,memory\\u003d1024M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"1024M","cpu":"1"}\n        },\n        "Worker":{\n          "replicas":1,\n          "resources":"cpu\\u003d1,memory\\u003d2048M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"2048M","cpu":"1"}\n        }\n      },\n      "code":null\n    }\n  }],\n  "attributes":{}\n}\n')),Object(l.b)("h2",{id:"get-experiment"},"Get Experiment"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"GET /api/v1/experiment/{id}\n")),Object(l.b)("h3",{id:"parameters-2"},"Parameters"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"In"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"id"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"path"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment id.")))),Object(l.b)("h3",{id:"code-example-3"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/experiment/experiment_1626160071451_0005\n")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    "experimentId":"experiment_1626160071451_0005",\n    "name":"tf-mnist-json",\n    "uid":"4944c603-0f21-49e5-826a-2ff820bb4d93",\n    "status":"Accepted",\n    "acceptedTime":"2021-07-13T16:57:27.000+08:00",\n    "createdTime":null,\n    "runningTime":null,\n    "finishedTime":null,\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\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150",\n        "envVars":{"ENV_1":"ENV1"}\n      },\n      "environment":{\n        "name":"my-submarine-env",\n        "dockerImage":null,\n        "kernelSpec":null,\n        "description":null,\n        "image":null\n      },\n      "spec":{\n        "Ps":{\n          "replicas":1,\n          "resources":"cpu\\u003d1,memory\\u003d1024M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"1024M","cpu":"1"}\n        },\n        "Worker":{\n          "replicas":1,\n          "resources":"cpu\\u003d1,memory\\u003d2048M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"2048M","cpu":"1"}\n        }\n      },\n      "code":null\n    }\n  },\n  "attributes":{}\n}\n')),Object(l.b)("h2",{id:"patch-experiment"},"Patch Experiment"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"PATCH /api/v1/experiment/{id}\n")),Object(l.b)("h3",{id:"parameters-3"},"Parameters"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"In"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"id"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"path"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment id.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"meta"),Object(l.b)("td",{parentName:"tr",align:null},"ExperimentMeta"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Meta data of the experiment template.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"environment"),Object(l.b)("td",{parentName:"tr",align:null},"EnvironmentSpec"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Environment of the experiment template.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"spec"),Object(l.b)("td",{parentName:"tr",align:null},"Map<String, ExperimentTaskSpec>"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Spec of pods.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"code"),Object(l.b)("td",{parentName:"tr",align:null},"CodeSpec"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"TODO")))),Object(l.b)("h3",{id:"code-example-4"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("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_1626160071451_0005\n')),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    "experimentId":"experiment_1626160071451_0005",\n    "name":"tf-mnist-json",\n    "uid":"4944c603-0f21-49e5-826a-2ff820bb4d93",\n    "status":"Accepted",\n    "acceptedTime":"2021-07-13T16:57:27.000+08:00",\n    "createdTime":null,\n    "runningTime":null,\n    "finishedTime":null,\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\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150",\n        "envVars":{"ENV_1":"ENV1"}\n      },\n      "environment":{\n        "name":null,\n        "dockerImage":null,\n        "kernelSpec":null,\n        "description":null,\n        "image":"apache/submarine:tf-mnist-with-summaries-1.0"\n      },\n      "spec":{\n        "Ps":{\n          "replicas":1,\n          "resources":"cpu\\u003d1,memory\\u003d1024M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"1024M","cpu":"1"}\n        },\n        "Worker":{\n          "replicas":2,\n          "resources":"cpu\\u003d1,memory\\u003d2048M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"2048M","cpu":"1"}\n        }\n      },\n      "code":null\n    }\n  },\n  "attributes":{}\n}\n')),Object(l.b)("h3",{id:"delete-experiment"},"Delete Experiment"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"DELETE /api/v1/experiment/{id}\n")),Object(l.b)("h3",{id:"parameters-4"},"Parameters"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"In"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"id"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"path"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment id.")))),Object(l.b)("h3",{id:"code-example-5"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},"curl -X DELETE http://127.0.0.1:32080/api/v1/experiment/experiment_1626160071451_0005\n")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    "experimentId":"experiment_1626160071451_0005",\n    "name":"tf-mnist-json",\n    "uid":"4944c603-0f21-49e5-826a-2ff820bb4d93",\n    "status":"Deleted",\n    "acceptedTime":null,\n    "createdTime":null,\n    "runningTime":null,\n    "finishedTime":null,\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\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150",\n        "envVars":{"ENV_1":"ENV1"}\n      },\n      "environment":{\n        "name":null,\n        "dockerImage":null,\n        "kernelSpec":null,\n        "description":null,\n        "image":"apache/submarine:tf-mnist-with-summaries-1.0"\n      },\n      "spec":{\n        "Ps":{\n          "replicas":1,\n          "resources":"cpu\\u003d1,memory\\u003d1024M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"1024M","cpu":"1"}\n        },\n        "Worker":{\n          "replicas":2,\n          "resources":"cpu\\u003d1,memory\\u003d2048M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"2048M","cpu":"1"}\n        }\n      },\n      "code":null\n    }\n  },\n  "attributes":{}\n}\n')),Object(l.b)("h2",{id:"list-experiment-log"},"List Experiment Log"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"GET /api/v1/experiment/logs\n")),Object(l.b)("h3",{id:"code-example-6"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/experiment/logs\n")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":\n  [{\n    "experimentId":"experiment_1626160071451_0001",\n    "logContent":\n    [{\n      "podName":"newexperiment1-ps-0",\n      "podLog":[]\n    },\n    {\n      "podName":"newexperiment1-worker-0",\n      "podLog":[]\n    }]\n  }],\n  "attributes":{}\n}\n')),Object(l.b)("h2",{id:"get-experiment-log"},"Get Experiment Log"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"GET /api/v1/experiment/logs/{id}\n")),Object(l.b)("h3",{id:"parameters-5"},"Parameters"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"In"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"id"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"path"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment id.")))),Object(l.b)("h3",{id:"code-example-7"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/experiment/logs/experiment_1626160071451_0001\n")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    "experimentId":"experiment_1626160071451_0001",\n    "logContent":\n    [{\n      "podName":"newexperiment1-ps-0",\n      "podLog":[]\n    },\n    {\n      "podName":"newexperiment1-worker-0",\n      "podLog":[]\n    }]\n  },\n  "attributes":{}\n}\n')))}b.isMDXComponent=!0}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[9],{194:function(e,n,t){"use strict";t.d(n,"a",(function(){return u})),t.d(n,"b",(function(){return d}));var a=t(0),r=t.n(a);function l(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function m(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function i(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?m(Object(t),!0).forEach((function(n){l(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):m(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function c(e,n){if(null==e)return{};var t,a,r=function(e,n){if(null==e)return{};var t,a,r={},l=Object.keys(e);for(a=0;a<l.length;a++)t=l[a],n.indexOf(t)>=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a<l.length;a++)t=l[a],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var p=r.a.createContext({}),b=function(e){var n=r.a.useContext(p),t=n;return e&&(t="function"==typeof e?e(n):i(i({},n),e)),t},u=function(e){var n=b(e.components);return r.a.createElement(p.Provider,{value:n},e.children)},s={inlineCode:"code",wrapper:function(e){var n=e.children;return r.a.createElement(r.a.Fragment,{},n)}},o=r.a.forwardRef((function(e,n){var t=e.components,a=e.mdxType,l=e.originalType,m=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),u=b(t),o=a,d=u["".concat(m,".").concat(o)]||u[o]||s[o]||l;return t?r.a.createElement(d,i(i({ref:n},p),{},{components:t})):r.a.createElement(d,i({ref:n},p))}));function d(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var l=t.length,m=new Array(l);m[0]=o;var i={};for(var c in n)hasOwnProperty.call(n,c)&&(i[c]=n[c]);i.originalType=e,i.mdxType="string"==typeof e?e:a,m[1]=i;for(var p=2;p<l;p++)m[p]=t[p];return r.a.createElement.apply(null,m)}return r.a.createElement.apply(null,t)}o.displayName="MDXCreateElement"},74:function(e,n,t){"use strict";t.r(n),t.d(n,"frontMatter",(function(){return m})),t.d(n,"metadata",(function(){return i})),t.d(n,"toc",(function(){return c})),t.d(n,"default",(function(){return b}));var a=t(3),r=t(7),l=(t(0),t(194)),m={title:"Experiment REST API"},i={unversionedId:"userDocs/api/experiment",id:"userDocs/api/experiment",isDocsHomePage:!1,title:"Experiment REST API",description:"\x3c!--",source:"@site/docs/userDocs/api/experiment.md",slug:"/userDocs/api/experiment",permalink:"/docs/next/userDocs/api/experiment",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/userDocs/api/experiment.md",version:"current",sidebar:"docs",previous:{title:"Jupyter Notebook",permalink:"/docs/next/gettingStarted/notebook"},next:{title:"Environment REST API",permalink:"/docs/next/userDocs/api/environment"}},c=[{value:"Create Experiment (Using Anonymous/Embedded Environment)",id:"create-experiment-using-anonymousembedded-environment",children:[{value:"Parameters",id:"parameters",children:[]},{value:"Code Example",id:"code-example",children:[]}]},{value:"Create Experiment (Using Pre-defined/Stored Environment)",id:"create-experiment-using-pre-definedstored-environment",children:[{value:"Parameters",id:"parameters-1",children:[]},{value:"Code Example",id:"code-example-1",children:[]}]},{value:"List Experiment",id:"list-experiment",children:[{value:"Code Example",id:"code-example-2",children:[]}]},{value:"Get Experiment",id:"get-experiment",children:[{value:"Parameters",id:"parameters-2",children:[]},{value:"Code Example",id:"code-example-3",children:[]}]},{value:"Patch Experiment",id:"patch-experiment",children:[{value:"Parameters",id:"parameters-3",children:[]},{value:"Code Example",id:"code-example-4",children:[]},{value:"Delete Experiment",id:"delete-experiment",children:[]},{value:"Parameters",id:"parameters-4",children:[]},{value:"Code Example",id:"code-example-5",children:[]}]},{value:"List Experiment Log",id:"list-experiment-log",children:[{value:"Code Example",id:"code-example-6",children:[]}]},{value:"Get Experiment Log",id:"get-experiment-log",children:[{value:"Parameters",id:"parameters-5",children:[]},{value:"Code Example",id:"code-example-7",children:[]}]}],p={toc:c};function b(e){var n=e.components,t=Object(r.a)(e,["components"]);return Object(l.b)("wrapper",Object(a.a)({},p,t,{components:n,mdxType:"MDXLayout"}),Object(l.b)("h2",{id:"create-experiment-using-anonymousembedded-environment"},"Create Experiment (Using Anonymous/Embedded Environment)"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},"POST /api/v1/experiment\n")),Object(l.b)("h3",{id:"parameters"},"Parameters"),Object(l.b)("p",null,"Put ExperimentSpec in request body."),Object(l.b)("h4",{id:"experimentspec"},Object(l.b)("strong",{parentName:"h4"},"ExperimentSpec")),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"meta"),Object(l.b)("td",{parentName:"tr",align:null},"ExperimentMeta"),Object(l.b)("td",{parentName:"tr",align:null},"Meta data of the experiment template.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"environment"),Object(l.b)("td",{parentName:"tr",align:null},"EnvironmentSpec"),Object(l.b)("td",{parentName:"tr",align:null},"Environment of the experiment template.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"spec"),Object(l.b)("td",{parentName:"tr",align:null},"Map<String, ExperimentTaskSpec>"),Object(l.b)("td",{parentName:"tr",align:null},"Spec of pods.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"code"),Object(l.b)("td",{parentName:"tr",align:null},"CodeSpec"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment codespec.")))),Object(l.b)("h4",{id:"experimentmeta"},Object(l.b)("strong",{parentName:"h4"},"ExperimentMeta")),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"namespace"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment namespace.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"framework"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Experiemnt framework.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"cmd"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Command.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"envVars"),Object(l.b)("td",{parentName:"tr",align:null},"Map<String, String>"),Object(l.b)("td",{parentName:"tr",align:null},"Environmental variables.")))),Object(l.b)("h4",{id:"environmentspec"},Object(l.b)("strong",{parentName:"h4"},"EnvironmentSpec")),Object(l.b)("p",null,"There are two types of environment: Anonymous and Predefined."),Object(l.b)("ul",null,Object(l.b)("li",{parentName:"ul"},"Anonymous environment: only specify ",Object(l.b)("inlineCode",{parentName:"li"},"dockerImage")," in environment spec. The container will be built on the docker image."),Object(l.b)("li",{parentName:"ul"},"Embedded environment: specify ",Object(l.b)("inlineCode",{parentName:"li"},"name")," in environment spec. The container will be built on the existing environment (including dockerImage and kernalSpec).")),Object(l.b)("p",null,"See more details in ",Object(l.b)("a",{parentName:"p",href:"https://submarine.apache.org/docs/userDocs/api/environment"},"environment api"),"."),Object(l.b)("h4",{id:"experimenttaskspec"},Object(l.b)("strong",{parentName:"h4"},"ExperimentTaskSpec")),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"replicas"),Object(l.b)("td",{parentName:"tr",align:null},"Integer"),Object(l.b)("td",{parentName:"tr",align:null},"Numbers of replicas.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"resoureces"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Resouces of the task")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Task name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"image"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Image name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"cmd"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Command.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"envVars"),Object(l.b)("td",{parentName:"tr",align:null},"Map<String, String>"),Object(l.b)("td",{parentName:"tr",align:null},"Environmental variables.")))),Object(l.b)("h4",{id:"codespec"},Object(l.b)("strong",{parentName:"h4"},"CodeSpec")),Object(l.b)("p",null,"Currently only support pulling from github. HDFS, NFS and s3 are in development"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"syncMode"),Object(l.b)("td",{parentName:"tr",align:null},"String ","(","git","|","hdfs","|","nfs","|","s3",")"),Object(l.b)("td",{parentName:"tr",align:null},"sync mode of code spec.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"url"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"url of code spec.")))),Object(l.b)("h3",{id:"code-example"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("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')),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    "experimentId":"experiment_1626160071451_0002",\n    "name":"tf-mnist-json",\n    "uid":"5a6ec922-6c90-43d4-844f-039f6804ed36",\n    "status":"Accepted",\n    "acceptedTime":"2021-07-13T16:47:51.000+08:00",\n    "createdTime":null,\n    "runningTime":null,\n    "finishedTime":null,\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\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150",\n        "envVars":{"ENV_1":"ENV1"}\n      },\n      "environment":{\n        "name":null,\n        "dockerImage":null,\n        "kernelSpec":null,\n        "description":null,\n        "image":"apache/submarine:tf-mnist-with-summaries-1.0"\n      },\n      "spec":{\n        "Ps":{\n          "replicas":1,\n          "resources":"cpu\\u003d1,memory\\u003d1024M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"1024M","cpu":"1"}\n        },\n        "Worker":{\n          "replicas":1,\n          "resources":"cpu\\u003d1,memory\\u003d2048M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"2048M","cpu":"1"}\n        }\n      },\n      "code":null\n    }\n  },\n  "attributes":{}\n}\n')),Object(l.b)("h2",{id:"create-experiment-using-pre-definedstored-environment"},"Create Experiment (Using Pre-defined/Stored Environment)"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"POST /api/v1/experiment\n")),Object(l.b)("h3",{id:"parameters-1"},"Parameters"),Object(l.b)("p",null,"Put ExperimentSpec in request body."),Object(l.b)("h3",{id:"code-example-1"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("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')),Object(l.b)("p",null,'Above example assume environment "my-submarine-env" already exists in Submarine. Please refer Environment API Reference doc to ',Object(l.b)("a",{parentName:"p",href:"https://submarine.apache.org/docs/userDocs/api/environment"},"environment rest api"),"."),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    "experimentId":"experiment_1626160071451_0005",\n    "name":"tf-mnist-json",\n    "uid":"4944c603-0f21-49e5-826a-2ff820bb4d93",\n    "status":"Accepted",\n    "acceptedTime":"2021-07-13T16:57:27.000+08:00",\n    "createdTime":null,\n    "runningTime":null,\n    "finishedTime":null,\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\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150",\n        "envVars":{"ENV_1":"ENV1"}\n      },\n      "environment":{\n        "name":"my-submarine-env",\n        "dockerImage":null,\n        "kernelSpec":null,\n        "description":null,\n        "image":null\n      },\n      "spec":{\n        "Ps":{\n          "replicas":1,\n          "resources":"cpu\\u003d1,memory\\u003d1024M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"1024M","cpu":"1"}\n        },\n        "Worker":{\n          "replicas":1,\n          "resources":"cpu\\u003d1,memory\\u003d2048M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"2048M","cpu":"1"}\n        }\n      },\n      "code":null\n    }\n  },\n  "attributes":{}\n}\n')),Object(l.b)("h2",{id:"list-experiment"},"List Experiment"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"GET /api/v1/experiment\n")),Object(l.b)("h3",{id:"code-example-2"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/experiment\n")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":\n  [{\n    "experimentId":"experiment_1626160071451_0001",\n    "name":"newexperiment1",\n    "uid":"b895985c-411c-4e89-90e0-c60a2a8a4235",\n    "status":"Succeeded",\n    "acceptedTime":"2021-07-13T16:21:31.000+08:00",\n    "createdTime":"2021-07-13T16:21:31.000+08:00",\n    "runningTime":"2021-07-13T16:21:46.000+08:00",\n    "finishedTime":"2021-07-13T16:26:54.000+08:00",\n    "spec":{\n      "meta":{\n        "name":"newexperiment1",\n        "namespace":"default",\n        "framework":"TensorFlow",\n        "cmd":"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150",\n        "envVars":{"ENV1":"ENV1"}\n      },\n      "environment":{\n        "name":null,\n        "dockerImage":null,\n        "kernelSpec":null,\n        "description":null,\n        "image":"apache/submarine:tf-mnist-with-summaries-1.0"\n      },\n      "spec":{\n        "Ps":{\n          "replicas":1,\n          "resources":"cpu\\u003d1,memory\\u003d1024M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"1024M","cpu":"1"}\n        },\n        "Worker":{\n          "replicas":1,\n          "resources":"cpu\\u003d1,memory\\u003d1024M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"1024M","cpu":"1"}\n        }\n      },\n      "code":null\n    }\n  },\n  {\n    "experimentId":"experiment_1626160071451_0005",\n    "name":"tf-mnist-json",\n    "uid":"4944c603-0f21-49e5-826a-2ff820bb4d93",\n    "status":"Accepted",\n    "acceptedTime":"2021-07-13T16:57:27.000+08:00",\n    "createdTime":null,\n    "runningTime":null,\n    "finishedTime":null,\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\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150",\n        "envVars":{"ENV_1":"ENV1"}\n      },\n      "environment":{\n        "name":"my-submarine-env",\n        "dockerImage":null,\n        "kernelSpec":null,\n        "description":null,\n        "image":null\n      },\n      "spec":{\n        "Ps":{\n          "replicas":1,\n          "resources":"cpu\\u003d1,memory\\u003d1024M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"1024M","cpu":"1"}\n        },\n        "Worker":{\n          "replicas":1,\n          "resources":"cpu\\u003d1,memory\\u003d2048M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"2048M","cpu":"1"}\n        }\n      },\n      "code":null\n    }\n  }],\n  "attributes":{}\n}\n')),Object(l.b)("h2",{id:"get-experiment"},"Get Experiment"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"GET /api/v1/experiment/{id}\n")),Object(l.b)("h3",{id:"parameters-2"},"Parameters"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"In"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"id"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"path"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment id.")))),Object(l.b)("h3",{id:"code-example-3"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/experiment/experiment_1626160071451_0005\n")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    "experimentId":"experiment_1626160071451_0005",\n    "name":"tf-mnist-json",\n    "uid":"4944c603-0f21-49e5-826a-2ff820bb4d93",\n    "status":"Accepted",\n    "acceptedTime":"2021-07-13T16:57:27.000+08:00",\n    "createdTime":null,\n    "runningTime":null,\n    "finishedTime":null,\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\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150",\n        "envVars":{"ENV_1":"ENV1"}\n      },\n      "environment":{\n        "name":"my-submarine-env",\n        "dockerImage":null,\n        "kernelSpec":null,\n        "description":null,\n        "image":null\n      },\n      "spec":{\n        "Ps":{\n          "replicas":1,\n          "resources":"cpu\\u003d1,memory\\u003d1024M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"1024M","cpu":"1"}\n        },\n        "Worker":{\n          "replicas":1,\n          "resources":"cpu\\u003d1,memory\\u003d2048M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"2048M","cpu":"1"}\n        }\n      },\n      "code":null\n    }\n  },\n  "attributes":{}\n}\n')),Object(l.b)("h2",{id:"patch-experiment"},"Patch Experiment"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"PATCH /api/v1/experiment/{id}\n")),Object(l.b)("h3",{id:"parameters-3"},"Parameters"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"In"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"id"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"path"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment id.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"meta"),Object(l.b)("td",{parentName:"tr",align:null},"ExperimentMeta"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Meta data of the experiment template.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"environment"),Object(l.b)("td",{parentName:"tr",align:null},"EnvironmentSpec"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Environment of the experiment template.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"spec"),Object(l.b)("td",{parentName:"tr",align:null},"Map<String, ExperimentTaskSpec>"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Spec of pods.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"code"),Object(l.b)("td",{parentName:"tr",align:null},"CodeSpec"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"TODO")))),Object(l.b)("h3",{id:"code-example-4"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("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_1626160071451_0005\n')),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    "experimentId":"experiment_1626160071451_0005",\n    "name":"tf-mnist-json",\n    "uid":"4944c603-0f21-49e5-826a-2ff820bb4d93",\n    "status":"Accepted",\n    "acceptedTime":"2021-07-13T16:57:27.000+08:00",\n    "createdTime":null,\n    "runningTime":null,\n    "finishedTime":null,\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\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150",\n        "envVars":{"ENV_1":"ENV1"}\n      },\n      "environment":{\n        "name":null,\n        "dockerImage":null,\n        "kernelSpec":null,\n        "description":null,\n        "image":"apache/submarine:tf-mnist-with-summaries-1.0"\n      },\n      "spec":{\n        "Ps":{\n          "replicas":1,\n          "resources":"cpu\\u003d1,memory\\u003d1024M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"1024M","cpu":"1"}\n        },\n        "Worker":{\n          "replicas":2,\n          "resources":"cpu\\u003d1,memory\\u003d2048M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"2048M","cpu":"1"}\n        }\n      },\n      "code":null\n    }\n  },\n  "attributes":{}\n}\n')),Object(l.b)("h3",{id:"delete-experiment"},"Delete Experiment"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"DELETE /api/v1/experiment/{id}\n")),Object(l.b)("h3",{id:"parameters-4"},"Parameters"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"In"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"id"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"path"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment id.")))),Object(l.b)("h3",{id:"code-example-5"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},"curl -X DELETE http://127.0.0.1:32080/api/v1/experiment/experiment_1626160071451_0005\n")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    "experimentId":"experiment_1626160071451_0005",\n    "name":"tf-mnist-json",\n    "uid":"4944c603-0f21-49e5-826a-2ff820bb4d93",\n    "status":"Deleted",\n    "acceptedTime":null,\n    "createdTime":null,\n    "runningTime":null,\n    "finishedTime":null,\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\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150",\n        "envVars":{"ENV_1":"ENV1"}\n      },\n      "environment":{\n        "name":null,\n        "dockerImage":null,\n        "kernelSpec":null,\n        "description":null,\n        "image":"apache/submarine:tf-mnist-with-summaries-1.0"\n      },\n      "spec":{\n        "Ps":{\n          "replicas":1,\n          "resources":"cpu\\u003d1,memory\\u003d1024M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"1024M","cpu":"1"}\n        },\n        "Worker":{\n          "replicas":2,\n          "resources":"cpu\\u003d1,memory\\u003d2048M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"2048M","cpu":"1"}\n        }\n      },\n      "code":null\n    }\n  },\n  "attributes":{}\n}\n')),Object(l.b)("h2",{id:"list-experiment-log"},"List Experiment Log"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"GET /api/v1/experiment/logs\n")),Object(l.b)("h3",{id:"code-example-6"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/experiment/logs\n")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":\n  [{\n    "experimentId":"experiment_1626160071451_0001",\n    "logContent":\n    [{\n      "podName":"newexperiment1-ps-0",\n      "podLog":[]\n    },\n    {\n      "podName":"newexperiment1-worker-0",\n      "podLog":[]\n    }]\n  }],\n  "attributes":{}\n}\n')),Object(l.b)("h2",{id:"get-experiment-log"},"Get Experiment Log"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"GET /api/v1/experiment/logs/{id}\n")),Object(l.b)("h3",{id:"parameters-5"},"Parameters"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"In"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"id"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"path"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment id.")))),Object(l.b)("h3",{id:"code-example-7"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/experiment/logs/experiment_1626160071451_0001\n")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    "experimentId":"experiment_1626160071451_0001",\n    "logContent":\n    [{\n      "podName":"newexperiment1-ps-0",\n      "podLog":[]\n    },\n    {\n      "podName":"newexperiment1-worker-0",\n      "podLog":[]\n    }]\n  },\n  "attributes":{}\n}\n')))}b.isMDXComponent=!0}}]);
\ No newline at end of file
diff --git a/11fdf8a8.cd5da2d5.js b/11fdf8a8.f352bfda.js
similarity index 98%
rename from 11fdf8a8.cd5da2d5.js
rename to 11fdf8a8.f352bfda.js
index ec72a32..6546584 100644
--- a/11fdf8a8.cd5da2d5.js
+++ b/11fdf8a8.f352bfda.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[10],{209:function(e,t,n){"use strict";n.d(t,"a",(function(){return u})),n.d(t,"b",(function(){return h}));var a=n(0),r=n.n(a);function l(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){l(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},l=Object.keys(e);for(a=0;a<l.length;a++)n=l[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a<l.length;a++)n=l[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var b=r.a.createContext({}),c=function(e){var t=r.a.useContext(b),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},u=function(e){var t=c(e.components);return r.a.createElement(b.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},m=r.a.forwardRef((function(e,t){var n=e.components,a=e.mdxType,l=e.originalType,i=e.parentName,b=s(e,["components","mdxType","originalType","parentName"]),u=c(n),m=a,h=u["".concat(i,".").concat(m)]||u[m]||p[m]||l;return n?r.a.createElement(h,o(o({ref:t},b),{},{components:n})):r.a.createElement(h,o({ref:t},b))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var l=n.length,i=new Array(l);i[0]=m;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o.mdxType="string"==typeof e?e:a,i[1]=o;for(var b=2;b<l;b++)i[b]=n[b];return r.a.createElement.apply(null,i)}return r.a.createElement.apply(null,n)}m.displayName="MDXCreateElement"},75:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return i})),n.d(t,"metadata",(function(){return o})),n.d(t,"toc",(function(){return s})),n.d(t,"default",(function(){return c}));var a=n(3),r=n(7),l=(n(0),n(209)),i={title:"Deploy Submarine with Helm"},o={unversionedId:"gettingStarted/helm",id:"gettingStarted/helm",isDocsHomePage:!1,title:"Deploy Submarine with Helm",description:"\x3c!--",source:"@site/docs/gettingStarted/helm.md",slug:"/gettingStarted/helm",permalink:"/docs/next/gettingStarted/helm",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/gettingStarted/helm.md",version:"current"},s=[{value:"Prerequisite",id:"prerequisite",children:[]},{value:"Deploy Submarine to Kubernetes",id:"deploy-submarine-to-kubernetes",children:[]},{value:"Verify installation",id:"verify-installation",children:[]},{value:"Uninstall Submarine",id:"uninstall-submarine",children:[]},{value:"Volume Type",id:"volume-type",children:[{value:"Access to Submarine Server",id:"access-to-submarine-server",children:[]}]}],b={toc:s};function c(e){var t=e.components,n=Object(r.a)(e,["components"]);return Object(l.b)("wrapper",Object(a.a)({},b,n,{components:t,mdxType:"MDXLayout"}),Object(l.b)("h1",{id:"deploy-submarine-with-helm"},"Deploy Submarine with Helm"),Object(l.b)("p",null,"With the help of ",Object(l.b)("a",{parentName:"p",href:"https://helm.sh/"},"Helm"),", users can deploy Submarine service to Kubernetes in one command.\nCheck ",Object(l.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/tree/master/helm-charts/submarine"},"helm-charts/submarine")," for more details."),Object(l.b)("h2",{id:"prerequisite"},"Prerequisite"),Object(l.b)("ul",null,Object(l.b)("li",{parentName:"ul"},"Install Helm v3: ",Object(l.b)("a",{parentName:"li",href:"https://helm.sh/docs/intro/install/"},"https://helm.sh/docs/intro/install/")," "),Object(l.b)("li",{parentName:"ul"},"A Kubernetes environment (ex: minikube or kind)")),Object(l.b)("h2",{id:"deploy-submarine-to-kubernetes"},"Deploy Submarine to Kubernetes"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-bash"},"git clone https://github.com/apache/submarine.git\ncd submarine\nhelm install submarine ./helm-charts/submarine\n")),Object(l.b)("ul",null,Object(l.b)("li",{parentName:"ul"},'With these commands, the Submarine service will be deployed to the "default" namespace.'),Object(l.b)("li",{parentName:"ul"},"The first time installation will take about 10 mins because the docker images are pulled from ",Object(l.b)("a",{parentName:"li",href:"https://hub.docker.com/r/apache/submarine"},"apache/submarine")," on DockerHub.")),Object(l.b)("h2",{id:"verify-installation"},"Verify installation"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-bash"},"kubectl get all\n")),Object(l.b)("ul",null,Object(l.b)("li",{parentName:"ul"},"TODO: screenshot")),Object(l.b)("h2",{id:"uninstall-submarine"},"Uninstall Submarine"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-bash"},"helm uninstall submarine\n\n# Check\nhelm ls \n")),Object(l.b)("h1",{id:"helm-chart-configuation-valuesyaml"},"Helm chart configuation (values.yaml)"),Object(l.b)("h2",{id:"volume-type"},"Volume Type"),Object(l.b)("p",null,"Submarine can support various ",Object(l.b)("a",{parentName:"p",href:"https://kubernetes.io/docs/concepts/storage/volumes/#nfs"},"volume types"),", currently including hostPath (default) and NFS. It can be easily configured in the ",Object(l.b)("inlineCode",{parentName:"p"},"./helm-charts/submarine/values.yaml"),", or you can override the default values in ",Object(l.b)("inlineCode",{parentName:"p"},"values.yaml")," by ",Object(l.b)("a",{parentName:"p",href:"https://helm.sh/docs/helm/helm_install/"},"helm CLI"),"."),Object(l.b)("h4",{id:"hostpath"},"hostPath"),Object(l.b)("ul",null,Object(l.b)("li",{parentName:"ul"},"In hostPath, you can store data directly in your node."),Object(l.b)("li",{parentName:"ul"},"Usage:",Object(l.b)("ol",{parentName:"li"},Object(l.b)("li",{parentName:"ol"},"Configure setting in ",Object(l.b)("inlineCode",{parentName:"li"},"./helm-charts/submarine/values.yaml"),"."),Object(l.b)("li",{parentName:"ol"},"To enable hostPath storage, set ",Object(l.b)("inlineCode",{parentName:"li"},".storage.type")," to ",Object(l.b)("inlineCode",{parentName:"li"},"host"),"."),Object(l.b)("li",{parentName:"ol"},"To set the root path for your storage, set ",Object(l.b)("inlineCode",{parentName:"li"},".storage.host.root")," to ",Object(l.b)("inlineCode",{parentName:"li"},"<any-path>")))),Object(l.b)("li",{parentName:"ul"},"Example:",Object(l.b)("pre",{parentName:"li"},Object(l.b)("code",{parentName:"pre",className:"language-yaml"},"# ./helm-charts/submarine/values.yaml\nstorage:\n  type: host\n  host:\n    root: /tmp\n")))),Object(l.b)("h4",{id:"nfs-network-file-system"},"NFS (Network File System)"),Object(l.b)("ul",null,Object(l.b)("li",{parentName:"ul"},"In NFS, it allows multiple clients to access a shared space."),Object(l.b)("li",{parentName:"ul"},"Prerequisite:",Object(l.b)("ol",{parentName:"li"},Object(l.b)("li",{parentName:"ol"},"A pre-existing NFS server. You have two options.",Object(l.b)("ol",{parentName:"li"},Object(l.b)("li",{parentName:"ol"},"Create NFS server",Object(l.b)("pre",{parentName:"li"},Object(l.b)("code",{parentName:"pre",className:"language-bash"},"kubectl create -f ./dev-support/nfs-server/nfs-server.yaml\n")),"It will create a nfs-server pod in kubernetes cluster, and expose nfs-server ip at ",Object(l.b)("inlineCode",{parentName:"li"},"10.96.0.2")),Object(l.b)("li",{parentName:"ol"},"Use your own NFS server"))),Object(l.b)("li",{parentName:"ol"},"Install NFS dependencies in your nodes",Object(l.b)("ul",{parentName:"li"},Object(l.b)("li",{parentName:"ul"},"Ubuntu",Object(l.b)("pre",{parentName:"li"},Object(l.b)("code",{parentName:"pre",className:"language-bash"},"apt-get install -y nfs-common\n"))),Object(l.b)("li",{parentName:"ul"},"CentOS",Object(l.b)("pre",{parentName:"li"},Object(l.b)("code",{parentName:"pre",className:"language-bash"},"yum install nfs-util\n"))))))),Object(l.b)("li",{parentName:"ul"},"Usage:",Object(l.b)("ol",{parentName:"li"},Object(l.b)("li",{parentName:"ol"},"Configure setting in ",Object(l.b)("inlineCode",{parentName:"li"},"./helm-charts/submarine/values.yaml"),"."),Object(l.b)("li",{parentName:"ol"},"To enable NFS storage, set ",Object(l.b)("inlineCode",{parentName:"li"},".storage.type")," to ",Object(l.b)("inlineCode",{parentName:"li"},"nfs"),"."),Object(l.b)("li",{parentName:"ol"},"To set the ip for NFS server, set ",Object(l.b)("inlineCode",{parentName:"li"},".storage.nfs.ip")," to ",Object(l.b)("inlineCode",{parentName:"li"},"<any-ip>")))),Object(l.b)("li",{parentName:"ul"},"Example:",Object(l.b)("pre",{parentName:"li"},Object(l.b)("code",{parentName:"pre",className:"language-yaml"},"# ./helm-charts/submarine/values.yaml\nstorage:\n  type: nfs\n  nfs:\n    ip: 10.96.0.2\n")))),Object(l.b)("h3",{id:"access-to-submarine-server"},"Access to Submarine Server"),Object(l.b)("p",null,"Submarine server by default expose 8080 port within K8s cluster. After Submarine v0.5\nuses Traefik as reverse-proxy by default. If you don't want to\nuse Traefik, you can modify below value to ",Object(l.b)("strong",{parentName:"p"},Object(l.b)("em",{parentName:"strong"},"false"))," in ",Object(l.b)("inlineCode",{parentName:"p"},"./helm-charts/submarine/values.yaml"),"."),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-yaml"},"# Use Traefik by default\ntraefik:\n  enabled: true\n")),Object(l.b)("p",null,"To access the server from outside of the cluster, we use Traefik ingress controller and\nNodePort for external access.\\\nPlease refer to ",Object(l.b)("inlineCode",{parentName:"p"},"./helm-charts/submarine/charts/traefik/values.yaml")," and ",Object(l.b)("a",{parentName:"p",href:"https://docs.traefik.io/"},"Traefik docs"),"\nfor more details if you want to customize the default value for Traefik."),Object(l.b)("p",null,Object(l.b)("em",{parentName:"p"},"Notice:"),"\nIf you use ",Object(l.b)("inlineCode",{parentName:"p"},"kind")," to run local Kubernetes cluster,\nplease refer to this ",Object(l.b)("a",{parentName:"p",href:"https://kind.sigs.k8s.io/docs/user/configuration/#extra-port-mappings"},"docs"),'\nand set the configuration "extraPortMappings" when creating the k8s cluster.'),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"kind: Cluster\napiVersion: kind.x-k8s.io/v1alpha4\nnodes:\n- role: control-plane\n  extraPortMappings:\n  - containerPort: 32080\n    hostPort: [the port you want to access]\n")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"# Use nodePort and Traefik ingress controller by default.\n# To access the submarine server, open the following URL in your browser.\nhttp://127.0.0.1:32080\n")),Object(l.b)("p",null,"If minikube is installed, use the following command to find the URL to the Submarine server."),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"$ minikube service submarine-traefik --url\n")))}c.isMDXComponent=!0}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[10],{194:function(e,t,n){"use strict";n.d(t,"a",(function(){return u})),n.d(t,"b",(function(){return h}));var a=n(0),r=n.n(a);function l(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){l(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},l=Object.keys(e);for(a=0;a<l.length;a++)n=l[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a<l.length;a++)n=l[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var b=r.a.createContext({}),c=function(e){var t=r.a.useContext(b),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},u=function(e){var t=c(e.components);return r.a.createElement(b.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},m=r.a.forwardRef((function(e,t){var n=e.components,a=e.mdxType,l=e.originalType,i=e.parentName,b=s(e,["components","mdxType","originalType","parentName"]),u=c(n),m=a,h=u["".concat(i,".").concat(m)]||u[m]||p[m]||l;return n?r.a.createElement(h,o(o({ref:t},b),{},{components:n})):r.a.createElement(h,o({ref:t},b))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var l=n.length,i=new Array(l);i[0]=m;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o.mdxType="string"==typeof e?e:a,i[1]=o;for(var b=2;b<l;b++)i[b]=n[b];return r.a.createElement.apply(null,i)}return r.a.createElement.apply(null,n)}m.displayName="MDXCreateElement"},75:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return i})),n.d(t,"metadata",(function(){return o})),n.d(t,"toc",(function(){return s})),n.d(t,"default",(function(){return c}));var a=n(3),r=n(7),l=(n(0),n(194)),i={title:"Deploy Submarine with Helm"},o={unversionedId:"gettingStarted/helm",id:"gettingStarted/helm",isDocsHomePage:!1,title:"Deploy Submarine with Helm",description:"\x3c!--",source:"@site/docs/gettingStarted/helm.md",slug:"/gettingStarted/helm",permalink:"/docs/next/gettingStarted/helm",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/gettingStarted/helm.md",version:"current"},s=[{value:"Prerequisite",id:"prerequisite",children:[]},{value:"Deploy Submarine to Kubernetes",id:"deploy-submarine-to-kubernetes",children:[]},{value:"Verify installation",id:"verify-installation",children:[]},{value:"Uninstall Submarine",id:"uninstall-submarine",children:[]},{value:"Volume Type",id:"volume-type",children:[{value:"Access to Submarine Server",id:"access-to-submarine-server",children:[]}]}],b={toc:s};function c(e){var t=e.components,n=Object(r.a)(e,["components"]);return Object(l.b)("wrapper",Object(a.a)({},b,n,{components:t,mdxType:"MDXLayout"}),Object(l.b)("h1",{id:"deploy-submarine-with-helm"},"Deploy Submarine with Helm"),Object(l.b)("p",null,"With the help of ",Object(l.b)("a",{parentName:"p",href:"https://helm.sh/"},"Helm"),", users can deploy Submarine service to Kubernetes in one command.\nCheck ",Object(l.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/tree/master/helm-charts/submarine"},"helm-charts/submarine")," for more details."),Object(l.b)("h2",{id:"prerequisite"},"Prerequisite"),Object(l.b)("ul",null,Object(l.b)("li",{parentName:"ul"},"Install Helm v3: ",Object(l.b)("a",{parentName:"li",href:"https://helm.sh/docs/intro/install/"},"https://helm.sh/docs/intro/install/")," "),Object(l.b)("li",{parentName:"ul"},"A Kubernetes environment (ex: minikube or kind)")),Object(l.b)("h2",{id:"deploy-submarine-to-kubernetes"},"Deploy Submarine to Kubernetes"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-bash"},"git clone https://github.com/apache/submarine.git\ncd submarine\nhelm install submarine ./helm-charts/submarine\n")),Object(l.b)("ul",null,Object(l.b)("li",{parentName:"ul"},'With these commands, the Submarine service will be deployed to the "default" namespace.'),Object(l.b)("li",{parentName:"ul"},"The first time installation will take about 10 mins because the docker images are pulled from ",Object(l.b)("a",{parentName:"li",href:"https://hub.docker.com/r/apache/submarine"},"apache/submarine")," on DockerHub.")),Object(l.b)("h2",{id:"verify-installation"},"Verify installation"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-bash"},"kubectl get all\n")),Object(l.b)("ul",null,Object(l.b)("li",{parentName:"ul"},"TODO: screenshot")),Object(l.b)("h2",{id:"uninstall-submarine"},"Uninstall Submarine"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-bash"},"helm uninstall submarine\n\n# Check\nhelm ls \n")),Object(l.b)("h1",{id:"helm-chart-configuation-valuesyaml"},"Helm chart configuation (values.yaml)"),Object(l.b)("h2",{id:"volume-type"},"Volume Type"),Object(l.b)("p",null,"Submarine can support various ",Object(l.b)("a",{parentName:"p",href:"https://kubernetes.io/docs/concepts/storage/volumes/#nfs"},"volume types"),", currently including hostPath (default) and NFS. It can be easily configured in the ",Object(l.b)("inlineCode",{parentName:"p"},"./helm-charts/submarine/values.yaml"),", or you can override the default values in ",Object(l.b)("inlineCode",{parentName:"p"},"values.yaml")," by ",Object(l.b)("a",{parentName:"p",href:"https://helm.sh/docs/helm/helm_install/"},"helm CLI"),"."),Object(l.b)("h4",{id:"hostpath"},"hostPath"),Object(l.b)("ul",null,Object(l.b)("li",{parentName:"ul"},"In hostPath, you can store data directly in your node."),Object(l.b)("li",{parentName:"ul"},"Usage:",Object(l.b)("ol",{parentName:"li"},Object(l.b)("li",{parentName:"ol"},"Configure setting in ",Object(l.b)("inlineCode",{parentName:"li"},"./helm-charts/submarine/values.yaml"),"."),Object(l.b)("li",{parentName:"ol"},"To enable hostPath storage, set ",Object(l.b)("inlineCode",{parentName:"li"},".storage.type")," to ",Object(l.b)("inlineCode",{parentName:"li"},"host"),"."),Object(l.b)("li",{parentName:"ol"},"To set the root path for your storage, set ",Object(l.b)("inlineCode",{parentName:"li"},".storage.host.root")," to ",Object(l.b)("inlineCode",{parentName:"li"},"<any-path>")))),Object(l.b)("li",{parentName:"ul"},"Example:",Object(l.b)("pre",{parentName:"li"},Object(l.b)("code",{parentName:"pre",className:"language-yaml"},"# ./helm-charts/submarine/values.yaml\nstorage:\n  type: host\n  host:\n    root: /tmp\n")))),Object(l.b)("h4",{id:"nfs-network-file-system"},"NFS (Network File System)"),Object(l.b)("ul",null,Object(l.b)("li",{parentName:"ul"},"In NFS, it allows multiple clients to access a shared space."),Object(l.b)("li",{parentName:"ul"},"Prerequisite:",Object(l.b)("ol",{parentName:"li"},Object(l.b)("li",{parentName:"ol"},"A pre-existing NFS server. You have two options.",Object(l.b)("ol",{parentName:"li"},Object(l.b)("li",{parentName:"ol"},"Create NFS server",Object(l.b)("pre",{parentName:"li"},Object(l.b)("code",{parentName:"pre",className:"language-bash"},"kubectl create -f ./dev-support/nfs-server/nfs-server.yaml\n")),"It will create a nfs-server pod in kubernetes cluster, and expose nfs-server ip at ",Object(l.b)("inlineCode",{parentName:"li"},"10.96.0.2")),Object(l.b)("li",{parentName:"ol"},"Use your own NFS server"))),Object(l.b)("li",{parentName:"ol"},"Install NFS dependencies in your nodes",Object(l.b)("ul",{parentName:"li"},Object(l.b)("li",{parentName:"ul"},"Ubuntu",Object(l.b)("pre",{parentName:"li"},Object(l.b)("code",{parentName:"pre",className:"language-bash"},"apt-get install -y nfs-common\n"))),Object(l.b)("li",{parentName:"ul"},"CentOS",Object(l.b)("pre",{parentName:"li"},Object(l.b)("code",{parentName:"pre",className:"language-bash"},"yum install nfs-util\n"))))))),Object(l.b)("li",{parentName:"ul"},"Usage:",Object(l.b)("ol",{parentName:"li"},Object(l.b)("li",{parentName:"ol"},"Configure setting in ",Object(l.b)("inlineCode",{parentName:"li"},"./helm-charts/submarine/values.yaml"),"."),Object(l.b)("li",{parentName:"ol"},"To enable NFS storage, set ",Object(l.b)("inlineCode",{parentName:"li"},".storage.type")," to ",Object(l.b)("inlineCode",{parentName:"li"},"nfs"),"."),Object(l.b)("li",{parentName:"ol"},"To set the ip for NFS server, set ",Object(l.b)("inlineCode",{parentName:"li"},".storage.nfs.ip")," to ",Object(l.b)("inlineCode",{parentName:"li"},"<any-ip>")))),Object(l.b)("li",{parentName:"ul"},"Example:",Object(l.b)("pre",{parentName:"li"},Object(l.b)("code",{parentName:"pre",className:"language-yaml"},"# ./helm-charts/submarine/values.yaml\nstorage:\n  type: nfs\n  nfs:\n    ip: 10.96.0.2\n")))),Object(l.b)("h3",{id:"access-to-submarine-server"},"Access to Submarine Server"),Object(l.b)("p",null,"Submarine server by default expose 8080 port within K8s cluster. After Submarine v0.5\nuses Traefik as reverse-proxy by default. If you don't want to\nuse Traefik, you can modify below value to ",Object(l.b)("strong",{parentName:"p"},Object(l.b)("em",{parentName:"strong"},"false"))," in ",Object(l.b)("inlineCode",{parentName:"p"},"./helm-charts/submarine/values.yaml"),"."),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-yaml"},"# Use Traefik by default\ntraefik:\n  enabled: true\n")),Object(l.b)("p",null,"To access the server from outside of the cluster, we use Traefik ingress controller and\nNodePort for external access.\\\nPlease refer to ",Object(l.b)("inlineCode",{parentName:"p"},"./helm-charts/submarine/charts/traefik/values.yaml")," and ",Object(l.b)("a",{parentName:"p",href:"https://docs.traefik.io/"},"Traefik docs"),"\nfor more details if you want to customize the default value for Traefik."),Object(l.b)("p",null,Object(l.b)("em",{parentName:"p"},"Notice:"),"\nIf you use ",Object(l.b)("inlineCode",{parentName:"p"},"kind")," to run local Kubernetes cluster,\nplease refer to this ",Object(l.b)("a",{parentName:"p",href:"https://kind.sigs.k8s.io/docs/user/configuration/#extra-port-mappings"},"docs"),'\nand set the configuration "extraPortMappings" when creating the k8s cluster.'),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"kind: Cluster\napiVersion: kind.x-k8s.io/v1alpha4\nnodes:\n- role: control-plane\n  extraPortMappings:\n  - containerPort: 32080\n    hostPort: [the port you want to access]\n")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"# Use nodePort and Traefik ingress controller by default.\n# To access the submarine server, open the following URL in your browser.\nhttp://127.0.0.1:32080\n")),Object(l.b)("p",null,"If minikube is installed, use the following command to find the URL to the Submarine server."),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"$ minikube service submarine-traefik --url\n")))}c.isMDXComponent=!0}}]);
\ No newline at end of file
diff --git a/142.94b38ee0.js b/127.70f6757b.js
similarity index 96%
rename from 142.94b38ee0.js
rename to 127.70f6757b.js
index b7c115b..efb667c 100644
--- a/142.94b38ee0.js
+++ b/127.70f6757b.js
@@ -1,2 +1,2 @@
-/*! For license information please see 142.94b38ee0.js.LICENSE.txt */
-(window.webpackJsonp=window.webpackJsonp||[]).push([[142],{215:function(e,t,n){"use strict";var i,r=n(224);function s(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}e.exports={isArray:null,isFunction:null,isObject:null,bind:null,each:null,map:null,mixin:null,isMsie:function(e){if(void 0===e&&(e=navigator.userAgent),/(msie|trident)/i.test(e)){var t=e.match(/(msie |rv:)(\d+(.\d+)?)/i);if(t)return t[2]}return!1},escapeRegExChars:function(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")},isNumber:function(e){return"number"==typeof e},toStr:function(e){return null==e?"":e+""},cloneDeep:function(e){var t=this.mixin({},e),n=this;return this.each(t,(function(e,i){e&&(n.isArray(e)?t[i]=[].concat(e):n.isObject(e)&&(t[i]=n.cloneDeep(e)))})),t},error:function(e){throw new Error(e)},every:function(e,t){var n=!0;return e?(this.each(e,(function(i,r){n&&(n=t.call(null,i,r,e)&&n)})),!!n):n},any:function(e,t){var n=!1;return e?(this.each(e,(function(i,r){if(t.call(null,i,r,e))return n=!0,!1})),n):n},getUniqueId:(i=0,function(){return i++}),templatify:function(e){if(this.isFunction(e))return e;var t=r.element(e);return"SCRIPT"===t.prop("tagName")?function(){return t.text()}:function(){return String(e)}},defer:function(e){setTimeout(e,0)},noop:function(){},formatPrefix:function(e,t){return t?"":e+"-"},className:function(e,t,n){return(n?"":".")+e+t},escapeHighlightedString:function(e,t,n){t=t||"<em>";var i=document.createElement("div");i.appendChild(document.createTextNode(t)),n=n||"</em>";var r=document.createElement("div");r.appendChild(document.createTextNode(n));var o=document.createElement("div");return o.appendChild(document.createTextNode(e)),o.innerHTML.replace(RegExp(s(i.innerHTML),"g"),t).replace(RegExp(s(r.innerHTML),"g"),n)}}},224:function(e,t,n){"use strict";e.exports={element:null}},256:function(e,t){var n;n=window,e.exports=function(e){var t,n,i=function(){var t,n,i,r,s,o,a=[],u=a.concat,c=a.filter,l=a.slice,h=e.document,f={},p={},d={"column-count":1,columns:1,"font-weight":1,"line-height":1,opacity:1,"z-index":1,zoom:1},m=/^\s*<(\w+|!)[^>]*>/,g=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,v=/^(?:body|html)$/i,w=/([A-Z])/g,b=["val","css","html","text","data","width","height","offset"],x=["after","prepend","before","append"],_=h.createElement("table"),k=h.createElement("tr"),C={tr:h.createElement("tbody"),tbody:_,thead:_,tfoot:_,td:k,th:k,"*":h.createElement("div")},S=/complete|loaded|interactive/,E=/^[\w-]*$/,T={},A=T.toString,P={},O=h.createElement("div"),L={tabindex:"tabIndex",readonly:"readOnly",for:"htmlFor",class:"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},Q=Array.isArray||function(e){return e instanceof Array};function I(e){return null==e?String(e):T[A.call(e)]||"object"}function N(e){return"function"==I(e)}function $(e){return null!=e&&e==e.window}function D(e){return null!=e&&e.nodeType==e.DOCUMENT_NODE}function F(e){return"object"==I(e)}function R(e){return F(e)&&!$(e)&&Object.getPrototypeOf(e)==Object.prototype}function j(e){var t=!!e&&"length"in e&&e.length,n=i.type(e);return"function"!=n&&!$(e)&&("array"==n||0===t||"number"==typeof t&&t>0&&t-1 in e)}function M(e){return c.call(e,(function(e){return null!=e}))}function V(e){return e.length>0?i.fn.concat.apply([],e):e}function B(e){return e.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/_/g,"-").toLowerCase()}function z(e){return e in p?p[e]:p[e]=new RegExp("(^|\\s)"+e+"(\\s|$)")}function q(e,t){return"number"!=typeof t||d[B(e)]?t:t+"px"}function H(e){var t,n;return f[e]||(t=h.createElement(e),h.body.appendChild(t),n=getComputedStyle(t,"").getPropertyValue("display"),t.parentNode.removeChild(t),"none"==n&&(n="block"),f[e]=n),f[e]}function W(e){return"children"in e?l.call(e.children):i.map(e.childNodes,(function(e){if(1==e.nodeType)return e}))}function K(e,t){var n,i=e?e.length:0;for(n=0;n<i;n++)this[n]=e[n];this.length=i,this.selector=t||""}function U(e,i,r){for(n in i)r&&(R(i[n])||Q(i[n]))?(R(i[n])&&!R(e[n])&&(e[n]={}),Q(i[n])&&!Q(e[n])&&(e[n]=[]),U(e[n],i[n],r)):i[n]!==t&&(e[n]=i[n])}function Z(e,t){return null==t?i(e):i(e).filter(t)}function G(e,t,n,i){return N(t)?t.call(e,n,i):t}function J(e,t,n){null==n?e.removeAttribute(t):e.setAttribute(t,n)}function X(e,n){var i=e.className||"",r=i&&i.baseVal!==t;if(n===t)return r?i.baseVal:i;r?i.baseVal=n:e.className=n}function Y(e){try{return e?"true"==e||"false"!=e&&("null"==e?null:+e+""==e?+e:/^[\[\{]/.test(e)?i.parseJSON(e):e):e}catch(t){return e}}function ee(e,t){t(e);for(var n=0,i=e.childNodes.length;n<i;n++)ee(e.childNodes[n],t)}return P.matches=function(e,t){if(!t||!e||1!==e.nodeType)return!1;var n=e.matches||e.webkitMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.matchesSelector;if(n)return n.call(e,t);var i,r=e.parentNode,s=!r;return s&&(r=O).appendChild(e),i=~P.qsa(r,t).indexOf(e),s&&O.removeChild(e),i},s=function(e){return e.replace(/-+(.)?/g,(function(e,t){return t?t.toUpperCase():""}))},o=function(e){return c.call(e,(function(t,n){return e.indexOf(t)==n}))},P.fragment=function(e,n,r){var s,o,a;return g.test(e)&&(s=i(h.createElement(RegExp.$1))),s||(e.replace&&(e=e.replace(y,"<$1></$2>")),n===t&&(n=m.test(e)&&RegExp.$1),n in C||(n="*"),(a=C[n]).innerHTML=""+e,s=i.each(l.call(a.childNodes),(function(){a.removeChild(this)}))),R(r)&&(o=i(s),i.each(r,(function(e,t){b.indexOf(e)>-1?o[e](t):o.attr(e,t)}))),s},P.Z=function(e,t){return new K(e,t)},P.isZ=function(e){return e instanceof P.Z},P.init=function(e,n){var r;if(!e)return P.Z();if("string"==typeof e)if("<"==(e=e.trim())[0]&&m.test(e))r=P.fragment(e,RegExp.$1,n),e=null;else{if(n!==t)return i(n).find(e);r=P.qsa(h,e)}else{if(N(e))return i(h).ready(e);if(P.isZ(e))return e;if(Q(e))r=M(e);else if(F(e))r=[e],e=null;else if(m.test(e))r=P.fragment(e.trim(),RegExp.$1,n),e=null;else{if(n!==t)return i(n).find(e);r=P.qsa(h,e)}}return P.Z(r,e)},(i=function(e,t){return P.init(e,t)}).extend=function(e){var t,n=l.call(arguments,1);return"boolean"==typeof e&&(t=e,e=n.shift()),n.forEach((function(n){U(e,n,t)})),e},P.qsa=function(e,t){var n,i="#"==t[0],r=!i&&"."==t[0],s=i||r?t.slice(1):t,o=E.test(s);return e.getElementById&&o&&i?(n=e.getElementById(s))?[n]:[]:1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType?[]:l.call(o&&!i&&e.getElementsByClassName?r?e.getElementsByClassName(s):e.getElementsByTagName(t):e.querySelectorAll(t))},i.contains=h.documentElement.contains?function(e,t){return e!==t&&e.contains(t)}:function(e,t){for(;t&&(t=t.parentNode);)if(t===e)return!0;return!1},i.type=I,i.isFunction=N,i.isWindow=$,i.isArray=Q,i.isPlainObject=R,i.isEmptyObject=function(e){var t;for(t in e)return!1;return!0},i.isNumeric=function(e){var t=Number(e),n=typeof e;return null!=e&&"boolean"!=n&&("string"!=n||e.length)&&!isNaN(t)&&isFinite(t)||!1},i.inArray=function(e,t,n){return a.indexOf.call(t,e,n)},i.camelCase=s,i.trim=function(e){return null==e?"":String.prototype.trim.call(e)},i.uuid=0,i.support={},i.expr={},i.noop=function(){},i.map=function(e,t){var n,i,r,s=[];if(j(e))for(i=0;i<e.length;i++)null!=(n=t(e[i],i))&&s.push(n);else for(r in e)null!=(n=t(e[r],r))&&s.push(n);return V(s)},i.each=function(e,t){var n,i;if(j(e)){for(n=0;n<e.length;n++)if(!1===t.call(e[n],n,e[n]))return e}else for(i in e)if(!1===t.call(e[i],i,e[i]))return e;return e},i.grep=function(e,t){return c.call(e,t)},e.JSON&&(i.parseJSON=JSON.parse),i.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),(function(e,t){T["[object "+t+"]"]=t.toLowerCase()})),i.fn={constructor:P.Z,length:0,forEach:a.forEach,reduce:a.reduce,push:a.push,sort:a.sort,splice:a.splice,indexOf:a.indexOf,concat:function(){var e,t,n=[];for(e=0;e<arguments.length;e++)t=arguments[e],n[e]=P.isZ(t)?t.toArray():t;return u.apply(P.isZ(this)?this.toArray():this,n)},map:function(e){return i(i.map(this,(function(t,n){return e.call(t,n,t)})))},slice:function(){return i(l.apply(this,arguments))},ready:function(e){return S.test(h.readyState)&&h.body?e(i):h.addEventListener("DOMContentLoaded",(function(){e(i)}),!1),this},get:function(e){return e===t?l.call(this):this[e>=0?e:e+this.length]},toArray:function(){return this.get()},size:function(){return this.length},remove:function(){return this.each((function(){null!=this.parentNode&&this.parentNode.removeChild(this)}))},each:function(e){return a.every.call(this,(function(t,n){return!1!==e.call(t,n,t)})),this},filter:function(e){return N(e)?this.not(this.not(e)):i(c.call(this,(function(t){return P.matches(t,e)})))},add:function(e,t){return i(o(this.concat(i(e,t))))},is:function(e){return this.length>0&&P.matches(this[0],e)},not:function(e){var n=[];if(N(e)&&e.call!==t)this.each((function(t){e.call(this,t)||n.push(this)}));else{var r="string"==typeof e?this.filter(e):j(e)&&N(e.item)?l.call(e):i(e);this.forEach((function(e){r.indexOf(e)<0&&n.push(e)}))}return i(n)},has:function(e){return this.filter((function(){return F(e)?i.contains(this,e):i(this).find(e).size()}))},eq:function(e){return-1===e?this.slice(e):this.slice(e,+e+1)},first:function(){var e=this[0];return e&&!F(e)?e:i(e)},last:function(){var e=this[this.length-1];return e&&!F(e)?e:i(e)},find:function(e){var t=this;return e?"object"==typeof e?i(e).filter((function(){var e=this;return a.some.call(t,(function(t){return i.contains(t,e)}))})):1==this.length?i(P.qsa(this[0],e)):this.map((function(){return P.qsa(this,e)})):i()},closest:function(e,t){var n=[],r="object"==typeof e&&i(e);return this.each((function(i,s){for(;s&&!(r?r.indexOf(s)>=0:P.matches(s,e));)s=s!==t&&!D(s)&&s.parentNode;s&&n.indexOf(s)<0&&n.push(s)})),i(n)},parents:function(e){for(var t=[],n=this;n.length>0;)n=i.map(n,(function(e){if((e=e.parentNode)&&!D(e)&&t.indexOf(e)<0)return t.push(e),e}));return Z(t,e)},parent:function(e){return Z(o(this.pluck("parentNode")),e)},children:function(e){return Z(this.map((function(){return W(this)})),e)},contents:function(){return this.map((function(){return this.contentDocument||l.call(this.childNodes)}))},siblings:function(e){return Z(this.map((function(e,t){return c.call(W(t.parentNode),(function(e){return e!==t}))})),e)},empty:function(){return this.each((function(){this.innerHTML=""}))},pluck:function(e){return i.map(this,(function(t){return t[e]}))},show:function(){return this.each((function(){"none"==this.style.display&&(this.style.display=""),"none"==getComputedStyle(this,"").getPropertyValue("display")&&(this.style.display=H(this.nodeName))}))},replaceWith:function(e){return this.before(e).remove()},wrap:function(e){var t=N(e);if(this[0]&&!t)var n=i(e).get(0),r=n.parentNode||this.length>1;return this.each((function(s){i(this).wrapAll(t?e.call(this,s):r?n.cloneNode(!0):n)}))},wrapAll:function(e){if(this[0]){var t;for(i(this[0]).before(e=i(e));(t=e.children()).length;)e=t.first();i(e).append(this)}return this},wrapInner:function(e){var t=N(e);return this.each((function(n){var r=i(this),s=r.contents(),o=t?e.call(this,n):e;s.length?s.wrapAll(o):r.append(o)}))},unwrap:function(){return this.parent().each((function(){i(this).replaceWith(i(this).children())})),this},clone:function(){return this.map((function(){return this.cloneNode(!0)}))},hide:function(){return this.css("display","none")},toggle:function(e){return this.each((function(){var n=i(this);(e===t?"none"==n.css("display"):e)?n.show():n.hide()}))},prev:function(e){return i(this.pluck("previousElementSibling")).filter(e||"*")},next:function(e){return i(this.pluck("nextElementSibling")).filter(e||"*")},html:function(e){return 0 in arguments?this.each((function(t){var n=this.innerHTML;i(this).empty().append(G(this,e,t,n))})):0 in this?this[0].innerHTML:null},text:function(e){return 0 in arguments?this.each((function(t){var n=G(this,e,t,this.textContent);this.textContent=null==n?"":""+n})):0 in this?this.pluck("textContent").join(""):null},attr:function(e,i){var r;return"string"!=typeof e||1 in arguments?this.each((function(t){if(1===this.nodeType)if(F(e))for(n in e)J(this,n,e[n]);else J(this,e,G(this,i,t,this.getAttribute(e)))})):0 in this&&1==this[0].nodeType&&null!=(r=this[0].getAttribute(e))?r:t},removeAttr:function(e){return this.each((function(){1===this.nodeType&&e.split(" ").forEach((function(e){J(this,e)}),this)}))},prop:function(e,t){return e=L[e]||e,1 in arguments?this.each((function(n){this[e]=G(this,t,n,this[e])})):this[0]&&this[0][e]},removeProp:function(e){return e=L[e]||e,this.each((function(){delete this[e]}))},data:function(e,n){var i="data-"+e.replace(w,"-$1").toLowerCase(),r=1 in arguments?this.attr(i,n):this.attr(i);return null!==r?Y(r):t},val:function(e){return 0 in arguments?(null==e&&(e=""),this.each((function(t){this.value=G(this,e,t,this.value)}))):this[0]&&(this[0].multiple?i(this[0]).find("option").filter((function(){return this.selected})).pluck("value"):this[0].value)},offset:function(t){if(t)return this.each((function(e){var n=i(this),r=G(this,t,e,n.offset()),s=n.offsetParent().offset(),o={top:r.top-s.top,left:r.left-s.left};"static"==n.css("position")&&(o.position="relative"),n.css(o)}));if(!this.length)return null;if(h.documentElement!==this[0]&&!i.contains(h.documentElement,this[0]))return{top:0,left:0};var n=this[0].getBoundingClientRect();return{left:n.left+e.pageXOffset,top:n.top+e.pageYOffset,width:Math.round(n.width),height:Math.round(n.height)}},css:function(e,t){if(arguments.length<2){var r=this[0];if("string"==typeof e){if(!r)return;return r.style[s(e)]||getComputedStyle(r,"").getPropertyValue(e)}if(Q(e)){if(!r)return;var o={},a=getComputedStyle(r,"");return i.each(e,(function(e,t){o[t]=r.style[s(t)]||a.getPropertyValue(t)})),o}}var u="";if("string"==I(e))t||0===t?u=B(e)+":"+q(e,t):this.each((function(){this.style.removeProperty(B(e))}));else for(n in e)e[n]||0===e[n]?u+=B(n)+":"+q(n,e[n])+";":this.each((function(){this.style.removeProperty(B(n))}));return this.each((function(){this.style.cssText+=";"+u}))},index:function(e){return e?this.indexOf(i(e)[0]):this.parent().children().indexOf(this[0])},hasClass:function(e){return!!e&&a.some.call(this,(function(e){return this.test(X(e))}),z(e))},addClass:function(e){return e?this.each((function(t){if("className"in this){r=[];var n=X(this);G(this,e,t,n).split(/\s+/g).forEach((function(e){i(this).hasClass(e)||r.push(e)}),this),r.length&&X(this,n+(n?" ":"")+r.join(" "))}})):this},removeClass:function(e){return this.each((function(n){if("className"in this){if(e===t)return X(this,"");r=X(this),G(this,e,n,r).split(/\s+/g).forEach((function(e){r=r.replace(z(e)," ")})),X(this,r.trim())}}))},toggleClass:function(e,n){return e?this.each((function(r){var s=i(this);G(this,e,r,X(this)).split(/\s+/g).forEach((function(e){(n===t?!s.hasClass(e):n)?s.addClass(e):s.removeClass(e)}))})):this},scrollTop:function(e){if(this.length){var n="scrollTop"in this[0];return e===t?n?this[0].scrollTop:this[0].pageYOffset:this.each(n?function(){this.scrollTop=e}:function(){this.scrollTo(this.scrollX,e)})}},scrollLeft:function(e){if(this.length){var n="scrollLeft"in this[0];return e===t?n?this[0].scrollLeft:this[0].pageXOffset:this.each(n?function(){this.scrollLeft=e}:function(){this.scrollTo(e,this.scrollY)})}},position:function(){if(this.length){var e=this[0],t=this.offsetParent(),n=this.offset(),r=v.test(t[0].nodeName)?{top:0,left:0}:t.offset();return n.top-=parseFloat(i(e).css("margin-top"))||0,n.left-=parseFloat(i(e).css("margin-left"))||0,r.top+=parseFloat(i(t[0]).css("border-top-width"))||0,r.left+=parseFloat(i(t[0]).css("border-left-width"))||0,{top:n.top-r.top,left:n.left-r.left}}},offsetParent:function(){return this.map((function(){for(var e=this.offsetParent||h.body;e&&!v.test(e.nodeName)&&"static"==i(e).css("position");)e=e.offsetParent;return e}))}},i.fn.detach=i.fn.remove,["width","height"].forEach((function(e){var n=e.replace(/./,(function(e){return e[0].toUpperCase()}));i.fn[e]=function(r){var s,o=this[0];return r===t?$(o)?o["inner"+n]:D(o)?o.documentElement["scroll"+n]:(s=this.offset())&&s[e]:this.each((function(t){(o=i(this)).css(e,G(this,r,t,o[e]()))}))}})),x.forEach((function(n,r){var s=r%2;i.fn[n]=function(){var n,o,a=i.map(arguments,(function(e){var r=[];return"array"==(n=I(e))?(e.forEach((function(e){return e.nodeType!==t?r.push(e):i.zepto.isZ(e)?r=r.concat(e.get()):void(r=r.concat(P.fragment(e)))})),r):"object"==n||null==e?e:P.fragment(e)})),u=this.length>1;return a.length<1?this:this.each((function(t,n){o=s?n:n.parentNode,n=0==r?n.nextSibling:1==r?n.firstChild:2==r?n:null;var c=i.contains(h.documentElement,o);a.forEach((function(t){if(u)t=t.cloneNode(!0);else if(!o)return i(t).remove();o.insertBefore(t,n),c&&ee(t,(function(t){if(!(null==t.nodeName||"SCRIPT"!==t.nodeName.toUpperCase()||t.type&&"text/javascript"!==t.type||t.src)){var n=t.ownerDocument?t.ownerDocument.defaultView:e;n.eval.call(n,t.innerHTML)}}))}))}))},i.fn[s?n+"To":"insert"+(r?"Before":"After")]=function(e){return i(e)[n](this),this}})),P.Z.prototype=K.prototype=i.fn,P.uniq=o,P.deserializeValue=Y,i.zepto=P,i}();return function(t){var n,i=1,r=Array.prototype.slice,s=t.isFunction,o=function(e){return"string"==typeof e},a={},u={},c="onfocusin"in e,l={focus:"focusin",blur:"focusout"},h={mouseenter:"mouseover",mouseleave:"mouseout"};function f(e){return e._zid||(e._zid=i++)}function p(e,t,n,i){if((t=d(t)).ns)var r=m(t.ns);return(a[f(e)]||[]).filter((function(e){return e&&(!t.e||e.e==t.e)&&(!t.ns||r.test(e.ns))&&(!n||f(e.fn)===f(n))&&(!i||e.sel==i)}))}function d(e){var t=(""+e).split(".");return{e:t[0],ns:t.slice(1).sort().join(" ")}}function m(e){return new RegExp("(?:^| )"+e.replace(" "," .* ?")+"(?: |$)")}function g(e,t){return e.del&&!c&&e.e in l||!!t}function y(e){return h[e]||c&&l[e]||e}function v(e,i,r,s,o,u,c){var l=f(e),p=a[l]||(a[l]=[]);i.split(/\s/).forEach((function(i){if("ready"==i)return t(document).ready(r);var a=d(i);a.fn=r,a.sel=o,a.e in h&&(r=function(e){var n=e.relatedTarget;if(!n||n!==this&&!t.contains(this,n))return a.fn.apply(this,arguments)}),a.del=u;var l=u||r;a.proxy=function(t){if(!(t=C(t)).isImmediatePropagationStopped()){try{var i=Object.getOwnPropertyDescriptor(t,"data");i&&!i.writable||(t.data=s)}catch(t){}var r=l.apply(e,t._args==n?[t]:[t].concat(t._args));return!1===r&&(t.preventDefault(),t.stopPropagation()),r}},a.i=p.length,p.push(a),"addEventListener"in e&&e.addEventListener(y(a.e),a.proxy,g(a,c))}))}function w(e,t,n,i,r){var s=f(e);(t||"").split(/\s/).forEach((function(t){p(e,t,n,i).forEach((function(t){delete a[s][t.i],"removeEventListener"in e&&e.removeEventListener(y(t.e),t.proxy,g(t,r))}))}))}u.click=u.mousedown=u.mouseup=u.mousemove="MouseEvents",t.event={add:v,remove:w},t.proxy=function(e,n){var i=2 in arguments&&r.call(arguments,2);if(s(e)){var a=function(){return e.apply(n,i?i.concat(r.call(arguments)):arguments)};return a._zid=f(e),a}if(o(n))return i?(i.unshift(e[n],e),t.proxy.apply(null,i)):t.proxy(e[n],e);throw new TypeError("expected function")},t.fn.bind=function(e,t,n){return this.on(e,t,n)},t.fn.unbind=function(e,t){return this.off(e,t)},t.fn.one=function(e,t,n,i){return this.on(e,t,n,i,1)};var b=function(){return!0},x=function(){return!1},_=/^([A-Z]|returnValue$|layer[XY]$|webkitMovement[XY]$)/,k={preventDefault:"isDefaultPrevented",stopImmediatePropagation:"isImmediatePropagationStopped",stopPropagation:"isPropagationStopped"};function C(e,i){if(i||!e.isDefaultPrevented){i||(i=e),t.each(k,(function(t,n){var r=i[t];e[t]=function(){return this[n]=b,r&&r.apply(i,arguments)},e[n]=x}));try{e.timeStamp||(e.timeStamp=Date.now())}catch(r){}(i.defaultPrevented!==n?i.defaultPrevented:"returnValue"in i?!1===i.returnValue:i.getPreventDefault&&i.getPreventDefault())&&(e.isDefaultPrevented=b)}return e}function S(e){var t,i={originalEvent:e};for(t in e)_.test(t)||e[t]===n||(i[t]=e[t]);return C(i,e)}t.fn.delegate=function(e,t,n){return this.on(t,e,n)},t.fn.undelegate=function(e,t,n){return this.off(t,e,n)},t.fn.live=function(e,n){return t(document.body).delegate(this.selector,e,n),this},t.fn.die=function(e,n){return t(document.body).undelegate(this.selector,e,n),this},t.fn.on=function(e,i,a,u,c){var l,h,f=this;return e&&!o(e)?(t.each(e,(function(e,t){f.on(e,i,a,t,c)})),f):(o(i)||s(u)||!1===u||(u=a,a=i,i=n),u!==n&&!1!==a||(u=a,a=n),!1===u&&(u=x),f.each((function(n,s){c&&(l=function(e){return w(s,e.type,u),u.apply(this,arguments)}),i&&(h=function(e){var n,o=t(e.target).closest(i,s).get(0);if(o&&o!==s)return n=t.extend(S(e),{currentTarget:o,liveFired:s}),(l||u).apply(o,[n].concat(r.call(arguments,1)))}),v(s,e,u,a,i,h||l)})))},t.fn.off=function(e,i,r){var a=this;return e&&!o(e)?(t.each(e,(function(e,t){a.off(e,i,t)})),a):(o(i)||s(r)||!1===r||(r=i,i=n),!1===r&&(r=x),a.each((function(){w(this,e,r,i)})))},t.fn.trigger=function(e,n){return(e=o(e)||t.isPlainObject(e)?t.Event(e):C(e))._args=n,this.each((function(){e.type in l&&"function"==typeof this[e.type]?this[e.type]():"dispatchEvent"in this?this.dispatchEvent(e):t(this).triggerHandler(e,n)}))},t.fn.triggerHandler=function(e,n){var i,r;return this.each((function(s,a){(i=S(o(e)?t.Event(e):e))._args=n,i.target=a,t.each(p(a,e.type||e),(function(e,t){if(r=t.proxy(i),i.isImmediatePropagationStopped())return!1}))})),r},"focusin focusout focus blur load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select keydown keypress keyup error".split(" ").forEach((function(e){t.fn[e]=function(t){return 0 in arguments?this.bind(e,t):this.trigger(e)}})),t.Event=function(e,t){o(e)||(e=(t=e).type);var n=document.createEvent(u[e]||"Events"),i=!0;if(t)for(var r in t)"bubbles"==r?i=!!t[r]:n[r]=t[r];return n.initEvent(e,i,!0),C(n)}}(i),n=[],i.fn.remove=function(){return this.each((function(){this.parentNode&&("IMG"===this.tagName&&(n.push(this),this.src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=",t&&clearTimeout(t),t=setTimeout((function(){n=[]}),6e4)),this.parentNode.removeChild(this))}))},function(e){var t={},n=e.fn.data,i=e.camelCase,r=e.expando="Zepto"+ +new Date,s=[];function o(s,o){var u=s[r],c=u&&t[u];if(void 0===o)return c||a(s);if(c){if(o in c)return c[o];var l=i(o);if(l in c)return c[l]}return n.call(e(s),o)}function a(n,s,o){var a=n[r]||(n[r]=++e.uuid),c=t[a]||(t[a]=u(n));return void 0!==s&&(c[i(s)]=o),c}function u(t){var n={};return e.each(t.attributes||s,(function(t,r){0==r.name.indexOf("data-")&&(n[i(r.name.replace("data-",""))]=e.zepto.deserializeValue(r.value))})),n}e.fn.data=function(t,n){return void 0===n?e.isPlainObject(t)?this.each((function(n,i){e.each(t,(function(e,t){a(i,e,t)}))})):0 in this?o(this[0],t):void 0:this.each((function(){a(this,t,n)}))},e.data=function(t,n,i){return e(t).data(n,i)},e.hasData=function(n){var i=n[r],s=i&&t[i];return!!s&&!e.isEmptyObject(s)},e.fn.removeData=function(n){return"string"==typeof n&&(n=n.split(/\s+/)),this.each((function(){var s=this[r],o=s&&t[s];o&&e.each(n||o,(function(e){delete o[n?i(this):e]}))}))},["remove","empty"].forEach((function(t){var n=e.fn[t];e.fn[t]=function(){var e=this.find("*");return"remove"===t&&(e=e.add(this)),e.removeData(),n.call(this)}}))}(i),i}(n)},257:function(e,t,n){"use strict";var i=n(315),r=/\s+/;function s(e,t,n,i){var s;if(!n)return this;for(t=t.split(r),n=i?function(e,t){return e.bind?e.bind(t):function(){e.apply(t,[].slice.call(arguments,0))}}(n,i):n,this._callbacks=this._callbacks||{};s=t.shift();)this._callbacks[s]=this._callbacks[s]||{sync:[],async:[]},this._callbacks[s][e].push(n);return this}function o(e,t,n){return function(){for(var i,r=0,s=e.length;!i&&r<s;r+=1)i=!1===e[r].apply(t,n);return!i}}e.exports={onSync:function(e,t,n){return s.call(this,"sync",e,t,n)},onAsync:function(e,t,n){return s.call(this,"async",e,t,n)},off:function(e){var t;if(!this._callbacks)return this;e=e.split(r);for(;t=e.shift();)delete this._callbacks[t];return this},trigger:function(e){var t,n,s,a,u;if(!this._callbacks)return this;e=e.split(r),s=[].slice.call(arguments,1);for(;(t=e.shift())&&(n=this._callbacks[t]);)a=o(n.sync,this,[t].concat(s)),u=o(n.async,this,[t].concat(s)),a()&&i(u);return this}}},258:function(e,t,n){"use strict";var i=n(215),r={wrapper:{position:"relative",display:"inline-block"},hint:{position:"absolute",top:"0",left:"0",borderColor:"transparent",boxShadow:"none",opacity:"1"},input:{position:"relative",verticalAlign:"top",backgroundColor:"transparent"},inputWithNoHint:{position:"relative",verticalAlign:"top"},dropdown:{position:"absolute",top:"100%",left:"0",zIndex:"100",display:"none"},suggestions:{display:"block"},suggestion:{whiteSpace:"nowrap",cursor:"pointer"},suggestionChild:{whiteSpace:"normal"},ltr:{left:"0",right:"auto"},rtl:{left:"auto",right:"0"},defaultClasses:{root:"algolia-autocomplete",prefix:"aa",noPrefix:!1,dropdownMenu:"dropdown-menu",input:"input",hint:"hint",suggestions:"suggestions",suggestion:"suggestion",cursor:"cursor",dataset:"dataset",empty:"empty"},appendTo:{wrapper:{position:"absolute",zIndex:"100",display:"none"},input:{},inputWithNoHint:{},dropdown:{display:"block"}}};i.isMsie()&&i.mixin(r.input,{backgroundImage:"url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)"}),i.isMsie()&&i.isMsie()<=7&&i.mixin(r.input,{marginTop:"-1px"}),e.exports=r},272:function(e,t,n){"use strict";var i=n(215),r=n(224);function s(e){e&&e.el||i.error("EventBus initialized without el"),this.$el=r.element(e.el)}i.mixin(s.prototype,{trigger:function(e,t,n,r){var s=i.Event("autocomplete:"+e);return this.$el.trigger(s,[t,n,r]),s}}),e.exports=s},273:function(e,t,n){"use strict";e.exports={wrapper:'<span class="%ROOT%"></span>',dropdown:'<span class="%PREFIX%%DROPDOWN_MENU%"></span>',dataset:'<div class="%PREFIX%%DATASET%-%CLASS%"></div>',suggestions:'<span class="%PREFIX%%SUGGESTIONS%"></span>',suggestion:'<div class="%PREFIX%%SUGGESTION%"></div>'}},274:function(e,t){e.exports="0.37.1"},275:function(e,t,n){"use strict";e.exports=function(e){var t=e.match(/Algolia for JavaScript \((\d+\.)(\d+\.)(\d+)\)/)||e.match(/Algolia for vanilla JavaScript (\d+\.)(\d+\.)(\d+)/);if(t)return[t[1],t[2],t[3]]}},304:function(e,t,n){var i=n(305);i.Template=n(306).Template,i.template=i.Template,e.exports=i},305:function(e,t,n){!function(e){var t=/\S/,n=/\"/g,i=/\n/g,r=/\r/g,s=/\\/g,o=/\u2028/,a=/\u2029/;function u(e){"}"===e.n.substr(e.n.length-1)&&(e.n=e.n.substring(0,e.n.length-1))}function c(e){return e.trim?e.trim():e.replace(/^\s*|\s*$/g,"")}function l(e,t,n){if(t.charAt(n)!=e.charAt(0))return!1;for(var i=1,r=e.length;i<r;i++)if(t.charAt(n+i)!=e.charAt(i))return!1;return!0}e.tags={"#":1,"^":2,"<":3,$:4,"/":5,"!":6,">":7,"=":8,_v:9,"{":10,"&":11,_t:12},e.scan=function(n,i){var r=n.length,s=0,o=null,a=null,h="",f=[],p=!1,d=0,m=0,g="{{",y="}}";function v(){h.length>0&&(f.push({tag:"_t",text:new String(h)}),h="")}function w(n,i){if(v(),n&&function(){for(var n=!0,i=m;i<f.length;i++)if(!(n=e.tags[f[i].tag]<e.tags._v||"_t"==f[i].tag&&null===f[i].text.match(t)))return!1;return n}())for(var r,s=m;s<f.length;s++)f[s].text&&((r=f[s+1])&&">"==r.tag&&(r.indent=f[s].text.toString()),f.splice(s,1));else i||f.push({tag:"\n"});p=!1,m=f.length}function b(e,t){var n="="+y,i=e.indexOf(n,t),r=c(e.substring(e.indexOf("=",t)+1,i)).split(" ");return g=r[0],y=r[r.length-1],i+n.length-1}for(i&&(i=i.split(" "),g=i[0],y=i[1]),d=0;d<r;d++)0==s?l(g,n,d)?(--d,v(),s=1):"\n"==n.charAt(d)?w(p):h+=n.charAt(d):1==s?(d+=g.length-1,"="==(o=(a=e.tags[n.charAt(d+1)])?n.charAt(d+1):"_v")?(d=b(n,d),s=0):(a&&d++,s=2),p=d):l(y,n,d)?(f.push({tag:o,n:c(h),otag:g,ctag:y,i:"/"==o?p-g.length:d+y.length}),h="",d+=y.length-1,s=0,"{"==o&&("}}"==y?d++:u(f[f.length-1]))):h+=n.charAt(d);return w(p,!0),f};var h={_t:!0,"\n":!0,$:!0,"/":!0};function f(t,n,i,r){var s,o=[],a=null,u=null;for(s=i[i.length-1];t.length>0;){if(u=t.shift(),s&&"<"==s.tag&&!(u.tag in h))throw new Error("Illegal content in < super tag.");if(e.tags[u.tag]<=e.tags.$||p(u,r))i.push(u),u.nodes=f(t,u.tag,i,r);else{if("/"==u.tag){if(0===i.length)throw new Error("Closing tag without opener: /"+u.n);if(a=i.pop(),u.n!=a.n&&!d(u.n,a.n,r))throw new Error("Nesting error: "+a.n+" vs. "+u.n);return a.end=u.i,o}"\n"==u.tag&&(u.last=0==t.length||"\n"==t[0].tag)}o.push(u)}if(i.length>0)throw new Error("missing closing tag: "+i.pop().n);return o}function p(e,t){for(var n=0,i=t.length;n<i;n++)if(t[n].o==e.n)return e.tag="#",!0}function d(e,t,n){for(var i=0,r=n.length;i<r;i++)if(n[i].c==e&&n[i].o==t)return!0}function m(e){var t=[];for(var n in e.partials)t.push('"'+y(n)+'":{name:"'+y(e.partials[n].name)+'", '+m(e.partials[n])+"}");return"partials: {"+t.join(",")+"}, subs: "+function(e){var t=[];for(var n in e)t.push('"'+y(n)+'": function(c,p,t,i) {'+e[n]+"}");return"{ "+t.join(",")+" }"}(e.subs)}e.stringify=function(t,n,i){return"{code: function (c,p,i) { "+e.wrapMain(t.code)+" },"+m(t)+"}"};var g=0;function y(e){return e.replace(s,"\\\\").replace(n,'\\"').replace(i,"\\n").replace(r,"\\r").replace(o,"\\u2028").replace(a,"\\u2029")}function v(e){return~e.indexOf(".")?"d":"f"}function w(e,t){var n="<"+(t.prefix||"")+e.n+g++;return t.partials[n]={name:e.n,partials:{}},t.code+='t.b(t.rp("'+y(n)+'",c,p,"'+(e.indent||"")+'"));',n}function b(e,t){t.code+="t.b(t.t(t."+v(e.n)+'("'+y(e.n)+'",c,p,0)));'}function x(e){return"t.b("+e+");"}e.generate=function(t,n,i){g=0;var r={code:"",subs:{},partials:{}};return e.walk(t,r),i.asString?this.stringify(r,n,i):this.makeTemplate(r,n,i)},e.wrapMain=function(e){return'var t=this;t.b(i=i||"");'+e+"return t.fl();"},e.template=e.Template,e.makeTemplate=function(e,t,n){var i=this.makePartials(e);return i.code=new Function("c","p","i",this.wrapMain(e.code)),new this.template(i,t,this,n)},e.makePartials=function(e){var t,n={subs:{},partials:e.partials,name:e.name};for(t in n.partials)n.partials[t]=this.makePartials(n.partials[t]);for(t in e.subs)n.subs[t]=new Function("c","p","t","i",e.subs[t]);return n},e.codegen={"#":function(t,n){n.code+="if(t.s(t."+v(t.n)+'("'+y(t.n)+'",c,p,1),c,p,0,'+t.i+","+t.end+',"'+t.otag+" "+t.ctag+'")){t.rs(c,p,function(c,p,t){',e.walk(t.nodes,n),n.code+="});c.pop();}"},"^":function(t,n){n.code+="if(!t.s(t."+v(t.n)+'("'+y(t.n)+'",c,p,1),c,p,1,0,0,"")){',e.walk(t.nodes,n),n.code+="};"},">":w,"<":function(t,n){var i={partials:{},code:"",subs:{},inPartial:!0};e.walk(t.nodes,i);var r=n.partials[w(t,n)];r.subs=i.subs,r.partials=i.partials},$:function(t,n){var i={subs:{},code:"",partials:n.partials,prefix:t.n};e.walk(t.nodes,i),n.subs[t.n]=i.code,n.inPartial||(n.code+='t.sub("'+y(t.n)+'",c,p,i);')},"\n":function(e,t){t.code+=x('"\\n"'+(e.last?"":" + i"))},_v:function(e,t){t.code+="t.b(t.v(t."+v(e.n)+'("'+y(e.n)+'",c,p,0)));'},_t:function(e,t){t.code+=x('"'+y(e.text)+'"')},"{":b,"&":b},e.walk=function(t,n){for(var i,r=0,s=t.length;r<s;r++)(i=e.codegen[t[r].tag])&&i(t[r],n);return n},e.parse=function(e,t,n){return f(e,0,[],(n=n||{}).sectionTags||[])},e.cache={},e.cacheKey=function(e,t){return[e,!!t.asString,!!t.disableLambda,t.delimiters,!!t.modelGet].join("||")},e.compile=function(t,n){n=n||{};var i=e.cacheKey(t,n),r=this.cache[i];if(r){var s=r.partials;for(var o in s)delete s[o].instance;return r}return r=this.generate(this.parse(this.scan(t,n.delimiters),t,n),t,n),this.cache[i]=r}}(t)},306:function(e,t,n){!function(e){function t(e,t,n){var i;return t&&"object"==typeof t&&(void 0!==t[e]?i=t[e]:n&&t.get&&"function"==typeof t.get&&(i=t.get(e))),i}e.Template=function(e,t,n,i){e=e||{},this.r=e.code||this.r,this.c=n,this.options=i||{},this.text=t||"",this.partials=e.partials||{},this.subs=e.subs||{},this.buf=""},e.Template.prototype={r:function(e,t,n){return""},v:function(e){return e=u(e),a.test(e)?e.replace(n,"&amp;").replace(i,"&lt;").replace(r,"&gt;").replace(s,"&#39;").replace(o,"&quot;"):e},t:u,render:function(e,t,n){return this.ri([e],t||{},n)},ri:function(e,t,n){return this.r(e,t,n)},ep:function(e,t){var n=this.partials[e],i=t[n.name];if(n.instance&&n.base==i)return n.instance;if("string"==typeof i){if(!this.c)throw new Error("No compiler available.");i=this.c.compile(i,this.options)}if(!i)return null;if(this.partials[e].base=i,n.subs){for(key in t.stackText||(t.stackText={}),n.subs)t.stackText[key]||(t.stackText[key]=void 0!==this.activeSub&&t.stackText[this.activeSub]?t.stackText[this.activeSub]:this.text);i=function(e,t,n,i,r,s){function o(){}function a(){}var u;o.prototype=e,a.prototype=e.subs;var c=new o;for(u in c.subs=new a,c.subsText={},c.buf="",i=i||{},c.stackSubs=i,c.subsText=s,t)i[u]||(i[u]=t[u]);for(u in i)c.subs[u]=i[u];for(u in r=r||{},c.stackPartials=r,n)r[u]||(r[u]=n[u]);for(u in r)c.partials[u]=r[u];return c}(i,n.subs,n.partials,this.stackSubs,this.stackPartials,t.stackText)}return this.partials[e].instance=i,i},rp:function(e,t,n,i){var r=this.ep(e,n);return r?r.ri(t,n,i):""},rs:function(e,t,n){var i=e[e.length-1];if(c(i))for(var r=0;r<i.length;r++)e.push(i[r]),n(e,t,this),e.pop();else n(e,t,this)},s:function(e,t,n,i,r,s,o){var a;return(!c(e)||0!==e.length)&&("function"==typeof e&&(e=this.ms(e,t,n,i,r,s,o)),a=!!e,!i&&a&&t&&t.push("object"==typeof e?e:t[t.length-1]),a)},d:function(e,n,i,r){var s,o=e.split("."),a=this.f(o[0],n,i,r),u=this.options.modelGet,l=null;if("."===e&&c(n[n.length-2]))a=n[n.length-1];else for(var h=1;h<o.length;h++)void 0!==(s=t(o[h],a,u))?(l=a,a=s):a="";return!(r&&!a)&&(r||"function"!=typeof a||(n.push(l),a=this.mv(a,n,i),n.pop()),a)},f:function(e,n,i,r){for(var s=!1,o=!1,a=this.options.modelGet,u=n.length-1;u>=0;u--)if(void 0!==(s=t(e,n[u],a))){o=!0;break}return o?(r||"function"!=typeof s||(s=this.mv(s,n,i)),s):!r&&""},ls:function(e,t,n,i,r){var s=this.options.delimiters;return this.options.delimiters=r,this.b(this.ct(u(e.call(t,i)),t,n)),this.options.delimiters=s,!1},ct:function(e,t,n){if(this.options.disableLambda)throw new Error("Lambda features disabled.");return this.c.compile(e,this.options).render(t,n)},b:function(e){this.buf+=e},fl:function(){var e=this.buf;return this.buf="",e},ms:function(e,t,n,i,r,s,o){var a,u=t[t.length-1],c=e.call(u);return"function"==typeof c?!!i||(a=this.activeSub&&this.subsText&&this.subsText[this.activeSub]?this.subsText[this.activeSub]:this.text,this.ls(c,u,n,a.substring(r,s),o)):c},mv:function(e,t,n){var i=t[t.length-1],r=e.call(i);return"function"==typeof r?this.ct(u(r.call(i)),i,n):r},sub:function(e,t,n,i){var r=this.subs[e];r&&(this.activeSub=e,r(t,n,this,i),this.activeSub=!1)}};var n=/&/g,i=/</g,r=/>/g,s=/\'/g,o=/\"/g,a=/[&<>\"\']/;function u(e){return String(null==e?"":e)}var c=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)}}(t)},307:function(e,t,n){var i,r;!function(){var s,o,a,u,c,l,h,f,p,d,m,g,y,v,w,b,x,_,k,C,S,E,T,A,P,O,L=function(e){var t=new L.Builder;return t.pipeline.add(L.trimmer,L.stopWordFilter,L.stemmer),t.searchPipeline.add(L.stemmer),e.call(t,t),t.build()};L.version="2.3.9",L.utils={},L.utils.warn=(s=this,function(e){s.console&&console.warn&&console.warn(e)}),L.utils.asString=function(e){return null==e?"":e.toString()},L.utils.clone=function(e){if(null==e)return e;for(var t=Object.create(null),n=Object.keys(e),i=0;i<n.length;i++){var r=n[i],s=e[r];if(Array.isArray(s))t[r]=s.slice();else{if("string"!=typeof s&&"number"!=typeof s&&"boolean"!=typeof s)throw new TypeError("clone is not deep and does not support nested objects");t[r]=s}}return t},L.FieldRef=function(e,t,n){this.docRef=e,this.fieldName=t,this._stringValue=n},L.FieldRef.joiner="/",L.FieldRef.fromString=function(e){var t=e.indexOf(L.FieldRef.joiner);if(-1===t)throw"malformed field ref string";var n=e.slice(0,t),i=e.slice(t+1);return new L.FieldRef(i,n,e)},L.FieldRef.prototype.toString=function(){return null==this._stringValue&&(this._stringValue=this.fieldName+L.FieldRef.joiner+this.docRef),this._stringValue},L.Set=function(e){if(this.elements=Object.create(null),e){this.length=e.length;for(var t=0;t<this.length;t++)this.elements[e[t]]=!0}else this.length=0},L.Set.complete={intersect:function(e){return e},union:function(){return this},contains:function(){return!0}},L.Set.empty={intersect:function(){return this},union:function(e){return e},contains:function(){return!1}},L.Set.prototype.contains=function(e){return!!this.elements[e]},L.Set.prototype.intersect=function(e){var t,n,i,r=[];if(e===L.Set.complete)return this;if(e===L.Set.empty)return e;this.length<e.length?(t=this,n=e):(t=e,n=this),i=Object.keys(t.elements);for(var s=0;s<i.length;s++){var o=i[s];o in n.elements&&r.push(o)}return new L.Set(r)},L.Set.prototype.union=function(e){return e===L.Set.complete?L.Set.complete:e===L.Set.empty?this:new L.Set(Object.keys(this.elements).concat(Object.keys(e.elements)))},L.idf=function(e,t){var n=0;for(var i in e)"_index"!=i&&(n+=Object.keys(e[i]).length);var r=(t-n+.5)/(n+.5);return Math.log(1+Math.abs(r))},L.Token=function(e,t){this.str=e||"",this.metadata=t||{}},L.Token.prototype.toString=function(){return this.str},L.Token.prototype.update=function(e){return this.str=e(this.str,this.metadata),this},L.Token.prototype.clone=function(e){return e=e||function(e){return e},new L.Token(e(this.str,this.metadata),this.metadata)},L.tokenizer=function(e,t){if(null==e||null==e)return[];if(Array.isArray(e))return e.map((function(e){return new L.Token(L.utils.asString(e).toLowerCase(),L.utils.clone(t))}));for(var n=e.toString().toLowerCase(),i=n.length,r=[],s=0,o=0;s<=i;s++){var a=s-o;if(n.charAt(s).match(L.tokenizer.separator)||s==i){if(a>0){var u=L.utils.clone(t)||{};u.position=[o,a],u.index=r.length,r.push(new L.Token(n.slice(o,s),u))}o=s+1}}return r},L.tokenizer.separator=/[\s\-]+/,L.Pipeline=function(){this._stack=[]},L.Pipeline.registeredFunctions=Object.create(null),L.Pipeline.registerFunction=function(e,t){t in this.registeredFunctions&&L.utils.warn("Overwriting existing registered function: "+t),e.label=t,L.Pipeline.registeredFunctions[e.label]=e},L.Pipeline.warnIfFunctionNotRegistered=function(e){e.label&&e.label in this.registeredFunctions||L.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},L.Pipeline.load=function(e){var t=new L.Pipeline;return e.forEach((function(e){var n=L.Pipeline.registeredFunctions[e];if(!n)throw new Error("Cannot load unregistered function: "+e);t.add(n)})),t},L.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach((function(e){L.Pipeline.warnIfFunctionNotRegistered(e),this._stack.push(e)}),this)},L.Pipeline.prototype.after=function(e,t){L.Pipeline.warnIfFunctionNotRegistered(t);var n=this._stack.indexOf(e);if(-1==n)throw new Error("Cannot find existingFn");n+=1,this._stack.splice(n,0,t)},L.Pipeline.prototype.before=function(e,t){L.Pipeline.warnIfFunctionNotRegistered(t);var n=this._stack.indexOf(e);if(-1==n)throw new Error("Cannot find existingFn");this._stack.splice(n,0,t)},L.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);-1!=t&&this._stack.splice(t,1)},L.Pipeline.prototype.run=function(e){for(var t=this._stack.length,n=0;n<t;n++){for(var i=this._stack[n],r=[],s=0;s<e.length;s++){var o=i(e[s],s,e);if(null!=o&&""!==o)if(Array.isArray(o))for(var a=0;a<o.length;a++)r.push(o[a]);else r.push(o)}e=r}return e},L.Pipeline.prototype.runString=function(e,t){var n=new L.Token(e,t);return this.run([n]).map((function(e){return e.toString()}))},L.Pipeline.prototype.reset=function(){this._stack=[]},L.Pipeline.prototype.toJSON=function(){return this._stack.map((function(e){return L.Pipeline.warnIfFunctionNotRegistered(e),e.label}))},L.Vector=function(e){this._magnitude=0,this.elements=e||[]},L.Vector.prototype.positionForIndex=function(e){if(0==this.elements.length)return 0;for(var t=0,n=this.elements.length/2,i=n-t,r=Math.floor(i/2),s=this.elements[2*r];i>1&&(s<e&&(t=r),s>e&&(n=r),s!=e);)i=n-t,r=t+Math.floor(i/2),s=this.elements[2*r];return s==e||s>e?2*r:s<e?2*(r+1):void 0},L.Vector.prototype.insert=function(e,t){this.upsert(e,t,(function(){throw"duplicate index"}))},L.Vector.prototype.upsert=function(e,t,n){this._magnitude=0;var i=this.positionForIndex(e);this.elements[i]==e?this.elements[i+1]=n(this.elements[i+1],t):this.elements.splice(i,0,e,t)},L.Vector.prototype.magnitude=function(){if(this._magnitude)return this._magnitude;for(var e=0,t=this.elements.length,n=1;n<t;n+=2){var i=this.elements[n];e+=i*i}return this._magnitude=Math.sqrt(e)},L.Vector.prototype.dot=function(e){for(var t=0,n=this.elements,i=e.elements,r=n.length,s=i.length,o=0,a=0,u=0,c=0;u<r&&c<s;)(o=n[u])<(a=i[c])?u+=2:o>a?c+=2:o==a&&(t+=n[u+1]*i[c+1],u+=2,c+=2);return t},L.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},L.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,n=0;t<this.elements.length;t+=2,n++)e[n]=this.elements[t];return e},L.Vector.prototype.toJSON=function(){return this.elements},L.stemmer=(o={ational:"ate",tional:"tion",enci:"ence",anci:"ance",izer:"ize",bli:"ble",alli:"al",entli:"ent",eli:"e",ousli:"ous",ization:"ize",ation:"ate",ator:"ate",alism:"al",iveness:"ive",fulness:"ful",ousness:"ous",aliti:"al",iviti:"ive",biliti:"ble",logi:"log"},a={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},u="[aeiouy]",c="[^aeiou][^aeiouy]*",l=new RegExp("^([^aeiou][^aeiouy]*)?[aeiouy][aeiou]*[^aeiou][^aeiouy]*"),h=new RegExp("^([^aeiou][^aeiouy]*)?[aeiouy][aeiou]*[^aeiou][^aeiouy]*[aeiouy][aeiou]*[^aeiou][^aeiouy]*"),f=new RegExp("^([^aeiou][^aeiouy]*)?[aeiouy][aeiou]*[^aeiou][^aeiouy]*([aeiouy][aeiou]*)?$"),p=new RegExp("^([^aeiou][^aeiouy]*)?[aeiouy]"),d=/^(.+?)(ss|i)es$/,m=/^(.+?)([^s])s$/,g=/^(.+?)eed$/,y=/^(.+?)(ed|ing)$/,v=/.$/,w=/(at|bl|iz)$/,b=new RegExp("([^aeiouylsz])\\1$"),x=new RegExp("^"+c+u+"[^aeiouwxy]$"),_=/^(.+?[^aeiou])y$/,k=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,C=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,S=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,E=/^(.+?)(s|t)(ion)$/,T=/^(.+?)e$/,A=/ll$/,P=new RegExp("^"+c+u+"[^aeiouwxy]$"),O=function(e){var t,n,i,r,s,u,c;if(e.length<3)return e;if("y"==(i=e.substr(0,1))&&(e=i.toUpperCase()+e.substr(1)),s=m,(r=d).test(e)?e=e.replace(r,"$1$2"):s.test(e)&&(e=e.replace(s,"$1$2")),s=y,(r=g).test(e)){var O=r.exec(e);(r=l).test(O[1])&&(r=v,e=e.replace(r,""))}else s.test(e)&&(t=(O=s.exec(e))[1],(s=p).test(t)&&(u=b,c=x,(s=w).test(e=t)?e+="e":u.test(e)?(r=v,e=e.replace(r,"")):c.test(e)&&(e+="e")));return(r=_).test(e)&&(e=(t=(O=r.exec(e))[1])+"i"),(r=k).test(e)&&(t=(O=r.exec(e))[1],n=O[2],(r=l).test(t)&&(e=t+o[n])),(r=C).test(e)&&(t=(O=r.exec(e))[1],n=O[2],(r=l).test(t)&&(e=t+a[n])),s=E,(r=S).test(e)?(t=(O=r.exec(e))[1],(r=h).test(t)&&(e=t)):s.test(e)&&(t=(O=s.exec(e))[1]+O[2],(s=h).test(t)&&(e=t)),(r=T).test(e)&&(t=(O=r.exec(e))[1],s=f,u=P,((r=h).test(t)||s.test(t)&&!u.test(t))&&(e=t)),s=h,(r=A).test(e)&&s.test(e)&&(r=v,e=e.replace(r,"")),"y"==i&&(e=i.toLowerCase()+e.substr(1)),e},function(e){return e.update(O)}),L.Pipeline.registerFunction(L.stemmer,"stemmer"),L.generateStopWordFilter=function(e){var t=e.reduce((function(e,t){return e[t]=t,e}),{});return function(e){if(e&&t[e.toString()]!==e.toString())return e}},L.stopWordFilter=L.generateStopWordFilter(["a","able","about","across","after","all","almost","also","am","among","an","and","any","are","as","at","be","because","been","but","by","can","cannot","could","dear","did","do","does","either","else","ever","every","for","from","get","got","had","has","have","he","her","hers","him","his","how","however","i","if","in","into","is","it","its","just","least","let","like","likely","may","me","might","most","must","my","neither","no","nor","not","of","off","often","on","only","or","other","our","own","rather","said","say","says","she","should","since","so","some","than","that","the","their","them","then","there","these","they","this","tis","to","too","twas","us","wants","was","we","were","what","when","where","which","while","who","whom","why","will","with","would","yet","you","your"]),L.Pipeline.registerFunction(L.stopWordFilter,"stopWordFilter"),L.trimmer=function(e){return e.update((function(e){return e.replace(/^\W+/,"").replace(/\W+$/,"")}))},L.Pipeline.registerFunction(L.trimmer,"trimmer"),L.TokenSet=function(){this.final=!1,this.edges={},this.id=L.TokenSet._nextId,L.TokenSet._nextId+=1},L.TokenSet._nextId=1,L.TokenSet.fromArray=function(e){for(var t=new L.TokenSet.Builder,n=0,i=e.length;n<i;n++)t.insert(e[n]);return t.finish(),t.root},L.TokenSet.fromClause=function(e){return"editDistance"in e?L.TokenSet.fromFuzzyString(e.term,e.editDistance):L.TokenSet.fromString(e.term)},L.TokenSet.fromFuzzyString=function(e,t){for(var n=new L.TokenSet,i=[{node:n,editsRemaining:t,str:e}];i.length;){var r=i.pop();if(r.str.length>0){var s,o=r.str.charAt(0);o in r.node.edges?s=r.node.edges[o]:(s=new L.TokenSet,r.node.edges[o]=s),1==r.str.length&&(s.final=!0),i.push({node:s,editsRemaining:r.editsRemaining,str:r.str.slice(1)})}if(0!=r.editsRemaining){if("*"in r.node.edges)var a=r.node.edges["*"];else{a=new L.TokenSet;r.node.edges["*"]=a}if(0==r.str.length&&(a.final=!0),i.push({node:a,editsRemaining:r.editsRemaining-1,str:r.str}),r.str.length>1&&i.push({node:r.node,editsRemaining:r.editsRemaining-1,str:r.str.slice(1)}),1==r.str.length&&(r.node.final=!0),r.str.length>=1){if("*"in r.node.edges)var u=r.node.edges["*"];else{u=new L.TokenSet;r.node.edges["*"]=u}1==r.str.length&&(u.final=!0),i.push({node:u,editsRemaining:r.editsRemaining-1,str:r.str.slice(1)})}if(r.str.length>1){var c,l=r.str.charAt(0),h=r.str.charAt(1);h in r.node.edges?c=r.node.edges[h]:(c=new L.TokenSet,r.node.edges[h]=c),1==r.str.length&&(c.final=!0),i.push({node:c,editsRemaining:r.editsRemaining-1,str:l+r.str.slice(2)})}}}return n},L.TokenSet.fromString=function(e){for(var t=new L.TokenSet,n=t,i=0,r=e.length;i<r;i++){var s=e[i],o=i==r-1;if("*"==s)t.edges[s]=t,t.final=o;else{var a=new L.TokenSet;a.final=o,t.edges[s]=a,t=a}}return n},L.TokenSet.prototype.toArray=function(){for(var e=[],t=[{prefix:"",node:this}];t.length;){var n=t.pop(),i=Object.keys(n.node.edges),r=i.length;n.node.final&&(n.prefix.charAt(0),e.push(n.prefix));for(var s=0;s<r;s++){var o=i[s];t.push({prefix:n.prefix.concat(o),node:n.node.edges[o]})}}return e},L.TokenSet.prototype.toString=function(){if(this._str)return this._str;for(var e=this.final?"1":"0",t=Object.keys(this.edges).sort(),n=t.length,i=0;i<n;i++){var r=t[i];e=e+r+this.edges[r].id}return e},L.TokenSet.prototype.intersect=function(e){for(var t=new L.TokenSet,n=void 0,i=[{qNode:e,output:t,node:this}];i.length;){n=i.pop();for(var r=Object.keys(n.qNode.edges),s=r.length,o=Object.keys(n.node.edges),a=o.length,u=0;u<s;u++)for(var c=r[u],l=0;l<a;l++){var h=o[l];if(h==c||"*"==c){var f=n.node.edges[h],p=n.qNode.edges[c],d=f.final&&p.final,m=void 0;h in n.output.edges?(m=n.output.edges[h]).final=m.final||d:((m=new L.TokenSet).final=d,n.output.edges[h]=m),i.push({qNode:p,output:m,node:f})}}}return t},L.TokenSet.Builder=function(){this.previousWord="",this.root=new L.TokenSet,this.uncheckedNodes=[],this.minimizedNodes={}},L.TokenSet.Builder.prototype.insert=function(e){var t,n=0;if(e<this.previousWord)throw new Error("Out of order word insertion");for(var i=0;i<e.length&&i<this.previousWord.length&&e[i]==this.previousWord[i];i++)n++;this.minimize(n),t=0==this.uncheckedNodes.length?this.root:this.uncheckedNodes[this.uncheckedNodes.length-1].child;for(i=n;i<e.length;i++){var r=new L.TokenSet,s=e[i];t.edges[s]=r,this.uncheckedNodes.push({parent:t,char:s,child:r}),t=r}t.final=!0,this.previousWord=e},L.TokenSet.Builder.prototype.finish=function(){this.minimize(0)},L.TokenSet.Builder.prototype.minimize=function(e){for(var t=this.uncheckedNodes.length-1;t>=e;t--){var n=this.uncheckedNodes[t],i=n.child.toString();i in this.minimizedNodes?n.parent.edges[n.char]=this.minimizedNodes[i]:(n.child._str=i,this.minimizedNodes[i]=n.child),this.uncheckedNodes.pop()}},L.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},L.Index.prototype.search=function(e){return this.query((function(t){new L.QueryParser(e,t).parse()}))},L.Index.prototype.query=function(e){for(var t=new L.Query(this.fields),n=Object.create(null),i=Object.create(null),r=Object.create(null),s=Object.create(null),o=Object.create(null),a=0;a<this.fields.length;a++)i[this.fields[a]]=new L.Vector;e.call(t,t);for(a=0;a<t.clauses.length;a++){var u=t.clauses[a],c=null,l=L.Set.empty;c=u.usePipeline?this.pipeline.runString(u.term,{fields:u.fields}):[u.term];for(var h=0;h<c.length;h++){var f=c[h];u.term=f;var p=L.TokenSet.fromClause(u),d=this.tokenSet.intersect(p).toArray();if(0===d.length&&u.presence===L.Query.presence.REQUIRED){for(var m=0;m<u.fields.length;m++){s[Q=u.fields[m]]=L.Set.empty}break}for(var g=0;g<d.length;g++){var y=d[g],v=this.invertedIndex[y],w=v._index;for(m=0;m<u.fields.length;m++){var b=v[Q=u.fields[m]],x=Object.keys(b),_=y+"/"+Q,k=new L.Set(x);if(u.presence==L.Query.presence.REQUIRED&&(l=l.union(k),void 0===s[Q]&&(s[Q]=L.Set.complete)),u.presence!=L.Query.presence.PROHIBITED){if(i[Q].upsert(w,u.boost,(function(e,t){return e+t})),!r[_]){for(var C=0;C<x.length;C++){var S,E=x[C],T=new L.FieldRef(E,Q),A=b[E];void 0===(S=n[T])?n[T]=new L.MatchData(y,Q,A):S.add(y,Q,A)}r[_]=!0}}else void 0===o[Q]&&(o[Q]=L.Set.empty),o[Q]=o[Q].union(k)}}}if(u.presence===L.Query.presence.REQUIRED)for(m=0;m<u.fields.length;m++){s[Q=u.fields[m]]=s[Q].intersect(l)}}var P=L.Set.complete,O=L.Set.empty;for(a=0;a<this.fields.length;a++){var Q;s[Q=this.fields[a]]&&(P=P.intersect(s[Q])),o[Q]&&(O=O.union(o[Q]))}var I=Object.keys(n),N=[],$=Object.create(null);if(t.isNegated()){I=Object.keys(this.fieldVectors);for(a=0;a<I.length;a++){T=I[a];var D=L.FieldRef.fromString(T);n[T]=new L.MatchData}}for(a=0;a<I.length;a++){var F=(D=L.FieldRef.fromString(I[a])).docRef;if(P.contains(F)&&!O.contains(F)){var R,j=this.fieldVectors[D],M=i[D.fieldName].similarity(j);if(void 0!==(R=$[F]))R.score+=M,R.matchData.combine(n[D]);else{var V={ref:F,score:M,matchData:n[D]};$[F]=V,N.push(V)}}}return N.sort((function(e,t){return t.score-e.score}))},L.Index.prototype.toJSON=function(){var e=Object.keys(this.invertedIndex).sort().map((function(e){return[e,this.invertedIndex[e]]}),this),t=Object.keys(this.fieldVectors).map((function(e){return[e,this.fieldVectors[e].toJSON()]}),this);return{version:L.version,fields:this.fields,fieldVectors:t,invertedIndex:e,pipeline:this.pipeline.toJSON()}},L.Index.load=function(e){var t={},n={},i=e.fieldVectors,r=Object.create(null),s=e.invertedIndex,o=new L.TokenSet.Builder,a=L.Pipeline.load(e.pipeline);e.version!=L.version&&L.utils.warn("Version mismatch when loading serialised index. Current version of lunr '"+L.version+"' does not match serialized index '"+e.version+"'");for(var u=0;u<i.length;u++){var c=(h=i[u])[0],l=h[1];n[c]=new L.Vector(l)}for(u=0;u<s.length;u++){var h,f=(h=s[u])[0],p=h[1];o.insert(f),r[f]=p}return o.finish(),t.fields=e.fields,t.fieldVectors=n,t.invertedIndex=r,t.tokenSet=o.root,t.pipeline=a,new L.Index(t)},L.Builder=function(){this._ref="id",this._fields=Object.create(null),this._documents=Object.create(null),this.invertedIndex=Object.create(null),this.fieldTermFrequencies={},this.fieldLengths={},this.tokenizer=L.tokenizer,this.pipeline=new L.Pipeline,this.searchPipeline=new L.Pipeline,this.documentCount=0,this._b=.75,this._k1=1.2,this.termIndex=0,this.metadataWhitelist=[]},L.Builder.prototype.ref=function(e){this._ref=e},L.Builder.prototype.field=function(e,t){if(/\//.test(e))throw new RangeError("Field '"+e+"' contains illegal character '/'");this._fields[e]=t||{}},L.Builder.prototype.b=function(e){this._b=e<0?0:e>1?1:e},L.Builder.prototype.k1=function(e){this._k1=e},L.Builder.prototype.add=function(e,t){var n=e[this._ref],i=Object.keys(this._fields);this._documents[n]=t||{},this.documentCount+=1;for(var r=0;r<i.length;r++){var s=i[r],o=this._fields[s].extractor,a=o?o(e):e[s],u=this.tokenizer(a,{fields:[s]}),c=this.pipeline.run(u),l=new L.FieldRef(n,s),h=Object.create(null);this.fieldTermFrequencies[l]=h,this.fieldLengths[l]=0,this.fieldLengths[l]+=c.length;for(var f=0;f<c.length;f++){var p=c[f];if(null==h[p]&&(h[p]=0),h[p]+=1,null==this.invertedIndex[p]){var d=Object.create(null);d._index=this.termIndex,this.termIndex+=1;for(var m=0;m<i.length;m++)d[i[m]]=Object.create(null);this.invertedIndex[p]=d}null==this.invertedIndex[p][s][n]&&(this.invertedIndex[p][s][n]=Object.create(null));for(var g=0;g<this.metadataWhitelist.length;g++){var y=this.metadataWhitelist[g],v=p.metadata[y];null==this.invertedIndex[p][s][n][y]&&(this.invertedIndex[p][s][n][y]=[]),this.invertedIndex[p][s][n][y].push(v)}}}},L.Builder.prototype.calculateAverageFieldLengths=function(){for(var e=Object.keys(this.fieldLengths),t=e.length,n={},i={},r=0;r<t;r++){var s=L.FieldRef.fromString(e[r]),o=s.fieldName;i[o]||(i[o]=0),i[o]+=1,n[o]||(n[o]=0),n[o]+=this.fieldLengths[s]}var a=Object.keys(this._fields);for(r=0;r<a.length;r++){var u=a[r];n[u]=n[u]/i[u]}this.averageFieldLength=n},L.Builder.prototype.createFieldVectors=function(){for(var e={},t=Object.keys(this.fieldTermFrequencies),n=t.length,i=Object.create(null),r=0;r<n;r++){for(var s=L.FieldRef.fromString(t[r]),o=s.fieldName,a=this.fieldLengths[s],u=new L.Vector,c=this.fieldTermFrequencies[s],l=Object.keys(c),h=l.length,f=this._fields[o].boost||1,p=this._documents[s.docRef].boost||1,d=0;d<h;d++){var m,g,y,v=l[d],w=c[v],b=this.invertedIndex[v]._index;void 0===i[v]?(m=L.idf(this.invertedIndex[v],this.documentCount),i[v]=m):m=i[v],g=m*((this._k1+1)*w)/(this._k1*(1-this._b+this._b*(a/this.averageFieldLength[o]))+w),g*=f,g*=p,y=Math.round(1e3*g)/1e3,u.insert(b,y)}e[s]=u}this.fieldVectors=e},L.Builder.prototype.createTokenSet=function(){this.tokenSet=L.TokenSet.fromArray(Object.keys(this.invertedIndex).sort())},L.Builder.prototype.build=function(){return this.calculateAverageFieldLengths(),this.createFieldVectors(),this.createTokenSet(),new L.Index({invertedIndex:this.invertedIndex,fieldVectors:this.fieldVectors,tokenSet:this.tokenSet,fields:Object.keys(this._fields),pipeline:this.searchPipeline})},L.Builder.prototype.use=function(e){var t=Array.prototype.slice.call(arguments,1);t.unshift(this),e.apply(this,t)},L.MatchData=function(e,t,n){for(var i=Object.create(null),r=Object.keys(n||{}),s=0;s<r.length;s++){var o=r[s];i[o]=n[o].slice()}this.metadata=Object.create(null),void 0!==e&&(this.metadata[e]=Object.create(null),this.metadata[e][t]=i)},L.MatchData.prototype.combine=function(e){for(var t=Object.keys(e.metadata),n=0;n<t.length;n++){var i=t[n],r=Object.keys(e.metadata[i]);null==this.metadata[i]&&(this.metadata[i]=Object.create(null));for(var s=0;s<r.length;s++){var o=r[s],a=Object.keys(e.metadata[i][o]);null==this.metadata[i][o]&&(this.metadata[i][o]=Object.create(null));for(var u=0;u<a.length;u++){var c=a[u];null==this.metadata[i][o][c]?this.metadata[i][o][c]=e.metadata[i][o][c]:this.metadata[i][o][c]=this.metadata[i][o][c].concat(e.metadata[i][o][c])}}}},L.MatchData.prototype.add=function(e,t,n){if(!(e in this.metadata))return this.metadata[e]=Object.create(null),void(this.metadata[e][t]=n);if(t in this.metadata[e])for(var i=Object.keys(n),r=0;r<i.length;r++){var s=i[r];s in this.metadata[e][t]?this.metadata[e][t][s]=this.metadata[e][t][s].concat(n[s]):this.metadata[e][t][s]=n[s]}else this.metadata[e][t]=n},L.Query=function(e){this.clauses=[],this.allFields=e},L.Query.wildcard=new String("*"),L.Query.wildcard.NONE=0,L.Query.wildcard.LEADING=1,L.Query.wildcard.TRAILING=2,L.Query.presence={OPTIONAL:1,REQUIRED:2,PROHIBITED:3},L.Query.prototype.clause=function(e){return"fields"in e||(e.fields=this.allFields),"boost"in e||(e.boost=1),"usePipeline"in e||(e.usePipeline=!0),"wildcard"in e||(e.wildcard=L.Query.wildcard.NONE),e.wildcard&L.Query.wildcard.LEADING&&e.term.charAt(0)!=L.Query.wildcard&&(e.term="*"+e.term),e.wildcard&L.Query.wildcard.TRAILING&&e.term.slice(-1)!=L.Query.wildcard&&(e.term=e.term+"*"),"presence"in e||(e.presence=L.Query.presence.OPTIONAL),this.clauses.push(e),this},L.Query.prototype.isNegated=function(){for(var e=0;e<this.clauses.length;e++)if(this.clauses[e].presence!=L.Query.presence.PROHIBITED)return!1;return!0},L.Query.prototype.term=function(e,t){if(Array.isArray(e))return e.forEach((function(e){this.term(e,L.utils.clone(t))}),this),this;var n=t||{};return n.term=e.toString(),this.clause(n),this},L.QueryParseError=function(e,t,n){this.name="QueryParseError",this.message=e,this.start=t,this.end=n},L.QueryParseError.prototype=new Error,L.QueryLexer=function(e){this.lexemes=[],this.str=e,this.length=e.length,this.pos=0,this.start=0,this.escapeCharPositions=[]},L.QueryLexer.prototype.run=function(){for(var e=L.QueryLexer.lexText;e;)e=e(this)},L.QueryLexer.prototype.sliceString=function(){for(var e=[],t=this.start,n=this.pos,i=0;i<this.escapeCharPositions.length;i++)n=this.escapeCharPositions[i],e.push(this.str.slice(t,n)),t=n+1;return e.push(this.str.slice(t,this.pos)),this.escapeCharPositions.length=0,e.join("")},L.QueryLexer.prototype.emit=function(e){this.lexemes.push({type:e,str:this.sliceString(),start:this.start,end:this.pos}),this.start=this.pos},L.QueryLexer.prototype.escapeCharacter=function(){this.escapeCharPositions.push(this.pos-1),this.pos+=1},L.QueryLexer.prototype.next=function(){if(this.pos>=this.length)return L.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},L.QueryLexer.prototype.width=function(){return this.pos-this.start},L.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},L.QueryLexer.prototype.backup=function(){this.pos-=1},L.QueryLexer.prototype.acceptDigitRun=function(){var e,t;do{t=(e=this.next()).charCodeAt(0)}while(t>47&&t<58);e!=L.QueryLexer.EOS&&this.backup()},L.QueryLexer.prototype.more=function(){return this.pos<this.length},L.QueryLexer.EOS="EOS",L.QueryLexer.FIELD="FIELD",L.QueryLexer.TERM="TERM",L.QueryLexer.EDIT_DISTANCE="EDIT_DISTANCE",L.QueryLexer.BOOST="BOOST",L.QueryLexer.PRESENCE="PRESENCE",L.QueryLexer.lexField=function(e){return e.backup(),e.emit(L.QueryLexer.FIELD),e.ignore(),L.QueryLexer.lexText},L.QueryLexer.lexTerm=function(e){if(e.width()>1&&(e.backup(),e.emit(L.QueryLexer.TERM)),e.ignore(),e.more())return L.QueryLexer.lexText},L.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(L.QueryLexer.EDIT_DISTANCE),L.QueryLexer.lexText},L.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(L.QueryLexer.BOOST),L.QueryLexer.lexText},L.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(L.QueryLexer.TERM)},L.QueryLexer.termSeparator=L.tokenizer.separator,L.QueryLexer.lexText=function(e){for(;;){var t=e.next();if(t==L.QueryLexer.EOS)return L.QueryLexer.lexEOS;if(92!=t.charCodeAt(0)){if(":"==t)return L.QueryLexer.lexField;if("~"==t)return e.backup(),e.width()>0&&e.emit(L.QueryLexer.TERM),L.QueryLexer.lexEditDistance;if("^"==t)return e.backup(),e.width()>0&&e.emit(L.QueryLexer.TERM),L.QueryLexer.lexBoost;if("+"==t&&1===e.width())return e.emit(L.QueryLexer.PRESENCE),L.QueryLexer.lexText;if("-"==t&&1===e.width())return e.emit(L.QueryLexer.PRESENCE),L.QueryLexer.lexText;if(t.match(L.QueryLexer.termSeparator))return L.QueryLexer.lexTerm}else e.escapeCharacter()}},L.QueryParser=function(e,t){this.lexer=new L.QueryLexer(e),this.query=t,this.currentClause={},this.lexemeIdx=0},L.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=L.QueryParser.parseClause;e;)e=e(this);return this.query},L.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},L.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},L.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},L.QueryParser.parseClause=function(e){var t=e.peekLexeme();if(null!=t)switch(t.type){case L.QueryLexer.PRESENCE:return L.QueryParser.parsePresence;case L.QueryLexer.FIELD:return L.QueryParser.parseField;case L.QueryLexer.TERM:return L.QueryParser.parseTerm;default:var n="expected either a field or a term, found "+t.type;throw t.str.length>=1&&(n+=" with value '"+t.str+"'"),new L.QueryParseError(n,t.start,t.end)}},L.QueryParser.parsePresence=function(e){var t=e.consumeLexeme();if(null!=t){switch(t.str){case"-":e.currentClause.presence=L.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=L.Query.presence.REQUIRED;break;default:var n="unrecognised presence operator'"+t.str+"'";throw new L.QueryParseError(n,t.start,t.end)}var i=e.peekLexeme();if(null==i){n="expecting term or field, found nothing";throw new L.QueryParseError(n,t.start,t.end)}switch(i.type){case L.QueryLexer.FIELD:return L.QueryParser.parseField;case L.QueryLexer.TERM:return L.QueryParser.parseTerm;default:n="expecting term or field, found '"+i.type+"'";throw new L.QueryParseError(n,i.start,i.end)}}},L.QueryParser.parseField=function(e){var t=e.consumeLexeme();if(null!=t){if(-1==e.query.allFields.indexOf(t.str)){var n=e.query.allFields.map((function(e){return"'"+e+"'"})).join(", "),i="unrecognised field '"+t.str+"', possible fields: "+n;throw new L.QueryParseError(i,t.start,t.end)}e.currentClause.fields=[t.str];var r=e.peekLexeme();if(null==r){i="expecting term, found nothing";throw new L.QueryParseError(i,t.start,t.end)}switch(r.type){case L.QueryLexer.TERM:return L.QueryParser.parseTerm;default:i="expecting term, found '"+r.type+"'";throw new L.QueryParseError(i,r.start,r.end)}}},L.QueryParser.parseTerm=function(e){var t=e.consumeLexeme();if(null!=t){e.currentClause.term=t.str.toLowerCase(),-1!=t.str.indexOf("*")&&(e.currentClause.usePipeline=!1);var n=e.peekLexeme();if(null!=n)switch(n.type){case L.QueryLexer.TERM:return e.nextClause(),L.QueryParser.parseTerm;case L.QueryLexer.FIELD:return e.nextClause(),L.QueryParser.parseField;case L.QueryLexer.EDIT_DISTANCE:return L.QueryParser.parseEditDistance;case L.QueryLexer.BOOST:return L.QueryParser.parseBoost;case L.QueryLexer.PRESENCE:return e.nextClause(),L.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+n.type+"'";throw new L.QueryParseError(i,n.start,n.end)}else e.nextClause()}},L.QueryParser.parseEditDistance=function(e){var t=e.consumeLexeme();if(null!=t){var n=parseInt(t.str,10);if(isNaN(n)){var i="edit distance must be numeric";throw new L.QueryParseError(i,t.start,t.end)}e.currentClause.editDistance=n;var r=e.peekLexeme();if(null!=r)switch(r.type){case L.QueryLexer.TERM:return e.nextClause(),L.QueryParser.parseTerm;case L.QueryLexer.FIELD:return e.nextClause(),L.QueryParser.parseField;case L.QueryLexer.EDIT_DISTANCE:return L.QueryParser.parseEditDistance;case L.QueryLexer.BOOST:return L.QueryParser.parseBoost;case L.QueryLexer.PRESENCE:return e.nextClause(),L.QueryParser.parsePresence;default:i="Unexpected lexeme type '"+r.type+"'";throw new L.QueryParseError(i,r.start,r.end)}else e.nextClause()}},L.QueryParser.parseBoost=function(e){var t=e.consumeLexeme();if(null!=t){var n=parseInt(t.str,10);if(isNaN(n)){var i="boost must be numeric";throw new L.QueryParseError(i,t.start,t.end)}e.currentClause.boost=n;var r=e.peekLexeme();if(null!=r)switch(r.type){case L.QueryLexer.TERM:return e.nextClause(),L.QueryParser.parseTerm;case L.QueryLexer.FIELD:return e.nextClause(),L.QueryParser.parseField;case L.QueryLexer.EDIT_DISTANCE:return L.QueryParser.parseEditDistance;case L.QueryLexer.BOOST:return L.QueryParser.parseBoost;case L.QueryLexer.PRESENCE:return e.nextClause(),L.QueryParser.parsePresence;default:i="Unexpected lexeme type '"+r.type+"'";throw new L.QueryParseError(i,r.start,r.end)}else e.nextClause()}},void 0===(r="function"==typeof(i=function(){return L})?i.call(t,n,t,e):i)||(e.exports=r)}()},308:function(e,t,n){var i,r;void 0===(r="function"==typeof(i=function(){return function(e){e.stemmerSupport={Among:function(e,t,n,i){if(this.toCharArray=function(e){for(var t=e.length,n=new Array(t),i=0;i<t;i++)n[i]=e.charCodeAt(i);return n},!e&&""!=e||!t&&0!=t||!n)throw"Bad Among initialisation: s:"+e+", substring_i: "+t+", result: "+n;this.s_size=e.length,this.s=this.toCharArray(e),this.substring_i=t,this.result=n,this.method=i},SnowballProgram:function(){var e;return{bra:0,ket:0,limit:0,cursor:0,limit_backward:0,setCurrent:function(t){e=t,this.cursor=0,this.limit=t.length,this.limit_backward=0,this.bra=this.cursor,this.ket=this.limit},getCurrent:function(){var t=e;return e=null,t},in_grouping:function(t,n,i){if(this.cursor<this.limit){var r=e.charCodeAt(this.cursor);if(r<=i&&r>=n&&t[(r-=n)>>3]&1<<(7&r))return this.cursor++,!0}return!1},in_grouping_b:function(t,n,i){if(this.cursor>this.limit_backward){var r=e.charCodeAt(this.cursor-1);if(r<=i&&r>=n&&t[(r-=n)>>3]&1<<(7&r))return this.cursor--,!0}return!1},out_grouping:function(t,n,i){if(this.cursor<this.limit){var r=e.charCodeAt(this.cursor);if(r>i||r<n)return this.cursor++,!0;if(!(t[(r-=n)>>3]&1<<(7&r)))return this.cursor++,!0}return!1},out_grouping_b:function(t,n,i){if(this.cursor>this.limit_backward){var r=e.charCodeAt(this.cursor-1);if(r>i||r<n)return this.cursor--,!0;if(!(t[(r-=n)>>3]&1<<(7&r)))return this.cursor--,!0}return!1},eq_s:function(t,n){if(this.limit-this.cursor<t)return!1;for(var i=0;i<t;i++)if(e.charCodeAt(this.cursor+i)!=n.charCodeAt(i))return!1;return this.cursor+=t,!0},eq_s_b:function(t,n){if(this.cursor-this.limit_backward<t)return!1;for(var i=0;i<t;i++)if(e.charCodeAt(this.cursor-t+i)!=n.charCodeAt(i))return!1;return this.cursor-=t,!0},find_among:function(t,n){for(var i=0,r=n,s=this.cursor,o=this.limit,a=0,u=0,c=!1;;){for(var l=i+(r-i>>1),h=0,f=a<u?a:u,p=t[l],d=f;d<p.s_size;d++){if(s+f==o){h=-1;break}if(h=e.charCodeAt(s+f)-p.s[d])break;f++}if(h<0?(r=l,u=f):(i=l,a=f),r-i<=1){if(i>0||r==i||c)break;c=!0}}for(;;){if(a>=(p=t[i]).s_size){if(this.cursor=s+p.s_size,!p.method)return p.result;var m=p.method();if(this.cursor=s+p.s_size,m)return p.result}if((i=p.substring_i)<0)return 0}},find_among_b:function(t,n){for(var i=0,r=n,s=this.cursor,o=this.limit_backward,a=0,u=0,c=!1;;){for(var l=i+(r-i>>1),h=0,f=a<u?a:u,p=(d=t[l]).s_size-1-f;p>=0;p--){if(s-f==o){h=-1;break}if(h=e.charCodeAt(s-1-f)-d.s[p])break;f++}if(h<0?(r=l,u=f):(i=l,a=f),r-i<=1){if(i>0||r==i||c)break;c=!0}}for(;;){var d;if(a>=(d=t[i]).s_size){if(this.cursor=s-d.s_size,!d.method)return d.result;var m=d.method();if(this.cursor=s-d.s_size,m)return d.result}if((i=d.substring_i)<0)return 0}},replace_s:function(t,n,i){var r=i.length-(n-t),s=e.substring(0,t),o=e.substring(n);return e=s+i+o,this.limit+=r,this.cursor>=n?this.cursor+=r:this.cursor>t&&(this.cursor=t),r},slice_check:function(){if(this.bra<0||this.bra>this.ket||this.ket>this.limit||this.limit>e.length)throw"faulty slice operation"},slice_from:function(e){this.slice_check(),this.replace_s(this.bra,this.ket,e)},slice_del:function(){this.slice_from("")},insert:function(e,t,n){var i=this.replace_s(e,t,n);e<=this.bra&&(this.bra+=i),e<=this.ket&&(this.ket+=i)},slice_to:function(){return this.slice_check(),e.substring(this.bra,this.ket)},eq_v_b:function(e){return this.eq_s_b(e.length,e)}}}},e.trimmerSupport={generateTrimmer:function(e){var t=new RegExp("^[^"+e+"]+"),n=new RegExp("[^"+e+"]+$");return function(e){return"function"==typeof e.update?e.update((function(e){return e.replace(t,"").replace(n,"")})):e.replace(t,"").replace(n,"")}}}}})?i.call(t,n,t,e):i)||(e.exports=r)},309:function(e,t,n){var i,r;void 0===(r="function"==typeof(i=function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var t,n,i;e.de=function(){this.pipeline.reset(),this.pipeline.add(e.de.trimmer,e.de.stopWordFilter,e.de.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.de.stemmer))},e.de.wordCharacters="A-Za-z\xaa\xba\xc0-\xd6\xd8-\xf6\xf8-\u02b8\u02e0-\u02e4\u1d00-\u1d25\u1d2c-\u1d5c\u1d62-\u1d65\u1d6b-\u1d77\u1d79-\u1dbe\u1e00-\u1eff\u2071\u207f\u2090-\u209c\u212a\u212b\u2132\u214e\u2160-\u2188\u2c60-\u2c7f\ua722-\ua787\ua78b-\ua7ad\ua7b0-\ua7b7\ua7f7-\ua7ff\uab30-\uab5a\uab5c-\uab64\ufb00-\ufb06\uff21-\uff3a\uff41-\uff5a",e.de.trimmer=e.trimmerSupport.generateTrimmer(e.de.wordCharacters),e.Pipeline.registerFunction(e.de.trimmer,"trimmer-de"),e.de.stemmer=(t=e.stemmerSupport.Among,n=e.stemmerSupport.SnowballProgram,i=new function(){var e,i,r,s=[new t("",-1,6),new t("U",0,2),new t("Y",0,1),new t("\xe4",0,3),new t("\xf6",0,4),new t("\xfc",0,5)],o=[new t("e",-1,2),new t("em",-1,1),new t("en",-1,2),new t("ern",-1,1),new t("er",-1,1),new t("s",-1,3),new t("es",5,2)],a=[new t("en",-1,1),new t("er",-1,1),new t("st",-1,2),new t("est",2,1)],u=[new t("ig",-1,1),new t("lich",-1,1)],c=[new t("end",-1,1),new t("ig",-1,2),new t("ung",-1,1),new t("lich",-1,3),new t("isch",-1,2),new t("ik",-1,2),new t("heit",-1,3),new t("keit",-1,4)],l=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,8,0,32,8],h=[117,30,5],f=[117,30,4],p=new n;function d(e,t,n){return!(!p.eq_s(1,e)||(p.ket=p.cursor,!p.in_grouping(l,97,252))||(p.slice_from(t),p.cursor=n,0))}function m(){for(var e,t,n,i,r=p.cursor;;)if(e=p.cursor,p.bra=e,p.eq_s(1,"\xdf"))p.ket=p.cursor,p.slice_from("ss");else{if(e>=p.limit)break;p.cursor=e+1}for(p.cursor=r;;)for(t=p.cursor;;){if(n=p.cursor,p.in_grouping(l,97,252)){if(i=p.cursor,p.bra=i,d("u","U",n))break;if(p.cursor=i,d("y","Y",n))break}if(n>=p.limit)return void(p.cursor=t);p.cursor=n+1}}function g(){for(;!p.in_grouping(l,97,252);){if(p.cursor>=p.limit)return!0;p.cursor++}for(;!p.out_grouping(l,97,252);){if(p.cursor>=p.limit)return!0;p.cursor++}return!1}function y(){r=p.limit,i=r;var t=p.cursor+3;0<=t&&t<=p.limit&&(e=t,g()||((r=p.cursor)<e&&(r=e),g()||(i=p.cursor)))}function v(){for(var e,t;;){if(t=p.cursor,p.bra=t,!(e=p.find_among(s,6)))return;switch(p.ket=p.cursor,e){case 1:p.slice_from("y");break;case 2:case 5:p.slice_from("u");break;case 3:p.slice_from("a");break;case 4:p.slice_from("o");break;case 6:if(p.cursor>=p.limit)return;p.cursor++}}}function w(){return r<=p.cursor}function b(){return i<=p.cursor}function x(){var e,t,n,i,r=p.limit-p.cursor;if(p.ket=p.cursor,(e=p.find_among_b(o,7))&&(p.bra=p.cursor,w()))switch(e){case 1:p.slice_del();break;case 2:p.slice_del(),p.ket=p.cursor,p.eq_s_b(1,"s")&&(p.bra=p.cursor,p.eq_s_b(3,"nis")&&p.slice_del());break;case 3:p.in_grouping_b(h,98,116)&&p.slice_del()}if(p.cursor=p.limit-r,p.ket=p.cursor,(e=p.find_among_b(a,4))&&(p.bra=p.cursor,w()))switch(e){case 1:p.slice_del();break;case 2:if(p.in_grouping_b(f,98,116)){var s=p.cursor-3;p.limit_backward<=s&&s<=p.limit&&(p.cursor=s,p.slice_del())}}if(p.cursor=p.limit-r,p.ket=p.cursor,(e=p.find_among_b(c,8))&&(p.bra=p.cursor,b()))switch(e){case 1:p.slice_del(),p.ket=p.cursor,p.eq_s_b(2,"ig")&&(p.bra=p.cursor,t=p.limit-p.cursor,p.eq_s_b(1,"e")||(p.cursor=p.limit-t,b()&&p.slice_del()));break;case 2:n=p.limit-p.cursor,p.eq_s_b(1,"e")||(p.cursor=p.limit-n,p.slice_del());break;case 3:if(p.slice_del(),p.ket=p.cursor,i=p.limit-p.cursor,!p.eq_s_b(2,"er")&&(p.cursor=p.limit-i,!p.eq_s_b(2,"en")))break;p.bra=p.cursor,w()&&p.slice_del();break;case 4:p.slice_del(),p.ket=p.cursor,(e=p.find_among_b(u,2))&&(p.bra=p.cursor,b()&&1==e&&p.slice_del())}}this.setCurrent=function(e){p.setCurrent(e)},this.getCurrent=function(){return p.getCurrent()},this.stem=function(){var e=p.cursor;return m(),p.cursor=e,y(),p.limit_backward=e,p.cursor=p.limit,x(),p.cursor=p.limit_backward,v(),!0}},function(e){return"function"==typeof e.update?e.update((function(e){return i.setCurrent(e),i.stem(),i.getCurrent()})):(i.setCurrent(e),i.stem(),i.getCurrent())}),e.Pipeline.registerFunction(e.de.stemmer,"stemmer-de"),e.de.stopWordFilter=e.generateStopWordFilter("aber alle allem allen aller alles als also am an ander andere anderem anderen anderer anderes anderm andern anderr anders auch auf aus bei bin bis bist da damit dann das dasselbe dazu da\xdf dein deine deinem deinen deiner deines dem demselben den denn denselben der derer derselbe derselben des desselben dessen dich die dies diese dieselbe dieselben diesem diesen dieser dieses dir doch dort du durch ein eine einem einen einer eines einig einige einigem einigen einiger einiges einmal er es etwas euch euer eure eurem euren eurer eures f\xfcr gegen gewesen hab habe haben hat hatte hatten hier hin hinter ich ihm ihn ihnen ihr ihre ihrem ihren ihrer ihres im in indem ins ist jede jedem jeden jeder jedes jene jenem jenen jener jenes jetzt kann kein keine keinem keinen keiner keines k\xf6nnen k\xf6nnte machen man manche manchem manchen mancher manches mein meine meinem meinen meiner meines mich mir mit muss musste nach nicht nichts noch nun nur ob oder ohne sehr sein seine seinem seinen seiner seines selbst sich sie sind so solche solchem solchen solcher solches soll sollte sondern sonst um und uns unse unsem unsen unser unses unter viel vom von vor war waren warst was weg weil weiter welche welchem welchen welcher welches wenn werde werden wie wieder will wir wird wirst wo wollen wollte w\xe4hrend w\xfcrde w\xfcrden zu zum zur zwar zwischen \xfcber".split(" ")),e.Pipeline.registerFunction(e.de.stopWordFilter,"stopWordFilter-de")}})?i.call(t,n,t,e):i)||(e.exports=r)},310:function(e,t,n){var i,r;void 0===(r="function"==typeof(i=function(){return function(e){e.multiLanguage=function(){for(var t=Array.prototype.slice.call(arguments),n=t.join("-"),i="",r=[],s=[],o=0;o<t.length;++o)"en"==t[o]?(i+="\\w",r.unshift(e.stopWordFilter),r.push(e.stemmer),s.push(e.stemmer)):(i+=e[t[o]].wordCharacters,e[t[o]].stopWordFilter&&r.unshift(e[t[o]].stopWordFilter),e[t[o]].stemmer&&(r.push(e[t[o]].stemmer),s.push(e[t[o]].stemmer)));var a=e.trimmerSupport.generateTrimmer(i);return e.Pipeline.registerFunction(a,"lunr-multi-trimmer-"+n),r.unshift(a),function(){this.pipeline.reset(),this.pipeline.add.apply(this.pipeline,r),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add.apply(this.searchPipeline,s))}}}})?i.call(t,n,t,e):i)||(e.exports=r)},311:function(e,t,n){"use strict";e.exports=n(312)},312:function(e,t,n){"use strict";var i=n(256);n(224).element=i;var r=n(215);r.isArray=i.isArray,r.isFunction=i.isFunction,r.isObject=i.isPlainObject,r.bind=i.proxy,r.each=function(e,t){i.each(e,(function(e,n){return t(n,e)}))},r.map=i.map,r.mixin=i.extend,r.Event=i.Event;var s="aaAutocomplete",o=n(313),a=n(272);function u(e,t,n,u){n=r.isArray(n)?n:[].slice.call(arguments,2);var c=i(e).each((function(e,r){var c=i(r),l=new a({el:c}),h=u||new o({input:c,eventBus:l,dropdownMenuContainer:t.dropdownMenuContainer,hint:void 0===t.hint||!!t.hint,minLength:t.minLength,autoselect:t.autoselect,autoselectOnBlur:t.autoselectOnBlur,tabAutocomplete:t.tabAutocomplete,openOnFocus:t.openOnFocus,templates:t.templates,debug:t.debug,clearOnSelected:t.clearOnSelected,cssClasses:t.cssClasses,datasets:n,keyboardShortcuts:t.keyboardShortcuts,appendTo:t.appendTo,autoWidth:t.autoWidth,ariaLabel:t.ariaLabel||r.getAttribute("aria-label")});c.data(s,h)}));return c.autocomplete={},r.each(["open","close","getVal","setVal","destroy","getWrapper"],(function(e){c.autocomplete[e]=function(){var t,n=arguments;return c.each((function(r,o){var a=i(o).data(s);t=a[e].apply(a,n)})),t}})),c}u.sources=o.sources,u.escapeHighlightedString=r.escapeHighlightedString;var c="autocomplete"in window,l=window.autocomplete;u.noConflict=function(){return c?window.autocomplete=l:delete window.autocomplete,u},e.exports=u},313:function(e,t,n){"use strict";var i="aaAttrs",r=n(215),s=n(224),o=n(272),a=n(314),u=n(322),c=n(273),l=n(258);function h(e){var t,n;if((e=e||{}).input||r.error("missing input"),this.isActivated=!1,this.debug=!!e.debug,this.autoselect=!!e.autoselect,this.autoselectOnBlur=!!e.autoselectOnBlur,this.openOnFocus=!!e.openOnFocus,this.minLength=r.isNumber(e.minLength)?e.minLength:1,this.autoWidth=void 0===e.autoWidth||!!e.autoWidth,this.clearOnSelected=!!e.clearOnSelected,this.tabAutocomplete=void 0===e.tabAutocomplete||!!e.tabAutocomplete,e.hint=!!e.hint,e.hint&&e.appendTo)throw new Error("[autocomplete.js] hint and appendTo options can't be used at the same time");this.css=e.css=r.mixin({},l,e.appendTo?l.appendTo:{}),this.cssClasses=e.cssClasses=r.mixin({},l.defaultClasses,e.cssClasses||{}),this.cssClasses.prefix=e.cssClasses.formattedPrefix=r.formatPrefix(this.cssClasses.prefix,this.cssClasses.noPrefix),this.listboxId=e.listboxId=[this.cssClasses.root,"listbox",r.getUniqueId()].join("-");var a=function(e){var t,n,o,a;t=s.element(e.input),n=s.element(c.wrapper.replace("%ROOT%",e.cssClasses.root)).css(e.css.wrapper),e.appendTo||"block"!==t.css("display")||"table"!==t.parent().css("display")||n.css("display","table-cell");var u=c.dropdown.replace("%PREFIX%",e.cssClasses.prefix).replace("%DROPDOWN_MENU%",e.cssClasses.dropdownMenu);o=s.element(u).css(e.css.dropdown).attr({role:"listbox",id:e.listboxId}),e.templates&&e.templates.dropdownMenu&&o.html(r.templatify(e.templates.dropdownMenu)());(a=t.clone().css(e.css.hint).css(function(e){return{backgroundAttachment:e.css("background-attachment"),backgroundClip:e.css("background-clip"),backgroundColor:e.css("background-color"),backgroundImage:e.css("background-image"),backgroundOrigin:e.css("background-origin"),backgroundPosition:e.css("background-position"),backgroundRepeat:e.css("background-repeat"),backgroundSize:e.css("background-size")}}(t))).val("").addClass(r.className(e.cssClasses.prefix,e.cssClasses.hint,!0)).removeAttr("id name placeholder required").prop("readonly",!0).attr({"aria-hidden":"true",autocomplete:"off",spellcheck:"false",tabindex:-1}),a.removeData&&a.removeData();t.data(i,{"aria-autocomplete":t.attr("aria-autocomplete"),"aria-expanded":t.attr("aria-expanded"),"aria-owns":t.attr("aria-owns"),autocomplete:t.attr("autocomplete"),dir:t.attr("dir"),role:t.attr("role"),spellcheck:t.attr("spellcheck"),style:t.attr("style"),type:t.attr("type")}),t.addClass(r.className(e.cssClasses.prefix,e.cssClasses.input,!0)).attr({autocomplete:"off",spellcheck:!1,role:"combobox","aria-autocomplete":e.datasets&&e.datasets[0]&&e.datasets[0].displayKey?"both":"list","aria-expanded":"false","aria-label":e.ariaLabel,"aria-owns":e.listboxId}).css(e.hint?e.css.input:e.css.inputWithNoHint);try{t.attr("dir")||t.attr("dir","auto")}catch(l){}return(n=e.appendTo?n.appendTo(s.element(e.appendTo).eq(0)).eq(0):t.wrap(n).parent()).prepend(e.hint?a:null).append(o),{wrapper:n,input:t,hint:a,menu:o}}(e);this.$node=a.wrapper;var u=this.$input=a.input;t=a.menu,n=a.hint,e.dropdownMenuContainer&&s.element(e.dropdownMenuContainer).css("position","relative").append(t.css("top","0")),u.on("blur.aa",(function(e){var n=document.activeElement;r.isMsie()&&(t[0]===n||t[0].contains(n))&&(e.preventDefault(),e.stopImmediatePropagation(),r.defer((function(){u.focus()})))})),t.on("mousedown.aa",(function(e){e.preventDefault()})),this.eventBus=e.eventBus||new o({el:u}),this.dropdown=new h.Dropdown({appendTo:e.appendTo,wrapper:this.$node,menu:t,datasets:e.datasets,templates:e.templates,cssClasses:e.cssClasses,minLength:this.minLength}).onSync("suggestionClicked",this._onSuggestionClicked,this).onSync("cursorMoved",this._onCursorMoved,this).onSync("cursorRemoved",this._onCursorRemoved,this).onSync("opened",this._onOpened,this).onSync("closed",this._onClosed,this).onSync("shown",this._onShown,this).onSync("empty",this._onEmpty,this).onSync("redrawn",this._onRedrawn,this).onAsync("datasetRendered",this._onDatasetRendered,this),this.input=new h.Input({input:u,hint:n}).onSync("focused",this._onFocused,this).onSync("blurred",this._onBlurred,this).onSync("enterKeyed",this._onEnterKeyed,this).onSync("tabKeyed",this._onTabKeyed,this).onSync("escKeyed",this._onEscKeyed,this).onSync("upKeyed",this._onUpKeyed,this).onSync("downKeyed",this._onDownKeyed,this).onSync("leftKeyed",this._onLeftKeyed,this).onSync("rightKeyed",this._onRightKeyed,this).onSync("queryChanged",this._onQueryChanged,this).onSync("whitespaceChanged",this._onWhitespaceChanged,this),this._bindKeyboardShortcuts(e),this._setLanguageDirection()}r.mixin(h.prototype,{_bindKeyboardShortcuts:function(e){if(e.keyboardShortcuts){var t=this.$input,n=[];r.each(e.keyboardShortcuts,(function(e){"string"==typeof e&&(e=e.toUpperCase().charCodeAt(0)),n.push(e)})),s.element(document).keydown((function(e){var i=e.target||e.srcElement,r=i.tagName;if(!i.isContentEditable&&"INPUT"!==r&&"SELECT"!==r&&"TEXTAREA"!==r){var s=e.which||e.keyCode;-1!==n.indexOf(s)&&(t.focus(),e.stopPropagation(),e.preventDefault())}}))}},_onSuggestionClicked:function(e,t){var n;(n=this.dropdown.getDatumForSuggestion(t))&&this._select(n,{selectionMethod:"click"})},_onCursorMoved:function(e,t){var n=this.dropdown.getDatumForCursor(),i=this.dropdown.getCurrentCursor().attr("id");this.input.setActiveDescendant(i),n&&(t&&this.input.setInputValue(n.value,!0),this.eventBus.trigger("cursorchanged",n.raw,n.datasetName))},_onCursorRemoved:function(){this.input.resetInputValue(),this._updateHint(),this.eventBus.trigger("cursorremoved")},_onDatasetRendered:function(){this._updateHint(),this.eventBus.trigger("updated")},_onOpened:function(){this._updateHint(),this.input.expand(),this.eventBus.trigger("opened")},_onEmpty:function(){this.eventBus.trigger("empty")},_onRedrawn:function(){this.$node.css("top","0px"),this.$node.css("left","0px");var e=this.$input[0].getBoundingClientRect();this.autoWidth&&this.$node.css("width",e.width+"px");var t=this.$node[0].getBoundingClientRect(),n=e.bottom-t.top;this.$node.css("top",n+"px");var i=e.left-t.left;this.$node.css("left",i+"px"),this.eventBus.trigger("redrawn")},_onShown:function(){this.eventBus.trigger("shown"),this.autoselect&&this.dropdown.cursorTopSuggestion()},_onClosed:function(){this.input.clearHint(),this.input.removeActiveDescendant(),this.input.collapse(),this.eventBus.trigger("closed")},_onFocused:function(){if(this.isActivated=!0,this.openOnFocus){var e=this.input.getQuery();e.length>=this.minLength?this.dropdown.update(e):this.dropdown.empty(),this.dropdown.open()}},_onBlurred:function(){var e,t;e=this.dropdown.getDatumForCursor(),t=this.dropdown.getDatumForTopSuggestion();var n={selectionMethod:"blur"};this.debug||(this.autoselectOnBlur&&e?this._select(e,n):this.autoselectOnBlur&&t?this._select(t,n):(this.isActivated=!1,this.dropdown.empty(),this.dropdown.close()))},_onEnterKeyed:function(e,t){var n,i;n=this.dropdown.getDatumForCursor(),i=this.dropdown.getDatumForTopSuggestion();var r={selectionMethod:"enterKey"};n?(this._select(n,r),t.preventDefault()):this.autoselect&&i&&(this._select(i,r),t.preventDefault())},_onTabKeyed:function(e,t){if(this.tabAutocomplete){var n;(n=this.dropdown.getDatumForCursor())?(this._select(n,{selectionMethod:"tabKey"}),t.preventDefault()):this._autocomplete(!0)}else this.dropdown.close()},_onEscKeyed:function(){this.dropdown.close(),this.input.resetInputValue()},_onUpKeyed:function(){var e=this.input.getQuery();this.dropdown.isEmpty&&e.length>=this.minLength?this.dropdown.update(e):this.dropdown.moveCursorUp(),this.dropdown.open()},_onDownKeyed:function(){var e=this.input.getQuery();this.dropdown.isEmpty&&e.length>=this.minLength?this.dropdown.update(e):this.dropdown.moveCursorDown(),this.dropdown.open()},_onLeftKeyed:function(){"rtl"===this.dir&&this._autocomplete()},_onRightKeyed:function(){"ltr"===this.dir&&this._autocomplete()},_onQueryChanged:function(e,t){this.input.clearHintIfInvalid(),t.length>=this.minLength?this.dropdown.update(t):this.dropdown.empty(),this.dropdown.open(),this._setLanguageDirection()},_onWhitespaceChanged:function(){this._updateHint(),this.dropdown.open()},_setLanguageDirection:function(){var e=this.input.getLanguageDirection();this.dir!==e&&(this.dir=e,this.$node.css("direction",e),this.dropdown.setLanguageDirection(e))},_updateHint:function(){var e,t,n,i,s;(e=this.dropdown.getDatumForTopSuggestion())&&this.dropdown.isVisible()&&!this.input.hasOverflow()?(t=this.input.getInputValue(),n=a.normalizeQuery(t),i=r.escapeRegExChars(n),(s=new RegExp("^(?:"+i+")(.+$)","i").exec(e.value))?this.input.setHint(t+s[1]):this.input.clearHint()):this.input.clearHint()},_autocomplete:function(e){var t,n,i,r;t=this.input.getHint(),n=this.input.getQuery(),i=e||this.input.isCursorAtEnd(),t&&n!==t&&i&&((r=this.dropdown.getDatumForTopSuggestion())&&this.input.setInputValue(r.value),this.eventBus.trigger("autocompleted",r.raw,r.datasetName))},_select:function(e,t){void 0!==e.value&&this.input.setQuery(e.value),this.clearOnSelected?this.setVal(""):this.input.setInputValue(e.value,!0),this._setLanguageDirection(),!1===this.eventBus.trigger("selected",e.raw,e.datasetName,t).isDefaultPrevented()&&(this.dropdown.close(),r.defer(r.bind(this.dropdown.empty,this.dropdown)))},open:function(){if(!this.isActivated){var e=this.input.getInputValue();e.length>=this.minLength?this.dropdown.update(e):this.dropdown.empty()}this.dropdown.open()},close:function(){this.dropdown.close()},setVal:function(e){e=r.toStr(e),this.isActivated?this.input.setInputValue(e):(this.input.setQuery(e),this.input.setInputValue(e,!0)),this._setLanguageDirection()},getVal:function(){return this.input.getQuery()},destroy:function(){this.input.destroy(),this.dropdown.destroy(),function(e,t){var n=e.find(r.className(t.prefix,t.input));r.each(n.data(i),(function(e,t){void 0===e?n.removeAttr(t):n.attr(t,e)})),n.detach().removeClass(r.className(t.prefix,t.input,!0)).insertAfter(e),n.removeData&&n.removeData(i);e.remove()}(this.$node,this.cssClasses),this.$node=null},getWrapper:function(){return this.dropdown.$container[0]}}),h.Dropdown=u,h.Input=a,h.sources=n(324),e.exports=h},314:function(e,t,n){"use strict";var i;i={9:"tab",27:"esc",37:"left",39:"right",13:"enter",38:"up",40:"down"};var r=n(215),s=n(224),o=n(257);function a(e){var t,n,o,a,u,c=this;(e=e||{}).input||r.error("input is missing"),t=r.bind(this._onBlur,this),n=r.bind(this._onFocus,this),o=r.bind(this._onKeydown,this),a=r.bind(this._onInput,this),this.$hint=s.element(e.hint),this.$input=s.element(e.input).on("blur.aa",t).on("focus.aa",n).on("keydown.aa",o),0===this.$hint.length&&(this.setHint=this.getHint=this.clearHint=this.clearHintIfInvalid=r.noop),r.isMsie()?this.$input.on("keydown.aa keypress.aa cut.aa paste.aa",(function(e){i[e.which||e.keyCode]||r.defer(r.bind(c._onInput,c,e))})):this.$input.on("input.aa",a),this.query=this.$input.val(),this.$overflowHelper=(u=this.$input,s.element('<pre aria-hidden="true"></pre>').css({position:"absolute",visibility:"hidden",whiteSpace:"pre",fontFamily:u.css("font-family"),fontSize:u.css("font-size"),fontStyle:u.css("font-style"),fontVariant:u.css("font-variant"),fontWeight:u.css("font-weight"),wordSpacing:u.css("word-spacing"),letterSpacing:u.css("letter-spacing"),textIndent:u.css("text-indent"),textRendering:u.css("text-rendering"),textTransform:u.css("text-transform")}).insertAfter(u))}function u(e){return e.altKey||e.ctrlKey||e.metaKey||e.shiftKey}a.normalizeQuery=function(e){return(e||"").replace(/^\s*/g,"").replace(/\s{2,}/g," ")},r.mixin(a.prototype,o,{_onBlur:function(){this.resetInputValue(),this.$input.removeAttr("aria-activedescendant"),this.trigger("blurred")},_onFocus:function(){this.trigger("focused")},_onKeydown:function(e){var t=i[e.which||e.keyCode];this._managePreventDefault(t,e),t&&this._shouldTrigger(t,e)&&this.trigger(t+"Keyed",e)},_onInput:function(){this._checkInputValue()},_managePreventDefault:function(e,t){var n,i,r;switch(e){case"tab":i=this.getHint(),r=this.getInputValue(),n=i&&i!==r&&!u(t);break;case"up":case"down":n=!u(t);break;default:n=!1}n&&t.preventDefault()},_shouldTrigger:function(e,t){var n;switch(e){case"tab":n=!u(t);break;default:n=!0}return n},_checkInputValue:function(){var e,t,n,i,r;e=this.getInputValue(),i=e,r=this.query,n=!(!(t=a.normalizeQuery(i)===a.normalizeQuery(r))||!this.query)&&this.query.length!==e.length,this.query=e,t?n&&this.trigger("whitespaceChanged",this.query):this.trigger("queryChanged",this.query)},focus:function(){this.$input.focus()},blur:function(){this.$input.blur()},getQuery:function(){return this.query},setQuery:function(e){this.query=e},getInputValue:function(){return this.$input.val()},setInputValue:function(e,t){void 0===e&&(e=this.query),this.$input.val(e),t?this.clearHint():this._checkInputValue()},expand:function(){this.$input.attr("aria-expanded","true")},collapse:function(){this.$input.attr("aria-expanded","false")},setActiveDescendant:function(e){this.$input.attr("aria-activedescendant",e)},removeActiveDescendant:function(){this.$input.removeAttr("aria-activedescendant")},resetInputValue:function(){this.setInputValue(this.query,!0)},getHint:function(){return this.$hint.val()},setHint:function(e){this.$hint.val(e)},clearHint:function(){this.setHint("")},clearHintIfInvalid:function(){var e,t,n;n=(e=this.getInputValue())!==(t=this.getHint())&&0===t.indexOf(e),""!==e&&n&&!this.hasOverflow()||this.clearHint()},getLanguageDirection:function(){return(this.$input.css("direction")||"ltr").toLowerCase()},hasOverflow:function(){var e=this.$input.width()-2;return this.$overflowHelper.text(this.getInputValue()),this.$overflowHelper.width()>=e},isCursorAtEnd:function(){var e,t,n;return e=this.$input.val().length,t=this.$input[0].selectionStart,r.isNumber(t)?t===e:!document.selection||((n=document.selection.createRange()).moveStart("character",-e),e===n.text.length)},destroy:function(){this.$hint.off(".aa"),this.$input.off(".aa"),this.$hint=this.$input=this.$overflowHelper=null}}),e.exports=a},315:function(e,t,n){"use strict";var i,r,s,o=[n(316),n(317),n(318),n(319),n(320),n(321)],a=-1,u=[],c=!1;function l(){i&&r&&(i=!1,r.length?u=r.concat(u):a=-1,u.length&&h())}function h(){if(!i){c=!1,i=!0;for(var e=u.length,t=setTimeout(l);e;){for(r=u,u=[];r&&++a<e;)r[a].run();a=-1,e=u.length}r=null,a=-1,i=!1,clearTimeout(t)}}for(var f=-1,p=o.length;++f<p;)if(o[f]&&o[f].test&&o[f].test()){s=o[f].install(h);break}function d(e,t){this.fun=e,this.array=t}d.prototype.run=function(){var e=this.fun,t=this.array;switch(t.length){case 0:return e();case 1:return e(t[0]);case 2:return e(t[0],t[1]);case 3:return e(t[0],t[1],t[2]);default:return e.apply(null,t)}},e.exports=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];u.push(new d(e,t)),c||i||(c=!0,s())}},317:function(e,t,n){"use strict";(function(e){t.test=function(){return"function"==typeof e.queueMicrotask},t.install=function(t){return function(){e.queueMicrotask(t)}}}).call(this,n(24))},318:function(e,t,n){"use strict";(function(e){var n=e.MutationObserver||e.WebKitMutationObserver;t.test=function(){return n},t.install=function(t){var i=0,r=new n(t),s=e.document.createTextNode("");return r.observe(s,{characterData:!0}),function(){s.data=i=++i%2}}}).call(this,n(24))},319:function(e,t,n){"use strict";(function(e){t.test=function(){return!e.setImmediate&&void 0!==e.MessageChannel},t.install=function(t){var n=new e.MessageChannel;return n.port1.onmessage=t,function(){n.port2.postMessage(0)}}}).call(this,n(24))},320:function(e,t,n){"use strict";(function(e){t.test=function(){return"document"in e&&"onreadystatechange"in e.document.createElement("script")},t.install=function(t){return function(){var n=e.document.createElement("script");return n.onreadystatechange=function(){t(),n.onreadystatechange=null,n.parentNode.removeChild(n),n=null},e.document.documentElement.appendChild(n),t}}}).call(this,n(24))},321:function(e,t,n){"use strict";t.test=function(){return!0},t.install=function(e){return function(){setTimeout(e,0)}}},322:function(e,t,n){"use strict";var i=n(215),r=n(224),s=n(257),o=n(323),a=n(258);function u(e){var t,n,s,o=this;(e=e||{}).menu||i.error("menu is required"),i.isArray(e.datasets)||i.isObject(e.datasets)||i.error("1 or more datasets required"),e.datasets||i.error("datasets is required"),this.isOpen=!1,this.isEmpty=!0,this.minLength=e.minLength||0,this.templates={},this.appendTo=e.appendTo||!1,this.css=i.mixin({},a,e.appendTo?a.appendTo:{}),this.cssClasses=e.cssClasses=i.mixin({},a.defaultClasses,e.cssClasses||{}),this.cssClasses.prefix=e.cssClasses.formattedPrefix||i.formatPrefix(this.cssClasses.prefix,this.cssClasses.noPrefix),t=i.bind(this._onSuggestionClick,this),n=i.bind(this._onSuggestionMouseEnter,this),s=i.bind(this._onSuggestionMouseLeave,this);var c=i.className(this.cssClasses.prefix,this.cssClasses.suggestion);this.$menu=r.element(e.menu).on("mouseenter.aa",c,n).on("mouseleave.aa",c,s).on("click.aa",c,t),this.$container=e.appendTo?e.wrapper:this.$menu,e.templates&&e.templates.header&&(this.templates.header=i.templatify(e.templates.header),this.$menu.prepend(this.templates.header())),e.templates&&e.templates.empty&&(this.templates.empty=i.templatify(e.templates.empty),this.$empty=r.element('<div class="'+i.className(this.cssClasses.prefix,this.cssClasses.empty,!0)+'"></div>'),this.$menu.append(this.$empty),this.$empty.hide()),this.datasets=i.map(e.datasets,(function(t){return function(e,t,n){return new u.Dataset(i.mixin({$menu:e,cssClasses:n},t))}(o.$menu,t,e.cssClasses)})),i.each(this.datasets,(function(e){var t=e.getRoot();t&&0===t.parent().length&&o.$menu.append(t),e.onSync("rendered",o._onRendered,o)})),e.templates&&e.templates.footer&&(this.templates.footer=i.templatify(e.templates.footer),this.$menu.append(this.templates.footer()));var l=this;r.element(window).resize((function(){l._redraw()}))}i.mixin(u.prototype,s,{_onSuggestionClick:function(e){this.trigger("suggestionClicked",r.element(e.currentTarget))},_onSuggestionMouseEnter:function(e){var t=r.element(e.currentTarget);if(!t.hasClass(i.className(this.cssClasses.prefix,this.cssClasses.cursor,!0))){this._removeCursor();var n=this;setTimeout((function(){n._setCursor(t,!1)}),0)}},_onSuggestionMouseLeave:function(e){if(e.relatedTarget&&r.element(e.relatedTarget).closest("."+i.className(this.cssClasses.prefix,this.cssClasses.cursor,!0)).length>0)return;this._removeCursor(),this.trigger("cursorRemoved")},_onRendered:function(e,t){if(this.isEmpty=i.every(this.datasets,(function(e){return e.isEmpty()})),this.isEmpty)if(t.length>=this.minLength&&this.trigger("empty"),this.$empty)if(t.length<this.minLength)this._hide();else{var n=this.templates.empty({query:this.datasets[0]&&this.datasets[0].query});this.$empty.html(n),this.$empty.show(),this._show()}else i.any(this.datasets,(function(e){return e.templates&&e.templates.empty}))?t.length<this.minLength?this._hide():this._show():this._hide();else this.isOpen&&(this.$empty&&(this.$empty.empty(),this.$empty.hide()),t.length>=this.minLength?this._show():this._hide());this.trigger("datasetRendered")},_hide:function(){this.$container.hide()},_show:function(){this.$container.css("display","block"),this._redraw(),this.trigger("shown")},_redraw:function(){this.isOpen&&this.appendTo&&this.trigger("redrawn")},_getSuggestions:function(){return this.$menu.find(i.className(this.cssClasses.prefix,this.cssClasses.suggestion))},_getCursor:function(){return this.$menu.find(i.className(this.cssClasses.prefix,this.cssClasses.cursor)).first()},_setCursor:function(e,t){e.first().addClass(i.className(this.cssClasses.prefix,this.cssClasses.cursor,!0)).attr("aria-selected","true"),this.trigger("cursorMoved",t)},_removeCursor:function(){this._getCursor().removeClass(i.className(this.cssClasses.prefix,this.cssClasses.cursor,!0)).removeAttr("aria-selected")},_moveCursor:function(e){var t,n,i,r;this.isOpen&&(n=this._getCursor(),t=this._getSuggestions(),this._removeCursor(),-1!==(i=((i=t.index(n)+e)+1)%(t.length+1)-1)?(i<-1&&(i=t.length-1),this._setCursor(r=t.eq(i),!0),this._ensureVisible(r)):this.trigger("cursorRemoved"))},_ensureVisible:function(e){var t,n,i,r;n=(t=e.position().top)+e.height()+parseInt(e.css("margin-top"),10)+parseInt(e.css("margin-bottom"),10),i=this.$menu.scrollTop(),r=this.$menu.height()+parseInt(this.$menu.css("padding-top"),10)+parseInt(this.$menu.css("padding-bottom"),10),t<0?this.$menu.scrollTop(i+t):r<n&&this.$menu.scrollTop(i+(n-r))},close:function(){this.isOpen&&(this.isOpen=!1,this._removeCursor(),this._hide(),this.trigger("closed"))},open:function(){this.isOpen||(this.isOpen=!0,this.isEmpty||this._show(),this.trigger("opened"))},setLanguageDirection:function(e){this.$menu.css("ltr"===e?this.css.ltr:this.css.rtl)},moveCursorUp:function(){this._moveCursor(-1)},moveCursorDown:function(){this._moveCursor(1)},getDatumForSuggestion:function(e){var t=null;return e.length&&(t={raw:o.extractDatum(e),value:o.extractValue(e),datasetName:o.extractDatasetName(e)}),t},getCurrentCursor:function(){return this._getCursor().first()},getDatumForCursor:function(){return this.getDatumForSuggestion(this._getCursor().first())},getDatumForTopSuggestion:function(){return this.getDatumForSuggestion(this._getSuggestions().first())},cursorTopSuggestion:function(){this._setCursor(this._getSuggestions().first(),!1)},update:function(e){i.each(this.datasets,(function(t){t.update(e)}))},empty:function(){i.each(this.datasets,(function(e){e.clear()})),this.isEmpty=!0},isVisible:function(){return this.isOpen&&!this.isEmpty},destroy:function(){this.$menu.off(".aa"),this.$menu=null,i.each(this.datasets,(function(e){e.destroy()}))}}),u.Dataset=o,e.exports=u},323:function(e,t,n){"use strict";var i="aaDataset",r="aaValue",s="aaDatum",o=n(215),a=n(224),u=n(273),c=n(258),l=n(257);function h(e){var t;(e=e||{}).templates=e.templates||{},e.source||o.error("missing source"),e.name&&(t=e.name,!/^[_a-zA-Z0-9-]+$/.test(t))&&o.error("invalid dataset name: "+e.name),this.query=null,this._isEmpty=!0,this.highlight=!!e.highlight,this.name=void 0===e.name||null===e.name?o.getUniqueId():e.name,this.source=e.source,this.displayFn=function(e){return e=e||"value",o.isFunction(e)?e:t;function t(t){return t[e]}}(e.display||e.displayKey),this.debounce=e.debounce,this.cache=!1!==e.cache,this.templates=function(e,t){return{empty:e.empty&&o.templatify(e.empty),header:e.header&&o.templatify(e.header),footer:e.footer&&o.templatify(e.footer),suggestion:e.suggestion||n};function n(e){return"<p>"+t(e)+"</p>"}}(e.templates,this.displayFn),this.css=o.mixin({},c,e.appendTo?c.appendTo:{}),this.cssClasses=e.cssClasses=o.mixin({},c.defaultClasses,e.cssClasses||{}),this.cssClasses.prefix=e.cssClasses.formattedPrefix||o.formatPrefix(this.cssClasses.prefix,this.cssClasses.noPrefix);var n=o.className(this.cssClasses.prefix,this.cssClasses.dataset);this.$el=e.$menu&&e.$menu.find(n+"-"+this.name).length>0?a.element(e.$menu.find(n+"-"+this.name)[0]):a.element(u.dataset.replace("%CLASS%",this.name).replace("%PREFIX%",this.cssClasses.prefix).replace("%DATASET%",this.cssClasses.dataset)),this.$menu=e.$menu,this.clearCachedSuggestions()}h.extractDatasetName=function(e){return a.element(e).data(i)},h.extractValue=function(e){return a.element(e).data(r)},h.extractDatum=function(e){var t=a.element(e).data(s);return"string"==typeof t&&(t=JSON.parse(t)),t},o.mixin(h.prototype,l,{_render:function(e,t){if(this.$el){var n,c=this,l=[].slice.call(arguments,2);if(this.$el.empty(),n=t&&t.length,this._isEmpty=!n,!n&&this.templates.empty)this.$el.html(h.apply(this,l)).prepend(c.templates.header?p.apply(this,l):null).append(c.templates.footer?d.apply(this,l):null);else if(n)this.$el.html(f.apply(this,l)).prepend(c.templates.header?p.apply(this,l):null).append(c.templates.footer?d.apply(this,l):null);else if(t&&!Array.isArray(t))throw new TypeError("suggestions must be an array");this.$menu&&this.$menu.addClass(this.cssClasses.prefix+(n?"with":"without")+"-"+this.name).removeClass(this.cssClasses.prefix+(n?"without":"with")+"-"+this.name),this.trigger("rendered",e)}function h(){var t=[].slice.call(arguments,0);return t=[{query:e,isEmpty:!0}].concat(t),c.templates.empty.apply(this,t)}function f(){var e,n,l=[].slice.call(arguments,0),h=this,f=u.suggestions.replace("%PREFIX%",this.cssClasses.prefix).replace("%SUGGESTIONS%",this.cssClasses.suggestions);return e=a.element(f).css(this.css.suggestions),n=o.map(t,p),e.append.apply(e,n),e;function p(e){var t,n=u.suggestion.replace("%PREFIX%",h.cssClasses.prefix).replace("%SUGGESTION%",h.cssClasses.suggestion);return(t=a.element(n).attr({role:"option",id:["option",Math.floor(1e8*Math.random())].join("-")}).append(c.templates.suggestion.apply(this,[e].concat(l)))).data(i,c.name),t.data(r,c.displayFn(e)||void 0),t.data(s,JSON.stringify(e)),t.children().each((function(){a.element(this).css(h.css.suggestionChild)})),t}}function p(){var t=[].slice.call(arguments,0);return t=[{query:e,isEmpty:!n}].concat(t),c.templates.header.apply(this,t)}function d(){var t=[].slice.call(arguments,0);return t=[{query:e,isEmpty:!n}].concat(t),c.templates.footer.apply(this,t)}},getRoot:function(){return this.$el},update:function(e){function t(t){if(!this.canceled&&e===this.query){var n=[].slice.call(arguments,1);this.cacheSuggestions(e,t,n),this._render.apply(this,[e,t].concat(n))}}if(this.query=e,this.canceled=!1,this.shouldFetchFromCache(e))t.apply(this,[this.cachedSuggestions].concat(this.cachedRenderExtraArgs));else{var n=this,i=function(){n.canceled||n.source(e,t.bind(n))};if(this.debounce){clearTimeout(this.debounceTimeout),this.debounceTimeout=setTimeout((function(){n.debounceTimeout=null,i()}),this.debounce)}else i()}},cacheSuggestions:function(e,t,n){this.cachedQuery=e,this.cachedSuggestions=t,this.cachedRenderExtraArgs=n},shouldFetchFromCache:function(e){return this.cache&&this.cachedQuery===e&&this.cachedSuggestions&&this.cachedSuggestions.length},clearCachedSuggestions:function(){delete this.cachedQuery,delete this.cachedSuggestions,delete this.cachedRenderExtraArgs},cancel:function(){this.canceled=!0},clear:function(){this.$el&&(this.cancel(),this.$el.empty(),this.trigger("rendered",""))},isEmpty:function(){return this._isEmpty},destroy:function(){this.clearCachedSuggestions(),this.$el=null}}),e.exports=h},324:function(e,t,n){"use strict";e.exports={hits:n(325),popularIn:n(326)}},325:function(e,t,n){"use strict";var i=n(215),r=n(274),s=n(275);e.exports=function(e,t){var n=s(e.as._ua);return n&&n[0]>=3&&n[1]>20&&((t=t||{}).additionalUA="autocomplete.js "+r),function(n,r){e.search(n,t,(function(e,t){e?i.error(e.message):r(t.hits,t)}))}}},326:function(e,t,n){"use strict";var i=n(215),r=n(274),s=n(275);e.exports=function(e,t,n,o){var a=s(e.as._ua);if(a&&a[0]>=3&&a[1]>20&&((t=t||{}).additionalUA="autocomplete.js "+r),!n.source)return i.error("Missing 'source' key");var u=i.isFunction(n.source)?n.source:function(e){return e[n.source]};if(!n.index)return i.error("Missing 'index' key");var c=n.index;return o=o||{},function(a,l){e.search(a,t,(function(e,a){if(e)i.error(e.message);else{if(a.hits.length>0){var h=a.hits[0],f=i.mixin({hitsPerPage:0},n);delete f.source,delete f.index;var p=s(c.as._ua);return p&&p[0]>=3&&p[1]>20&&(t.additionalUA="autocomplete.js "+r),void c.search(u(h),f,(function(e,t){if(e)i.error(e.message);else{var n=[];if(o.includeAll){var r=o.allTitle||"All departments";n.push(i.mixin({facet:{value:r,count:t.nbHits}},i.cloneDeep(h)))}i.each(t.facets,(function(e,t){i.each(e,(function(e,r){n.push(i.mixin({facet:{facet:t,value:r,count:e}},i.cloneDeep(h)))}))}));for(var s=1;s<a.hits.length;++s)n.push(a.hits[s]);l(n,a)}}))}l([])}}))}}}}]);
\ No newline at end of file
+/*! For license information please see 127.70f6757b.js.LICENSE.txt */
+(window.webpackJsonp=window.webpackJsonp||[]).push([[127],{200:function(e,t,n){"use strict";var i,r=n(202);function s(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}e.exports={isArray:null,isFunction:null,isObject:null,bind:null,each:null,map:null,mixin:null,isMsie:function(e){if(void 0===e&&(e=navigator.userAgent),/(msie|trident)/i.test(e)){var t=e.match(/(msie |rv:)(\d+(.\d+)?)/i);if(t)return t[2]}return!1},escapeRegExChars:function(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")},isNumber:function(e){return"number"==typeof e},toStr:function(e){return null==e?"":e+""},cloneDeep:function(e){var t=this.mixin({},e),n=this;return this.each(t,(function(e,i){e&&(n.isArray(e)?t[i]=[].concat(e):n.isObject(e)&&(t[i]=n.cloneDeep(e)))})),t},error:function(e){throw new Error(e)},every:function(e,t){var n=!0;return e?(this.each(e,(function(i,r){n&&(n=t.call(null,i,r,e)&&n)})),!!n):n},any:function(e,t){var n=!1;return e?(this.each(e,(function(i,r){if(t.call(null,i,r,e))return n=!0,!1})),n):n},getUniqueId:(i=0,function(){return i++}),templatify:function(e){if(this.isFunction(e))return e;var t=r.element(e);return"SCRIPT"===t.prop("tagName")?function(){return t.text()}:function(){return String(e)}},defer:function(e){setTimeout(e,0)},noop:function(){},formatPrefix:function(e,t){return t?"":e+"-"},className:function(e,t,n){return(n?"":".")+e+t},escapeHighlightedString:function(e,t,n){t=t||"<em>";var i=document.createElement("div");i.appendChild(document.createTextNode(t)),n=n||"</em>";var r=document.createElement("div");r.appendChild(document.createTextNode(n));var o=document.createElement("div");return o.appendChild(document.createTextNode(e)),o.innerHTML.replace(RegExp(s(i.innerHTML),"g"),t).replace(RegExp(s(r.innerHTML),"g"),n)}}},202:function(e,t,n){"use strict";e.exports={element:null}},239:function(e,t){var n;n=window,e.exports=function(e){var t,n,i=function(){var t,n,i,r,s,o,a=[],u=a.concat,c=a.filter,l=a.slice,h=e.document,f={},p={},d={"column-count":1,columns:1,"font-weight":1,"line-height":1,opacity:1,"z-index":1,zoom:1},m=/^\s*<(\w+|!)[^>]*>/,g=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,v=/^(?:body|html)$/i,w=/([A-Z])/g,b=["val","css","html","text","data","width","height","offset"],x=["after","prepend","before","append"],_=h.createElement("table"),k=h.createElement("tr"),C={tr:h.createElement("tbody"),tbody:_,thead:_,tfoot:_,td:k,th:k,"*":h.createElement("div")},S=/complete|loaded|interactive/,E=/^[\w-]*$/,T={},A=T.toString,P={},O=h.createElement("div"),L={tabindex:"tabIndex",readonly:"readOnly",for:"htmlFor",class:"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},Q=Array.isArray||function(e){return e instanceof Array};function I(e){return null==e?String(e):T[A.call(e)]||"object"}function N(e){return"function"==I(e)}function $(e){return null!=e&&e==e.window}function D(e){return null!=e&&e.nodeType==e.DOCUMENT_NODE}function F(e){return"object"==I(e)}function R(e){return F(e)&&!$(e)&&Object.getPrototypeOf(e)==Object.prototype}function j(e){var t=!!e&&"length"in e&&e.length,n=i.type(e);return"function"!=n&&!$(e)&&("array"==n||0===t||"number"==typeof t&&t>0&&t-1 in e)}function M(e){return c.call(e,(function(e){return null!=e}))}function V(e){return e.length>0?i.fn.concat.apply([],e):e}function B(e){return e.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/_/g,"-").toLowerCase()}function z(e){return e in p?p[e]:p[e]=new RegExp("(^|\\s)"+e+"(\\s|$)")}function q(e,t){return"number"!=typeof t||d[B(e)]?t:t+"px"}function H(e){var t,n;return f[e]||(t=h.createElement(e),h.body.appendChild(t),n=getComputedStyle(t,"").getPropertyValue("display"),t.parentNode.removeChild(t),"none"==n&&(n="block"),f[e]=n),f[e]}function W(e){return"children"in e?l.call(e.children):i.map(e.childNodes,(function(e){if(1==e.nodeType)return e}))}function K(e,t){var n,i=e?e.length:0;for(n=0;n<i;n++)this[n]=e[n];this.length=i,this.selector=t||""}function U(e,i,r){for(n in i)r&&(R(i[n])||Q(i[n]))?(R(i[n])&&!R(e[n])&&(e[n]={}),Q(i[n])&&!Q(e[n])&&(e[n]=[]),U(e[n],i[n],r)):i[n]!==t&&(e[n]=i[n])}function Z(e,t){return null==t?i(e):i(e).filter(t)}function G(e,t,n,i){return N(t)?t.call(e,n,i):t}function J(e,t,n){null==n?e.removeAttribute(t):e.setAttribute(t,n)}function X(e,n){var i=e.className||"",r=i&&i.baseVal!==t;if(n===t)return r?i.baseVal:i;r?i.baseVal=n:e.className=n}function Y(e){try{return e?"true"==e||"false"!=e&&("null"==e?null:+e+""==e?+e:/^[\[\{]/.test(e)?i.parseJSON(e):e):e}catch(t){return e}}function ee(e,t){t(e);for(var n=0,i=e.childNodes.length;n<i;n++)ee(e.childNodes[n],t)}return P.matches=function(e,t){if(!t||!e||1!==e.nodeType)return!1;var n=e.matches||e.webkitMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.matchesSelector;if(n)return n.call(e,t);var i,r=e.parentNode,s=!r;return s&&(r=O).appendChild(e),i=~P.qsa(r,t).indexOf(e),s&&O.removeChild(e),i},s=function(e){return e.replace(/-+(.)?/g,(function(e,t){return t?t.toUpperCase():""}))},o=function(e){return c.call(e,(function(t,n){return e.indexOf(t)==n}))},P.fragment=function(e,n,r){var s,o,a;return g.test(e)&&(s=i(h.createElement(RegExp.$1))),s||(e.replace&&(e=e.replace(y,"<$1></$2>")),n===t&&(n=m.test(e)&&RegExp.$1),n in C||(n="*"),(a=C[n]).innerHTML=""+e,s=i.each(l.call(a.childNodes),(function(){a.removeChild(this)}))),R(r)&&(o=i(s),i.each(r,(function(e,t){b.indexOf(e)>-1?o[e](t):o.attr(e,t)}))),s},P.Z=function(e,t){return new K(e,t)},P.isZ=function(e){return e instanceof P.Z},P.init=function(e,n){var r;if(!e)return P.Z();if("string"==typeof e)if("<"==(e=e.trim())[0]&&m.test(e))r=P.fragment(e,RegExp.$1,n),e=null;else{if(n!==t)return i(n).find(e);r=P.qsa(h,e)}else{if(N(e))return i(h).ready(e);if(P.isZ(e))return e;if(Q(e))r=M(e);else if(F(e))r=[e],e=null;else if(m.test(e))r=P.fragment(e.trim(),RegExp.$1,n),e=null;else{if(n!==t)return i(n).find(e);r=P.qsa(h,e)}}return P.Z(r,e)},(i=function(e,t){return P.init(e,t)}).extend=function(e){var t,n=l.call(arguments,1);return"boolean"==typeof e&&(t=e,e=n.shift()),n.forEach((function(n){U(e,n,t)})),e},P.qsa=function(e,t){var n,i="#"==t[0],r=!i&&"."==t[0],s=i||r?t.slice(1):t,o=E.test(s);return e.getElementById&&o&&i?(n=e.getElementById(s))?[n]:[]:1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType?[]:l.call(o&&!i&&e.getElementsByClassName?r?e.getElementsByClassName(s):e.getElementsByTagName(t):e.querySelectorAll(t))},i.contains=h.documentElement.contains?function(e,t){return e!==t&&e.contains(t)}:function(e,t){for(;t&&(t=t.parentNode);)if(t===e)return!0;return!1},i.type=I,i.isFunction=N,i.isWindow=$,i.isArray=Q,i.isPlainObject=R,i.isEmptyObject=function(e){var t;for(t in e)return!1;return!0},i.isNumeric=function(e){var t=Number(e),n=typeof e;return null!=e&&"boolean"!=n&&("string"!=n||e.length)&&!isNaN(t)&&isFinite(t)||!1},i.inArray=function(e,t,n){return a.indexOf.call(t,e,n)},i.camelCase=s,i.trim=function(e){return null==e?"":String.prototype.trim.call(e)},i.uuid=0,i.support={},i.expr={},i.noop=function(){},i.map=function(e,t){var n,i,r,s=[];if(j(e))for(i=0;i<e.length;i++)null!=(n=t(e[i],i))&&s.push(n);else for(r in e)null!=(n=t(e[r],r))&&s.push(n);return V(s)},i.each=function(e,t){var n,i;if(j(e)){for(n=0;n<e.length;n++)if(!1===t.call(e[n],n,e[n]))return e}else for(i in e)if(!1===t.call(e[i],i,e[i]))return e;return e},i.grep=function(e,t){return c.call(e,t)},e.JSON&&(i.parseJSON=JSON.parse),i.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),(function(e,t){T["[object "+t+"]"]=t.toLowerCase()})),i.fn={constructor:P.Z,length:0,forEach:a.forEach,reduce:a.reduce,push:a.push,sort:a.sort,splice:a.splice,indexOf:a.indexOf,concat:function(){var e,t,n=[];for(e=0;e<arguments.length;e++)t=arguments[e],n[e]=P.isZ(t)?t.toArray():t;return u.apply(P.isZ(this)?this.toArray():this,n)},map:function(e){return i(i.map(this,(function(t,n){return e.call(t,n,t)})))},slice:function(){return i(l.apply(this,arguments))},ready:function(e){return S.test(h.readyState)&&h.body?e(i):h.addEventListener("DOMContentLoaded",(function(){e(i)}),!1),this},get:function(e){return e===t?l.call(this):this[e>=0?e:e+this.length]},toArray:function(){return this.get()},size:function(){return this.length},remove:function(){return this.each((function(){null!=this.parentNode&&this.parentNode.removeChild(this)}))},each:function(e){return a.every.call(this,(function(t,n){return!1!==e.call(t,n,t)})),this},filter:function(e){return N(e)?this.not(this.not(e)):i(c.call(this,(function(t){return P.matches(t,e)})))},add:function(e,t){return i(o(this.concat(i(e,t))))},is:function(e){return this.length>0&&P.matches(this[0],e)},not:function(e){var n=[];if(N(e)&&e.call!==t)this.each((function(t){e.call(this,t)||n.push(this)}));else{var r="string"==typeof e?this.filter(e):j(e)&&N(e.item)?l.call(e):i(e);this.forEach((function(e){r.indexOf(e)<0&&n.push(e)}))}return i(n)},has:function(e){return this.filter((function(){return F(e)?i.contains(this,e):i(this).find(e).size()}))},eq:function(e){return-1===e?this.slice(e):this.slice(e,+e+1)},first:function(){var e=this[0];return e&&!F(e)?e:i(e)},last:function(){var e=this[this.length-1];return e&&!F(e)?e:i(e)},find:function(e){var t=this;return e?"object"==typeof e?i(e).filter((function(){var e=this;return a.some.call(t,(function(t){return i.contains(t,e)}))})):1==this.length?i(P.qsa(this[0],e)):this.map((function(){return P.qsa(this,e)})):i()},closest:function(e,t){var n=[],r="object"==typeof e&&i(e);return this.each((function(i,s){for(;s&&!(r?r.indexOf(s)>=0:P.matches(s,e));)s=s!==t&&!D(s)&&s.parentNode;s&&n.indexOf(s)<0&&n.push(s)})),i(n)},parents:function(e){for(var t=[],n=this;n.length>0;)n=i.map(n,(function(e){if((e=e.parentNode)&&!D(e)&&t.indexOf(e)<0)return t.push(e),e}));return Z(t,e)},parent:function(e){return Z(o(this.pluck("parentNode")),e)},children:function(e){return Z(this.map((function(){return W(this)})),e)},contents:function(){return this.map((function(){return this.contentDocument||l.call(this.childNodes)}))},siblings:function(e){return Z(this.map((function(e,t){return c.call(W(t.parentNode),(function(e){return e!==t}))})),e)},empty:function(){return this.each((function(){this.innerHTML=""}))},pluck:function(e){return i.map(this,(function(t){return t[e]}))},show:function(){return this.each((function(){"none"==this.style.display&&(this.style.display=""),"none"==getComputedStyle(this,"").getPropertyValue("display")&&(this.style.display=H(this.nodeName))}))},replaceWith:function(e){return this.before(e).remove()},wrap:function(e){var t=N(e);if(this[0]&&!t)var n=i(e).get(0),r=n.parentNode||this.length>1;return this.each((function(s){i(this).wrapAll(t?e.call(this,s):r?n.cloneNode(!0):n)}))},wrapAll:function(e){if(this[0]){var t;for(i(this[0]).before(e=i(e));(t=e.children()).length;)e=t.first();i(e).append(this)}return this},wrapInner:function(e){var t=N(e);return this.each((function(n){var r=i(this),s=r.contents(),o=t?e.call(this,n):e;s.length?s.wrapAll(o):r.append(o)}))},unwrap:function(){return this.parent().each((function(){i(this).replaceWith(i(this).children())})),this},clone:function(){return this.map((function(){return this.cloneNode(!0)}))},hide:function(){return this.css("display","none")},toggle:function(e){return this.each((function(){var n=i(this);(e===t?"none"==n.css("display"):e)?n.show():n.hide()}))},prev:function(e){return i(this.pluck("previousElementSibling")).filter(e||"*")},next:function(e){return i(this.pluck("nextElementSibling")).filter(e||"*")},html:function(e){return 0 in arguments?this.each((function(t){var n=this.innerHTML;i(this).empty().append(G(this,e,t,n))})):0 in this?this[0].innerHTML:null},text:function(e){return 0 in arguments?this.each((function(t){var n=G(this,e,t,this.textContent);this.textContent=null==n?"":""+n})):0 in this?this.pluck("textContent").join(""):null},attr:function(e,i){var r;return"string"!=typeof e||1 in arguments?this.each((function(t){if(1===this.nodeType)if(F(e))for(n in e)J(this,n,e[n]);else J(this,e,G(this,i,t,this.getAttribute(e)))})):0 in this&&1==this[0].nodeType&&null!=(r=this[0].getAttribute(e))?r:t},removeAttr:function(e){return this.each((function(){1===this.nodeType&&e.split(" ").forEach((function(e){J(this,e)}),this)}))},prop:function(e,t){return e=L[e]||e,1 in arguments?this.each((function(n){this[e]=G(this,t,n,this[e])})):this[0]&&this[0][e]},removeProp:function(e){return e=L[e]||e,this.each((function(){delete this[e]}))},data:function(e,n){var i="data-"+e.replace(w,"-$1").toLowerCase(),r=1 in arguments?this.attr(i,n):this.attr(i);return null!==r?Y(r):t},val:function(e){return 0 in arguments?(null==e&&(e=""),this.each((function(t){this.value=G(this,e,t,this.value)}))):this[0]&&(this[0].multiple?i(this[0]).find("option").filter((function(){return this.selected})).pluck("value"):this[0].value)},offset:function(t){if(t)return this.each((function(e){var n=i(this),r=G(this,t,e,n.offset()),s=n.offsetParent().offset(),o={top:r.top-s.top,left:r.left-s.left};"static"==n.css("position")&&(o.position="relative"),n.css(o)}));if(!this.length)return null;if(h.documentElement!==this[0]&&!i.contains(h.documentElement,this[0]))return{top:0,left:0};var n=this[0].getBoundingClientRect();return{left:n.left+e.pageXOffset,top:n.top+e.pageYOffset,width:Math.round(n.width),height:Math.round(n.height)}},css:function(e,t){if(arguments.length<2){var r=this[0];if("string"==typeof e){if(!r)return;return r.style[s(e)]||getComputedStyle(r,"").getPropertyValue(e)}if(Q(e)){if(!r)return;var o={},a=getComputedStyle(r,"");return i.each(e,(function(e,t){o[t]=r.style[s(t)]||a.getPropertyValue(t)})),o}}var u="";if("string"==I(e))t||0===t?u=B(e)+":"+q(e,t):this.each((function(){this.style.removeProperty(B(e))}));else for(n in e)e[n]||0===e[n]?u+=B(n)+":"+q(n,e[n])+";":this.each((function(){this.style.removeProperty(B(n))}));return this.each((function(){this.style.cssText+=";"+u}))},index:function(e){return e?this.indexOf(i(e)[0]):this.parent().children().indexOf(this[0])},hasClass:function(e){return!!e&&a.some.call(this,(function(e){return this.test(X(e))}),z(e))},addClass:function(e){return e?this.each((function(t){if("className"in this){r=[];var n=X(this);G(this,e,t,n).split(/\s+/g).forEach((function(e){i(this).hasClass(e)||r.push(e)}),this),r.length&&X(this,n+(n?" ":"")+r.join(" "))}})):this},removeClass:function(e){return this.each((function(n){if("className"in this){if(e===t)return X(this,"");r=X(this),G(this,e,n,r).split(/\s+/g).forEach((function(e){r=r.replace(z(e)," ")})),X(this,r.trim())}}))},toggleClass:function(e,n){return e?this.each((function(r){var s=i(this);G(this,e,r,X(this)).split(/\s+/g).forEach((function(e){(n===t?!s.hasClass(e):n)?s.addClass(e):s.removeClass(e)}))})):this},scrollTop:function(e){if(this.length){var n="scrollTop"in this[0];return e===t?n?this[0].scrollTop:this[0].pageYOffset:this.each(n?function(){this.scrollTop=e}:function(){this.scrollTo(this.scrollX,e)})}},scrollLeft:function(e){if(this.length){var n="scrollLeft"in this[0];return e===t?n?this[0].scrollLeft:this[0].pageXOffset:this.each(n?function(){this.scrollLeft=e}:function(){this.scrollTo(e,this.scrollY)})}},position:function(){if(this.length){var e=this[0],t=this.offsetParent(),n=this.offset(),r=v.test(t[0].nodeName)?{top:0,left:0}:t.offset();return n.top-=parseFloat(i(e).css("margin-top"))||0,n.left-=parseFloat(i(e).css("margin-left"))||0,r.top+=parseFloat(i(t[0]).css("border-top-width"))||0,r.left+=parseFloat(i(t[0]).css("border-left-width"))||0,{top:n.top-r.top,left:n.left-r.left}}},offsetParent:function(){return this.map((function(){for(var e=this.offsetParent||h.body;e&&!v.test(e.nodeName)&&"static"==i(e).css("position");)e=e.offsetParent;return e}))}},i.fn.detach=i.fn.remove,["width","height"].forEach((function(e){var n=e.replace(/./,(function(e){return e[0].toUpperCase()}));i.fn[e]=function(r){var s,o=this[0];return r===t?$(o)?o["inner"+n]:D(o)?o.documentElement["scroll"+n]:(s=this.offset())&&s[e]:this.each((function(t){(o=i(this)).css(e,G(this,r,t,o[e]()))}))}})),x.forEach((function(n,r){var s=r%2;i.fn[n]=function(){var n,o,a=i.map(arguments,(function(e){var r=[];return"array"==(n=I(e))?(e.forEach((function(e){return e.nodeType!==t?r.push(e):i.zepto.isZ(e)?r=r.concat(e.get()):void(r=r.concat(P.fragment(e)))})),r):"object"==n||null==e?e:P.fragment(e)})),u=this.length>1;return a.length<1?this:this.each((function(t,n){o=s?n:n.parentNode,n=0==r?n.nextSibling:1==r?n.firstChild:2==r?n:null;var c=i.contains(h.documentElement,o);a.forEach((function(t){if(u)t=t.cloneNode(!0);else if(!o)return i(t).remove();o.insertBefore(t,n),c&&ee(t,(function(t){if(!(null==t.nodeName||"SCRIPT"!==t.nodeName.toUpperCase()||t.type&&"text/javascript"!==t.type||t.src)){var n=t.ownerDocument?t.ownerDocument.defaultView:e;n.eval.call(n,t.innerHTML)}}))}))}))},i.fn[s?n+"To":"insert"+(r?"Before":"After")]=function(e){return i(e)[n](this),this}})),P.Z.prototype=K.prototype=i.fn,P.uniq=o,P.deserializeValue=Y,i.zepto=P,i}();return function(t){var n,i=1,r=Array.prototype.slice,s=t.isFunction,o=function(e){return"string"==typeof e},a={},u={},c="onfocusin"in e,l={focus:"focusin",blur:"focusout"},h={mouseenter:"mouseover",mouseleave:"mouseout"};function f(e){return e._zid||(e._zid=i++)}function p(e,t,n,i){if((t=d(t)).ns)var r=m(t.ns);return(a[f(e)]||[]).filter((function(e){return e&&(!t.e||e.e==t.e)&&(!t.ns||r.test(e.ns))&&(!n||f(e.fn)===f(n))&&(!i||e.sel==i)}))}function d(e){var t=(""+e).split(".");return{e:t[0],ns:t.slice(1).sort().join(" ")}}function m(e){return new RegExp("(?:^| )"+e.replace(" "," .* ?")+"(?: |$)")}function g(e,t){return e.del&&!c&&e.e in l||!!t}function y(e){return h[e]||c&&l[e]||e}function v(e,i,r,s,o,u,c){var l=f(e),p=a[l]||(a[l]=[]);i.split(/\s/).forEach((function(i){if("ready"==i)return t(document).ready(r);var a=d(i);a.fn=r,a.sel=o,a.e in h&&(r=function(e){var n=e.relatedTarget;if(!n||n!==this&&!t.contains(this,n))return a.fn.apply(this,arguments)}),a.del=u;var l=u||r;a.proxy=function(t){if(!(t=C(t)).isImmediatePropagationStopped()){try{var i=Object.getOwnPropertyDescriptor(t,"data");i&&!i.writable||(t.data=s)}catch(t){}var r=l.apply(e,t._args==n?[t]:[t].concat(t._args));return!1===r&&(t.preventDefault(),t.stopPropagation()),r}},a.i=p.length,p.push(a),"addEventListener"in e&&e.addEventListener(y(a.e),a.proxy,g(a,c))}))}function w(e,t,n,i,r){var s=f(e);(t||"").split(/\s/).forEach((function(t){p(e,t,n,i).forEach((function(t){delete a[s][t.i],"removeEventListener"in e&&e.removeEventListener(y(t.e),t.proxy,g(t,r))}))}))}u.click=u.mousedown=u.mouseup=u.mousemove="MouseEvents",t.event={add:v,remove:w},t.proxy=function(e,n){var i=2 in arguments&&r.call(arguments,2);if(s(e)){var a=function(){return e.apply(n,i?i.concat(r.call(arguments)):arguments)};return a._zid=f(e),a}if(o(n))return i?(i.unshift(e[n],e),t.proxy.apply(null,i)):t.proxy(e[n],e);throw new TypeError("expected function")},t.fn.bind=function(e,t,n){return this.on(e,t,n)},t.fn.unbind=function(e,t){return this.off(e,t)},t.fn.one=function(e,t,n,i){return this.on(e,t,n,i,1)};var b=function(){return!0},x=function(){return!1},_=/^([A-Z]|returnValue$|layer[XY]$|webkitMovement[XY]$)/,k={preventDefault:"isDefaultPrevented",stopImmediatePropagation:"isImmediatePropagationStopped",stopPropagation:"isPropagationStopped"};function C(e,i){if(i||!e.isDefaultPrevented){i||(i=e),t.each(k,(function(t,n){var r=i[t];e[t]=function(){return this[n]=b,r&&r.apply(i,arguments)},e[n]=x}));try{e.timeStamp||(e.timeStamp=Date.now())}catch(r){}(i.defaultPrevented!==n?i.defaultPrevented:"returnValue"in i?!1===i.returnValue:i.getPreventDefault&&i.getPreventDefault())&&(e.isDefaultPrevented=b)}return e}function S(e){var t,i={originalEvent:e};for(t in e)_.test(t)||e[t]===n||(i[t]=e[t]);return C(i,e)}t.fn.delegate=function(e,t,n){return this.on(t,e,n)},t.fn.undelegate=function(e,t,n){return this.off(t,e,n)},t.fn.live=function(e,n){return t(document.body).delegate(this.selector,e,n),this},t.fn.die=function(e,n){return t(document.body).undelegate(this.selector,e,n),this},t.fn.on=function(e,i,a,u,c){var l,h,f=this;return e&&!o(e)?(t.each(e,(function(e,t){f.on(e,i,a,t,c)})),f):(o(i)||s(u)||!1===u||(u=a,a=i,i=n),u!==n&&!1!==a||(u=a,a=n),!1===u&&(u=x),f.each((function(n,s){c&&(l=function(e){return w(s,e.type,u),u.apply(this,arguments)}),i&&(h=function(e){var n,o=t(e.target).closest(i,s).get(0);if(o&&o!==s)return n=t.extend(S(e),{currentTarget:o,liveFired:s}),(l||u).apply(o,[n].concat(r.call(arguments,1)))}),v(s,e,u,a,i,h||l)})))},t.fn.off=function(e,i,r){var a=this;return e&&!o(e)?(t.each(e,(function(e,t){a.off(e,i,t)})),a):(o(i)||s(r)||!1===r||(r=i,i=n),!1===r&&(r=x),a.each((function(){w(this,e,r,i)})))},t.fn.trigger=function(e,n){return(e=o(e)||t.isPlainObject(e)?t.Event(e):C(e))._args=n,this.each((function(){e.type in l&&"function"==typeof this[e.type]?this[e.type]():"dispatchEvent"in this?this.dispatchEvent(e):t(this).triggerHandler(e,n)}))},t.fn.triggerHandler=function(e,n){var i,r;return this.each((function(s,a){(i=S(o(e)?t.Event(e):e))._args=n,i.target=a,t.each(p(a,e.type||e),(function(e,t){if(r=t.proxy(i),i.isImmediatePropagationStopped())return!1}))})),r},"focusin focusout focus blur load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select keydown keypress keyup error".split(" ").forEach((function(e){t.fn[e]=function(t){return 0 in arguments?this.bind(e,t):this.trigger(e)}})),t.Event=function(e,t){o(e)||(e=(t=e).type);var n=document.createEvent(u[e]||"Events"),i=!0;if(t)for(var r in t)"bubbles"==r?i=!!t[r]:n[r]=t[r];return n.initEvent(e,i,!0),C(n)}}(i),n=[],i.fn.remove=function(){return this.each((function(){this.parentNode&&("IMG"===this.tagName&&(n.push(this),this.src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=",t&&clearTimeout(t),t=setTimeout((function(){n=[]}),6e4)),this.parentNode.removeChild(this))}))},function(e){var t={},n=e.fn.data,i=e.camelCase,r=e.expando="Zepto"+ +new Date,s=[];function o(s,o){var u=s[r],c=u&&t[u];if(void 0===o)return c||a(s);if(c){if(o in c)return c[o];var l=i(o);if(l in c)return c[l]}return n.call(e(s),o)}function a(n,s,o){var a=n[r]||(n[r]=++e.uuid),c=t[a]||(t[a]=u(n));return void 0!==s&&(c[i(s)]=o),c}function u(t){var n={};return e.each(t.attributes||s,(function(t,r){0==r.name.indexOf("data-")&&(n[i(r.name.replace("data-",""))]=e.zepto.deserializeValue(r.value))})),n}e.fn.data=function(t,n){return void 0===n?e.isPlainObject(t)?this.each((function(n,i){e.each(t,(function(e,t){a(i,e,t)}))})):0 in this?o(this[0],t):void 0:this.each((function(){a(this,t,n)}))},e.data=function(t,n,i){return e(t).data(n,i)},e.hasData=function(n){var i=n[r],s=i&&t[i];return!!s&&!e.isEmptyObject(s)},e.fn.removeData=function(n){return"string"==typeof n&&(n=n.split(/\s+/)),this.each((function(){var s=this[r],o=s&&t[s];o&&e.each(n||o,(function(e){delete o[n?i(this):e]}))}))},["remove","empty"].forEach((function(t){var n=e.fn[t];e.fn[t]=function(){var e=this.find("*");return"remove"===t&&(e=e.add(this)),e.removeData(),n.call(this)}}))}(i),i}(n)},240:function(e,t,n){"use strict";var i=n(298),r=/\s+/;function s(e,t,n,i){var s;if(!n)return this;for(t=t.split(r),n=i?function(e,t){return e.bind?e.bind(t):function(){e.apply(t,[].slice.call(arguments,0))}}(n,i):n,this._callbacks=this._callbacks||{};s=t.shift();)this._callbacks[s]=this._callbacks[s]||{sync:[],async:[]},this._callbacks[s][e].push(n);return this}function o(e,t,n){return function(){for(var i,r=0,s=e.length;!i&&r<s;r+=1)i=!1===e[r].apply(t,n);return!i}}e.exports={onSync:function(e,t,n){return s.call(this,"sync",e,t,n)},onAsync:function(e,t,n){return s.call(this,"async",e,t,n)},off:function(e){var t;if(!this._callbacks)return this;e=e.split(r);for(;t=e.shift();)delete this._callbacks[t];return this},trigger:function(e){var t,n,s,a,u;if(!this._callbacks)return this;e=e.split(r),s=[].slice.call(arguments,1);for(;(t=e.shift())&&(n=this._callbacks[t]);)a=o(n.sync,this,[t].concat(s)),u=o(n.async,this,[t].concat(s)),a()&&i(u);return this}}},241:function(e,t,n){"use strict";var i=n(200),r={wrapper:{position:"relative",display:"inline-block"},hint:{position:"absolute",top:"0",left:"0",borderColor:"transparent",boxShadow:"none",opacity:"1"},input:{position:"relative",verticalAlign:"top",backgroundColor:"transparent"},inputWithNoHint:{position:"relative",verticalAlign:"top"},dropdown:{position:"absolute",top:"100%",left:"0",zIndex:"100",display:"none"},suggestions:{display:"block"},suggestion:{whiteSpace:"nowrap",cursor:"pointer"},suggestionChild:{whiteSpace:"normal"},ltr:{left:"0",right:"auto"},rtl:{left:"auto",right:"0"},defaultClasses:{root:"algolia-autocomplete",prefix:"aa",noPrefix:!1,dropdownMenu:"dropdown-menu",input:"input",hint:"hint",suggestions:"suggestions",suggestion:"suggestion",cursor:"cursor",dataset:"dataset",empty:"empty"},appendTo:{wrapper:{position:"absolute",zIndex:"100",display:"none"},input:{},inputWithNoHint:{},dropdown:{display:"block"}}};i.isMsie()&&i.mixin(r.input,{backgroundImage:"url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)"}),i.isMsie()&&i.isMsie()<=7&&i.mixin(r.input,{marginTop:"-1px"}),e.exports=r},255:function(e,t,n){"use strict";var i=n(200),r=n(202);function s(e){e&&e.el||i.error("EventBus initialized without el"),this.$el=r.element(e.el)}i.mixin(s.prototype,{trigger:function(e,t,n,r){var s=i.Event("autocomplete:"+e);return this.$el.trigger(s,[t,n,r]),s}}),e.exports=s},256:function(e,t,n){"use strict";e.exports={wrapper:'<span class="%ROOT%"></span>',dropdown:'<span class="%PREFIX%%DROPDOWN_MENU%"></span>',dataset:'<div class="%PREFIX%%DATASET%-%CLASS%"></div>',suggestions:'<span class="%PREFIX%%SUGGESTIONS%"></span>',suggestion:'<div class="%PREFIX%%SUGGESTION%"></div>'}},257:function(e,t){e.exports="0.37.1"},258:function(e,t,n){"use strict";e.exports=function(e){var t=e.match(/Algolia for JavaScript \((\d+\.)(\d+\.)(\d+)\)/)||e.match(/Algolia for vanilla JavaScript (\d+\.)(\d+\.)(\d+)/);if(t)return[t[1],t[2],t[3]]}},287:function(e,t,n){var i=n(288);i.Template=n(289).Template,i.template=i.Template,e.exports=i},288:function(e,t,n){!function(e){var t=/\S/,n=/\"/g,i=/\n/g,r=/\r/g,s=/\\/g,o=/\u2028/,a=/\u2029/;function u(e){"}"===e.n.substr(e.n.length-1)&&(e.n=e.n.substring(0,e.n.length-1))}function c(e){return e.trim?e.trim():e.replace(/^\s*|\s*$/g,"")}function l(e,t,n){if(t.charAt(n)!=e.charAt(0))return!1;for(var i=1,r=e.length;i<r;i++)if(t.charAt(n+i)!=e.charAt(i))return!1;return!0}e.tags={"#":1,"^":2,"<":3,$:4,"/":5,"!":6,">":7,"=":8,_v:9,"{":10,"&":11,_t:12},e.scan=function(n,i){var r=n.length,s=0,o=null,a=null,h="",f=[],p=!1,d=0,m=0,g="{{",y="}}";function v(){h.length>0&&(f.push({tag:"_t",text:new String(h)}),h="")}function w(n,i){if(v(),n&&function(){for(var n=!0,i=m;i<f.length;i++)if(!(n=e.tags[f[i].tag]<e.tags._v||"_t"==f[i].tag&&null===f[i].text.match(t)))return!1;return n}())for(var r,s=m;s<f.length;s++)f[s].text&&((r=f[s+1])&&">"==r.tag&&(r.indent=f[s].text.toString()),f.splice(s,1));else i||f.push({tag:"\n"});p=!1,m=f.length}function b(e,t){var n="="+y,i=e.indexOf(n,t),r=c(e.substring(e.indexOf("=",t)+1,i)).split(" ");return g=r[0],y=r[r.length-1],i+n.length-1}for(i&&(i=i.split(" "),g=i[0],y=i[1]),d=0;d<r;d++)0==s?l(g,n,d)?(--d,v(),s=1):"\n"==n.charAt(d)?w(p):h+=n.charAt(d):1==s?(d+=g.length-1,"="==(o=(a=e.tags[n.charAt(d+1)])?n.charAt(d+1):"_v")?(d=b(n,d),s=0):(a&&d++,s=2),p=d):l(y,n,d)?(f.push({tag:o,n:c(h),otag:g,ctag:y,i:"/"==o?p-g.length:d+y.length}),h="",d+=y.length-1,s=0,"{"==o&&("}}"==y?d++:u(f[f.length-1]))):h+=n.charAt(d);return w(p,!0),f};var h={_t:!0,"\n":!0,$:!0,"/":!0};function f(t,n,i,r){var s,o=[],a=null,u=null;for(s=i[i.length-1];t.length>0;){if(u=t.shift(),s&&"<"==s.tag&&!(u.tag in h))throw new Error("Illegal content in < super tag.");if(e.tags[u.tag]<=e.tags.$||p(u,r))i.push(u),u.nodes=f(t,u.tag,i,r);else{if("/"==u.tag){if(0===i.length)throw new Error("Closing tag without opener: /"+u.n);if(a=i.pop(),u.n!=a.n&&!d(u.n,a.n,r))throw new Error("Nesting error: "+a.n+" vs. "+u.n);return a.end=u.i,o}"\n"==u.tag&&(u.last=0==t.length||"\n"==t[0].tag)}o.push(u)}if(i.length>0)throw new Error("missing closing tag: "+i.pop().n);return o}function p(e,t){for(var n=0,i=t.length;n<i;n++)if(t[n].o==e.n)return e.tag="#",!0}function d(e,t,n){for(var i=0,r=n.length;i<r;i++)if(n[i].c==e&&n[i].o==t)return!0}function m(e){var t=[];for(var n in e.partials)t.push('"'+y(n)+'":{name:"'+y(e.partials[n].name)+'", '+m(e.partials[n])+"}");return"partials: {"+t.join(",")+"}, subs: "+function(e){var t=[];for(var n in e)t.push('"'+y(n)+'": function(c,p,t,i) {'+e[n]+"}");return"{ "+t.join(",")+" }"}(e.subs)}e.stringify=function(t,n,i){return"{code: function (c,p,i) { "+e.wrapMain(t.code)+" },"+m(t)+"}"};var g=0;function y(e){return e.replace(s,"\\\\").replace(n,'\\"').replace(i,"\\n").replace(r,"\\r").replace(o,"\\u2028").replace(a,"\\u2029")}function v(e){return~e.indexOf(".")?"d":"f"}function w(e,t){var n="<"+(t.prefix||"")+e.n+g++;return t.partials[n]={name:e.n,partials:{}},t.code+='t.b(t.rp("'+y(n)+'",c,p,"'+(e.indent||"")+'"));',n}function b(e,t){t.code+="t.b(t.t(t."+v(e.n)+'("'+y(e.n)+'",c,p,0)));'}function x(e){return"t.b("+e+");"}e.generate=function(t,n,i){g=0;var r={code:"",subs:{},partials:{}};return e.walk(t,r),i.asString?this.stringify(r,n,i):this.makeTemplate(r,n,i)},e.wrapMain=function(e){return'var t=this;t.b(i=i||"");'+e+"return t.fl();"},e.template=e.Template,e.makeTemplate=function(e,t,n){var i=this.makePartials(e);return i.code=new Function("c","p","i",this.wrapMain(e.code)),new this.template(i,t,this,n)},e.makePartials=function(e){var t,n={subs:{},partials:e.partials,name:e.name};for(t in n.partials)n.partials[t]=this.makePartials(n.partials[t]);for(t in e.subs)n.subs[t]=new Function("c","p","t","i",e.subs[t]);return n},e.codegen={"#":function(t,n){n.code+="if(t.s(t."+v(t.n)+'("'+y(t.n)+'",c,p,1),c,p,0,'+t.i+","+t.end+',"'+t.otag+" "+t.ctag+'")){t.rs(c,p,function(c,p,t){',e.walk(t.nodes,n),n.code+="});c.pop();}"},"^":function(t,n){n.code+="if(!t.s(t."+v(t.n)+'("'+y(t.n)+'",c,p,1),c,p,1,0,0,"")){',e.walk(t.nodes,n),n.code+="};"},">":w,"<":function(t,n){var i={partials:{},code:"",subs:{},inPartial:!0};e.walk(t.nodes,i);var r=n.partials[w(t,n)];r.subs=i.subs,r.partials=i.partials},$:function(t,n){var i={subs:{},code:"",partials:n.partials,prefix:t.n};e.walk(t.nodes,i),n.subs[t.n]=i.code,n.inPartial||(n.code+='t.sub("'+y(t.n)+'",c,p,i);')},"\n":function(e,t){t.code+=x('"\\n"'+(e.last?"":" + i"))},_v:function(e,t){t.code+="t.b(t.v(t."+v(e.n)+'("'+y(e.n)+'",c,p,0)));'},_t:function(e,t){t.code+=x('"'+y(e.text)+'"')},"{":b,"&":b},e.walk=function(t,n){for(var i,r=0,s=t.length;r<s;r++)(i=e.codegen[t[r].tag])&&i(t[r],n);return n},e.parse=function(e,t,n){return f(e,0,[],(n=n||{}).sectionTags||[])},e.cache={},e.cacheKey=function(e,t){return[e,!!t.asString,!!t.disableLambda,t.delimiters,!!t.modelGet].join("||")},e.compile=function(t,n){n=n||{};var i=e.cacheKey(t,n),r=this.cache[i];if(r){var s=r.partials;for(var o in s)delete s[o].instance;return r}return r=this.generate(this.parse(this.scan(t,n.delimiters),t,n),t,n),this.cache[i]=r}}(t)},289:function(e,t,n){!function(e){function t(e,t,n){var i;return t&&"object"==typeof t&&(void 0!==t[e]?i=t[e]:n&&t.get&&"function"==typeof t.get&&(i=t.get(e))),i}e.Template=function(e,t,n,i){e=e||{},this.r=e.code||this.r,this.c=n,this.options=i||{},this.text=t||"",this.partials=e.partials||{},this.subs=e.subs||{},this.buf=""},e.Template.prototype={r:function(e,t,n){return""},v:function(e){return e=u(e),a.test(e)?e.replace(n,"&amp;").replace(i,"&lt;").replace(r,"&gt;").replace(s,"&#39;").replace(o,"&quot;"):e},t:u,render:function(e,t,n){return this.ri([e],t||{},n)},ri:function(e,t,n){return this.r(e,t,n)},ep:function(e,t){var n=this.partials[e],i=t[n.name];if(n.instance&&n.base==i)return n.instance;if("string"==typeof i){if(!this.c)throw new Error("No compiler available.");i=this.c.compile(i,this.options)}if(!i)return null;if(this.partials[e].base=i,n.subs){for(key in t.stackText||(t.stackText={}),n.subs)t.stackText[key]||(t.stackText[key]=void 0!==this.activeSub&&t.stackText[this.activeSub]?t.stackText[this.activeSub]:this.text);i=function(e,t,n,i,r,s){function o(){}function a(){}var u;o.prototype=e,a.prototype=e.subs;var c=new o;for(u in c.subs=new a,c.subsText={},c.buf="",i=i||{},c.stackSubs=i,c.subsText=s,t)i[u]||(i[u]=t[u]);for(u in i)c.subs[u]=i[u];for(u in r=r||{},c.stackPartials=r,n)r[u]||(r[u]=n[u]);for(u in r)c.partials[u]=r[u];return c}(i,n.subs,n.partials,this.stackSubs,this.stackPartials,t.stackText)}return this.partials[e].instance=i,i},rp:function(e,t,n,i){var r=this.ep(e,n);return r?r.ri(t,n,i):""},rs:function(e,t,n){var i=e[e.length-1];if(c(i))for(var r=0;r<i.length;r++)e.push(i[r]),n(e,t,this),e.pop();else n(e,t,this)},s:function(e,t,n,i,r,s,o){var a;return(!c(e)||0!==e.length)&&("function"==typeof e&&(e=this.ms(e,t,n,i,r,s,o)),a=!!e,!i&&a&&t&&t.push("object"==typeof e?e:t[t.length-1]),a)},d:function(e,n,i,r){var s,o=e.split("."),a=this.f(o[0],n,i,r),u=this.options.modelGet,l=null;if("."===e&&c(n[n.length-2]))a=n[n.length-1];else for(var h=1;h<o.length;h++)void 0!==(s=t(o[h],a,u))?(l=a,a=s):a="";return!(r&&!a)&&(r||"function"!=typeof a||(n.push(l),a=this.mv(a,n,i),n.pop()),a)},f:function(e,n,i,r){for(var s=!1,o=!1,a=this.options.modelGet,u=n.length-1;u>=0;u--)if(void 0!==(s=t(e,n[u],a))){o=!0;break}return o?(r||"function"!=typeof s||(s=this.mv(s,n,i)),s):!r&&""},ls:function(e,t,n,i,r){var s=this.options.delimiters;return this.options.delimiters=r,this.b(this.ct(u(e.call(t,i)),t,n)),this.options.delimiters=s,!1},ct:function(e,t,n){if(this.options.disableLambda)throw new Error("Lambda features disabled.");return this.c.compile(e,this.options).render(t,n)},b:function(e){this.buf+=e},fl:function(){var e=this.buf;return this.buf="",e},ms:function(e,t,n,i,r,s,o){var a,u=t[t.length-1],c=e.call(u);return"function"==typeof c?!!i||(a=this.activeSub&&this.subsText&&this.subsText[this.activeSub]?this.subsText[this.activeSub]:this.text,this.ls(c,u,n,a.substring(r,s),o)):c},mv:function(e,t,n){var i=t[t.length-1],r=e.call(i);return"function"==typeof r?this.ct(u(r.call(i)),i,n):r},sub:function(e,t,n,i){var r=this.subs[e];r&&(this.activeSub=e,r(t,n,this,i),this.activeSub=!1)}};var n=/&/g,i=/</g,r=/>/g,s=/\'/g,o=/\"/g,a=/[&<>\"\']/;function u(e){return String(null==e?"":e)}var c=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)}}(t)},290:function(e,t,n){var i,r;!function(){var s,o,a,u,c,l,h,f,p,d,m,g,y,v,w,b,x,_,k,C,S,E,T,A,P,O,L=function(e){var t=new L.Builder;return t.pipeline.add(L.trimmer,L.stopWordFilter,L.stemmer),t.searchPipeline.add(L.stemmer),e.call(t,t),t.build()};L.version="2.3.9",L.utils={},L.utils.warn=(s=this,function(e){s.console&&console.warn&&console.warn(e)}),L.utils.asString=function(e){return null==e?"":e.toString()},L.utils.clone=function(e){if(null==e)return e;for(var t=Object.create(null),n=Object.keys(e),i=0;i<n.length;i++){var r=n[i],s=e[r];if(Array.isArray(s))t[r]=s.slice();else{if("string"!=typeof s&&"number"!=typeof s&&"boolean"!=typeof s)throw new TypeError("clone is not deep and does not support nested objects");t[r]=s}}return t},L.FieldRef=function(e,t,n){this.docRef=e,this.fieldName=t,this._stringValue=n},L.FieldRef.joiner="/",L.FieldRef.fromString=function(e){var t=e.indexOf(L.FieldRef.joiner);if(-1===t)throw"malformed field ref string";var n=e.slice(0,t),i=e.slice(t+1);return new L.FieldRef(i,n,e)},L.FieldRef.prototype.toString=function(){return null==this._stringValue&&(this._stringValue=this.fieldName+L.FieldRef.joiner+this.docRef),this._stringValue},L.Set=function(e){if(this.elements=Object.create(null),e){this.length=e.length;for(var t=0;t<this.length;t++)this.elements[e[t]]=!0}else this.length=0},L.Set.complete={intersect:function(e){return e},union:function(){return this},contains:function(){return!0}},L.Set.empty={intersect:function(){return this},union:function(e){return e},contains:function(){return!1}},L.Set.prototype.contains=function(e){return!!this.elements[e]},L.Set.prototype.intersect=function(e){var t,n,i,r=[];if(e===L.Set.complete)return this;if(e===L.Set.empty)return e;this.length<e.length?(t=this,n=e):(t=e,n=this),i=Object.keys(t.elements);for(var s=0;s<i.length;s++){var o=i[s];o in n.elements&&r.push(o)}return new L.Set(r)},L.Set.prototype.union=function(e){return e===L.Set.complete?L.Set.complete:e===L.Set.empty?this:new L.Set(Object.keys(this.elements).concat(Object.keys(e.elements)))},L.idf=function(e,t){var n=0;for(var i in e)"_index"!=i&&(n+=Object.keys(e[i]).length);var r=(t-n+.5)/(n+.5);return Math.log(1+Math.abs(r))},L.Token=function(e,t){this.str=e||"",this.metadata=t||{}},L.Token.prototype.toString=function(){return this.str},L.Token.prototype.update=function(e){return this.str=e(this.str,this.metadata),this},L.Token.prototype.clone=function(e){return e=e||function(e){return e},new L.Token(e(this.str,this.metadata),this.metadata)},L.tokenizer=function(e,t){if(null==e||null==e)return[];if(Array.isArray(e))return e.map((function(e){return new L.Token(L.utils.asString(e).toLowerCase(),L.utils.clone(t))}));for(var n=e.toString().toLowerCase(),i=n.length,r=[],s=0,o=0;s<=i;s++){var a=s-o;if(n.charAt(s).match(L.tokenizer.separator)||s==i){if(a>0){var u=L.utils.clone(t)||{};u.position=[o,a],u.index=r.length,r.push(new L.Token(n.slice(o,s),u))}o=s+1}}return r},L.tokenizer.separator=/[\s\-]+/,L.Pipeline=function(){this._stack=[]},L.Pipeline.registeredFunctions=Object.create(null),L.Pipeline.registerFunction=function(e,t){t in this.registeredFunctions&&L.utils.warn("Overwriting existing registered function: "+t),e.label=t,L.Pipeline.registeredFunctions[e.label]=e},L.Pipeline.warnIfFunctionNotRegistered=function(e){e.label&&e.label in this.registeredFunctions||L.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},L.Pipeline.load=function(e){var t=new L.Pipeline;return e.forEach((function(e){var n=L.Pipeline.registeredFunctions[e];if(!n)throw new Error("Cannot load unregistered function: "+e);t.add(n)})),t},L.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach((function(e){L.Pipeline.warnIfFunctionNotRegistered(e),this._stack.push(e)}),this)},L.Pipeline.prototype.after=function(e,t){L.Pipeline.warnIfFunctionNotRegistered(t);var n=this._stack.indexOf(e);if(-1==n)throw new Error("Cannot find existingFn");n+=1,this._stack.splice(n,0,t)},L.Pipeline.prototype.before=function(e,t){L.Pipeline.warnIfFunctionNotRegistered(t);var n=this._stack.indexOf(e);if(-1==n)throw new Error("Cannot find existingFn");this._stack.splice(n,0,t)},L.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);-1!=t&&this._stack.splice(t,1)},L.Pipeline.prototype.run=function(e){for(var t=this._stack.length,n=0;n<t;n++){for(var i=this._stack[n],r=[],s=0;s<e.length;s++){var o=i(e[s],s,e);if(null!=o&&""!==o)if(Array.isArray(o))for(var a=0;a<o.length;a++)r.push(o[a]);else r.push(o)}e=r}return e},L.Pipeline.prototype.runString=function(e,t){var n=new L.Token(e,t);return this.run([n]).map((function(e){return e.toString()}))},L.Pipeline.prototype.reset=function(){this._stack=[]},L.Pipeline.prototype.toJSON=function(){return this._stack.map((function(e){return L.Pipeline.warnIfFunctionNotRegistered(e),e.label}))},L.Vector=function(e){this._magnitude=0,this.elements=e||[]},L.Vector.prototype.positionForIndex=function(e){if(0==this.elements.length)return 0;for(var t=0,n=this.elements.length/2,i=n-t,r=Math.floor(i/2),s=this.elements[2*r];i>1&&(s<e&&(t=r),s>e&&(n=r),s!=e);)i=n-t,r=t+Math.floor(i/2),s=this.elements[2*r];return s==e||s>e?2*r:s<e?2*(r+1):void 0},L.Vector.prototype.insert=function(e,t){this.upsert(e,t,(function(){throw"duplicate index"}))},L.Vector.prototype.upsert=function(e,t,n){this._magnitude=0;var i=this.positionForIndex(e);this.elements[i]==e?this.elements[i+1]=n(this.elements[i+1],t):this.elements.splice(i,0,e,t)},L.Vector.prototype.magnitude=function(){if(this._magnitude)return this._magnitude;for(var e=0,t=this.elements.length,n=1;n<t;n+=2){var i=this.elements[n];e+=i*i}return this._magnitude=Math.sqrt(e)},L.Vector.prototype.dot=function(e){for(var t=0,n=this.elements,i=e.elements,r=n.length,s=i.length,o=0,a=0,u=0,c=0;u<r&&c<s;)(o=n[u])<(a=i[c])?u+=2:o>a?c+=2:o==a&&(t+=n[u+1]*i[c+1],u+=2,c+=2);return t},L.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},L.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,n=0;t<this.elements.length;t+=2,n++)e[n]=this.elements[t];return e},L.Vector.prototype.toJSON=function(){return this.elements},L.stemmer=(o={ational:"ate",tional:"tion",enci:"ence",anci:"ance",izer:"ize",bli:"ble",alli:"al",entli:"ent",eli:"e",ousli:"ous",ization:"ize",ation:"ate",ator:"ate",alism:"al",iveness:"ive",fulness:"ful",ousness:"ous",aliti:"al",iviti:"ive",biliti:"ble",logi:"log"},a={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},u="[aeiouy]",c="[^aeiou][^aeiouy]*",l=new RegExp("^([^aeiou][^aeiouy]*)?[aeiouy][aeiou]*[^aeiou][^aeiouy]*"),h=new RegExp("^([^aeiou][^aeiouy]*)?[aeiouy][aeiou]*[^aeiou][^aeiouy]*[aeiouy][aeiou]*[^aeiou][^aeiouy]*"),f=new RegExp("^([^aeiou][^aeiouy]*)?[aeiouy][aeiou]*[^aeiou][^aeiouy]*([aeiouy][aeiou]*)?$"),p=new RegExp("^([^aeiou][^aeiouy]*)?[aeiouy]"),d=/^(.+?)(ss|i)es$/,m=/^(.+?)([^s])s$/,g=/^(.+?)eed$/,y=/^(.+?)(ed|ing)$/,v=/.$/,w=/(at|bl|iz)$/,b=new RegExp("([^aeiouylsz])\\1$"),x=new RegExp("^"+c+u+"[^aeiouwxy]$"),_=/^(.+?[^aeiou])y$/,k=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,C=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,S=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,E=/^(.+?)(s|t)(ion)$/,T=/^(.+?)e$/,A=/ll$/,P=new RegExp("^"+c+u+"[^aeiouwxy]$"),O=function(e){var t,n,i,r,s,u,c;if(e.length<3)return e;if("y"==(i=e.substr(0,1))&&(e=i.toUpperCase()+e.substr(1)),s=m,(r=d).test(e)?e=e.replace(r,"$1$2"):s.test(e)&&(e=e.replace(s,"$1$2")),s=y,(r=g).test(e)){var O=r.exec(e);(r=l).test(O[1])&&(r=v,e=e.replace(r,""))}else s.test(e)&&(t=(O=s.exec(e))[1],(s=p).test(t)&&(u=b,c=x,(s=w).test(e=t)?e+="e":u.test(e)?(r=v,e=e.replace(r,"")):c.test(e)&&(e+="e")));return(r=_).test(e)&&(e=(t=(O=r.exec(e))[1])+"i"),(r=k).test(e)&&(t=(O=r.exec(e))[1],n=O[2],(r=l).test(t)&&(e=t+o[n])),(r=C).test(e)&&(t=(O=r.exec(e))[1],n=O[2],(r=l).test(t)&&(e=t+a[n])),s=E,(r=S).test(e)?(t=(O=r.exec(e))[1],(r=h).test(t)&&(e=t)):s.test(e)&&(t=(O=s.exec(e))[1]+O[2],(s=h).test(t)&&(e=t)),(r=T).test(e)&&(t=(O=r.exec(e))[1],s=f,u=P,((r=h).test(t)||s.test(t)&&!u.test(t))&&(e=t)),s=h,(r=A).test(e)&&s.test(e)&&(r=v,e=e.replace(r,"")),"y"==i&&(e=i.toLowerCase()+e.substr(1)),e},function(e){return e.update(O)}),L.Pipeline.registerFunction(L.stemmer,"stemmer"),L.generateStopWordFilter=function(e){var t=e.reduce((function(e,t){return e[t]=t,e}),{});return function(e){if(e&&t[e.toString()]!==e.toString())return e}},L.stopWordFilter=L.generateStopWordFilter(["a","able","about","across","after","all","almost","also","am","among","an","and","any","are","as","at","be","because","been","but","by","can","cannot","could","dear","did","do","does","either","else","ever","every","for","from","get","got","had","has","have","he","her","hers","him","his","how","however","i","if","in","into","is","it","its","just","least","let","like","likely","may","me","might","most","must","my","neither","no","nor","not","of","off","often","on","only","or","other","our","own","rather","said","say","says","she","should","since","so","some","than","that","the","their","them","then","there","these","they","this","tis","to","too","twas","us","wants","was","we","were","what","when","where","which","while","who","whom","why","will","with","would","yet","you","your"]),L.Pipeline.registerFunction(L.stopWordFilter,"stopWordFilter"),L.trimmer=function(e){return e.update((function(e){return e.replace(/^\W+/,"").replace(/\W+$/,"")}))},L.Pipeline.registerFunction(L.trimmer,"trimmer"),L.TokenSet=function(){this.final=!1,this.edges={},this.id=L.TokenSet._nextId,L.TokenSet._nextId+=1},L.TokenSet._nextId=1,L.TokenSet.fromArray=function(e){for(var t=new L.TokenSet.Builder,n=0,i=e.length;n<i;n++)t.insert(e[n]);return t.finish(),t.root},L.TokenSet.fromClause=function(e){return"editDistance"in e?L.TokenSet.fromFuzzyString(e.term,e.editDistance):L.TokenSet.fromString(e.term)},L.TokenSet.fromFuzzyString=function(e,t){for(var n=new L.TokenSet,i=[{node:n,editsRemaining:t,str:e}];i.length;){var r=i.pop();if(r.str.length>0){var s,o=r.str.charAt(0);o in r.node.edges?s=r.node.edges[o]:(s=new L.TokenSet,r.node.edges[o]=s),1==r.str.length&&(s.final=!0),i.push({node:s,editsRemaining:r.editsRemaining,str:r.str.slice(1)})}if(0!=r.editsRemaining){if("*"in r.node.edges)var a=r.node.edges["*"];else{a=new L.TokenSet;r.node.edges["*"]=a}if(0==r.str.length&&(a.final=!0),i.push({node:a,editsRemaining:r.editsRemaining-1,str:r.str}),r.str.length>1&&i.push({node:r.node,editsRemaining:r.editsRemaining-1,str:r.str.slice(1)}),1==r.str.length&&(r.node.final=!0),r.str.length>=1){if("*"in r.node.edges)var u=r.node.edges["*"];else{u=new L.TokenSet;r.node.edges["*"]=u}1==r.str.length&&(u.final=!0),i.push({node:u,editsRemaining:r.editsRemaining-1,str:r.str.slice(1)})}if(r.str.length>1){var c,l=r.str.charAt(0),h=r.str.charAt(1);h in r.node.edges?c=r.node.edges[h]:(c=new L.TokenSet,r.node.edges[h]=c),1==r.str.length&&(c.final=!0),i.push({node:c,editsRemaining:r.editsRemaining-1,str:l+r.str.slice(2)})}}}return n},L.TokenSet.fromString=function(e){for(var t=new L.TokenSet,n=t,i=0,r=e.length;i<r;i++){var s=e[i],o=i==r-1;if("*"==s)t.edges[s]=t,t.final=o;else{var a=new L.TokenSet;a.final=o,t.edges[s]=a,t=a}}return n},L.TokenSet.prototype.toArray=function(){for(var e=[],t=[{prefix:"",node:this}];t.length;){var n=t.pop(),i=Object.keys(n.node.edges),r=i.length;n.node.final&&(n.prefix.charAt(0),e.push(n.prefix));for(var s=0;s<r;s++){var o=i[s];t.push({prefix:n.prefix.concat(o),node:n.node.edges[o]})}}return e},L.TokenSet.prototype.toString=function(){if(this._str)return this._str;for(var e=this.final?"1":"0",t=Object.keys(this.edges).sort(),n=t.length,i=0;i<n;i++){var r=t[i];e=e+r+this.edges[r].id}return e},L.TokenSet.prototype.intersect=function(e){for(var t=new L.TokenSet,n=void 0,i=[{qNode:e,output:t,node:this}];i.length;){n=i.pop();for(var r=Object.keys(n.qNode.edges),s=r.length,o=Object.keys(n.node.edges),a=o.length,u=0;u<s;u++)for(var c=r[u],l=0;l<a;l++){var h=o[l];if(h==c||"*"==c){var f=n.node.edges[h],p=n.qNode.edges[c],d=f.final&&p.final,m=void 0;h in n.output.edges?(m=n.output.edges[h]).final=m.final||d:((m=new L.TokenSet).final=d,n.output.edges[h]=m),i.push({qNode:p,output:m,node:f})}}}return t},L.TokenSet.Builder=function(){this.previousWord="",this.root=new L.TokenSet,this.uncheckedNodes=[],this.minimizedNodes={}},L.TokenSet.Builder.prototype.insert=function(e){var t,n=0;if(e<this.previousWord)throw new Error("Out of order word insertion");for(var i=0;i<e.length&&i<this.previousWord.length&&e[i]==this.previousWord[i];i++)n++;this.minimize(n),t=0==this.uncheckedNodes.length?this.root:this.uncheckedNodes[this.uncheckedNodes.length-1].child;for(i=n;i<e.length;i++){var r=new L.TokenSet,s=e[i];t.edges[s]=r,this.uncheckedNodes.push({parent:t,char:s,child:r}),t=r}t.final=!0,this.previousWord=e},L.TokenSet.Builder.prototype.finish=function(){this.minimize(0)},L.TokenSet.Builder.prototype.minimize=function(e){for(var t=this.uncheckedNodes.length-1;t>=e;t--){var n=this.uncheckedNodes[t],i=n.child.toString();i in this.minimizedNodes?n.parent.edges[n.char]=this.minimizedNodes[i]:(n.child._str=i,this.minimizedNodes[i]=n.child),this.uncheckedNodes.pop()}},L.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},L.Index.prototype.search=function(e){return this.query((function(t){new L.QueryParser(e,t).parse()}))},L.Index.prototype.query=function(e){for(var t=new L.Query(this.fields),n=Object.create(null),i=Object.create(null),r=Object.create(null),s=Object.create(null),o=Object.create(null),a=0;a<this.fields.length;a++)i[this.fields[a]]=new L.Vector;e.call(t,t);for(a=0;a<t.clauses.length;a++){var u=t.clauses[a],c=null,l=L.Set.empty;c=u.usePipeline?this.pipeline.runString(u.term,{fields:u.fields}):[u.term];for(var h=0;h<c.length;h++){var f=c[h];u.term=f;var p=L.TokenSet.fromClause(u),d=this.tokenSet.intersect(p).toArray();if(0===d.length&&u.presence===L.Query.presence.REQUIRED){for(var m=0;m<u.fields.length;m++){s[Q=u.fields[m]]=L.Set.empty}break}for(var g=0;g<d.length;g++){var y=d[g],v=this.invertedIndex[y],w=v._index;for(m=0;m<u.fields.length;m++){var b=v[Q=u.fields[m]],x=Object.keys(b),_=y+"/"+Q,k=new L.Set(x);if(u.presence==L.Query.presence.REQUIRED&&(l=l.union(k),void 0===s[Q]&&(s[Q]=L.Set.complete)),u.presence!=L.Query.presence.PROHIBITED){if(i[Q].upsert(w,u.boost,(function(e,t){return e+t})),!r[_]){for(var C=0;C<x.length;C++){var S,E=x[C],T=new L.FieldRef(E,Q),A=b[E];void 0===(S=n[T])?n[T]=new L.MatchData(y,Q,A):S.add(y,Q,A)}r[_]=!0}}else void 0===o[Q]&&(o[Q]=L.Set.empty),o[Q]=o[Q].union(k)}}}if(u.presence===L.Query.presence.REQUIRED)for(m=0;m<u.fields.length;m++){s[Q=u.fields[m]]=s[Q].intersect(l)}}var P=L.Set.complete,O=L.Set.empty;for(a=0;a<this.fields.length;a++){var Q;s[Q=this.fields[a]]&&(P=P.intersect(s[Q])),o[Q]&&(O=O.union(o[Q]))}var I=Object.keys(n),N=[],$=Object.create(null);if(t.isNegated()){I=Object.keys(this.fieldVectors);for(a=0;a<I.length;a++){T=I[a];var D=L.FieldRef.fromString(T);n[T]=new L.MatchData}}for(a=0;a<I.length;a++){var F=(D=L.FieldRef.fromString(I[a])).docRef;if(P.contains(F)&&!O.contains(F)){var R,j=this.fieldVectors[D],M=i[D.fieldName].similarity(j);if(void 0!==(R=$[F]))R.score+=M,R.matchData.combine(n[D]);else{var V={ref:F,score:M,matchData:n[D]};$[F]=V,N.push(V)}}}return N.sort((function(e,t){return t.score-e.score}))},L.Index.prototype.toJSON=function(){var e=Object.keys(this.invertedIndex).sort().map((function(e){return[e,this.invertedIndex[e]]}),this),t=Object.keys(this.fieldVectors).map((function(e){return[e,this.fieldVectors[e].toJSON()]}),this);return{version:L.version,fields:this.fields,fieldVectors:t,invertedIndex:e,pipeline:this.pipeline.toJSON()}},L.Index.load=function(e){var t={},n={},i=e.fieldVectors,r=Object.create(null),s=e.invertedIndex,o=new L.TokenSet.Builder,a=L.Pipeline.load(e.pipeline);e.version!=L.version&&L.utils.warn("Version mismatch when loading serialised index. Current version of lunr '"+L.version+"' does not match serialized index '"+e.version+"'");for(var u=0;u<i.length;u++){var c=(h=i[u])[0],l=h[1];n[c]=new L.Vector(l)}for(u=0;u<s.length;u++){var h,f=(h=s[u])[0],p=h[1];o.insert(f),r[f]=p}return o.finish(),t.fields=e.fields,t.fieldVectors=n,t.invertedIndex=r,t.tokenSet=o.root,t.pipeline=a,new L.Index(t)},L.Builder=function(){this._ref="id",this._fields=Object.create(null),this._documents=Object.create(null),this.invertedIndex=Object.create(null),this.fieldTermFrequencies={},this.fieldLengths={},this.tokenizer=L.tokenizer,this.pipeline=new L.Pipeline,this.searchPipeline=new L.Pipeline,this.documentCount=0,this._b=.75,this._k1=1.2,this.termIndex=0,this.metadataWhitelist=[]},L.Builder.prototype.ref=function(e){this._ref=e},L.Builder.prototype.field=function(e,t){if(/\//.test(e))throw new RangeError("Field '"+e+"' contains illegal character '/'");this._fields[e]=t||{}},L.Builder.prototype.b=function(e){this._b=e<0?0:e>1?1:e},L.Builder.prototype.k1=function(e){this._k1=e},L.Builder.prototype.add=function(e,t){var n=e[this._ref],i=Object.keys(this._fields);this._documents[n]=t||{},this.documentCount+=1;for(var r=0;r<i.length;r++){var s=i[r],o=this._fields[s].extractor,a=o?o(e):e[s],u=this.tokenizer(a,{fields:[s]}),c=this.pipeline.run(u),l=new L.FieldRef(n,s),h=Object.create(null);this.fieldTermFrequencies[l]=h,this.fieldLengths[l]=0,this.fieldLengths[l]+=c.length;for(var f=0;f<c.length;f++){var p=c[f];if(null==h[p]&&(h[p]=0),h[p]+=1,null==this.invertedIndex[p]){var d=Object.create(null);d._index=this.termIndex,this.termIndex+=1;for(var m=0;m<i.length;m++)d[i[m]]=Object.create(null);this.invertedIndex[p]=d}null==this.invertedIndex[p][s][n]&&(this.invertedIndex[p][s][n]=Object.create(null));for(var g=0;g<this.metadataWhitelist.length;g++){var y=this.metadataWhitelist[g],v=p.metadata[y];null==this.invertedIndex[p][s][n][y]&&(this.invertedIndex[p][s][n][y]=[]),this.invertedIndex[p][s][n][y].push(v)}}}},L.Builder.prototype.calculateAverageFieldLengths=function(){for(var e=Object.keys(this.fieldLengths),t=e.length,n={},i={},r=0;r<t;r++){var s=L.FieldRef.fromString(e[r]),o=s.fieldName;i[o]||(i[o]=0),i[o]+=1,n[o]||(n[o]=0),n[o]+=this.fieldLengths[s]}var a=Object.keys(this._fields);for(r=0;r<a.length;r++){var u=a[r];n[u]=n[u]/i[u]}this.averageFieldLength=n},L.Builder.prototype.createFieldVectors=function(){for(var e={},t=Object.keys(this.fieldTermFrequencies),n=t.length,i=Object.create(null),r=0;r<n;r++){for(var s=L.FieldRef.fromString(t[r]),o=s.fieldName,a=this.fieldLengths[s],u=new L.Vector,c=this.fieldTermFrequencies[s],l=Object.keys(c),h=l.length,f=this._fields[o].boost||1,p=this._documents[s.docRef].boost||1,d=0;d<h;d++){var m,g,y,v=l[d],w=c[v],b=this.invertedIndex[v]._index;void 0===i[v]?(m=L.idf(this.invertedIndex[v],this.documentCount),i[v]=m):m=i[v],g=m*((this._k1+1)*w)/(this._k1*(1-this._b+this._b*(a/this.averageFieldLength[o]))+w),g*=f,g*=p,y=Math.round(1e3*g)/1e3,u.insert(b,y)}e[s]=u}this.fieldVectors=e},L.Builder.prototype.createTokenSet=function(){this.tokenSet=L.TokenSet.fromArray(Object.keys(this.invertedIndex).sort())},L.Builder.prototype.build=function(){return this.calculateAverageFieldLengths(),this.createFieldVectors(),this.createTokenSet(),new L.Index({invertedIndex:this.invertedIndex,fieldVectors:this.fieldVectors,tokenSet:this.tokenSet,fields:Object.keys(this._fields),pipeline:this.searchPipeline})},L.Builder.prototype.use=function(e){var t=Array.prototype.slice.call(arguments,1);t.unshift(this),e.apply(this,t)},L.MatchData=function(e,t,n){for(var i=Object.create(null),r=Object.keys(n||{}),s=0;s<r.length;s++){var o=r[s];i[o]=n[o].slice()}this.metadata=Object.create(null),void 0!==e&&(this.metadata[e]=Object.create(null),this.metadata[e][t]=i)},L.MatchData.prototype.combine=function(e){for(var t=Object.keys(e.metadata),n=0;n<t.length;n++){var i=t[n],r=Object.keys(e.metadata[i]);null==this.metadata[i]&&(this.metadata[i]=Object.create(null));for(var s=0;s<r.length;s++){var o=r[s],a=Object.keys(e.metadata[i][o]);null==this.metadata[i][o]&&(this.metadata[i][o]=Object.create(null));for(var u=0;u<a.length;u++){var c=a[u];null==this.metadata[i][o][c]?this.metadata[i][o][c]=e.metadata[i][o][c]:this.metadata[i][o][c]=this.metadata[i][o][c].concat(e.metadata[i][o][c])}}}},L.MatchData.prototype.add=function(e,t,n){if(!(e in this.metadata))return this.metadata[e]=Object.create(null),void(this.metadata[e][t]=n);if(t in this.metadata[e])for(var i=Object.keys(n),r=0;r<i.length;r++){var s=i[r];s in this.metadata[e][t]?this.metadata[e][t][s]=this.metadata[e][t][s].concat(n[s]):this.metadata[e][t][s]=n[s]}else this.metadata[e][t]=n},L.Query=function(e){this.clauses=[],this.allFields=e},L.Query.wildcard=new String("*"),L.Query.wildcard.NONE=0,L.Query.wildcard.LEADING=1,L.Query.wildcard.TRAILING=2,L.Query.presence={OPTIONAL:1,REQUIRED:2,PROHIBITED:3},L.Query.prototype.clause=function(e){return"fields"in e||(e.fields=this.allFields),"boost"in e||(e.boost=1),"usePipeline"in e||(e.usePipeline=!0),"wildcard"in e||(e.wildcard=L.Query.wildcard.NONE),e.wildcard&L.Query.wildcard.LEADING&&e.term.charAt(0)!=L.Query.wildcard&&(e.term="*"+e.term),e.wildcard&L.Query.wildcard.TRAILING&&e.term.slice(-1)!=L.Query.wildcard&&(e.term=e.term+"*"),"presence"in e||(e.presence=L.Query.presence.OPTIONAL),this.clauses.push(e),this},L.Query.prototype.isNegated=function(){for(var e=0;e<this.clauses.length;e++)if(this.clauses[e].presence!=L.Query.presence.PROHIBITED)return!1;return!0},L.Query.prototype.term=function(e,t){if(Array.isArray(e))return e.forEach((function(e){this.term(e,L.utils.clone(t))}),this),this;var n=t||{};return n.term=e.toString(),this.clause(n),this},L.QueryParseError=function(e,t,n){this.name="QueryParseError",this.message=e,this.start=t,this.end=n},L.QueryParseError.prototype=new Error,L.QueryLexer=function(e){this.lexemes=[],this.str=e,this.length=e.length,this.pos=0,this.start=0,this.escapeCharPositions=[]},L.QueryLexer.prototype.run=function(){for(var e=L.QueryLexer.lexText;e;)e=e(this)},L.QueryLexer.prototype.sliceString=function(){for(var e=[],t=this.start,n=this.pos,i=0;i<this.escapeCharPositions.length;i++)n=this.escapeCharPositions[i],e.push(this.str.slice(t,n)),t=n+1;return e.push(this.str.slice(t,this.pos)),this.escapeCharPositions.length=0,e.join("")},L.QueryLexer.prototype.emit=function(e){this.lexemes.push({type:e,str:this.sliceString(),start:this.start,end:this.pos}),this.start=this.pos},L.QueryLexer.prototype.escapeCharacter=function(){this.escapeCharPositions.push(this.pos-1),this.pos+=1},L.QueryLexer.prototype.next=function(){if(this.pos>=this.length)return L.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},L.QueryLexer.prototype.width=function(){return this.pos-this.start},L.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},L.QueryLexer.prototype.backup=function(){this.pos-=1},L.QueryLexer.prototype.acceptDigitRun=function(){var e,t;do{t=(e=this.next()).charCodeAt(0)}while(t>47&&t<58);e!=L.QueryLexer.EOS&&this.backup()},L.QueryLexer.prototype.more=function(){return this.pos<this.length},L.QueryLexer.EOS="EOS",L.QueryLexer.FIELD="FIELD",L.QueryLexer.TERM="TERM",L.QueryLexer.EDIT_DISTANCE="EDIT_DISTANCE",L.QueryLexer.BOOST="BOOST",L.QueryLexer.PRESENCE="PRESENCE",L.QueryLexer.lexField=function(e){return e.backup(),e.emit(L.QueryLexer.FIELD),e.ignore(),L.QueryLexer.lexText},L.QueryLexer.lexTerm=function(e){if(e.width()>1&&(e.backup(),e.emit(L.QueryLexer.TERM)),e.ignore(),e.more())return L.QueryLexer.lexText},L.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(L.QueryLexer.EDIT_DISTANCE),L.QueryLexer.lexText},L.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(L.QueryLexer.BOOST),L.QueryLexer.lexText},L.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(L.QueryLexer.TERM)},L.QueryLexer.termSeparator=L.tokenizer.separator,L.QueryLexer.lexText=function(e){for(;;){var t=e.next();if(t==L.QueryLexer.EOS)return L.QueryLexer.lexEOS;if(92!=t.charCodeAt(0)){if(":"==t)return L.QueryLexer.lexField;if("~"==t)return e.backup(),e.width()>0&&e.emit(L.QueryLexer.TERM),L.QueryLexer.lexEditDistance;if("^"==t)return e.backup(),e.width()>0&&e.emit(L.QueryLexer.TERM),L.QueryLexer.lexBoost;if("+"==t&&1===e.width())return e.emit(L.QueryLexer.PRESENCE),L.QueryLexer.lexText;if("-"==t&&1===e.width())return e.emit(L.QueryLexer.PRESENCE),L.QueryLexer.lexText;if(t.match(L.QueryLexer.termSeparator))return L.QueryLexer.lexTerm}else e.escapeCharacter()}},L.QueryParser=function(e,t){this.lexer=new L.QueryLexer(e),this.query=t,this.currentClause={},this.lexemeIdx=0},L.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=L.QueryParser.parseClause;e;)e=e(this);return this.query},L.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},L.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},L.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},L.QueryParser.parseClause=function(e){var t=e.peekLexeme();if(null!=t)switch(t.type){case L.QueryLexer.PRESENCE:return L.QueryParser.parsePresence;case L.QueryLexer.FIELD:return L.QueryParser.parseField;case L.QueryLexer.TERM:return L.QueryParser.parseTerm;default:var n="expected either a field or a term, found "+t.type;throw t.str.length>=1&&(n+=" with value '"+t.str+"'"),new L.QueryParseError(n,t.start,t.end)}},L.QueryParser.parsePresence=function(e){var t=e.consumeLexeme();if(null!=t){switch(t.str){case"-":e.currentClause.presence=L.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=L.Query.presence.REQUIRED;break;default:var n="unrecognised presence operator'"+t.str+"'";throw new L.QueryParseError(n,t.start,t.end)}var i=e.peekLexeme();if(null==i){n="expecting term or field, found nothing";throw new L.QueryParseError(n,t.start,t.end)}switch(i.type){case L.QueryLexer.FIELD:return L.QueryParser.parseField;case L.QueryLexer.TERM:return L.QueryParser.parseTerm;default:n="expecting term or field, found '"+i.type+"'";throw new L.QueryParseError(n,i.start,i.end)}}},L.QueryParser.parseField=function(e){var t=e.consumeLexeme();if(null!=t){if(-1==e.query.allFields.indexOf(t.str)){var n=e.query.allFields.map((function(e){return"'"+e+"'"})).join(", "),i="unrecognised field '"+t.str+"', possible fields: "+n;throw new L.QueryParseError(i,t.start,t.end)}e.currentClause.fields=[t.str];var r=e.peekLexeme();if(null==r){i="expecting term, found nothing";throw new L.QueryParseError(i,t.start,t.end)}switch(r.type){case L.QueryLexer.TERM:return L.QueryParser.parseTerm;default:i="expecting term, found '"+r.type+"'";throw new L.QueryParseError(i,r.start,r.end)}}},L.QueryParser.parseTerm=function(e){var t=e.consumeLexeme();if(null!=t){e.currentClause.term=t.str.toLowerCase(),-1!=t.str.indexOf("*")&&(e.currentClause.usePipeline=!1);var n=e.peekLexeme();if(null!=n)switch(n.type){case L.QueryLexer.TERM:return e.nextClause(),L.QueryParser.parseTerm;case L.QueryLexer.FIELD:return e.nextClause(),L.QueryParser.parseField;case L.QueryLexer.EDIT_DISTANCE:return L.QueryParser.parseEditDistance;case L.QueryLexer.BOOST:return L.QueryParser.parseBoost;case L.QueryLexer.PRESENCE:return e.nextClause(),L.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+n.type+"'";throw new L.QueryParseError(i,n.start,n.end)}else e.nextClause()}},L.QueryParser.parseEditDistance=function(e){var t=e.consumeLexeme();if(null!=t){var n=parseInt(t.str,10);if(isNaN(n)){var i="edit distance must be numeric";throw new L.QueryParseError(i,t.start,t.end)}e.currentClause.editDistance=n;var r=e.peekLexeme();if(null!=r)switch(r.type){case L.QueryLexer.TERM:return e.nextClause(),L.QueryParser.parseTerm;case L.QueryLexer.FIELD:return e.nextClause(),L.QueryParser.parseField;case L.QueryLexer.EDIT_DISTANCE:return L.QueryParser.parseEditDistance;case L.QueryLexer.BOOST:return L.QueryParser.parseBoost;case L.QueryLexer.PRESENCE:return e.nextClause(),L.QueryParser.parsePresence;default:i="Unexpected lexeme type '"+r.type+"'";throw new L.QueryParseError(i,r.start,r.end)}else e.nextClause()}},L.QueryParser.parseBoost=function(e){var t=e.consumeLexeme();if(null!=t){var n=parseInt(t.str,10);if(isNaN(n)){var i="boost must be numeric";throw new L.QueryParseError(i,t.start,t.end)}e.currentClause.boost=n;var r=e.peekLexeme();if(null!=r)switch(r.type){case L.QueryLexer.TERM:return e.nextClause(),L.QueryParser.parseTerm;case L.QueryLexer.FIELD:return e.nextClause(),L.QueryParser.parseField;case L.QueryLexer.EDIT_DISTANCE:return L.QueryParser.parseEditDistance;case L.QueryLexer.BOOST:return L.QueryParser.parseBoost;case L.QueryLexer.PRESENCE:return e.nextClause(),L.QueryParser.parsePresence;default:i="Unexpected lexeme type '"+r.type+"'";throw new L.QueryParseError(i,r.start,r.end)}else e.nextClause()}},void 0===(r="function"==typeof(i=function(){return L})?i.call(t,n,t,e):i)||(e.exports=r)}()},291:function(e,t,n){var i,r;void 0===(r="function"==typeof(i=function(){return function(e){e.stemmerSupport={Among:function(e,t,n,i){if(this.toCharArray=function(e){for(var t=e.length,n=new Array(t),i=0;i<t;i++)n[i]=e.charCodeAt(i);return n},!e&&""!=e||!t&&0!=t||!n)throw"Bad Among initialisation: s:"+e+", substring_i: "+t+", result: "+n;this.s_size=e.length,this.s=this.toCharArray(e),this.substring_i=t,this.result=n,this.method=i},SnowballProgram:function(){var e;return{bra:0,ket:0,limit:0,cursor:0,limit_backward:0,setCurrent:function(t){e=t,this.cursor=0,this.limit=t.length,this.limit_backward=0,this.bra=this.cursor,this.ket=this.limit},getCurrent:function(){var t=e;return e=null,t},in_grouping:function(t,n,i){if(this.cursor<this.limit){var r=e.charCodeAt(this.cursor);if(r<=i&&r>=n&&t[(r-=n)>>3]&1<<(7&r))return this.cursor++,!0}return!1},in_grouping_b:function(t,n,i){if(this.cursor>this.limit_backward){var r=e.charCodeAt(this.cursor-1);if(r<=i&&r>=n&&t[(r-=n)>>3]&1<<(7&r))return this.cursor--,!0}return!1},out_grouping:function(t,n,i){if(this.cursor<this.limit){var r=e.charCodeAt(this.cursor);if(r>i||r<n)return this.cursor++,!0;if(!(t[(r-=n)>>3]&1<<(7&r)))return this.cursor++,!0}return!1},out_grouping_b:function(t,n,i){if(this.cursor>this.limit_backward){var r=e.charCodeAt(this.cursor-1);if(r>i||r<n)return this.cursor--,!0;if(!(t[(r-=n)>>3]&1<<(7&r)))return this.cursor--,!0}return!1},eq_s:function(t,n){if(this.limit-this.cursor<t)return!1;for(var i=0;i<t;i++)if(e.charCodeAt(this.cursor+i)!=n.charCodeAt(i))return!1;return this.cursor+=t,!0},eq_s_b:function(t,n){if(this.cursor-this.limit_backward<t)return!1;for(var i=0;i<t;i++)if(e.charCodeAt(this.cursor-t+i)!=n.charCodeAt(i))return!1;return this.cursor-=t,!0},find_among:function(t,n){for(var i=0,r=n,s=this.cursor,o=this.limit,a=0,u=0,c=!1;;){for(var l=i+(r-i>>1),h=0,f=a<u?a:u,p=t[l],d=f;d<p.s_size;d++){if(s+f==o){h=-1;break}if(h=e.charCodeAt(s+f)-p.s[d])break;f++}if(h<0?(r=l,u=f):(i=l,a=f),r-i<=1){if(i>0||r==i||c)break;c=!0}}for(;;){if(a>=(p=t[i]).s_size){if(this.cursor=s+p.s_size,!p.method)return p.result;var m=p.method();if(this.cursor=s+p.s_size,m)return p.result}if((i=p.substring_i)<0)return 0}},find_among_b:function(t,n){for(var i=0,r=n,s=this.cursor,o=this.limit_backward,a=0,u=0,c=!1;;){for(var l=i+(r-i>>1),h=0,f=a<u?a:u,p=(d=t[l]).s_size-1-f;p>=0;p--){if(s-f==o){h=-1;break}if(h=e.charCodeAt(s-1-f)-d.s[p])break;f++}if(h<0?(r=l,u=f):(i=l,a=f),r-i<=1){if(i>0||r==i||c)break;c=!0}}for(;;){var d;if(a>=(d=t[i]).s_size){if(this.cursor=s-d.s_size,!d.method)return d.result;var m=d.method();if(this.cursor=s-d.s_size,m)return d.result}if((i=d.substring_i)<0)return 0}},replace_s:function(t,n,i){var r=i.length-(n-t),s=e.substring(0,t),o=e.substring(n);return e=s+i+o,this.limit+=r,this.cursor>=n?this.cursor+=r:this.cursor>t&&(this.cursor=t),r},slice_check:function(){if(this.bra<0||this.bra>this.ket||this.ket>this.limit||this.limit>e.length)throw"faulty slice operation"},slice_from:function(e){this.slice_check(),this.replace_s(this.bra,this.ket,e)},slice_del:function(){this.slice_from("")},insert:function(e,t,n){var i=this.replace_s(e,t,n);e<=this.bra&&(this.bra+=i),e<=this.ket&&(this.ket+=i)},slice_to:function(){return this.slice_check(),e.substring(this.bra,this.ket)},eq_v_b:function(e){return this.eq_s_b(e.length,e)}}}},e.trimmerSupport={generateTrimmer:function(e){var t=new RegExp("^[^"+e+"]+"),n=new RegExp("[^"+e+"]+$");return function(e){return"function"==typeof e.update?e.update((function(e){return e.replace(t,"").replace(n,"")})):e.replace(t,"").replace(n,"")}}}}})?i.call(t,n,t,e):i)||(e.exports=r)},292:function(e,t,n){var i,r;void 0===(r="function"==typeof(i=function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var t,n,i;e.de=function(){this.pipeline.reset(),this.pipeline.add(e.de.trimmer,e.de.stopWordFilter,e.de.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.de.stemmer))},e.de.wordCharacters="A-Za-z\xaa\xba\xc0-\xd6\xd8-\xf6\xf8-\u02b8\u02e0-\u02e4\u1d00-\u1d25\u1d2c-\u1d5c\u1d62-\u1d65\u1d6b-\u1d77\u1d79-\u1dbe\u1e00-\u1eff\u2071\u207f\u2090-\u209c\u212a\u212b\u2132\u214e\u2160-\u2188\u2c60-\u2c7f\ua722-\ua787\ua78b-\ua7ad\ua7b0-\ua7b7\ua7f7-\ua7ff\uab30-\uab5a\uab5c-\uab64\ufb00-\ufb06\uff21-\uff3a\uff41-\uff5a",e.de.trimmer=e.trimmerSupport.generateTrimmer(e.de.wordCharacters),e.Pipeline.registerFunction(e.de.trimmer,"trimmer-de"),e.de.stemmer=(t=e.stemmerSupport.Among,n=e.stemmerSupport.SnowballProgram,i=new function(){var e,i,r,s=[new t("",-1,6),new t("U",0,2),new t("Y",0,1),new t("\xe4",0,3),new t("\xf6",0,4),new t("\xfc",0,5)],o=[new t("e",-1,2),new t("em",-1,1),new t("en",-1,2),new t("ern",-1,1),new t("er",-1,1),new t("s",-1,3),new t("es",5,2)],a=[new t("en",-1,1),new t("er",-1,1),new t("st",-1,2),new t("est",2,1)],u=[new t("ig",-1,1),new t("lich",-1,1)],c=[new t("end",-1,1),new t("ig",-1,2),new t("ung",-1,1),new t("lich",-1,3),new t("isch",-1,2),new t("ik",-1,2),new t("heit",-1,3),new t("keit",-1,4)],l=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,8,0,32,8],h=[117,30,5],f=[117,30,4],p=new n;function d(e,t,n){return!(!p.eq_s(1,e)||(p.ket=p.cursor,!p.in_grouping(l,97,252))||(p.slice_from(t),p.cursor=n,0))}function m(){for(var e,t,n,i,r=p.cursor;;)if(e=p.cursor,p.bra=e,p.eq_s(1,"\xdf"))p.ket=p.cursor,p.slice_from("ss");else{if(e>=p.limit)break;p.cursor=e+1}for(p.cursor=r;;)for(t=p.cursor;;){if(n=p.cursor,p.in_grouping(l,97,252)){if(i=p.cursor,p.bra=i,d("u","U",n))break;if(p.cursor=i,d("y","Y",n))break}if(n>=p.limit)return void(p.cursor=t);p.cursor=n+1}}function g(){for(;!p.in_grouping(l,97,252);){if(p.cursor>=p.limit)return!0;p.cursor++}for(;!p.out_grouping(l,97,252);){if(p.cursor>=p.limit)return!0;p.cursor++}return!1}function y(){r=p.limit,i=r;var t=p.cursor+3;0<=t&&t<=p.limit&&(e=t,g()||((r=p.cursor)<e&&(r=e),g()||(i=p.cursor)))}function v(){for(var e,t;;){if(t=p.cursor,p.bra=t,!(e=p.find_among(s,6)))return;switch(p.ket=p.cursor,e){case 1:p.slice_from("y");break;case 2:case 5:p.slice_from("u");break;case 3:p.slice_from("a");break;case 4:p.slice_from("o");break;case 6:if(p.cursor>=p.limit)return;p.cursor++}}}function w(){return r<=p.cursor}function b(){return i<=p.cursor}function x(){var e,t,n,i,r=p.limit-p.cursor;if(p.ket=p.cursor,(e=p.find_among_b(o,7))&&(p.bra=p.cursor,w()))switch(e){case 1:p.slice_del();break;case 2:p.slice_del(),p.ket=p.cursor,p.eq_s_b(1,"s")&&(p.bra=p.cursor,p.eq_s_b(3,"nis")&&p.slice_del());break;case 3:p.in_grouping_b(h,98,116)&&p.slice_del()}if(p.cursor=p.limit-r,p.ket=p.cursor,(e=p.find_among_b(a,4))&&(p.bra=p.cursor,w()))switch(e){case 1:p.slice_del();break;case 2:if(p.in_grouping_b(f,98,116)){var s=p.cursor-3;p.limit_backward<=s&&s<=p.limit&&(p.cursor=s,p.slice_del())}}if(p.cursor=p.limit-r,p.ket=p.cursor,(e=p.find_among_b(c,8))&&(p.bra=p.cursor,b()))switch(e){case 1:p.slice_del(),p.ket=p.cursor,p.eq_s_b(2,"ig")&&(p.bra=p.cursor,t=p.limit-p.cursor,p.eq_s_b(1,"e")||(p.cursor=p.limit-t,b()&&p.slice_del()));break;case 2:n=p.limit-p.cursor,p.eq_s_b(1,"e")||(p.cursor=p.limit-n,p.slice_del());break;case 3:if(p.slice_del(),p.ket=p.cursor,i=p.limit-p.cursor,!p.eq_s_b(2,"er")&&(p.cursor=p.limit-i,!p.eq_s_b(2,"en")))break;p.bra=p.cursor,w()&&p.slice_del();break;case 4:p.slice_del(),p.ket=p.cursor,(e=p.find_among_b(u,2))&&(p.bra=p.cursor,b()&&1==e&&p.slice_del())}}this.setCurrent=function(e){p.setCurrent(e)},this.getCurrent=function(){return p.getCurrent()},this.stem=function(){var e=p.cursor;return m(),p.cursor=e,y(),p.limit_backward=e,p.cursor=p.limit,x(),p.cursor=p.limit_backward,v(),!0}},function(e){return"function"==typeof e.update?e.update((function(e){return i.setCurrent(e),i.stem(),i.getCurrent()})):(i.setCurrent(e),i.stem(),i.getCurrent())}),e.Pipeline.registerFunction(e.de.stemmer,"stemmer-de"),e.de.stopWordFilter=e.generateStopWordFilter("aber alle allem allen aller alles als also am an ander andere anderem anderen anderer anderes anderm andern anderr anders auch auf aus bei bin bis bist da damit dann das dasselbe dazu da\xdf dein deine deinem deinen deiner deines dem demselben den denn denselben der derer derselbe derselben des desselben dessen dich die dies diese dieselbe dieselben diesem diesen dieser dieses dir doch dort du durch ein eine einem einen einer eines einig einige einigem einigen einiger einiges einmal er es etwas euch euer eure eurem euren eurer eures f\xfcr gegen gewesen hab habe haben hat hatte hatten hier hin hinter ich ihm ihn ihnen ihr ihre ihrem ihren ihrer ihres im in indem ins ist jede jedem jeden jeder jedes jene jenem jenen jener jenes jetzt kann kein keine keinem keinen keiner keines k\xf6nnen k\xf6nnte machen man manche manchem manchen mancher manches mein meine meinem meinen meiner meines mich mir mit muss musste nach nicht nichts noch nun nur ob oder ohne sehr sein seine seinem seinen seiner seines selbst sich sie sind so solche solchem solchen solcher solches soll sollte sondern sonst um und uns unse unsem unsen unser unses unter viel vom von vor war waren warst was weg weil weiter welche welchem welchen welcher welches wenn werde werden wie wieder will wir wird wirst wo wollen wollte w\xe4hrend w\xfcrde w\xfcrden zu zum zur zwar zwischen \xfcber".split(" ")),e.Pipeline.registerFunction(e.de.stopWordFilter,"stopWordFilter-de")}})?i.call(t,n,t,e):i)||(e.exports=r)},293:function(e,t,n){var i,r;void 0===(r="function"==typeof(i=function(){return function(e){e.multiLanguage=function(){for(var t=Array.prototype.slice.call(arguments),n=t.join("-"),i="",r=[],s=[],o=0;o<t.length;++o)"en"==t[o]?(i+="\\w",r.unshift(e.stopWordFilter),r.push(e.stemmer),s.push(e.stemmer)):(i+=e[t[o]].wordCharacters,e[t[o]].stopWordFilter&&r.unshift(e[t[o]].stopWordFilter),e[t[o]].stemmer&&(r.push(e[t[o]].stemmer),s.push(e[t[o]].stemmer)));var a=e.trimmerSupport.generateTrimmer(i);return e.Pipeline.registerFunction(a,"lunr-multi-trimmer-"+n),r.unshift(a),function(){this.pipeline.reset(),this.pipeline.add.apply(this.pipeline,r),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add.apply(this.searchPipeline,s))}}}})?i.call(t,n,t,e):i)||(e.exports=r)},294:function(e,t,n){"use strict";e.exports=n(295)},295:function(e,t,n){"use strict";var i=n(239);n(202).element=i;var r=n(200);r.isArray=i.isArray,r.isFunction=i.isFunction,r.isObject=i.isPlainObject,r.bind=i.proxy,r.each=function(e,t){i.each(e,(function(e,n){return t(n,e)}))},r.map=i.map,r.mixin=i.extend,r.Event=i.Event;var s="aaAutocomplete",o=n(296),a=n(255);function u(e,t,n,u){n=r.isArray(n)?n:[].slice.call(arguments,2);var c=i(e).each((function(e,r){var c=i(r),l=new a({el:c}),h=u||new o({input:c,eventBus:l,dropdownMenuContainer:t.dropdownMenuContainer,hint:void 0===t.hint||!!t.hint,minLength:t.minLength,autoselect:t.autoselect,autoselectOnBlur:t.autoselectOnBlur,tabAutocomplete:t.tabAutocomplete,openOnFocus:t.openOnFocus,templates:t.templates,debug:t.debug,clearOnSelected:t.clearOnSelected,cssClasses:t.cssClasses,datasets:n,keyboardShortcuts:t.keyboardShortcuts,appendTo:t.appendTo,autoWidth:t.autoWidth,ariaLabel:t.ariaLabel||r.getAttribute("aria-label")});c.data(s,h)}));return c.autocomplete={},r.each(["open","close","getVal","setVal","destroy","getWrapper"],(function(e){c.autocomplete[e]=function(){var t,n=arguments;return c.each((function(r,o){var a=i(o).data(s);t=a[e].apply(a,n)})),t}})),c}u.sources=o.sources,u.escapeHighlightedString=r.escapeHighlightedString;var c="autocomplete"in window,l=window.autocomplete;u.noConflict=function(){return c?window.autocomplete=l:delete window.autocomplete,u},e.exports=u},296:function(e,t,n){"use strict";var i="aaAttrs",r=n(200),s=n(202),o=n(255),a=n(297),u=n(305),c=n(256),l=n(241);function h(e){var t,n;if((e=e||{}).input||r.error("missing input"),this.isActivated=!1,this.debug=!!e.debug,this.autoselect=!!e.autoselect,this.autoselectOnBlur=!!e.autoselectOnBlur,this.openOnFocus=!!e.openOnFocus,this.minLength=r.isNumber(e.minLength)?e.minLength:1,this.autoWidth=void 0===e.autoWidth||!!e.autoWidth,this.clearOnSelected=!!e.clearOnSelected,this.tabAutocomplete=void 0===e.tabAutocomplete||!!e.tabAutocomplete,e.hint=!!e.hint,e.hint&&e.appendTo)throw new Error("[autocomplete.js] hint and appendTo options can't be used at the same time");this.css=e.css=r.mixin({},l,e.appendTo?l.appendTo:{}),this.cssClasses=e.cssClasses=r.mixin({},l.defaultClasses,e.cssClasses||{}),this.cssClasses.prefix=e.cssClasses.formattedPrefix=r.formatPrefix(this.cssClasses.prefix,this.cssClasses.noPrefix),this.listboxId=e.listboxId=[this.cssClasses.root,"listbox",r.getUniqueId()].join("-");var a=function(e){var t,n,o,a;t=s.element(e.input),n=s.element(c.wrapper.replace("%ROOT%",e.cssClasses.root)).css(e.css.wrapper),e.appendTo||"block"!==t.css("display")||"table"!==t.parent().css("display")||n.css("display","table-cell");var u=c.dropdown.replace("%PREFIX%",e.cssClasses.prefix).replace("%DROPDOWN_MENU%",e.cssClasses.dropdownMenu);o=s.element(u).css(e.css.dropdown).attr({role:"listbox",id:e.listboxId}),e.templates&&e.templates.dropdownMenu&&o.html(r.templatify(e.templates.dropdownMenu)());(a=t.clone().css(e.css.hint).css(function(e){return{backgroundAttachment:e.css("background-attachment"),backgroundClip:e.css("background-clip"),backgroundColor:e.css("background-color"),backgroundImage:e.css("background-image"),backgroundOrigin:e.css("background-origin"),backgroundPosition:e.css("background-position"),backgroundRepeat:e.css("background-repeat"),backgroundSize:e.css("background-size")}}(t))).val("").addClass(r.className(e.cssClasses.prefix,e.cssClasses.hint,!0)).removeAttr("id name placeholder required").prop("readonly",!0).attr({"aria-hidden":"true",autocomplete:"off",spellcheck:"false",tabindex:-1}),a.removeData&&a.removeData();t.data(i,{"aria-autocomplete":t.attr("aria-autocomplete"),"aria-expanded":t.attr("aria-expanded"),"aria-owns":t.attr("aria-owns"),autocomplete:t.attr("autocomplete"),dir:t.attr("dir"),role:t.attr("role"),spellcheck:t.attr("spellcheck"),style:t.attr("style"),type:t.attr("type")}),t.addClass(r.className(e.cssClasses.prefix,e.cssClasses.input,!0)).attr({autocomplete:"off",spellcheck:!1,role:"combobox","aria-autocomplete":e.datasets&&e.datasets[0]&&e.datasets[0].displayKey?"both":"list","aria-expanded":"false","aria-label":e.ariaLabel,"aria-owns":e.listboxId}).css(e.hint?e.css.input:e.css.inputWithNoHint);try{t.attr("dir")||t.attr("dir","auto")}catch(l){}return(n=e.appendTo?n.appendTo(s.element(e.appendTo).eq(0)).eq(0):t.wrap(n).parent()).prepend(e.hint?a:null).append(o),{wrapper:n,input:t,hint:a,menu:o}}(e);this.$node=a.wrapper;var u=this.$input=a.input;t=a.menu,n=a.hint,e.dropdownMenuContainer&&s.element(e.dropdownMenuContainer).css("position","relative").append(t.css("top","0")),u.on("blur.aa",(function(e){var n=document.activeElement;r.isMsie()&&(t[0]===n||t[0].contains(n))&&(e.preventDefault(),e.stopImmediatePropagation(),r.defer((function(){u.focus()})))})),t.on("mousedown.aa",(function(e){e.preventDefault()})),this.eventBus=e.eventBus||new o({el:u}),this.dropdown=new h.Dropdown({appendTo:e.appendTo,wrapper:this.$node,menu:t,datasets:e.datasets,templates:e.templates,cssClasses:e.cssClasses,minLength:this.minLength}).onSync("suggestionClicked",this._onSuggestionClicked,this).onSync("cursorMoved",this._onCursorMoved,this).onSync("cursorRemoved",this._onCursorRemoved,this).onSync("opened",this._onOpened,this).onSync("closed",this._onClosed,this).onSync("shown",this._onShown,this).onSync("empty",this._onEmpty,this).onSync("redrawn",this._onRedrawn,this).onAsync("datasetRendered",this._onDatasetRendered,this),this.input=new h.Input({input:u,hint:n}).onSync("focused",this._onFocused,this).onSync("blurred",this._onBlurred,this).onSync("enterKeyed",this._onEnterKeyed,this).onSync("tabKeyed",this._onTabKeyed,this).onSync("escKeyed",this._onEscKeyed,this).onSync("upKeyed",this._onUpKeyed,this).onSync("downKeyed",this._onDownKeyed,this).onSync("leftKeyed",this._onLeftKeyed,this).onSync("rightKeyed",this._onRightKeyed,this).onSync("queryChanged",this._onQueryChanged,this).onSync("whitespaceChanged",this._onWhitespaceChanged,this),this._bindKeyboardShortcuts(e),this._setLanguageDirection()}r.mixin(h.prototype,{_bindKeyboardShortcuts:function(e){if(e.keyboardShortcuts){var t=this.$input,n=[];r.each(e.keyboardShortcuts,(function(e){"string"==typeof e&&(e=e.toUpperCase().charCodeAt(0)),n.push(e)})),s.element(document).keydown((function(e){var i=e.target||e.srcElement,r=i.tagName;if(!i.isContentEditable&&"INPUT"!==r&&"SELECT"!==r&&"TEXTAREA"!==r){var s=e.which||e.keyCode;-1!==n.indexOf(s)&&(t.focus(),e.stopPropagation(),e.preventDefault())}}))}},_onSuggestionClicked:function(e,t){var n;(n=this.dropdown.getDatumForSuggestion(t))&&this._select(n,{selectionMethod:"click"})},_onCursorMoved:function(e,t){var n=this.dropdown.getDatumForCursor(),i=this.dropdown.getCurrentCursor().attr("id");this.input.setActiveDescendant(i),n&&(t&&this.input.setInputValue(n.value,!0),this.eventBus.trigger("cursorchanged",n.raw,n.datasetName))},_onCursorRemoved:function(){this.input.resetInputValue(),this._updateHint(),this.eventBus.trigger("cursorremoved")},_onDatasetRendered:function(){this._updateHint(),this.eventBus.trigger("updated")},_onOpened:function(){this._updateHint(),this.input.expand(),this.eventBus.trigger("opened")},_onEmpty:function(){this.eventBus.trigger("empty")},_onRedrawn:function(){this.$node.css("top","0px"),this.$node.css("left","0px");var e=this.$input[0].getBoundingClientRect();this.autoWidth&&this.$node.css("width",e.width+"px");var t=this.$node[0].getBoundingClientRect(),n=e.bottom-t.top;this.$node.css("top",n+"px");var i=e.left-t.left;this.$node.css("left",i+"px"),this.eventBus.trigger("redrawn")},_onShown:function(){this.eventBus.trigger("shown"),this.autoselect&&this.dropdown.cursorTopSuggestion()},_onClosed:function(){this.input.clearHint(),this.input.removeActiveDescendant(),this.input.collapse(),this.eventBus.trigger("closed")},_onFocused:function(){if(this.isActivated=!0,this.openOnFocus){var e=this.input.getQuery();e.length>=this.minLength?this.dropdown.update(e):this.dropdown.empty(),this.dropdown.open()}},_onBlurred:function(){var e,t;e=this.dropdown.getDatumForCursor(),t=this.dropdown.getDatumForTopSuggestion();var n={selectionMethod:"blur"};this.debug||(this.autoselectOnBlur&&e?this._select(e,n):this.autoselectOnBlur&&t?this._select(t,n):(this.isActivated=!1,this.dropdown.empty(),this.dropdown.close()))},_onEnterKeyed:function(e,t){var n,i;n=this.dropdown.getDatumForCursor(),i=this.dropdown.getDatumForTopSuggestion();var r={selectionMethod:"enterKey"};n?(this._select(n,r),t.preventDefault()):this.autoselect&&i&&(this._select(i,r),t.preventDefault())},_onTabKeyed:function(e,t){if(this.tabAutocomplete){var n;(n=this.dropdown.getDatumForCursor())?(this._select(n,{selectionMethod:"tabKey"}),t.preventDefault()):this._autocomplete(!0)}else this.dropdown.close()},_onEscKeyed:function(){this.dropdown.close(),this.input.resetInputValue()},_onUpKeyed:function(){var e=this.input.getQuery();this.dropdown.isEmpty&&e.length>=this.minLength?this.dropdown.update(e):this.dropdown.moveCursorUp(),this.dropdown.open()},_onDownKeyed:function(){var e=this.input.getQuery();this.dropdown.isEmpty&&e.length>=this.minLength?this.dropdown.update(e):this.dropdown.moveCursorDown(),this.dropdown.open()},_onLeftKeyed:function(){"rtl"===this.dir&&this._autocomplete()},_onRightKeyed:function(){"ltr"===this.dir&&this._autocomplete()},_onQueryChanged:function(e,t){this.input.clearHintIfInvalid(),t.length>=this.minLength?this.dropdown.update(t):this.dropdown.empty(),this.dropdown.open(),this._setLanguageDirection()},_onWhitespaceChanged:function(){this._updateHint(),this.dropdown.open()},_setLanguageDirection:function(){var e=this.input.getLanguageDirection();this.dir!==e&&(this.dir=e,this.$node.css("direction",e),this.dropdown.setLanguageDirection(e))},_updateHint:function(){var e,t,n,i,s;(e=this.dropdown.getDatumForTopSuggestion())&&this.dropdown.isVisible()&&!this.input.hasOverflow()?(t=this.input.getInputValue(),n=a.normalizeQuery(t),i=r.escapeRegExChars(n),(s=new RegExp("^(?:"+i+")(.+$)","i").exec(e.value))?this.input.setHint(t+s[1]):this.input.clearHint()):this.input.clearHint()},_autocomplete:function(e){var t,n,i,r;t=this.input.getHint(),n=this.input.getQuery(),i=e||this.input.isCursorAtEnd(),t&&n!==t&&i&&((r=this.dropdown.getDatumForTopSuggestion())&&this.input.setInputValue(r.value),this.eventBus.trigger("autocompleted",r.raw,r.datasetName))},_select:function(e,t){void 0!==e.value&&this.input.setQuery(e.value),this.clearOnSelected?this.setVal(""):this.input.setInputValue(e.value,!0),this._setLanguageDirection(),!1===this.eventBus.trigger("selected",e.raw,e.datasetName,t).isDefaultPrevented()&&(this.dropdown.close(),r.defer(r.bind(this.dropdown.empty,this.dropdown)))},open:function(){if(!this.isActivated){var e=this.input.getInputValue();e.length>=this.minLength?this.dropdown.update(e):this.dropdown.empty()}this.dropdown.open()},close:function(){this.dropdown.close()},setVal:function(e){e=r.toStr(e),this.isActivated?this.input.setInputValue(e):(this.input.setQuery(e),this.input.setInputValue(e,!0)),this._setLanguageDirection()},getVal:function(){return this.input.getQuery()},destroy:function(){this.input.destroy(),this.dropdown.destroy(),function(e,t){var n=e.find(r.className(t.prefix,t.input));r.each(n.data(i),(function(e,t){void 0===e?n.removeAttr(t):n.attr(t,e)})),n.detach().removeClass(r.className(t.prefix,t.input,!0)).insertAfter(e),n.removeData&&n.removeData(i);e.remove()}(this.$node,this.cssClasses),this.$node=null},getWrapper:function(){return this.dropdown.$container[0]}}),h.Dropdown=u,h.Input=a,h.sources=n(307),e.exports=h},297:function(e,t,n){"use strict";var i;i={9:"tab",27:"esc",37:"left",39:"right",13:"enter",38:"up",40:"down"};var r=n(200),s=n(202),o=n(240);function a(e){var t,n,o,a,u,c=this;(e=e||{}).input||r.error("input is missing"),t=r.bind(this._onBlur,this),n=r.bind(this._onFocus,this),o=r.bind(this._onKeydown,this),a=r.bind(this._onInput,this),this.$hint=s.element(e.hint),this.$input=s.element(e.input).on("blur.aa",t).on("focus.aa",n).on("keydown.aa",o),0===this.$hint.length&&(this.setHint=this.getHint=this.clearHint=this.clearHintIfInvalid=r.noop),r.isMsie()?this.$input.on("keydown.aa keypress.aa cut.aa paste.aa",(function(e){i[e.which||e.keyCode]||r.defer(r.bind(c._onInput,c,e))})):this.$input.on("input.aa",a),this.query=this.$input.val(),this.$overflowHelper=(u=this.$input,s.element('<pre aria-hidden="true"></pre>').css({position:"absolute",visibility:"hidden",whiteSpace:"pre",fontFamily:u.css("font-family"),fontSize:u.css("font-size"),fontStyle:u.css("font-style"),fontVariant:u.css("font-variant"),fontWeight:u.css("font-weight"),wordSpacing:u.css("word-spacing"),letterSpacing:u.css("letter-spacing"),textIndent:u.css("text-indent"),textRendering:u.css("text-rendering"),textTransform:u.css("text-transform")}).insertAfter(u))}function u(e){return e.altKey||e.ctrlKey||e.metaKey||e.shiftKey}a.normalizeQuery=function(e){return(e||"").replace(/^\s*/g,"").replace(/\s{2,}/g," ")},r.mixin(a.prototype,o,{_onBlur:function(){this.resetInputValue(),this.$input.removeAttr("aria-activedescendant"),this.trigger("blurred")},_onFocus:function(){this.trigger("focused")},_onKeydown:function(e){var t=i[e.which||e.keyCode];this._managePreventDefault(t,e),t&&this._shouldTrigger(t,e)&&this.trigger(t+"Keyed",e)},_onInput:function(){this._checkInputValue()},_managePreventDefault:function(e,t){var n,i,r;switch(e){case"tab":i=this.getHint(),r=this.getInputValue(),n=i&&i!==r&&!u(t);break;case"up":case"down":n=!u(t);break;default:n=!1}n&&t.preventDefault()},_shouldTrigger:function(e,t){var n;switch(e){case"tab":n=!u(t);break;default:n=!0}return n},_checkInputValue:function(){var e,t,n,i,r;e=this.getInputValue(),i=e,r=this.query,n=!(!(t=a.normalizeQuery(i)===a.normalizeQuery(r))||!this.query)&&this.query.length!==e.length,this.query=e,t?n&&this.trigger("whitespaceChanged",this.query):this.trigger("queryChanged",this.query)},focus:function(){this.$input.focus()},blur:function(){this.$input.blur()},getQuery:function(){return this.query},setQuery:function(e){this.query=e},getInputValue:function(){return this.$input.val()},setInputValue:function(e,t){void 0===e&&(e=this.query),this.$input.val(e),t?this.clearHint():this._checkInputValue()},expand:function(){this.$input.attr("aria-expanded","true")},collapse:function(){this.$input.attr("aria-expanded","false")},setActiveDescendant:function(e){this.$input.attr("aria-activedescendant",e)},removeActiveDescendant:function(){this.$input.removeAttr("aria-activedescendant")},resetInputValue:function(){this.setInputValue(this.query,!0)},getHint:function(){return this.$hint.val()},setHint:function(e){this.$hint.val(e)},clearHint:function(){this.setHint("")},clearHintIfInvalid:function(){var e,t,n;n=(e=this.getInputValue())!==(t=this.getHint())&&0===t.indexOf(e),""!==e&&n&&!this.hasOverflow()||this.clearHint()},getLanguageDirection:function(){return(this.$input.css("direction")||"ltr").toLowerCase()},hasOverflow:function(){var e=this.$input.width()-2;return this.$overflowHelper.text(this.getInputValue()),this.$overflowHelper.width()>=e},isCursorAtEnd:function(){var e,t,n;return e=this.$input.val().length,t=this.$input[0].selectionStart,r.isNumber(t)?t===e:!document.selection||((n=document.selection.createRange()).moveStart("character",-e),e===n.text.length)},destroy:function(){this.$hint.off(".aa"),this.$input.off(".aa"),this.$hint=this.$input=this.$overflowHelper=null}}),e.exports=a},298:function(e,t,n){"use strict";var i,r,s,o=[n(299),n(300),n(301),n(302),n(303),n(304)],a=-1,u=[],c=!1;function l(){i&&r&&(i=!1,r.length?u=r.concat(u):a=-1,u.length&&h())}function h(){if(!i){c=!1,i=!0;for(var e=u.length,t=setTimeout(l);e;){for(r=u,u=[];r&&++a<e;)r[a].run();a=-1,e=u.length}r=null,a=-1,i=!1,clearTimeout(t)}}for(var f=-1,p=o.length;++f<p;)if(o[f]&&o[f].test&&o[f].test()){s=o[f].install(h);break}function d(e,t){this.fun=e,this.array=t}d.prototype.run=function(){var e=this.fun,t=this.array;switch(t.length){case 0:return e();case 1:return e(t[0]);case 2:return e(t[0],t[1]);case 3:return e(t[0],t[1],t[2]);default:return e.apply(null,t)}},e.exports=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];u.push(new d(e,t)),c||i||(c=!0,s())}},300:function(e,t,n){"use strict";(function(e){t.test=function(){return"function"==typeof e.queueMicrotask},t.install=function(t){return function(){e.queueMicrotask(t)}}}).call(this,n(24))},301:function(e,t,n){"use strict";(function(e){var n=e.MutationObserver||e.WebKitMutationObserver;t.test=function(){return n},t.install=function(t){var i=0,r=new n(t),s=e.document.createTextNode("");return r.observe(s,{characterData:!0}),function(){s.data=i=++i%2}}}).call(this,n(24))},302:function(e,t,n){"use strict";(function(e){t.test=function(){return!e.setImmediate&&void 0!==e.MessageChannel},t.install=function(t){var n=new e.MessageChannel;return n.port1.onmessage=t,function(){n.port2.postMessage(0)}}}).call(this,n(24))},303:function(e,t,n){"use strict";(function(e){t.test=function(){return"document"in e&&"onreadystatechange"in e.document.createElement("script")},t.install=function(t){return function(){var n=e.document.createElement("script");return n.onreadystatechange=function(){t(),n.onreadystatechange=null,n.parentNode.removeChild(n),n=null},e.document.documentElement.appendChild(n),t}}}).call(this,n(24))},304:function(e,t,n){"use strict";t.test=function(){return!0},t.install=function(e){return function(){setTimeout(e,0)}}},305:function(e,t,n){"use strict";var i=n(200),r=n(202),s=n(240),o=n(306),a=n(241);function u(e){var t,n,s,o=this;(e=e||{}).menu||i.error("menu is required"),i.isArray(e.datasets)||i.isObject(e.datasets)||i.error("1 or more datasets required"),e.datasets||i.error("datasets is required"),this.isOpen=!1,this.isEmpty=!0,this.minLength=e.minLength||0,this.templates={},this.appendTo=e.appendTo||!1,this.css=i.mixin({},a,e.appendTo?a.appendTo:{}),this.cssClasses=e.cssClasses=i.mixin({},a.defaultClasses,e.cssClasses||{}),this.cssClasses.prefix=e.cssClasses.formattedPrefix||i.formatPrefix(this.cssClasses.prefix,this.cssClasses.noPrefix),t=i.bind(this._onSuggestionClick,this),n=i.bind(this._onSuggestionMouseEnter,this),s=i.bind(this._onSuggestionMouseLeave,this);var c=i.className(this.cssClasses.prefix,this.cssClasses.suggestion);this.$menu=r.element(e.menu).on("mouseenter.aa",c,n).on("mouseleave.aa",c,s).on("click.aa",c,t),this.$container=e.appendTo?e.wrapper:this.$menu,e.templates&&e.templates.header&&(this.templates.header=i.templatify(e.templates.header),this.$menu.prepend(this.templates.header())),e.templates&&e.templates.empty&&(this.templates.empty=i.templatify(e.templates.empty),this.$empty=r.element('<div class="'+i.className(this.cssClasses.prefix,this.cssClasses.empty,!0)+'"></div>'),this.$menu.append(this.$empty),this.$empty.hide()),this.datasets=i.map(e.datasets,(function(t){return function(e,t,n){return new u.Dataset(i.mixin({$menu:e,cssClasses:n},t))}(o.$menu,t,e.cssClasses)})),i.each(this.datasets,(function(e){var t=e.getRoot();t&&0===t.parent().length&&o.$menu.append(t),e.onSync("rendered",o._onRendered,o)})),e.templates&&e.templates.footer&&(this.templates.footer=i.templatify(e.templates.footer),this.$menu.append(this.templates.footer()));var l=this;r.element(window).resize((function(){l._redraw()}))}i.mixin(u.prototype,s,{_onSuggestionClick:function(e){this.trigger("suggestionClicked",r.element(e.currentTarget))},_onSuggestionMouseEnter:function(e){var t=r.element(e.currentTarget);if(!t.hasClass(i.className(this.cssClasses.prefix,this.cssClasses.cursor,!0))){this._removeCursor();var n=this;setTimeout((function(){n._setCursor(t,!1)}),0)}},_onSuggestionMouseLeave:function(e){if(e.relatedTarget&&r.element(e.relatedTarget).closest("."+i.className(this.cssClasses.prefix,this.cssClasses.cursor,!0)).length>0)return;this._removeCursor(),this.trigger("cursorRemoved")},_onRendered:function(e,t){if(this.isEmpty=i.every(this.datasets,(function(e){return e.isEmpty()})),this.isEmpty)if(t.length>=this.minLength&&this.trigger("empty"),this.$empty)if(t.length<this.minLength)this._hide();else{var n=this.templates.empty({query:this.datasets[0]&&this.datasets[0].query});this.$empty.html(n),this.$empty.show(),this._show()}else i.any(this.datasets,(function(e){return e.templates&&e.templates.empty}))?t.length<this.minLength?this._hide():this._show():this._hide();else this.isOpen&&(this.$empty&&(this.$empty.empty(),this.$empty.hide()),t.length>=this.minLength?this._show():this._hide());this.trigger("datasetRendered")},_hide:function(){this.$container.hide()},_show:function(){this.$container.css("display","block"),this._redraw(),this.trigger("shown")},_redraw:function(){this.isOpen&&this.appendTo&&this.trigger("redrawn")},_getSuggestions:function(){return this.$menu.find(i.className(this.cssClasses.prefix,this.cssClasses.suggestion))},_getCursor:function(){return this.$menu.find(i.className(this.cssClasses.prefix,this.cssClasses.cursor)).first()},_setCursor:function(e,t){e.first().addClass(i.className(this.cssClasses.prefix,this.cssClasses.cursor,!0)).attr("aria-selected","true"),this.trigger("cursorMoved",t)},_removeCursor:function(){this._getCursor().removeClass(i.className(this.cssClasses.prefix,this.cssClasses.cursor,!0)).removeAttr("aria-selected")},_moveCursor:function(e){var t,n,i,r;this.isOpen&&(n=this._getCursor(),t=this._getSuggestions(),this._removeCursor(),-1!==(i=((i=t.index(n)+e)+1)%(t.length+1)-1)?(i<-1&&(i=t.length-1),this._setCursor(r=t.eq(i),!0),this._ensureVisible(r)):this.trigger("cursorRemoved"))},_ensureVisible:function(e){var t,n,i,r;n=(t=e.position().top)+e.height()+parseInt(e.css("margin-top"),10)+parseInt(e.css("margin-bottom"),10),i=this.$menu.scrollTop(),r=this.$menu.height()+parseInt(this.$menu.css("padding-top"),10)+parseInt(this.$menu.css("padding-bottom"),10),t<0?this.$menu.scrollTop(i+t):r<n&&this.$menu.scrollTop(i+(n-r))},close:function(){this.isOpen&&(this.isOpen=!1,this._removeCursor(),this._hide(),this.trigger("closed"))},open:function(){this.isOpen||(this.isOpen=!0,this.isEmpty||this._show(),this.trigger("opened"))},setLanguageDirection:function(e){this.$menu.css("ltr"===e?this.css.ltr:this.css.rtl)},moveCursorUp:function(){this._moveCursor(-1)},moveCursorDown:function(){this._moveCursor(1)},getDatumForSuggestion:function(e){var t=null;return e.length&&(t={raw:o.extractDatum(e),value:o.extractValue(e),datasetName:o.extractDatasetName(e)}),t},getCurrentCursor:function(){return this._getCursor().first()},getDatumForCursor:function(){return this.getDatumForSuggestion(this._getCursor().first())},getDatumForTopSuggestion:function(){return this.getDatumForSuggestion(this._getSuggestions().first())},cursorTopSuggestion:function(){this._setCursor(this._getSuggestions().first(),!1)},update:function(e){i.each(this.datasets,(function(t){t.update(e)}))},empty:function(){i.each(this.datasets,(function(e){e.clear()})),this.isEmpty=!0},isVisible:function(){return this.isOpen&&!this.isEmpty},destroy:function(){this.$menu.off(".aa"),this.$menu=null,i.each(this.datasets,(function(e){e.destroy()}))}}),u.Dataset=o,e.exports=u},306:function(e,t,n){"use strict";var i="aaDataset",r="aaValue",s="aaDatum",o=n(200),a=n(202),u=n(256),c=n(241),l=n(240);function h(e){var t;(e=e||{}).templates=e.templates||{},e.source||o.error("missing source"),e.name&&(t=e.name,!/^[_a-zA-Z0-9-]+$/.test(t))&&o.error("invalid dataset name: "+e.name),this.query=null,this._isEmpty=!0,this.highlight=!!e.highlight,this.name=void 0===e.name||null===e.name?o.getUniqueId():e.name,this.source=e.source,this.displayFn=function(e){return e=e||"value",o.isFunction(e)?e:t;function t(t){return t[e]}}(e.display||e.displayKey),this.debounce=e.debounce,this.cache=!1!==e.cache,this.templates=function(e,t){return{empty:e.empty&&o.templatify(e.empty),header:e.header&&o.templatify(e.header),footer:e.footer&&o.templatify(e.footer),suggestion:e.suggestion||n};function n(e){return"<p>"+t(e)+"</p>"}}(e.templates,this.displayFn),this.css=o.mixin({},c,e.appendTo?c.appendTo:{}),this.cssClasses=e.cssClasses=o.mixin({},c.defaultClasses,e.cssClasses||{}),this.cssClasses.prefix=e.cssClasses.formattedPrefix||o.formatPrefix(this.cssClasses.prefix,this.cssClasses.noPrefix);var n=o.className(this.cssClasses.prefix,this.cssClasses.dataset);this.$el=e.$menu&&e.$menu.find(n+"-"+this.name).length>0?a.element(e.$menu.find(n+"-"+this.name)[0]):a.element(u.dataset.replace("%CLASS%",this.name).replace("%PREFIX%",this.cssClasses.prefix).replace("%DATASET%",this.cssClasses.dataset)),this.$menu=e.$menu,this.clearCachedSuggestions()}h.extractDatasetName=function(e){return a.element(e).data(i)},h.extractValue=function(e){return a.element(e).data(r)},h.extractDatum=function(e){var t=a.element(e).data(s);return"string"==typeof t&&(t=JSON.parse(t)),t},o.mixin(h.prototype,l,{_render:function(e,t){if(this.$el){var n,c=this,l=[].slice.call(arguments,2);if(this.$el.empty(),n=t&&t.length,this._isEmpty=!n,!n&&this.templates.empty)this.$el.html(h.apply(this,l)).prepend(c.templates.header?p.apply(this,l):null).append(c.templates.footer?d.apply(this,l):null);else if(n)this.$el.html(f.apply(this,l)).prepend(c.templates.header?p.apply(this,l):null).append(c.templates.footer?d.apply(this,l):null);else if(t&&!Array.isArray(t))throw new TypeError("suggestions must be an array");this.$menu&&this.$menu.addClass(this.cssClasses.prefix+(n?"with":"without")+"-"+this.name).removeClass(this.cssClasses.prefix+(n?"without":"with")+"-"+this.name),this.trigger("rendered",e)}function h(){var t=[].slice.call(arguments,0);return t=[{query:e,isEmpty:!0}].concat(t),c.templates.empty.apply(this,t)}function f(){var e,n,l=[].slice.call(arguments,0),h=this,f=u.suggestions.replace("%PREFIX%",this.cssClasses.prefix).replace("%SUGGESTIONS%",this.cssClasses.suggestions);return e=a.element(f).css(this.css.suggestions),n=o.map(t,p),e.append.apply(e,n),e;function p(e){var t,n=u.suggestion.replace("%PREFIX%",h.cssClasses.prefix).replace("%SUGGESTION%",h.cssClasses.suggestion);return(t=a.element(n).attr({role:"option",id:["option",Math.floor(1e8*Math.random())].join("-")}).append(c.templates.suggestion.apply(this,[e].concat(l)))).data(i,c.name),t.data(r,c.displayFn(e)||void 0),t.data(s,JSON.stringify(e)),t.children().each((function(){a.element(this).css(h.css.suggestionChild)})),t}}function p(){var t=[].slice.call(arguments,0);return t=[{query:e,isEmpty:!n}].concat(t),c.templates.header.apply(this,t)}function d(){var t=[].slice.call(arguments,0);return t=[{query:e,isEmpty:!n}].concat(t),c.templates.footer.apply(this,t)}},getRoot:function(){return this.$el},update:function(e){function t(t){if(!this.canceled&&e===this.query){var n=[].slice.call(arguments,1);this.cacheSuggestions(e,t,n),this._render.apply(this,[e,t].concat(n))}}if(this.query=e,this.canceled=!1,this.shouldFetchFromCache(e))t.apply(this,[this.cachedSuggestions].concat(this.cachedRenderExtraArgs));else{var n=this,i=function(){n.canceled||n.source(e,t.bind(n))};if(this.debounce){clearTimeout(this.debounceTimeout),this.debounceTimeout=setTimeout((function(){n.debounceTimeout=null,i()}),this.debounce)}else i()}},cacheSuggestions:function(e,t,n){this.cachedQuery=e,this.cachedSuggestions=t,this.cachedRenderExtraArgs=n},shouldFetchFromCache:function(e){return this.cache&&this.cachedQuery===e&&this.cachedSuggestions&&this.cachedSuggestions.length},clearCachedSuggestions:function(){delete this.cachedQuery,delete this.cachedSuggestions,delete this.cachedRenderExtraArgs},cancel:function(){this.canceled=!0},clear:function(){this.$el&&(this.cancel(),this.$el.empty(),this.trigger("rendered",""))},isEmpty:function(){return this._isEmpty},destroy:function(){this.clearCachedSuggestions(),this.$el=null}}),e.exports=h},307:function(e,t,n){"use strict";e.exports={hits:n(308),popularIn:n(309)}},308:function(e,t,n){"use strict";var i=n(200),r=n(257),s=n(258);e.exports=function(e,t){var n=s(e.as._ua);return n&&n[0]>=3&&n[1]>20&&((t=t||{}).additionalUA="autocomplete.js "+r),function(n,r){e.search(n,t,(function(e,t){e?i.error(e.message):r(t.hits,t)}))}}},309:function(e,t,n){"use strict";var i=n(200),r=n(257),s=n(258);e.exports=function(e,t,n,o){var a=s(e.as._ua);if(a&&a[0]>=3&&a[1]>20&&((t=t||{}).additionalUA="autocomplete.js "+r),!n.source)return i.error("Missing 'source' key");var u=i.isFunction(n.source)?n.source:function(e){return e[n.source]};if(!n.index)return i.error("Missing 'index' key");var c=n.index;return o=o||{},function(a,l){e.search(a,t,(function(e,a){if(e)i.error(e.message);else{if(a.hits.length>0){var h=a.hits[0],f=i.mixin({hitsPerPage:0},n);delete f.source,delete f.index;var p=s(c.as._ua);return p&&p[0]>=3&&p[1]>20&&(t.additionalUA="autocomplete.js "+r),void c.search(u(h),f,(function(e,t){if(e)i.error(e.message);else{var n=[];if(o.includeAll){var r=o.allTitle||"All departments";n.push(i.mixin({facet:{value:r,count:t.nbHits}},i.cloneDeep(h)))}i.each(t.facets,(function(e,t){i.each(e,(function(e,r){n.push(i.mixin({facet:{facet:t,value:r,count:e}},i.cloneDeep(h)))}))}));for(var s=1;s<a.hits.length;++s)n.push(a.hits[s]);l(n,a)}}))}l([])}}))}}}}]);
\ No newline at end of file
diff --git a/142.94b38ee0.js.LICENSE.txt b/127.70f6757b.js.LICENSE.txt
similarity index 100%
rename from 142.94b38ee0.js.LICENSE.txt
rename to 127.70f6757b.js.LICENSE.txt
diff --git a/143.a1031c43.js b/128.10c43f42.js
similarity index 94%
rename from 143.a1031c43.js
rename to 128.10c43f42.js
index f443341..6f07a7f 100644
--- a/143.a1031c43.js
+++ b/128.10c43f42.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[143],{208:function(e,t,n){"use strict";n.r(t);var a=n(0),r=n.n(a),o=n(209),c=n(22),l=n(26),i=n(226),s=n(3),u=n(7),p=n(211),m=n(210),d=n(265),b=n(269),f=n(270),y=n(268),h=n(213),g=n(232),v=n(276),j=function(e){return r.a.createElement("svg",Object(s.a)({width:"20",height:"20",role:"img"},e),r.a.createElement("g",{fill:"#7a7a7a"},r.a.createElement("path",{d:"M9.992 10.023c0 .2-.062.399-.172.547l-4.996 7.492a.982.982 0 01-.828.454H1c-.55 0-1-.453-1-1 0-.2.059-.403.168-.551l4.629-6.942L.168 3.078A.939.939 0 010 2.528c0-.548.45-.997 1-.997h2.996c.352 0 .649.18.828.45L9.82 9.472c.11.148.172.347.172.55zm0 0"}),r.a.createElement("path",{d:"M19.98 10.023c0 .2-.058.399-.168.547l-4.996 7.492a.987.987 0 01-.828.454h-3c-.547 0-.996-.453-.996-1 0-.2.059-.403.168-.551l4.625-6.942-4.625-6.945a.939.939 0 01-.168-.55 1 1 0 01.996-.997h3c.348 0 .649.18.828.45l4.996 7.492c.11.148.168.347.168.55zm0 0"})))},O=n(271),k=n(79),E=n.n(k);var N=function e(t,n){return"link"===t.type?Object(m.isSamePath)(t.href,n):"category"===t.type&&t.items.some((function(t){return e(t,n)}))};function C(e){var t,n,o,c=e.item,l=e.onItemClick,i=e.collapsible,m=e.activePath,d=Object(u.a)(e,["item","onItemClick","collapsible","activePath"]),b=c.items,f=c.label,y=N(c,m),h=(n=y,o=Object(a.useRef)(n),Object(a.useEffect)((function(){o.current=n}),[n]),o.current),g=Object(a.useState)((function(){return!!i&&(!y&&c.collapsed)})),v=g[0],j=g[1],O=Object(a.useRef)(null),k=Object(a.useState)(void 0),C=k[0],x=k[1],w=function(e){var t;void 0===e&&(e=!0),x(e?(null===(t=O.current)||void 0===t?void 0:t.scrollHeight)+"px":void 0)};Object(a.useEffect)((function(){y&&!h&&v&&j(!1)}),[y,h,v]);var T=Object(a.useCallback)((function(e){e.preventDefault(),C||w(),setTimeout((function(){return j((function(e){return!e}))}),100)}),[C]);return 0===b.length?null:r.a.createElement("li",{className:Object(p.a)("menu__list-item",{"menu__list-item--collapsed":v}),key:f},r.a.createElement("a",Object(s.a)({className:Object(p.a)("menu__link",(t={"menu__link--sublist":i,"menu__link--active":i&&y},t[E.a.menuLinkText]=!i,t)),onClick:i?T:void 0,href:i?"#!":void 0},d),f),r.a.createElement("ul",{className:"menu__list",ref:O,style:{height:C},onTransitionEnd:function(){v||w(!1)}},b.map((function(e){return r.a.createElement(P,{tabIndex:v?"-1":"0",key:e.label,item:e,onItemClick:l,collapsible:i,activePath:m})}))))}function x(e){var t=e.item,n=e.onItemClick,a=e.activePath,o=(e.collapsible,Object(u.a)(e,["item","onItemClick","activePath","collapsible"])),c=t.href,l=t.label,i=N(t,a);return r.a.createElement("li",{className:"menu__list-item",key:l},r.a.createElement(h.a,Object(s.a)({className:Object(p.a)("menu__link",{"menu__link--active":i}),to:c},Object(g.a)(c)?{isNavLink:!0,exact:!0,onClick:n}:{target:"_blank",rel:"noreferrer noopener"},o),l))}function P(e){switch(e.item.type){case"category":return r.a.createElement(C,e);case"link":default:return r.a.createElement(x,e)}}var w=function(e){var t,n,o=e.path,c=e.sidebar,l=e.sidebarCollapsible,i=void 0===l||l,s=e.onCollapse,u=e.isHidden,h=Object(a.useState)(!1),g=h[0],k=h[1],N=Object(m.useThemeConfig)(),C=N.navbar.hideOnScroll,x=N.hideableSidebar,w=Object(d.a)().isAnnouncementBarClosed,T=Object(y.a)().scrollY;Object(b.a)(g);var S=Object(f.a)();return Object(a.useEffect)((function(){S===f.b.desktop&&k(!1)}),[S]),r.a.createElement("div",{className:Object(p.a)(E.a.sidebar,(t={},t[E.a.sidebarWithHideableNavbar]=C,t[E.a.sidebarHidden]=u,t))},C&&r.a.createElement(v.a,{tabIndex:-1,className:E.a.sidebarLogo}),r.a.createElement("div",{className:Object(p.a)("menu","menu--responsive","thin-scrollbar",E.a.menu,(n={"menu--show":g},n[E.a.menuWithAnnouncementBar]=!w&&0===T,n))},r.a.createElement("button",{"aria-label":g?"Close Menu":"Open Menu","aria-haspopup":"true",className:"button button--secondary button--sm menu__button",type:"button",onClick:function(){k(!g)}},g?r.a.createElement("span",{className:Object(p.a)(E.a.sidebarMenuIcon,E.a.sidebarMenuCloseIcon)},"\xd7"):r.a.createElement(O.a,{className:E.a.sidebarMenuIcon,height:24,width:24})),r.a.createElement("ul",{className:"menu__list"},c.map((function(e){return r.a.createElement(P,{key:e.label,item:e,onItemClick:function(e){e.target.blur(),k(!1)},collapsible:i,activePath:o})})))),x&&r.a.createElement("button",{type:"button",title:"Collapse sidebar","aria-label":"Collapse sidebar",className:Object(p.a)("button button--secondary button--outline",E.a.collapseSidebarButton),onClick:s},r.a.createElement(j,{className:E.a.collapseSidebarButtonIcon})))},T=n(259),S=n(261),_=n(212),I=n(80),D=n.n(I);function L(e){var t,n,l,s,u=e.currentDocRoute,d=e.versionMetadata,b=e.children,f=Object(c.default)(),y=f.siteConfig,h=f.isClient,g=d.pluginId,v=d.permalinkToSidebar,O=d.docsSidebars,k=d.version,E=v[u.path],N=O[E],C=Object(a.useState)(!1),x=C[0],P=C[1],S=Object(a.useState)(!1),_=S[0],I=S[1],L=Object(a.useCallback)((function(){_&&I(!1),P(!x)}),[_]);return r.a.createElement(i.a,{key:h,searchMetadatas:{version:k,tag:Object(m.docVersionSearchTag)(g,k)}},r.a.createElement("div",{className:D.a.docPage},N&&r.a.createElement("div",{className:Object(p.a)(D.a.docSidebarContainer,(t={},t[D.a.docSidebarContainerHidden]=x,t)),onTransitionEnd:function(e){e.currentTarget.classList.contains(D.a.docSidebarContainer)&&x&&I(!0)},role:"complementary"},r.a.createElement(w,{key:E,sidebar:N,path:u.path,sidebarCollapsible:null===(n=null===(l=y.themeConfig)||void 0===l?void 0:l.sidebarCollapsible)||void 0===n||n,onCollapse:L,isHidden:_}),_&&r.a.createElement("div",{className:D.a.collapsedDocSidebar,title:"Expand sidebar","aria-label":"Expand sidebar",tabIndex:0,role:"button",onKeyDown:L,onClick:L},r.a.createElement(j,null))),r.a.createElement("main",{className:D.a.docMainContainer},r.a.createElement("div",{className:Object(p.a)("container padding-vert--lg",D.a.docItemWrapper,(s={},s[D.a.docItemWrapperEnhanced]=x,s))},r.a.createElement(o.a,{components:T.a},b)))))}t.default=function(e){var t=e.route.routes,n=e.versionMetadata,a=e.location,o=t.find((function(e){return Object(_.matchPath)(a.pathname,e)}));return o?r.a.createElement(L,{currentDocRoute:o,versionMetadata:n},Object(l.a)(t)):r.a.createElement(S.default,e)}},209:function(e,t,n){"use strict";n.d(t,"a",(function(){return p})),n.d(t,"b",(function(){return b}));var a=n(0),r=n.n(a);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?c(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):c(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},o=Object.keys(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=r.a.createContext({}),u=function(e){var t=r.a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},p=function(e){var t=u(e.components);return r.a.createElement(s.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},d=r.a.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,c=e.parentName,s=i(e,["components","mdxType","originalType","parentName"]),p=u(n),d=a,b=p["".concat(c,".").concat(d)]||p[d]||m[d]||o;return n?r.a.createElement(b,l(l({ref:t},s),{},{components:n})):r.a.createElement(b,l({ref:t},s))}));function b(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,c=new Array(o);c[0]=d;var l={};for(var i in t)hasOwnProperty.call(t,i)&&(l[i]=t[i]);l.originalType=e,l.mdxType="string"==typeof e?e:a,c[1]=l;for(var s=2;s<o;s++)c[s]=n[s];return r.a.createElement.apply(null,c)}return r.a.createElement.apply(null,n)}d.displayName="MDXCreateElement"},234:function(e,t,n){"use strict";const a=(e,{target:t=document.body}={})=>{const n=document.createElement("textarea"),a=document.activeElement;n.value=e,n.setAttribute("readonly",""),n.style.contain="strict",n.style.position="absolute",n.style.left="-9999px",n.style.fontSize="12pt";const r=document.getSelection();let o=!1;r.rangeCount>0&&(o=r.getRangeAt(0)),t.append(n),n.select(),n.selectionStart=0,n.selectionEnd=e.length;let c=!1;try{c=document.execCommand("copy")}catch(l){}return n.remove(),o&&(r.removeAllRanges(),r.addRange(o)),a&&a.focus(),c};e.exports=a,e.exports.default=a},235:function(e,t){function n(e){let t,n=[];for(let a of e.split(",").map((e=>e.trim())))if(/^-?\d+$/.test(a))n.push(parseInt(a,10));else if(t=a.match(/^(-?\d+)(-|\.\.\.?|\u2025|\u2026|\u22EF)(-?\d+)$/)){let[e,a,r,o]=t;if(a&&o){a=parseInt(a),o=parseInt(o);const e=a<o?1:-1;"-"!==r&&".."!==r&&"\u2025"!==r||(o+=e);for(let t=a;t!==o;t+=e)n.push(t)}}return n}t.default=n,e.exports=n},259:function(e,t,n){"use strict";var a=n(3),r=n(0),o=n.n(r),c=n(213),l=n(211),i={plain:{backgroundColor:"#2a2734",color:"#9a86fd"},styles:[{types:["comment","prolog","doctype","cdata","punctuation"],style:{color:"#6c6783"}},{types:["namespace"],style:{opacity:.7}},{types:["tag","operator","number"],style:{color:"#e09142"}},{types:["property","function"],style:{color:"#9a86fd"}},{types:["tag-id","selector","atrule-id"],style:{color:"#eeebff"}},{types:["attr-name"],style:{color:"#c4b9fe"}},{types:["boolean","string","entity","url","attr-value","keyword","control","directive","unit","statement","regex","at-rule","placeholder","variable"],style:{color:"#ffcc99"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"#c4b9fe"}}]},s={Prism:n(23).a,theme:i};function u(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function p(){return(p=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e}).apply(this,arguments)}var m=/\r\n|\r|\n/,d=function(e){0===e.length?e.push({types:["plain"],content:"",empty:!0}):1===e.length&&""===e[0].content&&(e[0].empty=!0)},b=function(e,t){var n=e.length;return n>0&&e[n-1]===t?e:e.concat(t)},f=function(e,t){var n=e.plain,a=Object.create(null),r=e.styles.reduce((function(e,n){var a=n.languages,r=n.style;return a&&!a.includes(t)||n.types.forEach((function(t){var n=p({},e[t],r);e[t]=n})),e}),a);return r.root=n,r.plain=p({},n,{backgroundColor:null}),r};function y(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&-1===t.indexOf(a)&&(n[a]=e[a]);return n}var h=function(e){function t(){for(var t=this,n=[],a=arguments.length;a--;)n[a]=arguments[a];e.apply(this,n),u(this,"getThemeDict",(function(e){if(void 0!==t.themeDict&&e.theme===t.prevTheme&&e.language===t.prevLanguage)return t.themeDict;t.prevTheme=e.theme,t.prevLanguage=e.language;var n=e.theme?f(e.theme,e.language):void 0;return t.themeDict=n})),u(this,"getLineProps",(function(e){var n=e.key,a=e.className,r=e.style,o=p({},y(e,["key","className","style","line"]),{className:"token-line",style:void 0,key:void 0}),c=t.getThemeDict(t.props);return void 0!==c&&(o.style=c.plain),void 0!==r&&(o.style=void 0!==o.style?p({},o.style,r):r),void 0!==n&&(o.key=n),a&&(o.className+=" "+a),o})),u(this,"getStyleForToken",(function(e){var n=e.types,a=e.empty,r=n.length,o=t.getThemeDict(t.props);if(void 0!==o){if(1===r&&"plain"===n[0])return a?{display:"inline-block"}:void 0;if(1===r&&!a)return o[n[0]];var c=a?{display:"inline-block"}:{},l=n.map((function(e){return o[e]}));return Object.assign.apply(Object,[c].concat(l))}})),u(this,"getTokenProps",(function(e){var n=e.key,a=e.className,r=e.style,o=e.token,c=p({},y(e,["key","className","style","token"]),{className:"token "+o.types.join(" "),children:o.content,style:t.getStyleForToken(o),key:void 0});return void 0!==r&&(c.style=void 0!==c.style?p({},c.style,r):r),void 0!==n&&(c.key=n),a&&(c.className+=" "+a),c}))}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.render=function(){var e=this.props,t=e.Prism,n=e.language,a=e.code,r=e.children,o=this.getThemeDict(this.props),c=t.languages[n];return r({tokens:function(e){for(var t=[[]],n=[e],a=[0],r=[e.length],o=0,c=0,l=[],i=[l];c>-1;){for(;(o=a[c]++)<r[c];){var s=void 0,u=t[c],p=n[c][o];if("string"==typeof p?(u=c>0?u:["plain"],s=p):(u=b(u,p.type),p.alias&&(u=b(u,p.alias)),s=p.content),"string"==typeof s){var f=s.split(m),y=f.length;l.push({types:u,content:f[0]});for(var h=1;h<y;h++)d(l),i.push(l=[]),l.push({types:u,content:f[h]})}else c++,t.push(u),n.push(s),a.push(0),r.push(s.length)}c--,t.pop(),n.pop(),a.pop(),r.pop()}return d(l),i}(void 0!==c?t.tokenize(a,c,n):[a]),className:"prism-code language-"+n,style:void 0!==o?o.root:{},getLineProps:this.getLineProps,getTokenProps:this.getTokenProps})},t}(r.Component),g=n(234),v=n.n(g),j=n(235),O=n.n(j),k={plain:{color:"#bfc7d5",backgroundColor:"#292d3e"},styles:[{types:["comment"],style:{color:"rgb(105, 112, 152)",fontStyle:"italic"}},{types:["string","inserted"],style:{color:"rgb(195, 232, 141)"}},{types:["number"],style:{color:"rgb(247, 140, 108)"}},{types:["builtin","char","constant","function"],style:{color:"rgb(130, 170, 255)"}},{types:["punctuation","selector"],style:{color:"rgb(199, 146, 234)"}},{types:["variable"],style:{color:"rgb(191, 199, 213)"}},{types:["class-name","attr-name"],style:{color:"rgb(255, 203, 107)"}},{types:["tag","deleted"],style:{color:"rgb(255, 85, 114)"}},{types:["operator"],style:{color:"rgb(137, 221, 255)"}},{types:["boolean"],style:{color:"rgb(255, 88, 116)"}},{types:["keyword"],style:{fontStyle:"italic"}},{types:["doctype"],style:{color:"rgb(199, 146, 234)",fontStyle:"italic"}},{types:["namespace"],style:{color:"rgb(178, 204, 214)"}},{types:["url"],style:{color:"rgb(221, 221, 221)"}}]},E=n(231),N=n(210),C=function(){var e=Object(N.useThemeConfig)().prism,t=Object(E.a)().isDarkTheme,n=e.theme||k,a=e.darkTheme||n;return t?a:n},x=n(56),P=n.n(x),w=/{([\d,-]+)}/,T=function(e){void 0===e&&(e=["js","jsBlock","jsx","python","html"]);var t={js:{start:"\\/\\/",end:""},jsBlock:{start:"\\/\\*",end:"\\*\\/"},jsx:{start:"\\{\\s*\\/\\*",end:"\\*\\/\\s*\\}"},python:{start:"#",end:""},html:{start:"\x3c!--",end:"--\x3e"}},n=["highlight-next-line","highlight-start","highlight-end"].join("|"),a=e.map((function(e){return"(?:"+t[e].start+"\\s*("+n+")\\s*"+t[e].end+")"})).join("|");return new RegExp("^\\s*(?:"+a+")\\s*$")},S=/(?:title=")(.*)(?:")/,_=function(e){var t=e.children,n=e.className,c=e.metastring,i=Object(N.useThemeConfig)().prism,u=Object(r.useState)(!1),p=u[0],m=u[1],d=Object(r.useState)(!1),b=d[0],f=d[1];Object(r.useEffect)((function(){f(!0)}),[]);var y=Object(r.useRef)(null),g=[],j="",k=C(),E=Array.isArray(t)?t.join(""):t;if(c&&w.test(c)){var x=c.match(w)[1];g=O()(x).filter((function(e){return e>0}))}c&&S.test(c)&&(j=c.match(S)[1]);var _=n&&n.replace(/language-/,"");!_&&i.defaultLanguage&&(_=i.defaultLanguage);var I=E.replace(/\n$/,"");if(0===g.length&&void 0!==_){for(var D,L="",B=function(e){switch(e){case"js":case"javascript":case"ts":case"typescript":return T(["js","jsBlock"]);case"jsx":case"tsx":return T(["js","jsBlock","jsx"]);case"html":return T(["js","jsBlock","html"]);case"python":case"py":return T(["python"]);default:return T()}}(_),M=E.replace(/\n$/,"").split("\n"),R=0;R<M.length;){var A=R+1,F=M[R].match(B);if(null!==F){switch(F.slice(1).reduce((function(e,t){return e||t}),void 0)){case"highlight-next-line":L+=A+",";break;case"highlight-start":D=A;break;case"highlight-end":L+=D+"-"+(A-1)+","}M.splice(R,1)}else R+=1}g=O()(L),I=M.join("\n")}var H=function(){v()(I),m(!0),setTimeout((function(){return m(!1)}),2e3)};return o.a.createElement(h,Object(a.a)({},s,{key:String(b),theme:k,code:I,language:_}),(function(e){var t,n=e.className,r=e.style,c=e.tokens,i=e.getLineProps,s=e.getTokenProps;return o.a.createElement(o.a.Fragment,null,j&&o.a.createElement("div",{style:r,className:P.a.codeBlockTitle},j),o.a.createElement("div",{className:P.a.codeBlockContent},o.a.createElement("div",{tabIndex:0,className:Object(l.a)(n,P.a.codeBlock,"thin-scrollbar",(t={},t[P.a.codeBlockWithTitle]=j,t))},o.a.createElement("div",{className:P.a.codeBlockLines,style:r},c.map((function(e,t){1===e.length&&""===e[0].content&&(e[0].content="\n");var n=i({line:e,key:t});return g.includes(t+1)&&(n.className=n.className+" docusaurus-highlight-code-line"),o.a.createElement("div",Object(a.a)({key:t},n),e.map((function(e,t){return o.a.createElement("span",Object(a.a)({key:t},s({token:e,key:t})))})))})))),o.a.createElement("button",{ref:y,type:"button","aria-label":"Copy code to clipboard",className:Object(l.a)(P.a.copyButton),onClick:H},p?"Copied":"Copy")))}))},I=n(7),D=(n(57),n(58)),L=n.n(D),B=function(e){return function(t){var n,a=t.id,r=Object(I.a)(t,["id"]),c=Object(N.useThemeConfig)().navbar.hideOnScroll;return a?o.a.createElement(e,r,o.a.createElement("a",{"aria-hidden":"true",tabIndex:-1,className:Object(l.a)("anchor",(n={},n[L.a.enhancedAnchor]=!c,n)),id:a}),r.children,o.a.createElement("a",{className:"hash-link",href:"#"+a,title:"Direct link to heading"},"#")):o.a.createElement(e,r)}},M=n(59),R=n.n(M),A={code:function(e){var t=e.children;return"string"==typeof t?t.includes("\n")?o.a.createElement(_,e):o.a.createElement("code",e):t},a:function(e){return o.a.createElement(c.a,e)},pre:function(e){return o.a.createElement("div",Object(a.a)({className:R.a.mdxCodeBlock},e))},h1:B("h1"),h2:B("h2"),h3:B("h3"),h4:B("h4"),h5:B("h5"),h6:B("h6")};t.a=A},261:function(e,t,n){"use strict";n.r(t);var a=n(0),r=n.n(a),o=n(226);t.default=function(){return r.a.createElement(o.a,{title:"Page Not Found"},r.a.createElement("main",{className:"container margin-vert--xl"},r.a.createElement("div",{className:"row"},r.a.createElement("div",{className:"col col--6 col--offset-3"},r.a.createElement("h1",{className:"hero__title"},"Page Not Found"),r.a.createElement("p",null,"We could not find what you were looking for."),r.a.createElement("p",null,"Please contact the owner of the site that linked you to the original URL and let them know their link is broken.")))))}}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[128],{193:function(e,t,n){"use strict";n.r(t);var a=n(0),r=n.n(a),o=n(194),c=n(22),l=n(26),i=n(204),s=n(3),u=n(7),p=n(196),m=n(195),d=n(248),b=n(252),f=n(253),y=n(251),h=n(198),g=n(210),v=n(259),j=function(e){return r.a.createElement("svg",Object(s.a)({width:"20",height:"20",role:"img"},e),r.a.createElement("g",{fill:"#7a7a7a"},r.a.createElement("path",{d:"M9.992 10.023c0 .2-.062.399-.172.547l-4.996 7.492a.982.982 0 01-.828.454H1c-.55 0-1-.453-1-1 0-.2.059-.403.168-.551l4.629-6.942L.168 3.078A.939.939 0 010 2.528c0-.548.45-.997 1-.997h2.996c.352 0 .649.18.828.45L9.82 9.472c.11.148.172.347.172.55zm0 0"}),r.a.createElement("path",{d:"M19.98 10.023c0 .2-.058.399-.168.547l-4.996 7.492a.987.987 0 01-.828.454h-3c-.547 0-.996-.453-.996-1 0-.2.059-.403.168-.551l4.625-6.942-4.625-6.945a.939.939 0 01-.168-.55 1 1 0 01.996-.997h3c.348 0 .649.18.828.45l4.996 7.492c.11.148.168.347.168.55zm0 0"})))},O=n(254),k=n(79),E=n.n(k);var N=function e(t,n){return"link"===t.type?Object(m.isSamePath)(t.href,n):"category"===t.type&&t.items.some((function(t){return e(t,n)}))};function C(e){var t,n,o,c=e.item,l=e.onItemClick,i=e.collapsible,m=e.activePath,d=Object(u.a)(e,["item","onItemClick","collapsible","activePath"]),b=c.items,f=c.label,y=N(c,m),h=(n=y,o=Object(a.useRef)(n),Object(a.useEffect)((function(){o.current=n}),[n]),o.current),g=Object(a.useState)((function(){return!!i&&(!y&&c.collapsed)})),v=g[0],j=g[1],O=Object(a.useRef)(null),k=Object(a.useState)(void 0),C=k[0],x=k[1],w=function(e){var t;void 0===e&&(e=!0),x(e?(null===(t=O.current)||void 0===t?void 0:t.scrollHeight)+"px":void 0)};Object(a.useEffect)((function(){y&&!h&&v&&j(!1)}),[y,h,v]);var T=Object(a.useCallback)((function(e){e.preventDefault(),C||w(),setTimeout((function(){return j((function(e){return!e}))}),100)}),[C]);return 0===b.length?null:r.a.createElement("li",{className:Object(p.a)("menu__list-item",{"menu__list-item--collapsed":v}),key:f},r.a.createElement("a",Object(s.a)({className:Object(p.a)("menu__link",(t={"menu__link--sublist":i,"menu__link--active":i&&y},t[E.a.menuLinkText]=!i,t)),onClick:i?T:void 0,href:i?"#!":void 0},d),f),r.a.createElement("ul",{className:"menu__list",ref:O,style:{height:C},onTransitionEnd:function(){v||w(!1)}},b.map((function(e){return r.a.createElement(P,{tabIndex:v?"-1":"0",key:e.label,item:e,onItemClick:l,collapsible:i,activePath:m})}))))}function x(e){var t=e.item,n=e.onItemClick,a=e.activePath,o=(e.collapsible,Object(u.a)(e,["item","onItemClick","activePath","collapsible"])),c=t.href,l=t.label,i=N(t,a);return r.a.createElement("li",{className:"menu__list-item",key:l},r.a.createElement(h.a,Object(s.a)({className:Object(p.a)("menu__link",{"menu__link--active":i}),to:c},Object(g.a)(c)?{isNavLink:!0,exact:!0,onClick:n}:{target:"_blank",rel:"noreferrer noopener"},o),l))}function P(e){switch(e.item.type){case"category":return r.a.createElement(C,e);case"link":default:return r.a.createElement(x,e)}}var w=function(e){var t,n,o=e.path,c=e.sidebar,l=e.sidebarCollapsible,i=void 0===l||l,s=e.onCollapse,u=e.isHidden,h=Object(a.useState)(!1),g=h[0],k=h[1],N=Object(m.useThemeConfig)(),C=N.navbar.hideOnScroll,x=N.hideableSidebar,w=Object(d.a)().isAnnouncementBarClosed,T=Object(y.a)().scrollY;Object(b.a)(g);var S=Object(f.a)();return Object(a.useEffect)((function(){S===f.b.desktop&&k(!1)}),[S]),r.a.createElement("div",{className:Object(p.a)(E.a.sidebar,(t={},t[E.a.sidebarWithHideableNavbar]=C,t[E.a.sidebarHidden]=u,t))},C&&r.a.createElement(v.a,{tabIndex:-1,className:E.a.sidebarLogo}),r.a.createElement("div",{className:Object(p.a)("menu","menu--responsive","thin-scrollbar",E.a.menu,(n={"menu--show":g},n[E.a.menuWithAnnouncementBar]=!w&&0===T,n))},r.a.createElement("button",{"aria-label":g?"Close Menu":"Open Menu","aria-haspopup":"true",className:"button button--secondary button--sm menu__button",type:"button",onClick:function(){k(!g)}},g?r.a.createElement("span",{className:Object(p.a)(E.a.sidebarMenuIcon,E.a.sidebarMenuCloseIcon)},"\xd7"):r.a.createElement(O.a,{className:E.a.sidebarMenuIcon,height:24,width:24})),r.a.createElement("ul",{className:"menu__list"},c.map((function(e){return r.a.createElement(P,{key:e.label,item:e,onItemClick:function(e){e.target.blur(),k(!1)},collapsible:i,activePath:o})})))),x&&r.a.createElement("button",{type:"button",title:"Collapse sidebar","aria-label":"Collapse sidebar",className:Object(p.a)("button button--secondary button--outline",E.a.collapseSidebarButton),onClick:s},r.a.createElement(j,{className:E.a.collapseSidebarButtonIcon})))},T=n(242),S=n(244),_=n(197),I=n(80),D=n.n(I);function L(e){var t,n,l,s,u=e.currentDocRoute,d=e.versionMetadata,b=e.children,f=Object(c.default)(),y=f.siteConfig,h=f.isClient,g=d.pluginId,v=d.permalinkToSidebar,O=d.docsSidebars,k=d.version,E=v[u.path],N=O[E],C=Object(a.useState)(!1),x=C[0],P=C[1],S=Object(a.useState)(!1),_=S[0],I=S[1],L=Object(a.useCallback)((function(){_&&I(!1),P(!x)}),[_]);return r.a.createElement(i.a,{key:h,searchMetadatas:{version:k,tag:Object(m.docVersionSearchTag)(g,k)}},r.a.createElement("div",{className:D.a.docPage},N&&r.a.createElement("div",{className:Object(p.a)(D.a.docSidebarContainer,(t={},t[D.a.docSidebarContainerHidden]=x,t)),onTransitionEnd:function(e){e.currentTarget.classList.contains(D.a.docSidebarContainer)&&x&&I(!0)},role:"complementary"},r.a.createElement(w,{key:E,sidebar:N,path:u.path,sidebarCollapsible:null===(n=null===(l=y.themeConfig)||void 0===l?void 0:l.sidebarCollapsible)||void 0===n||n,onCollapse:L,isHidden:_}),_&&r.a.createElement("div",{className:D.a.collapsedDocSidebar,title:"Expand sidebar","aria-label":"Expand sidebar",tabIndex:0,role:"button",onKeyDown:L,onClick:L},r.a.createElement(j,null))),r.a.createElement("main",{className:D.a.docMainContainer},r.a.createElement("div",{className:Object(p.a)("container padding-vert--lg",D.a.docItemWrapper,(s={},s[D.a.docItemWrapperEnhanced]=x,s))},r.a.createElement(o.a,{components:T.a},b)))))}t.default=function(e){var t=e.route.routes,n=e.versionMetadata,a=e.location,o=t.find((function(e){return Object(_.matchPath)(a.pathname,e)}));return o?r.a.createElement(L,{currentDocRoute:o,versionMetadata:n},Object(l.a)(t)):r.a.createElement(S.default,e)}},194:function(e,t,n){"use strict";n.d(t,"a",(function(){return p})),n.d(t,"b",(function(){return b}));var a=n(0),r=n.n(a);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?c(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):c(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},o=Object.keys(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=r.a.createContext({}),u=function(e){var t=r.a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},p=function(e){var t=u(e.components);return r.a.createElement(s.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},d=r.a.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,c=e.parentName,s=i(e,["components","mdxType","originalType","parentName"]),p=u(n),d=a,b=p["".concat(c,".").concat(d)]||p[d]||m[d]||o;return n?r.a.createElement(b,l(l({ref:t},s),{},{components:n})):r.a.createElement(b,l({ref:t},s))}));function b(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,c=new Array(o);c[0]=d;var l={};for(var i in t)hasOwnProperty.call(t,i)&&(l[i]=t[i]);l.originalType=e,l.mdxType="string"==typeof e?e:a,c[1]=l;for(var s=2;s<o;s++)c[s]=n[s];return r.a.createElement.apply(null,c)}return r.a.createElement.apply(null,n)}d.displayName="MDXCreateElement"},212:function(e,t,n){"use strict";const a=(e,{target:t=document.body}={})=>{const n=document.createElement("textarea"),a=document.activeElement;n.value=e,n.setAttribute("readonly",""),n.style.contain="strict",n.style.position="absolute",n.style.left="-9999px",n.style.fontSize="12pt";const r=document.getSelection();let o=!1;r.rangeCount>0&&(o=r.getRangeAt(0)),t.append(n),n.select(),n.selectionStart=0,n.selectionEnd=e.length;let c=!1;try{c=document.execCommand("copy")}catch(l){}return n.remove(),o&&(r.removeAllRanges(),r.addRange(o)),a&&a.focus(),c};e.exports=a,e.exports.default=a},213:function(e,t){function n(e){let t,n=[];for(let a of e.split(",").map((e=>e.trim())))if(/^-?\d+$/.test(a))n.push(parseInt(a,10));else if(t=a.match(/^(-?\d+)(-|\.\.\.?|\u2025|\u2026|\u22EF)(-?\d+)$/)){let[e,a,r,o]=t;if(a&&o){a=parseInt(a),o=parseInt(o);const e=a<o?1:-1;"-"!==r&&".."!==r&&"\u2025"!==r||(o+=e);for(let t=a;t!==o;t+=e)n.push(t)}}return n}t.default=n,e.exports=n},242:function(e,t,n){"use strict";var a=n(3),r=n(0),o=n.n(r),c=n(198),l=n(196),i={plain:{backgroundColor:"#2a2734",color:"#9a86fd"},styles:[{types:["comment","prolog","doctype","cdata","punctuation"],style:{color:"#6c6783"}},{types:["namespace"],style:{opacity:.7}},{types:["tag","operator","number"],style:{color:"#e09142"}},{types:["property","function"],style:{color:"#9a86fd"}},{types:["tag-id","selector","atrule-id"],style:{color:"#eeebff"}},{types:["attr-name"],style:{color:"#c4b9fe"}},{types:["boolean","string","entity","url","attr-value","keyword","control","directive","unit","statement","regex","at-rule","placeholder","variable"],style:{color:"#ffcc99"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"#c4b9fe"}}]},s={Prism:n(23).a,theme:i};function u(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function p(){return(p=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e}).apply(this,arguments)}var m=/\r\n|\r|\n/,d=function(e){0===e.length?e.push({types:["plain"],content:"",empty:!0}):1===e.length&&""===e[0].content&&(e[0].empty=!0)},b=function(e,t){var n=e.length;return n>0&&e[n-1]===t?e:e.concat(t)},f=function(e,t){var n=e.plain,a=Object.create(null),r=e.styles.reduce((function(e,n){var a=n.languages,r=n.style;return a&&!a.includes(t)||n.types.forEach((function(t){var n=p({},e[t],r);e[t]=n})),e}),a);return r.root=n,r.plain=p({},n,{backgroundColor:null}),r};function y(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&-1===t.indexOf(a)&&(n[a]=e[a]);return n}var h=function(e){function t(){for(var t=this,n=[],a=arguments.length;a--;)n[a]=arguments[a];e.apply(this,n),u(this,"getThemeDict",(function(e){if(void 0!==t.themeDict&&e.theme===t.prevTheme&&e.language===t.prevLanguage)return t.themeDict;t.prevTheme=e.theme,t.prevLanguage=e.language;var n=e.theme?f(e.theme,e.language):void 0;return t.themeDict=n})),u(this,"getLineProps",(function(e){var n=e.key,a=e.className,r=e.style,o=p({},y(e,["key","className","style","line"]),{className:"token-line",style:void 0,key:void 0}),c=t.getThemeDict(t.props);return void 0!==c&&(o.style=c.plain),void 0!==r&&(o.style=void 0!==o.style?p({},o.style,r):r),void 0!==n&&(o.key=n),a&&(o.className+=" "+a),o})),u(this,"getStyleForToken",(function(e){var n=e.types,a=e.empty,r=n.length,o=t.getThemeDict(t.props);if(void 0!==o){if(1===r&&"plain"===n[0])return a?{display:"inline-block"}:void 0;if(1===r&&!a)return o[n[0]];var c=a?{display:"inline-block"}:{},l=n.map((function(e){return o[e]}));return Object.assign.apply(Object,[c].concat(l))}})),u(this,"getTokenProps",(function(e){var n=e.key,a=e.className,r=e.style,o=e.token,c=p({},y(e,["key","className","style","token"]),{className:"token "+o.types.join(" "),children:o.content,style:t.getStyleForToken(o),key:void 0});return void 0!==r&&(c.style=void 0!==c.style?p({},c.style,r):r),void 0!==n&&(c.key=n),a&&(c.className+=" "+a),c}))}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.render=function(){var e=this.props,t=e.Prism,n=e.language,a=e.code,r=e.children,o=this.getThemeDict(this.props),c=t.languages[n];return r({tokens:function(e){for(var t=[[]],n=[e],a=[0],r=[e.length],o=0,c=0,l=[],i=[l];c>-1;){for(;(o=a[c]++)<r[c];){var s=void 0,u=t[c],p=n[c][o];if("string"==typeof p?(u=c>0?u:["plain"],s=p):(u=b(u,p.type),p.alias&&(u=b(u,p.alias)),s=p.content),"string"==typeof s){var f=s.split(m),y=f.length;l.push({types:u,content:f[0]});for(var h=1;h<y;h++)d(l),i.push(l=[]),l.push({types:u,content:f[h]})}else c++,t.push(u),n.push(s),a.push(0),r.push(s.length)}c--,t.pop(),n.pop(),a.pop(),r.pop()}return d(l),i}(void 0!==c?t.tokenize(a,c,n):[a]),className:"prism-code language-"+n,style:void 0!==o?o.root:{},getLineProps:this.getLineProps,getTokenProps:this.getTokenProps})},t}(r.Component),g=n(212),v=n.n(g),j=n(213),O=n.n(j),k={plain:{color:"#bfc7d5",backgroundColor:"#292d3e"},styles:[{types:["comment"],style:{color:"rgb(105, 112, 152)",fontStyle:"italic"}},{types:["string","inserted"],style:{color:"rgb(195, 232, 141)"}},{types:["number"],style:{color:"rgb(247, 140, 108)"}},{types:["builtin","char","constant","function"],style:{color:"rgb(130, 170, 255)"}},{types:["punctuation","selector"],style:{color:"rgb(199, 146, 234)"}},{types:["variable"],style:{color:"rgb(191, 199, 213)"}},{types:["class-name","attr-name"],style:{color:"rgb(255, 203, 107)"}},{types:["tag","deleted"],style:{color:"rgb(255, 85, 114)"}},{types:["operator"],style:{color:"rgb(137, 221, 255)"}},{types:["boolean"],style:{color:"rgb(255, 88, 116)"}},{types:["keyword"],style:{fontStyle:"italic"}},{types:["doctype"],style:{color:"rgb(199, 146, 234)",fontStyle:"italic"}},{types:["namespace"],style:{color:"rgb(178, 204, 214)"}},{types:["url"],style:{color:"rgb(221, 221, 221)"}}]},E=n(209),N=n(195),C=function(){var e=Object(N.useThemeConfig)().prism,t=Object(E.a)().isDarkTheme,n=e.theme||k,a=e.darkTheme||n;return t?a:n},x=n(56),P=n.n(x),w=/{([\d,-]+)}/,T=function(e){void 0===e&&(e=["js","jsBlock","jsx","python","html"]);var t={js:{start:"\\/\\/",end:""},jsBlock:{start:"\\/\\*",end:"\\*\\/"},jsx:{start:"\\{\\s*\\/\\*",end:"\\*\\/\\s*\\}"},python:{start:"#",end:""},html:{start:"\x3c!--",end:"--\x3e"}},n=["highlight-next-line","highlight-start","highlight-end"].join("|"),a=e.map((function(e){return"(?:"+t[e].start+"\\s*("+n+")\\s*"+t[e].end+")"})).join("|");return new RegExp("^\\s*(?:"+a+")\\s*$")},S=/(?:title=")(.*)(?:")/,_=function(e){var t=e.children,n=e.className,c=e.metastring,i=Object(N.useThemeConfig)().prism,u=Object(r.useState)(!1),p=u[0],m=u[1],d=Object(r.useState)(!1),b=d[0],f=d[1];Object(r.useEffect)((function(){f(!0)}),[]);var y=Object(r.useRef)(null),g=[],j="",k=C(),E=Array.isArray(t)?t.join(""):t;if(c&&w.test(c)){var x=c.match(w)[1];g=O()(x).filter((function(e){return e>0}))}c&&S.test(c)&&(j=c.match(S)[1]);var _=n&&n.replace(/language-/,"");!_&&i.defaultLanguage&&(_=i.defaultLanguage);var I=E.replace(/\n$/,"");if(0===g.length&&void 0!==_){for(var D,L="",B=function(e){switch(e){case"js":case"javascript":case"ts":case"typescript":return T(["js","jsBlock"]);case"jsx":case"tsx":return T(["js","jsBlock","jsx"]);case"html":return T(["js","jsBlock","html"]);case"python":case"py":return T(["python"]);default:return T()}}(_),M=E.replace(/\n$/,"").split("\n"),R=0;R<M.length;){var A=R+1,F=M[R].match(B);if(null!==F){switch(F.slice(1).reduce((function(e,t){return e||t}),void 0)){case"highlight-next-line":L+=A+",";break;case"highlight-start":D=A;break;case"highlight-end":L+=D+"-"+(A-1)+","}M.splice(R,1)}else R+=1}g=O()(L),I=M.join("\n")}var H=function(){v()(I),m(!0),setTimeout((function(){return m(!1)}),2e3)};return o.a.createElement(h,Object(a.a)({},s,{key:String(b),theme:k,code:I,language:_}),(function(e){var t,n=e.className,r=e.style,c=e.tokens,i=e.getLineProps,s=e.getTokenProps;return o.a.createElement(o.a.Fragment,null,j&&o.a.createElement("div",{style:r,className:P.a.codeBlockTitle},j),o.a.createElement("div",{className:P.a.codeBlockContent},o.a.createElement("div",{tabIndex:0,className:Object(l.a)(n,P.a.codeBlock,"thin-scrollbar",(t={},t[P.a.codeBlockWithTitle]=j,t))},o.a.createElement("div",{className:P.a.codeBlockLines,style:r},c.map((function(e,t){1===e.length&&""===e[0].content&&(e[0].content="\n");var n=i({line:e,key:t});return g.includes(t+1)&&(n.className=n.className+" docusaurus-highlight-code-line"),o.a.createElement("div",Object(a.a)({key:t},n),e.map((function(e,t){return o.a.createElement("span",Object(a.a)({key:t},s({token:e,key:t})))})))})))),o.a.createElement("button",{ref:y,type:"button","aria-label":"Copy code to clipboard",className:Object(l.a)(P.a.copyButton),onClick:H},p?"Copied":"Copy")))}))},I=n(7),D=(n(57),n(58)),L=n.n(D),B=function(e){return function(t){var n,a=t.id,r=Object(I.a)(t,["id"]),c=Object(N.useThemeConfig)().navbar.hideOnScroll;return a?o.a.createElement(e,r,o.a.createElement("a",{"aria-hidden":"true",tabIndex:-1,className:Object(l.a)("anchor",(n={},n[L.a.enhancedAnchor]=!c,n)),id:a}),r.children,o.a.createElement("a",{className:"hash-link",href:"#"+a,title:"Direct link to heading"},"#")):o.a.createElement(e,r)}},M=n(59),R=n.n(M),A={code:function(e){var t=e.children;return"string"==typeof t?t.includes("\n")?o.a.createElement(_,e):o.a.createElement("code",e):t},a:function(e){return o.a.createElement(c.a,e)},pre:function(e){return o.a.createElement("div",Object(a.a)({className:R.a.mdxCodeBlock},e))},h1:B("h1"),h2:B("h2"),h3:B("h3"),h4:B("h4"),h5:B("h5"),h6:B("h6")};t.a=A},244:function(e,t,n){"use strict";n.r(t);var a=n(0),r=n.n(a),o=n(204);t.default=function(){return r.a.createElement(o.a,{title:"Page Not Found"},r.a.createElement("main",{className:"container margin-vert--xl"},r.a.createElement("div",{className:"row"},r.a.createElement("div",{className:"col col--6 col--offset-3"},r.a.createElement("h1",{className:"hero__title"},"Page Not Found"),r.a.createElement("p",null,"We could not find what you were looking for."),r.a.createElement("p",null,"Please contact the owner of the site that linked you to the original URL and let them know their link is broken.")))))}}}]);
\ No newline at end of file
diff --git a/144.74bdeeb7.js b/129.af810dde.js
similarity index 95%
rename from 144.74bdeeb7.js
rename to 129.af810dde.js
index d1991e2..54b9c76 100644
--- a/144.74bdeeb7.js
+++ b/129.af810dde.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[144],{209:function(e,t,n){"use strict";n.d(t,"a",(function(){return p})),n.d(t,"b",(function(){return y}));var r=n(0),a=n.n(r);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?c(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):c(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var i=a.a.createContext({}),u=function(e){var t=a.a.useContext(i),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},p=function(e){var t=u(e.components);return a.a.createElement(i.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},d=a.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,c=e.parentName,i=s(e,["components","mdxType","originalType","parentName"]),p=u(n),d=r,y=p["".concat(c,".").concat(d)]||p[d]||m[d]||o;return n?a.a.createElement(y,l(l({ref:t},i),{},{components:n})):a.a.createElement(y,l({ref:t},i))}));function y(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,c=new Array(o);c[0]=d;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l.mdxType="string"==typeof e?e:r,c[1]=l;for(var i=2;i<o;i++)c[i]=n[i];return a.a.createElement.apply(null,c)}return a.a.createElement.apply(null,n)}d.displayName="MDXCreateElement"},234:function(e,t,n){"use strict";const r=(e,{target:t=document.body}={})=>{const n=document.createElement("textarea"),r=document.activeElement;n.value=e,n.setAttribute("readonly",""),n.style.contain="strict",n.style.position="absolute",n.style.left="-9999px",n.style.fontSize="12pt";const a=document.getSelection();let o=!1;a.rangeCount>0&&(o=a.getRangeAt(0)),t.append(n),n.select(),n.selectionStart=0,n.selectionEnd=e.length;let c=!1;try{c=document.execCommand("copy")}catch(l){}return n.remove(),o&&(a.removeAllRanges(),a.addRange(o)),r&&r.focus(),c};e.exports=r,e.exports.default=r},235:function(e,t){function n(e){let t,n=[];for(let r of e.split(",").map((e=>e.trim())))if(/^-?\d+$/.test(r))n.push(parseInt(r,10));else if(t=r.match(/^(-?\d+)(-|\.\.\.?|\u2025|\u2026|\u22EF)(-?\d+)$/)){let[e,r,a,o]=t;if(r&&o){r=parseInt(r),o=parseInt(o);const e=r<o?1:-1;"-"!==a&&".."!==a&&"\u2025"!==a||(o+=e);for(let t=r;t!==o;t+=e)n.push(t)}}return n}t.default=n,e.exports=n},259:function(e,t,n){"use strict";var r=n(3),a=n(0),o=n.n(a),c=n(213),l=n(211),s={plain:{backgroundColor:"#2a2734",color:"#9a86fd"},styles:[{types:["comment","prolog","doctype","cdata","punctuation"],style:{color:"#6c6783"}},{types:["namespace"],style:{opacity:.7}},{types:["tag","operator","number"],style:{color:"#e09142"}},{types:["property","function"],style:{color:"#9a86fd"}},{types:["tag-id","selector","atrule-id"],style:{color:"#eeebff"}},{types:["attr-name"],style:{color:"#c4b9fe"}},{types:["boolean","string","entity","url","attr-value","keyword","control","directive","unit","statement","regex","at-rule","placeholder","variable"],style:{color:"#ffcc99"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"#c4b9fe"}}]},i={Prism:n(23).a,theme:s};function u(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function p(){return(p=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}var m=/\r\n|\r|\n/,d=function(e){0===e.length?e.push({types:["plain"],content:"",empty:!0}):1===e.length&&""===e[0].content&&(e[0].empty=!0)},y=function(e,t){var n=e.length;return n>0&&e[n-1]===t?e:e.concat(t)},f=function(e,t){var n=e.plain,r=Object.create(null),a=e.styles.reduce((function(e,n){var r=n.languages,a=n.style;return r&&!r.includes(t)||n.types.forEach((function(t){var n=p({},e[t],a);e[t]=n})),e}),r);return a.root=n,a.plain=p({},n,{backgroundColor:null}),a};function h(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&-1===t.indexOf(r)&&(n[r]=e[r]);return n}var g=function(e){function t(){for(var t=this,n=[],r=arguments.length;r--;)n[r]=arguments[r];e.apply(this,n),u(this,"getThemeDict",(function(e){if(void 0!==t.themeDict&&e.theme===t.prevTheme&&e.language===t.prevLanguage)return t.themeDict;t.prevTheme=e.theme,t.prevLanguage=e.language;var n=e.theme?f(e.theme,e.language):void 0;return t.themeDict=n})),u(this,"getLineProps",(function(e){var n=e.key,r=e.className,a=e.style,o=p({},h(e,["key","className","style","line"]),{className:"token-line",style:void 0,key:void 0}),c=t.getThemeDict(t.props);return void 0!==c&&(o.style=c.plain),void 0!==a&&(o.style=void 0!==o.style?p({},o.style,a):a),void 0!==n&&(o.key=n),r&&(o.className+=" "+r),o})),u(this,"getStyleForToken",(function(e){var n=e.types,r=e.empty,a=n.length,o=t.getThemeDict(t.props);if(void 0!==o){if(1===a&&"plain"===n[0])return r?{display:"inline-block"}:void 0;if(1===a&&!r)return o[n[0]];var c=r?{display:"inline-block"}:{},l=n.map((function(e){return o[e]}));return Object.assign.apply(Object,[c].concat(l))}})),u(this,"getTokenProps",(function(e){var n=e.key,r=e.className,a=e.style,o=e.token,c=p({},h(e,["key","className","style","token"]),{className:"token "+o.types.join(" "),children:o.content,style:t.getStyleForToken(o),key:void 0});return void 0!==a&&(c.style=void 0!==c.style?p({},c.style,a):a),void 0!==n&&(c.key=n),r&&(c.className+=" "+r),c}))}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.render=function(){var e=this.props,t=e.Prism,n=e.language,r=e.code,a=e.children,o=this.getThemeDict(this.props),c=t.languages[n];return a({tokens:function(e){for(var t=[[]],n=[e],r=[0],a=[e.length],o=0,c=0,l=[],s=[l];c>-1;){for(;(o=r[c]++)<a[c];){var i=void 0,u=t[c],p=n[c][o];if("string"==typeof p?(u=c>0?u:["plain"],i=p):(u=y(u,p.type),p.alias&&(u=y(u,p.alias)),i=p.content),"string"==typeof i){var f=i.split(m),h=f.length;l.push({types:u,content:f[0]});for(var g=1;g<h;g++)d(l),s.push(l=[]),l.push({types:u,content:f[g]})}else c++,t.push(u),n.push(i),r.push(0),a.push(i.length)}c--,t.pop(),n.pop(),r.pop(),a.pop()}return d(l),s}(void 0!==c?t.tokenize(r,c,n):[r]),className:"prism-code language-"+n,style:void 0!==o?o.root:{},getLineProps:this.getLineProps,getTokenProps:this.getTokenProps})},t}(a.Component),v=n(234),b=n.n(v),j=n(235),k=n.n(j),O={plain:{color:"#bfc7d5",backgroundColor:"#292d3e"},styles:[{types:["comment"],style:{color:"rgb(105, 112, 152)",fontStyle:"italic"}},{types:["string","inserted"],style:{color:"rgb(195, 232, 141)"}},{types:["number"],style:{color:"rgb(247, 140, 108)"}},{types:["builtin","char","constant","function"],style:{color:"rgb(130, 170, 255)"}},{types:["punctuation","selector"],style:{color:"rgb(199, 146, 234)"}},{types:["variable"],style:{color:"rgb(191, 199, 213)"}},{types:["class-name","attr-name"],style:{color:"rgb(255, 203, 107)"}},{types:["tag","deleted"],style:{color:"rgb(255, 85, 114)"}},{types:["operator"],style:{color:"rgb(137, 221, 255)"}},{types:["boolean"],style:{color:"rgb(255, 88, 116)"}},{types:["keyword"],style:{fontStyle:"italic"}},{types:["doctype"],style:{color:"rgb(199, 146, 234)",fontStyle:"italic"}},{types:["namespace"],style:{color:"rgb(178, 204, 214)"}},{types:["url"],style:{color:"rgb(221, 221, 221)"}}]},E=n(231),N=n(210),x=function(){var e=Object(N.useThemeConfig)().prism,t=Object(E.a)().isDarkTheme,n=e.theme||O,r=e.darkTheme||n;return t?r:n},w=n(56),C=n.n(w),T=/{([\d,-]+)}/,P=function(e){void 0===e&&(e=["js","jsBlock","jsx","python","html"]);var t={js:{start:"\\/\\/",end:""},jsBlock:{start:"\\/\\*",end:"\\*\\/"},jsx:{start:"\\{\\s*\\/\\*",end:"\\*\\/\\s*\\}"},python:{start:"#",end:""},html:{start:"\x3c!--",end:"--\x3e"}},n=["highlight-next-line","highlight-start","highlight-end"].join("|"),r=e.map((function(e){return"(?:"+t[e].start+"\\s*("+n+")\\s*"+t[e].end+")"})).join("|");return new RegExp("^\\s*(?:"+r+")\\s*$")},S=/(?:title=")(.*)(?:")/,L=function(e){var t=e.children,n=e.className,c=e.metastring,s=Object(N.useThemeConfig)().prism,u=Object(a.useState)(!1),p=u[0],m=u[1],d=Object(a.useState)(!1),y=d[0],f=d[1];Object(a.useEffect)((function(){f(!0)}),[]);var h=Object(a.useRef)(null),v=[],j="",O=x(),E=Array.isArray(t)?t.join(""):t;if(c&&T.test(c)){var w=c.match(T)[1];v=k()(w).filter((function(e){return e>0}))}c&&S.test(c)&&(j=c.match(S)[1]);var L=n&&n.replace(/language-/,"");!L&&s.defaultLanguage&&(L=s.defaultLanguage);var B=E.replace(/\n$/,"");if(0===v.length&&void 0!==L){for(var D,_="",R=function(e){switch(e){case"js":case"javascript":case"ts":case"typescript":return P(["js","jsBlock"]);case"jsx":case"tsx":return P(["js","jsBlock","jsx"]);case"html":return P(["js","jsBlock","html"]);case"python":case"py":return P(["python"]);default:return P()}}(L),A=E.replace(/\n$/,"").split("\n"),I=0;I<A.length;){var F=I+1,$=A[I].match(R);if(null!==$){switch($.slice(1).reduce((function(e,t){return e||t}),void 0)){case"highlight-next-line":_+=F+",";break;case"highlight-start":D=F;break;case"highlight-end":_+=D+"-"+(F-1)+","}A.splice(I,1)}else I+=1}v=k()(_),B=A.join("\n")}var z=function(){b()(B),m(!0),setTimeout((function(){return m(!1)}),2e3)};return o.a.createElement(g,Object(r.a)({},i,{key:String(y),theme:O,code:B,language:L}),(function(e){var t,n=e.className,a=e.style,c=e.tokens,s=e.getLineProps,i=e.getTokenProps;return o.a.createElement(o.a.Fragment,null,j&&o.a.createElement("div",{style:a,className:C.a.codeBlockTitle},j),o.a.createElement("div",{className:C.a.codeBlockContent},o.a.createElement("div",{tabIndex:0,className:Object(l.a)(n,C.a.codeBlock,"thin-scrollbar",(t={},t[C.a.codeBlockWithTitle]=j,t))},o.a.createElement("div",{className:C.a.codeBlockLines,style:a},c.map((function(e,t){1===e.length&&""===e[0].content&&(e[0].content="\n");var n=s({line:e,key:t});return v.includes(t+1)&&(n.className=n.className+" docusaurus-highlight-code-line"),o.a.createElement("div",Object(r.a)({key:t},n),e.map((function(e,t){return o.a.createElement("span",Object(r.a)({key:t},i({token:e,key:t})))})))})))),o.a.createElement("button",{ref:h,type:"button","aria-label":"Copy code to clipboard",className:Object(l.a)(C.a.copyButton),onClick:z},p?"Copied":"Copy")))}))},B=n(7),D=(n(57),n(58)),_=n.n(D),R=function(e){return function(t){var n,r=t.id,a=Object(B.a)(t,["id"]),c=Object(N.useThemeConfig)().navbar.hideOnScroll;return r?o.a.createElement(e,a,o.a.createElement("a",{"aria-hidden":"true",tabIndex:-1,className:Object(l.a)("anchor",(n={},n[_.a.enhancedAnchor]=!c,n)),id:r}),a.children,o.a.createElement("a",{className:"hash-link",href:"#"+r,title:"Direct link to heading"},"#")):o.a.createElement(e,a)}},A=n(59),I=n.n(A),F={code:function(e){var t=e.children;return"string"==typeof t?t.includes("\n")?o.a.createElement(L,e):o.a.createElement("code",e):t},a:function(e){return o.a.createElement(c.a,e)},pre:function(e){return o.a.createElement("div",Object(r.a)({className:I.a.mdxCodeBlock},e))},h1:R("h1"),h2:R("h2"),h3:R("h3"),h4:R("h4"),h5:R("h5"),h6:R("h6")};t.a=F},260:function(e,t,n){"use strict";var r=n(0),a=n.n(r),o=n(211);var c=function(e,t,n){var a=Object(r.useState)(void 0),o=a[0],c=a[1];Object(r.useEffect)((function(){function r(){var r=function(){var e=Array.from(document.getElementsByClassName("anchor")),t=e.find((function(e){return e.getBoundingClientRect().top>=n}));if(t){if(t.getBoundingClientRect().top>=n){var r=e[e.indexOf(t)-1];return null!=r?r:t}return t}return e[e.length-1]}();if(r)for(var a=0,l=!1,s=document.getElementsByClassName(e);a<s.length&&!l;){var i=s[a],u=i.href,p=decodeURIComponent(u.substring(u.indexOf("#")+1));r.id===p&&(o&&o.classList.remove(t),i.classList.add(t),c(i),l=!0),a+=1}}return document.addEventListener("scroll",r),document.addEventListener("resize",r),r(),function(){document.removeEventListener("scroll",r),document.removeEventListener("resize",r)}}))},l=n(55),s=n.n(l),i="table-of-contents__link";function u(e){var t=e.toc,n=e.isChild;return t.length?a.a.createElement("ul",{className:n?"":"table-of-contents table-of-contents__left-border"},t.map((function(e){return a.a.createElement("li",{key:e.id},a.a.createElement("a",{href:"#"+e.id,className:i,dangerouslySetInnerHTML:{__html:e.value}}),a.a.createElement(u,{isChild:!0,toc:e.children}))}))):null}t.a=function(e){var t=e.toc;return c(i,"table-of-contents__link--active",100),a.a.createElement("div",{className:Object(o.a)(s.a.tableOfContents,"thin-scrollbar")},a.a.createElement(u,{toc:t}))}},82:function(e,t,n){"use strict";n.r(t);var r=n(0),a=n.n(r),o=n(226),c=n(209),l=n(259),s=n(260);t.default=function(e){var t=e.content,n=t.frontMatter,r=t.metadata,i=n.title,u=n.description,p=n.wrapperClassName,m=n.hide_table_of_contents,d=r.permalink;return a.a.createElement(o.a,{title:i,description:u,permalink:d,wrapperClassName:p},a.a.createElement("main",null,a.a.createElement("div",{className:"container container--fluid"},a.a.createElement("div",{className:"margin-vert--lg padding-vert--lg"},a.a.createElement("div",{className:"row"},a.a.createElement("div",{className:"col col--8 col--offset-2"},a.a.createElement("div",{className:"container"},a.a.createElement(c.a,{components:l.a},a.a.createElement(t,null)))),!m&&t.toc&&a.a.createElement("div",{className:"col col--2"},a.a.createElement(s.a,{toc:t.toc})))))))}}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[129],{194:function(e,t,n){"use strict";n.d(t,"a",(function(){return p})),n.d(t,"b",(function(){return y}));var r=n(0),a=n.n(r);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?c(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):c(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var i=a.a.createContext({}),u=function(e){var t=a.a.useContext(i),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},p=function(e){var t=u(e.components);return a.a.createElement(i.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},d=a.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,c=e.parentName,i=s(e,["components","mdxType","originalType","parentName"]),p=u(n),d=r,y=p["".concat(c,".").concat(d)]||p[d]||m[d]||o;return n?a.a.createElement(y,l(l({ref:t},i),{},{components:n})):a.a.createElement(y,l({ref:t},i))}));function y(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,c=new Array(o);c[0]=d;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l.mdxType="string"==typeof e?e:r,c[1]=l;for(var i=2;i<o;i++)c[i]=n[i];return a.a.createElement.apply(null,c)}return a.a.createElement.apply(null,n)}d.displayName="MDXCreateElement"},212:function(e,t,n){"use strict";const r=(e,{target:t=document.body}={})=>{const n=document.createElement("textarea"),r=document.activeElement;n.value=e,n.setAttribute("readonly",""),n.style.contain="strict",n.style.position="absolute",n.style.left="-9999px",n.style.fontSize="12pt";const a=document.getSelection();let o=!1;a.rangeCount>0&&(o=a.getRangeAt(0)),t.append(n),n.select(),n.selectionStart=0,n.selectionEnd=e.length;let c=!1;try{c=document.execCommand("copy")}catch(l){}return n.remove(),o&&(a.removeAllRanges(),a.addRange(o)),r&&r.focus(),c};e.exports=r,e.exports.default=r},213:function(e,t){function n(e){let t,n=[];for(let r of e.split(",").map((e=>e.trim())))if(/^-?\d+$/.test(r))n.push(parseInt(r,10));else if(t=r.match(/^(-?\d+)(-|\.\.\.?|\u2025|\u2026|\u22EF)(-?\d+)$/)){let[e,r,a,o]=t;if(r&&o){r=parseInt(r),o=parseInt(o);const e=r<o?1:-1;"-"!==a&&".."!==a&&"\u2025"!==a||(o+=e);for(let t=r;t!==o;t+=e)n.push(t)}}return n}t.default=n,e.exports=n},242:function(e,t,n){"use strict";var r=n(3),a=n(0),o=n.n(a),c=n(198),l=n(196),s={plain:{backgroundColor:"#2a2734",color:"#9a86fd"},styles:[{types:["comment","prolog","doctype","cdata","punctuation"],style:{color:"#6c6783"}},{types:["namespace"],style:{opacity:.7}},{types:["tag","operator","number"],style:{color:"#e09142"}},{types:["property","function"],style:{color:"#9a86fd"}},{types:["tag-id","selector","atrule-id"],style:{color:"#eeebff"}},{types:["attr-name"],style:{color:"#c4b9fe"}},{types:["boolean","string","entity","url","attr-value","keyword","control","directive","unit","statement","regex","at-rule","placeholder","variable"],style:{color:"#ffcc99"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"#c4b9fe"}}]},i={Prism:n(23).a,theme:s};function u(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function p(){return(p=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}var m=/\r\n|\r|\n/,d=function(e){0===e.length?e.push({types:["plain"],content:"",empty:!0}):1===e.length&&""===e[0].content&&(e[0].empty=!0)},y=function(e,t){var n=e.length;return n>0&&e[n-1]===t?e:e.concat(t)},f=function(e,t){var n=e.plain,r=Object.create(null),a=e.styles.reduce((function(e,n){var r=n.languages,a=n.style;return r&&!r.includes(t)||n.types.forEach((function(t){var n=p({},e[t],a);e[t]=n})),e}),r);return a.root=n,a.plain=p({},n,{backgroundColor:null}),a};function h(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&-1===t.indexOf(r)&&(n[r]=e[r]);return n}var g=function(e){function t(){for(var t=this,n=[],r=arguments.length;r--;)n[r]=arguments[r];e.apply(this,n),u(this,"getThemeDict",(function(e){if(void 0!==t.themeDict&&e.theme===t.prevTheme&&e.language===t.prevLanguage)return t.themeDict;t.prevTheme=e.theme,t.prevLanguage=e.language;var n=e.theme?f(e.theme,e.language):void 0;return t.themeDict=n})),u(this,"getLineProps",(function(e){var n=e.key,r=e.className,a=e.style,o=p({},h(e,["key","className","style","line"]),{className:"token-line",style:void 0,key:void 0}),c=t.getThemeDict(t.props);return void 0!==c&&(o.style=c.plain),void 0!==a&&(o.style=void 0!==o.style?p({},o.style,a):a),void 0!==n&&(o.key=n),r&&(o.className+=" "+r),o})),u(this,"getStyleForToken",(function(e){var n=e.types,r=e.empty,a=n.length,o=t.getThemeDict(t.props);if(void 0!==o){if(1===a&&"plain"===n[0])return r?{display:"inline-block"}:void 0;if(1===a&&!r)return o[n[0]];var c=r?{display:"inline-block"}:{},l=n.map((function(e){return o[e]}));return Object.assign.apply(Object,[c].concat(l))}})),u(this,"getTokenProps",(function(e){var n=e.key,r=e.className,a=e.style,o=e.token,c=p({},h(e,["key","className","style","token"]),{className:"token "+o.types.join(" "),children:o.content,style:t.getStyleForToken(o),key:void 0});return void 0!==a&&(c.style=void 0!==c.style?p({},c.style,a):a),void 0!==n&&(c.key=n),r&&(c.className+=" "+r),c}))}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.render=function(){var e=this.props,t=e.Prism,n=e.language,r=e.code,a=e.children,o=this.getThemeDict(this.props),c=t.languages[n];return a({tokens:function(e){for(var t=[[]],n=[e],r=[0],a=[e.length],o=0,c=0,l=[],s=[l];c>-1;){for(;(o=r[c]++)<a[c];){var i=void 0,u=t[c],p=n[c][o];if("string"==typeof p?(u=c>0?u:["plain"],i=p):(u=y(u,p.type),p.alias&&(u=y(u,p.alias)),i=p.content),"string"==typeof i){var f=i.split(m),h=f.length;l.push({types:u,content:f[0]});for(var g=1;g<h;g++)d(l),s.push(l=[]),l.push({types:u,content:f[g]})}else c++,t.push(u),n.push(i),r.push(0),a.push(i.length)}c--,t.pop(),n.pop(),r.pop(),a.pop()}return d(l),s}(void 0!==c?t.tokenize(r,c,n):[r]),className:"prism-code language-"+n,style:void 0!==o?o.root:{},getLineProps:this.getLineProps,getTokenProps:this.getTokenProps})},t}(a.Component),v=n(212),b=n.n(v),j=n(213),k=n.n(j),O={plain:{color:"#bfc7d5",backgroundColor:"#292d3e"},styles:[{types:["comment"],style:{color:"rgb(105, 112, 152)",fontStyle:"italic"}},{types:["string","inserted"],style:{color:"rgb(195, 232, 141)"}},{types:["number"],style:{color:"rgb(247, 140, 108)"}},{types:["builtin","char","constant","function"],style:{color:"rgb(130, 170, 255)"}},{types:["punctuation","selector"],style:{color:"rgb(199, 146, 234)"}},{types:["variable"],style:{color:"rgb(191, 199, 213)"}},{types:["class-name","attr-name"],style:{color:"rgb(255, 203, 107)"}},{types:["tag","deleted"],style:{color:"rgb(255, 85, 114)"}},{types:["operator"],style:{color:"rgb(137, 221, 255)"}},{types:["boolean"],style:{color:"rgb(255, 88, 116)"}},{types:["keyword"],style:{fontStyle:"italic"}},{types:["doctype"],style:{color:"rgb(199, 146, 234)",fontStyle:"italic"}},{types:["namespace"],style:{color:"rgb(178, 204, 214)"}},{types:["url"],style:{color:"rgb(221, 221, 221)"}}]},E=n(209),N=n(195),x=function(){var e=Object(N.useThemeConfig)().prism,t=Object(E.a)().isDarkTheme,n=e.theme||O,r=e.darkTheme||n;return t?r:n},w=n(56),C=n.n(w),T=/{([\d,-]+)}/,P=function(e){void 0===e&&(e=["js","jsBlock","jsx","python","html"]);var t={js:{start:"\\/\\/",end:""},jsBlock:{start:"\\/\\*",end:"\\*\\/"},jsx:{start:"\\{\\s*\\/\\*",end:"\\*\\/\\s*\\}"},python:{start:"#",end:""},html:{start:"\x3c!--",end:"--\x3e"}},n=["highlight-next-line","highlight-start","highlight-end"].join("|"),r=e.map((function(e){return"(?:"+t[e].start+"\\s*("+n+")\\s*"+t[e].end+")"})).join("|");return new RegExp("^\\s*(?:"+r+")\\s*$")},S=/(?:title=")(.*)(?:")/,L=function(e){var t=e.children,n=e.className,c=e.metastring,s=Object(N.useThemeConfig)().prism,u=Object(a.useState)(!1),p=u[0],m=u[1],d=Object(a.useState)(!1),y=d[0],f=d[1];Object(a.useEffect)((function(){f(!0)}),[]);var h=Object(a.useRef)(null),v=[],j="",O=x(),E=Array.isArray(t)?t.join(""):t;if(c&&T.test(c)){var w=c.match(T)[1];v=k()(w).filter((function(e){return e>0}))}c&&S.test(c)&&(j=c.match(S)[1]);var L=n&&n.replace(/language-/,"");!L&&s.defaultLanguage&&(L=s.defaultLanguage);var B=E.replace(/\n$/,"");if(0===v.length&&void 0!==L){for(var D,_="",R=function(e){switch(e){case"js":case"javascript":case"ts":case"typescript":return P(["js","jsBlock"]);case"jsx":case"tsx":return P(["js","jsBlock","jsx"]);case"html":return P(["js","jsBlock","html"]);case"python":case"py":return P(["python"]);default:return P()}}(L),A=E.replace(/\n$/,"").split("\n"),I=0;I<A.length;){var F=I+1,$=A[I].match(R);if(null!==$){switch($.slice(1).reduce((function(e,t){return e||t}),void 0)){case"highlight-next-line":_+=F+",";break;case"highlight-start":D=F;break;case"highlight-end":_+=D+"-"+(F-1)+","}A.splice(I,1)}else I+=1}v=k()(_),B=A.join("\n")}var z=function(){b()(B),m(!0),setTimeout((function(){return m(!1)}),2e3)};return o.a.createElement(g,Object(r.a)({},i,{key:String(y),theme:O,code:B,language:L}),(function(e){var t,n=e.className,a=e.style,c=e.tokens,s=e.getLineProps,i=e.getTokenProps;return o.a.createElement(o.a.Fragment,null,j&&o.a.createElement("div",{style:a,className:C.a.codeBlockTitle},j),o.a.createElement("div",{className:C.a.codeBlockContent},o.a.createElement("div",{tabIndex:0,className:Object(l.a)(n,C.a.codeBlock,"thin-scrollbar",(t={},t[C.a.codeBlockWithTitle]=j,t))},o.a.createElement("div",{className:C.a.codeBlockLines,style:a},c.map((function(e,t){1===e.length&&""===e[0].content&&(e[0].content="\n");var n=s({line:e,key:t});return v.includes(t+1)&&(n.className=n.className+" docusaurus-highlight-code-line"),o.a.createElement("div",Object(r.a)({key:t},n),e.map((function(e,t){return o.a.createElement("span",Object(r.a)({key:t},i({token:e,key:t})))})))})))),o.a.createElement("button",{ref:h,type:"button","aria-label":"Copy code to clipboard",className:Object(l.a)(C.a.copyButton),onClick:z},p?"Copied":"Copy")))}))},B=n(7),D=(n(57),n(58)),_=n.n(D),R=function(e){return function(t){var n,r=t.id,a=Object(B.a)(t,["id"]),c=Object(N.useThemeConfig)().navbar.hideOnScroll;return r?o.a.createElement(e,a,o.a.createElement("a",{"aria-hidden":"true",tabIndex:-1,className:Object(l.a)("anchor",(n={},n[_.a.enhancedAnchor]=!c,n)),id:r}),a.children,o.a.createElement("a",{className:"hash-link",href:"#"+r,title:"Direct link to heading"},"#")):o.a.createElement(e,a)}},A=n(59),I=n.n(A),F={code:function(e){var t=e.children;return"string"==typeof t?t.includes("\n")?o.a.createElement(L,e):o.a.createElement("code",e):t},a:function(e){return o.a.createElement(c.a,e)},pre:function(e){return o.a.createElement("div",Object(r.a)({className:I.a.mdxCodeBlock},e))},h1:R("h1"),h2:R("h2"),h3:R("h3"),h4:R("h4"),h5:R("h5"),h6:R("h6")};t.a=F},243:function(e,t,n){"use strict";var r=n(0),a=n.n(r),o=n(196);var c=function(e,t,n){var a=Object(r.useState)(void 0),o=a[0],c=a[1];Object(r.useEffect)((function(){function r(){var r=function(){var e=Array.from(document.getElementsByClassName("anchor")),t=e.find((function(e){return e.getBoundingClientRect().top>=n}));if(t){if(t.getBoundingClientRect().top>=n){var r=e[e.indexOf(t)-1];return null!=r?r:t}return t}return e[e.length-1]}();if(r)for(var a=0,l=!1,s=document.getElementsByClassName(e);a<s.length&&!l;){var i=s[a],u=i.href,p=decodeURIComponent(u.substring(u.indexOf("#")+1));r.id===p&&(o&&o.classList.remove(t),i.classList.add(t),c(i),l=!0),a+=1}}return document.addEventListener("scroll",r),document.addEventListener("resize",r),r(),function(){document.removeEventListener("scroll",r),document.removeEventListener("resize",r)}}))},l=n(55),s=n.n(l),i="table-of-contents__link";function u(e){var t=e.toc,n=e.isChild;return t.length?a.a.createElement("ul",{className:n?"":"table-of-contents table-of-contents__left-border"},t.map((function(e){return a.a.createElement("li",{key:e.id},a.a.createElement("a",{href:"#"+e.id,className:i,dangerouslySetInnerHTML:{__html:e.value}}),a.a.createElement(u,{isChild:!0,toc:e.children}))}))):null}t.a=function(e){var t=e.toc;return c(i,"table-of-contents__link--active",100),a.a.createElement("div",{className:Object(o.a)(s.a.tableOfContents,"thin-scrollbar")},a.a.createElement(u,{toc:t}))}},82:function(e,t,n){"use strict";n.r(t);var r=n(0),a=n.n(r),o=n(204),c=n(194),l=n(242),s=n(243);t.default=function(e){var t=e.content,n=t.frontMatter,r=t.metadata,i=n.title,u=n.description,p=n.wrapperClassName,m=n.hide_table_of_contents,d=r.permalink;return a.a.createElement(o.a,{title:i,description:u,permalink:d,wrapperClassName:p},a.a.createElement("main",null,a.a.createElement("div",{className:"container container--fluid"},a.a.createElement("div",{className:"margin-vert--lg padding-vert--lg"},a.a.createElement("div",{className:"row"},a.a.createElement("div",{className:"col col--8 col--offset-2"},a.a.createElement("div",{className:"container"},a.a.createElement(c.a,{components:l.a},a.a.createElement(t,null)))),!m&&t.toc&&a.a.createElement("div",{className:"col col--2"},a.a.createElement(s.a,{toc:t.toc})))))))}}}]);
\ No newline at end of file
diff --git a/145.4f2a58d3.js b/130.4bee60be.js
similarity index 78%
rename from 145.4f2a58d3.js
rename to 130.4bee60be.js
index 0fde03d..0a9d955 100644
--- a/145.4f2a58d3.js
+++ b/130.4bee60be.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[145,13,15],{227:function(e,a,n){"use strict";var t=n(0),r=n.n(t),c=n(225),o=n.n(c),l=n(212),s=n(22);a.a=function(e){var a=Object(t.useRef)(!1),c=Object(t.useRef)(null),i=Object(l.useHistory)(),u=Object(s.default)().siteConfig,h=(void 0===u?{}:u).baseUrl,d=function(){a.current||(Promise.all([fetch(h+"search-doc.json").then((function(e){return e.json()})),fetch(h+"lunr-index.json").then((function(e){return e.json()})),Promise.all([n.e(142),n.e(146)]).then(n.bind(null,230)),n.e(97).then(n.t.bind(null,229,7))]).then((function(e){!function(e,a,n){new n({searchDocs:e,searchIndex:a,inputSelector:"#search_input_react",handleSelected:function(e,a,n){var t=h+n.url;document.createElement("a").href=t,i.push(t)}})}(e[0],e[1],e[2].default)})),a.current=!0)},f=Object(t.useCallback)((function(a){c.current.contains(a.target)||c.current.focus(),e.handleSearchBarToggle(!e.isSearchBarExpanded)}),[e.isSearchBarExpanded]);return r.a.createElement("div",{className:"navbar__search",key:"search-box"},r.a.createElement("span",{"aria-label":"expand searchbar",role:"button",className:o()("search-icon",{"search-icon-hidden":e.isSearchBarExpanded}),onClick:f,onKeyDown:f,tabIndex:0}),r.a.createElement("input",{id:"search_input_react",type:"search",placeholder:"Search","aria-label":"Search",className:o()("navbar__search-input",{"search-bar-expanded":e.isSearchBarExpanded},{"search-bar":!e.isSearchBarExpanded}),onClick:d,onMouseOver:d,onFocus:f,onBlur:f,ref:c}))}},261:function(e,a,n){"use strict";n.r(a);var t=n(0),r=n.n(t),c=n(226);a.default=function(){return r.a.createElement(c.a,{title:"Page Not Found"},r.a.createElement("main",{className:"container margin-vert--xl"},r.a.createElement("div",{className:"row"},r.a.createElement("div",{className:"col col--6 col--offset-3"},r.a.createElement("h1",{className:"hero__title"},"Page Not Found"),r.a.createElement("p",null,"We could not find what you were looking for."),r.a.createElement("p",null,"Please contact the owner of the site that linked you to the original URL and let them know their link is broken.")))))}}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[130,13,15],{205:function(e,a,n){"use strict";var t=n(0),r=n.n(t),c=n(203),o=n.n(c),l=n(197),s=n(22);a.a=function(e){var a=Object(t.useRef)(!1),c=Object(t.useRef)(null),i=Object(l.useHistory)(),u=Object(s.default)().siteConfig,h=(void 0===u?{}:u).baseUrl,d=function(){a.current||(Promise.all([fetch(h+"search-doc.json").then((function(e){return e.json()})),fetch(h+"lunr-index.json").then((function(e){return e.json()})),Promise.all([n.e(127),n.e(131)]).then(n.bind(null,208)),n.e(86).then(n.t.bind(null,207,7))]).then((function(e){!function(e,a,n){new n({searchDocs:e,searchIndex:a,inputSelector:"#search_input_react",handleSelected:function(e,a,n){var t=h+n.url;document.createElement("a").href=t,i.push(t)}})}(e[0],e[1],e[2].default)})),a.current=!0)},f=Object(t.useCallback)((function(a){c.current.contains(a.target)||c.current.focus(),e.handleSearchBarToggle(!e.isSearchBarExpanded)}),[e.isSearchBarExpanded]);return r.a.createElement("div",{className:"navbar__search",key:"search-box"},r.a.createElement("span",{"aria-label":"expand searchbar",role:"button",className:o()("search-icon",{"search-icon-hidden":e.isSearchBarExpanded}),onClick:f,onKeyDown:f,tabIndex:0}),r.a.createElement("input",{id:"search_input_react",type:"search",placeholder:"Search","aria-label":"Search",className:o()("navbar__search-input",{"search-bar-expanded":e.isSearchBarExpanded},{"search-bar":!e.isSearchBarExpanded}),onClick:d,onMouseOver:d,onFocus:f,onBlur:f,ref:c}))}},244:function(e,a,n){"use strict";n.r(a);var t=n(0),r=n.n(t),c=n(204);a.default=function(){return r.a.createElement(c.a,{title:"Page Not Found"},r.a.createElement("main",{className:"container margin-vert--xl"},r.a.createElement("div",{className:"row"},r.a.createElement("div",{className:"col col--6 col--offset-3"},r.a.createElement("h1",{className:"hero__title"},"Page Not Found"),r.a.createElement("p",null,"We could not find what you were looking for."),r.a.createElement("p",null,"Please contact the owner of the site that linked you to the original URL and let them know their link is broken.")))))}}}]);
\ No newline at end of file
diff --git a/146.8a68f42a.js b/131.5d0a1cd2.js
similarity index 96%
rename from 146.8a68f42a.js
rename to 131.5d0a1cd2.js
index f241b47..eb10f74 100644
--- a/146.8a68f42a.js
+++ b/131.5d0a1cd2.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[146],{230:function(e,t,n){"use strict";n.r(t);var i=n(304),a=n.n(i),s=n(307);n(308)(s),n(309)(s),n(310)(s);var r=s;r.tokenizer.separator=/[\s\-/]+/;var l=function(){function e(e,t){this.searchDocs=e,this.lunrIndex=r.Index.load(t)}var t=e.prototype;return t.getLunrResult=function(e){return this.lunrIndex.query((function(t){var n=r.tokenizer(e);t.term(n,{boost:10}),t.term(n,{wildcard:r.Query.wildcard.TRAILING})}))},t.getHit=function(e,t,n){return{hierarchy:{lvl0:e.pageTitle||e.title,lvl1:0===e.type?null:e.title},url:e.url,_snippetResult:n?{content:{value:n,matchLevel:"full"}}:null,_highlightResult:{hierarchy:{lvl0:{value:0===e.type?t||e.title:e.pageTitle},lvl1:0===e.type?null:{value:t||e.title}}}}},t.getTitleHit=function(e,t,n){var i=t[0],a=t[0]+n,s=e.title.substring(0,i)+'<span class="algolia-docsearch-suggestion--highlight">'+e.title.substring(i,a)+"</span>"+e.title.substring(a,e.title.length);return this.getHit(e,s)},t.getKeywordHit=function(e,t,n){var i=t[0],a=t[0]+n,s=e.title+"<br /><i>Keywords: "+e.keywords.substring(0,i)+'<span class="algolia-docsearch-suggestion--highlight">'+e.keywords.substring(i,a)+"</span>"+e.keywords.substring(a,e.keywords.length)+"</i>";return this.getHit(e,s)},t.getContentHit=function(e,t){for(var n=t[0],i=t[0]+t[1],a=n,s=i,r=!0,l=!0,o=0;o<3;o++){var u=e.content.lastIndexOf(" ",a-2),c=e.content.lastIndexOf(".",a-2);if(c>0&&c>u){a=c+1,r=!1;break}if(u<0){a=0,r=!1;break}a=u+1}for(var h=0;h<10;h++){var g=e.content.indexOf(" ",s+1),d=e.content.indexOf(".",s+1);if(d>0&&d<g){s=d,l=!1;break}if(g<0){s=e.content.length,l=!1;break}s=g}var p=e.content.substring(a,n);return r&&(p="... "+p),p+='<span class="algolia-docsearch-suggestion--highlight">'+e.content.substring(n,i)+"</span>",p+=e.content.substring(i,s),l&&(p+=" ..."),this.getHit(e,null,p)},t.search=function(e){var t=this;return new Promise((function(n,i){var a=t.getLunrResult(e),s=[];a.length>5&&(a.length=5),t.titleHitsRes=[],t.contentHitsRes=[],a.forEach((function(n){var i=t.searchDocs[n.ref],a=n.matchData.metadata;for(var r in a)if(a[r].title){if(!t.titleHitsRes.includes(n.ref)){var l=a[r].title.position[0];s.push(t.getTitleHit(i,l,e.length)),t.titleHitsRes.push(n.ref)}}else if(a[r].content){var o=a[r].content.position[0];s.push(t.getContentHit(i,o))}else if(a[r].keywords){var u=a[r].keywords.position[0];s.push(t.getKeywordHit(i,u,e.length)),t.titleHitsRes.push(n.ref)}})),s.length>5&&(s.length=5),n(s)}))},e}(),o=n(311),u=n.n(o),c="algolia-docsearch",h=c+"-suggestion",g={suggestion:'\n  <a class="'+h+"\n    {{#isCategoryHeader}}"+h+"__main{{/isCategoryHeader}}\n    {{#isSubCategoryHeader}}"+h+'__secondary{{/isSubCategoryHeader}}\n    "\n    aria-label="Link to the result"\n    href="{{{url}}}"\n    >\n    <div class="'+h+'--category-header">\n        <span class="'+h+'--category-header-lvl0">{{{category}}}</span>\n    </div>\n    <div class="'+h+'--wrapper">\n      <div class="'+h+'--subcategory-column">\n        <span class="'+h+'--subcategory-column-text">{{{subcategory}}}</span>\n      </div>\n      {{#isTextOrSubcategoryNonEmpty}}\n      <div class="'+h+'--content">\n        <div class="'+h+'--subcategory-inline">{{{subcategory}}}</div>\n        <div class="'+h+'--title">{{{title}}}</div>\n        {{#text}}<div class="'+h+'--text">{{{text}}}</div>{{/text}}\n      </div>\n      {{/isTextOrSubcategoryNonEmpty}}\n    </div>\n  </a>\n  ',suggestionSimple:'\n  <div class="'+h+"\n    {{#isCategoryHeader}}"+h+"__main{{/isCategoryHeader}}\n    {{#isSubCategoryHeader}}"+h+'__secondary{{/isSubCategoryHeader}}\n    suggestion-layout-simple\n  ">\n    <div class="'+h+'--category-header">\n        {{^isLvl0}}\n        <span class="'+h+"--category-header-lvl0 "+h+'--category-header-item">{{{category}}}</span>\n          {{^isLvl1}}\n          {{^isLvl1EmptyOrDuplicate}}\n          <span class="'+h+"--category-header-lvl1 "+h+'--category-header-item">\n              {{{subcategory}}}\n          </span>\n          {{/isLvl1EmptyOrDuplicate}}\n          {{/isLvl1}}\n        {{/isLvl0}}\n        <div class="'+h+"--title "+h+'--category-header-item">\n            {{#isLvl2}}\n                {{{title}}}\n            {{/isLvl2}}\n            {{#isLvl1}}\n                {{{subcategory}}}\n            {{/isLvl1}}\n            {{#isLvl0}}\n                {{{category}}}\n            {{/isLvl0}}\n        </div>\n    </div>\n    <div class="'+h+'--wrapper">\n      {{#text}}\n      <div class="'+h+'--content">\n        <div class="'+h+'--text">{{{text}}}</div>\n      </div>\n      {{/text}}\n    </div>\n  </div>\n  ',footer:'\n    <div class="algolia-docsearch-footer">\n    </div>\n  ',empty:'\n  <div class="'+h+'">\n    <div class="'+h+'--wrapper">\n        <div class="'+h+"--content "+h+'--no-results">\n            <div class="'+h+'--title">\n                <div class="'+h+'--text">\n                    No results found for query <b>"{{query}}"</b>\n                </div>\n            </div>\n        </div>\n    </div>\n  </div>\n  ',searchBox:'\n  <form novalidate="novalidate" onsubmit="return false;" class="searchbox">\n    <div role="search" class="searchbox__wrapper">\n      <input id="docsearch" type="search" name="search" placeholder="Search the docs" autocomplete="off" required="required" class="searchbox__input"/>\n      <button type="submit" title="Submit your search query." class="searchbox__submit" >\n        <svg width=12 height=12 role="img" aria-label="Search">\n          <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sbx-icon-search-13"></use>\n        </svg>\n      </button>\n      <button type="reset" title="Clear the search query." class="searchbox__reset hide">\n        <svg width=12 height=12 role="img" aria-label="Reset">\n          <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sbx-icon-clear-3"></use>\n        </svg>\n      </button>\n    </div>\n</form>\n\n<div class="svg-icons" style="height: 0; width: 0; position: absolute; visibility: hidden">\n  <svg xmlns="http://www.w3.org/2000/svg">\n    <symbol id="sbx-icon-clear-3" viewBox="0 0 40 40"><path d="M16.228 20L1.886 5.657 0 3.772 3.772 0l1.885 1.886L20 16.228 34.343 1.886 36.228 0 40 3.772l-1.886 1.885L23.772 20l14.342 14.343L40 36.228 36.228 40l-1.885-1.886L20 23.772 5.657 38.114 3.772 40 0 36.228l1.886-1.885L16.228 20z" fill-rule="evenodd"></symbol>\n    <symbol id="sbx-icon-search-13" viewBox="0 0 40 40"><path d="M26.806 29.012a16.312 16.312 0 0 1-10.427 3.746C7.332 32.758 0 25.425 0 16.378 0 7.334 7.333 0 16.38 0c9.045 0 16.378 7.333 16.378 16.38 0 3.96-1.406 7.593-3.746 10.426L39.547 37.34c.607.608.61 1.59-.004 2.203a1.56 1.56 0 0 1-2.202.004L26.807 29.012zm-10.427.627c7.322 0 13.26-5.938 13.26-13.26 0-7.324-5.938-13.26-13.26-13.26-7.324 0-13.26 5.936-13.26 13.26 0 7.322 5.936 13.26 13.26 13.26z" fill-rule="evenodd"></symbol>\n  </svg>\n</div>\n  '},d=n(256),p=n.n(d),v={mergeKeyWithParent:function(e,t){if(void 0===e[t])return e;if("object"!=typeof e[t])return e;var n=p.a.extend({},e,e[t]);return delete n[t],n},groupBy:function(e,t){var n={};return p.a.each(e,(function(e,i){if(void 0===i[t])throw new Error("[groupBy]: Object has no key "+t);var a=i[t];"string"==typeof a&&(a=a.toLowerCase()),Object.prototype.hasOwnProperty.call(n,a)||(n[a]=[]),n[a].push(i)})),n},values:function(e){return Object.keys(e).map((function(t){return e[t]}))},flatten:function(e){var t=[];return e.forEach((function(e){Array.isArray(e)?e.forEach((function(e){t.push(e)})):t.push(e)})),t},flattenAndFlagFirst:function(e,t){var n=this.values(e).map((function(e){return e.map((function(e,n){return e[t]=0===n,e}))}));return this.flatten(n)},compact:function(e){var t=[];return e.forEach((function(e){e&&t.push(e)})),t},getHighlightedValue:function(e,t){return e._highlightResult&&e._highlightResult.hierarchy_camel&&e._highlightResult.hierarchy_camel[t]&&e._highlightResult.hierarchy_camel[t].matchLevel&&"none"!==e._highlightResult.hierarchy_camel[t].matchLevel&&e._highlightResult.hierarchy_camel[t].value?e._highlightResult.hierarchy_camel[t].value:e._highlightResult&&e._highlightResult&&e._highlightResult[t]&&e._highlightResult[t].value?e._highlightResult[t].value:e[t]},getSnippetedValue:function(e,t){if(!e._snippetResult||!e._snippetResult[t]||!e._snippetResult[t].value)return e[t];var n=e._snippetResult[t].value;return n[0]!==n[0].toUpperCase()&&(n="\u2026"+n),-1===[".","!","?"].indexOf(n[n.length-1])&&(n+="\u2026"),n},deepClone:function(e){return JSON.parse(JSON.stringify(e))}},f=function(){function e(t){var n=t.searchDocs,i=t.searchIndex,a=t.inputSelector,s=t.debug,r=void 0!==s&&s,o=t.queryDataCallback,c=void 0===o?null:o,h=t.autocompleteOptions,d=void 0===h?{debug:!1,hint:!1,autoselect:!0}:h,v=t.transformData,f=void 0!==v&&v,y=t.queryHook,m=void 0!==y&&y,b=t.handleSelected,x=void 0!==b&&b,w=t.enhancedSearchInput,_=void 0!==w&&w,S=t.layout,H=void 0===S?"collumns":S;this.input=e.getInputFromSelector(a),this.queryDataCallback=c||null;var L=!(!d||!d.debug)&&d.debug;d.debug=r||L,this.autocompleteOptions=d,this.autocompleteOptions.cssClasses=this.autocompleteOptions.cssClasses||{},this.autocompleteOptions.cssClasses.prefix=this.autocompleteOptions.cssClasses.prefix||"ds";var C=this.input&&"function"==typeof this.input.attr&&this.input.attr("aria-label");this.autocompleteOptions.ariaLabel=this.autocompleteOptions.ariaLabel||C||"search input",this.isSimpleLayout="simple"===H,this.client=new l(n,i),_&&(this.input=e.injectSearchBox(this.input)),this.autocomplete=u()(this.input,d,[{source:this.getAutocompleteSource(f,m),templates:{suggestion:e.getSuggestionTemplate(this.isSimpleLayout),footer:g.footer,empty:e.getEmptyTemplate()}}]);var k=x;this.handleSelected=k||this.handleSelected,k&&p()(".algolia-autocomplete").on("click",".ds-suggestions a",(function(e){e.preventDefault()})),this.autocomplete.on("autocomplete:selected",this.handleSelected.bind(null,this.autocomplete.autocomplete)),this.autocomplete.on("autocomplete:shown",this.handleShown.bind(null,this.input)),_&&e.bindSearchBoxEvent()}e.injectSearchBox=function(e){e.before(g.searchBox);var t=e.prev().prev().find("input");return e.remove(),t},e.bindSearchBoxEvent=function(){p()('.searchbox [type="reset"]').on("click",(function(){p()("input#docsearch").focus(),p()(this).addClass("hide"),u.a.autocomplete.setVal("")})),p()("input#docsearch").on("keyup",(function(){var e=document.querySelector("input#docsearch"),t=document.querySelector('.searchbox [type="reset"]');t.className="searchbox__reset",0===e.value.length&&(t.className+=" hide")}))},e.getInputFromSelector=function(e){var t=p()(e).filter("input");return t.length?p()(t[0]):null};var t=e.prototype;return t.getAutocompleteSource=function(t,n){var i=this;return function(a,s){n&&(a=n(a)||a),i.client.search(a).then((function(n){i.queryDataCallback&&"function"==typeof i.queryDataCallback&&i.queryDataCallback(n),t&&(n=t(n)||n),s(e.formatHits(n))}))}},e.formatHits=function(t){var n=v.deepClone(t).map((function(e){return e._highlightResult&&(e._highlightResult=v.mergeKeyWithParent(e._highlightResult,"hierarchy")),v.mergeKeyWithParent(e,"hierarchy")})),i=v.groupBy(n,"lvl0");return p.a.each(i,(function(e,t){var n=v.groupBy(t,"lvl1"),a=v.flattenAndFlagFirst(n,"isSubCategoryHeader");i[e]=a})),(i=v.flattenAndFlagFirst(i,"isCategoryHeader")).map((function(t){var n=e.formatURL(t),i=v.getHighlightedValue(t,"lvl0"),a=v.getHighlightedValue(t,"lvl1")||i,s=v.compact([v.getHighlightedValue(t,"lvl2")||a,v.getHighlightedValue(t,"lvl3"),v.getHighlightedValue(t,"lvl4"),v.getHighlightedValue(t,"lvl5"),v.getHighlightedValue(t,"lvl6")]).join('<span class="aa-suggestion-title-separator" aria-hidden="true"> \u203a </span>'),r=v.getSnippetedValue(t,"content"),l=a&&""!==a||s&&""!==s,o=s&&""!==s&&s!==a,u=!o&&a&&""!==a&&a!==i;return{isLvl0:!u&&!o,isLvl1:u,isLvl2:o,isLvl1EmptyOrDuplicate:!a||""===a||a===i,isCategoryHeader:t.isCategoryHeader,isSubCategoryHeader:t.isSubCategoryHeader,isTextOrSubcategoryNonEmpty:l,category:i,subcategory:a,title:s,text:r,url:n}}))},e.formatURL=function(e){var t=e.url,n=e.anchor;return t?-1!==t.indexOf("#")?t:n?e.url+"#"+e.anchor:t:n?"#"+e.anchor:(console.warn("no anchor nor url for : ",JSON.stringify(e)),null)},e.getEmptyTemplate=function(){return function(e){return a.a.compile(g.empty).render(e)}},e.getSuggestionTemplate=function(e){var t=e?g.suggestionSimple:g.suggestion,n=a.a.compile(t);return function(e){return n.render(e)}},t.handleSelected=function(e,t,n,i,a){void 0===a&&(a={}),"click"!==a.selectionMethod&&(e.setVal(""),window.location.assign(n.url))},t.handleShown=function(e){var t=e.offset().left+e.width()/2,n=p()(document).width()/2;isNaN(n)&&(n=900);var i=t-n>=0?"algolia-autocomplete-right":"algolia-autocomplete-left",a=t-n<0?"algolia-autocomplete-right":"algolia-autocomplete-left",s=p()(".algolia-autocomplete");s.hasClass(i)||s.addClass(i),s.hasClass(a)&&s.removeClass(a)},e}();t.default=f},316:function(e,t){}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[131],{208:function(e,t,n){"use strict";n.r(t);var i=n(287),a=n.n(i),s=n(290);n(291)(s),n(292)(s),n(293)(s);var r=s;r.tokenizer.separator=/[\s\-/]+/;var l=function(){function e(e,t){this.searchDocs=e,this.lunrIndex=r.Index.load(t)}var t=e.prototype;return t.getLunrResult=function(e){return this.lunrIndex.query((function(t){var n=r.tokenizer(e);t.term(n,{boost:10}),t.term(n,{wildcard:r.Query.wildcard.TRAILING})}))},t.getHit=function(e,t,n){return{hierarchy:{lvl0:e.pageTitle||e.title,lvl1:0===e.type?null:e.title},url:e.url,_snippetResult:n?{content:{value:n,matchLevel:"full"}}:null,_highlightResult:{hierarchy:{lvl0:{value:0===e.type?t||e.title:e.pageTitle},lvl1:0===e.type?null:{value:t||e.title}}}}},t.getTitleHit=function(e,t,n){var i=t[0],a=t[0]+n,s=e.title.substring(0,i)+'<span class="algolia-docsearch-suggestion--highlight">'+e.title.substring(i,a)+"</span>"+e.title.substring(a,e.title.length);return this.getHit(e,s)},t.getKeywordHit=function(e,t,n){var i=t[0],a=t[0]+n,s=e.title+"<br /><i>Keywords: "+e.keywords.substring(0,i)+'<span class="algolia-docsearch-suggestion--highlight">'+e.keywords.substring(i,a)+"</span>"+e.keywords.substring(a,e.keywords.length)+"</i>";return this.getHit(e,s)},t.getContentHit=function(e,t){for(var n=t[0],i=t[0]+t[1],a=n,s=i,r=!0,l=!0,o=0;o<3;o++){var u=e.content.lastIndexOf(" ",a-2),c=e.content.lastIndexOf(".",a-2);if(c>0&&c>u){a=c+1,r=!1;break}if(u<0){a=0,r=!1;break}a=u+1}for(var h=0;h<10;h++){var g=e.content.indexOf(" ",s+1),d=e.content.indexOf(".",s+1);if(d>0&&d<g){s=d,l=!1;break}if(g<0){s=e.content.length,l=!1;break}s=g}var p=e.content.substring(a,n);return r&&(p="... "+p),p+='<span class="algolia-docsearch-suggestion--highlight">'+e.content.substring(n,i)+"</span>",p+=e.content.substring(i,s),l&&(p+=" ..."),this.getHit(e,null,p)},t.search=function(e){var t=this;return new Promise((function(n,i){var a=t.getLunrResult(e),s=[];a.length>5&&(a.length=5),t.titleHitsRes=[],t.contentHitsRes=[],a.forEach((function(n){var i=t.searchDocs[n.ref],a=n.matchData.metadata;for(var r in a)if(a[r].title){if(!t.titleHitsRes.includes(n.ref)){var l=a[r].title.position[0];s.push(t.getTitleHit(i,l,e.length)),t.titleHitsRes.push(n.ref)}}else if(a[r].content){var o=a[r].content.position[0];s.push(t.getContentHit(i,o))}else if(a[r].keywords){var u=a[r].keywords.position[0];s.push(t.getKeywordHit(i,u,e.length)),t.titleHitsRes.push(n.ref)}})),s.length>5&&(s.length=5),n(s)}))},e}(),o=n(294),u=n.n(o),c="algolia-docsearch",h=c+"-suggestion",g={suggestion:'\n  <a class="'+h+"\n    {{#isCategoryHeader}}"+h+"__main{{/isCategoryHeader}}\n    {{#isSubCategoryHeader}}"+h+'__secondary{{/isSubCategoryHeader}}\n    "\n    aria-label="Link to the result"\n    href="{{{url}}}"\n    >\n    <div class="'+h+'--category-header">\n        <span class="'+h+'--category-header-lvl0">{{{category}}}</span>\n    </div>\n    <div class="'+h+'--wrapper">\n      <div class="'+h+'--subcategory-column">\n        <span class="'+h+'--subcategory-column-text">{{{subcategory}}}</span>\n      </div>\n      {{#isTextOrSubcategoryNonEmpty}}\n      <div class="'+h+'--content">\n        <div class="'+h+'--subcategory-inline">{{{subcategory}}}</div>\n        <div class="'+h+'--title">{{{title}}}</div>\n        {{#text}}<div class="'+h+'--text">{{{text}}}</div>{{/text}}\n      </div>\n      {{/isTextOrSubcategoryNonEmpty}}\n    </div>\n  </a>\n  ',suggestionSimple:'\n  <div class="'+h+"\n    {{#isCategoryHeader}}"+h+"__main{{/isCategoryHeader}}\n    {{#isSubCategoryHeader}}"+h+'__secondary{{/isSubCategoryHeader}}\n    suggestion-layout-simple\n  ">\n    <div class="'+h+'--category-header">\n        {{^isLvl0}}\n        <span class="'+h+"--category-header-lvl0 "+h+'--category-header-item">{{{category}}}</span>\n          {{^isLvl1}}\n          {{^isLvl1EmptyOrDuplicate}}\n          <span class="'+h+"--category-header-lvl1 "+h+'--category-header-item">\n              {{{subcategory}}}\n          </span>\n          {{/isLvl1EmptyOrDuplicate}}\n          {{/isLvl1}}\n        {{/isLvl0}}\n        <div class="'+h+"--title "+h+'--category-header-item">\n            {{#isLvl2}}\n                {{{title}}}\n            {{/isLvl2}}\n            {{#isLvl1}}\n                {{{subcategory}}}\n            {{/isLvl1}}\n            {{#isLvl0}}\n                {{{category}}}\n            {{/isLvl0}}\n        </div>\n    </div>\n    <div class="'+h+'--wrapper">\n      {{#text}}\n      <div class="'+h+'--content">\n        <div class="'+h+'--text">{{{text}}}</div>\n      </div>\n      {{/text}}\n    </div>\n  </div>\n  ',footer:'\n    <div class="algolia-docsearch-footer">\n    </div>\n  ',empty:'\n  <div class="'+h+'">\n    <div class="'+h+'--wrapper">\n        <div class="'+h+"--content "+h+'--no-results">\n            <div class="'+h+'--title">\n                <div class="'+h+'--text">\n                    No results found for query <b>"{{query}}"</b>\n                </div>\n            </div>\n        </div>\n    </div>\n  </div>\n  ',searchBox:'\n  <form novalidate="novalidate" onsubmit="return false;" class="searchbox">\n    <div role="search" class="searchbox__wrapper">\n      <input id="docsearch" type="search" name="search" placeholder="Search the docs" autocomplete="off" required="required" class="searchbox__input"/>\n      <button type="submit" title="Submit your search query." class="searchbox__submit" >\n        <svg width=12 height=12 role="img" aria-label="Search">\n          <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sbx-icon-search-13"></use>\n        </svg>\n      </button>\n      <button type="reset" title="Clear the search query." class="searchbox__reset hide">\n        <svg width=12 height=12 role="img" aria-label="Reset">\n          <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sbx-icon-clear-3"></use>\n        </svg>\n      </button>\n    </div>\n</form>\n\n<div class="svg-icons" style="height: 0; width: 0; position: absolute; visibility: hidden">\n  <svg xmlns="http://www.w3.org/2000/svg">\n    <symbol id="sbx-icon-clear-3" viewBox="0 0 40 40"><path d="M16.228 20L1.886 5.657 0 3.772 3.772 0l1.885 1.886L20 16.228 34.343 1.886 36.228 0 40 3.772l-1.886 1.885L23.772 20l14.342 14.343L40 36.228 36.228 40l-1.885-1.886L20 23.772 5.657 38.114 3.772 40 0 36.228l1.886-1.885L16.228 20z" fill-rule="evenodd"></symbol>\n    <symbol id="sbx-icon-search-13" viewBox="0 0 40 40"><path d="M26.806 29.012a16.312 16.312 0 0 1-10.427 3.746C7.332 32.758 0 25.425 0 16.378 0 7.334 7.333 0 16.38 0c9.045 0 16.378 7.333 16.378 16.38 0 3.96-1.406 7.593-3.746 10.426L39.547 37.34c.607.608.61 1.59-.004 2.203a1.56 1.56 0 0 1-2.202.004L26.807 29.012zm-10.427.627c7.322 0 13.26-5.938 13.26-13.26 0-7.324-5.938-13.26-13.26-13.26-7.324 0-13.26 5.936-13.26 13.26 0 7.322 5.936 13.26 13.26 13.26z" fill-rule="evenodd"></symbol>\n  </svg>\n</div>\n  '},d=n(239),p=n.n(d),v={mergeKeyWithParent:function(e,t){if(void 0===e[t])return e;if("object"!=typeof e[t])return e;var n=p.a.extend({},e,e[t]);return delete n[t],n},groupBy:function(e,t){var n={};return p.a.each(e,(function(e,i){if(void 0===i[t])throw new Error("[groupBy]: Object has no key "+t);var a=i[t];"string"==typeof a&&(a=a.toLowerCase()),Object.prototype.hasOwnProperty.call(n,a)||(n[a]=[]),n[a].push(i)})),n},values:function(e){return Object.keys(e).map((function(t){return e[t]}))},flatten:function(e){var t=[];return e.forEach((function(e){Array.isArray(e)?e.forEach((function(e){t.push(e)})):t.push(e)})),t},flattenAndFlagFirst:function(e,t){var n=this.values(e).map((function(e){return e.map((function(e,n){return e[t]=0===n,e}))}));return this.flatten(n)},compact:function(e){var t=[];return e.forEach((function(e){e&&t.push(e)})),t},getHighlightedValue:function(e,t){return e._highlightResult&&e._highlightResult.hierarchy_camel&&e._highlightResult.hierarchy_camel[t]&&e._highlightResult.hierarchy_camel[t].matchLevel&&"none"!==e._highlightResult.hierarchy_camel[t].matchLevel&&e._highlightResult.hierarchy_camel[t].value?e._highlightResult.hierarchy_camel[t].value:e._highlightResult&&e._highlightResult&&e._highlightResult[t]&&e._highlightResult[t].value?e._highlightResult[t].value:e[t]},getSnippetedValue:function(e,t){if(!e._snippetResult||!e._snippetResult[t]||!e._snippetResult[t].value)return e[t];var n=e._snippetResult[t].value;return n[0]!==n[0].toUpperCase()&&(n="\u2026"+n),-1===[".","!","?"].indexOf(n[n.length-1])&&(n+="\u2026"),n},deepClone:function(e){return JSON.parse(JSON.stringify(e))}},f=function(){function e(t){var n=t.searchDocs,i=t.searchIndex,a=t.inputSelector,s=t.debug,r=void 0!==s&&s,o=t.queryDataCallback,c=void 0===o?null:o,h=t.autocompleteOptions,d=void 0===h?{debug:!1,hint:!1,autoselect:!0}:h,v=t.transformData,f=void 0!==v&&v,y=t.queryHook,m=void 0!==y&&y,b=t.handleSelected,x=void 0!==b&&b,w=t.enhancedSearchInput,_=void 0!==w&&w,S=t.layout,H=void 0===S?"collumns":S;this.input=e.getInputFromSelector(a),this.queryDataCallback=c||null;var L=!(!d||!d.debug)&&d.debug;d.debug=r||L,this.autocompleteOptions=d,this.autocompleteOptions.cssClasses=this.autocompleteOptions.cssClasses||{},this.autocompleteOptions.cssClasses.prefix=this.autocompleteOptions.cssClasses.prefix||"ds";var C=this.input&&"function"==typeof this.input.attr&&this.input.attr("aria-label");this.autocompleteOptions.ariaLabel=this.autocompleteOptions.ariaLabel||C||"search input",this.isSimpleLayout="simple"===H,this.client=new l(n,i),_&&(this.input=e.injectSearchBox(this.input)),this.autocomplete=u()(this.input,d,[{source:this.getAutocompleteSource(f,m),templates:{suggestion:e.getSuggestionTemplate(this.isSimpleLayout),footer:g.footer,empty:e.getEmptyTemplate()}}]);var k=x;this.handleSelected=k||this.handleSelected,k&&p()(".algolia-autocomplete").on("click",".ds-suggestions a",(function(e){e.preventDefault()})),this.autocomplete.on("autocomplete:selected",this.handleSelected.bind(null,this.autocomplete.autocomplete)),this.autocomplete.on("autocomplete:shown",this.handleShown.bind(null,this.input)),_&&e.bindSearchBoxEvent()}e.injectSearchBox=function(e){e.before(g.searchBox);var t=e.prev().prev().find("input");return e.remove(),t},e.bindSearchBoxEvent=function(){p()('.searchbox [type="reset"]').on("click",(function(){p()("input#docsearch").focus(),p()(this).addClass("hide"),u.a.autocomplete.setVal("")})),p()("input#docsearch").on("keyup",(function(){var e=document.querySelector("input#docsearch"),t=document.querySelector('.searchbox [type="reset"]');t.className="searchbox__reset",0===e.value.length&&(t.className+=" hide")}))},e.getInputFromSelector=function(e){var t=p()(e).filter("input");return t.length?p()(t[0]):null};var t=e.prototype;return t.getAutocompleteSource=function(t,n){var i=this;return function(a,s){n&&(a=n(a)||a),i.client.search(a).then((function(n){i.queryDataCallback&&"function"==typeof i.queryDataCallback&&i.queryDataCallback(n),t&&(n=t(n)||n),s(e.formatHits(n))}))}},e.formatHits=function(t){var n=v.deepClone(t).map((function(e){return e._highlightResult&&(e._highlightResult=v.mergeKeyWithParent(e._highlightResult,"hierarchy")),v.mergeKeyWithParent(e,"hierarchy")})),i=v.groupBy(n,"lvl0");return p.a.each(i,(function(e,t){var n=v.groupBy(t,"lvl1"),a=v.flattenAndFlagFirst(n,"isSubCategoryHeader");i[e]=a})),(i=v.flattenAndFlagFirst(i,"isCategoryHeader")).map((function(t){var n=e.formatURL(t),i=v.getHighlightedValue(t,"lvl0"),a=v.getHighlightedValue(t,"lvl1")||i,s=v.compact([v.getHighlightedValue(t,"lvl2")||a,v.getHighlightedValue(t,"lvl3"),v.getHighlightedValue(t,"lvl4"),v.getHighlightedValue(t,"lvl5"),v.getHighlightedValue(t,"lvl6")]).join('<span class="aa-suggestion-title-separator" aria-hidden="true"> \u203a </span>'),r=v.getSnippetedValue(t,"content"),l=a&&""!==a||s&&""!==s,o=s&&""!==s&&s!==a,u=!o&&a&&""!==a&&a!==i;return{isLvl0:!u&&!o,isLvl1:u,isLvl2:o,isLvl1EmptyOrDuplicate:!a||""===a||a===i,isCategoryHeader:t.isCategoryHeader,isSubCategoryHeader:t.isSubCategoryHeader,isTextOrSubcategoryNonEmpty:l,category:i,subcategory:a,title:s,text:r,url:n}}))},e.formatURL=function(e){var t=e.url,n=e.anchor;return t?-1!==t.indexOf("#")?t:n?e.url+"#"+e.anchor:t:n?"#"+e.anchor:(console.warn("no anchor nor url for : ",JSON.stringify(e)),null)},e.getEmptyTemplate=function(){return function(e){return a.a.compile(g.empty).render(e)}},e.getSuggestionTemplate=function(e){var t=e?g.suggestionSimple:g.suggestion,n=a.a.compile(t);return function(e){return n.render(e)}},t.handleSelected=function(e,t,n,i,a){void 0===a&&(a={}),"click"!==a.selectionMethod&&(e.setVal(""),window.location.assign(n.url))},t.handleShown=function(e){var t=e.offset().left+e.width()/2,n=p()(document).width()/2;isNaN(n)&&(n=900);var i=t-n>=0?"algolia-autocomplete-right":"algolia-autocomplete-left",a=t-n<0?"algolia-autocomplete-right":"algolia-autocomplete-left",s=p()(".algolia-autocomplete");s.hasClass(i)||s.addClass(i),s.hasClass(a)&&s.removeClass(a)},e}();t.default=f},299:function(e,t){}}]);
\ No newline at end of file
diff --git a/17896441.57b41a63.js b/17896441.be8f95bf.js
similarity index 93%
rename from 17896441.57b41a63.js
rename to 17896441.be8f95bf.js
index 73d6972..8f3b581 100644
--- a/17896441.57b41a63.js
+++ b/17896441.be8f95bf.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[11],{207:function(e,t,a){"use strict";a.r(t);var n=a(0),l=a.n(n),r=a(25),c=a(210),i=a(22),o=a(216),m=a(213);var s=function(e){var t=e.metadata;return l.a.createElement("nav",{className:"pagination-nav","aria-label":"Blog list page navigation"},l.a.createElement("div",{className:"pagination-nav__item"},t.previous&&l.a.createElement(m.a,{className:"pagination-nav__link",to:t.previous.permalink},l.a.createElement("div",{className:"pagination-nav__sublabel"},"Previous"),l.a.createElement("div",{className:"pagination-nav__label"},"\xab ",t.previous.title))),l.a.createElement("div",{className:"pagination-nav__item pagination-nav__item--next"},t.next&&l.a.createElement(m.a,{className:"pagination-nav__link",to:t.next.permalink},l.a.createElement("div",{className:"pagination-nav__sublabel"},"Next"),l.a.createElement("div",{className:"pagination-nav__label"},t.next.title," \xbb"))))},u=a(214);var d=function(){var e=Object(i.default)().siteConfig.title,t=Object(u.useActivePlugin)({failfast:!0}).pluginId,a=Object(c.useDocsPreferredVersion)(t).savePreferredVersionName,n=Object(u.useActiveVersion)(t),r=Object(u.useDocVersionSuggestions)(t),o=r.latestDocSuggestion,s=r.latestVersionSuggestion;if(!s)return l.a.createElement(l.a.Fragment,null);var d,v=null!=o?o:(d=s).docs.find((function(e){return e.id===d.mainDocId}));return l.a.createElement("div",{className:"alert alert--warning margin-bottom--md",role:"alert"},"current"===n.name?l.a.createElement("div",null,"This is unreleased documentation for ",e," ",l.a.createElement("strong",null,n.label)," version."):l.a.createElement("div",null,"This is documentation for ",e," ",l.a.createElement("strong",null,n.label),", which is no longer actively maintained."),l.a.createElement("div",{className:"margin-top--md"},"For up-to-date documentation, see the"," ",l.a.createElement("strong",null,l.a.createElement(m.a,{to:v.path,onClick:function(){return a(s.name)}},"latest version"))," ","(",s.label,")."))},v=a(260),E=a(3),g=a(7),f=a(211),p=a(76),b=a.n(p),N=function(e){var t=e.className,a=Object(g.a)(e,["className"]);return l.a.createElement("svg",Object(E.a)({fill:"currentColor",height:"1.2em",width:"1.2em",preserveAspectRatio:"xMidYMid meet",role:"img",viewBox:"0 0 40 40",className:Object(f.a)(b.a.iconEdit,t)},a),l.a.createElement("g",null,l.a.createElement("path",{d:"m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"})))},h=a(77),_=a.n(h);t.default=function(e){var t,a=Object(i.default)().siteConfig.url,n=e.content,m=n.metadata,E=n.frontMatter,g=E.image,p=E.keywords,b=E.hide_title,h=E.hide_table_of_contents,O=m.description,j=m.title,w=m.permalink,k=m.editUrl,y=m.lastUpdatedAt,C=m.lastUpdatedBy,x=Object(u.useActivePlugin)({failfast:!0}).pluginId,L=Object(u.useVersions)(x),I=Object(u.useActiveVersion)(x),A=L.length>1,S=Object(c.useTitleFormatter)(j),V=Object(o.a)(g,{absolute:!0});return l.a.createElement(l.a.Fragment,null,l.a.createElement(r.a,null,l.a.createElement("title",null,S),l.a.createElement("meta",{property:"og:title",content:S}),O&&l.a.createElement("meta",{name:"description",content:O}),O&&l.a.createElement("meta",{property:"og:description",content:O}),p&&p.length&&l.a.createElement("meta",{name:"keywords",content:p.join(",")}),g&&l.a.createElement("meta",{property:"og:image",content:V}),g&&l.a.createElement("meta",{name:"twitter:image",content:V}),g&&l.a.createElement("meta",{name:"twitter:image:alt",content:"Image for "+j}),w&&l.a.createElement("meta",{property:"og:url",content:a+w}),w&&l.a.createElement("link",{rel:"canonical",href:a+w})),l.a.createElement("div",{className:"row"},l.a.createElement("div",{className:Object(f.a)("col",(t={},t[_.a.docItemCol]=!h,t))},l.a.createElement(d,null),l.a.createElement("div",{className:_.a.docItemContainer},l.a.createElement("article",null,A&&l.a.createElement("div",null,l.a.createElement("span",{className:"badge badge--secondary"},"Version: ",I.label)),!b&&l.a.createElement("header",null,l.a.createElement("h1",{className:_.a.docTitle},j)),l.a.createElement("div",{className:"markdown"},l.a.createElement(n,null))),(k||y||C)&&l.a.createElement("div",{className:"margin-vert--xl"},l.a.createElement("div",{className:"row"},l.a.createElement("div",{className:"col"},k&&l.a.createElement("a",{href:k,target:"_blank",rel:"noreferrer noopener"},l.a.createElement(N,null),"Edit this page")),(y||C)&&l.a.createElement("div",{className:"col text--right"},l.a.createElement("em",null,l.a.createElement("small",null,"Last updated"," ",y&&l.a.createElement(l.a.Fragment,null,"on"," ",l.a.createElement("time",{dateTime:new Date(1e3*y).toISOString(),className:_.a.docLastUpdatedAt},new Date(1e3*y).toLocaleDateString()),C&&" "),C&&l.a.createElement(l.a.Fragment,null,"by ",l.a.createElement("strong",null,C)),!1))))),l.a.createElement("div",{className:"margin-vert--lg"},l.a.createElement(s,{metadata:m})))),!h&&n.toc&&l.a.createElement("div",{className:"col col--3"},l.a.createElement(v.a,{toc:n.toc}))))}},260:function(e,t,a){"use strict";var n=a(0),l=a.n(n),r=a(211);var c=function(e,t,a){var l=Object(n.useState)(void 0),r=l[0],c=l[1];Object(n.useEffect)((function(){function n(){var n=function(){var e=Array.from(document.getElementsByClassName("anchor")),t=e.find((function(e){return e.getBoundingClientRect().top>=a}));if(t){if(t.getBoundingClientRect().top>=a){var n=e[e.indexOf(t)-1];return null!=n?n:t}return t}return e[e.length-1]}();if(n)for(var l=0,i=!1,o=document.getElementsByClassName(e);l<o.length&&!i;){var m=o[l],s=m.href,u=decodeURIComponent(s.substring(s.indexOf("#")+1));n.id===u&&(r&&r.classList.remove(t),m.classList.add(t),c(m),i=!0),l+=1}}return document.addEventListener("scroll",n),document.addEventListener("resize",n),n(),function(){document.removeEventListener("scroll",n),document.removeEventListener("resize",n)}}))},i=a(55),o=a.n(i),m="table-of-contents__link";function s(e){var t=e.toc,a=e.isChild;return t.length?l.a.createElement("ul",{className:a?"":"table-of-contents table-of-contents__left-border"},t.map((function(e){return l.a.createElement("li",{key:e.id},l.a.createElement("a",{href:"#"+e.id,className:m,dangerouslySetInnerHTML:{__html:e.value}}),l.a.createElement(s,{isChild:!0,toc:e.children}))}))):null}t.a=function(e){var t=e.toc;return c(m,"table-of-contents__link--active",100),l.a.createElement("div",{className:Object(r.a)(o.a.tableOfContents,"thin-scrollbar")},l.a.createElement(s,{toc:t}))}}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[11],{192:function(e,t,a){"use strict";a.r(t);var n=a(0),l=a.n(n),r=a(25),c=a(195),i=a(22),o=a(201),m=a(198);var s=function(e){var t=e.metadata;return l.a.createElement("nav",{className:"pagination-nav","aria-label":"Blog list page navigation"},l.a.createElement("div",{className:"pagination-nav__item"},t.previous&&l.a.createElement(m.a,{className:"pagination-nav__link",to:t.previous.permalink},l.a.createElement("div",{className:"pagination-nav__sublabel"},"Previous"),l.a.createElement("div",{className:"pagination-nav__label"},"\xab ",t.previous.title))),l.a.createElement("div",{className:"pagination-nav__item pagination-nav__item--next"},t.next&&l.a.createElement(m.a,{className:"pagination-nav__link",to:t.next.permalink},l.a.createElement("div",{className:"pagination-nav__sublabel"},"Next"),l.a.createElement("div",{className:"pagination-nav__label"},t.next.title," \xbb"))))},u=a(199);var d=function(){var e=Object(i.default)().siteConfig.title,t=Object(u.useActivePlugin)({failfast:!0}).pluginId,a=Object(c.useDocsPreferredVersion)(t).savePreferredVersionName,n=Object(u.useActiveVersion)(t),r=Object(u.useDocVersionSuggestions)(t),o=r.latestDocSuggestion,s=r.latestVersionSuggestion;if(!s)return l.a.createElement(l.a.Fragment,null);var d,v=null!=o?o:(d=s).docs.find((function(e){return e.id===d.mainDocId}));return l.a.createElement("div",{className:"alert alert--warning margin-bottom--md",role:"alert"},"current"===n.name?l.a.createElement("div",null,"This is unreleased documentation for ",e," ",l.a.createElement("strong",null,n.label)," version."):l.a.createElement("div",null,"This is documentation for ",e," ",l.a.createElement("strong",null,n.label),", which is no longer actively maintained."),l.a.createElement("div",{className:"margin-top--md"},"For up-to-date documentation, see the"," ",l.a.createElement("strong",null,l.a.createElement(m.a,{to:v.path,onClick:function(){return a(s.name)}},"latest version"))," ","(",s.label,")."))},v=a(243),E=a(3),g=a(7),f=a(196),p=a(76),b=a.n(p),N=function(e){var t=e.className,a=Object(g.a)(e,["className"]);return l.a.createElement("svg",Object(E.a)({fill:"currentColor",height:"1.2em",width:"1.2em",preserveAspectRatio:"xMidYMid meet",role:"img",viewBox:"0 0 40 40",className:Object(f.a)(b.a.iconEdit,t)},a),l.a.createElement("g",null,l.a.createElement("path",{d:"m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"})))},h=a(77),_=a.n(h);t.default=function(e){var t,a=Object(i.default)().siteConfig.url,n=e.content,m=n.metadata,E=n.frontMatter,g=E.image,p=E.keywords,b=E.hide_title,h=E.hide_table_of_contents,O=m.description,j=m.title,w=m.permalink,k=m.editUrl,y=m.lastUpdatedAt,C=m.lastUpdatedBy,x=Object(u.useActivePlugin)({failfast:!0}).pluginId,L=Object(u.useVersions)(x),I=Object(u.useActiveVersion)(x),A=L.length>1,S=Object(c.useTitleFormatter)(j),V=Object(o.a)(g,{absolute:!0});return l.a.createElement(l.a.Fragment,null,l.a.createElement(r.a,null,l.a.createElement("title",null,S),l.a.createElement("meta",{property:"og:title",content:S}),O&&l.a.createElement("meta",{name:"description",content:O}),O&&l.a.createElement("meta",{property:"og:description",content:O}),p&&p.length&&l.a.createElement("meta",{name:"keywords",content:p.join(",")}),g&&l.a.createElement("meta",{property:"og:image",content:V}),g&&l.a.createElement("meta",{name:"twitter:image",content:V}),g&&l.a.createElement("meta",{name:"twitter:image:alt",content:"Image for "+j}),w&&l.a.createElement("meta",{property:"og:url",content:a+w}),w&&l.a.createElement("link",{rel:"canonical",href:a+w})),l.a.createElement("div",{className:"row"},l.a.createElement("div",{className:Object(f.a)("col",(t={},t[_.a.docItemCol]=!h,t))},l.a.createElement(d,null),l.a.createElement("div",{className:_.a.docItemContainer},l.a.createElement("article",null,A&&l.a.createElement("div",null,l.a.createElement("span",{className:"badge badge--secondary"},"Version: ",I.label)),!b&&l.a.createElement("header",null,l.a.createElement("h1",{className:_.a.docTitle},j)),l.a.createElement("div",{className:"markdown"},l.a.createElement(n,null))),(k||y||C)&&l.a.createElement("div",{className:"margin-vert--xl"},l.a.createElement("div",{className:"row"},l.a.createElement("div",{className:"col"},k&&l.a.createElement("a",{href:k,target:"_blank",rel:"noreferrer noopener"},l.a.createElement(N,null),"Edit this page")),(y||C)&&l.a.createElement("div",{className:"col text--right"},l.a.createElement("em",null,l.a.createElement("small",null,"Last updated"," ",y&&l.a.createElement(l.a.Fragment,null,"on"," ",l.a.createElement("time",{dateTime:new Date(1e3*y).toISOString(),className:_.a.docLastUpdatedAt},new Date(1e3*y).toLocaleDateString()),C&&" "),C&&l.a.createElement(l.a.Fragment,null,"by ",l.a.createElement("strong",null,C)),!1))))),l.a.createElement("div",{className:"margin-vert--lg"},l.a.createElement(s,{metadata:m})))),!h&&n.toc&&l.a.createElement("div",{className:"col col--3"},l.a.createElement(v.a,{toc:n.toc}))))}},243:function(e,t,a){"use strict";var n=a(0),l=a.n(n),r=a(196);var c=function(e,t,a){var l=Object(n.useState)(void 0),r=l[0],c=l[1];Object(n.useEffect)((function(){function n(){var n=function(){var e=Array.from(document.getElementsByClassName("anchor")),t=e.find((function(e){return e.getBoundingClientRect().top>=a}));if(t){if(t.getBoundingClientRect().top>=a){var n=e[e.indexOf(t)-1];return null!=n?n:t}return t}return e[e.length-1]}();if(n)for(var l=0,i=!1,o=document.getElementsByClassName(e);l<o.length&&!i;){var m=o[l],s=m.href,u=decodeURIComponent(s.substring(s.indexOf("#")+1));n.id===u&&(r&&r.classList.remove(t),m.classList.add(t),c(m),i=!0),l+=1}}return document.addEventListener("scroll",n),document.addEventListener("resize",n),n(),function(){document.removeEventListener("scroll",n),document.removeEventListener("resize",n)}}))},i=a(55),o=a.n(i),m="table-of-contents__link";function s(e){var t=e.toc,a=e.isChild;return t.length?l.a.createElement("ul",{className:a?"":"table-of-contents table-of-contents__left-border"},t.map((function(e){return l.a.createElement("li",{key:e.id},l.a.createElement("a",{href:"#"+e.id,className:m,dangerouslySetInnerHTML:{__html:e.value}}),l.a.createElement(s,{isChild:!0,toc:e.children}))}))):null}t.a=function(e){var t=e.toc;return c(m,"table-of-contents__link--active",100),l.a.createElement("div",{className:Object(r.a)(o.a.tableOfContents,"thin-scrollbar")},l.a.createElement(s,{toc:t}))}}}]);
\ No newline at end of file
diff --git a/18b93cb3.603ff4e5.js b/18b93cb3.6bc02854.js
similarity index 88%
rename from 18b93cb3.603ff4e5.js
rename to 18b93cb3.6bc02854.js
index 97ada21..9f5c025 100644
--- a/18b93cb3.603ff4e5.js
+++ b/18b93cb3.6bc02854.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[12,13,15],{227:function(e,a,t){"use strict";var n=t(0),r=t.n(n),l=t(225),c=t.n(l),o=t(212),s=t(22);a.a=function(e){var a=Object(n.useRef)(!1),l=Object(n.useRef)(null),i=Object(o.useHistory)(),u=Object(s.default)().siteConfig,m=(void 0===u?{}:u).baseUrl,d=function(){a.current||(Promise.all([fetch(m+"search-doc.json").then((function(e){return e.json()})),fetch(m+"lunr-index.json").then((function(e){return e.json()})),Promise.all([t.e(142),t.e(146)]).then(t.bind(null,230)),t.e(97).then(t.t.bind(null,229,7))]).then((function(e){!function(e,a,t){new t({searchDocs:e,searchIndex:a,inputSelector:"#search_input_react",handleSelected:function(e,a,t){var n=m+t.url;document.createElement("a").href=n,i.push(n)}})}(e[0],e[1],e[2].default)})),a.current=!0)},h=Object(n.useCallback)((function(a){l.current.contains(a.target)||l.current.focus(),e.handleSearchBarToggle(!e.isSearchBarExpanded)}),[e.isSearchBarExpanded]);return r.a.createElement("div",{className:"navbar__search",key:"search-box"},r.a.createElement("span",{"aria-label":"expand searchbar",role:"button",className:c()("search-icon",{"search-icon-hidden":e.isSearchBarExpanded}),onClick:h,onKeyDown:h,tabIndex:0}),r.a.createElement("input",{id:"search_input_react",type:"search",placeholder:"Search","aria-label":"Search",className:c()("navbar__search-input",{"search-bar-expanded":e.isSearchBarExpanded},{"search-bar":!e.isSearchBarExpanded}),onClick:d,onMouseOver:d,onFocus:h,onBlur:h,ref:l}))}},293:function(e){e.exports=JSON.parse('["0.5.0","0.4.0","0.3.0","0.2.0"]')},78:function(e,a,t){"use strict";t.r(a);var n=t(0),r=t.n(n),l=t(213),c=t(226),o=t(22),s=t(214),i=t(293);a.default=function(){var e=Object(s.useVersions)(),a=Object(s.useLatestVersion)(),t=Object(o.default)().siteConfig,n=e.find((function(e){return"current"===e.name})),u=e.filter((function(e){return e!==a&&"current"!==e.name})),m="https://github.com/"+t.organizationName+"/"+t.projectName;return console.log(t),r.a.createElement(c.a,{title:"Versions",description:"Submarine Versions page listing all documented site versions"},r.a.createElement("main",{className:"container margin-vert--lg"},r.a.createElement("h1",null,"Submarine documentation versions"),a&&r.a.createElement("div",{className:"margin-bottom--lg"},r.a.createElement("h3",{id:"next"},"Current version (Stable)"),r.a.createElement("p",null,"Here you can find the documentation for current released version."),r.a.createElement("table",null,r.a.createElement("tbody",null,r.a.createElement("tr",null,r.a.createElement("th",null,a.label),r.a.createElement("td",null,r.a.createElement(l.a,{to:a.path},"Documentation")),r.a.createElement("td",null,r.a.createElement("a",{href:"/releases/submarine-release-"+a.name},"Release Notes")))))),n!==a&&r.a.createElement("div",{className:"margin-bottom--lg"},r.a.createElement("h3",{id:"latest"},"Next version (Unreleased)"),r.a.createElement("p",null,"Here you can find the documentation for work-in-process unreleased version."),r.a.createElement("table",null,r.a.createElement("tbody",null,r.a.createElement("tr",null,r.a.createElement("th",null,n.label),r.a.createElement("td",null,r.a.createElement(l.a,{to:n.path},"Documentation")),r.a.createElement("td",null,r.a.createElement(l.a,{to:m},"Source code")))))),u.length+i.length>0&&r.a.createElement("div",{className:"margin-bottom--lg"},r.a.createElement("h3",{id:"archive"},"Past versions (Not maintained anymore)"),r.a.createElement("p",null,"Here you can find documentation for previous versions of Submarine."),r.a.createElement("table",null,r.a.createElement("tbody",null,u.map((function(e){return r.a.createElement("tr",{key:e.name},r.a.createElement("th",null,e.label),r.a.createElement("td",null,r.a.createElement(l.a,{to:e.path},"Documentation")),r.a.createElement("td",null,r.a.createElement("a",{href:"/releases/submarine-release-"+e.name},"Release Notes")))})),i.map((function(e){return r.a.createElement("tr",{key:e},r.a.createElement("th",null,e),r.a.createElement("td",null,"Documentation"),r.a.createElement("td",null,r.a.createElement("a",{href:"/releases/submarine-release-"+e},"Release Notes")))})))))))}}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[12,13,15],{205:function(e,a,t){"use strict";var n=t(0),r=t.n(n),l=t(203),c=t.n(l),o=t(197),s=t(22);a.a=function(e){var a=Object(n.useRef)(!1),l=Object(n.useRef)(null),i=Object(o.useHistory)(),u=Object(s.default)().siteConfig,m=(void 0===u?{}:u).baseUrl,d=function(){a.current||(Promise.all([fetch(m+"search-doc.json").then((function(e){return e.json()})),fetch(m+"lunr-index.json").then((function(e){return e.json()})),Promise.all([t.e(127),t.e(131)]).then(t.bind(null,208)),t.e(86).then(t.t.bind(null,207,7))]).then((function(e){!function(e,a,t){new t({searchDocs:e,searchIndex:a,inputSelector:"#search_input_react",handleSelected:function(e,a,t){var n=m+t.url;document.createElement("a").href=n,i.push(n)}})}(e[0],e[1],e[2].default)})),a.current=!0)},h=Object(n.useCallback)((function(a){l.current.contains(a.target)||l.current.focus(),e.handleSearchBarToggle(!e.isSearchBarExpanded)}),[e.isSearchBarExpanded]);return r.a.createElement("div",{className:"navbar__search",key:"search-box"},r.a.createElement("span",{"aria-label":"expand searchbar",role:"button",className:c()("search-icon",{"search-icon-hidden":e.isSearchBarExpanded}),onClick:h,onKeyDown:h,tabIndex:0}),r.a.createElement("input",{id:"search_input_react",type:"search",placeholder:"Search","aria-label":"Search",className:c()("navbar__search-input",{"search-bar-expanded":e.isSearchBarExpanded},{"search-bar":!e.isSearchBarExpanded}),onClick:d,onMouseOver:d,onFocus:h,onBlur:h,ref:l}))}},276:function(e){e.exports=JSON.parse('["0.5.0","0.4.0","0.3.0","0.2.0"]')},78:function(e,a,t){"use strict";t.r(a);var n=t(0),r=t.n(n),l=t(198),c=t(204),o=t(22),s=t(199),i=t(276);a.default=function(){var e=Object(s.useVersions)(),a=Object(s.useLatestVersion)(),t=Object(o.default)().siteConfig,n=e.find((function(e){return"current"===e.name})),u=e.filter((function(e){return e!==a&&"current"!==e.name})),m="https://github.com/"+t.organizationName+"/"+t.projectName;return console.log(t),r.a.createElement(c.a,{title:"Versions",description:"Submarine Versions page listing all documented site versions"},r.a.createElement("main",{className:"container margin-vert--lg"},r.a.createElement("h1",null,"Submarine documentation versions"),a&&r.a.createElement("div",{className:"margin-bottom--lg"},r.a.createElement("h3",{id:"next"},"Current version (Stable)"),r.a.createElement("p",null,"Here you can find the documentation for current released version."),r.a.createElement("table",null,r.a.createElement("tbody",null,r.a.createElement("tr",null,r.a.createElement("th",null,a.label),r.a.createElement("td",null,r.a.createElement(l.a,{to:a.path},"Documentation")),r.a.createElement("td",null,r.a.createElement("a",{href:"/releases/submarine-release-"+a.name},"Release Notes")))))),n!==a&&r.a.createElement("div",{className:"margin-bottom--lg"},r.a.createElement("h3",{id:"latest"},"Next version (Unreleased)"),r.a.createElement("p",null,"Here you can find the documentation for work-in-process unreleased version."),r.a.createElement("table",null,r.a.createElement("tbody",null,r.a.createElement("tr",null,r.a.createElement("th",null,n.label),r.a.createElement("td",null,r.a.createElement(l.a,{to:n.path},"Documentation")),r.a.createElement("td",null,r.a.createElement(l.a,{to:m},"Source code")))))),u.length+i.length>0&&r.a.createElement("div",{className:"margin-bottom--lg"},r.a.createElement("h3",{id:"archive"},"Past versions (Not maintained anymore)"),r.a.createElement("p",null,"Here you can find documentation for previous versions of Submarine."),r.a.createElement("table",null,r.a.createElement("tbody",null,u.map((function(e){return r.a.createElement("tr",{key:e.name},r.a.createElement("th",null,e.label),r.a.createElement("td",null,r.a.createElement(l.a,{to:e.path},"Documentation")),r.a.createElement("td",null,r.a.createElement("a",{href:"/releases/submarine-release-"+e.name},"Release Notes")))})),i.map((function(e){return r.a.createElement("tr",{key:e},r.a.createElement("th",null,e),r.a.createElement("td",null,"Documentation"),r.a.createElement("td",null,r.a.createElement("a",{href:"/releases/submarine-release-"+e},"Release Notes")))})))))))}}}]);
\ No newline at end of file
diff --git a/1be78505.15c0b52a.js b/1be78505.15c0b52a.js
deleted file mode 100644
index ba1c96d..0000000
--- a/1be78505.15c0b52a.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[13,15],{227:function(e,n,a){"use strict";var r=a(0),c=a.n(r),t=a(225),s=a.n(t),o=a(212),i=a(22);n.a=function(e){var n=Object(r.useRef)(!1),t=Object(r.useRef)(null),u=Object(o.useHistory)(),l=Object(i.default)().siteConfig,h=(void 0===l?{}:l).baseUrl,d=function(){n.current||(Promise.all([fetch(h+"search-doc.json").then((function(e){return e.json()})),fetch(h+"lunr-index.json").then((function(e){return e.json()})),Promise.all([a.e(142),a.e(146)]).then(a.bind(null,230)),a.e(97).then(a.t.bind(null,229,7))]).then((function(e){!function(e,n,a){new a({searchDocs:e,searchIndex:n,inputSelector:"#search_input_react",handleSelected:function(e,n,a){var r=h+a.url;document.createElement("a").href=r,u.push(r)}})}(e[0],e[1],e[2].default)})),n.current=!0)},b=Object(r.useCallback)((function(n){t.current.contains(n.target)||t.current.focus(),e.handleSearchBarToggle(!e.isSearchBarExpanded)}),[e.isSearchBarExpanded]);return c.a.createElement("div",{className:"navbar__search",key:"search-box"},c.a.createElement("span",{"aria-label":"expand searchbar",role:"button",className:s()("search-icon",{"search-icon-hidden":e.isSearchBarExpanded}),onClick:b,onKeyDown:b,tabIndex:0}),c.a.createElement("input",{id:"search_input_react",type:"search",placeholder:"Search","aria-label":"Search",className:s()("navbar__search-input",{"search-bar-expanded":e.isSearchBarExpanded},{"search-bar":!e.isSearchBarExpanded}),onClick:d,onMouseOver:d,onFocus:b,onBlur:b,ref:t}))}}}]);
\ No newline at end of file
diff --git a/1f391b9e.fee84980.js b/1be78505.ed765e6d.js
similarity index 78%
copy from 1f391b9e.fee84980.js
copy to 1be78505.ed765e6d.js
index f3ae199..cd2aa4f 100644
--- a/1f391b9e.fee84980.js
+++ b/1be78505.ed765e6d.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[15,13],{227:function(e,n,a){"use strict";var r=a(0),c=a.n(r),t=a(225),s=a.n(t),o=a(212),i=a(22);n.a=function(e){var n=Object(r.useRef)(!1),t=Object(r.useRef)(null),u=Object(o.useHistory)(),l=Object(i.default)().siteConfig,h=(void 0===l?{}:l).baseUrl,d=function(){n.current||(Promise.all([fetch(h+"search-doc.json").then((function(e){return e.json()})),fetch(h+"lunr-index.json").then((function(e){return e.json()})),Promise.all([a.e(142),a.e(146)]).then(a.bind(null,230)),a.e(97).then(a.t.bind(null,229,7))]).then((function(e){!function(e,n,a){new a({searchDocs:e,searchIndex:n,inputSelector:"#search_input_react",handleSelected:function(e,n,a){var r=h+a.url;document.createElement("a").href=r,u.push(r)}})}(e[0],e[1],e[2].default)})),n.current=!0)},b=Object(r.useCallback)((function(n){t.current.contains(n.target)||t.current.focus(),e.handleSearchBarToggle(!e.isSearchBarExpanded)}),[e.isSearchBarExpanded]);return c.a.createElement("div",{className:"navbar__search",key:"search-box"},c.a.createElement("span",{"aria-label":"expand searchbar",role:"button",className:s()("search-icon",{"search-icon-hidden":e.isSearchBarExpanded}),onClick:b,onKeyDown:b,tabIndex:0}),c.a.createElement("input",{id:"search_input_react",type:"search",placeholder:"Search","aria-label":"Search",className:s()("navbar__search-input",{"search-bar-expanded":e.isSearchBarExpanded},{"search-bar":!e.isSearchBarExpanded}),onClick:d,onMouseOver:d,onFocus:b,onBlur:b,ref:t}))}}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[13,15],{205:function(e,n,a){"use strict";var r=a(0),c=a.n(r),t=a(203),s=a.n(t),o=a(197),i=a(22);n.a=function(e){var n=Object(r.useRef)(!1),t=Object(r.useRef)(null),u=Object(o.useHistory)(),l=Object(i.default)().siteConfig,h=(void 0===l?{}:l).baseUrl,d=function(){n.current||(Promise.all([fetch(h+"search-doc.json").then((function(e){return e.json()})),fetch(h+"lunr-index.json").then((function(e){return e.json()})),Promise.all([a.e(127),a.e(131)]).then(a.bind(null,208)),a.e(86).then(a.t.bind(null,207,7))]).then((function(e){!function(e,n,a){new a({searchDocs:e,searchIndex:n,inputSelector:"#search_input_react",handleSelected:function(e,n,a){var r=h+a.url;document.createElement("a").href=r,u.push(r)}})}(e[0],e[1],e[2].default)})),n.current=!0)},b=Object(r.useCallback)((function(n){t.current.contains(n.target)||t.current.focus(),e.handleSearchBarToggle(!e.isSearchBarExpanded)}),[e.isSearchBarExpanded]);return c.a.createElement("div",{className:"navbar__search",key:"search-box"},c.a.createElement("span",{"aria-label":"expand searchbar",role:"button",className:s()("search-icon",{"search-icon-hidden":e.isSearchBarExpanded}),onClick:b,onKeyDown:b,tabIndex:0}),c.a.createElement("input",{id:"search_input_react",type:"search",placeholder:"Search","aria-label":"Search",className:s()("navbar__search-input",{"search-bar-expanded":e.isSearchBarExpanded},{"search-bar":!e.isSearchBarExpanded}),onClick:d,onMouseOver:d,onFocus:b,onBlur:b,ref:t}))}}}]);
\ No newline at end of file
diff --git a/1dbe41c3.0d89d882.js b/1dbe41c3.0d89d882.js
deleted file mode 100644
index f7af26b..0000000
--- a/1dbe41c3.0d89d882.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[14],{209:function(e,t,n){"use strict";n.d(t,"a",(function(){return p})),n.d(t,"b",(function(){return m}));var r=n(0),o=n.n(r);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function c(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var b=o.a.createContext({}),l=function(e){var t=o.a.useContext(b),n=t;return e&&(n="function"==typeof e?e(t):c(c({},t),e)),n},p=function(e){var t=l(e.components);return o.a.createElement(b.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return o.a.createElement(o.a.Fragment,{},t)}},d=o.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,i=e.parentName,b=s(e,["components","mdxType","originalType","parentName"]),p=l(n),d=r,m=p["".concat(i,".").concat(d)]||p[d]||u[d]||a;return n?o.a.createElement(m,c(c({ref:t},b),{},{components:n})):o.a.createElement(m,c({ref:t},b))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,i=new Array(a);i[0]=d;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c.mdxType="string"==typeof e?e:r,i[1]=c;for(var b=2;b<a;b++)i[b]=n[b];return o.a.createElement.apply(null,i)}return o.a.createElement.apply(null,n)}d.displayName="MDXCreateElement"},236:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/tensorboard-experiment-page-bf5d5aad633d80ef059ce4b7e4d91db3.png"},237:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/tensorboard-webpage-f8b9c5ceeb7b5ef535939ea22f680d96.png"},81:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return i})),n.d(t,"metadata",(function(){return c})),n.d(t,"toc",(function(){return s})),n.d(t,"default",(function(){return l}));var r=n(3),o=n(7),a=(n(0),n(209)),i={title:"Tensorboard"},c={unversionedId:"userDocs/others/tensorboard",id:"userDocs/others/tensorboard",isDocsHomePage:!1,title:"Tensorboard",description:"\x3c!--",source:"@site/docs/userDocs/others/tensorboard.md",slug:"/userDocs/others/tensorboard",permalink:"/docs/next/userDocs/others/tensorboard",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/userDocs/others/tensorboard.md",version:"current",sidebar:"docs",previous:{title:"MLflow UI",permalink:"/docs/next/userDocs/others/mlflow"},next:{title:"Running Submarine on YARN (deprecated)",permalink:"/docs/next/adminDocs/yarn/README"}},s=[{value:"Write to LogDirs by the environment variable",id:"write-to-logdirs-by-the-environment-variable",children:[{value:"Environment variable",id:"environment-variable",children:[]},{value:"Example",id:"example",children:[]}]},{value:"Connect to the tensorboard webpage",id:"connect-to-the-tensorboard-webpage",children:[]}],b={toc:s};function l(e){var t=e.components,i=Object(o.a)(e,["components"]);return Object(a.b)("wrapper",Object(r.a)({},b,i,{components:t,mdxType:"MDXLayout"}),Object(a.b)("h2",{id:"write-to-logdirs-by-the-environment-variable"},"Write to LogDirs by the environment variable"),Object(a.b)("h3",{id:"environment-variable"},"Environment variable"),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},Object(a.b)("inlineCode",{parentName:"li"},"SUBMARINE_TENSORBOARD_LOG_DIR"),": Exist in every experiment container. You just need to direct your logs to ",Object(a.b)("inlineCode",{parentName:"li"},"$(SUBMARINE_TENSORBOARD_LOG_DIR)")," (",Object(a.b)("strong",{parentName:"li"},"NOTICE: it is ",Object(a.b)("inlineCode",{parentName:"strong"},"()")," not ",Object(a.b)("inlineCode",{parentName:"strong"},"{}")),"), and you can inspect the process on the tensorboard webpage.")),Object(a.b)("h3",{id:"example"},"Example"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},'{\n  "meta": {\n    "name": "tensorflow-tensorboard-dist-mnist",\n    "namespace": "default",\n    "framework": "TensorFlow",\n    "cmd": "python /var/tf_mnist/mnist_with_summaries.py --log_dir=$(SUBMARINE_TENSORBOARD_LOG_DIR) --learning_rate=0.01 --batch_size=20",\n    "envVars": {\n      "ENV_1": "ENV1"\n    }\n  },\n  "environment": {\n    "image": "apache/submarine:tf-mnist-with-summaries-1.0"\n  },\n  "spec": {\n    "Worker": {\n      "replicas": 1,\n      "resources": "cpu=1,memory=512M"\n    }\n  }\n}\n\n')),Object(a.b)("h2",{id:"connect-to-the-tensorboard-webpage"},"Connect to the tensorboard webpage"),Object(a.b)("ol",null,Object(a.b)("li",{parentName:"ol"},"Open the experiment page in the workbench, and Click the ",Object(a.b)("inlineCode",{parentName:"li"},"TensorBoard")," button.")),Object(a.b)("p",null,Object(a.b)("img",{src:n(236).default})),Object(a.b)("ol",{start:2},Object(a.b)("li",{parentName:"ol"},"Inspect the process on tensorboard page.")),Object(a.b)("p",null,Object(a.b)("img",{src:n(237).default})))}l.isMDXComponent=!0}}]);
\ No newline at end of file
diff --git a/1dbe41c3.8f633975.js b/1dbe41c3.8f633975.js
new file mode 100644
index 0000000..99a9421
--- /dev/null
+++ b/1dbe41c3.8f633975.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[14],{194:function(e,t,n){"use strict";n.d(t,"a",(function(){return p})),n.d(t,"b",(function(){return m}));var r=n(0),o=n.n(r);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function c(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var b=o.a.createContext({}),l=function(e){var t=o.a.useContext(b),n=t;return e&&(n="function"==typeof e?e(t):c(c({},t),e)),n},p=function(e){var t=l(e.components);return o.a.createElement(b.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return o.a.createElement(o.a.Fragment,{},t)}},d=o.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,i=e.parentName,b=s(e,["components","mdxType","originalType","parentName"]),p=l(n),d=r,m=p["".concat(i,".").concat(d)]||p[d]||u[d]||a;return n?o.a.createElement(m,c(c({ref:t},b),{},{components:n})):o.a.createElement(m,c({ref:t},b))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,i=new Array(a);i[0]=d;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c.mdxType="string"==typeof e?e:r,i[1]=c;for(var b=2;b<a;b++)i[b]=n[b];return o.a.createElement.apply(null,i)}return o.a.createElement.apply(null,n)}d.displayName="MDXCreateElement"},214:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/tensorboard-experiment-page-bf5d5aad633d80ef059ce4b7e4d91db3.png"},215:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/tensorboard-webpage-f8b9c5ceeb7b5ef535939ea22f680d96.png"},81:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return i})),n.d(t,"metadata",(function(){return c})),n.d(t,"toc",(function(){return s})),n.d(t,"default",(function(){return l}));var r=n(3),o=n(7),a=(n(0),n(194)),i={title:"Tensorboard"},c={unversionedId:"userDocs/others/tensorboard",id:"userDocs/others/tensorboard",isDocsHomePage:!1,title:"Tensorboard",description:"\x3c!--",source:"@site/docs/userDocs/others/tensorboard.md",slug:"/userDocs/others/tensorboard",permalink:"/docs/next/userDocs/others/tensorboard",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/userDocs/others/tensorboard.md",version:"current",sidebar:"docs",previous:{title:"MLflow UI",permalink:"/docs/next/userDocs/others/mlflow"},next:{title:"Project Architecture",permalink:"/docs/next/devDocs/README"}},s=[{value:"Write to LogDirs by the environment variable",id:"write-to-logdirs-by-the-environment-variable",children:[{value:"Environment variable",id:"environment-variable",children:[]},{value:"Example",id:"example",children:[]}]},{value:"Connect to the tensorboard webpage",id:"connect-to-the-tensorboard-webpage",children:[]}],b={toc:s};function l(e){var t=e.components,i=Object(o.a)(e,["components"]);return Object(a.b)("wrapper",Object(r.a)({},b,i,{components:t,mdxType:"MDXLayout"}),Object(a.b)("h2",{id:"write-to-logdirs-by-the-environment-variable"},"Write to LogDirs by the environment variable"),Object(a.b)("h3",{id:"environment-variable"},"Environment variable"),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},Object(a.b)("inlineCode",{parentName:"li"},"SUBMARINE_TENSORBOARD_LOG_DIR"),": Exist in every experiment container. You just need to direct your logs to ",Object(a.b)("inlineCode",{parentName:"li"},"$(SUBMARINE_TENSORBOARD_LOG_DIR)")," (",Object(a.b)("strong",{parentName:"li"},"NOTICE: it is ",Object(a.b)("inlineCode",{parentName:"strong"},"()")," not ",Object(a.b)("inlineCode",{parentName:"strong"},"{}")),"), and you can inspect the process on the tensorboard webpage.")),Object(a.b)("h3",{id:"example"},"Example"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},'{\n  "meta": {\n    "name": "tensorflow-tensorboard-dist-mnist",\n    "namespace": "default",\n    "framework": "TensorFlow",\n    "cmd": "python /var/tf_mnist/mnist_with_summaries.py --log_dir=$(SUBMARINE_TENSORBOARD_LOG_DIR) --learning_rate=0.01 --batch_size=20",\n    "envVars": {\n      "ENV_1": "ENV1"\n    }\n  },\n  "environment": {\n    "image": "apache/submarine:tf-mnist-with-summaries-1.0"\n  },\n  "spec": {\n    "Worker": {\n      "replicas": 1,\n      "resources": "cpu=1,memory=512M"\n    }\n  }\n}\n\n')),Object(a.b)("h2",{id:"connect-to-the-tensorboard-webpage"},"Connect to the tensorboard webpage"),Object(a.b)("ol",null,Object(a.b)("li",{parentName:"ol"},"Open the experiment page in the workbench, and Click the ",Object(a.b)("inlineCode",{parentName:"li"},"TensorBoard")," button.")),Object(a.b)("p",null,Object(a.b)("img",{src:n(214).default})),Object(a.b)("ol",{start:2},Object(a.b)("li",{parentName:"ol"},"Inspect the process on tensorboard page.")),Object(a.b)("p",null,Object(a.b)("img",{src:n(215).default})))}l.isMDXComponent=!0}}]);
\ No newline at end of file
diff --git a/1f391b9e.fee84980.js b/1f391b9e.f22e8160.js
similarity index 78%
rename from 1f391b9e.fee84980.js
rename to 1f391b9e.f22e8160.js
index f3ae199..3a8696f 100644
--- a/1f391b9e.fee84980.js
+++ b/1f391b9e.f22e8160.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[15,13],{227:function(e,n,a){"use strict";var r=a(0),c=a.n(r),t=a(225),s=a.n(t),o=a(212),i=a(22);n.a=function(e){var n=Object(r.useRef)(!1),t=Object(r.useRef)(null),u=Object(o.useHistory)(),l=Object(i.default)().siteConfig,h=(void 0===l?{}:l).baseUrl,d=function(){n.current||(Promise.all([fetch(h+"search-doc.json").then((function(e){return e.json()})),fetch(h+"lunr-index.json").then((function(e){return e.json()})),Promise.all([a.e(142),a.e(146)]).then(a.bind(null,230)),a.e(97).then(a.t.bind(null,229,7))]).then((function(e){!function(e,n,a){new a({searchDocs:e,searchIndex:n,inputSelector:"#search_input_react",handleSelected:function(e,n,a){var r=h+a.url;document.createElement("a").href=r,u.push(r)}})}(e[0],e[1],e[2].default)})),n.current=!0)},b=Object(r.useCallback)((function(n){t.current.contains(n.target)||t.current.focus(),e.handleSearchBarToggle(!e.isSearchBarExpanded)}),[e.isSearchBarExpanded]);return c.a.createElement("div",{className:"navbar__search",key:"search-box"},c.a.createElement("span",{"aria-label":"expand searchbar",role:"button",className:s()("search-icon",{"search-icon-hidden":e.isSearchBarExpanded}),onClick:b,onKeyDown:b,tabIndex:0}),c.a.createElement("input",{id:"search_input_react",type:"search",placeholder:"Search","aria-label":"Search",className:s()("navbar__search-input",{"search-bar-expanded":e.isSearchBarExpanded},{"search-bar":!e.isSearchBarExpanded}),onClick:d,onMouseOver:d,onFocus:b,onBlur:b,ref:t}))}}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[15,13],{205:function(e,n,a){"use strict";var r=a(0),c=a.n(r),t=a(203),s=a.n(t),o=a(197),i=a(22);n.a=function(e){var n=Object(r.useRef)(!1),t=Object(r.useRef)(null),u=Object(o.useHistory)(),l=Object(i.default)().siteConfig,h=(void 0===l?{}:l).baseUrl,d=function(){n.current||(Promise.all([fetch(h+"search-doc.json").then((function(e){return e.json()})),fetch(h+"lunr-index.json").then((function(e){return e.json()})),Promise.all([a.e(127),a.e(131)]).then(a.bind(null,208)),a.e(86).then(a.t.bind(null,207,7))]).then((function(e){!function(e,n,a){new a({searchDocs:e,searchIndex:n,inputSelector:"#search_input_react",handleSelected:function(e,n,a){var r=h+a.url;document.createElement("a").href=r,u.push(r)}})}(e[0],e[1],e[2].default)})),n.current=!0)},b=Object(r.useCallback)((function(n){t.current.contains(n.target)||t.current.focus(),e.handleSearchBarToggle(!e.isSearchBarExpanded)}),[e.isSearchBarExpanded]);return c.a.createElement("div",{className:"navbar__search",key:"search-box"},c.a.createElement("span",{"aria-label":"expand searchbar",role:"button",className:s()("search-icon",{"search-icon-hidden":e.isSearchBarExpanded}),onClick:b,onKeyDown:b,tabIndex:0}),c.a.createElement("input",{id:"search_input_react",type:"search",placeholder:"Search","aria-label":"Search",className:s()("navbar__search-input",{"search-bar-expanded":e.isSearchBarExpanded},{"search-bar":!e.isSearchBarExpanded}),onClick:d,onMouseOver:d,onFocus:b,onBlur:b,ref:t}))}}}]);
\ No newline at end of file
diff --git a/2.fba10c87.js b/2.6a1a8326.js
similarity index 89%
rename from 2.fba10c87.js
rename to 2.6a1a8326.js
index 3912b37..19b4d33 100644
--- a/2.fba10c87.js
+++ b/2.6a1a8326.js
@@ -1,2 +1,2 @@
-/*! For license information please see 2.fba10c87.js.LICENSE.txt */
-(window.webpackJsonp=window.webpackJsonp||[]).push([[2],{225:function(e,t,a){var n;!function(){"use strict";var a={}.hasOwnProperty;function r(){for(var e=[],t=0;t<arguments.length;t++){var n=arguments[t];if(n){var c=typeof n;if("string"===c||"number"===c)e.push(n);else if(Array.isArray(n)&&n.length){var o=r.apply(null,n);o&&e.push(o)}else if("object"===c)for(var l in n)a.call(n,l)&&n[l]&&e.push(l)}}return e.join(" ")}e.exports?(r.default=r,e.exports=r):void 0===(n=function(){return r}.apply(t,[]))||(e.exports=n)}()},226:function(e,t,a){"use strict";var n=a(0),r=a.n(n),c=a(211),o=a(60),l=a.n(o);var i=function(){return r.a.createElement("nav",{"aria-label":"Skip navigation links"},r.a.createElement("button",{type:"button",tabIndex:0,className:l.a.skipToContent,onKeyDown:function(e){if(13===e.keyCode){document.activeElement.blur();var t=document.querySelector("main:first-of-type");t&&t.scrollIntoView()}}},"Skip to main content"))},s=a(210),u=a(265),d=a(61),m=a.n(d);var f=function(){var e,t=Object(u.a)(),a=t.isAnnouncementBarClosed,n=t.closeAnnouncementBar,o=Object(s.useThemeConfig)().announcementBar;if(!o)return null;var l=o.content,i=o.backgroundColor,d=o.textColor,f=o.isCloseable;return!l||f&&a?null:r.a.createElement("div",{className:m.a.announcementBar,style:{backgroundColor:i,color:d},role:"banner"},r.a.createElement("div",{className:Object(c.a)(m.a.announcementBarContent,(e={},e[m.a.announcementBarCloseable]=f,e)),dangerouslySetInnerHTML:{__html:l}}),f?r.a.createElement("button",{type:"button",className:m.a.announcementBarClose,onClick:n,"aria-label":"Close"},r.a.createElement("span",{"aria-hidden":"true"},"\xd7")):null)},h=a(3),v=a(227),b=a(286),p=a.n(b),g=a(22),k=a(62),E=a.n(k),O=function(e){var t=e.icon,a=e.style;return r.a.createElement("span",{className:Object(c.a)(E.a.toggle,E.a.dark),style:a},t)},j=function(e){var t=e.icon,a=e.style;return r.a.createElement("span",{className:Object(c.a)(E.a.toggle,E.a.light),style:a},t)},y=function(e){var t=Object(s.useThemeConfig)().colorMode.switchConfig,a=t.darkIcon,n=t.darkIconStyle,c=t.lightIcon,o=t.lightIconStyle,l=Object(g.default)().isClient;return r.a.createElement(p.a,Object(h.a)({disabled:!l,icons:{checked:r.a.createElement(O,{icon:a,style:n}),unchecked:r.a.createElement(j,{icon:c,style:o})}},e))},_=a(231),C=a(212),w=a(268),N=function(e){var t=Object(C.useLocation)(),a=Object(n.useState)(!e),r=a[0],c=a[1],o=Object(n.useRef)(!1),l=Object(n.useState)(0),i=l[0],s=l[1],u=Object(n.useState)(0),d=u[0],m=u[1],f=Object(n.useCallback)((function(e){null!==e&&m(e.getBoundingClientRect().height)}),[]);return Object(w.a)((function(t){var a=t.scrollY;if(e&&!(a<d)){if(o.current)return o.current=!1,c(!1),void s(a);i&&0===a&&c(!0);var n=document.documentElement.scrollHeight-d,r=window.innerHeight;i&&a>=i?c(!1):a+r<n&&c(!0),s(a)}}),[i,d,o]),Object(n.useEffect)((function(){e&&i&&c(!0)}),[t.pathname]),Object(n.useEffect)((function(){e&&(o.current=!0)}),[t.hash]),{navbarRef:f,isNavbarVisible:r}},T=a(269),S=a(270),L=a(7),I=a(228);function D(e){var t=e.mobile,a=Object(L.a)(e,["mobile"]),n=Object(g.default)(),c=n.siteConfig.baseUrl,o=n.i18n,l=o.defaultLocale,i=o.currentLocale,s=o.locales,u=o.localeConfigs,d=Object(C.useLocation)().pathname;function m(e){return u[e].label}var f=i===l?c:c.replace("/"+i+"/","/"),v=d.replace(c,"");var b=s.map((function(e){var t=""+function(e){return e===l?""+f:""+f+e+"/"}(e)+v;return{isNavLink:!0,label:m(e),to:"pathname://"+t,target:"_self",autoAddBaseUrl:!1,className:e===i?"dropdown__link--active":""}})),p=t?"Languages":m(i);return r.a.createElement(I.a,Object(h.a)({},a,{mobile:t,label:p,items:b}))}var x={default:function(){return I.a},localeDropdown:function(){return D},docsVersion:function(){return a(290).default},docsVersionDropdown:function(){return a(291).default},doc:function(){return a(292).default}};function B(e){var t=e.type,a=Object(L.a)(e,["type"]),n=function(e){void 0===e&&(e="default");var t=x[e];if(!t)throw new Error("No NavbarItem component found for type="+e+".");return t()}(t);return r.a.createElement(n,a)}var P=a(276),M=a(271),A=a(64),V=a.n(A),F="right";var X=function(){var e,t,a=Object(s.useThemeConfig)(),o=a.navbar,l=o.items,i=o.hideOnScroll,u=o.style,d=a.colorMode.disableSwitch,m=Object(n.useState)(!1),f=m[0],b=m[1],p=Object(n.useState)(!1),g=p[0],k=p[1],E=Object(_.a)(),O=E.isDarkTheme,j=E.setLightTheme,C=E.setDarkTheme,w=N(i),L=w.navbarRef,I=w.isNavbarVisible;Object(T.a)(f);var D=Object(n.useCallback)((function(){b(!0)}),[b]),x=Object(n.useCallback)((function(){b(!1)}),[b]),A=Object(n.useCallback)((function(e){return e.target.checked?C():j()}),[j,C]),X=Object(S.a)();Object(n.useEffect)((function(){X===S.b.desktop&&b(!1)}),[X]);var H=function(e){return{leftItems:e.filter((function(e){var t;return"left"===(null!==(t=e.position)&&void 0!==t?t:F)})),rightItems:e.filter((function(e){var t;return"right"===(null!==(t=e.position)&&void 0!==t?t:F)}))}}(l),R=H.leftItems,U=H.rightItems;return r.a.createElement("nav",{ref:L,className:Object(c.a)("navbar","navbar--fixed-top",(e={"navbar--dark":"dark"===u,"navbar--primary":"primary"===u,"navbar-sidebar--show":f},e[V.a.navbarHideable]=i,e[V.a.navbarHidden]=!I,e))},r.a.createElement("div",{className:"navbar__inner"},r.a.createElement("div",{className:"navbar__items"},null!=l&&0!==l.length&&r.a.createElement("div",{"aria-label":"Navigation bar toggle",className:"navbar__toggle",role:"button",tabIndex:0,onClick:D,onKeyDown:D},r.a.createElement(M.a,null)),r.a.createElement(P.a,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:Object(c.a)("navbar__title",(t={},t[V.a.hideLogoText]=g,t))}),R.map((function(e,t){return r.a.createElement(B,Object(h.a)({},e,{key:t}))}))),r.a.createElement("div",{className:"navbar__items navbar__items--right"},U.map((function(e,t){return r.a.createElement(B,Object(h.a)({},e,{key:t}))})),!d&&r.a.createElement(y,{className:V.a.displayOnlyInLargeViewport,"aria-label":"Dark mode toggle",checked:O,onChange:A}),r.a.createElement(v.a,{handleSearchBarToggle:k,isSearchBarExpanded:g}))),r.a.createElement("div",{role:"presentation",className:"navbar-sidebar__backdrop",onClick:x}),r.a.createElement("div",{className:"navbar-sidebar"},r.a.createElement("div",{className:"navbar-sidebar__brand"},r.a.createElement(P.a,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title",onClick:x}),!d&&f&&r.a.createElement(y,{"aria-label":"Dark mode toggle in sidebar",checked:O,onChange:A})),r.a.createElement("div",{className:"navbar-sidebar__items"},r.a.createElement("div",{className:"menu"},r.a.createElement("ul",{className:"menu__list"},l.map((function(e,t){return r.a.createElement(B,Object(h.a)({mobile:!0},e,{onClick:x,key:t}))})))))))},H=a(213),R=a(216),U=a(65),G=a.n(U);function Y(e){var t=e.to,a=e.href,n=e.label,c=e.prependBaseUrlToHref,o=Object(L.a)(e,["to","href","label","prependBaseUrlToHref"]),l=Object(R.a)(t),i=Object(R.a)(a,{forcePrependBaseUrl:!0});return r.a.createElement(H.a,Object(h.a)({className:"footer__link-item"},a?{target:"_blank",rel:"noopener noreferrer",href:c?i:a}:{to:l},o),n)}var K=function(e){var t=e.url,a=e.alt;return r.a.createElement("img",{className:"footer__logo",alt:a,src:t})};var W=function(){var e=Object(s.useThemeConfig)().footer,t=e||{},a=t.copyright,n=t.links,o=void 0===n?[]:n,l=t.logo,i=void 0===l?{}:l,u=Object(R.a)(i.src);return e?r.a.createElement("footer",{className:Object(c.a)("footer",{"footer--dark":"dark"===e.style})},r.a.createElement("div",{className:"container"},o&&o.length>0&&r.a.createElement("div",{className:"row footer__links"},o.map((function(e,t){return r.a.createElement("div",{key:t,className:"col footer__col"},null!=e.title?r.a.createElement("h4",{className:"footer__title"},e.title):null,null!=e.items&&Array.isArray(e.items)&&e.items.length>0?r.a.createElement("ul",{className:"footer__items"},e.items.map((function(e,t){return e.html?r.a.createElement("li",{key:t,className:"footer__item",dangerouslySetInnerHTML:{__html:e.html}}):r.a.createElement("li",{key:e.href||e.to,className:"footer__item"},r.a.createElement(Y,e))}))):null)}))),(i||a)&&r.a.createElement("div",{className:"footer__bottom text--center"},i&&i.src&&r.a.createElement("div",{className:"margin-bottom--sm"},i.href?r.a.createElement("a",{href:i.href,target:"_blank",rel:"noopener noreferrer",className:G.a.footerLogoLink},r.a.createElement(K,{alt:i.alt,url:u})):r.a.createElement(K,{alt:i.alt,url:u})),a?r.a.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:a}}):null))):null},z=a(11),J="light",q="dark",Q=function(e){return e===q?q:J},Z=function(){return z.a.canUseDOM?Q(document.documentElement.getAttribute("data-theme")):J},$=function(e){try{localStorage.setItem("theme",Q(e))}catch(t){console.error(t)}},ee=function(){var e=Object(s.useThemeConfig)().colorMode,t=e.disableSwitch,a=e.respectPrefersColorScheme,r=Object(n.useState)(Z),c=r[0],o=r[1],l=Object(n.useCallback)((function(){o(J),$(J)}),[]),i=Object(n.useCallback)((function(){o(q),$(q)}),[]);return Object(n.useEffect)((function(){document.documentElement.setAttribute("data-theme",Q(c))}),[c]),Object(n.useEffect)((function(){if(!t)try{var e=localStorage.getItem("theme");null!==e&&o(Q(e))}catch(a){console.error(a)}}),[o]),Object(n.useEffect)((function(){t&&!a||window.matchMedia("(prefers-color-scheme: dark)").addListener((function(e){var t=e.matches;o(t?q:J)}))}),[]),{isDarkTheme:c===q,setLightTheme:l,setDarkTheme:i}},te=a(267);var ae=function(e){var t=ee(),a=t.isDarkTheme,n=t.setLightTheme,c=t.setDarkTheme;return r.a.createElement(te.a.Provider,{value:{isDarkTheme:a,setLightTheme:n,setDarkTheme:c}},e.children)},ne="docusaurus.tab.",re=function(){var e=Object(n.useState)({}),t=e[0],a=e[1],r=Object(n.useCallback)((function(e,t){try{localStorage.setItem("docusaurus.tab."+e,t)}catch(a){console.error(a)}}),[]);return Object(n.useEffect)((function(){try{for(var e={},t=0;t<localStorage.length;t+=1){var n=localStorage.key(t);if(n.startsWith(ne))e[n.substring(ne.length)]=localStorage.getItem(n)}a(e)}catch(r){console.error(r)}}),[]),{tabGroupChoices:t,setTabGroupChoices:function(e,t){a((function(a){var n;return Object.assign({},a,((n={})[e]=t,n))})),r(e,t)}}},ce="docusaurus.announcement.dismiss",oe="docusaurus.announcement.id",le=function(){var e=Object(s.useThemeConfig)().announcementBar,t=Object(n.useState)(!0),a=t[0],r=t[1],c=Object(n.useCallback)((function(){localStorage.setItem(ce,"true"),r(!0)}),[]);return Object(n.useEffect)((function(){if(e){var t=e.id,a=localStorage.getItem(oe);"annoucement-bar"===a&&(a="announcement-bar");var n=t!==a;localStorage.setItem(oe,t),n&&localStorage.setItem(ce,"false"),(n||"false"===localStorage.getItem(ce))&&r(!1)}}),[]),{isAnnouncementBarClosed:a,closeAnnouncementBar:c}},ie=a(266);var se=function(e){var t=re(),a=t.tabGroupChoices,n=t.setTabGroupChoices,c=le(),o=c.isAnnouncementBarClosed,l=c.closeAnnouncementBar;return r.a.createElement(ie.a.Provider,{value:{tabGroupChoices:a,setTabGroupChoices:n,isAnnouncementBarClosed:o,closeAnnouncementBar:l}},e.children)};function ue(e){var t=e.children;return r.a.createElement(ae,null,r.a.createElement(se,null,r.a.createElement(s.DocsPreferredVersionContextProvider,null,t)))}var de=a(25);function me(e){var t=e.locale,a=e.version,n=e.tag;return r.a.createElement(de.a,null,t&&r.a.createElement("meta",{name:"docusaurus_locale",content:""+t}),a&&r.a.createElement("meta",{name:"docusaurus_version",content:a}),n&&r.a.createElement("meta",{name:"docusaurus_tag",content:n}))}function fe(e){var t=Object(g.default)(),a=t.siteConfig,n=t.i18n.currentLocale,c=a.favicon,o=a.themeConfig,l=o.image,i=o.metadatas,u=a.url,d=e.title,m=e.description,f=e.image,v=e.keywords,b=e.permalink,p=e.searchMetadatas,k=Object(s.useTitleFormatter)(d),E=f||l,O=Object(R.a)(E,{absolute:!0}),j=Object(R.a)(c),y=n.split("-")[0];return r.a.createElement(r.a.Fragment,null,r.a.createElement(de.a,null,r.a.createElement("html",{lang:y}),k&&r.a.createElement("title",null,k),k&&r.a.createElement("meta",{property:"og:title",content:k}),c&&r.a.createElement("link",{rel:"shortcut icon",href:j}),m&&r.a.createElement("meta",{name:"description",content:m}),m&&r.a.createElement("meta",{property:"og:description",content:m}),v&&v.length&&r.a.createElement("meta",{name:"keywords",content:v.join(",")}),E&&r.a.createElement("meta",{property:"og:image",content:O}),E&&r.a.createElement("meta",{name:"twitter:image",content:O}),E&&r.a.createElement("meta",{name:"twitter:image:alt",content:"Image for "+k}),b&&r.a.createElement("meta",{property:"og:url",content:u+b}),b&&r.a.createElement("link",{rel:"canonical",href:u+b}),r.a.createElement("meta",{name:"twitter:card",content:"summary_large_image"})),r.a.createElement(me,Object(h.a)({tag:s.DEFAULT_SEARCH_TAG,locale:n},p)),r.a.createElement(de.a,null,i.map((function(e,t){return r.a.createElement("meta",Object(h.a)({key:"metadata_"+t},e))}))))}a(66);var he=function(){Object(n.useEffect)((function(){var e="navigation-with-keyboard";function t(t){"keydown"===t.type&&"Tab"===t.key&&document.body.classList.add(e),"mousedown"===t.type&&document.body.classList.remove(e)}return document.addEventListener("keydown",t),document.addEventListener("mousedown",t),function(){document.body.classList.remove(e),document.removeEventListener("keydown",t),document.removeEventListener("mousedown",t)}}),[])};a(67);t.a=function(e){var t=e.children,a=e.noFooter,n=e.wrapperClassName;return he(),r.a.createElement(ue,null,r.a.createElement(fe,e),r.a.createElement(i,null),r.a.createElement(f,null),r.a.createElement(X,null),r.a.createElement("div",{className:Object(c.a)("main-wrapper",n)},t),!a&&r.a.createElement(W,null))}},228:function(e,t,a){"use strict";var n=a(3),r=a(7),c=a(0),o=a.n(c),l=a(211),i=a(213),s=a(216),u=a(212),d=a(210);function m(e){var t=e.activeBasePath,a=e.activeBaseRegex,c=e.to,l=e.href,u=e.label,d=e.activeClassName,m=void 0===d?"navbar__link--active":d,f=e.prependBaseUrlToHref,h=Object(r.a)(e,["activeBasePath","activeBaseRegex","to","href","label","activeClassName","prependBaseUrlToHref"]),v=Object(s.a)(c),b=Object(s.a)(t),p=Object(s.a)(l,{forcePrependBaseUrl:!0});return o.a.createElement(i.a,Object(n.a)({},l?{target:"_blank",rel:"noopener noreferrer",href:f?p:l}:Object.assign({isNavLink:!0,activeClassName:m,to:v},t||a?{isActive:function(e,t){return a?new RegExp(a).test(t.pathname):t.pathname.startsWith(b)}}:null),h),u)}function f(e){var t=e.items,a=e.position,i=e.className,s=Object(r.a)(e,["items","position","className"]),u=Object(c.useRef)(null),d=Object(c.useRef)(null),f=Object(c.useState)(!1),h=f[0],v=f[1];Object(c.useEffect)((function(){var e=function(e){u.current&&!u.current.contains(e.target)&&v(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),function(){document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e)}}),[u]);var b=function(e,t){return void 0===t&&(t=!1),Object(l.a)({"navbar__item navbar__link":!t,dropdown__link:t},e)};return t?o.a.createElement("div",{ref:u,className:Object(l.a)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--left":"left"===a,"dropdown--right":"right"===a,"dropdown--show":h})},o.a.createElement(m,Object(n.a)({className:b(i)},s,{onClick:s.to?void 0:function(e){return e.preventDefault()},onKeyDown:function(e){"Enter"===e.key&&(e.preventDefault(),v(!h))}}),s.label),o.a.createElement("ul",{ref:d,className:"dropdown__menu"},t.map((function(e,a){var c=e.className,l=Object(r.a)(e,["className"]);return o.a.createElement("li",{key:a},o.a.createElement(m,Object(n.a)({onKeyDown:function(e){if(a===t.length-1&&"Tab"===e.key){e.preventDefault(),v(!1);var n=u.current.nextElementSibling;n&&n.focus()}},activeClassName:"dropdown__link--active",className:b(c,!0)},l)))})))):o.a.createElement(m,Object(n.a)({className:b(i)},s))}function h(e){var t,a,i=e.items,s=e.className,f=(e.position,Object(r.a)(e,["items","className","position"])),h=Object(c.useRef)(null),v=Object(u.useLocation)().pathname,b=Object(c.useState)((function(){var e;return null===(e=!(null!=i&&i.some((function(e){return Object(d.isSamePath)(e.to,v)}))))||void 0===e||e})),p=b[0],g=b[1],k=function(e,t){return void 0===t&&(t=!1),Object(l.a)("menu__link",{"menu__link--sublist":t},e)};if(!i)return o.a.createElement("li",{className:"menu__list-item"},o.a.createElement(m,Object(n.a)({className:k(s)},f)));var E=null!==(t=h.current)&&void 0!==t&&t.scrollHeight?(null===(a=h.current)||void 0===a?void 0:a.scrollHeight)+"px":void 0;return o.a.createElement("li",{className:Object(l.a)("menu__list-item",{"menu__list-item--collapsed":p})},o.a.createElement(m,Object(n.a)({role:"button",className:k(s,!0)},f,{onClick:function(){g((function(e){return!e}))}}),f.label),o.a.createElement("ul",{className:"menu__list",ref:h,style:{height:p?void 0:E}},i.map((function(e,t){var a=e.className,c=Object(r.a)(e,["className"]);return o.a.createElement("li",{className:"menu__list-item",key:t},o.a.createElement(m,Object(n.a)({activeClassName:"menu__link--active",className:k(a)},c,{onClick:f.onClick})))}))))}t.a=function(e){var t=e.mobile,a=void 0!==t&&t,n=Object(r.a)(e,["mobile"]),c=a?h:f;return o.a.createElement(c,n)}},231:function(e,t,a){"use strict";var n=a(0),r=a(267);t.a=function(){var e=Object(n.useContext)(r.a);if(null==e)throw new Error("`useThemeContext` is used outside of `Layout` Component. See https://v2.docusaurus.io/docs/theme-classic#usethemecontext.");return e}},265:function(e,t,a){"use strict";var n=a(0),r=a(266);t.a=function(){var e=Object(n.useContext)(r.a);if(null==e)throw new Error("`useUserPreferencesContext` is used outside of `Layout` Component.");return e}},266:function(e,t,a){"use strict";var n=a(0),r=Object(n.createContext)(void 0);t.a=r},267:function(e,t,a){"use strict";var n=a(0),r=a.n(n).a.createContext(void 0);t.a=r},268:function(e,t,a){"use strict";var n=a(0),r=a(11),c=function(){return{scrollX:r.a.canUseDOM?window.pageXOffset:0,scrollY:r.a.canUseDOM?window.pageYOffset:0}};t.a=function(e,t){void 0===t&&(t=[]);var a=Object(n.useState)(c()),r=a[0],o=a[1],l=function(){var t=c();o(t),e&&e(t)};return Object(n.useEffect)((function(){var e={passive:!0};return window.addEventListener("scroll",l,e),function(){return window.removeEventListener("scroll",l,e)}}),t),r}},269:function(e,t,a){"use strict";var n=a(0);t.a=function(e){void 0===e&&(e=!0),Object(n.useEffect)((function(){return document.body.style.overflow=e?"hidden":"visible",function(){document.body.style.overflow="visible"}}),[e])}},270:function(e,t,a){"use strict";a.d(t,"b",(function(){return r}));var n=a(0),r={desktop:"desktop",mobile:"mobile"};t.a=function(){var e="undefined"!=typeof window;function t(){if(e)return window.innerWidth>996?r.desktop:r.mobile}var a=Object(n.useState)(t),c=a[0],o=a[1];return Object(n.useEffect)((function(){if(e)return window.addEventListener("resize",a),function(){return window.removeEventListener("resize",a)};function a(){o(t())}}),[]),c}},271:function(e,t,a){"use strict";var n=a(3),r=a(7),c=a(0),o=a.n(c);t.a=function(e){var t=e.width,a=void 0===t?30:t,c=e.height,l=void 0===c?30:c,i=e.className,s=Object(r.a)(e,["width","height","className"]);return o.a.createElement("svg",Object(n.a)({"aria-label":"Menu",className:i,width:a,height:l,viewBox:"0 0 30 30",role:"img",focusable:"false"},s),o.a.createElement("title",null,"Menu"),o.a.createElement("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"}))}},276:function(e,t,a){"use strict";var n=a(3),r=a(7),c=a(0),o=a.n(c),l=a(213),i=a(211),s=a(22),u=a(231),d=a(63),m=a.n(d),f=function(e){var t=Object(s.default)().isClient,a=Object(u.a)().isDarkTheme,c=e.sources,l=e.className,d=e.alt,f=void 0===d?"":d,h=Object(r.a)(e,["sources","className","alt"]),v=t?a?["dark"]:["light"]:["light","dark"];return o.a.createElement(o.a.Fragment,null,v.map((function(e){return o.a.createElement("img",Object(n.a)({key:e,src:c[e],alt:f,className:Object(i.a)(m.a.themedImage,m.a["themedImage--"+e],l)},h))})))},h=a(216),v=a(210),b=a(232);t.a=function(e){var t=Object(s.default)().isClient,a=Object(v.useThemeConfig)().navbar,c=a.title,i=a.logo,u=void 0===i?{src:""}:i,d=e.imageClassName,m=e.titleClassName,p=Object(r.a)(e,["imageClassName","titleClassName"]),g=Object(h.a)(u.href||"/"),k=u.target?{target:u.target}:Object(b.a)(g)?{}:{rel:"noopener noreferrer",target:"_blank"},E={light:Object(h.a)(u.src),dark:Object(h.a)(u.srcDark||u.src)};return o.a.createElement(l.a,Object(n.a)({to:g},p,k),u.src&&o.a.createElement(f,{key:t,className:d,sources:E,alt:u.alt||c||"Logo"}),null!=c&&o.a.createElement("strong",{className:m},c))}},286:function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(e[n]=a[n])}return e},r=function(){function e(e,t){for(var a=0;a<t.length;a++){var n=t[a];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,a,n){return a&&e(t.prototype,a),n&&e(t,n),t}}(),c=a(0),o=m(c),l=m(a(225)),i=m(a(1)),s=m(a(287)),u=m(a(288)),d=a(289);function m(e){return e&&e.__esModule?e:{default:e}}var f=function(e){function t(e){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var a=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return a.handleClick=a.handleClick.bind(a),a.handleTouchStart=a.handleTouchStart.bind(a),a.handleTouchMove=a.handleTouchMove.bind(a),a.handleTouchEnd=a.handleTouchEnd.bind(a),a.handleFocus=a.handleFocus.bind(a),a.handleBlur=a.handleBlur.bind(a),a.previouslyChecked=!(!e.checked&&!e.defaultChecked),a.state={checked:!(!e.checked&&!e.defaultChecked),hasFocus:!1},a}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),r(t,[{key:"componentDidUpdate",value:function(e){e.checked!==this.props.checked&&this.setState({checked:!!this.props.checked})}},{key:"handleClick",value:function(e){var t=this.input;if(e.target!==t&&!this.moved)return this.previouslyChecked=t.checked,e.preventDefault(),t.focus(),void t.click();var a=this.props.hasOwnProperty("checked")?this.props.checked:t.checked;this.setState({checked:a})}},{key:"handleTouchStart",value:function(e){this.startX=(0,d.pointerCoord)(e).x,this.activated=!0}},{key:"handleTouchMove",value:function(e){if(this.activated&&(this.moved=!0,this.startX)){var t=(0,d.pointerCoord)(e).x;this.state.checked&&t+15<this.startX?(this.setState({checked:!1}),this.startX=t,this.activated=!0):t-15>this.startX&&(this.setState({checked:!0}),this.startX=t,this.activated=t<this.startX+5)}}},{key:"handleTouchEnd",value:function(e){if(this.moved){var t=this.input;if(e.preventDefault(),this.startX){var a=(0,d.pointerCoord)(e).x;!0===this.previouslyChecked&&this.startX+4>a?this.previouslyChecked!==this.state.checked&&(this.setState({checked:!1}),this.previouslyChecked=this.state.checked,t.click()):this.startX-4<a&&this.previouslyChecked!==this.state.checked&&(this.setState({checked:!0}),this.previouslyChecked=this.state.checked,t.click()),this.activated=!1,this.startX=null,this.moved=!1}}}},{key:"handleFocus",value:function(e){var t=this.props.onFocus;t&&t(e),this.setState({hasFocus:!0})}},{key:"handleBlur",value:function(e){var t=this.props.onBlur;t&&t(e),this.setState({hasFocus:!1})}},{key:"getIcon",value:function(e){var a=this.props.icons;return a?void 0===a[e]?t.defaultProps.icons[e]:a[e]:null}},{key:"render",value:function(){var e=this,t=this.props,a=t.className,r=(t.icons,function(e,t){var a={};for(var n in e)t.indexOf(n)>=0||Object.prototype.hasOwnProperty.call(e,n)&&(a[n]=e[n]);return a}(t,["className","icons"])),c=(0,l.default)("react-toggle",{"react-toggle--checked":this.state.checked,"react-toggle--focus":this.state.hasFocus,"react-toggle--disabled":this.props.disabled},a);return o.default.createElement("div",{className:c,onClick:this.handleClick,onTouchStart:this.handleTouchStart,onTouchMove:this.handleTouchMove,onTouchEnd:this.handleTouchEnd},o.default.createElement("div",{className:"react-toggle-track"},o.default.createElement("div",{className:"react-toggle-track-check"},this.getIcon("checked")),o.default.createElement("div",{className:"react-toggle-track-x"},this.getIcon("unchecked"))),o.default.createElement("div",{className:"react-toggle-thumb"}),o.default.createElement("input",n({},r,{ref:function(t){e.input=t},onFocus:this.handleFocus,onBlur:this.handleBlur,className:"react-toggle-screenreader-only",type:"checkbox"})))}}]),t}(c.PureComponent);t.default=f,f.displayName="Toggle",f.defaultProps={icons:{checked:o.default.createElement(s.default,null),unchecked:o.default.createElement(u.default,null)}},f.propTypes={checked:i.default.bool,disabled:i.default.bool,defaultChecked:i.default.bool,onChange:i.default.func,onFocus:i.default.func,onBlur:i.default.func,className:i.default.string,name:i.default.string,value:i.default.string,id:i.default.string,"aria-labelledby":i.default.string,"aria-label":i.default.string,icons:i.default.oneOfType([i.default.bool,i.default.shape({checked:i.default.node,unchecked:i.default.node})])}},287:function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n,r=a(0),c=(n=r)&&n.__esModule?n:{default:n};t.default=function(){return c.default.createElement("svg",{width:"14",height:"11",viewBox:"0 0 14 11"},c.default.createElement("title",null,"switch-check"),c.default.createElement("path",{d:"M11.264 0L5.26 6.004 2.103 2.847 0 4.95l5.26 5.26 8.108-8.107L11.264 0",fill:"#fff",fillRule:"evenodd"}))}},288:function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n,r=a(0),c=(n=r)&&n.__esModule?n:{default:n};t.default=function(){return c.default.createElement("svg",{width:"10",height:"10",viewBox:"0 0 10 10"},c.default.createElement("title",null,"switch-x"),c.default.createElement("path",{d:"M9.9 2.12L7.78 0 4.95 2.828 2.12 0 0 2.12l2.83 2.83L0 7.776 2.123 9.9 4.95 7.07 7.78 9.9 9.9 7.776 7.072 4.95 9.9 2.12",fill:"#fff",fillRule:"evenodd"}))}},289:function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.pointerCoord=function(e){if(e){var t=e.changedTouches;if(t&&t.length>0){var a=t[0];return{x:a.clientX,y:a.clientY}}var n=e.pageX;if(void 0!==n)return{x:n,y:e.pageY}}return{x:0,y:0}}},290:function(e,t,a){"use strict";a.r(t),a.d(t,"default",(function(){return u}));var n=a(3),r=a(7),c=a(0),o=a.n(c),l=a(228),i=a(214),s=a(210);function u(e){var t,a=e.label,c=e.to,u=e.docsPluginId,d=Object(r.a)(e,["label","to","docsPluginId"]),m=Object(i.useActiveVersion)(u),f=Object(s.useDocsPreferredVersion)(u).preferredVersion,h=Object(i.useLatestVersion)(u),v=null!==(t=null!=m?m:f)&&void 0!==t?t:h,b=null!=a?a:v.label,p=null!=c?c:function(e){return e.docs.find((function(t){return t.id===e.mainDocId}))}(v).path;return o.a.createElement(l.a,Object(n.a)({},d,{label:b,to:p}))}},291:function(e,t,a){"use strict";a.r(t),a.d(t,"default",(function(){return d}));var n=a(3),r=a(7),c=a(0),o=a.n(c),l=a(228),i=a(214),s=a(210),u=function(e){return e.docs.find((function(t){return t.id===e.mainDocId}))};function d(e){var t,a,c=e.mobile,d=e.docsPluginId,m=e.dropdownActiveClassDisabled,f=e.dropdownItemsBefore,h=e.dropdownItemsAfter,v=Object(r.a)(e,["mobile","docsPluginId","dropdownActiveClassDisabled","dropdownItemsBefore","dropdownItemsAfter"]),b=Object(i.useActiveDocContext)(d),p=Object(i.useVersions)(d),g=Object(i.useLatestVersion)(d),k=Object(s.useDocsPreferredVersion)(d),E=k.preferredVersion,O=k.savePreferredVersionName;var j=null!==(t=null!==(a=b.activeVersion)&&void 0!==a?a:E)&&void 0!==t?t:g,y=c?"Versions":j.label,_=c?void 0:u(j).path;return o.a.createElement(l.a,Object(n.a)({},v,{mobile:c,label:y,to:_,items:function(){var e=p.map((function(e){var t=(null==b?void 0:b.alternateDocVersions[e.name])||u(e);return{isNavLink:!0,label:e.label,to:t.path,isActive:function(){return e===(null==b?void 0:b.activeVersion)},onClick:function(){O(e.name)}}})),t=[].concat(f,e,h);if(!(t.length<=1))return t}(),isActive:m?function(){return!1}:void 0}))}},292:function(e,t,a){"use strict";a.r(t),a.d(t,"default",(function(){return d}));var n=a(3),r=a(7),c=a(0),o=a.n(c),l=a(228),i=a(214),s=a(211),u=a(210);function d(e){var t,a,c=e.docId,d=e.activeSidebarClassName,m=e.label,f=e.docsPluginId,h=Object(r.a)(e,["docId","activeSidebarClassName","label","docsPluginId"]),v=Object(i.useActiveDocContext)(f),b=v.activeVersion,p=v.activeDoc,g=Object(u.useDocsPreferredVersion)(f).preferredVersion,k=Object(i.useLatestVersion)(f),E=null!==(t=null!=b?b:g)&&void 0!==t?t:k,O=E.docs.find((function(e){return e.id===c}));if(!O)throw new Error("DocNavbarItem: couldn't find any doc with id="+c+" in version "+E.name+".\nAvailable docIds=\n- "+E.docs.join("\n- "));return o.a.createElement(l.a,Object(n.a)({exact:!0},h,{className:Object(s.a)(h.className,(a={},a[d]=p&&p.sidebar===O.sidebar,a)),label:null!=m?m:O.id,to:O.path}))}}}]);
\ No newline at end of file
+/*! For license information please see 2.6a1a8326.js.LICENSE.txt */
+(window.webpackJsonp=window.webpackJsonp||[]).push([[2],{203:function(e,t,a){var n;!function(){"use strict";var a={}.hasOwnProperty;function r(){for(var e=[],t=0;t<arguments.length;t++){var n=arguments[t];if(n){var c=typeof n;if("string"===c||"number"===c)e.push(n);else if(Array.isArray(n)&&n.length){var o=r.apply(null,n);o&&e.push(o)}else if("object"===c)for(var l in n)a.call(n,l)&&n[l]&&e.push(l)}}return e.join(" ")}e.exports?(r.default=r,e.exports=r):void 0===(n=function(){return r}.apply(t,[]))||(e.exports=n)}()},204:function(e,t,a){"use strict";var n=a(0),r=a.n(n),c=a(196),o=a(60),l=a.n(o);var i=function(){return r.a.createElement("nav",{"aria-label":"Skip navigation links"},r.a.createElement("button",{type:"button",tabIndex:0,className:l.a.skipToContent,onKeyDown:function(e){if(13===e.keyCode){document.activeElement.blur();var t=document.querySelector("main:first-of-type");t&&t.scrollIntoView()}}},"Skip to main content"))},s=a(195),u=a(248),d=a(61),m=a.n(d);var f=function(){var e,t=Object(u.a)(),a=t.isAnnouncementBarClosed,n=t.closeAnnouncementBar,o=Object(s.useThemeConfig)().announcementBar;if(!o)return null;var l=o.content,i=o.backgroundColor,d=o.textColor,f=o.isCloseable;return!l||f&&a?null:r.a.createElement("div",{className:m.a.announcementBar,style:{backgroundColor:i,color:d},role:"banner"},r.a.createElement("div",{className:Object(c.a)(m.a.announcementBarContent,(e={},e[m.a.announcementBarCloseable]=f,e)),dangerouslySetInnerHTML:{__html:l}}),f?r.a.createElement("button",{type:"button",className:m.a.announcementBarClose,onClick:n,"aria-label":"Close"},r.a.createElement("span",{"aria-hidden":"true"},"\xd7")):null)},h=a(3),v=a(205),b=a(269),p=a.n(b),g=a(22),k=a(62),E=a.n(k),O=function(e){var t=e.icon,a=e.style;return r.a.createElement("span",{className:Object(c.a)(E.a.toggle,E.a.dark),style:a},t)},j=function(e){var t=e.icon,a=e.style;return r.a.createElement("span",{className:Object(c.a)(E.a.toggle,E.a.light),style:a},t)},y=function(e){var t=Object(s.useThemeConfig)().colorMode.switchConfig,a=t.darkIcon,n=t.darkIconStyle,c=t.lightIcon,o=t.lightIconStyle,l=Object(g.default)().isClient;return r.a.createElement(p.a,Object(h.a)({disabled:!l,icons:{checked:r.a.createElement(O,{icon:a,style:n}),unchecked:r.a.createElement(j,{icon:c,style:o})}},e))},_=a(209),C=a(197),w=a(251),N=function(e){var t=Object(C.useLocation)(),a=Object(n.useState)(!e),r=a[0],c=a[1],o=Object(n.useRef)(!1),l=Object(n.useState)(0),i=l[0],s=l[1],u=Object(n.useState)(0),d=u[0],m=u[1],f=Object(n.useCallback)((function(e){null!==e&&m(e.getBoundingClientRect().height)}),[]);return Object(w.a)((function(t){var a=t.scrollY;if(e&&!(a<d)){if(o.current)return o.current=!1,c(!1),void s(a);i&&0===a&&c(!0);var n=document.documentElement.scrollHeight-d,r=window.innerHeight;i&&a>=i?c(!1):a+r<n&&c(!0),s(a)}}),[i,d,o]),Object(n.useEffect)((function(){e&&i&&c(!0)}),[t.pathname]),Object(n.useEffect)((function(){e&&(o.current=!0)}),[t.hash]),{navbarRef:f,isNavbarVisible:r}},T=a(252),S=a(253),L=a(7),I=a(206);function D(e){var t=e.mobile,a=Object(L.a)(e,["mobile"]),n=Object(g.default)(),c=n.siteConfig.baseUrl,o=n.i18n,l=o.defaultLocale,i=o.currentLocale,s=o.locales,u=o.localeConfigs,d=Object(C.useLocation)().pathname;function m(e){return u[e].label}var f=i===l?c:c.replace("/"+i+"/","/"),v=d.replace(c,"");var b=s.map((function(e){var t=""+function(e){return e===l?""+f:""+f+e+"/"}(e)+v;return{isNavLink:!0,label:m(e),to:"pathname://"+t,target:"_self",autoAddBaseUrl:!1,className:e===i?"dropdown__link--active":""}})),p=t?"Languages":m(i);return r.a.createElement(I.a,Object(h.a)({},a,{mobile:t,label:p,items:b}))}var x={default:function(){return I.a},localeDropdown:function(){return D},docsVersion:function(){return a(273).default},docsVersionDropdown:function(){return a(274).default},doc:function(){return a(275).default}};function B(e){var t=e.type,a=Object(L.a)(e,["type"]),n=function(e){void 0===e&&(e="default");var t=x[e];if(!t)throw new Error("No NavbarItem component found for type="+e+".");return t()}(t);return r.a.createElement(n,a)}var P=a(259),M=a(254),A=a(64),V=a.n(A),F="right";var X=function(){var e,t,a=Object(s.useThemeConfig)(),o=a.navbar,l=o.items,i=o.hideOnScroll,u=o.style,d=a.colorMode.disableSwitch,m=Object(n.useState)(!1),f=m[0],b=m[1],p=Object(n.useState)(!1),g=p[0],k=p[1],E=Object(_.a)(),O=E.isDarkTheme,j=E.setLightTheme,C=E.setDarkTheme,w=N(i),L=w.navbarRef,I=w.isNavbarVisible;Object(T.a)(f);var D=Object(n.useCallback)((function(){b(!0)}),[b]),x=Object(n.useCallback)((function(){b(!1)}),[b]),A=Object(n.useCallback)((function(e){return e.target.checked?C():j()}),[j,C]),X=Object(S.a)();Object(n.useEffect)((function(){X===S.b.desktop&&b(!1)}),[X]);var H=function(e){return{leftItems:e.filter((function(e){var t;return"left"===(null!==(t=e.position)&&void 0!==t?t:F)})),rightItems:e.filter((function(e){var t;return"right"===(null!==(t=e.position)&&void 0!==t?t:F)}))}}(l),R=H.leftItems,U=H.rightItems;return r.a.createElement("nav",{ref:L,className:Object(c.a)("navbar","navbar--fixed-top",(e={"navbar--dark":"dark"===u,"navbar--primary":"primary"===u,"navbar-sidebar--show":f},e[V.a.navbarHideable]=i,e[V.a.navbarHidden]=!I,e))},r.a.createElement("div",{className:"navbar__inner"},r.a.createElement("div",{className:"navbar__items"},null!=l&&0!==l.length&&r.a.createElement("div",{"aria-label":"Navigation bar toggle",className:"navbar__toggle",role:"button",tabIndex:0,onClick:D,onKeyDown:D},r.a.createElement(M.a,null)),r.a.createElement(P.a,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:Object(c.a)("navbar__title",(t={},t[V.a.hideLogoText]=g,t))}),R.map((function(e,t){return r.a.createElement(B,Object(h.a)({},e,{key:t}))}))),r.a.createElement("div",{className:"navbar__items navbar__items--right"},U.map((function(e,t){return r.a.createElement(B,Object(h.a)({},e,{key:t}))})),!d&&r.a.createElement(y,{className:V.a.displayOnlyInLargeViewport,"aria-label":"Dark mode toggle",checked:O,onChange:A}),r.a.createElement(v.a,{handleSearchBarToggle:k,isSearchBarExpanded:g}))),r.a.createElement("div",{role:"presentation",className:"navbar-sidebar__backdrop",onClick:x}),r.a.createElement("div",{className:"navbar-sidebar"},r.a.createElement("div",{className:"navbar-sidebar__brand"},r.a.createElement(P.a,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title",onClick:x}),!d&&f&&r.a.createElement(y,{"aria-label":"Dark mode toggle in sidebar",checked:O,onChange:A})),r.a.createElement("div",{className:"navbar-sidebar__items"},r.a.createElement("div",{className:"menu"},r.a.createElement("ul",{className:"menu__list"},l.map((function(e,t){return r.a.createElement(B,Object(h.a)({mobile:!0},e,{onClick:x,key:t}))})))))))},H=a(198),R=a(201),U=a(65),G=a.n(U);function Y(e){var t=e.to,a=e.href,n=e.label,c=e.prependBaseUrlToHref,o=Object(L.a)(e,["to","href","label","prependBaseUrlToHref"]),l=Object(R.a)(t),i=Object(R.a)(a,{forcePrependBaseUrl:!0});return r.a.createElement(H.a,Object(h.a)({className:"footer__link-item"},a?{target:"_blank",rel:"noopener noreferrer",href:c?i:a}:{to:l},o),n)}var K=function(e){var t=e.url,a=e.alt;return r.a.createElement("img",{className:"footer__logo",alt:a,src:t})};var W=function(){var e=Object(s.useThemeConfig)().footer,t=e||{},a=t.copyright,n=t.links,o=void 0===n?[]:n,l=t.logo,i=void 0===l?{}:l,u=Object(R.a)(i.src);return e?r.a.createElement("footer",{className:Object(c.a)("footer",{"footer--dark":"dark"===e.style})},r.a.createElement("div",{className:"container"},o&&o.length>0&&r.a.createElement("div",{className:"row footer__links"},o.map((function(e,t){return r.a.createElement("div",{key:t,className:"col footer__col"},null!=e.title?r.a.createElement("h4",{className:"footer__title"},e.title):null,null!=e.items&&Array.isArray(e.items)&&e.items.length>0?r.a.createElement("ul",{className:"footer__items"},e.items.map((function(e,t){return e.html?r.a.createElement("li",{key:t,className:"footer__item",dangerouslySetInnerHTML:{__html:e.html}}):r.a.createElement("li",{key:e.href||e.to,className:"footer__item"},r.a.createElement(Y,e))}))):null)}))),(i||a)&&r.a.createElement("div",{className:"footer__bottom text--center"},i&&i.src&&r.a.createElement("div",{className:"margin-bottom--sm"},i.href?r.a.createElement("a",{href:i.href,target:"_blank",rel:"noopener noreferrer",className:G.a.footerLogoLink},r.a.createElement(K,{alt:i.alt,url:u})):r.a.createElement(K,{alt:i.alt,url:u})),a?r.a.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:a}}):null))):null},z=a(11),J="light",q="dark",Q=function(e){return e===q?q:J},Z=function(){return z.a.canUseDOM?Q(document.documentElement.getAttribute("data-theme")):J},$=function(e){try{localStorage.setItem("theme",Q(e))}catch(t){console.error(t)}},ee=function(){var e=Object(s.useThemeConfig)().colorMode,t=e.disableSwitch,a=e.respectPrefersColorScheme,r=Object(n.useState)(Z),c=r[0],o=r[1],l=Object(n.useCallback)((function(){o(J),$(J)}),[]),i=Object(n.useCallback)((function(){o(q),$(q)}),[]);return Object(n.useEffect)((function(){document.documentElement.setAttribute("data-theme",Q(c))}),[c]),Object(n.useEffect)((function(){if(!t)try{var e=localStorage.getItem("theme");null!==e&&o(Q(e))}catch(a){console.error(a)}}),[o]),Object(n.useEffect)((function(){t&&!a||window.matchMedia("(prefers-color-scheme: dark)").addListener((function(e){var t=e.matches;o(t?q:J)}))}),[]),{isDarkTheme:c===q,setLightTheme:l,setDarkTheme:i}},te=a(250);var ae=function(e){var t=ee(),a=t.isDarkTheme,n=t.setLightTheme,c=t.setDarkTheme;return r.a.createElement(te.a.Provider,{value:{isDarkTheme:a,setLightTheme:n,setDarkTheme:c}},e.children)},ne="docusaurus.tab.",re=function(){var e=Object(n.useState)({}),t=e[0],a=e[1],r=Object(n.useCallback)((function(e,t){try{localStorage.setItem("docusaurus.tab."+e,t)}catch(a){console.error(a)}}),[]);return Object(n.useEffect)((function(){try{for(var e={},t=0;t<localStorage.length;t+=1){var n=localStorage.key(t);if(n.startsWith(ne))e[n.substring(ne.length)]=localStorage.getItem(n)}a(e)}catch(r){console.error(r)}}),[]),{tabGroupChoices:t,setTabGroupChoices:function(e,t){a((function(a){var n;return Object.assign({},a,((n={})[e]=t,n))})),r(e,t)}}},ce="docusaurus.announcement.dismiss",oe="docusaurus.announcement.id",le=function(){var e=Object(s.useThemeConfig)().announcementBar,t=Object(n.useState)(!0),a=t[0],r=t[1],c=Object(n.useCallback)((function(){localStorage.setItem(ce,"true"),r(!0)}),[]);return Object(n.useEffect)((function(){if(e){var t=e.id,a=localStorage.getItem(oe);"annoucement-bar"===a&&(a="announcement-bar");var n=t!==a;localStorage.setItem(oe,t),n&&localStorage.setItem(ce,"false"),(n||"false"===localStorage.getItem(ce))&&r(!1)}}),[]),{isAnnouncementBarClosed:a,closeAnnouncementBar:c}},ie=a(249);var se=function(e){var t=re(),a=t.tabGroupChoices,n=t.setTabGroupChoices,c=le(),o=c.isAnnouncementBarClosed,l=c.closeAnnouncementBar;return r.a.createElement(ie.a.Provider,{value:{tabGroupChoices:a,setTabGroupChoices:n,isAnnouncementBarClosed:o,closeAnnouncementBar:l}},e.children)};function ue(e){var t=e.children;return r.a.createElement(ae,null,r.a.createElement(se,null,r.a.createElement(s.DocsPreferredVersionContextProvider,null,t)))}var de=a(25);function me(e){var t=e.locale,a=e.version,n=e.tag;return r.a.createElement(de.a,null,t&&r.a.createElement("meta",{name:"docusaurus_locale",content:""+t}),a&&r.a.createElement("meta",{name:"docusaurus_version",content:a}),n&&r.a.createElement("meta",{name:"docusaurus_tag",content:n}))}function fe(e){var t=Object(g.default)(),a=t.siteConfig,n=t.i18n.currentLocale,c=a.favicon,o=a.themeConfig,l=o.image,i=o.metadatas,u=a.url,d=e.title,m=e.description,f=e.image,v=e.keywords,b=e.permalink,p=e.searchMetadatas,k=Object(s.useTitleFormatter)(d),E=f||l,O=Object(R.a)(E,{absolute:!0}),j=Object(R.a)(c),y=n.split("-")[0];return r.a.createElement(r.a.Fragment,null,r.a.createElement(de.a,null,r.a.createElement("html",{lang:y}),k&&r.a.createElement("title",null,k),k&&r.a.createElement("meta",{property:"og:title",content:k}),c&&r.a.createElement("link",{rel:"shortcut icon",href:j}),m&&r.a.createElement("meta",{name:"description",content:m}),m&&r.a.createElement("meta",{property:"og:description",content:m}),v&&v.length&&r.a.createElement("meta",{name:"keywords",content:v.join(",")}),E&&r.a.createElement("meta",{property:"og:image",content:O}),E&&r.a.createElement("meta",{name:"twitter:image",content:O}),E&&r.a.createElement("meta",{name:"twitter:image:alt",content:"Image for "+k}),b&&r.a.createElement("meta",{property:"og:url",content:u+b}),b&&r.a.createElement("link",{rel:"canonical",href:u+b}),r.a.createElement("meta",{name:"twitter:card",content:"summary_large_image"})),r.a.createElement(me,Object(h.a)({tag:s.DEFAULT_SEARCH_TAG,locale:n},p)),r.a.createElement(de.a,null,i.map((function(e,t){return r.a.createElement("meta",Object(h.a)({key:"metadata_"+t},e))}))))}a(66);var he=function(){Object(n.useEffect)((function(){var e="navigation-with-keyboard";function t(t){"keydown"===t.type&&"Tab"===t.key&&document.body.classList.add(e),"mousedown"===t.type&&document.body.classList.remove(e)}return document.addEventListener("keydown",t),document.addEventListener("mousedown",t),function(){document.body.classList.remove(e),document.removeEventListener("keydown",t),document.removeEventListener("mousedown",t)}}),[])};a(67);t.a=function(e){var t=e.children,a=e.noFooter,n=e.wrapperClassName;return he(),r.a.createElement(ue,null,r.a.createElement(fe,e),r.a.createElement(i,null),r.a.createElement(f,null),r.a.createElement(X,null),r.a.createElement("div",{className:Object(c.a)("main-wrapper",n)},t),!a&&r.a.createElement(W,null))}},206:function(e,t,a){"use strict";var n=a(3),r=a(7),c=a(0),o=a.n(c),l=a(196),i=a(198),s=a(201),u=a(197),d=a(195);function m(e){var t=e.activeBasePath,a=e.activeBaseRegex,c=e.to,l=e.href,u=e.label,d=e.activeClassName,m=void 0===d?"navbar__link--active":d,f=e.prependBaseUrlToHref,h=Object(r.a)(e,["activeBasePath","activeBaseRegex","to","href","label","activeClassName","prependBaseUrlToHref"]),v=Object(s.a)(c),b=Object(s.a)(t),p=Object(s.a)(l,{forcePrependBaseUrl:!0});return o.a.createElement(i.a,Object(n.a)({},l?{target:"_blank",rel:"noopener noreferrer",href:f?p:l}:Object.assign({isNavLink:!0,activeClassName:m,to:v},t||a?{isActive:function(e,t){return a?new RegExp(a).test(t.pathname):t.pathname.startsWith(b)}}:null),h),u)}function f(e){var t=e.items,a=e.position,i=e.className,s=Object(r.a)(e,["items","position","className"]),u=Object(c.useRef)(null),d=Object(c.useRef)(null),f=Object(c.useState)(!1),h=f[0],v=f[1];Object(c.useEffect)((function(){var e=function(e){u.current&&!u.current.contains(e.target)&&v(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),function(){document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e)}}),[u]);var b=function(e,t){return void 0===t&&(t=!1),Object(l.a)({"navbar__item navbar__link":!t,dropdown__link:t},e)};return t?o.a.createElement("div",{ref:u,className:Object(l.a)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--left":"left"===a,"dropdown--right":"right"===a,"dropdown--show":h})},o.a.createElement(m,Object(n.a)({className:b(i)},s,{onClick:s.to?void 0:function(e){return e.preventDefault()},onKeyDown:function(e){"Enter"===e.key&&(e.preventDefault(),v(!h))}}),s.label),o.a.createElement("ul",{ref:d,className:"dropdown__menu"},t.map((function(e,a){var c=e.className,l=Object(r.a)(e,["className"]);return o.a.createElement("li",{key:a},o.a.createElement(m,Object(n.a)({onKeyDown:function(e){if(a===t.length-1&&"Tab"===e.key){e.preventDefault(),v(!1);var n=u.current.nextElementSibling;n&&n.focus()}},activeClassName:"dropdown__link--active",className:b(c,!0)},l)))})))):o.a.createElement(m,Object(n.a)({className:b(i)},s))}function h(e){var t,a,i=e.items,s=e.className,f=(e.position,Object(r.a)(e,["items","className","position"])),h=Object(c.useRef)(null),v=Object(u.useLocation)().pathname,b=Object(c.useState)((function(){var e;return null===(e=!(null!=i&&i.some((function(e){return Object(d.isSamePath)(e.to,v)}))))||void 0===e||e})),p=b[0],g=b[1],k=function(e,t){return void 0===t&&(t=!1),Object(l.a)("menu__link",{"menu__link--sublist":t},e)};if(!i)return o.a.createElement("li",{className:"menu__list-item"},o.a.createElement(m,Object(n.a)({className:k(s)},f)));var E=null!==(t=h.current)&&void 0!==t&&t.scrollHeight?(null===(a=h.current)||void 0===a?void 0:a.scrollHeight)+"px":void 0;return o.a.createElement("li",{className:Object(l.a)("menu__list-item",{"menu__list-item--collapsed":p})},o.a.createElement(m,Object(n.a)({role:"button",className:k(s,!0)},f,{onClick:function(){g((function(e){return!e}))}}),f.label),o.a.createElement("ul",{className:"menu__list",ref:h,style:{height:p?void 0:E}},i.map((function(e,t){var a=e.className,c=Object(r.a)(e,["className"]);return o.a.createElement("li",{className:"menu__list-item",key:t},o.a.createElement(m,Object(n.a)({activeClassName:"menu__link--active",className:k(a)},c,{onClick:f.onClick})))}))))}t.a=function(e){var t=e.mobile,a=void 0!==t&&t,n=Object(r.a)(e,["mobile"]),c=a?h:f;return o.a.createElement(c,n)}},209:function(e,t,a){"use strict";var n=a(0),r=a(250);t.a=function(){var e=Object(n.useContext)(r.a);if(null==e)throw new Error("`useThemeContext` is used outside of `Layout` Component. See https://v2.docusaurus.io/docs/theme-classic#usethemecontext.");return e}},248:function(e,t,a){"use strict";var n=a(0),r=a(249);t.a=function(){var e=Object(n.useContext)(r.a);if(null==e)throw new Error("`useUserPreferencesContext` is used outside of `Layout` Component.");return e}},249:function(e,t,a){"use strict";var n=a(0),r=Object(n.createContext)(void 0);t.a=r},250:function(e,t,a){"use strict";var n=a(0),r=a.n(n).a.createContext(void 0);t.a=r},251:function(e,t,a){"use strict";var n=a(0),r=a(11),c=function(){return{scrollX:r.a.canUseDOM?window.pageXOffset:0,scrollY:r.a.canUseDOM?window.pageYOffset:0}};t.a=function(e,t){void 0===t&&(t=[]);var a=Object(n.useState)(c()),r=a[0],o=a[1],l=function(){var t=c();o(t),e&&e(t)};return Object(n.useEffect)((function(){var e={passive:!0};return window.addEventListener("scroll",l,e),function(){return window.removeEventListener("scroll",l,e)}}),t),r}},252:function(e,t,a){"use strict";var n=a(0);t.a=function(e){void 0===e&&(e=!0),Object(n.useEffect)((function(){return document.body.style.overflow=e?"hidden":"visible",function(){document.body.style.overflow="visible"}}),[e])}},253:function(e,t,a){"use strict";a.d(t,"b",(function(){return r}));var n=a(0),r={desktop:"desktop",mobile:"mobile"};t.a=function(){var e="undefined"!=typeof window;function t(){if(e)return window.innerWidth>996?r.desktop:r.mobile}var a=Object(n.useState)(t),c=a[0],o=a[1];return Object(n.useEffect)((function(){if(e)return window.addEventListener("resize",a),function(){return window.removeEventListener("resize",a)};function a(){o(t())}}),[]),c}},254:function(e,t,a){"use strict";var n=a(3),r=a(7),c=a(0),o=a.n(c);t.a=function(e){var t=e.width,a=void 0===t?30:t,c=e.height,l=void 0===c?30:c,i=e.className,s=Object(r.a)(e,["width","height","className"]);return o.a.createElement("svg",Object(n.a)({"aria-label":"Menu",className:i,width:a,height:l,viewBox:"0 0 30 30",role:"img",focusable:"false"},s),o.a.createElement("title",null,"Menu"),o.a.createElement("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"}))}},259:function(e,t,a){"use strict";var n=a(3),r=a(7),c=a(0),o=a.n(c),l=a(198),i=a(196),s=a(22),u=a(209),d=a(63),m=a.n(d),f=function(e){var t=Object(s.default)().isClient,a=Object(u.a)().isDarkTheme,c=e.sources,l=e.className,d=e.alt,f=void 0===d?"":d,h=Object(r.a)(e,["sources","className","alt"]),v=t?a?["dark"]:["light"]:["light","dark"];return o.a.createElement(o.a.Fragment,null,v.map((function(e){return o.a.createElement("img",Object(n.a)({key:e,src:c[e],alt:f,className:Object(i.a)(m.a.themedImage,m.a["themedImage--"+e],l)},h))})))},h=a(201),v=a(195),b=a(210);t.a=function(e){var t=Object(s.default)().isClient,a=Object(v.useThemeConfig)().navbar,c=a.title,i=a.logo,u=void 0===i?{src:""}:i,d=e.imageClassName,m=e.titleClassName,p=Object(r.a)(e,["imageClassName","titleClassName"]),g=Object(h.a)(u.href||"/"),k=u.target?{target:u.target}:Object(b.a)(g)?{}:{rel:"noopener noreferrer",target:"_blank"},E={light:Object(h.a)(u.src),dark:Object(h.a)(u.srcDark||u.src)};return o.a.createElement(l.a,Object(n.a)({to:g},p,k),u.src&&o.a.createElement(f,{key:t,className:d,sources:E,alt:u.alt||c||"Logo"}),null!=c&&o.a.createElement("strong",{className:m},c))}},269:function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(e[n]=a[n])}return e},r=function(){function e(e,t){for(var a=0;a<t.length;a++){var n=t[a];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,a,n){return a&&e(t.prototype,a),n&&e(t,n),t}}(),c=a(0),o=m(c),l=m(a(203)),i=m(a(1)),s=m(a(270)),u=m(a(271)),d=a(272);function m(e){return e&&e.__esModule?e:{default:e}}var f=function(e){function t(e){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var a=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return a.handleClick=a.handleClick.bind(a),a.handleTouchStart=a.handleTouchStart.bind(a),a.handleTouchMove=a.handleTouchMove.bind(a),a.handleTouchEnd=a.handleTouchEnd.bind(a),a.handleFocus=a.handleFocus.bind(a),a.handleBlur=a.handleBlur.bind(a),a.previouslyChecked=!(!e.checked&&!e.defaultChecked),a.state={checked:!(!e.checked&&!e.defaultChecked),hasFocus:!1},a}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),r(t,[{key:"componentDidUpdate",value:function(e){e.checked!==this.props.checked&&this.setState({checked:!!this.props.checked})}},{key:"handleClick",value:function(e){var t=this.input;if(e.target!==t&&!this.moved)return this.previouslyChecked=t.checked,e.preventDefault(),t.focus(),void t.click();var a=this.props.hasOwnProperty("checked")?this.props.checked:t.checked;this.setState({checked:a})}},{key:"handleTouchStart",value:function(e){this.startX=(0,d.pointerCoord)(e).x,this.activated=!0}},{key:"handleTouchMove",value:function(e){if(this.activated&&(this.moved=!0,this.startX)){var t=(0,d.pointerCoord)(e).x;this.state.checked&&t+15<this.startX?(this.setState({checked:!1}),this.startX=t,this.activated=!0):t-15>this.startX&&(this.setState({checked:!0}),this.startX=t,this.activated=t<this.startX+5)}}},{key:"handleTouchEnd",value:function(e){if(this.moved){var t=this.input;if(e.preventDefault(),this.startX){var a=(0,d.pointerCoord)(e).x;!0===this.previouslyChecked&&this.startX+4>a?this.previouslyChecked!==this.state.checked&&(this.setState({checked:!1}),this.previouslyChecked=this.state.checked,t.click()):this.startX-4<a&&this.previouslyChecked!==this.state.checked&&(this.setState({checked:!0}),this.previouslyChecked=this.state.checked,t.click()),this.activated=!1,this.startX=null,this.moved=!1}}}},{key:"handleFocus",value:function(e){var t=this.props.onFocus;t&&t(e),this.setState({hasFocus:!0})}},{key:"handleBlur",value:function(e){var t=this.props.onBlur;t&&t(e),this.setState({hasFocus:!1})}},{key:"getIcon",value:function(e){var a=this.props.icons;return a?void 0===a[e]?t.defaultProps.icons[e]:a[e]:null}},{key:"render",value:function(){var e=this,t=this.props,a=t.className,r=(t.icons,function(e,t){var a={};for(var n in e)t.indexOf(n)>=0||Object.prototype.hasOwnProperty.call(e,n)&&(a[n]=e[n]);return a}(t,["className","icons"])),c=(0,l.default)("react-toggle",{"react-toggle--checked":this.state.checked,"react-toggle--focus":this.state.hasFocus,"react-toggle--disabled":this.props.disabled},a);return o.default.createElement("div",{className:c,onClick:this.handleClick,onTouchStart:this.handleTouchStart,onTouchMove:this.handleTouchMove,onTouchEnd:this.handleTouchEnd},o.default.createElement("div",{className:"react-toggle-track"},o.default.createElement("div",{className:"react-toggle-track-check"},this.getIcon("checked")),o.default.createElement("div",{className:"react-toggle-track-x"},this.getIcon("unchecked"))),o.default.createElement("div",{className:"react-toggle-thumb"}),o.default.createElement("input",n({},r,{ref:function(t){e.input=t},onFocus:this.handleFocus,onBlur:this.handleBlur,className:"react-toggle-screenreader-only",type:"checkbox"})))}}]),t}(c.PureComponent);t.default=f,f.displayName="Toggle",f.defaultProps={icons:{checked:o.default.createElement(s.default,null),unchecked:o.default.createElement(u.default,null)}},f.propTypes={checked:i.default.bool,disabled:i.default.bool,defaultChecked:i.default.bool,onChange:i.default.func,onFocus:i.default.func,onBlur:i.default.func,className:i.default.string,name:i.default.string,value:i.default.string,id:i.default.string,"aria-labelledby":i.default.string,"aria-label":i.default.string,icons:i.default.oneOfType([i.default.bool,i.default.shape({checked:i.default.node,unchecked:i.default.node})])}},270:function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n,r=a(0),c=(n=r)&&n.__esModule?n:{default:n};t.default=function(){return c.default.createElement("svg",{width:"14",height:"11",viewBox:"0 0 14 11"},c.default.createElement("title",null,"switch-check"),c.default.createElement("path",{d:"M11.264 0L5.26 6.004 2.103 2.847 0 4.95l5.26 5.26 8.108-8.107L11.264 0",fill:"#fff",fillRule:"evenodd"}))}},271:function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n,r=a(0),c=(n=r)&&n.__esModule?n:{default:n};t.default=function(){return c.default.createElement("svg",{width:"10",height:"10",viewBox:"0 0 10 10"},c.default.createElement("title",null,"switch-x"),c.default.createElement("path",{d:"M9.9 2.12L7.78 0 4.95 2.828 2.12 0 0 2.12l2.83 2.83L0 7.776 2.123 9.9 4.95 7.07 7.78 9.9 9.9 7.776 7.072 4.95 9.9 2.12",fill:"#fff",fillRule:"evenodd"}))}},272:function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.pointerCoord=function(e){if(e){var t=e.changedTouches;if(t&&t.length>0){var a=t[0];return{x:a.clientX,y:a.clientY}}var n=e.pageX;if(void 0!==n)return{x:n,y:e.pageY}}return{x:0,y:0}}},273:function(e,t,a){"use strict";a.r(t),a.d(t,"default",(function(){return u}));var n=a(3),r=a(7),c=a(0),o=a.n(c),l=a(206),i=a(199),s=a(195);function u(e){var t,a=e.label,c=e.to,u=e.docsPluginId,d=Object(r.a)(e,["label","to","docsPluginId"]),m=Object(i.useActiveVersion)(u),f=Object(s.useDocsPreferredVersion)(u).preferredVersion,h=Object(i.useLatestVersion)(u),v=null!==(t=null!=m?m:f)&&void 0!==t?t:h,b=null!=a?a:v.label,p=null!=c?c:function(e){return e.docs.find((function(t){return t.id===e.mainDocId}))}(v).path;return o.a.createElement(l.a,Object(n.a)({},d,{label:b,to:p}))}},274:function(e,t,a){"use strict";a.r(t),a.d(t,"default",(function(){return d}));var n=a(3),r=a(7),c=a(0),o=a.n(c),l=a(206),i=a(199),s=a(195),u=function(e){return e.docs.find((function(t){return t.id===e.mainDocId}))};function d(e){var t,a,c=e.mobile,d=e.docsPluginId,m=e.dropdownActiveClassDisabled,f=e.dropdownItemsBefore,h=e.dropdownItemsAfter,v=Object(r.a)(e,["mobile","docsPluginId","dropdownActiveClassDisabled","dropdownItemsBefore","dropdownItemsAfter"]),b=Object(i.useActiveDocContext)(d),p=Object(i.useVersions)(d),g=Object(i.useLatestVersion)(d),k=Object(s.useDocsPreferredVersion)(d),E=k.preferredVersion,O=k.savePreferredVersionName;var j=null!==(t=null!==(a=b.activeVersion)&&void 0!==a?a:E)&&void 0!==t?t:g,y=c?"Versions":j.label,_=c?void 0:u(j).path;return o.a.createElement(l.a,Object(n.a)({},v,{mobile:c,label:y,to:_,items:function(){var e=p.map((function(e){var t=(null==b?void 0:b.alternateDocVersions[e.name])||u(e);return{isNavLink:!0,label:e.label,to:t.path,isActive:function(){return e===(null==b?void 0:b.activeVersion)},onClick:function(){O(e.name)}}})),t=[].concat(f,e,h);if(!(t.length<=1))return t}(),isActive:m?function(){return!1}:void 0}))}},275:function(e,t,a){"use strict";a.r(t),a.d(t,"default",(function(){return d}));var n=a(3),r=a(7),c=a(0),o=a.n(c),l=a(206),i=a(199),s=a(196),u=a(195);function d(e){var t,a,c=e.docId,d=e.activeSidebarClassName,m=e.label,f=e.docsPluginId,h=Object(r.a)(e,["docId","activeSidebarClassName","label","docsPluginId"]),v=Object(i.useActiveDocContext)(f),b=v.activeVersion,p=v.activeDoc,g=Object(u.useDocsPreferredVersion)(f).preferredVersion,k=Object(i.useLatestVersion)(f),E=null!==(t=null!=b?b:g)&&void 0!==t?t:k,O=E.docs.find((function(e){return e.id===c}));if(!O)throw new Error("DocNavbarItem: couldn't find any doc with id="+c+" in version "+E.name+".\nAvailable docIds=\n- "+E.docs.join("\n- "));return o.a.createElement(l.a,Object(n.a)({exact:!0},h,{className:Object(s.a)(h.className,(a={},a[d]=p&&p.sidebar===O.sidebar,a)),label:null!=m?m:O.id,to:O.path}))}}}]);
\ No newline at end of file
diff --git a/2.fba10c87.js.LICENSE.txt b/2.6a1a8326.js.LICENSE.txt
similarity index 100%
rename from 2.fba10c87.js.LICENSE.txt
rename to 2.6a1a8326.js.LICENSE.txt
diff --git a/22885c43.e67171d6.js b/22885c43.e67171d6.js
deleted file mode 100644
index 6046a86..0000000
--- a/22885c43.e67171d6.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[16],{209:function(e,r,n){"use strict";n.d(r,"a",(function(){return p})),n.d(r,"b",(function(){return m}));var a=n(0),t=n.n(a);function o(e,r,n){return r in e?Object.defineProperty(e,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[r]=n,e}function s(e,r){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);r&&(a=a.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),n.push.apply(n,a)}return n}function c(e){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?s(Object(n),!0).forEach((function(r){o(e,r,n[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):s(Object(n)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))}))}return e}function i(e,r){if(null==e)return{};var n,a,t=function(e,r){if(null==e)return{};var n,a,t={},o=Object.keys(e);for(a=0;a<o.length;a++)n=o[a],r.indexOf(n)>=0||(t[n]=e[n]);return t}(e,r);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)n=o[a],r.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(t[n]=e[n])}return t}var u=t.a.createContext({}),d=function(e){var r=t.a.useContext(u),n=r;return e&&(n="function"==typeof e?e(r):c(c({},r),e)),n},p=function(e){var r=d(e.components);return t.a.createElement(u.Provider,{value:r},e.children)},l={inlineCode:"code",wrapper:function(e){var r=e.children;return t.a.createElement(t.a.Fragment,{},r)}},b=t.a.forwardRef((function(e,r){var n=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),p=d(n),b=a,m=p["".concat(s,".").concat(b)]||p[b]||l[b]||o;return n?t.a.createElement(m,c(c({ref:r},u),{},{components:n})):t.a.createElement(m,c({ref:r},u))}));function m(e,r){var n=arguments,a=r&&r.mdxType;if("string"==typeof e||a){var o=n.length,s=new Array(o);s[0]=b;var c={};for(var i in r)hasOwnProperty.call(r,i)&&(c[i]=r[i]);c.originalType=e,c.mdxType="string"==typeof e?e:a,s[1]=c;for(var u=2;u<o;u++)s[u]=n[u];return t.a.createElement.apply(null,s)}return t.a.createElement.apply(null,n)}b.displayName="MDXCreateElement"},83:function(e,r,n){"use strict";n.r(r),n.d(r,"frontMatter",(function(){return s})),n.d(r,"metadata",(function(){return c})),n.d(r,"toc",(function(){return i})),n.d(r,"default",(function(){return d}));var a=n(3),t=n(7),o=(n(0),n(209)),s={title:"Test and Troubleshooting"},c={unversionedId:"adminDocs/yarn/TestAndTroubleshooting",id:"adminDocs/yarn/TestAndTroubleshooting",isDocsHomePage:!1,title:"Test and Troubleshooting",description:"\x3c!--",source:"@site/docs/adminDocs/yarn/TestAndTroubleshooting.md",slug:"/adminDocs/yarn/TestAndTroubleshooting",permalink:"/docs/next/adminDocs/yarn/TestAndTroubleshooting",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/adminDocs/yarn/TestAndTroubleshooting.md",version:"current"},i=[{value:"Test with a tensorflow job",id:"test-with-a-tensorflow-job",children:[]},{value:"Issues:",id:"issues",children:[{value:"Issue 1: Fail to start nodemanager after system reboot",id:"issue-1-fail-to-start-nodemanager-after-system-reboot",children:[]},{value:"Issue 2: container-executor permission denied",id:"issue-2-container-executor-permission-denied",children:[]},{value:"Issue 3\uff1aHow to get docker service log",id:"issue-3\uff1ahow-to-get-docker-service-log",children:[]},{value:"Issue 4\uff1adocker can&#39;t remove containers with errors like <code>device or resource busy</code>",id:"issue-4\uff1adocker-cant-remove-containers-with-errors-like-device-or-resource-busy",children:[]},{value:"Issue 5\uff1aYarn failed to start containers",id:"issue-5\uff1ayarn-failed-to-start-containers",children:[]}]}],u={toc:i};function d(e){var r=e.components,n=Object(t.a)(e,["components"]);return Object(o.b)("wrapper",Object(a.a)({},u,n,{components:r,mdxType:"MDXLayout"}),Object(o.b)("h2",{id:"test-with-a-tensorflow-job"},"Test with a tensorflow job"),Object(o.b)("p",null,"Distributed-shell + GPU + cgroup"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-bash"},' ... \\\n job run \\\n --env DOCKER_JAVA_HOME=/opt/java \\\n --env DOCKER_HADOOP_HDFS_HOME=/hadoop-current --name distributed-tf-gpu \\\n --env YARN_CONTAINER_RUNTIME_DOCKER_CONTAINER_NETWORK=calico-network \\\n --worker_docker_image tf-1.13.1-gpu:0.0.1 \\\n --ps_docker_image tf-1.13.1-cpu:0.0.1 \\\n --input_path hdfs://${dfs_name_service}/tmp/cifar-10-data \\\n --checkpoint_path hdfs://${dfs_name_service}/user/hadoop/tf-distributed-checkpoint \\\n --num_ps 0 \\\n --ps_resources memory=4G,vcores=2,gpu=0 \\\n --ps_launch_cmd "python /test/cifar10_estimator/cifar10_main.py --data-dir=hdfs://${dfs_name_service}/tmp/cifar-10-data --job-dir=hdfs://${dfs_name_service}/tmp/cifar-10-jobdir --num-gpus=0" \\\n --worker_resources memory=4G,vcores=2,gpu=1 --verbose \\\n --num_workers 1 \\\n --worker_launch_cmd "python /test/cifar10_estimator/cifar10_main.py --data-dir=hdfs://${dfs_name_service}/tmp/cifar-10-data --job-dir=hdfs://${dfs_name_service}/tmp/cifar-10-jobdir --train-steps=500 --eval-batch-size=16 --train-batch-size=16 --sync --num-gpus=1"\n')),Object(o.b)("h2",{id:"issues"},"Issues:"),Object(o.b)("h3",{id:"issue-1-fail-to-start-nodemanager-after-system-reboot"},"Issue 1: Fail to start nodemanager after system reboot"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"2018-09-20 18:54:39,785 ERROR org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor: Failed to bootstrap configured resource subsystems!\norg.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.ResourceHandlerException: Unexpected: Cannot create yarn cgroup Subsystem:cpu Mount points:/proc/mounts User:yarn Path:/sys/fs/cgroup/cpu,cpuacct/hadoop-yarn\n  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsHandlerImpl.initializePreMountedCGroupController(CGroupsHandlerImpl.java:425)\n  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsHandlerImpl.initializeCGroupController(CGroupsHandlerImpl.java:377)\n  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsCpuResourceHandlerImpl.bootstrap(CGroupsCpuResourceHandlerImpl.java:98)\n  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsCpuResourceHandlerImpl.bootstrap(CGroupsCpuResourceHandlerImpl.java:87)\n  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.ResourceHandlerChain.bootstrap(ResourceHandlerChain.java:58)\n  at org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor.init(LinuxContainerExecutor.java:320)\n  at org.apache.hadoop.yarn.server.nodemanager.NodeManager.serviceInit(NodeManager.java:389)\n  at org.apache.hadoop.service.AbstractService.init(AbstractService.java:164)\n  at org.apache.hadoop.yarn.server.nodemanager.NodeManager.initAndStartNodeManager(NodeManager.java:929)\n  at org.apache.hadoop.yarn.server.nodemanager.NodeManager.main(NodeManager.java:997)\n2018-09-20 18:54:39,789 INFO org.apache.hadoop.service.AbstractService: Service NodeManager failed in state INITED\n")),Object(o.b)("p",null,"Solution: Grant user yarn the access to  ",Object(o.b)("inlineCode",{parentName:"p"},"/sys/fs/cgroup/cpu,cpuacct"),", which is the subfolder of cgroup mount destination."),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"chown :yarn -R /sys/fs/cgroup/cpu,cpuacct\nchmod g+rwx -R /sys/fs/cgroup/cpu,cpuacct\n")),Object(o.b)("p",null,"If GPUs are used\uff0cthe access to cgroup devices folder is neede as well"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"chown :yarn -R /sys/fs/cgroup/devices\nchmod g+rwx -R /sys/fs/cgroup/devices\n")),Object(o.b)("h3",{id:"issue-2-container-executor-permission-denied"},"Issue 2: container-executor permission denied"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},'2018-09-21 09:36:26,102 WARN org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.privileged.PrivilegedOperationExecutor: IOException executing command:\njava.io.IOException: Cannot run program "/etc/yarn/sbin/Linux-amd64-64/container-executor": error=13, Permission denied\n        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)\n        at org.apache.hadoop.util.Shell.runCommand(Shell.java:938)\n        at org.apache.hadoop.util.Shell.run(Shell.java:901)\n        at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:1213)\n')),Object(o.b)("p",null,"Solution: The permission of ",Object(o.b)("inlineCode",{parentName:"p"},"/etc/yarn/sbin/Linux-amd64-64/container-executor")," should be 6050"),Object(o.b)("h3",{id:"issue-3\uff1ahow-to-get-docker-service-log"},"Issue 3\uff1aHow to get docker service log"),Object(o.b)("p",null,"Solution: we can get docker log with the following command"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"journalctl -u docker\n")),Object(o.b)("h3",{id:"issue-4\uff1adocker-cant-remove-containers-with-errors-like-device-or-resource-busy"},"Issue 4\uff1adocker can't remove containers with errors like ",Object(o.b)("inlineCode",{parentName:"h3"},"device or resource busy")),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-bash"},"$ docker rm 0bfafa146431\nError response from daemon: Unable to remove filesystem for 0bfafa146431771f6024dcb9775ef47f170edb2f1852f71916ba44209ca6120a: remove /app/docker/containers/0bfafa146431771f6024dcb9775ef47f170edb2f152f71916ba44209ca6120a/shm: device or resource busy\n")),Object(o.b)("p",null,"Solution: to find which process leads to a ",Object(o.b)("inlineCode",{parentName:"p"},"device or resource busy"),", we can add a shell script, named ",Object(o.b)("inlineCode",{parentName:"p"},"find-busy-mnt.sh")),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-bash"},'#!/usr/bin/env bash\n\n# A simple script to get information about mount points and pids and their\n# mount namespaces.\n\nif [ $# -ne 1 ];then\necho "Usage: $0 <devicemapper-device-id>"\nexit 1\nfi\n\nID=$1\n\nMOUNTS=`find /proc/*/mounts | xargs grep $ID 2>/dev/null`\n\n[ -z "$MOUNTS" ] &&  echo "No pids found" && exit 0\n\nprintf "PID\\tNAME\\t\\tMNTNS\\n"\necho "$MOUNTS" | while read LINE; do\nPID=`echo $LINE | cut -d ":" -f1 | cut -d "/" -f3`\n# Ignore self and thread-self\nif [ "$PID" == "self" ] || [ "$PID" == "thread-self" ]; then\n  continue\nfi\nNAME=`ps -q $PID -o comm=`\nMNTNS=`readlink /proc/$PID/ns/mnt`\nprintf "%s\\t%s\\t\\t%s\\n" "$PID" "$NAME" "$MNTNS"\ndone\n')),Object(o.b)("p",null,"Kill the process by pid, which is found by the script"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-bash"},"$ chmod +x find-busy-mnt.sh\n./find-busy-mnt.sh 0bfafa146431771f6024dcb9775ef47f170edb2f152f71916ba44209ca6120a\n# PID   NAME            MNTNS\n# 5007  ntpd            mnt:[4026533598]\n$ kill -9 5007\n")),Object(o.b)("h3",{id:"issue-5\uff1ayarn-failed-to-start-containers"},"Issue 5\uff1aYarn failed to start containers"),Object(o.b)("p",null,"if the number of GPUs required by applications is larger than the number of GPUs in the cluster, there would be some containers can't be created."))}d.isMDXComponent=!0}}]);
\ No newline at end of file
diff --git a/22e91045.66821ff3.js b/22e91045.3cd10386.js
similarity index 98%
rename from 22e91045.66821ff3.js
rename to 22e91045.3cd10386.js
index bd51a92..bd0c353 100644
--- a/22e91045.66821ff3.js
+++ b/22e91045.3cd10386.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[17],{209:function(e,n,t){"use strict";t.d(n,"a",(function(){return m})),t.d(n,"b",(function(){return s}));var a=t(0),r=t.n(a);function l(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function c(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function p(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?c(Object(t),!0).forEach((function(n){l(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):c(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function b(e,n){if(null==e)return{};var t,a,r=function(e,n){if(null==e)return{};var t,a,r={},l=Object.keys(e);for(a=0;a<l.length;a++)t=l[a],n.indexOf(t)>=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a<l.length;a++)t=l[a],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var i=r.a.createContext({}),o=function(e){var n=r.a.useContext(i),t=n;return e&&(t="function"==typeof e?e(n):p(p({},n),e)),t},m=function(e){var n=o(e.components);return r.a.createElement(i.Provider,{value:n},e.children)},d={inlineCode:"code",wrapper:function(e){var n=e.children;return r.a.createElement(r.a.Fragment,{},n)}},u=r.a.forwardRef((function(e,n){var t=e.components,a=e.mdxType,l=e.originalType,c=e.parentName,i=b(e,["components","mdxType","originalType","parentName"]),m=o(t),u=a,s=m["".concat(c,".").concat(u)]||m[u]||d[u]||l;return t?r.a.createElement(s,p(p({ref:n},i),{},{components:t})):r.a.createElement(s,p({ref:n},i))}));function s(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var l=t.length,c=new Array(l);c[0]=u;var p={};for(var b in n)hasOwnProperty.call(n,b)&&(p[b]=n[b]);p.originalType=e,p.mdxType="string"==typeof e?e:a,c[1]=p;for(var i=2;i<l;i++)c[i]=t[i];return r.a.createElement.apply(null,c)}return r.a.createElement.apply(null,t)}u.displayName="MDXCreateElement"},84:function(e,n,t){"use strict";t.r(n),t.d(n,"frontMatter",(function(){return c})),t.d(n,"metadata",(function(){return p})),t.d(n,"toc",(function(){return b})),t.d(n,"default",(function(){return o}));var a=t(3),r=t(7),l=(t(0),t(209)),c={title:"Environment REST API"},p={unversionedId:"userDocs/api/environment",id:"userDocs/api/environment",isDocsHomePage:!1,title:"Environment REST API",description:"\x3c!--",source:"@site/docs/userDocs/api/environment.md",slug:"/userDocs/api/environment",permalink:"/docs/next/userDocs/api/environment",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/userDocs/api/environment.md",version:"current",sidebar:"docs",previous:{title:"Experiment REST API",permalink:"/docs/next/userDocs/api/experiment"},next:{title:"Experiment Template REST API",permalink:"/docs/next/userDocs/api/experiment-template"}},b=[{value:"Create Environment",id:"create-environment",children:[{value:"Parameters",id:"parameters",children:[]},{value:"Code Example",id:"code-example",children:[]}]},{value:"List Environment",id:"list-environment",children:[{value:"Code Example",id:"code-example-1",children:[]}]},{value:"Get Environment",id:"get-environment",children:[{value:"Parameters",id:"parameters-1",children:[]},{value:"Code Example",id:"code-example-2",children:[]}]},{value:"Patch Environment",id:"patch-environment",children:[{value:"Parameters",id:"parameters-2",children:[]},{value:"Code Example",id:"code-example-3",children:[]},{value:"Delete Environment",id:"delete-environment",children:[]},{value:"Parameters",id:"parameters-3",children:[]},{value:"Code Example",id:"code-example-4",children:[]}]}],i={toc:b};function o(e){var n=e.components,t=Object(r.a)(e,["components"]);return Object(l.b)("wrapper",Object(a.a)({},i,t,{components:n,mdxType:"MDXLayout"}),Object(l.b)("h2",{id:"create-environment"},"Create Environment"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"POST /api/v1/environment\n")),Object(l.b)("h3",{id:"parameters"},"Parameters"),Object(l.b)("p",null,"Put EnvironmentSpec in request body."),Object(l.b)("h4",{id:"environmentspec"},Object(l.b)("strong",{parentName:"h4"},"EnvironmentSpec")),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Environment name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"dockerImage"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Docker image name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"kernelSpec"),Object(l.b)("td",{parentName:"tr",align:null},"KernelSpec"),Object(l.b)("td",{parentName:"tr",align:null},"Environment spec.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"description"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Description of environment.")))),Object(l.b)("h4",{id:"kernelspec"},Object(l.b)("strong",{parentName:"h4"},"KernelSpec")),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Kernel name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"channels"),Object(l.b)("td",{parentName:"tr",align:null},"List<String",">"),Object(l.b)("td",{parentName:"tr",align:null},"Names of the channels.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"condaDependencies"),Object(l.b)("td",{parentName:"tr",align:null},"List<String",">"),Object(l.b)("td",{parentName:"tr",align:null},"List of kernel conda dependencies.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"pipDependencies"),Object(l.b)("td",{parentName:"tr",align:null},"List<String",">"),Object(l.b)("td",{parentName:"tr",align:null},"List of kernel pip dependencies.")))),Object(l.b)("h3",{id:"code-example"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},'curl -X POST -H "Content-Type: application/json" -d \'\n{\n  "name": "my-submarine-env",\n  "dockerImage" : "continuumio/anaconda3",\n  "kernelSpec" : {\n    "name" : "team_default_python_3.7",\n    "channels" : ["defaults"],\n    "condaDependencies" :\n      ["_ipyw_jlab_nb_ext_conf=0.1.0=py37_0",\n      "alabaster=0.7.12=py37_0",\n      "anaconda=2020.02=py37_0",\n      "anaconda-client=1.7.2=py37_0",\n      "anaconda-navigator=1.9.12=py37_0"],\n    "pipDependencies" :\n      ["apache-submarine==0.5.0",\n      "pyarrow==0.17.0"]\n  }\n}\n\' http://127.0.0.1:32080/api/v1/environment\n')),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    "environmentId":"environment_1626160071451_0001",\n    "environmentSpec":{\n      "name":"my-submarine-env",\n      "dockerImage":"continuumio/anaconda3",\n      "kernelSpec":{\n        "name":"team_default_python_3.7",\n        "channels":["defaults"],\n        "condaDependencies":\n          ["_ipyw_jlab_nb_ext_conf\\u003d0.1.0\\u003dpy37_0",\n          "alabaster\\u003d0.7.12\\u003dpy37_0",\n          "anaconda\\u003d2020.02\\u003dpy37_0",\n          "anaconda-client\\u003d1.7.2\\u003dpy37_0",\n          "anaconda-navigator\\u003d1.9.12\\u003dpy37_0"],\n        "pipDependencies":\n          ["apache-submarine\\u003d\\u003d0.5.0",\n          "pyarrow\\u003d\\u003d0.17.0"]\n      },\n      "description":null,\n      "image":null\n    }\n  },\n  "attributes":{}\n}\n')),Object(l.b)("h2",{id:"list-environment"},"List Environment"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"GET /api/v1/environment\n")),Object(l.b)("h3",{id:"code-example-1"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/environment\n")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":[\n    {\n      "environmentId":"environment_1600862964725_0002",\n      "environmentSpec":{\n        "name":"notebook-gpu-env",\n        "dockerImage":"apache/submarine:jupyter-notebook-gpu-0.7.0-SNAPSHOT",\n        "kernelSpec":{\n          "name":"submarine_jupyter_py3",\n          "channels":["defaults"],\n          "condaDependencies":[],\n          "pipDependencies":[]\n        },\n        "description":null,\n        "image":null\n      }\n    },\n    {\n      "environmentId":"environment_1626160071451_0001",\n      "environmentSpec":{\n        "name":"my-submarine-env",\n        "dockerImage":"continuumio/anaconda3",\n        "kernelSpec":{\n          "name":"team_default_python_3.7",\n          "channels":["defaults"],\n          "condaDependencies":\n            ["_ipyw_jlab_nb_ext_conf\\u003d0.1.0\\u003dpy37_0",\n            "alabaster\\u003d0.7.12\\u003dpy37_0",\n            "anaconda\\u003d2020.02\\u003dpy37_0",\n            "anaconda-client\\u003d1.7.2\\u003dpy37_0",\n            "anaconda-navigator\\u003d1.9.12\\u003dpy37_0"],\n          "pipDependencies":\n            ["apache-submarine\\u003d\\u003d0.5.0",\n            "pyarrow\\u003d\\u003d0.17.0"]\n        },\n        "description":null,\n        "image":null\n      }\n    },\n    {\n      "environmentId":"environment_1600862964725_0001",\n      "environmentSpec":{\n        "name":"notebook-env",\n        "dockerImage":"apache/submarine:jupyter-notebook-0.7.0-SNAPSHOT",\n        "kernelSpec":{\n          "name":"submarine_jupyter_py3",\n          "channels":["defaults"],\n          "condaDependencies":[],\n          "pipDependencies":[]\n        },\n        "description":null,\n        "image":null\n      }\n    }\n  ],\n  "attributes":{}\n}\n')),Object(l.b)("h2",{id:"get-environment"},"Get Environment"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"GET /api/v1/environment/{name}\n")),Object(l.b)("h3",{id:"parameters-1"},"Parameters"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"In"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"path"),Object(l.b)("td",{parentName:"tr",align:null},"Environment name.")))),Object(l.b)("h3",{id:"code-example-2"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/environment/my-submarine-env\n")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    "environmentId":"environment_1626160071451_0001",\n    "environmentSpec":{\n      "name":"my-submarine-env",\n      "dockerImage":"continuumio/anaconda3",\n      "kernelSpec":{\n        "name":"team_default_python_3.7",\n        "channels":["defaults"],\n        "condaDependencies":\n          ["_ipyw_jlab_nb_ext_conf\\u003d0.1.0\\u003dpy37_0",\n          "alabaster\\u003d0.7.12\\u003dpy37_0",\n          "anaconda\\u003d2020.02\\u003dpy37_0",\n          "anaconda-client\\u003d1.7.2\\u003dpy37_0",\n          "anaconda-navigator\\u003d1.9.12\\u003dpy37_0"],\n        "pipDependencies":\n          ["apache-submarine\\u003d\\u003d0.5.0",\n          "pyarrow\\u003d\\u003d0.17.0"]\n      },\n      "description":null,\n      "image":null\n    }\n  },\n  "attributes":{}\n}\n')),Object(l.b)("h2",{id:"patch-environment"},"Patch Environment"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"PATCH /api/v1/environment/{name}\n")),Object(l.b)("h3",{id:"parameters-2"},"Parameters"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"In"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"path and body"),Object(l.b)("td",{parentName:"tr",align:null},"Environment name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"dockerImage"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Docker image name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"kernelSpec"),Object(l.b)("td",{parentName:"tr",align:null},"KernelSpec"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Environment spec.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"description"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Description of environment. This field is optional.")))),Object(l.b)("h3",{id:"code-example-3"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},'curl -X PATCH -H "Content-Type: application/json" -d \'\n{\n  "name": "my-submarine-env",\n  "dockerImage" : "continuumio/anaconda3",\n  "kernelSpec" : {\n    "name" : "team_default_python_3.7_updated",\n    "channels" : ["defaults"],\n    "condaDependencies" :\n      ["_ipyw_jlab_nb_ext_conf=0.1.0=py37_0",\n      "alabaster=0.7.12=py37_0"],\n    "pipDependencies" :\n      []\n  }\n}\n\' http://127.0.0.1:32080/api/v1/environment/my-submarine-env\n')),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    "environmentId":"environment_1626160071451_0003",\n    "environmentSpec":{\n      "name":"my-submarine-env",\n      "dockerImage":"continuumio/anaconda3",\n      "kernelSpec":{\n        "name":"team_default_python_3.7_updated",\n        "channels":["defaults"],\n        "condaDependencies":\n          ["_ipyw_jlab_nb_ext_conf\\u003d0.1.0\\u003dpy37_0",\n          "alabaster\\u003d0.7.12\\u003dpy37_0"],\n        "pipDependencies":[]\n      },\n      "description":null,\n      "image":null\n    }\n  },\n  "attributes":{}\n}\n')),Object(l.b)("h3",{id:"delete-environment"},"Delete Environment"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"DELETE /api/v1/environment/{name}\n")),Object(l.b)("h3",{id:"parameters-3"},"Parameters"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"In"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"path"),Object(l.b)("td",{parentName:"tr",align:null},"Environment name.")))),Object(l.b)("h3",{id:"code-example-4"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},"curl -X DELETE http://127.0.0.1:32080/api/v1/environment/my-submarine-env\n")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    "environmentId":"environment_1626160071451_0001",\n    "environmentSpec":{\n      "name":"my-submarine-env",\n      "dockerImage":"continuumio/anaconda3",\n      "kernelSpec":{\n        "name":"team_default_python_3.7",\n        "channels":["defaults"],\n        "condaDependencies":\n          ["_ipyw_jlab_nb_ext_conf\\u003d0.1.0\\u003dpy37_0",\n          "alabaster\\u003d0.7.12\\u003dpy37_0",\n          "anaconda\\u003d2020.02\\u003dpy37_0",\n          "anaconda-client\\u003d1.7.2\\u003dpy37_0",\n          "anaconda-navigator\\u003d1.9.12\\u003dpy37_0"],\n        "pipDependencies":\n          ["apache-submarine\\u003d\\u003d0.5.0",\n          "pyarrow\\u003d\\u003d0.17.0"]\n      },\n      "description":null,\n      "image":null\n    }\n  },"attributes":{}\n}\n')))}o.isMDXComponent=!0}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[16],{194:function(e,n,t){"use strict";t.d(n,"a",(function(){return m})),t.d(n,"b",(function(){return s}));var a=t(0),r=t.n(a);function l(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function c(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function p(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?c(Object(t),!0).forEach((function(n){l(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):c(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function b(e,n){if(null==e)return{};var t,a,r=function(e,n){if(null==e)return{};var t,a,r={},l=Object.keys(e);for(a=0;a<l.length;a++)t=l[a],n.indexOf(t)>=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a<l.length;a++)t=l[a],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var i=r.a.createContext({}),o=function(e){var n=r.a.useContext(i),t=n;return e&&(t="function"==typeof e?e(n):p(p({},n),e)),t},m=function(e){var n=o(e.components);return r.a.createElement(i.Provider,{value:n},e.children)},d={inlineCode:"code",wrapper:function(e){var n=e.children;return r.a.createElement(r.a.Fragment,{},n)}},u=r.a.forwardRef((function(e,n){var t=e.components,a=e.mdxType,l=e.originalType,c=e.parentName,i=b(e,["components","mdxType","originalType","parentName"]),m=o(t),u=a,s=m["".concat(c,".").concat(u)]||m[u]||d[u]||l;return t?r.a.createElement(s,p(p({ref:n},i),{},{components:t})):r.a.createElement(s,p({ref:n},i))}));function s(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var l=t.length,c=new Array(l);c[0]=u;var p={};for(var b in n)hasOwnProperty.call(n,b)&&(p[b]=n[b]);p.originalType=e,p.mdxType="string"==typeof e?e:a,c[1]=p;for(var i=2;i<l;i++)c[i]=t[i];return r.a.createElement.apply(null,c)}return r.a.createElement.apply(null,t)}u.displayName="MDXCreateElement"},83:function(e,n,t){"use strict";t.r(n),t.d(n,"frontMatter",(function(){return c})),t.d(n,"metadata",(function(){return p})),t.d(n,"toc",(function(){return b})),t.d(n,"default",(function(){return o}));var a=t(3),r=t(7),l=(t(0),t(194)),c={title:"Environment REST API"},p={unversionedId:"userDocs/api/environment",id:"userDocs/api/environment",isDocsHomePage:!1,title:"Environment REST API",description:"\x3c!--",source:"@site/docs/userDocs/api/environment.md",slug:"/userDocs/api/environment",permalink:"/docs/next/userDocs/api/environment",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/userDocs/api/environment.md",version:"current",sidebar:"docs",previous:{title:"Experiment REST API",permalink:"/docs/next/userDocs/api/experiment"},next:{title:"Experiment Template REST API",permalink:"/docs/next/userDocs/api/experiment-template"}},b=[{value:"Create Environment",id:"create-environment",children:[{value:"Parameters",id:"parameters",children:[]},{value:"Code Example",id:"code-example",children:[]}]},{value:"List Environment",id:"list-environment",children:[{value:"Code Example",id:"code-example-1",children:[]}]},{value:"Get Environment",id:"get-environment",children:[{value:"Parameters",id:"parameters-1",children:[]},{value:"Code Example",id:"code-example-2",children:[]}]},{value:"Patch Environment",id:"patch-environment",children:[{value:"Parameters",id:"parameters-2",children:[]},{value:"Code Example",id:"code-example-3",children:[]},{value:"Delete Environment",id:"delete-environment",children:[]},{value:"Parameters",id:"parameters-3",children:[]},{value:"Code Example",id:"code-example-4",children:[]}]}],i={toc:b};function o(e){var n=e.components,t=Object(r.a)(e,["components"]);return Object(l.b)("wrapper",Object(a.a)({},i,t,{components:n,mdxType:"MDXLayout"}),Object(l.b)("h2",{id:"create-environment"},"Create Environment"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"POST /api/v1/environment\n")),Object(l.b)("h3",{id:"parameters"},"Parameters"),Object(l.b)("p",null,"Put EnvironmentSpec in request body."),Object(l.b)("h4",{id:"environmentspec"},Object(l.b)("strong",{parentName:"h4"},"EnvironmentSpec")),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Environment name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"dockerImage"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Docker image name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"kernelSpec"),Object(l.b)("td",{parentName:"tr",align:null},"KernelSpec"),Object(l.b)("td",{parentName:"tr",align:null},"Environment spec.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"description"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Description of environment.")))),Object(l.b)("h4",{id:"kernelspec"},Object(l.b)("strong",{parentName:"h4"},"KernelSpec")),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Kernel name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"channels"),Object(l.b)("td",{parentName:"tr",align:null},"List<String",">"),Object(l.b)("td",{parentName:"tr",align:null},"Names of the channels.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"condaDependencies"),Object(l.b)("td",{parentName:"tr",align:null},"List<String",">"),Object(l.b)("td",{parentName:"tr",align:null},"List of kernel conda dependencies.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"pipDependencies"),Object(l.b)("td",{parentName:"tr",align:null},"List<String",">"),Object(l.b)("td",{parentName:"tr",align:null},"List of kernel pip dependencies.")))),Object(l.b)("h3",{id:"code-example"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},'curl -X POST -H "Content-Type: application/json" -d \'\n{\n  "name": "my-submarine-env",\n  "dockerImage" : "continuumio/anaconda3",\n  "kernelSpec" : {\n    "name" : "team_default_python_3.7",\n    "channels" : ["defaults"],\n    "condaDependencies" :\n      ["_ipyw_jlab_nb_ext_conf=0.1.0=py37_0",\n      "alabaster=0.7.12=py37_0",\n      "anaconda=2020.02=py37_0",\n      "anaconda-client=1.7.2=py37_0",\n      "anaconda-navigator=1.9.12=py37_0"],\n    "pipDependencies" :\n      ["apache-submarine==0.5.0",\n      "pyarrow==0.17.0"]\n  }\n}\n\' http://127.0.0.1:32080/api/v1/environment\n')),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    "environmentId":"environment_1626160071451_0001",\n    "environmentSpec":{\n      "name":"my-submarine-env",\n      "dockerImage":"continuumio/anaconda3",\n      "kernelSpec":{\n        "name":"team_default_python_3.7",\n        "channels":["defaults"],\n        "condaDependencies":\n          ["_ipyw_jlab_nb_ext_conf\\u003d0.1.0\\u003dpy37_0",\n          "alabaster\\u003d0.7.12\\u003dpy37_0",\n          "anaconda\\u003d2020.02\\u003dpy37_0",\n          "anaconda-client\\u003d1.7.2\\u003dpy37_0",\n          "anaconda-navigator\\u003d1.9.12\\u003dpy37_0"],\n        "pipDependencies":\n          ["apache-submarine\\u003d\\u003d0.5.0",\n          "pyarrow\\u003d\\u003d0.17.0"]\n      },\n      "description":null,\n      "image":null\n    }\n  },\n  "attributes":{}\n}\n')),Object(l.b)("h2",{id:"list-environment"},"List Environment"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"GET /api/v1/environment\n")),Object(l.b)("h3",{id:"code-example-1"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/environment\n")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":[\n    {\n      "environmentId":"environment_1600862964725_0002",\n      "environmentSpec":{\n        "name":"notebook-gpu-env",\n        "dockerImage":"apache/submarine:jupyter-notebook-gpu-0.7.0-SNAPSHOT",\n        "kernelSpec":{\n          "name":"submarine_jupyter_py3",\n          "channels":["defaults"],\n          "condaDependencies":[],\n          "pipDependencies":[]\n        },\n        "description":null,\n        "image":null\n      }\n    },\n    {\n      "environmentId":"environment_1626160071451_0001",\n      "environmentSpec":{\n        "name":"my-submarine-env",\n        "dockerImage":"continuumio/anaconda3",\n        "kernelSpec":{\n          "name":"team_default_python_3.7",\n          "channels":["defaults"],\n          "condaDependencies":\n            ["_ipyw_jlab_nb_ext_conf\\u003d0.1.0\\u003dpy37_0",\n            "alabaster\\u003d0.7.12\\u003dpy37_0",\n            "anaconda\\u003d2020.02\\u003dpy37_0",\n            "anaconda-client\\u003d1.7.2\\u003dpy37_0",\n            "anaconda-navigator\\u003d1.9.12\\u003dpy37_0"],\n          "pipDependencies":\n            ["apache-submarine\\u003d\\u003d0.5.0",\n            "pyarrow\\u003d\\u003d0.17.0"]\n        },\n        "description":null,\n        "image":null\n      }\n    },\n    {\n      "environmentId":"environment_1600862964725_0001",\n      "environmentSpec":{\n        "name":"notebook-env",\n        "dockerImage":"apache/submarine:jupyter-notebook-0.7.0-SNAPSHOT",\n        "kernelSpec":{\n          "name":"submarine_jupyter_py3",\n          "channels":["defaults"],\n          "condaDependencies":[],\n          "pipDependencies":[]\n        },\n        "description":null,\n        "image":null\n      }\n    }\n  ],\n  "attributes":{}\n}\n')),Object(l.b)("h2",{id:"get-environment"},"Get Environment"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"GET /api/v1/environment/{name}\n")),Object(l.b)("h3",{id:"parameters-1"},"Parameters"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"In"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"path"),Object(l.b)("td",{parentName:"tr",align:null},"Environment name.")))),Object(l.b)("h3",{id:"code-example-2"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/environment/my-submarine-env\n")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    "environmentId":"environment_1626160071451_0001",\n    "environmentSpec":{\n      "name":"my-submarine-env",\n      "dockerImage":"continuumio/anaconda3",\n      "kernelSpec":{\n        "name":"team_default_python_3.7",\n        "channels":["defaults"],\n        "condaDependencies":\n          ["_ipyw_jlab_nb_ext_conf\\u003d0.1.0\\u003dpy37_0",\n          "alabaster\\u003d0.7.12\\u003dpy37_0",\n          "anaconda\\u003d2020.02\\u003dpy37_0",\n          "anaconda-client\\u003d1.7.2\\u003dpy37_0",\n          "anaconda-navigator\\u003d1.9.12\\u003dpy37_0"],\n        "pipDependencies":\n          ["apache-submarine\\u003d\\u003d0.5.0",\n          "pyarrow\\u003d\\u003d0.17.0"]\n      },\n      "description":null,\n      "image":null\n    }\n  },\n  "attributes":{}\n}\n')),Object(l.b)("h2",{id:"patch-environment"},"Patch Environment"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"PATCH /api/v1/environment/{name}\n")),Object(l.b)("h3",{id:"parameters-2"},"Parameters"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"In"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"path and body"),Object(l.b)("td",{parentName:"tr",align:null},"Environment name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"dockerImage"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Docker image name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"kernelSpec"),Object(l.b)("td",{parentName:"tr",align:null},"KernelSpec"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Environment spec.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"description"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Description of environment. This field is optional.")))),Object(l.b)("h3",{id:"code-example-3"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},'curl -X PATCH -H "Content-Type: application/json" -d \'\n{\n  "name": "my-submarine-env",\n  "dockerImage" : "continuumio/anaconda3",\n  "kernelSpec" : {\n    "name" : "team_default_python_3.7_updated",\n    "channels" : ["defaults"],\n    "condaDependencies" :\n      ["_ipyw_jlab_nb_ext_conf=0.1.0=py37_0",\n      "alabaster=0.7.12=py37_0"],\n    "pipDependencies" :\n      []\n  }\n}\n\' http://127.0.0.1:32080/api/v1/environment/my-submarine-env\n')),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    "environmentId":"environment_1626160071451_0003",\n    "environmentSpec":{\n      "name":"my-submarine-env",\n      "dockerImage":"continuumio/anaconda3",\n      "kernelSpec":{\n        "name":"team_default_python_3.7_updated",\n        "channels":["defaults"],\n        "condaDependencies":\n          ["_ipyw_jlab_nb_ext_conf\\u003d0.1.0\\u003dpy37_0",\n          "alabaster\\u003d0.7.12\\u003dpy37_0"],\n        "pipDependencies":[]\n      },\n      "description":null,\n      "image":null\n    }\n  },\n  "attributes":{}\n}\n')),Object(l.b)("h3",{id:"delete-environment"},"Delete Environment"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"DELETE /api/v1/environment/{name}\n")),Object(l.b)("h3",{id:"parameters-3"},"Parameters"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"In"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"path"),Object(l.b)("td",{parentName:"tr",align:null},"Environment name.")))),Object(l.b)("h3",{id:"code-example-4"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},"curl -X DELETE http://127.0.0.1:32080/api/v1/environment/my-submarine-env\n")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    "environmentId":"environment_1626160071451_0001",\n    "environmentSpec":{\n      "name":"my-submarine-env",\n      "dockerImage":"continuumio/anaconda3",\n      "kernelSpec":{\n        "name":"team_default_python_3.7",\n        "channels":["defaults"],\n        "condaDependencies":\n          ["_ipyw_jlab_nb_ext_conf\\u003d0.1.0\\u003dpy37_0",\n          "alabaster\\u003d0.7.12\\u003dpy37_0",\n          "anaconda\\u003d2020.02\\u003dpy37_0",\n          "anaconda-client\\u003d1.7.2\\u003dpy37_0",\n          "anaconda-navigator\\u003d1.9.12\\u003dpy37_0"],\n        "pipDependencies":\n          ["apache-submarine\\u003d\\u003d0.5.0",\n          "pyarrow\\u003d\\u003d0.17.0"]\n      },\n      "description":null,\n      "image":null\n    }\n  },"attributes":{}\n}\n')))}o.isMDXComponent=!0}}]);
\ No newline at end of file
diff --git a/27f12fe0.3aba8788.js b/27f12fe0.7cd2b4d7.js
similarity index 98%
rename from 27f12fe0.3aba8788.js
rename to 27f12fe0.7cd2b4d7.js
index f88a02b..d8b5a4a 100644
--- a/27f12fe0.3aba8788.js
+++ b/27f12fe0.7cd2b4d7.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[18],{209:function(e,n,t){"use strict";t.d(n,"a",(function(){return u})),t.d(n,"b",(function(){return b}));var a=t(0),o=t.n(a);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function s(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?i(Object(t),!0).forEach((function(n){r(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):i(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function c(e,n){if(null==e)return{};var t,a,o=function(e,n){if(null==e)return{};var t,a,o={},r=Object.keys(e);for(a=0;a<r.length;a++)t=r[a],n.indexOf(t)>=0||(o[t]=e[t]);return o}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a<r.length;a++)t=r[a],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}var p=o.a.createContext({}),l=function(e){var n=o.a.useContext(p),t=n;return e&&(t="function"==typeof e?e(n):s(s({},n),e)),t},u=function(e){var n=l(e.components);return o.a.createElement(p.Provider,{value:n},e.children)},d={inlineCode:"code",wrapper:function(e){var n=e.children;return o.a.createElement(o.a.Fragment,{},n)}},h=o.a.forwardRef((function(e,n){var t=e.components,a=e.mdxType,r=e.originalType,i=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),u=l(t),h=a,b=u["".concat(i,".").concat(h)]||u[h]||d[h]||r;return t?o.a.createElement(b,s(s({ref:n},p),{},{components:t})):o.a.createElement(b,s({ref:n},p))}));function b(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var r=t.length,i=new Array(r);i[0]=h;var s={};for(var c in n)hasOwnProperty.call(n,c)&&(s[c]=n[c]);s.originalType=e,s.mdxType="string"==typeof e?e:a,i[1]=s;for(var p=2;p<r;p++)i[p]=t[p];return o.a.createElement.apply(null,i)}return o.a.createElement.apply(null,t)}h.displayName="MDXCreateElement"},294:function(e,n,t){"use strict";t.r(n),n.default=t.p+"assets/files/Dockerfile.cifar10.mx_1.5-cff207e9070bfca947922e0977637093.1"},85:function(e,n,t){"use strict";t.r(n),t.d(n,"frontMatter",(function(){return i})),t.d(n,"metadata",(function(){return s})),t.d(n,"toc",(function(){return c})),t.d(n,"default",(function(){return l}));var a=t(3),o=t(7),r=(t(0),t(209)),i={title:"YARN Runtime Quick Start Guide"},s={unversionedId:"userDocs/yarn/YARNRuntimeGuide",id:"version-0.6.0/userDocs/yarn/YARNRuntimeGuide",isDocsHomePage:!1,title:"YARN Runtime Quick Start Guide",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/userDocs/yarn/YARNRuntimeGuide.md",slug:"/userDocs/yarn/YARNRuntimeGuide",permalink:"/docs/userDocs/yarn/YARNRuntimeGuide",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/yarn/YARNRuntimeGuide.md",version:"0.6.0"},c=[{value:"Prerequisite",id:"prerequisite",children:[]},{value:"Build your own Docker image",id:"build-your-own-docker-image",children:[]},{value:"Launch TensorFlow Application:",id:"launch-tensorflow-application",children:[{value:"Without Docker",id:"without-docker",children:[]},{value:"Building a Python virtual environment with TensorFlow",id:"building-a-python-virtual-environment-with-tensorflow",children:[]},{value:"Get the training examples",id:"get-the-training-examples",children:[]},{value:"With Docker",id:"with-docker",children:[]}]},{value:"Launch PyTorch Application:",id:"launch-pytorch-application",children:[{value:"Without Docker",id:"without-docker-1",children:[]},{value:"Building a Python virtual environment with PyTorch",id:"building-a-python-virtual-environment-with-pytorch",children:[]},{value:"Get the training examples",id:"get-the-training-examples-1",children:[]},{value:"With Docker",id:"with-docker-1",children:[]}]},{value:"Launch MXNet Application:",id:"launch-mxnet-application",children:[{value:"Without Docker",id:"without-docker-2",children:[]},{value:"Building a Python virtual environment with MXNet",id:"building-a-python-virtual-environment-with-mxnet",children:[]},{value:"Get the training examples",id:"get-the-training-examples-2",children:[]},{value:"With Docker",id:"with-docker-2",children:[]}]},{value:"Use YARN Service to run Submarine: Deprecated",id:"use-yarn-service-to-run-submarine-deprecated",children:[]}],p={toc:c};function l(e){var n=e.components,i=Object(o.a)(e,["components"]);return Object(r.b)("wrapper",Object(a.a)({},p,i,{components:n,mdxType:"MDXLayout"}),Object(r.b)("h2",{id:"prerequisite"},"Prerequisite"),Object(r.b)("p",null,"Check out the ",Object(r.b)("a",{parentName:"p",href:"../../adminDocs/yarn/README"},"Running Submarine on YARN")),Object(r.b)("h2",{id:"build-your-own-docker-image"},"Build your own Docker image"),Object(r.b)("p",null,"When you follow the documents below, and want to build your own Docker image for Tensorflow/PyTorch/MXNet? Please check out ",Object(r.b)("a",{parentName:"p",href:"Dockerfiles"},"Build your Docker image")," for more details."),Object(r.b)("h2",{id:"launch-tensorflow-application"},"Launch TensorFlow Application:"),Object(r.b)("h3",{id:"without-docker"},"Without Docker"),Object(r.b)("p",null,"You need:"),Object(r.b)("ul",null,Object(r.b)("li",{parentName:"ul"},"Build a Python virtual environment with TensorFlow 1.13.1 installed"),Object(r.b)("li",{parentName:"ul"},"A cluster with Hadoop 2.9 or above.")),Object(r.b)("h3",{id:"building-a-python-virtual-environment-with-tensorflow"},"Building a Python virtual environment with TensorFlow"),Object(r.b)("p",null,"TonY requires a Python virtual environment zip with TensorFlow and any needed Python libraries already installed."),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre"},"wget https://files.pythonhosted.org/packages/33/bc/fa0b5347139cd9564f0d44ebd2b147ac97c36b2403943dbee8a25fd74012/virtualenv-16.0.0.tar.gz\ntar xf virtualenv-16.0.0.tar.gz\n\n# Make sure to install using Python 3, as TensorFlow only provides Python 3 artifacts\npython virtualenv-16.0.0/virtualenv.py venv\n. venv/bin/activate\npip install tensorflow==1.13.1\nzip -r myvenv.zip venv\ndeactivate\n")),Object(r.b)("p",null,"The above commands will produced a myvenv.zip and it will be used in below example. There's no need to copy it to other nodes. And it is not needed when using Docker to run the job."),Object(r.b)("p",null,Object(r.b)("strong",{parentName:"p"},"Note:")," If you require a version of TensorFlow and TensorBoard prior to ",Object(r.b)("inlineCode",{parentName:"p"},"1.13.1"),", take a look at ",Object(r.b)("a",{parentName:"p",href:"https://github.com/linkedin/TonY/issues/42"},"this")," issue."),Object(r.b)("h3",{id:"get-the-training-examples"},"Get the training examples"),Object(r.b)("p",null,"Get mnist_distributed.py from ",Object(r.b)("a",{parentName:"p",href:"https://github.com/linkedin/TonY/tree/master/tony-examples/mnist-tensorflow"},"https://github.com/linkedin/TonY/tree/master/tony-examples/mnist-tensorflow")),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre"},'SUBMARINE_VERSION=<REPLACE_VERSION>\nSUBMARINE_HADOOP_VERSION=3.1\nCLASSPATH=$(hadoop classpath --glob):path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar \\\njava org.apache.submarine.client.cli.Cli job run --name tf-job-001 \\\n --framework tensorflow \\\n --verbose \\\n --input_path "" \\\n --num_workers 2 \\\n --worker_resources memory=1G,vcores=1 \\\n --num_ps 1 \\\n --ps_resources memory=1G,vcores=1 \\\n --worker_launch_cmd "myvenv.zip/venv/bin/python mnist_distributed.py --steps 2 --data_dir /tmp/data --working_dir /tmp/mode" \\\n --ps_launch_cmd "myvenv.zip/venv/bin/python mnist_distributed.py --steps 2 --data_dir /tmp/data --working_dir /tmp/mode" \\\n --insecure \\\n --conf tony.containers.resources=path-to/myvenv.zip#archive,path-to/mnist_distributed.py,path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar\n')),Object(r.b)("p",null,"You should then be able to see links and status of the jobs from command line:"),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre"},"2019-04-22 20:30:42,611 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000003/pi status: RUNNING\n2019-04-22 20:30:42,612 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 1 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000004/pi status: RUNNING\n2019-04-22 20:30:42,612 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: ps index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000002/pi status: RUNNING\n2019-04-22 20:30:42,612 INFO tony.TonyClient: Logs for ps 0 at: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000002/pi\n2019-04-22 20:30:42,612 INFO tony.TonyClient: Logs for worker 0 at: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000003/pi\n2019-04-22 20:30:42,612 INFO tony.TonyClient: Logs for worker 1 at: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000004/pi\n2019-04-22 20:30:44,625 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: ps index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000002/pi status: FINISHED\n2019-04-22 20:30:44,625 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000003/pi status: FINISHED\n2019-04-22 20:30:44,626 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 1 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000004/pi status: FINISHED\n\n")),Object(r.b)("h3",{id:"with-docker"},"With Docker"),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre"},'SUBMARINE_VERSION=<REPLACE_VERSION>\nSUBMARINE_HADOOP_VERSION=3.1\nCLASSPATH=$(hadoop classpath --glob):path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar \\\njava org.apache.submarine.client.cli.Cli job run --name tf-job-001 \\\n --framework tensorflow \\\n --docker_image hadoopsubmarine/tf-1.8.0-cpu:0.0.1 \\\n --input_path hdfs://pi-aw:9000/dataset/cifar-10-data \\\n --worker_resources memory=3G,vcores=2 \\\n --worker_launch_cmd "export CLASSPATH=\\$(/hadoop-3.1.0/bin/hadoop classpath --glob) && cd /test/models/tutorials/image/cifar10_estimator && python cifar10_main.py --data-dir=%input_path% --job-dir=%checkpoint_path% --train-steps=10000 --eval-batch-size=16 --train-batch-size=16 --variable-strategy=CPU --num-gpus=0 --sync" \\\n --env JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 \\\n --env DOCKER_HADOOP_HDFS_HOME=/hadoop-3.1.0 \\\n --env DOCKER_JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 \\\n --env HADOOP_HOME=/hadoop-3.1.0 \\\n --env HADOOP_YARN_HOME=/hadoop-3.1.0 \\\n --env HADOOP_COMMON_HOME=/hadoop-3.1.0 \\\n --env HADOOP_HDFS_HOME=/hadoop-3.1.0 \\\n --env HADOOP_CONF_DIR=/hadoop-3.1.0/etc/hadoop \\\n --conf tony.containers.resources=path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar\n')),Object(r.b)("h4",{id:"notes"},"Notes:"),Object(r.b)("p",null,"1) ",Object(r.b)("inlineCode",{parentName:"p"},"DOCKER_JAVA_HOME")," points to JAVA_HOME inside Docker image."),Object(r.b)("p",null,"2) ",Object(r.b)("inlineCode",{parentName:"p"},"DOCKER_HADOOP_HDFS_HOME")," points to HADOOP_HDFS_HOME inside Docker image."),Object(r.b)("p",null,"We removed TonY submodule after applying ",Object(r.b)("a",{parentName:"p",href:"https://issues.apache.org/jira/browse/SUBMARINE-371"},"SUBMARINE-371")," and changed to use TonY dependency directly."),Object(r.b)("p",null,"After Submarine v0.2.0, there is a uber jar ",Object(r.b)("inlineCode",{parentName:"p"},"submarine-all-${SUBMARINE_VERSION}-hadoop-${HADOOP_VERSION}.jar")," released together with\nthe ",Object(r.b)("inlineCode",{parentName:"p"},"submarine-core-${SUBMARINE_VERSION}.jar"),", ",Object(r.b)("inlineCode",{parentName:"p"},"submarine-yarnservice-runtime-${SUBMARINE_VERSION}.jar")," and ",Object(r.b)("inlineCode",{parentName:"p"},"submarine-tony-runtime-${SUBMARINE_VERSION}.jar"),"."),Object(r.b)("br",null),Object(r.b)("h2",{id:"launch-pytorch-application"},"Launch PyTorch Application:"),Object(r.b)("h3",{id:"without-docker-1"},"Without Docker"),Object(r.b)("p",null,"You need:"),Object(r.b)("ul",null,Object(r.b)("li",{parentName:"ul"},"Build a Python virtual environment with PyTorch 0.4.0+ installed"),Object(r.b)("li",{parentName:"ul"},"A cluster with Hadoop 2.9 or above.")),Object(r.b)("h3",{id:"building-a-python-virtual-environment-with-pytorch"},"Building a Python virtual environment with PyTorch"),Object(r.b)("p",null,"TonY requires a Python virtual environment zip with PyTorch and any needed Python libraries already installed."),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre"},"wget https://files.pythonhosted.org/packages/33/bc/fa0b5347139cd9564f0d44ebd2b147ac97c36b2403943dbee8a25fd74012/virtualenv-16.0.0.tar.gz\ntar xf virtualenv-16.0.0.tar.gz\n\npython virtualenv-16.0.0/virtualenv.py venv\n. venv/bin/activate\npip install pytorch==0.4.0\nzip -r myvenv.zip venv\ndeactivate\n")),Object(r.b)("h3",{id:"get-the-training-examples-1"},"Get the training examples"),Object(r.b)("p",null,"Get mnist_distributed.py from ",Object(r.b)("a",{parentName:"p",href:"https://github.com/linkedin/TonY/tree/master/tony-examples/mnist-pytorch"},"https://github.com/linkedin/TonY/tree/master/tony-examples/mnist-pytorch")),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre"},'SUBMARINE_VERSION=<REPLACE_VERSION>\nSUBMARINE_HADOOP_VERSION=3.1\nCLASSPATH=$(hadoop classpath --glob):path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar \\\njava org.apache.submarine.client.cli.Cli job run --name PyTorch-job-001 \\\n --framework pytorch\n --num_workers 2 \\\n --worker_resources memory=3G,vcores=2 \\\n --num_ps 2 \\\n --ps_resources memory=3G,vcores=2 \\\n --worker_launch_cmd "myvenv.zip/venv/bin/python mnist_distributed.py" \\\n --ps_launch_cmd "myvenv.zip/venv/bin/python mnist_distributed.py" \\\n --insecure \\\n --conf tony.containers.resources=path-to/myvenv.zip#archive,path-to/mnist_distributed.py, \\\npath-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar\n')),Object(r.b)("p",null,"You should then be able to see links and status of the jobs from command line:"),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre"},"2019-04-22 20:30:42,611 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000003/pi status: RUNNING\n2019-04-22 20:30:42,612 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 1 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000004/pi status: RUNNING\n2019-04-22 20:30:42,612 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: ps index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000002/pi status: RUNNING\n2019-04-22 20:30:42,612 INFO tony.TonyClient: Logs for ps 0 at: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000002/pi\n2019-04-22 20:30:42,612 INFO tony.TonyClient: Logs for worker 0 at: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000003/pi\n2019-04-22 20:30:42,612 INFO tony.TonyClient: Logs for worker 1 at: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000004/pi\n2019-04-22 20:30:44,625 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: ps index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000002/pi status: FINISHED\n2019-04-22 20:30:44,625 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000003/pi status: FINISHED\n2019-04-22 20:30:44,626 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 1 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000004/pi status: FINISHED\n\n")),Object(r.b)("h3",{id:"with-docker-1"},"With Docker"),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre"},'SUBMARINE_VERSION=<REPLACE_VERSION>\nSUBMARINE_HADOOP_VERSION=3.1\nCLASSPATH=$(hadoop classpath --glob):path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar \\\njava org.apache.submarine.client.cli.Cli job run --name PyTorch-job-001 \\\n --framework pytorch\n --docker_image pytorch-latest-gpu:0.0.1 \\\n --input_path "" \\\n --num_workers 1 \\\n --worker_resources memory=3G,vcores=2 \\\n --worker_launch_cmd "cd /test/ && python cifar10_tutorial.py" \\\n --env JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 \\\n --env DOCKER_HADOOP_HDFS_HOME=/hadoop-3.1.2 \\\n --env DOCKER_JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 \\\n --env HADOOP_HOME=/hadoop-3.1.2 \\\n --env HADOOP_YARN_HOME=/hadoop-3.1.2 \\\n --env HADOOP_COMMON_HOME=/hadoop-3.1.2 \\\n --env HADOOP_HDFS_HOME=/hadoop-3.1.2 \\\n --env HADOOP_CONF_DIR=/hadoop-3.1.2/etc/hadoop \\\n --conf tony.containers.resources=path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar\n')),Object(r.b)("h2",{id:"launch-mxnet-application"},"Launch MXNet Application:"),Object(r.b)("h3",{id:"without-docker-2"},"Without Docker"),Object(r.b)("p",null,"You need:"),Object(r.b)("ul",null,Object(r.b)("li",{parentName:"ul"},"Build a Python virtual environment with MXNet installed"),Object(r.b)("li",{parentName:"ul"},"A cluster with Hadoop 2.9 or above.")),Object(r.b)("h3",{id:"building-a-python-virtual-environment-with-mxnet"},"Building a Python virtual environment with MXNet"),Object(r.b)("p",null,"TonY requires a Python virtual environment zip with MXNet and any needed Python libraries already installed."),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre"},"wget https://files.pythonhosted.org/packages/33/bc/fa0b5347139cd9564f0d44ebd2b147ac97c36b2403943dbee8a25fd74012/virtualenv-16.0.0.tar.gz\ntar xf virtualenv-16.0.0.tar.gz\n\npython virtualenv-16.0.0/virtualenv.py venv\n. venv/bin/activate\npip install mxnet==1.5.1\nzip -r myvenv.zip venv\ndeactivate\n")),Object(r.b)("h3",{id:"get-the-training-examples-2"},"Get the training examples"),Object(r.b)("p",null,"Get image_classification.py from this ",Object(r.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/blob/master/dev-support/mini-submarine/submarine/image_classification.py"},"link")),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre"},'SUBMARINE_VERSION=<REPLACE_VERSION>\nSUBMARINE_HADOOP_VERSION=3.1\nCLASSPATH=$(hadoop classpath --glob):path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar \\\njava org.apache.submarine.client.cli.Cli job run --name MXNet-job-001 \\\n --framework mxnet\n --input_path "" \\\n --num_workers 2 \\\n --worker_resources memory=3G,vcores=2 \\\n --worker_launch_cmd "myvenv.zip/venv/bin/python image_classification.py --dataset cifar10 --model vgg11 --epochs 1 --kvstore dist_sync" \\\n --num_ps 2 \\\n --ps_resources memory=3G,vcores=2 \\\n --ps_launch_cmd "myvenv.zip/venv/bin/python image_classification.py --dataset cifar10 --model vgg11 --epochs 1 --kvstore dist_sync" \\\n --num_schedulers=1 \\\n --scheduler_resources memory=1G,vcores=1 \\\n --scheduler_launch_cmd="myvenv.zip/venv/bin/python image_classification.py --dataset cifar10 --model vgg11 --epochs 1 --kvstore dist_sync" \\\n --insecure \\\n --conf tony.containers.resources=path-to/myvenv.zip#archive,path-to/image_classification.py, \\\npath-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar\n')),Object(r.b)("p",null,"You should then be able to see links and status of the jobs from command line:"),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre"},"2020-04-16 20:23:43,834 INFO tony.TonyClient: Task status updated: [TaskInfo] name: server, index: 1, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000004/pi status: RUNNING\n2020-04-16 20:23:43,834 INFO tony.TonyClient: Task status updated: [TaskInfo] name: server, index: 0, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000003/pi status: RUNNING\n2020-04-16 20:23:43,834 INFO tony.TonyClient: Task status updated: [TaskInfo] name: worker, index: 1, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000006/pi status: RUNNING\n2020-04-16 20:23:43,834 INFO tony.TonyClient: Task status updated: [TaskInfo] name: worker, index: 0, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000005/pi status: RUNNING\n2020-04-16 20:23:43,834 INFO tony.TonyClient: Task status updated: [TaskInfo] name: scheduler, index: 0, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000002/pi status: RUNNING\n2020-04-16 20:23:43,839 INFO tony.TonyClient: Logs for scheduler 0 at: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000002/pi\n2020-04-16 20:23:43,839 INFO tony.TonyClient: Logs for server 0 at: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000003/pi\n2020-04-16 20:23:43,840 INFO tony.TonyClient: Logs for server 1 at: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000004/pi\n2020-04-16 20:23:43,840 INFO tony.TonyClient: Logs for worker 0 at: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000005/pi\n2020-04-16 20:23:43,840 INFO tony.TonyClient: Logs for worker 1 at: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000006/pi\n2020-04-16 21:02:09,723 INFO tony.TonyClient: Task status updated: [TaskInfo] name: scheduler, index: 0, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000002/pi status: SUCCEEDED\n2020-04-16 21:02:09,736 INFO tony.TonyClient: Task status updated: [TaskInfo] name: worker, index: 0, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000005/pi status: SUCCEEDED\n2020-04-16 21:02:09,737 INFO tony.TonyClient: Task status updated: [TaskInfo] name: server, index: 1, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000004/pi status: SUCCEEDED\n2020-04-16 21:02:09,737 INFO tony.TonyClient: Task status updated: [TaskInfo] name: worker, index: 1, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000006/pi status: SUCCEEDED\n2020-04-16 21:02:09,737 INFO tony.TonyClient: Task status updated: [TaskInfo] name: server, index: 0, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000003/pi status: SUCCEEDED\n")),Object(r.b)("h3",{id:"with-docker-2"},"With Docker"),Object(r.b)("p",null,"You could refer to this ",Object(r.b)("a",{target:"_blank",href:t(294).default},"sample Dockerfile")," for building your own Docker image."),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre"},'SUBMARINE_VERSION=<REPLACE_VERSION>\nSUBMARINE_HADOOP_VERSION=3.1\nCLASSPATH=$(hadoop classpath --glob):path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar \\\njava org.apache.submarine.client.cli.Cli job run --name MXNet-job-001 \\\n --framework mxnet\n --docker_image <your_docker_image> \\\n --input_path "" \\\n --num_schedulers 1 \\\n --scheduler_resources memory=1G,vcores=1 \\\n --scheduler_launch_cmd "/usr/bin/python image_classification.py --dataset cifar10 --model vgg11 --epochs 1 --kvstore dist_sync" \\\n --num_workers 2 \\\n --worker_resources memory=2G,vcores=1 \\\n --worker_launch_cmd "/usr/bin/python image_classification.py --dataset cifar10 --model vgg11 --epochs 1 --kvstore dist_sync" \\\n --num_ps 2 \\\n --ps_resources memory=2G,vcores=1 \\\n --ps_launch_cmd "/usr/bin/python image_classification.py --dataset cifar10 --model vgg11 --epochs 1 --kvstore dist_sync" \\\n --verbose \\\n --insecure \\\n --conf tony.containers.resources=path-to/image_classification.py,path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar\n')),Object(r.b)("h2",{id:"use-yarn-service-to-run-submarine-deprecated"},"Use YARN Service to run Submarine: Deprecated"),Object(r.b)("p",null,"Historically, Submarine supports to use ",Object(r.b)("a",{parentName:"p",href:"https://hadoop.apache.org/docs/r3.1.0/hadoop-yarn/hadoop-yarn-site/yarn-service/Overview.html"},"YARN Service")," to submit deep learning jobs. Now we stop supporting it because YARN service is not actively developed by community, and extra dependencies such as RegistryDNS/ATS-v2 causes lots of issues for setup."),Object(r.b)("p",null,"As of now, you can still use YARN service to run Submarine, but code will be removed in the future release. We will only support use TonY when use Submarine on YARN."))}l.isMDXComponent=!0}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[17],{194:function(e,n,t){"use strict";t.d(n,"a",(function(){return u})),t.d(n,"b",(function(){return b}));var a=t(0),o=t.n(a);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function s(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?i(Object(t),!0).forEach((function(n){r(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):i(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function c(e,n){if(null==e)return{};var t,a,o=function(e,n){if(null==e)return{};var t,a,o={},r=Object.keys(e);for(a=0;a<r.length;a++)t=r[a],n.indexOf(t)>=0||(o[t]=e[t]);return o}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a<r.length;a++)t=r[a],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}var p=o.a.createContext({}),l=function(e){var n=o.a.useContext(p),t=n;return e&&(t="function"==typeof e?e(n):s(s({},n),e)),t},u=function(e){var n=l(e.components);return o.a.createElement(p.Provider,{value:n},e.children)},d={inlineCode:"code",wrapper:function(e){var n=e.children;return o.a.createElement(o.a.Fragment,{},n)}},h=o.a.forwardRef((function(e,n){var t=e.components,a=e.mdxType,r=e.originalType,i=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),u=l(t),h=a,b=u["".concat(i,".").concat(h)]||u[h]||d[h]||r;return t?o.a.createElement(b,s(s({ref:n},p),{},{components:t})):o.a.createElement(b,s({ref:n},p))}));function b(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var r=t.length,i=new Array(r);i[0]=h;var s={};for(var c in n)hasOwnProperty.call(n,c)&&(s[c]=n[c]);s.originalType=e,s.mdxType="string"==typeof e?e:a,i[1]=s;for(var p=2;p<r;p++)i[p]=t[p];return o.a.createElement.apply(null,i)}return o.a.createElement.apply(null,t)}h.displayName="MDXCreateElement"},277:function(e,n,t){"use strict";t.r(n),n.default=t.p+"assets/files/Dockerfile.cifar10.mx_1.5-cff207e9070bfca947922e0977637093.1"},84:function(e,n,t){"use strict";t.r(n),t.d(n,"frontMatter",(function(){return i})),t.d(n,"metadata",(function(){return s})),t.d(n,"toc",(function(){return c})),t.d(n,"default",(function(){return l}));var a=t(3),o=t(7),r=(t(0),t(194)),i={title:"YARN Runtime Quick Start Guide"},s={unversionedId:"userDocs/yarn/YARNRuntimeGuide",id:"version-0.6.0/userDocs/yarn/YARNRuntimeGuide",isDocsHomePage:!1,title:"YARN Runtime Quick Start Guide",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/userDocs/yarn/YARNRuntimeGuide.md",slug:"/userDocs/yarn/YARNRuntimeGuide",permalink:"/docs/userDocs/yarn/YARNRuntimeGuide",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/yarn/YARNRuntimeGuide.md",version:"0.6.0"},c=[{value:"Prerequisite",id:"prerequisite",children:[]},{value:"Build your own Docker image",id:"build-your-own-docker-image",children:[]},{value:"Launch TensorFlow Application:",id:"launch-tensorflow-application",children:[{value:"Without Docker",id:"without-docker",children:[]},{value:"Building a Python virtual environment with TensorFlow",id:"building-a-python-virtual-environment-with-tensorflow",children:[]},{value:"Get the training examples",id:"get-the-training-examples",children:[]},{value:"With Docker",id:"with-docker",children:[]}]},{value:"Launch PyTorch Application:",id:"launch-pytorch-application",children:[{value:"Without Docker",id:"without-docker-1",children:[]},{value:"Building a Python virtual environment with PyTorch",id:"building-a-python-virtual-environment-with-pytorch",children:[]},{value:"Get the training examples",id:"get-the-training-examples-1",children:[]},{value:"With Docker",id:"with-docker-1",children:[]}]},{value:"Launch MXNet Application:",id:"launch-mxnet-application",children:[{value:"Without Docker",id:"without-docker-2",children:[]},{value:"Building a Python virtual environment with MXNet",id:"building-a-python-virtual-environment-with-mxnet",children:[]},{value:"Get the training examples",id:"get-the-training-examples-2",children:[]},{value:"With Docker",id:"with-docker-2",children:[]}]},{value:"Use YARN Service to run Submarine: Deprecated",id:"use-yarn-service-to-run-submarine-deprecated",children:[]}],p={toc:c};function l(e){var n=e.components,i=Object(o.a)(e,["components"]);return Object(r.b)("wrapper",Object(a.a)({},p,i,{components:n,mdxType:"MDXLayout"}),Object(r.b)("h2",{id:"prerequisite"},"Prerequisite"),Object(r.b)("p",null,"Check out the ",Object(r.b)("a",{parentName:"p",href:"../../adminDocs/yarn/README"},"Running Submarine on YARN")),Object(r.b)("h2",{id:"build-your-own-docker-image"},"Build your own Docker image"),Object(r.b)("p",null,"When you follow the documents below, and want to build your own Docker image for Tensorflow/PyTorch/MXNet? Please check out ",Object(r.b)("a",{parentName:"p",href:"Dockerfiles"},"Build your Docker image")," for more details."),Object(r.b)("h2",{id:"launch-tensorflow-application"},"Launch TensorFlow Application:"),Object(r.b)("h3",{id:"without-docker"},"Without Docker"),Object(r.b)("p",null,"You need:"),Object(r.b)("ul",null,Object(r.b)("li",{parentName:"ul"},"Build a Python virtual environment with TensorFlow 1.13.1 installed"),Object(r.b)("li",{parentName:"ul"},"A cluster with Hadoop 2.9 or above.")),Object(r.b)("h3",{id:"building-a-python-virtual-environment-with-tensorflow"},"Building a Python virtual environment with TensorFlow"),Object(r.b)("p",null,"TonY requires a Python virtual environment zip with TensorFlow and any needed Python libraries already installed."),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre"},"wget https://files.pythonhosted.org/packages/33/bc/fa0b5347139cd9564f0d44ebd2b147ac97c36b2403943dbee8a25fd74012/virtualenv-16.0.0.tar.gz\ntar xf virtualenv-16.0.0.tar.gz\n\n# Make sure to install using Python 3, as TensorFlow only provides Python 3 artifacts\npython virtualenv-16.0.0/virtualenv.py venv\n. venv/bin/activate\npip install tensorflow==1.13.1\nzip -r myvenv.zip venv\ndeactivate\n")),Object(r.b)("p",null,"The above commands will produced a myvenv.zip and it will be used in below example. There's no need to copy it to other nodes. And it is not needed when using Docker to run the job."),Object(r.b)("p",null,Object(r.b)("strong",{parentName:"p"},"Note:")," If you require a version of TensorFlow and TensorBoard prior to ",Object(r.b)("inlineCode",{parentName:"p"},"1.13.1"),", take a look at ",Object(r.b)("a",{parentName:"p",href:"https://github.com/linkedin/TonY/issues/42"},"this")," issue."),Object(r.b)("h3",{id:"get-the-training-examples"},"Get the training examples"),Object(r.b)("p",null,"Get mnist_distributed.py from ",Object(r.b)("a",{parentName:"p",href:"https://github.com/linkedin/TonY/tree/master/tony-examples/mnist-tensorflow"},"https://github.com/linkedin/TonY/tree/master/tony-examples/mnist-tensorflow")),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre"},'SUBMARINE_VERSION=<REPLACE_VERSION>\nSUBMARINE_HADOOP_VERSION=3.1\nCLASSPATH=$(hadoop classpath --glob):path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar \\\njava org.apache.submarine.client.cli.Cli job run --name tf-job-001 \\\n --framework tensorflow \\\n --verbose \\\n --input_path "" \\\n --num_workers 2 \\\n --worker_resources memory=1G,vcores=1 \\\n --num_ps 1 \\\n --ps_resources memory=1G,vcores=1 \\\n --worker_launch_cmd "myvenv.zip/venv/bin/python mnist_distributed.py --steps 2 --data_dir /tmp/data --working_dir /tmp/mode" \\\n --ps_launch_cmd "myvenv.zip/venv/bin/python mnist_distributed.py --steps 2 --data_dir /tmp/data --working_dir /tmp/mode" \\\n --insecure \\\n --conf tony.containers.resources=path-to/myvenv.zip#archive,path-to/mnist_distributed.py,path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar\n')),Object(r.b)("p",null,"You should then be able to see links and status of the jobs from command line:"),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre"},"2019-04-22 20:30:42,611 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000003/pi status: RUNNING\n2019-04-22 20:30:42,612 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 1 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000004/pi status: RUNNING\n2019-04-22 20:30:42,612 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: ps index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000002/pi status: RUNNING\n2019-04-22 20:30:42,612 INFO tony.TonyClient: Logs for ps 0 at: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000002/pi\n2019-04-22 20:30:42,612 INFO tony.TonyClient: Logs for worker 0 at: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000003/pi\n2019-04-22 20:30:42,612 INFO tony.TonyClient: Logs for worker 1 at: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000004/pi\n2019-04-22 20:30:44,625 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: ps index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000002/pi status: FINISHED\n2019-04-22 20:30:44,625 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000003/pi status: FINISHED\n2019-04-22 20:30:44,626 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 1 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000004/pi status: FINISHED\n\n")),Object(r.b)("h3",{id:"with-docker"},"With Docker"),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre"},'SUBMARINE_VERSION=<REPLACE_VERSION>\nSUBMARINE_HADOOP_VERSION=3.1\nCLASSPATH=$(hadoop classpath --glob):path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar \\\njava org.apache.submarine.client.cli.Cli job run --name tf-job-001 \\\n --framework tensorflow \\\n --docker_image hadoopsubmarine/tf-1.8.0-cpu:0.0.1 \\\n --input_path hdfs://pi-aw:9000/dataset/cifar-10-data \\\n --worker_resources memory=3G,vcores=2 \\\n --worker_launch_cmd "export CLASSPATH=\\$(/hadoop-3.1.0/bin/hadoop classpath --glob) && cd /test/models/tutorials/image/cifar10_estimator && python cifar10_main.py --data-dir=%input_path% --job-dir=%checkpoint_path% --train-steps=10000 --eval-batch-size=16 --train-batch-size=16 --variable-strategy=CPU --num-gpus=0 --sync" \\\n --env JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 \\\n --env DOCKER_HADOOP_HDFS_HOME=/hadoop-3.1.0 \\\n --env DOCKER_JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 \\\n --env HADOOP_HOME=/hadoop-3.1.0 \\\n --env HADOOP_YARN_HOME=/hadoop-3.1.0 \\\n --env HADOOP_COMMON_HOME=/hadoop-3.1.0 \\\n --env HADOOP_HDFS_HOME=/hadoop-3.1.0 \\\n --env HADOOP_CONF_DIR=/hadoop-3.1.0/etc/hadoop \\\n --conf tony.containers.resources=path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar\n')),Object(r.b)("h4",{id:"notes"},"Notes:"),Object(r.b)("p",null,"1) ",Object(r.b)("inlineCode",{parentName:"p"},"DOCKER_JAVA_HOME")," points to JAVA_HOME inside Docker image."),Object(r.b)("p",null,"2) ",Object(r.b)("inlineCode",{parentName:"p"},"DOCKER_HADOOP_HDFS_HOME")," points to HADOOP_HDFS_HOME inside Docker image."),Object(r.b)("p",null,"We removed TonY submodule after applying ",Object(r.b)("a",{parentName:"p",href:"https://issues.apache.org/jira/browse/SUBMARINE-371"},"SUBMARINE-371")," and changed to use TonY dependency directly."),Object(r.b)("p",null,"After Submarine v0.2.0, there is a uber jar ",Object(r.b)("inlineCode",{parentName:"p"},"submarine-all-${SUBMARINE_VERSION}-hadoop-${HADOOP_VERSION}.jar")," released together with\nthe ",Object(r.b)("inlineCode",{parentName:"p"},"submarine-core-${SUBMARINE_VERSION}.jar"),", ",Object(r.b)("inlineCode",{parentName:"p"},"submarine-yarnservice-runtime-${SUBMARINE_VERSION}.jar")," and ",Object(r.b)("inlineCode",{parentName:"p"},"submarine-tony-runtime-${SUBMARINE_VERSION}.jar"),"."),Object(r.b)("br",null),Object(r.b)("h2",{id:"launch-pytorch-application"},"Launch PyTorch Application:"),Object(r.b)("h3",{id:"without-docker-1"},"Without Docker"),Object(r.b)("p",null,"You need:"),Object(r.b)("ul",null,Object(r.b)("li",{parentName:"ul"},"Build a Python virtual environment with PyTorch 0.4.0+ installed"),Object(r.b)("li",{parentName:"ul"},"A cluster with Hadoop 2.9 or above.")),Object(r.b)("h3",{id:"building-a-python-virtual-environment-with-pytorch"},"Building a Python virtual environment with PyTorch"),Object(r.b)("p",null,"TonY requires a Python virtual environment zip with PyTorch and any needed Python libraries already installed."),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre"},"wget https://files.pythonhosted.org/packages/33/bc/fa0b5347139cd9564f0d44ebd2b147ac97c36b2403943dbee8a25fd74012/virtualenv-16.0.0.tar.gz\ntar xf virtualenv-16.0.0.tar.gz\n\npython virtualenv-16.0.0/virtualenv.py venv\n. venv/bin/activate\npip install pytorch==0.4.0\nzip -r myvenv.zip venv\ndeactivate\n")),Object(r.b)("h3",{id:"get-the-training-examples-1"},"Get the training examples"),Object(r.b)("p",null,"Get mnist_distributed.py from ",Object(r.b)("a",{parentName:"p",href:"https://github.com/linkedin/TonY/tree/master/tony-examples/mnist-pytorch"},"https://github.com/linkedin/TonY/tree/master/tony-examples/mnist-pytorch")),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre"},'SUBMARINE_VERSION=<REPLACE_VERSION>\nSUBMARINE_HADOOP_VERSION=3.1\nCLASSPATH=$(hadoop classpath --glob):path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar \\\njava org.apache.submarine.client.cli.Cli job run --name PyTorch-job-001 \\\n --framework pytorch\n --num_workers 2 \\\n --worker_resources memory=3G,vcores=2 \\\n --num_ps 2 \\\n --ps_resources memory=3G,vcores=2 \\\n --worker_launch_cmd "myvenv.zip/venv/bin/python mnist_distributed.py" \\\n --ps_launch_cmd "myvenv.zip/venv/bin/python mnist_distributed.py" \\\n --insecure \\\n --conf tony.containers.resources=path-to/myvenv.zip#archive,path-to/mnist_distributed.py, \\\npath-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar\n')),Object(r.b)("p",null,"You should then be able to see links and status of the jobs from command line:"),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre"},"2019-04-22 20:30:42,611 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000003/pi status: RUNNING\n2019-04-22 20:30:42,612 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 1 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000004/pi status: RUNNING\n2019-04-22 20:30:42,612 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: ps index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000002/pi status: RUNNING\n2019-04-22 20:30:42,612 INFO tony.TonyClient: Logs for ps 0 at: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000002/pi\n2019-04-22 20:30:42,612 INFO tony.TonyClient: Logs for worker 0 at: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000003/pi\n2019-04-22 20:30:42,612 INFO tony.TonyClient: Logs for worker 1 at: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000004/pi\n2019-04-22 20:30:44,625 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: ps index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000002/pi status: FINISHED\n2019-04-22 20:30:44,625 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000003/pi status: FINISHED\n2019-04-22 20:30:44,626 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 1 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000004/pi status: FINISHED\n\n")),Object(r.b)("h3",{id:"with-docker-1"},"With Docker"),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre"},'SUBMARINE_VERSION=<REPLACE_VERSION>\nSUBMARINE_HADOOP_VERSION=3.1\nCLASSPATH=$(hadoop classpath --glob):path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar \\\njava org.apache.submarine.client.cli.Cli job run --name PyTorch-job-001 \\\n --framework pytorch\n --docker_image pytorch-latest-gpu:0.0.1 \\\n --input_path "" \\\n --num_workers 1 \\\n --worker_resources memory=3G,vcores=2 \\\n --worker_launch_cmd "cd /test/ && python cifar10_tutorial.py" \\\n --env JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 \\\n --env DOCKER_HADOOP_HDFS_HOME=/hadoop-3.1.2 \\\n --env DOCKER_JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 \\\n --env HADOOP_HOME=/hadoop-3.1.2 \\\n --env HADOOP_YARN_HOME=/hadoop-3.1.2 \\\n --env HADOOP_COMMON_HOME=/hadoop-3.1.2 \\\n --env HADOOP_HDFS_HOME=/hadoop-3.1.2 \\\n --env HADOOP_CONF_DIR=/hadoop-3.1.2/etc/hadoop \\\n --conf tony.containers.resources=path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar\n')),Object(r.b)("h2",{id:"launch-mxnet-application"},"Launch MXNet Application:"),Object(r.b)("h3",{id:"without-docker-2"},"Without Docker"),Object(r.b)("p",null,"You need:"),Object(r.b)("ul",null,Object(r.b)("li",{parentName:"ul"},"Build a Python virtual environment with MXNet installed"),Object(r.b)("li",{parentName:"ul"},"A cluster with Hadoop 2.9 or above.")),Object(r.b)("h3",{id:"building-a-python-virtual-environment-with-mxnet"},"Building a Python virtual environment with MXNet"),Object(r.b)("p",null,"TonY requires a Python virtual environment zip with MXNet and any needed Python libraries already installed."),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre"},"wget https://files.pythonhosted.org/packages/33/bc/fa0b5347139cd9564f0d44ebd2b147ac97c36b2403943dbee8a25fd74012/virtualenv-16.0.0.tar.gz\ntar xf virtualenv-16.0.0.tar.gz\n\npython virtualenv-16.0.0/virtualenv.py venv\n. venv/bin/activate\npip install mxnet==1.5.1\nzip -r myvenv.zip venv\ndeactivate\n")),Object(r.b)("h3",{id:"get-the-training-examples-2"},"Get the training examples"),Object(r.b)("p",null,"Get image_classification.py from this ",Object(r.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/blob/master/dev-support/mini-submarine/submarine/image_classification.py"},"link")),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre"},'SUBMARINE_VERSION=<REPLACE_VERSION>\nSUBMARINE_HADOOP_VERSION=3.1\nCLASSPATH=$(hadoop classpath --glob):path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar \\\njava org.apache.submarine.client.cli.Cli job run --name MXNet-job-001 \\\n --framework mxnet\n --input_path "" \\\n --num_workers 2 \\\n --worker_resources memory=3G,vcores=2 \\\n --worker_launch_cmd "myvenv.zip/venv/bin/python image_classification.py --dataset cifar10 --model vgg11 --epochs 1 --kvstore dist_sync" \\\n --num_ps 2 \\\n --ps_resources memory=3G,vcores=2 \\\n --ps_launch_cmd "myvenv.zip/venv/bin/python image_classification.py --dataset cifar10 --model vgg11 --epochs 1 --kvstore dist_sync" \\\n --num_schedulers=1 \\\n --scheduler_resources memory=1G,vcores=1 \\\n --scheduler_launch_cmd="myvenv.zip/venv/bin/python image_classification.py --dataset cifar10 --model vgg11 --epochs 1 --kvstore dist_sync" \\\n --insecure \\\n --conf tony.containers.resources=path-to/myvenv.zip#archive,path-to/image_classification.py, \\\npath-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar\n')),Object(r.b)("p",null,"You should then be able to see links and status of the jobs from command line:"),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre"},"2020-04-16 20:23:43,834 INFO tony.TonyClient: Task status updated: [TaskInfo] name: server, index: 1, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000004/pi status: RUNNING\n2020-04-16 20:23:43,834 INFO tony.TonyClient: Task status updated: [TaskInfo] name: server, index: 0, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000003/pi status: RUNNING\n2020-04-16 20:23:43,834 INFO tony.TonyClient: Task status updated: [TaskInfo] name: worker, index: 1, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000006/pi status: RUNNING\n2020-04-16 20:23:43,834 INFO tony.TonyClient: Task status updated: [TaskInfo] name: worker, index: 0, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000005/pi status: RUNNING\n2020-04-16 20:23:43,834 INFO tony.TonyClient: Task status updated: [TaskInfo] name: scheduler, index: 0, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000002/pi status: RUNNING\n2020-04-16 20:23:43,839 INFO tony.TonyClient: Logs for scheduler 0 at: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000002/pi\n2020-04-16 20:23:43,839 INFO tony.TonyClient: Logs for server 0 at: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000003/pi\n2020-04-16 20:23:43,840 INFO tony.TonyClient: Logs for server 1 at: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000004/pi\n2020-04-16 20:23:43,840 INFO tony.TonyClient: Logs for worker 0 at: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000005/pi\n2020-04-16 20:23:43,840 INFO tony.TonyClient: Logs for worker 1 at: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000006/pi\n2020-04-16 21:02:09,723 INFO tony.TonyClient: Task status updated: [TaskInfo] name: scheduler, index: 0, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000002/pi status: SUCCEEDED\n2020-04-16 21:02:09,736 INFO tony.TonyClient: Task status updated: [TaskInfo] name: worker, index: 0, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000005/pi status: SUCCEEDED\n2020-04-16 21:02:09,737 INFO tony.TonyClient: Task status updated: [TaskInfo] name: server, index: 1, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000004/pi status: SUCCEEDED\n2020-04-16 21:02:09,737 INFO tony.TonyClient: Task status updated: [TaskInfo] name: worker, index: 1, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000006/pi status: SUCCEEDED\n2020-04-16 21:02:09,737 INFO tony.TonyClient: Task status updated: [TaskInfo] name: server, index: 0, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000003/pi status: SUCCEEDED\n")),Object(r.b)("h3",{id:"with-docker-2"},"With Docker"),Object(r.b)("p",null,"You could refer to this ",Object(r.b)("a",{target:"_blank",href:t(277).default},"sample Dockerfile")," for building your own Docker image."),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre"},'SUBMARINE_VERSION=<REPLACE_VERSION>\nSUBMARINE_HADOOP_VERSION=3.1\nCLASSPATH=$(hadoop classpath --glob):path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar \\\njava org.apache.submarine.client.cli.Cli job run --name MXNet-job-001 \\\n --framework mxnet\n --docker_image <your_docker_image> \\\n --input_path "" \\\n --num_schedulers 1 \\\n --scheduler_resources memory=1G,vcores=1 \\\n --scheduler_launch_cmd "/usr/bin/python image_classification.py --dataset cifar10 --model vgg11 --epochs 1 --kvstore dist_sync" \\\n --num_workers 2 \\\n --worker_resources memory=2G,vcores=1 \\\n --worker_launch_cmd "/usr/bin/python image_classification.py --dataset cifar10 --model vgg11 --epochs 1 --kvstore dist_sync" \\\n --num_ps 2 \\\n --ps_resources memory=2G,vcores=1 \\\n --ps_launch_cmd "/usr/bin/python image_classification.py --dataset cifar10 --model vgg11 --epochs 1 --kvstore dist_sync" \\\n --verbose \\\n --insecure \\\n --conf tony.containers.resources=path-to/image_classification.py,path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar\n')),Object(r.b)("h2",{id:"use-yarn-service-to-run-submarine-deprecated"},"Use YARN Service to run Submarine: Deprecated"),Object(r.b)("p",null,"Historically, Submarine supports to use ",Object(r.b)("a",{parentName:"p",href:"https://hadoop.apache.org/docs/r3.1.0/hadoop-yarn/hadoop-yarn-site/yarn-service/Overview.html"},"YARN Service")," to submit deep learning jobs. Now we stop supporting it because YARN service is not actively developed by community, and extra dependencies such as RegistryDNS/ATS-v2 causes lots of issues for setup."),Object(r.b)("p",null,"As of now, you can still use YARN service to run Submarine, but code will be removed in the future release. We will only support use TonY when use Submarine on YARN."))}l.isMDXComponent=!0}}]);
\ No newline at end of file
diff --git a/2bab9bf0.891248b4.js b/2bab9bf0.bb5d412b.js
similarity index 97%
rename from 2bab9bf0.891248b4.js
rename to 2bab9bf0.bb5d412b.js
index 45802f2..4027761 100644
--- a/2bab9bf0.891248b4.js
+++ b/2bab9bf0.bb5d412b.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[19],{209:function(e,t,r){"use strict";r.d(t,"a",(function(){return b})),r.d(t,"b",(function(){return d}));var n=r(0),a=r.n(n);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function c(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){i(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function s(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=a.a.createContext({}),u=function(e){var t=a.a.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):c(c({},t),e)),r},b=function(e){var t=u(e.components);return a.a.createElement(l.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},p=a.a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,o=e.parentName,l=s(e,["components","mdxType","originalType","parentName"]),b=u(r),p=n,d=b["".concat(o,".").concat(p)]||b[p]||m[p]||i;return r?a.a.createElement(d,c(c({ref:t},l),{},{components:r})):a.a.createElement(d,c({ref:t},l))}));function d(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,o=new Array(i);o[0]=p;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c.mdxType="string"==typeof e?e:n,o[1]=c;for(var l=2;l<i;l++)o[l]=r[l];return a.a.createElement.apply(null,o)}return a.a.createElement.apply(null,r)}p.displayName="MDXCreateElement"},86:function(e,t,r){"use strict";r.r(t),r.d(t,"frontMatter",(function(){return o})),r.d(t,"metadata",(function(){return c})),r.d(t,"toc",(function(){return s})),r.d(t,"default",(function(){return u}));var n=r(3),a=r(7),i=(r(0),r(209)),o={title:"Tracking"},c={unversionedId:"userDocs/submarine-sdk/tracking",id:"version-0.6.0/userDocs/submarine-sdk/tracking",isDocsHomePage:!1,title:"Tracking",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/userDocs/submarine-sdk/tracking.md",slug:"/userDocs/submarine-sdk/tracking",permalink:"/docs/userDocs/submarine-sdk/tracking",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/submarine-sdk/tracking.md",version:"0.6.0",sidebar:"docs",previous:{title:"Model Client",permalink:"/docs/userDocs/submarine-sdk/model-client"},next:{title:"Submarine Spark Security Plugin",permalink:"/docs/userDocs/submarine-security/spark-security/README"}},s=[{value:"Functions",id:"functions",children:[{value:"<code>submarine.get_tracking_uri() -&gt; str</code>",id:"submarineget_tracking_uri---str",children:[]},{value:"<code>submarine.set_tracking_uri(uri: str) -&gt; None</code>",id:"submarineset_tracking_uriuri-str---none",children:[]},{value:"<code>submarine.log_param(key: str, value: str) -&gt; None</code>",id:"submarinelog_paramkey-str-value-str---none",children:[]},{value:"<code>submarine.log_metric(key: str, value: float, step=0) -&gt; None</code>",id:"submarinelog_metrickey-str-value-float-step0---none",children:[]}]}],l={toc:s};function u(e){var t=e.components,r=Object(a.a)(e,["components"]);return Object(i.b)("wrapper",Object(n.a)({},l,r,{components:t,mdxType:"MDXLayout"}),Object(i.b)("p",null,"It helps developers use submarine's internal data caching,\ndata exchange, and task tracking capabilities to more efficiently improve the\ndevelopment and execution of machine learning productivity"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Allow data scientist to track distributed ML experiment"),Object(i.b)("li",{parentName:"ul"},"Support store ML parameters and metrics in Submarine-server"),Object(i.b)("li",{parentName:"ul"},"Support hdfs, S3 and mysql (Currently we only support mysql)")),Object(i.b)("h2",{id:"functions"},"Functions"),Object(i.b)("h3",{id:"submarineget_tracking_uri---str"},Object(i.b)("inlineCode",{parentName:"h3"},"submarine.get_tracking_uri() -> str")),Object(i.b)("p",null,"Get the tracking URI. If none has been specified, check the environmental variables. If uri is still none, return the default submarine jdbc url."),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Returns")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},"The tracking URI."))),Object(i.b)("h3",{id:"submarineset_tracking_uriuri-str---none"},Object(i.b)("inlineCode",{parentName:"h3"},"submarine.set_tracking_uri(uri: str) -> None")),Object(i.b)("p",null,"set the tracking URI. You can also set the SUBMARINE_TRACKING_URI environment variable to have Submarine find a URI from there. The URI should be database connection string."),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Parameters")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"uri")," ","-"," Submarine record data to Mysql server. The database URL is expected in the format ",Object(i.b)("inlineCode",{parentName:"li"},"<dialect>+<driver>://<username>:<password>@<host>:<port>/<database>"),".\nBy default it's ",Object(i.b)("inlineCode",{parentName:"li"},"mysql+pymysql://submarine:password@submarine-database:3306/submarine"),".\nMore detail : ",Object(i.b)("a",{parentName:"li",href:"https://docs.sqlalchemy.org/en/latest/core/engines.html#database-urls"},"SQLAlchemy docs")))),Object(i.b)("h3",{id:"submarinelog_paramkey-str-value-str---none"},Object(i.b)("inlineCode",{parentName:"h3"},"submarine.log_param(key: str, value: str) -> None")),Object(i.b)("p",null,"log a single key-value parameter. The key and value are both strings."),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Parameters")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"key")," - Parameter name."),Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"value")," - Parameter value."))),Object(i.b)("h3",{id:"submarinelog_metrickey-str-value-float-step0---none"},Object(i.b)("inlineCode",{parentName:"h3"},"submarine.log_metric(key: str, value: float, step=0) -> None")),Object(i.b)("p",null,"log a single key-value metric. The value must always be a number."),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Parameters")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"key")," - Metric name."),Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"value")," - Metric value."),Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"step")," - A single integer step at which to log the specified Metrics, by default it's 0."))))}u.isMDXComponent=!0}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[18],{194:function(e,t,r){"use strict";r.d(t,"a",(function(){return b})),r.d(t,"b",(function(){return d}));var n=r(0),a=r.n(n);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function c(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){i(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function s(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=a.a.createContext({}),u=function(e){var t=a.a.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):c(c({},t),e)),r},b=function(e){var t=u(e.components);return a.a.createElement(l.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},p=a.a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,o=e.parentName,l=s(e,["components","mdxType","originalType","parentName"]),b=u(r),p=n,d=b["".concat(o,".").concat(p)]||b[p]||m[p]||i;return r?a.a.createElement(d,c(c({ref:t},l),{},{components:r})):a.a.createElement(d,c({ref:t},l))}));function d(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,o=new Array(i);o[0]=p;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c.mdxType="string"==typeof e?e:n,o[1]=c;for(var l=2;l<i;l++)o[l]=r[l];return a.a.createElement.apply(null,o)}return a.a.createElement.apply(null,r)}p.displayName="MDXCreateElement"},85:function(e,t,r){"use strict";r.r(t),r.d(t,"frontMatter",(function(){return o})),r.d(t,"metadata",(function(){return c})),r.d(t,"toc",(function(){return s})),r.d(t,"default",(function(){return u}));var n=r(3),a=r(7),i=(r(0),r(194)),o={title:"Tracking"},c={unversionedId:"userDocs/submarine-sdk/tracking",id:"version-0.6.0/userDocs/submarine-sdk/tracking",isDocsHomePage:!1,title:"Tracking",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/userDocs/submarine-sdk/tracking.md",slug:"/userDocs/submarine-sdk/tracking",permalink:"/docs/userDocs/submarine-sdk/tracking",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/submarine-sdk/tracking.md",version:"0.6.0",sidebar:"docs",previous:{title:"Model Client",permalink:"/docs/userDocs/submarine-sdk/model-client"},next:{title:"Submarine Spark Security Plugin",permalink:"/docs/userDocs/submarine-security/spark-security/README"}},s=[{value:"Functions",id:"functions",children:[{value:"<code>submarine.get_tracking_uri() -&gt; str</code>",id:"submarineget_tracking_uri---str",children:[]},{value:"<code>submarine.set_tracking_uri(uri: str) -&gt; None</code>",id:"submarineset_tracking_uriuri-str---none",children:[]},{value:"<code>submarine.log_param(key: str, value: str) -&gt; None</code>",id:"submarinelog_paramkey-str-value-str---none",children:[]},{value:"<code>submarine.log_metric(key: str, value: float, step=0) -&gt; None</code>",id:"submarinelog_metrickey-str-value-float-step0---none",children:[]}]}],l={toc:s};function u(e){var t=e.components,r=Object(a.a)(e,["components"]);return Object(i.b)("wrapper",Object(n.a)({},l,r,{components:t,mdxType:"MDXLayout"}),Object(i.b)("p",null,"It helps developers use submarine's internal data caching,\ndata exchange, and task tracking capabilities to more efficiently improve the\ndevelopment and execution of machine learning productivity"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Allow data scientist to track distributed ML experiment"),Object(i.b)("li",{parentName:"ul"},"Support store ML parameters and metrics in Submarine-server"),Object(i.b)("li",{parentName:"ul"},"Support hdfs, S3 and mysql (Currently we only support mysql)")),Object(i.b)("h2",{id:"functions"},"Functions"),Object(i.b)("h3",{id:"submarineget_tracking_uri---str"},Object(i.b)("inlineCode",{parentName:"h3"},"submarine.get_tracking_uri() -> str")),Object(i.b)("p",null,"Get the tracking URI. If none has been specified, check the environmental variables. If uri is still none, return the default submarine jdbc url."),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Returns")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},"The tracking URI."))),Object(i.b)("h3",{id:"submarineset_tracking_uriuri-str---none"},Object(i.b)("inlineCode",{parentName:"h3"},"submarine.set_tracking_uri(uri: str) -> None")),Object(i.b)("p",null,"set the tracking URI. You can also set the SUBMARINE_TRACKING_URI environment variable to have Submarine find a URI from there. The URI should be database connection string."),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Parameters")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"uri")," ","-"," Submarine record data to Mysql server. The database URL is expected in the format ",Object(i.b)("inlineCode",{parentName:"li"},"<dialect>+<driver>://<username>:<password>@<host>:<port>/<database>"),".\nBy default it's ",Object(i.b)("inlineCode",{parentName:"li"},"mysql+pymysql://submarine:password@submarine-database:3306/submarine"),".\nMore detail : ",Object(i.b)("a",{parentName:"li",href:"https://docs.sqlalchemy.org/en/latest/core/engines.html#database-urls"},"SQLAlchemy docs")))),Object(i.b)("h3",{id:"submarinelog_paramkey-str-value-str---none"},Object(i.b)("inlineCode",{parentName:"h3"},"submarine.log_param(key: str, value: str) -> None")),Object(i.b)("p",null,"log a single key-value parameter. The key and value are both strings."),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Parameters")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"key")," - Parameter name."),Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"value")," - Parameter value."))),Object(i.b)("h3",{id:"submarinelog_metrickey-str-value-float-step0---none"},Object(i.b)("inlineCode",{parentName:"h3"},"submarine.log_metric(key: str, value: float, step=0) -> None")),Object(i.b)("p",null,"log a single key-value metric. The value must always be a number."),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Parameters")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"key")," - Metric name."),Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"value")," - Metric value."),Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"step")," - A single integer step at which to log the specified Metrics, by default it's 0."))))}u.isMDXComponent=!0}}]);
\ No newline at end of file
diff --git a/2d4ab289.c1e9c4f4.js b/2d4ab289.f3ca3750.js
similarity index 98%
rename from 2d4ab289.c1e9c4f4.js
rename to 2d4ab289.f3ca3750.js
index 7cfa275..1fe2db7 100644
--- a/2d4ab289.c1e9c4f4.js
+++ b/2d4ab289.f3ca3750.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[20],{209:function(e,t,a){"use strict";a.d(t,"a",(function(){return m})),a.d(t,"b",(function(){return u}));var r=a(0),o=a.n(r);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function s(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?i(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function c(e,t){if(null==e)return{};var a,r,o=function(e,t){if(null==e)return{};var a,r,o={},n=Object.keys(e);for(r=0;r<n.length;r++)a=n[r],t.indexOf(a)>=0||(o[a]=e[a]);return o}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r<n.length;r++)a=n[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(o[a]=e[a])}return o}var p=o.a.createContext({}),b=function(e){var t=o.a.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):s(s({},t),e)),a},m=function(e){var t=b(e.components);return o.a.createElement(p.Provider,{value:t},e.children)},l={inlineCode:"code",wrapper:function(e){var t=e.children;return o.a.createElement(o.a.Fragment,{},t)}},h=o.a.forwardRef((function(e,t){var a=e.components,r=e.mdxType,n=e.originalType,i=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),m=b(a),h=r,u=m["".concat(i,".").concat(h)]||m[h]||l[h]||n;return a?o.a.createElement(u,s(s({ref:t},p),{},{components:a})):o.a.createElement(u,s({ref:t},p))}));function u(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var n=a.length,i=new Array(n);i[0]=h;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s.mdxType="string"==typeof e?e:r,i[1]=s;for(var p=2;p<n;p++)i[p]=a[p];return o.a.createElement.apply(null,i)}return o.a.createElement.apply(null,a)}h.displayName="MDXCreateElement"},87:function(e,t,a){"use strict";a.r(t),a.d(t,"frontMatter",(function(){return i})),a.d(t,"metadata",(function(){return s})),a.d(t,"toc",(function(){return c})),a.d(t,"default",(function(){return b}));var r=a(3),o=a(7),n=(a(0),a(209)),i={title:"Bylaws"},s={unversionedId:"community/Bylaws",id:"community/Bylaws",isDocsHomePage:!1,title:"Bylaws",description:"\x3c!--",source:"@site/docs/community/Bylaws.md",slug:"/community/Bylaws",permalink:"/docs/next/community/Bylaws",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/community/Bylaws.md",version:"current",sidebar:"docs",previous:{title:"Apache Submarine Community",permalink:"/docs/next/community/README"},next:{title:"Guide for Apache Submarine Committers",permalink:"/docs/next/community/HowToCommit"}},c=[],p={toc:c};function b(e){var t=e.components,a=Object(o.a)(e,["components"]);return Object(n.b)("wrapper",Object(r.a)({},p,a,{components:t,mdxType:"MDXLayout"}),Object(n.b)("p",null,"This document defines the bylaws under which the Apache Submarine project operates. It defines the roles and responsibilities of the project, who may vote, how voting works, how conflicts are resolved, etc."),Object(n.b)("p",null,"Submarine is a project of the ",Object(n.b)("a",{parentName:"p",href:"https://www.apache.org/foundation/"},"Apache Software Foundation"),". The foundation holds the trademark on the name \u201cSubmarine\u201d and copyright on Apache code including the code in the Submarine codebase. The ",Object(n.b)("a",{parentName:"p",href:"https://www.apache.org/foundation/faq.html"},"foundation FAQ")," explains the operation and background of the foundation."),Object(n.b)("p",null,"Submarine is typical of Apache projects in that it operates under a set of principles, known collectively as the \u201cApache Way\u201d. If you are new to Apache development, please refer to the ",Object(n.b)("a",{parentName:"p",href:"http://incubator.apache.org"},"Incubator project")," for more information on how Apache projects operate."),Object(n.b)("h1",{id:"roles-and-responsibilities"},"Roles and Responsibilities"),Object(n.b)("p",null,"Apache projects define a set of roles with associated rights and responsibilities. These roles govern what tasks an individual may perform within the project. The roles are defined in the following sections"),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},Object(n.b)("p",{parentName:"li"},Object(n.b)("strong",{parentName:"p"},"Users")),Object(n.b)("p",{parentName:"li"},"The most important participants in the project are people who use our software. The majority of our developers start out as users and guide their development efforts from the user\u2019s perspective."),Object(n.b)("p",{parentName:"li"},"Users contribute to the Apache projects by providing feedback to developers in the form of bug reports and feature suggestions. As well, users participate in the Apache community by helping other users on mailing lists and user support forums.")),Object(n.b)("li",{parentName:"ul"},Object(n.b)("p",{parentName:"li"},Object(n.b)("strong",{parentName:"p"},"Contributors")),Object(n.b)("p",{parentName:"li"},"All of the volunteers who are contributing time, code, documentation, or resources to the Submarine Project. A contributor that makes sustained, welcome contributions to the project may be invited to become a Committer, though the exact timing of such invitations depends on many factors.")),Object(n.b)("li",{parentName:"ul"},Object(n.b)("p",{parentName:"li"},Object(n.b)("strong",{parentName:"p"},"Committers")),Object(n.b)("p",{parentName:"li"},"The project\u2019s Committers are responsible for the project\u2019s technical management. Committers have access to all subproject subversion repositories. Committers may cast binding votes on any technical discussion regarding any subproject."),Object(n.b)("p",{parentName:"li"},"Committer access is by invitation only and must be approved by consensus approval of the active PMC members. A Committer is considered emeritus by their own declaration or by not contributing in any form to the project for over six months. An emeritus committer may request reinstatement of commit access from the PMC. Such reinstatement is subject to consensus approval of active PMC members."),Object(n.b)("p",{parentName:"li"},"Significant, pervasive features are often developed in a speculative branch of the repository. The PMC may grant commit rights on the branch to its consistent contributors, while the initiative is active. Branch committers are responsible for shepherding their feature into an active release and do not cast binding votes or vetoes in the project."),Object(n.b)("p",{parentName:"li"},"All Apache committers are required to have a signed Contributor License Agreement (CLA) on file with the Apache Software Foundation. There is a ",Object(n.b)("a",{parentName:"p",href:"https://www.apache.org/dev/committers.html"},"Committer FAQ")," which provides more details on the requirements for Committers"),Object(n.b)("p",{parentName:"li"},"A committer who makes a sustained contribution to the project may be invited to become a member of the PMC. The form of contribution is not limited to code. It can also include code review, helping out users on the mailing lists, documentation, testing, etc.")),Object(n.b)("li",{parentName:"ul"},Object(n.b)("p",{parentName:"li"},Object(n.b)("strong",{parentName:"p"},"Release Manager")),Object(n.b)("p",{parentName:"li"},"A Release Manager (RM) is a committer who volunteers to produce a Release Candidate according to ",Object(n.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/blob/master/dev-support/cicd/HowToRelease.md"},"HowToRelease"),". The RM shall publish a Release Plan on the ",Object(n.b)("em",{parentName:"p"},"common-dev@")," list stating the branch from which they intend to make a Release Candidate, at least one week before they do so. The RM is responsible for building consensus around the content of the Release Candidate, in order to achieve a successful Product Release vote.")),Object(n.b)("li",{parentName:"ul"},Object(n.b)("p",{parentName:"li"},Object(n.b)("strong",{parentName:"p"},"Project Management Committee")),Object(n.b)("p",{parentName:"li"},"The Project Management Committee (PMC) for Apache Submarine was created by the Apache Board in October 2019 when Submarine moved out of Hadoop and became a top level project at Apache. The PMC is responsible to the board and the ASF for the management and oversight of the Apache Submarine codebase. The responsibilities of the PMC include"),Object(n.b)("ul",{parentName:"li"},Object(n.b)("li",{parentName:"ul"},"Deciding what is distributed as products of the Apache Submarine project. In particular all releases must be approved by the PMC"),Object(n.b)("li",{parentName:"ul"},"Maintaining the project\u2019s shared resources, including the codebase repository, mailing lists, websites."),Object(n.b)("li",{parentName:"ul"},"Speaking on behalf of the project."),Object(n.b)("li",{parentName:"ul"},"Resolving license disputes regarding products of the project"),Object(n.b)("li",{parentName:"ul"},"Nominating new PMC members and committers"),Object(n.b)("li",{parentName:"ul"},"Maintaining these bylaws and other guidelines of the project")),Object(n.b)("p",{parentName:"li"},"Membership of the PMC is by invitation only and must be approved by a consensus approval of active PMC members. A PMC member is considered \u201cemeritus\u201d by their own declaration or by not contributing in any form to the project for over six months. An emeritus member may request reinstatement to the PMC. Such reinstatement is subject to consensus approval of the active PMC members."),Object(n.b)("p",{parentName:"li"},"The chair of the PMC is appointed by the ASF board. The chair is an office holder of the Apache Software Foundation (Vice President, Apache Submarine) and has primary responsibility to the board for the management of the projects within the scope of the Submarine PMC. The chair reports to the board quarterly on developments within the Submarine project."),Object(n.b)("p",{parentName:"li"},"The chair of the PMC is rotated annually. When the chair is rotated or if the current chair of the PMC resigns, the PMC votes to recommend a new chair using Single Transferable Vote (STV) voting. See ",Object(n.b)("a",{parentName:"p",href:"https://wiki.apache.org/general/BoardVoting"},"https://wiki.apache.org/general/BoardVoting")," for specifics. The decision must be ratified by the Apache board."))),Object(n.b)("h1",{id:"decision-making"},"Decision Making"),Object(n.b)("p",null,"Within the Submarine project, different types of decisions require different forms of approval. For example, the previous section describes several decisions which require \u201cconsensus approval\u201d approval. This section defines how voting is performed, the types of approvals, and which types of decision require which type of approval."),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},Object(n.b)("p",{parentName:"li"},Object(n.b)("strong",{parentName:"p"},"Voting")),Object(n.b)("p",{parentName:"li"},"Decisions regarding the project are made by votes on the primary project development mailing list (",Object(n.b)("a",{parentName:"p",href:"mailto:dev@submarine.apache.org"},"dev@submarine.apache.org"),"). Where necessary, PMC voting may take place on the private Submarine PMC mailing list. Votes are clearly indicated by subject line starting with ","[","VOTE","]",". Votes may contain multiple items for approval and these should be clearly separated. Voting is carried out by replying to the vote mail. Voting may take four flavors"),Object(n.b)("ul",{parentName:"li"},Object(n.b)("li",{parentName:"ul"},Object(n.b)("strong",{parentName:"li"},"+1")," \u201cYes,\u201d \u201cAgree,\u201d or \u201cthe action should be performed.\u201d In general, this vote also indicates a willingness on the behalf of the voter in \u201cmaking it happen\u201d"),Object(n.b)("li",{parentName:"ul"},Object(n.b)("strong",{parentName:"li"},"+0")," This vote indicates a willingness for the action under consideration to go ahead. The voter, however will not be able to help."),Object(n.b)("li",{parentName:"ul"},Object(n.b)("strong",{parentName:"li"},"-","0")," This vote indicates that the voter does not, in general, agree with the proposed action but is not concerned enough to prevent the action going ahead."),Object(n.b)("li",{parentName:"ul"},Object(n.b)("strong",{parentName:"li"},"-","1")," This is a negative vote. On issues where consensus is required, this vote counts as a ",Object(n.b)("strong",{parentName:"li"},"veto"),". All vetoes must contain an explanation of why the veto is appropriate. Vetoes with no explanation are void. It may also be appropriate for a -1 vote to include an alternative course of action.")),Object(n.b)("p",{parentName:"li"},"All participants in the Submarine project are encouraged to show their agreement with or against a particular action by voting. For technical decisions, only the votes of active committers are binding. Non binding votes are still useful for those with binding votes to understand the perception of an action in the wider Submarine community. For PMC decisions, only the votes of PMC members are binding."),Object(n.b)("p",{parentName:"li"},"Voting can also be applied to changes made to the Submarine codebase. These typically take the form of a veto (-1) in reply to the commit message sent when the commit is made.")),Object(n.b)("li",{parentName:"ul"},Object(n.b)("p",{parentName:"li"},Object(n.b)("strong",{parentName:"p"},"Approvals")),Object(n.b)("p",{parentName:"li"},"These are the types of approvals that can be sought. Different actions require different types of approvals"),Object(n.b)("ul",{parentName:"li"},Object(n.b)("li",{parentName:"ul"},Object(n.b)("strong",{parentName:"li"},"Consensus Approval -")," Consensus approval requires 3 binding +1 votes and no binding vetoes."),Object(n.b)("li",{parentName:"ul"},Object(n.b)("strong",{parentName:"li"},"Lazy Consensus -")," Lazy consensus requires no -1 votes (\u2018silence gives assent\u2019)."),Object(n.b)("li",{parentName:"ul"},Object(n.b)("strong",{parentName:"li"},"Lazy Majority -")," A lazy majority vote requires 3 binding +1 votes and more binding +1 votes than -1 votes."),Object(n.b)("li",{parentName:"ul"},Object(n.b)("strong",{parentName:"li"},"Lazy 2\u20443 Majority -")," Lazy 2\u20443 majority votes requires at least 3 votes and twice as many +1 votes as -1 votes."))),Object(n.b)("li",{parentName:"ul"},Object(n.b)("p",{parentName:"li"},Object(n.b)("strong",{parentName:"p"},"Vetoes")),Object(n.b)("p",{parentName:"li"},"A valid, binding veto cannot be overruled. If a veto is cast, it must be accompanied by a valid reason explaining the reasons for the veto. The validity of a veto, if challenged, can be confirmed by anyone who has a binding vote. This does not necessarily signify agreement with the veto - merely that the veto is valid."),Object(n.b)("p",{parentName:"li"},"If you disagree with a valid veto, you must lobby the person casting the veto to withdraw their veto. If a veto is not withdrawn, any action that has been vetoed must be reversed in a timely manner.")),Object(n.b)("li",{parentName:"ul"},Object(n.b)("p",{parentName:"li"},Object(n.b)("strong",{parentName:"p"},"Actions")),Object(n.b)("p",{parentName:"li"},"This section describes the various actions which are undertaken within the project, the corresponding approval required for that action and those who have binding votes over the action."),Object(n.b)("ul",{parentName:"li"},Object(n.b)("li",{parentName:"ul"},Object(n.b)("p",{parentName:"li"},Object(n.b)("strong",{parentName:"p"},"Code Change")),Object(n.b)("p",{parentName:"li"},"A change made to a codebase of the project and committed by a committer. This includes source code, documentation, website content, etc."),Object(n.b)("p",{parentName:"li"},"Consensus approval of active committers, but with a minimum of one +1. The code can be committed after the first +1, unless the code change represents a merge from a branch, in which case three +1s are required.")),Object(n.b)("li",{parentName:"ul"},Object(n.b)("p",{parentName:"li"},Object(n.b)("strong",{parentName:"p"},"Product Release")),Object(n.b)("p",{parentName:"li"},"When a release of one of the project\u2019s products is ready, a vote is required to accept the release as an official release of the project."),Object(n.b)("p",{parentName:"li"},"Lazy Majority of active PMC members")),Object(n.b)("li",{parentName:"ul"},Object(n.b)("p",{parentName:"li"},Object(n.b)("strong",{parentName:"p"},"Adoption of New Codebase")),Object(n.b)("p",{parentName:"li"},"When the codebase for an existing, released product is to be replaced with an alternative codebase. If such a vote fails to gain approval, the existing code base will continue."),Object(n.b)("p",{parentName:"li"},"This also covers the creation of new sub-projects within the project"),Object(n.b)("p",{parentName:"li"},"Lazy 2\u20443 majority of PMC members")),Object(n.b)("li",{parentName:"ul"},Object(n.b)("p",{parentName:"li"},Object(n.b)("strong",{parentName:"p"},"New Branch Committer")),Object(n.b)("p",{parentName:"li"},"When a branch committer is proposed for the PMC"),Object(n.b)("p",{parentName:"li"},"Lazy consensus of active PMC members")),Object(n.b)("li",{parentName:"ul"},Object(n.b)("p",{parentName:"li"},Object(n.b)("strong",{parentName:"p"},"New Committer")),Object(n.b)("p",{parentName:"li"},"When a new committer is proposed for the project"),Object(n.b)("p",{parentName:"li"},"Consensus approval of active PMC members")),Object(n.b)("li",{parentName:"ul"},Object(n.b)("p",{parentName:"li"},Object(n.b)("strong",{parentName:"p"},"New PMC Member")),Object(n.b)("p",{parentName:"li"},"When a committer is proposed for the PMC"),Object(n.b)("p",{parentName:"li"},"Consensus approval of active PMC members")),Object(n.b)("li",{parentName:"ul"},Object(n.b)("p",{parentName:"li"},Object(n.b)("strong",{parentName:"p"},"Branch Committer Removal")),Object(n.b)("p",{parentName:"li"},"When removal of commit privileges is sought ",Object(n.b)("strong",{parentName:"p"},"or")," when the branch is merged to the mainline"),Object(n.b)("p",{parentName:"li"},"Lazy 2\u20443 majority of active PMC members")),Object(n.b)("li",{parentName:"ul"},Object(n.b)("p",{parentName:"li"},Object(n.b)("strong",{parentName:"p"},"Committer Removal")),Object(n.b)("p",{parentName:"li"},"When removal of commit privileges is sought. Note: Such actions will also be referred to the ASF board by the PMC chair"),Object(n.b)("p",{parentName:"li"},"Lazy 2\u20443 majority of active PMC members (excluding the committer in question if a member of the PMC).")),Object(n.b)("li",{parentName:"ul"},Object(n.b)("p",{parentName:"li"},Object(n.b)("strong",{parentName:"p"},"PMC Member Removal")),Object(n.b)("p",{parentName:"li"},"When removal of a PMC member is sought. Note: Such actions will also be referred to the ASF board by the PMC chair."),Object(n.b)("p",{parentName:"li"},"Lazy 2\u20443 majority of active PMC members (excluding the member in question)")),Object(n.b)("li",{parentName:"ul"},Object(n.b)("p",{parentName:"li"},Object(n.b)("strong",{parentName:"p"},"Modifying Bylaws")),Object(n.b)("p",{parentName:"li"},"Modifying this document."),Object(n.b)("p",{parentName:"li"},"Lazy majority of active PMC members")))),Object(n.b)("li",{parentName:"ul"},Object(n.b)("p",{parentName:"li"},Object(n.b)("strong",{parentName:"p"},"Voting Timeframes")),Object(n.b)("p",{parentName:"li"},"Votes are open for a period of 7 days to allow all active voters time to consider the vote. Votes relating to code changes are not subject to a strict timetable but should be made as timely as possible."),Object(n.b)("ul",{parentName:"li"},Object(n.b)("li",{parentName:"ul"},Object(n.b)("p",{parentName:"li"},Object(n.b)("strong",{parentName:"p"},"Product Release - Vote Timeframe")),Object(n.b)("p",{parentName:"li"},"Release votes, alone, run for a period of 5 days. All other votes are subject to the above timeframe of 7 days."))))))}b.isMDXComponent=!0}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[19],{194:function(e,t,a){"use strict";a.d(t,"a",(function(){return m})),a.d(t,"b",(function(){return u}));var r=a(0),o=a.n(r);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function s(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?i(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function c(e,t){if(null==e)return{};var a,r,o=function(e,t){if(null==e)return{};var a,r,o={},n=Object.keys(e);for(r=0;r<n.length;r++)a=n[r],t.indexOf(a)>=0||(o[a]=e[a]);return o}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r<n.length;r++)a=n[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(o[a]=e[a])}return o}var p=o.a.createContext({}),b=function(e){var t=o.a.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):s(s({},t),e)),a},m=function(e){var t=b(e.components);return o.a.createElement(p.Provider,{value:t},e.children)},l={inlineCode:"code",wrapper:function(e){var t=e.children;return o.a.createElement(o.a.Fragment,{},t)}},h=o.a.forwardRef((function(e,t){var a=e.components,r=e.mdxType,n=e.originalType,i=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),m=b(a),h=r,u=m["".concat(i,".").concat(h)]||m[h]||l[h]||n;return a?o.a.createElement(u,s(s({ref:t},p),{},{components:a})):o.a.createElement(u,s({ref:t},p))}));function u(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var n=a.length,i=new Array(n);i[0]=h;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s.mdxType="string"==typeof e?e:r,i[1]=s;for(var p=2;p<n;p++)i[p]=a[p];return o.a.createElement.apply(null,i)}return o.a.createElement.apply(null,a)}h.displayName="MDXCreateElement"},86:function(e,t,a){"use strict";a.r(t),a.d(t,"frontMatter",(function(){return i})),a.d(t,"metadata",(function(){return s})),a.d(t,"toc",(function(){return c})),a.d(t,"default",(function(){return b}));var r=a(3),o=a(7),n=(a(0),a(194)),i={title:"Bylaws"},s={unversionedId:"community/Bylaws",id:"community/Bylaws",isDocsHomePage:!1,title:"Bylaws",description:"\x3c!--",source:"@site/docs/community/Bylaws.md",slug:"/community/Bylaws",permalink:"/docs/next/community/Bylaws",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/community/Bylaws.md",version:"current",sidebar:"docs",previous:{title:"Apache Submarine Community",permalink:"/docs/next/community/README"},next:{title:"Guide for Apache Submarine Committers",permalink:"/docs/next/community/HowToCommit"}},c=[],p={toc:c};function b(e){var t=e.components,a=Object(o.a)(e,["components"]);return Object(n.b)("wrapper",Object(r.a)({},p,a,{components:t,mdxType:"MDXLayout"}),Object(n.b)("p",null,"This document defines the bylaws under which the Apache Submarine project operates. It defines the roles and responsibilities of the project, who may vote, how voting works, how conflicts are resolved, etc."),Object(n.b)("p",null,"Submarine is a project of the ",Object(n.b)("a",{parentName:"p",href:"https://www.apache.org/foundation/"},"Apache Software Foundation"),". The foundation holds the trademark on the name \u201cSubmarine\u201d and copyright on Apache code including the code in the Submarine codebase. The ",Object(n.b)("a",{parentName:"p",href:"https://www.apache.org/foundation/faq.html"},"foundation FAQ")," explains the operation and background of the foundation."),Object(n.b)("p",null,"Submarine is typical of Apache projects in that it operates under a set of principles, known collectively as the \u201cApache Way\u201d. If you are new to Apache development, please refer to the ",Object(n.b)("a",{parentName:"p",href:"http://incubator.apache.org"},"Incubator project")," for more information on how Apache projects operate."),Object(n.b)("h1",{id:"roles-and-responsibilities"},"Roles and Responsibilities"),Object(n.b)("p",null,"Apache projects define a set of roles with associated rights and responsibilities. These roles govern what tasks an individual may perform within the project. The roles are defined in the following sections"),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},Object(n.b)("p",{parentName:"li"},Object(n.b)("strong",{parentName:"p"},"Users")),Object(n.b)("p",{parentName:"li"},"The most important participants in the project are people who use our software. The majority of our developers start out as users and guide their development efforts from the user\u2019s perspective."),Object(n.b)("p",{parentName:"li"},"Users contribute to the Apache projects by providing feedback to developers in the form of bug reports and feature suggestions. As well, users participate in the Apache community by helping other users on mailing lists and user support forums.")),Object(n.b)("li",{parentName:"ul"},Object(n.b)("p",{parentName:"li"},Object(n.b)("strong",{parentName:"p"},"Contributors")),Object(n.b)("p",{parentName:"li"},"All of the volunteers who are contributing time, code, documentation, or resources to the Submarine Project. A contributor that makes sustained, welcome contributions to the project may be invited to become a Committer, though the exact timing of such invitations depends on many factors.")),Object(n.b)("li",{parentName:"ul"},Object(n.b)("p",{parentName:"li"},Object(n.b)("strong",{parentName:"p"},"Committers")),Object(n.b)("p",{parentName:"li"},"The project\u2019s Committers are responsible for the project\u2019s technical management. Committers have access to all subproject subversion repositories. Committers may cast binding votes on any technical discussion regarding any subproject."),Object(n.b)("p",{parentName:"li"},"Committer access is by invitation only and must be approved by consensus approval of the active PMC members. A Committer is considered emeritus by their own declaration or by not contributing in any form to the project for over six months. An emeritus committer may request reinstatement of commit access from the PMC. Such reinstatement is subject to consensus approval of active PMC members."),Object(n.b)("p",{parentName:"li"},"Significant, pervasive features are often developed in a speculative branch of the repository. The PMC may grant commit rights on the branch to its consistent contributors, while the initiative is active. Branch committers are responsible for shepherding their feature into an active release and do not cast binding votes or vetoes in the project."),Object(n.b)("p",{parentName:"li"},"All Apache committers are required to have a signed Contributor License Agreement (CLA) on file with the Apache Software Foundation. There is a ",Object(n.b)("a",{parentName:"p",href:"https://www.apache.org/dev/committers.html"},"Committer FAQ")," which provides more details on the requirements for Committers"),Object(n.b)("p",{parentName:"li"},"A committer who makes a sustained contribution to the project may be invited to become a member of the PMC. The form of contribution is not limited to code. It can also include code review, helping out users on the mailing lists, documentation, testing, etc.")),Object(n.b)("li",{parentName:"ul"},Object(n.b)("p",{parentName:"li"},Object(n.b)("strong",{parentName:"p"},"Release Manager")),Object(n.b)("p",{parentName:"li"},"A Release Manager (RM) is a committer who volunteers to produce a Release Candidate according to ",Object(n.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/blob/master/dev-support/cicd/HowToRelease.md"},"HowToRelease"),". The RM shall publish a Release Plan on the ",Object(n.b)("em",{parentName:"p"},"common-dev@")," list stating the branch from which they intend to make a Release Candidate, at least one week before they do so. The RM is responsible for building consensus around the content of the Release Candidate, in order to achieve a successful Product Release vote.")),Object(n.b)("li",{parentName:"ul"},Object(n.b)("p",{parentName:"li"},Object(n.b)("strong",{parentName:"p"},"Project Management Committee")),Object(n.b)("p",{parentName:"li"},"The Project Management Committee (PMC) for Apache Submarine was created by the Apache Board in October 2019 when Submarine moved out of Hadoop and became a top level project at Apache. The PMC is responsible to the board and the ASF for the management and oversight of the Apache Submarine codebase. The responsibilities of the PMC include"),Object(n.b)("ul",{parentName:"li"},Object(n.b)("li",{parentName:"ul"},"Deciding what is distributed as products of the Apache Submarine project. In particular all releases must be approved by the PMC"),Object(n.b)("li",{parentName:"ul"},"Maintaining the project\u2019s shared resources, including the codebase repository, mailing lists, websites."),Object(n.b)("li",{parentName:"ul"},"Speaking on behalf of the project."),Object(n.b)("li",{parentName:"ul"},"Resolving license disputes regarding products of the project"),Object(n.b)("li",{parentName:"ul"},"Nominating new PMC members and committers"),Object(n.b)("li",{parentName:"ul"},"Maintaining these bylaws and other guidelines of the project")),Object(n.b)("p",{parentName:"li"},"Membership of the PMC is by invitation only and must be approved by a consensus approval of active PMC members. A PMC member is considered \u201cemeritus\u201d by their own declaration or by not contributing in any form to the project for over six months. An emeritus member may request reinstatement to the PMC. Such reinstatement is subject to consensus approval of the active PMC members."),Object(n.b)("p",{parentName:"li"},"The chair of the PMC is appointed by the ASF board. The chair is an office holder of the Apache Software Foundation (Vice President, Apache Submarine) and has primary responsibility to the board for the management of the projects within the scope of the Submarine PMC. The chair reports to the board quarterly on developments within the Submarine project."),Object(n.b)("p",{parentName:"li"},"The chair of the PMC is rotated annually. When the chair is rotated or if the current chair of the PMC resigns, the PMC votes to recommend a new chair using Single Transferable Vote (STV) voting. See ",Object(n.b)("a",{parentName:"p",href:"https://wiki.apache.org/general/BoardVoting"},"https://wiki.apache.org/general/BoardVoting")," for specifics. The decision must be ratified by the Apache board."))),Object(n.b)("h1",{id:"decision-making"},"Decision Making"),Object(n.b)("p",null,"Within the Submarine project, different types of decisions require different forms of approval. For example, the previous section describes several decisions which require \u201cconsensus approval\u201d approval. This section defines how voting is performed, the types of approvals, and which types of decision require which type of approval."),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},Object(n.b)("p",{parentName:"li"},Object(n.b)("strong",{parentName:"p"},"Voting")),Object(n.b)("p",{parentName:"li"},"Decisions regarding the project are made by votes on the primary project development mailing list (",Object(n.b)("a",{parentName:"p",href:"mailto:dev@submarine.apache.org"},"dev@submarine.apache.org"),"). Where necessary, PMC voting may take place on the private Submarine PMC mailing list. Votes are clearly indicated by subject line starting with ","[","VOTE","]",". Votes may contain multiple items for approval and these should be clearly separated. Voting is carried out by replying to the vote mail. Voting may take four flavors"),Object(n.b)("ul",{parentName:"li"},Object(n.b)("li",{parentName:"ul"},Object(n.b)("strong",{parentName:"li"},"+1")," \u201cYes,\u201d \u201cAgree,\u201d or \u201cthe action should be performed.\u201d In general, this vote also indicates a willingness on the behalf of the voter in \u201cmaking it happen\u201d"),Object(n.b)("li",{parentName:"ul"},Object(n.b)("strong",{parentName:"li"},"+0")," This vote indicates a willingness for the action under consideration to go ahead. The voter, however will not be able to help."),Object(n.b)("li",{parentName:"ul"},Object(n.b)("strong",{parentName:"li"},"-","0")," This vote indicates that the voter does not, in general, agree with the proposed action but is not concerned enough to prevent the action going ahead."),Object(n.b)("li",{parentName:"ul"},Object(n.b)("strong",{parentName:"li"},"-","1")," This is a negative vote. On issues where consensus is required, this vote counts as a ",Object(n.b)("strong",{parentName:"li"},"veto"),". All vetoes must contain an explanation of why the veto is appropriate. Vetoes with no explanation are void. It may also be appropriate for a -1 vote to include an alternative course of action.")),Object(n.b)("p",{parentName:"li"},"All participants in the Submarine project are encouraged to show their agreement with or against a particular action by voting. For technical decisions, only the votes of active committers are binding. Non binding votes are still useful for those with binding votes to understand the perception of an action in the wider Submarine community. For PMC decisions, only the votes of PMC members are binding."),Object(n.b)("p",{parentName:"li"},"Voting can also be applied to changes made to the Submarine codebase. These typically take the form of a veto (-1) in reply to the commit message sent when the commit is made.")),Object(n.b)("li",{parentName:"ul"},Object(n.b)("p",{parentName:"li"},Object(n.b)("strong",{parentName:"p"},"Approvals")),Object(n.b)("p",{parentName:"li"},"These are the types of approvals that can be sought. Different actions require different types of approvals"),Object(n.b)("ul",{parentName:"li"},Object(n.b)("li",{parentName:"ul"},Object(n.b)("strong",{parentName:"li"},"Consensus Approval -")," Consensus approval requires 3 binding +1 votes and no binding vetoes."),Object(n.b)("li",{parentName:"ul"},Object(n.b)("strong",{parentName:"li"},"Lazy Consensus -")," Lazy consensus requires no -1 votes (\u2018silence gives assent\u2019)."),Object(n.b)("li",{parentName:"ul"},Object(n.b)("strong",{parentName:"li"},"Lazy Majority -")," A lazy majority vote requires 3 binding +1 votes and more binding +1 votes than -1 votes."),Object(n.b)("li",{parentName:"ul"},Object(n.b)("strong",{parentName:"li"},"Lazy 2\u20443 Majority -")," Lazy 2\u20443 majority votes requires at least 3 votes and twice as many +1 votes as -1 votes."))),Object(n.b)("li",{parentName:"ul"},Object(n.b)("p",{parentName:"li"},Object(n.b)("strong",{parentName:"p"},"Vetoes")),Object(n.b)("p",{parentName:"li"},"A valid, binding veto cannot be overruled. If a veto is cast, it must be accompanied by a valid reason explaining the reasons for the veto. The validity of a veto, if challenged, can be confirmed by anyone who has a binding vote. This does not necessarily signify agreement with the veto - merely that the veto is valid."),Object(n.b)("p",{parentName:"li"},"If you disagree with a valid veto, you must lobby the person casting the veto to withdraw their veto. If a veto is not withdrawn, any action that has been vetoed must be reversed in a timely manner.")),Object(n.b)("li",{parentName:"ul"},Object(n.b)("p",{parentName:"li"},Object(n.b)("strong",{parentName:"p"},"Actions")),Object(n.b)("p",{parentName:"li"},"This section describes the various actions which are undertaken within the project, the corresponding approval required for that action and those who have binding votes over the action."),Object(n.b)("ul",{parentName:"li"},Object(n.b)("li",{parentName:"ul"},Object(n.b)("p",{parentName:"li"},Object(n.b)("strong",{parentName:"p"},"Code Change")),Object(n.b)("p",{parentName:"li"},"A change made to a codebase of the project and committed by a committer. This includes source code, documentation, website content, etc."),Object(n.b)("p",{parentName:"li"},"Consensus approval of active committers, but with a minimum of one +1. The code can be committed after the first +1, unless the code change represents a merge from a branch, in which case three +1s are required.")),Object(n.b)("li",{parentName:"ul"},Object(n.b)("p",{parentName:"li"},Object(n.b)("strong",{parentName:"p"},"Product Release")),Object(n.b)("p",{parentName:"li"},"When a release of one of the project\u2019s products is ready, a vote is required to accept the release as an official release of the project."),Object(n.b)("p",{parentName:"li"},"Lazy Majority of active PMC members")),Object(n.b)("li",{parentName:"ul"},Object(n.b)("p",{parentName:"li"},Object(n.b)("strong",{parentName:"p"},"Adoption of New Codebase")),Object(n.b)("p",{parentName:"li"},"When the codebase for an existing, released product is to be replaced with an alternative codebase. If such a vote fails to gain approval, the existing code base will continue."),Object(n.b)("p",{parentName:"li"},"This also covers the creation of new sub-projects within the project"),Object(n.b)("p",{parentName:"li"},"Lazy 2\u20443 majority of PMC members")),Object(n.b)("li",{parentName:"ul"},Object(n.b)("p",{parentName:"li"},Object(n.b)("strong",{parentName:"p"},"New Branch Committer")),Object(n.b)("p",{parentName:"li"},"When a branch committer is proposed for the PMC"),Object(n.b)("p",{parentName:"li"},"Lazy consensus of active PMC members")),Object(n.b)("li",{parentName:"ul"},Object(n.b)("p",{parentName:"li"},Object(n.b)("strong",{parentName:"p"},"New Committer")),Object(n.b)("p",{parentName:"li"},"When a new committer is proposed for the project"),Object(n.b)("p",{parentName:"li"},"Consensus approval of active PMC members")),Object(n.b)("li",{parentName:"ul"},Object(n.b)("p",{parentName:"li"},Object(n.b)("strong",{parentName:"p"},"New PMC Member")),Object(n.b)("p",{parentName:"li"},"When a committer is proposed for the PMC"),Object(n.b)("p",{parentName:"li"},"Consensus approval of active PMC members")),Object(n.b)("li",{parentName:"ul"},Object(n.b)("p",{parentName:"li"},Object(n.b)("strong",{parentName:"p"},"Branch Committer Removal")),Object(n.b)("p",{parentName:"li"},"When removal of commit privileges is sought ",Object(n.b)("strong",{parentName:"p"},"or")," when the branch is merged to the mainline"),Object(n.b)("p",{parentName:"li"},"Lazy 2\u20443 majority of active PMC members")),Object(n.b)("li",{parentName:"ul"},Object(n.b)("p",{parentName:"li"},Object(n.b)("strong",{parentName:"p"},"Committer Removal")),Object(n.b)("p",{parentName:"li"},"When removal of commit privileges is sought. Note: Such actions will also be referred to the ASF board by the PMC chair"),Object(n.b)("p",{parentName:"li"},"Lazy 2\u20443 majority of active PMC members (excluding the committer in question if a member of the PMC).")),Object(n.b)("li",{parentName:"ul"},Object(n.b)("p",{parentName:"li"},Object(n.b)("strong",{parentName:"p"},"PMC Member Removal")),Object(n.b)("p",{parentName:"li"},"When removal of a PMC member is sought. Note: Such actions will also be referred to the ASF board by the PMC chair."),Object(n.b)("p",{parentName:"li"},"Lazy 2\u20443 majority of active PMC members (excluding the member in question)")),Object(n.b)("li",{parentName:"ul"},Object(n.b)("p",{parentName:"li"},Object(n.b)("strong",{parentName:"p"},"Modifying Bylaws")),Object(n.b)("p",{parentName:"li"},"Modifying this document."),Object(n.b)("p",{parentName:"li"},"Lazy majority of active PMC members")))),Object(n.b)("li",{parentName:"ul"},Object(n.b)("p",{parentName:"li"},Object(n.b)("strong",{parentName:"p"},"Voting Timeframes")),Object(n.b)("p",{parentName:"li"},"Votes are open for a period of 7 days to allow all active voters time to consider the vote. Votes relating to code changes are not subject to a strict timetable but should be made as timely as possible."),Object(n.b)("ul",{parentName:"li"},Object(n.b)("li",{parentName:"ul"},Object(n.b)("p",{parentName:"li"},Object(n.b)("strong",{parentName:"p"},"Product Release - Vote Timeframe")),Object(n.b)("p",{parentName:"li"},"Release votes, alone, run for a period of 5 days. All other votes are subject to the above timeframe of 7 days."))))))}b.isMDXComponent=!0}}]);
\ No newline at end of file
diff --git a/2f44017d.3a426844.js b/2f44017d.88f8adb9.js
similarity index 97%
rename from 2f44017d.3a426844.js
rename to 2f44017d.88f8adb9.js
index 076cec3..acfcbc3 100644
--- a/2f44017d.3a426844.js
+++ b/2f44017d.88f8adb9.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[21],{209:function(n,e,t){"use strict";t.d(e,"a",(function(){return b})),t.d(e,"b",(function(){return d}));var a=t(0),r=t.n(a);function c(n,e,t){return e in n?Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[e]=t,n}function o(n,e){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(n);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),t.push.apply(t,a)}return t}function p(n){for(var e=1;e<arguments.length;e++){var t=null!=arguments[e]?arguments[e]:{};e%2?o(Object(t),!0).forEach((function(e){c(n,e,t[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(t)):o(Object(t)).forEach((function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(t,e))}))}return n}function i(n,e){if(null==n)return{};var t,a,r=function(n,e){if(null==n)return{};var t,a,r={},c=Object.keys(n);for(a=0;a<c.length;a++)t=c[a],e.indexOf(t)>=0||(r[t]=n[t]);return r}(n,e);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(n);for(a=0;a<c.length;a++)t=c[a],e.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(n,t)&&(r[t]=n[t])}return r}var l=r.a.createContext({}),m=function(n){var e=r.a.useContext(l),t=e;return n&&(t="function"==typeof n?n(e):p(p({},e),n)),t},b=function(n){var e=m(n.components);return r.a.createElement(l.Provider,{value:e},n.children)},s={inlineCode:"code",wrapper:function(n){var e=n.children;return r.a.createElement(r.a.Fragment,{},e)}},u=r.a.forwardRef((function(n,e){var t=n.components,a=n.mdxType,c=n.originalType,o=n.parentName,l=i(n,["components","mdxType","originalType","parentName"]),b=m(t),u=a,d=b["".concat(o,".").concat(u)]||b[u]||s[u]||c;return t?r.a.createElement(d,p(p({ref:e},l),{},{components:t})):r.a.createElement(d,p({ref:e},l))}));function d(n,e){var t=arguments,a=e&&e.mdxType;if("string"==typeof n||a){var c=t.length,o=new Array(c);o[0]=u;var p={};for(var i in e)hasOwnProperty.call(e,i)&&(p[i]=e[i]);p.originalType=n,p.mdxType="string"==typeof n?n:a,o[1]=p;for(var l=2;l<c;l++)o[l]=t[l];return r.a.createElement.apply(null,o)}return r.a.createElement.apply(null,t)}u.displayName="MDXCreateElement"},88:function(n,e,t){"use strict";t.r(e),t.d(e,"frontMatter",(function(){return o})),t.d(e,"metadata",(function(){return p})),t.d(e,"toc",(function(){return i})),t.d(e,"default",(function(){return m}));var a=t(3),r=t(7),c=(t(0),t(209)),o={title:"Environment REST API"},p={unversionedId:"api/environment",id:"api/environment",isDocsHomePage:!1,title:"Environment REST API",description:"\x3c!--",source:"@site/docs/api/environment.md",slug:"/api/environment",permalink:"/docs/next/api/environment",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/api/environment.md",version:"current",sidebar:"api",next:{title:"Experiment REST API",permalink:"/docs/next/api/experiment"}},i=[{value:"Create Environment",id:"create-environment",children:[{value:"List environment",id:"list-environment",children:[]},{value:"Get environment",id:"get-environment",children:[]},{value:"Patch environment",id:"patch-environment",children:[]},{value:"Delete environment",id:"delete-environment",children:[]}]}],l={toc:i};function m(n){var e=n.components,t=Object(r.a)(n,["components"]);return Object(c.b)("wrapper",Object(a.a)({},l,t,{components:e,mdxType:"MDXLayout"}),Object(c.b)("blockquote",null,Object(c.b)("p",{parentName:"blockquote"},"Note: The Environment API is in the alpha stage which is subjected to incompatible changes in\nfuture releases.")),Object(c.b)("h2",{id:"create-environment"},"Create Environment"),Object(c.b)("p",null,Object(c.b)("inlineCode",{parentName:"p"},"POST /api/v1/environment")),Object(c.b)("p",null,Object(c.b)("strong",{parentName:"p"},"Example Request")),Object(c.b)("pre",null,Object(c.b)("code",{parentName:"pre",className:"language-sh"},'curl -X POST -H "Content-Type: application/json" -d \'\n{\n  "name": "my-submarine-env",\n  "dockerImage" : "continuumio/anaconda3",\n  "kernelSpec" : {\n    "name" : "team_default_python_3.7",\n    "channels" : ["defaults"],\n    "condaDependencies" : \n      ["_ipyw_jlab_nb_ext_conf=0.1.0=py37_0",\n      "alabaster=0.7.12=py37_0",\n      "anaconda=2020.02=py37_0",\n      "anaconda-client=1.7.2=py37_0",\n      "anaconda-navigator=1.9.12=py37_0"],\n    "pipDependencies" : \n      ["apache-submarine==0.5.0",\n      "pyarrow==0.17.0"]\n  }\n}\n\' http://127.0.0.1:32080/api/v1/environment\n')),Object(c.b)("p",null,Object(c.b)("strong",{parentName:"p"},"Example Response:")),Object(c.b)("pre",null,Object(c.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status": "OK",\n  "code": 200,\n  "result": {\n    "environmentId": "environment_1586156073228_0001",\n    "environmentSpec": {\n      "name": "my-submarine-env",\n      "dockerImage" : "continuumio/anaconda3",\n      "kernelSpec" : {\n        "name" : "team_default_python_3.7",\n        "channels" : ["defaults"],\n        "condaDependencies" : \n          ["_ipyw_jlab_nb_ext_conf=0.1.0=py37_0",\n          "alabaster=0.7.12=py37_0",\n          "anaconda=2020.02=py37_0",\n          "anaconda-client=1.7.2=py37_0",\n          "anaconda-navigator=1.9.12=py37_0"],\n        "pipDependencies" : \n          ["apache-submarine==0.5.0",\n          "pyarrow==0.17.0"]\n      }\n    }\n  }\n}\n')),Object(c.b)("h3",{id:"list-environment"},"List environment"),Object(c.b)("p",null,Object(c.b)("inlineCode",{parentName:"p"},"GET /api/v1/environment")),Object(c.b)("p",null,Object(c.b)("strong",{parentName:"p"},"Example Request:")),Object(c.b)("pre",null,Object(c.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/environment\n")),Object(c.b)("p",null,Object(c.b)("strong",{parentName:"p"},"Example Response:")),Object(c.b)("pre",null,Object(c.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status": "OK",\n  "code": 200,\n  "result": [\n  {\n    "environmentId": "environment_1586156073228_0001",\n    "environmentSpec": {\n      "name": "my-submarine-env",\n      "dockerImage" : "continuumio/anaconda3",\n      "kernelSpec" : {\n        "name" : "team_default_python_3.7",\n        "channels" : ["defaults"],\n        "condaDependencies" : \n          ["_ipyw_jlab_nb_ext_conf=0.1.0=py37_0",\n          "alabaster=0.7.12=py37_0",\n          "anaconda=2020.02=py37_0",\n          "anaconda-client=1.7.2=py37_0",\n          "anaconda-navigator=1.9.12=py37_0"],\n        "pipDependencies" : \n          ["apache-submarine==0.5.0",\n          "pyarrow==0.17.0"]\n      }\n    }\n  },\n  {\n    "environmentId": "environment_1586156073228_0002",\n    "environmentSpec": {\n      "name": "my-submarine-env-2",\n      "dockerImage" : "continuumio/miniconda",\n      "kernelSpec" : {\n        "name" : "team_miniconda_python_3.7",\n        "channels" : ["defaults"],\n        "condaDependencies" : \n          ["_ipyw_jlab_nb_ext_conf=0.1.0=py37_0"],\n        "pipDependencies" : \n          [],\n      }\n    }\n  }\n  ]\n}\n')),Object(c.b)("h3",{id:"get-environment"},"Get environment"),Object(c.b)("p",null,Object(c.b)("inlineCode",{parentName:"p"},"GET /api/v1/environment/{name}")),Object(c.b)("p",null,Object(c.b)("strong",{parentName:"p"},"Example Request:")),Object(c.b)("pre",null,Object(c.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/environment/my-submarine-env\n")),Object(c.b)("p",null,Object(c.b)("strong",{parentName:"p"},"Example Response:")),Object(c.b)("pre",null,Object(c.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status": "OK",\n  "code": 200,\n  "result": {\n    "environmentId": "environment_1586156073228_0001",\n    "environmentSpec": {\n      "name": "my-submarine-env",\n      "dockerImage" : "continuumio/anaconda3",\n      "kernelSpec" : {\n        "name" : "team_default_python_3.7",\n        "channels" : ["defaults"],\n        "condaDependencies" : \n          ["_ipyw_jlab_nb_ext_conf=0.1.0=py37_0",\n          "alabaster=0.7.12=py37_0",\n          "anaconda=2020.02=py37_0",\n          "anaconda-client=1.7.2=py37_0",\n          "anaconda-navigator=1.9.12=py37_0"],\n        "pipDependencies" : \n          ["apache-submarine==0.5.0",\n          "pyarrow==0.17.0"]\n      }\n    }\n  }\n}\n')),Object(c.b)("h3",{id:"patch-environment"},"Patch environment"),Object(c.b)("p",null,Object(c.b)("inlineCode",{parentName:"p"},"PATCH /api/v1/environment/{name}")),Object(c.b)("p",null,Object(c.b)("strong",{parentName:"p"},"Example Request:")),Object(c.b)("pre",null,Object(c.b)("code",{parentName:"pre",className:"language-sh"},'curl -X PATCH -H "Content-Type: application/json" -d \'\n{\n  "name": "my-submarine-env",\n  "dockerImage" : "continuumio/anaconda3",\n  "kernelSpec" : {\n    "name" : "team_default_python_3.7_updated",\n    "channels" : ["defaults"],\n    "condaDependencies" : \n      ["_ipyw_jlab_nb_ext_conf=0.1.0=py37_0",\n      "alabaster=0.7.12=py37_0"],\n    "pipDependencies" : \n      []\n  }\n}\n\' http://127.0.0.1:32080/api/v1/environment/my-submarine-env\n')),Object(c.b)("p",null,Object(c.b)("strong",{parentName:"p"},"Example Response:")),Object(c.b)("pre",null,Object(c.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status": "OK",\n  "code": 200,\n  "success": true,\n  "result": {\n    "environmentId": "environment_1586156073228_0001",\n    "environmentSpec": {\n      "name": "my-submarine-env",\n      "dockerImage" : "continuumio/anaconda3",\n      "kernelSpec" : {\n        "name" : "team_default_python_3.7_updated",\n        "channels" : ["defaults"],\n        "condaDependencies" : \n          ["_ipyw_jlab_nb_ext_conf=0.1.0=py37_0",\n          "alabaster=0.7.12=py37_0"],\n        "pipDependencies" :\n          []\n      }\n    }\n  }\n}\n')),Object(c.b)("blockquote",null,Object(c.b)("p",{parentName:"blockquote"},'dockerImage, "name" (of kernelSpec), "channels", "condaDependencies", "pipDependencies" etc can be updated using this API.\n"name" of EnvironmentSpec is not supported.')),Object(c.b)("h3",{id:"delete-environment"},"Delete environment"),Object(c.b)("p",null,Object(c.b)("inlineCode",{parentName:"p"},"GET /api/v1/environment/{name}")),Object(c.b)("p",null,Object(c.b)("strong",{parentName:"p"},"Example Request:")),Object(c.b)("pre",null,Object(c.b)("code",{parentName:"pre",className:"language-sh"},"curl -X DELETE http://127.0.0.1:32080/api/v1/environment/my-submarine-env\n")),Object(c.b)("p",null,Object(c.b)("strong",{parentName:"p"},"Example Response:")),Object(c.b)("pre",null,Object(c.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status": "OK",\n  "code": 200,\n  "result": {\n    "environmentId": "environment_1586156073228_0001",\n    "environmentSpec": {\n      "name": "my-submarine-env",\n      "dockerImage" : "continuumio/anaconda3",\n      "kernelSpec" : {\n        "name" : "team_default_python_3.7_updated",\n        "channels" : ["defaults"],\n        "condaDependencies" : \n          ["_ipyw_jlab_nb_ext_conf=0.1.0=py37_0",\n          "alabaster=0.7.12=py37_0"],\n        "pipDependencies" :\n          []\n      }\n    }\n  }\n}\n')))}m.isMDXComponent=!0}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[20],{194:function(n,e,t){"use strict";t.d(e,"a",(function(){return b})),t.d(e,"b",(function(){return d}));var a=t(0),r=t.n(a);function c(n,e,t){return e in n?Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[e]=t,n}function o(n,e){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(n);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),t.push.apply(t,a)}return t}function p(n){for(var e=1;e<arguments.length;e++){var t=null!=arguments[e]?arguments[e]:{};e%2?o(Object(t),!0).forEach((function(e){c(n,e,t[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(t)):o(Object(t)).forEach((function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(t,e))}))}return n}function i(n,e){if(null==n)return{};var t,a,r=function(n,e){if(null==n)return{};var t,a,r={},c=Object.keys(n);for(a=0;a<c.length;a++)t=c[a],e.indexOf(t)>=0||(r[t]=n[t]);return r}(n,e);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(n);for(a=0;a<c.length;a++)t=c[a],e.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(n,t)&&(r[t]=n[t])}return r}var l=r.a.createContext({}),m=function(n){var e=r.a.useContext(l),t=e;return n&&(t="function"==typeof n?n(e):p(p({},e),n)),t},b=function(n){var e=m(n.components);return r.a.createElement(l.Provider,{value:e},n.children)},s={inlineCode:"code",wrapper:function(n){var e=n.children;return r.a.createElement(r.a.Fragment,{},e)}},u=r.a.forwardRef((function(n,e){var t=n.components,a=n.mdxType,c=n.originalType,o=n.parentName,l=i(n,["components","mdxType","originalType","parentName"]),b=m(t),u=a,d=b["".concat(o,".").concat(u)]||b[u]||s[u]||c;return t?r.a.createElement(d,p(p({ref:e},l),{},{components:t})):r.a.createElement(d,p({ref:e},l))}));function d(n,e){var t=arguments,a=e&&e.mdxType;if("string"==typeof n||a){var c=t.length,o=new Array(c);o[0]=u;var p={};for(var i in e)hasOwnProperty.call(e,i)&&(p[i]=e[i]);p.originalType=n,p.mdxType="string"==typeof n?n:a,o[1]=p;for(var l=2;l<c;l++)o[l]=t[l];return r.a.createElement.apply(null,o)}return r.a.createElement.apply(null,t)}u.displayName="MDXCreateElement"},87:function(n,e,t){"use strict";t.r(e),t.d(e,"frontMatter",(function(){return o})),t.d(e,"metadata",(function(){return p})),t.d(e,"toc",(function(){return i})),t.d(e,"default",(function(){return m}));var a=t(3),r=t(7),c=(t(0),t(194)),o={title:"Environment REST API"},p={unversionedId:"api/environment",id:"api/environment",isDocsHomePage:!1,title:"Environment REST API",description:"\x3c!--",source:"@site/docs/api/environment.md",slug:"/api/environment",permalink:"/docs/next/api/environment",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/api/environment.md",version:"current",sidebar:"api",next:{title:"Experiment REST API",permalink:"/docs/next/api/experiment"}},i=[{value:"Create Environment",id:"create-environment",children:[{value:"List environment",id:"list-environment",children:[]},{value:"Get environment",id:"get-environment",children:[]},{value:"Patch environment",id:"patch-environment",children:[]},{value:"Delete environment",id:"delete-environment",children:[]}]}],l={toc:i};function m(n){var e=n.components,t=Object(r.a)(n,["components"]);return Object(c.b)("wrapper",Object(a.a)({},l,t,{components:e,mdxType:"MDXLayout"}),Object(c.b)("blockquote",null,Object(c.b)("p",{parentName:"blockquote"},"Note: The Environment API is in the alpha stage which is subjected to incompatible changes in\nfuture releases.")),Object(c.b)("h2",{id:"create-environment"},"Create Environment"),Object(c.b)("p",null,Object(c.b)("inlineCode",{parentName:"p"},"POST /api/v1/environment")),Object(c.b)("p",null,Object(c.b)("strong",{parentName:"p"},"Example Request")),Object(c.b)("pre",null,Object(c.b)("code",{parentName:"pre",className:"language-sh"},'curl -X POST -H "Content-Type: application/json" -d \'\n{\n  "name": "my-submarine-env",\n  "dockerImage" : "continuumio/anaconda3",\n  "kernelSpec" : {\n    "name" : "team_default_python_3.7",\n    "channels" : ["defaults"],\n    "condaDependencies" : \n      ["_ipyw_jlab_nb_ext_conf=0.1.0=py37_0",\n      "alabaster=0.7.12=py37_0",\n      "anaconda=2020.02=py37_0",\n      "anaconda-client=1.7.2=py37_0",\n      "anaconda-navigator=1.9.12=py37_0"],\n    "pipDependencies" : \n      ["apache-submarine==0.5.0",\n      "pyarrow==0.17.0"]\n  }\n}\n\' http://127.0.0.1:32080/api/v1/environment\n')),Object(c.b)("p",null,Object(c.b)("strong",{parentName:"p"},"Example Response:")),Object(c.b)("pre",null,Object(c.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status": "OK",\n  "code": 200,\n  "result": {\n    "environmentId": "environment_1586156073228_0001",\n    "environmentSpec": {\n      "name": "my-submarine-env",\n      "dockerImage" : "continuumio/anaconda3",\n      "kernelSpec" : {\n        "name" : "team_default_python_3.7",\n        "channels" : ["defaults"],\n        "condaDependencies" : \n          ["_ipyw_jlab_nb_ext_conf=0.1.0=py37_0",\n          "alabaster=0.7.12=py37_0",\n          "anaconda=2020.02=py37_0",\n          "anaconda-client=1.7.2=py37_0",\n          "anaconda-navigator=1.9.12=py37_0"],\n        "pipDependencies" : \n          ["apache-submarine==0.5.0",\n          "pyarrow==0.17.0"]\n      }\n    }\n  }\n}\n')),Object(c.b)("h3",{id:"list-environment"},"List environment"),Object(c.b)("p",null,Object(c.b)("inlineCode",{parentName:"p"},"GET /api/v1/environment")),Object(c.b)("p",null,Object(c.b)("strong",{parentName:"p"},"Example Request:")),Object(c.b)("pre",null,Object(c.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/environment\n")),Object(c.b)("p",null,Object(c.b)("strong",{parentName:"p"},"Example Response:")),Object(c.b)("pre",null,Object(c.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status": "OK",\n  "code": 200,\n  "result": [\n  {\n    "environmentId": "environment_1586156073228_0001",\n    "environmentSpec": {\n      "name": "my-submarine-env",\n      "dockerImage" : "continuumio/anaconda3",\n      "kernelSpec" : {\n        "name" : "team_default_python_3.7",\n        "channels" : ["defaults"],\n        "condaDependencies" : \n          ["_ipyw_jlab_nb_ext_conf=0.1.0=py37_0",\n          "alabaster=0.7.12=py37_0",\n          "anaconda=2020.02=py37_0",\n          "anaconda-client=1.7.2=py37_0",\n          "anaconda-navigator=1.9.12=py37_0"],\n        "pipDependencies" : \n          ["apache-submarine==0.5.0",\n          "pyarrow==0.17.0"]\n      }\n    }\n  },\n  {\n    "environmentId": "environment_1586156073228_0002",\n    "environmentSpec": {\n      "name": "my-submarine-env-2",\n      "dockerImage" : "continuumio/miniconda",\n      "kernelSpec" : {\n        "name" : "team_miniconda_python_3.7",\n        "channels" : ["defaults"],\n        "condaDependencies" : \n          ["_ipyw_jlab_nb_ext_conf=0.1.0=py37_0"],\n        "pipDependencies" : \n          [],\n      }\n    }\n  }\n  ]\n}\n')),Object(c.b)("h3",{id:"get-environment"},"Get environment"),Object(c.b)("p",null,Object(c.b)("inlineCode",{parentName:"p"},"GET /api/v1/environment/{name}")),Object(c.b)("p",null,Object(c.b)("strong",{parentName:"p"},"Example Request:")),Object(c.b)("pre",null,Object(c.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/environment/my-submarine-env\n")),Object(c.b)("p",null,Object(c.b)("strong",{parentName:"p"},"Example Response:")),Object(c.b)("pre",null,Object(c.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status": "OK",\n  "code": 200,\n  "result": {\n    "environmentId": "environment_1586156073228_0001",\n    "environmentSpec": {\n      "name": "my-submarine-env",\n      "dockerImage" : "continuumio/anaconda3",\n      "kernelSpec" : {\n        "name" : "team_default_python_3.7",\n        "channels" : ["defaults"],\n        "condaDependencies" : \n          ["_ipyw_jlab_nb_ext_conf=0.1.0=py37_0",\n          "alabaster=0.7.12=py37_0",\n          "anaconda=2020.02=py37_0",\n          "anaconda-client=1.7.2=py37_0",\n          "anaconda-navigator=1.9.12=py37_0"],\n        "pipDependencies" : \n          ["apache-submarine==0.5.0",\n          "pyarrow==0.17.0"]\n      }\n    }\n  }\n}\n')),Object(c.b)("h3",{id:"patch-environment"},"Patch environment"),Object(c.b)("p",null,Object(c.b)("inlineCode",{parentName:"p"},"PATCH /api/v1/environment/{name}")),Object(c.b)("p",null,Object(c.b)("strong",{parentName:"p"},"Example Request:")),Object(c.b)("pre",null,Object(c.b)("code",{parentName:"pre",className:"language-sh"},'curl -X PATCH -H "Content-Type: application/json" -d \'\n{\n  "name": "my-submarine-env",\n  "dockerImage" : "continuumio/anaconda3",\n  "kernelSpec" : {\n    "name" : "team_default_python_3.7_updated",\n    "channels" : ["defaults"],\n    "condaDependencies" : \n      ["_ipyw_jlab_nb_ext_conf=0.1.0=py37_0",\n      "alabaster=0.7.12=py37_0"],\n    "pipDependencies" : \n      []\n  }\n}\n\' http://127.0.0.1:32080/api/v1/environment/my-submarine-env\n')),Object(c.b)("p",null,Object(c.b)("strong",{parentName:"p"},"Example Response:")),Object(c.b)("pre",null,Object(c.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status": "OK",\n  "code": 200,\n  "success": true,\n  "result": {\n    "environmentId": "environment_1586156073228_0001",\n    "environmentSpec": {\n      "name": "my-submarine-env",\n      "dockerImage" : "continuumio/anaconda3",\n      "kernelSpec" : {\n        "name" : "team_default_python_3.7_updated",\n        "channels" : ["defaults"],\n        "condaDependencies" : \n          ["_ipyw_jlab_nb_ext_conf=0.1.0=py37_0",\n          "alabaster=0.7.12=py37_0"],\n        "pipDependencies" :\n          []\n      }\n    }\n  }\n}\n')),Object(c.b)("blockquote",null,Object(c.b)("p",{parentName:"blockquote"},'dockerImage, "name" (of kernelSpec), "channels", "condaDependencies", "pipDependencies" etc can be updated using this API.\n"name" of EnvironmentSpec is not supported.')),Object(c.b)("h3",{id:"delete-environment"},"Delete environment"),Object(c.b)("p",null,Object(c.b)("inlineCode",{parentName:"p"},"GET /api/v1/environment/{name}")),Object(c.b)("p",null,Object(c.b)("strong",{parentName:"p"},"Example Request:")),Object(c.b)("pre",null,Object(c.b)("code",{parentName:"pre",className:"language-sh"},"curl -X DELETE http://127.0.0.1:32080/api/v1/environment/my-submarine-env\n")),Object(c.b)("p",null,Object(c.b)("strong",{parentName:"p"},"Example Response:")),Object(c.b)("pre",null,Object(c.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status": "OK",\n  "code": 200,\n  "result": {\n    "environmentId": "environment_1586156073228_0001",\n    "environmentSpec": {\n      "name": "my-submarine-env",\n      "dockerImage" : "continuumio/anaconda3",\n      "kernelSpec" : {\n        "name" : "team_default_python_3.7_updated",\n        "channels" : ["defaults"],\n        "condaDependencies" : \n          ["_ipyw_jlab_nb_ext_conf=0.1.0=py37_0",\n          "alabaster=0.7.12=py37_0"],\n        "pipDependencies" :\n          []\n      }\n    }\n  }\n}\n')))}m.isMDXComponent=!0}}]);
\ No newline at end of file
diff --git a/31912795.98e9dc75.js b/31912795.c85b65ac.js
similarity index 97%
rename from 31912795.98e9dc75.js
rename to 31912795.c85b65ac.js
index 5aa6adf..4d3a9dd 100644
--- a/31912795.98e9dc75.js
+++ b/31912795.c85b65ac.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[22],{209:function(e,t,n){"use strict";n.d(t,"a",(function(){return u})),n.d(t,"b",(function(){return d}));var r=n(0),a=n.n(r);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function c(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=a.a.createContext({}),b=function(e){var t=a.a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):c(c({},t),e)),n},u=function(e){var t=b(e.components);return a.a.createElement(l.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},m=a.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,o=e.parentName,l=s(e,["components","mdxType","originalType","parentName"]),u=b(n),m=r,d=u["".concat(o,".").concat(m)]||u[m]||p[m]||i;return n?a.a.createElement(d,c(c({ref:t},l),{},{components:n})):a.a.createElement(d,c({ref:t},l))}));function d(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=m;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c.mdxType="string"==typeof e?e:r,o[1]=c;for(var l=2;l<i;l++)o[l]=n[l];return a.a.createElement.apply(null,o)}return a.a.createElement.apply(null,n)}m.displayName="MDXCreateElement"},89:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return o})),n.d(t,"metadata",(function(){return c})),n.d(t,"toc",(function(){return s})),n.d(t,"default",(function(){return b}));var r=n(3),a=n(7),i=(n(0),n(209)),o={title:"How to Run Frontend Integration Test"},c={unversionedId:"devDocs/IntegrationTestE2E",id:"version-0.6.0/devDocs/IntegrationTestE2E",isDocsHomePage:!1,title:"How to Run Frontend Integration Test",description:"\x3c!---",source:"@site/versioned_docs/version-0.6.0/devDocs/IntegrationTestE2E.md",slug:"/devDocs/IntegrationTestE2E",permalink:"/docs/devDocs/IntegrationTestE2E",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/devDocs/IntegrationTestE2E.md",version:"0.6.0",sidebar:"docs",previous:{title:"How to Run Integration K8s Test",permalink:"/docs/devDocs/IntegrationTestK8s"},next:{title:"Apache Submarine Community",permalink:"/docs/community/README"}},s=[{value:"Introduction",id:"introduction",children:[]},{value:"Run E2E test locally",id:"run-e2e-test-locally",children:[]},{value:"Run E2E test in GitHub Actions",id:"run-e2e-test-in-github-actions",children:[]},{value:"Add a new frontend E2E test case",id:"add-a-new-frontend-e2e-test-case",children:[]}],l={toc:s};function b(e){var t=e.components,n=Object(a.a)(e,["components"]);return Object(i.b)("wrapper",Object(r.a)({},l,n,{components:t,mdxType:"MDXLayout"}),Object(i.b)("h2",{id:"introduction"},"Introduction"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"The test cases under the directory ",Object(i.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/tree/master/submarine-test/test-e2e/src/test/java/org/apache/submarine/integration"},"test-e2e")," are integration tests to ensure the correctness of the Submarine Workbench.")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"These test cases can be run either locally or on GitHub Actions."))),Object(i.b)("h2",{id:"run-e2e-test-locally"},"Run E2E test locally"),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Ensure you have setup the submarine locally. If not, you can refer to ",Object(i.b)("inlineCode",{parentName:"p"},"Submarine Local Deployment"),".")),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Forward port"),Object(i.b)("pre",{parentName:"li"},Object(i.b)("code",{parentName:"pre",className:"language-bash"},"kubectl port-forward --address 0.0.0.0 service/submarine-traefik 32080:80\n"))),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Modify run_frontend_e2e.sh"),Object(i.b)("p",{parentName:"li"}," You need to modify the port and the URL in this script to where you run the workbench on."),Object(i.b)("blockquote",{parentName:"li"},Object(i.b)("p",{parentName:"blockquote"},"Example:\nIf your Submarine workbench is running on 127.0.0.1:4200, you should modify the ",Object(i.b)("strong",{parentName:"p"},"WORKBENCH_PORT")," to 4200.")),Object(i.b)("pre",{parentName:"li"},Object(i.b)("code",{parentName:"pre",className:"language-bash"},'# at submarine-test/test_e2e/run_frontend_e2e.sh\n...\n# ======= Modifiable Variables ======= #\n # Note: URL must start with "http" \n # (Ref: https://www.selenium.dev/selenium/docs/api/java/org/openqa/selenium/WebDriver.html#get(java.lang.String))\n WORKBENCH_PORT=8080 #<= modify this\n URL="http://127.0.0.1" #<=modify this\n # ==================================== #\n ...\n'))),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Run run_frontend_e2e.sh (Run a specific test case)"),Object(i.b)("p",{parentName:"li"},"This script will check whether the port can be accessed or not, and run the test case."),Object(i.b)("pre",{parentName:"li"},Object(i.b)("code",{parentName:"pre",className:"language-bash"},"# at submarine-test/test_e2e\n./run_fronted_e2e.sh ${TESTCASE}\n# TESTCASE is the IT you want to run, ex: loginIT, experimentIT...\n"))),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Run all test cases"))),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},'Following commands will compile all files and run all files ending with "IT" in the ',Object(i.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/tree/master/submarine-test/test-e2e/src/test/java/org/apache/submarine/integration"},"directory"),"."),Object(i.b)("pre",{parentName:"li"},Object(i.b)("code",{parentName:"pre",className:"language-bash"},"# Make sure the Submarine workbench is running on 127.0.0.1:8080\ncd submarine/submarine-test/test-e2e\n# Method 1: \nmvn verify\n\n# Method 2:\nmvn clean install -U\n")))),Object(i.b)("h2",{id:"run-e2e-test-in-github-actions"},"Run E2E test in GitHub Actions"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Each time a commit is pushed, GitHub Actions will be triggered automatically.")),Object(i.b)("h2",{id:"add-a-new-frontend-e2e-test-case"},"Add a new frontend E2E test case"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"WARNING"),Object(i.b)("ul",{parentName:"li"},Object(i.b)("li",{parentName:"ul"},"You ",Object(i.b)("strong",{parentName:"li"},"MUST")," read the ",Object(i.b)("a",{parentName:"li",href:"https://www.selenium.dev/documentation/en/webdriver/waits/"},"document")," carefully, and understand the difference between ",Object(i.b)("strong",{parentName:"li"},"explicit wait"),", ",Object(i.b)("strong",{parentName:"li"},"implicit wait"),", and ",Object(i.b)("strong",{parentName:"li"},"fluent wait"),"."),Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"Do not mix implicit and explicit waits.")," Doing so can cause unpredictable wait times."))),Object(i.b)("li",{parentName:"ul"},"We define many useful functions in ",Object(i.b)("a",{parentName:"li",href:"https://github.com/apache/submarine/blob/master/submarine-test/test-e2e/src/test/java/org/apache/submarine/AbstractSubmarineIT.java"},"AbstractSubmarineIT.java"),".")))}b.isMDXComponent=!0}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[21],{194:function(e,t,n){"use strict";n.d(t,"a",(function(){return u})),n.d(t,"b",(function(){return d}));var r=n(0),a=n.n(r);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function c(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=a.a.createContext({}),b=function(e){var t=a.a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):c(c({},t),e)),n},u=function(e){var t=b(e.components);return a.a.createElement(l.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},m=a.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,o=e.parentName,l=s(e,["components","mdxType","originalType","parentName"]),u=b(n),m=r,d=u["".concat(o,".").concat(m)]||u[m]||p[m]||i;return n?a.a.createElement(d,c(c({ref:t},l),{},{components:n})):a.a.createElement(d,c({ref:t},l))}));function d(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=m;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c.mdxType="string"==typeof e?e:r,o[1]=c;for(var l=2;l<i;l++)o[l]=n[l];return a.a.createElement.apply(null,o)}return a.a.createElement.apply(null,n)}m.displayName="MDXCreateElement"},88:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return o})),n.d(t,"metadata",(function(){return c})),n.d(t,"toc",(function(){return s})),n.d(t,"default",(function(){return b}));var r=n(3),a=n(7),i=(n(0),n(194)),o={title:"How to Run Frontend Integration Test"},c={unversionedId:"devDocs/IntegrationTestE2E",id:"version-0.6.0/devDocs/IntegrationTestE2E",isDocsHomePage:!1,title:"How to Run Frontend Integration Test",description:"\x3c!---",source:"@site/versioned_docs/version-0.6.0/devDocs/IntegrationTestE2E.md",slug:"/devDocs/IntegrationTestE2E",permalink:"/docs/devDocs/IntegrationTestE2E",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/devDocs/IntegrationTestE2E.md",version:"0.6.0",sidebar:"docs",previous:{title:"How to Run Integration K8s Test",permalink:"/docs/devDocs/IntegrationTestK8s"},next:{title:"Apache Submarine Community",permalink:"/docs/community/README"}},s=[{value:"Introduction",id:"introduction",children:[]},{value:"Run E2E test locally",id:"run-e2e-test-locally",children:[]},{value:"Run E2E test in GitHub Actions",id:"run-e2e-test-in-github-actions",children:[]},{value:"Add a new frontend E2E test case",id:"add-a-new-frontend-e2e-test-case",children:[]}],l={toc:s};function b(e){var t=e.components,n=Object(a.a)(e,["components"]);return Object(i.b)("wrapper",Object(r.a)({},l,n,{components:t,mdxType:"MDXLayout"}),Object(i.b)("h2",{id:"introduction"},"Introduction"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"The test cases under the directory ",Object(i.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/tree/master/submarine-test/test-e2e/src/test/java/org/apache/submarine/integration"},"test-e2e")," are integration tests to ensure the correctness of the Submarine Workbench.")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"These test cases can be run either locally or on GitHub Actions."))),Object(i.b)("h2",{id:"run-e2e-test-locally"},"Run E2E test locally"),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Ensure you have setup the submarine locally. If not, you can refer to ",Object(i.b)("inlineCode",{parentName:"p"},"Submarine Local Deployment"),".")),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Forward port"),Object(i.b)("pre",{parentName:"li"},Object(i.b)("code",{parentName:"pre",className:"language-bash"},"kubectl port-forward --address 0.0.0.0 service/submarine-traefik 32080:80\n"))),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Modify run_frontend_e2e.sh"),Object(i.b)("p",{parentName:"li"}," You need to modify the port and the URL in this script to where you run the workbench on."),Object(i.b)("blockquote",{parentName:"li"},Object(i.b)("p",{parentName:"blockquote"},"Example:\nIf your Submarine workbench is running on 127.0.0.1:4200, you should modify the ",Object(i.b)("strong",{parentName:"p"},"WORKBENCH_PORT")," to 4200.")),Object(i.b)("pre",{parentName:"li"},Object(i.b)("code",{parentName:"pre",className:"language-bash"},'# at submarine-test/test_e2e/run_frontend_e2e.sh\n...\n# ======= Modifiable Variables ======= #\n # Note: URL must start with "http" \n # (Ref: https://www.selenium.dev/selenium/docs/api/java/org/openqa/selenium/WebDriver.html#get(java.lang.String))\n WORKBENCH_PORT=8080 #<= modify this\n URL="http://127.0.0.1" #<=modify this\n # ==================================== #\n ...\n'))),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Run run_frontend_e2e.sh (Run a specific test case)"),Object(i.b)("p",{parentName:"li"},"This script will check whether the port can be accessed or not, and run the test case."),Object(i.b)("pre",{parentName:"li"},Object(i.b)("code",{parentName:"pre",className:"language-bash"},"# at submarine-test/test_e2e\n./run_fronted_e2e.sh ${TESTCASE}\n# TESTCASE is the IT you want to run, ex: loginIT, experimentIT...\n"))),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Run all test cases"))),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},'Following commands will compile all files and run all files ending with "IT" in the ',Object(i.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/tree/master/submarine-test/test-e2e/src/test/java/org/apache/submarine/integration"},"directory"),"."),Object(i.b)("pre",{parentName:"li"},Object(i.b)("code",{parentName:"pre",className:"language-bash"},"# Make sure the Submarine workbench is running on 127.0.0.1:8080\ncd submarine/submarine-test/test-e2e\n# Method 1: \nmvn verify\n\n# Method 2:\nmvn clean install -U\n")))),Object(i.b)("h2",{id:"run-e2e-test-in-github-actions"},"Run E2E test in GitHub Actions"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Each time a commit is pushed, GitHub Actions will be triggered automatically.")),Object(i.b)("h2",{id:"add-a-new-frontend-e2e-test-case"},"Add a new frontend E2E test case"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"WARNING"),Object(i.b)("ul",{parentName:"li"},Object(i.b)("li",{parentName:"ul"},"You ",Object(i.b)("strong",{parentName:"li"},"MUST")," read the ",Object(i.b)("a",{parentName:"li",href:"https://www.selenium.dev/documentation/en/webdriver/waits/"},"document")," carefully, and understand the difference between ",Object(i.b)("strong",{parentName:"li"},"explicit wait"),", ",Object(i.b)("strong",{parentName:"li"},"implicit wait"),", and ",Object(i.b)("strong",{parentName:"li"},"fluent wait"),"."),Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"Do not mix implicit and explicit waits.")," Doing so can cause unpredictable wait times."))),Object(i.b)("li",{parentName:"ul"},"We define many useful functions in ",Object(i.b)("a",{parentName:"li",href:"https://github.com/apache/submarine/blob/master/submarine-test/test-e2e/src/test/java/org/apache/submarine/AbstractSubmarineIT.java"},"AbstractSubmarineIT.java"),".")))}b.isMDXComponent=!0}}]);
\ No newline at end of file
diff --git a/31b2a22b.e63fe3fb.js b/31b2a22b.6de1b6cb.js
similarity index 97%
rename from 31b2a22b.e63fe3fb.js
rename to 31b2a22b.6de1b6cb.js
index 388a212..40f3fcd 100644
--- a/31b2a22b.e63fe3fb.js
+++ b/31b2a22b.6de1b6cb.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[23],{209:function(e,n,t){"use strict";t.d(n,"a",(function(){return u})),t.d(n,"b",(function(){return d}));var o=t(0),r=t.n(o);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function a(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);n&&(o=o.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,o)}return t}function s(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?a(Object(t),!0).forEach((function(n){i(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):a(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function c(e,n){if(null==e)return{};var t,o,r=function(e,n){if(null==e)return{};var t,o,r={},i=Object.keys(e);for(o=0;o<i.length;o++)t=i[o],n.indexOf(t)>=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o<i.length;o++)t=i[o],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var l=r.a.createContext({}),b=function(e){var n=r.a.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):s(s({},n),e)),t},u=function(e){var n=b(e.components);return r.a.createElement(l.Provider,{value:n},e.children)},m={inlineCode:"code",wrapper:function(e){var n=e.children;return r.a.createElement(r.a.Fragment,{},n)}},p=r.a.forwardRef((function(e,n){var t=e.components,o=e.mdxType,i=e.originalType,a=e.parentName,l=c(e,["components","mdxType","originalType","parentName"]),u=b(t),p=o,d=u["".concat(a,".").concat(p)]||u[p]||m[p]||i;return t?r.a.createElement(d,s(s({ref:n},l),{},{components:t})):r.a.createElement(d,s({ref:n},l))}));function d(e,n){var t=arguments,o=n&&n.mdxType;if("string"==typeof e||o){var i=t.length,a=new Array(i);a[0]=p;var s={};for(var c in n)hasOwnProperty.call(n,c)&&(s[c]=n[c]);s.originalType=e,s.mdxType="string"==typeof e?e:o,a[1]=s;for(var l=2;l<i;l++)a[l]=t[l];return r.a.createElement.apply(null,a)}return r.a.createElement.apply(null,t)}p.displayName="MDXCreateElement"},90:function(e,n,t){"use strict";t.r(n),t.d(n,"frontMatter",(function(){return a})),t.d(n,"metadata",(function(){return s})),t.d(n,"toc",(function(){return c})),t.d(n,"default",(function(){return b}));var o=t(3),r=t(7),i=(t(0),t(209)),a={title:"Notebook Implementation"},s={unversionedId:"designDocs/notebook-implementation",id:"version-0.6.0/designDocs/notebook-implementation",isDocsHomePage:!1,title:"Notebook Implementation",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/designDocs/notebook-implementation.md",slug:"/designDocs/notebook-implementation",permalink:"/docs/designDocs/notebook-implementation",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/designDocs/notebook-implementation.md",version:"0.6.0",sidebar:"docs",previous:{title:"Experiment Implementation",permalink:"/docs/designDocs/experiment-implementation"},next:{title:"Storage Implementation",permalink:"/docs/designDocs/storage-implementation"}},c=[{value:"Overview",id:"overview",children:[{value:"User&#39;s interaction",id:"users-interaction",children:[]},{value:"Admin&#39;s interaction",id:"admins-interaction",children:[]}]},{value:"Relationship with other components",id:"relationship-with-other-components",children:[{value:"Metadata store",id:"metadata-store",children:[]},{value:"Submarine Server",id:"submarine-server",children:[]},{value:"Resource manager",id:"resource-manager",children:[]},{value:"Storage",id:"storage",children:[]},{value:"Environment",id:"environment",children:[]},{value:"Submarine SDK (For Experiment, etc.)",id:"submarine-sdk-for-experiment-etc",children:[]},{value:"Security",id:"security",children:[]}]}],l={toc:c};function b(e){var n=e.components,t=Object(r.a)(e,["components"]);return Object(i.b)("wrapper",Object(o.a)({},l,t,{components:n,mdxType:"MDXLayout"}),Object(i.b)("h2",{id:"overview"},"Overview"),Object(i.b)("h3",{id:"users-interaction"},"User's interaction"),Object(i.b)("p",null,"Users can start N (N >= 0) number of Notebook sessions, a notebook session is a running notebook instance."),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Notebook session can be launched by Submarine UI (P0), and Submarine CLI (P2). "),Object(i.b)("li",{parentName:"ul"},"When launch notebook session, users can choose T-shirt size of notebook session (how much mem/cpu/gpu resources, or resource profile such as small, medium, large, etc.). (P0)"),Object(i.b)("li",{parentName:"ul"},"And user can choose an environment for notebook. More details please refer to ",Object(i.b)("a",{parentName:"li",href:"/docs/designDocs/environments-implementation"},"environment implementation")," (P0)"),Object(i.b)("li",{parentName:"ul"},"When start a notebook, user can choose what code to be initialized, similar to experiment. (P1)"),Object(i.b)("li",{parentName:"ul"},"Optionally, users can choose to attach a persistent volume to a notebook session. (P2)")),Object(i.b)("p",null,"Users can get a list of notebook sessions belongs to themselves, and connect to notebook session. "),Object(i.b)("p",null,"User can choose to terminate a running notebook session."),Object(i.b)("h3",{id:"admins-interaction"},"Admin's interaction"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"How many concurrent notebook sessions can be launched by each user is determined by resource quota limits of each user, and maximum concurrent notebook sessions can be launched by each user. (P2)")),Object(i.b)("h2",{id:"relationship-with-other-components"},"Relationship with other components"),Object(i.b)("h3",{id:"metadata-store"},"Metadata store"),Object(i.b)("p",null,"Running notebook sessions' metadata need persistented in Submarine's metadata store (Database)."),Object(i.b)("h3",{id:"submarine-server"},"Submarine Server"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"\n  +--------------+  +--------Submarine Server--------------------+\n  |Submarine UI  |  | +-------------------+                      |\n  |              |+---\x3e  Submarine        |                      |\n  |  Notebook    |  | |  Notebook REST API|                      |\n  +--------------+  | |                   |                      |\n                    | +--------+----------+     +--------------+ |\n                    |          |             +->|Metastore     | |\n                    | +--------v----------+  |  |DB            | |\n                    | | Submarine         +--+  +--------------+ |\n                    | | Notebook Mgr      |                      |\n                    | |                   |                      |\n                    | |                   |                      |\n                    | +--------+----------+                      |\n                    |          |                                 |\n                    +----------|---------------------------------+\n                               |\n                +--------------+\n       +--------v---------+\n       | Notebook Session |\n       |                  |\n       |   instance       |\n       |                  |\n       +------------------+\n")),Object(i.b)("p",null,"Once user use Submarine UI to launch a notebook session, Submarine notebook manager inside Submarine Server will persistent notebook session's metadata, and launch a new notebook session instance. "),Object(i.b)("h3",{id:"resource-manager"},"Resource manager"),Object(i.b)("p",null,"When using K8s as resource manager, Submarine notebook session will run as a new POD."),Object(i.b)("h3",{id:"storage"},"Storage"),Object(i.b)("p",null,"There're several different types of storage requirements for Submarine notebook. "),Object(i.b)("p",null,"For code, environment, etc, storage, please refer to ",Object(i.b)("a",{parentName:"p",href:"/docs/designDocs/storage-implementation"},"storage implementation"),', check "Localization of experiment/notebook/model-serving code".'),Object(i.b)("p",null,"When there're needs to attach volume (such as user's home folder) to Submarine notebook session, please check ",Object(i.b)("a",{parentName:"p",href:"/docs/designDocs/storage-implementation"},"storage implementation"),', check "Attachable volume".'),Object(i.b)("h3",{id:"environment"},"Environment"),Object(i.b)("p",null,"Submarine notebook's environment should be used to run experiment, model serving, etc. Please check ",Object(i.b)("a",{parentName:"p",href:"/docs/designDocs/environments-implementation"},"environment implementation"),'. (More specific to notebook, please check "How to implement to make user can easily use Submarine environments")'),Object(i.b)("p",null,"Please note that notebook's Environment should include right version of notebook libraries, and admin should follow the guidance to build correct Docker image, Conda libraries to correctly run Notebook."),Object(i.b)("h3",{id:"submarine-sdk-for-experiment-etc"},"Submarine SDK (For Experiment, etc.)"),Object(i.b)("p",null,"Users can run new experiment, access metrics information, or do model operations using Submarine SDK. "),Object(i.b)("p",null,"Submarine SDK is a Python library which can talk to Submarine Server which need Submarine Server's endpoint as well as user credentials."),Object(i.b)("p",null,"To ensure better experience, we recommend always install proper version of Submarine SDK from environment which users can use Submarine SDK directly from commandline. (We as Submarine community can provide sample Dockerfile or Conda environment which have correct base libraries installed for Submarine SDK)."),Object(i.b)("p",null,"Submarine Server IP will be configured automatically by Submarine Server, and added as an envar when Submarine notebook session got launched."),Object(i.b)("h3",{id:"security"},"Security"),Object(i.b)("p",null,"Please refer to ",Object(i.b)("a",{parentName:"p",href:"/docs/designDocs/wip-designs/security-implementation"},"Security Implementation")),Object(i.b)("p",null,"Once user accessed to a running notebook session, the user can also access resources of the notebook, capability of submit new experiment, and access data. This is also very dangerous so we have to protect it. "),Object(i.b)("p",null,"A simple solution is to use token-based authentication ",Object(i.b)("a",{parentName:"p",href:"https://jupyter-notebook.readthedocs.io/en/stable/security.html"},"https://jupyter-notebook.readthedocs.io/en/stable/security.html"),". A more common way is to use solutions like KNOX to support SSO. "),Object(i.b)("p",null,"We need expand this section to more details. (TODO)."))}b.isMDXComponent=!0}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[22],{194:function(e,n,t){"use strict";t.d(n,"a",(function(){return u})),t.d(n,"b",(function(){return d}));var o=t(0),r=t.n(o);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function a(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);n&&(o=o.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,o)}return t}function s(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?a(Object(t),!0).forEach((function(n){i(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):a(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function c(e,n){if(null==e)return{};var t,o,r=function(e,n){if(null==e)return{};var t,o,r={},i=Object.keys(e);for(o=0;o<i.length;o++)t=i[o],n.indexOf(t)>=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o<i.length;o++)t=i[o],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var l=r.a.createContext({}),b=function(e){var n=r.a.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):s(s({},n),e)),t},u=function(e){var n=b(e.components);return r.a.createElement(l.Provider,{value:n},e.children)},m={inlineCode:"code",wrapper:function(e){var n=e.children;return r.a.createElement(r.a.Fragment,{},n)}},p=r.a.forwardRef((function(e,n){var t=e.components,o=e.mdxType,i=e.originalType,a=e.parentName,l=c(e,["components","mdxType","originalType","parentName"]),u=b(t),p=o,d=u["".concat(a,".").concat(p)]||u[p]||m[p]||i;return t?r.a.createElement(d,s(s({ref:n},l),{},{components:t})):r.a.createElement(d,s({ref:n},l))}));function d(e,n){var t=arguments,o=n&&n.mdxType;if("string"==typeof e||o){var i=t.length,a=new Array(i);a[0]=p;var s={};for(var c in n)hasOwnProperty.call(n,c)&&(s[c]=n[c]);s.originalType=e,s.mdxType="string"==typeof e?e:o,a[1]=s;for(var l=2;l<i;l++)a[l]=t[l];return r.a.createElement.apply(null,a)}return r.a.createElement.apply(null,t)}p.displayName="MDXCreateElement"},89:function(e,n,t){"use strict";t.r(n),t.d(n,"frontMatter",(function(){return a})),t.d(n,"metadata",(function(){return s})),t.d(n,"toc",(function(){return c})),t.d(n,"default",(function(){return b}));var o=t(3),r=t(7),i=(t(0),t(194)),a={title:"Notebook Implementation"},s={unversionedId:"designDocs/notebook-implementation",id:"version-0.6.0/designDocs/notebook-implementation",isDocsHomePage:!1,title:"Notebook Implementation",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/designDocs/notebook-implementation.md",slug:"/designDocs/notebook-implementation",permalink:"/docs/designDocs/notebook-implementation",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/designDocs/notebook-implementation.md",version:"0.6.0",sidebar:"docs",previous:{title:"Experiment Implementation",permalink:"/docs/designDocs/experiment-implementation"},next:{title:"Storage Implementation",permalink:"/docs/designDocs/storage-implementation"}},c=[{value:"Overview",id:"overview",children:[{value:"User&#39;s interaction",id:"users-interaction",children:[]},{value:"Admin&#39;s interaction",id:"admins-interaction",children:[]}]},{value:"Relationship with other components",id:"relationship-with-other-components",children:[{value:"Metadata store",id:"metadata-store",children:[]},{value:"Submarine Server",id:"submarine-server",children:[]},{value:"Resource manager",id:"resource-manager",children:[]},{value:"Storage",id:"storage",children:[]},{value:"Environment",id:"environment",children:[]},{value:"Submarine SDK (For Experiment, etc.)",id:"submarine-sdk-for-experiment-etc",children:[]},{value:"Security",id:"security",children:[]}]}],l={toc:c};function b(e){var n=e.components,t=Object(r.a)(e,["components"]);return Object(i.b)("wrapper",Object(o.a)({},l,t,{components:n,mdxType:"MDXLayout"}),Object(i.b)("h2",{id:"overview"},"Overview"),Object(i.b)("h3",{id:"users-interaction"},"User's interaction"),Object(i.b)("p",null,"Users can start N (N >= 0) number of Notebook sessions, a notebook session is a running notebook instance."),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Notebook session can be launched by Submarine UI (P0), and Submarine CLI (P2). "),Object(i.b)("li",{parentName:"ul"},"When launch notebook session, users can choose T-shirt size of notebook session (how much mem/cpu/gpu resources, or resource profile such as small, medium, large, etc.). (P0)"),Object(i.b)("li",{parentName:"ul"},"And user can choose an environment for notebook. More details please refer to ",Object(i.b)("a",{parentName:"li",href:"/docs/designDocs/environments-implementation"},"environment implementation")," (P0)"),Object(i.b)("li",{parentName:"ul"},"When start a notebook, user can choose what code to be initialized, similar to experiment. (P1)"),Object(i.b)("li",{parentName:"ul"},"Optionally, users can choose to attach a persistent volume to a notebook session. (P2)")),Object(i.b)("p",null,"Users can get a list of notebook sessions belongs to themselves, and connect to notebook session. "),Object(i.b)("p",null,"User can choose to terminate a running notebook session."),Object(i.b)("h3",{id:"admins-interaction"},"Admin's interaction"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"How many concurrent notebook sessions can be launched by each user is determined by resource quota limits of each user, and maximum concurrent notebook sessions can be launched by each user. (P2)")),Object(i.b)("h2",{id:"relationship-with-other-components"},"Relationship with other components"),Object(i.b)("h3",{id:"metadata-store"},"Metadata store"),Object(i.b)("p",null,"Running notebook sessions' metadata need persistented in Submarine's metadata store (Database)."),Object(i.b)("h3",{id:"submarine-server"},"Submarine Server"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"\n  +--------------+  +--------Submarine Server--------------------+\n  |Submarine UI  |  | +-------------------+                      |\n  |              |+---\x3e  Submarine        |                      |\n  |  Notebook    |  | |  Notebook REST API|                      |\n  +--------------+  | |                   |                      |\n                    | +--------+----------+     +--------------+ |\n                    |          |             +->|Metastore     | |\n                    | +--------v----------+  |  |DB            | |\n                    | | Submarine         +--+  +--------------+ |\n                    | | Notebook Mgr      |                      |\n                    | |                   |                      |\n                    | |                   |                      |\n                    | +--------+----------+                      |\n                    |          |                                 |\n                    +----------|---------------------------------+\n                               |\n                +--------------+\n       +--------v---------+\n       | Notebook Session |\n       |                  |\n       |   instance       |\n       |                  |\n       +------------------+\n")),Object(i.b)("p",null,"Once user use Submarine UI to launch a notebook session, Submarine notebook manager inside Submarine Server will persistent notebook session's metadata, and launch a new notebook session instance. "),Object(i.b)("h3",{id:"resource-manager"},"Resource manager"),Object(i.b)("p",null,"When using K8s as resource manager, Submarine notebook session will run as a new POD."),Object(i.b)("h3",{id:"storage"},"Storage"),Object(i.b)("p",null,"There're several different types of storage requirements for Submarine notebook. "),Object(i.b)("p",null,"For code, environment, etc, storage, please refer to ",Object(i.b)("a",{parentName:"p",href:"/docs/designDocs/storage-implementation"},"storage implementation"),', check "Localization of experiment/notebook/model-serving code".'),Object(i.b)("p",null,"When there're needs to attach volume (such as user's home folder) to Submarine notebook session, please check ",Object(i.b)("a",{parentName:"p",href:"/docs/designDocs/storage-implementation"},"storage implementation"),', check "Attachable volume".'),Object(i.b)("h3",{id:"environment"},"Environment"),Object(i.b)("p",null,"Submarine notebook's environment should be used to run experiment, model serving, etc. Please check ",Object(i.b)("a",{parentName:"p",href:"/docs/designDocs/environments-implementation"},"environment implementation"),'. (More specific to notebook, please check "How to implement to make user can easily use Submarine environments")'),Object(i.b)("p",null,"Please note that notebook's Environment should include right version of notebook libraries, and admin should follow the guidance to build correct Docker image, Conda libraries to correctly run Notebook."),Object(i.b)("h3",{id:"submarine-sdk-for-experiment-etc"},"Submarine SDK (For Experiment, etc.)"),Object(i.b)("p",null,"Users can run new experiment, access metrics information, or do model operations using Submarine SDK. "),Object(i.b)("p",null,"Submarine SDK is a Python library which can talk to Submarine Server which need Submarine Server's endpoint as well as user credentials."),Object(i.b)("p",null,"To ensure better experience, we recommend always install proper version of Submarine SDK from environment which users can use Submarine SDK directly from commandline. (We as Submarine community can provide sample Dockerfile or Conda environment which have correct base libraries installed for Submarine SDK)."),Object(i.b)("p",null,"Submarine Server IP will be configured automatically by Submarine Server, and added as an envar when Submarine notebook session got launched."),Object(i.b)("h3",{id:"security"},"Security"),Object(i.b)("p",null,"Please refer to ",Object(i.b)("a",{parentName:"p",href:"/docs/designDocs/wip-designs/security-implementation"},"Security Implementation")),Object(i.b)("p",null,"Once user accessed to a running notebook session, the user can also access resources of the notebook, capability of submit new experiment, and access data. This is also very dangerous so we have to protect it. "),Object(i.b)("p",null,"A simple solution is to use token-based authentication ",Object(i.b)("a",{parentName:"p",href:"https://jupyter-notebook.readthedocs.io/en/stable/security.html"},"https://jupyter-notebook.readthedocs.io/en/stable/security.html"),". A more common way is to use solutions like KNOX to support SSO. "),Object(i.b)("p",null,"We need expand this section to more details. (TODO)."))}b.isMDXComponent=!0}}]);
\ No newline at end of file
diff --git a/3315d736.0400cdd0.js b/3315d736.c8c84c6a.js
similarity index 94%
rename from 3315d736.0400cdd0.js
rename to 3315d736.c8c84c6a.js
index b1be6cf..6c0b1d6 100644
--- a/3315d736.0400cdd0.js
+++ b/3315d736.c8c84c6a.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[24],{209:function(e,t,r){"use strict";r.d(t,"a",(function(){return p})),r.d(t,"b",(function(){return m}));var n=r(0),a=r.n(n);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function c(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?c(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):c(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function u(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var s=a.a.createContext({}),l=function(e){var t=a.a.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},p=function(e){var t=l(e.components);return a.a.createElement(s.Provider,{value:t},e.children)},b={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},f=a.a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,c=e.parentName,s=u(e,["components","mdxType","originalType","parentName"]),p=l(r),f=n,m=p["".concat(c,".").concat(f)]||p[f]||b[f]||o;return r?a.a.createElement(m,i(i({ref:t},s),{},{components:r})):a.a.createElement(m,i({ref:t},s))}));function m(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,c=new Array(o);c[0]=f;var i={};for(var u in t)hasOwnProperty.call(t,u)&&(i[u]=t[u]);i.originalType=e,i.mdxType="string"==typeof e?e:n,c[1]=i;for(var s=2;s<o;s++)c[s]=r[s];return a.a.createElement.apply(null,c)}return a.a.createElement.apply(null,r)}f.displayName="MDXCreateElement"},91:function(e,t,r){"use strict";r.r(t),r.d(t,"frontMatter",(function(){return c})),r.d(t,"metadata",(function(){return i})),r.d(t,"toc",(function(){return u})),r.d(t,"default",(function(){return l}));var n=r(3),a=r(7),o=(r(0),r(209)),c={},i={type:"mdx",permalink:"/releases/submarine-release-0.3.0",source:"@site/src/pages/releases/submarine-release-0.3.0.md"},u=[],s={toc:u};function l(e){var t=e.components,r=Object(a.a)(e,["components"]);return Object(o.b)("wrapper",Object(n.a)({},s,r,{components:t,mdxType:"MDXLayout"}),Object(o.b)("h1",{id:"apache-submarine-release-030"},"Apache Submarine Release 0.3.0"),Object(o.b)("p",null,"The Apache Submarine community is pleased to announce the availability of the ",Object(o.b)("inlineCode",{parentName:"p"},"0.3.0")," release."),Object(o.b)("p",null,"The community put significant effort into improving Apache Submarine since the last release.\n196 patches for improvements and bug fixes. The highlighted features are as follows:"),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},"Mini-submarine (YARN)"),Object(o.b)("li",{parentName:"ul"},"Basic Tensorflow job submission to k8s through submarine-server RESTful API"),Object(o.b)("li",{parentName:"ul"},"Job submission on YARN through submarine-server RPC protocol")),Object(o.b)("p",null,"We encourage to ",Object(o.b)("a",{parentName:"p",href:"/docs/download"},"download")," the latest release. Feedback through the ",Object(o.b)("a",{parentName:"p",href:"/docs/community/README"},"mailing lists")," is very welcome."),Object(o.b)("p",null,"You can visit ",Object(o.b)("a",{parentName:"p",href:"https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12322824&version=12345556"},"issue tracker")," for full list of issues that are resolved."))}l.isMDXComponent=!0}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[23],{194:function(e,t,r){"use strict";r.d(t,"a",(function(){return p})),r.d(t,"b",(function(){return m}));var n=r(0),a=r.n(n);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function c(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?c(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):c(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function u(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var s=a.a.createContext({}),l=function(e){var t=a.a.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},p=function(e){var t=l(e.components);return a.a.createElement(s.Provider,{value:t},e.children)},b={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},f=a.a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,c=e.parentName,s=u(e,["components","mdxType","originalType","parentName"]),p=l(r),f=n,m=p["".concat(c,".").concat(f)]||p[f]||b[f]||o;return r?a.a.createElement(m,i(i({ref:t},s),{},{components:r})):a.a.createElement(m,i({ref:t},s))}));function m(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,c=new Array(o);c[0]=f;var i={};for(var u in t)hasOwnProperty.call(t,u)&&(i[u]=t[u]);i.originalType=e,i.mdxType="string"==typeof e?e:n,c[1]=i;for(var s=2;s<o;s++)c[s]=r[s];return a.a.createElement.apply(null,c)}return a.a.createElement.apply(null,r)}f.displayName="MDXCreateElement"},90:function(e,t,r){"use strict";r.r(t),r.d(t,"frontMatter",(function(){return c})),r.d(t,"metadata",(function(){return i})),r.d(t,"toc",(function(){return u})),r.d(t,"default",(function(){return l}));var n=r(3),a=r(7),o=(r(0),r(194)),c={},i={type:"mdx",permalink:"/releases/submarine-release-0.3.0",source:"@site/src/pages/releases/submarine-release-0.3.0.md"},u=[],s={toc:u};function l(e){var t=e.components,r=Object(a.a)(e,["components"]);return Object(o.b)("wrapper",Object(n.a)({},s,r,{components:t,mdxType:"MDXLayout"}),Object(o.b)("h1",{id:"apache-submarine-release-030"},"Apache Submarine Release 0.3.0"),Object(o.b)("p",null,"The Apache Submarine community is pleased to announce the availability of the ",Object(o.b)("inlineCode",{parentName:"p"},"0.3.0")," release."),Object(o.b)("p",null,"The community put significant effort into improving Apache Submarine since the last release.\n196 patches for improvements and bug fixes. The highlighted features are as follows:"),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},"Mini-submarine (YARN)"),Object(o.b)("li",{parentName:"ul"},"Basic Tensorflow job submission to k8s through submarine-server RESTful API"),Object(o.b)("li",{parentName:"ul"},"Job submission on YARN through submarine-server RPC protocol")),Object(o.b)("p",null,"We encourage to ",Object(o.b)("a",{parentName:"p",href:"/docs/download"},"download")," the latest release. Feedback through the ",Object(o.b)("a",{parentName:"p",href:"/docs/community/README"},"mailing lists")," is very welcome."),Object(o.b)("p",null,"You can visit ",Object(o.b)("a",{parentName:"p",href:"https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12322824&version=12345556"},"issue tracker")," for full list of issues that are resolved."))}l.isMDXComponent=!0}}]);
\ No newline at end of file
diff --git a/3593fe0f.2d123764.js b/3593fe0f.c6639d87.js
similarity index 96%
rename from 3593fe0f.2d123764.js
rename to 3593fe0f.c6639d87.js
index 511143c..1750afd 100644
--- a/3593fe0f.2d123764.js
+++ b/3593fe0f.c6639d87.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[25],{209:function(e,t,n){"use strict";n.d(t,"a",(function(){return p})),n.d(t,"b",(function(){return O}));var r=n(0),a=n.n(r);function c(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function b(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?b(Object(n),!0).forEach((function(t){c(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):b(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},c=Object.keys(e);for(r=0;r<c.length;r++)n=c[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(e);for(r=0;r<c.length;r++)n=c[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var o=a.a.createContext({}),d=function(e){var t=a.a.useContext(o),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},p=function(e){var t=d(e.components);return a.a.createElement(o.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},m=a.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,c=e.originalType,b=e.parentName,o=l(e,["components","mdxType","originalType","parentName"]),p=d(n),m=r,O=p["".concat(b,".").concat(m)]||p[m]||u[m]||c;return n?a.a.createElement(O,i(i({ref:t},o),{},{components:n})):a.a.createElement(O,i({ref:t},o))}));function O(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var c=n.length,b=new Array(c);b[0]=m;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i.mdxType="string"==typeof e?e:r,b[1]=i;for(var o=2;o<c;o++)b[o]=n[o];return a.a.createElement.apply(null,b)}return a.a.createElement.apply(null,n)}m.displayName="MDXCreateElement"},92:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return b})),n.d(t,"metadata",(function(){return i})),n.d(t,"toc",(function(){return l})),n.d(t,"default",(function(){return d}));var r=n(3),a=n(7),c=(n(0),n(209)),b={title:"Dependencies for Submarine"},i={unversionedId:"devDocs/Dependencies",id:"version-0.6.0/devDocs/Dependencies",isDocsHomePage:!1,title:"Dependencies for Submarine",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/devDocs/Dependencies.md",slug:"/devDocs/Dependencies",permalink:"/docs/devDocs/Dependencies",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/devDocs/Dependencies.md",version:"0.6.0",sidebar:"docs",previous:{title:"Project Architecture",permalink:"/docs/devDocs/README"},next:{title:"How to Build Submarine",permalink:"/docs/devDocs/BuildFromCode"}},l=[{value:"Kubernetes",id:"kubernetes",children:[]},{value:"KinD",id:"kind",children:[]},{value:"Java",id:"java",children:[]},{value:"Maven",id:"maven",children:[]},{value:"Docker",id:"docker",children:[]}],o={toc:l};function d(e){var t=e.components,n=Object(a.a)(e,["components"]);return Object(c.b)("wrapper",Object(r.a)({},o,n,{components:t,mdxType:"MDXLayout"}),Object(c.b)("ul",null,Object(c.b)("li",{parentName:"ul"},"These are the dependencies currently used by Apache Submarine.")),Object(c.b)("h2",{id:"kubernetes"},"Kubernetes"),Object(c.b)("table",null,Object(c.b)("thead",{parentName:"table"},Object(c.b)("tr",{parentName:"thead"},Object(c.b)("th",{parentName:"tr",align:null},"Kubernetes Version"),Object(c.b)("th",{parentName:"tr",align:"center"},"Support?"))),Object(c.b)("tbody",{parentName:"table"},Object(c.b)("tr",{parentName:"tbody"},Object(c.b)("td",{parentName:"tr",align:null},"1.13.x (or earlier)"),Object(c.b)("td",{parentName:"tr",align:"center"},"X")),Object(c.b)("tr",{parentName:"tbody"},Object(c.b)("td",{parentName:"tr",align:null},"1.14.x"),Object(c.b)("td",{parentName:"tr",align:"center"},"\u221a")),Object(c.b)("tr",{parentName:"tbody"},Object(c.b)("td",{parentName:"tr",align:null},"1.15.x"),Object(c.b)("td",{parentName:"tr",align:"center"},"\u221a")),Object(c.b)("tr",{parentName:"tbody"},Object(c.b)("td",{parentName:"tr",align:null},"1.16.x"),Object(c.b)("td",{parentName:"tr",align:"center"},"\u221a")),Object(c.b)("tr",{parentName:"tbody"},Object(c.b)("td",{parentName:"tr",align:null},"1.17.x"),Object(c.b)("td",{parentName:"tr",align:"center"},"To be verified")),Object(c.b)("tr",{parentName:"tbody"},Object(c.b)("td",{parentName:"tr",align:null},"1.18.x"),Object(c.b)("td",{parentName:"tr",align:"center"},"To be verified")))),Object(c.b)("h2",{id:"kind"},"KinD"),Object(c.b)("table",null,Object(c.b)("thead",{parentName:"table"},Object(c.b)("tr",{parentName:"thead"},Object(c.b)("th",{parentName:"tr",align:null},"KinD Version"),Object(c.b)("th",{parentName:"tr",align:"center"},"Support?"))),Object(c.b)("tbody",{parentName:"table"},Object(c.b)("tr",{parentName:"tbody"},Object(c.b)("td",{parentName:"tr",align:null},"0.5.x (or earlier)"),Object(c.b)("td",{parentName:"tr",align:"center"},"X")),Object(c.b)("tr",{parentName:"tbody"},Object(c.b)("td",{parentName:"tr",align:null},"0.6.x"),Object(c.b)("td",{parentName:"tr",align:"center"},"\u221a")),Object(c.b)("tr",{parentName:"tbody"},Object(c.b)("td",{parentName:"tr",align:null},"0.7.x"),Object(c.b)("td",{parentName:"tr",align:"center"},"\u221a")),Object(c.b)("tr",{parentName:"tbody"},Object(c.b)("td",{parentName:"tr",align:null},"0.8.x"),Object(c.b)("td",{parentName:"tr",align:"center"},"\u221a")),Object(c.b)("tr",{parentName:"tbody"},Object(c.b)("td",{parentName:"tr",align:null},"0.9.x"),Object(c.b)("td",{parentName:"tr",align:"center"},"\u221a")),Object(c.b)("tr",{parentName:"tbody"},Object(c.b)("td",{parentName:"tr",align:null},"0.10.x"),Object(c.b)("td",{parentName:"tr",align:"center"},"\u221a")),Object(c.b)("tr",{parentName:"tbody"},Object(c.b)("td",{parentName:"tr",align:null},"0.11.x"),Object(c.b)("td",{parentName:"tr",align:"center"},"\u221a")))),Object(c.b)("h2",{id:"java"},"Java"),Object(c.b)("ul",null,Object(c.b)("li",{parentName:"ul"},"TODO")),Object(c.b)("h2",{id:"maven"},"Maven"),Object(c.b)("ul",null,Object(c.b)("li",{parentName:"ul"},"TODO")),Object(c.b)("h2",{id:"docker"},"Docker"),Object(c.b)("ul",null,Object(c.b)("li",{parentName:"ul"},"TODO")))}d.isMDXComponent=!0}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[24],{194:function(e,t,n){"use strict";n.d(t,"a",(function(){return p})),n.d(t,"b",(function(){return O}));var r=n(0),a=n.n(r);function c(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function b(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?b(Object(n),!0).forEach((function(t){c(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):b(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},c=Object.keys(e);for(r=0;r<c.length;r++)n=c[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(e);for(r=0;r<c.length;r++)n=c[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var o=a.a.createContext({}),d=function(e){var t=a.a.useContext(o),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},p=function(e){var t=d(e.components);return a.a.createElement(o.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},m=a.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,c=e.originalType,b=e.parentName,o=l(e,["components","mdxType","originalType","parentName"]),p=d(n),m=r,O=p["".concat(b,".").concat(m)]||p[m]||u[m]||c;return n?a.a.createElement(O,i(i({ref:t},o),{},{components:n})):a.a.createElement(O,i({ref:t},o))}));function O(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var c=n.length,b=new Array(c);b[0]=m;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i.mdxType="string"==typeof e?e:r,b[1]=i;for(var o=2;o<c;o++)b[o]=n[o];return a.a.createElement.apply(null,b)}return a.a.createElement.apply(null,n)}m.displayName="MDXCreateElement"},91:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return b})),n.d(t,"metadata",(function(){return i})),n.d(t,"toc",(function(){return l})),n.d(t,"default",(function(){return d}));var r=n(3),a=n(7),c=(n(0),n(194)),b={title:"Dependencies for Submarine"},i={unversionedId:"devDocs/Dependencies",id:"version-0.6.0/devDocs/Dependencies",isDocsHomePage:!1,title:"Dependencies for Submarine",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/devDocs/Dependencies.md",slug:"/devDocs/Dependencies",permalink:"/docs/devDocs/Dependencies",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/devDocs/Dependencies.md",version:"0.6.0",sidebar:"docs",previous:{title:"Project Architecture",permalink:"/docs/devDocs/README"},next:{title:"How to Build Submarine",permalink:"/docs/devDocs/BuildFromCode"}},l=[{value:"Kubernetes",id:"kubernetes",children:[]},{value:"KinD",id:"kind",children:[]},{value:"Java",id:"java",children:[]},{value:"Maven",id:"maven",children:[]},{value:"Docker",id:"docker",children:[]}],o={toc:l};function d(e){var t=e.components,n=Object(a.a)(e,["components"]);return Object(c.b)("wrapper",Object(r.a)({},o,n,{components:t,mdxType:"MDXLayout"}),Object(c.b)("ul",null,Object(c.b)("li",{parentName:"ul"},"These are the dependencies currently used by Apache Submarine.")),Object(c.b)("h2",{id:"kubernetes"},"Kubernetes"),Object(c.b)("table",null,Object(c.b)("thead",{parentName:"table"},Object(c.b)("tr",{parentName:"thead"},Object(c.b)("th",{parentName:"tr",align:null},"Kubernetes Version"),Object(c.b)("th",{parentName:"tr",align:"center"},"Support?"))),Object(c.b)("tbody",{parentName:"table"},Object(c.b)("tr",{parentName:"tbody"},Object(c.b)("td",{parentName:"tr",align:null},"1.13.x (or earlier)"),Object(c.b)("td",{parentName:"tr",align:"center"},"X")),Object(c.b)("tr",{parentName:"tbody"},Object(c.b)("td",{parentName:"tr",align:null},"1.14.x"),Object(c.b)("td",{parentName:"tr",align:"center"},"\u221a")),Object(c.b)("tr",{parentName:"tbody"},Object(c.b)("td",{parentName:"tr",align:null},"1.15.x"),Object(c.b)("td",{parentName:"tr",align:"center"},"\u221a")),Object(c.b)("tr",{parentName:"tbody"},Object(c.b)("td",{parentName:"tr",align:null},"1.16.x"),Object(c.b)("td",{parentName:"tr",align:"center"},"\u221a")),Object(c.b)("tr",{parentName:"tbody"},Object(c.b)("td",{parentName:"tr",align:null},"1.17.x"),Object(c.b)("td",{parentName:"tr",align:"center"},"To be verified")),Object(c.b)("tr",{parentName:"tbody"},Object(c.b)("td",{parentName:"tr",align:null},"1.18.x"),Object(c.b)("td",{parentName:"tr",align:"center"},"To be verified")))),Object(c.b)("h2",{id:"kind"},"KinD"),Object(c.b)("table",null,Object(c.b)("thead",{parentName:"table"},Object(c.b)("tr",{parentName:"thead"},Object(c.b)("th",{parentName:"tr",align:null},"KinD Version"),Object(c.b)("th",{parentName:"tr",align:"center"},"Support?"))),Object(c.b)("tbody",{parentName:"table"},Object(c.b)("tr",{parentName:"tbody"},Object(c.b)("td",{parentName:"tr",align:null},"0.5.x (or earlier)"),Object(c.b)("td",{parentName:"tr",align:"center"},"X")),Object(c.b)("tr",{parentName:"tbody"},Object(c.b)("td",{parentName:"tr",align:null},"0.6.x"),Object(c.b)("td",{parentName:"tr",align:"center"},"\u221a")),Object(c.b)("tr",{parentName:"tbody"},Object(c.b)("td",{parentName:"tr",align:null},"0.7.x"),Object(c.b)("td",{parentName:"tr",align:"center"},"\u221a")),Object(c.b)("tr",{parentName:"tbody"},Object(c.b)("td",{parentName:"tr",align:null},"0.8.x"),Object(c.b)("td",{parentName:"tr",align:"center"},"\u221a")),Object(c.b)("tr",{parentName:"tbody"},Object(c.b)("td",{parentName:"tr",align:null},"0.9.x"),Object(c.b)("td",{parentName:"tr",align:"center"},"\u221a")),Object(c.b)("tr",{parentName:"tbody"},Object(c.b)("td",{parentName:"tr",align:null},"0.10.x"),Object(c.b)("td",{parentName:"tr",align:"center"},"\u221a")),Object(c.b)("tr",{parentName:"tbody"},Object(c.b)("td",{parentName:"tr",align:null},"0.11.x"),Object(c.b)("td",{parentName:"tr",align:"center"},"\u221a")))),Object(c.b)("h2",{id:"java"},"Java"),Object(c.b)("ul",null,Object(c.b)("li",{parentName:"ul"},"TODO")),Object(c.b)("h2",{id:"maven"},"Maven"),Object(c.b)("ul",null,Object(c.b)("li",{parentName:"ul"},"TODO")),Object(c.b)("h2",{id:"docker"},"Docker"),Object(c.b)("ul",null,Object(c.b)("li",{parentName:"ul"},"TODO")))}d.isMDXComponent=!0}}]);
\ No newline at end of file
diff --git a/35de792d.6b3bbd93.js b/35de792d.e4cec2f8.js
similarity index 97%
rename from 35de792d.6b3bbd93.js
rename to 35de792d.e4cec2f8.js
index aac8fcc..ed5f00a 100644
--- a/35de792d.6b3bbd93.js
+++ b/35de792d.e4cec2f8.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[26],{209:function(e,n,t){"use strict";t.d(n,"a",(function(){return u})),t.d(n,"b",(function(){return m}));var r=t(0),a=t.n(r);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function o(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 l(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?o(Object(t),!0).forEach((function(n){i(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):o(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function s(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)t=i[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)t=i[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var c=a.a.createContext({}),b=function(e){var n=a.a.useContext(c),t=n;return e&&(t="function"==typeof e?e(n):l(l({},n),e)),t},u=function(e){var n=b(e.components);return a.a.createElement(c.Provider,{value:n},e.children)},p={inlineCode:"code",wrapper:function(e){var n=e.children;return a.a.createElement(a.a.Fragment,{},n)}},d=a.a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,i=e.originalType,o=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),u=b(t),d=r,m=u["".concat(o,".").concat(d)]||u[d]||p[d]||i;return t?a.a.createElement(m,l(l({ref:n},c),{},{components:t})):a.a.createElement(m,l({ref:n},c))}));function m(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var i=t.length,o=new Array(i);o[0]=d;var l={};for(var s in n)hasOwnProperty.call(n,s)&&(l[s]=n[s]);l.originalType=e,l.mdxType="string"==typeof e?e:r,o[1]=l;for(var c=2;c<i;c++)o[c]=t[c];return a.a.createElement.apply(null,o)}return a.a.createElement.apply(null,t)}d.displayName="MDXCreateElement"},93:function(e,n,t){"use strict";t.r(n),t.d(n,"frontMatter",(function(){return o})),t.d(n,"metadata",(function(){return l})),t.d(n,"toc",(function(){return s})),t.d(n,"default",(function(){return b}));var r=t(3),a=t(7),i=(t(0),t(209)),o={title:"Submarine Local Deployment",slug:"/"},l={unversionedId:"gettingStarted/localDeployment",id:"version-0.6.0/gettingStarted/localDeployment",isDocsHomePage:!1,title:"Submarine Local Deployment",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/gettingStarted/localDeployment.md",slug:"/",permalink:"/docs/",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/gettingStarted/localDeployment.md",version:"0.6.0"},s=[{value:"Prerequisite",id:"prerequisite",children:[]},{value:"Deploy Kubernetes Cluster",id:"deploy-kubernetes-cluster",children:[]},{value:"Install Submarine on Kubernetes",id:"install-submarine-on-kubernetes",children:[]},{value:"Verify installation",id:"verify-installation",children:[]},{value:"Access Submarine in a Cluster",id:"access-submarine-in-a-cluster",children:[]},{value:"Open Workbench in the browser.",id:"open-workbench-in-the-browser",children:[]},{value:"Uninstall Submarine",id:"uninstall-submarine",children:[]}],c={toc:s};function b(e){var n=e.components,t=Object(a.a)(e,["components"]);return Object(i.b)("wrapper",Object(r.a)({},c,t,{components:n,mdxType:"MDXLayout"}),Object(i.b)("h2",{id:"prerequisite"},"Prerequisite"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",{parentName:"li",href:"https://kubernetes.io/docs/tasks/tools/install-kubectl/"},"kubectl")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",{parentName:"li",href:"https://helm.sh/docs/intro/install/"},"helm")," (Helm v3 is minimum requirement.)"),Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",{parentName:"li",href:"https://minikube.sigs.k8s.io/docs/start/"},"minikube"),".")),Object(i.b)("h2",{id:"deploy-kubernetes-cluster"},"Deploy Kubernetes Cluster"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"$ minikube start --vm-driver=docker --cpus 8 --memory 4096 --disk-size=20G --kubernetes-version v1.15.11\n")),Object(i.b)("h2",{id:"install-submarine-on-kubernetes"},"Install Submarine on Kubernetes"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"$ git clone https://github.com/apache/submarine.git\n$ cd submarine\n$ helm install submarine ./helm-charts/submarine\n")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"NAME: submarine\nLAST DEPLOYED: Fri Jan 29 05:35:36 2021\nNAMESPACE: default\nSTATUS: deployed\nREVISION: 1\nTEST SUITE: None\n")),Object(i.b)("h2",{id:"verify-installation"},"Verify installation"),Object(i.b)("p",null,"Once you got it installed, check with below commands and you should see similar outputs:"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"$ kubectl get pods\n")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"NAME                                              READY   STATUS    RESTARTS   AGE\nnotebook-controller-deployment-5db8b6cbf7-k65jm   1/1     Running   0          5s\npytorch-operator-7ff5d96d59-gx7f5                 1/1     Running   0          5s\nsubmarine-database-8d95d74f7-ntvqp                1/1     Running   0          5s\nsubmarine-server-b6cd4787b-7bvr7                  1/1     Running   0          5s\nsubmarine-traefik-9bb6f8577-66sx6                 1/1     Running   0          5s\ntf-job-operator-7844656dd-lfgmd                   1/1     Running   0          5s\n")),Object(i.b)("div",{className:"admonition admonition-warning alert alert--danger"},Object(i.b)("div",{parentName:"div",className:"admonition-heading"},Object(i.b)("h5",{parentName:"div"},Object(i.b)("span",{parentName:"h5",className:"admonition-icon"},Object(i.b)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},Object(i.b)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"warning")),Object(i.b)("div",{parentName:"div",className:"admonition-content"},Object(i.b)("p",{parentName:"div"},"Note that if you encounter below issue when installation:"))),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"Error: rendered manifests contain a resource that already exists.\nUnable to continue with install: existing resource conflict: namespace: , name: podgroups.scheduling.incubator.k8s.io, existing_kind: apiextensions.k8s.io/v1beta1, Kind=CustomResourceDefinition, new_kind: apiextensions.k8s.io/v1beta1, Kind=CustomResourceDefinition\n")),Object(i.b)("p",null,"It might be caused by the previous installed submarine charts. Fix it by running:"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"$ kubectl delete crd/tfjobs.kubeflow.org && kubectl delete crd/podgroups.scheduling.incubator.k8s.io && kubectl delete crd/pytorchjobs.kubeflow.org\n")),Object(i.b)("h2",{id:"access-submarine-in-a-cluster"},"Access Submarine in a Cluster"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"# #Listen on port 32080 on all addresses, forwarding to 80 in the pod\n# Method1 -- using minikube ip + NodePort\n$ minikube ip  # you'll get the IP address of minikube, ex: 192.168.49.2\n\n# Method2 -- using port-forwarding\n$ kubectl port-forward --address 0.0.0.0 service/submarine-traefik 32080:80\n")),Object(i.b)("h2",{id:"open-workbench-in-the-browser"},"Open Workbench in the browser."),Object(i.b)("p",null,"Open http://{minikube ip}:32080(from Method1), ex: ",Object(i.b)("a",{parentName:"p",href:"http://192.168.49.2:32080"},"http://192.168.49.2:32080")),Object(i.b)("p",null,"or ",Object(i.b)("a",{parentName:"p",href:"http://127.0.0.1:32080"},"http://127.0.0.1:32080")," (from Method 2)."),Object(i.b)("p",null,"The default username and password is ",Object(i.b)("inlineCode",{parentName:"p"},"admin")," and ",Object(i.b)("inlineCode",{parentName:"p"},"admin")),Object(i.b)("p",null,Object(i.b)("img",{parentName:"p",src:"https://i.imgur.com/DkZhyEG.png",alt:null})),Object(i.b)("h2",{id:"uninstall-submarine"},"Uninstall Submarine"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"$ helm delete submarine\n")))}b.isMDXComponent=!0}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[25],{194:function(e,n,t){"use strict";t.d(n,"a",(function(){return u})),t.d(n,"b",(function(){return m}));var r=t(0),a=t.n(r);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function o(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 l(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?o(Object(t),!0).forEach((function(n){i(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):o(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function s(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)t=i[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)t=i[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var c=a.a.createContext({}),b=function(e){var n=a.a.useContext(c),t=n;return e&&(t="function"==typeof e?e(n):l(l({},n),e)),t},u=function(e){var n=b(e.components);return a.a.createElement(c.Provider,{value:n},e.children)},p={inlineCode:"code",wrapper:function(e){var n=e.children;return a.a.createElement(a.a.Fragment,{},n)}},d=a.a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,i=e.originalType,o=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),u=b(t),d=r,m=u["".concat(o,".").concat(d)]||u[d]||p[d]||i;return t?a.a.createElement(m,l(l({ref:n},c),{},{components:t})):a.a.createElement(m,l({ref:n},c))}));function m(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var i=t.length,o=new Array(i);o[0]=d;var l={};for(var s in n)hasOwnProperty.call(n,s)&&(l[s]=n[s]);l.originalType=e,l.mdxType="string"==typeof e?e:r,o[1]=l;for(var c=2;c<i;c++)o[c]=t[c];return a.a.createElement.apply(null,o)}return a.a.createElement.apply(null,t)}d.displayName="MDXCreateElement"},92:function(e,n,t){"use strict";t.r(n),t.d(n,"frontMatter",(function(){return o})),t.d(n,"metadata",(function(){return l})),t.d(n,"toc",(function(){return s})),t.d(n,"default",(function(){return b}));var r=t(3),a=t(7),i=(t(0),t(194)),o={title:"Submarine Local Deployment",slug:"/"},l={unversionedId:"gettingStarted/localDeployment",id:"version-0.6.0/gettingStarted/localDeployment",isDocsHomePage:!1,title:"Submarine Local Deployment",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/gettingStarted/localDeployment.md",slug:"/",permalink:"/docs/",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/gettingStarted/localDeployment.md",version:"0.6.0"},s=[{value:"Prerequisite",id:"prerequisite",children:[]},{value:"Deploy Kubernetes Cluster",id:"deploy-kubernetes-cluster",children:[]},{value:"Install Submarine on Kubernetes",id:"install-submarine-on-kubernetes",children:[]},{value:"Verify installation",id:"verify-installation",children:[]},{value:"Access Submarine in a Cluster",id:"access-submarine-in-a-cluster",children:[]},{value:"Open Workbench in the browser.",id:"open-workbench-in-the-browser",children:[]},{value:"Uninstall Submarine",id:"uninstall-submarine",children:[]}],c={toc:s};function b(e){var n=e.components,t=Object(a.a)(e,["components"]);return Object(i.b)("wrapper",Object(r.a)({},c,t,{components:n,mdxType:"MDXLayout"}),Object(i.b)("h2",{id:"prerequisite"},"Prerequisite"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",{parentName:"li",href:"https://kubernetes.io/docs/tasks/tools/install-kubectl/"},"kubectl")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",{parentName:"li",href:"https://helm.sh/docs/intro/install/"},"helm")," (Helm v3 is minimum requirement.)"),Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",{parentName:"li",href:"https://minikube.sigs.k8s.io/docs/start/"},"minikube"),".")),Object(i.b)("h2",{id:"deploy-kubernetes-cluster"},"Deploy Kubernetes Cluster"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"$ minikube start --vm-driver=docker --cpus 8 --memory 4096 --disk-size=20G --kubernetes-version v1.15.11\n")),Object(i.b)("h2",{id:"install-submarine-on-kubernetes"},"Install Submarine on Kubernetes"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"$ git clone https://github.com/apache/submarine.git\n$ cd submarine\n$ helm install submarine ./helm-charts/submarine\n")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"NAME: submarine\nLAST DEPLOYED: Fri Jan 29 05:35:36 2021\nNAMESPACE: default\nSTATUS: deployed\nREVISION: 1\nTEST SUITE: None\n")),Object(i.b)("h2",{id:"verify-installation"},"Verify installation"),Object(i.b)("p",null,"Once you got it installed, check with below commands and you should see similar outputs:"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"$ kubectl get pods\n")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"NAME                                              READY   STATUS    RESTARTS   AGE\nnotebook-controller-deployment-5db8b6cbf7-k65jm   1/1     Running   0          5s\npytorch-operator-7ff5d96d59-gx7f5                 1/1     Running   0          5s\nsubmarine-database-8d95d74f7-ntvqp                1/1     Running   0          5s\nsubmarine-server-b6cd4787b-7bvr7                  1/1     Running   0          5s\nsubmarine-traefik-9bb6f8577-66sx6                 1/1     Running   0          5s\ntf-job-operator-7844656dd-lfgmd                   1/1     Running   0          5s\n")),Object(i.b)("div",{className:"admonition admonition-warning alert alert--danger"},Object(i.b)("div",{parentName:"div",className:"admonition-heading"},Object(i.b)("h5",{parentName:"div"},Object(i.b)("span",{parentName:"h5",className:"admonition-icon"},Object(i.b)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},Object(i.b)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"warning")),Object(i.b)("div",{parentName:"div",className:"admonition-content"},Object(i.b)("p",{parentName:"div"},"Note that if you encounter below issue when installation:"))),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"Error: rendered manifests contain a resource that already exists.\nUnable to continue with install: existing resource conflict: namespace: , name: podgroups.scheduling.incubator.k8s.io, existing_kind: apiextensions.k8s.io/v1beta1, Kind=CustomResourceDefinition, new_kind: apiextensions.k8s.io/v1beta1, Kind=CustomResourceDefinition\n")),Object(i.b)("p",null,"It might be caused by the previous installed submarine charts. Fix it by running:"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"$ kubectl delete crd/tfjobs.kubeflow.org && kubectl delete crd/podgroups.scheduling.incubator.k8s.io && kubectl delete crd/pytorchjobs.kubeflow.org\n")),Object(i.b)("h2",{id:"access-submarine-in-a-cluster"},"Access Submarine in a Cluster"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"# #Listen on port 32080 on all addresses, forwarding to 80 in the pod\n# Method1 -- using minikube ip + NodePort\n$ minikube ip  # you'll get the IP address of minikube, ex: 192.168.49.2\n\n# Method2 -- using port-forwarding\n$ kubectl port-forward --address 0.0.0.0 service/submarine-traefik 32080:80\n")),Object(i.b)("h2",{id:"open-workbench-in-the-browser"},"Open Workbench in the browser."),Object(i.b)("p",null,"Open http://{minikube ip}:32080(from Method1), ex: ",Object(i.b)("a",{parentName:"p",href:"http://192.168.49.2:32080"},"http://192.168.49.2:32080")),Object(i.b)("p",null,"or ",Object(i.b)("a",{parentName:"p",href:"http://127.0.0.1:32080"},"http://127.0.0.1:32080")," (from Method 2)."),Object(i.b)("p",null,"The default username and password is ",Object(i.b)("inlineCode",{parentName:"p"},"admin")," and ",Object(i.b)("inlineCode",{parentName:"p"},"admin")),Object(i.b)("p",null,Object(i.b)("img",{parentName:"p",src:"https://i.imgur.com/DkZhyEG.png",alt:null})),Object(i.b)("h2",{id:"uninstall-submarine"},"Uninstall Submarine"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"$ helm delete submarine\n")))}b.isMDXComponent=!0}}]);
\ No newline at end of file
diff --git a/380d7376.48f32eaf.js b/380d7376.c239ca64.js
similarity index 97%
rename from 380d7376.48f32eaf.js
rename to 380d7376.c239ca64.js
index 0dde556..ebfb995 100644
--- a/380d7376.48f32eaf.js
+++ b/380d7376.c239ca64.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[27],{209:function(e,r,n){"use strict";n.d(r,"a",(function(){return p})),n.d(r,"b",(function(){return m}));var a=n(0),o=n.n(a);function t(e,r,n){return r in e?Object.defineProperty(e,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[r]=n,e}function s(e,r){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);r&&(a=a.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),n.push.apply(n,a)}return n}function c(e){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?s(Object(n),!0).forEach((function(r){t(e,r,n[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):s(Object(n)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))}))}return e}function i(e,r){if(null==e)return{};var n,a,o=function(e,r){if(null==e)return{};var n,a,o={},t=Object.keys(e);for(a=0;a<t.length;a++)n=t[a],r.indexOf(n)>=0||(o[n]=e[n]);return o}(e,r);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);for(a=0;a<t.length;a++)n=t[a],r.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var u=o.a.createContext({}),d=function(e){var r=o.a.useContext(u),n=r;return e&&(n="function"==typeof e?e(r):c(c({},r),e)),n},p=function(e){var r=d(e.components);return o.a.createElement(u.Provider,{value:r},e.children)},l={inlineCode:"code",wrapper:function(e){var r=e.children;return o.a.createElement(o.a.Fragment,{},r)}},b=o.a.forwardRef((function(e,r){var n=e.components,a=e.mdxType,t=e.originalType,s=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),p=d(n),b=a,m=p["".concat(s,".").concat(b)]||p[b]||l[b]||t;return n?o.a.createElement(m,c(c({ref:r},u),{},{components:n})):o.a.createElement(m,c({ref:r},u))}));function m(e,r){var n=arguments,a=r&&r.mdxType;if("string"==typeof e||a){var t=n.length,s=new Array(t);s[0]=b;var c={};for(var i in r)hasOwnProperty.call(r,i)&&(c[i]=r[i]);c.originalType=e,c.mdxType="string"==typeof e?e:a,s[1]=c;for(var u=2;u<t;u++)s[u]=n[u];return o.a.createElement.apply(null,s)}return o.a.createElement.apply(null,n)}b.displayName="MDXCreateElement"},94:function(e,r,n){"use strict";n.r(r),n.d(r,"frontMatter",(function(){return s})),n.d(r,"metadata",(function(){return c})),n.d(r,"toc",(function(){return i})),n.d(r,"default",(function(){return d}));var a=n(3),o=n(7),t=(n(0),n(209)),s={title:"Test and Troubleshooting"},c={unversionedId:"userDocs/yarn/TestAndTroubleshooting",id:"version-0.6.0/userDocs/yarn/TestAndTroubleshooting",isDocsHomePage:!1,title:"Test and Troubleshooting",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/userDocs/yarn/TestAndTroubleshooting.md",slug:"/userDocs/yarn/TestAndTroubleshooting",permalink:"/docs/userDocs/yarn/TestAndTroubleshooting",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/yarn/TestAndTroubleshooting.md",version:"0.6.0"},i=[{value:"Test with a tensorflow job",id:"test-with-a-tensorflow-job",children:[]},{value:"Issues:",id:"issues",children:[{value:"Issue 1: Fail to start nodemanager after system reboot",id:"issue-1-fail-to-start-nodemanager-after-system-reboot",children:[]},{value:"Issue 2: container-executor permission denied",id:"issue-2-container-executor-permission-denied",children:[]},{value:"Issue 3\uff1aHow to get docker service log",id:"issue-3\uff1ahow-to-get-docker-service-log",children:[]},{value:"Issue 4\uff1adocker can&#39;t remove containers with errors like <code>device or resource busy</code>",id:"issue-4\uff1adocker-cant-remove-containers-with-errors-like-device-or-resource-busy",children:[]},{value:"Issue 5\uff1aYarn failed to start containers",id:"issue-5\uff1ayarn-failed-to-start-containers",children:[]}]}],u={toc:i};function d(e){var r=e.components,n=Object(o.a)(e,["components"]);return Object(t.b)("wrapper",Object(a.a)({},u,n,{components:r,mdxType:"MDXLayout"}),Object(t.b)("h2",{id:"test-with-a-tensorflow-job"},"Test with a tensorflow job"),Object(t.b)("p",null,"Distributed-shell + GPU + cgroup"),Object(t.b)("pre",null,Object(t.b)("code",{parentName:"pre",className:"language-bash"},' ... \\\n job run \\\n --env DOCKER_JAVA_HOME=/opt/java \\\n --env DOCKER_HADOOP_HDFS_HOME=/hadoop-current --name distributed-tf-gpu \\\n --env YARN_CONTAINER_RUNTIME_DOCKER_CONTAINER_NETWORK=calico-network \\\n --worker_docker_image tf-1.13.1-gpu:0.0.1 \\\n --ps_docker_image tf-1.13.1-cpu:0.0.1 \\\n --input_path hdfs://${dfs_name_service}/tmp/cifar-10-data \\\n --checkpoint_path hdfs://${dfs_name_service}/user/hadoop/tf-distributed-checkpoint \\\n --num_ps 0 \\\n --ps_resources memory=4G,vcores=2,gpu=0 \\\n --ps_launch_cmd "python /test/cifar10_estimator/cifar10_main.py --data-dir=hdfs://${dfs_name_service}/tmp/cifar-10-data --job-dir=hdfs://${dfs_name_service}/tmp/cifar-10-jobdir --num-gpus=0" \\\n --worker_resources memory=4G,vcores=2,gpu=1 --verbose \\\n --num_workers 1 \\\n --worker_launch_cmd "python /test/cifar10_estimator/cifar10_main.py --data-dir=hdfs://${dfs_name_service}/tmp/cifar-10-data --job-dir=hdfs://${dfs_name_service}/tmp/cifar-10-jobdir --train-steps=500 --eval-batch-size=16 --train-batch-size=16 --sync --num-gpus=1"\n')),Object(t.b)("h2",{id:"issues"},"Issues:"),Object(t.b)("h3",{id:"issue-1-fail-to-start-nodemanager-after-system-reboot"},"Issue 1: Fail to start nodemanager after system reboot"),Object(t.b)("pre",null,Object(t.b)("code",{parentName:"pre"},"2018-09-20 18:54:39,785 ERROR org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor: Failed to bootstrap configured resource subsystems!\norg.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.ResourceHandlerException: Unexpected: Cannot create yarn cgroup Subsystem:cpu Mount points:/proc/mounts User:yarn Path:/sys/fs/cgroup/cpu,cpuacct/hadoop-yarn\n  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsHandlerImpl.initializePreMountedCGroupController(CGroupsHandlerImpl.java:425)\n  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsHandlerImpl.initializeCGroupController(CGroupsHandlerImpl.java:377)\n  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsCpuResourceHandlerImpl.bootstrap(CGroupsCpuResourceHandlerImpl.java:98)\n  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsCpuResourceHandlerImpl.bootstrap(CGroupsCpuResourceHandlerImpl.java:87)\n  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.ResourceHandlerChain.bootstrap(ResourceHandlerChain.java:58)\n  at org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor.init(LinuxContainerExecutor.java:320)\n  at org.apache.hadoop.yarn.server.nodemanager.NodeManager.serviceInit(NodeManager.java:389)\n  at org.apache.hadoop.service.AbstractService.init(AbstractService.java:164)\n  at org.apache.hadoop.yarn.server.nodemanager.NodeManager.initAndStartNodeManager(NodeManager.java:929)\n  at org.apache.hadoop.yarn.server.nodemanager.NodeManager.main(NodeManager.java:997)\n2018-09-20 18:54:39,789 INFO org.apache.hadoop.service.AbstractService: Service NodeManager failed in state INITED\n")),Object(t.b)("p",null,"Solution: Grant user yarn the access to  ",Object(t.b)("inlineCode",{parentName:"p"},"/sys/fs/cgroup/cpu,cpuacct"),", which is the subfolder of cgroup mount destination."),Object(t.b)("pre",null,Object(t.b)("code",{parentName:"pre"},"chown :yarn -R /sys/fs/cgroup/cpu,cpuacct\nchmod g+rwx -R /sys/fs/cgroup/cpu,cpuacct\n")),Object(t.b)("p",null,"If GPUs are used\uff0cthe access to cgroup devices folder is neede as well"),Object(t.b)("pre",null,Object(t.b)("code",{parentName:"pre"},"chown :yarn -R /sys/fs/cgroup/devices\nchmod g+rwx -R /sys/fs/cgroup/devices\n")),Object(t.b)("h3",{id:"issue-2-container-executor-permission-denied"},"Issue 2: container-executor permission denied"),Object(t.b)("pre",null,Object(t.b)("code",{parentName:"pre"},'2018-09-21 09:36:26,102 WARN org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.privileged.PrivilegedOperationExecutor: IOException executing command:\njava.io.IOException: Cannot run program "/etc/yarn/sbin/Linux-amd64-64/container-executor": error=13, Permission denied\n        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)\n        at org.apache.hadoop.util.Shell.runCommand(Shell.java:938)\n        at org.apache.hadoop.util.Shell.run(Shell.java:901)\n        at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:1213)\n')),Object(t.b)("p",null,"Solution: The permission of ",Object(t.b)("inlineCode",{parentName:"p"},"/etc/yarn/sbin/Linux-amd64-64/container-executor")," should be 6050"),Object(t.b)("h3",{id:"issue-3\uff1ahow-to-get-docker-service-log"},"Issue 3\uff1aHow to get docker service log"),Object(t.b)("p",null,"Solution: we can get docker log with the following command"),Object(t.b)("pre",null,Object(t.b)("code",{parentName:"pre"},"journalctl -u docker\n")),Object(t.b)("h3",{id:"issue-4\uff1adocker-cant-remove-containers-with-errors-like-device-or-resource-busy"},"Issue 4\uff1adocker can't remove containers with errors like ",Object(t.b)("inlineCode",{parentName:"h3"},"device or resource busy")),Object(t.b)("pre",null,Object(t.b)("code",{parentName:"pre",className:"language-bash"},"$ docker rm 0bfafa146431\nError response from daemon: Unable to remove filesystem for 0bfafa146431771f6024dcb9775ef47f170edb2f1852f71916ba44209ca6120a: remove /app/docker/containers/0bfafa146431771f6024dcb9775ef47f170edb2f152f71916ba44209ca6120a/shm: device or resource busy\n")),Object(t.b)("p",null,"Solution: to find which process leads to a ",Object(t.b)("inlineCode",{parentName:"p"},"device or resource busy"),", we can add a shell script, named ",Object(t.b)("inlineCode",{parentName:"p"},"find-busy-mnt.sh")),Object(t.b)("pre",null,Object(t.b)("code",{parentName:"pre",className:"language-bash"},'#!/usr/bin/env bash\n\n# A simple script to get information about mount points and pids and their\n# mount namespaces.\n\nif [ $# -ne 1 ];then\necho "Usage: $0 <devicemapper-device-id>"\nexit 1\nfi\n\nID=$1\n\nMOUNTS=`find /proc/*/mounts | xargs grep $ID 2>/dev/null`\n\n[ -z "$MOUNTS" ] &&  echo "No pids found" && exit 0\n\nprintf "PID\\tNAME\\t\\tMNTNS\\n"\necho "$MOUNTS" | while read LINE; do\nPID=`echo $LINE | cut -d ":" -f1 | cut -d "/" -f3`\n# Ignore self and thread-self\nif [ "$PID" == "self" ] || [ "$PID" == "thread-self" ]; then\n  continue\nfi\nNAME=`ps -q $PID -o comm=`\nMNTNS=`readlink /proc/$PID/ns/mnt`\nprintf "%s\\t%s\\t\\t%s\\n" "$PID" "$NAME" "$MNTNS"\ndone\n')),Object(t.b)("p",null,"Kill the process by pid, which is found by the script"),Object(t.b)("pre",null,Object(t.b)("code",{parentName:"pre",className:"language-bash"},"$ chmod +x find-busy-mnt.sh\n./find-busy-mnt.sh 0bfafa146431771f6024dcb9775ef47f170edb2f152f71916ba44209ca6120a\n# PID   NAME            MNTNS\n# 5007  ntpd            mnt:[4026533598]\n$ kill -9 5007\n")),Object(t.b)("h3",{id:"issue-5\uff1ayarn-failed-to-start-containers"},"Issue 5\uff1aYarn failed to start containers"),Object(t.b)("p",null,"if the number of GPUs required by applications is larger than the number of GPUs in the cluster, there would be some containers can't be created."))}d.isMDXComponent=!0}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[26],{194:function(e,r,n){"use strict";n.d(r,"a",(function(){return p})),n.d(r,"b",(function(){return m}));var a=n(0),o=n.n(a);function t(e,r,n){return r in e?Object.defineProperty(e,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[r]=n,e}function s(e,r){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);r&&(a=a.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),n.push.apply(n,a)}return n}function c(e){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?s(Object(n),!0).forEach((function(r){t(e,r,n[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):s(Object(n)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))}))}return e}function i(e,r){if(null==e)return{};var n,a,o=function(e,r){if(null==e)return{};var n,a,o={},t=Object.keys(e);for(a=0;a<t.length;a++)n=t[a],r.indexOf(n)>=0||(o[n]=e[n]);return o}(e,r);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);for(a=0;a<t.length;a++)n=t[a],r.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var u=o.a.createContext({}),d=function(e){var r=o.a.useContext(u),n=r;return e&&(n="function"==typeof e?e(r):c(c({},r),e)),n},p=function(e){var r=d(e.components);return o.a.createElement(u.Provider,{value:r},e.children)},l={inlineCode:"code",wrapper:function(e){var r=e.children;return o.a.createElement(o.a.Fragment,{},r)}},b=o.a.forwardRef((function(e,r){var n=e.components,a=e.mdxType,t=e.originalType,s=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),p=d(n),b=a,m=p["".concat(s,".").concat(b)]||p[b]||l[b]||t;return n?o.a.createElement(m,c(c({ref:r},u),{},{components:n})):o.a.createElement(m,c({ref:r},u))}));function m(e,r){var n=arguments,a=r&&r.mdxType;if("string"==typeof e||a){var t=n.length,s=new Array(t);s[0]=b;var c={};for(var i in r)hasOwnProperty.call(r,i)&&(c[i]=r[i]);c.originalType=e,c.mdxType="string"==typeof e?e:a,s[1]=c;for(var u=2;u<t;u++)s[u]=n[u];return o.a.createElement.apply(null,s)}return o.a.createElement.apply(null,n)}b.displayName="MDXCreateElement"},93:function(e,r,n){"use strict";n.r(r),n.d(r,"frontMatter",(function(){return s})),n.d(r,"metadata",(function(){return c})),n.d(r,"toc",(function(){return i})),n.d(r,"default",(function(){return d}));var a=n(3),o=n(7),t=(n(0),n(194)),s={title:"Test and Troubleshooting"},c={unversionedId:"userDocs/yarn/TestAndTroubleshooting",id:"version-0.6.0/userDocs/yarn/TestAndTroubleshooting",isDocsHomePage:!1,title:"Test and Troubleshooting",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/userDocs/yarn/TestAndTroubleshooting.md",slug:"/userDocs/yarn/TestAndTroubleshooting",permalink:"/docs/userDocs/yarn/TestAndTroubleshooting",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/yarn/TestAndTroubleshooting.md",version:"0.6.0"},i=[{value:"Test with a tensorflow job",id:"test-with-a-tensorflow-job",children:[]},{value:"Issues:",id:"issues",children:[{value:"Issue 1: Fail to start nodemanager after system reboot",id:"issue-1-fail-to-start-nodemanager-after-system-reboot",children:[]},{value:"Issue 2: container-executor permission denied",id:"issue-2-container-executor-permission-denied",children:[]},{value:"Issue 3\uff1aHow to get docker service log",id:"issue-3\uff1ahow-to-get-docker-service-log",children:[]},{value:"Issue 4\uff1adocker can&#39;t remove containers with errors like <code>device or resource busy</code>",id:"issue-4\uff1adocker-cant-remove-containers-with-errors-like-device-or-resource-busy",children:[]},{value:"Issue 5\uff1aYarn failed to start containers",id:"issue-5\uff1ayarn-failed-to-start-containers",children:[]}]}],u={toc:i};function d(e){var r=e.components,n=Object(o.a)(e,["components"]);return Object(t.b)("wrapper",Object(a.a)({},u,n,{components:r,mdxType:"MDXLayout"}),Object(t.b)("h2",{id:"test-with-a-tensorflow-job"},"Test with a tensorflow job"),Object(t.b)("p",null,"Distributed-shell + GPU + cgroup"),Object(t.b)("pre",null,Object(t.b)("code",{parentName:"pre",className:"language-bash"},' ... \\\n job run \\\n --env DOCKER_JAVA_HOME=/opt/java \\\n --env DOCKER_HADOOP_HDFS_HOME=/hadoop-current --name distributed-tf-gpu \\\n --env YARN_CONTAINER_RUNTIME_DOCKER_CONTAINER_NETWORK=calico-network \\\n --worker_docker_image tf-1.13.1-gpu:0.0.1 \\\n --ps_docker_image tf-1.13.1-cpu:0.0.1 \\\n --input_path hdfs://${dfs_name_service}/tmp/cifar-10-data \\\n --checkpoint_path hdfs://${dfs_name_service}/user/hadoop/tf-distributed-checkpoint \\\n --num_ps 0 \\\n --ps_resources memory=4G,vcores=2,gpu=0 \\\n --ps_launch_cmd "python /test/cifar10_estimator/cifar10_main.py --data-dir=hdfs://${dfs_name_service}/tmp/cifar-10-data --job-dir=hdfs://${dfs_name_service}/tmp/cifar-10-jobdir --num-gpus=0" \\\n --worker_resources memory=4G,vcores=2,gpu=1 --verbose \\\n --num_workers 1 \\\n --worker_launch_cmd "python /test/cifar10_estimator/cifar10_main.py --data-dir=hdfs://${dfs_name_service}/tmp/cifar-10-data --job-dir=hdfs://${dfs_name_service}/tmp/cifar-10-jobdir --train-steps=500 --eval-batch-size=16 --train-batch-size=16 --sync --num-gpus=1"\n')),Object(t.b)("h2",{id:"issues"},"Issues:"),Object(t.b)("h3",{id:"issue-1-fail-to-start-nodemanager-after-system-reboot"},"Issue 1: Fail to start nodemanager after system reboot"),Object(t.b)("pre",null,Object(t.b)("code",{parentName:"pre"},"2018-09-20 18:54:39,785 ERROR org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor: Failed to bootstrap configured resource subsystems!\norg.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.ResourceHandlerException: Unexpected: Cannot create yarn cgroup Subsystem:cpu Mount points:/proc/mounts User:yarn Path:/sys/fs/cgroup/cpu,cpuacct/hadoop-yarn\n  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsHandlerImpl.initializePreMountedCGroupController(CGroupsHandlerImpl.java:425)\n  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsHandlerImpl.initializeCGroupController(CGroupsHandlerImpl.java:377)\n  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsCpuResourceHandlerImpl.bootstrap(CGroupsCpuResourceHandlerImpl.java:98)\n  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsCpuResourceHandlerImpl.bootstrap(CGroupsCpuResourceHandlerImpl.java:87)\n  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.ResourceHandlerChain.bootstrap(ResourceHandlerChain.java:58)\n  at org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor.init(LinuxContainerExecutor.java:320)\n  at org.apache.hadoop.yarn.server.nodemanager.NodeManager.serviceInit(NodeManager.java:389)\n  at org.apache.hadoop.service.AbstractService.init(AbstractService.java:164)\n  at org.apache.hadoop.yarn.server.nodemanager.NodeManager.initAndStartNodeManager(NodeManager.java:929)\n  at org.apache.hadoop.yarn.server.nodemanager.NodeManager.main(NodeManager.java:997)\n2018-09-20 18:54:39,789 INFO org.apache.hadoop.service.AbstractService: Service NodeManager failed in state INITED\n")),Object(t.b)("p",null,"Solution: Grant user yarn the access to  ",Object(t.b)("inlineCode",{parentName:"p"},"/sys/fs/cgroup/cpu,cpuacct"),", which is the subfolder of cgroup mount destination."),Object(t.b)("pre",null,Object(t.b)("code",{parentName:"pre"},"chown :yarn -R /sys/fs/cgroup/cpu,cpuacct\nchmod g+rwx -R /sys/fs/cgroup/cpu,cpuacct\n")),Object(t.b)("p",null,"If GPUs are used\uff0cthe access to cgroup devices folder is neede as well"),Object(t.b)("pre",null,Object(t.b)("code",{parentName:"pre"},"chown :yarn -R /sys/fs/cgroup/devices\nchmod g+rwx -R /sys/fs/cgroup/devices\n")),Object(t.b)("h3",{id:"issue-2-container-executor-permission-denied"},"Issue 2: container-executor permission denied"),Object(t.b)("pre",null,Object(t.b)("code",{parentName:"pre"},'2018-09-21 09:36:26,102 WARN org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.privileged.PrivilegedOperationExecutor: IOException executing command:\njava.io.IOException: Cannot run program "/etc/yarn/sbin/Linux-amd64-64/container-executor": error=13, Permission denied\n        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)\n        at org.apache.hadoop.util.Shell.runCommand(Shell.java:938)\n        at org.apache.hadoop.util.Shell.run(Shell.java:901)\n        at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:1213)\n')),Object(t.b)("p",null,"Solution: The permission of ",Object(t.b)("inlineCode",{parentName:"p"},"/etc/yarn/sbin/Linux-amd64-64/container-executor")," should be 6050"),Object(t.b)("h3",{id:"issue-3\uff1ahow-to-get-docker-service-log"},"Issue 3\uff1aHow to get docker service log"),Object(t.b)("p",null,"Solution: we can get docker log with the following command"),Object(t.b)("pre",null,Object(t.b)("code",{parentName:"pre"},"journalctl -u docker\n")),Object(t.b)("h3",{id:"issue-4\uff1adocker-cant-remove-containers-with-errors-like-device-or-resource-busy"},"Issue 4\uff1adocker can't remove containers with errors like ",Object(t.b)("inlineCode",{parentName:"h3"},"device or resource busy")),Object(t.b)("pre",null,Object(t.b)("code",{parentName:"pre",className:"language-bash"},"$ docker rm 0bfafa146431\nError response from daemon: Unable to remove filesystem for 0bfafa146431771f6024dcb9775ef47f170edb2f1852f71916ba44209ca6120a: remove /app/docker/containers/0bfafa146431771f6024dcb9775ef47f170edb2f152f71916ba44209ca6120a/shm: device or resource busy\n")),Object(t.b)("p",null,"Solution: to find which process leads to a ",Object(t.b)("inlineCode",{parentName:"p"},"device or resource busy"),", we can add a shell script, named ",Object(t.b)("inlineCode",{parentName:"p"},"find-busy-mnt.sh")),Object(t.b)("pre",null,Object(t.b)("code",{parentName:"pre",className:"language-bash"},'#!/usr/bin/env bash\n\n# A simple script to get information about mount points and pids and their\n# mount namespaces.\n\nif [ $# -ne 1 ];then\necho "Usage: $0 <devicemapper-device-id>"\nexit 1\nfi\n\nID=$1\n\nMOUNTS=`find /proc/*/mounts | xargs grep $ID 2>/dev/null`\n\n[ -z "$MOUNTS" ] &&  echo "No pids found" && exit 0\n\nprintf "PID\\tNAME\\t\\tMNTNS\\n"\necho "$MOUNTS" | while read LINE; do\nPID=`echo $LINE | cut -d ":" -f1 | cut -d "/" -f3`\n# Ignore self and thread-self\nif [ "$PID" == "self" ] || [ "$PID" == "thread-self" ]; then\n  continue\nfi\nNAME=`ps -q $PID -o comm=`\nMNTNS=`readlink /proc/$PID/ns/mnt`\nprintf "%s\\t%s\\t\\t%s\\n" "$PID" "$NAME" "$MNTNS"\ndone\n')),Object(t.b)("p",null,"Kill the process by pid, which is found by the script"),Object(t.b)("pre",null,Object(t.b)("code",{parentName:"pre",className:"language-bash"},"$ chmod +x find-busy-mnt.sh\n./find-busy-mnt.sh 0bfafa146431771f6024dcb9775ef47f170edb2f152f71916ba44209ca6120a\n# PID   NAME            MNTNS\n# 5007  ntpd            mnt:[4026533598]\n$ kill -9 5007\n")),Object(t.b)("h3",{id:"issue-5\uff1ayarn-failed-to-start-containers"},"Issue 5\uff1aYarn failed to start containers"),Object(t.b)("p",null,"if the number of GPUs required by applications is larger than the number of GPUs in the cluster, there would be some containers can't be created."))}d.isMDXComponent=!0}}]);
\ No newline at end of file
diff --git a/389ecd94.a4d469d0.js b/389ecd94.a4d469d0.js
deleted file mode 100644
index 537fba6..0000000
--- a/389ecd94.a4d469d0.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[28],{209:function(e,t,n){"use strict";n.d(t,"a",(function(){return O})),n.d(t,"b",(function(){return s}));var a=n(0),b=n.n(a);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?c(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):c(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function p(e,t){if(null==e)return{};var n,a,b=function(e,t){if(null==e)return{};var n,a,b={},r=Object.keys(e);for(a=0;a<r.length;a++)n=r[a],t.indexOf(n)>=0||(b[n]=e[n]);return b}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a<r.length;a++)n=r[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(b[n]=e[n])}return b}var o=b.a.createContext({}),l=function(e){var t=b.a.useContext(o),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},O=function(e){var t=l(e.components);return b.a.createElement(o.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return b.a.createElement(b.a.Fragment,{},t)}},j=b.a.forwardRef((function(e,t){var n=e.components,a=e.mdxType,r=e.originalType,c=e.parentName,o=p(e,["components","mdxType","originalType","parentName"]),O=l(n),j=a,s=O["".concat(c,".").concat(j)]||O[j]||m[j]||r;return n?b.a.createElement(s,i(i({ref:t},o),{},{components:n})):b.a.createElement(s,i({ref:t},o))}));function s(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var r=n.length,c=new Array(r);c[0]=j;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i.mdxType="string"==typeof e?e:a,c[1]=i;for(var o=2;o<r;o++)c[o]=n[o];return b.a.createElement.apply(null,c)}return b.a.createElement.apply(null,n)}j.displayName="MDXCreateElement"},217:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/workspace-project-8d6fed3c330676f04875f8afe44b59d7.png"},218:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/workspace-project-step1-24bdac8d1ecdfeb14efeab0ba5019716.png"},219:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/workspace-project-step2-template-bec4a76922361fa150df6bffceffbb15.png"},220:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/workspace-project-step2-blank-8a6b9d97a33106329fbfe53920bc40c7.png"},221:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/workspace-project-step2-upload-feb2db0271833adeb422990ca5aa43ba.png"},222:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/workspace-project-step2-git-8431a483307851cd987d2a02264a8ee7.png"},223:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/workspace-project-step3-34283e0a7051d38359a20311745f8aa6.png"},95:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return c})),n.d(t,"metadata",(function(){return i})),n.d(t,"toc",(function(){return p})),n.d(t,"default",(function(){return l}));var a=n(3),b=n(7),r=(n(0),n(209)),c={},i={unversionedId:"adminDocs/yarn/workbench/README.zh-CN",id:"adminDocs/yarn/workbench/README.zh-CN",isDocsHomePage:!1,title:"README.zh-CN",description:"\x3c!--",source:"@site/docs/adminDocs/yarn/workbench/README.zh-CN.md",slug:"/adminDocs/yarn/workbench/README.zh-CN",permalink:"/docs/next/adminDocs/yarn/workbench/README.zh-CN",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/adminDocs/yarn/workbench/README.zh-CN.md",version:"current"},p=[{value:"Register",id:"register",children:[]},{value:"Login",id:"login",children:[]},{value:"Home",id:"home",children:[]},{value:"Workspace",id:"workspace",children:[{value:"Project",id:"project",children:[]},{value:"Release",id:"release",children:[]},{value:"Training",id:"training",children:[]},{value:"Team",id:"team",children:[]},{value:"Shared",id:"shared",children:[]}]},{value:"Interpreters",id:"interpreters",children:[]},{value:"Job",id:"job",children:[]},{value:"Data",id:"data",children:[]},{value:"Model",id:"model",children:[]},{value:"Manager",id:"manager",children:[{value:"User",id:"user",children:[]},{value:"Team",id:"team-1",children:[]},{value:"Data Dict",id:"data-dict",children:[]},{value:"Department",id:"department",children:[]}]},{value:"How to run workbench",id:"how-to-run-workbench",children:[]}],o={toc:p};function l(e){var t=e.components,c=Object(b.a)(e,["components"]);return Object(r.b)("wrapper",Object(a.a)({},o,c,{components:t,mdxType:"MDXLayout"}),Object(r.b)("p",null,Object(r.b)("a",{parentName:"p",href:"/docs/next/adminDocs/yarn/workbench/README"},"English")," | \u7b80\u4f53\u4e2d\u6587"),Object(r.b)("h1",{id:"submarine-workbench-introduction"},"Submarine Workbench Introduction"),Object(r.b)("p",null,Object(r.b)("inlineCode",{parentName:"p"},"Submarine Workbench")," \u662f\u4e3a\u6570\u636e\u79d1\u5b66\u5bb6\u8bbe\u8ba1\u7684 WEB \u7cfb\u7edf\u3002\u6570\u636e\u79d1\u5b66\u5bb6\u53ef\u4ee5\u901a\u8fc7 ",Object(r.b)("inlineCode",{parentName:"p"},"Submarine Workbench")," \u8fdb\u884c\u4ea4\u4e92\u5f0f\u7684\u8bbf\u95ee ",Object(r.b)("inlineCode",{parentName:"p"},"Notebook"),"\uff0c\u63d0\u4ea4/\u7ba1\u7406 Job\uff0c\u7ba1\u7406\u6a21\u578b\uff0c\u521b\u5efa\u6a21\u578b\u8bad\u7ec3\u5de5\u4f5c\u6d41\uff0c\u8bbf\u95ee\u6570\u636e\u96c6\u7b49\u3002"),Object(r.b)("h2",{id:"register"},"Register"),Object(r.b)("p",null,"\u6bcf\u4e2a\u9700\u8981\u4f7f\u7528 Submarine \u8fdb\u884c\u673a\u5668\u5b66\u4e60\u7b97\u6cd5\u5f00\u53d1\u7684\u7528\u6237\uff0c\u90fd\u53ef\u4ee5\u767b\u5f55 ",Object(r.b)("inlineCode",{parentName:"p"},"Submarine Workbench")," \u7684 WEB \u9996\u9875\uff0c\u5728\u9996\u9875\u4e0a\uff0c\u70b9\u51fb\u6ce8\u518c\u94fe\u63a5\uff0c\u586b\u5199\u7528\u6237\u540d\u3001\u6ce8\u518c\u90ae\u7bb1\u548c\u5bc6\u7801\u5c31\u53ef\u4ee5\u5b8c\u6210\u6ce8\u518c\uff0c\u4f46\u6b64\u65f6\u7528\u6237\u72b6\u6001\u4e3a ",Object(r.b)("inlineCode",{parentName:"p"},"\u7b49\u5f85\u5ba1\u6838")," \u72b6\u6001\u3002"),Object(r.b)("p",null,"\u7ba1\u7406\u5458\u5728  ",Object(r.b)("inlineCode",{parentName:"p"},"Submarine Workbench")," \u4e2d\u63a5\u6536\u5230\u7528\u6237\u7684\u6ce8\u518c\u8bf7\u6c42\u540e\uff0c\u8bbe\u7f6e\u7528\u6237\u7684\u64cd\u4f5c\u6743\u9650\uff0c\u6240\u5c5e\u673a\u6784\u90e8\u95e8\u548c\u5206\u914d\u8d44\u6e90\uff0c\u8bbe\u7f6e\u7528\u6237\u72b6\u6001\u4e3a ",Object(r.b)("inlineCode",{parentName:"p"},"\u5ba1\u6838\u901a\u8fc7")," \u540e\uff0c\u7528\u6237\u624d\u53ef\u4ee5\u767b\u5f55 Submarine Workbench\u3002"),Object(r.b)("h2",{id:"login"},"Login"),Object(r.b)("p",null,"\u6bcf\u4e2a Submarine \u7684\u7528\u6237\u5728 ",Object(r.b)("inlineCode",{parentName:"p"},"Login")," \u9875\u9762\u4e2d\u8f93\u5165\u7528\u6237\u540d\u548c\u5bc6\u7801\uff0c\u767b\u5f55\u5230  ",Object(r.b)("inlineCode",{parentName:"p"},"Submarine Workbench")," \u7684\u9996\u9875 ",Object(r.b)("inlineCode",{parentName:"p"},"Home"),"\u3002"),Object(r.b)("h2",{id:"home"},"Home"),Object(r.b)("p",null,"\u5728 ",Object(r.b)("inlineCode",{parentName:"p"},"Submarine Workbench")," \u7684 ",Object(r.b)("inlineCode",{parentName:"p"},"Home")," \u9996\u9875\u4e2d\uff0c\u9876\u5c42\u901a\u8fc7\u56db\u4e2a\u56fe\u8868\u663e\u793a\u4e86\u7528\u6237\u7684\u8d44\u6e90\u7684\u4f7f\u7528\u60c5\u51b5\u548c\u4efb\u52a1\u6267\u884c\u7684\u60c5\u51b5\u3002"),Object(r.b)("p",null,"\u5728 ",Object(r.b)("inlineCode",{parentName:"p"},"Quick Start")," \u5217\u8868\u4e2d\uff0c\u663e\u793a\u4e86 Workbench \u4e2d\u6700\u5e38\u4f7f\u7528\u7684\u529f\u80fd\u94fe\u63a5\uff0c\u65b9\u4fbf\u7528\u6237\u53ef\u4ee5\u5feb\u901f\u7684\u8fdb\u884c\u5de5\u4f5c\u3002"),Object(r.b)("p",null,"\u5728 ",Object(r.b)("inlineCode",{parentName:"p"},"Open Recent")," \u5217\u8868\u4e2d\uff0c\u663e\u793a\u4e86\u7528\u6237\u6700\u8fd1\u4f7f\u7528\u8fc7\u7684\u4e5d\u4e2a\u9879\u76ee\uff0c\u65b9\u4fbf\u4f60\u5feb\u901f\u7684\u8fdb\u884c\u5de5\u4f5c\u3002"),Object(r.b)("p",null,"\u5728 ",Object(r.b)("inlineCode",{parentName:"p"},"What\u2018s New\uff1f")," \u5217\u8868\u4e2d\uff0c\u663e\u793a\u4e86 Submarine \u6700\u65b0\u53d1\u5e03\u7684\u4e00\u4e9b\u529f\u80fd\u7279\u6027\u548c\u9879\u76ee\u4fe1\u606f\uff0c\u65b9\u4fbf\u4f60\u4e86\u89e3 Submarine \u9879\u76ee\u7684\u6700\u65b0\u8fdb\u5c55\u3002"),Object(r.b)("h2",{id:"workspace"},"Workspace"),Object(r.b)("p",null,"Workspace \u4e3b\u8981\u6709\u4e94\u4e2a Tab \u9875\u7ec4\u6210\uff0c\u6bcf\u4e2a Tab \u9875\u7684\u6807\u9898\u4e2d\u663e\u793a\u4e86\u5404\u81ea\u9879\u76ee\u7684\u603b\u6570\u3002"),Object(r.b)("h3",{id:"project"},"Project"),Object(r.b)("p",null,"\u5728 Project \u9875\u9762\u4e2d\uff0c\u4ee5\u5361\u7247\u7684\u65b9\u5f0f\u663e\u793a\u4e86\u7528\u6237\u81ea\u5df1\u521b\u5efa\u7684\u6240\u6709 Project\u3002"),Object(r.b)("p",null,Object(r.b)("img",{alt:"image-20191007161424534",src:n(217).default})),Object(r.b)("p",null,"\u6bcf\u4e2a Project \u5361\u7247\u7531\u4ee5\u4e0b\u90e8\u5206\u5185\u5bb9\u7ec4\u6210\uff1a"),Object(r.b)("ol",null,Object(r.b)("li",{parentName:"ol"},Object(r.b)("strong",{parentName:"li"},"Project \u7c7b\u578b"),"\uff1a\u76ee\u524d Submarine \u652f\u6301 ",Object(r.b)("inlineCode",{parentName:"li"},"Notebook"),"\u3001",Object(r.b)("inlineCode",{parentName:"li"},"Python"),"\u3001",Object(r.b)("inlineCode",{parentName:"li"},"R"),"\u3001",Object(r.b)("inlineCode",{parentName:"li"},"Scala"),"\u3001",Object(r.b)("inlineCode",{parentName:"li"},"Tensorflow")," \u548c ",Object(r.b)("inlineCode",{parentName:"li"},"PyTorch")," \u8fd9\u516d\u79cd\u7c7b\u578b\u7684\u673a\u5668\u5b66\u4e60\u7b97\u6cd5\u6846\u67b6\u548c\u5f00\u53d1\u8bed\u8a00\uff0c\u5728\u9879\u76ee\u5361\u7247\u4e2d\u4ee5\u5bf9\u5e94\u7684\u56fe\u6807\u8fdb\u884c\u6807\u8bc6\u3002"),Object(r.b)("li",{parentName:"ol"},Object(r.b)("strong",{parentName:"li"},"Project Tags"),"\uff1a\u7528\u6237\u53ef\u4ee5\u4e3a\u6bcf\u4e2a Project \u6253\u4e0a\u4e0d\u540c\u7684 ",Object(r.b)("inlineCode",{parentName:"li"},"Tag")," \u6807\u7b7e\uff0c\u65b9\u4fbf\u67e5\u627e\u548c\u7ba1\u7406\u3002"),Object(r.b)("li",{parentName:"ol"},Object(r.b)("strong",{parentName:"li"},"Github/Gitlab \u96c6\u6210"),"\uff1aSubmarine Workbench \u4e0e ",Object(r.b)("inlineCode",{parentName:"li"},"Github"),"/",Object(r.b)("inlineCode",{parentName:"li"},"Gitlab")," \u8fdb\u884c\u4e86\u7cfb\u7edf\u96c6\u6210\uff0c\u6bcf\u4e2a Project \u90fd\u53ef\u4ee5\u5728 Workbench \u4e2d\u8fdb\u884c ",Object(r.b)("inlineCode",{parentName:"li"},"Watch"),"\u3001",Object(r.b)("inlineCode",{parentName:"li"},"Star"),"\u3001",Object(r.b)("inlineCode",{parentName:"li"},"Frok")," \u548c ",Object(r.b)("inlineCode",{parentName:"li"},"Comment")," \u64cd\u4f5c\u3002",Object(r.b)("ul",{parentName:"li"},Object(r.b)("li",{parentName:"ul"},Object(r.b)("strong",{parentName:"li"},"Watch"),"\uff1a","[TODO]"),Object(r.b)("li",{parentName:"ul"},Object(r.b)("strong",{parentName:"li"},"Star"),"\uff1a","[TODO]"),Object(r.b)("li",{parentName:"ul"},Object(r.b)("strong",{parentName:"li"},"Fork"),"\uff1a","[TODO]"),Object(r.b)("li",{parentName:"ul"},Object(r.b)("strong",{parentName:"li"},"Comment"),"\uff1a\u7528\u6237\u53ef\u4ee5\u5728\u9879\u76ee\u4e2d\u8fdb\u884c\u8bc4\u8bba"))),Object(r.b)("li",{parentName:"ol"},Object(r.b)("strong",{parentName:"li"},"Edit"),"\uff1a\u7528\u6237\u901a\u8fc7\u53cc\u51fb\u9879\u76ee\u6216\u8005\u70b9\u51fb ",Object(r.b)("inlineCode",{parentName:"li"},"Edit")," \u6309\u94ae\uff0c\u53ef\u4ee5\u5728 ",Object(r.b)("inlineCode",{parentName:"li"},"Notebook")," \u4e2d\u6253\u5f00\u9879\u76ee\uff0c\u8fdb\u884c\u7b97\u6cd5\u5f00\u53d1\u7b49\u64cd\u4f5c\u3002"),Object(r.b)("li",{parentName:"ol"},Object(r.b)("strong",{parentName:"li"},"Download"),"\uff1a\u7528\u6237\u901a\u8fc7\u70b9\u51fb ",Object(r.b)("inlineCode",{parentName:"li"},"Download")," \u6309\u94ae\uff0c\u5c06\u9879\u76ee\u6253\u5305\u4e0b\u8f7d\u5230\u672c\u5730\u3002"),Object(r.b)("li",{parentName:"ol"},Object(r.b)("strong",{parentName:"li"},"Setting"),"\uff1a\u7f16\u8f91\u9879\u76ee\u4fe1\u606f\uff0c\u4f8b\u5982\u9879\u76ee\u7684\u540d\u5b57\uff0c\u7b80\u4ecb\uff0c\u5206\u4eab\u7ea7\u522b\u548c\u6743\u9650\u3002"),Object(r.b)("li",{parentName:"ol"},Object(r.b)("strong",{parentName:"li"},"Delete"),"\uff1a\u5220\u9664\u9879\u76ee\u4e2d\u6240\u6709\u5305\u542b\u7684\u6587\u4ef6\u3002")),Object(r.b)("h4",{id:"add-new-project"},"Add New Project"),Object(r.b)("p",null,"\u5728\u9879\u76ee\u9875\u9762\u4e2d\u70b9\u51fb ",Object(r.b)("inlineCode",{parentName:"p"},"Add New Project")," \u6309\u94ae\uff0c\u5c06\u4f1a\u663e\u793a\u51fa\u521b\u5efa\u9879\u76ee\u7684\u5f15\u5bfc\u9875\u9762\uff0c\u53ea\u9700\u8981\u4e09\u4e2a\u6b65\u9aa4\u5c31\u53ef\u4ee5\u521b\u5efa\u4e00\u4e2a\u65b0\u7684\u9879\u76ee\u3002"),Object(r.b)("p",null,"\u7b2c\u4e00\u6b65\uff1a\u5728 ",Object(r.b)("strong",{parentName:"p"},"Base Information")," \u6b65\u9aa4\u4e2d\u586b\u5199\u9879\u76ee\u540d\u79f0\u3001\u9879\u76ee\u7b80\u4ecb\u3002"),Object(r.b)("p",null,Object(r.b)("img",{alt:"image-20191007171638338",src:n(218).default})),Object(r.b)("ul",null,Object(r.b)("li",{parentName:"ul"},Object(r.b)("p",{parentName:"li"},Object(r.b)("strong",{parentName:"p"},"Visibility"),": \u8bbe\u7f6e\u9879\u76ee\u5bf9\u5916\u7684\u53ef\u89c1\u7ea7\u522b"),Object(r.b)("ul",{parentName:"li"},Object(r.b)("li",{parentName:"ul"},Object(r.b)("strong",{parentName:"li"},"Private"),": \uff08\u9ed8\u8ba4\uff09\u8bbe\u7f6e\u4e3a\u79c1\u6709\u9879\u76ee\uff0c\u4e0d\u5bf9\u5916\u516c\u5f00\u9879\u76ee\u4e2d\u5305\u542b\u7684\u6240\u6709\u6587\u4ef6\uff0c\u4f46\u662f\u53ef\u4ee5\u5728 ",Object(r.b)("strong",{parentName:"li"},"Notebook")," \u4e2d\u5c06\u9879\u76ee\u7684\u6267\u884c\u7ed3\u679c\u5355\u72ec\u8bbe\u7f6e\u516c\u5f00\uff0c\u65b9\u4fbf\u5176\u4ed6\u4eba\u67e5\u770b\u9879\u76ee\u7684\u53ef\u89c6\u5316\u62a5\u544a\u3002"),Object(r.b)("li",{parentName:"ul"},Object(r.b)("strong",{parentName:"li"},"Team"),": \u8bbe\u7f6e\u4e3a\u56e2\u961f\u9879\u76ee\uff0c\u5728\u56e2\u961f\u9009\u62e9\u6846\u4e2d\u9009\u62e9\u56e2\u961f\u7684\u540d\u79f0\uff0c\u56e2\u961f\u7684\u5176\u4ed6\u6210\u5458\u53ef\u4ee5\u6839\u636e\u8bbe\u7f6e\u7684\u6743\u9650\u8bbf\u95ee\u8fd9\u4e2a\u9879\u76ee\u3002"),Object(r.b)("li",{parentName:"ul"},Object(r.b)("strong",{parentName:"li"},"Public"),": \u8bbe\u7f6e\u4e3a\u516c\u5f00\u9879\u76ee\uff0c",Object(r.b)("strong",{parentName:"li"},"Workbench")," \u4e2d\u7684\u6240\u6709\u7528\u6237\u90fd\u53ef\u4ee5\u901a\u8fc7\u641c\u7d22\u67e5\u770b\u5230\u8fd9\u4e2a\u9879\u76ee\u3002"))),Object(r.b)("li",{parentName:"ul"},Object(r.b)("p",{parentName:"li"},Object(r.b)("strong",{parentName:"p"},"Permission"),": \u8bbe\u7f6e\u9879\u76ee\u5bf9\u5916\u7684\u8bbf\u95ee\u6743\u9650\uff0c\u53ea\u6709\u5c06\u9879\u76ee\u7684 ",Object(r.b)("strong",{parentName:"p"},"Visibility")," \u8bbe\u7f6e\u4e3a ",Object(r.b)("strong",{parentName:"p"},"Team")," \u6216 ",Object(r.b)("strong",{parentName:"p"},"Public")," \u7684\u65f6\u5019\uff0c\u624d\u4f1a\u51fa\u73b0\u6743\u9650\u8bbe\u7f6e\u754c\u9762\u3002"),Object(r.b)("ul",{parentName:"li"},Object(r.b)("li",{parentName:"ul"},Object(r.b)("p",{parentName:"li"},Object(r.b)("strong",{parentName:"p"},"Can View")),Object(r.b)("p",{parentName:"li"},"\u5f53\u9879\u76ee\u7684 ",Object(r.b)("strong",{parentName:"p"},"Visibility")," \u8bbe\u7f6e\u4e3a ",Object(r.b)("strong",{parentName:"p"},"Team")," \u65f6\uff0c\u56e2\u961f\u4e2d\u5176\u4ed6\u6210\u5458\u90fd\u53ea\u80fd",Object(r.b)("strong",{parentName:"p"},"\u67e5\u770b"),"\u8fd9\u4e2a\u9879\u76ee\u7684\u6587\u4ef6\u3002"),Object(r.b)("p",{parentName:"li"},"\u5f53\u9879\u76ee\u7684 Visibility \u8bbe\u7f6e\u4e3a ",Object(r.b)("strong",{parentName:"p"},"Public")," \u65f6\uff0c",Object(r.b)("strong",{parentName:"p"},"Workbench")," \u4e2d\u5176\u4ed6\u6210\u5458\u90fd\u53ea\u80fd",Object(r.b)("strong",{parentName:"p"},"\u67e5\u770b"),"\u8fd9\u4e2a\u9879\u76ee\u7684\u6587\u4ef6\u3002")),Object(r.b)("li",{parentName:"ul"},Object(r.b)("p",{parentName:"li"},Object(r.b)("strong",{parentName:"p"},"Can Edit")),Object(r.b)("p",{parentName:"li"},"\u5f53\u9879\u76ee\u7684 ",Object(r.b)("strong",{parentName:"p"},"Visibility")," \u8bbe\u7f6e\u4e3a ",Object(r.b)("strong",{parentName:"p"},"Team")," \u65f6\uff0c\u56e2\u961f\u4e2d\u5176\u4ed6\u6210\u5458\u90fd\u53ef\u4ee5",Object(r.b)("strong",{parentName:"p"},"\u67e5\u770b"),"\u3001",Object(r.b)("strong",{parentName:"p"},"\u7f16\u8f91"),"\u8fd9\u4e2a\u9879\u76ee\u7684\u6587\u4ef6\u3002"),Object(r.b)("p",{parentName:"li"},"\u5f53\u9879\u76ee\u7684 ",Object(r.b)("strong",{parentName:"p"},"Visibility")," \u8bbe\u7f6e\u4e3a ",Object(r.b)("strong",{parentName:"p"},"Public")," \u65f6\uff0c",Object(r.b)("strong",{parentName:"p"},"Workbench")," \u4e2d\u5176\u4ed6\u6210\u5458\u90fd\u53ef\u4ee5",Object(r.b)("strong",{parentName:"p"},"\u67e5\u770b"),"\u3001",Object(r.b)("strong",{parentName:"p"},"\u7f16\u8f91"),"\u8fd9\u4e2a\u9879\u76ee\u7684\u6587\u4ef6\u3002")),Object(r.b)("li",{parentName:"ul"},Object(r.b)("p",{parentName:"li"},Object(r.b)("strong",{parentName:"p"},"Can Execute")),Object(r.b)("p",{parentName:"li"},"\u5f53\u9879\u76ee\u7684 ",Object(r.b)("strong",{parentName:"p"},"Visibility")," \u8bbe\u7f6e\u4e3a ",Object(r.b)("strong",{parentName:"p"},"Team")," \u65f6\uff0c\u56e2\u961f\u4e2d\u5176\u4ed6\u6210\u5458\u90fd\u53ef\u4ee5",Object(r.b)("strong",{parentName:"p"},"\u67e5\u770b"),"\u3001",Object(r.b)("strong",{parentName:"p"},"\u7f16\u8f91"),"\u3001",Object(r.b)("strong",{parentName:"p"},"\u6267\u884c"),"\u8fd9\u4e2a\u9879\u76ee\u7684\u6587\u4ef6\u3002"),Object(r.b)("p",{parentName:"li"},"\u5f53\u9879\u76ee\u7684 ",Object(r.b)("strong",{parentName:"p"},"Visibility")," \u8bbe\u7f6e\u4e3a ",Object(r.b)("strong",{parentName:"p"},"Public")," \u65f6\uff0c",Object(r.b)("strong",{parentName:"p"},"Workbench")," \u4e2d\u5176\u4ed6\u6210\u5458\u90fd\u53ef\u4ee5",Object(r.b)("strong",{parentName:"p"},"\u67e5\u770b"),"\u3001",Object(r.b)("strong",{parentName:"p"},"\u7f16\u8f91"),"\u3001",Object(r.b)("strong",{parentName:"p"},"\u6267\u884c"),"\u8fd9\u4e2a\u9879\u76ee\u7684\u6587\u4ef6\u3002"))))),Object(r.b)("p",null,"\u7b2c\u4e8c\u6b65\uff1a\u5728 ",Object(r.b)("strong",{parentName:"p"},"Initial Project")," \u6b65\u9aa4\u4e2d\uff0c",Object(r.b)("strong",{parentName:"p"},"Workbench")," \u63d0\u4f9b\u4e86\u56db\u79cd\u9879\u76ee\u521d\u59cb\u5316\u7684\u65b9\u5f0f"),Object(r.b)("ul",null,Object(r.b)("li",{parentName:"ul"},Object(r.b)("p",{parentName:"li"},Object(r.b)("strong",{parentName:"p"},"Template"),": ",Object(r.b)("strong",{parentName:"p"},"Workbench")," \u5185\u7f6e\u4e86\u51e0\u79cd\u4e0d\u540c\u5f00\u53d1\u8bed\u8a00\u548c\u7b97\u6cd5\u6846\u67b6\u7684\u9879\u76ee\u6a21\u7248\uff0c\u4f60\u53ef\u4ee5\u9009\u62e9\u4efb\u4f55\u4e00\u79cd\u6a21\u7248\u521d\u59cb\u5316\u4f60\u7684\u9879\u76ee\uff0c\u65e0\u9700\u505a\u4efb\u4f55\u4fee\u6539\u5c31\u53ef\u4ee5\u76f4\u63a5\u5728 ",Object(r.b)("strong",{parentName:"p"},"Notebook")," \u4e2d\u6267\u884c\uff0c\u7279\u522b\u9002\u5408\u65b0\u624b\u8fdb\u884c\u5feb\u901f\u7684\u4f53\u9a8c\u3002"),Object(r.b)("p",{parentName:"li"},Object(r.b)("img",{alt:"image-20191007184749193",src:n(219).default}))),Object(r.b)("li",{parentName:"ul"},Object(r.b)("p",{parentName:"li"},Object(r.b)("strong",{parentName:"p"},"Blank"),"\uff1a\u521b\u5efa\u4e00\u4e2a\u7a7a\u767d\u7684\u9879\u76ee\uff0c\u7a0d\u540e\uff0c\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u5728 ",Object(r.b)("strong",{parentName:"p"},"Notebook")," \u4e2d\u624b\u5de5\u6dfb\u52a0\u9879\u76ee\u7684\u6587\u4ef6"),Object(r.b)("p",{parentName:"li"},Object(r.b)("img",{alt:"image-20191007184811389",src:n(220).default}))),Object(r.b)("li",{parentName:"ul"},Object(r.b)("p",{parentName:"li"},Object(r.b)("strong",{parentName:"p"},"Upload"),": \u901a\u8fc7\u4e0a\u4f20 ",Object(r.b)("strong",{parentName:"p"},"notebook")," \u683c\u5f0f\u7684\u6587\u4ef6\u6765\u521d\u59cb\u5316\u4f60\u7684\u9879\u76ee\uff0c",Object(r.b)("strong",{parentName:"p"},"notebook")," \u683c\u5f0f\u517c\u5bb9 ",Object(r.b)("strong",{parentName:"p"},"Jupyter Notebook")," \u548c ",Object(r.b)("strong",{parentName:"p"},"Zeppelin Notebook")," \u6587\u4ef6\u683c\u5f0f\u3002"),Object(r.b)("p",{parentName:"li"},Object(r.b)("img",{alt:"image-20191007184825531",src:n(221).default}))),Object(r.b)("li",{parentName:"ul"},Object(r.b)("p",{parentName:"li"},Object(r.b)("strong",{parentName:"p"},"Git Repo"),": \u5728\u4f60\u7684 ",Object(r.b)("strong",{parentName:"p"},"Github"),"/",Object(r.b)("strong",{parentName:"p"},"Gitlab")," \u8d26\u53f7\u4e2d ",Object(r.b)("strong",{parentName:"p"},"Fork")," \u4e00\u4e2a\u4ed3\u5e93\u4e2d\u7684\u6587\u4ef6\u5185\u5bb9\u6765\u521d\u59cb\u5316\u9879\u76ee\u3002"),Object(r.b)("p",{parentName:"li"},Object(r.b)("img",{alt:"image-20191007184840989",src:n(222).default})))),Object(r.b)("p",null,"\u7b2c\u4e09\u6b65\uff1a\u9884\u89c8\u9879\u76ee\u4e2d\u7684\u6240\u5305\u542b\u7684\u6587\u4ef6"),Object(r.b)("p",null,Object(r.b)("img",{alt:"image-20191007191205660",src:n(223).default})),Object(r.b)("ul",null,Object(r.b)("li",{parentName:"ul"},Object(r.b)("strong",{parentName:"li"},"Save"),": \u5c06\u9879\u76ee\u4fdd\u5b58\u5230 Workspace \u4e2d\u3002"),Object(r.b)("li",{parentName:"ul"},Object(r.b)("strong",{parentName:"li"},"Open In Notebook"),": \u5c06\u9879\u76ee\u4fdd\u5b58\u5230 ",Object(r.b)("strong",{parentName:"li"},"Workspace")," \u4e2d\uff0c\u5e76\u7528 ",Object(r.b)("strong",{parentName:"li"},"Notebook")," \u6253\u5f00\u9879\u76ee\u3002")),Object(r.b)("h3",{id:"release"},"Release"),Object(r.b)("p",null,"[TODO]"),Object(r.b)("h3",{id:"training"},"Training"),Object(r.b)("p",null,"[TODO]"),Object(r.b)("h3",{id:"team"},"Team"),Object(r.b)("p",null,"[TODO]"),Object(r.b)("h3",{id:"shared"},"Shared"),Object(r.b)("p",null,"[TODO]"),Object(r.b)("h2",{id:"interpreters"},"Interpreters"),Object(r.b)("p",null,"[TODO]"),Object(r.b)("h2",{id:"job"},"Job"),Object(r.b)("p",null,"[TODO]"),Object(r.b)("h2",{id:"data"},"Data"),Object(r.b)("p",null,"[TODO]"),Object(r.b)("h2",{id:"model"},"Model"),Object(r.b)("p",null,"[TODO]"),Object(r.b)("h2",{id:"manager"},"Manager"),Object(r.b)("h3",{id:"user"},"User"),Object(r.b)("p",null,"[TODO]"),Object(r.b)("h3",{id:"team-1"},"Team"),Object(r.b)("p",null,"[TODO]"),Object(r.b)("h3",{id:"data-dict"},"Data Dict"),Object(r.b)("p",null,"[TODO]"),Object(r.b)("h3",{id:"department"},"Department"),Object(r.b)("p",null,"[TODO]"),Object(r.b)("h2",{id:"how-to-run-workbench"},"How to run workbench"),Object(r.b)("p",null,Object(r.b)("a",{parentName:"p",href:"/docs/next/adminDocs/yarn/workbench/HowToRun"},"How To Run Submarine Workbench Guide")))}l.isMDXComponent=!0}}]);
\ No newline at end of file
diff --git a/3af95f13.887c2b91.js b/3af95f13.48d646a7.js
similarity index 95%
rename from 3af95f13.887c2b91.js
rename to 3af95f13.48d646a7.js
index a5a8dfd..52082ca 100644
--- a/3af95f13.887c2b91.js
+++ b/3af95f13.48d646a7.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[29],{209:function(e,t,n){"use strict";n.d(t,"a",(function(){return u})),n.d(t,"b",(function(){return d}));var r=n(0),a=n.n(r);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?c(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):c(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var p=a.a.createContext({}),i=function(e){var t=a.a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},u=function(e){var t=i(e.components);return a.a.createElement(p.Provider,{value:t},e.children)},b={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},m=a.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,c=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),u=i(n),m=r,d=u["".concat(c,".").concat(m)]||u[m]||b[m]||o;return n?a.a.createElement(d,l(l({ref:t},p),{},{components:n})):a.a.createElement(d,l({ref:t},p))}));function d(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,c=new Array(o);c[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l.mdxType="string"==typeof e?e:r,c[1]=l;for(var p=2;p<o;p++)c[p]=n[p];return a.a.createElement.apply(null,c)}return a.a.createElement.apply(null,n)}m.displayName="MDXCreateElement"},96:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return c})),n.d(t,"metadata",(function(){return l})),n.d(t,"toc",(function(){return s})),n.d(t,"default",(function(){return i}));var r=n(3),a=n(7),o=(n(0),n(209)),c={title:"Serve REST API"},l={unversionedId:"api/serve",id:"api/serve",isDocsHomePage:!1,title:"Serve REST API",description:"\x3c!--",source:"@site/docs/api/serve.md",slug:"/api/serve",permalink:"/docs/next/api/serve",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/api/serve.md",version:"current",sidebar:"api",previous:{title:"Notebook REST API",permalink:"/docs/next/api/notebook"}},s=[{value:"Create a model serve",id:"create-a-model-serve",children:[]},{value:"Delete the TensorFlow model serve",id:"delete-the-tensorflow-model-serve",children:[]}],p={toc:s};function i(e){var t=e.components,n=Object(a.a)(e,["components"]);return Object(o.b)("wrapper",Object(r.a)({},p,n,{components:t,mdxType:"MDXLayout"}),Object(o.b)("blockquote",null,Object(o.b)("p",{parentName:"blockquote"},"Note: The Serv API is in the alpha stage which is subjected to incompatible changes in future releases.")),Object(o.b)("h2",{id:"create-a-model-serve"},"Create a model serve"),Object(o.b)("p",null,Object(o.b)("inlineCode",{parentName:"p"},"POST /api/v1/serve")),Object(o.b)("p",null,Object(o.b)("strong",{parentName:"p"},"Example Request")),Object(o.b)("blockquote",null,Object(o.b)("p",{parentName:"blockquote"},"Make sure there is a model named ",Object(o.b)("inlineCode",{parentName:"p"},"simple")," with version ",Object(o.b)("inlineCode",{parentName:"p"},"1")," in the database.")),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-sh"},'curl -X POST -H "Content-Type: application/json" -d \'\n{\n  "modelName": "simple", \n  "modelVersion":1, \n}\n\' http://127.0.0.1:32080/api/v1/serve\n')),Object(o.b)("p",null,Object(o.b)("strong",{parentName:"p"},"Example Response:")),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":"Create a serve instance",\n  "result":{"url":null},\n  "attributes":{}\n}\n')),Object(o.b)("h2",{id:"delete-the-tensorflow-model-serve"},"Delete the TensorFlow model serve"),Object(o.b)("p",null,Object(o.b)("inlineCode",{parentName:"p"},"DELETE /api/v1/serve")),Object(o.b)("p",null,Object(o.b)("strong",{parentName:"p"},"Example Request")),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-sh"},'curl -X DELETE -H "Content-Type: application/json" -d \'\n{\n  "modelName": "simple", \n  "modelVersion":1,\n}\n\' http://127.0.0.1:32080/api/v1/serve\n')),Object(o.b)("p",null,Object(o.b)("strong",{parentName:"p"},"Example Response:")),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":"Delete the model serve instance",\n  "result":null,\n  "attributes":{}\n}\n')))}i.isMDXComponent=!0}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[27],{194:function(e,t,n){"use strict";n.d(t,"a",(function(){return u})),n.d(t,"b",(function(){return d}));var r=n(0),a=n.n(r);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?c(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):c(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var p=a.a.createContext({}),i=function(e){var t=a.a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},u=function(e){var t=i(e.components);return a.a.createElement(p.Provider,{value:t},e.children)},b={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},m=a.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,c=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),u=i(n),m=r,d=u["".concat(c,".").concat(m)]||u[m]||b[m]||o;return n?a.a.createElement(d,l(l({ref:t},p),{},{components:n})):a.a.createElement(d,l({ref:t},p))}));function d(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,c=new Array(o);c[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l.mdxType="string"==typeof e?e:r,c[1]=l;for(var p=2;p<o;p++)c[p]=n[p];return a.a.createElement.apply(null,c)}return a.a.createElement.apply(null,n)}m.displayName="MDXCreateElement"},94:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return c})),n.d(t,"metadata",(function(){return l})),n.d(t,"toc",(function(){return s})),n.d(t,"default",(function(){return i}));var r=n(3),a=n(7),o=(n(0),n(194)),c={title:"Serve REST API"},l={unversionedId:"api/serve",id:"api/serve",isDocsHomePage:!1,title:"Serve REST API",description:"\x3c!--",source:"@site/docs/api/serve.md",slug:"/api/serve",permalink:"/docs/next/api/serve",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/api/serve.md",version:"current",sidebar:"api",previous:{title:"Notebook REST API",permalink:"/docs/next/api/notebook"}},s=[{value:"Create a model serve",id:"create-a-model-serve",children:[]},{value:"Delete the TensorFlow model serve",id:"delete-the-tensorflow-model-serve",children:[]}],p={toc:s};function i(e){var t=e.components,n=Object(a.a)(e,["components"]);return Object(o.b)("wrapper",Object(r.a)({},p,n,{components:t,mdxType:"MDXLayout"}),Object(o.b)("blockquote",null,Object(o.b)("p",{parentName:"blockquote"},"Note: The Serv API is in the alpha stage which is subjected to incompatible changes in future releases.")),Object(o.b)("h2",{id:"create-a-model-serve"},"Create a model serve"),Object(o.b)("p",null,Object(o.b)("inlineCode",{parentName:"p"},"POST /api/v1/serve")),Object(o.b)("p",null,Object(o.b)("strong",{parentName:"p"},"Example Request")),Object(o.b)("blockquote",null,Object(o.b)("p",{parentName:"blockquote"},"Make sure there is a model named ",Object(o.b)("inlineCode",{parentName:"p"},"simple")," with version ",Object(o.b)("inlineCode",{parentName:"p"},"1")," in the database.")),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-sh"},'curl -X POST -H "Content-Type: application/json" -d \'\n{\n  "modelName": "simple", \n  "modelVersion":1, \n}\n\' http://127.0.0.1:32080/api/v1/serve\n')),Object(o.b)("p",null,Object(o.b)("strong",{parentName:"p"},"Example Response:")),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":"Create a serve instance",\n  "result":{"url":null},\n  "attributes":{}\n}\n')),Object(o.b)("h2",{id:"delete-the-tensorflow-model-serve"},"Delete the TensorFlow model serve"),Object(o.b)("p",null,Object(o.b)("inlineCode",{parentName:"p"},"DELETE /api/v1/serve")),Object(o.b)("p",null,Object(o.b)("strong",{parentName:"p"},"Example Request")),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-sh"},'curl -X DELETE -H "Content-Type: application/json" -d \'\n{\n  "modelName": "simple", \n  "modelVersion":1,\n}\n\' http://127.0.0.1:32080/api/v1/serve\n')),Object(o.b)("p",null,Object(o.b)("strong",{parentName:"p"},"Example Response:")),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":"Delete the model serve instance",\n  "result":null,\n  "attributes":{}\n}\n')))}i.isMDXComponent=!0}}]);
\ No newline at end of file
diff --git a/404.html b/404.html
index 64daf4d..3732886 100644
--- a/404.html
+++ b/404.html
@@ -6,17 +6,17 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Page Not Found | Apache Submarine</title><meta data-react-helmet="true" property="og:title" content="Page Not Found | Apache Submarine"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_tag" content="default"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link" href="/docs/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/">0.6.0</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/next/">master 🏃</a></li><li><a class="dropdown__link" href="/docs/">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/download">Download</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><main class="container margin-vert--xl"><div class="row"><div class="col col--6 col--offset-3"><h1 class="hero__title">Page Not Found</h1><p>We could not find what you were looking for.</p><p>Please contact the owner of the site that linked you to the original URL and let them know their link is broken.</p></div></div></main></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/40951386.951048fc.js b/40951386.37c25209.js
similarity index 98%
rename from 40951386.951048fc.js
rename to 40951386.37c25209.js
index ad5c67e..fa77c7f 100644
--- a/40951386.951048fc.js
+++ b/40951386.37c25209.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[30],{209:function(e,t,n){"use strict";n.d(t,"a",(function(){return o})),n.d(t,"b",(function(){return d}));var r=n(0),a=n.n(r);function l(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function b(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){l(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function c(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},l=Object.keys(e);for(r=0;r<l.length;r++)n=l[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r<l.length;r++)n=l[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var p=a.a.createContext({}),s=function(e){var t=a.a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):b(b({},t),e)),n},o=function(e){var t=s(e.components);return a.a.createElement(p.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},u=a.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,l=e.originalType,i=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),o=s(n),u=r,d=o["".concat(i,".").concat(u)]||o[u]||m[u]||l;return n?a.a.createElement(d,b(b({ref:t},p),{},{components:n})):a.a.createElement(d,b({ref:t},p))}));function d(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var l=n.length,i=new Array(l);i[0]=u;var b={};for(var c in t)hasOwnProperty.call(t,c)&&(b[c]=t[c]);b.originalType=e,b.mdxType="string"==typeof e?e:r,i[1]=b;for(var p=2;p<l;p++)i[p]=n[p];return a.a.createElement.apply(null,i)}return a.a.createElement.apply(null,n)}u.displayName="MDXCreateElement"},97:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return i})),n.d(t,"metadata",(function(){return b})),n.d(t,"toc",(function(){return c})),n.d(t,"default",(function(){return s}));var r=n(3),a=n(7),l=(n(0),n(209)),i={title:"Generic Experiment Spec"},b={unversionedId:"designDocs/submarine-server/experimentSpec",id:"designDocs/submarine-server/experimentSpec",isDocsHomePage:!1,title:"Generic Experiment Spec",description:"\x3c!--",source:"@site/docs/designDocs/submarine-server/experimentSpec.md",slug:"/designDocs/submarine-server/experimentSpec",permalink:"/docs/next/designDocs/submarine-server/experimentSpec",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/designDocs/submarine-server/experimentSpec.md",version:"current",sidebar:"docs",previous:{title:"Submarine Server Implementation",permalink:"/docs/next/designDocs/submarine-server/architecture"},next:{title:"Submarine Launcher",permalink:"/docs/next/designDocs/wip-designs/submarine-launcher"}},c=[{value:"Motivation",id:"motivation",children:[]},{value:"Proposal",id:"proposal",children:[{value:"Library Spec",id:"library-spec",children:[]},{value:"Submitter Spec",id:"submitter-spec",children:[]},{value:"Task Spec",id:"task-spec",children:[]}]},{value:"Implements",id:"implements",children:[]}],p={toc:c};function s(e){var t=e.components,n=Object(a.a)(e,["components"]);return Object(l.b)("wrapper",Object(r.a)({},p,n,{components:t,mdxType:"MDXLayout"}),Object(l.b)("h2",{id:"motivation"},"Motivation"),Object(l.b)("p",null,"As the machine learning platform, the submarine should support multiple machine learning frameworks, such as Tensorflow, Pytorch etc. But different framework has different distributed components for the training experiment. So that we designed a generic experiment spec to abstract the training experiment across different frameworks. In this way, the submarine-server can hide the complexity of underlying infrastructure differences and provide a cleaner interface to manager experiments"),Object(l.b)("h2",{id:"proposal"},"Proposal"),Object(l.b)("p",null,"Considering the Tensorflow and Pytorch framework, we propose one spec which consists of library spec, submitter spec and task specs etc. Such as:"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-yaml"},'name: "mnist"\nlibrarySpec:\n  name: "TensorFlow"\n  version: "2.1.0"\n  image: "apache/submarine:tf-mnist-with-summaries-1.0"\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"\nsubmitterSpec:\n  type: "k8s"\n  namespace: "submarine"\ntaskSpecs:\n  Ps:\n    name: tensorflow\n    replicas: 2\n    resources: "cpu=4,memory=2048M,nvidia.com/gpu=1"\n  Worker:\n    name: tensorflow\n    replicas: 2\n    resources: "cpu=4,memory=2048M,nvidia.com/gpu=1"\n')),Object(l.b)("h3",{id:"library-spec"},"Library Spec"),Object(l.b)("p",null,"The library spec describes the info about machine learning framework. All the fields as below:"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"field"),Object(l.b)("th",{parentName:"tr",align:null},"type"),Object(l.b)("th",{parentName:"tr",align:null},"optional"),Object(l.b)("th",{parentName:"tr",align:null},"description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"NO"),Object(l.b)("td",{parentName:"tr",align:null},"Machine Learning Framework name. Only ",Object(l.b)("inlineCode",{parentName:"td"},'"tensorflow"')," and ",Object(l.b)("inlineCode",{parentName:"td"},'"pytorch"')," is supported. It doesn't matter if the value is uppercase or lowercase.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"version"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"NO"),Object(l.b)("td",{parentName:"tr",align:null},"The version of ML framework. Such as: 2.1.0")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"image"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"NO"),Object(l.b)("td",{parentName:"tr",align:null},"The public image used for each task if not specified. Such as: apache/submarine")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"cmd"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"YES"),Object(l.b)("td",{parentName:"tr",align:null},"The public entry cmd for the task if not specified.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"envVars"),Object(l.b)("td",{parentName:"tr",align:null},"key/value"),Object(l.b)("td",{parentName:"tr",align:null},"YES"),Object(l.b)("td",{parentName:"tr",align:null},"The public env vars for the task if not specified.")))),Object(l.b)("h3",{id:"submitter-spec"},"Submitter Spec"),Object(l.b)("p",null,"It describes the info of submitter which the user specified, such as k8s. All the fields as below:"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"field"),Object(l.b)("th",{parentName:"tr",align:null},"type"),Object(l.b)("th",{parentName:"tr",align:null},"optional"),Object(l.b)("th",{parentName:"tr",align:null},"description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"type"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"NO"),Object(l.b)("td",{parentName:"tr",align:null},"The submitter type, supports ",Object(l.b)("inlineCode",{parentName:"td"},"k8s")," now")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"configPath"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"YES"),Object(l.b)("td",{parentName:"tr",align:null},"The config path of the specified resource manager. You can set it in submarine-site.xml if run submarine-server locally")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"namespace"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"NO"),Object(l.b)("td",{parentName:"tr",align:null},"It's known as namespace in Kubernetes.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"kind"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"YES"),Object(l.b)("td",{parentName:"tr",align:null},"It's used for k8s submitter, supports TFJob and PyTorchJob")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"apiVersion"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"YES"),Object(l.b)("td",{parentName:"tr",align:null},"It should pair with the kind, such as the TFJob's api version is ",Object(l.b)("inlineCode",{parentName:"td"},"kubeflow.org/v1"))))),Object(l.b)("h3",{id:"task-spec"},"Task Spec"),Object(l.b)("p",null,"It describes the task info, the tasks make up the experiment. So it must be specified when submit the experiment. All the tasks should putted into the key value collection. Such as:"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-yaml"},'taskSpecs:\n  Ps:\n    name: tensorflow\n    replicas: 2\n    resources: "cpu=4,memory=2048M,nvidia.com/gpu=1"\n  Worker:\n    name: tensorflow\n    replicas: 2\n    resources: "cpu=4,memory=2048M,nvidia.com/gpu=1"\n')),Object(l.b)("p",null,"All the fields as below:"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"field"),Object(l.b)("th",{parentName:"tr",align:null},"type"),Object(l.b)("th",{parentName:"tr",align:null},"optional"),Object(l.b)("th",{parentName:"tr",align:null},"description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"YES"),Object(l.b)("td",{parentName:"tr",align:null},"The experiment name, if not specify using the library name")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"image"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"YES"),Object(l.b)("td",{parentName:"tr",align:null},"The experiment docker image")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"cmd"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"YES"),Object(l.b)("td",{parentName:"tr",align:null},"The entry command for running task")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"envVars"),Object(l.b)("td",{parentName:"tr",align:null},"key/value"),Object(l.b)("td",{parentName:"tr",align:null},"YES"),Object(l.b)("td",{parentName:"tr",align:null},"The environment variables for the task")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"resources"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"NO"),Object(l.b)("td",{parentName:"tr",align:null},"The limit resource for the task. Formatter: cpu=%s,memory=%s,nvidia.com/gpu=%s")))),Object(l.b)("h2",{id:"implements"},"Implements"),Object(l.b)("p",null,"For more info see ",Object(l.b)("a",{parentName:"p",href:"https://issues.apache.org/jira/browse/SUBMARINE-321"},"SUBMARINE-321")))}s.isMDXComponent=!0}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[28],{194:function(e,t,n){"use strict";n.d(t,"a",(function(){return o})),n.d(t,"b",(function(){return d}));var r=n(0),a=n.n(r);function l(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function b(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){l(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function c(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},l=Object.keys(e);for(r=0;r<l.length;r++)n=l[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r<l.length;r++)n=l[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var p=a.a.createContext({}),s=function(e){var t=a.a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):b(b({},t),e)),n},o=function(e){var t=s(e.components);return a.a.createElement(p.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},u=a.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,l=e.originalType,i=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),o=s(n),u=r,d=o["".concat(i,".").concat(u)]||o[u]||m[u]||l;return n?a.a.createElement(d,b(b({ref:t},p),{},{components:n})):a.a.createElement(d,b({ref:t},p))}));function d(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var l=n.length,i=new Array(l);i[0]=u;var b={};for(var c in t)hasOwnProperty.call(t,c)&&(b[c]=t[c]);b.originalType=e,b.mdxType="string"==typeof e?e:r,i[1]=b;for(var p=2;p<l;p++)i[p]=n[p];return a.a.createElement.apply(null,i)}return a.a.createElement.apply(null,n)}u.displayName="MDXCreateElement"},95:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return i})),n.d(t,"metadata",(function(){return b})),n.d(t,"toc",(function(){return c})),n.d(t,"default",(function(){return s}));var r=n(3),a=n(7),l=(n(0),n(194)),i={title:"Generic Experiment Spec"},b={unversionedId:"designDocs/submarine-server/experimentSpec",id:"designDocs/submarine-server/experimentSpec",isDocsHomePage:!1,title:"Generic Experiment Spec",description:"\x3c!--",source:"@site/docs/designDocs/submarine-server/experimentSpec.md",slug:"/designDocs/submarine-server/experimentSpec",permalink:"/docs/next/designDocs/submarine-server/experimentSpec",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/designDocs/submarine-server/experimentSpec.md",version:"current",sidebar:"docs",previous:{title:"Submarine Server Implementation",permalink:"/docs/next/designDocs/submarine-server/architecture"},next:{title:"Submarine Launcher",permalink:"/docs/next/designDocs/wip-designs/submarine-launcher"}},c=[{value:"Motivation",id:"motivation",children:[]},{value:"Proposal",id:"proposal",children:[{value:"Library Spec",id:"library-spec",children:[]},{value:"Submitter Spec",id:"submitter-spec",children:[]},{value:"Task Spec",id:"task-spec",children:[]}]},{value:"Implements",id:"implements",children:[]}],p={toc:c};function s(e){var t=e.components,n=Object(a.a)(e,["components"]);return Object(l.b)("wrapper",Object(r.a)({},p,n,{components:t,mdxType:"MDXLayout"}),Object(l.b)("h2",{id:"motivation"},"Motivation"),Object(l.b)("p",null,"As the machine learning platform, the submarine should support multiple machine learning frameworks, such as Tensorflow, Pytorch etc. But different framework has different distributed components for the training experiment. So that we designed a generic experiment spec to abstract the training experiment across different frameworks. In this way, the submarine-server can hide the complexity of underlying infrastructure differences and provide a cleaner interface to manager experiments"),Object(l.b)("h2",{id:"proposal"},"Proposal"),Object(l.b)("p",null,"Considering the Tensorflow and Pytorch framework, we propose one spec which consists of library spec, submitter spec and task specs etc. Such as:"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-yaml"},'name: "mnist"\nlibrarySpec:\n  name: "TensorFlow"\n  version: "2.1.0"\n  image: "apache/submarine:tf-mnist-with-summaries-1.0"\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"\nsubmitterSpec:\n  type: "k8s"\n  namespace: "submarine"\ntaskSpecs:\n  Ps:\n    name: tensorflow\n    replicas: 2\n    resources: "cpu=4,memory=2048M,nvidia.com/gpu=1"\n  Worker:\n    name: tensorflow\n    replicas: 2\n    resources: "cpu=4,memory=2048M,nvidia.com/gpu=1"\n')),Object(l.b)("h3",{id:"library-spec"},"Library Spec"),Object(l.b)("p",null,"The library spec describes the info about machine learning framework. All the fields as below:"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"field"),Object(l.b)("th",{parentName:"tr",align:null},"type"),Object(l.b)("th",{parentName:"tr",align:null},"optional"),Object(l.b)("th",{parentName:"tr",align:null},"description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"NO"),Object(l.b)("td",{parentName:"tr",align:null},"Machine Learning Framework name. Only ",Object(l.b)("inlineCode",{parentName:"td"},'"tensorflow"')," and ",Object(l.b)("inlineCode",{parentName:"td"},'"pytorch"')," is supported. It doesn't matter if the value is uppercase or lowercase.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"version"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"NO"),Object(l.b)("td",{parentName:"tr",align:null},"The version of ML framework. Such as: 2.1.0")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"image"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"NO"),Object(l.b)("td",{parentName:"tr",align:null},"The public image used for each task if not specified. Such as: apache/submarine")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"cmd"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"YES"),Object(l.b)("td",{parentName:"tr",align:null},"The public entry cmd for the task if not specified.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"envVars"),Object(l.b)("td",{parentName:"tr",align:null},"key/value"),Object(l.b)("td",{parentName:"tr",align:null},"YES"),Object(l.b)("td",{parentName:"tr",align:null},"The public env vars for the task if not specified.")))),Object(l.b)("h3",{id:"submitter-spec"},"Submitter Spec"),Object(l.b)("p",null,"It describes the info of submitter which the user specified, such as k8s. All the fields as below:"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"field"),Object(l.b)("th",{parentName:"tr",align:null},"type"),Object(l.b)("th",{parentName:"tr",align:null},"optional"),Object(l.b)("th",{parentName:"tr",align:null},"description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"type"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"NO"),Object(l.b)("td",{parentName:"tr",align:null},"The submitter type, supports ",Object(l.b)("inlineCode",{parentName:"td"},"k8s")," now")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"configPath"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"YES"),Object(l.b)("td",{parentName:"tr",align:null},"The config path of the specified resource manager. You can set it in submarine-site.xml if run submarine-server locally")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"namespace"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"NO"),Object(l.b)("td",{parentName:"tr",align:null},"It's known as namespace in Kubernetes.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"kind"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"YES"),Object(l.b)("td",{parentName:"tr",align:null},"It's used for k8s submitter, supports TFJob and PyTorchJob")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"apiVersion"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"YES"),Object(l.b)("td",{parentName:"tr",align:null},"It should pair with the kind, such as the TFJob's api version is ",Object(l.b)("inlineCode",{parentName:"td"},"kubeflow.org/v1"))))),Object(l.b)("h3",{id:"task-spec"},"Task Spec"),Object(l.b)("p",null,"It describes the task info, the tasks make up the experiment. So it must be specified when submit the experiment. All the tasks should putted into the key value collection. Such as:"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-yaml"},'taskSpecs:\n  Ps:\n    name: tensorflow\n    replicas: 2\n    resources: "cpu=4,memory=2048M,nvidia.com/gpu=1"\n  Worker:\n    name: tensorflow\n    replicas: 2\n    resources: "cpu=4,memory=2048M,nvidia.com/gpu=1"\n')),Object(l.b)("p",null,"All the fields as below:"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"field"),Object(l.b)("th",{parentName:"tr",align:null},"type"),Object(l.b)("th",{parentName:"tr",align:null},"optional"),Object(l.b)("th",{parentName:"tr",align:null},"description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"YES"),Object(l.b)("td",{parentName:"tr",align:null},"The experiment name, if not specify using the library name")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"image"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"YES"),Object(l.b)("td",{parentName:"tr",align:null},"The experiment docker image")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"cmd"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"YES"),Object(l.b)("td",{parentName:"tr",align:null},"The entry command for running task")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"envVars"),Object(l.b)("td",{parentName:"tr",align:null},"key/value"),Object(l.b)("td",{parentName:"tr",align:null},"YES"),Object(l.b)("td",{parentName:"tr",align:null},"The environment variables for the task")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"resources"),Object(l.b)("td",{parentName:"tr",align:null},"string"),Object(l.b)("td",{parentName:"tr",align:null},"NO"),Object(l.b)("td",{parentName:"tr",align:null},"The limit resource for the task. Formatter: cpu=%s,memory=%s,nvidia.com/gpu=%s")))),Object(l.b)("h2",{id:"implements"},"Implements"),Object(l.b)("p",null,"For more info see ",Object(l.b)("a",{parentName:"p",href:"https://issues.apache.org/jira/browse/SUBMARINE-321"},"SUBMARINE-321")))}s.isMDXComponent=!0}}]);
\ No newline at end of file
diff --git a/43326f7a.c9ddce4b.js b/43326f7a.f74f7bf5.js
similarity index 97%
rename from 43326f7a.c9ddce4b.js
rename to 43326f7a.f74f7bf5.js
index 986f3ae..a96f49b 100644
--- a/43326f7a.c9ddce4b.js
+++ b/43326f7a.f74f7bf5.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[31],{209:function(e,n,t){"use strict";t.d(n,"a",(function(){return p})),t.d(n,"b",(function(){return m}));var o=t(0),a=t.n(o);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function c(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);n&&(o=o.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,o)}return t}function s(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?c(Object(t),!0).forEach((function(n){r(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):c(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function b(e,n){if(null==e)return{};var t,o,a=function(e,n){if(null==e)return{};var t,o,a={},r=Object.keys(e);for(o=0;o<r.length;o++)t=r[o],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(o=0;o<r.length;o++)t=r[o],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var i=a.a.createContext({}),l=function(e){var n=a.a.useContext(i),t=n;return e&&(t="function"==typeof e?e(n):s(s({},n),e)),t},p=function(e){var n=l(e.components);return a.a.createElement(i.Provider,{value:n},e.children)},u={inlineCode:"code",wrapper:function(e){var n=e.children;return a.a.createElement(a.a.Fragment,{},n)}},d=a.a.forwardRef((function(e,n){var t=e.components,o=e.mdxType,r=e.originalType,c=e.parentName,i=b(e,["components","mdxType","originalType","parentName"]),p=l(t),d=o,m=p["".concat(c,".").concat(d)]||p[d]||u[d]||r;return t?a.a.createElement(m,s(s({ref:n},i),{},{components:t})):a.a.createElement(m,s({ref:n},i))}));function m(e,n){var t=arguments,o=n&&n.mdxType;if("string"==typeof e||o){var r=t.length,c=new Array(r);c[0]=d;var s={};for(var b in n)hasOwnProperty.call(n,b)&&(s[b]=n[b]);s.originalType=e,s.mdxType="string"==typeof e?e:o,c[1]=s;for(var i=2;i<r;i++)c[i]=t[i];return a.a.createElement.apply(null,c)}return a.a.createElement.apply(null,t)}d.displayName="MDXCreateElement"},98:function(e,n,t){"use strict";t.r(n),t.d(n,"frontMatter",(function(){return c})),t.d(n,"metadata",(function(){return s})),t.d(n,"toc",(function(){return b})),t.d(n,"default",(function(){return l}));var o=t(3),a=t(7),r=(t(0),t(209)),c={title:"Notebook REST API"},s={unversionedId:"api/notebook",id:"version-0.6.0/api/notebook",isDocsHomePage:!1,title:"Notebook REST API",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/api/notebook.md",slug:"/api/notebook",permalink:"/docs/api/notebook",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/api/notebook.md",version:"0.6.0",sidebar:"api",previous:{title:"Experiment Template REST API",permalink:"/docs/api/experiment-template"}},b=[{value:"Create a notebook instance",id:"create-a-notebook-instance",children:[]},{value:"List notebook instances which belong to user",id:"list-notebook-instances-which-belong-to-user",children:[]},{value:"Get the notebook instance",id:"get-the-notebook-instance",children:[]},{value:"Delete the notebook instance",id:"delete-the-notebook-instance",children:[]}],i={toc:b};function l(e){var n=e.components,t=Object(a.a)(e,["components"]);return Object(r.b)("wrapper",Object(o.a)({},i,t,{components:n,mdxType:"MDXLayout"}),Object(r.b)("blockquote",null,Object(r.b)("p",{parentName:"blockquote"},"Note: The Notebook API is in the alpha stage which is subjected to incompatible changes in future releases.")),Object(r.b)("h2",{id:"create-a-notebook-instance"},"Create a notebook instance"),Object(r.b)("p",null,Object(r.b)("inlineCode",{parentName:"p"},"POST /api/v1/notebook")),Object(r.b)("p",null,Object(r.b)("strong",{parentName:"p"},"Example Request")),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre",className:"language-sh"},'curl -X POST -H "Content-Type: application/json" -d \'\n{\n  "meta": {\n    "name": "test-nb",\n    "namespace": "default",\n    "ownerId": "e9ca23d68d884d4ebb19d07889727dae"\n  },\n  "environment": {\n    "name": "notebook-env"\n  },\n  "spec": {\n    "envVars": {\n      "TEST_ENV": "test"\n    },\n    "resources": "cpu=1,memory=1.0Gi"\n  }\n}\n\' http://127.0.0.1:32080/api/v1/notebook\n')),Object(r.b)("p",null,Object(r.b)("strong",{parentName:"p"},"Example Response:")),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":"Create a notebook instance",\n  "result":{\n    "notebookId":"notebook_1597931805405_0001",\n    "name":"test-nb",\n    "uid":"5a94c01d-6a92-4222-bc66-c610c277546d",\n    "url":"/notebook/default/test-nb/",\n    "status":"creating",\n    "reason":"The notebook instance is creating",\n    "createdTime":"2020-08-20T21:58:27.000+08:00",\n    "deletedTime":null,\n    "spec":{\n      "meta":{\n        "name":"test-nb",\n        "namespace":"default",\n        "ownerId":"e9ca23d68d884d4ebb19d07889727dae"\n      },\n      "environment":{\n        "name":"notebook-env",\n        "dockerImage":"apache/submarine:jupyter-notebook-0.5.0",\n        "kernelSpec":{\n          "name": "team_default_python_3.7",\n          "channels": [\n            "defaults"\n          ],\n          "dependencies": [\n            ""\n          ]\n        },\n        "description":null,\n        "image":null\n      },\n      "spec":{\n        "envVars":{\n          "TEST_ENV":"test"\n        },\n        "resources":"cpu=1,memory=1.0Gi"\n      }\n    }\n  },\n  "attributes":{}\n}\n')),Object(r.b)("h2",{id:"list-notebook-instances-which-belong-to-user"},"List notebook instances which belong to user"),Object(r.b)("p",null,Object(r.b)("inlineCode",{parentName:"p"},"GET /api/v1/notebook")),Object(r.b)("p",null,Object(r.b)("strong",{parentName:"p"},"Example Request:")),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/notebook?id={user_id}\n")),Object(r.b)("p",null,Object(r.b)("strong",{parentName:"p"},"Example Response:")),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":"List all notebook instances",\n  "result":[\n    {\n      "notebookId":"notebook_1597931805405_0001",\n      "name":"test-nb",\n      "uid":"5a94c01d-6a92-4222-bc66-c610c277546d",\n      "url":"/notebook/default/test-nb/",\n      "status": "running",\n      "reason": "The notebook instance is running",\n      "createdTime":"2020-08-20T21:58:27.000+08:00",\n      "deletedTime":null,\n      "spec":{\n        "meta":{\n          "name":"test-nb",\n          "namespace":"default",\n          "ownerId":"e9ca23d68d884d4ebb19d07889727dae"\n        },\n        "environment":{\n          "name":"notebook-env",\n          "dockerImage":"apache/submarine:jupyter-notebook-0.5.0",\n          "kernelSpec":{\n            "name": "team_default_python_3.7",\n            "channels": [\n              "defaults"\n            ],\n            "dependencies": [\n              ""\n            ]\n          },\n          "description":null,\n          "image":null\n        },\n        "spec":{\n          "envVars":{\n            "TEST_ENV":"test"\n          },\n          "resources":"cpu=1,memory=1.0Gi"\n        }\n      }\n    }\n  ],\n  "attributes":{}\n}\n')),Object(r.b)("h2",{id:"get-the-notebook-instance"},"Get the notebook instance"),Object(r.b)("p",null,Object(r.b)("inlineCode",{parentName:"p"},"GET /api/v1/notebook/{id}")),Object(r.b)("p",null,Object(r.b)("strong",{parentName:"p"},"Example Request:")),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/notebook/{id}\n")),Object(r.b)("p",null,Object(r.b)("strong",{parentName:"p"},"Example Response:")),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":"Get the notebook instance",\n  "result":{\n    "notebookId":"notebook_1597931805405_0001",\n    "name":"test-nb",\n    "uid":"5a94c01d-6a92-4222-bc66-c610c277546d",\n    "url":"/notebook/default/test-nb/",\n    "status":"running",\n    "reason":"The notebook instance is running",\n    "createdTime":"2020-08-20T21:58:27.000+08:00",\n    "deletedTime":null,\n    "spec":{\n      "meta":{\n        "name":"test-nb",\n        "namespace":"default",\n        "ownerId":"e9ca23d68d884d4ebb19d07889727dae"\n      },\n      "environment":{\n        "name":"notebook-env",\n        "dockerImage":"apache/submarine:jupyter-notebook-0.5.0",\n        "kernelSpec":{\n          "name": "team_default_python_3.7",\n          "channels": [\n            "defaults"\n          ],\n          "dependencies": [\n            ""\n          ]\n        },\n        "description":null,\n        "image":null\n      },\n      "spec":{\n        "envVars":{\n          "TEST_ENV":"test"\n        },\n        "resources":"cpu=1,memory=1.0Gi"\n      }\n    }\n  },\n  "attributes":{}\n}\n')),Object(r.b)("h2",{id:"delete-the-notebook-instance"},"Delete the notebook instance"),Object(r.b)("p",null,Object(r.b)("inlineCode",{parentName:"p"},"DELETE /api/v1/notebook/{id}")),Object(r.b)("p",null,Object(r.b)("strong",{parentName:"p"},"Example Request:")),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre",className:"language-sh"},"curl -X DELETE http://127.0.0.1:32080/api/v1/notebook/{id}\n")),Object(r.b)("p",null,Object(r.b)("strong",{parentName:"p"},"Example Response:")),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status": "OK",\n  "code": 200,\n  "success": true,\n  "message": "Delete the notebook instance",\n  "result": {\n    "notebookId": "notebook_1597931805405_0001",\n    "name": "test-nb",\n    "uid": "5a94c01d-6a92-4222-bc66-c610c277546d",\n    "url": "/notebook/default/test-nb/",\n    "status": "terminating",\n    "reason": "The notebook instance is terminating",\n    "createdTime": "2020-08-22T14:03:19.000+08:00",\n    "deletedTime": "2020-08-22T14:46:28+0800",\n    "spec": {\n      "meta": {\n        "name": "test-nb",\n        "namespace": "default",\n        "ownerId":"e9ca23d68d884d4ebb19d07889727dae"\n      },\n      "environment": {\n        "name": "notebook-env",\n        "dockerImage": "apache/submarine:jupyter-notebook-0.5.0",\n        "kernelSpec": {\n          "name": "team_default_python_3.7",\n          "channels": [\n            "defaults"\n          ],\n          "dependencies": [\n            ""\n          ]\n        },\n        "description": null,\n        "image": null\n      },\n      "spec": {\n        "envVars": {\n          "TEST_ENV": "test"\n        },\n        "resources": "cpu=1,memory=1.0Gi"\n      }\n    }\n  },\n  "attributes": {}\n}\n')))}l.isMDXComponent=!0}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[29],{194:function(e,n,t){"use strict";t.d(n,"a",(function(){return p})),t.d(n,"b",(function(){return m}));var o=t(0),a=t.n(o);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function c(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);n&&(o=o.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,o)}return t}function s(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?c(Object(t),!0).forEach((function(n){r(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):c(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function b(e,n){if(null==e)return{};var t,o,a=function(e,n){if(null==e)return{};var t,o,a={},r=Object.keys(e);for(o=0;o<r.length;o++)t=r[o],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(o=0;o<r.length;o++)t=r[o],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var i=a.a.createContext({}),l=function(e){var n=a.a.useContext(i),t=n;return e&&(t="function"==typeof e?e(n):s(s({},n),e)),t},p=function(e){var n=l(e.components);return a.a.createElement(i.Provider,{value:n},e.children)},u={inlineCode:"code",wrapper:function(e){var n=e.children;return a.a.createElement(a.a.Fragment,{},n)}},d=a.a.forwardRef((function(e,n){var t=e.components,o=e.mdxType,r=e.originalType,c=e.parentName,i=b(e,["components","mdxType","originalType","parentName"]),p=l(t),d=o,m=p["".concat(c,".").concat(d)]||p[d]||u[d]||r;return t?a.a.createElement(m,s(s({ref:n},i),{},{components:t})):a.a.createElement(m,s({ref:n},i))}));function m(e,n){var t=arguments,o=n&&n.mdxType;if("string"==typeof e||o){var r=t.length,c=new Array(r);c[0]=d;var s={};for(var b in n)hasOwnProperty.call(n,b)&&(s[b]=n[b]);s.originalType=e,s.mdxType="string"==typeof e?e:o,c[1]=s;for(var i=2;i<r;i++)c[i]=t[i];return a.a.createElement.apply(null,c)}return a.a.createElement.apply(null,t)}d.displayName="MDXCreateElement"},96:function(e,n,t){"use strict";t.r(n),t.d(n,"frontMatter",(function(){return c})),t.d(n,"metadata",(function(){return s})),t.d(n,"toc",(function(){return b})),t.d(n,"default",(function(){return l}));var o=t(3),a=t(7),r=(t(0),t(194)),c={title:"Notebook REST API"},s={unversionedId:"api/notebook",id:"version-0.6.0/api/notebook",isDocsHomePage:!1,title:"Notebook REST API",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/api/notebook.md",slug:"/api/notebook",permalink:"/docs/api/notebook",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/api/notebook.md",version:"0.6.0",sidebar:"api",previous:{title:"Experiment Template REST API",permalink:"/docs/api/experiment-template"}},b=[{value:"Create a notebook instance",id:"create-a-notebook-instance",children:[]},{value:"List notebook instances which belong to user",id:"list-notebook-instances-which-belong-to-user",children:[]},{value:"Get the notebook instance",id:"get-the-notebook-instance",children:[]},{value:"Delete the notebook instance",id:"delete-the-notebook-instance",children:[]}],i={toc:b};function l(e){var n=e.components,t=Object(a.a)(e,["components"]);return Object(r.b)("wrapper",Object(o.a)({},i,t,{components:n,mdxType:"MDXLayout"}),Object(r.b)("blockquote",null,Object(r.b)("p",{parentName:"blockquote"},"Note: The Notebook API is in the alpha stage which is subjected to incompatible changes in future releases.")),Object(r.b)("h2",{id:"create-a-notebook-instance"},"Create a notebook instance"),Object(r.b)("p",null,Object(r.b)("inlineCode",{parentName:"p"},"POST /api/v1/notebook")),Object(r.b)("p",null,Object(r.b)("strong",{parentName:"p"},"Example Request")),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre",className:"language-sh"},'curl -X POST -H "Content-Type: application/json" -d \'\n{\n  "meta": {\n    "name": "test-nb",\n    "namespace": "default",\n    "ownerId": "e9ca23d68d884d4ebb19d07889727dae"\n  },\n  "environment": {\n    "name": "notebook-env"\n  },\n  "spec": {\n    "envVars": {\n      "TEST_ENV": "test"\n    },\n    "resources": "cpu=1,memory=1.0Gi"\n  }\n}\n\' http://127.0.0.1:32080/api/v1/notebook\n')),Object(r.b)("p",null,Object(r.b)("strong",{parentName:"p"},"Example Response:")),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":"Create a notebook instance",\n  "result":{\n    "notebookId":"notebook_1597931805405_0001",\n    "name":"test-nb",\n    "uid":"5a94c01d-6a92-4222-bc66-c610c277546d",\n    "url":"/notebook/default/test-nb/",\n    "status":"creating",\n    "reason":"The notebook instance is creating",\n    "createdTime":"2020-08-20T21:58:27.000+08:00",\n    "deletedTime":null,\n    "spec":{\n      "meta":{\n        "name":"test-nb",\n        "namespace":"default",\n        "ownerId":"e9ca23d68d884d4ebb19d07889727dae"\n      },\n      "environment":{\n        "name":"notebook-env",\n        "dockerImage":"apache/submarine:jupyter-notebook-0.5.0",\n        "kernelSpec":{\n          "name": "team_default_python_3.7",\n          "channels": [\n            "defaults"\n          ],\n          "dependencies": [\n            ""\n          ]\n        },\n        "description":null,\n        "image":null\n      },\n      "spec":{\n        "envVars":{\n          "TEST_ENV":"test"\n        },\n        "resources":"cpu=1,memory=1.0Gi"\n      }\n    }\n  },\n  "attributes":{}\n}\n')),Object(r.b)("h2",{id:"list-notebook-instances-which-belong-to-user"},"List notebook instances which belong to user"),Object(r.b)("p",null,Object(r.b)("inlineCode",{parentName:"p"},"GET /api/v1/notebook")),Object(r.b)("p",null,Object(r.b)("strong",{parentName:"p"},"Example Request:")),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/notebook?id={user_id}\n")),Object(r.b)("p",null,Object(r.b)("strong",{parentName:"p"},"Example Response:")),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":"List all notebook instances",\n  "result":[\n    {\n      "notebookId":"notebook_1597931805405_0001",\n      "name":"test-nb",\n      "uid":"5a94c01d-6a92-4222-bc66-c610c277546d",\n      "url":"/notebook/default/test-nb/",\n      "status": "running",\n      "reason": "The notebook instance is running",\n      "createdTime":"2020-08-20T21:58:27.000+08:00",\n      "deletedTime":null,\n      "spec":{\n        "meta":{\n          "name":"test-nb",\n          "namespace":"default",\n          "ownerId":"e9ca23d68d884d4ebb19d07889727dae"\n        },\n        "environment":{\n          "name":"notebook-env",\n          "dockerImage":"apache/submarine:jupyter-notebook-0.5.0",\n          "kernelSpec":{\n            "name": "team_default_python_3.7",\n            "channels": [\n              "defaults"\n            ],\n            "dependencies": [\n              ""\n            ]\n          },\n          "description":null,\n          "image":null\n        },\n        "spec":{\n          "envVars":{\n            "TEST_ENV":"test"\n          },\n          "resources":"cpu=1,memory=1.0Gi"\n        }\n      }\n    }\n  ],\n  "attributes":{}\n}\n')),Object(r.b)("h2",{id:"get-the-notebook-instance"},"Get the notebook instance"),Object(r.b)("p",null,Object(r.b)("inlineCode",{parentName:"p"},"GET /api/v1/notebook/{id}")),Object(r.b)("p",null,Object(r.b)("strong",{parentName:"p"},"Example Request:")),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/notebook/{id}\n")),Object(r.b)("p",null,Object(r.b)("strong",{parentName:"p"},"Example Response:")),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":"Get the notebook instance",\n  "result":{\n    "notebookId":"notebook_1597931805405_0001",\n    "name":"test-nb",\n    "uid":"5a94c01d-6a92-4222-bc66-c610c277546d",\n    "url":"/notebook/default/test-nb/",\n    "status":"running",\n    "reason":"The notebook instance is running",\n    "createdTime":"2020-08-20T21:58:27.000+08:00",\n    "deletedTime":null,\n    "spec":{\n      "meta":{\n        "name":"test-nb",\n        "namespace":"default",\n        "ownerId":"e9ca23d68d884d4ebb19d07889727dae"\n      },\n      "environment":{\n        "name":"notebook-env",\n        "dockerImage":"apache/submarine:jupyter-notebook-0.5.0",\n        "kernelSpec":{\n          "name": "team_default_python_3.7",\n          "channels": [\n            "defaults"\n          ],\n          "dependencies": [\n            ""\n          ]\n        },\n        "description":null,\n        "image":null\n      },\n      "spec":{\n        "envVars":{\n          "TEST_ENV":"test"\n        },\n        "resources":"cpu=1,memory=1.0Gi"\n      }\n    }\n  },\n  "attributes":{}\n}\n')),Object(r.b)("h2",{id:"delete-the-notebook-instance"},"Delete the notebook instance"),Object(r.b)("p",null,Object(r.b)("inlineCode",{parentName:"p"},"DELETE /api/v1/notebook/{id}")),Object(r.b)("p",null,Object(r.b)("strong",{parentName:"p"},"Example Request:")),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre",className:"language-sh"},"curl -X DELETE http://127.0.0.1:32080/api/v1/notebook/{id}\n")),Object(r.b)("p",null,Object(r.b)("strong",{parentName:"p"},"Example Response:")),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status": "OK",\n  "code": 200,\n  "success": true,\n  "message": "Delete the notebook instance",\n  "result": {\n    "notebookId": "notebook_1597931805405_0001",\n    "name": "test-nb",\n    "uid": "5a94c01d-6a92-4222-bc66-c610c277546d",\n    "url": "/notebook/default/test-nb/",\n    "status": "terminating",\n    "reason": "The notebook instance is terminating",\n    "createdTime": "2020-08-22T14:03:19.000+08:00",\n    "deletedTime": "2020-08-22T14:46:28+0800",\n    "spec": {\n      "meta": {\n        "name": "test-nb",\n        "namespace": "default",\n        "ownerId":"e9ca23d68d884d4ebb19d07889727dae"\n      },\n      "environment": {\n        "name": "notebook-env",\n        "dockerImage": "apache/submarine:jupyter-notebook-0.5.0",\n        "kernelSpec": {\n          "name": "team_default_python_3.7",\n          "channels": [\n            "defaults"\n          ],\n          "dependencies": [\n            ""\n          ]\n        },\n        "description": null,\n        "image": null\n      },\n      "spec": {\n        "envVars": {\n          "TEST_ENV": "test"\n        },\n        "resources": "cpu=1,memory=1.0Gi"\n      }\n    }\n  },\n  "attributes": {}\n}\n')))}l.isMDXComponent=!0}}]);
\ No newline at end of file
diff --git a/446ff6dc.128da00b.js b/446ff6dc.e4439fe0.js
similarity index 94%
rename from 446ff6dc.128da00b.js
rename to 446ff6dc.e4439fe0.js
index 4b891fc..72bb5bf 100644
--- a/446ff6dc.128da00b.js
+++ b/446ff6dc.e4439fe0.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[32],{209:function(e,t,n){"use strict";n.d(t,"a",(function(){return b})),n.d(t,"b",(function(){return m}));var r=n(0),a=n.n(r);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function c(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=a.a.createContext({}),u=function(e){var t=a.a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):c(c({},t),e)),n},b=function(e){var t=u(e.components);return a.a.createElement(l.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},d=a.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,o=e.parentName,l=s(e,["components","mdxType","originalType","parentName"]),b=u(n),d=r,m=b["".concat(o,".").concat(d)]||b[d]||p[d]||i;return n?a.a.createElement(m,c(c({ref:t},l),{},{components:n})):a.a.createElement(m,c({ref:t},l))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=d;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c.mdxType="string"==typeof e?e:r,o[1]=c;for(var l=2;l<i;l++)o[l]=n[l];return a.a.createElement.apply(null,o)}return a.a.createElement.apply(null,n)}d.displayName="MDXCreateElement"},238:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/test-k8s-result-883d99774542cc9898f086937cb80190.png"},99:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return o})),n.d(t,"metadata",(function(){return c})),n.d(t,"toc",(function(){return s})),n.d(t,"default",(function(){return u}));var r=n(3),a=n(7),i=(n(0),n(209)),o={title:"How to Run Integration K8s Test"},c={unversionedId:"devDocs/IntegrationTestK8s",id:"version-0.6.0/devDocs/IntegrationTestK8s",isDocsHomePage:!1,title:"How to Run Integration K8s Test",description:"\x3c!---",source:"@site/versioned_docs/version-0.6.0/devDocs/IntegrationTestK8s.md",slug:"/devDocs/IntegrationTestK8s",permalink:"/docs/devDocs/IntegrationTestK8s",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/devDocs/IntegrationTestK8s.md",version:"0.6.0",sidebar:"docs",previous:{title:"Development Guide",permalink:"/docs/devDocs/Development"},next:{title:"How to Run Frontend Integration Test",permalink:"/docs/devDocs/IntegrationTestE2E"}},s=[{value:"Introduction",id:"introduction",children:[]},{value:"Run k8s test locally",id:"run-k8s-test-locally",children:[]},{value:"Run k8s test in GitHub Actions",id:"run-k8s-test-in-github-actions",children:[]}],l={toc:s};function u(e){var t=e.components,o=Object(a.a)(e,["components"]);return Object(i.b)("wrapper",Object(r.a)({},l,o,{components:t,mdxType:"MDXLayout"}),Object(i.b)("h2",{id:"introduction"},"Introduction"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"The test cases under the directory ",Object(i.b)("inlineCode",{parentName:"p"},"test-k8s")," are integration tests to ensure the correctness of the Submarine RESTful API.")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"You can run these tests either locally or on GitHub Actions."),Object(i.b)("ul",{parentName:"li"},Object(i.b)("li",{parentName:"ul"},"Before running the tests, the minikube (KinD) cluster must be created. "),Object(i.b)("li",{parentName:"ul"},"Then, compile and package the submarine project in ",Object(i.b)("inlineCode",{parentName:"li"},"submarine-dist")," directory for building a docker image. "),Object(i.b)("li",{parentName:"ul"},"In addition, the 8080 port in submarine-traefik should be forwarded.")))),Object(i.b)("h2",{id:"run-k8s-test-locally"},"Run k8s test locally"),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Ensure you have setup the KinD cluster or minikube cluster. If you haven't, follow this ",Object(i.b)("a",{parentName:"p",href:"https://minikube.sigs.k8s.io/docs/start/"},Object(i.b)("inlineCode",{parentName:"a"},"minikube tutorial")))),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Build the submarine from source and upgrade the server pod through this ",Object(i.b)("a",{parentName:"p",href:"./Development/#build-from-source"},Object(i.b)("inlineCode",{parentName:"a"},"guide")))),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Forward port"),Object(i.b)("pre",{parentName:"li"},Object(i.b)("code",{parentName:"pre",className:"language-bash"},"kubectl port-forward --address 0.0.0.0 service/submarine-traefik 8080:80\n"))),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},'Install the latest package "submarine-server-core" into the local repository, for use as a dependency in the module ',Object(i.b)("inlineCode",{parentName:"p"},"test-k8s")),Object(i.b)("pre",{parentName:"li"},Object(i.b)("code",{parentName:"pre",className:"language-bash"},"mvn install -DskipTests\n"))),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Execute the test command"),Object(i.b)("pre",{parentName:"li"},Object(i.b)("code",{parentName:"pre",className:"language-bash"},"mvn verify -DskipRat -pl :submarine-test-k8s -Phadoop-2.9 -B\n")))),Object(i.b)("p",null,Object(i.b)("img",{src:n(238).default})),Object(i.b)("h2",{id:"run-k8s-test-in-github-actions"},"Run k8s test in GitHub Actions"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Each time a code is submitted, GitHub Actions is triggered automatically.")))}u.isMDXComponent=!0}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[30],{194:function(e,t,n){"use strict";n.d(t,"a",(function(){return b})),n.d(t,"b",(function(){return m}));var r=n(0),a=n.n(r);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function c(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=a.a.createContext({}),u=function(e){var t=a.a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):c(c({},t),e)),n},b=function(e){var t=u(e.components);return a.a.createElement(l.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},d=a.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,o=e.parentName,l=s(e,["components","mdxType","originalType","parentName"]),b=u(n),d=r,m=b["".concat(o,".").concat(d)]||b[d]||p[d]||i;return n?a.a.createElement(m,c(c({ref:t},l),{},{components:n})):a.a.createElement(m,c({ref:t},l))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=d;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c.mdxType="string"==typeof e?e:r,o[1]=c;for(var l=2;l<i;l++)o[l]=n[l];return a.a.createElement.apply(null,o)}return a.a.createElement.apply(null,n)}d.displayName="MDXCreateElement"},216:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/test-k8s-result-883d99774542cc9898f086937cb80190.png"},97:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return o})),n.d(t,"metadata",(function(){return c})),n.d(t,"toc",(function(){return s})),n.d(t,"default",(function(){return u}));var r=n(3),a=n(7),i=(n(0),n(194)),o={title:"How to Run Integration K8s Test"},c={unversionedId:"devDocs/IntegrationTestK8s",id:"version-0.6.0/devDocs/IntegrationTestK8s",isDocsHomePage:!1,title:"How to Run Integration K8s Test",description:"\x3c!---",source:"@site/versioned_docs/version-0.6.0/devDocs/IntegrationTestK8s.md",slug:"/devDocs/IntegrationTestK8s",permalink:"/docs/devDocs/IntegrationTestK8s",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/devDocs/IntegrationTestK8s.md",version:"0.6.0",sidebar:"docs",previous:{title:"Development Guide",permalink:"/docs/devDocs/Development"},next:{title:"How to Run Frontend Integration Test",permalink:"/docs/devDocs/IntegrationTestE2E"}},s=[{value:"Introduction",id:"introduction",children:[]},{value:"Run k8s test locally",id:"run-k8s-test-locally",children:[]},{value:"Run k8s test in GitHub Actions",id:"run-k8s-test-in-github-actions",children:[]}],l={toc:s};function u(e){var t=e.components,o=Object(a.a)(e,["components"]);return Object(i.b)("wrapper",Object(r.a)({},l,o,{components:t,mdxType:"MDXLayout"}),Object(i.b)("h2",{id:"introduction"},"Introduction"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"The test cases under the directory ",Object(i.b)("inlineCode",{parentName:"p"},"test-k8s")," are integration tests to ensure the correctness of the Submarine RESTful API.")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"You can run these tests either locally or on GitHub Actions."),Object(i.b)("ul",{parentName:"li"},Object(i.b)("li",{parentName:"ul"},"Before running the tests, the minikube (KinD) cluster must be created. "),Object(i.b)("li",{parentName:"ul"},"Then, compile and package the submarine project in ",Object(i.b)("inlineCode",{parentName:"li"},"submarine-dist")," directory for building a docker image. "),Object(i.b)("li",{parentName:"ul"},"In addition, the 8080 port in submarine-traefik should be forwarded.")))),Object(i.b)("h2",{id:"run-k8s-test-locally"},"Run k8s test locally"),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Ensure you have setup the KinD cluster or minikube cluster. If you haven't, follow this ",Object(i.b)("a",{parentName:"p",href:"https://minikube.sigs.k8s.io/docs/start/"},Object(i.b)("inlineCode",{parentName:"a"},"minikube tutorial")))),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Build the submarine from source and upgrade the server pod through this ",Object(i.b)("a",{parentName:"p",href:"./Development/#build-from-source"},Object(i.b)("inlineCode",{parentName:"a"},"guide")))),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Forward port"),Object(i.b)("pre",{parentName:"li"},Object(i.b)("code",{parentName:"pre",className:"language-bash"},"kubectl port-forward --address 0.0.0.0 service/submarine-traefik 8080:80\n"))),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},'Install the latest package "submarine-server-core" into the local repository, for use as a dependency in the module ',Object(i.b)("inlineCode",{parentName:"p"},"test-k8s")),Object(i.b)("pre",{parentName:"li"},Object(i.b)("code",{parentName:"pre",className:"language-bash"},"mvn install -DskipTests\n"))),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Execute the test command"),Object(i.b)("pre",{parentName:"li"},Object(i.b)("code",{parentName:"pre",className:"language-bash"},"mvn verify -DskipRat -pl :submarine-test-k8s -Phadoop-2.9 -B\n")))),Object(i.b)("p",null,Object(i.b)("img",{src:n(216).default})),Object(i.b)("h2",{id:"run-k8s-test-in-github-actions"},"Run k8s test in GitHub Actions"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Each time a code is submitted, GitHub Actions is triggered automatically.")))}u.isMDXComponent=!0}}]);
\ No newline at end of file
diff --git a/4726afa6.756a77c8.js b/4726afa6.756a77c8.js
deleted file mode 100644
index 2fb1c42..0000000
--- a/4726afa6.756a77c8.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[33],{100:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return i})),n.d(t,"metadata",(function(){return l})),n.d(t,"toc",(function(){return m})),n.d(t,"default",(function(){return s}));var a=n(3),r=n(7),p=(n(0),n(209)),i={title:"Experiment Template REST API"},l={unversionedId:"api/experiment-template",id:"api/experiment-template",isDocsHomePage:!1,title:"Experiment Template REST API",description:"\x3c!--",source:"@site/docs/api/experiment-template.md",slug:"/api/experiment-template",permalink:"/docs/next/api/experiment-template",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/api/experiment-template.md",version:"current",sidebar:"api",previous:{title:"Experiment REST API",permalink:"/docs/next/api/experiment"},next:{title:"Notebook REST API",permalink:"/docs/next/api/notebook"}},m=[{value:"Create experiment template",id:"create-experiment-template",children:[{value:"List experiment template",id:"list-experiment-template",children:[]},{value:"Get experiment template",id:"get-experiment-template",children:[]},{value:"Patch template",id:"patch-template",children:[]},{value:"Delete template",id:"delete-template",children:[]},{value:"Use template to create a experiment",id:"use-template-to-create-a-experiment",children:[]}]}],c={toc:m};function s(e){var t=e.components,n=Object(r.a)(e,["components"]);return Object(p.b)("wrapper",Object(a.a)({},c,n,{components:t,mdxType:"MDXLayout"}),Object(p.b)("blockquote",null,Object(p.b)("p",{parentName:"blockquote"},"Note: The Experiment API is in the alpha stage which is subjected to incompatible changes in\nfuture releases.")),Object(p.b)("p",null,'Developers can register a parameterized experiment as an experiment template,\nFor example, if the developer wants to change the following "--learning_rate=0.1" to parameters.'),Object(p.b)("pre",null,Object(p.b)("code",{parentName:"pre",className:"language-json"},'"experimentSpec": {\n  "meta": {\n    "cmd": "python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.1 --batch_size=150"\n  }, \n  "...": "..."\n}\n')),Object(p.b)("p",null,"They can use two curly braces as placeholders, the template format will be as"),Object(p.b)("pre",null,Object(p.b)("code",{parentName:"pre",className:"language-json"},'"experimentSpec": {\n  "meta": {\n    "cmd": "python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate={{learning_rate}} --batch_size=150"\n  }, \n  "...": "..."\n}\n')),Object(p.b)("p",null,"The template parameters format will be as"),Object(p.b)("pre",null,Object(p.b)("code",{parentName:"pre",className:"language-json"},'{\n  "name": "learning_rate",\n  "value": 0.1,\n  "required": true,\n  "description": "This is learning_rate of training."\n}\n')),Object(p.b)("p",null,"name: placeholder name\nvalue; default value\nrequired: Indicates whether the user must enter parameters, when required is true, value can be null\ndescription: Introduction of this parameter"),Object(p.b)("p",null,"Users can use existing experiment templates and adjust the default value to create experiments.\nAfter the user submits the experiment template, the submarine server finds the corresponding template based on the name. And the template handler converts input parameters to an actual experiment, such as a distributed TF experiment."),Object(p.b)("p",null,'The "replicas", "cpu", "memory" of resources will be automatically parameterized, so developers do not need to add them.\nFor example, if there are "Ps" and "Worker" under spec, the following parameters will be automatically appended.'),Object(p.b)("pre",null,Object(p.b)("code",{parentName:"pre"},"spec.Ps.replicas\nspec.Ps.resourceMap.cpu\nspec.Ps.resourceMap.memory\nspec.Worker.replicas\nspec.Worker.resourceMap.cpu\nspec.Worker.resourceMap.memory\n")),Object(p.b)("h2",{id:"create-experiment-template"},"Create experiment template"),Object(p.b)("p",null,Object(p.b)("inlineCode",{parentName:"p"},"POST /api/v1/template")),Object(p.b)("p",null,Object(p.b)("strong",{parentName:"p"},"Example Request")),Object(p.b)("pre",null,Object(p.b)("code",{parentName:"pre",className:"language-sh"},'curl -X POST -H "Content-Type: application/json" -d \'\n{\n  "name": "my-tf-mnist-template",\n  "author": "author",\n  "description": "This is a template to run tf-mnist",\n  "parameters": [{\n      "name": "learning_rate",\n      "value": 0.1,\n      "required": true,\n      "description": "This is learning_rate of training."\n    },\n    {\n      "name": "batch_size",\n      "value": 150,\n      "required": true,\n      "description": "This is batch_size of training."\n    },\n    {\n      "name": "experiment_name",\n      "value": "tf-mnist1",\n      "required": true,\n      "description": "the name of experiment."\n    }\n  ],\n  "experimentSpec": {\n    "meta": {\n      "cmd": "python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate={{learning_rate}} --batch_size={{batch_size}}",\n      "name": "{{experiment_name}}",\n      "envVars": {\n        "ENV1": "ENV1"\n      },\n      "framework": "TensorFlow",\n      "namespace": "default"\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=1024M"\n      }\n    },\n    "environment": {\n      "image": "apache/submarine:tf-mnist-with-summaries-1.0"\n    }\n  }\n}\n\' http://127.0.0.1:32080/api/v1/template\n')),Object(p.b)("h3",{id:"list-experiment-template"},"List experiment template"),Object(p.b)("p",null,Object(p.b)("inlineCode",{parentName:"p"},"GET /api/v1/template")),Object(p.b)("p",null,Object(p.b)("strong",{parentName:"p"},"Example Request:")),Object(p.b)("pre",null,Object(p.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/template\n")),Object(p.b)("h3",{id:"get-experiment-template"},"Get experiment template"),Object(p.b)("p",null,Object(p.b)("inlineCode",{parentName:"p"},"GET /api/v1/template/{name}")),Object(p.b)("p",null,Object(p.b)("strong",{parentName:"p"},"Example Request:")),Object(p.b)("pre",null,Object(p.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/template/my-tf-mnist-template\n")),Object(p.b)("h3",{id:"patch-template"},"Patch template"),Object(p.b)("p",null,Object(p.b)("inlineCode",{parentName:"p"},"PATCH /api/v1/template/{name}")),Object(p.b)("pre",null,Object(p.b)("code",{parentName:"pre",className:"language-sh"},'curl -X PATCH -H "Content-Type: application/json" -d \'\n{\n  "name": "my-tf-mnist-template",\n  "author": "author-new",\n  "description": "This is a template to run tf-mnist",\n  "parameters": [{\n      "name": "learning_rate",\n      "value": 0.1,\n      "required": true,\n      "description": "This is learning_rate of training."\n    },\n    {\n      "name": "batch_size",\n      "value": 150,\n      "required": true,\n      "description": "This is batch_size of training."\n    },\n    {\n      "name": "experiment_name",\n      "value": "tf-mnist1",\n      "required": true,\n      "description": "the name of experiment."\n    }\n  ],\n  "experimentSpec": {\n    "meta": {\n      "cmd": "python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate={{learning_rate}} --batch_size={{batch_size}}",\n      "name": "{{experiment_name}}",\n      "envVars": {\n        "ENV1": "ENV1"\n      },\n      "framework": "TensorFlow",\n      "namespace": "default"\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=1024M"\n      }\n    },\n    "environment": {\n      "image": "apache/submarine:tf-mnist-with-summaries-1.0"\n    }\n  }\n}\n\' http://127.0.0.1:32080/api/v1/template/my-tf-mnist-template\n')),Object(p.b)("blockquote",null,Object(p.b)("p",{parentName:"blockquote"},'"description", "parameters", "experimentSpec", "author" etc can be updated using this API.\n"name" of experiment template is not supported.')),Object(p.b)("h3",{id:"delete-template"},"Delete template"),Object(p.b)("p",null,Object(p.b)("inlineCode",{parentName:"p"},"GET /api/v1/template/{name}")),Object(p.b)("p",null,Object(p.b)("strong",{parentName:"p"},"Example Request:")),Object(p.b)("pre",null,Object(p.b)("code",{parentName:"pre",className:"language-sh"},"curl -X DELETE http://127.0.0.1:32080/api/v1/template/my-tf-mnist-template\n")),Object(p.b)("h3",{id:"use-template-to-create-a-experiment"},"Use template to create a experiment"),Object(p.b)("p",null,Object(p.b)("inlineCode",{parentName:"p"},"POST /api/v1/experiment/{template_name}")),Object(p.b)("p",null,Object(p.b)("strong",{parentName:"p"},"Example Request:")),Object(p.b)("pre",null,Object(p.b)("code",{parentName:"pre",className:"language-sh"},'curl -X POST -H "Content-Type: application/json" -d \'\n{\n    "name": "tf-mnist",\n    "params": {\n        "learning_rate":"0.01",\n        "batch_size":"150",\n        "experiment_name":"newexperiment1"\n    }\n}\n\' http://127.0.0.1:32080/api/v1/experiment/my-tf-mnist-template\n')))}s.isMDXComponent=!0},209:function(e,t,n){"use strict";n.d(t,"a",(function(){return o})),n.d(t,"b",(function(){return d}));var a=n(0),r=n.n(a);function p(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){p(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function m(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},p=Object.keys(e);for(a=0;a<p.length;a++)n=p[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var p=Object.getOwnPropertySymbols(e);for(a=0;a<p.length;a++)n=p[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var c=r.a.createContext({}),s=function(e){var t=r.a.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},o=function(e){var t=s(e.components);return r.a.createElement(c.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},b=r.a.forwardRef((function(e,t){var n=e.components,a=e.mdxType,p=e.originalType,i=e.parentName,c=m(e,["components","mdxType","originalType","parentName"]),o=s(n),b=a,d=o["".concat(i,".").concat(b)]||o[b]||u[b]||p;return n?r.a.createElement(d,l(l({ref:t},c),{},{components:n})):r.a.createElement(d,l({ref:t},c))}));function d(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var p=n.length,i=new Array(p);i[0]=b;var l={};for(var m in t)hasOwnProperty.call(t,m)&&(l[m]=t[m]);l.originalType=e,l.mdxType="string"==typeof e?e:a,i[1]=l;for(var c=2;c<p;c++)i[c]=n[c];return r.a.createElement.apply(null,i)}return r.a.createElement.apply(null,n)}b.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/4726afa6.e62ba52e.js b/4726afa6.e62ba52e.js
new file mode 100644
index 0000000..f70aebb
--- /dev/null
+++ b/4726afa6.e62ba52e.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[31],{194:function(e,t,n){"use strict";n.d(t,"a",(function(){return o})),n.d(t,"b",(function(){return d}));var a=n(0),r=n.n(a);function p(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){p(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function m(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},p=Object.keys(e);for(a=0;a<p.length;a++)n=p[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var p=Object.getOwnPropertySymbols(e);for(a=0;a<p.length;a++)n=p[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var c=r.a.createContext({}),s=function(e){var t=r.a.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},o=function(e){var t=s(e.components);return r.a.createElement(c.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},b=r.a.forwardRef((function(e,t){var n=e.components,a=e.mdxType,p=e.originalType,i=e.parentName,c=m(e,["components","mdxType","originalType","parentName"]),o=s(n),b=a,d=o["".concat(i,".").concat(b)]||o[b]||u[b]||p;return n?r.a.createElement(d,l(l({ref:t},c),{},{components:n})):r.a.createElement(d,l({ref:t},c))}));function d(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var p=n.length,i=new Array(p);i[0]=b;var l={};for(var m in t)hasOwnProperty.call(t,m)&&(l[m]=t[m]);l.originalType=e,l.mdxType="string"==typeof e?e:a,i[1]=l;for(var c=2;c<p;c++)i[c]=n[c];return r.a.createElement.apply(null,i)}return r.a.createElement.apply(null,n)}b.displayName="MDXCreateElement"},98:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return i})),n.d(t,"metadata",(function(){return l})),n.d(t,"toc",(function(){return m})),n.d(t,"default",(function(){return s}));var a=n(3),r=n(7),p=(n(0),n(194)),i={title:"Experiment Template REST API"},l={unversionedId:"api/experiment-template",id:"api/experiment-template",isDocsHomePage:!1,title:"Experiment Template REST API",description:"\x3c!--",source:"@site/docs/api/experiment-template.md",slug:"/api/experiment-template",permalink:"/docs/next/api/experiment-template",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/api/experiment-template.md",version:"current",sidebar:"api",previous:{title:"Experiment REST API",permalink:"/docs/next/api/experiment"},next:{title:"Notebook REST API",permalink:"/docs/next/api/notebook"}},m=[{value:"Create experiment template",id:"create-experiment-template",children:[{value:"List experiment template",id:"list-experiment-template",children:[]},{value:"Get experiment template",id:"get-experiment-template",children:[]},{value:"Patch template",id:"patch-template",children:[]},{value:"Delete template",id:"delete-template",children:[]},{value:"Use template to create a experiment",id:"use-template-to-create-a-experiment",children:[]}]}],c={toc:m};function s(e){var t=e.components,n=Object(r.a)(e,["components"]);return Object(p.b)("wrapper",Object(a.a)({},c,n,{components:t,mdxType:"MDXLayout"}),Object(p.b)("blockquote",null,Object(p.b)("p",{parentName:"blockquote"},"Note: The Experiment API is in the alpha stage which is subjected to incompatible changes in\nfuture releases.")),Object(p.b)("p",null,'Developers can register a parameterized experiment as an experiment template,\nFor example, if the developer wants to change the following "--learning_rate=0.1" to parameters.'),Object(p.b)("pre",null,Object(p.b)("code",{parentName:"pre",className:"language-json"},'"experimentSpec": {\n  "meta": {\n    "cmd": "python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.1 --batch_size=150"\n  }, \n  "...": "..."\n}\n')),Object(p.b)("p",null,"They can use two curly braces as placeholders, the template format will be as"),Object(p.b)("pre",null,Object(p.b)("code",{parentName:"pre",className:"language-json"},'"experimentSpec": {\n  "meta": {\n    "cmd": "python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate={{learning_rate}} --batch_size=150"\n  }, \n  "...": "..."\n}\n')),Object(p.b)("p",null,"The template parameters format will be as"),Object(p.b)("pre",null,Object(p.b)("code",{parentName:"pre",className:"language-json"},'{\n  "name": "learning_rate",\n  "value": 0.1,\n  "required": true,\n  "description": "This is learning_rate of training."\n}\n')),Object(p.b)("p",null,"name: placeholder name\nvalue; default value\nrequired: Indicates whether the user must enter parameters, when required is true, value can be null\ndescription: Introduction of this parameter"),Object(p.b)("p",null,"Users can use existing experiment templates and adjust the default value to create experiments.\nAfter the user submits the experiment template, the submarine server finds the corresponding template based on the name. And the template handler converts input parameters to an actual experiment, such as a distributed TF experiment."),Object(p.b)("p",null,'The "replicas", "cpu", "memory" of resources will be automatically parameterized, so developers do not need to add them.\nFor example, if there are "Ps" and "Worker" under spec, the following parameters will be automatically appended.'),Object(p.b)("pre",null,Object(p.b)("code",{parentName:"pre"},"spec.Ps.replicas\nspec.Ps.resourceMap.cpu\nspec.Ps.resourceMap.memory\nspec.Worker.replicas\nspec.Worker.resourceMap.cpu\nspec.Worker.resourceMap.memory\n")),Object(p.b)("h2",{id:"create-experiment-template"},"Create experiment template"),Object(p.b)("p",null,Object(p.b)("inlineCode",{parentName:"p"},"POST /api/v1/template")),Object(p.b)("p",null,Object(p.b)("strong",{parentName:"p"},"Example Request")),Object(p.b)("pre",null,Object(p.b)("code",{parentName:"pre",className:"language-sh"},'curl -X POST -H "Content-Type: application/json" -d \'\n{\n  "name": "my-tf-mnist-template",\n  "author": "author",\n  "description": "This is a template to run tf-mnist",\n  "parameters": [{\n      "name": "learning_rate",\n      "value": 0.1,\n      "required": true,\n      "description": "This is learning_rate of training."\n    },\n    {\n      "name": "batch_size",\n      "value": 150,\n      "required": true,\n      "description": "This is batch_size of training."\n    },\n    {\n      "name": "experiment_name",\n      "value": "tf-mnist1",\n      "required": true,\n      "description": "the name of experiment."\n    }\n  ],\n  "experimentSpec": {\n    "meta": {\n      "cmd": "python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate={{learning_rate}} --batch_size={{batch_size}}",\n      "name": "{{experiment_name}}",\n      "envVars": {\n        "ENV1": "ENV1"\n      },\n      "framework": "TensorFlow",\n      "namespace": "default"\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=1024M"\n      }\n    },\n    "environment": {\n      "image": "apache/submarine:tf-mnist-with-summaries-1.0"\n    }\n  }\n}\n\' http://127.0.0.1:32080/api/v1/template\n')),Object(p.b)("h3",{id:"list-experiment-template"},"List experiment template"),Object(p.b)("p",null,Object(p.b)("inlineCode",{parentName:"p"},"GET /api/v1/template")),Object(p.b)("p",null,Object(p.b)("strong",{parentName:"p"},"Example Request:")),Object(p.b)("pre",null,Object(p.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/template\n")),Object(p.b)("h3",{id:"get-experiment-template"},"Get experiment template"),Object(p.b)("p",null,Object(p.b)("inlineCode",{parentName:"p"},"GET /api/v1/template/{name}")),Object(p.b)("p",null,Object(p.b)("strong",{parentName:"p"},"Example Request:")),Object(p.b)("pre",null,Object(p.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/template/my-tf-mnist-template\n")),Object(p.b)("h3",{id:"patch-template"},"Patch template"),Object(p.b)("p",null,Object(p.b)("inlineCode",{parentName:"p"},"PATCH /api/v1/template/{name}")),Object(p.b)("pre",null,Object(p.b)("code",{parentName:"pre",className:"language-sh"},'curl -X PATCH -H "Content-Type: application/json" -d \'\n{\n  "name": "my-tf-mnist-template",\n  "author": "author-new",\n  "description": "This is a template to run tf-mnist",\n  "parameters": [{\n      "name": "learning_rate",\n      "value": 0.1,\n      "required": true,\n      "description": "This is learning_rate of training."\n    },\n    {\n      "name": "batch_size",\n      "value": 150,\n      "required": true,\n      "description": "This is batch_size of training."\n    },\n    {\n      "name": "experiment_name",\n      "value": "tf-mnist1",\n      "required": true,\n      "description": "the name of experiment."\n    }\n  ],\n  "experimentSpec": {\n    "meta": {\n      "cmd": "python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate={{learning_rate}} --batch_size={{batch_size}}",\n      "name": "{{experiment_name}}",\n      "envVars": {\n        "ENV1": "ENV1"\n      },\n      "framework": "TensorFlow",\n      "namespace": "default"\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=1024M"\n      }\n    },\n    "environment": {\n      "image": "apache/submarine:tf-mnist-with-summaries-1.0"\n    }\n  }\n}\n\' http://127.0.0.1:32080/api/v1/template/my-tf-mnist-template\n')),Object(p.b)("blockquote",null,Object(p.b)("p",{parentName:"blockquote"},'"description", "parameters", "experimentSpec", "author" etc can be updated using this API.\n"name" of experiment template is not supported.')),Object(p.b)("h3",{id:"delete-template"},"Delete template"),Object(p.b)("p",null,Object(p.b)("inlineCode",{parentName:"p"},"GET /api/v1/template/{name}")),Object(p.b)("p",null,Object(p.b)("strong",{parentName:"p"},"Example Request:")),Object(p.b)("pre",null,Object(p.b)("code",{parentName:"pre",className:"language-sh"},"curl -X DELETE http://127.0.0.1:32080/api/v1/template/my-tf-mnist-template\n")),Object(p.b)("h3",{id:"use-template-to-create-a-experiment"},"Use template to create a experiment"),Object(p.b)("p",null,Object(p.b)("inlineCode",{parentName:"p"},"POST /api/v1/experiment/{template_name}")),Object(p.b)("p",null,Object(p.b)("strong",{parentName:"p"},"Example Request:")),Object(p.b)("pre",null,Object(p.b)("code",{parentName:"pre",className:"language-sh"},'curl -X POST -H "Content-Type: application/json" -d \'\n{\n    "name": "tf-mnist",\n    "params": {\n        "learning_rate":"0.01",\n        "batch_size":"150",\n        "experiment_name":"newexperiment1"\n    }\n}\n\' http://127.0.0.1:32080/api/v1/experiment/my-tf-mnist-template\n')))}s.isMDXComponent=!0}}]);
\ No newline at end of file
diff --git a/4f73ab67.91bf3490.js b/4f73ab67.91bf3490.js
new file mode 100644
index 0000000..a14b401
--- /dev/null
+++ b/4f73ab67.91bf3490.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[32],{194:function(e,t,n){"use strict";n.d(t,"a",(function(){return b})),n.d(t,"b",(function(){return h}));var r=n(0),a=n.n(r);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?c(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):c(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var d=a.a.createContext({}),l=function(e){var t=a.a.useContext(d),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},b=function(e){var t=l(e.components);return a.a.createElement(d.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},p=a.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,c=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),b=l(n),p=r,h=b["".concat(c,".").concat(p)]||b[p]||u[p]||o;return n?a.a.createElement(h,i(i({ref:t},d),{},{components:n})):a.a.createElement(h,i({ref:t},d))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,c=new Array(o);c[0]=p;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i.mdxType="string"==typeof e?e:r,c[1]=i;for(var d=2;d<o;d++)c[d]=n[d];return a.a.createElement.apply(null,c)}return a.a.createElement.apply(null,n)}p.displayName="MDXCreateElement"},217:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/kind-dashboard-96b734dca17dd1d6043efad54f4c4725.png"},99:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return c})),n.d(t,"metadata",(function(){return i})),n.d(t,"toc",(function(){return s})),n.d(t,"default",(function(){return l}));var r=n(3),a=n(7),o=(n(0),n(194)),c={title:"Setup a Kubernetes cluster using KinD"},i={unversionedId:"gettingStarted/kind",id:"gettingStarted/kind",isDocsHomePage:!1,title:"Setup a Kubernetes cluster using KinD",description:"\x3c!--",source:"@site/docs/gettingStarted/kind.md",slug:"/gettingStarted/kind",permalink:"/docs/next/gettingStarted/kind",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/gettingStarted/kind.md",version:"current"},s=[{value:"Create Kubernetes cluster with KinD",id:"create-kubernetes-cluster-with-kind",children:[]},{value:"Kubernetes Dashboard (optional)",id:"kubernetes-dashboard-optional",children:[{value:"Deploy",id:"deploy",children:[]},{value:"Create RBAC",id:"create-rbac",children:[]},{value:"Get access token (optional)",id:"get-access-token-optional",children:[]},{value:"Start dashboard service",id:"start-dashboard-service",children:[]}]}],d={toc:s};function l(e){var t=e.components,c=Object(a.a)(e,["components"]);return Object(o.b)("wrapper",Object(r.a)({},d,c,{components:t,mdxType:"MDXLayout"}),Object(o.b)("h2",{id:"create-kubernetes-cluster-with-kind"},"Create Kubernetes cluster with KinD"),Object(o.b)("p",null,"We recommend users developing Submarine with minikube. However, ",Object(o.b)("a",{parentName:"p",href:"https://kind.sigs.k8s.io/"},Object(o.b)("inlineCode",{parentName:"a"},"KinD"))," is also an option to setup a Kubernetes cluster on your local machine."),Object(o.b)("p",null,"Run the following command, and specify the KinD version and Kubernetes version ",Object(o.b)("a",{parentName:"p",href:"../devDocs/Dependencies"},Object(o.b)("inlineCode",{parentName:"a"},"here")),"."),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-bash"},"# Download the specific version of KinD (must >= v0.6.0)\nexport KIND_VERSION=v0.11.1\ncurl -Lo ./kind https://github.com/kubernetes-sigs/kind/releases/download/${KIND_VERSION}/kind-linux-amd64\n# Make the binary executable\nchmod +x ./kind\n# Move the binary to your executable path\nsudo mv ./kind /usr/local/bin/\n# Create cluster with specific version of kubernetes\nexport KUBE_VERSION=v1.15.12\nkind create cluster --image kindest/node:${KUBE_VERSION}\n")),Object(o.b)("h2",{id:"kubernetes-dashboard-optional"},"Kubernetes Dashboard (optional)"),Object(o.b)("h3",{id:"deploy"},"Deploy"),Object(o.b)("p",null,"To deploy Dashboard, execute the following command:"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta8/aio/deploy/recommended.yaml\n")),Object(o.b)("h3",{id:"create-rbac"},"Create RBAC"),Object(o.b)("p",null,"Run the following commands to grant the cluster access permission of dashboard:"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"kubectl create serviceaccount dashboard-admin-sa\nkubectl create clusterrolebinding dashboard-admin-sa --clusterrole=cluster-admin --serviceaccount=default:dashboard-admin-sa\n")),Object(o.b)("h3",{id:"get-access-token-optional"},"Get access token (optional)"),Object(o.b)("p",null,"If you want to use the token to login the dashboard, run the following commands to get key:"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"kubectl get secrets\n# select the right dashboard-admin-sa-token to describe the secret\nkubectl describe secret dashboard-admin-sa-token-6nhkx\n")),Object(o.b)("h3",{id:"start-dashboard-service"},"Start dashboard service"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"kubectl proxy\n")),Object(o.b)("p",null,"Now access Dashboard at:"),Object(o.b)("blockquote",null,Object(o.b)("p",{parentName:"blockquote"},"http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/")),Object(o.b)("p",null,"Dashboard screenshot:"),Object(o.b)("p",null,Object(o.b)("img",{src:n(217).default})))}l.isMDXComponent=!0}}]);
\ No newline at end of file
diff --git a/4f73ab67.fb11b96c.js b/4f73ab67.fb11b96c.js
deleted file mode 100644
index 76ae8f0..0000000
--- a/4f73ab67.fb11b96c.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[34],{101:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return c})),n.d(t,"metadata",(function(){return i})),n.d(t,"toc",(function(){return s})),n.d(t,"default",(function(){return l}));var r=n(3),a=n(7),o=(n(0),n(209)),c={title:"Setup a Kubernetes cluster using KinD"},i={unversionedId:"gettingStarted/kind",id:"gettingStarted/kind",isDocsHomePage:!1,title:"Setup a Kubernetes cluster using KinD",description:"\x3c!--",source:"@site/docs/gettingStarted/kind.md",slug:"/gettingStarted/kind",permalink:"/docs/next/gettingStarted/kind",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/gettingStarted/kind.md",version:"current"},s=[{value:"Create Kubernetes cluster with KinD",id:"create-kubernetes-cluster-with-kind",children:[]},{value:"Kubernetes Dashboard (optional)",id:"kubernetes-dashboard-optional",children:[{value:"Deploy",id:"deploy",children:[]},{value:"Create RBAC",id:"create-rbac",children:[]},{value:"Get access token (optional)",id:"get-access-token-optional",children:[]},{value:"Start dashboard service",id:"start-dashboard-service",children:[]}]}],d={toc:s};function l(e){var t=e.components,c=Object(a.a)(e,["components"]);return Object(o.b)("wrapper",Object(r.a)({},d,c,{components:t,mdxType:"MDXLayout"}),Object(o.b)("h2",{id:"create-kubernetes-cluster-with-kind"},"Create Kubernetes cluster with KinD"),Object(o.b)("p",null,"We recommend users developing Submarine with minikube. However, ",Object(o.b)("a",{parentName:"p",href:"https://kind.sigs.k8s.io/"},Object(o.b)("inlineCode",{parentName:"a"},"KinD"))," is also an option to setup a Kubernetes cluster on your local machine."),Object(o.b)("p",null,"Run the following command, and specify the KinD version and Kubernetes version ",Object(o.b)("a",{parentName:"p",href:"../devDocs/Dependencies"},Object(o.b)("inlineCode",{parentName:"a"},"here")),"."),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-bash"},"# Download the specific version of KinD (must >= v0.6.0)\nexport KIND_VERSION=v0.11.1\ncurl -Lo ./kind https://github.com/kubernetes-sigs/kind/releases/download/${KIND_VERSION}/kind-linux-amd64\n# Make the binary executable\nchmod +x ./kind\n# Move the binary to your executable path\nsudo mv ./kind /usr/local/bin/\n# Create cluster with specific version of kubernetes\nexport KUBE_VERSION=v1.15.12\nkind create cluster --image kindest/node:${KUBE_VERSION}\n")),Object(o.b)("h2",{id:"kubernetes-dashboard-optional"},"Kubernetes Dashboard (optional)"),Object(o.b)("h3",{id:"deploy"},"Deploy"),Object(o.b)("p",null,"To deploy Dashboard, execute the following command:"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta8/aio/deploy/recommended.yaml\n")),Object(o.b)("h3",{id:"create-rbac"},"Create RBAC"),Object(o.b)("p",null,"Run the following commands to grant the cluster access permission of dashboard:"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"kubectl create serviceaccount dashboard-admin-sa\nkubectl create clusterrolebinding dashboard-admin-sa --clusterrole=cluster-admin --serviceaccount=default:dashboard-admin-sa\n")),Object(o.b)("h3",{id:"get-access-token-optional"},"Get access token (optional)"),Object(o.b)("p",null,"If you want to use the token to login the dashboard, run the following commands to get key:"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"kubectl get secrets\n# select the right dashboard-admin-sa-token to describe the secret\nkubectl describe secret dashboard-admin-sa-token-6nhkx\n")),Object(o.b)("h3",{id:"start-dashboard-service"},"Start dashboard service"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"kubectl proxy\n")),Object(o.b)("p",null,"Now access Dashboard at:"),Object(o.b)("blockquote",null,Object(o.b)("p",{parentName:"blockquote"},"http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/")),Object(o.b)("p",null,"Dashboard screenshot:"),Object(o.b)("p",null,Object(o.b)("img",{src:n(239).default})))}l.isMDXComponent=!0},209:function(e,t,n){"use strict";n.d(t,"a",(function(){return b})),n.d(t,"b",(function(){return h}));var r=n(0),a=n.n(r);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?c(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):c(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var d=a.a.createContext({}),l=function(e){var t=a.a.useContext(d),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},b=function(e){var t=l(e.components);return a.a.createElement(d.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},p=a.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,c=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),b=l(n),p=r,h=b["".concat(c,".").concat(p)]||b[p]||u[p]||o;return n?a.a.createElement(h,i(i({ref:t},d),{},{components:n})):a.a.createElement(h,i({ref:t},d))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,c=new Array(o);c[0]=p;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i.mdxType="string"==typeof e?e:r,c[1]=i;for(var d=2;d<o;d++)c[d]=n[d];return a.a.createElement.apply(null,c)}return a.a.createElement.apply(null,n)}p.displayName="MDXCreateElement"},239:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/kind-dashboard-96b734dca17dd1d6043efad54f4c4725.png"}}]);
\ No newline at end of file
diff --git a/5065a48c.64a509bf.js b/5065a48c.59914f6c.js
similarity index 95%
rename from 5065a48c.64a509bf.js
rename to 5065a48c.59914f6c.js
index efba40f..26b6633 100644
--- a/5065a48c.64a509bf.js
+++ b/5065a48c.59914f6c.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[35],{102:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return o})),n.d(t,"metadata",(function(){return s})),n.d(t,"toc",(function(){return c})),n.d(t,"default",(function(){return p}));var r=n(3),i=n(7),a=(n(0),n(209)),o={title:"Security Implementation"},s={unversionedId:"designDocs/wip-designs/security-implementation",id:"version-0.6.0/designDocs/wip-designs/security-implementation",isDocsHomePage:!1,title:"Security Implementation",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/designDocs/wip-designs/security-implementation.md",slug:"/designDocs/wip-designs/security-implementation",permalink:"/docs/designDocs/wip-designs/security-implementation",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/designDocs/wip-designs/security-implementation.md",version:"0.6.0",sidebar:"docs",previous:{title:"Cluster Server Design - High-Availability",permalink:"/docs/designDocs/wip-designs/submarine-clusterServer"}},c=[{value:"Handle User&#39;s Credential",id:"handle-users-credential",children:[]}],l={toc:c};function p(e){var t=e.components,n=Object(i.a)(e,["components"]);return Object(a.b)("wrapper",Object(r.a)({},l,n,{components:t,mdxType:"MDXLayout"}),Object(a.b)("div",{className:"admonition admonition-warning alert alert--danger"},Object(a.b)("div",{parentName:"div",className:"admonition-heading"},Object(a.b)("h5",{parentName:"div"},Object(a.b)("span",{parentName:"h5",className:"admonition-icon"},Object(a.b)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},Object(a.b)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"warning")),Object(a.b)("div",{parentName:"div",className:"admonition-content"},Object(a.b)("p",{parentName:"div"},"Please note that this design doc is working-in-progress and need more works to complete. "))),Object(a.b)("h2",{id:"handle-users-credential"},"Handle User's Credential"),Object(a.b)("p",null,"Users credential includes Kerberoes Keytabs, Docker registry credentials, Github ssh-keys, etc."),Object(a.b)("p",null,"User's credential must be stored securitely, for example, via KeyCloak or K8s Secrets."),Object(a.b)("p",null,"(More details TODO)"))}p.isMDXComponent=!0},209:function(e,t,n){"use strict";n.d(t,"a",(function(){return d})),n.d(t,"b",(function(){return b}));var r=n(0),i=n.n(r);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function c(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n,r,i={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var l=i.a.createContext({}),p=function(e){var t=i.a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},d=function(e){var t=p(e.components);return i.a.createElement(l.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return i.a.createElement(i.a.Fragment,{},t)}},m=i.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,o=e.parentName,l=c(e,["components","mdxType","originalType","parentName"]),d=p(n),m=r,b=d["".concat(o,".").concat(m)]||d[m]||u[m]||a;return n?i.a.createElement(b,s(s({ref:t},l),{},{components:n})):i.a.createElement(b,s({ref:t},l))}));function b(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,o=new Array(a);o[0]=m;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s.mdxType="string"==typeof e?e:r,o[1]=s;for(var l=2;l<a;l++)o[l]=n[l];return i.a.createElement.apply(null,o)}return i.a.createElement.apply(null,n)}m.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[33],{100:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return o})),n.d(t,"metadata",(function(){return s})),n.d(t,"toc",(function(){return c})),n.d(t,"default",(function(){return p}));var r=n(3),i=n(7),a=(n(0),n(194)),o={title:"Security Implementation"},s={unversionedId:"designDocs/wip-designs/security-implementation",id:"version-0.6.0/designDocs/wip-designs/security-implementation",isDocsHomePage:!1,title:"Security Implementation",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/designDocs/wip-designs/security-implementation.md",slug:"/designDocs/wip-designs/security-implementation",permalink:"/docs/designDocs/wip-designs/security-implementation",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/designDocs/wip-designs/security-implementation.md",version:"0.6.0",sidebar:"docs",previous:{title:"Cluster Server Design - High-Availability",permalink:"/docs/designDocs/wip-designs/submarine-clusterServer"}},c=[{value:"Handle User&#39;s Credential",id:"handle-users-credential",children:[]}],l={toc:c};function p(e){var t=e.components,n=Object(i.a)(e,["components"]);return Object(a.b)("wrapper",Object(r.a)({},l,n,{components:t,mdxType:"MDXLayout"}),Object(a.b)("div",{className:"admonition admonition-warning alert alert--danger"},Object(a.b)("div",{parentName:"div",className:"admonition-heading"},Object(a.b)("h5",{parentName:"div"},Object(a.b)("span",{parentName:"h5",className:"admonition-icon"},Object(a.b)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},Object(a.b)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"warning")),Object(a.b)("div",{parentName:"div",className:"admonition-content"},Object(a.b)("p",{parentName:"div"},"Please note that this design doc is working-in-progress and need more works to complete. "))),Object(a.b)("h2",{id:"handle-users-credential"},"Handle User's Credential"),Object(a.b)("p",null,"Users credential includes Kerberoes Keytabs, Docker registry credentials, Github ssh-keys, etc."),Object(a.b)("p",null,"User's credential must be stored securitely, for example, via KeyCloak or K8s Secrets."),Object(a.b)("p",null,"(More details TODO)"))}p.isMDXComponent=!0},194:function(e,t,n){"use strict";n.d(t,"a",(function(){return d})),n.d(t,"b",(function(){return b}));var r=n(0),i=n.n(r);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function c(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n,r,i={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var l=i.a.createContext({}),p=function(e){var t=i.a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},d=function(e){var t=p(e.components);return i.a.createElement(l.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return i.a.createElement(i.a.Fragment,{},t)}},m=i.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,o=e.parentName,l=c(e,["components","mdxType","originalType","parentName"]),d=p(n),m=r,b=d["".concat(o,".").concat(m)]||d[m]||u[m]||a;return n?i.a.createElement(b,s(s({ref:t},l),{},{components:n})):i.a.createElement(b,s({ref:t},l))}));function b(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,o=new Array(a);o[0]=m;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s.mdxType="string"==typeof e?e:r,o[1]=s;for(var l=2;l<a;l++)o[l]=n[l];return i.a.createElement.apply(null,o)}return i.a.createElement.apply(null,n)}m.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/51b2b2c4.18ceaaaa.js b/51b2b2c4.ccc68cb9.js
similarity index 97%
rename from 51b2b2c4.18ceaaaa.js
rename to 51b2b2c4.ccc68cb9.js
index f8a556a..8619de3 100644
--- a/51b2b2c4.18ceaaaa.js
+++ b/51b2b2c4.ccc68cb9.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[36],{103:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return i})),n.d(t,"metadata",(function(){return c})),n.d(t,"toc",(function(){return l})),n.d(t,"default",(function(){return s}));var r=n(3),o=n(7),a=(n(0),n(209)),i={title:"Docker Images for PyTorch"},c={unversionedId:"userDocs/yarn/WriteDockerfilePT",id:"version-0.6.0/userDocs/yarn/WriteDockerfilePT",isDocsHomePage:!1,title:"Docker Images for PyTorch",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/userDocs/yarn/WriteDockerfilePT.md",slug:"/userDocs/yarn/WriteDockerfilePT",permalink:"/docs/userDocs/yarn/WriteDockerfilePT",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/yarn/WriteDockerfilePT.md",version:"0.6.0"},l=[{value:"How to create docker images to run PyTorch on YARN",id:"how-to-create-docker-images-to-run-pytorch-on-yarn",children:[]},{value:"Use examples to build your own PyTorch docker images",id:"use-examples-to-build-your-own-pytorch-docker-images",children:[]},{value:"Build Docker images",id:"build-docker-images",children:[{value:"Manually build Docker image:",id:"manually-build-docker-image",children:[]},{value:"Use prebuilt images",id:"use-prebuilt-images",children:[]}]}],p={toc:l};function s(e){var t=e.components,n=Object(o.a)(e,["components"]);return Object(a.b)("wrapper",Object(r.a)({},p,n,{components:t,mdxType:"MDXLayout"}),Object(a.b)("h2",{id:"how-to-create-docker-images-to-run-pytorch-on-yarn"},"How to create docker images to run PyTorch on YARN"),Object(a.b)("p",null,"Dockerfile to run PyTorch on YARN needs two parts:"),Object(a.b)("p",null,Object(a.b)("strong",{parentName:"p"},"Base libraries which PyTorch depends on")),Object(a.b)("p",null,"1) OS base image, for example ",Object(a.b)("inlineCode",{parentName:"p"},"ubuntu:18.04")),Object(a.b)("p",null,"2) PyTorch dependent libraries and packages. For example ",Object(a.b)("inlineCode",{parentName:"p"},"python"),", ",Object(a.b)("inlineCode",{parentName:"p"},"scipy"),". For GPU support, you also need ",Object(a.b)("inlineCode",{parentName:"p"},"cuda"),", ",Object(a.b)("inlineCode",{parentName:"p"},"cudnn"),", etc."),Object(a.b)("p",null,"3) PyTorch package."),Object(a.b)("p",null,Object(a.b)("strong",{parentName:"p"},"Libraries to access HDFS")),Object(a.b)("p",null,"1) JDK"),Object(a.b)("p",null,"2) Hadoop"),Object(a.b)("p",null,"Here's an example of a base image (with GPU support) to install PyTorch:"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre",className:"language-shell"},'FROM nvidia/cuda:10.0-cudnn7-devel-ubuntu18.04\nARG PYTHON_VERSION=3.6\nRUN apt-get update && apt-get install -y --no-install-recommends \\\n         build-essential \\\n         cmake \\\n         git \\\n         curl \\\n         vim \\\n         ca-certificates \\\n         libjpeg-dev \\\n         libpng-dev \\\n         wget &&\\\n     rm -rf /var/lib/apt/lists/*\n\n\nRUN curl -o ~/miniconda.sh -O  https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh  && \\\n     chmod +x ~/miniconda.sh && \\\n     ~/miniconda.sh -b -p /opt/conda && \\\n     rm ~/miniconda.sh && \\\n     /opt/conda/bin/conda install -y python=$PYTHON_VERSION numpy pyyaml scipy ipython mkl mkl-include cython typing && \\\n     /opt/conda/bin/conda install -y -c pytorch magma-cuda100 && \\\n     /opt/conda/bin/conda clean -ya\nENV PATH /opt/conda/bin:$PATH\nRUN pip install ninja\n# This must be done before pip so that requirements.txt is available\nWORKDIR /opt/pytorch\nRUN git clone https://github.com/pytorch/pytorch.git\nWORKDIR pytorch\nRUN git submodule update --init\nRUN TORCH_CUDA_ARCH_LIST="3.5 5.2 6.0 6.1 7.0+PTX" TORCH_NVCC_FLAGS="-Xfatbin -compress-all" \\\n    CMAKE_PREFIX_PATH="$(dirname $(which conda))/../" \\\n    pip install -v .\n\nWORKDIR /opt/pytorch\nRUN git clone https://github.com/pytorch/vision.git && cd vision && pip install -v .\n\n')),Object(a.b)("p",null,"On top of above image, add files, install packages to access HDFS"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre",className:"language-shell"},'RUN apt-get update && apt-get install -y openjdk-8-jdk wget\n# Install hadoop\nENV HADOOP_VERSION="2.9.2"\nRUN wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-${HADOOP_VERSION}/hadoop-${HADOOP_VERSION}.tar.gz\nRUN tar zxf hadoop-${HADOOP_VERSION}.tar.gz\nRUN ln -s hadoop-${HADOOP_VERSION} hadoop-current\nRUN rm hadoop-${HADOOP_VERSION}.tar.gz\n')),Object(a.b)("p",null,"Build and push to your own docker registry: Use ",Object(a.b)("inlineCode",{parentName:"p"},"docker build ... ")," and ",Object(a.b)("inlineCode",{parentName:"p"},"docker push ...")," to finish this step."),Object(a.b)("h2",{id:"use-examples-to-build-your-own-pytorch-docker-images"},"Use examples to build your own PyTorch docker images"),Object(a.b)("p",null,"We provided some example Dockerfiles for you to build your own PyTorch docker images."),Object(a.b)("p",null,"For latest PyTorch"),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},Object(a.b)("em",{parentName:"li"},"docker/pytorch/base/ubuntu-18.04/Dockerfile.gpu.pytorch_latest"),": Latest Pytorch that supports GPU, which is prebuilt to CUDA10."),Object(a.b)("li",{parentName:"ul"},Object(a.b)("em",{parentName:"li"},"docker/pytorch/with-cifar10-models/ubuntu-18.04/Dockerfile.gpu.pytorch_latest"),": Latest Pytorch that GPU, which is prebuilt to CUDA10, with models.")),Object(a.b)("h2",{id:"build-docker-images"},"Build Docker images"),Object(a.b)("h3",{id:"manually-build-docker-image"},"Manually build Docker image:"),Object(a.b)("p",null,"Under ",Object(a.b)("inlineCode",{parentName:"p"},"docker/pytorch")," directory, run ",Object(a.b)("inlineCode",{parentName:"p"},"build-all.sh")," to build all Docker images. This command will build the following Docker images:"),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},Object(a.b)("inlineCode",{parentName:"li"},"pytorch-latest-gpu-base:0.0.1")," for base Docker image which includes Hadoop, PyTorch, GPU base libraries."),Object(a.b)("li",{parentName:"ul"},Object(a.b)("inlineCode",{parentName:"li"},"pytorch-latest-gpu:0.0.1")," which includes cifar10 model as well")),Object(a.b)("h3",{id:"use-prebuilt-images"},"Use prebuilt images"),Object(a.b)("p",null,"(No liability)\nYou can also use prebuilt images for convenience:"),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},"hadoopsubmarine/pytorch-latest-gpu-base:0.0.1")))}s.isMDXComponent=!0},209:function(e,t,n){"use strict";n.d(t,"a",(function(){return u})),n.d(t,"b",(function(){return m}));var r=n(0),o=n.n(r);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function c(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var p=o.a.createContext({}),s=function(e){var t=o.a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):c(c({},t),e)),n},u=function(e){var t=s(e.components);return o.a.createElement(p.Provider,{value:t},e.children)},b={inlineCode:"code",wrapper:function(e){var t=e.children;return o.a.createElement(o.a.Fragment,{},t)}},d=o.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,i=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),u=s(n),d=r,m=u["".concat(i,".").concat(d)]||u[d]||b[d]||a;return n?o.a.createElement(m,c(c({ref:t},p),{},{components:n})):o.a.createElement(m,c({ref:t},p))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,i=new Array(a);i[0]=d;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c.mdxType="string"==typeof e?e:r,i[1]=c;for(var p=2;p<a;p++)i[p]=n[p];return o.a.createElement.apply(null,i)}return o.a.createElement.apply(null,n)}d.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[34],{101:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return i})),n.d(t,"metadata",(function(){return c})),n.d(t,"toc",(function(){return l})),n.d(t,"default",(function(){return s}));var r=n(3),o=n(7),a=(n(0),n(194)),i={title:"Docker Images for PyTorch"},c={unversionedId:"userDocs/yarn/WriteDockerfilePT",id:"version-0.6.0/userDocs/yarn/WriteDockerfilePT",isDocsHomePage:!1,title:"Docker Images for PyTorch",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/userDocs/yarn/WriteDockerfilePT.md",slug:"/userDocs/yarn/WriteDockerfilePT",permalink:"/docs/userDocs/yarn/WriteDockerfilePT",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/yarn/WriteDockerfilePT.md",version:"0.6.0"},l=[{value:"How to create docker images to run PyTorch on YARN",id:"how-to-create-docker-images-to-run-pytorch-on-yarn",children:[]},{value:"Use examples to build your own PyTorch docker images",id:"use-examples-to-build-your-own-pytorch-docker-images",children:[]},{value:"Build Docker images",id:"build-docker-images",children:[{value:"Manually build Docker image:",id:"manually-build-docker-image",children:[]},{value:"Use prebuilt images",id:"use-prebuilt-images",children:[]}]}],p={toc:l};function s(e){var t=e.components,n=Object(o.a)(e,["components"]);return Object(a.b)("wrapper",Object(r.a)({},p,n,{components:t,mdxType:"MDXLayout"}),Object(a.b)("h2",{id:"how-to-create-docker-images-to-run-pytorch-on-yarn"},"How to create docker images to run PyTorch on YARN"),Object(a.b)("p",null,"Dockerfile to run PyTorch on YARN needs two parts:"),Object(a.b)("p",null,Object(a.b)("strong",{parentName:"p"},"Base libraries which PyTorch depends on")),Object(a.b)("p",null,"1) OS base image, for example ",Object(a.b)("inlineCode",{parentName:"p"},"ubuntu:18.04")),Object(a.b)("p",null,"2) PyTorch dependent libraries and packages. For example ",Object(a.b)("inlineCode",{parentName:"p"},"python"),", ",Object(a.b)("inlineCode",{parentName:"p"},"scipy"),". For GPU support, you also need ",Object(a.b)("inlineCode",{parentName:"p"},"cuda"),", ",Object(a.b)("inlineCode",{parentName:"p"},"cudnn"),", etc."),Object(a.b)("p",null,"3) PyTorch package."),Object(a.b)("p",null,Object(a.b)("strong",{parentName:"p"},"Libraries to access HDFS")),Object(a.b)("p",null,"1) JDK"),Object(a.b)("p",null,"2) Hadoop"),Object(a.b)("p",null,"Here's an example of a base image (with GPU support) to install PyTorch:"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre",className:"language-shell"},'FROM nvidia/cuda:10.0-cudnn7-devel-ubuntu18.04\nARG PYTHON_VERSION=3.6\nRUN apt-get update && apt-get install -y --no-install-recommends \\\n         build-essential \\\n         cmake \\\n         git \\\n         curl \\\n         vim \\\n         ca-certificates \\\n         libjpeg-dev \\\n         libpng-dev \\\n         wget &&\\\n     rm -rf /var/lib/apt/lists/*\n\n\nRUN curl -o ~/miniconda.sh -O  https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh  && \\\n     chmod +x ~/miniconda.sh && \\\n     ~/miniconda.sh -b -p /opt/conda && \\\n     rm ~/miniconda.sh && \\\n     /opt/conda/bin/conda install -y python=$PYTHON_VERSION numpy pyyaml scipy ipython mkl mkl-include cython typing && \\\n     /opt/conda/bin/conda install -y -c pytorch magma-cuda100 && \\\n     /opt/conda/bin/conda clean -ya\nENV PATH /opt/conda/bin:$PATH\nRUN pip install ninja\n# This must be done before pip so that requirements.txt is available\nWORKDIR /opt/pytorch\nRUN git clone https://github.com/pytorch/pytorch.git\nWORKDIR pytorch\nRUN git submodule update --init\nRUN TORCH_CUDA_ARCH_LIST="3.5 5.2 6.0 6.1 7.0+PTX" TORCH_NVCC_FLAGS="-Xfatbin -compress-all" \\\n    CMAKE_PREFIX_PATH="$(dirname $(which conda))/../" \\\n    pip install -v .\n\nWORKDIR /opt/pytorch\nRUN git clone https://github.com/pytorch/vision.git && cd vision && pip install -v .\n\n')),Object(a.b)("p",null,"On top of above image, add files, install packages to access HDFS"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre",className:"language-shell"},'RUN apt-get update && apt-get install -y openjdk-8-jdk wget\n# Install hadoop\nENV HADOOP_VERSION="2.9.2"\nRUN wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-${HADOOP_VERSION}/hadoop-${HADOOP_VERSION}.tar.gz\nRUN tar zxf hadoop-${HADOOP_VERSION}.tar.gz\nRUN ln -s hadoop-${HADOOP_VERSION} hadoop-current\nRUN rm hadoop-${HADOOP_VERSION}.tar.gz\n')),Object(a.b)("p",null,"Build and push to your own docker registry: Use ",Object(a.b)("inlineCode",{parentName:"p"},"docker build ... ")," and ",Object(a.b)("inlineCode",{parentName:"p"},"docker push ...")," to finish this step."),Object(a.b)("h2",{id:"use-examples-to-build-your-own-pytorch-docker-images"},"Use examples to build your own PyTorch docker images"),Object(a.b)("p",null,"We provided some example Dockerfiles for you to build your own PyTorch docker images."),Object(a.b)("p",null,"For latest PyTorch"),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},Object(a.b)("em",{parentName:"li"},"docker/pytorch/base/ubuntu-18.04/Dockerfile.gpu.pytorch_latest"),": Latest Pytorch that supports GPU, which is prebuilt to CUDA10."),Object(a.b)("li",{parentName:"ul"},Object(a.b)("em",{parentName:"li"},"docker/pytorch/with-cifar10-models/ubuntu-18.04/Dockerfile.gpu.pytorch_latest"),": Latest Pytorch that GPU, which is prebuilt to CUDA10, with models.")),Object(a.b)("h2",{id:"build-docker-images"},"Build Docker images"),Object(a.b)("h3",{id:"manually-build-docker-image"},"Manually build Docker image:"),Object(a.b)("p",null,"Under ",Object(a.b)("inlineCode",{parentName:"p"},"docker/pytorch")," directory, run ",Object(a.b)("inlineCode",{parentName:"p"},"build-all.sh")," to build all Docker images. This command will build the following Docker images:"),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},Object(a.b)("inlineCode",{parentName:"li"},"pytorch-latest-gpu-base:0.0.1")," for base Docker image which includes Hadoop, PyTorch, GPU base libraries."),Object(a.b)("li",{parentName:"ul"},Object(a.b)("inlineCode",{parentName:"li"},"pytorch-latest-gpu:0.0.1")," which includes cifar10 model as well")),Object(a.b)("h3",{id:"use-prebuilt-images"},"Use prebuilt images"),Object(a.b)("p",null,"(No liability)\nYou can also use prebuilt images for convenience:"),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},"hadoopsubmarine/pytorch-latest-gpu-base:0.0.1")))}s.isMDXComponent=!0},194:function(e,t,n){"use strict";n.d(t,"a",(function(){return u})),n.d(t,"b",(function(){return m}));var r=n(0),o=n.n(r);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function c(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var p=o.a.createContext({}),s=function(e){var t=o.a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):c(c({},t),e)),n},u=function(e){var t=s(e.components);return o.a.createElement(p.Provider,{value:t},e.children)},b={inlineCode:"code",wrapper:function(e){var t=e.children;return o.a.createElement(o.a.Fragment,{},t)}},d=o.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,i=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),u=s(n),d=r,m=u["".concat(i,".").concat(d)]||u[d]||b[d]||a;return n?o.a.createElement(m,c(c({ref:t},p),{},{components:n})):o.a.createElement(m,c({ref:t},p))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,i=new Array(a);i[0]=d;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c.mdxType="string"==typeof e?e:r,i[1]=c;for(var p=2;p<a;p++)i[p]=n[p];return o.a.createElement.apply(null,i)}return o.a.createElement.apply(null,n)}d.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/538541c1.49274308.js b/538541c1.dded75d0.js
similarity index 98%
rename from 538541c1.49274308.js
rename to 538541c1.dded75d0.js
index d66e091..86313eb 100644
--- a/538541c1.49274308.js
+++ b/538541c1.dded75d0.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[37],{104:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return i})),n.d(t,"metadata",(function(){return l})),n.d(t,"toc",(function(){return s})),n.d(t,"default",(function(){return b}));var o=n(3),r=n(7),a=(n(0),n(209)),i={title:"Storage Implementation"},l={unversionedId:"designDocs/storage-implementation",id:"version-0.6.0/designDocs/storage-implementation",isDocsHomePage:!1,title:"Storage Implementation",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/designDocs/storage-implementation.md",slug:"/designDocs/storage-implementation",permalink:"/docs/designDocs/storage-implementation",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/designDocs/storage-implementation.md",version:"0.6.0",sidebar:"docs",previous:{title:"Notebook Implementation",permalink:"/docs/designDocs/notebook-implementation"},next:{title:"Submarine Server Implementation",permalink:"/docs/designDocs/submarine-server/architecture"}},s=[{value:"ML-related objects and their storages",id:"ml-related-objects-and-their-storages",children:[{value:"Implementation considerations for ML-related objects",id:"implementation-considerations-for-ml-related-objects",children:[]},{value:"Detailed discussions",id:"detailed-discussions",children:[]}]},{value:"System-related metrics/logs and their storages",id:"system-related-metricslogs-and-their-storages",children:[]},{value:"Attachable Volumes",id:"attachable-volumes",children:[]},{value:"In-scope / Out-of-scope",id:"in-scope--out-of-scope",children:[]}],c={toc:s};function b(e){var t=e.components,n=Object(r.a)(e,["components"]);return Object(a.b)("wrapper",Object(o.a)({},c,n,{components:t,mdxType:"MDXLayout"}),Object(a.b)("h2",{id:"ml-related-objects-and-their-storages"},"ML-related objects and their storages"),Object(a.b)("p",null,"First let's look at what user will interact for most of the time: "),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},"Notebook "),Object(a.b)("li",{parentName:"ul"},"Experiment"),Object(a.b)("li",{parentName:"ul"},"Model Servings")),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},"\n\n                              +---------+    +------------+\n                              |Logs     |<--+|Notebook    |\n      +----------+            +---------+    +------------+     +----------------+\n      |Trackings |                        <-+|Experiment  |<--+>|Model Artifacts |\n      +----------+     +-----------------+   +------------+     +----------------+\n      +----------+<---+|ML-related Metric|<--+Servings    |\n      |tf.events |     +-----------------+   +------------+\n      +----------+                                 ^              +-----------------+\n                                                   +              | Environments    |\n                                        +----------------------+  |                 |\n            +-----------------+         | Submarine Metastore  |  |  Dependencies   |\n            |Code             |         +----------------------+  |                 |\n            +-----------------+         |Experiment Meta       |  |   Docker Images |\n                                        +----------------------+  +-----------------+\n                                        |Model Store Meta      |\n                                        +----------------------+\n                                        |Model Serving Meta    |\n                                        +----------------------+\n                                        |Notebook meta         |\n                                        +----------------------+\n                                        |Experiment Templates  |\n                                        +----------------------+\n                                        |Environments Meta     |\n                                        +----------------------+\n")),Object(a.b)("p",null,"First of all, all the notebook-sessions / experiments / model-serving instances) are more or less interact with following storage objects:"),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},"Logs for these tasks for troubleshooting. "),Object(a.b)("li",{parentName:"ul"},"ML-related metrics such as loss, epoch, etc. (in contrast of system metrics such as CPU/memory usage, etc.)",Object(a.b)("ul",{parentName:"li"},Object(a.b)("li",{parentName:"ul"},"There're different types of ML-related metrics, for Tensorflow/pytorch, they can use tf.events and get visualizations on tensorboard. "),Object(a.b)("li",{parentName:"ul"},"Or they can use tracking APIs (such as Submarine tracking, mlflow tracking, etc.) to output customized tracking results for non TF/Pytorch workloads. "))),Object(a.b)("li",{parentName:"ul"},"Training jobs of experiment typically generate model artifacts (files) which need persisted, and both of notebook, model serving needs to load model artifacts from persistent storage. "),Object(a.b)("li",{parentName:"ul"},"There're various of meta information, such as experiment meta, model registry, model serving, notebook, experiment, environment, etc. We need be able to read these meta information back."),Object(a.b)("li",{parentName:"ul"},"We also have code for experiment (like training/batch-prediction), notebook (ipynb), and model servings."),Object(a.b)("li",{parentName:"ul"},"And notebook/experiments/model-serving need depend on environments (dependencies such as pip, and Docker Images).")),Object(a.b)("h3",{id:"implementation-considerations-for-ml-related-objects"},"Implementation considerations for ML-related objects"),Object(a.b)("table",null,Object(a.b)("thead",{parentName:"table"},Object(a.b)("tr",{parentName:"thead"},Object(a.b)("th",{parentName:"tr",align:null},"Object Type"),Object(a.b)("th",{parentName:"tr",align:null},"Characteristics"),Object(a.b)("th",{parentName:"tr",align:null},"Where to store"))),Object(a.b)("tbody",{parentName:"table"},Object(a.b)("tr",{parentName:"tbody"},Object(a.b)("td",{parentName:"tr",align:null},"Metrics: tf.events"),Object(a.b)("td",{parentName:"tr",align:null},"Time series data with k/v, appendable to file"),Object(a.b)("td",{parentName:"tr",align:null},"Local/EBS, HDFS, Cloud Blob Storage")),Object(a.b)("tr",{parentName:"tbody"},Object(a.b)("td",{parentName:"tr",align:null},"Metrics: other tracking metrics"),Object(a.b)("td",{parentName:"tr",align:null},"Time series data with k/v, appendable to file"),Object(a.b)("td",{parentName:"tr",align:null},"Local, HDFS, Cloud Blob Storage, Database")),Object(a.b)("tr",{parentName:"tbody"},Object(a.b)("td",{parentName:"tr",align:null},"Logs"),Object(a.b)("td",{parentName:"tr",align:null},"Large volumes, #files are potentially huge."),Object(a.b)("td",{parentName:"tr",align:null},"Local (temporary), HDFS (need aggregation), Cloud Blob Storage")),Object(a.b)("tr",{parentName:"tbody"},Object(a.b)("td",{parentName:"tr",align:null},"Submarine Metastore"),Object(a.b)("td",{parentName:"tr",align:null},"CRUD operations for small meta data."),Object(a.b)("td",{parentName:"tr",align:null},"Database")),Object(a.b)("tr",{parentName:"tbody"},Object(a.b)("td",{parentName:"tr",align:null},"Model Artifacts"),Object(a.b)("td",{parentName:"tr",align:null},"Size varies for model (from KBs to GBs). #files are potentially huge."),Object(a.b)("td",{parentName:"tr",align:null},"HDFS, Cloud Blob Storage")),Object(a.b)("tr",{parentName:"tbody"},Object(a.b)("td",{parentName:"tr",align:null},"Code"),Object(a.b)("td",{parentName:"tr",align:null},"Need version control. (Please find detailed discussions below for code storage and localization)"),Object(a.b)("td",{parentName:"tr",align:null},"Tarball on HDFS/Cloud Blog Storage, or Git")),Object(a.b)("tr",{parentName:"tbody"},Object(a.b)("td",{parentName:"tr",align:null},"Environment (Dependencies, Docker Image)"),Object(a.b)("td",{parentName:"tr",align:null}),Object(a.b)("td",{parentName:"tr",align:null},"Public/private environment repo (like Conda channel), Docker registry.")))),Object(a.b)("h3",{id:"detailed-discussions"},"Detailed discussions"),Object(a.b)("h4",{id:"store-code-for-experimentnotebookmodel-serving"},"Store code for experiment/notebook/model-serving"),Object(a.b)("p",null,"There're following ways to get experiment code: "),Object(a.b)("p",null,Object(a.b)("strong",{parentName:"p"},"1) Code is part of Git repo:")," (",Object(a.b)("strong",{parentName:"p"},Object(a.b)("em",{parentName:"strong"},Object(a.b)("u",null,"Recommended"))),")"),Object(a.b)("p",null,"This is our recommended approach, once code is part of Git, it will be stored in version control, any change will be tracked, and much easier for users to trace back what change triggered a new bug, etc."),Object(a.b)("p",null,Object(a.b)("strong",{parentName:"p"},"2) Code is part of Docker image:")," "),Object(a.b)("p",null,Object(a.b)("strong",{parentName:"p"},Object(a.b)("em",{parentName:"strong"},"This is an anti-pattern and we will NOT recommend you to use it")),", Docker image can be used to include ANYTHING, like dependencies, the code you will execute, or even data. But this doesn't mean you should do it. We recommend to use Docker image ONLY for libraries/dependencies."),Object(a.b)("p",null,"Making code to be part of Docker image makes hard to edit code (if you want to update a value in your Python file, you will have to recreate the Docker image, push it and rerun it)."),Object(a.b)("p",null,Object(a.b)("strong",{parentName:"p"},"3) Code is part of S3/HDFS/ABFS:")," "),Object(a.b)("p",null,"User may want to store their training code to a tarball on a shared storage. Submarine need to download code from remote storage to the launched container before running the code. "),Object(a.b)("h4",{id:"localization-of-experimentnotebookmodel-serving-code"},"Localization of experiment/notebook/model-serving code"),Object(a.b)("p",null,"To make user experiences keeps same across different environment, we will localize code to a same folder after the container is launched, preferably ",Object(a.b)("inlineCode",{parentName:"p"},"/code")),Object(a.b)("p",null,"For example, there's a git repo need to be synced up for an experiment/notebook/model-serving (example above):"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},'experiment: #Or notebook, model-serving\n       name: "abc",\n       environment: "team-default-ml-env"\n       ... (other fields)\n             code:\n           sync_mode: git\n           url: "https://foo.com/training-job.git" \n')),Object(a.b)("p",null,"After localize, ",Object(a.b)("inlineCode",{parentName:"p"},"training-job/")," will be placed under ",Object(a.b)("inlineCode",{parentName:"p"},"/code")," "),Object(a.b)("p",null,"When we running on K8s environment, we can use K8s's initContainer and emptyDir to do these things for us. K8s POD spec (generated by Submarine server instead of user, user should NEVER edit K8s spec, that's too unfriendly to data-scientists): "),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},'apiVersion: v1\nkind: Pod\nmetadata:\n  name: experiment-abc\nspec:\n  containers:\n  - name: experiment-task\n    image: training-job\n    volumeMounts:\n    - name: code-dir\n      mountPath: /code\n  initContainers:\n  - name: git-localize\n    image: git-sync\n    command: "git clone .. /code/"\n    volumeMounts:\n    - name: code-dir\n      mountPath: /code\n  volumes:\n  - name: code-dir\n    emptyDir: {}\n')),Object(a.b)("p",null,"The above K8s spec create a code-dir and mount it to ",Object(a.b)("inlineCode",{parentName:"p"},"/code")," to launched containers. The initContainer ",Object(a.b)("inlineCode",{parentName:"p"},"git-localize")," uses ",Object(a.b)("inlineCode",{parentName:"p"},"https://github.com/kubernetes/git-sync")," to do the sync up. (If other storages are used such as s3, we can use similar initContainer approach to download contents)"),Object(a.b)("h2",{id:"system-related-metricslogs-and-their-storages"},"System-related metrics/logs and their storages"),Object(a.b)("p",null,"Other than ML-related objects, we have system-related objects, including: "),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},"Daemon logs (like logs of Submarine server). "),Object(a.b)("li",{parentName:"ul"},"Logs for other dependency components (like Kubernetes logs when running on K8s). "),Object(a.b)("li",{parentName:"ul"},"System metrics (Physical resource usages by daemons, launched training containers, etc.). ")),Object(a.b)("p",null,"All these information should be handled by 3rd party system, such as Grafana, Prometheus, etc. And system admins are responsible to setup these infrastructures, dashboard. Users of submarine should NOT interact with system related metrics/logs. It is system admin's responsibility."),Object(a.b)("h2",{id:"attachable-volumes"},"Attachable Volumes"),Object(a.b)("p",null,"It is possible user has needs to have an attachable volume for their experiment / notebook, this is especially useful for notebook storage, since contents of notebook can be automatically saved, and it can be used as user's home folder. "),Object(a.b)("p",null,"Downside of attachable volume is, it is not versioned, even notebook is mainly used for adhoc exploring tasks, an unversioned notebook file can lead to maintenance issues in the future. "),Object(a.b)("p",null,"Since this is a common requirement, we can consider to support attachable volumes in Submarine in a long run, but with relatively lower priority."),Object(a.b)("h2",{id:"in-scope--out-of-scope"},"In-scope / Out-of-scope"),Object(a.b)("p",null," Describe what Submarine project should own and what Submarine project should NOT own."))}b.isMDXComponent=!0},209:function(e,t,n){"use strict";n.d(t,"a",(function(){return d})),n.d(t,"b",(function(){return u}));var o=n(0),r=n.n(o);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,o,r=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o<a.length;o++)n=a[o],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o<a.length;o++)n=a[o],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var c=r.a.createContext({}),b=function(e){var t=r.a.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},d=function(e){var t=b(e.components);return r.a.createElement(c.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},p=r.a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,i=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),d=b(n),p=o,u=d["".concat(i,".").concat(p)]||d[p]||m[p]||a;return n?r.a.createElement(u,l(l({ref:t},c),{},{components:n})):r.a.createElement(u,l({ref:t},c))}));function u(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,i=new Array(a);i[0]=p;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l.mdxType="string"==typeof e?e:o,i[1]=l;for(var c=2;c<a;c++)i[c]=n[c];return r.a.createElement.apply(null,i)}return r.a.createElement.apply(null,n)}p.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[35],{102:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return i})),n.d(t,"metadata",(function(){return l})),n.d(t,"toc",(function(){return s})),n.d(t,"default",(function(){return b}));var o=n(3),r=n(7),a=(n(0),n(194)),i={title:"Storage Implementation"},l={unversionedId:"designDocs/storage-implementation",id:"version-0.6.0/designDocs/storage-implementation",isDocsHomePage:!1,title:"Storage Implementation",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/designDocs/storage-implementation.md",slug:"/designDocs/storage-implementation",permalink:"/docs/designDocs/storage-implementation",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/designDocs/storage-implementation.md",version:"0.6.0",sidebar:"docs",previous:{title:"Notebook Implementation",permalink:"/docs/designDocs/notebook-implementation"},next:{title:"Submarine Server Implementation",permalink:"/docs/designDocs/submarine-server/architecture"}},s=[{value:"ML-related objects and their storages",id:"ml-related-objects-and-their-storages",children:[{value:"Implementation considerations for ML-related objects",id:"implementation-considerations-for-ml-related-objects",children:[]},{value:"Detailed discussions",id:"detailed-discussions",children:[]}]},{value:"System-related metrics/logs and their storages",id:"system-related-metricslogs-and-their-storages",children:[]},{value:"Attachable Volumes",id:"attachable-volumes",children:[]},{value:"In-scope / Out-of-scope",id:"in-scope--out-of-scope",children:[]}],c={toc:s};function b(e){var t=e.components,n=Object(r.a)(e,["components"]);return Object(a.b)("wrapper",Object(o.a)({},c,n,{components:t,mdxType:"MDXLayout"}),Object(a.b)("h2",{id:"ml-related-objects-and-their-storages"},"ML-related objects and their storages"),Object(a.b)("p",null,"First let's look at what user will interact for most of the time: "),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},"Notebook "),Object(a.b)("li",{parentName:"ul"},"Experiment"),Object(a.b)("li",{parentName:"ul"},"Model Servings")),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},"\n\n                              +---------+    +------------+\n                              |Logs     |<--+|Notebook    |\n      +----------+            +---------+    +------------+     +----------------+\n      |Trackings |                        <-+|Experiment  |<--+>|Model Artifacts |\n      +----------+     +-----------------+   +------------+     +----------------+\n      +----------+<---+|ML-related Metric|<--+Servings    |\n      |tf.events |     +-----------------+   +------------+\n      +----------+                                 ^              +-----------------+\n                                                   +              | Environments    |\n                                        +----------------------+  |                 |\n            +-----------------+         | Submarine Metastore  |  |  Dependencies   |\n            |Code             |         +----------------------+  |                 |\n            +-----------------+         |Experiment Meta       |  |   Docker Images |\n                                        +----------------------+  +-----------------+\n                                        |Model Store Meta      |\n                                        +----------------------+\n                                        |Model Serving Meta    |\n                                        +----------------------+\n                                        |Notebook meta         |\n                                        +----------------------+\n                                        |Experiment Templates  |\n                                        +----------------------+\n                                        |Environments Meta     |\n                                        +----------------------+\n")),Object(a.b)("p",null,"First of all, all the notebook-sessions / experiments / model-serving instances) are more or less interact with following storage objects:"),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},"Logs for these tasks for troubleshooting. "),Object(a.b)("li",{parentName:"ul"},"ML-related metrics such as loss, epoch, etc. (in contrast of system metrics such as CPU/memory usage, etc.)",Object(a.b)("ul",{parentName:"li"},Object(a.b)("li",{parentName:"ul"},"There're different types of ML-related metrics, for Tensorflow/pytorch, they can use tf.events and get visualizations on tensorboard. "),Object(a.b)("li",{parentName:"ul"},"Or they can use tracking APIs (such as Submarine tracking, mlflow tracking, etc.) to output customized tracking results for non TF/Pytorch workloads. "))),Object(a.b)("li",{parentName:"ul"},"Training jobs of experiment typically generate model artifacts (files) which need persisted, and both of notebook, model serving needs to load model artifacts from persistent storage. "),Object(a.b)("li",{parentName:"ul"},"There're various of meta information, such as experiment meta, model registry, model serving, notebook, experiment, environment, etc. We need be able to read these meta information back."),Object(a.b)("li",{parentName:"ul"},"We also have code for experiment (like training/batch-prediction), notebook (ipynb), and model servings."),Object(a.b)("li",{parentName:"ul"},"And notebook/experiments/model-serving need depend on environments (dependencies such as pip, and Docker Images).")),Object(a.b)("h3",{id:"implementation-considerations-for-ml-related-objects"},"Implementation considerations for ML-related objects"),Object(a.b)("table",null,Object(a.b)("thead",{parentName:"table"},Object(a.b)("tr",{parentName:"thead"},Object(a.b)("th",{parentName:"tr",align:null},"Object Type"),Object(a.b)("th",{parentName:"tr",align:null},"Characteristics"),Object(a.b)("th",{parentName:"tr",align:null},"Where to store"))),Object(a.b)("tbody",{parentName:"table"},Object(a.b)("tr",{parentName:"tbody"},Object(a.b)("td",{parentName:"tr",align:null},"Metrics: tf.events"),Object(a.b)("td",{parentName:"tr",align:null},"Time series data with k/v, appendable to file"),Object(a.b)("td",{parentName:"tr",align:null},"Local/EBS, HDFS, Cloud Blob Storage")),Object(a.b)("tr",{parentName:"tbody"},Object(a.b)("td",{parentName:"tr",align:null},"Metrics: other tracking metrics"),Object(a.b)("td",{parentName:"tr",align:null},"Time series data with k/v, appendable to file"),Object(a.b)("td",{parentName:"tr",align:null},"Local, HDFS, Cloud Blob Storage, Database")),Object(a.b)("tr",{parentName:"tbody"},Object(a.b)("td",{parentName:"tr",align:null},"Logs"),Object(a.b)("td",{parentName:"tr",align:null},"Large volumes, #files are potentially huge."),Object(a.b)("td",{parentName:"tr",align:null},"Local (temporary), HDFS (need aggregation), Cloud Blob Storage")),Object(a.b)("tr",{parentName:"tbody"},Object(a.b)("td",{parentName:"tr",align:null},"Submarine Metastore"),Object(a.b)("td",{parentName:"tr",align:null},"CRUD operations for small meta data."),Object(a.b)("td",{parentName:"tr",align:null},"Database")),Object(a.b)("tr",{parentName:"tbody"},Object(a.b)("td",{parentName:"tr",align:null},"Model Artifacts"),Object(a.b)("td",{parentName:"tr",align:null},"Size varies for model (from KBs to GBs). #files are potentially huge."),Object(a.b)("td",{parentName:"tr",align:null},"HDFS, Cloud Blob Storage")),Object(a.b)("tr",{parentName:"tbody"},Object(a.b)("td",{parentName:"tr",align:null},"Code"),Object(a.b)("td",{parentName:"tr",align:null},"Need version control. (Please find detailed discussions below for code storage and localization)"),Object(a.b)("td",{parentName:"tr",align:null},"Tarball on HDFS/Cloud Blog Storage, or Git")),Object(a.b)("tr",{parentName:"tbody"},Object(a.b)("td",{parentName:"tr",align:null},"Environment (Dependencies, Docker Image)"),Object(a.b)("td",{parentName:"tr",align:null}),Object(a.b)("td",{parentName:"tr",align:null},"Public/private environment repo (like Conda channel), Docker registry.")))),Object(a.b)("h3",{id:"detailed-discussions"},"Detailed discussions"),Object(a.b)("h4",{id:"store-code-for-experimentnotebookmodel-serving"},"Store code for experiment/notebook/model-serving"),Object(a.b)("p",null,"There're following ways to get experiment code: "),Object(a.b)("p",null,Object(a.b)("strong",{parentName:"p"},"1) Code is part of Git repo:")," (",Object(a.b)("strong",{parentName:"p"},Object(a.b)("em",{parentName:"strong"},Object(a.b)("u",null,"Recommended"))),")"),Object(a.b)("p",null,"This is our recommended approach, once code is part of Git, it will be stored in version control, any change will be tracked, and much easier for users to trace back what change triggered a new bug, etc."),Object(a.b)("p",null,Object(a.b)("strong",{parentName:"p"},"2) Code is part of Docker image:")," "),Object(a.b)("p",null,Object(a.b)("strong",{parentName:"p"},Object(a.b)("em",{parentName:"strong"},"This is an anti-pattern and we will NOT recommend you to use it")),", Docker image can be used to include ANYTHING, like dependencies, the code you will execute, or even data. But this doesn't mean you should do it. We recommend to use Docker image ONLY for libraries/dependencies."),Object(a.b)("p",null,"Making code to be part of Docker image makes hard to edit code (if you want to update a value in your Python file, you will have to recreate the Docker image, push it and rerun it)."),Object(a.b)("p",null,Object(a.b)("strong",{parentName:"p"},"3) Code is part of S3/HDFS/ABFS:")," "),Object(a.b)("p",null,"User may want to store their training code to a tarball on a shared storage. Submarine need to download code from remote storage to the launched container before running the code. "),Object(a.b)("h4",{id:"localization-of-experimentnotebookmodel-serving-code"},"Localization of experiment/notebook/model-serving code"),Object(a.b)("p",null,"To make user experiences keeps same across different environment, we will localize code to a same folder after the container is launched, preferably ",Object(a.b)("inlineCode",{parentName:"p"},"/code")),Object(a.b)("p",null,"For example, there's a git repo need to be synced up for an experiment/notebook/model-serving (example above):"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},'experiment: #Or notebook, model-serving\n       name: "abc",\n       environment: "team-default-ml-env"\n       ... (other fields)\n             code:\n           sync_mode: git\n           url: "https://foo.com/training-job.git" \n')),Object(a.b)("p",null,"After localize, ",Object(a.b)("inlineCode",{parentName:"p"},"training-job/")," will be placed under ",Object(a.b)("inlineCode",{parentName:"p"},"/code")," "),Object(a.b)("p",null,"When we running on K8s environment, we can use K8s's initContainer and emptyDir to do these things for us. K8s POD spec (generated by Submarine server instead of user, user should NEVER edit K8s spec, that's too unfriendly to data-scientists): "),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},'apiVersion: v1\nkind: Pod\nmetadata:\n  name: experiment-abc\nspec:\n  containers:\n  - name: experiment-task\n    image: training-job\n    volumeMounts:\n    - name: code-dir\n      mountPath: /code\n  initContainers:\n  - name: git-localize\n    image: git-sync\n    command: "git clone .. /code/"\n    volumeMounts:\n    - name: code-dir\n      mountPath: /code\n  volumes:\n  - name: code-dir\n    emptyDir: {}\n')),Object(a.b)("p",null,"The above K8s spec create a code-dir and mount it to ",Object(a.b)("inlineCode",{parentName:"p"},"/code")," to launched containers. The initContainer ",Object(a.b)("inlineCode",{parentName:"p"},"git-localize")," uses ",Object(a.b)("inlineCode",{parentName:"p"},"https://github.com/kubernetes/git-sync")," to do the sync up. (If other storages are used such as s3, we can use similar initContainer approach to download contents)"),Object(a.b)("h2",{id:"system-related-metricslogs-and-their-storages"},"System-related metrics/logs and their storages"),Object(a.b)("p",null,"Other than ML-related objects, we have system-related objects, including: "),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},"Daemon logs (like logs of Submarine server). "),Object(a.b)("li",{parentName:"ul"},"Logs for other dependency components (like Kubernetes logs when running on K8s). "),Object(a.b)("li",{parentName:"ul"},"System metrics (Physical resource usages by daemons, launched training containers, etc.). ")),Object(a.b)("p",null,"All these information should be handled by 3rd party system, such as Grafana, Prometheus, etc. And system admins are responsible to setup these infrastructures, dashboard. Users of submarine should NOT interact with system related metrics/logs. It is system admin's responsibility."),Object(a.b)("h2",{id:"attachable-volumes"},"Attachable Volumes"),Object(a.b)("p",null,"It is possible user has needs to have an attachable volume for their experiment / notebook, this is especially useful for notebook storage, since contents of notebook can be automatically saved, and it can be used as user's home folder. "),Object(a.b)("p",null,"Downside of attachable volume is, it is not versioned, even notebook is mainly used for adhoc exploring tasks, an unversioned notebook file can lead to maintenance issues in the future. "),Object(a.b)("p",null,"Since this is a common requirement, we can consider to support attachable volumes in Submarine in a long run, but with relatively lower priority."),Object(a.b)("h2",{id:"in-scope--out-of-scope"},"In-scope / Out-of-scope"),Object(a.b)("p",null," Describe what Submarine project should own and what Submarine project should NOT own."))}b.isMDXComponent=!0},194:function(e,t,n){"use strict";n.d(t,"a",(function(){return d})),n.d(t,"b",(function(){return u}));var o=n(0),r=n.n(o);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,o,r=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o<a.length;o++)n=a[o],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o<a.length;o++)n=a[o],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var c=r.a.createContext({}),b=function(e){var t=r.a.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},d=function(e){var t=b(e.components);return r.a.createElement(c.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},p=r.a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,i=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),d=b(n),p=o,u=d["".concat(i,".").concat(p)]||d[p]||m[p]||a;return n?r.a.createElement(u,l(l({ref:t},c),{},{components:n})):r.a.createElement(u,l({ref:t},c))}));function u(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,i=new Array(a);i[0]=p;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l.mdxType="string"==typeof e?e:o,i[1]=l;for(var c=2;c<a;c++)i[c]=n[c];return r.a.createElement.apply(null,i)}return r.a.createElement.apply(null,n)}p.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/53cf78e1.232689ff.js b/53cf78e1.232689ff.js
deleted file mode 100644
index 5deb446..0000000
--- a/53cf78e1.232689ff.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[38],{105:function(e,r,n){"use strict";n.r(r),n.d(r,"frontMatter",(function(){return s})),n.d(r,"metadata",(function(){return c})),n.d(r,"toc",(function(){return i})),n.d(r,"default",(function(){return d}));var a=n(3),t=n(7),o=(n(0),n(209)),s={title:"Test and Troubleshooting"},c={unversionedId:"userDocs/yarn/TestAndTroubleshooting",id:"userDocs/yarn/TestAndTroubleshooting",isDocsHomePage:!1,title:"Test and Troubleshooting",description:"\x3c!--",source:"@site/docs/userDocs/yarn/TestAndTroubleshooting.md",slug:"/userDocs/yarn/TestAndTroubleshooting",permalink:"/docs/next/userDocs/yarn/TestAndTroubleshooting",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/userDocs/yarn/TestAndTroubleshooting.md",version:"current"},i=[{value:"Test with a tensorflow job",id:"test-with-a-tensorflow-job",children:[]},{value:"Issues:",id:"issues",children:[{value:"Issue 1: Fail to start nodemanager after system reboot",id:"issue-1-fail-to-start-nodemanager-after-system-reboot",children:[]},{value:"Issue 2: container-executor permission denied",id:"issue-2-container-executor-permission-denied",children:[]},{value:"Issue 3\uff1aHow to get docker service log",id:"issue-3\uff1ahow-to-get-docker-service-log",children:[]},{value:"Issue 4\uff1adocker can&#39;t remove containers with errors like <code>device or resource busy</code>",id:"issue-4\uff1adocker-cant-remove-containers-with-errors-like-device-or-resource-busy",children:[]},{value:"Issue 5\uff1aYarn failed to start containers",id:"issue-5\uff1ayarn-failed-to-start-containers",children:[]}]}],u={toc:i};function d(e){var r=e.components,n=Object(t.a)(e,["components"]);return Object(o.b)("wrapper",Object(a.a)({},u,n,{components:r,mdxType:"MDXLayout"}),Object(o.b)("h2",{id:"test-with-a-tensorflow-job"},"Test with a tensorflow job"),Object(o.b)("p",null,"Distributed-shell + GPU + cgroup"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-bash"},' ... \\\n job run \\\n --env DOCKER_JAVA_HOME=/opt/java \\\n --env DOCKER_HADOOP_HDFS_HOME=/hadoop-current --name distributed-tf-gpu \\\n --env YARN_CONTAINER_RUNTIME_DOCKER_CONTAINER_NETWORK=calico-network \\\n --worker_docker_image tf-1.13.1-gpu:0.0.1 \\\n --ps_docker_image tf-1.13.1-cpu:0.0.1 \\\n --input_path hdfs://${dfs_name_service}/tmp/cifar-10-data \\\n --checkpoint_path hdfs://${dfs_name_service}/user/hadoop/tf-distributed-checkpoint \\\n --num_ps 0 \\\n --ps_resources memory=4G,vcores=2,gpu=0 \\\n --ps_launch_cmd "python /test/cifar10_estimator/cifar10_main.py --data-dir=hdfs://${dfs_name_service}/tmp/cifar-10-data --job-dir=hdfs://${dfs_name_service}/tmp/cifar-10-jobdir --num-gpus=0" \\\n --worker_resources memory=4G,vcores=2,gpu=1 --verbose \\\n --num_workers 1 \\\n --worker_launch_cmd "python /test/cifar10_estimator/cifar10_main.py --data-dir=hdfs://${dfs_name_service}/tmp/cifar-10-data --job-dir=hdfs://${dfs_name_service}/tmp/cifar-10-jobdir --train-steps=500 --eval-batch-size=16 --train-batch-size=16 --sync --num-gpus=1"\n')),Object(o.b)("h2",{id:"issues"},"Issues:"),Object(o.b)("h3",{id:"issue-1-fail-to-start-nodemanager-after-system-reboot"},"Issue 1: Fail to start nodemanager after system reboot"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"2018-09-20 18:54:39,785 ERROR org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor: Failed to bootstrap configured resource subsystems!\norg.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.ResourceHandlerException: Unexpected: Cannot create yarn cgroup Subsystem:cpu Mount points:/proc/mounts User:yarn Path:/sys/fs/cgroup/cpu,cpuacct/hadoop-yarn\n  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsHandlerImpl.initializePreMountedCGroupController(CGroupsHandlerImpl.java:425)\n  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsHandlerImpl.initializeCGroupController(CGroupsHandlerImpl.java:377)\n  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsCpuResourceHandlerImpl.bootstrap(CGroupsCpuResourceHandlerImpl.java:98)\n  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsCpuResourceHandlerImpl.bootstrap(CGroupsCpuResourceHandlerImpl.java:87)\n  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.ResourceHandlerChain.bootstrap(ResourceHandlerChain.java:58)\n  at org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor.init(LinuxContainerExecutor.java:320)\n  at org.apache.hadoop.yarn.server.nodemanager.NodeManager.serviceInit(NodeManager.java:389)\n  at org.apache.hadoop.service.AbstractService.init(AbstractService.java:164)\n  at org.apache.hadoop.yarn.server.nodemanager.NodeManager.initAndStartNodeManager(NodeManager.java:929)\n  at org.apache.hadoop.yarn.server.nodemanager.NodeManager.main(NodeManager.java:997)\n2018-09-20 18:54:39,789 INFO org.apache.hadoop.service.AbstractService: Service NodeManager failed in state INITED\n")),Object(o.b)("p",null,"Solution: Grant user yarn the access to  ",Object(o.b)("inlineCode",{parentName:"p"},"/sys/fs/cgroup/cpu,cpuacct"),", which is the subfolder of cgroup mount destination."),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"chown :yarn -R /sys/fs/cgroup/cpu,cpuacct\nchmod g+rwx -R /sys/fs/cgroup/cpu,cpuacct\n")),Object(o.b)("p",null,"If GPUs are used\uff0cthe access to cgroup devices folder is neede as well"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"chown :yarn -R /sys/fs/cgroup/devices\nchmod g+rwx -R /sys/fs/cgroup/devices\n")),Object(o.b)("h3",{id:"issue-2-container-executor-permission-denied"},"Issue 2: container-executor permission denied"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},'2018-09-21 09:36:26,102 WARN org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.privileged.PrivilegedOperationExecutor: IOException executing command:\njava.io.IOException: Cannot run program "/etc/yarn/sbin/Linux-amd64-64/container-executor": error=13, Permission denied\n        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)\n        at org.apache.hadoop.util.Shell.runCommand(Shell.java:938)\n        at org.apache.hadoop.util.Shell.run(Shell.java:901)\n        at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:1213)\n')),Object(o.b)("p",null,"Solution: The permission of ",Object(o.b)("inlineCode",{parentName:"p"},"/etc/yarn/sbin/Linux-amd64-64/container-executor")," should be 6050"),Object(o.b)("h3",{id:"issue-3\uff1ahow-to-get-docker-service-log"},"Issue 3\uff1aHow to get docker service log"),Object(o.b)("p",null,"Solution: we can get docker log with the following command"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"journalctl -u docker\n")),Object(o.b)("h3",{id:"issue-4\uff1adocker-cant-remove-containers-with-errors-like-device-or-resource-busy"},"Issue 4\uff1adocker can't remove containers with errors like ",Object(o.b)("inlineCode",{parentName:"h3"},"device or resource busy")),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-bash"},"$ docker rm 0bfafa146431\nError response from daemon: Unable to remove filesystem for 0bfafa146431771f6024dcb9775ef47f170edb2f1852f71916ba44209ca6120a: remove /app/docker/containers/0bfafa146431771f6024dcb9775ef47f170edb2f152f71916ba44209ca6120a/shm: device or resource busy\n")),Object(o.b)("p",null,"Solution: to find which process leads to a ",Object(o.b)("inlineCode",{parentName:"p"},"device or resource busy"),", we can add a shell script, named ",Object(o.b)("inlineCode",{parentName:"p"},"find-busy-mnt.sh")),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-bash"},'#!/usr/bin/env bash\n\n# A simple script to get information about mount points and pids and their\n# mount namespaces.\n\nif [ $# -ne 1 ];then\necho "Usage: $0 <devicemapper-device-id>"\nexit 1\nfi\n\nID=$1\n\nMOUNTS=`find /proc/*/mounts | xargs grep $ID 2>/dev/null`\n\n[ -z "$MOUNTS" ] &&  echo "No pids found" && exit 0\n\nprintf "PID\\tNAME\\t\\tMNTNS\\n"\necho "$MOUNTS" | while read LINE; do\nPID=`echo $LINE | cut -d ":" -f1 | cut -d "/" -f3`\n# Ignore self and thread-self\nif [ "$PID" == "self" ] || [ "$PID" == "thread-self" ]; then\n  continue\nfi\nNAME=`ps -q $PID -o comm=`\nMNTNS=`readlink /proc/$PID/ns/mnt`\nprintf "%s\\t%s\\t\\t%s\\n" "$PID" "$NAME" "$MNTNS"\ndone\n')),Object(o.b)("p",null,"Kill the process by pid, which is found by the script"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-bash"},"$ chmod +x find-busy-mnt.sh\n./find-busy-mnt.sh 0bfafa146431771f6024dcb9775ef47f170edb2f152f71916ba44209ca6120a\n# PID   NAME            MNTNS\n# 5007  ntpd            mnt:[4026533598]\n$ kill -9 5007\n")),Object(o.b)("h3",{id:"issue-5\uff1ayarn-failed-to-start-containers"},"Issue 5\uff1aYarn failed to start containers"),Object(o.b)("p",null,"if the number of GPUs required by applications is larger than the number of GPUs in the cluster, there would be some containers can't be created."))}d.isMDXComponent=!0},209:function(e,r,n){"use strict";n.d(r,"a",(function(){return p})),n.d(r,"b",(function(){return m}));var a=n(0),t=n.n(a);function o(e,r,n){return r in e?Object.defineProperty(e,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[r]=n,e}function s(e,r){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);r&&(a=a.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),n.push.apply(n,a)}return n}function c(e){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?s(Object(n),!0).forEach((function(r){o(e,r,n[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):s(Object(n)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))}))}return e}function i(e,r){if(null==e)return{};var n,a,t=function(e,r){if(null==e)return{};var n,a,t={},o=Object.keys(e);for(a=0;a<o.length;a++)n=o[a],r.indexOf(n)>=0||(t[n]=e[n]);return t}(e,r);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)n=o[a],r.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(t[n]=e[n])}return t}var u=t.a.createContext({}),d=function(e){var r=t.a.useContext(u),n=r;return e&&(n="function"==typeof e?e(r):c(c({},r),e)),n},p=function(e){var r=d(e.components);return t.a.createElement(u.Provider,{value:r},e.children)},l={inlineCode:"code",wrapper:function(e){var r=e.children;return t.a.createElement(t.a.Fragment,{},r)}},b=t.a.forwardRef((function(e,r){var n=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),p=d(n),b=a,m=p["".concat(s,".").concat(b)]||p[b]||l[b]||o;return n?t.a.createElement(m,c(c({ref:r},u),{},{components:n})):t.a.createElement(m,c({ref:r},u))}));function m(e,r){var n=arguments,a=r&&r.mdxType;if("string"==typeof e||a){var o=n.length,s=new Array(o);s[0]=b;var c={};for(var i in r)hasOwnProperty.call(r,i)&&(c[i]=r[i]);c.originalType=e,c.mdxType="string"==typeof e?e:a,s[1]=c;for(var u=2;u<o;u++)s[u]=n[u];return t.a.createElement.apply(null,s)}return t.a.createElement.apply(null,n)}b.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/54b0b691.5c84f45c.js b/54b0b691.1ced8c8b.js
similarity index 94%
rename from 54b0b691.5c84f45c.js
rename to 54b0b691.1ced8c8b.js
index 92e1c5f..40101b9 100644
--- a/54b0b691.5c84f45c.js
+++ b/54b0b691.1ced8c8b.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[39],{106:function(e,r,t){"use strict";t.r(r),t.d(r,"frontMatter",(function(){return c})),t.d(r,"metadata",(function(){return i})),t.d(r,"toc",(function(){return u})),t.d(r,"default",(function(){return p}));var n=t(3),a=t(7),o=(t(0),t(209)),c={title:"Submarine-SDK"},i={unversionedId:"userDocs/submarine-sdk/README",id:"userDocs/submarine-sdk/README",isDocsHomePage:!1,title:"Submarine-SDK",description:"\x3c!--",source:"@site/docs/userDocs/submarine-sdk/README.md",slug:"/userDocs/submarine-sdk/README",permalink:"/docs/next/userDocs/submarine-sdk/README",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/userDocs/submarine-sdk/README.md",version:"current"},u=[{value:"Summary",id:"summary",children:[]}],s={toc:u};function p(e){var r=e.components,t=Object(a.a)(e,["components"]);return Object(o.b)("wrapper",Object(n.a)({},s,t,{components:r,mdxType:"MDXLayout"}),Object(o.b)("h1",{id:"submarine-sdk"},"Submarine-SDK"),Object(o.b)("h2",{id:"summary"},"Summary"),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},Object(o.b)("p",{parentName:"li"},"Support Python, Scala, R language for algorithm development")),Object(o.b)("li",{parentName:"ul"},Object(o.b)("p",{parentName:"li"},"Support tracking/metrics APIs which allows developers\nadd tracking/metrics and view tracking/metrics from Submarine Workbench UI."))))}p.isMDXComponent=!0},209:function(e,r,t){"use strict";t.d(r,"a",(function(){return l})),t.d(r,"b",(function(){return d}));var n=t(0),a=t.n(n);function o(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function c(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function i(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?c(Object(t),!0).forEach((function(r){o(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):c(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}function u(e,r){if(null==e)return{};var t,n,a=function(e,r){if(null==e)return{};var t,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)t=o[n],r.indexOf(t)>=0||(a[t]=e[t]);return a}(e,r);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)t=o[n],r.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var s=a.a.createContext({}),p=function(e){var r=a.a.useContext(s),t=r;return e&&(t="function"==typeof e?e(r):i(i({},r),e)),t},l=function(e){var r=p(e.components);return a.a.createElement(s.Provider,{value:r},e.children)},m={inlineCode:"code",wrapper:function(e){var r=e.children;return a.a.createElement(a.a.Fragment,{},r)}},b=a.a.forwardRef((function(e,r){var t=e.components,n=e.mdxType,o=e.originalType,c=e.parentName,s=u(e,["components","mdxType","originalType","parentName"]),l=p(t),b=n,d=l["".concat(c,".").concat(b)]||l[b]||m[b]||o;return t?a.a.createElement(d,i(i({ref:r},s),{},{components:t})):a.a.createElement(d,i({ref:r},s))}));function d(e,r){var t=arguments,n=r&&r.mdxType;if("string"==typeof e||n){var o=t.length,c=new Array(o);c[0]=b;var i={};for(var u in r)hasOwnProperty.call(r,u)&&(i[u]=r[u]);i.originalType=e,i.mdxType="string"==typeof e?e:n,c[1]=i;for(var s=2;s<o;s++)c[s]=t[s];return a.a.createElement.apply(null,c)}return a.a.createElement.apply(null,t)}b.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[36],{103:function(e,r,t){"use strict";t.r(r),t.d(r,"frontMatter",(function(){return c})),t.d(r,"metadata",(function(){return i})),t.d(r,"toc",(function(){return u})),t.d(r,"default",(function(){return p}));var n=t(3),a=t(7),o=(t(0),t(194)),c={title:"Submarine-SDK"},i={unversionedId:"userDocs/submarine-sdk/README",id:"userDocs/submarine-sdk/README",isDocsHomePage:!1,title:"Submarine-SDK",description:"\x3c!--",source:"@site/docs/userDocs/submarine-sdk/README.md",slug:"/userDocs/submarine-sdk/README",permalink:"/docs/next/userDocs/submarine-sdk/README",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/userDocs/submarine-sdk/README.md",version:"current"},u=[{value:"Summary",id:"summary",children:[]}],s={toc:u};function p(e){var r=e.components,t=Object(a.a)(e,["components"]);return Object(o.b)("wrapper",Object(n.a)({},s,t,{components:r,mdxType:"MDXLayout"}),Object(o.b)("h1",{id:"submarine-sdk"},"Submarine-SDK"),Object(o.b)("h2",{id:"summary"},"Summary"),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},Object(o.b)("p",{parentName:"li"},"Support Python, Scala, R language for algorithm development")),Object(o.b)("li",{parentName:"ul"},Object(o.b)("p",{parentName:"li"},"Support tracking/metrics APIs which allows developers\nadd tracking/metrics and view tracking/metrics from Submarine Workbench UI."))))}p.isMDXComponent=!0},194:function(e,r,t){"use strict";t.d(r,"a",(function(){return l})),t.d(r,"b",(function(){return d}));var n=t(0),a=t.n(n);function o(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function c(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function i(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?c(Object(t),!0).forEach((function(r){o(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):c(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}function u(e,r){if(null==e)return{};var t,n,a=function(e,r){if(null==e)return{};var t,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)t=o[n],r.indexOf(t)>=0||(a[t]=e[t]);return a}(e,r);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)t=o[n],r.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var s=a.a.createContext({}),p=function(e){var r=a.a.useContext(s),t=r;return e&&(t="function"==typeof e?e(r):i(i({},r),e)),t},l=function(e){var r=p(e.components);return a.a.createElement(s.Provider,{value:r},e.children)},m={inlineCode:"code",wrapper:function(e){var r=e.children;return a.a.createElement(a.a.Fragment,{},r)}},b=a.a.forwardRef((function(e,r){var t=e.components,n=e.mdxType,o=e.originalType,c=e.parentName,s=u(e,["components","mdxType","originalType","parentName"]),l=p(t),b=n,d=l["".concat(c,".").concat(b)]||l[b]||m[b]||o;return t?a.a.createElement(d,i(i({ref:r},s),{},{components:t})):a.a.createElement(d,i({ref:r},s))}));function d(e,r){var t=arguments,n=r&&r.mdxType;if("string"==typeof e||n){var o=t.length,c=new Array(o);c[0]=b;var i={};for(var u in r)hasOwnProperty.call(r,u)&&(i[u]=r[u]);i.originalType=e,i.mdxType="string"==typeof e?e:n,c[1]=i;for(var s=2;s<o;s++)c[s]=t[s];return a.a.createElement.apply(null,c)}return a.a.createElement.apply(null,t)}b.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/55d1900a.e19706ba.js b/55d1900a.1a3f8fbf.js
similarity index 97%
rename from 55d1900a.e19706ba.js
rename to 55d1900a.1a3f8fbf.js
index e63deb0..7c51380 100644
--- a/55d1900a.e19706ba.js
+++ b/55d1900a.1a3f8fbf.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[40],{107:function(n,e,t){"use strict";t.r(e),t.d(e,"frontMatter",(function(){return o})),t.d(e,"metadata",(function(){return p})),t.d(e,"toc",(function(){return i})),t.d(e,"default",(function(){return m}));var a=t(3),r=t(7),c=(t(0),t(209)),o={title:"Environment REST API"},p={unversionedId:"api/environment",id:"version-0.6.0/api/environment",isDocsHomePage:!1,title:"Environment REST API",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/api/environment.md",slug:"/api/environment",permalink:"/docs/api/environment",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/api/environment.md",version:"0.6.0",sidebar:"api",next:{title:"Experiment REST API",permalink:"/docs/api/experiment"}},i=[{value:"Create Environment",id:"create-environment",children:[{value:"List environment",id:"list-environment",children:[]},{value:"Get environment",id:"get-environment",children:[]},{value:"Patch environment",id:"patch-environment",children:[]},{value:"Delete environment",id:"delete-environment",children:[]}]}],l={toc:i};function m(n){var e=n.components,t=Object(r.a)(n,["components"]);return Object(c.b)("wrapper",Object(a.a)({},l,t,{components:e,mdxType:"MDXLayout"}),Object(c.b)("blockquote",null,Object(c.b)("p",{parentName:"blockquote"},"Note: The Environment API is in the alpha stage which is subjected to incompatible changes in\nfuture releases.")),Object(c.b)("h2",{id:"create-environment"},"Create Environment"),Object(c.b)("p",null,Object(c.b)("inlineCode",{parentName:"p"},"POST /api/v1/environment")),Object(c.b)("p",null,Object(c.b)("strong",{parentName:"p"},"Example Request")),Object(c.b)("pre",null,Object(c.b)("code",{parentName:"pre",className:"language-sh"},'curl -X POST -H "Content-Type: application/json" -d \'\n{\n  "name": "my-submarine-env",\n  "dockerImage" : "continuumio/anaconda3",\n  "kernelSpec" : {\n    "name" : "team_default_python_3.7",\n    "channels" : ["defaults"],\n    "condaDependencies" : \n      ["_ipyw_jlab_nb_ext_conf=0.1.0=py37_0",\n      "alabaster=0.7.12=py37_0",\n      "anaconda=2020.02=py37_0",\n      "anaconda-client=1.7.2=py37_0",\n      "anaconda-navigator=1.9.12=py37_0"],\n    "pipDependencies" : \n      ["apache-submarine==0.5.0",\n      "pyarrow==0.17.0"]\n  }\n}\n\' http://127.0.0.1:32080/api/v1/environment\n')),Object(c.b)("p",null,Object(c.b)("strong",{parentName:"p"},"Example Response:")),Object(c.b)("pre",null,Object(c.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status": "OK",\n  "code": 200,\n  "result": {\n    "environmentId": "environment_1586156073228_0001",\n    "environmentSpec": {\n      "name": "my-submarine-env",\n      "dockerImage" : "continuumio/anaconda3",\n      "kernelSpec" : {\n        "name" : "team_default_python_3.7",\n        "channels" : ["defaults"],\n        "condaDependencies" : \n          ["_ipyw_jlab_nb_ext_conf=0.1.0=py37_0",\n          "alabaster=0.7.12=py37_0",\n          "anaconda=2020.02=py37_0",\n          "anaconda-client=1.7.2=py37_0",\n          "anaconda-navigator=1.9.12=py37_0"],\n        "pipDependencies" : \n          ["apache-submarine==0.5.0",\n          "pyarrow==0.17.0"]\n      }\n    }\n  }\n}\n')),Object(c.b)("h3",{id:"list-environment"},"List environment"),Object(c.b)("p",null,Object(c.b)("inlineCode",{parentName:"p"},"GET /api/v1/environment")),Object(c.b)("p",null,Object(c.b)("strong",{parentName:"p"},"Example Request:")),Object(c.b)("pre",null,Object(c.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/environment\n")),Object(c.b)("p",null,Object(c.b)("strong",{parentName:"p"},"Example Response:")),Object(c.b)("pre",null,Object(c.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status": "OK",\n  "code": 200,\n  "result": [\n  {\n    "environmentId": "environment_1586156073228_0001",\n    "environmentSpec": {\n      "name": "my-submarine-env",\n      "dockerImage" : "continuumio/anaconda3",\n      "kernelSpec" : {\n        "name" : "team_default_python_3.7",\n        "channels" : ["defaults"],\n        "condaDependencies" : \n          ["_ipyw_jlab_nb_ext_conf=0.1.0=py37_0",\n          "alabaster=0.7.12=py37_0",\n          "anaconda=2020.02=py37_0",\n          "anaconda-client=1.7.2=py37_0",\n          "anaconda-navigator=1.9.12=py37_0"],\n        "pipDependencies" : \n          ["apache-submarine==0.5.0",\n          "pyarrow==0.17.0"]\n      }\n    }\n  },\n  {\n    "environmentId": "environment_1586156073228_0002",\n    "environmentSpec": {\n      "name": "my-submarine-env-2",\n      "dockerImage" : "continuumio/miniconda",\n      "kernelSpec" : {\n        "name" : "team_miniconda_python_3.7",\n        "channels" : ["defaults"],\n        "condaDependencies" : \n          ["_ipyw_jlab_nb_ext_conf=0.1.0=py37_0"],\n        "pipDependencies" : \n          [],\n      }\n    }\n  }\n  ]\n}\n')),Object(c.b)("h3",{id:"get-environment"},"Get environment"),Object(c.b)("p",null,Object(c.b)("inlineCode",{parentName:"p"},"GET /api/v1/environment/{name}")),Object(c.b)("p",null,Object(c.b)("strong",{parentName:"p"},"Example Request:")),Object(c.b)("pre",null,Object(c.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/environment/my-submarine-env\n")),Object(c.b)("p",null,Object(c.b)("strong",{parentName:"p"},"Example Response:")),Object(c.b)("pre",null,Object(c.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status": "OK",\n  "code": 200,\n  "result": {\n    "environmentId": "environment_1586156073228_0001",\n    "environmentSpec": {\n      "name": "my-submarine-env",\n      "dockerImage" : "continuumio/anaconda3",\n      "kernelSpec" : {\n        "name" : "team_default_python_3.7",\n        "channels" : ["defaults"],\n        "condaDependencies" : \n          ["_ipyw_jlab_nb_ext_conf=0.1.0=py37_0",\n          "alabaster=0.7.12=py37_0",\n          "anaconda=2020.02=py37_0",\n          "anaconda-client=1.7.2=py37_0",\n          "anaconda-navigator=1.9.12=py37_0"],\n        "pipDependencies" : \n          ["apache-submarine==0.5.0",\n          "pyarrow==0.17.0"]\n      }\n    }\n  }\n}\n')),Object(c.b)("h3",{id:"patch-environment"},"Patch environment"),Object(c.b)("p",null,Object(c.b)("inlineCode",{parentName:"p"},"PATCH /api/v1/environment/{name}")),Object(c.b)("p",null,Object(c.b)("strong",{parentName:"p"},"Example Request:")),Object(c.b)("pre",null,Object(c.b)("code",{parentName:"pre",className:"language-sh"},'curl -X PATCH -H "Content-Type: application/json" -d \'\n{\n  "name": "my-submarine-env",\n  "dockerImage" : "continuumio/anaconda3",\n  "kernelSpec" : {\n    "name" : "team_default_python_3.7_updated",\n    "channels" : ["defaults"],\n    "condaDependencies" : \n      ["_ipyw_jlab_nb_ext_conf=0.1.0=py37_0",\n      "alabaster=0.7.12=py37_0"],\n    "pipDependencies" : \n      []\n  }\n}\n\' http://127.0.0.1:32080/api/v1/environment/my-submarine-env\n')),Object(c.b)("p",null,Object(c.b)("strong",{parentName:"p"},"Example Response:")),Object(c.b)("pre",null,Object(c.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status": "OK",\n  "code": 200,\n  "success": true,\n  "result": {\n    "environmentId": "environment_1586156073228_0001",\n    "environmentSpec": {\n      "name": "my-submarine-env",\n      "dockerImage" : "continuumio/anaconda3",\n      "kernelSpec" : {\n        "name" : "team_default_python_3.7_updated",\n        "channels" : ["defaults"],\n        "condaDependencies" : \n          ["_ipyw_jlab_nb_ext_conf=0.1.0=py37_0",\n          "alabaster=0.7.12=py37_0"],\n        "pipDependencies" :\n          []\n      }\n    }\n  }\n}\n')),Object(c.b)("blockquote",null,Object(c.b)("p",{parentName:"blockquote"},'dockerImage, "name" (of kernelSpec), "channels", "condaDependencies", "pipDependencies" etc can be updated using this API.\n"name" of EnvironmentSpec is not supported.')),Object(c.b)("h3",{id:"delete-environment"},"Delete environment"),Object(c.b)("p",null,Object(c.b)("inlineCode",{parentName:"p"},"GET /api/v1/environment/{name}")),Object(c.b)("p",null,Object(c.b)("strong",{parentName:"p"},"Example Request:")),Object(c.b)("pre",null,Object(c.b)("code",{parentName:"pre",className:"language-sh"},"curl -X DELETE http://127.0.0.1:32080/api/v1/environment/my-submarine-env\n")),Object(c.b)("p",null,Object(c.b)("strong",{parentName:"p"},"Example Response:")),Object(c.b)("pre",null,Object(c.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status": "OK",\n  "code": 200,\n  "result": {\n    "environmentId": "environment_1586156073228_0001",\n    "environmentSpec": {\n      "name": "my-submarine-env",\n      "dockerImage" : "continuumio/anaconda3",\n      "kernelSpec" : {\n        "name" : "team_default_python_3.7_updated",\n        "channels" : ["defaults"],\n        "condaDependencies" : \n          ["_ipyw_jlab_nb_ext_conf=0.1.0=py37_0",\n          "alabaster=0.7.12=py37_0"],\n        "pipDependencies" :\n          []\n      }\n    }\n  }\n}\n')))}m.isMDXComponent=!0},209:function(n,e,t){"use strict";t.d(e,"a",(function(){return s})),t.d(e,"b",(function(){return d}));var a=t(0),r=t.n(a);function c(n,e,t){return e in n?Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[e]=t,n}function o(n,e){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(n);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),t.push.apply(t,a)}return t}function p(n){for(var e=1;e<arguments.length;e++){var t=null!=arguments[e]?arguments[e]:{};e%2?o(Object(t),!0).forEach((function(e){c(n,e,t[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(t)):o(Object(t)).forEach((function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(t,e))}))}return n}function i(n,e){if(null==n)return{};var t,a,r=function(n,e){if(null==n)return{};var t,a,r={},c=Object.keys(n);for(a=0;a<c.length;a++)t=c[a],e.indexOf(t)>=0||(r[t]=n[t]);return r}(n,e);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(n);for(a=0;a<c.length;a++)t=c[a],e.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(n,t)&&(r[t]=n[t])}return r}var l=r.a.createContext({}),m=function(n){var e=r.a.useContext(l),t=e;return n&&(t="function"==typeof n?n(e):p(p({},e),n)),t},s=function(n){var e=m(n.components);return r.a.createElement(l.Provider,{value:e},n.children)},b={inlineCode:"code",wrapper:function(n){var e=n.children;return r.a.createElement(r.a.Fragment,{},e)}},u=r.a.forwardRef((function(n,e){var t=n.components,a=n.mdxType,c=n.originalType,o=n.parentName,l=i(n,["components","mdxType","originalType","parentName"]),s=m(t),u=a,d=s["".concat(o,".").concat(u)]||s[u]||b[u]||c;return t?r.a.createElement(d,p(p({ref:e},l),{},{components:t})):r.a.createElement(d,p({ref:e},l))}));function d(n,e){var t=arguments,a=e&&e.mdxType;if("string"==typeof n||a){var c=t.length,o=new Array(c);o[0]=u;var p={};for(var i in e)hasOwnProperty.call(e,i)&&(p[i]=e[i]);p.originalType=n,p.mdxType="string"==typeof n?n:a,o[1]=p;for(var l=2;l<c;l++)o[l]=t[l];return r.a.createElement.apply(null,o)}return r.a.createElement.apply(null,t)}u.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[37],{104:function(n,e,t){"use strict";t.r(e),t.d(e,"frontMatter",(function(){return o})),t.d(e,"metadata",(function(){return p})),t.d(e,"toc",(function(){return i})),t.d(e,"default",(function(){return m}));var a=t(3),r=t(7),c=(t(0),t(194)),o={title:"Environment REST API"},p={unversionedId:"api/environment",id:"version-0.6.0/api/environment",isDocsHomePage:!1,title:"Environment REST API",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/api/environment.md",slug:"/api/environment",permalink:"/docs/api/environment",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/api/environment.md",version:"0.6.0",sidebar:"api",next:{title:"Experiment REST API",permalink:"/docs/api/experiment"}},i=[{value:"Create Environment",id:"create-environment",children:[{value:"List environment",id:"list-environment",children:[]},{value:"Get environment",id:"get-environment",children:[]},{value:"Patch environment",id:"patch-environment",children:[]},{value:"Delete environment",id:"delete-environment",children:[]}]}],l={toc:i};function m(n){var e=n.components,t=Object(r.a)(n,["components"]);return Object(c.b)("wrapper",Object(a.a)({},l,t,{components:e,mdxType:"MDXLayout"}),Object(c.b)("blockquote",null,Object(c.b)("p",{parentName:"blockquote"},"Note: The Environment API is in the alpha stage which is subjected to incompatible changes in\nfuture releases.")),Object(c.b)("h2",{id:"create-environment"},"Create Environment"),Object(c.b)("p",null,Object(c.b)("inlineCode",{parentName:"p"},"POST /api/v1/environment")),Object(c.b)("p",null,Object(c.b)("strong",{parentName:"p"},"Example Request")),Object(c.b)("pre",null,Object(c.b)("code",{parentName:"pre",className:"language-sh"},'curl -X POST -H "Content-Type: application/json" -d \'\n{\n  "name": "my-submarine-env",\n  "dockerImage" : "continuumio/anaconda3",\n  "kernelSpec" : {\n    "name" : "team_default_python_3.7",\n    "channels" : ["defaults"],\n    "condaDependencies" : \n      ["_ipyw_jlab_nb_ext_conf=0.1.0=py37_0",\n      "alabaster=0.7.12=py37_0",\n      "anaconda=2020.02=py37_0",\n      "anaconda-client=1.7.2=py37_0",\n      "anaconda-navigator=1.9.12=py37_0"],\n    "pipDependencies" : \n      ["apache-submarine==0.5.0",\n      "pyarrow==0.17.0"]\n  }\n}\n\' http://127.0.0.1:32080/api/v1/environment\n')),Object(c.b)("p",null,Object(c.b)("strong",{parentName:"p"},"Example Response:")),Object(c.b)("pre",null,Object(c.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status": "OK",\n  "code": 200,\n  "result": {\n    "environmentId": "environment_1586156073228_0001",\n    "environmentSpec": {\n      "name": "my-submarine-env",\n      "dockerImage" : "continuumio/anaconda3",\n      "kernelSpec" : {\n        "name" : "team_default_python_3.7",\n        "channels" : ["defaults"],\n        "condaDependencies" : \n          ["_ipyw_jlab_nb_ext_conf=0.1.0=py37_0",\n          "alabaster=0.7.12=py37_0",\n          "anaconda=2020.02=py37_0",\n          "anaconda-client=1.7.2=py37_0",\n          "anaconda-navigator=1.9.12=py37_0"],\n        "pipDependencies" : \n          ["apache-submarine==0.5.0",\n          "pyarrow==0.17.0"]\n      }\n    }\n  }\n}\n')),Object(c.b)("h3",{id:"list-environment"},"List environment"),Object(c.b)("p",null,Object(c.b)("inlineCode",{parentName:"p"},"GET /api/v1/environment")),Object(c.b)("p",null,Object(c.b)("strong",{parentName:"p"},"Example Request:")),Object(c.b)("pre",null,Object(c.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/environment\n")),Object(c.b)("p",null,Object(c.b)("strong",{parentName:"p"},"Example Response:")),Object(c.b)("pre",null,Object(c.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status": "OK",\n  "code": 200,\n  "result": [\n  {\n    "environmentId": "environment_1586156073228_0001",\n    "environmentSpec": {\n      "name": "my-submarine-env",\n      "dockerImage" : "continuumio/anaconda3",\n      "kernelSpec" : {\n        "name" : "team_default_python_3.7",\n        "channels" : ["defaults"],\n        "condaDependencies" : \n          ["_ipyw_jlab_nb_ext_conf=0.1.0=py37_0",\n          "alabaster=0.7.12=py37_0",\n          "anaconda=2020.02=py37_0",\n          "anaconda-client=1.7.2=py37_0",\n          "anaconda-navigator=1.9.12=py37_0"],\n        "pipDependencies" : \n          ["apache-submarine==0.5.0",\n          "pyarrow==0.17.0"]\n      }\n    }\n  },\n  {\n    "environmentId": "environment_1586156073228_0002",\n    "environmentSpec": {\n      "name": "my-submarine-env-2",\n      "dockerImage" : "continuumio/miniconda",\n      "kernelSpec" : {\n        "name" : "team_miniconda_python_3.7",\n        "channels" : ["defaults"],\n        "condaDependencies" : \n          ["_ipyw_jlab_nb_ext_conf=0.1.0=py37_0"],\n        "pipDependencies" : \n          [],\n      }\n    }\n  }\n  ]\n}\n')),Object(c.b)("h3",{id:"get-environment"},"Get environment"),Object(c.b)("p",null,Object(c.b)("inlineCode",{parentName:"p"},"GET /api/v1/environment/{name}")),Object(c.b)("p",null,Object(c.b)("strong",{parentName:"p"},"Example Request:")),Object(c.b)("pre",null,Object(c.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/environment/my-submarine-env\n")),Object(c.b)("p",null,Object(c.b)("strong",{parentName:"p"},"Example Response:")),Object(c.b)("pre",null,Object(c.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status": "OK",\n  "code": 200,\n  "result": {\n    "environmentId": "environment_1586156073228_0001",\n    "environmentSpec": {\n      "name": "my-submarine-env",\n      "dockerImage" : "continuumio/anaconda3",\n      "kernelSpec" : {\n        "name" : "team_default_python_3.7",\n        "channels" : ["defaults"],\n        "condaDependencies" : \n          ["_ipyw_jlab_nb_ext_conf=0.1.0=py37_0",\n          "alabaster=0.7.12=py37_0",\n          "anaconda=2020.02=py37_0",\n          "anaconda-client=1.7.2=py37_0",\n          "anaconda-navigator=1.9.12=py37_0"],\n        "pipDependencies" : \n          ["apache-submarine==0.5.0",\n          "pyarrow==0.17.0"]\n      }\n    }\n  }\n}\n')),Object(c.b)("h3",{id:"patch-environment"},"Patch environment"),Object(c.b)("p",null,Object(c.b)("inlineCode",{parentName:"p"},"PATCH /api/v1/environment/{name}")),Object(c.b)("p",null,Object(c.b)("strong",{parentName:"p"},"Example Request:")),Object(c.b)("pre",null,Object(c.b)("code",{parentName:"pre",className:"language-sh"},'curl -X PATCH -H "Content-Type: application/json" -d \'\n{\n  "name": "my-submarine-env",\n  "dockerImage" : "continuumio/anaconda3",\n  "kernelSpec" : {\n    "name" : "team_default_python_3.7_updated",\n    "channels" : ["defaults"],\n    "condaDependencies" : \n      ["_ipyw_jlab_nb_ext_conf=0.1.0=py37_0",\n      "alabaster=0.7.12=py37_0"],\n    "pipDependencies" : \n      []\n  }\n}\n\' http://127.0.0.1:32080/api/v1/environment/my-submarine-env\n')),Object(c.b)("p",null,Object(c.b)("strong",{parentName:"p"},"Example Response:")),Object(c.b)("pre",null,Object(c.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status": "OK",\n  "code": 200,\n  "success": true,\n  "result": {\n    "environmentId": "environment_1586156073228_0001",\n    "environmentSpec": {\n      "name": "my-submarine-env",\n      "dockerImage" : "continuumio/anaconda3",\n      "kernelSpec" : {\n        "name" : "team_default_python_3.7_updated",\n        "channels" : ["defaults"],\n        "condaDependencies" : \n          ["_ipyw_jlab_nb_ext_conf=0.1.0=py37_0",\n          "alabaster=0.7.12=py37_0"],\n        "pipDependencies" :\n          []\n      }\n    }\n  }\n}\n')),Object(c.b)("blockquote",null,Object(c.b)("p",{parentName:"blockquote"},'dockerImage, "name" (of kernelSpec), "channels", "condaDependencies", "pipDependencies" etc can be updated using this API.\n"name" of EnvironmentSpec is not supported.')),Object(c.b)("h3",{id:"delete-environment"},"Delete environment"),Object(c.b)("p",null,Object(c.b)("inlineCode",{parentName:"p"},"GET /api/v1/environment/{name}")),Object(c.b)("p",null,Object(c.b)("strong",{parentName:"p"},"Example Request:")),Object(c.b)("pre",null,Object(c.b)("code",{parentName:"pre",className:"language-sh"},"curl -X DELETE http://127.0.0.1:32080/api/v1/environment/my-submarine-env\n")),Object(c.b)("p",null,Object(c.b)("strong",{parentName:"p"},"Example Response:")),Object(c.b)("pre",null,Object(c.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status": "OK",\n  "code": 200,\n  "result": {\n    "environmentId": "environment_1586156073228_0001",\n    "environmentSpec": {\n      "name": "my-submarine-env",\n      "dockerImage" : "continuumio/anaconda3",\n      "kernelSpec" : {\n        "name" : "team_default_python_3.7_updated",\n        "channels" : ["defaults"],\n        "condaDependencies" : \n          ["_ipyw_jlab_nb_ext_conf=0.1.0=py37_0",\n          "alabaster=0.7.12=py37_0"],\n        "pipDependencies" :\n          []\n      }\n    }\n  }\n}\n')))}m.isMDXComponent=!0},194:function(n,e,t){"use strict";t.d(e,"a",(function(){return s})),t.d(e,"b",(function(){return d}));var a=t(0),r=t.n(a);function c(n,e,t){return e in n?Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[e]=t,n}function o(n,e){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(n);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),t.push.apply(t,a)}return t}function p(n){for(var e=1;e<arguments.length;e++){var t=null!=arguments[e]?arguments[e]:{};e%2?o(Object(t),!0).forEach((function(e){c(n,e,t[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(t)):o(Object(t)).forEach((function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(t,e))}))}return n}function i(n,e){if(null==n)return{};var t,a,r=function(n,e){if(null==n)return{};var t,a,r={},c=Object.keys(n);for(a=0;a<c.length;a++)t=c[a],e.indexOf(t)>=0||(r[t]=n[t]);return r}(n,e);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(n);for(a=0;a<c.length;a++)t=c[a],e.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(n,t)&&(r[t]=n[t])}return r}var l=r.a.createContext({}),m=function(n){var e=r.a.useContext(l),t=e;return n&&(t="function"==typeof n?n(e):p(p({},e),n)),t},s=function(n){var e=m(n.components);return r.a.createElement(l.Provider,{value:e},n.children)},b={inlineCode:"code",wrapper:function(n){var e=n.children;return r.a.createElement(r.a.Fragment,{},e)}},u=r.a.forwardRef((function(n,e){var t=n.components,a=n.mdxType,c=n.originalType,o=n.parentName,l=i(n,["components","mdxType","originalType","parentName"]),s=m(t),u=a,d=s["".concat(o,".").concat(u)]||s[u]||b[u]||c;return t?r.a.createElement(d,p(p({ref:e},l),{},{components:t})):r.a.createElement(d,p({ref:e},l))}));function d(n,e){var t=arguments,a=e&&e.mdxType;if("string"==typeof n||a){var c=t.length,o=new Array(c);o[0]=u;var p={};for(var i in e)hasOwnProperty.call(e,i)&&(p[i]=e[i]);p.originalType=n,p.mdxType="string"==typeof n?n:a,o[1]=p;for(var l=2;l<c;l++)o[l]=t[l];return r.a.createElement.apply(null,o)}return r.a.createElement.apply(null,t)}u.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/57a4862f.4cd29151.js b/57a4862f.4cd29151.js
deleted file mode 100644
index abcb15c..0000000
--- a/57a4862f.4cd29151.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[41],{108:function(e,r,t){"use strict";t.r(r),t.d(r,"frontMatter",(function(){return a})),t.d(r,"metadata",(function(){return i})),t.d(r,"toc",(function(){return u})),t.d(r,"default",(function(){return s}));var n=t(3),o=t(7),c=(t(0),t(209)),a={title:"Write Dockerfiles for Submarine"},i={unversionedId:"userDocs/yarn/Dockerfiles",id:"userDocs/yarn/Dockerfiles",isDocsHomePage:!1,title:"Write Dockerfiles for Submarine",description:"\x3c!--",source:"@site/docs/userDocs/yarn/Dockerfiles.md",slug:"/userDocs/yarn/Dockerfiles",permalink:"/docs/next/userDocs/yarn/Dockerfiles",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/userDocs/yarn/Dockerfiles.md",version:"current"},u=[],l={toc:u};function s(e){var r=e.components,t=Object(o.a)(e,["components"]);return Object(c.b)("wrapper",Object(n.a)({},l,t,{components:r,mdxType:"MDXLayout"}),Object(c.b)("p",null,Object(c.b)("a",{parentName:"p",href:"WriteDockerfileTF"},"How to write Dockerfile for Submarine TensorFlow jobs")),Object(c.b)("p",null,Object(c.b)("a",{parentName:"p",href:"WriteDockerfilePT"},"How to write Dockerfile for Submarine PyTorch jobs")),Object(c.b)("p",null,Object(c.b)("a",{parentName:"p",href:"WriteDockerfileMX"},"How to write Dockerfile for Submarine MXNet jobs")))}s.isMDXComponent=!0},209:function(e,r,t){"use strict";t.d(r,"a",(function(){return f})),t.d(r,"b",(function(){return m}));var n=t(0),o=t.n(n);function c(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function a(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function i(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?a(Object(t),!0).forEach((function(r){c(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):a(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}function u(e,r){if(null==e)return{};var t,n,o=function(e,r){if(null==e)return{};var t,n,o={},c=Object.keys(e);for(n=0;n<c.length;n++)t=c[n],r.indexOf(t)>=0||(o[t]=e[t]);return o}(e,r);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(e);for(n=0;n<c.length;n++)t=c[n],r.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}var l=o.a.createContext({}),s=function(e){var r=o.a.useContext(l),t=r;return e&&(t="function"==typeof e?e(r):i(i({},r),e)),t},f=function(e){var r=s(e.components);return o.a.createElement(l.Provider,{value:r},e.children)},p={inlineCode:"code",wrapper:function(e){var r=e.children;return o.a.createElement(o.a.Fragment,{},r)}},b=o.a.forwardRef((function(e,r){var t=e.components,n=e.mdxType,c=e.originalType,a=e.parentName,l=u(e,["components","mdxType","originalType","parentName"]),f=s(t),b=n,m=f["".concat(a,".").concat(b)]||f[b]||p[b]||c;return t?o.a.createElement(m,i(i({ref:r},l),{},{components:t})):o.a.createElement(m,i({ref:r},l))}));function m(e,r){var t=arguments,n=r&&r.mdxType;if("string"==typeof e||n){var c=t.length,a=new Array(c);a[0]=b;var i={};for(var u in r)hasOwnProperty.call(r,u)&&(i[u]=r[u]);i.originalType=e,i.mdxType="string"==typeof e?e:n,a[1]=i;for(var l=2;l<c;l++)a[l]=t[l];return o.a.createElement.apply(null,a)}return o.a.createElement.apply(null,t)}b.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/58f10d9f.a5917f48.js b/58f10d9f.87a860a5.js
similarity index 98%
rename from 58f10d9f.a5917f48.js
rename to 58f10d9f.87a860a5.js
index 92505ad..fff442d 100644
--- a/58f10d9f.a5917f48.js
+++ b/58f10d9f.87a860a5.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[42],{109:function(e){e.exports=JSON.parse('{"pluginId":"default","version":"0.6.0","label":"0.6.0","isLast":true,"docsSidebars":{"docs":[{"collapsed":true,"type":"category","label":"Introduction","items":[]},{"collapsed":true,"type":"category","label":"Getting Started","items":[{"type":"link","label":"Quickstart","href":"/docs/gettingStarted/quickstart"},{"type":"link","label":"Jupyter Notebook","href":"/docs/gettingStarted/notebook"}]},{"collapsed":true,"type":"category","label":"User Docs","items":[{"collapsed":true,"type":"category","label":"API documentation","items":[{"type":"link","label":"Experiment REST API","href":"/docs/userDocs/api/experiment"},{"type":"link","label":"Environment REST API","href":"/docs/userDocs/api/environment"},{"type":"link","label":"Experiment Template REST API","href":"/docs/userDocs/api/experiment-template"},{"type":"link","label":"Notebook REST API","href":"/docs/userDocs/api/notebook"}]},{"collapsed":true,"type":"category","label":"Submarine SDK","items":[{"type":"link","label":"Experiment Client","href":"/docs/userDocs/submarine-sdk/experiment-client"},{"type":"link","label":"Model Client","href":"/docs/userDocs/submarine-sdk/model-client"},{"type":"link","label":"Tracking","href":"/docs/userDocs/submarine-sdk/tracking"}]},{"collapsed":true,"type":"category","label":"Submarine Security","items":[{"type":"link","label":"Submarine Spark Security Plugin","href":"/docs/userDocs/submarine-security/spark-security/README"},{"type":"link","label":"Building Submarine Spark Security Plugin","href":"/docs/userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin"}]},{"collapsed":true,"type":"category","label":"Others","items":[{"type":"link","label":"MLflow UI","href":"/docs/userDocs/others/mlflow"},{"type":"link","label":"Tensorboard","href":"/docs/userDocs/others/tensorboard"}]}]},{"collapsed":true,"type":"category","label":"Administrator Docs","items":[{"collapsed":true,"type":"category","label":"Submarine on Yarn","items":[{"type":"link","label":"Running Submarine on YARN","href":"/docs/adminDocs/yarn/README"}]}]},{"collapsed":true,"type":"category","label":"Developer Docs","items":[{"type":"link","label":"Project Architecture","href":"/docs/devDocs/README"},{"type":"link","label":"Dependencies for Submarine","href":"/docs/devDocs/Dependencies"},{"type":"link","label":"How to Build Submarine","href":"/docs/devDocs/BuildFromCode"},{"type":"link","label":"Development Guide","href":"/docs/devDocs/Development"},{"type":"link","label":"How to Run Integration K8s Test","href":"/docs/devDocs/IntegrationTestK8s"},{"type":"link","label":"How to Run Frontend Integration Test","href":"/docs/devDocs/IntegrationTestE2E"}]},{"collapsed":true,"type":"category","label":"Community","items":[{"type":"link","label":"Apache Submarine Community","href":"/docs/community/README"},{"type":"link","label":"Guide for Apache Submarine Committers","href":"/docs/community/HowToCommit"},{"type":"link","label":"How To Contribute to Submarine","href":"/docs/community/contributing"}]},{"collapsed":true,"type":"category","label":"Design Docs","items":[{"type":"link","label":"Architecture and Requirment","href":"/docs/designDocs/architecture-and-requirements"},{"type":"link","label":"Implementation Notes","href":"/docs/designDocs/implementation-notes"},{"type":"link","label":"Environments Implementation","href":"/docs/designDocs/environments-implementation"},{"type":"link","label":"Experiment Implementation","href":"/docs/designDocs/experiment-implementation"},{"type":"link","label":"Notebook Implementation","href":"/docs/designDocs/notebook-implementation"},{"type":"link","label":"Storage Implementation","href":"/docs/designDocs/storage-implementation"},{"collapsed":true,"type":"category","label":"Submarine Server","items":[{"type":"link","label":"Submarine Server Implementation","href":"/docs/designDocs/submarine-server/architecture"},{"type":"link","label":"Generic Expeiment Spec","href":"/docs/designDocs/submarine-server/experimentSpec"}]},{"collapsed":true,"type":"category","label":"WIP Design Docs","items":[{"type":"link","label":"Submarine Launcher","href":"/docs/designDocs/wip-designs/submarine-launcher"},{"type":"link","label":"Cluster Server Design - High-Availability","href":"/docs/designDocs/wip-designs/submarine-clusterServer"},{"type":"link","label":"Security Implementation","href":"/docs/designDocs/wip-designs/security-implementation"}]}]},{"collapsed":true,"type":"category","label":"RoadMap","items":[]}],"api":[{"type":"link","label":"Environment REST API","href":"/docs/api/environment"},{"type":"link","label":"Experiment REST API","href":"/docs/api/experiment"},{"type":"link","label":"Experiment Template REST API","href":"/docs/api/experiment-template"},{"type":"link","label":"Notebook REST API","href":"/docs/api/notebook"}]},"permalinkToSidebar":{"/docs/adminDocs/yarn/README":"docs","/docs/api/environment":"api","/docs/api/experiment":"api","/docs/api/experiment-template":"api","/docs/api/notebook":"api","/docs/community/contributing":"docs","/docs/community/HowToCommit":"docs","/docs/community/README":"docs","/docs/designDocs/architecture-and-requirements":"docs","/docs/designDocs/environments-implementation":"docs","/docs/designDocs/experiment-implementation":"docs","/docs/designDocs/implementation-notes":"docs","/docs/designDocs/notebook-implementation":"docs","/docs/designDocs/storage-implementation":"docs","/docs/designDocs/submarine-server/architecture":"docs","/docs/designDocs/submarine-server/experimentSpec":"docs","/docs/designDocs/wip-designs/security-implementation":"docs","/docs/designDocs/wip-designs/submarine-clusterServer":"docs","/docs/designDocs/wip-designs/submarine-launcher":"docs","/docs/devDocs/BuildFromCode":"docs","/docs/devDocs/Dependencies":"docs","/docs/devDocs/Development":"docs","/docs/devDocs/IntegrationTestE2E":"docs","/docs/devDocs/IntegrationTestK8s":"docs","/docs/devDocs/README":"docs","/docs/gettingStarted/notebook":"docs","/docs/gettingStarted/quickstart":"docs","/docs/userDocs/api/environment":"docs","/docs/userDocs/api/experiment":"docs","/docs/userDocs/api/experiment-template":"docs","/docs/userDocs/api/notebook":"docs","/docs/userDocs/others/mlflow":"docs","/docs/userDocs/others/tensorboard":"docs","/docs/userDocs/submarine-sdk/experiment-client":"docs","/docs/userDocs/submarine-sdk/model-client":"docs","/docs/userDocs/submarine-sdk/tracking":"docs","/docs/userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin":"docs","/docs/userDocs/submarine-security/spark-security/README":"docs"}}')}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[38],{105:function(e){e.exports=JSON.parse('{"pluginId":"default","version":"0.6.0","label":"0.6.0","isLast":true,"docsSidebars":{"docs":[{"collapsed":true,"type":"category","label":"Introduction","items":[]},{"collapsed":true,"type":"category","label":"Getting Started","items":[{"type":"link","label":"Quickstart","href":"/docs/gettingStarted/quickstart"},{"type":"link","label":"Jupyter Notebook","href":"/docs/gettingStarted/notebook"}]},{"collapsed":true,"type":"category","label":"User Docs","items":[{"collapsed":true,"type":"category","label":"API documentation","items":[{"type":"link","label":"Experiment REST API","href":"/docs/userDocs/api/experiment"},{"type":"link","label":"Environment REST API","href":"/docs/userDocs/api/environment"},{"type":"link","label":"Experiment Template REST API","href":"/docs/userDocs/api/experiment-template"},{"type":"link","label":"Notebook REST API","href":"/docs/userDocs/api/notebook"}]},{"collapsed":true,"type":"category","label":"Submarine SDK","items":[{"type":"link","label":"Experiment Client","href":"/docs/userDocs/submarine-sdk/experiment-client"},{"type":"link","label":"Model Client","href":"/docs/userDocs/submarine-sdk/model-client"},{"type":"link","label":"Tracking","href":"/docs/userDocs/submarine-sdk/tracking"}]},{"collapsed":true,"type":"category","label":"Submarine Security","items":[{"type":"link","label":"Submarine Spark Security Plugin","href":"/docs/userDocs/submarine-security/spark-security/README"},{"type":"link","label":"Building Submarine Spark Security Plugin","href":"/docs/userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin"}]},{"collapsed":true,"type":"category","label":"Others","items":[{"type":"link","label":"MLflow UI","href":"/docs/userDocs/others/mlflow"},{"type":"link","label":"Tensorboard","href":"/docs/userDocs/others/tensorboard"}]}]},{"collapsed":true,"type":"category","label":"Administrator Docs","items":[{"collapsed":true,"type":"category","label":"Submarine on Yarn","items":[{"type":"link","label":"Running Submarine on YARN","href":"/docs/adminDocs/yarn/README"}]}]},{"collapsed":true,"type":"category","label":"Developer Docs","items":[{"type":"link","label":"Project Architecture","href":"/docs/devDocs/README"},{"type":"link","label":"Dependencies for Submarine","href":"/docs/devDocs/Dependencies"},{"type":"link","label":"How to Build Submarine","href":"/docs/devDocs/BuildFromCode"},{"type":"link","label":"Development Guide","href":"/docs/devDocs/Development"},{"type":"link","label":"How to Run Integration K8s Test","href":"/docs/devDocs/IntegrationTestK8s"},{"type":"link","label":"How to Run Frontend Integration Test","href":"/docs/devDocs/IntegrationTestE2E"}]},{"collapsed":true,"type":"category","label":"Community","items":[{"type":"link","label":"Apache Submarine Community","href":"/docs/community/README"},{"type":"link","label":"Guide for Apache Submarine Committers","href":"/docs/community/HowToCommit"},{"type":"link","label":"How To Contribute to Submarine","href":"/docs/community/contributing"}]},{"collapsed":true,"type":"category","label":"Design Docs","items":[{"type":"link","label":"Architecture and Requirment","href":"/docs/designDocs/architecture-and-requirements"},{"type":"link","label":"Implementation Notes","href":"/docs/designDocs/implementation-notes"},{"type":"link","label":"Environments Implementation","href":"/docs/designDocs/environments-implementation"},{"type":"link","label":"Experiment Implementation","href":"/docs/designDocs/experiment-implementation"},{"type":"link","label":"Notebook Implementation","href":"/docs/designDocs/notebook-implementation"},{"type":"link","label":"Storage Implementation","href":"/docs/designDocs/storage-implementation"},{"collapsed":true,"type":"category","label":"Submarine Server","items":[{"type":"link","label":"Submarine Server Implementation","href":"/docs/designDocs/submarine-server/architecture"},{"type":"link","label":"Generic Expeiment Spec","href":"/docs/designDocs/submarine-server/experimentSpec"}]},{"collapsed":true,"type":"category","label":"WIP Design Docs","items":[{"type":"link","label":"Submarine Launcher","href":"/docs/designDocs/wip-designs/submarine-launcher"},{"type":"link","label":"Cluster Server Design - High-Availability","href":"/docs/designDocs/wip-designs/submarine-clusterServer"},{"type":"link","label":"Security Implementation","href":"/docs/designDocs/wip-designs/security-implementation"}]}]},{"collapsed":true,"type":"category","label":"RoadMap","items":[]}],"api":[{"type":"link","label":"Environment REST API","href":"/docs/api/environment"},{"type":"link","label":"Experiment REST API","href":"/docs/api/experiment"},{"type":"link","label":"Experiment Template REST API","href":"/docs/api/experiment-template"},{"type":"link","label":"Notebook REST API","href":"/docs/api/notebook"}]},"permalinkToSidebar":{"/docs/adminDocs/yarn/README":"docs","/docs/api/environment":"api","/docs/api/experiment":"api","/docs/api/experiment-template":"api","/docs/api/notebook":"api","/docs/community/contributing":"docs","/docs/community/HowToCommit":"docs","/docs/community/README":"docs","/docs/designDocs/architecture-and-requirements":"docs","/docs/designDocs/environments-implementation":"docs","/docs/designDocs/experiment-implementation":"docs","/docs/designDocs/implementation-notes":"docs","/docs/designDocs/notebook-implementation":"docs","/docs/designDocs/storage-implementation":"docs","/docs/designDocs/submarine-server/architecture":"docs","/docs/designDocs/submarine-server/experimentSpec":"docs","/docs/designDocs/wip-designs/security-implementation":"docs","/docs/designDocs/wip-designs/submarine-clusterServer":"docs","/docs/designDocs/wip-designs/submarine-launcher":"docs","/docs/devDocs/BuildFromCode":"docs","/docs/devDocs/Dependencies":"docs","/docs/devDocs/Development":"docs","/docs/devDocs/IntegrationTestE2E":"docs","/docs/devDocs/IntegrationTestK8s":"docs","/docs/devDocs/README":"docs","/docs/gettingStarted/notebook":"docs","/docs/gettingStarted/quickstart":"docs","/docs/userDocs/api/environment":"docs","/docs/userDocs/api/experiment":"docs","/docs/userDocs/api/experiment-template":"docs","/docs/userDocs/api/notebook":"docs","/docs/userDocs/others/mlflow":"docs","/docs/userDocs/others/tensorboard":"docs","/docs/userDocs/submarine-sdk/experiment-client":"docs","/docs/userDocs/submarine-sdk/model-client":"docs","/docs/userDocs/submarine-sdk/tracking":"docs","/docs/userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin":"docs","/docs/userDocs/submarine-security/spark-security/README":"docs"}}')}}]);
\ No newline at end of file
diff --git a/59e7e97e.31158bf6.js b/59e7e97e.c89625c2.js
similarity index 97%
rename from 59e7e97e.31158bf6.js
rename to 59e7e97e.c89625c2.js
index 044368a..c6dd44d 100644
--- a/59e7e97e.31158bf6.js
+++ b/59e7e97e.c89625c2.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[43],{110:function(e,n,t){"use strict";t.r(n),t.d(n,"frontMatter",(function(){return o})),t.d(n,"metadata",(function(){return c})),t.d(n,"toc",(function(){return b})),t.d(n,"default",(function(){return s}));var r=t(3),a=t(7),i=(t(0),t(209)),o={title:"Submarine CLI"},c={unversionedId:"userDocs/submarine-sdk/submarine-cli",id:"userDocs/submarine-sdk/submarine-cli",isDocsHomePage:!1,title:"Submarine CLI",description:"\x3c!--",source:"@site/docs/userDocs/submarine-sdk/submarine-cli.md",slug:"/userDocs/submarine-sdk/submarine-cli",permalink:"/docs/next/userDocs/submarine-sdk/submarine-cli",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/userDocs/submarine-sdk/submarine-cli.md",version:"current",sidebar:"docs",previous:{title:"Experiment Client",permalink:"/docs/next/userDocs/submarine-sdk/experiment-client"},next:{title:"Tracking",permalink:"/docs/next/userDocs/submarine-sdk/tracking"}},b=[{value:"Config",id:"config",children:[]},{value:"Init",id:"init",children:[]},{value:"Show current config",id:"show-current-config",children:[]},{value:"Set config",id:"set-config",children:[]},{value:"Get config",id:"get-config",children:[]},{value:"Notebooks",id:"notebooks",children:[{value:"List Notebooks",id:"list-notebooks",children:[]},{value:"Get Notebooks",id:"get-notebooks",children:[]},{value:"Delete Notebooks",id:"delete-notebooks",children:[]}]},{value:"Experiments",id:"experiments",children:[{value:"List Experiments",id:"list-experiments",children:[]},{value:"Get Experiment",id:"get-experiment",children:[]},{value:"Delete Experiment",id:"delete-experiment",children:[]}]},{value:"Environments",id:"environments",children:[{value:"List Environments",id:"list-environments",children:[]},{value:"Get Environments",id:"get-environments",children:[]},{value:"Delete Environments",id:"delete-environments",children:[]}]}],l={toc:b};function s(e){var n=e.components,t=Object(a.a)(e,["components"]);return Object(i.b)("wrapper",Object(r.a)({},l,t,{components:n,mdxType:"MDXLayout"}),Object(i.b)("p",null,"Submarine CLI comes with pysubmarine python package. You can get CLI tools by pip installing apache-submarine."),Object(i.b)("h2",{id:"config"},"Config"),Object(i.b)("p",null,"You can set your CLI settings by this command"),Object(i.b)("h2",{id:"init"},"Init"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"submarine config init \n")),Object(i.b)("p",null,"Return"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"Submarine CLI Config initialized\n")),Object(i.b)("p",null,"Restore CLI config to default (hostname=",Object(i.b)("inlineCode",{parentName:"p"},"localhost"),",port=",Object(i.b)("inlineCode",{parentName:"p"},"32080"),")"),Object(i.b)("h2",{id:"show-current-config"},"Show current config"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"submarine config list \n")),Object(i.b)("p",null,"For example : return"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},'\u256d\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 SubmarineCliConfig \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502 {                                                           \u2502\n\u2502   "connection": {                                           \u2502\n\u2502     "hostname": "localhost",                                \u2502\n\u2502     "port": 32080                                           \u2502\n\u2502   }                                                         \u2502\n\u2502 }                                                           \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n')),Object(i.b)("h2",{id:"set-config"},"Set config"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"submarine config set <parameter_path> <value> \n")),Object(i.b)("p",null,"For example,\nSet connection port to 8080:"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"submarine config set connection.port 8080\n")),Object(i.b)("h2",{id:"get-config"},"Get config"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"submarine config get <parameter_path>\n")),Object(i.b)("p",null,"For example,"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"submarine config get connection.port\n")),Object(i.b)("p",null,"Return"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"connection.port=8080\n")),Object(i.b)("h2",{id:"notebooks"},"Notebooks"),Object(i.b)("h3",{id:"list-notebooks"},"List Notebooks"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"submarine list notebook \n")),Object(i.b)("h3",{id:"get-notebooks"},"Get Notebooks"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"submarine get notebook <notebook id>\n")),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},"you can get notebook id by using ",Object(i.b)("inlineCode",{parentName:"p"},"list command"))),Object(i.b)("h3",{id:"delete-notebooks"},"Delete Notebooks"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"submarine delete notebook <notebook id>\n")),Object(i.b)("h2",{id:"experiments"},"Experiments"),Object(i.b)("h3",{id:"list-experiments"},"List Experiments"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"submarine list experiment \n")),Object(i.b)("h3",{id:"get-experiment"},"Get Experiment"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"submarine get experiment <experiment id>\n")),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},"you can get experiment id by using ",Object(i.b)("inlineCode",{parentName:"p"},"list command"))),Object(i.b)("h3",{id:"delete-experiment"},"Delete Experiment"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"submarine delete experiment <experiment id> [--wait/--no-wait]\n")),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"--wait/--no-wait: blocking or non blocking (default no wait)")),Object(i.b)("h2",{id:"environments"},"Environments"),Object(i.b)("h3",{id:"list-environments"},"List Environments"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"submarine list environment \n")),Object(i.b)("h3",{id:"get-environments"},"Get Environments"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"submarine get environment <environment name>\n")),Object(i.b)("h3",{id:"delete-environments"},"Delete Environments"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"submarine delete experiment <environment name>\n")))}s.isMDXComponent=!0},209:function(e,n,t){"use strict";t.d(n,"a",(function(){return u})),t.d(n,"b",(function(){return d}));var r=t(0),a=t.n(r);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function o(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 c(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?o(Object(t),!0).forEach((function(n){i(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):o(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function b(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)t=i[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)t=i[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var l=a.a.createContext({}),s=function(e){var n=a.a.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):c(c({},n),e)),t},u=function(e){var n=s(e.components);return a.a.createElement(l.Provider,{value:n},e.children)},p={inlineCode:"code",wrapper:function(e){var n=e.children;return a.a.createElement(a.a.Fragment,{},n)}},m=a.a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,i=e.originalType,o=e.parentName,l=b(e,["components","mdxType","originalType","parentName"]),u=s(t),m=r,d=u["".concat(o,".").concat(m)]||u[m]||p[m]||i;return t?a.a.createElement(d,c(c({ref:n},l),{},{components:t})):a.a.createElement(d,c({ref:n},l))}));function d(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var i=t.length,o=new Array(i);o[0]=m;var c={};for(var b in n)hasOwnProperty.call(n,b)&&(c[b]=n[b]);c.originalType=e,c.mdxType="string"==typeof e?e:r,o[1]=c;for(var l=2;l<i;l++)o[l]=t[l];return a.a.createElement.apply(null,o)}return a.a.createElement.apply(null,t)}m.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[39],{106:function(e,n,t){"use strict";t.r(n),t.d(n,"frontMatter",(function(){return o})),t.d(n,"metadata",(function(){return c})),t.d(n,"toc",(function(){return b})),t.d(n,"default",(function(){return s}));var r=t(3),a=t(7),i=(t(0),t(194)),o={title:"Submarine CLI"},c={unversionedId:"userDocs/submarine-sdk/submarine-cli",id:"userDocs/submarine-sdk/submarine-cli",isDocsHomePage:!1,title:"Submarine CLI",description:"\x3c!--",source:"@site/docs/userDocs/submarine-sdk/submarine-cli.md",slug:"/userDocs/submarine-sdk/submarine-cli",permalink:"/docs/next/userDocs/submarine-sdk/submarine-cli",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/userDocs/submarine-sdk/submarine-cli.md",version:"current",sidebar:"docs",previous:{title:"Experiment Client",permalink:"/docs/next/userDocs/submarine-sdk/experiment-client"},next:{title:"Tracking",permalink:"/docs/next/userDocs/submarine-sdk/tracking"}},b=[{value:"Config",id:"config",children:[]},{value:"Init",id:"init",children:[]},{value:"Show current config",id:"show-current-config",children:[]},{value:"Set config",id:"set-config",children:[]},{value:"Get config",id:"get-config",children:[]},{value:"Notebooks",id:"notebooks",children:[{value:"List Notebooks",id:"list-notebooks",children:[]},{value:"Get Notebooks",id:"get-notebooks",children:[]},{value:"Delete Notebooks",id:"delete-notebooks",children:[]}]},{value:"Experiments",id:"experiments",children:[{value:"List Experiments",id:"list-experiments",children:[]},{value:"Get Experiment",id:"get-experiment",children:[]},{value:"Delete Experiment",id:"delete-experiment",children:[]}]},{value:"Environments",id:"environments",children:[{value:"List Environments",id:"list-environments",children:[]},{value:"Get Environments",id:"get-environments",children:[]},{value:"Delete Environments",id:"delete-environments",children:[]}]}],l={toc:b};function s(e){var n=e.components,t=Object(a.a)(e,["components"]);return Object(i.b)("wrapper",Object(r.a)({},l,t,{components:n,mdxType:"MDXLayout"}),Object(i.b)("p",null,"Submarine CLI comes with pysubmarine python package. You can get CLI tools by pip installing apache-submarine."),Object(i.b)("h2",{id:"config"},"Config"),Object(i.b)("p",null,"You can set your CLI settings by this command"),Object(i.b)("h2",{id:"init"},"Init"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"submarine config init \n")),Object(i.b)("p",null,"Return"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"Submarine CLI Config initialized\n")),Object(i.b)("p",null,"Restore CLI config to default (hostname=",Object(i.b)("inlineCode",{parentName:"p"},"localhost"),",port=",Object(i.b)("inlineCode",{parentName:"p"},"32080"),")"),Object(i.b)("h2",{id:"show-current-config"},"Show current config"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"submarine config list \n")),Object(i.b)("p",null,"For example : return"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},'\u256d\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 SubmarineCliConfig \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502 {                                                           \u2502\n\u2502   "connection": {                                           \u2502\n\u2502     "hostname": "localhost",                                \u2502\n\u2502     "port": 32080                                           \u2502\n\u2502   }                                                         \u2502\n\u2502 }                                                           \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n')),Object(i.b)("h2",{id:"set-config"},"Set config"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"submarine config set <parameter_path> <value> \n")),Object(i.b)("p",null,"For example,\nSet connection port to 8080:"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"submarine config set connection.port 8080\n")),Object(i.b)("h2",{id:"get-config"},"Get config"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"submarine config get <parameter_path>\n")),Object(i.b)("p",null,"For example,"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"submarine config get connection.port\n")),Object(i.b)("p",null,"Return"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"connection.port=8080\n")),Object(i.b)("h2",{id:"notebooks"},"Notebooks"),Object(i.b)("h3",{id:"list-notebooks"},"List Notebooks"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"submarine list notebook \n")),Object(i.b)("h3",{id:"get-notebooks"},"Get Notebooks"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"submarine get notebook <notebook id>\n")),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},"you can get notebook id by using ",Object(i.b)("inlineCode",{parentName:"p"},"list command"))),Object(i.b)("h3",{id:"delete-notebooks"},"Delete Notebooks"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"submarine delete notebook <notebook id>\n")),Object(i.b)("h2",{id:"experiments"},"Experiments"),Object(i.b)("h3",{id:"list-experiments"},"List Experiments"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"submarine list experiment \n")),Object(i.b)("h3",{id:"get-experiment"},"Get Experiment"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"submarine get experiment <experiment id>\n")),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},"you can get experiment id by using ",Object(i.b)("inlineCode",{parentName:"p"},"list command"))),Object(i.b)("h3",{id:"delete-experiment"},"Delete Experiment"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"submarine delete experiment <experiment id> [--wait/--no-wait]\n")),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"--wait/--no-wait: blocking or non blocking (default no wait)")),Object(i.b)("h2",{id:"environments"},"Environments"),Object(i.b)("h3",{id:"list-environments"},"List Environments"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"submarine list environment \n")),Object(i.b)("h3",{id:"get-environments"},"Get Environments"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"submarine get environment <environment name>\n")),Object(i.b)("h3",{id:"delete-environments"},"Delete Environments"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"submarine delete experiment <environment name>\n")))}s.isMDXComponent=!0},194:function(e,n,t){"use strict";t.d(n,"a",(function(){return u})),t.d(n,"b",(function(){return d}));var r=t(0),a=t.n(r);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function o(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 c(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?o(Object(t),!0).forEach((function(n){i(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):o(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function b(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)t=i[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)t=i[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var l=a.a.createContext({}),s=function(e){var n=a.a.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):c(c({},n),e)),t},u=function(e){var n=s(e.components);return a.a.createElement(l.Provider,{value:n},e.children)},p={inlineCode:"code",wrapper:function(e){var n=e.children;return a.a.createElement(a.a.Fragment,{},n)}},m=a.a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,i=e.originalType,o=e.parentName,l=b(e,["components","mdxType","originalType","parentName"]),u=s(t),m=r,d=u["".concat(o,".").concat(m)]||u[m]||p[m]||i;return t?a.a.createElement(d,c(c({ref:n},l),{},{components:t})):a.a.createElement(d,c({ref:n},l))}));function d(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var i=t.length,o=new Array(i);o[0]=m;var c={};for(var b in n)hasOwnProperty.call(n,b)&&(c[b]=n[b]);c.originalType=e,c.mdxType="string"==typeof e?e:r,o[1]=c;for(var l=2;l<i;l++)o[l]=t[l];return a.a.createElement.apply(null,o)}return a.a.createElement.apply(null,t)}m.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/5a22443f.bcc802f0.js b/5a22443f.bcc802f0.js
deleted file mode 100644
index af2053d..0000000
--- a/5a22443f.bcc802f0.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[44],{111:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return o})),n.d(t,"metadata",(function(){return c})),n.d(t,"toc",(function(){return b})),n.d(t,"default",(function(){return p}));var a=n(3),r=n(7),i=(n(0),n(209)),o={},c={unversionedId:"adminDocs/yarn/workbench/README",id:"adminDocs/yarn/workbench/README",isDocsHomePage:!1,title:"README",description:"\x3c!--",source:"@site/docs/adminDocs/yarn/workbench/README.md",slug:"/adminDocs/yarn/workbench/README",permalink:"/docs/next/adminDocs/yarn/workbench/README",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/adminDocs/yarn/workbench/README.md",version:"current"},b=[{value:"Register",id:"register",children:[]},{value:"Login",id:"login",children:[]},{value:"Home",id:"home",children:[]},{value:"Workspace",id:"workspace",children:[{value:"Project",id:"project",children:[]},{value:"Release",id:"release",children:[]},{value:"Training",id:"training",children:[]},{value:"Team",id:"team",children:[]},{value:"Shared",id:"shared",children:[]}]},{value:"Interpreters",id:"interpreters",children:[]},{value:"Job",id:"job",children:[]},{value:"Data",id:"data",children:[]},{value:"Model",id:"model",children:[]},{value:"Manager",id:"manager",children:[{value:"User",id:"user",children:[]},{value:"Team",id:"team-1",children:[]},{value:"Data Dict",id:"data-dict",children:[]},{value:"Department",id:"department",children:[]}]},{value:"How to run workbench",id:"how-to-run-workbench",children:[]}],l={toc:b};function p(e){var t=e.components,o=Object(r.a)(e,["components"]);return Object(i.b)("wrapper",Object(a.a)({},l,o,{components:t,mdxType:"MDXLayout"}),Object(i.b)("p",null,"English | ",Object(i.b)("a",{parentName:"p",href:"/docs/next/adminDocs/yarn/workbench/README.zh-CN"},"\u7b80\u4f53\u4e2d\u6587")),Object(i.b)("h1",{id:"submarine-workbench-introduction"},"Submarine Workbench Introduction"),Object(i.b)("p",null,"Submarine Workbench is a WEB system for data scientists.\nData scientists can interactively access notebooks, submit/manage jobs, manage models, create model training workflows, access data sets, and more through Submarine Workbench."),Object(i.b)("h2",{id:"register"},"Register"),Object(i.b)("p",null,"Everyone who needs to use Submarine for machine learning algorithm development can log in to Submarine Workbench's WEB homepage. On the homepage, click the registration link, fill in the user name, email address and password to register the user. At this time, the user status is ",Object(i.b)("inlineCode",{parentName:"p"},"waiting for approval")," status."),Object(i.b)("p",null,"After receiving the registration request from the user in Submarine Workbench, the administrator sets the operation authority according to the user's needs, sets the user's organization and allocates resources, and sets the user status to ",Object(i.b)("inlineCode",{parentName:"p"},"pass the audit"),". The user can log in to the Submarine Workbench. Different users have different permission."),Object(i.b)("h2",{id:"login"},"Login"),Object(i.b)("p",null,"Each Submarine user logs in to the Home page of Submarine Workbench by entering their username and password on the Login page."),Object(i.b)("h2",{id:"home"},"Home"),Object(i.b)("p",null,"In the Submarine Workbench Home page, the top level shows the user's resource usage and task execution through four charts."),Object(i.b)("p",null,"In the ",Object(i.b)("inlineCode",{parentName:"p"},"Quick Start")," list, the most commonly used feature links in the Workbench are displayed so that users can work quickly."),Object(i.b)("p",null,"In the ",Object(i.b)("inlineCode",{parentName:"p"},"Open Recent")," list, there are nine items that the user has used recently, so you can work quickly."),Object(i.b)("p",null,"At ",Object(i.b)("inlineCode",{parentName:"p"},"What's New?")," In the list, some of the latest features and project information released by Submarine are displayed to help you understand the latest developments in the Submarine project."),Object(i.b)("h2",{id:"workspace"},"Workspace"),Object(i.b)("p",null,"Workspace consists primarily of five tab pages, with the total number of items in each tab page's title."),Object(i.b)("h3",{id:"project"},"Project"),Object(i.b)("p",null,"In the Project page, all the projects created by the user themselves are displayed as cards."),Object(i.b)("p",null,Object(i.b)("img",{alt:"image-20191007161424534",src:n(217).default})),Object(i.b)("p",null,"Each Project card consists of the following sections:"),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},Object(i.b)("strong",{parentName:"li"},"Project Type"),"\uff1aSubmarine currently supports six types of machine learning algorithm frameworks and development languages: ",Object(i.b)("inlineCode",{parentName:"li"},"Notebook"),", ",Object(i.b)("inlineCode",{parentName:"li"},"Python"),", ",Object(i.b)("inlineCode",{parentName:"li"},"R"),", ",Object(i.b)("inlineCode",{parentName:"li"},"Scala"),", ",Object(i.b)("inlineCode",{parentName:"li"},"Tensorflow"),", and ",Object(i.b)("inlineCode",{parentName:"li"},"PyTorch"),", which are identified by corresponding icons in the project card."),Object(i.b)("li",{parentName:"ol"},Object(i.b)("strong",{parentName:"li"},"Project Tags"),"\uff1aUsers can tag each Project with different tags for easy searching and management."),Object(i.b)("li",{parentName:"ol"},Object(i.b)("strong",{parentName:"li"},"Github/Gitlab integrated"),"\uff1aSubmarine Workbench is system integrated with ",Object(i.b)("inlineCode",{parentName:"li"},"Github"),"/",Object(i.b)("inlineCode",{parentName:"li"},"Gitlab"),", and each Project can perform ",Object(i.b)("inlineCode",{parentName:"li"},"Watch"),", ",Object(i.b)("inlineCode",{parentName:"li"},"Star"),", ",Object(i.b)("inlineCode",{parentName:"li"},"Fork"),", and ",Object(i.b)("inlineCode",{parentName:"li"},"Comment "),"operations in Workbench.",Object(i.b)("ul",{parentName:"li"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"Watch"),"\uff1a","[TODO]"),Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"Star"),"\uff1a","[TODO]"),Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"Fork"),"\uff1a","[TODO]"),Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"Comment"),"\uff1aUsers can comment on the project."))),Object(i.b)("li",{parentName:"ol"},Object(i.b)("strong",{parentName:"li"},"Edit"),"\uff1aUsers can open projects in ",Object(i.b)("strong",{parentName:"li"},"Notebook")," and perform algorithm development by double-clicking on the project or by clicking the ",Object(i.b)("strong",{parentName:"li"},"Edit")," button."),Object(i.b)("li",{parentName:"ol"},Object(i.b)("strong",{parentName:"li"},"Download"),"\uff1aThe user downloads the project package locally by clicking the ",Object(i.b)("strong",{parentName:"li"},"Download")," button."),Object(i.b)("li",{parentName:"ol"},Object(i.b)("strong",{parentName:"li"},"Setting"),"\uff1aEdit project information such as project name, profile, visibility level and permissions."),Object(i.b)("li",{parentName:"ol"},Object(i.b)("strong",{parentName:"li"},"Delete"),"\uff1aDelete the project and all included files.")),Object(i.b)("h4",{id:"add-new-project"},"Add New Project"),Object(i.b)("p",null,"Clicking the ",Object(i.b)("strong",{parentName:"p"},"Add New Project")," button on the project page will display the guide page for creating the project, and you can create a new project in just three steps."),Object(i.b)("p",null,Object(i.b)("strong",{parentName:"p"},"Step 1"),": Fill in the project name and project description in the ",Object(i.b)("strong",{parentName:"p"},"Base Information")," step."),Object(i.b)("p",null,Object(i.b)("img",{alt:"image-20191007171638338",src:n(218).default})),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},Object(i.b)("strong",{parentName:"p"},"Visibility"),": Set the visibility level of the item externally"),Object(i.b)("ul",{parentName:"li"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"Private"),": (Default) Set to private project, and all the files included in the project are not publicly displayed. but the execution result of the project can be individually set and exposed in Notebook, so that others can view the visual report of the project."),Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"Team"),": Set to team project, select the team name in the team selection box, and other members of the team can access the project according to the set permissions."),Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"Public"),": Set to public project, all users in Workbench can view this project through search."))),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},Object(i.b)("strong",{parentName:"p"},"Permission"),": Set the external access rights of the project. The permission setting interface will appear only when the ",Object(i.b)("strong",{parentName:"p"},"Visibility")," of the project is set to ",Object(i.b)("strong",{parentName:"p"},"Team")," or ",Object(i.b)("strong",{parentName:"p"},"Public"),"."),Object(i.b)("ul",{parentName:"li"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},Object(i.b)("strong",{parentName:"p"},"Can View")),Object(i.b)("p",{parentName:"li"},"When the project's ",Object(i.b)("strong",{parentName:"p"},"Visibility")," is set to ",Object(i.b)("strong",{parentName:"p"},"Team"),", other members of the team can ",Object(i.b)("strong",{parentName:"p"},"only view")," the files for this project."),Object(i.b)("p",{parentName:"li"},"When the project's ",Object(i.b)("strong",{parentName:"p"},"Visibility")," is set to ",Object(i.b)("strong",{parentName:"p"},"Public"),", other members of the Workbench can ",Object(i.b)("strong",{parentName:"p"},"only view")," the files for this project.")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},Object(i.b)("strong",{parentName:"p"},"Can Edit")),Object(i.b)("p",{parentName:"li"},"When the project's ",Object(i.b)("strong",{parentName:"p"},"Visibility")," is set to ",Object(i.b)("strong",{parentName:"p"},"Team"),", other members of the team can ",Object(i.b)("strong",{parentName:"p"},"view")," and ",Object(i.b)("strong",{parentName:"p"},"edit")," the files for this project."),Object(i.b)("p",{parentName:"li"},"When the project's ",Object(i.b)("strong",{parentName:"p"},"Visibility")," is set to ",Object(i.b)("strong",{parentName:"p"},"Public"),", other members of the Workbench can ",Object(i.b)("strong",{parentName:"p"},"view")," and ",Object(i.b)("strong",{parentName:"p"},"edit")," the files for this project.")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},Object(i.b)("strong",{parentName:"p"},"Can Execute")),Object(i.b)("p",{parentName:"li"},"When the project's ",Object(i.b)("strong",{parentName:"p"},"Visibility")," is set to ",Object(i.b)("strong",{parentName:"p"},"Team"),", other members of the team can ",Object(i.b)("strong",{parentName:"p"},"view"),", ",Object(i.b)("strong",{parentName:"p"},"edit"),", and ",Object(i.b)("strong",{parentName:"p"},"execute")," the project's files."),Object(i.b)("p",{parentName:"li"},"When the project's ",Object(i.b)("strong",{parentName:"p"},"Visibility")," is set to ",Object(i.b)("strong",{parentName:"p"},"Public"),", other members of the Workbench can ",Object(i.b)("strong",{parentName:"p"},"view"),", ",Object(i.b)("strong",{parentName:"p"},"edit"),", and ",Object(i.b)("strong",{parentName:"p"},"execute")," the project's files."))))),Object(i.b)("p",null,Object(i.b)("strong",{parentName:"p"},"Step 2"),": In the Initial Project step, Workbench provides four ways to initialize the project."),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},Object(i.b)("strong",{parentName:"p"},"Template"),": Workbench Project templates with several different development languages and algorithm frameworks are built in. You can choose any template to initialize your project and you can execute it directly in Notebook without any modification. It is especially suitable for novices to experience quickly."),Object(i.b)("p",{parentName:"li"},Object(i.b)("img",{alt:"image-20191007184749193",src:n(219).default}))),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},Object(i.b)("strong",{parentName:"p"},"Blank"),"\uff1aCreate a blank project, and later we can manually add the project's file in Notebook"),Object(i.b)("p",{parentName:"li"},Object(i.b)("img",{alt:"image-20191007184811389",src:n(220).default}))),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},Object(i.b)("strong",{parentName:"p"},"Upload"),": Initialize your project by uploading a file in notebook format that is compatible with the ",Object(i.b)("strong",{parentName:"p"},"Jupyter Notebook")," and ",Object(i.b)("strong",{parentName:"p"},"Zeppelin Notebook")," file formats."),Object(i.b)("p",{parentName:"li"},Object(i.b)("img",{alt:"image-20191007184825531",src:n(221).default}))),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},Object(i.b)("strong",{parentName:"p"},"Git Repo"),": Fork a file in the repository to initialize the project in your ",Object(i.b)("strong",{parentName:"p"},"Github"),"/",Object(i.b)("strong",{parentName:"p"},"Gitlab")," account."),Object(i.b)("p",{parentName:"li"},Object(i.b)("img",{alt:"image-20191007184840989",src:n(222).default})))),Object(i.b)("p",null,Object(i.b)("strong",{parentName:"p"},"Step 3"),"\uff1aPreview the included files in the project"),Object(i.b)("p",null,Object(i.b)("img",{alt:"image-20191007191205660",src:n(223).default})),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"Save"),": Save the project to Workspace."),Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"Open In Notebook"),": Save the project to Workspace and open the project with Notebook.")),Object(i.b)("h3",{id:"release"},"Release"),Object(i.b)("p",null,"[TODO]"),Object(i.b)("h3",{id:"training"},"Training"),Object(i.b)("p",null,"[TODO]"),Object(i.b)("h3",{id:"team"},"Team"),Object(i.b)("p",null,"[TODO]"),Object(i.b)("h3",{id:"shared"},"Shared"),Object(i.b)("p",null,"[TODO]"),Object(i.b)("h2",{id:"interpreters"},"Interpreters"),Object(i.b)("p",null,"[TODO]"),Object(i.b)("h2",{id:"job"},"Job"),Object(i.b)("p",null,"[TODO]"),Object(i.b)("h2",{id:"data"},"Data"),Object(i.b)("p",null,"[TODO]"),Object(i.b)("h2",{id:"model"},"Model"),Object(i.b)("p",null,"[TODO]"),Object(i.b)("h2",{id:"manager"},"Manager"),Object(i.b)("h3",{id:"user"},"User"),Object(i.b)("p",null,"[TODO]"),Object(i.b)("h3",{id:"team-1"},"Team"),Object(i.b)("p",null,"[TODO]"),Object(i.b)("h3",{id:"data-dict"},"Data Dict"),Object(i.b)("p",null,"[TODO]"),Object(i.b)("h3",{id:"department"},"Department"),Object(i.b)("p",null,"[TODO]"),Object(i.b)("h2",{id:"how-to-run-workbench"},"How to run workbench"),Object(i.b)("p",null,Object(i.b)("a",{parentName:"p",href:"/docs/next/adminDocs/yarn/workbench/HowToRun"},"How To Run Submarine Workbench Guide")))}p.isMDXComponent=!0},209:function(e,t,n){"use strict";n.d(t,"a",(function(){return s})),n.d(t,"b",(function(){return j}));var a=n(0),r=n.n(a);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function c(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function b(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},i=Object.keys(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=r.a.createContext({}),p=function(e){var t=r.a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):c(c({},t),e)),n},s=function(e){var t=p(e.components);return r.a.createElement(l.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},u=r.a.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,o=e.parentName,l=b(e,["components","mdxType","originalType","parentName"]),s=p(n),u=a,j=s["".concat(o,".").concat(u)]||s[u]||m[u]||i;return n?r.a.createElement(j,c(c({ref:t},l),{},{components:n})):r.a.createElement(j,c({ref:t},l))}));function j(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,o=new Array(i);o[0]=u;var c={};for(var b in t)hasOwnProperty.call(t,b)&&(c[b]=t[b]);c.originalType=e,c.mdxType="string"==typeof e?e:a,o[1]=c;for(var l=2;l<i;l++)o[l]=n[l];return r.a.createElement.apply(null,o)}return r.a.createElement.apply(null,n)}u.displayName="MDXCreateElement"},217:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/workspace-project-8d6fed3c330676f04875f8afe44b59d7.png"},218:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/workspace-project-step1-24bdac8d1ecdfeb14efeab0ba5019716.png"},219:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/workspace-project-step2-template-bec4a76922361fa150df6bffceffbb15.png"},220:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/workspace-project-step2-blank-8a6b9d97a33106329fbfe53920bc40c7.png"},221:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/workspace-project-step2-upload-feb2db0271833adeb422990ca5aa43ba.png"},222:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/workspace-project-step2-git-8431a483307851cd987d2a02264a8ee7.png"},223:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/workspace-project-step3-34283e0a7051d38359a20311745f8aa6.png"}}]);
\ No newline at end of file
diff --git a/5de1a2b0.1a1b3b5b.js b/5de1a2b0.6d503cf4.js
similarity index 95%
rename from 5de1a2b0.1a1b3b5b.js
rename to 5de1a2b0.6d503cf4.js
index 049f297..d1a4159 100644
--- a/5de1a2b0.1a1b3b5b.js
+++ b/5de1a2b0.6d503cf4.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[45],{112:function(e,r,n){"use strict";n.r(r),n.d(r,"frontMatter",(function(){return c})),n.d(r,"metadata",(function(){return u})),n.d(r,"toc",(function(){return s})),n.d(r,"default",(function(){return p}));var t=n(3),a=n(7),i=(n(0),n(209)),c={title:"Building Submarine Spark Security Plugin"},u={unversionedId:"userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin",id:"version-0.6.0/userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin",isDocsHomePage:!1,title:"Building Submarine Spark Security Plugin",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin.md",slug:"/userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin",permalink:"/docs/userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin.md",version:"0.6.0",sidebar:"docs",previous:{title:"Submarine Spark Security Plugin",permalink:"/docs/userDocs/submarine-security/spark-security/README"},next:{title:"MLflow UI",permalink:"/docs/userDocs/others/mlflow"}},s=[],o={toc:s};function p(e){var r=e.components,n=Object(a.a)(e,["components"]);return Object(i.b)("wrapper",Object(t.a)({},o,n,{components:r,mdxType:"MDXLayout"}),Object(i.b)("p",null,"Submarine Spark Security Plugin is built using ",Object(i.b)("a",{parentName:"p",href:"http://maven.apache.org"},"Apache Maven"),". To build it, ",Object(i.b)("inlineCode",{parentName:"p"},"cd")," to the root direct of submarine project and run:"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"mvn clean package -Dmaven.javadoc.skip=true -DskipTests -pl :submarine-spark-security\n")),Object(i.b)("p",null,"By default, Submarine Spark Security Plugin is built against Apache Spark ",Object(i.b)("inlineCode",{parentName:"p"},"2.3.x")," and Apache Ranger ",Object(i.b)("inlineCode",{parentName:"p"},"1.1.0"),", which may be incompatible with other Apache Spark or Apache Ranger releases."),Object(i.b)("p",null,"Currently, available profiles are:"),Object(i.b)("p",null,Object(i.b)("strong",{parentName:"p"},"Spark"),": ",Object(i.b)("inlineCode",{parentName:"p"},"-Pspark-2.3"),", ",Object(i.b)("inlineCode",{parentName:"p"},"-Pspark-2.4"),", ",Object(i.b)("inlineCode",{parentName:"p"},"-Pspark-3.0")),Object(i.b)("p",null,Object(i.b)("strong",{parentName:"p"},"Ranger"),": ",Object(i.b)("inlineCode",{parentName:"p"},"-Pranger-1.2"),", ",Object(i.b)("inlineCode",{parentName:"p"},"-Pranger-2.0")))}p.isMDXComponent=!0},209:function(e,r,n){"use strict";n.d(r,"a",(function(){return l})),n.d(r,"b",(function(){return d}));var t=n(0),a=n.n(t);function i(e,r,n){return r in e?Object.defineProperty(e,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[r]=n,e}function c(e,r){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);r&&(t=t.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),n.push.apply(n,t)}return n}function u(e){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?c(Object(n),!0).forEach((function(r){i(e,r,n[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):c(Object(n)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))}))}return e}function s(e,r){if(null==e)return{};var n,t,a=function(e,r){if(null==e)return{};var n,t,a={},i=Object.keys(e);for(t=0;t<i.length;t++)n=i[t],r.indexOf(n)>=0||(a[n]=e[n]);return a}(e,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(t=0;t<i.length;t++)n=i[t],r.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var o=a.a.createContext({}),p=function(e){var r=a.a.useContext(o),n=r;return e&&(n="function"==typeof e?e(r):u(u({},r),e)),n},l=function(e){var r=p(e.components);return a.a.createElement(o.Provider,{value:r},e.children)},b={inlineCode:"code",wrapper:function(e){var r=e.children;return a.a.createElement(a.a.Fragment,{},r)}},m=a.a.forwardRef((function(e,r){var n=e.components,t=e.mdxType,i=e.originalType,c=e.parentName,o=s(e,["components","mdxType","originalType","parentName"]),l=p(n),m=t,d=l["".concat(c,".").concat(m)]||l[m]||b[m]||i;return n?a.a.createElement(d,u(u({ref:r},o),{},{components:n})):a.a.createElement(d,u({ref:r},o))}));function d(e,r){var n=arguments,t=r&&r.mdxType;if("string"==typeof e||t){var i=n.length,c=new Array(i);c[0]=m;var u={};for(var s in r)hasOwnProperty.call(r,s)&&(u[s]=r[s]);u.originalType=e,u.mdxType="string"==typeof e?e:t,c[1]=u;for(var o=2;o<i;o++)c[o]=n[o];return a.a.createElement.apply(null,c)}return a.a.createElement.apply(null,n)}m.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[40],{107:function(e,r,n){"use strict";n.r(r),n.d(r,"frontMatter",(function(){return c})),n.d(r,"metadata",(function(){return u})),n.d(r,"toc",(function(){return s})),n.d(r,"default",(function(){return p}));var t=n(3),a=n(7),i=(n(0),n(194)),c={title:"Building Submarine Spark Security Plugin"},u={unversionedId:"userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin",id:"version-0.6.0/userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin",isDocsHomePage:!1,title:"Building Submarine Spark Security Plugin",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin.md",slug:"/userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin",permalink:"/docs/userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin.md",version:"0.6.0",sidebar:"docs",previous:{title:"Submarine Spark Security Plugin",permalink:"/docs/userDocs/submarine-security/spark-security/README"},next:{title:"MLflow UI",permalink:"/docs/userDocs/others/mlflow"}},s=[],o={toc:s};function p(e){var r=e.components,n=Object(a.a)(e,["components"]);return Object(i.b)("wrapper",Object(t.a)({},o,n,{components:r,mdxType:"MDXLayout"}),Object(i.b)("p",null,"Submarine Spark Security Plugin is built using ",Object(i.b)("a",{parentName:"p",href:"http://maven.apache.org"},"Apache Maven"),". To build it, ",Object(i.b)("inlineCode",{parentName:"p"},"cd")," to the root direct of submarine project and run:"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"mvn clean package -Dmaven.javadoc.skip=true -DskipTests -pl :submarine-spark-security\n")),Object(i.b)("p",null,"By default, Submarine Spark Security Plugin is built against Apache Spark ",Object(i.b)("inlineCode",{parentName:"p"},"2.3.x")," and Apache Ranger ",Object(i.b)("inlineCode",{parentName:"p"},"1.1.0"),", which may be incompatible with other Apache Spark or Apache Ranger releases."),Object(i.b)("p",null,"Currently, available profiles are:"),Object(i.b)("p",null,Object(i.b)("strong",{parentName:"p"},"Spark"),": ",Object(i.b)("inlineCode",{parentName:"p"},"-Pspark-2.3"),", ",Object(i.b)("inlineCode",{parentName:"p"},"-Pspark-2.4"),", ",Object(i.b)("inlineCode",{parentName:"p"},"-Pspark-3.0")),Object(i.b)("p",null,Object(i.b)("strong",{parentName:"p"},"Ranger"),": ",Object(i.b)("inlineCode",{parentName:"p"},"-Pranger-1.2"),", ",Object(i.b)("inlineCode",{parentName:"p"},"-Pranger-2.0")))}p.isMDXComponent=!0},194:function(e,r,n){"use strict";n.d(r,"a",(function(){return l})),n.d(r,"b",(function(){return d}));var t=n(0),a=n.n(t);function i(e,r,n){return r in e?Object.defineProperty(e,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[r]=n,e}function c(e,r){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);r&&(t=t.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),n.push.apply(n,t)}return n}function u(e){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?c(Object(n),!0).forEach((function(r){i(e,r,n[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):c(Object(n)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))}))}return e}function s(e,r){if(null==e)return{};var n,t,a=function(e,r){if(null==e)return{};var n,t,a={},i=Object.keys(e);for(t=0;t<i.length;t++)n=i[t],r.indexOf(n)>=0||(a[n]=e[n]);return a}(e,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(t=0;t<i.length;t++)n=i[t],r.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var o=a.a.createContext({}),p=function(e){var r=a.a.useContext(o),n=r;return e&&(n="function"==typeof e?e(r):u(u({},r),e)),n},l=function(e){var r=p(e.components);return a.a.createElement(o.Provider,{value:r},e.children)},b={inlineCode:"code",wrapper:function(e){var r=e.children;return a.a.createElement(a.a.Fragment,{},r)}},m=a.a.forwardRef((function(e,r){var n=e.components,t=e.mdxType,i=e.originalType,c=e.parentName,o=s(e,["components","mdxType","originalType","parentName"]),l=p(n),m=t,d=l["".concat(c,".").concat(m)]||l[m]||b[m]||i;return n?a.a.createElement(d,u(u({ref:r},o),{},{components:n})):a.a.createElement(d,u({ref:r},o))}));function d(e,r){var n=arguments,t=r&&r.mdxType;if("string"==typeof e||t){var i=n.length,c=new Array(i);c[0]=m;var u={};for(var s in r)hasOwnProperty.call(r,s)&&(u[s]=r[s]);u.originalType=e,u.mdxType="string"==typeof e?e:t,c[1]=u;for(var o=2;o<i;o++)c[o]=n[o];return a.a.createElement.apply(null,c)}return a.a.createElement.apply(null,n)}m.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/5e036026.96c78b60.js b/5e036026.6c3df0b2.js
similarity index 98%
rename from 5e036026.96c78b60.js
rename to 5e036026.6c3df0b2.js
index e61c724..e7f1e47 100644
--- a/5e036026.96c78b60.js
+++ b/5e036026.6c3df0b2.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[46],{113:function(e,n,t){"use strict";t.r(n),t.d(n,"frontMatter",(function(){return c})),t.d(n,"metadata",(function(){return p})),t.d(n,"toc",(function(){return b})),t.d(n,"default",(function(){return o}));var a=t(3),r=t(7),l=(t(0),t(209)),c={title:"Environment REST API"},p={unversionedId:"userDocs/api/environment",id:"version-0.6.0/userDocs/api/environment",isDocsHomePage:!1,title:"Environment REST API",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/userDocs/api/environment.md",slug:"/userDocs/api/environment",permalink:"/docs/userDocs/api/environment",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/api/environment.md",version:"0.6.0",sidebar:"docs",previous:{title:"Experiment REST API",permalink:"/docs/userDocs/api/experiment"},next:{title:"Experiment Template REST API",permalink:"/docs/userDocs/api/experiment-template"}},b=[{value:"Create Environment",id:"create-environment",children:[{value:"Parameters",id:"parameters",children:[]},{value:"Code Example",id:"code-example",children:[]}]},{value:"List Environment",id:"list-environment",children:[{value:"Code Example",id:"code-example-1",children:[]}]},{value:"Get Environment",id:"get-environment",children:[{value:"Parameters",id:"parameters-1",children:[]},{value:"Code Example",id:"code-example-2",children:[]}]},{value:"Patch Environment",id:"patch-environment",children:[{value:"Parameters",id:"parameters-2",children:[]},{value:"Code Example",id:"code-example-3",children:[]},{value:"Delete Environment",id:"delete-environment",children:[]},{value:"Parameters",id:"parameters-3",children:[]},{value:"Code Example",id:"code-example-4",children:[]}]}],i={toc:b};function o(e){var n=e.components,t=Object(r.a)(e,["components"]);return Object(l.b)("wrapper",Object(a.a)({},i,t,{components:n,mdxType:"MDXLayout"}),Object(l.b)("h2",{id:"create-environment"},"Create Environment"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"POST /api/v1/environment\n")),Object(l.b)("h3",{id:"parameters"},"Parameters"),Object(l.b)("p",null,"Put EnvironmentSpec in request body."),Object(l.b)("h4",{id:"environmentspec"},Object(l.b)("strong",{parentName:"h4"},"EnvironmentSpec")),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Environment name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"dockerImage"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Docker image name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"kernelSpec"),Object(l.b)("td",{parentName:"tr",align:null},"KernelSpec"),Object(l.b)("td",{parentName:"tr",align:null},"Environment spec.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"description"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Description of environment.")))),Object(l.b)("h4",{id:"kernelspec"},Object(l.b)("strong",{parentName:"h4"},"KernelSpec")),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Kernel name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"channels"),Object(l.b)("td",{parentName:"tr",align:null},"List<String",">"),Object(l.b)("td",{parentName:"tr",align:null},"Names of the channels.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"condaDependencies"),Object(l.b)("td",{parentName:"tr",align:null},"List<String",">"),Object(l.b)("td",{parentName:"tr",align:null},"List of kernel conda dependencies.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"pipDependencies"),Object(l.b)("td",{parentName:"tr",align:null},"List<String",">"),Object(l.b)("td",{parentName:"tr",align:null},"List of kernel pip dependencies.")))),Object(l.b)("h3",{id:"code-example"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},'curl -X POST -H "Content-Type: application/json" -d \'\n{\n  "name": "my-submarine-env",\n  "dockerImage" : "continuumio/anaconda3",\n  "kernelSpec" : {\n    "name" : "team_default_python_3.7",\n    "channels" : ["defaults"],\n    "condaDependencies" :\n      ["_ipyw_jlab_nb_ext_conf=0.1.0=py37_0",\n      "alabaster=0.7.12=py37_0",\n      "anaconda=2020.02=py37_0",\n      "anaconda-client=1.7.2=py37_0",\n      "anaconda-navigator=1.9.12=py37_0"],\n    "pipDependencies" :\n      ["apache-submarine==0.5.0",\n      "pyarrow==0.17.0"]\n  }\n}\n\' http://127.0.0.1:32080/api/v1/environment\n')),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    "environmentId":"environment_1626160071451_0001",\n    "environmentSpec":{\n      "name":"my-submarine-env",\n      "dockerImage":"continuumio/anaconda3",\n      "kernelSpec":{\n        "name":"team_default_python_3.7",\n        "channels":["defaults"],\n        "condaDependencies":\n          ["_ipyw_jlab_nb_ext_conf\\u003d0.1.0\\u003dpy37_0",\n          "alabaster\\u003d0.7.12\\u003dpy37_0",\n          "anaconda\\u003d2020.02\\u003dpy37_0",\n          "anaconda-client\\u003d1.7.2\\u003dpy37_0",\n          "anaconda-navigator\\u003d1.9.12\\u003dpy37_0"],\n        "pipDependencies":\n          ["apache-submarine\\u003d\\u003d0.5.0",\n          "pyarrow\\u003d\\u003d0.17.0"]\n      },\n      "description":null,\n      "image":null\n    }\n  },\n  "attributes":{}\n}\n')),Object(l.b)("h2",{id:"list-environment"},"List Environment"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"GET /api/v1/environment\n")),Object(l.b)("h3",{id:"code-example-1"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/environment\n")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":[\n    {\n      "environmentId":"environment_1600862964725_0002",\n      "environmentSpec":{\n        "name":"notebook-gpu-env",\n        "dockerImage":"apache/submarine:jupyter-notebook-gpu-0.7.0-SNAPSHOT",\n        "kernelSpec":{\n          "name":"submarine_jupyter_py3",\n          "channels":["defaults"],\n          "condaDependencies":[],\n          "pipDependencies":[]\n        },\n        "description":null,\n        "image":null\n      }\n    },\n    {\n      "environmentId":"environment_1626160071451_0001",\n      "environmentSpec":{\n        "name":"my-submarine-env",\n        "dockerImage":"continuumio/anaconda3",\n        "kernelSpec":{\n          "name":"team_default_python_3.7",\n          "channels":["defaults"],\n          "condaDependencies":\n            ["_ipyw_jlab_nb_ext_conf\\u003d0.1.0\\u003dpy37_0",\n            "alabaster\\u003d0.7.12\\u003dpy37_0",\n            "anaconda\\u003d2020.02\\u003dpy37_0",\n            "anaconda-client\\u003d1.7.2\\u003dpy37_0",\n            "anaconda-navigator\\u003d1.9.12\\u003dpy37_0"],\n          "pipDependencies":\n            ["apache-submarine\\u003d\\u003d0.5.0",\n            "pyarrow\\u003d\\u003d0.17.0"]\n        },\n        "description":null,\n        "image":null\n      }\n    },\n    {\n      "environmentId":"environment_1600862964725_0001",\n      "environmentSpec":{\n        "name":"notebook-env",\n        "dockerImage":"apache/submarine:jupyter-notebook-0.7.0-SNAPSHOT",\n        "kernelSpec":{\n          "name":"submarine_jupyter_py3",\n          "channels":["defaults"],\n          "condaDependencies":[],\n          "pipDependencies":[]\n        },\n        "description":null,\n        "image":null\n      }\n    }\n  ],\n  "attributes":{}\n}\n')),Object(l.b)("h2",{id:"get-environment"},"Get Environment"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"GET /api/v1/environment/{name}\n")),Object(l.b)("h3",{id:"parameters-1"},"Parameters"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"In"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"path"),Object(l.b)("td",{parentName:"tr",align:null},"Environment name.")))),Object(l.b)("h3",{id:"code-example-2"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/environment/my-submarine-env\n")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    "environmentId":"environment_1626160071451_0001",\n    "environmentSpec":{\n      "name":"my-submarine-env",\n      "dockerImage":"continuumio/anaconda3",\n      "kernelSpec":{\n        "name":"team_default_python_3.7",\n        "channels":["defaults"],\n        "condaDependencies":\n          ["_ipyw_jlab_nb_ext_conf\\u003d0.1.0\\u003dpy37_0",\n          "alabaster\\u003d0.7.12\\u003dpy37_0",\n          "anaconda\\u003d2020.02\\u003dpy37_0",\n          "anaconda-client\\u003d1.7.2\\u003dpy37_0",\n          "anaconda-navigator\\u003d1.9.12\\u003dpy37_0"],\n        "pipDependencies":\n          ["apache-submarine\\u003d\\u003d0.5.0",\n          "pyarrow\\u003d\\u003d0.17.0"]\n      },\n      "description":null,\n      "image":null\n    }\n  },\n  "attributes":{}\n}\n')),Object(l.b)("h2",{id:"patch-environment"},"Patch Environment"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"PATCH /api/v1/environment/{name}\n")),Object(l.b)("h3",{id:"parameters-2"},"Parameters"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"In"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"path and body"),Object(l.b)("td",{parentName:"tr",align:null},"Environment name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"dockerImage"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Docker image name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"kernelSpec"),Object(l.b)("td",{parentName:"tr",align:null},"KernelSpec"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Environment spec.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"description"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Description of environment. This field is optional.")))),Object(l.b)("h3",{id:"code-example-3"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},'curl -X PATCH -H "Content-Type: application/json" -d \'\n{\n  "name": "my-submarine-env",\n  "dockerImage" : "continuumio/anaconda3",\n  "kernelSpec" : {\n    "name" : "team_default_python_3.7_updated",\n    "channels" : ["defaults"],\n    "condaDependencies" :\n      ["_ipyw_jlab_nb_ext_conf=0.1.0=py37_0",\n      "alabaster=0.7.12=py37_0"],\n    "pipDependencies" :\n      []\n  }\n}\n\' http://127.0.0.1:32080/api/v1/environment/my-submarine-env\n')),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    "environmentId":"environment_1626160071451_0003",\n    "environmentSpec":{\n      "name":"my-submarine-env",\n      "dockerImage":"continuumio/anaconda3",\n      "kernelSpec":{\n        "name":"team_default_python_3.7_updated",\n        "channels":["defaults"],\n        "condaDependencies":\n          ["_ipyw_jlab_nb_ext_conf\\u003d0.1.0\\u003dpy37_0",\n          "alabaster\\u003d0.7.12\\u003dpy37_0"],\n        "pipDependencies":[]\n      },\n      "description":null,\n      "image":null\n    }\n  },\n  "attributes":{}\n}\n')),Object(l.b)("h3",{id:"delete-environment"},"Delete Environment"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"DELETE /api/v1/environment/{name}\n")),Object(l.b)("h3",{id:"parameters-3"},"Parameters"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"In"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"path"),Object(l.b)("td",{parentName:"tr",align:null},"Environment name.")))),Object(l.b)("h3",{id:"code-example-4"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},"curl -X DELETE http://127.0.0.1:32080/api/v1/environment/my-submarine-env\n")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    "environmentId":"environment_1626160071451_0001",\n    "environmentSpec":{\n      "name":"my-submarine-env",\n      "dockerImage":"continuumio/anaconda3",\n      "kernelSpec":{\n        "name":"team_default_python_3.7",\n        "channels":["defaults"],\n        "condaDependencies":\n          ["_ipyw_jlab_nb_ext_conf\\u003d0.1.0\\u003dpy37_0",\n          "alabaster\\u003d0.7.12\\u003dpy37_0",\n          "anaconda\\u003d2020.02\\u003dpy37_0",\n          "anaconda-client\\u003d1.7.2\\u003dpy37_0",\n          "anaconda-navigator\\u003d1.9.12\\u003dpy37_0"],\n        "pipDependencies":\n          ["apache-submarine\\u003d\\u003d0.5.0",\n          "pyarrow\\u003d\\u003d0.17.0"]\n      },\n      "description":null,\n      "image":null\n    }\n  },"attributes":{}\n}\n')))}o.isMDXComponent=!0},209:function(e,n,t){"use strict";t.d(n,"a",(function(){return m})),t.d(n,"b",(function(){return s}));var a=t(0),r=t.n(a);function l(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function c(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function p(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?c(Object(t),!0).forEach((function(n){l(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):c(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function b(e,n){if(null==e)return{};var t,a,r=function(e,n){if(null==e)return{};var t,a,r={},l=Object.keys(e);for(a=0;a<l.length;a++)t=l[a],n.indexOf(t)>=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a<l.length;a++)t=l[a],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var i=r.a.createContext({}),o=function(e){var n=r.a.useContext(i),t=n;return e&&(t="function"==typeof e?e(n):p(p({},n),e)),t},m=function(e){var n=o(e.components);return r.a.createElement(i.Provider,{value:n},e.children)},d={inlineCode:"code",wrapper:function(e){var n=e.children;return r.a.createElement(r.a.Fragment,{},n)}},u=r.a.forwardRef((function(e,n){var t=e.components,a=e.mdxType,l=e.originalType,c=e.parentName,i=b(e,["components","mdxType","originalType","parentName"]),m=o(t),u=a,s=m["".concat(c,".").concat(u)]||m[u]||d[u]||l;return t?r.a.createElement(s,p(p({ref:n},i),{},{components:t})):r.a.createElement(s,p({ref:n},i))}));function s(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var l=t.length,c=new Array(l);c[0]=u;var p={};for(var b in n)hasOwnProperty.call(n,b)&&(p[b]=n[b]);p.originalType=e,p.mdxType="string"==typeof e?e:a,c[1]=p;for(var i=2;i<l;i++)c[i]=t[i];return r.a.createElement.apply(null,c)}return r.a.createElement.apply(null,t)}u.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[41],{108:function(e,n,t){"use strict";t.r(n),t.d(n,"frontMatter",(function(){return c})),t.d(n,"metadata",(function(){return p})),t.d(n,"toc",(function(){return b})),t.d(n,"default",(function(){return o}));var a=t(3),r=t(7),l=(t(0),t(194)),c={title:"Environment REST API"},p={unversionedId:"userDocs/api/environment",id:"version-0.6.0/userDocs/api/environment",isDocsHomePage:!1,title:"Environment REST API",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/userDocs/api/environment.md",slug:"/userDocs/api/environment",permalink:"/docs/userDocs/api/environment",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/api/environment.md",version:"0.6.0",sidebar:"docs",previous:{title:"Experiment REST API",permalink:"/docs/userDocs/api/experiment"},next:{title:"Experiment Template REST API",permalink:"/docs/userDocs/api/experiment-template"}},b=[{value:"Create Environment",id:"create-environment",children:[{value:"Parameters",id:"parameters",children:[]},{value:"Code Example",id:"code-example",children:[]}]},{value:"List Environment",id:"list-environment",children:[{value:"Code Example",id:"code-example-1",children:[]}]},{value:"Get Environment",id:"get-environment",children:[{value:"Parameters",id:"parameters-1",children:[]},{value:"Code Example",id:"code-example-2",children:[]}]},{value:"Patch Environment",id:"patch-environment",children:[{value:"Parameters",id:"parameters-2",children:[]},{value:"Code Example",id:"code-example-3",children:[]},{value:"Delete Environment",id:"delete-environment",children:[]},{value:"Parameters",id:"parameters-3",children:[]},{value:"Code Example",id:"code-example-4",children:[]}]}],i={toc:b};function o(e){var n=e.components,t=Object(r.a)(e,["components"]);return Object(l.b)("wrapper",Object(a.a)({},i,t,{components:n,mdxType:"MDXLayout"}),Object(l.b)("h2",{id:"create-environment"},"Create Environment"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"POST /api/v1/environment\n")),Object(l.b)("h3",{id:"parameters"},"Parameters"),Object(l.b)("p",null,"Put EnvironmentSpec in request body."),Object(l.b)("h4",{id:"environmentspec"},Object(l.b)("strong",{parentName:"h4"},"EnvironmentSpec")),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Environment name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"dockerImage"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Docker image name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"kernelSpec"),Object(l.b)("td",{parentName:"tr",align:null},"KernelSpec"),Object(l.b)("td",{parentName:"tr",align:null},"Environment spec.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"description"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Description of environment.")))),Object(l.b)("h4",{id:"kernelspec"},Object(l.b)("strong",{parentName:"h4"},"KernelSpec")),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Kernel name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"channels"),Object(l.b)("td",{parentName:"tr",align:null},"List<String",">"),Object(l.b)("td",{parentName:"tr",align:null},"Names of the channels.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"condaDependencies"),Object(l.b)("td",{parentName:"tr",align:null},"List<String",">"),Object(l.b)("td",{parentName:"tr",align:null},"List of kernel conda dependencies.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"pipDependencies"),Object(l.b)("td",{parentName:"tr",align:null},"List<String",">"),Object(l.b)("td",{parentName:"tr",align:null},"List of kernel pip dependencies.")))),Object(l.b)("h3",{id:"code-example"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},'curl -X POST -H "Content-Type: application/json" -d \'\n{\n  "name": "my-submarine-env",\n  "dockerImage" : "continuumio/anaconda3",\n  "kernelSpec" : {\n    "name" : "team_default_python_3.7",\n    "channels" : ["defaults"],\n    "condaDependencies" :\n      ["_ipyw_jlab_nb_ext_conf=0.1.0=py37_0",\n      "alabaster=0.7.12=py37_0",\n      "anaconda=2020.02=py37_0",\n      "anaconda-client=1.7.2=py37_0",\n      "anaconda-navigator=1.9.12=py37_0"],\n    "pipDependencies" :\n      ["apache-submarine==0.5.0",\n      "pyarrow==0.17.0"]\n  }\n}\n\' http://127.0.0.1:32080/api/v1/environment\n')),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    "environmentId":"environment_1626160071451_0001",\n    "environmentSpec":{\n      "name":"my-submarine-env",\n      "dockerImage":"continuumio/anaconda3",\n      "kernelSpec":{\n        "name":"team_default_python_3.7",\n        "channels":["defaults"],\n        "condaDependencies":\n          ["_ipyw_jlab_nb_ext_conf\\u003d0.1.0\\u003dpy37_0",\n          "alabaster\\u003d0.7.12\\u003dpy37_0",\n          "anaconda\\u003d2020.02\\u003dpy37_0",\n          "anaconda-client\\u003d1.7.2\\u003dpy37_0",\n          "anaconda-navigator\\u003d1.9.12\\u003dpy37_0"],\n        "pipDependencies":\n          ["apache-submarine\\u003d\\u003d0.5.0",\n          "pyarrow\\u003d\\u003d0.17.0"]\n      },\n      "description":null,\n      "image":null\n    }\n  },\n  "attributes":{}\n}\n')),Object(l.b)("h2",{id:"list-environment"},"List Environment"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"GET /api/v1/environment\n")),Object(l.b)("h3",{id:"code-example-1"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/environment\n")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":[\n    {\n      "environmentId":"environment_1600862964725_0002",\n      "environmentSpec":{\n        "name":"notebook-gpu-env",\n        "dockerImage":"apache/submarine:jupyter-notebook-gpu-0.7.0-SNAPSHOT",\n        "kernelSpec":{\n          "name":"submarine_jupyter_py3",\n          "channels":["defaults"],\n          "condaDependencies":[],\n          "pipDependencies":[]\n        },\n        "description":null,\n        "image":null\n      }\n    },\n    {\n      "environmentId":"environment_1626160071451_0001",\n      "environmentSpec":{\n        "name":"my-submarine-env",\n        "dockerImage":"continuumio/anaconda3",\n        "kernelSpec":{\n          "name":"team_default_python_3.7",\n          "channels":["defaults"],\n          "condaDependencies":\n            ["_ipyw_jlab_nb_ext_conf\\u003d0.1.0\\u003dpy37_0",\n            "alabaster\\u003d0.7.12\\u003dpy37_0",\n            "anaconda\\u003d2020.02\\u003dpy37_0",\n            "anaconda-client\\u003d1.7.2\\u003dpy37_0",\n            "anaconda-navigator\\u003d1.9.12\\u003dpy37_0"],\n          "pipDependencies":\n            ["apache-submarine\\u003d\\u003d0.5.0",\n            "pyarrow\\u003d\\u003d0.17.0"]\n        },\n        "description":null,\n        "image":null\n      }\n    },\n    {\n      "environmentId":"environment_1600862964725_0001",\n      "environmentSpec":{\n        "name":"notebook-env",\n        "dockerImage":"apache/submarine:jupyter-notebook-0.7.0-SNAPSHOT",\n        "kernelSpec":{\n          "name":"submarine_jupyter_py3",\n          "channels":["defaults"],\n          "condaDependencies":[],\n          "pipDependencies":[]\n        },\n        "description":null,\n        "image":null\n      }\n    }\n  ],\n  "attributes":{}\n}\n')),Object(l.b)("h2",{id:"get-environment"},"Get Environment"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"GET /api/v1/environment/{name}\n")),Object(l.b)("h3",{id:"parameters-1"},"Parameters"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"In"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"path"),Object(l.b)("td",{parentName:"tr",align:null},"Environment name.")))),Object(l.b)("h3",{id:"code-example-2"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/environment/my-submarine-env\n")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    "environmentId":"environment_1626160071451_0001",\n    "environmentSpec":{\n      "name":"my-submarine-env",\n      "dockerImage":"continuumio/anaconda3",\n      "kernelSpec":{\n        "name":"team_default_python_3.7",\n        "channels":["defaults"],\n        "condaDependencies":\n          ["_ipyw_jlab_nb_ext_conf\\u003d0.1.0\\u003dpy37_0",\n          "alabaster\\u003d0.7.12\\u003dpy37_0",\n          "anaconda\\u003d2020.02\\u003dpy37_0",\n          "anaconda-client\\u003d1.7.2\\u003dpy37_0",\n          "anaconda-navigator\\u003d1.9.12\\u003dpy37_0"],\n        "pipDependencies":\n          ["apache-submarine\\u003d\\u003d0.5.0",\n          "pyarrow\\u003d\\u003d0.17.0"]\n      },\n      "description":null,\n      "image":null\n    }\n  },\n  "attributes":{}\n}\n')),Object(l.b)("h2",{id:"patch-environment"},"Patch Environment"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"PATCH /api/v1/environment/{name}\n")),Object(l.b)("h3",{id:"parameters-2"},"Parameters"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"In"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"path and body"),Object(l.b)("td",{parentName:"tr",align:null},"Environment name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"dockerImage"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Docker image name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"kernelSpec"),Object(l.b)("td",{parentName:"tr",align:null},"KernelSpec"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Environment spec.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"description"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Description of environment. This field is optional.")))),Object(l.b)("h3",{id:"code-example-3"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},'curl -X PATCH -H "Content-Type: application/json" -d \'\n{\n  "name": "my-submarine-env",\n  "dockerImage" : "continuumio/anaconda3",\n  "kernelSpec" : {\n    "name" : "team_default_python_3.7_updated",\n    "channels" : ["defaults"],\n    "condaDependencies" :\n      ["_ipyw_jlab_nb_ext_conf=0.1.0=py37_0",\n      "alabaster=0.7.12=py37_0"],\n    "pipDependencies" :\n      []\n  }\n}\n\' http://127.0.0.1:32080/api/v1/environment/my-submarine-env\n')),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    "environmentId":"environment_1626160071451_0003",\n    "environmentSpec":{\n      "name":"my-submarine-env",\n      "dockerImage":"continuumio/anaconda3",\n      "kernelSpec":{\n        "name":"team_default_python_3.7_updated",\n        "channels":["defaults"],\n        "condaDependencies":\n          ["_ipyw_jlab_nb_ext_conf\\u003d0.1.0\\u003dpy37_0",\n          "alabaster\\u003d0.7.12\\u003dpy37_0"],\n        "pipDependencies":[]\n      },\n      "description":null,\n      "image":null\n    }\n  },\n  "attributes":{}\n}\n')),Object(l.b)("h3",{id:"delete-environment"},"Delete Environment"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"DELETE /api/v1/environment/{name}\n")),Object(l.b)("h3",{id:"parameters-3"},"Parameters"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"In"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"path"),Object(l.b)("td",{parentName:"tr",align:null},"Environment name.")))),Object(l.b)("h3",{id:"code-example-4"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},"curl -X DELETE http://127.0.0.1:32080/api/v1/environment/my-submarine-env\n")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    "environmentId":"environment_1626160071451_0001",\n    "environmentSpec":{\n      "name":"my-submarine-env",\n      "dockerImage":"continuumio/anaconda3",\n      "kernelSpec":{\n        "name":"team_default_python_3.7",\n        "channels":["defaults"],\n        "condaDependencies":\n          ["_ipyw_jlab_nb_ext_conf\\u003d0.1.0\\u003dpy37_0",\n          "alabaster\\u003d0.7.12\\u003dpy37_0",\n          "anaconda\\u003d2020.02\\u003dpy37_0",\n          "anaconda-client\\u003d1.7.2\\u003dpy37_0",\n          "anaconda-navigator\\u003d1.9.12\\u003dpy37_0"],\n        "pipDependencies":\n          ["apache-submarine\\u003d\\u003d0.5.0",\n          "pyarrow\\u003d\\u003d0.17.0"]\n      },\n      "description":null,\n      "image":null\n    }\n  },"attributes":{}\n}\n')))}o.isMDXComponent=!0},194:function(e,n,t){"use strict";t.d(n,"a",(function(){return m})),t.d(n,"b",(function(){return s}));var a=t(0),r=t.n(a);function l(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function c(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function p(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?c(Object(t),!0).forEach((function(n){l(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):c(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function b(e,n){if(null==e)return{};var t,a,r=function(e,n){if(null==e)return{};var t,a,r={},l=Object.keys(e);for(a=0;a<l.length;a++)t=l[a],n.indexOf(t)>=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a<l.length;a++)t=l[a],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var i=r.a.createContext({}),o=function(e){var n=r.a.useContext(i),t=n;return e&&(t="function"==typeof e?e(n):p(p({},n),e)),t},m=function(e){var n=o(e.components);return r.a.createElement(i.Provider,{value:n},e.children)},d={inlineCode:"code",wrapper:function(e){var n=e.children;return r.a.createElement(r.a.Fragment,{},n)}},u=r.a.forwardRef((function(e,n){var t=e.components,a=e.mdxType,l=e.originalType,c=e.parentName,i=b(e,["components","mdxType","originalType","parentName"]),m=o(t),u=a,s=m["".concat(c,".").concat(u)]||m[u]||d[u]||l;return t?r.a.createElement(s,p(p({ref:n},i),{},{components:t})):r.a.createElement(s,p({ref:n},i))}));function s(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var l=t.length,c=new Array(l);c[0]=u;var p={};for(var b in n)hasOwnProperty.call(n,b)&&(p[b]=n[b]);p.originalType=e,p.mdxType="string"==typeof e?e:a,c[1]=p;for(var i=2;i<l;i++)c[i]=t[i];return r.a.createElement.apply(null,c)}return r.a.createElement.apply(null,t)}u.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/5f165a74.c53d41af.js b/5f165a74.93287d3d.js
similarity index 98%
rename from 5f165a74.c53d41af.js
rename to 5f165a74.93287d3d.js
index ad04e18..68e89f8 100644
--- a/5f165a74.c53d41af.js
+++ b/5f165a74.93287d3d.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[47],{114:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return o})),n.d(t,"metadata",(function(){return i})),n.d(t,"toc",(function(){return l})),n.d(t,"default",(function(){return s}));var a=n(3),r=n(7),b=(n(0),n(209)),o={},i={unversionedId:"adminDocs/yarn/workbench/HowToRun",id:"version-0.6.0/adminDocs/yarn/workbench/HowToRun",isDocsHomePage:!1,title:"HowToRun",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/adminDocs/yarn/workbench/HowToRun.md",slug:"/adminDocs/yarn/workbench/HowToRun",permalink:"/docs/adminDocs/yarn/workbench/HowToRun",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/adminDocs/yarn/workbench/HowToRun.md",version:"0.6.0"},l=[{value:"Two versions of Submarine Workbench",id:"two-versions-of-submarine-workbench",children:[]},{value:"Launch the Submarine Workbench(Angular)",id:"launch-the-submarine-workbenchangular",children:[]},{value:"Check the data in the submarine-database",id:"check-the-data-in-the-submarine-database",children:[]},{value:"Run Submarine Workbench",id:"run-submarine-workbench",children:[]},{value:"submarine-env.sh",id:"submarine-envsh",children:[]},{value:"submarine-site.xml",id:"submarine-sitexml",children:[]}],c={toc:l};function s(e){var t=e.components,n=Object(r.a)(e,["components"]);return Object(b.b)("wrapper",Object(a.a)({},c,n,{components:t,mdxType:"MDXLayout"}),Object(b.b)("h1",{id:"how-to-run-submarine-workbench"},"How To Run Submarine Workbench"),Object(b.b)("p",null,"We provide two methods to launch Submarine Workbench"),Object(b.b)("ul",null,Object(b.b)("li",{parentName:"ul"},"Method 1:  Run Submarine Workbench on docker"),Object(b.b)("li",{parentName:"ul"},"Method 2:  Run Submarine Workbench without docker")),Object(b.b)("h1",{id:"run-submarine-workbench-on-docker"},"Run Submarine Workbench on docker"),Object(b.b)("p",null,"By using the official images of Submarine, only a few docker commands are required to launch ",Object(b.b)("strong",{parentName:"p"},"Submarine Workbench"),". The document includes information about how to launch the Submarine Workbench via the new docker images and the information about how to switch between different Submarine Workbench versions(version Vue & version Angular)."),Object(b.b)("h3",{id:"two-versions-of-submarine-workbench"},"Two versions of Submarine Workbench"),Object(b.b)("ol",null,Object(b.b)("li",{parentName:"ol"},"Angular (default)"),Object(b.b)("li",{parentName:"ol"},"Vue (This is the old version, and it will be replaced by version Angular in the future.)")),Object(b.b)("h4",{id:"warning-please-restart-a-new-incognito-window-when-you-switch-to-different-versions-of-submarine-workbench"},"(WARNING: Please restart a new ",Object(b.b)("strong",{parentName:"h4"},"incognito window")," when you switch to different versions of Submarine Workbench)"),Object(b.b)("h3",{id:"launch-the-submarine-workbenchangular"},"Launch the Submarine Workbench(Angular)"),Object(b.b)("ul",null,Object(b.b)("li",{parentName:"ul"},"It should be noted that since Submarine Workbench depends on the Submarine database, so you need to run the docker container of the Submarine database first.")),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre"},"docker run -it -p 3306:3306 -d --name submarine-database -e MYSQL_ROOT_PASSWORD=password apache/submarine:database-<REPLACE_VERSION>\ndocker run -it -p 8080:8080 -d --link=submarine-database:submarine-database --name submarine-server apache/submarine:server-<REPLACE_VERSION>\n")),Object(b.b)("ul",null,Object(b.b)("li",{parentName:"ul"},"The login page of Submarine Workbench will be shown in ",Object(b.b)("inlineCode",{parentName:"li"},"http://127.0.0.1:8080"),".")),Object(b.b)("h3",{id:"check-the-data-in-the-submarine-database"},"Check the data in the submarine-database"),Object(b.b)("ul",null,Object(b.b)("li",{parentName:"ul"},"Step1: Enter the submarine-database container")),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre"},"docker exec -it submarine-database bash\n")),Object(b.b)("ul",null,Object(b.b)("li",{parentName:"ul"},"Step2: Enter MySQL database")),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre"},"mysql -uroot -ppassword\n")),Object(b.b)("ul",null,Object(b.b)("li",{parentName:"ul"},"Step3: List the data in the table")),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre"},"// list all databases\nshow databases;\n\n// choose a database\nuse ${target_database};\n\n// list all tables\nshow tables;\n\n// list the data in the table\nselect * from ${target_table};\n")),Object(b.b)("h1",{id:"run-submarine-workbench-without-docker"},"Run Submarine Workbench without docker"),Object(b.b)("h3",{id:"run-submarine-workbench"},"Run Submarine Workbench"),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre"},"cd submarine\n./bin/submarine-daemon.sh [start|stop|restart]\n")),Object(b.b)("p",null,"To start workbench server, you need to download MySQL jdbc jar and put it in the\npath of workbench/lib for the first time. Or you can add parameter, getMysqlJar,\nto get MySQL jar automatically."),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre"},"cd submarine\n./bin/submarine-daemon.sh start getMysqlJar\n")),Object(b.b)("h3",{id:"submarine-envsh"},"submarine-env.sh"),Object(b.b)("p",null,Object(b.b)("inlineCode",{parentName:"p"},"submarine-env.sh")," is automatically executed each time the ",Object(b.b)("inlineCode",{parentName:"p"},"submarine-daemon.sh")," script is executed, so we can set the ",Object(b.b)("inlineCode",{parentName:"p"},"submarine-daemon.sh")," script and the environment variables in the ",Object(b.b)("inlineCode",{parentName:"p"},"SubmarineServer")," process via ",Object(b.b)("inlineCode",{parentName:"p"},"submarine-env.sh"),"."),Object(b.b)("table",null,Object(b.b)("thead",{parentName:"table"},Object(b.b)("tr",{parentName:"thead"},Object(b.b)("th",{parentName:"tr",align:null},"Name"),Object(b.b)("th",{parentName:"tr",align:null},"Variable"))),Object(b.b)("tbody",{parentName:"table"},Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"JAVA_HOME"),Object(b.b)("td",{parentName:"tr",align:null},"Set your java home path, default is ",Object(b.b)("inlineCode",{parentName:"td"},"java"),".")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"SUBMARINE_JAVA_OPTS"),Object(b.b)("td",{parentName:"tr",align:null},"Set the JAVA OPTS parameter when the Submarine Workbench process starts. If you need to debug the Submarine Workbench process, you can set it to ",Object(b.b)("inlineCode",{parentName:"td"},"-agentlib:jdwp=transport=dt_socket, server=y,suspend=n,address=5005"))),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"SUBMARINE_MEM"),Object(b.b)("td",{parentName:"tr",align:null},"Set the java memory parameter when the Submarine Workbench process starts.")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"MYSQL_JAR_URL"),Object(b.b)("td",{parentName:"tr",align:null},"The customized URL to download MySQL jdbc jar.")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"MYSQL_VERSION"),Object(b.b)("td",{parentName:"tr",align:null},"The version of MySQL jdbc jar to downloaded. The default value is 5.1.39. It's used to generate the default value of MYSQL_JDBC_URL")))),Object(b.b)("h3",{id:"submarine-sitexml"},"submarine-site.xml"),Object(b.b)("p",null,Object(b.b)("inlineCode",{parentName:"p"},"submarine-site.xml")," is the configuration file for the entire ",Object(b.b)("inlineCode",{parentName:"p"},"Submarine")," system to run."),Object(b.b)("table",null,Object(b.b)("thead",{parentName:"table"},Object(b.b)("tr",{parentName:"thead"},Object(b.b)("th",{parentName:"tr",align:null},"Name"),Object(b.b)("th",{parentName:"tr",align:null},"Variable"))),Object(b.b)("tbody",{parentName:"table"},Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"submarine.server.addr"),Object(b.b)("td",{parentName:"tr",align:null},"Submarine server address, default is ",Object(b.b)("inlineCode",{parentName:"td"},"0.0.0.0"))),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"submarine.server.port"),Object(b.b)("td",{parentName:"tr",align:null},"Submarine server port, default ",Object(b.b)("inlineCode",{parentName:"td"},"8080"))),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"submarine.ssl"),Object(b.b)("td",{parentName:"tr",align:null},"Should SSL be used by the Submarine servers?, default ",Object(b.b)("inlineCode",{parentName:"td"},"false"))),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"submarine.server.ssl.port"),Object(b.b)("td",{parentName:"tr",align:null},"Server ssl port. (used when ssl property is set to true), default ",Object(b.b)("inlineCode",{parentName:"td"},"8483"))),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"submarine.ssl.client.auth"),Object(b.b)("td",{parentName:"tr",align:null},"Should client authentication be used for SSL connections?")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"submarine.ssl.keystore.path"),Object(b.b)("td",{parentName:"tr",align:null},"Path to keystore relative to Submarine configuration directory")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"submarine.ssl.keystore.type"),Object(b.b)("td",{parentName:"tr",align:null},"The format of the given keystore (e.g. JKS or PKCS12)")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"submarine.ssl.keystore.password"),Object(b.b)("td",{parentName:"tr",align:null},"Keystore password. Can be obfuscated by the Jetty Password tool")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"submarine.ssl.key.manager.password"),Object(b.b)("td",{parentName:"tr",align:null},"Key Manager password. Defaults to keystore password. Can be obfuscated.")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"submarine.ssl.truststore.path"),Object(b.b)("td",{parentName:"tr",align:null},"Path to truststore relative to Submarine configuration directory. Defaults to the keystore path")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"submarine.ssl.truststore.type"),Object(b.b)("td",{parentName:"tr",align:null},"The format of the given truststore (e.g. JKS or PKCS12). Defaults to the same type as the keystore type")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"submarine.ssl.truststore.password"),Object(b.b)("td",{parentName:"tr",align:null},"Truststore password. Can be obfuscated by the Jetty Password tool. Defaults to the keystore password")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"workbench.web.war"),Object(b.b)("td",{parentName:"tr",align:null},"Submarine Workbench web war file path.")))))}s.isMDXComponent=!0},209:function(e,t,n){"use strict";n.d(t,"a",(function(){return u})),n.d(t,"b",(function(){return p}));var a=n(0),r=n.n(a);function b(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){b(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},b=Object.keys(e);for(a=0;a<b.length;a++)n=b[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var b=Object.getOwnPropertySymbols(e);for(a=0;a<b.length;a++)n=b[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var c=r.a.createContext({}),s=function(e){var t=r.a.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=s(e.components);return r.a.createElement(c.Provider,{value:t},e.children)},d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},m=r.a.forwardRef((function(e,t){var n=e.components,a=e.mdxType,b=e.originalType,o=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),u=s(n),m=a,p=u["".concat(o,".").concat(m)]||u[m]||d[m]||b;return n?r.a.createElement(p,i(i({ref:t},c),{},{components:n})):r.a.createElement(p,i({ref:t},c))}));function p(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var b=n.length,o=new Array(b);o[0]=m;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i.mdxType="string"==typeof e?e:a,o[1]=i;for(var c=2;c<b;c++)o[c]=n[c];return r.a.createElement.apply(null,o)}return r.a.createElement.apply(null,n)}m.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[42],{109:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return o})),n.d(t,"metadata",(function(){return i})),n.d(t,"toc",(function(){return l})),n.d(t,"default",(function(){return s}));var a=n(3),r=n(7),b=(n(0),n(194)),o={},i={unversionedId:"adminDocs/yarn/workbench/HowToRun",id:"version-0.6.0/adminDocs/yarn/workbench/HowToRun",isDocsHomePage:!1,title:"HowToRun",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/adminDocs/yarn/workbench/HowToRun.md",slug:"/adminDocs/yarn/workbench/HowToRun",permalink:"/docs/adminDocs/yarn/workbench/HowToRun",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/adminDocs/yarn/workbench/HowToRun.md",version:"0.6.0"},l=[{value:"Two versions of Submarine Workbench",id:"two-versions-of-submarine-workbench",children:[]},{value:"Launch the Submarine Workbench(Angular)",id:"launch-the-submarine-workbenchangular",children:[]},{value:"Check the data in the submarine-database",id:"check-the-data-in-the-submarine-database",children:[]},{value:"Run Submarine Workbench",id:"run-submarine-workbench",children:[]},{value:"submarine-env.sh",id:"submarine-envsh",children:[]},{value:"submarine-site.xml",id:"submarine-sitexml",children:[]}],c={toc:l};function s(e){var t=e.components,n=Object(r.a)(e,["components"]);return Object(b.b)("wrapper",Object(a.a)({},c,n,{components:t,mdxType:"MDXLayout"}),Object(b.b)("h1",{id:"how-to-run-submarine-workbench"},"How To Run Submarine Workbench"),Object(b.b)("p",null,"We provide two methods to launch Submarine Workbench"),Object(b.b)("ul",null,Object(b.b)("li",{parentName:"ul"},"Method 1:  Run Submarine Workbench on docker"),Object(b.b)("li",{parentName:"ul"},"Method 2:  Run Submarine Workbench without docker")),Object(b.b)("h1",{id:"run-submarine-workbench-on-docker"},"Run Submarine Workbench on docker"),Object(b.b)("p",null,"By using the official images of Submarine, only a few docker commands are required to launch ",Object(b.b)("strong",{parentName:"p"},"Submarine Workbench"),". The document includes information about how to launch the Submarine Workbench via the new docker images and the information about how to switch between different Submarine Workbench versions(version Vue & version Angular)."),Object(b.b)("h3",{id:"two-versions-of-submarine-workbench"},"Two versions of Submarine Workbench"),Object(b.b)("ol",null,Object(b.b)("li",{parentName:"ol"},"Angular (default)"),Object(b.b)("li",{parentName:"ol"},"Vue (This is the old version, and it will be replaced by version Angular in the future.)")),Object(b.b)("h4",{id:"warning-please-restart-a-new-incognito-window-when-you-switch-to-different-versions-of-submarine-workbench"},"(WARNING: Please restart a new ",Object(b.b)("strong",{parentName:"h4"},"incognito window")," when you switch to different versions of Submarine Workbench)"),Object(b.b)("h3",{id:"launch-the-submarine-workbenchangular"},"Launch the Submarine Workbench(Angular)"),Object(b.b)("ul",null,Object(b.b)("li",{parentName:"ul"},"It should be noted that since Submarine Workbench depends on the Submarine database, so you need to run the docker container of the Submarine database first.")),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre"},"docker run -it -p 3306:3306 -d --name submarine-database -e MYSQL_ROOT_PASSWORD=password apache/submarine:database-<REPLACE_VERSION>\ndocker run -it -p 8080:8080 -d --link=submarine-database:submarine-database --name submarine-server apache/submarine:server-<REPLACE_VERSION>\n")),Object(b.b)("ul",null,Object(b.b)("li",{parentName:"ul"},"The login page of Submarine Workbench will be shown in ",Object(b.b)("inlineCode",{parentName:"li"},"http://127.0.0.1:8080"),".")),Object(b.b)("h3",{id:"check-the-data-in-the-submarine-database"},"Check the data in the submarine-database"),Object(b.b)("ul",null,Object(b.b)("li",{parentName:"ul"},"Step1: Enter the submarine-database container")),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre"},"docker exec -it submarine-database bash\n")),Object(b.b)("ul",null,Object(b.b)("li",{parentName:"ul"},"Step2: Enter MySQL database")),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre"},"mysql -uroot -ppassword\n")),Object(b.b)("ul",null,Object(b.b)("li",{parentName:"ul"},"Step3: List the data in the table")),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre"},"// list all databases\nshow databases;\n\n// choose a database\nuse ${target_database};\n\n// list all tables\nshow tables;\n\n// list the data in the table\nselect * from ${target_table};\n")),Object(b.b)("h1",{id:"run-submarine-workbench-without-docker"},"Run Submarine Workbench without docker"),Object(b.b)("h3",{id:"run-submarine-workbench"},"Run Submarine Workbench"),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre"},"cd submarine\n./bin/submarine-daemon.sh [start|stop|restart]\n")),Object(b.b)("p",null,"To start workbench server, you need to download MySQL jdbc jar and put it in the\npath of workbench/lib for the first time. Or you can add parameter, getMysqlJar,\nto get MySQL jar automatically."),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre"},"cd submarine\n./bin/submarine-daemon.sh start getMysqlJar\n")),Object(b.b)("h3",{id:"submarine-envsh"},"submarine-env.sh"),Object(b.b)("p",null,Object(b.b)("inlineCode",{parentName:"p"},"submarine-env.sh")," is automatically executed each time the ",Object(b.b)("inlineCode",{parentName:"p"},"submarine-daemon.sh")," script is executed, so we can set the ",Object(b.b)("inlineCode",{parentName:"p"},"submarine-daemon.sh")," script and the environment variables in the ",Object(b.b)("inlineCode",{parentName:"p"},"SubmarineServer")," process via ",Object(b.b)("inlineCode",{parentName:"p"},"submarine-env.sh"),"."),Object(b.b)("table",null,Object(b.b)("thead",{parentName:"table"},Object(b.b)("tr",{parentName:"thead"},Object(b.b)("th",{parentName:"tr",align:null},"Name"),Object(b.b)("th",{parentName:"tr",align:null},"Variable"))),Object(b.b)("tbody",{parentName:"table"},Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"JAVA_HOME"),Object(b.b)("td",{parentName:"tr",align:null},"Set your java home path, default is ",Object(b.b)("inlineCode",{parentName:"td"},"java"),".")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"SUBMARINE_JAVA_OPTS"),Object(b.b)("td",{parentName:"tr",align:null},"Set the JAVA OPTS parameter when the Submarine Workbench process starts. If you need to debug the Submarine Workbench process, you can set it to ",Object(b.b)("inlineCode",{parentName:"td"},"-agentlib:jdwp=transport=dt_socket, server=y,suspend=n,address=5005"))),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"SUBMARINE_MEM"),Object(b.b)("td",{parentName:"tr",align:null},"Set the java memory parameter when the Submarine Workbench process starts.")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"MYSQL_JAR_URL"),Object(b.b)("td",{parentName:"tr",align:null},"The customized URL to download MySQL jdbc jar.")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"MYSQL_VERSION"),Object(b.b)("td",{parentName:"tr",align:null},"The version of MySQL jdbc jar to downloaded. The default value is 5.1.39. It's used to generate the default value of MYSQL_JDBC_URL")))),Object(b.b)("h3",{id:"submarine-sitexml"},"submarine-site.xml"),Object(b.b)("p",null,Object(b.b)("inlineCode",{parentName:"p"},"submarine-site.xml")," is the configuration file for the entire ",Object(b.b)("inlineCode",{parentName:"p"},"Submarine")," system to run."),Object(b.b)("table",null,Object(b.b)("thead",{parentName:"table"},Object(b.b)("tr",{parentName:"thead"},Object(b.b)("th",{parentName:"tr",align:null},"Name"),Object(b.b)("th",{parentName:"tr",align:null},"Variable"))),Object(b.b)("tbody",{parentName:"table"},Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"submarine.server.addr"),Object(b.b)("td",{parentName:"tr",align:null},"Submarine server address, default is ",Object(b.b)("inlineCode",{parentName:"td"},"0.0.0.0"))),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"submarine.server.port"),Object(b.b)("td",{parentName:"tr",align:null},"Submarine server port, default ",Object(b.b)("inlineCode",{parentName:"td"},"8080"))),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"submarine.ssl"),Object(b.b)("td",{parentName:"tr",align:null},"Should SSL be used by the Submarine servers?, default ",Object(b.b)("inlineCode",{parentName:"td"},"false"))),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"submarine.server.ssl.port"),Object(b.b)("td",{parentName:"tr",align:null},"Server ssl port. (used when ssl property is set to true), default ",Object(b.b)("inlineCode",{parentName:"td"},"8483"))),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"submarine.ssl.client.auth"),Object(b.b)("td",{parentName:"tr",align:null},"Should client authentication be used for SSL connections?")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"submarine.ssl.keystore.path"),Object(b.b)("td",{parentName:"tr",align:null},"Path to keystore relative to Submarine configuration directory")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"submarine.ssl.keystore.type"),Object(b.b)("td",{parentName:"tr",align:null},"The format of the given keystore (e.g. JKS or PKCS12)")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"submarine.ssl.keystore.password"),Object(b.b)("td",{parentName:"tr",align:null},"Keystore password. Can be obfuscated by the Jetty Password tool")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"submarine.ssl.key.manager.password"),Object(b.b)("td",{parentName:"tr",align:null},"Key Manager password. Defaults to keystore password. Can be obfuscated.")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"submarine.ssl.truststore.path"),Object(b.b)("td",{parentName:"tr",align:null},"Path to truststore relative to Submarine configuration directory. Defaults to the keystore path")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"submarine.ssl.truststore.type"),Object(b.b)("td",{parentName:"tr",align:null},"The format of the given truststore (e.g. JKS or PKCS12). Defaults to the same type as the keystore type")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"submarine.ssl.truststore.password"),Object(b.b)("td",{parentName:"tr",align:null},"Truststore password. Can be obfuscated by the Jetty Password tool. Defaults to the keystore password")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"workbench.web.war"),Object(b.b)("td",{parentName:"tr",align:null},"Submarine Workbench web war file path.")))))}s.isMDXComponent=!0},194:function(e,t,n){"use strict";n.d(t,"a",(function(){return u})),n.d(t,"b",(function(){return p}));var a=n(0),r=n.n(a);function b(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){b(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},b=Object.keys(e);for(a=0;a<b.length;a++)n=b[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var b=Object.getOwnPropertySymbols(e);for(a=0;a<b.length;a++)n=b[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var c=r.a.createContext({}),s=function(e){var t=r.a.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=s(e.components);return r.a.createElement(c.Provider,{value:t},e.children)},d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},m=r.a.forwardRef((function(e,t){var n=e.components,a=e.mdxType,b=e.originalType,o=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),u=s(n),m=a,p=u["".concat(o,".").concat(m)]||u[m]||d[m]||b;return n?r.a.createElement(p,i(i({ref:t},c),{},{components:n})):r.a.createElement(p,i({ref:t},c))}));function p(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var b=n.length,o=new Array(b);o[0]=m;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i.mdxType="string"==typeof e?e:a,o[1]=i;for(var c=2;c<b;c++)o[c]=n[c];return r.a.createElement.apply(null,o)}return r.a.createElement.apply(null,n)}m.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/5f825119.8be707a1.js b/5f825119.bc4c3d6a.js
similarity index 92%
rename from 5f825119.8be707a1.js
rename to 5f825119.bc4c3d6a.js
index 93aeb59..dd7a074 100644
--- a/5f825119.8be707a1.js
+++ b/5f825119.bc4c3d6a.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[48],{115:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return o})),n.d(t,"metadata",(function(){return c})),n.d(t,"toc",(function(){return s})),n.d(t,"default",(function(){return b}));var r=n(3),a=n(7),i=(n(0),n(209)),o={title:"Quickstart"},c={unversionedId:"gettingStarted/quickstart",id:"gettingStarted/quickstart",isDocsHomePage:!1,title:"Quickstart",description:"\x3c!--",source:"@site/docs/gettingStarted/quickstart.md",slug:"/gettingStarted/quickstart",permalink:"/docs/next/gettingStarted/quickstart",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/gettingStarted/quickstart.md",version:"current",sidebar:"docs",next:{title:"Jupyter Notebook",permalink:"/docs/next/gettingStarted/notebook"}},s=[{value:"Installation",id:"installation",children:[{value:"Prepare a Kubernetes cluster",id:"prepare-a-kubernetes-cluster",children:[]},{value:"Launch submarine in the cluster",id:"launch-submarine-in-the-cluster",children:[]},{value:"Ensure submarine is ready",id:"ensure-submarine-is-ready",children:[]},{value:"Connect to workbench",id:"connect-to-workbench",children:[]}]},{value:"Example: Submit a mnist distributed example",id:"example-submit-a-mnist-distributed-example",children:[{value:"1. Write a python script for distributed training",id:"1-write-a-python-script-for-distributed-training",children:[]},{value:"2. Prepare an environment compatible with the training",id:"2-prepare-an-environment-compatible-with-the-training",children:[]},{value:"3. Submit the experiment",id:"3-submit-the-experiment",children:[]},{value:"4. Monitor the process",id:"4-monitor-the-process",children:[]},{value:"5. Serve the model (In development)",id:"5-serve-the-model-in-development",children:[]}]}],l={toc:s};function b(e){var t=e.components,o=Object(a.a)(e,["components"]);return Object(i.b)("wrapper",Object(r.a)({},l,o,{components:t,mdxType:"MDXLayout"}),Object(i.b)("p",null,"This document gives you a quick view on the basic usage of Submarine platform. You can finish each step of ML model lifecycle on the platform without messing up with the troublesome environment problems."),Object(i.b)("h2",{id:"installation"},"Installation"),Object(i.b)("h3",{id:"prepare-a-kubernetes-cluster"},"Prepare a Kubernetes cluster"),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},"Prerequisite")),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Check ",Object(i.b)("a",{parentName:"li",href:"https://github.com/apache/submarine/blob/master/website/docs/devDocs/Dependencies.md"},"dependency page")," for the compatible version"),Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",{parentName:"li",href:"https://kubernetes.io/docs/tasks/tools/install-kubectl/"},"kubectl")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",{parentName:"li",href:"https://helm.sh/docs/intro/install/"},"helm")," (Helm v3 is minimum requirement.)"),Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",{parentName:"li",href:"https://minikube.sigs.k8s.io/docs/start/"},"minikube"),".")),Object(i.b)("ol",{start:2},Object(i.b)("li",{parentName:"ol"},"Start minikube cluster")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"minikube start --vm-driver=docker --cpus 8 --memory 4096 --kubernetes-version v1.21.2\n")),Object(i.b)("h3",{id:"launch-submarine-in-the-cluster"},"Launch submarine in the cluster"),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},"Clone the project")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"git clone https://github.com/apache/submarine.git\n")),Object(i.b)("ol",{start:2},Object(i.b)("li",{parentName:"ol"},"Install the submarine operator and dependencies by helm chart")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"cd submarine\nhelm install submarine ./helm-charts/submarine\n")),Object(i.b)("ol",{start:3},Object(i.b)("li",{parentName:"ol"},"Create a Submarine custom resource and the operator will create the submarine server, database, etc. for us.")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"kubectl apply -f submarine-cloud-v2/artifacts/examples/example-submarine.yaml\n")),Object(i.b)("h3",{id:"ensure-submarine-is-ready"},"Ensure submarine is ready"),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},"Use kubectl to query the status of pods")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"kubectl get pods\n")),Object(i.b)("ol",{start:2},Object(i.b)("li",{parentName:"ol"},"Make sure each pod is ",Object(i.b)("inlineCode",{parentName:"li"},"Running"))),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"NAME                                              READY   STATUS    RESTARTS   AGE\nnotebook-controller-deployment-5d4f5f874c-mnbc8   1/1     Running   0          61m\npytorch-operator-844c866d54-xm8nl                 1/1     Running   2          61m\nsubmarine-database-85bd68dbc5-qggtm               1/1     Running   0          11m\nsubmarine-minio-76465444f6-hdgdp                  1/1     Running   0          11m\nsubmarine-mlflow-75f86d8f4d-rj2z7                 1/1     Running   0          11m\nsubmarine-operator-5dd79cdf86-gpm2p               1/1     Running   0          61m\nsubmarine-server-68985b767-vjdvx                  1/1     Running   0          11m\nsubmarine-tensorboard-5df8499fd4-vnklf            1/1     Running   0          11m\nsubmarine-traefik-7cbcfd4bd9-wbf8b                1/1     Running   0          61m\ntf-job-operator-6bb69fd44-zmlmr                   1/1     Running   1          61m\n")),Object(i.b)("h3",{id:"connect-to-workbench"},"Connect to workbench"),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Exposing service"),Object(i.b)("pre",{parentName:"li"},Object(i.b)("code",{parentName:"pre"},"# Method 1 -- use minikube ip\nminikube ip  # you'll get the IP address of minikube, ex: 192.168.49.2\n\n# Method 2 -- use port-forwarding\nkubectl port-forward --address 0.0.0.0 service/submarine-traefik 32080:80\n"))),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"View workbench\nIf you use method 1, go to ",Object(i.b)("inlineCode",{parentName:"p"},"http://{minikube ip}:32080"),". For example, ",Object(i.b)("inlineCode",{parentName:"p"},"http://192.168.49.2:32080"),". If you use method 2, go to ",Object(i.b)("inlineCode",{parentName:"p"},"http://0.0.0.0:32080"),".\n",Object(i.b)("img",{src:n(240).default})))),Object(i.b)("h2",{id:"example-submit-a-mnist-distributed-example"},"Example: Submit a mnist distributed example"),Object(i.b)("p",null,"We put the code of this example ",Object(i.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/tree/master/dev-support/examples/quickstart"},"here"),". ",Object(i.b)("inlineCode",{parentName:"p"},"train.py")," is our training script, and ",Object(i.b)("inlineCode",{parentName:"p"},"build.sh")," is the script to build a docker image."),Object(i.b)("h3",{id:"1-write-a-python-script-for-distributed-training"},"1. Write a python script for distributed training"),Object(i.b)("p",null,"Take a simple mnist tensorflow script as an example. We choose ",Object(i.b)("inlineCode",{parentName:"p"},"MultiWorkerMirroredStrategy")," as our distributed strategy."),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-python"},"\"\"\"\n./dev-support/examples/quickstart/train.py\nReference: https://github.com/kubeflow/tf-operator/blob/master/examples/v1/distribution_strategy/keras-API/multi_worker_strategy-with-keras.py\n\"\"\"\n\nimport tensorflow_datasets as tfds\nimport tensorflow as tf\nfrom tensorflow.keras import layers, models\nimport submarine\n\ndef make_datasets_unbatched():\n  BUFFER_SIZE = 10000\n\n  # Scaling MNIST data from (0, 255] to (0., 1.]\n  def scale(image, label):\n    image = tf.cast(image, tf.float32)\n    image /= 255\n    return image, label\n\n  datasets, _ = tfds.load(name='mnist', with_info=True, as_supervised=True)\n\n  return datasets['train'].map(scale).cache().shuffle(BUFFER_SIZE)\n\n\ndef build_and_compile_cnn_model():\n  model = models.Sequential()\n  model.add(\n      layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)))\n  model.add(layers.MaxPooling2D((2, 2)))\n  model.add(layers.Conv2D(64, (3, 3), activation='relu'))\n  model.add(layers.MaxPooling2D((2, 2)))\n  model.add(layers.Conv2D(64, (3, 3), activation='relu'))\n  model.add(layers.Flatten())\n  model.add(layers.Dense(64, activation='relu'))\n  model.add(layers.Dense(10, activation='softmax'))\n\n  model.summary()\n\n  model.compile(optimizer='adam',\n                loss='sparse_categorical_crossentropy',\n                metrics=['accuracy'])\n\n  return model\n\ndef main():\n  strategy = tf.distribute.experimental.MultiWorkerMirroredStrategy(\n      communication=tf.distribute.experimental.CollectiveCommunication.AUTO)\n\n  BATCH_SIZE_PER_REPLICA = 4\n  BATCH_SIZE = BATCH_SIZE_PER_REPLICA * strategy.num_replicas_in_sync\n\n  with strategy.scope():\n    ds_train = make_datasets_unbatched().batch(BATCH_SIZE).repeat()\n    options = tf.data.Options()\n    options.experimental_distribute.auto_shard_policy = \\\n        tf.data.experimental.AutoShardPolicy.DATA\n    ds_train = ds_train.with_options(options)\n    # Model building/compiling need to be within `strategy.scope()`.\n    multi_worker_model = build_and_compile_cnn_model()\n\n  class MyCallback(tf.keras.callbacks.Callback):\n    def on_epoch_end(self, epoch, logs=None):\n      # monitor the loss and accuracy\n      print(logs)\n      submarine.log_metrics({\"loss\": logs[\"loss\"], \"accuracy\": logs[\"accuracy\"]}, epoch)\n\n  multi_worker_model.fit(ds_train, epochs=10, steps_per_epoch=70, callbacks=[MyCallback()])\n\n\nif __name__ == '__main__':\n  main()\n")),Object(i.b)("h3",{id:"2-prepare-an-environment-compatible-with-the-training"},"2. Prepare an environment compatible with the training"),Object(i.b)("p",null,"Build a docker image equipped with the requirement of the environment."),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"eval $(minikube docker-env)\n./dev-support/examples/quickstart/build.sh\n")),Object(i.b)("h3",{id:"3-submit-the-experiment"},"3. Submit the experiment"),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Open submarine workbench and click ",Object(i.b)("inlineCode",{parentName:"p"},"+ New Experiment"))),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Fill the form accordingly. Here we set 3 workers."),Object(i.b)("ol",{parentName:"li"},Object(i.b)("li",{parentName:"ol"},"Step 1\n",Object(i.b)("img",{src:n(241).default})),Object(i.b)("li",{parentName:"ol"},"Step 2\n",Object(i.b)("img",{src:n(242).default})),Object(i.b)("li",{parentName:"ol"},"Step 3\n",Object(i.b)("img",{src:n(243).default})),Object(i.b)("li",{parentName:"ol"},"The experiment is successfully submitted\n",Object(i.b)("img",{src:n(244).default}))))),Object(i.b)("h3",{id:"4-monitor-the-process"},"4. Monitor the process"),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},"In our code, we use ",Object(i.b)("inlineCode",{parentName:"li"},"submarine")," from ",Object(i.b)("inlineCode",{parentName:"li"},"submarine-sdk")," to record the metrics. To see the result, click corresponding experiment with name ",Object(i.b)("inlineCode",{parentName:"li"},"quickstart")," in the workbench."),Object(i.b)("li",{parentName:"ol"},"To see the metrics of each worker, you can select a worker from the left top list.")),Object(i.b)("p",null,Object(i.b)("img",{src:n(295).default}),"\n",Object(i.b)("img",{src:n(296).default})),Object(i.b)("h3",{id:"5-serve-the-model-in-development"},"5. Serve the model (In development)"))}b.isMDXComponent=!0},209:function(e,t,n){"use strict";n.d(t,"a",(function(){return u})),n.d(t,"b",(function(){return d}));var r=n(0),a=n.n(r);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function c(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=a.a.createContext({}),b=function(e){var t=a.a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):c(c({},t),e)),n},u=function(e){var t=b(e.components);return a.a.createElement(l.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},p=a.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,o=e.parentName,l=s(e,["components","mdxType","originalType","parentName"]),u=b(n),p=r,d=u["".concat(o,".").concat(p)]||u[p]||m[p]||i;return n?a.a.createElement(d,c(c({ref:t},l),{},{components:n})):a.a.createElement(d,c({ref:t},l))}));function d(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=p;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c.mdxType="string"==typeof e?e:r,o[1]=c;for(var l=2;l<i;l++)o[l]=n[l];return a.a.createElement.apply(null,o)}return a.a.createElement.apply(null,n)}p.displayName="MDXCreateElement"},240:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/quickstart-worbench-0d8c2f6217f22460d4cf8e9b05d06f6b.png"},241:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/quickstart-submit-1-666fc27e30765ab0ddad117e3a354814.png"},242:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/quickstart-submit-2-9c78114774db9e88702cc8e72722ceca.png"},243:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/quickstart-submit-3-c412f456d672e509be26040750826a76.png"},244:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/quickstart-submit-4-00c8dfb8d7d8a1bd1fe52f43712fc4a9.png"},295:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/quickstart-ui-1-bce1e94596a49e65fb5c206610f27dba.png"},296:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/quickstart-ui-2-6272b91c4aae8277ebb3500ad6658553.png"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[43],{110:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return o})),n.d(t,"metadata",(function(){return c})),n.d(t,"toc",(function(){return s})),n.d(t,"default",(function(){return b}));var r=n(3),a=n(7),i=(n(0),n(194)),o={title:"Quickstart"},c={unversionedId:"gettingStarted/quickstart",id:"gettingStarted/quickstart",isDocsHomePage:!1,title:"Quickstart",description:"\x3c!--",source:"@site/docs/gettingStarted/quickstart.md",slug:"/gettingStarted/quickstart",permalink:"/docs/next/gettingStarted/quickstart",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/gettingStarted/quickstart.md",version:"current",sidebar:"docs",next:{title:"Jupyter Notebook",permalink:"/docs/next/gettingStarted/notebook"}},s=[{value:"Installation",id:"installation",children:[{value:"Prepare a Kubernetes cluster",id:"prepare-a-kubernetes-cluster",children:[]},{value:"Launch submarine in the cluster",id:"launch-submarine-in-the-cluster",children:[]},{value:"Ensure submarine is ready",id:"ensure-submarine-is-ready",children:[]},{value:"Connect to workbench",id:"connect-to-workbench",children:[]}]},{value:"Example: Submit a mnist distributed example",id:"example-submit-a-mnist-distributed-example",children:[{value:"1. Write a python script for distributed training",id:"1-write-a-python-script-for-distributed-training",children:[]},{value:"2. Prepare an environment compatible with the training",id:"2-prepare-an-environment-compatible-with-the-training",children:[]},{value:"3. Submit the experiment",id:"3-submit-the-experiment",children:[]},{value:"4. Monitor the process",id:"4-monitor-the-process",children:[]},{value:"5. Serve the model (In development)",id:"5-serve-the-model-in-development",children:[]}]}],l={toc:s};function b(e){var t=e.components,o=Object(a.a)(e,["components"]);return Object(i.b)("wrapper",Object(r.a)({},l,o,{components:t,mdxType:"MDXLayout"}),Object(i.b)("p",null,"This document gives you a quick view on the basic usage of Submarine platform. You can finish each step of ML model lifecycle on the platform without messing up with the troublesome environment problems."),Object(i.b)("h2",{id:"installation"},"Installation"),Object(i.b)("h3",{id:"prepare-a-kubernetes-cluster"},"Prepare a Kubernetes cluster"),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},"Prerequisite")),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Check ",Object(i.b)("a",{parentName:"li",href:"https://github.com/apache/submarine/blob/master/website/docs/devDocs/Dependencies.md"},"dependency page")," for the compatible version"),Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",{parentName:"li",href:"https://kubernetes.io/docs/tasks/tools/install-kubectl/"},"kubectl")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",{parentName:"li",href:"https://helm.sh/docs/intro/install/"},"helm")," (Helm v3 is minimum requirement.)"),Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",{parentName:"li",href:"https://minikube.sigs.k8s.io/docs/start/"},"minikube"),".")),Object(i.b)("ol",{start:2},Object(i.b)("li",{parentName:"ol"},"Start minikube cluster")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"minikube start --vm-driver=docker --cpus 8 --memory 4096 --kubernetes-version v1.21.2\n")),Object(i.b)("h3",{id:"launch-submarine-in-the-cluster"},"Launch submarine in the cluster"),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},"Clone the project")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"git clone https://github.com/apache/submarine.git\n")),Object(i.b)("ol",{start:2},Object(i.b)("li",{parentName:"ol"},"Install the submarine operator and dependencies by helm chart")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"cd submarine\nhelm install submarine ./helm-charts/submarine\n")),Object(i.b)("ol",{start:3},Object(i.b)("li",{parentName:"ol"},"Create a Submarine custom resource and the operator will create the submarine server, database, etc. for us.")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"kubectl apply -f submarine-cloud-v2/artifacts/examples/example-submarine.yaml\n")),Object(i.b)("h3",{id:"ensure-submarine-is-ready"},"Ensure submarine is ready"),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},"Use kubectl to query the status of pods")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"kubectl get pods\n")),Object(i.b)("ol",{start:2},Object(i.b)("li",{parentName:"ol"},"Make sure each pod is ",Object(i.b)("inlineCode",{parentName:"li"},"Running"))),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"NAME                                              READY   STATUS    RESTARTS   AGE\nnotebook-controller-deployment-5d4f5f874c-mnbc8   1/1     Running   0          61m\npytorch-operator-844c866d54-xm8nl                 1/1     Running   2          61m\nsubmarine-database-85bd68dbc5-qggtm               1/1     Running   0          11m\nsubmarine-minio-76465444f6-hdgdp                  1/1     Running   0          11m\nsubmarine-mlflow-75f86d8f4d-rj2z7                 1/1     Running   0          11m\nsubmarine-operator-5dd79cdf86-gpm2p               1/1     Running   0          61m\nsubmarine-server-68985b767-vjdvx                  1/1     Running   0          11m\nsubmarine-tensorboard-5df8499fd4-vnklf            1/1     Running   0          11m\nsubmarine-traefik-7cbcfd4bd9-wbf8b                1/1     Running   0          61m\ntf-job-operator-6bb69fd44-zmlmr                   1/1     Running   1          61m\n")),Object(i.b)("h3",{id:"connect-to-workbench"},"Connect to workbench"),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Exposing service"),Object(i.b)("pre",{parentName:"li"},Object(i.b)("code",{parentName:"pre"},"# Method 1 -- use minikube ip\nminikube ip  # you'll get the IP address of minikube, ex: 192.168.49.2\n\n# Method 2 -- use port-forwarding\nkubectl port-forward --address 0.0.0.0 service/submarine-traefik 32080:80\n"))),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"View workbench\nIf you use method 1, go to ",Object(i.b)("inlineCode",{parentName:"p"},"http://{minikube ip}:32080"),". For example, ",Object(i.b)("inlineCode",{parentName:"p"},"http://192.168.49.2:32080"),". If you use method 2, go to ",Object(i.b)("inlineCode",{parentName:"p"},"http://0.0.0.0:32080"),".\n",Object(i.b)("img",{src:n(218).default})))),Object(i.b)("h2",{id:"example-submit-a-mnist-distributed-example"},"Example: Submit a mnist distributed example"),Object(i.b)("p",null,"We put the code of this example ",Object(i.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/tree/master/dev-support/examples/quickstart"},"here"),". ",Object(i.b)("inlineCode",{parentName:"p"},"train.py")," is our training script, and ",Object(i.b)("inlineCode",{parentName:"p"},"build.sh")," is the script to build a docker image."),Object(i.b)("h3",{id:"1-write-a-python-script-for-distributed-training"},"1. Write a python script for distributed training"),Object(i.b)("p",null,"Take a simple mnist tensorflow script as an example. We choose ",Object(i.b)("inlineCode",{parentName:"p"},"MultiWorkerMirroredStrategy")," as our distributed strategy."),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-python"},"\"\"\"\n./dev-support/examples/quickstart/train.py\nReference: https://github.com/kubeflow/tf-operator/blob/master/examples/v1/distribution_strategy/keras-API/multi_worker_strategy-with-keras.py\n\"\"\"\n\nimport tensorflow_datasets as tfds\nimport tensorflow as tf\nfrom tensorflow.keras import layers, models\nimport submarine\n\ndef make_datasets_unbatched():\n  BUFFER_SIZE = 10000\n\n  # Scaling MNIST data from (0, 255] to (0., 1.]\n  def scale(image, label):\n    image = tf.cast(image, tf.float32)\n    image /= 255\n    return image, label\n\n  datasets, _ = tfds.load(name='mnist', with_info=True, as_supervised=True)\n\n  return datasets['train'].map(scale).cache().shuffle(BUFFER_SIZE)\n\n\ndef build_and_compile_cnn_model():\n  model = models.Sequential()\n  model.add(\n      layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)))\n  model.add(layers.MaxPooling2D((2, 2)))\n  model.add(layers.Conv2D(64, (3, 3), activation='relu'))\n  model.add(layers.MaxPooling2D((2, 2)))\n  model.add(layers.Conv2D(64, (3, 3), activation='relu'))\n  model.add(layers.Flatten())\n  model.add(layers.Dense(64, activation='relu'))\n  model.add(layers.Dense(10, activation='softmax'))\n\n  model.summary()\n\n  model.compile(optimizer='adam',\n                loss='sparse_categorical_crossentropy',\n                metrics=['accuracy'])\n\n  return model\n\ndef main():\n  strategy = tf.distribute.experimental.MultiWorkerMirroredStrategy(\n      communication=tf.distribute.experimental.CollectiveCommunication.AUTO)\n\n  BATCH_SIZE_PER_REPLICA = 4\n  BATCH_SIZE = BATCH_SIZE_PER_REPLICA * strategy.num_replicas_in_sync\n\n  with strategy.scope():\n    ds_train = make_datasets_unbatched().batch(BATCH_SIZE).repeat()\n    options = tf.data.Options()\n    options.experimental_distribute.auto_shard_policy = \\\n        tf.data.experimental.AutoShardPolicy.DATA\n    ds_train = ds_train.with_options(options)\n    # Model building/compiling need to be within `strategy.scope()`.\n    multi_worker_model = build_and_compile_cnn_model()\n\n  class MyCallback(tf.keras.callbacks.Callback):\n    def on_epoch_end(self, epoch, logs=None):\n      # monitor the loss and accuracy\n      print(logs)\n      submarine.log_metrics({\"loss\": logs[\"loss\"], \"accuracy\": logs[\"accuracy\"]}, epoch)\n\n  multi_worker_model.fit(ds_train, epochs=10, steps_per_epoch=70, callbacks=[MyCallback()])\n\n\nif __name__ == '__main__':\n  main()\n")),Object(i.b)("h3",{id:"2-prepare-an-environment-compatible-with-the-training"},"2. Prepare an environment compatible with the training"),Object(i.b)("p",null,"Build a docker image equipped with the requirement of the environment."),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"eval $(minikube docker-env)\n./dev-support/examples/quickstart/build.sh\n")),Object(i.b)("h3",{id:"3-submit-the-experiment"},"3. Submit the experiment"),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Open submarine workbench and click ",Object(i.b)("inlineCode",{parentName:"p"},"+ New Experiment"))),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Fill the form accordingly. Here we set 3 workers."),Object(i.b)("ol",{parentName:"li"},Object(i.b)("li",{parentName:"ol"},"Step 1\n",Object(i.b)("img",{src:n(219).default})),Object(i.b)("li",{parentName:"ol"},"Step 2\n",Object(i.b)("img",{src:n(220).default})),Object(i.b)("li",{parentName:"ol"},"Step 3\n",Object(i.b)("img",{src:n(221).default})),Object(i.b)("li",{parentName:"ol"},"The experiment is successfully submitted\n",Object(i.b)("img",{src:n(222).default}))))),Object(i.b)("h3",{id:"4-monitor-the-process"},"4. Monitor the process"),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},"In our code, we use ",Object(i.b)("inlineCode",{parentName:"li"},"submarine")," from ",Object(i.b)("inlineCode",{parentName:"li"},"submarine-sdk")," to record the metrics. To see the result, click corresponding experiment with name ",Object(i.b)("inlineCode",{parentName:"li"},"quickstart")," in the workbench."),Object(i.b)("li",{parentName:"ol"},"To see the metrics of each worker, you can select a worker from the left top list.")),Object(i.b)("p",null,Object(i.b)("img",{src:n(278).default}),"\n",Object(i.b)("img",{src:n(279).default})),Object(i.b)("h3",{id:"5-serve-the-model-in-development"},"5. Serve the model (In development)"))}b.isMDXComponent=!0},194:function(e,t,n){"use strict";n.d(t,"a",(function(){return u})),n.d(t,"b",(function(){return d}));var r=n(0),a=n.n(r);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function c(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=a.a.createContext({}),b=function(e){var t=a.a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):c(c({},t),e)),n},u=function(e){var t=b(e.components);return a.a.createElement(l.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},p=a.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,o=e.parentName,l=s(e,["components","mdxType","originalType","parentName"]),u=b(n),p=r,d=u["".concat(o,".").concat(p)]||u[p]||m[p]||i;return n?a.a.createElement(d,c(c({ref:t},l),{},{components:n})):a.a.createElement(d,c({ref:t},l))}));function d(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=p;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c.mdxType="string"==typeof e?e:r,o[1]=c;for(var l=2;l<i;l++)o[l]=n[l];return a.a.createElement.apply(null,o)}return a.a.createElement.apply(null,n)}p.displayName="MDXCreateElement"},218:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/quickstart-worbench-0d8c2f6217f22460d4cf8e9b05d06f6b.png"},219:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/quickstart-submit-1-666fc27e30765ab0ddad117e3a354814.png"},220:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/quickstart-submit-2-9c78114774db9e88702cc8e72722ceca.png"},221:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/quickstart-submit-3-c412f456d672e509be26040750826a76.png"},222:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/quickstart-submit-4-00c8dfb8d7d8a1bd1fe52f43712fc4a9.png"},278:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/quickstart-ui-1-bce1e94596a49e65fb5c206610f27dba.png"},279:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/quickstart-ui-2-6272b91c4aae8277ebb3500ad6658553.png"}}]);
\ No newline at end of file
diff --git a/6088480f.50a8af32.js b/6088480f.91f560f0.js
similarity index 94%
rename from 6088480f.50a8af32.js
rename to 6088480f.91f560f0.js
index e561a98..90d17da 100644
--- a/6088480f.50a8af32.js
+++ b/6088480f.91f560f0.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[49],{116:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return c})),n.d(t,"metadata",(function(){return i})),n.d(t,"toc",(function(){return p})),n.d(t,"default",(function(){return l}));var a=n(3),r=n(7),b=(n(0),n(209)),c={},i={unversionedId:"adminDocs/yarn/workbench/README.zh-CN",id:"version-0.6.0/adminDocs/yarn/workbench/README.zh-CN",isDocsHomePage:!1,title:"README.zh-CN",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/adminDocs/yarn/workbench/README.zh-CN.md",slug:"/adminDocs/yarn/workbench/README.zh-CN",permalink:"/docs/adminDocs/yarn/workbench/README.zh-CN",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/adminDocs/yarn/workbench/README.zh-CN.md",version:"0.6.0"},p=[{value:"Register",id:"register",children:[]},{value:"Login",id:"login",children:[]},{value:"Home",id:"home",children:[]},{value:"Workspace",id:"workspace",children:[{value:"Project",id:"project",children:[]},{value:"Release",id:"release",children:[]},{value:"Training",id:"training",children:[]},{value:"Team",id:"team",children:[]},{value:"Shared",id:"shared",children:[]}]},{value:"Interpreters",id:"interpreters",children:[]},{value:"Job",id:"job",children:[]},{value:"Data",id:"data",children:[]},{value:"Model",id:"model",children:[]},{value:"Manager",id:"manager",children:[{value:"User",id:"user",children:[]},{value:"Team",id:"team-1",children:[]},{value:"Data Dict",id:"data-dict",children:[]},{value:"Department",id:"department",children:[]}]},{value:"How to run workbench",id:"how-to-run-workbench",children:[]}],o={toc:p};function l(e){var t=e.components,c=Object(r.a)(e,["components"]);return Object(b.b)("wrapper",Object(a.a)({},o,c,{components:t,mdxType:"MDXLayout"}),Object(b.b)("p",null,Object(b.b)("a",{parentName:"p",href:"/docs/adminDocs/yarn/workbench/README"},"English")," | \u7b80\u4f53\u4e2d\u6587"),Object(b.b)("h1",{id:"submarine-workbench-introduction"},"Submarine Workbench Introduction"),Object(b.b)("p",null,Object(b.b)("inlineCode",{parentName:"p"},"Submarine Workbench")," \u662f\u4e3a\u6570\u636e\u79d1\u5b66\u5bb6\u8bbe\u8ba1\u7684 WEB \u7cfb\u7edf\u3002\u6570\u636e\u79d1\u5b66\u5bb6\u53ef\u4ee5\u901a\u8fc7 ",Object(b.b)("inlineCode",{parentName:"p"},"Submarine Workbench")," \u8fdb\u884c\u4ea4\u4e92\u5f0f\u7684\u8bbf\u95ee ",Object(b.b)("inlineCode",{parentName:"p"},"Notebook"),"\uff0c\u63d0\u4ea4/\u7ba1\u7406 Job\uff0c\u7ba1\u7406\u6a21\u578b\uff0c\u521b\u5efa\u6a21\u578b\u8bad\u7ec3\u5de5\u4f5c\u6d41\uff0c\u8bbf\u95ee\u6570\u636e\u96c6\u7b49\u3002"),Object(b.b)("h2",{id:"register"},"Register"),Object(b.b)("p",null,"\u6bcf\u4e2a\u9700\u8981\u4f7f\u7528 Submarine \u8fdb\u884c\u673a\u5668\u5b66\u4e60\u7b97\u6cd5\u5f00\u53d1\u7684\u7528\u6237\uff0c\u90fd\u53ef\u4ee5\u767b\u5f55 ",Object(b.b)("inlineCode",{parentName:"p"},"Submarine Workbench")," \u7684 WEB \u9996\u9875\uff0c\u5728\u9996\u9875\u4e0a\uff0c\u70b9\u51fb\u6ce8\u518c\u94fe\u63a5\uff0c\u586b\u5199\u7528\u6237\u540d\u3001\u6ce8\u518c\u90ae\u7bb1\u548c\u5bc6\u7801\u5c31\u53ef\u4ee5\u5b8c\u6210\u6ce8\u518c\uff0c\u4f46\u6b64\u65f6\u7528\u6237\u72b6\u6001\u4e3a ",Object(b.b)("inlineCode",{parentName:"p"},"\u7b49\u5f85\u5ba1\u6838")," \u72b6\u6001\u3002"),Object(b.b)("p",null,"\u7ba1\u7406\u5458\u5728  ",Object(b.b)("inlineCode",{parentName:"p"},"Submarine Workbench")," \u4e2d\u63a5\u6536\u5230\u7528\u6237\u7684\u6ce8\u518c\u8bf7\u6c42\u540e\uff0c\u8bbe\u7f6e\u7528\u6237\u7684\u64cd\u4f5c\u6743\u9650\uff0c\u6240\u5c5e\u673a\u6784\u90e8\u95e8\u548c\u5206\u914d\u8d44\u6e90\uff0c\u8bbe\u7f6e\u7528\u6237\u72b6\u6001\u4e3a ",Object(b.b)("inlineCode",{parentName:"p"},"\u5ba1\u6838\u901a\u8fc7")," \u540e\uff0c\u7528\u6237\u624d\u53ef\u4ee5\u767b\u5f55 Submarine Workbench\u3002"),Object(b.b)("h2",{id:"login"},"Login"),Object(b.b)("p",null,"\u6bcf\u4e2a Submarine \u7684\u7528\u6237\u5728 ",Object(b.b)("inlineCode",{parentName:"p"},"Login")," \u9875\u9762\u4e2d\u8f93\u5165\u7528\u6237\u540d\u548c\u5bc6\u7801\uff0c\u767b\u5f55\u5230  ",Object(b.b)("inlineCode",{parentName:"p"},"Submarine Workbench")," \u7684\u9996\u9875 ",Object(b.b)("inlineCode",{parentName:"p"},"Home"),"\u3002"),Object(b.b)("h2",{id:"home"},"Home"),Object(b.b)("p",null,"\u5728 ",Object(b.b)("inlineCode",{parentName:"p"},"Submarine Workbench")," \u7684 ",Object(b.b)("inlineCode",{parentName:"p"},"Home")," \u9996\u9875\u4e2d\uff0c\u9876\u5c42\u901a\u8fc7\u56db\u4e2a\u56fe\u8868\u663e\u793a\u4e86\u7528\u6237\u7684\u8d44\u6e90\u7684\u4f7f\u7528\u60c5\u51b5\u548c\u4efb\u52a1\u6267\u884c\u7684\u60c5\u51b5\u3002"),Object(b.b)("p",null,"\u5728 ",Object(b.b)("inlineCode",{parentName:"p"},"Quick Start")," \u5217\u8868\u4e2d\uff0c\u663e\u793a\u4e86 Workbench \u4e2d\u6700\u5e38\u4f7f\u7528\u7684\u529f\u80fd\u94fe\u63a5\uff0c\u65b9\u4fbf\u7528\u6237\u53ef\u4ee5\u5feb\u901f\u7684\u8fdb\u884c\u5de5\u4f5c\u3002"),Object(b.b)("p",null,"\u5728 ",Object(b.b)("inlineCode",{parentName:"p"},"Open Recent")," \u5217\u8868\u4e2d\uff0c\u663e\u793a\u4e86\u7528\u6237\u6700\u8fd1\u4f7f\u7528\u8fc7\u7684\u4e5d\u4e2a\u9879\u76ee\uff0c\u65b9\u4fbf\u4f60\u5feb\u901f\u7684\u8fdb\u884c\u5de5\u4f5c\u3002"),Object(b.b)("p",null,"\u5728 ",Object(b.b)("inlineCode",{parentName:"p"},"What\u2018s New\uff1f")," \u5217\u8868\u4e2d\uff0c\u663e\u793a\u4e86 Submarine \u6700\u65b0\u53d1\u5e03\u7684\u4e00\u4e9b\u529f\u80fd\u7279\u6027\u548c\u9879\u76ee\u4fe1\u606f\uff0c\u65b9\u4fbf\u4f60\u4e86\u89e3 Submarine \u9879\u76ee\u7684\u6700\u65b0\u8fdb\u5c55\u3002"),Object(b.b)("h2",{id:"workspace"},"Workspace"),Object(b.b)("p",null,"Workspace \u4e3b\u8981\u6709\u4e94\u4e2a Tab \u9875\u7ec4\u6210\uff0c\u6bcf\u4e2a Tab \u9875\u7684\u6807\u9898\u4e2d\u663e\u793a\u4e86\u5404\u81ea\u9879\u76ee\u7684\u603b\u6570\u3002"),Object(b.b)("h3",{id:"project"},"Project"),Object(b.b)("p",null,"\u5728 Project \u9875\u9762\u4e2d\uff0c\u4ee5\u5361\u7247\u7684\u65b9\u5f0f\u663e\u793a\u4e86\u7528\u6237\u81ea\u5df1\u521b\u5efa\u7684\u6240\u6709 Project\u3002"),Object(b.b)("p",null,Object(b.b)("img",{alt:"image-20191007161424534",src:n(217).default})),Object(b.b)("p",null,"\u6bcf\u4e2a Project \u5361\u7247\u7531\u4ee5\u4e0b\u90e8\u5206\u5185\u5bb9\u7ec4\u6210\uff1a"),Object(b.b)("ol",null,Object(b.b)("li",{parentName:"ol"},Object(b.b)("strong",{parentName:"li"},"Project \u7c7b\u578b"),"\uff1a\u76ee\u524d Submarine \u652f\u6301 ",Object(b.b)("inlineCode",{parentName:"li"},"Notebook"),"\u3001",Object(b.b)("inlineCode",{parentName:"li"},"Python"),"\u3001",Object(b.b)("inlineCode",{parentName:"li"},"R"),"\u3001",Object(b.b)("inlineCode",{parentName:"li"},"Scala"),"\u3001",Object(b.b)("inlineCode",{parentName:"li"},"Tensorflow")," \u548c ",Object(b.b)("inlineCode",{parentName:"li"},"PyTorch")," \u8fd9\u516d\u79cd\u7c7b\u578b\u7684\u673a\u5668\u5b66\u4e60\u7b97\u6cd5\u6846\u67b6\u548c\u5f00\u53d1\u8bed\u8a00\uff0c\u5728\u9879\u76ee\u5361\u7247\u4e2d\u4ee5\u5bf9\u5e94\u7684\u56fe\u6807\u8fdb\u884c\u6807\u8bc6\u3002"),Object(b.b)("li",{parentName:"ol"},Object(b.b)("strong",{parentName:"li"},"Project Tags"),"\uff1a\u7528\u6237\u53ef\u4ee5\u4e3a\u6bcf\u4e2a Project \u6253\u4e0a\u4e0d\u540c\u7684 ",Object(b.b)("inlineCode",{parentName:"li"},"Tag")," \u6807\u7b7e\uff0c\u65b9\u4fbf\u67e5\u627e\u548c\u7ba1\u7406\u3002"),Object(b.b)("li",{parentName:"ol"},Object(b.b)("strong",{parentName:"li"},"Github/Gitlab \u96c6\u6210"),"\uff1aSubmarine Workbench \u4e0e ",Object(b.b)("inlineCode",{parentName:"li"},"Github"),"/",Object(b.b)("inlineCode",{parentName:"li"},"Gitlab")," \u8fdb\u884c\u4e86\u7cfb\u7edf\u96c6\u6210\uff0c\u6bcf\u4e2a Project \u90fd\u53ef\u4ee5\u5728 Workbench \u4e2d\u8fdb\u884c ",Object(b.b)("inlineCode",{parentName:"li"},"Watch"),"\u3001",Object(b.b)("inlineCode",{parentName:"li"},"Star"),"\u3001",Object(b.b)("inlineCode",{parentName:"li"},"Frok")," \u548c ",Object(b.b)("inlineCode",{parentName:"li"},"Comment")," \u64cd\u4f5c\u3002",Object(b.b)("ul",{parentName:"li"},Object(b.b)("li",{parentName:"ul"},Object(b.b)("strong",{parentName:"li"},"Watch"),"\uff1a","[TODO]"),Object(b.b)("li",{parentName:"ul"},Object(b.b)("strong",{parentName:"li"},"Star"),"\uff1a","[TODO]"),Object(b.b)("li",{parentName:"ul"},Object(b.b)("strong",{parentName:"li"},"Fork"),"\uff1a","[TODO]"),Object(b.b)("li",{parentName:"ul"},Object(b.b)("strong",{parentName:"li"},"Comment"),"\uff1a\u7528\u6237\u53ef\u4ee5\u5728\u9879\u76ee\u4e2d\u8fdb\u884c\u8bc4\u8bba"))),Object(b.b)("li",{parentName:"ol"},Object(b.b)("strong",{parentName:"li"},"Edit"),"\uff1a\u7528\u6237\u901a\u8fc7\u53cc\u51fb\u9879\u76ee\u6216\u8005\u70b9\u51fb ",Object(b.b)("inlineCode",{parentName:"li"},"Edit")," \u6309\u94ae\uff0c\u53ef\u4ee5\u5728 ",Object(b.b)("inlineCode",{parentName:"li"},"Notebook")," \u4e2d\u6253\u5f00\u9879\u76ee\uff0c\u8fdb\u884c\u7b97\u6cd5\u5f00\u53d1\u7b49\u64cd\u4f5c\u3002"),Object(b.b)("li",{parentName:"ol"},Object(b.b)("strong",{parentName:"li"},"Download"),"\uff1a\u7528\u6237\u901a\u8fc7\u70b9\u51fb ",Object(b.b)("inlineCode",{parentName:"li"},"Download")," \u6309\u94ae\uff0c\u5c06\u9879\u76ee\u6253\u5305\u4e0b\u8f7d\u5230\u672c\u5730\u3002"),Object(b.b)("li",{parentName:"ol"},Object(b.b)("strong",{parentName:"li"},"Setting"),"\uff1a\u7f16\u8f91\u9879\u76ee\u4fe1\u606f\uff0c\u4f8b\u5982\u9879\u76ee\u7684\u540d\u5b57\uff0c\u7b80\u4ecb\uff0c\u5206\u4eab\u7ea7\u522b\u548c\u6743\u9650\u3002"),Object(b.b)("li",{parentName:"ol"},Object(b.b)("strong",{parentName:"li"},"Delete"),"\uff1a\u5220\u9664\u9879\u76ee\u4e2d\u6240\u6709\u5305\u542b\u7684\u6587\u4ef6\u3002")),Object(b.b)("h4",{id:"add-new-project"},"Add New Project"),Object(b.b)("p",null,"\u5728\u9879\u76ee\u9875\u9762\u4e2d\u70b9\u51fb ",Object(b.b)("inlineCode",{parentName:"p"},"Add New Project")," \u6309\u94ae\uff0c\u5c06\u4f1a\u663e\u793a\u51fa\u521b\u5efa\u9879\u76ee\u7684\u5f15\u5bfc\u9875\u9762\uff0c\u53ea\u9700\u8981\u4e09\u4e2a\u6b65\u9aa4\u5c31\u53ef\u4ee5\u521b\u5efa\u4e00\u4e2a\u65b0\u7684\u9879\u76ee\u3002"),Object(b.b)("p",null,"\u7b2c\u4e00\u6b65\uff1a\u5728 ",Object(b.b)("strong",{parentName:"p"},"Base Information")," \u6b65\u9aa4\u4e2d\u586b\u5199\u9879\u76ee\u540d\u79f0\u3001\u9879\u76ee\u7b80\u4ecb\u3002"),Object(b.b)("p",null,Object(b.b)("img",{alt:"image-20191007171638338",src:n(218).default})),Object(b.b)("ul",null,Object(b.b)("li",{parentName:"ul"},Object(b.b)("p",{parentName:"li"},Object(b.b)("strong",{parentName:"p"},"Visibility"),": \u8bbe\u7f6e\u9879\u76ee\u5bf9\u5916\u7684\u53ef\u89c1\u7ea7\u522b"),Object(b.b)("ul",{parentName:"li"},Object(b.b)("li",{parentName:"ul"},Object(b.b)("strong",{parentName:"li"},"Private"),": \uff08\u9ed8\u8ba4\uff09\u8bbe\u7f6e\u4e3a\u79c1\u6709\u9879\u76ee\uff0c\u4e0d\u5bf9\u5916\u516c\u5f00\u9879\u76ee\u4e2d\u5305\u542b\u7684\u6240\u6709\u6587\u4ef6\uff0c\u4f46\u662f\u53ef\u4ee5\u5728 ",Object(b.b)("strong",{parentName:"li"},"Notebook")," \u4e2d\u5c06\u9879\u76ee\u7684\u6267\u884c\u7ed3\u679c\u5355\u72ec\u8bbe\u7f6e\u516c\u5f00\uff0c\u65b9\u4fbf\u5176\u4ed6\u4eba\u67e5\u770b\u9879\u76ee\u7684\u53ef\u89c6\u5316\u62a5\u544a\u3002"),Object(b.b)("li",{parentName:"ul"},Object(b.b)("strong",{parentName:"li"},"Team"),": \u8bbe\u7f6e\u4e3a\u56e2\u961f\u9879\u76ee\uff0c\u5728\u56e2\u961f\u9009\u62e9\u6846\u4e2d\u9009\u62e9\u56e2\u961f\u7684\u540d\u79f0\uff0c\u56e2\u961f\u7684\u5176\u4ed6\u6210\u5458\u53ef\u4ee5\u6839\u636e\u8bbe\u7f6e\u7684\u6743\u9650\u8bbf\u95ee\u8fd9\u4e2a\u9879\u76ee\u3002"),Object(b.b)("li",{parentName:"ul"},Object(b.b)("strong",{parentName:"li"},"Public"),": \u8bbe\u7f6e\u4e3a\u516c\u5f00\u9879\u76ee\uff0c",Object(b.b)("strong",{parentName:"li"},"Workbench")," \u4e2d\u7684\u6240\u6709\u7528\u6237\u90fd\u53ef\u4ee5\u901a\u8fc7\u641c\u7d22\u67e5\u770b\u5230\u8fd9\u4e2a\u9879\u76ee\u3002"))),Object(b.b)("li",{parentName:"ul"},Object(b.b)("p",{parentName:"li"},Object(b.b)("strong",{parentName:"p"},"Permission"),": \u8bbe\u7f6e\u9879\u76ee\u5bf9\u5916\u7684\u8bbf\u95ee\u6743\u9650\uff0c\u53ea\u6709\u5c06\u9879\u76ee\u7684 ",Object(b.b)("strong",{parentName:"p"},"Visibility")," \u8bbe\u7f6e\u4e3a ",Object(b.b)("strong",{parentName:"p"},"Team")," \u6216 ",Object(b.b)("strong",{parentName:"p"},"Public")," \u7684\u65f6\u5019\uff0c\u624d\u4f1a\u51fa\u73b0\u6743\u9650\u8bbe\u7f6e\u754c\u9762\u3002"),Object(b.b)("ul",{parentName:"li"},Object(b.b)("li",{parentName:"ul"},Object(b.b)("p",{parentName:"li"},Object(b.b)("strong",{parentName:"p"},"Can View")),Object(b.b)("p",{parentName:"li"},"\u5f53\u9879\u76ee\u7684 ",Object(b.b)("strong",{parentName:"p"},"Visibility")," \u8bbe\u7f6e\u4e3a ",Object(b.b)("strong",{parentName:"p"},"Team")," \u65f6\uff0c\u56e2\u961f\u4e2d\u5176\u4ed6\u6210\u5458\u90fd\u53ea\u80fd",Object(b.b)("strong",{parentName:"p"},"\u67e5\u770b"),"\u8fd9\u4e2a\u9879\u76ee\u7684\u6587\u4ef6\u3002"),Object(b.b)("p",{parentName:"li"},"\u5f53\u9879\u76ee\u7684 Visibility \u8bbe\u7f6e\u4e3a ",Object(b.b)("strong",{parentName:"p"},"Public")," \u65f6\uff0c",Object(b.b)("strong",{parentName:"p"},"Workbench")," \u4e2d\u5176\u4ed6\u6210\u5458\u90fd\u53ea\u80fd",Object(b.b)("strong",{parentName:"p"},"\u67e5\u770b"),"\u8fd9\u4e2a\u9879\u76ee\u7684\u6587\u4ef6\u3002")),Object(b.b)("li",{parentName:"ul"},Object(b.b)("p",{parentName:"li"},Object(b.b)("strong",{parentName:"p"},"Can Edit")),Object(b.b)("p",{parentName:"li"},"\u5f53\u9879\u76ee\u7684 ",Object(b.b)("strong",{parentName:"p"},"Visibility")," \u8bbe\u7f6e\u4e3a ",Object(b.b)("strong",{parentName:"p"},"Team")," \u65f6\uff0c\u56e2\u961f\u4e2d\u5176\u4ed6\u6210\u5458\u90fd\u53ef\u4ee5",Object(b.b)("strong",{parentName:"p"},"\u67e5\u770b"),"\u3001",Object(b.b)("strong",{parentName:"p"},"\u7f16\u8f91"),"\u8fd9\u4e2a\u9879\u76ee\u7684\u6587\u4ef6\u3002"),Object(b.b)("p",{parentName:"li"},"\u5f53\u9879\u76ee\u7684 ",Object(b.b)("strong",{parentName:"p"},"Visibility")," \u8bbe\u7f6e\u4e3a ",Object(b.b)("strong",{parentName:"p"},"Public")," \u65f6\uff0c",Object(b.b)("strong",{parentName:"p"},"Workbench")," \u4e2d\u5176\u4ed6\u6210\u5458\u90fd\u53ef\u4ee5",Object(b.b)("strong",{parentName:"p"},"\u67e5\u770b"),"\u3001",Object(b.b)("strong",{parentName:"p"},"\u7f16\u8f91"),"\u8fd9\u4e2a\u9879\u76ee\u7684\u6587\u4ef6\u3002")),Object(b.b)("li",{parentName:"ul"},Object(b.b)("p",{parentName:"li"},Object(b.b)("strong",{parentName:"p"},"Can Execute")),Object(b.b)("p",{parentName:"li"},"\u5f53\u9879\u76ee\u7684 ",Object(b.b)("strong",{parentName:"p"},"Visibility")," \u8bbe\u7f6e\u4e3a ",Object(b.b)("strong",{parentName:"p"},"Team")," \u65f6\uff0c\u56e2\u961f\u4e2d\u5176\u4ed6\u6210\u5458\u90fd\u53ef\u4ee5",Object(b.b)("strong",{parentName:"p"},"\u67e5\u770b"),"\u3001",Object(b.b)("strong",{parentName:"p"},"\u7f16\u8f91"),"\u3001",Object(b.b)("strong",{parentName:"p"},"\u6267\u884c"),"\u8fd9\u4e2a\u9879\u76ee\u7684\u6587\u4ef6\u3002"),Object(b.b)("p",{parentName:"li"},"\u5f53\u9879\u76ee\u7684 ",Object(b.b)("strong",{parentName:"p"},"Visibility")," \u8bbe\u7f6e\u4e3a ",Object(b.b)("strong",{parentName:"p"},"Public")," \u65f6\uff0c",Object(b.b)("strong",{parentName:"p"},"Workbench")," \u4e2d\u5176\u4ed6\u6210\u5458\u90fd\u53ef\u4ee5",Object(b.b)("strong",{parentName:"p"},"\u67e5\u770b"),"\u3001",Object(b.b)("strong",{parentName:"p"},"\u7f16\u8f91"),"\u3001",Object(b.b)("strong",{parentName:"p"},"\u6267\u884c"),"\u8fd9\u4e2a\u9879\u76ee\u7684\u6587\u4ef6\u3002"))))),Object(b.b)("p",null,"\u7b2c\u4e8c\u6b65\uff1a\u5728 ",Object(b.b)("strong",{parentName:"p"},"Initial Project")," \u6b65\u9aa4\u4e2d\uff0c",Object(b.b)("strong",{parentName:"p"},"Workbench")," \u63d0\u4f9b\u4e86\u56db\u79cd\u9879\u76ee\u521d\u59cb\u5316\u7684\u65b9\u5f0f"),Object(b.b)("ul",null,Object(b.b)("li",{parentName:"ul"},Object(b.b)("p",{parentName:"li"},Object(b.b)("strong",{parentName:"p"},"Template"),": ",Object(b.b)("strong",{parentName:"p"},"Workbench")," \u5185\u7f6e\u4e86\u51e0\u79cd\u4e0d\u540c\u5f00\u53d1\u8bed\u8a00\u548c\u7b97\u6cd5\u6846\u67b6\u7684\u9879\u76ee\u6a21\u7248\uff0c\u4f60\u53ef\u4ee5\u9009\u62e9\u4efb\u4f55\u4e00\u79cd\u6a21\u7248\u521d\u59cb\u5316\u4f60\u7684\u9879\u76ee\uff0c\u65e0\u9700\u505a\u4efb\u4f55\u4fee\u6539\u5c31\u53ef\u4ee5\u76f4\u63a5\u5728 ",Object(b.b)("strong",{parentName:"p"},"Notebook")," \u4e2d\u6267\u884c\uff0c\u7279\u522b\u9002\u5408\u65b0\u624b\u8fdb\u884c\u5feb\u901f\u7684\u4f53\u9a8c\u3002"),Object(b.b)("p",{parentName:"li"},Object(b.b)("img",{alt:"image-20191007184749193",src:n(219).default}))),Object(b.b)("li",{parentName:"ul"},Object(b.b)("p",{parentName:"li"},Object(b.b)("strong",{parentName:"p"},"Blank"),"\uff1a\u521b\u5efa\u4e00\u4e2a\u7a7a\u767d\u7684\u9879\u76ee\uff0c\u7a0d\u540e\uff0c\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u5728 ",Object(b.b)("strong",{parentName:"p"},"Notebook")," \u4e2d\u624b\u5de5\u6dfb\u52a0\u9879\u76ee\u7684\u6587\u4ef6"),Object(b.b)("p",{parentName:"li"},Object(b.b)("img",{alt:"image-20191007184811389",src:n(220).default}))),Object(b.b)("li",{parentName:"ul"},Object(b.b)("p",{parentName:"li"},Object(b.b)("strong",{parentName:"p"},"Upload"),": \u901a\u8fc7\u4e0a\u4f20 ",Object(b.b)("strong",{parentName:"p"},"notebook")," \u683c\u5f0f\u7684\u6587\u4ef6\u6765\u521d\u59cb\u5316\u4f60\u7684\u9879\u76ee\uff0c",Object(b.b)("strong",{parentName:"p"},"notebook")," \u683c\u5f0f\u517c\u5bb9 ",Object(b.b)("strong",{parentName:"p"},"Jupyter Notebook")," \u548c ",Object(b.b)("strong",{parentName:"p"},"Zeppelin Notebook")," \u6587\u4ef6\u683c\u5f0f\u3002"),Object(b.b)("p",{parentName:"li"},Object(b.b)("img",{alt:"image-20191007184825531",src:n(221).default}))),Object(b.b)("li",{parentName:"ul"},Object(b.b)("p",{parentName:"li"},Object(b.b)("strong",{parentName:"p"},"Git Repo"),": \u5728\u4f60\u7684 ",Object(b.b)("strong",{parentName:"p"},"Github"),"/",Object(b.b)("strong",{parentName:"p"},"Gitlab")," \u8d26\u53f7\u4e2d ",Object(b.b)("strong",{parentName:"p"},"Fork")," \u4e00\u4e2a\u4ed3\u5e93\u4e2d\u7684\u6587\u4ef6\u5185\u5bb9\u6765\u521d\u59cb\u5316\u9879\u76ee\u3002"),Object(b.b)("p",{parentName:"li"},Object(b.b)("img",{alt:"image-20191007184840989",src:n(222).default})))),Object(b.b)("p",null,"\u7b2c\u4e09\u6b65\uff1a\u9884\u89c8\u9879\u76ee\u4e2d\u7684\u6240\u5305\u542b\u7684\u6587\u4ef6"),Object(b.b)("p",null,Object(b.b)("img",{alt:"image-20191007191205660",src:n(223).default})),Object(b.b)("ul",null,Object(b.b)("li",{parentName:"ul"},Object(b.b)("strong",{parentName:"li"},"Save"),": \u5c06\u9879\u76ee\u4fdd\u5b58\u5230 Workspace \u4e2d\u3002"),Object(b.b)("li",{parentName:"ul"},Object(b.b)("strong",{parentName:"li"},"Open In Notebook"),": \u5c06\u9879\u76ee\u4fdd\u5b58\u5230 ",Object(b.b)("strong",{parentName:"li"},"Workspace")," \u4e2d\uff0c\u5e76\u7528 ",Object(b.b)("strong",{parentName:"li"},"Notebook")," \u6253\u5f00\u9879\u76ee\u3002")),Object(b.b)("h3",{id:"release"},"Release"),Object(b.b)("p",null,"[TODO]"),Object(b.b)("h3",{id:"training"},"Training"),Object(b.b)("p",null,"[TODO]"),Object(b.b)("h3",{id:"team"},"Team"),Object(b.b)("p",null,"[TODO]"),Object(b.b)("h3",{id:"shared"},"Shared"),Object(b.b)("p",null,"[TODO]"),Object(b.b)("h2",{id:"interpreters"},"Interpreters"),Object(b.b)("p",null,"[TODO]"),Object(b.b)("h2",{id:"job"},"Job"),Object(b.b)("p",null,"[TODO]"),Object(b.b)("h2",{id:"data"},"Data"),Object(b.b)("p",null,"[TODO]"),Object(b.b)("h2",{id:"model"},"Model"),Object(b.b)("p",null,"[TODO]"),Object(b.b)("h2",{id:"manager"},"Manager"),Object(b.b)("h3",{id:"user"},"User"),Object(b.b)("p",null,"[TODO]"),Object(b.b)("h3",{id:"team-1"},"Team"),Object(b.b)("p",null,"[TODO]"),Object(b.b)("h3",{id:"data-dict"},"Data Dict"),Object(b.b)("p",null,"[TODO]"),Object(b.b)("h3",{id:"department"},"Department"),Object(b.b)("p",null,"[TODO]"),Object(b.b)("h2",{id:"how-to-run-workbench"},"How to run workbench"),Object(b.b)("p",null,Object(b.b)("a",{parentName:"p",href:"/docs/adminDocs/yarn/workbench/HowToRun"},"How To Run Submarine Workbench Guide")))}l.isMDXComponent=!0},209:function(e,t,n){"use strict";n.d(t,"a",(function(){return O})),n.d(t,"b",(function(){return s}));var a=n(0),r=n.n(a);function b(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?c(Object(n),!0).forEach((function(t){b(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):c(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function p(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},b=Object.keys(e);for(a=0;a<b.length;a++)n=b[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var b=Object.getOwnPropertySymbols(e);for(a=0;a<b.length;a++)n=b[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var o=r.a.createContext({}),l=function(e){var t=r.a.useContext(o),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},O=function(e){var t=l(e.components);return r.a.createElement(o.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},j=r.a.forwardRef((function(e,t){var n=e.components,a=e.mdxType,b=e.originalType,c=e.parentName,o=p(e,["components","mdxType","originalType","parentName"]),O=l(n),j=a,s=O["".concat(c,".").concat(j)]||O[j]||m[j]||b;return n?r.a.createElement(s,i(i({ref:t},o),{},{components:n})):r.a.createElement(s,i({ref:t},o))}));function s(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var b=n.length,c=new Array(b);c[0]=j;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i.mdxType="string"==typeof e?e:a,c[1]=i;for(var o=2;o<b;o++)c[o]=n[o];return r.a.createElement.apply(null,c)}return r.a.createElement.apply(null,n)}j.displayName="MDXCreateElement"},217:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/workspace-project-8d6fed3c330676f04875f8afe44b59d7.png"},218:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/workspace-project-step1-24bdac8d1ecdfeb14efeab0ba5019716.png"},219:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/workspace-project-step2-template-bec4a76922361fa150df6bffceffbb15.png"},220:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/workspace-project-step2-blank-8a6b9d97a33106329fbfe53920bc40c7.png"},221:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/workspace-project-step2-upload-feb2db0271833adeb422990ca5aa43ba.png"},222:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/workspace-project-step2-git-8431a483307851cd987d2a02264a8ee7.png"},223:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/workspace-project-step3-34283e0a7051d38359a20311745f8aa6.png"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[44],{111:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return c})),n.d(t,"metadata",(function(){return i})),n.d(t,"toc",(function(){return p})),n.d(t,"default",(function(){return l}));var a=n(3),r=n(7),b=(n(0),n(194)),c={},i={unversionedId:"adminDocs/yarn/workbench/README.zh-CN",id:"version-0.6.0/adminDocs/yarn/workbench/README.zh-CN",isDocsHomePage:!1,title:"README.zh-CN",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/adminDocs/yarn/workbench/README.zh-CN.md",slug:"/adminDocs/yarn/workbench/README.zh-CN",permalink:"/docs/adminDocs/yarn/workbench/README.zh-CN",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/adminDocs/yarn/workbench/README.zh-CN.md",version:"0.6.0"},p=[{value:"Register",id:"register",children:[]},{value:"Login",id:"login",children:[]},{value:"Home",id:"home",children:[]},{value:"Workspace",id:"workspace",children:[{value:"Project",id:"project",children:[]},{value:"Release",id:"release",children:[]},{value:"Training",id:"training",children:[]},{value:"Team",id:"team",children:[]},{value:"Shared",id:"shared",children:[]}]},{value:"Interpreters",id:"interpreters",children:[]},{value:"Job",id:"job",children:[]},{value:"Data",id:"data",children:[]},{value:"Model",id:"model",children:[]},{value:"Manager",id:"manager",children:[{value:"User",id:"user",children:[]},{value:"Team",id:"team-1",children:[]},{value:"Data Dict",id:"data-dict",children:[]},{value:"Department",id:"department",children:[]}]},{value:"How to run workbench",id:"how-to-run-workbench",children:[]}],o={toc:p};function l(e){var t=e.components,c=Object(r.a)(e,["components"]);return Object(b.b)("wrapper",Object(a.a)({},o,c,{components:t,mdxType:"MDXLayout"}),Object(b.b)("p",null,Object(b.b)("a",{parentName:"p",href:"/docs/adminDocs/yarn/workbench/README"},"English")," | \u7b80\u4f53\u4e2d\u6587"),Object(b.b)("h1",{id:"submarine-workbench-introduction"},"Submarine Workbench Introduction"),Object(b.b)("p",null,Object(b.b)("inlineCode",{parentName:"p"},"Submarine Workbench")," \u662f\u4e3a\u6570\u636e\u79d1\u5b66\u5bb6\u8bbe\u8ba1\u7684 WEB \u7cfb\u7edf\u3002\u6570\u636e\u79d1\u5b66\u5bb6\u53ef\u4ee5\u901a\u8fc7 ",Object(b.b)("inlineCode",{parentName:"p"},"Submarine Workbench")," \u8fdb\u884c\u4ea4\u4e92\u5f0f\u7684\u8bbf\u95ee ",Object(b.b)("inlineCode",{parentName:"p"},"Notebook"),"\uff0c\u63d0\u4ea4/\u7ba1\u7406 Job\uff0c\u7ba1\u7406\u6a21\u578b\uff0c\u521b\u5efa\u6a21\u578b\u8bad\u7ec3\u5de5\u4f5c\u6d41\uff0c\u8bbf\u95ee\u6570\u636e\u96c6\u7b49\u3002"),Object(b.b)("h2",{id:"register"},"Register"),Object(b.b)("p",null,"\u6bcf\u4e2a\u9700\u8981\u4f7f\u7528 Submarine \u8fdb\u884c\u673a\u5668\u5b66\u4e60\u7b97\u6cd5\u5f00\u53d1\u7684\u7528\u6237\uff0c\u90fd\u53ef\u4ee5\u767b\u5f55 ",Object(b.b)("inlineCode",{parentName:"p"},"Submarine Workbench")," \u7684 WEB \u9996\u9875\uff0c\u5728\u9996\u9875\u4e0a\uff0c\u70b9\u51fb\u6ce8\u518c\u94fe\u63a5\uff0c\u586b\u5199\u7528\u6237\u540d\u3001\u6ce8\u518c\u90ae\u7bb1\u548c\u5bc6\u7801\u5c31\u53ef\u4ee5\u5b8c\u6210\u6ce8\u518c\uff0c\u4f46\u6b64\u65f6\u7528\u6237\u72b6\u6001\u4e3a ",Object(b.b)("inlineCode",{parentName:"p"},"\u7b49\u5f85\u5ba1\u6838")," \u72b6\u6001\u3002"),Object(b.b)("p",null,"\u7ba1\u7406\u5458\u5728  ",Object(b.b)("inlineCode",{parentName:"p"},"Submarine Workbench")," \u4e2d\u63a5\u6536\u5230\u7528\u6237\u7684\u6ce8\u518c\u8bf7\u6c42\u540e\uff0c\u8bbe\u7f6e\u7528\u6237\u7684\u64cd\u4f5c\u6743\u9650\uff0c\u6240\u5c5e\u673a\u6784\u90e8\u95e8\u548c\u5206\u914d\u8d44\u6e90\uff0c\u8bbe\u7f6e\u7528\u6237\u72b6\u6001\u4e3a ",Object(b.b)("inlineCode",{parentName:"p"},"\u5ba1\u6838\u901a\u8fc7")," \u540e\uff0c\u7528\u6237\u624d\u53ef\u4ee5\u767b\u5f55 Submarine Workbench\u3002"),Object(b.b)("h2",{id:"login"},"Login"),Object(b.b)("p",null,"\u6bcf\u4e2a Submarine \u7684\u7528\u6237\u5728 ",Object(b.b)("inlineCode",{parentName:"p"},"Login")," \u9875\u9762\u4e2d\u8f93\u5165\u7528\u6237\u540d\u548c\u5bc6\u7801\uff0c\u767b\u5f55\u5230  ",Object(b.b)("inlineCode",{parentName:"p"},"Submarine Workbench")," \u7684\u9996\u9875 ",Object(b.b)("inlineCode",{parentName:"p"},"Home"),"\u3002"),Object(b.b)("h2",{id:"home"},"Home"),Object(b.b)("p",null,"\u5728 ",Object(b.b)("inlineCode",{parentName:"p"},"Submarine Workbench")," \u7684 ",Object(b.b)("inlineCode",{parentName:"p"},"Home")," \u9996\u9875\u4e2d\uff0c\u9876\u5c42\u901a\u8fc7\u56db\u4e2a\u56fe\u8868\u663e\u793a\u4e86\u7528\u6237\u7684\u8d44\u6e90\u7684\u4f7f\u7528\u60c5\u51b5\u548c\u4efb\u52a1\u6267\u884c\u7684\u60c5\u51b5\u3002"),Object(b.b)("p",null,"\u5728 ",Object(b.b)("inlineCode",{parentName:"p"},"Quick Start")," \u5217\u8868\u4e2d\uff0c\u663e\u793a\u4e86 Workbench \u4e2d\u6700\u5e38\u4f7f\u7528\u7684\u529f\u80fd\u94fe\u63a5\uff0c\u65b9\u4fbf\u7528\u6237\u53ef\u4ee5\u5feb\u901f\u7684\u8fdb\u884c\u5de5\u4f5c\u3002"),Object(b.b)("p",null,"\u5728 ",Object(b.b)("inlineCode",{parentName:"p"},"Open Recent")," \u5217\u8868\u4e2d\uff0c\u663e\u793a\u4e86\u7528\u6237\u6700\u8fd1\u4f7f\u7528\u8fc7\u7684\u4e5d\u4e2a\u9879\u76ee\uff0c\u65b9\u4fbf\u4f60\u5feb\u901f\u7684\u8fdb\u884c\u5de5\u4f5c\u3002"),Object(b.b)("p",null,"\u5728 ",Object(b.b)("inlineCode",{parentName:"p"},"What\u2018s New\uff1f")," \u5217\u8868\u4e2d\uff0c\u663e\u793a\u4e86 Submarine \u6700\u65b0\u53d1\u5e03\u7684\u4e00\u4e9b\u529f\u80fd\u7279\u6027\u548c\u9879\u76ee\u4fe1\u606f\uff0c\u65b9\u4fbf\u4f60\u4e86\u89e3 Submarine \u9879\u76ee\u7684\u6700\u65b0\u8fdb\u5c55\u3002"),Object(b.b)("h2",{id:"workspace"},"Workspace"),Object(b.b)("p",null,"Workspace \u4e3b\u8981\u6709\u4e94\u4e2a Tab \u9875\u7ec4\u6210\uff0c\u6bcf\u4e2a Tab \u9875\u7684\u6807\u9898\u4e2d\u663e\u793a\u4e86\u5404\u81ea\u9879\u76ee\u7684\u603b\u6570\u3002"),Object(b.b)("h3",{id:"project"},"Project"),Object(b.b)("p",null,"\u5728 Project \u9875\u9762\u4e2d\uff0c\u4ee5\u5361\u7247\u7684\u65b9\u5f0f\u663e\u793a\u4e86\u7528\u6237\u81ea\u5df1\u521b\u5efa\u7684\u6240\u6709 Project\u3002"),Object(b.b)("p",null,Object(b.b)("img",{alt:"image-20191007161424534",src:n(223).default})),Object(b.b)("p",null,"\u6bcf\u4e2a Project \u5361\u7247\u7531\u4ee5\u4e0b\u90e8\u5206\u5185\u5bb9\u7ec4\u6210\uff1a"),Object(b.b)("ol",null,Object(b.b)("li",{parentName:"ol"},Object(b.b)("strong",{parentName:"li"},"Project \u7c7b\u578b"),"\uff1a\u76ee\u524d Submarine \u652f\u6301 ",Object(b.b)("inlineCode",{parentName:"li"},"Notebook"),"\u3001",Object(b.b)("inlineCode",{parentName:"li"},"Python"),"\u3001",Object(b.b)("inlineCode",{parentName:"li"},"R"),"\u3001",Object(b.b)("inlineCode",{parentName:"li"},"Scala"),"\u3001",Object(b.b)("inlineCode",{parentName:"li"},"Tensorflow")," \u548c ",Object(b.b)("inlineCode",{parentName:"li"},"PyTorch")," \u8fd9\u516d\u79cd\u7c7b\u578b\u7684\u673a\u5668\u5b66\u4e60\u7b97\u6cd5\u6846\u67b6\u548c\u5f00\u53d1\u8bed\u8a00\uff0c\u5728\u9879\u76ee\u5361\u7247\u4e2d\u4ee5\u5bf9\u5e94\u7684\u56fe\u6807\u8fdb\u884c\u6807\u8bc6\u3002"),Object(b.b)("li",{parentName:"ol"},Object(b.b)("strong",{parentName:"li"},"Project Tags"),"\uff1a\u7528\u6237\u53ef\u4ee5\u4e3a\u6bcf\u4e2a Project \u6253\u4e0a\u4e0d\u540c\u7684 ",Object(b.b)("inlineCode",{parentName:"li"},"Tag")," \u6807\u7b7e\uff0c\u65b9\u4fbf\u67e5\u627e\u548c\u7ba1\u7406\u3002"),Object(b.b)("li",{parentName:"ol"},Object(b.b)("strong",{parentName:"li"},"Github/Gitlab \u96c6\u6210"),"\uff1aSubmarine Workbench \u4e0e ",Object(b.b)("inlineCode",{parentName:"li"},"Github"),"/",Object(b.b)("inlineCode",{parentName:"li"},"Gitlab")," \u8fdb\u884c\u4e86\u7cfb\u7edf\u96c6\u6210\uff0c\u6bcf\u4e2a Project \u90fd\u53ef\u4ee5\u5728 Workbench \u4e2d\u8fdb\u884c ",Object(b.b)("inlineCode",{parentName:"li"},"Watch"),"\u3001",Object(b.b)("inlineCode",{parentName:"li"},"Star"),"\u3001",Object(b.b)("inlineCode",{parentName:"li"},"Frok")," \u548c ",Object(b.b)("inlineCode",{parentName:"li"},"Comment")," \u64cd\u4f5c\u3002",Object(b.b)("ul",{parentName:"li"},Object(b.b)("li",{parentName:"ul"},Object(b.b)("strong",{parentName:"li"},"Watch"),"\uff1a","[TODO]"),Object(b.b)("li",{parentName:"ul"},Object(b.b)("strong",{parentName:"li"},"Star"),"\uff1a","[TODO]"),Object(b.b)("li",{parentName:"ul"},Object(b.b)("strong",{parentName:"li"},"Fork"),"\uff1a","[TODO]"),Object(b.b)("li",{parentName:"ul"},Object(b.b)("strong",{parentName:"li"},"Comment"),"\uff1a\u7528\u6237\u53ef\u4ee5\u5728\u9879\u76ee\u4e2d\u8fdb\u884c\u8bc4\u8bba"))),Object(b.b)("li",{parentName:"ol"},Object(b.b)("strong",{parentName:"li"},"Edit"),"\uff1a\u7528\u6237\u901a\u8fc7\u53cc\u51fb\u9879\u76ee\u6216\u8005\u70b9\u51fb ",Object(b.b)("inlineCode",{parentName:"li"},"Edit")," \u6309\u94ae\uff0c\u53ef\u4ee5\u5728 ",Object(b.b)("inlineCode",{parentName:"li"},"Notebook")," \u4e2d\u6253\u5f00\u9879\u76ee\uff0c\u8fdb\u884c\u7b97\u6cd5\u5f00\u53d1\u7b49\u64cd\u4f5c\u3002"),Object(b.b)("li",{parentName:"ol"},Object(b.b)("strong",{parentName:"li"},"Download"),"\uff1a\u7528\u6237\u901a\u8fc7\u70b9\u51fb ",Object(b.b)("inlineCode",{parentName:"li"},"Download")," \u6309\u94ae\uff0c\u5c06\u9879\u76ee\u6253\u5305\u4e0b\u8f7d\u5230\u672c\u5730\u3002"),Object(b.b)("li",{parentName:"ol"},Object(b.b)("strong",{parentName:"li"},"Setting"),"\uff1a\u7f16\u8f91\u9879\u76ee\u4fe1\u606f\uff0c\u4f8b\u5982\u9879\u76ee\u7684\u540d\u5b57\uff0c\u7b80\u4ecb\uff0c\u5206\u4eab\u7ea7\u522b\u548c\u6743\u9650\u3002"),Object(b.b)("li",{parentName:"ol"},Object(b.b)("strong",{parentName:"li"},"Delete"),"\uff1a\u5220\u9664\u9879\u76ee\u4e2d\u6240\u6709\u5305\u542b\u7684\u6587\u4ef6\u3002")),Object(b.b)("h4",{id:"add-new-project"},"Add New Project"),Object(b.b)("p",null,"\u5728\u9879\u76ee\u9875\u9762\u4e2d\u70b9\u51fb ",Object(b.b)("inlineCode",{parentName:"p"},"Add New Project")," \u6309\u94ae\uff0c\u5c06\u4f1a\u663e\u793a\u51fa\u521b\u5efa\u9879\u76ee\u7684\u5f15\u5bfc\u9875\u9762\uff0c\u53ea\u9700\u8981\u4e09\u4e2a\u6b65\u9aa4\u5c31\u53ef\u4ee5\u521b\u5efa\u4e00\u4e2a\u65b0\u7684\u9879\u76ee\u3002"),Object(b.b)("p",null,"\u7b2c\u4e00\u6b65\uff1a\u5728 ",Object(b.b)("strong",{parentName:"p"},"Base Information")," \u6b65\u9aa4\u4e2d\u586b\u5199\u9879\u76ee\u540d\u79f0\u3001\u9879\u76ee\u7b80\u4ecb\u3002"),Object(b.b)("p",null,Object(b.b)("img",{alt:"image-20191007171638338",src:n(224).default})),Object(b.b)("ul",null,Object(b.b)("li",{parentName:"ul"},Object(b.b)("p",{parentName:"li"},Object(b.b)("strong",{parentName:"p"},"Visibility"),": \u8bbe\u7f6e\u9879\u76ee\u5bf9\u5916\u7684\u53ef\u89c1\u7ea7\u522b"),Object(b.b)("ul",{parentName:"li"},Object(b.b)("li",{parentName:"ul"},Object(b.b)("strong",{parentName:"li"},"Private"),": \uff08\u9ed8\u8ba4\uff09\u8bbe\u7f6e\u4e3a\u79c1\u6709\u9879\u76ee\uff0c\u4e0d\u5bf9\u5916\u516c\u5f00\u9879\u76ee\u4e2d\u5305\u542b\u7684\u6240\u6709\u6587\u4ef6\uff0c\u4f46\u662f\u53ef\u4ee5\u5728 ",Object(b.b)("strong",{parentName:"li"},"Notebook")," \u4e2d\u5c06\u9879\u76ee\u7684\u6267\u884c\u7ed3\u679c\u5355\u72ec\u8bbe\u7f6e\u516c\u5f00\uff0c\u65b9\u4fbf\u5176\u4ed6\u4eba\u67e5\u770b\u9879\u76ee\u7684\u53ef\u89c6\u5316\u62a5\u544a\u3002"),Object(b.b)("li",{parentName:"ul"},Object(b.b)("strong",{parentName:"li"},"Team"),": \u8bbe\u7f6e\u4e3a\u56e2\u961f\u9879\u76ee\uff0c\u5728\u56e2\u961f\u9009\u62e9\u6846\u4e2d\u9009\u62e9\u56e2\u961f\u7684\u540d\u79f0\uff0c\u56e2\u961f\u7684\u5176\u4ed6\u6210\u5458\u53ef\u4ee5\u6839\u636e\u8bbe\u7f6e\u7684\u6743\u9650\u8bbf\u95ee\u8fd9\u4e2a\u9879\u76ee\u3002"),Object(b.b)("li",{parentName:"ul"},Object(b.b)("strong",{parentName:"li"},"Public"),": \u8bbe\u7f6e\u4e3a\u516c\u5f00\u9879\u76ee\uff0c",Object(b.b)("strong",{parentName:"li"},"Workbench")," \u4e2d\u7684\u6240\u6709\u7528\u6237\u90fd\u53ef\u4ee5\u901a\u8fc7\u641c\u7d22\u67e5\u770b\u5230\u8fd9\u4e2a\u9879\u76ee\u3002"))),Object(b.b)("li",{parentName:"ul"},Object(b.b)("p",{parentName:"li"},Object(b.b)("strong",{parentName:"p"},"Permission"),": \u8bbe\u7f6e\u9879\u76ee\u5bf9\u5916\u7684\u8bbf\u95ee\u6743\u9650\uff0c\u53ea\u6709\u5c06\u9879\u76ee\u7684 ",Object(b.b)("strong",{parentName:"p"},"Visibility")," \u8bbe\u7f6e\u4e3a ",Object(b.b)("strong",{parentName:"p"},"Team")," \u6216 ",Object(b.b)("strong",{parentName:"p"},"Public")," \u7684\u65f6\u5019\uff0c\u624d\u4f1a\u51fa\u73b0\u6743\u9650\u8bbe\u7f6e\u754c\u9762\u3002"),Object(b.b)("ul",{parentName:"li"},Object(b.b)("li",{parentName:"ul"},Object(b.b)("p",{parentName:"li"},Object(b.b)("strong",{parentName:"p"},"Can View")),Object(b.b)("p",{parentName:"li"},"\u5f53\u9879\u76ee\u7684 ",Object(b.b)("strong",{parentName:"p"},"Visibility")," \u8bbe\u7f6e\u4e3a ",Object(b.b)("strong",{parentName:"p"},"Team")," \u65f6\uff0c\u56e2\u961f\u4e2d\u5176\u4ed6\u6210\u5458\u90fd\u53ea\u80fd",Object(b.b)("strong",{parentName:"p"},"\u67e5\u770b"),"\u8fd9\u4e2a\u9879\u76ee\u7684\u6587\u4ef6\u3002"),Object(b.b)("p",{parentName:"li"},"\u5f53\u9879\u76ee\u7684 Visibility \u8bbe\u7f6e\u4e3a ",Object(b.b)("strong",{parentName:"p"},"Public")," \u65f6\uff0c",Object(b.b)("strong",{parentName:"p"},"Workbench")," \u4e2d\u5176\u4ed6\u6210\u5458\u90fd\u53ea\u80fd",Object(b.b)("strong",{parentName:"p"},"\u67e5\u770b"),"\u8fd9\u4e2a\u9879\u76ee\u7684\u6587\u4ef6\u3002")),Object(b.b)("li",{parentName:"ul"},Object(b.b)("p",{parentName:"li"},Object(b.b)("strong",{parentName:"p"},"Can Edit")),Object(b.b)("p",{parentName:"li"},"\u5f53\u9879\u76ee\u7684 ",Object(b.b)("strong",{parentName:"p"},"Visibility")," \u8bbe\u7f6e\u4e3a ",Object(b.b)("strong",{parentName:"p"},"Team")," \u65f6\uff0c\u56e2\u961f\u4e2d\u5176\u4ed6\u6210\u5458\u90fd\u53ef\u4ee5",Object(b.b)("strong",{parentName:"p"},"\u67e5\u770b"),"\u3001",Object(b.b)("strong",{parentName:"p"},"\u7f16\u8f91"),"\u8fd9\u4e2a\u9879\u76ee\u7684\u6587\u4ef6\u3002"),Object(b.b)("p",{parentName:"li"},"\u5f53\u9879\u76ee\u7684 ",Object(b.b)("strong",{parentName:"p"},"Visibility")," \u8bbe\u7f6e\u4e3a ",Object(b.b)("strong",{parentName:"p"},"Public")," \u65f6\uff0c",Object(b.b)("strong",{parentName:"p"},"Workbench")," \u4e2d\u5176\u4ed6\u6210\u5458\u90fd\u53ef\u4ee5",Object(b.b)("strong",{parentName:"p"},"\u67e5\u770b"),"\u3001",Object(b.b)("strong",{parentName:"p"},"\u7f16\u8f91"),"\u8fd9\u4e2a\u9879\u76ee\u7684\u6587\u4ef6\u3002")),Object(b.b)("li",{parentName:"ul"},Object(b.b)("p",{parentName:"li"},Object(b.b)("strong",{parentName:"p"},"Can Execute")),Object(b.b)("p",{parentName:"li"},"\u5f53\u9879\u76ee\u7684 ",Object(b.b)("strong",{parentName:"p"},"Visibility")," \u8bbe\u7f6e\u4e3a ",Object(b.b)("strong",{parentName:"p"},"Team")," \u65f6\uff0c\u56e2\u961f\u4e2d\u5176\u4ed6\u6210\u5458\u90fd\u53ef\u4ee5",Object(b.b)("strong",{parentName:"p"},"\u67e5\u770b"),"\u3001",Object(b.b)("strong",{parentName:"p"},"\u7f16\u8f91"),"\u3001",Object(b.b)("strong",{parentName:"p"},"\u6267\u884c"),"\u8fd9\u4e2a\u9879\u76ee\u7684\u6587\u4ef6\u3002"),Object(b.b)("p",{parentName:"li"},"\u5f53\u9879\u76ee\u7684 ",Object(b.b)("strong",{parentName:"p"},"Visibility")," \u8bbe\u7f6e\u4e3a ",Object(b.b)("strong",{parentName:"p"},"Public")," \u65f6\uff0c",Object(b.b)("strong",{parentName:"p"},"Workbench")," \u4e2d\u5176\u4ed6\u6210\u5458\u90fd\u53ef\u4ee5",Object(b.b)("strong",{parentName:"p"},"\u67e5\u770b"),"\u3001",Object(b.b)("strong",{parentName:"p"},"\u7f16\u8f91"),"\u3001",Object(b.b)("strong",{parentName:"p"},"\u6267\u884c"),"\u8fd9\u4e2a\u9879\u76ee\u7684\u6587\u4ef6\u3002"))))),Object(b.b)("p",null,"\u7b2c\u4e8c\u6b65\uff1a\u5728 ",Object(b.b)("strong",{parentName:"p"},"Initial Project")," \u6b65\u9aa4\u4e2d\uff0c",Object(b.b)("strong",{parentName:"p"},"Workbench")," \u63d0\u4f9b\u4e86\u56db\u79cd\u9879\u76ee\u521d\u59cb\u5316\u7684\u65b9\u5f0f"),Object(b.b)("ul",null,Object(b.b)("li",{parentName:"ul"},Object(b.b)("p",{parentName:"li"},Object(b.b)("strong",{parentName:"p"},"Template"),": ",Object(b.b)("strong",{parentName:"p"},"Workbench")," \u5185\u7f6e\u4e86\u51e0\u79cd\u4e0d\u540c\u5f00\u53d1\u8bed\u8a00\u548c\u7b97\u6cd5\u6846\u67b6\u7684\u9879\u76ee\u6a21\u7248\uff0c\u4f60\u53ef\u4ee5\u9009\u62e9\u4efb\u4f55\u4e00\u79cd\u6a21\u7248\u521d\u59cb\u5316\u4f60\u7684\u9879\u76ee\uff0c\u65e0\u9700\u505a\u4efb\u4f55\u4fee\u6539\u5c31\u53ef\u4ee5\u76f4\u63a5\u5728 ",Object(b.b)("strong",{parentName:"p"},"Notebook")," \u4e2d\u6267\u884c\uff0c\u7279\u522b\u9002\u5408\u65b0\u624b\u8fdb\u884c\u5feb\u901f\u7684\u4f53\u9a8c\u3002"),Object(b.b)("p",{parentName:"li"},Object(b.b)("img",{alt:"image-20191007184749193",src:n(225).default}))),Object(b.b)("li",{parentName:"ul"},Object(b.b)("p",{parentName:"li"},Object(b.b)("strong",{parentName:"p"},"Blank"),"\uff1a\u521b\u5efa\u4e00\u4e2a\u7a7a\u767d\u7684\u9879\u76ee\uff0c\u7a0d\u540e\uff0c\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u5728 ",Object(b.b)("strong",{parentName:"p"},"Notebook")," \u4e2d\u624b\u5de5\u6dfb\u52a0\u9879\u76ee\u7684\u6587\u4ef6"),Object(b.b)("p",{parentName:"li"},Object(b.b)("img",{alt:"image-20191007184811389",src:n(226).default}))),Object(b.b)("li",{parentName:"ul"},Object(b.b)("p",{parentName:"li"},Object(b.b)("strong",{parentName:"p"},"Upload"),": \u901a\u8fc7\u4e0a\u4f20 ",Object(b.b)("strong",{parentName:"p"},"notebook")," \u683c\u5f0f\u7684\u6587\u4ef6\u6765\u521d\u59cb\u5316\u4f60\u7684\u9879\u76ee\uff0c",Object(b.b)("strong",{parentName:"p"},"notebook")," \u683c\u5f0f\u517c\u5bb9 ",Object(b.b)("strong",{parentName:"p"},"Jupyter Notebook")," \u548c ",Object(b.b)("strong",{parentName:"p"},"Zeppelin Notebook")," \u6587\u4ef6\u683c\u5f0f\u3002"),Object(b.b)("p",{parentName:"li"},Object(b.b)("img",{alt:"image-20191007184825531",src:n(227).default}))),Object(b.b)("li",{parentName:"ul"},Object(b.b)("p",{parentName:"li"},Object(b.b)("strong",{parentName:"p"},"Git Repo"),": \u5728\u4f60\u7684 ",Object(b.b)("strong",{parentName:"p"},"Github"),"/",Object(b.b)("strong",{parentName:"p"},"Gitlab")," \u8d26\u53f7\u4e2d ",Object(b.b)("strong",{parentName:"p"},"Fork")," \u4e00\u4e2a\u4ed3\u5e93\u4e2d\u7684\u6587\u4ef6\u5185\u5bb9\u6765\u521d\u59cb\u5316\u9879\u76ee\u3002"),Object(b.b)("p",{parentName:"li"},Object(b.b)("img",{alt:"image-20191007184840989",src:n(228).default})))),Object(b.b)("p",null,"\u7b2c\u4e09\u6b65\uff1a\u9884\u89c8\u9879\u76ee\u4e2d\u7684\u6240\u5305\u542b\u7684\u6587\u4ef6"),Object(b.b)("p",null,Object(b.b)("img",{alt:"image-20191007191205660",src:n(229).default})),Object(b.b)("ul",null,Object(b.b)("li",{parentName:"ul"},Object(b.b)("strong",{parentName:"li"},"Save"),": \u5c06\u9879\u76ee\u4fdd\u5b58\u5230 Workspace \u4e2d\u3002"),Object(b.b)("li",{parentName:"ul"},Object(b.b)("strong",{parentName:"li"},"Open In Notebook"),": \u5c06\u9879\u76ee\u4fdd\u5b58\u5230 ",Object(b.b)("strong",{parentName:"li"},"Workspace")," \u4e2d\uff0c\u5e76\u7528 ",Object(b.b)("strong",{parentName:"li"},"Notebook")," \u6253\u5f00\u9879\u76ee\u3002")),Object(b.b)("h3",{id:"release"},"Release"),Object(b.b)("p",null,"[TODO]"),Object(b.b)("h3",{id:"training"},"Training"),Object(b.b)("p",null,"[TODO]"),Object(b.b)("h3",{id:"team"},"Team"),Object(b.b)("p",null,"[TODO]"),Object(b.b)("h3",{id:"shared"},"Shared"),Object(b.b)("p",null,"[TODO]"),Object(b.b)("h2",{id:"interpreters"},"Interpreters"),Object(b.b)("p",null,"[TODO]"),Object(b.b)("h2",{id:"job"},"Job"),Object(b.b)("p",null,"[TODO]"),Object(b.b)("h2",{id:"data"},"Data"),Object(b.b)("p",null,"[TODO]"),Object(b.b)("h2",{id:"model"},"Model"),Object(b.b)("p",null,"[TODO]"),Object(b.b)("h2",{id:"manager"},"Manager"),Object(b.b)("h3",{id:"user"},"User"),Object(b.b)("p",null,"[TODO]"),Object(b.b)("h3",{id:"team-1"},"Team"),Object(b.b)("p",null,"[TODO]"),Object(b.b)("h3",{id:"data-dict"},"Data Dict"),Object(b.b)("p",null,"[TODO]"),Object(b.b)("h3",{id:"department"},"Department"),Object(b.b)("p",null,"[TODO]"),Object(b.b)("h2",{id:"how-to-run-workbench"},"How to run workbench"),Object(b.b)("p",null,Object(b.b)("a",{parentName:"p",href:"/docs/adminDocs/yarn/workbench/HowToRun"},"How To Run Submarine Workbench Guide")))}l.isMDXComponent=!0},194:function(e,t,n){"use strict";n.d(t,"a",(function(){return O})),n.d(t,"b",(function(){return s}));var a=n(0),r=n.n(a);function b(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?c(Object(n),!0).forEach((function(t){b(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):c(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function p(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},b=Object.keys(e);for(a=0;a<b.length;a++)n=b[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var b=Object.getOwnPropertySymbols(e);for(a=0;a<b.length;a++)n=b[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var o=r.a.createContext({}),l=function(e){var t=r.a.useContext(o),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},O=function(e){var t=l(e.components);return r.a.createElement(o.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},j=r.a.forwardRef((function(e,t){var n=e.components,a=e.mdxType,b=e.originalType,c=e.parentName,o=p(e,["components","mdxType","originalType","parentName"]),O=l(n),j=a,s=O["".concat(c,".").concat(j)]||O[j]||m[j]||b;return n?r.a.createElement(s,i(i({ref:t},o),{},{components:n})):r.a.createElement(s,i({ref:t},o))}));function s(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var b=n.length,c=new Array(b);c[0]=j;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i.mdxType="string"==typeof e?e:a,c[1]=i;for(var o=2;o<b;o++)c[o]=n[o];return r.a.createElement.apply(null,c)}return r.a.createElement.apply(null,n)}j.displayName="MDXCreateElement"},223:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/workspace-project-8d6fed3c330676f04875f8afe44b59d7.png"},224:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/workspace-project-step1-24bdac8d1ecdfeb14efeab0ba5019716.png"},225:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/workspace-project-step2-template-bec4a76922361fa150df6bffceffbb15.png"},226:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/workspace-project-step2-blank-8a6b9d97a33106329fbfe53920bc40c7.png"},227:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/workspace-project-step2-upload-feb2db0271833adeb422990ca5aa43ba.png"},228:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/workspace-project-step2-git-8431a483307851cd987d2a02264a8ee7.png"},229:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/workspace-project-step3-34283e0a7051d38359a20311745f8aa6.png"}}]);
\ No newline at end of file
diff --git a/61cc1a3d.a8f5d940.js b/61cc1a3d.0c61cf27.js
similarity index 95%
rename from 61cc1a3d.a8f5d940.js
rename to 61cc1a3d.0c61cf27.js
index b578d32..04553dc 100644
--- a/61cc1a3d.a8f5d940.js
+++ b/61cc1a3d.0c61cf27.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[50],{117:function(e,t,a){"use strict";a.r(t),a.d(t,"frontMatter",(function(){return o})),a.d(t,"metadata",(function(){return c})),a.d(t,"toc",(function(){return l})),a.d(t,"default",(function(){return s}));var r=a(3),i=a(7),n=(a(0),a(209)),o={title:"How To Contribute to Submarine"},c={unversionedId:"community/contributing",id:"community/contributing",isDocsHomePage:!1,title:"How To Contribute to Submarine",description:"\x3c!--",source:"@site/docs/community/contributing.md",slug:"/community/contributing",permalink:"/docs/next/community/contributing",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/community/contributing.md",version:"current",sidebar:"docs",previous:{title:"Guide for Apache Submarine Committers",permalink:"/docs/next/community/HowToCommit"},next:{title:"How to vote a Committer or PMC",permalink:"/docs/next/community/HowToVoteCommitterOrPMC"}},l=[{value:"Preface",id:"preface",children:[]},{value:"Build Submarine",id:"build-submarine",children:[]},{value:"Creating patches",id:"creating-patches",children:[{value:"Step1: Fork apache/submarine github repository (first time)",id:"step1-fork-apachesubmarine-github-repository-first-time",children:[]},{value:"Step2: Clone the Submarine to your local machine",id:"step2-clone-the-submarine-to-your-local-machine",children:[]},{value:"Step3: Create a new Jira in Submarine project",id:"step3-create-a-new-jira-in-submarine-project",children:[]},{value:"Step4: Create a local branch for your contribution",id:"step4-create-a-local-branch-for-your-contribution",children:[]},{value:"Step5: Develop &amp; Create commits",id:"step5-develop--create-commits",children:[]},{value:"Step6: Syncing your local branch with upstream/master",id:"step6-syncing-your-local-branch-with-upstreammaster",children:[]},{value:"Step7: Push your local branch to your personal fork",id:"step7-push-your-local-branch-to-your-personal-fork",children:[]},{value:"Step8: Check GitHub Actions status of your personal commit",id:"step8-check-github-actions-status-of-your-personal-commit",children:[]},{value:"Step9: Create a pull request on github UI",id:"step9-create-a-pull-request-on-github-ui",children:[]},{value:"Step10: Check GitHub Actions status of your pull request in apache/submarine",id:"step10-check-github-actions-status-of-your-pull-request-in-apachesubmarine",children:[]},{value:"Step11: The Review Process",id:"step11-the-review-process",children:[]},{value:"Step12: Address review comments",id:"step12-address-review-comments",children:[]},{value:"Code convention",id:"code-convention",children:[]}]}],u={toc:l};function s(e){var t=e.components,o=Object(i.a)(e,["components"]);return Object(n.b)("wrapper",Object(r.a)({},u,o,{components:t,mdxType:"MDXLayout"}),Object(n.b)("p",null,"There are several ways to contribute to Submarine:"),Object(n.b)("ol",null,Object(n.b)("li",{parentName:"ol"},"Develop and Commit source code (This document will primarily focus on this.)"),Object(n.b)("li",{parentName:"ol"},"Report issues (You can report issues with both Github or Jira.)"),Object(n.b)("li",{parentName:"ol"},"Discuss/Answer questions on the mailing list"),Object(n.b)("li",{parentName:"ol"},"Share use cases")),Object(n.b)("h2",{id:"preface"},"Preface"),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},Object(n.b)("strong",{parentName:"li"},"Apache Submarine")," is an ",Object(n.b)("a",{parentName:"li",href:"https://github.com/apache/submarine/blob/master/LICENSE"},"Apache 2.0 License")," Software. Contributing to Submarine means you agree to the Apache 2.0 License. "),Object(n.b)("li",{parentName:"ul"},"Please read ",Object(n.b)("a",{parentName:"li",href:"http://www.apache.org/foundation/policies/conduct.html"},"Code of Conduct")," carefully."),Object(n.b)("li",{parentName:"ul"},"The document ",Object(n.b)("a",{parentName:"li",href:"http://www.apache.org/foundation/how-it-works.html"},"How It Works")," can help you understand Apache Software Foundation further.")),Object(n.b)("h2",{id:"build-submarine"},"Build Submarine"),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},Object(n.b)("a",{parentName:"li",href:"https://github.com/apache/submarine/blob/master/website/docs/devDocs/BuildFromCode.md"},"Build From Code"))),Object(n.b)("h2",{id:"creating-patches"},"Creating patches"),Object(n.b)("p",null,"Submarine follows ",Object(n.b)("a",{parentName:"p",href:"https://github.com/sevntu-checkstyle/sevntu.checkstyle/wiki/Development-workflow-with-Git:-Fork,-Branching,-Commits,-and-Pull-Request"},"Fork & Pull")," model."),Object(n.b)("h3",{id:"step1-fork-apachesubmarine-github-repository-first-time"},"Step1: Fork apache/submarine github repository (first time)"),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},"Visit ",Object(n.b)("a",{parentName:"li",href:"https://github.com/apache/submarine"},"https://github.com/apache/submarine")),Object(n.b)("li",{parentName:"ul"},"Click the ",Object(n.b)("inlineCode",{parentName:"li"},"Fork")," button to create a fork of the repository")),Object(n.b)("h3",{id:"step2-clone-the-submarine-to-your-local-machine"},"Step2: Clone the Submarine to your local machine"),Object(n.b)("pre",null,Object(n.b)("code",{parentName:"pre",className:"language-sh"},"# USERNAME \u2013 your Github user account name.\ngit clone git@github.com:${USERNAME}/submarine.git\n# or: git clone https://github.com/${USERNAME}/submarine.git \n \ncd submarine\n# set upstream \ngit remote add upstream git@github.com:apache/submarine.git\n# or: git remote add upstream https://github.com/apache/submarine.git\n\n# Don't push to the upstream master.\ngit remote set-url --push upstream no_push\n\n# Check upstream/origin:\n# origin    git@github.com:${USERNAME}/submarine.git (fetch)\n# origin    git@github.com:${USERNAME}/submarine.git (push)\n# upstream  git@github.com:apache/submarine.git (fetch)\n# upstream  no_push (push)\ngit remote -v\n")),Object(n.b)("h3",{id:"step3-create-a-new-jira-in-submarine-project"},"Step3: Create a new Jira in Submarine project"),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},"New contributors need privilege to create JIRA issues. Please email ",Object(n.b)("a",{parentName:"li",href:"mailto:kaihsun@apache.org"},"kaihsun@apache.org"),' with your Jira username. In addition, the email title should be "',"[New Submarine Contributor]",'".'),Object(n.b)("li",{parentName:"ul"},"Check ",Object(n.b)("a",{parentName:"li",href:"https://issues.apache.org/jira/projects/SUBMARINE/issues/SUBMARINE-748?filter=allopenissues"},"Jira issue tracker")," for existing issues."),Object(n.b)("li",{parentName:"ul"},"Create a new Jira issue in Submarine project. When the issue is created, a Jira number (eg. SUBMARINE-748) will be assigned to the issue automatically.\n",Object(n.b)("img",{alt:"jira_number_example",src:a(245).default}))),Object(n.b)("h3",{id:"step4-create-a-local-branch-for-your-contribution"},"Step4: Create a local branch for your contribution"),Object(n.b)("pre",null,Object(n.b)("code",{parentName:"pre",className:"language-sh"},"cd submarine\n\n# Make your local master up-to-date\ngit checkout master\ngit fetch upstream \ngit rebase upstream/master\n\n# Create a new branch fro issue SUBMARINE-${jira_number}\ngit checkout -b SUBMARINE-${jira_number}\n\n# Example: git checkout -b SUBMARINE-748 \n")),Object(n.b)("h3",{id:"step5-develop--create-commits"},"Step5: Develop & Create commits"),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},"You can edit the code on the ",Object(n.b)("inlineCode",{parentName:"li"},"SUBMARINE-${jira_number}")," branch. (Coding Style: ",Object(n.b)("a",{parentName:"li",href:"#code-convention"},"Code Convention"),")"),Object(n.b)("li",{parentName:"ul"},"Create commits")),Object(n.b)("pre",null,Object(n.b)("code",{parentName:"pre",className:"language-sh"},'git add ${edited files}\ngit commit -m "SUBMARINE-${jira_number}. ${Commit Message}"\n# Example: git commit -m "SUBMARINE-748. Update Contributing guide" \n')),Object(n.b)("h3",{id:"step6-syncing-your-local-branch-with-upstreammaster"},"Step6: Syncing your local branch with upstream/master"),Object(n.b)("pre",null,Object(n.b)("code",{parentName:"pre",className:"language-sh"},"# On SUBMARINE-${jira_number} branch\ngit fetch upstream\ngit rebase upstream/master\n")),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},"Please do not use ",Object(n.b)("inlineCode",{parentName:"li"},"git pull")," to synchronize your local branch. Because ",Object(n.b)("inlineCode",{parentName:"li"},"git pull")," does a merge to create merged commits, these will make commit history messy.")),Object(n.b)("h3",{id:"step7-push-your-local-branch-to-your-personal-fork"},"Step7: Push your local branch to your personal fork"),Object(n.b)("pre",null,Object(n.b)("code",{parentName:"pre",className:"language-sh"},"git push origin SUBMARINE-${jira_number} \n")),Object(n.b)("h3",{id:"step8-check-github-actions-status-of-your-personal-commit"},"Step8: Check GitHub Actions status of your personal commit"),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},"Visit ",Object(n.b)("inlineCode",{parentName:"li"},"https://github.com/${USERNAME}/submarine/actions")),Object(n.b)("li",{parentName:"ul"},"Please make sure your new commits can pass all workflows before creating a pull request.")),Object(n.b)("p",null,Object(n.b)("img",{alt:"check_ci_pass",src:a(246).default})),Object(n.b)("h3",{id:"step9-create-a-pull-request-on-github-ui"},"Step9: Create a pull request on github UI"),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},"Visit your fork at ",Object(n.b)("inlineCode",{parentName:"li"},"https://github.com/${USERNAME}/submarine.git")),Object(n.b)("li",{parentName:"ul"},"Click ",Object(n.b)("inlineCode",{parentName:"li"},"Compare & Pull Request")," button to create pull request.\n",Object(n.b)("img",{alt:"compare_pull_request_button",src:a(247).default}))),Object(n.b)("h4",{id:"pull-request-template"},"Pull Request template"),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},Object(n.b)("a",{parentName:"li",href:"https://github.com/apache/submarine/blob/bd7578cc28f8280f9170938d4469fcc965e24a89/.github/PULL_REQUEST_TEMPLATE"},"Pull request template")),Object(n.b)("li",{parentName:"ul"},"Filling the template thoroughly can improve the speed of the review process. Example: ")),Object(n.b)("p",null,Object(n.b)("img",{alt:"pull_request_template_example",src:a(248).default})),Object(n.b)("h3",{id:"step10-check-github-actions-status-of-your-pull-request-in-apachesubmarine"},"Step10: Check GitHub Actions status of your pull request in apache/submarine"),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},"Visit ",Object(n.b)("a",{parentName:"li",href:"https://github.com/apache/submarine/actions"},"https://github.com/apache/submarine/actions")),Object(n.b)("li",{parentName:"ul"},"Please make sure your pull request can pass all workflows. ")),Object(n.b)("h3",{id:"step11-the-review-process"},"Step11: The Review Process"),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},"Anyone can be a reviewer and comment on the pull requests."),Object(n.b)("li",{parentName:"ul"},'Reviewer can indicate that a patch looks suitable for merging with a comment such as: "Looks good", "LGTM", "+1". (PS: LGTM = Looks Good To Me)'),Object(n.b)("li",{parentName:"ul"},'At least one indication of suitability (e.g. "LGTM") from a committer is required to be merged. '),Object(n.b)("li",{parentName:"ul"},'A committer can then initiate lazy consensus ("Merge if there is no more discussion") after which the code can be merged after a particular time (usually 24 hours) if there are no more reviews.'),Object(n.b)("li",{parentName:"ul"},"Contributors can ping reviewers (including committers) by commenting 'Ready to review'.")),Object(n.b)("h3",{id:"step12-address-review-comments"},"Step12: Address review comments"),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},"Push new commits to SUBMARINE-${jira_number} branch. The pull request will update automatically."),Object(n.b)("li",{parentName:"ul"},"After you address all review comments, committers will merge the pull request.")),Object(n.b)("h3",{id:"code-convention"},"Code convention"),Object(n.b)("p",null,"We are following Google Code style:"),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},Object(n.b)("a",{parentName:"li",href:"https://google.github.io/styleguide/javaguide.html"},"Java style")),Object(n.b)("li",{parentName:"ul"},Object(n.b)("a",{parentName:"li",href:"https://google.github.io/styleguide/shell.xml"},"Shell style"))),Object(n.b)("p",null,"There are some plugins to format, lint your code in IDE (use ",Object(n.b)("a",{parentName:"p",href:"hhttps://github.com/apache/submarine/blob/master/dev-support/maven-config/checkstyle.xml"},"dev-support/maven-config/checkstyle.xml")," as rules)"),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},Object(n.b)("a",{parentName:"li",href:"https://plugins.jetbrains.com/plugin/1065"},"Checkstyle plugin for Intellij")," (",Object(n.b)("a",{parentName:"li",href:"http://stackoverflow.com/questions/26955766/intellij-idea-checkstyle"},"Setting Guide"),")"),Object(n.b)("li",{parentName:"ul"},Object(n.b)("a",{parentName:"li",href:"http://eclipse-cs.sourceforge.net/#!/"},"Checkstyle plugin for Eclipse")," (",Object(n.b)("a",{parentName:"li",href:"http://eclipse-cs.sourceforge.net/#!/project-setup"},"Setting Guide"),")")))}s.isMDXComponent=!0},209:function(e,t,a){"use strict";a.d(t,"a",(function(){return b})),a.d(t,"b",(function(){return h}));var r=a(0),i=a.n(r);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function c(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,r,i=function(e,t){if(null==e)return{};var a,r,i={},n=Object.keys(e);for(r=0;r<n.length;r++)a=n[r],t.indexOf(a)>=0||(i[a]=e[a]);return i}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r<n.length;r++)a=n[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(i[a]=e[a])}return i}var u=i.a.createContext({}),s=function(e){var t=i.a.useContext(u),a=t;return e&&(a="function"==typeof e?e(t):c(c({},t),e)),a},b=function(e){var t=s(e.components);return i.a.createElement(u.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return i.a.createElement(i.a.Fragment,{},t)}},m=i.a.forwardRef((function(e,t){var a=e.components,r=e.mdxType,n=e.originalType,o=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),b=s(a),m=r,h=b["".concat(o,".").concat(m)]||b[m]||p[m]||n;return a?i.a.createElement(h,c(c({ref:t},u),{},{components:a})):i.a.createElement(h,c({ref:t},u))}));function h(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var n=a.length,o=new Array(n);o[0]=m;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c.mdxType="string"==typeof e?e:r,o[1]=c;for(var u=2;u<n;u++)o[u]=a[u];return i.a.createElement.apply(null,o)}return i.a.createElement.apply(null,a)}m.displayName="MDXCreateElement"},245:function(e,t,a){"use strict";a.r(t),t.default=a.p+"assets/images/jira_number_example-9d86e8dd3b72d9d9c2adddfbffc00a54.png"},246:function(e,t,a){"use strict";a.r(t),t.default=a.p+"assets/images/check_ci_pass-9c6656dec7130470506c7420e55c7dd0.png"},247:function(e,t,a){"use strict";a.r(t),t.default=a.p+"assets/images/compare_pull_request_button-a5c8f7a7ebda5fad45d1d9e6ca8ed58a.png"},248:function(e,t,a){"use strict";a.r(t),t.default=a.p+"assets/images/pull_request_template_example-5db7207e23fa54cca6de32325e8d7c67.png"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[45],{112:function(e,t,a){"use strict";a.r(t),a.d(t,"frontMatter",(function(){return o})),a.d(t,"metadata",(function(){return c})),a.d(t,"toc",(function(){return l})),a.d(t,"default",(function(){return s}));var r=a(3),i=a(7),n=(a(0),a(194)),o={title:"How To Contribute to Submarine"},c={unversionedId:"community/contributing",id:"community/contributing",isDocsHomePage:!1,title:"How To Contribute to Submarine",description:"\x3c!--",source:"@site/docs/community/contributing.md",slug:"/community/contributing",permalink:"/docs/next/community/contributing",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/community/contributing.md",version:"current",sidebar:"docs",previous:{title:"Guide for Apache Submarine Committers",permalink:"/docs/next/community/HowToCommit"},next:{title:"How to vote a Committer or PMC",permalink:"/docs/next/community/HowToVoteCommitterOrPMC"}},l=[{value:"Preface",id:"preface",children:[]},{value:"Build Submarine",id:"build-submarine",children:[]},{value:"Creating patches",id:"creating-patches",children:[{value:"Step1: Fork apache/submarine github repository (first time)",id:"step1-fork-apachesubmarine-github-repository-first-time",children:[]},{value:"Step2: Clone the Submarine to your local machine",id:"step2-clone-the-submarine-to-your-local-machine",children:[]},{value:"Step3: Create a new Jira in Submarine project",id:"step3-create-a-new-jira-in-submarine-project",children:[]},{value:"Step4: Create a local branch for your contribution",id:"step4-create-a-local-branch-for-your-contribution",children:[]},{value:"Step5: Develop &amp; Create commits",id:"step5-develop--create-commits",children:[]},{value:"Step6: Syncing your local branch with upstream/master",id:"step6-syncing-your-local-branch-with-upstreammaster",children:[]},{value:"Step7: Push your local branch to your personal fork",id:"step7-push-your-local-branch-to-your-personal-fork",children:[]},{value:"Step8: Check GitHub Actions status of your personal commit",id:"step8-check-github-actions-status-of-your-personal-commit",children:[]},{value:"Step9: Create a pull request on github UI",id:"step9-create-a-pull-request-on-github-ui",children:[]},{value:"Step10: Check GitHub Actions status of your pull request in apache/submarine",id:"step10-check-github-actions-status-of-your-pull-request-in-apachesubmarine",children:[]},{value:"Step11: The Review Process",id:"step11-the-review-process",children:[]},{value:"Step12: Address review comments",id:"step12-address-review-comments",children:[]},{value:"Code convention",id:"code-convention",children:[]}]}],u={toc:l};function s(e){var t=e.components,o=Object(i.a)(e,["components"]);return Object(n.b)("wrapper",Object(r.a)({},u,o,{components:t,mdxType:"MDXLayout"}),Object(n.b)("p",null,"There are several ways to contribute to Submarine:"),Object(n.b)("ol",null,Object(n.b)("li",{parentName:"ol"},"Develop and Commit source code (This document will primarily focus on this.)"),Object(n.b)("li",{parentName:"ol"},"Report issues (You can report issues with both Github or Jira.)"),Object(n.b)("li",{parentName:"ol"},"Discuss/Answer questions on the mailing list"),Object(n.b)("li",{parentName:"ol"},"Share use cases")),Object(n.b)("h2",{id:"preface"},"Preface"),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},Object(n.b)("strong",{parentName:"li"},"Apache Submarine")," is an ",Object(n.b)("a",{parentName:"li",href:"https://github.com/apache/submarine/blob/master/LICENSE"},"Apache 2.0 License")," Software. Contributing to Submarine means you agree to the Apache 2.0 License. "),Object(n.b)("li",{parentName:"ul"},"Please read ",Object(n.b)("a",{parentName:"li",href:"http://www.apache.org/foundation/policies/conduct.html"},"Code of Conduct")," carefully."),Object(n.b)("li",{parentName:"ul"},"The document ",Object(n.b)("a",{parentName:"li",href:"http://www.apache.org/foundation/how-it-works.html"},"How It Works")," can help you understand Apache Software Foundation further.")),Object(n.b)("h2",{id:"build-submarine"},"Build Submarine"),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},Object(n.b)("a",{parentName:"li",href:"https://github.com/apache/submarine/blob/master/website/docs/devDocs/BuildFromCode.md"},"Build From Code"))),Object(n.b)("h2",{id:"creating-patches"},"Creating patches"),Object(n.b)("p",null,"Submarine follows ",Object(n.b)("a",{parentName:"p",href:"https://github.com/sevntu-checkstyle/sevntu.checkstyle/wiki/Development-workflow-with-Git:-Fork,-Branching,-Commits,-and-Pull-Request"},"Fork & Pull")," model."),Object(n.b)("h3",{id:"step1-fork-apachesubmarine-github-repository-first-time"},"Step1: Fork apache/submarine github repository (first time)"),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},"Visit ",Object(n.b)("a",{parentName:"li",href:"https://github.com/apache/submarine"},"https://github.com/apache/submarine")),Object(n.b)("li",{parentName:"ul"},"Click the ",Object(n.b)("inlineCode",{parentName:"li"},"Fork")," button to create a fork of the repository")),Object(n.b)("h3",{id:"step2-clone-the-submarine-to-your-local-machine"},"Step2: Clone the Submarine to your local machine"),Object(n.b)("pre",null,Object(n.b)("code",{parentName:"pre",className:"language-sh"},"# USERNAME \u2013 your Github user account name.\ngit clone git@github.com:${USERNAME}/submarine.git\n# or: git clone https://github.com/${USERNAME}/submarine.git \n \ncd submarine\n# set upstream \ngit remote add upstream git@github.com:apache/submarine.git\n# or: git remote add upstream https://github.com/apache/submarine.git\n\n# Don't push to the upstream master.\ngit remote set-url --push upstream no_push\n\n# Check upstream/origin:\n# origin    git@github.com:${USERNAME}/submarine.git (fetch)\n# origin    git@github.com:${USERNAME}/submarine.git (push)\n# upstream  git@github.com:apache/submarine.git (fetch)\n# upstream  no_push (push)\ngit remote -v\n")),Object(n.b)("h3",{id:"step3-create-a-new-jira-in-submarine-project"},"Step3: Create a new Jira in Submarine project"),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},"New contributors need privilege to create JIRA issues. Please email ",Object(n.b)("a",{parentName:"li",href:"mailto:kaihsun@apache.org"},"kaihsun@apache.org"),' with your Jira username. In addition, the email title should be "',"[New Submarine Contributor]",'".'),Object(n.b)("li",{parentName:"ul"},"Check ",Object(n.b)("a",{parentName:"li",href:"https://issues.apache.org/jira/projects/SUBMARINE/issues/SUBMARINE-748?filter=allopenissues"},"Jira issue tracker")," for existing issues."),Object(n.b)("li",{parentName:"ul"},"Create a new Jira issue in Submarine project. When the issue is created, a Jira number (eg. SUBMARINE-748) will be assigned to the issue automatically.\n",Object(n.b)("img",{alt:"jira_number_example",src:a(230).default}))),Object(n.b)("h3",{id:"step4-create-a-local-branch-for-your-contribution"},"Step4: Create a local branch for your contribution"),Object(n.b)("pre",null,Object(n.b)("code",{parentName:"pre",className:"language-sh"},"cd submarine\n\n# Make your local master up-to-date\ngit checkout master\ngit fetch upstream \ngit rebase upstream/master\n\n# Create a new branch fro issue SUBMARINE-${jira_number}\ngit checkout -b SUBMARINE-${jira_number}\n\n# Example: git checkout -b SUBMARINE-748 \n")),Object(n.b)("h3",{id:"step5-develop--create-commits"},"Step5: Develop & Create commits"),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},"You can edit the code on the ",Object(n.b)("inlineCode",{parentName:"li"},"SUBMARINE-${jira_number}")," branch. (Coding Style: ",Object(n.b)("a",{parentName:"li",href:"#code-convention"},"Code Convention"),")"),Object(n.b)("li",{parentName:"ul"},"Create commits")),Object(n.b)("pre",null,Object(n.b)("code",{parentName:"pre",className:"language-sh"},'git add ${edited files}\ngit commit -m "SUBMARINE-${jira_number}. ${Commit Message}"\n# Example: git commit -m "SUBMARINE-748. Update Contributing guide" \n')),Object(n.b)("h3",{id:"step6-syncing-your-local-branch-with-upstreammaster"},"Step6: Syncing your local branch with upstream/master"),Object(n.b)("pre",null,Object(n.b)("code",{parentName:"pre",className:"language-sh"},"# On SUBMARINE-${jira_number} branch\ngit fetch upstream\ngit rebase upstream/master\n")),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},"Please do not use ",Object(n.b)("inlineCode",{parentName:"li"},"git pull")," to synchronize your local branch. Because ",Object(n.b)("inlineCode",{parentName:"li"},"git pull")," does a merge to create merged commits, these will make commit history messy.")),Object(n.b)("h3",{id:"step7-push-your-local-branch-to-your-personal-fork"},"Step7: Push your local branch to your personal fork"),Object(n.b)("pre",null,Object(n.b)("code",{parentName:"pre",className:"language-sh"},"git push origin SUBMARINE-${jira_number} \n")),Object(n.b)("h3",{id:"step8-check-github-actions-status-of-your-personal-commit"},"Step8: Check GitHub Actions status of your personal commit"),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},"Visit ",Object(n.b)("inlineCode",{parentName:"li"},"https://github.com/${USERNAME}/submarine/actions")),Object(n.b)("li",{parentName:"ul"},"Please make sure your new commits can pass all workflows before creating a pull request.")),Object(n.b)("p",null,Object(n.b)("img",{alt:"check_ci_pass",src:a(231).default})),Object(n.b)("h3",{id:"step9-create-a-pull-request-on-github-ui"},"Step9: Create a pull request on github UI"),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},"Visit your fork at ",Object(n.b)("inlineCode",{parentName:"li"},"https://github.com/${USERNAME}/submarine.git")),Object(n.b)("li",{parentName:"ul"},"Click ",Object(n.b)("inlineCode",{parentName:"li"},"Compare & Pull Request")," button to create pull request.\n",Object(n.b)("img",{alt:"compare_pull_request_button",src:a(232).default}))),Object(n.b)("h4",{id:"pull-request-template"},"Pull Request template"),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},Object(n.b)("a",{parentName:"li",href:"https://github.com/apache/submarine/blob/bd7578cc28f8280f9170938d4469fcc965e24a89/.github/PULL_REQUEST_TEMPLATE"},"Pull request template")),Object(n.b)("li",{parentName:"ul"},"Filling the template thoroughly can improve the speed of the review process. Example: ")),Object(n.b)("p",null,Object(n.b)("img",{alt:"pull_request_template_example",src:a(233).default})),Object(n.b)("h3",{id:"step10-check-github-actions-status-of-your-pull-request-in-apachesubmarine"},"Step10: Check GitHub Actions status of your pull request in apache/submarine"),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},"Visit ",Object(n.b)("a",{parentName:"li",href:"https://github.com/apache/submarine/actions"},"https://github.com/apache/submarine/actions")),Object(n.b)("li",{parentName:"ul"},"Please make sure your pull request can pass all workflows. ")),Object(n.b)("h3",{id:"step11-the-review-process"},"Step11: The Review Process"),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},"Anyone can be a reviewer and comment on the pull requests."),Object(n.b)("li",{parentName:"ul"},'Reviewer can indicate that a patch looks suitable for merging with a comment such as: "Looks good", "LGTM", "+1". (PS: LGTM = Looks Good To Me)'),Object(n.b)("li",{parentName:"ul"},'At least one indication of suitability (e.g. "LGTM") from a committer is required to be merged. '),Object(n.b)("li",{parentName:"ul"},'A committer can then initiate lazy consensus ("Merge if there is no more discussion") after which the code can be merged after a particular time (usually 24 hours) if there are no more reviews.'),Object(n.b)("li",{parentName:"ul"},"Contributors can ping reviewers (including committers) by commenting 'Ready to review'.")),Object(n.b)("h3",{id:"step12-address-review-comments"},"Step12: Address review comments"),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},"Push new commits to SUBMARINE-${jira_number} branch. The pull request will update automatically."),Object(n.b)("li",{parentName:"ul"},"After you address all review comments, committers will merge the pull request.")),Object(n.b)("h3",{id:"code-convention"},"Code convention"),Object(n.b)("p",null,"We are following Google Code style:"),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},Object(n.b)("a",{parentName:"li",href:"https://google.github.io/styleguide/javaguide.html"},"Java style")),Object(n.b)("li",{parentName:"ul"},Object(n.b)("a",{parentName:"li",href:"https://google.github.io/styleguide/shell.xml"},"Shell style"))),Object(n.b)("p",null,"There are some plugins to format, lint your code in IDE (use ",Object(n.b)("a",{parentName:"p",href:"hhttps://github.com/apache/submarine/blob/master/dev-support/maven-config/checkstyle.xml"},"dev-support/maven-config/checkstyle.xml")," as rules)"),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},Object(n.b)("a",{parentName:"li",href:"https://plugins.jetbrains.com/plugin/1065"},"Checkstyle plugin for Intellij")," (",Object(n.b)("a",{parentName:"li",href:"http://stackoverflow.com/questions/26955766/intellij-idea-checkstyle"},"Setting Guide"),")"),Object(n.b)("li",{parentName:"ul"},Object(n.b)("a",{parentName:"li",href:"http://eclipse-cs.sourceforge.net/#!/"},"Checkstyle plugin for Eclipse")," (",Object(n.b)("a",{parentName:"li",href:"http://eclipse-cs.sourceforge.net/#!/project-setup"},"Setting Guide"),")")))}s.isMDXComponent=!0},194:function(e,t,a){"use strict";a.d(t,"a",(function(){return b})),a.d(t,"b",(function(){return h}));var r=a(0),i=a.n(r);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function c(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,r,i=function(e,t){if(null==e)return{};var a,r,i={},n=Object.keys(e);for(r=0;r<n.length;r++)a=n[r],t.indexOf(a)>=0||(i[a]=e[a]);return i}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r<n.length;r++)a=n[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(i[a]=e[a])}return i}var u=i.a.createContext({}),s=function(e){var t=i.a.useContext(u),a=t;return e&&(a="function"==typeof e?e(t):c(c({},t),e)),a},b=function(e){var t=s(e.components);return i.a.createElement(u.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return i.a.createElement(i.a.Fragment,{},t)}},m=i.a.forwardRef((function(e,t){var a=e.components,r=e.mdxType,n=e.originalType,o=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),b=s(a),m=r,h=b["".concat(o,".").concat(m)]||b[m]||p[m]||n;return a?i.a.createElement(h,c(c({ref:t},u),{},{components:a})):i.a.createElement(h,c({ref:t},u))}));function h(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var n=a.length,o=new Array(n);o[0]=m;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c.mdxType="string"==typeof e?e:r,o[1]=c;for(var u=2;u<n;u++)o[u]=a[u];return i.a.createElement.apply(null,o)}return i.a.createElement.apply(null,a)}m.displayName="MDXCreateElement"},230:function(e,t,a){"use strict";a.r(t),t.default=a.p+"assets/images/jira_number_example-9d86e8dd3b72d9d9c2adddfbffc00a54.png"},231:function(e,t,a){"use strict";a.r(t),t.default=a.p+"assets/images/check_ci_pass-9c6656dec7130470506c7420e55c7dd0.png"},232:function(e,t,a){"use strict";a.r(t),t.default=a.p+"assets/images/compare_pull_request_button-a5c8f7a7ebda5fad45d1d9e6ca8ed58a.png"},233:function(e,t,a){"use strict";a.r(t),t.default=a.p+"assets/images/pull_request_template_example-5db7207e23fa54cca6de32325e8d7c67.png"}}]);
\ No newline at end of file
diff --git a/63f0eece.02856e78.js b/63f0eece.5a93fa51.js
similarity index 96%
rename from 63f0eece.02856e78.js
rename to 63f0eece.5a93fa51.js
index 5e092d7..94750ee 100644
--- a/63f0eece.02856e78.js
+++ b/63f0eece.5a93fa51.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[51],{118:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return a})),n.d(t,"metadata",(function(){return c})),n.d(t,"toc",(function(){return s})),n.d(t,"default",(function(){return l}));var r=n(3),i=n(7),o=(n(0),n(209)),a={title:"Implementation Notes"},c={unversionedId:"designDocs/implementation-notes",id:"designDocs/implementation-notes",isDocsHomePage:!1,title:"Implementation Notes",description:"\x3c!--",source:"@site/docs/designDocs/implementation-notes.md",slug:"/designDocs/implementation-notes",permalink:"/docs/next/designDocs/implementation-notes",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/designDocs/implementation-notes.md",version:"current",sidebar:"docs",previous:{title:"Architecture and Requirment",permalink:"/docs/next/designDocs/architecture-and-requirements"},next:{title:"Environments Implementation",permalink:"/docs/next/designDocs/environments-implementation"}},s=[],m={toc:s};function l(e){var t=e.components,n=Object(i.a)(e,["components"]);return Object(o.b)("wrapper",Object(r.a)({},m,n,{components:t,mdxType:"MDXLayout"}),Object(o.b)("p",null,"Before digging into details of implementations, you should read ",Object(o.b)("a",{parentName:"p",href:"/docs/next/designDocs/architecture-and-requirements"},"architecture-and-requirements")," first to understand overall requirements and architecture."),Object(o.b)("p",null,"Here're sub topics of Submarine implementations:"),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},Object(o.b)("a",{parentName:"li",href:"/docs/next/designDocs/storage-implementation"},"Submarine Storage"),": How to store metadata, logs, metrics, etc. of Submarine."),Object(o.b)("li",{parentName:"ul"},Object(o.b)("a",{parentName:"li",href:"/docs/next/designDocs/environments-implementation"},"Submarine Environment"),": How environments created, managed, stored in Submarine."),Object(o.b)("li",{parentName:"ul"},Object(o.b)("a",{parentName:"li",href:"/docs/next/designDocs/experiment-implementation"},"Submarine Experiment"),": How experiments managed, stored, and how the predefined experiment template works."),Object(o.b)("li",{parentName:"ul"},Object(o.b)("a",{parentName:"li",href:"/docs/next/designDocs/notebook-implementation"},"Submarine Notebook"),": How experiments managed, stored, and how the predefined experiment template works."),Object(o.b)("li",{parentName:"ul"},Object(o.b)("a",{parentName:"li",href:"/docs/next/designDocs/submarine-server/architecture"},"Submarine Server"),": How Submarine server is designed, architecture, implementation notes, etc.")),Object(o.b)("p",null,"Working-in-progress designs, Below are designs which are working-in-progress, we will move them to the upper section once design & review is finished:"),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},Object(o.b)("a",{parentName:"li",href:"/docs/next/designDocs/wip-designs/submarine-clusterServer"},"Submarine HA Design"),": How Submarine HA can be achieved, using RAFT, etc."),Object(o.b)("li",{parentName:"ul"},Object(o.b)("a",{parentName:"li",href:"/docs/next/designDocs/wip-designs/submarine-launcher"},"Submarine services deployment module:")," How to deploy submarine services to k8s or cloud.")))}l.isMDXComponent=!0},209:function(e,t,n){"use strict";n.d(t,"a",(function(){return u})),n.d(t,"b",(function(){return b}));var r=n(0),i=n.n(r);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function c(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n,r,i={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var m=i.a.createContext({}),l=function(e){var t=i.a.useContext(m),n=t;return e&&(n="function"==typeof e?e(t):c(c({},t),e)),n},u=function(e){var t=l(e.components);return i.a.createElement(m.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return i.a.createElement(i.a.Fragment,{},t)}},d=i.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,a=e.parentName,m=s(e,["components","mdxType","originalType","parentName"]),u=l(n),d=r,b=u["".concat(a,".").concat(d)]||u[d]||p[d]||o;return n?i.a.createElement(b,c(c({ref:t},m),{},{components:n})):i.a.createElement(b,c({ref:t},m))}));function b(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,a=new Array(o);a[0]=d;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c.mdxType="string"==typeof e?e:r,a[1]=c;for(var m=2;m<o;m++)a[m]=n[m];return i.a.createElement.apply(null,a)}return i.a.createElement.apply(null,n)}d.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[46],{113:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return a})),n.d(t,"metadata",(function(){return c})),n.d(t,"toc",(function(){return s})),n.d(t,"default",(function(){return l}));var r=n(3),i=n(7),o=(n(0),n(194)),a={title:"Implementation Notes"},c={unversionedId:"designDocs/implementation-notes",id:"designDocs/implementation-notes",isDocsHomePage:!1,title:"Implementation Notes",description:"\x3c!--",source:"@site/docs/designDocs/implementation-notes.md",slug:"/designDocs/implementation-notes",permalink:"/docs/next/designDocs/implementation-notes",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/designDocs/implementation-notes.md",version:"current",sidebar:"docs",previous:{title:"Architecture and Requirment",permalink:"/docs/next/designDocs/architecture-and-requirements"},next:{title:"Environments Implementation",permalink:"/docs/next/designDocs/environments-implementation"}},s=[],m={toc:s};function l(e){var t=e.components,n=Object(i.a)(e,["components"]);return Object(o.b)("wrapper",Object(r.a)({},m,n,{components:t,mdxType:"MDXLayout"}),Object(o.b)("p",null,"Before digging into details of implementations, you should read ",Object(o.b)("a",{parentName:"p",href:"/docs/next/designDocs/architecture-and-requirements"},"architecture-and-requirements")," first to understand overall requirements and architecture."),Object(o.b)("p",null,"Here're sub topics of Submarine implementations:"),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},Object(o.b)("a",{parentName:"li",href:"/docs/next/designDocs/storage-implementation"},"Submarine Storage"),": How to store metadata, logs, metrics, etc. of Submarine."),Object(o.b)("li",{parentName:"ul"},Object(o.b)("a",{parentName:"li",href:"/docs/next/designDocs/environments-implementation"},"Submarine Environment"),": How environments created, managed, stored in Submarine."),Object(o.b)("li",{parentName:"ul"},Object(o.b)("a",{parentName:"li",href:"/docs/next/designDocs/experiment-implementation"},"Submarine Experiment"),": How experiments managed, stored, and how the predefined experiment template works."),Object(o.b)("li",{parentName:"ul"},Object(o.b)("a",{parentName:"li",href:"/docs/next/designDocs/notebook-implementation"},"Submarine Notebook"),": How experiments managed, stored, and how the predefined experiment template works."),Object(o.b)("li",{parentName:"ul"},Object(o.b)("a",{parentName:"li",href:"/docs/next/designDocs/submarine-server/architecture"},"Submarine Server"),": How Submarine server is designed, architecture, implementation notes, etc.")),Object(o.b)("p",null,"Working-in-progress designs, Below are designs which are working-in-progress, we will move them to the upper section once design & review is finished:"),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},Object(o.b)("a",{parentName:"li",href:"/docs/next/designDocs/wip-designs/submarine-clusterServer"},"Submarine HA Design"),": How Submarine HA can be achieved, using RAFT, etc."),Object(o.b)("li",{parentName:"ul"},Object(o.b)("a",{parentName:"li",href:"/docs/next/designDocs/wip-designs/submarine-launcher"},"Submarine services deployment module:")," How to deploy submarine services to k8s or cloud.")))}l.isMDXComponent=!0},194:function(e,t,n){"use strict";n.d(t,"a",(function(){return u})),n.d(t,"b",(function(){return b}));var r=n(0),i=n.n(r);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function c(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n,r,i={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var m=i.a.createContext({}),l=function(e){var t=i.a.useContext(m),n=t;return e&&(n="function"==typeof e?e(t):c(c({},t),e)),n},u=function(e){var t=l(e.components);return i.a.createElement(m.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return i.a.createElement(i.a.Fragment,{},t)}},d=i.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,a=e.parentName,m=s(e,["components","mdxType","originalType","parentName"]),u=l(n),d=r,b=u["".concat(a,".").concat(d)]||u[d]||p[d]||o;return n?i.a.createElement(b,c(c({ref:t},m),{},{components:n})):i.a.createElement(b,c({ref:t},m))}));function b(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,a=new Array(o);a[0]=d;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c.mdxType="string"==typeof e?e:r,a[1]=c;for(var m=2;m<o;m++)a[m]=n[m];return i.a.createElement.apply(null,a)}return i.a.createElement.apply(null,n)}d.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/66ca1d53.2d44bd04.js b/66ca1d53.810c109a.js
similarity index 94%
rename from 66ca1d53.2d44bd04.js
rename to 66ca1d53.810c109a.js
index a571a23..3fa6c31 100644
--- a/66ca1d53.2d44bd04.js
+++ b/66ca1d53.810c109a.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[52],{119:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return c})),n.d(t,"metadata",(function(){return i})),n.d(t,"toc",(function(){return s})),n.d(t,"default",(function(){return l}));var r=n(3),a=n(7),o=(n(0),n(209)),c={title:"Setup a Kubernetes cluster using KinD"},i={unversionedId:"gettingStarted/kind",id:"version-0.6.0/gettingStarted/kind",isDocsHomePage:!1,title:"Setup a Kubernetes cluster using KinD",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/gettingStarted/kind.md",slug:"/gettingStarted/kind",permalink:"/docs/gettingStarted/kind",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/gettingStarted/kind.md",version:"0.6.0"},s=[{value:"Create Kubernetes cluster with KinD",id:"create-kubernetes-cluster-with-kind",children:[]},{value:"Kubernetes Dashboard (optional)",id:"kubernetes-dashboard-optional",children:[{value:"Deploy",id:"deploy",children:[]},{value:"Create RBAC",id:"create-rbac",children:[]},{value:"Get access token (optional)",id:"get-access-token-optional",children:[]},{value:"Start dashboard service",id:"start-dashboard-service",children:[]}]}],d={toc:s};function l(e){var t=e.components,c=Object(a.a)(e,["components"]);return Object(o.b)("wrapper",Object(r.a)({},d,c,{components:t,mdxType:"MDXLayout"}),Object(o.b)("h2",{id:"create-kubernetes-cluster-with-kind"},"Create Kubernetes cluster with KinD"),Object(o.b)("p",null,"We recommend users developing Submarine with minikube. However, ",Object(o.b)("a",{parentName:"p",href:"https://kind.sigs.k8s.io/"},Object(o.b)("inlineCode",{parentName:"a"},"KinD"))," is also an option to setup a Kubernetes cluster on your local machine."),Object(o.b)("p",null,"Run the following command, and specify the KinD version and Kubernetes version ",Object(o.b)("a",{parentName:"p",href:"../devDocs/Dependencies"},Object(o.b)("inlineCode",{parentName:"a"},"here")),"."),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-bash"},"# Download the specific version of KinD (must >= v0.6.0)\nexport KIND_VERSION=v0.11.1\ncurl -Lo ./kind https://github.com/kubernetes-sigs/kind/releases/download/${KIND_VERSION}/kind-linux-amd64\n# Make the binary executable\nchmod +x ./kind\n# Move the binary to your executable path\nsudo mv ./kind /usr/local/bin/\n# Create cluster with specific version of kubernetes\nexport KUBE_VERSION=v1.15.12\nkind create cluster --image kindest/node:${KUBE_VERSION}\n")),Object(o.b)("h2",{id:"kubernetes-dashboard-optional"},"Kubernetes Dashboard (optional)"),Object(o.b)("h3",{id:"deploy"},"Deploy"),Object(o.b)("p",null,"To deploy Dashboard, execute the following command:"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta8/aio/deploy/recommended.yaml\n")),Object(o.b)("h3",{id:"create-rbac"},"Create RBAC"),Object(o.b)("p",null,"Run the following commands to grant the cluster access permission of dashboard:"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"kubectl create serviceaccount dashboard-admin-sa\nkubectl create clusterrolebinding dashboard-admin-sa --clusterrole=cluster-admin --serviceaccount=default:dashboard-admin-sa\n")),Object(o.b)("h3",{id:"get-access-token-optional"},"Get access token (optional)"),Object(o.b)("p",null,"If you want to use the token to login the dashboard, run the following commands to get key:"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"kubectl get secrets\n# select the right dashboard-admin-sa-token to describe the secret\nkubectl describe secret dashboard-admin-sa-token-6nhkx\n")),Object(o.b)("h3",{id:"start-dashboard-service"},"Start dashboard service"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"kubectl proxy\n")),Object(o.b)("p",null,"Now access Dashboard at:"),Object(o.b)("blockquote",null,Object(o.b)("p",{parentName:"blockquote"},"http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/")),Object(o.b)("p",null,"Dashboard screenshot:"),Object(o.b)("p",null,Object(o.b)("img",{src:n(239).default})))}l.isMDXComponent=!0},209:function(e,t,n){"use strict";n.d(t,"a",(function(){return b})),n.d(t,"b",(function(){return h}));var r=n(0),a=n.n(r);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?c(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):c(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var d=a.a.createContext({}),l=function(e){var t=a.a.useContext(d),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},b=function(e){var t=l(e.components);return a.a.createElement(d.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},p=a.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,c=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),b=l(n),p=r,h=b["".concat(c,".").concat(p)]||b[p]||u[p]||o;return n?a.a.createElement(h,i(i({ref:t},d),{},{components:n})):a.a.createElement(h,i({ref:t},d))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,c=new Array(o);c[0]=p;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i.mdxType="string"==typeof e?e:r,c[1]=i;for(var d=2;d<o;d++)c[d]=n[d];return a.a.createElement.apply(null,c)}return a.a.createElement.apply(null,n)}p.displayName="MDXCreateElement"},239:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/kind-dashboard-96b734dca17dd1d6043efad54f4c4725.png"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[47],{114:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return c})),n.d(t,"metadata",(function(){return i})),n.d(t,"toc",(function(){return s})),n.d(t,"default",(function(){return l}));var r=n(3),a=n(7),o=(n(0),n(194)),c={title:"Setup a Kubernetes cluster using KinD"},i={unversionedId:"gettingStarted/kind",id:"version-0.6.0/gettingStarted/kind",isDocsHomePage:!1,title:"Setup a Kubernetes cluster using KinD",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/gettingStarted/kind.md",slug:"/gettingStarted/kind",permalink:"/docs/gettingStarted/kind",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/gettingStarted/kind.md",version:"0.6.0"},s=[{value:"Create Kubernetes cluster with KinD",id:"create-kubernetes-cluster-with-kind",children:[]},{value:"Kubernetes Dashboard (optional)",id:"kubernetes-dashboard-optional",children:[{value:"Deploy",id:"deploy",children:[]},{value:"Create RBAC",id:"create-rbac",children:[]},{value:"Get access token (optional)",id:"get-access-token-optional",children:[]},{value:"Start dashboard service",id:"start-dashboard-service",children:[]}]}],d={toc:s};function l(e){var t=e.components,c=Object(a.a)(e,["components"]);return Object(o.b)("wrapper",Object(r.a)({},d,c,{components:t,mdxType:"MDXLayout"}),Object(o.b)("h2",{id:"create-kubernetes-cluster-with-kind"},"Create Kubernetes cluster with KinD"),Object(o.b)("p",null,"We recommend users developing Submarine with minikube. However, ",Object(o.b)("a",{parentName:"p",href:"https://kind.sigs.k8s.io/"},Object(o.b)("inlineCode",{parentName:"a"},"KinD"))," is also an option to setup a Kubernetes cluster on your local machine."),Object(o.b)("p",null,"Run the following command, and specify the KinD version and Kubernetes version ",Object(o.b)("a",{parentName:"p",href:"../devDocs/Dependencies"},Object(o.b)("inlineCode",{parentName:"a"},"here")),"."),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-bash"},"# Download the specific version of KinD (must >= v0.6.0)\nexport KIND_VERSION=v0.11.1\ncurl -Lo ./kind https://github.com/kubernetes-sigs/kind/releases/download/${KIND_VERSION}/kind-linux-amd64\n# Make the binary executable\nchmod +x ./kind\n# Move the binary to your executable path\nsudo mv ./kind /usr/local/bin/\n# Create cluster with specific version of kubernetes\nexport KUBE_VERSION=v1.15.12\nkind create cluster --image kindest/node:${KUBE_VERSION}\n")),Object(o.b)("h2",{id:"kubernetes-dashboard-optional"},"Kubernetes Dashboard (optional)"),Object(o.b)("h3",{id:"deploy"},"Deploy"),Object(o.b)("p",null,"To deploy Dashboard, execute the following command:"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta8/aio/deploy/recommended.yaml\n")),Object(o.b)("h3",{id:"create-rbac"},"Create RBAC"),Object(o.b)("p",null,"Run the following commands to grant the cluster access permission of dashboard:"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"kubectl create serviceaccount dashboard-admin-sa\nkubectl create clusterrolebinding dashboard-admin-sa --clusterrole=cluster-admin --serviceaccount=default:dashboard-admin-sa\n")),Object(o.b)("h3",{id:"get-access-token-optional"},"Get access token (optional)"),Object(o.b)("p",null,"If you want to use the token to login the dashboard, run the following commands to get key:"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"kubectl get secrets\n# select the right dashboard-admin-sa-token to describe the secret\nkubectl describe secret dashboard-admin-sa-token-6nhkx\n")),Object(o.b)("h3",{id:"start-dashboard-service"},"Start dashboard service"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"kubectl proxy\n")),Object(o.b)("p",null,"Now access Dashboard at:"),Object(o.b)("blockquote",null,Object(o.b)("p",{parentName:"blockquote"},"http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/")),Object(o.b)("p",null,"Dashboard screenshot:"),Object(o.b)("p",null,Object(o.b)("img",{src:n(217).default})))}l.isMDXComponent=!0},194:function(e,t,n){"use strict";n.d(t,"a",(function(){return b})),n.d(t,"b",(function(){return h}));var r=n(0),a=n.n(r);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?c(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):c(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var d=a.a.createContext({}),l=function(e){var t=a.a.useContext(d),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},b=function(e){var t=l(e.components);return a.a.createElement(d.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},p=a.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,c=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),b=l(n),p=r,h=b["".concat(c,".").concat(p)]||b[p]||u[p]||o;return n?a.a.createElement(h,i(i({ref:t},d),{},{components:n})):a.a.createElement(h,i({ref:t},d))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,c=new Array(o);c[0]=p;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i.mdxType="string"==typeof e?e:r,c[1]=i;for(var d=2;d<o;d++)c[d]=n[d];return a.a.createElement.apply(null,c)}return a.a.createElement.apply(null,n)}p.displayName="MDXCreateElement"},217:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/kind-dashboard-96b734dca17dd1d6043efad54f4c4725.png"}}]);
\ No newline at end of file
diff --git a/6a132804.fe6c8b4f.js b/6a132804.4ebb8994.js
similarity index 97%
rename from 6a132804.fe6c8b4f.js
rename to 6a132804.4ebb8994.js
index 3ce83d0..1b0c4ae 100644
--- a/6a132804.fe6c8b4f.js
+++ b/6a132804.4ebb8994.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[53],{120:function(e,n,t){"use strict";t.r(n),t.d(n,"frontMatter",(function(){return i})),t.d(n,"metadata",(function(){return l})),t.d(n,"toc",(function(){return c})),t.d(n,"default",(function(){return p}));var r=t(3),a=t(7),o=(t(0),t(209)),i={title:"Submarine Python SDK"},l={unversionedId:"gettingStarted/python-sdk",id:"version-0.6.0/gettingStarted/python-sdk",isDocsHomePage:!1,title:"Submarine Python SDK",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/gettingStarted/python-sdk.md",slug:"/gettingStarted/python-sdk",permalink:"/docs/gettingStarted/python-sdk",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/gettingStarted/python-sdk.md",version:"0.6.0"},c=[{value:"Prepare Python Environment to run Submarine SDK",id:"prepare-python-environment-to-run-submarine-sdk",children:[]},{value:"Install Submarine SDK",id:"install-submarine-sdk",children:[{value:"Install SDK from pypi.org (recommended)",id:"install-sdk-from-pypiorg-recommended",children:[]},{value:"Install SDK from source code",id:"install-sdk-from-source-code",children:[]}]},{value:"Manage Submarine Experiment",id:"manage-submarine-experiment",children:[]},{value:"Training a DeepFM model",id:"training-a-deepfm-model",children:[]}],s={toc:c};function p(e){var n=e.components,t=Object(a.a)(e,["components"]);return Object(o.b)("wrapper",Object(r.a)({},s,t,{components:n,mdxType:"MDXLayout"}),Object(o.b)("p",null,"Submarine Python SDK can runs on any machine and it will talk to Submarine Server via REST API. So you can install Submarine Python SDK on your laptop, a gateway machine, your favorite IDE (like PyCharm/Jupyter, etc.)."),Object(o.b)("p",null,"Furthermore, Submarine supports an extensible package of CTR models based on ",Object(o.b)("strong",{parentName:"p"},"TensorFlow")," and ",Object(o.b)("strong",{parentName:"p"},"PyTorch")," along with lots of core components layers that can be used to easily build custom models. You can train any model with ",Object(o.b)("inlineCode",{parentName:"p"},"model.train()")," and ",Object(o.b)("inlineCode",{parentName:"p"},"model.predict()"),"."),Object(o.b)("h2",{id:"prepare-python-environment-to-run-submarine-sdk"},"Prepare Python Environment to run Submarine SDK"),Object(o.b)("p",null,"Submarine SDK requires Python3.7+.\nIt's better to use a new Python environment created by ",Object(o.b)("inlineCode",{parentName:"p"},"Anoconda")," or Python ",Object(o.b)("inlineCode",{parentName:"p"},"virtualenv")," to try this to avoid trouble to existing Python environment.\nA sample Python virtual env can be setup like this:"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-bash"},"wget https://files.pythonhosted.org/packages/33/bc/fa0b5347139cd9564f0d44ebd2b147ac97c36b2403943dbee8a25fd74012/virtualenv-16.0.0.tar.gz\ntar xf virtualenv-16.0.0.tar.gz\n\n# Make sure to install using Python 3\npython3 virtualenv-16.0.0/virtualenv.py venv\n. venv/bin/activate\n")),Object(o.b)("h2",{id:"install-submarine-sdk"},"Install Submarine SDK"),Object(o.b)("h3",{id:"install-sdk-from-pypiorg-recommended"},"Install SDK from pypi.org (recommended)"),Object(o.b)("p",null,"Starting from ",Object(o.b)("inlineCode",{parentName:"p"},"0.4.0"),", Submarine provides Python SDK. Please change it to a proper version needed. "),Object(o.b)("p",null,"More detail: ",Object(o.b)("a",{parentName:"p",href:"https://pypi.org/project/apache-submarine/"},"https://pypi.org/project/apache-submarine/")),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-bash"},"# Install latest stable version\npip install apache-submarine\n# Install specific version\npip install apache-submarine==<REPLACE_VERSION>\n")),Object(o.b)("h3",{id:"install-sdk-from-source-code"},"Install SDK from source code"),Object(o.b)("p",null,"Please first clone code from github or go to ",Object(o.b)("inlineCode",{parentName:"p"},"http://submarine.apache.org/download.html")," to download released source code."),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-bash"},"git clone https://github.com/apache/submarine.git\n# (optional) chackout specific branch or release\ngit checkout <correct release tag/branch>\ncd submarine/submarine-sdk/pysubmarine\npip install .\n")),Object(o.b)("h2",{id:"manage-submarine-experiment"},"Manage Submarine Experiment"),Object(o.b)("p",null,"Assuming you've installed submarine on K8s and forward the traefik service to localhost, now you can open a Python shell, Jupyter notebook or any tools with Submarine SDK installed."),Object(o.b)("p",null,"Follow ",Object(o.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/blob/master/submarine-sdk/pysubmarine/example/submarine_experiment_sdk.ipynb"},"SDK experiment example")," to run an experiment."),Object(o.b)("h2",{id:"training-a-deepfm-model"},"Training a DeepFM model"),Object(o.b)("p",null,"The Submarine also supports users to train an easy-to-use CTR model with a few lines of code and a configuration file, so they don\u2019t need to reimplement the model by themself. In addition, they can train the model on both local on distributed systems, such as Hadoop or Kubernetes."),Object(o.b)("p",null,"Follow ",Object(o.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/blob/master/submarine-sdk/pysubmarine/example/deepfm_example.ipynb"},"SDK DeepFM example")," to try the model."))}p.isMDXComponent=!0},209:function(e,n,t){"use strict";t.d(n,"a",(function(){return u})),t.d(n,"b",(function(){return d}));var r=t(0),a=t.n(r);function o(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(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 l(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?i(Object(t),!0).forEach((function(n){o(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):i(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function c(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var s=a.a.createContext({}),p=function(e){var n=a.a.useContext(s),t=n;return e&&(t="function"==typeof e?e(n):l(l({},n),e)),t},u=function(e){var n=p(e.components);return a.a.createElement(s.Provider,{value:n},e.children)},b={inlineCode:"code",wrapper:function(e){var n=e.children;return a.a.createElement(a.a.Fragment,{},n)}},m=a.a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,o=e.originalType,i=e.parentName,s=c(e,["components","mdxType","originalType","parentName"]),u=p(t),m=r,d=u["".concat(i,".").concat(m)]||u[m]||b[m]||o;return t?a.a.createElement(d,l(l({ref:n},s),{},{components:t})):a.a.createElement(d,l({ref:n},s))}));function d(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var o=t.length,i=new Array(o);i[0]=m;var l={};for(var c in n)hasOwnProperty.call(n,c)&&(l[c]=n[c]);l.originalType=e,l.mdxType="string"==typeof e?e:r,i[1]=l;for(var s=2;s<o;s++)i[s]=t[s];return a.a.createElement.apply(null,i)}return a.a.createElement.apply(null,t)}m.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[48],{115:function(e,n,t){"use strict";t.r(n),t.d(n,"frontMatter",(function(){return i})),t.d(n,"metadata",(function(){return l})),t.d(n,"toc",(function(){return c})),t.d(n,"default",(function(){return p}));var r=t(3),a=t(7),o=(t(0),t(194)),i={title:"Submarine Python SDK"},l={unversionedId:"gettingStarted/python-sdk",id:"version-0.6.0/gettingStarted/python-sdk",isDocsHomePage:!1,title:"Submarine Python SDK",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/gettingStarted/python-sdk.md",slug:"/gettingStarted/python-sdk",permalink:"/docs/gettingStarted/python-sdk",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/gettingStarted/python-sdk.md",version:"0.6.0"},c=[{value:"Prepare Python Environment to run Submarine SDK",id:"prepare-python-environment-to-run-submarine-sdk",children:[]},{value:"Install Submarine SDK",id:"install-submarine-sdk",children:[{value:"Install SDK from pypi.org (recommended)",id:"install-sdk-from-pypiorg-recommended",children:[]},{value:"Install SDK from source code",id:"install-sdk-from-source-code",children:[]}]},{value:"Manage Submarine Experiment",id:"manage-submarine-experiment",children:[]},{value:"Training a DeepFM model",id:"training-a-deepfm-model",children:[]}],s={toc:c};function p(e){var n=e.components,t=Object(a.a)(e,["components"]);return Object(o.b)("wrapper",Object(r.a)({},s,t,{components:n,mdxType:"MDXLayout"}),Object(o.b)("p",null,"Submarine Python SDK can runs on any machine and it will talk to Submarine Server via REST API. So you can install Submarine Python SDK on your laptop, a gateway machine, your favorite IDE (like PyCharm/Jupyter, etc.)."),Object(o.b)("p",null,"Furthermore, Submarine supports an extensible package of CTR models based on ",Object(o.b)("strong",{parentName:"p"},"TensorFlow")," and ",Object(o.b)("strong",{parentName:"p"},"PyTorch")," along with lots of core components layers that can be used to easily build custom models. You can train any model with ",Object(o.b)("inlineCode",{parentName:"p"},"model.train()")," and ",Object(o.b)("inlineCode",{parentName:"p"},"model.predict()"),"."),Object(o.b)("h2",{id:"prepare-python-environment-to-run-submarine-sdk"},"Prepare Python Environment to run Submarine SDK"),Object(o.b)("p",null,"Submarine SDK requires Python3.7+.\nIt's better to use a new Python environment created by ",Object(o.b)("inlineCode",{parentName:"p"},"Anoconda")," or Python ",Object(o.b)("inlineCode",{parentName:"p"},"virtualenv")," to try this to avoid trouble to existing Python environment.\nA sample Python virtual env can be setup like this:"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-bash"},"wget https://files.pythonhosted.org/packages/33/bc/fa0b5347139cd9564f0d44ebd2b147ac97c36b2403943dbee8a25fd74012/virtualenv-16.0.0.tar.gz\ntar xf virtualenv-16.0.0.tar.gz\n\n# Make sure to install using Python 3\npython3 virtualenv-16.0.0/virtualenv.py venv\n. venv/bin/activate\n")),Object(o.b)("h2",{id:"install-submarine-sdk"},"Install Submarine SDK"),Object(o.b)("h3",{id:"install-sdk-from-pypiorg-recommended"},"Install SDK from pypi.org (recommended)"),Object(o.b)("p",null,"Starting from ",Object(o.b)("inlineCode",{parentName:"p"},"0.4.0"),", Submarine provides Python SDK. Please change it to a proper version needed. "),Object(o.b)("p",null,"More detail: ",Object(o.b)("a",{parentName:"p",href:"https://pypi.org/project/apache-submarine/"},"https://pypi.org/project/apache-submarine/")),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-bash"},"# Install latest stable version\npip install apache-submarine\n# Install specific version\npip install apache-submarine==<REPLACE_VERSION>\n")),Object(o.b)("h3",{id:"install-sdk-from-source-code"},"Install SDK from source code"),Object(o.b)("p",null,"Please first clone code from github or go to ",Object(o.b)("inlineCode",{parentName:"p"},"http://submarine.apache.org/download.html")," to download released source code."),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-bash"},"git clone https://github.com/apache/submarine.git\n# (optional) chackout specific branch or release\ngit checkout <correct release tag/branch>\ncd submarine/submarine-sdk/pysubmarine\npip install .\n")),Object(o.b)("h2",{id:"manage-submarine-experiment"},"Manage Submarine Experiment"),Object(o.b)("p",null,"Assuming you've installed submarine on K8s and forward the traefik service to localhost, now you can open a Python shell, Jupyter notebook or any tools with Submarine SDK installed."),Object(o.b)("p",null,"Follow ",Object(o.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/blob/master/submarine-sdk/pysubmarine/example/submarine_experiment_sdk.ipynb"},"SDK experiment example")," to run an experiment."),Object(o.b)("h2",{id:"training-a-deepfm-model"},"Training a DeepFM model"),Object(o.b)("p",null,"The Submarine also supports users to train an easy-to-use CTR model with a few lines of code and a configuration file, so they don\u2019t need to reimplement the model by themself. In addition, they can train the model on both local on distributed systems, such as Hadoop or Kubernetes."),Object(o.b)("p",null,"Follow ",Object(o.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/blob/master/submarine-sdk/pysubmarine/example/deepfm_example.ipynb"},"SDK DeepFM example")," to try the model."))}p.isMDXComponent=!0},194:function(e,n,t){"use strict";t.d(n,"a",(function(){return u})),t.d(n,"b",(function(){return d}));var r=t(0),a=t.n(r);function o(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(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 l(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?i(Object(t),!0).forEach((function(n){o(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):i(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function c(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var s=a.a.createContext({}),p=function(e){var n=a.a.useContext(s),t=n;return e&&(t="function"==typeof e?e(n):l(l({},n),e)),t},u=function(e){var n=p(e.components);return a.a.createElement(s.Provider,{value:n},e.children)},b={inlineCode:"code",wrapper:function(e){var n=e.children;return a.a.createElement(a.a.Fragment,{},n)}},m=a.a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,o=e.originalType,i=e.parentName,s=c(e,["components","mdxType","originalType","parentName"]),u=p(t),m=r,d=u["".concat(i,".").concat(m)]||u[m]||b[m]||o;return t?a.a.createElement(d,l(l({ref:n},s),{},{components:t})):a.a.createElement(d,l({ref:n},s))}));function d(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var o=t.length,i=new Array(o);i[0]=m;var l={};for(var c in n)hasOwnProperty.call(n,c)&&(l[c]=n[c]);l.originalType=e,l.mdxType="string"==typeof e?e:r,i[1]=l;for(var s=2;s<o;s++)i[s]=t[s];return a.a.createElement.apply(null,i)}return a.a.createElement.apply(null,t)}m.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/6aa1aeb0.551f4937.js b/6aa1aeb0.b4eff550.js
similarity index 99%
rename from 6aa1aeb0.551f4937.js
rename to 6aa1aeb0.b4eff550.js
index 1e7ee48..7737c6d 100644
--- a/6aa1aeb0.551f4937.js
+++ b/6aa1aeb0.b4eff550.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[54],{121:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return o})),n.d(t,"metadata",(function(){return s})),n.d(t,"toc",(function(){return l})),n.d(t,"default",(function(){return p}));var r=n(3),i=n(7),a=(n(0),n(209)),o={title:"Experiment Implementation"},s={unversionedId:"designDocs/experiment-implementation",id:"version-0.6.0/designDocs/experiment-implementation",isDocsHomePage:!1,title:"Experiment Implementation",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/designDocs/experiment-implementation.md",slug:"/designDocs/experiment-implementation",permalink:"/docs/designDocs/experiment-implementation",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/designDocs/experiment-implementation.md",version:"0.6.0",sidebar:"docs",previous:{title:"Environments Implementation",permalink:"/docs/designDocs/environments-implementation"},next:{title:"Notebook Implementation",permalink:"/docs/designDocs/notebook-implementation"}},l=[{value:"Overview",id:"overview",children:[]},{value:"API of Experiment",id:"api-of-experiment",children:[]},{value:"Manage environments for experiment",id:"manage-environments-for-experiment",children:[]},{value:"Manage storages for experiment",id:"manage-storages-for-experiment",children:[]},{value:"Manage Pre-defined experiment libraries",id:"manage-pre-defined-experiment-libraries",children:[]},{value:"Flow: Submit an experiment",id:"flow-submit-an-experiment",children:[{value:"Submit via SDK Flows.",id:"submit-via-sdk-flows",children:[]},{value:"Specify what environment to use",id:"specify-what-environment-to-use",children:[]},{value:"Create experiment, specify where&#39;s training code located, and parameters.",id:"create-experiment-specify-wheres-training-code-located-and-parameters",children:[]}]},{value:"Summarize: Experiment v.s. Notebook session",id:"summarize-experiment-vs-notebook-session",children:[]},{value:"Experiment-related modules inside Submarine-server",id:"experiment-related-modules-inside-submarine-server",children:[{value:"Experiment Manager",id:"experiment-manager",children:[]},{value:"Compute Cluster Manager",id:"compute-cluster-manager",children:[]},{value:"Experiment Submitter",id:"experiment-submitter",children:[]},{value:"Experiment Monitor",id:"experiment-monitor",children:[]},{value:"Invoke flows of experiment-related components",id:"invoke-flows-of-experiment-related-components",children:[]}]},{value:"Common modules of experiment/notebook-session/model-serving",id:"common-modules-of-experimentnotebook-sessionmodel-serving",children:[]},{value:"Support Predefined-experiment-templates",id:"support-predefined-experiment-templates",children:[{value:"Predefined-experiment-template API to run experiment",id:"predefined-experiment-template-api-to-run-experiment",children:[]},{value:"Handle Predefined-experiment-template from server side",id:"handle-predefined-experiment-template-from-server-side",children:[]}]}],m={toc:l};function p(e){var t=e.components,n=Object(i.a)(e,["components"]);return Object(a.b)("wrapper",Object(r.a)({},m,n,{components:t,mdxType:"MDXLayout"}),Object(a.b)("h2",{id:"overview"},"Overview"),Object(a.b)("p",null,"This document talks about implementation of experiment, flows and design considerations."),Object(a.b)("p",null,"Experiment consists of following components, also interact with other Submarine or 3rd-party components, showing below: "),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},"\n\n              +---------------------------------------+\n +----------+ |      Experiment Tasks                 |\n |Run       | |                                       |\n |Configs   | | +----------------------------------+  |\n +----------+ | |   Experiment Runnable Code       |  | +-----------------+\n +----------+ | |                                  |  | |Output Artifacts |\n |Input Data| | |     (Like train-job.py)          |  | |(Models, etc.)   |\n |          | | +----------------------------------+  | +-----------------+\n |          | | +----------------------------------+  |\n +----------+ | |   Experiment Deps (Like Python)  |  | +-------------+\n              | +----------------------------------+  | |Logs/Metrics |\n              | +----------------------------------+  | |             |\n              | |  OS, Base Libaries (Like CUDA)   |  | +-------------+\n              | +----------------------------------+  |\n              +---------------------------------------+\n                                 ^\n                                 | (Launch Task with resources)\n                                 +\n                 +---------------------------------+\n                 |Resource Manager (K8s/YARN/Cloud)|\n                 +---------------------------------+\n")),Object(a.b)("p",null,"As showing in the above diagram, Submarine experiment consists of the following items: "),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},"On the left side, there're input data and run configs. "),Object(a.b)("li",{parentName:"ul"},"In the middle box, they're experiment tasks, it could be multiple tasks when we run distributed training, pipeline, etc. ",Object(a.b)("ul",{parentName:"li"},Object(a.b)("li",{parentName:"ul"},"There're main runnable code, such as ",Object(a.b)("inlineCode",{parentName:"li"},"train.py")," for the training main entry point. "),Object(a.b)("li",{parentName:"ul"},"The two boxes below: experiment dependencies and OS/Base libraries we called ",Object(a.b)("inlineCode",{parentName:"li"},"Submarine Environment Profile")," or  ",Object(a.b)("inlineCode",{parentName:"li"},"Environment")," for short. Which defined what is the basic libraries to run the main experiment code. "),Object(a.b)("li",{parentName:"ul"},"Experiment tasks are launched by Resource Manager, such as K8s/YARN/Cloud or just launched locally. There're resources constraints for each experiment tasks. (e.g. how much memory, cores, GPU, disk etc. can be used by tasks). "))),Object(a.b)("li",{parentName:"ul"},"On the right side, they're artifacts generated by experiments: ",Object(a.b)("ul",{parentName:"li"},Object(a.b)("li",{parentName:"ul"},"Output artifacts: Which are main output of the experiment, it could be model(s), or output data when we do batch prediction."),Object(a.b)("li",{parentName:"ul"},"Logs/Metrics for further troubleshooting or understanding of experiment's quality.")))),Object(a.b)("p",null,"For the rest of the design doc, we will talk about how we handle environment, code, and manage output/logs, etc."),Object(a.b)("h2",{id:"api-of-experiment"},"API of Experiment"),Object(a.b)("p",null,"This is not a full definition of experiment, for more details, please reference to experiment API. "),Object(a.b)("p",null,"Here's just an example of experiment object which help developer to understand what included in an experiment."),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre",className:"language-yaml"},'experiment:\n       name: "abc",\n       type: "script",\n       environment: "team-default-ml-env"\n       code:\n           sync_mode: s3\n           url: "s3://bucket/training-job.tar.gz" \n       parameter: > python training.py --iteration 10 \n                    --input=s3://bucket/input output=s3://bucket/output\n       resource_constraint: \n           res="mem=20gb, vcore=3, gpu=2"\n       timeout: "30 mins"\n')),Object(a.b)("p",null,'This defined a "script" experiment, which has a name "abc", the name can be used to track the experiment. There\'s environment "team-default-ml-env" defined to make sure dependencies of the job can be downloaded properly before executing the job. '),Object(a.b)("p",null,Object(a.b)("inlineCode",{parentName:"p"},"code")," defined where the experiment code will be downloaded, we will support a couple of sync_mode like s3 (or abfs/hdfs), git, etc. "),Object(a.b)("p",null,"Different types of experiments will have different specs, for example distributed Tensorflow spec may look like:"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre",className:"language-yaml"},'experiment:\n       name: "abc-distributed-tf",\n       type: "distributed-tf",\n       ps: \n            environment: "team-default-ml-cpu"\n            resource_constraint: \n                 res="mem=20gb, vcore=3, gpu=0"\n       worker: \n            environment: "team-default-ml-gpu"\n            resource_constraint: \n                 res="mem=20gb, vcore=3, gpu=2"\n       code:\n           sync_mode: git\n           url: "https://foo.com/training-job.git" \n       parameter: > python /code/training-job/training.py --iteration 10 \n                    --input=s3://bucket/input output=s3://bucket/output\n       tensorboard: enabled\n       timeout: "30 mins"\n')),Object(a.b)("p",null,"Since we have different Docker image, one is using GPU and one is not using GPU, we can specify different environment and resource constraint."),Object(a.b)("h2",{id:"manage-environments-for-experiment"},"Manage environments for experiment"),Object(a.b)("p",null,"Please refer to ",Object(a.b)("a",{parentName:"p",href:"/docs/designDocs/environments-implementation"},"environment-implementation.md")," for more details"),Object(a.b)("h2",{id:"manage-storages-for-experiment"},"Manage storages for experiment"),Object(a.b)("p",null,"There're different types of storage, such as logs, metrics, dependencies (environments). For more details. Please refer to ",Object(a.b)("a",{parentName:"p",href:"/docs/designDocs/storage-implementation"},"storage-implementations")," for more details. This also includes how to manage code for experiment code."),Object(a.b)("h2",{id:"manage-pre-defined-experiment-libraries"},"Manage Pre-defined experiment libraries"),Object(a.b)("h2",{id:"flow-submit-an-experiment"},"Flow: Submit an experiment"),Object(a.b)("h3",{id:"submit-via-sdk-flows"},"Submit via SDK Flows."),Object(a.b)("p",null,"To better understand experiment implementation, It will be good to understand what is the steps of experiment submission."),Object(a.b)("p",null,Object(a.b)("em",{parentName:"p"},"Please note that below code is just pseudo code, not official APIs.")),Object(a.b)("h3",{id:"specify-what-environment-to-use"},"Specify what environment to use"),Object(a.b)("p",null,"Before submit the environment, you have to choose what environment to choose. Environment defines dependencies, etc. of an experiment or a notebook. might looks like below:"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},'conda_environment = \n"""\n  name: conda-env\n  channels:\n    - defaults\n  dependencies:\n    - asn1crypto=1.3.0=py37_0\n    - blas=1.0=mkl\n    - ca-certificates=2020.1.1=0\n    - certifi=2020.4.5.1=py37_0\n    - cffi=1.14.0=py37hb5b8e2f_0\n    - chardet=3.0.4=py37_1003\n  prefix: /opt/anaconda3/envs/conda-env\n"""\n\n# This environment can be different from notebook\'s own environment\nenvironment = create_environment {\n    DockerImage = "ubuntu:16",\n    CondaEnvironment = conda_environment\n}\n')),Object(a.b)("p",null,"To better understand how environment works, please refer to ",Object(a.b)("a",{parentName:"p",href:"/docs/designDocs/environments-implementation"},"environment-implementation"),". "),Object(a.b)("h3",{id:"create-experiment-specify-wheres-training-code-located-and-parameters"},"Create experiment, specify where's training code located, and parameters."),Object(a.b)("p",null,"For  ad-hoc experiment (code located at S3), assume training code is part of the ",Object(a.b)("inlineCode",{parentName:"p"},"training-job.tar.gz")," and main class is ",Object(a.b)("inlineCode",{parentName:"p"},"train.py"),". When the job is launched, whatever specified in the localize_artifacts will be downloaded."),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},'experiment = create_experiment {\n    Environment = environment, \n    ExperimentConfig = {\n       type = "adhoc",\n       localize_artifacts = [\n            "s3://bucket/training-job.tar.gz"\n       ],\n       name = "abc",\n       parameter = "python training.py --iteration 10 --input="s3://bucket/input output="s3://bucket/output",\n    }\n}\nexperiment.run()\nexperiment.wait_for_finish(print_output=True)\n')),Object(a.b)("h5",{id:"run-notebook-file-in-offline-mode"},"Run notebook file in offline mode"),Object(a.b)("p",null,"It is possible we want to run a notebook file in offline mode, to do that, here's code to use to run a notebook code"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},'experiment = create_experiment {\n    Environment = environment, \n    ExperimentConfig = {\n       type = "adhoc",\n       localize_artifacts = [\n            "s3://bucket/folder/notebook-123.ipynb"\n       ],\n       name = "abc",\n       parameter = "runipy training.ipynb --iteration 10 --input="s3://bucket/input output="s3://bucket/output",\n    }\n}\nexperiment.run()\nexperiment.wait_for_finish(print_output=True)\n')),Object(a.b)("h5",{id:"run-pre-defined-experiment-library"},"Run pre-defined experiment library"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},'experiment = create_experiment {\n    # Here you can use default environment of library\n    Environment = environment, \n    ExperimentConfig = {\n       type = "template",\n       name = "abc",\n       # A unique name of template \n       template = "deepfm_ctr", \n       # yaml file defined what is the parameters need to be specified.\n       parameter = {\n           Input: "S3://.../input",\n           Output: "S3://.../output"\n           Training: {\n              "batch_size": 512,\n              "l2_reg": 0.01,\n              ...\n           }\n       }\n    }\n}\nexperiment.run()\nexperiment.wait_for_finish(print_output=True)\n')),Object(a.b)("h2",{id:"summarize-experiment-vs-notebook-session"},"Summarize: Experiment v.s. Notebook session"),Object(a.b)("p",null,"There's a common misunderstanding about what is the differences between running experiment v.s. running task from a notebook session. We will talk about differences and commonalities:"),Object(a.b)("p",null,Object(a.b)("strong",{parentName:"p"},"Differences")),Object(a.b)("table",null,Object(a.b)("thead",{parentName:"table"},Object(a.b)("tr",{parentName:"thead"},Object(a.b)("th",{parentName:"tr",align:null}),Object(a.b)("th",{parentName:"tr",align:null},"Experiment"),Object(a.b)("th",{parentName:"tr",align:null},"Notebook Session"))),Object(a.b)("tbody",{parentName:"table"},Object(a.b)("tr",{parentName:"tbody"},Object(a.b)("td",{parentName:"tr",align:null},"Run mode"),Object(a.b)("td",{parentName:"tr",align:null},"Offline"),Object(a.b)("td",{parentName:"tr",align:null},"Interactive")),Object(a.b)("tr",{parentName:"tbody"},Object(a.b)("td",{parentName:"tr",align:null},"Output Artifacts (a.k.a model)"),Object(a.b)("td",{parentName:"tr",align:null},"Persisted in a shared storage (like S3/NFS)"),Object(a.b)("td",{parentName:"tr",align:null},"Local in the notebook session container, could be ephemeral")),Object(a.b)("tr",{parentName:"tbody"},Object(a.b)("td",{parentName:"tr",align:null},"Run history (meta, logs, metrics)"),Object(a.b)("td",{parentName:"tr",align:null},"Meta/logs/metrics can be traced from experiment UI (or corresponding API)"),Object(a.b)("td",{parentName:"tr",align:null},"No run history can be traced from Submarine UI/API. Can view the current running paragraph's log/metrics, etc.")),Object(a.b)("tr",{parentName:"tbody"},Object(a.b)("td",{parentName:"tr",align:null},"What to run?"),Object(a.b)("td",{parentName:"tr",align:null},"Code from Docker image or shared storage (like Tarball on S3, Github, etc.)"),Object(a.b)("td",{parentName:"tr",align:null},"Local in the notebook's paragraph")))),Object(a.b)("p",null,Object(a.b)("strong",{parentName:"p"},"Commonalities")," "),Object(a.b)("table",null,Object(a.b)("thead",{parentName:"table"},Object(a.b)("tr",{parentName:"thead"},Object(a.b)("th",{parentName:"tr",align:null}),Object(a.b)("th",{parentName:"tr",align:null},"Experiment & Notebook Session"))),Object(a.b)("tbody",{parentName:"table"},Object(a.b)("tr",{parentName:"tbody"},Object(a.b)("td",{parentName:"tr",align:null},"Environment"),Object(a.b)("td",{parentName:"tr",align:null},"They can share the same Environment configuration")))),Object(a.b)("h2",{id:"experiment-related-modules-inside-submarine-server"},"Experiment-related modules inside Submarine-server"),Object(a.b)("p",null,"(Please refer to ",Object(a.b)("a",{parentName:"p",href:"/docs/designDocs/submarine-server/architecture"},"architecture of submarine server")," for more details)"),Object(a.b)("h3",{id:"experiment-manager"},"Experiment Manager"),Object(a.b)("p",null,"The experiment manager receives the experiment requests, persisting the experiment metas in a database(e.g. MySQL), will invoke subsequence modules to submit and monitor the experiment's execution."),Object(a.b)("h3",{id:"compute-cluster-manager"},"Compute Cluster Manager"),Object(a.b)("p",null,"After experiment accepted by experiment manager, based on which cluster the experiment intended to run (like mentioned in the previous sections, Submarine supports to manage multiple compute clusters), compute cluster manager will returns credentials to access the compute cluster. It will also be responsible to create a new compute cluster if needed. "),Object(a.b)("p",null,"For most of the on-prem use cases, there's only one cluster involved, for such cases, ComputeClusterManager returns credentials to access local cluster if needed. "),Object(a.b)("h3",{id:"experiment-submitter"},"Experiment Submitter"),Object(a.b)("p",null,"Experiment Submitter handles different kinds of experiments to run (e.g. ad-hoc script, distributed TF, MPI, pre-defined templates, Pipeline, AutoML, etc.). And such experiments can be managed by different resource management systems (e.g. K8s, YARN, container cloud, etc.)"),Object(a.b)("p",null,"To meet the requirements to support variant kinds of experiments and resource managers, we choose to use plug-in modules to support different submitters (which requires jars to submarine-server\u2019s classpath). "),Object(a.b)("p",null,"To avoid jars and dependencies of plugins break the submarine-server, the plug-ins manager, or both. To solve this issue, we can instantiate submitter plug-ins using a classloader that is different from the system classloader."),Object(a.b)("h4",{id:"submitter-plug-ins"},"Submitter Plug-ins"),Object(a.b)("p",null,"Each plug-in uses a separate module under the server-submitter module. As the default implements, we provide for YARN and K8s. For YARN cluster, we provide the submitter-yarn and submitter-yarnservice plug-ins. The submitter-yarn plug-in used the ",Object(a.b)("a",{parentName:"p",href:"https://github.com/linkedin/TonY"},"TonY")," as the runtime to run the training job, and the submitter-yarnservice plug-in direct use the ",Object(a.b)("a",{parentName:"p",href:"https://hadoop.apache.org/docs/stable/hadoop-yarn/hadoop-yarn-site/yarn-service/Overview.html"},"YARN Service")," which supports  Hadoop v3.1 above. "),Object(a.b)("p",null,"The submitter-k8s plug-in is used to submit the job to Kubernetes cluster and use the ",Object(a.b)("a",{parentName:"p",href:"https://kubernetes.io/docs/concepts/extend-kubernetes/operator/"},"operator")," as the runtime. The submitter-k8s plug-in implements the operation of CRD object and provides the java interface. In the beginning, we use the ",Object(a.b)("a",{parentName:"p",href:"https://github.com/kubeflow/tf-operator"},"tf-operator")," for the TensorFlow."),Object(a.b)("p",null,"If Submarine want to support the other resource management system in the future, such as submarine-docker-cluster (submarine uses the Raft algorithm to create a docker cluster on the docker runtime environment on multiple servers, providing the most lightweight resource scheduling system for small-scale users). We should create a new plug-in module named submitter-docker under the server-submitter module."),Object(a.b)("h3",{id:"experiment-monitor"},"Experiment Monitor"),Object(a.b)("p",null,"The monitor tracks the experiment life cycle and records the main events and key info in runtime. As the experiment run progresses, the metrics are needed for evaluation of the ongoing success or failure of the execution progress. Due to adapt the different cluster resource management system, so we need a generic metric info structure and each submitter plug-in should inherit and complete it by itself."),Object(a.b)("h3",{id:"invoke-flows-of-experiment-related-components"},"Invoke flows of experiment-related components"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"}," +-----------------+  +----------------+ +----------------+ +-----------------+\n |Experiments      |  |Compute Cluster | |Experiment      | | Experiment      |\n |Mgr              |  |Mgr             | |Submitter       | | Monitor         |\n +-----------------+  +----------------+ +----------------+ +-----------------+\n          +                    +                  +                  +\n User     |                    |                  |                  |\n Submit   |+-------------------------------------\x3e+                  +\n Xperiment|          Use submitter.validate(spec) |                  |\n          |          to validate spec and create  |                  |\n          |          experiment object (state-    |                  |\n          |          machine).                    |                  |\n          |                                       |                  |\n          |          The experiment manager will  |                  |\n          |          persist meta-data to Database|                  |\n          |                    |                  |                  |\n          |                    |                  +                  +\n          |+-----------------\x3e +                  |                  |\n          |  Submit Experiments|                  |                  |\n          |   To ComputeCluster|                  |                  |\n          |   Mgr, get existing|+----------------\x3e|                  |\n          |   cluster, or      |  Use Submitter   |                  |\n          |   create a new one.|  to submit       |+---------------\x3e |\n          |                    |  Different kinds |  Once job is     |\n          |                    |  of experiments  |  submitted, use  |+----+\n          |                    |  to k8s/yarn, etc|  monitor to get  |     |\n          |                    |                  |  status updates  |     |\n          |                    |                  |                  |     | Monitor\n          |                    |                  |                  |     | Xperiment\n          |                    |                  |                  |     | status\n          |                    |                  |                  |     |\n          |<--------------------------------------------------------+|     |\n          |                    |                  |                  |     |\n          |                  Update Status back to Experiment        |     |\n          |                    |      Manager     |                  |<----+\n          |                    |                  |                  |\n          |                    |                  |                  |\n          |                    |                  |                  |\n          v                    v                  v                  v\n")),Object(a.b)("p",null,"TODO: add more details about template, environment, etc."),Object(a.b)("h2",{id:"common-modules-of-experimentnotebook-sessionmodel-serving"},"Common modules of experiment/notebook-session/model-serving"),Object(a.b)("p",null,"Experiment/notebook-session/model-serving share a lot of commonalities, all of them are: "),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},"Some workloads running on YARN/K8s."),Object(a.b)("li",{parentName:"ul"},"Need persist meta data to DB. "),Object(a.b)("li",{parentName:"ul"},"Need monitor task/service running status from resource management system. ")),Object(a.b)("p",null,"We need to make their implementation are loose-coupled, but at the same time, share some building blocks as much as possible (e.g. submit PodSpecs to K8s, monitor status, get logs, etc.) to reduce duplications."),Object(a.b)("h2",{id:"support-predefined-experiment-templates"},"Support Predefined-experiment-templates"),Object(a.b)("p",null,"Predefined Experiment Template is just a way to save data-scientists time to repeatedly entering parameters which is not error-proof and user experience is also bad."),Object(a.b)("h3",{id:"predefined-experiment-template-api-to-run-experiment"},"Predefined-experiment-template API to run experiment"),Object(a.b)("p",null,"Predefined experiment template consists a list of parameters, each of the parameter has 4 properties:"),Object(a.b)("table",null,Object(a.b)("thead",{parentName:"table"},Object(a.b)("tr",{parentName:"thead"},Object(a.b)("th",{parentName:"tr",align:null},"Key"),Object(a.b)("th",{parentName:"tr",align:null},"Required"),Object(a.b)("th",{parentName:"tr",align:null},"Default Value"),Object(a.b)("th",{parentName:"tr",align:null},"Description"))),Object(a.b)("tbody",{parentName:"table"},Object(a.b)("tr",{parentName:"tbody"},Object(a.b)("td",{parentName:"tr",align:null},"Name of the key"),Object(a.b)("td",{parentName:"tr",align:null},"true/false"),Object(a.b)("td",{parentName:"tr",align:null},"When required = false, a default value can be provided by the template"),Object(a.b)("td",{parentName:"tr",align:null},"Description of the parameter")))),Object(a.b)("p",null,"For the example of deepfm CTR training experiment mentioned in the ",Object(a.b)("a",{parentName:"p",href:"/docs/designDocs/architecture-and-requirements"},"architecture-and-requirements.md")),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},'{\n  "input": {\n    "train_data": ["hdfs:///user/submarine/data/tr.libsvm"],\n    "valid_data": ["hdfs:///user/submarine/data/va.libsvm"],\n    "test_data": ["hdfs:///user/submarine/data/te.libsvm"],\n    "type": "libsvm"\n  },\n  "output": {\n    "save_model_dir": "hdfs:///user/submarine/deepfm",\n    "metric": "auc"\n  },\n  "training": {\n    "batch_size" : 512,\n    "field_size": 39,\n    "num_epochs": 3,\n    "feature_size": 117581,\n    ...\n  }\n}\n')),Object(a.b)("p",null,"The template will be (in yaml format):"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre",className:"language-yaml"},"# deepfm.ctr template\nname: deepfm.ctr\nauthor: \ndescription: >\n  This is a template to run CTR training using deepfm algorithm, by default it runs\n  single node TF job, you can also overwrite training parameters to use distributed\n  training. \n  \nparameters: \n  - name: input.train_data\n    required: true \n    description: >\n      train data is expected in SVM format, and can be stored in HDFS/S3 \n    ...\n  - name: training.batch_size\n    required: false\n    default: 32 \n    description: This is batch size of training\n")),Object(a.b)("p",null,"The batch format can be used in UI/API. "),Object(a.b)("h3",{id:"handle-predefined-experiment-template-from-server-side"},"Handle Predefined-experiment-template from server side"),Object(a.b)("p",null,"Please note that, the conversion of predefined-experiment-template will be always handled by server. The invoke flow looks like: "),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},"\n                         +------------Submarine Server -----------------------+\n   +--------------+      |  +-----------------+                               |\n   |Client        |+-------\x3e|Experimment Mgr  |                               |\n   |              |      |  |                 |                               |\n   +--------------+      |  +-----------------+                               |\n                         |          +                                         |\n          Submit         |  +-------v---------+       Get Experiment Template |\n          Template       |  |Experiment       |<-----+From pre-registered     |\n          Parameters     |  |Template Registry|       Templates               |\n          to Submarine   |  +-------+---------+                               |\n          Server         |          |                                         |\n                         |  +-------v---------+       +-----------------+     |\n                         |  |Deepfm CTR Templ-|       |Experiment-      |     |\n                         |  |ate Handler      +------\x3e|Tensorflow       |     |\n                         |  +-----------------+       +--------+--------+     |\n                         |                                     |              |\n                         |                                     |              |\n                         |                            +--------v--------+     |\n                         |                            |Experiment       |     |\n                         |                            |Submitter        |     |\n                         |                            +--------+--------+     |\n                         |                                     |              |\n                         |                                     |              |\n                         |                            +--------v--------+     |\n                         |                            |                 |     |\n                         |                            | ......          |     |\n                         |                            +-----------------+     |\n                         |                                                    |\n                         +----------------------------------------------------+\n")),Object(a.b)("p",null,"Basically, from Client, it submitted template parameters to Submarine Server, inside submarine server, it finds the corresponding template handler based on the name. And the template handler converts input parameters to an actual experiment, such as a distributed TF experiment. After that, it goes the similar route to validate experiment spec, compute cluster manager, etc. to get the experiment submitted and monitored. "),Object(a.b)("p",null,"Predefined-experiment-template is able to create any kind of experiment, it could be a pipeline: "),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},"\n   +-----------------+                  +------------------+\n   |Template XYZ     |                  | XYZ Template     |\n   |                 |+---------------\x3e | Handler          |\n   +-----------------+                  +------------------+\n                                                   +\n                                                   |\n                                                   |\n                                                   |\n                                                   |\n                                                   v\n             +--------------------+      +------------------+\n             | +-----------------+|      | Predefined       |\n             | |  Split Train/   ||<----+| Pipeline         |\n             | |  Test data      ||      +------------------+\n             | +-------+---------+|\n             |         |          |\n             | +-------v---------+|\n             | |  Spark Job ETL  ||\n             | |                 ||\n             | +-------+---------+|\n             |         |          |\n             | +-------v---------+|\n             | | Train using     ||\n             | | XGBoost         ||\n             | +-------+---------+|\n             |         |          |\n             | +-------v---------+|\n             | | Validate Train  ||\n             | | Results         ||\n             | +-----------------+|\n             |                    |\n             +--------------------+\n")),Object(a.b)("p",null,"Template can be also chained to reuse other template handlers"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},"\n   +-----------------+                  +------------------+\n   |Template XYZ     |                  | XYZ Template     |\n   |                 |+---------------\x3e | Handler          |\n   +-----------------+                  +------------------+\n                                                   +\n                                                   |\n                                                   v\n               +------------------+      +------------------+\n               |Distributed       |      | ABC Template     |\n               |TF Experiment     |<----+| Handler          |\n               +------------------+      +------------------+\n")),Object(a.b)("p",null,"Template Handler is a callable class inside Submarine Server with a standard interface defined like."),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre",className:"language-java"},"interface ExperimentTemplateHandler {\n   ExperimentSpec createExperiment(TemplatedExperimentParameters param)\n}\n")),Object(a.b)("p",null,"We should avoid users to do coding when they want to add new template, we should have several standard template handler to deal with most of the template handling."),Object(a.b)("p",null,"Experiment templates can be registered/updated/deleted via Submarine Server's REST API, which need to be discussed separately in the doc. (TODO)"))}p.isMDXComponent=!0},209:function(e,t,n){"use strict";n.d(t,"a",(function(){return c})),n.d(t,"b",(function(){return d}));var r=n(0),i=n.n(r);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n,r,i={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var m=i.a.createContext({}),p=function(e){var t=i.a.useContext(m),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},c=function(e){var t=p(e.components);return i.a.createElement(m.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return i.a.createElement(i.a.Fragment,{},t)}},b=i.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,o=e.parentName,m=l(e,["components","mdxType","originalType","parentName"]),c=p(n),b=r,d=c["".concat(o,".").concat(b)]||c[b]||u[b]||a;return n?i.a.createElement(d,s(s({ref:t},m),{},{components:n})):i.a.createElement(d,s({ref:t},m))}));function d(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,o=new Array(a);o[0]=b;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s.mdxType="string"==typeof e?e:r,o[1]=s;for(var m=2;m<a;m++)o[m]=n[m];return i.a.createElement.apply(null,o)}return i.a.createElement.apply(null,n)}b.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[49],{116:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return o})),n.d(t,"metadata",(function(){return s})),n.d(t,"toc",(function(){return l})),n.d(t,"default",(function(){return p}));var r=n(3),i=n(7),a=(n(0),n(194)),o={title:"Experiment Implementation"},s={unversionedId:"designDocs/experiment-implementation",id:"version-0.6.0/designDocs/experiment-implementation",isDocsHomePage:!1,title:"Experiment Implementation",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/designDocs/experiment-implementation.md",slug:"/designDocs/experiment-implementation",permalink:"/docs/designDocs/experiment-implementation",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/designDocs/experiment-implementation.md",version:"0.6.0",sidebar:"docs",previous:{title:"Environments Implementation",permalink:"/docs/designDocs/environments-implementation"},next:{title:"Notebook Implementation",permalink:"/docs/designDocs/notebook-implementation"}},l=[{value:"Overview",id:"overview",children:[]},{value:"API of Experiment",id:"api-of-experiment",children:[]},{value:"Manage environments for experiment",id:"manage-environments-for-experiment",children:[]},{value:"Manage storages for experiment",id:"manage-storages-for-experiment",children:[]},{value:"Manage Pre-defined experiment libraries",id:"manage-pre-defined-experiment-libraries",children:[]},{value:"Flow: Submit an experiment",id:"flow-submit-an-experiment",children:[{value:"Submit via SDK Flows.",id:"submit-via-sdk-flows",children:[]},{value:"Specify what environment to use",id:"specify-what-environment-to-use",children:[]},{value:"Create experiment, specify where&#39;s training code located, and parameters.",id:"create-experiment-specify-wheres-training-code-located-and-parameters",children:[]}]},{value:"Summarize: Experiment v.s. Notebook session",id:"summarize-experiment-vs-notebook-session",children:[]},{value:"Experiment-related modules inside Submarine-server",id:"experiment-related-modules-inside-submarine-server",children:[{value:"Experiment Manager",id:"experiment-manager",children:[]},{value:"Compute Cluster Manager",id:"compute-cluster-manager",children:[]},{value:"Experiment Submitter",id:"experiment-submitter",children:[]},{value:"Experiment Monitor",id:"experiment-monitor",children:[]},{value:"Invoke flows of experiment-related components",id:"invoke-flows-of-experiment-related-components",children:[]}]},{value:"Common modules of experiment/notebook-session/model-serving",id:"common-modules-of-experimentnotebook-sessionmodel-serving",children:[]},{value:"Support Predefined-experiment-templates",id:"support-predefined-experiment-templates",children:[{value:"Predefined-experiment-template API to run experiment",id:"predefined-experiment-template-api-to-run-experiment",children:[]},{value:"Handle Predefined-experiment-template from server side",id:"handle-predefined-experiment-template-from-server-side",children:[]}]}],m={toc:l};function p(e){var t=e.components,n=Object(i.a)(e,["components"]);return Object(a.b)("wrapper",Object(r.a)({},m,n,{components:t,mdxType:"MDXLayout"}),Object(a.b)("h2",{id:"overview"},"Overview"),Object(a.b)("p",null,"This document talks about implementation of experiment, flows and design considerations."),Object(a.b)("p",null,"Experiment consists of following components, also interact with other Submarine or 3rd-party components, showing below: "),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},"\n\n              +---------------------------------------+\n +----------+ |      Experiment Tasks                 |\n |Run       | |                                       |\n |Configs   | | +----------------------------------+  |\n +----------+ | |   Experiment Runnable Code       |  | +-----------------+\n +----------+ | |                                  |  | |Output Artifacts |\n |Input Data| | |     (Like train-job.py)          |  | |(Models, etc.)   |\n |          | | +----------------------------------+  | +-----------------+\n |          | | +----------------------------------+  |\n +----------+ | |   Experiment Deps (Like Python)  |  | +-------------+\n              | +----------------------------------+  | |Logs/Metrics |\n              | +----------------------------------+  | |             |\n              | |  OS, Base Libaries (Like CUDA)   |  | +-------------+\n              | +----------------------------------+  |\n              +---------------------------------------+\n                                 ^\n                                 | (Launch Task with resources)\n                                 +\n                 +---------------------------------+\n                 |Resource Manager (K8s/YARN/Cloud)|\n                 +---------------------------------+\n")),Object(a.b)("p",null,"As showing in the above diagram, Submarine experiment consists of the following items: "),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},"On the left side, there're input data and run configs. "),Object(a.b)("li",{parentName:"ul"},"In the middle box, they're experiment tasks, it could be multiple tasks when we run distributed training, pipeline, etc. ",Object(a.b)("ul",{parentName:"li"},Object(a.b)("li",{parentName:"ul"},"There're main runnable code, such as ",Object(a.b)("inlineCode",{parentName:"li"},"train.py")," for the training main entry point. "),Object(a.b)("li",{parentName:"ul"},"The two boxes below: experiment dependencies and OS/Base libraries we called ",Object(a.b)("inlineCode",{parentName:"li"},"Submarine Environment Profile")," or  ",Object(a.b)("inlineCode",{parentName:"li"},"Environment")," for short. Which defined what is the basic libraries to run the main experiment code. "),Object(a.b)("li",{parentName:"ul"},"Experiment tasks are launched by Resource Manager, such as K8s/YARN/Cloud or just launched locally. There're resources constraints for each experiment tasks. (e.g. how much memory, cores, GPU, disk etc. can be used by tasks). "))),Object(a.b)("li",{parentName:"ul"},"On the right side, they're artifacts generated by experiments: ",Object(a.b)("ul",{parentName:"li"},Object(a.b)("li",{parentName:"ul"},"Output artifacts: Which are main output of the experiment, it could be model(s), or output data when we do batch prediction."),Object(a.b)("li",{parentName:"ul"},"Logs/Metrics for further troubleshooting or understanding of experiment's quality.")))),Object(a.b)("p",null,"For the rest of the design doc, we will talk about how we handle environment, code, and manage output/logs, etc."),Object(a.b)("h2",{id:"api-of-experiment"},"API of Experiment"),Object(a.b)("p",null,"This is not a full definition of experiment, for more details, please reference to experiment API. "),Object(a.b)("p",null,"Here's just an example of experiment object which help developer to understand what included in an experiment."),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre",className:"language-yaml"},'experiment:\n       name: "abc",\n       type: "script",\n       environment: "team-default-ml-env"\n       code:\n           sync_mode: s3\n           url: "s3://bucket/training-job.tar.gz" \n       parameter: > python training.py --iteration 10 \n                    --input=s3://bucket/input output=s3://bucket/output\n       resource_constraint: \n           res="mem=20gb, vcore=3, gpu=2"\n       timeout: "30 mins"\n')),Object(a.b)("p",null,'This defined a "script" experiment, which has a name "abc", the name can be used to track the experiment. There\'s environment "team-default-ml-env" defined to make sure dependencies of the job can be downloaded properly before executing the job. '),Object(a.b)("p",null,Object(a.b)("inlineCode",{parentName:"p"},"code")," defined where the experiment code will be downloaded, we will support a couple of sync_mode like s3 (or abfs/hdfs), git, etc. "),Object(a.b)("p",null,"Different types of experiments will have different specs, for example distributed Tensorflow spec may look like:"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre",className:"language-yaml"},'experiment:\n       name: "abc-distributed-tf",\n       type: "distributed-tf",\n       ps: \n            environment: "team-default-ml-cpu"\n            resource_constraint: \n                 res="mem=20gb, vcore=3, gpu=0"\n       worker: \n            environment: "team-default-ml-gpu"\n            resource_constraint: \n                 res="mem=20gb, vcore=3, gpu=2"\n       code:\n           sync_mode: git\n           url: "https://foo.com/training-job.git" \n       parameter: > python /code/training-job/training.py --iteration 10 \n                    --input=s3://bucket/input output=s3://bucket/output\n       tensorboard: enabled\n       timeout: "30 mins"\n')),Object(a.b)("p",null,"Since we have different Docker image, one is using GPU and one is not using GPU, we can specify different environment and resource constraint."),Object(a.b)("h2",{id:"manage-environments-for-experiment"},"Manage environments for experiment"),Object(a.b)("p",null,"Please refer to ",Object(a.b)("a",{parentName:"p",href:"/docs/designDocs/environments-implementation"},"environment-implementation.md")," for more details"),Object(a.b)("h2",{id:"manage-storages-for-experiment"},"Manage storages for experiment"),Object(a.b)("p",null,"There're different types of storage, such as logs, metrics, dependencies (environments). For more details. Please refer to ",Object(a.b)("a",{parentName:"p",href:"/docs/designDocs/storage-implementation"},"storage-implementations")," for more details. This also includes how to manage code for experiment code."),Object(a.b)("h2",{id:"manage-pre-defined-experiment-libraries"},"Manage Pre-defined experiment libraries"),Object(a.b)("h2",{id:"flow-submit-an-experiment"},"Flow: Submit an experiment"),Object(a.b)("h3",{id:"submit-via-sdk-flows"},"Submit via SDK Flows."),Object(a.b)("p",null,"To better understand experiment implementation, It will be good to understand what is the steps of experiment submission."),Object(a.b)("p",null,Object(a.b)("em",{parentName:"p"},"Please note that below code is just pseudo code, not official APIs.")),Object(a.b)("h3",{id:"specify-what-environment-to-use"},"Specify what environment to use"),Object(a.b)("p",null,"Before submit the environment, you have to choose what environment to choose. Environment defines dependencies, etc. of an experiment or a notebook. might looks like below:"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},'conda_environment = \n"""\n  name: conda-env\n  channels:\n    - defaults\n  dependencies:\n    - asn1crypto=1.3.0=py37_0\n    - blas=1.0=mkl\n    - ca-certificates=2020.1.1=0\n    - certifi=2020.4.5.1=py37_0\n    - cffi=1.14.0=py37hb5b8e2f_0\n    - chardet=3.0.4=py37_1003\n  prefix: /opt/anaconda3/envs/conda-env\n"""\n\n# This environment can be different from notebook\'s own environment\nenvironment = create_environment {\n    DockerImage = "ubuntu:16",\n    CondaEnvironment = conda_environment\n}\n')),Object(a.b)("p",null,"To better understand how environment works, please refer to ",Object(a.b)("a",{parentName:"p",href:"/docs/designDocs/environments-implementation"},"environment-implementation"),". "),Object(a.b)("h3",{id:"create-experiment-specify-wheres-training-code-located-and-parameters"},"Create experiment, specify where's training code located, and parameters."),Object(a.b)("p",null,"For  ad-hoc experiment (code located at S3), assume training code is part of the ",Object(a.b)("inlineCode",{parentName:"p"},"training-job.tar.gz")," and main class is ",Object(a.b)("inlineCode",{parentName:"p"},"train.py"),". When the job is launched, whatever specified in the localize_artifacts will be downloaded."),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},'experiment = create_experiment {\n    Environment = environment, \n    ExperimentConfig = {\n       type = "adhoc",\n       localize_artifacts = [\n            "s3://bucket/training-job.tar.gz"\n       ],\n       name = "abc",\n       parameter = "python training.py --iteration 10 --input="s3://bucket/input output="s3://bucket/output",\n    }\n}\nexperiment.run()\nexperiment.wait_for_finish(print_output=True)\n')),Object(a.b)("h5",{id:"run-notebook-file-in-offline-mode"},"Run notebook file in offline mode"),Object(a.b)("p",null,"It is possible we want to run a notebook file in offline mode, to do that, here's code to use to run a notebook code"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},'experiment = create_experiment {\n    Environment = environment, \n    ExperimentConfig = {\n       type = "adhoc",\n       localize_artifacts = [\n            "s3://bucket/folder/notebook-123.ipynb"\n       ],\n       name = "abc",\n       parameter = "runipy training.ipynb --iteration 10 --input="s3://bucket/input output="s3://bucket/output",\n    }\n}\nexperiment.run()\nexperiment.wait_for_finish(print_output=True)\n')),Object(a.b)("h5",{id:"run-pre-defined-experiment-library"},"Run pre-defined experiment library"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},'experiment = create_experiment {\n    # Here you can use default environment of library\n    Environment = environment, \n    ExperimentConfig = {\n       type = "template",\n       name = "abc",\n       # A unique name of template \n       template = "deepfm_ctr", \n       # yaml file defined what is the parameters need to be specified.\n       parameter = {\n           Input: "S3://.../input",\n           Output: "S3://.../output"\n           Training: {\n              "batch_size": 512,\n              "l2_reg": 0.01,\n              ...\n           }\n       }\n    }\n}\nexperiment.run()\nexperiment.wait_for_finish(print_output=True)\n')),Object(a.b)("h2",{id:"summarize-experiment-vs-notebook-session"},"Summarize: Experiment v.s. Notebook session"),Object(a.b)("p",null,"There's a common misunderstanding about what is the differences between running experiment v.s. running task from a notebook session. We will talk about differences and commonalities:"),Object(a.b)("p",null,Object(a.b)("strong",{parentName:"p"},"Differences")),Object(a.b)("table",null,Object(a.b)("thead",{parentName:"table"},Object(a.b)("tr",{parentName:"thead"},Object(a.b)("th",{parentName:"tr",align:null}),Object(a.b)("th",{parentName:"tr",align:null},"Experiment"),Object(a.b)("th",{parentName:"tr",align:null},"Notebook Session"))),Object(a.b)("tbody",{parentName:"table"},Object(a.b)("tr",{parentName:"tbody"},Object(a.b)("td",{parentName:"tr",align:null},"Run mode"),Object(a.b)("td",{parentName:"tr",align:null},"Offline"),Object(a.b)("td",{parentName:"tr",align:null},"Interactive")),Object(a.b)("tr",{parentName:"tbody"},Object(a.b)("td",{parentName:"tr",align:null},"Output Artifacts (a.k.a model)"),Object(a.b)("td",{parentName:"tr",align:null},"Persisted in a shared storage (like S3/NFS)"),Object(a.b)("td",{parentName:"tr",align:null},"Local in the notebook session container, could be ephemeral")),Object(a.b)("tr",{parentName:"tbody"},Object(a.b)("td",{parentName:"tr",align:null},"Run history (meta, logs, metrics)"),Object(a.b)("td",{parentName:"tr",align:null},"Meta/logs/metrics can be traced from experiment UI (or corresponding API)"),Object(a.b)("td",{parentName:"tr",align:null},"No run history can be traced from Submarine UI/API. Can view the current running paragraph's log/metrics, etc.")),Object(a.b)("tr",{parentName:"tbody"},Object(a.b)("td",{parentName:"tr",align:null},"What to run?"),Object(a.b)("td",{parentName:"tr",align:null},"Code from Docker image or shared storage (like Tarball on S3, Github, etc.)"),Object(a.b)("td",{parentName:"tr",align:null},"Local in the notebook's paragraph")))),Object(a.b)("p",null,Object(a.b)("strong",{parentName:"p"},"Commonalities")," "),Object(a.b)("table",null,Object(a.b)("thead",{parentName:"table"},Object(a.b)("tr",{parentName:"thead"},Object(a.b)("th",{parentName:"tr",align:null}),Object(a.b)("th",{parentName:"tr",align:null},"Experiment & Notebook Session"))),Object(a.b)("tbody",{parentName:"table"},Object(a.b)("tr",{parentName:"tbody"},Object(a.b)("td",{parentName:"tr",align:null},"Environment"),Object(a.b)("td",{parentName:"tr",align:null},"They can share the same Environment configuration")))),Object(a.b)("h2",{id:"experiment-related-modules-inside-submarine-server"},"Experiment-related modules inside Submarine-server"),Object(a.b)("p",null,"(Please refer to ",Object(a.b)("a",{parentName:"p",href:"/docs/designDocs/submarine-server/architecture"},"architecture of submarine server")," for more details)"),Object(a.b)("h3",{id:"experiment-manager"},"Experiment Manager"),Object(a.b)("p",null,"The experiment manager receives the experiment requests, persisting the experiment metas in a database(e.g. MySQL), will invoke subsequence modules to submit and monitor the experiment's execution."),Object(a.b)("h3",{id:"compute-cluster-manager"},"Compute Cluster Manager"),Object(a.b)("p",null,"After experiment accepted by experiment manager, based on which cluster the experiment intended to run (like mentioned in the previous sections, Submarine supports to manage multiple compute clusters), compute cluster manager will returns credentials to access the compute cluster. It will also be responsible to create a new compute cluster if needed. "),Object(a.b)("p",null,"For most of the on-prem use cases, there's only one cluster involved, for such cases, ComputeClusterManager returns credentials to access local cluster if needed. "),Object(a.b)("h3",{id:"experiment-submitter"},"Experiment Submitter"),Object(a.b)("p",null,"Experiment Submitter handles different kinds of experiments to run (e.g. ad-hoc script, distributed TF, MPI, pre-defined templates, Pipeline, AutoML, etc.). And such experiments can be managed by different resource management systems (e.g. K8s, YARN, container cloud, etc.)"),Object(a.b)("p",null,"To meet the requirements to support variant kinds of experiments and resource managers, we choose to use plug-in modules to support different submitters (which requires jars to submarine-server\u2019s classpath). "),Object(a.b)("p",null,"To avoid jars and dependencies of plugins break the submarine-server, the plug-ins manager, or both. To solve this issue, we can instantiate submitter plug-ins using a classloader that is different from the system classloader."),Object(a.b)("h4",{id:"submitter-plug-ins"},"Submitter Plug-ins"),Object(a.b)("p",null,"Each plug-in uses a separate module under the server-submitter module. As the default implements, we provide for YARN and K8s. For YARN cluster, we provide the submitter-yarn and submitter-yarnservice plug-ins. The submitter-yarn plug-in used the ",Object(a.b)("a",{parentName:"p",href:"https://github.com/linkedin/TonY"},"TonY")," as the runtime to run the training job, and the submitter-yarnservice plug-in direct use the ",Object(a.b)("a",{parentName:"p",href:"https://hadoop.apache.org/docs/stable/hadoop-yarn/hadoop-yarn-site/yarn-service/Overview.html"},"YARN Service")," which supports  Hadoop v3.1 above. "),Object(a.b)("p",null,"The submitter-k8s plug-in is used to submit the job to Kubernetes cluster and use the ",Object(a.b)("a",{parentName:"p",href:"https://kubernetes.io/docs/concepts/extend-kubernetes/operator/"},"operator")," as the runtime. The submitter-k8s plug-in implements the operation of CRD object and provides the java interface. In the beginning, we use the ",Object(a.b)("a",{parentName:"p",href:"https://github.com/kubeflow/tf-operator"},"tf-operator")," for the TensorFlow."),Object(a.b)("p",null,"If Submarine want to support the other resource management system in the future, such as submarine-docker-cluster (submarine uses the Raft algorithm to create a docker cluster on the docker runtime environment on multiple servers, providing the most lightweight resource scheduling system for small-scale users). We should create a new plug-in module named submitter-docker under the server-submitter module."),Object(a.b)("h3",{id:"experiment-monitor"},"Experiment Monitor"),Object(a.b)("p",null,"The monitor tracks the experiment life cycle and records the main events and key info in runtime. As the experiment run progresses, the metrics are needed for evaluation of the ongoing success or failure of the execution progress. Due to adapt the different cluster resource management system, so we need a generic metric info structure and each submitter plug-in should inherit and complete it by itself."),Object(a.b)("h3",{id:"invoke-flows-of-experiment-related-components"},"Invoke flows of experiment-related components"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"}," +-----------------+  +----------------+ +----------------+ +-----------------+\n |Experiments      |  |Compute Cluster | |Experiment      | | Experiment      |\n |Mgr              |  |Mgr             | |Submitter       | | Monitor         |\n +-----------------+  +----------------+ +----------------+ +-----------------+\n          +                    +                  +                  +\n User     |                    |                  |                  |\n Submit   |+-------------------------------------\x3e+                  +\n Xperiment|          Use submitter.validate(spec) |                  |\n          |          to validate spec and create  |                  |\n          |          experiment object (state-    |                  |\n          |          machine).                    |                  |\n          |                                       |                  |\n          |          The experiment manager will  |                  |\n          |          persist meta-data to Database|                  |\n          |                    |                  |                  |\n          |                    |                  +                  +\n          |+-----------------\x3e +                  |                  |\n          |  Submit Experiments|                  |                  |\n          |   To ComputeCluster|                  |                  |\n          |   Mgr, get existing|+----------------\x3e|                  |\n          |   cluster, or      |  Use Submitter   |                  |\n          |   create a new one.|  to submit       |+---------------\x3e |\n          |                    |  Different kinds |  Once job is     |\n          |                    |  of experiments  |  submitted, use  |+----+\n          |                    |  to k8s/yarn, etc|  monitor to get  |     |\n          |                    |                  |  status updates  |     |\n          |                    |                  |                  |     | Monitor\n          |                    |                  |                  |     | Xperiment\n          |                    |                  |                  |     | status\n          |                    |                  |                  |     |\n          |<--------------------------------------------------------+|     |\n          |                    |                  |                  |     |\n          |                  Update Status back to Experiment        |     |\n          |                    |      Manager     |                  |<----+\n          |                    |                  |                  |\n          |                    |                  |                  |\n          |                    |                  |                  |\n          v                    v                  v                  v\n")),Object(a.b)("p",null,"TODO: add more details about template, environment, etc."),Object(a.b)("h2",{id:"common-modules-of-experimentnotebook-sessionmodel-serving"},"Common modules of experiment/notebook-session/model-serving"),Object(a.b)("p",null,"Experiment/notebook-session/model-serving share a lot of commonalities, all of them are: "),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},"Some workloads running on YARN/K8s."),Object(a.b)("li",{parentName:"ul"},"Need persist meta data to DB. "),Object(a.b)("li",{parentName:"ul"},"Need monitor task/service running status from resource management system. ")),Object(a.b)("p",null,"We need to make their implementation are loose-coupled, but at the same time, share some building blocks as much as possible (e.g. submit PodSpecs to K8s, monitor status, get logs, etc.) to reduce duplications."),Object(a.b)("h2",{id:"support-predefined-experiment-templates"},"Support Predefined-experiment-templates"),Object(a.b)("p",null,"Predefined Experiment Template is just a way to save data-scientists time to repeatedly entering parameters which is not error-proof and user experience is also bad."),Object(a.b)("h3",{id:"predefined-experiment-template-api-to-run-experiment"},"Predefined-experiment-template API to run experiment"),Object(a.b)("p",null,"Predefined experiment template consists a list of parameters, each of the parameter has 4 properties:"),Object(a.b)("table",null,Object(a.b)("thead",{parentName:"table"},Object(a.b)("tr",{parentName:"thead"},Object(a.b)("th",{parentName:"tr",align:null},"Key"),Object(a.b)("th",{parentName:"tr",align:null},"Required"),Object(a.b)("th",{parentName:"tr",align:null},"Default Value"),Object(a.b)("th",{parentName:"tr",align:null},"Description"))),Object(a.b)("tbody",{parentName:"table"},Object(a.b)("tr",{parentName:"tbody"},Object(a.b)("td",{parentName:"tr",align:null},"Name of the key"),Object(a.b)("td",{parentName:"tr",align:null},"true/false"),Object(a.b)("td",{parentName:"tr",align:null},"When required = false, a default value can be provided by the template"),Object(a.b)("td",{parentName:"tr",align:null},"Description of the parameter")))),Object(a.b)("p",null,"For the example of deepfm CTR training experiment mentioned in the ",Object(a.b)("a",{parentName:"p",href:"/docs/designDocs/architecture-and-requirements"},"architecture-and-requirements.md")),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},'{\n  "input": {\n    "train_data": ["hdfs:///user/submarine/data/tr.libsvm"],\n    "valid_data": ["hdfs:///user/submarine/data/va.libsvm"],\n    "test_data": ["hdfs:///user/submarine/data/te.libsvm"],\n    "type": "libsvm"\n  },\n  "output": {\n    "save_model_dir": "hdfs:///user/submarine/deepfm",\n    "metric": "auc"\n  },\n  "training": {\n    "batch_size" : 512,\n    "field_size": 39,\n    "num_epochs": 3,\n    "feature_size": 117581,\n    ...\n  }\n}\n')),Object(a.b)("p",null,"The template will be (in yaml format):"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre",className:"language-yaml"},"# deepfm.ctr template\nname: deepfm.ctr\nauthor: \ndescription: >\n  This is a template to run CTR training using deepfm algorithm, by default it runs\n  single node TF job, you can also overwrite training parameters to use distributed\n  training. \n  \nparameters: \n  - name: input.train_data\n    required: true \n    description: >\n      train data is expected in SVM format, and can be stored in HDFS/S3 \n    ...\n  - name: training.batch_size\n    required: false\n    default: 32 \n    description: This is batch size of training\n")),Object(a.b)("p",null,"The batch format can be used in UI/API. "),Object(a.b)("h3",{id:"handle-predefined-experiment-template-from-server-side"},"Handle Predefined-experiment-template from server side"),Object(a.b)("p",null,"Please note that, the conversion of predefined-experiment-template will be always handled by server. The invoke flow looks like: "),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},"\n                         +------------Submarine Server -----------------------+\n   +--------------+      |  +-----------------+                               |\n   |Client        |+-------\x3e|Experimment Mgr  |                               |\n   |              |      |  |                 |                               |\n   +--------------+      |  +-----------------+                               |\n                         |          +                                         |\n          Submit         |  +-------v---------+       Get Experiment Template |\n          Template       |  |Experiment       |<-----+From pre-registered     |\n          Parameters     |  |Template Registry|       Templates               |\n          to Submarine   |  +-------+---------+                               |\n          Server         |          |                                         |\n                         |  +-------v---------+       +-----------------+     |\n                         |  |Deepfm CTR Templ-|       |Experiment-      |     |\n                         |  |ate Handler      +------\x3e|Tensorflow       |     |\n                         |  +-----------------+       +--------+--------+     |\n                         |                                     |              |\n                         |                                     |              |\n                         |                            +--------v--------+     |\n                         |                            |Experiment       |     |\n                         |                            |Submitter        |     |\n                         |                            +--------+--------+     |\n                         |                                     |              |\n                         |                                     |              |\n                         |                            +--------v--------+     |\n                         |                            |                 |     |\n                         |                            | ......          |     |\n                         |                            +-----------------+     |\n                         |                                                    |\n                         +----------------------------------------------------+\n")),Object(a.b)("p",null,"Basically, from Client, it submitted template parameters to Submarine Server, inside submarine server, it finds the corresponding template handler based on the name. And the template handler converts input parameters to an actual experiment, such as a distributed TF experiment. After that, it goes the similar route to validate experiment spec, compute cluster manager, etc. to get the experiment submitted and monitored. "),Object(a.b)("p",null,"Predefined-experiment-template is able to create any kind of experiment, it could be a pipeline: "),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},"\n   +-----------------+                  +------------------+\n   |Template XYZ     |                  | XYZ Template     |\n   |                 |+---------------\x3e | Handler          |\n   +-----------------+                  +------------------+\n                                                   +\n                                                   |\n                                                   |\n                                                   |\n                                                   |\n                                                   v\n             +--------------------+      +------------------+\n             | +-----------------+|      | Predefined       |\n             | |  Split Train/   ||<----+| Pipeline         |\n             | |  Test data      ||      +------------------+\n             | +-------+---------+|\n             |         |          |\n             | +-------v---------+|\n             | |  Spark Job ETL  ||\n             | |                 ||\n             | +-------+---------+|\n             |         |          |\n             | +-------v---------+|\n             | | Train using     ||\n             | | XGBoost         ||\n             | +-------+---------+|\n             |         |          |\n             | +-------v---------+|\n             | | Validate Train  ||\n             | | Results         ||\n             | +-----------------+|\n             |                    |\n             +--------------------+\n")),Object(a.b)("p",null,"Template can be also chained to reuse other template handlers"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},"\n   +-----------------+                  +------------------+\n   |Template XYZ     |                  | XYZ Template     |\n   |                 |+---------------\x3e | Handler          |\n   +-----------------+                  +------------------+\n                                                   +\n                                                   |\n                                                   v\n               +------------------+      +------------------+\n               |Distributed       |      | ABC Template     |\n               |TF Experiment     |<----+| Handler          |\n               +------------------+      +------------------+\n")),Object(a.b)("p",null,"Template Handler is a callable class inside Submarine Server with a standard interface defined like."),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre",className:"language-java"},"interface ExperimentTemplateHandler {\n   ExperimentSpec createExperiment(TemplatedExperimentParameters param)\n}\n")),Object(a.b)("p",null,"We should avoid users to do coding when they want to add new template, we should have several standard template handler to deal with most of the template handling."),Object(a.b)("p",null,"Experiment templates can be registered/updated/deleted via Submarine Server's REST API, which need to be discussed separately in the doc. (TODO)"))}p.isMDXComponent=!0},194:function(e,t,n){"use strict";n.d(t,"a",(function(){return c})),n.d(t,"b",(function(){return d}));var r=n(0),i=n.n(r);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n,r,i={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var m=i.a.createContext({}),p=function(e){var t=i.a.useContext(m),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},c=function(e){var t=p(e.components);return i.a.createElement(m.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return i.a.createElement(i.a.Fragment,{},t)}},b=i.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,o=e.parentName,m=l(e,["components","mdxType","originalType","parentName"]),c=p(n),b=r,d=c["".concat(o,".").concat(b)]||c[b]||u[b]||a;return n?i.a.createElement(d,s(s({ref:t},m),{},{components:n})):i.a.createElement(d,s({ref:t},m))}));function d(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,o=new Array(a);o[0]=b;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s.mdxType="string"==typeof e?e:r,o[1]=s;for(var m=2;m<a;m++)o[m]=n[m];return i.a.createElement.apply(null,o)}return i.a.createElement.apply(null,n)}b.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/6c58af36.a748e664.js b/6c58af36.a748e664.js
deleted file mode 100644
index 1e4d646..0000000
--- a/6c58af36.a748e664.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[55],{122:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return i})),n.d(t,"metadata",(function(){return l})),n.d(t,"toc",(function(){return c})),n.d(t,"default",(function(){return u}));var r=n(3),a=n(7),o=(n(0),n(209)),i={title:"Docker Images for MXNet"},l={unversionedId:"userDocs/yarn/WriteDockerfileMX",id:"userDocs/yarn/WriteDockerfileMX",isDocsHomePage:!1,title:"Docker Images for MXNet",description:"\x3c!--",source:"@site/docs/userDocs/yarn/WriteDockerfileMX.md",slug:"/userDocs/yarn/WriteDockerfileMX",permalink:"/docs/next/userDocs/yarn/WriteDockerfileMX",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/userDocs/yarn/WriteDockerfileMX.md",version:"current"},c=[{value:"How to create docker images to run MXNet on YARN",id:"how-to-create-docker-images-to-run-mxnet-on-yarn",children:[]},{value:"Use examples to build your own MXNet docker images",id:"use-examples-to-build-your-own-mxnet-docker-images",children:[{value:"Manually build Docker image:",id:"manually-build-docker-image",children:[]}]}],p={toc:c};function u(e){var t=e.components,n=Object(a.a)(e,["components"]);return Object(o.b)("wrapper",Object(r.a)({},p,n,{components:t,mdxType:"MDXLayout"}),Object(o.b)("h2",{id:"how-to-create-docker-images-to-run-mxnet-on-yarn"},"How to create docker images to run MXNet on YARN"),Object(o.b)("p",null,"Dockerfile to run MXNet on YARN needs two parts:"),Object(o.b)("p",null,Object(o.b)("strong",{parentName:"p"},"Base libraries which MXNet depends on")),Object(o.b)("p",null,"1) OS base image, for example ",Object(o.b)("inlineCode",{parentName:"p"},"ubuntu:18.04")),Object(o.b)("p",null,"2) MXNet dependent libraries and packages. \\\nFor example ",Object(o.b)("inlineCode",{parentName:"p"},"python"),", ",Object(o.b)("inlineCode",{parentName:"p"},"scipy"),". For GPU support, you also need ",Object(o.b)("inlineCode",{parentName:"p"},"cuda"),", ",Object(o.b)("inlineCode",{parentName:"p"},"cudnn"),", etc."),Object(o.b)("p",null,"3) MXNet package."),Object(o.b)("p",null,Object(o.b)("strong",{parentName:"p"},"Libraries to access HDFS")),Object(o.b)("p",null,"1) JDK"),Object(o.b)("p",null,"2) Hadoop"),Object(o.b)("p",null,"Here's an example of a base image (without GPU support) to install MXNet:"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-shell"},'FROM ubuntu:18.04\n\n# Install some development tools and packages\n# MXNet 1.6 is going to be the last MXNet release to support Python2\nRUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y tzdata git \\\n    wget zip python3 python3-pip python3-distutils libgomp1 libopenblas-dev libopencv-dev\n\n# Install latest MXNet using pip (without GPU support)\nRUN pip3 install mxnet\n\nRUN echo "Install python related packages" && \\\n    pip3 install --user graphviz==0.8.4 ipykernel jupyter matplotlib numpy pandas scipy sklearn  && \\\n    python3 -m ipykernel.kernelspec\n')),Object(o.b)("p",null,"On top of above image, add files, install packages to access HDFS"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-shell"},'ENV JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64\nRUN apt-get update && apt-get install -y openjdk-8-jdk wget\n\n# Install hadoop\nENV HADOOP_VERSION="3.1.2"\nRUN wget https://archive.apache.org/dist/hadoop/common/hadoop-${HADOOP_VERSION}/hadoop-${HADOOP_VERSION}.tar.gz\n# If you are in mainland China, you can use the following command.\n# RUN wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-${HADOOP_VERSION}/hadoop-${HADOOP_VERSION}.tar.gz\n\nRUN tar zxf hadoop-${HADOOP_VERSION}.tar.gz\nRUN ln -s hadoop-${HADOOP_VERSION} hadoop-current\nRUN rm hadoop-${HADOOP_VERSION}.tar.gz\n')),Object(o.b)("p",null,"Build and push to your own docker registry: Use ",Object(o.b)("inlineCode",{parentName:"p"},"docker build ... ")," and ",Object(o.b)("inlineCode",{parentName:"p"},"docker push ...")," to finish this step."),Object(o.b)("h2",{id:"use-examples-to-build-your-own-mxnet-docker-images"},"Use examples to build your own MXNet docker images"),Object(o.b)("p",null,"We provided some example Dockerfiles for you to build your own MXNet docker images."),Object(o.b)("p",null,"For latest MXNet"),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},Object(o.b)("em",{parentName:"li"},"docker/mxnet/base/ubuntu-18.04/Dockerfile.cpu.mxnet_latest"),": Latest MXNet that supports CPU"),Object(o.b)("li",{parentName:"ul"},Object(o.b)("em",{parentName:"li"},"docker/mxnet/base/ubuntu-18.04/Dockerfile.gpu.mxnet_latest"),": Latest MXNet that supports GPU, which is prebuilt to CUDA10.")),Object(o.b)("h1",{id:"build-docker-images"},"Build Docker images"),Object(o.b)("h3",{id:"manually-build-docker-image"},"Manually build Docker image:"),Object(o.b)("p",null,"Under ",Object(o.b)("inlineCode",{parentName:"p"},"docker/mxnet")," directory, run ",Object(o.b)("inlineCode",{parentName:"p"},"build-all.sh")," to build all Docker images. This command will build the following Docker images:"),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},Object(o.b)("inlineCode",{parentName:"li"},"mxnet-latest-cpu-base:0.0.1")," for base Docker image which includes Hadoop, MXNet"),Object(o.b)("li",{parentName:"ul"},Object(o.b)("inlineCode",{parentName:"li"},"mxnet-latest-gpu-base:0.0.1")," for base Docker image which includes Hadoop, MXNet, GPU base libraries.")))}u.isMDXComponent=!0},209:function(e,t,n){"use strict";n.d(t,"a",(function(){return s})),n.d(t,"b",(function(){return m}));var r=n(0),a=n.n(r);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function c(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var p=a.a.createContext({}),u=function(e){var t=a.a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},s=function(e){var t=u(e.components);return a.a.createElement(p.Provider,{value:t},e.children)},b={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},d=a.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,i=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),s=u(n),d=r,m=s["".concat(i,".").concat(d)]||s[d]||b[d]||o;return n?a.a.createElement(m,l(l({ref:t},p),{},{components:n})):a.a.createElement(m,l({ref:t},p))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,i=new Array(o);i[0]=d;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l.mdxType="string"==typeof e?e:r,i[1]=l;for(var p=2;p<o;p++)i[p]=n[p];return a.a.createElement.apply(null,i)}return a.a.createElement.apply(null,n)}d.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/6d147207.5a8f5b6d.js b/6d147207.5a8f5b6d.js
deleted file mode 100644
index 5a22f43..0000000
--- a/6d147207.5a8f5b6d.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[56],{123:function(e,n,t){"use strict";t.r(n),t.d(n,"frontMatter",(function(){return s})),t.d(n,"metadata",(function(){return r})),t.d(n,"toc",(function(){return c})),t.d(n,"default",(function(){return p}));var i=t(3),a=t(7),u=(t(0),t(209)),s={},r={unversionedId:"ecosystem/kaldi/RunningDistributedThchs30KaldiJobs",id:"ecosystem/kaldi/RunningDistributedThchs30KaldiJobs",isDocsHomePage:!1,title:"RunningDistributedThchs30KaldiJobs",description:"\x3c!--",source:"@site/docs/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs.md",slug:"/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs",permalink:"/docs/next/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs.md",version:"current"},c=[{value:"Prepare data for training",id:"prepare-data-for-training",children:[]},{value:"Prepare Docker images",id:"prepare-docker-images",children:[]},{value:"Run Kaldi jobs",id:"run-kaldi-jobs",children:[{value:"Run distributed training",id:"run-distributed-training",children:[]}]}],o={toc:c};function p(e){var n=e.components,s=Object(a.a)(e,["components"]);return Object(u.b)("wrapper",Object(i.a)({},o,s,{components:n,mdxType:"MDXLayout"}),Object(u.b)("h1",{id:"thchs30-kaldi-example-with-yarn-service"},"Thchs30 Kaldi Example With YARN Service"),Object(u.b)("h2",{id:"prepare-data-for-training"},"Prepare data for training"),Object(u.b)("p",null,"Thchs30 is a common benchmark in machine learning for speech data and transcripts. Below example is based on Thchs30 dataset."),Object(u.b)("p",null,"1) download gz file:"),Object(u.b)("pre",null,Object(u.b)("code",{parentName:"pre"},"THCHS30_PATH=/data/hdfs1/nfs/aisearch/kaldi/thchs30\nmkdir $THCHS30_PATH/data && cd $THCHS30_PATH/data\nwget http://www.openslr.org/resources/18/data_thchs30.tgz\nwget http://www.openslr.org/resources/18/test-noise.tgz\nwget http://www.openslr.org/resources/18/resource.tgz\n")),Object(u.b)("p",null,"2) Checkout ",Object(u.b)("a",{parentName:"p",href:"https://github.com/apache/submarine.git"},"https://github.com/apache/submarine.git"),":"),Object(u.b)("pre",null,Object(u.b)("code",{parentName:"pre"},"git clone https://github.com/apache/submarine.git\n")),Object(u.b)("p",null,"3) Go to ",Object(u.b)("inlineCode",{parentName:"p"},"submarine/docker/ecosystem/")),Object(u.b)("pre",null,Object(u.b)("code",{parentName:"pre"},"cp -r ./kaldi/sge $THCHS30_PATH/sge\n")),Object(u.b)("p",null,"4) optional\uff0cModify ",Object(u.b)("inlineCode",{parentName:"p"},"/opt/kaldi/egs/thchs30/s5/cmd.sh")," in the Container,This queue is used by default"),Object(u.b)("pre",null,Object(u.b)("code",{parentName:"pre"},'export train_cmd="queue.pl -q all.q"\n')),Object(u.b)("p",null,Object(u.b)("strong",{parentName:"p"},"Warning:")),Object(u.b)("p",null,"Please note that YARN service doesn't allow multiple services with the same name, so please run following command"),Object(u.b)("pre",null,Object(u.b)("code",{parentName:"pre"},"yarn application -destroy <service-name>\n")),Object(u.b)("p",null,"to delete services if you want to reuse the same service name."),Object(u.b)("h2",{id:"prepare-docker-images"},"Prepare Docker images"),Object(u.b)("p",null,"Refer to ",Object(u.b)("a",{parentName:"p",href:"/docs/next/ecosystem/kaldi/WriteDockerfileKaldi"},"Write Dockerfile")," to build a Docker image or use prebuilt one:"),Object(u.b)("ul",null,Object(u.b)("li",{parentName:"ul"},"hadoopsubmarine/kaldi-latest-gpu-base:0.0.1")),Object(u.b)("h2",{id:"run-kaldi-jobs"},"Run Kaldi jobs"),Object(u.b)("h3",{id:"run-distributed-training"},"Run distributed training"),Object(u.b)("pre",null,Object(u.b)("code",{parentName:"pre"},'# Change the variables according to your needs\nSUBMARINE_VERSION=3.3.0-SNAPSHOT\nWORKER_NUM=2\nSGE_CFG_PATH=/cfg\nTHCHS30_PATH=/data/hdfs1/nfs/aisearch/kaldi/thchs30\nDOCKER_HADOOP_HDFS_HOME=/app/${SUBMARINE_VERSION}\n\n# Dependent on registrydns, you must fill in < your RegistryDNSIP> in resolv.conf\nyarn jar /usr/local/matrix/share/hadoop/yarn/${SUBMARINE_VERSION}.jar \\\njob run --name kaldi-thchs30-distributed \\\n--env DOCKER_JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre/ \\\n--env DOCKER_HADOOP_HDFS_HOME=$DOCKER_HADOOP_HDFS_HOME \\\n--env YARN_CONTAINER_RUNTIME_DOCKER_CONTAINER_NETWORK=calico-network \\\n--env PYTHONUNBUFFERED="0" \\\n--env TZ="Asia/Shanghai" \\\n--env YARN_CONTAINER_RUNTIME_DOCKER_MOUNTS=${THCHS30_PATH}/sge/resolv.conf:/etc/resolv.conf,\\\n${THCHS30_PATH}/sge/passwd:/etc/passwd:rw,\\\n${THCHS30_PATH}/sge/group:/etc/group:rw,\\\n${THCHS30_PATH}/sge:$SGE_CFG_PATH,\\\n${THCHS30_PATH}/data:/opt/kaldi/egs/thchs30,\\\n${THCHS30_PATH}/mul/s5:/opt/kaldi/egs/mul-thchs30/s5 \\\n--input_path /opt/kaldi/egs/thchs30/data \\\n--docker_image hadoopsubmarine/kaldi-latest-gpu-base:0.0.1 \\\n--num_workers $WORKER_NUM \\\n--worker_resources memory=64G,vcores=32,gpu=1 \\\n--worker_launch_cmd "sudo mkdir -p /opt/kaldi/egs/mul-thchs30/s5 && \\\nsudo cp /opt/kaldi/egs/thchs30/s5/* /opt/kaldi/egs/mul-thchs30/s5 -r && \\\ncluster_user=`whoami` domain_suffix="ml.com" && \\\ncd /cfg && bash sge_run.sh $WORKER_NUM $SGE_CFG_PATH && \\\nif [ $(echo $HOST_NAME |grep "^master-") ] then sleep 2m && cd /opt/kaldi/egs/mul-thchs30/s5 && ./run.sh fi" \\\n--verbose\n')),Object(u.b)("p",null,"Explanations:"),Object(u.b)("ul",null,Object(u.b)("li",{parentName:"ul"},Object(u.b)("inlineCode",{parentName:"li"},">1")," num_workers indicates it is a distributed training."),Object(u.b)("li",{parentName:"ul"},"Parameters / resources / Docker image of parameter server can be specified separately. For many cases, parameter server doesn't require GPU.We don't need parameter server here")),Object(u.b)("p",null,"For the meaning of the individual parameters, see the ",Object(u.b)("a",{parentName:"p",href:"../../adminDocs/yarn/README"},"QuickStart")," page!"),Object(u.b)("p",null,Object(u.b)("em",{parentName:"p"},"Outputs of distributed training")),Object(u.b)("p",null,"Sample output of master:"),Object(u.b)("pre",null,Object(u.b)("code",{parentName:"pre"},"...\nReading package lists...\nBuilding dependency tree...\nReading state information...\nThe following additional packages will be installed:\n  bsd-mailx cpio gridengine-common ifupdown iproute2 isc-dhcp-client\n  isc-dhcp-common libatm1 libdns-export162 libisc-export160 liblockfile-bin\n  liblockfile1 libmnl0 libxmuu1 libxtables11 ncurses-term netbase\n  openssh-client openssh-server openssh-sftp-server postfix python3-chardet\n  python3-pkg-resources python3-requests python3-six python3-urllib3\n  ssh-import-id ssl-cert tcsh xauth\nSuggested packages:\n  libarchive1 gridengine-qmon ppp rdnssd iproute2-doc resolvconf avahi-autoipd\n  isc-dhcp-client-ddns apparmor ssh-askpass libpam-ssh keychain monkeysphere\n  rssh molly-guard ufw procmail postfix-mysql postfix-pgsql postfix-ldap\n  postfix-pcre sasl2-bin libsasl2-modules dovecot-common postfix-cdb\n  postfix-doc python3-setuptools python3-ndg-httpsclient python3-openssl\n  python3-pyasn1 openssl-blacklist\nThe following NEW packages will be installed:\n  bsd-mailx cpio gridengine-client gridengine-common gridengine-exec\n  gridengine-master ifupdown iproute2 isc-dhcp-client isc-dhcp-common libatm1\n  libdns-export162 libisc-export160 liblockfile-bin liblockfile1 libmnl0\n  libxmuu1 libxtables11 ncurses-term netbase openssh-client openssh-server\n  openssh-sftp-server postfix python3-chardet python3-pkg-resources\n  python3-requests python3-six python3-urllib3 ssh-import-id ssl-cert tcsh\n  xauth\n0 upgraded, 33 newly installed, 0 to remove and 30 not upgraded.\nNeed to get 12.1 MB of archives.\nAfter this operation, 65.8 MB of additional disk space will be used.\nGet:1 http://archive.ubuntu.com/ubuntu xenial/main amd64 libatm1 amd64 1:2.5.1-1.5 [24.2 kB]\nGet:2 http://archive.ubuntu.com/ubuntu xenial/main amd64 libmnl0 amd64 1.0.3-5 [12.0 kB]\nGet:3 http://archive.ubuntu.com/ubuntu xenial/main amd64 liblockfile-bin amd64 1.09-6ubuntu1 [10.8 kB]\nGet:4 http://archive.ubuntu.com/ubuntu xenial/main amd64 liblockfile1 amd64 1.09-6ubuntu1 [8056 B]\nGet:5 http://archive.ubuntu.com/ubuntu xenial/main amd64 cpio amd64 2.11+dfsg-5ubuntu1 [74.8 kB]\nGet:6 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 iproute2 amd64 4.3.0-1ubuntu3.16.04.5 [523 kB]\nGet:7 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 ifupdown amd64 0.8.10ubuntu1.4 [54.9 kB]\nGet:8 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libisc-export160 amd64 1:9.10.3.dfsg.P4-8ubuntu1.15 [153 kB]\nGet:9 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libdns-export162 amd64 1:9.10.3.dfsg.P4-8ubuntu1.15 [665 kB]\nGet:10 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 isc-dhcp-client amd64 4.3.3-5ubuntu12.10 [224 kB]\nGet:11 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 isc-dhcp-common amd64 4.3.3-5ubuntu12.10 [105 kB]\nGet:12 http://archive.ubuntu.com/ubuntu xenial/main amd64 libxtables11 amd64 1.6.0-2ubuntu3 [27.2 kB]\nGet:13 http://archive.ubuntu.com/ubuntu xenial/main amd64 netbase all 5.3 [12.9 kB]\nGet:14 http://archive.ubuntu.com/ubuntu xenial/main amd64 libxmuu1 amd64 2:1.1.2-2 [9674 B]\nGet:15 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 openssh-client amd64 1:7.2p2-4ubuntu2.8 [590 kB]\nGet:16 http://archive.ubuntu.com/ubuntu xenial/main amd64 xauth amd64 1:1.0.9-1ubuntu2 [22.7 kB]\nGet:17 http://archive.ubuntu.com/ubuntu xenial/main amd64 ssl-cert all 1.0.37 [16.9 kB]\nGet:18 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 postfix amd64 3.1.0-3ubuntu0.3 [1152 kB]\nGet:19 http://archive.ubuntu.com/ubuntu xenial/main amd64 bsd-mailx amd64 8.1.2-0.20160123cvs-2 [63.7 kB]\nGet:20 http://archive.ubuntu.com/ubuntu xenial/universe amd64 gridengine-common all 6.2u5-7.4 [156 kB]\nGet:21 http://archive.ubuntu.com/ubuntu xenial/universe amd64 gridengine-client amd64 6.2u5-7.4 [3394 kB]\nGet:22 http://archive.ubuntu.com/ubuntu xenial/universe amd64 tcsh amd64 6.18.01-5 [410 kB]\nGet:23 http://archive.ubuntu.com/ubuntu xenial/universe amd64 gridengine-exec amd64 6.2u5-7.4 [990 kB]\nGet:24 http://archive.ubuntu.com/ubuntu xenial/universe amd64 gridengine-master amd64 6.2u5-7.4 [2429 kB]\nGet:25 http://archive.ubuntu.com/ubuntu xenial/main amd64 ncurses-term all 6.0+20160213-1ubuntu1 [249 kB]\nGet:26 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 openssh-sftp-server amd64 1:7.2p2-4ubuntu2.8 [38.9 kB]\nGet:27 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 openssh-server amd64 1:7.2p2-4ubuntu2.8 [335 kB]\nGet:28 http://archive.ubuntu.com/ubuntu xenial/main amd64 python3-pkg-resources all 20.7.0-1 [79.0 kB]\nGet:29 http://archive.ubuntu.com/ubuntu xenial/main amd64 python3-chardet all 2.3.0-2 [96.2 kB]\nGet:30 http://archive.ubuntu.com/ubuntu xenial/main amd64 python3-six all 1.10.0-3 [11.0 kB]\nGet:31 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 python3-urllib3 all 1.13.1-2ubuntu0.16.04.3 [58.5 kB]\nGet:32 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 python3-requests all 2.9.1-3ubuntu0.1 [55.8 kB]\nGet:33 http://archive.ubuntu.com/ubuntu xenial/main amd64 ssh-import-id all 5.5-0ubuntu1 [10.2 kB]\nFetched 12.1 MB in 0s (15.0 MB/s)\nSelecting previously unselected package libatm1:amd64.\n(Reading database ...\n(Reading database ... 5%\n(Reading database ... 10%\n(Reading database ... 15%\n(Reading database ... 20%\n(Reading database ... 25%\n(Reading database ... 30%\n(Reading database ... 35%\n(Reading database ... 40%\n(Reading database ... 45%\n(Reading database ... 50%\n(Reading database ... 55%\n(Reading database ... 60%\n(Reading database ... 65%\n(Reading database ... 70%\n(Reading database ... 75%\n(Reading database ... 80%\n(Reading database ... 85%\n(Reading database ... 90%\n(Reading database ... 95%\n(Reading database ... 100%\n(Reading database ... 21398 files and directories currently installed.)\nPreparing to unpack .../libatm1_1%3a2.5.1-1.5_amd64.deb ...\nUnpacking libatm1:amd64 (1:2.5.1-1.5) ...\nSelecting previously unselected package libmnl0:amd64.\nPreparing to unpack .../libmnl0_1.0.3-5_amd64.deb ...\nUnpacking libmnl0:amd64 (1.0.3-5) ...\nSelecting previously unselected package liblockfile-bin.\nPreparing to unpack .../liblockfile-bin_1.09-6ubuntu1_amd64.deb ...\nUnpacking liblockfile-bin (1.09-6ubuntu1) ...\nSelecting previously unselected package liblockfile1:amd64.\nPreparing to unpack .../liblockfile1_1.09-6ubuntu1_amd64.deb ...\nUnpacking liblockfile1:amd64 (1.09-6ubuntu1) ...\nSelecting previously unselected package cpio.\nPreparing to unpack .../cpio_2.11+dfsg-5ubuntu1_amd64.deb ...\nUnpacking cpio (2.11+dfsg-5ubuntu1) ...\nSelecting previously unselected package iproute2.\nPreparing to unpack .../iproute2_4.3.0-1ubuntu3.16.04.5_amd64.deb ...\nUnpacking iproute2 (4.3.0-1ubuntu3.16.04.5) ...\nSelecting previously unselected package ifupdown.\nPreparing to unpack .../ifupdown_0.8.10ubuntu1.4_amd64.deb ...\nUnpacking ifupdown (0.8.10ubuntu1.4) ...\nSelecting previously unselected package libisc-export160.\nPreparing to unpack .../libisc-export160_1%3a9.10.3.dfsg.P4-8ubuntu1.15_amd64.deb ...\nUnpacking libisc-export160 (1:9.10.3.dfsg.P4-8ubuntu1.15) ...\nSelecting previously unselected package libdns-export162.\nPreparing to unpack .../libdns-export162_1%3a9.10.3.dfsg.P4-8ubuntu1.15_amd64.deb ...\nUnpacking libdns-export162 (1:9.10.3.dfsg.P4-8ubuntu1.15) ...\nSelecting previously unselected package isc-dhcp-client.\nPreparing to unpack .../isc-dhcp-client_4.3.3-5ubuntu12.10_amd64.deb ...\nUnpacking isc-dhcp-client (4.3.3-5ubuntu12.10) ...\nSelecting previously unselected package isc-dhcp-common.\nPreparing to unpack .../isc-dhcp-common_4.3.3-5ubuntu12.10_amd64.deb ...\nUnpacking isc-dhcp-common (4.3.3-5ubuntu12.10) ...\nSelecting previously unselected package libxtables11:amd64.\nPreparing to unpack .../libxtables11_1.6.0-2ubuntu3_amd64.deb ...\nUnpacking libxtables11:amd64 (1.6.0-2ubuntu3) ...\nSelecting previously unselected package netbase.\nPreparing to unpack .../archives/netbase_5.3_all.deb ...\nUnpacking netbase (5.3) ...\nSelecting previously unselected package libxmuu1:amd64.\nPreparing to unpack .../libxmuu1_2%3a1.1.2-2_amd64.deb ...\nUnpacking libxmuu1:amd64 (2:1.1.2-2) ...\nSelecting previously unselected package openssh-client.\nPreparing to unpack .../openssh-client_1%3a7.2p2-4ubuntu2.8_amd64.deb ...\nUnpacking openssh-client (1:7.2p2-4ubuntu2.8) ...\nSelecting previously unselected package xauth.\nPreparing to unpack .../xauth_1%3a1.0.9-1ubuntu2_amd64.deb ...\nUnpacking xauth (1:1.0.9-1ubuntu2) ...\nSelecting previously unselected package ssl-cert.\nPreparing to unpack .../ssl-cert_1.0.37_all.deb ...\nUnpacking ssl-cert (1.0.37) ...\nSelecting previously unselected package postfix.\nPreparing to unpack .../postfix_3.1.0-3ubuntu0.3_amd64.deb ...\nUnpacking postfix (3.1.0-3ubuntu0.3) ...\nSelecting previously unselected package bsd-mailx.\nPreparing to unpack .../bsd-mailx_8.1.2-0.20160123cvs-2_amd64.deb ...\nUnpacking bsd-mailx (8.1.2-0.20160123cvs-2) ...\nSelecting previously unselected package gridengine-common.\nPreparing to unpack .../gridengine-common_6.2u5-7.4_all.deb ...\nUnpacking gridengine-common (6.2u5-7.4) ...\nSelecting previously unselected package gridengine-client.\nPreparing to unpack .../gridengine-client_6.2u5-7.4_amd64.deb ...\nUnpacking gridengine-client (6.2u5-7.4) ...\nSelecting previously unselected package tcsh.\nPreparing to unpack .../tcsh_6.18.01-5_amd64.deb ...\nUnpacking tcsh (6.18.01-5) ...\nSelecting previously unselected package gridengine-exec.\nPreparing to unpack .../gridengine-exec_6.2u5-7.4_amd64.deb ...\nUnpacking gridengine-exec (6.2u5-7.4) ...\nSelecting previously unselected package gridengine-master.\nPreparing to unpack .../gridengine-master_6.2u5-7.4_amd64.deb ...\nUnpacking gridengine-master (6.2u5-7.4) ...\nSelecting previously unselected package ncurses-term.\nPreparing to unpack .../ncurses-term_6.0+20160213-1ubuntu1_all.deb ...\nUnpacking ncurses-term (6.0+20160213-1ubuntu1) ...\nSelecting previously unselected package openssh-sftp-server.\nPreparing to unpack .../openssh-sftp-server_1%3a7.2p2-4ubuntu2.8_amd64.deb ...\nUnpacking openssh-sftp-server (1:7.2p2-4ubuntu2.8) ...\nSelecting previously unselected package openssh-server.\nPreparing to unpack .../openssh-server_1%3a7.2p2-4ubuntu2.8_amd64.deb ...\nUnpacking openssh-server (1:7.2p2-4ubuntu2.8) ...\nSelecting previously unselected package python3-pkg-resources.\nPreparing to unpack .../python3-pkg-resources_20.7.0-1_all.deb ...\nUnpacking python3-pkg-resources (20.7.0-1) ...\nSelecting previously unselected package python3-chardet.\nPreparing to unpack .../python3-chardet_2.3.0-2_all.deb ...\nUnpacking python3-chardet (2.3.0-2) ...\nSelecting previously unselected package python3-six.\nPreparing to unpack .../python3-six_1.10.0-3_all.deb ...\nUnpacking python3-six (1.10.0-3) ...\nSelecting previously unselected package python3-urllib3.\nPreparing to unpack .../python3-urllib3_1.13.1-2ubuntu0.16.04.3_all.deb ...\nUnpacking python3-urllib3 (1.13.1-2ubuntu0.16.04.3) ...\nSelecting previously unselected package python3-requests.\nPreparing to unpack .../python3-requests_2.9.1-3ubuntu0.1_all.deb ...\nUnpacking python3-requests (2.9.1-3ubuntu0.1) ...\nSelecting previously unselected package ssh-import-id.\nPreparing to unpack .../ssh-import-id_5.5-0ubuntu1_all.deb ...\nUnpacking ssh-import-id (5.5-0ubuntu1) ...\nProcessing triggers for systemd (229-4ubuntu21.22) ...\nProcessing triggers for libc-bin (2.23-0ubuntu11) ...\nSetting up libatm1:amd64 (1:2.5.1-1.5) ...\nSetting up libmnl0:amd64 (1.0.3-5) ...\nSetting up liblockfile-bin (1.09-6ubuntu1) ...\nSetting up liblockfile1:amd64 (1.09-6ubuntu1) ...\nSetting up cpio (2.11+dfsg-5ubuntu1) ...\nupdate-alternatives: using /bin/mt-gnu to provide /bin/mt (mt) in auto mode\nSetting up iproute2 (4.3.0-1ubuntu3.16.04.5) ...\nSetting up ifupdown (0.8.10ubuntu1.4) ...\nCreating /etc/network/interfaces.\nSetting up libisc-export160 (1:9.10.3.dfsg.P4-8ubuntu1.15) ...\nSetting up libdns-export162 (1:9.10.3.dfsg.P4-8ubuntu1.15) ...\nSetting up isc-dhcp-client (4.3.3-5ubuntu12.10) ...\nSetting up isc-dhcp-common (4.3.3-5ubuntu12.10) ...\nSetting up libxtables11:amd64 (1.6.0-2ubuntu3) ...\nSetting up netbase (5.3) ...\nSetting up libxmuu1:amd64 (2:1.1.2-2) ...\nSetting up openssh-client (1:7.2p2-4ubuntu2.8) ...\nSetting up xauth (1:1.0.9-1ubuntu2) ...\nSetting up ssl-cert (1.0.37) ...\nSetting up postfix (3.1.0-3ubuntu0.3) ...\nCreating /etc/postfix/dynamicmaps.cf\nsetting myhostname: master-0.XXX\nsetting alias maps\nsetting alias database\nchanging /etc/mailname to master-0.XXX\nsetting myorigin\nsetting destinations: $myhostname, master-0.XXX, localhost.XXX, , localhost\nsetting relayhost:\nsetting mynetworks: 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128\nsetting mailbox_size_limit: 0\nsetting recipient_delimiter: +\nsetting inet_interfaces: all\nsetting inet_protocols: all\n/etc/aliases does not exist, creating it.\nWARNING: /etc/aliases exists, but does not have a root alias.\n\nPostfix is now set up with a default configuration.  If you need to make\nchanges, edit\n/etc/postfix/main.cf (and others) as needed.  To view Postfix configuration\nvalues, see postconf(1).\n\nAfter modifying main.cf, be sure to run '/etc/init.d/postfix reload'.\n\nRunning newaliases\ninvoke-rc.d: could not determine current runlevel\ninvoke-rc.d: policy-rc.d denied execution of restart.\nSetting up bsd-mailx (8.1.2-0.20160123cvs-2) ...\nupdate-alternatives: using /usr/bin/bsd-mailx to provide /usr/bin/mailx (mailx) in auto mode\nSetting up gridengine-common (6.2u5-7.4) ...\n\nCreating config file /etc/default/gridengine with new version\nSetting up gridengine-client (6.2u5-7.4) ...\nSetting up tcsh (6.18.01-5) ...\nupdate-alternatives: using /bin/tcsh to provide /bin/csh (csh) in auto mode\nSetting up gridengine-exec (6.2u5-7.4) ...\ninvoke-rc.d: could not determine current runlevel\ninvoke-rc.d: policy-rc.d denied execution of start.\nSetting up gridengine-master (6.2u5-7.4) ...\nsu: Authentication failure\n(Ignored)\nInitializing cluster with the following parameters:\n => SGE_ROOT: /var/lib/gridengine\n => SGE_CELL: default\n => Spool directory: /var/spool/gridengine/spooldb\n => Initial manager user: sgeadmin\nInitializing spool (/var/spool/gridengine/spooldb)\nInitializing global configuration based on /usr/share/gridengine/default-configuration\nInitializing complexes based on /usr/share/gridengine/centry\nInitializing usersets based on /usr/share/gridengine/usersets\nAdding user sgeadmin as a manager\nCluster creation complete\ninvoke-rc.d: could not determine current runlevel\ninvoke-rc.d: policy-rc.d denied execution of start.\nSetting up ncurses-term (6.0+20160213-1ubuntu1) ...\nSetting up openssh-sftp-server (1:7.2p2-4ubuntu2.8) ...\nSetting up openssh-server (1:7.2p2-4ubuntu2.8) ...\nCreating SSH2 RSA key; this may take some time ...\n2048 SHA256:hfQpES1aS4cjF8AOCIParZR6342vdwutoyITru0wtuE root@master-0.XXX (RSA)\nCreating SSH2 DSA key; this may take some time ...\n1024 SHA256:gOsPMVgwXBHJzixN/gtJAG+hVCHqw8t7Fhy4nsx8od0 root@master-0.XXX (DSA)\nCreating SSH2 ECDSA key; this may take some time ...\n256 SHA256:3D5SNniUb4z+/BuqXheFgG+DfjsxXqTT/zwWAqdX4jM root@master-0.XXX (ECDSA)\nCreating SSH2 ED25519 key; this may take some time ...\n256 SHA256:SwyeV9iSqOW4TKLi4Wvc0zD8lWtupHCJpDu8oWBwbfU root@master-0.XXX (ED25519)\ninvoke-rc.d: could not determine current runlevel\ninvoke-rc.d: policy-rc.d denied execution of start.\nSetting up python3-pkg-resources (20.7.0-1) ...\nSetting up python3-chardet (2.3.0-2) ...\nSetting up python3-six (1.10.0-3) ...\nSetting up python3-urllib3 (1.13.1-2ubuntu0.16.04.3) ...\nSetting up python3-requests (2.9.1-3ubuntu0.1) ...\nSetting up ssh-import-id (5.5-0ubuntu1) ...\nProcessing triggers for libc-bin (2.23-0ubuntu11) ...\nProcessing triggers for systemd (229-4ubuntu21.22) ...\nReading package lists...\nBuilding dependency tree...\nReading state information...\n0 upgraded, 0 newly installed, 0 to remove and 30 not upgraded.\n")),Object(u.b)("p",null,"cat $SGE_CFG_PATH/setcfg.log"),Object(u.b)("pre",null,Object(u.b)("code",{parentName:"pre"},"finish master\nadd worker node worker-0.XXX\n")),Object(u.b)("p",null,"Sample output of worker:"),Object(u.b)("pre",null,Object(u.b)("code",{parentName:"pre"},"please wait\nReading package lists...\nBuilding dependency tree...\nReading state information...\nThe following additional packages will be installed:\n  bsd-mailx cpio gridengine-common ifupdown iproute2 isc-dhcp-client\n  isc-dhcp-common libatm1 libdns-export162 libisc-export160 liblockfile-bin\n  liblockfile1 libmnl0 libxmuu1 libxtables11 ncurses-term netbase\n  openssh-client openssh-server openssh-sftp-server postfix python3-chardet\n  python3-pkg-resources python3-requests python3-six python3-urllib3\n  ssh-import-id ssl-cert tcsh xauth\nSuggested packages:\n  libarchive1 gridengine-qmon ppp rdnssd iproute2-doc resolvconf avahi-autoipd\n  isc-dhcp-client-ddns apparmor ssh-askpass libpam-ssh keychain monkeysphere\n  rssh molly-guard ufw procmail postfix-mysql postfix-pgsql postfix-ldap\n  postfix-pcre sasl2-bin libsasl2-modules dovecot-common postfix-cdb\n  postfix-doc python3-setuptools python3-ndg-httpsclient python3-openssl\n  python3-pyasn1 openssl-blacklist\nThe following NEW packages will be installed:\n  bsd-mailx cpio gridengine-client gridengine-common gridengine-exec ifupdown\n  iproute2 isc-dhcp-client isc-dhcp-common libatm1 libdns-export162\n  libisc-export160 liblockfile-bin liblockfile1 libmnl0 libxmuu1 libxtables11\n  ncurses-term netbase openssh-client openssh-server openssh-sftp-server\n  postfix python3-chardet python3-pkg-resources python3-requests python3-six\n  python3-urllib3 ssh-import-id ssl-cert tcsh xauth\n0 upgraded, 32 newly installed, 0 to remove and 30 not upgraded.\nNeed to get 9633 kB of archives.\nAfter this operation, 51.2 MB of additional disk space will be used.\nGet:1 http://archive.ubuntu.com/ubuntu xenial/main amd64 libatm1 amd64 1:2.5.1-1.5 [24.2 kB]\nGet:2 http://archive.ubuntu.com/ubuntu xenial/main amd64 libmnl0 amd64 1.0.3-5 [12.0 kB]\nGet:3 http://archive.ubuntu.com/ubuntu xenial/main amd64 liblockfile-bin amd64 1.09-6ubuntu1 [10.8 kB]\nGet:4 http://archive.ubuntu.com/ubuntu xenial/main amd64 liblockfile1 amd64 1.09-6ubuntu1 [8056 B]\nGet:5 http://archive.ubuntu.com/ubuntu xenial/main amd64 cpio amd64 2.11+dfsg-5ubuntu1 [74.8 kB]\nGet:6 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 iproute2 amd64 4.3.0-1ubuntu3.16.04.5 [523 kB]\nGet:7 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 ifupdown amd64 0.8.10ubuntu1.4 [54.9 kB]\nGet:8 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libisc-export160 amd64 1:9.10.3.dfsg.P4-8ubuntu1.15 [153 kB]\nGet:9 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libdns-export162 amd64 1:9.10.3.dfsg.P4-8ubuntu1.15 [665 kB]\nGet:10 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 isc-dhcp-client amd64 4.3.3-5ubuntu12.10 [224 kB]\nGet:11 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 isc-dhcp-common amd64 4.3.3-5ubuntu12.10 [105 kB]\nGet:12 http://archive.ubuntu.com/ubuntu xenial/main amd64 libxtables11 amd64 1.6.0-2ubuntu3 [27.2 kB]\nGet:13 http://archive.ubuntu.com/ubuntu xenial/main amd64 netbase all 5.3 [12.9 kB]\nGet:14 http://archive.ubuntu.com/ubuntu xenial/main amd64 libxmuu1 amd64 2:1.1.2-2 [9674 B]\nGet:15 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 openssh-client amd64 1:7.2p2-4ubuntu2.8 [590 kB]\nGet:16 http://archive.ubuntu.com/ubuntu xenial/main amd64 xauth amd64 1:1.0.9-1ubuntu2 [22.7 kB]\nGet:17 http://archive.ubuntu.com/ubuntu xenial/main amd64 ssl-cert all 1.0.37 [16.9 kB]\nGet:18 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 postfix amd64 3.1.0-3ubuntu0.3 [1152 kB]\nGet:19 http://archive.ubuntu.com/ubuntu xenial/main amd64 bsd-mailx amd64 8.1.2-0.20160123cvs-2 [63.7 kB]\nGet:20 http://archive.ubuntu.com/ubuntu xenial/universe amd64 gridengine-common all 6.2u5-7.4 [156 kB]\nGet:21 http://archive.ubuntu.com/ubuntu xenial/universe amd64 gridengine-client amd64 6.2u5-7.4 [3394 kB]\nGet:22 http://archive.ubuntu.com/ubuntu xenial/universe amd64 tcsh amd64 6.18.01-5 [410 kB]\nGet:23 http://archive.ubuntu.com/ubuntu xenial/universe amd64 gridengine-exec amd64 6.2u5-7.4 [990 kB]\nGet:24 http://archive.ubuntu.com/ubuntu xenial/main amd64 ncurses-term all 6.0+20160213-1ubuntu1 [249 kB]\nGet:25 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 openssh-sftp-server amd64 1:7.2p2-4ubuntu2.8 [38.9 kB]\nGet:26 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 openssh-server amd64 1:7.2p2-4ubuntu2.8 [335 kB]\nGet:27 http://archive.ubuntu.com/ubuntu xenial/main amd64 python3-pkg-resources all 20.7.0-1 [79.0 kB]\nGet:28 http://archive.ubuntu.com/ubuntu xenial/main amd64 python3-chardet all 2.3.0-2 [96.2 kB]\nGet:29 http://archive.ubuntu.com/ubuntu xenial/main amd64 python3-six all 1.10.0-3 [11.0 kB]\nGet:30 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 python3-urllib3 all 1.13.1-2ubuntu0.16.04.3 [58.5 kB]\nGet:31 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 python3-requests all 2.9.1-3ubuntu0.1 [55.8 kB]\nGet:32 http://archive.ubuntu.com/ubuntu xenial/main amd64 ssh-import-id all 5.5-0ubuntu1 [10.2 kB]\nFetched 9633 kB in 2s (4496 kB/s)\nSelecting previously unselected package libatm1:amd64.\n(Reading database ...\n(Reading database ... 5%\n(Reading database ... 10%\n(Reading database ... 15%\n(Reading database ... 20%\n(Reading database ... 25%\n(Reading database ... 30%\n(Reading database ... 35%\n(Reading database ... 40%\n(Reading database ... 45%\n(Reading database ... 50%\n(Reading database ... 55%\n(Reading database ... 60%\n(Reading database ... 65%\n(Reading database ... 70%\n(Reading database ... 75%\n(Reading database ... 80%\n(Reading database ... 85%\n(Reading database ... 90%\n(Reading database ... 95%\n(Reading database ... 100%\n(Reading database ... 21398 files and directories currently installed.)\nPreparing to unpack .../libatm1_1%3a2.5.1-1.5_amd64.deb ...\nUnpacking libatm1:amd64 (1:2.5.1-1.5) ...\nSelecting previously unselected package libmnl0:amd64.\nPreparing to unpack .../libmnl0_1.0.3-5_amd64.deb ...\nUnpacking libmnl0:amd64 (1.0.3-5) ...\nSelecting previously unselected package liblockfile-bin.\nPreparing to unpack .../liblockfile-bin_1.09-6ubuntu1_amd64.deb ...\nUnpacking liblockfile-bin (1.09-6ubuntu1) ...\nSelecting previously unselected package liblockfile1:amd64.\nPreparing to unpack .../liblockfile1_1.09-6ubuntu1_amd64.deb ...\nUnpacking liblockfile1:amd64 (1.09-6ubuntu1) ...\nSelecting previously unselected package cpio.\nPreparing to unpack .../cpio_2.11+dfsg-5ubuntu1_amd64.deb ...\nUnpacking cpio (2.11+dfsg-5ubuntu1) ...\nSelecting previously unselected package iproute2.\nPreparing to unpack .../iproute2_4.3.0-1ubuntu3.16.04.5_amd64.deb ...\nUnpacking iproute2 (4.3.0-1ubuntu3.16.04.5) ...\nSelecting previously unselected package ifupdown.\nPreparing to unpack .../ifupdown_0.8.10ubuntu1.4_amd64.deb ...\nUnpacking ifupdown (0.8.10ubuntu1.4) ...\nSelecting previously unselected package libisc-export160.\nPreparing to unpack .../libisc-export160_1%3a9.10.3.dfsg.P4-8ubuntu1.15_amd64.deb ...\nUnpacking libisc-export160 (1:9.10.3.dfsg.P4-8ubuntu1.15) ...\nSelecting previously unselected package libdns-export162.\nPreparing to unpack .../libdns-export162_1%3a9.10.3.dfsg.P4-8ubuntu1.15_amd64.deb ...\nUnpacking libdns-export162 (1:9.10.3.dfsg.P4-8ubuntu1.15) ...\nSelecting previously unselected package isc-dhcp-client.\nPreparing to unpack .../isc-dhcp-client_4.3.3-5ubuntu12.10_amd64.deb ...\nUnpacking isc-dhcp-client (4.3.3-5ubuntu12.10) ...\nSelecting previously unselected package isc-dhcp-common.\nPreparing to unpack .../isc-dhcp-common_4.3.3-5ubuntu12.10_amd64.deb ...\nUnpacking isc-dhcp-common (4.3.3-5ubuntu12.10) ...\nSelecting previously unselected package libxtables11:amd64.\nPreparing to unpack .../libxtables11_1.6.0-2ubuntu3_amd64.deb ...\nUnpacking libxtables11:amd64 (1.6.0-2ubuntu3) ...\nSelecting previously unselected package netbase.\nPreparing to unpack .../archives/netbase_5.3_all.deb ...\nUnpacking netbase (5.3) ...\nSelecting previously unselected package libxmuu1:amd64.\nPreparing to unpack .../libxmuu1_2%3a1.1.2-2_amd64.deb ...\nUnpacking libxmuu1:amd64 (2:1.1.2-2) ...\nSelecting previously unselected package openssh-client.\nPreparing to unpack .../openssh-client_1%3a7.2p2-4ubuntu2.8_amd64.deb ...\nUnpacking openssh-client (1:7.2p2-4ubuntu2.8) ...\nSelecting previously unselected package xauth.\nPreparing to unpack .../xauth_1%3a1.0.9-1ubuntu2_amd64.deb ...\nUnpacking xauth (1:1.0.9-1ubuntu2) ...\nSelecting previously unselected package ssl-cert.\nPreparing to unpack .../ssl-cert_1.0.37_all.deb ...\nUnpacking ssl-cert (1.0.37) ...\nSelecting previously unselected package postfix.\nPreparing to unpack .../postfix_3.1.0-3ubuntu0.3_amd64.deb ...\nUnpacking postfix (3.1.0-3ubuntu0.3) ...\nSelecting previously unselected package bsd-mailx.\nPreparing to unpack .../bsd-mailx_8.1.2-0.20160123cvs-2_amd64.deb ...\nUnpacking bsd-mailx (8.1.2-0.20160123cvs-2) ...\nSelecting previously unselected package gridengine-common.\nPreparing to unpack .../gridengine-common_6.2u5-7.4_all.deb ...\nUnpacking gridengine-common (6.2u5-7.4) ...\nSelecting previously unselected package gridengine-client.\nPreparing to unpack .../gridengine-client_6.2u5-7.4_amd64.deb ...\nUnpacking gridengine-client (6.2u5-7.4) ...\nSelecting previously unselected package tcsh.\nPreparing to unpack .../tcsh_6.18.01-5_amd64.deb ...\nUnpacking tcsh (6.18.01-5) ...\nSelecting previously unselected package gridengine-exec.\nPreparing to unpack .../gridengine-exec_6.2u5-7.4_amd64.deb ...\nUnpacking gridengine-exec (6.2u5-7.4) ...\nSelecting previously unselected package ncurses-term.\nPreparing to unpack .../ncurses-term_6.0+20160213-1ubuntu1_all.deb ...\nUnpacking ncurses-term (6.0+20160213-1ubuntu1) ...\nSelecting previously unselected package openssh-sftp-server.\nPreparing to unpack .../openssh-sftp-server_1%3a7.2p2-4ubuntu2.8_amd64.deb ...\nUnpacking openssh-sftp-server (1:7.2p2-4ubuntu2.8) ...\nSelecting previously unselected package openssh-server.\nPreparing to unpack .../openssh-server_1%3a7.2p2-4ubuntu2.8_amd64.deb ...\nUnpacking openssh-server (1:7.2p2-4ubuntu2.8) ...\nSelecting previously unselected package python3-pkg-resources.\nPreparing to unpack .../python3-pkg-resources_20.7.0-1_all.deb ...\nUnpacking python3-pkg-resources (20.7.0-1) ...\nSelecting previously unselected package python3-chardet.\nPreparing to unpack .../python3-chardet_2.3.0-2_all.deb ...\nUnpacking python3-chardet (2.3.0-2) ...\nSelecting previously unselected package python3-six.\nPreparing to unpack .../python3-six_1.10.0-3_all.deb ...\nUnpacking python3-six (1.10.0-3) ...\nSelecting previously unselected package python3-urllib3.\nPreparing to unpack .../python3-urllib3_1.13.1-2ubuntu0.16.04.3_all.deb ...\nUnpacking python3-urllib3 (1.13.1-2ubuntu0.16.04.3) ...\nSelecting previously unselected package python3-requests.\nPreparing to unpack .../python3-requests_2.9.1-3ubuntu0.1_all.deb ...\nUnpacking python3-requests (2.9.1-3ubuntu0.1) ...\nSelecting previously unselected package ssh-import-id.\nPreparing to unpack .../ssh-import-id_5.5-0ubuntu1_all.deb ...\nUnpacking ssh-import-id (5.5-0ubuntu1) ...\nProcessing triggers for systemd (229-4ubuntu21.22) ...\nProcessing triggers for libc-bin (2.23-0ubuntu11) ...\nSetting up libatm1:amd64 (1:2.5.1-1.5) ...\nSetting up libmnl0:amd64 (1.0.3-5) ...\nSetting up liblockfile-bin (1.09-6ubuntu1) ...\nSetting up liblockfile1:amd64 (1.09-6ubuntu1) ...\nSetting up cpio (2.11+dfsg-5ubuntu1) ...\nupdate-alternatives: using /bin/mt-gnu to provide /bin/mt (mt) in auto mode\nSetting up iproute2 (4.3.0-1ubuntu3.16.04.5) ...\nSetting up ifupdown (0.8.10ubuntu1.4) ...\nCreating /etc/network/interfaces.\nSetting up libisc-export160 (1:9.10.3.dfsg.P4-8ubuntu1.15) ...\nSetting up libdns-export162 (1:9.10.3.dfsg.P4-8ubuntu1.15) ...\nSetting up isc-dhcp-client (4.3.3-5ubuntu12.10) ...\nSetting up isc-dhcp-common (4.3.3-5ubuntu12.10) ...\nSetting up libxtables11:amd64 (1.6.0-2ubuntu3) ...\nSetting up netbase (5.3) ...\nSetting up libxmuu1:amd64 (2:1.1.2-2) ...\nSetting up openssh-client (1:7.2p2-4ubuntu2.8) ...\nSetting up xauth (1:1.0.9-1ubuntu2) ...\nSetting up ssl-cert (1.0.37) ...\nSetting up postfix (3.1.0-3ubuntu0.3) ...\nCreating /etc/postfix/dynamicmaps.cf\nsetting myhostname: worker-0.XXX\nsetting alias maps\nsetting alias database\nchanging /etc/mailname to worker-0.XXX\nsetting myorigin\nsetting destinations: $myhostname, worker-0.XXX, localhost.XXX, , localhost\nsetting relayhost:\nsetting mynetworks: 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128\nsetting mailbox_size_limit: 0\nsetting recipient_delimiter: +\nsetting inet_interfaces: all\nsetting inet_protocols: all\n/etc/aliases does not exist, creating it.\nWARNING: /etc/aliases exists, but does not have a root alias.\n\nPostfix is now set up with a default configuration.  If you need to make\nchanges, edit\n/etc/postfix/main.cf (and others) as needed.  To view Postfix configuration\nvalues, see postconf(1).\n\nAfter modifying main.cf, be sure to run '/etc/init.d/postfix reload'.\n\nRunning newaliases\ninvoke-rc.d: could not determine current runlevel\ninvoke-rc.d: policy-rc.d denied execution of restart.\nSetting up bsd-mailx (8.1.2-0.20160123cvs-2) ...\nupdate-alternatives: using /usr/bin/bsd-mailx to provide /usr/bin/mailx (mailx) in auto mode\nSetting up gridengine-common (6.2u5-7.4) ...\n\nCreating config file /etc/default/gridengine with new version\nSetting up gridengine-client (6.2u5-7.4) ...\nSetting up tcsh (6.18.01-5) ...\nupdate-alternatives: using /bin/tcsh to provide /bin/csh (csh) in auto mode\nSetting up gridengine-exec (6.2u5-7.4) ...\ninvoke-rc.d: could not determine current runlevel\ninvoke-rc.d: policy-rc.d denied execution of start.\nSetting up ncurses-term (6.0+20160213-1ubuntu1) ...\nSetting up openssh-sftp-server (1:7.2p2-4ubuntu2.8) ...\nSetting up openssh-server (1:7.2p2-4ubuntu2.8) ...\nCreating SSH2 RSA key; this may take some time ...\n2048 SHA256:ok/TxzwtF5W8I55sDxrt4Agy4fuWn39BiSovvDObhVE root@worker-0.XXX (RSA)\nCreating SSH2 DSA key; this may take some time ...\n1024 SHA256:4y48kVYt3mS3q1KgZzEoYMnS/2d/tA8TJUK5uNSaxZY root@worker-0.XXX (DSA)\nCreating SSH2 ECDSA key; this may take some time ...\n256 SHA256:4D7zm4cD2IbDnHoXnzcIo3FISbvOW8eOstGBNf1/bvo root@worker-0.XXX (ECDSA)\nCreating SSH2 ED25519 key; this may take some time ...\n256 SHA256:/HrA3xiZiH5CZkXwtcfE6GwcMM+hEhZzTdFHxj4PzDg root@worker-0.XXX (ED25519)\ninvoke-rc.d: could not determine current runlevel\ninvoke-rc.d: policy-rc.d denied execution of start.\nSetting up python3-pkg-resources (20.7.0-1) ...\nSetting up python3-chardet (2.3.0-2) ...\nSetting up python3-six (1.10.0-3) ...\nSetting up python3-urllib3 (1.13.1-2ubuntu0.16.04.3) ...\nSetting up python3-requests (2.9.1-3ubuntu0.1) ...\nSetting up ssh-import-id (5.5-0ubuntu1) ...\nProcessing triggers for libc-bin (2.23-0ubuntu11) ...\nProcessing triggers for systemd (229-4ubuntu21.22) ...\nReading package lists...\nBuilding dependency tree...\nReading state information...\n0 upgraded, 0 newly installed, 0 to remove and 30 not upgraded.\n")),Object(u.b)("p",null,"cat $SGE_CFG_PATH/setcfg.log"),Object(u.b)("pre",null,Object(u.b)("code",{parentName:"pre"},"please wait\nStart SGE for worker is finished\ndone for worker-0.XXX worker.\n")),Object(u.b)("p",null,"Sample output of sge:\n",Object(u.b)("img",{alt:"alt text",src:t(249).default,title:"SGE for multiple jobs"})),Object(u.b)("p",null,Object(u.b)("img",{alt:"alt text",src:t(250).default,title:"SGE for user multiple jobs"})))}p.isMDXComponent=!0},209:function(e,n,t){"use strict";t.d(n,"a",(function(){return l})),t.d(n,"b",(function(){return g}));var i=t(0),a=t.n(i);function u(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 i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}function r(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){u(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 c(e,n){if(null==e)return{};var t,i,a=function(e,n){if(null==e)return{};var t,i,a={},u=Object.keys(e);for(i=0;i<u.length;i++)t=u[i],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(i=0;i<u.length;i++)t=u[i],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var o=a.a.createContext({}),p=function(e){var n=a.a.useContext(o),t=n;return e&&(t="function"==typeof e?e(n):r(r({},n),e)),t},l=function(e){var n=p(e.components);return a.a.createElement(o.Provider,{value:n},e.children)},d={inlineCode:"code",wrapper:function(e){var n=e.children;return a.a.createElement(a.a.Fragment,{},n)}},b=a.a.forwardRef((function(e,n){var t=e.components,i=e.mdxType,u=e.originalType,s=e.parentName,o=c(e,["components","mdxType","originalType","parentName"]),l=p(t),b=i,g=l["".concat(s,".").concat(b)]||l[b]||d[b]||u;return t?a.a.createElement(g,r(r({ref:n},o),{},{components:t})):a.a.createElement(g,r({ref:n},o))}));function g(e,n){var t=arguments,i=n&&n.mdxType;if("string"==typeof e||i){var u=t.length,s=new Array(u);s[0]=b;var r={};for(var c in n)hasOwnProperty.call(n,c)&&(r[c]=n[c]);r.originalType=e,r.mdxType="string"==typeof e?e:i,s[1]=r;for(var o=2;o<u;o++)s[o]=t[o];return a.a.createElement.apply(null,s)}return a.a.createElement.apply(null,t)}b.displayName="MDXCreateElement"},249:function(e,n,t){"use strict";t.r(n),n.default=t.p+"assets/images/sge_cluster-b9ac6485a770b5f8a031b29f6f430810.png"},250:function(e,n,t){"use strict";t.r(n),n.default=t.p+"assets/images/sge_stat-29ad9dfe485895eb54eea5baad709e15.png"}}]);
\ No newline at end of file
diff --git a/6df4a83b.3b9e8ced.js b/6df4a83b.f13acfb7.js
similarity index 95%
rename from 6df4a83b.3b9e8ced.js
rename to 6df4a83b.f13acfb7.js
index 1846268..40da90d 100644
--- a/6df4a83b.3b9e8ced.js
+++ b/6df4a83b.f13acfb7.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[57],{124:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return o})),n.d(t,"metadata",(function(){return c})),n.d(t,"toc",(function(){return s})),n.d(t,"default",(function(){return p}));var r=n(3),i=n(7),a=(n(0),n(209)),o={title:"Security Implementation"},c={unversionedId:"designDocs/wip-designs/security-implementation",id:"designDocs/wip-designs/security-implementation",isDocsHomePage:!1,title:"Security Implementation",description:"\x3c!--",source:"@site/docs/designDocs/wip-designs/security-implementation.md",slug:"/designDocs/wip-designs/security-implementation",permalink:"/docs/next/designDocs/wip-designs/security-implementation",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/designDocs/wip-designs/security-implementation.md",version:"current",sidebar:"docs",previous:{title:"Cluster Server Design - High-Availability",permalink:"/docs/next/designDocs/wip-designs/submarine-clusterServer"}},s=[{value:"Handle User&#39;s Credential",id:"handle-users-credential",children:[]}],l={toc:s};function p(e){var t=e.components,n=Object(i.a)(e,["components"]);return Object(a.b)("wrapper",Object(r.a)({},l,n,{components:t,mdxType:"MDXLayout"}),Object(a.b)("div",{className:"admonition admonition-warning alert alert--danger"},Object(a.b)("div",{parentName:"div",className:"admonition-heading"},Object(a.b)("h5",{parentName:"div"},Object(a.b)("span",{parentName:"h5",className:"admonition-icon"},Object(a.b)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},Object(a.b)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"warning")),Object(a.b)("div",{parentName:"div",className:"admonition-content"},Object(a.b)("p",{parentName:"div"},"Please note that this design doc is working-in-progress and need more works to complete. "))),Object(a.b)("h2",{id:"handle-users-credential"},"Handle User's Credential"),Object(a.b)("p",null,"Users credential includes Kerberoes Keytabs, Docker registry credentials, Github ssh-keys, etc."),Object(a.b)("p",null,"User's credential must be stored securitely, for example, via KeyCloak or K8s Secrets."),Object(a.b)("p",null,"(More details TODO)"))}p.isMDXComponent=!0},209:function(e,t,n){"use strict";n.d(t,"a",(function(){return d})),n.d(t,"b",(function(){return b}));var r=n(0),i=n.n(r);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function c(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n,r,i={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var l=i.a.createContext({}),p=function(e){var t=i.a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):c(c({},t),e)),n},d=function(e){var t=p(e.components);return i.a.createElement(l.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return i.a.createElement(i.a.Fragment,{},t)}},m=i.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,o=e.parentName,l=s(e,["components","mdxType","originalType","parentName"]),d=p(n),m=r,b=d["".concat(o,".").concat(m)]||d[m]||u[m]||a;return n?i.a.createElement(b,c(c({ref:t},l),{},{components:n})):i.a.createElement(b,c({ref:t},l))}));function b(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,o=new Array(a);o[0]=m;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c.mdxType="string"==typeof e?e:r,o[1]=c;for(var l=2;l<a;l++)o[l]=n[l];return i.a.createElement.apply(null,o)}return i.a.createElement.apply(null,n)}m.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[50],{117:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return o})),n.d(t,"metadata",(function(){return c})),n.d(t,"toc",(function(){return s})),n.d(t,"default",(function(){return p}));var r=n(3),i=n(7),a=(n(0),n(194)),o={title:"Security Implementation"},c={unversionedId:"designDocs/wip-designs/security-implementation",id:"designDocs/wip-designs/security-implementation",isDocsHomePage:!1,title:"Security Implementation",description:"\x3c!--",source:"@site/docs/designDocs/wip-designs/security-implementation.md",slug:"/designDocs/wip-designs/security-implementation",permalink:"/docs/next/designDocs/wip-designs/security-implementation",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/designDocs/wip-designs/security-implementation.md",version:"current",sidebar:"docs",previous:{title:"Cluster Server Design - High-Availability",permalink:"/docs/next/designDocs/wip-designs/submarine-clusterServer"}},s=[{value:"Handle User&#39;s Credential",id:"handle-users-credential",children:[]}],l={toc:s};function p(e){var t=e.components,n=Object(i.a)(e,["components"]);return Object(a.b)("wrapper",Object(r.a)({},l,n,{components:t,mdxType:"MDXLayout"}),Object(a.b)("div",{className:"admonition admonition-warning alert alert--danger"},Object(a.b)("div",{parentName:"div",className:"admonition-heading"},Object(a.b)("h5",{parentName:"div"},Object(a.b)("span",{parentName:"h5",className:"admonition-icon"},Object(a.b)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},Object(a.b)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"warning")),Object(a.b)("div",{parentName:"div",className:"admonition-content"},Object(a.b)("p",{parentName:"div"},"Please note that this design doc is working-in-progress and need more works to complete. "))),Object(a.b)("h2",{id:"handle-users-credential"},"Handle User's Credential"),Object(a.b)("p",null,"Users credential includes Kerberoes Keytabs, Docker registry credentials, Github ssh-keys, etc."),Object(a.b)("p",null,"User's credential must be stored securitely, for example, via KeyCloak or K8s Secrets."),Object(a.b)("p",null,"(More details TODO)"))}p.isMDXComponent=!0},194:function(e,t,n){"use strict";n.d(t,"a",(function(){return d})),n.d(t,"b",(function(){return b}));var r=n(0),i=n.n(r);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function c(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n,r,i={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var l=i.a.createContext({}),p=function(e){var t=i.a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):c(c({},t),e)),n},d=function(e){var t=p(e.components);return i.a.createElement(l.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return i.a.createElement(i.a.Fragment,{},t)}},m=i.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,o=e.parentName,l=s(e,["components","mdxType","originalType","parentName"]),d=p(n),m=r,b=d["".concat(o,".").concat(m)]||d[m]||u[m]||a;return n?i.a.createElement(b,c(c({ref:t},l),{},{components:n})):i.a.createElement(b,c({ref:t},l))}));function b(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,o=new Array(a);o[0]=m;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c.mdxType="string"==typeof e?e:r,o[1]=c;for(var l=2;l<a;l++)o[l]=n[l];return i.a.createElement.apply(null,o)}return i.a.createElement.apply(null,n)}m.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/6e852da3.f08b6255.js b/6e852da3.f63caf76.js
similarity index 98%
rename from 6e852da3.f08b6255.js
rename to 6e852da3.f63caf76.js
index 7a48144..aeecf1f 100644
--- a/6e852da3.f08b6255.js
+++ b/6e852da3.f63caf76.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[58],{125:function(e,t,a){"use strict";a.r(t),a.d(t,"frontMatter",(function(){return c})),a.d(t,"metadata",(function(){return o})),a.d(t,"toc",(function(){return s})),a.d(t,"default",(function(){return u}));var n=a(3),r=a(7),i=(a(0),a(209)),c={title:"How to Verify"},o={unversionedId:"devDocs/HowToVerify",id:"devDocs/HowToVerify",isDocsHomePage:!1,title:"How to Verify",description:"\x3c!--",source:"@site/docs/devDocs/HowToVerify.md",slug:"/devDocs/HowToVerify",permalink:"/docs/next/devDocs/HowToVerify",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/devDocs/HowToVerify.md",version:"current",sidebar:"docs",previous:{title:"How to Release",permalink:"/docs/next/devDocs/HowToRelease"},next:{title:"Apache Submarine Community",permalink:"/docs/next/community/README"}},s=[{value:"Verification of the release candidate",id:"verification-of-the-release-candidate",children:[]},{value:"1. Download the candidate version to be released to the local environment",id:"1-download-the-candidate-version-to-be-released-to-the-local-environment",children:[]},{value:"2. Verify whether the uploaded version is compliant",id:"2-verify-whether-the-uploaded-version-is-compliant",children:[{value:"2.1 Check if the release package is complete",id:"21-check-if-the-release-package-is-complete",children:[]},{value:"2.2 Check gpg signature",id:"22-check-gpg-signature",children:[]},{value:"2.3 Check sha512 hash",id:"23-check-sha512-hash",children:[]},{value:"2.4. Check the file content of the source package.",id:"24-check-the-file-content-of-the-source-package",children:[]},{value:"2.5 Check the binary package (if the binary package is uploaded)",id:"25-check-the-binary-package-if-the-binary-package-is-uploaded",children:[]}]}],l={toc:s};function u(e){var t=e.components,a=Object(r.a)(e,["components"]);return Object(i.b)("wrapper",Object(n.a)({},l,a,{components:t,mdxType:"MDXLayout"}),Object(i.b)("h3",{id:"verification-of-the-release-candidate"},"Verification of the release candidate"),Object(i.b)("h2",{id:"1-download-the-candidate-version-to-be-released-to-the-local-environment"},"1. Download the candidate version to be released to the local environment"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-shell"},"svn co https://dist.apache.org/repos/dist/dev/submarine/${release_version}-${rc_version}/\n")),Object(i.b)("h2",{id:"2-verify-whether-the-uploaded-version-is-compliant"},"2. Verify whether the uploaded version is compliant"),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},"Begin the verification process, which includes but is not limited to the following content and forms.")),Object(i.b)("h3",{id:"21-check-if-the-release-package-is-complete"},"2.1 Check if the release package is complete"),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},"The package uploaded to dist must include the source code package, and the binary package is optional.")),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},"Whether it includes the source code package."),Object(i.b)("li",{parentName:"ol"},"Whether it includes the signature of the source code package."),Object(i.b)("li",{parentName:"ol"},"Whether it includes the sha512 of the source code package."),Object(i.b)("li",{parentName:"ol"},"If the binary package is uploaded, also check the contents listed in (2)-(4).")),Object(i.b)("h3",{id:"22-check-gpg-signature"},"2.2 Check gpg signature"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Import the public key")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-shell"},"curl https://dist.apache.org/repos/dist/dev/submarine/KEYS > KEYS # Download KEYS\ngpg --import KEYS # Import KEYS to local\n")),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Trust the public key",Object(i.b)("blockquote",{parentName:"li"},Object(i.b)("p",{parentName:"blockquote"},"Trust the KEY used in this version.")))),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"  gpg --edit-key xxxxxxxxxx # The KEY used in this version\n  gpg (GnuPG) 2.2.21; Copyright (C) 2020 Free Software Foundation, Inc.\n  This is free software: you are free to change and redistribute it.\n  There is NO WARRANTY, to the extent permitted by law.\n\n  Secret key is available.\n\n  sec  rsa4096/5EF3A66D57EC647A\n       created: 2020-05-19  expires: never       usage: SC\n       trust: ultimate      validity: ultimate\n  ssb  rsa4096/17628566FEED6AF7\n       created: 2020-05-19  expires: never       usage: E\n  [ultimate] (1). XXX YYYZZZ <yourAccount@apache.org>\n\n  gpg> trust\n  sec  rsa4096/5EF3A66D57EC647A\n       created: 2020-05-19  expires: never       usage: SC\n       trust: ultimate      validity: ultimate\n  ssb  rsa4096/17628566FEED6AF7\n       created: 2020-05-19  expires: never       usage: E\n  [ultimate] (1). XXX YYYZZZ <yourAccount@apache.org>\n\n  Please decide how far you trust this user to correctly verify other users' keys\n  (by looking at passports, checking fingerprints from different sources, etc.)\n\n    1 = I don't know or won't say\n    2 = I do NOT trust\n    3 = I trust marginally\n    4 = I trust fully\n    5 = I trust ultimately\n    m = back to the main menu\n\n  Your decision? 5 #choose 5\n  Do you really want to set this key to ultimate trust? (y/N) y # choose y\n\n  sec  rsa4096/5EF3A66D57EC647A\n       created: 2020-05-19  expires: never       usage: SC\n       trust: ultimate      validity: ultimate\n  ssb  rsa4096/17628566FEED6AF7\n       created: 2020-05-19  expires: never       usage: E\n  [ultimate] (1). XXX YYYZZZ <yourAccount@apache.org>\n\n  gpg>\n\n  sec  rsa4096/5EF3A66D57EC647A\n       created: 2020-05-19  expires: never       usage: SC\n       trust: ultimate      validity: ultimate\n  ssb  rsa4096/17628566FEED6AF7\n       created: 2020-05-19  expires: never       usage: E\n  [ultimate] (1). XXX YYYZZZ <yourAccount@apache.org>\n")),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Use the following command to check the signature.")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-shell"},"for i in *.tar.gz; do echo $i; gpg --verify $i.asc $i ; done\n#Or\ngpg --verify apache-submarine-${release_version}-src.tar.gz.asc apache-submarine-${release_version}-src.tar.gz\n# If you upload a binary package, you also need to check whether the signature of the binary package is correct.\ngpg --verify apache-submarine-server-${release_version}-bin.tar.gz.asc apache-submarine-server-${release_version}-bin.tar.gz\ngpg --verify apache-submarine-client-${release_version}-bin.tar.gz.asc apache-submarine-client-${release_version}-bin.tar.gz\n")),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Check the result",Object(i.b)("blockquote",{parentName:"li"},Object(i.b)("p",{parentName:"blockquote"},"If something like the following appears, it means that the signature is correct. The keyword\uff1a",Object(i.b)("strong",{parentName:"p"},Object(i.b)("inlineCode",{parentName:"strong"},"Good signature")))))),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-shell"},'apache-submarine-${release_version}-src.tar.gz\ngpg: Signature made Sat May 30 11:45:01 2020 CST\ngpg:                using RSA key 9B12C2228BDFF4F4CFE849445EF3A66D57EC647A\ngpg: Good signature from "XXX YYYZZZ <yourAccount@apache.org>" [ultimate]gular2\n')),Object(i.b)("h3",{id:"23-check-sha512-hash"},"2.3 Check sha512 hash"),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},"After calculating the sha512 hash locally, verify whether it is consistent with the one on dist.")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-shell"},"for i in *.tar.gz; do echo $i; gpg --print-md SHA512 $i; done\n#Or\ngpg --print-md SHA512 apache-submarine-${release_version}-src.tar.gz\n# If you upload a binary package, you also need to check the sha512 hash of the binary package.\ngpg --print-md SHA512 apache-submarine-server-${release_version}-bin.tar.gz\ngpg --print-md SHA512 apache-submarine-client-${release_version}-bin.tar.gz\n# \u6216\u8005\nfor i in *.tar.gz.sha512; do echo $i; sha512sum -c $i; done\n")),Object(i.b)("h3",{id:"24-check-the-file-content-of-the-source-package"},"2.4. Check the file content of the source package."),Object(i.b)("p",null,"Unzip ",Object(i.b)("inlineCode",{parentName:"p"},"apache-submarine-${release_version}-src.tar.gz")," and check as follows:"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Whether the DISCLAIMER file exists and whether the content is correct."),Object(i.b)("li",{parentName:"ul"},"Whether the LICENSE and NOTICE file exists and whether the content is correct."),Object(i.b)("li",{parentName:"ul"},"Whether all files have ASF License header."),Object(i.b)("li",{parentName:"ul"},"Whether the source code can be compiled normally."),Object(i.b)("li",{parentName:"ul"},"Whether the single test is passed."),Object(i.b)("li",{parentName:"ul"},"....")),Object(i.b)("h3",{id:"25-check-the-binary-package-if-the-binary-package-is-uploaded"},"2.5 Check the binary package (if the binary package is uploaded)"),Object(i.b)("p",null,"Unzip ",Object(i.b)("inlineCode",{parentName:"p"},"apache-submarine-client-${release_version}-src.tar.gz")," and ",Object(i.b)("inlineCode",{parentName:"p"}," apache-submarine-server-${release_version}-src.tar.gz"),", then check as follows:"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Whether the DISCLAIMER file exists and whether the content is correct."),Object(i.b)("li",{parentName:"ul"},"Whether the LICENSE and the NOTICE file exists and whether the content is correct."),Object(i.b)("li",{parentName:"ul"},"Whether the deployment is successful."),Object(i.b)("li",{parentName:"ul"},"Deploy a test environment to verify whether production and consumption can run normally."),Object(i.b)("li",{parentName:"ul"},"Verify what you think might go wrong.")))}u.isMDXComponent=!0},209:function(e,t,a){"use strict";a.d(t,"a",(function(){return h})),a.d(t,"b",(function(){return d}));var n=a(0),r=a.n(n);function i(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function c(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?c(Object(a),!0).forEach((function(t){i(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):c(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function s(e,t){if(null==e)return{};var a,n,r=function(e,t){if(null==e)return{};var a,n,r={},i=Object.keys(e);for(n=0;n<i.length;n++)a=i[n],t.indexOf(a)>=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)a=i[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var l=r.a.createContext({}),u=function(e){var t=r.a.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},h=function(e){var t=u(e.components);return r.a.createElement(l.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},b=r.a.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,c=e.parentName,l=s(e,["components","mdxType","originalType","parentName"]),h=u(a),b=n,d=h["".concat(c,".").concat(b)]||h[b]||p[b]||i;return a?r.a.createElement(d,o(o({ref:t},l),{},{components:a})):r.a.createElement(d,o({ref:t},l))}));function d(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,c=new Array(i);c[0]=b;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o.mdxType="string"==typeof e?e:n,c[1]=o;for(var l=2;l<i;l++)c[l]=a[l];return r.a.createElement.apply(null,c)}return r.a.createElement.apply(null,a)}b.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[51],{118:function(e,t,a){"use strict";a.r(t),a.d(t,"frontMatter",(function(){return c})),a.d(t,"metadata",(function(){return o})),a.d(t,"toc",(function(){return s})),a.d(t,"default",(function(){return u}));var n=a(3),r=a(7),i=(a(0),a(194)),c={title:"How to Verify"},o={unversionedId:"devDocs/HowToVerify",id:"devDocs/HowToVerify",isDocsHomePage:!1,title:"How to Verify",description:"\x3c!--",source:"@site/docs/devDocs/HowToVerify.md",slug:"/devDocs/HowToVerify",permalink:"/docs/next/devDocs/HowToVerify",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/devDocs/HowToVerify.md",version:"current",sidebar:"docs",previous:{title:"How to Release",permalink:"/docs/next/devDocs/HowToRelease"},next:{title:"Apache Submarine Community",permalink:"/docs/next/community/README"}},s=[{value:"Verification of the release candidate",id:"verification-of-the-release-candidate",children:[]},{value:"1. Download the candidate version to be released to the local environment",id:"1-download-the-candidate-version-to-be-released-to-the-local-environment",children:[]},{value:"2. Verify whether the uploaded version is compliant",id:"2-verify-whether-the-uploaded-version-is-compliant",children:[{value:"2.1 Check if the release package is complete",id:"21-check-if-the-release-package-is-complete",children:[]},{value:"2.2 Check gpg signature",id:"22-check-gpg-signature",children:[]},{value:"2.3 Check sha512 hash",id:"23-check-sha512-hash",children:[]},{value:"2.4. Check the file content of the source package.",id:"24-check-the-file-content-of-the-source-package",children:[]},{value:"2.5 Check the binary package (if the binary package is uploaded)",id:"25-check-the-binary-package-if-the-binary-package-is-uploaded",children:[]}]}],l={toc:s};function u(e){var t=e.components,a=Object(r.a)(e,["components"]);return Object(i.b)("wrapper",Object(n.a)({},l,a,{components:t,mdxType:"MDXLayout"}),Object(i.b)("h3",{id:"verification-of-the-release-candidate"},"Verification of the release candidate"),Object(i.b)("h2",{id:"1-download-the-candidate-version-to-be-released-to-the-local-environment"},"1. Download the candidate version to be released to the local environment"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-shell"},"svn co https://dist.apache.org/repos/dist/dev/submarine/${release_version}-${rc_version}/\n")),Object(i.b)("h2",{id:"2-verify-whether-the-uploaded-version-is-compliant"},"2. Verify whether the uploaded version is compliant"),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},"Begin the verification process, which includes but is not limited to the following content and forms.")),Object(i.b)("h3",{id:"21-check-if-the-release-package-is-complete"},"2.1 Check if the release package is complete"),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},"The package uploaded to dist must include the source code package, and the binary package is optional.")),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},"Whether it includes the source code package."),Object(i.b)("li",{parentName:"ol"},"Whether it includes the signature of the source code package."),Object(i.b)("li",{parentName:"ol"},"Whether it includes the sha512 of the source code package."),Object(i.b)("li",{parentName:"ol"},"If the binary package is uploaded, also check the contents listed in (2)-(4).")),Object(i.b)("h3",{id:"22-check-gpg-signature"},"2.2 Check gpg signature"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Import the public key")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-shell"},"curl https://dist.apache.org/repos/dist/dev/submarine/KEYS > KEYS # Download KEYS\ngpg --import KEYS # Import KEYS to local\n")),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Trust the public key",Object(i.b)("blockquote",{parentName:"li"},Object(i.b)("p",{parentName:"blockquote"},"Trust the KEY used in this version.")))),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"  gpg --edit-key xxxxxxxxxx # The KEY used in this version\n  gpg (GnuPG) 2.2.21; Copyright (C) 2020 Free Software Foundation, Inc.\n  This is free software: you are free to change and redistribute it.\n  There is NO WARRANTY, to the extent permitted by law.\n\n  Secret key is available.\n\n  sec  rsa4096/5EF3A66D57EC647A\n       created: 2020-05-19  expires: never       usage: SC\n       trust: ultimate      validity: ultimate\n  ssb  rsa4096/17628566FEED6AF7\n       created: 2020-05-19  expires: never       usage: E\n  [ultimate] (1). XXX YYYZZZ <yourAccount@apache.org>\n\n  gpg> trust\n  sec  rsa4096/5EF3A66D57EC647A\n       created: 2020-05-19  expires: never       usage: SC\n       trust: ultimate      validity: ultimate\n  ssb  rsa4096/17628566FEED6AF7\n       created: 2020-05-19  expires: never       usage: E\n  [ultimate] (1). XXX YYYZZZ <yourAccount@apache.org>\n\n  Please decide how far you trust this user to correctly verify other users' keys\n  (by looking at passports, checking fingerprints from different sources, etc.)\n\n    1 = I don't know or won't say\n    2 = I do NOT trust\n    3 = I trust marginally\n    4 = I trust fully\n    5 = I trust ultimately\n    m = back to the main menu\n\n  Your decision? 5 #choose 5\n  Do you really want to set this key to ultimate trust? (y/N) y # choose y\n\n  sec  rsa4096/5EF3A66D57EC647A\n       created: 2020-05-19  expires: never       usage: SC\n       trust: ultimate      validity: ultimate\n  ssb  rsa4096/17628566FEED6AF7\n       created: 2020-05-19  expires: never       usage: E\n  [ultimate] (1). XXX YYYZZZ <yourAccount@apache.org>\n\n  gpg>\n\n  sec  rsa4096/5EF3A66D57EC647A\n       created: 2020-05-19  expires: never       usage: SC\n       trust: ultimate      validity: ultimate\n  ssb  rsa4096/17628566FEED6AF7\n       created: 2020-05-19  expires: never       usage: E\n  [ultimate] (1). XXX YYYZZZ <yourAccount@apache.org>\n")),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Use the following command to check the signature.")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-shell"},"for i in *.tar.gz; do echo $i; gpg --verify $i.asc $i ; done\n#Or\ngpg --verify apache-submarine-${release_version}-src.tar.gz.asc apache-submarine-${release_version}-src.tar.gz\n# If you upload a binary package, you also need to check whether the signature of the binary package is correct.\ngpg --verify apache-submarine-server-${release_version}-bin.tar.gz.asc apache-submarine-server-${release_version}-bin.tar.gz\ngpg --verify apache-submarine-client-${release_version}-bin.tar.gz.asc apache-submarine-client-${release_version}-bin.tar.gz\n")),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Check the result",Object(i.b)("blockquote",{parentName:"li"},Object(i.b)("p",{parentName:"blockquote"},"If something like the following appears, it means that the signature is correct. The keyword\uff1a",Object(i.b)("strong",{parentName:"p"},Object(i.b)("inlineCode",{parentName:"strong"},"Good signature")))))),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-shell"},'apache-submarine-${release_version}-src.tar.gz\ngpg: Signature made Sat May 30 11:45:01 2020 CST\ngpg:                using RSA key 9B12C2228BDFF4F4CFE849445EF3A66D57EC647A\ngpg: Good signature from "XXX YYYZZZ <yourAccount@apache.org>" [ultimate]gular2\n')),Object(i.b)("h3",{id:"23-check-sha512-hash"},"2.3 Check sha512 hash"),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},"After calculating the sha512 hash locally, verify whether it is consistent with the one on dist.")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-shell"},"for i in *.tar.gz; do echo $i; gpg --print-md SHA512 $i; done\n#Or\ngpg --print-md SHA512 apache-submarine-${release_version}-src.tar.gz\n# If you upload a binary package, you also need to check the sha512 hash of the binary package.\ngpg --print-md SHA512 apache-submarine-server-${release_version}-bin.tar.gz\ngpg --print-md SHA512 apache-submarine-client-${release_version}-bin.tar.gz\n# \u6216\u8005\nfor i in *.tar.gz.sha512; do echo $i; sha512sum -c $i; done\n")),Object(i.b)("h3",{id:"24-check-the-file-content-of-the-source-package"},"2.4. Check the file content of the source package."),Object(i.b)("p",null,"Unzip ",Object(i.b)("inlineCode",{parentName:"p"},"apache-submarine-${release_version}-src.tar.gz")," and check as follows:"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Whether the DISCLAIMER file exists and whether the content is correct."),Object(i.b)("li",{parentName:"ul"},"Whether the LICENSE and NOTICE file exists and whether the content is correct."),Object(i.b)("li",{parentName:"ul"},"Whether all files have ASF License header."),Object(i.b)("li",{parentName:"ul"},"Whether the source code can be compiled normally."),Object(i.b)("li",{parentName:"ul"},"Whether the single test is passed."),Object(i.b)("li",{parentName:"ul"},"....")),Object(i.b)("h3",{id:"25-check-the-binary-package-if-the-binary-package-is-uploaded"},"2.5 Check the binary package (if the binary package is uploaded)"),Object(i.b)("p",null,"Unzip ",Object(i.b)("inlineCode",{parentName:"p"},"apache-submarine-client-${release_version}-src.tar.gz")," and ",Object(i.b)("inlineCode",{parentName:"p"}," apache-submarine-server-${release_version}-src.tar.gz"),", then check as follows:"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Whether the DISCLAIMER file exists and whether the content is correct."),Object(i.b)("li",{parentName:"ul"},"Whether the LICENSE and the NOTICE file exists and whether the content is correct."),Object(i.b)("li",{parentName:"ul"},"Whether the deployment is successful."),Object(i.b)("li",{parentName:"ul"},"Deploy a test environment to verify whether production and consumption can run normally."),Object(i.b)("li",{parentName:"ul"},"Verify what you think might go wrong.")))}u.isMDXComponent=!0},194:function(e,t,a){"use strict";a.d(t,"a",(function(){return h})),a.d(t,"b",(function(){return d}));var n=a(0),r=a.n(n);function i(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function c(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?c(Object(a),!0).forEach((function(t){i(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):c(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function s(e,t){if(null==e)return{};var a,n,r=function(e,t){if(null==e)return{};var a,n,r={},i=Object.keys(e);for(n=0;n<i.length;n++)a=i[n],t.indexOf(a)>=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)a=i[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var l=r.a.createContext({}),u=function(e){var t=r.a.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},h=function(e){var t=u(e.components);return r.a.createElement(l.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},b=r.a.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,c=e.parentName,l=s(e,["components","mdxType","originalType","parentName"]),h=u(a),b=n,d=h["".concat(c,".").concat(b)]||h[b]||p[b]||i;return a?r.a.createElement(d,o(o({ref:t},l),{},{components:a})):r.a.createElement(d,o({ref:t},l))}));function d(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,c=new Array(i);c[0]=b;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o.mdxType="string"==typeof e?e:n,c[1]=o;for(var l=2;l<i;l++)c[l]=a[l];return r.a.createElement.apply(null,c)}return r.a.createElement.apply(null,a)}b.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/7103e683.e3ed81f2.js b/7103e683.e3ed81f2.js
deleted file mode 100644
index 57ca85f..0000000
--- a/7103e683.e3ed81f2.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[59],{126:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return c})),n.d(t,"metadata",(function(){return u})),n.d(t,"toc",(function(){return i})),n.d(t,"default",(function(){return s}));var o=n(3),r=n(7),a=(n(0),n(209)),c={},u={unversionedId:"adminDocs/yarn/workbench/notebook/setup-jupyter",id:"adminDocs/yarn/workbench/notebook/setup-jupyter",isDocsHomePage:!1,title:"setup-jupyter",description:"\x3c!--",source:"@site/docs/adminDocs/yarn/workbench/notebook/setup-jupyter.md",slug:"/adminDocs/yarn/workbench/notebook/setup-jupyter",permalink:"/docs/next/adminDocs/yarn/workbench/notebook/setup-jupyter",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/adminDocs/yarn/workbench/notebook/setup-jupyter.md",version:"current"},i=[{value:"Experiment environment",id:"experiment-environment",children:[{value:"Setup Kubernetes",id:"setup-kubernetes",children:[]},{value:"Deploy Jupyter Notebook",id:"deploy-jupyter-notebook",children:[]}]}],p={toc:i};function s(e){var t=e.components,c=Object(r.a)(e,["components"]);return Object(a.b)("wrapper",Object(o.a)({},p,c,{components:t,mdxType:"MDXLayout"}),Object(a.b)("h1",{id:"deploy-jupyter-notebook-on-kubernetes"},"Deploy Jupyter Notebook on Kubernetes"),Object(a.b)("p",null,"This guide covers the deployment Jupyter Notebook on kubernetes cluster."),Object(a.b)("h2",{id:"experiment-environment"},"Experiment environment"),Object(a.b)("h3",{id:"setup-kubernetes"},"Setup Kubernetes"),Object(a.b)("p",null,"We recommend using ",Object(a.b)("a",{parentName:"p",href:"https://kind.sigs.k8s.io/"},"kind")," to setup a Kubernetes cluster on a local machine."),Object(a.b)("p",null,"You can use Extra mounts to mount your host path to kind node and use Extra port mappings to port\nforward to the kind nodes. Please refer to ",Object(a.b)("a",{parentName:"p",href:"https://kind.sigs.k8s.io/docs/user/configuration/#extra-mounts"},"kind configuration"),"\nfor more details."),Object(a.b)("p",null,"You need to create a kind config file. The following is an example :"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},"kind: Cluster\napiVersion: kind.x-k8s.io/v1alpha4\nnodes:\n- role: control-plane\n  extraMounts:\n  # add a mount from /path/to/my/files on the host to /files on the node\n  - hostPath: /tmp/submarine\n    containerPath: /tmp/submarine\n  extraPortMappings:\n  - containerPort: 80\n    hostPort: 80\n    protocol: TCP\n  # exposing additional ports to be used for NodePort services\n  - containerPort: 30070\n    hostPort: 8888\n    protocol: TCP\n")),Object(a.b)("p",null,"Running the following command:"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},"kind create cluster --image kindest/node:v1.15.6 --config <path-to-kind-config> --name k8s-submarine\nkubectl create namespace submarine\n")),Object(a.b)("h3",{id:"deploy-jupyter-notebook"},"Deploy Jupyter Notebook"),Object(a.b)("p",null,"Once you have a running Kubernetes cluster, you can write a YAML file to deploy a jupyter notebook.\nIn this ",Object(a.b)("a",{target:"_blank",href:n(297).default},"example yaml"),", we use ",Object(a.b)("a",{parentName:"p",href:"https://hub.docker.com/r/jupyter/minimal-notebook/"},"jupyter/minimal-notebook"),"\nto make a single notebook running on the kind node."),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},"kubectl apply -f jupyter.yaml --namespace submarine\n")),Object(a.b)("p",null,"Once jupyter notebook is running, you can access the notebook server from the browser using http://localhost:8888 on local machine."),Object(a.b)("p",null,"You can enter and store a password for your notebook server with:"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},"kubectl exec -it <jupyter-pod-name> -- jupyter notebook password\n")),Object(a.b)("p",null,"After restarting the notebook server,  you can login jupyter notebook with your new password."),Object(a.b)("p",null,"If you want to use JupyterLab :"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},"http://localhost:8888/lab\n")))}s.isMDXComponent=!0},209:function(e,t,n){"use strict";n.d(t,"a",(function(){return b})),n.d(t,"b",(function(){return m}));var o=n(0),r=n.n(o);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function u(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?c(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):c(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,o,r=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o<a.length;o++)n=a[o],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o<a.length;o++)n=a[o],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var p=r.a.createContext({}),s=function(e){var t=r.a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):u(u({},t),e)),n},b=function(e){var t=s(e.components);return r.a.createElement(p.Provider,{value:t},e.children)},l={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},d=r.a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,c=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),b=s(n),d=o,m=b["".concat(c,".").concat(d)]||b[d]||l[d]||a;return n?r.a.createElement(m,u(u({ref:t},p),{},{components:n})):r.a.createElement(m,u({ref:t},p))}));function m(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,c=new Array(a);c[0]=d;var u={};for(var i in t)hasOwnProperty.call(t,i)&&(u[i]=t[i]);u.originalType=e,u.mdxType="string"==typeof e?e:o,c[1]=u;for(var p=2;p<a;p++)c[p]=n[p];return r.a.createElement.apply(null,c)}return r.a.createElement.apply(null,n)}d.displayName="MDXCreateElement"},297:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/files/jupyter-b412bca5cd2199cfea640f5453431d9d.yaml"}}]);
\ No newline at end of file
diff --git a/710c49d3.2f9e58c7.js b/710c49d3.cf6a7c99.js
similarity index 98%
rename from 710c49d3.2f9e58c7.js
rename to 710c49d3.cf6a7c99.js
index 39f0268..1b92038 100644
--- a/710c49d3.2f9e58c7.js
+++ b/710c49d3.cf6a7c99.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[60],{127:function(e,n,r){"use strict";r.r(n),r.d(n,"frontMatter",(function(){return i})),r.d(n,"metadata",(function(){return s})),r.d(n,"toc",(function(){return c})),r.d(n,"default",(function(){return l}));var t=r(3),a=r(7),o=(r(0),r(209)),i={title:"Submarine Server Implementation"},s={unversionedId:"designDocs/submarine-server/architecture",id:"version-0.6.0/designDocs/submarine-server/architecture",isDocsHomePage:!1,title:"Submarine Server Implementation",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/designDocs/submarine-server/architecture.md",slug:"/designDocs/submarine-server/architecture",permalink:"/docs/designDocs/submarine-server/architecture",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/designDocs/submarine-server/architecture.md",version:"0.6.0",sidebar:"docs",previous:{title:"Storage Implementation",permalink:"/docs/designDocs/storage-implementation"},next:{title:"Generic Expeiment Spec",permalink:"/docs/designDocs/submarine-server/experimentSpec"}},c=[{value:"Architecture Overview",id:"architecture-overview",children:[]},{value:"Submarine Server and its APIs",id:"submarine-server-and-its-apis",children:[]},{value:"Proposal",id:"proposal",children:[]},{value:"Submarine Server Components",id:"submarine-server-components",children:[{value:"Experiment Manager",id:"experiment-manager",children:[]},{value:"Notebook Sessions Manager",id:"notebook-sessions-manager",children:[]},{value:"Environment Manager",id:"environment-manager",children:[]},{value:"Model Registry",id:"model-registry",children:[]},{value:"Model Serving Manager",id:"model-serving-manager",children:[]},{value:"Compute Cluster Manager",id:"compute-cluster-manager",children:[]},{value:"Dataset Manager",id:"dataset-manager",children:[]},{value:"User/team permissions manager",id:"userteam-permissions-manager",children:[]},{value:"Metadata Manager",id:"metadata-manager",children:[]}]},{value:"Components/services outside of Submarine Server&#39;s scope",id:"componentsservices-outside-of-submarine-servers-scope",children:[]}],u={toc:c};function l(e){var n=e.components,r=Object(a.a)(e,["components"]);return Object(o.b)("wrapper",Object(t.a)({},u,r,{components:n,mdxType:"MDXLayout"}),Object(o.b)("h2",{id:"architecture-overview"},"Architecture Overview"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"    +---------------Submarine Server ---+\n    |                                   |\n    | +------------+ +------------+     |\n    | |Web Svc/Prxy| |Backend Svc |     |    +--Submarine Asset +\n    | +------------+ +------------+     |    |Project/Notebook  |\n    |   ^         ^                     |    |Model/Metrics     |\n    +---|---------|---------------------+    |Libraries/Dataset |\n        |         |                          +------------------+\n        |         |\n        |      +--|-Compute Cluster 1---+    +--Image Registry--+\n        +      |  |                     |    |   User's Images  |\n      User /   |  +                     |    |                  |\n      Admin    | User Notebook Instance |    +------------------+\n               | Experiment Runs        |\n               +------------------------+    +-Data Storage-----+\n                                             | S3/HDFS, etc.    |\n               +----Compute Cluster 2---+    |                  |\n                                             +------------------+\n                        ...\n")),Object(o.b)("p",null,"Here's a diagram to illustrate the Submarine's deployment."),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},'Submarine Server consists of web service/proxy, and backend services. They\'re like "control planes" of Submarine, and users will interact with these services.'),Object(o.b)("li",{parentName:"ul"},"Submarine server could be a microservice architecture and can be deployed to one of the compute clusters. (see below, this will be useful when we only have one cluster). "),Object(o.b)("li",{parentName:"ul"},"There're multiple compute clusters that could be used by Submarine service. For user's running notebook instance, jobs, etc. they will be placed to one of the compute clusters by user's preference or defined policies."),Object(o.b)("li",{parentName:"ul"},"Submarine's asset includes project/notebook(content)/models/metrics/dataset-meta, etc. can be stored inside Submarine's own database."),Object(o.b)("li",{parentName:"ul"},"Datasets can be stored in various locations such as S3/HDFS. "),Object(o.b)("li",{parentName:"ul"},"Users can push container (such as Docker) images to a preconfigured registry in Submarine, so Submarine service can know how to pull required container images."),Object(o.b)("li",{parentName:"ul"},"Image Registry/Data-Storage, etc. are outside of Submarine server's scope and should be managed by 3rd party applications.")),Object(o.b)("h2",{id:"submarine-server-and-its-apis"},"Submarine Server and its APIs"),Object(o.b)("p",null,"Submarine server is designed to allow data scientists to access notebooks, submit/manage jobs, manage models, create model training workflows, access datasets, etc."),Object(o.b)("p",null,"Submarine Server exposed UI and REST API. Users can also use CLI / SDK to manage assets inside Submarine Server."),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"           +----------+\n           | CLI      |+---+\n           +----------+    v              +----------------+\n                         +--------------+ | Submarine      |\n           +----------+  | REST API     | |                |\n           | SDK      |+>|              |+>  Server        |\n           +----------+  +--------------+ |                |\n                           ^              +----------------+\n           +----------+    |\n           | UI       |+---+\n           +----------+\n")),Object(o.b)("p",null,"REST API will be used by the other 3 approaches. (CLI/SDK/UI) "),Object(o.b)("p",null,"The REST API Service handles HTTP requests and is responsible for authentication. It acts as the caller for the JobManager component."),Object(o.b)("p",null,"The REST component defines the generic job spec which describes the detailed info about job. For more details, refer to ",Object(o.b)("a",{parentName:"p",href:"https://docs.google.com/document/d/1kd-5UzsHft6gV7EuZiPXeWIKJtPqVwkNlqMvy0P_pAw/edit#"},"here"),". (Please note that we're converting REST endpoint description from Java-based REST API to swagger definition, once that is done, we should replace the link with swagger definition spec)."),Object(o.b)("h2",{id:"proposal"},"Proposal"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"                                                               +---------------------+\n+-----------+                                                  | +--------+   +----+ |\n|           |                                                  | |runtime1+--\x3e+job1| |\n| workbench +---+   +----------------------------------+       | +--------+   +----+ |\n|           |   |   | +------+ +---------------------+ |   +--\x3e+ +--------+   +----+ |\n+-----------+   |   | |      | | +------+  +-------+ | |   |   | |runtime2+--\x3e+job2| |\n                |   | |      | | | YARN |  |  K8s  | | |   |   | +--------+   +----+ |\n+-----------+   |   | |      | | +------+  +-------+ | |   |   |     YARN Cluster    |\n|           |   |   | |      | |      submitter      | |   |   +---------------------+\n|    CLI    +------\x3e+ | REST | +---------------------+ +---+\n|           |   |   | |      | +---------------------+ |   |   +---------------------+\n+-----------+   |   | |      | | +-------+ +-------+ | |   |   | +--------+   +----+ |\n                |   | |      | | |PlugMgr| |monitor| | |   |   | |        +--\x3e+job1| |\n+-----------+   |   | |      | | +-------+ +-------+ | |   |   | |        |   +----+ |\n|           |   |   | |      | |      JobManager     | |   +--\x3e+ |operator|   +----+ |\n|    SDK    +---+   | +------+ +---------------------+ |       | |        +--\x3e+job2| |\n|           |       +----------------------------------+       | +--------+   +----+ |\n+-----------+                                                  |     K8s Cluster     |\n   client                          server                      +---------------------+\n")),Object(o.b)("p",null,"We propose to split the original core module in the old layout into two modules, CLI and server as shown in FIG. The submarine-client calls the REST APIs to submit and retrieve the job info. The submarine-server provides the REST service, job management, submitting the job to cluster, and running job in different clusters through the corresponding runtime."),Object(o.b)("h2",{id:"submarine-server-components"},"Submarine Server Components"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"\n   +----------------------Submarine Server--------------------------------+\n   | +-----------------+ +------------------+ +--------------------+      |\n   | |  Experiment     | |Notebook Session  | |Environment Mgr     |      |\n   | |  Mgr            | |Mgr               | |                    |      |\n   | +-----------------+ +------------------+ +--------------------+      |\n   |                                                                      |\n   | +-----------------+ +------------------+ +--------------------+      |\n   | |  Model Registry | |Model Serving Mgr | |Compute Cluster Mgr |      |\n   | |                 | |                  | |                    |      |\n   | +-----------------+ +------------------+ +--------------------+      |\n   |                                                                      |\n   | +-----------------+ +------------------+ +--------------------+      |\n   | | DataSet Mgr     | |User/Team         | |Metadata Mgr        |      |\n   | |                 | |Permission Mgr    | |                    |      |\n   | +-----------------+ +------------------+ +--------------------+      |\n   +----------------------------------------------------------------------+\n")),Object(o.b)("h3",{id:"experiment-manager"},"Experiment Manager"),Object(o.b)("p",null,"TODO"),Object(o.b)("h3",{id:"notebook-sessions-manager"},"Notebook Sessions Manager"),Object(o.b)("p",null,"TODO"),Object(o.b)("h3",{id:"environment-manager"},"Environment Manager"),Object(o.b)("p",null,"TODO"),Object(o.b)("h3",{id:"model-registry"},"Model Registry"),Object(o.b)("p",null,"TODO"),Object(o.b)("h3",{id:"model-serving-manager"},"Model Serving Manager"),Object(o.b)("p",null,"TODO"),Object(o.b)("h3",{id:"compute-cluster-manager"},"Compute Cluster Manager"),Object(o.b)("p",null,"TODO"),Object(o.b)("h3",{id:"dataset-manager"},"Dataset Manager"),Object(o.b)("p",null,"TODO"),Object(o.b)("h3",{id:"userteam-permissions-manager"},"User/team permissions manager"),Object(o.b)("p",null,"TODO"),Object(o.b)("h3",{id:"metadata-manager"},"Metadata Manager"),Object(o.b)("p",null,"TODO"),Object(o.b)("h2",{id:"componentsservices-outside-of-submarine-servers-scope"},"Components/services outside of Submarine Server's scope"),Object(o.b)("p",null,"TODO: Describe what are the out-of-scope components, which should be handled and managed outside of Submarine server. Candidates are: Identity management, data storage, metastore storage, etc."))}l.isMDXComponent=!0},209:function(e,n,r){"use strict";r.d(n,"a",(function(){return b})),r.d(n,"b",(function(){return p}));var t=r(0),a=r.n(t);function o(e,n,r){return n in e?Object.defineProperty(e,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[n]=r,e}function i(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),r.push.apply(r,t)}return r}function s(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?i(Object(r),!0).forEach((function(n){o(e,n,r[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))}))}return e}function c(e,n){if(null==e)return{};var r,t,a=function(e,n){if(null==e)return{};var r,t,a={},o=Object.keys(e);for(t=0;t<o.length;t++)r=o[t],n.indexOf(r)>=0||(a[r]=e[r]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(t=0;t<o.length;t++)r=o[t],n.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var u=a.a.createContext({}),l=function(e){var n=a.a.useContext(u),r=n;return e&&(r="function"==typeof e?e(n):s(s({},n),e)),r},b=function(e){var n=l(e.components);return a.a.createElement(u.Provider,{value:n},e.children)},m={inlineCode:"code",wrapper:function(e){var n=e.children;return a.a.createElement(a.a.Fragment,{},n)}},d=a.a.forwardRef((function(e,n){var r=e.components,t=e.mdxType,o=e.originalType,i=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),b=l(r),d=t,p=b["".concat(i,".").concat(d)]||b[d]||m[d]||o;return r?a.a.createElement(p,s(s({ref:n},u),{},{components:r})):a.a.createElement(p,s({ref:n},u))}));function p(e,n){var r=arguments,t=n&&n.mdxType;if("string"==typeof e||t){var o=r.length,i=new Array(o);i[0]=d;var s={};for(var c in n)hasOwnProperty.call(n,c)&&(s[c]=n[c]);s.originalType=e,s.mdxType="string"==typeof e?e:t,i[1]=s;for(var u=2;u<o;u++)i[u]=r[u];return a.a.createElement.apply(null,i)}return a.a.createElement.apply(null,r)}d.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[52],{119:function(e,n,r){"use strict";r.r(n),r.d(n,"frontMatter",(function(){return i})),r.d(n,"metadata",(function(){return s})),r.d(n,"toc",(function(){return c})),r.d(n,"default",(function(){return l}));var t=r(3),a=r(7),o=(r(0),r(194)),i={title:"Submarine Server Implementation"},s={unversionedId:"designDocs/submarine-server/architecture",id:"version-0.6.0/designDocs/submarine-server/architecture",isDocsHomePage:!1,title:"Submarine Server Implementation",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/designDocs/submarine-server/architecture.md",slug:"/designDocs/submarine-server/architecture",permalink:"/docs/designDocs/submarine-server/architecture",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/designDocs/submarine-server/architecture.md",version:"0.6.0",sidebar:"docs",previous:{title:"Storage Implementation",permalink:"/docs/designDocs/storage-implementation"},next:{title:"Generic Expeiment Spec",permalink:"/docs/designDocs/submarine-server/experimentSpec"}},c=[{value:"Architecture Overview",id:"architecture-overview",children:[]},{value:"Submarine Server and its APIs",id:"submarine-server-and-its-apis",children:[]},{value:"Proposal",id:"proposal",children:[]},{value:"Submarine Server Components",id:"submarine-server-components",children:[{value:"Experiment Manager",id:"experiment-manager",children:[]},{value:"Notebook Sessions Manager",id:"notebook-sessions-manager",children:[]},{value:"Environment Manager",id:"environment-manager",children:[]},{value:"Model Registry",id:"model-registry",children:[]},{value:"Model Serving Manager",id:"model-serving-manager",children:[]},{value:"Compute Cluster Manager",id:"compute-cluster-manager",children:[]},{value:"Dataset Manager",id:"dataset-manager",children:[]},{value:"User/team permissions manager",id:"userteam-permissions-manager",children:[]},{value:"Metadata Manager",id:"metadata-manager",children:[]}]},{value:"Components/services outside of Submarine Server&#39;s scope",id:"componentsservices-outside-of-submarine-servers-scope",children:[]}],u={toc:c};function l(e){var n=e.components,r=Object(a.a)(e,["components"]);return Object(o.b)("wrapper",Object(t.a)({},u,r,{components:n,mdxType:"MDXLayout"}),Object(o.b)("h2",{id:"architecture-overview"},"Architecture Overview"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"    +---------------Submarine Server ---+\n    |                                   |\n    | +------------+ +------------+     |\n    | |Web Svc/Prxy| |Backend Svc |     |    +--Submarine Asset +\n    | +------------+ +------------+     |    |Project/Notebook  |\n    |   ^         ^                     |    |Model/Metrics     |\n    +---|---------|---------------------+    |Libraries/Dataset |\n        |         |                          +------------------+\n        |         |\n        |      +--|-Compute Cluster 1---+    +--Image Registry--+\n        +      |  |                     |    |   User's Images  |\n      User /   |  +                     |    |                  |\n      Admin    | User Notebook Instance |    +------------------+\n               | Experiment Runs        |\n               +------------------------+    +-Data Storage-----+\n                                             | S3/HDFS, etc.    |\n               +----Compute Cluster 2---+    |                  |\n                                             +------------------+\n                        ...\n")),Object(o.b)("p",null,"Here's a diagram to illustrate the Submarine's deployment."),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},'Submarine Server consists of web service/proxy, and backend services. They\'re like "control planes" of Submarine, and users will interact with these services.'),Object(o.b)("li",{parentName:"ul"},"Submarine server could be a microservice architecture and can be deployed to one of the compute clusters. (see below, this will be useful when we only have one cluster). "),Object(o.b)("li",{parentName:"ul"},"There're multiple compute clusters that could be used by Submarine service. For user's running notebook instance, jobs, etc. they will be placed to one of the compute clusters by user's preference or defined policies."),Object(o.b)("li",{parentName:"ul"},"Submarine's asset includes project/notebook(content)/models/metrics/dataset-meta, etc. can be stored inside Submarine's own database."),Object(o.b)("li",{parentName:"ul"},"Datasets can be stored in various locations such as S3/HDFS. "),Object(o.b)("li",{parentName:"ul"},"Users can push container (such as Docker) images to a preconfigured registry in Submarine, so Submarine service can know how to pull required container images."),Object(o.b)("li",{parentName:"ul"},"Image Registry/Data-Storage, etc. are outside of Submarine server's scope and should be managed by 3rd party applications.")),Object(o.b)("h2",{id:"submarine-server-and-its-apis"},"Submarine Server and its APIs"),Object(o.b)("p",null,"Submarine server is designed to allow data scientists to access notebooks, submit/manage jobs, manage models, create model training workflows, access datasets, etc."),Object(o.b)("p",null,"Submarine Server exposed UI and REST API. Users can also use CLI / SDK to manage assets inside Submarine Server."),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"           +----------+\n           | CLI      |+---+\n           +----------+    v              +----------------+\n                         +--------------+ | Submarine      |\n           +----------+  | REST API     | |                |\n           | SDK      |+>|              |+>  Server        |\n           +----------+  +--------------+ |                |\n                           ^              +----------------+\n           +----------+    |\n           | UI       |+---+\n           +----------+\n")),Object(o.b)("p",null,"REST API will be used by the other 3 approaches. (CLI/SDK/UI) "),Object(o.b)("p",null,"The REST API Service handles HTTP requests and is responsible for authentication. It acts as the caller for the JobManager component."),Object(o.b)("p",null,"The REST component defines the generic job spec which describes the detailed info about job. For more details, refer to ",Object(o.b)("a",{parentName:"p",href:"https://docs.google.com/document/d/1kd-5UzsHft6gV7EuZiPXeWIKJtPqVwkNlqMvy0P_pAw/edit#"},"here"),". (Please note that we're converting REST endpoint description from Java-based REST API to swagger definition, once that is done, we should replace the link with swagger definition spec)."),Object(o.b)("h2",{id:"proposal"},"Proposal"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"                                                               +---------------------+\n+-----------+                                                  | +--------+   +----+ |\n|           |                                                  | |runtime1+--\x3e+job1| |\n| workbench +---+   +----------------------------------+       | +--------+   +----+ |\n|           |   |   | +------+ +---------------------+ |   +--\x3e+ +--------+   +----+ |\n+-----------+   |   | |      | | +------+  +-------+ | |   |   | |runtime2+--\x3e+job2| |\n                |   | |      | | | YARN |  |  K8s  | | |   |   | +--------+   +----+ |\n+-----------+   |   | |      | | +------+  +-------+ | |   |   |     YARN Cluster    |\n|           |   |   | |      | |      submitter      | |   |   +---------------------+\n|    CLI    +------\x3e+ | REST | +---------------------+ +---+\n|           |   |   | |      | +---------------------+ |   |   +---------------------+\n+-----------+   |   | |      | | +-------+ +-------+ | |   |   | +--------+   +----+ |\n                |   | |      | | |PlugMgr| |monitor| | |   |   | |        +--\x3e+job1| |\n+-----------+   |   | |      | | +-------+ +-------+ | |   |   | |        |   +----+ |\n|           |   |   | |      | |      JobManager     | |   +--\x3e+ |operator|   +----+ |\n|    SDK    +---+   | +------+ +---------------------+ |       | |        +--\x3e+job2| |\n|           |       +----------------------------------+       | +--------+   +----+ |\n+-----------+                                                  |     K8s Cluster     |\n   client                          server                      +---------------------+\n")),Object(o.b)("p",null,"We propose to split the original core module in the old layout into two modules, CLI and server as shown in FIG. The submarine-client calls the REST APIs to submit and retrieve the job info. The submarine-server provides the REST service, job management, submitting the job to cluster, and running job in different clusters through the corresponding runtime."),Object(o.b)("h2",{id:"submarine-server-components"},"Submarine Server Components"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"\n   +----------------------Submarine Server--------------------------------+\n   | +-----------------+ +------------------+ +--------------------+      |\n   | |  Experiment     | |Notebook Session  | |Environment Mgr     |      |\n   | |  Mgr            | |Mgr               | |                    |      |\n   | +-----------------+ +------------------+ +--------------------+      |\n   |                                                                      |\n   | +-----------------+ +------------------+ +--------------------+      |\n   | |  Model Registry | |Model Serving Mgr | |Compute Cluster Mgr |      |\n   | |                 | |                  | |                    |      |\n   | +-----------------+ +------------------+ +--------------------+      |\n   |                                                                      |\n   | +-----------------+ +------------------+ +--------------------+      |\n   | | DataSet Mgr     | |User/Team         | |Metadata Mgr        |      |\n   | |                 | |Permission Mgr    | |                    |      |\n   | +-----------------+ +------------------+ +--------------------+      |\n   +----------------------------------------------------------------------+\n")),Object(o.b)("h3",{id:"experiment-manager"},"Experiment Manager"),Object(o.b)("p",null,"TODO"),Object(o.b)("h3",{id:"notebook-sessions-manager"},"Notebook Sessions Manager"),Object(o.b)("p",null,"TODO"),Object(o.b)("h3",{id:"environment-manager"},"Environment Manager"),Object(o.b)("p",null,"TODO"),Object(o.b)("h3",{id:"model-registry"},"Model Registry"),Object(o.b)("p",null,"TODO"),Object(o.b)("h3",{id:"model-serving-manager"},"Model Serving Manager"),Object(o.b)("p",null,"TODO"),Object(o.b)("h3",{id:"compute-cluster-manager"},"Compute Cluster Manager"),Object(o.b)("p",null,"TODO"),Object(o.b)("h3",{id:"dataset-manager"},"Dataset Manager"),Object(o.b)("p",null,"TODO"),Object(o.b)("h3",{id:"userteam-permissions-manager"},"User/team permissions manager"),Object(o.b)("p",null,"TODO"),Object(o.b)("h3",{id:"metadata-manager"},"Metadata Manager"),Object(o.b)("p",null,"TODO"),Object(o.b)("h2",{id:"componentsservices-outside-of-submarine-servers-scope"},"Components/services outside of Submarine Server's scope"),Object(o.b)("p",null,"TODO: Describe what are the out-of-scope components, which should be handled and managed outside of Submarine server. Candidates are: Identity management, data storage, metastore storage, etc."))}l.isMDXComponent=!0},194:function(e,n,r){"use strict";r.d(n,"a",(function(){return b})),r.d(n,"b",(function(){return p}));var t=r(0),a=r.n(t);function o(e,n,r){return n in e?Object.defineProperty(e,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[n]=r,e}function i(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),r.push.apply(r,t)}return r}function s(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?i(Object(r),!0).forEach((function(n){o(e,n,r[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))}))}return e}function c(e,n){if(null==e)return{};var r,t,a=function(e,n){if(null==e)return{};var r,t,a={},o=Object.keys(e);for(t=0;t<o.length;t++)r=o[t],n.indexOf(r)>=0||(a[r]=e[r]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(t=0;t<o.length;t++)r=o[t],n.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var u=a.a.createContext({}),l=function(e){var n=a.a.useContext(u),r=n;return e&&(r="function"==typeof e?e(n):s(s({},n),e)),r},b=function(e){var n=l(e.components);return a.a.createElement(u.Provider,{value:n},e.children)},m={inlineCode:"code",wrapper:function(e){var n=e.children;return a.a.createElement(a.a.Fragment,{},n)}},d=a.a.forwardRef((function(e,n){var r=e.components,t=e.mdxType,o=e.originalType,i=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),b=l(r),d=t,p=b["".concat(i,".").concat(d)]||b[d]||m[d]||o;return r?a.a.createElement(p,s(s({ref:n},u),{},{components:r})):a.a.createElement(p,s({ref:n},u))}));function p(e,n){var r=arguments,t=n&&n.mdxType;if("string"==typeof e||t){var o=r.length,i=new Array(o);i[0]=d;var s={};for(var c in n)hasOwnProperty.call(n,c)&&(s[c]=n[c]);s.originalType=e,s.mdxType="string"==typeof e?e:t,i[1]=s;for(var u=2;u<o;u++)i[u]=r[u];return a.a.createElement.apply(null,i)}return a.a.createElement.apply(null,r)}d.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/72f8d982.4335d80b.js b/72f8d982.94fda3b2.js
similarity index 97%
rename from 72f8d982.4335d80b.js
rename to 72f8d982.94fda3b2.js
index 7aab055..e98d289 100644
--- a/72f8d982.4335d80b.js
+++ b/72f8d982.94fda3b2.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[61],{128:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return c})),n.d(t,"metadata",(function(){return l})),n.d(t,"toc",(function(){return i})),n.d(t,"default",(function(){return p}));var r=n(3),a=n(7),b=(n(0),n(209)),c={title:"Dependencies for Submarine"},l={unversionedId:"devDocs/Dependencies",id:"devDocs/Dependencies",isDocsHomePage:!1,title:"Dependencies for Submarine",description:"\x3c!--",source:"@site/docs/devDocs/Dependencies.md",slug:"/devDocs/Dependencies",permalink:"/docs/next/devDocs/Dependencies",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/devDocs/Dependencies.md",version:"current",sidebar:"docs",previous:{title:"Project Architecture",permalink:"/docs/next/devDocs/README"},next:{title:"How to Build Submarine",permalink:"/docs/next/devDocs/BuildFromCode"}},i=[{value:"Kubernetes",id:"kubernetes",children:[]},{value:"KinD",id:"kind",children:[]},{value:"Java",id:"java",children:[]},{value:"Maven",id:"maven",children:[]},{value:"Docker",id:"docker",children:[]},{value:"Helm",id:"helm",children:[]},{value:"NodeJS",id:"nodejs",children:[]},{value:"Go",id:"go",children:[]},{value:"Python",id:"python",children:[]}],o={toc:i};function p(e){var t=e.components,n=Object(a.a)(e,["components"]);return Object(b.b)("wrapper",Object(r.a)({},o,n,{components:t,mdxType:"MDXLayout"}),Object(b.b)("ul",null,Object(b.b)("li",{parentName:"ul"},"These are the dependencies currently used by Apache Submarine.")),Object(b.b)("h2",{id:"kubernetes"},"Kubernetes"),Object(b.b)("table",null,Object(b.b)("thead",{parentName:"table"},Object(b.b)("tr",{parentName:"thead"},Object(b.b)("th",{parentName:"tr",align:null},"Kubernetes Version"),Object(b.b)("th",{parentName:"tr",align:"center"},"Support?"))),Object(b.b)("tbody",{parentName:"table"},Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"1.14.x (or earlier)"),Object(b.b)("td",{parentName:"tr",align:"center"},"X")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"1.15.x - 1.21.x"),Object(b.b)("td",{parentName:"tr",align:"center"},"\u221a")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"1.22.x (or later)"),Object(b.b)("td",{parentName:"tr",align:"center"},"X")))),Object(b.b)("h2",{id:"kind"},"KinD"),Object(b.b)("table",null,Object(b.b)("thead",{parentName:"table"},Object(b.b)("tr",{parentName:"thead"},Object(b.b)("th",{parentName:"tr",align:null},"KinD Version"),Object(b.b)("th",{parentName:"tr",align:"center"},"Support?"))),Object(b.b)("tbody",{parentName:"table"},Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"0.5.x (or earlier)"),Object(b.b)("td",{parentName:"tr",align:"center"},"X")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"0.6.x"),Object(b.b)("td",{parentName:"tr",align:"center"},"\u221a")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"0.7.x"),Object(b.b)("td",{parentName:"tr",align:"center"},"\u221a")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"0.8.x"),Object(b.b)("td",{parentName:"tr",align:"center"},"\u221a")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"0.9.x"),Object(b.b)("td",{parentName:"tr",align:"center"},"\u221a")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"0.10.x"),Object(b.b)("td",{parentName:"tr",align:"center"},"\u221a")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"0.11.x"),Object(b.b)("td",{parentName:"tr",align:"center"},"\u221a")))),Object(b.b)("h2",{id:"java"},"Java"),Object(b.b)("table",null,Object(b.b)("thead",{parentName:"table"},Object(b.b)("tr",{parentName:"thead"},Object(b.b)("th",{parentName:"tr",align:null},"JDK Version"),Object(b.b)("th",{parentName:"tr",align:"center"},"Support?"))),Object(b.b)("tbody",{parentName:"table"},Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"8"),Object(b.b)("td",{parentName:"tr",align:"center"},"\u221a")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"11"),Object(b.b)("td",{parentName:"tr",align:"center"},"X")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"17"),Object(b.b)("td",{parentName:"tr",align:"center"},"X")))),Object(b.b)("h2",{id:"maven"},"Maven"),Object(b.b)("ul",null,Object(b.b)("li",{parentName:"ul"},"3.3 or later ( < 3.8.1 )")),Object(b.b)("h2",{id:"docker"},"Docker"),Object(b.b)("ul",null,Object(b.b)("li",{parentName:"ul"},"Latest")),Object(b.b)("h2",{id:"helm"},"Helm"),Object(b.b)("ul",null,Object(b.b)("li",{parentName:"ul"},"Version 3")),Object(b.b)("h2",{id:"nodejs"},"NodeJS"),Object(b.b)("ul",null,Object(b.b)("li",{parentName:"ul"},"14 (or later)")),Object(b.b)("h2",{id:"go"},"Go"),Object(b.b)("table",null,Object(b.b)("thead",{parentName:"table"},Object(b.b)("tr",{parentName:"thead"},Object(b.b)("th",{parentName:"tr",align:null},"Go Version"),Object(b.b)("th",{parentName:"tr",align:"center"},"Support?"))),Object(b.b)("tbody",{parentName:"table"},Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"1.15"),Object(b.b)("td",{parentName:"tr",align:"center"},"X")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"1.16"),Object(b.b)("td",{parentName:"tr",align:"center"},"\u221a")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"1.17 (or later)"),Object(b.b)("td",{parentName:"tr",align:"center"},"To be verified")))),Object(b.b)("h2",{id:"python"},"Python"),Object(b.b)("table",null,Object(b.b)("thead",{parentName:"table"},Object(b.b)("tr",{parentName:"thead"},Object(b.b)("th",{parentName:"tr",align:null},"Python Version"),Object(b.b)("th",{parentName:"tr",align:"center"},"Support?"))),Object(b.b)("tbody",{parentName:"table"},Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"3.5 (or earlier)"),Object(b.b)("td",{parentName:"tr",align:"center"},"X")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"3.6, 3.7"),Object(b.b)("td",{parentName:"tr",align:"center"},"\u221a")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"3.8 (or later)"),Object(b.b)("td",{parentName:"tr",align:"center"},"To be verified")))))}p.isMDXComponent=!0},209:function(e,t,n){"use strict";n.d(t,"a",(function(){return d})),n.d(t,"b",(function(){return O}));var r=n(0),a=n.n(r);function b(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?c(Object(n),!0).forEach((function(t){b(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):c(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},b=Object.keys(e);for(r=0;r<b.length;r++)n=b[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var b=Object.getOwnPropertySymbols(e);for(r=0;r<b.length;r++)n=b[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var o=a.a.createContext({}),p=function(e){var t=a.a.useContext(o),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},d=function(e){var t=p(e.components);return a.a.createElement(o.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},m=a.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,b=e.originalType,c=e.parentName,o=i(e,["components","mdxType","originalType","parentName"]),d=p(n),m=r,O=d["".concat(c,".").concat(m)]||d[m]||u[m]||b;return n?a.a.createElement(O,l(l({ref:t},o),{},{components:n})):a.a.createElement(O,l({ref:t},o))}));function O(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var b=n.length,c=new Array(b);c[0]=m;var l={};for(var i in t)hasOwnProperty.call(t,i)&&(l[i]=t[i]);l.originalType=e,l.mdxType="string"==typeof e?e:r,c[1]=l;for(var o=2;o<b;o++)c[o]=n[o];return a.a.createElement.apply(null,c)}return a.a.createElement.apply(null,n)}m.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[53],{120:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return c})),n.d(t,"metadata",(function(){return l})),n.d(t,"toc",(function(){return i})),n.d(t,"default",(function(){return p}));var r=n(3),a=n(7),b=(n(0),n(194)),c={title:"Dependencies for Submarine"},l={unversionedId:"devDocs/Dependencies",id:"devDocs/Dependencies",isDocsHomePage:!1,title:"Dependencies for Submarine",description:"\x3c!--",source:"@site/docs/devDocs/Dependencies.md",slug:"/devDocs/Dependencies",permalink:"/docs/next/devDocs/Dependencies",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/devDocs/Dependencies.md",version:"current",sidebar:"docs",previous:{title:"Project Architecture",permalink:"/docs/next/devDocs/README"},next:{title:"How to Build Submarine",permalink:"/docs/next/devDocs/BuildFromCode"}},i=[{value:"Kubernetes",id:"kubernetes",children:[]},{value:"KinD",id:"kind",children:[]},{value:"Java",id:"java",children:[]},{value:"Maven",id:"maven",children:[]},{value:"Docker",id:"docker",children:[]},{value:"Helm",id:"helm",children:[]},{value:"NodeJS",id:"nodejs",children:[]},{value:"Go",id:"go",children:[]},{value:"Python",id:"python",children:[]}],o={toc:i};function p(e){var t=e.components,n=Object(a.a)(e,["components"]);return Object(b.b)("wrapper",Object(r.a)({},o,n,{components:t,mdxType:"MDXLayout"}),Object(b.b)("ul",null,Object(b.b)("li",{parentName:"ul"},"These are the dependencies currently used by Apache Submarine.")),Object(b.b)("h2",{id:"kubernetes"},"Kubernetes"),Object(b.b)("table",null,Object(b.b)("thead",{parentName:"table"},Object(b.b)("tr",{parentName:"thead"},Object(b.b)("th",{parentName:"tr",align:null},"Kubernetes Version"),Object(b.b)("th",{parentName:"tr",align:"center"},"Support?"))),Object(b.b)("tbody",{parentName:"table"},Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"1.14.x (or earlier)"),Object(b.b)("td",{parentName:"tr",align:"center"},"X")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"1.15.x - 1.21.x"),Object(b.b)("td",{parentName:"tr",align:"center"},"\u221a")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"1.22.x (or later)"),Object(b.b)("td",{parentName:"tr",align:"center"},"X")))),Object(b.b)("h2",{id:"kind"},"KinD"),Object(b.b)("table",null,Object(b.b)("thead",{parentName:"table"},Object(b.b)("tr",{parentName:"thead"},Object(b.b)("th",{parentName:"tr",align:null},"KinD Version"),Object(b.b)("th",{parentName:"tr",align:"center"},"Support?"))),Object(b.b)("tbody",{parentName:"table"},Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"0.5.x (or earlier)"),Object(b.b)("td",{parentName:"tr",align:"center"},"X")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"0.6.x"),Object(b.b)("td",{parentName:"tr",align:"center"},"\u221a")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"0.7.x"),Object(b.b)("td",{parentName:"tr",align:"center"},"\u221a")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"0.8.x"),Object(b.b)("td",{parentName:"tr",align:"center"},"\u221a")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"0.9.x"),Object(b.b)("td",{parentName:"tr",align:"center"},"\u221a")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"0.10.x"),Object(b.b)("td",{parentName:"tr",align:"center"},"\u221a")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"0.11.x"),Object(b.b)("td",{parentName:"tr",align:"center"},"\u221a")))),Object(b.b)("h2",{id:"java"},"Java"),Object(b.b)("table",null,Object(b.b)("thead",{parentName:"table"},Object(b.b)("tr",{parentName:"thead"},Object(b.b)("th",{parentName:"tr",align:null},"JDK Version"),Object(b.b)("th",{parentName:"tr",align:"center"},"Support?"))),Object(b.b)("tbody",{parentName:"table"},Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"8"),Object(b.b)("td",{parentName:"tr",align:"center"},"\u221a")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"11"),Object(b.b)("td",{parentName:"tr",align:"center"},"X")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"17"),Object(b.b)("td",{parentName:"tr",align:"center"},"X")))),Object(b.b)("h2",{id:"maven"},"Maven"),Object(b.b)("ul",null,Object(b.b)("li",{parentName:"ul"},"3.3 or later ( < 3.8.1 )")),Object(b.b)("h2",{id:"docker"},"Docker"),Object(b.b)("ul",null,Object(b.b)("li",{parentName:"ul"},"Latest")),Object(b.b)("h2",{id:"helm"},"Helm"),Object(b.b)("ul",null,Object(b.b)("li",{parentName:"ul"},"Version 3")),Object(b.b)("h2",{id:"nodejs"},"NodeJS"),Object(b.b)("ul",null,Object(b.b)("li",{parentName:"ul"},"14 (or later)")),Object(b.b)("h2",{id:"go"},"Go"),Object(b.b)("table",null,Object(b.b)("thead",{parentName:"table"},Object(b.b)("tr",{parentName:"thead"},Object(b.b)("th",{parentName:"tr",align:null},"Go Version"),Object(b.b)("th",{parentName:"tr",align:"center"},"Support?"))),Object(b.b)("tbody",{parentName:"table"},Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"1.15"),Object(b.b)("td",{parentName:"tr",align:"center"},"X")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"1.16"),Object(b.b)("td",{parentName:"tr",align:"center"},"\u221a")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"1.17 (or later)"),Object(b.b)("td",{parentName:"tr",align:"center"},"To be verified")))),Object(b.b)("h2",{id:"python"},"Python"),Object(b.b)("table",null,Object(b.b)("thead",{parentName:"table"},Object(b.b)("tr",{parentName:"thead"},Object(b.b)("th",{parentName:"tr",align:null},"Python Version"),Object(b.b)("th",{parentName:"tr",align:"center"},"Support?"))),Object(b.b)("tbody",{parentName:"table"},Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"3.5 (or earlier)"),Object(b.b)("td",{parentName:"tr",align:"center"},"X")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"3.6, 3.7"),Object(b.b)("td",{parentName:"tr",align:"center"},"\u221a")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"3.8 (or later)"),Object(b.b)("td",{parentName:"tr",align:"center"},"To be verified")))))}p.isMDXComponent=!0},194:function(e,t,n){"use strict";n.d(t,"a",(function(){return d})),n.d(t,"b",(function(){return O}));var r=n(0),a=n.n(r);function b(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?c(Object(n),!0).forEach((function(t){b(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):c(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},b=Object.keys(e);for(r=0;r<b.length;r++)n=b[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var b=Object.getOwnPropertySymbols(e);for(r=0;r<b.length;r++)n=b[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var o=a.a.createContext({}),p=function(e){var t=a.a.useContext(o),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},d=function(e){var t=p(e.components);return a.a.createElement(o.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},m=a.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,b=e.originalType,c=e.parentName,o=i(e,["components","mdxType","originalType","parentName"]),d=p(n),m=r,O=d["".concat(c,".").concat(m)]||d[m]||u[m]||b;return n?a.a.createElement(O,l(l({ref:t},o),{},{components:n})):a.a.createElement(O,l({ref:t},o))}));function O(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var b=n.length,c=new Array(b);c[0]=m;var l={};for(var i in t)hasOwnProperty.call(t,i)&&(l[i]=t[i]);l.originalType=e,l.mdxType="string"==typeof e?e:r,c[1]=l;for(var o=2;o<b;o++)c[o]=n[o];return a.a.createElement.apply(null,c)}return a.a.createElement.apply(null,n)}m.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/73bafbdc.aea1d01f.js b/73bafbdc.f052f259.js
similarity index 98%
rename from 73bafbdc.aea1d01f.js
rename to 73bafbdc.f052f259.js
index 4444dd5..8ae50c0 100644
--- a/73bafbdc.aea1d01f.js
+++ b/73bafbdc.f052f259.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[62],{129:function(e,n,t){"use strict";t.r(n),t.d(n,"frontMatter",(function(){return m})),t.d(n,"metadata",(function(){return i})),t.d(n,"toc",(function(){return c})),t.d(n,"default",(function(){return b}));var a=t(3),r=t(7),l=(t(0),t(209)),m={title:"Experiment REST API"},i={unversionedId:"userDocs/api/experiment",id:"version-0.6.0/userDocs/api/experiment",isDocsHomePage:!1,title:"Experiment REST API",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/userDocs/api/experiment.md",slug:"/userDocs/api/experiment",permalink:"/docs/userDocs/api/experiment",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/api/experiment.md",version:"0.6.0",sidebar:"docs",previous:{title:"Jupyter Notebook",permalink:"/docs/gettingStarted/notebook"},next:{title:"Environment REST API",permalink:"/docs/userDocs/api/environment"}},c=[{value:"Create Experiment (Using Anonymous/Embedded Environment)",id:"create-experiment-using-anonymousembedded-environment",children:[{value:"Parameters",id:"parameters",children:[]},{value:"Code Example",id:"code-example",children:[]}]},{value:"Create Experiment (Using Pre-defined/Stored Environment)",id:"create-experiment-using-pre-definedstored-environment",children:[{value:"Parameters",id:"parameters-1",children:[]},{value:"Code Example",id:"code-example-1",children:[]}]},{value:"List Experiment",id:"list-experiment",children:[{value:"Code Example",id:"code-example-2",children:[]}]},{value:"Get Experiment",id:"get-experiment",children:[{value:"Parameters",id:"parameters-2",children:[]},{value:"Code Example",id:"code-example-3",children:[]}]},{value:"Patch Experiment",id:"patch-experiment",children:[{value:"Parameters",id:"parameters-3",children:[]},{value:"Code Example",id:"code-example-4",children:[]},{value:"Delete Experiment",id:"delete-experiment",children:[]},{value:"Parameters",id:"parameters-4",children:[]},{value:"Code Example",id:"code-example-5",children:[]}]},{value:"List Experiment Log",id:"list-experiment-log",children:[{value:"Code Example",id:"code-example-6",children:[]}]},{value:"Get Experiment Log",id:"get-experiment-log",children:[{value:"Parameters",id:"parameters-5",children:[]},{value:"Code Example",id:"code-example-7",children:[]}]}],p={toc:c};function b(e){var n=e.components,t=Object(r.a)(e,["components"]);return Object(l.b)("wrapper",Object(a.a)({},p,t,{components:n,mdxType:"MDXLayout"}),Object(l.b)("h2",{id:"create-experiment-using-anonymousembedded-environment"},"Create Experiment (Using Anonymous/Embedded Environment)"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},"POST /api/v1/experiment\n")),Object(l.b)("h3",{id:"parameters"},"Parameters"),Object(l.b)("p",null,"Put ExperimentSpec in request body."),Object(l.b)("h4",{id:"experimentspec"},Object(l.b)("strong",{parentName:"h4"},"ExperimentSpec")),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"meta"),Object(l.b)("td",{parentName:"tr",align:null},"ExperimentMeta"),Object(l.b)("td",{parentName:"tr",align:null},"Meta data of the experiment template.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"environment"),Object(l.b)("td",{parentName:"tr",align:null},"EnvironmentSpec"),Object(l.b)("td",{parentName:"tr",align:null},"Environment of the experiment template.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"spec"),Object(l.b)("td",{parentName:"tr",align:null},"Map<String, ExperimentTaskSpec>"),Object(l.b)("td",{parentName:"tr",align:null},"Spec of pods.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"code"),Object(l.b)("td",{parentName:"tr",align:null},"CodeSpec"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment codespec.")))),Object(l.b)("h4",{id:"experimentmeta"},Object(l.b)("strong",{parentName:"h4"},"ExperimentMeta")),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"namespace"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment namespace.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"framework"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Experiemnt framework.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"cmd"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Command.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"envVars"),Object(l.b)("td",{parentName:"tr",align:null},"Map<String, String>"),Object(l.b)("td",{parentName:"tr",align:null},"Environmental variables.")))),Object(l.b)("h4",{id:"environmentspec"},Object(l.b)("strong",{parentName:"h4"},"EnvironmentSpec")),Object(l.b)("p",null,"There are two types of environment: Anonymous and Predefined."),Object(l.b)("ul",null,Object(l.b)("li",{parentName:"ul"},"Anonymous environment: only specify ",Object(l.b)("inlineCode",{parentName:"li"},"dockerImage")," in environment spec. The container will be built on the docker image."),Object(l.b)("li",{parentName:"ul"},"Embedded environment: specify ",Object(l.b)("inlineCode",{parentName:"li"},"name")," in environment spec. The container will be built on the existing environment (including dockerImage and kernalSpec).")),Object(l.b)("p",null,"See more details in ",Object(l.b)("a",{parentName:"p",href:"https://submarine.apache.org/docs/userDocs/api/environment"},"environment api"),"."),Object(l.b)("h4",{id:"experimenttaskspec"},Object(l.b)("strong",{parentName:"h4"},"ExperimentTaskSpec")),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"replicas"),Object(l.b)("td",{parentName:"tr",align:null},"Integer"),Object(l.b)("td",{parentName:"tr",align:null},"Numbers of replicas.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"resoureces"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Resouces of the task")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Task name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"image"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Image name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"cmd"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Command.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"envVars"),Object(l.b)("td",{parentName:"tr",align:null},"Map<String, String>"),Object(l.b)("td",{parentName:"tr",align:null},"Environmental variables.")))),Object(l.b)("h4",{id:"codespec"},Object(l.b)("strong",{parentName:"h4"},"CodeSpec")),Object(l.b)("p",null,"Currently only support pulling from github. HDFS, NFS and s3 are in development"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"syncMode"),Object(l.b)("td",{parentName:"tr",align:null},"String ","(","git","|","hdfs","|","nfs","|","s3",")"),Object(l.b)("td",{parentName:"tr",align:null},"sync mode of code spec.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"url"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"url of code spec.")))),Object(l.b)("h3",{id:"code-example"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("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')),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    "experimentId":"experiment_1626160071451_0002",\n    "name":"tf-mnist-json",\n    "uid":"5a6ec922-6c90-43d4-844f-039f6804ed36",\n    "status":"Accepted",\n    "acceptedTime":"2021-07-13T16:47:51.000+08:00",\n    "createdTime":null,\n    "runningTime":null,\n    "finishedTime":null,\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\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150",\n        "envVars":{"ENV_1":"ENV1"}\n      },\n      "environment":{\n        "name":null,\n        "dockerImage":null,\n        "kernelSpec":null,\n        "description":null,\n        "image":"apache/submarine:tf-mnist-with-summaries-1.0"\n      },\n      "spec":{\n        "Ps":{\n          "replicas":1,\n          "resources":"cpu\\u003d1,memory\\u003d1024M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"1024M","cpu":"1"}\n        },\n        "Worker":{\n          "replicas":1,\n          "resources":"cpu\\u003d1,memory\\u003d2048M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"2048M","cpu":"1"}\n        }\n      },\n      "code":null\n    }\n  },\n  "attributes":{}\n}\n')),Object(l.b)("h2",{id:"create-experiment-using-pre-definedstored-environment"},"Create Experiment (Using Pre-defined/Stored Environment)"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"POST /api/v1/experiment\n")),Object(l.b)("h3",{id:"parameters-1"},"Parameters"),Object(l.b)("p",null,"Put ExperimentSpec in request body."),Object(l.b)("h3",{id:"code-example-1"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("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')),Object(l.b)("p",null,'Above example assume environment "my-submarine-env" already exists in Submarine. Please refer Environment API Reference doc to ',Object(l.b)("a",{parentName:"p",href:"https://submarine.apache.org/docs/userDocs/api/environment"},"environment rest api"),"."),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    "experimentId":"experiment_1626160071451_0005",\n    "name":"tf-mnist-json",\n    "uid":"4944c603-0f21-49e5-826a-2ff820bb4d93",\n    "status":"Accepted",\n    "acceptedTime":"2021-07-13T16:57:27.000+08:00",\n    "createdTime":null,\n    "runningTime":null,\n    "finishedTime":null,\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\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150",\n        "envVars":{"ENV_1":"ENV1"}\n      },\n      "environment":{\n        "name":"my-submarine-env",\n        "dockerImage":null,\n        "kernelSpec":null,\n        "description":null,\n        "image":null\n      },\n      "spec":{\n        "Ps":{\n          "replicas":1,\n          "resources":"cpu\\u003d1,memory\\u003d1024M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"1024M","cpu":"1"}\n        },\n        "Worker":{\n          "replicas":1,\n          "resources":"cpu\\u003d1,memory\\u003d2048M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"2048M","cpu":"1"}\n        }\n      },\n      "code":null\n    }\n  },\n  "attributes":{}\n}\n')),Object(l.b)("h2",{id:"list-experiment"},"List Experiment"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"GET /api/v1/experiment\n")),Object(l.b)("h3",{id:"code-example-2"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/experiment\n")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":\n  [{\n    "experimentId":"experiment_1626160071451_0001",\n    "name":"newexperiment1",\n    "uid":"b895985c-411c-4e89-90e0-c60a2a8a4235",\n    "status":"Succeeded",\n    "acceptedTime":"2021-07-13T16:21:31.000+08:00",\n    "createdTime":"2021-07-13T16:21:31.000+08:00",\n    "runningTime":"2021-07-13T16:21:46.000+08:00",\n    "finishedTime":"2021-07-13T16:26:54.000+08:00",\n    "spec":{\n      "meta":{\n        "name":"newexperiment1",\n        "namespace":"default",\n        "framework":"TensorFlow",\n        "cmd":"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150",\n        "envVars":{"ENV1":"ENV1"}\n      },\n      "environment":{\n        "name":null,\n        "dockerImage":null,\n        "kernelSpec":null,\n        "description":null,\n        "image":"apache/submarine:tf-mnist-with-summaries-1.0"\n      },\n      "spec":{\n        "Ps":{\n          "replicas":1,\n          "resources":"cpu\\u003d1,memory\\u003d1024M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"1024M","cpu":"1"}\n        },\n        "Worker":{\n          "replicas":1,\n          "resources":"cpu\\u003d1,memory\\u003d1024M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"1024M","cpu":"1"}\n        }\n      },\n      "code":null\n    }\n  },\n  {\n    "experimentId":"experiment_1626160071451_0005",\n    "name":"tf-mnist-json",\n    "uid":"4944c603-0f21-49e5-826a-2ff820bb4d93",\n    "status":"Accepted",\n    "acceptedTime":"2021-07-13T16:57:27.000+08:00",\n    "createdTime":null,\n    "runningTime":null,\n    "finishedTime":null,\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\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150",\n        "envVars":{"ENV_1":"ENV1"}\n      },\n      "environment":{\n        "name":"my-submarine-env",\n        "dockerImage":null,\n        "kernelSpec":null,\n        "description":null,\n        "image":null\n      },\n      "spec":{\n        "Ps":{\n          "replicas":1,\n          "resources":"cpu\\u003d1,memory\\u003d1024M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"1024M","cpu":"1"}\n        },\n        "Worker":{\n          "replicas":1,\n          "resources":"cpu\\u003d1,memory\\u003d2048M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"2048M","cpu":"1"}\n        }\n      },\n      "code":null\n    }\n  }],\n  "attributes":{}\n}\n')),Object(l.b)("h2",{id:"get-experiment"},"Get Experiment"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"GET /api/v1/experiment/{id}\n")),Object(l.b)("h3",{id:"parameters-2"},"Parameters"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"In"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"id"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"path"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment id.")))),Object(l.b)("h3",{id:"code-example-3"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/experiment/experiment_1626160071451_0005\n")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    "experimentId":"experiment_1626160071451_0005",\n    "name":"tf-mnist-json",\n    "uid":"4944c603-0f21-49e5-826a-2ff820bb4d93",\n    "status":"Accepted",\n    "acceptedTime":"2021-07-13T16:57:27.000+08:00",\n    "createdTime":null,\n    "runningTime":null,\n    "finishedTime":null,\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\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150",\n        "envVars":{"ENV_1":"ENV1"}\n      },\n      "environment":{\n        "name":"my-submarine-env",\n        "dockerImage":null,\n        "kernelSpec":null,\n        "description":null,\n        "image":null\n      },\n      "spec":{\n        "Ps":{\n          "replicas":1,\n          "resources":"cpu\\u003d1,memory\\u003d1024M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"1024M","cpu":"1"}\n        },\n        "Worker":{\n          "replicas":1,\n          "resources":"cpu\\u003d1,memory\\u003d2048M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"2048M","cpu":"1"}\n        }\n      },\n      "code":null\n    }\n  },\n  "attributes":{}\n}\n')),Object(l.b)("h2",{id:"patch-experiment"},"Patch Experiment"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"PATCH /api/v1/experiment/{id}\n")),Object(l.b)("h3",{id:"parameters-3"},"Parameters"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"In"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"id"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"path"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment id.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"meta"),Object(l.b)("td",{parentName:"tr",align:null},"ExperimentMeta"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Meta data of the experiment template.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"environment"),Object(l.b)("td",{parentName:"tr",align:null},"EnvironmentSpec"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Environment of the experiment template.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"spec"),Object(l.b)("td",{parentName:"tr",align:null},"Map<String, ExperimentTaskSpec>"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Spec of pods.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"code"),Object(l.b)("td",{parentName:"tr",align:null},"CodeSpec"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"TODO")))),Object(l.b)("h3",{id:"code-example-4"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("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_1626160071451_0005\n')),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    "experimentId":"experiment_1626160071451_0005",\n    "name":"tf-mnist-json",\n    "uid":"4944c603-0f21-49e5-826a-2ff820bb4d93",\n    "status":"Accepted",\n    "acceptedTime":"2021-07-13T16:57:27.000+08:00",\n    "createdTime":null,\n    "runningTime":null,\n    "finishedTime":null,\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\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150",\n        "envVars":{"ENV_1":"ENV1"}\n      },\n      "environment":{\n        "name":null,\n        "dockerImage":null,\n        "kernelSpec":null,\n        "description":null,\n        "image":"apache/submarine:tf-mnist-with-summaries-1.0"\n      },\n      "spec":{\n        "Ps":{\n          "replicas":1,\n          "resources":"cpu\\u003d1,memory\\u003d1024M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"1024M","cpu":"1"}\n        },\n        "Worker":{\n          "replicas":2,\n          "resources":"cpu\\u003d1,memory\\u003d2048M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"2048M","cpu":"1"}\n        }\n      },\n      "code":null\n    }\n  },\n  "attributes":{}\n}\n')),Object(l.b)("h3",{id:"delete-experiment"},"Delete Experiment"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"DELETE /api/v1/experiment/{id}\n")),Object(l.b)("h3",{id:"parameters-4"},"Parameters"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"In"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"id"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"path"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment id.")))),Object(l.b)("h3",{id:"code-example-5"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},"curl -X DELETE http://127.0.0.1:32080/api/v1/experiment/experiment_1626160071451_0005\n")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    "experimentId":"experiment_1626160071451_0005",\n    "name":"tf-mnist-json",\n    "uid":"4944c603-0f21-49e5-826a-2ff820bb4d93",\n    "status":"Deleted",\n    "acceptedTime":null,\n    "createdTime":null,\n    "runningTime":null,\n    "finishedTime":null,\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\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150",\n        "envVars":{"ENV_1":"ENV1"}\n      },\n      "environment":{\n        "name":null,\n        "dockerImage":null,\n        "kernelSpec":null,\n        "description":null,\n        "image":"apache/submarine:tf-mnist-with-summaries-1.0"\n      },\n      "spec":{\n        "Ps":{\n          "replicas":1,\n          "resources":"cpu\\u003d1,memory\\u003d1024M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"1024M","cpu":"1"}\n        },\n        "Worker":{\n          "replicas":2,\n          "resources":"cpu\\u003d1,memory\\u003d2048M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"2048M","cpu":"1"}\n        }\n      },\n      "code":null\n    }\n  },\n  "attributes":{}\n}\n')),Object(l.b)("h2",{id:"list-experiment-log"},"List Experiment Log"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"GET /api/v1/experiment/logs\n")),Object(l.b)("h3",{id:"code-example-6"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/experiment/logs\n")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":\n  [{\n    "experimentId":"experiment_1626160071451_0001",\n    "logContent":\n    [{\n      "podName":"newexperiment1-ps-0",\n      "podLog":[]\n    },\n    {\n      "podName":"newexperiment1-worker-0",\n      "podLog":[]\n    }]\n  }],\n  "attributes":{}\n}\n')),Object(l.b)("h2",{id:"get-experiment-log"},"Get Experiment Log"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"GET /api/v1/experiment/logs/{id}\n")),Object(l.b)("h3",{id:"parameters-5"},"Parameters"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"In"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"id"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"path"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment id.")))),Object(l.b)("h3",{id:"code-example-7"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/experiment/logs/experiment_1626160071451_0001\n")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    "experimentId":"experiment_1626160071451_0001",\n    "logContent":\n    [{\n      "podName":"newexperiment1-ps-0",\n      "podLog":[]\n    },\n    {\n      "podName":"newexperiment1-worker-0",\n      "podLog":[]\n    }]\n  },\n  "attributes":{}\n}\n')))}b.isMDXComponent=!0},209:function(e,n,t){"use strict";t.d(n,"a",(function(){return u})),t.d(n,"b",(function(){return d}));var a=t(0),r=t.n(a);function l(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function m(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function i(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?m(Object(t),!0).forEach((function(n){l(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):m(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function c(e,n){if(null==e)return{};var t,a,r=function(e,n){if(null==e)return{};var t,a,r={},l=Object.keys(e);for(a=0;a<l.length;a++)t=l[a],n.indexOf(t)>=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a<l.length;a++)t=l[a],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var p=r.a.createContext({}),b=function(e){var n=r.a.useContext(p),t=n;return e&&(t="function"==typeof e?e(n):i(i({},n),e)),t},u=function(e){var n=b(e.components);return r.a.createElement(p.Provider,{value:n},e.children)},s={inlineCode:"code",wrapper:function(e){var n=e.children;return r.a.createElement(r.a.Fragment,{},n)}},o=r.a.forwardRef((function(e,n){var t=e.components,a=e.mdxType,l=e.originalType,m=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),u=b(t),o=a,d=u["".concat(m,".").concat(o)]||u[o]||s[o]||l;return t?r.a.createElement(d,i(i({ref:n},p),{},{components:t})):r.a.createElement(d,i({ref:n},p))}));function d(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var l=t.length,m=new Array(l);m[0]=o;var i={};for(var c in n)hasOwnProperty.call(n,c)&&(i[c]=n[c]);i.originalType=e,i.mdxType="string"==typeof e?e:a,m[1]=i;for(var p=2;p<l;p++)m[p]=t[p];return r.a.createElement.apply(null,m)}return r.a.createElement.apply(null,t)}o.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[54],{121:function(e,n,t){"use strict";t.r(n),t.d(n,"frontMatter",(function(){return m})),t.d(n,"metadata",(function(){return i})),t.d(n,"toc",(function(){return c})),t.d(n,"default",(function(){return b}));var a=t(3),r=t(7),l=(t(0),t(194)),m={title:"Experiment REST API"},i={unversionedId:"userDocs/api/experiment",id:"version-0.6.0/userDocs/api/experiment",isDocsHomePage:!1,title:"Experiment REST API",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/userDocs/api/experiment.md",slug:"/userDocs/api/experiment",permalink:"/docs/userDocs/api/experiment",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/api/experiment.md",version:"0.6.0",sidebar:"docs",previous:{title:"Jupyter Notebook",permalink:"/docs/gettingStarted/notebook"},next:{title:"Environment REST API",permalink:"/docs/userDocs/api/environment"}},c=[{value:"Create Experiment (Using Anonymous/Embedded Environment)",id:"create-experiment-using-anonymousembedded-environment",children:[{value:"Parameters",id:"parameters",children:[]},{value:"Code Example",id:"code-example",children:[]}]},{value:"Create Experiment (Using Pre-defined/Stored Environment)",id:"create-experiment-using-pre-definedstored-environment",children:[{value:"Parameters",id:"parameters-1",children:[]},{value:"Code Example",id:"code-example-1",children:[]}]},{value:"List Experiment",id:"list-experiment",children:[{value:"Code Example",id:"code-example-2",children:[]}]},{value:"Get Experiment",id:"get-experiment",children:[{value:"Parameters",id:"parameters-2",children:[]},{value:"Code Example",id:"code-example-3",children:[]}]},{value:"Patch Experiment",id:"patch-experiment",children:[{value:"Parameters",id:"parameters-3",children:[]},{value:"Code Example",id:"code-example-4",children:[]},{value:"Delete Experiment",id:"delete-experiment",children:[]},{value:"Parameters",id:"parameters-4",children:[]},{value:"Code Example",id:"code-example-5",children:[]}]},{value:"List Experiment Log",id:"list-experiment-log",children:[{value:"Code Example",id:"code-example-6",children:[]}]},{value:"Get Experiment Log",id:"get-experiment-log",children:[{value:"Parameters",id:"parameters-5",children:[]},{value:"Code Example",id:"code-example-7",children:[]}]}],p={toc:c};function b(e){var n=e.components,t=Object(r.a)(e,["components"]);return Object(l.b)("wrapper",Object(a.a)({},p,t,{components:n,mdxType:"MDXLayout"}),Object(l.b)("h2",{id:"create-experiment-using-anonymousembedded-environment"},"Create Experiment (Using Anonymous/Embedded Environment)"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},"POST /api/v1/experiment\n")),Object(l.b)("h3",{id:"parameters"},"Parameters"),Object(l.b)("p",null,"Put ExperimentSpec in request body."),Object(l.b)("h4",{id:"experimentspec"},Object(l.b)("strong",{parentName:"h4"},"ExperimentSpec")),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"meta"),Object(l.b)("td",{parentName:"tr",align:null},"ExperimentMeta"),Object(l.b)("td",{parentName:"tr",align:null},"Meta data of the experiment template.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"environment"),Object(l.b)("td",{parentName:"tr",align:null},"EnvironmentSpec"),Object(l.b)("td",{parentName:"tr",align:null},"Environment of the experiment template.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"spec"),Object(l.b)("td",{parentName:"tr",align:null},"Map<String, ExperimentTaskSpec>"),Object(l.b)("td",{parentName:"tr",align:null},"Spec of pods.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"code"),Object(l.b)("td",{parentName:"tr",align:null},"CodeSpec"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment codespec.")))),Object(l.b)("h4",{id:"experimentmeta"},Object(l.b)("strong",{parentName:"h4"},"ExperimentMeta")),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"namespace"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment namespace.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"framework"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Experiemnt framework.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"cmd"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Command.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"envVars"),Object(l.b)("td",{parentName:"tr",align:null},"Map<String, String>"),Object(l.b)("td",{parentName:"tr",align:null},"Environmental variables.")))),Object(l.b)("h4",{id:"environmentspec"},Object(l.b)("strong",{parentName:"h4"},"EnvironmentSpec")),Object(l.b)("p",null,"There are two types of environment: Anonymous and Predefined."),Object(l.b)("ul",null,Object(l.b)("li",{parentName:"ul"},"Anonymous environment: only specify ",Object(l.b)("inlineCode",{parentName:"li"},"dockerImage")," in environment spec. The container will be built on the docker image."),Object(l.b)("li",{parentName:"ul"},"Embedded environment: specify ",Object(l.b)("inlineCode",{parentName:"li"},"name")," in environment spec. The container will be built on the existing environment (including dockerImage and kernalSpec).")),Object(l.b)("p",null,"See more details in ",Object(l.b)("a",{parentName:"p",href:"https://submarine.apache.org/docs/userDocs/api/environment"},"environment api"),"."),Object(l.b)("h4",{id:"experimenttaskspec"},Object(l.b)("strong",{parentName:"h4"},"ExperimentTaskSpec")),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"replicas"),Object(l.b)("td",{parentName:"tr",align:null},"Integer"),Object(l.b)("td",{parentName:"tr",align:null},"Numbers of replicas.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"resoureces"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Resouces of the task")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Task name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"image"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Image name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"cmd"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Command.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"envVars"),Object(l.b)("td",{parentName:"tr",align:null},"Map<String, String>"),Object(l.b)("td",{parentName:"tr",align:null},"Environmental variables.")))),Object(l.b)("h4",{id:"codespec"},Object(l.b)("strong",{parentName:"h4"},"CodeSpec")),Object(l.b)("p",null,"Currently only support pulling from github. HDFS, NFS and s3 are in development"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"syncMode"),Object(l.b)("td",{parentName:"tr",align:null},"String ","(","git","|","hdfs","|","nfs","|","s3",")"),Object(l.b)("td",{parentName:"tr",align:null},"sync mode of code spec.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"url"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"url of code spec.")))),Object(l.b)("h3",{id:"code-example"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("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')),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    "experimentId":"experiment_1626160071451_0002",\n    "name":"tf-mnist-json",\n    "uid":"5a6ec922-6c90-43d4-844f-039f6804ed36",\n    "status":"Accepted",\n    "acceptedTime":"2021-07-13T16:47:51.000+08:00",\n    "createdTime":null,\n    "runningTime":null,\n    "finishedTime":null,\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\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150",\n        "envVars":{"ENV_1":"ENV1"}\n      },\n      "environment":{\n        "name":null,\n        "dockerImage":null,\n        "kernelSpec":null,\n        "description":null,\n        "image":"apache/submarine:tf-mnist-with-summaries-1.0"\n      },\n      "spec":{\n        "Ps":{\n          "replicas":1,\n          "resources":"cpu\\u003d1,memory\\u003d1024M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"1024M","cpu":"1"}\n        },\n        "Worker":{\n          "replicas":1,\n          "resources":"cpu\\u003d1,memory\\u003d2048M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"2048M","cpu":"1"}\n        }\n      },\n      "code":null\n    }\n  },\n  "attributes":{}\n}\n')),Object(l.b)("h2",{id:"create-experiment-using-pre-definedstored-environment"},"Create Experiment (Using Pre-defined/Stored Environment)"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"POST /api/v1/experiment\n")),Object(l.b)("h3",{id:"parameters-1"},"Parameters"),Object(l.b)("p",null,"Put ExperimentSpec in request body."),Object(l.b)("h3",{id:"code-example-1"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("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')),Object(l.b)("p",null,'Above example assume environment "my-submarine-env" already exists in Submarine. Please refer Environment API Reference doc to ',Object(l.b)("a",{parentName:"p",href:"https://submarine.apache.org/docs/userDocs/api/environment"},"environment rest api"),"."),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    "experimentId":"experiment_1626160071451_0005",\n    "name":"tf-mnist-json",\n    "uid":"4944c603-0f21-49e5-826a-2ff820bb4d93",\n    "status":"Accepted",\n    "acceptedTime":"2021-07-13T16:57:27.000+08:00",\n    "createdTime":null,\n    "runningTime":null,\n    "finishedTime":null,\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\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150",\n        "envVars":{"ENV_1":"ENV1"}\n      },\n      "environment":{\n        "name":"my-submarine-env",\n        "dockerImage":null,\n        "kernelSpec":null,\n        "description":null,\n        "image":null\n      },\n      "spec":{\n        "Ps":{\n          "replicas":1,\n          "resources":"cpu\\u003d1,memory\\u003d1024M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"1024M","cpu":"1"}\n        },\n        "Worker":{\n          "replicas":1,\n          "resources":"cpu\\u003d1,memory\\u003d2048M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"2048M","cpu":"1"}\n        }\n      },\n      "code":null\n    }\n  },\n  "attributes":{}\n}\n')),Object(l.b)("h2",{id:"list-experiment"},"List Experiment"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"GET /api/v1/experiment\n")),Object(l.b)("h3",{id:"code-example-2"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/experiment\n")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":\n  [{\n    "experimentId":"experiment_1626160071451_0001",\n    "name":"newexperiment1",\n    "uid":"b895985c-411c-4e89-90e0-c60a2a8a4235",\n    "status":"Succeeded",\n    "acceptedTime":"2021-07-13T16:21:31.000+08:00",\n    "createdTime":"2021-07-13T16:21:31.000+08:00",\n    "runningTime":"2021-07-13T16:21:46.000+08:00",\n    "finishedTime":"2021-07-13T16:26:54.000+08:00",\n    "spec":{\n      "meta":{\n        "name":"newexperiment1",\n        "namespace":"default",\n        "framework":"TensorFlow",\n        "cmd":"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150",\n        "envVars":{"ENV1":"ENV1"}\n      },\n      "environment":{\n        "name":null,\n        "dockerImage":null,\n        "kernelSpec":null,\n        "description":null,\n        "image":"apache/submarine:tf-mnist-with-summaries-1.0"\n      },\n      "spec":{\n        "Ps":{\n          "replicas":1,\n          "resources":"cpu\\u003d1,memory\\u003d1024M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"1024M","cpu":"1"}\n        },\n        "Worker":{\n          "replicas":1,\n          "resources":"cpu\\u003d1,memory\\u003d1024M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"1024M","cpu":"1"}\n        }\n      },\n      "code":null\n    }\n  },\n  {\n    "experimentId":"experiment_1626160071451_0005",\n    "name":"tf-mnist-json",\n    "uid":"4944c603-0f21-49e5-826a-2ff820bb4d93",\n    "status":"Accepted",\n    "acceptedTime":"2021-07-13T16:57:27.000+08:00",\n    "createdTime":null,\n    "runningTime":null,\n    "finishedTime":null,\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\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150",\n        "envVars":{"ENV_1":"ENV1"}\n      },\n      "environment":{\n        "name":"my-submarine-env",\n        "dockerImage":null,\n        "kernelSpec":null,\n        "description":null,\n        "image":null\n      },\n      "spec":{\n        "Ps":{\n          "replicas":1,\n          "resources":"cpu\\u003d1,memory\\u003d1024M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"1024M","cpu":"1"}\n        },\n        "Worker":{\n          "replicas":1,\n          "resources":"cpu\\u003d1,memory\\u003d2048M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"2048M","cpu":"1"}\n        }\n      },\n      "code":null\n    }\n  }],\n  "attributes":{}\n}\n')),Object(l.b)("h2",{id:"get-experiment"},"Get Experiment"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"GET /api/v1/experiment/{id}\n")),Object(l.b)("h3",{id:"parameters-2"},"Parameters"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"In"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"id"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"path"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment id.")))),Object(l.b)("h3",{id:"code-example-3"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/experiment/experiment_1626160071451_0005\n")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    "experimentId":"experiment_1626160071451_0005",\n    "name":"tf-mnist-json",\n    "uid":"4944c603-0f21-49e5-826a-2ff820bb4d93",\n    "status":"Accepted",\n    "acceptedTime":"2021-07-13T16:57:27.000+08:00",\n    "createdTime":null,\n    "runningTime":null,\n    "finishedTime":null,\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\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150",\n        "envVars":{"ENV_1":"ENV1"}\n      },\n      "environment":{\n        "name":"my-submarine-env",\n        "dockerImage":null,\n        "kernelSpec":null,\n        "description":null,\n        "image":null\n      },\n      "spec":{\n        "Ps":{\n          "replicas":1,\n          "resources":"cpu\\u003d1,memory\\u003d1024M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"1024M","cpu":"1"}\n        },\n        "Worker":{\n          "replicas":1,\n          "resources":"cpu\\u003d1,memory\\u003d2048M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"2048M","cpu":"1"}\n        }\n      },\n      "code":null\n    }\n  },\n  "attributes":{}\n}\n')),Object(l.b)("h2",{id:"patch-experiment"},"Patch Experiment"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"PATCH /api/v1/experiment/{id}\n")),Object(l.b)("h3",{id:"parameters-3"},"Parameters"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"In"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"id"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"path"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment id.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"meta"),Object(l.b)("td",{parentName:"tr",align:null},"ExperimentMeta"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Meta data of the experiment template.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"environment"),Object(l.b)("td",{parentName:"tr",align:null},"EnvironmentSpec"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Environment of the experiment template.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"spec"),Object(l.b)("td",{parentName:"tr",align:null},"Map<String, ExperimentTaskSpec>"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Spec of pods.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"code"),Object(l.b)("td",{parentName:"tr",align:null},"CodeSpec"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"TODO")))),Object(l.b)("h3",{id:"code-example-4"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("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_1626160071451_0005\n')),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    "experimentId":"experiment_1626160071451_0005",\n    "name":"tf-mnist-json",\n    "uid":"4944c603-0f21-49e5-826a-2ff820bb4d93",\n    "status":"Accepted",\n    "acceptedTime":"2021-07-13T16:57:27.000+08:00",\n    "createdTime":null,\n    "runningTime":null,\n    "finishedTime":null,\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\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150",\n        "envVars":{"ENV_1":"ENV1"}\n      },\n      "environment":{\n        "name":null,\n        "dockerImage":null,\n        "kernelSpec":null,\n        "description":null,\n        "image":"apache/submarine:tf-mnist-with-summaries-1.0"\n      },\n      "spec":{\n        "Ps":{\n          "replicas":1,\n          "resources":"cpu\\u003d1,memory\\u003d1024M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"1024M","cpu":"1"}\n        },\n        "Worker":{\n          "replicas":2,\n          "resources":"cpu\\u003d1,memory\\u003d2048M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"2048M","cpu":"1"}\n        }\n      },\n      "code":null\n    }\n  },\n  "attributes":{}\n}\n')),Object(l.b)("h3",{id:"delete-experiment"},"Delete Experiment"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"DELETE /api/v1/experiment/{id}\n")),Object(l.b)("h3",{id:"parameters-4"},"Parameters"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"In"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"id"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"path"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment id.")))),Object(l.b)("h3",{id:"code-example-5"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},"curl -X DELETE http://127.0.0.1:32080/api/v1/experiment/experiment_1626160071451_0005\n")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    "experimentId":"experiment_1626160071451_0005",\n    "name":"tf-mnist-json",\n    "uid":"4944c603-0f21-49e5-826a-2ff820bb4d93",\n    "status":"Deleted",\n    "acceptedTime":null,\n    "createdTime":null,\n    "runningTime":null,\n    "finishedTime":null,\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\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150",\n        "envVars":{"ENV_1":"ENV1"}\n      },\n      "environment":{\n        "name":null,\n        "dockerImage":null,\n        "kernelSpec":null,\n        "description":null,\n        "image":"apache/submarine:tf-mnist-with-summaries-1.0"\n      },\n      "spec":{\n        "Ps":{\n          "replicas":1,\n          "resources":"cpu\\u003d1,memory\\u003d1024M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"1024M","cpu":"1"}\n        },\n        "Worker":{\n          "replicas":2,\n          "resources":"cpu\\u003d1,memory\\u003d2048M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"2048M","cpu":"1"}\n        }\n      },\n      "code":null\n    }\n  },\n  "attributes":{}\n}\n')),Object(l.b)("h2",{id:"list-experiment-log"},"List Experiment Log"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"GET /api/v1/experiment/logs\n")),Object(l.b)("h3",{id:"code-example-6"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/experiment/logs\n")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":\n  [{\n    "experimentId":"experiment_1626160071451_0001",\n    "logContent":\n    [{\n      "podName":"newexperiment1-ps-0",\n      "podLog":[]\n    },\n    {\n      "podName":"newexperiment1-worker-0",\n      "podLog":[]\n    }]\n  }],\n  "attributes":{}\n}\n')),Object(l.b)("h2",{id:"get-experiment-log"},"Get Experiment Log"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"GET /api/v1/experiment/logs/{id}\n")),Object(l.b)("h3",{id:"parameters-5"},"Parameters"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"In"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"id"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"path"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment id.")))),Object(l.b)("h3",{id:"code-example-7"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/experiment/logs/experiment_1626160071451_0001\n")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    "experimentId":"experiment_1626160071451_0001",\n    "logContent":\n    [{\n      "podName":"newexperiment1-ps-0",\n      "podLog":[]\n    },\n    {\n      "podName":"newexperiment1-worker-0",\n      "podLog":[]\n    }]\n  },\n  "attributes":{}\n}\n')))}b.isMDXComponent=!0},194:function(e,n,t){"use strict";t.d(n,"a",(function(){return u})),t.d(n,"b",(function(){return d}));var a=t(0),r=t.n(a);function l(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function m(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function i(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?m(Object(t),!0).forEach((function(n){l(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):m(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function c(e,n){if(null==e)return{};var t,a,r=function(e,n){if(null==e)return{};var t,a,r={},l=Object.keys(e);for(a=0;a<l.length;a++)t=l[a],n.indexOf(t)>=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a<l.length;a++)t=l[a],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var p=r.a.createContext({}),b=function(e){var n=r.a.useContext(p),t=n;return e&&(t="function"==typeof e?e(n):i(i({},n),e)),t},u=function(e){var n=b(e.components);return r.a.createElement(p.Provider,{value:n},e.children)},s={inlineCode:"code",wrapper:function(e){var n=e.children;return r.a.createElement(r.a.Fragment,{},n)}},o=r.a.forwardRef((function(e,n){var t=e.components,a=e.mdxType,l=e.originalType,m=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),u=b(t),o=a,d=u["".concat(m,".").concat(o)]||u[o]||s[o]||l;return t?r.a.createElement(d,i(i({ref:n},p),{},{components:t})):r.a.createElement(d,i({ref:n},p))}));function d(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var l=t.length,m=new Array(l);m[0]=o;var i={};for(var c in n)hasOwnProperty.call(n,c)&&(i[c]=n[c]);i.originalType=e,i.mdxType="string"==typeof e?e:a,m[1]=i;for(var p=2;p<l;p++)m[p]=t[p];return r.a.createElement.apply(null,m)}return r.a.createElement.apply(null,t)}o.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/76720dd8.ea402a86.js b/76720dd8.946557fc.js
similarity index 92%
rename from 76720dd8.ea402a86.js
rename to 76720dd8.946557fc.js
index 05347e5..e93a142 100644
--- a/76720dd8.ea402a86.js
+++ b/76720dd8.946557fc.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[63],{130:function(e,n,t){"use strict";t.r(n),t.d(n,"frontMatter",(function(){return i})),t.d(n,"metadata",(function(){return c})),t.d(n,"toc",(function(){return s})),t.d(n,"default",(function(){return l}));var r=t(3),o=t(7),a=(t(0),t(209)),i={title:"Tensorboard"},c={unversionedId:"userDocs/others/tensorboard",id:"version-0.6.0/userDocs/others/tensorboard",isDocsHomePage:!1,title:"Tensorboard",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/userDocs/others/tensorboard.md",slug:"/userDocs/others/tensorboard",permalink:"/docs/userDocs/others/tensorboard",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/others/tensorboard.md",version:"0.6.0",sidebar:"docs",previous:{title:"MLflow UI",permalink:"/docs/userDocs/others/mlflow"},next:{title:"Running Submarine on YARN",permalink:"/docs/adminDocs/yarn/README"}},s=[{value:"Write to LogDirs by the environment variable",id:"write-to-logdirs-by-the-environment-variable",children:[{value:"Environment variable",id:"environment-variable",children:[]},{value:"Example",id:"example",children:[]}]},{value:"Connect to the tensorboard webpage",id:"connect-to-the-tensorboard-webpage",children:[]}],b={toc:s};function l(e){var n=e.components,i=Object(o.a)(e,["components"]);return Object(a.b)("wrapper",Object(r.a)({},b,i,{components:n,mdxType:"MDXLayout"}),Object(a.b)("h2",{id:"write-to-logdirs-by-the-environment-variable"},"Write to LogDirs by the environment variable"),Object(a.b)("h3",{id:"environment-variable"},"Environment variable"),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},Object(a.b)("inlineCode",{parentName:"li"},"SUBMARINE_TENSORBOARD_LOG_DIR"),": Exist in every experiment container. You just need to direct your logs to ",Object(a.b)("inlineCode",{parentName:"li"},"$(SUBMARINE_TENSORBOARD_LOG_DIR)")," (",Object(a.b)("strong",{parentName:"li"},"NOTICE: it is ",Object(a.b)("inlineCode",{parentName:"strong"},"()")," not ",Object(a.b)("inlineCode",{parentName:"strong"},"{}")),"), and you can inspect the process on the tensorboard webpage.")),Object(a.b)("h3",{id:"example"},"Example"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},'{\n  "meta": {\n    "name": "tensorflow-tensorboard-dist-mnist",\n    "namespace": "default",\n    "framework": "TensorFlow",\n    "cmd": "python /var/tf_mnist/mnist_with_summaries.py --log_dir=$(SUBMARINE_TENSORBOARD_LOG_DIR) --learning_rate=0.01 --batch_size=20",\n    "envVars": {\n      "ENV_1": "ENV1"\n    }\n  },\n  "environment": {\n    "image": "apache/submarine:tf-mnist-with-summaries-1.0"\n  },\n  "spec": {\n    "Worker": {\n      "replicas": 1,\n      "resources": "cpu=1,memory=512M"\n    }\n  }\n}\n\n')),Object(a.b)("h2",{id:"connect-to-the-tensorboard-webpage"},"Connect to the tensorboard webpage"),Object(a.b)("ol",null,Object(a.b)("li",{parentName:"ol"},"Open the experiment page in the workbench, and Click the ",Object(a.b)("inlineCode",{parentName:"li"},"TensorBoard")," button.")),Object(a.b)("p",null,Object(a.b)("img",{src:t(236).default})),Object(a.b)("ol",{start:2},Object(a.b)("li",{parentName:"ol"},"Inspect the process on tensorboard page.")),Object(a.b)("p",null,Object(a.b)("img",{src:t(237).default})))}l.isMDXComponent=!0},209:function(e,n,t){"use strict";t.d(n,"a",(function(){return p})),t.d(n,"b",(function(){return m}));var r=t(0),o=t.n(r);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 i(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 c(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?i(Object(t),!0).forEach((function(n){a(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):i(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function s(e,n){if(null==e)return{};var t,r,o=function(e,n){if(null==e)return{};var t,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)t=a[r],n.indexOf(t)>=0||(o[t]=e[t]);return o}(e,n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)t=a[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}var b=o.a.createContext({}),l=function(e){var n=o.a.useContext(b),t=n;return e&&(t="function"==typeof e?e(n):c(c({},n),e)),t},p=function(e){var n=l(e.components);return o.a.createElement(b.Provider,{value:n},e.children)},u={inlineCode:"code",wrapper:function(e){var n=e.children;return o.a.createElement(o.a.Fragment,{},n)}},d=o.a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,a=e.originalType,i=e.parentName,b=s(e,["components","mdxType","originalType","parentName"]),p=l(t),d=r,m=p["".concat(i,".").concat(d)]||p[d]||u[d]||a;return t?o.a.createElement(m,c(c({ref:n},b),{},{components:t})):o.a.createElement(m,c({ref:n},b))}));function m(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var a=t.length,i=new Array(a);i[0]=d;var c={};for(var s in n)hasOwnProperty.call(n,s)&&(c[s]=n[s]);c.originalType=e,c.mdxType="string"==typeof e?e:r,i[1]=c;for(var b=2;b<a;b++)i[b]=t[b];return o.a.createElement.apply(null,i)}return o.a.createElement.apply(null,t)}d.displayName="MDXCreateElement"},236:function(e,n,t){"use strict";t.r(n),n.default=t.p+"assets/images/tensorboard-experiment-page-bf5d5aad633d80ef059ce4b7e4d91db3.png"},237:function(e,n,t){"use strict";t.r(n),n.default=t.p+"assets/images/tensorboard-webpage-f8b9c5ceeb7b5ef535939ea22f680d96.png"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[55],{122:function(e,n,t){"use strict";t.r(n),t.d(n,"frontMatter",(function(){return i})),t.d(n,"metadata",(function(){return c})),t.d(n,"toc",(function(){return s})),t.d(n,"default",(function(){return l}));var r=t(3),o=t(7),a=(t(0),t(194)),i={title:"Tensorboard"},c={unversionedId:"userDocs/others/tensorboard",id:"version-0.6.0/userDocs/others/tensorboard",isDocsHomePage:!1,title:"Tensorboard",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/userDocs/others/tensorboard.md",slug:"/userDocs/others/tensorboard",permalink:"/docs/userDocs/others/tensorboard",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/others/tensorboard.md",version:"0.6.0",sidebar:"docs",previous:{title:"MLflow UI",permalink:"/docs/userDocs/others/mlflow"},next:{title:"Running Submarine on YARN",permalink:"/docs/adminDocs/yarn/README"}},s=[{value:"Write to LogDirs by the environment variable",id:"write-to-logdirs-by-the-environment-variable",children:[{value:"Environment variable",id:"environment-variable",children:[]},{value:"Example",id:"example",children:[]}]},{value:"Connect to the tensorboard webpage",id:"connect-to-the-tensorboard-webpage",children:[]}],b={toc:s};function l(e){var n=e.components,i=Object(o.a)(e,["components"]);return Object(a.b)("wrapper",Object(r.a)({},b,i,{components:n,mdxType:"MDXLayout"}),Object(a.b)("h2",{id:"write-to-logdirs-by-the-environment-variable"},"Write to LogDirs by the environment variable"),Object(a.b)("h3",{id:"environment-variable"},"Environment variable"),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},Object(a.b)("inlineCode",{parentName:"li"},"SUBMARINE_TENSORBOARD_LOG_DIR"),": Exist in every experiment container. You just need to direct your logs to ",Object(a.b)("inlineCode",{parentName:"li"},"$(SUBMARINE_TENSORBOARD_LOG_DIR)")," (",Object(a.b)("strong",{parentName:"li"},"NOTICE: it is ",Object(a.b)("inlineCode",{parentName:"strong"},"()")," not ",Object(a.b)("inlineCode",{parentName:"strong"},"{}")),"), and you can inspect the process on the tensorboard webpage.")),Object(a.b)("h3",{id:"example"},"Example"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},'{\n  "meta": {\n    "name": "tensorflow-tensorboard-dist-mnist",\n    "namespace": "default",\n    "framework": "TensorFlow",\n    "cmd": "python /var/tf_mnist/mnist_with_summaries.py --log_dir=$(SUBMARINE_TENSORBOARD_LOG_DIR) --learning_rate=0.01 --batch_size=20",\n    "envVars": {\n      "ENV_1": "ENV1"\n    }\n  },\n  "environment": {\n    "image": "apache/submarine:tf-mnist-with-summaries-1.0"\n  },\n  "spec": {\n    "Worker": {\n      "replicas": 1,\n      "resources": "cpu=1,memory=512M"\n    }\n  }\n}\n\n')),Object(a.b)("h2",{id:"connect-to-the-tensorboard-webpage"},"Connect to the tensorboard webpage"),Object(a.b)("ol",null,Object(a.b)("li",{parentName:"ol"},"Open the experiment page in the workbench, and Click the ",Object(a.b)("inlineCode",{parentName:"li"},"TensorBoard")," button.")),Object(a.b)("p",null,Object(a.b)("img",{src:t(214).default})),Object(a.b)("ol",{start:2},Object(a.b)("li",{parentName:"ol"},"Inspect the process on tensorboard page.")),Object(a.b)("p",null,Object(a.b)("img",{src:t(215).default})))}l.isMDXComponent=!0},194:function(e,n,t){"use strict";t.d(n,"a",(function(){return p})),t.d(n,"b",(function(){return m}));var r=t(0),o=t.n(r);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 i(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 c(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?i(Object(t),!0).forEach((function(n){a(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):i(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function s(e,n){if(null==e)return{};var t,r,o=function(e,n){if(null==e)return{};var t,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)t=a[r],n.indexOf(t)>=0||(o[t]=e[t]);return o}(e,n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)t=a[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}var b=o.a.createContext({}),l=function(e){var n=o.a.useContext(b),t=n;return e&&(t="function"==typeof e?e(n):c(c({},n),e)),t},p=function(e){var n=l(e.components);return o.a.createElement(b.Provider,{value:n},e.children)},u={inlineCode:"code",wrapper:function(e){var n=e.children;return o.a.createElement(o.a.Fragment,{},n)}},d=o.a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,a=e.originalType,i=e.parentName,b=s(e,["components","mdxType","originalType","parentName"]),p=l(t),d=r,m=p["".concat(i,".").concat(d)]||p[d]||u[d]||a;return t?o.a.createElement(m,c(c({ref:n},b),{},{components:t})):o.a.createElement(m,c({ref:n},b))}));function m(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var a=t.length,i=new Array(a);i[0]=d;var c={};for(var s in n)hasOwnProperty.call(n,s)&&(c[s]=n[s]);c.originalType=e,c.mdxType="string"==typeof e?e:r,i[1]=c;for(var b=2;b<a;b++)i[b]=t[b];return o.a.createElement.apply(null,i)}return o.a.createElement.apply(null,t)}d.displayName="MDXCreateElement"},214:function(e,n,t){"use strict";t.r(n),n.default=t.p+"assets/images/tensorboard-experiment-page-bf5d5aad633d80ef059ce4b7e4d91db3.png"},215:function(e,n,t){"use strict";t.r(n),n.default=t.p+"assets/images/tensorboard-webpage-f8b9c5ceeb7b5ef535939ea22f680d96.png"}}]);
\ No newline at end of file
diff --git a/76a60836.12547885.js b/76a60836.12547885.js
deleted file mode 100644
index 3f07709..0000000
--- a/76a60836.12547885.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[64],{131:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return s})),n.d(t,"metadata",(function(){return i})),n.d(t,"toc",(function(){return l})),n.d(t,"default",(function(){return u}));var r=n(3),a=n(7),o=(n(0),n(209)),s={},i={unversionedId:"userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README",id:"userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README",isDocsHomePage:!1,title:"README",description:"\x3c!--",source:"@site/docs/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README.md",slug:"/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README",permalink:"/docs/next/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README.md",version:"current"},l=[{value:"Prerequisite",id:"prerequisite",children:[]},{value:"Training on a single machine with GPUs or CPU",id:"training-on-a-single-machine-with-gpus-or-cpu",children:[]},{value:"Run distributed training",id:"run-distributed-training",children:[{value:"(Optional) Running on Google Cloud Machine Learning Engine",id:"optional-running-on-google-cloud-machine-learning-engine",children:[]},{value:"Set TF_CONFIG",id:"set-tf_config",children:[]},{value:"Running script",id:"running-script",children:[]}]},{value:"Visualizing results with TensorBoard",id:"visualizing-results-with-tensorboard",children:[]},{value:"Warnings",id:"warnings",children:[]}],c={toc:l};function u(e){var t=e.components,n=Object(a.a)(e,["components"]);return Object(o.b)("wrapper",Object(r.a)({},c,n,{components:t,mdxType:"MDXLayout"}),Object(o.b)("p",null,"(Copied from ",Object(o.b)("a",{parentName:"p",href:"https://github.com/tensorflow/models/tree/master/tutorials/image/cifar10_estimator"},"https://github.com/tensorflow/models/tree/master/tutorials/image/cifar10_estimator"),")"),Object(o.b)("p",null,"CIFAR-10 is a common benchmark in machine learning for image recognition."),Object(o.b)("p",null,Object(o.b)("a",{parentName:"p",href:"http://www.cs.toronto.edu/~kriz/cifar.html"},"http://www.cs.toronto.edu/~kriz/cifar.html")),Object(o.b)("p",null,"Code in this directory focuses on how to use TensorFlow Estimators to train and\nevaluate a CIFAR-10 ResNet model on:"),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},"A single host with one CPU;"),Object(o.b)("li",{parentName:"ul"},"A single host with multiple GPUs;"),Object(o.b)("li",{parentName:"ul"},"Multiple hosts with CPU or multiple GPUs;")),Object(o.b)("p",null,"Before trying to run the model we highly encourage you to read all the README."),Object(o.b)("h2",{id:"prerequisite"},"Prerequisite"),Object(o.b)("ol",null,Object(o.b)("li",{parentName:"ol"},Object(o.b)("p",{parentName:"li"},Object(o.b)("a",{parentName:"p",href:"https://www.tensorflow.org/install/"},"Install")," TensorFlow version 1.2.1 or\nlater.")),Object(o.b)("li",{parentName:"ol"},Object(o.b)("p",{parentName:"li"},"Download the CIFAR-10 dataset and generate TFRecord files using the provided\nscript.  The script and associated command below will download the CIFAR-10\ndataset and then generate a TFRecord for the training, validation, and\nevaluation datasets."))),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-shell"},"python generate_cifar10_tfrecords.py --data-dir=${PWD}/cifar-10-data\n")),Object(o.b)("p",null,"After running the command above, you should see the following files in the\n--data-dir (",Object(o.b)("inlineCode",{parentName:"p"},"ls -R cifar-10-data"),"):"),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},"train.tfrecords"),Object(o.b)("li",{parentName:"ul"},"validation.tfrecords"),Object(o.b)("li",{parentName:"ul"},"eval.tfrecords")),Object(o.b)("h2",{id:"training-on-a-single-machine-with-gpus-or-cpu"},"Training on a single machine with GPUs or CPU"),Object(o.b)("p",null,"Run the training on CPU only. After training, it runs the evaluation."),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"python cifar10_main.py --data-dir=${PWD}/cifar-10-data \\\n                       --job-dir=/tmp/cifar10 \\\n                       --num-gpus=0 \\\n                       --train-steps=1000\n")),Object(o.b)("p",null,"Run the model on 2 GPUs using CPU as parameter server. After training, it runs\nthe evaluation."),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"python cifar10_main.py --data-dir=${PWD}/cifar-10-data \\\n                       --job-dir=/tmp/cifar10 \\\n                       --num-gpus=2 \\\n                       --train-steps=1000\n")),Object(o.b)("p",null,"Run the model on 2 GPUs using GPU as parameter server.\nIt will run an experiment, which for local setting basically means it will run\nstop training\na couple of times to perform evaluation."),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"python cifar10_main.py --data-dir=${PWD}/cifar-10-data \\\n                       --job-dir=/tmp/cifar10 \\\n                       --variable-strategy GPU \\\n                       --num-gpus=2 \\\n")),Object(o.b)("p",null,"There are more command line flags to play with; run\n",Object(o.b)("inlineCode",{parentName:"p"},"python cifar10_main.py --help")," for details."),Object(o.b)("h2",{id:"run-distributed-training"},"Run distributed training"),Object(o.b)("h3",{id:"optional-running-on-google-cloud-machine-learning-engine"},"(Optional) Running on Google Cloud Machine Learning Engine"),Object(o.b)("p",null,"This example can be run on Google Cloud Machine Learning Engine (ML Engine),\nwhich will configure the environment and take care of running workers,\nparameters servers, and masters in a fault tolerant way."),Object(o.b)("p",null,"To install the command line tool, and set up a project and billing, see the\nquickstart ",Object(o.b)("a",{parentName:"p",href:"https://cloud.google.com/ml-engine/docs/quickstarts/command-line"},"here"),"."),Object(o.b)("p",null,"You'll also need a Google Cloud Storage bucket for the data. If you followed the\ninstructions above, you can just run:"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"MY_BUCKET=gs://<my-bucket-name>\ngsutil cp -r ${PWD}/cifar-10-data $MY_BUCKET/\n")),Object(o.b)("p",null,"Then run the following command from the ",Object(o.b)("inlineCode",{parentName:"p"},"tutorials/image")," directory of this\nrepository (the parent directory of this README):"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"gcloud ml-engine jobs submit training cifarmultigpu \\\n    --runtime-version 1.2 \\\n    --job-dir=$MY_BUCKET/model_dirs/cifarmultigpu \\\n    --config cifar10_estimator/cmle_config.yaml \\\n    --package-path cifar10_estimator/ \\\n    --module-name cifar10_estimator.cifar10_main \\\n    -- \\\n    --data-dir=$MY_BUCKET/cifar-10-data \\\n    --num-gpus=4 \\\n    --train-steps=1000\n")),Object(o.b)("h3",{id:"set-tf_config"},"Set TF_CONFIG"),Object(o.b)("p",null,"Considering that you already have multiple hosts configured, all you need is a\n",Object(o.b)("inlineCode",{parentName:"p"},"TF_CONFIG")," environment variable on each host. You can set up the hosts manually\nor check ",Object(o.b)("a",{parentName:"p",href:"https://github.com/tensorflow/ecosystem"},"tensorflow/ecosystem")," for\ninstructions about how to set up a Cluster."),Object(o.b)("p",null,"The ",Object(o.b)("inlineCode",{parentName:"p"},"TF_CONFIG")," will be used by the ",Object(o.b)("inlineCode",{parentName:"p"},"RunConfig")," to know the existing hosts and\ntheir task: ",Object(o.b)("inlineCode",{parentName:"p"},"master"),", ",Object(o.b)("inlineCode",{parentName:"p"},"ps")," or ",Object(o.b)("inlineCode",{parentName:"p"},"worker"),"."),Object(o.b)("p",null,"Here's an example of ",Object(o.b)("inlineCode",{parentName:"p"},"TF_CONFIG"),"."),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-python"},"cluster = {'master': ['master-ip:8000'],\n           'ps': ['ps-ip:8000'],\n           'worker': ['worker-ip:8000']}\n\nTF_CONFIG = json.dumps(\n  {'cluster': cluster,\n   'task': {'type': master, 'index': 0},\n   'model_dir': 'gs://<bucket_path>/<dir_path>',\n   'environment': 'cloud'\n  })\n")),Object(o.b)("p",null,Object(o.b)("em",{parentName:"p"},"Cluster")),Object(o.b)("p",null,"A cluster spec, which is basically a dictionary that describes all of the tasks\nin the cluster. More about it ",Object(o.b)("a",{parentName:"p",href:"https://www.tensorflow.org/deploy/distributed"},"here"),"."),Object(o.b)("p",null,"In this cluster spec we are defining a cluster with 1 master, 1 ps and 1 worker."),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},Object(o.b)("p",{parentName:"li"},Object(o.b)("inlineCode",{parentName:"p"},"ps"),": saves the parameters among all workers. All workers can\nread/write/update the parameters for model via ps. As some models are\nextremely large the parameters are shared among the ps (each ps stores a\nsubset).")),Object(o.b)("li",{parentName:"ul"},Object(o.b)("p",{parentName:"li"},Object(o.b)("inlineCode",{parentName:"p"},"worker"),": does the training.")),Object(o.b)("li",{parentName:"ul"},Object(o.b)("p",{parentName:"li"},Object(o.b)("inlineCode",{parentName:"p"},"master"),": basically a special worker, it does training, but also restores and\nsaves checkpoints and do evaluation."))),Object(o.b)("p",null,Object(o.b)("em",{parentName:"p"},"Task")),Object(o.b)("p",null,"The Task defines what is the role of the current node, for this example the node\nis the master on index 0 on the cluster spec, the task will be different for\neach node. An example of the ",Object(o.b)("inlineCode",{parentName:"p"},"TF_CONFIG")," for a worker would be:"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-python"},"cluster = {'master': ['master-ip:8000'],\n           'ps': ['ps-ip:8000'],\n           'worker': ['worker-ip:8000']}\n\nTF_CONFIG = json.dumps(\n  {'cluster': cluster,\n   'task': {'type': worker, 'index': 0},\n   'model_dir': 'gs://<bucket_path>/<dir_path>',\n   'environment': 'cloud'\n  })\n")),Object(o.b)("p",null,Object(o.b)("em",{parentName:"p"},"Model_dir")),Object(o.b)("p",null,"This is the path where the master will save the checkpoints, graph and\nTensorBoard files. For a multi host environment you may want to use a\nDistributed File System, Google Storage and DFS are supported."),Object(o.b)("p",null,Object(o.b)("em",{parentName:"p"},"Environment")),Object(o.b)("p",null,"By the default environment is ",Object(o.b)("em",{parentName:"p"},"local"),", for a distributed setting we need to\nchange it to ",Object(o.b)("em",{parentName:"p"},"cloud"),"."),Object(o.b)("h3",{id:"running-script"},"Running script"),Object(o.b)("p",null,"Once you have a ",Object(o.b)("inlineCode",{parentName:"p"},"TF_CONFIG")," configured properly on each host you're ready to run\non distributed settings."),Object(o.b)("h4",{id:"master"},"Master"),Object(o.b)("p",null,"Run this on master:\nRuns an Experiment in sync mode on 4 GPUs using CPU as parameter server for\n40000 steps. It will run evaluation a couple of times during training. The\nnum_workers argument is used only to update the learning rate correctly. Make\nsure the model_dir is the same as defined on the TF_CONFIG."),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-shell"},"python cifar10_main.py --data-dir=gs://path/cifar-10-data \\\n                       --job-dir=gs://path/model_dir/ \\\n                       --num-gpus=4 \\\n                       --train-steps=40000 \\\n                       --sync \\\n                       --num-workers=2\n")),Object(o.b)("p",null,Object(o.b)("em",{parentName:"p"},"Output:")),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-shell"},"INFO:tensorflow:Using model_dir in TF_CONFIG: gs://path/model_dir/\nINFO:tensorflow:Using config: {'_save_checkpoints_secs': 600, '_num_ps_replicas': 1, '_keep_checkpoint_max': 5, '_task_type': u'master', '_is_chief': True, '_cluster_spec': <tensorflow.python.training.server_lib.ClusterSpec object at 0x7fd16fb2be10>, '_model_dir': 'gs://path/model_dir/', '_save_checkpoints_steps': None, '_keep_checkpoint_every_n_hours': 10000, '_session_config': intra_op_parallelism_threads: 1\ngpu_options {\n}\nallow_soft_placement: true\n, '_tf_random_seed': None, '_environment': u'cloud', '_num_worker_replicas': 1, '_task_id': 0, '_save_summary_steps': 100, '_tf_config': gpu_options {\n  per_process_gpu_memory_fraction: 1.0\n}\n, '_evaluation_master': '', '_master': u'grpc://master-ip:8000'}\n...\n2017-08-01 19:59:26.496208: I tensorflow/core/common_runtime/gpu/gpu_device.cc:940] Found device 0 with properties:\nname: Tesla K80\nmajor: 3 minor: 7 memoryClockRate (GHz) 0.8235\npciBusID 0000:00:04.0\nTotal memory: 11.17GiB\nFree memory: 11.09GiB\n2017-08-01 19:59:26.775660: I tensorflow/core/common_runtime/gpu/gpu_device.cc:940] Found device 1 with properties:\nname: Tesla K80\nmajor: 3 minor: 7 memoryClockRate (GHz) 0.8235\npciBusID 0000:00:05.0\nTotal memory: 11.17GiB\nFree memory: 11.10GiB\n...\n2017-08-01 19:59:29.675171: I tensorflow/core/distributed_runtime/rpc/grpc_server_lib.cc:316] Started server with target: grpc://localhost:8000\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_1/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_2/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_3/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_4/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_5/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_6/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1/avg_pool/: (?, 16, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_1/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_2/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_3/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_4/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_1/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_2/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_3/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_4/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_5/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_6/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1/avg_pool/: (?, 32, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_1/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_2/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_3/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_4/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_5/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_6/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/global_avg_pool/: (?, 64)\nINFO:tensorflow:image after unit resnet/tower_0/fully_connected/: (?, 11)\nINFO:tensorflow:SyncReplicasV2: replicas_to_aggregate=1; total_num_replicas=1\nINFO:tensorflow:Create CheckpointSaverHook.\nINFO:tensorflow:Restoring parameters from gs://path/model_dir/model.ckpt-0\n2017-08-01 19:59:37.560775: I tensorflow/core/distributed_runtime/master_session.cc:999] Start master session 156fcb55fe6648d6 with config:\nintra_op_parallelism_threads: 1\ngpu_options {\n  per_process_gpu_memory_fraction: 1\n}\nallow_soft_placement: true\n\nINFO:tensorflow:Saving checkpoints for 1 into gs://path/model_dir/model.ckpt.\nINFO:tensorflow:loss = 1.20682, step = 1\nINFO:tensorflow:loss = 1.20682, learning_rate = 0.1\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_1/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_2/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_3/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_4/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_5/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_6/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1/avg_pool/: (?, 16, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_1/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_2/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_3/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_4/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_5/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_6/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1/avg_pool/: (?, 32, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_1/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_2/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_3/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_4/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_5/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_6/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/global_avg_pool/: (?, 64)\nINFO:tensorflow:image after unit resnet/tower_0/fully_connected/: (?, 11)\nINFO:tensorflow:SyncReplicasV2: replicas_to_aggregate=2; total_num_replicas=2\nINFO:tensorflow:Starting evaluation at 2017-08-01-20:00:14\n2017-08-01 20:00:15.745881: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Creating TensorFlow device (/gpu:0) -> (device: 0, name: Tesla K80, pci bus id: 0000:00:04.0)\n2017-08-01 20:00:15.745949: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Creating TensorFlow device (/gpu:1) -> (device: 1, name: Tesla K80, pci bus id: 0000:00:05.0)\n2017-08-01 20:00:15.745958: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Creating TensorFlow device (/gpu:2) -> (device: 2, name: Tesla K80, pci bus id: 0000:00:06.0)\n2017-08-01 20:00:15.745964: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Creating TensorFlow device (/gpu:3) -> (device: 3, name: Tesla K80, pci bus id: 0000:00:07.0)\n2017-08-01 20:00:15.745969: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Creating TensorFlow device (/gpu:4) -> (device: 4, name: Tesla K80, pci bus id: 0000:00:08.0)\n2017-08-01 20:00:15.745975: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Creating TensorFlow device (/gpu:5) -> (device: 5, name: Tesla K80, pci bus id: 0000:00:09.0)\n2017-08-01 20:00:15.745987: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Creating TensorFlow device (/gpu:6) -> (device: 6, name: Tesla K80, pci bus id: 0000:00:0a.0)\n2017-08-01 20:00:15.745997: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Creating TensorFlow device (/gpu:7) -> (device: 7, name: Tesla K80, pci bus id: 0000:00:0b.0)\nINFO:tensorflow:Restoring parameters from gs://path/model_dir/model.ckpt-10023\nINFO:tensorflow:Evaluation [1/100]\nINFO:tensorflow:Evaluation [2/100]\nINFO:tensorflow:Evaluation [3/100]\nINFO:tensorflow:Evaluation [4/100]\nINFO:tensorflow:Evaluation [5/100]\nINFO:tensorflow:Evaluation [6/100]\nINFO:tensorflow:Evaluation [7/100]\nINFO:tensorflow:Evaluation [8/100]\nINFO:tensorflow:Evaluation [9/100]\nINFO:tensorflow:Evaluation [10/100]\nINFO:tensorflow:Evaluation [11/100]\nINFO:tensorflow:Evaluation [12/100]\nINFO:tensorflow:Evaluation [13/100]\n...\nINFO:tensorflow:Evaluation [100/100]\nINFO:tensorflow:Finished evaluation at 2017-08-01-20:00:31\nINFO:tensorflow:Saving dict for global step 1: accuracy = 0.0994, global_step = 1, loss = 630.425\n")),Object(o.b)("h4",{id:"worker"},"Worker"),Object(o.b)("p",null,"Run this on worker:\nRuns an Experiment in sync mode on 4 GPUs using CPU as parameter server for\n40000 steps. It will run evaluation a couple of times during training. Make sure\nthe model_dir is the same as defined on the TF_CONFIG."),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-shell"},"python cifar10_main.py --data-dir=gs://path/cifar-10-data \\\n                       --job-dir=gs://path/model_dir/ \\\n                       --num-gpus=4 \\\n                       --train-steps=40000 \\\n                       --sync\n")),Object(o.b)("p",null,Object(o.b)("em",{parentName:"p"},"Output:")),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-shell"},"INFO:tensorflow:Using model_dir in TF_CONFIG: gs://path/model_dir/\nINFO:tensorflow:Using config: {'_save_checkpoints_secs': 600,\n'_num_ps_replicas': 1, '_keep_checkpoint_max': 5, '_task_type': u'worker',\n'_is_chief': False, '_cluster_spec':\n<tensorflow.python.training.server_lib.ClusterSpec object at 0x7f6918438e10>,\n'_model_dir': 'gs://<path>/model_dir/',\n'_save_checkpoints_steps': None, '_keep_checkpoint_every_n_hours': 10000,\n'_session_config': intra_op_parallelism_threads: 1\ngpu_options {\n}\nallow_soft_placement: true\n, '_tf_random_seed': None, '_environment': u'cloud', '_num_worker_replicas': 1,\n'_task_id': 0, '_save_summary_steps': 100, '_tf_config': gpu_options {\n  per_process_gpu_memory_fraction: 1.0\n  }\n...\n2017-08-01 19:59:26.496208: I tensorflow/core/common_runtime/gpu/gpu_device.cc:940] Found device 0 with properties:\nname: Tesla K80\nmajor: 3 minor: 7 memoryClockRate (GHz) 0.8235\npciBusID 0000:00:04.0\nTotal memory: 11.17GiB\nFree memory: 11.09GiB\n2017-08-01 19:59:26.775660: I tensorflow/core/common_runtime/gpu/gpu_device.cc:940] Found device 1 with properties:\nname: Tesla K80\nmajor: 3 minor: 7 memoryClockRate (GHz) 0.8235\npciBusID 0000:00:05.0\nTotal memory: 11.17GiB\nFree memory: 11.10GiB\n...\n2017-08-01 19:59:29.675171: I tensorflow/core/distributed_runtime/rpc/grpc_server_lib.cc:316] Started server with target: grpc://localhost:8000\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_1/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_2/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_3/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_4/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_5/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_6/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1/avg_pool/: (?, 16, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_1/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_2/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_3/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_4/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_1/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_2/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_3/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_4/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_5/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_6/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1/avg_pool/: (?, 32, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_1/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_2/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_3/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_4/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_5/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_6/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/global_avg_pool/: (?, 64)\nINFO:tensorflow:image after unit resnet/tower_0/fully_connected/: (?, 11)\nINFO:tensorflow:SyncReplicasV2: replicas_to_aggregate=2; total_num_replicas=2\nINFO:tensorflow:Create CheckpointSaverHook.\n2017-07-31 22:38:04.629150: I\ntensorflow/core/distributed_runtime/master.cc:209] CreateSession still waiting\nfor response from worker: /job:master/replica:0/task:0\n2017-07-31 22:38:09.263492: I\ntensorflow/core/distributed_runtime/master_session.cc:999] Start master\nsession cc58f93b1e259b0c with config:\nintra_op_parallelism_threads: 1\ngpu_options {\nper_process_gpu_memory_fraction: 1\n}\nallow_soft_placement: true\nINFO:tensorflow:loss = 5.82382, step = 0\nINFO:tensorflow:loss = 5.82382, learning_rate = 0.8\nINFO:tensorflow:Average examples/sec: 1116.92 (1116.92), step = 10\nINFO:tensorflow:Average examples/sec: 1233.73 (1377.83), step = 20\nINFO:tensorflow:Average examples/sec: 1485.43 (2509.3), step = 30\nINFO:tensorflow:Average examples/sec: 1680.27 (2770.39), step = 40\nINFO:tensorflow:Average examples/sec: 1825.38 (2788.78), step = 50\nINFO:tensorflow:Average examples/sec: 1929.32 (2697.27), step = 60\nINFO:tensorflow:Average examples/sec: 2015.17 (2749.05), step = 70\nINFO:tensorflow:loss = 37.6272, step = 79 (19.554 sec)\nINFO:tensorflow:loss = 37.6272, learning_rate = 0.8 (19.554 sec)\nINFO:tensorflow:Average examples/sec: 2074.92 (2618.36), step = 80\nINFO:tensorflow:Average examples/sec: 2132.71 (2744.13), step = 90\nINFO:tensorflow:Average examples/sec: 2183.38 (2777.21), step = 100\nINFO:tensorflow:Average examples/sec: 2224.4 (2739.03), step = 110\nINFO:tensorflow:Average examples/sec: 2240.28 (2431.26), step = 120\nINFO:tensorflow:Average examples/sec: 2272.12 (2739.32), step = 130\nINFO:tensorflow:Average examples/sec: 2300.68 (2750.03), step = 140\nINFO:tensorflow:Average examples/sec: 2325.81 (2745.63), step = 150\nINFO:tensorflow:Average examples/sec: 2347.14 (2721.53), step = 160\nINFO:tensorflow:Average examples/sec: 2367.74 (2754.54), step = 170\nINFO:tensorflow:loss = 27.8453, step = 179 (18.893 sec)\n...\n")),Object(o.b)("h4",{id:"ps"},"PS"),Object(o.b)("p",null,"Run this on ps:\nThe ps will not do training so most of the arguments won't affect the execution"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-shell"},"python cifar10_main.py --job-dir=gs://path/model_dir/\n")),Object(o.b)("p",null,Object(o.b)("em",{parentName:"p"},"Output:")),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-shell"},"INFO:tensorflow:Using model_dir in TF_CONFIG: gs://path/model_dir/\nINFO:tensorflow:Using config: {'_save_checkpoints_secs': 600, '_num_ps_replicas': 1, '_keep_checkpoint_max': 5, '_task_type': u'ps', '_is_chief': False, '_cluster_spec': <tensorflow.python.training.server_lib.ClusterSpec object at 0x7f48f1addf90>, '_model_dir': 'gs://path/model_dir/', '_save_checkpoints_steps': None, '_keep_checkpoint_every_n_hours': 10000, '_session_config': intra_op_parallelism_threads: 1\ngpu_options {\n}\nallow_soft_placement: true\n, '_tf_random_seed': None, '_environment': u'cloud', '_num_worker_replicas': 1, '_task_id': 0, '_save_summary_steps': 100, '_tf_config': gpu_options {\n  per_process_gpu_memory_fraction: 1.0\n}\n, '_evaluation_master': '', '_master': u'grpc://master-ip:8000'}\n2017-07-31 22:54:58.928088: I tensorflow/core/distributed_runtime/rpc/grpc_channel.cc:215] Initialize GrpcChannelCache for job master -> {0 -> master-ip:8000}\n2017-07-31 22:54:58.928153: I tensorflow/core/distributed_runtime/rpc/grpc_channel.cc:215] Initialize GrpcChannelCache for job ps -> {0 -> localhost:8000}\n2017-07-31 22:54:58.928160: I tensorflow/core/distributed_runtime/rpc/grpc_channel.cc:215] Initialize GrpcChannelCache for job worker -> {0 -> worker-ip:8000}\n2017-07-31 22:54:58.929873: I tensorflow/core/distributed_runtime/rpc/grpc_server_lib.cc:316] Started server with target: grpc://localhost:8000\n")),Object(o.b)("h2",{id:"visualizing-results-with-tensorboard"},"Visualizing results with TensorBoard"),Object(o.b)("p",null,"When using Estimators you can also visualize your data in TensorBoard, with no\nchanges in your code. You can use TensorBoard to visualize your TensorFlow\ngraph, plot quantitative metrics about the execution of your graph, and show\nadditional data like images that pass through it."),Object(o.b)("p",null,'You\'ll see something similar to this if you "point" TensorBoard to the\n',Object(o.b)("inlineCode",{parentName:"p"},"job dir")," parameter you used to train or evaluate your model."),Object(o.b)("p",null,"Check TensorBoard during training or after it. Just point TensorBoard to the\nmodel_dir you chose on the previous step."),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-shell"},'tensorboard --log-dir="<job dir>"\n')),Object(o.b)("h2",{id:"warnings"},"Warnings"),Object(o.b)("p",null,"When running ",Object(o.b)("inlineCode",{parentName:"p"},"cifar10_main.py")," with ",Object(o.b)("inlineCode",{parentName:"p"},"--sync")," argument you may see an error\nsimilar to:"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-python"},'File "cifar10_main.py", line 538, in <module>\n    tf.app.run()\nFile "/usr/local/lib/python2.7/dist-packages/tensorflow/python/platform/app.py", line 48, in run\n    _sys.exit(main(_sys.argv[:1] + flags_passthrough))\nFile "cifar10_main.py", line 518, in main\n    hooks), run_config=config)\nFile "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/learn_runner.py", line 210, in run\n    return _execute_schedule(experiment, schedule)\nFile "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/learn_runner.py", line 47, in _execute_schedule\n    return task()\nFile "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/experiment.py", line 501, in train_and_evaluate\n    hooks=self._eval_hooks)\nFile "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/experiment.py", line 681, in _call_evaluate\n    hooks=hooks)\nFile "/usr/local/lib/python2.7/dist-packages/tensorflow/python/estimator/estimator.py", line 292, in evaluate\n    name=name)\nFile "/usr/local/lib/python2.7/dist-packages/tensorflow/python/estimator/estimator.py", line 638, in _evaluate_model\n    features, labels, model_fn_lib.ModeKeys.EVAL)\nFile "/usr/local/lib/python2.7/dist-packages/tensorflow/python/estimator/estimator.py", line 545, in _call_model_fn\n    features=features, labels=labels, **kwargs)\nFile "cifar10_main.py", line 331, in _resnet_model_fn\n    gradvars, global_step=tf.train.get_global_step())\nFile "/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/sync_replicas_optimizer.py", line 252, in apply_gradients\n    variables.global_variables())\nFile "/usr/local/lib/python2.7/dist-packages/tensorflow/python/util/tf_should_use.py", line 170, in wrapped\n    return _add_should_use_warning(fn(*args, **kwargs))\nFile "/usr/local/lib/python2.7/dist-packages/tensorflow/python/util/tf_should_use.py", line 139, in _add_should_use_warning\n    wrapped = TFShouldUseWarningWrapper(x)\nFile "/usr/local/lib/python2.7/dist-packages/tensorflow/python/util/tf_should_use.py", line 96, in __init__\n    stack = [s.strip() for s in traceback.format_stack()]\n')),Object(o.b)("p",null,"This should not affect your training, and should be fixed on the next releases."))}u.isMDXComponent=!0},209:function(e,t,n){"use strict";n.d(t,"a",(function(){return p})),n.d(t,"b",(function(){return d}));var r=n(0),a=n.n(r);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function s(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?s(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):s(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var c=a.a.createContext({}),u=function(e){var t=a.a.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},p=function(e){var t=u(e.components);return a.a.createElement(c.Provider,{value:t},e.children)},_={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},m=a.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),p=u(n),m=r,d=p["".concat(s,".").concat(m)]||p[m]||_[m]||o;return n?a.a.createElement(d,i(i({ref:t},c),{},{components:n})):a.a.createElement(d,i({ref:t},c))}));function d(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,s=new Array(o);s[0]=m;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i.mdxType="string"==typeof e?e:r,s[1]=i;for(var c=2;c<o;c++)s[c]=n[c];return a.a.createElement.apply(null,s)}return a.a.createElement.apply(null,n)}m.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/781c7eda.1741f324.js b/781c7eda.0ccfe196.js
similarity index 97%
rename from 781c7eda.1741f324.js
rename to 781c7eda.0ccfe196.js
index 43f95a9..43d2a15 100644
--- a/781c7eda.1741f324.js
+++ b/781c7eda.0ccfe196.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[65],{132:function(e,n,t){"use strict";t.r(n),t.d(n,"frontMatter",(function(){return l})),t.d(n,"metadata",(function(){return i})),t.d(n,"toc",(function(){return c})),t.d(n,"default",(function(){return s}));var r=t(3),o=t(7),a=(t(0),t(209)),l={title:"Docker Images for TensorFlow"},i={unversionedId:"userDocs/yarn/WriteDockerfileTF",id:"version-0.6.0/userDocs/yarn/WriteDockerfileTF",isDocsHomePage:!1,title:"Docker Images for TensorFlow",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/userDocs/yarn/WriteDockerfileTF.md",slug:"/userDocs/yarn/WriteDockerfileTF",permalink:"/docs/userDocs/yarn/WriteDockerfileTF",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/yarn/WriteDockerfileTF.md",version:"0.6.0"},c=[{value:"How to create docker images to run Tensorflow on YARN",id:"how-to-create-docker-images-to-run-tensorflow-on-yarn",children:[]},{value:"Use examples to build your own Tensorflow docker images",id:"use-examples-to-build-your-own-tensorflow-docker-images",children:[]},{value:"Build Docker images",id:"build-docker-images",children:[{value:"Manually build Docker image:",id:"manually-build-docker-image",children:[]},{value:"Use prebuilt images",id:"use-prebuilt-images",children:[]}]}],p={toc:c};function s(e){var n=e.components,t=Object(o.a)(e,["components"]);return Object(a.b)("wrapper",Object(r.a)({},p,t,{components:n,mdxType:"MDXLayout"}),Object(a.b)("h2",{id:"how-to-create-docker-images-to-run-tensorflow-on-yarn"},"How to create docker images to run Tensorflow on YARN"),Object(a.b)("p",null,"Dockerfile to run Tensorflow on YARN need two part:"),Object(a.b)("p",null,Object(a.b)("strong",{parentName:"p"},"Base libraries which Tensorflow depends on")),Object(a.b)("p",null,"1) OS base image, for example ",Object(a.b)("inlineCode",{parentName:"p"},"ubuntu:18.04")),Object(a.b)("p",null,"2) Tensorflow depended libraries and packages. For example ",Object(a.b)("inlineCode",{parentName:"p"},"python"),", ",Object(a.b)("inlineCode",{parentName:"p"},"scipy"),". For GPU support, need ",Object(a.b)("inlineCode",{parentName:"p"},"cuda"),", ",Object(a.b)("inlineCode",{parentName:"p"},"cudnn"),", etc."),Object(a.b)("p",null,"3) Tensorflow package."),Object(a.b)("p",null,Object(a.b)("strong",{parentName:"p"},"Libraries to access HDFS")),Object(a.b)("p",null,"1) JDK"),Object(a.b)("p",null,"2) Hadoop"),Object(a.b)("p",null,"Here's an example of a base image (w/o GPU support) to install Tensorflow:"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre",className:"language-shell"},"FROM ubuntu:18.04\n\n# Pick up some TF dependencies\nRUN apt-get update && apt-get install -y --no-install-recommends \\\n        build-essential \\\n        curl \\\n        libfreetype6-dev \\\n        libpng-dev \\\n        libzmq3-dev \\\n        pkg-config \\\n        python \\\n        python-dev \\\n        rsync \\\n        software-properties-common \\\n        unzip \\\n        && \\\n    apt-get clean && \\\n    rm -rf /var/lib/apt/lists/*\n\nRUN export DEBIAN_FRONTEND=noninteractive && apt-get update && apt-get install -yq krb5-user libpam-krb5 && apt-get clean\n\nRUN curl -O https://bootstrap.pypa.io/get-pip.py && \\\n    python get-pip.py && \\\n    rm get-pip.py\n\nRUN pip --no-cache-dir install \\\n        Pillow \\\n        h5py \\\n        ipykernel \\\n        jupyter \\\n        matplotlib \\\n        numpy \\\n        pandas \\\n        scipy \\\n        sklearn \\\n        && \\\n    python -m ipykernel.kernelspec\n\nRUN pip --no-cache-dir install \\\n    http://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.13.1-cp27-none-linux_x86_64.whl\n")),Object(a.b)("p",null,"On top of above image, add files, install packages to access HDFS"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre",className:"language-shell"},'RUN apt-get update && apt-get install -y openjdk-8-jdk wget\n# Install hadoop\nENV HADOOP_VERSION="2.9.2"\nRUN wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-${HADOOP_VERSION}/hadoop-${HADOOP_VERSION}.tar.gz\nRUN tar zxf hadoop-${HADOOP_VERSION}.tar.gz\nRUN ln -s hadoop-${HADOOP_VERSION} hadoop-current\nRUN rm hadoop-${HADOOP_VERSION}.tar.gz\n')),Object(a.b)("p",null,"Build and push to your own docker registry: Use ",Object(a.b)("inlineCode",{parentName:"p"},"docker build ... ")," and ",Object(a.b)("inlineCode",{parentName:"p"},"docker push ...")," to finish this step."),Object(a.b)("h2",{id:"use-examples-to-build-your-own-tensorflow-docker-images"},"Use examples to build your own Tensorflow docker images"),Object(a.b)("p",null,"We provided following examples for you to build tensorflow docker images."),Object(a.b)("p",null,"For Tensorflow 1.13.1 (Precompiled to CUDA 10.x)"),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},Object(a.b)("em",{parentName:"li"},"docker/tensorflow/base/ubuntu-18.04/Dockerfile.cpu.tf_1.13.1"),": Tensorflow 1.13.1 supports CPU only."),Object(a.b)("li",{parentName:"ul"},Object(a.b)("em",{parentName:"li"},"docker/tensorflow/with-cifar10-models/ubuntu-18.04/Dockerfile.cpu.tf_1.13.1"),": Tensorflow 1.13.1 supports CPU only, and included models"),Object(a.b)("li",{parentName:"ul"},Object(a.b)("em",{parentName:"li"},"docker/tensorflow/base/ubuntu-18.04/Dockerfile.gpu.tf_1.13.1"),": Tensorflow 1.13.1 supports GPU, which is prebuilt to CUDA10."),Object(a.b)("li",{parentName:"ul"},Object(a.b)("em",{parentName:"li"},"docker/tensorflow/with-cifar10-models/ubuntu-18.04/Dockerfile.gpu.tf_1.13.1"),": Tensorflow 1.13.1 supports GPU, which is prebuilt to CUDA10, with models.")),Object(a.b)("h2",{id:"build-docker-images"},"Build Docker images"),Object(a.b)("h3",{id:"manually-build-docker-image"},"Manually build Docker image:"),Object(a.b)("p",null,"Under ",Object(a.b)("inlineCode",{parentName:"p"},"docker/")," directory, run ",Object(a.b)("inlineCode",{parentName:"p"},"build-all.sh")," to build Docker images. It will build following images:"),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},Object(a.b)("inlineCode",{parentName:"li"},"tf-1.13.1-gpu-base:0.0.1")," for base Docker image which includes Hadoop, Tensorflow, GPU base libraries."),Object(a.b)("li",{parentName:"ul"},Object(a.b)("inlineCode",{parentName:"li"},"tf-1.13.1-gpu-base:0.0.1")," for base Docker image which includes Hadoop. Tensorflow."),Object(a.b)("li",{parentName:"ul"},Object(a.b)("inlineCode",{parentName:"li"},"tf-1.13.1-gpu:0.0.1")," which includes cifar10 model"),Object(a.b)("li",{parentName:"ul"},Object(a.b)("inlineCode",{parentName:"li"},"tf-1.13.1-cpu:0.0.1")," which inclues cifar10 model (cpu only).")),Object(a.b)("h3",{id:"use-prebuilt-images"},"Use prebuilt images"),Object(a.b)("p",null,"(No liability)\nYou can also use prebuilt images for convenience:"),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},"hadoopsubmarine/tf-1.13.1-gpu:0.0.1"),Object(a.b)("li",{parentName:"ul"},"hadoopsubmarine/tf-1.13.1-cpu:0.0.1")))}s.isMDXComponent=!0},209:function(e,n,t){"use strict";t.d(n,"a",(function(){return u})),t.d(n,"b",(function(){return m}));var r=t(0),o=t.n(r);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 l(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?l(Object(t),!0).forEach((function(n){a(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):l(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function c(e,n){if(null==e)return{};var t,r,o=function(e,n){if(null==e)return{};var t,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)t=a[r],n.indexOf(t)>=0||(o[t]=e[t]);return o}(e,n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)t=a[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}var p=o.a.createContext({}),s=function(e){var n=o.a.useContext(p),t=n;return e&&(t="function"==typeof e?e(n):i(i({},n),e)),t},u=function(e){var n=s(e.components);return o.a.createElement(p.Provider,{value:n},e.children)},b={inlineCode:"code",wrapper:function(e){var n=e.children;return o.a.createElement(o.a.Fragment,{},n)}},d=o.a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,a=e.originalType,l=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),u=s(t),d=r,m=u["".concat(l,".").concat(d)]||u[d]||b[d]||a;return t?o.a.createElement(m,i(i({ref:n},p),{},{components:t})):o.a.createElement(m,i({ref:n},p))}));function m(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var a=t.length,l=new Array(a);l[0]=d;var i={};for(var c in n)hasOwnProperty.call(n,c)&&(i[c]=n[c]);i.originalType=e,i.mdxType="string"==typeof e?e:r,l[1]=i;for(var p=2;p<a;p++)l[p]=t[p];return o.a.createElement.apply(null,l)}return o.a.createElement.apply(null,t)}d.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[56],{123:function(e,n,t){"use strict";t.r(n),t.d(n,"frontMatter",(function(){return l})),t.d(n,"metadata",(function(){return i})),t.d(n,"toc",(function(){return c})),t.d(n,"default",(function(){return s}));var r=t(3),o=t(7),a=(t(0),t(194)),l={title:"Docker Images for TensorFlow"},i={unversionedId:"userDocs/yarn/WriteDockerfileTF",id:"version-0.6.0/userDocs/yarn/WriteDockerfileTF",isDocsHomePage:!1,title:"Docker Images for TensorFlow",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/userDocs/yarn/WriteDockerfileTF.md",slug:"/userDocs/yarn/WriteDockerfileTF",permalink:"/docs/userDocs/yarn/WriteDockerfileTF",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/yarn/WriteDockerfileTF.md",version:"0.6.0"},c=[{value:"How to create docker images to run Tensorflow on YARN",id:"how-to-create-docker-images-to-run-tensorflow-on-yarn",children:[]},{value:"Use examples to build your own Tensorflow docker images",id:"use-examples-to-build-your-own-tensorflow-docker-images",children:[]},{value:"Build Docker images",id:"build-docker-images",children:[{value:"Manually build Docker image:",id:"manually-build-docker-image",children:[]},{value:"Use prebuilt images",id:"use-prebuilt-images",children:[]}]}],p={toc:c};function s(e){var n=e.components,t=Object(o.a)(e,["components"]);return Object(a.b)("wrapper",Object(r.a)({},p,t,{components:n,mdxType:"MDXLayout"}),Object(a.b)("h2",{id:"how-to-create-docker-images-to-run-tensorflow-on-yarn"},"How to create docker images to run Tensorflow on YARN"),Object(a.b)("p",null,"Dockerfile to run Tensorflow on YARN need two part:"),Object(a.b)("p",null,Object(a.b)("strong",{parentName:"p"},"Base libraries which Tensorflow depends on")),Object(a.b)("p",null,"1) OS base image, for example ",Object(a.b)("inlineCode",{parentName:"p"},"ubuntu:18.04")),Object(a.b)("p",null,"2) Tensorflow depended libraries and packages. For example ",Object(a.b)("inlineCode",{parentName:"p"},"python"),", ",Object(a.b)("inlineCode",{parentName:"p"},"scipy"),". For GPU support, need ",Object(a.b)("inlineCode",{parentName:"p"},"cuda"),", ",Object(a.b)("inlineCode",{parentName:"p"},"cudnn"),", etc."),Object(a.b)("p",null,"3) Tensorflow package."),Object(a.b)("p",null,Object(a.b)("strong",{parentName:"p"},"Libraries to access HDFS")),Object(a.b)("p",null,"1) JDK"),Object(a.b)("p",null,"2) Hadoop"),Object(a.b)("p",null,"Here's an example of a base image (w/o GPU support) to install Tensorflow:"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre",className:"language-shell"},"FROM ubuntu:18.04\n\n# Pick up some TF dependencies\nRUN apt-get update && apt-get install -y --no-install-recommends \\\n        build-essential \\\n        curl \\\n        libfreetype6-dev \\\n        libpng-dev \\\n        libzmq3-dev \\\n        pkg-config \\\n        python \\\n        python-dev \\\n        rsync \\\n        software-properties-common \\\n        unzip \\\n        && \\\n    apt-get clean && \\\n    rm -rf /var/lib/apt/lists/*\n\nRUN export DEBIAN_FRONTEND=noninteractive && apt-get update && apt-get install -yq krb5-user libpam-krb5 && apt-get clean\n\nRUN curl -O https://bootstrap.pypa.io/get-pip.py && \\\n    python get-pip.py && \\\n    rm get-pip.py\n\nRUN pip --no-cache-dir install \\\n        Pillow \\\n        h5py \\\n        ipykernel \\\n        jupyter \\\n        matplotlib \\\n        numpy \\\n        pandas \\\n        scipy \\\n        sklearn \\\n        && \\\n    python -m ipykernel.kernelspec\n\nRUN pip --no-cache-dir install \\\n    http://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.13.1-cp27-none-linux_x86_64.whl\n")),Object(a.b)("p",null,"On top of above image, add files, install packages to access HDFS"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre",className:"language-shell"},'RUN apt-get update && apt-get install -y openjdk-8-jdk wget\n# Install hadoop\nENV HADOOP_VERSION="2.9.2"\nRUN wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-${HADOOP_VERSION}/hadoop-${HADOOP_VERSION}.tar.gz\nRUN tar zxf hadoop-${HADOOP_VERSION}.tar.gz\nRUN ln -s hadoop-${HADOOP_VERSION} hadoop-current\nRUN rm hadoop-${HADOOP_VERSION}.tar.gz\n')),Object(a.b)("p",null,"Build and push to your own docker registry: Use ",Object(a.b)("inlineCode",{parentName:"p"},"docker build ... ")," and ",Object(a.b)("inlineCode",{parentName:"p"},"docker push ...")," to finish this step."),Object(a.b)("h2",{id:"use-examples-to-build-your-own-tensorflow-docker-images"},"Use examples to build your own Tensorflow docker images"),Object(a.b)("p",null,"We provided following examples for you to build tensorflow docker images."),Object(a.b)("p",null,"For Tensorflow 1.13.1 (Precompiled to CUDA 10.x)"),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},Object(a.b)("em",{parentName:"li"},"docker/tensorflow/base/ubuntu-18.04/Dockerfile.cpu.tf_1.13.1"),": Tensorflow 1.13.1 supports CPU only."),Object(a.b)("li",{parentName:"ul"},Object(a.b)("em",{parentName:"li"},"docker/tensorflow/with-cifar10-models/ubuntu-18.04/Dockerfile.cpu.tf_1.13.1"),": Tensorflow 1.13.1 supports CPU only, and included models"),Object(a.b)("li",{parentName:"ul"},Object(a.b)("em",{parentName:"li"},"docker/tensorflow/base/ubuntu-18.04/Dockerfile.gpu.tf_1.13.1"),": Tensorflow 1.13.1 supports GPU, which is prebuilt to CUDA10."),Object(a.b)("li",{parentName:"ul"},Object(a.b)("em",{parentName:"li"},"docker/tensorflow/with-cifar10-models/ubuntu-18.04/Dockerfile.gpu.tf_1.13.1"),": Tensorflow 1.13.1 supports GPU, which is prebuilt to CUDA10, with models.")),Object(a.b)("h2",{id:"build-docker-images"},"Build Docker images"),Object(a.b)("h3",{id:"manually-build-docker-image"},"Manually build Docker image:"),Object(a.b)("p",null,"Under ",Object(a.b)("inlineCode",{parentName:"p"},"docker/")," directory, run ",Object(a.b)("inlineCode",{parentName:"p"},"build-all.sh")," to build Docker images. It will build following images:"),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},Object(a.b)("inlineCode",{parentName:"li"},"tf-1.13.1-gpu-base:0.0.1")," for base Docker image which includes Hadoop, Tensorflow, GPU base libraries."),Object(a.b)("li",{parentName:"ul"},Object(a.b)("inlineCode",{parentName:"li"},"tf-1.13.1-gpu-base:0.0.1")," for base Docker image which includes Hadoop. Tensorflow."),Object(a.b)("li",{parentName:"ul"},Object(a.b)("inlineCode",{parentName:"li"},"tf-1.13.1-gpu:0.0.1")," which includes cifar10 model"),Object(a.b)("li",{parentName:"ul"},Object(a.b)("inlineCode",{parentName:"li"},"tf-1.13.1-cpu:0.0.1")," which inclues cifar10 model (cpu only).")),Object(a.b)("h3",{id:"use-prebuilt-images"},"Use prebuilt images"),Object(a.b)("p",null,"(No liability)\nYou can also use prebuilt images for convenience:"),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},"hadoopsubmarine/tf-1.13.1-gpu:0.0.1"),Object(a.b)("li",{parentName:"ul"},"hadoopsubmarine/tf-1.13.1-cpu:0.0.1")))}s.isMDXComponent=!0},194:function(e,n,t){"use strict";t.d(n,"a",(function(){return u})),t.d(n,"b",(function(){return m}));var r=t(0),o=t.n(r);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 l(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?l(Object(t),!0).forEach((function(n){a(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):l(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function c(e,n){if(null==e)return{};var t,r,o=function(e,n){if(null==e)return{};var t,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)t=a[r],n.indexOf(t)>=0||(o[t]=e[t]);return o}(e,n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)t=a[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}var p=o.a.createContext({}),s=function(e){var n=o.a.useContext(p),t=n;return e&&(t="function"==typeof e?e(n):i(i({},n),e)),t},u=function(e){var n=s(e.components);return o.a.createElement(p.Provider,{value:n},e.children)},b={inlineCode:"code",wrapper:function(e){var n=e.children;return o.a.createElement(o.a.Fragment,{},n)}},d=o.a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,a=e.originalType,l=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),u=s(t),d=r,m=u["".concat(l,".").concat(d)]||u[d]||b[d]||a;return t?o.a.createElement(m,i(i({ref:n},p),{},{components:t})):o.a.createElement(m,i({ref:n},p))}));function m(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var a=t.length,l=new Array(a);l[0]=d;var i={};for(var c in n)hasOwnProperty.call(n,c)&&(i[c]=n[c]);i.originalType=e,i.mdxType="string"==typeof e?e:r,l[1]=i;for(var p=2;p<a;p++)l[p]=t[p];return o.a.createElement.apply(null,l)}return o.a.createElement.apply(null,t)}d.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/7984174b.48e7bdb9.js b/7984174b.48e7bdb9.js
deleted file mode 100644
index 1c56e19..0000000
--- a/7984174b.48e7bdb9.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[66],{133:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return i})),n.d(t,"metadata",(function(){return c})),n.d(t,"toc",(function(){return l})),n.d(t,"default",(function(){return u}));var r=n(3),o=n(7),a=(n(0),n(209)),i={title:"Docker Images for PyTorch"},c={unversionedId:"userDocs/yarn/WriteDockerfilePT",id:"userDocs/yarn/WriteDockerfilePT",isDocsHomePage:!1,title:"Docker Images for PyTorch",description:"\x3c!--",source:"@site/docs/userDocs/yarn/WriteDockerfilePT.md",slug:"/userDocs/yarn/WriteDockerfilePT",permalink:"/docs/next/userDocs/yarn/WriteDockerfilePT",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/userDocs/yarn/WriteDockerfilePT.md",version:"current"},l=[{value:"How to create docker images to run PyTorch on YARN",id:"how-to-create-docker-images-to-run-pytorch-on-yarn",children:[]},{value:"Use examples to build your own PyTorch docker images",id:"use-examples-to-build-your-own-pytorch-docker-images",children:[]},{value:"Build Docker images",id:"build-docker-images",children:[{value:"Manually build Docker image:",id:"manually-build-docker-image",children:[]},{value:"Use prebuilt images",id:"use-prebuilt-images",children:[]}]}],p={toc:l};function u(e){var t=e.components,n=Object(o.a)(e,["components"]);return Object(a.b)("wrapper",Object(r.a)({},p,n,{components:t,mdxType:"MDXLayout"}),Object(a.b)("h2",{id:"how-to-create-docker-images-to-run-pytorch-on-yarn"},"How to create docker images to run PyTorch on YARN"),Object(a.b)("p",null,"Dockerfile to run PyTorch on YARN needs two parts:"),Object(a.b)("p",null,Object(a.b)("strong",{parentName:"p"},"Base libraries which PyTorch depends on")),Object(a.b)("p",null,"1) OS base image, for example ",Object(a.b)("inlineCode",{parentName:"p"},"ubuntu:18.04")),Object(a.b)("p",null,"2) PyTorch dependent libraries and packages. For example ",Object(a.b)("inlineCode",{parentName:"p"},"python"),", ",Object(a.b)("inlineCode",{parentName:"p"},"scipy"),". For GPU support, you also need ",Object(a.b)("inlineCode",{parentName:"p"},"cuda"),", ",Object(a.b)("inlineCode",{parentName:"p"},"cudnn"),", etc."),Object(a.b)("p",null,"3) PyTorch package."),Object(a.b)("p",null,Object(a.b)("strong",{parentName:"p"},"Libraries to access HDFS")),Object(a.b)("p",null,"1) JDK"),Object(a.b)("p",null,"2) Hadoop"),Object(a.b)("p",null,"Here's an example of a base image (with GPU support) to install PyTorch:"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre",className:"language-shell"},'FROM nvidia/cuda:10.0-cudnn7-devel-ubuntu18.04\nARG PYTHON_VERSION=3.6\nRUN apt-get update && apt-get install -y --no-install-recommends \\\n         build-essential \\\n         cmake \\\n         git \\\n         curl \\\n         vim \\\n         ca-certificates \\\n         libjpeg-dev \\\n         libpng-dev \\\n         wget &&\\\n     rm -rf /var/lib/apt/lists/*\n\n\nRUN curl -o ~/miniconda.sh -O  https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh  && \\\n     chmod +x ~/miniconda.sh && \\\n     ~/miniconda.sh -b -p /opt/conda && \\\n     rm ~/miniconda.sh && \\\n     /opt/conda/bin/conda install -y python=$PYTHON_VERSION numpy pyyaml scipy ipython mkl mkl-include cython typing && \\\n     /opt/conda/bin/conda install -y -c pytorch magma-cuda100 && \\\n     /opt/conda/bin/conda clean -ya\nENV PATH /opt/conda/bin:$PATH\nRUN pip install ninja\n# This must be done before pip so that requirements.txt is available\nWORKDIR /opt/pytorch\nRUN git clone https://github.com/pytorch/pytorch.git\nWORKDIR pytorch\nRUN git submodule update --init\nRUN TORCH_CUDA_ARCH_LIST="3.5 5.2 6.0 6.1 7.0+PTX" TORCH_NVCC_FLAGS="-Xfatbin -compress-all" \\\n    CMAKE_PREFIX_PATH="$(dirname $(which conda))/../" \\\n    pip install -v .\n\nWORKDIR /opt/pytorch\nRUN git clone https://github.com/pytorch/vision.git && cd vision && pip install -v .\n\n')),Object(a.b)("p",null,"On top of above image, add files, install packages to access HDFS"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre",className:"language-shell"},'RUN apt-get update && apt-get install -y openjdk-8-jdk wget\n# Install hadoop\nENV HADOOP_VERSION="2.9.2"\nRUN wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-${HADOOP_VERSION}/hadoop-${HADOOP_VERSION}.tar.gz\nRUN tar zxf hadoop-${HADOOP_VERSION}.tar.gz\nRUN ln -s hadoop-${HADOOP_VERSION} hadoop-current\nRUN rm hadoop-${HADOOP_VERSION}.tar.gz\n')),Object(a.b)("p",null,"Build and push to your own docker registry: Use ",Object(a.b)("inlineCode",{parentName:"p"},"docker build ... ")," and ",Object(a.b)("inlineCode",{parentName:"p"},"docker push ...")," to finish this step."),Object(a.b)("h2",{id:"use-examples-to-build-your-own-pytorch-docker-images"},"Use examples to build your own PyTorch docker images"),Object(a.b)("p",null,"We provided some example Dockerfiles for you to build your own PyTorch docker images."),Object(a.b)("p",null,"For latest PyTorch"),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},Object(a.b)("em",{parentName:"li"},"docker/pytorch/base/ubuntu-18.04/Dockerfile.gpu.pytorch_latest"),": Latest Pytorch that supports GPU, which is prebuilt to CUDA10."),Object(a.b)("li",{parentName:"ul"},Object(a.b)("em",{parentName:"li"},"docker/pytorch/with-cifar10-models/ubuntu-18.04/Dockerfile.gpu.pytorch_latest"),": Latest Pytorch that GPU, which is prebuilt to CUDA10, with models.")),Object(a.b)("h2",{id:"build-docker-images"},"Build Docker images"),Object(a.b)("h3",{id:"manually-build-docker-image"},"Manually build Docker image:"),Object(a.b)("p",null,"Under ",Object(a.b)("inlineCode",{parentName:"p"},"docker/pytorch")," directory, run ",Object(a.b)("inlineCode",{parentName:"p"},"build-all.sh")," to build all Docker images. This command will build the following Docker images:"),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},Object(a.b)("inlineCode",{parentName:"li"},"pytorch-latest-gpu-base:0.0.1")," for base Docker image which includes Hadoop, PyTorch, GPU base libraries."),Object(a.b)("li",{parentName:"ul"},Object(a.b)("inlineCode",{parentName:"li"},"pytorch-latest-gpu:0.0.1")," which includes cifar10 model as well")),Object(a.b)("h3",{id:"use-prebuilt-images"},"Use prebuilt images"),Object(a.b)("p",null,"(No liability)\nYou can also use prebuilt images for convenience:"),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},"hadoopsubmarine/pytorch-latest-gpu-base:0.0.1")))}u.isMDXComponent=!0},209:function(e,t,n){"use strict";n.d(t,"a",(function(){return s})),n.d(t,"b",(function(){return m}));var r=n(0),o=n.n(r);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function c(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var p=o.a.createContext({}),u=function(e){var t=o.a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):c(c({},t),e)),n},s=function(e){var t=u(e.components);return o.a.createElement(p.Provider,{value:t},e.children)},b={inlineCode:"code",wrapper:function(e){var t=e.children;return o.a.createElement(o.a.Fragment,{},t)}},d=o.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,i=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),s=u(n),d=r,m=s["".concat(i,".").concat(d)]||s[d]||b[d]||a;return n?o.a.createElement(m,c(c({ref:t},p),{},{components:n})):o.a.createElement(m,c({ref:t},p))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,i=new Array(a);i[0]=d;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c.mdxType="string"==typeof e?e:r,i[1]=c;for(var p=2;p<a;p++)i[p]=n[p];return o.a.createElement.apply(null,i)}return o.a.createElement.apply(null,n)}d.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/7f965783.a50d5173.js b/7f965783.a7d40fba.js
similarity index 98%
rename from 7f965783.a50d5173.js
rename to 7f965783.a7d40fba.js
index f1c7d57..dd85e1d 100644
--- a/7f965783.a50d5173.js
+++ b/7f965783.a7d40fba.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[67],{134:function(e,t,r){"use strict";r.r(t),r.d(t,"frontMatter",(function(){return s})),r.d(t,"metadata",(function(){return o})),r.d(t,"toc",(function(){return l})),r.d(t,"default",(function(){return b}));var n=r(3),a=r(7),i=(r(0),r(209)),s={title:"Cluster Server Design - High-Availability"},o={unversionedId:"designDocs/wip-designs/submarine-clusterServer",id:"version-0.6.0/designDocs/wip-designs/submarine-clusterServer",isDocsHomePage:!1,title:"Cluster Server Design - High-Availability",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/designDocs/wip-designs/submarine-clusterServer.md",slug:"/designDocs/wip-designs/submarine-clusterServer",permalink:"/docs/designDocs/wip-designs/submarine-clusterServer",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/designDocs/wip-designs/submarine-clusterServer.md",version:"0.6.0",sidebar:"docs",previous:{title:"Submarine Launcher",permalink:"/docs/designDocs/wip-designs/submarine-launcher"},next:{title:"Security Implementation",permalink:"/docs/designDocs/wip-designs/security-implementation"}},l=[{value:"Below is existing proposal:",id:"below-is-existing-proposal",children:[]},{value:"Introduction",id:"introduction",children:[]},{value:"Requirement",id:"requirement",children:[{value:"Cluster Metadata Center",id:"cluster-metadata-center",children:[]},{value:"Service discovery",id:"service-discovery",children:[]},{value:"Cluster event",id:"cluster-event",children:[]},{value:"Independence",id:"independence",children:[]},{value:"Disadvantages",id:"disadvantages",children:[]}]},{value:"System design",id:"system-design",children:[{value:"Universal design",id:"universal-design",children:[]},{value:"ClusterConfigure",id:"clusterconfigure",children:[]},{value:"ClusterServer",id:"clusterserver",children:[]},{value:"ClusterClient",id:"clusterclient",children:[]},{value:"ClusterMetadata",id:"clustermetadata",children:[]},{value:"Network fault tolerance",id:"network-fault-tolerance",children:[]},{value:"Cluster monitoring",id:"cluster-monitoring",children:[]},{value:"Atomix Raft algorithm library",id:"atomix-raft-algorithm-library",children:[]},{value:"Synchronize workbench notes",id:"synchronize-workbench-notes",children:[]},{value:"Listen for note update events",id:"listen-for-note-update-events",children:[]},{value:"Broadcast note update event",id:"broadcast-note-update-event",children:[]}]}],c={toc:l};function b(e){var t=e.components,r=Object(a.a)(e,["components"]);return Object(i.b)("wrapper",Object(n.a)({},c,r,{components:t,mdxType:"MDXLayout"}),Object(i.b)("div",{className:"admonition admonition-warning alert alert--danger"},Object(i.b)("div",{parentName:"div",className:"admonition-heading"},Object(i.b)("h5",{parentName:"div"},Object(i.b)("span",{parentName:"h5",className:"admonition-icon"},Object(i.b)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},Object(i.b)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"warning")),Object(i.b)("div",{parentName:"div",className:"admonition-content"},Object(i.b)("p",{parentName:"div"},"Please note that this design doc is working-in-progress and need more works to complete. "))),Object(i.b)("h2",{id:"below-is-existing-proposal"},"Below is existing proposal:"),Object(i.b)("h2",{id:"introduction"},"Introduction"),Object(i.b)("p",null,"The Submarine system contains a total of two daemon services, Submarine Server and Workbench Server."),Object(i.b)("p",null,"Submarine Server mainly provides job submission, job scheduling, job status monitoring, and model online service for Submarine."),Object(i.b)("p",null,"Workbench Server is mainly for algorithm users to provide algorithm development, Python/Spark interpreter operation, and other services through Notebook."),Object(i.b)("p",null,"The goal of the Submarine project is to provide high availability and high-reliability services for big data processing,\nalgorithm development, job scheduling, model online services, model batch, and incremental updates. "),Object(i.b)("p",null,"In addition to the high availability of big data and machine learning frameworks,\nthe high availability of Submarine Server and Workbench Server itself is a key consideration."),Object(i.b)("h2",{id:"requirement"},"Requirement"),Object(i.b)("h3",{id:"cluster-metadata-center"},"Cluster Metadata Center"),Object(i.b)("p",null,"Multiple Submarine (or Workbench) Server processes create a Submarine Cluster through the RAFT algorithm library. "),Object(i.b)("p",null,"The cluster internally maintains a metadata center. All servers can operate the metadata. "),Object(i.b)("p",null,"The RAFT algorithm ensures that multiple processes are simultaneously co-located. "),Object(i.b)("p",null,"A data modification will not cause problems such as mutual coverage and dirty data."),Object(i.b)("p",null,"This metadata center stores data by means of key-value pairs. it can store/support a variety of data,\nbut it should be noted that metadata is only suitable for storing small amounts of data and cannot be used to replace data storage."),Object(i.b)("h3",{id:"service-discovery"},"Service discovery"),Object(i.b)("p",null,"By storing the information of the service or process in the metadata center, we can easily find the information of the service or process we need in any place,\nfor example, the IP address and port where the Python interpreter will be the process. Information is stored in metadata,\nand other services can easily find process information through process IDs and connect to provide service discovery capabilities."),Object(i.b)("h3",{id:"cluster-event"},"Cluster event"),Object(i.b)("p",null,"In the entire Submarine cluster, the servers can communicate with each other and other child processes to send cluster events to each other. "),Object(i.b)("p",null,"The service or process processes the corresponding programs according to the cluster events. For example,\nthe Workbench Server can be managed to Python. The interpreter process sends a shutdown event that controls the operation of the services and individual subprocesses throughout the cluster."),Object(i.b)("p",null,"Cluster events support both broadcast and separate delivery capabilities."),Object(i.b)("h3",{id:"independence"},"Independence"),Object(i.b)("p",null,"We implement Submarine's clustering capabilities through the RAFT algorithm library, without relying on any external services (e.g. Zookeeper, Etcd, etc.)"),Object(i.b)("h3",{id:"disadvantages"},"Disadvantages"),Object(i.b)("p",null,"Because the RAFT algorithm requires more than half of the servers available to ensure the normality of the RAFT algorithm,\nif we need to turn on the clustering capabilities of Submarine (Workbench) Server, when more than half of the servers are unavailable,\nsome programs may appear abnormal. Of course, we also detected this in the system, downgrading the system or refusing to provide service status."),Object(i.b)("h2",{id:"system-design"},"System design"),Object(i.b)("h3",{id:"universal-design"},"Universal design"),Object(i.b)("p",null,"Modular design, Submarine (Workbench) Server exists in the Submarine system, these two services need to provide clustering capabilities,\nso we abstract the cluster function into a separate module for development so that Submarine (Workbench) Server can reuse the cluster function module."),Object(i.b)("h3",{id:"clusterconfigure"},"ClusterConfigure"),Object(i.b)("p",null,"Add a ",Object(i.b)("inlineCode",{parentName:"p"},"submarine.server.addr")," and ",Object(i.b)("inlineCode",{parentName:"p"},"workbench.server.addr")," configuration items in ",Object(i.b)("inlineCode",{parentName:"p"},"submarine-site.xml"),", ",Object(i.b)("inlineCode",{parentName:"p"},"submarine.server.addr=ip1, ip2, ip3"),",\nthrough the IP list, the RAFT algorithm module in the server process can Cluster with other server processes."),Object(i.b)("h3",{id:"clusterserver"},"ClusterServer"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"The ClusterServer module encapsulates the RAFT algorithm module, which can create a service cluster and read and write metadata based on the two configuration items submarine.server.addr or workbench.server.addr.")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"The cluster management service runs in each submarine server;")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"The cluster management service establishes a cluster by using the atomix RaftServer class of the Raft algorithm library, maintains the ClusterStateMachine,\nand manages the service state metadata of each submarine server through the PutCommand, GetQuery, and DeleteCommand operation commands."))),Object(i.b)("h3",{id:"clusterclient"},"ClusterClient"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"The ClusterClient module encapsulates the RAFT algorithm client module, which can communicate with the cluster according to the two configuration items ",Object(i.b)("inlineCode",{parentName:"p"},"submarine.server.addr")," or ",Object(i.b)("inlineCode",{parentName:"p"},"workbench.server.addr"),",\nread and write metadata, and write the IP and port information of the client process. Into the cluster's metadata center.")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"The cluster management client runs in each submarine server and submarine Interpreter process;")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"The cluster management client manages the submarine server and submarine Interpreter process state (metadata information)\nin the ClusterStateMachine by using the atomix RaftClient class of the Raft library to connect to the atomix RaftServer. ")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"When the submarine server and Submarine Interpreter processes are started, they are added to the ClusterStateMachine and are removed from the ClusterStateMachine ")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"when the Submarine Server and Submarine Interpreter processes are closed."))),Object(i.b)("h3",{id:"clustermetadata"},"ClusterMetadata"),Object(i.b)("p",null,"Metadata stores metadata information in a KV key-value pair\u3002\nServerMeta\uff1akey='host:port'\uff0cvalue= {SERVER_HOST=...\uff0cSERVER_PORT=...\uff0c...}"),Object(i.b)("table",null,Object(i.b)("thead",{parentName:"table"},Object(i.b)("tr",{parentName:"thead"},Object(i.b)("th",{parentName:"tr",align:null},"Name"),Object(i.b)("th",{parentName:"tr",align:null},"Description"))),Object(i.b)("tbody",{parentName:"table"},Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"SUBMARINE_SERVER_HOST"),Object(i.b)("td",{parentName:"tr",align:null},"Submarine server IP")),Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"SUBMARINE_SERVER_PORT"),Object(i.b)("td",{parentName:"tr",align:null},"Submarine server port")),Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"WORKBENCH_SERVER_HOST"),Object(i.b)("td",{parentName:"tr",align:null},"Submarine workbench server IP")),Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"WORKBENCH_SERVER_PORT"),Object(i.b)("td",{parentName:"tr",align:null},"Submarine workbench server port")))),Object(i.b)("p",null,"InterpreterMeta\uff1akey=InterpreterGroupId\uff0cvalue={INTP_TSERVER_HOST=...\uff0c...}"),Object(i.b)("table",null,Object(i.b)("thead",{parentName:"table"},Object(i.b)("tr",{parentName:"thead"},Object(i.b)("th",{parentName:"tr",align:null},"Name"),Object(i.b)("th",{parentName:"tr",align:null},"Description"))),Object(i.b)("tbody",{parentName:"table"},Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"INTP_TSERVER_HOST"),Object(i.b)("td",{parentName:"tr",align:null},"Submarine Interpreter Thrift IP")),Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"INTP_TSERVER_PORT"),Object(i.b)("td",{parentName:"tr",align:null},"Submarine Interpreter Thrift port")),Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"INTP_START_TIME"),Object(i.b)("td",{parentName:"tr",align:null},"Submarine Interpreter start time")),Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"HEARTBEAT"),Object(i.b)("td",{parentName:"tr",align:null},"Submarine Interpreter heartbeat time")))),Object(i.b)("h3",{id:"network-fault-tolerance"},"Network fault tolerance"),Object(i.b)("p",null,"In a distributed environment, there may be network anomalies, network delays, or service exceptions. After submitting metadata to the cluster,\ncheck whether the submission is successful. After the submission fails, save the metadata in the local message queue. A separate commit thread to retry;"),Object(i.b)("h3",{id:"cluster-monitoring"},"Cluster monitoring"),Object(i.b)("p",null,"The cluster needs to monitor whether the Submarine Server and Submarine-Interpreter processes are working properly."),Object(i.b)("p",null,"The Submarine Server and Submarine Interpreter processes periodically send heartbeats to update their own timestamps in the cluster metadata. "),Object(i.b)("p",null,"The Submarine Server with Leader identity periodically checks the timestamps of the Submarine Server and Submarine Interpreter processes to clear the timeout services and processes."),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"The cluster monitoring module runs in each Submarine Server and Submarine Interpreter process,\nperiodically sending heartbeat data of the service or process to the cluster;")),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"When the cluster monitoring module runs in Submarine Server, it sends the heartbeat to the cluster's ClusterStateMachine.\nIf the cluster does not receive heartbeat information for a long time, Indicates that the service or process is abnormal and unavailable.")),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Resource usage statistics strategy, in order to avoid the instantaneous high peak and low peak of the server,\nthe cluster monitoring will collect the average resource usage in the most recent period for reporting, and improve the reasonable line and effectiveness of the server resources as much as possible;")),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"When the cluster monitoring module runs in the Submarine Server, it checks the heartbeat data of each Submarine Server and Submarine Interpreter process.\nIf it times out, it considers that the service or process is abnormally unavailable and removes it from the cluster."))),Object(i.b)("h3",{id:"atomix-raft-algorithm-library"},"Atomix Raft algorithm library"),Object(i.b)("p",null,"In order to reduce the deployment complexity of distributed mode, submarine server does not use Zookeeper to build a distributed cluster.\nMultiple submarine server groups are built into distributed clusters by using the Raft algorithm in submarine server.\nThe Raft algorithm is involved by atomix lib of atomix that has passed Jepsen consistency verification."),Object(i.b)("h3",{id:"synchronize-workbench-notes"},"Synchronize workbench notes"),Object(i.b)("p",null,"In cluster mode, the user creates, modifies, and deletes the note on any of the servers.\nAll need to be notified to all the servers in the cluster to synchronize the update of Notebook.\nFailure to do so will result in the user not being able to continue while switching to another server."),Object(i.b)("h3",{id:"listen-for-note-update-events"},"Listen for note update events"),Object(i.b)("p",null,"Listen for the NEW_NOTE, DEL_NOTE, REMOVE_NOTE_TO_TRASH ... event of the notebook in the NotebookServer#onMessage() function."),Object(i.b)("h3",{id:"broadcast-note-update-event"},"Broadcast note update event"),Object(i.b)("p",null,"The note is refreshed by notifying the event to all Submarine servers in the cluster via messaging Service."))}b.isMDXComponent=!0},209:function(e,t,r){"use strict";r.d(t,"a",(function(){return u})),r.d(t,"b",(function(){return p}));var n=r(0),a=r.n(n);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function s(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?s(Object(r),!0).forEach((function(t){i(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):s(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var c=a.a.createContext({}),b=function(e){var t=a.a.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},u=function(e){var t=b(e.components);return a.a.createElement(c.Provider,{value:t},e.children)},d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},m=a.a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),u=b(r),m=n,p=u["".concat(s,".").concat(m)]||u[m]||d[m]||i;return r?a.a.createElement(p,o(o({ref:t},c),{},{components:r})):a.a.createElement(p,o({ref:t},c))}));function p(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,s=new Array(i);s[0]=m;var o={};for(var l in t)hasOwnProperty.call(t,l)&&(o[l]=t[l]);o.originalType=e,o.mdxType="string"==typeof e?e:n,s[1]=o;for(var c=2;c<i;c++)s[c]=r[c];return a.a.createElement.apply(null,s)}return a.a.createElement.apply(null,r)}m.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[57],{124:function(e,t,r){"use strict";r.r(t),r.d(t,"frontMatter",(function(){return s})),r.d(t,"metadata",(function(){return o})),r.d(t,"toc",(function(){return l})),r.d(t,"default",(function(){return b}));var n=r(3),a=r(7),i=(r(0),r(194)),s={title:"Cluster Server Design - High-Availability"},o={unversionedId:"designDocs/wip-designs/submarine-clusterServer",id:"version-0.6.0/designDocs/wip-designs/submarine-clusterServer",isDocsHomePage:!1,title:"Cluster Server Design - High-Availability",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/designDocs/wip-designs/submarine-clusterServer.md",slug:"/designDocs/wip-designs/submarine-clusterServer",permalink:"/docs/designDocs/wip-designs/submarine-clusterServer",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/designDocs/wip-designs/submarine-clusterServer.md",version:"0.6.0",sidebar:"docs",previous:{title:"Submarine Launcher",permalink:"/docs/designDocs/wip-designs/submarine-launcher"},next:{title:"Security Implementation",permalink:"/docs/designDocs/wip-designs/security-implementation"}},l=[{value:"Below is existing proposal:",id:"below-is-existing-proposal",children:[]},{value:"Introduction",id:"introduction",children:[]},{value:"Requirement",id:"requirement",children:[{value:"Cluster Metadata Center",id:"cluster-metadata-center",children:[]},{value:"Service discovery",id:"service-discovery",children:[]},{value:"Cluster event",id:"cluster-event",children:[]},{value:"Independence",id:"independence",children:[]},{value:"Disadvantages",id:"disadvantages",children:[]}]},{value:"System design",id:"system-design",children:[{value:"Universal design",id:"universal-design",children:[]},{value:"ClusterConfigure",id:"clusterconfigure",children:[]},{value:"ClusterServer",id:"clusterserver",children:[]},{value:"ClusterClient",id:"clusterclient",children:[]},{value:"ClusterMetadata",id:"clustermetadata",children:[]},{value:"Network fault tolerance",id:"network-fault-tolerance",children:[]},{value:"Cluster monitoring",id:"cluster-monitoring",children:[]},{value:"Atomix Raft algorithm library",id:"atomix-raft-algorithm-library",children:[]},{value:"Synchronize workbench notes",id:"synchronize-workbench-notes",children:[]},{value:"Listen for note update events",id:"listen-for-note-update-events",children:[]},{value:"Broadcast note update event",id:"broadcast-note-update-event",children:[]}]}],c={toc:l};function b(e){var t=e.components,r=Object(a.a)(e,["components"]);return Object(i.b)("wrapper",Object(n.a)({},c,r,{components:t,mdxType:"MDXLayout"}),Object(i.b)("div",{className:"admonition admonition-warning alert alert--danger"},Object(i.b)("div",{parentName:"div",className:"admonition-heading"},Object(i.b)("h5",{parentName:"div"},Object(i.b)("span",{parentName:"h5",className:"admonition-icon"},Object(i.b)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},Object(i.b)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"warning")),Object(i.b)("div",{parentName:"div",className:"admonition-content"},Object(i.b)("p",{parentName:"div"},"Please note that this design doc is working-in-progress and need more works to complete. "))),Object(i.b)("h2",{id:"below-is-existing-proposal"},"Below is existing proposal:"),Object(i.b)("h2",{id:"introduction"},"Introduction"),Object(i.b)("p",null,"The Submarine system contains a total of two daemon services, Submarine Server and Workbench Server."),Object(i.b)("p",null,"Submarine Server mainly provides job submission, job scheduling, job status monitoring, and model online service for Submarine."),Object(i.b)("p",null,"Workbench Server is mainly for algorithm users to provide algorithm development, Python/Spark interpreter operation, and other services through Notebook."),Object(i.b)("p",null,"The goal of the Submarine project is to provide high availability and high-reliability services for big data processing,\nalgorithm development, job scheduling, model online services, model batch, and incremental updates. "),Object(i.b)("p",null,"In addition to the high availability of big data and machine learning frameworks,\nthe high availability of Submarine Server and Workbench Server itself is a key consideration."),Object(i.b)("h2",{id:"requirement"},"Requirement"),Object(i.b)("h3",{id:"cluster-metadata-center"},"Cluster Metadata Center"),Object(i.b)("p",null,"Multiple Submarine (or Workbench) Server processes create a Submarine Cluster through the RAFT algorithm library. "),Object(i.b)("p",null,"The cluster internally maintains a metadata center. All servers can operate the metadata. "),Object(i.b)("p",null,"The RAFT algorithm ensures that multiple processes are simultaneously co-located. "),Object(i.b)("p",null,"A data modification will not cause problems such as mutual coverage and dirty data."),Object(i.b)("p",null,"This metadata center stores data by means of key-value pairs. it can store/support a variety of data,\nbut it should be noted that metadata is only suitable for storing small amounts of data and cannot be used to replace data storage."),Object(i.b)("h3",{id:"service-discovery"},"Service discovery"),Object(i.b)("p",null,"By storing the information of the service or process in the metadata center, we can easily find the information of the service or process we need in any place,\nfor example, the IP address and port where the Python interpreter will be the process. Information is stored in metadata,\nand other services can easily find process information through process IDs and connect to provide service discovery capabilities."),Object(i.b)("h3",{id:"cluster-event"},"Cluster event"),Object(i.b)("p",null,"In the entire Submarine cluster, the servers can communicate with each other and other child processes to send cluster events to each other. "),Object(i.b)("p",null,"The service or process processes the corresponding programs according to the cluster events. For example,\nthe Workbench Server can be managed to Python. The interpreter process sends a shutdown event that controls the operation of the services and individual subprocesses throughout the cluster."),Object(i.b)("p",null,"Cluster events support both broadcast and separate delivery capabilities."),Object(i.b)("h3",{id:"independence"},"Independence"),Object(i.b)("p",null,"We implement Submarine's clustering capabilities through the RAFT algorithm library, without relying on any external services (e.g. Zookeeper, Etcd, etc.)"),Object(i.b)("h3",{id:"disadvantages"},"Disadvantages"),Object(i.b)("p",null,"Because the RAFT algorithm requires more than half of the servers available to ensure the normality of the RAFT algorithm,\nif we need to turn on the clustering capabilities of Submarine (Workbench) Server, when more than half of the servers are unavailable,\nsome programs may appear abnormal. Of course, we also detected this in the system, downgrading the system or refusing to provide service status."),Object(i.b)("h2",{id:"system-design"},"System design"),Object(i.b)("h3",{id:"universal-design"},"Universal design"),Object(i.b)("p",null,"Modular design, Submarine (Workbench) Server exists in the Submarine system, these two services need to provide clustering capabilities,\nso we abstract the cluster function into a separate module for development so that Submarine (Workbench) Server can reuse the cluster function module."),Object(i.b)("h3",{id:"clusterconfigure"},"ClusterConfigure"),Object(i.b)("p",null,"Add a ",Object(i.b)("inlineCode",{parentName:"p"},"submarine.server.addr")," and ",Object(i.b)("inlineCode",{parentName:"p"},"workbench.server.addr")," configuration items in ",Object(i.b)("inlineCode",{parentName:"p"},"submarine-site.xml"),", ",Object(i.b)("inlineCode",{parentName:"p"},"submarine.server.addr=ip1, ip2, ip3"),",\nthrough the IP list, the RAFT algorithm module in the server process can Cluster with other server processes."),Object(i.b)("h3",{id:"clusterserver"},"ClusterServer"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"The ClusterServer module encapsulates the RAFT algorithm module, which can create a service cluster and read and write metadata based on the two configuration items submarine.server.addr or workbench.server.addr.")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"The cluster management service runs in each submarine server;")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"The cluster management service establishes a cluster by using the atomix RaftServer class of the Raft algorithm library, maintains the ClusterStateMachine,\nand manages the service state metadata of each submarine server through the PutCommand, GetQuery, and DeleteCommand operation commands."))),Object(i.b)("h3",{id:"clusterclient"},"ClusterClient"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"The ClusterClient module encapsulates the RAFT algorithm client module, which can communicate with the cluster according to the two configuration items ",Object(i.b)("inlineCode",{parentName:"p"},"submarine.server.addr")," or ",Object(i.b)("inlineCode",{parentName:"p"},"workbench.server.addr"),",\nread and write metadata, and write the IP and port information of the client process. Into the cluster's metadata center.")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"The cluster management client runs in each submarine server and submarine Interpreter process;")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"The cluster management client manages the submarine server and submarine Interpreter process state (metadata information)\nin the ClusterStateMachine by using the atomix RaftClient class of the Raft library to connect to the atomix RaftServer. ")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"When the submarine server and Submarine Interpreter processes are started, they are added to the ClusterStateMachine and are removed from the ClusterStateMachine ")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"when the Submarine Server and Submarine Interpreter processes are closed."))),Object(i.b)("h3",{id:"clustermetadata"},"ClusterMetadata"),Object(i.b)("p",null,"Metadata stores metadata information in a KV key-value pair\u3002\nServerMeta\uff1akey='host:port'\uff0cvalue= {SERVER_HOST=...\uff0cSERVER_PORT=...\uff0c...}"),Object(i.b)("table",null,Object(i.b)("thead",{parentName:"table"},Object(i.b)("tr",{parentName:"thead"},Object(i.b)("th",{parentName:"tr",align:null},"Name"),Object(i.b)("th",{parentName:"tr",align:null},"Description"))),Object(i.b)("tbody",{parentName:"table"},Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"SUBMARINE_SERVER_HOST"),Object(i.b)("td",{parentName:"tr",align:null},"Submarine server IP")),Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"SUBMARINE_SERVER_PORT"),Object(i.b)("td",{parentName:"tr",align:null},"Submarine server port")),Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"WORKBENCH_SERVER_HOST"),Object(i.b)("td",{parentName:"tr",align:null},"Submarine workbench server IP")),Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"WORKBENCH_SERVER_PORT"),Object(i.b)("td",{parentName:"tr",align:null},"Submarine workbench server port")))),Object(i.b)("p",null,"InterpreterMeta\uff1akey=InterpreterGroupId\uff0cvalue={INTP_TSERVER_HOST=...\uff0c...}"),Object(i.b)("table",null,Object(i.b)("thead",{parentName:"table"},Object(i.b)("tr",{parentName:"thead"},Object(i.b)("th",{parentName:"tr",align:null},"Name"),Object(i.b)("th",{parentName:"tr",align:null},"Description"))),Object(i.b)("tbody",{parentName:"table"},Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"INTP_TSERVER_HOST"),Object(i.b)("td",{parentName:"tr",align:null},"Submarine Interpreter Thrift IP")),Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"INTP_TSERVER_PORT"),Object(i.b)("td",{parentName:"tr",align:null},"Submarine Interpreter Thrift port")),Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"INTP_START_TIME"),Object(i.b)("td",{parentName:"tr",align:null},"Submarine Interpreter start time")),Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"HEARTBEAT"),Object(i.b)("td",{parentName:"tr",align:null},"Submarine Interpreter heartbeat time")))),Object(i.b)("h3",{id:"network-fault-tolerance"},"Network fault tolerance"),Object(i.b)("p",null,"In a distributed environment, there may be network anomalies, network delays, or service exceptions. After submitting metadata to the cluster,\ncheck whether the submission is successful. After the submission fails, save the metadata in the local message queue. A separate commit thread to retry;"),Object(i.b)("h3",{id:"cluster-monitoring"},"Cluster monitoring"),Object(i.b)("p",null,"The cluster needs to monitor whether the Submarine Server and Submarine-Interpreter processes are working properly."),Object(i.b)("p",null,"The Submarine Server and Submarine Interpreter processes periodically send heartbeats to update their own timestamps in the cluster metadata. "),Object(i.b)("p",null,"The Submarine Server with Leader identity periodically checks the timestamps of the Submarine Server and Submarine Interpreter processes to clear the timeout services and processes."),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"The cluster monitoring module runs in each Submarine Server and Submarine Interpreter process,\nperiodically sending heartbeat data of the service or process to the cluster;")),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"When the cluster monitoring module runs in Submarine Server, it sends the heartbeat to the cluster's ClusterStateMachine.\nIf the cluster does not receive heartbeat information for a long time, Indicates that the service or process is abnormal and unavailable.")),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Resource usage statistics strategy, in order to avoid the instantaneous high peak and low peak of the server,\nthe cluster monitoring will collect the average resource usage in the most recent period for reporting, and improve the reasonable line and effectiveness of the server resources as much as possible;")),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"When the cluster monitoring module runs in the Submarine Server, it checks the heartbeat data of each Submarine Server and Submarine Interpreter process.\nIf it times out, it considers that the service or process is abnormally unavailable and removes it from the cluster."))),Object(i.b)("h3",{id:"atomix-raft-algorithm-library"},"Atomix Raft algorithm library"),Object(i.b)("p",null,"In order to reduce the deployment complexity of distributed mode, submarine server does not use Zookeeper to build a distributed cluster.\nMultiple submarine server groups are built into distributed clusters by using the Raft algorithm in submarine server.\nThe Raft algorithm is involved by atomix lib of atomix that has passed Jepsen consistency verification."),Object(i.b)("h3",{id:"synchronize-workbench-notes"},"Synchronize workbench notes"),Object(i.b)("p",null,"In cluster mode, the user creates, modifies, and deletes the note on any of the servers.\nAll need to be notified to all the servers in the cluster to synchronize the update of Notebook.\nFailure to do so will result in the user not being able to continue while switching to another server."),Object(i.b)("h3",{id:"listen-for-note-update-events"},"Listen for note update events"),Object(i.b)("p",null,"Listen for the NEW_NOTE, DEL_NOTE, REMOVE_NOTE_TO_TRASH ... event of the notebook in the NotebookServer#onMessage() function."),Object(i.b)("h3",{id:"broadcast-note-update-event"},"Broadcast note update event"),Object(i.b)("p",null,"The note is refreshed by notifying the event to all Submarine servers in the cluster via messaging Service."))}b.isMDXComponent=!0},194:function(e,t,r){"use strict";r.d(t,"a",(function(){return u})),r.d(t,"b",(function(){return p}));var n=r(0),a=r.n(n);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function s(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?s(Object(r),!0).forEach((function(t){i(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):s(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var c=a.a.createContext({}),b=function(e){var t=a.a.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},u=function(e){var t=b(e.components);return a.a.createElement(c.Provider,{value:t},e.children)},d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},m=a.a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),u=b(r),m=n,p=u["".concat(s,".").concat(m)]||u[m]||d[m]||i;return r?a.a.createElement(p,o(o({ref:t},c),{},{components:r})):a.a.createElement(p,o({ref:t},c))}));function p(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,s=new Array(i);s[0]=m;var o={};for(var l in t)hasOwnProperty.call(t,l)&&(o[l]=t[l]);o.originalType=e,o.mdxType="string"==typeof e?e:n,s[1]=o;for(var c=2;c<i;c++)s[c]=r[c];return a.a.createElement.apply(null,s)}return a.a.createElement.apply(null,r)}m.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/7fd88130.63d25bc0.js b/7fd88130.35ec7e9a.js
similarity index 97%
rename from 7fd88130.63d25bc0.js
rename to 7fd88130.35ec7e9a.js
index 7f4a452..1ce5ae4 100644
--- a/7fd88130.63d25bc0.js
+++ b/7fd88130.35ec7e9a.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[68],{135:function(e,n,t){"use strict";t.r(n),t.d(n,"frontMatter",(function(){return a})),t.d(n,"metadata",(function(){return s})),t.d(n,"toc",(function(){return c})),t.d(n,"default",(function(){return b}));var o=t(3),r=t(7),i=(t(0),t(209)),a={title:"Notebook Implementation"},s={unversionedId:"designDocs/notebook-implementation",id:"designDocs/notebook-implementation",isDocsHomePage:!1,title:"Notebook Implementation",description:"\x3c!--",source:"@site/docs/designDocs/notebook-implementation.md",slug:"/designDocs/notebook-implementation",permalink:"/docs/next/designDocs/notebook-implementation",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/designDocs/notebook-implementation.md",version:"current",sidebar:"docs",previous:{title:"Experiment Implementation",permalink:"/docs/next/designDocs/experiment-implementation"},next:{title:"Storage Implementation",permalink:"/docs/next/designDocs/storage-implementation"}},c=[{value:"Overview",id:"overview",children:[{value:"User&#39;s interaction",id:"users-interaction",children:[]},{value:"Admin&#39;s interaction",id:"admins-interaction",children:[]}]},{value:"Relationship with other components",id:"relationship-with-other-components",children:[{value:"Metadata store",id:"metadata-store",children:[]},{value:"Submarine Server",id:"submarine-server",children:[]},{value:"Resource manager",id:"resource-manager",children:[]},{value:"Storage",id:"storage",children:[]},{value:"Environment",id:"environment",children:[]},{value:"Submarine SDK (For Experiment, etc.)",id:"submarine-sdk-for-experiment-etc",children:[]},{value:"Security",id:"security",children:[]}]}],l={toc:c};function b(e){var n=e.components,t=Object(r.a)(e,["components"]);return Object(i.b)("wrapper",Object(o.a)({},l,t,{components:n,mdxType:"MDXLayout"}),Object(i.b)("h2",{id:"overview"},"Overview"),Object(i.b)("h3",{id:"users-interaction"},"User's interaction"),Object(i.b)("p",null,"Users can start N (N >= 0) number of Notebook sessions, a notebook session is a running notebook instance."),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Notebook session can be launched by Submarine UI (P0), and Submarine CLI (P2). "),Object(i.b)("li",{parentName:"ul"},"When launch notebook session, users can choose T-shirt size of notebook session (how much mem/cpu/gpu resources, or resource profile such as small, medium, large, etc.). (P0)"),Object(i.b)("li",{parentName:"ul"},"And user can choose an environment for notebook. More details please refer to ",Object(i.b)("a",{parentName:"li",href:"/docs/next/designDocs/environments-implementation"},"environment implementation")," (P0)"),Object(i.b)("li",{parentName:"ul"},"When start a notebook, user can choose what code to be initialized, similar to experiment. (P1)"),Object(i.b)("li",{parentName:"ul"},"Optionally, users can choose to attach a persistent volume to a notebook session. (P2)")),Object(i.b)("p",null,"Users can get a list of notebook sessions belongs to themselves, and connect to notebook session. "),Object(i.b)("p",null,"User can choose to terminate a running notebook session."),Object(i.b)("h3",{id:"admins-interaction"},"Admin's interaction"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"How many concurrent notebook sessions can be launched by each user is determined by resource quota limits of each user, and maximum concurrent notebook sessions can be launched by each user. (P2)")),Object(i.b)("h2",{id:"relationship-with-other-components"},"Relationship with other components"),Object(i.b)("h3",{id:"metadata-store"},"Metadata store"),Object(i.b)("p",null,"Running notebook sessions' metadata need persistented in Submarine's metadata store (Database)."),Object(i.b)("h3",{id:"submarine-server"},"Submarine Server"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"\n  +--------------+  +--------Submarine Server--------------------+\n  |Submarine UI  |  | +-------------------+                      |\n  |              |+---\x3e  Submarine        |                      |\n  |  Notebook    |  | |  Notebook REST API|                      |\n  +--------------+  | |                   |                      |\n                    | +--------+----------+     +--------------+ |\n                    |          |             +->|Metastore     | |\n                    | +--------v----------+  |  |DB            | |\n                    | | Submarine         +--+  +--------------+ |\n                    | | Notebook Mgr      |                      |\n                    | |                   |                      |\n                    | |                   |                      |\n                    | +--------+----------+                      |\n                    |          |                                 |\n                    +----------|---------------------------------+\n                               |\n                +--------------+\n       +--------v---------+\n       | Notebook Session |\n       |                  |\n       |   instance       |\n       |                  |\n       +------------------+\n")),Object(i.b)("p",null,"Once user use Submarine UI to launch a notebook session, Submarine notebook manager inside Submarine Server will persistent notebook session's metadata, and launch a new notebook session instance. "),Object(i.b)("h3",{id:"resource-manager"},"Resource manager"),Object(i.b)("p",null,"When using K8s as resource manager, Submarine notebook session will run as a new POD."),Object(i.b)("h3",{id:"storage"},"Storage"),Object(i.b)("p",null,"There're several different types of storage requirements for Submarine notebook. "),Object(i.b)("p",null,"For code, environment, etc, storage, please refer to ",Object(i.b)("a",{parentName:"p",href:"/docs/next/designDocs/storage-implementation"},"storage implementation"),', check "Localization of experiment/notebook/model-serving code".'),Object(i.b)("p",null,"When there're needs to attach volume (such as user's home folder) to Submarine notebook session, please check ",Object(i.b)("a",{parentName:"p",href:"/docs/next/designDocs/storage-implementation"},"storage implementation"),', check "Attachable volume".'),Object(i.b)("h3",{id:"environment"},"Environment"),Object(i.b)("p",null,"Submarine notebook's environment should be used to run experiment, model serving, etc. Please check ",Object(i.b)("a",{parentName:"p",href:"/docs/next/designDocs/environments-implementation"},"environment implementation"),'. (More specific to notebook, please check "How to implement to make user can easily use Submarine environments")'),Object(i.b)("p",null,"Please note that notebook's Environment should include right version of notebook libraries, and admin should follow the guidance to build correct Docker image, Conda libraries to correctly run Notebook."),Object(i.b)("h3",{id:"submarine-sdk-for-experiment-etc"},"Submarine SDK (For Experiment, etc.)"),Object(i.b)("p",null,"Users can run new experiment, access metrics information, or do model operations using Submarine SDK. "),Object(i.b)("p",null,"Submarine SDK is a Python library which can talk to Submarine Server which need Submarine Server's endpoint as well as user credentials."),Object(i.b)("p",null,"To ensure better experience, we recommend always install proper version of Submarine SDK from environment which users can use Submarine SDK directly from commandline. (We as Submarine community can provide sample Dockerfile or Conda environment which have correct base libraries installed for Submarine SDK)."),Object(i.b)("p",null,"Submarine Server IP will be configured automatically by Submarine Server, and added as an envar when Submarine notebook session got launched."),Object(i.b)("h3",{id:"security"},"Security"),Object(i.b)("p",null,"Please refer to ",Object(i.b)("a",{parentName:"p",href:"/docs/next/designDocs/wip-designs/security-implementation"},"Security Implementation")),Object(i.b)("p",null,"Once user accessed to a running notebook session, the user can also access resources of the notebook, capability of submit new experiment, and access data. This is also very dangerous so we have to protect it. "),Object(i.b)("p",null,"A simple solution is to use token-based authentication ",Object(i.b)("a",{parentName:"p",href:"https://jupyter-notebook.readthedocs.io/en/stable/security.html"},"https://jupyter-notebook.readthedocs.io/en/stable/security.html"),". A more common way is to use solutions like KNOX to support SSO. "),Object(i.b)("p",null,"We need expand this section to more details. (TODO)."))}b.isMDXComponent=!0},209:function(e,n,t){"use strict";t.d(n,"a",(function(){return u})),t.d(n,"b",(function(){return d}));var o=t(0),r=t.n(o);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function a(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);n&&(o=o.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,o)}return t}function s(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?a(Object(t),!0).forEach((function(n){i(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):a(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function c(e,n){if(null==e)return{};var t,o,r=function(e,n){if(null==e)return{};var t,o,r={},i=Object.keys(e);for(o=0;o<i.length;o++)t=i[o],n.indexOf(t)>=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o<i.length;o++)t=i[o],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var l=r.a.createContext({}),b=function(e){var n=r.a.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):s(s({},n),e)),t},u=function(e){var n=b(e.components);return r.a.createElement(l.Provider,{value:n},e.children)},m={inlineCode:"code",wrapper:function(e){var n=e.children;return r.a.createElement(r.a.Fragment,{},n)}},p=r.a.forwardRef((function(e,n){var t=e.components,o=e.mdxType,i=e.originalType,a=e.parentName,l=c(e,["components","mdxType","originalType","parentName"]),u=b(t),p=o,d=u["".concat(a,".").concat(p)]||u[p]||m[p]||i;return t?r.a.createElement(d,s(s({ref:n},l),{},{components:t})):r.a.createElement(d,s({ref:n},l))}));function d(e,n){var t=arguments,o=n&&n.mdxType;if("string"==typeof e||o){var i=t.length,a=new Array(i);a[0]=p;var s={};for(var c in n)hasOwnProperty.call(n,c)&&(s[c]=n[c]);s.originalType=e,s.mdxType="string"==typeof e?e:o,a[1]=s;for(var l=2;l<i;l++)a[l]=t[l];return r.a.createElement.apply(null,a)}return r.a.createElement.apply(null,t)}p.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[58],{125:function(e,n,t){"use strict";t.r(n),t.d(n,"frontMatter",(function(){return a})),t.d(n,"metadata",(function(){return s})),t.d(n,"toc",(function(){return c})),t.d(n,"default",(function(){return b}));var o=t(3),r=t(7),i=(t(0),t(194)),a={title:"Notebook Implementation"},s={unversionedId:"designDocs/notebook-implementation",id:"designDocs/notebook-implementation",isDocsHomePage:!1,title:"Notebook Implementation",description:"\x3c!--",source:"@site/docs/designDocs/notebook-implementation.md",slug:"/designDocs/notebook-implementation",permalink:"/docs/next/designDocs/notebook-implementation",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/designDocs/notebook-implementation.md",version:"current",sidebar:"docs",previous:{title:"Experiment Implementation",permalink:"/docs/next/designDocs/experiment-implementation"},next:{title:"Storage Implementation",permalink:"/docs/next/designDocs/storage-implementation"}},c=[{value:"Overview",id:"overview",children:[{value:"User&#39;s interaction",id:"users-interaction",children:[]},{value:"Admin&#39;s interaction",id:"admins-interaction",children:[]}]},{value:"Relationship with other components",id:"relationship-with-other-components",children:[{value:"Metadata store",id:"metadata-store",children:[]},{value:"Submarine Server",id:"submarine-server",children:[]},{value:"Resource manager",id:"resource-manager",children:[]},{value:"Storage",id:"storage",children:[]},{value:"Environment",id:"environment",children:[]},{value:"Submarine SDK (For Experiment, etc.)",id:"submarine-sdk-for-experiment-etc",children:[]},{value:"Security",id:"security",children:[]}]}],l={toc:c};function b(e){var n=e.components,t=Object(r.a)(e,["components"]);return Object(i.b)("wrapper",Object(o.a)({},l,t,{components:n,mdxType:"MDXLayout"}),Object(i.b)("h2",{id:"overview"},"Overview"),Object(i.b)("h3",{id:"users-interaction"},"User's interaction"),Object(i.b)("p",null,"Users can start N (N >= 0) number of Notebook sessions, a notebook session is a running notebook instance."),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Notebook session can be launched by Submarine UI (P0), and Submarine CLI (P2). "),Object(i.b)("li",{parentName:"ul"},"When launch notebook session, users can choose T-shirt size of notebook session (how much mem/cpu/gpu resources, or resource profile such as small, medium, large, etc.). (P0)"),Object(i.b)("li",{parentName:"ul"},"And user can choose an environment for notebook. More details please refer to ",Object(i.b)("a",{parentName:"li",href:"/docs/next/designDocs/environments-implementation"},"environment implementation")," (P0)"),Object(i.b)("li",{parentName:"ul"},"When start a notebook, user can choose what code to be initialized, similar to experiment. (P1)"),Object(i.b)("li",{parentName:"ul"},"Optionally, users can choose to attach a persistent volume to a notebook session. (P2)")),Object(i.b)("p",null,"Users can get a list of notebook sessions belongs to themselves, and connect to notebook session. "),Object(i.b)("p",null,"User can choose to terminate a running notebook session."),Object(i.b)("h3",{id:"admins-interaction"},"Admin's interaction"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"How many concurrent notebook sessions can be launched by each user is determined by resource quota limits of each user, and maximum concurrent notebook sessions can be launched by each user. (P2)")),Object(i.b)("h2",{id:"relationship-with-other-components"},"Relationship with other components"),Object(i.b)("h3",{id:"metadata-store"},"Metadata store"),Object(i.b)("p",null,"Running notebook sessions' metadata need persistented in Submarine's metadata store (Database)."),Object(i.b)("h3",{id:"submarine-server"},"Submarine Server"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"\n  +--------------+  +--------Submarine Server--------------------+\n  |Submarine UI  |  | +-------------------+                      |\n  |              |+---\x3e  Submarine        |                      |\n  |  Notebook    |  | |  Notebook REST API|                      |\n  +--------------+  | |                   |                      |\n                    | +--------+----------+     +--------------+ |\n                    |          |             +->|Metastore     | |\n                    | +--------v----------+  |  |DB            | |\n                    | | Submarine         +--+  +--------------+ |\n                    | | Notebook Mgr      |                      |\n                    | |                   |                      |\n                    | |                   |                      |\n                    | +--------+----------+                      |\n                    |          |                                 |\n                    +----------|---------------------------------+\n                               |\n                +--------------+\n       +--------v---------+\n       | Notebook Session |\n       |                  |\n       |   instance       |\n       |                  |\n       +------------------+\n")),Object(i.b)("p",null,"Once user use Submarine UI to launch a notebook session, Submarine notebook manager inside Submarine Server will persistent notebook session's metadata, and launch a new notebook session instance. "),Object(i.b)("h3",{id:"resource-manager"},"Resource manager"),Object(i.b)("p",null,"When using K8s as resource manager, Submarine notebook session will run as a new POD."),Object(i.b)("h3",{id:"storage"},"Storage"),Object(i.b)("p",null,"There're several different types of storage requirements for Submarine notebook. "),Object(i.b)("p",null,"For code, environment, etc, storage, please refer to ",Object(i.b)("a",{parentName:"p",href:"/docs/next/designDocs/storage-implementation"},"storage implementation"),', check "Localization of experiment/notebook/model-serving code".'),Object(i.b)("p",null,"When there're needs to attach volume (such as user's home folder) to Submarine notebook session, please check ",Object(i.b)("a",{parentName:"p",href:"/docs/next/designDocs/storage-implementation"},"storage implementation"),', check "Attachable volume".'),Object(i.b)("h3",{id:"environment"},"Environment"),Object(i.b)("p",null,"Submarine notebook's environment should be used to run experiment, model serving, etc. Please check ",Object(i.b)("a",{parentName:"p",href:"/docs/next/designDocs/environments-implementation"},"environment implementation"),'. (More specific to notebook, please check "How to implement to make user can easily use Submarine environments")'),Object(i.b)("p",null,"Please note that notebook's Environment should include right version of notebook libraries, and admin should follow the guidance to build correct Docker image, Conda libraries to correctly run Notebook."),Object(i.b)("h3",{id:"submarine-sdk-for-experiment-etc"},"Submarine SDK (For Experiment, etc.)"),Object(i.b)("p",null,"Users can run new experiment, access metrics information, or do model operations using Submarine SDK. "),Object(i.b)("p",null,"Submarine SDK is a Python library which can talk to Submarine Server which need Submarine Server's endpoint as well as user credentials."),Object(i.b)("p",null,"To ensure better experience, we recommend always install proper version of Submarine SDK from environment which users can use Submarine SDK directly from commandline. (We as Submarine community can provide sample Dockerfile or Conda environment which have correct base libraries installed for Submarine SDK)."),Object(i.b)("p",null,"Submarine Server IP will be configured automatically by Submarine Server, and added as an envar when Submarine notebook session got launched."),Object(i.b)("h3",{id:"security"},"Security"),Object(i.b)("p",null,"Please refer to ",Object(i.b)("a",{parentName:"p",href:"/docs/next/designDocs/wip-designs/security-implementation"},"Security Implementation")),Object(i.b)("p",null,"Once user accessed to a running notebook session, the user can also access resources of the notebook, capability of submit new experiment, and access data. This is also very dangerous so we have to protect it. "),Object(i.b)("p",null,"A simple solution is to use token-based authentication ",Object(i.b)("a",{parentName:"p",href:"https://jupyter-notebook.readthedocs.io/en/stable/security.html"},"https://jupyter-notebook.readthedocs.io/en/stable/security.html"),". A more common way is to use solutions like KNOX to support SSO. "),Object(i.b)("p",null,"We need expand this section to more details. (TODO)."))}b.isMDXComponent=!0},194:function(e,n,t){"use strict";t.d(n,"a",(function(){return u})),t.d(n,"b",(function(){return d}));var o=t(0),r=t.n(o);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function a(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);n&&(o=o.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,o)}return t}function s(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?a(Object(t),!0).forEach((function(n){i(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):a(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function c(e,n){if(null==e)return{};var t,o,r=function(e,n){if(null==e)return{};var t,o,r={},i=Object.keys(e);for(o=0;o<i.length;o++)t=i[o],n.indexOf(t)>=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o<i.length;o++)t=i[o],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var l=r.a.createContext({}),b=function(e){var n=r.a.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):s(s({},n),e)),t},u=function(e){var n=b(e.components);return r.a.createElement(l.Provider,{value:n},e.children)},m={inlineCode:"code",wrapper:function(e){var n=e.children;return r.a.createElement(r.a.Fragment,{},n)}},p=r.a.forwardRef((function(e,n){var t=e.components,o=e.mdxType,i=e.originalType,a=e.parentName,l=c(e,["components","mdxType","originalType","parentName"]),u=b(t),p=o,d=u["".concat(a,".").concat(p)]||u[p]||m[p]||i;return t?r.a.createElement(d,s(s({ref:n},l),{},{components:t})):r.a.createElement(d,s({ref:n},l))}));function d(e,n){var t=arguments,o=n&&n.mdxType;if("string"==typeof e||o){var i=t.length,a=new Array(i);a[0]=p;var s={};for(var c in n)hasOwnProperty.call(n,c)&&(s[c]=n[c]);s.originalType=e,s.mdxType="string"==typeof e?e:o,a[1]=s;for(var l=2;l<i;l++)a[l]=t[l];return r.a.createElement.apply(null,a)}return r.a.createElement.apply(null,t)}p.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/80453470.867d0bbd.js b/80453470.41b937e7.js
similarity index 98%
rename from 80453470.867d0bbd.js
rename to 80453470.41b937e7.js
index 5bfe30b..b4b585b 100644
--- a/80453470.867d0bbd.js
+++ b/80453470.41b937e7.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[69],{136:function(e,n,t){"use strict";t.r(n),t.d(n,"frontMatter",(function(){return i})),t.d(n,"metadata",(function(){return p})),t.d(n,"toc",(function(){return o})),t.d(n,"default",(function(){return m}));var r=t(3),a=t(7),s=(t(0),t(209)),i={title:"Experiment REST API"},p={unversionedId:"api/experiment",id:"api/experiment",isDocsHomePage:!1,title:"Experiment REST API",description:"\x3c!--",source:"@site/docs/api/experiment.md",slug:"/api/experiment",permalink:"/docs/next/api/experiment",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/api/experiment.md",version:"current",sidebar:"api",previous:{title:"Environment REST API",permalink:"/docs/next/api/environment"},next:{title:"Experiment Template REST API",permalink:"/docs/next/api/experiment-template"}},o=[{value:"Create Experiment (Using Anonymous/Embedded Environment)",id:"create-experiment-using-anonymousembedded-environment",children:[]},{value:"Create Experiment (Using Pre-defined/Stored Environment)",id:"create-experiment-using-pre-definedstored-environment",children:[{value:"List experiment",id:"list-experiment",children:[]},{value:"Get experiment",id:"get-experiment",children:[]},{value:"Patch experiment",id:"patch-experiment",children:[]},{value:"Delete experiment",id:"delete-experiment",children:[]},{value:"List experiment Log",id:"list-experiment-log",children:[]},{value:"Get experiment Log",id:"get-experiment-log",children:[]}]}],c={toc:o};function m(e){var n=e.components,t=Object(a.a)(e,["components"]);return Object(s.b)("wrapper",Object(r.a)({},c,t,{components:n,mdxType:"MDXLayout"}),Object(s.b)("blockquote",null,Object(s.b)("p",{parentName:"blockquote"},"Note: The Experiment API is in the alpha stage which is subjected to incompatible changes in\nfuture releases.")),Object(s.b)("h2",{id:"create-experiment-using-anonymousembedded-environment"},"Create Experiment (Using Anonymous/Embedded Environment)"),Object(s.b)("p",null,Object(s.b)("inlineCode",{parentName:"p"},"POST /api/v1/experiment")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Request")),Object(s.b)("pre",null,Object(s.b)("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')),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Response:")),Object(s.b)("pre",null,Object(s.b)("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')),Object(s.b)("h2",{id:"create-experiment-using-pre-definedstored-environment"},"Create Experiment (Using Pre-defined/Stored Environment)"),Object(s.b)("p",null,Object(s.b)("inlineCode",{parentName:"p"},"POST /api/v1/experiment")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Request")),Object(s.b)("pre",null,Object(s.b)("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')),Object(s.b)("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'),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Response:")),Object(s.b)("pre",null,Object(s.b)("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')),Object(s.b)("h3",{id:"list-experiment"},"List experiment"),Object(s.b)("p",null,Object(s.b)("inlineCode",{parentName:"p"},"GET /api/v1/experiment")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Request:")),Object(s.b)("pre",null,Object(s.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/experiment\n")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Response:")),Object(s.b)("pre",null,Object(s.b)("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')),Object(s.b)("h3",{id:"get-experiment"},"Get experiment"),Object(s.b)("p",null,Object(s.b)("inlineCode",{parentName:"p"},"GET /api/v1/experiment/{id}")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Request:")),Object(s.b)("pre",null,Object(s.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/experiment/experiment_1592057447228_0001\n")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Response:")),Object(s.b)("pre",null,Object(s.b)("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')),Object(s.b)("h3",{id:"patch-experiment"},"Patch experiment"),Object(s.b)("p",null,Object(s.b)("inlineCode",{parentName:"p"},"PATCH /api/v1/experiment/{id}")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Request:")),Object(s.b)("pre",null,Object(s.b)("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')),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Response:")),Object(s.b)("pre",null,Object(s.b)("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')),Object(s.b)("h3",{id:"delete-experiment"},"Delete experiment"),Object(s.b)("p",null,Object(s.b)("inlineCode",{parentName:"p"},"GET /api/v1/experiment/{id}")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Request:")),Object(s.b)("pre",null,Object(s.b)("code",{parentName:"pre",className:"language-sh"},"curl -X DELETE http://127.0.0.1:32080/api/v1/experiment/experiment_1592057447228_0001\n")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Response:")),Object(s.b)("pre",null,Object(s.b)("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')),Object(s.b)("h3",{id:"list-experiment-log"},"List experiment Log"),Object(s.b)("p",null,Object(s.b)("inlineCode",{parentName:"p"},"GET /api/v1/experiment/logs")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Request:")),Object(s.b)("pre",null,Object(s.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/experiment/logs\n")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Response:")),Object(s.b)("pre",null,Object(s.b)("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')),Object(s.b)("h3",{id:"get-experiment-log"},"Get experiment Log"),Object(s.b)("p",null,Object(s.b)("inlineCode",{parentName:"p"},"GET /api/v1/experiment/logs/{id}")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Request:")),Object(s.b)("pre",null,Object(s.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/experiment/logs/experiment_1589199154923_0002\n")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Response:")),Object(s.b)("pre",null,Object(s.b)("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')))}m.isMDXComponent=!0},209:function(e,n,t){"use strict";t.d(n,"a",(function(){return l})),t.d(n,"b",(function(){return d}));var r=t(0),a=t.n(r);function s(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(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 p(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?i(Object(t),!0).forEach((function(n){s(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):i(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function o(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 c=a.a.createContext({}),m=function(e){var n=a.a.useContext(c),t=n;return e&&(t="function"==typeof e?e(n):p(p({},n),e)),t},l=function(e){var n=m(e.components);return a.a.createElement(c.Provider,{value:n},e.children)},u={inlineCode:"code",wrapper:function(e){var n=e.children;return a.a.createElement(a.a.Fragment,{},n)}},b=a.a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,s=e.originalType,i=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),l=m(t),b=r,d=l["".concat(i,".").concat(b)]||l[b]||u[b]||s;return t?a.a.createElement(d,p(p({ref:n},c),{},{components:t})):a.a.createElement(d,p({ref:n},c))}));function d(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var s=t.length,i=new Array(s);i[0]=b;var p={};for(var o in n)hasOwnProperty.call(n,o)&&(p[o]=n[o]);p.originalType=e,p.mdxType="string"==typeof e?e:r,i[1]=p;for(var c=2;c<s;c++)i[c]=t[c];return a.a.createElement.apply(null,i)}return a.a.createElement.apply(null,t)}b.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[59],{126:function(e,n,t){"use strict";t.r(n),t.d(n,"frontMatter",(function(){return i})),t.d(n,"metadata",(function(){return p})),t.d(n,"toc",(function(){return o})),t.d(n,"default",(function(){return m}));var r=t(3),a=t(7),s=(t(0),t(194)),i={title:"Experiment REST API"},p={unversionedId:"api/experiment",id:"api/experiment",isDocsHomePage:!1,title:"Experiment REST API",description:"\x3c!--",source:"@site/docs/api/experiment.md",slug:"/api/experiment",permalink:"/docs/next/api/experiment",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/api/experiment.md",version:"current",sidebar:"api",previous:{title:"Environment REST API",permalink:"/docs/next/api/environment"},next:{title:"Experiment Template REST API",permalink:"/docs/next/api/experiment-template"}},o=[{value:"Create Experiment (Using Anonymous/Embedded Environment)",id:"create-experiment-using-anonymousembedded-environment",children:[]},{value:"Create Experiment (Using Pre-defined/Stored Environment)",id:"create-experiment-using-pre-definedstored-environment",children:[{value:"List experiment",id:"list-experiment",children:[]},{value:"Get experiment",id:"get-experiment",children:[]},{value:"Patch experiment",id:"patch-experiment",children:[]},{value:"Delete experiment",id:"delete-experiment",children:[]},{value:"List experiment Log",id:"list-experiment-log",children:[]},{value:"Get experiment Log",id:"get-experiment-log",children:[]}]}],c={toc:o};function m(e){var n=e.components,t=Object(a.a)(e,["components"]);return Object(s.b)("wrapper",Object(r.a)({},c,t,{components:n,mdxType:"MDXLayout"}),Object(s.b)("blockquote",null,Object(s.b)("p",{parentName:"blockquote"},"Note: The Experiment API is in the alpha stage which is subjected to incompatible changes in\nfuture releases.")),Object(s.b)("h2",{id:"create-experiment-using-anonymousembedded-environment"},"Create Experiment (Using Anonymous/Embedded Environment)"),Object(s.b)("p",null,Object(s.b)("inlineCode",{parentName:"p"},"POST /api/v1/experiment")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Request")),Object(s.b)("pre",null,Object(s.b)("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')),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Response:")),Object(s.b)("pre",null,Object(s.b)("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')),Object(s.b)("h2",{id:"create-experiment-using-pre-definedstored-environment"},"Create Experiment (Using Pre-defined/Stored Environment)"),Object(s.b)("p",null,Object(s.b)("inlineCode",{parentName:"p"},"POST /api/v1/experiment")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Request")),Object(s.b)("pre",null,Object(s.b)("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')),Object(s.b)("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'),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Response:")),Object(s.b)("pre",null,Object(s.b)("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')),Object(s.b)("h3",{id:"list-experiment"},"List experiment"),Object(s.b)("p",null,Object(s.b)("inlineCode",{parentName:"p"},"GET /api/v1/experiment")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Request:")),Object(s.b)("pre",null,Object(s.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/experiment\n")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Response:")),Object(s.b)("pre",null,Object(s.b)("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')),Object(s.b)("h3",{id:"get-experiment"},"Get experiment"),Object(s.b)("p",null,Object(s.b)("inlineCode",{parentName:"p"},"GET /api/v1/experiment/{id}")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Request:")),Object(s.b)("pre",null,Object(s.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/experiment/experiment_1592057447228_0001\n")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Response:")),Object(s.b)("pre",null,Object(s.b)("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')),Object(s.b)("h3",{id:"patch-experiment"},"Patch experiment"),Object(s.b)("p",null,Object(s.b)("inlineCode",{parentName:"p"},"PATCH /api/v1/experiment/{id}")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Request:")),Object(s.b)("pre",null,Object(s.b)("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')),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Response:")),Object(s.b)("pre",null,Object(s.b)("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')),Object(s.b)("h3",{id:"delete-experiment"},"Delete experiment"),Object(s.b)("p",null,Object(s.b)("inlineCode",{parentName:"p"},"GET /api/v1/experiment/{id}")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Request:")),Object(s.b)("pre",null,Object(s.b)("code",{parentName:"pre",className:"language-sh"},"curl -X DELETE http://127.0.0.1:32080/api/v1/experiment/experiment_1592057447228_0001\n")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Response:")),Object(s.b)("pre",null,Object(s.b)("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')),Object(s.b)("h3",{id:"list-experiment-log"},"List experiment Log"),Object(s.b)("p",null,Object(s.b)("inlineCode",{parentName:"p"},"GET /api/v1/experiment/logs")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Request:")),Object(s.b)("pre",null,Object(s.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/experiment/logs\n")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Response:")),Object(s.b)("pre",null,Object(s.b)("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')),Object(s.b)("h3",{id:"get-experiment-log"},"Get experiment Log"),Object(s.b)("p",null,Object(s.b)("inlineCode",{parentName:"p"},"GET /api/v1/experiment/logs/{id}")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Request:")),Object(s.b)("pre",null,Object(s.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/experiment/logs/experiment_1589199154923_0002\n")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Response:")),Object(s.b)("pre",null,Object(s.b)("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')))}m.isMDXComponent=!0},194:function(e,n,t){"use strict";t.d(n,"a",(function(){return l})),t.d(n,"b",(function(){return d}));var r=t(0),a=t.n(r);function s(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(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 p(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?i(Object(t),!0).forEach((function(n){s(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):i(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function o(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 c=a.a.createContext({}),m=function(e){var n=a.a.useContext(c),t=n;return e&&(t="function"==typeof e?e(n):p(p({},n),e)),t},l=function(e){var n=m(e.components);return a.a.createElement(c.Provider,{value:n},e.children)},u={inlineCode:"code",wrapper:function(e){var n=e.children;return a.a.createElement(a.a.Fragment,{},n)}},b=a.a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,s=e.originalType,i=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),l=m(t),b=r,d=l["".concat(i,".").concat(b)]||l[b]||u[b]||s;return t?a.a.createElement(d,p(p({ref:n},c),{},{components:t})):a.a.createElement(d,p({ref:n},c))}));function d(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var s=t.length,i=new Array(s);i[0]=b;var p={};for(var o in n)hasOwnProperty.call(n,o)&&(p[o]=n[o]);p.originalType=e,p.mdxType="string"==typeof e?e:r,i[1]=p;for(var c=2;c<s;c++)i[c]=t[c];return a.a.createElement.apply(null,i)}return a.a.createElement.apply(null,t)}b.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/817286e8.e6230ef6.js b/817286e8.7c287254.js
similarity index 96%
rename from 817286e8.e6230ef6.js
rename to 817286e8.7c287254.js
index 9ab2ae8..70702a1 100644
--- a/817286e8.e6230ef6.js
+++ b/817286e8.7c287254.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[70],{137:function(e,n,r){"use strict";r.r(n),r.d(n,"frontMatter",(function(){return c})),r.d(n,"metadata",(function(){return o})),r.d(n,"toc",(function(){return s})),r.d(n,"default",(function(){return l}));var t=r(3),i=r(7),a=(r(0),r(209)),c={title:"Submarine Launcher"},o={unversionedId:"designDocs/wip-designs/submarine-launcher",id:"designDocs/wip-designs/submarine-launcher",isDocsHomePage:!1,title:"Submarine Launcher",description:"\x3c!--",source:"@site/docs/designDocs/wip-designs/submarine-launcher.md",slug:"/designDocs/wip-designs/submarine-launcher",permalink:"/docs/next/designDocs/wip-designs/submarine-launcher",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/designDocs/wip-designs/submarine-launcher.md",version:"current",sidebar:"docs",previous:{title:"Generic Experiment Spec",permalink:"/docs/next/designDocs/submarine-server/experimentSpec"},next:{title:"Cluster Server Design - High-Availability",permalink:"/docs/next/designDocs/wip-designs/submarine-clusterServer"}},s=[{value:"Introduction",id:"introduction",children:[]},{value:"Requirement",id:"requirement",children:[{value:"Cloud-Native Service",id:"cloud-native-service",children:[]},{value:"Service discovery",id:"service-discovery",children:[]}]},{value:"Design",id:"design",children:[{value:"Launcher",id:"launcher",children:[]},{value:"Launcher On Docker",id:"launcher-on-docker",children:[]},{value:"Launcher On Kubernetes",id:"launcher-on-kubernetes",children:[]},{value:"Launcher On AWS",id:"launcher-on-aws",children:[]},{value:"Launcher On GCP",id:"launcher-on-gcp",children:[]},{value:"Launcher On Azure",id:"launcher-on-azure",children:[]}]}],u={toc:s};function l(e){var n=e.components,c=Object(i.a)(e,["components"]);return Object(a.b)("wrapper",Object(t.a)({},u,c,{components:n,mdxType:"MDXLayout"}),Object(a.b)("div",{className:"admonition admonition-warning alert alert--danger"},Object(a.b)("div",{parentName:"div",className:"admonition-heading"},Object(a.b)("h5",{parentName:"div"},Object(a.b)("span",{parentName:"h5",className:"admonition-icon"},Object(a.b)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},Object(a.b)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"warning")),Object(a.b)("div",{parentName:"div",className:"admonition-content"},Object(a.b)("p",{parentName:"div"},"Please note that this design doc is working-in-progress and need more works to complete."))),Object(a.b)("h2",{id:"introduction"},"Introduction"),Object(a.b)("p",null,"Submarine is built and run in Cloud Native, taking advantage of the cloud computing model."),Object(a.b)("p",null,"To give full play to the advantages of cloud computing.\nThese applications are characterized by rapid and frequent build, release, and deployment.\nCombined with the features of cloud computing, they are decoupled from the underlying hardware and operating system,\nand can easily meet the requirements of scalability, availability, and portability. And provide better economy."),Object(a.b)("p",null,"In the enterprise data center, submarine can support k8s/docker three resource scheduling systems;\nin the public cloud environment, submarine can support these cloud services in GCE/AWS/Azure;"),Object(a.b)("h2",{id:"requirement"},"Requirement"),Object(a.b)("h3",{id:"cloud-native-service"},"Cloud-Native Service"),Object(a.b)("p",null,"The submarine server is a long-running services in the daemon mode.\nThe submarine server is mainly used by algorithm engineers to provide online front-end functions such as algorithm development,\nalgorithm debugging, data processing, and workflow scheduling.\nAnd submarine server also mainly used for back-end functions such as scheduling and execution of jobs, tracking of job status, and so on."),Object(a.b)("p",null,"Through the ability of rolling upgrades, we can better provide system stability.\nFor example, we can upgrade or restart the workbench server without affecting the normal operation of submitted jobs."),Object(a.b)("p",null,"You can also make full use of system resources.\nFor example, when the number of current developers or job tasks increases,\nThe number of submarine server instances can be adjusted dynamically."),Object(a.b)("p",null,"In addition, submarine will provide each user with a completely independent workspace container.\nThis workspace container has already deployed the development tools and library files commonly used by algorithm engineers including their operating environment.\nAlgorithm engineers can work in our prepared workspaces without any extra work."),Object(a.b)("p",null,"Each user's workspace can also be run through a cloud service."),Object(a.b)("h3",{id:"service-discovery"},"Service discovery"),Object(a.b)("p",null,"With the cluster function of submarine, each service only needs to run in the container,\nand it will automatically register the service in the submarine cluster center.\nSubmarine cluster management will automatically maintain the relationship between service and service, service and user."),Object(a.b)("h2",{id:"design"},"Design"),Object(a.b)("p",null,Object(a.b)("img",{alt:"cloud-service",src:r(251).default})),Object(a.b)("h3",{id:"launcher"},"Launcher"),Object(a.b)("p",null,"The submarine launcher module defines the complete interface.\nBy using this interface, you can run the submarine server, and workspace in k8s / docker / AWS / GCE / Azure."),Object(a.b)("h3",{id:"launcher-on-docker"},"Launcher On Docker"),Object(a.b)("p",null,"In order to allow some small and medium-sized users without k8s to use submarine,\nwe support running the submarine system in docker mode."),Object(a.b)("p",null,"Users only need to provide several servers with docker runtime environment.\nThe submarine system can automatically cluster these servers into clusters, manage all the hardware resources of the cluster,\nand run the service or workspace container in this cluster through scheduling algorithms."),Object(a.b)("h3",{id:"launcher-on-kubernetes"},"Launcher On Kubernetes"),Object(a.b)("p",null,"submarine operator"),Object(a.b)("h3",{id:"launcher-on-aws"},"Launcher On AWS"),Object(a.b)("p",null,"[TODO]"),Object(a.b)("h3",{id:"launcher-on-gcp"},"Launcher On GCP"),Object(a.b)("p",null,"[TODO]"),Object(a.b)("h3",{id:"launcher-on-azure"},"Launcher On Azure"),Object(a.b)("p",null,"[TODO]"))}l.isMDXComponent=!0},209:function(e,n,r){"use strict";r.d(n,"a",(function(){return d})),r.d(n,"b",(function(){return h}));var t=r(0),i=r.n(t);function a(e,n,r){return n in e?Object.defineProperty(e,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[n]=r,e}function c(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),r.push.apply(r,t)}return r}function o(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?c(Object(r),!0).forEach((function(n){a(e,n,r[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):c(Object(r)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))}))}return e}function s(e,n){if(null==e)return{};var r,t,i=function(e,n){if(null==e)return{};var r,t,i={},a=Object.keys(e);for(t=0;t<a.length;t++)r=a[t],n.indexOf(r)>=0||(i[r]=e[r]);return i}(e,n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(t=0;t<a.length;t++)r=a[t],n.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var u=i.a.createContext({}),l=function(e){var n=i.a.useContext(u),r=n;return e&&(r="function"==typeof e?e(n):o(o({},n),e)),r},d=function(e){var n=l(e.components);return i.a.createElement(u.Provider,{value:n},e.children)},b={inlineCode:"code",wrapper:function(e){var n=e.children;return i.a.createElement(i.a.Fragment,{},n)}},p=i.a.forwardRef((function(e,n){var r=e.components,t=e.mdxType,a=e.originalType,c=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),d=l(r),p=t,h=d["".concat(c,".").concat(p)]||d[p]||b[p]||a;return r?i.a.createElement(h,o(o({ref:n},u),{},{components:r})):i.a.createElement(h,o({ref:n},u))}));function h(e,n){var r=arguments,t=n&&n.mdxType;if("string"==typeof e||t){var a=r.length,c=new Array(a);c[0]=p;var o={};for(var s in n)hasOwnProperty.call(n,s)&&(o[s]=n[s]);o.originalType=e,o.mdxType="string"==typeof e?e:t,c[1]=o;for(var u=2;u<a;u++)c[u]=r[u];return i.a.createElement.apply(null,c)}return i.a.createElement.apply(null,r)}p.displayName="MDXCreateElement"},251:function(e,n,r){"use strict";r.r(n),n.default=r.p+"assets/images/multi-dc-cloud-420a103fad1e4af8a56287f083760d92.png"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[60],{127:function(e,n,r){"use strict";r.r(n),r.d(n,"frontMatter",(function(){return c})),r.d(n,"metadata",(function(){return o})),r.d(n,"toc",(function(){return s})),r.d(n,"default",(function(){return l}));var t=r(3),i=r(7),a=(r(0),r(194)),c={title:"Submarine Launcher"},o={unversionedId:"designDocs/wip-designs/submarine-launcher",id:"designDocs/wip-designs/submarine-launcher",isDocsHomePage:!1,title:"Submarine Launcher",description:"\x3c!--",source:"@site/docs/designDocs/wip-designs/submarine-launcher.md",slug:"/designDocs/wip-designs/submarine-launcher",permalink:"/docs/next/designDocs/wip-designs/submarine-launcher",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/designDocs/wip-designs/submarine-launcher.md",version:"current",sidebar:"docs",previous:{title:"Generic Experiment Spec",permalink:"/docs/next/designDocs/submarine-server/experimentSpec"},next:{title:"Cluster Server Design - High-Availability",permalink:"/docs/next/designDocs/wip-designs/submarine-clusterServer"}},s=[{value:"Introduction",id:"introduction",children:[]},{value:"Requirement",id:"requirement",children:[{value:"Cloud-Native Service",id:"cloud-native-service",children:[]},{value:"Service discovery",id:"service-discovery",children:[]}]},{value:"Design",id:"design",children:[{value:"Launcher",id:"launcher",children:[]},{value:"Launcher On Docker",id:"launcher-on-docker",children:[]},{value:"Launcher On Kubernetes",id:"launcher-on-kubernetes",children:[]},{value:"Launcher On AWS",id:"launcher-on-aws",children:[]},{value:"Launcher On GCP",id:"launcher-on-gcp",children:[]},{value:"Launcher On Azure",id:"launcher-on-azure",children:[]}]}],u={toc:s};function l(e){var n=e.components,c=Object(i.a)(e,["components"]);return Object(a.b)("wrapper",Object(t.a)({},u,c,{components:n,mdxType:"MDXLayout"}),Object(a.b)("div",{className:"admonition admonition-warning alert alert--danger"},Object(a.b)("div",{parentName:"div",className:"admonition-heading"},Object(a.b)("h5",{parentName:"div"},Object(a.b)("span",{parentName:"h5",className:"admonition-icon"},Object(a.b)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},Object(a.b)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"warning")),Object(a.b)("div",{parentName:"div",className:"admonition-content"},Object(a.b)("p",{parentName:"div"},"Please note that this design doc is working-in-progress and need more works to complete."))),Object(a.b)("h2",{id:"introduction"},"Introduction"),Object(a.b)("p",null,"Submarine is built and run in Cloud Native, taking advantage of the cloud computing model."),Object(a.b)("p",null,"To give full play to the advantages of cloud computing.\nThese applications are characterized by rapid and frequent build, release, and deployment.\nCombined with the features of cloud computing, they are decoupled from the underlying hardware and operating system,\nand can easily meet the requirements of scalability, availability, and portability. And provide better economy."),Object(a.b)("p",null,"In the enterprise data center, submarine can support k8s/docker three resource scheduling systems;\nin the public cloud environment, submarine can support these cloud services in GCE/AWS/Azure;"),Object(a.b)("h2",{id:"requirement"},"Requirement"),Object(a.b)("h3",{id:"cloud-native-service"},"Cloud-Native Service"),Object(a.b)("p",null,"The submarine server is a long-running services in the daemon mode.\nThe submarine server is mainly used by algorithm engineers to provide online front-end functions such as algorithm development,\nalgorithm debugging, data processing, and workflow scheduling.\nAnd submarine server also mainly used for back-end functions such as scheduling and execution of jobs, tracking of job status, and so on."),Object(a.b)("p",null,"Through the ability of rolling upgrades, we can better provide system stability.\nFor example, we can upgrade or restart the workbench server without affecting the normal operation of submitted jobs."),Object(a.b)("p",null,"You can also make full use of system resources.\nFor example, when the number of current developers or job tasks increases,\nThe number of submarine server instances can be adjusted dynamically."),Object(a.b)("p",null,"In addition, submarine will provide each user with a completely independent workspace container.\nThis workspace container has already deployed the development tools and library files commonly used by algorithm engineers including their operating environment.\nAlgorithm engineers can work in our prepared workspaces without any extra work."),Object(a.b)("p",null,"Each user's workspace can also be run through a cloud service."),Object(a.b)("h3",{id:"service-discovery"},"Service discovery"),Object(a.b)("p",null,"With the cluster function of submarine, each service only needs to run in the container,\nand it will automatically register the service in the submarine cluster center.\nSubmarine cluster management will automatically maintain the relationship between service and service, service and user."),Object(a.b)("h2",{id:"design"},"Design"),Object(a.b)("p",null,Object(a.b)("img",{alt:"cloud-service",src:r(234).default})),Object(a.b)("h3",{id:"launcher"},"Launcher"),Object(a.b)("p",null,"The submarine launcher module defines the complete interface.\nBy using this interface, you can run the submarine server, and workspace in k8s / docker / AWS / GCE / Azure."),Object(a.b)("h3",{id:"launcher-on-docker"},"Launcher On Docker"),Object(a.b)("p",null,"In order to allow some small and medium-sized users without k8s to use submarine,\nwe support running the submarine system in docker mode."),Object(a.b)("p",null,"Users only need to provide several servers with docker runtime environment.\nThe submarine system can automatically cluster these servers into clusters, manage all the hardware resources of the cluster,\nand run the service or workspace container in this cluster through scheduling algorithms."),Object(a.b)("h3",{id:"launcher-on-kubernetes"},"Launcher On Kubernetes"),Object(a.b)("p",null,"submarine operator"),Object(a.b)("h3",{id:"launcher-on-aws"},"Launcher On AWS"),Object(a.b)("p",null,"[TODO]"),Object(a.b)("h3",{id:"launcher-on-gcp"},"Launcher On GCP"),Object(a.b)("p",null,"[TODO]"),Object(a.b)("h3",{id:"launcher-on-azure"},"Launcher On Azure"),Object(a.b)("p",null,"[TODO]"))}l.isMDXComponent=!0},194:function(e,n,r){"use strict";r.d(n,"a",(function(){return d})),r.d(n,"b",(function(){return h}));var t=r(0),i=r.n(t);function a(e,n,r){return n in e?Object.defineProperty(e,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[n]=r,e}function c(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),r.push.apply(r,t)}return r}function o(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?c(Object(r),!0).forEach((function(n){a(e,n,r[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):c(Object(r)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))}))}return e}function s(e,n){if(null==e)return{};var r,t,i=function(e,n){if(null==e)return{};var r,t,i={},a=Object.keys(e);for(t=0;t<a.length;t++)r=a[t],n.indexOf(r)>=0||(i[r]=e[r]);return i}(e,n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(t=0;t<a.length;t++)r=a[t],n.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var u=i.a.createContext({}),l=function(e){var n=i.a.useContext(u),r=n;return e&&(r="function"==typeof e?e(n):o(o({},n),e)),r},d=function(e){var n=l(e.components);return i.a.createElement(u.Provider,{value:n},e.children)},b={inlineCode:"code",wrapper:function(e){var n=e.children;return i.a.createElement(i.a.Fragment,{},n)}},p=i.a.forwardRef((function(e,n){var r=e.components,t=e.mdxType,a=e.originalType,c=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),d=l(r),p=t,h=d["".concat(c,".").concat(p)]||d[p]||b[p]||a;return r?i.a.createElement(h,o(o({ref:n},u),{},{components:r})):i.a.createElement(h,o({ref:n},u))}));function h(e,n){var r=arguments,t=n&&n.mdxType;if("string"==typeof e||t){var a=r.length,c=new Array(a);c[0]=p;var o={};for(var s in n)hasOwnProperty.call(n,s)&&(o[s]=n[s]);o.originalType=e,o.mdxType="string"==typeof e?e:t,c[1]=o;for(var u=2;u<a;u++)c[u]=r[u];return i.a.createElement.apply(null,c)}return i.a.createElement.apply(null,r)}p.displayName="MDXCreateElement"},234:function(e,n,r){"use strict";r.r(n),n.default=r.p+"assets/images/multi-dc-cloud-420a103fad1e4af8a56287f083760d92.png"}}]);
\ No newline at end of file
diff --git a/82a4a2ce.6fb82595.js b/82a4a2ce.d86e16ea.js
similarity index 94%
rename from 82a4a2ce.6fb82595.js
rename to 82a4a2ce.d86e16ea.js
index 9438781..30cdf0c 100644
--- a/82a4a2ce.6fb82595.js
+++ b/82a4a2ce.d86e16ea.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[71],{138:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return l})),n.d(t,"metadata",(function(){return i})),n.d(t,"toc",(function(){return c})),n.d(t,"default",(function(){return u}));var r=n(3),o=n(7),a=(n(0),n(209)),l={title:"MLflow UI"},i={unversionedId:"userDocs/others/mlflow",id:"userDocs/others/mlflow",isDocsHomePage:!1,title:"MLflow UI",description:"\x3c!--",source:"@site/docs/userDocs/others/mlflow.md",slug:"/userDocs/others/mlflow",permalink:"/docs/next/userDocs/others/mlflow",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/userDocs/others/mlflow.md",version:"current",sidebar:"docs",previous:{title:"Tracking",permalink:"/docs/next/userDocs/submarine-sdk/tracking"},next:{title:"Tensorboard",permalink:"/docs/next/userDocs/others/tensorboard"}},c=[{value:"Usage",id:"usage",children:[]},{value:"Example",id:"example",children:[]}],s={toc:c};function u(e){var t=e.components,l=Object(o.a)(e,["components"]);return Object(a.b)("wrapper",Object(r.a)({},s,l,{components:t,mdxType:"MDXLayout"}),Object(a.b)("h3",{id:"usage"},"Usage"),Object(a.b)("p",null,"MLflow UI shows the tracking result of the experiments. When we\nuse the log_param or log_metric in ModelClient API, we could view\nthe result in MLflow UI. Below is the example of the usage of MLflow\nUI."),Object(a.b)("h3",{id:"example"},"Example"),Object(a.b)("ol",null,Object(a.b)("li",{parentName:"ol"},"Run the following code in the cluster")),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre",className:"language-python"},'from submarine import ModelsClient\nimport random\nimport time\n\nif __name__ == "__main__":\n  modelClient = ModelsClient()\n  with modelClient.start() as run:\n      modelClient.log_param("learning_rate", random.random())\n      for i in range(100):\n        time.sleep(1)\n        modelClient.log_metric("mse", random.random() * 100, i)\n        modelClient.log_metric("acc", random.random(), i)\n')),Object(a.b)("ol",{start:2},Object(a.b)("li",{parentName:"ol"},"In the MLflow UI page, you can see the log_param and the log_metric\nresult. You can also compare the training between different workers.")),Object(a.b)("p",null,Object(a.b)("img",{src:n(233).default})))}u.isMDXComponent=!0},209:function(e,t,n){"use strict";n.d(t,"a",(function(){return m})),n.d(t,"b",(function(){return d}));var r=n(0),o=n.n(r);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?l(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):l(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function c(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var s=o.a.createContext({}),u=function(e){var t=o.a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},m=function(e){var t=u(e.components);return o.a.createElement(s.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return o.a.createElement(o.a.Fragment,{},t)}},f=o.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,l=e.parentName,s=c(e,["components","mdxType","originalType","parentName"]),m=u(n),f=r,d=m["".concat(l,".").concat(f)]||m[f]||p[f]||a;return n?o.a.createElement(d,i(i({ref:t},s),{},{components:n})):o.a.createElement(d,i({ref:t},s))}));function d(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,l=new Array(a);l[0]=f;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i.mdxType="string"==typeof e?e:r,l[1]=i;for(var s=2;s<a;s++)l[s]=n[s];return o.a.createElement.apply(null,l)}return o.a.createElement.apply(null,n)}f.displayName="MDXCreateElement"},233:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/mlflow-ui-e2fbae31ba60c324e66f00f0ae3caebf.png"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[61],{128:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return l})),n.d(t,"metadata",(function(){return i})),n.d(t,"toc",(function(){return c})),n.d(t,"default",(function(){return u}));var r=n(3),o=n(7),a=(n(0),n(194)),l={title:"MLflow UI"},i={unversionedId:"userDocs/others/mlflow",id:"userDocs/others/mlflow",isDocsHomePage:!1,title:"MLflow UI",description:"\x3c!--",source:"@site/docs/userDocs/others/mlflow.md",slug:"/userDocs/others/mlflow",permalink:"/docs/next/userDocs/others/mlflow",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/userDocs/others/mlflow.md",version:"current",sidebar:"docs",previous:{title:"Tracking",permalink:"/docs/next/userDocs/submarine-sdk/tracking"},next:{title:"Tensorboard",permalink:"/docs/next/userDocs/others/tensorboard"}},c=[{value:"Usage",id:"usage",children:[]},{value:"Example",id:"example",children:[]}],s={toc:c};function u(e){var t=e.components,l=Object(o.a)(e,["components"]);return Object(a.b)("wrapper",Object(r.a)({},s,l,{components:t,mdxType:"MDXLayout"}),Object(a.b)("h3",{id:"usage"},"Usage"),Object(a.b)("p",null,"MLflow UI shows the tracking result of the experiments. When we\nuse the log_param or log_metric in ModelClient API, we could view\nthe result in MLflow UI. Below is the example of the usage of MLflow\nUI."),Object(a.b)("h3",{id:"example"},"Example"),Object(a.b)("ol",null,Object(a.b)("li",{parentName:"ol"},"Run the following code in the cluster")),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre",className:"language-python"},'from submarine import ModelsClient\nimport random\nimport time\n\nif __name__ == "__main__":\n  modelClient = ModelsClient()\n  with modelClient.start() as run:\n      modelClient.log_param("learning_rate", random.random())\n      for i in range(100):\n        time.sleep(1)\n        modelClient.log_metric("mse", random.random() * 100, i)\n        modelClient.log_metric("acc", random.random(), i)\n')),Object(a.b)("ol",{start:2},Object(a.b)("li",{parentName:"ol"},"In the MLflow UI page, you can see the log_param and the log_metric\nresult. You can also compare the training between different workers.")),Object(a.b)("p",null,Object(a.b)("img",{src:n(211).default})))}u.isMDXComponent=!0},194:function(e,t,n){"use strict";n.d(t,"a",(function(){return m})),n.d(t,"b",(function(){return d}));var r=n(0),o=n.n(r);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?l(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):l(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function c(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var s=o.a.createContext({}),u=function(e){var t=o.a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},m=function(e){var t=u(e.components);return o.a.createElement(s.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return o.a.createElement(o.a.Fragment,{},t)}},f=o.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,l=e.parentName,s=c(e,["components","mdxType","originalType","parentName"]),m=u(n),f=r,d=m["".concat(l,".").concat(f)]||m[f]||p[f]||a;return n?o.a.createElement(d,i(i({ref:t},s),{},{components:n})):o.a.createElement(d,i({ref:t},s))}));function d(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,l=new Array(a);l[0]=f;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i.mdxType="string"==typeof e?e:r,l[1]=i;for(var s=2;s<a;s++)l[s]=n[s];return o.a.createElement.apply(null,l)}return o.a.createElement.apply(null,n)}f.displayName="MDXCreateElement"},211:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/mlflow-ui-e2fbae31ba60c324e66f00f0ae3caebf.png"}}]);
\ No newline at end of file
diff --git a/85b50ba6.282022a4.js b/85b50ba6.27af03f3.js
similarity index 97%
rename from 85b50ba6.282022a4.js
rename to 85b50ba6.27af03f3.js
index d04aa09..ca1d55d 100644
--- a/85b50ba6.282022a4.js
+++ b/85b50ba6.27af03f3.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[72],{139:function(e,n,t){"use strict";t.r(n),t.d(n,"frontMatter",(function(){return o})),t.d(n,"metadata",(function(){return l})),t.d(n,"toc",(function(){return c})),t.d(n,"default",(function(){return s}));var a=t(3),r=t(7),i=(t(0),t(209)),o={},l={unversionedId:"ecosystem/kaldi/WriteDockerfileKaldi",id:"version-0.6.0/ecosystem/kaldi/WriteDockerfileKaldi",isDocsHomePage:!1,title:"WriteDockerfileKaldi",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/ecosystem/kaldi/WriteDockerfileKaldi.md",slug:"/ecosystem/kaldi/WriteDockerfileKaldi",permalink:"/docs/ecosystem/kaldi/WriteDockerfileKaldi",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/ecosystem/kaldi/WriteDockerfileKaldi.md",version:"0.6.0"},c=[{value:"Creating Docker Images for Running Kaldi on YARN",id:"creating-docker-images-for-running-kaldi-on-yarn",children:[{value:"How to create docker images to run Kaldi on YARN",id:"how-to-create-docker-images-to-run-kaldi-on-yarn",children:[]},{value:"Use examples to build your own Kaldi docker images",id:"use-examples-to-build-your-own-kaldi-docker-images",children:[]},{value:"Build Docker images",id:"build-docker-images",children:[]}]}],d={toc:c};function s(e){var n=e.components,t=Object(r.a)(e,["components"]);return Object(i.b)("wrapper",Object(a.a)({},d,t,{components:n,mdxType:"MDXLayout"}),Object(i.b)("h2",{id:"creating-docker-images-for-running-kaldi-on-yarn"},"Creating Docker Images for Running Kaldi on YARN"),Object(i.b)("h3",{id:"how-to-create-docker-images-to-run-kaldi-on-yarn"},"How to create docker images to run Kaldi on YARN"),Object(i.b)("p",null,"Dockerfile to run Kaldi on YARN need two part:"),Object(i.b)("p",null,Object(i.b)("strong",{parentName:"p"},"Base libraries which Kaldi depends on")),Object(i.b)("p",null,"1) OS base image, for example ",Object(i.b)("inlineCode",{parentName:"p"},"nvidia/cuda:10.0-cudnn7-devel-ubuntu18.04")),Object(i.b)("p",null,"2) Kaldi depended libraries and packages. For example ",Object(i.b)("inlineCode",{parentName:"p"},"python"),", ",Object(i.b)("inlineCode",{parentName:"p"},"g++"),", ",Object(i.b)("inlineCode",{parentName:"p"},"make"),". For GPU support, need ",Object(i.b)("inlineCode",{parentName:"p"},"cuda"),", ",Object(i.b)("inlineCode",{parentName:"p"},"cudnn"),", etc."),Object(i.b)("p",null,"3) Kaldi compile."),Object(i.b)("p",null,Object(i.b)("strong",{parentName:"p"},"Libraries to access HDFS")),Object(i.b)("p",null,"1) JDK"),Object(i.b)("p",null,"2) Hadoop"),Object(i.b)("p",null,"Here's an example of a base image (w/o GPU support) to install Kaldi:"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-shell"},"FROM nvidia/cuda:10.0-cudnn7-devel-ubuntu18.04\n\nRUN apt-get clean && \\\n    apt-get update && \\\n    apt-get install -y --no-install-recommends \\\n        sudo \\\n        openjdk-8-jdk \\\n        iputils-ping \\\n        g++ \\\n        make \\\n        automake \\\n        autoconf \\\n        bzip2 \\\n        unzip \\\n        wget \\\n        sox \\\n        libtool \\\n        git \\\n        subversion \\\n        python2.7 \\\n        python3 \\\n        zlib1g-dev \\\n        ca-certificates \\\n        patch \\\n        ffmpeg \\\n        vim && \\\n        rm -rf /var/lib/apt/lists/* && \\\n        ln -s /usr/bin/python2.7 /usr/bin/python\n\nRUN git clone --depth 1 https://github.com/kaldi-asr/kaldi.git /opt/kaldi && \\\n    cd /opt/kaldi && \\\n    cd /opt/kaldi/tools && \\\n    ./extras/install_mkl.sh && \\\n    make -j $(nproc) && \\\n    cd /opt/kaldi/src && \\\n    ./configure --shared --use-cuda && \\\n    make depend -j $(nproc) && \\\n    make -j $(nproc)\n")),Object(i.b)("p",null,"On top of above image, add files, install packages to access HDFS"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-shell"},'RUN apt-get update && apt-get install -y openjdk-8-jdk wget\n# Install hadoop\nENV HADOOP_VERSION="3.2.1"\nENV JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64\nRUN wget https://archive.apache.org/dist/hadoop/common/hadoop-${HADOOP_VERSION}/hadoop-${HADOOP_VERSION}.tar.gz && \\\n    tar zxf hadoop-${HADOOP_VERSION}.tar.gz && \\\n    ln -s hadoop-${HADOOP_VERSION} hadoop-current && \\\n    rm hadoop-${HADOOP_VERSION}.tar.gz\n')),Object(i.b)("p",null,"Build and push to your own docker registry: Use ",Object(i.b)("inlineCode",{parentName:"p"},"docker build ... ")," and ",Object(i.b)("inlineCode",{parentName:"p"},"docker push ...")," to finish this step."),Object(i.b)("h3",{id:"use-examples-to-build-your-own-kaldi-docker-images"},"Use examples to build your own Kaldi docker images"),Object(i.b)("p",null,"We provided following examples for you to build kaldi docker images."),Object(i.b)("p",null,"For latest Kaldi"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"*base/ubuntu-18.04/Dockerfile.gpu.kaldi_latest: Latest Kaldi that supports GPU, which is prebuilt to CUDA10, with models.")),Object(i.b)("h3",{id:"build-docker-images"},"Build Docker images"),Object(i.b)("h4",{id:"manually-build-docker-image"},"Manually build Docker image:"),Object(i.b)("p",null,"Under ",Object(i.b)("inlineCode",{parentName:"p"},"docker/")," directory,The CLUSTER_NAME can be modified in build-all.sh to have installation permissions, run ",Object(i.b)("inlineCode",{parentName:"p"},"build-all.sh")," to build Docker images. It will build following images:"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("inlineCode",{parentName:"li"},"kaldi-latest-gpu-base:0.0.1")," for base Docker image which includes Hadoop, Kaldi, GPU base libraries, which includes thchs30 model.")),Object(i.b)("h4",{id:"use-prebuilt-images"},"Use prebuilt images"),Object(i.b)("p",null,"(No liability)\nYou can also use prebuilt images for convenience in the docker hub:"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"hadoopsubmarine/kaldi-latest-gpu-base:0.0.1")))}s.isMDXComponent=!0},209:function(e,n,t){"use strict";t.d(n,"a",(function(){return p})),t.d(n,"b",(function(){return m}));var a=t(0),r=t.n(a);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function o(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function l(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?o(Object(t),!0).forEach((function(n){i(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):o(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function c(e,n){if(null==e)return{};var t,a,r=function(e,n){if(null==e)return{};var t,a,r={},i=Object.keys(e);for(a=0;a<i.length;a++)t=i[a],n.indexOf(t)>=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)t=i[a],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var d=r.a.createContext({}),s=function(e){var n=r.a.useContext(d),t=n;return e&&(t="function"==typeof e?e(n):l(l({},n),e)),t},p=function(e){var n=s(e.components);return r.a.createElement(d.Provider,{value:n},e.children)},u={inlineCode:"code",wrapper:function(e){var n=e.children;return r.a.createElement(r.a.Fragment,{},n)}},b=r.a.forwardRef((function(e,n){var t=e.components,a=e.mdxType,i=e.originalType,o=e.parentName,d=c(e,["components","mdxType","originalType","parentName"]),p=s(t),b=a,m=p["".concat(o,".").concat(b)]||p[b]||u[b]||i;return t?r.a.createElement(m,l(l({ref:n},d),{},{components:t})):r.a.createElement(m,l({ref:n},d))}));function m(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var i=t.length,o=new Array(i);o[0]=b;var l={};for(var c in n)hasOwnProperty.call(n,c)&&(l[c]=n[c]);l.originalType=e,l.mdxType="string"==typeof e?e:a,o[1]=l;for(var d=2;d<i;d++)o[d]=t[d];return r.a.createElement.apply(null,o)}return r.a.createElement.apply(null,t)}b.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[62],{129:function(e,n,t){"use strict";t.r(n),t.d(n,"frontMatter",(function(){return o})),t.d(n,"metadata",(function(){return l})),t.d(n,"toc",(function(){return c})),t.d(n,"default",(function(){return s}));var a=t(3),r=t(7),i=(t(0),t(194)),o={},l={unversionedId:"ecosystem/kaldi/WriteDockerfileKaldi",id:"version-0.6.0/ecosystem/kaldi/WriteDockerfileKaldi",isDocsHomePage:!1,title:"WriteDockerfileKaldi",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/ecosystem/kaldi/WriteDockerfileKaldi.md",slug:"/ecosystem/kaldi/WriteDockerfileKaldi",permalink:"/docs/ecosystem/kaldi/WriteDockerfileKaldi",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/ecosystem/kaldi/WriteDockerfileKaldi.md",version:"0.6.0"},c=[{value:"Creating Docker Images for Running Kaldi on YARN",id:"creating-docker-images-for-running-kaldi-on-yarn",children:[{value:"How to create docker images to run Kaldi on YARN",id:"how-to-create-docker-images-to-run-kaldi-on-yarn",children:[]},{value:"Use examples to build your own Kaldi docker images",id:"use-examples-to-build-your-own-kaldi-docker-images",children:[]},{value:"Build Docker images",id:"build-docker-images",children:[]}]}],d={toc:c};function s(e){var n=e.components,t=Object(r.a)(e,["components"]);return Object(i.b)("wrapper",Object(a.a)({},d,t,{components:n,mdxType:"MDXLayout"}),Object(i.b)("h2",{id:"creating-docker-images-for-running-kaldi-on-yarn"},"Creating Docker Images for Running Kaldi on YARN"),Object(i.b)("h3",{id:"how-to-create-docker-images-to-run-kaldi-on-yarn"},"How to create docker images to run Kaldi on YARN"),Object(i.b)("p",null,"Dockerfile to run Kaldi on YARN need two part:"),Object(i.b)("p",null,Object(i.b)("strong",{parentName:"p"},"Base libraries which Kaldi depends on")),Object(i.b)("p",null,"1) OS base image, for example ",Object(i.b)("inlineCode",{parentName:"p"},"nvidia/cuda:10.0-cudnn7-devel-ubuntu18.04")),Object(i.b)("p",null,"2) Kaldi depended libraries and packages. For example ",Object(i.b)("inlineCode",{parentName:"p"},"python"),", ",Object(i.b)("inlineCode",{parentName:"p"},"g++"),", ",Object(i.b)("inlineCode",{parentName:"p"},"make"),". For GPU support, need ",Object(i.b)("inlineCode",{parentName:"p"},"cuda"),", ",Object(i.b)("inlineCode",{parentName:"p"},"cudnn"),", etc."),Object(i.b)("p",null,"3) Kaldi compile."),Object(i.b)("p",null,Object(i.b)("strong",{parentName:"p"},"Libraries to access HDFS")),Object(i.b)("p",null,"1) JDK"),Object(i.b)("p",null,"2) Hadoop"),Object(i.b)("p",null,"Here's an example of a base image (w/o GPU support) to install Kaldi:"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-shell"},"FROM nvidia/cuda:10.0-cudnn7-devel-ubuntu18.04\n\nRUN apt-get clean && \\\n    apt-get update && \\\n    apt-get install -y --no-install-recommends \\\n        sudo \\\n        openjdk-8-jdk \\\n        iputils-ping \\\n        g++ \\\n        make \\\n        automake \\\n        autoconf \\\n        bzip2 \\\n        unzip \\\n        wget \\\n        sox \\\n        libtool \\\n        git \\\n        subversion \\\n        python2.7 \\\n        python3 \\\n        zlib1g-dev \\\n        ca-certificates \\\n        patch \\\n        ffmpeg \\\n        vim && \\\n        rm -rf /var/lib/apt/lists/* && \\\n        ln -s /usr/bin/python2.7 /usr/bin/python\n\nRUN git clone --depth 1 https://github.com/kaldi-asr/kaldi.git /opt/kaldi && \\\n    cd /opt/kaldi && \\\n    cd /opt/kaldi/tools && \\\n    ./extras/install_mkl.sh && \\\n    make -j $(nproc) && \\\n    cd /opt/kaldi/src && \\\n    ./configure --shared --use-cuda && \\\n    make depend -j $(nproc) && \\\n    make -j $(nproc)\n")),Object(i.b)("p",null,"On top of above image, add files, install packages to access HDFS"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-shell"},'RUN apt-get update && apt-get install -y openjdk-8-jdk wget\n# Install hadoop\nENV HADOOP_VERSION="3.2.1"\nENV JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64\nRUN wget https://archive.apache.org/dist/hadoop/common/hadoop-${HADOOP_VERSION}/hadoop-${HADOOP_VERSION}.tar.gz && \\\n    tar zxf hadoop-${HADOOP_VERSION}.tar.gz && \\\n    ln -s hadoop-${HADOOP_VERSION} hadoop-current && \\\n    rm hadoop-${HADOOP_VERSION}.tar.gz\n')),Object(i.b)("p",null,"Build and push to your own docker registry: Use ",Object(i.b)("inlineCode",{parentName:"p"},"docker build ... ")," and ",Object(i.b)("inlineCode",{parentName:"p"},"docker push ...")," to finish this step."),Object(i.b)("h3",{id:"use-examples-to-build-your-own-kaldi-docker-images"},"Use examples to build your own Kaldi docker images"),Object(i.b)("p",null,"We provided following examples for you to build kaldi docker images."),Object(i.b)("p",null,"For latest Kaldi"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"*base/ubuntu-18.04/Dockerfile.gpu.kaldi_latest: Latest Kaldi that supports GPU, which is prebuilt to CUDA10, with models.")),Object(i.b)("h3",{id:"build-docker-images"},"Build Docker images"),Object(i.b)("h4",{id:"manually-build-docker-image"},"Manually build Docker image:"),Object(i.b)("p",null,"Under ",Object(i.b)("inlineCode",{parentName:"p"},"docker/")," directory,The CLUSTER_NAME can be modified in build-all.sh to have installation permissions, run ",Object(i.b)("inlineCode",{parentName:"p"},"build-all.sh")," to build Docker images. It will build following images:"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("inlineCode",{parentName:"li"},"kaldi-latest-gpu-base:0.0.1")," for base Docker image which includes Hadoop, Kaldi, GPU base libraries, which includes thchs30 model.")),Object(i.b)("h4",{id:"use-prebuilt-images"},"Use prebuilt images"),Object(i.b)("p",null,"(No liability)\nYou can also use prebuilt images for convenience in the docker hub:"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"hadoopsubmarine/kaldi-latest-gpu-base:0.0.1")))}s.isMDXComponent=!0},194:function(e,n,t){"use strict";t.d(n,"a",(function(){return p})),t.d(n,"b",(function(){return m}));var a=t(0),r=t.n(a);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function o(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function l(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?o(Object(t),!0).forEach((function(n){i(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):o(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function c(e,n){if(null==e)return{};var t,a,r=function(e,n){if(null==e)return{};var t,a,r={},i=Object.keys(e);for(a=0;a<i.length;a++)t=i[a],n.indexOf(t)>=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)t=i[a],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var d=r.a.createContext({}),s=function(e){var n=r.a.useContext(d),t=n;return e&&(t="function"==typeof e?e(n):l(l({},n),e)),t},p=function(e){var n=s(e.components);return r.a.createElement(d.Provider,{value:n},e.children)},u={inlineCode:"code",wrapper:function(e){var n=e.children;return r.a.createElement(r.a.Fragment,{},n)}},b=r.a.forwardRef((function(e,n){var t=e.components,a=e.mdxType,i=e.originalType,o=e.parentName,d=c(e,["components","mdxType","originalType","parentName"]),p=s(t),b=a,m=p["".concat(o,".").concat(b)]||p[b]||u[b]||i;return t?r.a.createElement(m,l(l({ref:n},d),{},{components:t})):r.a.createElement(m,l({ref:n},d))}));function m(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var i=t.length,o=new Array(i);o[0]=b;var l={};for(var c in n)hasOwnProperty.call(n,c)&&(l[c]=n[c]);l.originalType=e,l.mdxType="string"==typeof e?e:a,o[1]=l;for(var d=2;d<i;d++)o[d]=t[d];return r.a.createElement.apply(null,o)}return r.a.createElement.apply(null,t)}b.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/876793d7.733c03fc.js b/876793d7.b50877b8.js
similarity index 98%
rename from 876793d7.733c03fc.js
rename to 876793d7.b50877b8.js
index b8e3b54..b710b57 100644
--- a/876793d7.733c03fc.js
+++ b/876793d7.b50877b8.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[73],{140:function(e,n,t){"use strict";t.r(n),t.d(n,"frontMatter",(function(){return a})),t.d(n,"metadata",(function(){return l})),t.d(n,"toc",(function(){return s})),t.d(n,"default",(function(){return m}));var r=t(3),i=t(7),o=(t(0),t(209)),a={title:"Environments Implementation"},l={unversionedId:"designDocs/environments-implementation",id:"version-0.6.0/designDocs/environments-implementation",isDocsHomePage:!1,title:"Environments Implementation",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/designDocs/environments-implementation.md",slug:"/designDocs/environments-implementation",permalink:"/docs/designDocs/environments-implementation",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/designDocs/environments-implementation.md",version:"0.6.0",sidebar:"docs",previous:{title:"Implementation Notes",permalink:"/docs/designDocs/implementation-notes"},next:{title:"Experiment Implementation",permalink:"/docs/designDocs/experiment-implementation"}},s=[{value:"Overview",id:"overview",children:[]},{value:"Environment API definition",id:"environment-api-definition",children:[]},{value:"VM-image and Docker-image",id:"vm-image-and-docker-image",children:[]},{value:"Kernel Implementation",id:"kernel-implementation",children:[]},{value:"Storage of Environment",id:"storage-of-environment",children:[]},{value:"How to implement to make user can easily use Submarine environments?",id:"how-to-implement-to-make-user-can-easily-use-submarine-environments",children:[]}],c={toc:s};function m(e){var n=e.components,t=Object(i.a)(e,["components"]);return Object(o.b)("wrapper",Object(r.a)({},c,t,{components:n,mdxType:"MDXLayout"}),Object(o.b)("h2",{id:"overview"},"Overview"),Object(o.b)("p",null,"Environment profiles (or environment for short) defines a set of libraries and when Docker is being used, a Docker image in order to run an experiment or a notebook. "),Object(o.b)("p",null,"Docker and/or VM-image (such as, VirtualBox/VMWare images, Amazon Machine Images - AMI, Or custom image of Azure VM) defines the base layer of the environment. Please note that VM-image is different from VM instance type,"),Object(o.b)("p",null,"On top of that, users can define a set of libraries (such as Python/R) to install, we call it kernel."),Object(o.b)("p",null,Object(o.b)("strong",{parentName:"p"},"Example of Environment")),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"\n     +-------------------+\n     |+-----------------+|\n     || Python=3.7      ||\n     || Tensorflow=2.0  ||\n     |+---Exp Dependency+|\n     |+-----------------+|\n     ||OS=Ubuntu16.04   ||\n     ||CUDA=10.2        ||\n     ||GPU_Driver=375.. ||\n     |+---Base Library--+|\n     +-------------------+\n")),Object(o.b)("p",null,"As you can see, There're base libraries, such as what OS, CUDA version, GPU driver, etc. They can be achieved by specifying a VM-image / Docker image."),Object(o.b)("p",null,"On top of that, user can bring their dependencies, such as different version of Python, Tensorflow, Pandas, etc."),Object(o.b)("p",null,Object(o.b)("strong",{parentName:"p"},"How users use environment?")),Object(o.b)("p",null,"Users can save different environment configs which can be also shared across the platform. Environment profiles can be used to run a notebook (e.g. by choosing different kernel from Jupyter), or an experiment. Predefined experiment library includes what environment to use so users don't have to choose which environment to use."),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"\n        +-------------------+\n        |+-----------------+|       +------------+\n        || Python=3.7      ||       |User1       |\n        || Tensorflow=2.0  ||       +------------+\n        |+---Kernel -------+|       +------------+\n        |+-----------------+|<----+ |User2       |\n        ||OS=Ubuntu16.04   ||     + +------------+\n        ||CUDA=10.2        ||     | +------------+\n        ||GPU_Driver=375.. ||     | |User3       |\n        |+---Base Library--+|     | +------------+\n        +-----Default-Env---+     |\n                                  |\n                                  |\n        +-------------------+     |\n        |+-----------------+|     |\n        || Python=3.3      ||     |\n        || Tensorflow=2.0  ||     |\n        |+---kernel--------+|     |\n        |+-----------------+|     |\n        ||OS=Ubuntu16.04   ||     |\n        ||CUDA=10.3        ||<----+\n        ||GPU_Driver=375.. ||\n        |+---Base Library--+|\n        +-----My-Customized-+\n")),Object(o.b)("p",null,'There\'re two environments in the above graph, "Default-Env" and "My-Customized", which can have different combinations of libraries for different experiments/notebooks. Users can choose different environments for different experiments as they want.'),Object(o.b)("p",null,"Environments can be added/listed/deleted/selected through CLI/SDK/UI."),Object(o.b)("h1",{id:"implementation"},"Implementation"),Object(o.b)("h2",{id:"environment-api-definition"},"Environment API definition"),Object(o.b)("p",null,"Let look at what object definition looks like to define an environment, API of environment looks like:"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},'    name: "my_submarine_env",\n    vm-image: "...",\n    docker-image: "...", \n    kernel: \n       <object of kernel>\n    description: "this is the most common env used by team ABC"\n')),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},Object(o.b)("inlineCode",{parentName:"li"},"vm-image")," is optional if we don't need to launch new VM (like running a training job in a cloud-remote machine). "),Object(o.b)("li",{parentName:"ul"},Object(o.b)("inlineCode",{parentName:"li"},"docker-image")," is required"),Object(o.b)("li",{parentName:"ul"},Object(o.b)("inlineCode",{parentName:"li"},"kernel")," could be optional if kernel is already included by vm-image or docker-image."),Object(o.b)("li",{parentName:"ul"},Object(o.b)("inlineCode",{parentName:"li"},"name")," of the environment should be unique in the system, so user can reference it when create a new experiment/notebook.")),Object(o.b)("h2",{id:"vm-image-and-docker-image"},"VM-image and Docker-image"),Object(o.b)("p",null,'Docker-image and VM image should be prepared by system admin / SREs, it is hard for Data-Scientists to write an error-proof Dockerfile, and push/manage Docker images. This is one of the reason we hide Docker-image inside "environment", we will encourage users to customize their kernels if needed, but don\'t have to touch Dockerfile and build/push/manage new Docker images.'),Object(o.b)("p",null,"As a project, we will document what's the best practice and example of Dockerfiles. "),Object(o.b)("p",null,"Dockerfile should include proper ",Object(o.b)("inlineCode",{parentName:"p"},"ENTRYPOINT")," definition which pointed to our default script, so no matter it is notebook, or an experiment, we will setup kernel (see below) and other environment variables properly."),Object(o.b)("h2",{id:"kernel-implementation"},"Kernel Implementation"),Object(o.b)("p",null,"After investigating different alternatives (such as pipenv, venv, etc.), we decided to use Conda environment which nicely replaces Python virtual env, pip, and can also support other languages. More details can be found at: ",Object(o.b)("a",{parentName:"p",href:"https://medium.com/@krishnaregmi/pipenv-vs-virtualenv-vs-conda-environment-3dde3f6869ed"},"https://medium.com/@krishnaregmi/pipenv-vs-virtualenv-vs-conda-environment-3dde3f6869ed")),Object(o.b)("p",null,"When once Conda, users can easily add, remove dependency of a Conda environment. User can also easily export environment to yaml file."),Object(o.b)("p",null,"The yaml file of Conda environment by using ",Object(o.b)("inlineCode",{parentName:"p"},"conda env export")," looks like: "),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"name: base\nchannels:\n  - defaults\ndependencies:\n  - _ipyw_jlab_nb_ext_conf=0.1.0=py37_0\n  - alabaster=0.7.12=py37_0\n  - anaconda=2020.02=py37_0\n  - anaconda-client=1.7.2=py37_0\n  - anaconda-navigator=1.9.12=py37_0\n  - anaconda-project=0.8.4=py_0\n  - applaunchservices=0.2.1=py_0\n")),Object(o.b)("p",null,"Including Conda kernel, the environment object may look like: "),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},'name: "my_submarine_env",\n    vm-image: "...",\n    docker-image: "...", \n    kernel: \n      name: team_default_python_3.7\n      channels:\n        - defaults\n      dependencies:\n        - _ipyw_jlab_nb_ext_conf=0.1.0=py37_0\n        - alabaster=0.7.12=py37_0\n        - anaconda=2020.02=py37_0\n        - anaconda-client=1.7.2=py37_0\n        - anaconda-navigator=1.9.12=py37_0\n')),Object(o.b)("p",null,"When launch a new experiment / notebook session using the ",Object(o.b)("inlineCode",{parentName:"p"},"my_submarine_env"),", submarine server will use defined Docker image, and Conda kernel to launch of container. "),Object(o.b)("h2",{id:"storage-of-environment"},"Storage of Environment"),Object(o.b)("p",null,"Environment of Submarine is just a simple text file, so it will be persisted in Submarine metastore, which is ideally a Database. "),Object(o.b)("p",null,"Docker image is stored inside a regular Docker registry, which will be handled outside of the system. "),Object(o.b)("p",null,"Conda dependencies are stored in Conda channel (where referenced packages are stored), which will be handled/setuped separately. (Popular conda channels are ",Object(o.b)("inlineCode",{parentName:"p"},"default")," and ",Object(o.b)("inlineCode",{parentName:"p"},"conda-forge"),")"),Object(o.b)("p",null,"For more detailed discussion about storage-related implementations, please refer to ",Object(o.b)("a",{parentName:"p",href:"./storage-implementation"},"storage-implementation"),"."),Object(o.b)("h2",{id:"how-to-implement-to-make-user-can-easily-use-submarine-environments"},"How to implement to make user can easily use Submarine environments?"),Object(o.b)("p",null,"We like simplicities, and we don't want to leak complexities of implementations to the users. To make it happen, we have to do some works to hide complexities. "),Object(o.b)("p",null,"There're two primary uses of environments: experiments and notebook, for both of them, users should not do works like explictily call ",Object(o.b)("inlineCode",{parentName:"p"},"conda active $env_name")," to active environments. To make it happen, what we can do is to include following parts in Dockerfile "),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},'FROM ubuntu:18.04\n\n<Include whatever base-libraries like CUDA, etc.>\n\n<Make sure conda (with our preferred version) is installed>\n<Make sure Jupyter (with our preferred version) is installed>\n\n# This is just a sample of Dockerfile, users can do more customizations if needed\nENTRYPOINT ["/submarine-bootstrap.sh"]\n')),Object(o.b)("p",null,"When Submarine Server (this is implementation detail of Submarine Server, user will not see it at all) launch an experiment, or notebook, it will invoke following ",Object(o.b)("inlineCode",{parentName:"p"},"docker run")," command (or any other equvilant like using K8s spec): "),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"docker run <submarine_docker_image> --kernel <kernel_name> -- .... python train.py --batch_size 5 (and other parameters)\n")),Object(o.b)("p",null,"Similarily, to launch a notebook: "),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"docker run <submarine_docker_image> --kernel <kernel_name> -- .... jupyter\n")),Object(o.b)("p",null,"The ",Object(o.b)("inlineCode",{parentName:"p"},"submarine-bootstrap.sh")," is part of Submarine repo, and will handle ",Object(o.b)("inlineCode",{parentName:"p"},"--kernel")," argument which will invoke  ",Object(o.b)("inlineCode",{parentName:"p"},"conda active $kernel_name")," before anything else. (Like run the training job)."))}m.isMDXComponent=!0},209:function(e,n,t){"use strict";t.d(n,"a",(function(){return p})),t.d(n,"b",(function(){return u}));var r=t(0),i=t.n(r);function o(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function a(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 l(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?a(Object(t),!0).forEach((function(n){o(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):a(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function s(e,n){if(null==e)return{};var t,r,i=function(e,n){if(null==e)return{};var t,r,i={},o=Object.keys(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var c=i.a.createContext({}),m=function(e){var n=i.a.useContext(c),t=n;return e&&(t="function"==typeof e?e(n):l(l({},n),e)),t},p=function(e){var n=m(e.components);return i.a.createElement(c.Provider,{value:n},e.children)},d={inlineCode:"code",wrapper:function(e){var n=e.children;return i.a.createElement(i.a.Fragment,{},n)}},b=i.a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,o=e.originalType,a=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),p=m(t),b=r,u=p["".concat(a,".").concat(b)]||p[b]||d[b]||o;return t?i.a.createElement(u,l(l({ref:n},c),{},{components:t})):i.a.createElement(u,l({ref:n},c))}));function u(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var o=t.length,a=new Array(o);a[0]=b;var l={};for(var s in n)hasOwnProperty.call(n,s)&&(l[s]=n[s]);l.originalType=e,l.mdxType="string"==typeof e?e:r,a[1]=l;for(var c=2;c<o;c++)a[c]=t[c];return i.a.createElement.apply(null,a)}return i.a.createElement.apply(null,t)}b.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[63],{130:function(e,n,t){"use strict";t.r(n),t.d(n,"frontMatter",(function(){return a})),t.d(n,"metadata",(function(){return l})),t.d(n,"toc",(function(){return s})),t.d(n,"default",(function(){return m}));var r=t(3),i=t(7),o=(t(0),t(194)),a={title:"Environments Implementation"},l={unversionedId:"designDocs/environments-implementation",id:"version-0.6.0/designDocs/environments-implementation",isDocsHomePage:!1,title:"Environments Implementation",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/designDocs/environments-implementation.md",slug:"/designDocs/environments-implementation",permalink:"/docs/designDocs/environments-implementation",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/designDocs/environments-implementation.md",version:"0.6.0",sidebar:"docs",previous:{title:"Implementation Notes",permalink:"/docs/designDocs/implementation-notes"},next:{title:"Experiment Implementation",permalink:"/docs/designDocs/experiment-implementation"}},s=[{value:"Overview",id:"overview",children:[]},{value:"Environment API definition",id:"environment-api-definition",children:[]},{value:"VM-image and Docker-image",id:"vm-image-and-docker-image",children:[]},{value:"Kernel Implementation",id:"kernel-implementation",children:[]},{value:"Storage of Environment",id:"storage-of-environment",children:[]},{value:"How to implement to make user can easily use Submarine environments?",id:"how-to-implement-to-make-user-can-easily-use-submarine-environments",children:[]}],c={toc:s};function m(e){var n=e.components,t=Object(i.a)(e,["components"]);return Object(o.b)("wrapper",Object(r.a)({},c,t,{components:n,mdxType:"MDXLayout"}),Object(o.b)("h2",{id:"overview"},"Overview"),Object(o.b)("p",null,"Environment profiles (or environment for short) defines a set of libraries and when Docker is being used, a Docker image in order to run an experiment or a notebook. "),Object(o.b)("p",null,"Docker and/or VM-image (such as, VirtualBox/VMWare images, Amazon Machine Images - AMI, Or custom image of Azure VM) defines the base layer of the environment. Please note that VM-image is different from VM instance type,"),Object(o.b)("p",null,"On top of that, users can define a set of libraries (such as Python/R) to install, we call it kernel."),Object(o.b)("p",null,Object(o.b)("strong",{parentName:"p"},"Example of Environment")),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"\n     +-------------------+\n     |+-----------------+|\n     || Python=3.7      ||\n     || Tensorflow=2.0  ||\n     |+---Exp Dependency+|\n     |+-----------------+|\n     ||OS=Ubuntu16.04   ||\n     ||CUDA=10.2        ||\n     ||GPU_Driver=375.. ||\n     |+---Base Library--+|\n     +-------------------+\n")),Object(o.b)("p",null,"As you can see, There're base libraries, such as what OS, CUDA version, GPU driver, etc. They can be achieved by specifying a VM-image / Docker image."),Object(o.b)("p",null,"On top of that, user can bring their dependencies, such as different version of Python, Tensorflow, Pandas, etc."),Object(o.b)("p",null,Object(o.b)("strong",{parentName:"p"},"How users use environment?")),Object(o.b)("p",null,"Users can save different environment configs which can be also shared across the platform. Environment profiles can be used to run a notebook (e.g. by choosing different kernel from Jupyter), or an experiment. Predefined experiment library includes what environment to use so users don't have to choose which environment to use."),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"\n        +-------------------+\n        |+-----------------+|       +------------+\n        || Python=3.7      ||       |User1       |\n        || Tensorflow=2.0  ||       +------------+\n        |+---Kernel -------+|       +------------+\n        |+-----------------+|<----+ |User2       |\n        ||OS=Ubuntu16.04   ||     + +------------+\n        ||CUDA=10.2        ||     | +------------+\n        ||GPU_Driver=375.. ||     | |User3       |\n        |+---Base Library--+|     | +------------+\n        +-----Default-Env---+     |\n                                  |\n                                  |\n        +-------------------+     |\n        |+-----------------+|     |\n        || Python=3.3      ||     |\n        || Tensorflow=2.0  ||     |\n        |+---kernel--------+|     |\n        |+-----------------+|     |\n        ||OS=Ubuntu16.04   ||     |\n        ||CUDA=10.3        ||<----+\n        ||GPU_Driver=375.. ||\n        |+---Base Library--+|\n        +-----My-Customized-+\n")),Object(o.b)("p",null,'There\'re two environments in the above graph, "Default-Env" and "My-Customized", which can have different combinations of libraries for different experiments/notebooks. Users can choose different environments for different experiments as they want.'),Object(o.b)("p",null,"Environments can be added/listed/deleted/selected through CLI/SDK/UI."),Object(o.b)("h1",{id:"implementation"},"Implementation"),Object(o.b)("h2",{id:"environment-api-definition"},"Environment API definition"),Object(o.b)("p",null,"Let look at what object definition looks like to define an environment, API of environment looks like:"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},'    name: "my_submarine_env",\n    vm-image: "...",\n    docker-image: "...", \n    kernel: \n       <object of kernel>\n    description: "this is the most common env used by team ABC"\n')),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},Object(o.b)("inlineCode",{parentName:"li"},"vm-image")," is optional if we don't need to launch new VM (like running a training job in a cloud-remote machine). "),Object(o.b)("li",{parentName:"ul"},Object(o.b)("inlineCode",{parentName:"li"},"docker-image")," is required"),Object(o.b)("li",{parentName:"ul"},Object(o.b)("inlineCode",{parentName:"li"},"kernel")," could be optional if kernel is already included by vm-image or docker-image."),Object(o.b)("li",{parentName:"ul"},Object(o.b)("inlineCode",{parentName:"li"},"name")," of the environment should be unique in the system, so user can reference it when create a new experiment/notebook.")),Object(o.b)("h2",{id:"vm-image-and-docker-image"},"VM-image and Docker-image"),Object(o.b)("p",null,'Docker-image and VM image should be prepared by system admin / SREs, it is hard for Data-Scientists to write an error-proof Dockerfile, and push/manage Docker images. This is one of the reason we hide Docker-image inside "environment", we will encourage users to customize their kernels if needed, but don\'t have to touch Dockerfile and build/push/manage new Docker images.'),Object(o.b)("p",null,"As a project, we will document what's the best practice and example of Dockerfiles. "),Object(o.b)("p",null,"Dockerfile should include proper ",Object(o.b)("inlineCode",{parentName:"p"},"ENTRYPOINT")," definition which pointed to our default script, so no matter it is notebook, or an experiment, we will setup kernel (see below) and other environment variables properly."),Object(o.b)("h2",{id:"kernel-implementation"},"Kernel Implementation"),Object(o.b)("p",null,"After investigating different alternatives (such as pipenv, venv, etc.), we decided to use Conda environment which nicely replaces Python virtual env, pip, and can also support other languages. More details can be found at: ",Object(o.b)("a",{parentName:"p",href:"https://medium.com/@krishnaregmi/pipenv-vs-virtualenv-vs-conda-environment-3dde3f6869ed"},"https://medium.com/@krishnaregmi/pipenv-vs-virtualenv-vs-conda-environment-3dde3f6869ed")),Object(o.b)("p",null,"When once Conda, users can easily add, remove dependency of a Conda environment. User can also easily export environment to yaml file."),Object(o.b)("p",null,"The yaml file of Conda environment by using ",Object(o.b)("inlineCode",{parentName:"p"},"conda env export")," looks like: "),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"name: base\nchannels:\n  - defaults\ndependencies:\n  - _ipyw_jlab_nb_ext_conf=0.1.0=py37_0\n  - alabaster=0.7.12=py37_0\n  - anaconda=2020.02=py37_0\n  - anaconda-client=1.7.2=py37_0\n  - anaconda-navigator=1.9.12=py37_0\n  - anaconda-project=0.8.4=py_0\n  - applaunchservices=0.2.1=py_0\n")),Object(o.b)("p",null,"Including Conda kernel, the environment object may look like: "),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},'name: "my_submarine_env",\n    vm-image: "...",\n    docker-image: "...", \n    kernel: \n      name: team_default_python_3.7\n      channels:\n        - defaults\n      dependencies:\n        - _ipyw_jlab_nb_ext_conf=0.1.0=py37_0\n        - alabaster=0.7.12=py37_0\n        - anaconda=2020.02=py37_0\n        - anaconda-client=1.7.2=py37_0\n        - anaconda-navigator=1.9.12=py37_0\n')),Object(o.b)("p",null,"When launch a new experiment / notebook session using the ",Object(o.b)("inlineCode",{parentName:"p"},"my_submarine_env"),", submarine server will use defined Docker image, and Conda kernel to launch of container. "),Object(o.b)("h2",{id:"storage-of-environment"},"Storage of Environment"),Object(o.b)("p",null,"Environment of Submarine is just a simple text file, so it will be persisted in Submarine metastore, which is ideally a Database. "),Object(o.b)("p",null,"Docker image is stored inside a regular Docker registry, which will be handled outside of the system. "),Object(o.b)("p",null,"Conda dependencies are stored in Conda channel (where referenced packages are stored), which will be handled/setuped separately. (Popular conda channels are ",Object(o.b)("inlineCode",{parentName:"p"},"default")," and ",Object(o.b)("inlineCode",{parentName:"p"},"conda-forge"),")"),Object(o.b)("p",null,"For more detailed discussion about storage-related implementations, please refer to ",Object(o.b)("a",{parentName:"p",href:"./storage-implementation"},"storage-implementation"),"."),Object(o.b)("h2",{id:"how-to-implement-to-make-user-can-easily-use-submarine-environments"},"How to implement to make user can easily use Submarine environments?"),Object(o.b)("p",null,"We like simplicities, and we don't want to leak complexities of implementations to the users. To make it happen, we have to do some works to hide complexities. "),Object(o.b)("p",null,"There're two primary uses of environments: experiments and notebook, for both of them, users should not do works like explictily call ",Object(o.b)("inlineCode",{parentName:"p"},"conda active $env_name")," to active environments. To make it happen, what we can do is to include following parts in Dockerfile "),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},'FROM ubuntu:18.04\n\n<Include whatever base-libraries like CUDA, etc.>\n\n<Make sure conda (with our preferred version) is installed>\n<Make sure Jupyter (with our preferred version) is installed>\n\n# This is just a sample of Dockerfile, users can do more customizations if needed\nENTRYPOINT ["/submarine-bootstrap.sh"]\n')),Object(o.b)("p",null,"When Submarine Server (this is implementation detail of Submarine Server, user will not see it at all) launch an experiment, or notebook, it will invoke following ",Object(o.b)("inlineCode",{parentName:"p"},"docker run")," command (or any other equvilant like using K8s spec): "),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"docker run <submarine_docker_image> --kernel <kernel_name> -- .... python train.py --batch_size 5 (and other parameters)\n")),Object(o.b)("p",null,"Similarily, to launch a notebook: "),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"docker run <submarine_docker_image> --kernel <kernel_name> -- .... jupyter\n")),Object(o.b)("p",null,"The ",Object(o.b)("inlineCode",{parentName:"p"},"submarine-bootstrap.sh")," is part of Submarine repo, and will handle ",Object(o.b)("inlineCode",{parentName:"p"},"--kernel")," argument which will invoke  ",Object(o.b)("inlineCode",{parentName:"p"},"conda active $kernel_name")," before anything else. (Like run the training job)."))}m.isMDXComponent=!0},194:function(e,n,t){"use strict";t.d(n,"a",(function(){return p})),t.d(n,"b",(function(){return u}));var r=t(0),i=t.n(r);function o(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function a(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 l(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?a(Object(t),!0).forEach((function(n){o(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):a(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function s(e,n){if(null==e)return{};var t,r,i=function(e,n){if(null==e)return{};var t,r,i={},o=Object.keys(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var c=i.a.createContext({}),m=function(e){var n=i.a.useContext(c),t=n;return e&&(t="function"==typeof e?e(n):l(l({},n),e)),t},p=function(e){var n=m(e.components);return i.a.createElement(c.Provider,{value:n},e.children)},d={inlineCode:"code",wrapper:function(e){var n=e.children;return i.a.createElement(i.a.Fragment,{},n)}},b=i.a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,o=e.originalType,a=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),p=m(t),b=r,u=p["".concat(a,".").concat(b)]||p[b]||d[b]||o;return t?i.a.createElement(u,l(l({ref:n},c),{},{components:t})):i.a.createElement(u,l({ref:n},c))}));function u(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var o=t.length,a=new Array(o);a[0]=b;var l={};for(var s in n)hasOwnProperty.call(n,s)&&(l[s]=n[s]);l.originalType=e,l.mdxType="string"==typeof e?e:r,a[1]=l;for(var c=2;c<o;c++)a[c]=t[c];return i.a.createElement.apply(null,a)}return i.a.createElement.apply(null,t)}b.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/897bc7ae.6ef86c17.js b/897bc7ae.a705558a.js
similarity index 98%
rename from 897bc7ae.6ef86c17.js
rename to 897bc7ae.a705558a.js
index c9b6a37..d77e80a 100644
--- a/897bc7ae.6ef86c17.js
+++ b/897bc7ae.a705558a.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[74],{141:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return l})),n.d(t,"metadata",(function(){return o})),n.d(t,"toc",(function(){return b})),n.d(t,"default",(function(){return s}));var a=n(3),r=n(7),i=(n(0),n(209)),l={title:"Development Guide"},o={unversionedId:"devDocs/Development",id:"devDocs/Development",isDocsHomePage:!1,title:"Development Guide",description:"\x3c!--",source:"@site/docs/devDocs/Development.md",slug:"/devDocs/Development",permalink:"/docs/next/devDocs/Development",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/devDocs/Development.md",version:"current",sidebar:"docs",previous:{title:"How to Build Submarine",permalink:"/docs/next/devDocs/BuildFromCode"},next:{title:"How to Run Integration K8s Test",permalink:"/docs/next/devDocs/IntegrationTestK8s"}},b=[{value:"Video",id:"video",children:[]},{value:"Develop server",id:"develop-server",children:[{value:"Prerequisites",id:"prerequisites",children:[]},{value:"Setting up checkstyle in IDE",id:"setting-up-checkstyle-in-ide",children:[]},{value:"Testing",id:"testing",children:[]},{value:"Build from source",id:"build-from-source",children:[]}]},{value:"Develop workbench",id:"develop-workbench",children:[]},{value:"Develop database",id:"develop-database",children:[]},{value:"Develop operator",id:"develop-operator",children:[]},{value:"Develop Submarine Website",id:"develop-submarine-website",children:[{value:"Add a new page",id:"add-a-new-page",children:[]},{value:"Installation",id:"installation",children:[]},{value:"Build",id:"build",children:[]},{value:"Local Development",id:"local-development",children:[]}]}],c={toc:b};function s(e){var t=e.components,n=Object(r.a)(e,["components"]);return Object(i.b)("wrapper",Object(a.a)({},c,n,{components:t,mdxType:"MDXLayout"}),Object(i.b)("h1",{id:"project-overview"},"Project Overview"),Object(i.b)("p",null,"The document ",Object(i.b)("a",{parentName:"p",href:"/docs/next/"},"Submarine Local Deployment")," shows how to deploy the Submarine service to your Kubernetes cluster. The Submarine service consists mainly of nine components, and you can check them with the following command:"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"kubectl get pods -n ${your_namespace}\n")),Object(i.b)("p",null,"A brief introduction about these components:"),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},Object(i.b)("strong",{parentName:"li"},"tf-operator"),": Enable users to run TensorFlow jobs distributedly"),Object(i.b)("li",{parentName:"ol"},Object(i.b)("strong",{parentName:"li"},"pytorch-operator"),": Enable users to run PyTorch jobs distributedly"),Object(i.b)("li",{parentName:"ol"},Object(i.b)("strong",{parentName:"li"},"notebook-controller"),": Jupyter Notebook controller"),Object(i.b)("li",{parentName:"ol"},Object(i.b)("strong",{parentName:"li"},"submarine-traefik"),": Kubernetes Ingress controller"),Object(i.b)("li",{parentName:"ol"},Object(i.b)("strong",{parentName:"li"},"submarine-database"),": A MySQL database to store metadata"),Object(i.b)("li",{parentName:"ol"},Object(i.b)("strong",{parentName:"li"},"submarine-minio"),": An object store for machine learning artifacts"),Object(i.b)("li",{parentName:"ol"},Object(i.b)("strong",{parentName:"li"},"submarine-mlflow"),": A platform for model management"),Object(i.b)("li",{parentName:"ol"},Object(i.b)("strong",{parentName:"li"},"submarine-tensorboard"),": A visualization tool for distributed training experiments"),Object(i.b)("li",{parentName:"ol"},Object(i.b)("strong",{parentName:"li"},"submarine-server"),": Handle API requests, and submit distributed training experiments to Kubernetes.")),Object(i.b)("h1",{id:"submarine-development"},"Submarine Development"),Object(i.b)("h2",{id:"video"},"Video"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"From this ",Object(i.b)("a",{parentName:"li",href:"https://youtu.be/32Na2k6Alv4"},"Video"),", you will know how to deal with the configuration of Submarine and be able to contribute to it via Github.")),Object(i.b)("h2",{id:"develop-server"},"Develop server"),Object(i.b)("h3",{id:"prerequisites"},"Prerequisites"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"JDK 1.8"),Object(i.b)("li",{parentName:"ul"},"Maven 3.3 or later ( < 3.8.1 )"),Object(i.b)("li",{parentName:"ul"},"Docker")),Object(i.b)("h3",{id:"setting-up-checkstyle-in-ide"},"Setting up checkstyle in IDE"),Object(i.b)("p",null,"Checkstyle plugin may help to detect violations directly from the IDE."),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},"Install Checkstyle+IDEA plugin from ",Object(i.b)("inlineCode",{parentName:"li"},"Preference")," -> ",Object(i.b)("inlineCode",{parentName:"li"},"Plugins")),Object(i.b)("li",{parentName:"ol"},"Open ",Object(i.b)("inlineCode",{parentName:"li"},"Preference")," -> ",Object(i.b)("inlineCode",{parentName:"li"},"Tools")," -> ",Object(i.b)("inlineCode",{parentName:"li"},"Checkstyle"),Object(i.b)("ol",{parentName:"li"},Object(i.b)("li",{parentName:"ol"},"Set Checkstyle version:",Object(i.b)("ul",{parentName:"li"},Object(i.b)("li",{parentName:"ul"},"Checkstyle version: 8.0"))),Object(i.b)("li",{parentName:"ol"},"Add (+) a new Configuration File",Object(i.b)("ul",{parentName:"li"},Object(i.b)("li",{parentName:"ul"},"Description: Submarine"),Object(i.b)("li",{parentName:"ul"},"Use a local checkstyle ",Object(i.b)("inlineCode",{parentName:"li"},"${SUBMARINE_HOME}/dev-support/maven-config/checkstyle.xml")))))),Object(i.b)("li",{parentName:"ol"},"Open the Checkstyle Tool Window, select the Submarine rule and execute the check")),Object(i.b)("h3",{id:"testing"},"Testing"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"Unit Test"),Object(i.b)("p",{parentName:"li"},"For each class, there is a corresponding testClass. For example, ",Object(i.b)("inlineCode",{parentName:"p"},"SubmarineServerTest")," is used for testing ",Object(i.b)("inlineCode",{parentName:"p"},"SubmarineServer"),". Whenever you add a funtion in classes, you must write a unit test to test it.")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"Integration Test: ",Object(i.b)("a",{parentName:"p",href:"/docs/next/devDocs/IntegrationTestK8s"},"IntegrationTestK8s.md")))),Object(i.b)("h3",{id:"build-from-source"},"Build from source"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"Before building"),Object(i.b)("ol",{parentName:"li"},Object(i.b)("li",{parentName:"ol"},"We assume the developer use ",Object(i.b)("strong",{parentName:"li"},"minikube")," as a local kubernetes cluster."),Object(i.b)("li",{parentName:"ol"},"Make sure you have ",Object(i.b)("strong",{parentName:"li"},"installed the submarine helm-chart")," in the cluster.")))),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Package the Submarine server into a new jar file"),Object(i.b)("pre",{parentName:"li"},Object(i.b)("code",{parentName:"pre",className:"language-bash"},"mvn install -DskipTests\n"))),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Build the new server docker image in minikube"),Object(i.b)("pre",{parentName:"li"},Object(i.b)("code",{parentName:"pre",className:"language-bash"},"# switch to minikube docker daemon to build image directly in minikube\neval $(minikube docker-env)\n\n# run docker build\n./dev-support/docker-images/submarine/build.sh\n\n# exit minikube docker daemon\neval $(minikube docker-env -u)\n"))),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Delete the server deployment and the operator will create a new one using the new image"),Object(i.b)("pre",{parentName:"li"},Object(i.b)("code",{parentName:"pre",className:"language-bash"},"kubectl delete deployment submarine-server\n")))),Object(i.b)("h2",{id:"develop-workbench"},"Develop workbench"),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Deploy the Submarine"),Object(i.b)("p",{parentName:"li"},"Follow ",Object(i.b)("a",{parentName:"p",href:"/docs/next/"},"Getting Started/Submarine Local Deployment"),", and make sure you can connect to ",Object(i.b)("inlineCode",{parentName:"p"},"http://localhost:32080")," in the browser.")),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Install the dependencies"),Object(i.b)("pre",{parentName:"li"},Object(i.b)("code",{parentName:"pre",className:"language-bash"},"cd submarine-workbench/workbench-web\nnpm install\n"))),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Run the workbench based on proxy server"),Object(i.b)("pre",{parentName:"li"},Object(i.b)("code",{parentName:"pre",className:"language-bash"},"npm run start\n")),Object(i.b)("ol",{parentName:"li"},Object(i.b)("li",{parentName:"ol"},"The request sent to ",Object(i.b)("inlineCode",{parentName:"li"},"http://localhost:4200")," will be redirected to ",Object(i.b)("inlineCode",{parentName:"li"},"http://localhost:32080"),"."),Object(i.b)("li",{parentName:"ol"},"Open ",Object(i.b)("inlineCode",{parentName:"li"},"http://localhost:4200")," in browser to see the real-time change of workbench."))),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Frontend E2E test: ",Object(i.b)("a",{parentName:"p",href:"/docs/next/devDocs/IntegrationTestE2E"},"IntegrationTestE2E.md")))),Object(i.b)("h2",{id:"develop-database"},"Develop database"),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Build the docker image"),Object(i.b)("pre",{parentName:"li"},Object(i.b)("code",{parentName:"pre",className:"language-bash"},"# switch to minikube docker daemon to build image directly in minikube\neval $(minikube docker-env)\n\n# run docker build\n./dev-support/docker-images/database/build.sh\n\n# exit minikube docker daemon\neval $(minikube docker-env -u)\n"))),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Deploy new pods in the cluster"),Object(i.b)("pre",{parentName:"li"},Object(i.b)("code",{parentName:"pre",className:"language-bash"},"helm upgrade --set submarine.database.dev=true submarine ./helm-charts/submarine\n")))),Object(i.b)("h2",{id:"develop-operator"},"Develop operator"),Object(i.b)("p",null,"For details, please check out the ",Object(i.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/blob/master/submarine-cloud-v2/README.md"},"README")," and ",Object(i.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/blob/master/submarine-cloud-v2/docs/developer-guide.md"},"Developer Guide")," on GitHub."),Object(i.b)("h2",{id:"develop-submarine-website"},"Develop Submarine Website"),Object(i.b)("p",null,"Submarine website is built using ",Object(i.b)("a",{parentName:"p",href:"https://v2.docusaurus.io/"},"Docusaurus 2"),", a modern static website generator."),Object(i.b)("p",null,"We store all the website content in markdown format in the ",Object(i.b)("inlineCode",{parentName:"p"},"submarine/website/docs"),". When committing a new patch to the ",Object(i.b)("inlineCode",{parentName:"p"},"submarine")," repo, Docusaurus will help us generate the ",Object(i.b)("inlineCode",{parentName:"p"},"html")," and ",Object(i.b)("inlineCode",{parentName:"p"},"javascript")," files and push them to  ",Object(i.b)("a",{parentName:"p",href:"https://github.com/apache/submarine-site/tree/asf-site"},"https://github.com/apache/submarine-site/tree/asf-site"),"."),Object(i.b)("p",null,"To update the website, click \u201cEdit this page\u201d on the website."),Object(i.b)("p",null,Object(i.b)("img",{parentName:"p",src:"https://lh4.googleusercontent.com/gYcKpxbsGAKv2giTRqkxOehPGnuvnhE31WjsAsYhFmACIZF3Wh2ipar7mZ7F_KRwecM-L1J8YJAgNigJsJUjqc-5IXeO2XGxCIcYpP9CdSc3YByuUkjT_Bezby2HHtkBLyE1ZY_F",alt:null})),Object(i.b)("h3",{id:"add-a-new-page"},"Add a new page"),Object(i.b)("p",null,"If you want to add a new page to the website, make sure to add the file path to ",Object(i.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/blob/master/website/sidebars.js"},"sidebars.js"),"."),Object(i.b)("h3",{id:"installation"},"Installation"),Object(i.b)("p",null,"We use the yarn package manager to install all dependencies for the website"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-console"},"yarn install\n")),Object(i.b)("h3",{id:"build"},"Build"),Object(i.b)("p",null,"Make sure you can successfully build the website before creating a pull request."),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-console"},"yarn build\n")),Object(i.b)("h3",{id:"local-development"},"Local Development"),Object(i.b)("p",null,"This command starts a local development server and open up a browser window. Most changes are reflected live without having to restart the server."),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-console"},"yarn start\n")))}s.isMDXComponent=!0},209:function(e,t,n){"use strict";n.d(t,"a",(function(){return p})),n.d(t,"b",(function(){return d}));var a=n(0),r=n.n(a);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?l(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):l(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function b(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},i=Object.keys(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var c=r.a.createContext({}),s=function(e){var t=r.a.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},p=function(e){var t=s(e.components);return r.a.createElement(c.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},m=r.a.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,l=e.parentName,c=b(e,["components","mdxType","originalType","parentName"]),p=s(n),m=a,d=p["".concat(l,".").concat(m)]||p[m]||u[m]||i;return n?r.a.createElement(d,o(o({ref:t},c),{},{components:n})):r.a.createElement(d,o({ref:t},c))}));function d(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,l=new Array(i);l[0]=m;var o={};for(var b in t)hasOwnProperty.call(t,b)&&(o[b]=t[b]);o.originalType=e,o.mdxType="string"==typeof e?e:a,l[1]=o;for(var c=2;c<i;c++)l[c]=n[c];return r.a.createElement.apply(null,l)}return r.a.createElement.apply(null,n)}m.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[64],{131:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return l})),n.d(t,"metadata",(function(){return o})),n.d(t,"toc",(function(){return b})),n.d(t,"default",(function(){return s}));var a=n(3),r=n(7),i=(n(0),n(194)),l={title:"Development Guide"},o={unversionedId:"devDocs/Development",id:"devDocs/Development",isDocsHomePage:!1,title:"Development Guide",description:"\x3c!--",source:"@site/docs/devDocs/Development.md",slug:"/devDocs/Development",permalink:"/docs/next/devDocs/Development",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/devDocs/Development.md",version:"current",sidebar:"docs",previous:{title:"How to Build Submarine",permalink:"/docs/next/devDocs/BuildFromCode"},next:{title:"How to Run Integration K8s Test",permalink:"/docs/next/devDocs/IntegrationTestK8s"}},b=[{value:"Video",id:"video",children:[]},{value:"Develop server",id:"develop-server",children:[{value:"Prerequisites",id:"prerequisites",children:[]},{value:"Setting up checkstyle in IDE",id:"setting-up-checkstyle-in-ide",children:[]},{value:"Testing",id:"testing",children:[]},{value:"Build from source",id:"build-from-source",children:[]}]},{value:"Develop workbench",id:"develop-workbench",children:[]},{value:"Develop database",id:"develop-database",children:[]},{value:"Develop operator",id:"develop-operator",children:[]},{value:"Develop Submarine Website",id:"develop-submarine-website",children:[{value:"Add a new page",id:"add-a-new-page",children:[]},{value:"Installation",id:"installation",children:[]},{value:"Build",id:"build",children:[]},{value:"Local Development",id:"local-development",children:[]}]}],c={toc:b};function s(e){var t=e.components,n=Object(r.a)(e,["components"]);return Object(i.b)("wrapper",Object(a.a)({},c,n,{components:t,mdxType:"MDXLayout"}),Object(i.b)("h1",{id:"project-overview"},"Project Overview"),Object(i.b)("p",null,"The document ",Object(i.b)("a",{parentName:"p",href:"/docs/next/"},"Submarine Local Deployment")," shows how to deploy the Submarine service to your Kubernetes cluster. The Submarine service consists mainly of nine components, and you can check them with the following command:"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"kubectl get pods -n ${your_namespace}\n")),Object(i.b)("p",null,"A brief introduction about these components:"),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},Object(i.b)("strong",{parentName:"li"},"tf-operator"),": Enable users to run TensorFlow jobs distributedly"),Object(i.b)("li",{parentName:"ol"},Object(i.b)("strong",{parentName:"li"},"pytorch-operator"),": Enable users to run PyTorch jobs distributedly"),Object(i.b)("li",{parentName:"ol"},Object(i.b)("strong",{parentName:"li"},"notebook-controller"),": Jupyter Notebook controller"),Object(i.b)("li",{parentName:"ol"},Object(i.b)("strong",{parentName:"li"},"submarine-traefik"),": Kubernetes Ingress controller"),Object(i.b)("li",{parentName:"ol"},Object(i.b)("strong",{parentName:"li"},"submarine-database"),": A MySQL database to store metadata"),Object(i.b)("li",{parentName:"ol"},Object(i.b)("strong",{parentName:"li"},"submarine-minio"),": An object store for machine learning artifacts"),Object(i.b)("li",{parentName:"ol"},Object(i.b)("strong",{parentName:"li"},"submarine-mlflow"),": A platform for model management"),Object(i.b)("li",{parentName:"ol"},Object(i.b)("strong",{parentName:"li"},"submarine-tensorboard"),": A visualization tool for distributed training experiments"),Object(i.b)("li",{parentName:"ol"},Object(i.b)("strong",{parentName:"li"},"submarine-server"),": Handle API requests, and submit distributed training experiments to Kubernetes.")),Object(i.b)("h1",{id:"submarine-development"},"Submarine Development"),Object(i.b)("h2",{id:"video"},"Video"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"From this ",Object(i.b)("a",{parentName:"li",href:"https://youtu.be/32Na2k6Alv4"},"Video"),", you will know how to deal with the configuration of Submarine and be able to contribute to it via Github.")),Object(i.b)("h2",{id:"develop-server"},"Develop server"),Object(i.b)("h3",{id:"prerequisites"},"Prerequisites"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"JDK 1.8"),Object(i.b)("li",{parentName:"ul"},"Maven 3.3 or later ( < 3.8.1 )"),Object(i.b)("li",{parentName:"ul"},"Docker")),Object(i.b)("h3",{id:"setting-up-checkstyle-in-ide"},"Setting up checkstyle in IDE"),Object(i.b)("p",null,"Checkstyle plugin may help to detect violations directly from the IDE."),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},"Install Checkstyle+IDEA plugin from ",Object(i.b)("inlineCode",{parentName:"li"},"Preference")," -> ",Object(i.b)("inlineCode",{parentName:"li"},"Plugins")),Object(i.b)("li",{parentName:"ol"},"Open ",Object(i.b)("inlineCode",{parentName:"li"},"Preference")," -> ",Object(i.b)("inlineCode",{parentName:"li"},"Tools")," -> ",Object(i.b)("inlineCode",{parentName:"li"},"Checkstyle"),Object(i.b)("ol",{parentName:"li"},Object(i.b)("li",{parentName:"ol"},"Set Checkstyle version:",Object(i.b)("ul",{parentName:"li"},Object(i.b)("li",{parentName:"ul"},"Checkstyle version: 8.0"))),Object(i.b)("li",{parentName:"ol"},"Add (+) a new Configuration File",Object(i.b)("ul",{parentName:"li"},Object(i.b)("li",{parentName:"ul"},"Description: Submarine"),Object(i.b)("li",{parentName:"ul"},"Use a local checkstyle ",Object(i.b)("inlineCode",{parentName:"li"},"${SUBMARINE_HOME}/dev-support/maven-config/checkstyle.xml")))))),Object(i.b)("li",{parentName:"ol"},"Open the Checkstyle Tool Window, select the Submarine rule and execute the check")),Object(i.b)("h3",{id:"testing"},"Testing"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"Unit Test"),Object(i.b)("p",{parentName:"li"},"For each class, there is a corresponding testClass. For example, ",Object(i.b)("inlineCode",{parentName:"p"},"SubmarineServerTest")," is used for testing ",Object(i.b)("inlineCode",{parentName:"p"},"SubmarineServer"),". Whenever you add a funtion in classes, you must write a unit test to test it.")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"Integration Test: ",Object(i.b)("a",{parentName:"p",href:"/docs/next/devDocs/IntegrationTestK8s"},"IntegrationTestK8s.md")))),Object(i.b)("h3",{id:"build-from-source"},"Build from source"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"Before building"),Object(i.b)("ol",{parentName:"li"},Object(i.b)("li",{parentName:"ol"},"We assume the developer use ",Object(i.b)("strong",{parentName:"li"},"minikube")," as a local kubernetes cluster."),Object(i.b)("li",{parentName:"ol"},"Make sure you have ",Object(i.b)("strong",{parentName:"li"},"installed the submarine helm-chart")," in the cluster.")))),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Package the Submarine server into a new jar file"),Object(i.b)("pre",{parentName:"li"},Object(i.b)("code",{parentName:"pre",className:"language-bash"},"mvn install -DskipTests\n"))),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Build the new server docker image in minikube"),Object(i.b)("pre",{parentName:"li"},Object(i.b)("code",{parentName:"pre",className:"language-bash"},"# switch to minikube docker daemon to build image directly in minikube\neval $(minikube docker-env)\n\n# run docker build\n./dev-support/docker-images/submarine/build.sh\n\n# exit minikube docker daemon\neval $(minikube docker-env -u)\n"))),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Delete the server deployment and the operator will create a new one using the new image"),Object(i.b)("pre",{parentName:"li"},Object(i.b)("code",{parentName:"pre",className:"language-bash"},"kubectl delete deployment submarine-server\n")))),Object(i.b)("h2",{id:"develop-workbench"},"Develop workbench"),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Deploy the Submarine"),Object(i.b)("p",{parentName:"li"},"Follow ",Object(i.b)("a",{parentName:"p",href:"/docs/next/"},"Getting Started/Submarine Local Deployment"),", and make sure you can connect to ",Object(i.b)("inlineCode",{parentName:"p"},"http://localhost:32080")," in the browser.")),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Install the dependencies"),Object(i.b)("pre",{parentName:"li"},Object(i.b)("code",{parentName:"pre",className:"language-bash"},"cd submarine-workbench/workbench-web\nnpm install\n"))),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Run the workbench based on proxy server"),Object(i.b)("pre",{parentName:"li"},Object(i.b)("code",{parentName:"pre",className:"language-bash"},"npm run start\n")),Object(i.b)("ol",{parentName:"li"},Object(i.b)("li",{parentName:"ol"},"The request sent to ",Object(i.b)("inlineCode",{parentName:"li"},"http://localhost:4200")," will be redirected to ",Object(i.b)("inlineCode",{parentName:"li"},"http://localhost:32080"),"."),Object(i.b)("li",{parentName:"ol"},"Open ",Object(i.b)("inlineCode",{parentName:"li"},"http://localhost:4200")," in browser to see the real-time change of workbench."))),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Frontend E2E test: ",Object(i.b)("a",{parentName:"p",href:"/docs/next/devDocs/IntegrationTestE2E"},"IntegrationTestE2E.md")))),Object(i.b)("h2",{id:"develop-database"},"Develop database"),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Build the docker image"),Object(i.b)("pre",{parentName:"li"},Object(i.b)("code",{parentName:"pre",className:"language-bash"},"# switch to minikube docker daemon to build image directly in minikube\neval $(minikube docker-env)\n\n# run docker build\n./dev-support/docker-images/database/build.sh\n\n# exit minikube docker daemon\neval $(minikube docker-env -u)\n"))),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Deploy new pods in the cluster"),Object(i.b)("pre",{parentName:"li"},Object(i.b)("code",{parentName:"pre",className:"language-bash"},"helm upgrade --set submarine.database.dev=true submarine ./helm-charts/submarine\n")))),Object(i.b)("h2",{id:"develop-operator"},"Develop operator"),Object(i.b)("p",null,"For details, please check out the ",Object(i.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/blob/master/submarine-cloud-v2/README.md"},"README")," and ",Object(i.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/blob/master/submarine-cloud-v2/docs/developer-guide.md"},"Developer Guide")," on GitHub."),Object(i.b)("h2",{id:"develop-submarine-website"},"Develop Submarine Website"),Object(i.b)("p",null,"Submarine website is built using ",Object(i.b)("a",{parentName:"p",href:"https://v2.docusaurus.io/"},"Docusaurus 2"),", a modern static website generator."),Object(i.b)("p",null,"We store all the website content in markdown format in the ",Object(i.b)("inlineCode",{parentName:"p"},"submarine/website/docs"),". When committing a new patch to the ",Object(i.b)("inlineCode",{parentName:"p"},"submarine")," repo, Docusaurus will help us generate the ",Object(i.b)("inlineCode",{parentName:"p"},"html")," and ",Object(i.b)("inlineCode",{parentName:"p"},"javascript")," files and push them to  ",Object(i.b)("a",{parentName:"p",href:"https://github.com/apache/submarine-site/tree/asf-site"},"https://github.com/apache/submarine-site/tree/asf-site"),"."),Object(i.b)("p",null,"To update the website, click \u201cEdit this page\u201d on the website."),Object(i.b)("p",null,Object(i.b)("img",{parentName:"p",src:"https://lh4.googleusercontent.com/gYcKpxbsGAKv2giTRqkxOehPGnuvnhE31WjsAsYhFmACIZF3Wh2ipar7mZ7F_KRwecM-L1J8YJAgNigJsJUjqc-5IXeO2XGxCIcYpP9CdSc3YByuUkjT_Bezby2HHtkBLyE1ZY_F",alt:null})),Object(i.b)("h3",{id:"add-a-new-page"},"Add a new page"),Object(i.b)("p",null,"If you want to add a new page to the website, make sure to add the file path to ",Object(i.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/blob/master/website/sidebars.js"},"sidebars.js"),"."),Object(i.b)("h3",{id:"installation"},"Installation"),Object(i.b)("p",null,"We use the yarn package manager to install all dependencies for the website"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-console"},"yarn install\n")),Object(i.b)("h3",{id:"build"},"Build"),Object(i.b)("p",null,"Make sure you can successfully build the website before creating a pull request."),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-console"},"yarn build\n")),Object(i.b)("h3",{id:"local-development"},"Local Development"),Object(i.b)("p",null,"This command starts a local development server and open up a browser window. Most changes are reflected live without having to restart the server."),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-console"},"yarn start\n")))}s.isMDXComponent=!0},194:function(e,t,n){"use strict";n.d(t,"a",(function(){return p})),n.d(t,"b",(function(){return d}));var a=n(0),r=n.n(a);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?l(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):l(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function b(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},i=Object.keys(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var c=r.a.createContext({}),s=function(e){var t=r.a.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},p=function(e){var t=s(e.components);return r.a.createElement(c.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},m=r.a.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,l=e.parentName,c=b(e,["components","mdxType","originalType","parentName"]),p=s(n),m=a,d=p["".concat(l,".").concat(m)]||p[m]||u[m]||i;return n?r.a.createElement(d,o(o({ref:t},c),{},{components:n})):r.a.createElement(d,o({ref:t},c))}));function d(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,l=new Array(i);l[0]=m;var o={};for(var b in t)hasOwnProperty.call(t,b)&&(o[b]=t[b]);o.originalType=e,o.mdxType="string"==typeof e?e:a,l[1]=o;for(var c=2;c<i;c++)l[c]=n[c];return r.a.createElement.apply(null,l)}return r.a.createElement.apply(null,n)}m.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/89982a88.82f56b69.js b/89982a88.dc2654e5.js
similarity index 97%
rename from 89982a88.82f56b69.js
rename to 89982a88.dc2654e5.js
index d1953a5..3ad7036 100644
--- a/89982a88.82f56b69.js
+++ b/89982a88.dc2654e5.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[75],{142:function(e,n,t){"use strict";t.r(n),t.d(n,"frontMatter",(function(){return o})),t.d(n,"metadata",(function(){return l})),t.d(n,"toc",(function(){return i})),t.d(n,"default",(function(){return p}));var r=t(3),a=t(7),s=(t(0),t(209)),o={title:"Serve REST API"},l={unversionedId:"api/model-version",id:"api/model-version",isDocsHomePage:!1,title:"Serve REST API",description:"\x3c!--",source:"@site/docs/api/model-version.md",slug:"/api/model-version",permalink:"/docs/next/api/model-version",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/api/model-version.md",version:"current"},i=[{value:"List model versions under a registered model",id:"list-model-versions-under-a-registered-model",children:[]},{value:"Get a model version",id:"get-a-model-version",children:[]},{value:"Patch a model version",id:"patch-a-model-version",children:[]},{value:"Delete a model version",id:"delete-a-model-version",children:[]},{value:"Create a model version tag",id:"create-a-model-version-tag",children:[]},{value:"Delete a model version tag",id:"delete-a-model-version-tag",children:[]}],c={toc:i};function p(e){var n=e.components,t=Object(a.a)(e,["components"]);return Object(s.b)("wrapper",Object(r.a)({},c,t,{components:n,mdxType:"MDXLayout"}),Object(s.b)("blockquote",null,Object(s.b)("p",{parentName:"blockquote"},"Note: The Model Version API is in the alpha stage which is subjected to incompatible changes in future releases.")),Object(s.b)("h3",{id:"list-model-versions-under-a-registered-model"},"List model versions under a registered model"),Object(s.b)("p",null,Object(s.b)("inlineCode",{parentName:"p"},"GET /api/v1/model-version/{name}")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Request:")),Object(s.b)("pre",null,Object(s.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/model-version/register\n")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Response:")),Object(s.b)("pre",null,Object(s.b)("code",{parentName:"pre",className:"language-json"},'{\n   "attributes" : {},\n   "code" : 200,\n   "message" : "List all model version instances",\n   "result" : [\n      {\n         "creationTime" : "2021-12-12 02:27:05",\n         "currentStage" : "None",\n         "dataset" : null,\n         "description" : null,\n         "experimentId" : "experiment-1639276018590-0001",\n         "lastUpdatedTime" : "2021-12-12 02:27:05",\n         "modelType" : "tensorflow",\n         "name" : "register",\n         "source" : "s3://submarine/experiment-1639276018590-0001/example/1",\n         "tags" : [],\n         "userId" : "",\n         "version" : 1\n      },\n      {\n         "creationTime" : "2021-12-12 02:27:05",\n         "currentStage" : "None",\n         "dataset" : null,\n         "description" : null,\n         "experimentId" : "experiment-1639276018590-0001",\n         "lastUpdatedTime" : "2021-12-12 02:27:05",\n         "modelType" : "tensorflow",\n         "name" : "register",\n         "source" : "s3://submarine/experiment-1639276018590-0001/example/2",\n         "tags" : [],\n         "userId" : "",\n         "version" : 2\n      },\n      {\n         "creationTime" : "2021-12-12 02:27:05",\n         "currentStage" : "None",\n         "dataset" : null,\n         "description" : null,\n         "experimentId" : "experiment-1639276018590-0001",\n         "lastUpdatedTime" : "2021-12-12 02:27:05",\n         "modelType" : "tensorflow",\n         "name" : "register",\n         "source" : "s3://submarine/experiment-1639276018590-0001/example1/1",\n         "tags" : [],\n         "userId" : "",\n         "version" : 3\n      },\n      {\n         "creationTime" : "2021-12-12 02:27:06",\n         "currentStage" : "None",\n         "dataset" : null,\n         "description" : null,\n         "experimentId" : "experiment-1639276018590-0001",\n         "lastUpdatedTime" : "2021-12-12 02:27:06",\n         "modelType" : "tensorflow",\n         "name" : "register",\n         "source" : "s3://submarine/experiment-1639276018590-0001/example2/1",\n         "tags" : [],\n         "userId" : "",\n         "version" : 4\n      },\n   ],\n   "status" : "OK",\n   "success" : true\n}\n')),Object(s.b)("h3",{id:"get-a-model-version"},"Get a model version"),Object(s.b)("p",null,Object(s.b)("inlineCode",{parentName:"p"},"GET /api/v1/model-version/{name}/{version}")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Request:")),Object(s.b)("pre",null,Object(s.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/model-version/register/1\n")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Response:")),Object(s.b)("pre",null,Object(s.b)("code",{parentName:"pre",className:"language-json"},'{\n   "attributes" : {},\n   "code" : 200,\n   "message" : "Get the model version instance",\n   "result" : {\n      "creationTime" : "2021-12-12 02:27:05",\n      "currentStage" : "None",\n      "dataset" : null,\n      "description" : null,\n      "experimentId" : "experiment-1639276018590-0001",\n      "lastUpdatedTime" : "2021-12-12 02:27:05",\n      "modelType" : "tensorflow",\n      "name" : "register",\n      "source" : "s3://submarine/experiment-1639276018590-0001/example/1",\n      "tags" : [],\n      "userId" : "",\n      "version" : 1\n   },\n   "status" : "OK",\n   "success" : true\n}\n')),Object(s.b)("h3",{id:"patch-a-model-version"},"Patch a model version"),Object(s.b)("p",null,Object(s.b)("inlineCode",{parentName:"p"},"PATCH /api/v1/model-version")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Request:")),Object(s.b)("pre",null,Object(s.b)("code",{parentName:"pre",className:"language-sh"},'curl -X PATCH -H "Content-Type: application/json" -d \'\n{\n    "name": "register",\n    "version": 1,\n    "description": "new_description",\n    "currentStage": "production",\n    "dataset": "new_dataset"\n}\' http://127.0.0.1:32080/api/v1/model-version\n')),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Response:")),Object(s.b)("pre",null,Object(s.b)("code",{parentName:"pre",className:"language-json"},'{\n   "attributes" : {},\n   "code" : 200,\n   "message" : "Update the model version instance",\n   "result" : null,\n   "status" : "OK",\n   "success" : true\n}\n')),Object(s.b)("h2",{id:"delete-a-model-version"},"Delete a model version"),Object(s.b)("p",null,Object(s.b)("inlineCode",{parentName:"p"},"DELETE /api/v1/model-version/{name}/{version}")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Request")),Object(s.b)("pre",null,Object(s.b)("code",{parentName:"pre",className:"language-sh"},"curl -X DELETE http://127.0.0.1:32080/api/v1/model-version/register/1\n")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Response:")),Object(s.b)("pre",null,Object(s.b)("code",{parentName:"pre",className:"language-json"},'{\n   "attributes" : {},\n   "code" : 200,\n   "message" : "Delete the model version instance",\n   "result" : null,\n   "status" : "OK",\n   "success" : true\n}\n')),Object(s.b)("h2",{id:"create-a-model-version-tag"},"Create a model version tag"),Object(s.b)("p",null,Object(s.b)("inlineCode",{parentName:"p"},"POST /api/v1/model-version/tag?name={name}&version={version}&tag={tag}")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Request")),Object(s.b)("pre",null,Object(s.b)("code",{parentName:"pre",className:"language-sh"},"curl -X POST http://127.0.0.1:32080/api/v1/model-version/tag?name=register&version=2&tag=789\n")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Response:")),Object(s.b)("pre",null,Object(s.b)("code",{parentName:"pre",className:"language-json"},'{\n   "attributes" : {},\n   "code" : 200,\n   "message" : "Create a model version tag instance",\n   "result" : null,\n   "status" : "OK",\n   "success" : true\n}\n')),Object(s.b)("h2",{id:"delete-a-model-version-tag"},"Delete a model version tag"),Object(s.b)("p",null,Object(s.b)("inlineCode",{parentName:"p"},"DELETE /api/v1/model-version/tag?name={name}&version={version}&tag={tag}")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Request")),Object(s.b)("pre",null,Object(s.b)("code",{parentName:"pre",className:"language-sh"},"curl -X DELETE http://127.0.0.1:32080/api/v1/model-version/tag?name=register&version=2&tag=789\n")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Response:")),Object(s.b)("pre",null,Object(s.b)("code",{parentName:"pre",className:"language-json"},'{\n    "status":"OK",\n    "code":200,\n    "success":true,\n    "message":"Delete a registered model tag instance",\n    "result":null,\n    "attributes":{}\n}\n')))}p.isMDXComponent=!0},209:function(e,n,t){"use strict";t.d(n,"a",(function(){return m})),t.d(n,"b",(function(){return b}));var r=t(0),a=t.n(r);function s(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function o(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 l(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?o(Object(t),!0).forEach((function(n){s(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):o(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function i(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 c=a.a.createContext({}),p=function(e){var n=a.a.useContext(c),t=n;return e&&(t="function"==typeof e?e(n):l(l({},n),e)),t},m=function(e){var n=p(e.components);return a.a.createElement(c.Provider,{value:n},e.children)},u={inlineCode:"code",wrapper:function(e){var n=e.children;return a.a.createElement(a.a.Fragment,{},n)}},d=a.a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,s=e.originalType,o=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),m=p(t),d=r,b=m["".concat(o,".").concat(d)]||m[d]||u[d]||s;return t?a.a.createElement(b,l(l({ref:n},c),{},{components:t})):a.a.createElement(b,l({ref:n},c))}));function b(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var s=t.length,o=new Array(s);o[0]=d;var l={};for(var i in n)hasOwnProperty.call(n,i)&&(l[i]=n[i]);l.originalType=e,l.mdxType="string"==typeof e?e:r,o[1]=l;for(var c=2;c<s;c++)o[c]=t[c];return a.a.createElement.apply(null,o)}return a.a.createElement.apply(null,t)}d.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[65],{132:function(e,n,t){"use strict";t.r(n),t.d(n,"frontMatter",(function(){return o})),t.d(n,"metadata",(function(){return l})),t.d(n,"toc",(function(){return i})),t.d(n,"default",(function(){return p}));var r=t(3),a=t(7),s=(t(0),t(194)),o={title:"Serve REST API"},l={unversionedId:"api/model-version",id:"api/model-version",isDocsHomePage:!1,title:"Serve REST API",description:"\x3c!--",source:"@site/docs/api/model-version.md",slug:"/api/model-version",permalink:"/docs/next/api/model-version",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/api/model-version.md",version:"current"},i=[{value:"List model versions under a registered model",id:"list-model-versions-under-a-registered-model",children:[]},{value:"Get a model version",id:"get-a-model-version",children:[]},{value:"Patch a model version",id:"patch-a-model-version",children:[]},{value:"Delete a model version",id:"delete-a-model-version",children:[]},{value:"Create a model version tag",id:"create-a-model-version-tag",children:[]},{value:"Delete a model version tag",id:"delete-a-model-version-tag",children:[]}],c={toc:i};function p(e){var n=e.components,t=Object(a.a)(e,["components"]);return Object(s.b)("wrapper",Object(r.a)({},c,t,{components:n,mdxType:"MDXLayout"}),Object(s.b)("blockquote",null,Object(s.b)("p",{parentName:"blockquote"},"Note: The Model Version API is in the alpha stage which is subjected to incompatible changes in future releases.")),Object(s.b)("h3",{id:"list-model-versions-under-a-registered-model"},"List model versions under a registered model"),Object(s.b)("p",null,Object(s.b)("inlineCode",{parentName:"p"},"GET /api/v1/model-version/{name}")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Request:")),Object(s.b)("pre",null,Object(s.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/model-version/register\n")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Response:")),Object(s.b)("pre",null,Object(s.b)("code",{parentName:"pre",className:"language-json"},'{\n   "attributes" : {},\n   "code" : 200,\n   "message" : "List all model version instances",\n   "result" : [\n      {\n         "creationTime" : "2021-12-12 02:27:05",\n         "currentStage" : "None",\n         "dataset" : null,\n         "description" : null,\n         "experimentId" : "experiment-1639276018590-0001",\n         "lastUpdatedTime" : "2021-12-12 02:27:05",\n         "modelType" : "tensorflow",\n         "name" : "register",\n         "source" : "s3://submarine/experiment-1639276018590-0001/example/1",\n         "tags" : [],\n         "userId" : "",\n         "version" : 1\n      },\n      {\n         "creationTime" : "2021-12-12 02:27:05",\n         "currentStage" : "None",\n         "dataset" : null,\n         "description" : null,\n         "experimentId" : "experiment-1639276018590-0001",\n         "lastUpdatedTime" : "2021-12-12 02:27:05",\n         "modelType" : "tensorflow",\n         "name" : "register",\n         "source" : "s3://submarine/experiment-1639276018590-0001/example/2",\n         "tags" : [],\n         "userId" : "",\n         "version" : 2\n      },\n      {\n         "creationTime" : "2021-12-12 02:27:05",\n         "currentStage" : "None",\n         "dataset" : null,\n         "description" : null,\n         "experimentId" : "experiment-1639276018590-0001",\n         "lastUpdatedTime" : "2021-12-12 02:27:05",\n         "modelType" : "tensorflow",\n         "name" : "register",\n         "source" : "s3://submarine/experiment-1639276018590-0001/example1/1",\n         "tags" : [],\n         "userId" : "",\n         "version" : 3\n      },\n      {\n         "creationTime" : "2021-12-12 02:27:06",\n         "currentStage" : "None",\n         "dataset" : null,\n         "description" : null,\n         "experimentId" : "experiment-1639276018590-0001",\n         "lastUpdatedTime" : "2021-12-12 02:27:06",\n         "modelType" : "tensorflow",\n         "name" : "register",\n         "source" : "s3://submarine/experiment-1639276018590-0001/example2/1",\n         "tags" : [],\n         "userId" : "",\n         "version" : 4\n      },\n   ],\n   "status" : "OK",\n   "success" : true\n}\n')),Object(s.b)("h3",{id:"get-a-model-version"},"Get a model version"),Object(s.b)("p",null,Object(s.b)("inlineCode",{parentName:"p"},"GET /api/v1/model-version/{name}/{version}")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Request:")),Object(s.b)("pre",null,Object(s.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/model-version/register/1\n")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Response:")),Object(s.b)("pre",null,Object(s.b)("code",{parentName:"pre",className:"language-json"},'{\n   "attributes" : {},\n   "code" : 200,\n   "message" : "Get the model version instance",\n   "result" : {\n      "creationTime" : "2021-12-12 02:27:05",\n      "currentStage" : "None",\n      "dataset" : null,\n      "description" : null,\n      "experimentId" : "experiment-1639276018590-0001",\n      "lastUpdatedTime" : "2021-12-12 02:27:05",\n      "modelType" : "tensorflow",\n      "name" : "register",\n      "source" : "s3://submarine/experiment-1639276018590-0001/example/1",\n      "tags" : [],\n      "userId" : "",\n      "version" : 1\n   },\n   "status" : "OK",\n   "success" : true\n}\n')),Object(s.b)("h3",{id:"patch-a-model-version"},"Patch a model version"),Object(s.b)("p",null,Object(s.b)("inlineCode",{parentName:"p"},"PATCH /api/v1/model-version")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Request:")),Object(s.b)("pre",null,Object(s.b)("code",{parentName:"pre",className:"language-sh"},'curl -X PATCH -H "Content-Type: application/json" -d \'\n{\n    "name": "register",\n    "version": 1,\n    "description": "new_description",\n    "currentStage": "production",\n    "dataset": "new_dataset"\n}\' http://127.0.0.1:32080/api/v1/model-version\n')),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Response:")),Object(s.b)("pre",null,Object(s.b)("code",{parentName:"pre",className:"language-json"},'{\n   "attributes" : {},\n   "code" : 200,\n   "message" : "Update the model version instance",\n   "result" : null,\n   "status" : "OK",\n   "success" : true\n}\n')),Object(s.b)("h2",{id:"delete-a-model-version"},"Delete a model version"),Object(s.b)("p",null,Object(s.b)("inlineCode",{parentName:"p"},"DELETE /api/v1/model-version/{name}/{version}")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Request")),Object(s.b)("pre",null,Object(s.b)("code",{parentName:"pre",className:"language-sh"},"curl -X DELETE http://127.0.0.1:32080/api/v1/model-version/register/1\n")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Response:")),Object(s.b)("pre",null,Object(s.b)("code",{parentName:"pre",className:"language-json"},'{\n   "attributes" : {},\n   "code" : 200,\n   "message" : "Delete the model version instance",\n   "result" : null,\n   "status" : "OK",\n   "success" : true\n}\n')),Object(s.b)("h2",{id:"create-a-model-version-tag"},"Create a model version tag"),Object(s.b)("p",null,Object(s.b)("inlineCode",{parentName:"p"},"POST /api/v1/model-version/tag?name={name}&version={version}&tag={tag}")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Request")),Object(s.b)("pre",null,Object(s.b)("code",{parentName:"pre",className:"language-sh"},"curl -X POST http://127.0.0.1:32080/api/v1/model-version/tag?name=register&version=2&tag=789\n")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Response:")),Object(s.b)("pre",null,Object(s.b)("code",{parentName:"pre",className:"language-json"},'{\n   "attributes" : {},\n   "code" : 200,\n   "message" : "Create a model version tag instance",\n   "result" : null,\n   "status" : "OK",\n   "success" : true\n}\n')),Object(s.b)("h2",{id:"delete-a-model-version-tag"},"Delete a model version tag"),Object(s.b)("p",null,Object(s.b)("inlineCode",{parentName:"p"},"DELETE /api/v1/model-version/tag?name={name}&version={version}&tag={tag}")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Request")),Object(s.b)("pre",null,Object(s.b)("code",{parentName:"pre",className:"language-sh"},"curl -X DELETE http://127.0.0.1:32080/api/v1/model-version/tag?name=register&version=2&tag=789\n")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Response:")),Object(s.b)("pre",null,Object(s.b)("code",{parentName:"pre",className:"language-json"},'{\n    "status":"OK",\n    "code":200,\n    "success":true,\n    "message":"Delete a registered model tag instance",\n    "result":null,\n    "attributes":{}\n}\n')))}p.isMDXComponent=!0},194:function(e,n,t){"use strict";t.d(n,"a",(function(){return m})),t.d(n,"b",(function(){return b}));var r=t(0),a=t.n(r);function s(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function o(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 l(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?o(Object(t),!0).forEach((function(n){s(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):o(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function i(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 c=a.a.createContext({}),p=function(e){var n=a.a.useContext(c),t=n;return e&&(t="function"==typeof e?e(n):l(l({},n),e)),t},m=function(e){var n=p(e.components);return a.a.createElement(c.Provider,{value:n},e.children)},u={inlineCode:"code",wrapper:function(e){var n=e.children;return a.a.createElement(a.a.Fragment,{},n)}},d=a.a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,s=e.originalType,o=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),m=p(t),d=r,b=m["".concat(o,".").concat(d)]||m[d]||u[d]||s;return t?a.a.createElement(b,l(l({ref:n},c),{},{components:t})):a.a.createElement(b,l({ref:n},c))}));function b(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var s=t.length,o=new Array(s);o[0]=d;var l={};for(var i in n)hasOwnProperty.call(n,i)&&(l[i]=n[i]);l.originalType=e,l.mdxType="string"==typeof e?e:r,o[1]=l;for(var c=2;c<s;c++)o[c]=t[c];return a.a.createElement.apply(null,o)}return a.a.createElement.apply(null,t)}d.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/8dc7f8a8.89c54f51.js b/8dc7f8a8.89c54f51.js
deleted file mode 100644
index 2d53690..0000000
--- a/8dc7f8a8.89c54f51.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[76],{143:function(e,n,t){"use strict";t.r(n),t.d(n,"frontMatter",(function(){return o})),t.d(n,"metadata",(function(){return l})),t.d(n,"toc",(function(){return c})),t.d(n,"default",(function(){return p}));var a=t(3),r=t(7),i=(t(0),t(209)),o={},l={unversionedId:"ecosystem/kaldi/WriteDockerfileKaldi",id:"ecosystem/kaldi/WriteDockerfileKaldi",isDocsHomePage:!1,title:"WriteDockerfileKaldi",description:"\x3c!--",source:"@site/docs/ecosystem/kaldi/WriteDockerfileKaldi.md",slug:"/ecosystem/kaldi/WriteDockerfileKaldi",permalink:"/docs/next/ecosystem/kaldi/WriteDockerfileKaldi",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/ecosystem/kaldi/WriteDockerfileKaldi.md",version:"current"},c=[{value:"Creating Docker Images for Running Kaldi on YARN",id:"creating-docker-images-for-running-kaldi-on-yarn",children:[{value:"How to create docker images to run Kaldi on YARN",id:"how-to-create-docker-images-to-run-kaldi-on-yarn",children:[]},{value:"Use examples to build your own Kaldi docker images",id:"use-examples-to-build-your-own-kaldi-docker-images",children:[]},{value:"Build Docker images",id:"build-docker-images",children:[]}]}],d={toc:c};function p(e){var n=e.components,t=Object(r.a)(e,["components"]);return Object(i.b)("wrapper",Object(a.a)({},d,t,{components:n,mdxType:"MDXLayout"}),Object(i.b)("h2",{id:"creating-docker-images-for-running-kaldi-on-yarn"},"Creating Docker Images for Running Kaldi on YARN"),Object(i.b)("h3",{id:"how-to-create-docker-images-to-run-kaldi-on-yarn"},"How to create docker images to run Kaldi on YARN"),Object(i.b)("p",null,"Dockerfile to run Kaldi on YARN need two part:"),Object(i.b)("p",null,Object(i.b)("strong",{parentName:"p"},"Base libraries which Kaldi depends on")),Object(i.b)("p",null,"1) OS base image, for example ",Object(i.b)("inlineCode",{parentName:"p"},"nvidia/cuda:10.0-cudnn7-devel-ubuntu18.04")),Object(i.b)("p",null,"2) Kaldi depended libraries and packages. For example ",Object(i.b)("inlineCode",{parentName:"p"},"python"),", ",Object(i.b)("inlineCode",{parentName:"p"},"g++"),", ",Object(i.b)("inlineCode",{parentName:"p"},"make"),". For GPU support, need ",Object(i.b)("inlineCode",{parentName:"p"},"cuda"),", ",Object(i.b)("inlineCode",{parentName:"p"},"cudnn"),", etc."),Object(i.b)("p",null,"3) Kaldi compile."),Object(i.b)("p",null,Object(i.b)("strong",{parentName:"p"},"Libraries to access HDFS")),Object(i.b)("p",null,"1) JDK"),Object(i.b)("p",null,"2) Hadoop"),Object(i.b)("p",null,"Here's an example of a base image (w/o GPU support) to install Kaldi:"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-shell"},"FROM nvidia/cuda:10.0-cudnn7-devel-ubuntu18.04\n\nRUN apt-get clean && \\\n    apt-get update && \\\n    apt-get install -y --no-install-recommends \\\n        sudo \\\n        openjdk-8-jdk \\\n        iputils-ping \\\n        g++ \\\n        make \\\n        automake \\\n        autoconf \\\n        bzip2 \\\n        unzip \\\n        wget \\\n        sox \\\n        libtool \\\n        git \\\n        subversion \\\n        python2.7 \\\n        python3 \\\n        zlib1g-dev \\\n        ca-certificates \\\n        patch \\\n        ffmpeg \\\n        vim && \\\n        rm -rf /var/lib/apt/lists/* && \\\n        ln -s /usr/bin/python2.7 /usr/bin/python\n\nRUN git clone --depth 1 https://github.com/kaldi-asr/kaldi.git /opt/kaldi && \\\n    cd /opt/kaldi && \\\n    cd /opt/kaldi/tools && \\\n    ./extras/install_mkl.sh && \\\n    make -j $(nproc) && \\\n    cd /opt/kaldi/src && \\\n    ./configure --shared --use-cuda && \\\n    make depend -j $(nproc) && \\\n    make -j $(nproc)\n")),Object(i.b)("p",null,"On top of above image, add files, install packages to access HDFS"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-shell"},'RUN apt-get update && apt-get install -y openjdk-8-jdk wget\n# Install hadoop\nENV HADOOP_VERSION="3.2.1"\nENV JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64\nRUN wget https://archive.apache.org/dist/hadoop/common/hadoop-${HADOOP_VERSION}/hadoop-${HADOOP_VERSION}.tar.gz && \\\n    tar zxf hadoop-${HADOOP_VERSION}.tar.gz && \\\n    ln -s hadoop-${HADOOP_VERSION} hadoop-current && \\\n    rm hadoop-${HADOOP_VERSION}.tar.gz\n')),Object(i.b)("p",null,"Build and push to your own docker registry: Use ",Object(i.b)("inlineCode",{parentName:"p"},"docker build ... ")," and ",Object(i.b)("inlineCode",{parentName:"p"},"docker push ...")," to finish this step."),Object(i.b)("h3",{id:"use-examples-to-build-your-own-kaldi-docker-images"},"Use examples to build your own Kaldi docker images"),Object(i.b)("p",null,"We provided following examples for you to build kaldi docker images."),Object(i.b)("p",null,"For latest Kaldi"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"*base/ubuntu-18.04/Dockerfile.gpu.kaldi_latest: Latest Kaldi that supports GPU, which is prebuilt to CUDA10, with models.")),Object(i.b)("h3",{id:"build-docker-images"},"Build Docker images"),Object(i.b)("h4",{id:"manually-build-docker-image"},"Manually build Docker image:"),Object(i.b)("p",null,"Under ",Object(i.b)("inlineCode",{parentName:"p"},"docker/")," directory,The CLUSTER_NAME can be modified in build-all.sh to have installation permissions, run ",Object(i.b)("inlineCode",{parentName:"p"},"build-all.sh")," to build Docker images. It will build following images:"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("inlineCode",{parentName:"li"},"kaldi-latest-gpu-base:0.0.1")," for base Docker image which includes Hadoop, Kaldi, GPU base libraries, which includes thchs30 model.")),Object(i.b)("h4",{id:"use-prebuilt-images"},"Use prebuilt images"),Object(i.b)("p",null,"(No liability)\nYou can also use prebuilt images for convenience in the docker hub:"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"hadoopsubmarine/kaldi-latest-gpu-base:0.0.1")))}p.isMDXComponent=!0},209:function(e,n,t){"use strict";t.d(n,"a",(function(){return u})),t.d(n,"b",(function(){return m}));var a=t(0),r=t.n(a);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function o(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function l(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?o(Object(t),!0).forEach((function(n){i(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):o(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function c(e,n){if(null==e)return{};var t,a,r=function(e,n){if(null==e)return{};var t,a,r={},i=Object.keys(e);for(a=0;a<i.length;a++)t=i[a],n.indexOf(t)>=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)t=i[a],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var d=r.a.createContext({}),p=function(e){var n=r.a.useContext(d),t=n;return e&&(t="function"==typeof e?e(n):l(l({},n),e)),t},u=function(e){var n=p(e.components);return r.a.createElement(d.Provider,{value:n},e.children)},s={inlineCode:"code",wrapper:function(e){var n=e.children;return r.a.createElement(r.a.Fragment,{},n)}},b=r.a.forwardRef((function(e,n){var t=e.components,a=e.mdxType,i=e.originalType,o=e.parentName,d=c(e,["components","mdxType","originalType","parentName"]),u=p(t),b=a,m=u["".concat(o,".").concat(b)]||u[b]||s[b]||i;return t?r.a.createElement(m,l(l({ref:n},d),{},{components:t})):r.a.createElement(m,l({ref:n},d))}));function m(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var i=t.length,o=new Array(i);o[0]=b;var l={};for(var c in n)hasOwnProperty.call(n,c)&&(l[c]=n[c]);l.originalType=e,l.mdxType="string"==typeof e?e:a,o[1]=l;for(var d=2;d<i;d++)o[d]=t[d];return r.a.createElement.apply(null,o)}return r.a.createElement.apply(null,t)}b.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/935f2afb.954d7b62.js b/935f2afb.954d7b62.js
deleted file mode 100644
index 3a6af12..0000000
--- a/935f2afb.954d7b62.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[77],{144:function(e){e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"master \ud83c\udfc3","isLast":false,"docsSidebars":{"docs":[{"collapsed":true,"type":"category","label":"Introduction","items":[]},{"collapsed":true,"type":"category","label":"Getting Started","items":[{"type":"link","label":"Quickstart","href":"/docs/next/gettingStarted/quickstart"},{"type":"link","label":"Jupyter Notebook","href":"/docs/next/gettingStarted/notebook"}]},{"collapsed":true,"type":"category","label":"User Docs","items":[{"collapsed":true,"type":"category","label":"API documentation","items":[{"type":"link","label":"Experiment REST API","href":"/docs/next/userDocs/api/experiment"},{"type":"link","label":"Environment REST API","href":"/docs/next/userDocs/api/environment"},{"type":"link","label":"Experiment Template REST API","href":"/docs/next/userDocs/api/experiment-template"},{"type":"link","label":"Notebook REST API","href":"/docs/next/userDocs/api/notebook"}]},{"collapsed":true,"type":"category","label":"Submarine SDK","items":[{"type":"link","label":"Experiment Client","href":"/docs/next/userDocs/submarine-sdk/experiment-client"},{"type":"link","label":"Submarine CLI","href":"/docs/next/userDocs/submarine-sdk/submarine-cli"},{"type":"link","label":"Tracking","href":"/docs/next/userDocs/submarine-sdk/tracking"}]},{"collapsed":true,"type":"category","label":"Others","items":[{"type":"link","label":"MLflow UI","href":"/docs/next/userDocs/others/mlflow"},{"type":"link","label":"Tensorboard","href":"/docs/next/userDocs/others/tensorboard"}]}]},{"collapsed":true,"type":"category","label":"Administrator Docs","items":[{"collapsed":true,"type":"category","label":"Submarine on Yarn","items":[{"type":"link","label":"Running Submarine on YARN (deprecated)","href":"/docs/next/adminDocs/yarn/README"}]}]},{"collapsed":true,"type":"category","label":"Developer Docs","items":[{"type":"link","label":"Project Architecture","href":"/docs/next/devDocs/README"},{"type":"link","label":"Dependencies for Submarine","href":"/docs/next/devDocs/Dependencies"},{"type":"link","label":"How to Build Submarine","href":"/docs/next/devDocs/BuildFromCode"},{"type":"link","label":"Development Guide","href":"/docs/next/devDocs/Development"},{"type":"link","label":"How to Run Integration K8s Test","href":"/docs/next/devDocs/IntegrationTestK8s"},{"type":"link","label":"How to Run Frontend Integration Test","href":"/docs/next/devDocs/IntegrationTestE2E"},{"type":"link","label":"How to Release","href":"/docs/next/devDocs/HowToRelease"},{"type":"link","label":"How to Verify","href":"/docs/next/devDocs/HowToVerify"}]},{"collapsed":true,"type":"category","label":"Community","items":[{"type":"link","label":"Apache Submarine Community","href":"/docs/next/community/README"},{"type":"link","label":"Bylaws","href":"/docs/next/community/Bylaws"},{"type":"link","label":"Guide for Apache Submarine Committers","href":"/docs/next/community/HowToCommit"},{"type":"link","label":"How To Contribute to Submarine","href":"/docs/next/community/contributing"},{"type":"link","label":"How to vote a Committer or PMC","href":"/docs/next/community/HowToVoteCommitterOrPMC"},{"type":"link","label":"How to become a Committer","href":"/docs/next/community/HowToBecomeCommitter"}]},{"collapsed":true,"type":"category","label":"Design Docs","items":[{"type":"link","label":"Architecture and Requirment","href":"/docs/next/designDocs/architecture-and-requirements"},{"type":"link","label":"Implementation Notes","href":"/docs/next/designDocs/implementation-notes"},{"type":"link","label":"Environments Implementation","href":"/docs/next/designDocs/environments-implementation"},{"type":"link","label":"Experiment Implementation","href":"/docs/next/designDocs/experiment-implementation"},{"type":"link","label":"Notebook Implementation","href":"/docs/next/designDocs/notebook-implementation"},{"type":"link","label":"Storage Implementation","href":"/docs/next/designDocs/storage-implementation"},{"collapsed":true,"type":"category","label":"Submarine Server","items":[{"type":"link","label":"Submarine Server Implementation","href":"/docs/next/designDocs/submarine-server/architecture"},{"type":"link","label":"Generic Experiment Spec","href":"/docs/next/designDocs/submarine-server/experimentSpec"}]},{"collapsed":true,"type":"category","label":"WIP Design Docs","items":[{"type":"link","label":"Submarine Launcher","href":"/docs/next/designDocs/wip-designs/submarine-launcher"},{"type":"link","label":"Cluster Server Design - High-Availability","href":"/docs/next/designDocs/wip-designs/submarine-clusterServer"},{"type":"link","label":"Security Implementation","href":"/docs/next/designDocs/wip-designs/security-implementation"}]}]},{"collapsed":true,"type":"category","label":"RoadMap","items":[]}],"api":[{"type":"link","label":"Environment REST API","href":"/docs/next/api/environment"},{"type":"link","label":"Experiment REST API","href":"/docs/next/api/experiment"},{"type":"link","label":"Experiment Template REST API","href":"/docs/next/api/experiment-template"},{"type":"link","label":"Notebook REST API","href":"/docs/next/api/notebook"},{"type":"link","label":"Serve REST API","href":"/docs/next/api/serve"}]},"permalinkToSidebar":{"/docs/next/adminDocs/yarn/README":"docs","/docs/next/api/environment":"api","/docs/next/api/experiment":"api","/docs/next/api/experiment-template":"api","/docs/next/api/notebook":"api","/docs/next/api/serve":"api","/docs/next/community/Bylaws":"docs","/docs/next/community/contributing":"docs","/docs/next/community/HowToBecomeCommitter":"docs","/docs/next/community/HowToCommit":"docs","/docs/next/community/HowToVoteCommitterOrPMC":"docs","/docs/next/community/README":"docs","/docs/next/designDocs/architecture-and-requirements":"docs","/docs/next/designDocs/environments-implementation":"docs","/docs/next/designDocs/experiment-implementation":"docs","/docs/next/designDocs/implementation-notes":"docs","/docs/next/designDocs/notebook-implementation":"docs","/docs/next/designDocs/storage-implementation":"docs","/docs/next/designDocs/submarine-server/architecture":"docs","/docs/next/designDocs/submarine-server/experimentSpec":"docs","/docs/next/designDocs/wip-designs/security-implementation":"docs","/docs/next/designDocs/wip-designs/submarine-clusterServer":"docs","/docs/next/designDocs/wip-designs/submarine-launcher":"docs","/docs/next/devDocs/BuildFromCode":"docs","/docs/next/devDocs/Dependencies":"docs","/docs/next/devDocs/Development":"docs","/docs/next/devDocs/HowToRelease":"docs","/docs/next/devDocs/HowToVerify":"docs","/docs/next/devDocs/IntegrationTestE2E":"docs","/docs/next/devDocs/IntegrationTestK8s":"docs","/docs/next/devDocs/README":"docs","/docs/next/gettingStarted/notebook":"docs","/docs/next/gettingStarted/quickstart":"docs","/docs/next/userDocs/api/environment":"docs","/docs/next/userDocs/api/experiment":"docs","/docs/next/userDocs/api/experiment-template":"docs","/docs/next/userDocs/api/notebook":"docs","/docs/next/userDocs/others/mlflow":"docs","/docs/next/userDocs/others/tensorboard":"docs","/docs/next/userDocs/submarine-sdk/experiment-client":"docs","/docs/next/userDocs/submarine-sdk/submarine-cli":"docs","/docs/next/userDocs/submarine-sdk/tracking":"docs"}}')}}]);
\ No newline at end of file
diff --git a/935f2afb.9989d552.js b/935f2afb.9989d552.js
new file mode 100644
index 0000000..9adb45c
--- /dev/null
+++ b/935f2afb.9989d552.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[66],{133:function(e){e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"master \ud83c\udfc3","isLast":false,"docsSidebars":{"docs":[{"collapsed":true,"type":"category","label":"Introduction","items":[]},{"collapsed":true,"type":"category","label":"Getting Started","items":[{"type":"link","label":"Quickstart","href":"/docs/next/gettingStarted/quickstart"},{"type":"link","label":"Jupyter Notebook","href":"/docs/next/gettingStarted/notebook"}]},{"collapsed":true,"type":"category","label":"User Docs","items":[{"collapsed":true,"type":"category","label":"API documentation","items":[{"type":"link","label":"Experiment REST API","href":"/docs/next/userDocs/api/experiment"},{"type":"link","label":"Environment REST API","href":"/docs/next/userDocs/api/environment"},{"type":"link","label":"Experiment Template REST API","href":"/docs/next/userDocs/api/experiment-template"},{"type":"link","label":"Notebook REST API","href":"/docs/next/userDocs/api/notebook"}]},{"collapsed":true,"type":"category","label":"Submarine SDK","items":[{"type":"link","label":"Experiment Client","href":"/docs/next/userDocs/submarine-sdk/experiment-client"},{"type":"link","label":"Submarine CLI","href":"/docs/next/userDocs/submarine-sdk/submarine-cli"},{"type":"link","label":"Tracking","href":"/docs/next/userDocs/submarine-sdk/tracking"}]},{"collapsed":true,"type":"category","label":"Others","items":[{"type":"link","label":"MLflow UI","href":"/docs/next/userDocs/others/mlflow"},{"type":"link","label":"Tensorboard","href":"/docs/next/userDocs/others/tensorboard"}]}]},{"collapsed":true,"type":"category","label":"Developer Docs","items":[{"type":"link","label":"Project Architecture","href":"/docs/next/devDocs/README"},{"type":"link","label":"Dependencies for Submarine","href":"/docs/next/devDocs/Dependencies"},{"type":"link","label":"How to Build Submarine","href":"/docs/next/devDocs/BuildFromCode"},{"type":"link","label":"Development Guide","href":"/docs/next/devDocs/Development"},{"type":"link","label":"How to Run Integration K8s Test","href":"/docs/next/devDocs/IntegrationTestK8s"},{"type":"link","label":"How to Run Frontend Integration Test","href":"/docs/next/devDocs/IntegrationTestE2E"},{"type":"link","label":"How to Release","href":"/docs/next/devDocs/HowToRelease"},{"type":"link","label":"How to Verify","href":"/docs/next/devDocs/HowToVerify"}]},{"collapsed":true,"type":"category","label":"Community","items":[{"type":"link","label":"Apache Submarine Community","href":"/docs/next/community/README"},{"type":"link","label":"Bylaws","href":"/docs/next/community/Bylaws"},{"type":"link","label":"Guide for Apache Submarine Committers","href":"/docs/next/community/HowToCommit"},{"type":"link","label":"How To Contribute to Submarine","href":"/docs/next/community/contributing"},{"type":"link","label":"How to vote a Committer or PMC","href":"/docs/next/community/HowToVoteCommitterOrPMC"},{"type":"link","label":"How to become a Committer","href":"/docs/next/community/HowToBecomeCommitter"}]},{"collapsed":true,"type":"category","label":"Design Docs","items":[{"type":"link","label":"Architecture and Requirment","href":"/docs/next/designDocs/architecture-and-requirements"},{"type":"link","label":"Implementation Notes","href":"/docs/next/designDocs/implementation-notes"},{"type":"link","label":"Environments Implementation","href":"/docs/next/designDocs/environments-implementation"},{"type":"link","label":"Experiment Implementation","href":"/docs/next/designDocs/experiment-implementation"},{"type":"link","label":"Notebook Implementation","href":"/docs/next/designDocs/notebook-implementation"},{"type":"link","label":"Storage Implementation","href":"/docs/next/designDocs/storage-implementation"},{"collapsed":true,"type":"category","label":"Submarine Server","items":[{"type":"link","label":"Submarine Server Implementation","href":"/docs/next/designDocs/submarine-server/architecture"},{"type":"link","label":"Generic Experiment Spec","href":"/docs/next/designDocs/submarine-server/experimentSpec"}]},{"collapsed":true,"type":"category","label":"WIP Design Docs","items":[{"type":"link","label":"Submarine Launcher","href":"/docs/next/designDocs/wip-designs/submarine-launcher"},{"type":"link","label":"Cluster Server Design - High-Availability","href":"/docs/next/designDocs/wip-designs/submarine-clusterServer"},{"type":"link","label":"Security Implementation","href":"/docs/next/designDocs/wip-designs/security-implementation"}]}]},{"collapsed":true,"type":"category","label":"RoadMap","items":[]}],"api":[{"type":"link","label":"Environment REST API","href":"/docs/next/api/environment"},{"type":"link","label":"Experiment REST API","href":"/docs/next/api/experiment"},{"type":"link","label":"Experiment Template REST API","href":"/docs/next/api/experiment-template"},{"type":"link","label":"Notebook REST API","href":"/docs/next/api/notebook"},{"type":"link","label":"Serve REST API","href":"/docs/next/api/serve"}]},"permalinkToSidebar":{"/docs/next/api/environment":"api","/docs/next/api/experiment":"api","/docs/next/api/experiment-template":"api","/docs/next/api/notebook":"api","/docs/next/api/serve":"api","/docs/next/community/Bylaws":"docs","/docs/next/community/contributing":"docs","/docs/next/community/HowToBecomeCommitter":"docs","/docs/next/community/HowToCommit":"docs","/docs/next/community/HowToVoteCommitterOrPMC":"docs","/docs/next/community/README":"docs","/docs/next/designDocs/architecture-and-requirements":"docs","/docs/next/designDocs/environments-implementation":"docs","/docs/next/designDocs/experiment-implementation":"docs","/docs/next/designDocs/implementation-notes":"docs","/docs/next/designDocs/notebook-implementation":"docs","/docs/next/designDocs/storage-implementation":"docs","/docs/next/designDocs/submarine-server/architecture":"docs","/docs/next/designDocs/submarine-server/experimentSpec":"docs","/docs/next/designDocs/wip-designs/security-implementation":"docs","/docs/next/designDocs/wip-designs/submarine-clusterServer":"docs","/docs/next/designDocs/wip-designs/submarine-launcher":"docs","/docs/next/devDocs/BuildFromCode":"docs","/docs/next/devDocs/Dependencies":"docs","/docs/next/devDocs/Development":"docs","/docs/next/devDocs/HowToRelease":"docs","/docs/next/devDocs/HowToVerify":"docs","/docs/next/devDocs/IntegrationTestE2E":"docs","/docs/next/devDocs/IntegrationTestK8s":"docs","/docs/next/devDocs/README":"docs","/docs/next/gettingStarted/notebook":"docs","/docs/next/gettingStarted/quickstart":"docs","/docs/next/userDocs/api/environment":"docs","/docs/next/userDocs/api/experiment":"docs","/docs/next/userDocs/api/experiment-template":"docs","/docs/next/userDocs/api/notebook":"docs","/docs/next/userDocs/others/mlflow":"docs","/docs/next/userDocs/others/tensorboard":"docs","/docs/next/userDocs/submarine-sdk/experiment-client":"docs","/docs/next/userDocs/submarine-sdk/submarine-cli":"docs","/docs/next/userDocs/submarine-sdk/tracking":"docs"}}')}}]);
\ No newline at end of file
diff --git a/97b312ed.95b88531.js b/97b312ed.06ead6e6.js
similarity index 96%
rename from 97b312ed.95b88531.js
rename to 97b312ed.06ead6e6.js
index 9a6870d..021322d 100644
--- a/97b312ed.95b88531.js
+++ b/97b312ed.06ead6e6.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[78],{145:function(e,r,n){"use strict";n.r(r),n.d(r,"frontMatter",(function(){return o})),n.d(r,"metadata",(function(){return c})),n.d(r,"toc",(function(){return u})),n.d(r,"default",(function(){return l}));var t=n(3),a=n(7),i=(n(0),n(209)),o={title:"How to Build Submarine"},c={unversionedId:"devDocs/BuildFromCode",id:"devDocs/BuildFromCode",isDocsHomePage:!1,title:"How to Build Submarine",description:"\x3c!--",source:"@site/docs/devDocs/BuildFromCode.md",slug:"/devDocs/BuildFromCode",permalink:"/docs/next/devDocs/BuildFromCode",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/devDocs/BuildFromCode.md",version:"current",sidebar:"docs",previous:{title:"Dependencies for Submarine",permalink:"/docs/next/devDocs/Dependencies"},next:{title:"Development Guide",permalink:"/docs/next/devDocs/Development"}},u=[{value:"Prerequisites",id:"prerequisites",children:[]},{value:"Quick Start",id:"quick-start",children:[{value:"Build Your Custom Submarine Docker Images",id:"build-your-custom-submarine-docker-images",children:[]},{value:"Checking releases for licenses",id:"checking-releases-for-licenses",children:[]},{value:"Building source code / binary distribution with Maven Wrapper",id:"building-source-code--binary-distribution-with-maven-wrapper",children:[]}]}],s={toc:u};function l(e){var r=e.components,n=Object(a.a)(e,["components"]);return Object(i.b)("wrapper",Object(t.a)({},s,n,{components:r,mdxType:"MDXLayout"}),Object(i.b)("h2",{id:"prerequisites"},"Prerequisites"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"JDK 1.8"),Object(i.b)("li",{parentName:"ul"},"Maven 3.3 or later ( < 3.8.1 )"),Object(i.b)("li",{parentName:"ul"},"Docker")),Object(i.b)("h2",{id:"quick-start"},"Quick Start"),Object(i.b)("h3",{id:"build-your-custom-submarine-docker-images"},"Build Your Custom Submarine Docker Images"),Object(i.b)("p",null,"Submarine provides default Docker image in the release artifacts, sometimes you would like to do some modifications on the images. You can rebuild Docker image after you make changes."),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},"Note that you need to make sure the images built above can be accessed in k8s\nUsually this needs to rename and push to a proper Docker registry.")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"mvn clean package -DskipTests\n")),Object(i.b)("p",null,"Build submarine server image:"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"./dev-support/docker-images/submarine/build.sh\n")),Object(i.b)("p",null,"Build submarine database image:"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"./dev-support/docker-images/database/build.sh\n")),Object(i.b)("h3",{id:"checking-releases-for-licenses"},"Checking releases for licenses"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"mvn clean org.apache.rat:apache-rat-plugin:check\n")),Object(i.b)("h3",{id:"building-source-code--binary-distribution-with-maven-wrapper"},"Building source code / binary distribution with Maven Wrapper"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Maven Wrapper (Optional): Maven Wrapper can help you avoid dependencies problem about Maven version.")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"# Setup Maven Wrapper (Maven 3.6.1)\nmvn -N io.takari:maven:0.7.7:wrapper -Dmaven=3.6.1\n\n# Check Maven Wrapper\n./mvnw -version\n\n# Replace 'mvn' with 'mvnw'. Example:\n./mvnw clean package -DskipTests\n")))}l.isMDXComponent=!0},209:function(e,r,n){"use strict";n.d(r,"a",(function(){return p})),n.d(r,"b",(function(){return m}));var t=n(0),a=n.n(t);function i(e,r,n){return r in e?Object.defineProperty(e,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[r]=n,e}function o(e,r){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);r&&(t=t.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),n.push.apply(n,t)}return n}function c(e){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?o(Object(n),!0).forEach((function(r){i(e,r,n[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))}))}return e}function u(e,r){if(null==e)return{};var n,t,a=function(e,r){if(null==e)return{};var n,t,a={},i=Object.keys(e);for(t=0;t<i.length;t++)n=i[t],r.indexOf(n)>=0||(a[n]=e[n]);return a}(e,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(t=0;t<i.length;t++)n=i[t],r.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=a.a.createContext({}),l=function(e){var r=a.a.useContext(s),n=r;return e&&(n="function"==typeof e?e(r):c(c({},r),e)),n},p=function(e){var r=l(e.components);return a.a.createElement(s.Provider,{value:r},e.children)},d={inlineCode:"code",wrapper:function(e){var r=e.children;return a.a.createElement(a.a.Fragment,{},r)}},b=a.a.forwardRef((function(e,r){var n=e.components,t=e.mdxType,i=e.originalType,o=e.parentName,s=u(e,["components","mdxType","originalType","parentName"]),p=l(n),b=t,m=p["".concat(o,".").concat(b)]||p[b]||d[b]||i;return n?a.a.createElement(m,c(c({ref:r},s),{},{components:n})):a.a.createElement(m,c({ref:r},s))}));function m(e,r){var n=arguments,t=r&&r.mdxType;if("string"==typeof e||t){var i=n.length,o=new Array(i);o[0]=b;var c={};for(var u in r)hasOwnProperty.call(r,u)&&(c[u]=r[u]);c.originalType=e,c.mdxType="string"==typeof e?e:t,o[1]=c;for(var s=2;s<i;s++)o[s]=n[s];return a.a.createElement.apply(null,o)}return a.a.createElement.apply(null,n)}b.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[67],{134:function(e,r,n){"use strict";n.r(r),n.d(r,"frontMatter",(function(){return o})),n.d(r,"metadata",(function(){return c})),n.d(r,"toc",(function(){return u})),n.d(r,"default",(function(){return l}));var t=n(3),a=n(7),i=(n(0),n(194)),o={title:"How to Build Submarine"},c={unversionedId:"devDocs/BuildFromCode",id:"devDocs/BuildFromCode",isDocsHomePage:!1,title:"How to Build Submarine",description:"\x3c!--",source:"@site/docs/devDocs/BuildFromCode.md",slug:"/devDocs/BuildFromCode",permalink:"/docs/next/devDocs/BuildFromCode",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/devDocs/BuildFromCode.md",version:"current",sidebar:"docs",previous:{title:"Dependencies for Submarine",permalink:"/docs/next/devDocs/Dependencies"},next:{title:"Development Guide",permalink:"/docs/next/devDocs/Development"}},u=[{value:"Prerequisites",id:"prerequisites",children:[]},{value:"Quick Start",id:"quick-start",children:[{value:"Build Your Custom Submarine Docker Images",id:"build-your-custom-submarine-docker-images",children:[]},{value:"Checking releases for licenses",id:"checking-releases-for-licenses",children:[]},{value:"Building source code / binary distribution with Maven Wrapper",id:"building-source-code--binary-distribution-with-maven-wrapper",children:[]}]}],s={toc:u};function l(e){var r=e.components,n=Object(a.a)(e,["components"]);return Object(i.b)("wrapper",Object(t.a)({},s,n,{components:r,mdxType:"MDXLayout"}),Object(i.b)("h2",{id:"prerequisites"},"Prerequisites"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"JDK 1.8"),Object(i.b)("li",{parentName:"ul"},"Maven 3.3 or later ( < 3.8.1 )"),Object(i.b)("li",{parentName:"ul"},"Docker")),Object(i.b)("h2",{id:"quick-start"},"Quick Start"),Object(i.b)("h3",{id:"build-your-custom-submarine-docker-images"},"Build Your Custom Submarine Docker Images"),Object(i.b)("p",null,"Submarine provides default Docker image in the release artifacts, sometimes you would like to do some modifications on the images. You can rebuild Docker image after you make changes."),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},"Note that you need to make sure the images built above can be accessed in k8s\nUsually this needs to rename and push to a proper Docker registry.")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"mvn clean package -DskipTests\n")),Object(i.b)("p",null,"Build submarine server image:"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"./dev-support/docker-images/submarine/build.sh\n")),Object(i.b)("p",null,"Build submarine database image:"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"./dev-support/docker-images/database/build.sh\n")),Object(i.b)("h3",{id:"checking-releases-for-licenses"},"Checking releases for licenses"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"mvn clean org.apache.rat:apache-rat-plugin:check\n")),Object(i.b)("h3",{id:"building-source-code--binary-distribution-with-maven-wrapper"},"Building source code / binary distribution with Maven Wrapper"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Maven Wrapper (Optional): Maven Wrapper can help you avoid dependencies problem about Maven version.")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"# Setup Maven Wrapper (Maven 3.6.1)\nmvn -N io.takari:maven:0.7.7:wrapper -Dmaven=3.6.1\n\n# Check Maven Wrapper\n./mvnw -version\n\n# Replace 'mvn' with 'mvnw'. Example:\n./mvnw clean package -DskipTests\n")))}l.isMDXComponent=!0},194:function(e,r,n){"use strict";n.d(r,"a",(function(){return p})),n.d(r,"b",(function(){return m}));var t=n(0),a=n.n(t);function i(e,r,n){return r in e?Object.defineProperty(e,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[r]=n,e}function o(e,r){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);r&&(t=t.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),n.push.apply(n,t)}return n}function c(e){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?o(Object(n),!0).forEach((function(r){i(e,r,n[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))}))}return e}function u(e,r){if(null==e)return{};var n,t,a=function(e,r){if(null==e)return{};var n,t,a={},i=Object.keys(e);for(t=0;t<i.length;t++)n=i[t],r.indexOf(n)>=0||(a[n]=e[n]);return a}(e,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(t=0;t<i.length;t++)n=i[t],r.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=a.a.createContext({}),l=function(e){var r=a.a.useContext(s),n=r;return e&&(n="function"==typeof e?e(r):c(c({},r),e)),n},p=function(e){var r=l(e.components);return a.a.createElement(s.Provider,{value:r},e.children)},d={inlineCode:"code",wrapper:function(e){var r=e.children;return a.a.createElement(a.a.Fragment,{},r)}},b=a.a.forwardRef((function(e,r){var n=e.components,t=e.mdxType,i=e.originalType,o=e.parentName,s=u(e,["components","mdxType","originalType","parentName"]),p=l(n),b=t,m=p["".concat(o,".").concat(b)]||p[b]||d[b]||i;return n?a.a.createElement(m,c(c({ref:r},s),{},{components:n})):a.a.createElement(m,c({ref:r},s))}));function m(e,r){var n=arguments,t=r&&r.mdxType;if("string"==typeof e||t){var i=n.length,o=new Array(i);o[0]=b;var c={};for(var u in r)hasOwnProperty.call(r,u)&&(c[u]=r[u]);c.originalType=e,c.mdxType="string"==typeof e?e:t,o[1]=c;for(var s=2;s<i;s++)o[s]=n[s];return a.a.createElement.apply(null,o)}return a.a.createElement.apply(null,n)}b.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/9e593273.01bf71f1.js b/9e593273.832ca47a.js
similarity index 96%
rename from 9e593273.01bf71f1.js
rename to 9e593273.832ca47a.js
index ac14caa..09034df 100644
--- a/9e593273.01bf71f1.js
+++ b/9e593273.832ca47a.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[79],{146:function(e,n,t){"use strict";t.r(n),t.d(n,"frontMatter",(function(){return a})),t.d(n,"metadata",(function(){return s})),t.d(n,"toc",(function(){return c})),t.d(n,"default",(function(){return l}));var r=t(3),i=t(7),o=(t(0),t(209)),a={title:"Implementation Notes"},s={unversionedId:"designDocs/implementation-notes",id:"version-0.6.0/designDocs/implementation-notes",isDocsHomePage:!1,title:"Implementation Notes",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/designDocs/implementation-notes.md",slug:"/designDocs/implementation-notes",permalink:"/docs/designDocs/implementation-notes",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/designDocs/implementation-notes.md",version:"0.6.0",sidebar:"docs",previous:{title:"Architecture and Requirment",permalink:"/docs/designDocs/architecture-and-requirements"},next:{title:"Environments Implementation",permalink:"/docs/designDocs/environments-implementation"}},c=[],m={toc:c};function l(e){var n=e.components,t=Object(i.a)(e,["components"]);return Object(o.b)("wrapper",Object(r.a)({},m,t,{components:n,mdxType:"MDXLayout"}),Object(o.b)("p",null,"Before digging into details of implementations, you should read ",Object(o.b)("a",{parentName:"p",href:"/docs/designDocs/architecture-and-requirements"},"architecture-and-requirements")," first to understand overall requirements and architecture."),Object(o.b)("p",null,"Here're sub topics of Submarine implementations:"),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},Object(o.b)("a",{parentName:"li",href:"/docs/designDocs/storage-implementation"},"Submarine Storage"),": How to store metadata, logs, metrics, etc. of Submarine."),Object(o.b)("li",{parentName:"ul"},Object(o.b)("a",{parentName:"li",href:"/docs/designDocs/environments-implementation"},"Submarine Environment"),": How environments created, managed, stored in Submarine. "),Object(o.b)("li",{parentName:"ul"},Object(o.b)("a",{parentName:"li",href:"/docs/designDocs/experiment-implementation"},"Submarine Experiment"),": How experiments managed, stored, and how the predefined experiment template works."),Object(o.b)("li",{parentName:"ul"},Object(o.b)("a",{parentName:"li",href:"/docs/designDocs/notebook-implementation"},"Submarine Notebook"),": How experiments managed, stored, and how the predefined experiment template works."),Object(o.b)("li",{parentName:"ul"},Object(o.b)("a",{parentName:"li",href:"/docs/designDocs/submarine-server/architecture"},"Submarine Server"),": How Submarine server is designed, architecture, implementation notes, etc.")),Object(o.b)("p",null,"Working-in-progress designs, Below are designs which are working-in-progress, we will move them to the upper section once design & review is finished: "),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},Object(o.b)("a",{parentName:"li",href:"/docs/designDocs/wip-designs/submarine-clusterServer"},"Submarine HA Design"),": How Submarine HA can be achieved, using RAFT, etc."),Object(o.b)("li",{parentName:"ul"},Object(o.b)("a",{parentName:"li",href:"/docs/designDocs/wip-designs/submarine-launcher"},"Submarine services deployment module:")," How to deploy submarine services to k8s, YARN or cloud. ")))}l.isMDXComponent=!0},209:function(e,n,t){"use strict";t.d(n,"a",(function(){return p})),t.d(n,"b",(function(){return b}));var r=t(0),i=t.n(r);function o(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function a(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 s(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?a(Object(t),!0).forEach((function(n){o(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):a(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function c(e,n){if(null==e)return{};var t,r,i=function(e,n){if(null==e)return{};var t,r,i={},o=Object.keys(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var m=i.a.createContext({}),l=function(e){var n=i.a.useContext(m),t=n;return e&&(t="function"==typeof e?e(n):s(s({},n),e)),t},p=function(e){var n=l(e.components);return i.a.createElement(m.Provider,{value:n},e.children)},u={inlineCode:"code",wrapper:function(e){var n=e.children;return i.a.createElement(i.a.Fragment,{},n)}},d=i.a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,o=e.originalType,a=e.parentName,m=c(e,["components","mdxType","originalType","parentName"]),p=l(t),d=r,b=p["".concat(a,".").concat(d)]||p[d]||u[d]||o;return t?i.a.createElement(b,s(s({ref:n},m),{},{components:t})):i.a.createElement(b,s({ref:n},m))}));function b(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var o=t.length,a=new Array(o);a[0]=d;var s={};for(var c in n)hasOwnProperty.call(n,c)&&(s[c]=n[c]);s.originalType=e,s.mdxType="string"==typeof e?e:r,a[1]=s;for(var m=2;m<o;m++)a[m]=t[m];return i.a.createElement.apply(null,a)}return i.a.createElement.apply(null,t)}d.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[68],{135:function(e,n,t){"use strict";t.r(n),t.d(n,"frontMatter",(function(){return a})),t.d(n,"metadata",(function(){return s})),t.d(n,"toc",(function(){return c})),t.d(n,"default",(function(){return l}));var r=t(3),i=t(7),o=(t(0),t(194)),a={title:"Implementation Notes"},s={unversionedId:"designDocs/implementation-notes",id:"version-0.6.0/designDocs/implementation-notes",isDocsHomePage:!1,title:"Implementation Notes",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/designDocs/implementation-notes.md",slug:"/designDocs/implementation-notes",permalink:"/docs/designDocs/implementation-notes",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/designDocs/implementation-notes.md",version:"0.6.0",sidebar:"docs",previous:{title:"Architecture and Requirment",permalink:"/docs/designDocs/architecture-and-requirements"},next:{title:"Environments Implementation",permalink:"/docs/designDocs/environments-implementation"}},c=[],m={toc:c};function l(e){var n=e.components,t=Object(i.a)(e,["components"]);return Object(o.b)("wrapper",Object(r.a)({},m,t,{components:n,mdxType:"MDXLayout"}),Object(o.b)("p",null,"Before digging into details of implementations, you should read ",Object(o.b)("a",{parentName:"p",href:"/docs/designDocs/architecture-and-requirements"},"architecture-and-requirements")," first to understand overall requirements and architecture."),Object(o.b)("p",null,"Here're sub topics of Submarine implementations:"),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},Object(o.b)("a",{parentName:"li",href:"/docs/designDocs/storage-implementation"},"Submarine Storage"),": How to store metadata, logs, metrics, etc. of Submarine."),Object(o.b)("li",{parentName:"ul"},Object(o.b)("a",{parentName:"li",href:"/docs/designDocs/environments-implementation"},"Submarine Environment"),": How environments created, managed, stored in Submarine. "),Object(o.b)("li",{parentName:"ul"},Object(o.b)("a",{parentName:"li",href:"/docs/designDocs/experiment-implementation"},"Submarine Experiment"),": How experiments managed, stored, and how the predefined experiment template works."),Object(o.b)("li",{parentName:"ul"},Object(o.b)("a",{parentName:"li",href:"/docs/designDocs/notebook-implementation"},"Submarine Notebook"),": How experiments managed, stored, and how the predefined experiment template works."),Object(o.b)("li",{parentName:"ul"},Object(o.b)("a",{parentName:"li",href:"/docs/designDocs/submarine-server/architecture"},"Submarine Server"),": How Submarine server is designed, architecture, implementation notes, etc.")),Object(o.b)("p",null,"Working-in-progress designs, Below are designs which are working-in-progress, we will move them to the upper section once design & review is finished: "),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},Object(o.b)("a",{parentName:"li",href:"/docs/designDocs/wip-designs/submarine-clusterServer"},"Submarine HA Design"),": How Submarine HA can be achieved, using RAFT, etc."),Object(o.b)("li",{parentName:"ul"},Object(o.b)("a",{parentName:"li",href:"/docs/designDocs/wip-designs/submarine-launcher"},"Submarine services deployment module:")," How to deploy submarine services to k8s, YARN or cloud. ")))}l.isMDXComponent=!0},194:function(e,n,t){"use strict";t.d(n,"a",(function(){return p})),t.d(n,"b",(function(){return b}));var r=t(0),i=t.n(r);function o(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function a(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 s(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?a(Object(t),!0).forEach((function(n){o(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):a(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function c(e,n){if(null==e)return{};var t,r,i=function(e,n){if(null==e)return{};var t,r,i={},o=Object.keys(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var m=i.a.createContext({}),l=function(e){var n=i.a.useContext(m),t=n;return e&&(t="function"==typeof e?e(n):s(s({},n),e)),t},p=function(e){var n=l(e.components);return i.a.createElement(m.Provider,{value:n},e.children)},u={inlineCode:"code",wrapper:function(e){var n=e.children;return i.a.createElement(i.a.Fragment,{},n)}},d=i.a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,o=e.originalType,a=e.parentName,m=c(e,["components","mdxType","originalType","parentName"]),p=l(t),d=r,b=p["".concat(a,".").concat(d)]||p[d]||u[d]||o;return t?i.a.createElement(b,s(s({ref:n},m),{},{components:t})):i.a.createElement(b,s({ref:n},m))}));function b(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var o=t.length,a=new Array(o);a[0]=d;var s={};for(var c in n)hasOwnProperty.call(n,c)&&(s[c]=n[c]);s.originalType=e,s.mdxType="string"==typeof e?e:r,a[1]=s;for(var m=2;m<o;m++)a[m]=t[m];return i.a.createElement.apply(null,a)}return i.a.createElement.apply(null,t)}d.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/a0524152.37637a8c.js b/a0524152.dfe71981.js
similarity index 97%
rename from a0524152.37637a8c.js
rename to a0524152.dfe71981.js
index d4e7068..fbcf284 100644
--- a/a0524152.37637a8c.js
+++ b/a0524152.dfe71981.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[80],{147:function(e,n,t){"use strict";t.r(n),t.d(n,"frontMatter",(function(){return c})),t.d(n,"metadata",(function(){return s})),t.d(n,"toc",(function(){return b})),t.d(n,"default",(function(){return l}));var o=t(3),a=t(7),r=(t(0),t(209)),c={title:"Notebook REST API"},s={unversionedId:"api/notebook",id:"api/notebook",isDocsHomePage:!1,title:"Notebook REST API",description:"\x3c!--",source:"@site/docs/api/notebook.md",slug:"/api/notebook",permalink:"/docs/next/api/notebook",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/api/notebook.md",version:"current",sidebar:"api",previous:{title:"Experiment Template REST API",permalink:"/docs/next/api/experiment-template"},next:{title:"Serve REST API",permalink:"/docs/next/api/serve"}},b=[{value:"Create a notebook instance",id:"create-a-notebook-instance",children:[]},{value:"List notebook instances which belong to user",id:"list-notebook-instances-which-belong-to-user",children:[]},{value:"Get the notebook instance",id:"get-the-notebook-instance",children:[]},{value:"Delete the notebook instance",id:"delete-the-notebook-instance",children:[]}],i={toc:b};function l(e){var n=e.components,t=Object(a.a)(e,["components"]);return Object(r.b)("wrapper",Object(o.a)({},i,t,{components:n,mdxType:"MDXLayout"}),Object(r.b)("blockquote",null,Object(r.b)("p",{parentName:"blockquote"},"Note: The Notebook API is in the alpha stage which is subjected to incompatible changes in future releases.")),Object(r.b)("h2",{id:"create-a-notebook-instance"},"Create a notebook instance"),Object(r.b)("p",null,Object(r.b)("inlineCode",{parentName:"p"},"POST /api/v1/notebook")),Object(r.b)("p",null,Object(r.b)("strong",{parentName:"p"},"Example Request")),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre",className:"language-sh"},'curl -X POST -H "Content-Type: application/json" -d \'\n{\n  "meta": {\n    "name": "test-nb",\n    "namespace": "default",\n    "ownerId": "e9ca23d68d884d4ebb19d07889727dae"\n  },\n  "environment": {\n    "name": "notebook-env"\n  },\n  "spec": {\n    "envVars": {\n      "TEST_ENV": "test"\n    },\n    "resources": "cpu=1,memory=1.0Gi"\n  }\n}\n\' http://127.0.0.1:32080/api/v1/notebook\n')),Object(r.b)("p",null,Object(r.b)("strong",{parentName:"p"},"Example Response:")),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":"Create a notebook instance",\n  "result":{\n    "notebookId":"notebook_1597931805405_0001",\n    "name":"test-nb",\n    "uid":"5a94c01d-6a92-4222-bc66-c610c277546d",\n    "url":"/notebook/default/test-nb/",\n    "status":"creating",\n    "reason":"The notebook instance is creating",\n    "createdTime":"2020-08-20T21:58:27.000+08:00",\n    "deletedTime":null,\n    "spec":{\n      "meta":{\n        "name":"test-nb",\n        "namespace":"default",\n        "ownerId":"e9ca23d68d884d4ebb19d07889727dae"\n      },\n      "environment":{\n        "name":"notebook-env",\n        "dockerImage":"apache/submarine:jupyter-notebook-0.5.0",\n        "kernelSpec":{\n          "name": "team_default_python_3.7",\n          "channels": [\n            "defaults"\n          ],\n          "dependencies": [\n            ""\n          ]\n        },\n        "description":null,\n        "image":null\n      },\n      "spec":{\n        "envVars":{\n          "TEST_ENV":"test"\n        },\n        "resources":"cpu=1,memory=1.0Gi"\n      }\n    }\n  },\n  "attributes":{}\n}\n')),Object(r.b)("h2",{id:"list-notebook-instances-which-belong-to-user"},"List notebook instances which belong to user"),Object(r.b)("p",null,Object(r.b)("inlineCode",{parentName:"p"},"GET /api/v1/notebook")),Object(r.b)("p",null,Object(r.b)("strong",{parentName:"p"},"Example Request:")),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/notebook?id={user_id}\n")),Object(r.b)("p",null,Object(r.b)("strong",{parentName:"p"},"Example Response:")),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":"List all notebook instances",\n  "result":[\n    {\n      "notebookId":"notebook_1597931805405_0001",\n      "name":"test-nb",\n      "uid":"5a94c01d-6a92-4222-bc66-c610c277546d",\n      "url":"/notebook/default/test-nb/",\n      "status": "running",\n      "reason": "The notebook instance is running",\n      "createdTime":"2020-08-20T21:58:27.000+08:00",\n      "deletedTime":null,\n      "spec":{\n        "meta":{\n          "name":"test-nb",\n          "namespace":"default",\n          "ownerId":"e9ca23d68d884d4ebb19d07889727dae"\n        },\n        "environment":{\n          "name":"notebook-env",\n          "dockerImage":"apache/submarine:jupyter-notebook-0.5.0",\n          "kernelSpec":{\n            "name": "team_default_python_3.7",\n            "channels": [\n              "defaults"\n            ],\n            "dependencies": [\n              ""\n            ]\n          },\n          "description":null,\n          "image":null\n        },\n        "spec":{\n          "envVars":{\n            "TEST_ENV":"test"\n          },\n          "resources":"cpu=1,memory=1.0Gi"\n        }\n      }\n    }\n  ],\n  "attributes":{}\n}\n')),Object(r.b)("h2",{id:"get-the-notebook-instance"},"Get the notebook instance"),Object(r.b)("p",null,Object(r.b)("inlineCode",{parentName:"p"},"GET /api/v1/notebook/{id}")),Object(r.b)("p",null,Object(r.b)("strong",{parentName:"p"},"Example Request:")),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/notebook/{id}\n")),Object(r.b)("p",null,Object(r.b)("strong",{parentName:"p"},"Example Response:")),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":"Get the notebook instance",\n  "result":{\n    "notebookId":"notebook_1597931805405_0001",\n    "name":"test-nb",\n    "uid":"5a94c01d-6a92-4222-bc66-c610c277546d",\n    "url":"/notebook/default/test-nb/",\n    "status":"running",\n    "reason":"The notebook instance is running",\n    "createdTime":"2020-08-20T21:58:27.000+08:00",\n    "deletedTime":null,\n    "spec":{\n      "meta":{\n        "name":"test-nb",\n        "namespace":"default",\n        "ownerId":"e9ca23d68d884d4ebb19d07889727dae"\n      },\n      "environment":{\n        "name":"notebook-env",\n        "dockerImage":"apache/submarine:jupyter-notebook-0.5.0",\n        "kernelSpec":{\n          "name": "team_default_python_3.7",\n          "channels": [\n            "defaults"\n          ],\n          "dependencies": [\n            ""\n          ]\n        },\n        "description":null,\n        "image":null\n      },\n      "spec":{\n        "envVars":{\n          "TEST_ENV":"test"\n        },\n        "resources":"cpu=1,memory=1.0Gi"\n      }\n    }\n  },\n  "attributes":{}\n}\n')),Object(r.b)("h2",{id:"delete-the-notebook-instance"},"Delete the notebook instance"),Object(r.b)("p",null,Object(r.b)("inlineCode",{parentName:"p"},"DELETE /api/v1/notebook/{id}")),Object(r.b)("p",null,Object(r.b)("strong",{parentName:"p"},"Example Request:")),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre",className:"language-sh"},"curl -X DELETE http://127.0.0.1:32080/api/v1/notebook/{id}\n")),Object(r.b)("p",null,Object(r.b)("strong",{parentName:"p"},"Example Response:")),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status": "OK",\n  "code": 200,\n  "success": true,\n  "message": "Delete the notebook instance",\n  "result": {\n    "notebookId": "notebook_1597931805405_0001",\n    "name": "test-nb",\n    "uid": "5a94c01d-6a92-4222-bc66-c610c277546d",\n    "url": "/notebook/default/test-nb/",\n    "status": "terminating",\n    "reason": "The notebook instance is terminating",\n    "createdTime": "2020-08-22T14:03:19.000+08:00",\n    "deletedTime": "2020-08-22T14:46:28+0800",\n    "spec": {\n      "meta": {\n        "name": "test-nb",\n        "namespace": "default",\n        "ownerId":"e9ca23d68d884d4ebb19d07889727dae"\n      },\n      "environment": {\n        "name": "notebook-env",\n        "dockerImage": "apache/submarine:jupyter-notebook-0.5.0",\n        "kernelSpec": {\n          "name": "team_default_python_3.7",\n          "channels": [\n            "defaults"\n          ],\n          "dependencies": [\n            ""\n          ]\n        },\n        "description": null,\n        "image": null\n      },\n      "spec": {\n        "envVars": {\n          "TEST_ENV": "test"\n        },\n        "resources": "cpu=1,memory=1.0Gi"\n      }\n    }\n  },\n  "attributes": {}\n}\n')))}l.isMDXComponent=!0},209:function(e,n,t){"use strict";t.d(n,"a",(function(){return p})),t.d(n,"b",(function(){return m}));var o=t(0),a=t.n(o);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function c(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);n&&(o=o.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,o)}return t}function s(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?c(Object(t),!0).forEach((function(n){r(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):c(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function b(e,n){if(null==e)return{};var t,o,a=function(e,n){if(null==e)return{};var t,o,a={},r=Object.keys(e);for(o=0;o<r.length;o++)t=r[o],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(o=0;o<r.length;o++)t=r[o],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var i=a.a.createContext({}),l=function(e){var n=a.a.useContext(i),t=n;return e&&(t="function"==typeof e?e(n):s(s({},n),e)),t},p=function(e){var n=l(e.components);return a.a.createElement(i.Provider,{value:n},e.children)},u={inlineCode:"code",wrapper:function(e){var n=e.children;return a.a.createElement(a.a.Fragment,{},n)}},d=a.a.forwardRef((function(e,n){var t=e.components,o=e.mdxType,r=e.originalType,c=e.parentName,i=b(e,["components","mdxType","originalType","parentName"]),p=l(t),d=o,m=p["".concat(c,".").concat(d)]||p[d]||u[d]||r;return t?a.a.createElement(m,s(s({ref:n},i),{},{components:t})):a.a.createElement(m,s({ref:n},i))}));function m(e,n){var t=arguments,o=n&&n.mdxType;if("string"==typeof e||o){var r=t.length,c=new Array(r);c[0]=d;var s={};for(var b in n)hasOwnProperty.call(n,b)&&(s[b]=n[b]);s.originalType=e,s.mdxType="string"==typeof e?e:o,c[1]=s;for(var i=2;i<r;i++)c[i]=t[i];return a.a.createElement.apply(null,c)}return a.a.createElement.apply(null,t)}d.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[69],{136:function(e,n,t){"use strict";t.r(n),t.d(n,"frontMatter",(function(){return c})),t.d(n,"metadata",(function(){return s})),t.d(n,"toc",(function(){return b})),t.d(n,"default",(function(){return l}));var o=t(3),a=t(7),r=(t(0),t(194)),c={title:"Notebook REST API"},s={unversionedId:"api/notebook",id:"api/notebook",isDocsHomePage:!1,title:"Notebook REST API",description:"\x3c!--",source:"@site/docs/api/notebook.md",slug:"/api/notebook",permalink:"/docs/next/api/notebook",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/api/notebook.md",version:"current",sidebar:"api",previous:{title:"Experiment Template REST API",permalink:"/docs/next/api/experiment-template"},next:{title:"Serve REST API",permalink:"/docs/next/api/serve"}},b=[{value:"Create a notebook instance",id:"create-a-notebook-instance",children:[]},{value:"List notebook instances which belong to user",id:"list-notebook-instances-which-belong-to-user",children:[]},{value:"Get the notebook instance",id:"get-the-notebook-instance",children:[]},{value:"Delete the notebook instance",id:"delete-the-notebook-instance",children:[]}],i={toc:b};function l(e){var n=e.components,t=Object(a.a)(e,["components"]);return Object(r.b)("wrapper",Object(o.a)({},i,t,{components:n,mdxType:"MDXLayout"}),Object(r.b)("blockquote",null,Object(r.b)("p",{parentName:"blockquote"},"Note: The Notebook API is in the alpha stage which is subjected to incompatible changes in future releases.")),Object(r.b)("h2",{id:"create-a-notebook-instance"},"Create a notebook instance"),Object(r.b)("p",null,Object(r.b)("inlineCode",{parentName:"p"},"POST /api/v1/notebook")),Object(r.b)("p",null,Object(r.b)("strong",{parentName:"p"},"Example Request")),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre",className:"language-sh"},'curl -X POST -H "Content-Type: application/json" -d \'\n{\n  "meta": {\n    "name": "test-nb",\n    "namespace": "default",\n    "ownerId": "e9ca23d68d884d4ebb19d07889727dae"\n  },\n  "environment": {\n    "name": "notebook-env"\n  },\n  "spec": {\n    "envVars": {\n      "TEST_ENV": "test"\n    },\n    "resources": "cpu=1,memory=1.0Gi"\n  }\n}\n\' http://127.0.0.1:32080/api/v1/notebook\n')),Object(r.b)("p",null,Object(r.b)("strong",{parentName:"p"},"Example Response:")),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":"Create a notebook instance",\n  "result":{\n    "notebookId":"notebook_1597931805405_0001",\n    "name":"test-nb",\n    "uid":"5a94c01d-6a92-4222-bc66-c610c277546d",\n    "url":"/notebook/default/test-nb/",\n    "status":"creating",\n    "reason":"The notebook instance is creating",\n    "createdTime":"2020-08-20T21:58:27.000+08:00",\n    "deletedTime":null,\n    "spec":{\n      "meta":{\n        "name":"test-nb",\n        "namespace":"default",\n        "ownerId":"e9ca23d68d884d4ebb19d07889727dae"\n      },\n      "environment":{\n        "name":"notebook-env",\n        "dockerImage":"apache/submarine:jupyter-notebook-0.5.0",\n        "kernelSpec":{\n          "name": "team_default_python_3.7",\n          "channels": [\n            "defaults"\n          ],\n          "dependencies": [\n            ""\n          ]\n        },\n        "description":null,\n        "image":null\n      },\n      "spec":{\n        "envVars":{\n          "TEST_ENV":"test"\n        },\n        "resources":"cpu=1,memory=1.0Gi"\n      }\n    }\n  },\n  "attributes":{}\n}\n')),Object(r.b)("h2",{id:"list-notebook-instances-which-belong-to-user"},"List notebook instances which belong to user"),Object(r.b)("p",null,Object(r.b)("inlineCode",{parentName:"p"},"GET /api/v1/notebook")),Object(r.b)("p",null,Object(r.b)("strong",{parentName:"p"},"Example Request:")),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/notebook?id={user_id}\n")),Object(r.b)("p",null,Object(r.b)("strong",{parentName:"p"},"Example Response:")),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":"List all notebook instances",\n  "result":[\n    {\n      "notebookId":"notebook_1597931805405_0001",\n      "name":"test-nb",\n      "uid":"5a94c01d-6a92-4222-bc66-c610c277546d",\n      "url":"/notebook/default/test-nb/",\n      "status": "running",\n      "reason": "The notebook instance is running",\n      "createdTime":"2020-08-20T21:58:27.000+08:00",\n      "deletedTime":null,\n      "spec":{\n        "meta":{\n          "name":"test-nb",\n          "namespace":"default",\n          "ownerId":"e9ca23d68d884d4ebb19d07889727dae"\n        },\n        "environment":{\n          "name":"notebook-env",\n          "dockerImage":"apache/submarine:jupyter-notebook-0.5.0",\n          "kernelSpec":{\n            "name": "team_default_python_3.7",\n            "channels": [\n              "defaults"\n            ],\n            "dependencies": [\n              ""\n            ]\n          },\n          "description":null,\n          "image":null\n        },\n        "spec":{\n          "envVars":{\n            "TEST_ENV":"test"\n          },\n          "resources":"cpu=1,memory=1.0Gi"\n        }\n      }\n    }\n  ],\n  "attributes":{}\n}\n')),Object(r.b)("h2",{id:"get-the-notebook-instance"},"Get the notebook instance"),Object(r.b)("p",null,Object(r.b)("inlineCode",{parentName:"p"},"GET /api/v1/notebook/{id}")),Object(r.b)("p",null,Object(r.b)("strong",{parentName:"p"},"Example Request:")),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/notebook/{id}\n")),Object(r.b)("p",null,Object(r.b)("strong",{parentName:"p"},"Example Response:")),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":"Get the notebook instance",\n  "result":{\n    "notebookId":"notebook_1597931805405_0001",\n    "name":"test-nb",\n    "uid":"5a94c01d-6a92-4222-bc66-c610c277546d",\n    "url":"/notebook/default/test-nb/",\n    "status":"running",\n    "reason":"The notebook instance is running",\n    "createdTime":"2020-08-20T21:58:27.000+08:00",\n    "deletedTime":null,\n    "spec":{\n      "meta":{\n        "name":"test-nb",\n        "namespace":"default",\n        "ownerId":"e9ca23d68d884d4ebb19d07889727dae"\n      },\n      "environment":{\n        "name":"notebook-env",\n        "dockerImage":"apache/submarine:jupyter-notebook-0.5.0",\n        "kernelSpec":{\n          "name": "team_default_python_3.7",\n          "channels": [\n            "defaults"\n          ],\n          "dependencies": [\n            ""\n          ]\n        },\n        "description":null,\n        "image":null\n      },\n      "spec":{\n        "envVars":{\n          "TEST_ENV":"test"\n        },\n        "resources":"cpu=1,memory=1.0Gi"\n      }\n    }\n  },\n  "attributes":{}\n}\n')),Object(r.b)("h2",{id:"delete-the-notebook-instance"},"Delete the notebook instance"),Object(r.b)("p",null,Object(r.b)("inlineCode",{parentName:"p"},"DELETE /api/v1/notebook/{id}")),Object(r.b)("p",null,Object(r.b)("strong",{parentName:"p"},"Example Request:")),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre",className:"language-sh"},"curl -X DELETE http://127.0.0.1:32080/api/v1/notebook/{id}\n")),Object(r.b)("p",null,Object(r.b)("strong",{parentName:"p"},"Example Response:")),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status": "OK",\n  "code": 200,\n  "success": true,\n  "message": "Delete the notebook instance",\n  "result": {\n    "notebookId": "notebook_1597931805405_0001",\n    "name": "test-nb",\n    "uid": "5a94c01d-6a92-4222-bc66-c610c277546d",\n    "url": "/notebook/default/test-nb/",\n    "status": "terminating",\n    "reason": "The notebook instance is terminating",\n    "createdTime": "2020-08-22T14:03:19.000+08:00",\n    "deletedTime": "2020-08-22T14:46:28+0800",\n    "spec": {\n      "meta": {\n        "name": "test-nb",\n        "namespace": "default",\n        "ownerId":"e9ca23d68d884d4ebb19d07889727dae"\n      },\n      "environment": {\n        "name": "notebook-env",\n        "dockerImage": "apache/submarine:jupyter-notebook-0.5.0",\n        "kernelSpec": {\n          "name": "team_default_python_3.7",\n          "channels": [\n            "defaults"\n          ],\n          "dependencies": [\n            ""\n          ]\n        },\n        "description": null,\n        "image": null\n      },\n      "spec": {\n        "envVars": {\n          "TEST_ENV": "test"\n        },\n        "resources": "cpu=1,memory=1.0Gi"\n      }\n    }\n  },\n  "attributes": {}\n}\n')))}l.isMDXComponent=!0},194:function(e,n,t){"use strict";t.d(n,"a",(function(){return p})),t.d(n,"b",(function(){return m}));var o=t(0),a=t.n(o);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function c(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);n&&(o=o.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,o)}return t}function s(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?c(Object(t),!0).forEach((function(n){r(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):c(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function b(e,n){if(null==e)return{};var t,o,a=function(e,n){if(null==e)return{};var t,o,a={},r=Object.keys(e);for(o=0;o<r.length;o++)t=r[o],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(o=0;o<r.length;o++)t=r[o],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var i=a.a.createContext({}),l=function(e){var n=a.a.useContext(i),t=n;return e&&(t="function"==typeof e?e(n):s(s({},n),e)),t},p=function(e){var n=l(e.components);return a.a.createElement(i.Provider,{value:n},e.children)},u={inlineCode:"code",wrapper:function(e){var n=e.children;return a.a.createElement(a.a.Fragment,{},n)}},d=a.a.forwardRef((function(e,n){var t=e.components,o=e.mdxType,r=e.originalType,c=e.parentName,i=b(e,["components","mdxType","originalType","parentName"]),p=l(t),d=o,m=p["".concat(c,".").concat(d)]||p[d]||u[d]||r;return t?a.a.createElement(m,s(s({ref:n},i),{},{components:t})):a.a.createElement(m,s({ref:n},i))}));function m(e,n){var t=arguments,o=n&&n.mdxType;if("string"==typeof e||o){var r=t.length,c=new Array(r);c[0]=d;var s={};for(var b in n)hasOwnProperty.call(n,b)&&(s[b]=n[b]);s.originalType=e,s.mdxType="string"==typeof e?e:o,c[1]=s;for(var i=2;i<r;i++)c[i]=t[i];return a.a.createElement.apply(null,c)}return a.a.createElement.apply(null,t)}d.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/a2231a2b.f8d8ceb4.js b/a2231a2b.e96e6cd5.js
similarity index 97%
rename from a2231a2b.f8d8ceb4.js
rename to a2231a2b.e96e6cd5.js
index 1f67d1b..61bf5c1 100644
--- a/a2231a2b.f8d8ceb4.js
+++ b/a2231a2b.e96e6cd5.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[81],{148:function(e,r,n){"use strict";n.r(r),n.d(r,"frontMatter",(function(){return s})),n.d(r,"metadata",(function(){return c})),n.d(r,"toc",(function(){return i})),n.d(r,"default",(function(){return u}));var a=n(3),o=n(7),t=(n(0),n(209)),s={title:"Test and Troubleshooting"},c={unversionedId:"adminDocs/yarn/TestAndTroubleshooting",id:"version-0.6.0/adminDocs/yarn/TestAndTroubleshooting",isDocsHomePage:!1,title:"Test and Troubleshooting",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/adminDocs/yarn/TestAndTroubleshooting.md",slug:"/adminDocs/yarn/TestAndTroubleshooting",permalink:"/docs/adminDocs/yarn/TestAndTroubleshooting",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/adminDocs/yarn/TestAndTroubleshooting.md",version:"0.6.0"},i=[{value:"Test with a tensorflow job",id:"test-with-a-tensorflow-job",children:[]},{value:"Issues:",id:"issues",children:[{value:"Issue 1: Fail to start nodemanager after system reboot",id:"issue-1-fail-to-start-nodemanager-after-system-reboot",children:[]},{value:"Issue 2: container-executor permission denied",id:"issue-2-container-executor-permission-denied",children:[]},{value:"Issue 3\uff1aHow to get docker service log",id:"issue-3\uff1ahow-to-get-docker-service-log",children:[]},{value:"Issue 4\uff1adocker can&#39;t remove containers with errors like <code>device or resource busy</code>",id:"issue-4\uff1adocker-cant-remove-containers-with-errors-like-device-or-resource-busy",children:[]},{value:"Issue 5\uff1aYarn failed to start containers",id:"issue-5\uff1ayarn-failed-to-start-containers",children:[]}]}],d={toc:i};function u(e){var r=e.components,n=Object(o.a)(e,["components"]);return Object(t.b)("wrapper",Object(a.a)({},d,n,{components:r,mdxType:"MDXLayout"}),Object(t.b)("h2",{id:"test-with-a-tensorflow-job"},"Test with a tensorflow job"),Object(t.b)("p",null,"Distributed-shell + GPU + cgroup"),Object(t.b)("pre",null,Object(t.b)("code",{parentName:"pre",className:"language-bash"},' ... \\\n job run \\\n --env DOCKER_JAVA_HOME=/opt/java \\\n --env DOCKER_HADOOP_HDFS_HOME=/hadoop-current --name distributed-tf-gpu \\\n --env YARN_CONTAINER_RUNTIME_DOCKER_CONTAINER_NETWORK=calico-network \\\n --worker_docker_image tf-1.13.1-gpu:0.0.1 \\\n --ps_docker_image tf-1.13.1-cpu:0.0.1 \\\n --input_path hdfs://${dfs_name_service}/tmp/cifar-10-data \\\n --checkpoint_path hdfs://${dfs_name_service}/user/hadoop/tf-distributed-checkpoint \\\n --num_ps 0 \\\n --ps_resources memory=4G,vcores=2,gpu=0 \\\n --ps_launch_cmd "python /test/cifar10_estimator/cifar10_main.py --data-dir=hdfs://${dfs_name_service}/tmp/cifar-10-data --job-dir=hdfs://${dfs_name_service}/tmp/cifar-10-jobdir --num-gpus=0" \\\n --worker_resources memory=4G,vcores=2,gpu=1 --verbose \\\n --num_workers 1 \\\n --worker_launch_cmd "python /test/cifar10_estimator/cifar10_main.py --data-dir=hdfs://${dfs_name_service}/tmp/cifar-10-data --job-dir=hdfs://${dfs_name_service}/tmp/cifar-10-jobdir --train-steps=500 --eval-batch-size=16 --train-batch-size=16 --sync --num-gpus=1"\n')),Object(t.b)("h2",{id:"issues"},"Issues:"),Object(t.b)("h3",{id:"issue-1-fail-to-start-nodemanager-after-system-reboot"},"Issue 1: Fail to start nodemanager after system reboot"),Object(t.b)("pre",null,Object(t.b)("code",{parentName:"pre"},"2018-09-20 18:54:39,785 ERROR org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor: Failed to bootstrap configured resource subsystems!\norg.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.ResourceHandlerException: Unexpected: Cannot create yarn cgroup Subsystem:cpu Mount points:/proc/mounts User:yarn Path:/sys/fs/cgroup/cpu,cpuacct/hadoop-yarn\n  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsHandlerImpl.initializePreMountedCGroupController(CGroupsHandlerImpl.java:425)\n  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsHandlerImpl.initializeCGroupController(CGroupsHandlerImpl.java:377)\n  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsCpuResourceHandlerImpl.bootstrap(CGroupsCpuResourceHandlerImpl.java:98)\n  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsCpuResourceHandlerImpl.bootstrap(CGroupsCpuResourceHandlerImpl.java:87)\n  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.ResourceHandlerChain.bootstrap(ResourceHandlerChain.java:58)\n  at org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor.init(LinuxContainerExecutor.java:320)\n  at org.apache.hadoop.yarn.server.nodemanager.NodeManager.serviceInit(NodeManager.java:389)\n  at org.apache.hadoop.service.AbstractService.init(AbstractService.java:164)\n  at org.apache.hadoop.yarn.server.nodemanager.NodeManager.initAndStartNodeManager(NodeManager.java:929)\n  at org.apache.hadoop.yarn.server.nodemanager.NodeManager.main(NodeManager.java:997)\n2018-09-20 18:54:39,789 INFO org.apache.hadoop.service.AbstractService: Service NodeManager failed in state INITED\n")),Object(t.b)("p",null,"Solution: Grant user yarn the access to  ",Object(t.b)("inlineCode",{parentName:"p"},"/sys/fs/cgroup/cpu,cpuacct"),", which is the subfolder of cgroup mount destination."),Object(t.b)("pre",null,Object(t.b)("code",{parentName:"pre"},"chown :yarn -R /sys/fs/cgroup/cpu,cpuacct\nchmod g+rwx -R /sys/fs/cgroup/cpu,cpuacct\n")),Object(t.b)("p",null,"If GPUs are used\uff0cthe access to cgroup devices folder is neede as well"),Object(t.b)("pre",null,Object(t.b)("code",{parentName:"pre"},"chown :yarn -R /sys/fs/cgroup/devices\nchmod g+rwx -R /sys/fs/cgroup/devices\n")),Object(t.b)("h3",{id:"issue-2-container-executor-permission-denied"},"Issue 2: container-executor permission denied"),Object(t.b)("pre",null,Object(t.b)("code",{parentName:"pre"},'2018-09-21 09:36:26,102 WARN org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.privileged.PrivilegedOperationExecutor: IOException executing command:\njava.io.IOException: Cannot run program "/etc/yarn/sbin/Linux-amd64-64/container-executor": error=13, Permission denied\n        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)\n        at org.apache.hadoop.util.Shell.runCommand(Shell.java:938)\n        at org.apache.hadoop.util.Shell.run(Shell.java:901)\n        at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:1213)\n')),Object(t.b)("p",null,"Solution: The permission of ",Object(t.b)("inlineCode",{parentName:"p"},"/etc/yarn/sbin/Linux-amd64-64/container-executor")," should be 6050"),Object(t.b)("h3",{id:"issue-3\uff1ahow-to-get-docker-service-log"},"Issue 3\uff1aHow to get docker service log"),Object(t.b)("p",null,"Solution: we can get docker log with the following command"),Object(t.b)("pre",null,Object(t.b)("code",{parentName:"pre"},"journalctl -u docker\n")),Object(t.b)("h3",{id:"issue-4\uff1adocker-cant-remove-containers-with-errors-like-device-or-resource-busy"},"Issue 4\uff1adocker can't remove containers with errors like ",Object(t.b)("inlineCode",{parentName:"h3"},"device or resource busy")),Object(t.b)("pre",null,Object(t.b)("code",{parentName:"pre",className:"language-bash"},"$ docker rm 0bfafa146431\nError response from daemon: Unable to remove filesystem for 0bfafa146431771f6024dcb9775ef47f170edb2f1852f71916ba44209ca6120a: remove /app/docker/containers/0bfafa146431771f6024dcb9775ef47f170edb2f152f71916ba44209ca6120a/shm: device or resource busy\n")),Object(t.b)("p",null,"Solution: to find which process leads to a ",Object(t.b)("inlineCode",{parentName:"p"},"device or resource busy"),", we can add a shell script, named ",Object(t.b)("inlineCode",{parentName:"p"},"find-busy-mnt.sh")),Object(t.b)("pre",null,Object(t.b)("code",{parentName:"pre",className:"language-bash"},'#!/usr/bin/env bash\n\n# A simple script to get information about mount points and pids and their\n# mount namespaces.\n\nif [ $# -ne 1 ];then\necho "Usage: $0 <devicemapper-device-id>"\nexit 1\nfi\n\nID=$1\n\nMOUNTS=`find /proc/*/mounts | xargs grep $ID 2>/dev/null`\n\n[ -z "$MOUNTS" ] &&  echo "No pids found" && exit 0\n\nprintf "PID\\tNAME\\t\\tMNTNS\\n"\necho "$MOUNTS" | while read LINE; do\nPID=`echo $LINE | cut -d ":" -f1 | cut -d "/" -f3`\n# Ignore self and thread-self\nif [ "$PID" == "self" ] || [ "$PID" == "thread-self" ]; then\n  continue\nfi\nNAME=`ps -q $PID -o comm=`\nMNTNS=`readlink /proc/$PID/ns/mnt`\nprintf "%s\\t%s\\t\\t%s\\n" "$PID" "$NAME" "$MNTNS"\ndone\n')),Object(t.b)("p",null,"Kill the process by pid, which is found by the script"),Object(t.b)("pre",null,Object(t.b)("code",{parentName:"pre",className:"language-bash"},"$ chmod +x find-busy-mnt.sh\n./find-busy-mnt.sh 0bfafa146431771f6024dcb9775ef47f170edb2f152f71916ba44209ca6120a\n# PID   NAME            MNTNS\n# 5007  ntpd            mnt:[4026533598]\n$ kill -9 5007\n")),Object(t.b)("h3",{id:"issue-5\uff1ayarn-failed-to-start-containers"},"Issue 5\uff1aYarn failed to start containers"),Object(t.b)("p",null,"if the number of GPUs required by applications is larger than the number of GPUs in the cluster, there would be some containers can't be created."))}u.isMDXComponent=!0},209:function(e,r,n){"use strict";n.d(r,"a",(function(){return p})),n.d(r,"b",(function(){return m}));var a=n(0),o=n.n(a);function t(e,r,n){return r in e?Object.defineProperty(e,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[r]=n,e}function s(e,r){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);r&&(a=a.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),n.push.apply(n,a)}return n}function c(e){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?s(Object(n),!0).forEach((function(r){t(e,r,n[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):s(Object(n)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))}))}return e}function i(e,r){if(null==e)return{};var n,a,o=function(e,r){if(null==e)return{};var n,a,o={},t=Object.keys(e);for(a=0;a<t.length;a++)n=t[a],r.indexOf(n)>=0||(o[n]=e[n]);return o}(e,r);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);for(a=0;a<t.length;a++)n=t[a],r.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var d=o.a.createContext({}),u=function(e){var r=o.a.useContext(d),n=r;return e&&(n="function"==typeof e?e(r):c(c({},r),e)),n},p=function(e){var r=u(e.components);return o.a.createElement(d.Provider,{value:r},e.children)},l={inlineCode:"code",wrapper:function(e){var r=e.children;return o.a.createElement(o.a.Fragment,{},r)}},b=o.a.forwardRef((function(e,r){var n=e.components,a=e.mdxType,t=e.originalType,s=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),p=u(n),b=a,m=p["".concat(s,".").concat(b)]||p[b]||l[b]||t;return n?o.a.createElement(m,c(c({ref:r},d),{},{components:n})):o.a.createElement(m,c({ref:r},d))}));function m(e,r){var n=arguments,a=r&&r.mdxType;if("string"==typeof e||a){var t=n.length,s=new Array(t);s[0]=b;var c={};for(var i in r)hasOwnProperty.call(r,i)&&(c[i]=r[i]);c.originalType=e,c.mdxType="string"==typeof e?e:a,s[1]=c;for(var d=2;d<t;d++)s[d]=n[d];return o.a.createElement.apply(null,s)}return o.a.createElement.apply(null,n)}b.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[70],{137:function(e,r,n){"use strict";n.r(r),n.d(r,"frontMatter",(function(){return s})),n.d(r,"metadata",(function(){return c})),n.d(r,"toc",(function(){return i})),n.d(r,"default",(function(){return u}));var a=n(3),o=n(7),t=(n(0),n(194)),s={title:"Test and Troubleshooting"},c={unversionedId:"adminDocs/yarn/TestAndTroubleshooting",id:"version-0.6.0/adminDocs/yarn/TestAndTroubleshooting",isDocsHomePage:!1,title:"Test and Troubleshooting",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/adminDocs/yarn/TestAndTroubleshooting.md",slug:"/adminDocs/yarn/TestAndTroubleshooting",permalink:"/docs/adminDocs/yarn/TestAndTroubleshooting",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/adminDocs/yarn/TestAndTroubleshooting.md",version:"0.6.0"},i=[{value:"Test with a tensorflow job",id:"test-with-a-tensorflow-job",children:[]},{value:"Issues:",id:"issues",children:[{value:"Issue 1: Fail to start nodemanager after system reboot",id:"issue-1-fail-to-start-nodemanager-after-system-reboot",children:[]},{value:"Issue 2: container-executor permission denied",id:"issue-2-container-executor-permission-denied",children:[]},{value:"Issue 3\uff1aHow to get docker service log",id:"issue-3\uff1ahow-to-get-docker-service-log",children:[]},{value:"Issue 4\uff1adocker can&#39;t remove containers with errors like <code>device or resource busy</code>",id:"issue-4\uff1adocker-cant-remove-containers-with-errors-like-device-or-resource-busy",children:[]},{value:"Issue 5\uff1aYarn failed to start containers",id:"issue-5\uff1ayarn-failed-to-start-containers",children:[]}]}],d={toc:i};function u(e){var r=e.components,n=Object(o.a)(e,["components"]);return Object(t.b)("wrapper",Object(a.a)({},d,n,{components:r,mdxType:"MDXLayout"}),Object(t.b)("h2",{id:"test-with-a-tensorflow-job"},"Test with a tensorflow job"),Object(t.b)("p",null,"Distributed-shell + GPU + cgroup"),Object(t.b)("pre",null,Object(t.b)("code",{parentName:"pre",className:"language-bash"},' ... \\\n job run \\\n --env DOCKER_JAVA_HOME=/opt/java \\\n --env DOCKER_HADOOP_HDFS_HOME=/hadoop-current --name distributed-tf-gpu \\\n --env YARN_CONTAINER_RUNTIME_DOCKER_CONTAINER_NETWORK=calico-network \\\n --worker_docker_image tf-1.13.1-gpu:0.0.1 \\\n --ps_docker_image tf-1.13.1-cpu:0.0.1 \\\n --input_path hdfs://${dfs_name_service}/tmp/cifar-10-data \\\n --checkpoint_path hdfs://${dfs_name_service}/user/hadoop/tf-distributed-checkpoint \\\n --num_ps 0 \\\n --ps_resources memory=4G,vcores=2,gpu=0 \\\n --ps_launch_cmd "python /test/cifar10_estimator/cifar10_main.py --data-dir=hdfs://${dfs_name_service}/tmp/cifar-10-data --job-dir=hdfs://${dfs_name_service}/tmp/cifar-10-jobdir --num-gpus=0" \\\n --worker_resources memory=4G,vcores=2,gpu=1 --verbose \\\n --num_workers 1 \\\n --worker_launch_cmd "python /test/cifar10_estimator/cifar10_main.py --data-dir=hdfs://${dfs_name_service}/tmp/cifar-10-data --job-dir=hdfs://${dfs_name_service}/tmp/cifar-10-jobdir --train-steps=500 --eval-batch-size=16 --train-batch-size=16 --sync --num-gpus=1"\n')),Object(t.b)("h2",{id:"issues"},"Issues:"),Object(t.b)("h3",{id:"issue-1-fail-to-start-nodemanager-after-system-reboot"},"Issue 1: Fail to start nodemanager after system reboot"),Object(t.b)("pre",null,Object(t.b)("code",{parentName:"pre"},"2018-09-20 18:54:39,785 ERROR org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor: Failed to bootstrap configured resource subsystems!\norg.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.ResourceHandlerException: Unexpected: Cannot create yarn cgroup Subsystem:cpu Mount points:/proc/mounts User:yarn Path:/sys/fs/cgroup/cpu,cpuacct/hadoop-yarn\n  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsHandlerImpl.initializePreMountedCGroupController(CGroupsHandlerImpl.java:425)\n  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsHandlerImpl.initializeCGroupController(CGroupsHandlerImpl.java:377)\n  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsCpuResourceHandlerImpl.bootstrap(CGroupsCpuResourceHandlerImpl.java:98)\n  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsCpuResourceHandlerImpl.bootstrap(CGroupsCpuResourceHandlerImpl.java:87)\n  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.ResourceHandlerChain.bootstrap(ResourceHandlerChain.java:58)\n  at org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor.init(LinuxContainerExecutor.java:320)\n  at org.apache.hadoop.yarn.server.nodemanager.NodeManager.serviceInit(NodeManager.java:389)\n  at org.apache.hadoop.service.AbstractService.init(AbstractService.java:164)\n  at org.apache.hadoop.yarn.server.nodemanager.NodeManager.initAndStartNodeManager(NodeManager.java:929)\n  at org.apache.hadoop.yarn.server.nodemanager.NodeManager.main(NodeManager.java:997)\n2018-09-20 18:54:39,789 INFO org.apache.hadoop.service.AbstractService: Service NodeManager failed in state INITED\n")),Object(t.b)("p",null,"Solution: Grant user yarn the access to  ",Object(t.b)("inlineCode",{parentName:"p"},"/sys/fs/cgroup/cpu,cpuacct"),", which is the subfolder of cgroup mount destination."),Object(t.b)("pre",null,Object(t.b)("code",{parentName:"pre"},"chown :yarn -R /sys/fs/cgroup/cpu,cpuacct\nchmod g+rwx -R /sys/fs/cgroup/cpu,cpuacct\n")),Object(t.b)("p",null,"If GPUs are used\uff0cthe access to cgroup devices folder is neede as well"),Object(t.b)("pre",null,Object(t.b)("code",{parentName:"pre"},"chown :yarn -R /sys/fs/cgroup/devices\nchmod g+rwx -R /sys/fs/cgroup/devices\n")),Object(t.b)("h3",{id:"issue-2-container-executor-permission-denied"},"Issue 2: container-executor permission denied"),Object(t.b)("pre",null,Object(t.b)("code",{parentName:"pre"},'2018-09-21 09:36:26,102 WARN org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.privileged.PrivilegedOperationExecutor: IOException executing command:\njava.io.IOException: Cannot run program "/etc/yarn/sbin/Linux-amd64-64/container-executor": error=13, Permission denied\n        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)\n        at org.apache.hadoop.util.Shell.runCommand(Shell.java:938)\n        at org.apache.hadoop.util.Shell.run(Shell.java:901)\n        at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:1213)\n')),Object(t.b)("p",null,"Solution: The permission of ",Object(t.b)("inlineCode",{parentName:"p"},"/etc/yarn/sbin/Linux-amd64-64/container-executor")," should be 6050"),Object(t.b)("h3",{id:"issue-3\uff1ahow-to-get-docker-service-log"},"Issue 3\uff1aHow to get docker service log"),Object(t.b)("p",null,"Solution: we can get docker log with the following command"),Object(t.b)("pre",null,Object(t.b)("code",{parentName:"pre"},"journalctl -u docker\n")),Object(t.b)("h3",{id:"issue-4\uff1adocker-cant-remove-containers-with-errors-like-device-or-resource-busy"},"Issue 4\uff1adocker can't remove containers with errors like ",Object(t.b)("inlineCode",{parentName:"h3"},"device or resource busy")),Object(t.b)("pre",null,Object(t.b)("code",{parentName:"pre",className:"language-bash"},"$ docker rm 0bfafa146431\nError response from daemon: Unable to remove filesystem for 0bfafa146431771f6024dcb9775ef47f170edb2f1852f71916ba44209ca6120a: remove /app/docker/containers/0bfafa146431771f6024dcb9775ef47f170edb2f152f71916ba44209ca6120a/shm: device or resource busy\n")),Object(t.b)("p",null,"Solution: to find which process leads to a ",Object(t.b)("inlineCode",{parentName:"p"},"device or resource busy"),", we can add a shell script, named ",Object(t.b)("inlineCode",{parentName:"p"},"find-busy-mnt.sh")),Object(t.b)("pre",null,Object(t.b)("code",{parentName:"pre",className:"language-bash"},'#!/usr/bin/env bash\n\n# A simple script to get information about mount points and pids and their\n# mount namespaces.\n\nif [ $# -ne 1 ];then\necho "Usage: $0 <devicemapper-device-id>"\nexit 1\nfi\n\nID=$1\n\nMOUNTS=`find /proc/*/mounts | xargs grep $ID 2>/dev/null`\n\n[ -z "$MOUNTS" ] &&  echo "No pids found" && exit 0\n\nprintf "PID\\tNAME\\t\\tMNTNS\\n"\necho "$MOUNTS" | while read LINE; do\nPID=`echo $LINE | cut -d ":" -f1 | cut -d "/" -f3`\n# Ignore self and thread-self\nif [ "$PID" == "self" ] || [ "$PID" == "thread-self" ]; then\n  continue\nfi\nNAME=`ps -q $PID -o comm=`\nMNTNS=`readlink /proc/$PID/ns/mnt`\nprintf "%s\\t%s\\t\\t%s\\n" "$PID" "$NAME" "$MNTNS"\ndone\n')),Object(t.b)("p",null,"Kill the process by pid, which is found by the script"),Object(t.b)("pre",null,Object(t.b)("code",{parentName:"pre",className:"language-bash"},"$ chmod +x find-busy-mnt.sh\n./find-busy-mnt.sh 0bfafa146431771f6024dcb9775ef47f170edb2f152f71916ba44209ca6120a\n# PID   NAME            MNTNS\n# 5007  ntpd            mnt:[4026533598]\n$ kill -9 5007\n")),Object(t.b)("h3",{id:"issue-5\uff1ayarn-failed-to-start-containers"},"Issue 5\uff1aYarn failed to start containers"),Object(t.b)("p",null,"if the number of GPUs required by applications is larger than the number of GPUs in the cluster, there would be some containers can't be created."))}u.isMDXComponent=!0},194:function(e,r,n){"use strict";n.d(r,"a",(function(){return p})),n.d(r,"b",(function(){return m}));var a=n(0),o=n.n(a);function t(e,r,n){return r in e?Object.defineProperty(e,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[r]=n,e}function s(e,r){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);r&&(a=a.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),n.push.apply(n,a)}return n}function c(e){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?s(Object(n),!0).forEach((function(r){t(e,r,n[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):s(Object(n)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))}))}return e}function i(e,r){if(null==e)return{};var n,a,o=function(e,r){if(null==e)return{};var n,a,o={},t=Object.keys(e);for(a=0;a<t.length;a++)n=t[a],r.indexOf(n)>=0||(o[n]=e[n]);return o}(e,r);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);for(a=0;a<t.length;a++)n=t[a],r.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var d=o.a.createContext({}),u=function(e){var r=o.a.useContext(d),n=r;return e&&(n="function"==typeof e?e(r):c(c({},r),e)),n},p=function(e){var r=u(e.components);return o.a.createElement(d.Provider,{value:r},e.children)},l={inlineCode:"code",wrapper:function(e){var r=e.children;return o.a.createElement(o.a.Fragment,{},r)}},b=o.a.forwardRef((function(e,r){var n=e.components,a=e.mdxType,t=e.originalType,s=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),p=u(n),b=a,m=p["".concat(s,".").concat(b)]||p[b]||l[b]||t;return n?o.a.createElement(m,c(c({ref:r},d),{},{components:n})):o.a.createElement(m,c({ref:r},d))}));function m(e,r){var n=arguments,a=r&&r.mdxType;if("string"==typeof e||a){var t=n.length,s=new Array(t);s[0]=b;var c={};for(var i in r)hasOwnProperty.call(r,i)&&(c[i]=r[i]);c.originalType=e,c.mdxType="string"==typeof e?e:a,s[1]=c;for(var d=2;d<t;d++)s[d]=n[d];return o.a.createElement.apply(null,s)}return o.a.createElement.apply(null,n)}b.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/a4535337.fd074516.js b/a4535337.739cfe99.js
similarity index 99%
rename from a4535337.fd074516.js
rename to a4535337.739cfe99.js
index ae57a74..9d9b570 100644
--- a/a4535337.fd074516.js
+++ b/a4535337.739cfe99.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[82],{149:function(e,n,t){"use strict";t.r(n),t.d(n,"frontMatter",(function(){return i})),t.d(n,"metadata",(function(){return m})),t.d(n,"toc",(function(){return p})),t.d(n,"default",(function(){return b}));var a=t(3),r=t(7),l=(t(0),t(209)),i={title:"Experiment Template REST API"},m={unversionedId:"userDocs/api/experiment-template",id:"userDocs/api/experiment-template",isDocsHomePage:!1,title:"Experiment Template REST API",description:"\x3c!--",source:"@site/docs/userDocs/api/experiment-template.md",slug:"/userDocs/api/experiment-template",permalink:"/docs/next/userDocs/api/experiment-template",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/userDocs/api/experiment-template.md",version:"current",sidebar:"docs",previous:{title:"Environment REST API",permalink:"/docs/next/userDocs/api/environment"},next:{title:"Notebook REST API",permalink:"/docs/next/userDocs/api/notebook"}},p=[{value:"Create Experiment Template",id:"create-experiment-template",children:[{value:"Parameters",id:"parameters",children:[]},{value:"Code Example",id:"code-example",children:[]}]},{value:"List Experiment Template",id:"list-experiment-template",children:[{value:"Code Example",id:"code-example-1",children:[]}]},{value:"Patch Experiment Template",id:"patch-experiment-template",children:[{value:"Parameters",id:"parameters-1",children:[]},{value:"Code Example",id:"code-example-2",children:[]}]},{value:"Delete Experiment Template",id:"delete-experiment-template",children:[{value:"Parameters",id:"parameters-2",children:[]},{value:"Code Example",id:"code-example-3",children:[]}]},{value:"Use Template to Create a Experiment",id:"use-template-to-create-a-experiment",children:[{value:"Parameters",id:"parameters-3",children:[]},{value:"Code Example",id:"code-example-4",children:[]}]}],c={toc:p};function b(e){var n=e.components,t=Object(r.a)(e,["components"]);return Object(l.b)("wrapper",Object(a.a)({},c,t,{components:n,mdxType:"MDXLayout"}),Object(l.b)("h2",{id:"create-experiment-template"},"Create Experiment Template"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"POST /api/v1/template\n")),Object(l.b)("h3",{id:"parameters"},"Parameters"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"In"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment template name. This is required.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"author"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Author name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"description"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Description of the experiment template.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"parameters"),Object(l.b)("td",{parentName:"tr",align:null},"List<ExperimentTemplateParamSpec",">"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Parameters of the experiment template.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"experimentSpec"),Object(l.b)("td",{parentName:"tr",align:null},"ExperimentSpec"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Spec of the experiment template.")))),Object(l.b)("h4",{id:"experimenttemplateparamspec"},Object(l.b)("strong",{parentName:"h4"},"ExperimentTemplateParamSpec")),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Parameter name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"required"),Object(l.b)("td",{parentName:"tr",align:null},"Boolean"),Object(l.b)("td",{parentName:"tr",align:null},"true / false. Whether the parameter is required.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"description"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Description of the parameter.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"value"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Value of the parameter.")))),Object(l.b)("h4",{id:"experimentspec"},Object(l.b)("strong",{parentName:"h4"},"ExperimentSpec")),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"meta"),Object(l.b)("td",{parentName:"tr",align:null},"ExperimentMeta"),Object(l.b)("td",{parentName:"tr",align:null},"Meta data of the experiment template.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"environment"),Object(l.b)("td",{parentName:"tr",align:null},"EnvironmentSpec"),Object(l.b)("td",{parentName:"tr",align:null},"Environment of the experiment template.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"spec"),Object(l.b)("td",{parentName:"tr",align:null},"Map<String, ExperimentTaskSpec",">"),Object(l.b)("td",{parentName:"tr",align:null},"Spec of pods.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"code"),Object(l.b)("td",{parentName:"tr",align:null},"CodeSpec"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment codespec.")))),Object(l.b)("h4",{id:"experimentmeta"},Object(l.b)("strong",{parentName:"h4"},"ExperimentMeta")),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment Name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"namespace"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment namespace.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"framework"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment framework.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"cmd"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Command.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"envVars"),Object(l.b)("td",{parentName:"tr",align:null},"Map<String, String",">"),Object(l.b)("td",{parentName:"tr",align:null},"Environmental variables.")))),Object(l.b)("h4",{id:"environmentspec"},Object(l.b)("strong",{parentName:"h4"},"EnvironmentSpec")),Object(l.b)("p",null,"See more details in ",Object(l.b)("a",{parentName:"p",href:"https://submarine.apache.org/docs/userDocs/api/environment"},"environment api"),"."),Object(l.b)("h4",{id:"experimenttaskspec"},Object(l.b)("strong",{parentName:"h4"},"ExperimentTaskSpec")),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"replicas"),Object(l.b)("td",{parentName:"tr",align:null},"Integer"),Object(l.b)("td",{parentName:"tr",align:null},"Numbers of replicas.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"resoureces"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Resouces of the task")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Task name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"image"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Image name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"cmd"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Command.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"envVars"),Object(l.b)("td",{parentName:"tr",align:null},"Map<String, String",">"),Object(l.b)("td",{parentName:"tr",align:null},"Environmental variables.")))),Object(l.b)("h4",{id:"codespec"},Object(l.b)("strong",{parentName:"h4"},"CodeSpec")),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"syncMode"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"sync mode of code spec.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"url"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"url of code spec.")))),Object(l.b)("h3",{id:"code-example"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},'curl -X POST -H "Content-Type: application/json" -d \'\n{\n  "name": "my-tf-mnist-template",\n  "author": "author",\n  "description": "This is a template to run tf-mnist",\n  "parameters": [{\n      "name": "learning_rate",\n      "value": 0.1,\n      "required": true,\n      "description": "This is learning_rate of training."\n    },\n    {\n      "name": "batch_size",\n      "value": 150,\n      "required": true,\n      "description": "This is batch_size of training."\n    },\n    {\n      "name": "experiment_name",\n      "value": "tf-mnist1",\n      "required": true,\n      "description": "the name of experiment."\n    }\n  ],\n  "experimentSpec": {\n    "meta": {\n      "cmd": "python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate={{learning_rate}} --batch_size={{batch_size}}",\n      "name": "{{experiment_name}}",\n      "envVars": {\n        "ENV1": "ENV1"\n      },\n      "framework": "TensorFlow",\n      "namespace": "default"\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=1024M"\n      }\n    },\n    "environment": {\n      "image": "apache/submarine:tf-mnist-with-summaries-1.0"\n    }\n  }\n}\n\' http://127.0.0.1:32080/api/v1/template\n')),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    "experimentTemplateId":{\n      "id":1,\n      "serverTimestamp":1626160071451\n    },\n    "experimentTemplateSpec":{\n      "name":"my-tf-mnist-template",\n      "author":"author",\n      "description":"This is a template to run tf-mnist",\n      "parameters":\n      [{\n          "name":"learning_rate",\n          "required":"true",\n          "description":"This is learning_rate of training.",\n          "value":"0.1"\n        },\n        {\n          "name":"batch_size",\n          "required":"true",\n          "description":"This is batch_size of training.",\n          "value":"150"\n        },\n        {\n          "name":"experiment_name",\n          "required":"true",\n          "description":"the name of experiment.",\n          "value":"tf-mnist1"\n        },\n        {\n          "name":"spec.Ps.replicas",\n          "required":"false",\n          "description":"",\n          "value":"1"\n        },\n        {\n          "name":"spec.Ps.resourceMap.cpu",\n          "required":"false",\n          "description":"",\n          "value":"1"\n        },\n        {\n          "name":"spec.Ps.resourceMap.memory",\n          "required":"false",\n          "description":"",\n          "value":"1024M"\n        },\n        {\n          "name":"spec.Worker.replicas",\n          "required":"false",\n          "description":"",\n          "value":"1"\n        },\n        {\n          "name":"spec.Worker.resourceMap.cpu",\n          "required":"false",\n          "description":"",\n          "value":"1"\n        },\n        {\n          "name":"spec.Worker.resourceMap.memory",\n          "required":"false",\n          "description":"","\n          value":"1024M"\n        }],\n      "experimentSpec":{\n        "meta":{\n          "name":"{{experiment_name}}",\n          "namespace":"default",\n          "framework":"TensorFlow",\n          "cmd":"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d{{learning_rate}} --batch_size\\u003d{{batch_size}}",\n          "envVars":{"ENV1":"ENV1"}\n        },\n        "environment":{\n          "name":null,\n          "dockerImage":null,\n          "kernelSpec":null,\n          "description":null,\n          "image":"apache/submarine:tf-mnist-with-summaries-1.0"\n        },\n        "spec":{\n          "Ps":{\n            "replicas":1,\n            "resources":"cpu\\u003d1,memory\\u003d1024M",\n            "name":null,\n            "image":null,\n            "cmd":null,\n            "envVars":null,\n            "resourceMap":{\n              "memory":"1024M",\n              "cpu":"1"\n            }\n          },\n          "Worker":{\n            "replicas":1,\n            "resources":"cpu\\u003d1,memory\\u003d1024M",\n            "name":null,\n            "image":null,\n            "cmd":null,\n            "envVars":null,\n            "resourceMap":{\n              "memory":"1024M",\n              "cpu":"1"\n            }\n          }\n        },\n        "code":null\n      }\n    }\n  },\n  "attributes":{}\n}\n')),Object(l.b)("h2",{id:"list-experiment-template"},"List Experiment Template"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"GET /api/v1/template\n")),Object(l.b)("h3",{id:"code-example-1"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/template\n")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    [{\n      "experimentTemplateId":{\n        "id":1,\n        "serverTimestamp":1626160071451\n      },\n      "experimentTemplateSpec":{\n        "name":"my-tf-mnist-template",\n        "author":"author",\n        "description":"This is a template to run tf-mnist",\n        "parameters":\n        [{\n            "name":"learning_rate",\n            "required":"true",\n            "description":"This is learning_rate of training.",\n            "value":"0.1"\n          },\n          {\n            "name":"batch_size",\n            "required":"true",\n            "description":"This is batch_size of training.",\n            "value":"150"\n          },\n          {\n            "name":"experiment_name",\n            "required":"true",\n            "description":"the name of experiment.",\n            "value":"tf-mnist1"\n          },\n          {\n            "name":"spec.Ps.replicas",\n            "required":"false",\n            "description":"",\n            "value":"1"\n          },\n          {\n            "name":"spec.Ps.resourceMap.cpu",\n            "required":"false",\n            "description":"",\n            "value":"1"\n          },\n          {\n            "name":"spec.Ps.resourceMap.memory",\n            "required":"false",\n            "description":"",\n            "value":"1024M"\n          },\n          {\n            "name":"spec.Worker.replicas",\n            "required":"false",\n            "description":"",\n            "value":"1"\n          },\n          {\n            "name":"spec.Worker.resourceMap.cpu",\n            "required":"false",\n            "description":"",\n            "value":"1"\n          },\n          {\n            "name":"spec.Worker.resourceMap.memory",\n            "required":"false",\n            "description":"","\n            value":"1024M"\n          }],\n        "experimentSpec":{\n          "meta":{\n            "name":"{{experiment_name}}",\n            "namespace":"default",\n            "framework":"TensorFlow",\n            "cmd":"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d{{learning_rate}} --batch_size\\u003d{{batch_size}}",\n            "envVars":{"ENV1":"ENV1"}\n          },\n          "environment":{\n            "name":null,\n            "dockerImage":null,\n            "kernelSpec":null,\n            "description":null,\n            "image":"apache/submarine:tf-mnist-with-summaries-1.0"\n          },\n          "spec":{\n            "Ps":{\n              "replicas":1,\n              "resources":"cpu\\u003d1,memory\\u003d1024M",\n              "name":null,\n              "image":null,\n              "cmd":null,\n              "envVars":null,\n              "resourceMap":{\n                "memory":"1024M",\n                "cpu":"1"\n              }\n            },\n            "Worker":{\n              "replicas":1,\n              "resources":"cpu\\u003d1,memory\\u003d1024M",\n              "name":null,\n              "image":null,\n              "cmd":null,\n              "envVars":null,\n              "resourceMap":{\n                "memory":"1024M",\n                "cpu":"1"\n              }\n            }\n          },\n          "code":null\n        }\n      }\n    }],\n  "attributes":{}\n}\n')),Object(l.b)("h2",{id:"patch-experiment-template"},"Patch Experiment Template"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"PATCH /api/v1/template{name}\n")),Object(l.b)("h3",{id:"parameters-1"},"Parameters"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"In"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"path and body"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment template name. This is required.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"author"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Author name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"description"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Description of the experiment template.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"parameters"),Object(l.b)("td",{parentName:"tr",align:null},"List<ExperimentTemplateParamSpec",">"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Parameters of the experiment template.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"experimentSpec"),Object(l.b)("td",{parentName:"tr",align:null},"ExperimentSpec"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Spec of the experiment template.")))),Object(l.b)("h3",{id:"code-example-2"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},'curl -X PATCH -H "Content-Type: application/json" -d \'\n{\n  "name": "my-tf-mnist-template",\n  "author": "author-new",\n  "description": "This is a template to run tf-mnist",\n  "parameters": [{\n      "name": "learning_rate",\n      "value": 0.1,\n      "required": true,\n      "description": "This is learning_rate of training."\n    },\n    {\n      "name": "batch_size",\n      "value": 150,\n      "required": true,\n      "description": "This is batch_size of training."\n    },\n    {\n      "name": "experiment_name",\n      "value": "tf-mnist1",\n      "required": true,\n      "description": "the name of experiment."\n    }\n  ],\n  "experimentSpec": {\n    "meta": {\n      "cmd": "python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate={{learning_rate}} --batch_size={{batch_size}}",\n      "name": "{{experiment_name}}",\n      "envVars": {\n        "ENV1": "ENV1"\n      },\n      "framework": "TensorFlow",\n      "namespace": "default"\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=1024M"\n      }\n    },\n    "environment": {\n      "image": "apache/submarine:tf-mnist-with-summaries-1.0"\n    }\n  }\n}\n\' http://127.0.0.1:32080/api/v1/template/my-tf-mnist-template\n')),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    "experimentTemplateId":{\n      "id":2,\n      "serverTimestamp":1626160071451\n    },\n    "experimentTemplateSpec":{\n      "name":"my-tf-mnist-template",\n      "author":"author-new",\n      "description":"This is a template to run tf-mnist",\n      "parameters":\n      [{\n        "name":"learning_rate",\n        "required":"true",\n        "description":"This is learning_rate of training.",\n        "value":"0.1"\n        },\n        {\n          "name":"batch_size",\n          "required":"true",\n          "description":"This is batch_size of training.",\n          "value":"150"\n        },\n        {\n          "name":"experiment_name",\n          "required":"true",\n          "description":"the name of experiment.",\n          "value":"tf-mnist1"\n        },\n        {\n          "name":"spec.Ps.replicas",\n          "required":"false",\n          "description":"",\n          "value":"1"\n        },\n        {\n          "name":"spec.Ps.resourceMap.cpu",\n          "required":"false",\n          "description":"",\n          "value":"1"\n        },\n        {\n          "name":"spec.Ps.resourceMap.memory",\n          "required":"false",\n          "description":"",\n          "value":"1024M"\n        },\n        {\n          "name":"spec.Worker.replicas",\n          "required":"false",\n          "description":"",\n          "value":"1"\n        },\n        {\n          "name":"spec.Worker.resourceMap.cpu",\n          "required":"false",\n          "description":"",\n          "value":"1"\n        },\n        {\n          "name":"spec.Worker.resourceMap.memory",\n          "required":"false",\n          "description":"",\n          "value":"1024M"\n      }],\n      "experimentSpec":{\n        "meta":{\n          "name":"{{experiment_name}}",\n          "namespace":"default",\n          "framework":"TensorFlow",\n          "cmd":"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d{{learning_rate}} --batch_size\\u003d{{batch_size}}",\n          "envVars":{"ENV1":"ENV1"}\n        },\n        "environment":{\n          "name":null,\n          "dockerImage":null,\n          "kernelSpec":null,\n          "description":null,\n          "image":"apache/submarine:tf-mnist-with-summaries-1.0"\n        },\n        "spec":{\n          "Ps":{\n            "replicas":1,\n            "resources":"cpu\\u003d1,memory\\u003d1024M",\n            "name":null,\n            "image":null,\n            "cmd":null,\n            "envVars":null,\n            "resourceMap":{"memory":"1024M","cpu":"1"}\n          },\n          "Worker":{\n            "replicas":1,\n            "resources":"cpu\\u003d1,memory\\u003d1024M",\n            "name":null,\n            "image":null,\n            "cmd":null,\n            "envVars":null,\n            "resourceMap":{"memory":"1024M","cpu":"1"}\n          }\n        },\n        "code":null\n      }\n    }\n  },\n  "attributes":{}\n}\n')),Object(l.b)("h2",{id:"delete-experiment-template"},"Delete Experiment Template"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"DELETE /api/v1/template{name}\n")),Object(l.b)("h3",{id:"parameters-2"},"Parameters"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"In"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"path"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment template name. This is required.")))),Object(l.b)("h3",{id:"code-example-3"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},"curl -X DELETE http://127.0.0.1:32080/api/v1/template/my-tf-mnist-template\n")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"reponse")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    "experimentTemplateId":{\n      "id":2,\n      "serverTimestamp":1626160071451\n    },\n    "experimentTemplateSpec":{\n      "name":"my-tf-mnist-template",\n      "author":"author-new",\n      "description":"This is a template to run tf-mnist",\n      "parameters":\n      [{\n        "name":"learning_rate",\n        "required":"true",\n        "description":"This is learning_rate of training.",\n        "value":"0.1"\n      },\n      {\n        "name":"batch_size",\n        "required":"true",\n        "description":"This is batch_size of training.",\n        "value":"150"\n      },\n      {\n        "name":"experiment_name",\n        "required":"true",\n        "description":"the name of experiment.",\n        "value":"tf-mnist1"\n      },\n      {\n        "name":"spec.Ps.replicas",\n        "required":"false",\n        "description":"",\n        "value":"1"\n      },\n      {\n        "name":"spec.Ps.resourceMap.cpu",\n        "required":"false",\n        "description":"",\n        "value":"1"\n      },\n      {\n        "name":"spec.Ps.resourceMap.memory",\n        "required":"false",\n        "description":"",\n        "value":"1024M"\n      },\n      {\n        "name":"spec.Worker.replicas",\n        "required":"false",\n        "description":"",\n        "value":"1"\n      },\n      {\n        "name":"spec.Worker.resourceMap.cpu",\n        "required":"false",\n        "description":"",\n        "value":"1"\n      },\n      {\n        "name":"spec.Worker.resourceMap.memory",\n        "required":"false",\n        "description":"",\n        "value":"1024M"\n      }],\n      "experimentSpec":{\n        "meta":{\n          "name":"{{experiment_name}}",\n          "namespace":"default",\n          "framework":"TensorFlow",\n          "cmd":"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d{{learning_rate}} --batch_size\\u003d{{batch_size}}",\n          "envVars":{"ENV1":"ENV1"}\n        },\n        "environment":{\n          "name":null,\n          "dockerImage":null,\n          "kernelSpec":null,\n          "description":null,\n          "image":"apache/submarine:tf-mnist-with-summaries-1.0"\n        },\n        "spec":{\n          "Ps":{\n            "replicas":1,\n            "resources":"cpu\\u003d1,memory\\u003d1024M",\n            "name":null,\n            "image":null,\n            "cmd":null,\n            "envVars":null,\n            "resourceMap":{"memory":"1024M","cpu":"1"}\n          },\n          "Worker":{\n            "replicas":1,\n            "resources":"cpu\\u003d1,memory\\u003d1024M",\n            "name":null,\n            "image":null,\n            "cmd":null,\n            "envVars":null,\n            "resourceMap":{"memory":"1024M","cpu":"1"}\n          }\n        },\n        "code":null\n      }\n    }\n  },\n  "attributes":{}\n}\n')),Object(l.b)("h2",{id:"use-template-to-create-a-experiment"},"Use Template to Create a Experiment"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"POST /api/v1/experiment/{template_name}\n")),Object(l.b)("h3",{id:"parameters-3"},"Parameters"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"In"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"template_name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"path"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment template name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment template name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"params"),Object(l.b)("td",{parentName:"tr",align:null},"Map<String, String>"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Parameters of the experiment including ",Object(l.b)("inlineCode",{parentName:"td"},"experiment_name"),".")))),Object(l.b)("h3",{id:"code-example-4"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},'curl -X POST -H "Content-Type: application/json" -d \'\n{\n    "name": "tf-mnist",\n    "params": {\n        "learning_rate":"0.01",\n        "batch_size":"150",\n        "experiment_name":"newexperiment1"\n    }\n}\n\' http://127.0.0.1:32080/api/v1/experiment/my-tf-mnist-template\n')),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    "experimentId":"experiment_1626160071451_0001",\n    "name":"newexperiment1",\n    "uid":"b895985c-411c-4e89-90e0-c60a2a8a4235",\n    "status":"Accepted",\n    "acceptedTime":"2021-07-13T16:21:31.000+08:00",\n    "createdTime":null,\n    "runningTime":null,\n    "finishedTime":null,\n    "spec":{\n      "meta":{\n        "name":"newexperiment1",\n        "namespace":"default",\n        "framework":"TensorFlow",\n        "cmd":"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150",\n        "envVars":{"ENV1":"ENV1"}\n      },\n      "environment":{\n        "name":null,\n        "dockerImage":null,\n        "kernelSpec":null,\n        "description":null,\n        "image":"apache/submarine:tf-mnist-with-summaries-1.0"\n      },\n      "spec":{\n        "Ps":{\n          "replicas":1,\n          "resources":"cpu\\u003d1,memory\\u003d1024M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"1024M","cpu":"1"}\n        },\n        "Worker":{\n          "replicas":1,\n          "resources":"cpu\\u003d1,memory\\u003d1024M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"1024M","cpu":"1"}\n        }\n      },\n      "code":null\n    }\n  },\n  "attributes":{}\n}\n')))}b.isMDXComponent=!0},209:function(e,n,t){"use strict";t.d(n,"a",(function(){return u})),t.d(n,"b",(function(){return d}));var a=t(0),r=t.n(a);function l(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function m(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?i(Object(t),!0).forEach((function(n){l(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):i(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,a,r=function(e,n){if(null==e)return{};var t,a,r={},l=Object.keys(e);for(a=0;a<l.length;a++)t=l[a],n.indexOf(t)>=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a<l.length;a++)t=l[a],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var c=r.a.createContext({}),b=function(e){var n=r.a.useContext(c),t=n;return e&&(t="function"==typeof e?e(n):m(m({},n),e)),t},u=function(e){var n=b(e.components);return r.a.createElement(c.Provider,{value:n},e.children)},s={inlineCode:"code",wrapper:function(e){var n=e.children;return r.a.createElement(r.a.Fragment,{},n)}},o=r.a.forwardRef((function(e,n){var t=e.components,a=e.mdxType,l=e.originalType,i=e.parentName,c=p(e,["components","mdxType","originalType","parentName"]),u=b(t),o=a,d=u["".concat(i,".").concat(o)]||u[o]||s[o]||l;return t?r.a.createElement(d,m(m({ref:n},c),{},{components:t})):r.a.createElement(d,m({ref:n},c))}));function d(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var l=t.length,i=new Array(l);i[0]=o;var m={};for(var p in n)hasOwnProperty.call(n,p)&&(m[p]=n[p]);m.originalType=e,m.mdxType="string"==typeof e?e:a,i[1]=m;for(var c=2;c<l;c++)i[c]=t[c];return r.a.createElement.apply(null,i)}return r.a.createElement.apply(null,t)}o.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[71],{138:function(e,n,t){"use strict";t.r(n),t.d(n,"frontMatter",(function(){return i})),t.d(n,"metadata",(function(){return m})),t.d(n,"toc",(function(){return p})),t.d(n,"default",(function(){return b}));var a=t(3),r=t(7),l=(t(0),t(194)),i={title:"Experiment Template REST API"},m={unversionedId:"userDocs/api/experiment-template",id:"userDocs/api/experiment-template",isDocsHomePage:!1,title:"Experiment Template REST API",description:"\x3c!--",source:"@site/docs/userDocs/api/experiment-template.md",slug:"/userDocs/api/experiment-template",permalink:"/docs/next/userDocs/api/experiment-template",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/userDocs/api/experiment-template.md",version:"current",sidebar:"docs",previous:{title:"Environment REST API",permalink:"/docs/next/userDocs/api/environment"},next:{title:"Notebook REST API",permalink:"/docs/next/userDocs/api/notebook"}},p=[{value:"Create Experiment Template",id:"create-experiment-template",children:[{value:"Parameters",id:"parameters",children:[]},{value:"Code Example",id:"code-example",children:[]}]},{value:"List Experiment Template",id:"list-experiment-template",children:[{value:"Code Example",id:"code-example-1",children:[]}]},{value:"Patch Experiment Template",id:"patch-experiment-template",children:[{value:"Parameters",id:"parameters-1",children:[]},{value:"Code Example",id:"code-example-2",children:[]}]},{value:"Delete Experiment Template",id:"delete-experiment-template",children:[{value:"Parameters",id:"parameters-2",children:[]},{value:"Code Example",id:"code-example-3",children:[]}]},{value:"Use Template to Create a Experiment",id:"use-template-to-create-a-experiment",children:[{value:"Parameters",id:"parameters-3",children:[]},{value:"Code Example",id:"code-example-4",children:[]}]}],c={toc:p};function b(e){var n=e.components,t=Object(r.a)(e,["components"]);return Object(l.b)("wrapper",Object(a.a)({},c,t,{components:n,mdxType:"MDXLayout"}),Object(l.b)("h2",{id:"create-experiment-template"},"Create Experiment Template"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"POST /api/v1/template\n")),Object(l.b)("h3",{id:"parameters"},"Parameters"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"In"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment template name. This is required.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"author"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Author name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"description"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Description of the experiment template.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"parameters"),Object(l.b)("td",{parentName:"tr",align:null},"List<ExperimentTemplateParamSpec",">"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Parameters of the experiment template.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"experimentSpec"),Object(l.b)("td",{parentName:"tr",align:null},"ExperimentSpec"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Spec of the experiment template.")))),Object(l.b)("h4",{id:"experimenttemplateparamspec"},Object(l.b)("strong",{parentName:"h4"},"ExperimentTemplateParamSpec")),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Parameter name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"required"),Object(l.b)("td",{parentName:"tr",align:null},"Boolean"),Object(l.b)("td",{parentName:"tr",align:null},"true / false. Whether the parameter is required.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"description"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Description of the parameter.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"value"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Value of the parameter.")))),Object(l.b)("h4",{id:"experimentspec"},Object(l.b)("strong",{parentName:"h4"},"ExperimentSpec")),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"meta"),Object(l.b)("td",{parentName:"tr",align:null},"ExperimentMeta"),Object(l.b)("td",{parentName:"tr",align:null},"Meta data of the experiment template.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"environment"),Object(l.b)("td",{parentName:"tr",align:null},"EnvironmentSpec"),Object(l.b)("td",{parentName:"tr",align:null},"Environment of the experiment template.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"spec"),Object(l.b)("td",{parentName:"tr",align:null},"Map<String, ExperimentTaskSpec",">"),Object(l.b)("td",{parentName:"tr",align:null},"Spec of pods.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"code"),Object(l.b)("td",{parentName:"tr",align:null},"CodeSpec"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment codespec.")))),Object(l.b)("h4",{id:"experimentmeta"},Object(l.b)("strong",{parentName:"h4"},"ExperimentMeta")),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment Name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"namespace"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment namespace.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"framework"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment framework.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"cmd"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Command.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"envVars"),Object(l.b)("td",{parentName:"tr",align:null},"Map<String, String",">"),Object(l.b)("td",{parentName:"tr",align:null},"Environmental variables.")))),Object(l.b)("h4",{id:"environmentspec"},Object(l.b)("strong",{parentName:"h4"},"EnvironmentSpec")),Object(l.b)("p",null,"See more details in ",Object(l.b)("a",{parentName:"p",href:"https://submarine.apache.org/docs/userDocs/api/environment"},"environment api"),"."),Object(l.b)("h4",{id:"experimenttaskspec"},Object(l.b)("strong",{parentName:"h4"},"ExperimentTaskSpec")),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"replicas"),Object(l.b)("td",{parentName:"tr",align:null},"Integer"),Object(l.b)("td",{parentName:"tr",align:null},"Numbers of replicas.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"resoureces"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Resouces of the task")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Task name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"image"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Image name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"cmd"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"Command.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"envVars"),Object(l.b)("td",{parentName:"tr",align:null},"Map<String, String",">"),Object(l.b)("td",{parentName:"tr",align:null},"Environmental variables.")))),Object(l.b)("h4",{id:"codespec"},Object(l.b)("strong",{parentName:"h4"},"CodeSpec")),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"syncMode"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"sync mode of code spec.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"url"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"url of code spec.")))),Object(l.b)("h3",{id:"code-example"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},'curl -X POST -H "Content-Type: application/json" -d \'\n{\n  "name": "my-tf-mnist-template",\n  "author": "author",\n  "description": "This is a template to run tf-mnist",\n  "parameters": [{\n      "name": "learning_rate",\n      "value": 0.1,\n      "required": true,\n      "description": "This is learning_rate of training."\n    },\n    {\n      "name": "batch_size",\n      "value": 150,\n      "required": true,\n      "description": "This is batch_size of training."\n    },\n    {\n      "name": "experiment_name",\n      "value": "tf-mnist1",\n      "required": true,\n      "description": "the name of experiment."\n    }\n  ],\n  "experimentSpec": {\n    "meta": {\n      "cmd": "python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate={{learning_rate}} --batch_size={{batch_size}}",\n      "name": "{{experiment_name}}",\n      "envVars": {\n        "ENV1": "ENV1"\n      },\n      "framework": "TensorFlow",\n      "namespace": "default"\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=1024M"\n      }\n    },\n    "environment": {\n      "image": "apache/submarine:tf-mnist-with-summaries-1.0"\n    }\n  }\n}\n\' http://127.0.0.1:32080/api/v1/template\n')),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    "experimentTemplateId":{\n      "id":1,\n      "serverTimestamp":1626160071451\n    },\n    "experimentTemplateSpec":{\n      "name":"my-tf-mnist-template",\n      "author":"author",\n      "description":"This is a template to run tf-mnist",\n      "parameters":\n      [{\n          "name":"learning_rate",\n          "required":"true",\n          "description":"This is learning_rate of training.",\n          "value":"0.1"\n        },\n        {\n          "name":"batch_size",\n          "required":"true",\n          "description":"This is batch_size of training.",\n          "value":"150"\n        },\n        {\n          "name":"experiment_name",\n          "required":"true",\n          "description":"the name of experiment.",\n          "value":"tf-mnist1"\n        },\n        {\n          "name":"spec.Ps.replicas",\n          "required":"false",\n          "description":"",\n          "value":"1"\n        },\n        {\n          "name":"spec.Ps.resourceMap.cpu",\n          "required":"false",\n          "description":"",\n          "value":"1"\n        },\n        {\n          "name":"spec.Ps.resourceMap.memory",\n          "required":"false",\n          "description":"",\n          "value":"1024M"\n        },\n        {\n          "name":"spec.Worker.replicas",\n          "required":"false",\n          "description":"",\n          "value":"1"\n        },\n        {\n          "name":"spec.Worker.resourceMap.cpu",\n          "required":"false",\n          "description":"",\n          "value":"1"\n        },\n        {\n          "name":"spec.Worker.resourceMap.memory",\n          "required":"false",\n          "description":"","\n          value":"1024M"\n        }],\n      "experimentSpec":{\n        "meta":{\n          "name":"{{experiment_name}}",\n          "namespace":"default",\n          "framework":"TensorFlow",\n          "cmd":"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d{{learning_rate}} --batch_size\\u003d{{batch_size}}",\n          "envVars":{"ENV1":"ENV1"}\n        },\n        "environment":{\n          "name":null,\n          "dockerImage":null,\n          "kernelSpec":null,\n          "description":null,\n          "image":"apache/submarine:tf-mnist-with-summaries-1.0"\n        },\n        "spec":{\n          "Ps":{\n            "replicas":1,\n            "resources":"cpu\\u003d1,memory\\u003d1024M",\n            "name":null,\n            "image":null,\n            "cmd":null,\n            "envVars":null,\n            "resourceMap":{\n              "memory":"1024M",\n              "cpu":"1"\n            }\n          },\n          "Worker":{\n            "replicas":1,\n            "resources":"cpu\\u003d1,memory\\u003d1024M",\n            "name":null,\n            "image":null,\n            "cmd":null,\n            "envVars":null,\n            "resourceMap":{\n              "memory":"1024M",\n              "cpu":"1"\n            }\n          }\n        },\n        "code":null\n      }\n    }\n  },\n  "attributes":{}\n}\n')),Object(l.b)("h2",{id:"list-experiment-template"},"List Experiment Template"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"GET /api/v1/template\n")),Object(l.b)("h3",{id:"code-example-1"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/template\n")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    [{\n      "experimentTemplateId":{\n        "id":1,\n        "serverTimestamp":1626160071451\n      },\n      "experimentTemplateSpec":{\n        "name":"my-tf-mnist-template",\n        "author":"author",\n        "description":"This is a template to run tf-mnist",\n        "parameters":\n        [{\n            "name":"learning_rate",\n            "required":"true",\n            "description":"This is learning_rate of training.",\n            "value":"0.1"\n          },\n          {\n            "name":"batch_size",\n            "required":"true",\n            "description":"This is batch_size of training.",\n            "value":"150"\n          },\n          {\n            "name":"experiment_name",\n            "required":"true",\n            "description":"the name of experiment.",\n            "value":"tf-mnist1"\n          },\n          {\n            "name":"spec.Ps.replicas",\n            "required":"false",\n            "description":"",\n            "value":"1"\n          },\n          {\n            "name":"spec.Ps.resourceMap.cpu",\n            "required":"false",\n            "description":"",\n            "value":"1"\n          },\n          {\n            "name":"spec.Ps.resourceMap.memory",\n            "required":"false",\n            "description":"",\n            "value":"1024M"\n          },\n          {\n            "name":"spec.Worker.replicas",\n            "required":"false",\n            "description":"",\n            "value":"1"\n          },\n          {\n            "name":"spec.Worker.resourceMap.cpu",\n            "required":"false",\n            "description":"",\n            "value":"1"\n          },\n          {\n            "name":"spec.Worker.resourceMap.memory",\n            "required":"false",\n            "description":"","\n            value":"1024M"\n          }],\n        "experimentSpec":{\n          "meta":{\n            "name":"{{experiment_name}}",\n            "namespace":"default",\n            "framework":"TensorFlow",\n            "cmd":"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d{{learning_rate}} --batch_size\\u003d{{batch_size}}",\n            "envVars":{"ENV1":"ENV1"}\n          },\n          "environment":{\n            "name":null,\n            "dockerImage":null,\n            "kernelSpec":null,\n            "description":null,\n            "image":"apache/submarine:tf-mnist-with-summaries-1.0"\n          },\n          "spec":{\n            "Ps":{\n              "replicas":1,\n              "resources":"cpu\\u003d1,memory\\u003d1024M",\n              "name":null,\n              "image":null,\n              "cmd":null,\n              "envVars":null,\n              "resourceMap":{\n                "memory":"1024M",\n                "cpu":"1"\n              }\n            },\n            "Worker":{\n              "replicas":1,\n              "resources":"cpu\\u003d1,memory\\u003d1024M",\n              "name":null,\n              "image":null,\n              "cmd":null,\n              "envVars":null,\n              "resourceMap":{\n                "memory":"1024M",\n                "cpu":"1"\n              }\n            }\n          },\n          "code":null\n        }\n      }\n    }],\n  "attributes":{}\n}\n')),Object(l.b)("h2",{id:"patch-experiment-template"},"Patch Experiment Template"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"PATCH /api/v1/template{name}\n")),Object(l.b)("h3",{id:"parameters-1"},"Parameters"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"In"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"path and body"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment template name. This is required.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"author"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Author name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"description"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Description of the experiment template.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"parameters"),Object(l.b)("td",{parentName:"tr",align:null},"List<ExperimentTemplateParamSpec",">"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Parameters of the experiment template.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"experimentSpec"),Object(l.b)("td",{parentName:"tr",align:null},"ExperimentSpec"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Spec of the experiment template.")))),Object(l.b)("h3",{id:"code-example-2"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},'curl -X PATCH -H "Content-Type: application/json" -d \'\n{\n  "name": "my-tf-mnist-template",\n  "author": "author-new",\n  "description": "This is a template to run tf-mnist",\n  "parameters": [{\n      "name": "learning_rate",\n      "value": 0.1,\n      "required": true,\n      "description": "This is learning_rate of training."\n    },\n    {\n      "name": "batch_size",\n      "value": 150,\n      "required": true,\n      "description": "This is batch_size of training."\n    },\n    {\n      "name": "experiment_name",\n      "value": "tf-mnist1",\n      "required": true,\n      "description": "the name of experiment."\n    }\n  ],\n  "experimentSpec": {\n    "meta": {\n      "cmd": "python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate={{learning_rate}} --batch_size={{batch_size}}",\n      "name": "{{experiment_name}}",\n      "envVars": {\n        "ENV1": "ENV1"\n      },\n      "framework": "TensorFlow",\n      "namespace": "default"\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=1024M"\n      }\n    },\n    "environment": {\n      "image": "apache/submarine:tf-mnist-with-summaries-1.0"\n    }\n  }\n}\n\' http://127.0.0.1:32080/api/v1/template/my-tf-mnist-template\n')),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    "experimentTemplateId":{\n      "id":2,\n      "serverTimestamp":1626160071451\n    },\n    "experimentTemplateSpec":{\n      "name":"my-tf-mnist-template",\n      "author":"author-new",\n      "description":"This is a template to run tf-mnist",\n      "parameters":\n      [{\n        "name":"learning_rate",\n        "required":"true",\n        "description":"This is learning_rate of training.",\n        "value":"0.1"\n        },\n        {\n          "name":"batch_size",\n          "required":"true",\n          "description":"This is batch_size of training.",\n          "value":"150"\n        },\n        {\n          "name":"experiment_name",\n          "required":"true",\n          "description":"the name of experiment.",\n          "value":"tf-mnist1"\n        },\n        {\n          "name":"spec.Ps.replicas",\n          "required":"false",\n          "description":"",\n          "value":"1"\n        },\n        {\n          "name":"spec.Ps.resourceMap.cpu",\n          "required":"false",\n          "description":"",\n          "value":"1"\n        },\n        {\n          "name":"spec.Ps.resourceMap.memory",\n          "required":"false",\n          "description":"",\n          "value":"1024M"\n        },\n        {\n          "name":"spec.Worker.replicas",\n          "required":"false",\n          "description":"",\n          "value":"1"\n        },\n        {\n          "name":"spec.Worker.resourceMap.cpu",\n          "required":"false",\n          "description":"",\n          "value":"1"\n        },\n        {\n          "name":"spec.Worker.resourceMap.memory",\n          "required":"false",\n          "description":"",\n          "value":"1024M"\n      }],\n      "experimentSpec":{\n        "meta":{\n          "name":"{{experiment_name}}",\n          "namespace":"default",\n          "framework":"TensorFlow",\n          "cmd":"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d{{learning_rate}} --batch_size\\u003d{{batch_size}}",\n          "envVars":{"ENV1":"ENV1"}\n        },\n        "environment":{\n          "name":null,\n          "dockerImage":null,\n          "kernelSpec":null,\n          "description":null,\n          "image":"apache/submarine:tf-mnist-with-summaries-1.0"\n        },\n        "spec":{\n          "Ps":{\n            "replicas":1,\n            "resources":"cpu\\u003d1,memory\\u003d1024M",\n            "name":null,\n            "image":null,\n            "cmd":null,\n            "envVars":null,\n            "resourceMap":{"memory":"1024M","cpu":"1"}\n          },\n          "Worker":{\n            "replicas":1,\n            "resources":"cpu\\u003d1,memory\\u003d1024M",\n            "name":null,\n            "image":null,\n            "cmd":null,\n            "envVars":null,\n            "resourceMap":{"memory":"1024M","cpu":"1"}\n          }\n        },\n        "code":null\n      }\n    }\n  },\n  "attributes":{}\n}\n')),Object(l.b)("h2",{id:"delete-experiment-template"},"Delete Experiment Template"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"DELETE /api/v1/template{name}\n")),Object(l.b)("h3",{id:"parameters-2"},"Parameters"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"In"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"path"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment template name. This is required.")))),Object(l.b)("h3",{id:"code-example-3"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},"curl -X DELETE http://127.0.0.1:32080/api/v1/template/my-tf-mnist-template\n")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"reponse")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    "experimentTemplateId":{\n      "id":2,\n      "serverTimestamp":1626160071451\n    },\n    "experimentTemplateSpec":{\n      "name":"my-tf-mnist-template",\n      "author":"author-new",\n      "description":"This is a template to run tf-mnist",\n      "parameters":\n      [{\n        "name":"learning_rate",\n        "required":"true",\n        "description":"This is learning_rate of training.",\n        "value":"0.1"\n      },\n      {\n        "name":"batch_size",\n        "required":"true",\n        "description":"This is batch_size of training.",\n        "value":"150"\n      },\n      {\n        "name":"experiment_name",\n        "required":"true",\n        "description":"the name of experiment.",\n        "value":"tf-mnist1"\n      },\n      {\n        "name":"spec.Ps.replicas",\n        "required":"false",\n        "description":"",\n        "value":"1"\n      },\n      {\n        "name":"spec.Ps.resourceMap.cpu",\n        "required":"false",\n        "description":"",\n        "value":"1"\n      },\n      {\n        "name":"spec.Ps.resourceMap.memory",\n        "required":"false",\n        "description":"",\n        "value":"1024M"\n      },\n      {\n        "name":"spec.Worker.replicas",\n        "required":"false",\n        "description":"",\n        "value":"1"\n      },\n      {\n        "name":"spec.Worker.resourceMap.cpu",\n        "required":"false",\n        "description":"",\n        "value":"1"\n      },\n      {\n        "name":"spec.Worker.resourceMap.memory",\n        "required":"false",\n        "description":"",\n        "value":"1024M"\n      }],\n      "experimentSpec":{\n        "meta":{\n          "name":"{{experiment_name}}",\n          "namespace":"default",\n          "framework":"TensorFlow",\n          "cmd":"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d{{learning_rate}} --batch_size\\u003d{{batch_size}}",\n          "envVars":{"ENV1":"ENV1"}\n        },\n        "environment":{\n          "name":null,\n          "dockerImage":null,\n          "kernelSpec":null,\n          "description":null,\n          "image":"apache/submarine:tf-mnist-with-summaries-1.0"\n        },\n        "spec":{\n          "Ps":{\n            "replicas":1,\n            "resources":"cpu\\u003d1,memory\\u003d1024M",\n            "name":null,\n            "image":null,\n            "cmd":null,\n            "envVars":null,\n            "resourceMap":{"memory":"1024M","cpu":"1"}\n          },\n          "Worker":{\n            "replicas":1,\n            "resources":"cpu\\u003d1,memory\\u003d1024M",\n            "name":null,\n            "image":null,\n            "cmd":null,\n            "envVars":null,\n            "resourceMap":{"memory":"1024M","cpu":"1"}\n          }\n        },\n        "code":null\n      }\n    }\n  },\n  "attributes":{}\n}\n')),Object(l.b)("h2",{id:"use-template-to-create-a-experiment"},"Use Template to Create a Experiment"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"POST /api/v1/experiment/{template_name}\n")),Object(l.b)("h3",{id:"parameters-3"},"Parameters"),Object(l.b)("table",null,Object(l.b)("thead",{parentName:"table"},Object(l.b)("tr",{parentName:"thead"},Object(l.b)("th",{parentName:"tr",align:null},"Field Name"),Object(l.b)("th",{parentName:"tr",align:null},"Type"),Object(l.b)("th",{parentName:"tr",align:null},"In"),Object(l.b)("th",{parentName:"tr",align:null},"Description"))),Object(l.b)("tbody",{parentName:"table"},Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"template_name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"path"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment template name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"name"),Object(l.b)("td",{parentName:"tr",align:null},"String"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Experiment template name.")),Object(l.b)("tr",{parentName:"tbody"},Object(l.b)("td",{parentName:"tr",align:null},"params"),Object(l.b)("td",{parentName:"tr",align:null},"Map<String, String>"),Object(l.b)("td",{parentName:"tr",align:null},"body"),Object(l.b)("td",{parentName:"tr",align:null},"Parameters of the experiment including ",Object(l.b)("inlineCode",{parentName:"td"},"experiment_name"),".")))),Object(l.b)("h3",{id:"code-example-4"},"Code Example"),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"shell")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},'curl -X POST -H "Content-Type: application/json" -d \'\n{\n    "name": "tf-mnist",\n    "params": {\n        "learning_rate":"0.01",\n        "batch_size":"150",\n        "experiment_name":"newexperiment1"\n    }\n}\n\' http://127.0.0.1:32080/api/v1/experiment/my-tf-mnist-template\n')),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"response")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":null,\n  "result":{\n    "experimentId":"experiment_1626160071451_0001",\n    "name":"newexperiment1",\n    "uid":"b895985c-411c-4e89-90e0-c60a2a8a4235",\n    "status":"Accepted",\n    "acceptedTime":"2021-07-13T16:21:31.000+08:00",\n    "createdTime":null,\n    "runningTime":null,\n    "finishedTime":null,\n    "spec":{\n      "meta":{\n        "name":"newexperiment1",\n        "namespace":"default",\n        "framework":"TensorFlow",\n        "cmd":"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150",\n        "envVars":{"ENV1":"ENV1"}\n      },\n      "environment":{\n        "name":null,\n        "dockerImage":null,\n        "kernelSpec":null,\n        "description":null,\n        "image":"apache/submarine:tf-mnist-with-summaries-1.0"\n      },\n      "spec":{\n        "Ps":{\n          "replicas":1,\n          "resources":"cpu\\u003d1,memory\\u003d1024M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"1024M","cpu":"1"}\n        },\n        "Worker":{\n          "replicas":1,\n          "resources":"cpu\\u003d1,memory\\u003d1024M",\n          "name":null,\n          "image":null,\n          "cmd":null,\n          "envVars":null,\n          "resourceMap":{"memory":"1024M","cpu":"1"}\n        }\n      },\n      "code":null\n    }\n  },\n  "attributes":{}\n}\n')))}b.isMDXComponent=!0},194:function(e,n,t){"use strict";t.d(n,"a",(function(){return u})),t.d(n,"b",(function(){return d}));var a=t(0),r=t.n(a);function l(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function m(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?i(Object(t),!0).forEach((function(n){l(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):i(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,a,r=function(e,n){if(null==e)return{};var t,a,r={},l=Object.keys(e);for(a=0;a<l.length;a++)t=l[a],n.indexOf(t)>=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a<l.length;a++)t=l[a],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var c=r.a.createContext({}),b=function(e){var n=r.a.useContext(c),t=n;return e&&(t="function"==typeof e?e(n):m(m({},n),e)),t},u=function(e){var n=b(e.components);return r.a.createElement(c.Provider,{value:n},e.children)},s={inlineCode:"code",wrapper:function(e){var n=e.children;return r.a.createElement(r.a.Fragment,{},n)}},o=r.a.forwardRef((function(e,n){var t=e.components,a=e.mdxType,l=e.originalType,i=e.parentName,c=p(e,["components","mdxType","originalType","parentName"]),u=b(t),o=a,d=u["".concat(i,".").concat(o)]||u[o]||s[o]||l;return t?r.a.createElement(d,m(m({ref:n},c),{},{components:t})):r.a.createElement(d,m({ref:n},c))}));function d(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var l=t.length,i=new Array(l);i[0]=o;var m={};for(var p in n)hasOwnProperty.call(n,p)&&(m[p]=n[p]);m.originalType=e,m.mdxType="string"==typeof e?e:a,i[1]=m;for(var c=2;c<l;c++)i[c]=t[c];return r.a.createElement.apply(null,i)}return r.a.createElement.apply(null,t)}o.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/a49341a2.5c2c393a.js b/a49341a2.3500a14c.js
similarity index 97%
rename from a49341a2.5c2c393a.js
rename to a49341a2.3500a14c.js
index cf901e2..f608252 100644
--- a/a49341a2.5c2c393a.js
+++ b/a49341a2.3500a14c.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[83],{150:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return o})),n.d(t,"metadata",(function(){return l})),n.d(t,"toc",(function(){return c})),n.d(t,"default",(function(){return b}));var r=n(3),a=n(7),i=(n(0),n(209)),o={title:"Tracking"},l={unversionedId:"userDocs/submarine-sdk/tracking",id:"userDocs/submarine-sdk/tracking",isDocsHomePage:!1,title:"Tracking",description:"\x3c!--",source:"@site/docs/userDocs/submarine-sdk/tracking.md",slug:"/userDocs/submarine-sdk/tracking",permalink:"/docs/next/userDocs/submarine-sdk/tracking",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/userDocs/submarine-sdk/tracking.md",version:"current",sidebar:"docs",previous:{title:"Submarine CLI",permalink:"/docs/next/userDocs/submarine-sdk/submarine-cli"},next:{title:"MLflow UI",permalink:"/docs/next/userDocs/others/mlflow"}},c=[{value:"Functions",id:"functions",children:[{value:"<code>submarine.get_tracking_uri() -&gt; str</code>",id:"submarineget_tracking_uri---str",children:[]},{value:"<code>submarine.set_tracking_uri(uri: str) -&gt; None</code>",id:"submarineset_tracking_uriuri-str---none",children:[]},{value:"<code>submarine.log_param(key: str, value: str) -&gt; None</code>",id:"submarinelog_paramkey-str-value-str---none",children:[]},{value:"<code>submarine.log_metric(key: str, value: float, step=0) -&gt; None</code>",id:"submarinelog_metrickey-str-value-float-step0---none",children:[]},{value:"<code>submarine.save_model(model_type: str, model, artifact_path: str, registered_model_name: str = None, input_dim: list = None, output_dim: list = None,) -&gt; None</code>",id:"submarinesave_modelmodel_type-str-model-artifact_path-str-registered_model_name-str--none-input_dim-list--none-output_dim-list--none---none",children:[]}]}],s={toc:c};function b(e){var t=e.components,n=Object(a.a)(e,["components"]);return Object(i.b)("wrapper",Object(r.a)({},s,n,{components:t,mdxType:"MDXLayout"}),Object(i.b)("p",null,"It helps developers use submarine's internal data caching,\ndata exchange, and task tracking capabilities to more efficiently improve the\ndevelopment and execution of machine learning productivity"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Allow data scientist to track distributed ML experiment"),Object(i.b)("li",{parentName:"ul"},"Support store ML parameters and metrics in Submarine-server"),Object(i.b)("li",{parentName:"ul"},"Support hdfs, S3 and mysql (Currently we only support mysql)")),Object(i.b)("h2",{id:"functions"},"Functions"),Object(i.b)("h3",{id:"submarineget_tracking_uri---str"},Object(i.b)("inlineCode",{parentName:"h3"},"submarine.get_tracking_uri() -> str")),Object(i.b)("p",null,"Get the tracking URI. If none has been specified, check the environmental variables. If uri is still none, return the default submarine jdbc url."),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Returns")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},"The tracking URI."))),Object(i.b)("h3",{id:"submarineset_tracking_uriuri-str---none"},Object(i.b)("inlineCode",{parentName:"h3"},"submarine.set_tracking_uri(uri: str) -> None")),Object(i.b)("p",null,"set the tracking URI. You can also set the SUBMARINE_TRACKING_URI environment variable to have Submarine find a URI from there. The URI should be database connection string."),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Parameters")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"uri")," ","-"," Submarine record data to Mysql server. The database URL is expected in the format ",Object(i.b)("inlineCode",{parentName:"li"},"<dialect>+<driver>://<username>:<password>@<host>:<port>/<database>"),".\nBy default it's ",Object(i.b)("inlineCode",{parentName:"li"},"mysql+pymysql://submarine:password@submarine-database:3306/submarine"),".\nMore detail : ",Object(i.b)("a",{parentName:"li",href:"https://docs.sqlalchemy.org/en/latest/core/engines.html#database-urls"},"SQLAlchemy docs")))),Object(i.b)("h3",{id:"submarinelog_paramkey-str-value-str---none"},Object(i.b)("inlineCode",{parentName:"h3"},"submarine.log_param(key: str, value: str) -> None")),Object(i.b)("p",null,"log a single key-value parameter. The key and value are both strings."),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Parameters")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"key")," - Parameter name."),Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"value")," - Parameter value."))),Object(i.b)("h3",{id:"submarinelog_metrickey-str-value-float-step0---none"},Object(i.b)("inlineCode",{parentName:"h3"},"submarine.log_metric(key: str, value: float, step=0) -> None")),Object(i.b)("p",null,"log a single key-value metric. The value must always be a number."),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Parameters")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"key")," - Metric name."),Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"value")," - Metric value."),Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"step")," - A single integer step at which to log the specified Metrics, by default it's 0."))),Object(i.b)("h3",{id:"submarinesave_modelmodel_type-str-model-artifact_path-str-registered_model_name-str--none-input_dim-list--none-output_dim-list--none---none"},Object(i.b)("inlineCode",{parentName:"h3"},"submarine.save_model(model_type: str, model, artifact_path: str, registered_model_name: str = None, input_dim: list = None, output_dim: list = None,) -> None")),Object(i.b)("p",null," Save a model into the minio pod."),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Parameters")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"model_type")," - The type of model. Only support ",Object(i.b)("inlineCode",{parentName:"li"},"pytorch")," and ",Object(i.b)("inlineCode",{parentName:"li"},"tensorflow"),"."),Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"model")," - Model artifact."),Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"artifact_path")," - Model name."),Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"registered_model_name")," - If it is not ",Object(i.b)("inlineCode",{parentName:"li"},"None"),", the model will be registered into the model registry with this name."),Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"input_dim")," - The input dimension of the model."),Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"output_dim")," - The output dimension of the model."))))}b.isMDXComponent=!0},209:function(e,t,n){"use strict";n.d(t,"a",(function(){return u})),n.d(t,"b",(function(){return d}));var r=n(0),a=n.n(r);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function c(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=a.a.createContext({}),b=function(e){var t=a.a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},u=function(e){var t=b(e.components);return a.a.createElement(s.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},p=a.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,o=e.parentName,s=c(e,["components","mdxType","originalType","parentName"]),u=b(n),p=r,d=u["".concat(o,".").concat(p)]||u[p]||m[p]||i;return n?a.a.createElement(d,l(l({ref:t},s),{},{components:n})):a.a.createElement(d,l({ref:t},s))}));function d(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=p;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l.mdxType="string"==typeof e?e:r,o[1]=l;for(var s=2;s<i;s++)o[s]=n[s];return a.a.createElement.apply(null,o)}return a.a.createElement.apply(null,n)}p.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[72],{139:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return o})),n.d(t,"metadata",(function(){return l})),n.d(t,"toc",(function(){return c})),n.d(t,"default",(function(){return b}));var r=n(3),a=n(7),i=(n(0),n(194)),o={title:"Tracking"},l={unversionedId:"userDocs/submarine-sdk/tracking",id:"userDocs/submarine-sdk/tracking",isDocsHomePage:!1,title:"Tracking",description:"\x3c!--",source:"@site/docs/userDocs/submarine-sdk/tracking.md",slug:"/userDocs/submarine-sdk/tracking",permalink:"/docs/next/userDocs/submarine-sdk/tracking",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/userDocs/submarine-sdk/tracking.md",version:"current",sidebar:"docs",previous:{title:"Submarine CLI",permalink:"/docs/next/userDocs/submarine-sdk/submarine-cli"},next:{title:"MLflow UI",permalink:"/docs/next/userDocs/others/mlflow"}},c=[{value:"Functions",id:"functions",children:[{value:"<code>submarine.get_tracking_uri() -&gt; str</code>",id:"submarineget_tracking_uri---str",children:[]},{value:"<code>submarine.set_tracking_uri(uri: str) -&gt; None</code>",id:"submarineset_tracking_uriuri-str---none",children:[]},{value:"<code>submarine.log_param(key: str, value: str) -&gt; None</code>",id:"submarinelog_paramkey-str-value-str---none",children:[]},{value:"<code>submarine.log_metric(key: str, value: float, step=0) -&gt; None</code>",id:"submarinelog_metrickey-str-value-float-step0---none",children:[]},{value:"<code>submarine.save_model(model_type: str, model, artifact_path: str, registered_model_name: str = None, input_dim: list = None, output_dim: list = None,) -&gt; None</code>",id:"submarinesave_modelmodel_type-str-model-artifact_path-str-registered_model_name-str--none-input_dim-list--none-output_dim-list--none---none",children:[]}]}],s={toc:c};function b(e){var t=e.components,n=Object(a.a)(e,["components"]);return Object(i.b)("wrapper",Object(r.a)({},s,n,{components:t,mdxType:"MDXLayout"}),Object(i.b)("p",null,"It helps developers use submarine's internal data caching,\ndata exchange, and task tracking capabilities to more efficiently improve the\ndevelopment and execution of machine learning productivity"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Allow data scientist to track distributed ML experiment"),Object(i.b)("li",{parentName:"ul"},"Support store ML parameters and metrics in Submarine-server"),Object(i.b)("li",{parentName:"ul"},"Support hdfs, S3 and mysql (Currently we only support mysql)")),Object(i.b)("h2",{id:"functions"},"Functions"),Object(i.b)("h3",{id:"submarineget_tracking_uri---str"},Object(i.b)("inlineCode",{parentName:"h3"},"submarine.get_tracking_uri() -> str")),Object(i.b)("p",null,"Get the tracking URI. If none has been specified, check the environmental variables. If uri is still none, return the default submarine jdbc url."),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Returns")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},"The tracking URI."))),Object(i.b)("h3",{id:"submarineset_tracking_uriuri-str---none"},Object(i.b)("inlineCode",{parentName:"h3"},"submarine.set_tracking_uri(uri: str) -> None")),Object(i.b)("p",null,"set the tracking URI. You can also set the SUBMARINE_TRACKING_URI environment variable to have Submarine find a URI from there. The URI should be database connection string."),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Parameters")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"uri")," ","-"," Submarine record data to Mysql server. The database URL is expected in the format ",Object(i.b)("inlineCode",{parentName:"li"},"<dialect>+<driver>://<username>:<password>@<host>:<port>/<database>"),".\nBy default it's ",Object(i.b)("inlineCode",{parentName:"li"},"mysql+pymysql://submarine:password@submarine-database:3306/submarine"),".\nMore detail : ",Object(i.b)("a",{parentName:"li",href:"https://docs.sqlalchemy.org/en/latest/core/engines.html#database-urls"},"SQLAlchemy docs")))),Object(i.b)("h3",{id:"submarinelog_paramkey-str-value-str---none"},Object(i.b)("inlineCode",{parentName:"h3"},"submarine.log_param(key: str, value: str) -> None")),Object(i.b)("p",null,"log a single key-value parameter. The key and value are both strings."),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Parameters")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"key")," - Parameter name."),Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"value")," - Parameter value."))),Object(i.b)("h3",{id:"submarinelog_metrickey-str-value-float-step0---none"},Object(i.b)("inlineCode",{parentName:"h3"},"submarine.log_metric(key: str, value: float, step=0) -> None")),Object(i.b)("p",null,"log a single key-value metric. The value must always be a number."),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Parameters")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"key")," - Metric name."),Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"value")," - Metric value."),Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"step")," - A single integer step at which to log the specified Metrics, by default it's 0."))),Object(i.b)("h3",{id:"submarinesave_modelmodel_type-str-model-artifact_path-str-registered_model_name-str--none-input_dim-list--none-output_dim-list--none---none"},Object(i.b)("inlineCode",{parentName:"h3"},"submarine.save_model(model_type: str, model, artifact_path: str, registered_model_name: str = None, input_dim: list = None, output_dim: list = None,) -> None")),Object(i.b)("p",null," Save a model into the minio pod."),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Parameters")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"model_type")," - The type of model. Only support ",Object(i.b)("inlineCode",{parentName:"li"},"pytorch")," and ",Object(i.b)("inlineCode",{parentName:"li"},"tensorflow"),"."),Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"model")," - Model artifact."),Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"artifact_path")," - Model name."),Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"registered_model_name")," - If it is not ",Object(i.b)("inlineCode",{parentName:"li"},"None"),", the model will be registered into the model registry with this name."),Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"input_dim")," - The input dimension of the model."),Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"output_dim")," - The output dimension of the model."))))}b.isMDXComponent=!0},194:function(e,t,n){"use strict";n.d(t,"a",(function(){return u})),n.d(t,"b",(function(){return d}));var r=n(0),a=n.n(r);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function c(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=a.a.createContext({}),b=function(e){var t=a.a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},u=function(e){var t=b(e.components);return a.a.createElement(s.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},p=a.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,o=e.parentName,s=c(e,["components","mdxType","originalType","parentName"]),u=b(n),p=r,d=u["".concat(o,".").concat(p)]||u[p]||m[p]||i;return n?a.a.createElement(d,l(l({ref:t},s),{},{components:n})):a.a.createElement(d,l({ref:t},s))}));function d(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=p;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l.mdxType="string"==typeof e?e:r,o[1]=l;for(var s=2;s<i;s++)o[s]=n[s];return a.a.createElement.apply(null,o)}return a.a.createElement.apply(null,n)}p.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/a57e1c0a.d5a56f18.js b/a57e1c0a.ce9f4f90.js
similarity index 96%
rename from a57e1c0a.d5a56f18.js
rename to a57e1c0a.ce9f4f90.js
index e38758b..8b2020b 100644
--- a/a57e1c0a.d5a56f18.js
+++ b/a57e1c0a.ce9f4f90.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[84],{151:function(e,t,o){"use strict";o.r(t),o.d(t,"frontMatter",(function(){return i})),o.d(t,"metadata",(function(){return c})),o.d(t,"toc",(function(){return m})),o.d(t,"default",(function(){return s}));var n=o(3),a=o(7),r=(o(0),o(209)),i={title:"How to vote a Committer or PMC"},c={unversionedId:"community/HowToVoteCommitterOrPMC",id:"community/HowToVoteCommitterOrPMC",isDocsHomePage:!1,title:"How to vote a Committer or PMC",description:"\x3c!--",source:"@site/docs/community/HowToVoteCommitterOrPMC.md",slug:"/community/HowToVoteCommitterOrPMC",permalink:"/docs/next/community/HowToVoteCommitterOrPMC",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/community/HowToVoteCommitterOrPMC.md",version:"current",sidebar:"docs",previous:{title:"How To Contribute to Submarine",permalink:"/docs/next/community/contributing"},next:{title:"How to become a Committer",permalink:"/docs/next/community/HowToBecomeCommitter"}},m=[{value:"The voting process of becoming a Submarine Committer or PMC",id:"the-voting-process-of-becoming-a-submarine-committer-or-pmc",children:[]}],l={toc:m};function s(e){var t=e.components,o=Object(a.a)(e,["components"]);return Object(r.b)("wrapper",Object(n.a)({},l,o,{components:t,mdxType:"MDXLayout"}),Object(r.b)("h3",{id:"the-voting-process-of-becoming-a-submarine-committer-or-pmc"},"The voting process of becoming a Submarine Committer or PMC"),Object(r.b)("ol",null,Object(r.b)("li",{parentName:"ol"},Object(r.b)("p",{parentName:"li"},"After the PMC members of Submarine discover any valuable contributions from the community contributors and obtain the consent of the candidate, they initiate a discussion on the private mailing list of Submarine:"),Object(r.b)("blockquote",{parentName:"li"},Object(r.b)("p",{parentName:"blockquote"},"[DISCUSS]"," YYYYY as a Submarine XXXXXX")),Object(r.b)("p",{parentName:"li"},"In the email, the source of the candidate\u2019s contributions should be clearly stated, so that everyone can discuss and analyze. The discussion email will last at least 72 hours, and the project team members, including the mentors, will fully express their views on the proposed email.")),Object(r.b)("li",{parentName:"ol"},Object(r.b)("p",{parentName:"li"},"Regardless of whether there is a disagreement, after the discussion email, the vote initiator needs to initiate a Committer or PMC vote on the private mailing list of Submarine;"),Object(r.b)("blockquote",{parentName:"li"},Object(r.b)("p",{parentName:"blockquote"},"[VOTE]"," YYYYY as a Submarine XXXXXX")),Object(r.b)("p",{parentName:"li"},"The voting mail should last for at least 72 hours, and there should be at least 3 +1 votes to pass the vote. If there are 0 votes or one -1 vote, the entire vote will fail. If voting -1, you need to clarify the question so that everyone can understand.")),Object(r.b)("li",{parentName:"ol"},Object(r.b)("p",{parentName:"li"},"After the voting email is over, the vote initiator should summarize it on the voting line, remind the end of voting, and send it to the voting summary email."),Object(r.b)("blockquote",{parentName:"li"},Object(r.b)("p",{parentName:"blockquote"},"[RESULTS][vote]"," YYYYY as a Submarine XXXXXX"))),Object(r.b)("li",{parentName:"ol"},Object(r.b)("p",{parentName:"li"},"After the vote summary email is sent, if the vote passed, the vote initiator must send an invitation email to the candidate, and the invitation email needs the candidate to reply to accept or decline through the designated mailbox."),Object(r.b)("blockquote",{parentName:"li"},Object(r.b)("p",{parentName:"blockquote"},"[Invitation]"," Invitation to join Apache Submarine as a XXXXXX")),Object(r.b)("p",{parentName:"li"},"The email should be sent to the candidate, and the copy is sent to ",Object(r.b)("a",{parentName:"p",href:"mailto:private@submarine.apache.org"},"private@submarine.apache.org"))),Object(r.b)("li",{parentName:"ol"},Object(r.b)("p",{parentName:"li"},"After the candidate accepts the invitation, if the candidate does not have an apache email account, the vote initiator needs to assist the candidate to create an apache account according to the guidelines.")),Object(r.b)("li",{parentName:"ol"},Object(r.b)("p",{parentName:"li"},"If the above content is completed, the vote initiator still needs to do the following two things:"),Object(r.b)("p",{parentName:"li"},"6.1 Apply to the project leader to add project team members, and open the authority accounts for the jira and apache projects."),Object(r.b)("p",{parentName:"li"},"6.2 Send a notification email to the ",Object(r.b)("a",{parentName:"p",href:"mailto:dev@submarine.apache.org"},"dev@submarine.apache.org")," mail group:"),Object(r.b)("blockquote",{parentName:"li"},Object(r.b)("p",{parentName:"blockquote"},"[ANNOUNCE]"," New XXXXXX: YYYYY")))),Object(r.b)("p",null,"So far, the entire process is completed, then the candidate officially becomes the Committer or PMC of Submarine."))}s.isMDXComponent=!0},209:function(e,t,o){"use strict";o.d(t,"a",(function(){return p})),o.d(t,"b",(function(){return d}));var n=o(0),a=o.n(n);function r(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function i(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,n)}return o}function c(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?i(Object(o),!0).forEach((function(t){r(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):i(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function m(e,t){if(null==e)return{};var o,n,a=function(e,t){if(null==e)return{};var o,n,a={},r=Object.keys(e);for(n=0;n<r.length;n++)o=r[n],t.indexOf(o)>=0||(a[o]=e[o]);return a}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(n=0;n<r.length;n++)o=r[n],t.indexOf(o)>=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(a[o]=e[o])}return a}var l=a.a.createContext({}),s=function(e){var t=a.a.useContext(l),o=t;return e&&(o="function"==typeof e?e(t):c(c({},t),e)),o},p=function(e){var t=s(e.components);return a.a.createElement(l.Provider,{value:t},e.children)},b={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},u=a.a.forwardRef((function(e,t){var o=e.components,n=e.mdxType,r=e.originalType,i=e.parentName,l=m(e,["components","mdxType","originalType","parentName"]),p=s(o),u=n,d=p["".concat(i,".").concat(u)]||p[u]||b[u]||r;return o?a.a.createElement(d,c(c({ref:t},l),{},{components:o})):a.a.createElement(d,c({ref:t},l))}));function d(e,t){var o=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var r=o.length,i=new Array(r);i[0]=u;var c={};for(var m in t)hasOwnProperty.call(t,m)&&(c[m]=t[m]);c.originalType=e,c.mdxType="string"==typeof e?e:n,i[1]=c;for(var l=2;l<r;l++)i[l]=o[l];return a.a.createElement.apply(null,i)}return a.a.createElement.apply(null,o)}u.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[73],{140:function(e,t,o){"use strict";o.r(t),o.d(t,"frontMatter",(function(){return i})),o.d(t,"metadata",(function(){return c})),o.d(t,"toc",(function(){return m})),o.d(t,"default",(function(){return s}));var n=o(3),a=o(7),r=(o(0),o(194)),i={title:"How to vote a Committer or PMC"},c={unversionedId:"community/HowToVoteCommitterOrPMC",id:"community/HowToVoteCommitterOrPMC",isDocsHomePage:!1,title:"How to vote a Committer or PMC",description:"\x3c!--",source:"@site/docs/community/HowToVoteCommitterOrPMC.md",slug:"/community/HowToVoteCommitterOrPMC",permalink:"/docs/next/community/HowToVoteCommitterOrPMC",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/community/HowToVoteCommitterOrPMC.md",version:"current",sidebar:"docs",previous:{title:"How To Contribute to Submarine",permalink:"/docs/next/community/contributing"},next:{title:"How to become a Committer",permalink:"/docs/next/community/HowToBecomeCommitter"}},m=[{value:"The voting process of becoming a Submarine Committer or PMC",id:"the-voting-process-of-becoming-a-submarine-committer-or-pmc",children:[]}],l={toc:m};function s(e){var t=e.components,o=Object(a.a)(e,["components"]);return Object(r.b)("wrapper",Object(n.a)({},l,o,{components:t,mdxType:"MDXLayout"}),Object(r.b)("h3",{id:"the-voting-process-of-becoming-a-submarine-committer-or-pmc"},"The voting process of becoming a Submarine Committer or PMC"),Object(r.b)("ol",null,Object(r.b)("li",{parentName:"ol"},Object(r.b)("p",{parentName:"li"},"After the PMC members of Submarine discover any valuable contributions from the community contributors and obtain the consent of the candidate, they initiate a discussion on the private mailing list of Submarine:"),Object(r.b)("blockquote",{parentName:"li"},Object(r.b)("p",{parentName:"blockquote"},"[DISCUSS]"," YYYYY as a Submarine XXXXXX")),Object(r.b)("p",{parentName:"li"},"In the email, the source of the candidate\u2019s contributions should be clearly stated, so that everyone can discuss and analyze. The discussion email will last at least 72 hours, and the project team members, including the mentors, will fully express their views on the proposed email.")),Object(r.b)("li",{parentName:"ol"},Object(r.b)("p",{parentName:"li"},"Regardless of whether there is a disagreement, after the discussion email, the vote initiator needs to initiate a Committer or PMC vote on the private mailing list of Submarine;"),Object(r.b)("blockquote",{parentName:"li"},Object(r.b)("p",{parentName:"blockquote"},"[VOTE]"," YYYYY as a Submarine XXXXXX")),Object(r.b)("p",{parentName:"li"},"The voting mail should last for at least 72 hours, and there should be at least 3 +1 votes to pass the vote. If there are 0 votes or one -1 vote, the entire vote will fail. If voting -1, you need to clarify the question so that everyone can understand.")),Object(r.b)("li",{parentName:"ol"},Object(r.b)("p",{parentName:"li"},"After the voting email is over, the vote initiator should summarize it on the voting line, remind the end of voting, and send it to the voting summary email."),Object(r.b)("blockquote",{parentName:"li"},Object(r.b)("p",{parentName:"blockquote"},"[RESULTS][vote]"," YYYYY as a Submarine XXXXXX"))),Object(r.b)("li",{parentName:"ol"},Object(r.b)("p",{parentName:"li"},"After the vote summary email is sent, if the vote passed, the vote initiator must send an invitation email to the candidate, and the invitation email needs the candidate to reply to accept or decline through the designated mailbox."),Object(r.b)("blockquote",{parentName:"li"},Object(r.b)("p",{parentName:"blockquote"},"[Invitation]"," Invitation to join Apache Submarine as a XXXXXX")),Object(r.b)("p",{parentName:"li"},"The email should be sent to the candidate, and the copy is sent to ",Object(r.b)("a",{parentName:"p",href:"mailto:private@submarine.apache.org"},"private@submarine.apache.org"))),Object(r.b)("li",{parentName:"ol"},Object(r.b)("p",{parentName:"li"},"After the candidate accepts the invitation, if the candidate does not have an apache email account, the vote initiator needs to assist the candidate to create an apache account according to the guidelines.")),Object(r.b)("li",{parentName:"ol"},Object(r.b)("p",{parentName:"li"},"If the above content is completed, the vote initiator still needs to do the following two things:"),Object(r.b)("p",{parentName:"li"},"6.1 Apply to the project leader to add project team members, and open the authority accounts for the jira and apache projects."),Object(r.b)("p",{parentName:"li"},"6.2 Send a notification email to the ",Object(r.b)("a",{parentName:"p",href:"mailto:dev@submarine.apache.org"},"dev@submarine.apache.org")," mail group:"),Object(r.b)("blockquote",{parentName:"li"},Object(r.b)("p",{parentName:"blockquote"},"[ANNOUNCE]"," New XXXXXX: YYYYY")))),Object(r.b)("p",null,"So far, the entire process is completed, then the candidate officially becomes the Committer or PMC of Submarine."))}s.isMDXComponent=!0},194:function(e,t,o){"use strict";o.d(t,"a",(function(){return p})),o.d(t,"b",(function(){return d}));var n=o(0),a=o.n(n);function r(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function i(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,n)}return o}function c(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?i(Object(o),!0).forEach((function(t){r(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):i(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function m(e,t){if(null==e)return{};var o,n,a=function(e,t){if(null==e)return{};var o,n,a={},r=Object.keys(e);for(n=0;n<r.length;n++)o=r[n],t.indexOf(o)>=0||(a[o]=e[o]);return a}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(n=0;n<r.length;n++)o=r[n],t.indexOf(o)>=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(a[o]=e[o])}return a}var l=a.a.createContext({}),s=function(e){var t=a.a.useContext(l),o=t;return e&&(o="function"==typeof e?e(t):c(c({},t),e)),o},p=function(e){var t=s(e.components);return a.a.createElement(l.Provider,{value:t},e.children)},b={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},u=a.a.forwardRef((function(e,t){var o=e.components,n=e.mdxType,r=e.originalType,i=e.parentName,l=m(e,["components","mdxType","originalType","parentName"]),p=s(o),u=n,d=p["".concat(i,".").concat(u)]||p[u]||b[u]||r;return o?a.a.createElement(d,c(c({ref:t},l),{},{components:o})):a.a.createElement(d,c({ref:t},l))}));function d(e,t){var o=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var r=o.length,i=new Array(r);i[0]=u;var c={};for(var m in t)hasOwnProperty.call(t,m)&&(c[m]=t[m]);c.originalType=e,c.mdxType="string"==typeof e?e:n,i[1]=c;for(var l=2;l<r;l++)i[l]=o[l];return a.a.createElement.apply(null,i)}return a.a.createElement.apply(null,o)}u.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/a5ca038b.422ff945.js b/a5ca038b.5d1f0bf4.js
similarity index 97%
rename from a5ca038b.422ff945.js
rename to a5ca038b.5d1f0bf4.js
index 5a1c761..6c6978f 100644
--- a/a5ca038b.422ff945.js
+++ b/a5ca038b.5d1f0bf4.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[85],{152:function(e,t,r){"use strict";r.r(t),r.d(t,"frontMatter",(function(){return a})),r.d(t,"metadata",(function(){return c})),r.d(t,"toc",(function(){return s})),r.d(t,"default",(function(){return l}));var o=r(3),n=r(7),i=(r(0),r(209)),a={title:"Guide for Apache Submarine Committers"},c={unversionedId:"community/HowToCommit",id:"community/HowToCommit",isDocsHomePage:!1,title:"Guide for Apache Submarine Committers",description:"\x3c!--",source:"@site/docs/community/HowToCommit.md",slug:"/community/HowToCommit",permalink:"/docs/next/community/HowToCommit",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/community/HowToCommit.md",version:"current",sidebar:"docs",previous:{title:"Bylaws",permalink:"/docs/next/community/Bylaws"},next:{title:"How To Contribute to Submarine",permalink:"/docs/next/community/contributing"}},s=[{value:"New committers",id:"new-committers",children:[]},{value:"Review",id:"review",children:[]},{value:"Reject",id:"reject",children:[]},{value:"Commit individual patches",id:"commit-individual-patches",children:[]},{value:"Adding Contributors role",id:"adding-contributors-role",children:[]}],m={toc:s};function l(e){var t=e.components,r=Object(n.a)(e,["components"]);return Object(i.b)("wrapper",Object(o.a)({},m,r,{components:t,mdxType:"MDXLayout"}),Object(i.b)("p",null,"This page contains Hadoop Core-specific guidelines for committers."),Object(i.b)("h2",{id:"new-committers"},"New committers"),Object(i.b)("p",null,"New committers are encouraged to first read Apache's generic committer documentation:"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",{parentName:"li",href:"http://www.apache.org/dev/new-committers-guide.html"},"Apache New Committer Guide")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",{parentName:"li",href:"http://www.apache.org/dev/committers.html"},"Apache Committer FAQ"))),Object(i.b)("p",null,"The first act of a new core committer is typically to add their name to the\ncredits page. This requires changing the site source in\n",Object(i.b)("a",{parentName:"p",href:"https://github.com/apache/submarine-site/blob/master/community/member.md"},"https://github.com/apache/submarine-site/blob/master/community/member.md"),". Once done,\nupdate the Submarine website as described\n",Object(i.b)("a",{parentName:"p",href:"https://github.com/apache/submarine-site/blob/asf-site/README.md"},"here"),"\n(TLDR; don't forget to regenerate the site with hugo, and commit the generated\nresults, too)."),Object(i.b)("h2",{id:"review"},"Review"),Object(i.b)("p",null,"Submarine committers should, as often as possible, attempt to review patches\nsubmitted by others. Ideally every submitted patch will get reviewed by a\ncommitter within a few days. If a committer reviews a patch they've not\nauthored, and believe it to be of sufficient quality, then they can commit the\npatch, otherwise the patch should be cancelled with a clear explanation for why\nit was rejected."),Object(i.b)("p",null,"The list of submitted patches can be found in the GitHub\n",Object(i.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/pulls"},"Pull Requests")," page.\nCommitters should scan the list from top-to-bottom,\nlooking for patches that they feel qualified to review and possibly commit."),Object(i.b)("p",null,"For non-trivial changes, it is best to get another committer to review & approve\nyour own patches before commit."),Object(i.b)("h2",{id:"reject"},"Reject"),Object(i.b)("p",null,"Patches should be rejected which do not adhere to the guidelines in\n",Object(i.b)("a",{parentName:"p",href:"/docs/next/community/contributing"},"Contribution Guidelines"),". Committers should always be\npolite to contributors and try to instruct and encourage them to contribute\nbetter patches. If a committer wishes to improve an unacceptable patch, then it\nshould first be rejected, and a new patch should be attached by the committer\nfor review."),Object(i.b)("h2",{id:"commit-individual-patches"},"Commit individual patches"),Object(i.b)("p",null,"Submarine uses git for source code version control. The writable repo is at -\n",Object(i.b)("a",{parentName:"p",href:"https://gitbox.apache.org/repos/asf/submarine.git"},"https://gitbox.apache.org/repos/asf/submarine.git")),Object(i.b)("p",null,"It is strongly recommended to use the cicd script to merge the PRs.\nSee the instructions at\n",Object(i.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/tree/master/dev-support/cicd"},"https://github.com/apache/submarine/tree/master/dev-support/cicd")),Object(i.b)("h2",{id:"adding-contributors-role"},"Adding Contributors role"),Object(i.b)("p",null,"There are three roles (Administrators, Committers, Contributors) in the project."),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Contributors who have Contributors role can become assignee of the issues in the project."),Object(i.b)("li",{parentName:"ul"},"Committers who have Committers role can set arbitrary roles in addition to Contributors role."),Object(i.b)("li",{parentName:"ul"},"Committers who have Administrators role can edit or delete all comments, or even delete issues in addition to Committers role.")),Object(i.b)("p",null,"How to set roles"),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},"Login to ASF JIRA"),Object(i.b)("li",{parentName:"ol"},"Go to the project page (e.g. ",Object(i.b)("a",{parentName:"li",href:"https://issues.apache.org/jira/browse/SUBMARINE"},"https://issues.apache.org/jira/browse/SUBMARINE")," )"),Object(i.b)("li",{parentName:"ol"},'Hit "Administration" tab'),Object(i.b)("li",{parentName:"ol"},'Hit "Roles" tab in left side'),Object(i.b)("li",{parentName:"ol"},"Add Administrators/Committers/Contributors role")))}l.isMDXComponent=!0},209:function(e,t,r){"use strict";r.d(t,"a",(function(){return u})),r.d(t,"b",(function(){return d}));var o=r(0),n=r.n(o);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,o)}return r}function c(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){i(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function s(e,t){if(null==e)return{};var r,o,n=function(e,t){if(null==e)return{};var r,o,n={},i=Object.keys(e);for(o=0;o<i.length;o++)r=i[o],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o<i.length;o++)r=i[o],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var m=n.a.createContext({}),l=function(e){var t=n.a.useContext(m),r=t;return e&&(r="function"==typeof e?e(t):c(c({},t),e)),r},u=function(e){var t=l(e.components);return n.a.createElement(m.Provider,{value:t},e.children)},b={inlineCode:"code",wrapper:function(e){var t=e.children;return n.a.createElement(n.a.Fragment,{},t)}},p=n.a.forwardRef((function(e,t){var r=e.components,o=e.mdxType,i=e.originalType,a=e.parentName,m=s(e,["components","mdxType","originalType","parentName"]),u=l(r),p=o,d=u["".concat(a,".").concat(p)]||u[p]||b[p]||i;return r?n.a.createElement(d,c(c({ref:t},m),{},{components:r})):n.a.createElement(d,c({ref:t},m))}));function d(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=r.length,a=new Array(i);a[0]=p;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c.mdxType="string"==typeof e?e:o,a[1]=c;for(var m=2;m<i;m++)a[m]=r[m];return n.a.createElement.apply(null,a)}return n.a.createElement.apply(null,r)}p.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[74],{141:function(e,t,r){"use strict";r.r(t),r.d(t,"frontMatter",(function(){return a})),r.d(t,"metadata",(function(){return c})),r.d(t,"toc",(function(){return s})),r.d(t,"default",(function(){return l}));var o=r(3),n=r(7),i=(r(0),r(194)),a={title:"Guide for Apache Submarine Committers"},c={unversionedId:"community/HowToCommit",id:"community/HowToCommit",isDocsHomePage:!1,title:"Guide for Apache Submarine Committers",description:"\x3c!--",source:"@site/docs/community/HowToCommit.md",slug:"/community/HowToCommit",permalink:"/docs/next/community/HowToCommit",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/community/HowToCommit.md",version:"current",sidebar:"docs",previous:{title:"Bylaws",permalink:"/docs/next/community/Bylaws"},next:{title:"How To Contribute to Submarine",permalink:"/docs/next/community/contributing"}},s=[{value:"New committers",id:"new-committers",children:[]},{value:"Review",id:"review",children:[]},{value:"Reject",id:"reject",children:[]},{value:"Commit individual patches",id:"commit-individual-patches",children:[]},{value:"Adding Contributors role",id:"adding-contributors-role",children:[]}],m={toc:s};function l(e){var t=e.components,r=Object(n.a)(e,["components"]);return Object(i.b)("wrapper",Object(o.a)({},m,r,{components:t,mdxType:"MDXLayout"}),Object(i.b)("p",null,"This page contains Hadoop Core-specific guidelines for committers."),Object(i.b)("h2",{id:"new-committers"},"New committers"),Object(i.b)("p",null,"New committers are encouraged to first read Apache's generic committer documentation:"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",{parentName:"li",href:"http://www.apache.org/dev/new-committers-guide.html"},"Apache New Committer Guide")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",{parentName:"li",href:"http://www.apache.org/dev/committers.html"},"Apache Committer FAQ"))),Object(i.b)("p",null,"The first act of a new core committer is typically to add their name to the\ncredits page. This requires changing the site source in\n",Object(i.b)("a",{parentName:"p",href:"https://github.com/apache/submarine-site/blob/master/community/member.md"},"https://github.com/apache/submarine-site/blob/master/community/member.md"),". Once done,\nupdate the Submarine website as described\n",Object(i.b)("a",{parentName:"p",href:"https://github.com/apache/submarine-site/blob/asf-site/README.md"},"here"),"\n(TLDR; don't forget to regenerate the site with hugo, and commit the generated\nresults, too)."),Object(i.b)("h2",{id:"review"},"Review"),Object(i.b)("p",null,"Submarine committers should, as often as possible, attempt to review patches\nsubmitted by others. Ideally every submitted patch will get reviewed by a\ncommitter within a few days. If a committer reviews a patch they've not\nauthored, and believe it to be of sufficient quality, then they can commit the\npatch, otherwise the patch should be cancelled with a clear explanation for why\nit was rejected."),Object(i.b)("p",null,"The list of submitted patches can be found in the GitHub\n",Object(i.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/pulls"},"Pull Requests")," page.\nCommitters should scan the list from top-to-bottom,\nlooking for patches that they feel qualified to review and possibly commit."),Object(i.b)("p",null,"For non-trivial changes, it is best to get another committer to review & approve\nyour own patches before commit."),Object(i.b)("h2",{id:"reject"},"Reject"),Object(i.b)("p",null,"Patches should be rejected which do not adhere to the guidelines in\n",Object(i.b)("a",{parentName:"p",href:"/docs/next/community/contributing"},"Contribution Guidelines"),". Committers should always be\npolite to contributors and try to instruct and encourage them to contribute\nbetter patches. If a committer wishes to improve an unacceptable patch, then it\nshould first be rejected, and a new patch should be attached by the committer\nfor review."),Object(i.b)("h2",{id:"commit-individual-patches"},"Commit individual patches"),Object(i.b)("p",null,"Submarine uses git for source code version control. The writable repo is at -\n",Object(i.b)("a",{parentName:"p",href:"https://gitbox.apache.org/repos/asf/submarine.git"},"https://gitbox.apache.org/repos/asf/submarine.git")),Object(i.b)("p",null,"It is strongly recommended to use the cicd script to merge the PRs.\nSee the instructions at\n",Object(i.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/tree/master/dev-support/cicd"},"https://github.com/apache/submarine/tree/master/dev-support/cicd")),Object(i.b)("h2",{id:"adding-contributors-role"},"Adding Contributors role"),Object(i.b)("p",null,"There are three roles (Administrators, Committers, Contributors) in the project."),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Contributors who have Contributors role can become assignee of the issues in the project."),Object(i.b)("li",{parentName:"ul"},"Committers who have Committers role can set arbitrary roles in addition to Contributors role."),Object(i.b)("li",{parentName:"ul"},"Committers who have Administrators role can edit or delete all comments, or even delete issues in addition to Committers role.")),Object(i.b)("p",null,"How to set roles"),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},"Login to ASF JIRA"),Object(i.b)("li",{parentName:"ol"},"Go to the project page (e.g. ",Object(i.b)("a",{parentName:"li",href:"https://issues.apache.org/jira/browse/SUBMARINE"},"https://issues.apache.org/jira/browse/SUBMARINE")," )"),Object(i.b)("li",{parentName:"ol"},'Hit "Administration" tab'),Object(i.b)("li",{parentName:"ol"},'Hit "Roles" tab in left side'),Object(i.b)("li",{parentName:"ol"},"Add Administrators/Committers/Contributors role")))}l.isMDXComponent=!0},194:function(e,t,r){"use strict";r.d(t,"a",(function(){return u})),r.d(t,"b",(function(){return d}));var o=r(0),n=r.n(o);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,o)}return r}function c(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){i(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function s(e,t){if(null==e)return{};var r,o,n=function(e,t){if(null==e)return{};var r,o,n={},i=Object.keys(e);for(o=0;o<i.length;o++)r=i[o],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o<i.length;o++)r=i[o],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var m=n.a.createContext({}),l=function(e){var t=n.a.useContext(m),r=t;return e&&(r="function"==typeof e?e(t):c(c({},t),e)),r},u=function(e){var t=l(e.components);return n.a.createElement(m.Provider,{value:t},e.children)},b={inlineCode:"code",wrapper:function(e){var t=e.children;return n.a.createElement(n.a.Fragment,{},t)}},p=n.a.forwardRef((function(e,t){var r=e.components,o=e.mdxType,i=e.originalType,a=e.parentName,m=s(e,["components","mdxType","originalType","parentName"]),u=l(r),p=o,d=u["".concat(a,".").concat(p)]||u[p]||b[p]||i;return r?n.a.createElement(d,c(c({ref:t},m),{},{components:r})):n.a.createElement(d,c({ref:t},m))}));function d(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=r.length,a=new Array(i);a[0]=p;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c.mdxType="string"==typeof e?e:o,a[1]=c;for(var m=2;m<i;m++)a[m]=r[m];return n.a.createElement.apply(null,a)}return n.a.createElement.apply(null,r)}p.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/a5eec98c.b3504144.js b/a5eec98c.22ba4dd4.js
similarity index 98%
rename from a5eec98c.b3504144.js
rename to a5eec98c.22ba4dd4.js
index dfc98a6..6dc075b 100644
--- a/a5eec98c.b3504144.js
+++ b/a5eec98c.22ba4dd4.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[86],{153:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return i})),n.d(t,"metadata",(function(){return l})),n.d(t,"toc",(function(){return s})),n.d(t,"default",(function(){return b}));var o=n(3),r=n(7),a=(n(0),n(209)),i={title:"Storage Implementation"},l={unversionedId:"designDocs/storage-implementation",id:"designDocs/storage-implementation",isDocsHomePage:!1,title:"Storage Implementation",description:"\x3c!--",source:"@site/docs/designDocs/storage-implementation.md",slug:"/designDocs/storage-implementation",permalink:"/docs/next/designDocs/storage-implementation",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/designDocs/storage-implementation.md",version:"current",sidebar:"docs",previous:{title:"Notebook Implementation",permalink:"/docs/next/designDocs/notebook-implementation"},next:{title:"Submarine Server Implementation",permalink:"/docs/next/designDocs/submarine-server/architecture"}},s=[{value:"ML-related objects and their storages",id:"ml-related-objects-and-their-storages",children:[{value:"Implementation considerations for ML-related objects",id:"implementation-considerations-for-ml-related-objects",children:[]},{value:"Detailed discussions",id:"detailed-discussions",children:[]}]},{value:"System-related metrics/logs and their storages",id:"system-related-metricslogs-and-their-storages",children:[]},{value:"Attachable Volumes",id:"attachable-volumes",children:[]},{value:"In-scope / Out-of-scope",id:"in-scope--out-of-scope",children:[]}],c={toc:s};function b(e){var t=e.components,n=Object(r.a)(e,["components"]);return Object(a.b)("wrapper",Object(o.a)({},c,n,{components:t,mdxType:"MDXLayout"}),Object(a.b)("h2",{id:"ml-related-objects-and-their-storages"},"ML-related objects and their storages"),Object(a.b)("p",null,"First let's look at what user will interact for most of the time: "),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},"Notebook "),Object(a.b)("li",{parentName:"ul"},"Experiment"),Object(a.b)("li",{parentName:"ul"},"Model Servings")),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},"\n\n                              +---------+    +------------+\n                              |Logs     |<--+|Notebook    |\n      +----------+            +---------+    +------------+     +----------------+\n      |Trackings |                        <-+|Experiment  |<--+>|Model Artifacts |\n      +----------+     +-----------------+   +------------+     +----------------+\n      +----------+<---+|ML-related Metric|<--+Servings    |\n      |tf.events |     +-----------------+   +------------+\n      +----------+                                 ^              +-----------------+\n                                                   +              | Environments    |\n                                        +----------------------+  |                 |\n            +-----------------+         | Submarine Metastore  |  |  Dependencies   |\n            |Code             |         +----------------------+  |                 |\n            +-----------------+         |Experiment Meta       |  |   Docker Images |\n                                        +----------------------+  +-----------------+\n                                        |Model Store Meta      |\n                                        +----------------------+\n                                        |Model Serving Meta    |\n                                        +----------------------+\n                                        |Notebook meta         |\n                                        +----------------------+\n                                        |Experiment Templates  |\n                                        +----------------------+\n                                        |Environments Meta     |\n                                        +----------------------+\n")),Object(a.b)("p",null,"First of all, all the notebook-sessions / experiments / model-serving instances) are more or less interact with following storage objects:"),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},"Logs for these tasks for troubleshooting. "),Object(a.b)("li",{parentName:"ul"},"ML-related metrics such as loss, epoch, etc. (in contrast of system metrics such as CPU/memory usage, etc.)",Object(a.b)("ul",{parentName:"li"},Object(a.b)("li",{parentName:"ul"},"There're different types of ML-related metrics, for Tensorflow/pytorch, they can use tf.events and get visualizations on tensorboard. "),Object(a.b)("li",{parentName:"ul"},"Or they can use tracking APIs (such as Submarine tracking, mlflow tracking, etc.) to output customized tracking results for non TF/Pytorch workloads. "))),Object(a.b)("li",{parentName:"ul"},"Training jobs of experiment typically generate model artifacts (files) which need persisted, and both of notebook, model serving needs to load model artifacts from persistent storage. "),Object(a.b)("li",{parentName:"ul"},"There're various of meta information, such as experiment meta, model registry, model serving, notebook, experiment, environment, etc. We need be able to read these meta information back."),Object(a.b)("li",{parentName:"ul"},"We also have code for experiment (like training/batch-prediction), notebook (ipynb), and model servings."),Object(a.b)("li",{parentName:"ul"},"And notebook/experiments/model-serving need depend on environments (dependencies such as pip, and Docker Images).")),Object(a.b)("h3",{id:"implementation-considerations-for-ml-related-objects"},"Implementation considerations for ML-related objects"),Object(a.b)("table",null,Object(a.b)("thead",{parentName:"table"},Object(a.b)("tr",{parentName:"thead"},Object(a.b)("th",{parentName:"tr",align:null},"Object Type"),Object(a.b)("th",{parentName:"tr",align:null},"Characteristics"),Object(a.b)("th",{parentName:"tr",align:null},"Where to store"))),Object(a.b)("tbody",{parentName:"table"},Object(a.b)("tr",{parentName:"tbody"},Object(a.b)("td",{parentName:"tr",align:null},"Metrics: tf.events"),Object(a.b)("td",{parentName:"tr",align:null},"Time series data with k/v, appendable to file"),Object(a.b)("td",{parentName:"tr",align:null},"Local/EBS, HDFS, Cloud Blob Storage")),Object(a.b)("tr",{parentName:"tbody"},Object(a.b)("td",{parentName:"tr",align:null},"Metrics: other tracking metrics"),Object(a.b)("td",{parentName:"tr",align:null},"Time series data with k/v, appendable to file"),Object(a.b)("td",{parentName:"tr",align:null},"Local, HDFS, Cloud Blob Storage, Database")),Object(a.b)("tr",{parentName:"tbody"},Object(a.b)("td",{parentName:"tr",align:null},"Logs"),Object(a.b)("td",{parentName:"tr",align:null},"Large volumes, #files are potentially huge."),Object(a.b)("td",{parentName:"tr",align:null},"Local (temporary), HDFS (need aggregation), Cloud Blob Storage")),Object(a.b)("tr",{parentName:"tbody"},Object(a.b)("td",{parentName:"tr",align:null},"Submarine Metastore"),Object(a.b)("td",{parentName:"tr",align:null},"CRUD operations for small meta data."),Object(a.b)("td",{parentName:"tr",align:null},"Database")),Object(a.b)("tr",{parentName:"tbody"},Object(a.b)("td",{parentName:"tr",align:null},"Model Artifacts"),Object(a.b)("td",{parentName:"tr",align:null},"Size varies for model (from KBs to GBs). #files are potentially huge."),Object(a.b)("td",{parentName:"tr",align:null},"HDFS, Cloud Blob Storage")),Object(a.b)("tr",{parentName:"tbody"},Object(a.b)("td",{parentName:"tr",align:null},"Code"),Object(a.b)("td",{parentName:"tr",align:null},"Need version control. (Please find detailed discussions below for code storage and localization)"),Object(a.b)("td",{parentName:"tr",align:null},"Tarball on HDFS/Cloud Blog Storage, or Git")),Object(a.b)("tr",{parentName:"tbody"},Object(a.b)("td",{parentName:"tr",align:null},"Environment (Dependencies, Docker Image)"),Object(a.b)("td",{parentName:"tr",align:null}),Object(a.b)("td",{parentName:"tr",align:null},"Public/private environment repo (like Conda channel), Docker registry.")))),Object(a.b)("h3",{id:"detailed-discussions"},"Detailed discussions"),Object(a.b)("h4",{id:"store-code-for-experimentnotebookmodel-serving"},"Store code for experiment/notebook/model-serving"),Object(a.b)("p",null,"There're following ways to get experiment code: "),Object(a.b)("p",null,Object(a.b)("strong",{parentName:"p"},"1) Code is part of Git repo:")," (",Object(a.b)("strong",{parentName:"p"},Object(a.b)("em",{parentName:"strong"},Object(a.b)("u",null,"Recommended"))),")"),Object(a.b)("p",null,"This is our recommended approach, once code is part of Git, it will be stored in version control, any change will be tracked, and much easier for users to trace back what change triggered a new bug, etc."),Object(a.b)("p",null,Object(a.b)("strong",{parentName:"p"},"2) Code is part of Docker image:")," "),Object(a.b)("p",null,Object(a.b)("strong",{parentName:"p"},Object(a.b)("em",{parentName:"strong"},"This is an anti-pattern and we will NOT recommend you to use it")),", Docker image can be used to include ANYTHING, like dependencies, the code you will execute, or even data. But this doesn't mean you should do it. We recommend to use Docker image ONLY for libraries/dependencies."),Object(a.b)("p",null,"Making code to be part of Docker image makes hard to edit code (if you want to update a value in your Python file, you will have to recreate the Docker image, push it and rerun it)."),Object(a.b)("p",null,Object(a.b)("strong",{parentName:"p"},"3) Code is part of S3/HDFS/ABFS:")," "),Object(a.b)("p",null,"User may want to store their training code to a tarball on a shared storage. Submarine need to download code from remote storage to the launched container before running the code. "),Object(a.b)("h4",{id:"localization-of-experimentnotebookmodel-serving-code"},"Localization of experiment/notebook/model-serving code"),Object(a.b)("p",null,"To make user experiences keeps same across different environment, we will localize code to a same folder after the container is launched, preferably ",Object(a.b)("inlineCode",{parentName:"p"},"/code")),Object(a.b)("p",null,"For example, there's a git repo need to be synced up for an experiment/notebook/model-serving (example above):"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},'experiment: #Or notebook, model-serving\n       name: "abc",\n       environment: "team-default-ml-env"\n       ... (other fields)\n             code:\n           sync_mode: git\n           url: "https://foo.com/training-job.git" \n')),Object(a.b)("p",null,"After localize, ",Object(a.b)("inlineCode",{parentName:"p"},"training-job/")," will be placed under ",Object(a.b)("inlineCode",{parentName:"p"},"/code")," "),Object(a.b)("p",null,"When we running on K8s environment, we can use K8s's initContainer and emptyDir to do these things for us. K8s POD spec (generated by Submarine server instead of user, user should NEVER edit K8s spec, that's too unfriendly to data-scientists): "),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},'apiVersion: v1\nkind: Pod\nmetadata:\n  name: experiment-abc\nspec:\n  containers:\n  - name: experiment-task\n    image: training-job\n    volumeMounts:\n    - name: code-dir\n      mountPath: /code\n  initContainers:\n  - name: git-localize\n    image: git-sync\n    command: "git clone .. /code/"\n    volumeMounts:\n    - name: code-dir\n      mountPath: /code\n  volumes:\n  - name: code-dir\n    emptyDir: {}\n')),Object(a.b)("p",null,"The above K8s spec create a code-dir and mount it to ",Object(a.b)("inlineCode",{parentName:"p"},"/code")," to launched containers. The initContainer ",Object(a.b)("inlineCode",{parentName:"p"},"git-localize")," uses ",Object(a.b)("inlineCode",{parentName:"p"},"https://github.com/kubernetes/git-sync")," to do the sync up. (If other storages are used such as s3, we can use similar initContainer approach to download contents)"),Object(a.b)("h2",{id:"system-related-metricslogs-and-their-storages"},"System-related metrics/logs and their storages"),Object(a.b)("p",null,"Other than ML-related objects, we have system-related objects, including: "),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},"Daemon logs (like logs of Submarine server). "),Object(a.b)("li",{parentName:"ul"},"Logs for other dependency components (like Kubernetes logs when running on K8s). "),Object(a.b)("li",{parentName:"ul"},"System metrics (Physical resource usages by daemons, launched training containers, etc.). ")),Object(a.b)("p",null,"All these information should be handled by 3rd party system, such as Grafana, Prometheus, etc. And system admins are responsible to setup these infrastructures, dashboard. Users of submarine should NOT interact with system related metrics/logs. It is system admin's responsibility."),Object(a.b)("h2",{id:"attachable-volumes"},"Attachable Volumes"),Object(a.b)("p",null,"It is possible user has needs to have an attachable volume for their experiment / notebook, this is especially useful for notebook storage, since contents of notebook can be automatically saved, and it can be used as user's home folder. "),Object(a.b)("p",null,"Downside of attachable volume is, it is not versioned, even notebook is mainly used for adhoc exploring tasks, an unversioned notebook file can lead to maintenance issues in the future. "),Object(a.b)("p",null,"Since this is a common requirement, we can consider to support attachable volumes in Submarine in a long run, but with relatively lower priority."),Object(a.b)("h2",{id:"in-scope--out-of-scope"},"In-scope / Out-of-scope"),Object(a.b)("p",null," Describe what Submarine project should own and what Submarine project should NOT own."))}b.isMDXComponent=!0},209:function(e,t,n){"use strict";n.d(t,"a",(function(){return d})),n.d(t,"b",(function(){return u}));var o=n(0),r=n.n(o);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,o,r=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o<a.length;o++)n=a[o],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o<a.length;o++)n=a[o],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var c=r.a.createContext({}),b=function(e){var t=r.a.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},d=function(e){var t=b(e.components);return r.a.createElement(c.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},p=r.a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,i=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),d=b(n),p=o,u=d["".concat(i,".").concat(p)]||d[p]||m[p]||a;return n?r.a.createElement(u,l(l({ref:t},c),{},{components:n})):r.a.createElement(u,l({ref:t},c))}));function u(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,i=new Array(a);i[0]=p;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l.mdxType="string"==typeof e?e:o,i[1]=l;for(var c=2;c<a;c++)i[c]=n[c];return r.a.createElement.apply(null,i)}return r.a.createElement.apply(null,n)}p.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[75],{142:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return i})),n.d(t,"metadata",(function(){return l})),n.d(t,"toc",(function(){return s})),n.d(t,"default",(function(){return b}));var o=n(3),r=n(7),a=(n(0),n(194)),i={title:"Storage Implementation"},l={unversionedId:"designDocs/storage-implementation",id:"designDocs/storage-implementation",isDocsHomePage:!1,title:"Storage Implementation",description:"\x3c!--",source:"@site/docs/designDocs/storage-implementation.md",slug:"/designDocs/storage-implementation",permalink:"/docs/next/designDocs/storage-implementation",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/designDocs/storage-implementation.md",version:"current",sidebar:"docs",previous:{title:"Notebook Implementation",permalink:"/docs/next/designDocs/notebook-implementation"},next:{title:"Submarine Server Implementation",permalink:"/docs/next/designDocs/submarine-server/architecture"}},s=[{value:"ML-related objects and their storages",id:"ml-related-objects-and-their-storages",children:[{value:"Implementation considerations for ML-related objects",id:"implementation-considerations-for-ml-related-objects",children:[]},{value:"Detailed discussions",id:"detailed-discussions",children:[]}]},{value:"System-related metrics/logs and their storages",id:"system-related-metricslogs-and-their-storages",children:[]},{value:"Attachable Volumes",id:"attachable-volumes",children:[]},{value:"In-scope / Out-of-scope",id:"in-scope--out-of-scope",children:[]}],c={toc:s};function b(e){var t=e.components,n=Object(r.a)(e,["components"]);return Object(a.b)("wrapper",Object(o.a)({},c,n,{components:t,mdxType:"MDXLayout"}),Object(a.b)("h2",{id:"ml-related-objects-and-their-storages"},"ML-related objects and their storages"),Object(a.b)("p",null,"First let's look at what user will interact for most of the time: "),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},"Notebook "),Object(a.b)("li",{parentName:"ul"},"Experiment"),Object(a.b)("li",{parentName:"ul"},"Model Servings")),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},"\n\n                              +---------+    +------------+\n                              |Logs     |<--+|Notebook    |\n      +----------+            +---------+    +------------+     +----------------+\n      |Trackings |                        <-+|Experiment  |<--+>|Model Artifacts |\n      +----------+     +-----------------+   +------------+     +----------------+\n      +----------+<---+|ML-related Metric|<--+Servings    |\n      |tf.events |     +-----------------+   +------------+\n      +----------+                                 ^              +-----------------+\n                                                   +              | Environments    |\n                                        +----------------------+  |                 |\n            +-----------------+         | Submarine Metastore  |  |  Dependencies   |\n            |Code             |         +----------------------+  |                 |\n            +-----------------+         |Experiment Meta       |  |   Docker Images |\n                                        +----------------------+  +-----------------+\n                                        |Model Store Meta      |\n                                        +----------------------+\n                                        |Model Serving Meta    |\n                                        +----------------------+\n                                        |Notebook meta         |\n                                        +----------------------+\n                                        |Experiment Templates  |\n                                        +----------------------+\n                                        |Environments Meta     |\n                                        +----------------------+\n")),Object(a.b)("p",null,"First of all, all the notebook-sessions / experiments / model-serving instances) are more or less interact with following storage objects:"),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},"Logs for these tasks for troubleshooting. "),Object(a.b)("li",{parentName:"ul"},"ML-related metrics such as loss, epoch, etc. (in contrast of system metrics such as CPU/memory usage, etc.)",Object(a.b)("ul",{parentName:"li"},Object(a.b)("li",{parentName:"ul"},"There're different types of ML-related metrics, for Tensorflow/pytorch, they can use tf.events and get visualizations on tensorboard. "),Object(a.b)("li",{parentName:"ul"},"Or they can use tracking APIs (such as Submarine tracking, mlflow tracking, etc.) to output customized tracking results for non TF/Pytorch workloads. "))),Object(a.b)("li",{parentName:"ul"},"Training jobs of experiment typically generate model artifacts (files) which need persisted, and both of notebook, model serving needs to load model artifacts from persistent storage. "),Object(a.b)("li",{parentName:"ul"},"There're various of meta information, such as experiment meta, model registry, model serving, notebook, experiment, environment, etc. We need be able to read these meta information back."),Object(a.b)("li",{parentName:"ul"},"We also have code for experiment (like training/batch-prediction), notebook (ipynb), and model servings."),Object(a.b)("li",{parentName:"ul"},"And notebook/experiments/model-serving need depend on environments (dependencies such as pip, and Docker Images).")),Object(a.b)("h3",{id:"implementation-considerations-for-ml-related-objects"},"Implementation considerations for ML-related objects"),Object(a.b)("table",null,Object(a.b)("thead",{parentName:"table"},Object(a.b)("tr",{parentName:"thead"},Object(a.b)("th",{parentName:"tr",align:null},"Object Type"),Object(a.b)("th",{parentName:"tr",align:null},"Characteristics"),Object(a.b)("th",{parentName:"tr",align:null},"Where to store"))),Object(a.b)("tbody",{parentName:"table"},Object(a.b)("tr",{parentName:"tbody"},Object(a.b)("td",{parentName:"tr",align:null},"Metrics: tf.events"),Object(a.b)("td",{parentName:"tr",align:null},"Time series data with k/v, appendable to file"),Object(a.b)("td",{parentName:"tr",align:null},"Local/EBS, HDFS, Cloud Blob Storage")),Object(a.b)("tr",{parentName:"tbody"},Object(a.b)("td",{parentName:"tr",align:null},"Metrics: other tracking metrics"),Object(a.b)("td",{parentName:"tr",align:null},"Time series data with k/v, appendable to file"),Object(a.b)("td",{parentName:"tr",align:null},"Local, HDFS, Cloud Blob Storage, Database")),Object(a.b)("tr",{parentName:"tbody"},Object(a.b)("td",{parentName:"tr",align:null},"Logs"),Object(a.b)("td",{parentName:"tr",align:null},"Large volumes, #files are potentially huge."),Object(a.b)("td",{parentName:"tr",align:null},"Local (temporary), HDFS (need aggregation), Cloud Blob Storage")),Object(a.b)("tr",{parentName:"tbody"},Object(a.b)("td",{parentName:"tr",align:null},"Submarine Metastore"),Object(a.b)("td",{parentName:"tr",align:null},"CRUD operations for small meta data."),Object(a.b)("td",{parentName:"tr",align:null},"Database")),Object(a.b)("tr",{parentName:"tbody"},Object(a.b)("td",{parentName:"tr",align:null},"Model Artifacts"),Object(a.b)("td",{parentName:"tr",align:null},"Size varies for model (from KBs to GBs). #files are potentially huge."),Object(a.b)("td",{parentName:"tr",align:null},"HDFS, Cloud Blob Storage")),Object(a.b)("tr",{parentName:"tbody"},Object(a.b)("td",{parentName:"tr",align:null},"Code"),Object(a.b)("td",{parentName:"tr",align:null},"Need version control. (Please find detailed discussions below for code storage and localization)"),Object(a.b)("td",{parentName:"tr",align:null},"Tarball on HDFS/Cloud Blog Storage, or Git")),Object(a.b)("tr",{parentName:"tbody"},Object(a.b)("td",{parentName:"tr",align:null},"Environment (Dependencies, Docker Image)"),Object(a.b)("td",{parentName:"tr",align:null}),Object(a.b)("td",{parentName:"tr",align:null},"Public/private environment repo (like Conda channel), Docker registry.")))),Object(a.b)("h3",{id:"detailed-discussions"},"Detailed discussions"),Object(a.b)("h4",{id:"store-code-for-experimentnotebookmodel-serving"},"Store code for experiment/notebook/model-serving"),Object(a.b)("p",null,"There're following ways to get experiment code: "),Object(a.b)("p",null,Object(a.b)("strong",{parentName:"p"},"1) Code is part of Git repo:")," (",Object(a.b)("strong",{parentName:"p"},Object(a.b)("em",{parentName:"strong"},Object(a.b)("u",null,"Recommended"))),")"),Object(a.b)("p",null,"This is our recommended approach, once code is part of Git, it will be stored in version control, any change will be tracked, and much easier for users to trace back what change triggered a new bug, etc."),Object(a.b)("p",null,Object(a.b)("strong",{parentName:"p"},"2) Code is part of Docker image:")," "),Object(a.b)("p",null,Object(a.b)("strong",{parentName:"p"},Object(a.b)("em",{parentName:"strong"},"This is an anti-pattern and we will NOT recommend you to use it")),", Docker image can be used to include ANYTHING, like dependencies, the code you will execute, or even data. But this doesn't mean you should do it. We recommend to use Docker image ONLY for libraries/dependencies."),Object(a.b)("p",null,"Making code to be part of Docker image makes hard to edit code (if you want to update a value in your Python file, you will have to recreate the Docker image, push it and rerun it)."),Object(a.b)("p",null,Object(a.b)("strong",{parentName:"p"},"3) Code is part of S3/HDFS/ABFS:")," "),Object(a.b)("p",null,"User may want to store their training code to a tarball on a shared storage. Submarine need to download code from remote storage to the launched container before running the code. "),Object(a.b)("h4",{id:"localization-of-experimentnotebookmodel-serving-code"},"Localization of experiment/notebook/model-serving code"),Object(a.b)("p",null,"To make user experiences keeps same across different environment, we will localize code to a same folder after the container is launched, preferably ",Object(a.b)("inlineCode",{parentName:"p"},"/code")),Object(a.b)("p",null,"For example, there's a git repo need to be synced up for an experiment/notebook/model-serving (example above):"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},'experiment: #Or notebook, model-serving\n       name: "abc",\n       environment: "team-default-ml-env"\n       ... (other fields)\n             code:\n           sync_mode: git\n           url: "https://foo.com/training-job.git" \n')),Object(a.b)("p",null,"After localize, ",Object(a.b)("inlineCode",{parentName:"p"},"training-job/")," will be placed under ",Object(a.b)("inlineCode",{parentName:"p"},"/code")," "),Object(a.b)("p",null,"When we running on K8s environment, we can use K8s's initContainer and emptyDir to do these things for us. K8s POD spec (generated by Submarine server instead of user, user should NEVER edit K8s spec, that's too unfriendly to data-scientists): "),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},'apiVersion: v1\nkind: Pod\nmetadata:\n  name: experiment-abc\nspec:\n  containers:\n  - name: experiment-task\n    image: training-job\n    volumeMounts:\n    - name: code-dir\n      mountPath: /code\n  initContainers:\n  - name: git-localize\n    image: git-sync\n    command: "git clone .. /code/"\n    volumeMounts:\n    - name: code-dir\n      mountPath: /code\n  volumes:\n  - name: code-dir\n    emptyDir: {}\n')),Object(a.b)("p",null,"The above K8s spec create a code-dir and mount it to ",Object(a.b)("inlineCode",{parentName:"p"},"/code")," to launched containers. The initContainer ",Object(a.b)("inlineCode",{parentName:"p"},"git-localize")," uses ",Object(a.b)("inlineCode",{parentName:"p"},"https://github.com/kubernetes/git-sync")," to do the sync up. (If other storages are used such as s3, we can use similar initContainer approach to download contents)"),Object(a.b)("h2",{id:"system-related-metricslogs-and-their-storages"},"System-related metrics/logs and their storages"),Object(a.b)("p",null,"Other than ML-related objects, we have system-related objects, including: "),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},"Daemon logs (like logs of Submarine server). "),Object(a.b)("li",{parentName:"ul"},"Logs for other dependency components (like Kubernetes logs when running on K8s). "),Object(a.b)("li",{parentName:"ul"},"System metrics (Physical resource usages by daemons, launched training containers, etc.). ")),Object(a.b)("p",null,"All these information should be handled by 3rd party system, such as Grafana, Prometheus, etc. And system admins are responsible to setup these infrastructures, dashboard. Users of submarine should NOT interact with system related metrics/logs. It is system admin's responsibility."),Object(a.b)("h2",{id:"attachable-volumes"},"Attachable Volumes"),Object(a.b)("p",null,"It is possible user has needs to have an attachable volume for their experiment / notebook, this is especially useful for notebook storage, since contents of notebook can be automatically saved, and it can be used as user's home folder. "),Object(a.b)("p",null,"Downside of attachable volume is, it is not versioned, even notebook is mainly used for adhoc exploring tasks, an unversioned notebook file can lead to maintenance issues in the future. "),Object(a.b)("p",null,"Since this is a common requirement, we can consider to support attachable volumes in Submarine in a long run, but with relatively lower priority."),Object(a.b)("h2",{id:"in-scope--out-of-scope"},"In-scope / Out-of-scope"),Object(a.b)("p",null," Describe what Submarine project should own and what Submarine project should NOT own."))}b.isMDXComponent=!0},194:function(e,t,n){"use strict";n.d(t,"a",(function(){return d})),n.d(t,"b",(function(){return u}));var o=n(0),r=n.n(o);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,o,r=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o<a.length;o++)n=a[o],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o<a.length;o++)n=a[o],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var c=r.a.createContext({}),b=function(e){var t=r.a.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},d=function(e){var t=b(e.components);return r.a.createElement(c.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},p=r.a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,i=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),d=b(n),p=o,u=d["".concat(i,".").concat(p)]||d[p]||m[p]||a;return n?r.a.createElement(u,l(l({ref:t},c),{},{components:n})):r.a.createElement(u,l({ref:t},c))}));function u(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,i=new Array(a);i[0]=p;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l.mdxType="string"==typeof e?e:o,i[1]=l;for(var c=2;c<a;c++)i[c]=n[c];return r.a.createElement.apply(null,i)}return r.a.createElement.apply(null,n)}p.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/a658e4e7.a86559e6.js b/a658e4e7.36e4cf94.js
similarity index 95%
rename from a658e4e7.a86559e6.js
rename to a658e4e7.36e4cf94.js
index 9cad2dd..9a8076e 100644
--- a/a658e4e7.a86559e6.js
+++ b/a658e4e7.36e4cf94.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[87],{154:function(e,t,a){"use strict";a.r(t),a.d(t,"frontMatter",(function(){return c})),a.d(t,"metadata",(function(){return o})),a.d(t,"toc",(function(){return u})),a.d(t,"default",(function(){return s}));var r=a(3),i=a(7),n=(a(0),a(209)),c={title:"How To Contribute to Submarine"},o={unversionedId:"community/contributing",id:"version-0.6.0/community/contributing",isDocsHomePage:!1,title:"How To Contribute to Submarine",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/community/contributing.md",slug:"/community/contributing",permalink:"/docs/community/contributing",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/community/contributing.md",version:"0.6.0",sidebar:"docs",previous:{title:"Guide for Apache Submarine Committers",permalink:"/docs/community/HowToCommit"},next:{title:"Architecture and Requirment",permalink:"/docs/designDocs/architecture-and-requirements"}},u=[{value:"Preface",id:"preface",children:[]},{value:"Build Submarine",id:"build-submarine",children:[]},{value:"Creating patches",id:"creating-patches",children:[{value:"Step1: Fork apache/submarine github repository (first time)",id:"step1-fork-apachesubmarine-github-repository-first-time",children:[]},{value:"Step2: Clone the Submarine to your local machine",id:"step2-clone-the-submarine-to-your-local-machine",children:[]},{value:"Step3: Create a new Jira in Submarine project",id:"step3-create-a-new-jira-in-submarine-project",children:[]},{value:"Step4: Create a local branch for your contribution",id:"step4-create-a-local-branch-for-your-contribution",children:[]},{value:"Step5: Develop &amp; Create commits",id:"step5-develop--create-commits",children:[]},{value:"Step6: Syncing your local branch with upstream/master",id:"step6-syncing-your-local-branch-with-upstreammaster",children:[]},{value:"Step7: Push your local branch to your personal fork",id:"step7-push-your-local-branch-to-your-personal-fork",children:[]},{value:"Step8: Check GitHub Actions status of your personal commit",id:"step8-check-github-actions-status-of-your-personal-commit",children:[]},{value:"Step9: Create a pull request on github UI",id:"step9-create-a-pull-request-on-github-ui",children:[]},{value:"Step10: Check GitHub Actions status of your pull request in apache/submarine",id:"step10-check-github-actions-status-of-your-pull-request-in-apachesubmarine",children:[]},{value:"Step11: The Review Process",id:"step11-the-review-process",children:[]},{value:"Step12: Address review comments",id:"step12-address-review-comments",children:[]},{value:"Code convention",id:"code-convention",children:[]}]}],l={toc:u};function s(e){var t=e.components,c=Object(i.a)(e,["components"]);return Object(n.b)("wrapper",Object(r.a)({},l,c,{components:t,mdxType:"MDXLayout"}),Object(n.b)("p",null,"There are several ways to contribute to Submarine:"),Object(n.b)("ol",null,Object(n.b)("li",{parentName:"ol"},"Develop and Commit source code (This document will primarily focus on this.)"),Object(n.b)("li",{parentName:"ol"},"Report issues (You can report issues with both Github or Jira.)"),Object(n.b)("li",{parentName:"ol"},"Discuss/Answer questions on the mailing list"),Object(n.b)("li",{parentName:"ol"},"Share use cases")),Object(n.b)("h2",{id:"preface"},"Preface"),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},Object(n.b)("strong",{parentName:"li"},"Apache Submarine")," is an ",Object(n.b)("a",{parentName:"li",href:"https://github.com/apache/submarine/blob/master/LICENSE"},"Apache 2.0 License")," Software. Contributing to Submarine means you agree to the Apache 2.0 License. "),Object(n.b)("li",{parentName:"ul"},"Please read ",Object(n.b)("a",{parentName:"li",href:"http://www.apache.org/foundation/policies/conduct.html"},"Code of Conduct")," carefully."),Object(n.b)("li",{parentName:"ul"},"The document ",Object(n.b)("a",{parentName:"li",href:"http://www.apache.org/foundation/how-it-works.html"},"How It Works")," can help you understand Apache Software Foundation further.")),Object(n.b)("h2",{id:"build-submarine"},"Build Submarine"),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},Object(n.b)("a",{parentName:"li",href:"https://github.com/apache/submarine/blob/master/website/docs/devDocs/BuildFromCode.md"},"Build From Code"))),Object(n.b)("h2",{id:"creating-patches"},"Creating patches"),Object(n.b)("p",null,"Submarine follows ",Object(n.b)("a",{parentName:"p",href:"https://github.com/sevntu-checkstyle/sevntu.checkstyle/wiki/Development-workflow-with-Git:-Fork,-Branching,-Commits,-and-Pull-Request"},"Fork & Pull")," model."),Object(n.b)("h3",{id:"step1-fork-apachesubmarine-github-repository-first-time"},"Step1: Fork apache/submarine github repository (first time)"),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},"Visit ",Object(n.b)("a",{parentName:"li",href:"https://github.com/apache/submarine"},"https://github.com/apache/submarine")),Object(n.b)("li",{parentName:"ul"},"Click the ",Object(n.b)("inlineCode",{parentName:"li"},"Fork")," button to create a fork of the repository")),Object(n.b)("h3",{id:"step2-clone-the-submarine-to-your-local-machine"},"Step2: Clone the Submarine to your local machine"),Object(n.b)("pre",null,Object(n.b)("code",{parentName:"pre",className:"language-sh"},"# USERNAME \u2013 your Github user account name.\ngit clone git@github.com:${USERNAME}/submarine.git\n# or: git clone https://github.com/${USERNAME}/submarine.git \n \ncd submarine\n# set upstream \ngit remote add upstream git@github.com:apache/submarine.git\n# or: git remote add upstream https://github.com/apache/submarine.git\n\n# Don't push to the upstream master.\ngit remote set-url --push upstream no_push\n\n# Check upstream/origin:\n# origin    git@github.com:${USERNAME}/submarine.git (fetch)\n# origin    git@github.com:${USERNAME}/submarine.git (push)\n# upstream  git@github.com:apache/submarine.git (fetch)\n# upstream  no_push (push)\ngit remote -v\n")),Object(n.b)("h3",{id:"step3-create-a-new-jira-in-submarine-project"},"Step3: Create a new Jira in Submarine project"),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},"New contributors need privilege to create JIRA issues. Please email ",Object(n.b)("a",{parentName:"li",href:"mailto:kaihsun@apache.org"},"kaihsun@apache.org"),' with your Jira username. In addition, the email title should be "',"[New Submarine Contributor]",'".'),Object(n.b)("li",{parentName:"ul"},"Check ",Object(n.b)("a",{parentName:"li",href:"https://issues.apache.org/jira/projects/SUBMARINE/issues/SUBMARINE-748?filter=allopenissues"},"Jira issue tracker")," for existing issues."),Object(n.b)("li",{parentName:"ul"},"Create a new Jira issue in Submarine project. When the issue is created, a Jira number (eg. SUBMARINE-748) will be assigned to the issue automatically.\n",Object(n.b)("img",{alt:"jira_number_example",src:a(245).default}))),Object(n.b)("h3",{id:"step4-create-a-local-branch-for-your-contribution"},"Step4: Create a local branch for your contribution"),Object(n.b)("pre",null,Object(n.b)("code",{parentName:"pre",className:"language-sh"},"cd submarine\n\n# Make your local master up-to-date\ngit checkout master\ngit fetch upstream \ngit rebase upstream/master\n\n# Create a new branch fro issue SUBMARINE-${jira_number}\ngit checkout -b SUBMARINE-${jira_number}\n\n# Example: git checkout -b SUBMARINE-748 \n")),Object(n.b)("h3",{id:"step5-develop--create-commits"},"Step5: Develop & Create commits"),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},"You can edit the code on the ",Object(n.b)("inlineCode",{parentName:"li"},"SUBMARINE-${jira_number}")," branch. (Coding Style: ",Object(n.b)("a",{parentName:"li",href:"#code-convention"},"Code Convention"),")"),Object(n.b)("li",{parentName:"ul"},"Create commits")),Object(n.b)("pre",null,Object(n.b)("code",{parentName:"pre",className:"language-sh"},'git add ${edited files}\ngit commit -m "SUBMARINE-${jira_number}. ${Commit Message}"\n# Example: git commit -m "SUBMARINE-748. Update Contributing guide" \n')),Object(n.b)("h3",{id:"step6-syncing-your-local-branch-with-upstreammaster"},"Step6: Syncing your local branch with upstream/master"),Object(n.b)("pre",null,Object(n.b)("code",{parentName:"pre",className:"language-sh"},"# On SUBMARINE-${jira_number} branch\ngit fetch upstream\ngit rebase upstream/master\n")),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},"Please do not use ",Object(n.b)("inlineCode",{parentName:"li"},"git pull")," to synchronize your local branch. Because ",Object(n.b)("inlineCode",{parentName:"li"},"git pull")," does a merge to create merged commits, these will make commit history messy.")),Object(n.b)("h3",{id:"step7-push-your-local-branch-to-your-personal-fork"},"Step7: Push your local branch to your personal fork"),Object(n.b)("pre",null,Object(n.b)("code",{parentName:"pre",className:"language-sh"},"git push origin SUBMARINE-${jira_number} \n")),Object(n.b)("h3",{id:"step8-check-github-actions-status-of-your-personal-commit"},"Step8: Check GitHub Actions status of your personal commit"),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},"Visit ",Object(n.b)("inlineCode",{parentName:"li"},"https://github.com/${USERNAME}/submarine/actions")),Object(n.b)("li",{parentName:"ul"},"Please make sure your new commits can pass all workflows before creating a pull request.")),Object(n.b)("p",null,Object(n.b)("img",{alt:"check_ci_pass",src:a(246).default})),Object(n.b)("h3",{id:"step9-create-a-pull-request-on-github-ui"},"Step9: Create a pull request on github UI"),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},"Visit your fork at ",Object(n.b)("inlineCode",{parentName:"li"},"https://github.com/${USERNAME}/submarine.git")),Object(n.b)("li",{parentName:"ul"},"Click ",Object(n.b)("inlineCode",{parentName:"li"},"Compare & Pull Request")," button to create pull request.\n",Object(n.b)("img",{alt:"compare_pull_request_button",src:a(247).default}))),Object(n.b)("h4",{id:"pull-request-template"},"Pull Request template"),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},Object(n.b)("a",{parentName:"li",href:"https://github.com/apache/submarine/blob/bd7578cc28f8280f9170938d4469fcc965e24a89/.github/PULL_REQUEST_TEMPLATE"},"Pull request template")),Object(n.b)("li",{parentName:"ul"},"Filling the template thoroughly can improve the speed of the review process. Example: ")),Object(n.b)("p",null,Object(n.b)("img",{alt:"pull_request_template_example",src:a(248).default})),Object(n.b)("h3",{id:"step10-check-github-actions-status-of-your-pull-request-in-apachesubmarine"},"Step10: Check GitHub Actions status of your pull request in apache/submarine"),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},"Visit ",Object(n.b)("a",{parentName:"li",href:"https://github.com/apache/submarine/actions"},"https://github.com/apache/submarine/actions")),Object(n.b)("li",{parentName:"ul"},"Please make sure your pull request can pass all workflows. ")),Object(n.b)("h3",{id:"step11-the-review-process"},"Step11: The Review Process"),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},"Anyone can be a reviewer and comment on the pull requests."),Object(n.b)("li",{parentName:"ul"},'Reviewer can indicate that a patch looks suitable for merging with a comment such as: "Looks good", "LGTM", "+1". (PS: LGTM = Looks Good To Me)'),Object(n.b)("li",{parentName:"ul"},'At least one indication of suitability (e.g. "LGTM") from a committer is required to be merged. '),Object(n.b)("li",{parentName:"ul"},'A committer can then initiate lazy consensus ("Merge if there is no more discussion") after which the code can be merged after a particular time (usually 24 hours) if there are no more reviews.'),Object(n.b)("li",{parentName:"ul"},"Contributors can ping reviewers (including committers) by commenting 'Ready to review'.")),Object(n.b)("h3",{id:"step12-address-review-comments"},"Step12: Address review comments"),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},"Push new commits to SUBMARINE-${jira_number} branch. The pull request will update automatically."),Object(n.b)("li",{parentName:"ul"},"After you address all review comments, committers will merge the pull request.")),Object(n.b)("h3",{id:"code-convention"},"Code convention"),Object(n.b)("p",null,"We are following Google Code style:"),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},Object(n.b)("a",{parentName:"li",href:"https://google.github.io/styleguide/javaguide.html"},"Java style")),Object(n.b)("li",{parentName:"ul"},Object(n.b)("a",{parentName:"li",href:"https://google.github.io/styleguide/shell.xml"},"Shell style"))),Object(n.b)("p",null,"There are some plugins to format, lint your code in IDE (use ",Object(n.b)("a",{parentName:"p",href:"hhttps://github.com/apache/submarine/blob/master/dev-support/maven-config/checkstyle.xml"},"dev-support/maven-config/checkstyle.xml")," as rules)"),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},Object(n.b)("a",{parentName:"li",href:"https://plugins.jetbrains.com/plugin/1065"},"Checkstyle plugin for Intellij")," (",Object(n.b)("a",{parentName:"li",href:"http://stackoverflow.com/questions/26955766/intellij-idea-checkstyle"},"Setting Guide"),")"),Object(n.b)("li",{parentName:"ul"},Object(n.b)("a",{parentName:"li",href:"http://eclipse-cs.sourceforge.net/#!/"},"Checkstyle plugin for Eclipse")," (",Object(n.b)("a",{parentName:"li",href:"http://eclipse-cs.sourceforge.net/#!/project-setup"},"Setting Guide"),")")))}s.isMDXComponent=!0},209:function(e,t,a){"use strict";a.d(t,"a",(function(){return b})),a.d(t,"b",(function(){return h}));var r=a(0),i=a.n(r);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function c(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?c(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):c(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function u(e,t){if(null==e)return{};var a,r,i=function(e,t){if(null==e)return{};var a,r,i={},n=Object.keys(e);for(r=0;r<n.length;r++)a=n[r],t.indexOf(a)>=0||(i[a]=e[a]);return i}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r<n.length;r++)a=n[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(i[a]=e[a])}return i}var l=i.a.createContext({}),s=function(e){var t=i.a.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},b=function(e){var t=s(e.components);return i.a.createElement(l.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return i.a.createElement(i.a.Fragment,{},t)}},m=i.a.forwardRef((function(e,t){var a=e.components,r=e.mdxType,n=e.originalType,c=e.parentName,l=u(e,["components","mdxType","originalType","parentName"]),b=s(a),m=r,h=b["".concat(c,".").concat(m)]||b[m]||p[m]||n;return a?i.a.createElement(h,o(o({ref:t},l),{},{components:a})):i.a.createElement(h,o({ref:t},l))}));function h(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var n=a.length,c=new Array(n);c[0]=m;var o={};for(var u in t)hasOwnProperty.call(t,u)&&(o[u]=t[u]);o.originalType=e,o.mdxType="string"==typeof e?e:r,c[1]=o;for(var l=2;l<n;l++)c[l]=a[l];return i.a.createElement.apply(null,c)}return i.a.createElement.apply(null,a)}m.displayName="MDXCreateElement"},245:function(e,t,a){"use strict";a.r(t),t.default=a.p+"assets/images/jira_number_example-9d86e8dd3b72d9d9c2adddfbffc00a54.png"},246:function(e,t,a){"use strict";a.r(t),t.default=a.p+"assets/images/check_ci_pass-9c6656dec7130470506c7420e55c7dd0.png"},247:function(e,t,a){"use strict";a.r(t),t.default=a.p+"assets/images/compare_pull_request_button-a5c8f7a7ebda5fad45d1d9e6ca8ed58a.png"},248:function(e,t,a){"use strict";a.r(t),t.default=a.p+"assets/images/pull_request_template_example-5db7207e23fa54cca6de32325e8d7c67.png"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[76],{143:function(e,t,a){"use strict";a.r(t),a.d(t,"frontMatter",(function(){return c})),a.d(t,"metadata",(function(){return o})),a.d(t,"toc",(function(){return u})),a.d(t,"default",(function(){return s}));var r=a(3),i=a(7),n=(a(0),a(194)),c={title:"How To Contribute to Submarine"},o={unversionedId:"community/contributing",id:"version-0.6.0/community/contributing",isDocsHomePage:!1,title:"How To Contribute to Submarine",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/community/contributing.md",slug:"/community/contributing",permalink:"/docs/community/contributing",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/community/contributing.md",version:"0.6.0",sidebar:"docs",previous:{title:"Guide for Apache Submarine Committers",permalink:"/docs/community/HowToCommit"},next:{title:"Architecture and Requirment",permalink:"/docs/designDocs/architecture-and-requirements"}},u=[{value:"Preface",id:"preface",children:[]},{value:"Build Submarine",id:"build-submarine",children:[]},{value:"Creating patches",id:"creating-patches",children:[{value:"Step1: Fork apache/submarine github repository (first time)",id:"step1-fork-apachesubmarine-github-repository-first-time",children:[]},{value:"Step2: Clone the Submarine to your local machine",id:"step2-clone-the-submarine-to-your-local-machine",children:[]},{value:"Step3: Create a new Jira in Submarine project",id:"step3-create-a-new-jira-in-submarine-project",children:[]},{value:"Step4: Create a local branch for your contribution",id:"step4-create-a-local-branch-for-your-contribution",children:[]},{value:"Step5: Develop &amp; Create commits",id:"step5-develop--create-commits",children:[]},{value:"Step6: Syncing your local branch with upstream/master",id:"step6-syncing-your-local-branch-with-upstreammaster",children:[]},{value:"Step7: Push your local branch to your personal fork",id:"step7-push-your-local-branch-to-your-personal-fork",children:[]},{value:"Step8: Check GitHub Actions status of your personal commit",id:"step8-check-github-actions-status-of-your-personal-commit",children:[]},{value:"Step9: Create a pull request on github UI",id:"step9-create-a-pull-request-on-github-ui",children:[]},{value:"Step10: Check GitHub Actions status of your pull request in apache/submarine",id:"step10-check-github-actions-status-of-your-pull-request-in-apachesubmarine",children:[]},{value:"Step11: The Review Process",id:"step11-the-review-process",children:[]},{value:"Step12: Address review comments",id:"step12-address-review-comments",children:[]},{value:"Code convention",id:"code-convention",children:[]}]}],l={toc:u};function s(e){var t=e.components,c=Object(i.a)(e,["components"]);return Object(n.b)("wrapper",Object(r.a)({},l,c,{components:t,mdxType:"MDXLayout"}),Object(n.b)("p",null,"There are several ways to contribute to Submarine:"),Object(n.b)("ol",null,Object(n.b)("li",{parentName:"ol"},"Develop and Commit source code (This document will primarily focus on this.)"),Object(n.b)("li",{parentName:"ol"},"Report issues (You can report issues with both Github or Jira.)"),Object(n.b)("li",{parentName:"ol"},"Discuss/Answer questions on the mailing list"),Object(n.b)("li",{parentName:"ol"},"Share use cases")),Object(n.b)("h2",{id:"preface"},"Preface"),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},Object(n.b)("strong",{parentName:"li"},"Apache Submarine")," is an ",Object(n.b)("a",{parentName:"li",href:"https://github.com/apache/submarine/blob/master/LICENSE"},"Apache 2.0 License")," Software. Contributing to Submarine means you agree to the Apache 2.0 License. "),Object(n.b)("li",{parentName:"ul"},"Please read ",Object(n.b)("a",{parentName:"li",href:"http://www.apache.org/foundation/policies/conduct.html"},"Code of Conduct")," carefully."),Object(n.b)("li",{parentName:"ul"},"The document ",Object(n.b)("a",{parentName:"li",href:"http://www.apache.org/foundation/how-it-works.html"},"How It Works")," can help you understand Apache Software Foundation further.")),Object(n.b)("h2",{id:"build-submarine"},"Build Submarine"),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},Object(n.b)("a",{parentName:"li",href:"https://github.com/apache/submarine/blob/master/website/docs/devDocs/BuildFromCode.md"},"Build From Code"))),Object(n.b)("h2",{id:"creating-patches"},"Creating patches"),Object(n.b)("p",null,"Submarine follows ",Object(n.b)("a",{parentName:"p",href:"https://github.com/sevntu-checkstyle/sevntu.checkstyle/wiki/Development-workflow-with-Git:-Fork,-Branching,-Commits,-and-Pull-Request"},"Fork & Pull")," model."),Object(n.b)("h3",{id:"step1-fork-apachesubmarine-github-repository-first-time"},"Step1: Fork apache/submarine github repository (first time)"),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},"Visit ",Object(n.b)("a",{parentName:"li",href:"https://github.com/apache/submarine"},"https://github.com/apache/submarine")),Object(n.b)("li",{parentName:"ul"},"Click the ",Object(n.b)("inlineCode",{parentName:"li"},"Fork")," button to create a fork of the repository")),Object(n.b)("h3",{id:"step2-clone-the-submarine-to-your-local-machine"},"Step2: Clone the Submarine to your local machine"),Object(n.b)("pre",null,Object(n.b)("code",{parentName:"pre",className:"language-sh"},"# USERNAME \u2013 your Github user account name.\ngit clone git@github.com:${USERNAME}/submarine.git\n# or: git clone https://github.com/${USERNAME}/submarine.git \n \ncd submarine\n# set upstream \ngit remote add upstream git@github.com:apache/submarine.git\n# or: git remote add upstream https://github.com/apache/submarine.git\n\n# Don't push to the upstream master.\ngit remote set-url --push upstream no_push\n\n# Check upstream/origin:\n# origin    git@github.com:${USERNAME}/submarine.git (fetch)\n# origin    git@github.com:${USERNAME}/submarine.git (push)\n# upstream  git@github.com:apache/submarine.git (fetch)\n# upstream  no_push (push)\ngit remote -v\n")),Object(n.b)("h3",{id:"step3-create-a-new-jira-in-submarine-project"},"Step3: Create a new Jira in Submarine project"),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},"New contributors need privilege to create JIRA issues. Please email ",Object(n.b)("a",{parentName:"li",href:"mailto:kaihsun@apache.org"},"kaihsun@apache.org"),' with your Jira username. In addition, the email title should be "',"[New Submarine Contributor]",'".'),Object(n.b)("li",{parentName:"ul"},"Check ",Object(n.b)("a",{parentName:"li",href:"https://issues.apache.org/jira/projects/SUBMARINE/issues/SUBMARINE-748?filter=allopenissues"},"Jira issue tracker")," for existing issues."),Object(n.b)("li",{parentName:"ul"},"Create a new Jira issue in Submarine project. When the issue is created, a Jira number (eg. SUBMARINE-748) will be assigned to the issue automatically.\n",Object(n.b)("img",{alt:"jira_number_example",src:a(230).default}))),Object(n.b)("h3",{id:"step4-create-a-local-branch-for-your-contribution"},"Step4: Create a local branch for your contribution"),Object(n.b)("pre",null,Object(n.b)("code",{parentName:"pre",className:"language-sh"},"cd submarine\n\n# Make your local master up-to-date\ngit checkout master\ngit fetch upstream \ngit rebase upstream/master\n\n# Create a new branch fro issue SUBMARINE-${jira_number}\ngit checkout -b SUBMARINE-${jira_number}\n\n# Example: git checkout -b SUBMARINE-748 \n")),Object(n.b)("h3",{id:"step5-develop--create-commits"},"Step5: Develop & Create commits"),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},"You can edit the code on the ",Object(n.b)("inlineCode",{parentName:"li"},"SUBMARINE-${jira_number}")," branch. (Coding Style: ",Object(n.b)("a",{parentName:"li",href:"#code-convention"},"Code Convention"),")"),Object(n.b)("li",{parentName:"ul"},"Create commits")),Object(n.b)("pre",null,Object(n.b)("code",{parentName:"pre",className:"language-sh"},'git add ${edited files}\ngit commit -m "SUBMARINE-${jira_number}. ${Commit Message}"\n# Example: git commit -m "SUBMARINE-748. Update Contributing guide" \n')),Object(n.b)("h3",{id:"step6-syncing-your-local-branch-with-upstreammaster"},"Step6: Syncing your local branch with upstream/master"),Object(n.b)("pre",null,Object(n.b)("code",{parentName:"pre",className:"language-sh"},"# On SUBMARINE-${jira_number} branch\ngit fetch upstream\ngit rebase upstream/master\n")),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},"Please do not use ",Object(n.b)("inlineCode",{parentName:"li"},"git pull")," to synchronize your local branch. Because ",Object(n.b)("inlineCode",{parentName:"li"},"git pull")," does a merge to create merged commits, these will make commit history messy.")),Object(n.b)("h3",{id:"step7-push-your-local-branch-to-your-personal-fork"},"Step7: Push your local branch to your personal fork"),Object(n.b)("pre",null,Object(n.b)("code",{parentName:"pre",className:"language-sh"},"git push origin SUBMARINE-${jira_number} \n")),Object(n.b)("h3",{id:"step8-check-github-actions-status-of-your-personal-commit"},"Step8: Check GitHub Actions status of your personal commit"),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},"Visit ",Object(n.b)("inlineCode",{parentName:"li"},"https://github.com/${USERNAME}/submarine/actions")),Object(n.b)("li",{parentName:"ul"},"Please make sure your new commits can pass all workflows before creating a pull request.")),Object(n.b)("p",null,Object(n.b)("img",{alt:"check_ci_pass",src:a(231).default})),Object(n.b)("h3",{id:"step9-create-a-pull-request-on-github-ui"},"Step9: Create a pull request on github UI"),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},"Visit your fork at ",Object(n.b)("inlineCode",{parentName:"li"},"https://github.com/${USERNAME}/submarine.git")),Object(n.b)("li",{parentName:"ul"},"Click ",Object(n.b)("inlineCode",{parentName:"li"},"Compare & Pull Request")," button to create pull request.\n",Object(n.b)("img",{alt:"compare_pull_request_button",src:a(232).default}))),Object(n.b)("h4",{id:"pull-request-template"},"Pull Request template"),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},Object(n.b)("a",{parentName:"li",href:"https://github.com/apache/submarine/blob/bd7578cc28f8280f9170938d4469fcc965e24a89/.github/PULL_REQUEST_TEMPLATE"},"Pull request template")),Object(n.b)("li",{parentName:"ul"},"Filling the template thoroughly can improve the speed of the review process. Example: ")),Object(n.b)("p",null,Object(n.b)("img",{alt:"pull_request_template_example",src:a(233).default})),Object(n.b)("h3",{id:"step10-check-github-actions-status-of-your-pull-request-in-apachesubmarine"},"Step10: Check GitHub Actions status of your pull request in apache/submarine"),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},"Visit ",Object(n.b)("a",{parentName:"li",href:"https://github.com/apache/submarine/actions"},"https://github.com/apache/submarine/actions")),Object(n.b)("li",{parentName:"ul"},"Please make sure your pull request can pass all workflows. ")),Object(n.b)("h3",{id:"step11-the-review-process"},"Step11: The Review Process"),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},"Anyone can be a reviewer and comment on the pull requests."),Object(n.b)("li",{parentName:"ul"},'Reviewer can indicate that a patch looks suitable for merging with a comment such as: "Looks good", "LGTM", "+1". (PS: LGTM = Looks Good To Me)'),Object(n.b)("li",{parentName:"ul"},'At least one indication of suitability (e.g. "LGTM") from a committer is required to be merged. '),Object(n.b)("li",{parentName:"ul"},'A committer can then initiate lazy consensus ("Merge if there is no more discussion") after which the code can be merged after a particular time (usually 24 hours) if there are no more reviews.'),Object(n.b)("li",{parentName:"ul"},"Contributors can ping reviewers (including committers) by commenting 'Ready to review'.")),Object(n.b)("h3",{id:"step12-address-review-comments"},"Step12: Address review comments"),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},"Push new commits to SUBMARINE-${jira_number} branch. The pull request will update automatically."),Object(n.b)("li",{parentName:"ul"},"After you address all review comments, committers will merge the pull request.")),Object(n.b)("h3",{id:"code-convention"},"Code convention"),Object(n.b)("p",null,"We are following Google Code style:"),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},Object(n.b)("a",{parentName:"li",href:"https://google.github.io/styleguide/javaguide.html"},"Java style")),Object(n.b)("li",{parentName:"ul"},Object(n.b)("a",{parentName:"li",href:"https://google.github.io/styleguide/shell.xml"},"Shell style"))),Object(n.b)("p",null,"There are some plugins to format, lint your code in IDE (use ",Object(n.b)("a",{parentName:"p",href:"hhttps://github.com/apache/submarine/blob/master/dev-support/maven-config/checkstyle.xml"},"dev-support/maven-config/checkstyle.xml")," as rules)"),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},Object(n.b)("a",{parentName:"li",href:"https://plugins.jetbrains.com/plugin/1065"},"Checkstyle plugin for Intellij")," (",Object(n.b)("a",{parentName:"li",href:"http://stackoverflow.com/questions/26955766/intellij-idea-checkstyle"},"Setting Guide"),")"),Object(n.b)("li",{parentName:"ul"},Object(n.b)("a",{parentName:"li",href:"http://eclipse-cs.sourceforge.net/#!/"},"Checkstyle plugin for Eclipse")," (",Object(n.b)("a",{parentName:"li",href:"http://eclipse-cs.sourceforge.net/#!/project-setup"},"Setting Guide"),")")))}s.isMDXComponent=!0},194:function(e,t,a){"use strict";a.d(t,"a",(function(){return b})),a.d(t,"b",(function(){return h}));var r=a(0),i=a.n(r);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function c(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?c(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):c(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function u(e,t){if(null==e)return{};var a,r,i=function(e,t){if(null==e)return{};var a,r,i={},n=Object.keys(e);for(r=0;r<n.length;r++)a=n[r],t.indexOf(a)>=0||(i[a]=e[a]);return i}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r<n.length;r++)a=n[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(i[a]=e[a])}return i}var l=i.a.createContext({}),s=function(e){var t=i.a.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},b=function(e){var t=s(e.components);return i.a.createElement(l.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return i.a.createElement(i.a.Fragment,{},t)}},m=i.a.forwardRef((function(e,t){var a=e.components,r=e.mdxType,n=e.originalType,c=e.parentName,l=u(e,["components","mdxType","originalType","parentName"]),b=s(a),m=r,h=b["".concat(c,".").concat(m)]||b[m]||p[m]||n;return a?i.a.createElement(h,o(o({ref:t},l),{},{components:a})):i.a.createElement(h,o({ref:t},l))}));function h(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var n=a.length,c=new Array(n);c[0]=m;var o={};for(var u in t)hasOwnProperty.call(t,u)&&(o[u]=t[u]);o.originalType=e,o.mdxType="string"==typeof e?e:r,c[1]=o;for(var l=2;l<n;l++)c[l]=a[l];return i.a.createElement.apply(null,c)}return i.a.createElement.apply(null,a)}m.displayName="MDXCreateElement"},230:function(e,t,a){"use strict";a.r(t),t.default=a.p+"assets/images/jira_number_example-9d86e8dd3b72d9d9c2adddfbffc00a54.png"},231:function(e,t,a){"use strict";a.r(t),t.default=a.p+"assets/images/check_ci_pass-9c6656dec7130470506c7420e55c7dd0.png"},232:function(e,t,a){"use strict";a.r(t),t.default=a.p+"assets/images/compare_pull_request_button-a5c8f7a7ebda5fad45d1d9e6ca8ed58a.png"},233:function(e,t,a){"use strict";a.r(t),t.default=a.p+"assets/images/pull_request_template_example-5db7207e23fa54cca6de32325e8d7c67.png"}}]);
\ No newline at end of file
diff --git a/a7e506f8.5f2dfa4e.js b/a7e506f8.92088415.js
similarity index 98%
rename from a7e506f8.5f2dfa4e.js
rename to a7e506f8.92088415.js
index 473b3ae..c5082e1 100644
--- a/a7e506f8.5f2dfa4e.js
+++ b/a7e506f8.92088415.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[88],{155:function(e,n,t){"use strict";t.r(n),t.d(n,"frontMatter",(function(){return a})),t.d(n,"metadata",(function(){return l})),t.d(n,"toc",(function(){return s})),t.d(n,"default",(function(){return m}));var r=t(3),i=t(7),o=(t(0),t(209)),a={title:"Environments Implementation"},l={unversionedId:"designDocs/environments-implementation",id:"designDocs/environments-implementation",isDocsHomePage:!1,title:"Environments Implementation",description:"\x3c!--",source:"@site/docs/designDocs/environments-implementation.md",slug:"/designDocs/environments-implementation",permalink:"/docs/next/designDocs/environments-implementation",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/designDocs/environments-implementation.md",version:"current",sidebar:"docs",previous:{title:"Implementation Notes",permalink:"/docs/next/designDocs/implementation-notes"},next:{title:"Experiment Implementation",permalink:"/docs/next/designDocs/experiment-implementation"}},s=[{value:"Overview",id:"overview",children:[]},{value:"Environment API definition",id:"environment-api-definition",children:[]},{value:"VM-image and Docker-image",id:"vm-image-and-docker-image",children:[]},{value:"Kernel Implementation",id:"kernel-implementation",children:[]},{value:"Storage of Environment",id:"storage-of-environment",children:[]},{value:"How to implement to make user can easily use Submarine environments?",id:"how-to-implement-to-make-user-can-easily-use-submarine-environments",children:[]}],c={toc:s};function m(e){var n=e.components,t=Object(i.a)(e,["components"]);return Object(o.b)("wrapper",Object(r.a)({},c,t,{components:n,mdxType:"MDXLayout"}),Object(o.b)("h2",{id:"overview"},"Overview"),Object(o.b)("p",null,"Environment profiles (or environment for short) defines a set of libraries and when Docker is being used, a Docker image in order to run an experiment or a notebook. "),Object(o.b)("p",null,"Docker and/or VM-image (such as, VirtualBox/VMWare images, Amazon Machine Images - AMI, Or custom image of Azure VM) defines the base layer of the environment. Please note that VM-image is different from VM instance type,"),Object(o.b)("p",null,"On top of that, users can define a set of libraries (such as Python/R) to install, we call it kernel."),Object(o.b)("p",null,Object(o.b)("strong",{parentName:"p"},"Example of Environment")),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"\n     +-------------------+\n     |+-----------------+|\n     || Python=3.7      ||\n     || Tensorflow=2.0  ||\n     |+---Exp Dependency+|\n     |+-----------------+|\n     ||OS=Ubuntu16.04   ||\n     ||CUDA=10.2        ||\n     ||GPU_Driver=375.. ||\n     |+---Base Library--+|\n     +-------------------+\n")),Object(o.b)("p",null,"As you can see, There're base libraries, such as what OS, CUDA version, GPU driver, etc. They can be achieved by specifying a VM-image / Docker image."),Object(o.b)("p",null,"On top of that, user can bring their dependencies, such as different version of Python, Tensorflow, Pandas, etc."),Object(o.b)("p",null,Object(o.b)("strong",{parentName:"p"},"How users use environment?")),Object(o.b)("p",null,"Users can save different environment configs which can be also shared across the platform. Environment profiles can be used to run a notebook (e.g. by choosing different kernel from Jupyter), or an experiment. Predefined experiment library includes what environment to use so users don't have to choose which environment to use."),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"\n        +-------------------+\n        |+-----------------+|       +------------+\n        || Python=3.7      ||       |User1       |\n        || Tensorflow=2.0  ||       +------------+\n        |+---Kernel -------+|       +------------+\n        |+-----------------+|<----+ |User2       |\n        ||OS=Ubuntu16.04   ||     + +------------+\n        ||CUDA=10.2        ||     | +------------+\n        ||GPU_Driver=375.. ||     | |User3       |\n        |+---Base Library--+|     | +------------+\n        +-----Default-Env---+     |\n                                  |\n                                  |\n        +-------------------+     |\n        |+-----------------+|     |\n        || Python=3.3      ||     |\n        || Tensorflow=2.0  ||     |\n        |+---kernel--------+|     |\n        |+-----------------+|     |\n        ||OS=Ubuntu16.04   ||     |\n        ||CUDA=10.3        ||<----+\n        ||GPU_Driver=375.. ||\n        |+---Base Library--+|\n        +-----My-Customized-+\n")),Object(o.b)("p",null,'There\'re two environments in the above graph, "Default-Env" and "My-Customized", which can have different combinations of libraries for different experiments/notebooks. Users can choose different environments for different experiments as they want.'),Object(o.b)("p",null,"Environments can be added/listed/deleted/selected through CLI/SDK/UI."),Object(o.b)("h1",{id:"implementation"},"Implementation"),Object(o.b)("h2",{id:"environment-api-definition"},"Environment API definition"),Object(o.b)("p",null,"Let look at what object definition looks like to define an environment, API of environment looks like:"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},'    name: "my_submarine_env",\n    vm-image: "...",\n    docker-image: "...", \n    kernel: \n       <object of kernel>\n    description: "this is the most common env used by team ABC"\n')),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},Object(o.b)("inlineCode",{parentName:"li"},"vm-image")," is optional if we don't need to launch new VM (like running a training job in a cloud-remote machine). "),Object(o.b)("li",{parentName:"ul"},Object(o.b)("inlineCode",{parentName:"li"},"docker-image")," is required"),Object(o.b)("li",{parentName:"ul"},Object(o.b)("inlineCode",{parentName:"li"},"kernel")," could be optional if kernel is already included by vm-image or docker-image."),Object(o.b)("li",{parentName:"ul"},Object(o.b)("inlineCode",{parentName:"li"},"name")," of the environment should be unique in the system, so user can reference it when create a new experiment/notebook.")),Object(o.b)("h2",{id:"vm-image-and-docker-image"},"VM-image and Docker-image"),Object(o.b)("p",null,'Docker-image and VM image should be prepared by system admin / SREs, it is hard for Data-Scientists to write an error-proof Dockerfile, and push/manage Docker images. This is one of the reason we hide Docker-image inside "environment", we will encourage users to customize their kernels if needed, but don\'t have to touch Dockerfile and build/push/manage new Docker images.'),Object(o.b)("p",null,"As a project, we will document what's the best practice and example of Dockerfiles. "),Object(o.b)("p",null,"Dockerfile should include proper ",Object(o.b)("inlineCode",{parentName:"p"},"ENTRYPOINT")," definition which pointed to our default script, so no matter it is notebook, or an experiment, we will setup kernel (see below) and other environment variables properly."),Object(o.b)("h2",{id:"kernel-implementation"},"Kernel Implementation"),Object(o.b)("p",null,"After investigating different alternatives (such as pipenv, venv, etc.), we decided to use Conda environment which nicely replaces Python virtual env, pip, and can also support other languages. More details can be found at: ",Object(o.b)("a",{parentName:"p",href:"https://medium.com/@krishnaregmi/pipenv-vs-virtualenv-vs-conda-environment-3dde3f6869ed"},"https://medium.com/@krishnaregmi/pipenv-vs-virtualenv-vs-conda-environment-3dde3f6869ed")),Object(o.b)("p",null,"When once Conda, users can easily add, remove dependency of a Conda environment. User can also easily export environment to yaml file."),Object(o.b)("p",null,"The yaml file of Conda environment by using ",Object(o.b)("inlineCode",{parentName:"p"},"conda env export")," looks like: "),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"name: base\nchannels:\n  - defaults\ndependencies:\n  - _ipyw_jlab_nb_ext_conf=0.1.0=py37_0\n  - alabaster=0.7.12=py37_0\n  - anaconda=2020.02=py37_0\n  - anaconda-client=1.7.2=py37_0\n  - anaconda-navigator=1.9.12=py37_0\n  - anaconda-project=0.8.4=py_0\n  - applaunchservices=0.2.1=py_0\n")),Object(o.b)("p",null,"Including Conda kernel, the environment object may look like: "),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},'name: "my_submarine_env",\n    vm-image: "...",\n    docker-image: "...", \n    kernel: \n      name: team_default_python_3.7\n      channels:\n        - defaults\n      dependencies:\n        - _ipyw_jlab_nb_ext_conf=0.1.0=py37_0\n        - alabaster=0.7.12=py37_0\n        - anaconda=2020.02=py37_0\n        - anaconda-client=1.7.2=py37_0\n        - anaconda-navigator=1.9.12=py37_0\n')),Object(o.b)("p",null,"When launch a new experiment / notebook session using the ",Object(o.b)("inlineCode",{parentName:"p"},"my_submarine_env"),", submarine server will use defined Docker image, and Conda kernel to launch of container. "),Object(o.b)("h2",{id:"storage-of-environment"},"Storage of Environment"),Object(o.b)("p",null,"Environment of Submarine is just a simple text file, so it will be persisted in Submarine metastore, which is ideally a Database. "),Object(o.b)("p",null,"Docker image is stored inside a regular Docker registry, which will be handled outside of the system. "),Object(o.b)("p",null,"Conda dependencies are stored in Conda channel (where referenced packages are stored), which will be handled/setuped separately. (Popular conda channels are ",Object(o.b)("inlineCode",{parentName:"p"},"default")," and ",Object(o.b)("inlineCode",{parentName:"p"},"conda-forge"),")"),Object(o.b)("p",null,"For more detailed discussion about storage-related implementations, please refer to ",Object(o.b)("a",{parentName:"p",href:"./storage-implementation"},"storage-implementation"),"."),Object(o.b)("h2",{id:"how-to-implement-to-make-user-can-easily-use-submarine-environments"},"How to implement to make user can easily use Submarine environments?"),Object(o.b)("p",null,"We like simplicities, and we don't want to leak complexities of implementations to the users. To make it happen, we have to do some works to hide complexities. "),Object(o.b)("p",null,"There're two primary uses of environments: experiments and notebook, for both of them, users should not do works like explictily call ",Object(o.b)("inlineCode",{parentName:"p"},"conda active $env_name")," to active environments. To make it happen, what we can do is to include following parts in Dockerfile "),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},'FROM ubuntu:18.04\n\n<Include whatever base-libraries like CUDA, etc.>\n\n<Make sure conda (with our preferred version) is installed>\n<Make sure Jupyter (with our preferred version) is installed>\n\n# This is just a sample of Dockerfile, users can do more customizations if needed\nENTRYPOINT ["/submarine-bootstrap.sh"]\n')),Object(o.b)("p",null,"When Submarine Server (this is implementation detail of Submarine Server, user will not see it at all) launch an experiment, or notebook, it will invoke following ",Object(o.b)("inlineCode",{parentName:"p"},"docker run")," command (or any other equvilant like using K8s spec): "),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"docker run <submarine_docker_image> --kernel <kernel_name> -- .... python train.py --batch_size 5 (and other parameters)\n")),Object(o.b)("p",null,"Similarily, to launch a notebook: "),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"docker run <submarine_docker_image> --kernel <kernel_name> -- .... jupyter\n")),Object(o.b)("p",null,"The ",Object(o.b)("inlineCode",{parentName:"p"},"submarine-bootstrap.sh")," is part of Submarine repo, and will handle ",Object(o.b)("inlineCode",{parentName:"p"},"--kernel")," argument which will invoke  ",Object(o.b)("inlineCode",{parentName:"p"},"conda active $kernel_name")," before anything else. (Like run the training job)."))}m.isMDXComponent=!0},209:function(e,n,t){"use strict";t.d(n,"a",(function(){return p})),t.d(n,"b",(function(){return u}));var r=t(0),i=t.n(r);function o(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function a(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 l(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?a(Object(t),!0).forEach((function(n){o(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):a(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function s(e,n){if(null==e)return{};var t,r,i=function(e,n){if(null==e)return{};var t,r,i={},o=Object.keys(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var c=i.a.createContext({}),m=function(e){var n=i.a.useContext(c),t=n;return e&&(t="function"==typeof e?e(n):l(l({},n),e)),t},p=function(e){var n=m(e.components);return i.a.createElement(c.Provider,{value:n},e.children)},d={inlineCode:"code",wrapper:function(e){var n=e.children;return i.a.createElement(i.a.Fragment,{},n)}},b=i.a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,o=e.originalType,a=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),p=m(t),b=r,u=p["".concat(a,".").concat(b)]||p[b]||d[b]||o;return t?i.a.createElement(u,l(l({ref:n},c),{},{components:t})):i.a.createElement(u,l({ref:n},c))}));function u(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var o=t.length,a=new Array(o);a[0]=b;var l={};for(var s in n)hasOwnProperty.call(n,s)&&(l[s]=n[s]);l.originalType=e,l.mdxType="string"==typeof e?e:r,a[1]=l;for(var c=2;c<o;c++)a[c]=t[c];return i.a.createElement.apply(null,a)}return i.a.createElement.apply(null,t)}b.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[77],{144:function(e,n,t){"use strict";t.r(n),t.d(n,"frontMatter",(function(){return a})),t.d(n,"metadata",(function(){return l})),t.d(n,"toc",(function(){return s})),t.d(n,"default",(function(){return m}));var r=t(3),i=t(7),o=(t(0),t(194)),a={title:"Environments Implementation"},l={unversionedId:"designDocs/environments-implementation",id:"designDocs/environments-implementation",isDocsHomePage:!1,title:"Environments Implementation",description:"\x3c!--",source:"@site/docs/designDocs/environments-implementation.md",slug:"/designDocs/environments-implementation",permalink:"/docs/next/designDocs/environments-implementation",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/designDocs/environments-implementation.md",version:"current",sidebar:"docs",previous:{title:"Implementation Notes",permalink:"/docs/next/designDocs/implementation-notes"},next:{title:"Experiment Implementation",permalink:"/docs/next/designDocs/experiment-implementation"}},s=[{value:"Overview",id:"overview",children:[]},{value:"Environment API definition",id:"environment-api-definition",children:[]},{value:"VM-image and Docker-image",id:"vm-image-and-docker-image",children:[]},{value:"Kernel Implementation",id:"kernel-implementation",children:[]},{value:"Storage of Environment",id:"storage-of-environment",children:[]},{value:"How to implement to make user can easily use Submarine environments?",id:"how-to-implement-to-make-user-can-easily-use-submarine-environments",children:[]}],c={toc:s};function m(e){var n=e.components,t=Object(i.a)(e,["components"]);return Object(o.b)("wrapper",Object(r.a)({},c,t,{components:n,mdxType:"MDXLayout"}),Object(o.b)("h2",{id:"overview"},"Overview"),Object(o.b)("p",null,"Environment profiles (or environment for short) defines a set of libraries and when Docker is being used, a Docker image in order to run an experiment or a notebook. "),Object(o.b)("p",null,"Docker and/or VM-image (such as, VirtualBox/VMWare images, Amazon Machine Images - AMI, Or custom image of Azure VM) defines the base layer of the environment. Please note that VM-image is different from VM instance type,"),Object(o.b)("p",null,"On top of that, users can define a set of libraries (such as Python/R) to install, we call it kernel."),Object(o.b)("p",null,Object(o.b)("strong",{parentName:"p"},"Example of Environment")),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"\n     +-------------------+\n     |+-----------------+|\n     || Python=3.7      ||\n     || Tensorflow=2.0  ||\n     |+---Exp Dependency+|\n     |+-----------------+|\n     ||OS=Ubuntu16.04   ||\n     ||CUDA=10.2        ||\n     ||GPU_Driver=375.. ||\n     |+---Base Library--+|\n     +-------------------+\n")),Object(o.b)("p",null,"As you can see, There're base libraries, such as what OS, CUDA version, GPU driver, etc. They can be achieved by specifying a VM-image / Docker image."),Object(o.b)("p",null,"On top of that, user can bring their dependencies, such as different version of Python, Tensorflow, Pandas, etc."),Object(o.b)("p",null,Object(o.b)("strong",{parentName:"p"},"How users use environment?")),Object(o.b)("p",null,"Users can save different environment configs which can be also shared across the platform. Environment profiles can be used to run a notebook (e.g. by choosing different kernel from Jupyter), or an experiment. Predefined experiment library includes what environment to use so users don't have to choose which environment to use."),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"\n        +-------------------+\n        |+-----------------+|       +------------+\n        || Python=3.7      ||       |User1       |\n        || Tensorflow=2.0  ||       +------------+\n        |+---Kernel -------+|       +------------+\n        |+-----------------+|<----+ |User2       |\n        ||OS=Ubuntu16.04   ||     + +------------+\n        ||CUDA=10.2        ||     | +------------+\n        ||GPU_Driver=375.. ||     | |User3       |\n        |+---Base Library--+|     | +------------+\n        +-----Default-Env---+     |\n                                  |\n                                  |\n        +-------------------+     |\n        |+-----------------+|     |\n        || Python=3.3      ||     |\n        || Tensorflow=2.0  ||     |\n        |+---kernel--------+|     |\n        |+-----------------+|     |\n        ||OS=Ubuntu16.04   ||     |\n        ||CUDA=10.3        ||<----+\n        ||GPU_Driver=375.. ||\n        |+---Base Library--+|\n        +-----My-Customized-+\n")),Object(o.b)("p",null,'There\'re two environments in the above graph, "Default-Env" and "My-Customized", which can have different combinations of libraries for different experiments/notebooks. Users can choose different environments for different experiments as they want.'),Object(o.b)("p",null,"Environments can be added/listed/deleted/selected through CLI/SDK/UI."),Object(o.b)("h1",{id:"implementation"},"Implementation"),Object(o.b)("h2",{id:"environment-api-definition"},"Environment API definition"),Object(o.b)("p",null,"Let look at what object definition looks like to define an environment, API of environment looks like:"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},'    name: "my_submarine_env",\n    vm-image: "...",\n    docker-image: "...", \n    kernel: \n       <object of kernel>\n    description: "this is the most common env used by team ABC"\n')),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},Object(o.b)("inlineCode",{parentName:"li"},"vm-image")," is optional if we don't need to launch new VM (like running a training job in a cloud-remote machine). "),Object(o.b)("li",{parentName:"ul"},Object(o.b)("inlineCode",{parentName:"li"},"docker-image")," is required"),Object(o.b)("li",{parentName:"ul"},Object(o.b)("inlineCode",{parentName:"li"},"kernel")," could be optional if kernel is already included by vm-image or docker-image."),Object(o.b)("li",{parentName:"ul"},Object(o.b)("inlineCode",{parentName:"li"},"name")," of the environment should be unique in the system, so user can reference it when create a new experiment/notebook.")),Object(o.b)("h2",{id:"vm-image-and-docker-image"},"VM-image and Docker-image"),Object(o.b)("p",null,'Docker-image and VM image should be prepared by system admin / SREs, it is hard for Data-Scientists to write an error-proof Dockerfile, and push/manage Docker images. This is one of the reason we hide Docker-image inside "environment", we will encourage users to customize their kernels if needed, but don\'t have to touch Dockerfile and build/push/manage new Docker images.'),Object(o.b)("p",null,"As a project, we will document what's the best practice and example of Dockerfiles. "),Object(o.b)("p",null,"Dockerfile should include proper ",Object(o.b)("inlineCode",{parentName:"p"},"ENTRYPOINT")," definition which pointed to our default script, so no matter it is notebook, or an experiment, we will setup kernel (see below) and other environment variables properly."),Object(o.b)("h2",{id:"kernel-implementation"},"Kernel Implementation"),Object(o.b)("p",null,"After investigating different alternatives (such as pipenv, venv, etc.), we decided to use Conda environment which nicely replaces Python virtual env, pip, and can also support other languages. More details can be found at: ",Object(o.b)("a",{parentName:"p",href:"https://medium.com/@krishnaregmi/pipenv-vs-virtualenv-vs-conda-environment-3dde3f6869ed"},"https://medium.com/@krishnaregmi/pipenv-vs-virtualenv-vs-conda-environment-3dde3f6869ed")),Object(o.b)("p",null,"When once Conda, users can easily add, remove dependency of a Conda environment. User can also easily export environment to yaml file."),Object(o.b)("p",null,"The yaml file of Conda environment by using ",Object(o.b)("inlineCode",{parentName:"p"},"conda env export")," looks like: "),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"name: base\nchannels:\n  - defaults\ndependencies:\n  - _ipyw_jlab_nb_ext_conf=0.1.0=py37_0\n  - alabaster=0.7.12=py37_0\n  - anaconda=2020.02=py37_0\n  - anaconda-client=1.7.2=py37_0\n  - anaconda-navigator=1.9.12=py37_0\n  - anaconda-project=0.8.4=py_0\n  - applaunchservices=0.2.1=py_0\n")),Object(o.b)("p",null,"Including Conda kernel, the environment object may look like: "),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},'name: "my_submarine_env",\n    vm-image: "...",\n    docker-image: "...", \n    kernel: \n      name: team_default_python_3.7\n      channels:\n        - defaults\n      dependencies:\n        - _ipyw_jlab_nb_ext_conf=0.1.0=py37_0\n        - alabaster=0.7.12=py37_0\n        - anaconda=2020.02=py37_0\n        - anaconda-client=1.7.2=py37_0\n        - anaconda-navigator=1.9.12=py37_0\n')),Object(o.b)("p",null,"When launch a new experiment / notebook session using the ",Object(o.b)("inlineCode",{parentName:"p"},"my_submarine_env"),", submarine server will use defined Docker image, and Conda kernel to launch of container. "),Object(o.b)("h2",{id:"storage-of-environment"},"Storage of Environment"),Object(o.b)("p",null,"Environment of Submarine is just a simple text file, so it will be persisted in Submarine metastore, which is ideally a Database. "),Object(o.b)("p",null,"Docker image is stored inside a regular Docker registry, which will be handled outside of the system. "),Object(o.b)("p",null,"Conda dependencies are stored in Conda channel (where referenced packages are stored), which will be handled/setuped separately. (Popular conda channels are ",Object(o.b)("inlineCode",{parentName:"p"},"default")," and ",Object(o.b)("inlineCode",{parentName:"p"},"conda-forge"),")"),Object(o.b)("p",null,"For more detailed discussion about storage-related implementations, please refer to ",Object(o.b)("a",{parentName:"p",href:"./storage-implementation"},"storage-implementation"),"."),Object(o.b)("h2",{id:"how-to-implement-to-make-user-can-easily-use-submarine-environments"},"How to implement to make user can easily use Submarine environments?"),Object(o.b)("p",null,"We like simplicities, and we don't want to leak complexities of implementations to the users. To make it happen, we have to do some works to hide complexities. "),Object(o.b)("p",null,"There're two primary uses of environments: experiments and notebook, for both of them, users should not do works like explictily call ",Object(o.b)("inlineCode",{parentName:"p"},"conda active $env_name")," to active environments. To make it happen, what we can do is to include following parts in Dockerfile "),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},'FROM ubuntu:18.04\n\n<Include whatever base-libraries like CUDA, etc.>\n\n<Make sure conda (with our preferred version) is installed>\n<Make sure Jupyter (with our preferred version) is installed>\n\n# This is just a sample of Dockerfile, users can do more customizations if needed\nENTRYPOINT ["/submarine-bootstrap.sh"]\n')),Object(o.b)("p",null,"When Submarine Server (this is implementation detail of Submarine Server, user will not see it at all) launch an experiment, or notebook, it will invoke following ",Object(o.b)("inlineCode",{parentName:"p"},"docker run")," command (or any other equvilant like using K8s spec): "),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"docker run <submarine_docker_image> --kernel <kernel_name> -- .... python train.py --batch_size 5 (and other parameters)\n")),Object(o.b)("p",null,"Similarily, to launch a notebook: "),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"docker run <submarine_docker_image> --kernel <kernel_name> -- .... jupyter\n")),Object(o.b)("p",null,"The ",Object(o.b)("inlineCode",{parentName:"p"},"submarine-bootstrap.sh")," is part of Submarine repo, and will handle ",Object(o.b)("inlineCode",{parentName:"p"},"--kernel")," argument which will invoke  ",Object(o.b)("inlineCode",{parentName:"p"},"conda active $kernel_name")," before anything else. (Like run the training job)."))}m.isMDXComponent=!0},194:function(e,n,t){"use strict";t.d(n,"a",(function(){return p})),t.d(n,"b",(function(){return u}));var r=t(0),i=t.n(r);function o(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function a(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 l(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?a(Object(t),!0).forEach((function(n){o(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):a(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function s(e,n){if(null==e)return{};var t,r,i=function(e,n){if(null==e)return{};var t,r,i={},o=Object.keys(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var c=i.a.createContext({}),m=function(e){var n=i.a.useContext(c),t=n;return e&&(t="function"==typeof e?e(n):l(l({},n),e)),t},p=function(e){var n=m(e.components);return i.a.createElement(c.Provider,{value:n},e.children)},d={inlineCode:"code",wrapper:function(e){var n=e.children;return i.a.createElement(i.a.Fragment,{},n)}},b=i.a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,o=e.originalType,a=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),p=m(t),b=r,u=p["".concat(a,".").concat(b)]||p[b]||d[b]||o;return t?i.a.createElement(u,l(l({ref:n},c),{},{components:t})):i.a.createElement(u,l({ref:n},c))}));function u(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var o=t.length,a=new Array(o);a[0]=b;var l={};for(var s in n)hasOwnProperty.call(n,s)&&(l[s]=n[s]);l.originalType=e,l.mdxType="string"==typeof e?e:r,a[1]=l;for(var c=2;c<o;c++)a[c]=t[c];return i.a.createElement.apply(null,a)}return i.a.createElement.apply(null,t)}b.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/a86c7af5.afd767e1.js b/a86c7af5.03050a49.js
similarity index 98%
rename from a86c7af5.afd767e1.js
rename to a86c7af5.03050a49.js
index 0cf3924..d2eb517 100644
--- a/a86c7af5.afd767e1.js
+++ b/a86c7af5.03050a49.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[89],{156:function(e,n,t){"use strict";t.r(n),t.d(n,"frontMatter",(function(){return s})),t.d(n,"metadata",(function(){return r})),t.d(n,"toc",(function(){return c})),t.d(n,"default",(function(){return p}));var i=t(3),a=t(7),u=(t(0),t(209)),s={},r={unversionedId:"ecosystem/kaldi/RunningDistributedThchs30KaldiJobs",id:"version-0.6.0/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs",isDocsHomePage:!1,title:"RunningDistributedThchs30KaldiJobs",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs.md",slug:"/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs",permalink:"/docs/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs.md",version:"0.6.0"},c=[{value:"Prepare data for training",id:"prepare-data-for-training",children:[]},{value:"Prepare Docker images",id:"prepare-docker-images",children:[]},{value:"Run Kaldi jobs",id:"run-kaldi-jobs",children:[{value:"Run distributed training",id:"run-distributed-training",children:[]}]}],o={toc:c};function p(e){var n=e.components,s=Object(a.a)(e,["components"]);return Object(u.b)("wrapper",Object(i.a)({},o,s,{components:n,mdxType:"MDXLayout"}),Object(u.b)("h1",{id:"thchs30-kaldi-example-with-yarn-service"},"Thchs30 Kaldi Example With YARN Service"),Object(u.b)("h2",{id:"prepare-data-for-training"},"Prepare data for training"),Object(u.b)("p",null,"Thchs30 is a common benchmark in machine learning for speech data and transcripts. Below example is based on Thchs30 dataset."),Object(u.b)("p",null,"1) download gz file:"),Object(u.b)("pre",null,Object(u.b)("code",{parentName:"pre"},"THCHS30_PATH=/data/hdfs1/nfs/aisearch/kaldi/thchs30\nmkdir $THCHS30_PATH/data && cd $THCHS30_PATH/data\nwget http://www.openslr.org/resources/18/data_thchs30.tgz\nwget http://www.openslr.org/resources/18/test-noise.tgz\nwget http://www.openslr.org/resources/18/resource.tgz\n")),Object(u.b)("p",null,"2) Checkout ",Object(u.b)("a",{parentName:"p",href:"https://github.com/apache/submarine.git"},"https://github.com/apache/submarine.git"),":"),Object(u.b)("pre",null,Object(u.b)("code",{parentName:"pre"},"git clone https://github.com/apache/submarine.git\n")),Object(u.b)("p",null,"3) Go to ",Object(u.b)("inlineCode",{parentName:"p"},"submarine/docker/ecosystem/")),Object(u.b)("pre",null,Object(u.b)("code",{parentName:"pre"},"cp -r ./kaldi/sge $THCHS30_PATH/sge\n")),Object(u.b)("p",null,"4) optional\uff0cModify ",Object(u.b)("inlineCode",{parentName:"p"},"/opt/kaldi/egs/thchs30/s5/cmd.sh")," in the Container,This queue is used by default"),Object(u.b)("pre",null,Object(u.b)("code",{parentName:"pre"},'export train_cmd="queue.pl -q all.q"\n')),Object(u.b)("p",null,Object(u.b)("strong",{parentName:"p"},"Warning:")),Object(u.b)("p",null,"Please note that YARN service doesn't allow multiple services with the same name, so please run following command"),Object(u.b)("pre",null,Object(u.b)("code",{parentName:"pre"},"yarn application -destroy <service-name>\n")),Object(u.b)("p",null,"to delete services if you want to reuse the same service name."),Object(u.b)("h2",{id:"prepare-docker-images"},"Prepare Docker images"),Object(u.b)("p",null,"Refer to ",Object(u.b)("a",{parentName:"p",href:"/docs/ecosystem/kaldi/WriteDockerfileKaldi"},"Write Dockerfile")," to build a Docker image or use prebuilt one:"),Object(u.b)("ul",null,Object(u.b)("li",{parentName:"ul"},"hadoopsubmarine/kaldi-latest-gpu-base:0.0.1")),Object(u.b)("h2",{id:"run-kaldi-jobs"},"Run Kaldi jobs"),Object(u.b)("h3",{id:"run-distributed-training"},"Run distributed training"),Object(u.b)("pre",null,Object(u.b)("code",{parentName:"pre"},'# Change the variables according to your needs\nSUBMARINE_VERSION=3.3.0-SNAPSHOT\nWORKER_NUM=2\nSGE_CFG_PATH=/cfg\nTHCHS30_PATH=/data/hdfs1/nfs/aisearch/kaldi/thchs30\nDOCKER_HADOOP_HDFS_HOME=/app/${SUBMARINE_VERSION}\n\n# Dependent on registrydns, you must fill in < your RegistryDNSIP> in resolv.conf\nyarn jar /usr/local/matrix/share/hadoop/yarn/${SUBMARINE_VERSION}.jar \\\njob run --name kaldi-thchs30-distributed \\\n--env DOCKER_JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre/ \\\n--env DOCKER_HADOOP_HDFS_HOME=$DOCKER_HADOOP_HDFS_HOME \\\n--env YARN_CONTAINER_RUNTIME_DOCKER_CONTAINER_NETWORK=calico-network \\\n--env PYTHONUNBUFFERED="0" \\\n--env TZ="Asia/Shanghai" \\\n--env YARN_CONTAINER_RUNTIME_DOCKER_MOUNTS=${THCHS30_PATH}/sge/resolv.conf:/etc/resolv.conf,\\\n${THCHS30_PATH}/sge/passwd:/etc/passwd:rw,\\\n${THCHS30_PATH}/sge/group:/etc/group:rw,\\\n${THCHS30_PATH}/sge:$SGE_CFG_PATH,\\\n${THCHS30_PATH}/data:/opt/kaldi/egs/thchs30,\\\n${THCHS30_PATH}/mul/s5:/opt/kaldi/egs/mul-thchs30/s5 \\\n--input_path /opt/kaldi/egs/thchs30/data \\\n--docker_image hadoopsubmarine/kaldi-latest-gpu-base:0.0.1 \\\n--num_workers $WORKER_NUM \\\n--worker_resources memory=64G,vcores=32,gpu=1 \\\n--worker_launch_cmd "sudo mkdir -p /opt/kaldi/egs/mul-thchs30/s5 && \\\nsudo cp /opt/kaldi/egs/thchs30/s5/* /opt/kaldi/egs/mul-thchs30/s5 -r && \\\ncluster_user=`whoami` domain_suffix="ml.com" && \\\ncd /cfg && bash sge_run.sh $WORKER_NUM $SGE_CFG_PATH && \\\nif [ $(echo $HOST_NAME |grep "^master-") ] then sleep 2m && cd /opt/kaldi/egs/mul-thchs30/s5 && ./run.sh fi" \\\n--verbose\n')),Object(u.b)("p",null,"Explanations:"),Object(u.b)("ul",null,Object(u.b)("li",{parentName:"ul"},Object(u.b)("inlineCode",{parentName:"li"},">1")," num_workers indicates it is a distributed training."),Object(u.b)("li",{parentName:"ul"},"Parameters / resources / Docker image of parameter server can be specified separately. For many cases, parameter server doesn't require GPU.We don't need parameter server here")),Object(u.b)("p",null,"For the meaning of the individual parameters, see the ",Object(u.b)("a",{parentName:"p",href:"../../adminDocs/yarn/README"},"QuickStart")," page!"),Object(u.b)("p",null,Object(u.b)("em",{parentName:"p"},"Outputs of distributed training")),Object(u.b)("p",null,"Sample output of master:"),Object(u.b)("pre",null,Object(u.b)("code",{parentName:"pre"},"...\nReading package lists...\nBuilding dependency tree...\nReading state information...\nThe following additional packages will be installed:\n  bsd-mailx cpio gridengine-common ifupdown iproute2 isc-dhcp-client\n  isc-dhcp-common libatm1 libdns-export162 libisc-export160 liblockfile-bin\n  liblockfile1 libmnl0 libxmuu1 libxtables11 ncurses-term netbase\n  openssh-client openssh-server openssh-sftp-server postfix python3-chardet\n  python3-pkg-resources python3-requests python3-six python3-urllib3\n  ssh-import-id ssl-cert tcsh xauth\nSuggested packages:\n  libarchive1 gridengine-qmon ppp rdnssd iproute2-doc resolvconf avahi-autoipd\n  isc-dhcp-client-ddns apparmor ssh-askpass libpam-ssh keychain monkeysphere\n  rssh molly-guard ufw procmail postfix-mysql postfix-pgsql postfix-ldap\n  postfix-pcre sasl2-bin libsasl2-modules dovecot-common postfix-cdb\n  postfix-doc python3-setuptools python3-ndg-httpsclient python3-openssl\n  python3-pyasn1 openssl-blacklist\nThe following NEW packages will be installed:\n  bsd-mailx cpio gridengine-client gridengine-common gridengine-exec\n  gridengine-master ifupdown iproute2 isc-dhcp-client isc-dhcp-common libatm1\n  libdns-export162 libisc-export160 liblockfile-bin liblockfile1 libmnl0\n  libxmuu1 libxtables11 ncurses-term netbase openssh-client openssh-server\n  openssh-sftp-server postfix python3-chardet python3-pkg-resources\n  python3-requests python3-six python3-urllib3 ssh-import-id ssl-cert tcsh\n  xauth\n0 upgraded, 33 newly installed, 0 to remove and 30 not upgraded.\nNeed to get 12.1 MB of archives.\nAfter this operation, 65.8 MB of additional disk space will be used.\nGet:1 http://archive.ubuntu.com/ubuntu xenial/main amd64 libatm1 amd64 1:2.5.1-1.5 [24.2 kB]\nGet:2 http://archive.ubuntu.com/ubuntu xenial/main amd64 libmnl0 amd64 1.0.3-5 [12.0 kB]\nGet:3 http://archive.ubuntu.com/ubuntu xenial/main amd64 liblockfile-bin amd64 1.09-6ubuntu1 [10.8 kB]\nGet:4 http://archive.ubuntu.com/ubuntu xenial/main amd64 liblockfile1 amd64 1.09-6ubuntu1 [8056 B]\nGet:5 http://archive.ubuntu.com/ubuntu xenial/main amd64 cpio amd64 2.11+dfsg-5ubuntu1 [74.8 kB]\nGet:6 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 iproute2 amd64 4.3.0-1ubuntu3.16.04.5 [523 kB]\nGet:7 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 ifupdown amd64 0.8.10ubuntu1.4 [54.9 kB]\nGet:8 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libisc-export160 amd64 1:9.10.3.dfsg.P4-8ubuntu1.15 [153 kB]\nGet:9 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libdns-export162 amd64 1:9.10.3.dfsg.P4-8ubuntu1.15 [665 kB]\nGet:10 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 isc-dhcp-client amd64 4.3.3-5ubuntu12.10 [224 kB]\nGet:11 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 isc-dhcp-common amd64 4.3.3-5ubuntu12.10 [105 kB]\nGet:12 http://archive.ubuntu.com/ubuntu xenial/main amd64 libxtables11 amd64 1.6.0-2ubuntu3 [27.2 kB]\nGet:13 http://archive.ubuntu.com/ubuntu xenial/main amd64 netbase all 5.3 [12.9 kB]\nGet:14 http://archive.ubuntu.com/ubuntu xenial/main amd64 libxmuu1 amd64 2:1.1.2-2 [9674 B]\nGet:15 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 openssh-client amd64 1:7.2p2-4ubuntu2.8 [590 kB]\nGet:16 http://archive.ubuntu.com/ubuntu xenial/main amd64 xauth amd64 1:1.0.9-1ubuntu2 [22.7 kB]\nGet:17 http://archive.ubuntu.com/ubuntu xenial/main amd64 ssl-cert all 1.0.37 [16.9 kB]\nGet:18 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 postfix amd64 3.1.0-3ubuntu0.3 [1152 kB]\nGet:19 http://archive.ubuntu.com/ubuntu xenial/main amd64 bsd-mailx amd64 8.1.2-0.20160123cvs-2 [63.7 kB]\nGet:20 http://archive.ubuntu.com/ubuntu xenial/universe amd64 gridengine-common all 6.2u5-7.4 [156 kB]\nGet:21 http://archive.ubuntu.com/ubuntu xenial/universe amd64 gridengine-client amd64 6.2u5-7.4 [3394 kB]\nGet:22 http://archive.ubuntu.com/ubuntu xenial/universe amd64 tcsh amd64 6.18.01-5 [410 kB]\nGet:23 http://archive.ubuntu.com/ubuntu xenial/universe amd64 gridengine-exec amd64 6.2u5-7.4 [990 kB]\nGet:24 http://archive.ubuntu.com/ubuntu xenial/universe amd64 gridengine-master amd64 6.2u5-7.4 [2429 kB]\nGet:25 http://archive.ubuntu.com/ubuntu xenial/main amd64 ncurses-term all 6.0+20160213-1ubuntu1 [249 kB]\nGet:26 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 openssh-sftp-server amd64 1:7.2p2-4ubuntu2.8 [38.9 kB]\nGet:27 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 openssh-server amd64 1:7.2p2-4ubuntu2.8 [335 kB]\nGet:28 http://archive.ubuntu.com/ubuntu xenial/main amd64 python3-pkg-resources all 20.7.0-1 [79.0 kB]\nGet:29 http://archive.ubuntu.com/ubuntu xenial/main amd64 python3-chardet all 2.3.0-2 [96.2 kB]\nGet:30 http://archive.ubuntu.com/ubuntu xenial/main amd64 python3-six all 1.10.0-3 [11.0 kB]\nGet:31 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 python3-urllib3 all 1.13.1-2ubuntu0.16.04.3 [58.5 kB]\nGet:32 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 python3-requests all 2.9.1-3ubuntu0.1 [55.8 kB]\nGet:33 http://archive.ubuntu.com/ubuntu xenial/main amd64 ssh-import-id all 5.5-0ubuntu1 [10.2 kB]\nFetched 12.1 MB in 0s (15.0 MB/s)\nSelecting previously unselected package libatm1:amd64.\n(Reading database ...\n(Reading database ... 5%\n(Reading database ... 10%\n(Reading database ... 15%\n(Reading database ... 20%\n(Reading database ... 25%\n(Reading database ... 30%\n(Reading database ... 35%\n(Reading database ... 40%\n(Reading database ... 45%\n(Reading database ... 50%\n(Reading database ... 55%\n(Reading database ... 60%\n(Reading database ... 65%\n(Reading database ... 70%\n(Reading database ... 75%\n(Reading database ... 80%\n(Reading database ... 85%\n(Reading database ... 90%\n(Reading database ... 95%\n(Reading database ... 100%\n(Reading database ... 21398 files and directories currently installed.)\nPreparing to unpack .../libatm1_1%3a2.5.1-1.5_amd64.deb ...\nUnpacking libatm1:amd64 (1:2.5.1-1.5) ...\nSelecting previously unselected package libmnl0:amd64.\nPreparing to unpack .../libmnl0_1.0.3-5_amd64.deb ...\nUnpacking libmnl0:amd64 (1.0.3-5) ...\nSelecting previously unselected package liblockfile-bin.\nPreparing to unpack .../liblockfile-bin_1.09-6ubuntu1_amd64.deb ...\nUnpacking liblockfile-bin (1.09-6ubuntu1) ...\nSelecting previously unselected package liblockfile1:amd64.\nPreparing to unpack .../liblockfile1_1.09-6ubuntu1_amd64.deb ...\nUnpacking liblockfile1:amd64 (1.09-6ubuntu1) ...\nSelecting previously unselected package cpio.\nPreparing to unpack .../cpio_2.11+dfsg-5ubuntu1_amd64.deb ...\nUnpacking cpio (2.11+dfsg-5ubuntu1) ...\nSelecting previously unselected package iproute2.\nPreparing to unpack .../iproute2_4.3.0-1ubuntu3.16.04.5_amd64.deb ...\nUnpacking iproute2 (4.3.0-1ubuntu3.16.04.5) ...\nSelecting previously unselected package ifupdown.\nPreparing to unpack .../ifupdown_0.8.10ubuntu1.4_amd64.deb ...\nUnpacking ifupdown (0.8.10ubuntu1.4) ...\nSelecting previously unselected package libisc-export160.\nPreparing to unpack .../libisc-export160_1%3a9.10.3.dfsg.P4-8ubuntu1.15_amd64.deb ...\nUnpacking libisc-export160 (1:9.10.3.dfsg.P4-8ubuntu1.15) ...\nSelecting previously unselected package libdns-export162.\nPreparing to unpack .../libdns-export162_1%3a9.10.3.dfsg.P4-8ubuntu1.15_amd64.deb ...\nUnpacking libdns-export162 (1:9.10.3.dfsg.P4-8ubuntu1.15) ...\nSelecting previously unselected package isc-dhcp-client.\nPreparing to unpack .../isc-dhcp-client_4.3.3-5ubuntu12.10_amd64.deb ...\nUnpacking isc-dhcp-client (4.3.3-5ubuntu12.10) ...\nSelecting previously unselected package isc-dhcp-common.\nPreparing to unpack .../isc-dhcp-common_4.3.3-5ubuntu12.10_amd64.deb ...\nUnpacking isc-dhcp-common (4.3.3-5ubuntu12.10) ...\nSelecting previously unselected package libxtables11:amd64.\nPreparing to unpack .../libxtables11_1.6.0-2ubuntu3_amd64.deb ...\nUnpacking libxtables11:amd64 (1.6.0-2ubuntu3) ...\nSelecting previously unselected package netbase.\nPreparing to unpack .../archives/netbase_5.3_all.deb ...\nUnpacking netbase (5.3) ...\nSelecting previously unselected package libxmuu1:amd64.\nPreparing to unpack .../libxmuu1_2%3a1.1.2-2_amd64.deb ...\nUnpacking libxmuu1:amd64 (2:1.1.2-2) ...\nSelecting previously unselected package openssh-client.\nPreparing to unpack .../openssh-client_1%3a7.2p2-4ubuntu2.8_amd64.deb ...\nUnpacking openssh-client (1:7.2p2-4ubuntu2.8) ...\nSelecting previously unselected package xauth.\nPreparing to unpack .../xauth_1%3a1.0.9-1ubuntu2_amd64.deb ...\nUnpacking xauth (1:1.0.9-1ubuntu2) ...\nSelecting previously unselected package ssl-cert.\nPreparing to unpack .../ssl-cert_1.0.37_all.deb ...\nUnpacking ssl-cert (1.0.37) ...\nSelecting previously unselected package postfix.\nPreparing to unpack .../postfix_3.1.0-3ubuntu0.3_amd64.deb ...\nUnpacking postfix (3.1.0-3ubuntu0.3) ...\nSelecting previously unselected package bsd-mailx.\nPreparing to unpack .../bsd-mailx_8.1.2-0.20160123cvs-2_amd64.deb ...\nUnpacking bsd-mailx (8.1.2-0.20160123cvs-2) ...\nSelecting previously unselected package gridengine-common.\nPreparing to unpack .../gridengine-common_6.2u5-7.4_all.deb ...\nUnpacking gridengine-common (6.2u5-7.4) ...\nSelecting previously unselected package gridengine-client.\nPreparing to unpack .../gridengine-client_6.2u5-7.4_amd64.deb ...\nUnpacking gridengine-client (6.2u5-7.4) ...\nSelecting previously unselected package tcsh.\nPreparing to unpack .../tcsh_6.18.01-5_amd64.deb ...\nUnpacking tcsh (6.18.01-5) ...\nSelecting previously unselected package gridengine-exec.\nPreparing to unpack .../gridengine-exec_6.2u5-7.4_amd64.deb ...\nUnpacking gridengine-exec (6.2u5-7.4) ...\nSelecting previously unselected package gridengine-master.\nPreparing to unpack .../gridengine-master_6.2u5-7.4_amd64.deb ...\nUnpacking gridengine-master (6.2u5-7.4) ...\nSelecting previously unselected package ncurses-term.\nPreparing to unpack .../ncurses-term_6.0+20160213-1ubuntu1_all.deb ...\nUnpacking ncurses-term (6.0+20160213-1ubuntu1) ...\nSelecting previously unselected package openssh-sftp-server.\nPreparing to unpack .../openssh-sftp-server_1%3a7.2p2-4ubuntu2.8_amd64.deb ...\nUnpacking openssh-sftp-server (1:7.2p2-4ubuntu2.8) ...\nSelecting previously unselected package openssh-server.\nPreparing to unpack .../openssh-server_1%3a7.2p2-4ubuntu2.8_amd64.deb ...\nUnpacking openssh-server (1:7.2p2-4ubuntu2.8) ...\nSelecting previously unselected package python3-pkg-resources.\nPreparing to unpack .../python3-pkg-resources_20.7.0-1_all.deb ...\nUnpacking python3-pkg-resources (20.7.0-1) ...\nSelecting previously unselected package python3-chardet.\nPreparing to unpack .../python3-chardet_2.3.0-2_all.deb ...\nUnpacking python3-chardet (2.3.0-2) ...\nSelecting previously unselected package python3-six.\nPreparing to unpack .../python3-six_1.10.0-3_all.deb ...\nUnpacking python3-six (1.10.0-3) ...\nSelecting previously unselected package python3-urllib3.\nPreparing to unpack .../python3-urllib3_1.13.1-2ubuntu0.16.04.3_all.deb ...\nUnpacking python3-urllib3 (1.13.1-2ubuntu0.16.04.3) ...\nSelecting previously unselected package python3-requests.\nPreparing to unpack .../python3-requests_2.9.1-3ubuntu0.1_all.deb ...\nUnpacking python3-requests (2.9.1-3ubuntu0.1) ...\nSelecting previously unselected package ssh-import-id.\nPreparing to unpack .../ssh-import-id_5.5-0ubuntu1_all.deb ...\nUnpacking ssh-import-id (5.5-0ubuntu1) ...\nProcessing triggers for systemd (229-4ubuntu21.22) ...\nProcessing triggers for libc-bin (2.23-0ubuntu11) ...\nSetting up libatm1:amd64 (1:2.5.1-1.5) ...\nSetting up libmnl0:amd64 (1.0.3-5) ...\nSetting up liblockfile-bin (1.09-6ubuntu1) ...\nSetting up liblockfile1:amd64 (1.09-6ubuntu1) ...\nSetting up cpio (2.11+dfsg-5ubuntu1) ...\nupdate-alternatives: using /bin/mt-gnu to provide /bin/mt (mt) in auto mode\nSetting up iproute2 (4.3.0-1ubuntu3.16.04.5) ...\nSetting up ifupdown (0.8.10ubuntu1.4) ...\nCreating /etc/network/interfaces.\nSetting up libisc-export160 (1:9.10.3.dfsg.P4-8ubuntu1.15) ...\nSetting up libdns-export162 (1:9.10.3.dfsg.P4-8ubuntu1.15) ...\nSetting up isc-dhcp-client (4.3.3-5ubuntu12.10) ...\nSetting up isc-dhcp-common (4.3.3-5ubuntu12.10) ...\nSetting up libxtables11:amd64 (1.6.0-2ubuntu3) ...\nSetting up netbase (5.3) ...\nSetting up libxmuu1:amd64 (2:1.1.2-2) ...\nSetting up openssh-client (1:7.2p2-4ubuntu2.8) ...\nSetting up xauth (1:1.0.9-1ubuntu2) ...\nSetting up ssl-cert (1.0.37) ...\nSetting up postfix (3.1.0-3ubuntu0.3) ...\nCreating /etc/postfix/dynamicmaps.cf\nsetting myhostname: master-0.XXX\nsetting alias maps\nsetting alias database\nchanging /etc/mailname to master-0.XXX\nsetting myorigin\nsetting destinations: $myhostname, master-0.XXX, localhost.XXX, , localhost\nsetting relayhost:\nsetting mynetworks: 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128\nsetting mailbox_size_limit: 0\nsetting recipient_delimiter: +\nsetting inet_interfaces: all\nsetting inet_protocols: all\n/etc/aliases does not exist, creating it.\nWARNING: /etc/aliases exists, but does not have a root alias.\n\nPostfix is now set up with a default configuration.  If you need to make\nchanges, edit\n/etc/postfix/main.cf (and others) as needed.  To view Postfix configuration\nvalues, see postconf(1).\n\nAfter modifying main.cf, be sure to run '/etc/init.d/postfix reload'.\n\nRunning newaliases\ninvoke-rc.d: could not determine current runlevel\ninvoke-rc.d: policy-rc.d denied execution of restart.\nSetting up bsd-mailx (8.1.2-0.20160123cvs-2) ...\nupdate-alternatives: using /usr/bin/bsd-mailx to provide /usr/bin/mailx (mailx) in auto mode\nSetting up gridengine-common (6.2u5-7.4) ...\n\nCreating config file /etc/default/gridengine with new version\nSetting up gridengine-client (6.2u5-7.4) ...\nSetting up tcsh (6.18.01-5) ...\nupdate-alternatives: using /bin/tcsh to provide /bin/csh (csh) in auto mode\nSetting up gridengine-exec (6.2u5-7.4) ...\ninvoke-rc.d: could not determine current runlevel\ninvoke-rc.d: policy-rc.d denied execution of start.\nSetting up gridengine-master (6.2u5-7.4) ...\nsu: Authentication failure\n(Ignored)\nInitializing cluster with the following parameters:\n => SGE_ROOT: /var/lib/gridengine\n => SGE_CELL: default\n => Spool directory: /var/spool/gridengine/spooldb\n => Initial manager user: sgeadmin\nInitializing spool (/var/spool/gridengine/spooldb)\nInitializing global configuration based on /usr/share/gridengine/default-configuration\nInitializing complexes based on /usr/share/gridengine/centry\nInitializing usersets based on /usr/share/gridengine/usersets\nAdding user sgeadmin as a manager\nCluster creation complete\ninvoke-rc.d: could not determine current runlevel\ninvoke-rc.d: policy-rc.d denied execution of start.\nSetting up ncurses-term (6.0+20160213-1ubuntu1) ...\nSetting up openssh-sftp-server (1:7.2p2-4ubuntu2.8) ...\nSetting up openssh-server (1:7.2p2-4ubuntu2.8) ...\nCreating SSH2 RSA key; this may take some time ...\n2048 SHA256:hfQpES1aS4cjF8AOCIParZR6342vdwutoyITru0wtuE root@master-0.XXX (RSA)\nCreating SSH2 DSA key; this may take some time ...\n1024 SHA256:gOsPMVgwXBHJzixN/gtJAG+hVCHqw8t7Fhy4nsx8od0 root@master-0.XXX (DSA)\nCreating SSH2 ECDSA key; this may take some time ...\n256 SHA256:3D5SNniUb4z+/BuqXheFgG+DfjsxXqTT/zwWAqdX4jM root@master-0.XXX (ECDSA)\nCreating SSH2 ED25519 key; this may take some time ...\n256 SHA256:SwyeV9iSqOW4TKLi4Wvc0zD8lWtupHCJpDu8oWBwbfU root@master-0.XXX (ED25519)\ninvoke-rc.d: could not determine current runlevel\ninvoke-rc.d: policy-rc.d denied execution of start.\nSetting up python3-pkg-resources (20.7.0-1) ...\nSetting up python3-chardet (2.3.0-2) ...\nSetting up python3-six (1.10.0-3) ...\nSetting up python3-urllib3 (1.13.1-2ubuntu0.16.04.3) ...\nSetting up python3-requests (2.9.1-3ubuntu0.1) ...\nSetting up ssh-import-id (5.5-0ubuntu1) ...\nProcessing triggers for libc-bin (2.23-0ubuntu11) ...\nProcessing triggers for systemd (229-4ubuntu21.22) ...\nReading package lists...\nBuilding dependency tree...\nReading state information...\n0 upgraded, 0 newly installed, 0 to remove and 30 not upgraded.\n")),Object(u.b)("p",null,"cat $SGE_CFG_PATH/setcfg.log"),Object(u.b)("pre",null,Object(u.b)("code",{parentName:"pre"},"finish master\nadd worker node worker-0.XXX\n")),Object(u.b)("p",null,"Sample output of worker:"),Object(u.b)("pre",null,Object(u.b)("code",{parentName:"pre"},"please wait\nReading package lists...\nBuilding dependency tree...\nReading state information...\nThe following additional packages will be installed:\n  bsd-mailx cpio gridengine-common ifupdown iproute2 isc-dhcp-client\n  isc-dhcp-common libatm1 libdns-export162 libisc-export160 liblockfile-bin\n  liblockfile1 libmnl0 libxmuu1 libxtables11 ncurses-term netbase\n  openssh-client openssh-server openssh-sftp-server postfix python3-chardet\n  python3-pkg-resources python3-requests python3-six python3-urllib3\n  ssh-import-id ssl-cert tcsh xauth\nSuggested packages:\n  libarchive1 gridengine-qmon ppp rdnssd iproute2-doc resolvconf avahi-autoipd\n  isc-dhcp-client-ddns apparmor ssh-askpass libpam-ssh keychain monkeysphere\n  rssh molly-guard ufw procmail postfix-mysql postfix-pgsql postfix-ldap\n  postfix-pcre sasl2-bin libsasl2-modules dovecot-common postfix-cdb\n  postfix-doc python3-setuptools python3-ndg-httpsclient python3-openssl\n  python3-pyasn1 openssl-blacklist\nThe following NEW packages will be installed:\n  bsd-mailx cpio gridengine-client gridengine-common gridengine-exec ifupdown\n  iproute2 isc-dhcp-client isc-dhcp-common libatm1 libdns-export162\n  libisc-export160 liblockfile-bin liblockfile1 libmnl0 libxmuu1 libxtables11\n  ncurses-term netbase openssh-client openssh-server openssh-sftp-server\n  postfix python3-chardet python3-pkg-resources python3-requests python3-six\n  python3-urllib3 ssh-import-id ssl-cert tcsh xauth\n0 upgraded, 32 newly installed, 0 to remove and 30 not upgraded.\nNeed to get 9633 kB of archives.\nAfter this operation, 51.2 MB of additional disk space will be used.\nGet:1 http://archive.ubuntu.com/ubuntu xenial/main amd64 libatm1 amd64 1:2.5.1-1.5 [24.2 kB]\nGet:2 http://archive.ubuntu.com/ubuntu xenial/main amd64 libmnl0 amd64 1.0.3-5 [12.0 kB]\nGet:3 http://archive.ubuntu.com/ubuntu xenial/main amd64 liblockfile-bin amd64 1.09-6ubuntu1 [10.8 kB]\nGet:4 http://archive.ubuntu.com/ubuntu xenial/main amd64 liblockfile1 amd64 1.09-6ubuntu1 [8056 B]\nGet:5 http://archive.ubuntu.com/ubuntu xenial/main amd64 cpio amd64 2.11+dfsg-5ubuntu1 [74.8 kB]\nGet:6 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 iproute2 amd64 4.3.0-1ubuntu3.16.04.5 [523 kB]\nGet:7 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 ifupdown amd64 0.8.10ubuntu1.4 [54.9 kB]\nGet:8 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libisc-export160 amd64 1:9.10.3.dfsg.P4-8ubuntu1.15 [153 kB]\nGet:9 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libdns-export162 amd64 1:9.10.3.dfsg.P4-8ubuntu1.15 [665 kB]\nGet:10 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 isc-dhcp-client amd64 4.3.3-5ubuntu12.10 [224 kB]\nGet:11 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 isc-dhcp-common amd64 4.3.3-5ubuntu12.10 [105 kB]\nGet:12 http://archive.ubuntu.com/ubuntu xenial/main amd64 libxtables11 amd64 1.6.0-2ubuntu3 [27.2 kB]\nGet:13 http://archive.ubuntu.com/ubuntu xenial/main amd64 netbase all 5.3 [12.9 kB]\nGet:14 http://archive.ubuntu.com/ubuntu xenial/main amd64 libxmuu1 amd64 2:1.1.2-2 [9674 B]\nGet:15 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 openssh-client amd64 1:7.2p2-4ubuntu2.8 [590 kB]\nGet:16 http://archive.ubuntu.com/ubuntu xenial/main amd64 xauth amd64 1:1.0.9-1ubuntu2 [22.7 kB]\nGet:17 http://archive.ubuntu.com/ubuntu xenial/main amd64 ssl-cert all 1.0.37 [16.9 kB]\nGet:18 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 postfix amd64 3.1.0-3ubuntu0.3 [1152 kB]\nGet:19 http://archive.ubuntu.com/ubuntu xenial/main amd64 bsd-mailx amd64 8.1.2-0.20160123cvs-2 [63.7 kB]\nGet:20 http://archive.ubuntu.com/ubuntu xenial/universe amd64 gridengine-common all 6.2u5-7.4 [156 kB]\nGet:21 http://archive.ubuntu.com/ubuntu xenial/universe amd64 gridengine-client amd64 6.2u5-7.4 [3394 kB]\nGet:22 http://archive.ubuntu.com/ubuntu xenial/universe amd64 tcsh amd64 6.18.01-5 [410 kB]\nGet:23 http://archive.ubuntu.com/ubuntu xenial/universe amd64 gridengine-exec amd64 6.2u5-7.4 [990 kB]\nGet:24 http://archive.ubuntu.com/ubuntu xenial/main amd64 ncurses-term all 6.0+20160213-1ubuntu1 [249 kB]\nGet:25 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 openssh-sftp-server amd64 1:7.2p2-4ubuntu2.8 [38.9 kB]\nGet:26 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 openssh-server amd64 1:7.2p2-4ubuntu2.8 [335 kB]\nGet:27 http://archive.ubuntu.com/ubuntu xenial/main amd64 python3-pkg-resources all 20.7.0-1 [79.0 kB]\nGet:28 http://archive.ubuntu.com/ubuntu xenial/main amd64 python3-chardet all 2.3.0-2 [96.2 kB]\nGet:29 http://archive.ubuntu.com/ubuntu xenial/main amd64 python3-six all 1.10.0-3 [11.0 kB]\nGet:30 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 python3-urllib3 all 1.13.1-2ubuntu0.16.04.3 [58.5 kB]\nGet:31 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 python3-requests all 2.9.1-3ubuntu0.1 [55.8 kB]\nGet:32 http://archive.ubuntu.com/ubuntu xenial/main amd64 ssh-import-id all 5.5-0ubuntu1 [10.2 kB]\nFetched 9633 kB in 2s (4496 kB/s)\nSelecting previously unselected package libatm1:amd64.\n(Reading database ...\n(Reading database ... 5%\n(Reading database ... 10%\n(Reading database ... 15%\n(Reading database ... 20%\n(Reading database ... 25%\n(Reading database ... 30%\n(Reading database ... 35%\n(Reading database ... 40%\n(Reading database ... 45%\n(Reading database ... 50%\n(Reading database ... 55%\n(Reading database ... 60%\n(Reading database ... 65%\n(Reading database ... 70%\n(Reading database ... 75%\n(Reading database ... 80%\n(Reading database ... 85%\n(Reading database ... 90%\n(Reading database ... 95%\n(Reading database ... 100%\n(Reading database ... 21398 files and directories currently installed.)\nPreparing to unpack .../libatm1_1%3a2.5.1-1.5_amd64.deb ...\nUnpacking libatm1:amd64 (1:2.5.1-1.5) ...\nSelecting previously unselected package libmnl0:amd64.\nPreparing to unpack .../libmnl0_1.0.3-5_amd64.deb ...\nUnpacking libmnl0:amd64 (1.0.3-5) ...\nSelecting previously unselected package liblockfile-bin.\nPreparing to unpack .../liblockfile-bin_1.09-6ubuntu1_amd64.deb ...\nUnpacking liblockfile-bin (1.09-6ubuntu1) ...\nSelecting previously unselected package liblockfile1:amd64.\nPreparing to unpack .../liblockfile1_1.09-6ubuntu1_amd64.deb ...\nUnpacking liblockfile1:amd64 (1.09-6ubuntu1) ...\nSelecting previously unselected package cpio.\nPreparing to unpack .../cpio_2.11+dfsg-5ubuntu1_amd64.deb ...\nUnpacking cpio (2.11+dfsg-5ubuntu1) ...\nSelecting previously unselected package iproute2.\nPreparing to unpack .../iproute2_4.3.0-1ubuntu3.16.04.5_amd64.deb ...\nUnpacking iproute2 (4.3.0-1ubuntu3.16.04.5) ...\nSelecting previously unselected package ifupdown.\nPreparing to unpack .../ifupdown_0.8.10ubuntu1.4_amd64.deb ...\nUnpacking ifupdown (0.8.10ubuntu1.4) ...\nSelecting previously unselected package libisc-export160.\nPreparing to unpack .../libisc-export160_1%3a9.10.3.dfsg.P4-8ubuntu1.15_amd64.deb ...\nUnpacking libisc-export160 (1:9.10.3.dfsg.P4-8ubuntu1.15) ...\nSelecting previously unselected package libdns-export162.\nPreparing to unpack .../libdns-export162_1%3a9.10.3.dfsg.P4-8ubuntu1.15_amd64.deb ...\nUnpacking libdns-export162 (1:9.10.3.dfsg.P4-8ubuntu1.15) ...\nSelecting previously unselected package isc-dhcp-client.\nPreparing to unpack .../isc-dhcp-client_4.3.3-5ubuntu12.10_amd64.deb ...\nUnpacking isc-dhcp-client (4.3.3-5ubuntu12.10) ...\nSelecting previously unselected package isc-dhcp-common.\nPreparing to unpack .../isc-dhcp-common_4.3.3-5ubuntu12.10_amd64.deb ...\nUnpacking isc-dhcp-common (4.3.3-5ubuntu12.10) ...\nSelecting previously unselected package libxtables11:amd64.\nPreparing to unpack .../libxtables11_1.6.0-2ubuntu3_amd64.deb ...\nUnpacking libxtables11:amd64 (1.6.0-2ubuntu3) ...\nSelecting previously unselected package netbase.\nPreparing to unpack .../archives/netbase_5.3_all.deb ...\nUnpacking netbase (5.3) ...\nSelecting previously unselected package libxmuu1:amd64.\nPreparing to unpack .../libxmuu1_2%3a1.1.2-2_amd64.deb ...\nUnpacking libxmuu1:amd64 (2:1.1.2-2) ...\nSelecting previously unselected package openssh-client.\nPreparing to unpack .../openssh-client_1%3a7.2p2-4ubuntu2.8_amd64.deb ...\nUnpacking openssh-client (1:7.2p2-4ubuntu2.8) ...\nSelecting previously unselected package xauth.\nPreparing to unpack .../xauth_1%3a1.0.9-1ubuntu2_amd64.deb ...\nUnpacking xauth (1:1.0.9-1ubuntu2) ...\nSelecting previously unselected package ssl-cert.\nPreparing to unpack .../ssl-cert_1.0.37_all.deb ...\nUnpacking ssl-cert (1.0.37) ...\nSelecting previously unselected package postfix.\nPreparing to unpack .../postfix_3.1.0-3ubuntu0.3_amd64.deb ...\nUnpacking postfix (3.1.0-3ubuntu0.3) ...\nSelecting previously unselected package bsd-mailx.\nPreparing to unpack .../bsd-mailx_8.1.2-0.20160123cvs-2_amd64.deb ...\nUnpacking bsd-mailx (8.1.2-0.20160123cvs-2) ...\nSelecting previously unselected package gridengine-common.\nPreparing to unpack .../gridengine-common_6.2u5-7.4_all.deb ...\nUnpacking gridengine-common (6.2u5-7.4) ...\nSelecting previously unselected package gridengine-client.\nPreparing to unpack .../gridengine-client_6.2u5-7.4_amd64.deb ...\nUnpacking gridengine-client (6.2u5-7.4) ...\nSelecting previously unselected package tcsh.\nPreparing to unpack .../tcsh_6.18.01-5_amd64.deb ...\nUnpacking tcsh (6.18.01-5) ...\nSelecting previously unselected package gridengine-exec.\nPreparing to unpack .../gridengine-exec_6.2u5-7.4_amd64.deb ...\nUnpacking gridengine-exec (6.2u5-7.4) ...\nSelecting previously unselected package ncurses-term.\nPreparing to unpack .../ncurses-term_6.0+20160213-1ubuntu1_all.deb ...\nUnpacking ncurses-term (6.0+20160213-1ubuntu1) ...\nSelecting previously unselected package openssh-sftp-server.\nPreparing to unpack .../openssh-sftp-server_1%3a7.2p2-4ubuntu2.8_amd64.deb ...\nUnpacking openssh-sftp-server (1:7.2p2-4ubuntu2.8) ...\nSelecting previously unselected package openssh-server.\nPreparing to unpack .../openssh-server_1%3a7.2p2-4ubuntu2.8_amd64.deb ...\nUnpacking openssh-server (1:7.2p2-4ubuntu2.8) ...\nSelecting previously unselected package python3-pkg-resources.\nPreparing to unpack .../python3-pkg-resources_20.7.0-1_all.deb ...\nUnpacking python3-pkg-resources (20.7.0-1) ...\nSelecting previously unselected package python3-chardet.\nPreparing to unpack .../python3-chardet_2.3.0-2_all.deb ...\nUnpacking python3-chardet (2.3.0-2) ...\nSelecting previously unselected package python3-six.\nPreparing to unpack .../python3-six_1.10.0-3_all.deb ...\nUnpacking python3-six (1.10.0-3) ...\nSelecting previously unselected package python3-urllib3.\nPreparing to unpack .../python3-urllib3_1.13.1-2ubuntu0.16.04.3_all.deb ...\nUnpacking python3-urllib3 (1.13.1-2ubuntu0.16.04.3) ...\nSelecting previously unselected package python3-requests.\nPreparing to unpack .../python3-requests_2.9.1-3ubuntu0.1_all.deb ...\nUnpacking python3-requests (2.9.1-3ubuntu0.1) ...\nSelecting previously unselected package ssh-import-id.\nPreparing to unpack .../ssh-import-id_5.5-0ubuntu1_all.deb ...\nUnpacking ssh-import-id (5.5-0ubuntu1) ...\nProcessing triggers for systemd (229-4ubuntu21.22) ...\nProcessing triggers for libc-bin (2.23-0ubuntu11) ...\nSetting up libatm1:amd64 (1:2.5.1-1.5) ...\nSetting up libmnl0:amd64 (1.0.3-5) ...\nSetting up liblockfile-bin (1.09-6ubuntu1) ...\nSetting up liblockfile1:amd64 (1.09-6ubuntu1) ...\nSetting up cpio (2.11+dfsg-5ubuntu1) ...\nupdate-alternatives: using /bin/mt-gnu to provide /bin/mt (mt) in auto mode\nSetting up iproute2 (4.3.0-1ubuntu3.16.04.5) ...\nSetting up ifupdown (0.8.10ubuntu1.4) ...\nCreating /etc/network/interfaces.\nSetting up libisc-export160 (1:9.10.3.dfsg.P4-8ubuntu1.15) ...\nSetting up libdns-export162 (1:9.10.3.dfsg.P4-8ubuntu1.15) ...\nSetting up isc-dhcp-client (4.3.3-5ubuntu12.10) ...\nSetting up isc-dhcp-common (4.3.3-5ubuntu12.10) ...\nSetting up libxtables11:amd64 (1.6.0-2ubuntu3) ...\nSetting up netbase (5.3) ...\nSetting up libxmuu1:amd64 (2:1.1.2-2) ...\nSetting up openssh-client (1:7.2p2-4ubuntu2.8) ...\nSetting up xauth (1:1.0.9-1ubuntu2) ...\nSetting up ssl-cert (1.0.37) ...\nSetting up postfix (3.1.0-3ubuntu0.3) ...\nCreating /etc/postfix/dynamicmaps.cf\nsetting myhostname: worker-0.XXX\nsetting alias maps\nsetting alias database\nchanging /etc/mailname to worker-0.XXX\nsetting myorigin\nsetting destinations: $myhostname, worker-0.XXX, localhost.XXX, , localhost\nsetting relayhost:\nsetting mynetworks: 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128\nsetting mailbox_size_limit: 0\nsetting recipient_delimiter: +\nsetting inet_interfaces: all\nsetting inet_protocols: all\n/etc/aliases does not exist, creating it.\nWARNING: /etc/aliases exists, but does not have a root alias.\n\nPostfix is now set up with a default configuration.  If you need to make\nchanges, edit\n/etc/postfix/main.cf (and others) as needed.  To view Postfix configuration\nvalues, see postconf(1).\n\nAfter modifying main.cf, be sure to run '/etc/init.d/postfix reload'.\n\nRunning newaliases\ninvoke-rc.d: could not determine current runlevel\ninvoke-rc.d: policy-rc.d denied execution of restart.\nSetting up bsd-mailx (8.1.2-0.20160123cvs-2) ...\nupdate-alternatives: using /usr/bin/bsd-mailx to provide /usr/bin/mailx (mailx) in auto mode\nSetting up gridengine-common (6.2u5-7.4) ...\n\nCreating config file /etc/default/gridengine with new version\nSetting up gridengine-client (6.2u5-7.4) ...\nSetting up tcsh (6.18.01-5) ...\nupdate-alternatives: using /bin/tcsh to provide /bin/csh (csh) in auto mode\nSetting up gridengine-exec (6.2u5-7.4) ...\ninvoke-rc.d: could not determine current runlevel\ninvoke-rc.d: policy-rc.d denied execution of start.\nSetting up ncurses-term (6.0+20160213-1ubuntu1) ...\nSetting up openssh-sftp-server (1:7.2p2-4ubuntu2.8) ...\nSetting up openssh-server (1:7.2p2-4ubuntu2.8) ...\nCreating SSH2 RSA key; this may take some time ...\n2048 SHA256:ok/TxzwtF5W8I55sDxrt4Agy4fuWn39BiSovvDObhVE root@worker-0.XXX (RSA)\nCreating SSH2 DSA key; this may take some time ...\n1024 SHA256:4y48kVYt3mS3q1KgZzEoYMnS/2d/tA8TJUK5uNSaxZY root@worker-0.XXX (DSA)\nCreating SSH2 ECDSA key; this may take some time ...\n256 SHA256:4D7zm4cD2IbDnHoXnzcIo3FISbvOW8eOstGBNf1/bvo root@worker-0.XXX (ECDSA)\nCreating SSH2 ED25519 key; this may take some time ...\n256 SHA256:/HrA3xiZiH5CZkXwtcfE6GwcMM+hEhZzTdFHxj4PzDg root@worker-0.XXX (ED25519)\ninvoke-rc.d: could not determine current runlevel\ninvoke-rc.d: policy-rc.d denied execution of start.\nSetting up python3-pkg-resources (20.7.0-1) ...\nSetting up python3-chardet (2.3.0-2) ...\nSetting up python3-six (1.10.0-3) ...\nSetting up python3-urllib3 (1.13.1-2ubuntu0.16.04.3) ...\nSetting up python3-requests (2.9.1-3ubuntu0.1) ...\nSetting up ssh-import-id (5.5-0ubuntu1) ...\nProcessing triggers for libc-bin (2.23-0ubuntu11) ...\nProcessing triggers for systemd (229-4ubuntu21.22) ...\nReading package lists...\nBuilding dependency tree...\nReading state information...\n0 upgraded, 0 newly installed, 0 to remove and 30 not upgraded.\n")),Object(u.b)("p",null,"cat $SGE_CFG_PATH/setcfg.log"),Object(u.b)("pre",null,Object(u.b)("code",{parentName:"pre"},"please wait\nStart SGE for worker is finished\ndone for worker-0.XXX worker.\n")),Object(u.b)("p",null,"Sample output of sge:\n",Object(u.b)("img",{alt:"alt text",src:t(249).default,title:"SGE for multiple jobs"})),Object(u.b)("p",null,Object(u.b)("img",{alt:"alt text",src:t(250).default,title:"SGE for user multiple jobs"})))}p.isMDXComponent=!0},209:function(e,n,t){"use strict";t.d(n,"a",(function(){return l})),t.d(n,"b",(function(){return g}));var i=t(0),a=t.n(i);function u(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 i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}function r(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){u(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 c(e,n){if(null==e)return{};var t,i,a=function(e,n){if(null==e)return{};var t,i,a={},u=Object.keys(e);for(i=0;i<u.length;i++)t=u[i],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(i=0;i<u.length;i++)t=u[i],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var o=a.a.createContext({}),p=function(e){var n=a.a.useContext(o),t=n;return e&&(t="function"==typeof e?e(n):r(r({},n),e)),t},l=function(e){var n=p(e.components);return a.a.createElement(o.Provider,{value:n},e.children)},d={inlineCode:"code",wrapper:function(e){var n=e.children;return a.a.createElement(a.a.Fragment,{},n)}},b=a.a.forwardRef((function(e,n){var t=e.components,i=e.mdxType,u=e.originalType,s=e.parentName,o=c(e,["components","mdxType","originalType","parentName"]),l=p(t),b=i,g=l["".concat(s,".").concat(b)]||l[b]||d[b]||u;return t?a.a.createElement(g,r(r({ref:n},o),{},{components:t})):a.a.createElement(g,r({ref:n},o))}));function g(e,n){var t=arguments,i=n&&n.mdxType;if("string"==typeof e||i){var u=t.length,s=new Array(u);s[0]=b;var r={};for(var c in n)hasOwnProperty.call(n,c)&&(r[c]=n[c]);r.originalType=e,r.mdxType="string"==typeof e?e:i,s[1]=r;for(var o=2;o<u;o++)s[o]=t[o];return a.a.createElement.apply(null,s)}return a.a.createElement.apply(null,t)}b.displayName="MDXCreateElement"},249:function(e,n,t){"use strict";t.r(n),n.default=t.p+"assets/images/sge_cluster-b9ac6485a770b5f8a031b29f6f430810.png"},250:function(e,n,t){"use strict";t.r(n),n.default=t.p+"assets/images/sge_stat-29ad9dfe485895eb54eea5baad709e15.png"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[78],{145:function(e,n,t){"use strict";t.r(n),t.d(n,"frontMatter",(function(){return s})),t.d(n,"metadata",(function(){return r})),t.d(n,"toc",(function(){return c})),t.d(n,"default",(function(){return p}));var i=t(3),a=t(7),u=(t(0),t(194)),s={},r={unversionedId:"ecosystem/kaldi/RunningDistributedThchs30KaldiJobs",id:"version-0.6.0/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs",isDocsHomePage:!1,title:"RunningDistributedThchs30KaldiJobs",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs.md",slug:"/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs",permalink:"/docs/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs.md",version:"0.6.0"},c=[{value:"Prepare data for training",id:"prepare-data-for-training",children:[]},{value:"Prepare Docker images",id:"prepare-docker-images",children:[]},{value:"Run Kaldi jobs",id:"run-kaldi-jobs",children:[{value:"Run distributed training",id:"run-distributed-training",children:[]}]}],o={toc:c};function p(e){var n=e.components,s=Object(a.a)(e,["components"]);return Object(u.b)("wrapper",Object(i.a)({},o,s,{components:n,mdxType:"MDXLayout"}),Object(u.b)("h1",{id:"thchs30-kaldi-example-with-yarn-service"},"Thchs30 Kaldi Example With YARN Service"),Object(u.b)("h2",{id:"prepare-data-for-training"},"Prepare data for training"),Object(u.b)("p",null,"Thchs30 is a common benchmark in machine learning for speech data and transcripts. Below example is based on Thchs30 dataset."),Object(u.b)("p",null,"1) download gz file:"),Object(u.b)("pre",null,Object(u.b)("code",{parentName:"pre"},"THCHS30_PATH=/data/hdfs1/nfs/aisearch/kaldi/thchs30\nmkdir $THCHS30_PATH/data && cd $THCHS30_PATH/data\nwget http://www.openslr.org/resources/18/data_thchs30.tgz\nwget http://www.openslr.org/resources/18/test-noise.tgz\nwget http://www.openslr.org/resources/18/resource.tgz\n")),Object(u.b)("p",null,"2) Checkout ",Object(u.b)("a",{parentName:"p",href:"https://github.com/apache/submarine.git"},"https://github.com/apache/submarine.git"),":"),Object(u.b)("pre",null,Object(u.b)("code",{parentName:"pre"},"git clone https://github.com/apache/submarine.git\n")),Object(u.b)("p",null,"3) Go to ",Object(u.b)("inlineCode",{parentName:"p"},"submarine/docker/ecosystem/")),Object(u.b)("pre",null,Object(u.b)("code",{parentName:"pre"},"cp -r ./kaldi/sge $THCHS30_PATH/sge\n")),Object(u.b)("p",null,"4) optional\uff0cModify ",Object(u.b)("inlineCode",{parentName:"p"},"/opt/kaldi/egs/thchs30/s5/cmd.sh")," in the Container,This queue is used by default"),Object(u.b)("pre",null,Object(u.b)("code",{parentName:"pre"},'export train_cmd="queue.pl -q all.q"\n')),Object(u.b)("p",null,Object(u.b)("strong",{parentName:"p"},"Warning:")),Object(u.b)("p",null,"Please note that YARN service doesn't allow multiple services with the same name, so please run following command"),Object(u.b)("pre",null,Object(u.b)("code",{parentName:"pre"},"yarn application -destroy <service-name>\n")),Object(u.b)("p",null,"to delete services if you want to reuse the same service name."),Object(u.b)("h2",{id:"prepare-docker-images"},"Prepare Docker images"),Object(u.b)("p",null,"Refer to ",Object(u.b)("a",{parentName:"p",href:"/docs/ecosystem/kaldi/WriteDockerfileKaldi"},"Write Dockerfile")," to build a Docker image or use prebuilt one:"),Object(u.b)("ul",null,Object(u.b)("li",{parentName:"ul"},"hadoopsubmarine/kaldi-latest-gpu-base:0.0.1")),Object(u.b)("h2",{id:"run-kaldi-jobs"},"Run Kaldi jobs"),Object(u.b)("h3",{id:"run-distributed-training"},"Run distributed training"),Object(u.b)("pre",null,Object(u.b)("code",{parentName:"pre"},'# Change the variables according to your needs\nSUBMARINE_VERSION=3.3.0-SNAPSHOT\nWORKER_NUM=2\nSGE_CFG_PATH=/cfg\nTHCHS30_PATH=/data/hdfs1/nfs/aisearch/kaldi/thchs30\nDOCKER_HADOOP_HDFS_HOME=/app/${SUBMARINE_VERSION}\n\n# Dependent on registrydns, you must fill in < your RegistryDNSIP> in resolv.conf\nyarn jar /usr/local/matrix/share/hadoop/yarn/${SUBMARINE_VERSION}.jar \\\njob run --name kaldi-thchs30-distributed \\\n--env DOCKER_JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre/ \\\n--env DOCKER_HADOOP_HDFS_HOME=$DOCKER_HADOOP_HDFS_HOME \\\n--env YARN_CONTAINER_RUNTIME_DOCKER_CONTAINER_NETWORK=calico-network \\\n--env PYTHONUNBUFFERED="0" \\\n--env TZ="Asia/Shanghai" \\\n--env YARN_CONTAINER_RUNTIME_DOCKER_MOUNTS=${THCHS30_PATH}/sge/resolv.conf:/etc/resolv.conf,\\\n${THCHS30_PATH}/sge/passwd:/etc/passwd:rw,\\\n${THCHS30_PATH}/sge/group:/etc/group:rw,\\\n${THCHS30_PATH}/sge:$SGE_CFG_PATH,\\\n${THCHS30_PATH}/data:/opt/kaldi/egs/thchs30,\\\n${THCHS30_PATH}/mul/s5:/opt/kaldi/egs/mul-thchs30/s5 \\\n--input_path /opt/kaldi/egs/thchs30/data \\\n--docker_image hadoopsubmarine/kaldi-latest-gpu-base:0.0.1 \\\n--num_workers $WORKER_NUM \\\n--worker_resources memory=64G,vcores=32,gpu=1 \\\n--worker_launch_cmd "sudo mkdir -p /opt/kaldi/egs/mul-thchs30/s5 && \\\nsudo cp /opt/kaldi/egs/thchs30/s5/* /opt/kaldi/egs/mul-thchs30/s5 -r && \\\ncluster_user=`whoami` domain_suffix="ml.com" && \\\ncd /cfg && bash sge_run.sh $WORKER_NUM $SGE_CFG_PATH && \\\nif [ $(echo $HOST_NAME |grep "^master-") ] then sleep 2m && cd /opt/kaldi/egs/mul-thchs30/s5 && ./run.sh fi" \\\n--verbose\n')),Object(u.b)("p",null,"Explanations:"),Object(u.b)("ul",null,Object(u.b)("li",{parentName:"ul"},Object(u.b)("inlineCode",{parentName:"li"},">1")," num_workers indicates it is a distributed training."),Object(u.b)("li",{parentName:"ul"},"Parameters / resources / Docker image of parameter server can be specified separately. For many cases, parameter server doesn't require GPU.We don't need parameter server here")),Object(u.b)("p",null,"For the meaning of the individual parameters, see the ",Object(u.b)("a",{parentName:"p",href:"../../adminDocs/yarn/README"},"QuickStart")," page!"),Object(u.b)("p",null,Object(u.b)("em",{parentName:"p"},"Outputs of distributed training")),Object(u.b)("p",null,"Sample output of master:"),Object(u.b)("pre",null,Object(u.b)("code",{parentName:"pre"},"...\nReading package lists...\nBuilding dependency tree...\nReading state information...\nThe following additional packages will be installed:\n  bsd-mailx cpio gridengine-common ifupdown iproute2 isc-dhcp-client\n  isc-dhcp-common libatm1 libdns-export162 libisc-export160 liblockfile-bin\n  liblockfile1 libmnl0 libxmuu1 libxtables11 ncurses-term netbase\n  openssh-client openssh-server openssh-sftp-server postfix python3-chardet\n  python3-pkg-resources python3-requests python3-six python3-urllib3\n  ssh-import-id ssl-cert tcsh xauth\nSuggested packages:\n  libarchive1 gridengine-qmon ppp rdnssd iproute2-doc resolvconf avahi-autoipd\n  isc-dhcp-client-ddns apparmor ssh-askpass libpam-ssh keychain monkeysphere\n  rssh molly-guard ufw procmail postfix-mysql postfix-pgsql postfix-ldap\n  postfix-pcre sasl2-bin libsasl2-modules dovecot-common postfix-cdb\n  postfix-doc python3-setuptools python3-ndg-httpsclient python3-openssl\n  python3-pyasn1 openssl-blacklist\nThe following NEW packages will be installed:\n  bsd-mailx cpio gridengine-client gridengine-common gridengine-exec\n  gridengine-master ifupdown iproute2 isc-dhcp-client isc-dhcp-common libatm1\n  libdns-export162 libisc-export160 liblockfile-bin liblockfile1 libmnl0\n  libxmuu1 libxtables11 ncurses-term netbase openssh-client openssh-server\n  openssh-sftp-server postfix python3-chardet python3-pkg-resources\n  python3-requests python3-six python3-urllib3 ssh-import-id ssl-cert tcsh\n  xauth\n0 upgraded, 33 newly installed, 0 to remove and 30 not upgraded.\nNeed to get 12.1 MB of archives.\nAfter this operation, 65.8 MB of additional disk space will be used.\nGet:1 http://archive.ubuntu.com/ubuntu xenial/main amd64 libatm1 amd64 1:2.5.1-1.5 [24.2 kB]\nGet:2 http://archive.ubuntu.com/ubuntu xenial/main amd64 libmnl0 amd64 1.0.3-5 [12.0 kB]\nGet:3 http://archive.ubuntu.com/ubuntu xenial/main amd64 liblockfile-bin amd64 1.09-6ubuntu1 [10.8 kB]\nGet:4 http://archive.ubuntu.com/ubuntu xenial/main amd64 liblockfile1 amd64 1.09-6ubuntu1 [8056 B]\nGet:5 http://archive.ubuntu.com/ubuntu xenial/main amd64 cpio amd64 2.11+dfsg-5ubuntu1 [74.8 kB]\nGet:6 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 iproute2 amd64 4.3.0-1ubuntu3.16.04.5 [523 kB]\nGet:7 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 ifupdown amd64 0.8.10ubuntu1.4 [54.9 kB]\nGet:8 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libisc-export160 amd64 1:9.10.3.dfsg.P4-8ubuntu1.15 [153 kB]\nGet:9 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libdns-export162 amd64 1:9.10.3.dfsg.P4-8ubuntu1.15 [665 kB]\nGet:10 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 isc-dhcp-client amd64 4.3.3-5ubuntu12.10 [224 kB]\nGet:11 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 isc-dhcp-common amd64 4.3.3-5ubuntu12.10 [105 kB]\nGet:12 http://archive.ubuntu.com/ubuntu xenial/main amd64 libxtables11 amd64 1.6.0-2ubuntu3 [27.2 kB]\nGet:13 http://archive.ubuntu.com/ubuntu xenial/main amd64 netbase all 5.3 [12.9 kB]\nGet:14 http://archive.ubuntu.com/ubuntu xenial/main amd64 libxmuu1 amd64 2:1.1.2-2 [9674 B]\nGet:15 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 openssh-client amd64 1:7.2p2-4ubuntu2.8 [590 kB]\nGet:16 http://archive.ubuntu.com/ubuntu xenial/main amd64 xauth amd64 1:1.0.9-1ubuntu2 [22.7 kB]\nGet:17 http://archive.ubuntu.com/ubuntu xenial/main amd64 ssl-cert all 1.0.37 [16.9 kB]\nGet:18 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 postfix amd64 3.1.0-3ubuntu0.3 [1152 kB]\nGet:19 http://archive.ubuntu.com/ubuntu xenial/main amd64 bsd-mailx amd64 8.1.2-0.20160123cvs-2 [63.7 kB]\nGet:20 http://archive.ubuntu.com/ubuntu xenial/universe amd64 gridengine-common all 6.2u5-7.4 [156 kB]\nGet:21 http://archive.ubuntu.com/ubuntu xenial/universe amd64 gridengine-client amd64 6.2u5-7.4 [3394 kB]\nGet:22 http://archive.ubuntu.com/ubuntu xenial/universe amd64 tcsh amd64 6.18.01-5 [410 kB]\nGet:23 http://archive.ubuntu.com/ubuntu xenial/universe amd64 gridengine-exec amd64 6.2u5-7.4 [990 kB]\nGet:24 http://archive.ubuntu.com/ubuntu xenial/universe amd64 gridengine-master amd64 6.2u5-7.4 [2429 kB]\nGet:25 http://archive.ubuntu.com/ubuntu xenial/main amd64 ncurses-term all 6.0+20160213-1ubuntu1 [249 kB]\nGet:26 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 openssh-sftp-server amd64 1:7.2p2-4ubuntu2.8 [38.9 kB]\nGet:27 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 openssh-server amd64 1:7.2p2-4ubuntu2.8 [335 kB]\nGet:28 http://archive.ubuntu.com/ubuntu xenial/main amd64 python3-pkg-resources all 20.7.0-1 [79.0 kB]\nGet:29 http://archive.ubuntu.com/ubuntu xenial/main amd64 python3-chardet all 2.3.0-2 [96.2 kB]\nGet:30 http://archive.ubuntu.com/ubuntu xenial/main amd64 python3-six all 1.10.0-3 [11.0 kB]\nGet:31 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 python3-urllib3 all 1.13.1-2ubuntu0.16.04.3 [58.5 kB]\nGet:32 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 python3-requests all 2.9.1-3ubuntu0.1 [55.8 kB]\nGet:33 http://archive.ubuntu.com/ubuntu xenial/main amd64 ssh-import-id all 5.5-0ubuntu1 [10.2 kB]\nFetched 12.1 MB in 0s (15.0 MB/s)\nSelecting previously unselected package libatm1:amd64.\n(Reading database ...\n(Reading database ... 5%\n(Reading database ... 10%\n(Reading database ... 15%\n(Reading database ... 20%\n(Reading database ... 25%\n(Reading database ... 30%\n(Reading database ... 35%\n(Reading database ... 40%\n(Reading database ... 45%\n(Reading database ... 50%\n(Reading database ... 55%\n(Reading database ... 60%\n(Reading database ... 65%\n(Reading database ... 70%\n(Reading database ... 75%\n(Reading database ... 80%\n(Reading database ... 85%\n(Reading database ... 90%\n(Reading database ... 95%\n(Reading database ... 100%\n(Reading database ... 21398 files and directories currently installed.)\nPreparing to unpack .../libatm1_1%3a2.5.1-1.5_amd64.deb ...\nUnpacking libatm1:amd64 (1:2.5.1-1.5) ...\nSelecting previously unselected package libmnl0:amd64.\nPreparing to unpack .../libmnl0_1.0.3-5_amd64.deb ...\nUnpacking libmnl0:amd64 (1.0.3-5) ...\nSelecting previously unselected package liblockfile-bin.\nPreparing to unpack .../liblockfile-bin_1.09-6ubuntu1_amd64.deb ...\nUnpacking liblockfile-bin (1.09-6ubuntu1) ...\nSelecting previously unselected package liblockfile1:amd64.\nPreparing to unpack .../liblockfile1_1.09-6ubuntu1_amd64.deb ...\nUnpacking liblockfile1:amd64 (1.09-6ubuntu1) ...\nSelecting previously unselected package cpio.\nPreparing to unpack .../cpio_2.11+dfsg-5ubuntu1_amd64.deb ...\nUnpacking cpio (2.11+dfsg-5ubuntu1) ...\nSelecting previously unselected package iproute2.\nPreparing to unpack .../iproute2_4.3.0-1ubuntu3.16.04.5_amd64.deb ...\nUnpacking iproute2 (4.3.0-1ubuntu3.16.04.5) ...\nSelecting previously unselected package ifupdown.\nPreparing to unpack .../ifupdown_0.8.10ubuntu1.4_amd64.deb ...\nUnpacking ifupdown (0.8.10ubuntu1.4) ...\nSelecting previously unselected package libisc-export160.\nPreparing to unpack .../libisc-export160_1%3a9.10.3.dfsg.P4-8ubuntu1.15_amd64.deb ...\nUnpacking libisc-export160 (1:9.10.3.dfsg.P4-8ubuntu1.15) ...\nSelecting previously unselected package libdns-export162.\nPreparing to unpack .../libdns-export162_1%3a9.10.3.dfsg.P4-8ubuntu1.15_amd64.deb ...\nUnpacking libdns-export162 (1:9.10.3.dfsg.P4-8ubuntu1.15) ...\nSelecting previously unselected package isc-dhcp-client.\nPreparing to unpack .../isc-dhcp-client_4.3.3-5ubuntu12.10_amd64.deb ...\nUnpacking isc-dhcp-client (4.3.3-5ubuntu12.10) ...\nSelecting previously unselected package isc-dhcp-common.\nPreparing to unpack .../isc-dhcp-common_4.3.3-5ubuntu12.10_amd64.deb ...\nUnpacking isc-dhcp-common (4.3.3-5ubuntu12.10) ...\nSelecting previously unselected package libxtables11:amd64.\nPreparing to unpack .../libxtables11_1.6.0-2ubuntu3_amd64.deb ...\nUnpacking libxtables11:amd64 (1.6.0-2ubuntu3) ...\nSelecting previously unselected package netbase.\nPreparing to unpack .../archives/netbase_5.3_all.deb ...\nUnpacking netbase (5.3) ...\nSelecting previously unselected package libxmuu1:amd64.\nPreparing to unpack .../libxmuu1_2%3a1.1.2-2_amd64.deb ...\nUnpacking libxmuu1:amd64 (2:1.1.2-2) ...\nSelecting previously unselected package openssh-client.\nPreparing to unpack .../openssh-client_1%3a7.2p2-4ubuntu2.8_amd64.deb ...\nUnpacking openssh-client (1:7.2p2-4ubuntu2.8) ...\nSelecting previously unselected package xauth.\nPreparing to unpack .../xauth_1%3a1.0.9-1ubuntu2_amd64.deb ...\nUnpacking xauth (1:1.0.9-1ubuntu2) ...\nSelecting previously unselected package ssl-cert.\nPreparing to unpack .../ssl-cert_1.0.37_all.deb ...\nUnpacking ssl-cert (1.0.37) ...\nSelecting previously unselected package postfix.\nPreparing to unpack .../postfix_3.1.0-3ubuntu0.3_amd64.deb ...\nUnpacking postfix (3.1.0-3ubuntu0.3) ...\nSelecting previously unselected package bsd-mailx.\nPreparing to unpack .../bsd-mailx_8.1.2-0.20160123cvs-2_amd64.deb ...\nUnpacking bsd-mailx (8.1.2-0.20160123cvs-2) ...\nSelecting previously unselected package gridengine-common.\nPreparing to unpack .../gridengine-common_6.2u5-7.4_all.deb ...\nUnpacking gridengine-common (6.2u5-7.4) ...\nSelecting previously unselected package gridengine-client.\nPreparing to unpack .../gridengine-client_6.2u5-7.4_amd64.deb ...\nUnpacking gridengine-client (6.2u5-7.4) ...\nSelecting previously unselected package tcsh.\nPreparing to unpack .../tcsh_6.18.01-5_amd64.deb ...\nUnpacking tcsh (6.18.01-5) ...\nSelecting previously unselected package gridengine-exec.\nPreparing to unpack .../gridengine-exec_6.2u5-7.4_amd64.deb ...\nUnpacking gridengine-exec (6.2u5-7.4) ...\nSelecting previously unselected package gridengine-master.\nPreparing to unpack .../gridengine-master_6.2u5-7.4_amd64.deb ...\nUnpacking gridengine-master (6.2u5-7.4) ...\nSelecting previously unselected package ncurses-term.\nPreparing to unpack .../ncurses-term_6.0+20160213-1ubuntu1_all.deb ...\nUnpacking ncurses-term (6.0+20160213-1ubuntu1) ...\nSelecting previously unselected package openssh-sftp-server.\nPreparing to unpack .../openssh-sftp-server_1%3a7.2p2-4ubuntu2.8_amd64.deb ...\nUnpacking openssh-sftp-server (1:7.2p2-4ubuntu2.8) ...\nSelecting previously unselected package openssh-server.\nPreparing to unpack .../openssh-server_1%3a7.2p2-4ubuntu2.8_amd64.deb ...\nUnpacking openssh-server (1:7.2p2-4ubuntu2.8) ...\nSelecting previously unselected package python3-pkg-resources.\nPreparing to unpack .../python3-pkg-resources_20.7.0-1_all.deb ...\nUnpacking python3-pkg-resources (20.7.0-1) ...\nSelecting previously unselected package python3-chardet.\nPreparing to unpack .../python3-chardet_2.3.0-2_all.deb ...\nUnpacking python3-chardet (2.3.0-2) ...\nSelecting previously unselected package python3-six.\nPreparing to unpack .../python3-six_1.10.0-3_all.deb ...\nUnpacking python3-six (1.10.0-3) ...\nSelecting previously unselected package python3-urllib3.\nPreparing to unpack .../python3-urllib3_1.13.1-2ubuntu0.16.04.3_all.deb ...\nUnpacking python3-urllib3 (1.13.1-2ubuntu0.16.04.3) ...\nSelecting previously unselected package python3-requests.\nPreparing to unpack .../python3-requests_2.9.1-3ubuntu0.1_all.deb ...\nUnpacking python3-requests (2.9.1-3ubuntu0.1) ...\nSelecting previously unselected package ssh-import-id.\nPreparing to unpack .../ssh-import-id_5.5-0ubuntu1_all.deb ...\nUnpacking ssh-import-id (5.5-0ubuntu1) ...\nProcessing triggers for systemd (229-4ubuntu21.22) ...\nProcessing triggers for libc-bin (2.23-0ubuntu11) ...\nSetting up libatm1:amd64 (1:2.5.1-1.5) ...\nSetting up libmnl0:amd64 (1.0.3-5) ...\nSetting up liblockfile-bin (1.09-6ubuntu1) ...\nSetting up liblockfile1:amd64 (1.09-6ubuntu1) ...\nSetting up cpio (2.11+dfsg-5ubuntu1) ...\nupdate-alternatives: using /bin/mt-gnu to provide /bin/mt (mt) in auto mode\nSetting up iproute2 (4.3.0-1ubuntu3.16.04.5) ...\nSetting up ifupdown (0.8.10ubuntu1.4) ...\nCreating /etc/network/interfaces.\nSetting up libisc-export160 (1:9.10.3.dfsg.P4-8ubuntu1.15) ...\nSetting up libdns-export162 (1:9.10.3.dfsg.P4-8ubuntu1.15) ...\nSetting up isc-dhcp-client (4.3.3-5ubuntu12.10) ...\nSetting up isc-dhcp-common (4.3.3-5ubuntu12.10) ...\nSetting up libxtables11:amd64 (1.6.0-2ubuntu3) ...\nSetting up netbase (5.3) ...\nSetting up libxmuu1:amd64 (2:1.1.2-2) ...\nSetting up openssh-client (1:7.2p2-4ubuntu2.8) ...\nSetting up xauth (1:1.0.9-1ubuntu2) ...\nSetting up ssl-cert (1.0.37) ...\nSetting up postfix (3.1.0-3ubuntu0.3) ...\nCreating /etc/postfix/dynamicmaps.cf\nsetting myhostname: master-0.XXX\nsetting alias maps\nsetting alias database\nchanging /etc/mailname to master-0.XXX\nsetting myorigin\nsetting destinations: $myhostname, master-0.XXX, localhost.XXX, , localhost\nsetting relayhost:\nsetting mynetworks: 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128\nsetting mailbox_size_limit: 0\nsetting recipient_delimiter: +\nsetting inet_interfaces: all\nsetting inet_protocols: all\n/etc/aliases does not exist, creating it.\nWARNING: /etc/aliases exists, but does not have a root alias.\n\nPostfix is now set up with a default configuration.  If you need to make\nchanges, edit\n/etc/postfix/main.cf (and others) as needed.  To view Postfix configuration\nvalues, see postconf(1).\n\nAfter modifying main.cf, be sure to run '/etc/init.d/postfix reload'.\n\nRunning newaliases\ninvoke-rc.d: could not determine current runlevel\ninvoke-rc.d: policy-rc.d denied execution of restart.\nSetting up bsd-mailx (8.1.2-0.20160123cvs-2) ...\nupdate-alternatives: using /usr/bin/bsd-mailx to provide /usr/bin/mailx (mailx) in auto mode\nSetting up gridengine-common (6.2u5-7.4) ...\n\nCreating config file /etc/default/gridengine with new version\nSetting up gridengine-client (6.2u5-7.4) ...\nSetting up tcsh (6.18.01-5) ...\nupdate-alternatives: using /bin/tcsh to provide /bin/csh (csh) in auto mode\nSetting up gridengine-exec (6.2u5-7.4) ...\ninvoke-rc.d: could not determine current runlevel\ninvoke-rc.d: policy-rc.d denied execution of start.\nSetting up gridengine-master (6.2u5-7.4) ...\nsu: Authentication failure\n(Ignored)\nInitializing cluster with the following parameters:\n => SGE_ROOT: /var/lib/gridengine\n => SGE_CELL: default\n => Spool directory: /var/spool/gridengine/spooldb\n => Initial manager user: sgeadmin\nInitializing spool (/var/spool/gridengine/spooldb)\nInitializing global configuration based on /usr/share/gridengine/default-configuration\nInitializing complexes based on /usr/share/gridengine/centry\nInitializing usersets based on /usr/share/gridengine/usersets\nAdding user sgeadmin as a manager\nCluster creation complete\ninvoke-rc.d: could not determine current runlevel\ninvoke-rc.d: policy-rc.d denied execution of start.\nSetting up ncurses-term (6.0+20160213-1ubuntu1) ...\nSetting up openssh-sftp-server (1:7.2p2-4ubuntu2.8) ...\nSetting up openssh-server (1:7.2p2-4ubuntu2.8) ...\nCreating SSH2 RSA key; this may take some time ...\n2048 SHA256:hfQpES1aS4cjF8AOCIParZR6342vdwutoyITru0wtuE root@master-0.XXX (RSA)\nCreating SSH2 DSA key; this may take some time ...\n1024 SHA256:gOsPMVgwXBHJzixN/gtJAG+hVCHqw8t7Fhy4nsx8od0 root@master-0.XXX (DSA)\nCreating SSH2 ECDSA key; this may take some time ...\n256 SHA256:3D5SNniUb4z+/BuqXheFgG+DfjsxXqTT/zwWAqdX4jM root@master-0.XXX (ECDSA)\nCreating SSH2 ED25519 key; this may take some time ...\n256 SHA256:SwyeV9iSqOW4TKLi4Wvc0zD8lWtupHCJpDu8oWBwbfU root@master-0.XXX (ED25519)\ninvoke-rc.d: could not determine current runlevel\ninvoke-rc.d: policy-rc.d denied execution of start.\nSetting up python3-pkg-resources (20.7.0-1) ...\nSetting up python3-chardet (2.3.0-2) ...\nSetting up python3-six (1.10.0-3) ...\nSetting up python3-urllib3 (1.13.1-2ubuntu0.16.04.3) ...\nSetting up python3-requests (2.9.1-3ubuntu0.1) ...\nSetting up ssh-import-id (5.5-0ubuntu1) ...\nProcessing triggers for libc-bin (2.23-0ubuntu11) ...\nProcessing triggers for systemd (229-4ubuntu21.22) ...\nReading package lists...\nBuilding dependency tree...\nReading state information...\n0 upgraded, 0 newly installed, 0 to remove and 30 not upgraded.\n")),Object(u.b)("p",null,"cat $SGE_CFG_PATH/setcfg.log"),Object(u.b)("pre",null,Object(u.b)("code",{parentName:"pre"},"finish master\nadd worker node worker-0.XXX\n")),Object(u.b)("p",null,"Sample output of worker:"),Object(u.b)("pre",null,Object(u.b)("code",{parentName:"pre"},"please wait\nReading package lists...\nBuilding dependency tree...\nReading state information...\nThe following additional packages will be installed:\n  bsd-mailx cpio gridengine-common ifupdown iproute2 isc-dhcp-client\n  isc-dhcp-common libatm1 libdns-export162 libisc-export160 liblockfile-bin\n  liblockfile1 libmnl0 libxmuu1 libxtables11 ncurses-term netbase\n  openssh-client openssh-server openssh-sftp-server postfix python3-chardet\n  python3-pkg-resources python3-requests python3-six python3-urllib3\n  ssh-import-id ssl-cert tcsh xauth\nSuggested packages:\n  libarchive1 gridengine-qmon ppp rdnssd iproute2-doc resolvconf avahi-autoipd\n  isc-dhcp-client-ddns apparmor ssh-askpass libpam-ssh keychain monkeysphere\n  rssh molly-guard ufw procmail postfix-mysql postfix-pgsql postfix-ldap\n  postfix-pcre sasl2-bin libsasl2-modules dovecot-common postfix-cdb\n  postfix-doc python3-setuptools python3-ndg-httpsclient python3-openssl\n  python3-pyasn1 openssl-blacklist\nThe following NEW packages will be installed:\n  bsd-mailx cpio gridengine-client gridengine-common gridengine-exec ifupdown\n  iproute2 isc-dhcp-client isc-dhcp-common libatm1 libdns-export162\n  libisc-export160 liblockfile-bin liblockfile1 libmnl0 libxmuu1 libxtables11\n  ncurses-term netbase openssh-client openssh-server openssh-sftp-server\n  postfix python3-chardet python3-pkg-resources python3-requests python3-six\n  python3-urllib3 ssh-import-id ssl-cert tcsh xauth\n0 upgraded, 32 newly installed, 0 to remove and 30 not upgraded.\nNeed to get 9633 kB of archives.\nAfter this operation, 51.2 MB of additional disk space will be used.\nGet:1 http://archive.ubuntu.com/ubuntu xenial/main amd64 libatm1 amd64 1:2.5.1-1.5 [24.2 kB]\nGet:2 http://archive.ubuntu.com/ubuntu xenial/main amd64 libmnl0 amd64 1.0.3-5 [12.0 kB]\nGet:3 http://archive.ubuntu.com/ubuntu xenial/main amd64 liblockfile-bin amd64 1.09-6ubuntu1 [10.8 kB]\nGet:4 http://archive.ubuntu.com/ubuntu xenial/main amd64 liblockfile1 amd64 1.09-6ubuntu1 [8056 B]\nGet:5 http://archive.ubuntu.com/ubuntu xenial/main amd64 cpio amd64 2.11+dfsg-5ubuntu1 [74.8 kB]\nGet:6 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 iproute2 amd64 4.3.0-1ubuntu3.16.04.5 [523 kB]\nGet:7 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 ifupdown amd64 0.8.10ubuntu1.4 [54.9 kB]\nGet:8 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libisc-export160 amd64 1:9.10.3.dfsg.P4-8ubuntu1.15 [153 kB]\nGet:9 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libdns-export162 amd64 1:9.10.3.dfsg.P4-8ubuntu1.15 [665 kB]\nGet:10 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 isc-dhcp-client amd64 4.3.3-5ubuntu12.10 [224 kB]\nGet:11 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 isc-dhcp-common amd64 4.3.3-5ubuntu12.10 [105 kB]\nGet:12 http://archive.ubuntu.com/ubuntu xenial/main amd64 libxtables11 amd64 1.6.0-2ubuntu3 [27.2 kB]\nGet:13 http://archive.ubuntu.com/ubuntu xenial/main amd64 netbase all 5.3 [12.9 kB]\nGet:14 http://archive.ubuntu.com/ubuntu xenial/main amd64 libxmuu1 amd64 2:1.1.2-2 [9674 B]\nGet:15 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 openssh-client amd64 1:7.2p2-4ubuntu2.8 [590 kB]\nGet:16 http://archive.ubuntu.com/ubuntu xenial/main amd64 xauth amd64 1:1.0.9-1ubuntu2 [22.7 kB]\nGet:17 http://archive.ubuntu.com/ubuntu xenial/main amd64 ssl-cert all 1.0.37 [16.9 kB]\nGet:18 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 postfix amd64 3.1.0-3ubuntu0.3 [1152 kB]\nGet:19 http://archive.ubuntu.com/ubuntu xenial/main amd64 bsd-mailx amd64 8.1.2-0.20160123cvs-2 [63.7 kB]\nGet:20 http://archive.ubuntu.com/ubuntu xenial/universe amd64 gridengine-common all 6.2u5-7.4 [156 kB]\nGet:21 http://archive.ubuntu.com/ubuntu xenial/universe amd64 gridengine-client amd64 6.2u5-7.4 [3394 kB]\nGet:22 http://archive.ubuntu.com/ubuntu xenial/universe amd64 tcsh amd64 6.18.01-5 [410 kB]\nGet:23 http://archive.ubuntu.com/ubuntu xenial/universe amd64 gridengine-exec amd64 6.2u5-7.4 [990 kB]\nGet:24 http://archive.ubuntu.com/ubuntu xenial/main amd64 ncurses-term all 6.0+20160213-1ubuntu1 [249 kB]\nGet:25 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 openssh-sftp-server amd64 1:7.2p2-4ubuntu2.8 [38.9 kB]\nGet:26 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 openssh-server amd64 1:7.2p2-4ubuntu2.8 [335 kB]\nGet:27 http://archive.ubuntu.com/ubuntu xenial/main amd64 python3-pkg-resources all 20.7.0-1 [79.0 kB]\nGet:28 http://archive.ubuntu.com/ubuntu xenial/main amd64 python3-chardet all 2.3.0-2 [96.2 kB]\nGet:29 http://archive.ubuntu.com/ubuntu xenial/main amd64 python3-six all 1.10.0-3 [11.0 kB]\nGet:30 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 python3-urllib3 all 1.13.1-2ubuntu0.16.04.3 [58.5 kB]\nGet:31 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 python3-requests all 2.9.1-3ubuntu0.1 [55.8 kB]\nGet:32 http://archive.ubuntu.com/ubuntu xenial/main amd64 ssh-import-id all 5.5-0ubuntu1 [10.2 kB]\nFetched 9633 kB in 2s (4496 kB/s)\nSelecting previously unselected package libatm1:amd64.\n(Reading database ...\n(Reading database ... 5%\n(Reading database ... 10%\n(Reading database ... 15%\n(Reading database ... 20%\n(Reading database ... 25%\n(Reading database ... 30%\n(Reading database ... 35%\n(Reading database ... 40%\n(Reading database ... 45%\n(Reading database ... 50%\n(Reading database ... 55%\n(Reading database ... 60%\n(Reading database ... 65%\n(Reading database ... 70%\n(Reading database ... 75%\n(Reading database ... 80%\n(Reading database ... 85%\n(Reading database ... 90%\n(Reading database ... 95%\n(Reading database ... 100%\n(Reading database ... 21398 files and directories currently installed.)\nPreparing to unpack .../libatm1_1%3a2.5.1-1.5_amd64.deb ...\nUnpacking libatm1:amd64 (1:2.5.1-1.5) ...\nSelecting previously unselected package libmnl0:amd64.\nPreparing to unpack .../libmnl0_1.0.3-5_amd64.deb ...\nUnpacking libmnl0:amd64 (1.0.3-5) ...\nSelecting previously unselected package liblockfile-bin.\nPreparing to unpack .../liblockfile-bin_1.09-6ubuntu1_amd64.deb ...\nUnpacking liblockfile-bin (1.09-6ubuntu1) ...\nSelecting previously unselected package liblockfile1:amd64.\nPreparing to unpack .../liblockfile1_1.09-6ubuntu1_amd64.deb ...\nUnpacking liblockfile1:amd64 (1.09-6ubuntu1) ...\nSelecting previously unselected package cpio.\nPreparing to unpack .../cpio_2.11+dfsg-5ubuntu1_amd64.deb ...\nUnpacking cpio (2.11+dfsg-5ubuntu1) ...\nSelecting previously unselected package iproute2.\nPreparing to unpack .../iproute2_4.3.0-1ubuntu3.16.04.5_amd64.deb ...\nUnpacking iproute2 (4.3.0-1ubuntu3.16.04.5) ...\nSelecting previously unselected package ifupdown.\nPreparing to unpack .../ifupdown_0.8.10ubuntu1.4_amd64.deb ...\nUnpacking ifupdown (0.8.10ubuntu1.4) ...\nSelecting previously unselected package libisc-export160.\nPreparing to unpack .../libisc-export160_1%3a9.10.3.dfsg.P4-8ubuntu1.15_amd64.deb ...\nUnpacking libisc-export160 (1:9.10.3.dfsg.P4-8ubuntu1.15) ...\nSelecting previously unselected package libdns-export162.\nPreparing to unpack .../libdns-export162_1%3a9.10.3.dfsg.P4-8ubuntu1.15_amd64.deb ...\nUnpacking libdns-export162 (1:9.10.3.dfsg.P4-8ubuntu1.15) ...\nSelecting previously unselected package isc-dhcp-client.\nPreparing to unpack .../isc-dhcp-client_4.3.3-5ubuntu12.10_amd64.deb ...\nUnpacking isc-dhcp-client (4.3.3-5ubuntu12.10) ...\nSelecting previously unselected package isc-dhcp-common.\nPreparing to unpack .../isc-dhcp-common_4.3.3-5ubuntu12.10_amd64.deb ...\nUnpacking isc-dhcp-common (4.3.3-5ubuntu12.10) ...\nSelecting previously unselected package libxtables11:amd64.\nPreparing to unpack .../libxtables11_1.6.0-2ubuntu3_amd64.deb ...\nUnpacking libxtables11:amd64 (1.6.0-2ubuntu3) ...\nSelecting previously unselected package netbase.\nPreparing to unpack .../archives/netbase_5.3_all.deb ...\nUnpacking netbase (5.3) ...\nSelecting previously unselected package libxmuu1:amd64.\nPreparing to unpack .../libxmuu1_2%3a1.1.2-2_amd64.deb ...\nUnpacking libxmuu1:amd64 (2:1.1.2-2) ...\nSelecting previously unselected package openssh-client.\nPreparing to unpack .../openssh-client_1%3a7.2p2-4ubuntu2.8_amd64.deb ...\nUnpacking openssh-client (1:7.2p2-4ubuntu2.8) ...\nSelecting previously unselected package xauth.\nPreparing to unpack .../xauth_1%3a1.0.9-1ubuntu2_amd64.deb ...\nUnpacking xauth (1:1.0.9-1ubuntu2) ...\nSelecting previously unselected package ssl-cert.\nPreparing to unpack .../ssl-cert_1.0.37_all.deb ...\nUnpacking ssl-cert (1.0.37) ...\nSelecting previously unselected package postfix.\nPreparing to unpack .../postfix_3.1.0-3ubuntu0.3_amd64.deb ...\nUnpacking postfix (3.1.0-3ubuntu0.3) ...\nSelecting previously unselected package bsd-mailx.\nPreparing to unpack .../bsd-mailx_8.1.2-0.20160123cvs-2_amd64.deb ...\nUnpacking bsd-mailx (8.1.2-0.20160123cvs-2) ...\nSelecting previously unselected package gridengine-common.\nPreparing to unpack .../gridengine-common_6.2u5-7.4_all.deb ...\nUnpacking gridengine-common (6.2u5-7.4) ...\nSelecting previously unselected package gridengine-client.\nPreparing to unpack .../gridengine-client_6.2u5-7.4_amd64.deb ...\nUnpacking gridengine-client (6.2u5-7.4) ...\nSelecting previously unselected package tcsh.\nPreparing to unpack .../tcsh_6.18.01-5_amd64.deb ...\nUnpacking tcsh (6.18.01-5) ...\nSelecting previously unselected package gridengine-exec.\nPreparing to unpack .../gridengine-exec_6.2u5-7.4_amd64.deb ...\nUnpacking gridengine-exec (6.2u5-7.4) ...\nSelecting previously unselected package ncurses-term.\nPreparing to unpack .../ncurses-term_6.0+20160213-1ubuntu1_all.deb ...\nUnpacking ncurses-term (6.0+20160213-1ubuntu1) ...\nSelecting previously unselected package openssh-sftp-server.\nPreparing to unpack .../openssh-sftp-server_1%3a7.2p2-4ubuntu2.8_amd64.deb ...\nUnpacking openssh-sftp-server (1:7.2p2-4ubuntu2.8) ...\nSelecting previously unselected package openssh-server.\nPreparing to unpack .../openssh-server_1%3a7.2p2-4ubuntu2.8_amd64.deb ...\nUnpacking openssh-server (1:7.2p2-4ubuntu2.8) ...\nSelecting previously unselected package python3-pkg-resources.\nPreparing to unpack .../python3-pkg-resources_20.7.0-1_all.deb ...\nUnpacking python3-pkg-resources (20.7.0-1) ...\nSelecting previously unselected package python3-chardet.\nPreparing to unpack .../python3-chardet_2.3.0-2_all.deb ...\nUnpacking python3-chardet (2.3.0-2) ...\nSelecting previously unselected package python3-six.\nPreparing to unpack .../python3-six_1.10.0-3_all.deb ...\nUnpacking python3-six (1.10.0-3) ...\nSelecting previously unselected package python3-urllib3.\nPreparing to unpack .../python3-urllib3_1.13.1-2ubuntu0.16.04.3_all.deb ...\nUnpacking python3-urllib3 (1.13.1-2ubuntu0.16.04.3) ...\nSelecting previously unselected package python3-requests.\nPreparing to unpack .../python3-requests_2.9.1-3ubuntu0.1_all.deb ...\nUnpacking python3-requests (2.9.1-3ubuntu0.1) ...\nSelecting previously unselected package ssh-import-id.\nPreparing to unpack .../ssh-import-id_5.5-0ubuntu1_all.deb ...\nUnpacking ssh-import-id (5.5-0ubuntu1) ...\nProcessing triggers for systemd (229-4ubuntu21.22) ...\nProcessing triggers for libc-bin (2.23-0ubuntu11) ...\nSetting up libatm1:amd64 (1:2.5.1-1.5) ...\nSetting up libmnl0:amd64 (1.0.3-5) ...\nSetting up liblockfile-bin (1.09-6ubuntu1) ...\nSetting up liblockfile1:amd64 (1.09-6ubuntu1) ...\nSetting up cpio (2.11+dfsg-5ubuntu1) ...\nupdate-alternatives: using /bin/mt-gnu to provide /bin/mt (mt) in auto mode\nSetting up iproute2 (4.3.0-1ubuntu3.16.04.5) ...\nSetting up ifupdown (0.8.10ubuntu1.4) ...\nCreating /etc/network/interfaces.\nSetting up libisc-export160 (1:9.10.3.dfsg.P4-8ubuntu1.15) ...\nSetting up libdns-export162 (1:9.10.3.dfsg.P4-8ubuntu1.15) ...\nSetting up isc-dhcp-client (4.3.3-5ubuntu12.10) ...\nSetting up isc-dhcp-common (4.3.3-5ubuntu12.10) ...\nSetting up libxtables11:amd64 (1.6.0-2ubuntu3) ...\nSetting up netbase (5.3) ...\nSetting up libxmuu1:amd64 (2:1.1.2-2) ...\nSetting up openssh-client (1:7.2p2-4ubuntu2.8) ...\nSetting up xauth (1:1.0.9-1ubuntu2) ...\nSetting up ssl-cert (1.0.37) ...\nSetting up postfix (3.1.0-3ubuntu0.3) ...\nCreating /etc/postfix/dynamicmaps.cf\nsetting myhostname: worker-0.XXX\nsetting alias maps\nsetting alias database\nchanging /etc/mailname to worker-0.XXX\nsetting myorigin\nsetting destinations: $myhostname, worker-0.XXX, localhost.XXX, , localhost\nsetting relayhost:\nsetting mynetworks: 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128\nsetting mailbox_size_limit: 0\nsetting recipient_delimiter: +\nsetting inet_interfaces: all\nsetting inet_protocols: all\n/etc/aliases does not exist, creating it.\nWARNING: /etc/aliases exists, but does not have a root alias.\n\nPostfix is now set up with a default configuration.  If you need to make\nchanges, edit\n/etc/postfix/main.cf (and others) as needed.  To view Postfix configuration\nvalues, see postconf(1).\n\nAfter modifying main.cf, be sure to run '/etc/init.d/postfix reload'.\n\nRunning newaliases\ninvoke-rc.d: could not determine current runlevel\ninvoke-rc.d: policy-rc.d denied execution of restart.\nSetting up bsd-mailx (8.1.2-0.20160123cvs-2) ...\nupdate-alternatives: using /usr/bin/bsd-mailx to provide /usr/bin/mailx (mailx) in auto mode\nSetting up gridengine-common (6.2u5-7.4) ...\n\nCreating config file /etc/default/gridengine with new version\nSetting up gridengine-client (6.2u5-7.4) ...\nSetting up tcsh (6.18.01-5) ...\nupdate-alternatives: using /bin/tcsh to provide /bin/csh (csh) in auto mode\nSetting up gridengine-exec (6.2u5-7.4) ...\ninvoke-rc.d: could not determine current runlevel\ninvoke-rc.d: policy-rc.d denied execution of start.\nSetting up ncurses-term (6.0+20160213-1ubuntu1) ...\nSetting up openssh-sftp-server (1:7.2p2-4ubuntu2.8) ...\nSetting up openssh-server (1:7.2p2-4ubuntu2.8) ...\nCreating SSH2 RSA key; this may take some time ...\n2048 SHA256:ok/TxzwtF5W8I55sDxrt4Agy4fuWn39BiSovvDObhVE root@worker-0.XXX (RSA)\nCreating SSH2 DSA key; this may take some time ...\n1024 SHA256:4y48kVYt3mS3q1KgZzEoYMnS/2d/tA8TJUK5uNSaxZY root@worker-0.XXX (DSA)\nCreating SSH2 ECDSA key; this may take some time ...\n256 SHA256:4D7zm4cD2IbDnHoXnzcIo3FISbvOW8eOstGBNf1/bvo root@worker-0.XXX (ECDSA)\nCreating SSH2 ED25519 key; this may take some time ...\n256 SHA256:/HrA3xiZiH5CZkXwtcfE6GwcMM+hEhZzTdFHxj4PzDg root@worker-0.XXX (ED25519)\ninvoke-rc.d: could not determine current runlevel\ninvoke-rc.d: policy-rc.d denied execution of start.\nSetting up python3-pkg-resources (20.7.0-1) ...\nSetting up python3-chardet (2.3.0-2) ...\nSetting up python3-six (1.10.0-3) ...\nSetting up python3-urllib3 (1.13.1-2ubuntu0.16.04.3) ...\nSetting up python3-requests (2.9.1-3ubuntu0.1) ...\nSetting up ssh-import-id (5.5-0ubuntu1) ...\nProcessing triggers for libc-bin (2.23-0ubuntu11) ...\nProcessing triggers for systemd (229-4ubuntu21.22) ...\nReading package lists...\nBuilding dependency tree...\nReading state information...\n0 upgraded, 0 newly installed, 0 to remove and 30 not upgraded.\n")),Object(u.b)("p",null,"cat $SGE_CFG_PATH/setcfg.log"),Object(u.b)("pre",null,Object(u.b)("code",{parentName:"pre"},"please wait\nStart SGE for worker is finished\ndone for worker-0.XXX worker.\n")),Object(u.b)("p",null,"Sample output of sge:\n",Object(u.b)("img",{alt:"alt text",src:t(280).default,title:"SGE for multiple jobs"})),Object(u.b)("p",null,Object(u.b)("img",{alt:"alt text",src:t(281).default,title:"SGE for user multiple jobs"})))}p.isMDXComponent=!0},194:function(e,n,t){"use strict";t.d(n,"a",(function(){return l})),t.d(n,"b",(function(){return g}));var i=t(0),a=t.n(i);function u(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 i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}function r(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){u(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 c(e,n){if(null==e)return{};var t,i,a=function(e,n){if(null==e)return{};var t,i,a={},u=Object.keys(e);for(i=0;i<u.length;i++)t=u[i],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(i=0;i<u.length;i++)t=u[i],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var o=a.a.createContext({}),p=function(e){var n=a.a.useContext(o),t=n;return e&&(t="function"==typeof e?e(n):r(r({},n),e)),t},l=function(e){var n=p(e.components);return a.a.createElement(o.Provider,{value:n},e.children)},d={inlineCode:"code",wrapper:function(e){var n=e.children;return a.a.createElement(a.a.Fragment,{},n)}},b=a.a.forwardRef((function(e,n){var t=e.components,i=e.mdxType,u=e.originalType,s=e.parentName,o=c(e,["components","mdxType","originalType","parentName"]),l=p(t),b=i,g=l["".concat(s,".").concat(b)]||l[b]||d[b]||u;return t?a.a.createElement(g,r(r({ref:n},o),{},{components:t})):a.a.createElement(g,r({ref:n},o))}));function g(e,n){var t=arguments,i=n&&n.mdxType;if("string"==typeof e||i){var u=t.length,s=new Array(u);s[0]=b;var r={};for(var c in n)hasOwnProperty.call(n,c)&&(r[c]=n[c]);r.originalType=e,r.mdxType="string"==typeof e?e:i,s[1]=r;for(var o=2;o<u;o++)s[o]=t[o];return a.a.createElement.apply(null,s)}return a.a.createElement.apply(null,t)}b.displayName="MDXCreateElement"},280:function(e,n,t){"use strict";t.r(n),n.default=t.p+"assets/images/sge_cluster-b9ac6485a770b5f8a031b29f6f430810.png"},281:function(e,n,t){"use strict";t.r(n),n.default=t.p+"assets/images/sge_stat-29ad9dfe485895eb54eea5baad709e15.png"}}]);
\ No newline at end of file
diff --git a/a8c4e132.f3a754af.js b/a8c4e132.fa55c01a.js
similarity index 98%
rename from a8c4e132.f3a754af.js
rename to a8c4e132.fa55c01a.js
index 22675f3..2df4d2a 100644
--- a/a8c4e132.f3a754af.js
+++ b/a8c4e132.fa55c01a.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[90],{157:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return a})),n.d(t,"metadata",(function(){return i})),n.d(t,"toc",(function(){return c})),n.d(t,"default",(function(){return m}));var l=n(3),r=n(7),o=(n(0),n(209)),a={title:"Model Client"},i={unversionedId:"userDocs/submarine-sdk/model-client",id:"version-0.6.0/userDocs/submarine-sdk/model-client",isDocsHomePage:!1,title:"Model Client",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/userDocs/submarine-sdk/model-client.md",slug:"/userDocs/submarine-sdk/model-client",permalink:"/docs/userDocs/submarine-sdk/model-client",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/submarine-sdk/model-client.md",version:"0.6.0",sidebar:"docs",previous:{title:"Experiment Client",permalink:"/docs/userDocs/submarine-sdk/experiment-client"},next:{title:"Tracking",permalink:"/docs/userDocs/submarine-sdk/tracking"}},c=[{value:"class ModelClient()",id:"class-modelclient",children:[{value:"<code>ModelsClient(tracking_uri=None, registry_uri=None)-&gt;ModelsClient</code>",id:"modelsclienttracking_urinone-registry_urinone-modelsclient",children:[]},{value:"<code>ModelsClient.start()-&gt;[Active Run]</code>",id:"modelsclientstart-active-run",children:[]},{value:"<code>ModelsClient.log_param(key, value)-&gt;None</code>",id:"modelsclientlog_paramkey-value-none",children:[]},{value:"<code>ModelsClient.log_params(params)-&gt;None</code>",id:"modelsclientlog_paramsparams-none",children:[]},{value:"<code>ModelsClient.log_metric(self, key, value, step=None)-&gt;None</code>",id:"modelsclientlog_metricself-key-value-stepnone-none",children:[]},{value:"<code>ModelsClient.log_metrics(self, metrics, step=None)-&gt;None</code>",id:"modelsclientlog_metricsself-metrics-stepnone-none",children:[]},{value:"<code>(Beta) ModelsClient.save_model(self, model_type, model, artifact_path, registered_model_name=None)</code>",id:"beta-modelsclientsave_modelself-model_type-model-artifact_path-registered_model_namenone",children:[]},{value:"<code>(Beta) ModelsClient.load_model(self, name, version)-&gt;mlflow.pyfunc.PyFuncModel</code>",id:"beta-modelsclientload_modelself-name-version-mlflowpyfuncpyfuncmodel",children:[]},{value:"<code>(Beta) ModelsClient.update_model(self, name, new_name)-&gt;None</code>",id:"beta-modelsclientupdate_modelself-name-new_name-none",children:[]},{value:"<code>(Beta) ModelsClient.delete_model(self, name, version)-&gt;None</code>",id:"beta-modelsclientdelete_modelself-name-version-none",children:[]}]}],s={toc:c};function m(e){var t=e.components,n=Object(r.a)(e,["components"]);return Object(o.b)("wrapper",Object(l.a)({},s,n,{components:t,mdxType:"MDXLayout"}),Object(o.b)("h2",{id:"class-modelclient"},"class ModelClient()"),Object(o.b)("p",null,"The submarine ModelsClient provides a high-level API for logging metrics / parameters and managing models."),Object(o.b)("h3",{id:"modelsclienttracking_urinone-registry_urinone-modelsclient"},Object(o.b)("inlineCode",{parentName:"h3"},"ModelsClient(tracking_uri=None, registry_uri=None)->ModelsClient")),Object(o.b)("p",null,"Initialize a ",Object(o.b)("inlineCode",{parentName:"p"},"ModelsClient")," instance."),Object(o.b)("blockquote",null,Object(o.b)("p",{parentName:"blockquote"},Object(o.b)("strong",{parentName:"p"},"Parameters")),Object(o.b)("ul",{parentName:"blockquote"},Object(o.b)("li",{parentName:"ul"},Object(o.b)("strong",{parentName:"li"},"tracking_uri"),": If run in Submarine, you do not need to specify it. Otherwise, specify the external tracking_uri."),Object(o.b)("li",{parentName:"ul"},Object(o.b)("strong",{parentName:"li"},"registry_uri"),":  If run in Submarine, you do not need to specify it. Otherwise, specify the external registry_uri."))),Object(o.b)("blockquote",null,Object(o.b)("p",{parentName:"blockquote"},Object(o.b)("strong",{parentName:"p"},"Returns")),Object(o.b)("ul",{parentName:"blockquote"},Object(o.b)("li",{parentName:"ul"},"ModelsClient instance"))),Object(o.b)("p",null,"Example"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-python"},'from submarine import ModelsClient\n\nmodelClient = ModelsClient(tracking_uri="0.0.0.0:4000", registry_uri="0.0.0.0:5000")\n')),Object(o.b)("h3",{id:"modelsclientstart-active-run"},Object(o.b)("inlineCode",{parentName:"h3"},"ModelsClient.start()->[Active Run]")),Object(o.b)("p",null,"For details of ",Object(o.b)("a",{parentName:"p",href:"https://mlflow.org/docs/latest/_modules/mlflow/tracking/fluent.html#ActiveRun"},"Active Run")),Object(o.b)("p",null,'Start a new Mlflow run, and direct the logging of the artifacts and metadata to the Run named "worker_i" under Experiment "job_id". If in distributed training, worker and job id would be parsed from environment variable. If in local traning, worker and job id will be generated.'),Object(o.b)("blockquote",null,Object(o.b)("p",{parentName:"blockquote"},Object(o.b)("strong",{parentName:"p"},"Returns")),Object(o.b)("ul",{parentName:"blockquote"},Object(o.b)("li",{parentName:"ul"},"Active Run"))),Object(o.b)("h3",{id:"modelsclientlog_paramkey-value-none"},Object(o.b)("inlineCode",{parentName:"h3"},"ModelsClient.log_param(key, value)->None")),Object(o.b)("p",null,"Log parameter under the current run."),Object(o.b)("blockquote",null,Object(o.b)("p",{parentName:"blockquote"},Object(o.b)("strong",{parentName:"p"},"Parameters")),Object(o.b)("ul",{parentName:"blockquote"},Object(o.b)("li",{parentName:"ul"},Object(o.b)("strong",{parentName:"li"},"key")," \u2013 Parameter name"),Object(o.b)("li",{parentName:"ul"},Object(o.b)("strong",{parentName:"li"},"value")," \u2013 Parameter value"))),Object(o.b)("p",null,"Example"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-python"},'from submarine import ModelsClient\n\nmodelClient = ModelsClient()\nwith modelClient.start() as run:\n  modelClient.log_param("learning_rate", 0.01)\n')),Object(o.b)("h3",{id:"modelsclientlog_paramsparams-none"},Object(o.b)("inlineCode",{parentName:"h3"},"ModelsClient.log_params(params)->None")),Object(o.b)("p",null,"Log a batch of params for the current run."),Object(o.b)("blockquote",null,Object(o.b)("p",{parentName:"blockquote"},Object(o.b)("strong",{parentName:"p"},"Parameters")),Object(o.b)("ul",{parentName:"blockquote"},Object(o.b)("li",{parentName:"ul"},Object(o.b)("strong",{parentName:"li"},"params")," \u2013 Dictionary of param_name: String -> value"))),Object(o.b)("p",null,"Example"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-python"},'from submarine import ModelsClient\n\nparams = {"learning_rate": 0.01, "n_estimators": 10}\n\nmodelClient = ModelsClient()\nwith modelClient.start() as run:\n  modelClient.log_params(params)\n')),Object(o.b)("h3",{id:"modelsclientlog_metricself-key-value-stepnone-none"},Object(o.b)("inlineCode",{parentName:"h3"},"ModelsClient.log_metric(self, key, value, step=None)->None")),Object(o.b)("p",null,"Log a metric under the current run."),Object(o.b)("blockquote",null,Object(o.b)("p",{parentName:"blockquote"},Object(o.b)("strong",{parentName:"p"},"Parameters")),Object(o.b)("ul",{parentName:"blockquote"},Object(o.b)("li",{parentName:"ul"},Object(o.b)("strong",{parentName:"li"},"key")," \u2013 Metric name (string)."),Object(o.b)("li",{parentName:"ul"},Object(o.b)("strong",{parentName:"li"},"value")," \u2013 Metric value (float)."),Object(o.b)("li",{parentName:"ul"},Object(o.b)("strong",{parentName:"li"},"step")," \u2013 Metric step (int). Defaults to zero if unspecified."))),Object(o.b)("p",null,"Example"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-python"},'from submarine import ModelsClient\n\nmodelClient = ModelsClient()\nwith modelClient.start() as run:\n  modelClient.log_metric("mse", 2500.00)\n')),Object(o.b)("h3",{id:"modelsclientlog_metricsself-metrics-stepnone-none"},Object(o.b)("inlineCode",{parentName:"h3"},"ModelsClient.log_metrics(self, metrics, step=None)->None")),Object(o.b)("p",null,"Log multiple metrics for the current run."),Object(o.b)("blockquote",null,Object(o.b)("p",{parentName:"blockquote"},Object(o.b)("strong",{parentName:"p"},"Parameters")),Object(o.b)("ul",{parentName:"blockquote"},Object(o.b)("li",{parentName:"ul"},Object(o.b)("strong",{parentName:"li"},"metrics")," \u2013 Dictionary of metric_name: String -> value: Float."),Object(o.b)("li",{parentName:"ul"},Object(o.b)("strong",{parentName:"li"},"step")," \u2013 A single integer step at which to log the specified Metrics. If unspecified, each metric is logged at step zero."))),Object(o.b)("p",null,"Example"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-python"},'from submarine import ModelsClient\n\nmetrics = {"mse": 2500.00, "rmse": 50.00}\n\nmodelClient = ModelsClient()\nwith modelClient.start() as run:\n  modelClient.log_metrics(metrics)\n')),Object(o.b)("h3",{id:"beta-modelsclientsave_modelself-model_type-model-artifact_path-registered_model_namenone"},Object(o.b)("inlineCode",{parentName:"h3"},"(Beta) ModelsClient.save_model(self, model_type, model, artifact_path, registered_model_name=None)")),Object(o.b)("p",null,"Save model to model registry."),Object(o.b)("h3",{id:"beta-modelsclientload_modelself-name-version-mlflowpyfuncpyfuncmodel"},Object(o.b)("inlineCode",{parentName:"h3"},"(Beta) ModelsClient.load_model(self, name, version)->mlflow.pyfunc.PyFuncModel")),Object(o.b)("p",null,"Load a model from model registry."),Object(o.b)("h3",{id:"beta-modelsclientupdate_modelself-name-new_name-none"},Object(o.b)("inlineCode",{parentName:"h3"},"(Beta) ModelsClient.update_model(self, name, new_name)->None")),Object(o.b)("p",null,"Update a model by new name."),Object(o.b)("h3",{id:"beta-modelsclientdelete_modelself-name-version-none"},Object(o.b)("inlineCode",{parentName:"h3"},"(Beta) ModelsClient.delete_model(self, name, version)->None")),Object(o.b)("p",null,"Delete a model in model registry."))}m.isMDXComponent=!0},209:function(e,t,n){"use strict";n.d(t,"a",(function(){return d})),n.d(t,"b",(function(){return p}));var l=n(0),r=n.n(l);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);t&&(l=l.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,l)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function c(e,t){if(null==e)return{};var n,l,r=function(e,t){if(null==e)return{};var n,l,r={},o=Object.keys(e);for(l=0;l<o.length;l++)n=o[l],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(l=0;l<o.length;l++)n=o[l],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=r.a.createContext({}),m=function(e){var t=r.a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},d=function(e){var t=m(e.components);return r.a.createElement(s.Provider,{value:t},e.children)},b={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},u=r.a.forwardRef((function(e,t){var n=e.components,l=e.mdxType,o=e.originalType,a=e.parentName,s=c(e,["components","mdxType","originalType","parentName"]),d=m(n),u=l,p=d["".concat(a,".").concat(u)]||d[u]||b[u]||o;return n?r.a.createElement(p,i(i({ref:t},s),{},{components:n})):r.a.createElement(p,i({ref:t},s))}));function p(e,t){var n=arguments,l=t&&t.mdxType;if("string"==typeof e||l){var o=n.length,a=new Array(o);a[0]=u;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i.mdxType="string"==typeof e?e:l,a[1]=i;for(var s=2;s<o;s++)a[s]=n[s];return r.a.createElement.apply(null,a)}return r.a.createElement.apply(null,n)}u.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[79],{146:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return a})),n.d(t,"metadata",(function(){return i})),n.d(t,"toc",(function(){return c})),n.d(t,"default",(function(){return m}));var l=n(3),r=n(7),o=(n(0),n(194)),a={title:"Model Client"},i={unversionedId:"userDocs/submarine-sdk/model-client",id:"version-0.6.0/userDocs/submarine-sdk/model-client",isDocsHomePage:!1,title:"Model Client",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/userDocs/submarine-sdk/model-client.md",slug:"/userDocs/submarine-sdk/model-client",permalink:"/docs/userDocs/submarine-sdk/model-client",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/submarine-sdk/model-client.md",version:"0.6.0",sidebar:"docs",previous:{title:"Experiment Client",permalink:"/docs/userDocs/submarine-sdk/experiment-client"},next:{title:"Tracking",permalink:"/docs/userDocs/submarine-sdk/tracking"}},c=[{value:"class ModelClient()",id:"class-modelclient",children:[{value:"<code>ModelsClient(tracking_uri=None, registry_uri=None)-&gt;ModelsClient</code>",id:"modelsclienttracking_urinone-registry_urinone-modelsclient",children:[]},{value:"<code>ModelsClient.start()-&gt;[Active Run]</code>",id:"modelsclientstart-active-run",children:[]},{value:"<code>ModelsClient.log_param(key, value)-&gt;None</code>",id:"modelsclientlog_paramkey-value-none",children:[]},{value:"<code>ModelsClient.log_params(params)-&gt;None</code>",id:"modelsclientlog_paramsparams-none",children:[]},{value:"<code>ModelsClient.log_metric(self, key, value, step=None)-&gt;None</code>",id:"modelsclientlog_metricself-key-value-stepnone-none",children:[]},{value:"<code>ModelsClient.log_metrics(self, metrics, step=None)-&gt;None</code>",id:"modelsclientlog_metricsself-metrics-stepnone-none",children:[]},{value:"<code>(Beta) ModelsClient.save_model(self, model_type, model, artifact_path, registered_model_name=None)</code>",id:"beta-modelsclientsave_modelself-model_type-model-artifact_path-registered_model_namenone",children:[]},{value:"<code>(Beta) ModelsClient.load_model(self, name, version)-&gt;mlflow.pyfunc.PyFuncModel</code>",id:"beta-modelsclientload_modelself-name-version-mlflowpyfuncpyfuncmodel",children:[]},{value:"<code>(Beta) ModelsClient.update_model(self, name, new_name)-&gt;None</code>",id:"beta-modelsclientupdate_modelself-name-new_name-none",children:[]},{value:"<code>(Beta) ModelsClient.delete_model(self, name, version)-&gt;None</code>",id:"beta-modelsclientdelete_modelself-name-version-none",children:[]}]}],s={toc:c};function m(e){var t=e.components,n=Object(r.a)(e,["components"]);return Object(o.b)("wrapper",Object(l.a)({},s,n,{components:t,mdxType:"MDXLayout"}),Object(o.b)("h2",{id:"class-modelclient"},"class ModelClient()"),Object(o.b)("p",null,"The submarine ModelsClient provides a high-level API for logging metrics / parameters and managing models."),Object(o.b)("h3",{id:"modelsclienttracking_urinone-registry_urinone-modelsclient"},Object(o.b)("inlineCode",{parentName:"h3"},"ModelsClient(tracking_uri=None, registry_uri=None)->ModelsClient")),Object(o.b)("p",null,"Initialize a ",Object(o.b)("inlineCode",{parentName:"p"},"ModelsClient")," instance."),Object(o.b)("blockquote",null,Object(o.b)("p",{parentName:"blockquote"},Object(o.b)("strong",{parentName:"p"},"Parameters")),Object(o.b)("ul",{parentName:"blockquote"},Object(o.b)("li",{parentName:"ul"},Object(o.b)("strong",{parentName:"li"},"tracking_uri"),": If run in Submarine, you do not need to specify it. Otherwise, specify the external tracking_uri."),Object(o.b)("li",{parentName:"ul"},Object(o.b)("strong",{parentName:"li"},"registry_uri"),":  If run in Submarine, you do not need to specify it. Otherwise, specify the external registry_uri."))),Object(o.b)("blockquote",null,Object(o.b)("p",{parentName:"blockquote"},Object(o.b)("strong",{parentName:"p"},"Returns")),Object(o.b)("ul",{parentName:"blockquote"},Object(o.b)("li",{parentName:"ul"},"ModelsClient instance"))),Object(o.b)("p",null,"Example"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-python"},'from submarine import ModelsClient\n\nmodelClient = ModelsClient(tracking_uri="0.0.0.0:4000", registry_uri="0.0.0.0:5000")\n')),Object(o.b)("h3",{id:"modelsclientstart-active-run"},Object(o.b)("inlineCode",{parentName:"h3"},"ModelsClient.start()->[Active Run]")),Object(o.b)("p",null,"For details of ",Object(o.b)("a",{parentName:"p",href:"https://mlflow.org/docs/latest/_modules/mlflow/tracking/fluent.html#ActiveRun"},"Active Run")),Object(o.b)("p",null,'Start a new Mlflow run, and direct the logging of the artifacts and metadata to the Run named "worker_i" under Experiment "job_id". If in distributed training, worker and job id would be parsed from environment variable. If in local traning, worker and job id will be generated.'),Object(o.b)("blockquote",null,Object(o.b)("p",{parentName:"blockquote"},Object(o.b)("strong",{parentName:"p"},"Returns")),Object(o.b)("ul",{parentName:"blockquote"},Object(o.b)("li",{parentName:"ul"},"Active Run"))),Object(o.b)("h3",{id:"modelsclientlog_paramkey-value-none"},Object(o.b)("inlineCode",{parentName:"h3"},"ModelsClient.log_param(key, value)->None")),Object(o.b)("p",null,"Log parameter under the current run."),Object(o.b)("blockquote",null,Object(o.b)("p",{parentName:"blockquote"},Object(o.b)("strong",{parentName:"p"},"Parameters")),Object(o.b)("ul",{parentName:"blockquote"},Object(o.b)("li",{parentName:"ul"},Object(o.b)("strong",{parentName:"li"},"key")," \u2013 Parameter name"),Object(o.b)("li",{parentName:"ul"},Object(o.b)("strong",{parentName:"li"},"value")," \u2013 Parameter value"))),Object(o.b)("p",null,"Example"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-python"},'from submarine import ModelsClient\n\nmodelClient = ModelsClient()\nwith modelClient.start() as run:\n  modelClient.log_param("learning_rate", 0.01)\n')),Object(o.b)("h3",{id:"modelsclientlog_paramsparams-none"},Object(o.b)("inlineCode",{parentName:"h3"},"ModelsClient.log_params(params)->None")),Object(o.b)("p",null,"Log a batch of params for the current run."),Object(o.b)("blockquote",null,Object(o.b)("p",{parentName:"blockquote"},Object(o.b)("strong",{parentName:"p"},"Parameters")),Object(o.b)("ul",{parentName:"blockquote"},Object(o.b)("li",{parentName:"ul"},Object(o.b)("strong",{parentName:"li"},"params")," \u2013 Dictionary of param_name: String -> value"))),Object(o.b)("p",null,"Example"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-python"},'from submarine import ModelsClient\n\nparams = {"learning_rate": 0.01, "n_estimators": 10}\n\nmodelClient = ModelsClient()\nwith modelClient.start() as run:\n  modelClient.log_params(params)\n')),Object(o.b)("h3",{id:"modelsclientlog_metricself-key-value-stepnone-none"},Object(o.b)("inlineCode",{parentName:"h3"},"ModelsClient.log_metric(self, key, value, step=None)->None")),Object(o.b)("p",null,"Log a metric under the current run."),Object(o.b)("blockquote",null,Object(o.b)("p",{parentName:"blockquote"},Object(o.b)("strong",{parentName:"p"},"Parameters")),Object(o.b)("ul",{parentName:"blockquote"},Object(o.b)("li",{parentName:"ul"},Object(o.b)("strong",{parentName:"li"},"key")," \u2013 Metric name (string)."),Object(o.b)("li",{parentName:"ul"},Object(o.b)("strong",{parentName:"li"},"value")," \u2013 Metric value (float)."),Object(o.b)("li",{parentName:"ul"},Object(o.b)("strong",{parentName:"li"},"step")," \u2013 Metric step (int). Defaults to zero if unspecified."))),Object(o.b)("p",null,"Example"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-python"},'from submarine import ModelsClient\n\nmodelClient = ModelsClient()\nwith modelClient.start() as run:\n  modelClient.log_metric("mse", 2500.00)\n')),Object(o.b)("h3",{id:"modelsclientlog_metricsself-metrics-stepnone-none"},Object(o.b)("inlineCode",{parentName:"h3"},"ModelsClient.log_metrics(self, metrics, step=None)->None")),Object(o.b)("p",null,"Log multiple metrics for the current run."),Object(o.b)("blockquote",null,Object(o.b)("p",{parentName:"blockquote"},Object(o.b)("strong",{parentName:"p"},"Parameters")),Object(o.b)("ul",{parentName:"blockquote"},Object(o.b)("li",{parentName:"ul"},Object(o.b)("strong",{parentName:"li"},"metrics")," \u2013 Dictionary of metric_name: String -> value: Float."),Object(o.b)("li",{parentName:"ul"},Object(o.b)("strong",{parentName:"li"},"step")," \u2013 A single integer step at which to log the specified Metrics. If unspecified, each metric is logged at step zero."))),Object(o.b)("p",null,"Example"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-python"},'from submarine import ModelsClient\n\nmetrics = {"mse": 2500.00, "rmse": 50.00}\n\nmodelClient = ModelsClient()\nwith modelClient.start() as run:\n  modelClient.log_metrics(metrics)\n')),Object(o.b)("h3",{id:"beta-modelsclientsave_modelself-model_type-model-artifact_path-registered_model_namenone"},Object(o.b)("inlineCode",{parentName:"h3"},"(Beta) ModelsClient.save_model(self, model_type, model, artifact_path, registered_model_name=None)")),Object(o.b)("p",null,"Save model to model registry."),Object(o.b)("h3",{id:"beta-modelsclientload_modelself-name-version-mlflowpyfuncpyfuncmodel"},Object(o.b)("inlineCode",{parentName:"h3"},"(Beta) ModelsClient.load_model(self, name, version)->mlflow.pyfunc.PyFuncModel")),Object(o.b)("p",null,"Load a model from model registry."),Object(o.b)("h3",{id:"beta-modelsclientupdate_modelself-name-new_name-none"},Object(o.b)("inlineCode",{parentName:"h3"},"(Beta) ModelsClient.update_model(self, name, new_name)->None")),Object(o.b)("p",null,"Update a model by new name."),Object(o.b)("h3",{id:"beta-modelsclientdelete_modelself-name-version-none"},Object(o.b)("inlineCode",{parentName:"h3"},"(Beta) ModelsClient.delete_model(self, name, version)->None")),Object(o.b)("p",null,"Delete a model in model registry."))}m.isMDXComponent=!0},194:function(e,t,n){"use strict";n.d(t,"a",(function(){return d})),n.d(t,"b",(function(){return p}));var l=n(0),r=n.n(l);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);t&&(l=l.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,l)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function c(e,t){if(null==e)return{};var n,l,r=function(e,t){if(null==e)return{};var n,l,r={},o=Object.keys(e);for(l=0;l<o.length;l++)n=o[l],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(l=0;l<o.length;l++)n=o[l],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=r.a.createContext({}),m=function(e){var t=r.a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},d=function(e){var t=m(e.components);return r.a.createElement(s.Provider,{value:t},e.children)},b={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},u=r.a.forwardRef((function(e,t){var n=e.components,l=e.mdxType,o=e.originalType,a=e.parentName,s=c(e,["components","mdxType","originalType","parentName"]),d=m(n),u=l,p=d["".concat(a,".").concat(u)]||d[u]||b[u]||o;return n?r.a.createElement(p,i(i({ref:t},s),{},{components:n})):r.a.createElement(p,i({ref:t},s))}));function p(e,t){var n=arguments,l=t&&t.mdxType;if("string"==typeof e||l){var o=n.length,a=new Array(o);a[0]=u;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i.mdxType="string"==typeof e?e:l,a[1]=i;for(var s=2;s<o;s++)a[s]=n[s];return r.a.createElement.apply(null,a)}return r.a.createElement.apply(null,n)}u.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/a9744973.499eb3b2.js b/a9744973.77aa713c.js
similarity index 92%
rename from a9744973.499eb3b2.js
rename to a9744973.77aa713c.js
index 3927a3b..b7f3832 100644
--- a/a9744973.499eb3b2.js
+++ b/a9744973.77aa713c.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[91],{158:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return o})),n.d(t,"metadata",(function(){return c})),n.d(t,"toc",(function(){return l})),n.d(t,"default",(function(){return b}));var r=n(3),a=n(7),i=(n(0),n(209)),o={title:"Quickstart"},c={unversionedId:"gettingStarted/quickstart",id:"version-0.6.0/gettingStarted/quickstart",isDocsHomePage:!1,title:"Quickstart",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/gettingStarted/quickstart.md",slug:"/gettingStarted/quickstart",permalink:"/docs/gettingStarted/quickstart",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/gettingStarted/quickstart.md",version:"0.6.0",sidebar:"docs",next:{title:"Jupyter Notebook",permalink:"/docs/gettingStarted/notebook"}},l=[{value:"Installation",id:"installation",children:[{value:"Prepare a Kubernetes cluster",id:"prepare-a-kubernetes-cluster",children:[]},{value:"Launch submarine in the cluster",id:"launch-submarine-in-the-cluster",children:[]},{value:"Ensure submarine is ready",id:"ensure-submarine-is-ready",children:[]},{value:"Connect to workbench",id:"connect-to-workbench",children:[]}]},{value:"Example: Submit a mnist distributed example",id:"example-submit-a-mnist-distributed-example",children:[{value:"1. Write a python script for distributed training",id:"1-write-a-python-script-for-distributed-training",children:[]},{value:"2. Prepare an environment compatible with the training",id:"2-prepare-an-environment-compatible-with-the-training",children:[]},{value:"3. Submit the experiment",id:"3-submit-the-experiment",children:[]},{value:"4. Monitor the process (modelClient)",id:"4-monitor-the-process-modelclient",children:[]},{value:"5. Serve the model (In development)",id:"5-serve-the-model-in-development",children:[]}]}],s={toc:l};function b(e){var t=e.components,o=Object(a.a)(e,["components"]);return Object(i.b)("wrapper",Object(r.a)({},s,o,{components:t,mdxType:"MDXLayout"}),Object(i.b)("p",null,"This document gives you a quick view on the basic usage of Submarine platform. You can finish each step of ML model lifecycle on the platform without messing up with the troublesome environment problems."),Object(i.b)("h2",{id:"installation"},"Installation"),Object(i.b)("h3",{id:"prepare-a-kubernetes-cluster"},"Prepare a Kubernetes cluster"),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},"Prerequisite")),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Check ",Object(i.b)("a",{parentName:"li",href:"https://github.com/apache/submarine/blob/master/website/docs/devDocs/Dependencies.md"},"dependency page")," for the compatible version"),Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",{parentName:"li",href:"https://kubernetes.io/docs/tasks/tools/install-kubectl/"},"kubectl")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",{parentName:"li",href:"https://helm.sh/docs/intro/install/"},"helm")," (Helm v3 is minimum requirement.)"),Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",{parentName:"li",href:"https://minikube.sigs.k8s.io/docs/start/"},"minikube"),".")),Object(i.b)("ol",{start:2},Object(i.b)("li",{parentName:"ol"},"Start minikube cluster")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"$ minikube start --vm-driver=docker --cpus 8 --memory 4096 --kubernetes-version v1.15.11\n")),Object(i.b)("h3",{id:"launch-submarine-in-the-cluster"},"Launch submarine in the cluster"),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},"Clone the project")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"$ git clone https://github.com/apache/submarine.git\n")),Object(i.b)("ol",{start:2},Object(i.b)("li",{parentName:"ol"},"Install the resources by helm chart")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"$ cd submarine\n$ helm install submarine ./helm-charts/submarine\n")),Object(i.b)("h3",{id:"ensure-submarine-is-ready"},"Ensure submarine is ready"),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},"Use kubectl to query the status of pods")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"$ kubectl get pods\n")),Object(i.b)("ol",{start:2},Object(i.b)("li",{parentName:"ol"},"Make sure each pod is ",Object(i.b)("inlineCode",{parentName:"li"},"Running"))),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"NAME                                              READY   STATUS    RESTARTS   AGE\nnotebook-controller-deployment-5d4f5f874c-vwds8   1/1     Running   0          3h33m\npytorch-operator-844c866d54-q5ztd                 1/1     Running   0          3h33m\nsubmarine-database-674987ff7d-r8zqs               1/1     Running   0          3h33m\nsubmarine-minio-5fdd957785-xd987                  1/1     Running   0          3h33m\nsubmarine-mlflow-76bbf5c7b-g2ntd                  1/1     Running   0          3h33m\nsubmarine-server-66f7b8658b-sfmv8                 1/1     Running   0          3h33m\nsubmarine-tensorboard-6c44944dfb-tvbr9            1/1     Running   0          3h33m\nsubmarine-traefik-7cbcfd4bd9-4bczn                1/1     Running   0          3h33m\ntf-job-operator-6bb69fd44-mc8ww                   1/1     Running   0          3h33m\n")),Object(i.b)("h3",{id:"connect-to-workbench"},"Connect to workbench"),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},"Port-forwarding")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"# using port-forwarding\n$ kubectl port-forward --address 0.0.0.0 service/submarine-traefik 32080:80\n")),Object(i.b)("ol",{start:2},Object(i.b)("li",{parentName:"ol"},"Open ",Object(i.b)("inlineCode",{parentName:"li"},"http://0.0.0.0:32080"))),Object(i.b)("p",null,Object(i.b)("img",{src:n(240).default})),Object(i.b)("h2",{id:"example-submit-a-mnist-distributed-example"},"Example: Submit a mnist distributed example"),Object(i.b)("p",null,"We put the code of this example ",Object(i.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/tree/master/dev-support/examples/quickstart"},"here"),". ",Object(i.b)("inlineCode",{parentName:"p"},"train.py")," is our training script, and ",Object(i.b)("inlineCode",{parentName:"p"},"build.sh")," is the script to build a docker image."),Object(i.b)("h3",{id:"1-write-a-python-script-for-distributed-training"},"1. Write a python script for distributed training"),Object(i.b)("p",null,"Take a simple mnist tensorflow script as an example. We choose ",Object(i.b)("inlineCode",{parentName:"p"},"MultiWorkerMirroredStrategy")," as our distributed strategy."),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-python"},"\"\"\"\n./dev-support/examples/quickstart/train.py\nReference: https://github.com/kubeflow/tf-operator/blob/master/examples/v1/distribution_strategy/keras-API/multi_worker_strategy-with-keras.py\n\"\"\"\n\nimport tensorflow_datasets as tfds\nimport tensorflow as tf\nfrom tensorflow.keras import layers, models\nfrom submarine import ModelsClient\n\ndef make_datasets_unbatched():\n  BUFFER_SIZE = 10000\n\n  # Scaling MNIST data from (0, 255] to (0., 1.]\n  def scale(image, label):\n    image = tf.cast(image, tf.float32)\n    image /= 255\n    return image, label\n\n  datasets, _ = tfds.load(name='mnist', with_info=True, as_supervised=True)\n\n  return datasets['train'].map(scale).cache().shuffle(BUFFER_SIZE)\n\n\ndef build_and_compile_cnn_model():\n  model = models.Sequential()\n  model.add(\n      layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)))\n  model.add(layers.MaxPooling2D((2, 2)))\n  model.add(layers.Conv2D(64, (3, 3), activation='relu'))\n  model.add(layers.MaxPooling2D((2, 2)))\n  model.add(layers.Conv2D(64, (3, 3), activation='relu'))\n  model.add(layers.Flatten())\n  model.add(layers.Dense(64, activation='relu'))\n  model.add(layers.Dense(10, activation='softmax'))\n\n  model.summary()\n\n  model.compile(optimizer='adam',\n                loss='sparse_categorical_crossentropy',\n                metrics=['accuracy'])\n\n  return model\n\ndef main():\n  strategy = tf.distribute.experimental.MultiWorkerMirroredStrategy(\n      communication=tf.distribute.experimental.CollectiveCommunication.AUTO)\n\n  BATCH_SIZE_PER_REPLICA = 4\n  BATCH_SIZE = BATCH_SIZE_PER_REPLICA * strategy.num_replicas_in_sync\n\n  with strategy.scope():\n    ds_train = make_datasets_unbatched().batch(BATCH_SIZE).repeat()\n    options = tf.data.Options()\n    options.experimental_distribute.auto_shard_policy = \\\n        tf.data.experimental.AutoShardPolicy.DATA\n    ds_train = ds_train.with_options(options)\n    # Model building/compiling need to be within `strategy.scope()`.\n    multi_worker_model = build_and_compile_cnn_model()\n\n  class MyCallback(tf.keras.callbacks.Callback):\n    def on_epoch_end(self, epoch, logs=None):\n      # monitor the loss and accuracy\n      print(logs)\n      modelClient.log_metrics({\"loss\": logs[\"loss\"], \"accuracy\": logs[\"accuracy\"]}, epoch)\n\n  with modelClient.start() as run:\n    multi_worker_model.fit(ds_train, epochs=10, steps_per_epoch=70, callbacks=[MyCallback()])\n\n\nif __name__ == '__main__':\n  modelClient = ModelsClient()\n  main()\n")),Object(i.b)("h3",{id:"2-prepare-an-environment-compatible-with-the-training"},"2. Prepare an environment compatible with the training"),Object(i.b)("p",null,"Build a docker image equipped with the requirement of the environment."),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"$ ./dev-support/examples/quickstart/build.sh \n")),Object(i.b)("h3",{id:"3-submit-the-experiment"},"3. Submit the experiment"),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Open submarine workbench and click ",Object(i.b)("inlineCode",{parentName:"p"},"+ New Experiment"))),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Fill the form accordingly. Here we set 3 workers."),Object(i.b)("ol",{parentName:"li"},Object(i.b)("li",{parentName:"ol"},"Step 1\n",Object(i.b)("img",{src:n(241).default})),Object(i.b)("li",{parentName:"ol"},"Step 2\n",Object(i.b)("img",{src:n(242).default})),Object(i.b)("li",{parentName:"ol"},"Step 3\n",Object(i.b)("img",{src:n(243).default})),Object(i.b)("li",{parentName:"ol"},"The experiment is successfully submitted\n",Object(i.b)("img",{src:n(244).default}))))),Object(i.b)("h3",{id:"4-monitor-the-process-modelclient"},"4. Monitor the process (modelClient)"),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"In our code, we use ",Object(i.b)("inlineCode",{parentName:"p"},"modelClient")," from ",Object(i.b)("inlineCode",{parentName:"p"},"submarine-sdk")," to record the metrics. To see the result, click ",Object(i.b)("inlineCode",{parentName:"p"},"MLflow UI")," in the workbench.")),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"To compare the metrics of each worker, you can select all workers and then click ",Object(i.b)("inlineCode",{parentName:"p"},"compare")),Object(i.b)("p",{parentName:"li"},Object(i.b)("img",{src:n(298).default})),Object(i.b)("p",{parentName:"li"},Object(i.b)("img",{src:n(299).default})))),Object(i.b)("h3",{id:"5-serve-the-model-in-development"},"5. Serve the model (In development)"))}b.isMDXComponent=!0},209:function(e,t,n){"use strict";n.d(t,"a",(function(){return m})),n.d(t,"b",(function(){return d}));var r=n(0),a=n.n(r);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function c(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=a.a.createContext({}),b=function(e){var t=a.a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):c(c({},t),e)),n},m=function(e){var t=b(e.components);return a.a.createElement(s.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},p=a.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,o=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),m=b(n),p=r,d=m["".concat(o,".").concat(p)]||m[p]||u[p]||i;return n?a.a.createElement(d,c(c({ref:t},s),{},{components:n})):a.a.createElement(d,c({ref:t},s))}));function d(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=p;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c.mdxType="string"==typeof e?e:r,o[1]=c;for(var s=2;s<i;s++)o[s]=n[s];return a.a.createElement.apply(null,o)}return a.a.createElement.apply(null,n)}p.displayName="MDXCreateElement"},240:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/quickstart-worbench-0d8c2f6217f22460d4cf8e9b05d06f6b.png"},241:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/quickstart-submit-1-666fc27e30765ab0ddad117e3a354814.png"},242:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/quickstart-submit-2-9c78114774db9e88702cc8e72722ceca.png"},243:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/quickstart-submit-3-c412f456d672e509be26040750826a76.png"},244:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/quickstart-submit-4-00c8dfb8d7d8a1bd1fe52f43712fc4a9.png"},298:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/quickstart-mlflow-055f1780671b88621e0c6324f408dbbe.png"},299:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/quickstart-mlflow-2-d83b03b1ba4bdefc55540a54f6214a13.png"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[80],{147:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return o})),n.d(t,"metadata",(function(){return c})),n.d(t,"toc",(function(){return l})),n.d(t,"default",(function(){return b}));var r=n(3),a=n(7),i=(n(0),n(194)),o={title:"Quickstart"},c={unversionedId:"gettingStarted/quickstart",id:"version-0.6.0/gettingStarted/quickstart",isDocsHomePage:!1,title:"Quickstart",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/gettingStarted/quickstart.md",slug:"/gettingStarted/quickstart",permalink:"/docs/gettingStarted/quickstart",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/gettingStarted/quickstart.md",version:"0.6.0",sidebar:"docs",next:{title:"Jupyter Notebook",permalink:"/docs/gettingStarted/notebook"}},l=[{value:"Installation",id:"installation",children:[{value:"Prepare a Kubernetes cluster",id:"prepare-a-kubernetes-cluster",children:[]},{value:"Launch submarine in the cluster",id:"launch-submarine-in-the-cluster",children:[]},{value:"Ensure submarine is ready",id:"ensure-submarine-is-ready",children:[]},{value:"Connect to workbench",id:"connect-to-workbench",children:[]}]},{value:"Example: Submit a mnist distributed example",id:"example-submit-a-mnist-distributed-example",children:[{value:"1. Write a python script for distributed training",id:"1-write-a-python-script-for-distributed-training",children:[]},{value:"2. Prepare an environment compatible with the training",id:"2-prepare-an-environment-compatible-with-the-training",children:[]},{value:"3. Submit the experiment",id:"3-submit-the-experiment",children:[]},{value:"4. Monitor the process (modelClient)",id:"4-monitor-the-process-modelclient",children:[]},{value:"5. Serve the model (In development)",id:"5-serve-the-model-in-development",children:[]}]}],s={toc:l};function b(e){var t=e.components,o=Object(a.a)(e,["components"]);return Object(i.b)("wrapper",Object(r.a)({},s,o,{components:t,mdxType:"MDXLayout"}),Object(i.b)("p",null,"This document gives you a quick view on the basic usage of Submarine platform. You can finish each step of ML model lifecycle on the platform without messing up with the troublesome environment problems."),Object(i.b)("h2",{id:"installation"},"Installation"),Object(i.b)("h3",{id:"prepare-a-kubernetes-cluster"},"Prepare a Kubernetes cluster"),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},"Prerequisite")),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Check ",Object(i.b)("a",{parentName:"li",href:"https://github.com/apache/submarine/blob/master/website/docs/devDocs/Dependencies.md"},"dependency page")," for the compatible version"),Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",{parentName:"li",href:"https://kubernetes.io/docs/tasks/tools/install-kubectl/"},"kubectl")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",{parentName:"li",href:"https://helm.sh/docs/intro/install/"},"helm")," (Helm v3 is minimum requirement.)"),Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",{parentName:"li",href:"https://minikube.sigs.k8s.io/docs/start/"},"minikube"),".")),Object(i.b)("ol",{start:2},Object(i.b)("li",{parentName:"ol"},"Start minikube cluster")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"$ minikube start --vm-driver=docker --cpus 8 --memory 4096 --kubernetes-version v1.15.11\n")),Object(i.b)("h3",{id:"launch-submarine-in-the-cluster"},"Launch submarine in the cluster"),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},"Clone the project")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"$ git clone https://github.com/apache/submarine.git\n")),Object(i.b)("ol",{start:2},Object(i.b)("li",{parentName:"ol"},"Install the resources by helm chart")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"$ cd submarine\n$ helm install submarine ./helm-charts/submarine\n")),Object(i.b)("h3",{id:"ensure-submarine-is-ready"},"Ensure submarine is ready"),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},"Use kubectl to query the status of pods")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"$ kubectl get pods\n")),Object(i.b)("ol",{start:2},Object(i.b)("li",{parentName:"ol"},"Make sure each pod is ",Object(i.b)("inlineCode",{parentName:"li"},"Running"))),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"NAME                                              READY   STATUS    RESTARTS   AGE\nnotebook-controller-deployment-5d4f5f874c-vwds8   1/1     Running   0          3h33m\npytorch-operator-844c866d54-q5ztd                 1/1     Running   0          3h33m\nsubmarine-database-674987ff7d-r8zqs               1/1     Running   0          3h33m\nsubmarine-minio-5fdd957785-xd987                  1/1     Running   0          3h33m\nsubmarine-mlflow-76bbf5c7b-g2ntd                  1/1     Running   0          3h33m\nsubmarine-server-66f7b8658b-sfmv8                 1/1     Running   0          3h33m\nsubmarine-tensorboard-6c44944dfb-tvbr9            1/1     Running   0          3h33m\nsubmarine-traefik-7cbcfd4bd9-4bczn                1/1     Running   0          3h33m\ntf-job-operator-6bb69fd44-mc8ww                   1/1     Running   0          3h33m\n")),Object(i.b)("h3",{id:"connect-to-workbench"},"Connect to workbench"),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},"Port-forwarding")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"# using port-forwarding\n$ kubectl port-forward --address 0.0.0.0 service/submarine-traefik 32080:80\n")),Object(i.b)("ol",{start:2},Object(i.b)("li",{parentName:"ol"},"Open ",Object(i.b)("inlineCode",{parentName:"li"},"http://0.0.0.0:32080"))),Object(i.b)("p",null,Object(i.b)("img",{src:n(218).default})),Object(i.b)("h2",{id:"example-submit-a-mnist-distributed-example"},"Example: Submit a mnist distributed example"),Object(i.b)("p",null,"We put the code of this example ",Object(i.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/tree/master/dev-support/examples/quickstart"},"here"),". ",Object(i.b)("inlineCode",{parentName:"p"},"train.py")," is our training script, and ",Object(i.b)("inlineCode",{parentName:"p"},"build.sh")," is the script to build a docker image."),Object(i.b)("h3",{id:"1-write-a-python-script-for-distributed-training"},"1. Write a python script for distributed training"),Object(i.b)("p",null,"Take a simple mnist tensorflow script as an example. We choose ",Object(i.b)("inlineCode",{parentName:"p"},"MultiWorkerMirroredStrategy")," as our distributed strategy."),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-python"},"\"\"\"\n./dev-support/examples/quickstart/train.py\nReference: https://github.com/kubeflow/tf-operator/blob/master/examples/v1/distribution_strategy/keras-API/multi_worker_strategy-with-keras.py\n\"\"\"\n\nimport tensorflow_datasets as tfds\nimport tensorflow as tf\nfrom tensorflow.keras import layers, models\nfrom submarine import ModelsClient\n\ndef make_datasets_unbatched():\n  BUFFER_SIZE = 10000\n\n  # Scaling MNIST data from (0, 255] to (0., 1.]\n  def scale(image, label):\n    image = tf.cast(image, tf.float32)\n    image /= 255\n    return image, label\n\n  datasets, _ = tfds.load(name='mnist', with_info=True, as_supervised=True)\n\n  return datasets['train'].map(scale).cache().shuffle(BUFFER_SIZE)\n\n\ndef build_and_compile_cnn_model():\n  model = models.Sequential()\n  model.add(\n      layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)))\n  model.add(layers.MaxPooling2D((2, 2)))\n  model.add(layers.Conv2D(64, (3, 3), activation='relu'))\n  model.add(layers.MaxPooling2D((2, 2)))\n  model.add(layers.Conv2D(64, (3, 3), activation='relu'))\n  model.add(layers.Flatten())\n  model.add(layers.Dense(64, activation='relu'))\n  model.add(layers.Dense(10, activation='softmax'))\n\n  model.summary()\n\n  model.compile(optimizer='adam',\n                loss='sparse_categorical_crossentropy',\n                metrics=['accuracy'])\n\n  return model\n\ndef main():\n  strategy = tf.distribute.experimental.MultiWorkerMirroredStrategy(\n      communication=tf.distribute.experimental.CollectiveCommunication.AUTO)\n\n  BATCH_SIZE_PER_REPLICA = 4\n  BATCH_SIZE = BATCH_SIZE_PER_REPLICA * strategy.num_replicas_in_sync\n\n  with strategy.scope():\n    ds_train = make_datasets_unbatched().batch(BATCH_SIZE).repeat()\n    options = tf.data.Options()\n    options.experimental_distribute.auto_shard_policy = \\\n        tf.data.experimental.AutoShardPolicy.DATA\n    ds_train = ds_train.with_options(options)\n    # Model building/compiling need to be within `strategy.scope()`.\n    multi_worker_model = build_and_compile_cnn_model()\n\n  class MyCallback(tf.keras.callbacks.Callback):\n    def on_epoch_end(self, epoch, logs=None):\n      # monitor the loss and accuracy\n      print(logs)\n      modelClient.log_metrics({\"loss\": logs[\"loss\"], \"accuracy\": logs[\"accuracy\"]}, epoch)\n\n  with modelClient.start() as run:\n    multi_worker_model.fit(ds_train, epochs=10, steps_per_epoch=70, callbacks=[MyCallback()])\n\n\nif __name__ == '__main__':\n  modelClient = ModelsClient()\n  main()\n")),Object(i.b)("h3",{id:"2-prepare-an-environment-compatible-with-the-training"},"2. Prepare an environment compatible with the training"),Object(i.b)("p",null,"Build a docker image equipped with the requirement of the environment."),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"$ ./dev-support/examples/quickstart/build.sh \n")),Object(i.b)("h3",{id:"3-submit-the-experiment"},"3. Submit the experiment"),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Open submarine workbench and click ",Object(i.b)("inlineCode",{parentName:"p"},"+ New Experiment"))),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Fill the form accordingly. Here we set 3 workers."),Object(i.b)("ol",{parentName:"li"},Object(i.b)("li",{parentName:"ol"},"Step 1\n",Object(i.b)("img",{src:n(219).default})),Object(i.b)("li",{parentName:"ol"},"Step 2\n",Object(i.b)("img",{src:n(220).default})),Object(i.b)("li",{parentName:"ol"},"Step 3\n",Object(i.b)("img",{src:n(221).default})),Object(i.b)("li",{parentName:"ol"},"The experiment is successfully submitted\n",Object(i.b)("img",{src:n(222).default}))))),Object(i.b)("h3",{id:"4-monitor-the-process-modelclient"},"4. Monitor the process (modelClient)"),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"In our code, we use ",Object(i.b)("inlineCode",{parentName:"p"},"modelClient")," from ",Object(i.b)("inlineCode",{parentName:"p"},"submarine-sdk")," to record the metrics. To see the result, click ",Object(i.b)("inlineCode",{parentName:"p"},"MLflow UI")," in the workbench.")),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"To compare the metrics of each worker, you can select all workers and then click ",Object(i.b)("inlineCode",{parentName:"p"},"compare")),Object(i.b)("p",{parentName:"li"},Object(i.b)("img",{src:n(282).default})),Object(i.b)("p",{parentName:"li"},Object(i.b)("img",{src:n(283).default})))),Object(i.b)("h3",{id:"5-serve-the-model-in-development"},"5. Serve the model (In development)"))}b.isMDXComponent=!0},194:function(e,t,n){"use strict";n.d(t,"a",(function(){return m})),n.d(t,"b",(function(){return d}));var r=n(0),a=n.n(r);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function c(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=a.a.createContext({}),b=function(e){var t=a.a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):c(c({},t),e)),n},m=function(e){var t=b(e.components);return a.a.createElement(s.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},p=a.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,o=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),m=b(n),p=r,d=m["".concat(o,".").concat(p)]||m[p]||u[p]||i;return n?a.a.createElement(d,c(c({ref:t},s),{},{components:n})):a.a.createElement(d,c({ref:t},s))}));function d(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=p;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c.mdxType="string"==typeof e?e:r,o[1]=c;for(var s=2;s<i;s++)o[s]=n[s];return a.a.createElement.apply(null,o)}return a.a.createElement.apply(null,n)}p.displayName="MDXCreateElement"},218:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/quickstart-worbench-0d8c2f6217f22460d4cf8e9b05d06f6b.png"},219:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/quickstart-submit-1-666fc27e30765ab0ddad117e3a354814.png"},220:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/quickstart-submit-2-9c78114774db9e88702cc8e72722ceca.png"},221:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/quickstart-submit-3-c412f456d672e509be26040750826a76.png"},222:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/quickstart-submit-4-00c8dfb8d7d8a1bd1fe52f43712fc4a9.png"},282:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/quickstart-mlflow-055f1780671b88621e0c6324f408dbbe.png"},283:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/quickstart-mlflow-2-d83b03b1ba4bdefc55540a54f6214a13.png"}}]);
\ No newline at end of file
diff --git a/ab130550.1ab1e613.js b/ab130550.f5d8809e.js
similarity index 99%
rename from ab130550.1ab1e613.js
rename to ab130550.f5d8809e.js
index a97171d..0085692 100644
--- a/ab130550.1ab1e613.js
+++ b/ab130550.f5d8809e.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[92],{159:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return s})),n.d(t,"metadata",(function(){return i})),n.d(t,"toc",(function(){return l})),n.d(t,"default",(function(){return u}));var r=n(3),a=n(7),o=(n(0),n(209)),s={},i={unversionedId:"userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README",id:"version-0.6.0/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README",isDocsHomePage:!1,title:"README",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README.md",slug:"/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README",permalink:"/docs/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README.md",version:"0.6.0"},l=[{value:"Prerequisite",id:"prerequisite",children:[]},{value:"Training on a single machine with GPUs or CPU",id:"training-on-a-single-machine-with-gpus-or-cpu",children:[]},{value:"Run distributed training",id:"run-distributed-training",children:[{value:"(Optional) Running on Google Cloud Machine Learning Engine",id:"optional-running-on-google-cloud-machine-learning-engine",children:[]},{value:"Set TF_CONFIG",id:"set-tf_config",children:[]},{value:"Running script",id:"running-script",children:[]}]},{value:"Visualizing results with TensorBoard",id:"visualizing-results-with-tensorboard",children:[]},{value:"Warnings",id:"warnings",children:[]}],c={toc:l};function u(e){var t=e.components,n=Object(a.a)(e,["components"]);return Object(o.b)("wrapper",Object(r.a)({},c,n,{components:t,mdxType:"MDXLayout"}),Object(o.b)("p",null,"(Copied from ",Object(o.b)("a",{parentName:"p",href:"https://github.com/tensorflow/models/tree/master/tutorials/image/cifar10_estimator"},"https://github.com/tensorflow/models/tree/master/tutorials/image/cifar10_estimator"),")"),Object(o.b)("p",null,"CIFAR-10 is a common benchmark in machine learning for image recognition."),Object(o.b)("p",null,Object(o.b)("a",{parentName:"p",href:"http://www.cs.toronto.edu/~kriz/cifar.html"},"http://www.cs.toronto.edu/~kriz/cifar.html")),Object(o.b)("p",null,"Code in this directory focuses on how to use TensorFlow Estimators to train and\nevaluate a CIFAR-10 ResNet model on:"),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},"A single host with one CPU;"),Object(o.b)("li",{parentName:"ul"},"A single host with multiple GPUs;"),Object(o.b)("li",{parentName:"ul"},"Multiple hosts with CPU or multiple GPUs;")),Object(o.b)("p",null,"Before trying to run the model we highly encourage you to read all the README."),Object(o.b)("h2",{id:"prerequisite"},"Prerequisite"),Object(o.b)("ol",null,Object(o.b)("li",{parentName:"ol"},Object(o.b)("p",{parentName:"li"},Object(o.b)("a",{parentName:"p",href:"https://www.tensorflow.org/install/"},"Install")," TensorFlow version 1.2.1 or\nlater.")),Object(o.b)("li",{parentName:"ol"},Object(o.b)("p",{parentName:"li"},"Download the CIFAR-10 dataset and generate TFRecord files using the provided\nscript.  The script and associated command below will download the CIFAR-10\ndataset and then generate a TFRecord for the training, validation, and\nevaluation datasets."))),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-shell"},"python generate_cifar10_tfrecords.py --data-dir=${PWD}/cifar-10-data\n")),Object(o.b)("p",null,"After running the command above, you should see the following files in the\n--data-dir (",Object(o.b)("inlineCode",{parentName:"p"},"ls -R cifar-10-data"),"):"),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},"train.tfrecords"),Object(o.b)("li",{parentName:"ul"},"validation.tfrecords"),Object(o.b)("li",{parentName:"ul"},"eval.tfrecords")),Object(o.b)("h2",{id:"training-on-a-single-machine-with-gpus-or-cpu"},"Training on a single machine with GPUs or CPU"),Object(o.b)("p",null,"Run the training on CPU only. After training, it runs the evaluation."),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"python cifar10_main.py --data-dir=${PWD}/cifar-10-data \\\n                       --job-dir=/tmp/cifar10 \\\n                       --num-gpus=0 \\\n                       --train-steps=1000\n")),Object(o.b)("p",null,"Run the model on 2 GPUs using CPU as parameter server. After training, it runs\nthe evaluation."),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"python cifar10_main.py --data-dir=${PWD}/cifar-10-data \\\n                       --job-dir=/tmp/cifar10 \\\n                       --num-gpus=2 \\\n                       --train-steps=1000\n")),Object(o.b)("p",null,"Run the model on 2 GPUs using GPU as parameter server.\nIt will run an experiment, which for local setting basically means it will run\nstop training\na couple of times to perform evaluation."),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"python cifar10_main.py --data-dir=${PWD}/cifar-10-data \\\n                       --job-dir=/tmp/cifar10 \\\n                       --variable-strategy GPU \\\n                       --num-gpus=2 \\\n")),Object(o.b)("p",null,"There are more command line flags to play with; run\n",Object(o.b)("inlineCode",{parentName:"p"},"python cifar10_main.py --help")," for details."),Object(o.b)("h2",{id:"run-distributed-training"},"Run distributed training"),Object(o.b)("h3",{id:"optional-running-on-google-cloud-machine-learning-engine"},"(Optional) Running on Google Cloud Machine Learning Engine"),Object(o.b)("p",null,"This example can be run on Google Cloud Machine Learning Engine (ML Engine),\nwhich will configure the environment and take care of running workers,\nparameters servers, and masters in a fault tolerant way."),Object(o.b)("p",null,"To install the command line tool, and set up a project and billing, see the\nquickstart ",Object(o.b)("a",{parentName:"p",href:"https://cloud.google.com/ml-engine/docs/quickstarts/command-line"},"here"),"."),Object(o.b)("p",null,"You'll also need a Google Cloud Storage bucket for the data. If you followed the\ninstructions above, you can just run:"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"MY_BUCKET=gs://<my-bucket-name>\ngsutil cp -r ${PWD}/cifar-10-data $MY_BUCKET/\n")),Object(o.b)("p",null,"Then run the following command from the ",Object(o.b)("inlineCode",{parentName:"p"},"tutorials/image")," directory of this\nrepository (the parent directory of this README):"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"gcloud ml-engine jobs submit training cifarmultigpu \\\n    --runtime-version 1.2 \\\n    --job-dir=$MY_BUCKET/model_dirs/cifarmultigpu \\\n    --config cifar10_estimator/cmle_config.yaml \\\n    --package-path cifar10_estimator/ \\\n    --module-name cifar10_estimator.cifar10_main \\\n    -- \\\n    --data-dir=$MY_BUCKET/cifar-10-data \\\n    --num-gpus=4 \\\n    --train-steps=1000\n")),Object(o.b)("h3",{id:"set-tf_config"},"Set TF_CONFIG"),Object(o.b)("p",null,"Considering that you already have multiple hosts configured, all you need is a\n",Object(o.b)("inlineCode",{parentName:"p"},"TF_CONFIG")," environment variable on each host. You can set up the hosts manually\nor check ",Object(o.b)("a",{parentName:"p",href:"https://github.com/tensorflow/ecosystem"},"tensorflow/ecosystem")," for\ninstructions about how to set up a Cluster."),Object(o.b)("p",null,"The ",Object(o.b)("inlineCode",{parentName:"p"},"TF_CONFIG")," will be used by the ",Object(o.b)("inlineCode",{parentName:"p"},"RunConfig")," to know the existing hosts and\ntheir task: ",Object(o.b)("inlineCode",{parentName:"p"},"master"),", ",Object(o.b)("inlineCode",{parentName:"p"},"ps")," or ",Object(o.b)("inlineCode",{parentName:"p"},"worker"),"."),Object(o.b)("p",null,"Here's an example of ",Object(o.b)("inlineCode",{parentName:"p"},"TF_CONFIG"),"."),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-python"},"cluster = {'master': ['master-ip:8000'],\n           'ps': ['ps-ip:8000'],\n           'worker': ['worker-ip:8000']}\n\nTF_CONFIG = json.dumps(\n  {'cluster': cluster,\n   'task': {'type': master, 'index': 0},\n   'model_dir': 'gs://<bucket_path>/<dir_path>',\n   'environment': 'cloud'\n  })\n")),Object(o.b)("p",null,Object(o.b)("em",{parentName:"p"},"Cluster")),Object(o.b)("p",null,"A cluster spec, which is basically a dictionary that describes all of the tasks\nin the cluster. More about it ",Object(o.b)("a",{parentName:"p",href:"https://www.tensorflow.org/deploy/distributed"},"here"),"."),Object(o.b)("p",null,"In this cluster spec we are defining a cluster with 1 master, 1 ps and 1 worker."),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},Object(o.b)("p",{parentName:"li"},Object(o.b)("inlineCode",{parentName:"p"},"ps"),": saves the parameters among all workers. All workers can\nread/write/update the parameters for model via ps. As some models are\nextremely large the parameters are shared among the ps (each ps stores a\nsubset).")),Object(o.b)("li",{parentName:"ul"},Object(o.b)("p",{parentName:"li"},Object(o.b)("inlineCode",{parentName:"p"},"worker"),": does the training.")),Object(o.b)("li",{parentName:"ul"},Object(o.b)("p",{parentName:"li"},Object(o.b)("inlineCode",{parentName:"p"},"master"),": basically a special worker, it does training, but also restores and\nsaves checkpoints and do evaluation."))),Object(o.b)("p",null,Object(o.b)("em",{parentName:"p"},"Task")),Object(o.b)("p",null,"The Task defines what is the role of the current node, for this example the node\nis the master on index 0 on the cluster spec, the task will be different for\neach node. An example of the ",Object(o.b)("inlineCode",{parentName:"p"},"TF_CONFIG")," for a worker would be:"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-python"},"cluster = {'master': ['master-ip:8000'],\n           'ps': ['ps-ip:8000'],\n           'worker': ['worker-ip:8000']}\n\nTF_CONFIG = json.dumps(\n  {'cluster': cluster,\n   'task': {'type': worker, 'index': 0},\n   'model_dir': 'gs://<bucket_path>/<dir_path>',\n   'environment': 'cloud'\n  })\n")),Object(o.b)("p",null,Object(o.b)("em",{parentName:"p"},"Model_dir")),Object(o.b)("p",null,"This is the path where the master will save the checkpoints, graph and\nTensorBoard files. For a multi host environment you may want to use a\nDistributed File System, Google Storage and DFS are supported."),Object(o.b)("p",null,Object(o.b)("em",{parentName:"p"},"Environment")),Object(o.b)("p",null,"By the default environment is ",Object(o.b)("em",{parentName:"p"},"local"),", for a distributed setting we need to\nchange it to ",Object(o.b)("em",{parentName:"p"},"cloud"),"."),Object(o.b)("h3",{id:"running-script"},"Running script"),Object(o.b)("p",null,"Once you have a ",Object(o.b)("inlineCode",{parentName:"p"},"TF_CONFIG")," configured properly on each host you're ready to run\non distributed settings."),Object(o.b)("h4",{id:"master"},"Master"),Object(o.b)("p",null,"Run this on master:\nRuns an Experiment in sync mode on 4 GPUs using CPU as parameter server for\n40000 steps. It will run evaluation a couple of times during training. The\nnum_workers argument is used only to update the learning rate correctly. Make\nsure the model_dir is the same as defined on the TF_CONFIG."),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-shell"},"python cifar10_main.py --data-dir=gs://path/cifar-10-data \\\n                       --job-dir=gs://path/model_dir/ \\\n                       --num-gpus=4 \\\n                       --train-steps=40000 \\\n                       --sync \\\n                       --num-workers=2\n")),Object(o.b)("p",null,Object(o.b)("em",{parentName:"p"},"Output:")),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-shell"},"INFO:tensorflow:Using model_dir in TF_CONFIG: gs://path/model_dir/\nINFO:tensorflow:Using config: {'_save_checkpoints_secs': 600, '_num_ps_replicas': 1, '_keep_checkpoint_max': 5, '_task_type': u'master', '_is_chief': True, '_cluster_spec': <tensorflow.python.training.server_lib.ClusterSpec object at 0x7fd16fb2be10>, '_model_dir': 'gs://path/model_dir/', '_save_checkpoints_steps': None, '_keep_checkpoint_every_n_hours': 10000, '_session_config': intra_op_parallelism_threads: 1\ngpu_options {\n}\nallow_soft_placement: true\n, '_tf_random_seed': None, '_environment': u'cloud', '_num_worker_replicas': 1, '_task_id': 0, '_save_summary_steps': 100, '_tf_config': gpu_options {\n  per_process_gpu_memory_fraction: 1.0\n}\n, '_evaluation_master': '', '_master': u'grpc://master-ip:8000'}\n...\n2017-08-01 19:59:26.496208: I tensorflow/core/common_runtime/gpu/gpu_device.cc:940] Found device 0 with properties:\nname: Tesla K80\nmajor: 3 minor: 7 memoryClockRate (GHz) 0.8235\npciBusID 0000:00:04.0\nTotal memory: 11.17GiB\nFree memory: 11.09GiB\n2017-08-01 19:59:26.775660: I tensorflow/core/common_runtime/gpu/gpu_device.cc:940] Found device 1 with properties:\nname: Tesla K80\nmajor: 3 minor: 7 memoryClockRate (GHz) 0.8235\npciBusID 0000:00:05.0\nTotal memory: 11.17GiB\nFree memory: 11.10GiB\n...\n2017-08-01 19:59:29.675171: I tensorflow/core/distributed_runtime/rpc/grpc_server_lib.cc:316] Started server with target: grpc://localhost:8000\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_1/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_2/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_3/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_4/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_5/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_6/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1/avg_pool/: (?, 16, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_1/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_2/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_3/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_4/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_1/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_2/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_3/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_4/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_5/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_6/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1/avg_pool/: (?, 32, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_1/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_2/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_3/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_4/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_5/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_6/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/global_avg_pool/: (?, 64)\nINFO:tensorflow:image after unit resnet/tower_0/fully_connected/: (?, 11)\nINFO:tensorflow:SyncReplicasV2: replicas_to_aggregate=1; total_num_replicas=1\nINFO:tensorflow:Create CheckpointSaverHook.\nINFO:tensorflow:Restoring parameters from gs://path/model_dir/model.ckpt-0\n2017-08-01 19:59:37.560775: I tensorflow/core/distributed_runtime/master_session.cc:999] Start master session 156fcb55fe6648d6 with config:\nintra_op_parallelism_threads: 1\ngpu_options {\n  per_process_gpu_memory_fraction: 1\n}\nallow_soft_placement: true\n\nINFO:tensorflow:Saving checkpoints for 1 into gs://path/model_dir/model.ckpt.\nINFO:tensorflow:loss = 1.20682, step = 1\nINFO:tensorflow:loss = 1.20682, learning_rate = 0.1\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_1/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_2/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_3/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_4/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_5/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_6/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1/avg_pool/: (?, 16, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_1/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_2/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_3/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_4/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_5/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_6/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1/avg_pool/: (?, 32, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_1/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_2/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_3/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_4/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_5/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_6/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/global_avg_pool/: (?, 64)\nINFO:tensorflow:image after unit resnet/tower_0/fully_connected/: (?, 11)\nINFO:tensorflow:SyncReplicasV2: replicas_to_aggregate=2; total_num_replicas=2\nINFO:tensorflow:Starting evaluation at 2017-08-01-20:00:14\n2017-08-01 20:00:15.745881: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Creating TensorFlow device (/gpu:0) -> (device: 0, name: Tesla K80, pci bus id: 0000:00:04.0)\n2017-08-01 20:00:15.745949: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Creating TensorFlow device (/gpu:1) -> (device: 1, name: Tesla K80, pci bus id: 0000:00:05.0)\n2017-08-01 20:00:15.745958: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Creating TensorFlow device (/gpu:2) -> (device: 2, name: Tesla K80, pci bus id: 0000:00:06.0)\n2017-08-01 20:00:15.745964: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Creating TensorFlow device (/gpu:3) -> (device: 3, name: Tesla K80, pci bus id: 0000:00:07.0)\n2017-08-01 20:00:15.745969: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Creating TensorFlow device (/gpu:4) -> (device: 4, name: Tesla K80, pci bus id: 0000:00:08.0)\n2017-08-01 20:00:15.745975: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Creating TensorFlow device (/gpu:5) -> (device: 5, name: Tesla K80, pci bus id: 0000:00:09.0)\n2017-08-01 20:00:15.745987: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Creating TensorFlow device (/gpu:6) -> (device: 6, name: Tesla K80, pci bus id: 0000:00:0a.0)\n2017-08-01 20:00:15.745997: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Creating TensorFlow device (/gpu:7) -> (device: 7, name: Tesla K80, pci bus id: 0000:00:0b.0)\nINFO:tensorflow:Restoring parameters from gs://path/model_dir/model.ckpt-10023\nINFO:tensorflow:Evaluation [1/100]\nINFO:tensorflow:Evaluation [2/100]\nINFO:tensorflow:Evaluation [3/100]\nINFO:tensorflow:Evaluation [4/100]\nINFO:tensorflow:Evaluation [5/100]\nINFO:tensorflow:Evaluation [6/100]\nINFO:tensorflow:Evaluation [7/100]\nINFO:tensorflow:Evaluation [8/100]\nINFO:tensorflow:Evaluation [9/100]\nINFO:tensorflow:Evaluation [10/100]\nINFO:tensorflow:Evaluation [11/100]\nINFO:tensorflow:Evaluation [12/100]\nINFO:tensorflow:Evaluation [13/100]\n...\nINFO:tensorflow:Evaluation [100/100]\nINFO:tensorflow:Finished evaluation at 2017-08-01-20:00:31\nINFO:tensorflow:Saving dict for global step 1: accuracy = 0.0994, global_step = 1, loss = 630.425\n")),Object(o.b)("h4",{id:"worker"},"Worker"),Object(o.b)("p",null,"Run this on worker:\nRuns an Experiment in sync mode on 4 GPUs using CPU as parameter server for\n40000 steps. It will run evaluation a couple of times during training. Make sure\nthe model_dir is the same as defined on the TF_CONFIG."),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-shell"},"python cifar10_main.py --data-dir=gs://path/cifar-10-data \\\n                       --job-dir=gs://path/model_dir/ \\\n                       --num-gpus=4 \\\n                       --train-steps=40000 \\\n                       --sync\n")),Object(o.b)("p",null,Object(o.b)("em",{parentName:"p"},"Output:")),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-shell"},"INFO:tensorflow:Using model_dir in TF_CONFIG: gs://path/model_dir/\nINFO:tensorflow:Using config: {'_save_checkpoints_secs': 600,\n'_num_ps_replicas': 1, '_keep_checkpoint_max': 5, '_task_type': u'worker',\n'_is_chief': False, '_cluster_spec':\n<tensorflow.python.training.server_lib.ClusterSpec object at 0x7f6918438e10>,\n'_model_dir': 'gs://<path>/model_dir/',\n'_save_checkpoints_steps': None, '_keep_checkpoint_every_n_hours': 10000,\n'_session_config': intra_op_parallelism_threads: 1\ngpu_options {\n}\nallow_soft_placement: true\n, '_tf_random_seed': None, '_environment': u'cloud', '_num_worker_replicas': 1,\n'_task_id': 0, '_save_summary_steps': 100, '_tf_config': gpu_options {\n  per_process_gpu_memory_fraction: 1.0\n  }\n...\n2017-08-01 19:59:26.496208: I tensorflow/core/common_runtime/gpu/gpu_device.cc:940] Found device 0 with properties:\nname: Tesla K80\nmajor: 3 minor: 7 memoryClockRate (GHz) 0.8235\npciBusID 0000:00:04.0\nTotal memory: 11.17GiB\nFree memory: 11.09GiB\n2017-08-01 19:59:26.775660: I tensorflow/core/common_runtime/gpu/gpu_device.cc:940] Found device 1 with properties:\nname: Tesla K80\nmajor: 3 minor: 7 memoryClockRate (GHz) 0.8235\npciBusID 0000:00:05.0\nTotal memory: 11.17GiB\nFree memory: 11.10GiB\n...\n2017-08-01 19:59:29.675171: I tensorflow/core/distributed_runtime/rpc/grpc_server_lib.cc:316] Started server with target: grpc://localhost:8000\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_1/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_2/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_3/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_4/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_5/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_6/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1/avg_pool/: (?, 16, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_1/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_2/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_3/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_4/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_1/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_2/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_3/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_4/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_5/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_6/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1/avg_pool/: (?, 32, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_1/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_2/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_3/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_4/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_5/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_6/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/global_avg_pool/: (?, 64)\nINFO:tensorflow:image after unit resnet/tower_0/fully_connected/: (?, 11)\nINFO:tensorflow:SyncReplicasV2: replicas_to_aggregate=2; total_num_replicas=2\nINFO:tensorflow:Create CheckpointSaverHook.\n2017-07-31 22:38:04.629150: I\ntensorflow/core/distributed_runtime/master.cc:209] CreateSession still waiting\nfor response from worker: /job:master/replica:0/task:0\n2017-07-31 22:38:09.263492: I\ntensorflow/core/distributed_runtime/master_session.cc:999] Start master\nsession cc58f93b1e259b0c with config:\nintra_op_parallelism_threads: 1\ngpu_options {\nper_process_gpu_memory_fraction: 1\n}\nallow_soft_placement: true\nINFO:tensorflow:loss = 5.82382, step = 0\nINFO:tensorflow:loss = 5.82382, learning_rate = 0.8\nINFO:tensorflow:Average examples/sec: 1116.92 (1116.92), step = 10\nINFO:tensorflow:Average examples/sec: 1233.73 (1377.83), step = 20\nINFO:tensorflow:Average examples/sec: 1485.43 (2509.3), step = 30\nINFO:tensorflow:Average examples/sec: 1680.27 (2770.39), step = 40\nINFO:tensorflow:Average examples/sec: 1825.38 (2788.78), step = 50\nINFO:tensorflow:Average examples/sec: 1929.32 (2697.27), step = 60\nINFO:tensorflow:Average examples/sec: 2015.17 (2749.05), step = 70\nINFO:tensorflow:loss = 37.6272, step = 79 (19.554 sec)\nINFO:tensorflow:loss = 37.6272, learning_rate = 0.8 (19.554 sec)\nINFO:tensorflow:Average examples/sec: 2074.92 (2618.36), step = 80\nINFO:tensorflow:Average examples/sec: 2132.71 (2744.13), step = 90\nINFO:tensorflow:Average examples/sec: 2183.38 (2777.21), step = 100\nINFO:tensorflow:Average examples/sec: 2224.4 (2739.03), step = 110\nINFO:tensorflow:Average examples/sec: 2240.28 (2431.26), step = 120\nINFO:tensorflow:Average examples/sec: 2272.12 (2739.32), step = 130\nINFO:tensorflow:Average examples/sec: 2300.68 (2750.03), step = 140\nINFO:tensorflow:Average examples/sec: 2325.81 (2745.63), step = 150\nINFO:tensorflow:Average examples/sec: 2347.14 (2721.53), step = 160\nINFO:tensorflow:Average examples/sec: 2367.74 (2754.54), step = 170\nINFO:tensorflow:loss = 27.8453, step = 179 (18.893 sec)\n...\n")),Object(o.b)("h4",{id:"ps"},"PS"),Object(o.b)("p",null,"Run this on ps:\nThe ps will not do training so most of the arguments won't affect the execution"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-shell"},"python cifar10_main.py --job-dir=gs://path/model_dir/\n")),Object(o.b)("p",null,Object(o.b)("em",{parentName:"p"},"Output:")),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-shell"},"INFO:tensorflow:Using model_dir in TF_CONFIG: gs://path/model_dir/\nINFO:tensorflow:Using config: {'_save_checkpoints_secs': 600, '_num_ps_replicas': 1, '_keep_checkpoint_max': 5, '_task_type': u'ps', '_is_chief': False, '_cluster_spec': <tensorflow.python.training.server_lib.ClusterSpec object at 0x7f48f1addf90>, '_model_dir': 'gs://path/model_dir/', '_save_checkpoints_steps': None, '_keep_checkpoint_every_n_hours': 10000, '_session_config': intra_op_parallelism_threads: 1\ngpu_options {\n}\nallow_soft_placement: true\n, '_tf_random_seed': None, '_environment': u'cloud', '_num_worker_replicas': 1, '_task_id': 0, '_save_summary_steps': 100, '_tf_config': gpu_options {\n  per_process_gpu_memory_fraction: 1.0\n}\n, '_evaluation_master': '', '_master': u'grpc://master-ip:8000'}\n2017-07-31 22:54:58.928088: I tensorflow/core/distributed_runtime/rpc/grpc_channel.cc:215] Initialize GrpcChannelCache for job master -> {0 -> master-ip:8000}\n2017-07-31 22:54:58.928153: I tensorflow/core/distributed_runtime/rpc/grpc_channel.cc:215] Initialize GrpcChannelCache for job ps -> {0 -> localhost:8000}\n2017-07-31 22:54:58.928160: I tensorflow/core/distributed_runtime/rpc/grpc_channel.cc:215] Initialize GrpcChannelCache for job worker -> {0 -> worker-ip:8000}\n2017-07-31 22:54:58.929873: I tensorflow/core/distributed_runtime/rpc/grpc_server_lib.cc:316] Started server with target: grpc://localhost:8000\n")),Object(o.b)("h2",{id:"visualizing-results-with-tensorboard"},"Visualizing results with TensorBoard"),Object(o.b)("p",null,"When using Estimators you can also visualize your data in TensorBoard, with no\nchanges in your code. You can use TensorBoard to visualize your TensorFlow\ngraph, plot quantitative metrics about the execution of your graph, and show\nadditional data like images that pass through it."),Object(o.b)("p",null,'You\'ll see something similar to this if you "point" TensorBoard to the\n',Object(o.b)("inlineCode",{parentName:"p"},"job dir")," parameter you used to train or evaluate your model."),Object(o.b)("p",null,"Check TensorBoard during training or after it. Just point TensorBoard to the\nmodel_dir you chose on the previous step."),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-shell"},'tensorboard --log-dir="<job dir>"\n')),Object(o.b)("h2",{id:"warnings"},"Warnings"),Object(o.b)("p",null,"When running ",Object(o.b)("inlineCode",{parentName:"p"},"cifar10_main.py")," with ",Object(o.b)("inlineCode",{parentName:"p"},"--sync")," argument you may see an error\nsimilar to:"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-python"},'File "cifar10_main.py", line 538, in <module>\n    tf.app.run()\nFile "/usr/local/lib/python2.7/dist-packages/tensorflow/python/platform/app.py", line 48, in run\n    _sys.exit(main(_sys.argv[:1] + flags_passthrough))\nFile "cifar10_main.py", line 518, in main\n    hooks), run_config=config)\nFile "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/learn_runner.py", line 210, in run\n    return _execute_schedule(experiment, schedule)\nFile "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/learn_runner.py", line 47, in _execute_schedule\n    return task()\nFile "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/experiment.py", line 501, in train_and_evaluate\n    hooks=self._eval_hooks)\nFile "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/experiment.py", line 681, in _call_evaluate\n    hooks=hooks)\nFile "/usr/local/lib/python2.7/dist-packages/tensorflow/python/estimator/estimator.py", line 292, in evaluate\n    name=name)\nFile "/usr/local/lib/python2.7/dist-packages/tensorflow/python/estimator/estimator.py", line 638, in _evaluate_model\n    features, labels, model_fn_lib.ModeKeys.EVAL)\nFile "/usr/local/lib/python2.7/dist-packages/tensorflow/python/estimator/estimator.py", line 545, in _call_model_fn\n    features=features, labels=labels, **kwargs)\nFile "cifar10_main.py", line 331, in _resnet_model_fn\n    gradvars, global_step=tf.train.get_global_step())\nFile "/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/sync_replicas_optimizer.py", line 252, in apply_gradients\n    variables.global_variables())\nFile "/usr/local/lib/python2.7/dist-packages/tensorflow/python/util/tf_should_use.py", line 170, in wrapped\n    return _add_should_use_warning(fn(*args, **kwargs))\nFile "/usr/local/lib/python2.7/dist-packages/tensorflow/python/util/tf_should_use.py", line 139, in _add_should_use_warning\n    wrapped = TFShouldUseWarningWrapper(x)\nFile "/usr/local/lib/python2.7/dist-packages/tensorflow/python/util/tf_should_use.py", line 96, in __init__\n    stack = [s.strip() for s in traceback.format_stack()]\n')),Object(o.b)("p",null,"This should not affect your training, and should be fixed on the next releases."))}u.isMDXComponent=!0},209:function(e,t,n){"use strict";n.d(t,"a",(function(){return p})),n.d(t,"b",(function(){return d}));var r=n(0),a=n.n(r);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function s(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?s(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):s(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var c=a.a.createContext({}),u=function(e){var t=a.a.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},p=function(e){var t=u(e.components);return a.a.createElement(c.Provider,{value:t},e.children)},_={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},m=a.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),p=u(n),m=r,d=p["".concat(s,".").concat(m)]||p[m]||_[m]||o;return n?a.a.createElement(d,i(i({ref:t},c),{},{components:n})):a.a.createElement(d,i({ref:t},c))}));function d(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,s=new Array(o);s[0]=m;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i.mdxType="string"==typeof e?e:r,s[1]=i;for(var c=2;c<o;c++)s[c]=n[c];return a.a.createElement.apply(null,s)}return a.a.createElement.apply(null,n)}m.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[81],{148:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return s})),n.d(t,"metadata",(function(){return i})),n.d(t,"toc",(function(){return l})),n.d(t,"default",(function(){return u}));var r=n(3),a=n(7),o=(n(0),n(194)),s={},i={unversionedId:"userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README",id:"version-0.6.0/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README",isDocsHomePage:!1,title:"README",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README.md",slug:"/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README",permalink:"/docs/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README.md",version:"0.6.0"},l=[{value:"Prerequisite",id:"prerequisite",children:[]},{value:"Training on a single machine with GPUs or CPU",id:"training-on-a-single-machine-with-gpus-or-cpu",children:[]},{value:"Run distributed training",id:"run-distributed-training",children:[{value:"(Optional) Running on Google Cloud Machine Learning Engine",id:"optional-running-on-google-cloud-machine-learning-engine",children:[]},{value:"Set TF_CONFIG",id:"set-tf_config",children:[]},{value:"Running script",id:"running-script",children:[]}]},{value:"Visualizing results with TensorBoard",id:"visualizing-results-with-tensorboard",children:[]},{value:"Warnings",id:"warnings",children:[]}],c={toc:l};function u(e){var t=e.components,n=Object(a.a)(e,["components"]);return Object(o.b)("wrapper",Object(r.a)({},c,n,{components:t,mdxType:"MDXLayout"}),Object(o.b)("p",null,"(Copied from ",Object(o.b)("a",{parentName:"p",href:"https://github.com/tensorflow/models/tree/master/tutorials/image/cifar10_estimator"},"https://github.com/tensorflow/models/tree/master/tutorials/image/cifar10_estimator"),")"),Object(o.b)("p",null,"CIFAR-10 is a common benchmark in machine learning for image recognition."),Object(o.b)("p",null,Object(o.b)("a",{parentName:"p",href:"http://www.cs.toronto.edu/~kriz/cifar.html"},"http://www.cs.toronto.edu/~kriz/cifar.html")),Object(o.b)("p",null,"Code in this directory focuses on how to use TensorFlow Estimators to train and\nevaluate a CIFAR-10 ResNet model on:"),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},"A single host with one CPU;"),Object(o.b)("li",{parentName:"ul"},"A single host with multiple GPUs;"),Object(o.b)("li",{parentName:"ul"},"Multiple hosts with CPU or multiple GPUs;")),Object(o.b)("p",null,"Before trying to run the model we highly encourage you to read all the README."),Object(o.b)("h2",{id:"prerequisite"},"Prerequisite"),Object(o.b)("ol",null,Object(o.b)("li",{parentName:"ol"},Object(o.b)("p",{parentName:"li"},Object(o.b)("a",{parentName:"p",href:"https://www.tensorflow.org/install/"},"Install")," TensorFlow version 1.2.1 or\nlater.")),Object(o.b)("li",{parentName:"ol"},Object(o.b)("p",{parentName:"li"},"Download the CIFAR-10 dataset and generate TFRecord files using the provided\nscript.  The script and associated command below will download the CIFAR-10\ndataset and then generate a TFRecord for the training, validation, and\nevaluation datasets."))),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-shell"},"python generate_cifar10_tfrecords.py --data-dir=${PWD}/cifar-10-data\n")),Object(o.b)("p",null,"After running the command above, you should see the following files in the\n--data-dir (",Object(o.b)("inlineCode",{parentName:"p"},"ls -R cifar-10-data"),"):"),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},"train.tfrecords"),Object(o.b)("li",{parentName:"ul"},"validation.tfrecords"),Object(o.b)("li",{parentName:"ul"},"eval.tfrecords")),Object(o.b)("h2",{id:"training-on-a-single-machine-with-gpus-or-cpu"},"Training on a single machine with GPUs or CPU"),Object(o.b)("p",null,"Run the training on CPU only. After training, it runs the evaluation."),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"python cifar10_main.py --data-dir=${PWD}/cifar-10-data \\\n                       --job-dir=/tmp/cifar10 \\\n                       --num-gpus=0 \\\n                       --train-steps=1000\n")),Object(o.b)("p",null,"Run the model on 2 GPUs using CPU as parameter server. After training, it runs\nthe evaluation."),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"python cifar10_main.py --data-dir=${PWD}/cifar-10-data \\\n                       --job-dir=/tmp/cifar10 \\\n                       --num-gpus=2 \\\n                       --train-steps=1000\n")),Object(o.b)("p",null,"Run the model on 2 GPUs using GPU as parameter server.\nIt will run an experiment, which for local setting basically means it will run\nstop training\na couple of times to perform evaluation."),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"python cifar10_main.py --data-dir=${PWD}/cifar-10-data \\\n                       --job-dir=/tmp/cifar10 \\\n                       --variable-strategy GPU \\\n                       --num-gpus=2 \\\n")),Object(o.b)("p",null,"There are more command line flags to play with; run\n",Object(o.b)("inlineCode",{parentName:"p"},"python cifar10_main.py --help")," for details."),Object(o.b)("h2",{id:"run-distributed-training"},"Run distributed training"),Object(o.b)("h3",{id:"optional-running-on-google-cloud-machine-learning-engine"},"(Optional) Running on Google Cloud Machine Learning Engine"),Object(o.b)("p",null,"This example can be run on Google Cloud Machine Learning Engine (ML Engine),\nwhich will configure the environment and take care of running workers,\nparameters servers, and masters in a fault tolerant way."),Object(o.b)("p",null,"To install the command line tool, and set up a project and billing, see the\nquickstart ",Object(o.b)("a",{parentName:"p",href:"https://cloud.google.com/ml-engine/docs/quickstarts/command-line"},"here"),"."),Object(o.b)("p",null,"You'll also need a Google Cloud Storage bucket for the data. If you followed the\ninstructions above, you can just run:"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"MY_BUCKET=gs://<my-bucket-name>\ngsutil cp -r ${PWD}/cifar-10-data $MY_BUCKET/\n")),Object(o.b)("p",null,"Then run the following command from the ",Object(o.b)("inlineCode",{parentName:"p"},"tutorials/image")," directory of this\nrepository (the parent directory of this README):"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"gcloud ml-engine jobs submit training cifarmultigpu \\\n    --runtime-version 1.2 \\\n    --job-dir=$MY_BUCKET/model_dirs/cifarmultigpu \\\n    --config cifar10_estimator/cmle_config.yaml \\\n    --package-path cifar10_estimator/ \\\n    --module-name cifar10_estimator.cifar10_main \\\n    -- \\\n    --data-dir=$MY_BUCKET/cifar-10-data \\\n    --num-gpus=4 \\\n    --train-steps=1000\n")),Object(o.b)("h3",{id:"set-tf_config"},"Set TF_CONFIG"),Object(o.b)("p",null,"Considering that you already have multiple hosts configured, all you need is a\n",Object(o.b)("inlineCode",{parentName:"p"},"TF_CONFIG")," environment variable on each host. You can set up the hosts manually\nor check ",Object(o.b)("a",{parentName:"p",href:"https://github.com/tensorflow/ecosystem"},"tensorflow/ecosystem")," for\ninstructions about how to set up a Cluster."),Object(o.b)("p",null,"The ",Object(o.b)("inlineCode",{parentName:"p"},"TF_CONFIG")," will be used by the ",Object(o.b)("inlineCode",{parentName:"p"},"RunConfig")," to know the existing hosts and\ntheir task: ",Object(o.b)("inlineCode",{parentName:"p"},"master"),", ",Object(o.b)("inlineCode",{parentName:"p"},"ps")," or ",Object(o.b)("inlineCode",{parentName:"p"},"worker"),"."),Object(o.b)("p",null,"Here's an example of ",Object(o.b)("inlineCode",{parentName:"p"},"TF_CONFIG"),"."),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-python"},"cluster = {'master': ['master-ip:8000'],\n           'ps': ['ps-ip:8000'],\n           'worker': ['worker-ip:8000']}\n\nTF_CONFIG = json.dumps(\n  {'cluster': cluster,\n   'task': {'type': master, 'index': 0},\n   'model_dir': 'gs://<bucket_path>/<dir_path>',\n   'environment': 'cloud'\n  })\n")),Object(o.b)("p",null,Object(o.b)("em",{parentName:"p"},"Cluster")),Object(o.b)("p",null,"A cluster spec, which is basically a dictionary that describes all of the tasks\nin the cluster. More about it ",Object(o.b)("a",{parentName:"p",href:"https://www.tensorflow.org/deploy/distributed"},"here"),"."),Object(o.b)("p",null,"In this cluster spec we are defining a cluster with 1 master, 1 ps and 1 worker."),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},Object(o.b)("p",{parentName:"li"},Object(o.b)("inlineCode",{parentName:"p"},"ps"),": saves the parameters among all workers. All workers can\nread/write/update the parameters for model via ps. As some models are\nextremely large the parameters are shared among the ps (each ps stores a\nsubset).")),Object(o.b)("li",{parentName:"ul"},Object(o.b)("p",{parentName:"li"},Object(o.b)("inlineCode",{parentName:"p"},"worker"),": does the training.")),Object(o.b)("li",{parentName:"ul"},Object(o.b)("p",{parentName:"li"},Object(o.b)("inlineCode",{parentName:"p"},"master"),": basically a special worker, it does training, but also restores and\nsaves checkpoints and do evaluation."))),Object(o.b)("p",null,Object(o.b)("em",{parentName:"p"},"Task")),Object(o.b)("p",null,"The Task defines what is the role of the current node, for this example the node\nis the master on index 0 on the cluster spec, the task will be different for\neach node. An example of the ",Object(o.b)("inlineCode",{parentName:"p"},"TF_CONFIG")," for a worker would be:"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-python"},"cluster = {'master': ['master-ip:8000'],\n           'ps': ['ps-ip:8000'],\n           'worker': ['worker-ip:8000']}\n\nTF_CONFIG = json.dumps(\n  {'cluster': cluster,\n   'task': {'type': worker, 'index': 0},\n   'model_dir': 'gs://<bucket_path>/<dir_path>',\n   'environment': 'cloud'\n  })\n")),Object(o.b)("p",null,Object(o.b)("em",{parentName:"p"},"Model_dir")),Object(o.b)("p",null,"This is the path where the master will save the checkpoints, graph and\nTensorBoard files. For a multi host environment you may want to use a\nDistributed File System, Google Storage and DFS are supported."),Object(o.b)("p",null,Object(o.b)("em",{parentName:"p"},"Environment")),Object(o.b)("p",null,"By the default environment is ",Object(o.b)("em",{parentName:"p"},"local"),", for a distributed setting we need to\nchange it to ",Object(o.b)("em",{parentName:"p"},"cloud"),"."),Object(o.b)("h3",{id:"running-script"},"Running script"),Object(o.b)("p",null,"Once you have a ",Object(o.b)("inlineCode",{parentName:"p"},"TF_CONFIG")," configured properly on each host you're ready to run\non distributed settings."),Object(o.b)("h4",{id:"master"},"Master"),Object(o.b)("p",null,"Run this on master:\nRuns an Experiment in sync mode on 4 GPUs using CPU as parameter server for\n40000 steps. It will run evaluation a couple of times during training. The\nnum_workers argument is used only to update the learning rate correctly. Make\nsure the model_dir is the same as defined on the TF_CONFIG."),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-shell"},"python cifar10_main.py --data-dir=gs://path/cifar-10-data \\\n                       --job-dir=gs://path/model_dir/ \\\n                       --num-gpus=4 \\\n                       --train-steps=40000 \\\n                       --sync \\\n                       --num-workers=2\n")),Object(o.b)("p",null,Object(o.b)("em",{parentName:"p"},"Output:")),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-shell"},"INFO:tensorflow:Using model_dir in TF_CONFIG: gs://path/model_dir/\nINFO:tensorflow:Using config: {'_save_checkpoints_secs': 600, '_num_ps_replicas': 1, '_keep_checkpoint_max': 5, '_task_type': u'master', '_is_chief': True, '_cluster_spec': <tensorflow.python.training.server_lib.ClusterSpec object at 0x7fd16fb2be10>, '_model_dir': 'gs://path/model_dir/', '_save_checkpoints_steps': None, '_keep_checkpoint_every_n_hours': 10000, '_session_config': intra_op_parallelism_threads: 1\ngpu_options {\n}\nallow_soft_placement: true\n, '_tf_random_seed': None, '_environment': u'cloud', '_num_worker_replicas': 1, '_task_id': 0, '_save_summary_steps': 100, '_tf_config': gpu_options {\n  per_process_gpu_memory_fraction: 1.0\n}\n, '_evaluation_master': '', '_master': u'grpc://master-ip:8000'}\n...\n2017-08-01 19:59:26.496208: I tensorflow/core/common_runtime/gpu/gpu_device.cc:940] Found device 0 with properties:\nname: Tesla K80\nmajor: 3 minor: 7 memoryClockRate (GHz) 0.8235\npciBusID 0000:00:04.0\nTotal memory: 11.17GiB\nFree memory: 11.09GiB\n2017-08-01 19:59:26.775660: I tensorflow/core/common_runtime/gpu/gpu_device.cc:940] Found device 1 with properties:\nname: Tesla K80\nmajor: 3 minor: 7 memoryClockRate (GHz) 0.8235\npciBusID 0000:00:05.0\nTotal memory: 11.17GiB\nFree memory: 11.10GiB\n...\n2017-08-01 19:59:29.675171: I tensorflow/core/distributed_runtime/rpc/grpc_server_lib.cc:316] Started server with target: grpc://localhost:8000\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_1/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_2/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_3/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_4/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_5/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_6/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1/avg_pool/: (?, 16, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_1/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_2/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_3/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_4/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_1/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_2/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_3/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_4/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_5/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_6/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1/avg_pool/: (?, 32, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_1/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_2/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_3/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_4/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_5/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_6/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/global_avg_pool/: (?, 64)\nINFO:tensorflow:image after unit resnet/tower_0/fully_connected/: (?, 11)\nINFO:tensorflow:SyncReplicasV2: replicas_to_aggregate=1; total_num_replicas=1\nINFO:tensorflow:Create CheckpointSaverHook.\nINFO:tensorflow:Restoring parameters from gs://path/model_dir/model.ckpt-0\n2017-08-01 19:59:37.560775: I tensorflow/core/distributed_runtime/master_session.cc:999] Start master session 156fcb55fe6648d6 with config:\nintra_op_parallelism_threads: 1\ngpu_options {\n  per_process_gpu_memory_fraction: 1\n}\nallow_soft_placement: true\n\nINFO:tensorflow:Saving checkpoints for 1 into gs://path/model_dir/model.ckpt.\nINFO:tensorflow:loss = 1.20682, step = 1\nINFO:tensorflow:loss = 1.20682, learning_rate = 0.1\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_1/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_2/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_3/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_4/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_5/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_6/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1/avg_pool/: (?, 16, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_1/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_2/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_3/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_4/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_5/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_6/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1/avg_pool/: (?, 32, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_1/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_2/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_3/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_4/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_5/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_6/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/global_avg_pool/: (?, 64)\nINFO:tensorflow:image after unit resnet/tower_0/fully_connected/: (?, 11)\nINFO:tensorflow:SyncReplicasV2: replicas_to_aggregate=2; total_num_replicas=2\nINFO:tensorflow:Starting evaluation at 2017-08-01-20:00:14\n2017-08-01 20:00:15.745881: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Creating TensorFlow device (/gpu:0) -> (device: 0, name: Tesla K80, pci bus id: 0000:00:04.0)\n2017-08-01 20:00:15.745949: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Creating TensorFlow device (/gpu:1) -> (device: 1, name: Tesla K80, pci bus id: 0000:00:05.0)\n2017-08-01 20:00:15.745958: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Creating TensorFlow device (/gpu:2) -> (device: 2, name: Tesla K80, pci bus id: 0000:00:06.0)\n2017-08-01 20:00:15.745964: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Creating TensorFlow device (/gpu:3) -> (device: 3, name: Tesla K80, pci bus id: 0000:00:07.0)\n2017-08-01 20:00:15.745969: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Creating TensorFlow device (/gpu:4) -> (device: 4, name: Tesla K80, pci bus id: 0000:00:08.0)\n2017-08-01 20:00:15.745975: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Creating TensorFlow device (/gpu:5) -> (device: 5, name: Tesla K80, pci bus id: 0000:00:09.0)\n2017-08-01 20:00:15.745987: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Creating TensorFlow device (/gpu:6) -> (device: 6, name: Tesla K80, pci bus id: 0000:00:0a.0)\n2017-08-01 20:00:15.745997: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Creating TensorFlow device (/gpu:7) -> (device: 7, name: Tesla K80, pci bus id: 0000:00:0b.0)\nINFO:tensorflow:Restoring parameters from gs://path/model_dir/model.ckpt-10023\nINFO:tensorflow:Evaluation [1/100]\nINFO:tensorflow:Evaluation [2/100]\nINFO:tensorflow:Evaluation [3/100]\nINFO:tensorflow:Evaluation [4/100]\nINFO:tensorflow:Evaluation [5/100]\nINFO:tensorflow:Evaluation [6/100]\nINFO:tensorflow:Evaluation [7/100]\nINFO:tensorflow:Evaluation [8/100]\nINFO:tensorflow:Evaluation [9/100]\nINFO:tensorflow:Evaluation [10/100]\nINFO:tensorflow:Evaluation [11/100]\nINFO:tensorflow:Evaluation [12/100]\nINFO:tensorflow:Evaluation [13/100]\n...\nINFO:tensorflow:Evaluation [100/100]\nINFO:tensorflow:Finished evaluation at 2017-08-01-20:00:31\nINFO:tensorflow:Saving dict for global step 1: accuracy = 0.0994, global_step = 1, loss = 630.425\n")),Object(o.b)("h4",{id:"worker"},"Worker"),Object(o.b)("p",null,"Run this on worker:\nRuns an Experiment in sync mode on 4 GPUs using CPU as parameter server for\n40000 steps. It will run evaluation a couple of times during training. Make sure\nthe model_dir is the same as defined on the TF_CONFIG."),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-shell"},"python cifar10_main.py --data-dir=gs://path/cifar-10-data \\\n                       --job-dir=gs://path/model_dir/ \\\n                       --num-gpus=4 \\\n                       --train-steps=40000 \\\n                       --sync\n")),Object(o.b)("p",null,Object(o.b)("em",{parentName:"p"},"Output:")),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-shell"},"INFO:tensorflow:Using model_dir in TF_CONFIG: gs://path/model_dir/\nINFO:tensorflow:Using config: {'_save_checkpoints_secs': 600,\n'_num_ps_replicas': 1, '_keep_checkpoint_max': 5, '_task_type': u'worker',\n'_is_chief': False, '_cluster_spec':\n<tensorflow.python.training.server_lib.ClusterSpec object at 0x7f6918438e10>,\n'_model_dir': 'gs://<path>/model_dir/',\n'_save_checkpoints_steps': None, '_keep_checkpoint_every_n_hours': 10000,\n'_session_config': intra_op_parallelism_threads: 1\ngpu_options {\n}\nallow_soft_placement: true\n, '_tf_random_seed': None, '_environment': u'cloud', '_num_worker_replicas': 1,\n'_task_id': 0, '_save_summary_steps': 100, '_tf_config': gpu_options {\n  per_process_gpu_memory_fraction: 1.0\n  }\n...\n2017-08-01 19:59:26.496208: I tensorflow/core/common_runtime/gpu/gpu_device.cc:940] Found device 0 with properties:\nname: Tesla K80\nmajor: 3 minor: 7 memoryClockRate (GHz) 0.8235\npciBusID 0000:00:04.0\nTotal memory: 11.17GiB\nFree memory: 11.09GiB\n2017-08-01 19:59:26.775660: I tensorflow/core/common_runtime/gpu/gpu_device.cc:940] Found device 1 with properties:\nname: Tesla K80\nmajor: 3 minor: 7 memoryClockRate (GHz) 0.8235\npciBusID 0000:00:05.0\nTotal memory: 11.17GiB\nFree memory: 11.10GiB\n...\n2017-08-01 19:59:29.675171: I tensorflow/core/distributed_runtime/rpc/grpc_server_lib.cc:316] Started server with target: grpc://localhost:8000\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_1/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_2/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_3/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_4/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_5/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_6/: (?, 16, 32, 32)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1/avg_pool/: (?, 16, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_1/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_2/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_3/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_4/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_1/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_2/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_3/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_4/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_5/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_6/: (?, 32, 16, 16)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1/avg_pool/: (?, 32, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_1/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_2/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_3/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_4/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_5/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_6/: (?, 64, 8, 8)\nINFO:tensorflow:image after unit resnet/tower_0/global_avg_pool/: (?, 64)\nINFO:tensorflow:image after unit resnet/tower_0/fully_connected/: (?, 11)\nINFO:tensorflow:SyncReplicasV2: replicas_to_aggregate=2; total_num_replicas=2\nINFO:tensorflow:Create CheckpointSaverHook.\n2017-07-31 22:38:04.629150: I\ntensorflow/core/distributed_runtime/master.cc:209] CreateSession still waiting\nfor response from worker: /job:master/replica:0/task:0\n2017-07-31 22:38:09.263492: I\ntensorflow/core/distributed_runtime/master_session.cc:999] Start master\nsession cc58f93b1e259b0c with config:\nintra_op_parallelism_threads: 1\ngpu_options {\nper_process_gpu_memory_fraction: 1\n}\nallow_soft_placement: true\nINFO:tensorflow:loss = 5.82382, step = 0\nINFO:tensorflow:loss = 5.82382, learning_rate = 0.8\nINFO:tensorflow:Average examples/sec: 1116.92 (1116.92), step = 10\nINFO:tensorflow:Average examples/sec: 1233.73 (1377.83), step = 20\nINFO:tensorflow:Average examples/sec: 1485.43 (2509.3), step = 30\nINFO:tensorflow:Average examples/sec: 1680.27 (2770.39), step = 40\nINFO:tensorflow:Average examples/sec: 1825.38 (2788.78), step = 50\nINFO:tensorflow:Average examples/sec: 1929.32 (2697.27), step = 60\nINFO:tensorflow:Average examples/sec: 2015.17 (2749.05), step = 70\nINFO:tensorflow:loss = 37.6272, step = 79 (19.554 sec)\nINFO:tensorflow:loss = 37.6272, learning_rate = 0.8 (19.554 sec)\nINFO:tensorflow:Average examples/sec: 2074.92 (2618.36), step = 80\nINFO:tensorflow:Average examples/sec: 2132.71 (2744.13), step = 90\nINFO:tensorflow:Average examples/sec: 2183.38 (2777.21), step = 100\nINFO:tensorflow:Average examples/sec: 2224.4 (2739.03), step = 110\nINFO:tensorflow:Average examples/sec: 2240.28 (2431.26), step = 120\nINFO:tensorflow:Average examples/sec: 2272.12 (2739.32), step = 130\nINFO:tensorflow:Average examples/sec: 2300.68 (2750.03), step = 140\nINFO:tensorflow:Average examples/sec: 2325.81 (2745.63), step = 150\nINFO:tensorflow:Average examples/sec: 2347.14 (2721.53), step = 160\nINFO:tensorflow:Average examples/sec: 2367.74 (2754.54), step = 170\nINFO:tensorflow:loss = 27.8453, step = 179 (18.893 sec)\n...\n")),Object(o.b)("h4",{id:"ps"},"PS"),Object(o.b)("p",null,"Run this on ps:\nThe ps will not do training so most of the arguments won't affect the execution"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-shell"},"python cifar10_main.py --job-dir=gs://path/model_dir/\n")),Object(o.b)("p",null,Object(o.b)("em",{parentName:"p"},"Output:")),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-shell"},"INFO:tensorflow:Using model_dir in TF_CONFIG: gs://path/model_dir/\nINFO:tensorflow:Using config: {'_save_checkpoints_secs': 600, '_num_ps_replicas': 1, '_keep_checkpoint_max': 5, '_task_type': u'ps', '_is_chief': False, '_cluster_spec': <tensorflow.python.training.server_lib.ClusterSpec object at 0x7f48f1addf90>, '_model_dir': 'gs://path/model_dir/', '_save_checkpoints_steps': None, '_keep_checkpoint_every_n_hours': 10000, '_session_config': intra_op_parallelism_threads: 1\ngpu_options {\n}\nallow_soft_placement: true\n, '_tf_random_seed': None, '_environment': u'cloud', '_num_worker_replicas': 1, '_task_id': 0, '_save_summary_steps': 100, '_tf_config': gpu_options {\n  per_process_gpu_memory_fraction: 1.0\n}\n, '_evaluation_master': '', '_master': u'grpc://master-ip:8000'}\n2017-07-31 22:54:58.928088: I tensorflow/core/distributed_runtime/rpc/grpc_channel.cc:215] Initialize GrpcChannelCache for job master -> {0 -> master-ip:8000}\n2017-07-31 22:54:58.928153: I tensorflow/core/distributed_runtime/rpc/grpc_channel.cc:215] Initialize GrpcChannelCache for job ps -> {0 -> localhost:8000}\n2017-07-31 22:54:58.928160: I tensorflow/core/distributed_runtime/rpc/grpc_channel.cc:215] Initialize GrpcChannelCache for job worker -> {0 -> worker-ip:8000}\n2017-07-31 22:54:58.929873: I tensorflow/core/distributed_runtime/rpc/grpc_server_lib.cc:316] Started server with target: grpc://localhost:8000\n")),Object(o.b)("h2",{id:"visualizing-results-with-tensorboard"},"Visualizing results with TensorBoard"),Object(o.b)("p",null,"When using Estimators you can also visualize your data in TensorBoard, with no\nchanges in your code. You can use TensorBoard to visualize your TensorFlow\ngraph, plot quantitative metrics about the execution of your graph, and show\nadditional data like images that pass through it."),Object(o.b)("p",null,'You\'ll see something similar to this if you "point" TensorBoard to the\n',Object(o.b)("inlineCode",{parentName:"p"},"job dir")," parameter you used to train or evaluate your model."),Object(o.b)("p",null,"Check TensorBoard during training or after it. Just point TensorBoard to the\nmodel_dir you chose on the previous step."),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-shell"},'tensorboard --log-dir="<job dir>"\n')),Object(o.b)("h2",{id:"warnings"},"Warnings"),Object(o.b)("p",null,"When running ",Object(o.b)("inlineCode",{parentName:"p"},"cifar10_main.py")," with ",Object(o.b)("inlineCode",{parentName:"p"},"--sync")," argument you may see an error\nsimilar to:"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-python"},'File "cifar10_main.py", line 538, in <module>\n    tf.app.run()\nFile "/usr/local/lib/python2.7/dist-packages/tensorflow/python/platform/app.py", line 48, in run\n    _sys.exit(main(_sys.argv[:1] + flags_passthrough))\nFile "cifar10_main.py", line 518, in main\n    hooks), run_config=config)\nFile "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/learn_runner.py", line 210, in run\n    return _execute_schedule(experiment, schedule)\nFile "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/learn_runner.py", line 47, in _execute_schedule\n    return task()\nFile "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/experiment.py", line 501, in train_and_evaluate\n    hooks=self._eval_hooks)\nFile "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/experiment.py", line 681, in _call_evaluate\n    hooks=hooks)\nFile "/usr/local/lib/python2.7/dist-packages/tensorflow/python/estimator/estimator.py", line 292, in evaluate\n    name=name)\nFile "/usr/local/lib/python2.7/dist-packages/tensorflow/python/estimator/estimator.py", line 638, in _evaluate_model\n    features, labels, model_fn_lib.ModeKeys.EVAL)\nFile "/usr/local/lib/python2.7/dist-packages/tensorflow/python/estimator/estimator.py", line 545, in _call_model_fn\n    features=features, labels=labels, **kwargs)\nFile "cifar10_main.py", line 331, in _resnet_model_fn\n    gradvars, global_step=tf.train.get_global_step())\nFile "/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/sync_replicas_optimizer.py", line 252, in apply_gradients\n    variables.global_variables())\nFile "/usr/local/lib/python2.7/dist-packages/tensorflow/python/util/tf_should_use.py", line 170, in wrapped\n    return _add_should_use_warning(fn(*args, **kwargs))\nFile "/usr/local/lib/python2.7/dist-packages/tensorflow/python/util/tf_should_use.py", line 139, in _add_should_use_warning\n    wrapped = TFShouldUseWarningWrapper(x)\nFile "/usr/local/lib/python2.7/dist-packages/tensorflow/python/util/tf_should_use.py", line 96, in __init__\n    stack = [s.strip() for s in traceback.format_stack()]\n')),Object(o.b)("p",null,"This should not affect your training, and should be fixed on the next releases."))}u.isMDXComponent=!0},194:function(e,t,n){"use strict";n.d(t,"a",(function(){return p})),n.d(t,"b",(function(){return d}));var r=n(0),a=n.n(r);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function s(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?s(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):s(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var c=a.a.createContext({}),u=function(e){var t=a.a.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},p=function(e){var t=u(e.components);return a.a.createElement(c.Provider,{value:t},e.children)},_={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},m=a.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),p=u(n),m=r,d=p["".concat(s,".").concat(m)]||p[m]||_[m]||o;return n?a.a.createElement(d,i(i({ref:t},c),{},{components:n})):a.a.createElement(d,i({ref:t},c))}));function d(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,s=new Array(o);s[0]=m;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i.mdxType="string"==typeof e?e:r,s[1]=i;for(var c=2;c<o;c++)s[c]=n[c];return a.a.createElement.apply(null,s)}return a.a.createElement.apply(null,n)}m.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/ab5e246a.53576ccb.js b/ab5e246a.e8b70818.js
similarity index 93%
rename from ab5e246a.53576ccb.js
rename to ab5e246a.e8b70818.js
index 3d2ffaf..7103b68 100644
--- a/ab5e246a.53576ccb.js
+++ b/ab5e246a.e8b70818.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[93],{160:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return o})),n.d(t,"metadata",(function(){return c})),n.d(t,"toc",(function(){return b})),n.d(t,"default",(function(){return p}));var a=n(3),r=n(7),i=(n(0),n(209)),o={},c={unversionedId:"adminDocs/yarn/workbench/README",id:"version-0.6.0/adminDocs/yarn/workbench/README",isDocsHomePage:!1,title:"README",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/adminDocs/yarn/workbench/README.md",slug:"/adminDocs/yarn/workbench/README",permalink:"/docs/adminDocs/yarn/workbench/README",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/adminDocs/yarn/workbench/README.md",version:"0.6.0"},b=[{value:"Register",id:"register",children:[]},{value:"Login",id:"login",children:[]},{value:"Home",id:"home",children:[]},{value:"Workspace",id:"workspace",children:[{value:"Project",id:"project",children:[]},{value:"Release",id:"release",children:[]},{value:"Training",id:"training",children:[]},{value:"Team",id:"team",children:[]},{value:"Shared",id:"shared",children:[]}]},{value:"Interpreters",id:"interpreters",children:[]},{value:"Job",id:"job",children:[]},{value:"Data",id:"data",children:[]},{value:"Model",id:"model",children:[]},{value:"Manager",id:"manager",children:[{value:"User",id:"user",children:[]},{value:"Team",id:"team-1",children:[]},{value:"Data Dict",id:"data-dict",children:[]},{value:"Department",id:"department",children:[]}]},{value:"How to run workbench",id:"how-to-run-workbench",children:[]}],l={toc:b};function p(e){var t=e.components,o=Object(r.a)(e,["components"]);return Object(i.b)("wrapper",Object(a.a)({},l,o,{components:t,mdxType:"MDXLayout"}),Object(i.b)("p",null,"English | ",Object(i.b)("a",{parentName:"p",href:"/docs/adminDocs/yarn/workbench/README.zh-CN"},"\u7b80\u4f53\u4e2d\u6587")),Object(i.b)("h1",{id:"submarine-workbench-introduction"},"Submarine Workbench Introduction"),Object(i.b)("p",null,"Submarine Workbench is a WEB system for data scientists.\nData scientists can interactively access notebooks, submit/manage jobs, manage models, create model training workflows, access data sets, and more through Submarine Workbench."),Object(i.b)("h2",{id:"register"},"Register"),Object(i.b)("p",null,"Everyone who needs to use Submarine for machine learning algorithm development can log in to Submarine Workbench's WEB homepage. On the homepage, click the registration link, fill in the user name, email address and password to register the user. At this time, the user status is ",Object(i.b)("inlineCode",{parentName:"p"},"waiting for approval")," status."),Object(i.b)("p",null,"After receiving the registration request from the user in Submarine Workbench, the administrator sets the operation authority according to the user's needs, sets the user's organization and allocates resources, and sets the user status to ",Object(i.b)("inlineCode",{parentName:"p"},"pass the audit"),". The user can log in to the Submarine Workbench. Different users have different permission."),Object(i.b)("h2",{id:"login"},"Login"),Object(i.b)("p",null,"Each Submarine user logs in to the Home page of Submarine Workbench by entering their username and password on the Login page."),Object(i.b)("h2",{id:"home"},"Home"),Object(i.b)("p",null,"In the Submarine Workbench Home page, the top level shows the user's resource usage and task execution through four charts."),Object(i.b)("p",null,"In the ",Object(i.b)("inlineCode",{parentName:"p"},"Quick Start")," list, the most commonly used feature links in the Workbench are displayed so that users can work quickly."),Object(i.b)("p",null,"In the ",Object(i.b)("inlineCode",{parentName:"p"},"Open Recent")," list, there are nine items that the user has used recently, so you can work quickly."),Object(i.b)("p",null,"At ",Object(i.b)("inlineCode",{parentName:"p"},"What's New?")," In the list, some of the latest features and project information released by Submarine are displayed to help you understand the latest developments in the Submarine project."),Object(i.b)("h2",{id:"workspace"},"Workspace"),Object(i.b)("p",null,"Workspace consists primarily of five tab pages, with the total number of items in each tab page's title."),Object(i.b)("h3",{id:"project"},"Project"),Object(i.b)("p",null,"In the Project page, all the projects created by the user themselves are displayed as cards."),Object(i.b)("p",null,Object(i.b)("img",{alt:"image-20191007161424534",src:n(217).default})),Object(i.b)("p",null,"Each Project card consists of the following sections:"),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},Object(i.b)("strong",{parentName:"li"},"Project Type"),"\uff1aSubmarine currently supports six types of machine learning algorithm frameworks and development languages: ",Object(i.b)("inlineCode",{parentName:"li"},"Notebook"),", ",Object(i.b)("inlineCode",{parentName:"li"},"Python"),", ",Object(i.b)("inlineCode",{parentName:"li"},"R"),", ",Object(i.b)("inlineCode",{parentName:"li"},"Scala"),", ",Object(i.b)("inlineCode",{parentName:"li"},"Tensorflow"),", and ",Object(i.b)("inlineCode",{parentName:"li"},"PyTorch"),", which are identified by corresponding icons in the project card."),Object(i.b)("li",{parentName:"ol"},Object(i.b)("strong",{parentName:"li"},"Project Tags"),"\uff1aUsers can tag each Project with different tags for easy searching and management."),Object(i.b)("li",{parentName:"ol"},Object(i.b)("strong",{parentName:"li"},"Github/Gitlab integrated"),"\uff1aSubmarine Workbench is system integrated with ",Object(i.b)("inlineCode",{parentName:"li"},"Github"),"/",Object(i.b)("inlineCode",{parentName:"li"},"Gitlab"),", and each Project can perform ",Object(i.b)("inlineCode",{parentName:"li"},"Watch"),", ",Object(i.b)("inlineCode",{parentName:"li"},"Star"),", ",Object(i.b)("inlineCode",{parentName:"li"},"Fork"),", and ",Object(i.b)("inlineCode",{parentName:"li"},"Comment "),"operations in Workbench.",Object(i.b)("ul",{parentName:"li"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"Watch"),"\uff1a","[TODO]"),Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"Star"),"\uff1a","[TODO]"),Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"Fork"),"\uff1a","[TODO]"),Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"Comment"),"\uff1aUsers can comment on the project."))),Object(i.b)("li",{parentName:"ol"},Object(i.b)("strong",{parentName:"li"},"Edit"),"\uff1aUsers can open projects in ",Object(i.b)("strong",{parentName:"li"},"Notebook")," and perform algorithm development by double-clicking on the project or by clicking the ",Object(i.b)("strong",{parentName:"li"},"Edit")," button."),Object(i.b)("li",{parentName:"ol"},Object(i.b)("strong",{parentName:"li"},"Download"),"\uff1aThe user downloads the project package locally by clicking the ",Object(i.b)("strong",{parentName:"li"},"Download")," button."),Object(i.b)("li",{parentName:"ol"},Object(i.b)("strong",{parentName:"li"},"Setting"),"\uff1aEdit project information such as project name, profile, visibility level and permissions."),Object(i.b)("li",{parentName:"ol"},Object(i.b)("strong",{parentName:"li"},"Delete"),"\uff1aDelete the project and all included files.")),Object(i.b)("h4",{id:"add-new-project"},"Add New Project"),Object(i.b)("p",null,"Clicking the ",Object(i.b)("strong",{parentName:"p"},"Add New Project")," button on the project page will display the guide page for creating the project, and you can create a new project in just three steps."),Object(i.b)("p",null,Object(i.b)("strong",{parentName:"p"},"Step 1"),": Fill in the project name and project description in the ",Object(i.b)("strong",{parentName:"p"},"Base Information")," step."),Object(i.b)("p",null,Object(i.b)("img",{alt:"image-20191007171638338",src:n(218).default})),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},Object(i.b)("strong",{parentName:"p"},"Visibility"),": Set the visibility level of the item externally"),Object(i.b)("ul",{parentName:"li"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"Private"),": (Default) Set to private project, and all the files included in the project are not publicly displayed. but the execution result of the project can be individually set and exposed in Notebook, so that others can view the visual report of the project."),Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"Team"),": Set to team project, select the team name in the team selection box, and other members of the team can access the project according to the set permissions."),Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"Public"),": Set to public project, all users in Workbench can view this project through search."))),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},Object(i.b)("strong",{parentName:"p"},"Permission"),": Set the external access rights of the project. The permission setting interface will appear only when the ",Object(i.b)("strong",{parentName:"p"},"Visibility")," of the project is set to ",Object(i.b)("strong",{parentName:"p"},"Team")," or ",Object(i.b)("strong",{parentName:"p"},"Public"),"."),Object(i.b)("ul",{parentName:"li"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},Object(i.b)("strong",{parentName:"p"},"Can View")),Object(i.b)("p",{parentName:"li"},"When the project's ",Object(i.b)("strong",{parentName:"p"},"Visibility")," is set to ",Object(i.b)("strong",{parentName:"p"},"Team"),", other members of the team can ",Object(i.b)("strong",{parentName:"p"},"only view")," the files for this project."),Object(i.b)("p",{parentName:"li"},"When the project's ",Object(i.b)("strong",{parentName:"p"},"Visibility")," is set to ",Object(i.b)("strong",{parentName:"p"},"Public"),", other members of the Workbench can ",Object(i.b)("strong",{parentName:"p"},"only view")," the files for this project.")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},Object(i.b)("strong",{parentName:"p"},"Can Edit")),Object(i.b)("p",{parentName:"li"},"When the project's ",Object(i.b)("strong",{parentName:"p"},"Visibility")," is set to ",Object(i.b)("strong",{parentName:"p"},"Team"),", other members of the team can ",Object(i.b)("strong",{parentName:"p"},"view")," and ",Object(i.b)("strong",{parentName:"p"},"edit")," the files for this project."),Object(i.b)("p",{parentName:"li"},"When the project's ",Object(i.b)("strong",{parentName:"p"},"Visibility")," is set to ",Object(i.b)("strong",{parentName:"p"},"Public"),", other members of the Workbench can ",Object(i.b)("strong",{parentName:"p"},"view")," and ",Object(i.b)("strong",{parentName:"p"},"edit")," the files for this project.")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},Object(i.b)("strong",{parentName:"p"},"Can Execute")),Object(i.b)("p",{parentName:"li"},"When the project's ",Object(i.b)("strong",{parentName:"p"},"Visibility")," is set to ",Object(i.b)("strong",{parentName:"p"},"Team"),", other members of the team can ",Object(i.b)("strong",{parentName:"p"},"view"),", ",Object(i.b)("strong",{parentName:"p"},"edit"),", and ",Object(i.b)("strong",{parentName:"p"},"execute")," the project's files."),Object(i.b)("p",{parentName:"li"},"When the project's ",Object(i.b)("strong",{parentName:"p"},"Visibility")," is set to ",Object(i.b)("strong",{parentName:"p"},"Public"),", other members of the Workbench can ",Object(i.b)("strong",{parentName:"p"},"view"),", ",Object(i.b)("strong",{parentName:"p"},"edit"),", and ",Object(i.b)("strong",{parentName:"p"},"execute")," the project's files."))))),Object(i.b)("p",null,Object(i.b)("strong",{parentName:"p"},"Step 2"),": In the Initial Project step, Workbench provides four ways to initialize the project."),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},Object(i.b)("strong",{parentName:"p"},"Template"),": Workbench Project templates with several different development languages and algorithm frameworks are built in. You can choose any template to initialize your project and you can execute it directly in Notebook without any modification. It is especially suitable for novices to experience quickly."),Object(i.b)("p",{parentName:"li"},Object(i.b)("img",{alt:"image-20191007184749193",src:n(219).default}))),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},Object(i.b)("strong",{parentName:"p"},"Blank"),"\uff1aCreate a blank project, and later we can manually add the project's file in Notebook"),Object(i.b)("p",{parentName:"li"},Object(i.b)("img",{alt:"image-20191007184811389",src:n(220).default}))),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},Object(i.b)("strong",{parentName:"p"},"Upload"),": Initialize your project by uploading a file in notebook format that is compatible with the ",Object(i.b)("strong",{parentName:"p"},"Jupyter Notebook")," and ",Object(i.b)("strong",{parentName:"p"},"Zeppelin Notebook")," file formats."),Object(i.b)("p",{parentName:"li"},Object(i.b)("img",{alt:"image-20191007184825531",src:n(221).default}))),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},Object(i.b)("strong",{parentName:"p"},"Git Repo"),": Fork a file in the repository to initialize the project in your ",Object(i.b)("strong",{parentName:"p"},"Github"),"/",Object(i.b)("strong",{parentName:"p"},"Gitlab")," account."),Object(i.b)("p",{parentName:"li"},Object(i.b)("img",{alt:"image-20191007184840989",src:n(222).default})))),Object(i.b)("p",null,Object(i.b)("strong",{parentName:"p"},"Step 3"),"\uff1aPreview the included files in the project"),Object(i.b)("p",null,Object(i.b)("img",{alt:"image-20191007191205660",src:n(223).default})),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"Save"),": Save the project to Workspace."),Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"Open In Notebook"),": Save the project to Workspace and open the project with Notebook.")),Object(i.b)("h3",{id:"release"},"Release"),Object(i.b)("p",null,"[TODO]"),Object(i.b)("h3",{id:"training"},"Training"),Object(i.b)("p",null,"[TODO]"),Object(i.b)("h3",{id:"team"},"Team"),Object(i.b)("p",null,"[TODO]"),Object(i.b)("h3",{id:"shared"},"Shared"),Object(i.b)("p",null,"[TODO]"),Object(i.b)("h2",{id:"interpreters"},"Interpreters"),Object(i.b)("p",null,"[TODO]"),Object(i.b)("h2",{id:"job"},"Job"),Object(i.b)("p",null,"[TODO]"),Object(i.b)("h2",{id:"data"},"Data"),Object(i.b)("p",null,"[TODO]"),Object(i.b)("h2",{id:"model"},"Model"),Object(i.b)("p",null,"[TODO]"),Object(i.b)("h2",{id:"manager"},"Manager"),Object(i.b)("h3",{id:"user"},"User"),Object(i.b)("p",null,"[TODO]"),Object(i.b)("h3",{id:"team-1"},"Team"),Object(i.b)("p",null,"[TODO]"),Object(i.b)("h3",{id:"data-dict"},"Data Dict"),Object(i.b)("p",null,"[TODO]"),Object(i.b)("h3",{id:"department"},"Department"),Object(i.b)("p",null,"[TODO]"),Object(i.b)("h2",{id:"how-to-run-workbench"},"How to run workbench"),Object(i.b)("p",null,Object(i.b)("a",{parentName:"p",href:"/docs/adminDocs/yarn/workbench/HowToRun"},"How To Run Submarine Workbench Guide")))}p.isMDXComponent=!0},209:function(e,t,n){"use strict";n.d(t,"a",(function(){return s})),n.d(t,"b",(function(){return j}));var a=n(0),r=n.n(a);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function c(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function b(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},i=Object.keys(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=r.a.createContext({}),p=function(e){var t=r.a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):c(c({},t),e)),n},s=function(e){var t=p(e.components);return r.a.createElement(l.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},u=r.a.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,o=e.parentName,l=b(e,["components","mdxType","originalType","parentName"]),s=p(n),u=a,j=s["".concat(o,".").concat(u)]||s[u]||m[u]||i;return n?r.a.createElement(j,c(c({ref:t},l),{},{components:n})):r.a.createElement(j,c({ref:t},l))}));function j(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,o=new Array(i);o[0]=u;var c={};for(var b in t)hasOwnProperty.call(t,b)&&(c[b]=t[b]);c.originalType=e,c.mdxType="string"==typeof e?e:a,o[1]=c;for(var l=2;l<i;l++)o[l]=n[l];return r.a.createElement.apply(null,o)}return r.a.createElement.apply(null,n)}u.displayName="MDXCreateElement"},217:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/workspace-project-8d6fed3c330676f04875f8afe44b59d7.png"},218:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/workspace-project-step1-24bdac8d1ecdfeb14efeab0ba5019716.png"},219:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/workspace-project-step2-template-bec4a76922361fa150df6bffceffbb15.png"},220:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/workspace-project-step2-blank-8a6b9d97a33106329fbfe53920bc40c7.png"},221:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/workspace-project-step2-upload-feb2db0271833adeb422990ca5aa43ba.png"},222:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/workspace-project-step2-git-8431a483307851cd987d2a02264a8ee7.png"},223:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/workspace-project-step3-34283e0a7051d38359a20311745f8aa6.png"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[82],{149:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return o})),n.d(t,"metadata",(function(){return c})),n.d(t,"toc",(function(){return b})),n.d(t,"default",(function(){return p}));var a=n(3),r=n(7),i=(n(0),n(194)),o={},c={unversionedId:"adminDocs/yarn/workbench/README",id:"version-0.6.0/adminDocs/yarn/workbench/README",isDocsHomePage:!1,title:"README",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/adminDocs/yarn/workbench/README.md",slug:"/adminDocs/yarn/workbench/README",permalink:"/docs/adminDocs/yarn/workbench/README",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/adminDocs/yarn/workbench/README.md",version:"0.6.0"},b=[{value:"Register",id:"register",children:[]},{value:"Login",id:"login",children:[]},{value:"Home",id:"home",children:[]},{value:"Workspace",id:"workspace",children:[{value:"Project",id:"project",children:[]},{value:"Release",id:"release",children:[]},{value:"Training",id:"training",children:[]},{value:"Team",id:"team",children:[]},{value:"Shared",id:"shared",children:[]}]},{value:"Interpreters",id:"interpreters",children:[]},{value:"Job",id:"job",children:[]},{value:"Data",id:"data",children:[]},{value:"Model",id:"model",children:[]},{value:"Manager",id:"manager",children:[{value:"User",id:"user",children:[]},{value:"Team",id:"team-1",children:[]},{value:"Data Dict",id:"data-dict",children:[]},{value:"Department",id:"department",children:[]}]},{value:"How to run workbench",id:"how-to-run-workbench",children:[]}],l={toc:b};function p(e){var t=e.components,o=Object(r.a)(e,["components"]);return Object(i.b)("wrapper",Object(a.a)({},l,o,{components:t,mdxType:"MDXLayout"}),Object(i.b)("p",null,"English | ",Object(i.b)("a",{parentName:"p",href:"/docs/adminDocs/yarn/workbench/README.zh-CN"},"\u7b80\u4f53\u4e2d\u6587")),Object(i.b)("h1",{id:"submarine-workbench-introduction"},"Submarine Workbench Introduction"),Object(i.b)("p",null,"Submarine Workbench is a WEB system for data scientists.\nData scientists can interactively access notebooks, submit/manage jobs, manage models, create model training workflows, access data sets, and more through Submarine Workbench."),Object(i.b)("h2",{id:"register"},"Register"),Object(i.b)("p",null,"Everyone who needs to use Submarine for machine learning algorithm development can log in to Submarine Workbench's WEB homepage. On the homepage, click the registration link, fill in the user name, email address and password to register the user. At this time, the user status is ",Object(i.b)("inlineCode",{parentName:"p"},"waiting for approval")," status."),Object(i.b)("p",null,"After receiving the registration request from the user in Submarine Workbench, the administrator sets the operation authority according to the user's needs, sets the user's organization and allocates resources, and sets the user status to ",Object(i.b)("inlineCode",{parentName:"p"},"pass the audit"),". The user can log in to the Submarine Workbench. Different users have different permission."),Object(i.b)("h2",{id:"login"},"Login"),Object(i.b)("p",null,"Each Submarine user logs in to the Home page of Submarine Workbench by entering their username and password on the Login page."),Object(i.b)("h2",{id:"home"},"Home"),Object(i.b)("p",null,"In the Submarine Workbench Home page, the top level shows the user's resource usage and task execution through four charts."),Object(i.b)("p",null,"In the ",Object(i.b)("inlineCode",{parentName:"p"},"Quick Start")," list, the most commonly used feature links in the Workbench are displayed so that users can work quickly."),Object(i.b)("p",null,"In the ",Object(i.b)("inlineCode",{parentName:"p"},"Open Recent")," list, there are nine items that the user has used recently, so you can work quickly."),Object(i.b)("p",null,"At ",Object(i.b)("inlineCode",{parentName:"p"},"What's New?")," In the list, some of the latest features and project information released by Submarine are displayed to help you understand the latest developments in the Submarine project."),Object(i.b)("h2",{id:"workspace"},"Workspace"),Object(i.b)("p",null,"Workspace consists primarily of five tab pages, with the total number of items in each tab page's title."),Object(i.b)("h3",{id:"project"},"Project"),Object(i.b)("p",null,"In the Project page, all the projects created by the user themselves are displayed as cards."),Object(i.b)("p",null,Object(i.b)("img",{alt:"image-20191007161424534",src:n(223).default})),Object(i.b)("p",null,"Each Project card consists of the following sections:"),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},Object(i.b)("strong",{parentName:"li"},"Project Type"),"\uff1aSubmarine currently supports six types of machine learning algorithm frameworks and development languages: ",Object(i.b)("inlineCode",{parentName:"li"},"Notebook"),", ",Object(i.b)("inlineCode",{parentName:"li"},"Python"),", ",Object(i.b)("inlineCode",{parentName:"li"},"R"),", ",Object(i.b)("inlineCode",{parentName:"li"},"Scala"),", ",Object(i.b)("inlineCode",{parentName:"li"},"Tensorflow"),", and ",Object(i.b)("inlineCode",{parentName:"li"},"PyTorch"),", which are identified by corresponding icons in the project card."),Object(i.b)("li",{parentName:"ol"},Object(i.b)("strong",{parentName:"li"},"Project Tags"),"\uff1aUsers can tag each Project with different tags for easy searching and management."),Object(i.b)("li",{parentName:"ol"},Object(i.b)("strong",{parentName:"li"},"Github/Gitlab integrated"),"\uff1aSubmarine Workbench is system integrated with ",Object(i.b)("inlineCode",{parentName:"li"},"Github"),"/",Object(i.b)("inlineCode",{parentName:"li"},"Gitlab"),", and each Project can perform ",Object(i.b)("inlineCode",{parentName:"li"},"Watch"),", ",Object(i.b)("inlineCode",{parentName:"li"},"Star"),", ",Object(i.b)("inlineCode",{parentName:"li"},"Fork"),", and ",Object(i.b)("inlineCode",{parentName:"li"},"Comment "),"operations in Workbench.",Object(i.b)("ul",{parentName:"li"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"Watch"),"\uff1a","[TODO]"),Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"Star"),"\uff1a","[TODO]"),Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"Fork"),"\uff1a","[TODO]"),Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"Comment"),"\uff1aUsers can comment on the project."))),Object(i.b)("li",{parentName:"ol"},Object(i.b)("strong",{parentName:"li"},"Edit"),"\uff1aUsers can open projects in ",Object(i.b)("strong",{parentName:"li"},"Notebook")," and perform algorithm development by double-clicking on the project or by clicking the ",Object(i.b)("strong",{parentName:"li"},"Edit")," button."),Object(i.b)("li",{parentName:"ol"},Object(i.b)("strong",{parentName:"li"},"Download"),"\uff1aThe user downloads the project package locally by clicking the ",Object(i.b)("strong",{parentName:"li"},"Download")," button."),Object(i.b)("li",{parentName:"ol"},Object(i.b)("strong",{parentName:"li"},"Setting"),"\uff1aEdit project information such as project name, profile, visibility level and permissions."),Object(i.b)("li",{parentName:"ol"},Object(i.b)("strong",{parentName:"li"},"Delete"),"\uff1aDelete the project and all included files.")),Object(i.b)("h4",{id:"add-new-project"},"Add New Project"),Object(i.b)("p",null,"Clicking the ",Object(i.b)("strong",{parentName:"p"},"Add New Project")," button on the project page will display the guide page for creating the project, and you can create a new project in just three steps."),Object(i.b)("p",null,Object(i.b)("strong",{parentName:"p"},"Step 1"),": Fill in the project name and project description in the ",Object(i.b)("strong",{parentName:"p"},"Base Information")," step."),Object(i.b)("p",null,Object(i.b)("img",{alt:"image-20191007171638338",src:n(224).default})),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},Object(i.b)("strong",{parentName:"p"},"Visibility"),": Set the visibility level of the item externally"),Object(i.b)("ul",{parentName:"li"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"Private"),": (Default) Set to private project, and all the files included in the project are not publicly displayed. but the execution result of the project can be individually set and exposed in Notebook, so that others can view the visual report of the project."),Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"Team"),": Set to team project, select the team name in the team selection box, and other members of the team can access the project according to the set permissions."),Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"Public"),": Set to public project, all users in Workbench can view this project through search."))),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},Object(i.b)("strong",{parentName:"p"},"Permission"),": Set the external access rights of the project. The permission setting interface will appear only when the ",Object(i.b)("strong",{parentName:"p"},"Visibility")," of the project is set to ",Object(i.b)("strong",{parentName:"p"},"Team")," or ",Object(i.b)("strong",{parentName:"p"},"Public"),"."),Object(i.b)("ul",{parentName:"li"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},Object(i.b)("strong",{parentName:"p"},"Can View")),Object(i.b)("p",{parentName:"li"},"When the project's ",Object(i.b)("strong",{parentName:"p"},"Visibility")," is set to ",Object(i.b)("strong",{parentName:"p"},"Team"),", other members of the team can ",Object(i.b)("strong",{parentName:"p"},"only view")," the files for this project."),Object(i.b)("p",{parentName:"li"},"When the project's ",Object(i.b)("strong",{parentName:"p"},"Visibility")," is set to ",Object(i.b)("strong",{parentName:"p"},"Public"),", other members of the Workbench can ",Object(i.b)("strong",{parentName:"p"},"only view")," the files for this project.")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},Object(i.b)("strong",{parentName:"p"},"Can Edit")),Object(i.b)("p",{parentName:"li"},"When the project's ",Object(i.b)("strong",{parentName:"p"},"Visibility")," is set to ",Object(i.b)("strong",{parentName:"p"},"Team"),", other members of the team can ",Object(i.b)("strong",{parentName:"p"},"view")," and ",Object(i.b)("strong",{parentName:"p"},"edit")," the files for this project."),Object(i.b)("p",{parentName:"li"},"When the project's ",Object(i.b)("strong",{parentName:"p"},"Visibility")," is set to ",Object(i.b)("strong",{parentName:"p"},"Public"),", other members of the Workbench can ",Object(i.b)("strong",{parentName:"p"},"view")," and ",Object(i.b)("strong",{parentName:"p"},"edit")," the files for this project.")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},Object(i.b)("strong",{parentName:"p"},"Can Execute")),Object(i.b)("p",{parentName:"li"},"When the project's ",Object(i.b)("strong",{parentName:"p"},"Visibility")," is set to ",Object(i.b)("strong",{parentName:"p"},"Team"),", other members of the team can ",Object(i.b)("strong",{parentName:"p"},"view"),", ",Object(i.b)("strong",{parentName:"p"},"edit"),", and ",Object(i.b)("strong",{parentName:"p"},"execute")," the project's files."),Object(i.b)("p",{parentName:"li"},"When the project's ",Object(i.b)("strong",{parentName:"p"},"Visibility")," is set to ",Object(i.b)("strong",{parentName:"p"},"Public"),", other members of the Workbench can ",Object(i.b)("strong",{parentName:"p"},"view"),", ",Object(i.b)("strong",{parentName:"p"},"edit"),", and ",Object(i.b)("strong",{parentName:"p"},"execute")," the project's files."))))),Object(i.b)("p",null,Object(i.b)("strong",{parentName:"p"},"Step 2"),": In the Initial Project step, Workbench provides four ways to initialize the project."),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},Object(i.b)("strong",{parentName:"p"},"Template"),": Workbench Project templates with several different development languages and algorithm frameworks are built in. You can choose any template to initialize your project and you can execute it directly in Notebook without any modification. It is especially suitable for novices to experience quickly."),Object(i.b)("p",{parentName:"li"},Object(i.b)("img",{alt:"image-20191007184749193",src:n(225).default}))),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},Object(i.b)("strong",{parentName:"p"},"Blank"),"\uff1aCreate a blank project, and later we can manually add the project's file in Notebook"),Object(i.b)("p",{parentName:"li"},Object(i.b)("img",{alt:"image-20191007184811389",src:n(226).default}))),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},Object(i.b)("strong",{parentName:"p"},"Upload"),": Initialize your project by uploading a file in notebook format that is compatible with the ",Object(i.b)("strong",{parentName:"p"},"Jupyter Notebook")," and ",Object(i.b)("strong",{parentName:"p"},"Zeppelin Notebook")," file formats."),Object(i.b)("p",{parentName:"li"},Object(i.b)("img",{alt:"image-20191007184825531",src:n(227).default}))),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},Object(i.b)("strong",{parentName:"p"},"Git Repo"),": Fork a file in the repository to initialize the project in your ",Object(i.b)("strong",{parentName:"p"},"Github"),"/",Object(i.b)("strong",{parentName:"p"},"Gitlab")," account."),Object(i.b)("p",{parentName:"li"},Object(i.b)("img",{alt:"image-20191007184840989",src:n(228).default})))),Object(i.b)("p",null,Object(i.b)("strong",{parentName:"p"},"Step 3"),"\uff1aPreview the included files in the project"),Object(i.b)("p",null,Object(i.b)("img",{alt:"image-20191007191205660",src:n(229).default})),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"Save"),": Save the project to Workspace."),Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"Open In Notebook"),": Save the project to Workspace and open the project with Notebook.")),Object(i.b)("h3",{id:"release"},"Release"),Object(i.b)("p",null,"[TODO]"),Object(i.b)("h3",{id:"training"},"Training"),Object(i.b)("p",null,"[TODO]"),Object(i.b)("h3",{id:"team"},"Team"),Object(i.b)("p",null,"[TODO]"),Object(i.b)("h3",{id:"shared"},"Shared"),Object(i.b)("p",null,"[TODO]"),Object(i.b)("h2",{id:"interpreters"},"Interpreters"),Object(i.b)("p",null,"[TODO]"),Object(i.b)("h2",{id:"job"},"Job"),Object(i.b)("p",null,"[TODO]"),Object(i.b)("h2",{id:"data"},"Data"),Object(i.b)("p",null,"[TODO]"),Object(i.b)("h2",{id:"model"},"Model"),Object(i.b)("p",null,"[TODO]"),Object(i.b)("h2",{id:"manager"},"Manager"),Object(i.b)("h3",{id:"user"},"User"),Object(i.b)("p",null,"[TODO]"),Object(i.b)("h3",{id:"team-1"},"Team"),Object(i.b)("p",null,"[TODO]"),Object(i.b)("h3",{id:"data-dict"},"Data Dict"),Object(i.b)("p",null,"[TODO]"),Object(i.b)("h3",{id:"department"},"Department"),Object(i.b)("p",null,"[TODO]"),Object(i.b)("h2",{id:"how-to-run-workbench"},"How to run workbench"),Object(i.b)("p",null,Object(i.b)("a",{parentName:"p",href:"/docs/adminDocs/yarn/workbench/HowToRun"},"How To Run Submarine Workbench Guide")))}p.isMDXComponent=!0},194:function(e,t,n){"use strict";n.d(t,"a",(function(){return s})),n.d(t,"b",(function(){return j}));var a=n(0),r=n.n(a);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function c(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function b(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},i=Object.keys(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=r.a.createContext({}),p=function(e){var t=r.a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):c(c({},t),e)),n},s=function(e){var t=p(e.components);return r.a.createElement(l.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},u=r.a.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,o=e.parentName,l=b(e,["components","mdxType","originalType","parentName"]),s=p(n),u=a,j=s["".concat(o,".").concat(u)]||s[u]||m[u]||i;return n?r.a.createElement(j,c(c({ref:t},l),{},{components:n})):r.a.createElement(j,c({ref:t},l))}));function j(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,o=new Array(i);o[0]=u;var c={};for(var b in t)hasOwnProperty.call(t,b)&&(c[b]=t[b]);c.originalType=e,c.mdxType="string"==typeof e?e:a,o[1]=c;for(var l=2;l<i;l++)o[l]=n[l];return r.a.createElement.apply(null,o)}return r.a.createElement.apply(null,n)}u.displayName="MDXCreateElement"},223:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/workspace-project-8d6fed3c330676f04875f8afe44b59d7.png"},224:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/workspace-project-step1-24bdac8d1ecdfeb14efeab0ba5019716.png"},225:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/workspace-project-step2-template-bec4a76922361fa150df6bffceffbb15.png"},226:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/workspace-project-step2-blank-8a6b9d97a33106329fbfe53920bc40c7.png"},227:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/workspace-project-step2-upload-feb2db0271833adeb422990ca5aa43ba.png"},228:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/workspace-project-step2-git-8431a483307851cd987d2a02264a8ee7.png"},229:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/workspace-project-step3-34283e0a7051d38359a20311745f8aa6.png"}}]);
\ No newline at end of file
diff --git a/abb6be53.3125538c.js b/abb6be53.1b5c0ed7.js
similarity index 97%
rename from abb6be53.3125538c.js
rename to abb6be53.1b5c0ed7.js
index 553fdf6..ff99e30 100644
--- a/abb6be53.3125538c.js
+++ b/abb6be53.1b5c0ed7.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[94],{161:function(e,t,r){"use strict";r.r(t),r.d(t,"frontMatter",(function(){return a})),r.d(t,"metadata",(function(){return c})),r.d(t,"toc",(function(){return s})),r.d(t,"default",(function(){return u}));var o=r(3),i=r(7),n=(r(0),r(209)),a={title:"Guide for Apache Submarine Committers"},c={unversionedId:"community/HowToCommit",id:"version-0.6.0/community/HowToCommit",isDocsHomePage:!1,title:"Guide for Apache Submarine Committers",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/community/HowToCommit.md",slug:"/community/HowToCommit",permalink:"/docs/community/HowToCommit",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/community/HowToCommit.md",version:"0.6.0",sidebar:"docs",previous:{title:"Apache Submarine Community",permalink:"/docs/community/README"},next:{title:"How To Contribute to Submarine",permalink:"/docs/community/contributing"}},s=[{value:"New committers",id:"new-committers",children:[]},{value:"Review",id:"review",children:[]},{value:"Reject",id:"reject",children:[]},{value:"Commit individual patches",id:"commit-individual-patches",children:[]},{value:"Adding Contributors role",id:"adding-contributors-role",children:[]}],m={toc:s};function u(e){var t=e.components,r=Object(i.a)(e,["components"]);return Object(n.b)("wrapper",Object(o.a)({},m,r,{components:t,mdxType:"MDXLayout"}),Object(n.b)("p",null,"This page contains Hadoop Core-specific guidelines for committers."),Object(n.b)("h2",{id:"new-committers"},"New committers"),Object(n.b)("p",null,"New committers are encouraged to first read Apache's generic committer documentation:"),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},Object(n.b)("a",{parentName:"li",href:"http://www.apache.org/dev/new-committers-guide.html"},"Apache New Committer Guide")),Object(n.b)("li",{parentName:"ul"},Object(n.b)("a",{parentName:"li",href:"http://www.apache.org/dev/committers.html"},"Apache Committer FAQ"))),Object(n.b)("p",null,"The first act of a new core committer is typically to add their name to the\ncredits page. This requires changing the site source in\n",Object(n.b)("a",{parentName:"p",href:"https://github.com/apache/submarine-site/blob/master/community/member.md"},"https://github.com/apache/submarine-site/blob/master/community/member.md"),". Once done,\nupdate the Submarine website as described\n",Object(n.b)("a",{parentName:"p",href:"https://github.com/apache/submarine-site/blob/asf-site/README.md"},"here"),"\n(TLDR; don't forget to regenerate the site with hugo, and commit the generated\nresults, too)."),Object(n.b)("h2",{id:"review"},"Review"),Object(n.b)("p",null,"Submarine committers should, as often as possible, attempt to review patches\nsubmitted by others. Ideally every submitted patch will get reviewed by a\ncommitter within a few days. If a committer reviews a patch they've not\nauthored, and believe it to be of sufficient quality, then they can commit the\npatch, otherwise the patch should be cancelled with a clear explanation for why\nit was rejected."),Object(n.b)("p",null,"The list of submitted patches can be found in the GitHub\n",Object(n.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/pulls"},"Pull Requests")," page.\nCommitters should scan the list from top-to-bottom,\nlooking for patches that they feel qualified to review and possibly commit."),Object(n.b)("p",null,"For non-trivial changes, it is best to get another committer to review & approve\nyour own patches before commit."),Object(n.b)("h2",{id:"reject"},"Reject"),Object(n.b)("p",null,"Patches should be rejected which do not adhere to the guidelines in\n",Object(n.b)("a",{parentName:"p",href:"/docs/community/contributing"},"Contribution Guidelines"),". Committers should always be\npolite to contributors and try to instruct and encourage them to contribute\nbetter patches. If a committer wishes to improve an unacceptable patch, then it\nshould first be rejected, and a new patch should be attached by the committer\nfor review."),Object(n.b)("h2",{id:"commit-individual-patches"},"Commit individual patches"),Object(n.b)("p",null,"Submarine uses git for source code version control. The writable repo is at -\n",Object(n.b)("a",{parentName:"p",href:"https://gitbox.apache.org/repos/asf/submarine.git"},"https://gitbox.apache.org/repos/asf/submarine.git")),Object(n.b)("p",null,"It is strongly recommended to use the cicd script to merge the PRs.\nSee the instructions at\n",Object(n.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/tree/master/dev-support/cicd"},"https://github.com/apache/submarine/tree/master/dev-support/cicd")),Object(n.b)("h2",{id:"adding-contributors-role"},"Adding Contributors role"),Object(n.b)("p",null,"There are three roles (Administrators, Committers, Contributors) in the project."),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},"Contributors who have Contributors role can become assignee of the issues in the project."),Object(n.b)("li",{parentName:"ul"},"Committers who have Committers role can set arbitrary roles in addition to Contributors role."),Object(n.b)("li",{parentName:"ul"},"Committers who have Administrators role can edit or delete all comments, or even delete issues in addition to Committers role.")),Object(n.b)("p",null,"How to set roles"),Object(n.b)("ol",null,Object(n.b)("li",{parentName:"ol"},"Login to ASF JIRA"),Object(n.b)("li",{parentName:"ol"},"Go to the project page (e.g. ",Object(n.b)("a",{parentName:"li",href:"https://issues.apache.org/jira/browse/SUBMARINE"},"https://issues.apache.org/jira/browse/SUBMARINE")," )"),Object(n.b)("li",{parentName:"ol"},'Hit "Administration" tab'),Object(n.b)("li",{parentName:"ol"},'Hit "Roles" tab in left side'),Object(n.b)("li",{parentName:"ol"},"Add Administrators/Committers/Contributors role")))}u.isMDXComponent=!0},209:function(e,t,r){"use strict";r.d(t,"a",(function(){return l})),r.d(t,"b",(function(){return d}));var o=r(0),i=r.n(o);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,o)}return r}function c(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function s(e,t){if(null==e)return{};var r,o,i=function(e,t){if(null==e)return{};var r,o,i={},n=Object.keys(e);for(o=0;o<n.length;o++)r=n[o],t.indexOf(r)>=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(o=0;o<n.length;o++)r=n[o],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var m=i.a.createContext({}),u=function(e){var t=i.a.useContext(m),r=t;return e&&(r="function"==typeof e?e(t):c(c({},t),e)),r},l=function(e){var t=u(e.components);return i.a.createElement(m.Provider,{value:t},e.children)},b={inlineCode:"code",wrapper:function(e){var t=e.children;return i.a.createElement(i.a.Fragment,{},t)}},p=i.a.forwardRef((function(e,t){var r=e.components,o=e.mdxType,n=e.originalType,a=e.parentName,m=s(e,["components","mdxType","originalType","parentName"]),l=u(r),p=o,d=l["".concat(a,".").concat(p)]||l[p]||b[p]||n;return r?i.a.createElement(d,c(c({ref:t},m),{},{components:r})):i.a.createElement(d,c({ref:t},m))}));function d(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var n=r.length,a=new Array(n);a[0]=p;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c.mdxType="string"==typeof e?e:o,a[1]=c;for(var m=2;m<n;m++)a[m]=r[m];return i.a.createElement.apply(null,a)}return i.a.createElement.apply(null,r)}p.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[83],{150:function(e,t,r){"use strict";r.r(t),r.d(t,"frontMatter",(function(){return a})),r.d(t,"metadata",(function(){return c})),r.d(t,"toc",(function(){return s})),r.d(t,"default",(function(){return u}));var o=r(3),i=r(7),n=(r(0),r(194)),a={title:"Guide for Apache Submarine Committers"},c={unversionedId:"community/HowToCommit",id:"version-0.6.0/community/HowToCommit",isDocsHomePage:!1,title:"Guide for Apache Submarine Committers",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/community/HowToCommit.md",slug:"/community/HowToCommit",permalink:"/docs/community/HowToCommit",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/community/HowToCommit.md",version:"0.6.0",sidebar:"docs",previous:{title:"Apache Submarine Community",permalink:"/docs/community/README"},next:{title:"How To Contribute to Submarine",permalink:"/docs/community/contributing"}},s=[{value:"New committers",id:"new-committers",children:[]},{value:"Review",id:"review",children:[]},{value:"Reject",id:"reject",children:[]},{value:"Commit individual patches",id:"commit-individual-patches",children:[]},{value:"Adding Contributors role",id:"adding-contributors-role",children:[]}],m={toc:s};function u(e){var t=e.components,r=Object(i.a)(e,["components"]);return Object(n.b)("wrapper",Object(o.a)({},m,r,{components:t,mdxType:"MDXLayout"}),Object(n.b)("p",null,"This page contains Hadoop Core-specific guidelines for committers."),Object(n.b)("h2",{id:"new-committers"},"New committers"),Object(n.b)("p",null,"New committers are encouraged to first read Apache's generic committer documentation:"),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},Object(n.b)("a",{parentName:"li",href:"http://www.apache.org/dev/new-committers-guide.html"},"Apache New Committer Guide")),Object(n.b)("li",{parentName:"ul"},Object(n.b)("a",{parentName:"li",href:"http://www.apache.org/dev/committers.html"},"Apache Committer FAQ"))),Object(n.b)("p",null,"The first act of a new core committer is typically to add their name to the\ncredits page. This requires changing the site source in\n",Object(n.b)("a",{parentName:"p",href:"https://github.com/apache/submarine-site/blob/master/community/member.md"},"https://github.com/apache/submarine-site/blob/master/community/member.md"),". Once done,\nupdate the Submarine website as described\n",Object(n.b)("a",{parentName:"p",href:"https://github.com/apache/submarine-site/blob/asf-site/README.md"},"here"),"\n(TLDR; don't forget to regenerate the site with hugo, and commit the generated\nresults, too)."),Object(n.b)("h2",{id:"review"},"Review"),Object(n.b)("p",null,"Submarine committers should, as often as possible, attempt to review patches\nsubmitted by others. Ideally every submitted patch will get reviewed by a\ncommitter within a few days. If a committer reviews a patch they've not\nauthored, and believe it to be of sufficient quality, then they can commit the\npatch, otherwise the patch should be cancelled with a clear explanation for why\nit was rejected."),Object(n.b)("p",null,"The list of submitted patches can be found in the GitHub\n",Object(n.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/pulls"},"Pull Requests")," page.\nCommitters should scan the list from top-to-bottom,\nlooking for patches that they feel qualified to review and possibly commit."),Object(n.b)("p",null,"For non-trivial changes, it is best to get another committer to review & approve\nyour own patches before commit."),Object(n.b)("h2",{id:"reject"},"Reject"),Object(n.b)("p",null,"Patches should be rejected which do not adhere to the guidelines in\n",Object(n.b)("a",{parentName:"p",href:"/docs/community/contributing"},"Contribution Guidelines"),". Committers should always be\npolite to contributors and try to instruct and encourage them to contribute\nbetter patches. If a committer wishes to improve an unacceptable patch, then it\nshould first be rejected, and a new patch should be attached by the committer\nfor review."),Object(n.b)("h2",{id:"commit-individual-patches"},"Commit individual patches"),Object(n.b)("p",null,"Submarine uses git for source code version control. The writable repo is at -\n",Object(n.b)("a",{parentName:"p",href:"https://gitbox.apache.org/repos/asf/submarine.git"},"https://gitbox.apache.org/repos/asf/submarine.git")),Object(n.b)("p",null,"It is strongly recommended to use the cicd script to merge the PRs.\nSee the instructions at\n",Object(n.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/tree/master/dev-support/cicd"},"https://github.com/apache/submarine/tree/master/dev-support/cicd")),Object(n.b)("h2",{id:"adding-contributors-role"},"Adding Contributors role"),Object(n.b)("p",null,"There are three roles (Administrators, Committers, Contributors) in the project."),Object(n.b)("ul",null,Object(n.b)("li",{parentName:"ul"},"Contributors who have Contributors role can become assignee of the issues in the project."),Object(n.b)("li",{parentName:"ul"},"Committers who have Committers role can set arbitrary roles in addition to Contributors role."),Object(n.b)("li",{parentName:"ul"},"Committers who have Administrators role can edit or delete all comments, or even delete issues in addition to Committers role.")),Object(n.b)("p",null,"How to set roles"),Object(n.b)("ol",null,Object(n.b)("li",{parentName:"ol"},"Login to ASF JIRA"),Object(n.b)("li",{parentName:"ol"},"Go to the project page (e.g. ",Object(n.b)("a",{parentName:"li",href:"https://issues.apache.org/jira/browse/SUBMARINE"},"https://issues.apache.org/jira/browse/SUBMARINE")," )"),Object(n.b)("li",{parentName:"ol"},'Hit "Administration" tab'),Object(n.b)("li",{parentName:"ol"},'Hit "Roles" tab in left side'),Object(n.b)("li",{parentName:"ol"},"Add Administrators/Committers/Contributors role")))}u.isMDXComponent=!0},194:function(e,t,r){"use strict";r.d(t,"a",(function(){return l})),r.d(t,"b",(function(){return d}));var o=r(0),i=r.n(o);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,o)}return r}function c(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function s(e,t){if(null==e)return{};var r,o,i=function(e,t){if(null==e)return{};var r,o,i={},n=Object.keys(e);for(o=0;o<n.length;o++)r=n[o],t.indexOf(r)>=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(o=0;o<n.length;o++)r=n[o],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var m=i.a.createContext({}),u=function(e){var t=i.a.useContext(m),r=t;return e&&(r="function"==typeof e?e(t):c(c({},t),e)),r},l=function(e){var t=u(e.components);return i.a.createElement(m.Provider,{value:t},e.children)},b={inlineCode:"code",wrapper:function(e){var t=e.children;return i.a.createElement(i.a.Fragment,{},t)}},p=i.a.forwardRef((function(e,t){var r=e.components,o=e.mdxType,n=e.originalType,a=e.parentName,m=s(e,["components","mdxType","originalType","parentName"]),l=u(r),p=o,d=l["".concat(a,".").concat(p)]||l[p]||b[p]||n;return r?i.a.createElement(d,c(c({ref:t},m),{},{components:r})):i.a.createElement(d,c({ref:t},m))}));function d(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var n=r.length,a=new Array(n);a[0]=p;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c.mdxType="string"==typeof e?e:o,a[1]=c;for(var m=2;m<n;m++)a[m]=r[m];return i.a.createElement.apply(null,a)}return i.a.createElement.apply(null,r)}p.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/ada24b13.29429dcb.js b/ada24b13.b5856d82.js
similarity index 98%
rename from ada24b13.29429dcb.js
rename to ada24b13.b5856d82.js
index d469608..5e61f0b 100644
--- a/ada24b13.29429dcb.js
+++ b/ada24b13.b5856d82.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[95],{162:function(e,n,r){"use strict";r.r(n),r.d(n,"frontMatter",(function(){return i})),r.d(n,"metadata",(function(){return s})),r.d(n,"toc",(function(){return c})),r.d(n,"default",(function(){return u}));var t=r(3),a=r(7),o=(r(0),r(209)),i={title:"Submarine Server Implementation"},s={unversionedId:"designDocs/submarine-server/architecture",id:"designDocs/submarine-server/architecture",isDocsHomePage:!1,title:"Submarine Server Implementation",description:"\x3c!--",source:"@site/docs/designDocs/submarine-server/architecture.md",slug:"/designDocs/submarine-server/architecture",permalink:"/docs/next/designDocs/submarine-server/architecture",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/designDocs/submarine-server/architecture.md",version:"current",sidebar:"docs",previous:{title:"Storage Implementation",permalink:"/docs/next/designDocs/storage-implementation"},next:{title:"Generic Experiment Spec",permalink:"/docs/next/designDocs/submarine-server/experimentSpec"}},c=[{value:"Architecture Overview",id:"architecture-overview",children:[]},{value:"Submarine Server and its APIs",id:"submarine-server-and-its-apis",children:[]},{value:"Proposal",id:"proposal",children:[]},{value:"Submarine Server Components",id:"submarine-server-components",children:[{value:"Experiment Manager",id:"experiment-manager",children:[]},{value:"Notebook Sessions Manager",id:"notebook-sessions-manager",children:[]},{value:"Environment Manager",id:"environment-manager",children:[]},{value:"Model Registry",id:"model-registry",children:[]},{value:"Model Serving Manager",id:"model-serving-manager",children:[]},{value:"Compute Cluster Manager",id:"compute-cluster-manager",children:[]},{value:"Dataset Manager",id:"dataset-manager",children:[]},{value:"User/team permissions manager",id:"userteam-permissions-manager",children:[]},{value:"Metadata Manager",id:"metadata-manager",children:[]}]},{value:"Components/services outside of Submarine Server&#39;s scope",id:"componentsservices-outside-of-submarine-servers-scope",children:[]}],l={toc:c};function u(e){var n=e.components,r=Object(a.a)(e,["components"]);return Object(o.b)("wrapper",Object(t.a)({},l,r,{components:n,mdxType:"MDXLayout"}),Object(o.b)("h2",{id:"architecture-overview"},"Architecture Overview"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"    +---------------Submarine Server ---+\n    |                                   |\n    | +------------+ +------------+     |\n    | |Web Svc/Prxy| |Backend Svc |     |    +--Submarine Asset +\n    | +------------+ +------------+     |    |Project/Notebook  |\n    |   ^         ^                     |    |Model/Metrics     |\n    +---|---------|---------------------+    |Libraries/Dataset |\n        |         |                          +------------------+\n        |         |\n        |      +--|-Compute Cluster 1---+    +--Image Registry--+\n        +      |  |                     |    |   User's Images  |\n      User /   |  +                     |    |                  |\n      Admin    | User Notebook Instance |    +------------------+\n               | Experiment Runs        |\n               +------------------------+    +-Data Storage-----+\n                                             | S3/HDFS, etc.    |\n               +----Compute Cluster 2---+    |                  |\n                                             +------------------+\n                        ...\n")),Object(o.b)("p",null,"Here's a diagram to illustrate the Submarine's deployment."),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},'Submarine Server consists of web service/proxy, and backend services. They\'re like "control planes" of Submarine, and users will interact with these services.'),Object(o.b)("li",{parentName:"ul"},"Submarine server could be a microservice architecture and can be deployed to one of the compute clusters. (see below, this will be useful when we only have one cluster)."),Object(o.b)("li",{parentName:"ul"},"There're multiple compute clusters that could be used by Submarine service. For user's running notebook instance, jobs, etc. they will be placed to one of the compute clusters by user's preference or defined policies."),Object(o.b)("li",{parentName:"ul"},"Submarine's asset includes project/notebook(content)/models/metrics/dataset-meta, etc. can be stored inside Submarine's own database."),Object(o.b)("li",{parentName:"ul"},"Datasets can be stored in various locations such as S3/HDFS."),Object(o.b)("li",{parentName:"ul"},"Users can push container (such as Docker) images to a preconfigured registry in Submarine, so Submarine service can know how to pull required container images."),Object(o.b)("li",{parentName:"ul"},"Image Registry/Data-Storage, etc. are outside of Submarine server's scope and should be managed by 3rd party applications.")),Object(o.b)("h2",{id:"submarine-server-and-its-apis"},"Submarine Server and its APIs"),Object(o.b)("p",null,"Submarine server is designed to allow data scientists to access notebooks, submit/manage jobs, manage models, create model training workflows, access datasets, etc."),Object(o.b)("p",null,"Submarine Server exposed UI and REST API. Users can also use CLI / SDK to manage assets inside Submarine Server."),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"           +----------+\n           | CLI      |+---+\n           +----------+    v              +----------------+\n                         +--------------+ | Submarine      |\n           +----------+  | REST API     | |                |\n           | SDK      |+>|              |+>  Server        |\n           +----------+  +--------------+ |                |\n                           ^              +----------------+\n           +----------+    |\n           | UI       |+---+\n           +----------+\n")),Object(o.b)("p",null,"REST API will be used by the other 3 approaches. (CLI/SDK/UI)"),Object(o.b)("p",null,"The REST API Service handles HTTP requests and is responsible for authentication. It acts as the caller for the JobManager component."),Object(o.b)("p",null,"The REST component defines the generic job spec which describes the detailed info about job. For more details, refer to ",Object(o.b)("a",{parentName:"p",href:"https://docs.google.com/document/d/1kd-5UzsHft6gV7EuZiPXeWIKJtPqVwkNlqMvy0P_pAw/edit#"},"here"),". (Please note that we're converting REST endpoint description from Java-based REST API to swagger definition, once that is done, we should replace the link with swagger definition spec)."),Object(o.b)("h2",{id:"proposal"},"Proposal"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"\n+-----------+\n|           |\n| workbench +---+   +----------------------------------+\n|           |   |   | +------+ +---------------------+ |\n+-----------+   |   | |      | |      +-------+      | |     +---------------------+\n                |   | |      | |      |  K8s  |      | |     | +--------+   +----+ |\n+-----------+   |   | |      | |      +-------+      | |     | |        +--\x3e+job1| |\n|           |   |   | |      | |      submitter      | |     | |        |   +----+ |\n|    CLI    +------\x3e+ | REST | +---------------------+ +----\x3e+ |operator|   +----+ |\n|           |   |   | |      | +---------------------+ |     | |        +--\x3e+job2| |\n+-----------+   |   | |      | | +-------+ +-------+ | |     | +--------+   +----+ |\n                |   | |      | | |PlugMgr| |monitor| | |     |     K8s Cluster     |\n+-----------+   |   | |      | | +-------+ +-------+ | |     +---------------------+\n|           |   |   | |      | |      JobManager     | |\n|    SDK    +---+   | +------+ +---------------------+ |\n|           |       +----------------------------------+\n+-----------+\n   client                          server\n")),Object(o.b)("p",null,"We propose to split the original core module in the old layout into two modules, CLI and server as shown in FIG. The submarine-client calls the REST APIs to submit and retrieve the job info. The submarine-server provides the REST service, job management, submitting the job to cluster, and running job in different clusters through the corresponding runtime."),Object(o.b)("h2",{id:"submarine-server-components"},"Submarine Server Components"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"\n   +----------------------Submarine Server--------------------------------+\n   | +-----------------+ +------------------+ +--------------------+      |\n   | |  Experiment     | |Notebook Session  | |Environment Mgr     |      |\n   | |  Mgr            | |Mgr               | |                    |      |\n   | +-----------------+ +------------------+ +--------------------+      |\n   |                                                                      |\n   | +-----------------+ +------------------+ +--------------------+      |\n   | |  Model Registry | |Model Serving Mgr | |Compute Cluster Mgr |      |\n   | |                 | |                  | |                    |      |\n   | +-----------------+ +------------------+ +--------------------+      |\n   |                                                                      |\n   | +-----------------+ +------------------+ +--------------------+      |\n   | | DataSet Mgr     | |User/Team         | |Metadata Mgr        |      |\n   | |                 | |Permission Mgr    | |                    |      |\n   | +-----------------+ +------------------+ +--------------------+      |\n   +----------------------------------------------------------------------+\n")),Object(o.b)("h3",{id:"experiment-manager"},"Experiment Manager"),Object(o.b)("p",null,"TODO"),Object(o.b)("h3",{id:"notebook-sessions-manager"},"Notebook Sessions Manager"),Object(o.b)("p",null,"TODO"),Object(o.b)("h3",{id:"environment-manager"},"Environment Manager"),Object(o.b)("p",null,"TODO"),Object(o.b)("h3",{id:"model-registry"},"Model Registry"),Object(o.b)("p",null,"TODO"),Object(o.b)("h3",{id:"model-serving-manager"},"Model Serving Manager"),Object(o.b)("p",null,"TODO"),Object(o.b)("h3",{id:"compute-cluster-manager"},"Compute Cluster Manager"),Object(o.b)("p",null,"TODO"),Object(o.b)("h3",{id:"dataset-manager"},"Dataset Manager"),Object(o.b)("p",null,"TODO"),Object(o.b)("h3",{id:"userteam-permissions-manager"},"User/team permissions manager"),Object(o.b)("p",null,"TODO"),Object(o.b)("h3",{id:"metadata-manager"},"Metadata Manager"),Object(o.b)("p",null,"TODO"),Object(o.b)("h2",{id:"componentsservices-outside-of-submarine-servers-scope"},"Components/services outside of Submarine Server's scope"),Object(o.b)("p",null,"TODO: Describe what are the out-of-scope components, which should be handled and managed outside of Submarine server. Candidates are: Identity management, data storage, metastore storage, etc."))}u.isMDXComponent=!0},209:function(e,n,r){"use strict";r.d(n,"a",(function(){return b})),r.d(n,"b",(function(){return p}));var t=r(0),a=r.n(t);function o(e,n,r){return n in e?Object.defineProperty(e,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[n]=r,e}function i(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),r.push.apply(r,t)}return r}function s(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?i(Object(r),!0).forEach((function(n){o(e,n,r[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))}))}return e}function c(e,n){if(null==e)return{};var r,t,a=function(e,n){if(null==e)return{};var r,t,a={},o=Object.keys(e);for(t=0;t<o.length;t++)r=o[t],n.indexOf(r)>=0||(a[r]=e[r]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(t=0;t<o.length;t++)r=o[t],n.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=a.a.createContext({}),u=function(e){var n=a.a.useContext(l),r=n;return e&&(r="function"==typeof e?e(n):s(s({},n),e)),r},b=function(e){var n=u(e.components);return a.a.createElement(l.Provider,{value:n},e.children)},m={inlineCode:"code",wrapper:function(e){var n=e.children;return a.a.createElement(a.a.Fragment,{},n)}},d=a.a.forwardRef((function(e,n){var r=e.components,t=e.mdxType,o=e.originalType,i=e.parentName,l=c(e,["components","mdxType","originalType","parentName"]),b=u(r),d=t,p=b["".concat(i,".").concat(d)]||b[d]||m[d]||o;return r?a.a.createElement(p,s(s({ref:n},l),{},{components:r})):a.a.createElement(p,s({ref:n},l))}));function p(e,n){var r=arguments,t=n&&n.mdxType;if("string"==typeof e||t){var o=r.length,i=new Array(o);i[0]=d;var s={};for(var c in n)hasOwnProperty.call(n,c)&&(s[c]=n[c]);s.originalType=e,s.mdxType="string"==typeof e?e:t,i[1]=s;for(var l=2;l<o;l++)i[l]=r[l];return a.a.createElement.apply(null,i)}return a.a.createElement.apply(null,r)}d.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[84],{151:function(e,n,r){"use strict";r.r(n),r.d(n,"frontMatter",(function(){return i})),r.d(n,"metadata",(function(){return s})),r.d(n,"toc",(function(){return c})),r.d(n,"default",(function(){return u}));var t=r(3),a=r(7),o=(r(0),r(194)),i={title:"Submarine Server Implementation"},s={unversionedId:"designDocs/submarine-server/architecture",id:"designDocs/submarine-server/architecture",isDocsHomePage:!1,title:"Submarine Server Implementation",description:"\x3c!--",source:"@site/docs/designDocs/submarine-server/architecture.md",slug:"/designDocs/submarine-server/architecture",permalink:"/docs/next/designDocs/submarine-server/architecture",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/designDocs/submarine-server/architecture.md",version:"current",sidebar:"docs",previous:{title:"Storage Implementation",permalink:"/docs/next/designDocs/storage-implementation"},next:{title:"Generic Experiment Spec",permalink:"/docs/next/designDocs/submarine-server/experimentSpec"}},c=[{value:"Architecture Overview",id:"architecture-overview",children:[]},{value:"Submarine Server and its APIs",id:"submarine-server-and-its-apis",children:[]},{value:"Proposal",id:"proposal",children:[]},{value:"Submarine Server Components",id:"submarine-server-components",children:[{value:"Experiment Manager",id:"experiment-manager",children:[]},{value:"Notebook Sessions Manager",id:"notebook-sessions-manager",children:[]},{value:"Environment Manager",id:"environment-manager",children:[]},{value:"Model Registry",id:"model-registry",children:[]},{value:"Model Serving Manager",id:"model-serving-manager",children:[]},{value:"Compute Cluster Manager",id:"compute-cluster-manager",children:[]},{value:"Dataset Manager",id:"dataset-manager",children:[]},{value:"User/team permissions manager",id:"userteam-permissions-manager",children:[]},{value:"Metadata Manager",id:"metadata-manager",children:[]}]},{value:"Components/services outside of Submarine Server&#39;s scope",id:"componentsservices-outside-of-submarine-servers-scope",children:[]}],l={toc:c};function u(e){var n=e.components,r=Object(a.a)(e,["components"]);return Object(o.b)("wrapper",Object(t.a)({},l,r,{components:n,mdxType:"MDXLayout"}),Object(o.b)("h2",{id:"architecture-overview"},"Architecture Overview"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"    +---------------Submarine Server ---+\n    |                                   |\n    | +------------+ +------------+     |\n    | |Web Svc/Prxy| |Backend Svc |     |    +--Submarine Asset +\n    | +------------+ +------------+     |    |Project/Notebook  |\n    |   ^         ^                     |    |Model/Metrics     |\n    +---|---------|---------------------+    |Libraries/Dataset |\n        |         |                          +------------------+\n        |         |\n        |      +--|-Compute Cluster 1---+    +--Image Registry--+\n        +      |  |                     |    |   User's Images  |\n      User /   |  +                     |    |                  |\n      Admin    | User Notebook Instance |    +------------------+\n               | Experiment Runs        |\n               +------------------------+    +-Data Storage-----+\n                                             | S3/HDFS, etc.    |\n               +----Compute Cluster 2---+    |                  |\n                                             +------------------+\n                        ...\n")),Object(o.b)("p",null,"Here's a diagram to illustrate the Submarine's deployment."),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},'Submarine Server consists of web service/proxy, and backend services. They\'re like "control planes" of Submarine, and users will interact with these services.'),Object(o.b)("li",{parentName:"ul"},"Submarine server could be a microservice architecture and can be deployed to one of the compute clusters. (see below, this will be useful when we only have one cluster)."),Object(o.b)("li",{parentName:"ul"},"There're multiple compute clusters that could be used by Submarine service. For user's running notebook instance, jobs, etc. they will be placed to one of the compute clusters by user's preference or defined policies."),Object(o.b)("li",{parentName:"ul"},"Submarine's asset includes project/notebook(content)/models/metrics/dataset-meta, etc. can be stored inside Submarine's own database."),Object(o.b)("li",{parentName:"ul"},"Datasets can be stored in various locations such as S3/HDFS."),Object(o.b)("li",{parentName:"ul"},"Users can push container (such as Docker) images to a preconfigured registry in Submarine, so Submarine service can know how to pull required container images."),Object(o.b)("li",{parentName:"ul"},"Image Registry/Data-Storage, etc. are outside of Submarine server's scope and should be managed by 3rd party applications.")),Object(o.b)("h2",{id:"submarine-server-and-its-apis"},"Submarine Server and its APIs"),Object(o.b)("p",null,"Submarine server is designed to allow data scientists to access notebooks, submit/manage jobs, manage models, create model training workflows, access datasets, etc."),Object(o.b)("p",null,"Submarine Server exposed UI and REST API. Users can also use CLI / SDK to manage assets inside Submarine Server."),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"           +----------+\n           | CLI      |+---+\n           +----------+    v              +----------------+\n                         +--------------+ | Submarine      |\n           +----------+  | REST API     | |                |\n           | SDK      |+>|              |+>  Server        |\n           +----------+  +--------------+ |                |\n                           ^              +----------------+\n           +----------+    |\n           | UI       |+---+\n           +----------+\n")),Object(o.b)("p",null,"REST API will be used by the other 3 approaches. (CLI/SDK/UI)"),Object(o.b)("p",null,"The REST API Service handles HTTP requests and is responsible for authentication. It acts as the caller for the JobManager component."),Object(o.b)("p",null,"The REST component defines the generic job spec which describes the detailed info about job. For more details, refer to ",Object(o.b)("a",{parentName:"p",href:"https://docs.google.com/document/d/1kd-5UzsHft6gV7EuZiPXeWIKJtPqVwkNlqMvy0P_pAw/edit#"},"here"),". (Please note that we're converting REST endpoint description from Java-based REST API to swagger definition, once that is done, we should replace the link with swagger definition spec)."),Object(o.b)("h2",{id:"proposal"},"Proposal"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"\n+-----------+\n|           |\n| workbench +---+   +----------------------------------+\n|           |   |   | +------+ +---------------------+ |\n+-----------+   |   | |      | |      +-------+      | |     +---------------------+\n                |   | |      | |      |  K8s  |      | |     | +--------+   +----+ |\n+-----------+   |   | |      | |      +-------+      | |     | |        +--\x3e+job1| |\n|           |   |   | |      | |      submitter      | |     | |        |   +----+ |\n|    CLI    +------\x3e+ | REST | +---------------------+ +----\x3e+ |operator|   +----+ |\n|           |   |   | |      | +---------------------+ |     | |        +--\x3e+job2| |\n+-----------+   |   | |      | | +-------+ +-------+ | |     | +--------+   +----+ |\n                |   | |      | | |PlugMgr| |monitor| | |     |     K8s Cluster     |\n+-----------+   |   | |      | | +-------+ +-------+ | |     +---------------------+\n|           |   |   | |      | |      JobManager     | |\n|    SDK    +---+   | +------+ +---------------------+ |\n|           |       +----------------------------------+\n+-----------+\n   client                          server\n")),Object(o.b)("p",null,"We propose to split the original core module in the old layout into two modules, CLI and server as shown in FIG. The submarine-client calls the REST APIs to submit and retrieve the job info. The submarine-server provides the REST service, job management, submitting the job to cluster, and running job in different clusters through the corresponding runtime."),Object(o.b)("h2",{id:"submarine-server-components"},"Submarine Server Components"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"\n   +----------------------Submarine Server--------------------------------+\n   | +-----------------+ +------------------+ +--------------------+      |\n   | |  Experiment     | |Notebook Session  | |Environment Mgr     |      |\n   | |  Mgr            | |Mgr               | |                    |      |\n   | +-----------------+ +------------------+ +--------------------+      |\n   |                                                                      |\n   | +-----------------+ +------------------+ +--------------------+      |\n   | |  Model Registry | |Model Serving Mgr | |Compute Cluster Mgr |      |\n   | |                 | |                  | |                    |      |\n   | +-----------------+ +------------------+ +--------------------+      |\n   |                                                                      |\n   | +-----------------+ +------------------+ +--------------------+      |\n   | | DataSet Mgr     | |User/Team         | |Metadata Mgr        |      |\n   | |                 | |Permission Mgr    | |                    |      |\n   | +-----------------+ +------------------+ +--------------------+      |\n   +----------------------------------------------------------------------+\n")),Object(o.b)("h3",{id:"experiment-manager"},"Experiment Manager"),Object(o.b)("p",null,"TODO"),Object(o.b)("h3",{id:"notebook-sessions-manager"},"Notebook Sessions Manager"),Object(o.b)("p",null,"TODO"),Object(o.b)("h3",{id:"environment-manager"},"Environment Manager"),Object(o.b)("p",null,"TODO"),Object(o.b)("h3",{id:"model-registry"},"Model Registry"),Object(o.b)("p",null,"TODO"),Object(o.b)("h3",{id:"model-serving-manager"},"Model Serving Manager"),Object(o.b)("p",null,"TODO"),Object(o.b)("h3",{id:"compute-cluster-manager"},"Compute Cluster Manager"),Object(o.b)("p",null,"TODO"),Object(o.b)("h3",{id:"dataset-manager"},"Dataset Manager"),Object(o.b)("p",null,"TODO"),Object(o.b)("h3",{id:"userteam-permissions-manager"},"User/team permissions manager"),Object(o.b)("p",null,"TODO"),Object(o.b)("h3",{id:"metadata-manager"},"Metadata Manager"),Object(o.b)("p",null,"TODO"),Object(o.b)("h2",{id:"componentsservices-outside-of-submarine-servers-scope"},"Components/services outside of Submarine Server's scope"),Object(o.b)("p",null,"TODO: Describe what are the out-of-scope components, which should be handled and managed outside of Submarine server. Candidates are: Identity management, data storage, metastore storage, etc."))}u.isMDXComponent=!0},194:function(e,n,r){"use strict";r.d(n,"a",(function(){return b})),r.d(n,"b",(function(){return p}));var t=r(0),a=r.n(t);function o(e,n,r){return n in e?Object.defineProperty(e,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[n]=r,e}function i(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),r.push.apply(r,t)}return r}function s(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?i(Object(r),!0).forEach((function(n){o(e,n,r[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))}))}return e}function c(e,n){if(null==e)return{};var r,t,a=function(e,n){if(null==e)return{};var r,t,a={},o=Object.keys(e);for(t=0;t<o.length;t++)r=o[t],n.indexOf(r)>=0||(a[r]=e[r]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(t=0;t<o.length;t++)r=o[t],n.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=a.a.createContext({}),u=function(e){var n=a.a.useContext(l),r=n;return e&&(r="function"==typeof e?e(n):s(s({},n),e)),r},b=function(e){var n=u(e.components);return a.a.createElement(l.Provider,{value:n},e.children)},m={inlineCode:"code",wrapper:function(e){var n=e.children;return a.a.createElement(a.a.Fragment,{},n)}},d=a.a.forwardRef((function(e,n){var r=e.components,t=e.mdxType,o=e.originalType,i=e.parentName,l=c(e,["components","mdxType","originalType","parentName"]),b=u(r),d=t,p=b["".concat(i,".").concat(d)]||b[d]||m[d]||o;return r?a.a.createElement(p,s(s({ref:n},l),{},{components:r})):a.a.createElement(p,s({ref:n},l))}));function p(e,n){var r=arguments,t=n&&n.mdxType;if("string"==typeof e||t){var o=r.length,i=new Array(o);i[0]=d;var s={};for(var c in n)hasOwnProperty.call(n,c)&&(s[c]=n[c]);s.originalType=e,s.mdxType="string"==typeof e?e:t,i[1]=s;for(var l=2;l<o;l++)i[l]=r[l];return a.a.createElement.apply(null,i)}return a.a.createElement.apply(null,r)}d.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/ae045997.5f59351f.js b/ae045997.52baff71.js
similarity index 98%
rename from ae045997.5f59351f.js
rename to ae045997.52baff71.js
index a2d8008..98a094a 100644
--- a/ae045997.5f59351f.js
+++ b/ae045997.52baff71.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[96],{163:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return i})),n.d(t,"metadata",(function(){return s})),n.d(t,"toc",(function(){return l})),n.d(t,"default",(function(){return d}));var a=n(3),r=n(7),o=(n(0),n(209)),i={title:"Architecture and Requirment"},s={unversionedId:"designDocs/architecture-and-requirements",id:"version-0.6.0/designDocs/architecture-and-requirements",isDocsHomePage:!1,title:"Architecture and Requirment",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/designDocs/architecture-and-requirements.md",slug:"/designDocs/architecture-and-requirements",permalink:"/docs/designDocs/architecture-and-requirements",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/designDocs/architecture-and-requirements.md",version:"0.6.0",sidebar:"docs",previous:{title:"How To Contribute to Submarine",permalink:"/docs/community/contributing"},next:{title:"Implementation Notes",permalink:"/docs/designDocs/implementation-notes"}},l=[{value:"Terminology",id:"terminology",children:[]},{value:"Background",id:"background",children:[]},{value:"Machine Learning Workflows &amp; Pain points",id:"machine-learning-workflows--pain-points",children:[{value:"Pain #1 Complex workflow/steps from raw data to model, different tools needed by different steps, hard to make changes to workflow, and not error-proof",id:"pain-1-complex-workflowsteps-from-raw-data-to-model-different-tools-needed-by-different-steps-hard-to-make-changes-to-workflow-and-not-error-proof",children:[]},{value:"Pain #2 Dependencies of underlying resource management platform",id:"pain-2-dependencies-of-underlying-resource-management-platform",children:[]},{value:"Pain #3 Data scientist are forced to interact with lower-level platform components",id:"pain-3-data-scientist-are-forced-to-interact-with-lower-level-platform-components",children:[]},{value:"Pain #4 Comply with data security/governance requirements",id:"pain-4-comply-with-data-securitygovernance-requirements",children:[]},{value:"Pain #5 No good way to reduce routine ML code development",id:"pain-5-no-good-way-to-reduce-routine-ml-code-development",children:[]}]},{value:"Overview",id:"overview",children:[{value:"A little bit history",id:"a-little-bit-history",children:[]},{value:"Why Submarine?",id:"why-submarine",children:[]}]},{value:"Requirements and non-requirements",id:"requirements-and-non-requirements",children:[{value:"Notebook",id:"notebook",children:[]},{value:"Experiment",id:"experiment",children:[]},{value:"Environment Profiles",id:"environment-profiles",children:[]},{value:"Model",id:"model",children:[]},{value:"Metrics for training job and model",id:"metrics-for-training-job-and-model",children:[]},{value:"Deployment",id:"deployment",children:[]},{value:"Security / Access Control / User Management / Quota Management",id:"security--access-control--user-management--quota-management",children:[]},{value:"Dataset",id:"dataset",children:[]}]},{value:"Architecture Overview",id:"architecture-overview",children:[{value:"Architecture Diagram",id:"architecture-diagram",children:[]}]}],c={toc:l};function d(e){var t=e.components,i=Object(r.a)(e,["components"]);return Object(o.b)("wrapper",Object(a.a)({},c,i,{components:t,mdxType:"MDXLayout"}),Object(o.b)("h2",{id:"terminology"},"Terminology"),Object(o.b)("table",null,Object(o.b)("thead",{parentName:"table"},Object(o.b)("tr",{parentName:"thead"},Object(o.b)("th",{parentName:"tr",align:null},"Term"),Object(o.b)("th",{parentName:"tr",align:null},"Description"))),Object(o.b)("tbody",{parentName:"table"},Object(o.b)("tr",{parentName:"tbody"},Object(o.b)("td",{parentName:"tr",align:null},"User"),Object(o.b)("td",{parentName:"tr",align:null},"A single data-scientist/data-engineer. User has resource quota, credentials")),Object(o.b)("tr",{parentName:"tbody"},Object(o.b)("td",{parentName:"tr",align:null},"Team"),Object(o.b)("td",{parentName:"tr",align:null},"User belongs to one or more teams, teams have ACLs for artifacts sharing such as notebook content, model, etc.")),Object(o.b)("tr",{parentName:"tbody"},Object(o.b)("td",{parentName:"tr",align:null},"Admin"),Object(o.b)("td",{parentName:"tr",align:null},"Also called SRE, who manages user's quotas, credentials, team, and other components.")))),Object(o.b)("h2",{id:"background"},"Background"),Object(o.b)("p",null,"Everybody talks about machine learning today, and lots of companies are trying to leverage machine learning to push the business to the next level. Nowadays, as more and more developers, infrastructure software companies coming to this field, machine learning becomes more and more achievable. "),Object(o.b)("p",null,"In the last decade, the software industry has built many open source tools for machine learning to solve the pain points: "),Object(o.b)("ol",null,Object(o.b)("li",{parentName:"ol"},Object(o.b)("p",{parentName:"li"},"It was not easy to build machine learning algorithms manually, such as logistic regression, GBDT, and many other algorithms:\n",Object(o.b)("strong",{parentName:"p"},"Answer to that:")," Industries have open sourced many algorithm libraries, tools, and even pre-trained models so that data scientists can directly reuse these building blocks to hook up to their data without knowing intricate details inside these algorithms and models. ")),Object(o.b)("li",{parentName:"ol"},Object(o.b)("p",{parentName:"li"},'It was not easy to achieve "WYSIWYG, what you see is what you get" from IDEs: not easy to get output, visualization, troubleshooting experiences at the same place.\n',Object(o.b)("strong",{parentName:"p"},"Answer to that:")," Notebooks concept was added to this picture, notebook brought the experiences of interactive coding, sharing, visualization, debugging under the same user interface. There're popular open-source notebooks like Apache Zeppelin/Jupyter.")),Object(o.b)("li",{parentName:"ol"},Object(o.b)("p",{parentName:"li"},"It was not easy to manage dependencies: ML applications can run on one machine is hard to deploy on another machine because it has lots of libraries dependencies.\n",Object(o.b)("strong",{parentName:"p"},"Answer to that:"),' Containerization becomes popular and a standard to packaging dependencies to make it easier to "build once, run anywhere". ')),Object(o.b)("li",{parentName:"ol"},Object(o.b)("p",{parentName:"li"},"Fragmented tools, libraries were hard for ML engineers to learn. Experiences learned in one company are not naturally migratable to another company.\n",Object(o.b)("strong",{parentName:"p"},"Answer to that:")," A few dominant open-source frameworks reduced the overhead of learning too many different frameworks, concepts. Data-scientist can learn a few libraries such as Tensorflow/PyTorch, and a few high-level wrappers like Keras will be able to create your machine learning application from other open-source building blocks.")),Object(o.b)("li",{parentName:"ol"},Object(o.b)("p",{parentName:"li"},"Similarly, models built by one library (such as libsvm) were hard to be integrated into machine learning pipeline since there's no standard format.\n",Object(o.b)("strong",{parentName:"p"},"Answer to that:")," Industry has built successful open-source standard machine learning frameworks such as Tensorflow/PyTorch/Keras so their format can be easily shared across. And efforts to build an even more general model format such as ONNX.")),Object(o.b)("li",{parentName:"ol"},Object(o.b)("p",{parentName:"li"},"It was hard to build a data pipeline that flows/transform data from a raw data source to whatever required by ML applications.\n",Object(o.b)("strong",{parentName:"p"},"Answer to that:")," Open source big data industry plays an important role in providing, simplify, unify processes and building blocks for data flows, transformations, etc."))),Object(o.b)("p",null,"The machine learning industry is moving on the right track to solve major roadblocks. So what are the pain points now for companies which have machine learning needs? What can we help here? To answer this question, let's look at machine learning workflow first. "),Object(o.b)("h2",{id:"machine-learning-workflows--pain-points"},"Machine Learning Workflows & Pain points"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"1) From different data sources such as edge, clickstream, logs, etc.\n   => Land to data lakes  \n   \n2) From data lake, data transformation: \n   => Data transformations: Cleanup, remove invalid rows/columns, \n                            select columns, sampling, split train/test\n                            data-set, join table, etc.\n   => Data prepared for training.\n                            \n3) From prepared data: \n   => Training, model hyper-parameter tuning, cross-validation, etc. \n   => Models saved to storage. \n   \n4) From saved models: \n   => Model assurance, deployment, A/B testing, etc.\n   => Model deployed for online serving or offline scoring.\n")),Object(o.b)("p",null,"Typically data scientists responsible for item 2)-4), 1) typically handled by a different team (called Data Engineering team in many companies, some Data Engineering team also responsible for part of data transformation)"),Object(o.b)("h3",{id:"pain-1-complex-workflowsteps-from-raw-data-to-model-different-tools-needed-by-different-steps-hard-to-make-changes-to-workflow-and-not-error-proof"},"Pain ","#","1 Complex workflow/steps from raw data to model, different tools needed by different steps, hard to make changes to workflow, and not error-proof"),Object(o.b)("p",null,"It is a complex workflow from raw data to usable models, after talking to many different data scientists, we have learned that a typical procedure to train a new model and push to production can take months to 1-2 years. "),Object(o.b)("p",null,"It is also a wide skill set required by this workflow. For example, data transformation needs tools like Spark/Hive for large scale and tools like Pandas for a small scale. And model training needs to be switched between XGBoost, Tensorflow, Keras, PyTorch. Building a data pipeline requires Apache Airflow or Oozie. "),Object(o.b)("p",null,"Yes, there are great, standardized open-source tools built for many of such purposes. But how about changes need to be made for a particular part of the data pipeline? How about adding a few columns to the training data for experiments? How about training models, and push models to validation, A/B testing before rolling to production? All these steps need jumping between different tools, UIs, and very hard to make changes, and it is not error-proof during these procedures."),Object(o.b)("h3",{id:"pain-2-dependencies-of-underlying-resource-management-platform"},"Pain ","#","2 Dependencies of underlying resource management platform"),Object(o.b)("p",null,"To make jobs/services required by a machine learning platform to be able to run, we need an underlying resource management platform. There're some choices of resource management platform, and they have distinct advantages and disadvantages. "),Object(o.b)("p",null,"For example, there're many machine learning platform built on top of K8s. It is relatively easy to get a K8s from a cloud vendor, easy to orchestrate machine learning required services/daemons run on K8s. However, K8s doesn't offer good support jobs like Spark/Flink/Hive. So if your company has Spark/Flink/Hive running on YARN, there're gaps and a significant amount of work to move required jobs from YARN to K8s. Maintaining a separate K8s cluster is also overhead to Hadoop-based data infrastructure."),Object(o.b)("p",null,"Similarly, if your company's data pipelines are mostly built on top of cloud resources and SaaS offerings, asking you to install a separate YARN cluster to run a new machine learning platform doesn't make a lot of sense."),Object(o.b)("h3",{id:"pain-3-data-scientist-are-forced-to-interact-with-lower-level-platform-components"},"Pain ","#","3 Data scientist are forced to interact with lower-level platform components"),Object(o.b)("p",null,"In addition to the above pain, we do see Data Scientists are forced to learn underlying platform knowledge to be able to build a real-world machine learning workflow."),Object(o.b)("p",null,"For most of the data scientists we talked with, they're experts of ML algorithms/libraries, feature engineering, etc. They're also most familiar with Python, R, and some of them understand Spark, Hive, etc. "),Object(o.b)("p",null,"If they're asked to do interactions with lower-level components like fine-tuning a Spark job's performance; or troubleshooting job failed to launch because of resource constraints; or write a K8s/YARN job spec and mount volumes, set networks properly. They will scratch their heads and typically cannot perform these operations efficiently."),Object(o.b)("h3",{id:"pain-4-comply-with-data-securitygovernance-requirements"},"Pain ","#","4 Comply with data security/governance requirements"),Object(o.b)("p",null,"TODO: Add more details."),Object(o.b)("h3",{id:"pain-5-no-good-way-to-reduce-routine-ml-code-development"},"Pain ","#","5 No good way to reduce routine ML code development"),Object(o.b)("p",null,"After the data is prepared, the data scientist needs to do several routine tasks to build the ML pipeline. To get a sense of the existing the data set, it usually needs a split of the data set, the statistics of data set. These tasks have a common duplicate part of code, which reduces the efficiency of data scientists."),Object(o.b)("p",null,"An abstraction layer/framework to help the developer to boost ML pipeline development could be valuable. It's better than the developer only needs to fill callback function to focus on their key logic."),Object(o.b)("h1",{id:"submarine"},"Submarine"),Object(o.b)("h2",{id:"overview"},"Overview"),Object(o.b)("h3",{id:"a-little-bit-history"},"A little bit history"),Object(o.b)("p",null,"Initially, Submarine is built to solve problems of running deep learning jobs like Tensorflow/PyTorch on Apache Hadoop YARN, allows admin to monitor launched deep learning jobs, and manage generated models. "),Object(o.b)("p",null,"It was part of YARN initially, and code resides under ",Object(o.b)("inlineCode",{parentName:"p"},"hadoop-yarn-applications"),". Later, the community decided to convert it to be a subproject within Hadoop (Sibling project of YARN, HDFS, etc.) because we want to support other resource management platforms like K8s. And finally, we're reconsidering Submarine's charter, and the Hadoop community voted that it is the time to moved Submarine to a separate Apache TLP."),Object(o.b)("h3",{id:"why-submarine"},"Why Submarine?"),Object(o.b)("p",null,Object(o.b)("inlineCode",{parentName:"p"},"ONE PLATFORM")),Object(o.b)("p",null,"Submarine is the ONE PLATFORM to allow Data Scientists to create end-to-end machine learning workflow. ",Object(o.b)("inlineCode",{parentName:"p"},"ONE PLATFORM")," means it supports Data Scientists and data engineers to finish their jobs on the same platform without frequently switching their toolsets. From dataset exploring data pipeline creation, model training, and tuning, and push model to production. All these steps can be completed within the ",Object(o.b)("inlineCode",{parentName:"p"},"ONE PLATFORM"),"."),Object(o.b)("p",null,Object(o.b)("inlineCode",{parentName:"p"},"Resource Management Independent")),Object(o.b)("p",null,"It is also designed to be resource management independent, no matter if you have Apache Hadoop YARN, K8s, or just a container service, you will be able to run Submarine on top it."),Object(o.b)("h2",{id:"requirements-and-non-requirements"},"Requirements and non-requirements"),Object(o.b)("h3",{id:"notebook"},"Notebook"),Object(o.b)("p",null,"1) Users should be able to create, edit, delete a notebook. (P0)\n2) Notebooks can be persisted to storage and can be recovered if failure happens. (P0)\n3) Users can trace back to history versions of a notebook. (P1)\n4) Notebooks can be shared with different users. (P1)\n5) Users can define a list of parameters of a notebook (looks like parameters of the notebook's main function) to allow executing a notebook like a job. (P1)\n6) Different users can collaborate on the same notebook at the same time. (P2)"),Object(o.b)("p",null,"A running notebook instance is called notebook session (or session for short)."),Object(o.b)("h3",{id:"experiment"},"Experiment"),Object(o.b)("p",null,"Experiments of Submarine is an offline task. It could be a shell command, a Python command, a Spark job, a SQL query, or even a workflow. "),Object(o.b)("p",null,"The primary purposes of experiments under Submarine's context is to do training tasks, offline scoring, etc. However, experiment can be generalized to do other tasks as well."),Object(o.b)("p",null,"Major requirement of experiment: "),Object(o.b)("p",null,"1) Experiments can be submitted from UI/CLI/SDK.\n2) Experiments can be monitored/managed from UI/CLI/SDK.\n3) Experiments should not bind to one resource management platform (K8s/YARN)."),Object(o.b)("h4",{id:"type-of-experiments"},"Type of experiments"),Object(o.b)("p",null,Object(o.b)("img",{src:n(252).default})),Object(o.b)("p",null,"There're two types of experiments:\n",Object(o.b)("inlineCode",{parentName:"p"},"Adhoc experiments"),": which includes a Python/R/notebook, or even an adhoc Tensorflow/PyTorch task, etc. "),Object(o.b)("p",null,Object(o.b)("inlineCode",{parentName:"p"},"Predefined experiment library"),": This is specialized experiments, which including developed libraries such as CTR, BERT, etc. Users are only required to specify a few parameters such as input, output, hyper parameters, etc. Instead of worrying about where's training script/dependencies located."),Object(o.b)("h4",{id:"adhoc-experiment"},"Adhoc experiment"),Object(o.b)("p",null,"Requirements:"),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},"Allow run adhoc scripts."),Object(o.b)("li",{parentName:"ul"},"Allow model engineer, data scientist to run Tensorflow/Pytorch programs on YARN/K8s/Container-cloud. "),Object(o.b)("li",{parentName:"ul"},"Allow jobs easy access data/models in HDFS/s3, etc. "),Object(o.b)("li",{parentName:"ul"},"Support run distributed Tensorflow/Pytorch jobs with simple configs."),Object(o.b)("li",{parentName:"ul"},"Support run user-specified Docker images."),Object(o.b)("li",{parentName:"ul"},"Support specify GPU and other resources.")),Object(o.b)("h4",{id:"predefined-experiment-library"},"Predefined experiment library"),Object(o.b)("p",null,"Here's an example of predefined experiment library to train deepfm model: "),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},'{\n  "input": {\n    "train_data": ["hdfs:///user/submarine/data/tr.libsvm"],\n    "valid_data": ["hdfs:///user/submarine/data/va.libsvm"],\n    "test_data": ["hdfs:///user/submarine/data/te.libsvm"],\n    "type": "libsvm"\n  },\n  "output": {\n    "save_model_dir": "hdfs:///user/submarine/deepfm",\n    "metric": "auc"\n  },\n  "training": {\n    "batch_size" : 512,\n    "field_size": 39,\n    "num_epochs": 3,\n    "feature_size": 117581,\n    ...\n  }\n}\n')),Object(o.b)("p",null,"Predefined experiment libraries can be shared across users on the same platform, users can also add new or modified predefined experiment library via UI/REST API."),Object(o.b)("p",null,"We will also model AutoML, auto hyper-parameter tuning to predefined experiment library."),Object(o.b)("h4",{id:"pipeline"},"Pipeline"),Object(o.b)("p",null,"Pipeline is a special kind of experiment:"),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},"A pipeline is a DAG of experiments. "),Object(o.b)("li",{parentName:"ul"},"Can be also treated as a special kind of experiment."),Object(o.b)("li",{parentName:"ul"},"Users can submit/terminate a pipeline."),Object(o.b)("li",{parentName:"ul"},"Pipeline can be created/submitted via UI/API.")),Object(o.b)("h3",{id:"environment-profiles"},"Environment Profiles"),Object(o.b)("p",null,"Environment profiles (or environment for short) defines a set of libraries and when Docker is being used, a Docker image in order to run an experiment or a notebook. "),Object(o.b)("p",null,"Docker or VM image (such as AMI: Amazon Machine Images) defines the base layer of the environment. "),Object(o.b)("p",null,"On top of that, users can define a set of libraries (such as Python/R) to install."),Object(o.b)("p",null,"Users can save different environment configs which can be also shared across the platform. Environment profiles can be used to run a notebook (e.g. by choosing different kernel from Jupyter), or an experiment. Predefined experiment library includes what environment to use so users don't have to choose which environment to use."),Object(o.b)("p",null,"Environments can be added/listed/deleted/selected through CLI/SDK."),Object(o.b)("h3",{id:"model"},"Model"),Object(o.b)("h4",{id:"model-management"},"Model management"),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},"Model artifacts are generated by experiments or notebook."),Object(o.b)("li",{parentName:"ul"},"A model consists of artifacts from one or multiple files. "),Object(o.b)("li",{parentName:"ul"},"Users can choose to save, tag, version a produced model."),Object(o.b)("li",{parentName:"ul"},"Once The Model is saved, Users can do the online model serving or offline scoring of the model.")),Object(o.b)("h4",{id:"model-serving"},"Model serving"),Object(o.b)("p",null,"After model saved, users can specify a serving script, a model and create a web service to serve the model. "),Object(o.b)("p",null,'We call the web service to "endpoint". Users can manage (add/stop) model serving endpoints via CLI/API/UI.'),Object(o.b)("h3",{id:"metrics-for-training-job-and-model"},"Metrics for training job and model"),Object(o.b)("p",null,"Submarine-SDK provides tracking/metrics APIs, which allows developers to add tracking/metrics and view tracking/metrics from Submarine Workbench UI."),Object(o.b)("h3",{id:"deployment"},"Deployment"),Object(o.b)("p",null,"Submarine Services (See architecture overview below) should be deployed easily on-prem / on-cloud. Since there're more and more public cloud offering for compute/storage management on cloud, we need to support deploy Submarine compute-related workloads (such as notebook session, experiments, etc.) to cloud-managed clusters. "),Object(o.b)("p",null,"This also include Submarine may need to take input parameters from customers and create/manage clusters if needed. It is also a common requirement to use hybrid of on-prem/on-cloud clusters."),Object(o.b)("h3",{id:"security--access-control--user-management--quota-management"},"Security / Access Control / User Management / Quota Management"),Object(o.b)("p",null,"There're 4 kinds of objects need access-control: "),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},"Assets belong to Submarine system, which includes notebook, experiments and results, models, predefined experiment libraries, environment profiles."),Object(o.b)("li",{parentName:"ul"},"Data security. (Who owns what data, and what data can be accessed by each users). "),Object(o.b)("li",{parentName:"ul"},"User credentials. (Such as LDAP)."),Object(o.b)("li",{parentName:"ul"},"Other security, such as Git repo access, etc.")),Object(o.b)("p",null,"For the data security / user credentials / other security, it will be delegated to 3rd libraries such as Apache Ranger, IAM roles, etc. "),Object(o.b)("p",null,"Assets belong to Submarine system will be handled by Submarine itself."),Object(o.b)("p",null,"Here're operations which Submarine admin can do for users / teams which can be used to access Submarine's assets. "),Object(o.b)("p",null,Object(o.b)("strong",{parentName:"p"},"Operations for admins")," "),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},'Admin uses "User Management System" to onboard new users, upload user credentials, assign resource quotas, etc. '),Object(o.b)("li",{parentName:"ul"},"Admins can create new users, new teams, update user/team mappings. Or remove users/teams. "),Object(o.b)("li",{parentName:"ul"},"Admin can set resource quotas (if different from system default), permissions, upload/update necessary credentials (like Kerberos keytab) of a user."),Object(o.b)("li",{parentName:"ul"},"A DE/DS can also be an admin if the DE/DS has admin access. (Like a privileged user). This will be useful when a cluster is exclusively shared by a user or only shared by a small team."),Object(o.b)("li",{parentName:"ul"},Object(o.b)("inlineCode",{parentName:"li"},"Resource Quota Management System")," helps admin to manage resources quotas of teams, organizations. Resources can be machine resources like CPU/Memory/Disk, etc. It can also include non-machine resources like $$-based budgets.")),Object(o.b)("h3",{id:"dataset"},"Dataset"),Object(o.b)("p",null,"There's also need to tag dataset which will be used for training and shared across the platform by different users. "),Object(o.b)("p",null,"Like mentioned above, access to the actual data will be handled by 3rd party system like Apache Ranger / Hive Metastore which is out of the Submarine's scope."),Object(o.b)("h2",{id:"architecture-overview"},"Architecture Overview"),Object(o.b)("h3",{id:"architecture-diagram"},"Architecture Diagram"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"     +-----------------------------------------------------------------+\n     |            Submarine UI / CLI / REST API / SDK                  |\n     |                 Mini-Submarine                                  |\n     +-----------------------------------------------------------------+\n\n     +--------------------Submarine Server-----------------------------+\n     | +---------+ +---------+ +----------+ +----------+ +------------+|\n     | |Data set | |Notebooks| |Experiment| |Models    | |Servings    ||\n     | +---------+ +---------+ +----------+ +----------+ +------------+|\n     |-----------------------------------------------------------------|\n     |                                                                 |\n     | +-----------------+ +-----------------+ +---------------------+ |\n     | |Experiment       | |Compute Resource | |Other Management     | |\n     | |Manager          | |   Manager       | |Services             | |\n     | +-----------------+ +-----------------+ +---------------------+ |\n     |   Spark, template      YARN/K8s/Docker                          |\n     |   TF, PyTorch, pipeline                                         |\n     |                                                                 |\n     + +-----------------+                                             +\n     | |Submarine Meta   |                                             |\n     | |    Store        |                                             |\n     | +-----------------+                                             |\n     |                                                                 |\n     +-----------------------------------------------------------------+\n\n      (You can use http://stable.ascii-flow.appspot.com/#Draw\n      to draw such diagrams)\n")),Object(o.b)("p",null,Object(o.b)("inlineCode",{parentName:"p"},"Compute Resource Manager")," Helps to manage compute resources on-prem/on-cloud, this module can also handle cluster creation / management, etc."),Object(o.b)("p",null,Object(o.b)("inlineCode",{parentName:"p"},"Experiment Manager"),' Work with "Compute Resource Manager" to submit different kinds of workloads such as (distributed) Tensorflow / Pytorch, etc.'),Object(o.b)("p",null,Object(o.b)("inlineCode",{parentName:"p"},"Submarine SDK")," provides Java/Python/REST API to allow DS or other engineers to integrate into Submarine services. It also includes a ",Object(o.b)("inlineCode",{parentName:"p"},"mini-submarine")," component that launches Submarine components from a single Docker container (or a VM image)."),Object(o.b)("p",null,"Details of Submarine Server design can be found at ",Object(o.b)("a",{parentName:"p",href:"/docs/designDocs/submarine-server/architecture"},"submarine-server-design"),"."))}d.isMDXComponent=!0},209:function(e,t,n){"use strict";n.d(t,"a",(function(){return m})),n.d(t,"b",(function(){return u}));var a=n(0),r=n.n(a);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},o=Object.keys(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var c=r.a.createContext({}),d=function(e){var t=r.a.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},m=function(e){var t=d(e.components);return r.a.createElement(c.Provider,{value:t},e.children)},b={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},p=r.a.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,i=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),m=d(n),p=a,u=m["".concat(i,".").concat(p)]||m[p]||b[p]||o;return n?r.a.createElement(u,s(s({ref:t},c),{},{components:n})):r.a.createElement(u,s({ref:t},c))}));function u(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=p;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s.mdxType="string"==typeof e?e:a,i[1]=s;for(var c=2;c<o;c++)i[c]=n[c];return r.a.createElement.apply(null,i)}return r.a.createElement.apply(null,n)}p.displayName="MDXCreateElement"},252:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/experiments-7a09831687ecbc0e1dcf01b0c6f45445.png"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[85],{152:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return i})),n.d(t,"metadata",(function(){return s})),n.d(t,"toc",(function(){return l})),n.d(t,"default",(function(){return d}));var a=n(3),r=n(7),o=(n(0),n(194)),i={title:"Architecture and Requirment"},s={unversionedId:"designDocs/architecture-and-requirements",id:"version-0.6.0/designDocs/architecture-and-requirements",isDocsHomePage:!1,title:"Architecture and Requirment",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/designDocs/architecture-and-requirements.md",slug:"/designDocs/architecture-and-requirements",permalink:"/docs/designDocs/architecture-and-requirements",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/designDocs/architecture-and-requirements.md",version:"0.6.0",sidebar:"docs",previous:{title:"How To Contribute to Submarine",permalink:"/docs/community/contributing"},next:{title:"Implementation Notes",permalink:"/docs/designDocs/implementation-notes"}},l=[{value:"Terminology",id:"terminology",children:[]},{value:"Background",id:"background",children:[]},{value:"Machine Learning Workflows &amp; Pain points",id:"machine-learning-workflows--pain-points",children:[{value:"Pain #1 Complex workflow/steps from raw data to model, different tools needed by different steps, hard to make changes to workflow, and not error-proof",id:"pain-1-complex-workflowsteps-from-raw-data-to-model-different-tools-needed-by-different-steps-hard-to-make-changes-to-workflow-and-not-error-proof",children:[]},{value:"Pain #2 Dependencies of underlying resource management platform",id:"pain-2-dependencies-of-underlying-resource-management-platform",children:[]},{value:"Pain #3 Data scientist are forced to interact with lower-level platform components",id:"pain-3-data-scientist-are-forced-to-interact-with-lower-level-platform-components",children:[]},{value:"Pain #4 Comply with data security/governance requirements",id:"pain-4-comply-with-data-securitygovernance-requirements",children:[]},{value:"Pain #5 No good way to reduce routine ML code development",id:"pain-5-no-good-way-to-reduce-routine-ml-code-development",children:[]}]},{value:"Overview",id:"overview",children:[{value:"A little bit history",id:"a-little-bit-history",children:[]},{value:"Why Submarine?",id:"why-submarine",children:[]}]},{value:"Requirements and non-requirements",id:"requirements-and-non-requirements",children:[{value:"Notebook",id:"notebook",children:[]},{value:"Experiment",id:"experiment",children:[]},{value:"Environment Profiles",id:"environment-profiles",children:[]},{value:"Model",id:"model",children:[]},{value:"Metrics for training job and model",id:"metrics-for-training-job-and-model",children:[]},{value:"Deployment",id:"deployment",children:[]},{value:"Security / Access Control / User Management / Quota Management",id:"security--access-control--user-management--quota-management",children:[]},{value:"Dataset",id:"dataset",children:[]}]},{value:"Architecture Overview",id:"architecture-overview",children:[{value:"Architecture Diagram",id:"architecture-diagram",children:[]}]}],c={toc:l};function d(e){var t=e.components,i=Object(r.a)(e,["components"]);return Object(o.b)("wrapper",Object(a.a)({},c,i,{components:t,mdxType:"MDXLayout"}),Object(o.b)("h2",{id:"terminology"},"Terminology"),Object(o.b)("table",null,Object(o.b)("thead",{parentName:"table"},Object(o.b)("tr",{parentName:"thead"},Object(o.b)("th",{parentName:"tr",align:null},"Term"),Object(o.b)("th",{parentName:"tr",align:null},"Description"))),Object(o.b)("tbody",{parentName:"table"},Object(o.b)("tr",{parentName:"tbody"},Object(o.b)("td",{parentName:"tr",align:null},"User"),Object(o.b)("td",{parentName:"tr",align:null},"A single data-scientist/data-engineer. User has resource quota, credentials")),Object(o.b)("tr",{parentName:"tbody"},Object(o.b)("td",{parentName:"tr",align:null},"Team"),Object(o.b)("td",{parentName:"tr",align:null},"User belongs to one or more teams, teams have ACLs for artifacts sharing such as notebook content, model, etc.")),Object(o.b)("tr",{parentName:"tbody"},Object(o.b)("td",{parentName:"tr",align:null},"Admin"),Object(o.b)("td",{parentName:"tr",align:null},"Also called SRE, who manages user's quotas, credentials, team, and other components.")))),Object(o.b)("h2",{id:"background"},"Background"),Object(o.b)("p",null,"Everybody talks about machine learning today, and lots of companies are trying to leverage machine learning to push the business to the next level. Nowadays, as more and more developers, infrastructure software companies coming to this field, machine learning becomes more and more achievable. "),Object(o.b)("p",null,"In the last decade, the software industry has built many open source tools for machine learning to solve the pain points: "),Object(o.b)("ol",null,Object(o.b)("li",{parentName:"ol"},Object(o.b)("p",{parentName:"li"},"It was not easy to build machine learning algorithms manually, such as logistic regression, GBDT, and many other algorithms:\n",Object(o.b)("strong",{parentName:"p"},"Answer to that:")," Industries have open sourced many algorithm libraries, tools, and even pre-trained models so that data scientists can directly reuse these building blocks to hook up to their data without knowing intricate details inside these algorithms and models. ")),Object(o.b)("li",{parentName:"ol"},Object(o.b)("p",{parentName:"li"},'It was not easy to achieve "WYSIWYG, what you see is what you get" from IDEs: not easy to get output, visualization, troubleshooting experiences at the same place.\n',Object(o.b)("strong",{parentName:"p"},"Answer to that:")," Notebooks concept was added to this picture, notebook brought the experiences of interactive coding, sharing, visualization, debugging under the same user interface. There're popular open-source notebooks like Apache Zeppelin/Jupyter.")),Object(o.b)("li",{parentName:"ol"},Object(o.b)("p",{parentName:"li"},"It was not easy to manage dependencies: ML applications can run on one machine is hard to deploy on another machine because it has lots of libraries dependencies.\n",Object(o.b)("strong",{parentName:"p"},"Answer to that:"),' Containerization becomes popular and a standard to packaging dependencies to make it easier to "build once, run anywhere". ')),Object(o.b)("li",{parentName:"ol"},Object(o.b)("p",{parentName:"li"},"Fragmented tools, libraries were hard for ML engineers to learn. Experiences learned in one company are not naturally migratable to another company.\n",Object(o.b)("strong",{parentName:"p"},"Answer to that:")," A few dominant open-source frameworks reduced the overhead of learning too many different frameworks, concepts. Data-scientist can learn a few libraries such as Tensorflow/PyTorch, and a few high-level wrappers like Keras will be able to create your machine learning application from other open-source building blocks.")),Object(o.b)("li",{parentName:"ol"},Object(o.b)("p",{parentName:"li"},"Similarly, models built by one library (such as libsvm) were hard to be integrated into machine learning pipeline since there's no standard format.\n",Object(o.b)("strong",{parentName:"p"},"Answer to that:")," Industry has built successful open-source standard machine learning frameworks such as Tensorflow/PyTorch/Keras so their format can be easily shared across. And efforts to build an even more general model format such as ONNX.")),Object(o.b)("li",{parentName:"ol"},Object(o.b)("p",{parentName:"li"},"It was hard to build a data pipeline that flows/transform data from a raw data source to whatever required by ML applications.\n",Object(o.b)("strong",{parentName:"p"},"Answer to that:")," Open source big data industry plays an important role in providing, simplify, unify processes and building blocks for data flows, transformations, etc."))),Object(o.b)("p",null,"The machine learning industry is moving on the right track to solve major roadblocks. So what are the pain points now for companies which have machine learning needs? What can we help here? To answer this question, let's look at machine learning workflow first. "),Object(o.b)("h2",{id:"machine-learning-workflows--pain-points"},"Machine Learning Workflows & Pain points"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"1) From different data sources such as edge, clickstream, logs, etc.\n   => Land to data lakes  \n   \n2) From data lake, data transformation: \n   => Data transformations: Cleanup, remove invalid rows/columns, \n                            select columns, sampling, split train/test\n                            data-set, join table, etc.\n   => Data prepared for training.\n                            \n3) From prepared data: \n   => Training, model hyper-parameter tuning, cross-validation, etc. \n   => Models saved to storage. \n   \n4) From saved models: \n   => Model assurance, deployment, A/B testing, etc.\n   => Model deployed for online serving or offline scoring.\n")),Object(o.b)("p",null,"Typically data scientists responsible for item 2)-4), 1) typically handled by a different team (called Data Engineering team in many companies, some Data Engineering team also responsible for part of data transformation)"),Object(o.b)("h3",{id:"pain-1-complex-workflowsteps-from-raw-data-to-model-different-tools-needed-by-different-steps-hard-to-make-changes-to-workflow-and-not-error-proof"},"Pain ","#","1 Complex workflow/steps from raw data to model, different tools needed by different steps, hard to make changes to workflow, and not error-proof"),Object(o.b)("p",null,"It is a complex workflow from raw data to usable models, after talking to many different data scientists, we have learned that a typical procedure to train a new model and push to production can take months to 1-2 years. "),Object(o.b)("p",null,"It is also a wide skill set required by this workflow. For example, data transformation needs tools like Spark/Hive for large scale and tools like Pandas for a small scale. And model training needs to be switched between XGBoost, Tensorflow, Keras, PyTorch. Building a data pipeline requires Apache Airflow or Oozie. "),Object(o.b)("p",null,"Yes, there are great, standardized open-source tools built for many of such purposes. But how about changes need to be made for a particular part of the data pipeline? How about adding a few columns to the training data for experiments? How about training models, and push models to validation, A/B testing before rolling to production? All these steps need jumping between different tools, UIs, and very hard to make changes, and it is not error-proof during these procedures."),Object(o.b)("h3",{id:"pain-2-dependencies-of-underlying-resource-management-platform"},"Pain ","#","2 Dependencies of underlying resource management platform"),Object(o.b)("p",null,"To make jobs/services required by a machine learning platform to be able to run, we need an underlying resource management platform. There're some choices of resource management platform, and they have distinct advantages and disadvantages. "),Object(o.b)("p",null,"For example, there're many machine learning platform built on top of K8s. It is relatively easy to get a K8s from a cloud vendor, easy to orchestrate machine learning required services/daemons run on K8s. However, K8s doesn't offer good support jobs like Spark/Flink/Hive. So if your company has Spark/Flink/Hive running on YARN, there're gaps and a significant amount of work to move required jobs from YARN to K8s. Maintaining a separate K8s cluster is also overhead to Hadoop-based data infrastructure."),Object(o.b)("p",null,"Similarly, if your company's data pipelines are mostly built on top of cloud resources and SaaS offerings, asking you to install a separate YARN cluster to run a new machine learning platform doesn't make a lot of sense."),Object(o.b)("h3",{id:"pain-3-data-scientist-are-forced-to-interact-with-lower-level-platform-components"},"Pain ","#","3 Data scientist are forced to interact with lower-level platform components"),Object(o.b)("p",null,"In addition to the above pain, we do see Data Scientists are forced to learn underlying platform knowledge to be able to build a real-world machine learning workflow."),Object(o.b)("p",null,"For most of the data scientists we talked with, they're experts of ML algorithms/libraries, feature engineering, etc. They're also most familiar with Python, R, and some of them understand Spark, Hive, etc. "),Object(o.b)("p",null,"If they're asked to do interactions with lower-level components like fine-tuning a Spark job's performance; or troubleshooting job failed to launch because of resource constraints; or write a K8s/YARN job spec and mount volumes, set networks properly. They will scratch their heads and typically cannot perform these operations efficiently."),Object(o.b)("h3",{id:"pain-4-comply-with-data-securitygovernance-requirements"},"Pain ","#","4 Comply with data security/governance requirements"),Object(o.b)("p",null,"TODO: Add more details."),Object(o.b)("h3",{id:"pain-5-no-good-way-to-reduce-routine-ml-code-development"},"Pain ","#","5 No good way to reduce routine ML code development"),Object(o.b)("p",null,"After the data is prepared, the data scientist needs to do several routine tasks to build the ML pipeline. To get a sense of the existing the data set, it usually needs a split of the data set, the statistics of data set. These tasks have a common duplicate part of code, which reduces the efficiency of data scientists."),Object(o.b)("p",null,"An abstraction layer/framework to help the developer to boost ML pipeline development could be valuable. It's better than the developer only needs to fill callback function to focus on their key logic."),Object(o.b)("h1",{id:"submarine"},"Submarine"),Object(o.b)("h2",{id:"overview"},"Overview"),Object(o.b)("h3",{id:"a-little-bit-history"},"A little bit history"),Object(o.b)("p",null,"Initially, Submarine is built to solve problems of running deep learning jobs like Tensorflow/PyTorch on Apache Hadoop YARN, allows admin to monitor launched deep learning jobs, and manage generated models. "),Object(o.b)("p",null,"It was part of YARN initially, and code resides under ",Object(o.b)("inlineCode",{parentName:"p"},"hadoop-yarn-applications"),". Later, the community decided to convert it to be a subproject within Hadoop (Sibling project of YARN, HDFS, etc.) because we want to support other resource management platforms like K8s. And finally, we're reconsidering Submarine's charter, and the Hadoop community voted that it is the time to moved Submarine to a separate Apache TLP."),Object(o.b)("h3",{id:"why-submarine"},"Why Submarine?"),Object(o.b)("p",null,Object(o.b)("inlineCode",{parentName:"p"},"ONE PLATFORM")),Object(o.b)("p",null,"Submarine is the ONE PLATFORM to allow Data Scientists to create end-to-end machine learning workflow. ",Object(o.b)("inlineCode",{parentName:"p"},"ONE PLATFORM")," means it supports Data Scientists and data engineers to finish their jobs on the same platform without frequently switching their toolsets. From dataset exploring data pipeline creation, model training, and tuning, and push model to production. All these steps can be completed within the ",Object(o.b)("inlineCode",{parentName:"p"},"ONE PLATFORM"),"."),Object(o.b)("p",null,Object(o.b)("inlineCode",{parentName:"p"},"Resource Management Independent")),Object(o.b)("p",null,"It is also designed to be resource management independent, no matter if you have Apache Hadoop YARN, K8s, or just a container service, you will be able to run Submarine on top it."),Object(o.b)("h2",{id:"requirements-and-non-requirements"},"Requirements and non-requirements"),Object(o.b)("h3",{id:"notebook"},"Notebook"),Object(o.b)("p",null,"1) Users should be able to create, edit, delete a notebook. (P0)\n2) Notebooks can be persisted to storage and can be recovered if failure happens. (P0)\n3) Users can trace back to history versions of a notebook. (P1)\n4) Notebooks can be shared with different users. (P1)\n5) Users can define a list of parameters of a notebook (looks like parameters of the notebook's main function) to allow executing a notebook like a job. (P1)\n6) Different users can collaborate on the same notebook at the same time. (P2)"),Object(o.b)("p",null,"A running notebook instance is called notebook session (or session for short)."),Object(o.b)("h3",{id:"experiment"},"Experiment"),Object(o.b)("p",null,"Experiments of Submarine is an offline task. It could be a shell command, a Python command, a Spark job, a SQL query, or even a workflow. "),Object(o.b)("p",null,"The primary purposes of experiments under Submarine's context is to do training tasks, offline scoring, etc. However, experiment can be generalized to do other tasks as well."),Object(o.b)("p",null,"Major requirement of experiment: "),Object(o.b)("p",null,"1) Experiments can be submitted from UI/CLI/SDK.\n2) Experiments can be monitored/managed from UI/CLI/SDK.\n3) Experiments should not bind to one resource management platform (K8s/YARN)."),Object(o.b)("h4",{id:"type-of-experiments"},"Type of experiments"),Object(o.b)("p",null,Object(o.b)("img",{src:n(235).default})),Object(o.b)("p",null,"There're two types of experiments:\n",Object(o.b)("inlineCode",{parentName:"p"},"Adhoc experiments"),": which includes a Python/R/notebook, or even an adhoc Tensorflow/PyTorch task, etc. "),Object(o.b)("p",null,Object(o.b)("inlineCode",{parentName:"p"},"Predefined experiment library"),": This is specialized experiments, which including developed libraries such as CTR, BERT, etc. Users are only required to specify a few parameters such as input, output, hyper parameters, etc. Instead of worrying about where's training script/dependencies located."),Object(o.b)("h4",{id:"adhoc-experiment"},"Adhoc experiment"),Object(o.b)("p",null,"Requirements:"),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},"Allow run adhoc scripts."),Object(o.b)("li",{parentName:"ul"},"Allow model engineer, data scientist to run Tensorflow/Pytorch programs on YARN/K8s/Container-cloud. "),Object(o.b)("li",{parentName:"ul"},"Allow jobs easy access data/models in HDFS/s3, etc. "),Object(o.b)("li",{parentName:"ul"},"Support run distributed Tensorflow/Pytorch jobs with simple configs."),Object(o.b)("li",{parentName:"ul"},"Support run user-specified Docker images."),Object(o.b)("li",{parentName:"ul"},"Support specify GPU and other resources.")),Object(o.b)("h4",{id:"predefined-experiment-library"},"Predefined experiment library"),Object(o.b)("p",null,"Here's an example of predefined experiment library to train deepfm model: "),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},'{\n  "input": {\n    "train_data": ["hdfs:///user/submarine/data/tr.libsvm"],\n    "valid_data": ["hdfs:///user/submarine/data/va.libsvm"],\n    "test_data": ["hdfs:///user/submarine/data/te.libsvm"],\n    "type": "libsvm"\n  },\n  "output": {\n    "save_model_dir": "hdfs:///user/submarine/deepfm",\n    "metric": "auc"\n  },\n  "training": {\n    "batch_size" : 512,\n    "field_size": 39,\n    "num_epochs": 3,\n    "feature_size": 117581,\n    ...\n  }\n}\n')),Object(o.b)("p",null,"Predefined experiment libraries can be shared across users on the same platform, users can also add new or modified predefined experiment library via UI/REST API."),Object(o.b)("p",null,"We will also model AutoML, auto hyper-parameter tuning to predefined experiment library."),Object(o.b)("h4",{id:"pipeline"},"Pipeline"),Object(o.b)("p",null,"Pipeline is a special kind of experiment:"),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},"A pipeline is a DAG of experiments. "),Object(o.b)("li",{parentName:"ul"},"Can be also treated as a special kind of experiment."),Object(o.b)("li",{parentName:"ul"},"Users can submit/terminate a pipeline."),Object(o.b)("li",{parentName:"ul"},"Pipeline can be created/submitted via UI/API.")),Object(o.b)("h3",{id:"environment-profiles"},"Environment Profiles"),Object(o.b)("p",null,"Environment profiles (or environment for short) defines a set of libraries and when Docker is being used, a Docker image in order to run an experiment or a notebook. "),Object(o.b)("p",null,"Docker or VM image (such as AMI: Amazon Machine Images) defines the base layer of the environment. "),Object(o.b)("p",null,"On top of that, users can define a set of libraries (such as Python/R) to install."),Object(o.b)("p",null,"Users can save different environment configs which can be also shared across the platform. Environment profiles can be used to run a notebook (e.g. by choosing different kernel from Jupyter), or an experiment. Predefined experiment library includes what environment to use so users don't have to choose which environment to use."),Object(o.b)("p",null,"Environments can be added/listed/deleted/selected through CLI/SDK."),Object(o.b)("h3",{id:"model"},"Model"),Object(o.b)("h4",{id:"model-management"},"Model management"),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},"Model artifacts are generated by experiments or notebook."),Object(o.b)("li",{parentName:"ul"},"A model consists of artifacts from one or multiple files. "),Object(o.b)("li",{parentName:"ul"},"Users can choose to save, tag, version a produced model."),Object(o.b)("li",{parentName:"ul"},"Once The Model is saved, Users can do the online model serving or offline scoring of the model.")),Object(o.b)("h4",{id:"model-serving"},"Model serving"),Object(o.b)("p",null,"After model saved, users can specify a serving script, a model and create a web service to serve the model. "),Object(o.b)("p",null,'We call the web service to "endpoint". Users can manage (add/stop) model serving endpoints via CLI/API/UI.'),Object(o.b)("h3",{id:"metrics-for-training-job-and-model"},"Metrics for training job and model"),Object(o.b)("p",null,"Submarine-SDK provides tracking/metrics APIs, which allows developers to add tracking/metrics and view tracking/metrics from Submarine Workbench UI."),Object(o.b)("h3",{id:"deployment"},"Deployment"),Object(o.b)("p",null,"Submarine Services (See architecture overview below) should be deployed easily on-prem / on-cloud. Since there're more and more public cloud offering for compute/storage management on cloud, we need to support deploy Submarine compute-related workloads (such as notebook session, experiments, etc.) to cloud-managed clusters. "),Object(o.b)("p",null,"This also include Submarine may need to take input parameters from customers and create/manage clusters if needed. It is also a common requirement to use hybrid of on-prem/on-cloud clusters."),Object(o.b)("h3",{id:"security--access-control--user-management--quota-management"},"Security / Access Control / User Management / Quota Management"),Object(o.b)("p",null,"There're 4 kinds of objects need access-control: "),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},"Assets belong to Submarine system, which includes notebook, experiments and results, models, predefined experiment libraries, environment profiles."),Object(o.b)("li",{parentName:"ul"},"Data security. (Who owns what data, and what data can be accessed by each users). "),Object(o.b)("li",{parentName:"ul"},"User credentials. (Such as LDAP)."),Object(o.b)("li",{parentName:"ul"},"Other security, such as Git repo access, etc.")),Object(o.b)("p",null,"For the data security / user credentials / other security, it will be delegated to 3rd libraries such as Apache Ranger, IAM roles, etc. "),Object(o.b)("p",null,"Assets belong to Submarine system will be handled by Submarine itself."),Object(o.b)("p",null,"Here're operations which Submarine admin can do for users / teams which can be used to access Submarine's assets. "),Object(o.b)("p",null,Object(o.b)("strong",{parentName:"p"},"Operations for admins")," "),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},'Admin uses "User Management System" to onboard new users, upload user credentials, assign resource quotas, etc. '),Object(o.b)("li",{parentName:"ul"},"Admins can create new users, new teams, update user/team mappings. Or remove users/teams. "),Object(o.b)("li",{parentName:"ul"},"Admin can set resource quotas (if different from system default), permissions, upload/update necessary credentials (like Kerberos keytab) of a user."),Object(o.b)("li",{parentName:"ul"},"A DE/DS can also be an admin if the DE/DS has admin access. (Like a privileged user). This will be useful when a cluster is exclusively shared by a user or only shared by a small team."),Object(o.b)("li",{parentName:"ul"},Object(o.b)("inlineCode",{parentName:"li"},"Resource Quota Management System")," helps admin to manage resources quotas of teams, organizations. Resources can be machine resources like CPU/Memory/Disk, etc. It can also include non-machine resources like $$-based budgets.")),Object(o.b)("h3",{id:"dataset"},"Dataset"),Object(o.b)("p",null,"There's also need to tag dataset which will be used for training and shared across the platform by different users. "),Object(o.b)("p",null,"Like mentioned above, access to the actual data will be handled by 3rd party system like Apache Ranger / Hive Metastore which is out of the Submarine's scope."),Object(o.b)("h2",{id:"architecture-overview"},"Architecture Overview"),Object(o.b)("h3",{id:"architecture-diagram"},"Architecture Diagram"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"     +-----------------------------------------------------------------+\n     |            Submarine UI / CLI / REST API / SDK                  |\n     |                 Mini-Submarine                                  |\n     +-----------------------------------------------------------------+\n\n     +--------------------Submarine Server-----------------------------+\n     | +---------+ +---------+ +----------+ +----------+ +------------+|\n     | |Data set | |Notebooks| |Experiment| |Models    | |Servings    ||\n     | +---------+ +---------+ +----------+ +----------+ +------------+|\n     |-----------------------------------------------------------------|\n     |                                                                 |\n     | +-----------------+ +-----------------+ +---------------------+ |\n     | |Experiment       | |Compute Resource | |Other Management     | |\n     | |Manager          | |   Manager       | |Services             | |\n     | +-----------------+ +-----------------+ +---------------------+ |\n     |   Spark, template      YARN/K8s/Docker                          |\n     |   TF, PyTorch, pipeline                                         |\n     |                                                                 |\n     + +-----------------+                                             +\n     | |Submarine Meta   |                                             |\n     | |    Store        |                                             |\n     | +-----------------+                                             |\n     |                                                                 |\n     +-----------------------------------------------------------------+\n\n      (You can use http://stable.ascii-flow.appspot.com/#Draw\n      to draw such diagrams)\n")),Object(o.b)("p",null,Object(o.b)("inlineCode",{parentName:"p"},"Compute Resource Manager")," Helps to manage compute resources on-prem/on-cloud, this module can also handle cluster creation / management, etc."),Object(o.b)("p",null,Object(o.b)("inlineCode",{parentName:"p"},"Experiment Manager"),' Work with "Compute Resource Manager" to submit different kinds of workloads such as (distributed) Tensorflow / Pytorch, etc.'),Object(o.b)("p",null,Object(o.b)("inlineCode",{parentName:"p"},"Submarine SDK")," provides Java/Python/REST API to allow DS or other engineers to integrate into Submarine services. It also includes a ",Object(o.b)("inlineCode",{parentName:"p"},"mini-submarine")," component that launches Submarine components from a single Docker container (or a VM image)."),Object(o.b)("p",null,"Details of Submarine Server design can be found at ",Object(o.b)("a",{parentName:"p",href:"/docs/designDocs/submarine-server/architecture"},"submarine-server-design"),"."))}d.isMDXComponent=!0},194:function(e,t,n){"use strict";n.d(t,"a",(function(){return m})),n.d(t,"b",(function(){return u}));var a=n(0),r=n.n(a);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},o=Object.keys(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var c=r.a.createContext({}),d=function(e){var t=r.a.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},m=function(e){var t=d(e.components);return r.a.createElement(c.Provider,{value:t},e.children)},b={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},p=r.a.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,i=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),m=d(n),p=a,u=m["".concat(i,".").concat(p)]||m[p]||b[p]||o;return n?r.a.createElement(u,s(s({ref:t},c),{},{components:n})):r.a.createElement(u,s({ref:t},c))}));function u(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=p;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s.mdxType="string"==typeof e?e:a,i[1]=s;for(var c=2;c<o;c++)i[c]=n[c];return r.a.createElement.apply(null,i)}return r.a.createElement.apply(null,n)}p.displayName="MDXCreateElement"},235:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/experiments-7a09831687ecbc0e1dcf01b0c6f45445.png"}}]);
\ No newline at end of file
diff --git a/algolia.196bc542.js b/algolia.196bc542.js
new file mode 100644
index 0000000..28d3207
--- /dev/null
+++ b/algolia.196bc542.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[86],{207:function(n,w,o){}}]);
\ No newline at end of file
diff --git a/algolia.b845cb23.js b/algolia.b845cb23.js
deleted file mode 100644
index 8dd5026..0000000
--- a/algolia.b845cb23.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[97],{229:function(n,w,o){}}]);
\ No newline at end of file
diff --git a/algolia.29ca14dc.js b/algolia.d1b5720a.js
similarity index 88%
rename from algolia.29ca14dc.js
rename to algolia.d1b5720a.js
index 46122b7..3c23015 100644
--- a/algolia.29ca14dc.js
+++ b/algolia.d1b5720a.js
@@ -1,7 +1,7 @@
 exports.ids = [0];
 exports.modules = {
 
-/***/ 488:
+/***/ 471:
 /***/ (function(module, exports) {
 
 
diff --git a/b3da5595.2e01c1ae.js b/b3da5595.fd962026.js
similarity index 94%
rename from b3da5595.2e01c1ae.js
rename to b3da5595.fd962026.js
index 055271e..6045ed0 100644
--- a/b3da5595.2e01c1ae.js
+++ b/b3da5595.fd962026.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[98],{164:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return o})),n.d(t,"metadata",(function(){return c})),n.d(t,"toc",(function(){return s})),n.d(t,"default",(function(){return u}));var r=n(3),a=n(7),i=(n(0),n(209)),o={title:"How to Run Integration K8s Test"},c={unversionedId:"devDocs/IntegrationTestK8s",id:"devDocs/IntegrationTestK8s",isDocsHomePage:!1,title:"How to Run Integration K8s Test",description:"\x3c!---",source:"@site/docs/devDocs/IntegrationTestK8s.md",slug:"/devDocs/IntegrationTestK8s",permalink:"/docs/next/devDocs/IntegrationTestK8s",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/devDocs/IntegrationTestK8s.md",version:"current",sidebar:"docs",previous:{title:"Development Guide",permalink:"/docs/next/devDocs/Development"},next:{title:"How to Run Frontend Integration Test",permalink:"/docs/next/devDocs/IntegrationTestE2E"}},s=[{value:"Introduction",id:"introduction",children:[]},{value:"Run k8s test locally",id:"run-k8s-test-locally",children:[]},{value:"Run k8s test in GitHub Actions",id:"run-k8s-test-in-github-actions",children:[]}],l={toc:s};function u(e){var t=e.components,o=Object(a.a)(e,["components"]);return Object(i.b)("wrapper",Object(r.a)({},l,o,{components:t,mdxType:"MDXLayout"}),Object(i.b)("h2",{id:"introduction"},"Introduction"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"The test cases under the directory ",Object(i.b)("inlineCode",{parentName:"p"},"test-k8s")," are integration tests to ensure the correctness of the Submarine RESTful API.")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"You can run these tests either locally or on GitHub Actions."),Object(i.b)("ul",{parentName:"li"},Object(i.b)("li",{parentName:"ul"},"Before running the tests, the minikube (KinD) cluster must be created. "),Object(i.b)("li",{parentName:"ul"},"Then, compile and package the submarine project in ",Object(i.b)("inlineCode",{parentName:"li"},"submarine-dist")," directory for building a docker image. "),Object(i.b)("li",{parentName:"ul"},"In addition, the 8080 port in submarine-traefik should be forwarded.")))),Object(i.b)("h2",{id:"run-k8s-test-locally"},"Run k8s test locally"),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Ensure you have setup the KinD cluster or minikube cluster. If you haven't, follow this ",Object(i.b)("a",{parentName:"p",href:"https://minikube.sigs.k8s.io/docs/start/"},Object(i.b)("inlineCode",{parentName:"a"},"minikube tutorial")))),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Build the submarine from source and upgrade the server pod through this ",Object(i.b)("a",{parentName:"p",href:"./Development/#build-from-source"},Object(i.b)("inlineCode",{parentName:"a"},"guide")))),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Forward port"),Object(i.b)("pre",{parentName:"li"},Object(i.b)("code",{parentName:"pre",className:"language-bash"},"kubectl port-forward --address 0.0.0.0 service/submarine-traefik 8080:80\n"))),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},'Install the latest package "submarine-server-core" into the local repository, for use as a dependency in the module ',Object(i.b)("inlineCode",{parentName:"p"},"test-k8s")),Object(i.b)("pre",{parentName:"li"},Object(i.b)("code",{parentName:"pre",className:"language-bash"},"mvn install -DskipTests\n"))),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Execute the test command"),Object(i.b)("pre",{parentName:"li"},Object(i.b)("code",{parentName:"pre",className:"language-bash"},"mvn verify -DskipRat -pl :submarine-test-k8s -Phadoop-2.9 -B\n")))),Object(i.b)("p",null,Object(i.b)("img",{src:n(238).default})),Object(i.b)("h2",{id:"run-k8s-test-in-github-actions"},"Run k8s test in GitHub Actions"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Each time a code is submitted, GitHub Actions is triggered automatically.")))}u.isMDXComponent=!0},209:function(e,t,n){"use strict";n.d(t,"a",(function(){return b})),n.d(t,"b",(function(){return m}));var r=n(0),a=n.n(r);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function c(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=a.a.createContext({}),u=function(e){var t=a.a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):c(c({},t),e)),n},b=function(e){var t=u(e.components);return a.a.createElement(l.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},d=a.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,o=e.parentName,l=s(e,["components","mdxType","originalType","parentName"]),b=u(n),d=r,m=b["".concat(o,".").concat(d)]||b[d]||p[d]||i;return n?a.a.createElement(m,c(c({ref:t},l),{},{components:n})):a.a.createElement(m,c({ref:t},l))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=d;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c.mdxType="string"==typeof e?e:r,o[1]=c;for(var l=2;l<i;l++)o[l]=n[l];return a.a.createElement.apply(null,o)}return a.a.createElement.apply(null,n)}d.displayName="MDXCreateElement"},238:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/test-k8s-result-883d99774542cc9898f086937cb80190.png"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[87],{153:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return o})),n.d(t,"metadata",(function(){return c})),n.d(t,"toc",(function(){return s})),n.d(t,"default",(function(){return u}));var r=n(3),a=n(7),i=(n(0),n(194)),o={title:"How to Run Integration K8s Test"},c={unversionedId:"devDocs/IntegrationTestK8s",id:"devDocs/IntegrationTestK8s",isDocsHomePage:!1,title:"How to Run Integration K8s Test",description:"\x3c!---",source:"@site/docs/devDocs/IntegrationTestK8s.md",slug:"/devDocs/IntegrationTestK8s",permalink:"/docs/next/devDocs/IntegrationTestK8s",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/devDocs/IntegrationTestK8s.md",version:"current",sidebar:"docs",previous:{title:"Development Guide",permalink:"/docs/next/devDocs/Development"},next:{title:"How to Run Frontend Integration Test",permalink:"/docs/next/devDocs/IntegrationTestE2E"}},s=[{value:"Introduction",id:"introduction",children:[]},{value:"Run k8s test locally",id:"run-k8s-test-locally",children:[]},{value:"Run k8s test in GitHub Actions",id:"run-k8s-test-in-github-actions",children:[]}],l={toc:s};function u(e){var t=e.components,o=Object(a.a)(e,["components"]);return Object(i.b)("wrapper",Object(r.a)({},l,o,{components:t,mdxType:"MDXLayout"}),Object(i.b)("h2",{id:"introduction"},"Introduction"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"The test cases under the directory ",Object(i.b)("inlineCode",{parentName:"p"},"test-k8s")," are integration tests to ensure the correctness of the Submarine RESTful API.")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"You can run these tests either locally or on GitHub Actions."),Object(i.b)("ul",{parentName:"li"},Object(i.b)("li",{parentName:"ul"},"Before running the tests, the minikube (KinD) cluster must be created. "),Object(i.b)("li",{parentName:"ul"},"Then, compile and package the submarine project in ",Object(i.b)("inlineCode",{parentName:"li"},"submarine-dist")," directory for building a docker image. "),Object(i.b)("li",{parentName:"ul"},"In addition, the 8080 port in submarine-traefik should be forwarded.")))),Object(i.b)("h2",{id:"run-k8s-test-locally"},"Run k8s test locally"),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Ensure you have setup the KinD cluster or minikube cluster. If you haven't, follow this ",Object(i.b)("a",{parentName:"p",href:"https://minikube.sigs.k8s.io/docs/start/"},Object(i.b)("inlineCode",{parentName:"a"},"minikube tutorial")))),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Build the submarine from source and upgrade the server pod through this ",Object(i.b)("a",{parentName:"p",href:"./Development/#build-from-source"},Object(i.b)("inlineCode",{parentName:"a"},"guide")))),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Forward port"),Object(i.b)("pre",{parentName:"li"},Object(i.b)("code",{parentName:"pre",className:"language-bash"},"kubectl port-forward --address 0.0.0.0 service/submarine-traefik 8080:80\n"))),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},'Install the latest package "submarine-server-core" into the local repository, for use as a dependency in the module ',Object(i.b)("inlineCode",{parentName:"p"},"test-k8s")),Object(i.b)("pre",{parentName:"li"},Object(i.b)("code",{parentName:"pre",className:"language-bash"},"mvn install -DskipTests\n"))),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Execute the test command"),Object(i.b)("pre",{parentName:"li"},Object(i.b)("code",{parentName:"pre",className:"language-bash"},"mvn verify -DskipRat -pl :submarine-test-k8s -Phadoop-2.9 -B\n")))),Object(i.b)("p",null,Object(i.b)("img",{src:n(216).default})),Object(i.b)("h2",{id:"run-k8s-test-in-github-actions"},"Run k8s test in GitHub Actions"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Each time a code is submitted, GitHub Actions is triggered automatically.")))}u.isMDXComponent=!0},194:function(e,t,n){"use strict";n.d(t,"a",(function(){return b})),n.d(t,"b",(function(){return m}));var r=n(0),a=n.n(r);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function c(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=a.a.createContext({}),u=function(e){var t=a.a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):c(c({},t),e)),n},b=function(e){var t=u(e.components);return a.a.createElement(l.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},d=a.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,o=e.parentName,l=s(e,["components","mdxType","originalType","parentName"]),b=u(n),d=r,m=b["".concat(o,".").concat(d)]||b[d]||p[d]||i;return n?a.a.createElement(m,c(c({ref:t},l),{},{components:n})):a.a.createElement(m,c({ref:t},l))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=d;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c.mdxType="string"==typeof e?e:r,o[1]=c;for(var l=2;l<i;l++)o[l]=n[l];return a.a.createElement.apply(null,o)}return a.a.createElement.apply(null,n)}d.displayName="MDXCreateElement"},216:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/test-k8s-result-883d99774542cc9898f086937cb80190.png"}}]);
\ No newline at end of file
diff --git a/b60f7df5.b58ddb02.js b/b60f7df5.4cec88ae.js
similarity index 98%
rename from b60f7df5.b58ddb02.js
rename to b60f7df5.4cec88ae.js
index 52ce34e..a0d30d7 100644
--- a/b60f7df5.b58ddb02.js
+++ b/b60f7df5.4cec88ae.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[99],{165:function(e,t,r){"use strict";r.r(t),r.d(t,"frontMatter",(function(){return s})),r.d(t,"metadata",(function(){return o})),r.d(t,"toc",(function(){return l})),r.d(t,"default",(function(){return b}));var n=r(3),a=r(7),i=(r(0),r(209)),s={title:"Cluster Server Design - High-Availability"},o={unversionedId:"designDocs/wip-designs/submarine-clusterServer",id:"designDocs/wip-designs/submarine-clusterServer",isDocsHomePage:!1,title:"Cluster Server Design - High-Availability",description:"\x3c!--",source:"@site/docs/designDocs/wip-designs/submarine-clusterServer.md",slug:"/designDocs/wip-designs/submarine-clusterServer",permalink:"/docs/next/designDocs/wip-designs/submarine-clusterServer",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/designDocs/wip-designs/submarine-clusterServer.md",version:"current",sidebar:"docs",previous:{title:"Submarine Launcher",permalink:"/docs/next/designDocs/wip-designs/submarine-launcher"},next:{title:"Security Implementation",permalink:"/docs/next/designDocs/wip-designs/security-implementation"}},l=[{value:"Below is existing proposal:",id:"below-is-existing-proposal",children:[]},{value:"Introduction",id:"introduction",children:[]},{value:"Requirement",id:"requirement",children:[{value:"Cluster Metadata Center",id:"cluster-metadata-center",children:[]},{value:"Service discovery",id:"service-discovery",children:[]},{value:"Cluster event",id:"cluster-event",children:[]},{value:"Independence",id:"independence",children:[]},{value:"Disadvantages",id:"disadvantages",children:[]}]},{value:"System design",id:"system-design",children:[{value:"Universal design",id:"universal-design",children:[]},{value:"ClusterConfigure",id:"clusterconfigure",children:[]},{value:"ClusterServer",id:"clusterserver",children:[]},{value:"ClusterClient",id:"clusterclient",children:[]},{value:"ClusterMetadata",id:"clustermetadata",children:[]},{value:"Network fault tolerance",id:"network-fault-tolerance",children:[]},{value:"Cluster monitoring",id:"cluster-monitoring",children:[]},{value:"Atomix Raft algorithm library",id:"atomix-raft-algorithm-library",children:[]},{value:"Synchronize workbench notes",id:"synchronize-workbench-notes",children:[]},{value:"Listen for note update events",id:"listen-for-note-update-events",children:[]},{value:"Broadcast note update event",id:"broadcast-note-update-event",children:[]}]}],c={toc:l};function b(e){var t=e.components,r=Object(a.a)(e,["components"]);return Object(i.b)("wrapper",Object(n.a)({},c,r,{components:t,mdxType:"MDXLayout"}),Object(i.b)("div",{className:"admonition admonition-warning alert alert--danger"},Object(i.b)("div",{parentName:"div",className:"admonition-heading"},Object(i.b)("h5",{parentName:"div"},Object(i.b)("span",{parentName:"h5",className:"admonition-icon"},Object(i.b)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},Object(i.b)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"warning")),Object(i.b)("div",{parentName:"div",className:"admonition-content"},Object(i.b)("p",{parentName:"div"},"Please note that this design doc is working-in-progress and need more works to complete. "))),Object(i.b)("h2",{id:"below-is-existing-proposal"},"Below is existing proposal:"),Object(i.b)("h2",{id:"introduction"},"Introduction"),Object(i.b)("p",null,"The Submarine system contains a total of two daemon services, Submarine Server and Workbench Server."),Object(i.b)("p",null,"Submarine Server mainly provides job submission, job scheduling, job status monitoring, and model online service for Submarine."),Object(i.b)("p",null,"Workbench Server is mainly for algorithm users to provide algorithm development, Python/Spark interpreter operation, and other services through Notebook."),Object(i.b)("p",null,"The goal of the Submarine project is to provide high availability and high-reliability services for big data processing,\nalgorithm development, job scheduling, model online services, model batch, and incremental updates. "),Object(i.b)("p",null,"In addition to the high availability of big data and machine learning frameworks,\nthe high availability of Submarine Server and Workbench Server itself is a key consideration."),Object(i.b)("h2",{id:"requirement"},"Requirement"),Object(i.b)("h3",{id:"cluster-metadata-center"},"Cluster Metadata Center"),Object(i.b)("p",null,"Multiple Submarine (or Workbench) Server processes create a Submarine Cluster through the RAFT algorithm library. "),Object(i.b)("p",null,"The cluster internally maintains a metadata center. All servers can operate the metadata. "),Object(i.b)("p",null,"The RAFT algorithm ensures that multiple processes are simultaneously co-located. "),Object(i.b)("p",null,"A data modification will not cause problems such as mutual coverage and dirty data."),Object(i.b)("p",null,"This metadata center stores data by means of key-value pairs. it can store/support a variety of data,\nbut it should be noted that metadata is only suitable for storing small amounts of data and cannot be used to replace data storage."),Object(i.b)("h3",{id:"service-discovery"},"Service discovery"),Object(i.b)("p",null,"By storing the information of the service or process in the metadata center, we can easily find the information of the service or process we need in any place,\nfor example, the IP address and port where the Python interpreter will be the process. Information is stored in metadata,\nand other services can easily find process information through process IDs and connect to provide service discovery capabilities."),Object(i.b)("h3",{id:"cluster-event"},"Cluster event"),Object(i.b)("p",null,"In the entire Submarine cluster, the servers can communicate with each other and other child processes to send cluster events to each other. "),Object(i.b)("p",null,"The service or process processes the corresponding programs according to the cluster events. For example,\nthe Workbench Server can be managed to Python. The interpreter process sends a shutdown event that controls the operation of the services and individual subprocesses throughout the cluster."),Object(i.b)("p",null,"Cluster events support both broadcast and separate delivery capabilities."),Object(i.b)("h3",{id:"independence"},"Independence"),Object(i.b)("p",null,"We implement Submarine's clustering capabilities through the RAFT algorithm library, without relying on any external services (e.g. Zookeeper, Etcd, etc.)"),Object(i.b)("h3",{id:"disadvantages"},"Disadvantages"),Object(i.b)("p",null,"Because the RAFT algorithm requires more than half of the servers available to ensure the normality of the RAFT algorithm,\nif we need to turn on the clustering capabilities of Submarine (Workbench) Server, when more than half of the servers are unavailable,\nsome programs may appear abnormal. Of course, we also detected this in the system, downgrading the system or refusing to provide service status."),Object(i.b)("h2",{id:"system-design"},"System design"),Object(i.b)("h3",{id:"universal-design"},"Universal design"),Object(i.b)("p",null,"Modular design, Submarine (Workbench) Server exists in the Submarine system, these two services need to provide clustering capabilities,\nso we abstract the cluster function into a separate module for development so that Submarine (Workbench) Server can reuse the cluster function module."),Object(i.b)("h3",{id:"clusterconfigure"},"ClusterConfigure"),Object(i.b)("p",null,"Add a ",Object(i.b)("inlineCode",{parentName:"p"},"submarine.server.addr")," and ",Object(i.b)("inlineCode",{parentName:"p"},"workbench.server.addr")," configuration items in ",Object(i.b)("inlineCode",{parentName:"p"},"submarine-site.xml"),", ",Object(i.b)("inlineCode",{parentName:"p"},"submarine.server.addr=ip1, ip2, ip3"),",\nthrough the IP list, the RAFT algorithm module in the server process can Cluster with other server processes."),Object(i.b)("h3",{id:"clusterserver"},"ClusterServer"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"The ClusterServer module encapsulates the RAFT algorithm module, which can create a service cluster and read and write metadata based on the two configuration items submarine.server.addr or workbench.server.addr.")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"The cluster management service runs in each submarine server;")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"The cluster management service establishes a cluster by using the atomix RaftServer class of the Raft algorithm library, maintains the ClusterStateMachine,\nand manages the service state metadata of each submarine server through the PutCommand, GetQuery, and DeleteCommand operation commands."))),Object(i.b)("h3",{id:"clusterclient"},"ClusterClient"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"The ClusterClient module encapsulates the RAFT algorithm client module, which can communicate with the cluster according to the two configuration items ",Object(i.b)("inlineCode",{parentName:"p"},"submarine.server.addr")," or ",Object(i.b)("inlineCode",{parentName:"p"},"workbench.server.addr"),",\nread and write metadata, and write the IP and port information of the client process. Into the cluster's metadata center.")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"The cluster management client runs in each submarine server and submarine Interpreter process;")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"The cluster management client manages the submarine server and submarine Interpreter process state (metadata information)\nin the ClusterStateMachine by using the atomix RaftClient class of the Raft library to connect to the atomix RaftServer. ")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"When the submarine server and Submarine Interpreter processes are started, they are added to the ClusterStateMachine and are removed from the ClusterStateMachine ")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"when the Submarine Server and Submarine Interpreter processes are closed."))),Object(i.b)("h3",{id:"clustermetadata"},"ClusterMetadata"),Object(i.b)("p",null,"Metadata stores metadata information in a KV key-value pair\u3002\nServerMeta\uff1akey='host:port'\uff0cvalue= {SERVER_HOST=...\uff0cSERVER_PORT=...\uff0c...}"),Object(i.b)("table",null,Object(i.b)("thead",{parentName:"table"},Object(i.b)("tr",{parentName:"thead"},Object(i.b)("th",{parentName:"tr",align:null},"Name"),Object(i.b)("th",{parentName:"tr",align:null},"Description"))),Object(i.b)("tbody",{parentName:"table"},Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"SUBMARINE_SERVER_HOST"),Object(i.b)("td",{parentName:"tr",align:null},"Submarine server IP")),Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"SUBMARINE_SERVER_PORT"),Object(i.b)("td",{parentName:"tr",align:null},"Submarine server port")),Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"WORKBENCH_SERVER_HOST"),Object(i.b)("td",{parentName:"tr",align:null},"Submarine workbench server IP")),Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"WORKBENCH_SERVER_PORT"),Object(i.b)("td",{parentName:"tr",align:null},"Submarine workbench server port")))),Object(i.b)("p",null,"InterpreterMeta\uff1akey=InterpreterGroupId\uff0cvalue={INTP_TSERVER_HOST=...\uff0c...}"),Object(i.b)("table",null,Object(i.b)("thead",{parentName:"table"},Object(i.b)("tr",{parentName:"thead"},Object(i.b)("th",{parentName:"tr",align:null},"Name"),Object(i.b)("th",{parentName:"tr",align:null},"Description"))),Object(i.b)("tbody",{parentName:"table"},Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"INTP_TSERVER_HOST"),Object(i.b)("td",{parentName:"tr",align:null},"Submarine Interpreter Thrift IP")),Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"INTP_TSERVER_PORT"),Object(i.b)("td",{parentName:"tr",align:null},"Submarine Interpreter Thrift port")),Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"INTP_START_TIME"),Object(i.b)("td",{parentName:"tr",align:null},"Submarine Interpreter start time")),Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"HEARTBEAT"),Object(i.b)("td",{parentName:"tr",align:null},"Submarine Interpreter heartbeat time")))),Object(i.b)("h3",{id:"network-fault-tolerance"},"Network fault tolerance"),Object(i.b)("p",null,"In a distributed environment, there may be network anomalies, network delays, or service exceptions. After submitting metadata to the cluster,\ncheck whether the submission is successful. After the submission fails, save the metadata in the local message queue. A separate commit thread to retry;"),Object(i.b)("h3",{id:"cluster-monitoring"},"Cluster monitoring"),Object(i.b)("p",null,"The cluster needs to monitor whether the Submarine Server and Submarine-Interpreter processes are working properly."),Object(i.b)("p",null,"The Submarine Server and Submarine Interpreter processes periodically send heartbeats to update their own timestamps in the cluster metadata. "),Object(i.b)("p",null,"The Submarine Server with Leader identity periodically checks the timestamps of the Submarine Server and Submarine Interpreter processes to clear the timeout services and processes."),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"The cluster monitoring module runs in each Submarine Server and Submarine Interpreter process,\nperiodically sending heartbeat data of the service or process to the cluster;")),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"When the cluster monitoring module runs in Submarine Server, it sends the heartbeat to the cluster's ClusterStateMachine.\nIf the cluster does not receive heartbeat information for a long time, Indicates that the service or process is abnormal and unavailable.")),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Resource usage statistics strategy, in order to avoid the instantaneous high peak and low peak of the server,\nthe cluster monitoring will collect the average resource usage in the most recent period for reporting, and improve the reasonable line and effectiveness of the server resources as much as possible;")),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"When the cluster monitoring module runs in the Submarine Server, it checks the heartbeat data of each Submarine Server and Submarine Interpreter process.\nIf it times out, it considers that the service or process is abnormally unavailable and removes it from the cluster."))),Object(i.b)("h3",{id:"atomix-raft-algorithm-library"},"Atomix Raft algorithm library"),Object(i.b)("p",null,"In order to reduce the deployment complexity of distributed mode, submarine server does not use Zookeeper to build a distributed cluster.\nMultiple submarine server groups are built into distributed clusters by using the Raft algorithm in submarine server.\nThe Raft algorithm is involved by atomix lib of atomix that has passed Jepsen consistency verification."),Object(i.b)("h3",{id:"synchronize-workbench-notes"},"Synchronize workbench notes"),Object(i.b)("p",null,"In cluster mode, the user creates, modifies, and deletes the note on any of the servers.\nAll need to be notified to all the servers in the cluster to synchronize the update of Notebook.\nFailure to do so will result in the user not being able to continue while switching to another server."),Object(i.b)("h3",{id:"listen-for-note-update-events"},"Listen for note update events"),Object(i.b)("p",null,"Listen for the NEW_NOTE, DEL_NOTE, REMOVE_NOTE_TO_TRASH ... event of the notebook in the NotebookServer#onMessage() function."),Object(i.b)("h3",{id:"broadcast-note-update-event"},"Broadcast note update event"),Object(i.b)("p",null,"The note is refreshed by notifying the event to all Submarine servers in the cluster via messaging Service."))}b.isMDXComponent=!0},209:function(e,t,r){"use strict";r.d(t,"a",(function(){return u})),r.d(t,"b",(function(){return p}));var n=r(0),a=r.n(n);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function s(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?s(Object(r),!0).forEach((function(t){i(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):s(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var c=a.a.createContext({}),b=function(e){var t=a.a.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},u=function(e){var t=b(e.components);return a.a.createElement(c.Provider,{value:t},e.children)},d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},m=a.a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),u=b(r),m=n,p=u["".concat(s,".").concat(m)]||u[m]||d[m]||i;return r?a.a.createElement(p,o(o({ref:t},c),{},{components:r})):a.a.createElement(p,o({ref:t},c))}));function p(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,s=new Array(i);s[0]=m;var o={};for(var l in t)hasOwnProperty.call(t,l)&&(o[l]=t[l]);o.originalType=e,o.mdxType="string"==typeof e?e:n,s[1]=o;for(var c=2;c<i;c++)s[c]=r[c];return a.a.createElement.apply(null,s)}return a.a.createElement.apply(null,r)}m.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[88],{154:function(e,t,r){"use strict";r.r(t),r.d(t,"frontMatter",(function(){return s})),r.d(t,"metadata",(function(){return o})),r.d(t,"toc",(function(){return l})),r.d(t,"default",(function(){return b}));var n=r(3),a=r(7),i=(r(0),r(194)),s={title:"Cluster Server Design - High-Availability"},o={unversionedId:"designDocs/wip-designs/submarine-clusterServer",id:"designDocs/wip-designs/submarine-clusterServer",isDocsHomePage:!1,title:"Cluster Server Design - High-Availability",description:"\x3c!--",source:"@site/docs/designDocs/wip-designs/submarine-clusterServer.md",slug:"/designDocs/wip-designs/submarine-clusterServer",permalink:"/docs/next/designDocs/wip-designs/submarine-clusterServer",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/designDocs/wip-designs/submarine-clusterServer.md",version:"current",sidebar:"docs",previous:{title:"Submarine Launcher",permalink:"/docs/next/designDocs/wip-designs/submarine-launcher"},next:{title:"Security Implementation",permalink:"/docs/next/designDocs/wip-designs/security-implementation"}},l=[{value:"Below is existing proposal:",id:"below-is-existing-proposal",children:[]},{value:"Introduction",id:"introduction",children:[]},{value:"Requirement",id:"requirement",children:[{value:"Cluster Metadata Center",id:"cluster-metadata-center",children:[]},{value:"Service discovery",id:"service-discovery",children:[]},{value:"Cluster event",id:"cluster-event",children:[]},{value:"Independence",id:"independence",children:[]},{value:"Disadvantages",id:"disadvantages",children:[]}]},{value:"System design",id:"system-design",children:[{value:"Universal design",id:"universal-design",children:[]},{value:"ClusterConfigure",id:"clusterconfigure",children:[]},{value:"ClusterServer",id:"clusterserver",children:[]},{value:"ClusterClient",id:"clusterclient",children:[]},{value:"ClusterMetadata",id:"clustermetadata",children:[]},{value:"Network fault tolerance",id:"network-fault-tolerance",children:[]},{value:"Cluster monitoring",id:"cluster-monitoring",children:[]},{value:"Atomix Raft algorithm library",id:"atomix-raft-algorithm-library",children:[]},{value:"Synchronize workbench notes",id:"synchronize-workbench-notes",children:[]},{value:"Listen for note update events",id:"listen-for-note-update-events",children:[]},{value:"Broadcast note update event",id:"broadcast-note-update-event",children:[]}]}],c={toc:l};function b(e){var t=e.components,r=Object(a.a)(e,["components"]);return Object(i.b)("wrapper",Object(n.a)({},c,r,{components:t,mdxType:"MDXLayout"}),Object(i.b)("div",{className:"admonition admonition-warning alert alert--danger"},Object(i.b)("div",{parentName:"div",className:"admonition-heading"},Object(i.b)("h5",{parentName:"div"},Object(i.b)("span",{parentName:"h5",className:"admonition-icon"},Object(i.b)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},Object(i.b)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"warning")),Object(i.b)("div",{parentName:"div",className:"admonition-content"},Object(i.b)("p",{parentName:"div"},"Please note that this design doc is working-in-progress and need more works to complete. "))),Object(i.b)("h2",{id:"below-is-existing-proposal"},"Below is existing proposal:"),Object(i.b)("h2",{id:"introduction"},"Introduction"),Object(i.b)("p",null,"The Submarine system contains a total of two daemon services, Submarine Server and Workbench Server."),Object(i.b)("p",null,"Submarine Server mainly provides job submission, job scheduling, job status monitoring, and model online service for Submarine."),Object(i.b)("p",null,"Workbench Server is mainly for algorithm users to provide algorithm development, Python/Spark interpreter operation, and other services through Notebook."),Object(i.b)("p",null,"The goal of the Submarine project is to provide high availability and high-reliability services for big data processing,\nalgorithm development, job scheduling, model online services, model batch, and incremental updates. "),Object(i.b)("p",null,"In addition to the high availability of big data and machine learning frameworks,\nthe high availability of Submarine Server and Workbench Server itself is a key consideration."),Object(i.b)("h2",{id:"requirement"},"Requirement"),Object(i.b)("h3",{id:"cluster-metadata-center"},"Cluster Metadata Center"),Object(i.b)("p",null,"Multiple Submarine (or Workbench) Server processes create a Submarine Cluster through the RAFT algorithm library. "),Object(i.b)("p",null,"The cluster internally maintains a metadata center. All servers can operate the metadata. "),Object(i.b)("p",null,"The RAFT algorithm ensures that multiple processes are simultaneously co-located. "),Object(i.b)("p",null,"A data modification will not cause problems such as mutual coverage and dirty data."),Object(i.b)("p",null,"This metadata center stores data by means of key-value pairs. it can store/support a variety of data,\nbut it should be noted that metadata is only suitable for storing small amounts of data and cannot be used to replace data storage."),Object(i.b)("h3",{id:"service-discovery"},"Service discovery"),Object(i.b)("p",null,"By storing the information of the service or process in the metadata center, we can easily find the information of the service or process we need in any place,\nfor example, the IP address and port where the Python interpreter will be the process. Information is stored in metadata,\nand other services can easily find process information through process IDs and connect to provide service discovery capabilities."),Object(i.b)("h3",{id:"cluster-event"},"Cluster event"),Object(i.b)("p",null,"In the entire Submarine cluster, the servers can communicate with each other and other child processes to send cluster events to each other. "),Object(i.b)("p",null,"The service or process processes the corresponding programs according to the cluster events. For example,\nthe Workbench Server can be managed to Python. The interpreter process sends a shutdown event that controls the operation of the services and individual subprocesses throughout the cluster."),Object(i.b)("p",null,"Cluster events support both broadcast and separate delivery capabilities."),Object(i.b)("h3",{id:"independence"},"Independence"),Object(i.b)("p",null,"We implement Submarine's clustering capabilities through the RAFT algorithm library, without relying on any external services (e.g. Zookeeper, Etcd, etc.)"),Object(i.b)("h3",{id:"disadvantages"},"Disadvantages"),Object(i.b)("p",null,"Because the RAFT algorithm requires more than half of the servers available to ensure the normality of the RAFT algorithm,\nif we need to turn on the clustering capabilities of Submarine (Workbench) Server, when more than half of the servers are unavailable,\nsome programs may appear abnormal. Of course, we also detected this in the system, downgrading the system or refusing to provide service status."),Object(i.b)("h2",{id:"system-design"},"System design"),Object(i.b)("h3",{id:"universal-design"},"Universal design"),Object(i.b)("p",null,"Modular design, Submarine (Workbench) Server exists in the Submarine system, these two services need to provide clustering capabilities,\nso we abstract the cluster function into a separate module for development so that Submarine (Workbench) Server can reuse the cluster function module."),Object(i.b)("h3",{id:"clusterconfigure"},"ClusterConfigure"),Object(i.b)("p",null,"Add a ",Object(i.b)("inlineCode",{parentName:"p"},"submarine.server.addr")," and ",Object(i.b)("inlineCode",{parentName:"p"},"workbench.server.addr")," configuration items in ",Object(i.b)("inlineCode",{parentName:"p"},"submarine-site.xml"),", ",Object(i.b)("inlineCode",{parentName:"p"},"submarine.server.addr=ip1, ip2, ip3"),",\nthrough the IP list, the RAFT algorithm module in the server process can Cluster with other server processes."),Object(i.b)("h3",{id:"clusterserver"},"ClusterServer"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"The ClusterServer module encapsulates the RAFT algorithm module, which can create a service cluster and read and write metadata based on the two configuration items submarine.server.addr or workbench.server.addr.")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"The cluster management service runs in each submarine server;")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"The cluster management service establishes a cluster by using the atomix RaftServer class of the Raft algorithm library, maintains the ClusterStateMachine,\nand manages the service state metadata of each submarine server through the PutCommand, GetQuery, and DeleteCommand operation commands."))),Object(i.b)("h3",{id:"clusterclient"},"ClusterClient"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"The ClusterClient module encapsulates the RAFT algorithm client module, which can communicate with the cluster according to the two configuration items ",Object(i.b)("inlineCode",{parentName:"p"},"submarine.server.addr")," or ",Object(i.b)("inlineCode",{parentName:"p"},"workbench.server.addr"),",\nread and write metadata, and write the IP and port information of the client process. Into the cluster's metadata center.")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"The cluster management client runs in each submarine server and submarine Interpreter process;")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"The cluster management client manages the submarine server and submarine Interpreter process state (metadata information)\nin the ClusterStateMachine by using the atomix RaftClient class of the Raft library to connect to the atomix RaftServer. ")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"When the submarine server and Submarine Interpreter processes are started, they are added to the ClusterStateMachine and are removed from the ClusterStateMachine ")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"when the Submarine Server and Submarine Interpreter processes are closed."))),Object(i.b)("h3",{id:"clustermetadata"},"ClusterMetadata"),Object(i.b)("p",null,"Metadata stores metadata information in a KV key-value pair\u3002\nServerMeta\uff1akey='host:port'\uff0cvalue= {SERVER_HOST=...\uff0cSERVER_PORT=...\uff0c...}"),Object(i.b)("table",null,Object(i.b)("thead",{parentName:"table"},Object(i.b)("tr",{parentName:"thead"},Object(i.b)("th",{parentName:"tr",align:null},"Name"),Object(i.b)("th",{parentName:"tr",align:null},"Description"))),Object(i.b)("tbody",{parentName:"table"},Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"SUBMARINE_SERVER_HOST"),Object(i.b)("td",{parentName:"tr",align:null},"Submarine server IP")),Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"SUBMARINE_SERVER_PORT"),Object(i.b)("td",{parentName:"tr",align:null},"Submarine server port")),Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"WORKBENCH_SERVER_HOST"),Object(i.b)("td",{parentName:"tr",align:null},"Submarine workbench server IP")),Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"WORKBENCH_SERVER_PORT"),Object(i.b)("td",{parentName:"tr",align:null},"Submarine workbench server port")))),Object(i.b)("p",null,"InterpreterMeta\uff1akey=InterpreterGroupId\uff0cvalue={INTP_TSERVER_HOST=...\uff0c...}"),Object(i.b)("table",null,Object(i.b)("thead",{parentName:"table"},Object(i.b)("tr",{parentName:"thead"},Object(i.b)("th",{parentName:"tr",align:null},"Name"),Object(i.b)("th",{parentName:"tr",align:null},"Description"))),Object(i.b)("tbody",{parentName:"table"},Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"INTP_TSERVER_HOST"),Object(i.b)("td",{parentName:"tr",align:null},"Submarine Interpreter Thrift IP")),Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"INTP_TSERVER_PORT"),Object(i.b)("td",{parentName:"tr",align:null},"Submarine Interpreter Thrift port")),Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"INTP_START_TIME"),Object(i.b)("td",{parentName:"tr",align:null},"Submarine Interpreter start time")),Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"HEARTBEAT"),Object(i.b)("td",{parentName:"tr",align:null},"Submarine Interpreter heartbeat time")))),Object(i.b)("h3",{id:"network-fault-tolerance"},"Network fault tolerance"),Object(i.b)("p",null,"In a distributed environment, there may be network anomalies, network delays, or service exceptions. After submitting metadata to the cluster,\ncheck whether the submission is successful. After the submission fails, save the metadata in the local message queue. A separate commit thread to retry;"),Object(i.b)("h3",{id:"cluster-monitoring"},"Cluster monitoring"),Object(i.b)("p",null,"The cluster needs to monitor whether the Submarine Server and Submarine-Interpreter processes are working properly."),Object(i.b)("p",null,"The Submarine Server and Submarine Interpreter processes periodically send heartbeats to update their own timestamps in the cluster metadata. "),Object(i.b)("p",null,"The Submarine Server with Leader identity periodically checks the timestamps of the Submarine Server and Submarine Interpreter processes to clear the timeout services and processes."),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"The cluster monitoring module runs in each Submarine Server and Submarine Interpreter process,\nperiodically sending heartbeat data of the service or process to the cluster;")),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"When the cluster monitoring module runs in Submarine Server, it sends the heartbeat to the cluster's ClusterStateMachine.\nIf the cluster does not receive heartbeat information for a long time, Indicates that the service or process is abnormal and unavailable.")),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Resource usage statistics strategy, in order to avoid the instantaneous high peak and low peak of the server,\nthe cluster monitoring will collect the average resource usage in the most recent period for reporting, and improve the reasonable line and effectiveness of the server resources as much as possible;")),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"When the cluster monitoring module runs in the Submarine Server, it checks the heartbeat data of each Submarine Server and Submarine Interpreter process.\nIf it times out, it considers that the service or process is abnormally unavailable and removes it from the cluster."))),Object(i.b)("h3",{id:"atomix-raft-algorithm-library"},"Atomix Raft algorithm library"),Object(i.b)("p",null,"In order to reduce the deployment complexity of distributed mode, submarine server does not use Zookeeper to build a distributed cluster.\nMultiple submarine server groups are built into distributed clusters by using the Raft algorithm in submarine server.\nThe Raft algorithm is involved by atomix lib of atomix that has passed Jepsen consistency verification."),Object(i.b)("h3",{id:"synchronize-workbench-notes"},"Synchronize workbench notes"),Object(i.b)("p",null,"In cluster mode, the user creates, modifies, and deletes the note on any of the servers.\nAll need to be notified to all the servers in the cluster to synchronize the update of Notebook.\nFailure to do so will result in the user not being able to continue while switching to another server."),Object(i.b)("h3",{id:"listen-for-note-update-events"},"Listen for note update events"),Object(i.b)("p",null,"Listen for the NEW_NOTE, DEL_NOTE, REMOVE_NOTE_TO_TRASH ... event of the notebook in the NotebookServer#onMessage() function."),Object(i.b)("h3",{id:"broadcast-note-update-event"},"Broadcast note update event"),Object(i.b)("p",null,"The note is refreshed by notifying the event to all Submarine servers in the cluster via messaging Service."))}b.isMDXComponent=!0},194:function(e,t,r){"use strict";r.d(t,"a",(function(){return u})),r.d(t,"b",(function(){return p}));var n=r(0),a=r.n(n);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function s(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?s(Object(r),!0).forEach((function(t){i(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):s(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var c=a.a.createContext({}),b=function(e){var t=a.a.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},u=function(e){var t=b(e.components);return a.a.createElement(c.Provider,{value:t},e.children)},d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},m=a.a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),u=b(r),m=n,p=u["".concat(s,".").concat(m)]||u[m]||d[m]||i;return r?a.a.createElement(p,o(o({ref:t},c),{},{components:r})):a.a.createElement(p,o({ref:t},c))}));function p(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,s=new Array(i);s[0]=m;var o={};for(var l in t)hasOwnProperty.call(t,l)&&(o[l]=t[l]);o.originalType=e,o.mdxType="string"==typeof e?e:n,s[1]=o;for(var c=2;c<i;c++)s[c]=r[c];return a.a.createElement.apply(null,s)}return a.a.createElement.apply(null,r)}m.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/b9b5b6b9.3e5f870a.js b/b9b5b6b9.3e5f870a.js
deleted file mode 100644
index 95fd864..0000000
--- a/b9b5b6b9.3e5f870a.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[100],{166:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return o})),n.d(t,"metadata",(function(){return c})),n.d(t,"toc",(function(){return s})),n.d(t,"default",(function(){return b}));var r=n(3),a=n(7),i=(n(0),n(209)),o={title:"How to Run Frontend Integration Test"},c={unversionedId:"devDocs/IntegrationTestE2E",id:"devDocs/IntegrationTestE2E",isDocsHomePage:!1,title:"How to Run Frontend Integration Test",description:"\x3c!---",source:"@site/docs/devDocs/IntegrationTestE2E.md",slug:"/devDocs/IntegrationTestE2E",permalink:"/docs/next/devDocs/IntegrationTestE2E",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/devDocs/IntegrationTestE2E.md",version:"current",sidebar:"docs",previous:{title:"How to Run Integration K8s Test",permalink:"/docs/next/devDocs/IntegrationTestK8s"},next:{title:"How to Release",permalink:"/docs/next/devDocs/HowToRelease"}},s=[{value:"Introduction",id:"introduction",children:[]},{value:"Run E2E test locally",id:"run-e2e-test-locally",children:[]},{value:"Run E2E test in GitHub Actions",id:"run-e2e-test-in-github-actions",children:[]},{value:"Add a new frontend E2E test case",id:"add-a-new-frontend-e2e-test-case",children:[]}],l={toc:s};function b(e){var t=e.components,n=Object(a.a)(e,["components"]);return Object(i.b)("wrapper",Object(r.a)({},l,n,{components:t,mdxType:"MDXLayout"}),Object(i.b)("h2",{id:"introduction"},"Introduction"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"The test cases under the directory ",Object(i.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/tree/master/submarine-test/test-e2e/src/test/java/org/apache/submarine/integration"},"test-e2e")," are integration tests to ensure the correctness of the Submarine Workbench.")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"These test cases can be run either locally or on GitHub Actions."))),Object(i.b)("h2",{id:"run-e2e-test-locally"},"Run E2E test locally"),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Ensure you have setup the submarine locally. If not, you can refer to ",Object(i.b)("inlineCode",{parentName:"p"},"Submarine Local Deployment"),".")),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Forward port"),Object(i.b)("pre",{parentName:"li"},Object(i.b)("code",{parentName:"pre",className:"language-bash"},"kubectl port-forward --address 0.0.0.0 service/submarine-traefik 32080:80\n"))),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Modify run_frontend_e2e.sh"),Object(i.b)("p",{parentName:"li"}," You need to modify the port and the URL in this script to where you run the workbench on."),Object(i.b)("blockquote",{parentName:"li"},Object(i.b)("p",{parentName:"blockquote"},"Example:\nIf your Submarine workbench is running on 127.0.0.1:4200, you should modify the ",Object(i.b)("strong",{parentName:"p"},"WORKBENCH_PORT")," to 4200.")),Object(i.b)("pre",{parentName:"li"},Object(i.b)("code",{parentName:"pre",className:"language-bash"},'# at submarine-test/test_e2e/run_frontend_e2e.sh\n...\n# ======= Modifiable Variables ======= #\n # Note: URL must start with "http"\n # (Ref: https://www.selenium.dev/selenium/docs/api/java/org/openqa/selenium/WebDriver.html#get(java.lang.String))\n WORKBENCH_PORT=8080 #<= modify this\n URL="http://127.0.0.1" #<=modify this\n # ==================================== #\n ...\n'))),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Run ",Object(i.b)("inlineCode",{parentName:"p"},"run_frontend_e2e.sh")," (Run a specific test case)"),Object(i.b)("p",{parentName:"li"},"This script will check whether the port can be accessed or not, and run the test case."),Object(i.b)("pre",{parentName:"li"},Object(i.b)("code",{parentName:"pre",className:"language-bash"},"# at submarine-test/test_e2e\n./run_fronted_e2e.sh ${TESTCASE}\n# TESTCASE is the IT you want to run, ex: loginIT, experimentIT...\n"))),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Run all test cases"))),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},'Following commands will compile all files and run all files ending with "IT" in the ',Object(i.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/tree/master/submarine-test/test-e2e/src/test/java/org/apache/submarine/integration"},"directory"),"."),Object(i.b)("pre",{parentName:"li"},Object(i.b)("code",{parentName:"pre",className:"language-bash"},"# Make sure the Submarine workbench is running on 127.0.0.1:8080\ncd submarine/submarine-test/test-e2e\n# Method 1:\nmvn verify\n\n# Method 2:\nmvn clean install -U\n")))),Object(i.b)("h2",{id:"run-e2e-test-in-github-actions"},"Run E2E test in GitHub Actions"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Each time a commit is pushed, GitHub Actions will be triggered automatically.")),Object(i.b)("h2",{id:"add-a-new-frontend-e2e-test-case"},"Add a new frontend E2E test case"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"WARNING"),Object(i.b)("ul",{parentName:"li"},Object(i.b)("li",{parentName:"ul"},"You ",Object(i.b)("strong",{parentName:"li"},"MUST")," read the ",Object(i.b)("a",{parentName:"li",href:"https://www.selenium.dev/documentation/en/webdriver/waits/"},"document")," carefully, and understand the difference between ",Object(i.b)("strong",{parentName:"li"},"explicit wait"),", ",Object(i.b)("strong",{parentName:"li"},"implicit wait"),", and ",Object(i.b)("strong",{parentName:"li"},"fluent wait"),"."),Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"Do not mix implicit and explicit waits.")," Doing so can cause unpredictable wait times."))),Object(i.b)("li",{parentName:"ul"},"We define many useful functions in ",Object(i.b)("a",{parentName:"li",href:"https://github.com/apache/submarine/blob/master/submarine-test/test-e2e/src/test/java/org/apache/submarine/AbstractSubmarineIT.java"},"AbstractSubmarineIT.java"),".")))}b.isMDXComponent=!0},209:function(e,t,n){"use strict";n.d(t,"a",(function(){return u})),n.d(t,"b",(function(){return d}));var r=n(0),a=n.n(r);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function c(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=a.a.createContext({}),b=function(e){var t=a.a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):c(c({},t),e)),n},u=function(e){var t=b(e.components);return a.a.createElement(l.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},m=a.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,o=e.parentName,l=s(e,["components","mdxType","originalType","parentName"]),u=b(n),m=r,d=u["".concat(o,".").concat(m)]||u[m]||p[m]||i;return n?a.a.createElement(d,c(c({ref:t},l),{},{components:n})):a.a.createElement(d,c({ref:t},l))}));function d(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=m;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c.mdxType="string"==typeof e?e:r,o[1]=c;for(var l=2;l<i;l++)o[l]=n[l];return a.a.createElement.apply(null,o)}return a.a.createElement.apply(null,n)}m.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/b9b5b6b9.6ed1638f.js b/b9b5b6b9.6ed1638f.js
new file mode 100644
index 0000000..f165187
--- /dev/null
+++ b/b9b5b6b9.6ed1638f.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[89],{155:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return o})),n.d(t,"metadata",(function(){return c})),n.d(t,"toc",(function(){return s})),n.d(t,"default",(function(){return b}));var r=n(3),a=n(7),i=(n(0),n(194)),o={title:"How to Run Frontend Integration Test"},c={unversionedId:"devDocs/IntegrationTestE2E",id:"devDocs/IntegrationTestE2E",isDocsHomePage:!1,title:"How to Run Frontend Integration Test",description:"\x3c!---",source:"@site/docs/devDocs/IntegrationTestE2E.md",slug:"/devDocs/IntegrationTestE2E",permalink:"/docs/next/devDocs/IntegrationTestE2E",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/devDocs/IntegrationTestE2E.md",version:"current",sidebar:"docs",previous:{title:"How to Run Integration K8s Test",permalink:"/docs/next/devDocs/IntegrationTestK8s"},next:{title:"How to Release",permalink:"/docs/next/devDocs/HowToRelease"}},s=[{value:"Introduction",id:"introduction",children:[]},{value:"Run E2E test locally",id:"run-e2e-test-locally",children:[]},{value:"Run E2E test in GitHub Actions",id:"run-e2e-test-in-github-actions",children:[]},{value:"Add a new frontend E2E test case",id:"add-a-new-frontend-e2e-test-case",children:[]}],l={toc:s};function b(e){var t=e.components,n=Object(a.a)(e,["components"]);return Object(i.b)("wrapper",Object(r.a)({},l,n,{components:t,mdxType:"MDXLayout"}),Object(i.b)("h2",{id:"introduction"},"Introduction"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"The test cases under the directory ",Object(i.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/tree/master/submarine-test/test-e2e/src/test/java/org/apache/submarine/integration"},"test-e2e")," are integration tests to ensure the correctness of the Submarine Workbench.")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"These test cases can be run either locally or on GitHub Actions."))),Object(i.b)("h2",{id:"run-e2e-test-locally"},"Run E2E test locally"),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Ensure you have setup the submarine locally. If not, you can refer to ",Object(i.b)("inlineCode",{parentName:"p"},"Submarine Local Deployment"),".")),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Forward port"),Object(i.b)("pre",{parentName:"li"},Object(i.b)("code",{parentName:"pre",className:"language-bash"},"kubectl port-forward --address 0.0.0.0 service/submarine-traefik 32080:80\n"))),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Modify run_frontend_e2e.sh"),Object(i.b)("p",{parentName:"li"}," You need to modify the port and the URL in this script to where you run the workbench on."),Object(i.b)("blockquote",{parentName:"li"},Object(i.b)("p",{parentName:"blockquote"},"Example:\nIf your Submarine workbench is running on 127.0.0.1:4200, you should modify the ",Object(i.b)("strong",{parentName:"p"},"WORKBENCH_PORT")," to 4200.")),Object(i.b)("pre",{parentName:"li"},Object(i.b)("code",{parentName:"pre",className:"language-bash"},'# at submarine-test/test_e2e/run_frontend_e2e.sh\n...\n# ======= Modifiable Variables ======= #\n # Note: URL must start with "http"\n # (Ref: https://www.selenium.dev/selenium/docs/api/java/org/openqa/selenium/WebDriver.html#get(java.lang.String))\n WORKBENCH_PORT=8080 #<= modify this\n URL="http://127.0.0.1" #<=modify this\n # ==================================== #\n ...\n'))),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Run ",Object(i.b)("inlineCode",{parentName:"p"},"run_frontend_e2e.sh")," (Run a specific test case)"),Object(i.b)("p",{parentName:"li"},"This script will check whether the port can be accessed or not, and run the test case."),Object(i.b)("pre",{parentName:"li"},Object(i.b)("code",{parentName:"pre",className:"language-bash"},"# at submarine-test/test_e2e\n./run_fronted_e2e.sh ${TESTCASE}\n# TESTCASE is the IT you want to run, ex: loginIT, experimentIT...\n"))),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Run all test cases"))),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},'Following commands will compile all files and run all files ending with "IT" in the ',Object(i.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/tree/master/submarine-test/test-e2e/src/test/java/org/apache/submarine/integration"},"directory"),"."),Object(i.b)("pre",{parentName:"li"},Object(i.b)("code",{parentName:"pre",className:"language-bash"},"# Make sure the Submarine workbench is running on 127.0.0.1:8080\ncd submarine/submarine-test/test-e2e\n# Method 1:\nmvn verify\n\n# Method 2:\nmvn clean install -U\n")))),Object(i.b)("h2",{id:"run-e2e-test-in-github-actions"},"Run E2E test in GitHub Actions"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Each time a commit is pushed, GitHub Actions will be triggered automatically.")),Object(i.b)("h2",{id:"add-a-new-frontend-e2e-test-case"},"Add a new frontend E2E test case"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"WARNING"),Object(i.b)("ul",{parentName:"li"},Object(i.b)("li",{parentName:"ul"},"You ",Object(i.b)("strong",{parentName:"li"},"MUST")," read the ",Object(i.b)("a",{parentName:"li",href:"https://www.selenium.dev/documentation/en/webdriver/waits/"},"document")," carefully, and understand the difference between ",Object(i.b)("strong",{parentName:"li"},"explicit wait"),", ",Object(i.b)("strong",{parentName:"li"},"implicit wait"),", and ",Object(i.b)("strong",{parentName:"li"},"fluent wait"),"."),Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"Do not mix implicit and explicit waits.")," Doing so can cause unpredictable wait times."))),Object(i.b)("li",{parentName:"ul"},"We define many useful functions in ",Object(i.b)("a",{parentName:"li",href:"https://github.com/apache/submarine/blob/master/submarine-test/test-e2e/src/test/java/org/apache/submarine/AbstractSubmarineIT.java"},"AbstractSubmarineIT.java"),".")))}b.isMDXComponent=!0},194:function(e,t,n){"use strict";n.d(t,"a",(function(){return u})),n.d(t,"b",(function(){return d}));var r=n(0),a=n.n(r);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function c(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=a.a.createContext({}),b=function(e){var t=a.a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):c(c({},t),e)),n},u=function(e){var t=b(e.components);return a.a.createElement(l.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},m=a.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,o=e.parentName,l=s(e,["components","mdxType","originalType","parentName"]),u=b(n),m=r,d=u["".concat(o,".").concat(m)]||u[m]||p[m]||i;return n?a.a.createElement(d,c(c({ref:t},l),{},{components:n})):a.a.createElement(d,c({ref:t},l))}));function d(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=m;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c.mdxType="string"==typeof e?e:r,o[1]=c;for(var l=2;l<i;l++)o[l]=n[l];return a.a.createElement.apply(null,o)}return a.a.createElement.apply(null,n)}m.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/be249313.cafe9dfe.js b/be249313.cafe9dfe.js
new file mode 100644
index 0000000..0868958
--- /dev/null
+++ b/be249313.cafe9dfe.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[90],{156:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return o})),n.d(t,"metadata",(function(){return l})),n.d(t,"toc",(function(){return c})),n.d(t,"default",(function(){return i}));var a=n(3),r=n(7),b=(n(0),n(194)),o={title:"Notebook REST API"},l={unversionedId:"userDocs/api/notebook",id:"userDocs/api/notebook",isDocsHomePage:!1,title:"Notebook REST API",description:"\x3c!--",source:"@site/docs/userDocs/api/notebook.md",slug:"/userDocs/api/notebook",permalink:"/docs/next/userDocs/api/notebook",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/userDocs/api/notebook.md",version:"current",sidebar:"docs",previous:{title:"Experiment Template REST API",permalink:"/docs/next/userDocs/api/experiment-template"},next:{title:"Experiment Client",permalink:"/docs/next/userDocs/submarine-sdk/experiment-client"}},c=[{value:"Create a Notebook Instance",id:"create-a-notebook-instance",children:[{value:"Parameters",id:"parameters",children:[]},{value:"Code Example",id:"code-example",children:[]}]},{value:"List notebook instances which belong to user",id:"list-notebook-instances-which-belong-to-user",children:[{value:"Parameters",id:"parameters-1",children:[]},{value:"Code Example",id:"code-example-1",children:[]}]},{value:"Get the notebook instance",id:"get-the-notebook-instance",children:[{value:"Parameters",id:"parameters-2",children:[]},{value:"Code Example",id:"code-example-2",children:[]}]},{value:"Delete the notebook instance",id:"delete-the-notebook-instance",children:[{value:"Parameters",id:"parameters-3",children:[]},{value:"Code Example",id:"code-example-3",children:[]}]}],p={toc:c};function i(e){var t=e.components,n=Object(r.a)(e,["components"]);return Object(b.b)("wrapper",Object(a.a)({},p,n,{components:t,mdxType:"MDXLayout"}),Object(b.b)("h2",{id:"create-a-notebook-instance"},"Create a Notebook Instance"),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre"},"POST /api/v1/notebook\n")),Object(b.b)("h3",{id:"parameters"},"Parameters"),Object(b.b)("p",null,"NotebookSpec in request body."),Object(b.b)("h4",{id:"notebookspec"},Object(b.b)("strong",{parentName:"h4"},"NotebookSpec")),Object(b.b)("table",null,Object(b.b)("thead",{parentName:"table"},Object(b.b)("tr",{parentName:"thead"},Object(b.b)("th",{parentName:"tr",align:null},"Field Name"),Object(b.b)("th",{parentName:"tr",align:null},"Type"),Object(b.b)("th",{parentName:"tr",align:null},"Description"))),Object(b.b)("tbody",{parentName:"table"},Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"meta"),Object(b.b)("td",{parentName:"tr",align:null},"NotebookMeta"),Object(b.b)("td",{parentName:"tr",align:null},"Meta data of the notebook.")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"environment"),Object(b.b)("td",{parentName:"tr",align:null},"EnvironmentSpec"),Object(b.b)("td",{parentName:"tr",align:null},"Environment of the experiment template.")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"spec"),Object(b.b)("td",{parentName:"tr",align:null},"NotebookPodSpec"),Object(b.b)("td",{parentName:"tr",align:null},"Spec of the notebook pods.")))),Object(b.b)("h4",{id:"notebookmeta"},Object(b.b)("strong",{parentName:"h4"},"NotebookMeta")),Object(b.b)("table",null,Object(b.b)("thead",{parentName:"table"},Object(b.b)("tr",{parentName:"thead"},Object(b.b)("th",{parentName:"tr",align:null},"Field Name"),Object(b.b)("th",{parentName:"tr",align:null},"Type"),Object(b.b)("th",{parentName:"tr",align:null},"Description"))),Object(b.b)("tbody",{parentName:"table"},Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"name"),Object(b.b)("td",{parentName:"tr",align:null},"String"),Object(b.b)("td",{parentName:"tr",align:null},"Notebook name.")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"namespace"),Object(b.b)("td",{parentName:"tr",align:null},"String"),Object(b.b)("td",{parentName:"tr",align:null},"Notebook namespace.")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"ownerId"),Object(b.b)("td",{parentName:"tr",align:null},"String"),Object(b.b)("td",{parentName:"tr",align:null},"User id.")))),Object(b.b)("h4",{id:"environmentspec"},Object(b.b)("strong",{parentName:"h4"},"EnvironmentSpec")),Object(b.b)("p",null,"See more details in ",Object(b.b)("a",{parentName:"p",href:"https://submarine.apache.org/docs/userDocs/api/environment"},"environment api"),"."),Object(b.b)("h4",{id:"notebookpodspec"},Object(b.b)("strong",{parentName:"h4"},"NotebookPodSpec")),Object(b.b)("table",null,Object(b.b)("thead",{parentName:"table"},Object(b.b)("tr",{parentName:"thead"},Object(b.b)("th",{parentName:"tr",align:null},"Field Name"),Object(b.b)("th",{parentName:"tr",align:null},"Type"),Object(b.b)("th",{parentName:"tr",align:null},"Description"))),Object(b.b)("tbody",{parentName:"table"},Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"envVars"),Object(b.b)("td",{parentName:"tr",align:null},"Map<String, String",">"),Object(b.b)("td",{parentName:"tr",align:null},"Environmental variables.")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"resources"),Object(b.b)("td",{parentName:"tr",align:null},"String"),Object(b.b)("td",{parentName:"tr",align:null},"Resourecs of the pod.")))),Object(b.b)("h3",{id:"code-example"},"Code Example"),Object(b.b)("p",null,Object(b.b)("strong",{parentName:"p"},"shell")),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre",className:"language-sh"},'curl -X POST -H "Content-Type: application/json" -d \'\n{\n  "meta": {\n    "name": "test-nb",\n    "namespace": "default",\n    "ownerId": "e9ca23d68d884d4ebb19d07889727dae"\n  },\n  "environment": {\n    "name": "notebook-env"\n  },\n  "spec": {\n    "envVars": {\n      "TEST_ENV": "test"\n    },\n    "resources": "cpu=1,memory=1.0Gi"\n  }\n}\n\' http://127.0.0.1:32080/api/v1/notebook\n')),Object(b.b)("p",null,Object(b.b)("strong",{parentName:"p"},"response:")),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":"Create a notebook instance",\n  "result":{\n    "notebookId":"notebook_1626160071451_0001",\n    "name":"test-nb",\n    "uid":"a56713da-f2a3-40d0-ae2e-45fdc0bb15f5",\n    "url":"/notebook/default/test-nb/lab",\n    "status":"creating",\n    "reason":"The notebook instance is creating",\n    "createdTime":"2021-07-13T16:23:38.000+08:00",\n    "deletedTime":null,\n    "spec":{\n      "meta":{\n        "name":"test-nb",\n        "namespace":"default",\n        "ownerId":"e9ca23d68d884d4ebb19d07889727dae"\n      },\n      "environment":{\n        "name":"notebook-env",\n        "dockerImage":"apache/submarine:jupyter-notebook-0.7.0-SNAPSHOT",\n        "kernelSpec":{\n          "name":"submarine_jupyter_py3",\n          "channels":["defaults"],\n          "condaDependencies":[],\n          "pipDependencies":[]\n        },\n        "description":null,\n        "image":null\n      },\n      "spec":{\n        "envVars":{"TEST_ENV":"test"},\n        "resources":"cpu\\u003d1,memory\\u003d1.0Gi"\n      }\n    }\n  },\n  "attributes":{}\n}\n')),Object(b.b)("h2",{id:"list-notebook-instances-which-belong-to-user"},"List notebook instances which belong to user"),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre"},"GET /api/v1/notebook\n")),Object(b.b)("h3",{id:"parameters-1"},"Parameters"),Object(b.b)("table",null,Object(b.b)("thead",{parentName:"table"},Object(b.b)("tr",{parentName:"thead"},Object(b.b)("th",{parentName:"tr",align:null},"Field Name"),Object(b.b)("th",{parentName:"tr",align:null},"Type"),Object(b.b)("th",{parentName:"tr",align:null},"In"),Object(b.b)("th",{parentName:"tr",align:null},"Description"))),Object(b.b)("tbody",{parentName:"table"},Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"id"),Object(b.b)("td",{parentName:"tr",align:null},"String"),Object(b.b)("td",{parentName:"tr",align:null},"query"),Object(b.b)("td",{parentName:"tr",align:null},"User id.")))),Object(b.b)("h3",{id:"code-example-1"},"Code Example"),Object(b.b)("p",null,Object(b.b)("strong",{parentName:"p"},"shell")),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/notebook?id=e9ca23d68d884d4ebb19d07889727dae\n")),Object(b.b)("p",null,Object(b.b)("strong",{parentName:"p"},"response")),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":"List all notebook instances",\n  "result":\n  [{\n    "notebookId":"notebook_1626160071451_0001",\n    "name":"test-nb",\n    "uid":"a56713da-f2a3-40d0-ae2e-45fdc0bb15f5",\n    "url":"/notebook/default/test-nb/lab",\n    "status":"waiting",\n    "reason":"ContainerCreating",\n    "createdTime":"2021-07-13T16:23:38.000+08:00",\n    "deletedTime":null,\n    "spec":{\n      "meta":{\n        "name":"test-nb",\n        "namespace":"default",\n        "ownerId":"e9ca23d68d884d4ebb19d07889727dae"\n      },\n      "environment":{\n        "name":"notebook-env",\n        "dockerImage":"apache/submarine:jupyter-notebook-0.7.0-SNAPSHOT",\n        "kernelSpec":{\n          "name":"submarine_jupyter_py3",\n          "channels":["defaults"],\n          "condaDependencies":[],\n          "pipDependencies":[]\n        },\n        "description":null,\n        "image":null\n      },\n      "spec":{\n        "envVars":{"TEST_ENV":"test"},\n        "resources":"cpu\\u003d1,memory\\u003d1.0Gi"\n      }\n    }\n  }],\n  "attributes":{}\n}\n')),Object(b.b)("h2",{id:"get-the-notebook-instance"},"Get the notebook instance"),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre"},"GET /api/v1/notebook/{id}\n")),Object(b.b)("h3",{id:"parameters-2"},"Parameters"),Object(b.b)("table",null,Object(b.b)("thead",{parentName:"table"},Object(b.b)("tr",{parentName:"thead"},Object(b.b)("th",{parentName:"tr",align:null},"Field Name"),Object(b.b)("th",{parentName:"tr",align:null},"Type"),Object(b.b)("th",{parentName:"tr",align:null},"In"),Object(b.b)("th",{parentName:"tr",align:null},"Description"))),Object(b.b)("tbody",{parentName:"table"},Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"id"),Object(b.b)("td",{parentName:"tr",align:null},"String"),Object(b.b)("td",{parentName:"tr",align:null},"path"),Object(b.b)("td",{parentName:"tr",align:null},"Notebook id.")))),Object(b.b)("h3",{id:"code-example-2"},"Code Example"),Object(b.b)("p",null,Object(b.b)("strong",{parentName:"p"},"shell")),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/notebook/notebook_1626160071451_0001\n")),Object(b.b)("p",null,Object(b.b)("strong",{parentName:"p"},"response")),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":"Get the notebook instance",\n  "result":{\n    "notebookId":"notebook_1626160071451_0001",\n    "name":"test-nb",\n    "uid":"a56713da-f2a3-40d0-ae2e-45fdc0bb15f5",\n    "url":"/notebook/default/test-nb/lab",\n    "status":"waiting",\n    "reason":"ContainerCreating",\n    "createdTime":"2021-07-13T16:23:38.000+08:00",\n    "deletedTime":null,\n    "spec":{\n      "meta":{\n        "name":"test-nb",\n        "namespace":"default",\n        "ownerId":"e9ca23d68d884d4ebb19d07889727dae"\n      },\n      "environment":{\n        "name":"notebook-env",\n        "dockerImage":"apache/submarine:jupyter-notebook-0.7.0-SNAPSHOT",\n        "kernelSpec":{\n          "name":"submarine_jupyter_py3",\n          "channels":["defaults"],\n          "condaDependencies":[],\n          "pipDependencies":[]\n        },\n        "description":null,\n        "image":null\n      },\n      "spec":{\n        "envVars":{"TEST_ENV":"test"},\n        "resources":"cpu\\u003d1,memory\\u003d1.0Gi"\n      }\n    }\n  },\n  "attributes":{}\n}\n')),Object(b.b)("h2",{id:"delete-the-notebook-instance"},"Delete the notebook instance"),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre"},"DELETE /api/v1/notebook/{id}\n")),Object(b.b)("h3",{id:"parameters-3"},"Parameters"),Object(b.b)("table",null,Object(b.b)("thead",{parentName:"table"},Object(b.b)("tr",{parentName:"thead"},Object(b.b)("th",{parentName:"tr",align:null},"Field Name"),Object(b.b)("th",{parentName:"tr",align:null},"Type"),Object(b.b)("th",{parentName:"tr",align:null},"In"),Object(b.b)("th",{parentName:"tr",align:null},"Description"))),Object(b.b)("tbody",{parentName:"table"},Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"id"),Object(b.b)("td",{parentName:"tr",align:null},"String"),Object(b.b)("td",{parentName:"tr",align:null},"path"),Object(b.b)("td",{parentName:"tr",align:null},"Notebook id.")))),Object(b.b)("h3",{id:"code-example-3"},"Code Example"),Object(b.b)("p",null,Object(b.b)("strong",{parentName:"p"},"shell")),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre",className:"language-sh"},"curl -X DELETE http://127.0.0.1:32080/api/v1/notebook/notebook_1626160071451_0001\n")),Object(b.b)("p",null,Object(b.b)("strong",{parentName:"p"},"response:")),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":"Delete the notebook instance",\n  "result":{\n    "notebookId":"notebook_1626160071451_0001",\n    "name":"test-nb",\n    "uid":"a56713da-f2a3-40d0-ae2e-45fdc0bb15f5",\n    "url":"/notebook/default/test-nb/lab",\n    "status":"terminating",\n    "reason":"The notebook instance is terminating",\n    "createdTime":"2021-07-13T16:23:38.000+08:00",\n    "deletedTime":null,\n    "spec":{\n      "meta":{\n        "name":"test-nb",\n        "namespace":"default",\n        "ownerId":"e9ca23d68d884d4ebb19d07889727dae"\n      },\n      "environment":{\n        "name":"notebook-env",\n        "dockerImage":"apache/submarine:jupyter-notebook-0.7.0-SNAPSHOT",\n        "kernelSpec":{\n          "name":"submarine_jupyter_py3",\n          "channels":["defaults"],\n          "condaDependencies":[],\n          "pipDependencies":[]\n        },\n        "description":null,\n        "image":null\n      },\n      "spec":{\n        "envVars":{"TEST_ENV":"test"},\n        "resources":"cpu\\u003d1,memory\\u003d1.0Gi"\n      }\n    }\n  },\n  "attributes":{}\n}\n')))}i.isMDXComponent=!0},194:function(e,t,n){"use strict";n.d(t,"a",(function(){return s})),n.d(t,"b",(function(){return u}));var a=n(0),r=n.n(a);function b(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){b(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function c(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},b=Object.keys(e);for(a=0;a<b.length;a++)n=b[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var b=Object.getOwnPropertySymbols(e);for(a=0;a<b.length;a++)n=b[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var p=r.a.createContext({}),i=function(e){var t=r.a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},s=function(e){var t=i(e.components);return r.a.createElement(p.Provider,{value:t},e.children)},d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},m=r.a.forwardRef((function(e,t){var n=e.components,a=e.mdxType,b=e.originalType,o=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),s=i(n),m=a,u=s["".concat(o,".").concat(m)]||s[m]||d[m]||b;return n?r.a.createElement(u,l(l({ref:t},p),{},{components:n})):r.a.createElement(u,l({ref:t},p))}));function u(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var b=n.length,o=new Array(b);o[0]=m;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l.mdxType="string"==typeof e?e:a,o[1]=l;for(var p=2;p<b;p++)o[p]=n[p];return r.a.createElement.apply(null,o)}return r.a.createElement.apply(null,n)}m.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/be249313.cc6110d6.js b/be249313.cc6110d6.js
deleted file mode 100644
index 86f059a..0000000
--- a/be249313.cc6110d6.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[101],{167:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return o})),n.d(t,"metadata",(function(){return l})),n.d(t,"toc",(function(){return c})),n.d(t,"default",(function(){return i}));var a=n(3),r=n(7),b=(n(0),n(209)),o={title:"Notebook REST API"},l={unversionedId:"userDocs/api/notebook",id:"userDocs/api/notebook",isDocsHomePage:!1,title:"Notebook REST API",description:"\x3c!--",source:"@site/docs/userDocs/api/notebook.md",slug:"/userDocs/api/notebook",permalink:"/docs/next/userDocs/api/notebook",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/userDocs/api/notebook.md",version:"current",sidebar:"docs",previous:{title:"Experiment Template REST API",permalink:"/docs/next/userDocs/api/experiment-template"},next:{title:"Experiment Client",permalink:"/docs/next/userDocs/submarine-sdk/experiment-client"}},c=[{value:"Create a Notebook Instance",id:"create-a-notebook-instance",children:[{value:"Parameters",id:"parameters",children:[]},{value:"Code Example",id:"code-example",children:[]}]},{value:"List notebook instances which belong to user",id:"list-notebook-instances-which-belong-to-user",children:[{value:"Parameters",id:"parameters-1",children:[]},{value:"Code Example",id:"code-example-1",children:[]}]},{value:"Get the notebook instance",id:"get-the-notebook-instance",children:[{value:"Parameters",id:"parameters-2",children:[]},{value:"Code Example",id:"code-example-2",children:[]}]},{value:"Delete the notebook instance",id:"delete-the-notebook-instance",children:[{value:"Parameters",id:"parameters-3",children:[]},{value:"Code Example",id:"code-example-3",children:[]}]}],p={toc:c};function i(e){var t=e.components,n=Object(r.a)(e,["components"]);return Object(b.b)("wrapper",Object(a.a)({},p,n,{components:t,mdxType:"MDXLayout"}),Object(b.b)("h2",{id:"create-a-notebook-instance"},"Create a Notebook Instance"),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre"},"POST /api/v1/notebook\n")),Object(b.b)("h3",{id:"parameters"},"Parameters"),Object(b.b)("p",null,"NotebookSpec in request body."),Object(b.b)("h4",{id:"notebookspec"},Object(b.b)("strong",{parentName:"h4"},"NotebookSpec")),Object(b.b)("table",null,Object(b.b)("thead",{parentName:"table"},Object(b.b)("tr",{parentName:"thead"},Object(b.b)("th",{parentName:"tr",align:null},"Field Name"),Object(b.b)("th",{parentName:"tr",align:null},"Type"),Object(b.b)("th",{parentName:"tr",align:null},"Description"))),Object(b.b)("tbody",{parentName:"table"},Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"meta"),Object(b.b)("td",{parentName:"tr",align:null},"NotebookMeta"),Object(b.b)("td",{parentName:"tr",align:null},"Meta data of the notebook.")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"environment"),Object(b.b)("td",{parentName:"tr",align:null},"EnvironmentSpec"),Object(b.b)("td",{parentName:"tr",align:null},"Environment of the experiment template.")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"spec"),Object(b.b)("td",{parentName:"tr",align:null},"NotebookPodSpec"),Object(b.b)("td",{parentName:"tr",align:null},"Spec of the notebook pods.")))),Object(b.b)("h4",{id:"notebookmeta"},Object(b.b)("strong",{parentName:"h4"},"NotebookMeta")),Object(b.b)("table",null,Object(b.b)("thead",{parentName:"table"},Object(b.b)("tr",{parentName:"thead"},Object(b.b)("th",{parentName:"tr",align:null},"Field Name"),Object(b.b)("th",{parentName:"tr",align:null},"Type"),Object(b.b)("th",{parentName:"tr",align:null},"Description"))),Object(b.b)("tbody",{parentName:"table"},Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"name"),Object(b.b)("td",{parentName:"tr",align:null},"String"),Object(b.b)("td",{parentName:"tr",align:null},"Notebook name.")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"namespace"),Object(b.b)("td",{parentName:"tr",align:null},"String"),Object(b.b)("td",{parentName:"tr",align:null},"Notebook namespace.")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"ownerId"),Object(b.b)("td",{parentName:"tr",align:null},"String"),Object(b.b)("td",{parentName:"tr",align:null},"User id.")))),Object(b.b)("h4",{id:"environmentspec"},Object(b.b)("strong",{parentName:"h4"},"EnvironmentSpec")),Object(b.b)("p",null,"See more details in ",Object(b.b)("a",{parentName:"p",href:"https://submarine.apache.org/docs/userDocs/api/environment"},"environment api"),"."),Object(b.b)("h4",{id:"notebookpodspec"},Object(b.b)("strong",{parentName:"h4"},"NotebookPodSpec")),Object(b.b)("table",null,Object(b.b)("thead",{parentName:"table"},Object(b.b)("tr",{parentName:"thead"},Object(b.b)("th",{parentName:"tr",align:null},"Field Name"),Object(b.b)("th",{parentName:"tr",align:null},"Type"),Object(b.b)("th",{parentName:"tr",align:null},"Description"))),Object(b.b)("tbody",{parentName:"table"},Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"envVars"),Object(b.b)("td",{parentName:"tr",align:null},"Map<String, String",">"),Object(b.b)("td",{parentName:"tr",align:null},"Environmental variables.")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"resources"),Object(b.b)("td",{parentName:"tr",align:null},"String"),Object(b.b)("td",{parentName:"tr",align:null},"Resourecs of the pod.")))),Object(b.b)("h3",{id:"code-example"},"Code Example"),Object(b.b)("p",null,Object(b.b)("strong",{parentName:"p"},"shell")),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre",className:"language-sh"},'curl -X POST -H "Content-Type: application/json" -d \'\n{\n  "meta": {\n    "name": "test-nb",\n    "namespace": "default",\n    "ownerId": "e9ca23d68d884d4ebb19d07889727dae"\n  },\n  "environment": {\n    "name": "notebook-env"\n  },\n  "spec": {\n    "envVars": {\n      "TEST_ENV": "test"\n    },\n    "resources": "cpu=1,memory=1.0Gi"\n  }\n}\n\' http://127.0.0.1:32080/api/v1/notebook\n')),Object(b.b)("p",null,Object(b.b)("strong",{parentName:"p"},"response:")),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":"Create a notebook instance",\n  "result":{\n    "notebookId":"notebook_1626160071451_0001",\n    "name":"test-nb",\n    "uid":"a56713da-f2a3-40d0-ae2e-45fdc0bb15f5",\n    "url":"/notebook/default/test-nb/lab",\n    "status":"creating",\n    "reason":"The notebook instance is creating",\n    "createdTime":"2021-07-13T16:23:38.000+08:00",\n    "deletedTime":null,\n    "spec":{\n      "meta":{\n        "name":"test-nb",\n        "namespace":"default",\n        "ownerId":"e9ca23d68d884d4ebb19d07889727dae"\n      },\n      "environment":{\n        "name":"notebook-env",\n        "dockerImage":"apache/submarine:jupyter-notebook-0.7.0-SNAPSHOT",\n        "kernelSpec":{\n          "name":"submarine_jupyter_py3",\n          "channels":["defaults"],\n          "condaDependencies":[],\n          "pipDependencies":[]\n        },\n        "description":null,\n        "image":null\n      },\n      "spec":{\n        "envVars":{"TEST_ENV":"test"},\n        "resources":"cpu\\u003d1,memory\\u003d1.0Gi"\n      }\n    }\n  },\n  "attributes":{}\n}\n')),Object(b.b)("h2",{id:"list-notebook-instances-which-belong-to-user"},"List notebook instances which belong to user"),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre"},"GET /api/v1/notebook\n")),Object(b.b)("h3",{id:"parameters-1"},"Parameters"),Object(b.b)("table",null,Object(b.b)("thead",{parentName:"table"},Object(b.b)("tr",{parentName:"thead"},Object(b.b)("th",{parentName:"tr",align:null},"Field Name"),Object(b.b)("th",{parentName:"tr",align:null},"Type"),Object(b.b)("th",{parentName:"tr",align:null},"In"),Object(b.b)("th",{parentName:"tr",align:null},"Description"))),Object(b.b)("tbody",{parentName:"table"},Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"id"),Object(b.b)("td",{parentName:"tr",align:null},"String"),Object(b.b)("td",{parentName:"tr",align:null},"query"),Object(b.b)("td",{parentName:"tr",align:null},"User id.")))),Object(b.b)("h3",{id:"code-example-1"},"Code Example"),Object(b.b)("p",null,Object(b.b)("strong",{parentName:"p"},"shell")),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/notebook?id=e9ca23d68d884d4ebb19d07889727dae\n")),Object(b.b)("p",null,Object(b.b)("strong",{parentName:"p"},"response")),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":"List all notebook instances",\n  "result":\n  [{\n    "notebookId":"notebook_1626160071451_0001",\n    "name":"test-nb",\n    "uid":"a56713da-f2a3-40d0-ae2e-45fdc0bb15f5",\n    "url":"/notebook/default/test-nb/lab",\n    "status":"waiting",\n    "reason":"ContainerCreating",\n    "createdTime":"2021-07-13T16:23:38.000+08:00",\n    "deletedTime":null,\n    "spec":{\n      "meta":{\n        "name":"test-nb",\n        "namespace":"default",\n        "ownerId":"e9ca23d68d884d4ebb19d07889727dae"\n      },\n      "environment":{\n        "name":"notebook-env",\n        "dockerImage":"apache/submarine:jupyter-notebook-0.7.0-SNAPSHOT",\n        "kernelSpec":{\n          "name":"submarine_jupyter_py3",\n          "channels":["defaults"],\n          "condaDependencies":[],\n          "pipDependencies":[]\n        },\n        "description":null,\n        "image":null\n      },\n      "spec":{\n        "envVars":{"TEST_ENV":"test"},\n        "resources":"cpu\\u003d1,memory\\u003d1.0Gi"\n      }\n    }\n  }],\n  "attributes":{}\n}\n')),Object(b.b)("h2",{id:"get-the-notebook-instance"},"Get the notebook instance"),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre"},"GET /api/v1/notebook/{id}\n")),Object(b.b)("h3",{id:"parameters-2"},"Parameters"),Object(b.b)("table",null,Object(b.b)("thead",{parentName:"table"},Object(b.b)("tr",{parentName:"thead"},Object(b.b)("th",{parentName:"tr",align:null},"Field Name"),Object(b.b)("th",{parentName:"tr",align:null},"Type"),Object(b.b)("th",{parentName:"tr",align:null},"In"),Object(b.b)("th",{parentName:"tr",align:null},"Description"))),Object(b.b)("tbody",{parentName:"table"},Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"id"),Object(b.b)("td",{parentName:"tr",align:null},"String"),Object(b.b)("td",{parentName:"tr",align:null},"path"),Object(b.b)("td",{parentName:"tr",align:null},"Notebook id.")))),Object(b.b)("h3",{id:"code-example-2"},"Code Example"),Object(b.b)("p",null,Object(b.b)("strong",{parentName:"p"},"shell")),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/notebook/notebook_1626160071451_0001\n")),Object(b.b)("p",null,Object(b.b)("strong",{parentName:"p"},"response")),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":"Get the notebook instance",\n  "result":{\n    "notebookId":"notebook_1626160071451_0001",\n    "name":"test-nb",\n    "uid":"a56713da-f2a3-40d0-ae2e-45fdc0bb15f5",\n    "url":"/notebook/default/test-nb/lab",\n    "status":"waiting",\n    "reason":"ContainerCreating",\n    "createdTime":"2021-07-13T16:23:38.000+08:00",\n    "deletedTime":null,\n    "spec":{\n      "meta":{\n        "name":"test-nb",\n        "namespace":"default",\n        "ownerId":"e9ca23d68d884d4ebb19d07889727dae"\n      },\n      "environment":{\n        "name":"notebook-env",\n        "dockerImage":"apache/submarine:jupyter-notebook-0.7.0-SNAPSHOT",\n        "kernelSpec":{\n          "name":"submarine_jupyter_py3",\n          "channels":["defaults"],\n          "condaDependencies":[],\n          "pipDependencies":[]\n        },\n        "description":null,\n        "image":null\n      },\n      "spec":{\n        "envVars":{"TEST_ENV":"test"},\n        "resources":"cpu\\u003d1,memory\\u003d1.0Gi"\n      }\n    }\n  },\n  "attributes":{}\n}\n')),Object(b.b)("h2",{id:"delete-the-notebook-instance"},"Delete the notebook instance"),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre"},"DELETE /api/v1/notebook/{id}\n")),Object(b.b)("h3",{id:"parameters-3"},"Parameters"),Object(b.b)("table",null,Object(b.b)("thead",{parentName:"table"},Object(b.b)("tr",{parentName:"thead"},Object(b.b)("th",{parentName:"tr",align:null},"Field Name"),Object(b.b)("th",{parentName:"tr",align:null},"Type"),Object(b.b)("th",{parentName:"tr",align:null},"In"),Object(b.b)("th",{parentName:"tr",align:null},"Description"))),Object(b.b)("tbody",{parentName:"table"},Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"id"),Object(b.b)("td",{parentName:"tr",align:null},"String"),Object(b.b)("td",{parentName:"tr",align:null},"path"),Object(b.b)("td",{parentName:"tr",align:null},"Notebook id.")))),Object(b.b)("h3",{id:"code-example-3"},"Code Example"),Object(b.b)("p",null,Object(b.b)("strong",{parentName:"p"},"shell")),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre",className:"language-sh"},"curl -X DELETE http://127.0.0.1:32080/api/v1/notebook/notebook_1626160071451_0001\n")),Object(b.b)("p",null,Object(b.b)("strong",{parentName:"p"},"response:")),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":"Delete the notebook instance",\n  "result":{\n    "notebookId":"notebook_1626160071451_0001",\n    "name":"test-nb",\n    "uid":"a56713da-f2a3-40d0-ae2e-45fdc0bb15f5",\n    "url":"/notebook/default/test-nb/lab",\n    "status":"terminating",\n    "reason":"The notebook instance is terminating",\n    "createdTime":"2021-07-13T16:23:38.000+08:00",\n    "deletedTime":null,\n    "spec":{\n      "meta":{\n        "name":"test-nb",\n        "namespace":"default",\n        "ownerId":"e9ca23d68d884d4ebb19d07889727dae"\n      },\n      "environment":{\n        "name":"notebook-env",\n        "dockerImage":"apache/submarine:jupyter-notebook-0.7.0-SNAPSHOT",\n        "kernelSpec":{\n          "name":"submarine_jupyter_py3",\n          "channels":["defaults"],\n          "condaDependencies":[],\n          "pipDependencies":[]\n        },\n        "description":null,\n        "image":null\n      },\n      "spec":{\n        "envVars":{"TEST_ENV":"test"},\n        "resources":"cpu\\u003d1,memory\\u003d1.0Gi"\n      }\n    }\n  },\n  "attributes":{}\n}\n')))}i.isMDXComponent=!0},209:function(e,t,n){"use strict";n.d(t,"a",(function(){return s})),n.d(t,"b",(function(){return u}));var a=n(0),r=n.n(a);function b(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){b(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function c(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},b=Object.keys(e);for(a=0;a<b.length;a++)n=b[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var b=Object.getOwnPropertySymbols(e);for(a=0;a<b.length;a++)n=b[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var p=r.a.createContext({}),i=function(e){var t=r.a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},s=function(e){var t=i(e.components);return r.a.createElement(p.Provider,{value:t},e.children)},d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},m=r.a.forwardRef((function(e,t){var n=e.components,a=e.mdxType,b=e.originalType,o=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),s=i(n),m=a,u=s["".concat(o,".").concat(m)]||s[m]||d[m]||b;return n?r.a.createElement(u,l(l({ref:t},p),{},{components:n})):r.a.createElement(u,l({ref:t},p))}));function u(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var b=n.length,o=new Array(b);o[0]=m;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l.mdxType="string"==typeof e?e:a,o[1]=l;for(var p=2;p<b;p++)o[p]=n[p];return r.a.createElement.apply(null,o)}return r.a.createElement.apply(null,n)}m.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/be5f9a0f.9a26238b.js b/be5f9a0f.9a26238b.js
new file mode 100644
index 0000000..666aa91
--- /dev/null
+++ b/be5f9a0f.9a26238b.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[91],{157:function(e,t,r){"use strict";r.r(t),r.d(t,"frontMatter",(function(){return i})),r.d(t,"metadata",(function(){return c})),r.d(t,"toc",(function(){return u})),r.d(t,"default",(function(){return p}));var n=r(3),a=r(7),o=(r(0),r(194)),i={},c={type:"mdx",permalink:"/releases/submarine-release-0.5.0",source:"@site/src/pages/releases/submarine-release-0.5.0.md"},u=[],l={toc:u};function p(e){var t=e.components,r=Object(a.a)(e,["components"]);return Object(o.b)("wrapper",Object(n.a)({},l,r,{components:t,mdxType:"MDXLayout"}),Object(o.b)("h1",{id:"apache-submarine-release-050"},"Apache Submarine Release 0.5.0"),Object(o.b)("p",null,"The Apache Submarine Community is pleased to announce the availability of the ",Object(o.b)("inlineCode",{parentName:"p"},"0.5.0")," release."),Object(o.b)("p",null,"The community put significant effort into improving Apache Submarine since the last release.\n99 patches for improvements and bug fixes. The highlighted features are as follows:"),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},"Submarine Experiments: Redefined the experiment spec, sync up code from Git, it could be HTTP and ssh"),Object(o.b)("li",{parentName:"ul"},"Predefined experiment template: Register A experiment template and submit the related parameter to run an experiment using Rest API"),Object(o.b)("li",{parentName:"ul"},"Environment profile: Users could easily manage their docker image and conda environment"),Object(o.b)("li",{parentName:"ul"},"Jupyter Notebook: Spawn a jupyter notebook using Rest API, and execute ML code on K8s, or submit an experiment to submarine server"),Object(o.b)("li",{parentName:"ul"},"Submarine Workbench UI: CRUD Experiment, Environment, Notebook through the UI "),Object(o.b)("li",{parentName:"ul"},"Disable interpreter module")),Object(o.b)("p",null,"We encourage to ",Object(o.b)("a",{parentName:"p",href:"/docs/download"},"download")," the latest release. Feedback through the ",Object(o.b)("a",{parentName:"p",href:"/docs/community/README"},"mailing lists")," is very welcome."),Object(o.b)("p",null,"You can visit ",Object(o.b)("a",{parentName:"p",href:"https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12348041&projectId=12322824"},"issue tracker")," for full list of issues that are resolved."))}p.isMDXComponent=!0},194:function(e,t,r){"use strict";r.d(t,"a",(function(){return s})),r.d(t,"b",(function(){return f}));var n=r(0),a=r.n(n);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function c(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?i(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function u(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=a.a.createContext({}),p=function(e){var t=a.a.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):c(c({},t),e)),r},s=function(e){var t=p(e.components);return a.a.createElement(l.Provider,{value:t},e.children)},b={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},m=a.a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,i=e.parentName,l=u(e,["components","mdxType","originalType","parentName"]),s=p(r),m=n,f=s["".concat(i,".").concat(m)]||s[m]||b[m]||o;return r?a.a.createElement(f,c(c({ref:t},l),{},{components:r})):a.a.createElement(f,c({ref:t},l))}));function f(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,i=new Array(o);i[0]=m;var c={};for(var u in t)hasOwnProperty.call(t,u)&&(c[u]=t[u]);c.originalType=e,c.mdxType="string"==typeof e?e:n,i[1]=c;for(var l=2;l<o;l++)i[l]=r[l];return a.a.createElement.apply(null,i)}return a.a.createElement.apply(null,r)}m.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/be5f9a0f.c54f0abd.js b/be5f9a0f.c54f0abd.js
deleted file mode 100644
index 61bafb6..0000000
--- a/be5f9a0f.c54f0abd.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[102],{168:function(e,t,r){"use strict";r.r(t),r.d(t,"frontMatter",(function(){return i})),r.d(t,"metadata",(function(){return c})),r.d(t,"toc",(function(){return u})),r.d(t,"default",(function(){return p}));var n=r(3),a=r(7),o=(r(0),r(209)),i={},c={type:"mdx",permalink:"/releases/submarine-release-0.5.0",source:"@site/src/pages/releases/submarine-release-0.5.0.md"},u=[],l={toc:u};function p(e){var t=e.components,r=Object(a.a)(e,["components"]);return Object(o.b)("wrapper",Object(n.a)({},l,r,{components:t,mdxType:"MDXLayout"}),Object(o.b)("h1",{id:"apache-submarine-release-050"},"Apache Submarine Release 0.5.0"),Object(o.b)("p",null,"The Apache Submarine Community is pleased to announce the availability of the ",Object(o.b)("inlineCode",{parentName:"p"},"0.5.0")," release."),Object(o.b)("p",null,"The community put significant effort into improving Apache Submarine since the last release.\n99 patches for improvements and bug fixes. The highlighted features are as follows:"),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},"Submarine Experiments: Redefined the experiment spec, sync up code from Git, it could be HTTP and ssh"),Object(o.b)("li",{parentName:"ul"},"Predefined experiment template: Register A experiment template and submit the related parameter to run an experiment using Rest API"),Object(o.b)("li",{parentName:"ul"},"Environment profile: Users could easily manage their docker image and conda environment"),Object(o.b)("li",{parentName:"ul"},"Jupyter Notebook: Spawn a jupyter notebook using Rest API, and execute ML code on K8s, or submit an experiment to submarine server"),Object(o.b)("li",{parentName:"ul"},"Submarine Workbench UI: CRUD Experiment, Environment, Notebook through the UI "),Object(o.b)("li",{parentName:"ul"},"Disable interpreter module")),Object(o.b)("p",null,"We encourage to ",Object(o.b)("a",{parentName:"p",href:"/docs/download"},"download")," the latest release. Feedback through the ",Object(o.b)("a",{parentName:"p",href:"/docs/community/README"},"mailing lists")," is very welcome."),Object(o.b)("p",null,"You can visit ",Object(o.b)("a",{parentName:"p",href:"https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12348041&projectId=12322824"},"issue tracker")," for full list of issues that are resolved."))}p.isMDXComponent=!0},209:function(e,t,r){"use strict";r.d(t,"a",(function(){return s})),r.d(t,"b",(function(){return f}));var n=r(0),a=r.n(n);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function c(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?i(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function u(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=a.a.createContext({}),p=function(e){var t=a.a.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):c(c({},t),e)),r},s=function(e){var t=p(e.components);return a.a.createElement(l.Provider,{value:t},e.children)},b={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},m=a.a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,i=e.parentName,l=u(e,["components","mdxType","originalType","parentName"]),s=p(r),m=n,f=s["".concat(i,".").concat(m)]||s[m]||b[m]||o;return r?a.a.createElement(f,c(c({ref:t},l),{},{components:r})):a.a.createElement(f,c({ref:t},l))}));function f(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,i=new Array(o);i[0]=m;var c={};for(var u in t)hasOwnProperty.call(t,u)&&(c[u]=t[u]);c.originalType=e,c.mdxType="string"==typeof e?e:n,i[1]=c;for(var l=2;l<o;l++)i[l]=r[l];return a.a.createElement.apply(null,i)}return a.a.createElement.apply(null,r)}m.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/bf08320e.37428e65.js b/bf08320e.37428e65.js
deleted file mode 100644
index f33d723..0000000
--- a/bf08320e.37428e65.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[103],{169:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return o})),n.d(t,"metadata",(function(){return i})),n.d(t,"toc",(function(){return l})),n.d(t,"default",(function(){return s}));var a=n(3),r=n(7),b=(n(0),n(209)),o={},i={unversionedId:"adminDocs/yarn/workbench/HowToRun",id:"adminDocs/yarn/workbench/HowToRun",isDocsHomePage:!1,title:"HowToRun",description:"\x3c!--",source:"@site/docs/adminDocs/yarn/workbench/HowToRun.md",slug:"/adminDocs/yarn/workbench/HowToRun",permalink:"/docs/next/adminDocs/yarn/workbench/HowToRun",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/adminDocs/yarn/workbench/HowToRun.md",version:"current"},l=[{value:"Two versions of Submarine Workbench",id:"two-versions-of-submarine-workbench",children:[]},{value:"Launch the Submarine Workbench(Angular)",id:"launch-the-submarine-workbenchangular",children:[]},{value:"Check the data in the submarine-database",id:"check-the-data-in-the-submarine-database",children:[]},{value:"Run Submarine Workbench",id:"run-submarine-workbench",children:[]},{value:"submarine-env.sh",id:"submarine-envsh",children:[]},{value:"submarine-site.xml",id:"submarine-sitexml",children:[]}],c={toc:l};function s(e){var t=e.components,n=Object(r.a)(e,["components"]);return Object(b.b)("wrapper",Object(a.a)({},c,n,{components:t,mdxType:"MDXLayout"}),Object(b.b)("h1",{id:"how-to-run-submarine-workbench"},"How To Run Submarine Workbench"),Object(b.b)("p",null,"We provide two methods to launch Submarine Workbench"),Object(b.b)("ul",null,Object(b.b)("li",{parentName:"ul"},"Method 1:  Run Submarine Workbench on docker"),Object(b.b)("li",{parentName:"ul"},"Method 2:  Run Submarine Workbench without docker")),Object(b.b)("h1",{id:"run-submarine-workbench-on-docker"},"Run Submarine Workbench on docker"),Object(b.b)("p",null,"By using the official images of Submarine, only a few docker commands are required to launch ",Object(b.b)("strong",{parentName:"p"},"Submarine Workbench"),". The document includes information about how to launch the Submarine Workbench via the new docker images and the information about how to switch between different Submarine Workbench versions(version Vue & version Angular)."),Object(b.b)("h3",{id:"two-versions-of-submarine-workbench"},"Two versions of Submarine Workbench"),Object(b.b)("ol",null,Object(b.b)("li",{parentName:"ol"},"Angular (default)"),Object(b.b)("li",{parentName:"ol"},"Vue (This is the old version, and it will be replaced by version Angular in the future.)")),Object(b.b)("h4",{id:"warning-please-restart-a-new-incognito-window-when-you-switch-to-different-versions-of-submarine-workbench"},"(WARNING: Please restart a new ",Object(b.b)("strong",{parentName:"h4"},"incognito window")," when you switch to different versions of Submarine Workbench)"),Object(b.b)("h3",{id:"launch-the-submarine-workbenchangular"},"Launch the Submarine Workbench(Angular)"),Object(b.b)("ul",null,Object(b.b)("li",{parentName:"ul"},"It should be noted that since Submarine Workbench depends on the Submarine database, so you need to run the docker container of the Submarine database first.")),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre"},"docker run -it -p 3306:3306 -d --name submarine-database -e MYSQL_ROOT_PASSWORD=password apache/submarine:database-<REPLACE_VERSION>\ndocker run -it -p 8080:8080 -d --link=submarine-database:submarine-database --name submarine-server apache/submarine:server-<REPLACE_VERSION>\n")),Object(b.b)("ul",null,Object(b.b)("li",{parentName:"ul"},"The login page of Submarine Workbench will be shown in ",Object(b.b)("inlineCode",{parentName:"li"},"http://127.0.0.1:8080"),".")),Object(b.b)("h3",{id:"check-the-data-in-the-submarine-database"},"Check the data in the submarine-database"),Object(b.b)("ul",null,Object(b.b)("li",{parentName:"ul"},"Step1: Enter the submarine-database container")),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre"},"docker exec -it submarine-database bash\n")),Object(b.b)("ul",null,Object(b.b)("li",{parentName:"ul"},"Step2: Enter MySQL database")),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre"},"mysql -uroot -ppassword\n")),Object(b.b)("ul",null,Object(b.b)("li",{parentName:"ul"},"Step3: List the data in the table")),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre"},"// list all databases\nshow databases;\n\n// choose a database\nuse ${target_database};\n\n// list all tables\nshow tables;\n\n// list the data in the table\nselect * from ${target_table};\n")),Object(b.b)("h1",{id:"run-submarine-workbench-without-docker"},"Run Submarine Workbench without docker"),Object(b.b)("h3",{id:"run-submarine-workbench"},"Run Submarine Workbench"),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre"},"cd submarine\n./bin/submarine-daemon.sh [start|stop|restart]\n")),Object(b.b)("p",null,"To start workbench server, you need to download MySQL jdbc jar and put it in the\npath of workbench/lib for the first time. Or you can add parameter, getMysqlJar,\nto get MySQL jar automatically."),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre"},"cd submarine\n./bin/submarine-daemon.sh start getMysqlJar\n")),Object(b.b)("h3",{id:"submarine-envsh"},"submarine-env.sh"),Object(b.b)("p",null,Object(b.b)("inlineCode",{parentName:"p"},"submarine-env.sh")," is automatically executed each time the ",Object(b.b)("inlineCode",{parentName:"p"},"submarine-daemon.sh")," script is executed, so we can set the ",Object(b.b)("inlineCode",{parentName:"p"},"submarine-daemon.sh")," script and the environment variables in the ",Object(b.b)("inlineCode",{parentName:"p"},"SubmarineServer")," process via ",Object(b.b)("inlineCode",{parentName:"p"},"submarine-env.sh"),"."),Object(b.b)("table",null,Object(b.b)("thead",{parentName:"table"},Object(b.b)("tr",{parentName:"thead"},Object(b.b)("th",{parentName:"tr",align:null},"Name"),Object(b.b)("th",{parentName:"tr",align:null},"Variable"))),Object(b.b)("tbody",{parentName:"table"},Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"JAVA_HOME"),Object(b.b)("td",{parentName:"tr",align:null},"Set your java home path, default is ",Object(b.b)("inlineCode",{parentName:"td"},"java"),".")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"SUBMARINE_JAVA_OPTS"),Object(b.b)("td",{parentName:"tr",align:null},"Set the JAVA OPTS parameter when the Submarine Workbench process starts. If you need to debug the Submarine Workbench process, you can set it to ",Object(b.b)("inlineCode",{parentName:"td"},"-agentlib:jdwp=transport=dt_socket, server=y,suspend=n,address=5005"))),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"SUBMARINE_MEM"),Object(b.b)("td",{parentName:"tr",align:null},"Set the java memory parameter when the Submarine Workbench process starts.")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"MYSQL_JAR_URL"),Object(b.b)("td",{parentName:"tr",align:null},"The customized URL to download MySQL jdbc jar.")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"MYSQL_VERSION"),Object(b.b)("td",{parentName:"tr",align:null},"The version of MySQL jdbc jar to downloaded. The default value is 5.1.39. It's used to generate the default value of MYSQL_JDBC_URL")))),Object(b.b)("h3",{id:"submarine-sitexml"},"submarine-site.xml"),Object(b.b)("p",null,Object(b.b)("inlineCode",{parentName:"p"},"submarine-site.xml")," is the configuration file for the entire ",Object(b.b)("inlineCode",{parentName:"p"},"Submarine")," system to run."),Object(b.b)("table",null,Object(b.b)("thead",{parentName:"table"},Object(b.b)("tr",{parentName:"thead"},Object(b.b)("th",{parentName:"tr",align:null},"Name"),Object(b.b)("th",{parentName:"tr",align:null},"Variable"))),Object(b.b)("tbody",{parentName:"table"},Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"submarine.server.addr"),Object(b.b)("td",{parentName:"tr",align:null},"Submarine server address, default is ",Object(b.b)("inlineCode",{parentName:"td"},"0.0.0.0"))),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"submarine.server.port"),Object(b.b)("td",{parentName:"tr",align:null},"Submarine server port, default ",Object(b.b)("inlineCode",{parentName:"td"},"8080"))),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"submarine.ssl"),Object(b.b)("td",{parentName:"tr",align:null},"Should SSL be used by the Submarine servers?, default ",Object(b.b)("inlineCode",{parentName:"td"},"false"))),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"submarine.server.ssl.port"),Object(b.b)("td",{parentName:"tr",align:null},"Server ssl port. (used when ssl property is set to true), default ",Object(b.b)("inlineCode",{parentName:"td"},"8483"))),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"submarine.ssl.client.auth"),Object(b.b)("td",{parentName:"tr",align:null},"Should client authentication be used for SSL connections?")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"submarine.ssl.keystore.path"),Object(b.b)("td",{parentName:"tr",align:null},"Path to keystore relative to Submarine configuration directory")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"submarine.ssl.keystore.type"),Object(b.b)("td",{parentName:"tr",align:null},"The format of the given keystore (e.g. JKS or PKCS12)")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"submarine.ssl.keystore.password"),Object(b.b)("td",{parentName:"tr",align:null},"Keystore password. Can be obfuscated by the Jetty Password tool")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"submarine.ssl.key.manager.password"),Object(b.b)("td",{parentName:"tr",align:null},"Key Manager password. Defaults to keystore password. Can be obfuscated.")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"submarine.ssl.truststore.path"),Object(b.b)("td",{parentName:"tr",align:null},"Path to truststore relative to Submarine configuration directory. Defaults to the keystore path")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"submarine.ssl.truststore.type"),Object(b.b)("td",{parentName:"tr",align:null},"The format of the given truststore (e.g. JKS or PKCS12). Defaults to the same type as the keystore type")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"submarine.ssl.truststore.password"),Object(b.b)("td",{parentName:"tr",align:null},"Truststore password. Can be obfuscated by the Jetty Password tool. Defaults to the keystore password")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"workbench.web.war"),Object(b.b)("td",{parentName:"tr",align:null},"Submarine Workbench web war file path.")))))}s.isMDXComponent=!0},209:function(e,t,n){"use strict";n.d(t,"a",(function(){return u})),n.d(t,"b",(function(){return p}));var a=n(0),r=n.n(a);function b(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){b(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},b=Object.keys(e);for(a=0;a<b.length;a++)n=b[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var b=Object.getOwnPropertySymbols(e);for(a=0;a<b.length;a++)n=b[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var c=r.a.createContext({}),s=function(e){var t=r.a.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=s(e.components);return r.a.createElement(c.Provider,{value:t},e.children)},d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},m=r.a.forwardRef((function(e,t){var n=e.components,a=e.mdxType,b=e.originalType,o=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),u=s(n),m=a,p=u["".concat(o,".").concat(m)]||u[m]||d[m]||b;return n?r.a.createElement(p,i(i({ref:t},c),{},{components:n})):r.a.createElement(p,i({ref:t},c))}));function p(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var b=n.length,o=new Array(b);o[0]=m;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i.mdxType="string"==typeof e?e:a,o[1]=i;for(var c=2;c<b;c++)o[c]=n[c];return r.a.createElement.apply(null,o)}return r.a.createElement.apply(null,n)}m.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/bf894ff2.163f9156.js b/bf894ff2.163f9156.js
new file mode 100644
index 0000000..718eb67
--- /dev/null
+++ b/bf894ff2.163f9156.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[92],{158:function(e,t,a){"use strict";a.r(t),a.d(t,"frontMatter",(function(){return o})),a.d(t,"metadata",(function(){return c})),a.d(t,"toc",(function(){return s})),a.d(t,"default",(function(){return u}));var n=a(3),r=a(7),i=(a(0),a(194)),o={title:"Apache Submarine Community"},c={unversionedId:"community/README",id:"community/README",isDocsHomePage:!1,title:"Apache Submarine Community",description:"\x3c!--",source:"@site/docs/community/README.md",slug:"/community/README",permalink:"/docs/next/community/README",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/community/README.md",version:"current",sidebar:"docs",previous:{title:"How to Verify",permalink:"/docs/next/devDocs/HowToVerify"},next:{title:"Bylaws",permalink:"/docs/next/community/Bylaws"}},s=[{value:"Communicating",id:"communicating",children:[]},{value:"Your First Contribution",id:"your-first-contribution",children:[]},{value:"How Do I Become a Committer?",id:"how-do-i-become-a-committer",children:[]},{value:"How to commit",id:"how-to-commit",children:[]},{value:"Communication",id:"communication",children:[]},{value:"Mailing lists",id:"mailing-lists",children:[]},{value:"License",id:"license",children:[]}],b={toc:s};function u(e){var t=e.components,o=Object(r.a)(e,["components"]);return Object(i.b)("wrapper",Object(n.a)({},b,o,{components:t,mdxType:"MDXLayout"}),Object(i.b)("p",null,"Welcome to the Apache Submarine Community! The main objective is to help members of the Submarine community who share similar interests to learn from and collaborate with each other."),Object(i.b)("p",null,"Your journey of becoming a contributor and committer starts from here: improving docs, improving code, giving talks, organizing meetups, etc."),Object(i.b)("h2",{id:"communicating"},"Communicating"),Object(i.b)("p",null,"You can reach out to the community members via any one of the following ways:"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"Slack Developer: ",Object(i.b)("a",{parentName:"p",href:"https://join.slack.com/t/the-asf/shared_invite/zt-vlfbf7ch-HkbNHiU_uDlcH_RvaHv9gQ"},"https://join.slack.com/t/the-asf/shared_invite/zt-vlfbf7ch-HkbNHiU_uDlcH_RvaHv9gQ"),"\nAfter clicking the link above, you would join the ASF slack workspace, where you could search the submarine channel and join it.\n",Object(i.b)("img",{alt:"slack_search_submarine",src:a(284).default}),"\n",Object(i.b)("img",{alt:"slack_join_submarine",src:a(285).default}))),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"Zoom: ",Object(i.b)("a",{parentName:"p",href:"https://cloudera.zoom.us/j/880548968"},"https://cloudera.zoom.us/j/880548968"))),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"Sync Up: ",Object(i.b)("a",{parentName:"p",href:"https://docs.google.com/document/d/16pUO3TP4SxSeLduG817GhVAjtiph9HYpRHo_JgduDvw/edit"},"https://docs.google.com/document/d/16pUO3TP4SxSeLduG817GhVAjtiph9HYpRHo_JgduDvw/edit")))),Object(i.b)("h2",{id:"your-first-contribution"},"Your First Contribution"),Object(i.b)("p",null,"You can start by finding an existing issue with the ",Object(i.b)("a",{parentName:"p",href:"https://issues.apache.org/jira/projects/SUBMARINE/issues/SUBMARINE?filter=allopenissues"},"https://issues.apache.org/jira/projects/SUBMARINE/issues/SUBMARINE?filter=allopenissues")," label. These issues are well suited for new contributors."),Object(i.b)("p",null,"If a PR (Pull Request) submitted to the ",Object(i.b)("a",{parentName:"p",href:"https://github.com/apache/submarine"},"Submarine Github")," projects by you is approved and merged, then you become a Submarine Contributor."),Object(i.b)("p",null,"If you want to work on a new idea of relatively small scope:"),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Submit an issue describing your proposed change to the repo in question.")),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"The repo owners will respond to your issue promptly.")),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Submit a ",Object(i.b)("a",{parentName:"p",href:"https://github.com/apache/submarine"},"pull request of Submarine")," containing a tested change."))),Object(i.b)("p",null,"Contributions are welcomed and greatly appreciated. See ",Object(i.b)("a",{parentName:"p",href:"contributing"},"CONTRIBUTING")," for details on submitting patches and the contribution workflow."),Object(i.b)("h2",{id:"how-do-i-become-a-committer"},"How Do I Become a Committer?"),Object(i.b)("p",null,"First of all, you need to get involved and be a Contributor."),Object(i.b)("p",null,"Based on your track-record as a contributor, Per Apache code, PMCs vote on committership, may invite you to be a committer (after we've called a vote). When that happens, if you accept, the following process kicks into place..."),Object(i.b)("p",null,"Note that becoming a committer is not just about submitting some patches; it\u2018s also about helping out on the development and user, helping with documentation and the issues."),Object(i.b)("p",null,"See ",Object(i.b)("a",{parentName:"p",href:"/docs/next/community/HowToBecomeCommitter"},"How to become an Apache Submarine Committer and PMC")," for more details."),Object(i.b)("h2",{id:"how-to-commit"},"How to commit"),Object(i.b)("p",null,"See ",Object(i.b)("a",{parentName:"p",href:"/docs/next/community/HowToCommit"},"How to commit")," for helper doc for Submarine committers."),Object(i.b)("h2",{id:"communication"},"Communication"),Object(i.b)("p",null,"Communication within the Submarine community abides by ",Object(i.b)("a",{parentName:"p",href:"https://www.apache.org/foundation/policies/conduct.html"},"Apache\u2019s Code of Conduct"),"."),Object(i.b)("h2",{id:"mailing-lists"},"Mailing lists"),Object(i.b)("p",null,"Get help using Apache Submarine or contribute to the project on our mailing lists:"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",{parentName:"li",href:"https://lists.apache.org/list.html?users@submarine.apache.org"},"Users")," : ",Object(i.b)("a",{parentName:"li",href:"mailto:users-subscribe@submarine.apache.org"},"subscribe"),", ",Object(i.b)("a",{parentName:"li",href:"mailto:users-unsubscribe@submarine.apache.org"},"unsubscribe"),", ",Object(i.b)("a",{parentName:"li",href:"https://lists.apache.org/list.html?users@submarine.apache.org"},"archives"),"\nfor usage questions, help, and announcements."),Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",{parentName:"li",href:"https://lists.apache.org/list.html?dev@submarine.apache.org"},"Dev")," : ",Object(i.b)("a",{parentName:"li",href:"mailto:dev-subscribe@submarine.apache.org"},"subscribe"),", ",Object(i.b)("a",{parentName:"li",href:"mailto:dev-unsubscribe@submarine.apache.org"},"unsubscribe"),", ",Object(i.b)("a",{parentName:"li",href:"https://lists.apache.org/list.html?dev@submarine.apache.org"},"archives"),"\nfor people wanting to contribute to the project."),Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",{parentName:"li",href:"https://lists.apache.org/list.html?commits@submarine.apache.org"},"Commits")," : ",Object(i.b)("a",{parentName:"li",href:"mailto:commits-subscribe@submarine.apache.org"},"subscribe"),", ",Object(i.b)("a",{parentName:"li",href:"mailto:commits-unsubscribe@submarine.apache.org"},"unsubscribe"),", ",Object(i.b)("a",{parentName:"li",href:"https://lists.apache.org/list.html?commits@submarine.apache.org"},"archives"),"\nfor commit messages and patches.")),Object(i.b)("p",null,"Take subscribe Dev as an example, you should send an email to ",Object(i.b)("a",{parentName:"p",href:"mailto:dev-subscribe@submarine.apache.org"},"dev-subscribe@submarine.apache.org"),"."),Object(i.b)("p",null,'Usually, this happens when you just click the "subscribe" link. If this does not work, simply copy the address and paste it into the "To:" field of a new message.'),Object(i.b)("p",null,"After that, you will get an email from ",Object(i.b)("a",{parentName:"p",href:"mailto:dev-help@submarine.apache.org"},"dev-help@submarine.apache.org"),", follow the directives of the mail to reply, then you will subscribe ",Object(i.b)("a",{parentName:"p",href:"mailto:dev@submarine.apache.org"},"dev@submarine.apache.org")," successfully."),Object(i.b)("h2",{id:"license"},"License"),Object(i.b)("p",null,"Submarine source code is under the Apache 2.0 license. See the ",Object(i.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/blob/master/LICENSE"},"LICENSE")," file for details."))}u.isMDXComponent=!0},194:function(e,t,a){"use strict";a.d(t,"a",(function(){return l})),a.d(t,"b",(function(){return h}));var n=a(0),r=a.n(n);function i(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function c(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){i(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function s(e,t){if(null==e)return{};var a,n,r=function(e,t){if(null==e)return{};var a,n,r={},i=Object.keys(e);for(n=0;n<i.length;n++)a=i[n],t.indexOf(a)>=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)a=i[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var b=r.a.createContext({}),u=function(e){var t=r.a.useContext(b),a=t;return e&&(a="function"==typeof e?e(t):c(c({},t),e)),a},l=function(e){var t=u(e.components);return r.a.createElement(b.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},p=r.a.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,o=e.parentName,b=s(e,["components","mdxType","originalType","parentName"]),l=u(a),p=n,h=l["".concat(o,".").concat(p)]||l[p]||m[p]||i;return a?r.a.createElement(h,c(c({ref:t},b),{},{components:a})):r.a.createElement(h,c({ref:t},b))}));function h(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,o=new Array(i);o[0]=p;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c.mdxType="string"==typeof e?e:n,o[1]=c;for(var b=2;b<i;b++)o[b]=a[b];return r.a.createElement.apply(null,o)}return r.a.createElement.apply(null,a)}p.displayName="MDXCreateElement"},284:function(e,t,a){"use strict";a.r(t),t.default=a.p+"assets/images/slack_search_submarine-40af6cf663d836b328d6ddf889f808b8.png"},285:function(e,t,a){"use strict";a.r(t),t.default=a.p+"assets/images/slack_join_submarine-fb1bda09605d16d745a2e21b93551180.png"}}]);
\ No newline at end of file
diff --git a/bf894ff2.5e690517.js b/bf894ff2.5e690517.js
deleted file mode 100644
index ae93464..0000000
--- a/bf894ff2.5e690517.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[104],{170:function(e,t,a){"use strict";a.r(t),a.d(t,"frontMatter",(function(){return o})),a.d(t,"metadata",(function(){return c})),a.d(t,"toc",(function(){return s})),a.d(t,"default",(function(){return u}));var n=a(3),r=a(7),i=(a(0),a(209)),o={title:"Apache Submarine Community"},c={unversionedId:"community/README",id:"community/README",isDocsHomePage:!1,title:"Apache Submarine Community",description:"\x3c!--",source:"@site/docs/community/README.md",slug:"/community/README",permalink:"/docs/next/community/README",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/community/README.md",version:"current",sidebar:"docs",previous:{title:"How to Verify",permalink:"/docs/next/devDocs/HowToVerify"},next:{title:"Bylaws",permalink:"/docs/next/community/Bylaws"}},s=[{value:"Communicating",id:"communicating",children:[]},{value:"Your First Contribution",id:"your-first-contribution",children:[]},{value:"How Do I Become a Committer?",id:"how-do-i-become-a-committer",children:[]},{value:"How to commit",id:"how-to-commit",children:[]},{value:"Communication",id:"communication",children:[]},{value:"Mailing lists",id:"mailing-lists",children:[]},{value:"License",id:"license",children:[]}],b={toc:s};function u(e){var t=e.components,o=Object(r.a)(e,["components"]);return Object(i.b)("wrapper",Object(n.a)({},b,o,{components:t,mdxType:"MDXLayout"}),Object(i.b)("p",null,"Welcome to the Apache Submarine Community! The main objective is to help members of the Submarine community who share similar interests to learn from and collaborate with each other."),Object(i.b)("p",null,"Your journey of becoming a contributor and committer starts from here: improving docs, improving code, giving talks, organizing meetups, etc."),Object(i.b)("h2",{id:"communicating"},"Communicating"),Object(i.b)("p",null,"You can reach out to the community members via any one of the following ways:"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"Slack Developer: ",Object(i.b)("a",{parentName:"p",href:"https://join.slack.com/t/the-asf/shared_invite/zt-vlfbf7ch-HkbNHiU_uDlcH_RvaHv9gQ"},"https://join.slack.com/t/the-asf/shared_invite/zt-vlfbf7ch-HkbNHiU_uDlcH_RvaHv9gQ"),"\nAfter clicking the link above, you would join the ASF slack workspace, where you could search the submarine channel and join it.\n",Object(i.b)("img",{alt:"slack_search_submarine",src:a(300).default}),"\n",Object(i.b)("img",{alt:"slack_join_submarine",src:a(301).default}))),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"Zoom: ",Object(i.b)("a",{parentName:"p",href:"https://cloudera.zoom.us/j/880548968"},"https://cloudera.zoom.us/j/880548968"))),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"Sync Up: ",Object(i.b)("a",{parentName:"p",href:"https://docs.google.com/document/d/16pUO3TP4SxSeLduG817GhVAjtiph9HYpRHo_JgduDvw/edit"},"https://docs.google.com/document/d/16pUO3TP4SxSeLduG817GhVAjtiph9HYpRHo_JgduDvw/edit")))),Object(i.b)("h2",{id:"your-first-contribution"},"Your First Contribution"),Object(i.b)("p",null,"You can start by finding an existing issue with the ",Object(i.b)("a",{parentName:"p",href:"https://issues.apache.org/jira/projects/SUBMARINE/issues/SUBMARINE?filter=allopenissues"},"https://issues.apache.org/jira/projects/SUBMARINE/issues/SUBMARINE?filter=allopenissues")," label. These issues are well suited for new contributors."),Object(i.b)("p",null,"If a PR (Pull Request) submitted to the ",Object(i.b)("a",{parentName:"p",href:"https://github.com/apache/submarine"},"Submarine Github")," projects by you is approved and merged, then you become a Submarine Contributor."),Object(i.b)("p",null,"If you want to work on a new idea of relatively small scope:"),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Submit an issue describing your proposed change to the repo in question.")),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"The repo owners will respond to your issue promptly.")),Object(i.b)("li",{parentName:"ol"},Object(i.b)("p",{parentName:"li"},"Submit a ",Object(i.b)("a",{parentName:"p",href:"https://github.com/apache/submarine"},"pull request of Submarine")," containing a tested change."))),Object(i.b)("p",null,"Contributions are welcomed and greatly appreciated. See ",Object(i.b)("a",{parentName:"p",href:"contributing"},"CONTRIBUTING")," for details on submitting patches and the contribution workflow."),Object(i.b)("h2",{id:"how-do-i-become-a-committer"},"How Do I Become a Committer?"),Object(i.b)("p",null,"First of all, you need to get involved and be a Contributor."),Object(i.b)("p",null,"Based on your track-record as a contributor, Per Apache code, PMCs vote on committership, may invite you to be a committer (after we've called a vote). When that happens, if you accept, the following process kicks into place..."),Object(i.b)("p",null,"Note that becoming a committer is not just about submitting some patches; it\u2018s also about helping out on the development and user, helping with documentation and the issues."),Object(i.b)("p",null,"See ",Object(i.b)("a",{parentName:"p",href:"/docs/next/community/HowToBecomeCommitter"},"How to become an Apache Submarine Committer and PMC")," for more details."),Object(i.b)("h2",{id:"how-to-commit"},"How to commit"),Object(i.b)("p",null,"See ",Object(i.b)("a",{parentName:"p",href:"/docs/next/community/HowToCommit"},"How to commit")," for helper doc for Submarine committers."),Object(i.b)("h2",{id:"communication"},"Communication"),Object(i.b)("p",null,"Communication within the Submarine community abides by ",Object(i.b)("a",{parentName:"p",href:"https://www.apache.org/foundation/policies/conduct.html"},"Apache\u2019s Code of Conduct"),"."),Object(i.b)("h2",{id:"mailing-lists"},"Mailing lists"),Object(i.b)("p",null,"Get help using Apache Submarine or contribute to the project on our mailing lists:"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",{parentName:"li",href:"https://lists.apache.org/list.html?users@submarine.apache.org"},"Users")," : ",Object(i.b)("a",{parentName:"li",href:"mailto:users-subscribe@submarine.apache.org"},"subscribe"),", ",Object(i.b)("a",{parentName:"li",href:"mailto:users-unsubscribe@submarine.apache.org"},"unsubscribe"),", ",Object(i.b)("a",{parentName:"li",href:"https://lists.apache.org/list.html?users@submarine.apache.org"},"archives"),"\nfor usage questions, help, and announcements."),Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",{parentName:"li",href:"https://lists.apache.org/list.html?dev@submarine.apache.org"},"Dev")," : ",Object(i.b)("a",{parentName:"li",href:"mailto:dev-subscribe@submarine.apache.org"},"subscribe"),", ",Object(i.b)("a",{parentName:"li",href:"mailto:dev-unsubscribe@submarine.apache.org"},"unsubscribe"),", ",Object(i.b)("a",{parentName:"li",href:"https://lists.apache.org/list.html?dev@submarine.apache.org"},"archives"),"\nfor people wanting to contribute to the project."),Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",{parentName:"li",href:"https://lists.apache.org/list.html?commits@submarine.apache.org"},"Commits")," : ",Object(i.b)("a",{parentName:"li",href:"mailto:commits-subscribe@submarine.apache.org"},"subscribe"),", ",Object(i.b)("a",{parentName:"li",href:"mailto:commits-unsubscribe@submarine.apache.org"},"unsubscribe"),", ",Object(i.b)("a",{parentName:"li",href:"https://lists.apache.org/list.html?commits@submarine.apache.org"},"archives"),"\nfor commit messages and patches.")),Object(i.b)("p",null,"Take subscribe Dev as an example, you should send an email to ",Object(i.b)("a",{parentName:"p",href:"mailto:dev-subscribe@submarine.apache.org"},"dev-subscribe@submarine.apache.org"),"."),Object(i.b)("p",null,'Usually, this happens when you just click the "subscribe" link. If this does not work, simply copy the address and paste it into the "To:" field of a new message.'),Object(i.b)("p",null,"After that, you will get an email from ",Object(i.b)("a",{parentName:"p",href:"mailto:dev-help@submarine.apache.org"},"dev-help@submarine.apache.org"),", follow the directives of the mail to reply, then you will subscribe ",Object(i.b)("a",{parentName:"p",href:"mailto:dev@submarine.apache.org"},"dev@submarine.apache.org")," successfully."),Object(i.b)("h2",{id:"license"},"License"),Object(i.b)("p",null,"Submarine source code is under the Apache 2.0 license. See the ",Object(i.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/blob/master/LICENSE"},"LICENSE")," file for details."))}u.isMDXComponent=!0},209:function(e,t,a){"use strict";a.d(t,"a",(function(){return l})),a.d(t,"b",(function(){return h}));var n=a(0),r=a.n(n);function i(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function c(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){i(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function s(e,t){if(null==e)return{};var a,n,r=function(e,t){if(null==e)return{};var a,n,r={},i=Object.keys(e);for(n=0;n<i.length;n++)a=i[n],t.indexOf(a)>=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)a=i[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var b=r.a.createContext({}),u=function(e){var t=r.a.useContext(b),a=t;return e&&(a="function"==typeof e?e(t):c(c({},t),e)),a},l=function(e){var t=u(e.components);return r.a.createElement(b.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},p=r.a.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,o=e.parentName,b=s(e,["components","mdxType","originalType","parentName"]),l=u(a),p=n,h=l["".concat(o,".").concat(p)]||l[p]||m[p]||i;return a?r.a.createElement(h,c(c({ref:t},b),{},{components:a})):r.a.createElement(h,c({ref:t},b))}));function h(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,o=new Array(i);o[0]=p;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c.mdxType="string"==typeof e?e:n,o[1]=c;for(var b=2;b<i;b++)o[b]=a[b];return r.a.createElement.apply(null,o)}return r.a.createElement.apply(null,a)}p.displayName="MDXCreateElement"},300:function(e,t,a){"use strict";a.r(t),t.default=a.p+"assets/images/slack_search_submarine-40af6cf663d836b328d6ddf889f808b8.png"},301:function(e,t,a){"use strict";a.r(t),t.default=a.p+"assets/images/slack_join_submarine-fb1bda09605d16d745a2e21b93551180.png"}}]);
\ No newline at end of file
diff --git a/c18d5a16.6bdbdd39.js b/c18d5a16.6bdbdd39.js
deleted file mode 100644
index e349555..0000000
--- a/c18d5a16.6bdbdd39.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[105],{171:function(e,n,t){"use strict";t.r(n),t.d(n,"frontMatter",(function(){return o})),t.d(n,"metadata",(function(){return l})),t.d(n,"toc",(function(){return c})),t.d(n,"default",(function(){return b}));var r=t(3),a=t(7),i=(t(0),t(209)),o={title:"Submarine Local Deployment",slug:"/"},l={unversionedId:"gettingStarted/localDeployment",id:"gettingStarted/localDeployment",isDocsHomePage:!1,title:"Submarine Local Deployment",description:"\x3c!--",source:"@site/docs/gettingStarted/localDeployment.md",slug:"/",permalink:"/docs/next/",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/gettingStarted/localDeployment.md",version:"current"},c=[{value:"Prerequisite",id:"prerequisite",children:[]},{value:"Deploy Kubernetes Cluster",id:"deploy-kubernetes-cluster",children:[]},{value:"Install Submarine on Kubernetes",id:"install-submarine-on-kubernetes",children:[]},{value:"Verify installation",id:"verify-installation",children:[]},{value:"Access Submarine in a Cluster",id:"access-submarine-in-a-cluster",children:[]},{value:"Open Workbench in the browser.",id:"open-workbench-in-the-browser",children:[]},{value:"Uninstall Submarine",id:"uninstall-submarine",children:[]}],s={toc:c};function b(e){var n=e.components,t=Object(a.a)(e,["components"]);return Object(i.b)("wrapper",Object(r.a)({},s,t,{components:n,mdxType:"MDXLayout"}),Object(i.b)("h2",{id:"prerequisite"},"Prerequisite"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",{parentName:"li",href:"https://kubernetes.io/docs/tasks/tools/install-kubectl/"},"kubectl")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",{parentName:"li",href:"https://helm.sh/docs/intro/install/"},"helm")," (Helm v3 is minimum requirement.)"),Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",{parentName:"li",href:"https://minikube.sigs.k8s.io/docs/start/"},"minikube"),".")),Object(i.b)("h2",{id:"deploy-kubernetes-cluster"},"Deploy Kubernetes Cluster"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"$ minikube start --vm-driver=docker --cpus 8 --memory 4096 --disk-size=20G --kubernetes-version v1.15.11\n")),Object(i.b)("h2",{id:"install-submarine-on-kubernetes"},"Install Submarine on Kubernetes"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"$ git clone https://github.com/apache/submarine.git\n$ cd submarine\n$ helm install submarine ./helm-charts/submarine\n")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"NAME: submarine\nLAST DEPLOYED: Fri Jan 29 05:35:36 2021\nNAMESPACE: default\nSTATUS: deployed\nREVISION: 1\nTEST SUITE: None\n")),Object(i.b)("h2",{id:"verify-installation"},"Verify installation"),Object(i.b)("p",null,"Once you got it installed, check with below commands and you should see similar outputs:"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"$ kubectl get pods\n")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"NAME                                              READY   STATUS    RESTARTS   AGE\nnotebook-controller-deployment-5db8b6cbf7-k65jm   1/1     Running   0          5s\npytorch-operator-7ff5d96d59-gx7f5                 1/1     Running   0          5s\nsubmarine-database-8d95d74f7-ntvqp                1/1     Running   0          5s\nsubmarine-server-b6cd4787b-7bvr7                  1/1     Running   0          5s\nsubmarine-traefik-9bb6f8577-66sx6                 1/1     Running   0          5s\ntf-job-operator-7844656dd-lfgmd                   1/1     Running   0          5s\n")),Object(i.b)("div",{className:"admonition admonition-warning alert alert--danger"},Object(i.b)("div",{parentName:"div",className:"admonition-heading"},Object(i.b)("h5",{parentName:"div"},Object(i.b)("span",{parentName:"h5",className:"admonition-icon"},Object(i.b)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},Object(i.b)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"warning")),Object(i.b)("div",{parentName:"div",className:"admonition-content"},Object(i.b)("p",{parentName:"div"},"Note that if you encounter below issue when installation:"))),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"Error: rendered manifests contain a resource that already exists.\nUnable to continue with install: existing resource conflict: namespace: , name: podgroups.scheduling.incubator.k8s.io, existing_kind: apiextensions.k8s.io/v1beta1, Kind=CustomResourceDefinition, new_kind: apiextensions.k8s.io/v1beta1, Kind=CustomResourceDefinition\n")),Object(i.b)("p",null,"It might be caused by the previous installed submarine charts. Fix it by running:"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"$ kubectl delete crd/tfjobs.kubeflow.org && kubectl delete crd/podgroups.scheduling.incubator.k8s.io && kubectl delete crd/pytorchjobs.kubeflow.org\n")),Object(i.b)("h2",{id:"access-submarine-in-a-cluster"},"Access Submarine in a Cluster"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"# #Listen on port 32080 on all addresses, forwarding to 80 in the pod\n# Method1 -- using minikube ip + NodePort\n$ minikube ip  # you'll get the IP address of minikube, ex: 192.168.49.2\n\n# Method2 -- using port-forwarding\n$ kubectl port-forward --address 0.0.0.0 service/submarine-traefik 32080:80\n")),Object(i.b)("h2",{id:"open-workbench-in-the-browser"},"Open Workbench in the browser."),Object(i.b)("p",null,"Open http://{minikube ip}:32080(from Method1), ex: ",Object(i.b)("a",{parentName:"p",href:"http://192.168.49.2:32080"},"http://192.168.49.2:32080")),Object(i.b)("p",null,"or ",Object(i.b)("a",{parentName:"p",href:"http://127.0.0.1:32080"},"http://127.0.0.1:32080")," (from Method 2)."),Object(i.b)("p",null,"The default username and password is ",Object(i.b)("inlineCode",{parentName:"p"},"admin")," and ",Object(i.b)("inlineCode",{parentName:"p"},"admin")),Object(i.b)("p",null,Object(i.b)("img",{parentName:"p",src:"https://i.imgur.com/DkZhyEG.png",alt:null})),Object(i.b)("h2",{id:"uninstall-submarine"},"Uninstall Submarine"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"$ helm delete submarine\n")))}b.isMDXComponent=!0},209:function(e,n,t){"use strict";t.d(n,"a",(function(){return u})),t.d(n,"b",(function(){return m}));var r=t(0),a=t.n(r);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function o(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 l(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?o(Object(t),!0).forEach((function(n){i(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):o(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function c(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)t=i[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)t=i[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var s=a.a.createContext({}),b=function(e){var n=a.a.useContext(s),t=n;return e&&(t="function"==typeof e?e(n):l(l({},n),e)),t},u=function(e){var n=b(e.components);return a.a.createElement(s.Provider,{value:n},e.children)},p={inlineCode:"code",wrapper:function(e){var n=e.children;return a.a.createElement(a.a.Fragment,{},n)}},d=a.a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,i=e.originalType,o=e.parentName,s=c(e,["components","mdxType","originalType","parentName"]),u=b(t),d=r,m=u["".concat(o,".").concat(d)]||u[d]||p[d]||i;return t?a.a.createElement(m,l(l({ref:n},s),{},{components:t})):a.a.createElement(m,l({ref:n},s))}));function m(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var i=t.length,o=new Array(i);o[0]=d;var l={};for(var c in n)hasOwnProperty.call(n,c)&&(l[c]=n[c]);l.originalType=e,l.mdxType="string"==typeof e?e:r,o[1]=l;for(var s=2;s<i;s++)o[s]=t[s];return a.a.createElement.apply(null,o)}return a.a.createElement.apply(null,t)}d.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/c18d5a16.d84dd42a.js b/c18d5a16.d84dd42a.js
new file mode 100644
index 0000000..f5c293d
--- /dev/null
+++ b/c18d5a16.d84dd42a.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[93],{159:function(e,n,t){"use strict";t.r(n),t.d(n,"frontMatter",(function(){return o})),t.d(n,"metadata",(function(){return l})),t.d(n,"toc",(function(){return c})),t.d(n,"default",(function(){return b}));var r=t(3),a=t(7),i=(t(0),t(194)),o={title:"Submarine Local Deployment",slug:"/"},l={unversionedId:"gettingStarted/localDeployment",id:"gettingStarted/localDeployment",isDocsHomePage:!1,title:"Submarine Local Deployment",description:"\x3c!--",source:"@site/docs/gettingStarted/localDeployment.md",slug:"/",permalink:"/docs/next/",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/gettingStarted/localDeployment.md",version:"current"},c=[{value:"Prerequisite",id:"prerequisite",children:[]},{value:"Deploy Kubernetes Cluster",id:"deploy-kubernetes-cluster",children:[]},{value:"Install Submarine on Kubernetes",id:"install-submarine-on-kubernetes",children:[]},{value:"Verify installation",id:"verify-installation",children:[]},{value:"Access Submarine in a Cluster",id:"access-submarine-in-a-cluster",children:[]},{value:"Open Workbench in the browser.",id:"open-workbench-in-the-browser",children:[]},{value:"Uninstall Submarine",id:"uninstall-submarine",children:[]}],s={toc:c};function b(e){var n=e.components,t=Object(a.a)(e,["components"]);return Object(i.b)("wrapper",Object(r.a)({},s,t,{components:n,mdxType:"MDXLayout"}),Object(i.b)("h2",{id:"prerequisite"},"Prerequisite"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",{parentName:"li",href:"https://kubernetes.io/docs/tasks/tools/install-kubectl/"},"kubectl")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",{parentName:"li",href:"https://helm.sh/docs/intro/install/"},"helm")," (Helm v3 is minimum requirement.)"),Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",{parentName:"li",href:"https://minikube.sigs.k8s.io/docs/start/"},"minikube"),".")),Object(i.b)("h2",{id:"deploy-kubernetes-cluster"},"Deploy Kubernetes Cluster"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"$ minikube start --vm-driver=docker --cpus 8 --memory 4096 --disk-size=20G --kubernetes-version v1.15.11\n")),Object(i.b)("h2",{id:"install-submarine-on-kubernetes"},"Install Submarine on Kubernetes"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"$ git clone https://github.com/apache/submarine.git\n$ cd submarine\n$ helm install submarine ./helm-charts/submarine\n")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"NAME: submarine\nLAST DEPLOYED: Fri Jan 29 05:35:36 2021\nNAMESPACE: default\nSTATUS: deployed\nREVISION: 1\nTEST SUITE: None\n")),Object(i.b)("h2",{id:"verify-installation"},"Verify installation"),Object(i.b)("p",null,"Once you got it installed, check with below commands and you should see similar outputs:"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"$ kubectl get pods\n")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"NAME                                              READY   STATUS    RESTARTS   AGE\nnotebook-controller-deployment-5db8b6cbf7-k65jm   1/1     Running   0          5s\npytorch-operator-7ff5d96d59-gx7f5                 1/1     Running   0          5s\nsubmarine-database-8d95d74f7-ntvqp                1/1     Running   0          5s\nsubmarine-server-b6cd4787b-7bvr7                  1/1     Running   0          5s\nsubmarine-traefik-9bb6f8577-66sx6                 1/1     Running   0          5s\ntf-job-operator-7844656dd-lfgmd                   1/1     Running   0          5s\n")),Object(i.b)("div",{className:"admonition admonition-warning alert alert--danger"},Object(i.b)("div",{parentName:"div",className:"admonition-heading"},Object(i.b)("h5",{parentName:"div"},Object(i.b)("span",{parentName:"h5",className:"admonition-icon"},Object(i.b)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},Object(i.b)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"warning")),Object(i.b)("div",{parentName:"div",className:"admonition-content"},Object(i.b)("p",{parentName:"div"},"Note that if you encounter below issue when installation:"))),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"Error: rendered manifests contain a resource that already exists.\nUnable to continue with install: existing resource conflict: namespace: , name: podgroups.scheduling.incubator.k8s.io, existing_kind: apiextensions.k8s.io/v1beta1, Kind=CustomResourceDefinition, new_kind: apiextensions.k8s.io/v1beta1, Kind=CustomResourceDefinition\n")),Object(i.b)("p",null,"It might be caused by the previous installed submarine charts. Fix it by running:"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"$ kubectl delete crd/tfjobs.kubeflow.org && kubectl delete crd/podgroups.scheduling.incubator.k8s.io && kubectl delete crd/pytorchjobs.kubeflow.org\n")),Object(i.b)("h2",{id:"access-submarine-in-a-cluster"},"Access Submarine in a Cluster"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"# #Listen on port 32080 on all addresses, forwarding to 80 in the pod\n# Method1 -- using minikube ip + NodePort\n$ minikube ip  # you'll get the IP address of minikube, ex: 192.168.49.2\n\n# Method2 -- using port-forwarding\n$ kubectl port-forward --address 0.0.0.0 service/submarine-traefik 32080:80\n")),Object(i.b)("h2",{id:"open-workbench-in-the-browser"},"Open Workbench in the browser."),Object(i.b)("p",null,"Open http://{minikube ip}:32080(from Method1), ex: ",Object(i.b)("a",{parentName:"p",href:"http://192.168.49.2:32080"},"http://192.168.49.2:32080")),Object(i.b)("p",null,"or ",Object(i.b)("a",{parentName:"p",href:"http://127.0.0.1:32080"},"http://127.0.0.1:32080")," (from Method 2)."),Object(i.b)("p",null,"The default username and password is ",Object(i.b)("inlineCode",{parentName:"p"},"admin")," and ",Object(i.b)("inlineCode",{parentName:"p"},"admin")),Object(i.b)("p",null,Object(i.b)("img",{parentName:"p",src:"https://i.imgur.com/DkZhyEG.png",alt:null})),Object(i.b)("h2",{id:"uninstall-submarine"},"Uninstall Submarine"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"$ helm delete submarine\n")))}b.isMDXComponent=!0},194:function(e,n,t){"use strict";t.d(n,"a",(function(){return u})),t.d(n,"b",(function(){return m}));var r=t(0),a=t.n(r);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function o(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 l(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?o(Object(t),!0).forEach((function(n){i(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):o(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function c(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)t=i[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)t=i[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var s=a.a.createContext({}),b=function(e){var n=a.a.useContext(s),t=n;return e&&(t="function"==typeof e?e(n):l(l({},n),e)),t},u=function(e){var n=b(e.components);return a.a.createElement(s.Provider,{value:n},e.children)},p={inlineCode:"code",wrapper:function(e){var n=e.children;return a.a.createElement(a.a.Fragment,{},n)}},d=a.a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,i=e.originalType,o=e.parentName,s=c(e,["components","mdxType","originalType","parentName"]),u=b(t),d=r,m=u["".concat(o,".").concat(d)]||u[d]||p[d]||i;return t?a.a.createElement(m,l(l({ref:n},s),{},{components:t})):a.a.createElement(m,l({ref:n},s))}));function m(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var i=t.length,o=new Array(i);o[0]=d;var l={};for(var c in n)hasOwnProperty.call(n,c)&&(l[c]=n[c]);l.originalType=e,l.mdxType="string"==typeof e?e:r,o[1]=l;for(var s=2;s<i;s++)o[s]=t[s];return a.a.createElement.apply(null,o)}return a.a.createElement.apply(null,t)}d.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/c28aed56.3af06266.js b/c28aed56.3af06266.js
deleted file mode 100644
index 0a2c27b..0000000
--- a/c28aed56.3af06266.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[106],{172:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return c})),n.d(t,"metadata",(function(){return i})),n.d(t,"toc",(function(){return u})),n.d(t,"default",(function(){return s}));var o=n(3),r=n(7),a=(n(0),n(209)),c={},i={unversionedId:"adminDocs/yarn/workbench/notebook/setup-jupyter",id:"version-0.6.0/adminDocs/yarn/workbench/notebook/setup-jupyter",isDocsHomePage:!1,title:"setup-jupyter",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/adminDocs/yarn/workbench/notebook/setup-jupyter.md",slug:"/adminDocs/yarn/workbench/notebook/setup-jupyter",permalink:"/docs/adminDocs/yarn/workbench/notebook/setup-jupyter",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/adminDocs/yarn/workbench/notebook/setup-jupyter.md",version:"0.6.0"},u=[{value:"Experiment environment",id:"experiment-environment",children:[{value:"Setup Kubernetes",id:"setup-kubernetes",children:[]},{value:"Deploy Jupyter Notebook",id:"deploy-jupyter-notebook",children:[]}]}],p={toc:u};function s(e){var t=e.components,c=Object(r.a)(e,["components"]);return Object(a.b)("wrapper",Object(o.a)({},p,c,{components:t,mdxType:"MDXLayout"}),Object(a.b)("h1",{id:"deploy-jupyter-notebook-on-kubernetes"},"Deploy Jupyter Notebook on Kubernetes"),Object(a.b)("p",null,"This guide covers the deployment Jupyter Notebook on kubernetes cluster."),Object(a.b)("h2",{id:"experiment-environment"},"Experiment environment"),Object(a.b)("h3",{id:"setup-kubernetes"},"Setup Kubernetes"),Object(a.b)("p",null,"We recommend using ",Object(a.b)("a",{parentName:"p",href:"https://kind.sigs.k8s.io/"},"kind")," to setup a Kubernetes cluster on a local machine."),Object(a.b)("p",null,"You can use Extra mounts to mount your host path to kind node and use Extra port mappings to port\nforward to the kind nodes. Please refer to ",Object(a.b)("a",{parentName:"p",href:"https://kind.sigs.k8s.io/docs/user/configuration/#extra-mounts"},"kind configuration"),"\nfor more details."),Object(a.b)("p",null,"You need to create a kind config file. The following is an example :"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},"kind: Cluster\napiVersion: kind.x-k8s.io/v1alpha4\nnodes:\n- role: control-plane\n  extraMounts:\n  # add a mount from /path/to/my/files on the host to /files on the node\n  - hostPath: /tmp/submarine\n    containerPath: /tmp/submarine\n  extraPortMappings:\n  - containerPort: 80\n    hostPort: 80\n    protocol: TCP\n  # exposing additional ports to be used for NodePort services\n  - containerPort: 30070\n    hostPort: 8888\n    protocol: TCP\n")),Object(a.b)("p",null,"Running the following command:"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},"kind create cluster --image kindest/node:v1.15.6 --config <path-to-kind-config> --name k8s-submarine\nkubectl create namespace submarine\n")),Object(a.b)("h3",{id:"deploy-jupyter-notebook"},"Deploy Jupyter Notebook"),Object(a.b)("p",null,"Once you have a running Kubernetes cluster, you can write a YAML file to deploy a jupyter notebook.\nIn this ",Object(a.b)("a",{target:"_blank",href:n(302).default},"example yaml"),", we use ",Object(a.b)("a",{parentName:"p",href:"https://hub.docker.com/r/jupyter/minimal-notebook/"},"jupyter/minimal-notebook"),"\nto make a single notebook running on the kind node."),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},"kubectl apply -f jupyter.yaml --namespace submarine\n")),Object(a.b)("p",null,"Once jupyter notebook is running, you can access the notebook server from the browser using http://localhost:8888 on local machine."),Object(a.b)("p",null,"You can enter and store a password for your notebook server with:"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},"kubectl exec -it <jupyter-pod-name> -- jupyter notebook password\n")),Object(a.b)("p",null,"After restarting the notebook server,  you can login jupyter notebook with your new password."),Object(a.b)("p",null,"If you want to use JupyterLab :"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},"http://localhost:8888/lab\n")))}s.isMDXComponent=!0},209:function(e,t,n){"use strict";n.d(t,"a",(function(){return b})),n.d(t,"b",(function(){return m}));var o=n(0),r=n.n(o);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?c(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):c(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function u(e,t){if(null==e)return{};var n,o,r=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o<a.length;o++)n=a[o],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o<a.length;o++)n=a[o],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var p=r.a.createContext({}),s=function(e){var t=r.a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},b=function(e){var t=s(e.components);return r.a.createElement(p.Provider,{value:t},e.children)},l={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},d=r.a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,c=e.parentName,p=u(e,["components","mdxType","originalType","parentName"]),b=s(n),d=o,m=b["".concat(c,".").concat(d)]||b[d]||l[d]||a;return n?r.a.createElement(m,i(i({ref:t},p),{},{components:n})):r.a.createElement(m,i({ref:t},p))}));function m(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,c=new Array(a);c[0]=d;var i={};for(var u in t)hasOwnProperty.call(t,u)&&(i[u]=t[u]);i.originalType=e,i.mdxType="string"==typeof e?e:o,c[1]=i;for(var p=2;p<a;p++)c[p]=n[p];return r.a.createElement.apply(null,c)}return r.a.createElement.apply(null,n)}d.displayName="MDXCreateElement"},302:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/files/jupyter-b412bca5cd2199cfea640f5453431d9d.yaml"}}]);
\ No newline at end of file
diff --git a/c28aed56.fdadbb0c.js b/c28aed56.fdadbb0c.js
new file mode 100644
index 0000000..4f9b984
--- /dev/null
+++ b/c28aed56.fdadbb0c.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[94],{160:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return c})),n.d(t,"metadata",(function(){return i})),n.d(t,"toc",(function(){return u})),n.d(t,"default",(function(){return s}));var o=n(3),r=n(7),a=(n(0),n(194)),c={},i={unversionedId:"adminDocs/yarn/workbench/notebook/setup-jupyter",id:"version-0.6.0/adminDocs/yarn/workbench/notebook/setup-jupyter",isDocsHomePage:!1,title:"setup-jupyter",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/adminDocs/yarn/workbench/notebook/setup-jupyter.md",slug:"/adminDocs/yarn/workbench/notebook/setup-jupyter",permalink:"/docs/adminDocs/yarn/workbench/notebook/setup-jupyter",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/adminDocs/yarn/workbench/notebook/setup-jupyter.md",version:"0.6.0"},u=[{value:"Experiment environment",id:"experiment-environment",children:[{value:"Setup Kubernetes",id:"setup-kubernetes",children:[]},{value:"Deploy Jupyter Notebook",id:"deploy-jupyter-notebook",children:[]}]}],p={toc:u};function s(e){var t=e.components,c=Object(r.a)(e,["components"]);return Object(a.b)("wrapper",Object(o.a)({},p,c,{components:t,mdxType:"MDXLayout"}),Object(a.b)("h1",{id:"deploy-jupyter-notebook-on-kubernetes"},"Deploy Jupyter Notebook on Kubernetes"),Object(a.b)("p",null,"This guide covers the deployment Jupyter Notebook on kubernetes cluster."),Object(a.b)("h2",{id:"experiment-environment"},"Experiment environment"),Object(a.b)("h3",{id:"setup-kubernetes"},"Setup Kubernetes"),Object(a.b)("p",null,"We recommend using ",Object(a.b)("a",{parentName:"p",href:"https://kind.sigs.k8s.io/"},"kind")," to setup a Kubernetes cluster on a local machine."),Object(a.b)("p",null,"You can use Extra mounts to mount your host path to kind node and use Extra port mappings to port\nforward to the kind nodes. Please refer to ",Object(a.b)("a",{parentName:"p",href:"https://kind.sigs.k8s.io/docs/user/configuration/#extra-mounts"},"kind configuration"),"\nfor more details."),Object(a.b)("p",null,"You need to create a kind config file. The following is an example :"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},"kind: Cluster\napiVersion: kind.x-k8s.io/v1alpha4\nnodes:\n- role: control-plane\n  extraMounts:\n  # add a mount from /path/to/my/files on the host to /files on the node\n  - hostPath: /tmp/submarine\n    containerPath: /tmp/submarine\n  extraPortMappings:\n  - containerPort: 80\n    hostPort: 80\n    protocol: TCP\n  # exposing additional ports to be used for NodePort services\n  - containerPort: 30070\n    hostPort: 8888\n    protocol: TCP\n")),Object(a.b)("p",null,"Running the following command:"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},"kind create cluster --image kindest/node:v1.15.6 --config <path-to-kind-config> --name k8s-submarine\nkubectl create namespace submarine\n")),Object(a.b)("h3",{id:"deploy-jupyter-notebook"},"Deploy Jupyter Notebook"),Object(a.b)("p",null,"Once you have a running Kubernetes cluster, you can write a YAML file to deploy a jupyter notebook.\nIn this ",Object(a.b)("a",{target:"_blank",href:n(286).default},"example yaml"),", we use ",Object(a.b)("a",{parentName:"p",href:"https://hub.docker.com/r/jupyter/minimal-notebook/"},"jupyter/minimal-notebook"),"\nto make a single notebook running on the kind node."),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},"kubectl apply -f jupyter.yaml --namespace submarine\n")),Object(a.b)("p",null,"Once jupyter notebook is running, you can access the notebook server from the browser using http://localhost:8888 on local machine."),Object(a.b)("p",null,"You can enter and store a password for your notebook server with:"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},"kubectl exec -it <jupyter-pod-name> -- jupyter notebook password\n")),Object(a.b)("p",null,"After restarting the notebook server,  you can login jupyter notebook with your new password."),Object(a.b)("p",null,"If you want to use JupyterLab :"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},"http://localhost:8888/lab\n")))}s.isMDXComponent=!0},194:function(e,t,n){"use strict";n.d(t,"a",(function(){return b})),n.d(t,"b",(function(){return m}));var o=n(0),r=n.n(o);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?c(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):c(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function u(e,t){if(null==e)return{};var n,o,r=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o<a.length;o++)n=a[o],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o<a.length;o++)n=a[o],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var p=r.a.createContext({}),s=function(e){var t=r.a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},b=function(e){var t=s(e.components);return r.a.createElement(p.Provider,{value:t},e.children)},l={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},d=r.a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,c=e.parentName,p=u(e,["components","mdxType","originalType","parentName"]),b=s(n),d=o,m=b["".concat(c,".").concat(d)]||b[d]||l[d]||a;return n?r.a.createElement(m,i(i({ref:t},p),{},{components:n})):r.a.createElement(m,i({ref:t},p))}));function m(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,c=new Array(a);c[0]=d;var i={};for(var u in t)hasOwnProperty.call(t,u)&&(i[u]=t[u]);i.originalType=e,i.mdxType="string"==typeof e?e:o,c[1]=i;for(var p=2;p<a;p++)c[p]=n[p];return r.a.createElement.apply(null,c)}return r.a.createElement.apply(null,n)}d.displayName="MDXCreateElement"},286:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/files/jupyter-b412bca5cd2199cfea640f5453431d9d.yaml"}}]);
\ No newline at end of file
diff --git a/c4f5d8e4.4fc79c88.js b/c4f5d8e4.4fc79c88.js
new file mode 100644
index 0000000..ca919df
--- /dev/null
+++ b/c4f5d8e4.4fc79c88.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[95,13,15],{161:function(e,a,t){"use strict";t.r(a);var n=t(3),r=t(0),c=t.n(r),l=t(196),i=t(204),s=t(198),o=t(22),u=t(201),m=t(162),h=t.n(m),d=[{title:"Data Preprocessing",imageUrl:"img/spark-flink.png",description:c.a.createElement(c.a.Fragment,null,"Submarine supports data processing and algorithm development using spark & python through notebook")},{title:"Machine Learning",imageUrl:"img/tf-pytorch.png",description:c.a.createElement(c.a.Fragment,null,"Submarine supports multiple machine learning frameworks for model training.")},{title:"Infrastructure",imageUrl:"img/yarn-k8s.png",description:c.a.createElement(c.a.Fragment,null,"Submarine supports Yarn, Kubernetes, Docker with Resource Scheduling.")}];function p(e){var a=e.imageUrl,t=e.title,n=e.description,r=Object(u.a)(a);return c.a.createElement("div",{className:Object(l.a)("col col--4",h.a.feature)},r&&c.a.createElement("div",{className:"text--center"},c.a.createElement("img",{className:h.a.featureImage,src:r,alt:t})),c.a.createElement("h3",null,t),c.a.createElement("p",null,n))}a.default=function(){var e=Object(o.default)().siteConfig,a=void 0===e?{}:e;return c.a.createElement(i.a,{title:"Hello from "+a.title,description:"Description will go into a meta tag in <head />"},c.a.createElement("header",{className:Object(l.a)("hero hero--primary",h.a.heroBanner)},c.a.createElement("div",{className:"container"},c.a.createElement("h1",{className:"hero__title"},a.title),c.a.createElement("p",{className:"hero__subtitle"},a.tagline),c.a.createElement("div",{className:h.a.buttons},c.a.createElement(s.a,{className:Object(l.a)("button button--outline button--secondary button--lg",h.a.getStarted),to:Object(u.a)("/docs/gettingStarted/quickstart")},"Get Started"),c.a.createElement("iframe",{src:"https://ghbtns.com/github-btn.html?user=apache&repo=submarine&type=star&count=true&size=large",frameBorder:0,scrolling:0,width:160,height:30,title:"GitHub Stars"})))),c.a.createElement("main",null,d&&d.length>0&&c.a.createElement("section",{className:h.a.features},c.a.createElement("div",{className:"container"},c.a.createElement("div",{className:"row"},d.map((function(e,a){return c.a.createElement(p,Object(n.a)({key:a},e))})))))))}},205:function(e,a,t){"use strict";var n=t(0),r=t.n(n),c=t(203),l=t.n(c),i=t(197),s=t(22);a.a=function(e){var a=Object(n.useRef)(!1),c=Object(n.useRef)(null),o=Object(i.useHistory)(),u=Object(s.default)().siteConfig,m=(void 0===u?{}:u).baseUrl,h=function(){a.current||(Promise.all([fetch(m+"search-doc.json").then((function(e){return e.json()})),fetch(m+"lunr-index.json").then((function(e){return e.json()})),Promise.all([t.e(127),t.e(131)]).then(t.bind(null,208)),t.e(86).then(t.t.bind(null,207,7))]).then((function(e){!function(e,a,t){new t({searchDocs:e,searchIndex:a,inputSelector:"#search_input_react",handleSelected:function(e,a,t){var n=m+t.url;document.createElement("a").href=n,o.push(n)}})}(e[0],e[1],e[2].default)})),a.current=!0)},d=Object(n.useCallback)((function(a){c.current.contains(a.target)||c.current.focus(),e.handleSearchBarToggle(!e.isSearchBarExpanded)}),[e.isSearchBarExpanded]);return r.a.createElement("div",{className:"navbar__search",key:"search-box"},r.a.createElement("span",{"aria-label":"expand searchbar",role:"button",className:l()("search-icon",{"search-icon-hidden":e.isSearchBarExpanded}),onClick:d,onKeyDown:d,tabIndex:0}),r.a.createElement("input",{id:"search_input_react",type:"search",placeholder:"Search","aria-label":"Search",className:l()("navbar__search-input",{"search-bar-expanded":e.isSearchBarExpanded},{"search-bar":!e.isSearchBarExpanded}),onClick:h,onMouseOver:h,onFocus:d,onBlur:d,ref:c}))}}}]);
\ No newline at end of file
diff --git a/c4f5d8e4.89aae0ca.js b/c4f5d8e4.89aae0ca.js
deleted file mode 100644
index 288e55e..0000000
--- a/c4f5d8e4.89aae0ca.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[107,13,15],{173:function(e,a,t){"use strict";t.r(a);var n=t(3),r=t(0),c=t.n(r),l=t(211),i=t(226),s=t(213),o=t(22),u=t(216),m=t(174),h=t.n(m),d=[{title:"Data Preprocessing",imageUrl:"img/spark-flink.png",description:c.a.createElement(c.a.Fragment,null,"Submarine supports data processing and algorithm development using spark & python through notebook")},{title:"Machine Learning",imageUrl:"img/tf-pytorch.png",description:c.a.createElement(c.a.Fragment,null,"Submarine supports multiple machine learning frameworks for model training.")},{title:"Infrastructure",imageUrl:"img/yarn-k8s.png",description:c.a.createElement(c.a.Fragment,null,"Submarine supports Yarn, Kubernetes, Docker with Resource Scheduling.")}];function p(e){var a=e.imageUrl,t=e.title,n=e.description,r=Object(u.a)(a);return c.a.createElement("div",{className:Object(l.a)("col col--4",h.a.feature)},r&&c.a.createElement("div",{className:"text--center"},c.a.createElement("img",{className:h.a.featureImage,src:r,alt:t})),c.a.createElement("h3",null,t),c.a.createElement("p",null,n))}a.default=function(){var e=Object(o.default)().siteConfig,a=void 0===e?{}:e;return c.a.createElement(i.a,{title:"Hello from "+a.title,description:"Description will go into a meta tag in <head />"},c.a.createElement("header",{className:Object(l.a)("hero hero--primary",h.a.heroBanner)},c.a.createElement("div",{className:"container"},c.a.createElement("h1",{className:"hero__title"},a.title),c.a.createElement("p",{className:"hero__subtitle"},a.tagline),c.a.createElement("div",{className:h.a.buttons},c.a.createElement(s.a,{className:Object(l.a)("button button--outline button--secondary button--lg",h.a.getStarted),to:Object(u.a)("/docs/gettingStarted/quickstart")},"Get Started"),c.a.createElement("iframe",{src:"https://ghbtns.com/github-btn.html?user=apache&repo=submarine&type=star&count=true&size=large",frameBorder:0,scrolling:0,width:160,height:30,title:"GitHub Stars"})))),c.a.createElement("main",null,d&&d.length>0&&c.a.createElement("section",{className:h.a.features},c.a.createElement("div",{className:"container"},c.a.createElement("div",{className:"row"},d.map((function(e,a){return c.a.createElement(p,Object(n.a)({key:a},e))})))))))}},227:function(e,a,t){"use strict";var n=t(0),r=t.n(n),c=t(225),l=t.n(c),i=t(212),s=t(22);a.a=function(e){var a=Object(n.useRef)(!1),c=Object(n.useRef)(null),o=Object(i.useHistory)(),u=Object(s.default)().siteConfig,m=(void 0===u?{}:u).baseUrl,h=function(){a.current||(Promise.all([fetch(m+"search-doc.json").then((function(e){return e.json()})),fetch(m+"lunr-index.json").then((function(e){return e.json()})),Promise.all([t.e(142),t.e(146)]).then(t.bind(null,230)),t.e(97).then(t.t.bind(null,229,7))]).then((function(e){!function(e,a,t){new t({searchDocs:e,searchIndex:a,inputSelector:"#search_input_react",handleSelected:function(e,a,t){var n=m+t.url;document.createElement("a").href=n,o.push(n)}})}(e[0],e[1],e[2].default)})),a.current=!0)},d=Object(n.useCallback)((function(a){c.current.contains(a.target)||c.current.focus(),e.handleSearchBarToggle(!e.isSearchBarExpanded)}),[e.isSearchBarExpanded]);return r.a.createElement("div",{className:"navbar__search",key:"search-box"},r.a.createElement("span",{"aria-label":"expand searchbar",role:"button",className:l()("search-icon",{"search-icon-hidden":e.isSearchBarExpanded}),onClick:d,onKeyDown:d,tabIndex:0}),r.a.createElement("input",{id:"search_input_react",type:"search",placeholder:"Search","aria-label":"Search",className:l()("navbar__search-input",{"search-bar-expanded":e.isSearchBarExpanded},{"search-bar":!e.isSearchBarExpanded}),onClick:h,onMouseOver:h,onFocus:d,onBlur:d,ref:c}))}}}]);
\ No newline at end of file
diff --git a/c5a80c58.58d174c9.js b/c5a80c58.58d174c9.js
new file mode 100644
index 0000000..42ee313
--- /dev/null
+++ b/c5a80c58.58d174c9.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[96],{163:function(e,a,r){"use strict";r.r(a),r.d(a,"frontMatter",(function(){return s})),r.d(a,"metadata",(function(){return b})),r.d(a,"toc",(function(){return c})),r.d(a,"default",(function(){return o}));var t=r(3),n=r(7),i=(r(0),r(194)),s={title:"Download Apache Submarine"},b={unversionedId:"download",id:"version-0.6.0/download",isDocsHomePage:!1,title:"Download Apache Submarine",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/download.md",slug:"/download",permalink:"/docs/download",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/download.md",version:"0.6.0"},c=[{value:"Verify the integrity of the files",id:"verify-the-integrity-of-the-files",children:[]},{value:"Old releases",id:"old-releases",children:[]}],p={toc:c};function o(e){var a=e.components,r=Object(n.a)(e,["components"]);return Object(i.b)("wrapper",Object(t.a)({},p,r,{components:a,mdxType:"MDXLayout"}),Object(i.b)("p",null,"The latest release of Apache Submarine is ",Object(i.b)("inlineCode",{parentName:"p"},"0.5.0"),"."),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Apache Submarine ",Object(i.b)("inlineCode",{parentName:"li"},"0.5.0")," released on Dec 17, 2020 (",Object(i.b)("a",{parentName:"li",href:"https://submarine.apache.org/releases/submarine-release-0.5.0"},"release notes"),") (",Object(i.b)("a",{parentName:"li",href:"https://github.com/apache/submarine/tree/rel/release-0.5.0"},"git tag"),")",Object(i.b)("ul",{parentName:"li"},Object(i.b)("li",{parentName:"ul"},"Binary package:\n",Object(i.b)("a",{parentName:"li",href:"https://www.apache.org/dyn/closer.cgi/submarine/submarine-0.5.0/submarine-dist-0.5.0-hadoop-2.9.tar.gz"},"submarine-dist-0.5.0-hadoop-2.9.tar.gz")," (505 MB, ",Object(i.b)("a",{parentName:"li",href:"https://www.apache.org/dist/submarine/submarine-0.5.0/submarine-dist-0.5.0-hadoop-2.9.tar.gz.sha512"},"checksum"),", ",Object(i.b)("a",{parentName:"li",href:"https://www.apache.org/dist/submarine/submarine-0.5.0/submarine-dist-0.5.0-hadoop-2.9.tar.gz.asc"},"signature"),")"),Object(i.b)("li",{parentName:"ul"},"Source:\n",Object(i.b)("a",{parentName:"li",href:"https://www.apache.org/dyn/closer.cgi/submarine/submarine-0.5.0/submarine-dist-0.5.0-src.tar.gz"},"submarine-dist-0.5.0-src.tar.gz")," (5.0 MB, ",Object(i.b)("a",{parentName:"li",href:"https://www.apache.org/dist/submarine/submarine-0.5.0/submarine-dist-0.5.0-src.tar.gz.sha512"},"checksum"),", ",Object(i.b)("a",{parentName:"li",href:"https://www.apache.org/dist/submarine/submarine-0.5.0/submarine-dist-0.5.0-src.tar.gz.asc"},"signature"),"))"),Object(i.b)("li",{parentName:"ul"},"Docker images:",Object(i.b)("ul",{parentName:"li"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",{parentName:"li",href:"https://hub.docker.com/layers/apache/submarine/mini-0.5.0/images/sha256-e3248c8c6336b245539028043783b91135eaffe9302dec05fe13571a0f2902a6"},"mini-submarine")," ",Object(i.b)("inlineCode",{parentName:"li"},"docker pull apache/submarine:mini-0.5.0")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",{parentName:"li",href:"https://hub.docker.com/layers/apache/submarine/server-0.5.0/images/sha256-1805df8fd8e5274d16be8cdf39900d8576119c0caac7598db29990ebe138bf5c"},"submarine server")," ",Object(i.b)("inlineCode",{parentName:"li"},"docker pull apache/submarine:server-0.5.0")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",{parentName:"li",href:"https://hub.docker.com/layers/apache/submarine/database-0.5.0/images/sha256-073889e773c1b44cef9f518dc2fc468ebc420200f6087e2a943438677dadc9e5"},"submarine database")," ",Object(i.b)("inlineCode",{parentName:"li"},"docker pull apache/submarine:database-0.5.0")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",{parentName:"li",href:"https://hub.docker.com/layers/apache/submarine/jupyter-notebook-0.5.0/images/sha256-f3cc2510c208b752ef4be7b383ee8f2325e4fc538696078bdb604d62fa47e4be"},"submarine jupyter-notebook")," ",Object(i.b)("inlineCode",{parentName:"li"},"docker pull apache/submarine:jupyter-notebook-0.5.0")))),Object(i.b)("li",{parentName:"ul"},"SDK:",Object(i.b)("ul",{parentName:"li"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",{parentName:"li",href:"https://pypi.org/project/apache-submarine/0.5.0/"},"PySubmarine")," ",Object(i.b)("inlineCode",{parentName:"li"},"pip install apache-submarine==0.5.0"))))))),Object(i.b)("h2",{id:"verify-the-integrity-of-the-files"},"Verify the integrity of the files"),Object(i.b)("p",null,"It is essential that you ",Object(i.b)("a",{parentName:"p",href:"https://www.apache.org/info/verification.html"},"verify")," the integrity of the downloaded files using the PGP or MD5 signatures. This signature should be matched against the ",Object(i.b)("a",{parentName:"p",href:"https://www.apache.org/dist/submarine/KEYS"},"KEYS")," file."),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"gpg --import KEYS\ngpg --verify submarine-dist-X.Y.Z-src.tar.gz.asc\n")),Object(i.b)("h2",{id:"old-releases"},"Old releases"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"Apache Submarine 0.4.0 released on Jul 05, 2020 (",Object(i.b)("a",{parentName:"p",href:"https://submarine.apache.org/releases/submarine-release-0.4.0"},"release notes"),") (",Object(i.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/tree/rel/release-0.4.0"},"git tag"),")"),Object(i.b)("ul",{parentName:"li"},Object(i.b)("li",{parentName:"ul"},"Binary package with submarine:\n",Object(i.b)("a",{parentName:"li",href:"https://www.apache.org/dyn/closer.cgi/submarine/submarine-0.4.0/submarine-dist-0.4.0-hadoop-2.9.tar.gz"},"submarine-dist-0.4.0-hadoop-2.9.tar.gz")," (550 MB,\n",Object(i.b)("a",{parentName:"li",href:"https://www.apache.org/dist/submarine/submarine-0.4.0/submarine-dist-0.4.0-hadoop-2.9.tar.gz.sha512"},"checksum"),",\n",Object(i.b)("a",{parentName:"li",href:"https://www.apache.org/dist/submarine/submarine-0.4.0/submarine-dist-0.4.0-hadoop-2.9.tar.gz.asc"},"signature"),")"),Object(i.b)("li",{parentName:"ul"},"Source:\n",Object(i.b)("a",{parentName:"li",href:"https://www.apache.org/dyn/closer.cgi/submarine/submarine-0.4.0/submarine-dist-0.4.0-src.tar.gz"},"submarine-dist-0.4.0-src.tar.gz")," (6 MB,\n",Object(i.b)("a",{parentName:"li",href:"https://www.apache.org/dist/submarine/submarine-0.4.0/submarine-dist-0.4.0-src.tar.gz.sha512"},"checksum"),",\n",Object(i.b)("a",{parentName:"li",href:"https://www.apache.org/dist/submarine/submarine-0.4.0/submarine-dist-0.4.0-src.tar.gz.asc"},"signature"),")"),Object(i.b)("li",{parentName:"ul"},"Docker images:\n",Object(i.b)("em",{parentName:"li"},Object(i.b)("a",{parentName:"em",href:"https://hub.docker.com/layers/apache/submarine/mini-0.4.0/images/sha256-a8e7bd98f1f0325223d68e0ba64fd48bd56ee91736461d289945e70ad138e08f"},"mini-submarine"))," ",Object(i.b)("a",{parentName:"li",href:"https://github.com/apache/submarine/blob/rel/release-0.4.0/dev-support/mini-submarine/README.md#mini-submarine"},"(guide)")))),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"Apache Submarine 0.3.0 released on Feb 01, 2020 (",Object(i.b)("a",{parentName:"p",href:"https://submarine.apache.org/releases/submarine-release-0.3.0"},"release notes"),") (",Object(i.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/tree/rel/release-0.3.0"},"git tag"),")"),Object(i.b)("ul",{parentName:"li"},Object(i.b)("li",{parentName:"ul"},"Binary package with submarine:\n",Object(i.b)("a",{parentName:"li",href:"https://www.apache.org/dyn/closer.cgi/submarine/submarine-0.3.0/submarine-dist-0.3.0-hadoop-2.9.tar.gz"},"submarine-dist-0.3.0-hadoop-2.9.tar.gz")," (550 MB,\n",Object(i.b)("a",{parentName:"li",href:"https://www.apache.org/dist/submarine/submarine-0.3.0/submarine-dist-0.3.0-hadoop-2.9.tar.gz.sha512"},"checksum"),",\n",Object(i.b)("a",{parentName:"li",href:"https://www.apache.org/dist/submarine/submarine-0.3.0/submarine-dist-0.3.0-hadoop-2.9.tar.gz.asc"},"signature"),")"),Object(i.b)("li",{parentName:"ul"},"Source:\n",Object(i.b)("a",{parentName:"li",href:"https://www.apache.org/dyn/closer.cgi/submarine/submarine-0.3.0/submarine-dist-0.3.0-src.tar.gz"},"submarine-dist-0.3.0-src.tar.gz")," (6 MB,\n",Object(i.b)("a",{parentName:"li",href:"https://www.apache.org/dist/submarine/submarine-0.3.0/submarine-dist-0.3.0-src.tar.gz.sha512"},"checksum"),",\n",Object(i.b)("a",{parentName:"li",href:"https://www.apache.org/dist/submarine/submarine-0.3.0/submarine-dist-0.3.0-src.tar.gz.asc"},"signature"),")"),Object(i.b)("li",{parentName:"ul"},"Docker images:\n",Object(i.b)("em",{parentName:"li"},Object(i.b)("a",{parentName:"em",href:"https://hub.docker.com/layers/apache/submarine/mini-0.3.0/images/sha256-3dd49054bf8a91521f5743c675278d626a5fa568e91651c67867b8ba6ceba340"},"mini-submarine"))," ",Object(i.b)("a",{parentName:"li",href:"https://github.com/apache/submarine/blob/rel/release-0.3.0/dev-support/mini-submarine/README.md#mini-submarine"},"(guide)")))),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"Apache Submarine 0.2.0 released on Jul 2, 2019"),Object(i.b)("ul",{parentName:"li"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"Binary package with submarine:\n",Object(i.b)("a",{parentName:"p",href:"https://www.apache.org/dyn/closer.cgi/hadoop/submarine/submarine-0.2.0/hadoop-submarine-0.2.0.tar.gz"},"hadoop-submarine-0.2.0.tar.gz")," (111 MB,\n",Object(i.b)("a",{parentName:"p",href:"https://dist.apache.org/repos/dist/release/hadoop/submarine/submarine-0.2.0/hadoop-submarine-0.2.0.tar.gz.mds"},"checksum"),",\n",Object(i.b)("a",{parentName:"p",href:"https://dist.apache.org/repos/dist/release/hadoop/submarine/submarine-0.2.0/hadoop-submarine-0.2.0.tar.gz.asc"},"signature"),",\n",Object(i.b)("a",{parentName:"p",href:"http://hadoop.apache.org/submarine/release/0.2.0/"},"Announcement"),")")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"Source:\n",Object(i.b)("a",{parentName:"p",href:"https://www.apache.org/dyn/closer.cgi/hadoop/submarine/submarine-0.2.0/hadoop-submarine-0.2.0-src.tar.gz"},"hadoop-submarine-0.2.0-src.tar.gz")," (1.4 MB,\n",Object(i.b)("a",{parentName:"p",href:"https://dist.apache.org/repos/dist/release/hadoop/submarine/submarine-0.2.0/hadoop-submarine-0.2.0-src.tar.gz.mds"},"checksum"),",\n",Object(i.b)("a",{parentName:"p",href:"https://dist.apache.org/repos/dist/release/hadoop/submarine/submarine-0.2.0/hadoop-submarine-0.2.0-src.tar.gz.asc"},"signature"),")"))))),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"Apache Submarine 0.1.0 released on Jan 16, 2019"),Object(i.b)("ul",{parentName:"li"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"Binary package with submarine:\n",Object(i.b)("a",{parentName:"p",href:"https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-3.2.0/hadoop-3.2.0.tar.gz"},"submarine-0.2.0-bin-all.tgz")," (97 MB,\n",Object(i.b)("a",{parentName:"p",href:"https://www.apache.org/dist/hadoop/common/hadoop-3.2.0/hadoop-3.2.0.tar.gz.mds"},"checksum"),",\n",Object(i.b)("a",{parentName:"p",href:"https://www.apache.org/dist/hadoop/common/hadoop-3.2.0/hadoop-3.2.0.tar.gz.asc"},"signature"),",\n",Object(i.b)("a",{parentName:"p",href:"https://hadoop.apache.org/docs/r3.2.0/index.html"},"Announcement"),")")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"Source:\n",Object(i.b)("a",{parentName:"p",href:"https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-3.2.0/hadoop-3.2.0-src.tar.gz"},"submarine-hadoop-3.2.0-src.tar.gz")," (1.1 MB,\n",Object(i.b)("a",{parentName:"p",href:"https://www.apache.org/dist/hadoop/common/hadoop-3.2.0/hadoop-3.2.0-src.tar.gz.mds"},"checksum"),",\n",Object(i.b)("a",{parentName:"p",href:"https://www.apache.org/dist/hadoop/common/hadoop-3.2.0/hadoop-3.2.0-src.tar.gz.asc"},"signature"),")"))))))}o.isMDXComponent=!0},194:function(e,a,r){"use strict";r.d(a,"a",(function(){return m})),r.d(a,"b",(function(){return l}));var t=r(0),n=r.n(t);function i(e,a,r){return a in e?Object.defineProperty(e,a,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[a]=r,e}function s(e,a){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);a&&(t=t.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),r.push.apply(r,t)}return r}function b(e){for(var a=1;a<arguments.length;a++){var r=null!=arguments[a]?arguments[a]:{};a%2?s(Object(r),!0).forEach((function(a){i(e,a,r[a])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):s(Object(r)).forEach((function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(r,a))}))}return e}function c(e,a){if(null==e)return{};var r,t,n=function(e,a){if(null==e)return{};var r,t,n={},i=Object.keys(e);for(t=0;t<i.length;t++)r=i[t],a.indexOf(r)>=0||(n[r]=e[r]);return n}(e,a);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(t=0;t<i.length;t++)r=i[t],a.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var p=n.a.createContext({}),o=function(e){var a=n.a.useContext(p),r=a;return e&&(r="function"==typeof e?e(a):b(b({},a),e)),r},m=function(e){var a=o(e.components);return n.a.createElement(p.Provider,{value:a},e.children)},u={inlineCode:"code",wrapper:function(e){var a=e.children;return n.a.createElement(n.a.Fragment,{},a)}},h=n.a.forwardRef((function(e,a){var r=e.components,t=e.mdxType,i=e.originalType,s=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),m=o(r),h=t,l=m["".concat(s,".").concat(h)]||m[h]||u[h]||i;return r?n.a.createElement(l,b(b({ref:a},p),{},{components:r})):n.a.createElement(l,b({ref:a},p))}));function l(e,a){var r=arguments,t=a&&a.mdxType;if("string"==typeof e||t){var i=r.length,s=new Array(i);s[0]=h;var b={};for(var c in a)hasOwnProperty.call(a,c)&&(b[c]=a[c]);b.originalType=e,b.mdxType="string"==typeof e?e:t,s[1]=b;for(var p=2;p<i;p++)s[p]=r[p];return n.a.createElement.apply(null,s)}return n.a.createElement.apply(null,r)}h.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/c5a80c58.e9726add.js b/c5a80c58.e9726add.js
deleted file mode 100644
index 6f9637d..0000000
--- a/c5a80c58.e9726add.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[108],{175:function(e,a,r){"use strict";r.r(a),r.d(a,"frontMatter",(function(){return s})),r.d(a,"metadata",(function(){return b})),r.d(a,"toc",(function(){return c})),r.d(a,"default",(function(){return o}));var t=r(3),n=r(7),i=(r(0),r(209)),s={title:"Download Apache Submarine"},b={unversionedId:"download",id:"version-0.6.0/download",isDocsHomePage:!1,title:"Download Apache Submarine",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/download.md",slug:"/download",permalink:"/docs/download",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/download.md",version:"0.6.0"},c=[{value:"Verify the integrity of the files",id:"verify-the-integrity-of-the-files",children:[]},{value:"Old releases",id:"old-releases",children:[]}],p={toc:c};function o(e){var a=e.components,r=Object(n.a)(e,["components"]);return Object(i.b)("wrapper",Object(t.a)({},p,r,{components:a,mdxType:"MDXLayout"}),Object(i.b)("p",null,"The latest release of Apache Submarine is ",Object(i.b)("inlineCode",{parentName:"p"},"0.5.0"),"."),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Apache Submarine ",Object(i.b)("inlineCode",{parentName:"li"},"0.5.0")," released on Dec 17, 2020 (",Object(i.b)("a",{parentName:"li",href:"https://submarine.apache.org/releases/submarine-release-0.5.0"},"release notes"),") (",Object(i.b)("a",{parentName:"li",href:"https://github.com/apache/submarine/tree/rel/release-0.5.0"},"git tag"),")",Object(i.b)("ul",{parentName:"li"},Object(i.b)("li",{parentName:"ul"},"Binary package:\n",Object(i.b)("a",{parentName:"li",href:"https://www.apache.org/dyn/closer.cgi/submarine/submarine-0.5.0/submarine-dist-0.5.0-hadoop-2.9.tar.gz"},"submarine-dist-0.5.0-hadoop-2.9.tar.gz")," (505 MB, ",Object(i.b)("a",{parentName:"li",href:"https://www.apache.org/dist/submarine/submarine-0.5.0/submarine-dist-0.5.0-hadoop-2.9.tar.gz.sha512"},"checksum"),", ",Object(i.b)("a",{parentName:"li",href:"https://www.apache.org/dist/submarine/submarine-0.5.0/submarine-dist-0.5.0-hadoop-2.9.tar.gz.asc"},"signature"),")"),Object(i.b)("li",{parentName:"ul"},"Source:\n",Object(i.b)("a",{parentName:"li",href:"https://www.apache.org/dyn/closer.cgi/submarine/submarine-0.5.0/submarine-dist-0.5.0-src.tar.gz"},"submarine-dist-0.5.0-src.tar.gz")," (5.0 MB, ",Object(i.b)("a",{parentName:"li",href:"https://www.apache.org/dist/submarine/submarine-0.5.0/submarine-dist-0.5.0-src.tar.gz.sha512"},"checksum"),", ",Object(i.b)("a",{parentName:"li",href:"https://www.apache.org/dist/submarine/submarine-0.5.0/submarine-dist-0.5.0-src.tar.gz.asc"},"signature"),"))"),Object(i.b)("li",{parentName:"ul"},"Docker images:",Object(i.b)("ul",{parentName:"li"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",{parentName:"li",href:"https://hub.docker.com/layers/apache/submarine/mini-0.5.0/images/sha256-e3248c8c6336b245539028043783b91135eaffe9302dec05fe13571a0f2902a6"},"mini-submarine")," ",Object(i.b)("inlineCode",{parentName:"li"},"docker pull apache/submarine:mini-0.5.0")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",{parentName:"li",href:"https://hub.docker.com/layers/apache/submarine/server-0.5.0/images/sha256-1805df8fd8e5274d16be8cdf39900d8576119c0caac7598db29990ebe138bf5c"},"submarine server")," ",Object(i.b)("inlineCode",{parentName:"li"},"docker pull apache/submarine:server-0.5.0")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",{parentName:"li",href:"https://hub.docker.com/layers/apache/submarine/database-0.5.0/images/sha256-073889e773c1b44cef9f518dc2fc468ebc420200f6087e2a943438677dadc9e5"},"submarine database")," ",Object(i.b)("inlineCode",{parentName:"li"},"docker pull apache/submarine:database-0.5.0")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",{parentName:"li",href:"https://hub.docker.com/layers/apache/submarine/jupyter-notebook-0.5.0/images/sha256-f3cc2510c208b752ef4be7b383ee8f2325e4fc538696078bdb604d62fa47e4be"},"submarine jupyter-notebook")," ",Object(i.b)("inlineCode",{parentName:"li"},"docker pull apache/submarine:jupyter-notebook-0.5.0")))),Object(i.b)("li",{parentName:"ul"},"SDK:",Object(i.b)("ul",{parentName:"li"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",{parentName:"li",href:"https://pypi.org/project/apache-submarine/0.5.0/"},"PySubmarine")," ",Object(i.b)("inlineCode",{parentName:"li"},"pip install apache-submarine==0.5.0"))))))),Object(i.b)("h2",{id:"verify-the-integrity-of-the-files"},"Verify the integrity of the files"),Object(i.b)("p",null,"It is essential that you ",Object(i.b)("a",{parentName:"p",href:"https://www.apache.org/info/verification.html"},"verify")," the integrity of the downloaded files using the PGP or MD5 signatures. This signature should be matched against the ",Object(i.b)("a",{parentName:"p",href:"https://www.apache.org/dist/submarine/KEYS"},"KEYS")," file."),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"gpg --import KEYS\ngpg --verify submarine-dist-X.Y.Z-src.tar.gz.asc\n")),Object(i.b)("h2",{id:"old-releases"},"Old releases"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"Apache Submarine 0.4.0 released on Jul 05, 2020 (",Object(i.b)("a",{parentName:"p",href:"https://submarine.apache.org/releases/submarine-release-0.4.0"},"release notes"),") (",Object(i.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/tree/rel/release-0.4.0"},"git tag"),")"),Object(i.b)("ul",{parentName:"li"},Object(i.b)("li",{parentName:"ul"},"Binary package with submarine:\n",Object(i.b)("a",{parentName:"li",href:"https://www.apache.org/dyn/closer.cgi/submarine/submarine-0.4.0/submarine-dist-0.4.0-hadoop-2.9.tar.gz"},"submarine-dist-0.4.0-hadoop-2.9.tar.gz")," (550 MB,\n",Object(i.b)("a",{parentName:"li",href:"https://www.apache.org/dist/submarine/submarine-0.4.0/submarine-dist-0.4.0-hadoop-2.9.tar.gz.sha512"},"checksum"),",\n",Object(i.b)("a",{parentName:"li",href:"https://www.apache.org/dist/submarine/submarine-0.4.0/submarine-dist-0.4.0-hadoop-2.9.tar.gz.asc"},"signature"),")"),Object(i.b)("li",{parentName:"ul"},"Source:\n",Object(i.b)("a",{parentName:"li",href:"https://www.apache.org/dyn/closer.cgi/submarine/submarine-0.4.0/submarine-dist-0.4.0-src.tar.gz"},"submarine-dist-0.4.0-src.tar.gz")," (6 MB,\n",Object(i.b)("a",{parentName:"li",href:"https://www.apache.org/dist/submarine/submarine-0.4.0/submarine-dist-0.4.0-src.tar.gz.sha512"},"checksum"),",\n",Object(i.b)("a",{parentName:"li",href:"https://www.apache.org/dist/submarine/submarine-0.4.0/submarine-dist-0.4.0-src.tar.gz.asc"},"signature"),")"),Object(i.b)("li",{parentName:"ul"},"Docker images:\n",Object(i.b)("em",{parentName:"li"},Object(i.b)("a",{parentName:"em",href:"https://hub.docker.com/layers/apache/submarine/mini-0.4.0/images/sha256-a8e7bd98f1f0325223d68e0ba64fd48bd56ee91736461d289945e70ad138e08f"},"mini-submarine"))," ",Object(i.b)("a",{parentName:"li",href:"https://github.com/apache/submarine/blob/rel/release-0.4.0/dev-support/mini-submarine/README.md#mini-submarine"},"(guide)")))),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"Apache Submarine 0.3.0 released on Feb 01, 2020 (",Object(i.b)("a",{parentName:"p",href:"https://submarine.apache.org/releases/submarine-release-0.3.0"},"release notes"),") (",Object(i.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/tree/rel/release-0.3.0"},"git tag"),")"),Object(i.b)("ul",{parentName:"li"},Object(i.b)("li",{parentName:"ul"},"Binary package with submarine:\n",Object(i.b)("a",{parentName:"li",href:"https://www.apache.org/dyn/closer.cgi/submarine/submarine-0.3.0/submarine-dist-0.3.0-hadoop-2.9.tar.gz"},"submarine-dist-0.3.0-hadoop-2.9.tar.gz")," (550 MB,\n",Object(i.b)("a",{parentName:"li",href:"https://www.apache.org/dist/submarine/submarine-0.3.0/submarine-dist-0.3.0-hadoop-2.9.tar.gz.sha512"},"checksum"),",\n",Object(i.b)("a",{parentName:"li",href:"https://www.apache.org/dist/submarine/submarine-0.3.0/submarine-dist-0.3.0-hadoop-2.9.tar.gz.asc"},"signature"),")"),Object(i.b)("li",{parentName:"ul"},"Source:\n",Object(i.b)("a",{parentName:"li",href:"https://www.apache.org/dyn/closer.cgi/submarine/submarine-0.3.0/submarine-dist-0.3.0-src.tar.gz"},"submarine-dist-0.3.0-src.tar.gz")," (6 MB,\n",Object(i.b)("a",{parentName:"li",href:"https://www.apache.org/dist/submarine/submarine-0.3.0/submarine-dist-0.3.0-src.tar.gz.sha512"},"checksum"),",\n",Object(i.b)("a",{parentName:"li",href:"https://www.apache.org/dist/submarine/submarine-0.3.0/submarine-dist-0.3.0-src.tar.gz.asc"},"signature"),")"),Object(i.b)("li",{parentName:"ul"},"Docker images:\n",Object(i.b)("em",{parentName:"li"},Object(i.b)("a",{parentName:"em",href:"https://hub.docker.com/layers/apache/submarine/mini-0.3.0/images/sha256-3dd49054bf8a91521f5743c675278d626a5fa568e91651c67867b8ba6ceba340"},"mini-submarine"))," ",Object(i.b)("a",{parentName:"li",href:"https://github.com/apache/submarine/blob/rel/release-0.3.0/dev-support/mini-submarine/README.md#mini-submarine"},"(guide)")))),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"Apache Submarine 0.2.0 released on Jul 2, 2019"),Object(i.b)("ul",{parentName:"li"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"Binary package with submarine:\n",Object(i.b)("a",{parentName:"p",href:"https://www.apache.org/dyn/closer.cgi/hadoop/submarine/submarine-0.2.0/hadoop-submarine-0.2.0.tar.gz"},"hadoop-submarine-0.2.0.tar.gz")," (111 MB,\n",Object(i.b)("a",{parentName:"p",href:"https://dist.apache.org/repos/dist/release/hadoop/submarine/submarine-0.2.0/hadoop-submarine-0.2.0.tar.gz.mds"},"checksum"),",\n",Object(i.b)("a",{parentName:"p",href:"https://dist.apache.org/repos/dist/release/hadoop/submarine/submarine-0.2.0/hadoop-submarine-0.2.0.tar.gz.asc"},"signature"),",\n",Object(i.b)("a",{parentName:"p",href:"http://hadoop.apache.org/submarine/release/0.2.0/"},"Announcement"),")")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"Source:\n",Object(i.b)("a",{parentName:"p",href:"https://www.apache.org/dyn/closer.cgi/hadoop/submarine/submarine-0.2.0/hadoop-submarine-0.2.0-src.tar.gz"},"hadoop-submarine-0.2.0-src.tar.gz")," (1.4 MB,\n",Object(i.b)("a",{parentName:"p",href:"https://dist.apache.org/repos/dist/release/hadoop/submarine/submarine-0.2.0/hadoop-submarine-0.2.0-src.tar.gz.mds"},"checksum"),",\n",Object(i.b)("a",{parentName:"p",href:"https://dist.apache.org/repos/dist/release/hadoop/submarine/submarine-0.2.0/hadoop-submarine-0.2.0-src.tar.gz.asc"},"signature"),")"))))),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"Apache Submarine 0.1.0 released on Jan 16, 2019"),Object(i.b)("ul",{parentName:"li"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"Binary package with submarine:\n",Object(i.b)("a",{parentName:"p",href:"https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-3.2.0/hadoop-3.2.0.tar.gz"},"submarine-0.2.0-bin-all.tgz")," (97 MB,\n",Object(i.b)("a",{parentName:"p",href:"https://www.apache.org/dist/hadoop/common/hadoop-3.2.0/hadoop-3.2.0.tar.gz.mds"},"checksum"),",\n",Object(i.b)("a",{parentName:"p",href:"https://www.apache.org/dist/hadoop/common/hadoop-3.2.0/hadoop-3.2.0.tar.gz.asc"},"signature"),",\n",Object(i.b)("a",{parentName:"p",href:"https://hadoop.apache.org/docs/r3.2.0/index.html"},"Announcement"),")")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"Source:\n",Object(i.b)("a",{parentName:"p",href:"https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-3.2.0/hadoop-3.2.0-src.tar.gz"},"submarine-hadoop-3.2.0-src.tar.gz")," (1.1 MB,\n",Object(i.b)("a",{parentName:"p",href:"https://www.apache.org/dist/hadoop/common/hadoop-3.2.0/hadoop-3.2.0-src.tar.gz.mds"},"checksum"),",\n",Object(i.b)("a",{parentName:"p",href:"https://www.apache.org/dist/hadoop/common/hadoop-3.2.0/hadoop-3.2.0-src.tar.gz.asc"},"signature"),")"))))))}o.isMDXComponent=!0},209:function(e,a,r){"use strict";r.d(a,"a",(function(){return m})),r.d(a,"b",(function(){return l}));var t=r(0),n=r.n(t);function i(e,a,r){return a in e?Object.defineProperty(e,a,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[a]=r,e}function s(e,a){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);a&&(t=t.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),r.push.apply(r,t)}return r}function b(e){for(var a=1;a<arguments.length;a++){var r=null!=arguments[a]?arguments[a]:{};a%2?s(Object(r),!0).forEach((function(a){i(e,a,r[a])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):s(Object(r)).forEach((function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(r,a))}))}return e}function c(e,a){if(null==e)return{};var r,t,n=function(e,a){if(null==e)return{};var r,t,n={},i=Object.keys(e);for(t=0;t<i.length;t++)r=i[t],a.indexOf(r)>=0||(n[r]=e[r]);return n}(e,a);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(t=0;t<i.length;t++)r=i[t],a.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var p=n.a.createContext({}),o=function(e){var a=n.a.useContext(p),r=a;return e&&(r="function"==typeof e?e(a):b(b({},a),e)),r},m=function(e){var a=o(e.components);return n.a.createElement(p.Provider,{value:a},e.children)},u={inlineCode:"code",wrapper:function(e){var a=e.children;return n.a.createElement(n.a.Fragment,{},a)}},h=n.a.forwardRef((function(e,a){var r=e.components,t=e.mdxType,i=e.originalType,s=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),m=o(r),h=t,l=m["".concat(s,".").concat(h)]||m[h]||u[h]||i;return r?n.a.createElement(l,b(b({ref:a},p),{},{components:r})):n.a.createElement(l,b({ref:a},p))}));function l(e,a){var r=arguments,t=a&&a.mdxType;if("string"==typeof e||t){var i=r.length,s=new Array(i);s[0]=h;var b={};for(var c in a)hasOwnProperty.call(a,c)&&(b[c]=a[c]);b.originalType=e,b.mdxType="string"==typeof e?e:t,s[1]=b;for(var p=2;p<i;p++)s[p]=r[p];return n.a.createElement.apply(null,s)}return n.a.createElement.apply(null,r)}h.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/c86e1739.3733110a.js b/c86e1739.3733110a.js
deleted file mode 100644
index f66408a..0000000
--- a/c86e1739.3733110a.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[109],{176:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return a})),n.d(t,"metadata",(function(){return c})),n.d(t,"toc",(function(){return u})),n.d(t,"default",(function(){return m}));var o=n(3),r=n(7),i=(n(0),n(209)),a={title:"How to become a Committer"},c={unversionedId:"community/HowToBecomeCommitter",id:"community/HowToBecomeCommitter",isDocsHomePage:!1,title:"How to become a Committer",description:"\x3c!--",source:"@site/docs/community/HowToBecomeCommitter.md",slug:"/community/HowToBecomeCommitter",permalink:"/docs/next/community/HowToBecomeCommitter",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/community/HowToBecomeCommitter.md",version:"current",sidebar:"docs",previous:{title:"How to vote a Committer or PMC",permalink:"/docs/next/community/HowToVoteCommitterOrPMC"},next:{title:"Architecture and Requirment",permalink:"/docs/next/designDocs/architecture-and-requirements"}},u=[],s={toc:u};function m(e){var t=e.components,n=Object(r.a)(e,["components"]);return Object(i.b)("wrapper",Object(o.a)({},s,n,{components:t,mdxType:"MDXLayout"}),Object(i.b)("p",null,"Apache Submarine builds a community completely following Apache\u2019s rules. Apache Committer is a term used in ASF (Apache Software Foundation) to indicate the person who submits a specific project. Apache Submarine Committer has permission to write the Submarine codebase and can merge PR. Anyone who has made enough contributions to the community and gained enough trust can become an Apache Submarine Committer."),Object(i.b)("p",null,"As long as anyone contributes to the Submarine project, you are the officially recognized Contributor of the Submarine project. There is no exact standard for growing from Contributor to Committer, and there is no expected timetable, but Committer candidates are generally long-term active contributors, becoming Committer does not require a huge architectural improvement contribution, or how many lines of code contribution. Contributing to the codebase, contributing to the documents, participating in the discussion of the mailing list, helping to answer questions, etc., are all ways to increase your influence."),Object(i.b)("p",null,"List of potential contributions (in no particular order):"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Submit the bugs, features, and improvements you found to the issue"),Object(i.b)("li",{parentName:"ul"},"Update the official documents so that the project documents are the most recent, the best practices for writing Submarine, and various useful documents for users to analyze the features."),Object(i.b)("li",{parentName:"ul"},"Perform test and report test results."),Object(i.b)("li",{parentName:"ul"},"Actively participate in voting when the version is released"),Object(i.b)("li",{parentName:"ul"},"Participate in the discussion on the mailing list, usually there will be mails starting with ","[DISCUSS]"),Object(i.b)("li",{parentName:"ul"},"Answer questions from users or developers on the mailing list"),Object(i.b)("li",{parentName:"ul"},"Review the work of others (both code and non-code) and publish your own suggestions"),Object(i.b)("li",{parentName:"ul"},"Review the issues on JIRA and maintain the latest status of the issues, such as closing outdated issues, changing the issue\u2019s error information, etc."),Object(i.b)("li",{parentName:"ul"},"Guide new contributors and be familiar with the community process"),Object(i.b)("li",{parentName:"ul"},"Give speeches and blogs about Submarine, and add these to the official website of Submarine"),Object(i.b)("li",{parentName:"ul"},"Any contribution that is beneficial to the development of the Submarine community\n......")),Object(i.b)("p",null,"More can refer to: ",Object(i.b)("a",{parentName:"p",href:"https://community.apache.org/contributors/"},"ASF official documents")),Object(i.b)("p",null,"Not everyone can complete all (or even any) items on this list. If you want to contribute in other ways, then just do it (and add them to the list). Pleasant manners and dedication are all you need to have a positive impact on the Submarine project. Inviting you to become Committer is the result of your long-term and stable interaction with the community, and the trust and recognition of the Submarine community."),Object(i.b)("p",null,"Committer is obliged to review and merge PRs submitted by others, test and vote on candidate versions when the version is released, participate in the discussion of feature design plans, and other types of project contributions. When you are active enough and make a bigger contribution to the community, you can be promoted to a PMC member of the Submarine project."))}m.isMDXComponent=!0},209:function(e,t,n){"use strict";n.d(t,"a",(function(){return l})),n.d(t,"b",(function(){return d}));var o=n(0),r=n.n(o);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function c(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function u(e,t){if(null==e)return{};var n,o,r=function(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o<i.length;o++)n=i[o],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o<i.length;o++)n=i[o],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=r.a.createContext({}),m=function(e){var t=r.a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):c(c({},t),e)),n},l=function(e){var t=m(e.components);return r.a.createElement(s.Provider,{value:t},e.children)},b={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},p=r.a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,i=e.originalType,a=e.parentName,s=u(e,["components","mdxType","originalType","parentName"]),l=m(n),p=o,d=l["".concat(a,".").concat(p)]||l[p]||b[p]||i;return n?r.a.createElement(d,c(c({ref:t},s),{},{components:n})):r.a.createElement(d,c({ref:t},s))}));function d(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=n.length,a=new Array(i);a[0]=p;var c={};for(var u in t)hasOwnProperty.call(t,u)&&(c[u]=t[u]);c.originalType=e,c.mdxType="string"==typeof e?e:o,a[1]=c;for(var s=2;s<i;s++)a[s]=n[s];return r.a.createElement.apply(null,a)}return r.a.createElement.apply(null,n)}p.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/c86e1739.da036326.js b/c86e1739.da036326.js
new file mode 100644
index 0000000..c39db03
--- /dev/null
+++ b/c86e1739.da036326.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[97],{164:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return a})),n.d(t,"metadata",(function(){return c})),n.d(t,"toc",(function(){return u})),n.d(t,"default",(function(){return m}));var o=n(3),r=n(7),i=(n(0),n(194)),a={title:"How to become a Committer"},c={unversionedId:"community/HowToBecomeCommitter",id:"community/HowToBecomeCommitter",isDocsHomePage:!1,title:"How to become a Committer",description:"\x3c!--",source:"@site/docs/community/HowToBecomeCommitter.md",slug:"/community/HowToBecomeCommitter",permalink:"/docs/next/community/HowToBecomeCommitter",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/community/HowToBecomeCommitter.md",version:"current",sidebar:"docs",previous:{title:"How to vote a Committer or PMC",permalink:"/docs/next/community/HowToVoteCommitterOrPMC"},next:{title:"Architecture and Requirment",permalink:"/docs/next/designDocs/architecture-and-requirements"}},u=[],s={toc:u};function m(e){var t=e.components,n=Object(r.a)(e,["components"]);return Object(i.b)("wrapper",Object(o.a)({},s,n,{components:t,mdxType:"MDXLayout"}),Object(i.b)("p",null,"Apache Submarine builds a community completely following Apache\u2019s rules. Apache Committer is a term used in ASF (Apache Software Foundation) to indicate the person who submits a specific project. Apache Submarine Committer has permission to write the Submarine codebase and can merge PR. Anyone who has made enough contributions to the community and gained enough trust can become an Apache Submarine Committer."),Object(i.b)("p",null,"As long as anyone contributes to the Submarine project, you are the officially recognized Contributor of the Submarine project. There is no exact standard for growing from Contributor to Committer, and there is no expected timetable, but Committer candidates are generally long-term active contributors, becoming Committer does not require a huge architectural improvement contribution, or how many lines of code contribution. Contributing to the codebase, contributing to the documents, participating in the discussion of the mailing list, helping to answer questions, etc., are all ways to increase your influence."),Object(i.b)("p",null,"List of potential contributions (in no particular order):"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Submit the bugs, features, and improvements you found to the issue"),Object(i.b)("li",{parentName:"ul"},"Update the official documents so that the project documents are the most recent, the best practices for writing Submarine, and various useful documents for users to analyze the features."),Object(i.b)("li",{parentName:"ul"},"Perform test and report test results."),Object(i.b)("li",{parentName:"ul"},"Actively participate in voting when the version is released"),Object(i.b)("li",{parentName:"ul"},"Participate in the discussion on the mailing list, usually there will be mails starting with ","[DISCUSS]"),Object(i.b)("li",{parentName:"ul"},"Answer questions from users or developers on the mailing list"),Object(i.b)("li",{parentName:"ul"},"Review the work of others (both code and non-code) and publish your own suggestions"),Object(i.b)("li",{parentName:"ul"},"Review the issues on JIRA and maintain the latest status of the issues, such as closing outdated issues, changing the issue\u2019s error information, etc."),Object(i.b)("li",{parentName:"ul"},"Guide new contributors and be familiar with the community process"),Object(i.b)("li",{parentName:"ul"},"Give speeches and blogs about Submarine, and add these to the official website of Submarine"),Object(i.b)("li",{parentName:"ul"},"Any contribution that is beneficial to the development of the Submarine community\n......")),Object(i.b)("p",null,"More can refer to: ",Object(i.b)("a",{parentName:"p",href:"https://community.apache.org/contributors/"},"ASF official documents")),Object(i.b)("p",null,"Not everyone can complete all (or even any) items on this list. If you want to contribute in other ways, then just do it (and add them to the list). Pleasant manners and dedication are all you need to have a positive impact on the Submarine project. Inviting you to become Committer is the result of your long-term and stable interaction with the community, and the trust and recognition of the Submarine community."),Object(i.b)("p",null,"Committer is obliged to review and merge PRs submitted by others, test and vote on candidate versions when the version is released, participate in the discussion of feature design plans, and other types of project contributions. When you are active enough and make a bigger contribution to the community, you can be promoted to a PMC member of the Submarine project."))}m.isMDXComponent=!0},194:function(e,t,n){"use strict";n.d(t,"a",(function(){return l})),n.d(t,"b",(function(){return d}));var o=n(0),r=n.n(o);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function c(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function u(e,t){if(null==e)return{};var n,o,r=function(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o<i.length;o++)n=i[o],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o<i.length;o++)n=i[o],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=r.a.createContext({}),m=function(e){var t=r.a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):c(c({},t),e)),n},l=function(e){var t=m(e.components);return r.a.createElement(s.Provider,{value:t},e.children)},b={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},p=r.a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,i=e.originalType,a=e.parentName,s=u(e,["components","mdxType","originalType","parentName"]),l=m(n),p=o,d=l["".concat(a,".").concat(p)]||l[p]||b[p]||i;return n?r.a.createElement(d,c(c({ref:t},s),{},{components:n})):r.a.createElement(d,c({ref:t},s))}));function d(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=n.length,a=new Array(i);a[0]=p;var c={};for(var u in t)hasOwnProperty.call(t,u)&&(c[u]=t[u]);c.originalType=e,c.mdxType="string"==typeof e?e:o,a[1]=c;for(var s=2;s<i;s++)a[s]=n[s];return r.a.createElement.apply(null,a)}return r.a.createElement.apply(null,n)}p.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/cbc53c13.83471bd3.js b/cbc53c13.83471bd3.js
deleted file mode 100644
index 1ccdb86..0000000
--- a/cbc53c13.83471bd3.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[110],{177:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return i})),n.d(t,"metadata",(function(){return l})),n.d(t,"toc",(function(){return c})),n.d(t,"default",(function(){return s}));var r=n(3),a=n(7),o=(n(0),n(209)),i={title:"Docker Images for MXNet"},l={unversionedId:"userDocs/yarn/WriteDockerfileMX",id:"version-0.6.0/userDocs/yarn/WriteDockerfileMX",isDocsHomePage:!1,title:"Docker Images for MXNet",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/userDocs/yarn/WriteDockerfileMX.md",slug:"/userDocs/yarn/WriteDockerfileMX",permalink:"/docs/userDocs/yarn/WriteDockerfileMX",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/yarn/WriteDockerfileMX.md",version:"0.6.0"},c=[{value:"How to create docker images to run MXNet on YARN",id:"how-to-create-docker-images-to-run-mxnet-on-yarn",children:[]},{value:"Use examples to build your own MXNet docker images",id:"use-examples-to-build-your-own-mxnet-docker-images",children:[{value:"Manually build Docker image:",id:"manually-build-docker-image",children:[]}]}],p={toc:c};function s(e){var t=e.components,n=Object(a.a)(e,["components"]);return Object(o.b)("wrapper",Object(r.a)({},p,n,{components:t,mdxType:"MDXLayout"}),Object(o.b)("h2",{id:"how-to-create-docker-images-to-run-mxnet-on-yarn"},"How to create docker images to run MXNet on YARN"),Object(o.b)("p",null,"Dockerfile to run MXNet on YARN needs two parts:"),Object(o.b)("p",null,Object(o.b)("strong",{parentName:"p"},"Base libraries which MXNet depends on")),Object(o.b)("p",null,"1) OS base image, for example ",Object(o.b)("inlineCode",{parentName:"p"},"ubuntu:18.04")),Object(o.b)("p",null,"2) MXNet dependent libraries and packages. \\\nFor example ",Object(o.b)("inlineCode",{parentName:"p"},"python"),", ",Object(o.b)("inlineCode",{parentName:"p"},"scipy"),". For GPU support, you also need ",Object(o.b)("inlineCode",{parentName:"p"},"cuda"),", ",Object(o.b)("inlineCode",{parentName:"p"},"cudnn"),", etc."),Object(o.b)("p",null,"3) MXNet package."),Object(o.b)("p",null,Object(o.b)("strong",{parentName:"p"},"Libraries to access HDFS")),Object(o.b)("p",null,"1) JDK"),Object(o.b)("p",null,"2) Hadoop"),Object(o.b)("p",null,"Here's an example of a base image (without GPU support) to install MXNet:"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-shell"},'FROM ubuntu:18.04\n\n# Install some development tools and packages\n# MXNet 1.6 is going to be the last MXNet release to support Python2\nRUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y tzdata git \\\n    wget zip python3 python3-pip python3-distutils libgomp1 libopenblas-dev libopencv-dev\n\n# Install latest MXNet using pip (without GPU support)\nRUN pip3 install mxnet\n\nRUN echo "Install python related packages" && \\\n    pip3 install --user graphviz==0.8.4 ipykernel jupyter matplotlib numpy pandas scipy sklearn  && \\\n    python3 -m ipykernel.kernelspec\n')),Object(o.b)("p",null,"On top of above image, add files, install packages to access HDFS"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-shell"},'ENV JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64\nRUN apt-get update && apt-get install -y openjdk-8-jdk wget\n\n# Install hadoop\nENV HADOOP_VERSION="3.1.2"\nRUN wget https://archive.apache.org/dist/hadoop/common/hadoop-${HADOOP_VERSION}/hadoop-${HADOOP_VERSION}.tar.gz\n# If you are in mainland China, you can use the following command.\n# RUN wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-${HADOOP_VERSION}/hadoop-${HADOOP_VERSION}.tar.gz\n\nRUN tar zxf hadoop-${HADOOP_VERSION}.tar.gz\nRUN ln -s hadoop-${HADOOP_VERSION} hadoop-current\nRUN rm hadoop-${HADOOP_VERSION}.tar.gz\n')),Object(o.b)("p",null,"Build and push to your own docker registry: Use ",Object(o.b)("inlineCode",{parentName:"p"},"docker build ... ")," and ",Object(o.b)("inlineCode",{parentName:"p"},"docker push ...")," to finish this step."),Object(o.b)("h2",{id:"use-examples-to-build-your-own-mxnet-docker-images"},"Use examples to build your own MXNet docker images"),Object(o.b)("p",null,"We provided some example Dockerfiles for you to build your own MXNet docker images."),Object(o.b)("p",null,"For latest MXNet"),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},Object(o.b)("em",{parentName:"li"},"docker/mxnet/base/ubuntu-18.04/Dockerfile.cpu.mxnet_latest"),": Latest MXNet that supports CPU"),Object(o.b)("li",{parentName:"ul"},Object(o.b)("em",{parentName:"li"},"docker/mxnet/base/ubuntu-18.04/Dockerfile.gpu.mxnet_latest"),": Latest MXNet that supports GPU, which is prebuilt to CUDA10.")),Object(o.b)("h1",{id:"build-docker-images"},"Build Docker images"),Object(o.b)("h3",{id:"manually-build-docker-image"},"Manually build Docker image:"),Object(o.b)("p",null,"Under ",Object(o.b)("inlineCode",{parentName:"p"},"docker/mxnet")," directory, run ",Object(o.b)("inlineCode",{parentName:"p"},"build-all.sh")," to build all Docker images. This command will build the following Docker images:"),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},Object(o.b)("inlineCode",{parentName:"li"},"mxnet-latest-cpu-base:0.0.1")," for base Docker image which includes Hadoop, MXNet"),Object(o.b)("li",{parentName:"ul"},Object(o.b)("inlineCode",{parentName:"li"},"mxnet-latest-gpu-base:0.0.1")," for base Docker image which includes Hadoop, MXNet, GPU base libraries.")))}s.isMDXComponent=!0},209:function(e,t,n){"use strict";n.d(t,"a",(function(){return u})),n.d(t,"b",(function(){return m}));var r=n(0),a=n.n(r);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function c(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var p=a.a.createContext({}),s=function(e){var t=a.a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},u=function(e){var t=s(e.components);return a.a.createElement(p.Provider,{value:t},e.children)},b={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},d=a.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,i=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),u=s(n),d=r,m=u["".concat(i,".").concat(d)]||u[d]||b[d]||o;return n?a.a.createElement(m,l(l({ref:t},p),{},{components:n})):a.a.createElement(m,l({ref:t},p))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,i=new Array(o);i[0]=d;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l.mdxType="string"==typeof e?e:r,i[1]=l;for(var p=2;p<o;p++)i[p]=n[p];return a.a.createElement.apply(null,i)}return a.a.createElement.apply(null,n)}d.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/cbc53c13.c80ea8ce.js b/cbc53c13.c80ea8ce.js
new file mode 100644
index 0000000..dd48b87
--- /dev/null
+++ b/cbc53c13.c80ea8ce.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[98],{165:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return i})),n.d(t,"metadata",(function(){return l})),n.d(t,"toc",(function(){return c})),n.d(t,"default",(function(){return s}));var r=n(3),a=n(7),o=(n(0),n(194)),i={title:"Docker Images for MXNet"},l={unversionedId:"userDocs/yarn/WriteDockerfileMX",id:"version-0.6.0/userDocs/yarn/WriteDockerfileMX",isDocsHomePage:!1,title:"Docker Images for MXNet",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/userDocs/yarn/WriteDockerfileMX.md",slug:"/userDocs/yarn/WriteDockerfileMX",permalink:"/docs/userDocs/yarn/WriteDockerfileMX",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/yarn/WriteDockerfileMX.md",version:"0.6.0"},c=[{value:"How to create docker images to run MXNet on YARN",id:"how-to-create-docker-images-to-run-mxnet-on-yarn",children:[]},{value:"Use examples to build your own MXNet docker images",id:"use-examples-to-build-your-own-mxnet-docker-images",children:[{value:"Manually build Docker image:",id:"manually-build-docker-image",children:[]}]}],p={toc:c};function s(e){var t=e.components,n=Object(a.a)(e,["components"]);return Object(o.b)("wrapper",Object(r.a)({},p,n,{components:t,mdxType:"MDXLayout"}),Object(o.b)("h2",{id:"how-to-create-docker-images-to-run-mxnet-on-yarn"},"How to create docker images to run MXNet on YARN"),Object(o.b)("p",null,"Dockerfile to run MXNet on YARN needs two parts:"),Object(o.b)("p",null,Object(o.b)("strong",{parentName:"p"},"Base libraries which MXNet depends on")),Object(o.b)("p",null,"1) OS base image, for example ",Object(o.b)("inlineCode",{parentName:"p"},"ubuntu:18.04")),Object(o.b)("p",null,"2) MXNet dependent libraries and packages. \\\nFor example ",Object(o.b)("inlineCode",{parentName:"p"},"python"),", ",Object(o.b)("inlineCode",{parentName:"p"},"scipy"),". For GPU support, you also need ",Object(o.b)("inlineCode",{parentName:"p"},"cuda"),", ",Object(o.b)("inlineCode",{parentName:"p"},"cudnn"),", etc."),Object(o.b)("p",null,"3) MXNet package."),Object(o.b)("p",null,Object(o.b)("strong",{parentName:"p"},"Libraries to access HDFS")),Object(o.b)("p",null,"1) JDK"),Object(o.b)("p",null,"2) Hadoop"),Object(o.b)("p",null,"Here's an example of a base image (without GPU support) to install MXNet:"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-shell"},'FROM ubuntu:18.04\n\n# Install some development tools and packages\n# MXNet 1.6 is going to be the last MXNet release to support Python2\nRUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y tzdata git \\\n    wget zip python3 python3-pip python3-distutils libgomp1 libopenblas-dev libopencv-dev\n\n# Install latest MXNet using pip (without GPU support)\nRUN pip3 install mxnet\n\nRUN echo "Install python related packages" && \\\n    pip3 install --user graphviz==0.8.4 ipykernel jupyter matplotlib numpy pandas scipy sklearn  && \\\n    python3 -m ipykernel.kernelspec\n')),Object(o.b)("p",null,"On top of above image, add files, install packages to access HDFS"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-shell"},'ENV JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64\nRUN apt-get update && apt-get install -y openjdk-8-jdk wget\n\n# Install hadoop\nENV HADOOP_VERSION="3.1.2"\nRUN wget https://archive.apache.org/dist/hadoop/common/hadoop-${HADOOP_VERSION}/hadoop-${HADOOP_VERSION}.tar.gz\n# If you are in mainland China, you can use the following command.\n# RUN wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-${HADOOP_VERSION}/hadoop-${HADOOP_VERSION}.tar.gz\n\nRUN tar zxf hadoop-${HADOOP_VERSION}.tar.gz\nRUN ln -s hadoop-${HADOOP_VERSION} hadoop-current\nRUN rm hadoop-${HADOOP_VERSION}.tar.gz\n')),Object(o.b)("p",null,"Build and push to your own docker registry: Use ",Object(o.b)("inlineCode",{parentName:"p"},"docker build ... ")," and ",Object(o.b)("inlineCode",{parentName:"p"},"docker push ...")," to finish this step."),Object(o.b)("h2",{id:"use-examples-to-build-your-own-mxnet-docker-images"},"Use examples to build your own MXNet docker images"),Object(o.b)("p",null,"We provided some example Dockerfiles for you to build your own MXNet docker images."),Object(o.b)("p",null,"For latest MXNet"),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},Object(o.b)("em",{parentName:"li"},"docker/mxnet/base/ubuntu-18.04/Dockerfile.cpu.mxnet_latest"),": Latest MXNet that supports CPU"),Object(o.b)("li",{parentName:"ul"},Object(o.b)("em",{parentName:"li"},"docker/mxnet/base/ubuntu-18.04/Dockerfile.gpu.mxnet_latest"),": Latest MXNet that supports GPU, which is prebuilt to CUDA10.")),Object(o.b)("h1",{id:"build-docker-images"},"Build Docker images"),Object(o.b)("h3",{id:"manually-build-docker-image"},"Manually build Docker image:"),Object(o.b)("p",null,"Under ",Object(o.b)("inlineCode",{parentName:"p"},"docker/mxnet")," directory, run ",Object(o.b)("inlineCode",{parentName:"p"},"build-all.sh")," to build all Docker images. This command will build the following Docker images:"),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},Object(o.b)("inlineCode",{parentName:"li"},"mxnet-latest-cpu-base:0.0.1")," for base Docker image which includes Hadoop, MXNet"),Object(o.b)("li",{parentName:"ul"},Object(o.b)("inlineCode",{parentName:"li"},"mxnet-latest-gpu-base:0.0.1")," for base Docker image which includes Hadoop, MXNet, GPU base libraries.")))}s.isMDXComponent=!0},194:function(e,t,n){"use strict";n.d(t,"a",(function(){return u})),n.d(t,"b",(function(){return m}));var r=n(0),a=n.n(r);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function c(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var p=a.a.createContext({}),s=function(e){var t=a.a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},u=function(e){var t=s(e.components);return a.a.createElement(p.Provider,{value:t},e.children)},b={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},d=a.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,i=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),u=s(n),d=r,m=u["".concat(i,".").concat(d)]||u[d]||b[d]||o;return n?a.a.createElement(m,l(l({ref:t},p),{},{components:n})):a.a.createElement(m,l({ref:t},p))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,i=new Array(o);i[0]=d;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l.mdxType="string"==typeof e?e:r,i[1]=l;for(var p=2;p<o;p++)i[p]=n[p];return a.a.createElement.apply(null,i)}return a.a.createElement.apply(null,n)}d.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/cbf00e67.0b722239.js b/cbf00e67.0b722239.js
deleted file mode 100644
index fc49b62..0000000
--- a/cbf00e67.0b722239.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[111],{178:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return o})),n.d(t,"metadata",(function(){return s})),n.d(t,"toc",(function(){return l})),n.d(t,"default",(function(){return p}));var r=n(3),i=n(7),a=(n(0),n(209)),o={title:"Experiment Implementation"},s={unversionedId:"designDocs/experiment-implementation",id:"designDocs/experiment-implementation",isDocsHomePage:!1,title:"Experiment Implementation",description:"\x3c!--",source:"@site/docs/designDocs/experiment-implementation.md",slug:"/designDocs/experiment-implementation",permalink:"/docs/next/designDocs/experiment-implementation",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/designDocs/experiment-implementation.md",version:"current",sidebar:"docs",previous:{title:"Environments Implementation",permalink:"/docs/next/designDocs/environments-implementation"},next:{title:"Notebook Implementation",permalink:"/docs/next/designDocs/notebook-implementation"}},l=[{value:"Overview",id:"overview",children:[]},{value:"API of Experiment",id:"api-of-experiment",children:[]},{value:"Manage environments for experiment",id:"manage-environments-for-experiment",children:[]},{value:"Manage storages for experiment",id:"manage-storages-for-experiment",children:[]},{value:"Manage Pre-defined experiment libraries",id:"manage-pre-defined-experiment-libraries",children:[]},{value:"Flow: Submit an experiment",id:"flow-submit-an-experiment",children:[{value:"Submit via SDK Flows.",id:"submit-via-sdk-flows",children:[]},{value:"Specify what environment to use",id:"specify-what-environment-to-use",children:[]},{value:"Create experiment, specify where&#39;s training code located, and parameters.",id:"create-experiment-specify-wheres-training-code-located-and-parameters",children:[]}]},{value:"Summarize: Experiment v.s. Notebook session",id:"summarize-experiment-vs-notebook-session",children:[]},{value:"Experiment-related modules inside Submarine-server",id:"experiment-related-modules-inside-submarine-server",children:[{value:"Experiment Manager",id:"experiment-manager",children:[]},{value:"Compute Cluster Manager",id:"compute-cluster-manager",children:[]},{value:"Experiment Submitter",id:"experiment-submitter",children:[]},{value:"Experiment Monitor",id:"experiment-monitor",children:[]},{value:"Invoke flows of experiment-related components",id:"invoke-flows-of-experiment-related-components",children:[]}]},{value:"Common modules of experiment/notebook-session/model-serving",id:"common-modules-of-experimentnotebook-sessionmodel-serving",children:[]},{value:"Support Predefined-experiment-templates",id:"support-predefined-experiment-templates",children:[{value:"Predefined-experiment-template API to run experiment",id:"predefined-experiment-template-api-to-run-experiment",children:[]},{value:"Handle Predefined-experiment-template from server side",id:"handle-predefined-experiment-template-from-server-side",children:[]}]}],m={toc:l};function p(e){var t=e.components,n=Object(i.a)(e,["components"]);return Object(a.b)("wrapper",Object(r.a)({},m,n,{components:t,mdxType:"MDXLayout"}),Object(a.b)("h2",{id:"overview"},"Overview"),Object(a.b)("p",null,"This document talks about implementation of experiment, flows and design considerations."),Object(a.b)("p",null,"Experiment consists of following components, also interact with other Submarine or 3rd-party components, showing below:"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},"\n\n              +---------------------------------------+\n +----------+ |      Experiment Tasks                 |\n |Run       | |                                       |\n |Configs   | | +----------------------------------+  |\n +----------+ | |   Experiment Runnable Code       |  | +-----------------+\n +----------+ | |                                  |  | |Output Artifacts |\n |Input Data| | |     (Like train-job.py)          |  | |(Models, etc.)   |\n |          | | +----------------------------------+  | +-----------------+\n |          | | +----------------------------------+  |\n +----------+ | |   Experiment Deps (Like Python)  |  | +-------------+\n              | +----------------------------------+  | |Logs/Metrics |\n              | +----------------------------------+  | |             |\n              | |  OS, Base Libaries (Like CUDA)   |  | +-------------+\n              | +----------------------------------+  |\n              +---------------------------------------+\n                                 ^\n                                 | (Launch Task with resources)\n                                 +\n                 +---------------------------------+\n                 |Resource Manager (K8s/Cloud)|\n                 +---------------------------------+\n")),Object(a.b)("p",null,"As showing in the above diagram, Submarine experiment consists of the following items:"),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},"On the left side, there're input data and run configs."),Object(a.b)("li",{parentName:"ul"},"In the middle box, they're experiment tasks, it could be multiple tasks when we run distributed training, pipeline, etc.",Object(a.b)("ul",{parentName:"li"},Object(a.b)("li",{parentName:"ul"},"There're main runnable code, such as ",Object(a.b)("inlineCode",{parentName:"li"},"train.py")," for the training main entry point."),Object(a.b)("li",{parentName:"ul"},"The two boxes below: experiment dependencies and OS/Base libraries we called ",Object(a.b)("inlineCode",{parentName:"li"},"Submarine Environment Profile")," or  ",Object(a.b)("inlineCode",{parentName:"li"},"Environment")," for short. Which defined what is the basic libraries to run the main experiment code."),Object(a.b)("li",{parentName:"ul"},"Experiment tasks are launched by Resource Manager, such as K8s/Cloud or just launched locally. There're resources constraints for each experiment tasks. (e.g. how much memory, cores, GPU, disk etc. can be used by tasks)."))),Object(a.b)("li",{parentName:"ul"},"On the right side, they're artifacts generated by experiments:",Object(a.b)("ul",{parentName:"li"},Object(a.b)("li",{parentName:"ul"},"Output artifacts: Which are main output of the experiment, it could be model(s), or output data when we do batch prediction."),Object(a.b)("li",{parentName:"ul"},"Logs/Metrics for further troubleshooting or understanding of experiment's quality.")))),Object(a.b)("p",null,"For the rest of the design doc, we will talk about how we handle environment, code, and manage output/logs, etc."),Object(a.b)("h2",{id:"api-of-experiment"},"API of Experiment"),Object(a.b)("p",null,"This is not a full definition of experiment, for more details, please reference to experiment API."),Object(a.b)("p",null,"Here's just an example of experiment object which help developer to understand what included in an experiment."),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre",className:"language-yaml"},'experiment:\n       name: "abc",\n       type: "script",\n       environment: "team-default-ml-env"\n       code:\n           sync_mode: s3\n           url: "s3://bucket/training-job.tar.gz"\n       parameter: > python training.py --iteration 10\n                    --input=s3://bucket/input output=s3://bucket/output\n       resource_constraint:\n           res="mem=20gb, vcore=3, gpu=2"\n       timeout: "30 mins"\n')),Object(a.b)("p",null,'This defined a "script" experiment, which has a name "abc", the name can be used to track the experiment. There\'s environment "team-default-ml-env" defined to make sure dependencies of the job can be downloaded properly before executing the job.'),Object(a.b)("p",null,Object(a.b)("inlineCode",{parentName:"p"},"code")," defined where the experiment code will be downloaded, we will support a couple of sync_mode like s3 (or abfs/hdfs), git, etc."),Object(a.b)("p",null,"Different types of experiments will have different specs, for example distributed Tensorflow spec may look like:"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre",className:"language-yaml"},'experiment:\n       name: "abc-distributed-tf",\n       type: "distributed-tf",\n       ps:\n            environment: "team-default-ml-cpu"\n            resource_constraint:\n                 res="mem=20gb, vcore=3, gpu=0"\n       worker:\n            environment: "team-default-ml-gpu"\n            resource_constraint:\n                 res="mem=20gb, vcore=3, gpu=2"\n       code:\n           sync_mode: git\n           url: "https://foo.com/training-job.git"\n       parameter: > python /code/training-job/training.py --iteration 10\n                    --input=s3://bucket/input output=s3://bucket/output\n       tensorboard: enabled\n       timeout: "30 mins"\n')),Object(a.b)("p",null,"Since we have different Docker image, one is using GPU and one is not using GPU, we can specify different environment and resource constraint."),Object(a.b)("h2",{id:"manage-environments-for-experiment"},"Manage environments for experiment"),Object(a.b)("p",null,"Please refer to ",Object(a.b)("a",{parentName:"p",href:"/docs/next/designDocs/environments-implementation"},"environment-implementation.md")," for more details"),Object(a.b)("h2",{id:"manage-storages-for-experiment"},"Manage storages for experiment"),Object(a.b)("p",null,"There're different types of storage, such as logs, metrics, dependencies (environments). For more details. Please refer to ",Object(a.b)("a",{parentName:"p",href:"/docs/next/designDocs/storage-implementation"},"storage-implementations")," for more details. This also includes how to manage code for experiment code."),Object(a.b)("h2",{id:"manage-pre-defined-experiment-libraries"},"Manage Pre-defined experiment libraries"),Object(a.b)("h2",{id:"flow-submit-an-experiment"},"Flow: Submit an experiment"),Object(a.b)("h3",{id:"submit-via-sdk-flows"},"Submit via SDK Flows."),Object(a.b)("p",null,"To better understand experiment implementation, It will be good to understand what is the steps of experiment submission."),Object(a.b)("p",null,Object(a.b)("em",{parentName:"p"},"Please note that below code is just pseudo code, not official APIs.")),Object(a.b)("h3",{id:"specify-what-environment-to-use"},"Specify what environment to use"),Object(a.b)("p",null,"Before submit the environment, you have to choose what environment to choose. Environment defines dependencies, etc. of an experiment or a notebook. might looks like below:"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},'conda_environment =\n"""\n  name: conda-env\n  channels:\n    - defaults\n  dependencies:\n    - asn1crypto=1.3.0=py37_0\n    - blas=1.0=mkl\n    - ca-certificates=2020.1.1=0\n    - certifi=2020.4.5.1=py37_0\n    - cffi=1.14.0=py37hb5b8e2f_0\n    - chardet=3.0.4=py37_1003\n  prefix: /opt/anaconda3/envs/conda-env\n"""\n\n# This environment can be different from notebook\'s own environment\nenvironment = create_environment {\n    DockerImage = "ubuntu:16",\n    CondaEnvironment = conda_environment\n}\n')),Object(a.b)("p",null,"To better understand how environment works, please refer to ",Object(a.b)("a",{parentName:"p",href:"/docs/next/designDocs/environments-implementation"},"environment-implementation"),"."),Object(a.b)("h3",{id:"create-experiment-specify-wheres-training-code-located-and-parameters"},"Create experiment, specify where's training code located, and parameters."),Object(a.b)("p",null,"For  ad-hoc experiment (code located at S3), assume training code is part of the ",Object(a.b)("inlineCode",{parentName:"p"},"training-job.tar.gz")," and main class is ",Object(a.b)("inlineCode",{parentName:"p"},"train.py"),". When the job is launched, whatever specified in the localize_artifacts will be downloaded."),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},'experiment = create_experiment {\n    Environment = environment,\n    ExperimentConfig = {\n       type = "adhoc",\n       localize_artifacts = [\n            "s3://bucket/training-job.tar.gz"\n       ],\n       name = "abc",\n       parameter = "python training.py --iteration 10 --input="s3://bucket/input output="s3://bucket/output",\n    }\n}\nexperiment.run()\nexperiment.wait_for_finish(print_output=True)\n')),Object(a.b)("h5",{id:"run-notebook-file-in-offline-mode"},"Run notebook file in offline mode"),Object(a.b)("p",null,"It is possible we want to run a notebook file in offline mode, to do that, here's code to use to run a notebook code"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},'experiment = create_experiment {\n    Environment = environment,\n    ExperimentConfig = {\n       type = "adhoc",\n       localize_artifacts = [\n            "s3://bucket/folder/notebook-123.ipynb"\n       ],\n       name = "abc",\n       parameter = "runipy training.ipynb --iteration 10 --input="s3://bucket/input output="s3://bucket/output",\n    }\n}\nexperiment.run()\nexperiment.wait_for_finish(print_output=True)\n')),Object(a.b)("h5",{id:"run-pre-defined-experiment-library"},"Run pre-defined experiment library"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},'experiment = create_experiment {\n    # Here you can use default environment of library\n    Environment = environment,\n    ExperimentConfig = {\n       type = "template",\n       name = "abc",\n       # A unique name of template\n       template = "deepfm_ctr",\n       # yaml file defined what is the parameters need to be specified.\n       parameter = {\n           Input: "S3://.../input",\n           Output: "S3://.../output"\n           Training: {\n              "batch_size": 512,\n              "l2_reg": 0.01,\n              ...\n           }\n       }\n    }\n}\nexperiment.run()\nexperiment.wait_for_finish(print_output=True)\n')),Object(a.b)("h2",{id:"summarize-experiment-vs-notebook-session"},"Summarize: Experiment v.s. Notebook session"),Object(a.b)("p",null,"There's a common misunderstanding about what is the differences between running experiment v.s. running task from a notebook session. We will talk about differences and commonalities:"),Object(a.b)("p",null,Object(a.b)("strong",{parentName:"p"},"Differences")),Object(a.b)("table",null,Object(a.b)("thead",{parentName:"table"},Object(a.b)("tr",{parentName:"thead"},Object(a.b)("th",{parentName:"tr",align:null}),Object(a.b)("th",{parentName:"tr",align:null},"Experiment"),Object(a.b)("th",{parentName:"tr",align:null},"Notebook Session"))),Object(a.b)("tbody",{parentName:"table"},Object(a.b)("tr",{parentName:"tbody"},Object(a.b)("td",{parentName:"tr",align:null},"Run mode"),Object(a.b)("td",{parentName:"tr",align:null},"Offline"),Object(a.b)("td",{parentName:"tr",align:null},"Interactive")),Object(a.b)("tr",{parentName:"tbody"},Object(a.b)("td",{parentName:"tr",align:null},"Output Artifacts (a.k.a model)"),Object(a.b)("td",{parentName:"tr",align:null},"Persisted in a shared storage (like S3/NFS)"),Object(a.b)("td",{parentName:"tr",align:null},"Local in the notebook session container, could be ephemeral")),Object(a.b)("tr",{parentName:"tbody"},Object(a.b)("td",{parentName:"tr",align:null},"Run history (meta, logs, metrics)"),Object(a.b)("td",{parentName:"tr",align:null},"Meta/logs/metrics can be traced from experiment UI (or corresponding API)"),Object(a.b)("td",{parentName:"tr",align:null},"No run history can be traced from Submarine UI/API. Can view the current running paragraph's log/metrics, etc.")),Object(a.b)("tr",{parentName:"tbody"},Object(a.b)("td",{parentName:"tr",align:null},"What to run?"),Object(a.b)("td",{parentName:"tr",align:null},"Code from Docker image or shared storage (like Tarball on S3, Github, etc.)"),Object(a.b)("td",{parentName:"tr",align:null},"Local in the notebook's paragraph")))),Object(a.b)("p",null,Object(a.b)("strong",{parentName:"p"},"Commonalities")),Object(a.b)("table",null,Object(a.b)("thead",{parentName:"table"},Object(a.b)("tr",{parentName:"thead"},Object(a.b)("th",{parentName:"tr",align:null}),Object(a.b)("th",{parentName:"tr",align:null},"Experiment & Notebook Session"))),Object(a.b)("tbody",{parentName:"table"},Object(a.b)("tr",{parentName:"tbody"},Object(a.b)("td",{parentName:"tr",align:null},"Environment"),Object(a.b)("td",{parentName:"tr",align:null},"They can share the same Environment configuration")))),Object(a.b)("h2",{id:"experiment-related-modules-inside-submarine-server"},"Experiment-related modules inside Submarine-server"),Object(a.b)("p",null,"(Please refer to ",Object(a.b)("a",{parentName:"p",href:"/docs/next/designDocs/submarine-server/architecture"},"architecture of submarine server")," for more details)"),Object(a.b)("h3",{id:"experiment-manager"},"Experiment Manager"),Object(a.b)("p",null,"The experiment manager receives the experiment requests, persisting the experiment metas in a database(e.g. MySQL), will invoke subsequence modules to submit and monitor the experiment's execution."),Object(a.b)("h3",{id:"compute-cluster-manager"},"Compute Cluster Manager"),Object(a.b)("p",null,"After experiment accepted by experiment manager, based on which cluster the experiment intended to run (like mentioned in the previous sections, Submarine supports to manage multiple compute clusters), compute cluster manager will returns credentials to access the compute cluster. It will also be responsible to create a new compute cluster if needed."),Object(a.b)("p",null,"For most of the on-prem use cases, there's only one cluster involved, for such cases, ComputeClusterManager returns credentials to access local cluster if needed."),Object(a.b)("h3",{id:"experiment-submitter"},"Experiment Submitter"),Object(a.b)("p",null,"Experiment Submitter handles different kinds of experiments to run (e.g. ad-hoc script, distributed TF, MPI, pre-defined templates, Pipeline, AutoML, etc.). And such experiments can be managed by different resource management systems (e.g. K8s, container cloud, etc.)"),Object(a.b)("p",null,"To meet the requirements to support variant kinds of experiments and resource managers, we choose to use plug-in modules to support different submitters (which requires jars to submarine-server\u2019s classpath)."),Object(a.b)("p",null,"To avoid jars and dependencies of plugins break the submarine-server, the plug-ins manager, or both. To solve this issue, we can instantiate submitter plug-ins using a classloader that is different from the system classloader."),Object(a.b)("h4",{id:"submitter-plug-ins"},"Submitter Plug-ins"),Object(a.b)("p",null,"Each plug-in uses a separate module under the server-submitter module. As the default implements, we provide for K8s."),Object(a.b)("p",null,"The submitter-k8s plug-in is used to submit the job to Kubernetes cluster and use the ",Object(a.b)("a",{parentName:"p",href:"https://kubernetes.io/docs/concepts/extend-kubernetes/operator/"},"operator")," as the runtime. The submitter-k8s plug-in implements the operation of CRD object and provides the java interface. In the beginning, we use the ",Object(a.b)("a",{parentName:"p",href:"https://github.com/kubeflow/tf-operator"},"tf-operator")," for the TensorFlow."),Object(a.b)("p",null,"If Submarine want to support the other resource management system in the future, such as submarine-docker-cluster (submarine uses the Raft algorithm to create a docker cluster on the docker runtime environment on multiple servers, providing the most lightweight resource scheduling system for small-scale users). We should create a new plug-in module named submitter-docker under the server-submitter module."),Object(a.b)("h3",{id:"experiment-monitor"},"Experiment Monitor"),Object(a.b)("p",null,"The monitor tracks the experiment life cycle and records the main events and key info in runtime. As the experiment run progresses, the metrics are needed for evaluation of the ongoing success or failure of the execution progress. Due to adapt the different cluster resource management system, so we need a generic metric info structure and each submitter plug-in should inherit and complete it by itself."),Object(a.b)("h3",{id:"invoke-flows-of-experiment-related-components"},"Invoke flows of experiment-related components"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"}," +-----------------+  +----------------+ +----------------+ +-----------------+\n |Experiments      |  |Compute Cluster | |Experiment      | | Experiment      |\n |Mgr              |  |Mgr             | |Submitter       | | Monitor         |\n +-----------------+  +----------------+ +----------------+ +-----------------+\n          +                    +                  +                  +\n User     |                    |                  |                  |\n Submit   |+-------------------------------------\x3e+                  +\n Xperiment|          Use submitter.validate(spec) |                  |\n          |          to validate spec and create  |                  |\n          |          experiment object (state-    |                  |\n          |          machine).                    |                  |\n          |                                       |                  |\n          |          The experiment manager will  |                  |\n          |          persist meta-data to Database|                  |\n          |                    |                  |                  |\n          |                    |                  +                  +\n          |+-----------------\x3e +                  |                  |\n          |  Submit Experiments|                  |                  |\n          |   To ComputeCluster|                  |                  |\n          |   Mgr, get existing|+----------------\x3e|                  |\n          |   cluster, or      |  Use Submitter   |                  |\n          |   create a new one.|  to submit       |+---------------\x3e |\n          |                    |  Different kinds |  Once job is     |\n          |                    |  of experiments  |  submitted, use  |+----+\n          |                    |  to k8s, etc|  monitor to get  |     |\n          |                    |                  |  status updates  |     |\n          |                    |                  |                  |     | Monitor\n          |                    |                  |                  |     | Xperiment\n          |                    |                  |                  |     | status\n          |                    |                  |                  |     |\n          |<--------------------------------------------------------+|     |\n          |                    |                  |                  |     |\n          |                  Update Status back to Experiment        |     |\n          |                    |      Manager     |                  |<----+\n          |                    |                  |                  |\n          |                    |                  |                  |\n          |                    |                  |                  |\n          v                    v                  v                  v\n")),Object(a.b)("p",null,"TODO: add more details about template, environment, etc."),Object(a.b)("h2",{id:"common-modules-of-experimentnotebook-sessionmodel-serving"},"Common modules of experiment/notebook-session/model-serving"),Object(a.b)("p",null,"Experiment/notebook-session/model-serving share a lot of commonalities, all of them are:"),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},"Some workloads running on K8s."),Object(a.b)("li",{parentName:"ul"},"Need persist meta data to DB."),Object(a.b)("li",{parentName:"ul"},"Need monitor task/service running status from resource management system.")),Object(a.b)("p",null,"We need to make their implementation are loose-coupled, but at the same time, share some building blocks as much as possible (e.g. submit PodSpecs to K8s, monitor status, get logs, etc.) to reduce duplications."),Object(a.b)("h2",{id:"support-predefined-experiment-templates"},"Support Predefined-experiment-templates"),Object(a.b)("p",null,"Predefined Experiment Template is just a way to save data-scientists time to repeatedly entering parameters which is not error-proof and user experience is also bad."),Object(a.b)("h3",{id:"predefined-experiment-template-api-to-run-experiment"},"Predefined-experiment-template API to run experiment"),Object(a.b)("p",null,"Predefined experiment template consists a list of parameters, each of the parameter has 4 properties:"),Object(a.b)("table",null,Object(a.b)("thead",{parentName:"table"},Object(a.b)("tr",{parentName:"thead"},Object(a.b)("th",{parentName:"tr",align:null},"Key"),Object(a.b)("th",{parentName:"tr",align:null},"Required"),Object(a.b)("th",{parentName:"tr",align:null},"Default Value"),Object(a.b)("th",{parentName:"tr",align:null},"Description"))),Object(a.b)("tbody",{parentName:"table"},Object(a.b)("tr",{parentName:"tbody"},Object(a.b)("td",{parentName:"tr",align:null},"Name of the key"),Object(a.b)("td",{parentName:"tr",align:null},"true/false"),Object(a.b)("td",{parentName:"tr",align:null},"When required = false, a default value can be provided by the template"),Object(a.b)("td",{parentName:"tr",align:null},"Description of the parameter")))),Object(a.b)("p",null,"For the example of deepfm CTR training experiment mentioned in the ",Object(a.b)("a",{parentName:"p",href:"/docs/next/designDocs/architecture-and-requirements"},"architecture-and-requirements.md")),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},'{\n  "input": {\n    "train_data": ["hdfs:///user/submarine/data/tr.libsvm"],\n    "valid_data": ["hdfs:///user/submarine/data/va.libsvm"],\n    "test_data": ["hdfs:///user/submarine/data/te.libsvm"],\n    "type": "libsvm"\n  },\n  "output": {\n    "save_model_dir": "hdfs:///user/submarine/deepfm",\n    "metric": "auc"\n  },\n  "training": {\n    "batch_size" : 512,\n    "field_size": 39,\n    "num_epochs": 3,\n    "feature_size": 117581,\n    ...\n  }\n}\n')),Object(a.b)("p",null,"The template will be (in yaml format):"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre",className:"language-yaml"},"# deepfm.ctr template\nname: deepfm.ctr\nauthor:\ndescription: >\n  This is a template to run CTR training using deepfm algorithm, by default it runs\n  single node TF job, you can also overwrite training parameters to use distributed\n  training.\n\nparameters:\n  - name: input.train_data\n    required: true\n    description: >\n      train data is expected in SVM format, and can be stored in HDFS/S3\n    ...\n  - name: training.batch_size\n    required: false\n    default: 32\n    description: This is batch size of training\n")),Object(a.b)("p",null,"The batch format can be used in UI/API."),Object(a.b)("h3",{id:"handle-predefined-experiment-template-from-server-side"},"Handle Predefined-experiment-template from server side"),Object(a.b)("p",null,"Please note that, the conversion of predefined-experiment-template will be always handled by server. The invoke flow looks like:"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},"\n                         +------------Submarine Server -----------------------+\n   +--------------+      |  +-----------------+                               |\n   |Client        |+-------\x3e|Experimment Mgr  |                               |\n   |              |      |  |                 |                               |\n   +--------------+      |  +-----------------+                               |\n                         |          +                                         |\n          Submit         |  +-------v---------+       Get Experiment Template |\n          Template       |  |Experiment       |<-----+From pre-registered     |\n          Parameters     |  |Template Registry|       Templates               |\n          to Submarine   |  +-------+---------+                               |\n          Server         |          |                                         |\n                         |  +-------v---------+       +-----------------+     |\n                         |  |Deepfm CTR Templ-|       |Experiment-      |     |\n                         |  |ate Handler      +------\x3e|Tensorflow       |     |\n                         |  +-----------------+       +--------+--------+     |\n                         |                                     |              |\n                         |                                     |              |\n                         |                            +--------v--------+     |\n                         |                            |Experiment       |     |\n                         |                            |Submitter        |     |\n                         |                            +--------+--------+     |\n                         |                                     |              |\n                         |                                     |              |\n                         |                            +--------v--------+     |\n                         |                            |                 |     |\n                         |                            | ......          |     |\n                         |                            +-----------------+     |\n                         |                                                    |\n                         +----------------------------------------------------+\n")),Object(a.b)("p",null,"Basically, from Client, it submitted template parameters to Submarine Server, inside submarine server, it finds the corresponding template handler based on the name. And the template handler converts input parameters to an actual experiment, such as a distributed TF experiment. After that, it goes the similar route to validate experiment spec, compute cluster manager, etc. to get the experiment submitted and monitored."),Object(a.b)("p",null,"Predefined-experiment-template is able to create any kind of experiment, it could be a pipeline:"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},"\n   +-----------------+                  +------------------+\n   |Template XYZ     |                  | XYZ Template     |\n   |                 |+---------------\x3e | Handler          |\n   +-----------------+                  +------------------+\n                                                   +\n                                                   |\n                                                   |\n                                                   |\n                                                   |\n                                                   v\n             +--------------------+      +------------------+\n             | +-----------------+|      | Predefined       |\n             | |  Split Train/   ||<----+| Pipeline         |\n             | |  Test data      ||      +------------------+\n             | +-------+---------+|\n             |         |          |\n             | +-------v---------+|\n             | |  Spark Job ETL  ||\n             | |                 ||\n             | +-------+---------+|\n             |         |          |\n             | +-------v---------+|\n             | | Train using     ||\n             | | XGBoost         ||\n             | +-------+---------+|\n             |         |          |\n             | +-------v---------+|\n             | | Validate Train  ||\n             | | Results         ||\n             | +-----------------+|\n             |                    |\n             +--------------------+\n")),Object(a.b)("p",null,"Template can be also chained to reuse other template handlers"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},"\n   +-----------------+                  +------------------+\n   |Template XYZ     |                  | XYZ Template     |\n   |                 |+---------------\x3e | Handler          |\n   +-----------------+                  +------------------+\n                                                   +\n                                                   |\n                                                   v\n               +------------------+      +------------------+\n               |Distributed       |      | ABC Template     |\n               |TF Experiment     |<----+| Handler          |\n               +------------------+      +------------------+\n")),Object(a.b)("p",null,"Template Handler is a callable class inside Submarine Server with a standard interface defined like."),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre",className:"language-java"},"interface ExperimentTemplateHandler {\n   ExperimentSpec createExperiment(TemplatedExperimentParameters param)\n}\n")),Object(a.b)("p",null,"We should avoid users to do coding when they want to add new template, we should have several standard template handler to deal with most of the template handling."),Object(a.b)("p",null,"Experiment templates can be registered/updated/deleted via Submarine Server's REST API, which need to be discussed separately in the doc. (TODO)"))}p.isMDXComponent=!0},209:function(e,t,n){"use strict";n.d(t,"a",(function(){return c})),n.d(t,"b",(function(){return d}));var r=n(0),i=n.n(r);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n,r,i={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var m=i.a.createContext({}),p=function(e){var t=i.a.useContext(m),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},c=function(e){var t=p(e.components);return i.a.createElement(m.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return i.a.createElement(i.a.Fragment,{},t)}},b=i.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,o=e.parentName,m=l(e,["components","mdxType","originalType","parentName"]),c=p(n),b=r,d=c["".concat(o,".").concat(b)]||c[b]||u[b]||a;return n?i.a.createElement(d,s(s({ref:t},m),{},{components:n})):i.a.createElement(d,s({ref:t},m))}));function d(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,o=new Array(a);o[0]=b;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s.mdxType="string"==typeof e?e:r,o[1]=s;for(var m=2;m<a;m++)o[m]=n[m];return i.a.createElement.apply(null,o)}return i.a.createElement.apply(null,n)}b.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/cbf00e67.6b8e1841.js b/cbf00e67.6b8e1841.js
new file mode 100644
index 0000000..572c94f
--- /dev/null
+++ b/cbf00e67.6b8e1841.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[99],{166:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return o})),n.d(t,"metadata",(function(){return s})),n.d(t,"toc",(function(){return l})),n.d(t,"default",(function(){return p}));var r=n(3),i=n(7),a=(n(0),n(194)),o={title:"Experiment Implementation"},s={unversionedId:"designDocs/experiment-implementation",id:"designDocs/experiment-implementation",isDocsHomePage:!1,title:"Experiment Implementation",description:"\x3c!--",source:"@site/docs/designDocs/experiment-implementation.md",slug:"/designDocs/experiment-implementation",permalink:"/docs/next/designDocs/experiment-implementation",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/designDocs/experiment-implementation.md",version:"current",sidebar:"docs",previous:{title:"Environments Implementation",permalink:"/docs/next/designDocs/environments-implementation"},next:{title:"Notebook Implementation",permalink:"/docs/next/designDocs/notebook-implementation"}},l=[{value:"Overview",id:"overview",children:[]},{value:"API of Experiment",id:"api-of-experiment",children:[]},{value:"Manage environments for experiment",id:"manage-environments-for-experiment",children:[]},{value:"Manage storages for experiment",id:"manage-storages-for-experiment",children:[]},{value:"Manage Pre-defined experiment libraries",id:"manage-pre-defined-experiment-libraries",children:[]},{value:"Flow: Submit an experiment",id:"flow-submit-an-experiment",children:[{value:"Submit via SDK Flows.",id:"submit-via-sdk-flows",children:[]},{value:"Specify what environment to use",id:"specify-what-environment-to-use",children:[]},{value:"Create experiment, specify where&#39;s training code located, and parameters.",id:"create-experiment-specify-wheres-training-code-located-and-parameters",children:[]}]},{value:"Summarize: Experiment v.s. Notebook session",id:"summarize-experiment-vs-notebook-session",children:[]},{value:"Experiment-related modules inside Submarine-server",id:"experiment-related-modules-inside-submarine-server",children:[{value:"Experiment Manager",id:"experiment-manager",children:[]},{value:"Compute Cluster Manager",id:"compute-cluster-manager",children:[]},{value:"Experiment Submitter",id:"experiment-submitter",children:[]},{value:"Experiment Monitor",id:"experiment-monitor",children:[]},{value:"Invoke flows of experiment-related components",id:"invoke-flows-of-experiment-related-components",children:[]}]},{value:"Common modules of experiment/notebook-session/model-serving",id:"common-modules-of-experimentnotebook-sessionmodel-serving",children:[]},{value:"Support Predefined-experiment-templates",id:"support-predefined-experiment-templates",children:[{value:"Predefined-experiment-template API to run experiment",id:"predefined-experiment-template-api-to-run-experiment",children:[]},{value:"Handle Predefined-experiment-template from server side",id:"handle-predefined-experiment-template-from-server-side",children:[]}]}],m={toc:l};function p(e){var t=e.components,n=Object(i.a)(e,["components"]);return Object(a.b)("wrapper",Object(r.a)({},m,n,{components:t,mdxType:"MDXLayout"}),Object(a.b)("h2",{id:"overview"},"Overview"),Object(a.b)("p",null,"This document talks about implementation of experiment, flows and design considerations."),Object(a.b)("p",null,"Experiment consists of following components, also interact with other Submarine or 3rd-party components, showing below:"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},"\n\n              +---------------------------------------+\n +----------+ |      Experiment Tasks                 |\n |Run       | |                                       |\n |Configs   | | +----------------------------------+  |\n +----------+ | |   Experiment Runnable Code       |  | +-----------------+\n +----------+ | |                                  |  | |Output Artifacts |\n |Input Data| | |     (Like train-job.py)          |  | |(Models, etc.)   |\n |          | | +----------------------------------+  | +-----------------+\n |          | | +----------------------------------+  |\n +----------+ | |   Experiment Deps (Like Python)  |  | +-------------+\n              | +----------------------------------+  | |Logs/Metrics |\n              | +----------------------------------+  | |             |\n              | |  OS, Base Libaries (Like CUDA)   |  | +-------------+\n              | +----------------------------------+  |\n              +---------------------------------------+\n                                 ^\n                                 | (Launch Task with resources)\n                                 +\n                 +---------------------------------+\n                 |Resource Manager (K8s/Cloud)|\n                 +---------------------------------+\n")),Object(a.b)("p",null,"As showing in the above diagram, Submarine experiment consists of the following items:"),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},"On the left side, there're input data and run configs."),Object(a.b)("li",{parentName:"ul"},"In the middle box, they're experiment tasks, it could be multiple tasks when we run distributed training, pipeline, etc.",Object(a.b)("ul",{parentName:"li"},Object(a.b)("li",{parentName:"ul"},"There're main runnable code, such as ",Object(a.b)("inlineCode",{parentName:"li"},"train.py")," for the training main entry point."),Object(a.b)("li",{parentName:"ul"},"The two boxes below: experiment dependencies and OS/Base libraries we called ",Object(a.b)("inlineCode",{parentName:"li"},"Submarine Environment Profile")," or  ",Object(a.b)("inlineCode",{parentName:"li"},"Environment")," for short. Which defined what is the basic libraries to run the main experiment code."),Object(a.b)("li",{parentName:"ul"},"Experiment tasks are launched by Resource Manager, such as K8s/Cloud or just launched locally. There're resources constraints for each experiment tasks. (e.g. how much memory, cores, GPU, disk etc. can be used by tasks)."))),Object(a.b)("li",{parentName:"ul"},"On the right side, they're artifacts generated by experiments:",Object(a.b)("ul",{parentName:"li"},Object(a.b)("li",{parentName:"ul"},"Output artifacts: Which are main output of the experiment, it could be model(s), or output data when we do batch prediction."),Object(a.b)("li",{parentName:"ul"},"Logs/Metrics for further troubleshooting or understanding of experiment's quality.")))),Object(a.b)("p",null,"For the rest of the design doc, we will talk about how we handle environment, code, and manage output/logs, etc."),Object(a.b)("h2",{id:"api-of-experiment"},"API of Experiment"),Object(a.b)("p",null,"This is not a full definition of experiment, for more details, please reference to experiment API."),Object(a.b)("p",null,"Here's just an example of experiment object which help developer to understand what included in an experiment."),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre",className:"language-yaml"},'experiment:\n       name: "abc",\n       type: "script",\n       environment: "team-default-ml-env"\n       code:\n           sync_mode: s3\n           url: "s3://bucket/training-job.tar.gz"\n       parameter: > python training.py --iteration 10\n                    --input=s3://bucket/input output=s3://bucket/output\n       resource_constraint:\n           res="mem=20gb, vcore=3, gpu=2"\n       timeout: "30 mins"\n')),Object(a.b)("p",null,'This defined a "script" experiment, which has a name "abc", the name can be used to track the experiment. There\'s environment "team-default-ml-env" defined to make sure dependencies of the job can be downloaded properly before executing the job.'),Object(a.b)("p",null,Object(a.b)("inlineCode",{parentName:"p"},"code")," defined where the experiment code will be downloaded, we will support a couple of sync_mode like s3 (or abfs/hdfs), git, etc."),Object(a.b)("p",null,"Different types of experiments will have different specs, for example distributed Tensorflow spec may look like:"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre",className:"language-yaml"},'experiment:\n       name: "abc-distributed-tf",\n       type: "distributed-tf",\n       ps:\n            environment: "team-default-ml-cpu"\n            resource_constraint:\n                 res="mem=20gb, vcore=3, gpu=0"\n       worker:\n            environment: "team-default-ml-gpu"\n            resource_constraint:\n                 res="mem=20gb, vcore=3, gpu=2"\n       code:\n           sync_mode: git\n           url: "https://foo.com/training-job.git"\n       parameter: > python /code/training-job/training.py --iteration 10\n                    --input=s3://bucket/input output=s3://bucket/output\n       tensorboard: enabled\n       timeout: "30 mins"\n')),Object(a.b)("p",null,"Since we have different Docker image, one is using GPU and one is not using GPU, we can specify different environment and resource constraint."),Object(a.b)("h2",{id:"manage-environments-for-experiment"},"Manage environments for experiment"),Object(a.b)("p",null,"Please refer to ",Object(a.b)("a",{parentName:"p",href:"/docs/next/designDocs/environments-implementation"},"environment-implementation.md")," for more details"),Object(a.b)("h2",{id:"manage-storages-for-experiment"},"Manage storages for experiment"),Object(a.b)("p",null,"There're different types of storage, such as logs, metrics, dependencies (environments). For more details. Please refer to ",Object(a.b)("a",{parentName:"p",href:"/docs/next/designDocs/storage-implementation"},"storage-implementations")," for more details. This also includes how to manage code for experiment code."),Object(a.b)("h2",{id:"manage-pre-defined-experiment-libraries"},"Manage Pre-defined experiment libraries"),Object(a.b)("h2",{id:"flow-submit-an-experiment"},"Flow: Submit an experiment"),Object(a.b)("h3",{id:"submit-via-sdk-flows"},"Submit via SDK Flows."),Object(a.b)("p",null,"To better understand experiment implementation, It will be good to understand what is the steps of experiment submission."),Object(a.b)("p",null,Object(a.b)("em",{parentName:"p"},"Please note that below code is just pseudo code, not official APIs.")),Object(a.b)("h3",{id:"specify-what-environment-to-use"},"Specify what environment to use"),Object(a.b)("p",null,"Before submit the environment, you have to choose what environment to choose. Environment defines dependencies, etc. of an experiment or a notebook. might looks like below:"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},'conda_environment =\n"""\n  name: conda-env\n  channels:\n    - defaults\n  dependencies:\n    - asn1crypto=1.3.0=py37_0\n    - blas=1.0=mkl\n    - ca-certificates=2020.1.1=0\n    - certifi=2020.4.5.1=py37_0\n    - cffi=1.14.0=py37hb5b8e2f_0\n    - chardet=3.0.4=py37_1003\n  prefix: /opt/anaconda3/envs/conda-env\n"""\n\n# This environment can be different from notebook\'s own environment\nenvironment = create_environment {\n    DockerImage = "ubuntu:16",\n    CondaEnvironment = conda_environment\n}\n')),Object(a.b)("p",null,"To better understand how environment works, please refer to ",Object(a.b)("a",{parentName:"p",href:"/docs/next/designDocs/environments-implementation"},"environment-implementation"),"."),Object(a.b)("h3",{id:"create-experiment-specify-wheres-training-code-located-and-parameters"},"Create experiment, specify where's training code located, and parameters."),Object(a.b)("p",null,"For  ad-hoc experiment (code located at S3), assume training code is part of the ",Object(a.b)("inlineCode",{parentName:"p"},"training-job.tar.gz")," and main class is ",Object(a.b)("inlineCode",{parentName:"p"},"train.py"),". When the job is launched, whatever specified in the localize_artifacts will be downloaded."),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},'experiment = create_experiment {\n    Environment = environment,\n    ExperimentConfig = {\n       type = "adhoc",\n       localize_artifacts = [\n            "s3://bucket/training-job.tar.gz"\n       ],\n       name = "abc",\n       parameter = "python training.py --iteration 10 --input="s3://bucket/input output="s3://bucket/output",\n    }\n}\nexperiment.run()\nexperiment.wait_for_finish(print_output=True)\n')),Object(a.b)("h5",{id:"run-notebook-file-in-offline-mode"},"Run notebook file in offline mode"),Object(a.b)("p",null,"It is possible we want to run a notebook file in offline mode, to do that, here's code to use to run a notebook code"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},'experiment = create_experiment {\n    Environment = environment,\n    ExperimentConfig = {\n       type = "adhoc",\n       localize_artifacts = [\n            "s3://bucket/folder/notebook-123.ipynb"\n       ],\n       name = "abc",\n       parameter = "runipy training.ipynb --iteration 10 --input="s3://bucket/input output="s3://bucket/output",\n    }\n}\nexperiment.run()\nexperiment.wait_for_finish(print_output=True)\n')),Object(a.b)("h5",{id:"run-pre-defined-experiment-library"},"Run pre-defined experiment library"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},'experiment = create_experiment {\n    # Here you can use default environment of library\n    Environment = environment,\n    ExperimentConfig = {\n       type = "template",\n       name = "abc",\n       # A unique name of template\n       template = "deepfm_ctr",\n       # yaml file defined what is the parameters need to be specified.\n       parameter = {\n           Input: "S3://.../input",\n           Output: "S3://.../output"\n           Training: {\n              "batch_size": 512,\n              "l2_reg": 0.01,\n              ...\n           }\n       }\n    }\n}\nexperiment.run()\nexperiment.wait_for_finish(print_output=True)\n')),Object(a.b)("h2",{id:"summarize-experiment-vs-notebook-session"},"Summarize: Experiment v.s. Notebook session"),Object(a.b)("p",null,"There's a common misunderstanding about what is the differences between running experiment v.s. running task from a notebook session. We will talk about differences and commonalities:"),Object(a.b)("p",null,Object(a.b)("strong",{parentName:"p"},"Differences")),Object(a.b)("table",null,Object(a.b)("thead",{parentName:"table"},Object(a.b)("tr",{parentName:"thead"},Object(a.b)("th",{parentName:"tr",align:null}),Object(a.b)("th",{parentName:"tr",align:null},"Experiment"),Object(a.b)("th",{parentName:"tr",align:null},"Notebook Session"))),Object(a.b)("tbody",{parentName:"table"},Object(a.b)("tr",{parentName:"tbody"},Object(a.b)("td",{parentName:"tr",align:null},"Run mode"),Object(a.b)("td",{parentName:"tr",align:null},"Offline"),Object(a.b)("td",{parentName:"tr",align:null},"Interactive")),Object(a.b)("tr",{parentName:"tbody"},Object(a.b)("td",{parentName:"tr",align:null},"Output Artifacts (a.k.a model)"),Object(a.b)("td",{parentName:"tr",align:null},"Persisted in a shared storage (like S3/NFS)"),Object(a.b)("td",{parentName:"tr",align:null},"Local in the notebook session container, could be ephemeral")),Object(a.b)("tr",{parentName:"tbody"},Object(a.b)("td",{parentName:"tr",align:null},"Run history (meta, logs, metrics)"),Object(a.b)("td",{parentName:"tr",align:null},"Meta/logs/metrics can be traced from experiment UI (or corresponding API)"),Object(a.b)("td",{parentName:"tr",align:null},"No run history can be traced from Submarine UI/API. Can view the current running paragraph's log/metrics, etc.")),Object(a.b)("tr",{parentName:"tbody"},Object(a.b)("td",{parentName:"tr",align:null},"What to run?"),Object(a.b)("td",{parentName:"tr",align:null},"Code from Docker image or shared storage (like Tarball on S3, Github, etc.)"),Object(a.b)("td",{parentName:"tr",align:null},"Local in the notebook's paragraph")))),Object(a.b)("p",null,Object(a.b)("strong",{parentName:"p"},"Commonalities")),Object(a.b)("table",null,Object(a.b)("thead",{parentName:"table"},Object(a.b)("tr",{parentName:"thead"},Object(a.b)("th",{parentName:"tr",align:null}),Object(a.b)("th",{parentName:"tr",align:null},"Experiment & Notebook Session"))),Object(a.b)("tbody",{parentName:"table"},Object(a.b)("tr",{parentName:"tbody"},Object(a.b)("td",{parentName:"tr",align:null},"Environment"),Object(a.b)("td",{parentName:"tr",align:null},"They can share the same Environment configuration")))),Object(a.b)("h2",{id:"experiment-related-modules-inside-submarine-server"},"Experiment-related modules inside Submarine-server"),Object(a.b)("p",null,"(Please refer to ",Object(a.b)("a",{parentName:"p",href:"/docs/next/designDocs/submarine-server/architecture"},"architecture of submarine server")," for more details)"),Object(a.b)("h3",{id:"experiment-manager"},"Experiment Manager"),Object(a.b)("p",null,"The experiment manager receives the experiment requests, persisting the experiment metas in a database(e.g. MySQL), will invoke subsequence modules to submit and monitor the experiment's execution."),Object(a.b)("h3",{id:"compute-cluster-manager"},"Compute Cluster Manager"),Object(a.b)("p",null,"After experiment accepted by experiment manager, based on which cluster the experiment intended to run (like mentioned in the previous sections, Submarine supports to manage multiple compute clusters), compute cluster manager will returns credentials to access the compute cluster. It will also be responsible to create a new compute cluster if needed."),Object(a.b)("p",null,"For most of the on-prem use cases, there's only one cluster involved, for such cases, ComputeClusterManager returns credentials to access local cluster if needed."),Object(a.b)("h3",{id:"experiment-submitter"},"Experiment Submitter"),Object(a.b)("p",null,"Experiment Submitter handles different kinds of experiments to run (e.g. ad-hoc script, distributed TF, MPI, pre-defined templates, Pipeline, AutoML, etc.). And such experiments can be managed by different resource management systems (e.g. K8s, container cloud, etc.)"),Object(a.b)("p",null,"To meet the requirements to support variant kinds of experiments and resource managers, we choose to use plug-in modules to support different submitters (which requires jars to submarine-server\u2019s classpath)."),Object(a.b)("p",null,"To avoid jars and dependencies of plugins break the submarine-server, the plug-ins manager, or both. To solve this issue, we can instantiate submitter plug-ins using a classloader that is different from the system classloader."),Object(a.b)("h4",{id:"submitter-plug-ins"},"Submitter Plug-ins"),Object(a.b)("p",null,"Each plug-in uses a separate module under the server-submitter module. As the default implements, we provide for K8s."),Object(a.b)("p",null,"The submitter-k8s plug-in is used to submit the job to Kubernetes cluster and use the ",Object(a.b)("a",{parentName:"p",href:"https://kubernetes.io/docs/concepts/extend-kubernetes/operator/"},"operator")," as the runtime. The submitter-k8s plug-in implements the operation of CRD object and provides the java interface. In the beginning, we use the ",Object(a.b)("a",{parentName:"p",href:"https://github.com/kubeflow/tf-operator"},"tf-operator")," for the TensorFlow."),Object(a.b)("p",null,"If Submarine want to support the other resource management system in the future, such as submarine-docker-cluster (submarine uses the Raft algorithm to create a docker cluster on the docker runtime environment on multiple servers, providing the most lightweight resource scheduling system for small-scale users). We should create a new plug-in module named submitter-docker under the server-submitter module."),Object(a.b)("h3",{id:"experiment-monitor"},"Experiment Monitor"),Object(a.b)("p",null,"The monitor tracks the experiment life cycle and records the main events and key info in runtime. As the experiment run progresses, the metrics are needed for evaluation of the ongoing success or failure of the execution progress. Due to adapt the different cluster resource management system, so we need a generic metric info structure and each submitter plug-in should inherit and complete it by itself."),Object(a.b)("h3",{id:"invoke-flows-of-experiment-related-components"},"Invoke flows of experiment-related components"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"}," +-----------------+  +----------------+ +----------------+ +-----------------+\n |Experiments      |  |Compute Cluster | |Experiment      | | Experiment      |\n |Mgr              |  |Mgr             | |Submitter       | | Monitor         |\n +-----------------+  +----------------+ +----------------+ +-----------------+\n          +                    +                  +                  +\n User     |                    |                  |                  |\n Submit   |+-------------------------------------\x3e+                  +\n Xperiment|          Use submitter.validate(spec) |                  |\n          |          to validate spec and create  |                  |\n          |          experiment object (state-    |                  |\n          |          machine).                    |                  |\n          |                                       |                  |\n          |          The experiment manager will  |                  |\n          |          persist meta-data to Database|                  |\n          |                    |                  |                  |\n          |                    |                  +                  +\n          |+-----------------\x3e +                  |                  |\n          |  Submit Experiments|                  |                  |\n          |   To ComputeCluster|                  |                  |\n          |   Mgr, get existing|+----------------\x3e|                  |\n          |   cluster, or      |  Use Submitter   |                  |\n          |   create a new one.|  to submit       |+---------------\x3e |\n          |                    |  Different kinds |  Once job is     |\n          |                    |  of experiments  |  submitted, use  |+----+\n          |                    |  to k8s, etc|  monitor to get  |     |\n          |                    |                  |  status updates  |     |\n          |                    |                  |                  |     | Monitor\n          |                    |                  |                  |     | Xperiment\n          |                    |                  |                  |     | status\n          |                    |                  |                  |     |\n          |<--------------------------------------------------------+|     |\n          |                    |                  |                  |     |\n          |                  Update Status back to Experiment        |     |\n          |                    |      Manager     |                  |<----+\n          |                    |                  |                  |\n          |                    |                  |                  |\n          |                    |                  |                  |\n          v                    v                  v                  v\n")),Object(a.b)("p",null,"TODO: add more details about template, environment, etc."),Object(a.b)("h2",{id:"common-modules-of-experimentnotebook-sessionmodel-serving"},"Common modules of experiment/notebook-session/model-serving"),Object(a.b)("p",null,"Experiment/notebook-session/model-serving share a lot of commonalities, all of them are:"),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},"Some workloads running on K8s."),Object(a.b)("li",{parentName:"ul"},"Need persist meta data to DB."),Object(a.b)("li",{parentName:"ul"},"Need monitor task/service running status from resource management system.")),Object(a.b)("p",null,"We need to make their implementation are loose-coupled, but at the same time, share some building blocks as much as possible (e.g. submit PodSpecs to K8s, monitor status, get logs, etc.) to reduce duplications."),Object(a.b)("h2",{id:"support-predefined-experiment-templates"},"Support Predefined-experiment-templates"),Object(a.b)("p",null,"Predefined Experiment Template is just a way to save data-scientists time to repeatedly entering parameters which is not error-proof and user experience is also bad."),Object(a.b)("h3",{id:"predefined-experiment-template-api-to-run-experiment"},"Predefined-experiment-template API to run experiment"),Object(a.b)("p",null,"Predefined experiment template consists a list of parameters, each of the parameter has 4 properties:"),Object(a.b)("table",null,Object(a.b)("thead",{parentName:"table"},Object(a.b)("tr",{parentName:"thead"},Object(a.b)("th",{parentName:"tr",align:null},"Key"),Object(a.b)("th",{parentName:"tr",align:null},"Required"),Object(a.b)("th",{parentName:"tr",align:null},"Default Value"),Object(a.b)("th",{parentName:"tr",align:null},"Description"))),Object(a.b)("tbody",{parentName:"table"},Object(a.b)("tr",{parentName:"tbody"},Object(a.b)("td",{parentName:"tr",align:null},"Name of the key"),Object(a.b)("td",{parentName:"tr",align:null},"true/false"),Object(a.b)("td",{parentName:"tr",align:null},"When required = false, a default value can be provided by the template"),Object(a.b)("td",{parentName:"tr",align:null},"Description of the parameter")))),Object(a.b)("p",null,"For the example of deepfm CTR training experiment mentioned in the ",Object(a.b)("a",{parentName:"p",href:"/docs/next/designDocs/architecture-and-requirements"},"architecture-and-requirements.md")),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},'{\n  "input": {\n    "train_data": ["hdfs:///user/submarine/data/tr.libsvm"],\n    "valid_data": ["hdfs:///user/submarine/data/va.libsvm"],\n    "test_data": ["hdfs:///user/submarine/data/te.libsvm"],\n    "type": "libsvm"\n  },\n  "output": {\n    "save_model_dir": "hdfs:///user/submarine/deepfm",\n    "metric": "auc"\n  },\n  "training": {\n    "batch_size" : 512,\n    "field_size": 39,\n    "num_epochs": 3,\n    "feature_size": 117581,\n    ...\n  }\n}\n')),Object(a.b)("p",null,"The template will be (in yaml format):"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre",className:"language-yaml"},"# deepfm.ctr template\nname: deepfm.ctr\nauthor:\ndescription: >\n  This is a template to run CTR training using deepfm algorithm, by default it runs\n  single node TF job, you can also overwrite training parameters to use distributed\n  training.\n\nparameters:\n  - name: input.train_data\n    required: true\n    description: >\n      train data is expected in SVM format, and can be stored in HDFS/S3\n    ...\n  - name: training.batch_size\n    required: false\n    default: 32\n    description: This is batch size of training\n")),Object(a.b)("p",null,"The batch format can be used in UI/API."),Object(a.b)("h3",{id:"handle-predefined-experiment-template-from-server-side"},"Handle Predefined-experiment-template from server side"),Object(a.b)("p",null,"Please note that, the conversion of predefined-experiment-template will be always handled by server. The invoke flow looks like:"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},"\n                         +------------Submarine Server -----------------------+\n   +--------------+      |  +-----------------+                               |\n   |Client        |+-------\x3e|Experimment Mgr  |                               |\n   |              |      |  |                 |                               |\n   +--------------+      |  +-----------------+                               |\n                         |          +                                         |\n          Submit         |  +-------v---------+       Get Experiment Template |\n          Template       |  |Experiment       |<-----+From pre-registered     |\n          Parameters     |  |Template Registry|       Templates               |\n          to Submarine   |  +-------+---------+                               |\n          Server         |          |                                         |\n                         |  +-------v---------+       +-----------------+     |\n                         |  |Deepfm CTR Templ-|       |Experiment-      |     |\n                         |  |ate Handler      +------\x3e|Tensorflow       |     |\n                         |  +-----------------+       +--------+--------+     |\n                         |                                     |              |\n                         |                                     |              |\n                         |                            +--------v--------+     |\n                         |                            |Experiment       |     |\n                         |                            |Submitter        |     |\n                         |                            +--------+--------+     |\n                         |                                     |              |\n                         |                                     |              |\n                         |                            +--------v--------+     |\n                         |                            |                 |     |\n                         |                            | ......          |     |\n                         |                            +-----------------+     |\n                         |                                                    |\n                         +----------------------------------------------------+\n")),Object(a.b)("p",null,"Basically, from Client, it submitted template parameters to Submarine Server, inside submarine server, it finds the corresponding template handler based on the name. And the template handler converts input parameters to an actual experiment, such as a distributed TF experiment. After that, it goes the similar route to validate experiment spec, compute cluster manager, etc. to get the experiment submitted and monitored."),Object(a.b)("p",null,"Predefined-experiment-template is able to create any kind of experiment, it could be a pipeline:"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},"\n   +-----------------+                  +------------------+\n   |Template XYZ     |                  | XYZ Template     |\n   |                 |+---------------\x3e | Handler          |\n   +-----------------+                  +------------------+\n                                                   +\n                                                   |\n                                                   |\n                                                   |\n                                                   |\n                                                   v\n             +--------------------+      +------------------+\n             | +-----------------+|      | Predefined       |\n             | |  Split Train/   ||<----+| Pipeline         |\n             | |  Test data      ||      +------------------+\n             | +-------+---------+|\n             |         |          |\n             | +-------v---------+|\n             | |  Spark Job ETL  ||\n             | |                 ||\n             | +-------+---------+|\n             |         |          |\n             | +-------v---------+|\n             | | Train using     ||\n             | | XGBoost         ||\n             | +-------+---------+|\n             |         |          |\n             | +-------v---------+|\n             | | Validate Train  ||\n             | | Results         ||\n             | +-----------------+|\n             |                    |\n             +--------------------+\n")),Object(a.b)("p",null,"Template can be also chained to reuse other template handlers"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},"\n   +-----------------+                  +------------------+\n   |Template XYZ     |                  | XYZ Template     |\n   |                 |+---------------\x3e | Handler          |\n   +-----------------+                  +------------------+\n                                                   +\n                                                   |\n                                                   v\n               +------------------+      +------------------+\n               |Distributed       |      | ABC Template     |\n               |TF Experiment     |<----+| Handler          |\n               +------------------+      +------------------+\n")),Object(a.b)("p",null,"Template Handler is a callable class inside Submarine Server with a standard interface defined like."),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre",className:"language-java"},"interface ExperimentTemplateHandler {\n   ExperimentSpec createExperiment(TemplatedExperimentParameters param)\n}\n")),Object(a.b)("p",null,"We should avoid users to do coding when they want to add new template, we should have several standard template handler to deal with most of the template handling."),Object(a.b)("p",null,"Experiment templates can be registered/updated/deleted via Submarine Server's REST API, which need to be discussed separately in the doc. (TODO)"))}p.isMDXComponent=!0},194:function(e,t,n){"use strict";n.d(t,"a",(function(){return c})),n.d(t,"b",(function(){return d}));var r=n(0),i=n.n(r);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n,r,i={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var m=i.a.createContext({}),p=function(e){var t=i.a.useContext(m),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},c=function(e){var t=p(e.components);return i.a.createElement(m.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return i.a.createElement(i.a.Fragment,{},t)}},b=i.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,o=e.parentName,m=l(e,["components","mdxType","originalType","parentName"]),c=p(n),b=r,d=c["".concat(o,".").concat(b)]||c[b]||u[b]||a;return n?i.a.createElement(d,s(s({ref:t},m),{},{components:n})):i.a.createElement(d,s({ref:t},m))}));function d(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,o=new Array(a);o[0]=b;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s.mdxType="string"==typeof e?e:r,o[1]=s;for(var m=2;m<a;m++)o[m]=n[m];return i.a.createElement.apply(null,o)}return i.a.createElement.apply(null,n)}b.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/cce3422b.24d814ea.js b/cce3422b.0e2a0abd.js
similarity index 98%
rename from cce3422b.24d814ea.js
rename to cce3422b.0e2a0abd.js
index e52e8a1..f22dfbd 100644
--- a/cce3422b.24d814ea.js
+++ b/cce3422b.0e2a0abd.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[112],{179:function(e,t,a){"use strict";a.r(t),a.d(t,"frontMatter",(function(){return l})),a.d(t,"metadata",(function(){return i})),a.d(t,"toc",(function(){return o})),a.d(t,"default",(function(){return s}));var n=a(3),r=a(7),b=(a(0),a(209)),l={title:"Development Guide"},i={unversionedId:"devDocs/Development",id:"version-0.6.0/devDocs/Development",isDocsHomePage:!1,title:"Development Guide",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/devDocs/Development.md",slug:"/devDocs/Development",permalink:"/docs/devDocs/Development",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/devDocs/Development.md",version:"0.6.0",sidebar:"docs",previous:{title:"How to Build Submarine",permalink:"/docs/devDocs/BuildFromCode"},next:{title:"How to Run Integration K8s Test",permalink:"/docs/devDocs/IntegrationTestK8s"}},o=[{value:"Video",id:"video",children:[]},{value:"Develop server",id:"develop-server",children:[{value:"Prerequisites",id:"prerequisites",children:[]},{value:"Setting up checkstyle in IDE",id:"setting-up-checkstyle-in-ide",children:[]},{value:"Testing",id:"testing",children:[]},{value:"Build from source",id:"build-from-source",children:[]}]},{value:"Develop workbench",id:"develop-workbench",children:[]},{value:"Develop database",id:"develop-database",children:[]},{value:"Develop Submarine Website",id:"develop-submarine-website",children:[{value:"Add a new page",id:"add-a-new-page",children:[]},{value:"Installation",id:"installation",children:[]},{value:"Build",id:"build",children:[]},{value:"Local Development",id:"local-development",children:[]}]}],c={toc:o};function s(e){var t=e.components,a=Object(r.a)(e,["components"]);return Object(b.b)("wrapper",Object(n.a)({},c,a,{components:t,mdxType:"MDXLayout"}),Object(b.b)("h1",{id:"project-overview"},"Project Overview"),Object(b.b)("p",null,"The document ",Object(b.b)("a",{parentName:"p",href:"/docs/gettingStarted/quickstart"},"Getting Started/Quickstart")," shows how to deploy the Submarine service to your Kubernetes cluster. The Submarine service consists mainly of nine components, and you can check them with the following command:"),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre"},"kubectl get pods -n ${your_namespace}\n")),Object(b.b)("p",null,"A brief introduction about these components: "),Object(b.b)("ol",null,Object(b.b)("li",{parentName:"ol"},Object(b.b)("strong",{parentName:"li"},"tf-operator"),": Enable users to run TensorFlow jobs distributedly"),Object(b.b)("li",{parentName:"ol"},Object(b.b)("strong",{parentName:"li"},"pytorch-operator"),": Enable users to run PyTorch jobs distributedly"),Object(b.b)("li",{parentName:"ol"},Object(b.b)("strong",{parentName:"li"},"notebook-controller"),": Jupyter Notebook controller"),Object(b.b)("li",{parentName:"ol"},Object(b.b)("strong",{parentName:"li"},"submarine-traefik"),": Kubernetes Ingress controller"),Object(b.b)("li",{parentName:"ol"},Object(b.b)("strong",{parentName:"li"},"submarine-database"),": A MySQL database to store metadata"),Object(b.b)("li",{parentName:"ol"},Object(b.b)("strong",{parentName:"li"},"submarine-minio"),": An object store for machine learning artifacts"),Object(b.b)("li",{parentName:"ol"},Object(b.b)("strong",{parentName:"li"},"submarine-mlflow"),": A platform for model management"),Object(b.b)("li",{parentName:"ol"},Object(b.b)("strong",{parentName:"li"},"submarine-tensorboard"),": A visualization tool for distributed training experiments"),Object(b.b)("li",{parentName:"ol"},Object(b.b)("strong",{parentName:"li"},"submarine-server"),": Handle API requests, and submit distributed training experiments to Kubernetes.")),Object(b.b)("h1",{id:"submarine-development"},"Submarine Development"),Object(b.b)("h2",{id:"video"},"Video"),Object(b.b)("ul",null,Object(b.b)("li",{parentName:"ul"},"From this ",Object(b.b)("a",{parentName:"li",href:"https://youtu.be/32Na2k6Alv4"},"Video"),", you will know how to deal with the configuration of Submarine and be able to contribute to it via Github.")),Object(b.b)("h2",{id:"develop-server"},"Develop server"),Object(b.b)("h3",{id:"prerequisites"},"Prerequisites"),Object(b.b)("ul",null,Object(b.b)("li",{parentName:"ul"},"JDK 1.8"),Object(b.b)("li",{parentName:"ul"},"Maven 3.3 or later ( < 3.8.1 )"),Object(b.b)("li",{parentName:"ul"},"Docker")),Object(b.b)("h3",{id:"setting-up-checkstyle-in-ide"},"Setting up checkstyle in IDE"),Object(b.b)("p",null,"Checkstyle plugin may help to detect violations directly from the IDE."),Object(b.b)("ol",null,Object(b.b)("li",{parentName:"ol"},"Install Checkstyle+IDEA plugin from Preference -> Plugins"),Object(b.b)("li",{parentName:"ol"},"Open Preference -> Tools -> Checkstyle ->",Object(b.b)("ol",{parentName:"li"},Object(b.b)("li",{parentName:"ol"},"Set Checkstyle version:",Object(b.b)("ul",{parentName:"li"},Object(b.b)("li",{parentName:"ul"},"Checkstyle version: 8.0"))),Object(b.b)("li",{parentName:"ol"},"Add (+) a new Configuration File",Object(b.b)("ul",{parentName:"li"},Object(b.b)("li",{parentName:"ul"},"Description: Submarine"),Object(b.b)("li",{parentName:"ul"},"Use a local checkstyle ${SUBMARINE_HOME}/dev-support/maven-config/checkstyle.xml"))))),Object(b.b)("li",{parentName:"ol"},"Open the Checkstyle Tool Window, select the Submarine rule and execute the check")),Object(b.b)("h3",{id:"testing"},"Testing"),Object(b.b)("ul",null,Object(b.b)("li",{parentName:"ul"},Object(b.b)("p",{parentName:"li"},"Unit Test"),Object(b.b)("p",{parentName:"li"},"For each class, there is a corresponding testClass. For example, ",Object(b.b)("inlineCode",{parentName:"p"},"SubmarineServerTest")," is used for testing ",Object(b.b)("inlineCode",{parentName:"p"},"SubmarineServer"),". Whenever you add a funtion in classes, you must write a unit test to test it.")),Object(b.b)("li",{parentName:"ul"},Object(b.b)("p",{parentName:"li"},"Integration Test: ",Object(b.b)("a",{parentName:"p",href:"/docs/devDocs/IntegrationTestK8s"},"IntegrationTestK8s.md")))),Object(b.b)("h3",{id:"build-from-source"},"Build from source"),Object(b.b)("ul",null,Object(b.b)("li",{parentName:"ul"},Object(b.b)("p",{parentName:"li"},"Before building"),Object(b.b)("ol",{parentName:"li"},Object(b.b)("li",{parentName:"ol"},"We assume the developer use ",Object(b.b)("strong",{parentName:"li"},"minikube")," as a local kubernetes cluster."),Object(b.b)("li",{parentName:"ol"},"Make sure you have ",Object(b.b)("strong",{parentName:"li"},"installed the submarine helm-chart")," in the cluster.")))),Object(b.b)("ol",null,Object(b.b)("li",{parentName:"ol"},Object(b.b)("p",{parentName:"li"},"Package the Submarine server into a new jar file"),Object(b.b)("pre",{parentName:"li"},Object(b.b)("code",{parentName:"pre",className:"language-bash"},"mvn package -DskipTests\n"))),Object(b.b)("li",{parentName:"ol"},Object(b.b)("p",{parentName:"li"},"Build the new server docker image in minikube"),Object(b.b)("pre",{parentName:"li"},Object(b.b)("code",{parentName:"pre",className:"language-bash"},"# switch to minikube docker daemon to build image directly in minikube\neval $(minikube docker-env)\n\n# run docker build\n./dev-support/docker-images/submarine/build.sh\n\n# exit minikube docker daemon\neval $(minikube docker-env -u)\n"))),Object(b.b)("li",{parentName:"ol"},Object(b.b)("p",{parentName:"li"},"Update server pod"),Object(b.b)("pre",{parentName:"li"},Object(b.b)("code",{parentName:"pre",className:"language-bash"},"helm upgrade --set submarine.server.dev=true submarine ./helm-charts/submarine\n")),Object(b.b)("p",{parentName:"li"},"Set ",Object(b.b)("inlineCode",{parentName:"p"},"submarine.server.dev")," to ",Object(b.b)("inlineCode",{parentName:"p"},"true"),", enabling the server pod to be launched with the new docker image."))),Object(b.b)("h2",{id:"develop-workbench"},"Develop workbench"),Object(b.b)("ol",null,Object(b.b)("li",{parentName:"ol"},Object(b.b)("p",{parentName:"li"},"Deploy the Submarine"),Object(b.b)("p",{parentName:"li"},"Follow ",Object(b.b)("a",{parentName:"p",href:"/docs/gettingStarted/quickstart"},"Getting Started/Quickstart"),", and make sure you can connect to ",Object(b.b)("inlineCode",{parentName:"p"},"http://localhost:32080")," in the browser.")),Object(b.b)("li",{parentName:"ol"},Object(b.b)("p",{parentName:"li"},"Install the dependencies"),Object(b.b)("pre",{parentName:"li"},Object(b.b)("code",{parentName:"pre",className:"language-bash"},"cd submarine-workbench/workbench-web\nnpm install\n"))),Object(b.b)("li",{parentName:"ol"},Object(b.b)("p",{parentName:"li"},"Run the workbench based on proxy server"),Object(b.b)("pre",{parentName:"li"},Object(b.b)("code",{parentName:"pre",className:"language-bash"},"npm run start\n")),Object(b.b)("ol",{parentName:"li"},Object(b.b)("li",{parentName:"ol"},"The request sent to ",Object(b.b)("inlineCode",{parentName:"li"},"http://localhost:4200")," will be redirected to ",Object(b.b)("inlineCode",{parentName:"li"},"http://localhost:32080"),"."),Object(b.b)("li",{parentName:"ol"},"Open ",Object(b.b)("inlineCode",{parentName:"li"},"http://localhost:4200")," in browser to see the real-time change of workbench."))),Object(b.b)("li",{parentName:"ol"},Object(b.b)("p",{parentName:"li"},"Frontend E2E test: ",Object(b.b)("a",{parentName:"p",href:"/docs/devDocs/IntegrationTestE2E"},"IntegrationTestE2E.md")," "))),Object(b.b)("h2",{id:"develop-database"},"Develop database"),Object(b.b)("ol",null,Object(b.b)("li",{parentName:"ol"},Object(b.b)("p",{parentName:"li"},"Build the docker image"),Object(b.b)("pre",{parentName:"li"},Object(b.b)("code",{parentName:"pre",className:"language-bash"},"# switch to minikube docker daemon to build image directly in minikube\neval $(minikube docker-env)\n\n# run docker build\n./dev-support/docker-images/database/build.sh\n\n# exit minikube docker daemon\neval $(minikube docker-env -u)\n"))),Object(b.b)("li",{parentName:"ol"},Object(b.b)("p",{parentName:"li"},"Deploy new pods in the cluster"),Object(b.b)("pre",{parentName:"li"},Object(b.b)("code",{parentName:"pre",className:"language-bash"},"helm upgrade --set submarine.database.dev=true submarine ./helm-charts/submarine\n")),Object(b.b)("h2",{parentName:"li",id:"develop-operator"},"Develop operator"))),Object(b.b)("ul",null,Object(b.b)("li",{parentName:"ul"},Object(b.b)("p",{parentName:"li"},"Before building"),Object(b.b)("ol",{parentName:"li"},Object(b.b)("li",{parentName:"ol"},"We assume the developer use ",Object(b.b)("strong",{parentName:"li"},"minikube")," as a local kubernetes cluster."),Object(b.b)("li",{parentName:"ol"},"Make sure you have ",Object(b.b)("strong",{parentName:"li"},"NOT")," installed the submarine helm-chart in the cluster.")))),Object(b.b)("ol",null,Object(b.b)("li",{parentName:"ol"},Object(b.b)("p",{parentName:"li"},"Start the minikube cluster"),Object(b.b)("pre",{parentName:"li"},Object(b.b)("code",{parentName:"pre",className:"language-bash"},"minikube start --vm-driver=docker --kubernetes-version v1.15.11\n"))),Object(b.b)("li",{parentName:"ol"},Object(b.b)("p",{parentName:"li"},"Install the dependencies"),Object(b.b)("pre",{parentName:"li"},Object(b.b)("code",{parentName:"pre",className:"language-bash"},"cd submarine-cloud-v2/\ncp -r ../helm-charts/submarine/charts ./helm-charts/submarine-operator/\ngo mod vendor\nhelm install --set dev=true submarine-operator ./helm-charts/submarine-operator/\n"))),Object(b.b)("li",{parentName:"ol"},Object(b.b)("p",{parentName:"li"},"Run the operator out-of-cluster"),Object(b.b)("pre",{parentName:"li"},Object(b.b)("code",{parentName:"pre",className:"language-bash"},"make\n./submarine-operator\n"))),Object(b.b)("li",{parentName:"ol"},Object(b.b)("p",{parentName:"li"},"Deploy a Submarine"),Object(b.b)("pre",{parentName:"li"},Object(b.b)("code",{parentName:"pre",className:"language-bash"},"kubectl apply -f artifacts/examples/crd.yaml\nkubectl create ns submarine-user-test\nkubectl apply -n submarine-user-test -f artifacts/examples/example-submarine.yaml\n"))),Object(b.b)("li",{parentName:"ol"},Object(b.b)("p",{parentName:"li"},"Exposing service"),Object(b.b)("pre",{parentName:"li"},Object(b.b)("code",{parentName:"pre",className:"language-bash"},"# Method1 -- use minikube ip\nminikube ip  # you'll get the IP address of minikube, ex: 192.168.49.2\n\n# Method2 -- use port-forwarding\nkubectl port-forward --address 0.0.0.0 -n submarine-user-test service/traefik 32080:80\n"))),Object(b.b)("li",{parentName:"ol"},Object(b.b)("p",{parentName:"li"},"View workbench"),Object(b.b)("p",{parentName:"li"},"If you use method 1 in step 5, please go to ",Object(b.b)("inlineCode",{parentName:"p"},"http://{minikube ip}:32080"),", ex: ",Object(b.b)("a",{parentName:"p",href:"http://192.168.49.2:32080"},"http://192.168.49.2:32080")),Object(b.b)("p",{parentName:"li"},"If you use method 2 in step 5, please go to ",Object(b.b)("a",{parentName:"p",href:"http://127.0.0.1:32080"},"http://127.0.0.1:32080"))),Object(b.b)("li",{parentName:"ol"},Object(b.b)("p",{parentName:"li"},"Delete submarine"),Object(b.b)("pre",{parentName:"li"},Object(b.b)("code",{parentName:"pre",className:"language-bash"},"kubectl delete submarine example-submarine -n submarine-user-test\n"))),Object(b.b)("li",{parentName:"ol"},Object(b.b)("p",{parentName:"li"},"Stop the operator"),Object(b.b)("p",{parentName:"li"},"Press ctrl+c to stop the operator.")),Object(b.b)("li",{parentName:"ol"},Object(b.b)("p",{parentName:"li"},"Uninstall helm chart dependencies"),Object(b.b)("pre",{parentName:"li"},Object(b.b)("code",{parentName:"pre",className:"language-bash"},"helm delete submarine-operator\n")))),Object(b.b)("p",null,"For other details, please check out the ",Object(b.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/blob/master/submarine-cloud-v2/README.md"},"README")," and ",Object(b.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/blob/master/submarine-cloud-v2/docs/developer-guide.md"},"Developer Guide")," on GitHub."),Object(b.b)("h2",{id:"develop-submarine-website"},"Develop Submarine Website"),Object(b.b)("p",null,"Submarine website is built using ",Object(b.b)("a",{parentName:"p",href:"https://v2.docusaurus.io/"},"Docusaurus 2"),", a modern static website generator."),Object(b.b)("p",null,"We store all the website content in markdown format in the ",Object(b.b)("inlineCode",{parentName:"p"},"submarine/website/docs"),". When committing a new patch to the ",Object(b.b)("inlineCode",{parentName:"p"},"submarine")," repo, Docusaurus will help us generate the ",Object(b.b)("inlineCode",{parentName:"p"},"html")," and ",Object(b.b)("inlineCode",{parentName:"p"},"javascript")," files and push them to  ",Object(b.b)("a",{parentName:"p",href:"https://github.com/apache/submarine-site/tree/asf-site"},"https://github.com/apache/submarine-site/tree/asf-site"),"."),Object(b.b)("p",null,"To update the website, click \u201cEdit this page\u201d on the website."),Object(b.b)("p",null,Object(b.b)("img",{parentName:"p",src:"https://lh4.googleusercontent.com/gYcKpxbsGAKv2giTRqkxOehPGnuvnhE31WjsAsYhFmACIZF3Wh2ipar7mZ7F_KRwecM-L1J8YJAgNigJsJUjqc-5IXeO2XGxCIcYpP9CdSc3YByuUkjT_Bezby2HHtkBLyE1ZY_F",alt:null})),Object(b.b)("h3",{id:"add-a-new-page"},"Add a new page"),Object(b.b)("p",null,"If you want to add a new page to the website, make sure to add the file path to ",Object(b.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/blob/master/website/sidebars.js"},"sidebars.js"),". "),Object(b.b)("h3",{id:"installation"},"Installation"),Object(b.b)("p",null,"We use the yarn package manager to install all dependencies for the website"),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre",className:"language-console"},"yarn install\n")),Object(b.b)("h3",{id:"build"},"Build"),Object(b.b)("p",null,"Make sure you can successfully build the website before creating a pull request."),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre",className:"language-console"},"yarn build\n")),Object(b.b)("h3",{id:"local-development"},"Local Development"),Object(b.b)("p",null,"This command starts a local development server and open up a browser window. Most changes are reflected live without having to restart the server."),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre",className:"language-console"},"yarn start\n")))}s.isMDXComponent=!0},209:function(e,t,a){"use strict";a.d(t,"a",(function(){return p})),a.d(t,"b",(function(){return d}));var n=a(0),r=a.n(n);function b(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?l(Object(a),!0).forEach((function(t){b(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):l(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function o(e,t){if(null==e)return{};var a,n,r=function(e,t){if(null==e)return{};var a,n,r={},b=Object.keys(e);for(n=0;n<b.length;n++)a=b[n],t.indexOf(a)>=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var b=Object.getOwnPropertySymbols(e);for(n=0;n<b.length;n++)a=b[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var c=r.a.createContext({}),s=function(e){var t=r.a.useContext(c),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},p=function(e){var t=s(e.components);return r.a.createElement(c.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},u=r.a.forwardRef((function(e,t){var a=e.components,n=e.mdxType,b=e.originalType,l=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),p=s(a),u=n,d=p["".concat(l,".").concat(u)]||p[u]||m[u]||b;return a?r.a.createElement(d,i(i({ref:t},c),{},{components:a})):r.a.createElement(d,i({ref:t},c))}));function d(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var b=a.length,l=new Array(b);l[0]=u;var i={};for(var o in t)hasOwnProperty.call(t,o)&&(i[o]=t[o]);i.originalType=e,i.mdxType="string"==typeof e?e:n,l[1]=i;for(var c=2;c<b;c++)l[c]=a[c];return r.a.createElement.apply(null,l)}return r.a.createElement.apply(null,a)}u.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[100],{167:function(e,t,a){"use strict";a.r(t),a.d(t,"frontMatter",(function(){return l})),a.d(t,"metadata",(function(){return i})),a.d(t,"toc",(function(){return o})),a.d(t,"default",(function(){return s}));var n=a(3),r=a(7),b=(a(0),a(194)),l={title:"Development Guide"},i={unversionedId:"devDocs/Development",id:"version-0.6.0/devDocs/Development",isDocsHomePage:!1,title:"Development Guide",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/devDocs/Development.md",slug:"/devDocs/Development",permalink:"/docs/devDocs/Development",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/devDocs/Development.md",version:"0.6.0",sidebar:"docs",previous:{title:"How to Build Submarine",permalink:"/docs/devDocs/BuildFromCode"},next:{title:"How to Run Integration K8s Test",permalink:"/docs/devDocs/IntegrationTestK8s"}},o=[{value:"Video",id:"video",children:[]},{value:"Develop server",id:"develop-server",children:[{value:"Prerequisites",id:"prerequisites",children:[]},{value:"Setting up checkstyle in IDE",id:"setting-up-checkstyle-in-ide",children:[]},{value:"Testing",id:"testing",children:[]},{value:"Build from source",id:"build-from-source",children:[]}]},{value:"Develop workbench",id:"develop-workbench",children:[]},{value:"Develop database",id:"develop-database",children:[]},{value:"Develop Submarine Website",id:"develop-submarine-website",children:[{value:"Add a new page",id:"add-a-new-page",children:[]},{value:"Installation",id:"installation",children:[]},{value:"Build",id:"build",children:[]},{value:"Local Development",id:"local-development",children:[]}]}],c={toc:o};function s(e){var t=e.components,a=Object(r.a)(e,["components"]);return Object(b.b)("wrapper",Object(n.a)({},c,a,{components:t,mdxType:"MDXLayout"}),Object(b.b)("h1",{id:"project-overview"},"Project Overview"),Object(b.b)("p",null,"The document ",Object(b.b)("a",{parentName:"p",href:"/docs/gettingStarted/quickstart"},"Getting Started/Quickstart")," shows how to deploy the Submarine service to your Kubernetes cluster. The Submarine service consists mainly of nine components, and you can check them with the following command:"),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre"},"kubectl get pods -n ${your_namespace}\n")),Object(b.b)("p",null,"A brief introduction about these components: "),Object(b.b)("ol",null,Object(b.b)("li",{parentName:"ol"},Object(b.b)("strong",{parentName:"li"},"tf-operator"),": Enable users to run TensorFlow jobs distributedly"),Object(b.b)("li",{parentName:"ol"},Object(b.b)("strong",{parentName:"li"},"pytorch-operator"),": Enable users to run PyTorch jobs distributedly"),Object(b.b)("li",{parentName:"ol"},Object(b.b)("strong",{parentName:"li"},"notebook-controller"),": Jupyter Notebook controller"),Object(b.b)("li",{parentName:"ol"},Object(b.b)("strong",{parentName:"li"},"submarine-traefik"),": Kubernetes Ingress controller"),Object(b.b)("li",{parentName:"ol"},Object(b.b)("strong",{parentName:"li"},"submarine-database"),": A MySQL database to store metadata"),Object(b.b)("li",{parentName:"ol"},Object(b.b)("strong",{parentName:"li"},"submarine-minio"),": An object store for machine learning artifacts"),Object(b.b)("li",{parentName:"ol"},Object(b.b)("strong",{parentName:"li"},"submarine-mlflow"),": A platform for model management"),Object(b.b)("li",{parentName:"ol"},Object(b.b)("strong",{parentName:"li"},"submarine-tensorboard"),": A visualization tool for distributed training experiments"),Object(b.b)("li",{parentName:"ol"},Object(b.b)("strong",{parentName:"li"},"submarine-server"),": Handle API requests, and submit distributed training experiments to Kubernetes.")),Object(b.b)("h1",{id:"submarine-development"},"Submarine Development"),Object(b.b)("h2",{id:"video"},"Video"),Object(b.b)("ul",null,Object(b.b)("li",{parentName:"ul"},"From this ",Object(b.b)("a",{parentName:"li",href:"https://youtu.be/32Na2k6Alv4"},"Video"),", you will know how to deal with the configuration of Submarine and be able to contribute to it via Github.")),Object(b.b)("h2",{id:"develop-server"},"Develop server"),Object(b.b)("h3",{id:"prerequisites"},"Prerequisites"),Object(b.b)("ul",null,Object(b.b)("li",{parentName:"ul"},"JDK 1.8"),Object(b.b)("li",{parentName:"ul"},"Maven 3.3 or later ( < 3.8.1 )"),Object(b.b)("li",{parentName:"ul"},"Docker")),Object(b.b)("h3",{id:"setting-up-checkstyle-in-ide"},"Setting up checkstyle in IDE"),Object(b.b)("p",null,"Checkstyle plugin may help to detect violations directly from the IDE."),Object(b.b)("ol",null,Object(b.b)("li",{parentName:"ol"},"Install Checkstyle+IDEA plugin from Preference -> Plugins"),Object(b.b)("li",{parentName:"ol"},"Open Preference -> Tools -> Checkstyle ->",Object(b.b)("ol",{parentName:"li"},Object(b.b)("li",{parentName:"ol"},"Set Checkstyle version:",Object(b.b)("ul",{parentName:"li"},Object(b.b)("li",{parentName:"ul"},"Checkstyle version: 8.0"))),Object(b.b)("li",{parentName:"ol"},"Add (+) a new Configuration File",Object(b.b)("ul",{parentName:"li"},Object(b.b)("li",{parentName:"ul"},"Description: Submarine"),Object(b.b)("li",{parentName:"ul"},"Use a local checkstyle ${SUBMARINE_HOME}/dev-support/maven-config/checkstyle.xml"))))),Object(b.b)("li",{parentName:"ol"},"Open the Checkstyle Tool Window, select the Submarine rule and execute the check")),Object(b.b)("h3",{id:"testing"},"Testing"),Object(b.b)("ul",null,Object(b.b)("li",{parentName:"ul"},Object(b.b)("p",{parentName:"li"},"Unit Test"),Object(b.b)("p",{parentName:"li"},"For each class, there is a corresponding testClass. For example, ",Object(b.b)("inlineCode",{parentName:"p"},"SubmarineServerTest")," is used for testing ",Object(b.b)("inlineCode",{parentName:"p"},"SubmarineServer"),". Whenever you add a funtion in classes, you must write a unit test to test it.")),Object(b.b)("li",{parentName:"ul"},Object(b.b)("p",{parentName:"li"},"Integration Test: ",Object(b.b)("a",{parentName:"p",href:"/docs/devDocs/IntegrationTestK8s"},"IntegrationTestK8s.md")))),Object(b.b)("h3",{id:"build-from-source"},"Build from source"),Object(b.b)("ul",null,Object(b.b)("li",{parentName:"ul"},Object(b.b)("p",{parentName:"li"},"Before building"),Object(b.b)("ol",{parentName:"li"},Object(b.b)("li",{parentName:"ol"},"We assume the developer use ",Object(b.b)("strong",{parentName:"li"},"minikube")," as a local kubernetes cluster."),Object(b.b)("li",{parentName:"ol"},"Make sure you have ",Object(b.b)("strong",{parentName:"li"},"installed the submarine helm-chart")," in the cluster.")))),Object(b.b)("ol",null,Object(b.b)("li",{parentName:"ol"},Object(b.b)("p",{parentName:"li"},"Package the Submarine server into a new jar file"),Object(b.b)("pre",{parentName:"li"},Object(b.b)("code",{parentName:"pre",className:"language-bash"},"mvn package -DskipTests\n"))),Object(b.b)("li",{parentName:"ol"},Object(b.b)("p",{parentName:"li"},"Build the new server docker image in minikube"),Object(b.b)("pre",{parentName:"li"},Object(b.b)("code",{parentName:"pre",className:"language-bash"},"# switch to minikube docker daemon to build image directly in minikube\neval $(minikube docker-env)\n\n# run docker build\n./dev-support/docker-images/submarine/build.sh\n\n# exit minikube docker daemon\neval $(minikube docker-env -u)\n"))),Object(b.b)("li",{parentName:"ol"},Object(b.b)("p",{parentName:"li"},"Update server pod"),Object(b.b)("pre",{parentName:"li"},Object(b.b)("code",{parentName:"pre",className:"language-bash"},"helm upgrade --set submarine.server.dev=true submarine ./helm-charts/submarine\n")),Object(b.b)("p",{parentName:"li"},"Set ",Object(b.b)("inlineCode",{parentName:"p"},"submarine.server.dev")," to ",Object(b.b)("inlineCode",{parentName:"p"},"true"),", enabling the server pod to be launched with the new docker image."))),Object(b.b)("h2",{id:"develop-workbench"},"Develop workbench"),Object(b.b)("ol",null,Object(b.b)("li",{parentName:"ol"},Object(b.b)("p",{parentName:"li"},"Deploy the Submarine"),Object(b.b)("p",{parentName:"li"},"Follow ",Object(b.b)("a",{parentName:"p",href:"/docs/gettingStarted/quickstart"},"Getting Started/Quickstart"),", and make sure you can connect to ",Object(b.b)("inlineCode",{parentName:"p"},"http://localhost:32080")," in the browser.")),Object(b.b)("li",{parentName:"ol"},Object(b.b)("p",{parentName:"li"},"Install the dependencies"),Object(b.b)("pre",{parentName:"li"},Object(b.b)("code",{parentName:"pre",className:"language-bash"},"cd submarine-workbench/workbench-web\nnpm install\n"))),Object(b.b)("li",{parentName:"ol"},Object(b.b)("p",{parentName:"li"},"Run the workbench based on proxy server"),Object(b.b)("pre",{parentName:"li"},Object(b.b)("code",{parentName:"pre",className:"language-bash"},"npm run start\n")),Object(b.b)("ol",{parentName:"li"},Object(b.b)("li",{parentName:"ol"},"The request sent to ",Object(b.b)("inlineCode",{parentName:"li"},"http://localhost:4200")," will be redirected to ",Object(b.b)("inlineCode",{parentName:"li"},"http://localhost:32080"),"."),Object(b.b)("li",{parentName:"ol"},"Open ",Object(b.b)("inlineCode",{parentName:"li"},"http://localhost:4200")," in browser to see the real-time change of workbench."))),Object(b.b)("li",{parentName:"ol"},Object(b.b)("p",{parentName:"li"},"Frontend E2E test: ",Object(b.b)("a",{parentName:"p",href:"/docs/devDocs/IntegrationTestE2E"},"IntegrationTestE2E.md")," "))),Object(b.b)("h2",{id:"develop-database"},"Develop database"),Object(b.b)("ol",null,Object(b.b)("li",{parentName:"ol"},Object(b.b)("p",{parentName:"li"},"Build the docker image"),Object(b.b)("pre",{parentName:"li"},Object(b.b)("code",{parentName:"pre",className:"language-bash"},"# switch to minikube docker daemon to build image directly in minikube\neval $(minikube docker-env)\n\n# run docker build\n./dev-support/docker-images/database/build.sh\n\n# exit minikube docker daemon\neval $(minikube docker-env -u)\n"))),Object(b.b)("li",{parentName:"ol"},Object(b.b)("p",{parentName:"li"},"Deploy new pods in the cluster"),Object(b.b)("pre",{parentName:"li"},Object(b.b)("code",{parentName:"pre",className:"language-bash"},"helm upgrade --set submarine.database.dev=true submarine ./helm-charts/submarine\n")),Object(b.b)("h2",{parentName:"li",id:"develop-operator"},"Develop operator"))),Object(b.b)("ul",null,Object(b.b)("li",{parentName:"ul"},Object(b.b)("p",{parentName:"li"},"Before building"),Object(b.b)("ol",{parentName:"li"},Object(b.b)("li",{parentName:"ol"},"We assume the developer use ",Object(b.b)("strong",{parentName:"li"},"minikube")," as a local kubernetes cluster."),Object(b.b)("li",{parentName:"ol"},"Make sure you have ",Object(b.b)("strong",{parentName:"li"},"NOT")," installed the submarine helm-chart in the cluster.")))),Object(b.b)("ol",null,Object(b.b)("li",{parentName:"ol"},Object(b.b)("p",{parentName:"li"},"Start the minikube cluster"),Object(b.b)("pre",{parentName:"li"},Object(b.b)("code",{parentName:"pre",className:"language-bash"},"minikube start --vm-driver=docker --kubernetes-version v1.15.11\n"))),Object(b.b)("li",{parentName:"ol"},Object(b.b)("p",{parentName:"li"},"Install the dependencies"),Object(b.b)("pre",{parentName:"li"},Object(b.b)("code",{parentName:"pre",className:"language-bash"},"cd submarine-cloud-v2/\ncp -r ../helm-charts/submarine/charts ./helm-charts/submarine-operator/\ngo mod vendor\nhelm install --set dev=true submarine-operator ./helm-charts/submarine-operator/\n"))),Object(b.b)("li",{parentName:"ol"},Object(b.b)("p",{parentName:"li"},"Run the operator out-of-cluster"),Object(b.b)("pre",{parentName:"li"},Object(b.b)("code",{parentName:"pre",className:"language-bash"},"make\n./submarine-operator\n"))),Object(b.b)("li",{parentName:"ol"},Object(b.b)("p",{parentName:"li"},"Deploy a Submarine"),Object(b.b)("pre",{parentName:"li"},Object(b.b)("code",{parentName:"pre",className:"language-bash"},"kubectl apply -f artifacts/examples/crd.yaml\nkubectl create ns submarine-user-test\nkubectl apply -n submarine-user-test -f artifacts/examples/example-submarine.yaml\n"))),Object(b.b)("li",{parentName:"ol"},Object(b.b)("p",{parentName:"li"},"Exposing service"),Object(b.b)("pre",{parentName:"li"},Object(b.b)("code",{parentName:"pre",className:"language-bash"},"# Method1 -- use minikube ip\nminikube ip  # you'll get the IP address of minikube, ex: 192.168.49.2\n\n# Method2 -- use port-forwarding\nkubectl port-forward --address 0.0.0.0 -n submarine-user-test service/traefik 32080:80\n"))),Object(b.b)("li",{parentName:"ol"},Object(b.b)("p",{parentName:"li"},"View workbench"),Object(b.b)("p",{parentName:"li"},"If you use method 1 in step 5, please go to ",Object(b.b)("inlineCode",{parentName:"p"},"http://{minikube ip}:32080"),", ex: ",Object(b.b)("a",{parentName:"p",href:"http://192.168.49.2:32080"},"http://192.168.49.2:32080")),Object(b.b)("p",{parentName:"li"},"If you use method 2 in step 5, please go to ",Object(b.b)("a",{parentName:"p",href:"http://127.0.0.1:32080"},"http://127.0.0.1:32080"))),Object(b.b)("li",{parentName:"ol"},Object(b.b)("p",{parentName:"li"},"Delete submarine"),Object(b.b)("pre",{parentName:"li"},Object(b.b)("code",{parentName:"pre",className:"language-bash"},"kubectl delete submarine example-submarine -n submarine-user-test\n"))),Object(b.b)("li",{parentName:"ol"},Object(b.b)("p",{parentName:"li"},"Stop the operator"),Object(b.b)("p",{parentName:"li"},"Press ctrl+c to stop the operator.")),Object(b.b)("li",{parentName:"ol"},Object(b.b)("p",{parentName:"li"},"Uninstall helm chart dependencies"),Object(b.b)("pre",{parentName:"li"},Object(b.b)("code",{parentName:"pre",className:"language-bash"},"helm delete submarine-operator\n")))),Object(b.b)("p",null,"For other details, please check out the ",Object(b.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/blob/master/submarine-cloud-v2/README.md"},"README")," and ",Object(b.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/blob/master/submarine-cloud-v2/docs/developer-guide.md"},"Developer Guide")," on GitHub."),Object(b.b)("h2",{id:"develop-submarine-website"},"Develop Submarine Website"),Object(b.b)("p",null,"Submarine website is built using ",Object(b.b)("a",{parentName:"p",href:"https://v2.docusaurus.io/"},"Docusaurus 2"),", a modern static website generator."),Object(b.b)("p",null,"We store all the website content in markdown format in the ",Object(b.b)("inlineCode",{parentName:"p"},"submarine/website/docs"),". When committing a new patch to the ",Object(b.b)("inlineCode",{parentName:"p"},"submarine")," repo, Docusaurus will help us generate the ",Object(b.b)("inlineCode",{parentName:"p"},"html")," and ",Object(b.b)("inlineCode",{parentName:"p"},"javascript")," files and push them to  ",Object(b.b)("a",{parentName:"p",href:"https://github.com/apache/submarine-site/tree/asf-site"},"https://github.com/apache/submarine-site/tree/asf-site"),"."),Object(b.b)("p",null,"To update the website, click \u201cEdit this page\u201d on the website."),Object(b.b)("p",null,Object(b.b)("img",{parentName:"p",src:"https://lh4.googleusercontent.com/gYcKpxbsGAKv2giTRqkxOehPGnuvnhE31WjsAsYhFmACIZF3Wh2ipar7mZ7F_KRwecM-L1J8YJAgNigJsJUjqc-5IXeO2XGxCIcYpP9CdSc3YByuUkjT_Bezby2HHtkBLyE1ZY_F",alt:null})),Object(b.b)("h3",{id:"add-a-new-page"},"Add a new page"),Object(b.b)("p",null,"If you want to add a new page to the website, make sure to add the file path to ",Object(b.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/blob/master/website/sidebars.js"},"sidebars.js"),". "),Object(b.b)("h3",{id:"installation"},"Installation"),Object(b.b)("p",null,"We use the yarn package manager to install all dependencies for the website"),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre",className:"language-console"},"yarn install\n")),Object(b.b)("h3",{id:"build"},"Build"),Object(b.b)("p",null,"Make sure you can successfully build the website before creating a pull request."),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre",className:"language-console"},"yarn build\n")),Object(b.b)("h3",{id:"local-development"},"Local Development"),Object(b.b)("p",null,"This command starts a local development server and open up a browser window. Most changes are reflected live without having to restart the server."),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre",className:"language-console"},"yarn start\n")))}s.isMDXComponent=!0},194:function(e,t,a){"use strict";a.d(t,"a",(function(){return p})),a.d(t,"b",(function(){return d}));var n=a(0),r=a.n(n);function b(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?l(Object(a),!0).forEach((function(t){b(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):l(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function o(e,t){if(null==e)return{};var a,n,r=function(e,t){if(null==e)return{};var a,n,r={},b=Object.keys(e);for(n=0;n<b.length;n++)a=b[n],t.indexOf(a)>=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var b=Object.getOwnPropertySymbols(e);for(n=0;n<b.length;n++)a=b[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var c=r.a.createContext({}),s=function(e){var t=r.a.useContext(c),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},p=function(e){var t=s(e.components);return r.a.createElement(c.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},u=r.a.forwardRef((function(e,t){var a=e.components,n=e.mdxType,b=e.originalType,l=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),p=s(a),u=n,d=p["".concat(l,".").concat(u)]||p[u]||m[u]||b;return a?r.a.createElement(d,i(i({ref:t},c),{},{components:a})):r.a.createElement(d,i({ref:t},c))}));function d(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var b=a.length,l=new Array(b);l[0]=u;var i={};for(var o in t)hasOwnProperty.call(t,o)&&(i[o]=t[o]);i.originalType=e,i.mdxType="string"==typeof e?e:n,l[1]=i;for(var c=2;c<b;c++)l[c]=a[c];return r.a.createElement.apply(null,l)}return r.a.createElement.apply(null,a)}u.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/cd51f9ed.31f260ae.js b/cd51f9ed.6eac8c3d.js
similarity index 98%
rename from cd51f9ed.31f260ae.js
rename to cd51f9ed.6eac8c3d.js
index 16fea66..61e40bf 100644
--- a/cd51f9ed.31f260ae.js
+++ b/cd51f9ed.6eac8c3d.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[113],{180:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return o})),n.d(t,"metadata",(function(){return l})),n.d(t,"toc",(function(){return c})),n.d(t,"default",(function(){return i}));var a=n(3),r=n(7),b=(n(0),n(209)),o={title:"Notebook REST API"},l={unversionedId:"userDocs/api/notebook",id:"version-0.6.0/userDocs/api/notebook",isDocsHomePage:!1,title:"Notebook REST API",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/userDocs/api/notebook.md",slug:"/userDocs/api/notebook",permalink:"/docs/userDocs/api/notebook",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/api/notebook.md",version:"0.6.0",sidebar:"docs",previous:{title:"Experiment Template REST API",permalink:"/docs/userDocs/api/experiment-template"},next:{title:"Experiment Client",permalink:"/docs/userDocs/submarine-sdk/experiment-client"}},c=[{value:"Create a Notebook Instance",id:"create-a-notebook-instance",children:[{value:"Parameters",id:"parameters",children:[]},{value:"Code Example",id:"code-example",children:[]}]},{value:"List notebook instances which belong to user",id:"list-notebook-instances-which-belong-to-user",children:[{value:"Parameters",id:"parameters-1",children:[]},{value:"Code Example",id:"code-example-1",children:[]}]},{value:"Get the notebook instance",id:"get-the-notebook-instance",children:[{value:"Parameters",id:"parameters-2",children:[]},{value:"Code Example",id:"code-example-2",children:[]}]},{value:"Delete the notebook instance",id:"delete-the-notebook-instance",children:[{value:"Parameters",id:"parameters-3",children:[]},{value:"Code Example",id:"code-example-3",children:[]}]}],p={toc:c};function i(e){var t=e.components,n=Object(r.a)(e,["components"]);return Object(b.b)("wrapper",Object(a.a)({},p,n,{components:t,mdxType:"MDXLayout"}),Object(b.b)("h2",{id:"create-a-notebook-instance"},"Create a Notebook Instance"),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre"},"POST /api/v1/notebook\n")),Object(b.b)("h3",{id:"parameters"},"Parameters"),Object(b.b)("p",null,"NotebookSpec in request body."),Object(b.b)("h4",{id:"notebookspec"},Object(b.b)("strong",{parentName:"h4"},"NotebookSpec")),Object(b.b)("table",null,Object(b.b)("thead",{parentName:"table"},Object(b.b)("tr",{parentName:"thead"},Object(b.b)("th",{parentName:"tr",align:null},"Field Name"),Object(b.b)("th",{parentName:"tr",align:null},"Type"),Object(b.b)("th",{parentName:"tr",align:null},"Description"))),Object(b.b)("tbody",{parentName:"table"},Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"meta"),Object(b.b)("td",{parentName:"tr",align:null},"NotebookMeta"),Object(b.b)("td",{parentName:"tr",align:null},"Meta data of the notebook.")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"environment"),Object(b.b)("td",{parentName:"tr",align:null},"EnvironmentSpec"),Object(b.b)("td",{parentName:"tr",align:null},"Environment of the experiment template.")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"spec"),Object(b.b)("td",{parentName:"tr",align:null},"NotebookPodSpec"),Object(b.b)("td",{parentName:"tr",align:null},"Spec of the notebook pods.")))),Object(b.b)("h4",{id:"notebookmeta"},Object(b.b)("strong",{parentName:"h4"},"NotebookMeta")),Object(b.b)("table",null,Object(b.b)("thead",{parentName:"table"},Object(b.b)("tr",{parentName:"thead"},Object(b.b)("th",{parentName:"tr",align:null},"Field Name"),Object(b.b)("th",{parentName:"tr",align:null},"Type"),Object(b.b)("th",{parentName:"tr",align:null},"Description"))),Object(b.b)("tbody",{parentName:"table"},Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"name"),Object(b.b)("td",{parentName:"tr",align:null},"String"),Object(b.b)("td",{parentName:"tr",align:null},"Notebook name.")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"namespace"),Object(b.b)("td",{parentName:"tr",align:null},"String"),Object(b.b)("td",{parentName:"tr",align:null},"Notebook namespace.")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"ownerId"),Object(b.b)("td",{parentName:"tr",align:null},"String"),Object(b.b)("td",{parentName:"tr",align:null},"User id.")))),Object(b.b)("h4",{id:"environmentspec"},Object(b.b)("strong",{parentName:"h4"},"EnvironmentSpec")),Object(b.b)("p",null,"See more details in ",Object(b.b)("a",{parentName:"p",href:"https://submarine.apache.org/docs/userDocs/api/environment"},"environment api"),"."),Object(b.b)("h4",{id:"notebookpodspec"},Object(b.b)("strong",{parentName:"h4"},"NotebookPodSpec")),Object(b.b)("table",null,Object(b.b)("thead",{parentName:"table"},Object(b.b)("tr",{parentName:"thead"},Object(b.b)("th",{parentName:"tr",align:null},"Field Name"),Object(b.b)("th",{parentName:"tr",align:null},"Type"),Object(b.b)("th",{parentName:"tr",align:null},"Description"))),Object(b.b)("tbody",{parentName:"table"},Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"envVars"),Object(b.b)("td",{parentName:"tr",align:null},"Map<String, String",">"),Object(b.b)("td",{parentName:"tr",align:null},"Environmental variables.")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"resources"),Object(b.b)("td",{parentName:"tr",align:null},"String"),Object(b.b)("td",{parentName:"tr",align:null},"Resourecs of the pod.")))),Object(b.b)("h3",{id:"code-example"},"Code Example"),Object(b.b)("p",null,Object(b.b)("strong",{parentName:"p"},"shell")),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre",className:"language-sh"},'curl -X POST -H "Content-Type: application/json" -d \'\n{\n  "meta": {\n    "name": "test-nb",\n    "namespace": "default",\n    "ownerId": "e9ca23d68d884d4ebb19d07889727dae"\n  },\n  "environment": {\n    "name": "notebook-env"\n  },\n  "spec": {\n    "envVars": {\n      "TEST_ENV": "test"\n    },\n    "resources": "cpu=1,memory=1.0Gi"\n  }\n}\n\' http://127.0.0.1:32080/api/v1/notebook\n')),Object(b.b)("p",null,Object(b.b)("strong",{parentName:"p"},"response:")),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":"Create a notebook instance",\n  "result":{\n    "notebookId":"notebook_1626160071451_0001",\n    "name":"test-nb",\n    "uid":"a56713da-f2a3-40d0-ae2e-45fdc0bb15f5",\n    "url":"/notebook/default/test-nb/lab",\n    "status":"creating",\n    "reason":"The notebook instance is creating",\n    "createdTime":"2021-07-13T16:23:38.000+08:00",\n    "deletedTime":null,\n    "spec":{\n      "meta":{\n        "name":"test-nb",\n        "namespace":"default",\n        "ownerId":"e9ca23d68d884d4ebb19d07889727dae"\n      },\n      "environment":{\n        "name":"notebook-env",\n        "dockerImage":"apache/submarine:jupyter-notebook-0.7.0-SNAPSHOT",\n        "kernelSpec":{\n          "name":"submarine_jupyter_py3",\n          "channels":["defaults"],\n          "condaDependencies":[],\n          "pipDependencies":[]\n        },\n        "description":null,\n        "image":null\n      },\n      "spec":{\n        "envVars":{"TEST_ENV":"test"},\n        "resources":"cpu\\u003d1,memory\\u003d1.0Gi"\n      }\n    }\n  },\n  "attributes":{}\n}\n')),Object(b.b)("h2",{id:"list-notebook-instances-which-belong-to-user"},"List notebook instances which belong to user"),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre"},"GET /api/v1/notebook\n")),Object(b.b)("h3",{id:"parameters-1"},"Parameters"),Object(b.b)("table",null,Object(b.b)("thead",{parentName:"table"},Object(b.b)("tr",{parentName:"thead"},Object(b.b)("th",{parentName:"tr",align:null},"Field Name"),Object(b.b)("th",{parentName:"tr",align:null},"Type"),Object(b.b)("th",{parentName:"tr",align:null},"In"),Object(b.b)("th",{parentName:"tr",align:null},"Description"))),Object(b.b)("tbody",{parentName:"table"},Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"id"),Object(b.b)("td",{parentName:"tr",align:null},"String"),Object(b.b)("td",{parentName:"tr",align:null},"query"),Object(b.b)("td",{parentName:"tr",align:null},"User id.")))),Object(b.b)("h3",{id:"code-example-1"},"Code Example"),Object(b.b)("p",null,Object(b.b)("strong",{parentName:"p"},"shell")),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/notebook?id=e9ca23d68d884d4ebb19d07889727dae\n")),Object(b.b)("p",null,Object(b.b)("strong",{parentName:"p"},"response")),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":"List all notebook instances",\n  "result":\n  [{\n    "notebookId":"notebook_1626160071451_0001",\n    "name":"test-nb",\n    "uid":"a56713da-f2a3-40d0-ae2e-45fdc0bb15f5",\n    "url":"/notebook/default/test-nb/lab",\n    "status":"waiting",\n    "reason":"ContainerCreating",\n    "createdTime":"2021-07-13T16:23:38.000+08:00",\n    "deletedTime":null,\n    "spec":{\n      "meta":{\n        "name":"test-nb",\n        "namespace":"default",\n        "ownerId":"e9ca23d68d884d4ebb19d07889727dae"\n      },\n      "environment":{\n        "name":"notebook-env",\n        "dockerImage":"apache/submarine:jupyter-notebook-0.7.0-SNAPSHOT",\n        "kernelSpec":{\n          "name":"submarine_jupyter_py3",\n          "channels":["defaults"],\n          "condaDependencies":[],\n          "pipDependencies":[]\n        },\n        "description":null,\n        "image":null\n      },\n      "spec":{\n        "envVars":{"TEST_ENV":"test"},\n        "resources":"cpu\\u003d1,memory\\u003d1.0Gi"\n      }\n    }\n  }],\n  "attributes":{}\n}\n')),Object(b.b)("h2",{id:"get-the-notebook-instance"},"Get the notebook instance"),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre"},"GET /api/v1/notebook/{id}\n")),Object(b.b)("h3",{id:"parameters-2"},"Parameters"),Object(b.b)("table",null,Object(b.b)("thead",{parentName:"table"},Object(b.b)("tr",{parentName:"thead"},Object(b.b)("th",{parentName:"tr",align:null},"Field Name"),Object(b.b)("th",{parentName:"tr",align:null},"Type"),Object(b.b)("th",{parentName:"tr",align:null},"In"),Object(b.b)("th",{parentName:"tr",align:null},"Description"))),Object(b.b)("tbody",{parentName:"table"},Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"id"),Object(b.b)("td",{parentName:"tr",align:null},"String"),Object(b.b)("td",{parentName:"tr",align:null},"path"),Object(b.b)("td",{parentName:"tr",align:null},"Notebook id.")))),Object(b.b)("h3",{id:"code-example-2"},"Code Example"),Object(b.b)("p",null,Object(b.b)("strong",{parentName:"p"},"shell")),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/notebook/notebook_1626160071451_0001\n")),Object(b.b)("p",null,Object(b.b)("strong",{parentName:"p"},"response")),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":"Get the notebook instance",\n  "result":{\n    "notebookId":"notebook_1626160071451_0001",\n    "name":"test-nb",\n    "uid":"a56713da-f2a3-40d0-ae2e-45fdc0bb15f5",\n    "url":"/notebook/default/test-nb/lab",\n    "status":"waiting",\n    "reason":"ContainerCreating",\n    "createdTime":"2021-07-13T16:23:38.000+08:00",\n    "deletedTime":null,\n    "spec":{\n      "meta":{\n        "name":"test-nb",\n        "namespace":"default",\n        "ownerId":"e9ca23d68d884d4ebb19d07889727dae"\n      },\n      "environment":{\n        "name":"notebook-env",\n        "dockerImage":"apache/submarine:jupyter-notebook-0.7.0-SNAPSHOT",\n        "kernelSpec":{\n          "name":"submarine_jupyter_py3",\n          "channels":["defaults"],\n          "condaDependencies":[],\n          "pipDependencies":[]\n        },\n        "description":null,\n        "image":null\n      },\n      "spec":{\n        "envVars":{"TEST_ENV":"test"},\n        "resources":"cpu\\u003d1,memory\\u003d1.0Gi"\n      }\n    }\n  },\n  "attributes":{}\n}\n')),Object(b.b)("h2",{id:"delete-the-notebook-instance"},"Delete the notebook instance"),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre"},"DELETE /api/v1/notebook/{id}\n")),Object(b.b)("h3",{id:"parameters-3"},"Parameters"),Object(b.b)("table",null,Object(b.b)("thead",{parentName:"table"},Object(b.b)("tr",{parentName:"thead"},Object(b.b)("th",{parentName:"tr",align:null},"Field Name"),Object(b.b)("th",{parentName:"tr",align:null},"Type"),Object(b.b)("th",{parentName:"tr",align:null},"In"),Object(b.b)("th",{parentName:"tr",align:null},"Description"))),Object(b.b)("tbody",{parentName:"table"},Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"id"),Object(b.b)("td",{parentName:"tr",align:null},"String"),Object(b.b)("td",{parentName:"tr",align:null},"path"),Object(b.b)("td",{parentName:"tr",align:null},"Notebook id.")))),Object(b.b)("h3",{id:"code-example-3"},"Code Example"),Object(b.b)("p",null,Object(b.b)("strong",{parentName:"p"},"shell")),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre",className:"language-sh"},"curl -X DELETE http://127.0.0.1:32080/api/v1/notebook/notebook_1626160071451_0001\n")),Object(b.b)("p",null,Object(b.b)("strong",{parentName:"p"},"response:")),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":"Delete the notebook instance",\n  "result":{\n    "notebookId":"notebook_1626160071451_0001",\n    "name":"test-nb",\n    "uid":"a56713da-f2a3-40d0-ae2e-45fdc0bb15f5",\n    "url":"/notebook/default/test-nb/lab",\n    "status":"terminating",\n    "reason":"The notebook instance is terminating",\n    "createdTime":"2021-07-13T16:23:38.000+08:00",\n    "deletedTime":null,\n    "spec":{\n      "meta":{\n        "name":"test-nb",\n        "namespace":"default",\n        "ownerId":"e9ca23d68d884d4ebb19d07889727dae"\n      },\n      "environment":{\n        "name":"notebook-env",\n        "dockerImage":"apache/submarine:jupyter-notebook-0.7.0-SNAPSHOT",\n        "kernelSpec":{\n          "name":"submarine_jupyter_py3",\n          "channels":["defaults"],\n          "condaDependencies":[],\n          "pipDependencies":[]\n        },\n        "description":null,\n        "image":null\n      },\n      "spec":{\n        "envVars":{"TEST_ENV":"test"},\n        "resources":"cpu\\u003d1,memory\\u003d1.0Gi"\n      }\n    }\n  },\n  "attributes":{}\n}\n')))}i.isMDXComponent=!0},209:function(e,t,n){"use strict";n.d(t,"a",(function(){return s})),n.d(t,"b",(function(){return u}));var a=n(0),r=n.n(a);function b(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){b(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function c(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},b=Object.keys(e);for(a=0;a<b.length;a++)n=b[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var b=Object.getOwnPropertySymbols(e);for(a=0;a<b.length;a++)n=b[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var p=r.a.createContext({}),i=function(e){var t=r.a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},s=function(e){var t=i(e.components);return r.a.createElement(p.Provider,{value:t},e.children)},d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},m=r.a.forwardRef((function(e,t){var n=e.components,a=e.mdxType,b=e.originalType,o=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),s=i(n),m=a,u=s["".concat(o,".").concat(m)]||s[m]||d[m]||b;return n?r.a.createElement(u,l(l({ref:t},p),{},{components:n})):r.a.createElement(u,l({ref:t},p))}));function u(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var b=n.length,o=new Array(b);o[0]=m;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l.mdxType="string"==typeof e?e:a,o[1]=l;for(var p=2;p<b;p++)o[p]=n[p];return r.a.createElement.apply(null,o)}return r.a.createElement.apply(null,n)}m.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[101],{168:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return o})),n.d(t,"metadata",(function(){return l})),n.d(t,"toc",(function(){return c})),n.d(t,"default",(function(){return i}));var a=n(3),r=n(7),b=(n(0),n(194)),o={title:"Notebook REST API"},l={unversionedId:"userDocs/api/notebook",id:"version-0.6.0/userDocs/api/notebook",isDocsHomePage:!1,title:"Notebook REST API",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/userDocs/api/notebook.md",slug:"/userDocs/api/notebook",permalink:"/docs/userDocs/api/notebook",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/api/notebook.md",version:"0.6.0",sidebar:"docs",previous:{title:"Experiment Template REST API",permalink:"/docs/userDocs/api/experiment-template"},next:{title:"Experiment Client",permalink:"/docs/userDocs/submarine-sdk/experiment-client"}},c=[{value:"Create a Notebook Instance",id:"create-a-notebook-instance",children:[{value:"Parameters",id:"parameters",children:[]},{value:"Code Example",id:"code-example",children:[]}]},{value:"List notebook instances which belong to user",id:"list-notebook-instances-which-belong-to-user",children:[{value:"Parameters",id:"parameters-1",children:[]},{value:"Code Example",id:"code-example-1",children:[]}]},{value:"Get the notebook instance",id:"get-the-notebook-instance",children:[{value:"Parameters",id:"parameters-2",children:[]},{value:"Code Example",id:"code-example-2",children:[]}]},{value:"Delete the notebook instance",id:"delete-the-notebook-instance",children:[{value:"Parameters",id:"parameters-3",children:[]},{value:"Code Example",id:"code-example-3",children:[]}]}],p={toc:c};function i(e){var t=e.components,n=Object(r.a)(e,["components"]);return Object(b.b)("wrapper",Object(a.a)({},p,n,{components:t,mdxType:"MDXLayout"}),Object(b.b)("h2",{id:"create-a-notebook-instance"},"Create a Notebook Instance"),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre"},"POST /api/v1/notebook\n")),Object(b.b)("h3",{id:"parameters"},"Parameters"),Object(b.b)("p",null,"NotebookSpec in request body."),Object(b.b)("h4",{id:"notebookspec"},Object(b.b)("strong",{parentName:"h4"},"NotebookSpec")),Object(b.b)("table",null,Object(b.b)("thead",{parentName:"table"},Object(b.b)("tr",{parentName:"thead"},Object(b.b)("th",{parentName:"tr",align:null},"Field Name"),Object(b.b)("th",{parentName:"tr",align:null},"Type"),Object(b.b)("th",{parentName:"tr",align:null},"Description"))),Object(b.b)("tbody",{parentName:"table"},Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"meta"),Object(b.b)("td",{parentName:"tr",align:null},"NotebookMeta"),Object(b.b)("td",{parentName:"tr",align:null},"Meta data of the notebook.")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"environment"),Object(b.b)("td",{parentName:"tr",align:null},"EnvironmentSpec"),Object(b.b)("td",{parentName:"tr",align:null},"Environment of the experiment template.")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"spec"),Object(b.b)("td",{parentName:"tr",align:null},"NotebookPodSpec"),Object(b.b)("td",{parentName:"tr",align:null},"Spec of the notebook pods.")))),Object(b.b)("h4",{id:"notebookmeta"},Object(b.b)("strong",{parentName:"h4"},"NotebookMeta")),Object(b.b)("table",null,Object(b.b)("thead",{parentName:"table"},Object(b.b)("tr",{parentName:"thead"},Object(b.b)("th",{parentName:"tr",align:null},"Field Name"),Object(b.b)("th",{parentName:"tr",align:null},"Type"),Object(b.b)("th",{parentName:"tr",align:null},"Description"))),Object(b.b)("tbody",{parentName:"table"},Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"name"),Object(b.b)("td",{parentName:"tr",align:null},"String"),Object(b.b)("td",{parentName:"tr",align:null},"Notebook name.")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"namespace"),Object(b.b)("td",{parentName:"tr",align:null},"String"),Object(b.b)("td",{parentName:"tr",align:null},"Notebook namespace.")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"ownerId"),Object(b.b)("td",{parentName:"tr",align:null},"String"),Object(b.b)("td",{parentName:"tr",align:null},"User id.")))),Object(b.b)("h4",{id:"environmentspec"},Object(b.b)("strong",{parentName:"h4"},"EnvironmentSpec")),Object(b.b)("p",null,"See more details in ",Object(b.b)("a",{parentName:"p",href:"https://submarine.apache.org/docs/userDocs/api/environment"},"environment api"),"."),Object(b.b)("h4",{id:"notebookpodspec"},Object(b.b)("strong",{parentName:"h4"},"NotebookPodSpec")),Object(b.b)("table",null,Object(b.b)("thead",{parentName:"table"},Object(b.b)("tr",{parentName:"thead"},Object(b.b)("th",{parentName:"tr",align:null},"Field Name"),Object(b.b)("th",{parentName:"tr",align:null},"Type"),Object(b.b)("th",{parentName:"tr",align:null},"Description"))),Object(b.b)("tbody",{parentName:"table"},Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"envVars"),Object(b.b)("td",{parentName:"tr",align:null},"Map<String, String",">"),Object(b.b)("td",{parentName:"tr",align:null},"Environmental variables.")),Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"resources"),Object(b.b)("td",{parentName:"tr",align:null},"String"),Object(b.b)("td",{parentName:"tr",align:null},"Resourecs of the pod.")))),Object(b.b)("h3",{id:"code-example"},"Code Example"),Object(b.b)("p",null,Object(b.b)("strong",{parentName:"p"},"shell")),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre",className:"language-sh"},'curl -X POST -H "Content-Type: application/json" -d \'\n{\n  "meta": {\n    "name": "test-nb",\n    "namespace": "default",\n    "ownerId": "e9ca23d68d884d4ebb19d07889727dae"\n  },\n  "environment": {\n    "name": "notebook-env"\n  },\n  "spec": {\n    "envVars": {\n      "TEST_ENV": "test"\n    },\n    "resources": "cpu=1,memory=1.0Gi"\n  }\n}\n\' http://127.0.0.1:32080/api/v1/notebook\n')),Object(b.b)("p",null,Object(b.b)("strong",{parentName:"p"},"response:")),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":"Create a notebook instance",\n  "result":{\n    "notebookId":"notebook_1626160071451_0001",\n    "name":"test-nb",\n    "uid":"a56713da-f2a3-40d0-ae2e-45fdc0bb15f5",\n    "url":"/notebook/default/test-nb/lab",\n    "status":"creating",\n    "reason":"The notebook instance is creating",\n    "createdTime":"2021-07-13T16:23:38.000+08:00",\n    "deletedTime":null,\n    "spec":{\n      "meta":{\n        "name":"test-nb",\n        "namespace":"default",\n        "ownerId":"e9ca23d68d884d4ebb19d07889727dae"\n      },\n      "environment":{\n        "name":"notebook-env",\n        "dockerImage":"apache/submarine:jupyter-notebook-0.7.0-SNAPSHOT",\n        "kernelSpec":{\n          "name":"submarine_jupyter_py3",\n          "channels":["defaults"],\n          "condaDependencies":[],\n          "pipDependencies":[]\n        },\n        "description":null,\n        "image":null\n      },\n      "spec":{\n        "envVars":{"TEST_ENV":"test"},\n        "resources":"cpu\\u003d1,memory\\u003d1.0Gi"\n      }\n    }\n  },\n  "attributes":{}\n}\n')),Object(b.b)("h2",{id:"list-notebook-instances-which-belong-to-user"},"List notebook instances which belong to user"),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre"},"GET /api/v1/notebook\n")),Object(b.b)("h3",{id:"parameters-1"},"Parameters"),Object(b.b)("table",null,Object(b.b)("thead",{parentName:"table"},Object(b.b)("tr",{parentName:"thead"},Object(b.b)("th",{parentName:"tr",align:null},"Field Name"),Object(b.b)("th",{parentName:"tr",align:null},"Type"),Object(b.b)("th",{parentName:"tr",align:null},"In"),Object(b.b)("th",{parentName:"tr",align:null},"Description"))),Object(b.b)("tbody",{parentName:"table"},Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"id"),Object(b.b)("td",{parentName:"tr",align:null},"String"),Object(b.b)("td",{parentName:"tr",align:null},"query"),Object(b.b)("td",{parentName:"tr",align:null},"User id.")))),Object(b.b)("h3",{id:"code-example-1"},"Code Example"),Object(b.b)("p",null,Object(b.b)("strong",{parentName:"p"},"shell")),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/notebook?id=e9ca23d68d884d4ebb19d07889727dae\n")),Object(b.b)("p",null,Object(b.b)("strong",{parentName:"p"},"response")),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":"List all notebook instances",\n  "result":\n  [{\n    "notebookId":"notebook_1626160071451_0001",\n    "name":"test-nb",\n    "uid":"a56713da-f2a3-40d0-ae2e-45fdc0bb15f5",\n    "url":"/notebook/default/test-nb/lab",\n    "status":"waiting",\n    "reason":"ContainerCreating",\n    "createdTime":"2021-07-13T16:23:38.000+08:00",\n    "deletedTime":null,\n    "spec":{\n      "meta":{\n        "name":"test-nb",\n        "namespace":"default",\n        "ownerId":"e9ca23d68d884d4ebb19d07889727dae"\n      },\n      "environment":{\n        "name":"notebook-env",\n        "dockerImage":"apache/submarine:jupyter-notebook-0.7.0-SNAPSHOT",\n        "kernelSpec":{\n          "name":"submarine_jupyter_py3",\n          "channels":["defaults"],\n          "condaDependencies":[],\n          "pipDependencies":[]\n        },\n        "description":null,\n        "image":null\n      },\n      "spec":{\n        "envVars":{"TEST_ENV":"test"},\n        "resources":"cpu\\u003d1,memory\\u003d1.0Gi"\n      }\n    }\n  }],\n  "attributes":{}\n}\n')),Object(b.b)("h2",{id:"get-the-notebook-instance"},"Get the notebook instance"),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre"},"GET /api/v1/notebook/{id}\n")),Object(b.b)("h3",{id:"parameters-2"},"Parameters"),Object(b.b)("table",null,Object(b.b)("thead",{parentName:"table"},Object(b.b)("tr",{parentName:"thead"},Object(b.b)("th",{parentName:"tr",align:null},"Field Name"),Object(b.b)("th",{parentName:"tr",align:null},"Type"),Object(b.b)("th",{parentName:"tr",align:null},"In"),Object(b.b)("th",{parentName:"tr",align:null},"Description"))),Object(b.b)("tbody",{parentName:"table"},Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"id"),Object(b.b)("td",{parentName:"tr",align:null},"String"),Object(b.b)("td",{parentName:"tr",align:null},"path"),Object(b.b)("td",{parentName:"tr",align:null},"Notebook id.")))),Object(b.b)("h3",{id:"code-example-2"},"Code Example"),Object(b.b)("p",null,Object(b.b)("strong",{parentName:"p"},"shell")),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/notebook/notebook_1626160071451_0001\n")),Object(b.b)("p",null,Object(b.b)("strong",{parentName:"p"},"response")),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":"Get the notebook instance",\n  "result":{\n    "notebookId":"notebook_1626160071451_0001",\n    "name":"test-nb",\n    "uid":"a56713da-f2a3-40d0-ae2e-45fdc0bb15f5",\n    "url":"/notebook/default/test-nb/lab",\n    "status":"waiting",\n    "reason":"ContainerCreating",\n    "createdTime":"2021-07-13T16:23:38.000+08:00",\n    "deletedTime":null,\n    "spec":{\n      "meta":{\n        "name":"test-nb",\n        "namespace":"default",\n        "ownerId":"e9ca23d68d884d4ebb19d07889727dae"\n      },\n      "environment":{\n        "name":"notebook-env",\n        "dockerImage":"apache/submarine:jupyter-notebook-0.7.0-SNAPSHOT",\n        "kernelSpec":{\n          "name":"submarine_jupyter_py3",\n          "channels":["defaults"],\n          "condaDependencies":[],\n          "pipDependencies":[]\n        },\n        "description":null,\n        "image":null\n      },\n      "spec":{\n        "envVars":{"TEST_ENV":"test"},\n        "resources":"cpu\\u003d1,memory\\u003d1.0Gi"\n      }\n    }\n  },\n  "attributes":{}\n}\n')),Object(b.b)("h2",{id:"delete-the-notebook-instance"},"Delete the notebook instance"),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre"},"DELETE /api/v1/notebook/{id}\n")),Object(b.b)("h3",{id:"parameters-3"},"Parameters"),Object(b.b)("table",null,Object(b.b)("thead",{parentName:"table"},Object(b.b)("tr",{parentName:"thead"},Object(b.b)("th",{parentName:"tr",align:null},"Field Name"),Object(b.b)("th",{parentName:"tr",align:null},"Type"),Object(b.b)("th",{parentName:"tr",align:null},"In"),Object(b.b)("th",{parentName:"tr",align:null},"Description"))),Object(b.b)("tbody",{parentName:"table"},Object(b.b)("tr",{parentName:"tbody"},Object(b.b)("td",{parentName:"tr",align:null},"id"),Object(b.b)("td",{parentName:"tr",align:null},"String"),Object(b.b)("td",{parentName:"tr",align:null},"path"),Object(b.b)("td",{parentName:"tr",align:null},"Notebook id.")))),Object(b.b)("h3",{id:"code-example-3"},"Code Example"),Object(b.b)("p",null,Object(b.b)("strong",{parentName:"p"},"shell")),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre",className:"language-sh"},"curl -X DELETE http://127.0.0.1:32080/api/v1/notebook/notebook_1626160071451_0001\n")),Object(b.b)("p",null,Object(b.b)("strong",{parentName:"p"},"response:")),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre",className:"language-json"},'{\n  "status":"OK",\n  "code":200,\n  "success":true,\n  "message":"Delete the notebook instance",\n  "result":{\n    "notebookId":"notebook_1626160071451_0001",\n    "name":"test-nb",\n    "uid":"a56713da-f2a3-40d0-ae2e-45fdc0bb15f5",\n    "url":"/notebook/default/test-nb/lab",\n    "status":"terminating",\n    "reason":"The notebook instance is terminating",\n    "createdTime":"2021-07-13T16:23:38.000+08:00",\n    "deletedTime":null,\n    "spec":{\n      "meta":{\n        "name":"test-nb",\n        "namespace":"default",\n        "ownerId":"e9ca23d68d884d4ebb19d07889727dae"\n      },\n      "environment":{\n        "name":"notebook-env",\n        "dockerImage":"apache/submarine:jupyter-notebook-0.7.0-SNAPSHOT",\n        "kernelSpec":{\n          "name":"submarine_jupyter_py3",\n          "channels":["defaults"],\n          "condaDependencies":[],\n          "pipDependencies":[]\n        },\n        "description":null,\n        "image":null\n      },\n      "spec":{\n        "envVars":{"TEST_ENV":"test"},\n        "resources":"cpu\\u003d1,memory\\u003d1.0Gi"\n      }\n    }\n  },\n  "attributes":{}\n}\n')))}i.isMDXComponent=!0},194:function(e,t,n){"use strict";n.d(t,"a",(function(){return s})),n.d(t,"b",(function(){return u}));var a=n(0),r=n.n(a);function b(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){b(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function c(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},b=Object.keys(e);for(a=0;a<b.length;a++)n=b[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var b=Object.getOwnPropertySymbols(e);for(a=0;a<b.length;a++)n=b[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var p=r.a.createContext({}),i=function(e){var t=r.a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},s=function(e){var t=i(e.components);return r.a.createElement(p.Provider,{value:t},e.children)},d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},m=r.a.forwardRef((function(e,t){var n=e.components,a=e.mdxType,b=e.originalType,o=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),s=i(n),m=a,u=s["".concat(o,".").concat(m)]||s[m]||d[m]||b;return n?r.a.createElement(u,l(l({ref:t},p),{},{components:n})):r.a.createElement(u,l({ref:t},p))}));function u(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var b=n.length,o=new Array(b);o[0]=m;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l.mdxType="string"==typeof e?e:a,o[1]=l;for(var p=2;p<b;p++)o[p]=n[p];return r.a.createElement.apply(null,o)}return r.a.createElement.apply(null,n)}m.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/cdfb3821.c11034ce.js b/cdfb3821.6a5a5307.js
similarity index 94%
rename from cdfb3821.c11034ce.js
rename to cdfb3821.6a5a5307.js
index 98cc547..545e2e3 100644
--- a/cdfb3821.c11034ce.js
+++ b/cdfb3821.6a5a5307.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[114],{181:function(e,t,r){"use strict";r.r(t),r.d(t,"frontMatter",(function(){return c})),r.d(t,"metadata",(function(){return i})),r.d(t,"toc",(function(){return u})),r.d(t,"default",(function(){return s}));var n=r(3),a=r(7),o=(r(0),r(209)),c={},i={type:"mdx",permalink:"/releases/submarine-release-0.2.0",source:"@site/src/pages/releases/submarine-release-0.2.0.md"},u=[],p={toc:u};function s(e){var t=e.components,r=Object(a.a)(e,["components"]);return Object(o.b)("wrapper",Object(n.a)({},p,r,{components:t,mdxType:"MDXLayout"}),Object(o.b)("h1",{id:"apache-submarine-release-020"},"Apache Submarine Release 0.2.0"),Object(o.b)("p",null,"The Apache Submarine community is pleased to announce the availability of the ",Object(o.b)("inlineCode",{parentName:"p"},"0.2.0")," release."),Object(o.b)("p",null,"The community put significant effort into improving Apache Submarine since the last release.\n46 patches for improvements and bug fixes."),Object(o.b)("p",null,"We encourage to ",Object(o.b)("a",{parentName:"p",href:"/docs/download"},"download")," the latest release. Feedback through the ",Object(o.b)("a",{parentName:"p",href:"/docs/community/README"},"mailing lists")," is very welcome."),Object(o.b)("p",null,"You can visit ",Object(o.b)("a",{parentName:"p",href:"https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12343240&styleName=&projectId=12316221"},"issue tracker")," for full list of issues that are resolved."))}s.isMDXComponent=!0},209:function(e,t,r){"use strict";r.d(t,"a",(function(){return l})),r.d(t,"b",(function(){return m}));var n=r(0),a=r.n(n);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function c(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?c(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):c(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function u(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var p=a.a.createContext({}),s=function(e){var t=a.a.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},l=function(e){var t=s(e.components);return a.a.createElement(p.Provider,{value:t},e.children)},f={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},b=a.a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,c=e.parentName,p=u(e,["components","mdxType","originalType","parentName"]),l=s(r),b=n,m=l["".concat(c,".").concat(b)]||l[b]||f[b]||o;return r?a.a.createElement(m,i(i({ref:t},p),{},{components:r})):a.a.createElement(m,i({ref:t},p))}));function m(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,c=new Array(o);c[0]=b;var i={};for(var u in t)hasOwnProperty.call(t,u)&&(i[u]=t[u]);i.originalType=e,i.mdxType="string"==typeof e?e:n,c[1]=i;for(var p=2;p<o;p++)c[p]=r[p];return a.a.createElement.apply(null,c)}return a.a.createElement.apply(null,r)}b.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[102],{169:function(e,t,r){"use strict";r.r(t),r.d(t,"frontMatter",(function(){return c})),r.d(t,"metadata",(function(){return i})),r.d(t,"toc",(function(){return u})),r.d(t,"default",(function(){return s}));var n=r(3),a=r(7),o=(r(0),r(194)),c={},i={type:"mdx",permalink:"/releases/submarine-release-0.2.0",source:"@site/src/pages/releases/submarine-release-0.2.0.md"},u=[],p={toc:u};function s(e){var t=e.components,r=Object(a.a)(e,["components"]);return Object(o.b)("wrapper",Object(n.a)({},p,r,{components:t,mdxType:"MDXLayout"}),Object(o.b)("h1",{id:"apache-submarine-release-020"},"Apache Submarine Release 0.2.0"),Object(o.b)("p",null,"The Apache Submarine community is pleased to announce the availability of the ",Object(o.b)("inlineCode",{parentName:"p"},"0.2.0")," release."),Object(o.b)("p",null,"The community put significant effort into improving Apache Submarine since the last release.\n46 patches for improvements and bug fixes."),Object(o.b)("p",null,"We encourage to ",Object(o.b)("a",{parentName:"p",href:"/docs/download"},"download")," the latest release. Feedback through the ",Object(o.b)("a",{parentName:"p",href:"/docs/community/README"},"mailing lists")," is very welcome."),Object(o.b)("p",null,"You can visit ",Object(o.b)("a",{parentName:"p",href:"https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12343240&styleName=&projectId=12316221"},"issue tracker")," for full list of issues that are resolved."))}s.isMDXComponent=!0},194:function(e,t,r){"use strict";r.d(t,"a",(function(){return l})),r.d(t,"b",(function(){return m}));var n=r(0),a=r.n(n);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function c(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?c(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):c(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function u(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var p=a.a.createContext({}),s=function(e){var t=a.a.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},l=function(e){var t=s(e.components);return a.a.createElement(p.Provider,{value:t},e.children)},f={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},b=a.a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,c=e.parentName,p=u(e,["components","mdxType","originalType","parentName"]),l=s(r),b=n,m=l["".concat(c,".").concat(b)]||l[b]||f[b]||o;return r?a.a.createElement(m,i(i({ref:t},p),{},{components:r})):a.a.createElement(m,i({ref:t},p))}));function m(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,c=new Array(o);c[0]=b;var i={};for(var u in t)hasOwnProperty.call(t,u)&&(i[u]=t[u]);i.originalType=e,i.mdxType="string"==typeof e?e:n,c[1]=i;for(var p=2;p<o;p++)c[p]=r[p];return a.a.createElement.apply(null,c)}return a.a.createElement.apply(null,r)}b.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/cf824c09.78b2fcfc.js b/cf824c09.47260a72.js
similarity index 97%
rename from cf824c09.78b2fcfc.js
rename to cf824c09.47260a72.js
index 1d8769a..00516f7 100644
--- a/cf824c09.78b2fcfc.js
+++ b/cf824c09.47260a72.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[115],{182:function(e,t,r){"use strict";r.r(t),r.d(t,"frontMatter",(function(){return i})),r.d(t,"metadata",(function(){return c})),r.d(t,"toc",(function(){return s})),r.d(t,"default",(function(){return u}));var a=r(3),n=r(7),o=(r(0),r(209)),i={title:"Apache Submarine Community"},c={unversionedId:"community/README",id:"version-0.6.0/community/README",isDocsHomePage:!1,title:"Apache Submarine Community",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/community/README.md",slug:"/community/README",permalink:"/docs/community/README",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/community/README.md",version:"0.6.0",sidebar:"docs",previous:{title:"How to Run Frontend Integration Test",permalink:"/docs/devDocs/IntegrationTestE2E"},next:{title:"Guide for Apache Submarine Committers",permalink:"/docs/community/HowToCommit"}},s=[{value:"Communicating",id:"communicating",children:[]},{value:"Your First Contribution",id:"your-first-contribution",children:[]},{value:"How Do I Become a Committer?",id:"how-do-i-become-a-committer",children:[]},{value:"How to commit",id:"how-to-commit",children:[]},{value:"Communication",id:"communication",children:[]},{value:"Mailing lists",id:"mailing-lists",children:[]},{value:"License",id:"license",children:[]}],m={toc:s};function u(e){var t=e.components,r=Object(n.a)(e,["components"]);return Object(o.b)("wrapper",Object(a.a)({},m,r,{components:t,mdxType:"MDXLayout"}),Object(o.b)("p",null,"Welcome to the Apache Submarine Community! The main objective is to help members of the Submarine community who share similar interests to learn from and collaborate with each other."),Object(o.b)("p",null,"Your journey of becoming a contributor and committer starts from here: improving docs, improving code, giving talks, organizing meetups, etc."),Object(o.b)("h2",{id:"communicating"},"Communicating"),Object(o.b)("p",null,"You can reach out to the community members via any one of the following ways:"),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},Object(o.b)("p",{parentName:"li"},"Slack Developer: ",Object(o.b)("a",{parentName:"p",href:"https://the-asf.slack.com/submarine-dev/"},"https://the-asf.slack.com/submarine-dev/"))),Object(o.b)("li",{parentName:"ul"},Object(o.b)("p",{parentName:"li"},"Slack User: ",Object(o.b)("a",{parentName:"p",href:"https://the-asf.slack.com/submarine-user/"},"https://the-asf.slack.com/submarine-user/"))),Object(o.b)("li",{parentName:"ul"},Object(o.b)("p",{parentName:"li"},"Zoom: ",Object(o.b)("a",{parentName:"p",href:"https://cloudera.zoom.us/j/880548968"},"https://cloudera.zoom.us/j/880548968"))),Object(o.b)("li",{parentName:"ul"},Object(o.b)("p",{parentName:"li"},"Sync Up: ",Object(o.b)("a",{parentName:"p",href:"https://docs.google.com/document/d/16pUO3TP4SxSeLduG817GhVAjtiph9HYpRHo_JgduDvw/edit"},"https://docs.google.com/document/d/16pUO3TP4SxSeLduG817GhVAjtiph9HYpRHo_JgduDvw/edit")))),Object(o.b)("h2",{id:"your-first-contribution"},"Your First Contribution"),Object(o.b)("p",null,"You can start by finding an existing issue with the ",Object(o.b)("a",{parentName:"p",href:"https://issues.apache.org/jira/projects/SUBMARINE/issues/SUBMARINE?filter=allopenissues"},"https://issues.apache.org/jira/projects/SUBMARINE/issues/SUBMARINE?filter=allopenissues")," label. These issues are well suited for new contributors."),Object(o.b)("p",null,"If a PR (Pull Request) submitted to the ",Object(o.b)("a",{parentName:"p",href:"https://github.com/apache/submarine"},"Submarine Github")," projects by you is approved and merged, then you become a Submarine Contributor."),Object(o.b)("p",null,"If you want to work on a new idea of relatively small scope:"),Object(o.b)("ol",null,Object(o.b)("li",{parentName:"ol"},Object(o.b)("p",{parentName:"li"},"Submit an issue describing your proposed change to the repo in question.")),Object(o.b)("li",{parentName:"ol"},Object(o.b)("p",{parentName:"li"},"The repo owners will respond to your issue promptly.")),Object(o.b)("li",{parentName:"ol"},Object(o.b)("p",{parentName:"li"},"Submit a ",Object(o.b)("a",{parentName:"p",href:"https://github.com/apache/submarine"},"pull request of Submarine")," containing a tested change."))),Object(o.b)("p",null,"Contributions are welcomed and greatly appreciated. See ",Object(o.b)("a",{parentName:"p",href:"contributing"},"CONTRIBUTING")," for details on submitting patches and the contribution workflow."),Object(o.b)("h2",{id:"how-do-i-become-a-committer"},"How Do I Become a Committer?"),Object(o.b)("p",null,"First of all, you need to get involved and be a Contributor."),Object(o.b)("p",null,"Based on your track-record as a contributor, Per Apache code, PMCs vote on committership, may invite you to be a committer (after we've called a vote). When that happens, if you accept, the following process kicks into place..."),Object(o.b)("p",null,"Note that becoming a committer is not just about submitting some patches; it\u2018s also about helping out on the development and user ",Object(o.b)("a",{parentName:"p",href:"https://the-asf.slack.com/submarine-user/"},"Slack User"),", helping with documentation and the issues."),Object(o.b)("h2",{id:"how-to-commit"},"How to commit"),Object(o.b)("p",null,"See ",Object(o.b)("a",{parentName:"p",href:"/docs/community/HowToCommit"},"How to commit")," for helper doc for Submarine committers."),Object(o.b)("h2",{id:"communication"},"Communication"),Object(o.b)("p",null,"Communication within the Submarine community abides by ",Object(o.b)("a",{parentName:"p",href:"https://www.apache.org/foundation/policies/conduct.html"},"Apache\u2019s Code of Conduct"),"."),Object(o.b)("h2",{id:"mailing-lists"},"Mailing lists"),Object(o.b)("p",null,"Get help using Apache Submarine or contribute to the project on our mailing lists:"),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},Object(o.b)("a",{parentName:"li",href:"https://lists.apache.org/list.html?users@submarine.apache.org"},"Users")," : ",Object(o.b)("a",{parentName:"li",href:"mailto:users-subscribe@submarine.apache.org"},"subscribe"),", ",Object(o.b)("a",{parentName:"li",href:"mailto:users-unsubscribe@submarine.apache.org"},"unsubscribe"),", ",Object(o.b)("a",{parentName:"li",href:"https://lists.apache.org/list.html?users@submarine.apache.org"},"archives"),"\nfor usage questions, help, and announcements."),Object(o.b)("li",{parentName:"ul"},Object(o.b)("a",{parentName:"li",href:"https://lists.apache.org/list.html?dev@submarine.apache.org"},"Dev")," : ",Object(o.b)("a",{parentName:"li",href:"mailto:dev-subscribe@submarine.apache.org"},"subscribe"),", ",Object(o.b)("a",{parentName:"li",href:"mailto:dev-unsubscribe@submarine.apache.org"},"unsubscribe"),", ",Object(o.b)("a",{parentName:"li",href:"https://lists.apache.org/list.html?dev@submarine.apache.org"},"archives"),"\nfor people wanting to contribute to the project."),Object(o.b)("li",{parentName:"ul"},Object(o.b)("a",{parentName:"li",href:"https://lists.apache.org/list.html?commits@submarine.apache.org"},"Commits")," : ",Object(o.b)("a",{parentName:"li",href:"mailto:commits-subscribe@submarine.apache.org"},"subscribe"),", ",Object(o.b)("a",{parentName:"li",href:"mailto:commits-unsubscribe@submarine.apache.org"},"unsubscribe"),", ",Object(o.b)("a",{parentName:"li",href:"https://lists.apache.org/list.html?commits@submarine.apache.org"},"archives"),"\nfor commit messages and patches.")),Object(o.b)("h2",{id:"license"},"License"),Object(o.b)("p",null,"Submarine source code is under the Apache 2.0 license. See the ",Object(o.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/blob/master/LICENSE"},"LICENSE")," file for details."))}u.isMDXComponent=!0},209:function(e,t,r){"use strict";r.d(t,"a",(function(){return b})),r.d(t,"b",(function(){return h}));var a=r(0),n=r.n(a);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function c(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?i(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function s(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},o=Object.keys(e);for(a=0;a<o.length;a++)r=o[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)r=o[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var m=n.a.createContext({}),u=function(e){var t=n.a.useContext(m),r=t;return e&&(r="function"==typeof e?e(t):c(c({},t),e)),r},b=function(e){var t=u(e.components);return n.a.createElement(m.Provider,{value:t},e.children)},l={inlineCode:"code",wrapper:function(e){var t=e.children;return n.a.createElement(n.a.Fragment,{},t)}},p=n.a.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,i=e.parentName,m=s(e,["components","mdxType","originalType","parentName"]),b=u(r),p=a,h=b["".concat(i,".").concat(p)]||b[p]||l[p]||o;return r?n.a.createElement(h,c(c({ref:t},m),{},{components:r})):n.a.createElement(h,c({ref:t},m))}));function h(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=p;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c.mdxType="string"==typeof e?e:a,i[1]=c;for(var m=2;m<o;m++)i[m]=r[m];return n.a.createElement.apply(null,i)}return n.a.createElement.apply(null,r)}p.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[103],{170:function(e,t,r){"use strict";r.r(t),r.d(t,"frontMatter",(function(){return i})),r.d(t,"metadata",(function(){return c})),r.d(t,"toc",(function(){return s})),r.d(t,"default",(function(){return u}));var a=r(3),n=r(7),o=(r(0),r(194)),i={title:"Apache Submarine Community"},c={unversionedId:"community/README",id:"version-0.6.0/community/README",isDocsHomePage:!1,title:"Apache Submarine Community",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/community/README.md",slug:"/community/README",permalink:"/docs/community/README",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/community/README.md",version:"0.6.0",sidebar:"docs",previous:{title:"How to Run Frontend Integration Test",permalink:"/docs/devDocs/IntegrationTestE2E"},next:{title:"Guide for Apache Submarine Committers",permalink:"/docs/community/HowToCommit"}},s=[{value:"Communicating",id:"communicating",children:[]},{value:"Your First Contribution",id:"your-first-contribution",children:[]},{value:"How Do I Become a Committer?",id:"how-do-i-become-a-committer",children:[]},{value:"How to commit",id:"how-to-commit",children:[]},{value:"Communication",id:"communication",children:[]},{value:"Mailing lists",id:"mailing-lists",children:[]},{value:"License",id:"license",children:[]}],m={toc:s};function u(e){var t=e.components,r=Object(n.a)(e,["components"]);return Object(o.b)("wrapper",Object(a.a)({},m,r,{components:t,mdxType:"MDXLayout"}),Object(o.b)("p",null,"Welcome to the Apache Submarine Community! The main objective is to help members of the Submarine community who share similar interests to learn from and collaborate with each other."),Object(o.b)("p",null,"Your journey of becoming a contributor and committer starts from here: improving docs, improving code, giving talks, organizing meetups, etc."),Object(o.b)("h2",{id:"communicating"},"Communicating"),Object(o.b)("p",null,"You can reach out to the community members via any one of the following ways:"),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},Object(o.b)("p",{parentName:"li"},"Slack Developer: ",Object(o.b)("a",{parentName:"p",href:"https://the-asf.slack.com/submarine-dev/"},"https://the-asf.slack.com/submarine-dev/"))),Object(o.b)("li",{parentName:"ul"},Object(o.b)("p",{parentName:"li"},"Slack User: ",Object(o.b)("a",{parentName:"p",href:"https://the-asf.slack.com/submarine-user/"},"https://the-asf.slack.com/submarine-user/"))),Object(o.b)("li",{parentName:"ul"},Object(o.b)("p",{parentName:"li"},"Zoom: ",Object(o.b)("a",{parentName:"p",href:"https://cloudera.zoom.us/j/880548968"},"https://cloudera.zoom.us/j/880548968"))),Object(o.b)("li",{parentName:"ul"},Object(o.b)("p",{parentName:"li"},"Sync Up: ",Object(o.b)("a",{parentName:"p",href:"https://docs.google.com/document/d/16pUO3TP4SxSeLduG817GhVAjtiph9HYpRHo_JgduDvw/edit"},"https://docs.google.com/document/d/16pUO3TP4SxSeLduG817GhVAjtiph9HYpRHo_JgduDvw/edit")))),Object(o.b)("h2",{id:"your-first-contribution"},"Your First Contribution"),Object(o.b)("p",null,"You can start by finding an existing issue with the ",Object(o.b)("a",{parentName:"p",href:"https://issues.apache.org/jira/projects/SUBMARINE/issues/SUBMARINE?filter=allopenissues"},"https://issues.apache.org/jira/projects/SUBMARINE/issues/SUBMARINE?filter=allopenissues")," label. These issues are well suited for new contributors."),Object(o.b)("p",null,"If a PR (Pull Request) submitted to the ",Object(o.b)("a",{parentName:"p",href:"https://github.com/apache/submarine"},"Submarine Github")," projects by you is approved and merged, then you become a Submarine Contributor."),Object(o.b)("p",null,"If you want to work on a new idea of relatively small scope:"),Object(o.b)("ol",null,Object(o.b)("li",{parentName:"ol"},Object(o.b)("p",{parentName:"li"},"Submit an issue describing your proposed change to the repo in question.")),Object(o.b)("li",{parentName:"ol"},Object(o.b)("p",{parentName:"li"},"The repo owners will respond to your issue promptly.")),Object(o.b)("li",{parentName:"ol"},Object(o.b)("p",{parentName:"li"},"Submit a ",Object(o.b)("a",{parentName:"p",href:"https://github.com/apache/submarine"},"pull request of Submarine")," containing a tested change."))),Object(o.b)("p",null,"Contributions are welcomed and greatly appreciated. See ",Object(o.b)("a",{parentName:"p",href:"contributing"},"CONTRIBUTING")," for details on submitting patches and the contribution workflow."),Object(o.b)("h2",{id:"how-do-i-become-a-committer"},"How Do I Become a Committer?"),Object(o.b)("p",null,"First of all, you need to get involved and be a Contributor."),Object(o.b)("p",null,"Based on your track-record as a contributor, Per Apache code, PMCs vote on committership, may invite you to be a committer (after we've called a vote). When that happens, if you accept, the following process kicks into place..."),Object(o.b)("p",null,"Note that becoming a committer is not just about submitting some patches; it\u2018s also about helping out on the development and user ",Object(o.b)("a",{parentName:"p",href:"https://the-asf.slack.com/submarine-user/"},"Slack User"),", helping with documentation and the issues."),Object(o.b)("h2",{id:"how-to-commit"},"How to commit"),Object(o.b)("p",null,"See ",Object(o.b)("a",{parentName:"p",href:"/docs/community/HowToCommit"},"How to commit")," for helper doc for Submarine committers."),Object(o.b)("h2",{id:"communication"},"Communication"),Object(o.b)("p",null,"Communication within the Submarine community abides by ",Object(o.b)("a",{parentName:"p",href:"https://www.apache.org/foundation/policies/conduct.html"},"Apache\u2019s Code of Conduct"),"."),Object(o.b)("h2",{id:"mailing-lists"},"Mailing lists"),Object(o.b)("p",null,"Get help using Apache Submarine or contribute to the project on our mailing lists:"),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},Object(o.b)("a",{parentName:"li",href:"https://lists.apache.org/list.html?users@submarine.apache.org"},"Users")," : ",Object(o.b)("a",{parentName:"li",href:"mailto:users-subscribe@submarine.apache.org"},"subscribe"),", ",Object(o.b)("a",{parentName:"li",href:"mailto:users-unsubscribe@submarine.apache.org"},"unsubscribe"),", ",Object(o.b)("a",{parentName:"li",href:"https://lists.apache.org/list.html?users@submarine.apache.org"},"archives"),"\nfor usage questions, help, and announcements."),Object(o.b)("li",{parentName:"ul"},Object(o.b)("a",{parentName:"li",href:"https://lists.apache.org/list.html?dev@submarine.apache.org"},"Dev")," : ",Object(o.b)("a",{parentName:"li",href:"mailto:dev-subscribe@submarine.apache.org"},"subscribe"),", ",Object(o.b)("a",{parentName:"li",href:"mailto:dev-unsubscribe@submarine.apache.org"},"unsubscribe"),", ",Object(o.b)("a",{parentName:"li",href:"https://lists.apache.org/list.html?dev@submarine.apache.org"},"archives"),"\nfor people wanting to contribute to the project."),Object(o.b)("li",{parentName:"ul"},Object(o.b)("a",{parentName:"li",href:"https://lists.apache.org/list.html?commits@submarine.apache.org"},"Commits")," : ",Object(o.b)("a",{parentName:"li",href:"mailto:commits-subscribe@submarine.apache.org"},"subscribe"),", ",Object(o.b)("a",{parentName:"li",href:"mailto:commits-unsubscribe@submarine.apache.org"},"unsubscribe"),", ",Object(o.b)("a",{parentName:"li",href:"https://lists.apache.org/list.html?commits@submarine.apache.org"},"archives"),"\nfor commit messages and patches.")),Object(o.b)("h2",{id:"license"},"License"),Object(o.b)("p",null,"Submarine source code is under the Apache 2.0 license. See the ",Object(o.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/blob/master/LICENSE"},"LICENSE")," file for details."))}u.isMDXComponent=!0},194:function(e,t,r){"use strict";r.d(t,"a",(function(){return b})),r.d(t,"b",(function(){return h}));var a=r(0),n=r.n(a);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function c(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?i(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function s(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},o=Object.keys(e);for(a=0;a<o.length;a++)r=o[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)r=o[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var m=n.a.createContext({}),u=function(e){var t=n.a.useContext(m),r=t;return e&&(r="function"==typeof e?e(t):c(c({},t),e)),r},b=function(e){var t=u(e.components);return n.a.createElement(m.Provider,{value:t},e.children)},l={inlineCode:"code",wrapper:function(e){var t=e.children;return n.a.createElement(n.a.Fragment,{},t)}},p=n.a.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,i=e.parentName,m=s(e,["components","mdxType","originalType","parentName"]),b=u(r),p=a,h=b["".concat(i,".").concat(p)]||b[p]||l[p]||o;return r?n.a.createElement(h,c(c({ref:t},m),{},{components:r})):n.a.createElement(h,c({ref:t},m))}));function h(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=p;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c.mdxType="string"==typeof e?e:a,i[1]=c;for(var m=2;m<o;m++)i[m]=r[m];return n.a.createElement.apply(null,i)}return n.a.createElement.apply(null,r)}p.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/cfa5b027.7f20886b.js b/cfa5b027.dedbc4b0.js
similarity index 97%
rename from cfa5b027.7f20886b.js
rename to cfa5b027.dedbc4b0.js
index 0f138f8..48c2c4d 100644
--- a/cfa5b027.7f20886b.js
+++ b/cfa5b027.dedbc4b0.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[116],{183:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return i})),n.d(t,"metadata",(function(){return l})),n.d(t,"toc",(function(){return p})),n.d(t,"default",(function(){return c}));var a=n(3),r=n(7),o=(n(0),n(209)),i={title:"Python SDK Development"},l={unversionedId:"userDocs/submarine-sdk/pysubmarine/development",id:"userDocs/submarine-sdk/pysubmarine/development",isDocsHomePage:!1,title:"Python SDK Development",description:"\x3c!---",source:"@site/docs/userDocs/submarine-sdk/pysubmarine/development.md",slug:"/userDocs/submarine-sdk/pysubmarine/development",permalink:"/docs/next/userDocs/submarine-sdk/pysubmarine/development",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/userDocs/submarine-sdk/pysubmarine/development.md",version:"current"},p=[{value:"Prerequisites",id:"prerequisites",children:[]},{value:"PySubmarine Docker",id:"pysubmarine-docker",children:[]},{value:"Coding Style",id:"coding-style",children:[]},{value:"Unit Testing",id:"unit-testing",children:[]},{value:"Generate python SDK from swagger",id:"generate-python-sdk-from-swagger",children:[]},{value:"Model Management Model Development",id:"model-management-model-development",children:[]},{value:"Upload package to PyPi",id:"upload-package-to-pypi",children:[]}],s={toc:p};function c(e){var t=e.components,n=Object(r.a)(e,["components"]);return Object(o.b)("wrapper",Object(a.a)({},s,n,{components:t,mdxType:"MDXLayout"}),Object(o.b)("p",null,"This page provides general Python development guidelines and source build instructions"),Object(o.b)("h3",{id:"prerequisites"},"Prerequisites"),Object(o.b)("p",null,"This is required for developing & testing changes, we recommend installing pysubmarine\nin its own conda environment by running the following"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-bash"},"conda create --name submarine-dev python=3.6\nconda activate submarine-dev\n\n# Install auto-format and lints from current checkout\npip install -r ./dev-support/style-check/python/lint-requirements.txt\n\n# Install mypy from current checkout\npip install -r ./dev-support/style-check/python/mypy-requirements.txt\n\n# test-requirements.txt from current checkout\npip install -r ./submarine-sdk/pysubmarine/github-actions/test-requirements.txt\n\n# Installs pysubmarine from current checkout\npip install -e ./submarine-sdk/pysubmarine\n")),Object(o.b)("h3",{id:"pysubmarine-docker"},"PySubmarine Docker"),Object(o.b)("p",null,"We also use docker to provide build environments for CI, development,\ngenerate python sdk from swagger."),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-bash"},"./run-pysubmarine-ci.sh\n")),Object(o.b)("p",null,"The script does the following things:"),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},"Start an interactive bash session"),Object(o.b)("li",{parentName:"ul"},"Mount submarine directory to /workspace and set it as home"),Object(o.b)("li",{parentName:"ul"},"Switch user to be the same user that calls the ",Object(o.b)("inlineCode",{parentName:"li"},"run-pysubmarine-ci.sh"))),Object(o.b)("h3",{id:"coding-style"},"Coding Style"),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},"Use ",Object(o.b)("a",{parentName:"li",href:"https://github.com/PyCQA/isort"},"isort")," to sort the Python imports and ",Object(o.b)("a",{parentName:"li",href:"https://github.com/psf/black"},"black")," to format Python code"),Object(o.b)("li",{parentName:"ul"},"Both style is configured in ",Object(o.b)("inlineCode",{parentName:"li"},"pyproject.toml")),Object(o.b)("li",{parentName:"ul"},"To autoformat code")),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-bash"},"./dev-support/style-check/python/auto-format.sh\n")),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},"Use ",Object(o.b)("a",{parentName:"li",href:"https://github.com/PyCQA/flake8"},"flake8")," to verify the linter, its' configure is in ",Object(o.b)("inlineCode",{parentName:"li"},".flake8"),"."),Object(o.b)("li",{parentName:"ul"},"Also, we are using ",Object(o.b)("a",{parentName:"li",href:"https://github.com/python/mypy"},"mypy")," to check the static type in ",Object(o.b)("inlineCode",{parentName:"li"},"submarine-sdk/pysubmarine/submarine"),"."),Object(o.b)("li",{parentName:"ul"},"Verify linter pass before submitting a pull request by running:")),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-bash"},"./dev-support/style-check/python/lint.sh\n")),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},"If you encouter a unexpected format, use the following method")),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-python"},'# fmt: off\n  "Unexpected format, formated by yourself"\n# fmt: on\n')),Object(o.b)("h3",{id:"unit-testing"},"Unit Testing"),Object(o.b)("p",null,"We are using ",Object(o.b)("a",{parentName:"p",href:"https://docs.pytest.org/en/latest/"},"pytest")," to develop our unit test suite.\nAfter building the project (see below) you can run its unit tests like so:"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-bash"},"cd submarine-sdk/pysubmarine\n")),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},"Run unit test")),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-shell",metastring:"script",script:!0},'pytest --cov=submarine -vs -m "not e2e"\n')),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},"Run integration test")),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-shell",metastring:"script",script:!0},'pytest --cov=submarine -vs -m "e2e"\n')),Object(o.b)("blockquote",null,Object(o.b)("p",{parentName:"blockquote"},"Before run this command in local, you should make sure the submarine server is running.")),Object(o.b)("h3",{id:"generate-python-sdk-from-swagger"},"Generate python SDK from swagger"),Object(o.b)("p",null,"We use ",Object(o.b)("a",{parentName:"p",href:"https://openapi-generator.tech/docs/installation/#jar"},"open-api generator"),"\nto generate pysubmarine client API that used to communicate with submarine server."),Object(o.b)("ol",null,Object(o.b)("li",{parentName:"ol"},Object(o.b)("p",{parentName:"li"},"To generate different API Component, please change the code in ",Object(o.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/blob/master/submarine-server/server-core/src/main/java/org/apache/submarine/server/Bootstrap.java"},"Bootstrap.java"),". If just updating java code for ",Object(o.b)("inlineCode",{parentName:"p"},"NotebookRestApi")," , ",Object(o.b)("inlineCode",{parentName:"p"},"ExperimentRestApi")," or ",Object(o.b)("inlineCode",{parentName:"p"},"EnvironmentRestApi"),", please skip step 1."),Object(o.b)("pre",{parentName:"li"},Object(o.b)("code",{parentName:"pre",className:"language-java"},'SwaggerConfiguration oasConfig = new SwaggerConfiguration()\n            .openAPI(oas)\n            .resourcePackages(Stream.of("org.apache.submarine.server.rest")\n                    .collect(Collectors.toSet()))\n            .resourceClasses(Stream.of("org.apache.submarine.server.rest.NotebookRestApi",\n                    "org.apache.submarine.server.rest.ExperimentRestApi",\n                    "org.apache.submarine.server.rest.EnvironmentRestApi")\n                    .collect(Collectors.toSet()));\n')),Object(o.b)("blockquote",{parentName:"li"},Object(o.b)("p",{parentName:"blockquote"},"After starting the server, ",Object(o.b)("inlineCode",{parentName:"p"},"http://localhost:8080/v1/openapi.json")," will includes API specs for ",Object(o.b)("inlineCode",{parentName:"p"},"NotebookRestApi"),", ",Object(o.b)("inlineCode",{parentName:"p"},"ExperimentRestApi")," and ",Object(o.b)("inlineCode",{parentName:"p"},"EnvironmentRestApi"))))),Object(o.b)("ol",{start:2},Object(o.b)("li",{parentName:"ol"},Object(o.b)("p",{parentName:"li"},Object(o.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/blob/master/dev-support/pysubmarine/swagger_config.json"},"swagger_config.json")," defines the import path for python SDK"),Object(o.b)("p",{parentName:"li"},"Ex: "),Object(o.b)("p",{parentName:"li"},"For ",Object(o.b)("inlineCode",{parentName:"p"},"submarine.client")),Object(o.b)("pre",{parentName:"li"},Object(o.b)("code",{parentName:"pre",className:"language-json"},'{\n  "packageName" : "submarine.client",\n  "projectName" : "submarine.client",\n  "packageVersion": "0.7.0-SNAPSHOT"\n}\n')),Object(o.b)("blockquote",{parentName:"li"},Object(o.b)("p",{parentName:"blockquote"},"Usage: ",Object(o.b)("inlineCode",{parentName:"p"},"import submarine.client...")))),Object(o.b)("li",{parentName:"ol"},Object(o.b)("p",{parentName:"li"},"Execute ",Object(o.b)("inlineCode",{parentName:"p"},"./dev-support/pysubmarine/gen-sdk.sh")," to generate latest version of SDK."),Object(o.b)("blockquote",{parentName:"li"},Object(o.b)("p",{parentName:"blockquote"},"Notice: Please install required package before running the script: ",Object(o.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/blob/master/dev-support/style-check/python/lint-requirements.txt"},"lint-requirements.txt")))),Object(o.b)("li",{parentName:"ol"},Object(o.b)("p",{parentName:"li"},"In ",Object(o.b)("inlineCode",{parentName:"p"},"submarine/submarine-sdk/pysubmarine/client/api_client.py")," line 74"),Object(o.b)("p",{parentName:"li"},"Please change"),Object(o.b)("pre",{parentName:"li"},Object(o.b)("code",{parentName:"pre",className:"language-python"},'"long": int if six.PY3 else long,  # noqa: F821\n')),Object(o.b)("p",{parentName:"li"},"to "),Object(o.b)("pre",{parentName:"li"},Object(o.b)("code",{parentName:"pre",className:"language-python"},'"long": int,\n')))),Object(o.b)("h3",{id:"model-management-model-development"},"Model Management Model Development"),Object(o.b)("p",null,"For local development, we can access cluster's service easily thanks to ",Object(o.b)("a",{parentName:"p",href:"https://www.telepresence.io/"},"telepresence"),".\nTo elaborate, we can develop the sdk in local but can reach out to database and minio server by proxy."),Object(o.b)("ol",null,Object(o.b)("li",{parentName:"ol"},"Install telepresence follow ",Object(o.b)("a",{parentName:"li",href:"https://www.telepresence.io/reference/install"},"the instruction"),"."),Object(o.b)("li",{parentName:"ol"},"Start proxy pod")),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"telepresence --new-deployment submarine-dev\n")),Object(o.b)("ol",{start:3},Object(o.b)("li",{parentName:"ol"},"You can develop as if in the cluster.")),Object(o.b)("h3",{id:"upload-package-to-pypi"},"Upload package to PyPi"),Object(o.b)("p",null,"For Apache Submarine committer and PMCs to do a new release."),Object(o.b)("ol",null,Object(o.b)("li",{parentName:"ol"},"Change the version from 0.x.x-SNAPSHOT to 0.x.x\nin ",Object(o.b)("a",{parentName:"li",href:"https://github.com/apache/submarine/blob/master/submarine-sdk/pysubmarine/setup.py"},"setup.py")),Object(o.b)("li",{parentName:"ol"},"Install Python packages")),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-bash"},"cd submarine-sdk/pysubmarine\npip install -r github-actions/pypi-requirements.txt\n")),Object(o.b)("ol",{start:3},Object(o.b)("li",{parentName:"ol"},"Compiling Your Package")),Object(o.b)("p",null,"It will create ",Object(o.b)("inlineCode",{parentName:"p"},"build"),", ",Object(o.b)("inlineCode",{parentName:"p"},"dist"),", and ",Object(o.b)("inlineCode",{parentName:"p"},"project.egg.info"),"\nin your local directory"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-bash"},"python setup.py bdist_wheel\n")),Object(o.b)("ol",{start:4},Object(o.b)("li",{parentName:"ol"},"Upload python package to TestPyPI for testing")),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-bash"},"python -m twine upload --repository testpypi dist/*\n")),Object(o.b)("ol",{start:5},Object(o.b)("li",{parentName:"ol"},"Upload python package to PyPi")),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-bash"},"python -m twine upload --repository-url https://upload.pypi.org/legacy/ dist/*\n")))}c.isMDXComponent=!0},209:function(e,t,n){"use strict";n.d(t,"a",(function(){return b})),n.d(t,"b",(function(){return d}));var a=n(0),r=n.n(a);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function p(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},o=Object.keys(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=r.a.createContext({}),c=function(e){var t=r.a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},b=function(e){var t=c(e.components);return r.a.createElement(s.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},m=r.a.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,i=e.parentName,s=p(e,["components","mdxType","originalType","parentName"]),b=c(n),m=a,d=b["".concat(i,".").concat(m)]||b[m]||u[m]||o;return n?r.a.createElement(d,l(l({ref:t},s),{},{components:n})):r.a.createElement(d,l({ref:t},s))}));function d(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=m;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l.mdxType="string"==typeof e?e:a,i[1]=l;for(var s=2;s<o;s++)i[s]=n[s];return r.a.createElement.apply(null,i)}return r.a.createElement.apply(null,n)}m.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[104],{171:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return i})),n.d(t,"metadata",(function(){return l})),n.d(t,"toc",(function(){return p})),n.d(t,"default",(function(){return c}));var a=n(3),r=n(7),o=(n(0),n(194)),i={title:"Python SDK Development"},l={unversionedId:"userDocs/submarine-sdk/pysubmarine/development",id:"userDocs/submarine-sdk/pysubmarine/development",isDocsHomePage:!1,title:"Python SDK Development",description:"\x3c!---",source:"@site/docs/userDocs/submarine-sdk/pysubmarine/development.md",slug:"/userDocs/submarine-sdk/pysubmarine/development",permalink:"/docs/next/userDocs/submarine-sdk/pysubmarine/development",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/userDocs/submarine-sdk/pysubmarine/development.md",version:"current"},p=[{value:"Prerequisites",id:"prerequisites",children:[]},{value:"PySubmarine Docker",id:"pysubmarine-docker",children:[]},{value:"Coding Style",id:"coding-style",children:[]},{value:"Unit Testing",id:"unit-testing",children:[]},{value:"Generate python SDK from swagger",id:"generate-python-sdk-from-swagger",children:[]},{value:"Model Management Model Development",id:"model-management-model-development",children:[]},{value:"Upload package to PyPi",id:"upload-package-to-pypi",children:[]}],s={toc:p};function c(e){var t=e.components,n=Object(r.a)(e,["components"]);return Object(o.b)("wrapper",Object(a.a)({},s,n,{components:t,mdxType:"MDXLayout"}),Object(o.b)("p",null,"This page provides general Python development guidelines and source build instructions"),Object(o.b)("h3",{id:"prerequisites"},"Prerequisites"),Object(o.b)("p",null,"This is required for developing & testing changes, we recommend installing pysubmarine\nin its own conda environment by running the following"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-bash"},"conda create --name submarine-dev python=3.6\nconda activate submarine-dev\n\n# Install auto-format and lints from current checkout\npip install -r ./dev-support/style-check/python/lint-requirements.txt\n\n# Install mypy from current checkout\npip install -r ./dev-support/style-check/python/mypy-requirements.txt\n\n# test-requirements.txt from current checkout\npip install -r ./submarine-sdk/pysubmarine/github-actions/test-requirements.txt\n\n# Installs pysubmarine from current checkout\npip install -e ./submarine-sdk/pysubmarine\n")),Object(o.b)("h3",{id:"pysubmarine-docker"},"PySubmarine Docker"),Object(o.b)("p",null,"We also use docker to provide build environments for CI, development,\ngenerate python sdk from swagger."),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-bash"},"./run-pysubmarine-ci.sh\n")),Object(o.b)("p",null,"The script does the following things:"),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},"Start an interactive bash session"),Object(o.b)("li",{parentName:"ul"},"Mount submarine directory to /workspace and set it as home"),Object(o.b)("li",{parentName:"ul"},"Switch user to be the same user that calls the ",Object(o.b)("inlineCode",{parentName:"li"},"run-pysubmarine-ci.sh"))),Object(o.b)("h3",{id:"coding-style"},"Coding Style"),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},"Use ",Object(o.b)("a",{parentName:"li",href:"https://github.com/PyCQA/isort"},"isort")," to sort the Python imports and ",Object(o.b)("a",{parentName:"li",href:"https://github.com/psf/black"},"black")," to format Python code"),Object(o.b)("li",{parentName:"ul"},"Both style is configured in ",Object(o.b)("inlineCode",{parentName:"li"},"pyproject.toml")),Object(o.b)("li",{parentName:"ul"},"To autoformat code")),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-bash"},"./dev-support/style-check/python/auto-format.sh\n")),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},"Use ",Object(o.b)("a",{parentName:"li",href:"https://github.com/PyCQA/flake8"},"flake8")," to verify the linter, its' configure is in ",Object(o.b)("inlineCode",{parentName:"li"},".flake8"),"."),Object(o.b)("li",{parentName:"ul"},"Also, we are using ",Object(o.b)("a",{parentName:"li",href:"https://github.com/python/mypy"},"mypy")," to check the static type in ",Object(o.b)("inlineCode",{parentName:"li"},"submarine-sdk/pysubmarine/submarine"),"."),Object(o.b)("li",{parentName:"ul"},"Verify linter pass before submitting a pull request by running:")),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-bash"},"./dev-support/style-check/python/lint.sh\n")),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},"If you encouter a unexpected format, use the following method")),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-python"},'# fmt: off\n  "Unexpected format, formated by yourself"\n# fmt: on\n')),Object(o.b)("h3",{id:"unit-testing"},"Unit Testing"),Object(o.b)("p",null,"We are using ",Object(o.b)("a",{parentName:"p",href:"https://docs.pytest.org/en/latest/"},"pytest")," to develop our unit test suite.\nAfter building the project (see below) you can run its unit tests like so:"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-bash"},"cd submarine-sdk/pysubmarine\n")),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},"Run unit test")),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-shell",metastring:"script",script:!0},'pytest --cov=submarine -vs -m "not e2e"\n')),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},"Run integration test")),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-shell",metastring:"script",script:!0},'pytest --cov=submarine -vs -m "e2e"\n')),Object(o.b)("blockquote",null,Object(o.b)("p",{parentName:"blockquote"},"Before run this command in local, you should make sure the submarine server is running.")),Object(o.b)("h3",{id:"generate-python-sdk-from-swagger"},"Generate python SDK from swagger"),Object(o.b)("p",null,"We use ",Object(o.b)("a",{parentName:"p",href:"https://openapi-generator.tech/docs/installation/#jar"},"open-api generator"),"\nto generate pysubmarine client API that used to communicate with submarine server."),Object(o.b)("ol",null,Object(o.b)("li",{parentName:"ol"},Object(o.b)("p",{parentName:"li"},"To generate different API Component, please change the code in ",Object(o.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/blob/master/submarine-server/server-core/src/main/java/org/apache/submarine/server/Bootstrap.java"},"Bootstrap.java"),". If just updating java code for ",Object(o.b)("inlineCode",{parentName:"p"},"NotebookRestApi")," , ",Object(o.b)("inlineCode",{parentName:"p"},"ExperimentRestApi")," or ",Object(o.b)("inlineCode",{parentName:"p"},"EnvironmentRestApi"),", please skip step 1."),Object(o.b)("pre",{parentName:"li"},Object(o.b)("code",{parentName:"pre",className:"language-java"},'SwaggerConfiguration oasConfig = new SwaggerConfiguration()\n            .openAPI(oas)\n            .resourcePackages(Stream.of("org.apache.submarine.server.rest")\n                    .collect(Collectors.toSet()))\n            .resourceClasses(Stream.of("org.apache.submarine.server.rest.NotebookRestApi",\n                    "org.apache.submarine.server.rest.ExperimentRestApi",\n                    "org.apache.submarine.server.rest.EnvironmentRestApi")\n                    .collect(Collectors.toSet()));\n')),Object(o.b)("blockquote",{parentName:"li"},Object(o.b)("p",{parentName:"blockquote"},"After starting the server, ",Object(o.b)("inlineCode",{parentName:"p"},"http://localhost:8080/v1/openapi.json")," will includes API specs for ",Object(o.b)("inlineCode",{parentName:"p"},"NotebookRestApi"),", ",Object(o.b)("inlineCode",{parentName:"p"},"ExperimentRestApi")," and ",Object(o.b)("inlineCode",{parentName:"p"},"EnvironmentRestApi"))))),Object(o.b)("ol",{start:2},Object(o.b)("li",{parentName:"ol"},Object(o.b)("p",{parentName:"li"},Object(o.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/blob/master/dev-support/pysubmarine/swagger_config.json"},"swagger_config.json")," defines the import path for python SDK"),Object(o.b)("p",{parentName:"li"},"Ex: "),Object(o.b)("p",{parentName:"li"},"For ",Object(o.b)("inlineCode",{parentName:"p"},"submarine.client")),Object(o.b)("pre",{parentName:"li"},Object(o.b)("code",{parentName:"pre",className:"language-json"},'{\n  "packageName" : "submarine.client",\n  "projectName" : "submarine.client",\n  "packageVersion": "0.7.0-SNAPSHOT"\n}\n')),Object(o.b)("blockquote",{parentName:"li"},Object(o.b)("p",{parentName:"blockquote"},"Usage: ",Object(o.b)("inlineCode",{parentName:"p"},"import submarine.client...")))),Object(o.b)("li",{parentName:"ol"},Object(o.b)("p",{parentName:"li"},"Execute ",Object(o.b)("inlineCode",{parentName:"p"},"./dev-support/pysubmarine/gen-sdk.sh")," to generate latest version of SDK."),Object(o.b)("blockquote",{parentName:"li"},Object(o.b)("p",{parentName:"blockquote"},"Notice: Please install required package before running the script: ",Object(o.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/blob/master/dev-support/style-check/python/lint-requirements.txt"},"lint-requirements.txt")))),Object(o.b)("li",{parentName:"ol"},Object(o.b)("p",{parentName:"li"},"In ",Object(o.b)("inlineCode",{parentName:"p"},"submarine/submarine-sdk/pysubmarine/client/api_client.py")," line 74"),Object(o.b)("p",{parentName:"li"},"Please change"),Object(o.b)("pre",{parentName:"li"},Object(o.b)("code",{parentName:"pre",className:"language-python"},'"long": int if six.PY3 else long,  # noqa: F821\n')),Object(o.b)("p",{parentName:"li"},"to "),Object(o.b)("pre",{parentName:"li"},Object(o.b)("code",{parentName:"pre",className:"language-python"},'"long": int,\n')))),Object(o.b)("h3",{id:"model-management-model-development"},"Model Management Model Development"),Object(o.b)("p",null,"For local development, we can access cluster's service easily thanks to ",Object(o.b)("a",{parentName:"p",href:"https://www.telepresence.io/"},"telepresence"),".\nTo elaborate, we can develop the sdk in local but can reach out to database and minio server by proxy."),Object(o.b)("ol",null,Object(o.b)("li",{parentName:"ol"},"Install telepresence follow ",Object(o.b)("a",{parentName:"li",href:"https://www.telepresence.io/reference/install"},"the instruction"),"."),Object(o.b)("li",{parentName:"ol"},"Start proxy pod")),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"telepresence --new-deployment submarine-dev\n")),Object(o.b)("ol",{start:3},Object(o.b)("li",{parentName:"ol"},"You can develop as if in the cluster.")),Object(o.b)("h3",{id:"upload-package-to-pypi"},"Upload package to PyPi"),Object(o.b)("p",null,"For Apache Submarine committer and PMCs to do a new release."),Object(o.b)("ol",null,Object(o.b)("li",{parentName:"ol"},"Change the version from 0.x.x-SNAPSHOT to 0.x.x\nin ",Object(o.b)("a",{parentName:"li",href:"https://github.com/apache/submarine/blob/master/submarine-sdk/pysubmarine/setup.py"},"setup.py")),Object(o.b)("li",{parentName:"ol"},"Install Python packages")),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-bash"},"cd submarine-sdk/pysubmarine\npip install -r github-actions/pypi-requirements.txt\n")),Object(o.b)("ol",{start:3},Object(o.b)("li",{parentName:"ol"},"Compiling Your Package")),Object(o.b)("p",null,"It will create ",Object(o.b)("inlineCode",{parentName:"p"},"build"),", ",Object(o.b)("inlineCode",{parentName:"p"},"dist"),", and ",Object(o.b)("inlineCode",{parentName:"p"},"project.egg.info"),"\nin your local directory"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-bash"},"python setup.py bdist_wheel\n")),Object(o.b)("ol",{start:4},Object(o.b)("li",{parentName:"ol"},"Upload python package to TestPyPI for testing")),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-bash"},"python -m twine upload --repository testpypi dist/*\n")),Object(o.b)("ol",{start:5},Object(o.b)("li",{parentName:"ol"},"Upload python package to PyPi")),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-bash"},"python -m twine upload --repository-url https://upload.pypi.org/legacy/ dist/*\n")))}c.isMDXComponent=!0},194:function(e,t,n){"use strict";n.d(t,"a",(function(){return b})),n.d(t,"b",(function(){return d}));var a=n(0),r=n.n(a);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function p(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},o=Object.keys(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=r.a.createContext({}),c=function(e){var t=r.a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},b=function(e){var t=c(e.components);return r.a.createElement(s.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},m=r.a.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,i=e.parentName,s=p(e,["components","mdxType","originalType","parentName"]),b=c(n),m=a,d=b["".concat(i,".").concat(m)]||b[m]||u[m]||o;return n?r.a.createElement(d,l(l({ref:t},s),{},{components:n})):r.a.createElement(d,l({ref:t},s))}));function d(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=m;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l.mdxType="string"==typeof e?e:a,i[1]=l;for(var s=2;s<o;s++)i[s]=n[s];return r.a.createElement.apply(null,i)}return r.a.createElement.apply(null,n)}m.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/d2a03af7.c7f3811a.js b/d2a03af7.100b4d05.js
similarity index 97%
rename from d2a03af7.c7f3811a.js
rename to d2a03af7.100b4d05.js
index dcb6cdc..287283d 100644
--- a/d2a03af7.c7f3811a.js
+++ b/d2a03af7.100b4d05.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[117],{184:function(e,n,r){"use strict";r.r(n),r.d(n,"frontMatter",(function(){return o})),r.d(n,"metadata",(function(){return c})),r.d(n,"toc",(function(){return p})),r.d(n,"default",(function(){return s}));var a=r(3),t=r(7),i=(r(0),r(209)),o={title:"Submarine Spark Security Plugin"},c={unversionedId:"userDocs/submarine-security/spark-security/README",id:"version-0.6.0/userDocs/submarine-security/spark-security/README",isDocsHomePage:!1,title:"Submarine Spark Security Plugin",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/userDocs/submarine-security/spark-security/README.md",slug:"/userDocs/submarine-security/spark-security/README",permalink:"/docs/userDocs/submarine-security/spark-security/README",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/submarine-security/spark-security/README.md",version:"0.6.0",sidebar:"docs",previous:{title:"Tracking",permalink:"/docs/userDocs/submarine-sdk/tracking"},next:{title:"Building Submarine Spark Security Plugin",permalink:"/docs/userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin"}},p=[{value:"Build",id:"build",children:[]},{value:"Quick Start",id:"quick-start",children:[{value:"Installation",id:"installation",children:[]},{value:"Configurations",id:"configurations",children:[]}]}],u={toc:p};function s(e){var n=e.components,r=Object(t.a)(e,["components"]);return Object(i.b)("wrapper",Object(a.a)({},u,r,{components:n,mdxType:"MDXLayout"}),Object(i.b)("p",null,"ACL Management for Apache Spark SQL with Apache Ranger, enabling:"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Table/Column level authorization"),Object(i.b)("li",{parentName:"ul"},"Row level filtering"),Object(i.b)("li",{parentName:"ul"},"Data masking")),Object(i.b)("p",null,"Security is one of fundamental features for enterprise adoption. ",Object(i.b)("a",{parentName:"p",href:"https://ranger.apache.org"},"Apache Ranger\u2122")," offers many security plugins for many Hadoop ecosystem components,\nsuch as HDFS, Hive, HBase, Solr and Sqoop2. However, ",Object(i.b)("a",{parentName:"p",href:"http://spark.apache.org"},"Apache Spark\u2122")," is not counted in yet.\nWhen a secured HDFS cluster is used as a data warehouse accessed by various users and groups via different applications wrote by Spark and Hive,\nit is very difficult to guarantee data management in a consistent way.  Apache Spark users visit data warehouse only\nwith Storage based access controls offered by HDFS. This library enables Spark with SQL Standard Based Authorization. "),Object(i.b)("h2",{id:"build"},"Build"),Object(i.b)("p",null,"Please refer to the online documentation - ",Object(i.b)("a",{parentName:"p",href:"/docs/userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin"},"Building submarine spark security plguin")),Object(i.b)("h2",{id:"quick-start"},"Quick Start"),Object(i.b)("p",null,"Three steps to integrate Apache Spark and Apache Ranger."),Object(i.b)("h3",{id:"installation"},"Installation"),Object(i.b)("p",null,"Place the submarine-spark-security-","<","version",">",".jar into ",Object(i.b)("inlineCode",{parentName:"p"},"$SPARK_HOME/jars"),"."),Object(i.b)("h3",{id:"configurations"},"Configurations"),Object(i.b)("h4",{id:"settings-for-apache-ranger"},"Settings for Apache Ranger"),Object(i.b)("p",null,"Create ",Object(i.b)("inlineCode",{parentName:"p"},"ranger-spark-security.xml")," in ",Object(i.b)("inlineCode",{parentName:"p"},"$SPARK_HOME/conf")," and add the following configurations\nfor pointing to the right Apache Ranger admin server."),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-xml"},"\n<configuration>\n\n    <property>\n        <name>ranger.plugin.spark.policy.rest.url</name>\n        <value>ranger admin address like http://ranger-admin.org:6080</value>\n    </property>\n\n    <property>\n        <name>ranger.plugin.spark.service.name</name>\n        <value>a ranger hive service name</value>\n    </property>\n\n    <property>\n        <name>ranger.plugin.spark.policy.cache.dir</name>\n        <value>./a ranger hive service name/policycache</value>\n    </property>\n\n    <property>\n        <name>ranger.plugin.spark.policy.pollIntervalMs</name>\n        <value>5000</value>\n    </property>\n\n    <property>\n        <name>ranger.plugin.spark.policy.source.impl</name>\n        <value>org.apache.ranger.admin.client.RangerAdminRESTClient</value>\n    </property>\n\n</configuration>\n")),Object(i.b)("p",null,"Create ",Object(i.b)("inlineCode",{parentName:"p"},"ranger-spark-audit.xml")," in ",Object(i.b)("inlineCode",{parentName:"p"},"$SPARK_HOME/conf")," and add the following configurations\nto enable/disable auditing."),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-xml"},"<configuration>\n\n    <property>\n        <name>xasecure.audit.is.enabled</name>\n        <value>true</value>\n    </property>\n\n    <property>\n        <name>xasecure.audit.destination.db</name>\n        <value>false</value>\n    </property>\n\n    <property>\n        <name>xasecure.audit.destination.db.jdbc.driver</name>\n        <value>com.mysql.jdbc.Driver</value>\n    </property>\n\n    <property>\n        <name>xasecure.audit.destination.db.jdbc.url</name>\n        <value>jdbc:mysql://10.171.161.78/ranger</value>\n    </property>\n\n    <property>\n        <name>xasecure.audit.destination.db.password</name>\n        <value>rangeradmin</value>\n    </property>\n\n    <property>\n        <name>xasecure.audit.destination.db.user</name>\n        <value>rangeradmin</value>\n    </property>\n\n</configuration>\n\n")),Object(i.b)("h4",{id:"settings-for-apache-spark"},"Settings for Apache Spark"),Object(i.b)("p",null,"You can configure ",Object(i.b)("inlineCode",{parentName:"p"},"spark.sql.extensions")," with the ",Object(i.b)("inlineCode",{parentName:"p"},"*Extension")," we provided.\nFor example, ",Object(i.b)("inlineCode",{parentName:"p"},"spark.sql.extensions=org.apache.submarine.spark.security.api.RangerSparkAuthzExtension")),Object(i.b)("p",null,"Currently, you can set the following options to ",Object(i.b)("inlineCode",{parentName:"p"},"spark.sql.extensions")," to choose authorization w/ or w/o\nextra functions."),Object(i.b)("table",null,Object(i.b)("thead",{parentName:"table"},Object(i.b)("tr",{parentName:"thead"},Object(i.b)("th",{parentName:"tr",align:null},"option"),Object(i.b)("th",{parentName:"tr",align:null},"authorization"),Object(i.b)("th",{parentName:"tr",align:null},"row filtering"),Object(i.b)("th",{parentName:"tr",align:null},"data masking"))),Object(i.b)("tbody",{parentName:"table"},Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"org.apache.submarine.spark.security.api.RangerSparkAuthzExtension"),Object(i.b)("td",{parentName:"tr",align:null},"\u221a"),Object(i.b)("td",{parentName:"tr",align:null},"\xd7"),Object(i.b)("td",{parentName:"tr",align:null},"\xd7")),Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"org.apache.submarine.spark.security.api.RangerSparkSQLExtension"),Object(i.b)("td",{parentName:"tr",align:null},"\u221a"),Object(i.b)("td",{parentName:"tr",align:null},"\u221a"),Object(i.b)("td",{parentName:"tr",align:null},"\u221a")))))}s.isMDXComponent=!0},209:function(e,n,r){"use strict";r.d(n,"a",(function(){return l})),r.d(n,"b",(function(){return m}));var a=r(0),t=r.n(a);function i(e,n,r){return n in e?Object.defineProperty(e,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[n]=r,e}function o(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),r.push.apply(r,a)}return r}function c(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?o(Object(r),!0).forEach((function(n){i(e,n,r[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))}))}return e}function p(e,n){if(null==e)return{};var r,a,t=function(e,n){if(null==e)return{};var r,a,t={},i=Object.keys(e);for(a=0;a<i.length;a++)r=i[a],n.indexOf(r)>=0||(t[r]=e[r]);return t}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)r=i[a],n.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(t[r]=e[r])}return t}var u=t.a.createContext({}),s=function(e){var n=t.a.useContext(u),r=n;return e&&(r="function"==typeof e?e(n):c(c({},n),e)),r},l=function(e){var n=s(e.components);return t.a.createElement(u.Provider,{value:n},e.children)},b={inlineCode:"code",wrapper:function(e){var n=e.children;return t.a.createElement(t.a.Fragment,{},n)}},d=t.a.forwardRef((function(e,n){var r=e.components,a=e.mdxType,i=e.originalType,o=e.parentName,u=p(e,["components","mdxType","originalType","parentName"]),l=s(r),d=a,m=l["".concat(o,".").concat(d)]||l[d]||b[d]||i;return r?t.a.createElement(m,c(c({ref:n},u),{},{components:r})):t.a.createElement(m,c({ref:n},u))}));function m(e,n){var r=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var i=r.length,o=new Array(i);o[0]=d;var c={};for(var p in n)hasOwnProperty.call(n,p)&&(c[p]=n[p]);c.originalType=e,c.mdxType="string"==typeof e?e:a,o[1]=c;for(var u=2;u<i;u++)o[u]=r[u];return t.a.createElement.apply(null,o)}return t.a.createElement.apply(null,r)}d.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[105],{172:function(e,n,r){"use strict";r.r(n),r.d(n,"frontMatter",(function(){return o})),r.d(n,"metadata",(function(){return c})),r.d(n,"toc",(function(){return p})),r.d(n,"default",(function(){return s}));var a=r(3),t=r(7),i=(r(0),r(194)),o={title:"Submarine Spark Security Plugin"},c={unversionedId:"userDocs/submarine-security/spark-security/README",id:"version-0.6.0/userDocs/submarine-security/spark-security/README",isDocsHomePage:!1,title:"Submarine Spark Security Plugin",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/userDocs/submarine-security/spark-security/README.md",slug:"/userDocs/submarine-security/spark-security/README",permalink:"/docs/userDocs/submarine-security/spark-security/README",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/submarine-security/spark-security/README.md",version:"0.6.0",sidebar:"docs",previous:{title:"Tracking",permalink:"/docs/userDocs/submarine-sdk/tracking"},next:{title:"Building Submarine Spark Security Plugin",permalink:"/docs/userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin"}},p=[{value:"Build",id:"build",children:[]},{value:"Quick Start",id:"quick-start",children:[{value:"Installation",id:"installation",children:[]},{value:"Configurations",id:"configurations",children:[]}]}],u={toc:p};function s(e){var n=e.components,r=Object(t.a)(e,["components"]);return Object(i.b)("wrapper",Object(a.a)({},u,r,{components:n,mdxType:"MDXLayout"}),Object(i.b)("p",null,"ACL Management for Apache Spark SQL with Apache Ranger, enabling:"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Table/Column level authorization"),Object(i.b)("li",{parentName:"ul"},"Row level filtering"),Object(i.b)("li",{parentName:"ul"},"Data masking")),Object(i.b)("p",null,"Security is one of fundamental features for enterprise adoption. ",Object(i.b)("a",{parentName:"p",href:"https://ranger.apache.org"},"Apache Ranger\u2122")," offers many security plugins for many Hadoop ecosystem components,\nsuch as HDFS, Hive, HBase, Solr and Sqoop2. However, ",Object(i.b)("a",{parentName:"p",href:"http://spark.apache.org"},"Apache Spark\u2122")," is not counted in yet.\nWhen a secured HDFS cluster is used as a data warehouse accessed by various users and groups via different applications wrote by Spark and Hive,\nit is very difficult to guarantee data management in a consistent way.  Apache Spark users visit data warehouse only\nwith Storage based access controls offered by HDFS. This library enables Spark with SQL Standard Based Authorization. "),Object(i.b)("h2",{id:"build"},"Build"),Object(i.b)("p",null,"Please refer to the online documentation - ",Object(i.b)("a",{parentName:"p",href:"/docs/userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin"},"Building submarine spark security plguin")),Object(i.b)("h2",{id:"quick-start"},"Quick Start"),Object(i.b)("p",null,"Three steps to integrate Apache Spark and Apache Ranger."),Object(i.b)("h3",{id:"installation"},"Installation"),Object(i.b)("p",null,"Place the submarine-spark-security-","<","version",">",".jar into ",Object(i.b)("inlineCode",{parentName:"p"},"$SPARK_HOME/jars"),"."),Object(i.b)("h3",{id:"configurations"},"Configurations"),Object(i.b)("h4",{id:"settings-for-apache-ranger"},"Settings for Apache Ranger"),Object(i.b)("p",null,"Create ",Object(i.b)("inlineCode",{parentName:"p"},"ranger-spark-security.xml")," in ",Object(i.b)("inlineCode",{parentName:"p"},"$SPARK_HOME/conf")," and add the following configurations\nfor pointing to the right Apache Ranger admin server."),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-xml"},"\n<configuration>\n\n    <property>\n        <name>ranger.plugin.spark.policy.rest.url</name>\n        <value>ranger admin address like http://ranger-admin.org:6080</value>\n    </property>\n\n    <property>\n        <name>ranger.plugin.spark.service.name</name>\n        <value>a ranger hive service name</value>\n    </property>\n\n    <property>\n        <name>ranger.plugin.spark.policy.cache.dir</name>\n        <value>./a ranger hive service name/policycache</value>\n    </property>\n\n    <property>\n        <name>ranger.plugin.spark.policy.pollIntervalMs</name>\n        <value>5000</value>\n    </property>\n\n    <property>\n        <name>ranger.plugin.spark.policy.source.impl</name>\n        <value>org.apache.ranger.admin.client.RangerAdminRESTClient</value>\n    </property>\n\n</configuration>\n")),Object(i.b)("p",null,"Create ",Object(i.b)("inlineCode",{parentName:"p"},"ranger-spark-audit.xml")," in ",Object(i.b)("inlineCode",{parentName:"p"},"$SPARK_HOME/conf")," and add the following configurations\nto enable/disable auditing."),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-xml"},"<configuration>\n\n    <property>\n        <name>xasecure.audit.is.enabled</name>\n        <value>true</value>\n    </property>\n\n    <property>\n        <name>xasecure.audit.destination.db</name>\n        <value>false</value>\n    </property>\n\n    <property>\n        <name>xasecure.audit.destination.db.jdbc.driver</name>\n        <value>com.mysql.jdbc.Driver</value>\n    </property>\n\n    <property>\n        <name>xasecure.audit.destination.db.jdbc.url</name>\n        <value>jdbc:mysql://10.171.161.78/ranger</value>\n    </property>\n\n    <property>\n        <name>xasecure.audit.destination.db.password</name>\n        <value>rangeradmin</value>\n    </property>\n\n    <property>\n        <name>xasecure.audit.destination.db.user</name>\n        <value>rangeradmin</value>\n    </property>\n\n</configuration>\n\n")),Object(i.b)("h4",{id:"settings-for-apache-spark"},"Settings for Apache Spark"),Object(i.b)("p",null,"You can configure ",Object(i.b)("inlineCode",{parentName:"p"},"spark.sql.extensions")," with the ",Object(i.b)("inlineCode",{parentName:"p"},"*Extension")," we provided.\nFor example, ",Object(i.b)("inlineCode",{parentName:"p"},"spark.sql.extensions=org.apache.submarine.spark.security.api.RangerSparkAuthzExtension")),Object(i.b)("p",null,"Currently, you can set the following options to ",Object(i.b)("inlineCode",{parentName:"p"},"spark.sql.extensions")," to choose authorization w/ or w/o\nextra functions."),Object(i.b)("table",null,Object(i.b)("thead",{parentName:"table"},Object(i.b)("tr",{parentName:"thead"},Object(i.b)("th",{parentName:"tr",align:null},"option"),Object(i.b)("th",{parentName:"tr",align:null},"authorization"),Object(i.b)("th",{parentName:"tr",align:null},"row filtering"),Object(i.b)("th",{parentName:"tr",align:null},"data masking"))),Object(i.b)("tbody",{parentName:"table"},Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"org.apache.submarine.spark.security.api.RangerSparkAuthzExtension"),Object(i.b)("td",{parentName:"tr",align:null},"\u221a"),Object(i.b)("td",{parentName:"tr",align:null},"\xd7"),Object(i.b)("td",{parentName:"tr",align:null},"\xd7")),Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"org.apache.submarine.spark.security.api.RangerSparkSQLExtension"),Object(i.b)("td",{parentName:"tr",align:null},"\u221a"),Object(i.b)("td",{parentName:"tr",align:null},"\u221a"),Object(i.b)("td",{parentName:"tr",align:null},"\u221a")))))}s.isMDXComponent=!0},194:function(e,n,r){"use strict";r.d(n,"a",(function(){return l})),r.d(n,"b",(function(){return m}));var a=r(0),t=r.n(a);function i(e,n,r){return n in e?Object.defineProperty(e,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[n]=r,e}function o(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),r.push.apply(r,a)}return r}function c(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?o(Object(r),!0).forEach((function(n){i(e,n,r[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))}))}return e}function p(e,n){if(null==e)return{};var r,a,t=function(e,n){if(null==e)return{};var r,a,t={},i=Object.keys(e);for(a=0;a<i.length;a++)r=i[a],n.indexOf(r)>=0||(t[r]=e[r]);return t}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)r=i[a],n.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(t[r]=e[r])}return t}var u=t.a.createContext({}),s=function(e){var n=t.a.useContext(u),r=n;return e&&(r="function"==typeof e?e(n):c(c({},n),e)),r},l=function(e){var n=s(e.components);return t.a.createElement(u.Provider,{value:n},e.children)},b={inlineCode:"code",wrapper:function(e){var n=e.children;return t.a.createElement(t.a.Fragment,{},n)}},d=t.a.forwardRef((function(e,n){var r=e.components,a=e.mdxType,i=e.originalType,o=e.parentName,u=p(e,["components","mdxType","originalType","parentName"]),l=s(r),d=a,m=l["".concat(o,".").concat(d)]||l[d]||b[d]||i;return r?t.a.createElement(m,c(c({ref:n},u),{},{components:r})):t.a.createElement(m,c({ref:n},u))}));function m(e,n){var r=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var i=r.length,o=new Array(i);o[0]=d;var c={};for(var p in n)hasOwnProperty.call(n,p)&&(c[p]=n[p]);c.originalType=e,c.mdxType="string"==typeof e?e:a,o[1]=c;for(var u=2;u<i;u++)o[u]=r[u];return t.a.createElement.apply(null,o)}return t.a.createElement.apply(null,r)}d.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/d46271b0.c38c1297.js b/d46271b0.21db8d89.js
similarity index 96%
rename from d46271b0.c38c1297.js
rename to d46271b0.21db8d89.js
index a8b111a..21b5726 100644
--- a/d46271b0.c38c1297.js
+++ b/d46271b0.21db8d89.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[118],{185:function(e,r,t){"use strict";t.r(r),t.d(r,"frontMatter",(function(){return o})),t.d(r,"metadata",(function(){return c})),t.d(r,"toc",(function(){return u})),t.d(r,"default",(function(){return b}));var n=t(3),a=t(7),i=(t(0),t(209)),o={title:"How to Build Submarine"},c={unversionedId:"devDocs/BuildFromCode",id:"version-0.6.0/devDocs/BuildFromCode",isDocsHomePage:!1,title:"How to Build Submarine",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/devDocs/BuildFromCode.md",slug:"/devDocs/BuildFromCode",permalink:"/docs/devDocs/BuildFromCode",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/devDocs/BuildFromCode.md",version:"0.6.0",sidebar:"docs",previous:{title:"Dependencies for Submarine",permalink:"/docs/devDocs/Dependencies"},next:{title:"Development Guide",permalink:"/docs/devDocs/Development"}},u=[{value:"Prerequisites",id:"prerequisites",children:[]},{value:"Quick Start",id:"quick-start",children:[{value:"Build Your Custom Submarine Docker Images",id:"build-your-custom-submarine-docker-images",children:[]},{value:"Building source code / binary distribution",id:"building-source-code--binary-distribution",children:[]},{value:"Building source code / binary distribution with Maven Wrapper",id:"building-source-code--binary-distribution-with-maven-wrapper",children:[]}]}],l={toc:u};function b(e){var r=e.components,t=Object(a.a)(e,["components"]);return Object(i.b)("wrapper",Object(n.a)({},l,t,{components:r,mdxType:"MDXLayout"}),Object(i.b)("h2",{id:"prerequisites"},"Prerequisites"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"JDK 1.8"),Object(i.b)("li",{parentName:"ul"},"Maven 3.3 or later ( < 3.8.1 )"),Object(i.b)("li",{parentName:"ul"},"Docker")),Object(i.b)("h2",{id:"quick-start"},"Quick Start"),Object(i.b)("h3",{id:"build-your-custom-submarine-docker-images"},"Build Your Custom Submarine Docker Images"),Object(i.b)("p",null,"Submarine provides default Docker image in the release artifacts, sometimes you would like to do some modifications on the images. You can rebuild Docker image after you make changes."),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},"Note that you need to make sure the images built above can be accessed in k8s\nUsually this needs to rename and push to a proper Docker registry.")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"mvn clean package -DskipTests\n")),Object(i.b)("p",null,"Build submarine server image:"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"./dev-support/docker-images/submarine/build.sh\n")),Object(i.b)("p",null,"Build submarine database image:"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"./dev-support/docker-images/database/build.sh\n")),Object(i.b)("h3",{id:"building-source-code--binary-distribution"},"Building source code / binary distribution"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Checking releases for licenses")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"mvn clean org.apache.rat:apache-rat-plugin:check\n")),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Create binary distribution with default hadoop version")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"mvn clean package -DskipTests\n")),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Create binary distribution with hadoop-2.9.x version")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"mvn clean package -DskipTests -Phadoop-2.9\n")),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Create binary distribution with hadoop-2.10.x version")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"mvn clean package -DskipTests -Phadoop-2.10\n")),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Create binary distribution with hadoop-3.1.x version")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"mvn clean package -DskipTests -Phadoop-3.1\n")),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Create binary distribution with hadoop-3.2.x version")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"mvn clean package -DskipTests -Phadoop-3.2\n")),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Create source code distribution")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"mvn clean package -DskipTests -Psrc\n")),Object(i.b)("h3",{id:"building-source-code--binary-distribution-with-maven-wrapper"},"Building source code / binary distribution with Maven Wrapper"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Maven Wrapper (Optional): Maven Wrapper can help you avoid dependencies problem about Maven version.")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"# Setup Maven Wrapper (Maven 3.6.1)\nmvn -N io.takari:maven:0.7.7:wrapper -Dmaven=3.6.1\n\n# Check Maven Wrapper\n./mvnw -version\n\n# Replace 'mvn' with 'mvnw'. Example:\n./mvnw clean package -DskipTests\n")))}b.isMDXComponent=!0},209:function(e,r,t){"use strict";t.d(r,"a",(function(){return s})),t.d(r,"b",(function(){return m}));var n=t(0),a=t.n(n);function i(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function o(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function c(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?o(Object(t),!0).forEach((function(r){i(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):o(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}function u(e,r){if(null==e)return{};var t,n,a=function(e,r){if(null==e)return{};var t,n,a={},i=Object.keys(e);for(n=0;n<i.length;n++)t=i[n],r.indexOf(t)>=0||(a[t]=e[t]);return a}(e,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)t=i[n],r.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var l=a.a.createContext({}),b=function(e){var r=a.a.useContext(l),t=r;return e&&(t="function"==typeof e?e(r):c(c({},r),e)),t},s=function(e){var r=b(e.components);return a.a.createElement(l.Provider,{value:r},e.children)},p={inlineCode:"code",wrapper:function(e){var r=e.children;return a.a.createElement(a.a.Fragment,{},r)}},d=a.a.forwardRef((function(e,r){var t=e.components,n=e.mdxType,i=e.originalType,o=e.parentName,l=u(e,["components","mdxType","originalType","parentName"]),s=b(t),d=n,m=s["".concat(o,".").concat(d)]||s[d]||p[d]||i;return t?a.a.createElement(m,c(c({ref:r},l),{},{components:t})):a.a.createElement(m,c({ref:r},l))}));function m(e,r){var t=arguments,n=r&&r.mdxType;if("string"==typeof e||n){var i=t.length,o=new Array(i);o[0]=d;var c={};for(var u in r)hasOwnProperty.call(r,u)&&(c[u]=r[u]);c.originalType=e,c.mdxType="string"==typeof e?e:n,o[1]=c;for(var l=2;l<i;l++)o[l]=t[l];return a.a.createElement.apply(null,o)}return a.a.createElement.apply(null,t)}d.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[106],{173:function(e,r,t){"use strict";t.r(r),t.d(r,"frontMatter",(function(){return o})),t.d(r,"metadata",(function(){return c})),t.d(r,"toc",(function(){return u})),t.d(r,"default",(function(){return b}));var n=t(3),a=t(7),i=(t(0),t(194)),o={title:"How to Build Submarine"},c={unversionedId:"devDocs/BuildFromCode",id:"version-0.6.0/devDocs/BuildFromCode",isDocsHomePage:!1,title:"How to Build Submarine",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/devDocs/BuildFromCode.md",slug:"/devDocs/BuildFromCode",permalink:"/docs/devDocs/BuildFromCode",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/devDocs/BuildFromCode.md",version:"0.6.0",sidebar:"docs",previous:{title:"Dependencies for Submarine",permalink:"/docs/devDocs/Dependencies"},next:{title:"Development Guide",permalink:"/docs/devDocs/Development"}},u=[{value:"Prerequisites",id:"prerequisites",children:[]},{value:"Quick Start",id:"quick-start",children:[{value:"Build Your Custom Submarine Docker Images",id:"build-your-custom-submarine-docker-images",children:[]},{value:"Building source code / binary distribution",id:"building-source-code--binary-distribution",children:[]},{value:"Building source code / binary distribution with Maven Wrapper",id:"building-source-code--binary-distribution-with-maven-wrapper",children:[]}]}],l={toc:u};function b(e){var r=e.components,t=Object(a.a)(e,["components"]);return Object(i.b)("wrapper",Object(n.a)({},l,t,{components:r,mdxType:"MDXLayout"}),Object(i.b)("h2",{id:"prerequisites"},"Prerequisites"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"JDK 1.8"),Object(i.b)("li",{parentName:"ul"},"Maven 3.3 or later ( < 3.8.1 )"),Object(i.b)("li",{parentName:"ul"},"Docker")),Object(i.b)("h2",{id:"quick-start"},"Quick Start"),Object(i.b)("h3",{id:"build-your-custom-submarine-docker-images"},"Build Your Custom Submarine Docker Images"),Object(i.b)("p",null,"Submarine provides default Docker image in the release artifacts, sometimes you would like to do some modifications on the images. You can rebuild Docker image after you make changes."),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},"Note that you need to make sure the images built above can be accessed in k8s\nUsually this needs to rename and push to a proper Docker registry.")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"mvn clean package -DskipTests\n")),Object(i.b)("p",null,"Build submarine server image:"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"./dev-support/docker-images/submarine/build.sh\n")),Object(i.b)("p",null,"Build submarine database image:"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"./dev-support/docker-images/database/build.sh\n")),Object(i.b)("h3",{id:"building-source-code--binary-distribution"},"Building source code / binary distribution"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Checking releases for licenses")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"mvn clean org.apache.rat:apache-rat-plugin:check\n")),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Create binary distribution with default hadoop version")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"mvn clean package -DskipTests\n")),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Create binary distribution with hadoop-2.9.x version")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"mvn clean package -DskipTests -Phadoop-2.9\n")),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Create binary distribution with hadoop-2.10.x version")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"mvn clean package -DskipTests -Phadoop-2.10\n")),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Create binary distribution with hadoop-3.1.x version")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"mvn clean package -DskipTests -Phadoop-3.1\n")),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Create binary distribution with hadoop-3.2.x version")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"mvn clean package -DskipTests -Phadoop-3.2\n")),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Create source code distribution")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"mvn clean package -DskipTests -Psrc\n")),Object(i.b)("h3",{id:"building-source-code--binary-distribution-with-maven-wrapper"},"Building source code / binary distribution with Maven Wrapper"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Maven Wrapper (Optional): Maven Wrapper can help you avoid dependencies problem about Maven version.")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"# Setup Maven Wrapper (Maven 3.6.1)\nmvn -N io.takari:maven:0.7.7:wrapper -Dmaven=3.6.1\n\n# Check Maven Wrapper\n./mvnw -version\n\n# Replace 'mvn' with 'mvnw'. Example:\n./mvnw clean package -DskipTests\n")))}b.isMDXComponent=!0},194:function(e,r,t){"use strict";t.d(r,"a",(function(){return s})),t.d(r,"b",(function(){return m}));var n=t(0),a=t.n(n);function i(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function o(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function c(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?o(Object(t),!0).forEach((function(r){i(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):o(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}function u(e,r){if(null==e)return{};var t,n,a=function(e,r){if(null==e)return{};var t,n,a={},i=Object.keys(e);for(n=0;n<i.length;n++)t=i[n],r.indexOf(t)>=0||(a[t]=e[t]);return a}(e,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)t=i[n],r.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var l=a.a.createContext({}),b=function(e){var r=a.a.useContext(l),t=r;return e&&(t="function"==typeof e?e(r):c(c({},r),e)),t},s=function(e){var r=b(e.components);return a.a.createElement(l.Provider,{value:r},e.children)},p={inlineCode:"code",wrapper:function(e){var r=e.children;return a.a.createElement(a.a.Fragment,{},r)}},d=a.a.forwardRef((function(e,r){var t=e.components,n=e.mdxType,i=e.originalType,o=e.parentName,l=u(e,["components","mdxType","originalType","parentName"]),s=b(t),d=n,m=s["".concat(o,".").concat(d)]||s[d]||p[d]||i;return t?a.a.createElement(m,c(c({ref:r},l),{},{components:t})):a.a.createElement(m,c({ref:r},l))}));function m(e,r){var t=arguments,n=r&&r.mdxType;if("string"==typeof e||n){var i=t.length,o=new Array(i);o[0]=d;var c={};for(var u in r)hasOwnProperty.call(r,u)&&(c[u]=r[u]);c.originalType=e,c.mdxType="string"==typeof e?e:n,o[1]=c;for(var l=2;l<i;l++)o[l]=t[l];return a.a.createElement.apply(null,o)}return a.a.createElement.apply(null,t)}d.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/dd728e8e.80481620.js b/dd728e8e.0aaaef15.js
similarity index 93%
rename from dd728e8e.80481620.js
rename to dd728e8e.0aaaef15.js
index e2cbe9f..208d809 100644
--- a/dd728e8e.80481620.js
+++ b/dd728e8e.0aaaef15.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[119],{186:function(e,t,r){"use strict";r.r(t),r.d(t,"frontMatter",(function(){return c})),r.d(t,"metadata",(function(){return i})),r.d(t,"toc",(function(){return l})),r.d(t,"default",(function(){return p}));var n=r(3),a=r(7),o=(r(0),r(209)),c={},i={type:"mdx",permalink:"/releases/submarine-release-0.6.0",source:"@site/src/pages/releases/submarine-release-0.6.0.md"},l=[],u={toc:l};function p(e){var t=e.components,r=Object(a.a)(e,["components"]);return Object(o.b)("wrapper",Object(n.a)({},u,r,{components:t,mdxType:"MDXLayout"}),Object(o.b)("h1",{id:"apache-submarine-release-060"},"Apache Submarine Release 0.6.0"),Object(o.b)("p",null,"The Apache Submarine Community is pleased to announce the availability of the ",Object(o.b)("inlineCode",{parentName:"p"},"0.6.0")," release."),Object(o.b)("p",null,"The community put significant effort into improving Apache Submarine since the last release.\n248 patches for improvements and bug fixes. The highlighted features are as follows:"),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},"Support Tensorboard and mlflow in Experiment"),Object(o.b)("li",{parentName:"ul"},"Submarine model management"),Object(o.b)("li",{parentName:"ul"},"Submarine operator"),Object(o.b)("li",{parentName:"ul"},"Improve workbench UI/UX")),Object(o.b)("p",null,"We encourage to ",Object(o.b)("a",{parentName:"p",href:"/docs/download"},"download")," the latest release. Feedback through the ",Object(o.b)("a",{parentName:"p",href:"/docs/community/README"},"mailing lists")," is very welcome."),Object(o.b)("p",null,"You can visit ",Object(o.b)("a",{parentName:"p",href:"https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12348821&styleName=Html&projectId=12322824"},"issue tracker")," for full list of issues that are resolved."))}p.isMDXComponent=!0},209:function(e,t,r){"use strict";r.d(t,"a",(function(){return s})),r.d(t,"b",(function(){return f}));var n=r(0),a=r.n(n);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function c(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?c(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):c(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var u=a.a.createContext({}),p=function(e){var t=a.a.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},s=function(e){var t=p(e.components);return a.a.createElement(u.Provider,{value:t},e.children)},b={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},m=a.a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,c=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),s=p(r),m=n,f=s["".concat(c,".").concat(m)]||s[m]||b[m]||o;return r?a.a.createElement(f,i(i({ref:t},u),{},{components:r})):a.a.createElement(f,i({ref:t},u))}));function f(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,c=new Array(o);c[0]=m;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i.mdxType="string"==typeof e?e:n,c[1]=i;for(var u=2;u<o;u++)c[u]=r[u];return a.a.createElement.apply(null,c)}return a.a.createElement.apply(null,r)}m.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[107],{174:function(e,t,r){"use strict";r.r(t),r.d(t,"frontMatter",(function(){return c})),r.d(t,"metadata",(function(){return i})),r.d(t,"toc",(function(){return l})),r.d(t,"default",(function(){return p}));var n=r(3),a=r(7),o=(r(0),r(194)),c={},i={type:"mdx",permalink:"/releases/submarine-release-0.6.0",source:"@site/src/pages/releases/submarine-release-0.6.0.md"},l=[],u={toc:l};function p(e){var t=e.components,r=Object(a.a)(e,["components"]);return Object(o.b)("wrapper",Object(n.a)({},u,r,{components:t,mdxType:"MDXLayout"}),Object(o.b)("h1",{id:"apache-submarine-release-060"},"Apache Submarine Release 0.6.0"),Object(o.b)("p",null,"The Apache Submarine Community is pleased to announce the availability of the ",Object(o.b)("inlineCode",{parentName:"p"},"0.6.0")," release."),Object(o.b)("p",null,"The community put significant effort into improving Apache Submarine since the last release.\n248 patches for improvements and bug fixes. The highlighted features are as follows:"),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},"Support Tensorboard and mlflow in Experiment"),Object(o.b)("li",{parentName:"ul"},"Submarine model management"),Object(o.b)("li",{parentName:"ul"},"Submarine operator"),Object(o.b)("li",{parentName:"ul"},"Improve workbench UI/UX")),Object(o.b)("p",null,"We encourage to ",Object(o.b)("a",{parentName:"p",href:"/docs/download"},"download")," the latest release. Feedback through the ",Object(o.b)("a",{parentName:"p",href:"/docs/community/README"},"mailing lists")," is very welcome."),Object(o.b)("p",null,"You can visit ",Object(o.b)("a",{parentName:"p",href:"https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12348821&styleName=Html&projectId=12322824"},"issue tracker")," for full list of issues that are resolved."))}p.isMDXComponent=!0},194:function(e,t,r){"use strict";r.d(t,"a",(function(){return s})),r.d(t,"b",(function(){return f}));var n=r(0),a=r.n(n);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function c(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?c(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):c(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var u=a.a.createContext({}),p=function(e){var t=a.a.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},s=function(e){var t=p(e.components);return a.a.createElement(u.Provider,{value:t},e.children)},b={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},m=a.a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,c=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),s=p(r),m=n,f=s["".concat(c,".").concat(m)]||s[m]||b[m]||o;return r?a.a.createElement(f,i(i({ref:t},u),{},{components:r})):a.a.createElement(f,i({ref:t},u))}));function f(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,c=new Array(o);c[0]=m;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i.mdxType="string"==typeof e?e:n,c[1]=i;for(var u=2;u<o;u++)c[u]=r[u];return a.a.createElement.apply(null,c)}return a.a.createElement.apply(null,r)}m.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/docs/adminDocs/yarn/README/index.html b/docs/adminDocs/yarn/README/index.html
index 9c84dde..6187664 100644
--- a/docs/adminDocs/yarn/README/index.html
+++ b/docs/adminDocs/yarn/README/index.html
@@ -6,31 +6,31 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Running Submarine on YARN | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="0.6.0"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-0.6.0"><meta data-react-helmet="true" property="og:title" content="Running Submarine on YARN | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/adminDocs/yarn/README"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/adminDocs/yarn/README"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/58f10d9f.a5917f48.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/eb4979b3.bcf831ee.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/58f10d9f.87a860a5.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/eb4979b3.572bc7c2.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/">0.6.0</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/next/adminDocs/yarn/README">master 🏃</a></li><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/adminDocs/yarn/README">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/adminDocs/yarn/README">master 🏃</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/adminDocs/yarn/README">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/submarine-sdk/model-client">Model Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Security</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/submarine-security/spark-security/README">Submarine Spark Security Plugin</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin">Building Submarine Spark Security Plugin</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Administrator Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!" tabindex="0">Submarine on Yarn</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/adminDocs/yarn/README">Running Submarine on YARN</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/community/contributing">How To Contribute to Submarine</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/submarine-server/experimentSpec">Generic Expeiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: 0.6.0</span></div><header><h1 class="docTitle_Oumm">Running Submarine on YARN</h1></header><div class="markdown"><p>Submarine for YARN supports TensorFlow, PyTorch and MXNet framework. (Which is leveraging <a href="https://github.com/linkedin/TonY" target="_blank" rel="noopener noreferrer">TonY</a> created by Linkedin to run deep learning training jobs on YARN.</p><p>Submarine also supports GPU-on-YARN and Docker-on-YARN feature.</p><p>Submarine can run on Hadoop 2.7.3 or later version, if GPU-on-YARN or Docker-on-YARN feature is needed, newer Hadoop version is required, please refer to the next section about what Hadoop version to choose.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="hadoop-version"></a>Hadoop version<a class="hash-link" href="#hadoop-version" title="Direct link to heading">#</a></h2><p>Must:</p><ul><li>Apache Hadoop version newer than 2.7.3</li></ul><p>Optional:</p><ul><li>When you want to use GPU-on-YARN feature with Submarine, please make sure Hadoop is at least 2.10.0+ (or 3.1.0+), and follow <a href="https://hadoop.apache.org/docs/r2.10.0/hadoop-yarn/hadoop-yarn-site/UsingGpus.html" target="_blank" rel="noopener noreferrer">Enable GPU on YARN 2.10.0+</a> to enable GPU-on-YARN feature.</li><li>When you want to run training jobs with Docker container, please make sure Hadoop is at least 2.8.2, and follow <a href="https://hadoop.apache.org/docs/r2.8.2/hadoop-yarn/hadoop-yarn-site/DockerContainers.html" target="_blank" rel="noopener noreferrer">Enable Docker on YARN 2.8.2+</a> to enable Docker-on-YARN feature.</li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="submarine-yarn-runtime-guide"></a>Submarine YARN Runtime Guide<a class="hash-link" href="#submarine-yarn-runtime-guide" title="Direct link to heading">#</a></h2><p><a href="/docs/userDocs/yarn/YARNRuntimeGuide">YARN Runtime Guide</a> talk about how to use Submarine to run jobs on YARN, with Docker / without Docker.</p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/adminDocs/yarn/README.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/userDocs/others/tensorboard"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Tensorboard</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/devDocs/README"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Project Architecture »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#hadoop-version" class="table-of-contents__link">Hadoop version</a></li><li><a href="#submarine-yarn-runtime-guide" class="table-of-contents__link">Submarine YARN Runtime Guide</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/">0.6.0</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/next/">master 🏃</a></li><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/adminDocs/yarn/README">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/">master 🏃</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/adminDocs/yarn/README">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/submarine-sdk/model-client">Model Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Security</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/submarine-security/spark-security/README">Submarine Spark Security Plugin</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin">Building Submarine Spark Security Plugin</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Administrator Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!" tabindex="0">Submarine on Yarn</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/adminDocs/yarn/README">Running Submarine on YARN</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/community/contributing">How To Contribute to Submarine</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/submarine-server/experimentSpec">Generic Expeiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: 0.6.0</span></div><header><h1 class="docTitle_Oumm">Running Submarine on YARN</h1></header><div class="markdown"><p>Submarine for YARN supports TensorFlow, PyTorch and MXNet framework. (Which is leveraging <a href="https://github.com/linkedin/TonY" target="_blank" rel="noopener noreferrer">TonY</a> created by Linkedin to run deep learning training jobs on YARN.</p><p>Submarine also supports GPU-on-YARN and Docker-on-YARN feature.</p><p>Submarine can run on Hadoop 2.7.3 or later version, if GPU-on-YARN or Docker-on-YARN feature is needed, newer Hadoop version is required, please refer to the next section about what Hadoop version to choose.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="hadoop-version"></a>Hadoop version<a class="hash-link" href="#hadoop-version" title="Direct link to heading">#</a></h2><p>Must:</p><ul><li>Apache Hadoop version newer than 2.7.3</li></ul><p>Optional:</p><ul><li>When you want to use GPU-on-YARN feature with Submarine, please make sure Hadoop is at least 2.10.0+ (or 3.1.0+), and follow <a href="https://hadoop.apache.org/docs/r2.10.0/hadoop-yarn/hadoop-yarn-site/UsingGpus.html" target="_blank" rel="noopener noreferrer">Enable GPU on YARN 2.10.0+</a> to enable GPU-on-YARN feature.</li><li>When you want to run training jobs with Docker container, please make sure Hadoop is at least 2.8.2, and follow <a href="https://hadoop.apache.org/docs/r2.8.2/hadoop-yarn/hadoop-yarn-site/DockerContainers.html" target="_blank" rel="noopener noreferrer">Enable Docker on YARN 2.8.2+</a> to enable Docker-on-YARN feature.</li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="submarine-yarn-runtime-guide"></a>Submarine YARN Runtime Guide<a class="hash-link" href="#submarine-yarn-runtime-guide" title="Direct link to heading">#</a></h2><p><a href="/docs/userDocs/yarn/YARNRuntimeGuide">YARN Runtime Guide</a> talk about how to use Submarine to run jobs on YARN, with Docker / without Docker.</p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/adminDocs/yarn/README.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/userDocs/others/tensorboard"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Tensorboard</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/devDocs/README"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Project Architecture »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#hadoop-version" class="table-of-contents__link">Hadoop version</a></li><li><a href="#submarine-yarn-runtime-guide" class="table-of-contents__link">Submarine YARN Runtime Guide</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/58f10d9f.a5917f48.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/eb4979b3.bcf831ee.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/58f10d9f.87a860a5.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/eb4979b3.572bc7c2.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/adminDocs/yarn/TestAndTroubleshooting/index.html b/docs/adminDocs/yarn/TestAndTroubleshooting/index.html
index c0ae41e..ad1b407 100644
--- a/docs/adminDocs/yarn/TestAndTroubleshooting/index.html
+++ b/docs/adminDocs/yarn/TestAndTroubleshooting/index.html
@@ -6,20 +6,20 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Test and Troubleshooting | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="0.6.0"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-0.6.0"><meta data-react-helmet="true" property="og:title" content="Test and Troubleshooting | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/adminDocs/yarn/TestAndTroubleshooting"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/adminDocs/yarn/TestAndTroubleshooting"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/58f10d9f.a5917f48.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/a2231a2b.f8d8ceb4.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/58f10d9f.87a860a5.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/a2231a2b.e96e6cd5.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link" href="/docs/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/api/environment">API</a><a class="navbar__item navbar__link navbar__link--active" href="/docs/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/">0.6.0</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/next/adminDocs/yarn/TestAndTroubleshooting">master 🏃</a></li><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/adminDocs/yarn/TestAndTroubleshooting">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/adminDocs/yarn/TestAndTroubleshooting">master 🏃</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/adminDocs/yarn/TestAndTroubleshooting">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: 0.6.0</span></div><header><h1 class="docTitle_Oumm">Test and Troubleshooting</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="test-with-a-tensorflow-job"></a>Test with a tensorflow job<a class="hash-link" href="#test-with-a-tensorflow-job" title="Direct link to heading">#</a></h2><p>Distributed-shell + GPU + cgroup</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">..</span><span class="token plain">. </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> job run </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --env </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">DOCKER_JAVA_HOME</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">/opt/java </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --env </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">DOCKER_HADOOP_HDFS_HOME</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">/hadoop-current --name distributed-tf-gpu </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --env </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">YARN_CONTAINER_RUNTIME_DOCKER_CONTAINER_NETWORK</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">calico-network </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --worker_docker_image tf-1.13.1-gpu:0.0.1 </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --ps_docker_image tf-1.13.1-cpu:0.0.1 </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --input_path hdfs://</span><span class="token variable" style="color:rgb(191, 199, 213)">${dfs_name_service}</span><span class="token plain">/tmp/cifar-10-data </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --checkpoint_path hdfs://</span><span class="token variable" style="color:rgb(191, 199, 213)">${dfs_name_service}</span><span class="token plain">/user/hadoop/tf-distributed-checkpoint </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --num_ps </span><span class="token number" style="color:rgb(247, 140, 108)">0</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --ps_resources </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">memory</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">4G,vcores</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token number" style="color:rgb(247, 140, 108)">2</span><span class="token plain">,gpu</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token number" style="color:rgb(247, 140, 108)">0</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --ps_launch_cmd </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /test/cifar10_estimator/cifar10_main.py --data-dir=hdfs://</span><span class="token string variable" style="color:rgb(191, 199, 213)">${dfs_name_service}</span><span class="token string" style="color:rgb(195, 232, 141)">/tmp/cifar-10-data --job-dir=hdfs://</span><span class="token string variable" style="color:rgb(191, 199, 213)">${dfs_name_service}</span><span class="token string" style="color:rgb(195, 232, 141)">/tmp/cifar-10-jobdir --num-gpus=0&quot;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --worker_resources </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">memory</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">4G,vcores</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token number" style="color:rgb(247, 140, 108)">2</span><span class="token plain">,gpu</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token plain"> --verbose </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --num_workers </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --worker_launch_cmd </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /test/cifar10_estimator/cifar10_main.py --data-dir=hdfs://</span><span class="token string variable" style="color:rgb(191, 199, 213)">${dfs_name_service}</span><span class="token string" style="color:rgb(195, 232, 141)">/tmp/cifar-10-data --job-dir=hdfs://</span><span class="token string variable" style="color:rgb(191, 199, 213)">${dfs_name_service}</span><span class="token string" style="color:rgb(195, 232, 141)">/tmp/cifar-10-jobdir --train-steps=500 --eval-batch-size=16 --train-batch-size=16 --sync --num-gpus=1&quot;</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="issues"></a>Issues:<a class="hash-link" href="#issues" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="issue-1-fail-to-start-nodemanager-after-system-reboot"></a>Issue 1: Fail to start nodemanager after system reboot<a class="hash-link" href="#issue-1-fail-to-start-nodemanager-after-system-reboot" title="Direct link to heading">#</a></h3><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">2018-09-20 18:54:39,785 ERROR org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor: Failed to bootstrap configured resource subsystems!</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.ResourceHandlerException: Unexpected: Cannot create yarn cgroup Subsystem:cpu Mount points:/proc/mounts User:yarn Path:/sys/fs/cgroup/cpu,cpuacct/hadoop-yarn</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsHandlerImpl.initializePreMountedCGroupController(CGroupsHandlerImpl.java:425)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsHandlerImpl.initializeCGroupController(CGroupsHandlerImpl.java:377)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsCpuResourceHandlerImpl.bootstrap(CGroupsCpuResourceHandlerImpl.java:98)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsCpuResourceHandlerImpl.bootstrap(CGroupsCpuResourceHandlerImpl.java:87)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.ResourceHandlerChain.bootstrap(ResourceHandlerChain.java:58)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor.init(LinuxContainerExecutor.java:320)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.yarn.server.nodemanager.NodeManager.serviceInit(NodeManager.java:389)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.service.AbstractService.init(AbstractService.java:164)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.yarn.server.nodemanager.NodeManager.initAndStartNodeManager(NodeManager.java:929)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.yarn.server.nodemanager.NodeManager.main(NodeManager.java:997)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2018-09-20 18:54:39,789 INFO org.apache.hadoop.service.AbstractService: Service NodeManager failed in state INITED</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Solution: Grant user yarn the access to  <code>/sys/fs/cgroup/cpu,cpuacct</code>, which is the subfolder of cgroup mount destination.</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">chown :yarn -R /sys/fs/cgroup/cpu,cpuacct</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">chmod g+rwx -R /sys/fs/cgroup/cpu,cpuacct</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>If GPUs are used,the access to cgroup devices folder is neede as well</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">chown :yarn -R /sys/fs/cgroup/devices</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">chmod g+rwx -R /sys/fs/cgroup/devices</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="issue-2-container-executor-permission-denied"></a>Issue 2: container-executor permission denied<a class="hash-link" href="#issue-2-container-executor-permission-denied" title="Direct link to heading">#</a></h3><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">2018-09-21 09:36:26,102 WARN org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.privileged.PrivilegedOperationExecutor: IOException executing command:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">java.io.IOException: Cannot run program &quot;/etc/yarn/sbin/Linux-amd64-64/container-executor&quot;: error=13, Permission denied</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        at org.apache.hadoop.util.Shell.runCommand(Shell.java:938)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        at org.apache.hadoop.util.Shell.run(Shell.java:901)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:1213)</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Solution: The permission of <code>/etc/yarn/sbin/Linux-amd64-64/container-executor</code> should be 6050</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="issue-3:how-to-get-docker-service-log"></a>Issue 3:How to get docker service log<a class="hash-link" href="#issue-3:how-to-get-docker-service-log" title="Direct link to heading">#</a></h3><p>Solution: we can get docker log with the following command</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">journalctl -u docker</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="issue-4:docker-cant-remove-containers-with-errors-like-device-or-resource-busy"></a>Issue 4:docker can&#x27;t remove containers with errors like <code>device or resource busy</code><a class="hash-link" href="#issue-4:docker-cant-remove-containers-with-errors-like-device-or-resource-busy" title="Direct link to heading">#</a></h3><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">$ docker </span><span class="token function" style="color:rgb(130, 170, 255)">rm</span><span class="token plain"> 0bfafa146431</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Error response from daemon: Unable to remove filesystem </span><span class="token keyword" style="font-style:italic">for</span><span class="token plain"> 0bfafa146431771f6024dcb9775ef47f170edb2f1852f71916ba44209ca6120a: remove /app/docker/containers/0bfafa146431771f6024dcb9775ef47f170edb2f152f71916ba44209ca6120a/shm: device or resource busy</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Solution: to find which process leads to a <code>device or resource busy</code>, we can add a shell script, named <code>find-busy-mnt.sh</code></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token shebang important">#!/usr/bin/env bash</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link" href="/docs/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/api/environment">API</a><a class="navbar__item navbar__link navbar__link--active" href="/docs/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/">0.6.0</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/next/">master 🏃</a></li><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/adminDocs/yarn/TestAndTroubleshooting">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/">master 🏃</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/adminDocs/yarn/TestAndTroubleshooting">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: 0.6.0</span></div><header><h1 class="docTitle_Oumm">Test and Troubleshooting</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="test-with-a-tensorflow-job"></a>Test with a tensorflow job<a class="hash-link" href="#test-with-a-tensorflow-job" title="Direct link to heading">#</a></h2><p>Distributed-shell + GPU + cgroup</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">..</span><span class="token plain">. </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> job run </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --env </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">DOCKER_JAVA_HOME</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">/opt/java </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --env </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">DOCKER_HADOOP_HDFS_HOME</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">/hadoop-current --name distributed-tf-gpu </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --env </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">YARN_CONTAINER_RUNTIME_DOCKER_CONTAINER_NETWORK</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">calico-network </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --worker_docker_image tf-1.13.1-gpu:0.0.1 </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --ps_docker_image tf-1.13.1-cpu:0.0.1 </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --input_path hdfs://</span><span class="token variable" style="color:rgb(191, 199, 213)">${dfs_name_service}</span><span class="token plain">/tmp/cifar-10-data </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --checkpoint_path hdfs://</span><span class="token variable" style="color:rgb(191, 199, 213)">${dfs_name_service}</span><span class="token plain">/user/hadoop/tf-distributed-checkpoint </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --num_ps </span><span class="token number" style="color:rgb(247, 140, 108)">0</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --ps_resources </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">memory</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">4G,vcores</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token number" style="color:rgb(247, 140, 108)">2</span><span class="token plain">,gpu</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token number" style="color:rgb(247, 140, 108)">0</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --ps_launch_cmd </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /test/cifar10_estimator/cifar10_main.py --data-dir=hdfs://</span><span class="token string variable" style="color:rgb(191, 199, 213)">${dfs_name_service}</span><span class="token string" style="color:rgb(195, 232, 141)">/tmp/cifar-10-data --job-dir=hdfs://</span><span class="token string variable" style="color:rgb(191, 199, 213)">${dfs_name_service}</span><span class="token string" style="color:rgb(195, 232, 141)">/tmp/cifar-10-jobdir --num-gpus=0&quot;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --worker_resources </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">memory</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">4G,vcores</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token number" style="color:rgb(247, 140, 108)">2</span><span class="token plain">,gpu</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token plain"> --verbose </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --num_workers </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --worker_launch_cmd </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /test/cifar10_estimator/cifar10_main.py --data-dir=hdfs://</span><span class="token string variable" style="color:rgb(191, 199, 213)">${dfs_name_service}</span><span class="token string" style="color:rgb(195, 232, 141)">/tmp/cifar-10-data --job-dir=hdfs://</span><span class="token string variable" style="color:rgb(191, 199, 213)">${dfs_name_service}</span><span class="token string" style="color:rgb(195, 232, 141)">/tmp/cifar-10-jobdir --train-steps=500 --eval-batch-size=16 --train-batch-size=16 --sync --num-gpus=1&quot;</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="issues"></a>Issues:<a class="hash-link" href="#issues" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="issue-1-fail-to-start-nodemanager-after-system-reboot"></a>Issue 1: Fail to start nodemanager after system reboot<a class="hash-link" href="#issue-1-fail-to-start-nodemanager-after-system-reboot" title="Direct link to heading">#</a></h3><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">2018-09-20 18:54:39,785 ERROR org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor: Failed to bootstrap configured resource subsystems!</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.ResourceHandlerException: Unexpected: Cannot create yarn cgroup Subsystem:cpu Mount points:/proc/mounts User:yarn Path:/sys/fs/cgroup/cpu,cpuacct/hadoop-yarn</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsHandlerImpl.initializePreMountedCGroupController(CGroupsHandlerImpl.java:425)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsHandlerImpl.initializeCGroupController(CGroupsHandlerImpl.java:377)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsCpuResourceHandlerImpl.bootstrap(CGroupsCpuResourceHandlerImpl.java:98)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsCpuResourceHandlerImpl.bootstrap(CGroupsCpuResourceHandlerImpl.java:87)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.ResourceHandlerChain.bootstrap(ResourceHandlerChain.java:58)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor.init(LinuxContainerExecutor.java:320)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.yarn.server.nodemanager.NodeManager.serviceInit(NodeManager.java:389)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.service.AbstractService.init(AbstractService.java:164)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.yarn.server.nodemanager.NodeManager.initAndStartNodeManager(NodeManager.java:929)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.yarn.server.nodemanager.NodeManager.main(NodeManager.java:997)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2018-09-20 18:54:39,789 INFO org.apache.hadoop.service.AbstractService: Service NodeManager failed in state INITED</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Solution: Grant user yarn the access to  <code>/sys/fs/cgroup/cpu,cpuacct</code>, which is the subfolder of cgroup mount destination.</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">chown :yarn -R /sys/fs/cgroup/cpu,cpuacct</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">chmod g+rwx -R /sys/fs/cgroup/cpu,cpuacct</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>If GPUs are used,the access to cgroup devices folder is neede as well</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">chown :yarn -R /sys/fs/cgroup/devices</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">chmod g+rwx -R /sys/fs/cgroup/devices</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="issue-2-container-executor-permission-denied"></a>Issue 2: container-executor permission denied<a class="hash-link" href="#issue-2-container-executor-permission-denied" title="Direct link to heading">#</a></h3><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">2018-09-21 09:36:26,102 WARN org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.privileged.PrivilegedOperationExecutor: IOException executing command:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">java.io.IOException: Cannot run program &quot;/etc/yarn/sbin/Linux-amd64-64/container-executor&quot;: error=13, Permission denied</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        at org.apache.hadoop.util.Shell.runCommand(Shell.java:938)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        at org.apache.hadoop.util.Shell.run(Shell.java:901)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:1213)</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Solution: The permission of <code>/etc/yarn/sbin/Linux-amd64-64/container-executor</code> should be 6050</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="issue-3:how-to-get-docker-service-log"></a>Issue 3:How to get docker service log<a class="hash-link" href="#issue-3:how-to-get-docker-service-log" title="Direct link to heading">#</a></h3><p>Solution: we can get docker log with the following command</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">journalctl -u docker</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="issue-4:docker-cant-remove-containers-with-errors-like-device-or-resource-busy"></a>Issue 4:docker can&#x27;t remove containers with errors like <code>device or resource busy</code><a class="hash-link" href="#issue-4:docker-cant-remove-containers-with-errors-like-device-or-resource-busy" title="Direct link to heading">#</a></h3><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">$ docker </span><span class="token function" style="color:rgb(130, 170, 255)">rm</span><span class="token plain"> 0bfafa146431</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Error response from daemon: Unable to remove filesystem </span><span class="token keyword" style="font-style:italic">for</span><span class="token plain"> 0bfafa146431771f6024dcb9775ef47f170edb2f1852f71916ba44209ca6120a: remove /app/docker/containers/0bfafa146431771f6024dcb9775ef47f170edb2f152f71916ba44209ca6120a/shm: device or resource busy</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Solution: to find which process leads to a <code>device or resource busy</code>, we can add a shell script, named <code>find-busy-mnt.sh</code></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token shebang important">#!/usr/bin/env bash</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># A simple script to get information about mount points and pids and their</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># mount namespaces.</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token keyword" style="font-style:italic">if</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain"> </span><span class="token variable" style="color:rgb(191, 199, 213)">$#</span><span class="token plain"> -ne </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">;</span><span class="token keyword" style="font-style:italic">then</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">echo</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Usage: </span><span class="token string variable" style="color:rgb(191, 199, 213)">$0</span><span class="token string" style="color:rgb(195, 232, 141)"> &lt;devicemapper-device-id&gt;&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">exit</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token keyword" style="font-style:italic">fi</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">ID</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token variable" style="color:rgb(191, 199, 213)">$1</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
@@ -28,15 +28,15 @@
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">printf</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;PID</span><span class="token string entity" style="color:rgb(195, 232, 141)">\t</span><span class="token string" style="color:rgb(195, 232, 141)">NAME</span><span class="token string entity" style="color:rgb(195, 232, 141)">\t</span><span class="token string entity" style="color:rgb(195, 232, 141)">\t</span><span class="token string" style="color:rgb(195, 232, 141)">MNTNS</span><span class="token string entity" style="color:rgb(195, 232, 141)">\n</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">echo</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token string variable" style="color:rgb(191, 199, 213)">$MOUNTS</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">|</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">while</span><span class="token plain"> </span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">read</span><span class="token plain"> LINE</span><span class="token punctuation" style="color:rgb(199, 146, 234)">;</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">do</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">PID</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token variable" style="color:rgb(191, 199, 213)">`</span><span class="token variable builtin class-name" style="color:rgb(255, 203, 107)">echo</span><span class="token variable" style="color:rgb(191, 199, 213)"> $LINE </span><span class="token variable operator" style="color:rgb(137, 221, 255)">|</span><span class="token variable" style="color:rgb(191, 199, 213)"> </span><span class="token variable function" style="color:rgb(130, 170, 255)">cut</span><span class="token variable" style="color:rgb(191, 199, 213)"> -d </span><span class="token variable string" style="color:rgb(195, 232, 141)">&quot;:&quot;</span><span class="token variable" style="color:rgb(191, 199, 213)"> -f1 </span><span class="token variable operator" style="color:rgb(137, 221, 255)">|</span><span class="token variable" style="color:rgb(191, 199, 213)"> </span><span class="token variable function" style="color:rgb(130, 170, 255)">cut</span><span class="token variable" style="color:rgb(191, 199, 213)"> -d </span><span class="token variable string" style="color:rgb(195, 232, 141)">&quot;/&quot;</span><span class="token variable" style="color:rgb(191, 199, 213)"> -f3</span><span class="token variable" style="color:rgb(191, 199, 213)">`</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Ignore self and thread-self</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token keyword" style="font-style:italic">if</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token string variable" style="color:rgb(191, 199, 213)">$PID</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">==</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;self&quot;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">||</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token string variable" style="color:rgb(191, 199, 213)">$PID</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">==</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;thread-self&quot;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">;</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">then</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">continue</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token keyword" style="font-style:italic">fi</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">NAME</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token variable" style="color:rgb(191, 199, 213)">`</span><span class="token variable function" style="color:rgb(130, 170, 255)">ps</span><span class="token variable" style="color:rgb(191, 199, 213)"> -q $PID -o </span><span class="token variable assign-left variable" style="color:rgb(191, 199, 213)">comm</span><span class="token variable operator" style="color:rgb(137, 221, 255)">=</span><span class="token variable" style="color:rgb(191, 199, 213)">`</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">MNTNS</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token variable" style="color:rgb(191, 199, 213)">`</span><span class="token variable" style="color:rgb(191, 199, 213)">readlink /proc/$PID/ns/mnt</span><span class="token variable" style="color:rgb(191, 199, 213)">`</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">printf</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;%s</span><span class="token string entity" style="color:rgb(195, 232, 141)">\t</span><span class="token string" style="color:rgb(195, 232, 141)">%s</span><span class="token string entity" style="color:rgb(195, 232, 141)">\t</span><span class="token string entity" style="color:rgb(195, 232, 141)">\t</span><span class="token string" style="color:rgb(195, 232, 141)">%s</span><span class="token string entity" style="color:rgb(195, 232, 141)">\n</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token string variable" style="color:rgb(191, 199, 213)">$PID</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token string variable" style="color:rgb(191, 199, 213)">$NAME</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token string variable" style="color:rgb(191, 199, 213)">$MNTNS</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token keyword" style="font-style:italic">done</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Kill the process by pid, which is found by the script</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">$ </span><span class="token function" style="color:rgb(130, 170, 255)">chmod</span><span class="token plain"> +x find-busy-mnt.sh</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">./find-busy-mnt.sh 0bfafa146431771f6024dcb9775ef47f170edb2f152f71916ba44209ca6120a</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># PID   NAME            MNTNS</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># 5007  ntpd            mnt:[4026533598]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">$ </span><span class="token function" style="color:rgb(130, 170, 255)">kill</span><span class="token plain"> -9 </span><span class="token number" style="color:rgb(247, 140, 108)">5007</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="issue-5:yarn-failed-to-start-containers"></a>Issue 5:Yarn failed to start containers<a class="hash-link" href="#issue-5:yarn-failed-to-start-containers" title="Direct link to heading">#</a></h3><p>if the number of GPUs required by applications is larger than the number of GPUs in the cluster, there would be some containers can&#x27;t be created.</p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/adminDocs/yarn/TestAndTroubleshooting.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"></div><div class="pagination-nav__item pagination-nav__item--next"></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#test-with-a-tensorflow-job" class="table-of-contents__link">Test with a tensorflow job</a></li><li><a href="#issues" class="table-of-contents__link">Issues:</a><ul><li><a href="#issue-1-fail-to-start-nodemanager-after-system-reboot" class="table-of-contents__link">Issue 1: Fail to start nodemanager after system reboot</a></li><li><a href="#issue-2-container-executor-permission-denied" class="table-of-contents__link">Issue 2: container-executor permission denied</a></li><li><a href="#issue-3:how-to-get-docker-service-log" class="table-of-contents__link">Issue 3:How to get docker service log</a></li><li><a href="#issue-4:docker-cant-remove-containers-with-errors-like-device-or-resource-busy" class="table-of-contents__link">Issue 4:docker can&#39;t remove containers with errors like <code>device or resource busy</code></a></li><li><a href="#issue-5:yarn-failed-to-start-containers" class="table-of-contents__link">Issue 5:Yarn failed to start containers</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/58f10d9f.a5917f48.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/a2231a2b.f8d8ceb4.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/58f10d9f.87a860a5.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/a2231a2b.e96e6cd5.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/adminDocs/yarn/workbench/HowToRun/index.html b/docs/adminDocs/yarn/workbench/HowToRun/index.html
index f58da65..26265a0 100644
--- a/docs/adminDocs/yarn/workbench/HowToRun/index.html
+++ b/docs/adminDocs/yarn/workbench/HowToRun/index.html
@@ -6,20 +6,20 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">HowToRun | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="0.6.0"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-0.6.0"><meta data-react-helmet="true" property="og:title" content="HowToRun | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/adminDocs/yarn/workbench/HowToRun"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/adminDocs/yarn/workbench/HowToRun"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/58f10d9f.a5917f48.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/5f165a74.c53d41af.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/58f10d9f.87a860a5.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/5f165a74.93287d3d.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link" href="/docs/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/api/environment">API</a><a class="navbar__item navbar__link navbar__link--active" href="/docs/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/">0.6.0</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/next/adminDocs/yarn/workbench/HowToRun">master 🏃</a></li><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/adminDocs/yarn/workbench/HowToRun">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/adminDocs/yarn/workbench/HowToRun">master 🏃</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/adminDocs/yarn/workbench/HowToRun">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: 0.6.0</span></div><header><h1 class="docTitle_Oumm">HowToRun</h1></header><div class="markdown"><h1><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="how-to-run-submarine-workbench"></a>How To Run Submarine Workbench<a class="hash-link" href="#how-to-run-submarine-workbench" title="Direct link to heading">#</a></h1><p>We provide two methods to launch Submarine Workbench</p><ul><li>Method 1:  Run Submarine Workbench on docker</li><li>Method 2:  Run Submarine Workbench without docker</li></ul><h1><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="run-submarine-workbench-on-docker"></a>Run Submarine Workbench on docker<a class="hash-link" href="#run-submarine-workbench-on-docker" title="Direct link to heading">#</a></h1><p>By using the official images of Submarine, only a few docker commands are required to launch <strong>Submarine Workbench</strong>. The document includes information about how to launch the Submarine Workbench via the new docker images and the information about how to switch between different Submarine Workbench versions(version Vue &amp; version Angular).</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="two-versions-of-submarine-workbench"></a>Two versions of Submarine Workbench<a class="hash-link" href="#two-versions-of-submarine-workbench" title="Direct link to heading">#</a></h3><ol><li>Angular (default)</li><li>Vue (This is the old version, and it will be replaced by version Angular in the future.)</li></ol><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="warning-please-restart-a-new-incognito-window-when-you-switch-to-different-versions-of-submarine-workbench"></a>(WARNING: Please restart a new <strong>incognito window</strong> when you switch to different versions of Submarine Workbench)<a class="hash-link" href="#warning-please-restart-a-new-incognito-window-when-you-switch-to-different-versions-of-submarine-workbench" title="Direct link to heading">#</a></h4><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="launch-the-submarine-workbenchangular"></a>Launch the Submarine Workbench(Angular)<a class="hash-link" href="#launch-the-submarine-workbenchangular" title="Direct link to heading">#</a></h3><ul><li>It should be noted that since Submarine Workbench depends on the Submarine database, so you need to run the docker container of the Submarine database first.</li></ul><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">docker run -it -p 3306:3306 -d --name submarine-database -e MYSQL_ROOT_PASSWORD=password apache/submarine:database-&lt;REPLACE_VERSION&gt;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">docker run -it -p 8080:8080 -d --link=submarine-database:submarine-database --name submarine-server apache/submarine:server-&lt;REPLACE_VERSION&gt;</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><ul><li>The login page of Submarine Workbench will be shown in <code>http://127.0.0.1:8080</code>.</li></ul><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="check-the-data-in-the-submarine-database"></a>Check the data in the submarine-database<a class="hash-link" href="#check-the-data-in-the-submarine-database" title="Direct link to heading">#</a></h3><ul><li>Step1: Enter the submarine-database container</li></ul><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">docker exec -it submarine-database bash</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><ul><li>Step2: Enter MySQL database</li></ul><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">mysql -uroot -ppassword</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><ul><li>Step3: List the data in the table</li></ul><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">// list all databases</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">show databases;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link" href="/docs/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/api/environment">API</a><a class="navbar__item navbar__link navbar__link--active" href="/docs/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/">0.6.0</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/next/">master 🏃</a></li><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/adminDocs/yarn/workbench/HowToRun">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/">master 🏃</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/adminDocs/yarn/workbench/HowToRun">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: 0.6.0</span></div><header><h1 class="docTitle_Oumm">HowToRun</h1></header><div class="markdown"><h1><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="how-to-run-submarine-workbench"></a>How To Run Submarine Workbench<a class="hash-link" href="#how-to-run-submarine-workbench" title="Direct link to heading">#</a></h1><p>We provide two methods to launch Submarine Workbench</p><ul><li>Method 1:  Run Submarine Workbench on docker</li><li>Method 2:  Run Submarine Workbench without docker</li></ul><h1><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="run-submarine-workbench-on-docker"></a>Run Submarine Workbench on docker<a class="hash-link" href="#run-submarine-workbench-on-docker" title="Direct link to heading">#</a></h1><p>By using the official images of Submarine, only a few docker commands are required to launch <strong>Submarine Workbench</strong>. The document includes information about how to launch the Submarine Workbench via the new docker images and the information about how to switch between different Submarine Workbench versions(version Vue &amp; version Angular).</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="two-versions-of-submarine-workbench"></a>Two versions of Submarine Workbench<a class="hash-link" href="#two-versions-of-submarine-workbench" title="Direct link to heading">#</a></h3><ol><li>Angular (default)</li><li>Vue (This is the old version, and it will be replaced by version Angular in the future.)</li></ol><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="warning-please-restart-a-new-incognito-window-when-you-switch-to-different-versions-of-submarine-workbench"></a>(WARNING: Please restart a new <strong>incognito window</strong> when you switch to different versions of Submarine Workbench)<a class="hash-link" href="#warning-please-restart-a-new-incognito-window-when-you-switch-to-different-versions-of-submarine-workbench" title="Direct link to heading">#</a></h4><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="launch-the-submarine-workbenchangular"></a>Launch the Submarine Workbench(Angular)<a class="hash-link" href="#launch-the-submarine-workbenchangular" title="Direct link to heading">#</a></h3><ul><li>It should be noted that since Submarine Workbench depends on the Submarine database, so you need to run the docker container of the Submarine database first.</li></ul><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">docker run -it -p 3306:3306 -d --name submarine-database -e MYSQL_ROOT_PASSWORD=password apache/submarine:database-&lt;REPLACE_VERSION&gt;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">docker run -it -p 8080:8080 -d --link=submarine-database:submarine-database --name submarine-server apache/submarine:server-&lt;REPLACE_VERSION&gt;</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><ul><li>The login page of Submarine Workbench will be shown in <code>http://127.0.0.1:8080</code>.</li></ul><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="check-the-data-in-the-submarine-database"></a>Check the data in the submarine-database<a class="hash-link" href="#check-the-data-in-the-submarine-database" title="Direct link to heading">#</a></h3><ul><li>Step1: Enter the submarine-database container</li></ul><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">docker exec -it submarine-database bash</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><ul><li>Step2: Enter MySQL database</li></ul><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">mysql -uroot -ppassword</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><ul><li>Step3: List the data in the table</li></ul><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">// list all databases</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">show databases;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">// choose a database</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">use ${target_database};</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">// list all tables</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">show tables;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">// list the data in the table</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">select * from ${target_table};</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h1><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="run-submarine-workbench-without-docker"></a>Run Submarine Workbench without docker<a class="hash-link" href="#run-submarine-workbench-without-docker" title="Direct link to heading">#</a></h1><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="run-submarine-workbench"></a>Run Submarine Workbench<a class="hash-link" href="#run-submarine-workbench" title="Direct link to heading">#</a></h3><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">cd submarine</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">./bin/submarine-daemon.sh [start|stop|restart]</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>To start workbench server, you need to download MySQL jdbc jar and put it in the
@@ -27,15 +27,15 @@
 to get MySQL jar automatically.</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">cd submarine</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">./bin/submarine-daemon.sh start getMysqlJar</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="submarine-envsh"></a>submarine-env.sh<a class="hash-link" href="#submarine-envsh" title="Direct link to heading">#</a></h3><p><code>submarine-env.sh</code> is automatically executed each time the <code>submarine-daemon.sh</code> script is executed, so we can set the <code>submarine-daemon.sh</code> script and the environment variables in the <code>SubmarineServer</code> process via <code>submarine-env.sh</code>.</p><table><thead><tr><th>Name</th><th>Variable</th></tr></thead><tbody><tr><td>JAVA_HOME</td><td>Set your java home path, default is <code>java</code>.</td></tr><tr><td>SUBMARINE_JAVA_OPTS</td><td>Set the JAVA OPTS parameter when the Submarine Workbench process starts. If you need to debug the Submarine Workbench process, you can set it to <code>-agentlib:jdwp=transport=dt_socket, server=y,suspend=n,address=5005</code></td></tr><tr><td>SUBMARINE_MEM</td><td>Set the java memory parameter when the Submarine Workbench process starts.</td></tr><tr><td>MYSQL_JAR_URL</td><td>The customized URL to download MySQL jdbc jar.</td></tr><tr><td>MYSQL_VERSION</td><td>The version of MySQL jdbc jar to downloaded. The default value is 5.1.39. It&#x27;s used to generate the default value of MYSQL_JDBC_URL</td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="submarine-sitexml"></a>submarine-site.xml<a class="hash-link" href="#submarine-sitexml" title="Direct link to heading">#</a></h3><p><code>submarine-site.xml</code> is the configuration file for the entire <code>Submarine</code> system to run.</p><table><thead><tr><th>Name</th><th>Variable</th></tr></thead><tbody><tr><td>submarine.server.addr</td><td>Submarine server address, default is <code>0.0.0.0</code></td></tr><tr><td>submarine.server.port</td><td>Submarine server port, default <code>8080</code></td></tr><tr><td>submarine.ssl</td><td>Should SSL be used by the Submarine servers?, default <code>false</code></td></tr><tr><td>submarine.server.ssl.port</td><td>Server ssl port. (used when ssl property is set to true), default <code>8483</code></td></tr><tr><td>submarine.ssl.client.auth</td><td>Should client authentication be used for SSL connections?</td></tr><tr><td>submarine.ssl.keystore.path</td><td>Path to keystore relative to Submarine configuration directory</td></tr><tr><td>submarine.ssl.keystore.type</td><td>The format of the given keystore (e.g. JKS or PKCS12)</td></tr><tr><td>submarine.ssl.keystore.password</td><td>Keystore password. Can be obfuscated by the Jetty Password tool</td></tr><tr><td>submarine.ssl.key.manager.password</td><td>Key Manager password. Defaults to keystore password. Can be obfuscated.</td></tr><tr><td>submarine.ssl.truststore.path</td><td>Path to truststore relative to Submarine configuration directory. Defaults to the keystore path</td></tr><tr><td>submarine.ssl.truststore.type</td><td>The format of the given truststore (e.g. JKS or PKCS12). Defaults to the same type as the keystore type</td></tr><tr><td>submarine.ssl.truststore.password</td><td>Truststore password. Can be obfuscated by the Jetty Password tool. Defaults to the keystore password</td></tr><tr><td>workbench.web.war</td><td>Submarine Workbench web war file path.</td></tr></tbody></table></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/adminDocs/yarn/workbench/HowToRun.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"></div><div class="pagination-nav__item pagination-nav__item--next"></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#two-versions-of-submarine-workbench" class="table-of-contents__link">Two versions of Submarine Workbench</a></li><li><a href="#launch-the-submarine-workbenchangular" class="table-of-contents__link">Launch the Submarine Workbench(Angular)</a></li><li><a href="#check-the-data-in-the-submarine-database" class="table-of-contents__link">Check the data in the submarine-database</a></li><li><a href="#run-submarine-workbench" class="table-of-contents__link">Run Submarine Workbench</a></li><li><a href="#submarine-envsh" class="table-of-contents__link">submarine-env.sh</a></li><li><a href="#submarine-sitexml" class="table-of-contents__link">submarine-site.xml</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/58f10d9f.a5917f48.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/5f165a74.c53d41af.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/58f10d9f.87a860a5.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/5f165a74.93287d3d.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/adminDocs/yarn/workbench/README.zh-CN/index.html b/docs/adminDocs/yarn/workbench/README.zh-CN/index.html
index cfbdc9c..8be3bf8 100644
--- a/docs/adminDocs/yarn/workbench/README.zh-CN/index.html
+++ b/docs/adminDocs/yarn/workbench/README.zh-CN/index.html
@@ -6,31 +6,31 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">README.zh-CN | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="0.6.0"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-0.6.0"><meta data-react-helmet="true" property="og:title" content="README.zh-CN | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/adminDocs/yarn/workbench/README.zh-CN"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/adminDocs/yarn/workbench/README.zh-CN"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/58f10d9f.a5917f48.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/6088480f.50a8af32.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/58f10d9f.87a860a5.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/6088480f.91f560f0.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link" href="/docs/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/api/environment">API</a><a class="navbar__item navbar__link navbar__link--active" href="/docs/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/">0.6.0</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/next/adminDocs/yarn/workbench/README.zh-CN">master 🏃</a></li><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/adminDocs/yarn/workbench/README.zh-CN">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/adminDocs/yarn/workbench/README.zh-CN">master 🏃</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/adminDocs/yarn/workbench/README.zh-CN">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: 0.6.0</span></div><header><h1 class="docTitle_Oumm">README.zh-CN</h1></header><div class="markdown"><p><a href="/docs/adminDocs/yarn/workbench/README">English</a> | 简体中文</p><h1><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="submarine-workbench-introduction"></a>Submarine Workbench Introduction<a class="hash-link" href="#submarine-workbench-introduction" title="Direct link to heading">#</a></h1><p><code>Submarine Workbench</code> 是为数据科学家设计的 WEB 系统。数据科学家可以通过 <code>Submarine Workbench</code> 进行交互式的访问 <code>Notebook</code>,提交/管理 Job,管理模型,创建模型训练工作流,访问数据集等。</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="register"></a>Register<a class="hash-link" href="#register" title="Direct link to heading">#</a></h2><p>每个需要使用 Submarine 进行机器学习算法开发的用户,都可以登录 <code>Submarine Workbench</code> 的 WEB 首页,在首页上,点击注册链接,填写用户名、注册邮箱和密码就可以完成注册,但此时用户状态为 <code>等待审核</code> 状态。</p><p>管理员在  <code>Submarine Workbench</code> 中接收到用户的注册请求后,设置用户的操作权限,所属机构部门和分配资源,设置用户状态为 <code>审核通过</code> 后,用户才可以登录 Submarine Workbench。</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="login"></a>Login<a class="hash-link" href="#login" title="Direct link to heading">#</a></h2><p>每个 Submarine 的用户在 <code>Login</code> 页面中输入用户名和密码,登录到  <code>Submarine Workbench</code> 的首页 <code>Home</code>。</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="home"></a>Home<a class="hash-link" href="#home" title="Direct link to heading">#</a></h2><p>在 <code>Submarine Workbench</code> 的 <code>Home</code> 首页中,顶层通过四个图表显示了用户的资源的使用情况和任务执行的情况。</p><p>在 <code>Quick Start</code> 列表中,显示了 Workbench 中最常使用的功能链接,方便用户可以快速的进行工作。</p><p>在 <code>Open Recent</code> 列表中,显示了用户最近使用过的九个项目,方便你快速的进行工作。</p><p>在 <code>What‘s New?</code> 列表中,显示了 Submarine 最新发布的一些功能特性和项目信息,方便你了解 Submarine 项目的最新进展。</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="workspace"></a>Workspace<a class="hash-link" href="#workspace" title="Direct link to heading">#</a></h2><p>Workspace 主要有五个 Tab 页组成,每个 Tab 页的标题中显示了各自项目的总数。</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="project"></a>Project<a class="hash-link" href="#project" title="Direct link to heading">#</a></h3><p>在 Project 页面中,以卡片的方式显示了用户自己创建的所有 Project。</p><p><img alt="image-20191007161424534" src="/assets/images/workspace-project-8d6fed3c330676f04875f8afe44b59d7.png"></p><p>每个 Project 卡片由以下部分内容组成:</p><ol><li><strong>Project 类型</strong>:目前 Submarine 支持 <code>Notebook</code>、<code>Python</code>、<code>R</code>、<code>Scala</code>、<code>Tensorflow</code> 和 <code>PyTorch</code> 这六种类型的机器学习算法框架和开发语言,在项目卡片中以对应的图标进行标识。</li><li><strong>Project Tags</strong>:用户可以为每个 Project 打上不同的 <code>Tag</code> 标签,方便查找和管理。</li><li><strong>Github/Gitlab 集成</strong>:Submarine Workbench 与 <code>Github</code>/<code>Gitlab</code> 进行了系统集成,每个 Project 都可以在 Workbench 中进行 <code>Watch</code>、<code>Star</code>、<code>Frok</code> 和 <code>Comment</code> 操作。<ul><li><strong>Watch</strong>:[TODO]</li><li><strong>Star</strong>:[TODO]</li><li><strong>Fork</strong>:[TODO]</li><li><strong>Comment</strong>:用户可以在项目中进行评论</li></ul></li><li><strong>Edit</strong>:用户通过双击项目或者点击 <code>Edit</code> 按钮,可以在 <code>Notebook</code> 中打开项目,进行算法开发等操作。</li><li><strong>Download</strong>:用户通过点击 <code>Download</code> 按钮,将项目打包下载到本地。</li><li><strong>Setting</strong>:编辑项目信息,例如项目的名字,简介,分享级别和权限。</li><li><strong>Delete</strong>:删除项目中所有包含的文件。</li></ol><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="add-new-project"></a>Add New Project<a class="hash-link" href="#add-new-project" title="Direct link to heading">#</a></h4><p>在项目页面中点击 <code>Add New Project</code> 按钮,将会显示出创建项目的引导页面,只需要三个步骤就可以创建一个新的项目。</p><p>第一步:在 <strong>Base Information</strong> 步骤中填写项目名称、项目简介。</p><p><img alt="image-20191007171638338" src="/assets/images/workspace-project-step1-24bdac8d1ecdfeb14efeab0ba5019716.png"></p><ul><li><p><strong>Visibility</strong>: 设置项目对外的可见级别</p><ul><li><strong>Private</strong>: (默认)设置为私有项目,不对外公开项目中包含的所有文件,但是可以在 <strong>Notebook</strong> 中将项目的执行结果单独设置公开,方便其他人查看项目的可视化报告。</li><li><strong>Team</strong>: 设置为团队项目,在团队选择框中选择团队的名称,团队的其他成员可以根据设置的权限访问这个项目。</li><li><strong>Public</strong>: 设置为公开项目,<strong>Workbench</strong> 中的所有用户都可以通过搜索查看到这个项目。</li></ul></li><li><p><strong>Permission</strong>: 设置项目对外的访问权限,只有将项目的 <strong>Visibility</strong> 设置为 <strong>Team</strong> 或 <strong>Public</strong> 的时候,才会出现权限设置界面。</p><ul><li><p><strong>Can View</strong></p><p>当项目的 <strong>Visibility</strong> 设置为 <strong>Team</strong> 时,团队中其他成员都只能<strong>查看</strong>这个项目的文件。</p><p>当项目的 Visibility 设置为 <strong>Public</strong> 时,<strong>Workbench</strong> 中其他成员都只能<strong>查看</strong>这个项目的文件。</p></li><li><p><strong>Can Edit</strong></p><p>当项目的 <strong>Visibility</strong> 设置为 <strong>Team</strong> 时,团队中其他成员都可以<strong>查看</strong>、<strong>编辑</strong>这个项目的文件。</p><p>当项目的 <strong>Visibility</strong> 设置为 <strong>Public</strong> 时,<strong>Workbench</strong> 中其他成员都可以<strong>查看</strong>、<strong>编辑</strong>这个项目的文件。</p></li><li><p><strong>Can Execute</strong></p><p>当项目的 <strong>Visibility</strong> 设置为 <strong>Team</strong> 时,团队中其他成员都可以<strong>查看</strong>、<strong>编辑</strong>、<strong>执行</strong>这个项目的文件。</p><p>当项目的 <strong>Visibility</strong> 设置为 <strong>Public</strong> 时,<strong>Workbench</strong> 中其他成员都可以<strong>查看</strong>、<strong>编辑</strong>、<strong>执行</strong>这个项目的文件。</p></li></ul></li></ul><p>第二步:在 <strong>Initial Project</strong> 步骤中,<strong>Workbench</strong> 提供了四种项目初始化的方式</p><ul><li><p><strong>Template</strong>: <strong>Workbench</strong> 内置了几种不同开发语言和算法框架的项目模版,你可以选择任何一种模版初始化你的项目,无需做任何修改就可以直接在 <strong>Notebook</strong> 中执行,特别适合新手进行快速的体验。</p><p><img alt="image-20191007184749193" src="/assets/images/workspace-project-step2-template-bec4a76922361fa150df6bffceffbb15.png"></p></li><li><p><strong>Blank</strong>:创建一个空白的项目,稍后,我们可以通过在 <strong>Notebook</strong> 中手工添加项目的文件</p><p><img alt="image-20191007184811389" src="/assets/images/workspace-project-step2-blank-8a6b9d97a33106329fbfe53920bc40c7.png"></p></li><li><p><strong>Upload</strong>: 通过上传 <strong>notebook</strong> 格式的文件来初始化你的项目,<strong>notebook</strong> 格式兼容 <strong>Jupyter Notebook</strong> 和 <strong>Zeppelin Notebook</strong> 文件格式。</p><p><img alt="image-20191007184825531" src="/assets/images/workspace-project-step2-upload-feb2db0271833adeb422990ca5aa43ba.png"></p></li><li><p><strong>Git Repo</strong>: 在你的 <strong>Github</strong>/<strong>Gitlab</strong> 账号中 <strong>Fork</strong> 一个仓库中的文件内容来初始化项目。</p><p><img alt="image-20191007184840989" src="/assets/images/workspace-project-step2-git-8431a483307851cd987d2a02264a8ee7.png"></p></li></ul><p>第三步:预览项目中的所包含的文件</p><p><img alt="image-20191007191205660" src="/assets/images/workspace-project-step3-34283e0a7051d38359a20311745f8aa6.png"></p><ul><li><strong>Save</strong>: 将项目保存到 Workspace 中。</li><li><strong>Open In Notebook</strong>: 将项目保存到 <strong>Workspace</strong> 中,并用 <strong>Notebook</strong> 打开项目。</li></ul><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="release"></a>Release<a class="hash-link" href="#release" title="Direct link to heading">#</a></h3><p>[TODO]</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="training"></a>Training<a class="hash-link" href="#training" title="Direct link to heading">#</a></h3><p>[TODO]</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="team"></a>Team<a class="hash-link" href="#team" title="Direct link to heading">#</a></h3><p>[TODO]</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="shared"></a>Shared<a class="hash-link" href="#shared" title="Direct link to heading">#</a></h3><p>[TODO]</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="interpreters"></a>Interpreters<a class="hash-link" href="#interpreters" title="Direct link to heading">#</a></h2><p>[TODO]</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="job"></a>Job<a class="hash-link" href="#job" title="Direct link to heading">#</a></h2><p>[TODO]</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="data"></a>Data<a class="hash-link" href="#data" title="Direct link to heading">#</a></h2><p>[TODO]</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="model"></a>Model<a class="hash-link" href="#model" title="Direct link to heading">#</a></h2><p>[TODO]</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="manager"></a>Manager<a class="hash-link" href="#manager" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="user"></a>User<a class="hash-link" href="#user" title="Direct link to heading">#</a></h3><p>[TODO]</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="team-1"></a>Team<a class="hash-link" href="#team-1" title="Direct link to heading">#</a></h3><p>[TODO]</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="data-dict"></a>Data Dict<a class="hash-link" href="#data-dict" title="Direct link to heading">#</a></h3><p>[TODO]</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="department"></a>Department<a class="hash-link" href="#department" title="Direct link to heading">#</a></h3><p>[TODO]</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="how-to-run-workbench"></a>How to run workbench<a class="hash-link" href="#how-to-run-workbench" title="Direct link to heading">#</a></h2><p><a href="/docs/adminDocs/yarn/workbench/HowToRun">How To Run Submarine Workbench Guide</a></p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/adminDocs/yarn/workbench/README.zh-CN.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"></div><div class="pagination-nav__item pagination-nav__item--next"></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#register" class="table-of-contents__link">Register</a></li><li><a href="#login" class="table-of-contents__link">Login</a></li><li><a href="#home" class="table-of-contents__link">Home</a></li><li><a href="#workspace" class="table-of-contents__link">Workspace</a><ul><li><a href="#project" class="table-of-contents__link">Project</a></li><li><a href="#release" class="table-of-contents__link">Release</a></li><li><a href="#training" class="table-of-contents__link">Training</a></li><li><a href="#team" class="table-of-contents__link">Team</a></li><li><a href="#shared" class="table-of-contents__link">Shared</a></li></ul></li><li><a href="#interpreters" class="table-of-contents__link">Interpreters</a></li><li><a href="#job" class="table-of-contents__link">Job</a></li><li><a href="#data" class="table-of-contents__link">Data</a></li><li><a href="#model" class="table-of-contents__link">Model</a></li><li><a href="#manager" class="table-of-contents__link">Manager</a><ul><li><a href="#user" class="table-of-contents__link">User</a></li><li><a href="#team-1" class="table-of-contents__link">Team</a></li><li><a href="#data-dict" class="table-of-contents__link">Data Dict</a></li><li><a href="#department" class="table-of-contents__link">Department</a></li></ul></li><li><a href="#how-to-run-workbench" class="table-of-contents__link">How to run workbench</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link" href="/docs/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/api/environment">API</a><a class="navbar__item navbar__link navbar__link--active" href="/docs/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/">0.6.0</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/next/">master 🏃</a></li><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/adminDocs/yarn/workbench/README.zh-CN">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/">master 🏃</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/adminDocs/yarn/workbench/README.zh-CN">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: 0.6.0</span></div><header><h1 class="docTitle_Oumm">README.zh-CN</h1></header><div class="markdown"><p><a href="/docs/adminDocs/yarn/workbench/README">English</a> | 简体中文</p><h1><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="submarine-workbench-introduction"></a>Submarine Workbench Introduction<a class="hash-link" href="#submarine-workbench-introduction" title="Direct link to heading">#</a></h1><p><code>Submarine Workbench</code> 是为数据科学家设计的 WEB 系统。数据科学家可以通过 <code>Submarine Workbench</code> 进行交互式的访问 <code>Notebook</code>,提交/管理 Job,管理模型,创建模型训练工作流,访问数据集等。</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="register"></a>Register<a class="hash-link" href="#register" title="Direct link to heading">#</a></h2><p>每个需要使用 Submarine 进行机器学习算法开发的用户,都可以登录 <code>Submarine Workbench</code> 的 WEB 首页,在首页上,点击注册链接,填写用户名、注册邮箱和密码就可以完成注册,但此时用户状态为 <code>等待审核</code> 状态。</p><p>管理员在  <code>Submarine Workbench</code> 中接收到用户的注册请求后,设置用户的操作权限,所属机构部门和分配资源,设置用户状态为 <code>审核通过</code> 后,用户才可以登录 Submarine Workbench。</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="login"></a>Login<a class="hash-link" href="#login" title="Direct link to heading">#</a></h2><p>每个 Submarine 的用户在 <code>Login</code> 页面中输入用户名和密码,登录到  <code>Submarine Workbench</code> 的首页 <code>Home</code>。</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="home"></a>Home<a class="hash-link" href="#home" title="Direct link to heading">#</a></h2><p>在 <code>Submarine Workbench</code> 的 <code>Home</code> 首页中,顶层通过四个图表显示了用户的资源的使用情况和任务执行的情况。</p><p>在 <code>Quick Start</code> 列表中,显示了 Workbench 中最常使用的功能链接,方便用户可以快速的进行工作。</p><p>在 <code>Open Recent</code> 列表中,显示了用户最近使用过的九个项目,方便你快速的进行工作。</p><p>在 <code>What‘s New?</code> 列表中,显示了 Submarine 最新发布的一些功能特性和项目信息,方便你了解 Submarine 项目的最新进展。</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="workspace"></a>Workspace<a class="hash-link" href="#workspace" title="Direct link to heading">#</a></h2><p>Workspace 主要有五个 Tab 页组成,每个 Tab 页的标题中显示了各自项目的总数。</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="project"></a>Project<a class="hash-link" href="#project" title="Direct link to heading">#</a></h3><p>在 Project 页面中,以卡片的方式显示了用户自己创建的所有 Project。</p><p><img alt="image-20191007161424534" src="/assets/images/workspace-project-8d6fed3c330676f04875f8afe44b59d7.png"></p><p>每个 Project 卡片由以下部分内容组成:</p><ol><li><strong>Project 类型</strong>:目前 Submarine 支持 <code>Notebook</code>、<code>Python</code>、<code>R</code>、<code>Scala</code>、<code>Tensorflow</code> 和 <code>PyTorch</code> 这六种类型的机器学习算法框架和开发语言,在项目卡片中以对应的图标进行标识。</li><li><strong>Project Tags</strong>:用户可以为每个 Project 打上不同的 <code>Tag</code> 标签,方便查找和管理。</li><li><strong>Github/Gitlab 集成</strong>:Submarine Workbench 与 <code>Github</code>/<code>Gitlab</code> 进行了系统集成,每个 Project 都可以在 Workbench 中进行 <code>Watch</code>、<code>Star</code>、<code>Frok</code> 和 <code>Comment</code> 操作。<ul><li><strong>Watch</strong>:[TODO]</li><li><strong>Star</strong>:[TODO]</li><li><strong>Fork</strong>:[TODO]</li><li><strong>Comment</strong>:用户可以在项目中进行评论</li></ul></li><li><strong>Edit</strong>:用户通过双击项目或者点击 <code>Edit</code> 按钮,可以在 <code>Notebook</code> 中打开项目,进行算法开发等操作。</li><li><strong>Download</strong>:用户通过点击 <code>Download</code> 按钮,将项目打包下载到本地。</li><li><strong>Setting</strong>:编辑项目信息,例如项目的名字,简介,分享级别和权限。</li><li><strong>Delete</strong>:删除项目中所有包含的文件。</li></ol><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="add-new-project"></a>Add New Project<a class="hash-link" href="#add-new-project" title="Direct link to heading">#</a></h4><p>在项目页面中点击 <code>Add New Project</code> 按钮,将会显示出创建项目的引导页面,只需要三个步骤就可以创建一个新的项目。</p><p>第一步:在 <strong>Base Information</strong> 步骤中填写项目名称、项目简介。</p><p><img alt="image-20191007171638338" src="/assets/images/workspace-project-step1-24bdac8d1ecdfeb14efeab0ba5019716.png"></p><ul><li><p><strong>Visibility</strong>: 设置项目对外的可见级别</p><ul><li><strong>Private</strong>: (默认)设置为私有项目,不对外公开项目中包含的所有文件,但是可以在 <strong>Notebook</strong> 中将项目的执行结果单独设置公开,方便其他人查看项目的可视化报告。</li><li><strong>Team</strong>: 设置为团队项目,在团队选择框中选择团队的名称,团队的其他成员可以根据设置的权限访问这个项目。</li><li><strong>Public</strong>: 设置为公开项目,<strong>Workbench</strong> 中的所有用户都可以通过搜索查看到这个项目。</li></ul></li><li><p><strong>Permission</strong>: 设置项目对外的访问权限,只有将项目的 <strong>Visibility</strong> 设置为 <strong>Team</strong> 或 <strong>Public</strong> 的时候,才会出现权限设置界面。</p><ul><li><p><strong>Can View</strong></p><p>当项目的 <strong>Visibility</strong> 设置为 <strong>Team</strong> 时,团队中其他成员都只能<strong>查看</strong>这个项目的文件。</p><p>当项目的 Visibility 设置为 <strong>Public</strong> 时,<strong>Workbench</strong> 中其他成员都只能<strong>查看</strong>这个项目的文件。</p></li><li><p><strong>Can Edit</strong></p><p>当项目的 <strong>Visibility</strong> 设置为 <strong>Team</strong> 时,团队中其他成员都可以<strong>查看</strong>、<strong>编辑</strong>这个项目的文件。</p><p>当项目的 <strong>Visibility</strong> 设置为 <strong>Public</strong> 时,<strong>Workbench</strong> 中其他成员都可以<strong>查看</strong>、<strong>编辑</strong>这个项目的文件。</p></li><li><p><strong>Can Execute</strong></p><p>当项目的 <strong>Visibility</strong> 设置为 <strong>Team</strong> 时,团队中其他成员都可以<strong>查看</strong>、<strong>编辑</strong>、<strong>执行</strong>这个项目的文件。</p><p>当项目的 <strong>Visibility</strong> 设置为 <strong>Public</strong> 时,<strong>Workbench</strong> 中其他成员都可以<strong>查看</strong>、<strong>编辑</strong>、<strong>执行</strong>这个项目的文件。</p></li></ul></li></ul><p>第二步:在 <strong>Initial Project</strong> 步骤中,<strong>Workbench</strong> 提供了四种项目初始化的方式</p><ul><li><p><strong>Template</strong>: <strong>Workbench</strong> 内置了几种不同开发语言和算法框架的项目模版,你可以选择任何一种模版初始化你的项目,无需做任何修改就可以直接在 <strong>Notebook</strong> 中执行,特别适合新手进行快速的体验。</p><p><img alt="image-20191007184749193" src="/assets/images/workspace-project-step2-template-bec4a76922361fa150df6bffceffbb15.png"></p></li><li><p><strong>Blank</strong>:创建一个空白的项目,稍后,我们可以通过在 <strong>Notebook</strong> 中手工添加项目的文件</p><p><img alt="image-20191007184811389" src="/assets/images/workspace-project-step2-blank-8a6b9d97a33106329fbfe53920bc40c7.png"></p></li><li><p><strong>Upload</strong>: 通过上传 <strong>notebook</strong> 格式的文件来初始化你的项目,<strong>notebook</strong> 格式兼容 <strong>Jupyter Notebook</strong> 和 <strong>Zeppelin Notebook</strong> 文件格式。</p><p><img alt="image-20191007184825531" src="/assets/images/workspace-project-step2-upload-feb2db0271833adeb422990ca5aa43ba.png"></p></li><li><p><strong>Git Repo</strong>: 在你的 <strong>Github</strong>/<strong>Gitlab</strong> 账号中 <strong>Fork</strong> 一个仓库中的文件内容来初始化项目。</p><p><img alt="image-20191007184840989" src="/assets/images/workspace-project-step2-git-8431a483307851cd987d2a02264a8ee7.png"></p></li></ul><p>第三步:预览项目中的所包含的文件</p><p><img alt="image-20191007191205660" src="/assets/images/workspace-project-step3-34283e0a7051d38359a20311745f8aa6.png"></p><ul><li><strong>Save</strong>: 将项目保存到 Workspace 中。</li><li><strong>Open In Notebook</strong>: 将项目保存到 <strong>Workspace</strong> 中,并用 <strong>Notebook</strong> 打开项目。</li></ul><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="release"></a>Release<a class="hash-link" href="#release" title="Direct link to heading">#</a></h3><p>[TODO]</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="training"></a>Training<a class="hash-link" href="#training" title="Direct link to heading">#</a></h3><p>[TODO]</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="team"></a>Team<a class="hash-link" href="#team" title="Direct link to heading">#</a></h3><p>[TODO]</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="shared"></a>Shared<a class="hash-link" href="#shared" title="Direct link to heading">#</a></h3><p>[TODO]</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="interpreters"></a>Interpreters<a class="hash-link" href="#interpreters" title="Direct link to heading">#</a></h2><p>[TODO]</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="job"></a>Job<a class="hash-link" href="#job" title="Direct link to heading">#</a></h2><p>[TODO]</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="data"></a>Data<a class="hash-link" href="#data" title="Direct link to heading">#</a></h2><p>[TODO]</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="model"></a>Model<a class="hash-link" href="#model" title="Direct link to heading">#</a></h2><p>[TODO]</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="manager"></a>Manager<a class="hash-link" href="#manager" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="user"></a>User<a class="hash-link" href="#user" title="Direct link to heading">#</a></h3><p>[TODO]</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="team-1"></a>Team<a class="hash-link" href="#team-1" title="Direct link to heading">#</a></h3><p>[TODO]</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="data-dict"></a>Data Dict<a class="hash-link" href="#data-dict" title="Direct link to heading">#</a></h3><p>[TODO]</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="department"></a>Department<a class="hash-link" href="#department" title="Direct link to heading">#</a></h3><p>[TODO]</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="how-to-run-workbench"></a>How to run workbench<a class="hash-link" href="#how-to-run-workbench" title="Direct link to heading">#</a></h2><p><a href="/docs/adminDocs/yarn/workbench/HowToRun">How To Run Submarine Workbench Guide</a></p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/adminDocs/yarn/workbench/README.zh-CN.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"></div><div class="pagination-nav__item pagination-nav__item--next"></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#register" class="table-of-contents__link">Register</a></li><li><a href="#login" class="table-of-contents__link">Login</a></li><li><a href="#home" class="table-of-contents__link">Home</a></li><li><a href="#workspace" class="table-of-contents__link">Workspace</a><ul><li><a href="#project" class="table-of-contents__link">Project</a></li><li><a href="#release" class="table-of-contents__link">Release</a></li><li><a href="#training" class="table-of-contents__link">Training</a></li><li><a href="#team" class="table-of-contents__link">Team</a></li><li><a href="#shared" class="table-of-contents__link">Shared</a></li></ul></li><li><a href="#interpreters" class="table-of-contents__link">Interpreters</a></li><li><a href="#job" class="table-of-contents__link">Job</a></li><li><a href="#data" class="table-of-contents__link">Data</a></li><li><a href="#model" class="table-of-contents__link">Model</a></li><li><a href="#manager" class="table-of-contents__link">Manager</a><ul><li><a href="#user" class="table-of-contents__link">User</a></li><li><a href="#team-1" class="table-of-contents__link">Team</a></li><li><a href="#data-dict" class="table-of-contents__link">Data Dict</a></li><li><a href="#department" class="table-of-contents__link">Department</a></li></ul></li><li><a href="#how-to-run-workbench" class="table-of-contents__link">How to run workbench</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/58f10d9f.a5917f48.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/6088480f.50a8af32.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/58f10d9f.87a860a5.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/6088480f.91f560f0.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/adminDocs/yarn/workbench/README/index.html b/docs/adminDocs/yarn/workbench/README/index.html
index 9af0cbe..9b5a7e4 100644
--- a/docs/adminDocs/yarn/workbench/README/index.html
+++ b/docs/adminDocs/yarn/workbench/README/index.html
@@ -6,32 +6,32 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">README | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="0.6.0"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-0.6.0"><meta data-react-helmet="true" property="og:title" content="README | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/adminDocs/yarn/workbench/README"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/adminDocs/yarn/workbench/README"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/58f10d9f.a5917f48.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/ab5e246a.53576ccb.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/58f10d9f.87a860a5.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/ab5e246a.e8b70818.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link" href="/docs/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/api/environment">API</a><a class="navbar__item navbar__link navbar__link--active" href="/docs/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/">0.6.0</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/next/adminDocs/yarn/workbench/README">master 🏃</a></li><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/adminDocs/yarn/workbench/README">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/adminDocs/yarn/workbench/README">master 🏃</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/adminDocs/yarn/workbench/README">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: 0.6.0</span></div><header><h1 class="docTitle_Oumm">README</h1></header><div class="markdown"><p>English | <a href="/docs/adminDocs/yarn/workbench/README.zh-CN">简体中文</a></p><h1><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="submarine-workbench-introduction"></a>Submarine Workbench Introduction<a class="hash-link" href="#submarine-workbench-introduction" title="Direct link to heading">#</a></h1><p>Submarine Workbench is a WEB system for data scientists.
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link" href="/docs/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/api/environment">API</a><a class="navbar__item navbar__link navbar__link--active" href="/docs/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/">0.6.0</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/next/">master 🏃</a></li><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/adminDocs/yarn/workbench/README">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/">master 🏃</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/adminDocs/yarn/workbench/README">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: 0.6.0</span></div><header><h1 class="docTitle_Oumm">README</h1></header><div class="markdown"><p>English | <a href="/docs/adminDocs/yarn/workbench/README.zh-CN">简体中文</a></p><h1><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="submarine-workbench-introduction"></a>Submarine Workbench Introduction<a class="hash-link" href="#submarine-workbench-introduction" title="Direct link to heading">#</a></h1><p>Submarine Workbench is a WEB system for data scientists.
 Data scientists can interactively access notebooks, submit/manage jobs, manage models, create model training workflows, access data sets, and more through Submarine Workbench.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="register"></a>Register<a class="hash-link" href="#register" title="Direct link to heading">#</a></h2><p>Everyone who needs to use Submarine for machine learning algorithm development can log in to Submarine Workbench&#x27;s WEB homepage. On the homepage, click the registration link, fill in the user name, email address and password to register the user. At this time, the user status is <code>waiting for approval</code> status.</p><p>After receiving the registration request from the user in Submarine Workbench, the administrator sets the operation authority according to the user&#x27;s needs, sets the user&#x27;s organization and allocates resources, and sets the user status to <code>pass the audit</code>. The user can log in to the Submarine Workbench. Different users have different permission.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="login"></a>Login<a class="hash-link" href="#login" title="Direct link to heading">#</a></h2><p>Each Submarine user logs in to the Home page of Submarine Workbench by entering their username and password on the Login page.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="home"></a>Home<a class="hash-link" href="#home" title="Direct link to heading">#</a></h2><p>In the Submarine Workbench Home page, the top level shows the user&#x27;s resource usage and task execution through four charts.</p><p>In the <code>Quick Start</code> list, the most commonly used feature links in the Workbench are displayed so that users can work quickly.</p><p>In the <code>Open Recent</code> list, there are nine items that the user has used recently, so you can work quickly.</p><p>At <code>What&#x27;s New?</code> In the list, some of the latest features and project information released by Submarine are displayed to help you understand the latest developments in the Submarine project.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="workspace"></a>Workspace<a class="hash-link" href="#workspace" title="Direct link to heading">#</a></h2><p>Workspace consists primarily of five tab pages, with the total number of items in each tab page&#x27;s title.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="project"></a>Project<a class="hash-link" href="#project" title="Direct link to heading">#</a></h3><p>In the Project page, all the projects created by the user themselves are displayed as cards.</p><p><img alt="image-20191007161424534" src="/assets/images/workspace-project-8d6fed3c330676f04875f8afe44b59d7.png"></p><p>Each Project card consists of the following sections:</p><ol><li><strong>Project Type</strong>:Submarine currently supports six types of machine learning algorithm frameworks and development languages: <code>Notebook</code>, <code>Python</code>, <code>R</code>, <code>Scala</code>, <code>Tensorflow</code>, and <code>PyTorch</code>, which are identified by corresponding icons in the project card.</li><li><strong>Project Tags</strong>:Users can tag each Project with different tags for easy searching and management.</li><li><strong>Github/Gitlab integrated</strong>:Submarine Workbench is system integrated with <code>Github</code>/<code>Gitlab</code>, and each Project can perform <code>Watch</code>, <code>Star</code>, <code>Fork</code>, and <code>Comment </code>operations in Workbench.<ul><li><strong>Watch</strong>:[TODO]</li><li><strong>Star</strong>:[TODO]</li><li><strong>Fork</strong>:[TODO]</li><li><strong>Comment</strong>:Users can comment on the project.</li></ul></li><li><strong>Edit</strong>:Users can open projects in <strong>Notebook</strong> and perform algorithm development by double-clicking on the project or by clicking the <strong>Edit</strong> button.</li><li><strong>Download</strong>:The user downloads the project package locally by clicking the <strong>Download</strong> button.</li><li><strong>Setting</strong>:Edit project information such as project name, profile, visibility level and permissions.</li><li><strong>Delete</strong>:Delete the project and all included files.</li></ol><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="add-new-project"></a>Add New Project<a class="hash-link" href="#add-new-project" title="Direct link to heading">#</a></h4><p>Clicking the <strong>Add New Project</strong> button on the project page will display the guide page for creating the project, and you can create a new project in just three steps.</p><p><strong>Step 1</strong>: Fill in the project name and project description in the <strong>Base Information</strong> step.</p><p><img alt="image-20191007171638338" src="/assets/images/workspace-project-step1-24bdac8d1ecdfeb14efeab0ba5019716.png"></p><ul><li><p><strong>Visibility</strong>: Set the visibility level of the item externally</p><ul><li><strong>Private</strong>: (Default) Set to private project, and all the files included in the project are not publicly displayed. but the execution result of the project can be individually set and exposed in Notebook, so that others can view the visual report of the project.</li><li><strong>Team</strong>: Set to team project, select the team name in the team selection box, and other members of the team can access the project according to the set permissions.</li><li><strong>Public</strong>: Set to public project, all users in Workbench can view this project through search.</li></ul></li><li><p><strong>Permission</strong>: Set the external access rights of the project. The permission setting interface will appear only when the <strong>Visibility</strong> of the project is set to <strong>Team</strong> or <strong>Public</strong>.</p><ul><li><p><strong>Can View</strong></p><p>When the project&#x27;s <strong>Visibility</strong> is set to <strong>Team</strong>, other members of the team can <strong>only view</strong> the files for this project.</p><p>When the project&#x27;s <strong>Visibility</strong> is set to <strong>Public</strong>, other members of the Workbench can <strong>only view</strong> the files for this project.</p></li><li><p><strong>Can Edit</strong></p><p>When the project&#x27;s <strong>Visibility</strong> is set to <strong>Team</strong>, other members of the team can <strong>view</strong> and <strong>edit</strong> the files for this project.</p><p>When the project&#x27;s <strong>Visibility</strong> is set to <strong>Public</strong>, other members of the Workbench can <strong>view</strong> and <strong>edit</strong> the files for this project.</p></li><li><p><strong>Can Execute</strong></p><p>When the project&#x27;s <strong>Visibility</strong> is set to <strong>Team</strong>, other members of the team can <strong>view</strong>, <strong>edit</strong>, and <strong>execute</strong> the project&#x27;s files.</p><p>When the project&#x27;s <strong>Visibility</strong> is set to <strong>Public</strong>, other members of the Workbench can <strong>view</strong>, <strong>edit</strong>, and <strong>execute</strong> the project&#x27;s files.</p></li></ul></li></ul><p><strong>Step 2</strong>: In the Initial Project step, Workbench provides four ways to initialize the project.</p><ul><li><p><strong>Template</strong>: Workbench Project templates with several different development languages and algorithm frameworks are built in. You can choose any template to initialize your project and you can execute it directly in Notebook without any modification. It is especially suitable for novices to experience quickly.</p><p><img alt="image-20191007184749193" src="/assets/images/workspace-project-step2-template-bec4a76922361fa150df6bffceffbb15.png"></p></li><li><p><strong>Blank</strong>:Create a blank project, and later we can manually add the project&#x27;s file in Notebook</p><p><img alt="image-20191007184811389" src="/assets/images/workspace-project-step2-blank-8a6b9d97a33106329fbfe53920bc40c7.png"></p></li><li><p><strong>Upload</strong>: Initialize your project by uploading a file in notebook format that is compatible with the <strong>Jupyter Notebook</strong> and <strong>Zeppelin Notebook</strong> file formats.</p><p><img alt="image-20191007184825531" src="/assets/images/workspace-project-step2-upload-feb2db0271833adeb422990ca5aa43ba.png"></p></li><li><p><strong>Git Repo</strong>: Fork a file in the repository to initialize the project in your <strong>Github</strong>/<strong>Gitlab</strong> account.</p><p><img alt="image-20191007184840989" src="/assets/images/workspace-project-step2-git-8431a483307851cd987d2a02264a8ee7.png"></p></li></ul><p><strong>Step 3</strong>:Preview the included files in the project</p><p><img alt="image-20191007191205660" src="/assets/images/workspace-project-step3-34283e0a7051d38359a20311745f8aa6.png"></p><ul><li><strong>Save</strong>: Save the project to Workspace.</li><li><strong>Open In Notebook</strong>: Save the project to Workspace and open the project with Notebook.</li></ul><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="release"></a>Release<a class="hash-link" href="#release" title="Direct link to heading">#</a></h3><p>[TODO]</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="training"></a>Training<a class="hash-link" href="#training" title="Direct link to heading">#</a></h3><p>[TODO]</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="team"></a>Team<a class="hash-link" href="#team" title="Direct link to heading">#</a></h3><p>[TODO]</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="shared"></a>Shared<a class="hash-link" href="#shared" title="Direct link to heading">#</a></h3><p>[TODO]</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="interpreters"></a>Interpreters<a class="hash-link" href="#interpreters" title="Direct link to heading">#</a></h2><p>[TODO]</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="job"></a>Job<a class="hash-link" href="#job" title="Direct link to heading">#</a></h2><p>[TODO]</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="data"></a>Data<a class="hash-link" href="#data" title="Direct link to heading">#</a></h2><p>[TODO]</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="model"></a>Model<a class="hash-link" href="#model" title="Direct link to heading">#</a></h2><p>[TODO]</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="manager"></a>Manager<a class="hash-link" href="#manager" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="user"></a>User<a class="hash-link" href="#user" title="Direct link to heading">#</a></h3><p>[TODO]</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="team-1"></a>Team<a class="hash-link" href="#team-1" title="Direct link to heading">#</a></h3><p>[TODO]</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="data-dict"></a>Data Dict<a class="hash-link" href="#data-dict" title="Direct link to heading">#</a></h3><p>[TODO]</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="department"></a>Department<a class="hash-link" href="#department" title="Direct link to heading">#</a></h3><p>[TODO]</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="how-to-run-workbench"></a>How to run workbench<a class="hash-link" href="#how-to-run-workbench" title="Direct link to heading">#</a></h2><p><a href="/docs/adminDocs/yarn/workbench/HowToRun">How To Run Submarine Workbench Guide</a></p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/adminDocs/yarn/workbench/README.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"></div><div class="pagination-nav__item pagination-nav__item--next"></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#register" class="table-of-contents__link">Register</a></li><li><a href="#login" class="table-of-contents__link">Login</a></li><li><a href="#home" class="table-of-contents__link">Home</a></li><li><a href="#workspace" class="table-of-contents__link">Workspace</a><ul><li><a href="#project" class="table-of-contents__link">Project</a></li><li><a href="#release" class="table-of-contents__link">Release</a></li><li><a href="#training" class="table-of-contents__link">Training</a></li><li><a href="#team" class="table-of-contents__link">Team</a></li><li><a href="#shared" class="table-of-contents__link">Shared</a></li></ul></li><li><a href="#interpreters" class="table-of-contents__link">Interpreters</a></li><li><a href="#job" class="table-of-contents__link">Job</a></li><li><a href="#data" class="table-of-contents__link">Data</a></li><li><a href="#model" class="table-of-contents__link">Model</a></li><li><a href="#manager" class="table-of-contents__link">Manager</a><ul><li><a href="#user" class="table-of-contents__link">User</a></li><li><a href="#team-1" class="table-of-contents__link">Team</a></li><li><a href="#data-dict" class="table-of-contents__link">Data Dict</a></li><li><a href="#department" class="table-of-contents__link">Department</a></li></ul></li><li><a href="#how-to-run-workbench" class="table-of-contents__link">How to run workbench</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/58f10d9f.a5917f48.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/ab5e246a.53576ccb.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/58f10d9f.87a860a5.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/ab5e246a.e8b70818.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/adminDocs/yarn/workbench/notebook/setup-jupyter/index.html b/docs/adminDocs/yarn/workbench/notebook/setup-jupyter/index.html
index 70ad8d4..1b63d90 100644
--- a/docs/adminDocs/yarn/workbench/notebook/setup-jupyter/index.html
+++ b/docs/adminDocs/yarn/workbench/notebook/setup-jupyter/index.html
@@ -6,35 +6,35 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">setup-jupyter | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="0.6.0"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-0.6.0"><meta data-react-helmet="true" property="og:title" content="setup-jupyter | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/adminDocs/yarn/workbench/notebook/setup-jupyter"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/adminDocs/yarn/workbench/notebook/setup-jupyter"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/58f10d9f.a5917f48.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/c28aed56.3af06266.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/58f10d9f.87a860a5.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/c28aed56.fdadbb0c.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link" href="/docs/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/api/environment">API</a><a class="navbar__item navbar__link navbar__link--active" href="/docs/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/">0.6.0</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/next/adminDocs/yarn/workbench/notebook/setup-jupyter">master 🏃</a></li><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/adminDocs/yarn/workbench/notebook/setup-jupyter">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/adminDocs/yarn/workbench/notebook/setup-jupyter">master 🏃</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/adminDocs/yarn/workbench/notebook/setup-jupyter">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: 0.6.0</span></div><header><h1 class="docTitle_Oumm">setup-jupyter</h1></header><div class="markdown"><h1><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="deploy-jupyter-notebook-on-kubernetes"></a>Deploy Jupyter Notebook on Kubernetes<a class="hash-link" href="#deploy-jupyter-notebook-on-kubernetes" title="Direct link to heading">#</a></h1><p>This guide covers the deployment Jupyter Notebook on kubernetes cluster.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="experiment-environment"></a>Experiment environment<a class="hash-link" href="#experiment-environment" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="setup-kubernetes"></a>Setup Kubernetes<a class="hash-link" href="#setup-kubernetes" title="Direct link to heading">#</a></h3><p>We recommend using <a href="https://kind.sigs.k8s.io/" target="_blank" rel="noopener noreferrer">kind</a> to setup a Kubernetes cluster on a local machine.</p><p>You can use Extra mounts to mount your host path to kind node and use Extra port mappings to port
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link" href="/docs/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/api/environment">API</a><a class="navbar__item navbar__link navbar__link--active" href="/docs/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/">0.6.0</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/next/">master 🏃</a></li><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/adminDocs/yarn/workbench/notebook/setup-jupyter">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/">master 🏃</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/adminDocs/yarn/workbench/notebook/setup-jupyter">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: 0.6.0</span></div><header><h1 class="docTitle_Oumm">setup-jupyter</h1></header><div class="markdown"><h1><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="deploy-jupyter-notebook-on-kubernetes"></a>Deploy Jupyter Notebook on Kubernetes<a class="hash-link" href="#deploy-jupyter-notebook-on-kubernetes" title="Direct link to heading">#</a></h1><p>This guide covers the deployment Jupyter Notebook on kubernetes cluster.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="experiment-environment"></a>Experiment environment<a class="hash-link" href="#experiment-environment" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="setup-kubernetes"></a>Setup Kubernetes<a class="hash-link" href="#setup-kubernetes" title="Direct link to heading">#</a></h3><p>We recommend using <a href="https://kind.sigs.k8s.io/" target="_blank" rel="noopener noreferrer">kind</a> to setup a Kubernetes cluster on a local machine.</p><p>You can use Extra mounts to mount your host path to kind node and use Extra port mappings to port
 forward to the kind nodes. Please refer to <a href="https://kind.sigs.k8s.io/docs/user/configuration/#extra-mounts" target="_blank" rel="noopener noreferrer">kind configuration</a>
 for more details.</p><p>You need to create a kind config file. The following is an example :</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">kind: Cluster</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">apiVersion: kind.x-k8s.io/v1alpha4</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">nodes:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">- role: control-plane</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  extraMounts:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  # add a mount from /path/to/my/files on the host to /files on the node</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  - hostPath: /tmp/submarine</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    containerPath: /tmp/submarine</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  extraPortMappings:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  - containerPort: 80</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    hostPort: 80</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    protocol: TCP</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  # exposing additional ports to be used for NodePort services</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  - containerPort: 30070</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    hostPort: 8888</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    protocol: TCP</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Running the following command:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">kind create cluster --image kindest/node:v1.15.6 --config &lt;path-to-kind-config&gt; --name k8s-submarine</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">kubectl create namespace submarine</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="deploy-jupyter-notebook"></a>Deploy Jupyter Notebook<a class="hash-link" href="#deploy-jupyter-notebook" title="Direct link to heading">#</a></h3><p>Once you have a running Kubernetes cluster, you can write a YAML file to deploy a jupyter notebook.
 In this <a target="_blank" href="/assets/files/jupyter-b412bca5cd2199cfea640f5453431d9d.yaml">example yaml</a>, we use <a href="https://hub.docker.com/r/jupyter/minimal-notebook/" target="_blank" rel="noopener noreferrer">jupyter/minimal-notebook</a>
 to make a single notebook running on the kind node.</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">kubectl apply -f jupyter.yaml --namespace submarine</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Once jupyter notebook is running, you can access the notebook server from the browser using http://localhost:8888 on local machine.</p><p>You can enter and store a password for your notebook server with:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">kubectl exec -it &lt;jupyter-pod-name&gt; -- jupyter notebook password</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>After restarting the notebook server,  you can login jupyter notebook with your new password.</p><p>If you want to use JupyterLab :</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">http://localhost:8888/lab</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/adminDocs/yarn/workbench/notebook/setup-jupyter.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"></div><div class="pagination-nav__item pagination-nav__item--next"></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#experiment-environment" class="table-of-contents__link">Experiment environment</a><ul><li><a href="#setup-kubernetes" class="table-of-contents__link">Setup Kubernetes</a></li><li><a href="#deploy-jupyter-notebook" class="table-of-contents__link">Deploy Jupyter Notebook</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/58f10d9f.a5917f48.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/c28aed56.3af06266.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/58f10d9f.87a860a5.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/c28aed56.fdadbb0c.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/api/environment/index.html b/docs/api/environment/index.html
index 501ff99..355e46f 100644
--- a/docs/api/environment/index.html
+++ b/docs/api/environment/index.html
@@ -6,16 +6,16 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Environment REST API | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="0.6.0"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-0.6.0"><meta data-react-helmet="true" property="og:title" content="Environment REST API | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/api/environment"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/api/environment"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/58f10d9f.a5917f48.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/55d1900a.e19706ba.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/58f10d9f.87a860a5.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/55d1900a.1a3f8fbf.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -24,15 +24,15 @@
 &quot;name&quot; of EnvironmentSpec is not supported.</p></blockquote><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="delete-environment"></a>Delete environment<a class="hash-link" href="#delete-environment" title="Direct link to heading">#</a></h3><p><code>GET /api/v1/environment/{name}</code></p><p><strong>Example Request:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X DELETE http://127.0.0.1:32080/api/v1/environment/my-submarine-env</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>Example Response:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;environmentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;environment_1586156073228_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;environmentSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;my-submarine-env&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;dockerImage&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;continuumio/anaconda3&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;team_default_python_3.7_updated&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;channels&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;defaults&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;condaDependencies&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;_ipyw_jlab_nb_ext_conf=0.1.0=py37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;alabaster=0.7.12=py37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;pipDependencies&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/api/environment.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/api/experiment"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Experiment REST API »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#create-environment" class="table-of-contents__link">Create Environment</a><ul><li><a href="#list-environment" class="table-of-contents__link">List environment</a></li><li><a href="#get-environment" class="table-of-contents__link">Get environment</a></li><li><a href="#patch-environment" class="table-of-contents__link">Patch environment</a></li><li><a href="#delete-environment" class="table-of-contents__link">Delete environment</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/58f10d9f.a5917f48.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/55d1900a.e19706ba.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/58f10d9f.87a860a5.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/55d1900a.1a3f8fbf.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/api/experiment-template/index.html b/docs/api/experiment-template/index.html
index 5acac56..67847e5 100644
--- a/docs/api/experiment-template/index.html
+++ b/docs/api/experiment-template/index.html
@@ -6,16 +6,16 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Experiment Template REST API | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="0.6.0"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-0.6.0"><meta data-react-helmet="true" property="og:title" content="Experiment Template REST API | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/api/experiment-template"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/api/experiment-template"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/58f10d9f.a5917f48.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/f6956115.d54a89ba.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/58f10d9f.87a860a5.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/f6956115.1f3df0b9.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -30,15 +30,15 @@
 &quot;name&quot; of experiment template is not supported.</p></blockquote><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="delete-template"></a>Delete template<a class="hash-link" href="#delete-template" title="Direct link to heading">#</a></h3><p><code>GET /api/v1/template/{name}</code></p><p><strong>Example Request:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X DELETE http://127.0.0.1:32080/api/v1/template/my-tf-mnist-template</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="use-template-to-create-a-experiment"></a>Use template to create a experiment<a class="hash-link" href="#use-template-to-create-a-experiment" title="Direct link to heading">#</a></h3><p><code>POST /api/v1/experiment/{template_name}</code></p><p><strong>Example Request:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X POST -H &quot;Content-Type: application/json&quot; -d &#x27;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">{</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;name&quot;: &quot;tf-mnist&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;params&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        &quot;learning_rate&quot;:&quot;0.01&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        &quot;batch_size&quot;:&quot;150&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        &quot;experiment_name&quot;:&quot;newexperiment1&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">}</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">&#x27; http://127.0.0.1:32080/api/v1/experiment/my-tf-mnist-template</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/api/experiment-template.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/api/experiment"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Experiment REST API</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/api/notebook"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Notebook REST API »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#create-experiment-template" class="table-of-contents__link">Create experiment template</a><ul><li><a href="#list-experiment-template" class="table-of-contents__link">List experiment template</a></li><li><a href="#get-experiment-template" class="table-of-contents__link">Get experiment template</a></li><li><a href="#patch-template" class="table-of-contents__link">Patch template</a></li><li><a href="#delete-template" class="table-of-contents__link">Delete template</a></li><li><a href="#use-template-to-create-a-experiment" class="table-of-contents__link">Use template to create a experiment</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/58f10d9f.a5917f48.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/f6956115.d54a89ba.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/58f10d9f.87a860a5.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/f6956115.1f3df0b9.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/api/experiment/index.html b/docs/api/experiment/index.html
index ffb31eb..2adc264 100644
--- a/docs/api/experiment/index.html
+++ b/docs/api/experiment/index.html
@@ -6,16 +6,16 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Experiment REST API | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="0.6.0"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-0.6.0"><meta data-react-helmet="true" property="og:title" content="Experiment REST API | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/api/experiment"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/api/experiment"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/58f10d9f.a5917f48.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/f1c2161d.2e2a1a77.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/58f10d9f.87a860a5.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/f1c2161d.3e307552.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -23,15 +23,15 @@
 future releases.</p></blockquote><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="create-experiment-using-anonymousembedded-environment"></a>Create Experiment (Using Anonymous/Embedded Environment)<a class="hash-link" href="#create-experiment-using-anonymousembedded-environment" title="Direct link to heading">#</a></h2><p><code>POST /api/v1/experiment</code></p><p><strong>Example Request</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X POST -H &quot;Content-Type: application/json&quot; -d &#x27;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">{</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;meta&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;name&quot;: &quot;tf-mnist-json&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;namespace&quot;: &quot;default&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;framework&quot;: &quot;TensorFlow&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;cmd&quot;: &quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;envVars&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;ENV_1&quot;: &quot;ENV1&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;environment&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;image&quot;: &quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;spec&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;Ps&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;replicas&quot;: 1,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;resources&quot;: &quot;cpu=1,memory=1024M&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;Worker&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;replicas&quot;: 1,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;resources&quot;: &quot;cpu=1,memory=2048M&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">}</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">&#x27; http://127.0.0.1:32080/api/v1/experiment</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>Example Response:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;experimentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_1586156073228_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;uid&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;28e39dcd-77d4-11ea-8dbb-0242ac110003&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Accepted&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;acceptedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2020-06-13T22:59:29.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;framework&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;TensorFlow&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;ENV_1&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;Ps&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu=1,memory=1024M&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;Worker&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu=1,memory=2048M&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="create-experiment-using-pre-definedstored-environment"></a>Create Experiment (Using Pre-defined/Stored Environment)<a class="hash-link" href="#create-experiment-using-pre-definedstored-environment" title="Direct link to heading">#</a></h2><p><code>POST /api/v1/experiment</code></p><p><strong>Example Request</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X POST -H &quot;Content-Type: application/json&quot; -d &#x27;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">{</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;meta&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;name&quot;: &quot;tf-mnist-json&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;namespace&quot;: &quot;default&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;framework&quot;: &quot;TensorFlow&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;cmd&quot;: &quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;envVars&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;ENV_1&quot;: &quot;ENV1&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;environment&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;name&quot;: &quot;my-submarine-env&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;spec&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;Ps&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;replicas&quot;: 1,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;resources&quot;: &quot;cpu=1,memory=1024M&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;Worker&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;replicas&quot;: 1,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;resources&quot;: &quot;cpu=1,memory=2048M&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">}</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">&#x27; http://127.0.0.1:32080/api/v1/experiment</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Above example assume environment &quot;my-submarine-env&quot; already exists in Submarine. Please refer Environment API Reference doc to Create/Update/Delete/List Environment REST API&#x27;s</p><p><strong>Example Response:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;experimentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_1586156073228_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;uid&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;28e39dcd-77d4-11ea-8dbb-0242ac110003&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Accepted&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;acceptedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2020-06-13T22:59:29.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;framework&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;TensorFlow&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;ENV_1&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;my-submarine-env&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;Ps&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu=1,memory=1024M&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;Worker&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu=1,memory=2048M&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="list-experiment"></a>List experiment<a class="hash-link" href="#list-experiment" title="Direct link to heading">#</a></h3><p><code>GET /api/v1/experiment</code></p><p><strong>Example Request:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X GET http://127.0.0.1:32080/api/v1/experiment</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>Example Response:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;experimentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_1592057447228_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;uid&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;28e39dcd-77d4-11ea-8dbb-0242ac110003&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Accepted&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;acceptedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2020-06-13T22:59:29.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;framework&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;TensorFlow&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                        </span><span class="token property">&quot;ENV_1&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;Ps&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                        </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                        </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu=1,memory=1024M&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;Worker&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                        </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                        </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu=1,memory=2048M&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;experimentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_1592057447228_0002&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;mnist&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;uid&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;38e39dcd-77d4-11ea-8dbb-0242ac110003&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Accepted&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;acceptedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2020-06-13T22:19:29.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;pytorch-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;framework&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;PyTorch&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /var/mnist.py --backend gloo&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                        </span><span class="token property">&quot;ENV_1&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:pytorch-dist-mnist-1.0&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;Master&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                        </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                        </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu=1,memory=1024M&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;Worker&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                        </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                        </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu=1,memory=1024M&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="get-experiment"></a>Get experiment<a class="hash-link" href="#get-experiment" title="Direct link to heading">#</a></h3><p><code>GET /api/v1/experiment/{id}</code></p><p><strong>Example Request:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X GET http://127.0.0.1:32080/api/v1/experiment/experiment_1592057447228_0001</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>Example Response:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;experimentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_1592057447228_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;uid&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;28e39dcd-77d4-11ea-8dbb-0242ac110003&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Accepted&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;acceptedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2020-06-13T22:59:29.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;framework&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;TensorFlow&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                  </span><span class="token property">&quot;ENV_1&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;Ps&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu=1,memory=1024M&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;Worker&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu=1,memory=2048M&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="patch-experiment"></a>Patch experiment<a class="hash-link" href="#patch-experiment" title="Direct link to heading">#</a></h3><p><code>PATCH /api/v1/experiment/{id}</code></p><p><strong>Example Request:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X PATCH -H &quot;Content-Type: application/json&quot; -d &#x27;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">{</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;meta&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;name&quot;: &quot;tf-mnist-json&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;namespace&quot;: &quot;default&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;framework&quot;: &quot;TensorFlow&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;cmd&quot;: &quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;envVars&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;ENV_1&quot;: &quot;ENV1&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;environment&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;image&quot;: &quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;spec&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;Ps&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;replicas&quot;: 1,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;resources&quot;: &quot;cpu=1,memory=1024M&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;Worker&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;replicas&quot;: 2,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;resources&quot;: &quot;cpu=1,memory=2048M&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">}</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">&#x27; http://127.0.0.1:32080/api/v1/experiment/experiment_1592057447228_0001</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>Example Response:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;framework&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;TensorFlow&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;ENV_1&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;Ps&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu=1,memory=1024M&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;Worker&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">2</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu=1,memory=2048M&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="delete-experiment"></a>Delete experiment<a class="hash-link" href="#delete-experiment" title="Direct link to heading">#</a></h3><p><code>GET /api/v1/experiment/{id}</code></p><p><strong>Example Request:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X DELETE http://127.0.0.1:32080/api/v1/experiment/experiment_1592057447228_0001</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>Example Response:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;experimentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_1586156073228_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;uid&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;28e39dcd-77d4-11ea-8dbb-0242ac110003&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Accepted&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;acceptedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2020-06-13T22:59:29.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;framework&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;TensorFlow&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;ENV_1&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;Ps&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu=1,memory=1024M&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;Worker&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">2</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu=1,memory=2048M&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="list-experiment-log"></a>List experiment Log<a class="hash-link" href="#list-experiment-log" title="Direct link to heading">#</a></h3><p><code>GET /api/v1/experiment/logs</code></p><p><strong>Example Request:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X GET http://127.0.0.1:32080/api/v1/experiment/logs</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>Example Response:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;experimentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_1589199154923_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;logContent&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;podName&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;mnist-worker-0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;podLog&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;experimentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_1589199154923_0002&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;logContent&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;podName&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;pytorch-dist-mnist-gloo-master-0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;podLog&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;podName&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;pytorch-dist-mnist-gloo-worker-0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;podLog&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="get-experiment-log"></a>Get experiment Log<a class="hash-link" href="#get-experiment-log" title="Direct link to heading">#</a></h3><p><code>GET /api/v1/experiment/logs/{id}</code></p><p><strong>Example Request:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X GET http://127.0.0.1:32080/api/v1/experiment/logs/experiment_1589199154923_0002</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>Example Response:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;experimentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_1589199154923_0002&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;logContent&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;podName&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;pytorch-dist-mnist-gloo-master-0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;podLog&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;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&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;podName&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;pytorch-dist-mnist-gloo-worker-0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;podLog&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;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&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/api/experiment.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/api/environment"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Environment REST API</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/api/experiment-template"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Experiment Template REST API »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#create-experiment-using-anonymousembedded-environment" class="table-of-contents__link">Create Experiment (Using Anonymous/Embedded Environment)</a></li><li><a href="#create-experiment-using-pre-definedstored-environment" class="table-of-contents__link">Create Experiment (Using Pre-defined/Stored Environment)</a><ul><li><a href="#list-experiment" class="table-of-contents__link">List experiment</a></li><li><a href="#get-experiment" class="table-of-contents__link">Get experiment</a></li><li><a href="#patch-experiment" class="table-of-contents__link">Patch experiment</a></li><li><a href="#delete-experiment" class="table-of-contents__link">Delete experiment</a></li><li><a href="#list-experiment-log" class="table-of-contents__link">List experiment Log</a></li><li><a href="#get-experiment-log" class="table-of-contents__link">Get experiment Log</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/58f10d9f.a5917f48.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/f1c2161d.2e2a1a77.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/58f10d9f.87a860a5.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/f1c2161d.3e307552.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/api/notebook/index.html b/docs/api/notebook/index.html
index b079525..027b067 100644
--- a/docs/api/notebook/index.html
+++ b/docs/api/notebook/index.html
@@ -6,31 +6,31 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Notebook REST API | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="0.6.0"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-0.6.0"><meta data-react-helmet="true" property="og:title" content="Notebook REST API | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/api/notebook"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/api/notebook"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/58f10d9f.a5917f48.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/43326f7a.c9ddce4b.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/58f10d9f.87a860a5.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/43326f7a.f74f7bf5.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link" href="/docs/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link navbar__link--active" href="/docs/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/">0.6.0</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/next/api/notebook">master 🏃</a></li><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/api/notebook">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/notebook">master 🏃</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/api/notebook">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" href="/docs/api/notebook">Notebook REST API</a></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: 0.6.0</span></div><header><h1 class="docTitle_Oumm">Notebook REST API</h1></header><div class="markdown"><blockquote><p>Note: The Notebook API is in the alpha stage which is subjected to incompatible changes in future releases.</p></blockquote><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="create-a-notebook-instance"></a>Create a notebook instance<a class="hash-link" href="#create-a-notebook-instance" title="Direct link to heading">#</a></h2><p><code>POST /api/v1/notebook</code></p><p><strong>Example Request</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X POST -H &quot;Content-Type: application/json&quot; -d &#x27;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">{</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;meta&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;name&quot;: &quot;test-nb&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;namespace&quot;: &quot;default&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;ownerId&quot;: &quot;e9ca23d68d884d4ebb19d07889727dae&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;environment&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;name&quot;: &quot;notebook-env&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;spec&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;envVars&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;TEST_ENV&quot;: &quot;test&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;resources&quot;: &quot;cpu=1,memory=1.0Gi&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">}</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">&#x27; http://127.0.0.1:32080/api/v1/notebook</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>Example Response:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Create a notebook instance&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;notebookId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;notebook_1597931805405_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test-nb&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;uid&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;5a94c01d-6a92-4222-bc66-c610c277546d&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;url&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;/notebook/default/test-nb/&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;creating&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;reason&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;The notebook instance is creating&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;createdTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2020-08-20T21:58:27.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;deletedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test-nb&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;ownerId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;e9ca23d68d884d4ebb19d07889727dae&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;notebook-env&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:jupyter-notebook-0.5.0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;team_default_python_3.7&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;channels&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;defaults&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;dependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;TEST_ENV&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu=1,memory=1.0Gi&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="list-notebook-instances-which-belong-to-user"></a>List notebook instances which belong to user<a class="hash-link" href="#list-notebook-instances-which-belong-to-user" title="Direct link to heading">#</a></h2><p><code>GET /api/v1/notebook</code></p><p><strong>Example Request:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X GET http://127.0.0.1:32080/api/v1/notebook?id={user_id}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>Example Response:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;List all notebook instances&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;notebookId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;notebook_1597931805405_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test-nb&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;uid&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;5a94c01d-6a92-4222-bc66-c610c277546d&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;url&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;/notebook/default/test-nb/&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;running&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;reason&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;The notebook instance is running&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;createdTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2020-08-20T21:58:27.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;deletedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test-nb&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;ownerId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;e9ca23d68d884d4ebb19d07889727dae&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;notebook-env&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:jupyter-notebook-0.5.0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;team_default_python_3.7&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;channels&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;defaults&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;dependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;TEST_ENV&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu=1,memory=1.0Gi&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="get-the-notebook-instance"></a>Get the notebook instance<a class="hash-link" href="#get-the-notebook-instance" title="Direct link to heading">#</a></h2><p><code>GET /api/v1/notebook/{id}</code></p><p><strong>Example Request:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X GET http://127.0.0.1:32080/api/v1/notebook/{id}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>Example Response:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Get the notebook instance&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;notebookId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;notebook_1597931805405_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test-nb&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;uid&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;5a94c01d-6a92-4222-bc66-c610c277546d&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;url&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;/notebook/default/test-nb/&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;running&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;reason&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;The notebook instance is running&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;createdTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2020-08-20T21:58:27.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;deletedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test-nb&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;ownerId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;e9ca23d68d884d4ebb19d07889727dae&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;notebook-env&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:jupyter-notebook-0.5.0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;team_default_python_3.7&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;channels&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;defaults&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;dependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;TEST_ENV&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu=1,memory=1.0Gi&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="delete-the-notebook-instance"></a>Delete the notebook instance<a class="hash-link" href="#delete-the-notebook-instance" title="Direct link to heading">#</a></h2><p><code>DELETE /api/v1/notebook/{id}</code></p><p><strong>Example Request:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X DELETE http://127.0.0.1:32080/api/v1/notebook/{id}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>Example Response:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Delete the notebook instance&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;notebookId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;notebook_1597931805405_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test-nb&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;uid&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;5a94c01d-6a92-4222-bc66-c610c277546d&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;url&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;/notebook/default/test-nb/&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;terminating&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;reason&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;The notebook instance is terminating&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;createdTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2020-08-22T14:03:19.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;deletedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2020-08-22T14:46:28+0800&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test-nb&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;ownerId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;e9ca23d68d884d4ebb19d07889727dae&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;notebook-env&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:jupyter-notebook-0.5.0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;team_default_python_3.7&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;channels&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;defaults&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;dependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;TEST_ENV&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu=1,memory=1.0Gi&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/api/notebook.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/api/experiment-template"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Experiment Template REST API</div></a></div><div class="pagination-nav__item pagination-nav__item--next"></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#create-a-notebook-instance" class="table-of-contents__link">Create a notebook instance</a></li><li><a href="#list-notebook-instances-which-belong-to-user" class="table-of-contents__link">List notebook instances which belong to user</a></li><li><a href="#get-the-notebook-instance" class="table-of-contents__link">Get the notebook instance</a></li><li><a href="#delete-the-notebook-instance" class="table-of-contents__link">Delete the notebook instance</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/58f10d9f.a5917f48.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/43326f7a.c9ddce4b.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/58f10d9f.87a860a5.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/43326f7a.f74f7bf5.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/community/HowToCommit/index.html b/docs/community/HowToCommit/index.html
index fe8e9a7..d6ca4f1 100644
--- a/docs/community/HowToCommit/index.html
+++ b/docs/community/HowToCommit/index.html
@@ -6,16 +6,16 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Guide for Apache Submarine Committers | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="0.6.0"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-0.6.0"><meta data-react-helmet="true" property="og:title" content="Guide for Apache Submarine Committers | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/community/HowToCommit"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/community/HowToCommit"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/58f10d9f.a5917f48.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/abb6be53.3125538c.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/58f10d9f.87a860a5.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/abb6be53.1b5c0ed7.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -45,15 +45,15 @@
 <a href="https://github.com/apache/submarine/tree/master/dev-support/cicd" target="_blank" rel="noopener noreferrer">https://github.com/apache/submarine/tree/master/dev-support/cicd</a></p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="adding-contributors-role"></a>Adding Contributors role<a class="hash-link" href="#adding-contributors-role" title="Direct link to heading">#</a></h2><p>There are three roles (Administrators, Committers, Contributors) in the project.</p><ul><li>Contributors who have Contributors role can become assignee of the issues in the project.</li><li>Committers who have Committers role can set arbitrary roles in addition to Contributors role.</li><li>Committers who have Administrators role can edit or delete all comments, or even delete issues in addition to Committers role.</li></ul><p>How to set roles</p><ol><li>Login to ASF JIRA</li><li>Go to the project page (e.g. <a href="https://issues.apache.org/jira/browse/SUBMARINE" target="_blank" rel="noopener noreferrer">https://issues.apache.org/jira/browse/SUBMARINE</a> )</li><li>Hit &quot;Administration&quot; tab</li><li>Hit &quot;Roles&quot; tab in left side</li><li>Add Administrators/Committers/Contributors role</li></ol></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/community/HowToCommit.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/community/README"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Apache Submarine Community</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/community/contributing"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">How To Contribute to Submarine »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#new-committers" class="table-of-contents__link">New committers</a></li><li><a href="#review" class="table-of-contents__link">Review</a></li><li><a href="#reject" class="table-of-contents__link">Reject</a></li><li><a href="#commit-individual-patches" class="table-of-contents__link">Commit individual patches</a></li><li><a href="#adding-contributors-role" class="table-of-contents__link">Adding Contributors role</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/58f10d9f.a5917f48.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/abb6be53.3125538c.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/58f10d9f.87a860a5.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/abb6be53.1b5c0ed7.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/community/README/index.html b/docs/community/README/index.html
index 3196b57..039e0bf 100644
--- a/docs/community/README/index.html
+++ b/docs/community/README/index.html
@@ -6,16 +6,16 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Apache Submarine Community | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="0.6.0"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-0.6.0"><meta data-react-helmet="true" property="og:title" content="Apache Submarine Community | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/community/README"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/community/README"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/58f10d9f.a5917f48.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/cf824c09.78b2fcfc.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/58f10d9f.87a860a5.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/cf824c09.47260a72.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -25,15 +25,15 @@
 for commit messages and patches.</li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="license"></a>License<a class="hash-link" href="#license" title="Direct link to heading">#</a></h2><p>Submarine source code is under the Apache 2.0 license. See the <a href="https://github.com/apache/submarine/blob/master/LICENSE" target="_blank" rel="noopener noreferrer">LICENSE</a> file for details.</p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/community/README.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/devDocs/IntegrationTestE2E"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« How to Run Frontend Integration Test</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/community/HowToCommit"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Guide for Apache Submarine Committers »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#communicating" class="table-of-contents__link">Communicating</a></li><li><a href="#your-first-contribution" class="table-of-contents__link">Your First Contribution</a></li><li><a href="#how-do-i-become-a-committer" class="table-of-contents__link">How Do I Become a Committer?</a></li><li><a href="#how-to-commit" class="table-of-contents__link">How to commit</a></li><li><a href="#communication" class="table-of-contents__link">Communication</a></li><li><a href="#mailing-lists" class="table-of-contents__link">Mailing lists</a></li><li><a href="#license" class="table-of-contents__link">License</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/58f10d9f.a5917f48.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/cf824c09.78b2fcfc.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/58f10d9f.87a860a5.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/cf824c09.47260a72.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/community/contributing/index.html b/docs/community/contributing/index.html
index 7669c66..7329ea1 100644
--- a/docs/community/contributing/index.html
+++ b/docs/community/contributing/index.html
@@ -6,16 +6,16 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">How To Contribute to Submarine | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="0.6.0"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-0.6.0"><meta data-react-helmet="true" property="og:title" content="How To Contribute to Submarine | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/community/contributing"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/community/contributing"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/58f10d9f.a5917f48.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/a658e4e7.a86559e6.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/58f10d9f.87a860a5.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/a658e4e7.36e4cf94.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -29,15 +29,15 @@
 <img alt="compare_pull_request_button" src="/assets/images/compare_pull_request_button-a5c8f7a7ebda5fad45d1d9e6ca8ed58a.png"></li></ul><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="pull-request-template"></a>Pull Request template<a class="hash-link" href="#pull-request-template" title="Direct link to heading">#</a></h4><ul><li><a href="https://github.com/apache/submarine/blob/bd7578cc28f8280f9170938d4469fcc965e24a89/.github/PULL_REQUEST_TEMPLATE" target="_blank" rel="noopener noreferrer">Pull request template</a></li><li>Filling the template thoroughly can improve the speed of the review process. Example: </li></ul><p><img alt="pull_request_template_example" src="/assets/images/pull_request_template_example-5db7207e23fa54cca6de32325e8d7c67.png"></p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="step10-check-github-actions-status-of-your-pull-request-in-apachesubmarine"></a>Step10: Check GitHub Actions status of your pull request in apache/submarine<a class="hash-link" href="#step10-check-github-actions-status-of-your-pull-request-in-apachesubmarine" title="Direct link to heading">#</a></h3><ul><li>Visit <a href="https://github.com/apache/submarine/actions" target="_blank" rel="noopener noreferrer">https://github.com/apache/submarine/actions</a></li><li>Please make sure your pull request can pass all workflows. </li></ul><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="step11-the-review-process"></a>Step11: The Review Process<a class="hash-link" href="#step11-the-review-process" title="Direct link to heading">#</a></h3><ul><li>Anyone can be a reviewer and comment on the pull requests.</li><li>Reviewer can indicate that a patch looks suitable for merging with a comment such as: &quot;Looks good&quot;, &quot;LGTM&quot;, &quot;+1&quot;. (PS: LGTM = Looks Good To Me)</li><li>At least one indication of suitability (e.g. &quot;LGTM&quot;) from a committer is required to be merged. </li><li>A committer can then initiate lazy consensus (&quot;Merge if there is no more discussion&quot;) after which the code can be merged after a particular time (usually 24 hours) if there are no more reviews.</li><li>Contributors can ping reviewers (including committers) by commenting &#x27;Ready to review&#x27;.</li></ul><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="step12-address-review-comments"></a>Step12: Address review comments<a class="hash-link" href="#step12-address-review-comments" title="Direct link to heading">#</a></h3><ul><li>Push new commits to SUBMARINE-${jira_number} branch. The pull request will update automatically.</li><li>After you address all review comments, committers will merge the pull request.</li></ul><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-convention"></a>Code convention<a class="hash-link" href="#code-convention" title="Direct link to heading">#</a></h3><p>We are following Google Code style:</p><ul><li><a href="https://google.github.io/styleguide/javaguide.html" target="_blank" rel="noopener noreferrer">Java style</a></li><li><a href="https://google.github.io/styleguide/shell.xml" target="_blank" rel="noopener noreferrer">Shell style</a></li></ul><p>There are some plugins to format, lint your code in IDE (use <a href="hhttps://github.com/apache/submarine/blob/master/dev-support/maven-config/checkstyle.xml" target="_blank" rel="noopener noreferrer">dev-support/maven-config/checkstyle.xml</a> as rules)</p><ul><li><a href="https://plugins.jetbrains.com/plugin/1065" target="_blank" rel="noopener noreferrer">Checkstyle plugin for Intellij</a> (<a href="http://stackoverflow.com/questions/26955766/intellij-idea-checkstyle" target="_blank" rel="noopener noreferrer">Setting Guide</a>)</li><li><a href="http://eclipse-cs.sourceforge.net/#!/" target="_blank" rel="noopener noreferrer">Checkstyle plugin for Eclipse</a> (<a href="http://eclipse-cs.sourceforge.net/#!/project-setup" target="_blank" rel="noopener noreferrer">Setting Guide</a>)</li></ul></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/community/contributing.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/community/HowToCommit"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Guide for Apache Submarine Committers</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/designDocs/architecture-and-requirements"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Architecture and Requirment »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#preface" class="table-of-contents__link">Preface</a></li><li><a href="#build-submarine" class="table-of-contents__link">Build Submarine</a></li><li><a href="#creating-patches" class="table-of-contents__link">Creating patches</a><ul><li><a href="#step1-fork-apachesubmarine-github-repository-first-time" class="table-of-contents__link">Step1: Fork apache/submarine github repository (first time)</a></li><li><a href="#step2-clone-the-submarine-to-your-local-machine" class="table-of-contents__link">Step2: Clone the Submarine to your local machine</a></li><li><a href="#step3-create-a-new-jira-in-submarine-project" class="table-of-contents__link">Step3: Create a new Jira in Submarine project</a></li><li><a href="#step4-create-a-local-branch-for-your-contribution" class="table-of-contents__link">Step4: Create a local branch for your contribution</a></li><li><a href="#step5-develop--create-commits" class="table-of-contents__link">Step5: Develop &amp; Create commits</a></li><li><a href="#step6-syncing-your-local-branch-with-upstreammaster" class="table-of-contents__link">Step6: Syncing your local branch with upstream/master</a></li><li><a href="#step7-push-your-local-branch-to-your-personal-fork" class="table-of-contents__link">Step7: Push your local branch to your personal fork</a></li><li><a href="#step8-check-github-actions-status-of-your-personal-commit" class="table-of-contents__link">Step8: Check GitHub Actions status of your personal commit</a></li><li><a href="#step9-create-a-pull-request-on-github-ui" class="table-of-contents__link">Step9: Create a pull request on github UI</a></li><li><a href="#step10-check-github-actions-status-of-your-pull-request-in-apachesubmarine" class="table-of-contents__link">Step10: Check GitHub Actions status of your pull request in apache/submarine</a></li><li><a href="#step11-the-review-process" class="table-of-contents__link">Step11: The Review Process</a></li><li><a href="#step12-address-review-comments" class="table-of-contents__link">Step12: Address review comments</a></li><li><a href="#code-convention" class="table-of-contents__link">Code convention</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/58f10d9f.a5917f48.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/a658e4e7.a86559e6.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/58f10d9f.87a860a5.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/a658e4e7.36e4cf94.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/designDocs/architecture-and-requirements/index.html b/docs/designDocs/architecture-and-requirements/index.html
index 2bd14e4..61a4835 100644
--- a/docs/designDocs/architecture-and-requirements/index.html
+++ b/docs/designDocs/architecture-and-requirements/index.html
@@ -6,16 +6,16 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Architecture and Requirment | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="0.6.0"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-0.6.0"><meta data-react-helmet="true" property="og:title" content="Architecture and Requirment | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/designDocs/architecture-and-requirements"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/designDocs/architecture-and-requirements"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/58f10d9f.a5917f48.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/ae045997.5f59351f.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/58f10d9f.87a860a5.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/ae045997.52baff71.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -38,15 +38,15 @@
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      (You can use http://stable.ascii-flow.appspot.com/#Draw</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      to draw such diagrams)</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><code>Compute Resource Manager</code> Helps to manage compute resources on-prem/on-cloud, this module can also handle cluster creation / management, etc.</p><p><code>Experiment Manager</code> Work with &quot;Compute Resource Manager&quot; to submit different kinds of workloads such as (distributed) Tensorflow / Pytorch, etc.</p><p><code>Submarine SDK</code> provides Java/Python/REST API to allow DS or other engineers to integrate into Submarine services. It also includes a <code>mini-submarine</code> component that launches Submarine components from a single Docker container (or a VM image).</p><p>Details of Submarine Server design can be found at <a href="/docs/designDocs/submarine-server/architecture">submarine-server-design</a>.</p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/designDocs/architecture-and-requirements.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/community/contributing"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« How To Contribute to Submarine</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/designDocs/implementation-notes"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Implementation Notes »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#terminology" class="table-of-contents__link">Terminology</a></li><li><a href="#background" class="table-of-contents__link">Background</a></li><li><a href="#machine-learning-workflows--pain-points" class="table-of-contents__link">Machine Learning Workflows &amp; Pain points</a><ul><li><a href="#pain-1-complex-workflowsteps-from-raw-data-to-model-different-tools-needed-by-different-steps-hard-to-make-changes-to-workflow-and-not-error-proof" class="table-of-contents__link">Pain #1 Complex workflow/steps from raw data to model, different tools needed by different steps, hard to make changes to workflow, and not error-proof</a></li><li><a href="#pain-2-dependencies-of-underlying-resource-management-platform" class="table-of-contents__link">Pain #2 Dependencies of underlying resource management platform</a></li><li><a href="#pain-3-data-scientist-are-forced-to-interact-with-lower-level-platform-components" class="table-of-contents__link">Pain #3 Data scientist are forced to interact with lower-level platform components</a></li><li><a href="#pain-4-comply-with-data-securitygovernance-requirements" class="table-of-contents__link">Pain #4 Comply with data security/governance requirements</a></li><li><a href="#pain-5-no-good-way-to-reduce-routine-ml-code-development" class="table-of-contents__link">Pain #5 No good way to reduce routine ML code development</a></li></ul></li><li><a href="#overview" class="table-of-contents__link">Overview</a><ul><li><a href="#a-little-bit-history" class="table-of-contents__link">A little bit history</a></li><li><a href="#why-submarine" class="table-of-contents__link">Why Submarine?</a></li></ul></li><li><a href="#requirements-and-non-requirements" class="table-of-contents__link">Requirements and non-requirements</a><ul><li><a href="#notebook" class="table-of-contents__link">Notebook</a></li><li><a href="#experiment" class="table-of-contents__link">Experiment</a></li><li><a href="#environment-profiles" class="table-of-contents__link">Environment Profiles</a></li><li><a href="#model" class="table-of-contents__link">Model</a></li><li><a href="#metrics-for-training-job-and-model" class="table-of-contents__link">Metrics for training job and model</a></li><li><a href="#deployment" class="table-of-contents__link">Deployment</a></li><li><a href="#security--access-control--user-management--quota-management" class="table-of-contents__link">Security / Access Control / User Management / Quota Management</a></li><li><a href="#dataset" class="table-of-contents__link">Dataset</a></li></ul></li><li><a href="#architecture-overview" class="table-of-contents__link">Architecture Overview</a><ul><li><a href="#architecture-diagram" class="table-of-contents__link">Architecture Diagram</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/58f10d9f.a5917f48.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/ae045997.5f59351f.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/58f10d9f.87a860a5.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/ae045997.52baff71.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/designDocs/environments-implementation/index.html b/docs/designDocs/environments-implementation/index.html
index 677bcb3..d09fe92 100644
--- a/docs/designDocs/environments-implementation/index.html
+++ b/docs/designDocs/environments-implementation/index.html
@@ -6,16 +6,16 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Environments Implementation | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="0.6.0"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-0.6.0"><meta data-react-helmet="true" property="og:title" content="Environments Implementation | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/designDocs/environments-implementation"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/designDocs/environments-implementation"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/58f10d9f.a5917f48.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/876793d7.733c03fc.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/58f10d9f.87a860a5.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/876793d7.b50877b8.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -27,15 +27,15 @@
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"># This is just a sample of Dockerfile, users can do more customizations if needed</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">ENTRYPOINT [&quot;/submarine-bootstrap.sh&quot;]</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>When Submarine Server (this is implementation detail of Submarine Server, user will not see it at all) launch an experiment, or notebook, it will invoke following <code>docker run</code> command (or any other equvilant like using K8s spec): </p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">docker run &lt;submarine_docker_image&gt; --kernel &lt;kernel_name&gt; -- .... python train.py --batch_size 5 (and other parameters)</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Similarily, to launch a notebook: </p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">docker run &lt;submarine_docker_image&gt; --kernel &lt;kernel_name&gt; -- .... jupyter</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>The <code>submarine-bootstrap.sh</code> is part of Submarine repo, and will handle <code>--kernel</code> argument which will invoke  <code>conda active $kernel_name</code> before anything else. (Like run the training job).</p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/designDocs/environments-implementation.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/designDocs/implementation-notes"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Implementation Notes</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/designDocs/experiment-implementation"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Experiment Implementation »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#overview" class="table-of-contents__link">Overview</a></li><li><a href="#environment-api-definition" class="table-of-contents__link">Environment API definition</a></li><li><a href="#vm-image-and-docker-image" class="table-of-contents__link">VM-image and Docker-image</a></li><li><a href="#kernel-implementation" class="table-of-contents__link">Kernel Implementation</a></li><li><a href="#storage-of-environment" class="table-of-contents__link">Storage of Environment</a></li><li><a href="#how-to-implement-to-make-user-can-easily-use-submarine-environments" class="table-of-contents__link">How to implement to make user can easily use Submarine environments?</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/58f10d9f.a5917f48.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/876793d7.733c03fc.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/58f10d9f.87a860a5.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/876793d7.b50877b8.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/designDocs/experiment-implementation/index.html b/docs/designDocs/experiment-implementation/index.html
index f4e1933..bfc2565 100644
--- a/docs/designDocs/experiment-implementation/index.html
+++ b/docs/designDocs/experiment-implementation/index.html
@@ -6,16 +6,16 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Experiment Implementation | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="0.6.0"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-0.6.0"><meta data-react-helmet="true" property="og:title" content="Experiment Implementation | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/designDocs/experiment-implementation"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/designDocs/experiment-implementation"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/58f10d9f.a5917f48.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/6aa1aeb0.551f4937.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/58f10d9f.87a860a5.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/6aa1aeb0.b4eff550.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -28,15 +28,15 @@
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   +-----------------+                  +------------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   |Template XYZ     |                  | XYZ Template     |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   |                 |+---------------&gt; | Handler          |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   +-----------------+                  +------------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                                                   +</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                                                   |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                                                   v</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">               +------------------+      +------------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">               |Distributed       |      | ABC Template     |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">               |TF Experiment     |&lt;----+| Handler          |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">               +------------------+      +------------------+</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Template Handler is a callable class inside Submarine Server with a standard interface defined like.</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-java codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token keyword" style="font-style:italic">interface</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(255, 203, 107)">ExperimentTemplateHandler</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token class-name" style="color:rgb(255, 203, 107)">ExperimentSpec</span><span class="token plain"> </span><span class="token function" style="color:rgb(130, 170, 255)">createExperiment</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token class-name" style="color:rgb(255, 203, 107)">TemplatedExperimentParameters</span><span class="token plain"> param</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>We should avoid users to do coding when they want to add new template, we should have several standard template handler to deal with most of the template handling.</p><p>Experiment templates can be registered/updated/deleted via Submarine Server&#x27;s REST API, which need to be discussed separately in the doc. (TODO)</p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/designDocs/experiment-implementation.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/designDocs/environments-implementation"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Environments Implementation</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/designDocs/notebook-implementation"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Notebook Implementation »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#overview" class="table-of-contents__link">Overview</a></li><li><a href="#api-of-experiment" class="table-of-contents__link">API of Experiment</a></li><li><a href="#manage-environments-for-experiment" class="table-of-contents__link">Manage environments for experiment</a></li><li><a href="#manage-storages-for-experiment" class="table-of-contents__link">Manage storages for experiment</a></li><li><a href="#manage-pre-defined-experiment-libraries" class="table-of-contents__link">Manage Pre-defined experiment libraries</a></li><li><a href="#flow-submit-an-experiment" class="table-of-contents__link">Flow: Submit an experiment</a><ul><li><a href="#submit-via-sdk-flows" class="table-of-contents__link">Submit via SDK Flows.</a></li><li><a href="#specify-what-environment-to-use" class="table-of-contents__link">Specify what environment to use</a></li><li><a href="#create-experiment-specify-wheres-training-code-located-and-parameters" class="table-of-contents__link">Create experiment, specify where&#39;s training code located, and parameters.</a></li></ul></li><li><a href="#summarize-experiment-vs-notebook-session" class="table-of-contents__link">Summarize: Experiment v.s. Notebook session</a></li><li><a href="#experiment-related-modules-inside-submarine-server" class="table-of-contents__link">Experiment-related modules inside Submarine-server</a><ul><li><a href="#experiment-manager" class="table-of-contents__link">Experiment Manager</a></li><li><a href="#compute-cluster-manager" class="table-of-contents__link">Compute Cluster Manager</a></li><li><a href="#experiment-submitter" class="table-of-contents__link">Experiment Submitter</a></li><li><a href="#experiment-monitor" class="table-of-contents__link">Experiment Monitor</a></li><li><a href="#invoke-flows-of-experiment-related-components" class="table-of-contents__link">Invoke flows of experiment-related components</a></li></ul></li><li><a href="#common-modules-of-experimentnotebook-sessionmodel-serving" class="table-of-contents__link">Common modules of experiment/notebook-session/model-serving</a></li><li><a href="#support-predefined-experiment-templates" class="table-of-contents__link">Support Predefined-experiment-templates</a><ul><li><a href="#predefined-experiment-template-api-to-run-experiment" class="table-of-contents__link">Predefined-experiment-template API to run experiment</a></li><li><a href="#handle-predefined-experiment-template-from-server-side" class="table-of-contents__link">Handle Predefined-experiment-template from server side</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/58f10d9f.a5917f48.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/6aa1aeb0.551f4937.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/58f10d9f.87a860a5.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/6aa1aeb0.b4eff550.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/designDocs/implementation-notes/index.html b/docs/designDocs/implementation-notes/index.html
index 9a289f9..318461a 100644
--- a/docs/designDocs/implementation-notes/index.html
+++ b/docs/designDocs/implementation-notes/index.html
@@ -6,31 +6,31 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Implementation Notes | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="0.6.0"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-0.6.0"><meta data-react-helmet="true" property="og:title" content="Implementation Notes | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/designDocs/implementation-notes"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/designDocs/implementation-notes"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/58f10d9f.a5917f48.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/9e593273.01bf71f1.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/58f10d9f.87a860a5.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/9e593273.832ca47a.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/">0.6.0</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/next/designDocs/implementation-notes">master 🏃</a></li><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/designDocs/implementation-notes">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/designDocs/implementation-notes">master 🏃</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/designDocs/implementation-notes">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/submarine-sdk/model-client">Model Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Security</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/submarine-security/spark-security/README">Submarine Spark Security Plugin</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin">Building Submarine Spark Security Plugin</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Administrator Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine on Yarn</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/adminDocs/yarn/README">Running Submarine on YARN</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/community/contributing">How To Contribute to Submarine</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/submarine-server/experimentSpec">Generic Expeiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: 0.6.0</span></div><header><h1 class="docTitle_Oumm">Implementation Notes</h1></header><div class="markdown"><p>Before digging into details of implementations, you should read <a href="/docs/designDocs/architecture-and-requirements">architecture-and-requirements</a> first to understand overall requirements and architecture.</p><p>Here&#x27;re sub topics of Submarine implementations:</p><ul><li><a href="/docs/designDocs/storage-implementation">Submarine Storage</a>: How to store metadata, logs, metrics, etc. of Submarine.</li><li><a href="/docs/designDocs/environments-implementation">Submarine Environment</a>: How environments created, managed, stored in Submarine. </li><li><a href="/docs/designDocs/experiment-implementation">Submarine Experiment</a>: How experiments managed, stored, and how the predefined experiment template works.</li><li><a href="/docs/designDocs/notebook-implementation">Submarine Notebook</a>: How experiments managed, stored, and how the predefined experiment template works.</li><li><a href="/docs/designDocs/submarine-server/architecture">Submarine Server</a>: How Submarine server is designed, architecture, implementation notes, etc.</li></ul><p>Working-in-progress designs, Below are designs which are working-in-progress, we will move them to the upper section once design &amp; review is finished: </p><ul><li><a href="/docs/designDocs/wip-designs/submarine-clusterServer">Submarine HA Design</a>: How Submarine HA can be achieved, using RAFT, etc.</li><li><a href="/docs/designDocs/wip-designs/submarine-launcher">Submarine services deployment module:</a> How to deploy submarine services to k8s, YARN or cloud. </li></ul></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/designDocs/implementation-notes.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/designDocs/architecture-and-requirements"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Architecture and Requirment</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/designDocs/environments-implementation"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Environments Implementation »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/58f10d9f.a5917f48.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/9e593273.01bf71f1.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/58f10d9f.87a860a5.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/9e593273.832ca47a.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/designDocs/notebook-implementation/index.html b/docs/designDocs/notebook-implementation/index.html
index 17c6b14..978fe77 100644
--- a/docs/designDocs/notebook-implementation/index.html
+++ b/docs/designDocs/notebook-implementation/index.html
@@ -6,16 +6,16 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Notebook Implementation | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="0.6.0"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-0.6.0"><meta data-react-helmet="true" property="og:title" content="Notebook Implementation | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/designDocs/notebook-implementation"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/designDocs/notebook-implementation"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/58f10d9f.a5917f48.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/31b2a22b.e63fe3fb.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/58f10d9f.87a860a5.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/31b2a22b.6de1b6cb.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -23,15 +23,15 @@
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  +--------------+  +--------Submarine Server--------------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  |Submarine UI  |  | +-------------------+                      |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  |              |+---&gt;  Submarine        |                      |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  |  Notebook    |  | |  Notebook REST API|                      |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  +--------------+  | |                   |                      |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    | +--------+----------+     +--------------+ |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    |          |             +-&gt;|Metastore     | |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    | +--------v----------+  |  |DB            | |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    | | Submarine         +--+  +--------------+ |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    | | Notebook Mgr      |                      |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    | |                   |                      |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    | |                   |                      |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    | +--------+----------+                      |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    |          |                                 |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    +----------|---------------------------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                               |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                +--------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       +--------v---------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       | Notebook Session |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       |                  |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       |   instance       |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       |                  |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       +------------------+</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Once user use Submarine UI to launch a notebook session, Submarine notebook manager inside Submarine Server will persistent notebook session&#x27;s metadata, and launch a new notebook session instance. </p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="resource-manager"></a>Resource manager<a class="hash-link" href="#resource-manager" title="Direct link to heading">#</a></h3><p>When using K8s as resource manager, Submarine notebook session will run as a new POD.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="storage"></a>Storage<a class="hash-link" href="#storage" title="Direct link to heading">#</a></h3><p>There&#x27;re several different types of storage requirements for Submarine notebook. </p><p>For code, environment, etc, storage, please refer to <a href="/docs/designDocs/storage-implementation">storage implementation</a>, check &quot;Localization of experiment/notebook/model-serving code&quot;.</p><p>When there&#x27;re needs to attach volume (such as user&#x27;s home folder) to Submarine notebook session, please check <a href="/docs/designDocs/storage-implementation">storage implementation</a>, check &quot;Attachable volume&quot;.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="environment"></a>Environment<a class="hash-link" href="#environment" title="Direct link to heading">#</a></h3><p>Submarine notebook&#x27;s environment should be used to run experiment, model serving, etc. Please check <a href="/docs/designDocs/environments-implementation">environment implementation</a>. (More specific to notebook, please check &quot;How to implement to make user can easily use Submarine environments&quot;)</p><p>Please note that notebook&#x27;s Environment should include right version of notebook libraries, and admin should follow the guidance to build correct Docker image, Conda libraries to correctly run Notebook.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="submarine-sdk-for-experiment-etc"></a>Submarine SDK (For Experiment, etc.)<a class="hash-link" href="#submarine-sdk-for-experiment-etc" title="Direct link to heading">#</a></h3><p>Users can run new experiment, access metrics information, or do model operations using Submarine SDK. </p><p>Submarine SDK is a Python library which can talk to Submarine Server which need Submarine Server&#x27;s endpoint as well as user credentials.</p><p>To ensure better experience, we recommend always install proper version of Submarine SDK from environment which users can use Submarine SDK directly from commandline. (We as Submarine community can provide sample Dockerfile or Conda environment which have correct base libraries installed for Submarine SDK).</p><p>Submarine Server IP will be configured automatically by Submarine Server, and added as an envar when Submarine notebook session got launched.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="security"></a>Security<a class="hash-link" href="#security" title="Direct link to heading">#</a></h3><p>Please refer to <a href="/docs/designDocs/wip-designs/security-implementation">Security Implementation</a></p><p>Once user accessed to a running notebook session, the user can also access resources of the notebook, capability of submit new experiment, and access data. This is also very dangerous so we have to protect it. </p><p>A simple solution is to use token-based authentication <a href="https://jupyter-notebook.readthedocs.io/en/stable/security.html" target="_blank" rel="noopener noreferrer">https://jupyter-notebook.readthedocs.io/en/stable/security.html</a>. A more common way is to use solutions like KNOX to support SSO. </p><p>We need expand this section to more details. (TODO).</p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/designDocs/notebook-implementation.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/designDocs/experiment-implementation"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Experiment Implementation</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/designDocs/storage-implementation"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Storage Implementation »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#overview" class="table-of-contents__link">Overview</a><ul><li><a href="#users-interaction" class="table-of-contents__link">User&#39;s interaction</a></li><li><a href="#admins-interaction" class="table-of-contents__link">Admin&#39;s interaction</a></li></ul></li><li><a href="#relationship-with-other-components" class="table-of-contents__link">Relationship with other components</a><ul><li><a href="#metadata-store" class="table-of-contents__link">Metadata store</a></li><li><a href="#submarine-server" class="table-of-contents__link">Submarine Server</a></li><li><a href="#resource-manager" class="table-of-contents__link">Resource manager</a></li><li><a href="#storage" class="table-of-contents__link">Storage</a></li><li><a href="#environment" class="table-of-contents__link">Environment</a></li><li><a href="#submarine-sdk-for-experiment-etc" class="table-of-contents__link">Submarine SDK (For Experiment, etc.)</a></li><li><a href="#security" class="table-of-contents__link">Security</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/58f10d9f.a5917f48.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/31b2a22b.e63fe3fb.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/58f10d9f.87a860a5.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/31b2a22b.6de1b6cb.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/designDocs/storage-implementation/index.html b/docs/designDocs/storage-implementation/index.html
index 26a9af7..2193950 100644
--- a/docs/designDocs/storage-implementation/index.html
+++ b/docs/designDocs/storage-implementation/index.html
@@ -6,16 +6,16 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Storage Implementation | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="0.6.0"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-0.6.0"><meta data-react-helmet="true" property="og:title" content="Storage Implementation | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/designDocs/storage-implementation"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/designDocs/storage-implementation"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/58f10d9f.a5917f48.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/538541c1.49274308.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/58f10d9f.87a860a5.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/538541c1.dded75d0.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -24,15 +24,15 @@
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                              +---------+    +------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                              |Logs     |&lt;--+|Notebook    |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      +----------+            +---------+    +------------+     +----------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      |Trackings |                        &lt;-+|Experiment  |&lt;--+&gt;|Model Artifacts |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      +----------+     +-----------------+   +------------+     +----------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      +----------+&lt;---+|ML-related Metric|&lt;--+Servings    |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      |tf.events |     +-----------------+   +------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      +----------+                                 ^              +-----------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                                                   +              | Environments    |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                                        +----------------------+  |                 |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            +-----------------+         | Submarine Metastore  |  |  Dependencies   |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            |Code             |         +----------------------+  |                 |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            +-----------------+         |Experiment Meta       |  |   Docker Images |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                                        +----------------------+  +-----------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                                        |Model Store Meta      |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                                        +----------------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                                        |Model Serving Meta    |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                                        +----------------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                                        |Notebook meta         |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                                        +----------------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                                        |Experiment Templates  |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                                        +----------------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                                        |Environments Meta     |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                                        +----------------------+</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>First of all, all the notebook-sessions / experiments / model-serving instances) are more or less interact with following storage objects:</p><ul><li>Logs for these tasks for troubleshooting. </li><li>ML-related metrics such as loss, epoch, etc. (in contrast of system metrics such as CPU/memory usage, etc.)<ul><li>There&#x27;re different types of ML-related metrics, for Tensorflow/pytorch, they can use tf.events and get visualizations on tensorboard. </li><li>Or they can use tracking APIs (such as Submarine tracking, mlflow tracking, etc.) to output customized tracking results for non TF/Pytorch workloads. </li></ul></li><li>Training jobs of experiment typically generate model artifacts (files) which need persisted, and both of notebook, model serving needs to load model artifacts from persistent storage. </li><li>There&#x27;re various of meta information, such as experiment meta, model registry, model serving, notebook, experiment, environment, etc. We need be able to read these meta information back.</li><li>We also have code for experiment (like training/batch-prediction), notebook (ipynb), and model servings.</li><li>And notebook/experiments/model-serving need depend on environments (dependencies such as pip, and Docker Images).</li></ul><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="implementation-considerations-for-ml-related-objects"></a>Implementation considerations for ML-related objects<a class="hash-link" href="#implementation-considerations-for-ml-related-objects" title="Direct link to heading">#</a></h3><table><thead><tr><th>Object Type</th><th>Characteristics</th><th>Where to store</th></tr></thead><tbody><tr><td>Metrics: tf.events</td><td>Time series data with k/v, appendable to file</td><td>Local/EBS, HDFS, Cloud Blob Storage</td></tr><tr><td>Metrics: other tracking metrics</td><td>Time series data with k/v, appendable to file</td><td>Local, HDFS, Cloud Blob Storage, Database</td></tr><tr><td>Logs</td><td>Large volumes, #files are potentially huge.</td><td>Local (temporary), HDFS (need aggregation), Cloud Blob Storage</td></tr><tr><td>Submarine Metastore</td><td>CRUD operations for small meta data.</td><td>Database</td></tr><tr><td>Model Artifacts</td><td>Size varies for model (from KBs to GBs). #files are potentially huge.</td><td>HDFS, Cloud Blob Storage</td></tr><tr><td>Code</td><td>Need version control. (Please find detailed discussions below for code storage and localization)</td><td>Tarball on HDFS/Cloud Blog Storage, or Git</td></tr><tr><td>Environment (Dependencies, Docker Image)</td><td></td><td>Public/private environment repo (like Conda channel), Docker registry.</td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="detailed-discussions"></a>Detailed discussions<a class="hash-link" href="#detailed-discussions" title="Direct link to heading">#</a></h3><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="store-code-for-experimentnotebookmodel-serving"></a>Store code for experiment/notebook/model-serving<a class="hash-link" href="#store-code-for-experimentnotebookmodel-serving" title="Direct link to heading">#</a></h4><p>There&#x27;re following ways to get experiment code: </p><p><strong>1) Code is part of Git repo:</strong> (<strong><em><u>Recommended</u></em></strong>)</p><p>This is our recommended approach, once code is part of Git, it will be stored in version control, any change will be tracked, and much easier for users to trace back what change triggered a new bug, etc.</p><p><strong>2) Code is part of Docker image:</strong> </p><p><strong><em>This is an anti-pattern and we will NOT recommend you to use it</em></strong>, Docker image can be used to include ANYTHING, like dependencies, the code you will execute, or even data. But this doesn&#x27;t mean you should do it. We recommend to use Docker image ONLY for libraries/dependencies.</p><p>Making code to be part of Docker image makes hard to edit code (if you want to update a value in your Python file, you will have to recreate the Docker image, push it and rerun it).</p><p><strong>3) Code is part of S3/HDFS/ABFS:</strong> </p><p>User may want to store their training code to a tarball on a shared storage. Submarine need to download code from remote storage to the launched container before running the code. </p><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="localization-of-experimentnotebookmodel-serving-code"></a>Localization of experiment/notebook/model-serving code<a class="hash-link" href="#localization-of-experimentnotebookmodel-serving-code" title="Direct link to heading">#</a></h4><p>To make user experiences keeps same across different environment, we will localize code to a same folder after the container is launched, preferably <code>/code</code></p><p>For example, there&#x27;s a git repo need to be synced up for an experiment/notebook/model-serving (example above):</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">experiment: #Or notebook, model-serving</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       name: &quot;abc&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       environment: &quot;team-default-ml-env&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       ... (other fields)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">             code:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">           sync_mode: git</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">           url: &quot;https://foo.com/training-job.git&quot; </span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>After localize, <code>training-job/</code> will be placed under <code>/code</code> </p><p>When we running on K8s environment, we can use K8s&#x27;s initContainer and emptyDir to do these things for us. K8s POD spec (generated by Submarine server instead of user, user should NEVER edit K8s spec, that&#x27;s too unfriendly to data-scientists): </p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">apiVersion: v1</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">kind: Pod</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">metadata:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  name: experiment-abc</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">spec:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  containers:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  - name: experiment-task</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    image: training-job</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    volumeMounts:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    - name: code-dir</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      mountPath: /code</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  initContainers:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  - name: git-localize</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    image: git-sync</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    command: &quot;git clone .. /code/&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    volumeMounts:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    - name: code-dir</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      mountPath: /code</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  volumes:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  - name: code-dir</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    emptyDir: {}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>The above K8s spec create a code-dir and mount it to <code>/code</code> to launched containers. The initContainer <code>git-localize</code> uses <code>https://github.com/kubernetes/git-sync</code> to do the sync up. (If other storages are used such as s3, we can use similar initContainer approach to download contents)</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="system-related-metricslogs-and-their-storages"></a>System-related metrics/logs and their storages<a class="hash-link" href="#system-related-metricslogs-and-their-storages" title="Direct link to heading">#</a></h2><p>Other than ML-related objects, we have system-related objects, including: </p><ul><li>Daemon logs (like logs of Submarine server). </li><li>Logs for other dependency components (like Kubernetes logs when running on K8s). </li><li>System metrics (Physical resource usages by daemons, launched training containers, etc.). </li></ul><p>All these information should be handled by 3rd party system, such as Grafana, Prometheus, etc. And system admins are responsible to setup these infrastructures, dashboard. Users of submarine should NOT interact with system related metrics/logs. It is system admin&#x27;s responsibility.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="attachable-volumes"></a>Attachable Volumes<a class="hash-link" href="#attachable-volumes" title="Direct link to heading">#</a></h2><p>It is possible user has needs to have an attachable volume for their experiment / notebook, this is especially useful for notebook storage, since contents of notebook can be automatically saved, and it can be used as user&#x27;s home folder. </p><p>Downside of attachable volume is, it is not versioned, even notebook is mainly used for adhoc exploring tasks, an unversioned notebook file can lead to maintenance issues in the future. </p><p>Since this is a common requirement, we can consider to support attachable volumes in Submarine in a long run, but with relatively lower priority.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="in-scope--out-of-scope"></a>In-scope / Out-of-scope<a class="hash-link" href="#in-scope--out-of-scope" title="Direct link to heading">#</a></h2><p> Describe what Submarine project should own and what Submarine project should NOT own.</p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/designDocs/storage-implementation.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/designDocs/notebook-implementation"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Notebook Implementation</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/designDocs/submarine-server/architecture"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Submarine Server Implementation »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#ml-related-objects-and-their-storages" class="table-of-contents__link">ML-related objects and their storages</a><ul><li><a href="#implementation-considerations-for-ml-related-objects" class="table-of-contents__link">Implementation considerations for ML-related objects</a></li><li><a href="#detailed-discussions" class="table-of-contents__link">Detailed discussions</a></li></ul></li><li><a href="#system-related-metricslogs-and-their-storages" class="table-of-contents__link">System-related metrics/logs and their storages</a></li><li><a href="#attachable-volumes" class="table-of-contents__link">Attachable Volumes</a></li><li><a href="#in-scope--out-of-scope" class="table-of-contents__link">In-scope / Out-of-scope</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/58f10d9f.a5917f48.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/538541c1.49274308.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/58f10d9f.87a860a5.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/538541c1.dded75d0.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/designDocs/submarine-server/architecture/index.html b/docs/designDocs/submarine-server/architecture/index.html
index 16a757f..3be1c95 100644
--- a/docs/designDocs/submarine-server/architecture/index.html
+++ b/docs/designDocs/submarine-server/architecture/index.html
@@ -6,16 +6,16 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Submarine Server Implementation | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="0.6.0"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-0.6.0"><meta data-react-helmet="true" property="og:title" content="Submarine Server Implementation | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/designDocs/submarine-server/architecture"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/designDocs/submarine-server/architecture"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/58f10d9f.a5917f48.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/710c49d3.2f9e58c7.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/58f10d9f.87a860a5.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/710c49d3.cf6a7c99.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -23,15 +23,15 @@
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   +----------------------Submarine Server--------------------------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   | +-----------------+ +------------------+ +--------------------+      |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   | |  Experiment     | |Notebook Session  | |Environment Mgr     |      |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   | |  Mgr            | |Mgr               | |                    |      |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   | +-----------------+ +------------------+ +--------------------+      |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   |                                                                      |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   | +-----------------+ +------------------+ +--------------------+      |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   | |  Model Registry | |Model Serving Mgr | |Compute Cluster Mgr |      |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   | |                 | |                  | |                    |      |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   | +-----------------+ +------------------+ +--------------------+      |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   |                                                                      |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   | +-----------------+ +------------------+ +--------------------+      |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   | | DataSet Mgr     | |User/Team         | |Metadata Mgr        |      |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   | |                 | |Permission Mgr    | |                    |      |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   | +-----------------+ +------------------+ +--------------------+      |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   +----------------------------------------------------------------------+</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="experiment-manager"></a>Experiment Manager<a class="hash-link" href="#experiment-manager" title="Direct link to heading">#</a></h3><p>TODO</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="notebook-sessions-manager"></a>Notebook Sessions Manager<a class="hash-link" href="#notebook-sessions-manager" title="Direct link to heading">#</a></h3><p>TODO</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="environment-manager"></a>Environment Manager<a class="hash-link" href="#environment-manager" title="Direct link to heading">#</a></h3><p>TODO</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="model-registry"></a>Model Registry<a class="hash-link" href="#model-registry" title="Direct link to heading">#</a></h3><p>TODO</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="model-serving-manager"></a>Model Serving Manager<a class="hash-link" href="#model-serving-manager" title="Direct link to heading">#</a></h3><p>TODO</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="compute-cluster-manager"></a>Compute Cluster Manager<a class="hash-link" href="#compute-cluster-manager" title="Direct link to heading">#</a></h3><p>TODO</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="dataset-manager"></a>Dataset Manager<a class="hash-link" href="#dataset-manager" title="Direct link to heading">#</a></h3><p>TODO</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="userteam-permissions-manager"></a>User/team permissions manager<a class="hash-link" href="#userteam-permissions-manager" title="Direct link to heading">#</a></h3><p>TODO</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="metadata-manager"></a>Metadata Manager<a class="hash-link" href="#metadata-manager" title="Direct link to heading">#</a></h3><p>TODO</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="componentsservices-outside-of-submarine-servers-scope"></a>Components/services outside of Submarine Server&#x27;s scope<a class="hash-link" href="#componentsservices-outside-of-submarine-servers-scope" title="Direct link to heading">#</a></h2><p>TODO: Describe what are the out-of-scope components, which should be handled and managed outside of Submarine server. Candidates are: Identity management, data storage, metastore storage, etc.</p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/designDocs/submarine-server/architecture.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/designDocs/storage-implementation"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Storage Implementation</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/designDocs/submarine-server/experimentSpec"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Generic Expeiment Spec »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#architecture-overview" class="table-of-contents__link">Architecture Overview</a></li><li><a href="#submarine-server-and-its-apis" class="table-of-contents__link">Submarine Server and its APIs</a></li><li><a href="#proposal" class="table-of-contents__link">Proposal</a></li><li><a href="#submarine-server-components" class="table-of-contents__link">Submarine Server Components</a><ul><li><a href="#experiment-manager" class="table-of-contents__link">Experiment Manager</a></li><li><a href="#notebook-sessions-manager" class="table-of-contents__link">Notebook Sessions Manager</a></li><li><a href="#environment-manager" class="table-of-contents__link">Environment Manager</a></li><li><a href="#model-registry" class="table-of-contents__link">Model Registry</a></li><li><a href="#model-serving-manager" class="table-of-contents__link">Model Serving Manager</a></li><li><a href="#compute-cluster-manager" class="table-of-contents__link">Compute Cluster Manager</a></li><li><a href="#dataset-manager" class="table-of-contents__link">Dataset Manager</a></li><li><a href="#userteam-permissions-manager" class="table-of-contents__link">User/team permissions manager</a></li><li><a href="#metadata-manager" class="table-of-contents__link">Metadata Manager</a></li></ul></li><li><a href="#componentsservices-outside-of-submarine-servers-scope" class="table-of-contents__link">Components/services outside of Submarine Server&#39;s scope</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/58f10d9f.a5917f48.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/710c49d3.2f9e58c7.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/58f10d9f.87a860a5.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/710c49d3.cf6a7c99.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/designDocs/submarine-server/experimentSpec/index.html b/docs/designDocs/submarine-server/experimentSpec/index.html
index 9b49767..9f330d3 100644
--- a/docs/designDocs/submarine-server/experimentSpec/index.html
+++ b/docs/designDocs/submarine-server/experimentSpec/index.html
@@ -6,31 +6,31 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Generic Expeiment Spec | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="0.6.0"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-0.6.0"><meta data-react-helmet="true" property="og:title" content="Generic Expeiment Spec | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/designDocs/submarine-server/experimentSpec"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/designDocs/submarine-server/experimentSpec"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/58f10d9f.a5917f48.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/ef17f2ad.b0f19d95.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/58f10d9f.87a860a5.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/ef17f2ad.a6a30414.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/">0.6.0</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/next/designDocs/submarine-server/experimentSpec">master 🏃</a></li><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/designDocs/submarine-server/experimentSpec">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/designDocs/submarine-server/experimentSpec">master 🏃</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/designDocs/submarine-server/experimentSpec">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/submarine-sdk/model-client">Model Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Security</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/submarine-security/spark-security/README">Submarine Spark Security Plugin</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin">Building Submarine Spark Security Plugin</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Administrator Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine on Yarn</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/adminDocs/yarn/README">Running Submarine on YARN</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/community/contributing">How To Contribute to Submarine</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!" tabindex="0">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/designDocs/submarine-server/experimentSpec">Generic Expeiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: 0.6.0</span></div><header><h1 class="docTitle_Oumm">Generic Expeiment Spec</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="motivation"></a>Motivation<a class="hash-link" href="#motivation" title="Direct link to heading">#</a></h2><p>As the machine learning platform, the submarine should support multiple machine learning frameworks, such as Tensorflow, Pytorch etc. But different framework has different distributed components for the training experiment. So that we designed a generic experiment spec to abstract the training experiment across different frameworks. In this way, the submarine-server can hide the complexity of underlying infrastructure differences and provide a cleaner interface to manager experiments</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="proposal"></a>Proposal<a class="hash-link" href="#proposal" title="Direct link to heading">#</a></h2><p>Considering the Tensorflow and Pytorch framework, we propose one spec which consists of library spec, submitter spec and task specs etc. Such as:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-yaml codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;mnist&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token key atrule">librarySpec</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;TensorFlow&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token key atrule">version</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2.1.0&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token key atrule">image</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token key atrule">cmd</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token key atrule">envVars</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token key atrule">ENV_1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token key atrule">submitterSpec</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token key atrule">type</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;k8s&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token key atrule">namespace</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;submarine&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token key atrule">taskSpecs</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token key atrule">Ps</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> tensorflow</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token key atrule">replicas</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">2</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token key atrule">resources</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu=4,memory=2048M,nvidia.com/gpu=1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token key atrule">Worker</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> tensorflow</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token key atrule">replicas</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">2</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token key atrule">resources</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu=4,memory=2048M,nvidia.com/gpu=1&quot;</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="library-spec"></a>Library Spec<a class="hash-link" href="#library-spec" title="Direct link to heading">#</a></h3><p>The library spec describes the info about machine learning framework. All the fields as below:</p><table><thead><tr><th>field</th><th>type</th><th>optional</th><th>description</th></tr></thead><tbody><tr><td>name</td><td>string</td><td>NO</td><td>Machine Learning Framework name. Only <code>&quot;tensorflow&quot;</code> and <code>&quot;pytorch&quot;</code> is supported. It doesn&#x27;t matter if the value is uppercase or lowercase.</td></tr><tr><td>version</td><td>string</td><td>NO</td><td>The version of ML framework. Such as: 2.1.0</td></tr><tr><td>image</td><td>string</td><td>NO</td><td>The public image used for each task if not specified. Such as: apache/submarine</td></tr><tr><td>cmd</td><td>string</td><td>YES</td><td>The public entry cmd for the task if not specified.</td></tr><tr><td>envVars</td><td>key/value</td><td>YES</td><td>The public env vars for the task if not specified.</td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="submitter-spec"></a>Submitter Spec<a class="hash-link" href="#submitter-spec" title="Direct link to heading">#</a></h3><p>It describes the info of submitter which the user specified, such as yarn, yarnservice or k8s. All the fields as below:</p><table><thead><tr><th>field</th><th>type</th><th>optional</th><th>description</th></tr></thead><tbody><tr><td>type</td><td>string</td><td>NO</td><td>The submitter type, supports <code>k8s</code> now</td></tr><tr><td>configPath</td><td>string</td><td>YES</td><td>The config path of the specified resource manager. You can set it in submarine-site.xml if run submarine-server locally</td></tr><tr><td>namespace</td><td>string</td><td>NO</td><td>It&#x27;s known as queue in Apache Hadoop YARN and namespace in Kubernetes.</td></tr><tr><td>kind</td><td>string</td><td>YES</td><td>It&#x27;s used for k8s submitter, supports TFJob and PyTorchJob</td></tr><tr><td>apiVersion</td><td>string</td><td>YES</td><td>It should pair with the kind, such as the TFJob&#x27;s api version is <code>kubeflow.org/v1</code></td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="task-spec"></a>Task Spec<a class="hash-link" href="#task-spec" title="Direct link to heading">#</a></h3><p>It describes the task info, the tasks make up the experiment. So it must be specified when submit the experiment. All the tasks should putted into the key value collection. Such as:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-yaml codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token key atrule">taskSpecs</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token key atrule">Ps</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> tensorflow</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token key atrule">replicas</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">2</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token key atrule">resources</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu=4,memory=2048M,nvidia.com/gpu=1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token key atrule">Worker</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> tensorflow</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token key atrule">replicas</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">2</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token key atrule">resources</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu=4,memory=2048M,nvidia.com/gpu=1&quot;</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>All the fields as below:</p><table><thead><tr><th>field</th><th>type</th><th>optional</th><th>description</th></tr></thead><tbody><tr><td>name</td><td>string</td><td>YES</td><td>The experiment name, if not specify using the library name</td></tr><tr><td>image</td><td>string</td><td>YES</td><td>The experiment docker image</td></tr><tr><td>cmd</td><td>string</td><td>YES</td><td>The entry command for running task</td></tr><tr><td>envVars</td><td>key/value</td><td>YES</td><td>The environment variables for the task</td></tr><tr><td>resources</td><td>string</td><td>NO</td><td>The limit resource for the task. Formatter: cpu=%s,memory=%s,nvidia.com/gpu=%s</td></tr></tbody></table><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="implements"></a>Implements<a class="hash-link" href="#implements" title="Direct link to heading">#</a></h2><p>For more info see <a href="https://issues.apache.org/jira/browse/SUBMARINE-321" target="_blank" rel="noopener noreferrer">SUBMARINE-321</a></p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/designDocs/submarine-server/experimentSpec.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/designDocs/submarine-server/architecture"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Submarine Server Implementation</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/designDocs/wip-designs/submarine-launcher"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Submarine Launcher »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#motivation" class="table-of-contents__link">Motivation</a></li><li><a href="#proposal" class="table-of-contents__link">Proposal</a><ul><li><a href="#library-spec" class="table-of-contents__link">Library Spec</a></li><li><a href="#submitter-spec" class="table-of-contents__link">Submitter Spec</a></li><li><a href="#task-spec" class="table-of-contents__link">Task Spec</a></li></ul></li><li><a href="#implements" class="table-of-contents__link">Implements</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/58f10d9f.a5917f48.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/ef17f2ad.b0f19d95.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/58f10d9f.87a860a5.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/ef17f2ad.a6a30414.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/designDocs/wip-designs/security-implementation/index.html b/docs/designDocs/wip-designs/security-implementation/index.html
index 8d4e9ed..a94d2c6 100644
--- a/docs/designDocs/wip-designs/security-implementation/index.html
+++ b/docs/designDocs/wip-designs/security-implementation/index.html
@@ -6,31 +6,31 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Security Implementation | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="0.6.0"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-0.6.0"><meta data-react-helmet="true" property="og:title" content="Security Implementation | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/designDocs/wip-designs/security-implementation"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/designDocs/wip-designs/security-implementation"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/58f10d9f.a5917f48.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/5065a48c.64a509bf.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/58f10d9f.87a860a5.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/5065a48c.59914f6c.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/">0.6.0</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/next/designDocs/wip-designs/security-implementation">master 🏃</a></li><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/designDocs/wip-designs/security-implementation">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/designDocs/wip-designs/security-implementation">master 🏃</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/designDocs/wip-designs/security-implementation">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/submarine-sdk/model-client">Model Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Security</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/submarine-security/spark-security/README">Submarine Spark Security Plugin</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin">Building Submarine Spark Security Plugin</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Administrator Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine on Yarn</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/adminDocs/yarn/README">Running Submarine on YARN</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/community/contributing">How To Contribute to Submarine</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/submarine-server/experimentSpec">Generic Expeiment Spec</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!" tabindex="0">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: 0.6.0</span></div><header><h1 class="docTitle_Oumm">Security Implementation</h1></header><div class="markdown"><div class="admonition admonition-warning alert alert--danger"><div class="admonition-heading"><h5><span class="admonition-icon"><svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"></path></svg></span>warning</h5></div><div class="admonition-content"><p>Please note that this design doc is working-in-progress and need more works to complete. </p></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="handle-users-credential"></a>Handle User&#x27;s Credential<a class="hash-link" href="#handle-users-credential" title="Direct link to heading">#</a></h2><p>Users credential includes Kerberoes Keytabs, Docker registry credentials, Github ssh-keys, etc.</p><p>User&#x27;s credential must be stored securitely, for example, via KeyCloak or K8s Secrets.</p><p>(More details TODO)</p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/designDocs/wip-designs/security-implementation.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/designDocs/wip-designs/submarine-clusterServer"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Cluster Server Design - High-Availability</div></a></div><div class="pagination-nav__item pagination-nav__item--next"></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#handle-users-credential" class="table-of-contents__link">Handle User&#39;s Credential</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/58f10d9f.a5917f48.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/5065a48c.64a509bf.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/58f10d9f.87a860a5.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/5065a48c.59914f6c.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/designDocs/wip-designs/submarine-clusterServer/index.html b/docs/designDocs/wip-designs/submarine-clusterServer/index.html
index 9c5f441..812c027 100644
--- a/docs/designDocs/wip-designs/submarine-clusterServer/index.html
+++ b/docs/designDocs/wip-designs/submarine-clusterServer/index.html
@@ -6,16 +6,16 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Cluster Server Design - High-Availability | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="0.6.0"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-0.6.0"><meta data-react-helmet="true" property="og:title" content="Cluster Server Design - High-Availability | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/designDocs/wip-designs/submarine-clusterServer"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/designDocs/wip-designs/submarine-clusterServer"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/58f10d9f.a5917f48.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/7f965783.a50d5173.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/58f10d9f.87a860a5.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/7f965783.a7d40fba.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -45,15 +45,15 @@
 Failure to do so will result in the user not being able to continue while switching to another server.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="listen-for-note-update-events"></a>Listen for note update events<a class="hash-link" href="#listen-for-note-update-events" title="Direct link to heading">#</a></h3><p>Listen for the NEW_NOTE, DEL_NOTE, REMOVE_NOTE_TO_TRASH ... event of the notebook in the NotebookServer#onMessage() function.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="broadcast-note-update-event"></a>Broadcast note update event<a class="hash-link" href="#broadcast-note-update-event" title="Direct link to heading">#</a></h3><p>The note is refreshed by notifying the event to all Submarine servers in the cluster via messaging Service.</p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/designDocs/wip-designs/submarine-clusterServer.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/designDocs/wip-designs/submarine-launcher"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Submarine Launcher</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/designDocs/wip-designs/security-implementation"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Security Implementation »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#below-is-existing-proposal" class="table-of-contents__link">Below is existing proposal:</a></li><li><a href="#introduction" class="table-of-contents__link">Introduction</a></li><li><a href="#requirement" class="table-of-contents__link">Requirement</a><ul><li><a href="#cluster-metadata-center" class="table-of-contents__link">Cluster Metadata Center</a></li><li><a href="#service-discovery" class="table-of-contents__link">Service discovery</a></li><li><a href="#cluster-event" class="table-of-contents__link">Cluster event</a></li><li><a href="#independence" class="table-of-contents__link">Independence</a></li><li><a href="#disadvantages" class="table-of-contents__link">Disadvantages</a></li></ul></li><li><a href="#system-design" class="table-of-contents__link">System design</a><ul><li><a href="#universal-design" class="table-of-contents__link">Universal design</a></li><li><a href="#clusterconfigure" class="table-of-contents__link">ClusterConfigure</a></li><li><a href="#clusterserver" class="table-of-contents__link">ClusterServer</a></li><li><a href="#clusterclient" class="table-of-contents__link">ClusterClient</a></li><li><a href="#clustermetadata" class="table-of-contents__link">ClusterMetadata</a></li><li><a href="#network-fault-tolerance" class="table-of-contents__link">Network fault tolerance</a></li><li><a href="#cluster-monitoring" class="table-of-contents__link">Cluster monitoring</a></li><li><a href="#atomix-raft-algorithm-library" class="table-of-contents__link">Atomix Raft algorithm library</a></li><li><a href="#synchronize-workbench-notes" class="table-of-contents__link">Synchronize workbench notes</a></li><li><a href="#listen-for-note-update-events" class="table-of-contents__link">Listen for note update events</a></li><li><a href="#broadcast-note-update-event" class="table-of-contents__link">Broadcast note update event</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/58f10d9f.a5917f48.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/7f965783.a50d5173.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/58f10d9f.87a860a5.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/7f965783.a7d40fba.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/designDocs/wip-designs/submarine-launcher/index.html b/docs/designDocs/wip-designs/submarine-launcher/index.html
index 342db23..4b94dfa 100644
--- a/docs/designDocs/wip-designs/submarine-launcher/index.html
+++ b/docs/designDocs/wip-designs/submarine-launcher/index.html
@@ -6,16 +6,16 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Submarine Launcher | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="0.6.0"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-0.6.0"><meta data-react-helmet="true" property="og:title" content="Submarine Launcher | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/designDocs/wip-designs/submarine-launcher"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/designDocs/wip-designs/submarine-launcher"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/58f10d9f.a5917f48.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/f8f6d32b.d2e6640e.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/58f10d9f.87a860a5.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/f8f6d32b.1f2be71c.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -40,15 +40,15 @@
 and run the service or workspace container in this cluster through scheduling algorithms.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="launcher-on-kubernetes"></a>Launcher On Kubernetes<a class="hash-link" href="#launcher-on-kubernetes" title="Direct link to heading">#</a></h3><p>submarine operator</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="launcher-on-yarn"></a>Launcher On Yarn<a class="hash-link" href="#launcher-on-yarn" title="Direct link to heading">#</a></h3><p>[TODO]</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="launcher-on-aws"></a>Launcher On AWS<a class="hash-link" href="#launcher-on-aws" title="Direct link to heading">#</a></h3><p>[TODO]</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="launcher-on-gcp"></a>Launcher On GCP<a class="hash-link" href="#launcher-on-gcp" title="Direct link to heading">#</a></h3><p>[TODO]</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="launcher-on-azure"></a>Launcher On Azure<a class="hash-link" href="#launcher-on-azure" title="Direct link to heading">#</a></h3><p>[TODO]</p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/designDocs/wip-designs/submarine-launcher.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/designDocs/submarine-server/experimentSpec"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Generic Expeiment Spec</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/designDocs/wip-designs/submarine-clusterServer"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Cluster Server Design - High-Availability »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#introduction" class="table-of-contents__link">Introduction</a></li><li><a href="#requirement" class="table-of-contents__link">Requirement</a><ul><li><a href="#cloud-native-service" class="table-of-contents__link">Cloud-Native Service</a></li><li><a href="#service-discovery" class="table-of-contents__link">Service discovery</a></li></ul></li><li><a href="#design" class="table-of-contents__link">Design</a><ul><li><a href="#launcher" class="table-of-contents__link">Launcher</a></li><li><a href="#launcher-on-docker" class="table-of-contents__link">Launcher On Docker</a></li><li><a href="#launcher-on-kubernetes" class="table-of-contents__link">Launcher On Kubernetes</a></li><li><a href="#launcher-on-yarn" class="table-of-contents__link">Launcher On Yarn</a></li><li><a href="#launcher-on-aws" class="table-of-contents__link">Launcher On AWS</a></li><li><a href="#launcher-on-gcp" class="table-of-contents__link">Launcher On GCP</a></li><li><a href="#launcher-on-azure" class="table-of-contents__link">Launcher On Azure</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/58f10d9f.a5917f48.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/f8f6d32b.d2e6640e.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/58f10d9f.87a860a5.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/f8f6d32b.1f2be71c.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/devDocs/BuildFromCode/index.html b/docs/devDocs/BuildFromCode/index.html
index cb1dde9..bfde0ce 100644
--- a/docs/devDocs/BuildFromCode/index.html
+++ b/docs/devDocs/BuildFromCode/index.html
@@ -6,16 +6,16 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">How to Build Submarine | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="0.6.0"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-0.6.0"><meta data-react-helmet="true" property="og:title" content="How to Build Submarine | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/devDocs/BuildFromCode"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/devDocs/BuildFromCode"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/58f10d9f.a5917f48.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/d46271b0.c38c1297.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/58f10d9f.87a860a5.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/d46271b0.21db8d89.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -25,15 +25,15 @@
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"># Replace &#x27;mvn&#x27; with &#x27;mvnw&#x27;. Example:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">./mvnw clean package -DskipTests</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/devDocs/BuildFromCode.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/devDocs/Dependencies"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Dependencies for Submarine</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/devDocs/Development"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Development Guide »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#prerequisites" class="table-of-contents__link">Prerequisites</a></li><li><a href="#quick-start" class="table-of-contents__link">Quick Start</a><ul><li><a href="#build-your-custom-submarine-docker-images" class="table-of-contents__link">Build Your Custom Submarine Docker Images</a></li><li><a href="#building-source-code--binary-distribution" class="table-of-contents__link">Building source code / binary distribution</a></li><li><a href="#building-source-code--binary-distribution-with-maven-wrapper" class="table-of-contents__link">Building source code / binary distribution with Maven Wrapper</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/58f10d9f.a5917f48.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/d46271b0.c38c1297.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/58f10d9f.87a860a5.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/d46271b0.21db8d89.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/devDocs/Dependencies/index.html b/docs/devDocs/Dependencies/index.html
index 36b2925..9efd31f 100644
--- a/docs/devDocs/Dependencies/index.html
+++ b/docs/devDocs/Dependencies/index.html
@@ -6,31 +6,31 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Dependencies for Submarine | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="0.6.0"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-0.6.0"><meta data-react-helmet="true" property="og:title" content="Dependencies for Submarine | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/devDocs/Dependencies"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/devDocs/Dependencies"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/58f10d9f.a5917f48.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/3593fe0f.2d123764.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/58f10d9f.87a860a5.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/3593fe0f.c6639d87.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/">0.6.0</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/next/devDocs/Dependencies">master 🏃</a></li><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/devDocs/Dependencies">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/devDocs/Dependencies">master 🏃</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/devDocs/Dependencies">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/submarine-sdk/model-client">Model Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Security</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/submarine-security/spark-security/README">Submarine Spark Security Plugin</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin">Building Submarine Spark Security Plugin</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Administrator Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine on Yarn</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/adminDocs/yarn/README">Running Submarine on YARN</a></li></ul></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/community/contributing">How To Contribute to Submarine</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/submarine-server/experimentSpec">Generic Expeiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: 0.6.0</span></div><header><h1 class="docTitle_Oumm">Dependencies for Submarine</h1></header><div class="markdown"><ul><li>These are the dependencies currently used by Apache Submarine.</li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="kubernetes"></a>Kubernetes<a class="hash-link" href="#kubernetes" title="Direct link to heading">#</a></h2><table><thead><tr><th>Kubernetes Version</th><th align="center">Support?</th></tr></thead><tbody><tr><td>1.13.x (or earlier)</td><td align="center">X</td></tr><tr><td>1.14.x</td><td align="center">√</td></tr><tr><td>1.15.x</td><td align="center">√</td></tr><tr><td>1.16.x</td><td align="center">√</td></tr><tr><td>1.17.x</td><td align="center">To be verified</td></tr><tr><td>1.18.x</td><td align="center">To be verified</td></tr></tbody></table><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="kind"></a>KinD<a class="hash-link" href="#kind" title="Direct link to heading">#</a></h2><table><thead><tr><th>KinD Version</th><th align="center">Support?</th></tr></thead><tbody><tr><td>0.5.x (or earlier)</td><td align="center">X</td></tr><tr><td>0.6.x</td><td align="center">√</td></tr><tr><td>0.7.x</td><td align="center">√</td></tr><tr><td>0.8.x</td><td align="center">√</td></tr><tr><td>0.9.x</td><td align="center">√</td></tr><tr><td>0.10.x</td><td align="center">√</td></tr><tr><td>0.11.x</td><td align="center">√</td></tr></tbody></table><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="java"></a>Java<a class="hash-link" href="#java" title="Direct link to heading">#</a></h2><ul><li>TODO</li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="maven"></a>Maven<a class="hash-link" href="#maven" title="Direct link to heading">#</a></h2><ul><li>TODO</li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="docker"></a>Docker<a class="hash-link" href="#docker" title="Direct link to heading">#</a></h2><ul><li>TODO</li></ul></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/devDocs/Dependencies.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/devDocs/README"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Project Architecture</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/devDocs/BuildFromCode"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">How to Build Submarine »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#kubernetes" class="table-of-contents__link">Kubernetes</a></li><li><a href="#kind" class="table-of-contents__link">KinD</a></li><li><a href="#java" class="table-of-contents__link">Java</a></li><li><a href="#maven" class="table-of-contents__link">Maven</a></li><li><a href="#docker" class="table-of-contents__link">Docker</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/58f10d9f.a5917f48.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/3593fe0f.2d123764.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/58f10d9f.87a860a5.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/3593fe0f.c6639d87.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/devDocs/Development/index.html b/docs/devDocs/Development/index.html
index 97e6dfc..72aa349 100644
--- a/docs/devDocs/Development/index.html
+++ b/docs/devDocs/Development/index.html
@@ -6,16 +6,16 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Development Guide | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="0.6.0"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-0.6.0"><meta data-react-helmet="true" property="og:title" content="Development Guide | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/devDocs/Development"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/devDocs/Development"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/58f10d9f.a5917f48.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/cce3422b.24d814ea.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/58f10d9f.87a860a5.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/cce3422b.0e2a0abd.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -27,15 +27,15 @@
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Method2 -- use port-forwarding</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">kubectl port-forward --address </span><span class="token number" style="color:rgb(247, 140, 108)">0.0</span><span class="token plain">.0.0 -n submarine-user-test service/traefik </span><span class="token number" style="color:rgb(247, 140, 108)">32080</span><span class="token plain">:80</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></li><li><p>View workbench</p><p>If you use method 1 in step 5, please go to <code>http://{minikube ip}:32080</code>, ex: <a href="http://192.168.49.2:32080" target="_blank" rel="noopener noreferrer">http://192.168.49.2:32080</a></p><p>If you use method 2 in step 5, please go to <a href="http://127.0.0.1:32080" target="_blank" rel="noopener noreferrer">http://127.0.0.1:32080</a></p></li><li><p>Delete submarine</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">kubectl delete submarine example-submarine -n submarine-user-test</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></li><li><p>Stop the operator</p><p>Press ctrl+c to stop the operator.</p></li><li><p>Uninstall helm chart dependencies</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">helm delete submarine-operator</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></li></ol><p>For other details, please check out the <a href="https://github.com/apache/submarine/blob/master/submarine-cloud-v2/README.md" target="_blank" rel="noopener noreferrer">README</a> and <a href="https://github.com/apache/submarine/blob/master/submarine-cloud-v2/docs/developer-guide.md" target="_blank" rel="noopener noreferrer">Developer Guide</a> on GitHub.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="develop-submarine-website"></a>Develop Submarine Website<a class="hash-link" href="#develop-submarine-website" title="Direct link to heading">#</a></h2><p>Submarine website is built using <a href="https://v2.docusaurus.io/" target="_blank" rel="noopener noreferrer">Docusaurus 2</a>, a modern static website generator.</p><p>We store all the website content in markdown format in the <code>submarine/website/docs</code>. When committing a new patch to the <code>submarine</code> repo, Docusaurus will help us generate the <code>html</code> and <code>javascript</code> files and push them to  <a href="https://github.com/apache/submarine-site/tree/asf-site" target="_blank" rel="noopener noreferrer">https://github.com/apache/submarine-site/tree/asf-site</a>.</p><p>To update the website, click “Edit this page” on the website.</p><p><img src="https://lh4.googleusercontent.com/gYcKpxbsGAKv2giTRqkxOehPGnuvnhE31WjsAsYhFmACIZF3Wh2ipar7mZ7F_KRwecM-L1J8YJAgNigJsJUjqc-5IXeO2XGxCIcYpP9CdSc3YByuUkjT_Bezby2HHtkBLyE1ZY_F"></p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="add-a-new-page"></a>Add a new page<a class="hash-link" href="#add-a-new-page" title="Direct link to heading">#</a></h3><p>If you want to add a new page to the website, make sure to add the file path to <a href="https://github.com/apache/submarine/blob/master/website/sidebars.js" target="_blank" rel="noopener noreferrer">sidebars.js</a>. </p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="installation"></a>Installation<a class="hash-link" href="#installation" title="Direct link to heading">#</a></h3><p>We use the yarn package manager to install all dependencies for the website</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-console codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">yarn install</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="build"></a>Build<a class="hash-link" href="#build" title="Direct link to heading">#</a></h3><p>Make sure you can successfully build the website before creating a pull request.</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-console codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">yarn build</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="local-development"></a>Local Development<a class="hash-link" href="#local-development" title="Direct link to heading">#</a></h3><p>This command starts a local development server and open up a browser window. Most changes are reflected live without having to restart the server.</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-console codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">yarn start</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/devDocs/Development.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/devDocs/BuildFromCode"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« How to Build Submarine</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/devDocs/IntegrationTestK8s"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">How to Run Integration K8s Test »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#video" class="table-of-contents__link">Video</a></li><li><a href="#develop-server" class="table-of-contents__link">Develop server</a><ul><li><a href="#prerequisites" class="table-of-contents__link">Prerequisites</a></li><li><a href="#setting-up-checkstyle-in-ide" class="table-of-contents__link">Setting up checkstyle in IDE</a></li><li><a href="#testing" class="table-of-contents__link">Testing</a></li><li><a href="#build-from-source" class="table-of-contents__link">Build from source</a></li></ul></li><li><a href="#develop-workbench" class="table-of-contents__link">Develop workbench</a></li><li><a href="#develop-database" class="table-of-contents__link">Develop database</a></li><li><a href="#develop-submarine-website" class="table-of-contents__link">Develop Submarine Website</a><ul><li><a href="#add-a-new-page" class="table-of-contents__link">Add a new page</a></li><li><a href="#installation" class="table-of-contents__link">Installation</a></li><li><a href="#build" class="table-of-contents__link">Build</a></li><li><a href="#local-development" class="table-of-contents__link">Local Development</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/58f10d9f.a5917f48.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/cce3422b.24d814ea.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/58f10d9f.87a860a5.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/cce3422b.0e2a0abd.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/devDocs/IntegrationTestE2E/index.html b/docs/devDocs/IntegrationTestE2E/index.html
index beabd1c..2220b0f 100644
--- a/docs/devDocs/IntegrationTestE2E/index.html
+++ b/docs/devDocs/IntegrationTestE2E/index.html
@@ -6,16 +6,16 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">How to Run Frontend Integration Test | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="0.6.0"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-0.6.0"><meta data-react-helmet="true" property="og:title" content="How to Run Frontend Integration Test | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!---"><meta data-react-helmet="true" property="og:description" content="&lt;!---"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/devDocs/IntegrationTestE2E"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/devDocs/IntegrationTestE2E"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/58f10d9f.a5917f48.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/31912795.98e9dc75.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/58f10d9f.87a860a5.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/31912795.c85b65ac.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -24,15 +24,15 @@
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Method 2:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">mvn clean </span><span class="token function" style="color:rgb(130, 170, 255)">install</span><span class="token plain"> -U</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="run-e2e-test-in-github-actions"></a>Run E2E test in GitHub Actions<a class="hash-link" href="#run-e2e-test-in-github-actions" title="Direct link to heading">#</a></h2><ul><li>Each time a commit is pushed, GitHub Actions will be triggered automatically.</li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="add-a-new-frontend-e2e-test-case"></a>Add a new frontend E2E test case<a class="hash-link" href="#add-a-new-frontend-e2e-test-case" title="Direct link to heading">#</a></h2><ul><li><strong>WARNING</strong><ul><li>You <strong>MUST</strong> read the <a href="https://www.selenium.dev/documentation/en/webdriver/waits/" target="_blank" rel="noopener noreferrer">document</a> carefully, and understand the difference between <strong>explicit wait</strong>, <strong>implicit wait</strong>, and <strong>fluent wait</strong>.</li><li><strong>Do not mix implicit and explicit waits.</strong> Doing so can cause unpredictable wait times.</li></ul></li><li>We define many useful functions in <a href="https://github.com/apache/submarine/blob/master/submarine-test/test-e2e/src/test/java/org/apache/submarine/AbstractSubmarineIT.java" target="_blank" rel="noopener noreferrer">AbstractSubmarineIT.java</a>.</li></ul></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/devDocs/IntegrationTestE2E.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/devDocs/IntegrationTestK8s"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« How to Run Integration K8s Test</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/community/README"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Apache Submarine Community »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#introduction" class="table-of-contents__link">Introduction</a></li><li><a href="#run-e2e-test-locally" class="table-of-contents__link">Run E2E test locally</a></li><li><a href="#run-e2e-test-in-github-actions" class="table-of-contents__link">Run E2E test in GitHub Actions</a></li><li><a href="#add-a-new-frontend-e2e-test-case" class="table-of-contents__link">Add a new frontend E2E test case</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/58f10d9f.a5917f48.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/31912795.98e9dc75.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/58f10d9f.87a860a5.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/31912795.c85b65ac.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/devDocs/IntegrationTestK8s/index.html b/docs/devDocs/IntegrationTestK8s/index.html
index bfb2998..ab5a20d 100644
--- a/docs/devDocs/IntegrationTestK8s/index.html
+++ b/docs/devDocs/IntegrationTestK8s/index.html
@@ -6,31 +6,31 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">How to Run Integration K8s Test | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="0.6.0"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-0.6.0"><meta data-react-helmet="true" property="og:title" content="How to Run Integration K8s Test | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!---"><meta data-react-helmet="true" property="og:description" content="&lt;!---"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/devDocs/IntegrationTestK8s"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/devDocs/IntegrationTestK8s"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/58f10d9f.a5917f48.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/446ff6dc.128da00b.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/58f10d9f.87a860a5.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/446ff6dc.e4439fe0.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/">0.6.0</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/next/devDocs/IntegrationTestK8s">master 🏃</a></li><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/devDocs/IntegrationTestK8s">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/devDocs/IntegrationTestK8s">master 🏃</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/devDocs/IntegrationTestK8s">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/submarine-sdk/model-client">Model Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Security</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/submarine-security/spark-security/README">Submarine Spark Security Plugin</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin">Building Submarine Spark Security Plugin</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Administrator Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine on Yarn</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/adminDocs/yarn/README">Running Submarine on YARN</a></li></ul></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/community/contributing">How To Contribute to Submarine</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/submarine-server/experimentSpec">Generic Expeiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: 0.6.0</span></div><header><h1 class="docTitle_Oumm">How to Run Integration K8s Test</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="introduction"></a>Introduction<a class="hash-link" href="#introduction" title="Direct link to heading">#</a></h2><ul><li><p>The test cases under the directory <code>test-k8s</code> are integration tests to ensure the correctness of the Submarine RESTful API.</p></li><li><p>You can run these tests either locally or on GitHub Actions.</p><ul><li>Before running the tests, the minikube (KinD) cluster must be created. </li><li>Then, compile and package the submarine project in <code>submarine-dist</code> directory for building a docker image. </li><li>In addition, the 8080 port in submarine-traefik should be forwarded.</li></ul></li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="run-k8s-test-locally"></a>Run k8s test locally<a class="hash-link" href="#run-k8s-test-locally" title="Direct link to heading">#</a></h2><ol><li><p>Ensure you have setup the KinD cluster or minikube cluster. If you haven&#x27;t, follow this <a href="https://minikube.sigs.k8s.io/docs/start/" target="_blank" rel="noopener noreferrer"><code>minikube tutorial</code></a></p></li><li><p>Build the submarine from source and upgrade the server pod through this <a href="/docs/devDocs/Development/#build-from-source"><code>guide</code></a></p></li><li><p>Forward port</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">kubectl port-forward --address </span><span class="token number" style="color:rgb(247, 140, 108)">0.0</span><span class="token plain">.0.0 service/submarine-traefik </span><span class="token number" style="color:rgb(247, 140, 108)">8080</span><span class="token plain">:80</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></li><li><p>Install the latest package &quot;submarine-server-core&quot; into the local repository, for use as a dependency in the module <code>test-k8s</code></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">mvn </span><span class="token function" style="color:rgb(130, 170, 255)">install</span><span class="token plain"> -DskipTests</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></li><li><p>Execute the test command</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">mvn verify -DskipRat -pl :submarine-test-k8s -Phadoop-2.9 -B</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></li></ol><p><img src="/assets/images/test-k8s-result-883d99774542cc9898f086937cb80190.png"></p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="run-k8s-test-in-github-actions"></a>Run k8s test in GitHub Actions<a class="hash-link" href="#run-k8s-test-in-github-actions" title="Direct link to heading">#</a></h2><ul><li>Each time a code is submitted, GitHub Actions is triggered automatically.</li></ul></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/devDocs/IntegrationTestK8s.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/devDocs/Development"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Development Guide</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/devDocs/IntegrationTestE2E"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">How to Run Frontend Integration Test »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#introduction" class="table-of-contents__link">Introduction</a></li><li><a href="#run-k8s-test-locally" class="table-of-contents__link">Run k8s test locally</a></li><li><a href="#run-k8s-test-in-github-actions" class="table-of-contents__link">Run k8s test in GitHub Actions</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/58f10d9f.a5917f48.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/446ff6dc.128da00b.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/58f10d9f.87a860a5.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/446ff6dc.e4439fe0.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/devDocs/README/index.html b/docs/devDocs/README/index.html
index 3ea8260..fb10975 100644
--- a/docs/devDocs/README/index.html
+++ b/docs/devDocs/README/index.html
@@ -6,16 +6,16 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Project Architecture | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="0.6.0"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-0.6.0"><meta data-react-helmet="true" property="og:title" content="Project Architecture | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/devDocs/README"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/devDocs/README"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/58f10d9f.a5917f48.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/fa8b9269.a0c0d121.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/58f10d9f.87a860a5.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/fa8b9269.421b7629.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -30,15 +30,15 @@
 required by yarn-3.1+.</li></ul></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/devDocs/README.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/adminDocs/yarn/README"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Running Submarine on YARN</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/devDocs/Dependencies"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Dependencies for Submarine »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#1-introduction" class="table-of-contents__link">1. Introduction</a></li><li><a href="#2-submarine-project-structure" class="table-of-contents__link">2. Submarine Project Structure</a><ul><li><a href="#21-submarine-client" class="table-of-contents__link">2.1. submarine-client</a></li><li><a href="#22-submarine-cloud-v2" class="table-of-contents__link">2.2. submarine-cloud-v2</a></li><li><a href="#23-submarine-commons" class="table-of-contents__link">2.3. submarine-commons</a></li><li><a href="#24-submarine-dist" class="table-of-contents__link">2.4. submarine-dist</a></li><li><a href="#25-submarine-sdk" class="table-of-contents__link">2.5. submarine-sdk</a></li><li><a href="#26-submarine-security" class="table-of-contents__link">2.6. submarine-security</a></li><li><a href="#27-submarine-server" class="table-of-contents__link">2.7. submarine-server</a></li><li><a href="#28-submarine-test" class="table-of-contents__link">2.8. submarine-test</a></li><li><a href="#29-submarine-workbench" class="table-of-contents__link">2.9. submarine-workbench</a></li><li><a href="#210-dev-support" class="table-of-contents__link">2.10 dev-support</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/58f10d9f.a5917f48.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/fa8b9269.a0c0d121.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/58f10d9f.87a860a5.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/fa8b9269.421b7629.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/download/index.html b/docs/download/index.html
index 7fe0fe4..a926dca 100644
--- a/docs/download/index.html
+++ b/docs/download/index.html
@@ -6,16 +6,16 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Download Apache Submarine | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="0.6.0"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-0.6.0"><meta data-react-helmet="true" property="og:title" content="Download Apache Submarine | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/download"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/download"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/58f10d9f.a5917f48.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/c5a80c58.e9726add.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/58f10d9f.87a860a5.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/c5a80c58.58d174c9.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -52,15 +52,15 @@
 <a href="https://www.apache.org/dist/hadoop/common/hadoop-3.2.0/hadoop-3.2.0-src.tar.gz.asc" target="_blank" rel="noopener noreferrer">signature</a>)</p></li></ul></li></ul></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/download.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"></div><div class="pagination-nav__item pagination-nav__item--next"></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#verify-the-integrity-of-the-files" class="table-of-contents__link">Verify the integrity of the files</a></li><li><a href="#old-releases" class="table-of-contents__link">Old releases</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/58f10d9f.a5917f48.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/c5a80c58.e9726add.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/58f10d9f.87a860a5.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/c5a80c58.58d174c9.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs/index.html b/docs/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs/index.html
index 4abf736..2dc2769 100644
--- a/docs/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs/index.html
+++ b/docs/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs/index.html
@@ -6,20 +6,20 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">RunningDistributedThchs30KaldiJobs | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="0.6.0"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-0.6.0"><meta data-react-helmet="true" property="og:title" content="RunningDistributedThchs30KaldiJobs | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/58f10d9f.a5917f48.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/a86c7af5.afd767e1.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/58f10d9f.87a860a5.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/a86c7af5.03050a49.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link" href="/docs/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/api/environment">API</a><a class="navbar__item navbar__link navbar__link--active" href="/docs/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/">0.6.0</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/next/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs">master 🏃</a></li><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs">master 🏃</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: 0.6.0</span></div><header><h1 class="docTitle_Oumm">RunningDistributedThchs30KaldiJobs</h1></header><div class="markdown"><h1><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="thchs30-kaldi-example-with-yarn-service"></a>Thchs30 Kaldi Example With YARN Service<a class="hash-link" href="#thchs30-kaldi-example-with-yarn-service" title="Direct link to heading">#</a></h1><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="prepare-data-for-training"></a>Prepare data for training<a class="hash-link" href="#prepare-data-for-training" title="Direct link to heading">#</a></h2><p>Thchs30 is a common benchmark in machine learning for speech data and transcripts. Below example is based on Thchs30 dataset.</p><p>1) download gz file:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">THCHS30_PATH=/data/hdfs1/nfs/aisearch/kaldi/thchs30</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">mkdir $THCHS30_PATH/data &amp;&amp; cd $THCHS30_PATH/data</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">wget http://www.openslr.org/resources/18/data_thchs30.tgz</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">wget http://www.openslr.org/resources/18/test-noise.tgz</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">wget http://www.openslr.org/resources/18/resource.tgz</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>2) Checkout <a href="https://github.com/apache/submarine.git" target="_blank" rel="noopener noreferrer">https://github.com/apache/submarine.git</a>:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">git clone https://github.com/apache/submarine.git</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>3) Go to <code>submarine/docker/ecosystem/</code></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">cp -r ./kaldi/sge $THCHS30_PATH/sge</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>4) optional,Modify <code>/opt/kaldi/egs/thchs30/s5/cmd.sh</code> in the Container,This queue is used by default</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">export train_cmd=&quot;queue.pl -q all.q&quot;</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>Warning:</strong></p><p>Please note that YARN service doesn&#x27;t allow multiple services with the same name, so please run following command</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">yarn application -destroy &lt;service-name&gt;</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>to delete services if you want to reuse the same service name.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="prepare-docker-images"></a>Prepare Docker images<a class="hash-link" href="#prepare-docker-images" title="Direct link to heading">#</a></h2><p>Refer to <a href="/docs/ecosystem/kaldi/WriteDockerfileKaldi">Write Dockerfile</a> to build a Docker image or use prebuilt one:</p><ul><li>hadoopsubmarine/kaldi-latest-gpu-base:0.0.1</li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="run-kaldi-jobs"></a>Run Kaldi jobs<a class="hash-link" href="#run-kaldi-jobs" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="run-distributed-training"></a>Run distributed training<a class="hash-link" href="#run-distributed-training" title="Direct link to heading">#</a></h3><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain"># Change the variables according to your needs</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">SUBMARINE_VERSION=3.3.0-SNAPSHOT</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">WORKER_NUM=2</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">SGE_CFG_PATH=/cfg</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">THCHS30_PATH=/data/hdfs1/nfs/aisearch/kaldi/thchs30</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">DOCKER_HADOOP_HDFS_HOME=/app/${SUBMARINE_VERSION}</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link" href="/docs/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/api/environment">API</a><a class="navbar__item navbar__link navbar__link--active" href="/docs/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/">0.6.0</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/next/">master 🏃</a></li><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/">master 🏃</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: 0.6.0</span></div><header><h1 class="docTitle_Oumm">RunningDistributedThchs30KaldiJobs</h1></header><div class="markdown"><h1><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="thchs30-kaldi-example-with-yarn-service"></a>Thchs30 Kaldi Example With YARN Service<a class="hash-link" href="#thchs30-kaldi-example-with-yarn-service" title="Direct link to heading">#</a></h1><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="prepare-data-for-training"></a>Prepare data for training<a class="hash-link" href="#prepare-data-for-training" title="Direct link to heading">#</a></h2><p>Thchs30 is a common benchmark in machine learning for speech data and transcripts. Below example is based on Thchs30 dataset.</p><p>1) download gz file:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">THCHS30_PATH=/data/hdfs1/nfs/aisearch/kaldi/thchs30</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">mkdir $THCHS30_PATH/data &amp;&amp; cd $THCHS30_PATH/data</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">wget http://www.openslr.org/resources/18/data_thchs30.tgz</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">wget http://www.openslr.org/resources/18/test-noise.tgz</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">wget http://www.openslr.org/resources/18/resource.tgz</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>2) Checkout <a href="https://github.com/apache/submarine.git" target="_blank" rel="noopener noreferrer">https://github.com/apache/submarine.git</a>:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">git clone https://github.com/apache/submarine.git</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>3) Go to <code>submarine/docker/ecosystem/</code></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">cp -r ./kaldi/sge $THCHS30_PATH/sge</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>4) optional,Modify <code>/opt/kaldi/egs/thchs30/s5/cmd.sh</code> in the Container,This queue is used by default</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">export train_cmd=&quot;queue.pl -q all.q&quot;</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>Warning:</strong></p><p>Please note that YARN service doesn&#x27;t allow multiple services with the same name, so please run following command</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">yarn application -destroy &lt;service-name&gt;</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>to delete services if you want to reuse the same service name.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="prepare-docker-images"></a>Prepare Docker images<a class="hash-link" href="#prepare-docker-images" title="Direct link to heading">#</a></h2><p>Refer to <a href="/docs/ecosystem/kaldi/WriteDockerfileKaldi">Write Dockerfile</a> to build a Docker image or use prebuilt one:</p><ul><li>hadoopsubmarine/kaldi-latest-gpu-base:0.0.1</li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="run-kaldi-jobs"></a>Run Kaldi jobs<a class="hash-link" href="#run-kaldi-jobs" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="run-distributed-training"></a>Run distributed training<a class="hash-link" href="#run-distributed-training" title="Direct link to heading">#</a></h3><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain"># Change the variables according to your needs</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">SUBMARINE_VERSION=3.3.0-SNAPSHOT</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">WORKER_NUM=2</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">SGE_CFG_PATH=/cfg</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">THCHS30_PATH=/data/hdfs1/nfs/aisearch/kaldi/thchs30</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">DOCKER_HADOOP_HDFS_HOME=/app/${SUBMARINE_VERSION}</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"># Dependent on registrydns, you must fill in &lt; your RegistryDNSIP&gt; in resolv.conf</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">yarn jar /usr/local/matrix/share/hadoop/yarn/${SUBMARINE_VERSION}.jar \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">job run --name kaldi-thchs30-distributed \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">--env DOCKER_JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre/ \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">--env DOCKER_HADOOP_HDFS_HOME=$DOCKER_HADOOP_HDFS_HOME \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">--env YARN_CONTAINER_RUNTIME_DOCKER_CONTAINER_NETWORK=calico-network \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">--env PYTHONUNBUFFERED=&quot;0&quot; \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">--env TZ=&quot;Asia/Shanghai&quot; \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">--env YARN_CONTAINER_RUNTIME_DOCKER_MOUNTS=${THCHS30_PATH}/sge/resolv.conf:/etc/resolv.conf,\</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">${THCHS30_PATH}/sge/passwd:/etc/passwd:rw,\</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">${THCHS30_PATH}/sge/group:/etc/group:rw,\</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">${THCHS30_PATH}/sge:$SGE_CFG_PATH,\</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">${THCHS30_PATH}/data:/opt/kaldi/egs/thchs30,\</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">${THCHS30_PATH}/mul/s5:/opt/kaldi/egs/mul-thchs30/s5 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">--input_path /opt/kaldi/egs/thchs30/data \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">--docker_image hadoopsubmarine/kaldi-latest-gpu-base:0.0.1 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">--num_workers $WORKER_NUM \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">--worker_resources memory=64G,vcores=32,gpu=1 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">--worker_launch_cmd &quot;sudo mkdir -p /opt/kaldi/egs/mul-thchs30/s5 &amp;&amp; \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">sudo cp /opt/kaldi/egs/thchs30/s5/* /opt/kaldi/egs/mul-thchs30/s5 -r &amp;&amp; \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">cluster_user=`whoami` domain_suffix=&quot;ml.com&quot; &amp;&amp; \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">cd /cfg &amp;&amp; bash sge_run.sh $WORKER_NUM $SGE_CFG_PATH &amp;&amp; \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">if [ $(echo $HOST_NAME |grep &quot;^master-&quot;) ] then sleep 2m &amp;&amp; cd /opt/kaldi/egs/mul-thchs30/s5 &amp;&amp; ./run.sh fi&quot; \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">--verbose</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Explanations:</p><ul><li><code>&gt;1</code> num_workers indicates it is a distributed training.</li><li>Parameters / resources / Docker image of parameter server can be specified separately. For many cases, parameter server doesn&#x27;t require GPU.We don&#x27;t need parameter server here</li></ul><p>For the meaning of the individual parameters, see the <a href="/docs/adminDocs/yarn/README">QuickStart</a> page!</p><p><em>Outputs of distributed training</em></p><p>Sample output of master:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Reading package lists...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Building dependency tree...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Reading state information...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">The following additional packages will be installed:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  bsd-mailx cpio gridengine-common ifupdown iproute2 isc-dhcp-client</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  isc-dhcp-common libatm1 libdns-export162 libisc-export160 liblockfile-bin</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  liblockfile1 libmnl0 libxmuu1 libxtables11 ncurses-term netbase</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  openssh-client openssh-server openssh-sftp-server postfix python3-chardet</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  python3-pkg-resources python3-requests python3-six python3-urllib3</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  ssh-import-id ssl-cert tcsh xauth</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Suggested packages:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  libarchive1 gridengine-qmon ppp rdnssd iproute2-doc resolvconf avahi-autoipd</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  isc-dhcp-client-ddns apparmor ssh-askpass libpam-ssh keychain monkeysphere</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  rssh molly-guard ufw procmail postfix-mysql postfix-pgsql postfix-ldap</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  postfix-pcre sasl2-bin libsasl2-modules dovecot-common postfix-cdb</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  postfix-doc python3-setuptools python3-ndg-httpsclient python3-openssl</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  python3-pyasn1 openssl-blacklist</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">The following NEW packages will be installed:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  bsd-mailx cpio gridengine-client gridengine-common gridengine-exec</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  gridengine-master ifupdown iproute2 isc-dhcp-client isc-dhcp-common libatm1</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  libdns-export162 libisc-export160 liblockfile-bin liblockfile1 libmnl0</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  libxmuu1 libxtables11 ncurses-term netbase openssh-client openssh-server</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  openssh-sftp-server postfix python3-chardet python3-pkg-resources</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  python3-requests python3-six python3-urllib3 ssh-import-id ssl-cert tcsh</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  xauth</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">0 upgraded, 33 newly installed, 0 to remove and 30 not upgraded.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Need to get 12.1 MB of archives.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">After this operation, 65.8 MB of additional disk space will be used.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:1 http://archive.ubuntu.com/ubuntu xenial/main amd64 libatm1 amd64 1:2.5.1-1.5 [24.2 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:2 http://archive.ubuntu.com/ubuntu xenial/main amd64 libmnl0 amd64 1.0.3-5 [12.0 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:3 http://archive.ubuntu.com/ubuntu xenial/main amd64 liblockfile-bin amd64 1.09-6ubuntu1 [10.8 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:4 http://archive.ubuntu.com/ubuntu xenial/main amd64 liblockfile1 amd64 1.09-6ubuntu1 [8056 B]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:5 http://archive.ubuntu.com/ubuntu xenial/main amd64 cpio amd64 2.11+dfsg-5ubuntu1 [74.8 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:6 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 iproute2 amd64 4.3.0-1ubuntu3.16.04.5 [523 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:7 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 ifupdown amd64 0.8.10ubuntu1.4 [54.9 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:8 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libisc-export160 amd64 1:9.10.3.dfsg.P4-8ubuntu1.15 [153 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:9 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libdns-export162 amd64 1:9.10.3.dfsg.P4-8ubuntu1.15 [665 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:10 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 isc-dhcp-client amd64 4.3.3-5ubuntu12.10 [224 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:11 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 isc-dhcp-common amd64 4.3.3-5ubuntu12.10 [105 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:12 http://archive.ubuntu.com/ubuntu xenial/main amd64 libxtables11 amd64 1.6.0-2ubuntu3 [27.2 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:13 http://archive.ubuntu.com/ubuntu xenial/main amd64 netbase all 5.3 [12.9 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:14 http://archive.ubuntu.com/ubuntu xenial/main amd64 libxmuu1 amd64 2:1.1.2-2 [9674 B]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:15 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 openssh-client amd64 1:7.2p2-4ubuntu2.8 [590 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:16 http://archive.ubuntu.com/ubuntu xenial/main amd64 xauth amd64 1:1.0.9-1ubuntu2 [22.7 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:17 http://archive.ubuntu.com/ubuntu xenial/main amd64 ssl-cert all 1.0.37 [16.9 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:18 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 postfix amd64 3.1.0-3ubuntu0.3 [1152 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:19 http://archive.ubuntu.com/ubuntu xenial/main amd64 bsd-mailx amd64 8.1.2-0.20160123cvs-2 [63.7 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:20 http://archive.ubuntu.com/ubuntu xenial/universe amd64 gridengine-common all 6.2u5-7.4 [156 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:21 http://archive.ubuntu.com/ubuntu xenial/universe amd64 gridengine-client amd64 6.2u5-7.4 [3394 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:22 http://archive.ubuntu.com/ubuntu xenial/universe amd64 tcsh amd64 6.18.01-5 [410 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:23 http://archive.ubuntu.com/ubuntu xenial/universe amd64 gridengine-exec amd64 6.2u5-7.4 [990 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:24 http://archive.ubuntu.com/ubuntu xenial/universe amd64 gridengine-master amd64 6.2u5-7.4 [2429 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:25 http://archive.ubuntu.com/ubuntu xenial/main amd64 ncurses-term all 6.0+20160213-1ubuntu1 [249 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:26 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 openssh-sftp-server amd64 1:7.2p2-4ubuntu2.8 [38.9 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:27 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 openssh-server amd64 1:7.2p2-4ubuntu2.8 [335 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:28 http://archive.ubuntu.com/ubuntu xenial/main amd64 python3-pkg-resources all 20.7.0-1 [79.0 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:29 http://archive.ubuntu.com/ubuntu xenial/main amd64 python3-chardet all 2.3.0-2 [96.2 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:30 http://archive.ubuntu.com/ubuntu xenial/main amd64 python3-six all 1.10.0-3 [11.0 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:31 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 python3-urllib3 all 1.13.1-2ubuntu0.16.04.3 [58.5 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:32 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 python3-requests all 2.9.1-3ubuntu0.1 [55.8 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:33 http://archive.ubuntu.com/ubuntu xenial/main amd64 ssh-import-id all 5.5-0ubuntu1 [10.2 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Fetched 12.1 MB in 0s (15.0 MB/s)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package libatm1:amd64.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 5%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 10%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 15%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 20%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 25%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 30%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 35%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 40%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 45%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 50%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 55%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 60%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 65%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 70%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 75%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 80%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 85%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 90%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 95%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 100%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 21398 files and directories currently installed.)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../libatm1_1%3a2.5.1-1.5_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking libatm1:amd64 (1:2.5.1-1.5) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package libmnl0:amd64.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../libmnl0_1.0.3-5_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking libmnl0:amd64 (1.0.3-5) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package liblockfile-bin.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../liblockfile-bin_1.09-6ubuntu1_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking liblockfile-bin (1.09-6ubuntu1) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package liblockfile1:amd64.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../liblockfile1_1.09-6ubuntu1_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking liblockfile1:amd64 (1.09-6ubuntu1) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package cpio.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../cpio_2.11+dfsg-5ubuntu1_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking cpio (2.11+dfsg-5ubuntu1) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package iproute2.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../iproute2_4.3.0-1ubuntu3.16.04.5_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking iproute2 (4.3.0-1ubuntu3.16.04.5) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package ifupdown.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../ifupdown_0.8.10ubuntu1.4_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking ifupdown (0.8.10ubuntu1.4) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package libisc-export160.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../libisc-export160_1%3a9.10.3.dfsg.P4-8ubuntu1.15_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking libisc-export160 (1:9.10.3.dfsg.P4-8ubuntu1.15) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package libdns-export162.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../libdns-export162_1%3a9.10.3.dfsg.P4-8ubuntu1.15_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking libdns-export162 (1:9.10.3.dfsg.P4-8ubuntu1.15) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package isc-dhcp-client.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../isc-dhcp-client_4.3.3-5ubuntu12.10_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking isc-dhcp-client (4.3.3-5ubuntu12.10) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package isc-dhcp-common.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../isc-dhcp-common_4.3.3-5ubuntu12.10_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking isc-dhcp-common (4.3.3-5ubuntu12.10) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package libxtables11:amd64.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../libxtables11_1.6.0-2ubuntu3_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking libxtables11:amd64 (1.6.0-2ubuntu3) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package netbase.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../archives/netbase_5.3_all.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking netbase (5.3) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package libxmuu1:amd64.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../libxmuu1_2%3a1.1.2-2_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking libxmuu1:amd64 (2:1.1.2-2) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package openssh-client.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../openssh-client_1%3a7.2p2-4ubuntu2.8_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking openssh-client (1:7.2p2-4ubuntu2.8) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package xauth.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../xauth_1%3a1.0.9-1ubuntu2_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking xauth (1:1.0.9-1ubuntu2) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package ssl-cert.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../ssl-cert_1.0.37_all.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking ssl-cert (1.0.37) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package postfix.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../postfix_3.1.0-3ubuntu0.3_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking postfix (3.1.0-3ubuntu0.3) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package bsd-mailx.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../bsd-mailx_8.1.2-0.20160123cvs-2_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking bsd-mailx (8.1.2-0.20160123cvs-2) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package gridengine-common.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../gridengine-common_6.2u5-7.4_all.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking gridengine-common (6.2u5-7.4) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package gridengine-client.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../gridengine-client_6.2u5-7.4_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking gridengine-client (6.2u5-7.4) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package tcsh.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../tcsh_6.18.01-5_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking tcsh (6.18.01-5) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package gridengine-exec.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../gridengine-exec_6.2u5-7.4_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking gridengine-exec (6.2u5-7.4) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package gridengine-master.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../gridengine-master_6.2u5-7.4_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking gridengine-master (6.2u5-7.4) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package ncurses-term.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../ncurses-term_6.0+20160213-1ubuntu1_all.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking ncurses-term (6.0+20160213-1ubuntu1) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package openssh-sftp-server.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../openssh-sftp-server_1%3a7.2p2-4ubuntu2.8_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking openssh-sftp-server (1:7.2p2-4ubuntu2.8) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package openssh-server.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../openssh-server_1%3a7.2p2-4ubuntu2.8_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking openssh-server (1:7.2p2-4ubuntu2.8) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package python3-pkg-resources.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../python3-pkg-resources_20.7.0-1_all.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking python3-pkg-resources (20.7.0-1) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package python3-chardet.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../python3-chardet_2.3.0-2_all.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking python3-chardet (2.3.0-2) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package python3-six.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../python3-six_1.10.0-3_all.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking python3-six (1.10.0-3) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package python3-urllib3.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../python3-urllib3_1.13.1-2ubuntu0.16.04.3_all.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking python3-urllib3 (1.13.1-2ubuntu0.16.04.3) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package python3-requests.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../python3-requests_2.9.1-3ubuntu0.1_all.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking python3-requests (2.9.1-3ubuntu0.1) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package ssh-import-id.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../ssh-import-id_5.5-0ubuntu1_all.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking ssh-import-id (5.5-0ubuntu1) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Processing triggers for systemd (229-4ubuntu21.22) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Processing triggers for libc-bin (2.23-0ubuntu11) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up libatm1:amd64 (1:2.5.1-1.5) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up libmnl0:amd64 (1.0.3-5) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up liblockfile-bin (1.09-6ubuntu1) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up liblockfile1:amd64 (1.09-6ubuntu1) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up cpio (2.11+dfsg-5ubuntu1) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">update-alternatives: using /bin/mt-gnu to provide /bin/mt (mt) in auto mode</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up iproute2 (4.3.0-1ubuntu3.16.04.5) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up ifupdown (0.8.10ubuntu1.4) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Creating /etc/network/interfaces.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up libisc-export160 (1:9.10.3.dfsg.P4-8ubuntu1.15) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up libdns-export162 (1:9.10.3.dfsg.P4-8ubuntu1.15) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up isc-dhcp-client (4.3.3-5ubuntu12.10) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up isc-dhcp-common (4.3.3-5ubuntu12.10) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up libxtables11:amd64 (1.6.0-2ubuntu3) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up netbase (5.3) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up libxmuu1:amd64 (2:1.1.2-2) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up openssh-client (1:7.2p2-4ubuntu2.8) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up xauth (1:1.0.9-1ubuntu2) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up ssl-cert (1.0.37) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up postfix (3.1.0-3ubuntu0.3) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Creating /etc/postfix/dynamicmaps.cf</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">setting myhostname: master-0.XXX</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">setting alias maps</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">setting alias database</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">changing /etc/mailname to master-0.XXX</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">setting myorigin</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">setting destinations: $myhostname, master-0.XXX, localhost.XXX, , localhost</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">setting relayhost:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">setting mynetworks: 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">setting mailbox_size_limit: 0</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">setting recipient_delimiter: +</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">setting inet_interfaces: all</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">setting inet_protocols: all</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">/etc/aliases does not exist, creating it.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">WARNING: /etc/aliases exists, but does not have a root alias.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Postfix is now set up with a default configuration.  If you need to make</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">changes, edit</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">/etc/postfix/main.cf (and others) as needed.  To view Postfix configuration</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">values, see postconf(1).</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">After modifying main.cf, be sure to run &#x27;/etc/init.d/postfix reload&#x27;.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
@@ -32,15 +32,15 @@
 <img alt="alt text" src="/assets/images/sge_cluster-b9ac6485a770b5f8a031b29f6f430810.png" title="SGE for multiple jobs"></p><p><img alt="alt text" src="/assets/images/sge_stat-29ad9dfe485895eb54eea5baad709e15.png" title="SGE for user multiple jobs"></p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"></div><div class="pagination-nav__item pagination-nav__item--next"></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#prepare-data-for-training" class="table-of-contents__link">Prepare data for training</a></li><li><a href="#prepare-docker-images" class="table-of-contents__link">Prepare Docker images</a></li><li><a href="#run-kaldi-jobs" class="table-of-contents__link">Run Kaldi jobs</a><ul><li><a href="#run-distributed-training" class="table-of-contents__link">Run distributed training</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/58f10d9f.a5917f48.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/a86c7af5.afd767e1.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/58f10d9f.87a860a5.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/a86c7af5.03050a49.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/ecosystem/kaldi/WriteDockerfileKaldi/index.html b/docs/ecosystem/kaldi/WriteDockerfileKaldi/index.html
index 01735bc..41a180c 100644
--- a/docs/ecosystem/kaldi/WriteDockerfileKaldi/index.html
+++ b/docs/ecosystem/kaldi/WriteDockerfileKaldi/index.html
@@ -6,34 +6,34 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">WriteDockerfileKaldi | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="0.6.0"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-0.6.0"><meta data-react-helmet="true" property="og:title" content="WriteDockerfileKaldi | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/ecosystem/kaldi/WriteDockerfileKaldi"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/ecosystem/kaldi/WriteDockerfileKaldi"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/58f10d9f.a5917f48.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/85b50ba6.282022a4.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/58f10d9f.87a860a5.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/85b50ba6.27af03f3.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link" href="/docs/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/api/environment">API</a><a class="navbar__item navbar__link navbar__link--active" href="/docs/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/">0.6.0</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/next/ecosystem/kaldi/WriteDockerfileKaldi">master 🏃</a></li><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/ecosystem/kaldi/WriteDockerfileKaldi">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/ecosystem/kaldi/WriteDockerfileKaldi">master 🏃</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/ecosystem/kaldi/WriteDockerfileKaldi">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: 0.6.0</span></div><header><h1 class="docTitle_Oumm">WriteDockerfileKaldi</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="creating-docker-images-for-running-kaldi-on-yarn"></a>Creating Docker Images for Running Kaldi on YARN<a class="hash-link" href="#creating-docker-images-for-running-kaldi-on-yarn" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="how-to-create-docker-images-to-run-kaldi-on-yarn"></a>How to create docker images to run Kaldi on YARN<a class="hash-link" href="#how-to-create-docker-images-to-run-kaldi-on-yarn" title="Direct link to heading">#</a></h3><p>Dockerfile to run Kaldi on YARN need two part:</p><p><strong>Base libraries which Kaldi depends on</strong></p><p>1) OS base image, for example <code>nvidia/cuda:10.0-cudnn7-devel-ubuntu18.04</code></p><p>2) Kaldi depended libraries and packages. For example <code>python</code>, <code>g++</code>, <code>make</code>. For GPU support, need <code>cuda</code>, <code>cudnn</code>, etc.</p><p>3) Kaldi compile.</p><p><strong>Libraries to access HDFS</strong></p><p>1) JDK</p><p>2) Hadoop</p><p>Here&#x27;s an example of a base image (w/o GPU support) to install Kaldi:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-shell codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">FROM nvidia/cuda:10.0-cudnn7-devel-ubuntu18.04</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link" href="/docs/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/api/environment">API</a><a class="navbar__item navbar__link navbar__link--active" href="/docs/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/">0.6.0</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/next/">master 🏃</a></li><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/ecosystem/kaldi/WriteDockerfileKaldi">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/">master 🏃</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/ecosystem/kaldi/WriteDockerfileKaldi">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: 0.6.0</span></div><header><h1 class="docTitle_Oumm">WriteDockerfileKaldi</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="creating-docker-images-for-running-kaldi-on-yarn"></a>Creating Docker Images for Running Kaldi on YARN<a class="hash-link" href="#creating-docker-images-for-running-kaldi-on-yarn" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="how-to-create-docker-images-to-run-kaldi-on-yarn"></a>How to create docker images to run Kaldi on YARN<a class="hash-link" href="#how-to-create-docker-images-to-run-kaldi-on-yarn" title="Direct link to heading">#</a></h3><p>Dockerfile to run Kaldi on YARN need two part:</p><p><strong>Base libraries which Kaldi depends on</strong></p><p>1) OS base image, for example <code>nvidia/cuda:10.0-cudnn7-devel-ubuntu18.04</code></p><p>2) Kaldi depended libraries and packages. For example <code>python</code>, <code>g++</code>, <code>make</code>. For GPU support, need <code>cuda</code>, <code>cudnn</code>, etc.</p><p>3) Kaldi compile.</p><p><strong>Libraries to access HDFS</strong></p><p>1) JDK</p><p>2) Hadoop</p><p>Here&#x27;s an example of a base image (w/o GPU support) to install Kaldi:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-shell codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">FROM nvidia/cuda:10.0-cudnn7-devel-ubuntu18.04</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">RUN </span><span class="token function" style="color:rgb(130, 170, 255)">apt-get</span><span class="token plain"> clean </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token function" style="color:rgb(130, 170, 255)">apt-get</span><span class="token plain"> update </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token function" style="color:rgb(130, 170, 255)">apt-get</span><span class="token plain"> </span><span class="token function" style="color:rgb(130, 170, 255)">install</span><span class="token plain"> -y --no-install-recommends </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token function" style="color:rgb(130, 170, 255)">sudo</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        openjdk-8-jdk </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        iputils-ping </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        g++ </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token function" style="color:rgb(130, 170, 255)">make</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        automake </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        autoconf </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token function" style="color:rgb(130, 170, 255)">bzip2</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token function" style="color:rgb(130, 170, 255)">unzip</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token function" style="color:rgb(130, 170, 255)">wget</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        sox </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        libtool </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token function" style="color:rgb(130, 170, 255)">git</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        subversion </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        python2.7 </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        python3 </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        zlib1g-dev </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        ca-certificates </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        patch </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        ffmpeg </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token function" style="color:rgb(130, 170, 255)">vim</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token function" style="color:rgb(130, 170, 255)">rm</span><span class="token plain"> -rf /var/lib/apt/lists/* </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token function" style="color:rgb(130, 170, 255)">ln</span><span class="token plain"> -s /usr/bin/python2.7 /usr/bin/python</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">RUN </span><span class="token function" style="color:rgb(130, 170, 255)">git</span><span class="token plain"> clone --depth </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token plain"> https://github.com/kaldi-asr/kaldi.git /opt/kaldi </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">cd</span><span class="token plain"> /opt/kaldi </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">cd</span><span class="token plain"> /opt/kaldi/tools </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    ./extras/install_mkl.sh </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token function" style="color:rgb(130, 170, 255)">make</span><span class="token plain"> -j </span><span class="token variable" style="color:rgb(191, 199, 213)">$(</span><span class="token variable" style="color:rgb(191, 199, 213)">nproc</span><span class="token variable" style="color:rgb(191, 199, 213)">)</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">cd</span><span class="token plain"> /opt/kaldi/src </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    ./configure --shared --use-cuda </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token function" style="color:rgb(130, 170, 255)">make</span><span class="token plain"> depend -j </span><span class="token variable" style="color:rgb(191, 199, 213)">$(</span><span class="token variable" style="color:rgb(191, 199, 213)">nproc</span><span class="token variable" style="color:rgb(191, 199, 213)">)</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token function" style="color:rgb(130, 170, 255)">make</span><span class="token plain"> -j </span><span class="token variable" style="color:rgb(191, 199, 213)">$(</span><span class="token variable" style="color:rgb(191, 199, 213)">nproc</span><span class="token variable" style="color:rgb(191, 199, 213)">)</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>On top of above image, add files, install packages to access HDFS</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-shell codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">RUN </span><span class="token function" style="color:rgb(130, 170, 255)">apt-get</span><span class="token plain"> update </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token function" style="color:rgb(130, 170, 255)">apt-get</span><span class="token plain"> </span><span class="token function" style="color:rgb(130, 170, 255)">install</span><span class="token plain"> -y openjdk-8-jdk </span><span class="token function" style="color:rgb(130, 170, 255)">wget</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Install hadoop</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">ENV </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">HADOOP_VERSION</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;3.2.1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">ENV </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">JAVA_HOME</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">/usr/lib/jvm/java-8-openjdk-amd64</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">RUN </span><span class="token function" style="color:rgb(130, 170, 255)">wget</span><span class="token plain"> https://archive.apache.org/dist/hadoop/common/hadoop-</span><span class="token variable" style="color:rgb(191, 199, 213)">${HADOOP_VERSION}</span><span class="token plain">/hadoop-</span><span class="token variable" style="color:rgb(191, 199, 213)">${HADOOP_VERSION}</span><span class="token plain">.tar.gz </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token function" style="color:rgb(130, 170, 255)">tar</span><span class="token plain"> zxf hadoop-</span><span class="token variable" style="color:rgb(191, 199, 213)">${HADOOP_VERSION}</span><span class="token plain">.tar.gz </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token function" style="color:rgb(130, 170, 255)">ln</span><span class="token plain"> -s hadoop-</span><span class="token variable" style="color:rgb(191, 199, 213)">${HADOOP_VERSION}</span><span class="token plain"> hadoop-current </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token function" style="color:rgb(130, 170, 255)">rm</span><span class="token plain"> hadoop-</span><span class="token variable" style="color:rgb(191, 199, 213)">${HADOOP_VERSION}</span><span class="token plain">.tar.gz</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Build and push to your own docker registry: Use <code>docker build ... </code> and <code>docker push ...</code> to finish this step.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="use-examples-to-build-your-own-kaldi-docker-images"></a>Use examples to build your own Kaldi docker images<a class="hash-link" href="#use-examples-to-build-your-own-kaldi-docker-images" title="Direct link to heading">#</a></h3><p>We provided following examples for you to build kaldi docker images.</p><p>For latest Kaldi</p><ul><li>*base/ubuntu-18.04/Dockerfile.gpu.kaldi_latest: Latest Kaldi that supports GPU, which is prebuilt to CUDA10, with models.</li></ul><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="build-docker-images"></a>Build Docker images<a class="hash-link" href="#build-docker-images" title="Direct link to heading">#</a></h3><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="manually-build-docker-image"></a>Manually build Docker image:<a class="hash-link" href="#manually-build-docker-image" title="Direct link to heading">#</a></h4><p>Under <code>docker/</code> directory,The CLUSTER_NAME can be modified in build-all.sh to have installation permissions, run <code>build-all.sh</code> to build Docker images. It will build following images:</p><ul><li><code>kaldi-latest-gpu-base:0.0.1</code> for base Docker image which includes Hadoop, Kaldi, GPU base libraries, which includes thchs30 model.</li></ul><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="use-prebuilt-images"></a>Use prebuilt images<a class="hash-link" href="#use-prebuilt-images" title="Direct link to heading">#</a></h4><p>(No liability)
 You can also use prebuilt images for convenience in the docker hub:</p><ul><li>hadoopsubmarine/kaldi-latest-gpu-base:0.0.1</li></ul></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/ecosystem/kaldi/WriteDockerfileKaldi.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"></div><div class="pagination-nav__item pagination-nav__item--next"></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#creating-docker-images-for-running-kaldi-on-yarn" class="table-of-contents__link">Creating Docker Images for Running Kaldi on YARN</a><ul><li><a href="#how-to-create-docker-images-to-run-kaldi-on-yarn" class="table-of-contents__link">How to create docker images to run Kaldi on YARN</a></li><li><a href="#use-examples-to-build-your-own-kaldi-docker-images" class="table-of-contents__link">Use examples to build your own Kaldi docker images</a></li><li><a href="#build-docker-images" class="table-of-contents__link">Build Docker images</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/58f10d9f.a5917f48.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/85b50ba6.282022a4.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/58f10d9f.87a860a5.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/85b50ba6.27af03f3.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gettingStarted/helm/index.html b/docs/gettingStarted/helm/index.html
index 54b5e8c..d7be9fa 100644
--- a/docs/gettingStarted/helm/index.html
+++ b/docs/gettingStarted/helm/index.html
@@ -6,16 +6,16 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Deploy Submarine with Helm | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="0.6.0"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-0.6.0"><meta data-react-helmet="true" property="og:title" content="Deploy Submarine with Helm | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/gettingStarted/helm"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/gettingStarted/helm"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/58f10d9f.a5917f48.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/0bc74cd0.b207bf46.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/58f10d9f.87a860a5.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/0bc74cd0.cc1ad21e.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -32,15 +32,15 @@
 and set the configuration &quot;extraPortMappings&quot; when creating the k8s cluster.</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">kind: Cluster</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">apiVersion: kind.x-k8s.io/v1alpha4</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">nodes:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">- role: control-plane</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  extraPortMappings:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  - containerPort: 32080</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    hostPort: [the port you want to access]</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain"># Use nodePort and Traefik ingress controller by default.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"># To access the submarine server, open the following URL in your browser.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">http://127.0.0.1:32080</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>If minikube is installed, use the following command to find the URL to the Submarine server.</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">$ minikube service submarine-traefik --url</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/gettingStarted/helm.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"></div><div class="pagination-nav__item pagination-nav__item--next"></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#prerequisite" class="table-of-contents__link">Prerequisite</a></li><li><a href="#deploy-submarine-to-kubernetes" class="table-of-contents__link">Deploy Submarine to Kubernetes</a></li><li><a href="#verify-installation" class="table-of-contents__link">Verify installation</a></li><li><a href="#uninstall-submarine" class="table-of-contents__link">Uninstall Submarine</a></li><li><a href="#volume-type" class="table-of-contents__link">Volume Type</a><ul><li><a href="#access-to-submarine-server" class="table-of-contents__link">Access to Submarine Server</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/58f10d9f.a5917f48.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/0bc74cd0.b207bf46.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/58f10d9f.87a860a5.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/0bc74cd0.cc1ad21e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gettingStarted/kind/index.html b/docs/gettingStarted/kind/index.html
index f12ff1b..29bec76 100644
--- a/docs/gettingStarted/kind/index.html
+++ b/docs/gettingStarted/kind/index.html
@@ -6,31 +6,31 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Setup a Kubernetes cluster using KinD | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="0.6.0"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-0.6.0"><meta data-react-helmet="true" property="og:title" content="Setup a Kubernetes cluster using KinD | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/gettingStarted/kind"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/gettingStarted/kind"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/58f10d9f.a5917f48.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/66ca1d53.2d44bd04.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/58f10d9f.87a860a5.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/66ca1d53.810c109a.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link" href="/docs/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/api/environment">API</a><a class="navbar__item navbar__link navbar__link--active" href="/docs/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/">0.6.0</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/next/gettingStarted/kind">master 🏃</a></li><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/gettingStarted/kind">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/gettingStarted/kind">master 🏃</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/gettingStarted/kind">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: 0.6.0</span></div><header><h1 class="docTitle_Oumm">Setup a Kubernetes cluster using KinD</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="create-kubernetes-cluster-with-kind"></a>Create Kubernetes cluster with KinD<a class="hash-link" href="#create-kubernetes-cluster-with-kind" title="Direct link to heading">#</a></h2><p>We recommend users developing Submarine with minikube. However, <a href="https://kind.sigs.k8s.io/" target="_blank" rel="noopener noreferrer"><code>KinD</code></a> is also an option to setup a Kubernetes cluster on your local machine.</p><p>Run the following command, and specify the KinD version and Kubernetes version <a href="/docs/devDocs/Dependencies"><code>here</code></a>.</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Download the specific version of KinD (must &gt;= v0.6.0)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">export</span><span class="token plain"> </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">KIND_VERSION</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">v0.11.1</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token function" style="color:rgb(130, 170, 255)">curl</span><span class="token plain"> -Lo ./kind https://github.com/kubernetes-sigs/kind/releases/download/</span><span class="token variable" style="color:rgb(191, 199, 213)">${KIND_VERSION}</span><span class="token plain">/kind-linux-amd64</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Make the binary executable</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token function" style="color:rgb(130, 170, 255)">chmod</span><span class="token plain"> +x ./kind</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Move the binary to your executable path</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token function" style="color:rgb(130, 170, 255)">sudo</span><span class="token plain"> </span><span class="token function" style="color:rgb(130, 170, 255)">mv</span><span class="token plain"> ./kind /usr/local/bin/</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Create cluster with specific version of kubernetes</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">export</span><span class="token plain"> </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">KUBE_VERSION</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">v1.15.12</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">kind create cluster --image kindest/node:</span><span class="token variable" style="color:rgb(191, 199, 213)">${KUBE_VERSION}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="kubernetes-dashboard-optional"></a>Kubernetes Dashboard (optional)<a class="hash-link" href="#kubernetes-dashboard-optional" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="deploy"></a>Deploy<a class="hash-link" href="#deploy" title="Direct link to heading">#</a></h3><p>To deploy Dashboard, execute the following command:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta8/aio/deploy/recommended.yaml</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="create-rbac"></a>Create RBAC<a class="hash-link" href="#create-rbac" title="Direct link to heading">#</a></h3><p>Run the following commands to grant the cluster access permission of dashboard:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">kubectl create serviceaccount dashboard-admin-sa</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">kubectl create clusterrolebinding dashboard-admin-sa --clusterrole=cluster-admin --serviceaccount=default:dashboard-admin-sa</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="get-access-token-optional"></a>Get access token (optional)<a class="hash-link" href="#get-access-token-optional" title="Direct link to heading">#</a></h3><p>If you want to use the token to login the dashboard, run the following commands to get key:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">kubectl get secrets</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"># select the right dashboard-admin-sa-token to describe the secret</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">kubectl describe secret dashboard-admin-sa-token-6nhkx</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="start-dashboard-service"></a>Start dashboard service<a class="hash-link" href="#start-dashboard-service" title="Direct link to heading">#</a></h3><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">kubectl proxy</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Now access Dashboard at:</p><blockquote><p>http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/</p></blockquote><p>Dashboard screenshot:</p><p><img src="/assets/images/kind-dashboard-96b734dca17dd1d6043efad54f4c4725.png"></p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/gettingStarted/kind.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"></div><div class="pagination-nav__item pagination-nav__item--next"></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#create-kubernetes-cluster-with-kind" class="table-of-contents__link">Create Kubernetes cluster with KinD</a></li><li><a href="#kubernetes-dashboard-optional" class="table-of-contents__link">Kubernetes Dashboard (optional)</a><ul><li><a href="#deploy" class="table-of-contents__link">Deploy</a></li><li><a href="#create-rbac" class="table-of-contents__link">Create RBAC</a></li><li><a href="#get-access-token-optional" class="table-of-contents__link">Get access token (optional)</a></li><li><a href="#start-dashboard-service" class="table-of-contents__link">Start dashboard service</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/58f10d9f.a5917f48.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/66ca1d53.2d44bd04.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/58f10d9f.87a860a5.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/66ca1d53.810c109a.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gettingStarted/notebook/index.html b/docs/gettingStarted/notebook/index.html
index 0163a74..266a1d7 100644
--- a/docs/gettingStarted/notebook/index.html
+++ b/docs/gettingStarted/notebook/index.html
@@ -6,16 +6,16 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Jupyter Notebook | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="0.6.0"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-0.6.0"><meta data-react-helmet="true" property="og:title" content="Jupyter Notebook | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/gettingStarted/notebook"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/gettingStarted/notebook"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/58f10d9f.a5917f48.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/f2cef85d.e5c45c6f.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/58f10d9f.87a860a5.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/f2cef85d.6a5a9909.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -33,15 +33,15 @@
 </span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>You can create a new notebook, paste the above code and run it. Or, you can find the notebook <a href="https://github.com/apache/submarine/blob/master/submarine-sdk/pysubmarine/example/submarine_experiment_sdk.ipynb" target="_blank" rel="noopener noreferrer"><code>submarine_experiment_sdk.ipynb</code></a> inside the launched notebook session. You can open it, try it out.</p><p>After experiment submitted to Submarine server, you can find the experiment jobs on the UI.</p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/gettingStarted/notebook.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/gettingStarted/quickstart"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Quickstart</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/userDocs/api/experiment"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Experiment REST API »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#working-with-notebooks" class="table-of-contents__link">Working with notebooks</a><ul><li><a href="#notebooks-web-ui" class="table-of-contents__link">Notebooks Web UI</a></li></ul></li><li><a href="#experiment-with-your-notebook" class="table-of-contents__link">Experiment with your notebook</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/58f10d9f.a5917f48.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/f2cef85d.e5c45c6f.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/58f10d9f.87a860a5.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/f2cef85d.6a5a9909.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gettingStarted/python-sdk/index.html b/docs/gettingStarted/python-sdk/index.html
index afc0a6e..b33fdae 100644
--- a/docs/gettingStarted/python-sdk/index.html
+++ b/docs/gettingStarted/python-sdk/index.html
@@ -6,16 +6,16 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Submarine Python SDK | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="0.6.0"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-0.6.0"><meta data-react-helmet="true" property="og:title" content="Submarine Python SDK | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/gettingStarted/python-sdk"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/gettingStarted/python-sdk"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/58f10d9f.a5917f48.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/6a132804.fe6c8b4f.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/58f10d9f.87a860a5.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/6a132804.4ebb8994.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -25,15 +25,15 @@
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Make sure to install using Python 3</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">python3 virtualenv-16.0.0/virtualenv.py venv</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">.</span><span class="token plain"> venv/bin/activate</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="install-submarine-sdk"></a>Install Submarine SDK<a class="hash-link" href="#install-submarine-sdk" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="install-sdk-from-pypiorg-recommended"></a>Install SDK from pypi.org (recommended)<a class="hash-link" href="#install-sdk-from-pypiorg-recommended" title="Direct link to heading">#</a></h3><p>Starting from <code>0.4.0</code>, Submarine provides Python SDK. Please change it to a proper version needed. </p><p>More detail: <a href="https://pypi.org/project/apache-submarine/" target="_blank" rel="noopener noreferrer">https://pypi.org/project/apache-submarine/</a></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Install latest stable version</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">pip </span><span class="token function" style="color:rgb(130, 170, 255)">install</span><span class="token plain"> apache-submarine</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Install specific version</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">pip </span><span class="token function" style="color:rgb(130, 170, 255)">install</span><span class="token plain"> apache-submarine</span><span class="token operator" style="color:rgb(137, 221, 255)">==</span><span class="token operator" style="color:rgb(137, 221, 255)">&lt;</span><span class="token plain">REPLACE_VERSION</span><span class="token operator" style="color:rgb(137, 221, 255)">&gt;</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="install-sdk-from-source-code"></a>Install SDK from source code<a class="hash-link" href="#install-sdk-from-source-code" title="Direct link to heading">#</a></h3><p>Please first clone code from github or go to <code>http://submarine.apache.org/download.html</code> to download released source code.</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token function" style="color:rgb(130, 170, 255)">git</span><span class="token plain"> clone https://github.com/apache/submarine.git</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># (optional) chackout specific branch or release</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token function" style="color:rgb(130, 170, 255)">git</span><span class="token plain"> checkout </span><span class="token operator" style="color:rgb(137, 221, 255)">&lt;</span><span class="token plain">correct release tag/branch</span><span class="token operator" style="color:rgb(137, 221, 255)">&gt;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">cd</span><span class="token plain"> submarine/submarine-sdk/pysubmarine</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">pip </span><span class="token function" style="color:rgb(130, 170, 255)">install</span><span class="token plain"> </span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">.</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="manage-submarine-experiment"></a>Manage Submarine Experiment<a class="hash-link" href="#manage-submarine-experiment" title="Direct link to heading">#</a></h2><p>Assuming you&#x27;ve installed submarine on K8s and forward the traefik service to localhost, now you can open a Python shell, Jupyter notebook or any tools with Submarine SDK installed.</p><p>Follow <a href="https://github.com/apache/submarine/blob/master/submarine-sdk/pysubmarine/example/submarine_experiment_sdk.ipynb" target="_blank" rel="noopener noreferrer">SDK experiment example</a> to run an experiment.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="training-a-deepfm-model"></a>Training a DeepFM model<a class="hash-link" href="#training-a-deepfm-model" title="Direct link to heading">#</a></h2><p>The Submarine also supports users to train an easy-to-use CTR model with a few lines of code and a configuration file, so they don’t need to reimplement the model by themself. In addition, they can train the model on both local on distributed systems, such as Hadoop or Kubernetes.</p><p>Follow <a href="https://github.com/apache/submarine/blob/master/submarine-sdk/pysubmarine/example/deepfm_example.ipynb" target="_blank" rel="noopener noreferrer">SDK DeepFM example</a> to try the model.</p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/gettingStarted/python-sdk.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"></div><div class="pagination-nav__item pagination-nav__item--next"></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#prepare-python-environment-to-run-submarine-sdk" class="table-of-contents__link">Prepare Python Environment to run Submarine SDK</a></li><li><a href="#install-submarine-sdk" class="table-of-contents__link">Install Submarine SDK</a><ul><li><a href="#install-sdk-from-pypiorg-recommended" class="table-of-contents__link">Install SDK from pypi.org (recommended)</a></li><li><a href="#install-sdk-from-source-code" class="table-of-contents__link">Install SDK from source code</a></li></ul></li><li><a href="#manage-submarine-experiment" class="table-of-contents__link">Manage Submarine Experiment</a></li><li><a href="#training-a-deepfm-model" class="table-of-contents__link">Training a DeepFM model</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/58f10d9f.a5917f48.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/6a132804.fe6c8b4f.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/58f10d9f.87a860a5.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/6a132804.4ebb8994.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/gettingStarted/quickstart/index.html b/docs/gettingStarted/quickstart/index.html
index 671fcb4..6defed8 100644
--- a/docs/gettingStarted/quickstart/index.html
+++ b/docs/gettingStarted/quickstart/index.html
@@ -6,16 +6,16 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Quickstart | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="0.6.0"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-0.6.0"><meta data-react-helmet="true" property="og:title" content="Quickstart | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/gettingStarted/quickstart"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/gettingStarted/quickstart"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/58f10d9f.a5917f48.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/a9744973.499eb3b2.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/58f10d9f.87a860a5.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/a9744973.77aa713c.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -43,15 +43,15 @@
 <img src="/assets/images/quickstart-submit-4-00c8dfb8d7d8a1bd1fe52f43712fc4a9.png"></li></ol></li></ol><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="4-monitor-the-process-modelclient"></a>4. Monitor the process (modelClient)<a class="hash-link" href="#4-monitor-the-process-modelclient" title="Direct link to heading">#</a></h3><ol><li><p>In our code, we use <code>modelClient</code> from <code>submarine-sdk</code> to record the metrics. To see the result, click <code>MLflow UI</code> in the workbench.</p></li><li><p>To compare the metrics of each worker, you can select all workers and then click <code>compare</code></p><p><img src="/assets/images/quickstart-mlflow-055f1780671b88621e0c6324f408dbbe.png"></p><p><img src="/assets/images/quickstart-mlflow-2-d83b03b1ba4bdefc55540a54f6214a13.png"></p></li></ol><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="5-serve-the-model-in-development"></a>5. Serve the model (In development)<a class="hash-link" href="#5-serve-the-model-in-development" title="Direct link to heading">#</a></h3></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/gettingStarted/quickstart.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/gettingStarted/notebook"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Jupyter Notebook »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#installation" class="table-of-contents__link">Installation</a><ul><li><a href="#prepare-a-kubernetes-cluster" class="table-of-contents__link">Prepare a Kubernetes cluster</a></li><li><a href="#launch-submarine-in-the-cluster" class="table-of-contents__link">Launch submarine in the cluster</a></li><li><a href="#ensure-submarine-is-ready" class="table-of-contents__link">Ensure submarine is ready</a></li><li><a href="#connect-to-workbench" class="table-of-contents__link">Connect to workbench</a></li></ul></li><li><a href="#example-submit-a-mnist-distributed-example" class="table-of-contents__link">Example: Submit a mnist distributed example</a><ul><li><a href="#1-write-a-python-script-for-distributed-training" class="table-of-contents__link">1. Write a python script for distributed training</a></li><li><a href="#2-prepare-an-environment-compatible-with-the-training" class="table-of-contents__link">2. Prepare an environment compatible with the training</a></li><li><a href="#3-submit-the-experiment" class="table-of-contents__link">3. Submit the experiment</a></li><li><a href="#4-monitor-the-process-modelclient" class="table-of-contents__link">4. Monitor the process (modelClient)</a></li><li><a href="#5-serve-the-model-in-development" class="table-of-contents__link">5. Serve the model (In development)</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/58f10d9f.a5917f48.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/a9744973.499eb3b2.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/58f10d9f.87a860a5.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/a9744973.77aa713c.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/index.html b/docs/index.html
index 96e9eb7..9a79d08 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -6,16 +6,16 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Submarine Local Deployment | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="0.6.0"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-0.6.0"><meta data-react-helmet="true" property="og:title" content="Submarine Local Deployment | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/58f10d9f.a5917f48.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/35de792d.6b3bbd93.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/58f10d9f.87a860a5.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/35de792d.e4cec2f8.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -23,15 +23,15 @@
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Method2 -- using port-forwarding</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">$ kubectl port-forward --address </span><span class="token number" style="color:rgb(247, 140, 108)">0.0</span><span class="token plain">.0.0 service/submarine-traefik </span><span class="token number" style="color:rgb(247, 140, 108)">32080</span><span class="token plain">:80</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="open-workbench-in-the-browser"></a>Open Workbench in the browser.<a class="hash-link" href="#open-workbench-in-the-browser" title="Direct link to heading">#</a></h2><p>Open http://{minikube ip}:32080(from Method1), ex: <a href="http://192.168.49.2:32080" target="_blank" rel="noopener noreferrer">http://192.168.49.2:32080</a></p><p>or <a href="http://127.0.0.1:32080" target="_blank" rel="noopener noreferrer">http://127.0.0.1:32080</a> (from Method 2).</p><p>The default username and password is <code>admin</code> and <code>admin</code></p><p><img src="https://i.imgur.com/DkZhyEG.png"></p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="uninstall-submarine"></a>Uninstall Submarine<a class="hash-link" href="#uninstall-submarine" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">$ helm delete submarine</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/gettingStarted/localDeployment.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"></div><div class="pagination-nav__item pagination-nav__item--next"></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#prerequisite" class="table-of-contents__link">Prerequisite</a></li><li><a href="#deploy-kubernetes-cluster" class="table-of-contents__link">Deploy Kubernetes Cluster</a></li><li><a href="#install-submarine-on-kubernetes" class="table-of-contents__link">Install Submarine on Kubernetes</a></li><li><a href="#verify-installation" class="table-of-contents__link">Verify installation</a></li><li><a href="#access-submarine-in-a-cluster" class="table-of-contents__link">Access Submarine in a Cluster</a></li><li><a href="#open-workbench-in-the-browser" class="table-of-contents__link">Open Workbench in the browser.</a></li><li><a href="#uninstall-submarine" class="table-of-contents__link">Uninstall Submarine</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/58f10d9f.a5917f48.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/35de792d.6b3bbd93.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/58f10d9f.87a860a5.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/35de792d.e4cec2f8.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/next/adminDocs/yarn/README/index.html b/docs/next/adminDocs/yarn/README/index.html
deleted file mode 100644
index a2b2922..0000000
--- a/docs/next/adminDocs/yarn/README/index.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!doctype html>
-<html lang="en">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-alpha.70">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Running Submarine on YARN (deprecated) | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="Running Submarine on YARN (deprecated) | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/adminDocs/yarn/README"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/adminDocs/yarn/README"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/f5ec27a4.1acb9c22.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/adminDocs/yarn/README">master 🏃</a></li><li><a class="dropdown__link" href="/docs/adminDocs/yarn/README">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/adminDocs/yarn/README">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/adminDocs/yarn/README">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Administrator Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!" tabindex="0">Submarine on Yarn</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/adminDocs/yarn/README">Running Submarine on YARN (deprecated)</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/adminDocs/yarn/README">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Running Submarine on YARN (deprecated)</h1></header><div class="markdown"><p>Submarine for YARN supports TensorFlow, PyTorch and MXNet framework. (Which is leveraging <a href="https://github.com/linkedin/TonY" target="_blank" rel="noopener noreferrer">TonY</a> created by Linkedin to run deep learning training jobs on YARN.</p><p>Submarine also supports GPU-on-YARN and Docker-on-YARN feature.</p><p>Submarine can run on Hadoop 2.7.3 or later version, if GPU-on-YARN or Docker-on-YARN feature is needed, newer Hadoop version is required, please refer to the next section about what Hadoop version to choose.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="hadoop-version"></a>Hadoop version<a class="hash-link" href="#hadoop-version" title="Direct link to heading">#</a></h2><p>Must:</p><ul><li>Apache Hadoop version newer than 2.7.3</li></ul><p>Optional:</p><ul><li>When you want to use GPU-on-YARN feature with Submarine, please make sure Hadoop is at least 2.10.0+ (or 3.1.0+), and follow <a href="https://hadoop.apache.org/docs/r2.10.0/hadoop-yarn/hadoop-yarn-site/UsingGpus.html" target="_blank" rel="noopener noreferrer">Enable GPU on YARN 2.10.0+</a> to enable GPU-on-YARN feature.</li><li>When you want to run training jobs with Docker container, please make sure Hadoop is at least 2.8.2, and follow <a href="https://hadoop.apache.org/docs/r2.8.2/hadoop-yarn/hadoop-yarn-site/DockerContainers.html" target="_blank" rel="noopener noreferrer">Enable Docker on YARN 2.8.2+</a> to enable Docker-on-YARN feature.</li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="submarine-yarn-runtime-guide"></a>Submarine YARN Runtime Guide<a class="hash-link" href="#submarine-yarn-runtime-guide" title="Direct link to heading">#</a></h2><p><a href="/docs/next/userDocs/yarn/YARNRuntimeGuide">YARN Runtime Guide</a> talk about how to use Submarine to run jobs on YARN, with Docker / without Docker.</p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/adminDocs/yarn/README.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/next/userDocs/others/tensorboard"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Tensorboard</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/next/devDocs/README"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Project Architecture »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#hadoop-version" class="table-of-contents__link">Hadoop version</a></li><li><a href="#submarine-yarn-runtime-guide" class="table-of-contents__link">Submarine YARN Runtime Guide</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
-       either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
-        countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/f5ec27a4.1acb9c22.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/next/adminDocs/yarn/TestAndTroubleshooting/index.html b/docs/next/adminDocs/yarn/TestAndTroubleshooting/index.html
deleted file mode 100644
index 0b36db3..0000000
--- a/docs/next/adminDocs/yarn/TestAndTroubleshooting/index.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<!doctype html>
-<html lang="en">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-alpha.70">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Test and Troubleshooting | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="Test and Troubleshooting | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/adminDocs/yarn/TestAndTroubleshooting"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/adminDocs/yarn/TestAndTroubleshooting"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/22885c43.e67171d6.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/adminDocs/yarn/TestAndTroubleshooting">master 🏃</a></li><li><a class="dropdown__link" href="/docs/adminDocs/yarn/TestAndTroubleshooting">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/adminDocs/yarn/TestAndTroubleshooting">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/adminDocs/yarn/TestAndTroubleshooting">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/adminDocs/yarn/TestAndTroubleshooting">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Test and Troubleshooting</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="test-with-a-tensorflow-job"></a>Test with a tensorflow job<a class="hash-link" href="#test-with-a-tensorflow-job" title="Direct link to heading">#</a></h2><p>Distributed-shell + GPU + cgroup</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">..</span><span class="token plain">. </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> job run </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --env </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">DOCKER_JAVA_HOME</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">/opt/java </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --env </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">DOCKER_HADOOP_HDFS_HOME</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">/hadoop-current --name distributed-tf-gpu </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --env </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">YARN_CONTAINER_RUNTIME_DOCKER_CONTAINER_NETWORK</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">calico-network </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --worker_docker_image tf-1.13.1-gpu:0.0.1 </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --ps_docker_image tf-1.13.1-cpu:0.0.1 </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --input_path hdfs://</span><span class="token variable" style="color:rgb(191, 199, 213)">${dfs_name_service}</span><span class="token plain">/tmp/cifar-10-data </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --checkpoint_path hdfs://</span><span class="token variable" style="color:rgb(191, 199, 213)">${dfs_name_service}</span><span class="token plain">/user/hadoop/tf-distributed-checkpoint </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --num_ps </span><span class="token number" style="color:rgb(247, 140, 108)">0</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --ps_resources </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">memory</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">4G,vcores</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token number" style="color:rgb(247, 140, 108)">2</span><span class="token plain">,gpu</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token number" style="color:rgb(247, 140, 108)">0</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --ps_launch_cmd </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /test/cifar10_estimator/cifar10_main.py --data-dir=hdfs://</span><span class="token string variable" style="color:rgb(191, 199, 213)">${dfs_name_service}</span><span class="token string" style="color:rgb(195, 232, 141)">/tmp/cifar-10-data --job-dir=hdfs://</span><span class="token string variable" style="color:rgb(191, 199, 213)">${dfs_name_service}</span><span class="token string" style="color:rgb(195, 232, 141)">/tmp/cifar-10-jobdir --num-gpus=0&quot;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --worker_resources </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">memory</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">4G,vcores</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token number" style="color:rgb(247, 140, 108)">2</span><span class="token plain">,gpu</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token plain"> --verbose </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --num_workers </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --worker_launch_cmd </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /test/cifar10_estimator/cifar10_main.py --data-dir=hdfs://</span><span class="token string variable" style="color:rgb(191, 199, 213)">${dfs_name_service}</span><span class="token string" style="color:rgb(195, 232, 141)">/tmp/cifar-10-data --job-dir=hdfs://</span><span class="token string variable" style="color:rgb(191, 199, 213)">${dfs_name_service}</span><span class="token string" style="color:rgb(195, 232, 141)">/tmp/cifar-10-jobdir --train-steps=500 --eval-batch-size=16 --train-batch-size=16 --sync --num-gpus=1&quot;</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="issues"></a>Issues:<a class="hash-link" href="#issues" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="issue-1-fail-to-start-nodemanager-after-system-reboot"></a>Issue 1: Fail to start nodemanager after system reboot<a class="hash-link" href="#issue-1-fail-to-start-nodemanager-after-system-reboot" title="Direct link to heading">#</a></h3><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">2018-09-20 18:54:39,785 ERROR org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor: Failed to bootstrap configured resource subsystems!</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.ResourceHandlerException: Unexpected: Cannot create yarn cgroup Subsystem:cpu Mount points:/proc/mounts User:yarn Path:/sys/fs/cgroup/cpu,cpuacct/hadoop-yarn</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsHandlerImpl.initializePreMountedCGroupController(CGroupsHandlerImpl.java:425)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsHandlerImpl.initializeCGroupController(CGroupsHandlerImpl.java:377)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsCpuResourceHandlerImpl.bootstrap(CGroupsCpuResourceHandlerImpl.java:98)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsCpuResourceHandlerImpl.bootstrap(CGroupsCpuResourceHandlerImpl.java:87)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.ResourceHandlerChain.bootstrap(ResourceHandlerChain.java:58)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor.init(LinuxContainerExecutor.java:320)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.yarn.server.nodemanager.NodeManager.serviceInit(NodeManager.java:389)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.service.AbstractService.init(AbstractService.java:164)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.yarn.server.nodemanager.NodeManager.initAndStartNodeManager(NodeManager.java:929)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.yarn.server.nodemanager.NodeManager.main(NodeManager.java:997)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2018-09-20 18:54:39,789 INFO org.apache.hadoop.service.AbstractService: Service NodeManager failed in state INITED</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Solution: Grant user yarn the access to  <code>/sys/fs/cgroup/cpu,cpuacct</code>, which is the subfolder of cgroup mount destination.</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">chown :yarn -R /sys/fs/cgroup/cpu,cpuacct</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">chmod g+rwx -R /sys/fs/cgroup/cpu,cpuacct</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>If GPUs are used,the access to cgroup devices folder is neede as well</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">chown :yarn -R /sys/fs/cgroup/devices</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">chmod g+rwx -R /sys/fs/cgroup/devices</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="issue-2-container-executor-permission-denied"></a>Issue 2: container-executor permission denied<a class="hash-link" href="#issue-2-container-executor-permission-denied" title="Direct link to heading">#</a></h3><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">2018-09-21 09:36:26,102 WARN org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.privileged.PrivilegedOperationExecutor: IOException executing command:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">java.io.IOException: Cannot run program &quot;/etc/yarn/sbin/Linux-amd64-64/container-executor&quot;: error=13, Permission denied</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        at org.apache.hadoop.util.Shell.runCommand(Shell.java:938)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        at org.apache.hadoop.util.Shell.run(Shell.java:901)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:1213)</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Solution: The permission of <code>/etc/yarn/sbin/Linux-amd64-64/container-executor</code> should be 6050</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="issue-3:how-to-get-docker-service-log"></a>Issue 3:How to get docker service log<a class="hash-link" href="#issue-3:how-to-get-docker-service-log" title="Direct link to heading">#</a></h3><p>Solution: we can get docker log with the following command</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">journalctl -u docker</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="issue-4:docker-cant-remove-containers-with-errors-like-device-or-resource-busy"></a>Issue 4:docker can&#x27;t remove containers with errors like <code>device or resource busy</code><a class="hash-link" href="#issue-4:docker-cant-remove-containers-with-errors-like-device-or-resource-busy" title="Direct link to heading">#</a></h3><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">$ docker </span><span class="token function" style="color:rgb(130, 170, 255)">rm</span><span class="token plain"> 0bfafa146431</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Error response from daemon: Unable to remove filesystem </span><span class="token keyword" style="font-style:italic">for</span><span class="token plain"> 0bfafa146431771f6024dcb9775ef47f170edb2f1852f71916ba44209ca6120a: remove /app/docker/containers/0bfafa146431771f6024dcb9775ef47f170edb2f152f71916ba44209ca6120a/shm: device or resource busy</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Solution: to find which process leads to a <code>device or resource busy</code>, we can add a shell script, named <code>find-busy-mnt.sh</code></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token shebang important">#!/usr/bin/env bash</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
-</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># A simple script to get information about mount points and pids and their</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># mount namespaces.</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
-</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token keyword" style="font-style:italic">if</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain"> </span><span class="token variable" style="color:rgb(191, 199, 213)">$#</span><span class="token plain"> -ne </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">;</span><span class="token keyword" style="font-style:italic">then</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">echo</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Usage: </span><span class="token string variable" style="color:rgb(191, 199, 213)">$0</span><span class="token string" style="color:rgb(195, 232, 141)"> &lt;devicemapper-device-id&gt;&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">exit</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token keyword" style="font-style:italic">fi</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
-</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">ID</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token variable" style="color:rgb(191, 199, 213)">$1</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
-</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">MOUNTS</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token variable" style="color:rgb(191, 199, 213)">`</span><span class="token variable function" style="color:rgb(130, 170, 255)">find</span><span class="token variable" style="color:rgb(191, 199, 213)"> /proc/*/mounts </span><span class="token variable operator" style="color:rgb(137, 221, 255)">|</span><span class="token variable" style="color:rgb(191, 199, 213)"> </span><span class="token variable function" style="color:rgb(130, 170, 255)">xargs</span><span class="token variable" style="color:rgb(191, 199, 213)"> </span><span class="token variable function" style="color:rgb(130, 170, 255)">grep</span><span class="token variable" style="color:rgb(191, 199, 213)"> $ID </span><span class="token variable operator file-descriptor important" style="color:rgb(137, 221, 255)">2</span><span class="token variable operator" style="color:rgb(137, 221, 255)">&gt;</span><span class="token variable" style="color:rgb(191, 199, 213)">/dev/null</span><span class="token variable" style="color:rgb(191, 199, 213)">`</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
-</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain"> -z </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token string variable" style="color:rgb(191, 199, 213)">$MOUNTS</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain">  </span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">echo</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;No pids found&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">exit</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">0</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
-</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">printf</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;PID</span><span class="token string entity" style="color:rgb(195, 232, 141)">\t</span><span class="token string" style="color:rgb(195, 232, 141)">NAME</span><span class="token string entity" style="color:rgb(195, 232, 141)">\t</span><span class="token string entity" style="color:rgb(195, 232, 141)">\t</span><span class="token string" style="color:rgb(195, 232, 141)">MNTNS</span><span class="token string entity" style="color:rgb(195, 232, 141)">\n</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">echo</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token string variable" style="color:rgb(191, 199, 213)">$MOUNTS</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">|</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">while</span><span class="token plain"> </span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">read</span><span class="token plain"> LINE</span><span class="token punctuation" style="color:rgb(199, 146, 234)">;</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">do</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">PID</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token variable" style="color:rgb(191, 199, 213)">`</span><span class="token variable builtin class-name" style="color:rgb(255, 203, 107)">echo</span><span class="token variable" style="color:rgb(191, 199, 213)"> $LINE </span><span class="token variable operator" style="color:rgb(137, 221, 255)">|</span><span class="token variable" style="color:rgb(191, 199, 213)"> </span><span class="token variable function" style="color:rgb(130, 170, 255)">cut</span><span class="token variable" style="color:rgb(191, 199, 213)"> -d </span><span class="token variable string" style="color:rgb(195, 232, 141)">&quot;:&quot;</span><span class="token variable" style="color:rgb(191, 199, 213)"> -f1 </span><span class="token variable operator" style="color:rgb(137, 221, 255)">|</span><span class="token variable" style="color:rgb(191, 199, 213)"> </span><span class="token variable function" style="color:rgb(130, 170, 255)">cut</span><span class="token variable" style="color:rgb(191, 199, 213)"> -d </span><span class="token variable string" style="color:rgb(195, 232, 141)">&quot;/&quot;</span><span class="token variable" style="color:rgb(191, 199, 213)"> -f3</span><span class="token variable" style="color:rgb(191, 199, 213)">`</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Ignore self and thread-self</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token keyword" style="font-style:italic">if</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token string variable" style="color:rgb(191, 199, 213)">$PID</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">==</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;self&quot;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">||</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token string variable" style="color:rgb(191, 199, 213)">$PID</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">==</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;thread-self&quot;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">;</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">then</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">continue</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token keyword" style="font-style:italic">fi</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">NAME</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token variable" style="color:rgb(191, 199, 213)">`</span><span class="token variable function" style="color:rgb(130, 170, 255)">ps</span><span class="token variable" style="color:rgb(191, 199, 213)"> -q $PID -o </span><span class="token variable assign-left variable" style="color:rgb(191, 199, 213)">comm</span><span class="token variable operator" style="color:rgb(137, 221, 255)">=</span><span class="token variable" style="color:rgb(191, 199, 213)">`</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">MNTNS</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token variable" style="color:rgb(191, 199, 213)">`</span><span class="token variable" style="color:rgb(191, 199, 213)">readlink /proc/$PID/ns/mnt</span><span class="token variable" style="color:rgb(191, 199, 213)">`</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">printf</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;%s</span><span class="token string entity" style="color:rgb(195, 232, 141)">\t</span><span class="token string" style="color:rgb(195, 232, 141)">%s</span><span class="token string entity" style="color:rgb(195, 232, 141)">\t</span><span class="token string entity" style="color:rgb(195, 232, 141)">\t</span><span class="token string" style="color:rgb(195, 232, 141)">%s</span><span class="token string entity" style="color:rgb(195, 232, 141)">\n</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token string variable" style="color:rgb(191, 199, 213)">$PID</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token string variable" style="color:rgb(191, 199, 213)">$NAME</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token string variable" style="color:rgb(191, 199, 213)">$MNTNS</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token keyword" style="font-style:italic">done</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Kill the process by pid, which is found by the script</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">$ </span><span class="token function" style="color:rgb(130, 170, 255)">chmod</span><span class="token plain"> +x find-busy-mnt.sh</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">./find-busy-mnt.sh 0bfafa146431771f6024dcb9775ef47f170edb2f152f71916ba44209ca6120a</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># PID   NAME            MNTNS</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># 5007  ntpd            mnt:[4026533598]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">$ </span><span class="token function" style="color:rgb(130, 170, 255)">kill</span><span class="token plain"> -9 </span><span class="token number" style="color:rgb(247, 140, 108)">5007</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="issue-5:yarn-failed-to-start-containers"></a>Issue 5:Yarn failed to start containers<a class="hash-link" href="#issue-5:yarn-failed-to-start-containers" title="Direct link to heading">#</a></h3><p>if the number of GPUs required by applications is larger than the number of GPUs in the cluster, there would be some containers can&#x27;t be created.</p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/adminDocs/yarn/TestAndTroubleshooting.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"></div><div class="pagination-nav__item pagination-nav__item--next"></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#test-with-a-tensorflow-job" class="table-of-contents__link">Test with a tensorflow job</a></li><li><a href="#issues" class="table-of-contents__link">Issues:</a><ul><li><a href="#issue-1-fail-to-start-nodemanager-after-system-reboot" class="table-of-contents__link">Issue 1: Fail to start nodemanager after system reboot</a></li><li><a href="#issue-2-container-executor-permission-denied" class="table-of-contents__link">Issue 2: container-executor permission denied</a></li><li><a href="#issue-3:how-to-get-docker-service-log" class="table-of-contents__link">Issue 3:How to get docker service log</a></li><li><a href="#issue-4:docker-cant-remove-containers-with-errors-like-device-or-resource-busy" class="table-of-contents__link">Issue 4:docker can&#39;t remove containers with errors like <code>device or resource busy</code></a></li><li><a href="#issue-5:yarn-failed-to-start-containers" class="table-of-contents__link">Issue 5:Yarn failed to start containers</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
-       either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
-        countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/22885c43.e67171d6.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/next/adminDocs/yarn/workbench/HowToRun/index.html b/docs/next/adminDocs/yarn/workbench/HowToRun/index.html
deleted file mode 100644
index b75ce5e..0000000
--- a/docs/next/adminDocs/yarn/workbench/HowToRun/index.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!doctype html>
-<html lang="en">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-alpha.70">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">HowToRun | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="HowToRun | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/adminDocs/yarn/workbench/HowToRun"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/adminDocs/yarn/workbench/HowToRun"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/bf08320e.37428e65.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/adminDocs/yarn/workbench/HowToRun">master 🏃</a></li><li><a class="dropdown__link" href="/docs/adminDocs/yarn/workbench/HowToRun">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/adminDocs/yarn/workbench/HowToRun">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/adminDocs/yarn/workbench/HowToRun">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/adminDocs/yarn/workbench/HowToRun">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">HowToRun</h1></header><div class="markdown"><h1><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="how-to-run-submarine-workbench"></a>How To Run Submarine Workbench<a class="hash-link" href="#how-to-run-submarine-workbench" title="Direct link to heading">#</a></h1><p>We provide two methods to launch Submarine Workbench</p><ul><li>Method 1:  Run Submarine Workbench on docker</li><li>Method 2:  Run Submarine Workbench without docker</li></ul><h1><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="run-submarine-workbench-on-docker"></a>Run Submarine Workbench on docker<a class="hash-link" href="#run-submarine-workbench-on-docker" title="Direct link to heading">#</a></h1><p>By using the official images of Submarine, only a few docker commands are required to launch <strong>Submarine Workbench</strong>. The document includes information about how to launch the Submarine Workbench via the new docker images and the information about how to switch between different Submarine Workbench versions(version Vue &amp; version Angular).</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="two-versions-of-submarine-workbench"></a>Two versions of Submarine Workbench<a class="hash-link" href="#two-versions-of-submarine-workbench" title="Direct link to heading">#</a></h3><ol><li>Angular (default)</li><li>Vue (This is the old version, and it will be replaced by version Angular in the future.)</li></ol><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="warning-please-restart-a-new-incognito-window-when-you-switch-to-different-versions-of-submarine-workbench"></a>(WARNING: Please restart a new <strong>incognito window</strong> when you switch to different versions of Submarine Workbench)<a class="hash-link" href="#warning-please-restart-a-new-incognito-window-when-you-switch-to-different-versions-of-submarine-workbench" title="Direct link to heading">#</a></h4><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="launch-the-submarine-workbenchangular"></a>Launch the Submarine Workbench(Angular)<a class="hash-link" href="#launch-the-submarine-workbenchangular" title="Direct link to heading">#</a></h3><ul><li>It should be noted that since Submarine Workbench depends on the Submarine database, so you need to run the docker container of the Submarine database first.</li></ul><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">docker run -it -p 3306:3306 -d --name submarine-database -e MYSQL_ROOT_PASSWORD=password apache/submarine:database-&lt;REPLACE_VERSION&gt;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">docker run -it -p 8080:8080 -d --link=submarine-database:submarine-database --name submarine-server apache/submarine:server-&lt;REPLACE_VERSION&gt;</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><ul><li>The login page of Submarine Workbench will be shown in <code>http://127.0.0.1:8080</code>.</li></ul><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="check-the-data-in-the-submarine-database"></a>Check the data in the submarine-database<a class="hash-link" href="#check-the-data-in-the-submarine-database" title="Direct link to heading">#</a></h3><ul><li>Step1: Enter the submarine-database container</li></ul><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">docker exec -it submarine-database bash</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><ul><li>Step2: Enter MySQL database</li></ul><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">mysql -uroot -ppassword</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><ul><li>Step3: List the data in the table</li></ul><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">// list all databases</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">show databases;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
-</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">// choose a database</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">use ${target_database};</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
-</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">// list all tables</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">show tables;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
-</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">// list the data in the table</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">select * from ${target_table};</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h1><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="run-submarine-workbench-without-docker"></a>Run Submarine Workbench without docker<a class="hash-link" href="#run-submarine-workbench-without-docker" title="Direct link to heading">#</a></h1><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="run-submarine-workbench"></a>Run Submarine Workbench<a class="hash-link" href="#run-submarine-workbench" title="Direct link to heading">#</a></h3><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">cd submarine</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">./bin/submarine-daemon.sh [start|stop|restart]</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>To start workbench server, you need to download MySQL jdbc jar and put it in the
-path of workbench/lib for the first time. Or you can add parameter, getMysqlJar,
-to get MySQL jar automatically.</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">cd submarine</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">./bin/submarine-daemon.sh start getMysqlJar</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="submarine-envsh"></a>submarine-env.sh<a class="hash-link" href="#submarine-envsh" title="Direct link to heading">#</a></h3><p><code>submarine-env.sh</code> is automatically executed each time the <code>submarine-daemon.sh</code> script is executed, so we can set the <code>submarine-daemon.sh</code> script and the environment variables in the <code>SubmarineServer</code> process via <code>submarine-env.sh</code>.</p><table><thead><tr><th>Name</th><th>Variable</th></tr></thead><tbody><tr><td>JAVA_HOME</td><td>Set your java home path, default is <code>java</code>.</td></tr><tr><td>SUBMARINE_JAVA_OPTS</td><td>Set the JAVA OPTS parameter when the Submarine Workbench process starts. If you need to debug the Submarine Workbench process, you can set it to <code>-agentlib:jdwp=transport=dt_socket, server=y,suspend=n,address=5005</code></td></tr><tr><td>SUBMARINE_MEM</td><td>Set the java memory parameter when the Submarine Workbench process starts.</td></tr><tr><td>MYSQL_JAR_URL</td><td>The customized URL to download MySQL jdbc jar.</td></tr><tr><td>MYSQL_VERSION</td><td>The version of MySQL jdbc jar to downloaded. The default value is 5.1.39. It&#x27;s used to generate the default value of MYSQL_JDBC_URL</td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="submarine-sitexml"></a>submarine-site.xml<a class="hash-link" href="#submarine-sitexml" title="Direct link to heading">#</a></h3><p><code>submarine-site.xml</code> is the configuration file for the entire <code>Submarine</code> system to run.</p><table><thead><tr><th>Name</th><th>Variable</th></tr></thead><tbody><tr><td>submarine.server.addr</td><td>Submarine server address, default is <code>0.0.0.0</code></td></tr><tr><td>submarine.server.port</td><td>Submarine server port, default <code>8080</code></td></tr><tr><td>submarine.ssl</td><td>Should SSL be used by the Submarine servers?, default <code>false</code></td></tr><tr><td>submarine.server.ssl.port</td><td>Server ssl port. (used when ssl property is set to true), default <code>8483</code></td></tr><tr><td>submarine.ssl.client.auth</td><td>Should client authentication be used for SSL connections?</td></tr><tr><td>submarine.ssl.keystore.path</td><td>Path to keystore relative to Submarine configuration directory</td></tr><tr><td>submarine.ssl.keystore.type</td><td>The format of the given keystore (e.g. JKS or PKCS12)</td></tr><tr><td>submarine.ssl.keystore.password</td><td>Keystore password. Can be obfuscated by the Jetty Password tool</td></tr><tr><td>submarine.ssl.key.manager.password</td><td>Key Manager password. Defaults to keystore password. Can be obfuscated.</td></tr><tr><td>submarine.ssl.truststore.path</td><td>Path to truststore relative to Submarine configuration directory. Defaults to the keystore path</td></tr><tr><td>submarine.ssl.truststore.type</td><td>The format of the given truststore (e.g. JKS or PKCS12). Defaults to the same type as the keystore type</td></tr><tr><td>submarine.ssl.truststore.password</td><td>Truststore password. Can be obfuscated by the Jetty Password tool. Defaults to the keystore password</td></tr><tr><td>workbench.web.war</td><td>Submarine Workbench web war file path.</td></tr></tbody></table></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/adminDocs/yarn/workbench/HowToRun.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"></div><div class="pagination-nav__item pagination-nav__item--next"></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#two-versions-of-submarine-workbench" class="table-of-contents__link">Two versions of Submarine Workbench</a></li><li><a href="#launch-the-submarine-workbenchangular" class="table-of-contents__link">Launch the Submarine Workbench(Angular)</a></li><li><a href="#check-the-data-in-the-submarine-database" class="table-of-contents__link">Check the data in the submarine-database</a></li><li><a href="#run-submarine-workbench" class="table-of-contents__link">Run Submarine Workbench</a></li><li><a href="#submarine-envsh" class="table-of-contents__link">submarine-env.sh</a></li><li><a href="#submarine-sitexml" class="table-of-contents__link">submarine-site.xml</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
-       either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
-        countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/bf08320e.37428e65.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/next/adminDocs/yarn/workbench/README.zh-CN/index.html b/docs/next/adminDocs/yarn/workbench/README.zh-CN/index.html
deleted file mode 100644
index 9b95c1e..0000000
--- a/docs/next/adminDocs/yarn/workbench/README.zh-CN/index.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!doctype html>
-<html lang="en">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-alpha.70">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">README.zh-CN | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="README.zh-CN | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/adminDocs/yarn/workbench/README.zh-CN"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/adminDocs/yarn/workbench/README.zh-CN"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/389ecd94.a4d469d0.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/adminDocs/yarn/workbench/README.zh-CN">master 🏃</a></li><li><a class="dropdown__link" href="/docs/adminDocs/yarn/workbench/README.zh-CN">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/adminDocs/yarn/workbench/README.zh-CN">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/adminDocs/yarn/workbench/README.zh-CN">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/adminDocs/yarn/workbench/README.zh-CN">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">README.zh-CN</h1></header><div class="markdown"><p><a href="/docs/next/adminDocs/yarn/workbench/README">English</a> | 简体中文</p><h1><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="submarine-workbench-introduction"></a>Submarine Workbench Introduction<a class="hash-link" href="#submarine-workbench-introduction" title="Direct link to heading">#</a></h1><p><code>Submarine Workbench</code> 是为数据科学家设计的 WEB 系统。数据科学家可以通过 <code>Submarine Workbench</code> 进行交互式的访问 <code>Notebook</code>,提交/管理 Job,管理模型,创建模型训练工作流,访问数据集等。</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="register"></a>Register<a class="hash-link" href="#register" title="Direct link to heading">#</a></h2><p>每个需要使用 Submarine 进行机器学习算法开发的用户,都可以登录 <code>Submarine Workbench</code> 的 WEB 首页,在首页上,点击注册链接,填写用户名、注册邮箱和密码就可以完成注册,但此时用户状态为 <code>等待审核</code> 状态。</p><p>管理员在  <code>Submarine Workbench</code> 中接收到用户的注册请求后,设置用户的操作权限,所属机构部门和分配资源,设置用户状态为 <code>审核通过</code> 后,用户才可以登录 Submarine Workbench。</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="login"></a>Login<a class="hash-link" href="#login" title="Direct link to heading">#</a></h2><p>每个 Submarine 的用户在 <code>Login</code> 页面中输入用户名和密码,登录到  <code>Submarine Workbench</code> 的首页 <code>Home</code>。</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="home"></a>Home<a class="hash-link" href="#home" title="Direct link to heading">#</a></h2><p>在 <code>Submarine Workbench</code> 的 <code>Home</code> 首页中,顶层通过四个图表显示了用户的资源的使用情况和任务执行的情况。</p><p>在 <code>Quick Start</code> 列表中,显示了 Workbench 中最常使用的功能链接,方便用户可以快速的进行工作。</p><p>在 <code>Open Recent</code> 列表中,显示了用户最近使用过的九个项目,方便你快速的进行工作。</p><p>在 <code>What‘s New?</code> 列表中,显示了 Submarine 最新发布的一些功能特性和项目信息,方便你了解 Submarine 项目的最新进展。</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="workspace"></a>Workspace<a class="hash-link" href="#workspace" title="Direct link to heading">#</a></h2><p>Workspace 主要有五个 Tab 页组成,每个 Tab 页的标题中显示了各自项目的总数。</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="project"></a>Project<a class="hash-link" href="#project" title="Direct link to heading">#</a></h3><p>在 Project 页面中,以卡片的方式显示了用户自己创建的所有 Project。</p><p><img alt="image-20191007161424534" src="/assets/images/workspace-project-8d6fed3c330676f04875f8afe44b59d7.png"></p><p>每个 Project 卡片由以下部分内容组成:</p><ol><li><strong>Project 类型</strong>:目前 Submarine 支持 <code>Notebook</code>、<code>Python</code>、<code>R</code>、<code>Scala</code>、<code>Tensorflow</code> 和 <code>PyTorch</code> 这六种类型的机器学习算法框架和开发语言,在项目卡片中以对应的图标进行标识。</li><li><strong>Project Tags</strong>:用户可以为每个 Project 打上不同的 <code>Tag</code> 标签,方便查找和管理。</li><li><strong>Github/Gitlab 集成</strong>:Submarine Workbench 与 <code>Github</code>/<code>Gitlab</code> 进行了系统集成,每个 Project 都可以在 Workbench 中进行 <code>Watch</code>、<code>Star</code>、<code>Frok</code> 和 <code>Comment</code> 操作。<ul><li><strong>Watch</strong>:[TODO]</li><li><strong>Star</strong>:[TODO]</li><li><strong>Fork</strong>:[TODO]</li><li><strong>Comment</strong>:用户可以在项目中进行评论</li></ul></li><li><strong>Edit</strong>:用户通过双击项目或者点击 <code>Edit</code> 按钮,可以在 <code>Notebook</code> 中打开项目,进行算法开发等操作。</li><li><strong>Download</strong>:用户通过点击 <code>Download</code> 按钮,将项目打包下载到本地。</li><li><strong>Setting</strong>:编辑项目信息,例如项目的名字,简介,分享级别和权限。</li><li><strong>Delete</strong>:删除项目中所有包含的文件。</li></ol><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="add-new-project"></a>Add New Project<a class="hash-link" href="#add-new-project" title="Direct link to heading">#</a></h4><p>在项目页面中点击 <code>Add New Project</code> 按钮,将会显示出创建项目的引导页面,只需要三个步骤就可以创建一个新的项目。</p><p>第一步:在 <strong>Base Information</strong> 步骤中填写项目名称、项目简介。</p><p><img alt="image-20191007171638338" src="/assets/images/workspace-project-step1-24bdac8d1ecdfeb14efeab0ba5019716.png"></p><ul><li><p><strong>Visibility</strong>: 设置项目对外的可见级别</p><ul><li><strong>Private</strong>: (默认)设置为私有项目,不对外公开项目中包含的所有文件,但是可以在 <strong>Notebook</strong> 中将项目的执行结果单独设置公开,方便其他人查看项目的可视化报告。</li><li><strong>Team</strong>: 设置为团队项目,在团队选择框中选择团队的名称,团队的其他成员可以根据设置的权限访问这个项目。</li><li><strong>Public</strong>: 设置为公开项目,<strong>Workbench</strong> 中的所有用户都可以通过搜索查看到这个项目。</li></ul></li><li><p><strong>Permission</strong>: 设置项目对外的访问权限,只有将项目的 <strong>Visibility</strong> 设置为 <strong>Team</strong> 或 <strong>Public</strong> 的时候,才会出现权限设置界面。</p><ul><li><p><strong>Can View</strong></p><p>当项目的 <strong>Visibility</strong> 设置为 <strong>Team</strong> 时,团队中其他成员都只能<strong>查看</strong>这个项目的文件。</p><p>当项目的 Visibility 设置为 <strong>Public</strong> 时,<strong>Workbench</strong> 中其他成员都只能<strong>查看</strong>这个项目的文件。</p></li><li><p><strong>Can Edit</strong></p><p>当项目的 <strong>Visibility</strong> 设置为 <strong>Team</strong> 时,团队中其他成员都可以<strong>查看</strong>、<strong>编辑</strong>这个项目的文件。</p><p>当项目的 <strong>Visibility</strong> 设置为 <strong>Public</strong> 时,<strong>Workbench</strong> 中其他成员都可以<strong>查看</strong>、<strong>编辑</strong>这个项目的文件。</p></li><li><p><strong>Can Execute</strong></p><p>当项目的 <strong>Visibility</strong> 设置为 <strong>Team</strong> 时,团队中其他成员都可以<strong>查看</strong>、<strong>编辑</strong>、<strong>执行</strong>这个项目的文件。</p><p>当项目的 <strong>Visibility</strong> 设置为 <strong>Public</strong> 时,<strong>Workbench</strong> 中其他成员都可以<strong>查看</strong>、<strong>编辑</strong>、<strong>执行</strong>这个项目的文件。</p></li></ul></li></ul><p>第二步:在 <strong>Initial Project</strong> 步骤中,<strong>Workbench</strong> 提供了四种项目初始化的方式</p><ul><li><p><strong>Template</strong>: <strong>Workbench</strong> 内置了几种不同开发语言和算法框架的项目模版,你可以选择任何一种模版初始化你的项目,无需做任何修改就可以直接在 <strong>Notebook</strong> 中执行,特别适合新手进行快速的体验。</p><p><img alt="image-20191007184749193" src="/assets/images/workspace-project-step2-template-bec4a76922361fa150df6bffceffbb15.png"></p></li><li><p><strong>Blank</strong>:创建一个空白的项目,稍后,我们可以通过在 <strong>Notebook</strong> 中手工添加项目的文件</p><p><img alt="image-20191007184811389" src="/assets/images/workspace-project-step2-blank-8a6b9d97a33106329fbfe53920bc40c7.png"></p></li><li><p><strong>Upload</strong>: 通过上传 <strong>notebook</strong> 格式的文件来初始化你的项目,<strong>notebook</strong> 格式兼容 <strong>Jupyter Notebook</strong> 和 <strong>Zeppelin Notebook</strong> 文件格式。</p><p><img alt="image-20191007184825531" src="/assets/images/workspace-project-step2-upload-feb2db0271833adeb422990ca5aa43ba.png"></p></li><li><p><strong>Git Repo</strong>: 在你的 <strong>Github</strong>/<strong>Gitlab</strong> 账号中 <strong>Fork</strong> 一个仓库中的文件内容来初始化项目。</p><p><img alt="image-20191007184840989" src="/assets/images/workspace-project-step2-git-8431a483307851cd987d2a02264a8ee7.png"></p></li></ul><p>第三步:预览项目中的所包含的文件</p><p><img alt="image-20191007191205660" src="/assets/images/workspace-project-step3-34283e0a7051d38359a20311745f8aa6.png"></p><ul><li><strong>Save</strong>: 将项目保存到 Workspace 中。</li><li><strong>Open In Notebook</strong>: 将项目保存到 <strong>Workspace</strong> 中,并用 <strong>Notebook</strong> 打开项目。</li></ul><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="release"></a>Release<a class="hash-link" href="#release" title="Direct link to heading">#</a></h3><p>[TODO]</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="training"></a>Training<a class="hash-link" href="#training" title="Direct link to heading">#</a></h3><p>[TODO]</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="team"></a>Team<a class="hash-link" href="#team" title="Direct link to heading">#</a></h3><p>[TODO]</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="shared"></a>Shared<a class="hash-link" href="#shared" title="Direct link to heading">#</a></h3><p>[TODO]</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="interpreters"></a>Interpreters<a class="hash-link" href="#interpreters" title="Direct link to heading">#</a></h2><p>[TODO]</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="job"></a>Job<a class="hash-link" href="#job" title="Direct link to heading">#</a></h2><p>[TODO]</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="data"></a>Data<a class="hash-link" href="#data" title="Direct link to heading">#</a></h2><p>[TODO]</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="model"></a>Model<a class="hash-link" href="#model" title="Direct link to heading">#</a></h2><p>[TODO]</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="manager"></a>Manager<a class="hash-link" href="#manager" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="user"></a>User<a class="hash-link" href="#user" title="Direct link to heading">#</a></h3><p>[TODO]</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="team-1"></a>Team<a class="hash-link" href="#team-1" title="Direct link to heading">#</a></h3><p>[TODO]</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="data-dict"></a>Data Dict<a class="hash-link" href="#data-dict" title="Direct link to heading">#</a></h3><p>[TODO]</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="department"></a>Department<a class="hash-link" href="#department" title="Direct link to heading">#</a></h3><p>[TODO]</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="how-to-run-workbench"></a>How to run workbench<a class="hash-link" href="#how-to-run-workbench" title="Direct link to heading">#</a></h2><p><a href="/docs/next/adminDocs/yarn/workbench/HowToRun">How To Run Submarine Workbench Guide</a></p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/adminDocs/yarn/workbench/README.zh-CN.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"></div><div class="pagination-nav__item pagination-nav__item--next"></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#register" class="table-of-contents__link">Register</a></li><li><a href="#login" class="table-of-contents__link">Login</a></li><li><a href="#home" class="table-of-contents__link">Home</a></li><li><a href="#workspace" class="table-of-contents__link">Workspace</a><ul><li><a href="#project" class="table-of-contents__link">Project</a></li><li><a href="#release" class="table-of-contents__link">Release</a></li><li><a href="#training" class="table-of-contents__link">Training</a></li><li><a href="#team" class="table-of-contents__link">Team</a></li><li><a href="#shared" class="table-of-contents__link">Shared</a></li></ul></li><li><a href="#interpreters" class="table-of-contents__link">Interpreters</a></li><li><a href="#job" class="table-of-contents__link">Job</a></li><li><a href="#data" class="table-of-contents__link">Data</a></li><li><a href="#model" class="table-of-contents__link">Model</a></li><li><a href="#manager" class="table-of-contents__link">Manager</a><ul><li><a href="#user" class="table-of-contents__link">User</a></li><li><a href="#team-1" class="table-of-contents__link">Team</a></li><li><a href="#data-dict" class="table-of-contents__link">Data Dict</a></li><li><a href="#department" class="table-of-contents__link">Department</a></li></ul></li><li><a href="#how-to-run-workbench" class="table-of-contents__link">How to run workbench</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
-       either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
-        countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/389ecd94.a4d469d0.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/next/adminDocs/yarn/workbench/README/index.html b/docs/next/adminDocs/yarn/workbench/README/index.html
deleted file mode 100644
index 1067b40..0000000
--- a/docs/next/adminDocs/yarn/workbench/README/index.html
+++ /dev/null
@@ -1,37 +0,0 @@
-<!doctype html>
-<html lang="en">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-alpha.70">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">README | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="README | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/adminDocs/yarn/workbench/README"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/adminDocs/yarn/workbench/README"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/5a22443f.bcc802f0.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/adminDocs/yarn/workbench/README">master 🏃</a></li><li><a class="dropdown__link" href="/docs/adminDocs/yarn/workbench/README">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/adminDocs/yarn/workbench/README">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/adminDocs/yarn/workbench/README">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/adminDocs/yarn/workbench/README">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">README</h1></header><div class="markdown"><p>English | <a href="/docs/next/adminDocs/yarn/workbench/README.zh-CN">简体中文</a></p><h1><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="submarine-workbench-introduction"></a>Submarine Workbench Introduction<a class="hash-link" href="#submarine-workbench-introduction" title="Direct link to heading">#</a></h1><p>Submarine Workbench is a WEB system for data scientists.
-Data scientists can interactively access notebooks, submit/manage jobs, manage models, create model training workflows, access data sets, and more through Submarine Workbench.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="register"></a>Register<a class="hash-link" href="#register" title="Direct link to heading">#</a></h2><p>Everyone who needs to use Submarine for machine learning algorithm development can log in to Submarine Workbench&#x27;s WEB homepage. On the homepage, click the registration link, fill in the user name, email address and password to register the user. At this time, the user status is <code>waiting for approval</code> status.</p><p>After receiving the registration request from the user in Submarine Workbench, the administrator sets the operation authority according to the user&#x27;s needs, sets the user&#x27;s organization and allocates resources, and sets the user status to <code>pass the audit</code>. The user can log in to the Submarine Workbench. Different users have different permission.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="login"></a>Login<a class="hash-link" href="#login" title="Direct link to heading">#</a></h2><p>Each Submarine user logs in to the Home page of Submarine Workbench by entering their username and password on the Login page.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="home"></a>Home<a class="hash-link" href="#home" title="Direct link to heading">#</a></h2><p>In the Submarine Workbench Home page, the top level shows the user&#x27;s resource usage and task execution through four charts.</p><p>In the <code>Quick Start</code> list, the most commonly used feature links in the Workbench are displayed so that users can work quickly.</p><p>In the <code>Open Recent</code> list, there are nine items that the user has used recently, so you can work quickly.</p><p>At <code>What&#x27;s New?</code> In the list, some of the latest features and project information released by Submarine are displayed to help you understand the latest developments in the Submarine project.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="workspace"></a>Workspace<a class="hash-link" href="#workspace" title="Direct link to heading">#</a></h2><p>Workspace consists primarily of five tab pages, with the total number of items in each tab page&#x27;s title.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="project"></a>Project<a class="hash-link" href="#project" title="Direct link to heading">#</a></h3><p>In the Project page, all the projects created by the user themselves are displayed as cards.</p><p><img alt="image-20191007161424534" src="/assets/images/workspace-project-8d6fed3c330676f04875f8afe44b59d7.png"></p><p>Each Project card consists of the following sections:</p><ol><li><strong>Project Type</strong>:Submarine currently supports six types of machine learning algorithm frameworks and development languages: <code>Notebook</code>, <code>Python</code>, <code>R</code>, <code>Scala</code>, <code>Tensorflow</code>, and <code>PyTorch</code>, which are identified by corresponding icons in the project card.</li><li><strong>Project Tags</strong>:Users can tag each Project with different tags for easy searching and management.</li><li><strong>Github/Gitlab integrated</strong>:Submarine Workbench is system integrated with <code>Github</code>/<code>Gitlab</code>, and each Project can perform <code>Watch</code>, <code>Star</code>, <code>Fork</code>, and <code>Comment </code>operations in Workbench.<ul><li><strong>Watch</strong>:[TODO]</li><li><strong>Star</strong>:[TODO]</li><li><strong>Fork</strong>:[TODO]</li><li><strong>Comment</strong>:Users can comment on the project.</li></ul></li><li><strong>Edit</strong>:Users can open projects in <strong>Notebook</strong> and perform algorithm development by double-clicking on the project or by clicking the <strong>Edit</strong> button.</li><li><strong>Download</strong>:The user downloads the project package locally by clicking the <strong>Download</strong> button.</li><li><strong>Setting</strong>:Edit project information such as project name, profile, visibility level and permissions.</li><li><strong>Delete</strong>:Delete the project and all included files.</li></ol><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="add-new-project"></a>Add New Project<a class="hash-link" href="#add-new-project" title="Direct link to heading">#</a></h4><p>Clicking the <strong>Add New Project</strong> button on the project page will display the guide page for creating the project, and you can create a new project in just three steps.</p><p><strong>Step 1</strong>: Fill in the project name and project description in the <strong>Base Information</strong> step.</p><p><img alt="image-20191007171638338" src="/assets/images/workspace-project-step1-24bdac8d1ecdfeb14efeab0ba5019716.png"></p><ul><li><p><strong>Visibility</strong>: Set the visibility level of the item externally</p><ul><li><strong>Private</strong>: (Default) Set to private project, and all the files included in the project are not publicly displayed. but the execution result of the project can be individually set and exposed in Notebook, so that others can view the visual report of the project.</li><li><strong>Team</strong>: Set to team project, select the team name in the team selection box, and other members of the team can access the project according to the set permissions.</li><li><strong>Public</strong>: Set to public project, all users in Workbench can view this project through search.</li></ul></li><li><p><strong>Permission</strong>: Set the external access rights of the project. The permission setting interface will appear only when the <strong>Visibility</strong> of the project is set to <strong>Team</strong> or <strong>Public</strong>.</p><ul><li><p><strong>Can View</strong></p><p>When the project&#x27;s <strong>Visibility</strong> is set to <strong>Team</strong>, other members of the team can <strong>only view</strong> the files for this project.</p><p>When the project&#x27;s <strong>Visibility</strong> is set to <strong>Public</strong>, other members of the Workbench can <strong>only view</strong> the files for this project.</p></li><li><p><strong>Can Edit</strong></p><p>When the project&#x27;s <strong>Visibility</strong> is set to <strong>Team</strong>, other members of the team can <strong>view</strong> and <strong>edit</strong> the files for this project.</p><p>When the project&#x27;s <strong>Visibility</strong> is set to <strong>Public</strong>, other members of the Workbench can <strong>view</strong> and <strong>edit</strong> the files for this project.</p></li><li><p><strong>Can Execute</strong></p><p>When the project&#x27;s <strong>Visibility</strong> is set to <strong>Team</strong>, other members of the team can <strong>view</strong>, <strong>edit</strong>, and <strong>execute</strong> the project&#x27;s files.</p><p>When the project&#x27;s <strong>Visibility</strong> is set to <strong>Public</strong>, other members of the Workbench can <strong>view</strong>, <strong>edit</strong>, and <strong>execute</strong> the project&#x27;s files.</p></li></ul></li></ul><p><strong>Step 2</strong>: In the Initial Project step, Workbench provides four ways to initialize the project.</p><ul><li><p><strong>Template</strong>: Workbench Project templates with several different development languages and algorithm frameworks are built in. You can choose any template to initialize your project and you can execute it directly in Notebook without any modification. It is especially suitable for novices to experience quickly.</p><p><img alt="image-20191007184749193" src="/assets/images/workspace-project-step2-template-bec4a76922361fa150df6bffceffbb15.png"></p></li><li><p><strong>Blank</strong>:Create a blank project, and later we can manually add the project&#x27;s file in Notebook</p><p><img alt="image-20191007184811389" src="/assets/images/workspace-project-step2-blank-8a6b9d97a33106329fbfe53920bc40c7.png"></p></li><li><p><strong>Upload</strong>: Initialize your project by uploading a file in notebook format that is compatible with the <strong>Jupyter Notebook</strong> and <strong>Zeppelin Notebook</strong> file formats.</p><p><img alt="image-20191007184825531" src="/assets/images/workspace-project-step2-upload-feb2db0271833adeb422990ca5aa43ba.png"></p></li><li><p><strong>Git Repo</strong>: Fork a file in the repository to initialize the project in your <strong>Github</strong>/<strong>Gitlab</strong> account.</p><p><img alt="image-20191007184840989" src="/assets/images/workspace-project-step2-git-8431a483307851cd987d2a02264a8ee7.png"></p></li></ul><p><strong>Step 3</strong>:Preview the included files in the project</p><p><img alt="image-20191007191205660" src="/assets/images/workspace-project-step3-34283e0a7051d38359a20311745f8aa6.png"></p><ul><li><strong>Save</strong>: Save the project to Workspace.</li><li><strong>Open In Notebook</strong>: Save the project to Workspace and open the project with Notebook.</li></ul><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="release"></a>Release<a class="hash-link" href="#release" title="Direct link to heading">#</a></h3><p>[TODO]</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="training"></a>Training<a class="hash-link" href="#training" title="Direct link to heading">#</a></h3><p>[TODO]</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="team"></a>Team<a class="hash-link" href="#team" title="Direct link to heading">#</a></h3><p>[TODO]</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="shared"></a>Shared<a class="hash-link" href="#shared" title="Direct link to heading">#</a></h3><p>[TODO]</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="interpreters"></a>Interpreters<a class="hash-link" href="#interpreters" title="Direct link to heading">#</a></h2><p>[TODO]</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="job"></a>Job<a class="hash-link" href="#job" title="Direct link to heading">#</a></h2><p>[TODO]</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="data"></a>Data<a class="hash-link" href="#data" title="Direct link to heading">#</a></h2><p>[TODO]</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="model"></a>Model<a class="hash-link" href="#model" title="Direct link to heading">#</a></h2><p>[TODO]</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="manager"></a>Manager<a class="hash-link" href="#manager" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="user"></a>User<a class="hash-link" href="#user" title="Direct link to heading">#</a></h3><p>[TODO]</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="team-1"></a>Team<a class="hash-link" href="#team-1" title="Direct link to heading">#</a></h3><p>[TODO]</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="data-dict"></a>Data Dict<a class="hash-link" href="#data-dict" title="Direct link to heading">#</a></h3><p>[TODO]</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="department"></a>Department<a class="hash-link" href="#department" title="Direct link to heading">#</a></h3><p>[TODO]</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="how-to-run-workbench"></a>How to run workbench<a class="hash-link" href="#how-to-run-workbench" title="Direct link to heading">#</a></h2><p><a href="/docs/next/adminDocs/yarn/workbench/HowToRun">How To Run Submarine Workbench Guide</a></p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/adminDocs/yarn/workbench/README.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"></div><div class="pagination-nav__item pagination-nav__item--next"></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#register" class="table-of-contents__link">Register</a></li><li><a href="#login" class="table-of-contents__link">Login</a></li><li><a href="#home" class="table-of-contents__link">Home</a></li><li><a href="#workspace" class="table-of-contents__link">Workspace</a><ul><li><a href="#project" class="table-of-contents__link">Project</a></li><li><a href="#release" class="table-of-contents__link">Release</a></li><li><a href="#training" class="table-of-contents__link">Training</a></li><li><a href="#team" class="table-of-contents__link">Team</a></li><li><a href="#shared" class="table-of-contents__link">Shared</a></li></ul></li><li><a href="#interpreters" class="table-of-contents__link">Interpreters</a></li><li><a href="#job" class="table-of-contents__link">Job</a></li><li><a href="#data" class="table-of-contents__link">Data</a></li><li><a href="#model" class="table-of-contents__link">Model</a></li><li><a href="#manager" class="table-of-contents__link">Manager</a><ul><li><a href="#user" class="table-of-contents__link">User</a></li><li><a href="#team-1" class="table-of-contents__link">Team</a></li><li><a href="#data-dict" class="table-of-contents__link">Data Dict</a></li><li><a href="#department" class="table-of-contents__link">Department</a></li></ul></li><li><a href="#how-to-run-workbench" class="table-of-contents__link">How to run workbench</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
-       either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
-        countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/5a22443f.bcc802f0.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/next/adminDocs/yarn/workbench/notebook/setup-jupyter/index.html b/docs/next/adminDocs/yarn/workbench/notebook/setup-jupyter/index.html
deleted file mode 100644
index 451d944..0000000
--- a/docs/next/adminDocs/yarn/workbench/notebook/setup-jupyter/index.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!doctype html>
-<html lang="en">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-alpha.70">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">setup-jupyter | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="setup-jupyter | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/adminDocs/yarn/workbench/notebook/setup-jupyter"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/adminDocs/yarn/workbench/notebook/setup-jupyter"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/7103e683.e3ed81f2.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/adminDocs/yarn/workbench/notebook/setup-jupyter">master 🏃</a></li><li><a class="dropdown__link" href="/docs/adminDocs/yarn/workbench/notebook/setup-jupyter">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/adminDocs/yarn/workbench/notebook/setup-jupyter">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/adminDocs/yarn/workbench/notebook/setup-jupyter">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/adminDocs/yarn/workbench/notebook/setup-jupyter">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">setup-jupyter</h1></header><div class="markdown"><h1><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="deploy-jupyter-notebook-on-kubernetes"></a>Deploy Jupyter Notebook on Kubernetes<a class="hash-link" href="#deploy-jupyter-notebook-on-kubernetes" title="Direct link to heading">#</a></h1><p>This guide covers the deployment Jupyter Notebook on kubernetes cluster.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="experiment-environment"></a>Experiment environment<a class="hash-link" href="#experiment-environment" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="setup-kubernetes"></a>Setup Kubernetes<a class="hash-link" href="#setup-kubernetes" title="Direct link to heading">#</a></h3><p>We recommend using <a href="https://kind.sigs.k8s.io/" target="_blank" rel="noopener noreferrer">kind</a> to setup a Kubernetes cluster on a local machine.</p><p>You can use Extra mounts to mount your host path to kind node and use Extra port mappings to port
-forward to the kind nodes. Please refer to <a href="https://kind.sigs.k8s.io/docs/user/configuration/#extra-mounts" target="_blank" rel="noopener noreferrer">kind configuration</a>
-for more details.</p><p>You need to create a kind config file. The following is an example :</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">kind: Cluster</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">apiVersion: kind.x-k8s.io/v1alpha4</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">nodes:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">- role: control-plane</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  extraMounts:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  # add a mount from /path/to/my/files on the host to /files on the node</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  - hostPath: /tmp/submarine</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    containerPath: /tmp/submarine</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  extraPortMappings:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  - containerPort: 80</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    hostPort: 80</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    protocol: TCP</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  # exposing additional ports to be used for NodePort services</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  - containerPort: 30070</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    hostPort: 8888</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    protocol: TCP</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Running the following command:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">kind create cluster --image kindest/node:v1.15.6 --config &lt;path-to-kind-config&gt; --name k8s-submarine</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">kubectl create namespace submarine</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="deploy-jupyter-notebook"></a>Deploy Jupyter Notebook<a class="hash-link" href="#deploy-jupyter-notebook" title="Direct link to heading">#</a></h3><p>Once you have a running Kubernetes cluster, you can write a YAML file to deploy a jupyter notebook.
-In this <a target="_blank" href="/assets/files/jupyter-b412bca5cd2199cfea640f5453431d9d.yaml">example yaml</a>, we use <a href="https://hub.docker.com/r/jupyter/minimal-notebook/" target="_blank" rel="noopener noreferrer">jupyter/minimal-notebook</a>
-to make a single notebook running on the kind node.</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">kubectl apply -f jupyter.yaml --namespace submarine</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Once jupyter notebook is running, you can access the notebook server from the browser using http://localhost:8888 on local machine.</p><p>You can enter and store a password for your notebook server with:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">kubectl exec -it &lt;jupyter-pod-name&gt; -- jupyter notebook password</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>After restarting the notebook server,  you can login jupyter notebook with your new password.</p><p>If you want to use JupyterLab :</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">http://localhost:8888/lab</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/adminDocs/yarn/workbench/notebook/setup-jupyter.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"></div><div class="pagination-nav__item pagination-nav__item--next"></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#experiment-environment" class="table-of-contents__link">Experiment environment</a><ul><li><a href="#setup-kubernetes" class="table-of-contents__link">Setup Kubernetes</a></li><li><a href="#deploy-jupyter-notebook" class="table-of-contents__link">Deploy Jupyter Notebook</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
-       either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
-        countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/7103e683.e3ed81f2.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/next/api/environment/index.html b/docs/next/api/environment/index.html
index 046d853..574c050 100644
--- a/docs/next/api/environment/index.html
+++ b/docs/next/api/environment/index.html
@@ -6,16 +6,16 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Environment REST API | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="Environment REST API | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/api/environment"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/api/environment"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/2f44017d.3a426844.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/935f2afb.9989d552.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/2f44017d.88f8adb9.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -24,15 +24,15 @@
 &quot;name&quot; of EnvironmentSpec is not supported.</p></blockquote><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="delete-environment"></a>Delete environment<a class="hash-link" href="#delete-environment" title="Direct link to heading">#</a></h3><p><code>GET /api/v1/environment/{name}</code></p><p><strong>Example Request:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X DELETE http://127.0.0.1:32080/api/v1/environment/my-submarine-env</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>Example Response:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;environmentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;environment_1586156073228_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;environmentSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;my-submarine-env&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;dockerImage&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;continuumio/anaconda3&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;team_default_python_3.7_updated&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;channels&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;defaults&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;condaDependencies&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;_ipyw_jlab_nb_ext_conf=0.1.0=py37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;alabaster=0.7.12=py37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;pipDependencies&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/api/environment.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/next/api/experiment"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Experiment REST API »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#create-environment" class="table-of-contents__link">Create Environment</a><ul><li><a href="#list-environment" class="table-of-contents__link">List environment</a></li><li><a href="#get-environment" class="table-of-contents__link">Get environment</a></li><li><a href="#patch-environment" class="table-of-contents__link">Patch environment</a></li><li><a href="#delete-environment" class="table-of-contents__link">Delete environment</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/2f44017d.3a426844.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/935f2afb.9989d552.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/2f44017d.88f8adb9.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/next/api/experiment-template/index.html b/docs/next/api/experiment-template/index.html
index 18d46ab..fe5ead4 100644
--- a/docs/next/api/experiment-template/index.html
+++ b/docs/next/api/experiment-template/index.html
@@ -6,16 +6,16 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Experiment Template REST API | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="Experiment Template REST API | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/api/experiment-template"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/api/experiment-template"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/4726afa6.756a77c8.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/935f2afb.9989d552.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/4726afa6.e62ba52e.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -30,15 +30,15 @@
 &quot;name&quot; of experiment template is not supported.</p></blockquote><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="delete-template"></a>Delete template<a class="hash-link" href="#delete-template" title="Direct link to heading">#</a></h3><p><code>GET /api/v1/template/{name}</code></p><p><strong>Example Request:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X DELETE http://127.0.0.1:32080/api/v1/template/my-tf-mnist-template</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="use-template-to-create-a-experiment"></a>Use template to create a experiment<a class="hash-link" href="#use-template-to-create-a-experiment" title="Direct link to heading">#</a></h3><p><code>POST /api/v1/experiment/{template_name}</code></p><p><strong>Example Request:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X POST -H &quot;Content-Type: application/json&quot; -d &#x27;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">{</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;name&quot;: &quot;tf-mnist&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;params&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        &quot;learning_rate&quot;:&quot;0.01&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        &quot;batch_size&quot;:&quot;150&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        &quot;experiment_name&quot;:&quot;newexperiment1&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">}</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">&#x27; http://127.0.0.1:32080/api/v1/experiment/my-tf-mnist-template</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/api/experiment-template.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/next/api/experiment"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Experiment REST API</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/next/api/notebook"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Notebook REST API »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#create-experiment-template" class="table-of-contents__link">Create experiment template</a><ul><li><a href="#list-experiment-template" class="table-of-contents__link">List experiment template</a></li><li><a href="#get-experiment-template" class="table-of-contents__link">Get experiment template</a></li><li><a href="#patch-template" class="table-of-contents__link">Patch template</a></li><li><a href="#delete-template" class="table-of-contents__link">Delete template</a></li><li><a href="#use-template-to-create-a-experiment" class="table-of-contents__link">Use template to create a experiment</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/4726afa6.756a77c8.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/935f2afb.9989d552.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/4726afa6.e62ba52e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/next/api/experiment/index.html b/docs/next/api/experiment/index.html
index bce691e..581d896 100644
--- a/docs/next/api/experiment/index.html
+++ b/docs/next/api/experiment/index.html
@@ -6,16 +6,16 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Experiment REST API | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="Experiment REST API | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/api/experiment"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/api/experiment"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/80453470.867d0bbd.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/935f2afb.9989d552.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/80453470.41b937e7.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -23,15 +23,15 @@
 future releases.</p></blockquote><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="create-experiment-using-anonymousembedded-environment"></a>Create Experiment (Using Anonymous/Embedded Environment)<a class="hash-link" href="#create-experiment-using-anonymousembedded-environment" title="Direct link to heading">#</a></h2><p><code>POST /api/v1/experiment</code></p><p><strong>Example Request</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X POST -H &quot;Content-Type: application/json&quot; -d &#x27;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">{</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;meta&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;name&quot;: &quot;tf-mnist-json&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;namespace&quot;: &quot;default&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;framework&quot;: &quot;TensorFlow&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;cmd&quot;: &quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;envVars&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;ENV_1&quot;: &quot;ENV1&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;environment&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;image&quot;: &quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;spec&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;Ps&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;replicas&quot;: 1,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;resources&quot;: &quot;cpu=1,memory=1024M&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;Worker&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;replicas&quot;: 1,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;resources&quot;: &quot;cpu=1,memory=2048M&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">}</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">&#x27; http://127.0.0.1:32080/api/v1/experiment</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>Example Response:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;experimentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_1586156073228_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;uid&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;28e39dcd-77d4-11ea-8dbb-0242ac110003&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Accepted&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;acceptedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2020-06-13T22:59:29.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;framework&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;TensorFlow&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;ENV_1&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;Ps&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu=1,memory=1024M&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;Worker&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu=1,memory=2048M&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="create-experiment-using-pre-definedstored-environment"></a>Create Experiment (Using Pre-defined/Stored Environment)<a class="hash-link" href="#create-experiment-using-pre-definedstored-environment" title="Direct link to heading">#</a></h2><p><code>POST /api/v1/experiment</code></p><p><strong>Example Request</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X POST -H &quot;Content-Type: application/json&quot; -d &#x27;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">{</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;meta&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;name&quot;: &quot;tf-mnist-json&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;namespace&quot;: &quot;default&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;framework&quot;: &quot;TensorFlow&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;cmd&quot;: &quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;envVars&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;ENV_1&quot;: &quot;ENV1&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;environment&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;name&quot;: &quot;my-submarine-env&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;spec&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;Ps&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;replicas&quot;: 1,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;resources&quot;: &quot;cpu=1,memory=1024M&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;Worker&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;replicas&quot;: 1,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;resources&quot;: &quot;cpu=1,memory=2048M&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">}</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">&#x27; http://127.0.0.1:32080/api/v1/experiment</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Above example assume environment &quot;my-submarine-env&quot; already exists in Submarine. Please refer Environment API Reference doc to Create/Update/Delete/List Environment REST API&#x27;s</p><p><strong>Example Response:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;experimentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_1586156073228_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;uid&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;28e39dcd-77d4-11ea-8dbb-0242ac110003&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Accepted&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;acceptedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2020-06-13T22:59:29.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;framework&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;TensorFlow&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;ENV_1&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;my-submarine-env&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;Ps&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu=1,memory=1024M&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;Worker&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu=1,memory=2048M&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="list-experiment"></a>List experiment<a class="hash-link" href="#list-experiment" title="Direct link to heading">#</a></h3><p><code>GET /api/v1/experiment</code></p><p><strong>Example Request:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X GET http://127.0.0.1:32080/api/v1/experiment</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>Example Response:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;experimentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_1592057447228_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;uid&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;28e39dcd-77d4-11ea-8dbb-0242ac110003&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Accepted&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;acceptedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2020-06-13T22:59:29.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;framework&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;TensorFlow&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                        </span><span class="token property">&quot;ENV_1&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;Ps&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                        </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                        </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu=1,memory=1024M&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;Worker&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                        </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                        </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu=1,memory=2048M&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;experimentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_1592057447228_0002&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;mnist&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;uid&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;38e39dcd-77d4-11ea-8dbb-0242ac110003&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Accepted&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;acceptedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2020-06-13T22:19:29.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;pytorch-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;framework&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;PyTorch&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /var/mnist.py --backend gloo&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                        </span><span class="token property">&quot;ENV_1&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:pytorch-dist-mnist-1.0&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;Master&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                        </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                        </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu=1,memory=1024M&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;Worker&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                        </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                        </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu=1,memory=1024M&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="get-experiment"></a>Get experiment<a class="hash-link" href="#get-experiment" title="Direct link to heading">#</a></h3><p><code>GET /api/v1/experiment/{id}</code></p><p><strong>Example Request:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X GET http://127.0.0.1:32080/api/v1/experiment/experiment_1592057447228_0001</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>Example Response:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;experimentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_1592057447228_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;uid&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;28e39dcd-77d4-11ea-8dbb-0242ac110003&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Accepted&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;acceptedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2020-06-13T22:59:29.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;framework&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;TensorFlow&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                  </span><span class="token property">&quot;ENV_1&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;Ps&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu=1,memory=1024M&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;Worker&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu=1,memory=2048M&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="patch-experiment"></a>Patch experiment<a class="hash-link" href="#patch-experiment" title="Direct link to heading">#</a></h3><p><code>PATCH /api/v1/experiment/{id}</code></p><p><strong>Example Request:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X PATCH -H &quot;Content-Type: application/json&quot; -d &#x27;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">{</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;meta&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;name&quot;: &quot;tf-mnist-json&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;namespace&quot;: &quot;default&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;framework&quot;: &quot;TensorFlow&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;cmd&quot;: &quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;envVars&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;ENV_1&quot;: &quot;ENV1&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;environment&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;image&quot;: &quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;spec&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;Ps&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;replicas&quot;: 1,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;resources&quot;: &quot;cpu=1,memory=1024M&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;Worker&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;replicas&quot;: 2,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;resources&quot;: &quot;cpu=1,memory=2048M&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">}</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">&#x27; http://127.0.0.1:32080/api/v1/experiment/experiment_1592057447228_0001</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>Example Response:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;framework&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;TensorFlow&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;ENV_1&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;Ps&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu=1,memory=1024M&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;Worker&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">2</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu=1,memory=2048M&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="delete-experiment"></a>Delete experiment<a class="hash-link" href="#delete-experiment" title="Direct link to heading">#</a></h3><p><code>GET /api/v1/experiment/{id}</code></p><p><strong>Example Request:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X DELETE http://127.0.0.1:32080/api/v1/experiment/experiment_1592057447228_0001</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>Example Response:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;experimentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_1586156073228_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;uid&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;28e39dcd-77d4-11ea-8dbb-0242ac110003&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Accepted&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;acceptedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2020-06-13T22:59:29.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;framework&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;TensorFlow&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;ENV_1&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;Ps&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu=1,memory=1024M&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;Worker&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">2</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu=1,memory=2048M&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="list-experiment-log"></a>List experiment Log<a class="hash-link" href="#list-experiment-log" title="Direct link to heading">#</a></h3><p><code>GET /api/v1/experiment/logs</code></p><p><strong>Example Request:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X GET http://127.0.0.1:32080/api/v1/experiment/logs</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>Example Response:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;experimentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_1589199154923_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;logContent&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;podName&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;mnist-worker-0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;podLog&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;experimentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_1589199154923_0002&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;logContent&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;podName&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;pytorch-dist-mnist-gloo-master-0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;podLog&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;podName&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;pytorch-dist-mnist-gloo-worker-0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token property">&quot;podLog&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="get-experiment-log"></a>Get experiment Log<a class="hash-link" href="#get-experiment-log" title="Direct link to heading">#</a></h3><p><code>GET /api/v1/experiment/logs/{id}</code></p><p><strong>Example Request:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X GET http://127.0.0.1:32080/api/v1/experiment/logs/experiment_1589199154923_0002</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>Example Response:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;experimentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_1589199154923_0002&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;logContent&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;podName&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;pytorch-dist-mnist-gloo-master-0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;podLog&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;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&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;podName&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;pytorch-dist-mnist-gloo-worker-0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;podLog&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;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&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/api/experiment.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/next/api/environment"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Environment REST API</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/next/api/experiment-template"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Experiment Template REST API »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#create-experiment-using-anonymousembedded-environment" class="table-of-contents__link">Create Experiment (Using Anonymous/Embedded Environment)</a></li><li><a href="#create-experiment-using-pre-definedstored-environment" class="table-of-contents__link">Create Experiment (Using Pre-defined/Stored Environment)</a><ul><li><a href="#list-experiment" class="table-of-contents__link">List experiment</a></li><li><a href="#get-experiment" class="table-of-contents__link">Get experiment</a></li><li><a href="#patch-experiment" class="table-of-contents__link">Patch experiment</a></li><li><a href="#delete-experiment" class="table-of-contents__link">Delete experiment</a></li><li><a href="#list-experiment-log" class="table-of-contents__link">List experiment Log</a></li><li><a href="#get-experiment-log" class="table-of-contents__link">Get experiment Log</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/80453470.867d0bbd.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/935f2afb.9989d552.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/80453470.41b937e7.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/next/api/model-version/index.html b/docs/next/api/model-version/index.html
index 6e0832a..380b180 100644
--- a/docs/next/api/model-version/index.html
+++ b/docs/next/api/model-version/index.html
@@ -6,31 +6,31 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Serve REST API | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="Serve REST API | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/api/model-version"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/api/model-version"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/89982a88.82f56b69.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/935f2afb.9989d552.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/89982a88.dc2654e5.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/api/model-version">master 🏃</a></li><li><a class="dropdown__link" href="/docs/">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/api/model-version">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Serve REST API</h1></header><div class="markdown"><blockquote><p>Note: The Model Version API is in the alpha stage which is subjected to incompatible changes in future releases.</p></blockquote><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="list-model-versions-under-a-registered-model"></a>List model versions under a registered model<a class="hash-link" href="#list-model-versions-under-a-registered-model" title="Direct link to heading">#</a></h3><p><code>GET /api/v1/model-version/{name}</code></p><p><strong>Example Request:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X GET http://127.0.0.1:32080/api/v1/model-version/register</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>Example Response:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;attributes&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;code&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;message&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;List all model version instances&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;result&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;creationTime&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-12-12 02:27:05&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;currentStage&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;None&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;dataset&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;description&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;experimentId&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment-1639276018590-0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;lastUpdatedTime&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-12-12 02:27:05&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;modelType&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tensorflow&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;name&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;register&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;source&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;s3://submarine/experiment-1639276018590-0001/example/1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;tags&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;userId&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;version&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;creationTime&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-12-12 02:27:05&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;currentStage&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;None&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;dataset&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;description&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;experimentId&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment-1639276018590-0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;lastUpdatedTime&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-12-12 02:27:05&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;modelType&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tensorflow&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;name&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;register&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;source&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;s3://submarine/experiment-1639276018590-0001/example/2&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;tags&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;userId&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;version&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">2</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;creationTime&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-12-12 02:27:05&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;currentStage&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;None&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;dataset&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;description&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;experimentId&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment-1639276018590-0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;lastUpdatedTime&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-12-12 02:27:05&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;modelType&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tensorflow&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;name&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;register&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;source&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;s3://submarine/experiment-1639276018590-0001/example1/1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;tags&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;userId&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;version&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">3</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;creationTime&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-12-12 02:27:06&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;currentStage&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;None&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;dataset&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;description&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;experimentId&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment-1639276018590-0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;lastUpdatedTime&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-12-12 02:27:06&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;modelType&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tensorflow&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;name&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;register&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;source&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;s3://submarine/experiment-1639276018590-0001/example2/1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;tags&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;userId&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;version&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">4</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;status&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;success&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="get-a-model-version"></a>Get a model version<a class="hash-link" href="#get-a-model-version" title="Direct link to heading">#</a></h3><p><code>GET /api/v1/model-version/{name}/{version}</code></p><p><strong>Example Request:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X GET http://127.0.0.1:32080/api/v1/model-version/register/1</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>Example Response:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;attributes&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;code&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;message&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Get the model version instance&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;result&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;creationTime&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-12-12 02:27:05&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;currentStage&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;None&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;dataset&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;description&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;experimentId&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment-1639276018590-0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;lastUpdatedTime&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-12-12 02:27:05&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;modelType&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tensorflow&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;name&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;register&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;source&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;s3://submarine/experiment-1639276018590-0001/example/1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;tags&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;userId&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;version&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;status&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;success&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="patch-a-model-version"></a>Patch a model version<a class="hash-link" href="#patch-a-model-version" title="Direct link to heading">#</a></h3><p><code>PATCH /api/v1/model-version</code></p><p><strong>Example Request:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X PATCH -H &quot;Content-Type: application/json&quot; -d &#x27;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">{</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;name&quot;: &quot;register&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;version&quot;: 1,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;description&quot;: &quot;new_description&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;currentStage&quot;: &quot;production&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;dataset&quot;: &quot;new_dataset&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">}&#x27; http://127.0.0.1:32080/api/v1/model-version</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>Example Response:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;attributes&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;code&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;message&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Update the model version instance&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;result&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;status&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;success&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="delete-a-model-version"></a>Delete a model version<a class="hash-link" href="#delete-a-model-version" title="Direct link to heading">#</a></h2><p><code>DELETE /api/v1/model-version/{name}/{version}</code></p><p><strong>Example Request</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X DELETE http://127.0.0.1:32080/api/v1/model-version/register/1</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>Example Response:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;attributes&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;code&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;message&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Delete the model version instance&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;result&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;status&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;success&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="create-a-model-version-tag"></a>Create a model version tag<a class="hash-link" href="#create-a-model-version-tag" title="Direct link to heading">#</a></h2><p><code>POST /api/v1/model-version/tag?name={name}&amp;version={version}&amp;tag={tag}</code></p><p><strong>Example Request</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X POST http://127.0.0.1:32080/api/v1/model-version/tag?name=register&amp;version=2&amp;tag=789</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>Example Response:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;attributes&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;code&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;message&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Create a model version tag instance&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;result&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;status&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;success&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="delete-a-model-version-tag"></a>Delete a model version tag<a class="hash-link" href="#delete-a-model-version-tag" title="Direct link to heading">#</a></h2><p><code>DELETE /api/v1/model-version/tag?name={name}&amp;version={version}&amp;tag={tag}</code></p><p><strong>Example Request</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X DELETE http://127.0.0.1:32080/api/v1/model-version/tag?name=register&amp;version=2&amp;tag=789</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>Example Response:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Delete a registered model tag instance&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/api/model-version.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"></div><div class="pagination-nav__item pagination-nav__item--next"></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#list-model-versions-under-a-registered-model" class="table-of-contents__link">List model versions under a registered model</a></li><li><a href="#get-a-model-version" class="table-of-contents__link">Get a model version</a></li><li><a href="#patch-a-model-version" class="table-of-contents__link">Patch a model version</a></li><li><a href="#delete-a-model-version" class="table-of-contents__link">Delete a model version</a></li><li><a href="#create-a-model-version-tag" class="table-of-contents__link">Create a model version tag</a></li><li><a href="#delete-a-model-version-tag" class="table-of-contents__link">Delete a model version tag</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/89982a88.82f56b69.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/935f2afb.9989d552.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/89982a88.dc2654e5.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/next/api/notebook/index.html b/docs/next/api/notebook/index.html
index c7511ea..053ccb6 100644
--- a/docs/next/api/notebook/index.html
+++ b/docs/next/api/notebook/index.html
@@ -6,31 +6,31 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Notebook REST API | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="Notebook REST API | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/api/notebook"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/api/notebook"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/a0524152.37637a8c.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/935f2afb.9989d552.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/a0524152.dfe71981.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/api/notebook">master 🏃</a></li><li><a class="dropdown__link" href="/docs/api/notebook">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/api/notebook">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/api/notebook">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" href="/docs/next/api/notebook">Notebook REST API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/serve">Serve REST API</a></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/api/notebook">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Notebook REST API</h1></header><div class="markdown"><blockquote><p>Note: The Notebook API is in the alpha stage which is subjected to incompatible changes in future releases.</p></blockquote><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="create-a-notebook-instance"></a>Create a notebook instance<a class="hash-link" href="#create-a-notebook-instance" title="Direct link to heading">#</a></h2><p><code>POST /api/v1/notebook</code></p><p><strong>Example Request</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X POST -H &quot;Content-Type: application/json&quot; -d &#x27;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">{</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;meta&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;name&quot;: &quot;test-nb&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;namespace&quot;: &quot;default&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;ownerId&quot;: &quot;e9ca23d68d884d4ebb19d07889727dae&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;environment&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;name&quot;: &quot;notebook-env&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;spec&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;envVars&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;TEST_ENV&quot;: &quot;test&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;resources&quot;: &quot;cpu=1,memory=1.0Gi&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">}</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">&#x27; http://127.0.0.1:32080/api/v1/notebook</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>Example Response:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Create a notebook instance&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;notebookId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;notebook_1597931805405_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test-nb&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;uid&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;5a94c01d-6a92-4222-bc66-c610c277546d&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;url&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;/notebook/default/test-nb/&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;creating&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;reason&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;The notebook instance is creating&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;createdTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2020-08-20T21:58:27.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;deletedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test-nb&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;ownerId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;e9ca23d68d884d4ebb19d07889727dae&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;notebook-env&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:jupyter-notebook-0.5.0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;team_default_python_3.7&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;channels&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;defaults&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;dependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;TEST_ENV&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu=1,memory=1.0Gi&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="list-notebook-instances-which-belong-to-user"></a>List notebook instances which belong to user<a class="hash-link" href="#list-notebook-instances-which-belong-to-user" title="Direct link to heading">#</a></h2><p><code>GET /api/v1/notebook</code></p><p><strong>Example Request:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X GET http://127.0.0.1:32080/api/v1/notebook?id={user_id}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>Example Response:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;List all notebook instances&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;notebookId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;notebook_1597931805405_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test-nb&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;uid&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;5a94c01d-6a92-4222-bc66-c610c277546d&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;url&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;/notebook/default/test-nb/&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;running&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;reason&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;The notebook instance is running&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;createdTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2020-08-20T21:58:27.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;deletedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test-nb&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;ownerId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;e9ca23d68d884d4ebb19d07889727dae&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;notebook-env&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:jupyter-notebook-0.5.0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;team_default_python_3.7&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;channels&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;defaults&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;dependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;TEST_ENV&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu=1,memory=1.0Gi&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="get-the-notebook-instance"></a>Get the notebook instance<a class="hash-link" href="#get-the-notebook-instance" title="Direct link to heading">#</a></h2><p><code>GET /api/v1/notebook/{id}</code></p><p><strong>Example Request:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X GET http://127.0.0.1:32080/api/v1/notebook/{id}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>Example Response:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Get the notebook instance&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;notebookId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;notebook_1597931805405_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test-nb&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;uid&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;5a94c01d-6a92-4222-bc66-c610c277546d&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;url&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;/notebook/default/test-nb/&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;running&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;reason&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;The notebook instance is running&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;createdTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2020-08-20T21:58:27.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;deletedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test-nb&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;ownerId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;e9ca23d68d884d4ebb19d07889727dae&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;notebook-env&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:jupyter-notebook-0.5.0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;team_default_python_3.7&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;channels&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;defaults&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;dependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;TEST_ENV&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu=1,memory=1.0Gi&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="delete-the-notebook-instance"></a>Delete the notebook instance<a class="hash-link" href="#delete-the-notebook-instance" title="Direct link to heading">#</a></h2><p><code>DELETE /api/v1/notebook/{id}</code></p><p><strong>Example Request:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X DELETE http://127.0.0.1:32080/api/v1/notebook/{id}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>Example Response:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Delete the notebook instance&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;notebookId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;notebook_1597931805405_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test-nb&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;uid&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;5a94c01d-6a92-4222-bc66-c610c277546d&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;url&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;/notebook/default/test-nb/&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;terminating&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;reason&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;The notebook instance is terminating&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;createdTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2020-08-22T14:03:19.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;deletedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2020-08-22T14:46:28+0800&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test-nb&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;ownerId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;e9ca23d68d884d4ebb19d07889727dae&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;notebook-env&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:jupyter-notebook-0.5.0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;team_default_python_3.7&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;channels&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;defaults&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;dependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;TEST_ENV&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu=1,memory=1.0Gi&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/api/notebook.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/next/api/experiment-template"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Experiment Template REST API</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/next/api/serve"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Serve REST API »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#create-a-notebook-instance" class="table-of-contents__link">Create a notebook instance</a></li><li><a href="#list-notebook-instances-which-belong-to-user" class="table-of-contents__link">List notebook instances which belong to user</a></li><li><a href="#get-the-notebook-instance" class="table-of-contents__link">Get the notebook instance</a></li><li><a href="#delete-the-notebook-instance" class="table-of-contents__link">Delete the notebook instance</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/a0524152.37637a8c.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/935f2afb.9989d552.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/a0524152.dfe71981.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/next/api/registered-model/index.html b/docs/next/api/registered-model/index.html
index 8e0050e..c8dde8b 100644
--- a/docs/next/api/registered-model/index.html
+++ b/docs/next/api/registered-model/index.html
@@ -6,31 +6,31 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Serve REST API | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="Serve REST API | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/api/registered-model"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/api/registered-model"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/f0df3a58.b3e87ed7.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/935f2afb.9989d552.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/f0df3a58.988417ee.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/api/registered-model">master 🏃</a></li><li><a class="dropdown__link" href="/docs/">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/api/registered-model">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Serve REST API</h1></header><div class="markdown"><blockquote><p>Note: The Registered Model API is in the alpha stage which is subjected to incompatible changes in future releases.</p></blockquote><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="create-a-registered-model"></a>Create a registered model<a class="hash-link" href="#create-a-registered-model" title="Direct link to heading">#</a></h2><p><code>POST /api/v1/registered-model</code></p><p><strong>Example Request</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X POST -H &quot;Content-Type: application/json&quot; -d &#x27;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">{</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   &quot;name&quot;: &quot;example_name&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   &quot;description&quot;: &quot;example_description&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   &quot;tags&quot;: [&quot;123&quot;, &quot;456&quot;]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">&#x27; http://127.0.0.1:32080/api/v1/registered-model</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>Example Response:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Create a registered model instance&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="list-registered-models"></a>List registered models<a class="hash-link" href="#list-registered-models" title="Direct link to heading">#</a></h3><p><code>GET /api/v1/registered-model</code></p><p><strong>Example Request:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X GET http://127.0.0.1:32080/api/v1/registered-model</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>Example Response:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;attributes&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;code&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;message&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;List all registered model instances&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;result&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;creationTime&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-12-16 10:14:06&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;description&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;example_description&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;lastUpdatedTime&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-12-16 10:14:06&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;name&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;example_name&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;tags&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;123&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;456&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;creationTime&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-12-16 10:16:25&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;description&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;example_description&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;lastUpdatedTime&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-12-16 10:16:25&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;name&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;example_name1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;tags&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;123&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;456&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;creationTime&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-12-12 02:27:05&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;description&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;lastUpdatedTime&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-12-14 12:49:33&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;name&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;register&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token property">&quot;tags&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;status&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;success&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="get-a-registered-model"></a>Get a registered model<a class="hash-link" href="#get-a-registered-model" title="Direct link to heading">#</a></h3><p><code>GET /api/v1/registered-model/{name}</code></p><p><strong>Example Request:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X GET http://127.0.0.1:32080/api/v1/registered-model/example_name</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>Example Response:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;attributes&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;code&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;message&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Get the registered model instance&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;result&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;creationTime&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-12-16 10:14:06&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;description&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;example_description&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;lastUpdatedTime&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-12-16 10:14:06&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;name&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;example_name&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;tags&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;123&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;456&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;status&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;success&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="patch-a-registered-model"></a>Patch a registered model<a class="hash-link" href="#patch-a-registered-model" title="Direct link to heading">#</a></h3><p><code>PATCH /api/v1/registered-model/{name}</code></p><p><strong>Example Request:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X PATCH -H &quot;Content-Type: application/json&quot; -d &#x27;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">{</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;name&quot;: &quot;new_name&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;description&quot;: &quot;new_description&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">}&#x27; http://127.0.0.1:32080/api/v1/registered-model/example_name</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>Example Response:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;attributes&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;code&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;message&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Update the registered model instance&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;result&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;status&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;success&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="delete-a-registered-model"></a>Delete a registered model<a class="hash-link" href="#delete-a-registered-model" title="Direct link to heading">#</a></h2><p><code>DELETE /api/v1/registered-model/{name}</code></p><p><strong>Example Request</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X DELETE http://127.0.0.1:32080/api/v1/registered-model/example_name</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>Example Response:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;attributes&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;code&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;message&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Delete the registered model instance&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;result&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;status&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;success&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="create-a-registered-model-tag"></a>Create a registered model tag<a class="hash-link" href="#create-a-registered-model-tag" title="Direct link to heading">#</a></h2><p><code>POST /api/v1/registered-model/tag?name={name}&amp;tag={tag}</code></p><p><strong>Example Request</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X POST http://127.0.0.1:32080/api/v1/registered-model/tag?name=example_name&amp;tag=789</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>Example Response:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Create a registered model tag instance&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="delete-a-registered-model-tag"></a>Delete a registered model tag<a class="hash-link" href="#delete-a-registered-model-tag" title="Direct link to heading">#</a></h2><p><code>DELETE /api/v1/registered-model/tag?name={name}&amp;tag={tag}</code></p><p><strong>Example Request</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X DELETE http://127.0.0.1:32080/api/v1/registered-model/tag?name=example_name&amp;tag=789</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>Example Response:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;attributes&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;code&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;message&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Delete a registered model tag instance&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;result&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;status&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token property">&quot;success&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/api/registered-model.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"></div><div class="pagination-nav__item pagination-nav__item--next"></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#create-a-registered-model" class="table-of-contents__link">Create a registered model</a><ul><li><a href="#list-registered-models" class="table-of-contents__link">List registered models</a></li><li><a href="#get-a-registered-model" class="table-of-contents__link">Get a registered model</a></li><li><a href="#patch-a-registered-model" class="table-of-contents__link">Patch a registered model</a></li></ul></li><li><a href="#delete-a-registered-model" class="table-of-contents__link">Delete a registered model</a></li><li><a href="#create-a-registered-model-tag" class="table-of-contents__link">Create a registered model tag</a></li><li><a href="#delete-a-registered-model-tag" class="table-of-contents__link">Delete a registered model tag</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/f0df3a58.b3e87ed7.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/935f2afb.9989d552.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/f0df3a58.988417ee.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/next/api/serve/index.html b/docs/next/api/serve/index.html
index efa23a3..a1725e6 100644
--- a/docs/next/api/serve/index.html
+++ b/docs/next/api/serve/index.html
@@ -6,31 +6,31 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Serve REST API | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="Serve REST API | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/api/serve"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/api/serve"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/3af95f13.887c2b91.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/935f2afb.9989d552.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/3af95f13.48d646a7.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/api/serve">master 🏃</a></li><li><a class="dropdown__link" href="/docs/">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/api/serve">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/notebook">Notebook REST API</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" href="/docs/next/api/serve">Serve REST API</a></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Serve REST API</h1></header><div class="markdown"><blockquote><p>Note: The Serv API is in the alpha stage which is subjected to incompatible changes in future releases.</p></blockquote><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="create-a-model-serve"></a>Create a model serve<a class="hash-link" href="#create-a-model-serve" title="Direct link to heading">#</a></h2><p><code>POST /api/v1/serve</code></p><p><strong>Example Request</strong></p><blockquote><p>Make sure there is a model named <code>simple</code> with version <code>1</code> in the database.</p></blockquote><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X POST -H &quot;Content-Type: application/json&quot; -d &#x27;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">{</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;modelName&quot;: &quot;simple&quot;, </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;modelVersion&quot;:1, </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">}</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">&#x27; http://127.0.0.1:32080/api/v1/serve</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>Example Response:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Create a serve instance&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;url&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="delete-the-tensorflow-model-serve"></a>Delete the TensorFlow model serve<a class="hash-link" href="#delete-the-tensorflow-model-serve" title="Direct link to heading">#</a></h2><p><code>DELETE /api/v1/serve</code></p><p><strong>Example Request</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X DELETE -H &quot;Content-Type: application/json&quot; -d &#x27;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">{</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;modelName&quot;: &quot;simple&quot;, </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;modelVersion&quot;:1,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">}</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">&#x27; http://127.0.0.1:32080/api/v1/serve</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>Example Response:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Delete the model serve instance&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/api/serve.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/next/api/notebook"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Notebook REST API</div></a></div><div class="pagination-nav__item pagination-nav__item--next"></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#create-a-model-serve" class="table-of-contents__link">Create a model serve</a></li><li><a href="#delete-the-tensorflow-model-serve" class="table-of-contents__link">Delete the TensorFlow model serve</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/3af95f13.887c2b91.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/935f2afb.9989d552.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/3af95f13.48d646a7.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/next/community/Bylaws/index.html b/docs/next/community/Bylaws/index.html
index 52da65b..8e91e36 100644
--- a/docs/next/community/Bylaws/index.html
+++ b/docs/next/community/Bylaws/index.html
@@ -6,31 +6,31 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Bylaws | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="Bylaws | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/community/Bylaws"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/community/Bylaws"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/2d4ab289.c1e9c4f4.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/935f2afb.9989d552.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/2d4ab289.f3ca3750.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/community/Bylaws">master 🏃</a></li><li><a class="dropdown__link" href="/docs/">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/community/Bylaws">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Administrator Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine on Yarn</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/adminDocs/yarn/README">Running Submarine on YARN (deprecated)</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Bylaws</h1></header><div class="markdown"><p>This document defines the bylaws under which the Apache Submarine project operates. It defines the roles and responsibilities of the project, who may vote, how voting works, how conflicts are resolved, etc.</p><p>Submarine is a project of the <a href="https://www.apache.org/foundation/" target="_blank" rel="noopener noreferrer">Apache Software Foundation</a>. The foundation holds the trademark on the name “Submarine” and copyright on Apache code including the code in the Submarine codebase. The <a href="https://www.apache.org/foundation/faq.html" target="_blank" rel="noopener noreferrer">foundation FAQ</a> explains the operation and background of the foundation.</p><p>Submarine is typical of Apache projects in that it operates under a set of principles, known collectively as the “Apache Way”. If you are new to Apache development, please refer to the <a href="http://incubator.apache.org" target="_blank" rel="noopener noreferrer">Incubator project</a> for more information on how Apache projects operate.</p><h1><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="roles-and-responsibilities"></a>Roles and Responsibilities<a class="hash-link" href="#roles-and-responsibilities" title="Direct link to heading">#</a></h1><p>Apache projects define a set of roles with associated rights and responsibilities. These roles govern what tasks an individual may perform within the project. The roles are defined in the following sections</p><ul><li><p><strong>Users</strong></p><p>The most important participants in the project are people who use our software. The majority of our developers start out as users and guide their development efforts from the user’s perspective.</p><p>Users contribute to the Apache projects by providing feedback to developers in the form of bug reports and feature suggestions. As well, users participate in the Apache community by helping other users on mailing lists and user support forums.</p></li><li><p><strong>Contributors</strong></p><p>All of the volunteers who are contributing time, code, documentation, or resources to the Submarine Project. A contributor that makes sustained, welcome contributions to the project may be invited to become a Committer, though the exact timing of such invitations depends on many factors.</p></li><li><p><strong>Committers</strong></p><p>The project’s Committers are responsible for the project’s technical management. Committers have access to all subproject subversion repositories. Committers may cast binding votes on any technical discussion regarding any subproject.</p><p>Committer access is by invitation only and must be approved by consensus approval of the active PMC members. A Committer is considered emeritus by their own declaration or by not contributing in any form to the project for over six months. An emeritus committer may request reinstatement of commit access from the PMC. Such reinstatement is subject to consensus approval of active PMC members.</p><p>Significant, pervasive features are often developed in a speculative branch of the repository. The PMC may grant commit rights on the branch to its consistent contributors, while the initiative is active. Branch committers are responsible for shepherding their feature into an active release and do not cast binding votes or vetoes in the project.</p><p>All Apache committers are required to have a signed Contributor License Agreement (CLA) on file with the Apache Software Foundation. There is a <a href="https://www.apache.org/dev/committers.html" target="_blank" rel="noopener noreferrer">Committer FAQ</a> which provides more details on the requirements for Committers</p><p>A committer who makes a sustained contribution to the project may be invited to become a member of the PMC. The form of contribution is not limited to code. It can also include code review, helping out users on the mailing lists, documentation, testing, etc.</p></li><li><p><strong>Release Manager</strong></p><p>A Release Manager (RM) is a committer who volunteers to produce a Release Candidate according to <a href="https://github.com/apache/submarine/blob/master/dev-support/cicd/HowToRelease.md" target="_blank" rel="noopener noreferrer">HowToRelease</a>. The RM shall publish a Release Plan on the <em>common-dev@</em> list stating the branch from which they intend to make a Release Candidate, at least one week before they do so. The RM is responsible for building consensus around the content of the Release Candidate, in order to achieve a successful Product Release vote.</p></li><li><p><strong>Project Management Committee</strong></p><p>The Project Management Committee (PMC) for Apache Submarine was created by the Apache Board in October 2019 when Submarine moved out of Hadoop and became a top level project at Apache. The PMC is responsible to the board and the ASF for the management and oversight of the Apache Submarine codebase. The responsibilities of the PMC include</p><ul><li>Deciding what is distributed as products of the Apache Submarine project. In particular all releases must be approved by the PMC</li><li>Maintaining the project’s shared resources, including the codebase repository, mailing lists, websites.</li><li>Speaking on behalf of the project.</li><li>Resolving license disputes regarding products of the project</li><li>Nominating new PMC members and committers</li><li>Maintaining these bylaws and other guidelines of the project</li></ul><p>Membership of the PMC is by invitation only and must be approved by a consensus approval of active PMC members. A PMC member is considered “emeritus” by their own declaration or by not contributing in any form to the project for over six months. An emeritus member may request reinstatement to the PMC. Such reinstatement is subject to consensus approval of the active PMC members.</p><p>The chair of the PMC is appointed by the ASF board. The chair is an office holder of the Apache Software Foundation (Vice President, Apache Submarine) and has primary responsibility to the board for the management of the projects within the scope of the Submarine PMC. The chair reports to the board quarterly on developments within the Submarine project.</p><p>The chair of the PMC is rotated annually. When the chair is rotated or if the current chair of the PMC resigns, the PMC votes to recommend a new chair using Single Transferable Vote (STV) voting. See <a href="https://wiki.apache.org/general/BoardVoting" target="_blank" rel="noopener noreferrer">https://wiki.apache.org/general/BoardVoting</a> for specifics. The decision must be ratified by the Apache board.</p></li></ul><h1><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="decision-making"></a>Decision Making<a class="hash-link" href="#decision-making" title="Direct link to heading">#</a></h1><p>Within the Submarine project, different types of decisions require different forms of approval. For example, the previous section describes several decisions which require “consensus approval” approval. This section defines how voting is performed, the types of approvals, and which types of decision require which type of approval.</p><ul><li><p><strong>Voting</strong></p><p>Decisions regarding the project are made by votes on the primary project development mailing list (<a href="mailto:dev@submarine.apache.org" target="_blank" rel="noopener noreferrer">dev@submarine.apache.org</a>). Where necessary, PMC voting may take place on the private Submarine PMC mailing list. Votes are clearly indicated by subject line starting with [VOTE]. Votes may contain multiple items for approval and these should be clearly separated. Voting is carried out by replying to the vote mail. Voting may take four flavors</p><ul><li><strong>+1</strong> “Yes,” “Agree,” or “the action should be performed.” In general, this vote also indicates a willingness on the behalf of the voter in “making it happen”</li><li><strong>+0</strong> This vote indicates a willingness for the action under consideration to go ahead. The voter, however will not be able to help.</li><li><strong>-0</strong> This vote indicates that the voter does not, in general, agree with the proposed action but is not concerned enough to prevent the action going ahead.</li><li><strong>-1</strong> This is a negative vote. On issues where consensus is required, this vote counts as a <strong>veto</strong>. All vetoes must contain an explanation of why the veto is appropriate. Vetoes with no explanation are void. It may also be appropriate for a -1 vote to include an alternative course of action.</li></ul><p>All participants in the Submarine project are encouraged to show their agreement with or against a particular action by voting. For technical decisions, only the votes of active committers are binding. Non binding votes are still useful for those with binding votes to understand the perception of an action in the wider Submarine community. For PMC decisions, only the votes of PMC members are binding.</p><p>Voting can also be applied to changes made to the Submarine codebase. These typically take the form of a veto (-1) in reply to the commit message sent when the commit is made.</p></li><li><p><strong>Approvals</strong></p><p>These are the types of approvals that can be sought. Different actions require different types of approvals</p><ul><li><strong>Consensus Approval -</strong> Consensus approval requires 3 binding +1 votes and no binding vetoes.</li><li><strong>Lazy Consensus -</strong> Lazy consensus requires no -1 votes (‘silence gives assent’).</li><li><strong>Lazy Majority -</strong> A lazy majority vote requires 3 binding +1 votes and more binding +1 votes than -1 votes.</li><li><strong>Lazy 2⁄3 Majority -</strong> Lazy 2⁄3 majority votes requires at least 3 votes and twice as many +1 votes as -1 votes.</li></ul></li><li><p><strong>Vetoes</strong></p><p>A valid, binding veto cannot be overruled. If a veto is cast, it must be accompanied by a valid reason explaining the reasons for the veto. The validity of a veto, if challenged, can be confirmed by anyone who has a binding vote. This does not necessarily signify agreement with the veto - merely that the veto is valid.</p><p>If you disagree with a valid veto, you must lobby the person casting the veto to withdraw their veto. If a veto is not withdrawn, any action that has been vetoed must be reversed in a timely manner.</p></li><li><p><strong>Actions</strong></p><p>This section describes the various actions which are undertaken within the project, the corresponding approval required for that action and those who have binding votes over the action.</p><ul><li><p><strong>Code Change</strong></p><p>A change made to a codebase of the project and committed by a committer. This includes source code, documentation, website content, etc.</p><p>Consensus approval of active committers, but with a minimum of one +1. The code can be committed after the first +1, unless the code change represents a merge from a branch, in which case three +1s are required.</p></li><li><p><strong>Product Release</strong></p><p>When a release of one of the project’s products is ready, a vote is required to accept the release as an official release of the project.</p><p>Lazy Majority of active PMC members</p></li><li><p><strong>Adoption of New Codebase</strong></p><p>When the codebase for an existing, released product is to be replaced with an alternative codebase. If such a vote fails to gain approval, the existing code base will continue.</p><p>This also covers the creation of new sub-projects within the project</p><p>Lazy 2⁄3 majority of PMC members</p></li><li><p><strong>New Branch Committer</strong></p><p>When a branch committer is proposed for the PMC</p><p>Lazy consensus of active PMC members</p></li><li><p><strong>New Committer</strong></p><p>When a new committer is proposed for the project</p><p>Consensus approval of active PMC members</p></li><li><p><strong>New PMC Member</strong></p><p>When a committer is proposed for the PMC</p><p>Consensus approval of active PMC members</p></li><li><p><strong>Branch Committer Removal</strong></p><p>When removal of commit privileges is sought <strong>or</strong> when the branch is merged to the mainline</p><p>Lazy 2⁄3 majority of active PMC members</p></li><li><p><strong>Committer Removal</strong></p><p>When removal of commit privileges is sought. Note: Such actions will also be referred to the ASF board by the PMC chair</p><p>Lazy 2⁄3 majority of active PMC members (excluding the committer in question if a member of the PMC).</p></li><li><p><strong>PMC Member Removal</strong></p><p>When removal of a PMC member is sought. Note: Such actions will also be referred to the ASF board by the PMC chair.</p><p>Lazy 2⁄3 majority of active PMC members (excluding the member in question)</p></li><li><p><strong>Modifying Bylaws</strong></p><p>Modifying this document.</p><p>Lazy majority of active PMC members</p></li></ul></li><li><p><strong>Voting Timeframes</strong></p><p>Votes are open for a period of 7 days to allow all active voters time to consider the vote. Votes relating to code changes are not subject to a strict timetable but should be made as timely as possible.</p><ul><li><p><strong>Product Release - Vote Timeframe</strong></p><p>Release votes, alone, run for a period of 5 days. All other votes are subject to the above timeframe of 7 days.</p></li></ul></li></ul></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/community/Bylaws.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/next/community/README"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Apache Submarine Community</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/next/community/HowToCommit"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Guide for Apache Submarine Committers »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/community/Bylaws">master 🏃</a></li><li><a class="dropdown__link" href="/docs/">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/community/Bylaws">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Bylaws</h1></header><div class="markdown"><p>This document defines the bylaws under which the Apache Submarine project operates. It defines the roles and responsibilities of the project, who may vote, how voting works, how conflicts are resolved, etc.</p><p>Submarine is a project of the <a href="https://www.apache.org/foundation/" target="_blank" rel="noopener noreferrer">Apache Software Foundation</a>. The foundation holds the trademark on the name “Submarine” and copyright on Apache code including the code in the Submarine codebase. The <a href="https://www.apache.org/foundation/faq.html" target="_blank" rel="noopener noreferrer">foundation FAQ</a> explains the operation and background of the foundation.</p><p>Submarine is typical of Apache projects in that it operates under a set of principles, known collectively as the “Apache Way”. If you are new to Apache development, please refer to the <a href="http://incubator.apache.org" target="_blank" rel="noopener noreferrer">Incubator project</a> for more information on how Apache projects operate.</p><h1><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="roles-and-responsibilities"></a>Roles and Responsibilities<a class="hash-link" href="#roles-and-responsibilities" title="Direct link to heading">#</a></h1><p>Apache projects define a set of roles with associated rights and responsibilities. These roles govern what tasks an individual may perform within the project. The roles are defined in the following sections</p><ul><li><p><strong>Users</strong></p><p>The most important participants in the project are people who use our software. The majority of our developers start out as users and guide their development efforts from the user’s perspective.</p><p>Users contribute to the Apache projects by providing feedback to developers in the form of bug reports and feature suggestions. As well, users participate in the Apache community by helping other users on mailing lists and user support forums.</p></li><li><p><strong>Contributors</strong></p><p>All of the volunteers who are contributing time, code, documentation, or resources to the Submarine Project. A contributor that makes sustained, welcome contributions to the project may be invited to become a Committer, though the exact timing of such invitations depends on many factors.</p></li><li><p><strong>Committers</strong></p><p>The project’s Committers are responsible for the project’s technical management. Committers have access to all subproject subversion repositories. Committers may cast binding votes on any technical discussion regarding any subproject.</p><p>Committer access is by invitation only and must be approved by consensus approval of the active PMC members. A Committer is considered emeritus by their own declaration or by not contributing in any form to the project for over six months. An emeritus committer may request reinstatement of commit access from the PMC. Such reinstatement is subject to consensus approval of active PMC members.</p><p>Significant, pervasive features are often developed in a speculative branch of the repository. The PMC may grant commit rights on the branch to its consistent contributors, while the initiative is active. Branch committers are responsible for shepherding their feature into an active release and do not cast binding votes or vetoes in the project.</p><p>All Apache committers are required to have a signed Contributor License Agreement (CLA) on file with the Apache Software Foundation. There is a <a href="https://www.apache.org/dev/committers.html" target="_blank" rel="noopener noreferrer">Committer FAQ</a> which provides more details on the requirements for Committers</p><p>A committer who makes a sustained contribution to the project may be invited to become a member of the PMC. The form of contribution is not limited to code. It can also include code review, helping out users on the mailing lists, documentation, testing, etc.</p></li><li><p><strong>Release Manager</strong></p><p>A Release Manager (RM) is a committer who volunteers to produce a Release Candidate according to <a href="https://github.com/apache/submarine/blob/master/dev-support/cicd/HowToRelease.md" target="_blank" rel="noopener noreferrer">HowToRelease</a>. The RM shall publish a Release Plan on the <em>common-dev@</em> list stating the branch from which they intend to make a Release Candidate, at least one week before they do so. The RM is responsible for building consensus around the content of the Release Candidate, in order to achieve a successful Product Release vote.</p></li><li><p><strong>Project Management Committee</strong></p><p>The Project Management Committee (PMC) for Apache Submarine was created by the Apache Board in October 2019 when Submarine moved out of Hadoop and became a top level project at Apache. The PMC is responsible to the board and the ASF for the management and oversight of the Apache Submarine codebase. The responsibilities of the PMC include</p><ul><li>Deciding what is distributed as products of the Apache Submarine project. In particular all releases must be approved by the PMC</li><li>Maintaining the project’s shared resources, including the codebase repository, mailing lists, websites.</li><li>Speaking on behalf of the project.</li><li>Resolving license disputes regarding products of the project</li><li>Nominating new PMC members and committers</li><li>Maintaining these bylaws and other guidelines of the project</li></ul><p>Membership of the PMC is by invitation only and must be approved by a consensus approval of active PMC members. A PMC member is considered “emeritus” by their own declaration or by not contributing in any form to the project for over six months. An emeritus member may request reinstatement to the PMC. Such reinstatement is subject to consensus approval of the active PMC members.</p><p>The chair of the PMC is appointed by the ASF board. The chair is an office holder of the Apache Software Foundation (Vice President, Apache Submarine) and has primary responsibility to the board for the management of the projects within the scope of the Submarine PMC. The chair reports to the board quarterly on developments within the Submarine project.</p><p>The chair of the PMC is rotated annually. When the chair is rotated or if the current chair of the PMC resigns, the PMC votes to recommend a new chair using Single Transferable Vote (STV) voting. See <a href="https://wiki.apache.org/general/BoardVoting" target="_blank" rel="noopener noreferrer">https://wiki.apache.org/general/BoardVoting</a> for specifics. The decision must be ratified by the Apache board.</p></li></ul><h1><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="decision-making"></a>Decision Making<a class="hash-link" href="#decision-making" title="Direct link to heading">#</a></h1><p>Within the Submarine project, different types of decisions require different forms of approval. For example, the previous section describes several decisions which require “consensus approval” approval. This section defines how voting is performed, the types of approvals, and which types of decision require which type of approval.</p><ul><li><p><strong>Voting</strong></p><p>Decisions regarding the project are made by votes on the primary project development mailing list (<a href="mailto:dev@submarine.apache.org" target="_blank" rel="noopener noreferrer">dev@submarine.apache.org</a>). Where necessary, PMC voting may take place on the private Submarine PMC mailing list. Votes are clearly indicated by subject line starting with [VOTE]. Votes may contain multiple items for approval and these should be clearly separated. Voting is carried out by replying to the vote mail. Voting may take four flavors</p><ul><li><strong>+1</strong> “Yes,” “Agree,” or “the action should be performed.” In general, this vote also indicates a willingness on the behalf of the voter in “making it happen”</li><li><strong>+0</strong> This vote indicates a willingness for the action under consideration to go ahead. The voter, however will not be able to help.</li><li><strong>-0</strong> This vote indicates that the voter does not, in general, agree with the proposed action but is not concerned enough to prevent the action going ahead.</li><li><strong>-1</strong> This is a negative vote. On issues where consensus is required, this vote counts as a <strong>veto</strong>. All vetoes must contain an explanation of why the veto is appropriate. Vetoes with no explanation are void. It may also be appropriate for a -1 vote to include an alternative course of action.</li></ul><p>All participants in the Submarine project are encouraged to show their agreement with or against a particular action by voting. For technical decisions, only the votes of active committers are binding. Non binding votes are still useful for those with binding votes to understand the perception of an action in the wider Submarine community. For PMC decisions, only the votes of PMC members are binding.</p><p>Voting can also be applied to changes made to the Submarine codebase. These typically take the form of a veto (-1) in reply to the commit message sent when the commit is made.</p></li><li><p><strong>Approvals</strong></p><p>These are the types of approvals that can be sought. Different actions require different types of approvals</p><ul><li><strong>Consensus Approval -</strong> Consensus approval requires 3 binding +1 votes and no binding vetoes.</li><li><strong>Lazy Consensus -</strong> Lazy consensus requires no -1 votes (‘silence gives assent’).</li><li><strong>Lazy Majority -</strong> A lazy majority vote requires 3 binding +1 votes and more binding +1 votes than -1 votes.</li><li><strong>Lazy 2⁄3 Majority -</strong> Lazy 2⁄3 majority votes requires at least 3 votes and twice as many +1 votes as -1 votes.</li></ul></li><li><p><strong>Vetoes</strong></p><p>A valid, binding veto cannot be overruled. If a veto is cast, it must be accompanied by a valid reason explaining the reasons for the veto. The validity of a veto, if challenged, can be confirmed by anyone who has a binding vote. This does not necessarily signify agreement with the veto - merely that the veto is valid.</p><p>If you disagree with a valid veto, you must lobby the person casting the veto to withdraw their veto. If a veto is not withdrawn, any action that has been vetoed must be reversed in a timely manner.</p></li><li><p><strong>Actions</strong></p><p>This section describes the various actions which are undertaken within the project, the corresponding approval required for that action and those who have binding votes over the action.</p><ul><li><p><strong>Code Change</strong></p><p>A change made to a codebase of the project and committed by a committer. This includes source code, documentation, website content, etc.</p><p>Consensus approval of active committers, but with a minimum of one +1. The code can be committed after the first +1, unless the code change represents a merge from a branch, in which case three +1s are required.</p></li><li><p><strong>Product Release</strong></p><p>When a release of one of the project’s products is ready, a vote is required to accept the release as an official release of the project.</p><p>Lazy Majority of active PMC members</p></li><li><p><strong>Adoption of New Codebase</strong></p><p>When the codebase for an existing, released product is to be replaced with an alternative codebase. If such a vote fails to gain approval, the existing code base will continue.</p><p>This also covers the creation of new sub-projects within the project</p><p>Lazy 2⁄3 majority of PMC members</p></li><li><p><strong>New Branch Committer</strong></p><p>When a branch committer is proposed for the PMC</p><p>Lazy consensus of active PMC members</p></li><li><p><strong>New Committer</strong></p><p>When a new committer is proposed for the project</p><p>Consensus approval of active PMC members</p></li><li><p><strong>New PMC Member</strong></p><p>When a committer is proposed for the PMC</p><p>Consensus approval of active PMC members</p></li><li><p><strong>Branch Committer Removal</strong></p><p>When removal of commit privileges is sought <strong>or</strong> when the branch is merged to the mainline</p><p>Lazy 2⁄3 majority of active PMC members</p></li><li><p><strong>Committer Removal</strong></p><p>When removal of commit privileges is sought. Note: Such actions will also be referred to the ASF board by the PMC chair</p><p>Lazy 2⁄3 majority of active PMC members (excluding the committer in question if a member of the PMC).</p></li><li><p><strong>PMC Member Removal</strong></p><p>When removal of a PMC member is sought. Note: Such actions will also be referred to the ASF board by the PMC chair.</p><p>Lazy 2⁄3 majority of active PMC members (excluding the member in question)</p></li><li><p><strong>Modifying Bylaws</strong></p><p>Modifying this document.</p><p>Lazy majority of active PMC members</p></li></ul></li><li><p><strong>Voting Timeframes</strong></p><p>Votes are open for a period of 7 days to allow all active voters time to consider the vote. Votes relating to code changes are not subject to a strict timetable but should be made as timely as possible.</p><ul><li><p><strong>Product Release - Vote Timeframe</strong></p><p>Release votes, alone, run for a period of 5 days. All other votes are subject to the above timeframe of 7 days.</p></li></ul></li></ul></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/community/Bylaws.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/next/community/README"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Apache Submarine Community</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/next/community/HowToCommit"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Guide for Apache Submarine Committers »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/2d4ab289.c1e9c4f4.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/935f2afb.9989d552.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/2d4ab289.f3ca3750.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/next/community/HowToBecomeCommitter/index.html b/docs/next/community/HowToBecomeCommitter/index.html
index 3727ef3..40d786d 100644
--- a/docs/next/community/HowToBecomeCommitter/index.html
+++ b/docs/next/community/HowToBecomeCommitter/index.html
@@ -6,32 +6,32 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">How to become a Committer | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="How to become a Committer | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/community/HowToBecomeCommitter"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/community/HowToBecomeCommitter"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/c86e1739.3733110a.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/935f2afb.9989d552.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/c86e1739.da036326.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/community/HowToBecomeCommitter">master 🏃</a></li><li><a class="dropdown__link" href="/docs/">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/community/HowToBecomeCommitter">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Administrator Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine on Yarn</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/adminDocs/yarn/README">Running Submarine on YARN (deprecated)</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">How to become a Committer</h1></header><div class="markdown"><p>Apache Submarine builds a community completely following Apache’s rules. Apache Committer is a term used in ASF (Apache Software Foundation) to indicate the person who submits a specific project. Apache Submarine Committer has permission to write the Submarine codebase and can merge PR. Anyone who has made enough contributions to the community and gained enough trust can become an Apache Submarine Committer.</p><p>As long as anyone contributes to the Submarine project, you are the officially recognized Contributor of the Submarine project. There is no exact standard for growing from Contributor to Committer, and there is no expected timetable, but Committer candidates are generally long-term active contributors, becoming Committer does not require a huge architectural improvement contribution, or how many lines of code contribution. Contributing to the codebase, contributing to the documents, participating in the discussion of the mailing list, helping to answer questions, etc., are all ways to increase your influence.</p><p>List of potential contributions (in no particular order):</p><ul><li>Submit the bugs, features, and improvements you found to the issue</li><li>Update the official documents so that the project documents are the most recent, the best practices for writing Submarine, and various useful documents for users to analyze the features.</li><li>Perform test and report test results.</li><li>Actively participate in voting when the version is released</li><li>Participate in the discussion on the mailing list, usually there will be mails starting with [DISCUSS]</li><li>Answer questions from users or developers on the mailing list</li><li>Review the work of others (both code and non-code) and publish your own suggestions</li><li>Review the issues on JIRA and maintain the latest status of the issues, such as closing outdated issues, changing the issue’s error information, etc.</li><li>Guide new contributors and be familiar with the community process</li><li>Give speeches and blogs about Submarine, and add these to the official website of Submarine</li><li>Any contribution that is beneficial to the development of the Submarine community
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/community/HowToBecomeCommitter">master 🏃</a></li><li><a class="dropdown__link" href="/docs/">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/community/HowToBecomeCommitter">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">How to become a Committer</h1></header><div class="markdown"><p>Apache Submarine builds a community completely following Apache’s rules. Apache Committer is a term used in ASF (Apache Software Foundation) to indicate the person who submits a specific project. Apache Submarine Committer has permission to write the Submarine codebase and can merge PR. Anyone who has made enough contributions to the community and gained enough trust can become an Apache Submarine Committer.</p><p>As long as anyone contributes to the Submarine project, you are the officially recognized Contributor of the Submarine project. There is no exact standard for growing from Contributor to Committer, and there is no expected timetable, but Committer candidates are generally long-term active contributors, becoming Committer does not require a huge architectural improvement contribution, or how many lines of code contribution. Contributing to the codebase, contributing to the documents, participating in the discussion of the mailing list, helping to answer questions, etc., are all ways to increase your influence.</p><p>List of potential contributions (in no particular order):</p><ul><li>Submit the bugs, features, and improvements you found to the issue</li><li>Update the official documents so that the project documents are the most recent, the best practices for writing Submarine, and various useful documents for users to analyze the features.</li><li>Perform test and report test results.</li><li>Actively participate in voting when the version is released</li><li>Participate in the discussion on the mailing list, usually there will be mails starting with [DISCUSS]</li><li>Answer questions from users or developers on the mailing list</li><li>Review the work of others (both code and non-code) and publish your own suggestions</li><li>Review the issues on JIRA and maintain the latest status of the issues, such as closing outdated issues, changing the issue’s error information, etc.</li><li>Guide new contributors and be familiar with the community process</li><li>Give speeches and blogs about Submarine, and add these to the official website of Submarine</li><li>Any contribution that is beneficial to the development of the Submarine community
 ......</li></ul><p>More can refer to: <a href="https://community.apache.org/contributors/" target="_blank" rel="noopener noreferrer">ASF official documents</a></p><p>Not everyone can complete all (or even any) items on this list. If you want to contribute in other ways, then just do it (and add them to the list). Pleasant manners and dedication are all you need to have a positive impact on the Submarine project. Inviting you to become Committer is the result of your long-term and stable interaction with the community, and the trust and recognition of the Submarine community.</p><p>Committer is obliged to review and merge PRs submitted by others, test and vote on candidate versions when the version is released, participate in the discussion of feature design plans, and other types of project contributions. When you are active enough and make a bigger contribution to the community, you can be promoted to a PMC member of the Submarine project.</p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/community/HowToBecomeCommitter.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/next/community/HowToVoteCommitterOrPMC"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« How to vote a Committer or PMC</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/next/designDocs/architecture-and-requirements"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Architecture and Requirment »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/c86e1739.3733110a.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/935f2afb.9989d552.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/c86e1739.da036326.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/next/community/HowToCommit/index.html b/docs/next/community/HowToCommit/index.html
index 754d676..621a699 100644
--- a/docs/next/community/HowToCommit/index.html
+++ b/docs/next/community/HowToCommit/index.html
@@ -6,20 +6,20 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Guide for Apache Submarine Committers | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="Guide for Apache Submarine Committers | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/community/HowToCommit"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/community/HowToCommit"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/a5ca038b.422ff945.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/935f2afb.9989d552.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/a5ca038b.5d1f0bf4.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/community/HowToCommit">master 🏃</a></li><li><a class="dropdown__link" href="/docs/community/HowToCommit">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/community/HowToCommit">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/community/HowToCommit">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Administrator Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine on Yarn</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/adminDocs/yarn/README">Running Submarine on YARN (deprecated)</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/community/HowToCommit">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Guide for Apache Submarine Committers</h1></header><div class="markdown"><p>This page contains Hadoop Core-specific guidelines for committers.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="new-committers"></a>New committers<a class="hash-link" href="#new-committers" title="Direct link to heading">#</a></h2><p>New committers are encouraged to first read Apache&#x27;s generic committer documentation:</p><ul><li><a href="http://www.apache.org/dev/new-committers-guide.html" target="_blank" rel="noopener noreferrer">Apache New Committer Guide</a></li><li><a href="http://www.apache.org/dev/committers.html" target="_blank" rel="noopener noreferrer">Apache Committer FAQ</a></li></ul><p>The first act of a new core committer is typically to add their name to the
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/community/HowToCommit">master 🏃</a></li><li><a class="dropdown__link" href="/docs/community/HowToCommit">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/community/HowToCommit">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/community/HowToCommit">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/community/HowToCommit">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Guide for Apache Submarine Committers</h1></header><div class="markdown"><p>This page contains Hadoop Core-specific guidelines for committers.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="new-committers"></a>New committers<a class="hash-link" href="#new-committers" title="Direct link to heading">#</a></h2><p>New committers are encouraged to first read Apache&#x27;s generic committer documentation:</p><ul><li><a href="http://www.apache.org/dev/new-committers-guide.html" target="_blank" rel="noopener noreferrer">Apache New Committer Guide</a></li><li><a href="http://www.apache.org/dev/committers.html" target="_blank" rel="noopener noreferrer">Apache Committer FAQ</a></li></ul><p>The first act of a new core committer is typically to add their name to the
 credits page. This requires changing the site source in
 <a href="https://github.com/apache/submarine-site/blob/master/community/member.md" target="_blank" rel="noopener noreferrer">https://github.com/apache/submarine-site/blob/master/community/member.md</a>. Once done,
 update the Submarine website as described
@@ -45,15 +45,15 @@
 <a href="https://github.com/apache/submarine/tree/master/dev-support/cicd" target="_blank" rel="noopener noreferrer">https://github.com/apache/submarine/tree/master/dev-support/cicd</a></p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="adding-contributors-role"></a>Adding Contributors role<a class="hash-link" href="#adding-contributors-role" title="Direct link to heading">#</a></h2><p>There are three roles (Administrators, Committers, Contributors) in the project.</p><ul><li>Contributors who have Contributors role can become assignee of the issues in the project.</li><li>Committers who have Committers role can set arbitrary roles in addition to Contributors role.</li><li>Committers who have Administrators role can edit or delete all comments, or even delete issues in addition to Committers role.</li></ul><p>How to set roles</p><ol><li>Login to ASF JIRA</li><li>Go to the project page (e.g. <a href="https://issues.apache.org/jira/browse/SUBMARINE" target="_blank" rel="noopener noreferrer">https://issues.apache.org/jira/browse/SUBMARINE</a> )</li><li>Hit &quot;Administration&quot; tab</li><li>Hit &quot;Roles&quot; tab in left side</li><li>Add Administrators/Committers/Contributors role</li></ol></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/community/HowToCommit.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/next/community/Bylaws"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Bylaws</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/next/community/contributing"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">How To Contribute to Submarine »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#new-committers" class="table-of-contents__link">New committers</a></li><li><a href="#review" class="table-of-contents__link">Review</a></li><li><a href="#reject" class="table-of-contents__link">Reject</a></li><li><a href="#commit-individual-patches" class="table-of-contents__link">Commit individual patches</a></li><li><a href="#adding-contributors-role" class="table-of-contents__link">Adding Contributors role</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/a5ca038b.422ff945.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/935f2afb.9989d552.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/a5ca038b.5d1f0bf4.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/next/community/HowToVoteCommitterOrPMC/index.html b/docs/next/community/HowToVoteCommitterOrPMC/index.html
index e065a58..1587480 100644
--- a/docs/next/community/HowToVoteCommitterOrPMC/index.html
+++ b/docs/next/community/HowToVoteCommitterOrPMC/index.html
@@ -6,31 +6,31 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">How to vote a Committer or PMC | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="How to vote a Committer or PMC | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/community/HowToVoteCommitterOrPMC"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/community/HowToVoteCommitterOrPMC"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/a57e1c0a.d5a56f18.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/935f2afb.9989d552.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/a57e1c0a.ce9f4f90.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/community/HowToVoteCommitterOrPMC">master 🏃</a></li><li><a class="dropdown__link" href="/docs/">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/community/HowToVoteCommitterOrPMC">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Administrator Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine on Yarn</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/adminDocs/yarn/README">Running Submarine on YARN (deprecated)</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">How to vote a Committer or PMC</h1></header><div class="markdown"><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="the-voting-process-of-becoming-a-submarine-committer-or-pmc"></a>The voting process of becoming a Submarine Committer or PMC<a class="hash-link" href="#the-voting-process-of-becoming-a-submarine-committer-or-pmc" title="Direct link to heading">#</a></h3><ol><li><p>After the PMC members of Submarine discover any valuable contributions from the community contributors and obtain the consent of the candidate, they initiate a discussion on the private mailing list of Submarine:</p><blockquote><p>[DISCUSS] YYYYY as a Submarine XXXXXX</p></blockquote><p>In the email, the source of the candidate’s contributions should be clearly stated, so that everyone can discuss and analyze. The discussion email will last at least 72 hours, and the project team members, including the mentors, will fully express their views on the proposed email.</p></li><li><p>Regardless of whether there is a disagreement, after the discussion email, the vote initiator needs to initiate a Committer or PMC vote on the private mailing list of Submarine;</p><blockquote><p>[VOTE] YYYYY as a Submarine XXXXXX</p></blockquote><p>The voting mail should last for at least 72 hours, and there should be at least 3 +1 votes to pass the vote. If there are 0 votes or one -1 vote, the entire vote will fail. If voting -1, you need to clarify the question so that everyone can understand.</p></li><li><p>After the voting email is over, the vote initiator should summarize it on the voting line, remind the end of voting, and send it to the voting summary email.</p><blockquote><p>[RESULTS][vote] YYYYY as a Submarine XXXXXX</p></blockquote></li><li><p>After the vote summary email is sent, if the vote passed, the vote initiator must send an invitation email to the candidate, and the invitation email needs the candidate to reply to accept or decline through the designated mailbox.</p><blockquote><p>[Invitation] Invitation to join Apache Submarine as a XXXXXX</p></blockquote><p>The email should be sent to the candidate, and the copy is sent to <a href="mailto:private@submarine.apache.org" target="_blank" rel="noopener noreferrer">private@submarine.apache.org</a></p></li><li><p>After the candidate accepts the invitation, if the candidate does not have an apache email account, the vote initiator needs to assist the candidate to create an apache account according to the guidelines.</p></li><li><p>If the above content is completed, the vote initiator still needs to do the following two things:</p><p>6.1 Apply to the project leader to add project team members, and open the authority accounts for the jira and apache projects.</p><p>6.2 Send a notification email to the <a href="mailto:dev@submarine.apache.org" target="_blank" rel="noopener noreferrer">dev@submarine.apache.org</a> mail group:</p><blockquote><p>[ANNOUNCE] New XXXXXX: YYYYY</p></blockquote></li></ol><p>So far, the entire process is completed, then the candidate officially becomes the Committer or PMC of Submarine.</p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/community/HowToVoteCommitterOrPMC.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/next/community/contributing"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« How To Contribute to Submarine</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/next/community/HowToBecomeCommitter"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">How to become a Committer »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#the-voting-process-of-becoming-a-submarine-committer-or-pmc" class="table-of-contents__link">The voting process of becoming a Submarine Committer or PMC</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/community/HowToVoteCommitterOrPMC">master 🏃</a></li><li><a class="dropdown__link" href="/docs/">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/community/HowToVoteCommitterOrPMC">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">How to vote a Committer or PMC</h1></header><div class="markdown"><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="the-voting-process-of-becoming-a-submarine-committer-or-pmc"></a>The voting process of becoming a Submarine Committer or PMC<a class="hash-link" href="#the-voting-process-of-becoming-a-submarine-committer-or-pmc" title="Direct link to heading">#</a></h3><ol><li><p>After the PMC members of Submarine discover any valuable contributions from the community contributors and obtain the consent of the candidate, they initiate a discussion on the private mailing list of Submarine:</p><blockquote><p>[DISCUSS] YYYYY as a Submarine XXXXXX</p></blockquote><p>In the email, the source of the candidate’s contributions should be clearly stated, so that everyone can discuss and analyze. The discussion email will last at least 72 hours, and the project team members, including the mentors, will fully express their views on the proposed email.</p></li><li><p>Regardless of whether there is a disagreement, after the discussion email, the vote initiator needs to initiate a Committer or PMC vote on the private mailing list of Submarine;</p><blockquote><p>[VOTE] YYYYY as a Submarine XXXXXX</p></blockquote><p>The voting mail should last for at least 72 hours, and there should be at least 3 +1 votes to pass the vote. If there are 0 votes or one -1 vote, the entire vote will fail. If voting -1, you need to clarify the question so that everyone can understand.</p></li><li><p>After the voting email is over, the vote initiator should summarize it on the voting line, remind the end of voting, and send it to the voting summary email.</p><blockquote><p>[RESULTS][vote] YYYYY as a Submarine XXXXXX</p></blockquote></li><li><p>After the vote summary email is sent, if the vote passed, the vote initiator must send an invitation email to the candidate, and the invitation email needs the candidate to reply to accept or decline through the designated mailbox.</p><blockquote><p>[Invitation] Invitation to join Apache Submarine as a XXXXXX</p></blockquote><p>The email should be sent to the candidate, and the copy is sent to <a href="mailto:private@submarine.apache.org" target="_blank" rel="noopener noreferrer">private@submarine.apache.org</a></p></li><li><p>After the candidate accepts the invitation, if the candidate does not have an apache email account, the vote initiator needs to assist the candidate to create an apache account according to the guidelines.</p></li><li><p>If the above content is completed, the vote initiator still needs to do the following two things:</p><p>6.1 Apply to the project leader to add project team members, and open the authority accounts for the jira and apache projects.</p><p>6.2 Send a notification email to the <a href="mailto:dev@submarine.apache.org" target="_blank" rel="noopener noreferrer">dev@submarine.apache.org</a> mail group:</p><blockquote><p>[ANNOUNCE] New XXXXXX: YYYYY</p></blockquote></li></ol><p>So far, the entire process is completed, then the candidate officially becomes the Committer or PMC of Submarine.</p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/community/HowToVoteCommitterOrPMC.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/next/community/contributing"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« How To Contribute to Submarine</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/next/community/HowToBecomeCommitter"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">How to become a Committer »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#the-voting-process-of-becoming-a-submarine-committer-or-pmc" class="table-of-contents__link">The voting process of becoming a Submarine Committer or PMC</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/a57e1c0a.d5a56f18.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/935f2afb.9989d552.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/a57e1c0a.ce9f4f90.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/next/community/README/index.html b/docs/next/community/README/index.html
index f686666..0512ff2 100644
--- a/docs/next/community/README/index.html
+++ b/docs/next/community/README/index.html
@@ -6,20 +6,20 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Apache Submarine Community | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="Apache Submarine Community | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/community/README"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/community/README"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/bf894ff2.5e690517.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/935f2afb.9989d552.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/bf894ff2.163f9156.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/community/README">master 🏃</a></li><li><a class="dropdown__link" href="/docs/community/README">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/community/README">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/community/README">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Administrator Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine on Yarn</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/adminDocs/yarn/README">Running Submarine on YARN (deprecated)</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/community/README">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Apache Submarine Community</h1></header><div class="markdown"><p>Welcome to the Apache Submarine Community! The main objective is to help members of the Submarine community who share similar interests to learn from and collaborate with each other.</p><p>Your journey of becoming a contributor and committer starts from here: improving docs, improving code, giving talks, organizing meetups, etc.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="communicating"></a>Communicating<a class="hash-link" href="#communicating" title="Direct link to heading">#</a></h2><p>You can reach out to the community members via any one of the following ways:</p><ul><li><p>Slack Developer: <a href="https://join.slack.com/t/the-asf/shared_invite/zt-vlfbf7ch-HkbNHiU_uDlcH_RvaHv9gQ" target="_blank" rel="noopener noreferrer">https://join.slack.com/t/the-asf/shared_invite/zt-vlfbf7ch-HkbNHiU_uDlcH_RvaHv9gQ</a>
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/community/README">master 🏃</a></li><li><a class="dropdown__link" href="/docs/community/README">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/community/README">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/community/README">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/community/README">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Apache Submarine Community</h1></header><div class="markdown"><p>Welcome to the Apache Submarine Community! The main objective is to help members of the Submarine community who share similar interests to learn from and collaborate with each other.</p><p>Your journey of becoming a contributor and committer starts from here: improving docs, improving code, giving talks, organizing meetups, etc.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="communicating"></a>Communicating<a class="hash-link" href="#communicating" title="Direct link to heading">#</a></h2><p>You can reach out to the community members via any one of the following ways:</p><ul><li><p>Slack Developer: <a href="https://join.slack.com/t/the-asf/shared_invite/zt-vlfbf7ch-HkbNHiU_uDlcH_RvaHv9gQ" target="_blank" rel="noopener noreferrer">https://join.slack.com/t/the-asf/shared_invite/zt-vlfbf7ch-HkbNHiU_uDlcH_RvaHv9gQ</a>
 After clicking the link above, you would join the ASF slack workspace, where you could search the submarine channel and join it.
 <img alt="slack_search_submarine" src="/assets/images/slack_search_submarine-40af6cf663d836b328d6ddf889f808b8.png">
 <img alt="slack_join_submarine" src="/assets/images/slack_join_submarine-fb1bda09605d16d745a2e21b93551180.png"></p></li><li><p>Zoom: <a href="https://cloudera.zoom.us/j/880548968" target="_blank" rel="noopener noreferrer">https://cloudera.zoom.us/j/880548968</a></p></li><li><p>Sync Up: <a href="https://docs.google.com/document/d/16pUO3TP4SxSeLduG817GhVAjtiph9HYpRHo_JgduDvw/edit" target="_blank" rel="noopener noreferrer">https://docs.google.com/document/d/16pUO3TP4SxSeLduG817GhVAjtiph9HYpRHo_JgduDvw/edit</a></p></li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="your-first-contribution"></a>Your First Contribution<a class="hash-link" href="#your-first-contribution" title="Direct link to heading">#</a></h2><p>You can start by finding an existing issue with the <a href="https://issues.apache.org/jira/projects/SUBMARINE/issues/SUBMARINE?filter=allopenissues" target="_blank" rel="noopener noreferrer">https://issues.apache.org/jira/projects/SUBMARINE/issues/SUBMARINE?filter=allopenissues</a> label. These issues are well suited for new contributors.</p><p>If a PR (Pull Request) submitted to the <a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer">Submarine Github</a> projects by you is approved and merged, then you become a Submarine Contributor.</p><p>If you want to work on a new idea of relatively small scope:</p><ol><li><p>Submit an issue describing your proposed change to the repo in question.</p></li><li><p>The repo owners will respond to your issue promptly.</p></li><li><p>Submit a <a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer">pull request of Submarine</a> containing a tested change.</p></li></ol><p>Contributions are welcomed and greatly appreciated. See <a href="/docs/next/community/contributing">CONTRIBUTING</a> for details on submitting patches and the contribution workflow.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="how-do-i-become-a-committer"></a>How Do I Become a Committer?<a class="hash-link" href="#how-do-i-become-a-committer" title="Direct link to heading">#</a></h2><p>First of all, you need to get involved and be a Contributor.</p><p>Based on your track-record as a contributor, Per Apache code, PMCs vote on committership, may invite you to be a committer (after we&#x27;ve called a vote). When that happens, if you accept, the following process kicks into place...</p><p>Note that becoming a committer is not just about submitting some patches; it‘s also about helping out on the development and user, helping with documentation and the issues.</p><p>See <a href="/docs/next/community/HowToBecomeCommitter">How to become an Apache Submarine Committer and PMC</a> for more details.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="how-to-commit"></a>How to commit<a class="hash-link" href="#how-to-commit" title="Direct link to heading">#</a></h2><p>See <a href="/docs/next/community/HowToCommit">How to commit</a> for helper doc for Submarine committers.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="communication"></a>Communication<a class="hash-link" href="#communication" title="Direct link to heading">#</a></h2><p>Communication within the Submarine community abides by <a href="https://www.apache.org/foundation/policies/conduct.html" target="_blank" rel="noopener noreferrer">Apache’s Code of Conduct</a>.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="mailing-lists"></a>Mailing lists<a class="hash-link" href="#mailing-lists" title="Direct link to heading">#</a></h2><p>Get help using Apache Submarine or contribute to the project on our mailing lists:</p><ul><li><a href="https://lists.apache.org/list.html?users@submarine.apache.org" target="_blank" rel="noopener noreferrer">Users</a> : <a href="mailto:users-subscribe@submarine.apache.org" target="_blank" rel="noopener noreferrer">subscribe</a>, <a href="mailto:users-unsubscribe@submarine.apache.org" target="_blank" rel="noopener noreferrer">unsubscribe</a>, <a href="https://lists.apache.org/list.html?users@submarine.apache.org" target="_blank" rel="noopener noreferrer">archives</a>
@@ -28,15 +28,15 @@
 for commit messages and patches.</li></ul><p>Take subscribe Dev as an example, you should send an email to <a href="mailto:dev-subscribe@submarine.apache.org" target="_blank" rel="noopener noreferrer">dev-subscribe@submarine.apache.org</a>.</p><p>Usually, this happens when you just click the &quot;subscribe&quot; link. If this does not work, simply copy the address and paste it into the &quot;To:&quot; field of a new message.</p><p>After that, you will get an email from <a href="mailto:dev-help@submarine.apache.org" target="_blank" rel="noopener noreferrer">dev-help@submarine.apache.org</a>, follow the directives of the mail to reply, then you will subscribe <a href="mailto:dev@submarine.apache.org" target="_blank" rel="noopener noreferrer">dev@submarine.apache.org</a> successfully.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="license"></a>License<a class="hash-link" href="#license" title="Direct link to heading">#</a></h2><p>Submarine source code is under the Apache 2.0 license. See the <a href="https://github.com/apache/submarine/blob/master/LICENSE" target="_blank" rel="noopener noreferrer">LICENSE</a> file for details.</p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/community/README.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/next/devDocs/HowToVerify"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« How to Verify</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/next/community/Bylaws"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Bylaws »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#communicating" class="table-of-contents__link">Communicating</a></li><li><a href="#your-first-contribution" class="table-of-contents__link">Your First Contribution</a></li><li><a href="#how-do-i-become-a-committer" class="table-of-contents__link">How Do I Become a Committer?</a></li><li><a href="#how-to-commit" class="table-of-contents__link">How to commit</a></li><li><a href="#communication" class="table-of-contents__link">Communication</a></li><li><a href="#mailing-lists" class="table-of-contents__link">Mailing lists</a></li><li><a href="#license" class="table-of-contents__link">License</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/bf894ff2.5e690517.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/935f2afb.9989d552.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/bf894ff2.163f9156.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/next/community/contributing/index.html b/docs/next/community/contributing/index.html
index 4f09826..2fc9d2d 100644
--- a/docs/next/community/contributing/index.html
+++ b/docs/next/community/contributing/index.html
@@ -6,20 +6,20 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">How To Contribute to Submarine | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="How To Contribute to Submarine | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/community/contributing"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/community/contributing"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/61cc1a3d.a8f5d940.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/935f2afb.9989d552.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/61cc1a3d.0c61cf27.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/community/contributing">master 🏃</a></li><li><a class="dropdown__link" href="/docs/community/contributing">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/community/contributing">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/community/contributing">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Administrator Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine on Yarn</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/adminDocs/yarn/README">Running Submarine on YARN (deprecated)</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/community/contributing">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">How To Contribute to Submarine</h1></header><div class="markdown"><p>There are several ways to contribute to Submarine:</p><ol><li>Develop and Commit source code (This document will primarily focus on this.)</li><li>Report issues (You can report issues with both Github or Jira.)</li><li>Discuss/Answer questions on the mailing list</li><li>Share use cases</li></ol><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="preface"></a>Preface<a class="hash-link" href="#preface" title="Direct link to heading">#</a></h2><ul><li><strong>Apache Submarine</strong> is an <a href="https://github.com/apache/submarine/blob/master/LICENSE" target="_blank" rel="noopener noreferrer">Apache 2.0 License</a> Software. Contributing to Submarine means you agree to the Apache 2.0 License. </li><li>Please read <a href="http://www.apache.org/foundation/policies/conduct.html" target="_blank" rel="noopener noreferrer">Code of Conduct</a> carefully.</li><li>The document <a href="http://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer">How It Works</a> can help you understand Apache Software Foundation further.</li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="build-submarine"></a>Build Submarine<a class="hash-link" href="#build-submarine" title="Direct link to heading">#</a></h2><ul><li><a href="https://github.com/apache/submarine/blob/master/website/docs/devDocs/BuildFromCode.md" target="_blank" rel="noopener noreferrer">Build From Code</a></li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="creating-patches"></a>Creating patches<a class="hash-link" href="#creating-patches" title="Direct link to heading">#</a></h2><p>Submarine follows <a href="https://github.com/sevntu-checkstyle/sevntu.checkstyle/wiki/Development-workflow-with-Git:-Fork,-Branching,-Commits,-and-Pull-Request" target="_blank" rel="noopener noreferrer">Fork &amp; Pull</a> model.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="step1-fork-apachesubmarine-github-repository-first-time"></a>Step1: Fork apache/submarine github repository (first time)<a class="hash-link" href="#step1-fork-apachesubmarine-github-repository-first-time" title="Direct link to heading">#</a></h3><ul><li>Visit <a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer">https://github.com/apache/submarine</a></li><li>Click the <code>Fork</code> button to create a fork of the repository</li></ul><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="step2-clone-the-submarine-to-your-local-machine"></a>Step2: Clone the Submarine to your local machine<a class="hash-link" href="#step2-clone-the-submarine-to-your-local-machine" title="Direct link to heading">#</a></h3><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain"># USERNAME – your Github user account name.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">git clone git@github.com:${USERNAME}/submarine.git</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"># or: git clone https://github.com/${USERNAME}/submarine.git </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">cd submarine</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"># set upstream </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">git remote add upstream git@github.com:apache/submarine.git</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"># or: git remote add upstream https://github.com/apache/submarine.git</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/community/contributing">master 🏃</a></li><li><a class="dropdown__link" href="/docs/community/contributing">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/community/contributing">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/community/contributing">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/community/contributing">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">How To Contribute to Submarine</h1></header><div class="markdown"><p>There are several ways to contribute to Submarine:</p><ol><li>Develop and Commit source code (This document will primarily focus on this.)</li><li>Report issues (You can report issues with both Github or Jira.)</li><li>Discuss/Answer questions on the mailing list</li><li>Share use cases</li></ol><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="preface"></a>Preface<a class="hash-link" href="#preface" title="Direct link to heading">#</a></h2><ul><li><strong>Apache Submarine</strong> is an <a href="https://github.com/apache/submarine/blob/master/LICENSE" target="_blank" rel="noopener noreferrer">Apache 2.0 License</a> Software. Contributing to Submarine means you agree to the Apache 2.0 License. </li><li>Please read <a href="http://www.apache.org/foundation/policies/conduct.html" target="_blank" rel="noopener noreferrer">Code of Conduct</a> carefully.</li><li>The document <a href="http://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer">How It Works</a> can help you understand Apache Software Foundation further.</li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="build-submarine"></a>Build Submarine<a class="hash-link" href="#build-submarine" title="Direct link to heading">#</a></h2><ul><li><a href="https://github.com/apache/submarine/blob/master/website/docs/devDocs/BuildFromCode.md" target="_blank" rel="noopener noreferrer">Build From Code</a></li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="creating-patches"></a>Creating patches<a class="hash-link" href="#creating-patches" title="Direct link to heading">#</a></h2><p>Submarine follows <a href="https://github.com/sevntu-checkstyle/sevntu.checkstyle/wiki/Development-workflow-with-Git:-Fork,-Branching,-Commits,-and-Pull-Request" target="_blank" rel="noopener noreferrer">Fork &amp; Pull</a> model.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="step1-fork-apachesubmarine-github-repository-first-time"></a>Step1: Fork apache/submarine github repository (first time)<a class="hash-link" href="#step1-fork-apachesubmarine-github-repository-first-time" title="Direct link to heading">#</a></h3><ul><li>Visit <a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer">https://github.com/apache/submarine</a></li><li>Click the <code>Fork</code> button to create a fork of the repository</li></ul><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="step2-clone-the-submarine-to-your-local-machine"></a>Step2: Clone the Submarine to your local machine<a class="hash-link" href="#step2-clone-the-submarine-to-your-local-machine" title="Direct link to heading">#</a></h3><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain"># USERNAME – your Github user account name.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">git clone git@github.com:${USERNAME}/submarine.git</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"># or: git clone https://github.com/${USERNAME}/submarine.git </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">cd submarine</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"># set upstream </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">git remote add upstream git@github.com:apache/submarine.git</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"># or: git remote add upstream https://github.com/apache/submarine.git</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"># Don&#x27;t push to the upstream master.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">git remote set-url --push upstream no_push</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"># Check upstream/origin:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"># origin    git@github.com:${USERNAME}/submarine.git (fetch)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"># origin    git@github.com:${USERNAME}/submarine.git (push)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"># upstream  git@github.com:apache/submarine.git (fetch)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"># upstream  no_push (push)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">git remote -v</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="step3-create-a-new-jira-in-submarine-project"></a>Step3: Create a new Jira in Submarine project<a class="hash-link" href="#step3-create-a-new-jira-in-submarine-project" title="Direct link to heading">#</a></h3><ul><li>New contributors need privilege to create JIRA issues. Please email <a href="mailto:kaihsun@apache.org" target="_blank" rel="noopener noreferrer">kaihsun@apache.org</a> with your Jira username. In addition, the email title should be &quot;[New Submarine Contributor]&quot;.</li><li>Check <a href="https://issues.apache.org/jira/projects/SUBMARINE/issues/SUBMARINE-748?filter=allopenissues" target="_blank" rel="noopener noreferrer">Jira issue tracker</a> for existing issues.</li><li>Create a new Jira issue in Submarine project. When the issue is created, a Jira number (eg. SUBMARINE-748) will be assigned to the issue automatically.
 <img alt="jira_number_example" src="/assets/images/jira_number_example-9d86e8dd3b72d9d9c2adddfbffc00a54.png"></li></ul><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="step4-create-a-local-branch-for-your-contribution"></a>Step4: Create a local branch for your contribution<a class="hash-link" href="#step4-create-a-local-branch-for-your-contribution" title="Direct link to heading">#</a></h3><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">cd submarine</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
@@ -29,15 +29,15 @@
 <img alt="compare_pull_request_button" src="/assets/images/compare_pull_request_button-a5c8f7a7ebda5fad45d1d9e6ca8ed58a.png"></li></ul><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="pull-request-template"></a>Pull Request template<a class="hash-link" href="#pull-request-template" title="Direct link to heading">#</a></h4><ul><li><a href="https://github.com/apache/submarine/blob/bd7578cc28f8280f9170938d4469fcc965e24a89/.github/PULL_REQUEST_TEMPLATE" target="_blank" rel="noopener noreferrer">Pull request template</a></li><li>Filling the template thoroughly can improve the speed of the review process. Example: </li></ul><p><img alt="pull_request_template_example" src="/assets/images/pull_request_template_example-5db7207e23fa54cca6de32325e8d7c67.png"></p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="step10-check-github-actions-status-of-your-pull-request-in-apachesubmarine"></a>Step10: Check GitHub Actions status of your pull request in apache/submarine<a class="hash-link" href="#step10-check-github-actions-status-of-your-pull-request-in-apachesubmarine" title="Direct link to heading">#</a></h3><ul><li>Visit <a href="https://github.com/apache/submarine/actions" target="_blank" rel="noopener noreferrer">https://github.com/apache/submarine/actions</a></li><li>Please make sure your pull request can pass all workflows. </li></ul><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="step11-the-review-process"></a>Step11: The Review Process<a class="hash-link" href="#step11-the-review-process" title="Direct link to heading">#</a></h3><ul><li>Anyone can be a reviewer and comment on the pull requests.</li><li>Reviewer can indicate that a patch looks suitable for merging with a comment such as: &quot;Looks good&quot;, &quot;LGTM&quot;, &quot;+1&quot;. (PS: LGTM = Looks Good To Me)</li><li>At least one indication of suitability (e.g. &quot;LGTM&quot;) from a committer is required to be merged. </li><li>A committer can then initiate lazy consensus (&quot;Merge if there is no more discussion&quot;) after which the code can be merged after a particular time (usually 24 hours) if there are no more reviews.</li><li>Contributors can ping reviewers (including committers) by commenting &#x27;Ready to review&#x27;.</li></ul><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="step12-address-review-comments"></a>Step12: Address review comments<a class="hash-link" href="#step12-address-review-comments" title="Direct link to heading">#</a></h3><ul><li>Push new commits to SUBMARINE-${jira_number} branch. The pull request will update automatically.</li><li>After you address all review comments, committers will merge the pull request.</li></ul><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-convention"></a>Code convention<a class="hash-link" href="#code-convention" title="Direct link to heading">#</a></h3><p>We are following Google Code style:</p><ul><li><a href="https://google.github.io/styleguide/javaguide.html" target="_blank" rel="noopener noreferrer">Java style</a></li><li><a href="https://google.github.io/styleguide/shell.xml" target="_blank" rel="noopener noreferrer">Shell style</a></li></ul><p>There are some plugins to format, lint your code in IDE (use <a href="hhttps://github.com/apache/submarine/blob/master/dev-support/maven-config/checkstyle.xml" target="_blank" rel="noopener noreferrer">dev-support/maven-config/checkstyle.xml</a> as rules)</p><ul><li><a href="https://plugins.jetbrains.com/plugin/1065" target="_blank" rel="noopener noreferrer">Checkstyle plugin for Intellij</a> (<a href="http://stackoverflow.com/questions/26955766/intellij-idea-checkstyle" target="_blank" rel="noopener noreferrer">Setting Guide</a>)</li><li><a href="http://eclipse-cs.sourceforge.net/#!/" target="_blank" rel="noopener noreferrer">Checkstyle plugin for Eclipse</a> (<a href="http://eclipse-cs.sourceforge.net/#!/project-setup" target="_blank" rel="noopener noreferrer">Setting Guide</a>)</li></ul></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/community/contributing.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/next/community/HowToCommit"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Guide for Apache Submarine Committers</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/next/community/HowToVoteCommitterOrPMC"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">How to vote a Committer or PMC »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#preface" class="table-of-contents__link">Preface</a></li><li><a href="#build-submarine" class="table-of-contents__link">Build Submarine</a></li><li><a href="#creating-patches" class="table-of-contents__link">Creating patches</a><ul><li><a href="#step1-fork-apachesubmarine-github-repository-first-time" class="table-of-contents__link">Step1: Fork apache/submarine github repository (first time)</a></li><li><a href="#step2-clone-the-submarine-to-your-local-machine" class="table-of-contents__link">Step2: Clone the Submarine to your local machine</a></li><li><a href="#step3-create-a-new-jira-in-submarine-project" class="table-of-contents__link">Step3: Create a new Jira in Submarine project</a></li><li><a href="#step4-create-a-local-branch-for-your-contribution" class="table-of-contents__link">Step4: Create a local branch for your contribution</a></li><li><a href="#step5-develop--create-commits" class="table-of-contents__link">Step5: Develop &amp; Create commits</a></li><li><a href="#step6-syncing-your-local-branch-with-upstreammaster" class="table-of-contents__link">Step6: Syncing your local branch with upstream/master</a></li><li><a href="#step7-push-your-local-branch-to-your-personal-fork" class="table-of-contents__link">Step7: Push your local branch to your personal fork</a></li><li><a href="#step8-check-github-actions-status-of-your-personal-commit" class="table-of-contents__link">Step8: Check GitHub Actions status of your personal commit</a></li><li><a href="#step9-create-a-pull-request-on-github-ui" class="table-of-contents__link">Step9: Create a pull request on github UI</a></li><li><a href="#step10-check-github-actions-status-of-your-pull-request-in-apachesubmarine" class="table-of-contents__link">Step10: Check GitHub Actions status of your pull request in apache/submarine</a></li><li><a href="#step11-the-review-process" class="table-of-contents__link">Step11: The Review Process</a></li><li><a href="#step12-address-review-comments" class="table-of-contents__link">Step12: Address review comments</a></li><li><a href="#code-convention" class="table-of-contents__link">Code convention</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/61cc1a3d.a8f5d940.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/935f2afb.9989d552.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/61cc1a3d.0c61cf27.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/next/designDocs/architecture-and-requirements/index.html b/docs/next/designDocs/architecture-and-requirements/index.html
index a1eb835..c263950 100644
--- a/docs/next/designDocs/architecture-and-requirements/index.html
+++ b/docs/next/designDocs/architecture-and-requirements/index.html
@@ -6,20 +6,20 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Architecture and Requirment | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="Architecture and Requirment | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/designDocs/architecture-and-requirements"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/designDocs/architecture-and-requirements"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/e3af4e10.b73ec906.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/935f2afb.9989d552.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/e3af4e10.2c97d2ab.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/designDocs/architecture-and-requirements">master 🏃</a></li><li><a class="dropdown__link" href="/docs/designDocs/architecture-and-requirements">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/designDocs/architecture-and-requirements">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/designDocs/architecture-and-requirements">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Administrator Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine on Yarn</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/adminDocs/yarn/README">Running Submarine on YARN (deprecated)</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/designDocs/architecture-and-requirements">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Architecture and Requirment</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="terminology"></a>Terminology<a class="hash-link" href="#terminology" title="Direct link to heading">#</a></h2><table><thead><tr><th>Term</th><th>Description</th></tr></thead><tbody><tr><td>User</td><td>A single data-scientist/data-engineer. User has resource quota, credentials</td></tr><tr><td>Team</td><td>User belongs to one or more teams, teams have ACLs for artifacts sharing such as notebook content, model, etc.</td></tr><tr><td>Admin</td><td>Also called SRE, who manages user&#x27;s quotas, credentials, team, and other components.</td></tr></tbody></table><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="background"></a>Background<a class="hash-link" href="#background" title="Direct link to heading">#</a></h2><p>Everybody talks about machine learning today, and lots of companies are trying to leverage machine learning to push the business to the next level. Nowadays, as more and more developers, infrastructure software companies coming to this field, machine learning becomes more and more achievable.</p><p>In the last decade, the software industry has built many open source tools for machine learning to solve the pain points:</p><ol><li><p>It was not easy to build machine learning algorithms manually, such as logistic regression, GBDT, and many other algorithms:
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/designDocs/architecture-and-requirements">master 🏃</a></li><li><a class="dropdown__link" href="/docs/designDocs/architecture-and-requirements">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/designDocs/architecture-and-requirements">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/designDocs/architecture-and-requirements">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/designDocs/architecture-and-requirements">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Architecture and Requirment</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="terminology"></a>Terminology<a class="hash-link" href="#terminology" title="Direct link to heading">#</a></h2><table><thead><tr><th>Term</th><th>Description</th></tr></thead><tbody><tr><td>User</td><td>A single data-scientist/data-engineer. User has resource quota, credentials</td></tr><tr><td>Team</td><td>User belongs to one or more teams, teams have ACLs for artifacts sharing such as notebook content, model, etc.</td></tr><tr><td>Admin</td><td>Also called SRE, who manages user&#x27;s quotas, credentials, team, and other components.</td></tr></tbody></table><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="background"></a>Background<a class="hash-link" href="#background" title="Direct link to heading">#</a></h2><p>Everybody talks about machine learning today, and lots of companies are trying to leverage machine learning to push the business to the next level. Nowadays, as more and more developers, infrastructure software companies coming to this field, machine learning becomes more and more achievable.</p><p>In the last decade, the software industry has built many open source tools for machine learning to solve the pain points:</p><ol><li><p>It was not easy to build machine learning algorithms manually, such as logistic regression, GBDT, and many other algorithms:
 <strong>Answer to that:</strong> Industries have open sourced many algorithm libraries, tools, and even pre-trained models so that data scientists can directly reuse these building blocks to hook up to their data without knowing intricate details inside these algorithms and models.</p></li><li><p>It was not easy to achieve &quot;WYSIWYG, what you see is what you get&quot; from IDEs: not easy to get output, visualization, troubleshooting experiences at the same place.
 <strong>Answer to that:</strong> Notebooks concept was added to this picture, notebook brought the experiences of interactive coding, sharing, visualization, debugging under the same user interface. There&#x27;re popular open-source notebooks like Apache Zeppelin/Jupyter.</p></li><li><p>It was not easy to manage dependencies: ML applications can run on one machine is hard to deploy on another machine because it has lots of libraries dependencies.
 <strong>Answer to that:</strong> Containerization becomes popular and a standard to packaging dependencies to make it easier to &quot;build once, run anywhere&quot;.</p></li><li><p>Fragmented tools, libraries were hard for ML engineers to learn. Experiences learned in one company are not naturally migratable to another company.
@@ -41,15 +41,15 @@
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      (You can use http://stable.ascii-flow.appspot.com/#Draw</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      to draw such diagrams)</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><code>Compute Resource Manager</code> Helps to manage compute resources on-prem/on-cloud, this module can also handle cluster creation / management, etc.</p><p><code>Experiment Manager</code> Work with &quot;Compute Resource Manager&quot; to submit different kinds of workloads such as (distributed) Tensorflow / Pytorch, etc.</p><p><code>Submarine SDK</code> provides Java/Python/REST API to allow DS or other engineers to integrate into Submarine services. It also includes a <code>mini-submarine</code> component that launches Submarine components from a single Docker container (or a VM image).</p><p>Details of Submarine Server design can be found at <a href="/docs/next/designDocs/submarine-server/architecture">submarine-server-design</a>.</p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/designDocs/architecture-and-requirements.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/next/community/HowToBecomeCommitter"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« How to become a Committer</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/next/designDocs/implementation-notes"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Implementation Notes »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#terminology" class="table-of-contents__link">Terminology</a></li><li><a href="#background" class="table-of-contents__link">Background</a></li><li><a href="#machine-learning-workflows--pain-points" class="table-of-contents__link">Machine Learning Workflows &amp; Pain points</a><ul><li><a href="#pain-1-complex-workflowsteps-from-raw-data-to-model-different-tools-needed-by-different-steps-hard-to-make-changes-to-workflow-and-not-error-proof" class="table-of-contents__link">Pain #1 Complex workflow/steps from raw data to model, different tools needed by different steps, hard to make changes to workflow, and not error-proof</a></li><li><a href="#pain-2-dependencies-of-underlying-resource-management-platform" class="table-of-contents__link">Pain #2 Dependencies of underlying resource management platform</a></li><li><a href="#pain-3-data-scientist-are-forced-to-interact-with-lower-level-platform-components" class="table-of-contents__link">Pain #3 Data scientist are forced to interact with lower-level platform components</a></li><li><a href="#pain-4-comply-with-data-securitygovernance-requirements" class="table-of-contents__link">Pain #4 Comply with data security/governance requirements</a></li><li><a href="#pain-5-no-good-way-to-reduce-routine-ml-code-development" class="table-of-contents__link">Pain #5 No good way to reduce routine ML code development</a></li></ul></li><li><a href="#overview" class="table-of-contents__link">Overview</a><ul><li><a href="#a-little-bit-history" class="table-of-contents__link">A little bit history</a></li><li><a href="#why-submarine" class="table-of-contents__link">Why Submarine?</a></li></ul></li><li><a href="#requirements-and-non-requirements" class="table-of-contents__link">Requirements and non-requirements</a><ul><li><a href="#notebook" class="table-of-contents__link">Notebook</a></li><li><a href="#experiment" class="table-of-contents__link">Experiment</a></li><li><a href="#environment-profiles" class="table-of-contents__link">Environment Profiles</a></li><li><a href="#model" class="table-of-contents__link">Model</a></li><li><a href="#metrics-for-training-job-and-model" class="table-of-contents__link">Metrics for training job and model</a></li><li><a href="#deployment" class="table-of-contents__link">Deployment</a></li><li><a href="#security--access-control--user-management--quota-management" class="table-of-contents__link">Security / Access Control / User Management / Quota Management</a></li><li><a href="#dataset" class="table-of-contents__link">Dataset</a></li></ul></li><li><a href="#architecture-overview" class="table-of-contents__link">Architecture Overview</a><ul><li><a href="#architecture-diagram" class="table-of-contents__link">Architecture Diagram</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/e3af4e10.b73ec906.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/935f2afb.9989d552.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/e3af4e10.2c97d2ab.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/next/designDocs/environments-implementation/index.html b/docs/next/designDocs/environments-implementation/index.html
index a38bd29..6a1d1c9 100644
--- a/docs/next/designDocs/environments-implementation/index.html
+++ b/docs/next/designDocs/environments-implementation/index.html
@@ -6,20 +6,20 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Environments Implementation | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="Environments Implementation | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/designDocs/environments-implementation"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/designDocs/environments-implementation"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/a7e506f8.5f2dfa4e.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/935f2afb.9989d552.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/a7e506f8.92088415.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/designDocs/environments-implementation">master 🏃</a></li><li><a class="dropdown__link" href="/docs/designDocs/environments-implementation">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/designDocs/environments-implementation">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/designDocs/environments-implementation">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Administrator Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine on Yarn</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/adminDocs/yarn/README">Running Submarine on YARN (deprecated)</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/designDocs/environments-implementation">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Environments Implementation</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="overview"></a>Overview<a class="hash-link" href="#overview" title="Direct link to heading">#</a></h2><p>Environment profiles (or environment for short) defines a set of libraries and when Docker is being used, a Docker image in order to run an experiment or a notebook. </p><p>Docker and/or VM-image (such as, VirtualBox/VMWare images, Amazon Machine Images - AMI, Or custom image of Azure VM) defines the base layer of the environment. Please note that VM-image is different from VM instance type,</p><p>On top of that, users can define a set of libraries (such as Python/R) to install, we call it kernel.</p><p><strong>Example of Environment</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/designDocs/environments-implementation">master 🏃</a></li><li><a class="dropdown__link" href="/docs/designDocs/environments-implementation">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/designDocs/environments-implementation">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/designDocs/environments-implementation">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/designDocs/environments-implementation">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Environments Implementation</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="overview"></a>Overview<a class="hash-link" href="#overview" title="Direct link to heading">#</a></h2><p>Environment profiles (or environment for short) defines a set of libraries and when Docker is being used, a Docker image in order to run an experiment or a notebook. </p><p>Docker and/or VM-image (such as, VirtualBox/VMWare images, Amazon Machine Images - AMI, Or custom image of Azure VM) defines the base layer of the environment. Please note that VM-image is different from VM instance type,</p><p>On top of that, users can define a set of libraries (such as Python/R) to install, we call it kernel.</p><p><strong>Example of Environment</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">     +-------------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">     |+-----------------+|</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">     || Python=3.7      ||</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">     || Tensorflow=2.0  ||</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">     |+---Exp Dependency+|</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">     |+-----------------+|</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">     ||OS=Ubuntu16.04   ||</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">     ||CUDA=10.2        ||</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">     ||GPU_Driver=375.. ||</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">     |+---Base Library--+|</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">     +-------------------+</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>As you can see, There&#x27;re base libraries, such as what OS, CUDA version, GPU driver, etc. They can be achieved by specifying a VM-image / Docker image.</p><p>On top of that, user can bring their dependencies, such as different version of Python, Tensorflow, Pandas, etc.</p><p><strong>How users use environment?</strong></p><p>Users can save different environment configs which can be also shared across the platform. Environment profiles can be used to run a notebook (e.g. by choosing different kernel from Jupyter), or an experiment. Predefined experiment library includes what environment to use so users don&#x27;t have to choose which environment to use.</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        +-------------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        |+-----------------+|       +------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        || Python=3.7      ||       |User1       |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        || Tensorflow=2.0  ||       +------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        |+---Kernel -------+|       +------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        |+-----------------+|&lt;----+ |User2       |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        ||OS=Ubuntu16.04   ||     + +------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        ||CUDA=10.2        ||     | +------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        ||GPU_Driver=375.. ||     | |User3       |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        |+---Base Library--+|     | +------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        +-----Default-Env---+     |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                                  |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                                  |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        +-------------------+     |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        |+-----------------+|     |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        || Python=3.3      ||     |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        || Tensorflow=2.0  ||     |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        |+---kernel--------+|     |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        |+-----------------+|     |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        ||OS=Ubuntu16.04   ||     |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        ||CUDA=10.3        ||&lt;----+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        ||GPU_Driver=375.. ||</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        |+---Base Library--+|</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        +-----My-Customized-+</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>There&#x27;re two environments in the above graph, &quot;Default-Env&quot; and &quot;My-Customized&quot;, which can have different combinations of libraries for different experiments/notebooks. Users can choose different environments for different experiments as they want.</p><p>Environments can be added/listed/deleted/selected through CLI/SDK/UI.</p><h1><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="implementation"></a>Implementation<a class="hash-link" href="#implementation" title="Direct link to heading">#</a></h1><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="environment-api-definition"></a>Environment API definition<a class="hash-link" href="#environment-api-definition" title="Direct link to heading">#</a></h2><p>Let look at what object definition looks like to define an environment, API of environment looks like:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">    name: &quot;my_submarine_env&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    vm-image: &quot;...&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    docker-image: &quot;...&quot;, </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    kernel: </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       &lt;object of kernel&gt;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    description: &quot;this is the most common env used by team ABC&quot;</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><ul><li><code>vm-image</code> is optional if we don&#x27;t need to launch new VM (like running a training job in a cloud-remote machine). </li><li><code>docker-image</code> is required</li><li><code>kernel</code> could be optional if kernel is already included by vm-image or docker-image.</li><li><code>name</code> of the environment should be unique in the system, so user can reference it when create a new experiment/notebook.</li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="vm-image-and-docker-image"></a>VM-image and Docker-image<a class="hash-link" href="#vm-image-and-docker-image" title="Direct link to heading">#</a></h2><p>Docker-image and VM image should be prepared by system admin / SREs, it is hard for Data-Scientists to write an error-proof Dockerfile, and push/manage Docker images. This is one of the reason we hide Docker-image inside &quot;environment&quot;, we will encourage users to customize their kernels if needed, but don&#x27;t have to touch Dockerfile and build/push/manage new Docker images.</p><p>As a project, we will document what&#x27;s the best practice and example of Dockerfiles. </p><p>Dockerfile should include proper <code>ENTRYPOINT</code> definition which pointed to our default script, so no matter it is notebook, or an experiment, we will setup kernel (see below) and other environment variables properly.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="kernel-implementation"></a>Kernel Implementation<a class="hash-link" href="#kernel-implementation" title="Direct link to heading">#</a></h2><p>After investigating different alternatives (such as pipenv, venv, etc.), we decided to use Conda environment which nicely replaces Python virtual env, pip, and can also support other languages. More details can be found at: <a href="https://medium.com/@krishnaregmi/pipenv-vs-virtualenv-vs-conda-environment-3dde3f6869ed" target="_blank" rel="noopener noreferrer">https://medium.com/@krishnaregmi/pipenv-vs-virtualenv-vs-conda-environment-3dde3f6869ed</a></p><p>When once Conda, users can easily add, remove dependency of a Conda environment. User can also easily export environment to yaml file.</p><p>The yaml file of Conda environment by using <code>conda env export</code> looks like: </p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">name: base</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">channels:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  - defaults</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">dependencies:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  - _ipyw_jlab_nb_ext_conf=0.1.0=py37_0</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  - alabaster=0.7.12=py37_0</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  - anaconda=2020.02=py37_0</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  - anaconda-client=1.7.2=py37_0</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  - anaconda-navigator=1.9.12=py37_0</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  - anaconda-project=0.8.4=py_0</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  - applaunchservices=0.2.1=py_0</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Including Conda kernel, the environment object may look like: </p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">name: &quot;my_submarine_env&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    vm-image: &quot;...&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    docker-image: &quot;...&quot;, </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    kernel: </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      name: team_default_python_3.7</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      channels:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        - defaults</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      dependencies:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        - _ipyw_jlab_nb_ext_conf=0.1.0=py37_0</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        - alabaster=0.7.12=py37_0</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        - anaconda=2020.02=py37_0</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        - anaconda-client=1.7.2=py37_0</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        - anaconda-navigator=1.9.12=py37_0</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>When launch a new experiment / notebook session using the <code>my_submarine_env</code>, submarine server will use defined Docker image, and Conda kernel to launch of container. </p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="storage-of-environment"></a>Storage of Environment<a class="hash-link" href="#storage-of-environment" title="Direct link to heading">#</a></h2><p>Environment of Submarine is just a simple text file, so it will be persisted in Submarine metastore, which is ideally a Database. </p><p>Docker image is stored inside a regular Docker registry, which will be handled outside of the system. </p><p>Conda dependencies are stored in Conda channel (where referenced packages are stored), which will be handled/setuped separately. (Popular conda channels are <code>default</code> and <code>conda-forge</code>)</p><p>For more detailed discussion about storage-related implementations, please refer to <a href="/docs/next/designDocs/storage-implementation">storage-implementation</a>.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="how-to-implement-to-make-user-can-easily-use-submarine-environments"></a>How to implement to make user can easily use Submarine environments?<a class="hash-link" href="#how-to-implement-to-make-user-can-easily-use-submarine-environments" title="Direct link to heading">#</a></h2><p>We like simplicities, and we don&#x27;t want to leak complexities of implementations to the users. To make it happen, we have to do some works to hide complexities. </p><p>There&#x27;re two primary uses of environments: experiments and notebook, for both of them, users should not do works like explictily call <code>conda active $env_name</code> to active environments. To make it happen, what we can do is to include following parts in Dockerfile </p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">FROM ubuntu:18.04</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">&lt;Include whatever base-libraries like CUDA, etc.&gt;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
@@ -27,15 +27,15 @@
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"># This is just a sample of Dockerfile, users can do more customizations if needed</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">ENTRYPOINT [&quot;/submarine-bootstrap.sh&quot;]</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>When Submarine Server (this is implementation detail of Submarine Server, user will not see it at all) launch an experiment, or notebook, it will invoke following <code>docker run</code> command (or any other equvilant like using K8s spec): </p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">docker run &lt;submarine_docker_image&gt; --kernel &lt;kernel_name&gt; -- .... python train.py --batch_size 5 (and other parameters)</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Similarily, to launch a notebook: </p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">docker run &lt;submarine_docker_image&gt; --kernel &lt;kernel_name&gt; -- .... jupyter</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>The <code>submarine-bootstrap.sh</code> is part of Submarine repo, and will handle <code>--kernel</code> argument which will invoke  <code>conda active $kernel_name</code> before anything else. (Like run the training job).</p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/designDocs/environments-implementation.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/next/designDocs/implementation-notes"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Implementation Notes</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/next/designDocs/experiment-implementation"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Experiment Implementation »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#overview" class="table-of-contents__link">Overview</a></li><li><a href="#environment-api-definition" class="table-of-contents__link">Environment API definition</a></li><li><a href="#vm-image-and-docker-image" class="table-of-contents__link">VM-image and Docker-image</a></li><li><a href="#kernel-implementation" class="table-of-contents__link">Kernel Implementation</a></li><li><a href="#storage-of-environment" class="table-of-contents__link">Storage of Environment</a></li><li><a href="#how-to-implement-to-make-user-can-easily-use-submarine-environments" class="table-of-contents__link">How to implement to make user can easily use Submarine environments?</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/a7e506f8.5f2dfa4e.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/935f2afb.9989d552.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/a7e506f8.92088415.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/next/designDocs/experiment-implementation/index.html b/docs/next/designDocs/experiment-implementation/index.html
index 2a0c1b5..4da29d1 100644
--- a/docs/next/designDocs/experiment-implementation/index.html
+++ b/docs/next/designDocs/experiment-implementation/index.html
@@ -6,20 +6,20 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Experiment Implementation | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="Experiment Implementation | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/designDocs/experiment-implementation"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/designDocs/experiment-implementation"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/cbf00e67.0b722239.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/935f2afb.9989d552.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/cbf00e67.6b8e1841.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/designDocs/experiment-implementation">master 🏃</a></li><li><a class="dropdown__link" href="/docs/designDocs/experiment-implementation">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/designDocs/experiment-implementation">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/designDocs/experiment-implementation">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Administrator Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine on Yarn</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/adminDocs/yarn/README">Running Submarine on YARN (deprecated)</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/designDocs/experiment-implementation">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Experiment Implementation</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="overview"></a>Overview<a class="hash-link" href="#overview" title="Direct link to heading">#</a></h2><p>This document talks about implementation of experiment, flows and design considerations.</p><p>Experiment consists of following components, also interact with other Submarine or 3rd-party components, showing below:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/designDocs/experiment-implementation">master 🏃</a></li><li><a class="dropdown__link" href="/docs/designDocs/experiment-implementation">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/designDocs/experiment-implementation">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/designDocs/experiment-implementation">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/designDocs/experiment-implementation">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Experiment Implementation</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="overview"></a>Overview<a class="hash-link" href="#overview" title="Direct link to heading">#</a></h2><p>This document talks about implementation of experiment, flows and design considerations.</p><p>Experiment consists of following components, also interact with other Submarine or 3rd-party components, showing below:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              +---------------------------------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> +----------+ |      Experiment Tasks                 |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> |Run       | |                                       |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> |Configs   | | +----------------------------------+  |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> +----------+ | |   Experiment Runnable Code       |  | +-----------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> +----------+ | |                                  |  | |Output Artifacts |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> |Input Data| | |     (Like train-job.py)          |  | |(Models, etc.)   |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> |          | | +----------------------------------+  | +-----------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> |          | | +----------------------------------+  |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> +----------+ | |   Experiment Deps (Like Python)  |  | +-------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              | +----------------------------------+  | |Logs/Metrics |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              | +----------------------------------+  | |             |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              | |  OS, Base Libaries (Like CUDA)   |  | +-------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              | +----------------------------------+  |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              +---------------------------------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                                 ^</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                                 | (Launch Task with resources)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                                 +</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                 +---------------------------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                 |Resource Manager (K8s/Cloud)|</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                 +---------------------------------+</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>As showing in the above diagram, Submarine experiment consists of the following items:</p><ul><li>On the left side, there&#x27;re input data and run configs.</li><li>In the middle box, they&#x27;re experiment tasks, it could be multiple tasks when we run distributed training, pipeline, etc.<ul><li>There&#x27;re main runnable code, such as <code>train.py</code> for the training main entry point.</li><li>The two boxes below: experiment dependencies and OS/Base libraries we called <code>Submarine Environment Profile</code> or  <code>Environment</code> for short. Which defined what is the basic libraries to run the main experiment code.</li><li>Experiment tasks are launched by Resource Manager, such as K8s/Cloud or just launched locally. There&#x27;re resources constraints for each experiment tasks. (e.g. how much memory, cores, GPU, disk etc. can be used by tasks).</li></ul></li><li>On the right side, they&#x27;re artifacts generated by experiments:<ul><li>Output artifacts: Which are main output of the experiment, it could be model(s), or output data when we do batch prediction.</li><li>Logs/Metrics for further troubleshooting or understanding of experiment&#x27;s quality.</li></ul></li></ul><p>For the rest of the design doc, we will talk about how we handle environment, code, and manage output/logs, etc.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="api-of-experiment"></a>API of Experiment<a class="hash-link" href="#api-of-experiment" title="Direct link to heading">#</a></h2><p>This is not a full definition of experiment, for more details, please reference to experiment API.</p><p>Here&#x27;s just an example of experiment object which help developer to understand what included in an experiment.</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-yaml codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token key atrule">experiment</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;abc&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       </span><span class="token key atrule">type</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;script&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       </span><span class="token key atrule">environment</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;team-default-ml-env&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       </span><span class="token key atrule">code</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">           </span><span class="token key atrule">sync_mode</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> s3</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">           </span><span class="token key atrule">url</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;s3://bucket/training-job.tar.gz&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       </span><span class="token key atrule">parameter</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">&gt;</span><span class="token plain"> python training.py </span><span class="token punctuation" style="color:rgb(199, 146, 234)">-</span><span class="token punctuation" style="color:rgb(199, 146, 234)">-</span><span class="token plain">iteration 10</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">-</span><span class="token punctuation" style="color:rgb(199, 146, 234)">-</span><span class="token plain">input=s3</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain">//bucket/input output=s3</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain">//bucket/output</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       </span><span class="token key atrule">resource_constraint</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">           res=&quot;mem=20gb</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> vcore=3</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> gpu=2&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       </span><span class="token key atrule">timeout</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;30 mins&quot;</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>This defined a &quot;script&quot; experiment, which has a name &quot;abc&quot;, the name can be used to track the experiment. There&#x27;s environment &quot;team-default-ml-env&quot; defined to make sure dependencies of the job can be downloaded properly before executing the job.</p><p><code>code</code> defined where the experiment code will be downloaded, we will support a couple of sync_mode like s3 (or abfs/hdfs), git, etc.</p><p>Different types of experiments will have different specs, for example distributed Tensorflow spec may look like:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-yaml codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token key atrule">experiment</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;abc-distributed-tf&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       </span><span class="token key atrule">type</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;distributed-tf&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       </span><span class="token key atrule">ps</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token key atrule">environment</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;team-default-ml-cpu&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token key atrule">resource_constraint</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                 res=&quot;mem=20gb</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> vcore=3</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> gpu=0&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       </span><span class="token key atrule">worker</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token key atrule">environment</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;team-default-ml-gpu&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token key atrule">resource_constraint</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                 res=&quot;mem=20gb</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> vcore=3</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> gpu=2&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       </span><span class="token key atrule">code</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">           </span><span class="token key atrule">sync_mode</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> git</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">           </span><span class="token key atrule">url</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;https://foo.com/training-job.git&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       </span><span class="token key atrule">parameter</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">&gt;</span><span class="token plain"> python /code/training</span><span class="token punctuation" style="color:rgb(199, 146, 234)">-</span><span class="token plain">job/training.py </span><span class="token punctuation" style="color:rgb(199, 146, 234)">-</span><span class="token punctuation" style="color:rgb(199, 146, 234)">-</span><span class="token plain">iteration 10</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">-</span><span class="token punctuation" style="color:rgb(199, 146, 234)">-</span><span class="token plain">input=s3</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain">//bucket/input output=s3</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain">//bucket/output</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       </span><span class="token key atrule">tensorboard</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> enabled</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       </span><span class="token key atrule">timeout</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;30 mins&quot;</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Since we have different Docker image, one is using GPU and one is not using GPU, we can specify different environment and resource constraint.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="manage-environments-for-experiment"></a>Manage environments for experiment<a class="hash-link" href="#manage-environments-for-experiment" title="Direct link to heading">#</a></h2><p>Please refer to <a href="/docs/next/designDocs/environments-implementation">environment-implementation.md</a> for more details</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="manage-storages-for-experiment"></a>Manage storages for experiment<a class="hash-link" href="#manage-storages-for-experiment" title="Direct link to heading">#</a></h2><p>There&#x27;re different types of storage, such as logs, metrics, dependencies (environments). For more details. Please refer to <a href="/docs/next/designDocs/storage-implementation">storage-implementations</a> for more details. This also includes how to manage code for experiment code.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="manage-pre-defined-experiment-libraries"></a>Manage Pre-defined experiment libraries<a class="hash-link" href="#manage-pre-defined-experiment-libraries" title="Direct link to heading">#</a></h2><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="flow-submit-an-experiment"></a>Flow: Submit an experiment<a class="hash-link" href="#flow-submit-an-experiment" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="submit-via-sdk-flows"></a>Submit via SDK Flows.<a class="hash-link" href="#submit-via-sdk-flows" title="Direct link to heading">#</a></h3><p>To better understand experiment implementation, It will be good to understand what is the steps of experiment submission.</p><p><em>Please note that below code is just pseudo code, not official APIs.</em></p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="specify-what-environment-to-use"></a>Specify what environment to use<a class="hash-link" href="#specify-what-environment-to-use" title="Direct link to heading">#</a></h3><p>Before submit the environment, you have to choose what environment to choose. Environment defines dependencies, etc. of an experiment or a notebook. might looks like below:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">conda_environment =</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">&quot;&quot;&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  name: conda-env</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  channels:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    - defaults</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  dependencies:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    - asn1crypto=1.3.0=py37_0</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    - blas=1.0=mkl</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    - ca-certificates=2020.1.1=0</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    - certifi=2020.4.5.1=py37_0</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    - cffi=1.14.0=py37hb5b8e2f_0</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    - chardet=3.0.4=py37_1003</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  prefix: /opt/anaconda3/envs/conda-env</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">&quot;&quot;&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"># This environment can be different from notebook&#x27;s own environment</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">environment = create_environment {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    DockerImage = &quot;ubuntu:16&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    CondaEnvironment = conda_environment</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>To better understand how environment works, please refer to <a href="/docs/next/designDocs/environments-implementation">environment-implementation</a>.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="create-experiment-specify-wheres-training-code-located-and-parameters"></a>Create experiment, specify where&#x27;s training code located, and parameters.<a class="hash-link" href="#create-experiment-specify-wheres-training-code-located-and-parameters" title="Direct link to heading">#</a></h3><p>For  ad-hoc experiment (code located at S3), assume training code is part of the <code>training-job.tar.gz</code> and main class is <code>train.py</code>. When the job is launched, whatever specified in the localize_artifacts will be downloaded.</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">experiment = create_experiment {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    Environment = environment,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    ExperimentConfig = {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       type = &quot;adhoc&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       localize_artifacts = [</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            &quot;s3://bucket/training-job.tar.gz&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       ],</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       name = &quot;abc&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       parameter = &quot;python training.py --iteration 10 --input=&quot;s3://bucket/input output=&quot;s3://bucket/output&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">}</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">experiment.run()</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">experiment.wait_for_finish(print_output=True)</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h5><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="run-notebook-file-in-offline-mode"></a>Run notebook file in offline mode<a class="hash-link" href="#run-notebook-file-in-offline-mode" title="Direct link to heading">#</a></h5><p>It is possible we want to run a notebook file in offline mode, to do that, here&#x27;s code to use to run a notebook code</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">experiment = create_experiment {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    Environment = environment,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    ExperimentConfig = {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       type = &quot;adhoc&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       localize_artifacts = [</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            &quot;s3://bucket/folder/notebook-123.ipynb&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       ],</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       name = &quot;abc&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       parameter = &quot;runipy training.ipynb --iteration 10 --input=&quot;s3://bucket/input output=&quot;s3://bucket/output&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">}</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">experiment.run()</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">experiment.wait_for_finish(print_output=True)</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h5><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="run-pre-defined-experiment-library"></a>Run pre-defined experiment library<a class="hash-link" href="#run-pre-defined-experiment-library" title="Direct link to heading">#</a></h5><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">experiment = create_experiment {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    # Here you can use default environment of library</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    Environment = environment,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    ExperimentConfig = {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       type = &quot;template&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       name = &quot;abc&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       # A unique name of template</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       template = &quot;deepfm_ctr&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       # yaml file defined what is the parameters need to be specified.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       parameter = {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">           Input: &quot;S3://.../input&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">           Output: &quot;S3://.../output&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">           Training: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              &quot;batch_size&quot;: 512,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              &quot;l2_reg&quot;: 0.01,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">           }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">}</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">experiment.run()</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">experiment.wait_for_finish(print_output=True)</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="summarize-experiment-vs-notebook-session"></a>Summarize: Experiment v.s. Notebook session<a class="hash-link" href="#summarize-experiment-vs-notebook-session" title="Direct link to heading">#</a></h2><p>There&#x27;s a common misunderstanding about what is the differences between running experiment v.s. running task from a notebook session. We will talk about differences and commonalities:</p><p><strong>Differences</strong></p><table><thead><tr><th></th><th>Experiment</th><th>Notebook Session</th></tr></thead><tbody><tr><td>Run mode</td><td>Offline</td><td>Interactive</td></tr><tr><td>Output Artifacts (a.k.a model)</td><td>Persisted in a shared storage (like S3/NFS)</td><td>Local in the notebook session container, could be ephemeral</td></tr><tr><td>Run history (meta, logs, metrics)</td><td>Meta/logs/metrics can be traced from experiment UI (or corresponding API)</td><td>No run history can be traced from Submarine UI/API. Can view the current running paragraph&#x27;s log/metrics, etc.</td></tr><tr><td>What to run?</td><td>Code from Docker image or shared storage (like Tarball on S3, Github, etc.)</td><td>Local in the notebook&#x27;s paragraph</td></tr></tbody></table><p><strong>Commonalities</strong></p><table><thead><tr><th></th><th>Experiment &amp; Notebook Session</th></tr></thead><tbody><tr><td>Environment</td><td>They can share the same Environment configuration</td></tr></tbody></table><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="experiment-related-modules-inside-submarine-server"></a>Experiment-related modules inside Submarine-server<a class="hash-link" href="#experiment-related-modules-inside-submarine-server" title="Direct link to heading">#</a></h2><p>(Please refer to <a href="/docs/next/designDocs/submarine-server/architecture">architecture of submarine server</a> for more details)</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="experiment-manager"></a>Experiment Manager<a class="hash-link" href="#experiment-manager" title="Direct link to heading">#</a></h3><p>The experiment manager receives the experiment requests, persisting the experiment metas in a database(e.g. MySQL), will invoke subsequence modules to submit and monitor the experiment&#x27;s execution.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="compute-cluster-manager"></a>Compute Cluster Manager<a class="hash-link" href="#compute-cluster-manager" title="Direct link to heading">#</a></h3><p>After experiment accepted by experiment manager, based on which cluster the experiment intended to run (like mentioned in the previous sections, Submarine supports to manage multiple compute clusters), compute cluster manager will returns credentials to access the compute cluster. It will also be responsible to create a new compute cluster if needed.</p><p>For most of the on-prem use cases, there&#x27;s only one cluster involved, for such cases, ComputeClusterManager returns credentials to access local cluster if needed.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="experiment-submitter"></a>Experiment Submitter<a class="hash-link" href="#experiment-submitter" title="Direct link to heading">#</a></h3><p>Experiment Submitter handles different kinds of experiments to run (e.g. ad-hoc script, distributed TF, MPI, pre-defined templates, Pipeline, AutoML, etc.). And such experiments can be managed by different resource management systems (e.g. K8s, container cloud, etc.)</p><p>To meet the requirements to support variant kinds of experiments and resource managers, we choose to use plug-in modules to support different submitters (which requires jars to submarine-server’s classpath).</p><p>To avoid jars and dependencies of plugins break the submarine-server, the plug-ins manager, or both. To solve this issue, we can instantiate submitter plug-ins using a classloader that is different from the system classloader.</p><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="submitter-plug-ins"></a>Submitter Plug-ins<a class="hash-link" href="#submitter-plug-ins" title="Direct link to heading">#</a></h4><p>Each plug-in uses a separate module under the server-submitter module. As the default implements, we provide for K8s.</p><p>The submitter-k8s plug-in is used to submit the job to Kubernetes cluster and use the <a href="https://kubernetes.io/docs/concepts/extend-kubernetes/operator/" target="_blank" rel="noopener noreferrer">operator</a> as the runtime. The submitter-k8s plug-in implements the operation of CRD object and provides the java interface. In the beginning, we use the <a href="https://github.com/kubeflow/tf-operator" target="_blank" rel="noopener noreferrer">tf-operator</a> for the TensorFlow.</p><p>If Submarine want to support the other resource management system in the future, such as submarine-docker-cluster (submarine uses the Raft algorithm to create a docker cluster on the docker runtime environment on multiple servers, providing the most lightweight resource scheduling system for small-scale users). We should create a new plug-in module named submitter-docker under the server-submitter module.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="experiment-monitor"></a>Experiment Monitor<a class="hash-link" href="#experiment-monitor" title="Direct link to heading">#</a></h3><p>The monitor tracks the experiment life cycle and records the main events and key info in runtime. As the experiment run progresses, the metrics are needed for evaluation of the ongoing success or failure of the execution progress. Due to adapt the different cluster resource management system, so we need a generic metric info structure and each submitter plug-in should inherit and complete it by itself.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="invoke-flows-of-experiment-related-components"></a>Invoke flows of experiment-related components<a class="hash-link" href="#invoke-flows-of-experiment-related-components" title="Direct link to heading">#</a></h3><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain"> +-----------------+  +----------------+ +----------------+ +-----------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> |Experiments      |  |Compute Cluster | |Experiment      | | Experiment      |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> |Mgr              |  |Mgr             | |Submitter       | | Monitor         |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> +-----------------+  +----------------+ +----------------+ +-----------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          +                    +                  +                  +</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> User     |                    |                  |                  |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> Submit   |+-------------------------------------&gt;+                  +</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> Xperiment|          Use submitter.validate(spec) |                  |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          |          to validate spec and create  |                  |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          |          experiment object (state-    |                  |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          |          machine).                    |                  |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          |                                       |                  |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          |          The experiment manager will  |                  |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          |          persist meta-data to Database|                  |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          |                    |                  |                  |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          |                    |                  +                  +</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          |+-----------------&gt; +                  |                  |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          |  Submit Experiments|                  |                  |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          |   To ComputeCluster|                  |                  |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          |   Mgr, get existing|+----------------&gt;|                  |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          |   cluster, or      |  Use Submitter   |                  |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          |   create a new one.|  to submit       |+---------------&gt; |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          |                    |  Different kinds |  Once job is     |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          |                    |  of experiments  |  submitted, use  |+----+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          |                    |  to k8s, etc|  monitor to get  |     |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          |                    |                  |  status updates  |     |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          |                    |                  |                  |     | Monitor</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          |                    |                  |                  |     | Xperiment</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          |                    |                  |                  |     | status</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          |                    |                  |                  |     |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          |&lt;--------------------------------------------------------+|     |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          |                    |                  |                  |     |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          |                  Update Status back to Experiment        |     |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          |                    |      Manager     |                  |&lt;----+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          |                    |                  |                  |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          |                    |                  |                  |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          |                    |                  |                  |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          v                    v                  v                  v</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>TODO: add more details about template, environment, etc.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="common-modules-of-experimentnotebook-sessionmodel-serving"></a>Common modules of experiment/notebook-session/model-serving<a class="hash-link" href="#common-modules-of-experimentnotebook-sessionmodel-serving" title="Direct link to heading">#</a></h2><p>Experiment/notebook-session/model-serving share a lot of commonalities, all of them are:</p><ul><li>Some workloads running on K8s.</li><li>Need persist meta data to DB.</li><li>Need monitor task/service running status from resource management system.</li></ul><p>We need to make their implementation are loose-coupled, but at the same time, share some building blocks as much as possible (e.g. submit PodSpecs to K8s, monitor status, get logs, etc.) to reduce duplications.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="support-predefined-experiment-templates"></a>Support Predefined-experiment-templates<a class="hash-link" href="#support-predefined-experiment-templates" title="Direct link to heading">#</a></h2><p>Predefined Experiment Template is just a way to save data-scientists time to repeatedly entering parameters which is not error-proof and user experience is also bad.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="predefined-experiment-template-api-to-run-experiment"></a>Predefined-experiment-template API to run experiment<a class="hash-link" href="#predefined-experiment-template-api-to-run-experiment" title="Direct link to heading">#</a></h3><p>Predefined experiment template consists a list of parameters, each of the parameter has 4 properties:</p><table><thead><tr><th>Key</th><th>Required</th><th>Default Value</th><th>Description</th></tr></thead><tbody><tr><td>Name of the key</td><td>true/false</td><td>When required = false, a default value can be provided by the template</td><td>Description of the parameter</td></tr></tbody></table><p>For the example of deepfm CTR training experiment mentioned in the <a href="/docs/next/designDocs/architecture-and-requirements">architecture-and-requirements.md</a></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">{</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;input&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;train_data&quot;: [&quot;hdfs:///user/submarine/data/tr.libsvm&quot;],</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;valid_data&quot;: [&quot;hdfs:///user/submarine/data/va.libsvm&quot;],</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;test_data&quot;: [&quot;hdfs:///user/submarine/data/te.libsvm&quot;],</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;type&quot;: &quot;libsvm&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;output&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;save_model_dir&quot;: &quot;hdfs:///user/submarine/deepfm&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;metric&quot;: &quot;auc&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;training&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;batch_size&quot; : 512,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;field_size&quot;: 39,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;num_epochs&quot;: 3,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;feature_size&quot;: 117581,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>The template will be (in yaml format):</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-yaml codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># deepfm.ctr template</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> deepfm.ctr</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token key atrule">author</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token key atrule">description</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">&gt;</span><span class="token scalar string" style="color:rgb(195, 232, 141)"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token scalar string" style="color:rgb(195, 232, 141)">  This is a template to run CTR training using deepfm algorithm, by default it runs</span></div><div class="token-line" style="color:#bfc7d5"><span class="token scalar string" style="color:rgb(195, 232, 141)">  single node TF job, you can also overwrite training parameters to use distributed</span></div><div class="token-line" style="color:#bfc7d5"><span class="token scalar string" style="color:rgb(195, 232, 141)">  training.</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
@@ -29,15 +29,15 @@
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   +-----------------+                  +------------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   |Template XYZ     |                  | XYZ Template     |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   |                 |+---------------&gt; | Handler          |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   +-----------------+                  +------------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                                                   +</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                                                   |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                                                   v</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">               +------------------+      +------------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">               |Distributed       |      | ABC Template     |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">               |TF Experiment     |&lt;----+| Handler          |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">               +------------------+      +------------------+</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Template Handler is a callable class inside Submarine Server with a standard interface defined like.</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-java codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token keyword" style="font-style:italic">interface</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(255, 203, 107)">ExperimentTemplateHandler</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token class-name" style="color:rgb(255, 203, 107)">ExperimentSpec</span><span class="token plain"> </span><span class="token function" style="color:rgb(130, 170, 255)">createExperiment</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token class-name" style="color:rgb(255, 203, 107)">TemplatedExperimentParameters</span><span class="token plain"> param</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>We should avoid users to do coding when they want to add new template, we should have several standard template handler to deal with most of the template handling.</p><p>Experiment templates can be registered/updated/deleted via Submarine Server&#x27;s REST API, which need to be discussed separately in the doc. (TODO)</p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/designDocs/experiment-implementation.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/next/designDocs/environments-implementation"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Environments Implementation</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/next/designDocs/notebook-implementation"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Notebook Implementation »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#overview" class="table-of-contents__link">Overview</a></li><li><a href="#api-of-experiment" class="table-of-contents__link">API of Experiment</a></li><li><a href="#manage-environments-for-experiment" class="table-of-contents__link">Manage environments for experiment</a></li><li><a href="#manage-storages-for-experiment" class="table-of-contents__link">Manage storages for experiment</a></li><li><a href="#manage-pre-defined-experiment-libraries" class="table-of-contents__link">Manage Pre-defined experiment libraries</a></li><li><a href="#flow-submit-an-experiment" class="table-of-contents__link">Flow: Submit an experiment</a><ul><li><a href="#submit-via-sdk-flows" class="table-of-contents__link">Submit via SDK Flows.</a></li><li><a href="#specify-what-environment-to-use" class="table-of-contents__link">Specify what environment to use</a></li><li><a href="#create-experiment-specify-wheres-training-code-located-and-parameters" class="table-of-contents__link">Create experiment, specify where&#39;s training code located, and parameters.</a></li></ul></li><li><a href="#summarize-experiment-vs-notebook-session" class="table-of-contents__link">Summarize: Experiment v.s. Notebook session</a></li><li><a href="#experiment-related-modules-inside-submarine-server" class="table-of-contents__link">Experiment-related modules inside Submarine-server</a><ul><li><a href="#experiment-manager" class="table-of-contents__link">Experiment Manager</a></li><li><a href="#compute-cluster-manager" class="table-of-contents__link">Compute Cluster Manager</a></li><li><a href="#experiment-submitter" class="table-of-contents__link">Experiment Submitter</a></li><li><a href="#experiment-monitor" class="table-of-contents__link">Experiment Monitor</a></li><li><a href="#invoke-flows-of-experiment-related-components" class="table-of-contents__link">Invoke flows of experiment-related components</a></li></ul></li><li><a href="#common-modules-of-experimentnotebook-sessionmodel-serving" class="table-of-contents__link">Common modules of experiment/notebook-session/model-serving</a></li><li><a href="#support-predefined-experiment-templates" class="table-of-contents__link">Support Predefined-experiment-templates</a><ul><li><a href="#predefined-experiment-template-api-to-run-experiment" class="table-of-contents__link">Predefined-experiment-template API to run experiment</a></li><li><a href="#handle-predefined-experiment-template-from-server-side" class="table-of-contents__link">Handle Predefined-experiment-template from server side</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/cbf00e67.0b722239.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/935f2afb.9989d552.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/cbf00e67.6b8e1841.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/next/designDocs/implementation-notes/index.html b/docs/next/designDocs/implementation-notes/index.html
index a68a813..e4a35b1 100644
--- a/docs/next/designDocs/implementation-notes/index.html
+++ b/docs/next/designDocs/implementation-notes/index.html
@@ -6,31 +6,31 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Implementation Notes | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="Implementation Notes | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/designDocs/implementation-notes"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/designDocs/implementation-notes"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/63f0eece.02856e78.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/935f2afb.9989d552.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/63f0eece.5a93fa51.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/designDocs/implementation-notes">master 🏃</a></li><li><a class="dropdown__link" href="/docs/designDocs/implementation-notes">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/designDocs/implementation-notes">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/designDocs/implementation-notes">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Administrator Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine on Yarn</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/adminDocs/yarn/README">Running Submarine on YARN (deprecated)</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/designDocs/implementation-notes">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Implementation Notes</h1></header><div class="markdown"><p>Before digging into details of implementations, you should read <a href="/docs/next/designDocs/architecture-and-requirements">architecture-and-requirements</a> first to understand overall requirements and architecture.</p><p>Here&#x27;re sub topics of Submarine implementations:</p><ul><li><a href="/docs/next/designDocs/storage-implementation">Submarine Storage</a>: How to store metadata, logs, metrics, etc. of Submarine.</li><li><a href="/docs/next/designDocs/environments-implementation">Submarine Environment</a>: How environments created, managed, stored in Submarine.</li><li><a href="/docs/next/designDocs/experiment-implementation">Submarine Experiment</a>: How experiments managed, stored, and how the predefined experiment template works.</li><li><a href="/docs/next/designDocs/notebook-implementation">Submarine Notebook</a>: How experiments managed, stored, and how the predefined experiment template works.</li><li><a href="/docs/next/designDocs/submarine-server/architecture">Submarine Server</a>: How Submarine server is designed, architecture, implementation notes, etc.</li></ul><p>Working-in-progress designs, Below are designs which are working-in-progress, we will move them to the upper section once design &amp; review is finished:</p><ul><li><a href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Submarine HA Design</a>: How Submarine HA can be achieved, using RAFT, etc.</li><li><a href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine services deployment module:</a> How to deploy submarine services to k8s or cloud.</li></ul></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/designDocs/implementation-notes.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/next/designDocs/architecture-and-requirements"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Architecture and Requirment</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/next/designDocs/environments-implementation"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Environments Implementation »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/designDocs/implementation-notes">master 🏃</a></li><li><a class="dropdown__link" href="/docs/designDocs/implementation-notes">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/designDocs/implementation-notes">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/designDocs/implementation-notes">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/designDocs/implementation-notes">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Implementation Notes</h1></header><div class="markdown"><p>Before digging into details of implementations, you should read <a href="/docs/next/designDocs/architecture-and-requirements">architecture-and-requirements</a> first to understand overall requirements and architecture.</p><p>Here&#x27;re sub topics of Submarine implementations:</p><ul><li><a href="/docs/next/designDocs/storage-implementation">Submarine Storage</a>: How to store metadata, logs, metrics, etc. of Submarine.</li><li><a href="/docs/next/designDocs/environments-implementation">Submarine Environment</a>: How environments created, managed, stored in Submarine.</li><li><a href="/docs/next/designDocs/experiment-implementation">Submarine Experiment</a>: How experiments managed, stored, and how the predefined experiment template works.</li><li><a href="/docs/next/designDocs/notebook-implementation">Submarine Notebook</a>: How experiments managed, stored, and how the predefined experiment template works.</li><li><a href="/docs/next/designDocs/submarine-server/architecture">Submarine Server</a>: How Submarine server is designed, architecture, implementation notes, etc.</li></ul><p>Working-in-progress designs, Below are designs which are working-in-progress, we will move them to the upper section once design &amp; review is finished:</p><ul><li><a href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Submarine HA Design</a>: How Submarine HA can be achieved, using RAFT, etc.</li><li><a href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine services deployment module:</a> How to deploy submarine services to k8s or cloud.</li></ul></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/designDocs/implementation-notes.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/next/designDocs/architecture-and-requirements"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Architecture and Requirment</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/next/designDocs/environments-implementation"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Environments Implementation »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/63f0eece.02856e78.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/935f2afb.9989d552.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/63f0eece.5a93fa51.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/next/designDocs/notebook-implementation/index.html b/docs/next/designDocs/notebook-implementation/index.html
index 521f492..4bd943f 100644
--- a/docs/next/designDocs/notebook-implementation/index.html
+++ b/docs/next/designDocs/notebook-implementation/index.html
@@ -6,32 +6,32 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Notebook Implementation | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="Notebook Implementation | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/designDocs/notebook-implementation"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/designDocs/notebook-implementation"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/7fd88130.63d25bc0.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/935f2afb.9989d552.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/7fd88130.35ec7e9a.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/designDocs/notebook-implementation">master 🏃</a></li><li><a class="dropdown__link" href="/docs/designDocs/notebook-implementation">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/designDocs/notebook-implementation">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/designDocs/notebook-implementation">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Administrator Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine on Yarn</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/adminDocs/yarn/README">Running Submarine on YARN (deprecated)</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/designDocs/notebook-implementation">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Notebook Implementation</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="overview"></a>Overview<a class="hash-link" href="#overview" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="users-interaction"></a>User&#x27;s interaction<a class="hash-link" href="#users-interaction" title="Direct link to heading">#</a></h3><p>Users can start N (N &gt;= 0) number of Notebook sessions, a notebook session is a running notebook instance.</p><ul><li>Notebook session can be launched by Submarine UI (P0), and Submarine CLI (P2). </li><li>When launch notebook session, users can choose T-shirt size of notebook session (how much mem/cpu/gpu resources, or resource profile such as small, medium, large, etc.). (P0)</li><li>And user can choose an environment for notebook. More details please refer to <a href="/docs/next/designDocs/environments-implementation">environment implementation</a> (P0)</li><li>When start a notebook, user can choose what code to be initialized, similar to experiment. (P1)</li><li>Optionally, users can choose to attach a persistent volume to a notebook session. (P2)</li></ul><p>Users can get a list of notebook sessions belongs to themselves, and connect to notebook session. </p><p>User can choose to terminate a running notebook session.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="admins-interaction"></a>Admin&#x27;s interaction<a class="hash-link" href="#admins-interaction" title="Direct link to heading">#</a></h3><ul><li>How many concurrent notebook sessions can be launched by each user is determined by resource quota limits of each user, and maximum concurrent notebook sessions can be launched by each user. (P2)</li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="relationship-with-other-components"></a>Relationship with other components<a class="hash-link" href="#relationship-with-other-components" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="metadata-store"></a>Metadata store<a class="hash-link" href="#metadata-store" title="Direct link to heading">#</a></h3><p>Running notebook sessions&#x27; metadata need persistented in Submarine&#x27;s metadata store (Database).</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="submarine-server"></a>Submarine Server<a class="hash-link" href="#submarine-server" title="Direct link to heading">#</a></h3><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/designDocs/notebook-implementation">master 🏃</a></li><li><a class="dropdown__link" href="/docs/designDocs/notebook-implementation">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/designDocs/notebook-implementation">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/designDocs/notebook-implementation">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/designDocs/notebook-implementation">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Notebook Implementation</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="overview"></a>Overview<a class="hash-link" href="#overview" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="users-interaction"></a>User&#x27;s interaction<a class="hash-link" href="#users-interaction" title="Direct link to heading">#</a></h3><p>Users can start N (N &gt;= 0) number of Notebook sessions, a notebook session is a running notebook instance.</p><ul><li>Notebook session can be launched by Submarine UI (P0), and Submarine CLI (P2). </li><li>When launch notebook session, users can choose T-shirt size of notebook session (how much mem/cpu/gpu resources, or resource profile such as small, medium, large, etc.). (P0)</li><li>And user can choose an environment for notebook. More details please refer to <a href="/docs/next/designDocs/environments-implementation">environment implementation</a> (P0)</li><li>When start a notebook, user can choose what code to be initialized, similar to experiment. (P1)</li><li>Optionally, users can choose to attach a persistent volume to a notebook session. (P2)</li></ul><p>Users can get a list of notebook sessions belongs to themselves, and connect to notebook session. </p><p>User can choose to terminate a running notebook session.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="admins-interaction"></a>Admin&#x27;s interaction<a class="hash-link" href="#admins-interaction" title="Direct link to heading">#</a></h3><ul><li>How many concurrent notebook sessions can be launched by each user is determined by resource quota limits of each user, and maximum concurrent notebook sessions can be launched by each user. (P2)</li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="relationship-with-other-components"></a>Relationship with other components<a class="hash-link" href="#relationship-with-other-components" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="metadata-store"></a>Metadata store<a class="hash-link" href="#metadata-store" title="Direct link to heading">#</a></h3><p>Running notebook sessions&#x27; metadata need persistented in Submarine&#x27;s metadata store (Database).</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="submarine-server"></a>Submarine Server<a class="hash-link" href="#submarine-server" title="Direct link to heading">#</a></h3><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  +--------------+  +--------Submarine Server--------------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  |Submarine UI  |  | +-------------------+                      |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  |              |+---&gt;  Submarine        |                      |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  |  Notebook    |  | |  Notebook REST API|                      |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  +--------------+  | |                   |                      |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    | +--------+----------+     +--------------+ |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    |          |             +-&gt;|Metastore     | |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    | +--------v----------+  |  |DB            | |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    | | Submarine         +--+  +--------------+ |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    | | Notebook Mgr      |                      |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    | |                   |                      |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    | |                   |                      |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    | +--------+----------+                      |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    |          |                                 |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                    +----------|---------------------------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                               |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                +--------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       +--------v---------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       | Notebook Session |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       |                  |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       |   instance       |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       |                  |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       +------------------+</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Once user use Submarine UI to launch a notebook session, Submarine notebook manager inside Submarine Server will persistent notebook session&#x27;s metadata, and launch a new notebook session instance. </p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="resource-manager"></a>Resource manager<a class="hash-link" href="#resource-manager" title="Direct link to heading">#</a></h3><p>When using K8s as resource manager, Submarine notebook session will run as a new POD.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="storage"></a>Storage<a class="hash-link" href="#storage" title="Direct link to heading">#</a></h3><p>There&#x27;re several different types of storage requirements for Submarine notebook. </p><p>For code, environment, etc, storage, please refer to <a href="/docs/next/designDocs/storage-implementation">storage implementation</a>, check &quot;Localization of experiment/notebook/model-serving code&quot;.</p><p>When there&#x27;re needs to attach volume (such as user&#x27;s home folder) to Submarine notebook session, please check <a href="/docs/next/designDocs/storage-implementation">storage implementation</a>, check &quot;Attachable volume&quot;.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="environment"></a>Environment<a class="hash-link" href="#environment" title="Direct link to heading">#</a></h3><p>Submarine notebook&#x27;s environment should be used to run experiment, model serving, etc. Please check <a href="/docs/next/designDocs/environments-implementation">environment implementation</a>. (More specific to notebook, please check &quot;How to implement to make user can easily use Submarine environments&quot;)</p><p>Please note that notebook&#x27;s Environment should include right version of notebook libraries, and admin should follow the guidance to build correct Docker image, Conda libraries to correctly run Notebook.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="submarine-sdk-for-experiment-etc"></a>Submarine SDK (For Experiment, etc.)<a class="hash-link" href="#submarine-sdk-for-experiment-etc" title="Direct link to heading">#</a></h3><p>Users can run new experiment, access metrics information, or do model operations using Submarine SDK. </p><p>Submarine SDK is a Python library which can talk to Submarine Server which need Submarine Server&#x27;s endpoint as well as user credentials.</p><p>To ensure better experience, we recommend always install proper version of Submarine SDK from environment which users can use Submarine SDK directly from commandline. (We as Submarine community can provide sample Dockerfile or Conda environment which have correct base libraries installed for Submarine SDK).</p><p>Submarine Server IP will be configured automatically by Submarine Server, and added as an envar when Submarine notebook session got launched.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="security"></a>Security<a class="hash-link" href="#security" title="Direct link to heading">#</a></h3><p>Please refer to <a href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></p><p>Once user accessed to a running notebook session, the user can also access resources of the notebook, capability of submit new experiment, and access data. This is also very dangerous so we have to protect it. </p><p>A simple solution is to use token-based authentication <a href="https://jupyter-notebook.readthedocs.io/en/stable/security.html" target="_blank" rel="noopener noreferrer">https://jupyter-notebook.readthedocs.io/en/stable/security.html</a>. A more common way is to use solutions like KNOX to support SSO. </p><p>We need expand this section to more details. (TODO).</p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/designDocs/notebook-implementation.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/next/designDocs/experiment-implementation"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Experiment Implementation</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/next/designDocs/storage-implementation"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Storage Implementation »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#overview" class="table-of-contents__link">Overview</a><ul><li><a href="#users-interaction" class="table-of-contents__link">User&#39;s interaction</a></li><li><a href="#admins-interaction" class="table-of-contents__link">Admin&#39;s interaction</a></li></ul></li><li><a href="#relationship-with-other-components" class="table-of-contents__link">Relationship with other components</a><ul><li><a href="#metadata-store" class="table-of-contents__link">Metadata store</a></li><li><a href="#submarine-server" class="table-of-contents__link">Submarine Server</a></li><li><a href="#resource-manager" class="table-of-contents__link">Resource manager</a></li><li><a href="#storage" class="table-of-contents__link">Storage</a></li><li><a href="#environment" class="table-of-contents__link">Environment</a></li><li><a href="#submarine-sdk-for-experiment-etc" class="table-of-contents__link">Submarine SDK (For Experiment, etc.)</a></li><li><a href="#security" class="table-of-contents__link">Security</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/7fd88130.63d25bc0.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/935f2afb.9989d552.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/7fd88130.35ec7e9a.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/next/designDocs/storage-implementation/index.html b/docs/next/designDocs/storage-implementation/index.html
index 68f5bdb..b0e5386 100644
--- a/docs/next/designDocs/storage-implementation/index.html
+++ b/docs/next/designDocs/storage-implementation/index.html
@@ -6,33 +6,33 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Storage Implementation | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="Storage Implementation | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/designDocs/storage-implementation"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/designDocs/storage-implementation"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/a5eec98c.b3504144.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/935f2afb.9989d552.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/a5eec98c.22ba4dd4.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/designDocs/storage-implementation">master 🏃</a></li><li><a class="dropdown__link" href="/docs/designDocs/storage-implementation">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/designDocs/storage-implementation">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/designDocs/storage-implementation">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Administrator Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine on Yarn</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/adminDocs/yarn/README">Running Submarine on YARN (deprecated)</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/designDocs/storage-implementation">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Storage Implementation</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="ml-related-objects-and-their-storages"></a>ML-related objects and their storages<a class="hash-link" href="#ml-related-objects-and-their-storages" title="Direct link to heading">#</a></h2><p>First let&#x27;s look at what user will interact for most of the time: </p><ul><li>Notebook </li><li>Experiment</li><li>Model Servings</li></ul><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/designDocs/storage-implementation">master 🏃</a></li><li><a class="dropdown__link" href="/docs/designDocs/storage-implementation">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/designDocs/storage-implementation">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/designDocs/storage-implementation">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/designDocs/storage-implementation">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Storage Implementation</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="ml-related-objects-and-their-storages"></a>ML-related objects and their storages<a class="hash-link" href="#ml-related-objects-and-their-storages" title="Direct link to heading">#</a></h2><p>First let&#x27;s look at what user will interact for most of the time: </p><ul><li>Notebook </li><li>Experiment</li><li>Model Servings</li></ul><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                              +---------+    +------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                              |Logs     |&lt;--+|Notebook    |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      +----------+            +---------+    +------------+     +----------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      |Trackings |                        &lt;-+|Experiment  |&lt;--+&gt;|Model Artifacts |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      +----------+     +-----------------+   +------------+     +----------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      +----------+&lt;---+|ML-related Metric|&lt;--+Servings    |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      |tf.events |     +-----------------+   +------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      +----------+                                 ^              +-----------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                                                   +              | Environments    |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                                        +----------------------+  |                 |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            +-----------------+         | Submarine Metastore  |  |  Dependencies   |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            |Code             |         +----------------------+  |                 |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            +-----------------+         |Experiment Meta       |  |   Docker Images |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                                        +----------------------+  +-----------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                                        |Model Store Meta      |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                                        +----------------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                                        |Model Serving Meta    |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                                        +----------------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                                        |Notebook meta         |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                                        +----------------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                                        |Experiment Templates  |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                                        +----------------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                                        |Environments Meta     |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                                        +----------------------+</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>First of all, all the notebook-sessions / experiments / model-serving instances) are more or less interact with following storage objects:</p><ul><li>Logs for these tasks for troubleshooting. </li><li>ML-related metrics such as loss, epoch, etc. (in contrast of system metrics such as CPU/memory usage, etc.)<ul><li>There&#x27;re different types of ML-related metrics, for Tensorflow/pytorch, they can use tf.events and get visualizations on tensorboard. </li><li>Or they can use tracking APIs (such as Submarine tracking, mlflow tracking, etc.) to output customized tracking results for non TF/Pytorch workloads. </li></ul></li><li>Training jobs of experiment typically generate model artifacts (files) which need persisted, and both of notebook, model serving needs to load model artifacts from persistent storage. </li><li>There&#x27;re various of meta information, such as experiment meta, model registry, model serving, notebook, experiment, environment, etc. We need be able to read these meta information back.</li><li>We also have code for experiment (like training/batch-prediction), notebook (ipynb), and model servings.</li><li>And notebook/experiments/model-serving need depend on environments (dependencies such as pip, and Docker Images).</li></ul><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="implementation-considerations-for-ml-related-objects"></a>Implementation considerations for ML-related objects<a class="hash-link" href="#implementation-considerations-for-ml-related-objects" title="Direct link to heading">#</a></h3><table><thead><tr><th>Object Type</th><th>Characteristics</th><th>Where to store</th></tr></thead><tbody><tr><td>Metrics: tf.events</td><td>Time series data with k/v, appendable to file</td><td>Local/EBS, HDFS, Cloud Blob Storage</td></tr><tr><td>Metrics: other tracking metrics</td><td>Time series data with k/v, appendable to file</td><td>Local, HDFS, Cloud Blob Storage, Database</td></tr><tr><td>Logs</td><td>Large volumes, #files are potentially huge.</td><td>Local (temporary), HDFS (need aggregation), Cloud Blob Storage</td></tr><tr><td>Submarine Metastore</td><td>CRUD operations for small meta data.</td><td>Database</td></tr><tr><td>Model Artifacts</td><td>Size varies for model (from KBs to GBs). #files are potentially huge.</td><td>HDFS, Cloud Blob Storage</td></tr><tr><td>Code</td><td>Need version control. (Please find detailed discussions below for code storage and localization)</td><td>Tarball on HDFS/Cloud Blog Storage, or Git</td></tr><tr><td>Environment (Dependencies, Docker Image)</td><td></td><td>Public/private environment repo (like Conda channel), Docker registry.</td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="detailed-discussions"></a>Detailed discussions<a class="hash-link" href="#detailed-discussions" title="Direct link to heading">#</a></h3><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="store-code-for-experimentnotebookmodel-serving"></a>Store code for experiment/notebook/model-serving<a class="hash-link" href="#store-code-for-experimentnotebookmodel-serving" title="Direct link to heading">#</a></h4><p>There&#x27;re following ways to get experiment code: </p><p><strong>1) Code is part of Git repo:</strong> (<strong><em><u>Recommended</u></em></strong>)</p><p>This is our recommended approach, once code is part of Git, it will be stored in version control, any change will be tracked, and much easier for users to trace back what change triggered a new bug, etc.</p><p><strong>2) Code is part of Docker image:</strong> </p><p><strong><em>This is an anti-pattern and we will NOT recommend you to use it</em></strong>, Docker image can be used to include ANYTHING, like dependencies, the code you will execute, or even data. But this doesn&#x27;t mean you should do it. We recommend to use Docker image ONLY for libraries/dependencies.</p><p>Making code to be part of Docker image makes hard to edit code (if you want to update a value in your Python file, you will have to recreate the Docker image, push it and rerun it).</p><p><strong>3) Code is part of S3/HDFS/ABFS:</strong> </p><p>User may want to store their training code to a tarball on a shared storage. Submarine need to download code from remote storage to the launched container before running the code. </p><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="localization-of-experimentnotebookmodel-serving-code"></a>Localization of experiment/notebook/model-serving code<a class="hash-link" href="#localization-of-experimentnotebookmodel-serving-code" title="Direct link to heading">#</a></h4><p>To make user experiences keeps same across different environment, we will localize code to a same folder after the container is launched, preferably <code>/code</code></p><p>For example, there&#x27;s a git repo need to be synced up for an experiment/notebook/model-serving (example above):</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">experiment: #Or notebook, model-serving</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       name: &quot;abc&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       environment: &quot;team-default-ml-env&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       ... (other fields)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">             code:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">           sync_mode: git</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">           url: &quot;https://foo.com/training-job.git&quot; </span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>After localize, <code>training-job/</code> will be placed under <code>/code</code> </p><p>When we running on K8s environment, we can use K8s&#x27;s initContainer and emptyDir to do these things for us. K8s POD spec (generated by Submarine server instead of user, user should NEVER edit K8s spec, that&#x27;s too unfriendly to data-scientists): </p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">apiVersion: v1</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">kind: Pod</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">metadata:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  name: experiment-abc</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">spec:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  containers:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  - name: experiment-task</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    image: training-job</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    volumeMounts:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    - name: code-dir</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      mountPath: /code</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  initContainers:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  - name: git-localize</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    image: git-sync</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    command: &quot;git clone .. /code/&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    volumeMounts:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    - name: code-dir</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      mountPath: /code</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  volumes:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  - name: code-dir</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    emptyDir: {}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>The above K8s spec create a code-dir and mount it to <code>/code</code> to launched containers. The initContainer <code>git-localize</code> uses <code>https://github.com/kubernetes/git-sync</code> to do the sync up. (If other storages are used such as s3, we can use similar initContainer approach to download contents)</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="system-related-metricslogs-and-their-storages"></a>System-related metrics/logs and their storages<a class="hash-link" href="#system-related-metricslogs-and-their-storages" title="Direct link to heading">#</a></h2><p>Other than ML-related objects, we have system-related objects, including: </p><ul><li>Daemon logs (like logs of Submarine server). </li><li>Logs for other dependency components (like Kubernetes logs when running on K8s). </li><li>System metrics (Physical resource usages by daemons, launched training containers, etc.). </li></ul><p>All these information should be handled by 3rd party system, such as Grafana, Prometheus, etc. And system admins are responsible to setup these infrastructures, dashboard. Users of submarine should NOT interact with system related metrics/logs. It is system admin&#x27;s responsibility.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="attachable-volumes"></a>Attachable Volumes<a class="hash-link" href="#attachable-volumes" title="Direct link to heading">#</a></h2><p>It is possible user has needs to have an attachable volume for their experiment / notebook, this is especially useful for notebook storage, since contents of notebook can be automatically saved, and it can be used as user&#x27;s home folder. </p><p>Downside of attachable volume is, it is not versioned, even notebook is mainly used for adhoc exploring tasks, an unversioned notebook file can lead to maintenance issues in the future. </p><p>Since this is a common requirement, we can consider to support attachable volumes in Submarine in a long run, but with relatively lower priority.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="in-scope--out-of-scope"></a>In-scope / Out-of-scope<a class="hash-link" href="#in-scope--out-of-scope" title="Direct link to heading">#</a></h2><p> Describe what Submarine project should own and what Submarine project should NOT own.</p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/designDocs/storage-implementation.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/next/designDocs/notebook-implementation"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Notebook Implementation</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/next/designDocs/submarine-server/architecture"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Submarine Server Implementation »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#ml-related-objects-and-their-storages" class="table-of-contents__link">ML-related objects and their storages</a><ul><li><a href="#implementation-considerations-for-ml-related-objects" class="table-of-contents__link">Implementation considerations for ML-related objects</a></li><li><a href="#detailed-discussions" class="table-of-contents__link">Detailed discussions</a></li></ul></li><li><a href="#system-related-metricslogs-and-their-storages" class="table-of-contents__link">System-related metrics/logs and their storages</a></li><li><a href="#attachable-volumes" class="table-of-contents__link">Attachable Volumes</a></li><li><a href="#in-scope--out-of-scope" class="table-of-contents__link">In-scope / Out-of-scope</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/a5eec98c.b3504144.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/935f2afb.9989d552.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/a5eec98c.22ba4dd4.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/next/designDocs/submarine-server/architecture/index.html b/docs/next/designDocs/submarine-server/architecture/index.html
index a8237ed..ff92518 100644
--- a/docs/next/designDocs/submarine-server/architecture/index.html
+++ b/docs/next/designDocs/submarine-server/architecture/index.html
@@ -6,33 +6,33 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Submarine Server Implementation | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="Submarine Server Implementation | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/designDocs/submarine-server/architecture"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/designDocs/submarine-server/architecture"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/ada24b13.29429dcb.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/935f2afb.9989d552.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/ada24b13.b5856d82.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/designDocs/submarine-server/architecture">master 🏃</a></li><li><a class="dropdown__link" href="/docs/designDocs/submarine-server/architecture">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/designDocs/submarine-server/architecture">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/designDocs/submarine-server/architecture">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Administrator Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine on Yarn</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/adminDocs/yarn/README">Running Submarine on YARN (deprecated)</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!" tabindex="0">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/designDocs/submarine-server/architecture">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Submarine Server Implementation</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="architecture-overview"></a>Architecture Overview<a class="hash-link" href="#architecture-overview" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">    +---------------Submarine Server ---+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    |                                   |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    | +------------+ +------------+     |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    | |Web Svc/Prxy| |Backend Svc |     |    +--Submarine Asset +</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    | +------------+ +------------+     |    |Project/Notebook  |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    |   ^         ^                     |    |Model/Metrics     |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    +---|---------|---------------------+    |Libraries/Dataset |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        |         |                          +------------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        |         |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        |      +--|-Compute Cluster 1---+    +--Image Registry--+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        +      |  |                     |    |   User&#x27;s Images  |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      User /   |  +                     |    |                  |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      Admin    | User Notebook Instance |    +------------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">               | Experiment Runs        |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">               +------------------------+    +-Data Storage-----+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                                             | S3/HDFS, etc.    |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">               +----Compute Cluster 2---+    |                  |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                                             +------------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                        ...</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Here&#x27;s a diagram to illustrate the Submarine&#x27;s deployment.</p><ul><li>Submarine Server consists of web service/proxy, and backend services. They&#x27;re like &quot;control planes&quot; of Submarine, and users will interact with these services.</li><li>Submarine server could be a microservice architecture and can be deployed to one of the compute clusters. (see below, this will be useful when we only have one cluster).</li><li>There&#x27;re multiple compute clusters that could be used by Submarine service. For user&#x27;s running notebook instance, jobs, etc. they will be placed to one of the compute clusters by user&#x27;s preference or defined policies.</li><li>Submarine&#x27;s asset includes project/notebook(content)/models/metrics/dataset-meta, etc. can be stored inside Submarine&#x27;s own database.</li><li>Datasets can be stored in various locations such as S3/HDFS.</li><li>Users can push container (such as Docker) images to a preconfigured registry in Submarine, so Submarine service can know how to pull required container images.</li><li>Image Registry/Data-Storage, etc. are outside of Submarine server&#x27;s scope and should be managed by 3rd party applications.</li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="submarine-server-and-its-apis"></a>Submarine Server and its APIs<a class="hash-link" href="#submarine-server-and-its-apis" title="Direct link to heading">#</a></h2><p>Submarine server is designed to allow data scientists to access notebooks, submit/manage jobs, manage models, create model training workflows, access datasets, etc.</p><p>Submarine Server exposed UI and REST API. Users can also use CLI / SDK to manage assets inside Submarine Server.</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">           +----------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">           | CLI      |+---+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">           +----------+    v              +----------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                         +--------------+ | Submarine      |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">           +----------+  | REST API     | |                |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">           | SDK      |+&gt;|              |+&gt;  Server        |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">           +----------+  +--------------+ |                |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                           ^              +----------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">           +----------+    |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">           | UI       |+---+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">           +----------+</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>REST API will be used by the other 3 approaches. (CLI/SDK/UI)</p><p>The REST API Service handles HTTP requests and is responsible for authentication. It acts as the caller for the JobManager component.</p><p>The REST component defines the generic job spec which describes the detailed info about job. For more details, refer to <a href="https://docs.google.com/document/d/1kd-5UzsHft6gV7EuZiPXeWIKJtPqVwkNlqMvy0P_pAw/edit#" target="_blank" rel="noopener noreferrer">here</a>. (Please note that we&#x27;re converting REST endpoint description from Java-based REST API to swagger definition, once that is done, we should replace the link with swagger definition spec).</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="proposal"></a>Proposal<a class="hash-link" href="#proposal" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/designDocs/submarine-server/architecture">master 🏃</a></li><li><a class="dropdown__link" href="/docs/designDocs/submarine-server/architecture">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/designDocs/submarine-server/architecture">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/designDocs/submarine-server/architecture">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!" tabindex="0">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/designDocs/submarine-server/architecture">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Submarine Server Implementation</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="architecture-overview"></a>Architecture Overview<a class="hash-link" href="#architecture-overview" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">    +---------------Submarine Server ---+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    |                                   |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    | +------------+ +------------+     |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    | |Web Svc/Prxy| |Backend Svc |     |    +--Submarine Asset +</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    | +------------+ +------------+     |    |Project/Notebook  |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    |   ^         ^                     |    |Model/Metrics     |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    +---|---------|---------------------+    |Libraries/Dataset |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        |         |                          +------------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        |         |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        |      +--|-Compute Cluster 1---+    +--Image Registry--+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        +      |  |                     |    |   User&#x27;s Images  |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      User /   |  +                     |    |                  |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      Admin    | User Notebook Instance |    +------------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">               | Experiment Runs        |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">               +------------------------+    +-Data Storage-----+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                                             | S3/HDFS, etc.    |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">               +----Compute Cluster 2---+    |                  |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                                             +------------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                        ...</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Here&#x27;s a diagram to illustrate the Submarine&#x27;s deployment.</p><ul><li>Submarine Server consists of web service/proxy, and backend services. They&#x27;re like &quot;control planes&quot; of Submarine, and users will interact with these services.</li><li>Submarine server could be a microservice architecture and can be deployed to one of the compute clusters. (see below, this will be useful when we only have one cluster).</li><li>There&#x27;re multiple compute clusters that could be used by Submarine service. For user&#x27;s running notebook instance, jobs, etc. they will be placed to one of the compute clusters by user&#x27;s preference or defined policies.</li><li>Submarine&#x27;s asset includes project/notebook(content)/models/metrics/dataset-meta, etc. can be stored inside Submarine&#x27;s own database.</li><li>Datasets can be stored in various locations such as S3/HDFS.</li><li>Users can push container (such as Docker) images to a preconfigured registry in Submarine, so Submarine service can know how to pull required container images.</li><li>Image Registry/Data-Storage, etc. are outside of Submarine server&#x27;s scope and should be managed by 3rd party applications.</li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="submarine-server-and-its-apis"></a>Submarine Server and its APIs<a class="hash-link" href="#submarine-server-and-its-apis" title="Direct link to heading">#</a></h2><p>Submarine server is designed to allow data scientists to access notebooks, submit/manage jobs, manage models, create model training workflows, access datasets, etc.</p><p>Submarine Server exposed UI and REST API. Users can also use CLI / SDK to manage assets inside Submarine Server.</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">           +----------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">           | CLI      |+---+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">           +----------+    v              +----------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                         +--------------+ | Submarine      |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">           +----------+  | REST API     | |                |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">           | SDK      |+&gt;|              |+&gt;  Server        |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">           +----------+  +--------------+ |                |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                           ^              +----------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">           +----------+    |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">           | UI       |+---+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">           +----------+</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>REST API will be used by the other 3 approaches. (CLI/SDK/UI)</p><p>The REST API Service handles HTTP requests and is responsible for authentication. It acts as the caller for the JobManager component.</p><p>The REST component defines the generic job spec which describes the detailed info about job. For more details, refer to <a href="https://docs.google.com/document/d/1kd-5UzsHft6gV7EuZiPXeWIKJtPqVwkNlqMvy0P_pAw/edit#" target="_blank" rel="noopener noreferrer">here</a>. (Please note that we&#x27;re converting REST endpoint description from Java-based REST API to swagger definition, once that is done, we should replace the link with swagger definition spec).</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="proposal"></a>Proposal<a class="hash-link" href="#proposal" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">+-----------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">|           |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">| workbench +---+   +----------------------------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">|           |   |   | +------+ +---------------------+ |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">+-----------+   |   | |      | |      +-------+      | |     +---------------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                |   | |      | |      |  K8s  |      | |     | +--------+   +----+ |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">+-----------+   |   | |      | |      +-------+      | |     | |        +--&gt;+job1| |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">|           |   |   | |      | |      submitter      | |     | |        |   +----+ |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">|    CLI    +------&gt;+ | REST | +---------------------+ +----&gt;+ |operator|   +----+ |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">|           |   |   | |      | +---------------------+ |     | |        +--&gt;+job2| |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">+-----------+   |   | |      | | +-------+ +-------+ | |     | +--------+   +----+ |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                |   | |      | | |PlugMgr| |monitor| | |     |     K8s Cluster     |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">+-----------+   |   | |      | | +-------+ +-------+ | |     +---------------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">|           |   |   | |      | |      JobManager     | |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">|    SDK    +---+   | +------+ +---------------------+ |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">|           |       +----------------------------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">+-----------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   client                          server</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>We propose to split the original core module in the old layout into two modules, CLI and server as shown in FIG. The submarine-client calls the REST APIs to submit and retrieve the job info. The submarine-server provides the REST service, job management, submitting the job to cluster, and running job in different clusters through the corresponding runtime.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="submarine-server-components"></a>Submarine Server Components<a class="hash-link" href="#submarine-server-components" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   +----------------------Submarine Server--------------------------------+</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   | +-----------------+ +------------------+ +--------------------+      |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   | |  Experiment     | |Notebook Session  | |Environment Mgr     |      |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   | |  Mgr            | |Mgr               | |                    |      |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   | +-----------------+ +------------------+ +--------------------+      |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   |                                                                      |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   | +-----------------+ +------------------+ +--------------------+      |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   | |  Model Registry | |Model Serving Mgr | |Compute Cluster Mgr |      |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   | |                 | |                  | |                    |      |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   | +-----------------+ +------------------+ +--------------------+      |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   |                                                                      |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   | +-----------------+ +------------------+ +--------------------+      |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   | | DataSet Mgr     | |User/Team         | |Metadata Mgr        |      |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   | |                 | |Permission Mgr    | |                    |      |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   | +-----------------+ +------------------+ +--------------------+      |</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   +----------------------------------------------------------------------+</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="experiment-manager"></a>Experiment Manager<a class="hash-link" href="#experiment-manager" title="Direct link to heading">#</a></h3><p>TODO</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="notebook-sessions-manager"></a>Notebook Sessions Manager<a class="hash-link" href="#notebook-sessions-manager" title="Direct link to heading">#</a></h3><p>TODO</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="environment-manager"></a>Environment Manager<a class="hash-link" href="#environment-manager" title="Direct link to heading">#</a></h3><p>TODO</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="model-registry"></a>Model Registry<a class="hash-link" href="#model-registry" title="Direct link to heading">#</a></h3><p>TODO</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="model-serving-manager"></a>Model Serving Manager<a class="hash-link" href="#model-serving-manager" title="Direct link to heading">#</a></h3><p>TODO</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="compute-cluster-manager"></a>Compute Cluster Manager<a class="hash-link" href="#compute-cluster-manager" title="Direct link to heading">#</a></h3><p>TODO</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="dataset-manager"></a>Dataset Manager<a class="hash-link" href="#dataset-manager" title="Direct link to heading">#</a></h3><p>TODO</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="userteam-permissions-manager"></a>User/team permissions manager<a class="hash-link" href="#userteam-permissions-manager" title="Direct link to heading">#</a></h3><p>TODO</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="metadata-manager"></a>Metadata Manager<a class="hash-link" href="#metadata-manager" title="Direct link to heading">#</a></h3><p>TODO</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="componentsservices-outside-of-submarine-servers-scope"></a>Components/services outside of Submarine Server&#x27;s scope<a class="hash-link" href="#componentsservices-outside-of-submarine-servers-scope" title="Direct link to heading">#</a></h2><p>TODO: Describe what are the out-of-scope components, which should be handled and managed outside of Submarine server. Candidates are: Identity management, data storage, metastore storage, etc.</p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/designDocs/submarine-server/architecture.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/next/designDocs/storage-implementation"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Storage Implementation</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/next/designDocs/submarine-server/experimentSpec"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Generic Experiment Spec »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#architecture-overview" class="table-of-contents__link">Architecture Overview</a></li><li><a href="#submarine-server-and-its-apis" class="table-of-contents__link">Submarine Server and its APIs</a></li><li><a href="#proposal" class="table-of-contents__link">Proposal</a></li><li><a href="#submarine-server-components" class="table-of-contents__link">Submarine Server Components</a><ul><li><a href="#experiment-manager" class="table-of-contents__link">Experiment Manager</a></li><li><a href="#notebook-sessions-manager" class="table-of-contents__link">Notebook Sessions Manager</a></li><li><a href="#environment-manager" class="table-of-contents__link">Environment Manager</a></li><li><a href="#model-registry" class="table-of-contents__link">Model Registry</a></li><li><a href="#model-serving-manager" class="table-of-contents__link">Model Serving Manager</a></li><li><a href="#compute-cluster-manager" class="table-of-contents__link">Compute Cluster Manager</a></li><li><a href="#dataset-manager" class="table-of-contents__link">Dataset Manager</a></li><li><a href="#userteam-permissions-manager" class="table-of-contents__link">User/team permissions manager</a></li><li><a href="#metadata-manager" class="table-of-contents__link">Metadata Manager</a></li></ul></li><li><a href="#componentsservices-outside-of-submarine-servers-scope" class="table-of-contents__link">Components/services outside of Submarine Server&#39;s scope</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/ada24b13.29429dcb.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/935f2afb.9989d552.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/ada24b13.b5856d82.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/next/designDocs/submarine-server/experimentSpec/index.html b/docs/next/designDocs/submarine-server/experimentSpec/index.html
index af95009..97632bc 100644
--- a/docs/next/designDocs/submarine-server/experimentSpec/index.html
+++ b/docs/next/designDocs/submarine-server/experimentSpec/index.html
@@ -6,31 +6,31 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Generic Experiment Spec | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="Generic Experiment Spec | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/designDocs/submarine-server/experimentSpec"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/designDocs/submarine-server/experimentSpec"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/40951386.951048fc.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/935f2afb.9989d552.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/40951386.37c25209.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/designDocs/submarine-server/experimentSpec">master 🏃</a></li><li><a class="dropdown__link" href="/docs/designDocs/submarine-server/experimentSpec">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/designDocs/submarine-server/experimentSpec">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/designDocs/submarine-server/experimentSpec">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Administrator Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine on Yarn</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/adminDocs/yarn/README">Running Submarine on YARN (deprecated)</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!" tabindex="0">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/designDocs/submarine-server/experimentSpec">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Generic Experiment Spec</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="motivation"></a>Motivation<a class="hash-link" href="#motivation" title="Direct link to heading">#</a></h2><p>As the machine learning platform, the submarine should support multiple machine learning frameworks, such as Tensorflow, Pytorch etc. But different framework has different distributed components for the training experiment. So that we designed a generic experiment spec to abstract the training experiment across different frameworks. In this way, the submarine-server can hide the complexity of underlying infrastructure differences and provide a cleaner interface to manager experiments</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="proposal"></a>Proposal<a class="hash-link" href="#proposal" title="Direct link to heading">#</a></h2><p>Considering the Tensorflow and Pytorch framework, we propose one spec which consists of library spec, submitter spec and task specs etc. Such as:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-yaml codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;mnist&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token key atrule">librarySpec</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;TensorFlow&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token key atrule">version</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2.1.0&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token key atrule">image</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token key atrule">cmd</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token key atrule">envVars</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token key atrule">ENV_1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token key atrule">submitterSpec</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token key atrule">type</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;k8s&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token key atrule">namespace</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;submarine&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token key atrule">taskSpecs</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token key atrule">Ps</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> tensorflow</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token key atrule">replicas</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">2</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token key atrule">resources</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu=4,memory=2048M,nvidia.com/gpu=1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token key atrule">Worker</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> tensorflow</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token key atrule">replicas</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">2</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token key atrule">resources</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu=4,memory=2048M,nvidia.com/gpu=1&quot;</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="library-spec"></a>Library Spec<a class="hash-link" href="#library-spec" title="Direct link to heading">#</a></h3><p>The library spec describes the info about machine learning framework. All the fields as below:</p><table><thead><tr><th>field</th><th>type</th><th>optional</th><th>description</th></tr></thead><tbody><tr><td>name</td><td>string</td><td>NO</td><td>Machine Learning Framework name. Only <code>&quot;tensorflow&quot;</code> and <code>&quot;pytorch&quot;</code> is supported. It doesn&#x27;t matter if the value is uppercase or lowercase.</td></tr><tr><td>version</td><td>string</td><td>NO</td><td>The version of ML framework. Such as: 2.1.0</td></tr><tr><td>image</td><td>string</td><td>NO</td><td>The public image used for each task if not specified. Such as: apache/submarine</td></tr><tr><td>cmd</td><td>string</td><td>YES</td><td>The public entry cmd for the task if not specified.</td></tr><tr><td>envVars</td><td>key/value</td><td>YES</td><td>The public env vars for the task if not specified.</td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="submitter-spec"></a>Submitter Spec<a class="hash-link" href="#submitter-spec" title="Direct link to heading">#</a></h3><p>It describes the info of submitter which the user specified, such as k8s. All the fields as below:</p><table><thead><tr><th>field</th><th>type</th><th>optional</th><th>description</th></tr></thead><tbody><tr><td>type</td><td>string</td><td>NO</td><td>The submitter type, supports <code>k8s</code> now</td></tr><tr><td>configPath</td><td>string</td><td>YES</td><td>The config path of the specified resource manager. You can set it in submarine-site.xml if run submarine-server locally</td></tr><tr><td>namespace</td><td>string</td><td>NO</td><td>It&#x27;s known as namespace in Kubernetes.</td></tr><tr><td>kind</td><td>string</td><td>YES</td><td>It&#x27;s used for k8s submitter, supports TFJob and PyTorchJob</td></tr><tr><td>apiVersion</td><td>string</td><td>YES</td><td>It should pair with the kind, such as the TFJob&#x27;s api version is <code>kubeflow.org/v1</code></td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="task-spec"></a>Task Spec<a class="hash-link" href="#task-spec" title="Direct link to heading">#</a></h3><p>It describes the task info, the tasks make up the experiment. So it must be specified when submit the experiment. All the tasks should putted into the key value collection. Such as:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-yaml codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token key atrule">taskSpecs</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token key atrule">Ps</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> tensorflow</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token key atrule">replicas</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">2</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token key atrule">resources</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu=4,memory=2048M,nvidia.com/gpu=1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token key atrule">Worker</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> tensorflow</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token key atrule">replicas</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">2</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token key atrule">resources</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu=4,memory=2048M,nvidia.com/gpu=1&quot;</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>All the fields as below:</p><table><thead><tr><th>field</th><th>type</th><th>optional</th><th>description</th></tr></thead><tbody><tr><td>name</td><td>string</td><td>YES</td><td>The experiment name, if not specify using the library name</td></tr><tr><td>image</td><td>string</td><td>YES</td><td>The experiment docker image</td></tr><tr><td>cmd</td><td>string</td><td>YES</td><td>The entry command for running task</td></tr><tr><td>envVars</td><td>key/value</td><td>YES</td><td>The environment variables for the task</td></tr><tr><td>resources</td><td>string</td><td>NO</td><td>The limit resource for the task. Formatter: cpu=%s,memory=%s,nvidia.com/gpu=%s</td></tr></tbody></table><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="implements"></a>Implements<a class="hash-link" href="#implements" title="Direct link to heading">#</a></h2><p>For more info see <a href="https://issues.apache.org/jira/browse/SUBMARINE-321" target="_blank" rel="noopener noreferrer">SUBMARINE-321</a></p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/designDocs/submarine-server/experimentSpec.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/next/designDocs/submarine-server/architecture"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Submarine Server Implementation</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/next/designDocs/wip-designs/submarine-launcher"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Submarine Launcher »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#motivation" class="table-of-contents__link">Motivation</a></li><li><a href="#proposal" class="table-of-contents__link">Proposal</a><ul><li><a href="#library-spec" class="table-of-contents__link">Library Spec</a></li><li><a href="#submitter-spec" class="table-of-contents__link">Submitter Spec</a></li><li><a href="#task-spec" class="table-of-contents__link">Task Spec</a></li></ul></li><li><a href="#implements" class="table-of-contents__link">Implements</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/designDocs/submarine-server/experimentSpec">master 🏃</a></li><li><a class="dropdown__link" href="/docs/designDocs/submarine-server/experimentSpec">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/designDocs/submarine-server/experimentSpec">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/designDocs/submarine-server/experimentSpec">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!" tabindex="0">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/designDocs/submarine-server/experimentSpec">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Generic Experiment Spec</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="motivation"></a>Motivation<a class="hash-link" href="#motivation" title="Direct link to heading">#</a></h2><p>As the machine learning platform, the submarine should support multiple machine learning frameworks, such as Tensorflow, Pytorch etc. But different framework has different distributed components for the training experiment. So that we designed a generic experiment spec to abstract the training experiment across different frameworks. In this way, the submarine-server can hide the complexity of underlying infrastructure differences and provide a cleaner interface to manager experiments</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="proposal"></a>Proposal<a class="hash-link" href="#proposal" title="Direct link to heading">#</a></h2><p>Considering the Tensorflow and Pytorch framework, we propose one spec which consists of library spec, submitter spec and task specs etc. Such as:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-yaml codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;mnist&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token key atrule">librarySpec</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;TensorFlow&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token key atrule">version</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2.1.0&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token key atrule">image</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token key atrule">cmd</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token key atrule">envVars</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token key atrule">ENV_1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token key atrule">submitterSpec</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token key atrule">type</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;k8s&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token key atrule">namespace</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;submarine&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token key atrule">taskSpecs</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token key atrule">Ps</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> tensorflow</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token key atrule">replicas</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">2</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token key atrule">resources</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu=4,memory=2048M,nvidia.com/gpu=1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token key atrule">Worker</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> tensorflow</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token key atrule">replicas</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">2</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token key atrule">resources</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu=4,memory=2048M,nvidia.com/gpu=1&quot;</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="library-spec"></a>Library Spec<a class="hash-link" href="#library-spec" title="Direct link to heading">#</a></h3><p>The library spec describes the info about machine learning framework. All the fields as below:</p><table><thead><tr><th>field</th><th>type</th><th>optional</th><th>description</th></tr></thead><tbody><tr><td>name</td><td>string</td><td>NO</td><td>Machine Learning Framework name. Only <code>&quot;tensorflow&quot;</code> and <code>&quot;pytorch&quot;</code> is supported. It doesn&#x27;t matter if the value is uppercase or lowercase.</td></tr><tr><td>version</td><td>string</td><td>NO</td><td>The version of ML framework. Such as: 2.1.0</td></tr><tr><td>image</td><td>string</td><td>NO</td><td>The public image used for each task if not specified. Such as: apache/submarine</td></tr><tr><td>cmd</td><td>string</td><td>YES</td><td>The public entry cmd for the task if not specified.</td></tr><tr><td>envVars</td><td>key/value</td><td>YES</td><td>The public env vars for the task if not specified.</td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="submitter-spec"></a>Submitter Spec<a class="hash-link" href="#submitter-spec" title="Direct link to heading">#</a></h3><p>It describes the info of submitter which the user specified, such as k8s. All the fields as below:</p><table><thead><tr><th>field</th><th>type</th><th>optional</th><th>description</th></tr></thead><tbody><tr><td>type</td><td>string</td><td>NO</td><td>The submitter type, supports <code>k8s</code> now</td></tr><tr><td>configPath</td><td>string</td><td>YES</td><td>The config path of the specified resource manager. You can set it in submarine-site.xml if run submarine-server locally</td></tr><tr><td>namespace</td><td>string</td><td>NO</td><td>It&#x27;s known as namespace in Kubernetes.</td></tr><tr><td>kind</td><td>string</td><td>YES</td><td>It&#x27;s used for k8s submitter, supports TFJob and PyTorchJob</td></tr><tr><td>apiVersion</td><td>string</td><td>YES</td><td>It should pair with the kind, such as the TFJob&#x27;s api version is <code>kubeflow.org/v1</code></td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="task-spec"></a>Task Spec<a class="hash-link" href="#task-spec" title="Direct link to heading">#</a></h3><p>It describes the task info, the tasks make up the experiment. So it must be specified when submit the experiment. All the tasks should putted into the key value collection. Such as:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-yaml codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token key atrule">taskSpecs</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token key atrule">Ps</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> tensorflow</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token key atrule">replicas</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">2</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token key atrule">resources</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu=4,memory=2048M,nvidia.com/gpu=1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token key atrule">Worker</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> tensorflow</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token key atrule">replicas</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">2</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token key atrule">resources</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu=4,memory=2048M,nvidia.com/gpu=1&quot;</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>All the fields as below:</p><table><thead><tr><th>field</th><th>type</th><th>optional</th><th>description</th></tr></thead><tbody><tr><td>name</td><td>string</td><td>YES</td><td>The experiment name, if not specify using the library name</td></tr><tr><td>image</td><td>string</td><td>YES</td><td>The experiment docker image</td></tr><tr><td>cmd</td><td>string</td><td>YES</td><td>The entry command for running task</td></tr><tr><td>envVars</td><td>key/value</td><td>YES</td><td>The environment variables for the task</td></tr><tr><td>resources</td><td>string</td><td>NO</td><td>The limit resource for the task. Formatter: cpu=%s,memory=%s,nvidia.com/gpu=%s</td></tr></tbody></table><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="implements"></a>Implements<a class="hash-link" href="#implements" title="Direct link to heading">#</a></h2><p>For more info see <a href="https://issues.apache.org/jira/browse/SUBMARINE-321" target="_blank" rel="noopener noreferrer">SUBMARINE-321</a></p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/designDocs/submarine-server/experimentSpec.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/next/designDocs/submarine-server/architecture"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Submarine Server Implementation</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/next/designDocs/wip-designs/submarine-launcher"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Submarine Launcher »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#motivation" class="table-of-contents__link">Motivation</a></li><li><a href="#proposal" class="table-of-contents__link">Proposal</a><ul><li><a href="#library-spec" class="table-of-contents__link">Library Spec</a></li><li><a href="#submitter-spec" class="table-of-contents__link">Submitter Spec</a></li><li><a href="#task-spec" class="table-of-contents__link">Task Spec</a></li></ul></li><li><a href="#implements" class="table-of-contents__link">Implements</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/40951386.951048fc.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/935f2afb.9989d552.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/40951386.37c25209.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/next/designDocs/wip-designs/security-implementation/index.html b/docs/next/designDocs/wip-designs/security-implementation/index.html
index c307788..961109c 100644
--- a/docs/next/designDocs/wip-designs/security-implementation/index.html
+++ b/docs/next/designDocs/wip-designs/security-implementation/index.html
@@ -6,31 +6,31 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Security Implementation | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="Security Implementation | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/designDocs/wip-designs/security-implementation"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/designDocs/wip-designs/security-implementation"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/6df4a83b.3b9e8ced.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/935f2afb.9989d552.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/6df4a83b.f13acfb7.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/designDocs/wip-designs/security-implementation">master 🏃</a></li><li><a class="dropdown__link" href="/docs/designDocs/wip-designs/security-implementation">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/designDocs/wip-designs/security-implementation">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/designDocs/wip-designs/security-implementation">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Administrator Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine on Yarn</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/adminDocs/yarn/README">Running Submarine on YARN (deprecated)</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!" tabindex="0">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/designDocs/wip-designs/security-implementation">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Security Implementation</h1></header><div class="markdown"><div class="admonition admonition-warning alert alert--danger"><div class="admonition-heading"><h5><span class="admonition-icon"><svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"></path></svg></span>warning</h5></div><div class="admonition-content"><p>Please note that this design doc is working-in-progress and need more works to complete. </p></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="handle-users-credential"></a>Handle User&#x27;s Credential<a class="hash-link" href="#handle-users-credential" title="Direct link to heading">#</a></h2><p>Users credential includes Kerberoes Keytabs, Docker registry credentials, Github ssh-keys, etc.</p><p>User&#x27;s credential must be stored securitely, for example, via KeyCloak or K8s Secrets.</p><p>(More details TODO)</p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/designDocs/wip-designs/security-implementation.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/next/designDocs/wip-designs/submarine-clusterServer"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Cluster Server Design - High-Availability</div></a></div><div class="pagination-nav__item pagination-nav__item--next"></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#handle-users-credential" class="table-of-contents__link">Handle User&#39;s Credential</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/designDocs/wip-designs/security-implementation">master 🏃</a></li><li><a class="dropdown__link" href="/docs/designDocs/wip-designs/security-implementation">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/designDocs/wip-designs/security-implementation">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/designDocs/wip-designs/security-implementation">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!" tabindex="0">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/designDocs/wip-designs/security-implementation">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Security Implementation</h1></header><div class="markdown"><div class="admonition admonition-warning alert alert--danger"><div class="admonition-heading"><h5><span class="admonition-icon"><svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"></path></svg></span>warning</h5></div><div class="admonition-content"><p>Please note that this design doc is working-in-progress and need more works to complete. </p></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="handle-users-credential"></a>Handle User&#x27;s Credential<a class="hash-link" href="#handle-users-credential" title="Direct link to heading">#</a></h2><p>Users credential includes Kerberoes Keytabs, Docker registry credentials, Github ssh-keys, etc.</p><p>User&#x27;s credential must be stored securitely, for example, via KeyCloak or K8s Secrets.</p><p>(More details TODO)</p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/designDocs/wip-designs/security-implementation.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/next/designDocs/wip-designs/submarine-clusterServer"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Cluster Server Design - High-Availability</div></a></div><div class="pagination-nav__item pagination-nav__item--next"></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#handle-users-credential" class="table-of-contents__link">Handle User&#39;s Credential</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/6df4a83b.3b9e8ced.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/935f2afb.9989d552.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/6df4a83b.f13acfb7.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/next/designDocs/wip-designs/submarine-clusterServer/index.html b/docs/next/designDocs/wip-designs/submarine-clusterServer/index.html
index a388a30..fd05579 100644
--- a/docs/next/designDocs/wip-designs/submarine-clusterServer/index.html
+++ b/docs/next/designDocs/wip-designs/submarine-clusterServer/index.html
@@ -6,20 +6,20 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Cluster Server Design - High-Availability | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="Cluster Server Design - High-Availability | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/designDocs/wip-designs/submarine-clusterServer"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/designDocs/wip-designs/submarine-clusterServer"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/b60f7df5.b58ddb02.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/935f2afb.9989d552.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/b60f7df5.4cec88ae.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">master 🏃</a></li><li><a class="dropdown__link" href="/docs/designDocs/wip-designs/submarine-clusterServer">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/designDocs/wip-designs/submarine-clusterServer">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Administrator Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine on Yarn</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/adminDocs/yarn/README">Running Submarine on YARN (deprecated)</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!" tabindex="0">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/designDocs/wip-designs/submarine-clusterServer">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Cluster Server Design - High-Availability</h1></header><div class="markdown"><div class="admonition admonition-warning alert alert--danger"><div class="admonition-heading"><h5><span class="admonition-icon"><svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"></path></svg></span>warning</h5></div><div class="admonition-content"><p>Please note that this design doc is working-in-progress and need more works to complete. </p></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="below-is-existing-proposal"></a>Below is existing proposal:<a class="hash-link" href="#below-is-existing-proposal" title="Direct link to heading">#</a></h2><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="introduction"></a>Introduction<a class="hash-link" href="#introduction" title="Direct link to heading">#</a></h2><p>The Submarine system contains a total of two daemon services, Submarine Server and Workbench Server.</p><p>Submarine Server mainly provides job submission, job scheduling, job status monitoring, and model online service for Submarine.</p><p>Workbench Server is mainly for algorithm users to provide algorithm development, Python/Spark interpreter operation, and other services through Notebook.</p><p>The goal of the Submarine project is to provide high availability and high-reliability services for big data processing,
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">master 🏃</a></li><li><a class="dropdown__link" href="/docs/designDocs/wip-designs/submarine-clusterServer">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/designDocs/wip-designs/submarine-clusterServer">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!" tabindex="0">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/designDocs/wip-designs/submarine-clusterServer">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Cluster Server Design - High-Availability</h1></header><div class="markdown"><div class="admonition admonition-warning alert alert--danger"><div class="admonition-heading"><h5><span class="admonition-icon"><svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"></path></svg></span>warning</h5></div><div class="admonition-content"><p>Please note that this design doc is working-in-progress and need more works to complete. </p></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="below-is-existing-proposal"></a>Below is existing proposal:<a class="hash-link" href="#below-is-existing-proposal" title="Direct link to heading">#</a></h2><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="introduction"></a>Introduction<a class="hash-link" href="#introduction" title="Direct link to heading">#</a></h2><p>The Submarine system contains a total of two daemon services, Submarine Server and Workbench Server.</p><p>Submarine Server mainly provides job submission, job scheduling, job status monitoring, and model online service for Submarine.</p><p>Workbench Server is mainly for algorithm users to provide algorithm development, Python/Spark interpreter operation, and other services through Notebook.</p><p>The goal of the Submarine project is to provide high availability and high-reliability services for big data processing,
 algorithm development, job scheduling, model online services, model batch, and incremental updates. </p><p>In addition to the high availability of big data and machine learning frameworks,
 the high availability of Submarine Server and Workbench Server itself is a key consideration.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="requirement"></a>Requirement<a class="hash-link" href="#requirement" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="cluster-metadata-center"></a>Cluster Metadata Center<a class="hash-link" href="#cluster-metadata-center" title="Direct link to heading">#</a></h3><p>Multiple Submarine (or Workbench) Server processes create a Submarine Cluster through the RAFT algorithm library. </p><p>The cluster internally maintains a metadata center. All servers can operate the metadata. </p><p>The RAFT algorithm ensures that multiple processes are simultaneously co-located. </p><p>A data modification will not cause problems such as mutual coverage and dirty data.</p><p>This metadata center stores data by means of key-value pairs. it can store/support a variety of data,
 but it should be noted that metadata is only suitable for storing small amounts of data and cannot be used to replace data storage.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="service-discovery"></a>Service discovery<a class="hash-link" href="#service-discovery" title="Direct link to heading">#</a></h3><p>By storing the information of the service or process in the metadata center, we can easily find the information of the service or process we need in any place,
@@ -45,15 +45,15 @@
 Failure to do so will result in the user not being able to continue while switching to another server.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="listen-for-note-update-events"></a>Listen for note update events<a class="hash-link" href="#listen-for-note-update-events" title="Direct link to heading">#</a></h3><p>Listen for the NEW_NOTE, DEL_NOTE, REMOVE_NOTE_TO_TRASH ... event of the notebook in the NotebookServer#onMessage() function.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="broadcast-note-update-event"></a>Broadcast note update event<a class="hash-link" href="#broadcast-note-update-event" title="Direct link to heading">#</a></h3><p>The note is refreshed by notifying the event to all Submarine servers in the cluster via messaging Service.</p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/designDocs/wip-designs/submarine-clusterServer.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/next/designDocs/wip-designs/submarine-launcher"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Submarine Launcher</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/next/designDocs/wip-designs/security-implementation"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Security Implementation »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#below-is-existing-proposal" class="table-of-contents__link">Below is existing proposal:</a></li><li><a href="#introduction" class="table-of-contents__link">Introduction</a></li><li><a href="#requirement" class="table-of-contents__link">Requirement</a><ul><li><a href="#cluster-metadata-center" class="table-of-contents__link">Cluster Metadata Center</a></li><li><a href="#service-discovery" class="table-of-contents__link">Service discovery</a></li><li><a href="#cluster-event" class="table-of-contents__link">Cluster event</a></li><li><a href="#independence" class="table-of-contents__link">Independence</a></li><li><a href="#disadvantages" class="table-of-contents__link">Disadvantages</a></li></ul></li><li><a href="#system-design" class="table-of-contents__link">System design</a><ul><li><a href="#universal-design" class="table-of-contents__link">Universal design</a></li><li><a href="#clusterconfigure" class="table-of-contents__link">ClusterConfigure</a></li><li><a href="#clusterserver" class="table-of-contents__link">ClusterServer</a></li><li><a href="#clusterclient" class="table-of-contents__link">ClusterClient</a></li><li><a href="#clustermetadata" class="table-of-contents__link">ClusterMetadata</a></li><li><a href="#network-fault-tolerance" class="table-of-contents__link">Network fault tolerance</a></li><li><a href="#cluster-monitoring" class="table-of-contents__link">Cluster monitoring</a></li><li><a href="#atomix-raft-algorithm-library" class="table-of-contents__link">Atomix Raft algorithm library</a></li><li><a href="#synchronize-workbench-notes" class="table-of-contents__link">Synchronize workbench notes</a></li><li><a href="#listen-for-note-update-events" class="table-of-contents__link">Listen for note update events</a></li><li><a href="#broadcast-note-update-event" class="table-of-contents__link">Broadcast note update event</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/b60f7df5.b58ddb02.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/935f2afb.9989d552.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/b60f7df5.4cec88ae.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/next/designDocs/wip-designs/submarine-launcher/index.html b/docs/next/designDocs/wip-designs/submarine-launcher/index.html
index aca6ada..5980d62 100644
--- a/docs/next/designDocs/wip-designs/submarine-launcher/index.html
+++ b/docs/next/designDocs/wip-designs/submarine-launcher/index.html
@@ -6,20 +6,20 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Submarine Launcher | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="Submarine Launcher | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/designDocs/wip-designs/submarine-launcher"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/designDocs/wip-designs/submarine-launcher"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/817286e8.e6230ef6.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/935f2afb.9989d552.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/817286e8.7c287254.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/designDocs/wip-designs/submarine-launcher">master 🏃</a></li><li><a class="dropdown__link" href="/docs/designDocs/wip-designs/submarine-launcher">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/designDocs/wip-designs/submarine-launcher">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/designDocs/wip-designs/submarine-launcher">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Administrator Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine on Yarn</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/adminDocs/yarn/README">Running Submarine on YARN (deprecated)</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!" tabindex="0">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/designDocs/wip-designs/submarine-launcher">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Submarine Launcher</h1></header><div class="markdown"><div class="admonition admonition-warning alert alert--danger"><div class="admonition-heading"><h5><span class="admonition-icon"><svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"></path></svg></span>warning</h5></div><div class="admonition-content"><p>Please note that this design doc is working-in-progress and need more works to complete.</p></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="introduction"></a>Introduction<a class="hash-link" href="#introduction" title="Direct link to heading">#</a></h2><p>Submarine is built and run in Cloud Native, taking advantage of the cloud computing model.</p><p>To give full play to the advantages of cloud computing.
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/designDocs/wip-designs/submarine-launcher">master 🏃</a></li><li><a class="dropdown__link" href="/docs/designDocs/wip-designs/submarine-launcher">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/designDocs/wip-designs/submarine-launcher">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/designDocs/wip-designs/submarine-launcher">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!" tabindex="0">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/designDocs/wip-designs/submarine-launcher">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Submarine Launcher</h1></header><div class="markdown"><div class="admonition admonition-warning alert alert--danger"><div class="admonition-heading"><h5><span class="admonition-icon"><svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"></path></svg></span>warning</h5></div><div class="admonition-content"><p>Please note that this design doc is working-in-progress and need more works to complete.</p></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="introduction"></a>Introduction<a class="hash-link" href="#introduction" title="Direct link to heading">#</a></h2><p>Submarine is built and run in Cloud Native, taking advantage of the cloud computing model.</p><p>To give full play to the advantages of cloud computing.
 These applications are characterized by rapid and frequent build, release, and deployment.
 Combined with the features of cloud computing, they are decoupled from the underlying hardware and operating system,
 and can easily meet the requirements of scalability, availability, and portability. And provide better economy.</p><p>In the enterprise data center, submarine can support k8s/docker three resource scheduling systems;
@@ -40,15 +40,15 @@
 and run the service or workspace container in this cluster through scheduling algorithms.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="launcher-on-kubernetes"></a>Launcher On Kubernetes<a class="hash-link" href="#launcher-on-kubernetes" title="Direct link to heading">#</a></h3><p>submarine operator</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="launcher-on-aws"></a>Launcher On AWS<a class="hash-link" href="#launcher-on-aws" title="Direct link to heading">#</a></h3><p>[TODO]</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="launcher-on-gcp"></a>Launcher On GCP<a class="hash-link" href="#launcher-on-gcp" title="Direct link to heading">#</a></h3><p>[TODO]</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="launcher-on-azure"></a>Launcher On Azure<a class="hash-link" href="#launcher-on-azure" title="Direct link to heading">#</a></h3><p>[TODO]</p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/designDocs/wip-designs/submarine-launcher.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/next/designDocs/submarine-server/experimentSpec"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Generic Experiment Spec</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/next/designDocs/wip-designs/submarine-clusterServer"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Cluster Server Design - High-Availability »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#introduction" class="table-of-contents__link">Introduction</a></li><li><a href="#requirement" class="table-of-contents__link">Requirement</a><ul><li><a href="#cloud-native-service" class="table-of-contents__link">Cloud-Native Service</a></li><li><a href="#service-discovery" class="table-of-contents__link">Service discovery</a></li></ul></li><li><a href="#design" class="table-of-contents__link">Design</a><ul><li><a href="#launcher" class="table-of-contents__link">Launcher</a></li><li><a href="#launcher-on-docker" class="table-of-contents__link">Launcher On Docker</a></li><li><a href="#launcher-on-kubernetes" class="table-of-contents__link">Launcher On Kubernetes</a></li><li><a href="#launcher-on-aws" class="table-of-contents__link">Launcher On AWS</a></li><li><a href="#launcher-on-gcp" class="table-of-contents__link">Launcher On GCP</a></li><li><a href="#launcher-on-azure" class="table-of-contents__link">Launcher On Azure</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/817286e8.e6230ef6.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/935f2afb.9989d552.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/817286e8.7c287254.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/next/devDocs/BuildFromCode/index.html b/docs/next/devDocs/BuildFromCode/index.html
index 9dd4ca1..ba08e3f 100644
--- a/docs/next/devDocs/BuildFromCode/index.html
+++ b/docs/next/devDocs/BuildFromCode/index.html
@@ -6,34 +6,34 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">How to Build Submarine | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="How to Build Submarine | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/devDocs/BuildFromCode"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/devDocs/BuildFromCode"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/97b312ed.95b88531.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/935f2afb.9989d552.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/97b312ed.06ead6e6.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/devDocs/BuildFromCode">master 🏃</a></li><li><a class="dropdown__link" href="/docs/devDocs/BuildFromCode">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/devDocs/BuildFromCode">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/devDocs/BuildFromCode">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Administrator Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine on Yarn</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/adminDocs/yarn/README">Running Submarine on YARN (deprecated)</a></li></ul></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/devDocs/BuildFromCode">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">How to Build Submarine</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="prerequisites"></a>Prerequisites<a class="hash-link" href="#prerequisites" title="Direct link to heading">#</a></h2><ul><li>JDK 1.8</li><li>Maven 3.3 or later ( &lt; 3.8.1 )</li><li>Docker</li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="quick-start"></a>Quick Start<a class="hash-link" href="#quick-start" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="build-your-custom-submarine-docker-images"></a>Build Your Custom Submarine Docker Images<a class="hash-link" href="#build-your-custom-submarine-docker-images" title="Direct link to heading">#</a></h3><p>Submarine provides default Docker image in the release artifacts, sometimes you would like to do some modifications on the images. You can rebuild Docker image after you make changes.</p><blockquote><p>Note that you need to make sure the images built above can be accessed in k8s
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/devDocs/BuildFromCode">master 🏃</a></li><li><a class="dropdown__link" href="/docs/devDocs/BuildFromCode">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/devDocs/BuildFromCode">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/devDocs/BuildFromCode">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/devDocs/BuildFromCode">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">How to Build Submarine</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="prerequisites"></a>Prerequisites<a class="hash-link" href="#prerequisites" title="Direct link to heading">#</a></h2><ul><li>JDK 1.8</li><li>Maven 3.3 or later ( &lt; 3.8.1 )</li><li>Docker</li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="quick-start"></a>Quick Start<a class="hash-link" href="#quick-start" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="build-your-custom-submarine-docker-images"></a>Build Your Custom Submarine Docker Images<a class="hash-link" href="#build-your-custom-submarine-docker-images" title="Direct link to heading">#</a></h3><p>Submarine provides default Docker image in the release artifacts, sometimes you would like to do some modifications on the images. You can rebuild Docker image after you make changes.</p><blockquote><p>Note that you need to make sure the images built above can be accessed in k8s
 Usually this needs to rename and push to a proper Docker registry.</p></blockquote><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">mvn clean package -DskipTests</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Build submarine server image:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">./dev-support/docker-images/submarine/build.sh</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Build submarine database image:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">./dev-support/docker-images/database/build.sh</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="checking-releases-for-licenses"></a>Checking releases for licenses<a class="hash-link" href="#checking-releases-for-licenses" title="Direct link to heading">#</a></h3><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">mvn clean org.apache.rat:apache-rat-plugin:check</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="building-source-code--binary-distribution-with-maven-wrapper"></a>Building source code / binary distribution with Maven Wrapper<a class="hash-link" href="#building-source-code--binary-distribution-with-maven-wrapper" title="Direct link to heading">#</a></h3><ul><li>Maven Wrapper (Optional): Maven Wrapper can help you avoid dependencies problem about Maven version.</li></ul><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain"># Setup Maven Wrapper (Maven 3.6.1)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">mvn -N io.takari:maven:0.7.7:wrapper -Dmaven=3.6.1</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"># Check Maven Wrapper</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">./mvnw -version</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"># Replace &#x27;mvn&#x27; with &#x27;mvnw&#x27;. Example:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">./mvnw clean package -DskipTests</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/devDocs/BuildFromCode.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/next/devDocs/Dependencies"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Dependencies for Submarine</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/next/devDocs/Development"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Development Guide »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#prerequisites" class="table-of-contents__link">Prerequisites</a></li><li><a href="#quick-start" class="table-of-contents__link">Quick Start</a><ul><li><a href="#build-your-custom-submarine-docker-images" class="table-of-contents__link">Build Your Custom Submarine Docker Images</a></li><li><a href="#checking-releases-for-licenses" class="table-of-contents__link">Checking releases for licenses</a></li><li><a href="#building-source-code--binary-distribution-with-maven-wrapper" class="table-of-contents__link">Building source code / binary distribution with Maven Wrapper</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/97b312ed.95b88531.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/935f2afb.9989d552.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/97b312ed.06ead6e6.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/next/devDocs/Dependencies/index.html b/docs/next/devDocs/Dependencies/index.html
index c38e7bd..67e8fcb 100644
--- a/docs/next/devDocs/Dependencies/index.html
+++ b/docs/next/devDocs/Dependencies/index.html
@@ -6,31 +6,31 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Dependencies for Submarine | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="Dependencies for Submarine | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/devDocs/Dependencies"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/devDocs/Dependencies"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/72f8d982.4335d80b.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/935f2afb.9989d552.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/72f8d982.94fda3b2.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/devDocs/Dependencies">master 🏃</a></li><li><a class="dropdown__link" href="/docs/devDocs/Dependencies">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/devDocs/Dependencies">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/devDocs/Dependencies">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Administrator Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine on Yarn</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/adminDocs/yarn/README">Running Submarine on YARN (deprecated)</a></li></ul></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/devDocs/Dependencies">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Dependencies for Submarine</h1></header><div class="markdown"><ul><li>These are the dependencies currently used by Apache Submarine.</li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="kubernetes"></a>Kubernetes<a class="hash-link" href="#kubernetes" title="Direct link to heading">#</a></h2><table><thead><tr><th>Kubernetes Version</th><th align="center">Support?</th></tr></thead><tbody><tr><td>1.14.x (or earlier)</td><td align="center">X</td></tr><tr><td>1.15.x - 1.21.x</td><td align="center">√</td></tr><tr><td>1.22.x (or later)</td><td align="center">X</td></tr></tbody></table><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="kind"></a>KinD<a class="hash-link" href="#kind" title="Direct link to heading">#</a></h2><table><thead><tr><th>KinD Version</th><th align="center">Support?</th></tr></thead><tbody><tr><td>0.5.x (or earlier)</td><td align="center">X</td></tr><tr><td>0.6.x</td><td align="center">√</td></tr><tr><td>0.7.x</td><td align="center">√</td></tr><tr><td>0.8.x</td><td align="center">√</td></tr><tr><td>0.9.x</td><td align="center">√</td></tr><tr><td>0.10.x</td><td align="center">√</td></tr><tr><td>0.11.x</td><td align="center">√</td></tr></tbody></table><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="java"></a>Java<a class="hash-link" href="#java" title="Direct link to heading">#</a></h2><table><thead><tr><th>JDK Version</th><th align="center">Support?</th></tr></thead><tbody><tr><td>8</td><td align="center">√</td></tr><tr><td>11</td><td align="center">X</td></tr><tr><td>17</td><td align="center">X</td></tr></tbody></table><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="maven"></a>Maven<a class="hash-link" href="#maven" title="Direct link to heading">#</a></h2><ul><li>3.3 or later ( &lt; 3.8.1 )</li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="docker"></a>Docker<a class="hash-link" href="#docker" title="Direct link to heading">#</a></h2><ul><li>Latest</li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="helm"></a>Helm<a class="hash-link" href="#helm" title="Direct link to heading">#</a></h2><ul><li>Version 3</li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="nodejs"></a>NodeJS<a class="hash-link" href="#nodejs" title="Direct link to heading">#</a></h2><ul><li>14 (or later)</li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="go"></a>Go<a class="hash-link" href="#go" title="Direct link to heading">#</a></h2><table><thead><tr><th>Go Version</th><th align="center">Support?</th></tr></thead><tbody><tr><td>1.15</td><td align="center">X</td></tr><tr><td>1.16</td><td align="center">√</td></tr><tr><td>1.17 (or later)</td><td align="center">To be verified</td></tr></tbody></table><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="python"></a>Python<a class="hash-link" href="#python" title="Direct link to heading">#</a></h2><table><thead><tr><th>Python Version</th><th align="center">Support?</th></tr></thead><tbody><tr><td>3.5 (or earlier)</td><td align="center">X</td></tr><tr><td>3.6, 3.7</td><td align="center">√</td></tr><tr><td>3.8 (or later)</td><td align="center">To be verified</td></tr></tbody></table></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/devDocs/Dependencies.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/next/devDocs/README"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Project Architecture</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/next/devDocs/BuildFromCode"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">How to Build Submarine »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#kubernetes" class="table-of-contents__link">Kubernetes</a></li><li><a href="#kind" class="table-of-contents__link">KinD</a></li><li><a href="#java" class="table-of-contents__link">Java</a></li><li><a href="#maven" class="table-of-contents__link">Maven</a></li><li><a href="#docker" class="table-of-contents__link">Docker</a></li><li><a href="#helm" class="table-of-contents__link">Helm</a></li><li><a href="#nodejs" class="table-of-contents__link">NodeJS</a></li><li><a href="#go" class="table-of-contents__link">Go</a></li><li><a href="#python" class="table-of-contents__link">Python</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/devDocs/Dependencies">master 🏃</a></li><li><a class="dropdown__link" href="/docs/devDocs/Dependencies">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/devDocs/Dependencies">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/devDocs/Dependencies">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/devDocs/Dependencies">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Dependencies for Submarine</h1></header><div class="markdown"><ul><li>These are the dependencies currently used by Apache Submarine.</li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="kubernetes"></a>Kubernetes<a class="hash-link" href="#kubernetes" title="Direct link to heading">#</a></h2><table><thead><tr><th>Kubernetes Version</th><th align="center">Support?</th></tr></thead><tbody><tr><td>1.14.x (or earlier)</td><td align="center">X</td></tr><tr><td>1.15.x - 1.21.x</td><td align="center">√</td></tr><tr><td>1.22.x (or later)</td><td align="center">X</td></tr></tbody></table><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="kind"></a>KinD<a class="hash-link" href="#kind" title="Direct link to heading">#</a></h2><table><thead><tr><th>KinD Version</th><th align="center">Support?</th></tr></thead><tbody><tr><td>0.5.x (or earlier)</td><td align="center">X</td></tr><tr><td>0.6.x</td><td align="center">√</td></tr><tr><td>0.7.x</td><td align="center">√</td></tr><tr><td>0.8.x</td><td align="center">√</td></tr><tr><td>0.9.x</td><td align="center">√</td></tr><tr><td>0.10.x</td><td align="center">√</td></tr><tr><td>0.11.x</td><td align="center">√</td></tr></tbody></table><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="java"></a>Java<a class="hash-link" href="#java" title="Direct link to heading">#</a></h2><table><thead><tr><th>JDK Version</th><th align="center">Support?</th></tr></thead><tbody><tr><td>8</td><td align="center">√</td></tr><tr><td>11</td><td align="center">X</td></tr><tr><td>17</td><td align="center">X</td></tr></tbody></table><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="maven"></a>Maven<a class="hash-link" href="#maven" title="Direct link to heading">#</a></h2><ul><li>3.3 or later ( &lt; 3.8.1 )</li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="docker"></a>Docker<a class="hash-link" href="#docker" title="Direct link to heading">#</a></h2><ul><li>Latest</li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="helm"></a>Helm<a class="hash-link" href="#helm" title="Direct link to heading">#</a></h2><ul><li>Version 3</li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="nodejs"></a>NodeJS<a class="hash-link" href="#nodejs" title="Direct link to heading">#</a></h2><ul><li>14 (or later)</li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="go"></a>Go<a class="hash-link" href="#go" title="Direct link to heading">#</a></h2><table><thead><tr><th>Go Version</th><th align="center">Support?</th></tr></thead><tbody><tr><td>1.15</td><td align="center">X</td></tr><tr><td>1.16</td><td align="center">√</td></tr><tr><td>1.17 (or later)</td><td align="center">To be verified</td></tr></tbody></table><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="python"></a>Python<a class="hash-link" href="#python" title="Direct link to heading">#</a></h2><table><thead><tr><th>Python Version</th><th align="center">Support?</th></tr></thead><tbody><tr><td>3.5 (or earlier)</td><td align="center">X</td></tr><tr><td>3.6, 3.7</td><td align="center">√</td></tr><tr><td>3.8 (or later)</td><td align="center">To be verified</td></tr></tbody></table></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/devDocs/Dependencies.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/next/devDocs/README"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Project Architecture</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/next/devDocs/BuildFromCode"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">How to Build Submarine »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#kubernetes" class="table-of-contents__link">Kubernetes</a></li><li><a href="#kind" class="table-of-contents__link">KinD</a></li><li><a href="#java" class="table-of-contents__link">Java</a></li><li><a href="#maven" class="table-of-contents__link">Maven</a></li><li><a href="#docker" class="table-of-contents__link">Docker</a></li><li><a href="#helm" class="table-of-contents__link">Helm</a></li><li><a href="#nodejs" class="table-of-contents__link">NodeJS</a></li><li><a href="#go" class="table-of-contents__link">Go</a></li><li><a href="#python" class="table-of-contents__link">Python</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/72f8d982.4335d80b.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/935f2afb.9989d552.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/72f8d982.94fda3b2.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/next/devDocs/Development/index.html b/docs/next/devDocs/Development/index.html
index e4fcac1..9b10b38 100644
--- a/docs/next/devDocs/Development/index.html
+++ b/docs/next/devDocs/Development/index.html
@@ -6,35 +6,35 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Development Guide | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="Development Guide | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/devDocs/Development"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/devDocs/Development"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/897bc7ae.6ef86c17.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/935f2afb.9989d552.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/897bc7ae.a705558a.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/devDocs/Development">master 🏃</a></li><li><a class="dropdown__link" href="/docs/devDocs/Development">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/devDocs/Development">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/devDocs/Development">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Administrator Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine on Yarn</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/adminDocs/yarn/README">Running Submarine on YARN (deprecated)</a></li></ul></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/devDocs/Development">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Development Guide</h1></header><div class="markdown"><h1><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="project-overview"></a>Project Overview<a class="hash-link" href="#project-overview" title="Direct link to heading">#</a></h1><p>The document <a href="/docs/next/">Submarine Local Deployment</a> shows how to deploy the Submarine service to your Kubernetes cluster. The Submarine service consists mainly of nine components, and you can check them with the following command:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">kubectl get pods -n ${your_namespace}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>A brief introduction about these components:</p><ol><li><strong>tf-operator</strong>: Enable users to run TensorFlow jobs distributedly</li><li><strong>pytorch-operator</strong>: Enable users to run PyTorch jobs distributedly</li><li><strong>notebook-controller</strong>: Jupyter Notebook controller</li><li><strong>submarine-traefik</strong>: Kubernetes Ingress controller</li><li><strong>submarine-database</strong>: A MySQL database to store metadata</li><li><strong>submarine-minio</strong>: An object store for machine learning artifacts</li><li><strong>submarine-mlflow</strong>: A platform for model management</li><li><strong>submarine-tensorboard</strong>: A visualization tool for distributed training experiments</li><li><strong>submarine-server</strong>: Handle API requests, and submit distributed training experiments to Kubernetes.</li></ol><h1><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="submarine-development"></a>Submarine Development<a class="hash-link" href="#submarine-development" title="Direct link to heading">#</a></h1><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="video"></a>Video<a class="hash-link" href="#video" title="Direct link to heading">#</a></h2><ul><li>From this <a href="https://youtu.be/32Na2k6Alv4" target="_blank" rel="noopener noreferrer">Video</a>, you will know how to deal with the configuration of Submarine and be able to contribute to it via Github.</li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="develop-server"></a>Develop server<a class="hash-link" href="#develop-server" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="prerequisites"></a>Prerequisites<a class="hash-link" href="#prerequisites" title="Direct link to heading">#</a></h3><ul><li>JDK 1.8</li><li>Maven 3.3 or later ( &lt; 3.8.1 )</li><li>Docker</li></ul><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="setting-up-checkstyle-in-ide"></a>Setting up checkstyle in IDE<a class="hash-link" href="#setting-up-checkstyle-in-ide" title="Direct link to heading">#</a></h3><p>Checkstyle plugin may help to detect violations directly from the IDE.</p><ol><li>Install Checkstyle+IDEA plugin from <code>Preference</code> -&gt; <code>Plugins</code></li><li>Open <code>Preference</code> -&gt; <code>Tools</code> -&gt; <code>Checkstyle</code><ol><li>Set Checkstyle version:<ul><li>Checkstyle version: 8.0</li></ul></li><li>Add (+) a new Configuration File<ul><li>Description: Submarine</li><li>Use a local checkstyle <code>${SUBMARINE_HOME}/dev-support/maven-config/checkstyle.xml</code></li></ul></li></ol></li><li>Open the Checkstyle Tool Window, select the Submarine rule and execute the check</li></ol><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="testing"></a>Testing<a class="hash-link" href="#testing" title="Direct link to heading">#</a></h3><ul><li><p>Unit Test</p><p>For each class, there is a corresponding testClass. For example, <code>SubmarineServerTest</code> is used for testing <code>SubmarineServer</code>. Whenever you add a funtion in classes, you must write a unit test to test it.</p></li><li><p>Integration Test: <a href="/docs/next/devDocs/IntegrationTestK8s">IntegrationTestK8s.md</a></p></li></ul><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="build-from-source"></a>Build from source<a class="hash-link" href="#build-from-source" title="Direct link to heading">#</a></h3><ul><li><p>Before building</p><ol><li>We assume the developer use <strong>minikube</strong> as a local kubernetes cluster.</li><li>Make sure you have <strong>installed the submarine helm-chart</strong> in the cluster.</li></ol></li></ul><ol><li><p>Package the Submarine server into a new jar file</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">mvn </span><span class="token function" style="color:rgb(130, 170, 255)">install</span><span class="token plain"> -DskipTests</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></li><li><p>Build the new server docker image in minikube</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># switch to minikube docker daemon to build image directly in minikube</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">eval</span><span class="token plain"> </span><span class="token variable" style="color:rgb(191, 199, 213)">$(</span><span class="token variable" style="color:rgb(191, 199, 213)">minikube docker-env</span><span class="token variable" style="color:rgb(191, 199, 213)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/devDocs/Development">master 🏃</a></li><li><a class="dropdown__link" href="/docs/devDocs/Development">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/devDocs/Development">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/devDocs/Development">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/devDocs/Development">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Development Guide</h1></header><div class="markdown"><h1><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="project-overview"></a>Project Overview<a class="hash-link" href="#project-overview" title="Direct link to heading">#</a></h1><p>The document <a href="/docs/next/">Submarine Local Deployment</a> shows how to deploy the Submarine service to your Kubernetes cluster. The Submarine service consists mainly of nine components, and you can check them with the following command:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">kubectl get pods -n ${your_namespace}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>A brief introduction about these components:</p><ol><li><strong>tf-operator</strong>: Enable users to run TensorFlow jobs distributedly</li><li><strong>pytorch-operator</strong>: Enable users to run PyTorch jobs distributedly</li><li><strong>notebook-controller</strong>: Jupyter Notebook controller</li><li><strong>submarine-traefik</strong>: Kubernetes Ingress controller</li><li><strong>submarine-database</strong>: A MySQL database to store metadata</li><li><strong>submarine-minio</strong>: An object store for machine learning artifacts</li><li><strong>submarine-mlflow</strong>: A platform for model management</li><li><strong>submarine-tensorboard</strong>: A visualization tool for distributed training experiments</li><li><strong>submarine-server</strong>: Handle API requests, and submit distributed training experiments to Kubernetes.</li></ol><h1><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="submarine-development"></a>Submarine Development<a class="hash-link" href="#submarine-development" title="Direct link to heading">#</a></h1><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="video"></a>Video<a class="hash-link" href="#video" title="Direct link to heading">#</a></h2><ul><li>From this <a href="https://youtu.be/32Na2k6Alv4" target="_blank" rel="noopener noreferrer">Video</a>, you will know how to deal with the configuration of Submarine and be able to contribute to it via Github.</li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="develop-server"></a>Develop server<a class="hash-link" href="#develop-server" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="prerequisites"></a>Prerequisites<a class="hash-link" href="#prerequisites" title="Direct link to heading">#</a></h3><ul><li>JDK 1.8</li><li>Maven 3.3 or later ( &lt; 3.8.1 )</li><li>Docker</li></ul><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="setting-up-checkstyle-in-ide"></a>Setting up checkstyle in IDE<a class="hash-link" href="#setting-up-checkstyle-in-ide" title="Direct link to heading">#</a></h3><p>Checkstyle plugin may help to detect violations directly from the IDE.</p><ol><li>Install Checkstyle+IDEA plugin from <code>Preference</code> -&gt; <code>Plugins</code></li><li>Open <code>Preference</code> -&gt; <code>Tools</code> -&gt; <code>Checkstyle</code><ol><li>Set Checkstyle version:<ul><li>Checkstyle version: 8.0</li></ul></li><li>Add (+) a new Configuration File<ul><li>Description: Submarine</li><li>Use a local checkstyle <code>${SUBMARINE_HOME}/dev-support/maven-config/checkstyle.xml</code></li></ul></li></ol></li><li>Open the Checkstyle Tool Window, select the Submarine rule and execute the check</li></ol><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="testing"></a>Testing<a class="hash-link" href="#testing" title="Direct link to heading">#</a></h3><ul><li><p>Unit Test</p><p>For each class, there is a corresponding testClass. For example, <code>SubmarineServerTest</code> is used for testing <code>SubmarineServer</code>. Whenever you add a funtion in classes, you must write a unit test to test it.</p></li><li><p>Integration Test: <a href="/docs/next/devDocs/IntegrationTestK8s">IntegrationTestK8s.md</a></p></li></ul><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="build-from-source"></a>Build from source<a class="hash-link" href="#build-from-source" title="Direct link to heading">#</a></h3><ul><li><p>Before building</p><ol><li>We assume the developer use <strong>minikube</strong> as a local kubernetes cluster.</li><li>Make sure you have <strong>installed the submarine helm-chart</strong> in the cluster.</li></ol></li></ul><ol><li><p>Package the Submarine server into a new jar file</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">mvn </span><span class="token function" style="color:rgb(130, 170, 255)">install</span><span class="token plain"> -DskipTests</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></li><li><p>Build the new server docker image in minikube</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># switch to minikube docker daemon to build image directly in minikube</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">eval</span><span class="token plain"> </span><span class="token variable" style="color:rgb(191, 199, 213)">$(</span><span class="token variable" style="color:rgb(191, 199, 213)">minikube docker-env</span><span class="token variable" style="color:rgb(191, 199, 213)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># run docker build</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">./dev-support/docker-images/submarine/build.sh</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># exit minikube docker daemon</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">eval</span><span class="token plain"> </span><span class="token variable" style="color:rgb(191, 199, 213)">$(</span><span class="token variable" style="color:rgb(191, 199, 213)">minikube docker-env -u</span><span class="token variable" style="color:rgb(191, 199, 213)">)</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></li><li><p>Delete the server deployment and the operator will create a new one using the new image</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">kubectl delete deployment submarine-server</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></li></ol><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="develop-workbench"></a>Develop workbench<a class="hash-link" href="#develop-workbench" title="Direct link to heading">#</a></h2><ol><li><p>Deploy the Submarine</p><p>Follow <a href="/docs/next/">Getting Started/Submarine Local Deployment</a>, and make sure you can connect to <code>http://localhost:32080</code> in the browser.</p></li><li><p>Install the dependencies</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token builtin class-name" style="color:rgb(255, 203, 107)">cd</span><span class="token plain"> submarine-workbench/workbench-web</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token function" style="color:rgb(130, 170, 255)">npm</span><span class="token plain"> </span><span class="token function" style="color:rgb(130, 170, 255)">install</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></li><li><p>Run the workbench based on proxy server</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token function" style="color:rgb(130, 170, 255)">npm</span><span class="token plain"> run start</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><ol><li>The request sent to <code>http://localhost:4200</code> will be redirected to <code>http://localhost:32080</code>.</li><li>Open <code>http://localhost:4200</code> in browser to see the real-time change of workbench.</li></ol></li><li><p>Frontend E2E test: <a href="/docs/next/devDocs/IntegrationTestE2E">IntegrationTestE2E.md</a></p></li></ol><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="develop-database"></a>Develop database<a class="hash-link" href="#develop-database" title="Direct link to heading">#</a></h2><ol><li><p>Build the docker image</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># switch to minikube docker daemon to build image directly in minikube</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">eval</span><span class="token plain"> </span><span class="token variable" style="color:rgb(191, 199, 213)">$(</span><span class="token variable" style="color:rgb(191, 199, 213)">minikube docker-env</span><span class="token variable" style="color:rgb(191, 199, 213)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># run docker build</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">./dev-support/docker-images/database/build.sh</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># exit minikube docker daemon</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">eval</span><span class="token plain"> </span><span class="token variable" style="color:rgb(191, 199, 213)">$(</span><span class="token variable" style="color:rgb(191, 199, 213)">minikube docker-env -u</span><span class="token variable" style="color:rgb(191, 199, 213)">)</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></li><li><p>Deploy new pods in the cluster</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">helm upgrade --set submarine.database.dev</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">true submarine ./helm-charts/submarine</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></li></ol><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="develop-operator"></a>Develop operator<a class="hash-link" href="#develop-operator" title="Direct link to heading">#</a></h2><p>For details, please check out the <a href="https://github.com/apache/submarine/blob/master/submarine-cloud-v2/README.md" target="_blank" rel="noopener noreferrer">README</a> and <a href="https://github.com/apache/submarine/blob/master/submarine-cloud-v2/docs/developer-guide.md" target="_blank" rel="noopener noreferrer">Developer Guide</a> on GitHub.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="develop-submarine-website"></a>Develop Submarine Website<a class="hash-link" href="#develop-submarine-website" title="Direct link to heading">#</a></h2><p>Submarine website is built using <a href="https://v2.docusaurus.io/" target="_blank" rel="noopener noreferrer">Docusaurus 2</a>, a modern static website generator.</p><p>We store all the website content in markdown format in the <code>submarine/website/docs</code>. When committing a new patch to the <code>submarine</code> repo, Docusaurus will help us generate the <code>html</code> and <code>javascript</code> files and push them to  <a href="https://github.com/apache/submarine-site/tree/asf-site" target="_blank" rel="noopener noreferrer">https://github.com/apache/submarine-site/tree/asf-site</a>.</p><p>To update the website, click “Edit this page” on the website.</p><p><img src="https://lh4.googleusercontent.com/gYcKpxbsGAKv2giTRqkxOehPGnuvnhE31WjsAsYhFmACIZF3Wh2ipar7mZ7F_KRwecM-L1J8YJAgNigJsJUjqc-5IXeO2XGxCIcYpP9CdSc3YByuUkjT_Bezby2HHtkBLyE1ZY_F"></p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="add-a-new-page"></a>Add a new page<a class="hash-link" href="#add-a-new-page" title="Direct link to heading">#</a></h3><p>If you want to add a new page to the website, make sure to add the file path to <a href="https://github.com/apache/submarine/blob/master/website/sidebars.js" target="_blank" rel="noopener noreferrer">sidebars.js</a>.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="installation"></a>Installation<a class="hash-link" href="#installation" title="Direct link to heading">#</a></h3><p>We use the yarn package manager to install all dependencies for the website</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-console codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">yarn install</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="build"></a>Build<a class="hash-link" href="#build" title="Direct link to heading">#</a></h3><p>Make sure you can successfully build the website before creating a pull request.</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-console codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">yarn build</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="local-development"></a>Local Development<a class="hash-link" href="#local-development" title="Direct link to heading">#</a></h3><p>This command starts a local development server and open up a browser window. Most changes are reflected live without having to restart the server.</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-console codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">yarn start</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/devDocs/Development.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/next/devDocs/BuildFromCode"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« How to Build Submarine</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/next/devDocs/IntegrationTestK8s"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">How to Run Integration K8s Test »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#video" class="table-of-contents__link">Video</a></li><li><a href="#develop-server" class="table-of-contents__link">Develop server</a><ul><li><a href="#prerequisites" class="table-of-contents__link">Prerequisites</a></li><li><a href="#setting-up-checkstyle-in-ide" class="table-of-contents__link">Setting up checkstyle in IDE</a></li><li><a href="#testing" class="table-of-contents__link">Testing</a></li><li><a href="#build-from-source" class="table-of-contents__link">Build from source</a></li></ul></li><li><a href="#develop-workbench" class="table-of-contents__link">Develop workbench</a></li><li><a href="#develop-database" class="table-of-contents__link">Develop database</a></li><li><a href="#develop-operator" class="table-of-contents__link">Develop operator</a></li><li><a href="#develop-submarine-website" class="table-of-contents__link">Develop Submarine Website</a><ul><li><a href="#add-a-new-page" class="table-of-contents__link">Add a new page</a></li><li><a href="#installation" class="table-of-contents__link">Installation</a></li><li><a href="#build" class="table-of-contents__link">Build</a></li><li><a href="#local-development" class="table-of-contents__link">Local Development</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/897bc7ae.6ef86c17.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/935f2afb.9989d552.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/897bc7ae.a705558a.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/next/devDocs/HowToRelease/index.html b/docs/next/devDocs/HowToRelease/index.html
index 74ab747..d7ecfe2 100644
--- a/docs/next/devDocs/HowToRelease/index.html
+++ b/docs/next/devDocs/HowToRelease/index.html
@@ -6,20 +6,20 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">How to Release | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="How to Release | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/devDocs/HowToRelease"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/devDocs/HowToRelease"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/e2e9fab8.5b60f0b4.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/935f2afb.9989d552.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/e2e9fab8.3f6ab158.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/devDocs/HowToRelease">master 🏃</a></li><li><a class="dropdown__link" href="/docs/">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/devDocs/HowToRelease">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Administrator Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine on Yarn</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/adminDocs/yarn/README">Running Submarine on YARN (deprecated)</a></li></ul></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">How to Release</h1></header><div class="markdown"><blockquote><p>This article mainly introduces how the Release Manager releases a specific version of the project according to the Apache process.</p></blockquote><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="0-preface"></a>0. Preface<a class="hash-link" href="#0-preface" title="Direct link to heading">#</a></h2><p>Source Release is the focus of Apache’s attention and it is also a required content for release. Binary Release is optional, Submarine can choose whether to release the binary package to the Apache warehouse or to the Maven central warehouse.</p><p>Please refer to the following link to find more details about release guidelines:</p><p><a href="https://cwiki.apache.org/confluence/display/SUBMARINE/How+to+release" target="_blank" rel="noopener noreferrer">How to Release</a><br>
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/devDocs/HowToRelease">master 🏃</a></li><li><a class="dropdown__link" href="/docs/">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/devDocs/HowToRelease">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">How to Release</h1></header><div class="markdown"><blockquote><p>This article mainly introduces how the Release Manager releases a specific version of the project according to the Apache process.</p></blockquote><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="0-preface"></a>0. Preface<a class="hash-link" href="#0-preface" title="Direct link to heading">#</a></h2><p>Source Release is the focus of Apache’s attention and it is also a required content for release. Binary Release is optional, Submarine can choose whether to release the binary package to the Apache warehouse or to the Maven central warehouse.</p><p>Please refer to the following link to find more details about release guidelines:</p><p><a href="https://cwiki.apache.org/confluence/display/SUBMARINE/How+to+release" target="_blank" rel="noopener noreferrer">How to Release</a><br>
 <a href="https://cwiki.apache.org/confluence/display/SUBMARINE/Submarine+Release+Guidelines" target="_blank" rel="noopener noreferrer">Submarine Release Guidelines</a></p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="1-add-gpg-key"></a>1. Add GPG KEY<a class="hash-link" href="#1-add-gpg-key" title="Direct link to heading">#</a></h2><blockquote><p>Main references in this chapter:<a href="https://infra.apache.org/openpgp.html" target="_blank" rel="noopener noreferrer">https://infra.apache.org/openpgp.html</a> &gt; <strong>This chapter is only needed for the first release manager of the project.</strong></p></blockquote><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="11-install-gpg"></a>1.1 Install gpg<a class="hash-link" href="#11-install-gpg" title="Direct link to heading">#</a></h3><p>Detailed installation documents can refer to <a href="https://www.gnupg.org/download/index.html" target="_blank" rel="noopener noreferrer">tutorial</a>, The environment configuration of Mac OS is as follows:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-shell codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">$ brew </span><span class="token function" style="color:rgb(130, 170, 255)">install</span><span class="token plain"> gpg</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">$ gpg --version </span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic">#Check the version,should be 2.x</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="12-generate-gpg-key"></a>1.2 generate gpg Key<a class="hash-link" href="#12-generate-gpg-key" title="Direct link to heading">#</a></h3><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="need-to-pay-attention-to-the-following-points:"></a>Need to pay attention to the following points:<a class="hash-link" href="#need-to-pay-attention-to-the-following-points:" title="Direct link to heading">#</a></h4><ul><li>When entering the name, it is better to be consistent with the Full name registered in Apache</li><li>The mailbox used should be apache mailbox</li><li>It’s better to use pinyin or English for the name, otherwise there will be garbled characters</li></ul><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="follow-the-hint,generate-a-key"></a>Follow the hint,generate a key<a class="hash-link" href="#follow-the-hint,generate-a-key" title="Direct link to heading">#</a></h4><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-shell codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">➜  ~ gpg --full-gen-key</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">gpg </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">GnuPG</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">2.2</span><span class="token plain">.20</span><span class="token punctuation" style="color:rgb(199, 146, 234)">;</span><span class="token plain"> Copyright </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">C</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">2020</span><span class="token plain"> Free Software Foundation, Inc.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">This is </span><span class="token function" style="color:rgb(130, 170, 255)">free</span><span class="token plain"> software: you are </span><span class="token function" style="color:rgb(130, 170, 255)">free</span><span class="token plain"> to change and redistribute it.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">There is NO WARRANTY, to the extent permitted by law.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Please </span><span class="token keyword" style="font-style:italic">select</span><span class="token plain"> what kind of key you want:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> RSA and RSA </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">default</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token number" style="color:rgb(247, 140, 108)">2</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> DSA and Elgamal</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token number" style="color:rgb(247, 140, 108)">3</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> DSA </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">sign only</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token number" style="color:rgb(247, 140, 108)">4</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> RSA </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">sign only</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token number" style="color:rgb(247, 140, 108)">14</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> Existing key from card</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Your selection? </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token plain"> </span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># enter 1 here</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">RSA keys may be between </span><span class="token number" style="color:rgb(247, 140, 108)">1024</span><span class="token plain"> and </span><span class="token number" style="color:rgb(247, 140, 108)">4096</span><span class="token plain"> bits long.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">What keysize </span><span class="token keyword" style="font-style:italic">do</span><span class="token plain"> you want? </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token number" style="color:rgb(247, 140, 108)">2048</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">4096</span><span class="token plain"> </span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># enter 4096 here</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Requested keysize is </span><span class="token number" style="color:rgb(247, 140, 108)">4096</span><span class="token plain"> bits</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Please specify how long the key should be valid.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token number" style="color:rgb(247, 140, 108)">0</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> key does not expire</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token operator" style="color:rgb(137, 221, 255)">&lt;</span><span class="token plain">n</span><span class="token operator" style="color:rgb(137, 221, 255)">&gt;</span><span class="token plain">  </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> key expires </span><span class="token keyword" style="font-style:italic">in</span><span class="token plain"> n days</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token operator" style="color:rgb(137, 221, 255)">&lt;</span><span class="token plain">n</span><span class="token operator" style="color:rgb(137, 221, 255)">&gt;</span><span class="token plain">w </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> key expires </span><span class="token keyword" style="font-style:italic">in</span><span class="token plain"> n weeks</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token operator" style="color:rgb(137, 221, 255)">&lt;</span><span class="token plain">n</span><span class="token operator" style="color:rgb(137, 221, 255)">&gt;</span><span class="token plain">m </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> key expires </span><span class="token keyword" style="font-style:italic">in</span><span class="token plain"> n months</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token operator" style="color:rgb(137, 221, 255)">&lt;</span><span class="token plain">n</span><span class="token operator" style="color:rgb(137, 221, 255)">&gt;</span><span class="token plain">y </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> key expires </span><span class="token keyword" style="font-style:italic">in</span><span class="token plain"> n years</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Key is valid for? </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token number" style="color:rgb(247, 140, 108)">0</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">0</span><span class="token plain"> </span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># enter 0 here</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Key does not expire at all</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Is this correct? </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">y/N</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> y </span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># enter y here</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">GnuPG needs to construct a user ID to identify your key.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
@@ -66,15 +66,15 @@
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">BR,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">XXXX</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/devDocs/HowToRelease.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/next/devDocs/IntegrationTestE2E"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« How to Run Frontend Integration Test</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/next/devDocs/HowToVerify"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">How to Verify »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#0-preface" class="table-of-contents__link">0. Preface</a></li><li><a href="#1-add-gpg-key" class="table-of-contents__link">1. Add GPG KEY</a><ul><li><a href="#11-install-gpg" class="table-of-contents__link">1.1 Install gpg</a></li><li><a href="#12-generate-gpg-key" class="table-of-contents__link">1.2 generate gpg Key</a></li><li><a href="#13-upload-the-generated-key-to-the-public-server" class="table-of-contents__link">1.3 Upload the generated key to the public server</a></li><li><a href="#14-check-whether-the-key-is-created-successfully" class="table-of-contents__link">1.4 Check whether the key is created successfully</a></li><li><a href="#15-add-your-gpg-public-key-to-the-keys-file" class="table-of-contents__link">1.5 Add your gpg public key to the KEYS file</a></li><li><a href="#16-upload-gpg-public-key-to-github-account" class="table-of-contents__link">1.6 Upload GPG public key to Github account</a></li></ul></li><li><a href="#2-set-maven-settings" class="table-of-contents__link">2. Set maven settings</a></li><li><a href="#3-compile-and-package" class="table-of-contents__link">3. Compile and package</a><ul><li><a href="#31-prepare-a-branch" class="table-of-contents__link">3.1 Prepare a branch</a></li><li><a href="#32-create-the-tag" class="table-of-contents__link">3.2 Create the tag</a></li><li><a href="#33-package-the-source-code" class="table-of-contents__link">3.3 Package the source code</a></li><li><a href="#34-packaged-binary-package" class="table-of-contents__link">3.4 Packaged binary package</a></li><li><a href="#35-sign-the-source-packagebinary-packagesha512" class="table-of-contents__link">3.5 Sign the source package/binary package/sha512</a></li><li><a href="#36-check-whether-the-generated-signaturesha512-is-correct" class="table-of-contents__link">3.6 Check whether the generated signature/sha512 is correct</a></li></ul></li><li><a href="#4-prepare-for-apache-release" class="table-of-contents__link">4. Prepare for Apache release</a><ul><li><a href="#41-publish-the-jar-package-to-the-apache-nexus-repository" class="table-of-contents__link">4.1 Publish the jar package to the Apache Nexus repository</a></li><li><a href="#42-upload-the-tag-to-git-repository" class="table-of-contents__link">4.2 Upload the tag to git repository</a></li><li><a href="#43-upload-the-compiled-file-to-dist" class="table-of-contents__link">4.3 Upload the compiled file to dist</a></li><li><a href="#431-checkout-submarine-to-a-local-directory" class="table-of-contents__link">4.3.1 Checkout Submarine to a local directory</a></li><li><a href="#432-add-the-public-key-to-the-keys-file-and-submit-it-to-the-svn-repository" class="table-of-contents__link">4.3.2 Add the public key to the KEYS file and submit it to the SVN repository</a></li><li><a href="#44-shut-down-the-apache-staging-repository" class="table-of-contents__link">4.4 Shut down the Apache Staging repository</a></li></ul></li><li><a href="#5-enter-voting" class="table-of-contents__link">5. Enter voting</a><ul><li><a href="#vote-in-the-submarine-community" class="table-of-contents__link">Vote in the Submarine community</a></li></ul></li><li><a href="#6-officially-released" class="table-of-contents__link">6. Officially released</a><ul><li><a href="#61-merge-the-changes-from-the-release-release_version-branch-to-the-master-branch" class="table-of-contents__link">6.1 Merge the changes from the release-${release_version} branch to the master branch</a></li><li><a href="#62-release-the-version-in-the-apache-staging-repository" class="table-of-contents__link">6.2 Release the version in the Apache Staging repository</a></li><li><a href="#63-update-official-website-link" class="table-of-contents__link">6.3 Update official website link</a></li><li><a href="#64-send-an-email-todevsubmarineapacheorg" class="table-of-contents__link">6.4. Send an email to<code>dev@submarine.apache.org</code></a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/e2e9fab8.5b60f0b4.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/935f2afb.9989d552.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/e2e9fab8.3f6ab158.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/next/devDocs/HowToVerify/index.html b/docs/next/devDocs/HowToVerify/index.html
index 084c501..58ece29 100644
--- a/docs/next/devDocs/HowToVerify/index.html
+++ b/docs/next/devDocs/HowToVerify/index.html
@@ -6,20 +6,20 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">How to Verify | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="How to Verify | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/devDocs/HowToVerify"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/devDocs/HowToVerify"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/6e852da3.f08b6255.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/935f2afb.9989d552.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/6e852da3.f63caf76.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/devDocs/HowToVerify">master 🏃</a></li><li><a class="dropdown__link" href="/docs/">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/devDocs/HowToVerify">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Administrator Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine on Yarn</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/adminDocs/yarn/README">Running Submarine on YARN (deprecated)</a></li></ul></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">How to Verify</h1></header><div class="markdown"><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="verification-of-the-release-candidate"></a>Verification of the release candidate<a class="hash-link" href="#verification-of-the-release-candidate" title="Direct link to heading">#</a></h3><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="1-download-the-candidate-version-to-be-released-to-the-local-environment"></a>1. Download the candidate version to be released to the local environment<a class="hash-link" href="#1-download-the-candidate-version-to-be-released-to-the-local-environment" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-shell codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">svn co https://dist.apache.org/repos/dist/dev/submarine/</span><span class="token variable" style="color:rgb(191, 199, 213)">${release_version}</span><span class="token plain">-</span><span class="token variable" style="color:rgb(191, 199, 213)">${rc_version}</span><span class="token plain">/</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="2-verify-whether-the-uploaded-version-is-compliant"></a>2. Verify whether the uploaded version is compliant<a class="hash-link" href="#2-verify-whether-the-uploaded-version-is-compliant" title="Direct link to heading">#</a></h2><blockquote><p>Begin the verification process, which includes but is not limited to the following content and forms.</p></blockquote><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="21-check-if-the-release-package-is-complete"></a>2.1 Check if the release package is complete<a class="hash-link" href="#21-check-if-the-release-package-is-complete" title="Direct link to heading">#</a></h3><blockquote><p>The package uploaded to dist must include the source code package, and the binary package is optional.</p></blockquote><ol><li>Whether it includes the source code package.</li><li>Whether it includes the signature of the source code package.</li><li>Whether it includes the sha512 of the source code package.</li><li>If the binary package is uploaded, also check the contents listed in (2)-(4).</li></ol><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="22-check-gpg-signature"></a>2.2 Check gpg signature<a class="hash-link" href="#22-check-gpg-signature" title="Direct link to heading">#</a></h3><ul><li>Import the public key</li></ul><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-shell codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token function" style="color:rgb(130, 170, 255)">curl</span><span class="token plain"> https://dist.apache.org/repos/dist/dev/submarine/KEYS </span><span class="token operator" style="color:rgb(137, 221, 255)">&gt;</span><span class="token plain"> KEYS </span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Download KEYS</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">gpg --import KEYS </span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Import KEYS to local</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><ul><li>Trust the public key<blockquote><p>Trust the KEY used in this version.</p></blockquote></li></ul><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">  gpg --edit-key xxxxxxxxxx # The KEY used in this version</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  gpg (GnuPG) 2.2.21; Copyright (C) 2020 Free Software Foundation, Inc.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  This is free software: you are free to change and redistribute it.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  There is NO WARRANTY, to the extent permitted by law.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/devDocs/HowToVerify">master 🏃</a></li><li><a class="dropdown__link" href="/docs/">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/devDocs/HowToVerify">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">How to Verify</h1></header><div class="markdown"><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="verification-of-the-release-candidate"></a>Verification of the release candidate<a class="hash-link" href="#verification-of-the-release-candidate" title="Direct link to heading">#</a></h3><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="1-download-the-candidate-version-to-be-released-to-the-local-environment"></a>1. Download the candidate version to be released to the local environment<a class="hash-link" href="#1-download-the-candidate-version-to-be-released-to-the-local-environment" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-shell codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">svn co https://dist.apache.org/repos/dist/dev/submarine/</span><span class="token variable" style="color:rgb(191, 199, 213)">${release_version}</span><span class="token plain">-</span><span class="token variable" style="color:rgb(191, 199, 213)">${rc_version}</span><span class="token plain">/</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="2-verify-whether-the-uploaded-version-is-compliant"></a>2. Verify whether the uploaded version is compliant<a class="hash-link" href="#2-verify-whether-the-uploaded-version-is-compliant" title="Direct link to heading">#</a></h2><blockquote><p>Begin the verification process, which includes but is not limited to the following content and forms.</p></blockquote><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="21-check-if-the-release-package-is-complete"></a>2.1 Check if the release package is complete<a class="hash-link" href="#21-check-if-the-release-package-is-complete" title="Direct link to heading">#</a></h3><blockquote><p>The package uploaded to dist must include the source code package, and the binary package is optional.</p></blockquote><ol><li>Whether it includes the source code package.</li><li>Whether it includes the signature of the source code package.</li><li>Whether it includes the sha512 of the source code package.</li><li>If the binary package is uploaded, also check the contents listed in (2)-(4).</li></ol><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="22-check-gpg-signature"></a>2.2 Check gpg signature<a class="hash-link" href="#22-check-gpg-signature" title="Direct link to heading">#</a></h3><ul><li>Import the public key</li></ul><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-shell codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token function" style="color:rgb(130, 170, 255)">curl</span><span class="token plain"> https://dist.apache.org/repos/dist/dev/submarine/KEYS </span><span class="token operator" style="color:rgb(137, 221, 255)">&gt;</span><span class="token plain"> KEYS </span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Download KEYS</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">gpg --import KEYS </span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Import KEYS to local</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><ul><li>Trust the public key<blockquote><p>Trust the KEY used in this version.</p></blockquote></li></ul><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">  gpg --edit-key xxxxxxxxxx # The KEY used in this version</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  gpg (GnuPG) 2.2.21; Copyright (C) 2020 Free Software Foundation, Inc.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  This is free software: you are free to change and redistribute it.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  There is NO WARRANTY, to the extent permitted by law.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  Secret key is available.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  sec  rsa4096/5EF3A66D57EC647A</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       created: 2020-05-19  expires: never       usage: SC</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       trust: ultimate      validity: ultimate</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  ssb  rsa4096/17628566FEED6AF7</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       created: 2020-05-19  expires: never       usage: E</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  [ultimate] (1). XXX YYYZZZ &lt;yourAccount@apache.org&gt;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  gpg&gt; trust</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  sec  rsa4096/5EF3A66D57EC647A</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       created: 2020-05-19  expires: never       usage: SC</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       trust: ultimate      validity: ultimate</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  ssb  rsa4096/17628566FEED6AF7</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       created: 2020-05-19  expires: never       usage: E</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  [ultimate] (1). XXX YYYZZZ &lt;yourAccount@apache.org&gt;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
@@ -31,15 +31,15 @@
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  sec  rsa4096/5EF3A66D57EC647A</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       created: 2020-05-19  expires: never       usage: SC</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       trust: ultimate      validity: ultimate</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  ssb  rsa4096/17628566FEED6AF7</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       created: 2020-05-19  expires: never       usage: E</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  [ultimate] (1). XXX YYYZZZ &lt;yourAccount@apache.org&gt;</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><ul><li>Use the following command to check the signature.</li></ul><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-shell codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token keyword" style="font-style:italic">for</span><span class="token plain"> </span><span class="token for-or-select variable" style="color:rgb(191, 199, 213)">i</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">in</span><span class="token plain"> *.tar.gz</span><span class="token punctuation" style="color:rgb(199, 146, 234)">;</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">do</span><span class="token plain"> </span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">echo</span><span class="token plain"> </span><span class="token variable" style="color:rgb(191, 199, 213)">$i</span><span class="token punctuation" style="color:rgb(199, 146, 234)">;</span><span class="token plain"> gpg --verify </span><span class="token variable" style="color:rgb(191, 199, 213)">$i</span><span class="token plain">.asc </span><span class="token variable" style="color:rgb(191, 199, 213)">$i</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">;</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">done</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic">#Or</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">gpg --verify apache-submarine-</span><span class="token variable" style="color:rgb(191, 199, 213)">${release_version}</span><span class="token plain">-src.tar.gz.asc apache-submarine-</span><span class="token variable" style="color:rgb(191, 199, 213)">${release_version}</span><span class="token plain">-src.tar.gz</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># If you upload a binary package, you also need to check whether the signature of the binary package is correct.</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">gpg --verify apache-submarine-server-</span><span class="token variable" style="color:rgb(191, 199, 213)">${release_version}</span><span class="token plain">-bin.tar.gz.asc apache-submarine-server-</span><span class="token variable" style="color:rgb(191, 199, 213)">${release_version}</span><span class="token plain">-bin.tar.gz</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">gpg --verify apache-submarine-client-</span><span class="token variable" style="color:rgb(191, 199, 213)">${release_version}</span><span class="token plain">-bin.tar.gz.asc apache-submarine-client-</span><span class="token variable" style="color:rgb(191, 199, 213)">${release_version}</span><span class="token plain">-bin.tar.gz</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><ul><li>Check the result<blockquote><p>If something like the following appears, it means that the signature is correct. The keyword:<strong><code>Good signature</code></strong></p></blockquote></li></ul><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-shell codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">apache-submarine-</span><span class="token variable" style="color:rgb(191, 199, 213)">${release_version}</span><span class="token plain">-src.tar.gz</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">gpg: Signature made Sat May </span><span class="token number" style="color:rgb(247, 140, 108)">30</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">11</span><span class="token plain">:45:01 </span><span class="token number" style="color:rgb(247, 140, 108)">2020</span><span class="token plain"> CST</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">gpg:                using RSA key 9B12C2228BDFF4F4CFE849445EF3A66D57EC647A</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">gpg: Good signature from </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;XXX YYYZZZ &lt;yourAccount@apache.org&gt;&quot;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain">ultimate</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain">gular2</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="23-check-sha512-hash"></a>2.3 Check sha512 hash<a class="hash-link" href="#23-check-sha512-hash" title="Direct link to heading">#</a></h3><blockquote><p>After calculating the sha512 hash locally, verify whether it is consistent with the one on dist.</p></blockquote><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-shell codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token keyword" style="font-style:italic">for</span><span class="token plain"> </span><span class="token for-or-select variable" style="color:rgb(191, 199, 213)">i</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">in</span><span class="token plain"> *.tar.gz</span><span class="token punctuation" style="color:rgb(199, 146, 234)">;</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">do</span><span class="token plain"> </span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">echo</span><span class="token plain"> </span><span class="token variable" style="color:rgb(191, 199, 213)">$i</span><span class="token punctuation" style="color:rgb(199, 146, 234)">;</span><span class="token plain"> gpg --print-md SHA512 </span><span class="token variable" style="color:rgb(191, 199, 213)">$i</span><span class="token punctuation" style="color:rgb(199, 146, 234)">;</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">done</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic">#Or</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">gpg --print-md SHA512 apache-submarine-</span><span class="token variable" style="color:rgb(191, 199, 213)">${release_version}</span><span class="token plain">-src.tar.gz</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># If you upload a binary package, you also need to check the sha512 hash of the binary package.</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">gpg --print-md SHA512 apache-submarine-server-</span><span class="token variable" style="color:rgb(191, 199, 213)">${release_version}</span><span class="token plain">-bin.tar.gz</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">gpg --print-md SHA512 apache-submarine-client-</span><span class="token variable" style="color:rgb(191, 199, 213)">${release_version}</span><span class="token plain">-bin.tar.gz</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># 或者</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token keyword" style="font-style:italic">for</span><span class="token plain"> </span><span class="token for-or-select variable" style="color:rgb(191, 199, 213)">i</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">in</span><span class="token plain"> *.tar.gz.sha512</span><span class="token punctuation" style="color:rgb(199, 146, 234)">;</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">do</span><span class="token plain"> </span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">echo</span><span class="token plain"> </span><span class="token variable" style="color:rgb(191, 199, 213)">$i</span><span class="token punctuation" style="color:rgb(199, 146, 234)">;</span><span class="token plain"> sha512sum -c </span><span class="token variable" style="color:rgb(191, 199, 213)">$i</span><span class="token punctuation" style="color:rgb(199, 146, 234)">;</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">done</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="24-check-the-file-content-of-the-source-package"></a>2.4. Check the file content of the source package.<a class="hash-link" href="#24-check-the-file-content-of-the-source-package" title="Direct link to heading">#</a></h3><p>Unzip <code>apache-submarine-${release_version}-src.tar.gz</code> and check as follows:</p><ul><li>Whether the DISCLAIMER file exists and whether the content is correct.</li><li>Whether the LICENSE and NOTICE file exists and whether the content is correct.</li><li>Whether all files have ASF License header.</li><li>Whether the source code can be compiled normally.</li><li>Whether the single test is passed.</li><li>....</li></ul><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="25-check-the-binary-package-if-the-binary-package-is-uploaded"></a>2.5 Check the binary package (if the binary package is uploaded)<a class="hash-link" href="#25-check-the-binary-package-if-the-binary-package-is-uploaded" title="Direct link to heading">#</a></h3><p>Unzip <code>apache-submarine-client-${release_version}-src.tar.gz</code> and <code> apache-submarine-server-${release_version}-src.tar.gz</code>, then check as follows:</p><ul><li>Whether the DISCLAIMER file exists and whether the content is correct.</li><li>Whether the LICENSE and the NOTICE file exists and whether the content is correct.</li><li>Whether the deployment is successful.</li><li>Deploy a test environment to verify whether production and consumption can run normally.</li><li>Verify what you think might go wrong.</li></ul></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/devDocs/HowToVerify.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/next/devDocs/HowToRelease"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« How to Release</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/next/community/README"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Apache Submarine Community »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#verification-of-the-release-candidate" class="table-of-contents__link">Verification of the release candidate</a></li><li><a href="#1-download-the-candidate-version-to-be-released-to-the-local-environment" class="table-of-contents__link">1. Download the candidate version to be released to the local environment</a></li><li><a href="#2-verify-whether-the-uploaded-version-is-compliant" class="table-of-contents__link">2. Verify whether the uploaded version is compliant</a><ul><li><a href="#21-check-if-the-release-package-is-complete" class="table-of-contents__link">2.1 Check if the release package is complete</a></li><li><a href="#22-check-gpg-signature" class="table-of-contents__link">2.2 Check gpg signature</a></li><li><a href="#23-check-sha512-hash" class="table-of-contents__link">2.3 Check sha512 hash</a></li><li><a href="#24-check-the-file-content-of-the-source-package" class="table-of-contents__link">2.4. Check the file content of the source package.</a></li><li><a href="#25-check-the-binary-package-if-the-binary-package-is-uploaded" class="table-of-contents__link">2.5 Check the binary package (if the binary package is uploaded)</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/6e852da3.f08b6255.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/935f2afb.9989d552.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/6e852da3.f63caf76.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/next/devDocs/IntegrationTestE2E/index.html b/docs/next/devDocs/IntegrationTestE2E/index.html
index fcf4e90..e30c2e5 100644
--- a/docs/next/devDocs/IntegrationTestE2E/index.html
+++ b/docs/next/devDocs/IntegrationTestE2E/index.html
@@ -6,33 +6,33 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">How to Run Frontend Integration Test | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="How to Run Frontend Integration Test | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!---"><meta data-react-helmet="true" property="og:description" content="&lt;!---"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/devDocs/IntegrationTestE2E"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/devDocs/IntegrationTestE2E"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/b9b5b6b9.3e5f870a.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/935f2afb.9989d552.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/b9b5b6b9.6ed1638f.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/devDocs/IntegrationTestE2E">master 🏃</a></li><li><a class="dropdown__link" href="/docs/devDocs/IntegrationTestE2E">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/devDocs/IntegrationTestE2E">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/devDocs/IntegrationTestE2E">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Administrator Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine on Yarn</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/adminDocs/yarn/README">Running Submarine on YARN (deprecated)</a></li></ul></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/devDocs/IntegrationTestE2E">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">How to Run Frontend Integration Test</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="introduction"></a>Introduction<a class="hash-link" href="#introduction" title="Direct link to heading">#</a></h2><ul><li><p>The test cases under the directory <a href="https://github.com/apache/submarine/tree/master/submarine-test/test-e2e/src/test/java/org/apache/submarine/integration" target="_blank" rel="noopener noreferrer">test-e2e</a> are integration tests to ensure the correctness of the Submarine Workbench.</p></li><li><p>These test cases can be run either locally or on GitHub Actions.</p></li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="run-e2e-test-locally"></a>Run E2E test locally<a class="hash-link" href="#run-e2e-test-locally" title="Direct link to heading">#</a></h2><ol><li><p>Ensure you have setup the submarine locally. If not, you can refer to <code>Submarine Local Deployment</code>.</p></li><li><p>Forward port</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">kubectl port-forward --address </span><span class="token number" style="color:rgb(247, 140, 108)">0.0</span><span class="token plain">.0.0 service/submarine-traefik </span><span class="token number" style="color:rgb(247, 140, 108)">32080</span><span class="token plain">:80</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></li><li><p>Modify run_frontend_e2e.sh</p><p> You need to modify the port and the URL in this script to where you run the workbench on.</p><blockquote><p>Example:
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/devDocs/IntegrationTestE2E">master 🏃</a></li><li><a class="dropdown__link" href="/docs/devDocs/IntegrationTestE2E">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/devDocs/IntegrationTestE2E">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/devDocs/IntegrationTestE2E">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/devDocs/IntegrationTestE2E">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">How to Run Frontend Integration Test</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="introduction"></a>Introduction<a class="hash-link" href="#introduction" title="Direct link to heading">#</a></h2><ul><li><p>The test cases under the directory <a href="https://github.com/apache/submarine/tree/master/submarine-test/test-e2e/src/test/java/org/apache/submarine/integration" target="_blank" rel="noopener noreferrer">test-e2e</a> are integration tests to ensure the correctness of the Submarine Workbench.</p></li><li><p>These test cases can be run either locally or on GitHub Actions.</p></li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="run-e2e-test-locally"></a>Run E2E test locally<a class="hash-link" href="#run-e2e-test-locally" title="Direct link to heading">#</a></h2><ol><li><p>Ensure you have setup the submarine locally. If not, you can refer to <code>Submarine Local Deployment</code>.</p></li><li><p>Forward port</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">kubectl port-forward --address </span><span class="token number" style="color:rgb(247, 140, 108)">0.0</span><span class="token plain">.0.0 service/submarine-traefik </span><span class="token number" style="color:rgb(247, 140, 108)">32080</span><span class="token plain">:80</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></li><li><p>Modify run_frontend_e2e.sh</p><p> You need to modify the port and the URL in this script to where you run the workbench on.</p><blockquote><p>Example:
 If your Submarine workbench is running on 127.0.0.1:4200, you should modify the <strong>WORKBENCH_PORT</strong> to 4200.</p></blockquote><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># at submarine-test/test_e2e/run_frontend_e2e.sh</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">..</span><span class="token plain">.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># ======= Modifiable Variables ======= #</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Note: URL must start with &quot;http&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># (Ref: https://www.selenium.dev/selenium/docs/api/java/org/openqa/selenium/WebDriver.html#get(java.lang.String))</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">WORKBENCH_PORT</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token number" style="color:rgb(247, 140, 108)">8080</span><span class="token plain"> </span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic">#&lt;= modify this</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">URL</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;http://127.0.0.1&quot;</span><span class="token plain"> </span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic">#&lt;=modify this</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># ==================================== #</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">..</span><span class="token plain">.</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></li><li><p>Run <code>run_frontend_e2e.sh</code> (Run a specific test case)</p><p>This script will check whether the port can be accessed or not, and run the test case.</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># at submarine-test/test_e2e</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">./run_fronted_e2e.sh </span><span class="token variable" style="color:rgb(191, 199, 213)">${TESTCASE}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># TESTCASE is the IT you want to run, ex: loginIT, experimentIT...</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></li><li><p>Run all test cases</p></li></ol><ul><li><p>Following commands will compile all files and run all files ending with &quot;IT&quot; in the <a href="https://github.com/apache/submarine/tree/master/submarine-test/test-e2e/src/test/java/org/apache/submarine/integration" target="_blank" rel="noopener noreferrer">directory</a>.</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Make sure the Submarine workbench is running on 127.0.0.1:8080</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">cd</span><span class="token plain"> submarine/submarine-test/test-e2e</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Method 1:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">mvn verify</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Method 2:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">mvn clean </span><span class="token function" style="color:rgb(130, 170, 255)">install</span><span class="token plain"> -U</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="run-e2e-test-in-github-actions"></a>Run E2E test in GitHub Actions<a class="hash-link" href="#run-e2e-test-in-github-actions" title="Direct link to heading">#</a></h2><ul><li>Each time a commit is pushed, GitHub Actions will be triggered automatically.</li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="add-a-new-frontend-e2e-test-case"></a>Add a new frontend E2E test case<a class="hash-link" href="#add-a-new-frontend-e2e-test-case" title="Direct link to heading">#</a></h2><ul><li><strong>WARNING</strong><ul><li>You <strong>MUST</strong> read the <a href="https://www.selenium.dev/documentation/en/webdriver/waits/" target="_blank" rel="noopener noreferrer">document</a> carefully, and understand the difference between <strong>explicit wait</strong>, <strong>implicit wait</strong>, and <strong>fluent wait</strong>.</li><li><strong>Do not mix implicit and explicit waits.</strong> Doing so can cause unpredictable wait times.</li></ul></li><li>We define many useful functions in <a href="https://github.com/apache/submarine/blob/master/submarine-test/test-e2e/src/test/java/org/apache/submarine/AbstractSubmarineIT.java" target="_blank" rel="noopener noreferrer">AbstractSubmarineIT.java</a>.</li></ul></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/devDocs/IntegrationTestE2E.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/next/devDocs/IntegrationTestK8s"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« How to Run Integration K8s Test</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/next/devDocs/HowToRelease"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">How to Release »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#introduction" class="table-of-contents__link">Introduction</a></li><li><a href="#run-e2e-test-locally" class="table-of-contents__link">Run E2E test locally</a></li><li><a href="#run-e2e-test-in-github-actions" class="table-of-contents__link">Run E2E test in GitHub Actions</a></li><li><a href="#add-a-new-frontend-e2e-test-case" class="table-of-contents__link">Add a new frontend E2E test case</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/b9b5b6b9.3e5f870a.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/935f2afb.9989d552.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/b9b5b6b9.6ed1638f.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/next/devDocs/IntegrationTestK8s/index.html b/docs/next/devDocs/IntegrationTestK8s/index.html
index 3449ddb..d12b3dc 100644
--- a/docs/next/devDocs/IntegrationTestK8s/index.html
+++ b/docs/next/devDocs/IntegrationTestK8s/index.html
@@ -6,31 +6,31 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">How to Run Integration K8s Test | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="How to Run Integration K8s Test | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!---"><meta data-react-helmet="true" property="og:description" content="&lt;!---"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/devDocs/IntegrationTestK8s"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/devDocs/IntegrationTestK8s"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/b3da5595.2e01c1ae.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/935f2afb.9989d552.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/b3da5595.fd962026.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/devDocs/IntegrationTestK8s">master 🏃</a></li><li><a class="dropdown__link" href="/docs/devDocs/IntegrationTestK8s">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/devDocs/IntegrationTestK8s">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/devDocs/IntegrationTestK8s">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Administrator Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine on Yarn</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/adminDocs/yarn/README">Running Submarine on YARN (deprecated)</a></li></ul></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/devDocs/IntegrationTestK8s">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">How to Run Integration K8s Test</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="introduction"></a>Introduction<a class="hash-link" href="#introduction" title="Direct link to heading">#</a></h2><ul><li><p>The test cases under the directory <code>test-k8s</code> are integration tests to ensure the correctness of the Submarine RESTful API.</p></li><li><p>You can run these tests either locally or on GitHub Actions.</p><ul><li>Before running the tests, the minikube (KinD) cluster must be created. </li><li>Then, compile and package the submarine project in <code>submarine-dist</code> directory for building a docker image. </li><li>In addition, the 8080 port in submarine-traefik should be forwarded.</li></ul></li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="run-k8s-test-locally"></a>Run k8s test locally<a class="hash-link" href="#run-k8s-test-locally" title="Direct link to heading">#</a></h2><ol><li><p>Ensure you have setup the KinD cluster or minikube cluster. If you haven&#x27;t, follow this <a href="https://minikube.sigs.k8s.io/docs/start/" target="_blank" rel="noopener noreferrer"><code>minikube tutorial</code></a></p></li><li><p>Build the submarine from source and upgrade the server pod through this <a href="/docs/next/devDocs/Development/#build-from-source"><code>guide</code></a></p></li><li><p>Forward port</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">kubectl port-forward --address </span><span class="token number" style="color:rgb(247, 140, 108)">0.0</span><span class="token plain">.0.0 service/submarine-traefik </span><span class="token number" style="color:rgb(247, 140, 108)">8080</span><span class="token plain">:80</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></li><li><p>Install the latest package &quot;submarine-server-core&quot; into the local repository, for use as a dependency in the module <code>test-k8s</code></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">mvn </span><span class="token function" style="color:rgb(130, 170, 255)">install</span><span class="token plain"> -DskipTests</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></li><li><p>Execute the test command</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">mvn verify -DskipRat -pl :submarine-test-k8s -Phadoop-2.9 -B</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></li></ol><p><img src="/assets/images/test-k8s-result-883d99774542cc9898f086937cb80190.png"></p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="run-k8s-test-in-github-actions"></a>Run k8s test in GitHub Actions<a class="hash-link" href="#run-k8s-test-in-github-actions" title="Direct link to heading">#</a></h2><ul><li>Each time a code is submitted, GitHub Actions is triggered automatically.</li></ul></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/devDocs/IntegrationTestK8s.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/next/devDocs/Development"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Development Guide</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/next/devDocs/IntegrationTestE2E"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">How to Run Frontend Integration Test »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#introduction" class="table-of-contents__link">Introduction</a></li><li><a href="#run-k8s-test-locally" class="table-of-contents__link">Run k8s test locally</a></li><li><a href="#run-k8s-test-in-github-actions" class="table-of-contents__link">Run k8s test in GitHub Actions</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/devDocs/IntegrationTestK8s">master 🏃</a></li><li><a class="dropdown__link" href="/docs/devDocs/IntegrationTestK8s">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/devDocs/IntegrationTestK8s">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/devDocs/IntegrationTestK8s">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/devDocs/IntegrationTestK8s">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">How to Run Integration K8s Test</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="introduction"></a>Introduction<a class="hash-link" href="#introduction" title="Direct link to heading">#</a></h2><ul><li><p>The test cases under the directory <code>test-k8s</code> are integration tests to ensure the correctness of the Submarine RESTful API.</p></li><li><p>You can run these tests either locally or on GitHub Actions.</p><ul><li>Before running the tests, the minikube (KinD) cluster must be created. </li><li>Then, compile and package the submarine project in <code>submarine-dist</code> directory for building a docker image. </li><li>In addition, the 8080 port in submarine-traefik should be forwarded.</li></ul></li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="run-k8s-test-locally"></a>Run k8s test locally<a class="hash-link" href="#run-k8s-test-locally" title="Direct link to heading">#</a></h2><ol><li><p>Ensure you have setup the KinD cluster or minikube cluster. If you haven&#x27;t, follow this <a href="https://minikube.sigs.k8s.io/docs/start/" target="_blank" rel="noopener noreferrer"><code>minikube tutorial</code></a></p></li><li><p>Build the submarine from source and upgrade the server pod through this <a href="/docs/next/devDocs/Development/#build-from-source"><code>guide</code></a></p></li><li><p>Forward port</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">kubectl port-forward --address </span><span class="token number" style="color:rgb(247, 140, 108)">0.0</span><span class="token plain">.0.0 service/submarine-traefik </span><span class="token number" style="color:rgb(247, 140, 108)">8080</span><span class="token plain">:80</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></li><li><p>Install the latest package &quot;submarine-server-core&quot; into the local repository, for use as a dependency in the module <code>test-k8s</code></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">mvn </span><span class="token function" style="color:rgb(130, 170, 255)">install</span><span class="token plain"> -DskipTests</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></li><li><p>Execute the test command</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">mvn verify -DskipRat -pl :submarine-test-k8s -Phadoop-2.9 -B</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></li></ol><p><img src="/assets/images/test-k8s-result-883d99774542cc9898f086937cb80190.png"></p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="run-k8s-test-in-github-actions"></a>Run k8s test in GitHub Actions<a class="hash-link" href="#run-k8s-test-in-github-actions" title="Direct link to heading">#</a></h2><ul><li>Each time a code is submitted, GitHub Actions is triggered automatically.</li></ul></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/devDocs/IntegrationTestK8s.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/next/devDocs/Development"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Development Guide</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/next/devDocs/IntegrationTestE2E"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">How to Run Frontend Integration Test »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#introduction" class="table-of-contents__link">Introduction</a></li><li><a href="#run-k8s-test-locally" class="table-of-contents__link">Run k8s test locally</a></li><li><a href="#run-k8s-test-in-github-actions" class="table-of-contents__link">Run k8s test in GitHub Actions</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/b3da5595.2e01c1ae.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/935f2afb.9989d552.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/b3da5595.fd962026.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/next/devDocs/README/index.html b/docs/next/devDocs/README/index.html
index 4346a8a..5138c8c 100644
--- a/docs/next/devDocs/README/index.html
+++ b/docs/next/devDocs/README/index.html
@@ -6,20 +6,20 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Project Architecture | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="Project Architecture | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/devDocs/README"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/devDocs/README"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/ee8d19c0.4e222057.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/935f2afb.9989d552.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/ee8d19c0.ae17985b.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/devDocs/README">master 🏃</a></li><li><a class="dropdown__link" href="/docs/devDocs/README">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/devDocs/README">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/devDocs/README">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Administrator Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine on Yarn</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/adminDocs/yarn/README">Running Submarine on YARN (deprecated)</a></li></ul></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/devDocs/README">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Project Architecture</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="1-introduction"></a>1. Introduction<a class="hash-link" href="#1-introduction" title="Direct link to heading">#</a></h2><p>This document mainly describes the structure of each module of the Submarine project, the development and test description of each module.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="2-submarine-project-structure"></a>2. Submarine Project Structure<a class="hash-link" href="#2-submarine-project-structure" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="21-submarine-client"></a>2.1. submarine-client<a class="hash-link" href="#21-submarine-client" title="Direct link to heading">#</a></h3><p>Provide the CLI interface for submarine user. (Currently only support YARN service (deprecated))</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="22-submarine-cloud-v2"></a>2.2. submarine-cloud-v2<a class="hash-link" href="#22-submarine-cloud-v2" title="Direct link to heading">#</a></h3><p>The operator for Submarine application. For details, please see the <a href="https://github.com/apache/submarine/blob/master/submarine-cloud-v2/README.md" target="_blank" rel="noopener noreferrer">README on github</a>.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="23-submarine-commons"></a>2.3. submarine-commons<a class="hash-link" href="#23-submarine-commons" title="Direct link to heading">#</a></h3><p>Define utility function used in multiple packages, mainly related to hadoop.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="24-submarine-dist"></a>2.4. submarine-dist<a class="hash-link" href="#24-submarine-dist" title="Direct link to heading">#</a></h3><p>Store the pre-release files.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="25-submarine-sdk"></a>2.5. submarine-sdk<a class="hash-link" href="#25-submarine-sdk" title="Direct link to heading">#</a></h3><p>Provide Python SDK for submarine user.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="26-submarine-server"></a>2.6. submarine-server<a class="hash-link" href="#26-submarine-server" title="Direct link to heading">#</a></h3><p>Include core server, restful api, and k8s submitter.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="27-submarine-test"></a>2.7. submarine-test<a class="hash-link" href="#27-submarine-test" title="Direct link to heading">#</a></h3><p>Provide end-to-end and k8s test for submarine.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="28-submarine-workbench"></a>2.8. submarine-workbench<a class="hash-link" href="#28-submarine-workbench" title="Direct link to heading">#</a></h3><ul><li>workbench-server: is a Jetty-based web server service. Workbench-server provides RESTful interface and Websocket interface. The RESTful interface provides workbench-web with management capabilities for databases such as project, department, user, and role.</li><li>workbench-web: is a web front-end service based on Angular.js framework. With workbench-web users can manage Submarine project, department, user, role through browser. You can also use the notebook to develop machine learning algorithms, model release and other lifecycle management.</li></ul><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="29-dev-support"></a>2.9 dev-support<a class="hash-link" href="#29-dev-support" title="Direct link to heading">#</a></h3><ul><li><strong>mini-submarine</strong>: by using the docker image provided by Submarine, you can
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/devDocs/README">master 🏃</a></li><li><a class="dropdown__link" href="/docs/devDocs/README">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/devDocs/README">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/devDocs/README">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/devDocs/README">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Project Architecture</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="1-introduction"></a>1. Introduction<a class="hash-link" href="#1-introduction" title="Direct link to heading">#</a></h2><p>This document mainly describes the structure of each module of the Submarine project, the development and test description of each module.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="2-submarine-project-structure"></a>2. Submarine Project Structure<a class="hash-link" href="#2-submarine-project-structure" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="21-submarine-client"></a>2.1. submarine-client<a class="hash-link" href="#21-submarine-client" title="Direct link to heading">#</a></h3><p>Provide the CLI interface for submarine user. (Currently only support YARN service (deprecated))</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="22-submarine-cloud-v2"></a>2.2. submarine-cloud-v2<a class="hash-link" href="#22-submarine-cloud-v2" title="Direct link to heading">#</a></h3><p>The operator for Submarine application. For details, please see the <a href="https://github.com/apache/submarine/blob/master/submarine-cloud-v2/README.md" target="_blank" rel="noopener noreferrer">README on github</a>.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="23-submarine-commons"></a>2.3. submarine-commons<a class="hash-link" href="#23-submarine-commons" title="Direct link to heading">#</a></h3><p>Define utility function used in multiple packages, mainly related to hadoop.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="24-submarine-dist"></a>2.4. submarine-dist<a class="hash-link" href="#24-submarine-dist" title="Direct link to heading">#</a></h3><p>Store the pre-release files.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="25-submarine-sdk"></a>2.5. submarine-sdk<a class="hash-link" href="#25-submarine-sdk" title="Direct link to heading">#</a></h3><p>Provide Python SDK for submarine user.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="26-submarine-server"></a>2.6. submarine-server<a class="hash-link" href="#26-submarine-server" title="Direct link to heading">#</a></h3><p>Include core server, restful api, and k8s submitter.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="27-submarine-test"></a>2.7. submarine-test<a class="hash-link" href="#27-submarine-test" title="Direct link to heading">#</a></h3><p>Provide end-to-end and k8s test for submarine.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="28-submarine-workbench"></a>2.8. submarine-workbench<a class="hash-link" href="#28-submarine-workbench" title="Direct link to heading">#</a></h3><ul><li>workbench-server: is a Jetty-based web server service. Workbench-server provides RESTful interface and Websocket interface. The RESTful interface provides workbench-web with management capabilities for databases such as project, department, user, and role.</li><li>workbench-web: is a web front-end service based on Angular.js framework. With workbench-web users can manage Submarine project, department, user, role through browser. You can also use the notebook to develop machine learning algorithms, model release and other lifecycle management.</li></ul><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="29-dev-support"></a>2.9 dev-support<a class="hash-link" href="#29-dev-support" title="Direct link to heading">#</a></h3><ul><li><strong>mini-submarine</strong>: by using the docker image provided by Submarine, you can
 experience all the functions of Submarine in a single docker environment, while
 mini-submarine also provides developers with a development and testing
 environment, Avoid the hassle of installing and deploying the runtime
@@ -27,18 +27,18 @@
 environment installation tool for yarn-3.1+ and above.By using
 submarine-installer, it is easy to install and deploy system services such as
 <code>docker</code>, <code>nvidia-docker</code>, <code>nvidia driver</code>, <code>ETCD</code>, <code>Calico network</code> etc.
-required by yarn-3.1+.</li></ul></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/devDocs/README.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/next/adminDocs/yarn/README"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Running Submarine on YARN (deprecated)</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/next/devDocs/Dependencies"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Dependencies for Submarine »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#1-introduction" class="table-of-contents__link">1. Introduction</a></li><li><a href="#2-submarine-project-structure" class="table-of-contents__link">2. Submarine Project Structure</a><ul><li><a href="#21-submarine-client" class="table-of-contents__link">2.1. submarine-client</a></li><li><a href="#22-submarine-cloud-v2" class="table-of-contents__link">2.2. submarine-cloud-v2</a></li><li><a href="#23-submarine-commons" class="table-of-contents__link">2.3. submarine-commons</a></li><li><a href="#24-submarine-dist" class="table-of-contents__link">2.4. submarine-dist</a></li><li><a href="#25-submarine-sdk" class="table-of-contents__link">2.5. submarine-sdk</a></li><li><a href="#26-submarine-server" class="table-of-contents__link">2.6. submarine-server</a></li><li><a href="#27-submarine-test" class="table-of-contents__link">2.7. submarine-test</a></li><li><a href="#28-submarine-workbench" class="table-of-contents__link">2.8. submarine-workbench</a></li><li><a href="#29-dev-support" class="table-of-contents__link">2.9 dev-support</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
+required by yarn-3.1+.</li></ul></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/devDocs/README.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/next/userDocs/others/tensorboard"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Tensorboard</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/next/devDocs/Dependencies"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Dependencies for Submarine »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#1-introduction" class="table-of-contents__link">1. Introduction</a></li><li><a href="#2-submarine-project-structure" class="table-of-contents__link">2. Submarine Project Structure</a><ul><li><a href="#21-submarine-client" class="table-of-contents__link">2.1. submarine-client</a></li><li><a href="#22-submarine-cloud-v2" class="table-of-contents__link">2.2. submarine-cloud-v2</a></li><li><a href="#23-submarine-commons" class="table-of-contents__link">2.3. submarine-commons</a></li><li><a href="#24-submarine-dist" class="table-of-contents__link">2.4. submarine-dist</a></li><li><a href="#25-submarine-sdk" class="table-of-contents__link">2.5. submarine-sdk</a></li><li><a href="#26-submarine-server" class="table-of-contents__link">2.6. submarine-server</a></li><li><a href="#27-submarine-test" class="table-of-contents__link">2.7. submarine-test</a></li><li><a href="#28-submarine-workbench" class="table-of-contents__link">2.8. submarine-workbench</a></li><li><a href="#29-dev-support" class="table-of-contents__link">2.9 dev-support</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/ee8d19c0.4e222057.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/935f2afb.9989d552.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/ee8d19c0.ae17985b.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/next/download/index.html b/docs/next/download/index.html
index 8676074..3c3abd9 100644
--- a/docs/next/download/index.html
+++ b/docs/next/download/index.html
@@ -6,16 +6,16 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Download Apache Submarine | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="Download Apache Submarine | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/download"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/download"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/f9e23376.b31b1214.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/935f2afb.9989d552.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/f9e23376.cac9ed61.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -54,15 +54,15 @@
 <a href="https://www.apache.org/dist/hadoop/common/hadoop-3.2.0/hadoop-3.2.0-src.tar.gz.asc" target="_blank" rel="noopener noreferrer">signature</a>)</p></li></ul></li></ul></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/download.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"></div><div class="pagination-nav__item pagination-nav__item--next"></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#verify-the-integrity-of-the-files" class="table-of-contents__link">Verify the integrity of the files</a></li><li><a href="#old-releases" class="table-of-contents__link">Old releases</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/f9e23376.b31b1214.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/935f2afb.9989d552.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/f9e23376.cac9ed61.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/next/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs/index.html b/docs/next/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs/index.html
deleted file mode 100644
index a4ebc0c..0000000
--- a/docs/next/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs/index.html
+++ /dev/null
@@ -1,46 +0,0 @@
-<!doctype html>
-<html lang="en">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-alpha.70">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">RunningDistributedThchs30KaldiJobs | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="RunningDistributedThchs30KaldiJobs | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/6d147207.5a8f5b6d.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs">master 🏃</a></li><li><a class="dropdown__link" href="/docs/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">RunningDistributedThchs30KaldiJobs</h1></header><div class="markdown"><h1><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="thchs30-kaldi-example-with-yarn-service"></a>Thchs30 Kaldi Example With YARN Service<a class="hash-link" href="#thchs30-kaldi-example-with-yarn-service" title="Direct link to heading">#</a></h1><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="prepare-data-for-training"></a>Prepare data for training<a class="hash-link" href="#prepare-data-for-training" title="Direct link to heading">#</a></h2><p>Thchs30 is a common benchmark in machine learning for speech data and transcripts. Below example is based on Thchs30 dataset.</p><p>1) download gz file:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">THCHS30_PATH=/data/hdfs1/nfs/aisearch/kaldi/thchs30</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">mkdir $THCHS30_PATH/data &amp;&amp; cd $THCHS30_PATH/data</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">wget http://www.openslr.org/resources/18/data_thchs30.tgz</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">wget http://www.openslr.org/resources/18/test-noise.tgz</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">wget http://www.openslr.org/resources/18/resource.tgz</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>2) Checkout <a href="https://github.com/apache/submarine.git" target="_blank" rel="noopener noreferrer">https://github.com/apache/submarine.git</a>:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">git clone https://github.com/apache/submarine.git</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>3) Go to <code>submarine/docker/ecosystem/</code></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">cp -r ./kaldi/sge $THCHS30_PATH/sge</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>4) optional,Modify <code>/opt/kaldi/egs/thchs30/s5/cmd.sh</code> in the Container,This queue is used by default</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">export train_cmd=&quot;queue.pl -q all.q&quot;</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>Warning:</strong></p><p>Please note that YARN service doesn&#x27;t allow multiple services with the same name, so please run following command</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">yarn application -destroy &lt;service-name&gt;</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>to delete services if you want to reuse the same service name.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="prepare-docker-images"></a>Prepare Docker images<a class="hash-link" href="#prepare-docker-images" title="Direct link to heading">#</a></h2><p>Refer to <a href="/docs/next/ecosystem/kaldi/WriteDockerfileKaldi">Write Dockerfile</a> to build a Docker image or use prebuilt one:</p><ul><li>hadoopsubmarine/kaldi-latest-gpu-base:0.0.1</li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="run-kaldi-jobs"></a>Run Kaldi jobs<a class="hash-link" href="#run-kaldi-jobs" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="run-distributed-training"></a>Run distributed training<a class="hash-link" href="#run-distributed-training" title="Direct link to heading">#</a></h3><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain"># Change the variables according to your needs</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">SUBMARINE_VERSION=3.3.0-SNAPSHOT</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">WORKER_NUM=2</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">SGE_CFG_PATH=/cfg</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">THCHS30_PATH=/data/hdfs1/nfs/aisearch/kaldi/thchs30</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">DOCKER_HADOOP_HDFS_HOME=/app/${SUBMARINE_VERSION}</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
-</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"># Dependent on registrydns, you must fill in &lt; your RegistryDNSIP&gt; in resolv.conf</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">yarn jar /usr/local/matrix/share/hadoop/yarn/${SUBMARINE_VERSION}.jar \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">job run --name kaldi-thchs30-distributed \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">--env DOCKER_JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre/ \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">--env DOCKER_HADOOP_HDFS_HOME=$DOCKER_HADOOP_HDFS_HOME \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">--env YARN_CONTAINER_RUNTIME_DOCKER_CONTAINER_NETWORK=calico-network \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">--env PYTHONUNBUFFERED=&quot;0&quot; \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">--env TZ=&quot;Asia/Shanghai&quot; \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">--env YARN_CONTAINER_RUNTIME_DOCKER_MOUNTS=${THCHS30_PATH}/sge/resolv.conf:/etc/resolv.conf,\</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">${THCHS30_PATH}/sge/passwd:/etc/passwd:rw,\</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">${THCHS30_PATH}/sge/group:/etc/group:rw,\</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">${THCHS30_PATH}/sge:$SGE_CFG_PATH,\</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">${THCHS30_PATH}/data:/opt/kaldi/egs/thchs30,\</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">${THCHS30_PATH}/mul/s5:/opt/kaldi/egs/mul-thchs30/s5 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">--input_path /opt/kaldi/egs/thchs30/data \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">--docker_image hadoopsubmarine/kaldi-latest-gpu-base:0.0.1 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">--num_workers $WORKER_NUM \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">--worker_resources memory=64G,vcores=32,gpu=1 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">--worker_launch_cmd &quot;sudo mkdir -p /opt/kaldi/egs/mul-thchs30/s5 &amp;&amp; \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">sudo cp /opt/kaldi/egs/thchs30/s5/* /opt/kaldi/egs/mul-thchs30/s5 -r &amp;&amp; \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">cluster_user=`whoami` domain_suffix=&quot;ml.com&quot; &amp;&amp; \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">cd /cfg &amp;&amp; bash sge_run.sh $WORKER_NUM $SGE_CFG_PATH &amp;&amp; \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">if [ $(echo $HOST_NAME |grep &quot;^master-&quot;) ] then sleep 2m &amp;&amp; cd /opt/kaldi/egs/mul-thchs30/s5 &amp;&amp; ./run.sh fi&quot; \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">--verbose</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Explanations:</p><ul><li><code>&gt;1</code> num_workers indicates it is a distributed training.</li><li>Parameters / resources / Docker image of parameter server can be specified separately. For many cases, parameter server doesn&#x27;t require GPU.We don&#x27;t need parameter server here</li></ul><p>For the meaning of the individual parameters, see the <a href="/docs/next/adminDocs/yarn/README">QuickStart</a> page!</p><p><em>Outputs of distributed training</em></p><p>Sample output of master:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Reading package lists...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Building dependency tree...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Reading state information...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">The following additional packages will be installed:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  bsd-mailx cpio gridengine-common ifupdown iproute2 isc-dhcp-client</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  isc-dhcp-common libatm1 libdns-export162 libisc-export160 liblockfile-bin</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  liblockfile1 libmnl0 libxmuu1 libxtables11 ncurses-term netbase</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  openssh-client openssh-server openssh-sftp-server postfix python3-chardet</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  python3-pkg-resources python3-requests python3-six python3-urllib3</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  ssh-import-id ssl-cert tcsh xauth</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Suggested packages:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  libarchive1 gridengine-qmon ppp rdnssd iproute2-doc resolvconf avahi-autoipd</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  isc-dhcp-client-ddns apparmor ssh-askpass libpam-ssh keychain monkeysphere</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  rssh molly-guard ufw procmail postfix-mysql postfix-pgsql postfix-ldap</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  postfix-pcre sasl2-bin libsasl2-modules dovecot-common postfix-cdb</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  postfix-doc python3-setuptools python3-ndg-httpsclient python3-openssl</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  python3-pyasn1 openssl-blacklist</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">The following NEW packages will be installed:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  bsd-mailx cpio gridengine-client gridengine-common gridengine-exec</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  gridengine-master ifupdown iproute2 isc-dhcp-client isc-dhcp-common libatm1</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  libdns-export162 libisc-export160 liblockfile-bin liblockfile1 libmnl0</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  libxmuu1 libxtables11 ncurses-term netbase openssh-client openssh-server</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  openssh-sftp-server postfix python3-chardet python3-pkg-resources</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  python3-requests python3-six python3-urllib3 ssh-import-id ssl-cert tcsh</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  xauth</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">0 upgraded, 33 newly installed, 0 to remove and 30 not upgraded.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Need to get 12.1 MB of archives.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">After this operation, 65.8 MB of additional disk space will be used.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:1 http://archive.ubuntu.com/ubuntu xenial/main amd64 libatm1 amd64 1:2.5.1-1.5 [24.2 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:2 http://archive.ubuntu.com/ubuntu xenial/main amd64 libmnl0 amd64 1.0.3-5 [12.0 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:3 http://archive.ubuntu.com/ubuntu xenial/main amd64 liblockfile-bin amd64 1.09-6ubuntu1 [10.8 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:4 http://archive.ubuntu.com/ubuntu xenial/main amd64 liblockfile1 amd64 1.09-6ubuntu1 [8056 B]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:5 http://archive.ubuntu.com/ubuntu xenial/main amd64 cpio amd64 2.11+dfsg-5ubuntu1 [74.8 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:6 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 iproute2 amd64 4.3.0-1ubuntu3.16.04.5 [523 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:7 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 ifupdown amd64 0.8.10ubuntu1.4 [54.9 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:8 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libisc-export160 amd64 1:9.10.3.dfsg.P4-8ubuntu1.15 [153 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:9 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libdns-export162 amd64 1:9.10.3.dfsg.P4-8ubuntu1.15 [665 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:10 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 isc-dhcp-client amd64 4.3.3-5ubuntu12.10 [224 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:11 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 isc-dhcp-common amd64 4.3.3-5ubuntu12.10 [105 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:12 http://archive.ubuntu.com/ubuntu xenial/main amd64 libxtables11 amd64 1.6.0-2ubuntu3 [27.2 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:13 http://archive.ubuntu.com/ubuntu xenial/main amd64 netbase all 5.3 [12.9 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:14 http://archive.ubuntu.com/ubuntu xenial/main amd64 libxmuu1 amd64 2:1.1.2-2 [9674 B]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:15 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 openssh-client amd64 1:7.2p2-4ubuntu2.8 [590 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:16 http://archive.ubuntu.com/ubuntu xenial/main amd64 xauth amd64 1:1.0.9-1ubuntu2 [22.7 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:17 http://archive.ubuntu.com/ubuntu xenial/main amd64 ssl-cert all 1.0.37 [16.9 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:18 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 postfix amd64 3.1.0-3ubuntu0.3 [1152 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:19 http://archive.ubuntu.com/ubuntu xenial/main amd64 bsd-mailx amd64 8.1.2-0.20160123cvs-2 [63.7 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:20 http://archive.ubuntu.com/ubuntu xenial/universe amd64 gridengine-common all 6.2u5-7.4 [156 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:21 http://archive.ubuntu.com/ubuntu xenial/universe amd64 gridengine-client amd64 6.2u5-7.4 [3394 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:22 http://archive.ubuntu.com/ubuntu xenial/universe amd64 tcsh amd64 6.18.01-5 [410 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:23 http://archive.ubuntu.com/ubuntu xenial/universe amd64 gridengine-exec amd64 6.2u5-7.4 [990 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:24 http://archive.ubuntu.com/ubuntu xenial/universe amd64 gridengine-master amd64 6.2u5-7.4 [2429 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:25 http://archive.ubuntu.com/ubuntu xenial/main amd64 ncurses-term all 6.0+20160213-1ubuntu1 [249 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:26 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 openssh-sftp-server amd64 1:7.2p2-4ubuntu2.8 [38.9 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:27 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 openssh-server amd64 1:7.2p2-4ubuntu2.8 [335 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:28 http://archive.ubuntu.com/ubuntu xenial/main amd64 python3-pkg-resources all 20.7.0-1 [79.0 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:29 http://archive.ubuntu.com/ubuntu xenial/main amd64 python3-chardet all 2.3.0-2 [96.2 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:30 http://archive.ubuntu.com/ubuntu xenial/main amd64 python3-six all 1.10.0-3 [11.0 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:31 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 python3-urllib3 all 1.13.1-2ubuntu0.16.04.3 [58.5 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:32 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 python3-requests all 2.9.1-3ubuntu0.1 [55.8 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:33 http://archive.ubuntu.com/ubuntu xenial/main amd64 ssh-import-id all 5.5-0ubuntu1 [10.2 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Fetched 12.1 MB in 0s (15.0 MB/s)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package libatm1:amd64.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 5%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 10%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 15%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 20%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 25%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 30%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 35%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 40%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 45%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 50%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 55%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 60%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 65%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 70%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 75%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 80%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 85%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 90%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 95%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 100%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 21398 files and directories currently installed.)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../libatm1_1%3a2.5.1-1.5_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking libatm1:amd64 (1:2.5.1-1.5) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package libmnl0:amd64.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../libmnl0_1.0.3-5_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking libmnl0:amd64 (1.0.3-5) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package liblockfile-bin.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../liblockfile-bin_1.09-6ubuntu1_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking liblockfile-bin (1.09-6ubuntu1) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package liblockfile1:amd64.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../liblockfile1_1.09-6ubuntu1_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking liblockfile1:amd64 (1.09-6ubuntu1) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package cpio.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../cpio_2.11+dfsg-5ubuntu1_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking cpio (2.11+dfsg-5ubuntu1) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package iproute2.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../iproute2_4.3.0-1ubuntu3.16.04.5_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking iproute2 (4.3.0-1ubuntu3.16.04.5) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package ifupdown.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../ifupdown_0.8.10ubuntu1.4_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking ifupdown (0.8.10ubuntu1.4) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package libisc-export160.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../libisc-export160_1%3a9.10.3.dfsg.P4-8ubuntu1.15_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking libisc-export160 (1:9.10.3.dfsg.P4-8ubuntu1.15) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package libdns-export162.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../libdns-export162_1%3a9.10.3.dfsg.P4-8ubuntu1.15_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking libdns-export162 (1:9.10.3.dfsg.P4-8ubuntu1.15) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package isc-dhcp-client.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../isc-dhcp-client_4.3.3-5ubuntu12.10_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking isc-dhcp-client (4.3.3-5ubuntu12.10) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package isc-dhcp-common.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../isc-dhcp-common_4.3.3-5ubuntu12.10_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking isc-dhcp-common (4.3.3-5ubuntu12.10) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package libxtables11:amd64.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../libxtables11_1.6.0-2ubuntu3_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking libxtables11:amd64 (1.6.0-2ubuntu3) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package netbase.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../archives/netbase_5.3_all.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking netbase (5.3) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package libxmuu1:amd64.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../libxmuu1_2%3a1.1.2-2_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking libxmuu1:amd64 (2:1.1.2-2) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package openssh-client.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../openssh-client_1%3a7.2p2-4ubuntu2.8_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking openssh-client (1:7.2p2-4ubuntu2.8) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package xauth.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../xauth_1%3a1.0.9-1ubuntu2_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking xauth (1:1.0.9-1ubuntu2) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package ssl-cert.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../ssl-cert_1.0.37_all.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking ssl-cert (1.0.37) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package postfix.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../postfix_3.1.0-3ubuntu0.3_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking postfix (3.1.0-3ubuntu0.3) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package bsd-mailx.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../bsd-mailx_8.1.2-0.20160123cvs-2_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking bsd-mailx (8.1.2-0.20160123cvs-2) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package gridengine-common.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../gridengine-common_6.2u5-7.4_all.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking gridengine-common (6.2u5-7.4) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package gridengine-client.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../gridengine-client_6.2u5-7.4_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking gridengine-client (6.2u5-7.4) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package tcsh.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../tcsh_6.18.01-5_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking tcsh (6.18.01-5) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package gridengine-exec.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../gridengine-exec_6.2u5-7.4_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking gridengine-exec (6.2u5-7.4) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package gridengine-master.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../gridengine-master_6.2u5-7.4_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking gridengine-master (6.2u5-7.4) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package ncurses-term.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../ncurses-term_6.0+20160213-1ubuntu1_all.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking ncurses-term (6.0+20160213-1ubuntu1) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package openssh-sftp-server.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../openssh-sftp-server_1%3a7.2p2-4ubuntu2.8_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking openssh-sftp-server (1:7.2p2-4ubuntu2.8) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package openssh-server.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../openssh-server_1%3a7.2p2-4ubuntu2.8_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking openssh-server (1:7.2p2-4ubuntu2.8) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package python3-pkg-resources.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../python3-pkg-resources_20.7.0-1_all.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking python3-pkg-resources (20.7.0-1) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package python3-chardet.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../python3-chardet_2.3.0-2_all.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking python3-chardet (2.3.0-2) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package python3-six.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../python3-six_1.10.0-3_all.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking python3-six (1.10.0-3) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package python3-urllib3.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../python3-urllib3_1.13.1-2ubuntu0.16.04.3_all.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking python3-urllib3 (1.13.1-2ubuntu0.16.04.3) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package python3-requests.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../python3-requests_2.9.1-3ubuntu0.1_all.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking python3-requests (2.9.1-3ubuntu0.1) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package ssh-import-id.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../ssh-import-id_5.5-0ubuntu1_all.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking ssh-import-id (5.5-0ubuntu1) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Processing triggers for systemd (229-4ubuntu21.22) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Processing triggers for libc-bin (2.23-0ubuntu11) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up libatm1:amd64 (1:2.5.1-1.5) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up libmnl0:amd64 (1.0.3-5) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up liblockfile-bin (1.09-6ubuntu1) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up liblockfile1:amd64 (1.09-6ubuntu1) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up cpio (2.11+dfsg-5ubuntu1) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">update-alternatives: using /bin/mt-gnu to provide /bin/mt (mt) in auto mode</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up iproute2 (4.3.0-1ubuntu3.16.04.5) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up ifupdown (0.8.10ubuntu1.4) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Creating /etc/network/interfaces.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up libisc-export160 (1:9.10.3.dfsg.P4-8ubuntu1.15) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up libdns-export162 (1:9.10.3.dfsg.P4-8ubuntu1.15) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up isc-dhcp-client (4.3.3-5ubuntu12.10) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up isc-dhcp-common (4.3.3-5ubuntu12.10) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up libxtables11:amd64 (1.6.0-2ubuntu3) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up netbase (5.3) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up libxmuu1:amd64 (2:1.1.2-2) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up openssh-client (1:7.2p2-4ubuntu2.8) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up xauth (1:1.0.9-1ubuntu2) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up ssl-cert (1.0.37) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up postfix (3.1.0-3ubuntu0.3) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Creating /etc/postfix/dynamicmaps.cf</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">setting myhostname: master-0.XXX</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">setting alias maps</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">setting alias database</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">changing /etc/mailname to master-0.XXX</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">setting myorigin</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">setting destinations: $myhostname, master-0.XXX, localhost.XXX, , localhost</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">setting relayhost:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">setting mynetworks: 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">setting mailbox_size_limit: 0</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">setting recipient_delimiter: +</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">setting inet_interfaces: all</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">setting inet_protocols: all</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">/etc/aliases does not exist, creating it.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">WARNING: /etc/aliases exists, but does not have a root alias.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
-</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Postfix is now set up with a default configuration.  If you need to make</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">changes, edit</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">/etc/postfix/main.cf (and others) as needed.  To view Postfix configuration</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">values, see postconf(1).</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
-</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">After modifying main.cf, be sure to run &#x27;/etc/init.d/postfix reload&#x27;.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
-</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Running newaliases</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">invoke-rc.d: could not determine current runlevel</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">invoke-rc.d: policy-rc.d denied execution of restart.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up bsd-mailx (8.1.2-0.20160123cvs-2) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">update-alternatives: using /usr/bin/bsd-mailx to provide /usr/bin/mailx (mailx) in auto mode</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up gridengine-common (6.2u5-7.4) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
-</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Creating config file /etc/default/gridengine with new version</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up gridengine-client (6.2u5-7.4) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up tcsh (6.18.01-5) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">update-alternatives: using /bin/tcsh to provide /bin/csh (csh) in auto mode</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up gridengine-exec (6.2u5-7.4) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">invoke-rc.d: could not determine current runlevel</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">invoke-rc.d: policy-rc.d denied execution of start.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up gridengine-master (6.2u5-7.4) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">su: Authentication failure</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Ignored)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Initializing cluster with the following parameters:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> =&gt; SGE_ROOT: /var/lib/gridengine</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> =&gt; SGE_CELL: default</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> =&gt; Spool directory: /var/spool/gridengine/spooldb</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> =&gt; Initial manager user: sgeadmin</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Initializing spool (/var/spool/gridengine/spooldb)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Initializing global configuration based on /usr/share/gridengine/default-configuration</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Initializing complexes based on /usr/share/gridengine/centry</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Initializing usersets based on /usr/share/gridengine/usersets</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Adding user sgeadmin as a manager</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Cluster creation complete</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">invoke-rc.d: could not determine current runlevel</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">invoke-rc.d: policy-rc.d denied execution of start.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up ncurses-term (6.0+20160213-1ubuntu1) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up openssh-sftp-server (1:7.2p2-4ubuntu2.8) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up openssh-server (1:7.2p2-4ubuntu2.8) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Creating SSH2 RSA key; this may take some time ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2048 SHA256:hfQpES1aS4cjF8AOCIParZR6342vdwutoyITru0wtuE root@master-0.XXX (RSA)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Creating SSH2 DSA key; this may take some time ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">1024 SHA256:gOsPMVgwXBHJzixN/gtJAG+hVCHqw8t7Fhy4nsx8od0 root@master-0.XXX (DSA)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Creating SSH2 ECDSA key; this may take some time ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">256 SHA256:3D5SNniUb4z+/BuqXheFgG+DfjsxXqTT/zwWAqdX4jM root@master-0.XXX (ECDSA)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Creating SSH2 ED25519 key; this may take some time ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">256 SHA256:SwyeV9iSqOW4TKLi4Wvc0zD8lWtupHCJpDu8oWBwbfU root@master-0.XXX (ED25519)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">invoke-rc.d: could not determine current runlevel</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">invoke-rc.d: policy-rc.d denied execution of start.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up python3-pkg-resources (20.7.0-1) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up python3-chardet (2.3.0-2) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up python3-six (1.10.0-3) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up python3-urllib3 (1.13.1-2ubuntu0.16.04.3) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up python3-requests (2.9.1-3ubuntu0.1) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up ssh-import-id (5.5-0ubuntu1) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Processing triggers for libc-bin (2.23-0ubuntu11) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Processing triggers for systemd (229-4ubuntu21.22) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Reading package lists...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Building dependency tree...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Reading state information...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">0 upgraded, 0 newly installed, 0 to remove and 30 not upgraded.</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>cat $SGE_CFG_PATH/setcfg.log</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">finish master</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">add worker node worker-0.XXX</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Sample output of worker:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">please wait</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Reading package lists...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Building dependency tree...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Reading state information...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">The following additional packages will be installed:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  bsd-mailx cpio gridengine-common ifupdown iproute2 isc-dhcp-client</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  isc-dhcp-common libatm1 libdns-export162 libisc-export160 liblockfile-bin</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  liblockfile1 libmnl0 libxmuu1 libxtables11 ncurses-term netbase</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  openssh-client openssh-server openssh-sftp-server postfix python3-chardet</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  python3-pkg-resources python3-requests python3-six python3-urllib3</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  ssh-import-id ssl-cert tcsh xauth</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Suggested packages:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  libarchive1 gridengine-qmon ppp rdnssd iproute2-doc resolvconf avahi-autoipd</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  isc-dhcp-client-ddns apparmor ssh-askpass libpam-ssh keychain monkeysphere</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  rssh molly-guard ufw procmail postfix-mysql postfix-pgsql postfix-ldap</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  postfix-pcre sasl2-bin libsasl2-modules dovecot-common postfix-cdb</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  postfix-doc python3-setuptools python3-ndg-httpsclient python3-openssl</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  python3-pyasn1 openssl-blacklist</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">The following NEW packages will be installed:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  bsd-mailx cpio gridengine-client gridengine-common gridengine-exec ifupdown</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  iproute2 isc-dhcp-client isc-dhcp-common libatm1 libdns-export162</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  libisc-export160 liblockfile-bin liblockfile1 libmnl0 libxmuu1 libxtables11</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  ncurses-term netbase openssh-client openssh-server openssh-sftp-server</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  postfix python3-chardet python3-pkg-resources python3-requests python3-six</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  python3-urllib3 ssh-import-id ssl-cert tcsh xauth</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">0 upgraded, 32 newly installed, 0 to remove and 30 not upgraded.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Need to get 9633 kB of archives.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">After this operation, 51.2 MB of additional disk space will be used.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:1 http://archive.ubuntu.com/ubuntu xenial/main amd64 libatm1 amd64 1:2.5.1-1.5 [24.2 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:2 http://archive.ubuntu.com/ubuntu xenial/main amd64 libmnl0 amd64 1.0.3-5 [12.0 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:3 http://archive.ubuntu.com/ubuntu xenial/main amd64 liblockfile-bin amd64 1.09-6ubuntu1 [10.8 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:4 http://archive.ubuntu.com/ubuntu xenial/main amd64 liblockfile1 amd64 1.09-6ubuntu1 [8056 B]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:5 http://archive.ubuntu.com/ubuntu xenial/main amd64 cpio amd64 2.11+dfsg-5ubuntu1 [74.8 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:6 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 iproute2 amd64 4.3.0-1ubuntu3.16.04.5 [523 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:7 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 ifupdown amd64 0.8.10ubuntu1.4 [54.9 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:8 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libisc-export160 amd64 1:9.10.3.dfsg.P4-8ubuntu1.15 [153 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:9 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libdns-export162 amd64 1:9.10.3.dfsg.P4-8ubuntu1.15 [665 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:10 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 isc-dhcp-client amd64 4.3.3-5ubuntu12.10 [224 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:11 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 isc-dhcp-common amd64 4.3.3-5ubuntu12.10 [105 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:12 http://archive.ubuntu.com/ubuntu xenial/main amd64 libxtables11 amd64 1.6.0-2ubuntu3 [27.2 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:13 http://archive.ubuntu.com/ubuntu xenial/main amd64 netbase all 5.3 [12.9 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:14 http://archive.ubuntu.com/ubuntu xenial/main amd64 libxmuu1 amd64 2:1.1.2-2 [9674 B]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:15 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 openssh-client amd64 1:7.2p2-4ubuntu2.8 [590 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:16 http://archive.ubuntu.com/ubuntu xenial/main amd64 xauth amd64 1:1.0.9-1ubuntu2 [22.7 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:17 http://archive.ubuntu.com/ubuntu xenial/main amd64 ssl-cert all 1.0.37 [16.9 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:18 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 postfix amd64 3.1.0-3ubuntu0.3 [1152 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:19 http://archive.ubuntu.com/ubuntu xenial/main amd64 bsd-mailx amd64 8.1.2-0.20160123cvs-2 [63.7 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:20 http://archive.ubuntu.com/ubuntu xenial/universe amd64 gridengine-common all 6.2u5-7.4 [156 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:21 http://archive.ubuntu.com/ubuntu xenial/universe amd64 gridengine-client amd64 6.2u5-7.4 [3394 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:22 http://archive.ubuntu.com/ubuntu xenial/universe amd64 tcsh amd64 6.18.01-5 [410 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:23 http://archive.ubuntu.com/ubuntu xenial/universe amd64 gridengine-exec amd64 6.2u5-7.4 [990 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:24 http://archive.ubuntu.com/ubuntu xenial/main amd64 ncurses-term all 6.0+20160213-1ubuntu1 [249 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:25 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 openssh-sftp-server amd64 1:7.2p2-4ubuntu2.8 [38.9 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:26 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 openssh-server amd64 1:7.2p2-4ubuntu2.8 [335 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:27 http://archive.ubuntu.com/ubuntu xenial/main amd64 python3-pkg-resources all 20.7.0-1 [79.0 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:28 http://archive.ubuntu.com/ubuntu xenial/main amd64 python3-chardet all 2.3.0-2 [96.2 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:29 http://archive.ubuntu.com/ubuntu xenial/main amd64 python3-six all 1.10.0-3 [11.0 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:30 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 python3-urllib3 all 1.13.1-2ubuntu0.16.04.3 [58.5 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:31 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 python3-requests all 2.9.1-3ubuntu0.1 [55.8 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Get:32 http://archive.ubuntu.com/ubuntu xenial/main amd64 ssh-import-id all 5.5-0ubuntu1 [10.2 kB]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Fetched 9633 kB in 2s (4496 kB/s)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package libatm1:amd64.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 5%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 10%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 15%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 20%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 25%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 30%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 35%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 40%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 45%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 50%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 55%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 60%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 65%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 70%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 75%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 80%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 85%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 90%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 95%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 100%</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">(Reading database ... 21398 files and directories currently installed.)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../libatm1_1%3a2.5.1-1.5_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking libatm1:amd64 (1:2.5.1-1.5) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package libmnl0:amd64.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../libmnl0_1.0.3-5_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking libmnl0:amd64 (1.0.3-5) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package liblockfile-bin.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../liblockfile-bin_1.09-6ubuntu1_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking liblockfile-bin (1.09-6ubuntu1) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package liblockfile1:amd64.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../liblockfile1_1.09-6ubuntu1_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking liblockfile1:amd64 (1.09-6ubuntu1) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package cpio.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../cpio_2.11+dfsg-5ubuntu1_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking cpio (2.11+dfsg-5ubuntu1) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package iproute2.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../iproute2_4.3.0-1ubuntu3.16.04.5_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking iproute2 (4.3.0-1ubuntu3.16.04.5) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package ifupdown.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../ifupdown_0.8.10ubuntu1.4_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking ifupdown (0.8.10ubuntu1.4) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package libisc-export160.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../libisc-export160_1%3a9.10.3.dfsg.P4-8ubuntu1.15_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking libisc-export160 (1:9.10.3.dfsg.P4-8ubuntu1.15) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package libdns-export162.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../libdns-export162_1%3a9.10.3.dfsg.P4-8ubuntu1.15_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking libdns-export162 (1:9.10.3.dfsg.P4-8ubuntu1.15) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package isc-dhcp-client.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../isc-dhcp-client_4.3.3-5ubuntu12.10_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking isc-dhcp-client (4.3.3-5ubuntu12.10) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package isc-dhcp-common.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../isc-dhcp-common_4.3.3-5ubuntu12.10_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking isc-dhcp-common (4.3.3-5ubuntu12.10) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package libxtables11:amd64.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../libxtables11_1.6.0-2ubuntu3_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking libxtables11:amd64 (1.6.0-2ubuntu3) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package netbase.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../archives/netbase_5.3_all.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking netbase (5.3) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package libxmuu1:amd64.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../libxmuu1_2%3a1.1.2-2_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking libxmuu1:amd64 (2:1.1.2-2) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package openssh-client.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../openssh-client_1%3a7.2p2-4ubuntu2.8_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking openssh-client (1:7.2p2-4ubuntu2.8) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package xauth.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../xauth_1%3a1.0.9-1ubuntu2_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking xauth (1:1.0.9-1ubuntu2) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package ssl-cert.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../ssl-cert_1.0.37_all.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking ssl-cert (1.0.37) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package postfix.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../postfix_3.1.0-3ubuntu0.3_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking postfix (3.1.0-3ubuntu0.3) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package bsd-mailx.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../bsd-mailx_8.1.2-0.20160123cvs-2_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking bsd-mailx (8.1.2-0.20160123cvs-2) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package gridengine-common.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../gridengine-common_6.2u5-7.4_all.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking gridengine-common (6.2u5-7.4) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package gridengine-client.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../gridengine-client_6.2u5-7.4_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking gridengine-client (6.2u5-7.4) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package tcsh.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../tcsh_6.18.01-5_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking tcsh (6.18.01-5) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package gridengine-exec.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../gridengine-exec_6.2u5-7.4_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking gridengine-exec (6.2u5-7.4) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package ncurses-term.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../ncurses-term_6.0+20160213-1ubuntu1_all.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking ncurses-term (6.0+20160213-1ubuntu1) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package openssh-sftp-server.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../openssh-sftp-server_1%3a7.2p2-4ubuntu2.8_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking openssh-sftp-server (1:7.2p2-4ubuntu2.8) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package openssh-server.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../openssh-server_1%3a7.2p2-4ubuntu2.8_amd64.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking openssh-server (1:7.2p2-4ubuntu2.8) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package python3-pkg-resources.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../python3-pkg-resources_20.7.0-1_all.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking python3-pkg-resources (20.7.0-1) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package python3-chardet.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../python3-chardet_2.3.0-2_all.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking python3-chardet (2.3.0-2) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package python3-six.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../python3-six_1.10.0-3_all.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking python3-six (1.10.0-3) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package python3-urllib3.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../python3-urllib3_1.13.1-2ubuntu0.16.04.3_all.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking python3-urllib3 (1.13.1-2ubuntu0.16.04.3) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package python3-requests.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../python3-requests_2.9.1-3ubuntu0.1_all.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking python3-requests (2.9.1-3ubuntu0.1) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Selecting previously unselected package ssh-import-id.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Preparing to unpack .../ssh-import-id_5.5-0ubuntu1_all.deb ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Unpacking ssh-import-id (5.5-0ubuntu1) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Processing triggers for systemd (229-4ubuntu21.22) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Processing triggers for libc-bin (2.23-0ubuntu11) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up libatm1:amd64 (1:2.5.1-1.5) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up libmnl0:amd64 (1.0.3-5) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up liblockfile-bin (1.09-6ubuntu1) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up liblockfile1:amd64 (1.09-6ubuntu1) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up cpio (2.11+dfsg-5ubuntu1) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">update-alternatives: using /bin/mt-gnu to provide /bin/mt (mt) in auto mode</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up iproute2 (4.3.0-1ubuntu3.16.04.5) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up ifupdown (0.8.10ubuntu1.4) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Creating /etc/network/interfaces.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up libisc-export160 (1:9.10.3.dfsg.P4-8ubuntu1.15) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up libdns-export162 (1:9.10.3.dfsg.P4-8ubuntu1.15) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up isc-dhcp-client (4.3.3-5ubuntu12.10) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up isc-dhcp-common (4.3.3-5ubuntu12.10) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up libxtables11:amd64 (1.6.0-2ubuntu3) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up netbase (5.3) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up libxmuu1:amd64 (2:1.1.2-2) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up openssh-client (1:7.2p2-4ubuntu2.8) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up xauth (1:1.0.9-1ubuntu2) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up ssl-cert (1.0.37) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up postfix (3.1.0-3ubuntu0.3) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Creating /etc/postfix/dynamicmaps.cf</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">setting myhostname: worker-0.XXX</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">setting alias maps</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">setting alias database</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">changing /etc/mailname to worker-0.XXX</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">setting myorigin</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">setting destinations: $myhostname, worker-0.XXX, localhost.XXX, , localhost</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">setting relayhost:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">setting mynetworks: 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">setting mailbox_size_limit: 0</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">setting recipient_delimiter: +</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">setting inet_interfaces: all</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">setting inet_protocols: all</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">/etc/aliases does not exist, creating it.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">WARNING: /etc/aliases exists, but does not have a root alias.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
-</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Postfix is now set up with a default configuration.  If you need to make</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">changes, edit</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">/etc/postfix/main.cf (and others) as needed.  To view Postfix configuration</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">values, see postconf(1).</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
-</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">After modifying main.cf, be sure to run &#x27;/etc/init.d/postfix reload&#x27;.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
-</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Running newaliases</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">invoke-rc.d: could not determine current runlevel</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">invoke-rc.d: policy-rc.d denied execution of restart.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up bsd-mailx (8.1.2-0.20160123cvs-2) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">update-alternatives: using /usr/bin/bsd-mailx to provide /usr/bin/mailx (mailx) in auto mode</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up gridengine-common (6.2u5-7.4) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
-</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Creating config file /etc/default/gridengine with new version</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up gridengine-client (6.2u5-7.4) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up tcsh (6.18.01-5) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">update-alternatives: using /bin/tcsh to provide /bin/csh (csh) in auto mode</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up gridengine-exec (6.2u5-7.4) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">invoke-rc.d: could not determine current runlevel</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">invoke-rc.d: policy-rc.d denied execution of start.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up ncurses-term (6.0+20160213-1ubuntu1) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up openssh-sftp-server (1:7.2p2-4ubuntu2.8) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up openssh-server (1:7.2p2-4ubuntu2.8) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Creating SSH2 RSA key; this may take some time ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2048 SHA256:ok/TxzwtF5W8I55sDxrt4Agy4fuWn39BiSovvDObhVE root@worker-0.XXX (RSA)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Creating SSH2 DSA key; this may take some time ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">1024 SHA256:4y48kVYt3mS3q1KgZzEoYMnS/2d/tA8TJUK5uNSaxZY root@worker-0.XXX (DSA)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Creating SSH2 ECDSA key; this may take some time ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">256 SHA256:4D7zm4cD2IbDnHoXnzcIo3FISbvOW8eOstGBNf1/bvo root@worker-0.XXX (ECDSA)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Creating SSH2 ED25519 key; this may take some time ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">256 SHA256:/HrA3xiZiH5CZkXwtcfE6GwcMM+hEhZzTdFHxj4PzDg root@worker-0.XXX (ED25519)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">invoke-rc.d: could not determine current runlevel</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">invoke-rc.d: policy-rc.d denied execution of start.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up python3-pkg-resources (20.7.0-1) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up python3-chardet (2.3.0-2) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up python3-six (1.10.0-3) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up python3-urllib3 (1.13.1-2ubuntu0.16.04.3) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up python3-requests (2.9.1-3ubuntu0.1) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Setting up ssh-import-id (5.5-0ubuntu1) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Processing triggers for libc-bin (2.23-0ubuntu11) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Processing triggers for systemd (229-4ubuntu21.22) ...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Reading package lists...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Building dependency tree...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Reading state information...</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">0 upgraded, 0 newly installed, 0 to remove and 30 not upgraded.</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>cat $SGE_CFG_PATH/setcfg.log</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">please wait</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Start SGE for worker is finished</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">done for worker-0.XXX worker.</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Sample output of sge:
-<img alt="alt text" src="/assets/images/sge_cluster-b9ac6485a770b5f8a031b29f6f430810.png" title="SGE for multiple jobs"></p><p><img alt="alt text" src="/assets/images/sge_stat-29ad9dfe485895eb54eea5baad709e15.png" title="SGE for user multiple jobs"></p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"></div><div class="pagination-nav__item pagination-nav__item--next"></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#prepare-data-for-training" class="table-of-contents__link">Prepare data for training</a></li><li><a href="#prepare-docker-images" class="table-of-contents__link">Prepare Docker images</a></li><li><a href="#run-kaldi-jobs" class="table-of-contents__link">Run Kaldi jobs</a><ul><li><a href="#run-distributed-training" class="table-of-contents__link">Run distributed training</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
-       either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
-        countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/6d147207.5a8f5b6d.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/next/ecosystem/kaldi/WriteDockerfileKaldi/index.html b/docs/next/ecosystem/kaldi/WriteDockerfileKaldi/index.html
deleted file mode 100644
index d1525bc..0000000
--- a/docs/next/ecosystem/kaldi/WriteDockerfileKaldi/index.html
+++ /dev/null
@@ -1,39 +0,0 @@
-<!doctype html>
-<html lang="en">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-alpha.70">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">WriteDockerfileKaldi | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="WriteDockerfileKaldi | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/ecosystem/kaldi/WriteDockerfileKaldi"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/ecosystem/kaldi/WriteDockerfileKaldi"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/8dc7f8a8.89c54f51.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/ecosystem/kaldi/WriteDockerfileKaldi">master 🏃</a></li><li><a class="dropdown__link" href="/docs/ecosystem/kaldi/WriteDockerfileKaldi">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/ecosystem/kaldi/WriteDockerfileKaldi">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/ecosystem/kaldi/WriteDockerfileKaldi">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/ecosystem/kaldi/WriteDockerfileKaldi">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">WriteDockerfileKaldi</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="creating-docker-images-for-running-kaldi-on-yarn"></a>Creating Docker Images for Running Kaldi on YARN<a class="hash-link" href="#creating-docker-images-for-running-kaldi-on-yarn" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="how-to-create-docker-images-to-run-kaldi-on-yarn"></a>How to create docker images to run Kaldi on YARN<a class="hash-link" href="#how-to-create-docker-images-to-run-kaldi-on-yarn" title="Direct link to heading">#</a></h3><p>Dockerfile to run Kaldi on YARN need two part:</p><p><strong>Base libraries which Kaldi depends on</strong></p><p>1) OS base image, for example <code>nvidia/cuda:10.0-cudnn7-devel-ubuntu18.04</code></p><p>2) Kaldi depended libraries and packages. For example <code>python</code>, <code>g++</code>, <code>make</code>. For GPU support, need <code>cuda</code>, <code>cudnn</code>, etc.</p><p>3) Kaldi compile.</p><p><strong>Libraries to access HDFS</strong></p><p>1) JDK</p><p>2) Hadoop</p><p>Here&#x27;s an example of a base image (w/o GPU support) to install Kaldi:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-shell codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">FROM nvidia/cuda:10.0-cudnn7-devel-ubuntu18.04</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
-</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">RUN </span><span class="token function" style="color:rgb(130, 170, 255)">apt-get</span><span class="token plain"> clean </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token function" style="color:rgb(130, 170, 255)">apt-get</span><span class="token plain"> update </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token function" style="color:rgb(130, 170, 255)">apt-get</span><span class="token plain"> </span><span class="token function" style="color:rgb(130, 170, 255)">install</span><span class="token plain"> -y --no-install-recommends </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token function" style="color:rgb(130, 170, 255)">sudo</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        openjdk-8-jdk </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        iputils-ping </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        g++ </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token function" style="color:rgb(130, 170, 255)">make</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        automake </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        autoconf </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token function" style="color:rgb(130, 170, 255)">bzip2</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token function" style="color:rgb(130, 170, 255)">unzip</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token function" style="color:rgb(130, 170, 255)">wget</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        sox </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        libtool </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token function" style="color:rgb(130, 170, 255)">git</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        subversion </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        python2.7 </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        python3 </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        zlib1g-dev </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        ca-certificates </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        patch </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        ffmpeg </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token function" style="color:rgb(130, 170, 255)">vim</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token function" style="color:rgb(130, 170, 255)">rm</span><span class="token plain"> -rf /var/lib/apt/lists/* </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token function" style="color:rgb(130, 170, 255)">ln</span><span class="token plain"> -s /usr/bin/python2.7 /usr/bin/python</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
-</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">RUN </span><span class="token function" style="color:rgb(130, 170, 255)">git</span><span class="token plain"> clone --depth </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token plain"> https://github.com/kaldi-asr/kaldi.git /opt/kaldi </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">cd</span><span class="token plain"> /opt/kaldi </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">cd</span><span class="token plain"> /opt/kaldi/tools </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    ./extras/install_mkl.sh </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token function" style="color:rgb(130, 170, 255)">make</span><span class="token plain"> -j </span><span class="token variable" style="color:rgb(191, 199, 213)">$(</span><span class="token variable" style="color:rgb(191, 199, 213)">nproc</span><span class="token variable" style="color:rgb(191, 199, 213)">)</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">cd</span><span class="token plain"> /opt/kaldi/src </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    ./configure --shared --use-cuda </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token function" style="color:rgb(130, 170, 255)">make</span><span class="token plain"> depend -j </span><span class="token variable" style="color:rgb(191, 199, 213)">$(</span><span class="token variable" style="color:rgb(191, 199, 213)">nproc</span><span class="token variable" style="color:rgb(191, 199, 213)">)</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token function" style="color:rgb(130, 170, 255)">make</span><span class="token plain"> -j </span><span class="token variable" style="color:rgb(191, 199, 213)">$(</span><span class="token variable" style="color:rgb(191, 199, 213)">nproc</span><span class="token variable" style="color:rgb(191, 199, 213)">)</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>On top of above image, add files, install packages to access HDFS</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-shell codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">RUN </span><span class="token function" style="color:rgb(130, 170, 255)">apt-get</span><span class="token plain"> update </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token function" style="color:rgb(130, 170, 255)">apt-get</span><span class="token plain"> </span><span class="token function" style="color:rgb(130, 170, 255)">install</span><span class="token plain"> -y openjdk-8-jdk </span><span class="token function" style="color:rgb(130, 170, 255)">wget</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Install hadoop</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">ENV </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">HADOOP_VERSION</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;3.2.1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">ENV </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">JAVA_HOME</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">/usr/lib/jvm/java-8-openjdk-amd64</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">RUN </span><span class="token function" style="color:rgb(130, 170, 255)">wget</span><span class="token plain"> https://archive.apache.org/dist/hadoop/common/hadoop-</span><span class="token variable" style="color:rgb(191, 199, 213)">${HADOOP_VERSION}</span><span class="token plain">/hadoop-</span><span class="token variable" style="color:rgb(191, 199, 213)">${HADOOP_VERSION}</span><span class="token plain">.tar.gz </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token function" style="color:rgb(130, 170, 255)">tar</span><span class="token plain"> zxf hadoop-</span><span class="token variable" style="color:rgb(191, 199, 213)">${HADOOP_VERSION}</span><span class="token plain">.tar.gz </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token function" style="color:rgb(130, 170, 255)">ln</span><span class="token plain"> -s hadoop-</span><span class="token variable" style="color:rgb(191, 199, 213)">${HADOOP_VERSION}</span><span class="token plain"> hadoop-current </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token function" style="color:rgb(130, 170, 255)">rm</span><span class="token plain"> hadoop-</span><span class="token variable" style="color:rgb(191, 199, 213)">${HADOOP_VERSION}</span><span class="token plain">.tar.gz</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Build and push to your own docker registry: Use <code>docker build ... </code> and <code>docker push ...</code> to finish this step.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="use-examples-to-build-your-own-kaldi-docker-images"></a>Use examples to build your own Kaldi docker images<a class="hash-link" href="#use-examples-to-build-your-own-kaldi-docker-images" title="Direct link to heading">#</a></h3><p>We provided following examples for you to build kaldi docker images.</p><p>For latest Kaldi</p><ul><li>*base/ubuntu-18.04/Dockerfile.gpu.kaldi_latest: Latest Kaldi that supports GPU, which is prebuilt to CUDA10, with models.</li></ul><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="build-docker-images"></a>Build Docker images<a class="hash-link" href="#build-docker-images" title="Direct link to heading">#</a></h3><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="manually-build-docker-image"></a>Manually build Docker image:<a class="hash-link" href="#manually-build-docker-image" title="Direct link to heading">#</a></h4><p>Under <code>docker/</code> directory,The CLUSTER_NAME can be modified in build-all.sh to have installation permissions, run <code>build-all.sh</code> to build Docker images. It will build following images:</p><ul><li><code>kaldi-latest-gpu-base:0.0.1</code> for base Docker image which includes Hadoop, Kaldi, GPU base libraries, which includes thchs30 model.</li></ul><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="use-prebuilt-images"></a>Use prebuilt images<a class="hash-link" href="#use-prebuilt-images" title="Direct link to heading">#</a></h4><p>(No liability)
-You can also use prebuilt images for convenience in the docker hub:</p><ul><li>hadoopsubmarine/kaldi-latest-gpu-base:0.0.1</li></ul></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/ecosystem/kaldi/WriteDockerfileKaldi.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"></div><div class="pagination-nav__item pagination-nav__item--next"></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#creating-docker-images-for-running-kaldi-on-yarn" class="table-of-contents__link">Creating Docker Images for Running Kaldi on YARN</a><ul><li><a href="#how-to-create-docker-images-to-run-kaldi-on-yarn" class="table-of-contents__link">How to create docker images to run Kaldi on YARN</a></li><li><a href="#use-examples-to-build-your-own-kaldi-docker-images" class="table-of-contents__link">Use examples to build your own Kaldi docker images</a></li><li><a href="#build-docker-images" class="table-of-contents__link">Build Docker images</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
-       either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
-        countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/8dc7f8a8.89c54f51.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/next/gettingStarted/helm/index.html b/docs/next/gettingStarted/helm/index.html
index 14f2732..7e5db5a 100644
--- a/docs/next/gettingStarted/helm/index.html
+++ b/docs/next/gettingStarted/helm/index.html
@@ -6,16 +6,16 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Deploy Submarine with Helm | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="Deploy Submarine with Helm | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/gettingStarted/helm"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/gettingStarted/helm"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/11fdf8a8.cd5da2d5.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/935f2afb.9989d552.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/11fdf8a8.f352bfda.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -32,15 +32,15 @@
 and set the configuration &quot;extraPortMappings&quot; when creating the k8s cluster.</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">kind: Cluster</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">apiVersion: kind.x-k8s.io/v1alpha4</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">nodes:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">- role: control-plane</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  extraPortMappings:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  - containerPort: 32080</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    hostPort: [the port you want to access]</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain"># Use nodePort and Traefik ingress controller by default.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"># To access the submarine server, open the following URL in your browser.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">http://127.0.0.1:32080</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>If minikube is installed, use the following command to find the URL to the Submarine server.</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">$ minikube service submarine-traefik --url</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/gettingStarted/helm.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"></div><div class="pagination-nav__item pagination-nav__item--next"></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#prerequisite" class="table-of-contents__link">Prerequisite</a></li><li><a href="#deploy-submarine-to-kubernetes" class="table-of-contents__link">Deploy Submarine to Kubernetes</a></li><li><a href="#verify-installation" class="table-of-contents__link">Verify installation</a></li><li><a href="#uninstall-submarine" class="table-of-contents__link">Uninstall Submarine</a></li><li><a href="#volume-type" class="table-of-contents__link">Volume Type</a><ul><li><a href="#access-to-submarine-server" class="table-of-contents__link">Access to Submarine Server</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/11fdf8a8.cd5da2d5.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/935f2afb.9989d552.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/11fdf8a8.f352bfda.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/next/gettingStarted/kind/index.html b/docs/next/gettingStarted/kind/index.html
index 0fb6ef6..59a0b07 100644
--- a/docs/next/gettingStarted/kind/index.html
+++ b/docs/next/gettingStarted/kind/index.html
@@ -6,31 +6,31 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Setup a Kubernetes cluster using KinD | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="Setup a Kubernetes cluster using KinD | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/gettingStarted/kind"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/gettingStarted/kind"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/4f73ab67.fb11b96c.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/935f2afb.9989d552.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/4f73ab67.91bf3490.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/gettingStarted/kind">master 🏃</a></li><li><a class="dropdown__link" href="/docs/gettingStarted/kind">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/gettingStarted/kind">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/gettingStarted/kind">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/gettingStarted/kind">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Setup a Kubernetes cluster using KinD</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="create-kubernetes-cluster-with-kind"></a>Create Kubernetes cluster with KinD<a class="hash-link" href="#create-kubernetes-cluster-with-kind" title="Direct link to heading">#</a></h2><p>We recommend users developing Submarine with minikube. However, <a href="https://kind.sigs.k8s.io/" target="_blank" rel="noopener noreferrer"><code>KinD</code></a> is also an option to setup a Kubernetes cluster on your local machine.</p><p>Run the following command, and specify the KinD version and Kubernetes version <a href="/docs/next/devDocs/Dependencies"><code>here</code></a>.</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Download the specific version of KinD (must &gt;= v0.6.0)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">export</span><span class="token plain"> </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">KIND_VERSION</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">v0.11.1</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token function" style="color:rgb(130, 170, 255)">curl</span><span class="token plain"> -Lo ./kind https://github.com/kubernetes-sigs/kind/releases/download/</span><span class="token variable" style="color:rgb(191, 199, 213)">${KIND_VERSION}</span><span class="token plain">/kind-linux-amd64</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Make the binary executable</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token function" style="color:rgb(130, 170, 255)">chmod</span><span class="token plain"> +x ./kind</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Move the binary to your executable path</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token function" style="color:rgb(130, 170, 255)">sudo</span><span class="token plain"> </span><span class="token function" style="color:rgb(130, 170, 255)">mv</span><span class="token plain"> ./kind /usr/local/bin/</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Create cluster with specific version of kubernetes</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">export</span><span class="token plain"> </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">KUBE_VERSION</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">v1.15.12</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">kind create cluster --image kindest/node:</span><span class="token variable" style="color:rgb(191, 199, 213)">${KUBE_VERSION}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="kubernetes-dashboard-optional"></a>Kubernetes Dashboard (optional)<a class="hash-link" href="#kubernetes-dashboard-optional" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="deploy"></a>Deploy<a class="hash-link" href="#deploy" title="Direct link to heading">#</a></h3><p>To deploy Dashboard, execute the following command:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta8/aio/deploy/recommended.yaml</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="create-rbac"></a>Create RBAC<a class="hash-link" href="#create-rbac" title="Direct link to heading">#</a></h3><p>Run the following commands to grant the cluster access permission of dashboard:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">kubectl create serviceaccount dashboard-admin-sa</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">kubectl create clusterrolebinding dashboard-admin-sa --clusterrole=cluster-admin --serviceaccount=default:dashboard-admin-sa</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="get-access-token-optional"></a>Get access token (optional)<a class="hash-link" href="#get-access-token-optional" title="Direct link to heading">#</a></h3><p>If you want to use the token to login the dashboard, run the following commands to get key:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">kubectl get secrets</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"># select the right dashboard-admin-sa-token to describe the secret</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">kubectl describe secret dashboard-admin-sa-token-6nhkx</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="start-dashboard-service"></a>Start dashboard service<a class="hash-link" href="#start-dashboard-service" title="Direct link to heading">#</a></h3><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">kubectl proxy</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Now access Dashboard at:</p><blockquote><p>http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/</p></blockquote><p>Dashboard screenshot:</p><p><img src="/assets/images/kind-dashboard-96b734dca17dd1d6043efad54f4c4725.png"></p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/gettingStarted/kind.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"></div><div class="pagination-nav__item pagination-nav__item--next"></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#create-kubernetes-cluster-with-kind" class="table-of-contents__link">Create Kubernetes cluster with KinD</a></li><li><a href="#kubernetes-dashboard-optional" class="table-of-contents__link">Kubernetes Dashboard (optional)</a><ul><li><a href="#deploy" class="table-of-contents__link">Deploy</a></li><li><a href="#create-rbac" class="table-of-contents__link">Create RBAC</a></li><li><a href="#get-access-token-optional" class="table-of-contents__link">Get access token (optional)</a></li><li><a href="#start-dashboard-service" class="table-of-contents__link">Start dashboard service</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/4f73ab67.fb11b96c.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/935f2afb.9989d552.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/4f73ab67.91bf3490.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/next/gettingStarted/notebook/index.html b/docs/next/gettingStarted/notebook/index.html
index a812941..0f923fc 100644
--- a/docs/next/gettingStarted/notebook/index.html
+++ b/docs/next/gettingStarted/notebook/index.html
@@ -6,20 +6,20 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Jupyter Notebook | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="Jupyter Notebook | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/gettingStarted/notebook"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/gettingStarted/notebook"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/ed46a2dd.429a9c4b.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/935f2afb.9989d552.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/ed46a2dd.ef3898b5.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/gettingStarted/notebook">master 🏃</a></li><li><a class="dropdown__link" href="/docs/gettingStarted/notebook">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/gettingStarted/notebook">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/gettingStarted/notebook">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Administrator Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine on Yarn</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/adminDocs/yarn/README">Running Submarine on YARN (deprecated)</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/gettingStarted/notebook">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Jupyter Notebook</h1></header><div class="markdown"><p>This guide describes how to use Jupyter notebook in Submarine to launch
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/gettingStarted/notebook">master 🏃</a></li><li><a class="dropdown__link" href="/docs/gettingStarted/notebook">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/gettingStarted/notebook">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/gettingStarted/notebook">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/gettingStarted/notebook">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Jupyter Notebook</h1></header><div class="markdown"><p>This guide describes how to use Jupyter notebook in Submarine to launch
 and manage Jupyter notebooks.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="working-with-notebooks"></a>Working with notebooks<a class="hash-link" href="#working-with-notebooks" title="Direct link to heading">#</a></h2><p>We recommend using Web UI to manage notebooks.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="notebooks-web-ui"></a>Notebooks Web UI<a class="hash-link" href="#notebooks-web-ui" title="Direct link to heading">#</a></h3><p>Notebooks can be started from the Web UI. You can click the “Notebook” tab in the
 left-hand panel to manage your notebooks.</p><p><img src="/assets/images/notebook-list-507c0f9a50f6cd5637891c13c62d4650.png"></p><p>To create a new notebook server, click “New Notebook”. You should see a form for entering
 details of your new notebook server.</p><ul><li>Notebook Name : Name of the notebook server. It should follow the rules below.<ol><li>Contain at most 63 characters.</li><li>Contain only lowercase alphanumeric characters or &#x27;-&#x27;.</li><li>Start with an alphabetic character.</li><li>End with an alphanumeric character.</li></ol></li><li>Environment : It defines a set of libraries and docker image.</li><li>CPU and Memory</li><li>GPU (optional)</li><li>EnvVar (optional) : Injects environment variables into the notebook.</li></ul><p>If you want to use notebook-gpu-env, you should set up the gpu environment in your kubernetes.
@@ -35,15 +35,15 @@
 </span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>You can create a new notebook, paste the above code and run it. Or, you can find the notebook <a href="https://github.com/apache/submarine/blob/master/submarine-sdk/pysubmarine/example/submarine_experiment_sdk.ipynb" target="_blank" rel="noopener noreferrer"><code>submarine_experiment_sdk.ipynb</code></a> inside the launched notebook session. You can open it, try it out.</p><p>After experiment submitted to Submarine server, you can find the experiment jobs on the UI.</p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/gettingStarted/notebook.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/next/gettingStarted/quickstart"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Quickstart</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/next/userDocs/api/experiment"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Experiment REST API »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#working-with-notebooks" class="table-of-contents__link">Working with notebooks</a><ul><li><a href="#notebooks-web-ui" class="table-of-contents__link">Notebooks Web UI</a></li></ul></li><li><a href="#experiment-with-your-notebook" class="table-of-contents__link">Experiment with your notebook</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/ed46a2dd.429a9c4b.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/935f2afb.9989d552.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/ed46a2dd.ef3898b5.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/next/gettingStarted/python-sdk/index.html b/docs/next/gettingStarted/python-sdk/index.html
index 3baea0a..888d76f 100644
--- a/docs/next/gettingStarted/python-sdk/index.html
+++ b/docs/next/gettingStarted/python-sdk/index.html
@@ -6,16 +6,16 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Submarine Python SDK | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="Submarine Python SDK | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/gettingStarted/python-sdk"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/gettingStarted/python-sdk"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/0c952090.4acecd69.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/935f2afb.9989d552.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/0c952090.a7ad2758.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -25,15 +25,15 @@
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Make sure to install using Python 3</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">python3 virtualenv-16.0.0/virtualenv.py venv</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">.</span><span class="token plain"> venv/bin/activate</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="install-submarine-sdk"></a>Install Submarine SDK<a class="hash-link" href="#install-submarine-sdk" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="install-sdk-from-pypiorg-recommended"></a>Install SDK from pypi.org (recommended)<a class="hash-link" href="#install-sdk-from-pypiorg-recommended" title="Direct link to heading">#</a></h3><p>Starting from <code>0.4.0</code>, Submarine provides Python SDK. Please change it to a proper version needed. </p><p>More detail: <a href="https://pypi.org/project/apache-submarine/" target="_blank" rel="noopener noreferrer">https://pypi.org/project/apache-submarine/</a></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Install latest stable version</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">pip </span><span class="token function" style="color:rgb(130, 170, 255)">install</span><span class="token plain"> apache-submarine</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Install specific version</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">pip </span><span class="token function" style="color:rgb(130, 170, 255)">install</span><span class="token plain"> apache-submarine</span><span class="token operator" style="color:rgb(137, 221, 255)">==</span><span class="token operator" style="color:rgb(137, 221, 255)">&lt;</span><span class="token plain">REPLACE_VERSION</span><span class="token operator" style="color:rgb(137, 221, 255)">&gt;</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="install-sdk-from-source-code"></a>Install SDK from source code<a class="hash-link" href="#install-sdk-from-source-code" title="Direct link to heading">#</a></h3><p>Please first clone code from github or go to <code>http://submarine.apache.org/download.html</code> to download released source code.</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token function" style="color:rgb(130, 170, 255)">git</span><span class="token plain"> clone https://github.com/apache/submarine.git</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># (optional) chackout specific branch or release</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token function" style="color:rgb(130, 170, 255)">git</span><span class="token plain"> checkout </span><span class="token operator" style="color:rgb(137, 221, 255)">&lt;</span><span class="token plain">correct release tag/branch</span><span class="token operator" style="color:rgb(137, 221, 255)">&gt;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">cd</span><span class="token plain"> submarine/submarine-sdk/pysubmarine</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">pip </span><span class="token function" style="color:rgb(130, 170, 255)">install</span><span class="token plain"> </span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">.</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="manage-submarine-experiment"></a>Manage Submarine Experiment<a class="hash-link" href="#manage-submarine-experiment" title="Direct link to heading">#</a></h2><p>Assuming you&#x27;ve installed submarine on K8s and forward the traefik service to localhost, now you can open a Python shell, Jupyter notebook or any tools with Submarine SDK installed.</p><p>Follow <a href="https://github.com/apache/submarine/blob/master/submarine-sdk/pysubmarine/example/submarine_experiment_sdk.ipynb" target="_blank" rel="noopener noreferrer">SDK experiment example</a> to run an experiment.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="training-a-deepfm-model"></a>Training a DeepFM model<a class="hash-link" href="#training-a-deepfm-model" title="Direct link to heading">#</a></h2><p>The Submarine also supports users to train an easy-to-use CTR model with a few lines of code and a configuration file, so they don’t need to reimplement the model by themself. In addition, they can train the model on both local on distributed systems, such as Hadoop or Kubernetes.</p><p>Follow <a href="https://github.com/apache/submarine/blob/master/submarine-sdk/pysubmarine/example/deepfm_example.ipynb" target="_blank" rel="noopener noreferrer">SDK DeepFM example</a> to try the model.</p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/gettingStarted/python-sdk.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"></div><div class="pagination-nav__item pagination-nav__item--next"></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#prepare-python-environment-to-run-submarine-sdk" class="table-of-contents__link">Prepare Python Environment to run Submarine SDK</a></li><li><a href="#install-submarine-sdk" class="table-of-contents__link">Install Submarine SDK</a><ul><li><a href="#install-sdk-from-pypiorg-recommended" class="table-of-contents__link">Install SDK from pypi.org (recommended)</a></li><li><a href="#install-sdk-from-source-code" class="table-of-contents__link">Install SDK from source code</a></li></ul></li><li><a href="#manage-submarine-experiment" class="table-of-contents__link">Manage Submarine Experiment</a></li><li><a href="#training-a-deepfm-model" class="table-of-contents__link">Training a DeepFM model</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/0c952090.4acecd69.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/935f2afb.9989d552.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/0c952090.a7ad2758.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/next/gettingStarted/quickstart/index.html b/docs/next/gettingStarted/quickstart/index.html
index f36538d..d293c4b 100644
--- a/docs/next/gettingStarted/quickstart/index.html
+++ b/docs/next/gettingStarted/quickstart/index.html
@@ -6,20 +6,20 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Quickstart | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="Quickstart | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/gettingStarted/quickstart"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/gettingStarted/quickstart"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/5f825119.8be707a1.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/935f2afb.9989d552.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/5f825119.bc4c3d6a.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a aria-current="page" class="navbar__item navbar__link navbar__link--active navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/gettingStarted/quickstart">master 🏃</a></li><li><a class="dropdown__link" href="/docs/gettingStarted/quickstart">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link navbar__link--active navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/gettingStarted/quickstart">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/gettingStarted/quickstart">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Administrator Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine on Yarn</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/adminDocs/yarn/README">Running Submarine on YARN (deprecated)</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/gettingStarted/quickstart">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Quickstart</h1></header><div class="markdown"><p>This document gives you a quick view on the basic usage of Submarine platform. You can finish each step of ML model lifecycle on the platform without messing up with the troublesome environment problems.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="installation"></a>Installation<a class="hash-link" href="#installation" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="prepare-a-kubernetes-cluster"></a>Prepare a Kubernetes cluster<a class="hash-link" href="#prepare-a-kubernetes-cluster" title="Direct link to heading">#</a></h3><ol><li>Prerequisite</li></ol><ul><li>Check <a href="https://github.com/apache/submarine/blob/master/website/docs/devDocs/Dependencies.md" target="_blank" rel="noopener noreferrer">dependency page</a> for the compatible version</li><li><a href="https://kubernetes.io/docs/tasks/tools/install-kubectl/" target="_blank" rel="noopener noreferrer">kubectl</a></li><li><a href="https://helm.sh/docs/intro/install/" target="_blank" rel="noopener noreferrer">helm</a> (Helm v3 is minimum requirement.)</li><li><a href="https://minikube.sigs.k8s.io/docs/start/" target="_blank" rel="noopener noreferrer">minikube</a>.</li></ul><ol start="2"><li>Start minikube cluster</li></ol><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">minikube start --vm-driver=docker --cpus 8 --memory 4096 --kubernetes-version v1.21.2</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="launch-submarine-in-the-cluster"></a>Launch submarine in the cluster<a class="hash-link" href="#launch-submarine-in-the-cluster" title="Direct link to heading">#</a></h3><ol><li>Clone the project</li></ol><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">git clone https://github.com/apache/submarine.git</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><ol start="2"><li>Install the submarine operator and dependencies by helm chart</li></ol><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">cd submarine</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">helm install submarine ./helm-charts/submarine</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><ol start="3"><li>Create a Submarine custom resource and the operator will create the submarine server, database, etc. for us.</li></ol><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">kubectl apply -f submarine-cloud-v2/artifacts/examples/example-submarine.yaml</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="ensure-submarine-is-ready"></a>Ensure submarine is ready<a class="hash-link" href="#ensure-submarine-is-ready" title="Direct link to heading">#</a></h3><ol><li>Use kubectl to query the status of pods</li></ol><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">kubectl get pods</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><ol start="2"><li>Make sure each pod is <code>Running</code></li></ol><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">NAME                                              READY   STATUS    RESTARTS   AGE</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">notebook-controller-deployment-5d4f5f874c-mnbc8   1/1     Running   0          61m</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">pytorch-operator-844c866d54-xm8nl                 1/1     Running   2          61m</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">submarine-database-85bd68dbc5-qggtm               1/1     Running   0          11m</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">submarine-minio-76465444f6-hdgdp                  1/1     Running   0          11m</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">submarine-mlflow-75f86d8f4d-rj2z7                 1/1     Running   0          11m</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">submarine-operator-5dd79cdf86-gpm2p               1/1     Running   0          61m</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">submarine-server-68985b767-vjdvx                  1/1     Running   0          11m</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">submarine-tensorboard-5df8499fd4-vnklf            1/1     Running   0          11m</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">submarine-traefik-7cbcfd4bd9-wbf8b                1/1     Running   0          61m</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">tf-job-operator-6bb69fd44-zmlmr                   1/1     Running   1          61m</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="connect-to-workbench"></a>Connect to workbench<a class="hash-link" href="#connect-to-workbench" title="Direct link to heading">#</a></h3><ol><li><p>Exposing service</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain"># Method 1 -- use minikube ip</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">minikube ip  # you&#x27;ll get the IP address of minikube, ex: 192.168.49.2</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a aria-current="page" class="navbar__item navbar__link navbar__link--active navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/gettingStarted/quickstart">master 🏃</a></li><li><a class="dropdown__link" href="/docs/gettingStarted/quickstart">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link navbar__link--active navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/gettingStarted/quickstart">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/gettingStarted/quickstart">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/gettingStarted/quickstart">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Quickstart</h1></header><div class="markdown"><p>This document gives you a quick view on the basic usage of Submarine platform. You can finish each step of ML model lifecycle on the platform without messing up with the troublesome environment problems.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="installation"></a>Installation<a class="hash-link" href="#installation" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="prepare-a-kubernetes-cluster"></a>Prepare a Kubernetes cluster<a class="hash-link" href="#prepare-a-kubernetes-cluster" title="Direct link to heading">#</a></h3><ol><li>Prerequisite</li></ol><ul><li>Check <a href="https://github.com/apache/submarine/blob/master/website/docs/devDocs/Dependencies.md" target="_blank" rel="noopener noreferrer">dependency page</a> for the compatible version</li><li><a href="https://kubernetes.io/docs/tasks/tools/install-kubectl/" target="_blank" rel="noopener noreferrer">kubectl</a></li><li><a href="https://helm.sh/docs/intro/install/" target="_blank" rel="noopener noreferrer">helm</a> (Helm v3 is minimum requirement.)</li><li><a href="https://minikube.sigs.k8s.io/docs/start/" target="_blank" rel="noopener noreferrer">minikube</a>.</li></ul><ol start="2"><li>Start minikube cluster</li></ol><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">minikube start --vm-driver=docker --cpus 8 --memory 4096 --kubernetes-version v1.21.2</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="launch-submarine-in-the-cluster"></a>Launch submarine in the cluster<a class="hash-link" href="#launch-submarine-in-the-cluster" title="Direct link to heading">#</a></h3><ol><li>Clone the project</li></ol><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">git clone https://github.com/apache/submarine.git</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><ol start="2"><li>Install the submarine operator and dependencies by helm chart</li></ol><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">cd submarine</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">helm install submarine ./helm-charts/submarine</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><ol start="3"><li>Create a Submarine custom resource and the operator will create the submarine server, database, etc. for us.</li></ol><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">kubectl apply -f submarine-cloud-v2/artifacts/examples/example-submarine.yaml</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="ensure-submarine-is-ready"></a>Ensure submarine is ready<a class="hash-link" href="#ensure-submarine-is-ready" title="Direct link to heading">#</a></h3><ol><li>Use kubectl to query the status of pods</li></ol><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">kubectl get pods</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><ol start="2"><li>Make sure each pod is <code>Running</code></li></ol><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">NAME                                              READY   STATUS    RESTARTS   AGE</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">notebook-controller-deployment-5d4f5f874c-mnbc8   1/1     Running   0          61m</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">pytorch-operator-844c866d54-xm8nl                 1/1     Running   2          61m</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">submarine-database-85bd68dbc5-qggtm               1/1     Running   0          11m</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">submarine-minio-76465444f6-hdgdp                  1/1     Running   0          11m</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">submarine-mlflow-75f86d8f4d-rj2z7                 1/1     Running   0          11m</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">submarine-operator-5dd79cdf86-gpm2p               1/1     Running   0          61m</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">submarine-server-68985b767-vjdvx                  1/1     Running   0          11m</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">submarine-tensorboard-5df8499fd4-vnklf            1/1     Running   0          11m</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">submarine-traefik-7cbcfd4bd9-wbf8b                1/1     Running   0          61m</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">tf-job-operator-6bb69fd44-zmlmr                   1/1     Running   1          61m</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="connect-to-workbench"></a>Connect to workbench<a class="hash-link" href="#connect-to-workbench" title="Direct link to heading">#</a></h3><ol><li><p>Exposing service</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain"># Method 1 -- use minikube ip</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">minikube ip  # you&#x27;ll get the IP address of minikube, ex: 192.168.49.2</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"># Method 2 -- use port-forwarding</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">kubectl port-forward --address 0.0.0.0 service/submarine-traefik 32080:80</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></li><li><p>View workbench
 If you use method 1, go to <code>http://{minikube ip}:32080</code>. For example, <code>http://192.168.49.2:32080</code>. If you use method 2, go to <code>http://0.0.0.0:32080</code>.
 <img src="/assets/images/quickstart-worbench-0d8c2f6217f22460d4cf8e9b05d06f6b.png"></p></li></ol><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="example-submit-a-mnist-distributed-example"></a>Example: Submit a mnist distributed example<a class="hash-link" href="#example-submit-a-mnist-distributed-example" title="Direct link to heading">#</a></h2><p>We put the code of this example <a href="https://github.com/apache/submarine/tree/master/dev-support/examples/quickstart" target="_blank" rel="noopener noreferrer">here</a>. <code>train.py</code> is our training script, and <code>build.sh</code> is the script to build a docker image.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="1-write-a-python-script-for-distributed-training"></a>1. Write a python script for distributed training<a class="hash-link" href="#1-write-a-python-script-for-distributed-training" title="Direct link to heading">#</a></h3><p>Take a simple mnist tensorflow script as an example. We choose <code>MultiWorkerMirroredStrategy</code> as our distributed strategy.</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-python codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token triple-quoted-string string" style="color:rgb(195, 232, 141)">&quot;&quot;&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token triple-quoted-string string" style="color:rgb(195, 232, 141)">./dev-support/examples/quickstart/train.py</span></div><div class="token-line" style="color:#bfc7d5"><span class="token triple-quoted-string string" style="color:rgb(195, 232, 141)">Reference: https://github.com/kubeflow/tf-operator/blob/master/examples/v1/distribution_strategy/keras-API/multi_worker_strategy-with-keras.py</span></div><div class="token-line" style="color:#bfc7d5"><span class="token triple-quoted-string string" style="color:rgb(195, 232, 141)">&quot;&quot;&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
@@ -47,15 +47,15 @@
 <img src="/assets/images/quickstart-ui-2-6272b91c4aae8277ebb3500ad6658553.png"></p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="5-serve-the-model-in-development"></a>5. Serve the model (In development)<a class="hash-link" href="#5-serve-the-model-in-development" title="Direct link to heading">#</a></h3></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/gettingStarted/quickstart.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/next/gettingStarted/notebook"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Jupyter Notebook »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#installation" class="table-of-contents__link">Installation</a><ul><li><a href="#prepare-a-kubernetes-cluster" class="table-of-contents__link">Prepare a Kubernetes cluster</a></li><li><a href="#launch-submarine-in-the-cluster" class="table-of-contents__link">Launch submarine in the cluster</a></li><li><a href="#ensure-submarine-is-ready" class="table-of-contents__link">Ensure submarine is ready</a></li><li><a href="#connect-to-workbench" class="table-of-contents__link">Connect to workbench</a></li></ul></li><li><a href="#example-submit-a-mnist-distributed-example" class="table-of-contents__link">Example: Submit a mnist distributed example</a><ul><li><a href="#1-write-a-python-script-for-distributed-training" class="table-of-contents__link">1. Write a python script for distributed training</a></li><li><a href="#2-prepare-an-environment-compatible-with-the-training" class="table-of-contents__link">2. Prepare an environment compatible with the training</a></li><li><a href="#3-submit-the-experiment" class="table-of-contents__link">3. Submit the experiment</a></li><li><a href="#4-monitor-the-process" class="table-of-contents__link">4. Monitor the process</a></li><li><a href="#5-serve-the-model-in-development" class="table-of-contents__link">5. Serve the model (In development)</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/5f825119.8be707a1.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/935f2afb.9989d552.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/5f825119.bc4c3d6a.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/next/index.html b/docs/next/index.html
index 9a5742a..1b71978 100644
--- a/docs/next/index.html
+++ b/docs/next/index.html
@@ -6,16 +6,16 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Submarine Local Deployment | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="Submarine Local Deployment | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/c18d5a16.6bdbdd39.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/935f2afb.9989d552.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/c18d5a16.d84dd42a.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -23,15 +23,15 @@
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Method2 -- using port-forwarding</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">$ kubectl port-forward --address </span><span class="token number" style="color:rgb(247, 140, 108)">0.0</span><span class="token plain">.0.0 service/submarine-traefik </span><span class="token number" style="color:rgb(247, 140, 108)">32080</span><span class="token plain">:80</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="open-workbench-in-the-browser"></a>Open Workbench in the browser.<a class="hash-link" href="#open-workbench-in-the-browser" title="Direct link to heading">#</a></h2><p>Open http://{minikube ip}:32080(from Method1), ex: <a href="http://192.168.49.2:32080" target="_blank" rel="noopener noreferrer">http://192.168.49.2:32080</a></p><p>or <a href="http://127.0.0.1:32080" target="_blank" rel="noopener noreferrer">http://127.0.0.1:32080</a> (from Method 2).</p><p>The default username and password is <code>admin</code> and <code>admin</code></p><p><img src="https://i.imgur.com/DkZhyEG.png"></p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="uninstall-submarine"></a>Uninstall Submarine<a class="hash-link" href="#uninstall-submarine" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">$ helm delete submarine</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/gettingStarted/localDeployment.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"></div><div class="pagination-nav__item pagination-nav__item--next"></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#prerequisite" class="table-of-contents__link">Prerequisite</a></li><li><a href="#deploy-kubernetes-cluster" class="table-of-contents__link">Deploy Kubernetes Cluster</a></li><li><a href="#install-submarine-on-kubernetes" class="table-of-contents__link">Install Submarine on Kubernetes</a></li><li><a href="#verify-installation" class="table-of-contents__link">Verify installation</a></li><li><a href="#access-submarine-in-a-cluster" class="table-of-contents__link">Access Submarine in a Cluster</a></li><li><a href="#open-workbench-in-the-browser" class="table-of-contents__link">Open Workbench in the browser.</a></li><li><a href="#uninstall-submarine" class="table-of-contents__link">Uninstall Submarine</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/c18d5a16.6bdbdd39.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/935f2afb.9989d552.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/c18d5a16.d84dd42a.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/next/userDocs/api/environment/index.html b/docs/next/userDocs/api/environment/index.html
index b2bb4f4..62e1a38 100644
--- a/docs/next/userDocs/api/environment/index.html
+++ b/docs/next/userDocs/api/environment/index.html
@@ -6,31 +6,31 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Environment REST API | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="Environment REST API | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/userDocs/api/environment"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/userDocs/api/environment"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/22e91045.66821ff3.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/935f2afb.9989d552.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/22e91045.3cd10386.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/userDocs/api/environment">master 🏃</a></li><li><a class="dropdown__link" href="/docs/userDocs/api/environment">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/userDocs/api/environment">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/userDocs/api/environment">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!" tabindex="0">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Administrator Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine on Yarn</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/adminDocs/yarn/README">Running Submarine on YARN (deprecated)</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/userDocs/api/environment">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Environment REST API</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="create-environment"></a>Create Environment<a class="hash-link" href="#create-environment" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">POST /api/v1/environment</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="parameters"></a>Parameters<a class="hash-link" href="#parameters" title="Direct link to heading">#</a></h3><p>Put EnvironmentSpec in request body.</p><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="environmentspec"></a><strong>EnvironmentSpec</strong><a class="hash-link" href="#environmentspec" title="Direct link to heading">#</a></h4><table><thead><tr><th>Field Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>name</td><td>String</td><td>Environment name.</td></tr><tr><td>dockerImage</td><td>String</td><td>Docker image name.</td></tr><tr><td>kernelSpec</td><td>KernelSpec</td><td>Environment spec.</td></tr><tr><td>description</td><td>String</td><td>Description of environment.</td></tr></tbody></table><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="kernelspec"></a><strong>KernelSpec</strong><a class="hash-link" href="#kernelspec" title="Direct link to heading">#</a></h4><table><thead><tr><th>Field Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>name</td><td>String</td><td>Kernel name.</td></tr><tr><td>channels</td><td>List&lt;String&gt;</td><td>Names of the channels.</td></tr><tr><td>condaDependencies</td><td>List&lt;String&gt;</td><td>List of kernel conda dependencies.</td></tr><tr><td>pipDependencies</td><td>List&lt;String&gt;</td><td>List of kernel pip dependencies.</td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example"></a>Code Example<a class="hash-link" href="#code-example" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X POST -H &quot;Content-Type: application/json&quot; -d &#x27;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">{</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;name&quot;: &quot;my-submarine-env&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;dockerImage&quot; : &quot;continuumio/anaconda3&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;kernelSpec&quot; : {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;name&quot; : &quot;team_default_python_3.7&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;channels&quot; : [&quot;defaults&quot;],</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;condaDependencies&quot; :</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      [&quot;_ipyw_jlab_nb_ext_conf=0.1.0=py37_0&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;alabaster=0.7.12=py37_0&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;anaconda=2020.02=py37_0&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;anaconda-client=1.7.2=py37_0&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;anaconda-navigator=1.9.12=py37_0&quot;],</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;pipDependencies&quot; :</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      [&quot;apache-submarine==0.5.0&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;pyarrow==0.17.0&quot;]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">}</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">&#x27; http://127.0.0.1:32080/api/v1/environment</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;environmentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;environment_1626160071451_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;environmentSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;my-submarine-env&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;continuumio/anaconda3&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;team_default_python_3.7&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;channels&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;defaults&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;condaDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;_ipyw_jlab_nb_ext_conf\u003d0.1.0\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;alabaster\u003d0.7.12\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;anaconda\u003d2020.02\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;anaconda-client\u003d1.7.2\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;anaconda-navigator\u003d1.9.12\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;pipDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache-submarine\u003d\u003d0.5.0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;pyarrow\u003d\u003d0.17.0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="list-environment"></a>List Environment<a class="hash-link" href="#list-environment" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">GET /api/v1/environment</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example-1"></a>Code Example<a class="hash-link" href="#code-example-1" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X GET http://127.0.0.1:32080/api/v1/environment</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environmentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;environment_1600862964725_0002&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environmentSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;notebook-gpu-env&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:jupyter-notebook-gpu-0.7.0-SNAPSHOT&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;submarine_jupyter_py3&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;channels&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;defaults&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;condaDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;pipDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environmentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;environment_1626160071451_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environmentSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;my-submarine-env&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;continuumio/anaconda3&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;team_default_python_3.7&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;channels&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;defaults&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;condaDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;_ipyw_jlab_nb_ext_conf\u003d0.1.0\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;alabaster\u003d0.7.12\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;anaconda\u003d2020.02\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;anaconda-client\u003d1.7.2\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;anaconda-navigator\u003d1.9.12\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;pipDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache-submarine\u003d\u003d0.5.0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;pyarrow\u003d\u003d0.17.0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environmentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;environment_1600862964725_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environmentSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;notebook-env&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:jupyter-notebook-0.7.0-SNAPSHOT&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;submarine_jupyter_py3&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;channels&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;defaults&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;condaDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;pipDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="get-environment"></a>Get Environment<a class="hash-link" href="#get-environment" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">GET /api/v1/environment/{name}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="parameters-1"></a>Parameters<a class="hash-link" href="#parameters-1" title="Direct link to heading">#</a></h3><table><thead><tr><th>Field Name</th><th>Type</th><th>In</th><th>Description</th></tr></thead><tbody><tr><td>name</td><td>String</td><td>path</td><td>Environment name.</td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example-2"></a>Code Example<a class="hash-link" href="#code-example-2" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X GET http://127.0.0.1:32080/api/v1/environment/my-submarine-env</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;environmentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;environment_1626160071451_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;environmentSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;my-submarine-env&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;continuumio/anaconda3&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;team_default_python_3.7&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;channels&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;defaults&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;condaDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;_ipyw_jlab_nb_ext_conf\u003d0.1.0\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;alabaster\u003d0.7.12\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;anaconda\u003d2020.02\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;anaconda-client\u003d1.7.2\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;anaconda-navigator\u003d1.9.12\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;pipDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache-submarine\u003d\u003d0.5.0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;pyarrow\u003d\u003d0.17.0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="patch-environment"></a>Patch Environment<a class="hash-link" href="#patch-environment" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">PATCH /api/v1/environment/{name}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="parameters-2"></a>Parameters<a class="hash-link" href="#parameters-2" title="Direct link to heading">#</a></h3><table><thead><tr><th>Field Name</th><th>Type</th><th>In</th><th>Description</th></tr></thead><tbody><tr><td>name</td><td>String</td><td>path and body</td><td>Environment name.</td></tr><tr><td>dockerImage</td><td>String</td><td>body</td><td>Docker image name.</td></tr><tr><td>kernelSpec</td><td>KernelSpec</td><td>body</td><td>Environment spec.</td></tr><tr><td>description</td><td>String</td><td>body</td><td>Description of environment. This field is optional.</td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example-3"></a>Code Example<a class="hash-link" href="#code-example-3" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X PATCH -H &quot;Content-Type: application/json&quot; -d &#x27;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">{</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;name&quot;: &quot;my-submarine-env&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;dockerImage&quot; : &quot;continuumio/anaconda3&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;kernelSpec&quot; : {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;name&quot; : &quot;team_default_python_3.7_updated&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;channels&quot; : [&quot;defaults&quot;],</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;condaDependencies&quot; :</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      [&quot;_ipyw_jlab_nb_ext_conf=0.1.0=py37_0&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;alabaster=0.7.12=py37_0&quot;],</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;pipDependencies&quot; :</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      []</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">}</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">&#x27; http://127.0.0.1:32080/api/v1/environment/my-submarine-env</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;environmentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;environment_1626160071451_0003&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;environmentSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;my-submarine-env&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;continuumio/anaconda3&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;team_default_python_3.7_updated&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;channels&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;defaults&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;condaDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;_ipyw_jlab_nb_ext_conf\u003d0.1.0\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;alabaster\u003d0.7.12\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;pipDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="delete-environment"></a>Delete Environment<a class="hash-link" href="#delete-environment" title="Direct link to heading">#</a></h3><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">DELETE /api/v1/environment/{name}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="parameters-3"></a>Parameters<a class="hash-link" href="#parameters-3" title="Direct link to heading">#</a></h3><table><thead><tr><th>Field Name</th><th>Type</th><th>In</th><th>Description</th></tr></thead><tbody><tr><td>name</td><td>String</td><td>path</td><td>Environment name.</td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example-4"></a>Code Example<a class="hash-link" href="#code-example-4" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X DELETE http://127.0.0.1:32080/api/v1/environment/my-submarine-env</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;environmentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;environment_1626160071451_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;environmentSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;my-submarine-env&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;continuumio/anaconda3&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;team_default_python_3.7&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;channels&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;defaults&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;condaDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;_ipyw_jlab_nb_ext_conf\u003d0.1.0\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;alabaster\u003d0.7.12\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;anaconda\u003d2020.02\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;anaconda-client\u003d1.7.2\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;anaconda-navigator\u003d1.9.12\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;pipDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache-submarine\u003d\u003d0.5.0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;pyarrow\u003d\u003d0.17.0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/userDocs/api/environment.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/next/userDocs/api/experiment"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Experiment REST API</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/next/userDocs/api/experiment-template"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Experiment Template REST API »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#create-environment" class="table-of-contents__link">Create Environment</a><ul><li><a href="#parameters" class="table-of-contents__link">Parameters</a></li><li><a href="#code-example" class="table-of-contents__link">Code Example</a></li></ul></li><li><a href="#list-environment" class="table-of-contents__link">List Environment</a><ul><li><a href="#code-example-1" class="table-of-contents__link">Code Example</a></li></ul></li><li><a href="#get-environment" class="table-of-contents__link">Get Environment</a><ul><li><a href="#parameters-1" class="table-of-contents__link">Parameters</a></li><li><a href="#code-example-2" class="table-of-contents__link">Code Example</a></li></ul></li><li><a href="#patch-environment" class="table-of-contents__link">Patch Environment</a><ul><li><a href="#parameters-2" class="table-of-contents__link">Parameters</a></li><li><a href="#code-example-3" class="table-of-contents__link">Code Example</a></li><li><a href="#delete-environment" class="table-of-contents__link">Delete Environment</a></li><li><a href="#parameters-3" class="table-of-contents__link">Parameters</a></li><li><a href="#code-example-4" class="table-of-contents__link">Code Example</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/userDocs/api/environment">master 🏃</a></li><li><a class="dropdown__link" href="/docs/userDocs/api/environment">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/userDocs/api/environment">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/userDocs/api/environment">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!" tabindex="0">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/userDocs/api/environment">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Environment REST API</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="create-environment"></a>Create Environment<a class="hash-link" href="#create-environment" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">POST /api/v1/environment</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="parameters"></a>Parameters<a class="hash-link" href="#parameters" title="Direct link to heading">#</a></h3><p>Put EnvironmentSpec in request body.</p><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="environmentspec"></a><strong>EnvironmentSpec</strong><a class="hash-link" href="#environmentspec" title="Direct link to heading">#</a></h4><table><thead><tr><th>Field Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>name</td><td>String</td><td>Environment name.</td></tr><tr><td>dockerImage</td><td>String</td><td>Docker image name.</td></tr><tr><td>kernelSpec</td><td>KernelSpec</td><td>Environment spec.</td></tr><tr><td>description</td><td>String</td><td>Description of environment.</td></tr></tbody></table><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="kernelspec"></a><strong>KernelSpec</strong><a class="hash-link" href="#kernelspec" title="Direct link to heading">#</a></h4><table><thead><tr><th>Field Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>name</td><td>String</td><td>Kernel name.</td></tr><tr><td>channels</td><td>List&lt;String&gt;</td><td>Names of the channels.</td></tr><tr><td>condaDependencies</td><td>List&lt;String&gt;</td><td>List of kernel conda dependencies.</td></tr><tr><td>pipDependencies</td><td>List&lt;String&gt;</td><td>List of kernel pip dependencies.</td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example"></a>Code Example<a class="hash-link" href="#code-example" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X POST -H &quot;Content-Type: application/json&quot; -d &#x27;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">{</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;name&quot;: &quot;my-submarine-env&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;dockerImage&quot; : &quot;continuumio/anaconda3&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;kernelSpec&quot; : {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;name&quot; : &quot;team_default_python_3.7&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;channels&quot; : [&quot;defaults&quot;],</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;condaDependencies&quot; :</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      [&quot;_ipyw_jlab_nb_ext_conf=0.1.0=py37_0&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;alabaster=0.7.12=py37_0&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;anaconda=2020.02=py37_0&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;anaconda-client=1.7.2=py37_0&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;anaconda-navigator=1.9.12=py37_0&quot;],</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;pipDependencies&quot; :</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      [&quot;apache-submarine==0.5.0&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;pyarrow==0.17.0&quot;]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">}</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">&#x27; http://127.0.0.1:32080/api/v1/environment</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;environmentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;environment_1626160071451_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;environmentSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;my-submarine-env&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;continuumio/anaconda3&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;team_default_python_3.7&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;channels&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;defaults&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;condaDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;_ipyw_jlab_nb_ext_conf\u003d0.1.0\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;alabaster\u003d0.7.12\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;anaconda\u003d2020.02\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;anaconda-client\u003d1.7.2\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;anaconda-navigator\u003d1.9.12\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;pipDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache-submarine\u003d\u003d0.5.0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;pyarrow\u003d\u003d0.17.0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="list-environment"></a>List Environment<a class="hash-link" href="#list-environment" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">GET /api/v1/environment</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example-1"></a>Code Example<a class="hash-link" href="#code-example-1" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X GET http://127.0.0.1:32080/api/v1/environment</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environmentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;environment_1600862964725_0002&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environmentSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;notebook-gpu-env&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:jupyter-notebook-gpu-0.7.0-SNAPSHOT&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;submarine_jupyter_py3&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;channels&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;defaults&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;condaDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;pipDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environmentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;environment_1626160071451_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environmentSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;my-submarine-env&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;continuumio/anaconda3&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;team_default_python_3.7&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;channels&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;defaults&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;condaDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;_ipyw_jlab_nb_ext_conf\u003d0.1.0\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;alabaster\u003d0.7.12\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;anaconda\u003d2020.02\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;anaconda-client\u003d1.7.2\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;anaconda-navigator\u003d1.9.12\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;pipDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache-submarine\u003d\u003d0.5.0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;pyarrow\u003d\u003d0.17.0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environmentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;environment_1600862964725_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environmentSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;notebook-env&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:jupyter-notebook-0.7.0-SNAPSHOT&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;submarine_jupyter_py3&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;channels&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;defaults&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;condaDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;pipDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="get-environment"></a>Get Environment<a class="hash-link" href="#get-environment" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">GET /api/v1/environment/{name}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="parameters-1"></a>Parameters<a class="hash-link" href="#parameters-1" title="Direct link to heading">#</a></h3><table><thead><tr><th>Field Name</th><th>Type</th><th>In</th><th>Description</th></tr></thead><tbody><tr><td>name</td><td>String</td><td>path</td><td>Environment name.</td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example-2"></a>Code Example<a class="hash-link" href="#code-example-2" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X GET http://127.0.0.1:32080/api/v1/environment/my-submarine-env</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;environmentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;environment_1626160071451_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;environmentSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;my-submarine-env&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;continuumio/anaconda3&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;team_default_python_3.7&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;channels&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;defaults&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;condaDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;_ipyw_jlab_nb_ext_conf\u003d0.1.0\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;alabaster\u003d0.7.12\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;anaconda\u003d2020.02\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;anaconda-client\u003d1.7.2\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;anaconda-navigator\u003d1.9.12\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;pipDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache-submarine\u003d\u003d0.5.0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;pyarrow\u003d\u003d0.17.0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="patch-environment"></a>Patch Environment<a class="hash-link" href="#patch-environment" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">PATCH /api/v1/environment/{name}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="parameters-2"></a>Parameters<a class="hash-link" href="#parameters-2" title="Direct link to heading">#</a></h3><table><thead><tr><th>Field Name</th><th>Type</th><th>In</th><th>Description</th></tr></thead><tbody><tr><td>name</td><td>String</td><td>path and body</td><td>Environment name.</td></tr><tr><td>dockerImage</td><td>String</td><td>body</td><td>Docker image name.</td></tr><tr><td>kernelSpec</td><td>KernelSpec</td><td>body</td><td>Environment spec.</td></tr><tr><td>description</td><td>String</td><td>body</td><td>Description of environment. This field is optional.</td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example-3"></a>Code Example<a class="hash-link" href="#code-example-3" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X PATCH -H &quot;Content-Type: application/json&quot; -d &#x27;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">{</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;name&quot;: &quot;my-submarine-env&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;dockerImage&quot; : &quot;continuumio/anaconda3&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;kernelSpec&quot; : {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;name&quot; : &quot;team_default_python_3.7_updated&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;channels&quot; : [&quot;defaults&quot;],</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;condaDependencies&quot; :</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      [&quot;_ipyw_jlab_nb_ext_conf=0.1.0=py37_0&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;alabaster=0.7.12=py37_0&quot;],</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;pipDependencies&quot; :</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      []</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">}</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">&#x27; http://127.0.0.1:32080/api/v1/environment/my-submarine-env</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;environmentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;environment_1626160071451_0003&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;environmentSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;my-submarine-env&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;continuumio/anaconda3&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;team_default_python_3.7_updated&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;channels&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;defaults&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;condaDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;_ipyw_jlab_nb_ext_conf\u003d0.1.0\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;alabaster\u003d0.7.12\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;pipDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="delete-environment"></a>Delete Environment<a class="hash-link" href="#delete-environment" title="Direct link to heading">#</a></h3><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">DELETE /api/v1/environment/{name}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="parameters-3"></a>Parameters<a class="hash-link" href="#parameters-3" title="Direct link to heading">#</a></h3><table><thead><tr><th>Field Name</th><th>Type</th><th>In</th><th>Description</th></tr></thead><tbody><tr><td>name</td><td>String</td><td>path</td><td>Environment name.</td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example-4"></a>Code Example<a class="hash-link" href="#code-example-4" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X DELETE http://127.0.0.1:32080/api/v1/environment/my-submarine-env</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;environmentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;environment_1626160071451_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;environmentSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;my-submarine-env&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;continuumio/anaconda3&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;team_default_python_3.7&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;channels&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;defaults&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;condaDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;_ipyw_jlab_nb_ext_conf\u003d0.1.0\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;alabaster\u003d0.7.12\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;anaconda\u003d2020.02\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;anaconda-client\u003d1.7.2\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;anaconda-navigator\u003d1.9.12\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;pipDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache-submarine\u003d\u003d0.5.0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;pyarrow\u003d\u003d0.17.0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/userDocs/api/environment.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/next/userDocs/api/experiment"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Experiment REST API</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/next/userDocs/api/experiment-template"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Experiment Template REST API »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#create-environment" class="table-of-contents__link">Create Environment</a><ul><li><a href="#parameters" class="table-of-contents__link">Parameters</a></li><li><a href="#code-example" class="table-of-contents__link">Code Example</a></li></ul></li><li><a href="#list-environment" class="table-of-contents__link">List Environment</a><ul><li><a href="#code-example-1" class="table-of-contents__link">Code Example</a></li></ul></li><li><a href="#get-environment" class="table-of-contents__link">Get Environment</a><ul><li><a href="#parameters-1" class="table-of-contents__link">Parameters</a></li><li><a href="#code-example-2" class="table-of-contents__link">Code Example</a></li></ul></li><li><a href="#patch-environment" class="table-of-contents__link">Patch Environment</a><ul><li><a href="#parameters-2" class="table-of-contents__link">Parameters</a></li><li><a href="#code-example-3" class="table-of-contents__link">Code Example</a></li><li><a href="#delete-environment" class="table-of-contents__link">Delete Environment</a></li><li><a href="#parameters-3" class="table-of-contents__link">Parameters</a></li><li><a href="#code-example-4" class="table-of-contents__link">Code Example</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/22e91045.66821ff3.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/935f2afb.9989d552.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/22e91045.3cd10386.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/next/userDocs/api/experiment-template/index.html b/docs/next/userDocs/api/experiment-template/index.html
index 28bf958..e29024d 100644
--- a/docs/next/userDocs/api/experiment-template/index.html
+++ b/docs/next/userDocs/api/experiment-template/index.html
@@ -6,31 +6,31 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Experiment Template REST API | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="Experiment Template REST API | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/userDocs/api/experiment-template"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/userDocs/api/experiment-template"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/a4535337.fd074516.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/935f2afb.9989d552.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/a4535337.739cfe99.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/userDocs/api/experiment-template">master 🏃</a></li><li><a class="dropdown__link" href="/docs/userDocs/api/experiment-template">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/userDocs/api/experiment-template">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/userDocs/api/experiment-template">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!" tabindex="0">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Administrator Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine on Yarn</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/adminDocs/yarn/README">Running Submarine on YARN (deprecated)</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/userDocs/api/experiment-template">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Experiment Template REST API</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="create-experiment-template"></a>Create Experiment Template<a class="hash-link" href="#create-experiment-template" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">POST /api/v1/template</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="parameters"></a>Parameters<a class="hash-link" href="#parameters" title="Direct link to heading">#</a></h3><table><thead><tr><th>Field Name</th><th>Type</th><th>In</th><th>Description</th></tr></thead><tbody><tr><td>name</td><td>String</td><td>body</td><td>Experiment template name. This is required.</td></tr><tr><td>author</td><td>String</td><td>body</td><td>Author name.</td></tr><tr><td>description</td><td>String</td><td>body</td><td>Description of the experiment template.</td></tr><tr><td>parameters</td><td>List&lt;ExperimentTemplateParamSpec&gt;</td><td>body</td><td>Parameters of the experiment template.</td></tr><tr><td>experimentSpec</td><td>ExperimentSpec</td><td>body</td><td>Spec of the experiment template.</td></tr></tbody></table><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="experimenttemplateparamspec"></a><strong>ExperimentTemplateParamSpec</strong><a class="hash-link" href="#experimenttemplateparamspec" title="Direct link to heading">#</a></h4><table><thead><tr><th>Field Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>name</td><td>String</td><td>Parameter name.</td></tr><tr><td>required</td><td>Boolean</td><td>true / false. Whether the parameter is required.</td></tr><tr><td>description</td><td>String</td><td>Description of the parameter.</td></tr><tr><td>value</td><td>String</td><td>Value of the parameter.</td></tr></tbody></table><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="experimentspec"></a><strong>ExperimentSpec</strong><a class="hash-link" href="#experimentspec" title="Direct link to heading">#</a></h4><table><thead><tr><th>Field Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>meta</td><td>ExperimentMeta</td><td>Meta data of the experiment template.</td></tr><tr><td>environment</td><td>EnvironmentSpec</td><td>Environment of the experiment template.</td></tr><tr><td>spec</td><td>Map&lt;String, ExperimentTaskSpec&gt;</td><td>Spec of pods.</td></tr><tr><td>code</td><td>CodeSpec</td><td>Experiment codespec.</td></tr></tbody></table><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="experimentmeta"></a><strong>ExperimentMeta</strong><a class="hash-link" href="#experimentmeta" title="Direct link to heading">#</a></h4><table><thead><tr><th>Field Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>name</td><td>String</td><td>Experiment Name.</td></tr><tr><td>namespace</td><td>String</td><td>Experiment namespace.</td></tr><tr><td>framework</td><td>String</td><td>Experiment framework.</td></tr><tr><td>cmd</td><td>String</td><td>Command.</td></tr><tr><td>envVars</td><td>Map&lt;String, String&gt;</td><td>Environmental variables.</td></tr></tbody></table><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="environmentspec"></a><strong>EnvironmentSpec</strong><a class="hash-link" href="#environmentspec" title="Direct link to heading">#</a></h4><p>See more details in <a href="https://submarine.apache.org/docs/userDocs/api/environment" target="_blank" rel="noopener noreferrer">environment api</a>.</p><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="experimenttaskspec"></a><strong>ExperimentTaskSpec</strong><a class="hash-link" href="#experimenttaskspec" title="Direct link to heading">#</a></h4><table><thead><tr><th>Field Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>replicas</td><td>Integer</td><td>Numbers of replicas.</td></tr><tr><td>resoureces</td><td>String</td><td>Resouces of the task</td></tr><tr><td>name</td><td>String</td><td>Task name.</td></tr><tr><td>image</td><td>String</td><td>Image name.</td></tr><tr><td>cmd</td><td>String</td><td>Command.</td></tr><tr><td>envVars</td><td>Map&lt;String, String&gt;</td><td>Environmental variables.</td></tr></tbody></table><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="codespec"></a><strong>CodeSpec</strong><a class="hash-link" href="#codespec" title="Direct link to heading">#</a></h4><table><thead><tr><th>Field Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>syncMode</td><td>String</td><td>sync mode of code spec.</td></tr><tr><td>url</td><td>String</td><td>url of code spec.</td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example"></a>Code Example<a class="hash-link" href="#code-example" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X POST -H &quot;Content-Type: application/json&quot; -d &#x27;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">{</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;name&quot;: &quot;my-tf-mnist-template&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;author&quot;: &quot;author&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;description&quot;: &quot;This is a template to run tf-mnist&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;parameters&quot;: [{</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;name&quot;: &quot;learning_rate&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;value&quot;: 0.1,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;required&quot;: true,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;description&quot;: &quot;This is learning_rate of training.&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;name&quot;: &quot;batch_size&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;value&quot;: 150,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;required&quot;: true,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;description&quot;: &quot;This is batch_size of training.&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;name&quot;: &quot;experiment_name&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;value&quot;: &quot;tf-mnist1&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;required&quot;: true,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;description&quot;: &quot;the name of experiment.&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  ],</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;experimentSpec&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;meta&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;cmd&quot;: &quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate={{learning_rate}} --batch_size={{batch_size}}&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;name&quot;: &quot;{{experiment_name}}&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;envVars&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        &quot;ENV1&quot;: &quot;ENV1&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;framework&quot;: &quot;TensorFlow&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;namespace&quot;: &quot;default&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;spec&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;Ps&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        &quot;replicas&quot;: 1,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        &quot;resources&quot;: &quot;cpu=1,memory=1024M&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;Worker&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        &quot;replicas&quot;: 1,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        &quot;resources&quot;: &quot;cpu=1,memory=1024M&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;environment&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;image&quot;: &quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">}</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">&#x27; http://127.0.0.1:32080/api/v1/template</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;experimentTemplateId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;id&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;serverTimestamp&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1626160071451</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;experimentTemplateSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;my-tf-mnist-template&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;author&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;author&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;This is a template to run tf-mnist&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;parameters&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;learning_rate&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;true&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;This is learning_rate of training.&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;0.1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;batch_size&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;true&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;This is batch_size of training.&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;150&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_name&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;true&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;the name of experiment.&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Ps.replicas&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Ps.resourceMap.cpu&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Ps.resourceMap.memory&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Worker.replicas&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Worker.resourceMap.cpu&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Worker.resourceMap.memory&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain">&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          value</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;:&quot;</span><span class="token number" style="color:rgb(247, 140, 108)">1024</span><span class="token plain">M&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;experimentSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;{{experiment_name}}&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;framework&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;TensorFlow&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir\u003d/train/log --learning_rate\u003d{{learning_rate}} --batch_size\u003d{{batch_size}}&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;ENV1&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;Ps&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;Worker&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="list-experiment-template"></a>List Experiment Template<a class="hash-link" href="#list-experiment-template" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">GET /api/v1/template</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example-1"></a>Code Example<a class="hash-link" href="#code-example-1" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X GET http://127.0.0.1:32080/api/v1/template</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;experimentTemplateId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;id&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;serverTimestamp&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1626160071451</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;experimentTemplateSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;my-tf-mnist-template&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;author&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;author&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;This is a template to run tf-mnist&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;parameters&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;learning_rate&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;true&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;This is learning_rate of training.&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;0.1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;batch_size&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;true&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;This is batch_size of training.&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;150&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_name&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;true&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;the name of experiment.&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Ps.replicas&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Ps.resourceMap.cpu&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Ps.resourceMap.memory&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Worker.replicas&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Worker.resourceMap.cpu&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Worker.resourceMap.memory&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain">&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            value</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;:&quot;</span><span class="token number" style="color:rgb(247, 140, 108)">1024</span><span class="token plain">M&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;experimentSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;{{experiment_name}}&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;framework&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;TensorFlow&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir\u003d/train/log --learning_rate\u003d{{learning_rate}} --batch_size\u003d{{batch_size}}&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;ENV1&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;Ps&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;Worker&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="patch-experiment-template"></a>Patch Experiment Template<a class="hash-link" href="#patch-experiment-template" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">PATCH /api/v1/template{name}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="parameters-1"></a>Parameters<a class="hash-link" href="#parameters-1" title="Direct link to heading">#</a></h3><table><thead><tr><th>Field Name</th><th>Type</th><th>In</th><th>Description</th></tr></thead><tbody><tr><td>name</td><td>String</td><td>path and body</td><td>Experiment template name. This is required.</td></tr><tr><td>author</td><td>String</td><td>body</td><td>Author name.</td></tr><tr><td>description</td><td>String</td><td>body</td><td>Description of the experiment template.</td></tr><tr><td>parameters</td><td>List&lt;ExperimentTemplateParamSpec&gt;</td><td>body</td><td>Parameters of the experiment template.</td></tr><tr><td>experimentSpec</td><td>ExperimentSpec</td><td>body</td><td>Spec of the experiment template.</td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example-2"></a>Code Example<a class="hash-link" href="#code-example-2" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X PATCH -H &quot;Content-Type: application/json&quot; -d &#x27;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">{</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;name&quot;: &quot;my-tf-mnist-template&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;author&quot;: &quot;author-new&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;description&quot;: &quot;This is a template to run tf-mnist&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;parameters&quot;: [{</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;name&quot;: &quot;learning_rate&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;value&quot;: 0.1,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;required&quot;: true,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;description&quot;: &quot;This is learning_rate of training.&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;name&quot;: &quot;batch_size&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;value&quot;: 150,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;required&quot;: true,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;description&quot;: &quot;This is batch_size of training.&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;name&quot;: &quot;experiment_name&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;value&quot;: &quot;tf-mnist1&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;required&quot;: true,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;description&quot;: &quot;the name of experiment.&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  ],</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;experimentSpec&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;meta&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;cmd&quot;: &quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate={{learning_rate}} --batch_size={{batch_size}}&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;name&quot;: &quot;{{experiment_name}}&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;envVars&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        &quot;ENV1&quot;: &quot;ENV1&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;framework&quot;: &quot;TensorFlow&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;namespace&quot;: &quot;default&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;spec&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;Ps&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        &quot;replicas&quot;: 1,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        &quot;resources&quot;: &quot;cpu=1,memory=1024M&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;Worker&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        &quot;replicas&quot;: 1,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        &quot;resources&quot;: &quot;cpu=1,memory=1024M&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;environment&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;image&quot;: &quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">}</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">&#x27; http://127.0.0.1:32080/api/v1/template/my-tf-mnist-template</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;experimentTemplateId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;id&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">2</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;serverTimestamp&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1626160071451</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;experimentTemplateSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;my-tf-mnist-template&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;author&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;author-new&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;This is a template to run tf-mnist&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;parameters&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;learning_rate&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;true&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;This is learning_rate of training.&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;0.1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;batch_size&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;true&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;This is batch_size of training.&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;150&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_name&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;true&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;the name of experiment.&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Ps.replicas&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Ps.resourceMap.cpu&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Ps.resourceMap.memory&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Worker.replicas&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Worker.resourceMap.cpu&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Worker.resourceMap.memory&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;experimentSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;{{experiment_name}}&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;framework&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;TensorFlow&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir\u003d/train/log --learning_rate\u003d{{learning_rate}} --batch_size\u003d{{batch_size}}&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;ENV1&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;Ps&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;Worker&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="delete-experiment-template"></a>Delete Experiment Template<a class="hash-link" href="#delete-experiment-template" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">DELETE /api/v1/template{name}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="parameters-2"></a>Parameters<a class="hash-link" href="#parameters-2" title="Direct link to heading">#</a></h3><table><thead><tr><th>Field Name</th><th>Type</th><th>In</th><th>Description</th></tr></thead><tbody><tr><td>name</td><td>String</td><td>path</td><td>Experiment template name. This is required.</td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example-3"></a>Code Example<a class="hash-link" href="#code-example-3" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X DELETE http://127.0.0.1:32080/api/v1/template/my-tf-mnist-template</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>reponse</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;experimentTemplateId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;id&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">2</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;serverTimestamp&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1626160071451</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;experimentTemplateSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;my-tf-mnist-template&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;author&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;author-new&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;This is a template to run tf-mnist&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;parameters&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;learning_rate&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;true&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;This is learning_rate of training.&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;0.1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;batch_size&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;true&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;This is batch_size of training.&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;150&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_name&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;true&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;the name of experiment.&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Ps.replicas&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Ps.resourceMap.cpu&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Ps.resourceMap.memory&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Worker.replicas&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Worker.resourceMap.cpu&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Worker.resourceMap.memory&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;experimentSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;{{experiment_name}}&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;framework&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;TensorFlow&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir\u003d/train/log --learning_rate\u003d{{learning_rate}} --batch_size\u003d{{batch_size}}&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;ENV1&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;Ps&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;Worker&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="use-template-to-create-a-experiment"></a>Use Template to Create a Experiment<a class="hash-link" href="#use-template-to-create-a-experiment" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">POST /api/v1/experiment/{template_name}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="parameters-3"></a>Parameters<a class="hash-link" href="#parameters-3" title="Direct link to heading">#</a></h3><table><thead><tr><th>Field Name</th><th>Type</th><th>In</th><th>Description</th></tr></thead><tbody><tr><td>template_name</td><td>String</td><td>path</td><td>Experiment template name.</td></tr><tr><td>name</td><td>String</td><td>body</td><td>Experiment template name.</td></tr><tr><td>params</td><td>Map&lt;String, String&gt;</td><td>body</td><td>Parameters of the experiment including <code>experiment_name</code>.</td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example-4"></a>Code Example<a class="hash-link" href="#code-example-4" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X POST -H &quot;Content-Type: application/json&quot; -d &#x27;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">{</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;name&quot;: &quot;tf-mnist&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;params&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        &quot;learning_rate&quot;:&quot;0.01&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        &quot;batch_size&quot;:&quot;150&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        &quot;experiment_name&quot;:&quot;newexperiment1&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">}</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">&#x27; http://127.0.0.1:32080/api/v1/experiment/my-tf-mnist-template</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;experimentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_1626160071451_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;newexperiment1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;uid&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;b895985c-411c-4e89-90e0-c60a2a8a4235&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Accepted&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;acceptedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-07-13T16:21:31.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;createdTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;runningTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;finishedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;newexperiment1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;framework&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;TensorFlow&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir\u003d/train/log --learning_rate\u003d0.01 --batch_size\u003d150&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;ENV1&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;Ps&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;Worker&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/userDocs/api/experiment-template.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/next/userDocs/api/environment"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Environment REST API</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/next/userDocs/api/notebook"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Notebook REST API »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#create-experiment-template" class="table-of-contents__link">Create Experiment Template</a><ul><li><a href="#parameters" class="table-of-contents__link">Parameters</a></li><li><a href="#code-example" class="table-of-contents__link">Code Example</a></li></ul></li><li><a href="#list-experiment-template" class="table-of-contents__link">List Experiment Template</a><ul><li><a href="#code-example-1" class="table-of-contents__link">Code Example</a></li></ul></li><li><a href="#patch-experiment-template" class="table-of-contents__link">Patch Experiment Template</a><ul><li><a href="#parameters-1" class="table-of-contents__link">Parameters</a></li><li><a href="#code-example-2" class="table-of-contents__link">Code Example</a></li></ul></li><li><a href="#delete-experiment-template" class="table-of-contents__link">Delete Experiment Template</a><ul><li><a href="#parameters-2" class="table-of-contents__link">Parameters</a></li><li><a href="#code-example-3" class="table-of-contents__link">Code Example</a></li></ul></li><li><a href="#use-template-to-create-a-experiment" class="table-of-contents__link">Use Template to Create a Experiment</a><ul><li><a href="#parameters-3" class="table-of-contents__link">Parameters</a></li><li><a href="#code-example-4" class="table-of-contents__link">Code Example</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/userDocs/api/experiment-template">master 🏃</a></li><li><a class="dropdown__link" href="/docs/userDocs/api/experiment-template">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/userDocs/api/experiment-template">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/userDocs/api/experiment-template">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!" tabindex="0">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/userDocs/api/experiment-template">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Experiment Template REST API</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="create-experiment-template"></a>Create Experiment Template<a class="hash-link" href="#create-experiment-template" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">POST /api/v1/template</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="parameters"></a>Parameters<a class="hash-link" href="#parameters" title="Direct link to heading">#</a></h3><table><thead><tr><th>Field Name</th><th>Type</th><th>In</th><th>Description</th></tr></thead><tbody><tr><td>name</td><td>String</td><td>body</td><td>Experiment template name. This is required.</td></tr><tr><td>author</td><td>String</td><td>body</td><td>Author name.</td></tr><tr><td>description</td><td>String</td><td>body</td><td>Description of the experiment template.</td></tr><tr><td>parameters</td><td>List&lt;ExperimentTemplateParamSpec&gt;</td><td>body</td><td>Parameters of the experiment template.</td></tr><tr><td>experimentSpec</td><td>ExperimentSpec</td><td>body</td><td>Spec of the experiment template.</td></tr></tbody></table><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="experimenttemplateparamspec"></a><strong>ExperimentTemplateParamSpec</strong><a class="hash-link" href="#experimenttemplateparamspec" title="Direct link to heading">#</a></h4><table><thead><tr><th>Field Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>name</td><td>String</td><td>Parameter name.</td></tr><tr><td>required</td><td>Boolean</td><td>true / false. Whether the parameter is required.</td></tr><tr><td>description</td><td>String</td><td>Description of the parameter.</td></tr><tr><td>value</td><td>String</td><td>Value of the parameter.</td></tr></tbody></table><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="experimentspec"></a><strong>ExperimentSpec</strong><a class="hash-link" href="#experimentspec" title="Direct link to heading">#</a></h4><table><thead><tr><th>Field Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>meta</td><td>ExperimentMeta</td><td>Meta data of the experiment template.</td></tr><tr><td>environment</td><td>EnvironmentSpec</td><td>Environment of the experiment template.</td></tr><tr><td>spec</td><td>Map&lt;String, ExperimentTaskSpec&gt;</td><td>Spec of pods.</td></tr><tr><td>code</td><td>CodeSpec</td><td>Experiment codespec.</td></tr></tbody></table><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="experimentmeta"></a><strong>ExperimentMeta</strong><a class="hash-link" href="#experimentmeta" title="Direct link to heading">#</a></h4><table><thead><tr><th>Field Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>name</td><td>String</td><td>Experiment Name.</td></tr><tr><td>namespace</td><td>String</td><td>Experiment namespace.</td></tr><tr><td>framework</td><td>String</td><td>Experiment framework.</td></tr><tr><td>cmd</td><td>String</td><td>Command.</td></tr><tr><td>envVars</td><td>Map&lt;String, String&gt;</td><td>Environmental variables.</td></tr></tbody></table><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="environmentspec"></a><strong>EnvironmentSpec</strong><a class="hash-link" href="#environmentspec" title="Direct link to heading">#</a></h4><p>See more details in <a href="https://submarine.apache.org/docs/userDocs/api/environment" target="_blank" rel="noopener noreferrer">environment api</a>.</p><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="experimenttaskspec"></a><strong>ExperimentTaskSpec</strong><a class="hash-link" href="#experimenttaskspec" title="Direct link to heading">#</a></h4><table><thead><tr><th>Field Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>replicas</td><td>Integer</td><td>Numbers of replicas.</td></tr><tr><td>resoureces</td><td>String</td><td>Resouces of the task</td></tr><tr><td>name</td><td>String</td><td>Task name.</td></tr><tr><td>image</td><td>String</td><td>Image name.</td></tr><tr><td>cmd</td><td>String</td><td>Command.</td></tr><tr><td>envVars</td><td>Map&lt;String, String&gt;</td><td>Environmental variables.</td></tr></tbody></table><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="codespec"></a><strong>CodeSpec</strong><a class="hash-link" href="#codespec" title="Direct link to heading">#</a></h4><table><thead><tr><th>Field Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>syncMode</td><td>String</td><td>sync mode of code spec.</td></tr><tr><td>url</td><td>String</td><td>url of code spec.</td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example"></a>Code Example<a class="hash-link" href="#code-example" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X POST -H &quot;Content-Type: application/json&quot; -d &#x27;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">{</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;name&quot;: &quot;my-tf-mnist-template&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;author&quot;: &quot;author&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;description&quot;: &quot;This is a template to run tf-mnist&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;parameters&quot;: [{</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;name&quot;: &quot;learning_rate&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;value&quot;: 0.1,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;required&quot;: true,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;description&quot;: &quot;This is learning_rate of training.&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;name&quot;: &quot;batch_size&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;value&quot;: 150,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;required&quot;: true,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;description&quot;: &quot;This is batch_size of training.&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;name&quot;: &quot;experiment_name&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;value&quot;: &quot;tf-mnist1&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;required&quot;: true,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;description&quot;: &quot;the name of experiment.&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  ],</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;experimentSpec&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;meta&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;cmd&quot;: &quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate={{learning_rate}} --batch_size={{batch_size}}&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;name&quot;: &quot;{{experiment_name}}&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;envVars&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        &quot;ENV1&quot;: &quot;ENV1&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;framework&quot;: &quot;TensorFlow&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;namespace&quot;: &quot;default&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;spec&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;Ps&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        &quot;replicas&quot;: 1,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        &quot;resources&quot;: &quot;cpu=1,memory=1024M&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;Worker&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        &quot;replicas&quot;: 1,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        &quot;resources&quot;: &quot;cpu=1,memory=1024M&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;environment&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;image&quot;: &quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">}</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">&#x27; http://127.0.0.1:32080/api/v1/template</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;experimentTemplateId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;id&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;serverTimestamp&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1626160071451</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;experimentTemplateSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;my-tf-mnist-template&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;author&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;author&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;This is a template to run tf-mnist&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;parameters&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;learning_rate&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;true&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;This is learning_rate of training.&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;0.1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;batch_size&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;true&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;This is batch_size of training.&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;150&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_name&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;true&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;the name of experiment.&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Ps.replicas&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Ps.resourceMap.cpu&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Ps.resourceMap.memory&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Worker.replicas&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Worker.resourceMap.cpu&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Worker.resourceMap.memory&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain">&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          value</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;:&quot;</span><span class="token number" style="color:rgb(247, 140, 108)">1024</span><span class="token plain">M&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;experimentSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;{{experiment_name}}&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;framework&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;TensorFlow&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir\u003d/train/log --learning_rate\u003d{{learning_rate}} --batch_size\u003d{{batch_size}}&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;ENV1&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;Ps&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;Worker&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="list-experiment-template"></a>List Experiment Template<a class="hash-link" href="#list-experiment-template" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">GET /api/v1/template</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example-1"></a>Code Example<a class="hash-link" href="#code-example-1" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X GET http://127.0.0.1:32080/api/v1/template</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;experimentTemplateId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;id&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;serverTimestamp&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1626160071451</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;experimentTemplateSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;my-tf-mnist-template&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;author&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;author&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;This is a template to run tf-mnist&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;parameters&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;learning_rate&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;true&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;This is learning_rate of training.&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;0.1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;batch_size&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;true&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;This is batch_size of training.&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;150&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_name&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;true&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;the name of experiment.&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Ps.replicas&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Ps.resourceMap.cpu&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Ps.resourceMap.memory&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Worker.replicas&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Worker.resourceMap.cpu&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Worker.resourceMap.memory&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain">&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            value</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;:&quot;</span><span class="token number" style="color:rgb(247, 140, 108)">1024</span><span class="token plain">M&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;experimentSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;{{experiment_name}}&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;framework&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;TensorFlow&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir\u003d/train/log --learning_rate\u003d{{learning_rate}} --batch_size\u003d{{batch_size}}&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;ENV1&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;Ps&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;Worker&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="patch-experiment-template"></a>Patch Experiment Template<a class="hash-link" href="#patch-experiment-template" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">PATCH /api/v1/template{name}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="parameters-1"></a>Parameters<a class="hash-link" href="#parameters-1" title="Direct link to heading">#</a></h3><table><thead><tr><th>Field Name</th><th>Type</th><th>In</th><th>Description</th></tr></thead><tbody><tr><td>name</td><td>String</td><td>path and body</td><td>Experiment template name. This is required.</td></tr><tr><td>author</td><td>String</td><td>body</td><td>Author name.</td></tr><tr><td>description</td><td>String</td><td>body</td><td>Description of the experiment template.</td></tr><tr><td>parameters</td><td>List&lt;ExperimentTemplateParamSpec&gt;</td><td>body</td><td>Parameters of the experiment template.</td></tr><tr><td>experimentSpec</td><td>ExperimentSpec</td><td>body</td><td>Spec of the experiment template.</td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example-2"></a>Code Example<a class="hash-link" href="#code-example-2" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X PATCH -H &quot;Content-Type: application/json&quot; -d &#x27;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">{</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;name&quot;: &quot;my-tf-mnist-template&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;author&quot;: &quot;author-new&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;description&quot;: &quot;This is a template to run tf-mnist&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;parameters&quot;: [{</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;name&quot;: &quot;learning_rate&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;value&quot;: 0.1,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;required&quot;: true,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;description&quot;: &quot;This is learning_rate of training.&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;name&quot;: &quot;batch_size&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;value&quot;: 150,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;required&quot;: true,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;description&quot;: &quot;This is batch_size of training.&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;name&quot;: &quot;experiment_name&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;value&quot;: &quot;tf-mnist1&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;required&quot;: true,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;description&quot;: &quot;the name of experiment.&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  ],</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;experimentSpec&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;meta&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;cmd&quot;: &quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate={{learning_rate}} --batch_size={{batch_size}}&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;name&quot;: &quot;{{experiment_name}}&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;envVars&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        &quot;ENV1&quot;: &quot;ENV1&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;framework&quot;: &quot;TensorFlow&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;namespace&quot;: &quot;default&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;spec&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;Ps&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        &quot;replicas&quot;: 1,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        &quot;resources&quot;: &quot;cpu=1,memory=1024M&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;Worker&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        &quot;replicas&quot;: 1,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        &quot;resources&quot;: &quot;cpu=1,memory=1024M&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;environment&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;image&quot;: &quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">}</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">&#x27; http://127.0.0.1:32080/api/v1/template/my-tf-mnist-template</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;experimentTemplateId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;id&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">2</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;serverTimestamp&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1626160071451</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;experimentTemplateSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;my-tf-mnist-template&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;author&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;author-new&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;This is a template to run tf-mnist&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;parameters&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;learning_rate&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;true&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;This is learning_rate of training.&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;0.1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;batch_size&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;true&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;This is batch_size of training.&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;150&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_name&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;true&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;the name of experiment.&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Ps.replicas&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Ps.resourceMap.cpu&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Ps.resourceMap.memory&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Worker.replicas&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Worker.resourceMap.cpu&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Worker.resourceMap.memory&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;experimentSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;{{experiment_name}}&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;framework&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;TensorFlow&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir\u003d/train/log --learning_rate\u003d{{learning_rate}} --batch_size\u003d{{batch_size}}&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;ENV1&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;Ps&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;Worker&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="delete-experiment-template"></a>Delete Experiment Template<a class="hash-link" href="#delete-experiment-template" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">DELETE /api/v1/template{name}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="parameters-2"></a>Parameters<a class="hash-link" href="#parameters-2" title="Direct link to heading">#</a></h3><table><thead><tr><th>Field Name</th><th>Type</th><th>In</th><th>Description</th></tr></thead><tbody><tr><td>name</td><td>String</td><td>path</td><td>Experiment template name. This is required.</td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example-3"></a>Code Example<a class="hash-link" href="#code-example-3" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X DELETE http://127.0.0.1:32080/api/v1/template/my-tf-mnist-template</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>reponse</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;experimentTemplateId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;id&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">2</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;serverTimestamp&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1626160071451</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;experimentTemplateSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;my-tf-mnist-template&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;author&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;author-new&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;This is a template to run tf-mnist&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;parameters&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;learning_rate&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;true&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;This is learning_rate of training.&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;0.1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;batch_size&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;true&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;This is batch_size of training.&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;150&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_name&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;true&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;the name of experiment.&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Ps.replicas&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Ps.resourceMap.cpu&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Ps.resourceMap.memory&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Worker.replicas&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Worker.resourceMap.cpu&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Worker.resourceMap.memory&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;experimentSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;{{experiment_name}}&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;framework&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;TensorFlow&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir\u003d/train/log --learning_rate\u003d{{learning_rate}} --batch_size\u003d{{batch_size}}&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;ENV1&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;Ps&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;Worker&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="use-template-to-create-a-experiment"></a>Use Template to Create a Experiment<a class="hash-link" href="#use-template-to-create-a-experiment" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">POST /api/v1/experiment/{template_name}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="parameters-3"></a>Parameters<a class="hash-link" href="#parameters-3" title="Direct link to heading">#</a></h3><table><thead><tr><th>Field Name</th><th>Type</th><th>In</th><th>Description</th></tr></thead><tbody><tr><td>template_name</td><td>String</td><td>path</td><td>Experiment template name.</td></tr><tr><td>name</td><td>String</td><td>body</td><td>Experiment template name.</td></tr><tr><td>params</td><td>Map&lt;String, String&gt;</td><td>body</td><td>Parameters of the experiment including <code>experiment_name</code>.</td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example-4"></a>Code Example<a class="hash-link" href="#code-example-4" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X POST -H &quot;Content-Type: application/json&quot; -d &#x27;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">{</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;name&quot;: &quot;tf-mnist&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;params&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        &quot;learning_rate&quot;:&quot;0.01&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        &quot;batch_size&quot;:&quot;150&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        &quot;experiment_name&quot;:&quot;newexperiment1&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">}</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">&#x27; http://127.0.0.1:32080/api/v1/experiment/my-tf-mnist-template</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;experimentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_1626160071451_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;newexperiment1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;uid&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;b895985c-411c-4e89-90e0-c60a2a8a4235&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Accepted&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;acceptedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-07-13T16:21:31.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;createdTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;runningTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;finishedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;newexperiment1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;framework&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;TensorFlow&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir\u003d/train/log --learning_rate\u003d0.01 --batch_size\u003d150&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;ENV1&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;Ps&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;Worker&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/userDocs/api/experiment-template.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/next/userDocs/api/environment"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Environment REST API</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/next/userDocs/api/notebook"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Notebook REST API »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#create-experiment-template" class="table-of-contents__link">Create Experiment Template</a><ul><li><a href="#parameters" class="table-of-contents__link">Parameters</a></li><li><a href="#code-example" class="table-of-contents__link">Code Example</a></li></ul></li><li><a href="#list-experiment-template" class="table-of-contents__link">List Experiment Template</a><ul><li><a href="#code-example-1" class="table-of-contents__link">Code Example</a></li></ul></li><li><a href="#patch-experiment-template" class="table-of-contents__link">Patch Experiment Template</a><ul><li><a href="#parameters-1" class="table-of-contents__link">Parameters</a></li><li><a href="#code-example-2" class="table-of-contents__link">Code Example</a></li></ul></li><li><a href="#delete-experiment-template" class="table-of-contents__link">Delete Experiment Template</a><ul><li><a href="#parameters-2" class="table-of-contents__link">Parameters</a></li><li><a href="#code-example-3" class="table-of-contents__link">Code Example</a></li></ul></li><li><a href="#use-template-to-create-a-experiment" class="table-of-contents__link">Use Template to Create a Experiment</a><ul><li><a href="#parameters-3" class="table-of-contents__link">Parameters</a></li><li><a href="#code-example-4" class="table-of-contents__link">Code Example</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/a4535337.fd074516.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/935f2afb.9989d552.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/a4535337.739cfe99.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/next/userDocs/api/experiment/index.html b/docs/next/userDocs/api/experiment/index.html
index 4210f44..1ced90d 100644
--- a/docs/next/userDocs/api/experiment/index.html
+++ b/docs/next/userDocs/api/experiment/index.html
@@ -6,31 +6,31 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Experiment REST API | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="Experiment REST API | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/userDocs/api/experiment"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/userDocs/api/experiment"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/11695589.16a0a8c4.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/935f2afb.9989d552.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/11695589.9ed08ca0.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/userDocs/api/experiment">master 🏃</a></li><li><a class="dropdown__link" href="/docs/userDocs/api/experiment">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/userDocs/api/experiment">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/userDocs/api/experiment">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!" tabindex="0">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Administrator Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine on Yarn</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/adminDocs/yarn/README">Running Submarine on YARN (deprecated)</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/userDocs/api/experiment">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Experiment REST API</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="create-experiment-using-anonymousembedded-environment"></a>Create Experiment (Using Anonymous/Embedded Environment)<a class="hash-link" href="#create-experiment-using-anonymousembedded-environment" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">POST /api/v1/experiment</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="parameters"></a>Parameters<a class="hash-link" href="#parameters" title="Direct link to heading">#</a></h3><p>Put ExperimentSpec in request body.</p><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="experimentspec"></a><strong>ExperimentSpec</strong><a class="hash-link" href="#experimentspec" title="Direct link to heading">#</a></h4><table><thead><tr><th>Field Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>meta</td><td>ExperimentMeta</td><td>Meta data of the experiment template.</td></tr><tr><td>environment</td><td>EnvironmentSpec</td><td>Environment of the experiment template.</td></tr><tr><td>spec</td><td>Map&lt;String, ExperimentTaskSpec&gt;</td><td>Spec of pods.</td></tr><tr><td>code</td><td>CodeSpec</td><td>Experiment codespec.</td></tr></tbody></table><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="experimentmeta"></a><strong>ExperimentMeta</strong><a class="hash-link" href="#experimentmeta" title="Direct link to heading">#</a></h4><table><thead><tr><th>Field Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>name</td><td>String</td><td>Experiment name.</td></tr><tr><td>namespace</td><td>String</td><td>Experiment namespace.</td></tr><tr><td>framework</td><td>String</td><td>Experiemnt framework.</td></tr><tr><td>cmd</td><td>String</td><td>Command.</td></tr><tr><td>envVars</td><td>Map&lt;String, String&gt;</td><td>Environmental variables.</td></tr></tbody></table><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="environmentspec"></a><strong>EnvironmentSpec</strong><a class="hash-link" href="#environmentspec" title="Direct link to heading">#</a></h4><p>There are two types of environment: Anonymous and Predefined.</p><ul><li>Anonymous environment: only specify <code>dockerImage</code> in environment spec. The container will be built on the docker image.</li><li>Embedded environment: specify <code>name</code> in environment spec. The container will be built on the existing environment (including dockerImage and kernalSpec).</li></ul><p>See more details in <a href="https://submarine.apache.org/docs/userDocs/api/environment" target="_blank" rel="noopener noreferrer">environment api</a>.</p><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="experimenttaskspec"></a><strong>ExperimentTaskSpec</strong><a class="hash-link" href="#experimenttaskspec" title="Direct link to heading">#</a></h4><table><thead><tr><th>Field Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>replicas</td><td>Integer</td><td>Numbers of replicas.</td></tr><tr><td>resoureces</td><td>String</td><td>Resouces of the task</td></tr><tr><td>name</td><td>String</td><td>Task name.</td></tr><tr><td>image</td><td>String</td><td>Image name.</td></tr><tr><td>cmd</td><td>String</td><td>Command.</td></tr><tr><td>envVars</td><td>Map&lt;String, String&gt;</td><td>Environmental variables.</td></tr></tbody></table><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="codespec"></a><strong>CodeSpec</strong><a class="hash-link" href="#codespec" title="Direct link to heading">#</a></h4><p>Currently only support pulling from github. HDFS, NFS and s3 are in development</p><table><thead><tr><th>Field Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>syncMode</td><td>String (git|hdfs|nfs|s3)</td><td>sync mode of code spec.</td></tr><tr><td>url</td><td>String</td><td>url of code spec.</td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example"></a>Code Example<a class="hash-link" href="#code-example" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X POST -H &quot;Content-Type: application/json&quot; -d &#x27;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">{</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;meta&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;name&quot;: &quot;tf-mnist-json&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;namespace&quot;: &quot;default&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;framework&quot;: &quot;TensorFlow&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;cmd&quot;: &quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;envVars&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;ENV_1&quot;: &quot;ENV1&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;environment&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;image&quot;: &quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;spec&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;Ps&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;replicas&quot;: 1,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;resources&quot;: &quot;cpu=1,memory=1024M&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;Worker&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;replicas&quot;: 1,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;resources&quot;: &quot;cpu=1,memory=2048M&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">}</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">&#x27; http://127.0.0.1:32080/api/v1/experiment</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;experimentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_1626160071451_0002&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;uid&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;5a6ec922-6c90-43d4-844f-039f6804ed36&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Accepted&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;acceptedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-07-13T16:47:51.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;createdTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;runningTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;finishedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;framework&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;TensorFlow&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir\u003d/train/log --learning_rate\u003d0.01 --batch_size\u003d150&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;ENV_1&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;Ps&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;Worker&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d2048M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2048M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="create-experiment-using-pre-definedstored-environment"></a>Create Experiment (Using Pre-defined/Stored Environment)<a class="hash-link" href="#create-experiment-using-pre-definedstored-environment" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">POST /api/v1/experiment</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="parameters-1"></a>Parameters<a class="hash-link" href="#parameters-1" title="Direct link to heading">#</a></h3><p>Put ExperimentSpec in request body.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example-1"></a>Code Example<a class="hash-link" href="#code-example-1" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X POST -H &quot;Content-Type: application/json&quot; -d &#x27;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">{</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;meta&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;name&quot;: &quot;tf-mnist-json&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;namespace&quot;: &quot;default&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;framework&quot;: &quot;TensorFlow&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;cmd&quot;: &quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;envVars&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;ENV_1&quot;: &quot;ENV1&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;environment&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;name&quot;: &quot;my-submarine-env&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;spec&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;Ps&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;replicas&quot;: 1,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;resources&quot;: &quot;cpu=1,memory=1024M&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;Worker&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;replicas&quot;: 1,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;resources&quot;: &quot;cpu=1,memory=2048M&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">}</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">&#x27; http://127.0.0.1:32080/api/v1/experiment</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Above example assume environment &quot;my-submarine-env&quot; already exists in Submarine. Please refer Environment API Reference doc to <a href="https://submarine.apache.org/docs/userDocs/api/environment" target="_blank" rel="noopener noreferrer">environment rest api</a>.</p><p><strong>response</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;experimentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_1626160071451_0005&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;uid&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;4944c603-0f21-49e5-826a-2ff820bb4d93&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Accepted&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;acceptedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-07-13T16:57:27.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;createdTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;runningTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;finishedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;framework&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;TensorFlow&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir\u003d/train/log --learning_rate\u003d0.01 --batch_size\u003d150&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;ENV_1&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;my-submarine-env&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;Ps&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;Worker&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d2048M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2048M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="list-experiment"></a>List Experiment<a class="hash-link" href="#list-experiment" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">GET /api/v1/experiment</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example-2"></a>Code Example<a class="hash-link" href="#code-example-2" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X GET http://127.0.0.1:32080/api/v1/experiment</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;experimentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_1626160071451_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;newexperiment1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;uid&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;b895985c-411c-4e89-90e0-c60a2a8a4235&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Succeeded&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;acceptedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-07-13T16:21:31.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;createdTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-07-13T16:21:31.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;runningTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-07-13T16:21:46.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;finishedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-07-13T16:26:54.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;newexperiment1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;framework&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;TensorFlow&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir\u003d/train/log --learning_rate\u003d0.01 --batch_size\u003d150&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;ENV1&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;Ps&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;Worker&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;experimentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_1626160071451_0005&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;uid&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;4944c603-0f21-49e5-826a-2ff820bb4d93&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Accepted&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;acceptedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-07-13T16:57:27.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;createdTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;runningTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;finishedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;framework&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;TensorFlow&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir\u003d/train/log --learning_rate\u003d0.01 --batch_size\u003d150&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;ENV_1&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;my-submarine-env&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;Ps&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;Worker&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d2048M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2048M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="get-experiment"></a>Get Experiment<a class="hash-link" href="#get-experiment" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">GET /api/v1/experiment/{id}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="parameters-2"></a>Parameters<a class="hash-link" href="#parameters-2" title="Direct link to heading">#</a></h3><table><thead><tr><th>Field Name</th><th>Type</th><th>In</th><th>Description</th></tr></thead><tbody><tr><td>id</td><td>String</td><td>path</td><td>Experiment id.</td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example-3"></a>Code Example<a class="hash-link" href="#code-example-3" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X GET http://127.0.0.1:32080/api/v1/experiment/experiment_1626160071451_0005</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;experimentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_1626160071451_0005&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;uid&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;4944c603-0f21-49e5-826a-2ff820bb4d93&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Accepted&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;acceptedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-07-13T16:57:27.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;createdTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;runningTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;finishedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;framework&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;TensorFlow&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir\u003d/train/log --learning_rate\u003d0.01 --batch_size\u003d150&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;ENV_1&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;my-submarine-env&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;Ps&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;Worker&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d2048M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2048M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="patch-experiment"></a>Patch Experiment<a class="hash-link" href="#patch-experiment" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">PATCH /api/v1/experiment/{id}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="parameters-3"></a>Parameters<a class="hash-link" href="#parameters-3" title="Direct link to heading">#</a></h3><table><thead><tr><th>Field Name</th><th>Type</th><th>In</th><th>Description</th></tr></thead><tbody><tr><td>id</td><td>String</td><td>path</td><td>Experiment id.</td></tr><tr><td>meta</td><td>ExperimentMeta</td><td>body</td><td>Meta data of the experiment template.</td></tr><tr><td>environment</td><td>EnvironmentSpec</td><td>body</td><td>Environment of the experiment template.</td></tr><tr><td>spec</td><td>Map&lt;String, ExperimentTaskSpec&gt;</td><td>body</td><td>Spec of pods.</td></tr><tr><td>code</td><td>CodeSpec</td><td>body</td><td>TODO</td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example-4"></a>Code Example<a class="hash-link" href="#code-example-4" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X PATCH -H &quot;Content-Type: application/json&quot; -d &#x27;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">{</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;meta&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;name&quot;: &quot;tf-mnist-json&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;namespace&quot;: &quot;default&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;framework&quot;: &quot;TensorFlow&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;cmd&quot;: &quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;envVars&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;ENV_1&quot;: &quot;ENV1&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;environment&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;image&quot;: &quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;spec&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;Ps&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;replicas&quot;: 1,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;resources&quot;: &quot;cpu=1,memory=1024M&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;Worker&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;replicas&quot;: 2,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;resources&quot;: &quot;cpu=1,memory=2048M&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">}</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">&#x27; http://127.0.0.1:32080/api/v1/experiment/experiment_1626160071451_0005</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;experimentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_1626160071451_0005&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;uid&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;4944c603-0f21-49e5-826a-2ff820bb4d93&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Accepted&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;acceptedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-07-13T16:57:27.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;createdTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;runningTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;finishedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;framework&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;TensorFlow&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir\u003d/train/log --learning_rate\u003d0.01 --batch_size\u003d150&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;ENV_1&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;Ps&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;Worker&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">2</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d2048M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2048M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="delete-experiment"></a>Delete Experiment<a class="hash-link" href="#delete-experiment" title="Direct link to heading">#</a></h3><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">DELETE /api/v1/experiment/{id}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="parameters-4"></a>Parameters<a class="hash-link" href="#parameters-4" title="Direct link to heading">#</a></h3><table><thead><tr><th>Field Name</th><th>Type</th><th>In</th><th>Description</th></tr></thead><tbody><tr><td>id</td><td>String</td><td>path</td><td>Experiment id.</td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example-5"></a>Code Example<a class="hash-link" href="#code-example-5" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X DELETE http://127.0.0.1:32080/api/v1/experiment/experiment_1626160071451_0005</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;experimentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_1626160071451_0005&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;uid&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;4944c603-0f21-49e5-826a-2ff820bb4d93&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Deleted&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;acceptedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;createdTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;runningTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;finishedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;framework&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;TensorFlow&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir\u003d/train/log --learning_rate\u003d0.01 --batch_size\u003d150&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;ENV_1&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;Ps&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;Worker&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">2</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d2048M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2048M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="list-experiment-log"></a>List Experiment Log<a class="hash-link" href="#list-experiment-log" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">GET /api/v1/experiment/logs</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example-6"></a>Code Example<a class="hash-link" href="#code-example-6" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X GET http://127.0.0.1:32080/api/v1/experiment/logs</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;experimentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_1626160071451_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;logContent&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;podName&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;newexperiment1-ps-0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;podLog&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;podName&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;newexperiment1-worker-0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;podLog&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="get-experiment-log"></a>Get Experiment Log<a class="hash-link" href="#get-experiment-log" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">GET /api/v1/experiment/logs/{id}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="parameters-5"></a>Parameters<a class="hash-link" href="#parameters-5" title="Direct link to heading">#</a></h3><table><thead><tr><th>Field Name</th><th>Type</th><th>In</th><th>Description</th></tr></thead><tbody><tr><td>id</td><td>String</td><td>path</td><td>Experiment id.</td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example-7"></a>Code Example<a class="hash-link" href="#code-example-7" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X GET http://127.0.0.1:32080/api/v1/experiment/logs/experiment_1626160071451_0001</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;experimentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_1626160071451_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;logContent&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;podName&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;newexperiment1-ps-0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;podLog&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;podName&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;newexperiment1-worker-0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;podLog&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/userDocs/api/experiment.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/next/gettingStarted/notebook"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Jupyter Notebook</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/next/userDocs/api/environment"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Environment REST API »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#create-experiment-using-anonymousembedded-environment" class="table-of-contents__link">Create Experiment (Using Anonymous/Embedded Environment)</a><ul><li><a href="#parameters" class="table-of-contents__link">Parameters</a></li><li><a href="#code-example" class="table-of-contents__link">Code Example</a></li></ul></li><li><a href="#create-experiment-using-pre-definedstored-environment" class="table-of-contents__link">Create Experiment (Using Pre-defined/Stored Environment)</a><ul><li><a href="#parameters-1" class="table-of-contents__link">Parameters</a></li><li><a href="#code-example-1" class="table-of-contents__link">Code Example</a></li></ul></li><li><a href="#list-experiment" class="table-of-contents__link">List Experiment</a><ul><li><a href="#code-example-2" class="table-of-contents__link">Code Example</a></li></ul></li><li><a href="#get-experiment" class="table-of-contents__link">Get Experiment</a><ul><li><a href="#parameters-2" class="table-of-contents__link">Parameters</a></li><li><a href="#code-example-3" class="table-of-contents__link">Code Example</a></li></ul></li><li><a href="#patch-experiment" class="table-of-contents__link">Patch Experiment</a><ul><li><a href="#parameters-3" class="table-of-contents__link">Parameters</a></li><li><a href="#code-example-4" class="table-of-contents__link">Code Example</a></li><li><a href="#delete-experiment" class="table-of-contents__link">Delete Experiment</a></li><li><a href="#parameters-4" class="table-of-contents__link">Parameters</a></li><li><a href="#code-example-5" class="table-of-contents__link">Code Example</a></li></ul></li><li><a href="#list-experiment-log" class="table-of-contents__link">List Experiment Log</a><ul><li><a href="#code-example-6" class="table-of-contents__link">Code Example</a></li></ul></li><li><a href="#get-experiment-log" class="table-of-contents__link">Get Experiment Log</a><ul><li><a href="#parameters-5" class="table-of-contents__link">Parameters</a></li><li><a href="#code-example-7" class="table-of-contents__link">Code Example</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/userDocs/api/experiment">master 🏃</a></li><li><a class="dropdown__link" href="/docs/userDocs/api/experiment">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/userDocs/api/experiment">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/userDocs/api/experiment">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!" tabindex="0">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/userDocs/api/experiment">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Experiment REST API</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="create-experiment-using-anonymousembedded-environment"></a>Create Experiment (Using Anonymous/Embedded Environment)<a class="hash-link" href="#create-experiment-using-anonymousembedded-environment" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">POST /api/v1/experiment</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="parameters"></a>Parameters<a class="hash-link" href="#parameters" title="Direct link to heading">#</a></h3><p>Put ExperimentSpec in request body.</p><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="experimentspec"></a><strong>ExperimentSpec</strong><a class="hash-link" href="#experimentspec" title="Direct link to heading">#</a></h4><table><thead><tr><th>Field Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>meta</td><td>ExperimentMeta</td><td>Meta data of the experiment template.</td></tr><tr><td>environment</td><td>EnvironmentSpec</td><td>Environment of the experiment template.</td></tr><tr><td>spec</td><td>Map&lt;String, ExperimentTaskSpec&gt;</td><td>Spec of pods.</td></tr><tr><td>code</td><td>CodeSpec</td><td>Experiment codespec.</td></tr></tbody></table><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="experimentmeta"></a><strong>ExperimentMeta</strong><a class="hash-link" href="#experimentmeta" title="Direct link to heading">#</a></h4><table><thead><tr><th>Field Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>name</td><td>String</td><td>Experiment name.</td></tr><tr><td>namespace</td><td>String</td><td>Experiment namespace.</td></tr><tr><td>framework</td><td>String</td><td>Experiemnt framework.</td></tr><tr><td>cmd</td><td>String</td><td>Command.</td></tr><tr><td>envVars</td><td>Map&lt;String, String&gt;</td><td>Environmental variables.</td></tr></tbody></table><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="environmentspec"></a><strong>EnvironmentSpec</strong><a class="hash-link" href="#environmentspec" title="Direct link to heading">#</a></h4><p>There are two types of environment: Anonymous and Predefined.</p><ul><li>Anonymous environment: only specify <code>dockerImage</code> in environment spec. The container will be built on the docker image.</li><li>Embedded environment: specify <code>name</code> in environment spec. The container will be built on the existing environment (including dockerImage and kernalSpec).</li></ul><p>See more details in <a href="https://submarine.apache.org/docs/userDocs/api/environment" target="_blank" rel="noopener noreferrer">environment api</a>.</p><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="experimenttaskspec"></a><strong>ExperimentTaskSpec</strong><a class="hash-link" href="#experimenttaskspec" title="Direct link to heading">#</a></h4><table><thead><tr><th>Field Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>replicas</td><td>Integer</td><td>Numbers of replicas.</td></tr><tr><td>resoureces</td><td>String</td><td>Resouces of the task</td></tr><tr><td>name</td><td>String</td><td>Task name.</td></tr><tr><td>image</td><td>String</td><td>Image name.</td></tr><tr><td>cmd</td><td>String</td><td>Command.</td></tr><tr><td>envVars</td><td>Map&lt;String, String&gt;</td><td>Environmental variables.</td></tr></tbody></table><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="codespec"></a><strong>CodeSpec</strong><a class="hash-link" href="#codespec" title="Direct link to heading">#</a></h4><p>Currently only support pulling from github. HDFS, NFS and s3 are in development</p><table><thead><tr><th>Field Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>syncMode</td><td>String (git|hdfs|nfs|s3)</td><td>sync mode of code spec.</td></tr><tr><td>url</td><td>String</td><td>url of code spec.</td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example"></a>Code Example<a class="hash-link" href="#code-example" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X POST -H &quot;Content-Type: application/json&quot; -d &#x27;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">{</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;meta&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;name&quot;: &quot;tf-mnist-json&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;namespace&quot;: &quot;default&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;framework&quot;: &quot;TensorFlow&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;cmd&quot;: &quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;envVars&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;ENV_1&quot;: &quot;ENV1&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;environment&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;image&quot;: &quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;spec&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;Ps&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;replicas&quot;: 1,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;resources&quot;: &quot;cpu=1,memory=1024M&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;Worker&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;replicas&quot;: 1,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;resources&quot;: &quot;cpu=1,memory=2048M&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">}</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">&#x27; http://127.0.0.1:32080/api/v1/experiment</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;experimentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_1626160071451_0002&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;uid&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;5a6ec922-6c90-43d4-844f-039f6804ed36&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Accepted&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;acceptedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-07-13T16:47:51.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;createdTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;runningTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;finishedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;framework&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;TensorFlow&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir\u003d/train/log --learning_rate\u003d0.01 --batch_size\u003d150&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;ENV_1&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;Ps&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;Worker&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d2048M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2048M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="create-experiment-using-pre-definedstored-environment"></a>Create Experiment (Using Pre-defined/Stored Environment)<a class="hash-link" href="#create-experiment-using-pre-definedstored-environment" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">POST /api/v1/experiment</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="parameters-1"></a>Parameters<a class="hash-link" href="#parameters-1" title="Direct link to heading">#</a></h3><p>Put ExperimentSpec in request body.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example-1"></a>Code Example<a class="hash-link" href="#code-example-1" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X POST -H &quot;Content-Type: application/json&quot; -d &#x27;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">{</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;meta&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;name&quot;: &quot;tf-mnist-json&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;namespace&quot;: &quot;default&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;framework&quot;: &quot;TensorFlow&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;cmd&quot;: &quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;envVars&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;ENV_1&quot;: &quot;ENV1&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;environment&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;name&quot;: &quot;my-submarine-env&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;spec&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;Ps&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;replicas&quot;: 1,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;resources&quot;: &quot;cpu=1,memory=1024M&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;Worker&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;replicas&quot;: 1,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;resources&quot;: &quot;cpu=1,memory=2048M&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">}</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">&#x27; http://127.0.0.1:32080/api/v1/experiment</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Above example assume environment &quot;my-submarine-env&quot; already exists in Submarine. Please refer Environment API Reference doc to <a href="https://submarine.apache.org/docs/userDocs/api/environment" target="_blank" rel="noopener noreferrer">environment rest api</a>.</p><p><strong>response</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;experimentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_1626160071451_0005&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;uid&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;4944c603-0f21-49e5-826a-2ff820bb4d93&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Accepted&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;acceptedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-07-13T16:57:27.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;createdTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;runningTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;finishedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;framework&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;TensorFlow&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir\u003d/train/log --learning_rate\u003d0.01 --batch_size\u003d150&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;ENV_1&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;my-submarine-env&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;Ps&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;Worker&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d2048M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2048M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="list-experiment"></a>List Experiment<a class="hash-link" href="#list-experiment" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">GET /api/v1/experiment</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example-2"></a>Code Example<a class="hash-link" href="#code-example-2" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X GET http://127.0.0.1:32080/api/v1/experiment</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;experimentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_1626160071451_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;newexperiment1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;uid&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;b895985c-411c-4e89-90e0-c60a2a8a4235&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Succeeded&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;acceptedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-07-13T16:21:31.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;createdTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-07-13T16:21:31.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;runningTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-07-13T16:21:46.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;finishedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-07-13T16:26:54.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;newexperiment1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;framework&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;TensorFlow&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir\u003d/train/log --learning_rate\u003d0.01 --batch_size\u003d150&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;ENV1&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;Ps&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;Worker&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;experimentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_1626160071451_0005&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;uid&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;4944c603-0f21-49e5-826a-2ff820bb4d93&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Accepted&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;acceptedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-07-13T16:57:27.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;createdTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;runningTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;finishedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;framework&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;TensorFlow&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir\u003d/train/log --learning_rate\u003d0.01 --batch_size\u003d150&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;ENV_1&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;my-submarine-env&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;Ps&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;Worker&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d2048M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2048M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="get-experiment"></a>Get Experiment<a class="hash-link" href="#get-experiment" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">GET /api/v1/experiment/{id}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="parameters-2"></a>Parameters<a class="hash-link" href="#parameters-2" title="Direct link to heading">#</a></h3><table><thead><tr><th>Field Name</th><th>Type</th><th>In</th><th>Description</th></tr></thead><tbody><tr><td>id</td><td>String</td><td>path</td><td>Experiment id.</td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example-3"></a>Code Example<a class="hash-link" href="#code-example-3" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X GET http://127.0.0.1:32080/api/v1/experiment/experiment_1626160071451_0005</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;experimentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_1626160071451_0005&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;uid&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;4944c603-0f21-49e5-826a-2ff820bb4d93&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Accepted&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;acceptedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-07-13T16:57:27.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;createdTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;runningTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;finishedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;framework&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;TensorFlow&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir\u003d/train/log --learning_rate\u003d0.01 --batch_size\u003d150&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;ENV_1&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;my-submarine-env&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;Ps&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;Worker&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d2048M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2048M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="patch-experiment"></a>Patch Experiment<a class="hash-link" href="#patch-experiment" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">PATCH /api/v1/experiment/{id}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="parameters-3"></a>Parameters<a class="hash-link" href="#parameters-3" title="Direct link to heading">#</a></h3><table><thead><tr><th>Field Name</th><th>Type</th><th>In</th><th>Description</th></tr></thead><tbody><tr><td>id</td><td>String</td><td>path</td><td>Experiment id.</td></tr><tr><td>meta</td><td>ExperimentMeta</td><td>body</td><td>Meta data of the experiment template.</td></tr><tr><td>environment</td><td>EnvironmentSpec</td><td>body</td><td>Environment of the experiment template.</td></tr><tr><td>spec</td><td>Map&lt;String, ExperimentTaskSpec&gt;</td><td>body</td><td>Spec of pods.</td></tr><tr><td>code</td><td>CodeSpec</td><td>body</td><td>TODO</td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example-4"></a>Code Example<a class="hash-link" href="#code-example-4" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X PATCH -H &quot;Content-Type: application/json&quot; -d &#x27;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">{</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;meta&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;name&quot;: &quot;tf-mnist-json&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;namespace&quot;: &quot;default&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;framework&quot;: &quot;TensorFlow&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;cmd&quot;: &quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;envVars&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;ENV_1&quot;: &quot;ENV1&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;environment&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;image&quot;: &quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;spec&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;Ps&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;replicas&quot;: 1,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;resources&quot;: &quot;cpu=1,memory=1024M&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;Worker&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;replicas&quot;: 2,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;resources&quot;: &quot;cpu=1,memory=2048M&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">}</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">&#x27; http://127.0.0.1:32080/api/v1/experiment/experiment_1626160071451_0005</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;experimentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_1626160071451_0005&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;uid&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;4944c603-0f21-49e5-826a-2ff820bb4d93&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Accepted&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;acceptedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-07-13T16:57:27.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;createdTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;runningTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;finishedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;framework&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;TensorFlow&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir\u003d/train/log --learning_rate\u003d0.01 --batch_size\u003d150&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;ENV_1&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;Ps&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;Worker&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">2</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d2048M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2048M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="delete-experiment"></a>Delete Experiment<a class="hash-link" href="#delete-experiment" title="Direct link to heading">#</a></h3><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">DELETE /api/v1/experiment/{id}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="parameters-4"></a>Parameters<a class="hash-link" href="#parameters-4" title="Direct link to heading">#</a></h3><table><thead><tr><th>Field Name</th><th>Type</th><th>In</th><th>Description</th></tr></thead><tbody><tr><td>id</td><td>String</td><td>path</td><td>Experiment id.</td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example-5"></a>Code Example<a class="hash-link" href="#code-example-5" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X DELETE http://127.0.0.1:32080/api/v1/experiment/experiment_1626160071451_0005</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;experimentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_1626160071451_0005&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;uid&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;4944c603-0f21-49e5-826a-2ff820bb4d93&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Deleted&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;acceptedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;createdTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;runningTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;finishedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;framework&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;TensorFlow&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir\u003d/train/log --learning_rate\u003d0.01 --batch_size\u003d150&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;ENV_1&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;Ps&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;Worker&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">2</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d2048M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2048M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="list-experiment-log"></a>List Experiment Log<a class="hash-link" href="#list-experiment-log" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">GET /api/v1/experiment/logs</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example-6"></a>Code Example<a class="hash-link" href="#code-example-6" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X GET http://127.0.0.1:32080/api/v1/experiment/logs</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;experimentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_1626160071451_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;logContent&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;podName&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;newexperiment1-ps-0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;podLog&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;podName&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;newexperiment1-worker-0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;podLog&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="get-experiment-log"></a>Get Experiment Log<a class="hash-link" href="#get-experiment-log" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">GET /api/v1/experiment/logs/{id}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="parameters-5"></a>Parameters<a class="hash-link" href="#parameters-5" title="Direct link to heading">#</a></h3><table><thead><tr><th>Field Name</th><th>Type</th><th>In</th><th>Description</th></tr></thead><tbody><tr><td>id</td><td>String</td><td>path</td><td>Experiment id.</td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example-7"></a>Code Example<a class="hash-link" href="#code-example-7" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X GET http://127.0.0.1:32080/api/v1/experiment/logs/experiment_1626160071451_0001</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;experimentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_1626160071451_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;logContent&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;podName&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;newexperiment1-ps-0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;podLog&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;podName&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;newexperiment1-worker-0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;podLog&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/userDocs/api/experiment.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/next/gettingStarted/notebook"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Jupyter Notebook</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/next/userDocs/api/environment"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Environment REST API »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#create-experiment-using-anonymousembedded-environment" class="table-of-contents__link">Create Experiment (Using Anonymous/Embedded Environment)</a><ul><li><a href="#parameters" class="table-of-contents__link">Parameters</a></li><li><a href="#code-example" class="table-of-contents__link">Code Example</a></li></ul></li><li><a href="#create-experiment-using-pre-definedstored-environment" class="table-of-contents__link">Create Experiment (Using Pre-defined/Stored Environment)</a><ul><li><a href="#parameters-1" class="table-of-contents__link">Parameters</a></li><li><a href="#code-example-1" class="table-of-contents__link">Code Example</a></li></ul></li><li><a href="#list-experiment" class="table-of-contents__link">List Experiment</a><ul><li><a href="#code-example-2" class="table-of-contents__link">Code Example</a></li></ul></li><li><a href="#get-experiment" class="table-of-contents__link">Get Experiment</a><ul><li><a href="#parameters-2" class="table-of-contents__link">Parameters</a></li><li><a href="#code-example-3" class="table-of-contents__link">Code Example</a></li></ul></li><li><a href="#patch-experiment" class="table-of-contents__link">Patch Experiment</a><ul><li><a href="#parameters-3" class="table-of-contents__link">Parameters</a></li><li><a href="#code-example-4" class="table-of-contents__link">Code Example</a></li><li><a href="#delete-experiment" class="table-of-contents__link">Delete Experiment</a></li><li><a href="#parameters-4" class="table-of-contents__link">Parameters</a></li><li><a href="#code-example-5" class="table-of-contents__link">Code Example</a></li></ul></li><li><a href="#list-experiment-log" class="table-of-contents__link">List Experiment Log</a><ul><li><a href="#code-example-6" class="table-of-contents__link">Code Example</a></li></ul></li><li><a href="#get-experiment-log" class="table-of-contents__link">Get Experiment Log</a><ul><li><a href="#parameters-5" class="table-of-contents__link">Parameters</a></li><li><a href="#code-example-7" class="table-of-contents__link">Code Example</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/11695589.16a0a8c4.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/935f2afb.9989d552.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/11695589.9ed08ca0.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/next/userDocs/api/notebook/index.html b/docs/next/userDocs/api/notebook/index.html
index b9d1dce..0cf5955 100644
--- a/docs/next/userDocs/api/notebook/index.html
+++ b/docs/next/userDocs/api/notebook/index.html
@@ -6,31 +6,31 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Notebook REST API | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="Notebook REST API | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/userDocs/api/notebook"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/userDocs/api/notebook"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/be249313.cc6110d6.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/935f2afb.9989d552.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/be249313.cafe9dfe.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/userDocs/api/notebook">master 🏃</a></li><li><a class="dropdown__link" href="/docs/userDocs/api/notebook">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/userDocs/api/notebook">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/userDocs/api/notebook">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!" tabindex="0">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Administrator Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine on Yarn</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/adminDocs/yarn/README">Running Submarine on YARN (deprecated)</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/userDocs/api/notebook">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Notebook REST API</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="create-a-notebook-instance"></a>Create a Notebook Instance<a class="hash-link" href="#create-a-notebook-instance" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">POST /api/v1/notebook</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="parameters"></a>Parameters<a class="hash-link" href="#parameters" title="Direct link to heading">#</a></h3><p>NotebookSpec in request body.</p><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="notebookspec"></a><strong>NotebookSpec</strong><a class="hash-link" href="#notebookspec" title="Direct link to heading">#</a></h4><table><thead><tr><th>Field Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>meta</td><td>NotebookMeta</td><td>Meta data of the notebook.</td></tr><tr><td>environment</td><td>EnvironmentSpec</td><td>Environment of the experiment template.</td></tr><tr><td>spec</td><td>NotebookPodSpec</td><td>Spec of the notebook pods.</td></tr></tbody></table><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="notebookmeta"></a><strong>NotebookMeta</strong><a class="hash-link" href="#notebookmeta" title="Direct link to heading">#</a></h4><table><thead><tr><th>Field Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>name</td><td>String</td><td>Notebook name.</td></tr><tr><td>namespace</td><td>String</td><td>Notebook namespace.</td></tr><tr><td>ownerId</td><td>String</td><td>User id.</td></tr></tbody></table><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="environmentspec"></a><strong>EnvironmentSpec</strong><a class="hash-link" href="#environmentspec" title="Direct link to heading">#</a></h4><p>See more details in <a href="https://submarine.apache.org/docs/userDocs/api/environment" target="_blank" rel="noopener noreferrer">environment api</a>.</p><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="notebookpodspec"></a><strong>NotebookPodSpec</strong><a class="hash-link" href="#notebookpodspec" title="Direct link to heading">#</a></h4><table><thead><tr><th>Field Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>envVars</td><td>Map&lt;String, String&gt;</td><td>Environmental variables.</td></tr><tr><td>resources</td><td>String</td><td>Resourecs of the pod.</td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example"></a>Code Example<a class="hash-link" href="#code-example" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X POST -H &quot;Content-Type: application/json&quot; -d &#x27;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">{</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;meta&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;name&quot;: &quot;test-nb&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;namespace&quot;: &quot;default&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;ownerId&quot;: &quot;e9ca23d68d884d4ebb19d07889727dae&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;environment&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;name&quot;: &quot;notebook-env&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;spec&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;envVars&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;TEST_ENV&quot;: &quot;test&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;resources&quot;: &quot;cpu=1,memory=1.0Gi&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">}</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">&#x27; http://127.0.0.1:32080/api/v1/notebook</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Create a notebook instance&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;notebookId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;notebook_1626160071451_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test-nb&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;uid&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;a56713da-f2a3-40d0-ae2e-45fdc0bb15f5&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;url&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;/notebook/default/test-nb/lab&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;creating&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;reason&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;The notebook instance is creating&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;createdTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-07-13T16:23:38.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;deletedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test-nb&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;ownerId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;e9ca23d68d884d4ebb19d07889727dae&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;notebook-env&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:jupyter-notebook-0.7.0-SNAPSHOT&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;submarine_jupyter_py3&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;channels&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;defaults&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;condaDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;pipDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;TEST_ENV&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1.0Gi&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="list-notebook-instances-which-belong-to-user"></a>List notebook instances which belong to user<a class="hash-link" href="#list-notebook-instances-which-belong-to-user" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">GET /api/v1/notebook</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="parameters-1"></a>Parameters<a class="hash-link" href="#parameters-1" title="Direct link to heading">#</a></h3><table><thead><tr><th>Field Name</th><th>Type</th><th>In</th><th>Description</th></tr></thead><tbody><tr><td>id</td><td>String</td><td>query</td><td>User id.</td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example-1"></a>Code Example<a class="hash-link" href="#code-example-1" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X GET http://127.0.0.1:32080/api/v1/notebook?id=e9ca23d68d884d4ebb19d07889727dae</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;List all notebook instances&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;notebookId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;notebook_1626160071451_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test-nb&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;uid&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;a56713da-f2a3-40d0-ae2e-45fdc0bb15f5&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;url&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;/notebook/default/test-nb/lab&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;waiting&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;reason&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ContainerCreating&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;createdTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-07-13T16:23:38.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;deletedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test-nb&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;ownerId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;e9ca23d68d884d4ebb19d07889727dae&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;notebook-env&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:jupyter-notebook-0.7.0-SNAPSHOT&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;submarine_jupyter_py3&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;channels&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;defaults&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;condaDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;pipDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;TEST_ENV&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1.0Gi&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="get-the-notebook-instance"></a>Get the notebook instance<a class="hash-link" href="#get-the-notebook-instance" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">GET /api/v1/notebook/{id}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="parameters-2"></a>Parameters<a class="hash-link" href="#parameters-2" title="Direct link to heading">#</a></h3><table><thead><tr><th>Field Name</th><th>Type</th><th>In</th><th>Description</th></tr></thead><tbody><tr><td>id</td><td>String</td><td>path</td><td>Notebook id.</td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example-2"></a>Code Example<a class="hash-link" href="#code-example-2" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X GET http://127.0.0.1:32080/api/v1/notebook/notebook_1626160071451_0001</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Get the notebook instance&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;notebookId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;notebook_1626160071451_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test-nb&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;uid&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;a56713da-f2a3-40d0-ae2e-45fdc0bb15f5&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;url&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;/notebook/default/test-nb/lab&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;waiting&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;reason&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ContainerCreating&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;createdTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-07-13T16:23:38.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;deletedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test-nb&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;ownerId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;e9ca23d68d884d4ebb19d07889727dae&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;notebook-env&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:jupyter-notebook-0.7.0-SNAPSHOT&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;submarine_jupyter_py3&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;channels&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;defaults&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;condaDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;pipDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;TEST_ENV&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1.0Gi&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="delete-the-notebook-instance"></a>Delete the notebook instance<a class="hash-link" href="#delete-the-notebook-instance" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">DELETE /api/v1/notebook/{id}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="parameters-3"></a>Parameters<a class="hash-link" href="#parameters-3" title="Direct link to heading">#</a></h3><table><thead><tr><th>Field Name</th><th>Type</th><th>In</th><th>Description</th></tr></thead><tbody><tr><td>id</td><td>String</td><td>path</td><td>Notebook id.</td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example-3"></a>Code Example<a class="hash-link" href="#code-example-3" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X DELETE http://127.0.0.1:32080/api/v1/notebook/notebook_1626160071451_0001</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Delete the notebook instance&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;notebookId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;notebook_1626160071451_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test-nb&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;uid&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;a56713da-f2a3-40d0-ae2e-45fdc0bb15f5&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;url&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;/notebook/default/test-nb/lab&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;terminating&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;reason&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;The notebook instance is terminating&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;createdTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-07-13T16:23:38.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;deletedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test-nb&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;ownerId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;e9ca23d68d884d4ebb19d07889727dae&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;notebook-env&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:jupyter-notebook-0.7.0-SNAPSHOT&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;submarine_jupyter_py3&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;channels&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;defaults&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;condaDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;pipDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;TEST_ENV&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1.0Gi&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/userDocs/api/notebook.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/next/userDocs/api/experiment-template"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Experiment Template REST API</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/next/userDocs/submarine-sdk/experiment-client"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Experiment Client »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#create-a-notebook-instance" class="table-of-contents__link">Create a Notebook Instance</a><ul><li><a href="#parameters" class="table-of-contents__link">Parameters</a></li><li><a href="#code-example" class="table-of-contents__link">Code Example</a></li></ul></li><li><a href="#list-notebook-instances-which-belong-to-user" class="table-of-contents__link">List notebook instances which belong to user</a><ul><li><a href="#parameters-1" class="table-of-contents__link">Parameters</a></li><li><a href="#code-example-1" class="table-of-contents__link">Code Example</a></li></ul></li><li><a href="#get-the-notebook-instance" class="table-of-contents__link">Get the notebook instance</a><ul><li><a href="#parameters-2" class="table-of-contents__link">Parameters</a></li><li><a href="#code-example-2" class="table-of-contents__link">Code Example</a></li></ul></li><li><a href="#delete-the-notebook-instance" class="table-of-contents__link">Delete the notebook instance</a><ul><li><a href="#parameters-3" class="table-of-contents__link">Parameters</a></li><li><a href="#code-example-3" class="table-of-contents__link">Code Example</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/userDocs/api/notebook">master 🏃</a></li><li><a class="dropdown__link" href="/docs/userDocs/api/notebook">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/userDocs/api/notebook">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/userDocs/api/notebook">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!" tabindex="0">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/userDocs/api/notebook">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Notebook REST API</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="create-a-notebook-instance"></a>Create a Notebook Instance<a class="hash-link" href="#create-a-notebook-instance" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">POST /api/v1/notebook</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="parameters"></a>Parameters<a class="hash-link" href="#parameters" title="Direct link to heading">#</a></h3><p>NotebookSpec in request body.</p><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="notebookspec"></a><strong>NotebookSpec</strong><a class="hash-link" href="#notebookspec" title="Direct link to heading">#</a></h4><table><thead><tr><th>Field Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>meta</td><td>NotebookMeta</td><td>Meta data of the notebook.</td></tr><tr><td>environment</td><td>EnvironmentSpec</td><td>Environment of the experiment template.</td></tr><tr><td>spec</td><td>NotebookPodSpec</td><td>Spec of the notebook pods.</td></tr></tbody></table><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="notebookmeta"></a><strong>NotebookMeta</strong><a class="hash-link" href="#notebookmeta" title="Direct link to heading">#</a></h4><table><thead><tr><th>Field Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>name</td><td>String</td><td>Notebook name.</td></tr><tr><td>namespace</td><td>String</td><td>Notebook namespace.</td></tr><tr><td>ownerId</td><td>String</td><td>User id.</td></tr></tbody></table><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="environmentspec"></a><strong>EnvironmentSpec</strong><a class="hash-link" href="#environmentspec" title="Direct link to heading">#</a></h4><p>See more details in <a href="https://submarine.apache.org/docs/userDocs/api/environment" target="_blank" rel="noopener noreferrer">environment api</a>.</p><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="notebookpodspec"></a><strong>NotebookPodSpec</strong><a class="hash-link" href="#notebookpodspec" title="Direct link to heading">#</a></h4><table><thead><tr><th>Field Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>envVars</td><td>Map&lt;String, String&gt;</td><td>Environmental variables.</td></tr><tr><td>resources</td><td>String</td><td>Resourecs of the pod.</td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example"></a>Code Example<a class="hash-link" href="#code-example" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X POST -H &quot;Content-Type: application/json&quot; -d &#x27;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">{</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;meta&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;name&quot;: &quot;test-nb&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;namespace&quot;: &quot;default&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;ownerId&quot;: &quot;e9ca23d68d884d4ebb19d07889727dae&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;environment&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;name&quot;: &quot;notebook-env&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;spec&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;envVars&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;TEST_ENV&quot;: &quot;test&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;resources&quot;: &quot;cpu=1,memory=1.0Gi&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">}</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">&#x27; http://127.0.0.1:32080/api/v1/notebook</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Create a notebook instance&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;notebookId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;notebook_1626160071451_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test-nb&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;uid&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;a56713da-f2a3-40d0-ae2e-45fdc0bb15f5&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;url&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;/notebook/default/test-nb/lab&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;creating&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;reason&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;The notebook instance is creating&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;createdTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-07-13T16:23:38.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;deletedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test-nb&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;ownerId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;e9ca23d68d884d4ebb19d07889727dae&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;notebook-env&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:jupyter-notebook-0.7.0-SNAPSHOT&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;submarine_jupyter_py3&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;channels&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;defaults&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;condaDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;pipDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;TEST_ENV&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1.0Gi&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="list-notebook-instances-which-belong-to-user"></a>List notebook instances which belong to user<a class="hash-link" href="#list-notebook-instances-which-belong-to-user" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">GET /api/v1/notebook</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="parameters-1"></a>Parameters<a class="hash-link" href="#parameters-1" title="Direct link to heading">#</a></h3><table><thead><tr><th>Field Name</th><th>Type</th><th>In</th><th>Description</th></tr></thead><tbody><tr><td>id</td><td>String</td><td>query</td><td>User id.</td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example-1"></a>Code Example<a class="hash-link" href="#code-example-1" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X GET http://127.0.0.1:32080/api/v1/notebook?id=e9ca23d68d884d4ebb19d07889727dae</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;List all notebook instances&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;notebookId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;notebook_1626160071451_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test-nb&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;uid&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;a56713da-f2a3-40d0-ae2e-45fdc0bb15f5&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;url&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;/notebook/default/test-nb/lab&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;waiting&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;reason&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ContainerCreating&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;createdTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-07-13T16:23:38.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;deletedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test-nb&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;ownerId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;e9ca23d68d884d4ebb19d07889727dae&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;notebook-env&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:jupyter-notebook-0.7.0-SNAPSHOT&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;submarine_jupyter_py3&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;channels&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;defaults&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;condaDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;pipDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;TEST_ENV&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1.0Gi&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="get-the-notebook-instance"></a>Get the notebook instance<a class="hash-link" href="#get-the-notebook-instance" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">GET /api/v1/notebook/{id}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="parameters-2"></a>Parameters<a class="hash-link" href="#parameters-2" title="Direct link to heading">#</a></h3><table><thead><tr><th>Field Name</th><th>Type</th><th>In</th><th>Description</th></tr></thead><tbody><tr><td>id</td><td>String</td><td>path</td><td>Notebook id.</td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example-2"></a>Code Example<a class="hash-link" href="#code-example-2" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X GET http://127.0.0.1:32080/api/v1/notebook/notebook_1626160071451_0001</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Get the notebook instance&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;notebookId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;notebook_1626160071451_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test-nb&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;uid&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;a56713da-f2a3-40d0-ae2e-45fdc0bb15f5&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;url&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;/notebook/default/test-nb/lab&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;waiting&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;reason&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ContainerCreating&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;createdTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-07-13T16:23:38.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;deletedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test-nb&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;ownerId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;e9ca23d68d884d4ebb19d07889727dae&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;notebook-env&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:jupyter-notebook-0.7.0-SNAPSHOT&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;submarine_jupyter_py3&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;channels&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;defaults&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;condaDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;pipDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;TEST_ENV&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1.0Gi&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="delete-the-notebook-instance"></a>Delete the notebook instance<a class="hash-link" href="#delete-the-notebook-instance" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">DELETE /api/v1/notebook/{id}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="parameters-3"></a>Parameters<a class="hash-link" href="#parameters-3" title="Direct link to heading">#</a></h3><table><thead><tr><th>Field Name</th><th>Type</th><th>In</th><th>Description</th></tr></thead><tbody><tr><td>id</td><td>String</td><td>path</td><td>Notebook id.</td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example-3"></a>Code Example<a class="hash-link" href="#code-example-3" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X DELETE http://127.0.0.1:32080/api/v1/notebook/notebook_1626160071451_0001</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Delete the notebook instance&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;notebookId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;notebook_1626160071451_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test-nb&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;uid&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;a56713da-f2a3-40d0-ae2e-45fdc0bb15f5&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;url&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;/notebook/default/test-nb/lab&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;terminating&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;reason&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;The notebook instance is terminating&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;createdTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-07-13T16:23:38.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;deletedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test-nb&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;ownerId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;e9ca23d68d884d4ebb19d07889727dae&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;notebook-env&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:jupyter-notebook-0.7.0-SNAPSHOT&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;submarine_jupyter_py3&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;channels&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;defaults&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;condaDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;pipDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;TEST_ENV&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1.0Gi&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/userDocs/api/notebook.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/next/userDocs/api/experiment-template"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Experiment Template REST API</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/next/userDocs/submarine-sdk/experiment-client"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Experiment Client »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#create-a-notebook-instance" class="table-of-contents__link">Create a Notebook Instance</a><ul><li><a href="#parameters" class="table-of-contents__link">Parameters</a></li><li><a href="#code-example" class="table-of-contents__link">Code Example</a></li></ul></li><li><a href="#list-notebook-instances-which-belong-to-user" class="table-of-contents__link">List notebook instances which belong to user</a><ul><li><a href="#parameters-1" class="table-of-contents__link">Parameters</a></li><li><a href="#code-example-1" class="table-of-contents__link">Code Example</a></li></ul></li><li><a href="#get-the-notebook-instance" class="table-of-contents__link">Get the notebook instance</a><ul><li><a href="#parameters-2" class="table-of-contents__link">Parameters</a></li><li><a href="#code-example-2" class="table-of-contents__link">Code Example</a></li></ul></li><li><a href="#delete-the-notebook-instance" class="table-of-contents__link">Delete the notebook instance</a><ul><li><a href="#parameters-3" class="table-of-contents__link">Parameters</a></li><li><a href="#code-example-3" class="table-of-contents__link">Code Example</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/be249313.cc6110d6.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/935f2afb.9989d552.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/be249313.cafe9dfe.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/next/userDocs/others/mlflow/index.html b/docs/next/userDocs/others/mlflow/index.html
index 82b724b..e493d22 100644
--- a/docs/next/userDocs/others/mlflow/index.html
+++ b/docs/next/userDocs/others/mlflow/index.html
@@ -6,20 +6,20 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">MLflow UI | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="MLflow UI | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/userDocs/others/mlflow"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/userDocs/others/mlflow"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/82a4a2ce.6fb82595.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/935f2afb.9989d552.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/82a4a2ce.d86e16ea.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/userDocs/others/mlflow">master 🏃</a></li><li><a class="dropdown__link" href="/docs/userDocs/others/mlflow">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/userDocs/others/mlflow">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/userDocs/others/mlflow">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!" tabindex="0">Others</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Administrator Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine on Yarn</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/adminDocs/yarn/README">Running Submarine on YARN (deprecated)</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/userDocs/others/mlflow">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">MLflow UI</h1></header><div class="markdown"><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="usage"></a>Usage<a class="hash-link" href="#usage" title="Direct link to heading">#</a></h3><p>MLflow UI shows the tracking result of the experiments. When we
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/userDocs/others/mlflow">master 🏃</a></li><li><a class="dropdown__link" href="/docs/userDocs/others/mlflow">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/userDocs/others/mlflow">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/userDocs/others/mlflow">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!" tabindex="0">Others</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/userDocs/others/mlflow">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">MLflow UI</h1></header><div class="markdown"><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="usage"></a>Usage<a class="hash-link" href="#usage" title="Direct link to heading">#</a></h3><p>MLflow UI shows the tracking result of the experiments. When we
 use the log_param or log_metric in ModelClient API, we could view
 the result in MLflow UI. Below is the example of the usage of MLflow
 UI.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="example"></a>Example<a class="hash-link" href="#example" title="Direct link to heading">#</a></h3><ol><li>Run the following code in the cluster</li></ol><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-python codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token keyword" style="font-style:italic">from</span><span class="token plain"> submarine </span><span class="token keyword" style="font-style:italic">import</span><span class="token plain"> ModelsClient</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token keyword" style="font-style:italic">import</span><span class="token plain"> random</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token keyword" style="font-style:italic">import</span><span class="token plain"> time</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
@@ -27,15 +27,15 @@
 result. You can also compare the training between different workers.</li></ol><p><img src="/assets/images/mlflow-ui-e2fbae31ba60c324e66f00f0ae3caebf.png"></p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/userDocs/others/mlflow.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/next/userDocs/submarine-sdk/tracking"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Tracking</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/next/userDocs/others/tensorboard"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Tensorboard »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#usage" class="table-of-contents__link">Usage</a></li><li><a href="#example" class="table-of-contents__link">Example</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/82a4a2ce.6fb82595.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/935f2afb.9989d552.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/82a4a2ce.d86e16ea.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/next/userDocs/others/tensorboard/index.html b/docs/next/userDocs/others/tensorboard/index.html
index 1ad6a5d..0a5037d 100644
--- a/docs/next/userDocs/others/tensorboard/index.html
+++ b/docs/next/userDocs/others/tensorboard/index.html
@@ -6,32 +6,32 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Tensorboard | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="Tensorboard | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/userDocs/others/tensorboard"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/userDocs/others/tensorboard"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/1dbe41c3.0d89d882.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/935f2afb.9989d552.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/1dbe41c3.8f633975.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/userDocs/others/tensorboard">master 🏃</a></li><li><a class="dropdown__link" href="/docs/userDocs/others/tensorboard">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/userDocs/others/tensorboard">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/userDocs/others/tensorboard">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!" tabindex="0">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Administrator Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine on Yarn</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/adminDocs/yarn/README">Running Submarine on YARN (deprecated)</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/userDocs/others/tensorboard">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Tensorboard</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="write-to-logdirs-by-the-environment-variable"></a>Write to LogDirs by the environment variable<a class="hash-link" href="#write-to-logdirs-by-the-environment-variable" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="environment-variable"></a>Environment variable<a class="hash-link" href="#environment-variable" title="Direct link to heading">#</a></h3><ul><li><code>SUBMARINE_TENSORBOARD_LOG_DIR</code>: Exist in every experiment container. You just need to direct your logs to <code>$(SUBMARINE_TENSORBOARD_LOG_DIR)</code> (<strong>NOTICE: it is <code>()</code> not <code>{}</code></strong>), and you can inspect the process on the tensorboard webpage.</li></ul><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="example"></a>Example<a class="hash-link" href="#example" title="Direct link to heading">#</a></h3><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">{</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;meta&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;name&quot;: &quot;tensorflow-tensorboard-dist-mnist&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;namespace&quot;: &quot;default&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;framework&quot;: &quot;TensorFlow&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;cmd&quot;: &quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir=$(SUBMARINE_TENSORBOARD_LOG_DIR) --learning_rate=0.01 --batch_size=20&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;envVars&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;ENV_1&quot;: &quot;ENV1&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;environment&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;image&quot;: &quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;spec&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;Worker&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;replicas&quot;: 1,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;resources&quot;: &quot;cpu=1,memory=512M&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">}</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
-</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="connect-to-the-tensorboard-webpage"></a>Connect to the tensorboard webpage<a class="hash-link" href="#connect-to-the-tensorboard-webpage" title="Direct link to heading">#</a></h2><ol><li>Open the experiment page in the workbench, and Click the <code>TensorBoard</code> button.</li></ol><p><img src="/assets/images/tensorboard-experiment-page-bf5d5aad633d80ef059ce4b7e4d91db3.png"></p><ol start="2"><li>Inspect the process on tensorboard page.</li></ol><p><img src="/assets/images/tensorboard-webpage-f8b9c5ceeb7b5ef535939ea22f680d96.png"></p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/userDocs/others/tensorboard.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/next/userDocs/others/mlflow"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« MLflow UI</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/next/adminDocs/yarn/README"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Running Submarine on YARN (deprecated) »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#write-to-logdirs-by-the-environment-variable" class="table-of-contents__link">Write to LogDirs by the environment variable</a><ul><li><a href="#environment-variable" class="table-of-contents__link">Environment variable</a></li><li><a href="#example" class="table-of-contents__link">Example</a></li></ul></li><li><a href="#connect-to-the-tensorboard-webpage" class="table-of-contents__link">Connect to the tensorboard webpage</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/userDocs/others/tensorboard">master 🏃</a></li><li><a class="dropdown__link" href="/docs/userDocs/others/tensorboard">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/userDocs/others/tensorboard">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/userDocs/others/tensorboard">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!" tabindex="0">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/userDocs/others/tensorboard">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Tensorboard</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="write-to-logdirs-by-the-environment-variable"></a>Write to LogDirs by the environment variable<a class="hash-link" href="#write-to-logdirs-by-the-environment-variable" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="environment-variable"></a>Environment variable<a class="hash-link" href="#environment-variable" title="Direct link to heading">#</a></h3><ul><li><code>SUBMARINE_TENSORBOARD_LOG_DIR</code>: Exist in every experiment container. You just need to direct your logs to <code>$(SUBMARINE_TENSORBOARD_LOG_DIR)</code> (<strong>NOTICE: it is <code>()</code> not <code>{}</code></strong>), and you can inspect the process on the tensorboard webpage.</li></ul><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="example"></a>Example<a class="hash-link" href="#example" title="Direct link to heading">#</a></h3><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">{</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;meta&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;name&quot;: &quot;tensorflow-tensorboard-dist-mnist&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;namespace&quot;: &quot;default&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;framework&quot;: &quot;TensorFlow&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;cmd&quot;: &quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir=$(SUBMARINE_TENSORBOARD_LOG_DIR) --learning_rate=0.01 --batch_size=20&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;envVars&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;ENV_1&quot;: &quot;ENV1&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;environment&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;image&quot;: &quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;spec&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;Worker&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;replicas&quot;: 1,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;resources&quot;: &quot;cpu=1,memory=512M&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">}</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
+</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="connect-to-the-tensorboard-webpage"></a>Connect to the tensorboard webpage<a class="hash-link" href="#connect-to-the-tensorboard-webpage" title="Direct link to heading">#</a></h2><ol><li>Open the experiment page in the workbench, and Click the <code>TensorBoard</code> button.</li></ol><p><img src="/assets/images/tensorboard-experiment-page-bf5d5aad633d80ef059ce4b7e4d91db3.png"></p><ol start="2"><li>Inspect the process on tensorboard page.</li></ol><p><img src="/assets/images/tensorboard-webpage-f8b9c5ceeb7b5ef535939ea22f680d96.png"></p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/userDocs/others/tensorboard.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/next/userDocs/others/mlflow"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« MLflow UI</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/next/devDocs/README"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Project Architecture »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#write-to-logdirs-by-the-environment-variable" class="table-of-contents__link">Write to LogDirs by the environment variable</a><ul><li><a href="#environment-variable" class="table-of-contents__link">Environment variable</a></li><li><a href="#example" class="table-of-contents__link">Example</a></li></ul></li><li><a href="#connect-to-the-tensorboard-webpage" class="table-of-contents__link">Connect to the tensorboard webpage</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/1dbe41c3.0d89d882.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/935f2afb.9989d552.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/1dbe41c3.8f633975.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/next/userDocs/submarine-sdk/README/index.html b/docs/next/userDocs/submarine-sdk/README/index.html
index ad0a9c9..4c62031 100644
--- a/docs/next/userDocs/submarine-sdk/README/index.html
+++ b/docs/next/userDocs/submarine-sdk/README/index.html
@@ -6,16 +6,16 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Submarine-SDK | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="Submarine-SDK | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/userDocs/submarine-sdk/README"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/userDocs/submarine-sdk/README"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/54b0b691.5c84f45c.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/935f2afb.9989d552.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/54b0b691.1ced8c8b.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -23,15 +23,15 @@
 add tracking/metrics and view tracking/metrics from Submarine Workbench UI.</p></li></ul></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/userDocs/submarine-sdk/README.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"></div><div class="pagination-nav__item pagination-nav__item--next"></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#summary" class="table-of-contents__link">Summary</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/54b0b691.5c84f45c.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/935f2afb.9989d552.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/54b0b691.1ced8c8b.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/next/userDocs/submarine-sdk/experiment-client/index.html b/docs/next/userDocs/submarine-sdk/experiment-client/index.html
index e3444b9..1613a3b 100644
--- a/docs/next/userDocs/submarine-sdk/experiment-client/index.html
+++ b/docs/next/userDocs/submarine-sdk/experiment-client/index.html
@@ -6,32 +6,32 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Experiment Client | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="Experiment Client | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/userDocs/submarine-sdk/experiment-client"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/userDocs/submarine-sdk/experiment-client"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/0581431b.42102481.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/935f2afb.9989d552.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/0581431b.3f38c1ae.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/userDocs/submarine-sdk/experiment-client">master 🏃</a></li><li><a class="dropdown__link" href="/docs/userDocs/submarine-sdk/experiment-client">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/userDocs/submarine-sdk/experiment-client">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/userDocs/submarine-sdk/experiment-client">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!" tabindex="0">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Administrator Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine on Yarn</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/adminDocs/yarn/README">Running Submarine on YARN (deprecated)</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/userDocs/submarine-sdk/experiment-client">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Experiment Client</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="class-experimentclient"></a>class ExperimentClient()<a class="hash-link" href="#class-experimentclient" title="Direct link to heading">#</a></h2><p>Client of a submarine server that creates and manages experients and logs.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="create_experimentexperiment_spec-json---dict"></a><code>create_experiment(experiment_spec: json) -&gt; dict</code><a class="hash-link" href="#create_experimentexperiment_spec-json---dict" title="Direct link to heading">#</a></h3><p>Create an experiment.</p><blockquote><p><strong>Parameters</strong></p><ul><li><strong>experiment_spec</strong>: Submarine experiment spec. More detailed information can be found at <a href="https://submarine.apache.org/docs/userDocs/api/experiment" target="_blank" rel="noopener noreferrer">Experiment API</a>.</li></ul></blockquote><blockquote><p><strong>Returns</strong>: The detailed info about the submarine experiment.</p></blockquote><p>Example</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-python codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token keyword" style="font-style:italic">from</span><span class="token plain"> submarine </span><span class="token keyword" style="font-style:italic">import</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">*</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">client </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> ExperimentClient</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">client</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token plain">create_experiment</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;meta&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;name&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;namespace&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;framework&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;TensorFlow&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cmd&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;envVars&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV_1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;environment&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;image&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Ps&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;replicas&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;resources&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu=1,memory=1024M&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Worker&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;replicas&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;resources&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu=1,memory=1024M&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="patch_experimentid-str-experiment_spec-json---dict"></a><code>patch_experiment(id: str, experiment_spec: json) -&gt; dict</code><a class="hash-link" href="#patch_experimentid-str-experiment_spec-json---dict" title="Direct link to heading">#</a></h3><p>Patch an experiment.</p><blockquote><p><strong>Parameters</strong></p><ul><li><strong>id</strong>: Submarine experiment id. </li><li><strong>experiment_spec</strong>: Submarine experiment spec. More detailed information can be found at <a href="https://submarine.apache.org/docs/userDocs/api/experiment" target="_blank" rel="noopener noreferrer">Experiment API</a>.</li></ul></blockquote><blockquote><p><strong>Returns</strong></p><ul><li>The detailed info about the submarine experiment.</li></ul></blockquote><p>Example</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-python codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">client</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token plain">patch_experiment</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_1626160071451_0008&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;meta&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;name&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;namespace&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;framework&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;TensorFlow&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cmd&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;envVars&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV_1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;environment&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;image&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Worker&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;replicas&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">2</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;resources&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu=1,memory=1024M&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="get_experimentid-str---dict"></a><code>get_experiment(id: str) -&gt; dict</code><a class="hash-link" href="#get_experimentid-str---dict" title="Direct link to heading">#</a></h3><p>Get the experiment&#x27;s detailed info by id.</p><blockquote><p><strong>Parameters</strong></p><ul><li><strong>id</strong>: Submarine experiment id.</li></ul></blockquote><blockquote><p><strong>Returns</strong></p><ul><li>The detailed info about the submarine experiment.</li></ul></blockquote><p>Example</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-python codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">experiment </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> client</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token plain">get_experiment</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_1626160071451_0008&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="list_experimentsstatus-optionalstrnone---listdict"></a><code>list_experiments(status: Optional[str]=None) -&gt; list[dict]</code><a class="hash-link" href="#list_experimentsstatus-optionalstrnone---listdict" title="Direct link to heading">#</a></h3><p>List all experiment for the user.</p><blockquote><p><strong>Parameters</strong></p><ul><li><strong>status</strong>: Accepted, Created, Running, Succeeded, Deleted.</li></ul></blockquote><blockquote><p><strong>Returns</strong></p><ul><li>List of submarine experiments.</li></ul></blockquote><p>Example</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-python codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">experiments </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> client</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token plain">list_experiments</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="delete_experimentid-str---dict"></a><code>delete_experiment(id: str) -&gt; dict</code><a class="hash-link" href="#delete_experimentid-str---dict" title="Direct link to heading">#</a></h3><p>Delete the submarine experiment.</p><blockquote><p><strong>Parameters</strong></p><ul><li><strong>id</strong>: Submarine experiment id.</li></ul></blockquote><blockquote><p><strong>Returns</strong></p><ul><li>The detailed info about the deleted submarine experiment.</li></ul></blockquote><p>Example</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-python codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">client</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token plain">delete_experiment</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_1626160071451_0008&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="get_logid-str-onlymaster-optionalboolfalse---none"></a><code>get_log(id: str, onlyMaster: Optional[bool]=False) -&gt; None</code><a class="hash-link" href="#get_logid-str-onlymaster-optionalboolfalse---none" title="Direct link to heading">#</a></h3><p>Print training logs of all pod of the experiment.
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/userDocs/submarine-sdk/experiment-client">master 🏃</a></li><li><a class="dropdown__link" href="/docs/userDocs/submarine-sdk/experiment-client">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/userDocs/submarine-sdk/experiment-client">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/userDocs/submarine-sdk/experiment-client">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!" tabindex="0">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/userDocs/submarine-sdk/experiment-client">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Experiment Client</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="class-experimentclient"></a>class ExperimentClient()<a class="hash-link" href="#class-experimentclient" title="Direct link to heading">#</a></h2><p>Client of a submarine server that creates and manages experients and logs.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="create_experimentexperiment_spec-json---dict"></a><code>create_experiment(experiment_spec: json) -&gt; dict</code><a class="hash-link" href="#create_experimentexperiment_spec-json---dict" title="Direct link to heading">#</a></h3><p>Create an experiment.</p><blockquote><p><strong>Parameters</strong></p><ul><li><strong>experiment_spec</strong>: Submarine experiment spec. More detailed information can be found at <a href="https://submarine.apache.org/docs/userDocs/api/experiment" target="_blank" rel="noopener noreferrer">Experiment API</a>.</li></ul></blockquote><blockquote><p><strong>Returns</strong>: The detailed info about the submarine experiment.</p></blockquote><p>Example</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-python codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token keyword" style="font-style:italic">from</span><span class="token plain"> submarine </span><span class="token keyword" style="font-style:italic">import</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">*</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">client </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> ExperimentClient</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">client</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token plain">create_experiment</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;meta&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;name&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;namespace&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;framework&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;TensorFlow&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cmd&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;envVars&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV_1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;environment&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;image&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Ps&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;replicas&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;resources&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu=1,memory=1024M&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Worker&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;replicas&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;resources&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu=1,memory=1024M&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="patch_experimentid-str-experiment_spec-json---dict"></a><code>patch_experiment(id: str, experiment_spec: json) -&gt; dict</code><a class="hash-link" href="#patch_experimentid-str-experiment_spec-json---dict" title="Direct link to heading">#</a></h3><p>Patch an experiment.</p><blockquote><p><strong>Parameters</strong></p><ul><li><strong>id</strong>: Submarine experiment id. </li><li><strong>experiment_spec</strong>: Submarine experiment spec. More detailed information can be found at <a href="https://submarine.apache.org/docs/userDocs/api/experiment" target="_blank" rel="noopener noreferrer">Experiment API</a>.</li></ul></blockquote><blockquote><p><strong>Returns</strong></p><ul><li>The detailed info about the submarine experiment.</li></ul></blockquote><p>Example</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-python codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">client</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token plain">patch_experiment</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_1626160071451_0008&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;meta&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;name&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;namespace&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;framework&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;TensorFlow&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cmd&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;envVars&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV_1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;environment&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;image&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Worker&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;replicas&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">2</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;resources&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu=1,memory=1024M&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="get_experimentid-str---dict"></a><code>get_experiment(id: str) -&gt; dict</code><a class="hash-link" href="#get_experimentid-str---dict" title="Direct link to heading">#</a></h3><p>Get the experiment&#x27;s detailed info by id.</p><blockquote><p><strong>Parameters</strong></p><ul><li><strong>id</strong>: Submarine experiment id.</li></ul></blockquote><blockquote><p><strong>Returns</strong></p><ul><li>The detailed info about the submarine experiment.</li></ul></blockquote><p>Example</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-python codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">experiment </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> client</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token plain">get_experiment</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_1626160071451_0008&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="list_experimentsstatus-optionalstrnone---listdict"></a><code>list_experiments(status: Optional[str]=None) -&gt; list[dict]</code><a class="hash-link" href="#list_experimentsstatus-optionalstrnone---listdict" title="Direct link to heading">#</a></h3><p>List all experiment for the user.</p><blockquote><p><strong>Parameters</strong></p><ul><li><strong>status</strong>: Accepted, Created, Running, Succeeded, Deleted.</li></ul></blockquote><blockquote><p><strong>Returns</strong></p><ul><li>List of submarine experiments.</li></ul></blockquote><p>Example</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-python codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">experiments </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> client</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token plain">list_experiments</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="delete_experimentid-str---dict"></a><code>delete_experiment(id: str) -&gt; dict</code><a class="hash-link" href="#delete_experimentid-str---dict" title="Direct link to heading">#</a></h3><p>Delete the submarine experiment.</p><blockquote><p><strong>Parameters</strong></p><ul><li><strong>id</strong>: Submarine experiment id.</li></ul></blockquote><blockquote><p><strong>Returns</strong></p><ul><li>The detailed info about the deleted submarine experiment.</li></ul></blockquote><p>Example</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-python codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">client</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token plain">delete_experiment</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_1626160071451_0008&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="get_logid-str-onlymaster-optionalboolfalse---none"></a><code>get_log(id: str, onlyMaster: Optional[bool]=False) -&gt; None</code><a class="hash-link" href="#get_logid-str-onlymaster-optionalboolfalse---none" title="Direct link to heading">#</a></h3><p>Print training logs of all pod of the experiment.
 By default print all the logs of Pod.</p><blockquote><p><strong>Parameters</strong></p><ul><li><strong>id</strong>: Submarine experiment id.</li><li><strong>onlyMaster</strong>: By default include pod log of &quot;master&quot; which might be Tensorflow PS/Chief or PyTorch master.</li></ul></blockquote><blockquote><p><strong>Return</strong></p><ul><li>The info of pod logs</li></ul></blockquote><p>Example</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-python codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">client</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token plain">get_log</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_1626160071451_0009&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="list_logstatus-str---listdict"></a><code>list_log(status: str) -&gt; list[dict]</code><a class="hash-link" href="#list_logstatus-str---listdict" title="Direct link to heading">#</a></h3><p>List experiment log.</p><blockquote><p><strong>Parameters</strong></p><ul><li><strong>status</strong>: Accepted, Created, Running, Succeeded, Deleted.</li></ul></blockquote><blockquote><p><strong>Returns</strong></p><ul><li>List of submarine experiment logs.</li></ul></blockquote><p>Example</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-python codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">logs </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> client</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token plain">list_log</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Succeeded&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="wait_for_finishid-str-polling_interval-optionalint10---dict"></a><code>wait_for_finish(id: str, polling_interval: Optional[int]=10) -&gt; dict</code><a class="hash-link" href="#wait_for_finishid-str-polling_interval-optionalint10---dict" title="Direct link to heading">#</a></h3><p>Waits until the experiment is finished or failed.</p><blockquote><p><strong>Parameters</strong></p><ul><li><strong>id</strong>: Submarine experiment id.</li><li><strong>polling_interval</strong>: How many seconds between two polls for the status of the experiment.</li></ul></blockquote><blockquote><p><strong>Returns</strong></p><ul><li>Submarine experiment logs.</li></ul></blockquote><p>Example</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-python codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">logs </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> client</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token plain">wait_for_finish</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_1626160071451_0009&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">5</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/userDocs/submarine-sdk/experiment-client.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/next/userDocs/api/notebook"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Notebook REST API</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/next/userDocs/submarine-sdk/submarine-cli"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Submarine CLI »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#class-experimentclient" class="table-of-contents__link">class ExperimentClient()</a><ul><li><a href="#create_experimentexperiment_spec-json---dict" class="table-of-contents__link"><code>create_experiment(experiment_spec: json) -&gt; dict</code></a></li><li><a href="#patch_experimentid-str-experiment_spec-json---dict" class="table-of-contents__link"><code>patch_experiment(id: str, experiment_spec: json) -&gt; dict</code></a></li><li><a href="#get_experimentid-str---dict" class="table-of-contents__link"><code>get_experiment(id: str) -&gt; dict</code></a></li><li><a href="#list_experimentsstatus-optionalstrnone---listdict" class="table-of-contents__link"><code>list_experiments(status: Optional[str]=None) -&gt; list[dict]</code></a></li><li><a href="#delete_experimentid-str---dict" class="table-of-contents__link"><code>delete_experiment(id: str) -&gt; dict</code></a></li><li><a href="#get_logid-str-onlymaster-optionalboolfalse---none" class="table-of-contents__link"><code>get_log(id: str, onlyMaster: Optional[bool]=False) -&gt; None</code></a></li><li><a href="#list_logstatus-str---listdict" class="table-of-contents__link"><code>list_log(status: str) -&gt; list[dict]</code></a></li><li><a href="#wait_for_finishid-str-polling_interval-optionalint10---dict" class="table-of-contents__link"><code>wait_for_finish(id: str, polling_interval: Optional[int]=10) -&gt; dict</code></a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/0581431b.42102481.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/935f2afb.9989d552.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/0581431b.3f38c1ae.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/next/userDocs/submarine-sdk/pysubmarine/development/index.html b/docs/next/userDocs/submarine-sdk/pysubmarine/development/index.html
index 13014d3..6889ac3 100644
--- a/docs/next/userDocs/submarine-sdk/pysubmarine/development/index.html
+++ b/docs/next/userDocs/submarine-sdk/pysubmarine/development/index.html
@@ -6,16 +6,16 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Python SDK Development | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="Python SDK Development | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!---"><meta data-react-helmet="true" property="og:description" content="&lt;!---"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/userDocs/submarine-sdk/pysubmarine/development"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/userDocs/submarine-sdk/pysubmarine/development"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/cfa5b027.7f20886b.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/935f2afb.9989d552.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/cfa5b027.dedbc4b0.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -33,15 +33,15 @@
 in your local directory</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">python setup.py bdist_wheel</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><ol start="4"><li>Upload python package to TestPyPI for testing</li></ol><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">python -m twine upload --repository testpypi dist/*</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><ol start="5"><li>Upload python package to PyPi</li></ol><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">python -m twine upload --repository-url https://upload.pypi.org/legacy/ dist/*</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/userDocs/submarine-sdk/pysubmarine/development.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"></div><div class="pagination-nav__item pagination-nav__item--next"></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#prerequisites" class="table-of-contents__link">Prerequisites</a></li><li><a href="#pysubmarine-docker" class="table-of-contents__link">PySubmarine Docker</a></li><li><a href="#coding-style" class="table-of-contents__link">Coding Style</a></li><li><a href="#unit-testing" class="table-of-contents__link">Unit Testing</a></li><li><a href="#generate-python-sdk-from-swagger" class="table-of-contents__link">Generate python SDK from swagger</a></li><li><a href="#model-management-model-development" class="table-of-contents__link">Model Management Model Development</a></li><li><a href="#upload-package-to-pypi" class="table-of-contents__link">Upload package to PyPi</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/cfa5b027.7f20886b.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/935f2afb.9989d552.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/cfa5b027.dedbc4b0.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/next/userDocs/submarine-sdk/submarine-cli/index.html b/docs/next/userDocs/submarine-sdk/submarine-cli/index.html
index 67db072..d123f58 100644
--- a/docs/next/userDocs/submarine-sdk/submarine-cli/index.html
+++ b/docs/next/userDocs/submarine-sdk/submarine-cli/index.html
@@ -6,32 +6,32 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Submarine CLI | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="Submarine CLI | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/userDocs/submarine-sdk/submarine-cli"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/userDocs/submarine-sdk/submarine-cli"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/59e7e97e.31158bf6.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/935f2afb.9989d552.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/59e7e97e.c89625c2.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/userDocs/submarine-sdk/submarine-cli">master 🏃</a></li><li><a class="dropdown__link" href="/docs/">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/userDocs/submarine-sdk/submarine-cli">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!" tabindex="0">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Administrator Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine on Yarn</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/adminDocs/yarn/README">Running Submarine on YARN (deprecated)</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Submarine CLI</h1></header><div class="markdown"><p>Submarine CLI comes with pysubmarine python package. You can get CLI tools by pip installing apache-submarine.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="config"></a>Config<a class="hash-link" href="#config" title="Direct link to heading">#</a></h2><p>You can set your CLI settings by this command</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="init"></a>Init<a class="hash-link" href="#init" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">submarine config init </span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Return</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">Submarine CLI Config initialized</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Restore CLI config to default (hostname=<code>localhost</code>,port=<code>32080</code>)</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="show-current-config"></a>Show current config<a class="hash-link" href="#show-current-config" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">submarine config list </span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>For example : return</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">╭──────────────────── SubmarineCliConfig ─────────────────────╮</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">│ </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain">                                                           │</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">│   </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;connection&quot;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain">                                           │</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">│     </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;hostname&quot;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;localhost&quot;</span><span class="token plain">,                                │</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">│     </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;port&quot;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">32080</span><span class="token plain">                                           │</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">│   </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain">                                                         │</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">│ </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain">                                                           │</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">╰─────────────────────────────────────────────────────────────╯</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="set-config"></a>Set config<a class="hash-link" href="#set-config" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">submarine config </span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">set</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">&lt;</span><span class="token plain">parameter_path</span><span class="token operator" style="color:rgb(137, 221, 255)">&gt;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">&lt;</span><span class="token plain">value</span><span class="token operator" style="color:rgb(137, 221, 255)">&gt;</span><span class="token plain"> </span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>For example,
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/userDocs/submarine-sdk/submarine-cli">master 🏃</a></li><li><a class="dropdown__link" href="/docs/">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/userDocs/submarine-sdk/submarine-cli">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!" tabindex="0">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Submarine CLI</h1></header><div class="markdown"><p>Submarine CLI comes with pysubmarine python package. You can get CLI tools by pip installing apache-submarine.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="config"></a>Config<a class="hash-link" href="#config" title="Direct link to heading">#</a></h2><p>You can set your CLI settings by this command</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="init"></a>Init<a class="hash-link" href="#init" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">submarine config init </span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Return</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">Submarine CLI Config initialized</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Restore CLI config to default (hostname=<code>localhost</code>,port=<code>32080</code>)</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="show-current-config"></a>Show current config<a class="hash-link" href="#show-current-config" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">submarine config list </span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>For example : return</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">╭──────────────────── SubmarineCliConfig ─────────────────────╮</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">│ </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain">                                                           │</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">│   </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;connection&quot;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain">                                           │</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">│     </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;hostname&quot;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;localhost&quot;</span><span class="token plain">,                                │</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">│     </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;port&quot;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">32080</span><span class="token plain">                                           │</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">│   </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain">                                                         │</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">│ </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain">                                                           │</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">╰─────────────────────────────────────────────────────────────╯</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="set-config"></a>Set config<a class="hash-link" href="#set-config" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">submarine config </span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">set</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">&lt;</span><span class="token plain">parameter_path</span><span class="token operator" style="color:rgb(137, 221, 255)">&gt;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">&lt;</span><span class="token plain">value</span><span class="token operator" style="color:rgb(137, 221, 255)">&gt;</span><span class="token plain"> </span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>For example,
 Set connection port to 8080:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">submarine config </span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">set</span><span class="token plain"> connection.port </span><span class="token number" style="color:rgb(247, 140, 108)">8080</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="get-config"></a>Get config<a class="hash-link" href="#get-config" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">submarine config get </span><span class="token operator" style="color:rgb(137, 221, 255)">&lt;</span><span class="token plain">parameter_path</span><span class="token operator" style="color:rgb(137, 221, 255)">&gt;</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>For example,</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">submarine config get connection.port</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Return</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">connection.port</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token number" style="color:rgb(247, 140, 108)">8080</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="notebooks"></a>Notebooks<a class="hash-link" href="#notebooks" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="list-notebooks"></a>List Notebooks<a class="hash-link" href="#list-notebooks" title="Direct link to heading">#</a></h3><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">submarine list notebook </span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="get-notebooks"></a>Get Notebooks<a class="hash-link" href="#get-notebooks" title="Direct link to heading">#</a></h3><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">submarine get notebook </span><span class="token operator" style="color:rgb(137, 221, 255)">&lt;</span><span class="token plain">notebook id</span><span class="token operator" style="color:rgb(137, 221, 255)">&gt;</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><blockquote><p>you can get notebook id by using <code>list command</code></p></blockquote><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="delete-notebooks"></a>Delete Notebooks<a class="hash-link" href="#delete-notebooks" title="Direct link to heading">#</a></h3><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">submarine delete notebook </span><span class="token operator" style="color:rgb(137, 221, 255)">&lt;</span><span class="token plain">notebook id</span><span class="token operator" style="color:rgb(137, 221, 255)">&gt;</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="experiments"></a>Experiments<a class="hash-link" href="#experiments" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="list-experiments"></a>List Experiments<a class="hash-link" href="#list-experiments" title="Direct link to heading">#</a></h3><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">submarine list experiment </span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="get-experiment"></a>Get Experiment<a class="hash-link" href="#get-experiment" title="Direct link to heading">#</a></h3><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">submarine get experiment </span><span class="token operator" style="color:rgb(137, 221, 255)">&lt;</span><span class="token plain">experiment id</span><span class="token operator" style="color:rgb(137, 221, 255)">&gt;</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><blockquote><p>you can get experiment id by using <code>list command</code></p></blockquote><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="delete-experiment"></a>Delete Experiment<a class="hash-link" href="#delete-experiment" title="Direct link to heading">#</a></h3><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">submarine delete experiment </span><span class="token operator" style="color:rgb(137, 221, 255)">&lt;</span><span class="token plain">experiment id</span><span class="token operator" style="color:rgb(137, 221, 255)">&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain">--wait/--no-wait</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><ul><li>--wait/--no-wait: blocking or non blocking (default no wait)</li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="environments"></a>Environments<a class="hash-link" href="#environments" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="list-environments"></a>List Environments<a class="hash-link" href="#list-environments" title="Direct link to heading">#</a></h3><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">submarine list environment </span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="get-environments"></a>Get Environments<a class="hash-link" href="#get-environments" title="Direct link to heading">#</a></h3><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">submarine get environment </span><span class="token operator" style="color:rgb(137, 221, 255)">&lt;</span><span class="token plain">environment name</span><span class="token operator" style="color:rgb(137, 221, 255)">&gt;</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="delete-environments"></a>Delete Environments<a class="hash-link" href="#delete-environments" title="Direct link to heading">#</a></h3><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">submarine delete experiment </span><span class="token operator" style="color:rgb(137, 221, 255)">&lt;</span><span class="token plain">environment name</span><span class="token operator" style="color:rgb(137, 221, 255)">&gt;</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/userDocs/submarine-sdk/submarine-cli.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/next/userDocs/submarine-sdk/experiment-client"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Experiment Client</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/next/userDocs/submarine-sdk/tracking"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Tracking »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#config" class="table-of-contents__link">Config</a></li><li><a href="#init" class="table-of-contents__link">Init</a></li><li><a href="#show-current-config" class="table-of-contents__link">Show current config</a></li><li><a href="#set-config" class="table-of-contents__link">Set config</a></li><li><a href="#get-config" class="table-of-contents__link">Get config</a></li><li><a href="#notebooks" class="table-of-contents__link">Notebooks</a><ul><li><a href="#list-notebooks" class="table-of-contents__link">List Notebooks</a></li><li><a href="#get-notebooks" class="table-of-contents__link">Get Notebooks</a></li><li><a href="#delete-notebooks" class="table-of-contents__link">Delete Notebooks</a></li></ul></li><li><a href="#experiments" class="table-of-contents__link">Experiments</a><ul><li><a href="#list-experiments" class="table-of-contents__link">List Experiments</a></li><li><a href="#get-experiment" class="table-of-contents__link">Get Experiment</a></li><li><a href="#delete-experiment" class="table-of-contents__link">Delete Experiment</a></li></ul></li><li><a href="#environments" class="table-of-contents__link">Environments</a><ul><li><a href="#list-environments" class="table-of-contents__link">List Environments</a></li><li><a href="#get-environments" class="table-of-contents__link">Get Environments</a></li><li><a href="#delete-environments" class="table-of-contents__link">Delete Environments</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/59e7e97e.31158bf6.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/935f2afb.9989d552.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/59e7e97e.c89625c2.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/next/userDocs/submarine-sdk/tracking/index.html b/docs/next/userDocs/submarine-sdk/tracking/index.html
index c97c5f7..6c08cfd 100644
--- a/docs/next/userDocs/submarine-sdk/tracking/index.html
+++ b/docs/next/userDocs/submarine-sdk/tracking/index.html
@@ -6,35 +6,35 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Tracking | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="Tracking | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/userDocs/submarine-sdk/tracking"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/userDocs/submarine-sdk/tracking"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/a49341a2.5c2c393a.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/935f2afb.9989d552.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/a49341a2.3500a14c.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/userDocs/submarine-sdk/tracking">master 🏃</a></li><li><a class="dropdown__link" href="/docs/userDocs/submarine-sdk/tracking">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/userDocs/submarine-sdk/tracking">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/userDocs/submarine-sdk/tracking">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!" tabindex="0">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Administrator Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine on Yarn</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/adminDocs/yarn/README">Running Submarine on YARN (deprecated)</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/userDocs/submarine-sdk/tracking">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Tracking</h1></header><div class="markdown"><p>It helps developers use submarine&#x27;s internal data caching,
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/userDocs/submarine-sdk/tracking">master 🏃</a></li><li><a class="dropdown__link" href="/docs/userDocs/submarine-sdk/tracking">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/userDocs/submarine-sdk/tracking">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/userDocs/submarine-sdk/tracking">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!" tabindex="0">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/next/userDocs/submarine-sdk/submarine-cli">Submarine CLI</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/next/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToRelease">How to Release</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/devDocs/HowToVerify">How to Verify</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/Bylaws">Bylaws</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/contributing">How To Contribute to Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToVoteCommitterOrPMC">How to vote a Committer or PMC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/community/HowToBecomeCommitter">How to become a Committer</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/submarine-server/experimentSpec">Generic Experiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/next/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/userDocs/submarine-sdk/tracking">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Tracking</h1></header><div class="markdown"><p>It helps developers use submarine&#x27;s internal data caching,
 data exchange, and task tracking capabilities to more efficiently improve the
 development and execution of machine learning productivity</p><ul><li>Allow data scientist to track distributed ML experiment</li><li>Support store ML parameters and metrics in Submarine-server</li><li>Support hdfs, S3 and mysql (Currently we only support mysql)</li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="functions"></a>Functions<a class="hash-link" href="#functions" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="submarineget_tracking_uri---str"></a><code>submarine.get_tracking_uri() -&gt; str</code><a class="hash-link" href="#submarineget_tracking_uri---str" title="Direct link to heading">#</a></h3><p>Get the tracking URI. If none has been specified, check the environmental variables. If uri is still none, return the default submarine jdbc url.</p><blockquote><p><strong>Returns</strong></p><ul><li>The tracking URI.</li></ul></blockquote><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="submarineset_tracking_uriuri-str---none"></a><code>submarine.set_tracking_uri(uri: str) -&gt; None</code><a class="hash-link" href="#submarineset_tracking_uriuri-str---none" title="Direct link to heading">#</a></h3><p>set the tracking URI. You can also set the SUBMARINE_TRACKING_URI environment variable to have Submarine find a URI from there. The URI should be database connection string.</p><blockquote><p><strong>Parameters</strong></p><ul><li><strong>uri</strong> - Submarine record data to Mysql server. The database URL is expected in the format <code>&lt;dialect&gt;+&lt;driver&gt;://&lt;username&gt;:&lt;password&gt;@&lt;host&gt;:&lt;port&gt;/&lt;database&gt;</code>.
 By default it&#x27;s <code>mysql+pymysql://submarine:password@submarine-database:3306/submarine</code>.
 More detail : <a href="https://docs.sqlalchemy.org/en/latest/core/engines.html#database-urls" target="_blank" rel="noopener noreferrer">SQLAlchemy docs</a></li></ul></blockquote><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="submarinelog_paramkey-str-value-str---none"></a><code>submarine.log_param(key: str, value: str) -&gt; None</code><a class="hash-link" href="#submarinelog_paramkey-str-value-str---none" title="Direct link to heading">#</a></h3><p>log a single key-value parameter. The key and value are both strings.</p><blockquote><p><strong>Parameters</strong></p><ul><li><strong>key</strong> - Parameter name.</li><li><strong>value</strong> - Parameter value.</li></ul></blockquote><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="submarinelog_metrickey-str-value-float-step0---none"></a><code>submarine.log_metric(key: str, value: float, step=0) -&gt; None</code><a class="hash-link" href="#submarinelog_metrickey-str-value-float-step0---none" title="Direct link to heading">#</a></h3><p>log a single key-value metric. The value must always be a number.</p><blockquote><p><strong>Parameters</strong></p><ul><li><strong>key</strong> - Metric name.</li><li><strong>value</strong> - Metric value.</li><li><strong>step</strong> - A single integer step at which to log the specified Metrics, by default it&#x27;s 0.</li></ul></blockquote><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="submarinesave_modelmodel_type-str-model-artifact_path-str-registered_model_name-str--none-input_dim-list--none-output_dim-list--none---none"></a><code>submarine.save_model(model_type: str, model, artifact_path: str, registered_model_name: str = None, input_dim: list = None, output_dim: list = None,) -&gt; None</code><a class="hash-link" href="#submarinesave_modelmodel_type-str-model-artifact_path-str-registered_model_name-str--none-input_dim-list--none-output_dim-list--none---none" title="Direct link to heading">#</a></h3><p> Save a model into the minio pod.</p><blockquote><p><strong>Parameters</strong></p><ul><li><strong>model_type</strong> - The type of model. Only support <code>pytorch</code> and <code>tensorflow</code>.</li><li><strong>model</strong> - Model artifact.</li><li><strong>artifact_path</strong> - Model name.</li><li><strong>registered_model_name</strong> - If it is not <code>None</code>, the model will be registered into the model registry with this name.</li><li><strong>input_dim</strong> - The input dimension of the model.</li><li><strong>output_dim</strong> - The output dimension of the model.</li></ul></blockquote></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/userDocs/submarine-sdk/tracking.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/next/userDocs/submarine-sdk/submarine-cli"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Submarine CLI</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/next/userDocs/others/mlflow"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">MLflow UI »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#functions" class="table-of-contents__link">Functions</a><ul><li><a href="#submarineget_tracking_uri---str" class="table-of-contents__link"><code>submarine.get_tracking_uri() -&gt; str</code></a></li><li><a href="#submarineset_tracking_uriuri-str---none" class="table-of-contents__link"><code>submarine.set_tracking_uri(uri: str) -&gt; None</code></a></li><li><a href="#submarinelog_paramkey-str-value-str---none" class="table-of-contents__link"><code>submarine.log_param(key: str, value: str) -&gt; None</code></a></li><li><a href="#submarinelog_metrickey-str-value-float-step0---none" class="table-of-contents__link"><code>submarine.log_metric(key: str, value: float, step=0) -&gt; None</code></a></li><li><a href="#submarinesave_modelmodel_type-str-model-artifact_path-str-registered_model_name-str--none-input_dim-list--none-output_dim-list--none---none" class="table-of-contents__link"><code>submarine.save_model(model_type: str, model, artifact_path: str, registered_model_name: str = None, input_dim: list = None, output_dim: list = None,) -&gt; None</code></a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/a49341a2.5c2c393a.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/935f2afb.9989d552.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/a49341a2.3500a14c.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/next/userDocs/yarn/Dockerfiles/index.html b/docs/next/userDocs/yarn/Dockerfiles/index.html
deleted file mode 100644
index 8aaa6bb..0000000
--- a/docs/next/userDocs/yarn/Dockerfiles/index.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!doctype html>
-<html lang="en">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-alpha.70">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Write Dockerfiles for Submarine | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="Write Dockerfiles for Submarine | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/userDocs/yarn/Dockerfiles"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/userDocs/yarn/Dockerfiles"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/57a4862f.4cd29151.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/userDocs/yarn/Dockerfiles">master 🏃</a></li><li><a class="dropdown__link" href="/docs/userDocs/yarn/Dockerfiles">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/userDocs/yarn/Dockerfiles">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/userDocs/yarn/Dockerfiles">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/userDocs/yarn/Dockerfiles">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Write Dockerfiles for Submarine</h1></header><div class="markdown"><p><a href="/docs/next/userDocs/yarn/WriteDockerfileTF">How to write Dockerfile for Submarine TensorFlow jobs</a></p><p><a href="/docs/next/userDocs/yarn/WriteDockerfilePT">How to write Dockerfile for Submarine PyTorch jobs</a></p><p><a href="/docs/next/userDocs/yarn/WriteDockerfileMX">How to write Dockerfile for Submarine MXNet jobs</a></p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/userDocs/yarn/Dockerfiles.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"></div><div class="pagination-nav__item pagination-nav__item--next"></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
-       either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
-        countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/57a4862f.4cd29151.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/next/userDocs/yarn/TestAndTroubleshooting/index.html b/docs/next/userDocs/yarn/TestAndTroubleshooting/index.html
deleted file mode 100644
index 747aae4..0000000
--- a/docs/next/userDocs/yarn/TestAndTroubleshooting/index.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<!doctype html>
-<html lang="en">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-alpha.70">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Test and Troubleshooting | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="Test and Troubleshooting | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/userDocs/yarn/TestAndTroubleshooting"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/userDocs/yarn/TestAndTroubleshooting"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/53cf78e1.232689ff.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/userDocs/yarn/TestAndTroubleshooting">master 🏃</a></li><li><a class="dropdown__link" href="/docs/userDocs/yarn/TestAndTroubleshooting">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/userDocs/yarn/TestAndTroubleshooting">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/userDocs/yarn/TestAndTroubleshooting">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/userDocs/yarn/TestAndTroubleshooting">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Test and Troubleshooting</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="test-with-a-tensorflow-job"></a>Test with a tensorflow job<a class="hash-link" href="#test-with-a-tensorflow-job" title="Direct link to heading">#</a></h2><p>Distributed-shell + GPU + cgroup</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">..</span><span class="token plain">. </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> job run </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --env </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">DOCKER_JAVA_HOME</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">/opt/java </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --env </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">DOCKER_HADOOP_HDFS_HOME</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">/hadoop-current --name distributed-tf-gpu </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --env </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">YARN_CONTAINER_RUNTIME_DOCKER_CONTAINER_NETWORK</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">calico-network </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --worker_docker_image tf-1.13.1-gpu:0.0.1 </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --ps_docker_image tf-1.13.1-cpu:0.0.1 </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --input_path hdfs://</span><span class="token variable" style="color:rgb(191, 199, 213)">${dfs_name_service}</span><span class="token plain">/tmp/cifar-10-data </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --checkpoint_path hdfs://</span><span class="token variable" style="color:rgb(191, 199, 213)">${dfs_name_service}</span><span class="token plain">/user/hadoop/tf-distributed-checkpoint </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --num_ps </span><span class="token number" style="color:rgb(247, 140, 108)">0</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --ps_resources </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">memory</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">4G,vcores</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token number" style="color:rgb(247, 140, 108)">2</span><span class="token plain">,gpu</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token number" style="color:rgb(247, 140, 108)">0</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --ps_launch_cmd </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /test/cifar10_estimator/cifar10_main.py --data-dir=hdfs://</span><span class="token string variable" style="color:rgb(191, 199, 213)">${dfs_name_service}</span><span class="token string" style="color:rgb(195, 232, 141)">/tmp/cifar-10-data --job-dir=hdfs://</span><span class="token string variable" style="color:rgb(191, 199, 213)">${dfs_name_service}</span><span class="token string" style="color:rgb(195, 232, 141)">/tmp/cifar-10-jobdir --num-gpus=0&quot;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --worker_resources </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">memory</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">4G,vcores</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token number" style="color:rgb(247, 140, 108)">2</span><span class="token plain">,gpu</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token plain"> --verbose </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --num_workers </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --worker_launch_cmd </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /test/cifar10_estimator/cifar10_main.py --data-dir=hdfs://</span><span class="token string variable" style="color:rgb(191, 199, 213)">${dfs_name_service}</span><span class="token string" style="color:rgb(195, 232, 141)">/tmp/cifar-10-data --job-dir=hdfs://</span><span class="token string variable" style="color:rgb(191, 199, 213)">${dfs_name_service}</span><span class="token string" style="color:rgb(195, 232, 141)">/tmp/cifar-10-jobdir --train-steps=500 --eval-batch-size=16 --train-batch-size=16 --sync --num-gpus=1&quot;</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="issues"></a>Issues:<a class="hash-link" href="#issues" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="issue-1-fail-to-start-nodemanager-after-system-reboot"></a>Issue 1: Fail to start nodemanager after system reboot<a class="hash-link" href="#issue-1-fail-to-start-nodemanager-after-system-reboot" title="Direct link to heading">#</a></h3><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">2018-09-20 18:54:39,785 ERROR org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor: Failed to bootstrap configured resource subsystems!</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.ResourceHandlerException: Unexpected: Cannot create yarn cgroup Subsystem:cpu Mount points:/proc/mounts User:yarn Path:/sys/fs/cgroup/cpu,cpuacct/hadoop-yarn</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsHandlerImpl.initializePreMountedCGroupController(CGroupsHandlerImpl.java:425)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsHandlerImpl.initializeCGroupController(CGroupsHandlerImpl.java:377)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsCpuResourceHandlerImpl.bootstrap(CGroupsCpuResourceHandlerImpl.java:98)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsCpuResourceHandlerImpl.bootstrap(CGroupsCpuResourceHandlerImpl.java:87)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.ResourceHandlerChain.bootstrap(ResourceHandlerChain.java:58)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor.init(LinuxContainerExecutor.java:320)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.yarn.server.nodemanager.NodeManager.serviceInit(NodeManager.java:389)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.service.AbstractService.init(AbstractService.java:164)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.yarn.server.nodemanager.NodeManager.initAndStartNodeManager(NodeManager.java:929)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.yarn.server.nodemanager.NodeManager.main(NodeManager.java:997)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2018-09-20 18:54:39,789 INFO org.apache.hadoop.service.AbstractService: Service NodeManager failed in state INITED</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Solution: Grant user yarn the access to  <code>/sys/fs/cgroup/cpu,cpuacct</code>, which is the subfolder of cgroup mount destination.</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">chown :yarn -R /sys/fs/cgroup/cpu,cpuacct</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">chmod g+rwx -R /sys/fs/cgroup/cpu,cpuacct</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>If GPUs are used,the access to cgroup devices folder is neede as well</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">chown :yarn -R /sys/fs/cgroup/devices</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">chmod g+rwx -R /sys/fs/cgroup/devices</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="issue-2-container-executor-permission-denied"></a>Issue 2: container-executor permission denied<a class="hash-link" href="#issue-2-container-executor-permission-denied" title="Direct link to heading">#</a></h3><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">2018-09-21 09:36:26,102 WARN org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.privileged.PrivilegedOperationExecutor: IOException executing command:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">java.io.IOException: Cannot run program &quot;/etc/yarn/sbin/Linux-amd64-64/container-executor&quot;: error=13, Permission denied</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        at org.apache.hadoop.util.Shell.runCommand(Shell.java:938)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        at org.apache.hadoop.util.Shell.run(Shell.java:901)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:1213)</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Solution: The permission of <code>/etc/yarn/sbin/Linux-amd64-64/container-executor</code> should be 6050</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="issue-3:how-to-get-docker-service-log"></a>Issue 3:How to get docker service log<a class="hash-link" href="#issue-3:how-to-get-docker-service-log" title="Direct link to heading">#</a></h3><p>Solution: we can get docker log with the following command</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">journalctl -u docker</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="issue-4:docker-cant-remove-containers-with-errors-like-device-or-resource-busy"></a>Issue 4:docker can&#x27;t remove containers with errors like <code>device or resource busy</code><a class="hash-link" href="#issue-4:docker-cant-remove-containers-with-errors-like-device-or-resource-busy" title="Direct link to heading">#</a></h3><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">$ docker </span><span class="token function" style="color:rgb(130, 170, 255)">rm</span><span class="token plain"> 0bfafa146431</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Error response from daemon: Unable to remove filesystem </span><span class="token keyword" style="font-style:italic">for</span><span class="token plain"> 0bfafa146431771f6024dcb9775ef47f170edb2f1852f71916ba44209ca6120a: remove /app/docker/containers/0bfafa146431771f6024dcb9775ef47f170edb2f152f71916ba44209ca6120a/shm: device or resource busy</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Solution: to find which process leads to a <code>device or resource busy</code>, we can add a shell script, named <code>find-busy-mnt.sh</code></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token shebang important">#!/usr/bin/env bash</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
-</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># A simple script to get information about mount points and pids and their</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># mount namespaces.</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
-</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token keyword" style="font-style:italic">if</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain"> </span><span class="token variable" style="color:rgb(191, 199, 213)">$#</span><span class="token plain"> -ne </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">;</span><span class="token keyword" style="font-style:italic">then</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">echo</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Usage: </span><span class="token string variable" style="color:rgb(191, 199, 213)">$0</span><span class="token string" style="color:rgb(195, 232, 141)"> &lt;devicemapper-device-id&gt;&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">exit</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token keyword" style="font-style:italic">fi</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
-</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">ID</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token variable" style="color:rgb(191, 199, 213)">$1</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
-</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">MOUNTS</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token variable" style="color:rgb(191, 199, 213)">`</span><span class="token variable function" style="color:rgb(130, 170, 255)">find</span><span class="token variable" style="color:rgb(191, 199, 213)"> /proc/*/mounts </span><span class="token variable operator" style="color:rgb(137, 221, 255)">|</span><span class="token variable" style="color:rgb(191, 199, 213)"> </span><span class="token variable function" style="color:rgb(130, 170, 255)">xargs</span><span class="token variable" style="color:rgb(191, 199, 213)"> </span><span class="token variable function" style="color:rgb(130, 170, 255)">grep</span><span class="token variable" style="color:rgb(191, 199, 213)"> $ID </span><span class="token variable operator file-descriptor important" style="color:rgb(137, 221, 255)">2</span><span class="token variable operator" style="color:rgb(137, 221, 255)">&gt;</span><span class="token variable" style="color:rgb(191, 199, 213)">/dev/null</span><span class="token variable" style="color:rgb(191, 199, 213)">`</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
-</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain"> -z </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token string variable" style="color:rgb(191, 199, 213)">$MOUNTS</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain">  </span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">echo</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;No pids found&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">exit</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">0</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
-</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">printf</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;PID</span><span class="token string entity" style="color:rgb(195, 232, 141)">\t</span><span class="token string" style="color:rgb(195, 232, 141)">NAME</span><span class="token string entity" style="color:rgb(195, 232, 141)">\t</span><span class="token string entity" style="color:rgb(195, 232, 141)">\t</span><span class="token string" style="color:rgb(195, 232, 141)">MNTNS</span><span class="token string entity" style="color:rgb(195, 232, 141)">\n</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">echo</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token string variable" style="color:rgb(191, 199, 213)">$MOUNTS</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">|</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">while</span><span class="token plain"> </span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">read</span><span class="token plain"> LINE</span><span class="token punctuation" style="color:rgb(199, 146, 234)">;</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">do</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">PID</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token variable" style="color:rgb(191, 199, 213)">`</span><span class="token variable builtin class-name" style="color:rgb(255, 203, 107)">echo</span><span class="token variable" style="color:rgb(191, 199, 213)"> $LINE </span><span class="token variable operator" style="color:rgb(137, 221, 255)">|</span><span class="token variable" style="color:rgb(191, 199, 213)"> </span><span class="token variable function" style="color:rgb(130, 170, 255)">cut</span><span class="token variable" style="color:rgb(191, 199, 213)"> -d </span><span class="token variable string" style="color:rgb(195, 232, 141)">&quot;:&quot;</span><span class="token variable" style="color:rgb(191, 199, 213)"> -f1 </span><span class="token variable operator" style="color:rgb(137, 221, 255)">|</span><span class="token variable" style="color:rgb(191, 199, 213)"> </span><span class="token variable function" style="color:rgb(130, 170, 255)">cut</span><span class="token variable" style="color:rgb(191, 199, 213)"> -d </span><span class="token variable string" style="color:rgb(195, 232, 141)">&quot;/&quot;</span><span class="token variable" style="color:rgb(191, 199, 213)"> -f3</span><span class="token variable" style="color:rgb(191, 199, 213)">`</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Ignore self and thread-self</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token keyword" style="font-style:italic">if</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token string variable" style="color:rgb(191, 199, 213)">$PID</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">==</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;self&quot;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">||</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token string variable" style="color:rgb(191, 199, 213)">$PID</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">==</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;thread-self&quot;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">;</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">then</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">continue</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token keyword" style="font-style:italic">fi</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">NAME</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token variable" style="color:rgb(191, 199, 213)">`</span><span class="token variable function" style="color:rgb(130, 170, 255)">ps</span><span class="token variable" style="color:rgb(191, 199, 213)"> -q $PID -o </span><span class="token variable assign-left variable" style="color:rgb(191, 199, 213)">comm</span><span class="token variable operator" style="color:rgb(137, 221, 255)">=</span><span class="token variable" style="color:rgb(191, 199, 213)">`</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">MNTNS</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token variable" style="color:rgb(191, 199, 213)">`</span><span class="token variable" style="color:rgb(191, 199, 213)">readlink /proc/$PID/ns/mnt</span><span class="token variable" style="color:rgb(191, 199, 213)">`</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">printf</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;%s</span><span class="token string entity" style="color:rgb(195, 232, 141)">\t</span><span class="token string" style="color:rgb(195, 232, 141)">%s</span><span class="token string entity" style="color:rgb(195, 232, 141)">\t</span><span class="token string entity" style="color:rgb(195, 232, 141)">\t</span><span class="token string" style="color:rgb(195, 232, 141)">%s</span><span class="token string entity" style="color:rgb(195, 232, 141)">\n</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token string variable" style="color:rgb(191, 199, 213)">$PID</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token string variable" style="color:rgb(191, 199, 213)">$NAME</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token string variable" style="color:rgb(191, 199, 213)">$MNTNS</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token keyword" style="font-style:italic">done</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Kill the process by pid, which is found by the script</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">$ </span><span class="token function" style="color:rgb(130, 170, 255)">chmod</span><span class="token plain"> +x find-busy-mnt.sh</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">./find-busy-mnt.sh 0bfafa146431771f6024dcb9775ef47f170edb2f152f71916ba44209ca6120a</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># PID   NAME            MNTNS</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># 5007  ntpd            mnt:[4026533598]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">$ </span><span class="token function" style="color:rgb(130, 170, 255)">kill</span><span class="token plain"> -9 </span><span class="token number" style="color:rgb(247, 140, 108)">5007</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="issue-5:yarn-failed-to-start-containers"></a>Issue 5:Yarn failed to start containers<a class="hash-link" href="#issue-5:yarn-failed-to-start-containers" title="Direct link to heading">#</a></h3><p>if the number of GPUs required by applications is larger than the number of GPUs in the cluster, there would be some containers can&#x27;t be created.</p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/userDocs/yarn/TestAndTroubleshooting.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"></div><div class="pagination-nav__item pagination-nav__item--next"></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#test-with-a-tensorflow-job" class="table-of-contents__link">Test with a tensorflow job</a></li><li><a href="#issues" class="table-of-contents__link">Issues:</a><ul><li><a href="#issue-1-fail-to-start-nodemanager-after-system-reboot" class="table-of-contents__link">Issue 1: Fail to start nodemanager after system reboot</a></li><li><a href="#issue-2-container-executor-permission-denied" class="table-of-contents__link">Issue 2: container-executor permission denied</a></li><li><a href="#issue-3:how-to-get-docker-service-log" class="table-of-contents__link">Issue 3:How to get docker service log</a></li><li><a href="#issue-4:docker-cant-remove-containers-with-errors-like-device-or-resource-busy" class="table-of-contents__link">Issue 4:docker can&#39;t remove containers with errors like <code>device or resource busy</code></a></li><li><a href="#issue-5:yarn-failed-to-start-containers" class="table-of-contents__link">Issue 5:Yarn failed to start containers</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
-       either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
-        countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/53cf78e1.232689ff.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/next/userDocs/yarn/WriteDockerfileMX/index.html b/docs/next/userDocs/yarn/WriteDockerfileMX/index.html
deleted file mode 100644
index 1827929..0000000
--- a/docs/next/userDocs/yarn/WriteDockerfileMX/index.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<!doctype html>
-<html lang="en">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-alpha.70">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Docker Images for MXNet | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="Docker Images for MXNet | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/userDocs/yarn/WriteDockerfileMX"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/userDocs/yarn/WriteDockerfileMX"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/6c58af36.a748e664.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/userDocs/yarn/WriteDockerfileMX">master 🏃</a></li><li><a class="dropdown__link" href="/docs/userDocs/yarn/WriteDockerfileMX">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/userDocs/yarn/WriteDockerfileMX">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/userDocs/yarn/WriteDockerfileMX">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/userDocs/yarn/WriteDockerfileMX">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Docker Images for MXNet</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="how-to-create-docker-images-to-run-mxnet-on-yarn"></a>How to create docker images to run MXNet on YARN<a class="hash-link" href="#how-to-create-docker-images-to-run-mxnet-on-yarn" title="Direct link to heading">#</a></h2><p>Dockerfile to run MXNet on YARN needs two parts:</p><p><strong>Base libraries which MXNet depends on</strong></p><p>1) OS base image, for example <code>ubuntu:18.04</code></p><p>2) MXNet dependent libraries and packages. \
-For example <code>python</code>, <code>scipy</code>. For GPU support, you also need <code>cuda</code>, <code>cudnn</code>, etc.</p><p>3) MXNet package.</p><p><strong>Libraries to access HDFS</strong></p><p>1) JDK</p><p>2) Hadoop</p><p>Here&#x27;s an example of a base image (without GPU support) to install MXNet:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-shell codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">FROM ubuntu:18.04</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
-</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Install some development tools and packages</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># MXNet 1.6 is going to be the last MXNet release to support Python2</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">RUN </span><span class="token function" style="color:rgb(130, 170, 255)">apt-get</span><span class="token plain"> update </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">DEBIAN_FRONTEND</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">noninteractive </span><span class="token function" style="color:rgb(130, 170, 255)">apt-get</span><span class="token plain"> </span><span class="token function" style="color:rgb(130, 170, 255)">install</span><span class="token plain"> -y tzdata </span><span class="token function" style="color:rgb(130, 170, 255)">git</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token function" style="color:rgb(130, 170, 255)">wget</span><span class="token plain"> </span><span class="token function" style="color:rgb(130, 170, 255)">zip</span><span class="token plain"> python3 python3-pip python3-distutils libgomp1 libopenblas-dev libopencv-dev</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
-</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Install latest MXNet using pip (without GPU support)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">RUN pip3 </span><span class="token function" style="color:rgb(130, 170, 255)">install</span><span class="token plain"> mxnet</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
-</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">RUN </span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">echo</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Install python related packages&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    pip3 </span><span class="token function" style="color:rgb(130, 170, 255)">install</span><span class="token plain"> --user </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">graphviz</span><span class="token operator" style="color:rgb(137, 221, 255)">==</span><span class="token number" style="color:rgb(247, 140, 108)">0.8</span><span class="token plain">.4 ipykernel jupyter matplotlib numpy pandas scipy sklearn  </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    python3 -m ipykernel.kernelspec</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>On top of above image, add files, install packages to access HDFS</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-shell codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">ENV </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">JAVA_HOME</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">/usr/lib/jvm/java-8-openjdk-amd64</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">RUN </span><span class="token function" style="color:rgb(130, 170, 255)">apt-get</span><span class="token plain"> update </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token function" style="color:rgb(130, 170, 255)">apt-get</span><span class="token plain"> </span><span class="token function" style="color:rgb(130, 170, 255)">install</span><span class="token plain"> -y openjdk-8-jdk </span><span class="token function" style="color:rgb(130, 170, 255)">wget</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
-</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Install hadoop</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">ENV </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">HADOOP_VERSION</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;3.1.2&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">RUN </span><span class="token function" style="color:rgb(130, 170, 255)">wget</span><span class="token plain"> https://archive.apache.org/dist/hadoop/common/hadoop-</span><span class="token variable" style="color:rgb(191, 199, 213)">${HADOOP_VERSION}</span><span class="token plain">/hadoop-</span><span class="token variable" style="color:rgb(191, 199, 213)">${HADOOP_VERSION}</span><span class="token plain">.tar.gz</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># If you are in mainland China, you can use the following command.</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># RUN wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-${HADOOP_VERSION}/hadoop-${HADOOP_VERSION}.tar.gz</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
-</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">RUN </span><span class="token function" style="color:rgb(130, 170, 255)">tar</span><span class="token plain"> zxf hadoop-</span><span class="token variable" style="color:rgb(191, 199, 213)">${HADOOP_VERSION}</span><span class="token plain">.tar.gz</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">RUN </span><span class="token function" style="color:rgb(130, 170, 255)">ln</span><span class="token plain"> -s hadoop-</span><span class="token variable" style="color:rgb(191, 199, 213)">${HADOOP_VERSION}</span><span class="token plain"> hadoop-current</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">RUN </span><span class="token function" style="color:rgb(130, 170, 255)">rm</span><span class="token plain"> hadoop-</span><span class="token variable" style="color:rgb(191, 199, 213)">${HADOOP_VERSION}</span><span class="token plain">.tar.gz</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Build and push to your own docker registry: Use <code>docker build ... </code> and <code>docker push ...</code> to finish this step.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="use-examples-to-build-your-own-mxnet-docker-images"></a>Use examples to build your own MXNet docker images<a class="hash-link" href="#use-examples-to-build-your-own-mxnet-docker-images" title="Direct link to heading">#</a></h2><p>We provided some example Dockerfiles for you to build your own MXNet docker images.</p><p>For latest MXNet</p><ul><li><em>docker/mxnet/base/ubuntu-18.04/Dockerfile.cpu.mxnet_latest</em>: Latest MXNet that supports CPU</li><li><em>docker/mxnet/base/ubuntu-18.04/Dockerfile.gpu.mxnet_latest</em>: Latest MXNet that supports GPU, which is prebuilt to CUDA10.</li></ul><h1><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="build-docker-images"></a>Build Docker images<a class="hash-link" href="#build-docker-images" title="Direct link to heading">#</a></h1><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="manually-build-docker-image"></a>Manually build Docker image:<a class="hash-link" href="#manually-build-docker-image" title="Direct link to heading">#</a></h3><p>Under <code>docker/mxnet</code> directory, run <code>build-all.sh</code> to build all Docker images. This command will build the following Docker images:</p><ul><li><code>mxnet-latest-cpu-base:0.0.1</code> for base Docker image which includes Hadoop, MXNet</li><li><code>mxnet-latest-gpu-base:0.0.1</code> for base Docker image which includes Hadoop, MXNet, GPU base libraries.</li></ul></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/userDocs/yarn/WriteDockerfileMX.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"></div><div class="pagination-nav__item pagination-nav__item--next"></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#how-to-create-docker-images-to-run-mxnet-on-yarn" class="table-of-contents__link">How to create docker images to run MXNet on YARN</a></li><li><a href="#use-examples-to-build-your-own-mxnet-docker-images" class="table-of-contents__link">Use examples to build your own MXNet docker images</a><ul><li><a href="#manually-build-docker-image" class="table-of-contents__link">Manually build Docker image:</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
-       either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
-        countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/6c58af36.a748e664.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/next/userDocs/yarn/WriteDockerfilePT/index.html b/docs/next/userDocs/yarn/WriteDockerfilePT/index.html
deleted file mode 100644
index 38cec5b..0000000
--- a/docs/next/userDocs/yarn/WriteDockerfilePT/index.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!doctype html>
-<html lang="en">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-alpha.70">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Docker Images for PyTorch | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="Docker Images for PyTorch | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/userDocs/yarn/WriteDockerfilePT"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/userDocs/yarn/WriteDockerfilePT"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/7984174b.48e7bdb9.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/userDocs/yarn/WriteDockerfilePT">master 🏃</a></li><li><a class="dropdown__link" href="/docs/userDocs/yarn/WriteDockerfilePT">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/userDocs/yarn/WriteDockerfilePT">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/userDocs/yarn/WriteDockerfilePT">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/userDocs/yarn/WriteDockerfilePT">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Docker Images for PyTorch</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="how-to-create-docker-images-to-run-pytorch-on-yarn"></a>How to create docker images to run PyTorch on YARN<a class="hash-link" href="#how-to-create-docker-images-to-run-pytorch-on-yarn" title="Direct link to heading">#</a></h2><p>Dockerfile to run PyTorch on YARN needs two parts:</p><p><strong>Base libraries which PyTorch depends on</strong></p><p>1) OS base image, for example <code>ubuntu:18.04</code></p><p>2) PyTorch dependent libraries and packages. For example <code>python</code>, <code>scipy</code>. For GPU support, you also need <code>cuda</code>, <code>cudnn</code>, etc.</p><p>3) PyTorch package.</p><p><strong>Libraries to access HDFS</strong></p><p>1) JDK</p><p>2) Hadoop</p><p>Here&#x27;s an example of a base image (with GPU support) to install PyTorch:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-shell codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">FROM nvidia/cuda:10.0-cudnn7-devel-ubuntu18.04</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">ARG </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">PYTHON_VERSION</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token number" style="color:rgb(247, 140, 108)">3.6</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">RUN </span><span class="token function" style="color:rgb(130, 170, 255)">apt-get</span><span class="token plain"> update </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token function" style="color:rgb(130, 170, 255)">apt-get</span><span class="token plain"> </span><span class="token function" style="color:rgb(130, 170, 255)">install</span><span class="token plain"> -y --no-install-recommends </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         build-essential </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         cmake </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token function" style="color:rgb(130, 170, 255)">git</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token function" style="color:rgb(130, 170, 255)">curl</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token function" style="color:rgb(130, 170, 255)">vim</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         ca-certificates </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         libjpeg-dev </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         libpng-dev </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token function" style="color:rgb(130, 170, 255)">wget</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">     </span><span class="token function" style="color:rgb(130, 170, 255)">rm</span><span class="token plain"> -rf /var/lib/apt/lists/*</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
-</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
-</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">RUN </span><span class="token function" style="color:rgb(130, 170, 255)">curl</span><span class="token plain"> -o ~/miniconda.sh -O  https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh  </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">     </span><span class="token function" style="color:rgb(130, 170, 255)">chmod</span><span class="token plain"> +x ~/miniconda.sh </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">     ~/miniconda.sh -b -p /opt/conda </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">     </span><span class="token function" style="color:rgb(130, 170, 255)">rm</span><span class="token plain"> ~/miniconda.sh </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">     /opt/conda/bin/conda </span><span class="token function" style="color:rgb(130, 170, 255)">install</span><span class="token plain"> -y </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">python</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token variable" style="color:rgb(191, 199, 213)">$PYTHON_VERSION</span><span class="token plain"> numpy pyyaml scipy ipython mkl mkl-include cython typing </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">     /opt/conda/bin/conda </span><span class="token function" style="color:rgb(130, 170, 255)">install</span><span class="token plain"> -y -c pytorch magma-cuda100 </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">     /opt/conda/bin/conda clean -ya</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">ENV </span><span class="token environment constant" style="color:rgb(130, 170, 255)">PATH</span><span class="token plain"> /opt/conda/bin:</span><span class="token environment constant" style="color:rgb(130, 170, 255)">$PATH</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">RUN pip </span><span class="token function" style="color:rgb(130, 170, 255)">install</span><span class="token plain"> ninja</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># This must be done before pip so that requirements.txt is available</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">WORKDIR /opt/pytorch</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">RUN </span><span class="token function" style="color:rgb(130, 170, 255)">git</span><span class="token plain"> clone https://github.com/pytorch/pytorch.git</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">WORKDIR pytorch</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">RUN </span><span class="token function" style="color:rgb(130, 170, 255)">git</span><span class="token plain"> submodule update --init</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">RUN </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">TORCH_CUDA_ARCH_LIST</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;3.5 5.2 6.0 6.1 7.0+PTX&quot;</span><span class="token plain"> </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">TORCH_NVCC_FLAGS</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;-Xfatbin -compress-all&quot;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">CMAKE_PREFIX_PATH</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token string variable" style="color:rgb(191, 199, 213)">$(</span><span class="token string variable function" style="color:rgb(130, 170, 255)">dirname</span><span class="token string variable" style="color:rgb(191, 199, 213)"> </span><span class="token string variable punctuation" style="color:rgb(199, 146, 234)">$(</span><span class="token string variable" style="color:rgb(191, 199, 213)">which conda</span><span class="token string variable punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token string variable" style="color:rgb(191, 199, 213)">)</span><span class="token string" style="color:rgb(195, 232, 141)">/../&quot;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    pip </span><span class="token function" style="color:rgb(130, 170, 255)">install</span><span class="token plain"> -v </span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">.</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
-</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">WORKDIR /opt/pytorch</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">RUN </span><span class="token function" style="color:rgb(130, 170, 255)">git</span><span class="token plain"> clone https://github.com/pytorch/vision.git </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">cd</span><span class="token plain"> vision </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> pip </span><span class="token function" style="color:rgb(130, 170, 255)">install</span><span class="token plain"> -v </span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">.</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
-</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>On top of above image, add files, install packages to access HDFS</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-shell codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">RUN </span><span class="token function" style="color:rgb(130, 170, 255)">apt-get</span><span class="token plain"> update </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token function" style="color:rgb(130, 170, 255)">apt-get</span><span class="token plain"> </span><span class="token function" style="color:rgb(130, 170, 255)">install</span><span class="token plain"> -y openjdk-8-jdk </span><span class="token function" style="color:rgb(130, 170, 255)">wget</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Install hadoop</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">ENV </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">HADOOP_VERSION</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2.9.2&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">RUN </span><span class="token function" style="color:rgb(130, 170, 255)">wget</span><span class="token plain"> http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-</span><span class="token variable" style="color:rgb(191, 199, 213)">${HADOOP_VERSION}</span><span class="token plain">/hadoop-</span><span class="token variable" style="color:rgb(191, 199, 213)">${HADOOP_VERSION}</span><span class="token plain">.tar.gz</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">RUN </span><span class="token function" style="color:rgb(130, 170, 255)">tar</span><span class="token plain"> zxf hadoop-</span><span class="token variable" style="color:rgb(191, 199, 213)">${HADOOP_VERSION}</span><span class="token plain">.tar.gz</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">RUN </span><span class="token function" style="color:rgb(130, 170, 255)">ln</span><span class="token plain"> -s hadoop-</span><span class="token variable" style="color:rgb(191, 199, 213)">${HADOOP_VERSION}</span><span class="token plain"> hadoop-current</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">RUN </span><span class="token function" style="color:rgb(130, 170, 255)">rm</span><span class="token plain"> hadoop-</span><span class="token variable" style="color:rgb(191, 199, 213)">${HADOOP_VERSION}</span><span class="token plain">.tar.gz</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Build and push to your own docker registry: Use <code>docker build ... </code> and <code>docker push ...</code> to finish this step.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="use-examples-to-build-your-own-pytorch-docker-images"></a>Use examples to build your own PyTorch docker images<a class="hash-link" href="#use-examples-to-build-your-own-pytorch-docker-images" title="Direct link to heading">#</a></h2><p>We provided some example Dockerfiles for you to build your own PyTorch docker images.</p><p>For latest PyTorch</p><ul><li><em>docker/pytorch/base/ubuntu-18.04/Dockerfile.gpu.pytorch_latest</em>: Latest Pytorch that supports GPU, which is prebuilt to CUDA10.</li><li><em>docker/pytorch/with-cifar10-models/ubuntu-18.04/Dockerfile.gpu.pytorch_latest</em>: Latest Pytorch that GPU, which is prebuilt to CUDA10, with models.</li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="build-docker-images"></a>Build Docker images<a class="hash-link" href="#build-docker-images" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="manually-build-docker-image"></a>Manually build Docker image:<a class="hash-link" href="#manually-build-docker-image" title="Direct link to heading">#</a></h3><p>Under <code>docker/pytorch</code> directory, run <code>build-all.sh</code> to build all Docker images. This command will build the following Docker images:</p><ul><li><code>pytorch-latest-gpu-base:0.0.1</code> for base Docker image which includes Hadoop, PyTorch, GPU base libraries.</li><li><code>pytorch-latest-gpu:0.0.1</code> which includes cifar10 model as well</li></ul><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="use-prebuilt-images"></a>Use prebuilt images<a class="hash-link" href="#use-prebuilt-images" title="Direct link to heading">#</a></h3><p>(No liability)
-You can also use prebuilt images for convenience:</p><ul><li>hadoopsubmarine/pytorch-latest-gpu-base:0.0.1</li></ul></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/userDocs/yarn/WriteDockerfilePT.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"></div><div class="pagination-nav__item pagination-nav__item--next"></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#how-to-create-docker-images-to-run-pytorch-on-yarn" class="table-of-contents__link">How to create docker images to run PyTorch on YARN</a></li><li><a href="#use-examples-to-build-your-own-pytorch-docker-images" class="table-of-contents__link">Use examples to build your own PyTorch docker images</a></li><li><a href="#build-docker-images" class="table-of-contents__link">Build Docker images</a><ul><li><a href="#manually-build-docker-image" class="table-of-contents__link">Manually build Docker image:</a></li><li><a href="#use-prebuilt-images" class="table-of-contents__link">Use prebuilt images</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
-       either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
-        countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/7984174b.48e7bdb9.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/next/userDocs/yarn/WriteDockerfileTF/index.html b/docs/next/userDocs/yarn/WriteDockerfileTF/index.html
deleted file mode 100644
index 95b82f3..0000000
--- a/docs/next/userDocs/yarn/WriteDockerfileTF/index.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<!doctype html>
-<html lang="en">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-alpha.70">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Docker Images for TensorFlow | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="Docker Images for TensorFlow | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/userDocs/yarn/WriteDockerfileTF"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/userDocs/yarn/WriteDockerfileTF"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/f477976c.c25cbad0.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/userDocs/yarn/WriteDockerfileTF">master 🏃</a></li><li><a class="dropdown__link" href="/docs/userDocs/yarn/WriteDockerfileTF">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/userDocs/yarn/WriteDockerfileTF">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/userDocs/yarn/WriteDockerfileTF">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/userDocs/yarn/WriteDockerfileTF">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">Docker Images for TensorFlow</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="how-to-create-docker-images-to-run-tensorflow-on-yarn"></a>How to create docker images to run Tensorflow on YARN<a class="hash-link" href="#how-to-create-docker-images-to-run-tensorflow-on-yarn" title="Direct link to heading">#</a></h2><p>Dockerfile to run Tensorflow on YARN need two part:</p><p><strong>Base libraries which Tensorflow depends on</strong></p><p>1) OS base image, for example <code>ubuntu:18.04</code></p><p>2) Tensorflow depended libraries and packages. For example <code>python</code>, <code>scipy</code>. For GPU support, need <code>cuda</code>, <code>cudnn</code>, etc.</p><p>3) Tensorflow package.</p><p><strong>Libraries to access HDFS</strong></p><p>1) JDK</p><p>2) Hadoop</p><p>Here&#x27;s an example of a base image (w/o GPU support) to install Tensorflow:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-shell codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">FROM ubuntu:18.04</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
-</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Pick up some TF dependencies</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">RUN </span><span class="token function" style="color:rgb(130, 170, 255)">apt-get</span><span class="token plain"> update </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token function" style="color:rgb(130, 170, 255)">apt-get</span><span class="token plain"> </span><span class="token function" style="color:rgb(130, 170, 255)">install</span><span class="token plain"> -y --no-install-recommends </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        build-essential </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token function" style="color:rgb(130, 170, 255)">curl</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        libfreetype6-dev </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        libpng-dev </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        libzmq3-dev </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        pkg-config </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        python </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        python-dev </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token function" style="color:rgb(130, 170, 255)">rsync</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        software-properties-common </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token function" style="color:rgb(130, 170, 255)">unzip</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token function" style="color:rgb(130, 170, 255)">apt-get</span><span class="token plain"> clean </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token function" style="color:rgb(130, 170, 255)">rm</span><span class="token plain"> -rf /var/lib/apt/lists/*</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
-</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">RUN </span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">export</span><span class="token plain"> </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">DEBIAN_FRONTEND</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">noninteractive </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token function" style="color:rgb(130, 170, 255)">apt-get</span><span class="token plain"> update </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token function" style="color:rgb(130, 170, 255)">apt-get</span><span class="token plain"> </span><span class="token function" style="color:rgb(130, 170, 255)">install</span><span class="token plain"> -yq krb5-user libpam-krb5 </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token function" style="color:rgb(130, 170, 255)">apt-get</span><span class="token plain"> clean</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
-</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">RUN </span><span class="token function" style="color:rgb(130, 170, 255)">curl</span><span class="token plain"> -O https://bootstrap.pypa.io/get-pip.py </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    python get-pip.py </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token function" style="color:rgb(130, 170, 255)">rm</span><span class="token plain"> get-pip.py</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
-</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">RUN pip --no-cache-dir </span><span class="token function" style="color:rgb(130, 170, 255)">install</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        Pillow </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        h5py </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        ipykernel </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        jupyter </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        matplotlib </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        numpy </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        pandas </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        scipy </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        sklearn </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    python -m ipykernel.kernelspec</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
-</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">RUN pip --no-cache-dir </span><span class="token function" style="color:rgb(130, 170, 255)">install</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    http://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.13.1-cp27-none-linux_x86_64.whl</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>On top of above image, add files, install packages to access HDFS</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-shell codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">RUN </span><span class="token function" style="color:rgb(130, 170, 255)">apt-get</span><span class="token plain"> update </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token function" style="color:rgb(130, 170, 255)">apt-get</span><span class="token plain"> </span><span class="token function" style="color:rgb(130, 170, 255)">install</span><span class="token plain"> -y openjdk-8-jdk </span><span class="token function" style="color:rgb(130, 170, 255)">wget</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Install hadoop</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">ENV </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">HADOOP_VERSION</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2.9.2&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">RUN </span><span class="token function" style="color:rgb(130, 170, 255)">wget</span><span class="token plain"> http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-</span><span class="token variable" style="color:rgb(191, 199, 213)">${HADOOP_VERSION}</span><span class="token plain">/hadoop-</span><span class="token variable" style="color:rgb(191, 199, 213)">${HADOOP_VERSION}</span><span class="token plain">.tar.gz</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">RUN </span><span class="token function" style="color:rgb(130, 170, 255)">tar</span><span class="token plain"> zxf hadoop-</span><span class="token variable" style="color:rgb(191, 199, 213)">${HADOOP_VERSION}</span><span class="token plain">.tar.gz</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">RUN </span><span class="token function" style="color:rgb(130, 170, 255)">ln</span><span class="token plain"> -s hadoop-</span><span class="token variable" style="color:rgb(191, 199, 213)">${HADOOP_VERSION}</span><span class="token plain"> hadoop-current</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">RUN </span><span class="token function" style="color:rgb(130, 170, 255)">rm</span><span class="token plain"> hadoop-</span><span class="token variable" style="color:rgb(191, 199, 213)">${HADOOP_VERSION}</span><span class="token plain">.tar.gz</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Build and push to your own docker registry: Use <code>docker build ... </code> and <code>docker push ...</code> to finish this step.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="use-examples-to-build-your-own-tensorflow-docker-images"></a>Use examples to build your own Tensorflow docker images<a class="hash-link" href="#use-examples-to-build-your-own-tensorflow-docker-images" title="Direct link to heading">#</a></h2><p>We provided following examples for you to build tensorflow docker images.</p><p>For Tensorflow 1.13.1 (Precompiled to CUDA 10.x)</p><ul><li><em>docker/tensorflow/base/ubuntu-18.04/Dockerfile.cpu.tf_1.13.1</em>: Tensorflow 1.13.1 supports CPU only.</li><li><em>docker/tensorflow/with-cifar10-models/ubuntu-18.04/Dockerfile.cpu.tf_1.13.1</em>: Tensorflow 1.13.1 supports CPU only, and included models</li><li><em>docker/tensorflow/base/ubuntu-18.04/Dockerfile.gpu.tf_1.13.1</em>: Tensorflow 1.13.1 supports GPU, which is prebuilt to CUDA10.</li><li><em>docker/tensorflow/with-cifar10-models/ubuntu-18.04/Dockerfile.gpu.tf_1.13.1</em>: Tensorflow 1.13.1 supports GPU, which is prebuilt to CUDA10, with models.</li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="build-docker-images"></a>Build Docker images<a class="hash-link" href="#build-docker-images" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="manually-build-docker-image"></a>Manually build Docker image:<a class="hash-link" href="#manually-build-docker-image" title="Direct link to heading">#</a></h3><p>Under <code>docker/</code> directory, run <code>build-all.sh</code> to build Docker images. It will build following images:</p><ul><li><code>tf-1.13.1-gpu-base:0.0.1</code> for base Docker image which includes Hadoop, Tensorflow, GPU base libraries.</li><li><code>tf-1.13.1-gpu-base:0.0.1</code> for base Docker image which includes Hadoop. Tensorflow.</li><li><code>tf-1.13.1-gpu:0.0.1</code> which includes cifar10 model</li><li><code>tf-1.13.1-cpu:0.0.1</code> which inclues cifar10 model (cpu only).</li></ul><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="use-prebuilt-images"></a>Use prebuilt images<a class="hash-link" href="#use-prebuilt-images" title="Direct link to heading">#</a></h3><p>(No liability)
-You can also use prebuilt images for convenience:</p><ul><li>hadoopsubmarine/tf-1.13.1-gpu:0.0.1</li><li>hadoopsubmarine/tf-1.13.1-cpu:0.0.1</li></ul></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/userDocs/yarn/WriteDockerfileTF.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"></div><div class="pagination-nav__item pagination-nav__item--next"></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#how-to-create-docker-images-to-run-tensorflow-on-yarn" class="table-of-contents__link">How to create docker images to run Tensorflow on YARN</a></li><li><a href="#use-examples-to-build-your-own-tensorflow-docker-images" class="table-of-contents__link">Use examples to build your own Tensorflow docker images</a></li><li><a href="#build-docker-images" class="table-of-contents__link">Build Docker images</a><ul><li><a href="#manually-build-docker-image" class="table-of-contents__link">Manually build Docker image:</a></li><li><a href="#use-prebuilt-images" class="table-of-contents__link">Use prebuilt images</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
-       either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
-        countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/f477976c.c25cbad0.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/next/userDocs/yarn/YARNRuntimeGuide/index.html b/docs/next/userDocs/yarn/YARNRuntimeGuide/index.html
deleted file mode 100644
index 2d637a6..0000000
--- a/docs/next/userDocs/yarn/YARNRuntimeGuide/index.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<!doctype html>
-<html lang="en">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-alpha.70">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">YARN Runtime Quick Start Guide | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="YARN Runtime Quick Start Guide | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/userDocs/yarn/YARNRuntimeGuide"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/userDocs/yarn/YARNRuntimeGuide"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/fa111d7f.bfaf4849.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/userDocs/yarn/YARNRuntimeGuide">master 🏃</a></li><li><a class="dropdown__link" href="/docs/userDocs/yarn/YARNRuntimeGuide">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/userDocs/yarn/YARNRuntimeGuide">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/userDocs/yarn/YARNRuntimeGuide">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/userDocs/yarn/YARNRuntimeGuide">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">YARN Runtime Quick Start Guide</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="prerequisite"></a>Prerequisite<a class="hash-link" href="#prerequisite" title="Direct link to heading">#</a></h2><p>Check out the <a href="/docs/next/adminDocs/yarn/README">Running Submarine on YARN</a></p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="build-your-own-docker-image"></a>Build your own Docker image<a class="hash-link" href="#build-your-own-docker-image" title="Direct link to heading">#</a></h2><p>When you follow the documents below, and want to build your own Docker image for Tensorflow/PyTorch/MXNet? Please check out <a href="/docs/next/userDocs/yarn/Dockerfiles">Build your Docker image</a> for more details.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="launch-tensorflow-application"></a>Launch TensorFlow Application:<a class="hash-link" href="#launch-tensorflow-application" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="without-docker"></a>Without Docker<a class="hash-link" href="#without-docker" title="Direct link to heading">#</a></h3><p>You need:</p><ul><li>Build a Python virtual environment with TensorFlow 1.13.1 installed</li><li>A cluster with Hadoop 2.9 or above.</li></ul><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="building-a-python-virtual-environment-with-tensorflow"></a>Building a Python virtual environment with TensorFlow<a class="hash-link" href="#building-a-python-virtual-environment-with-tensorflow" title="Direct link to heading">#</a></h3><p>TonY requires a Python virtual environment zip with TensorFlow and any needed Python libraries already installed.</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">wget https://files.pythonhosted.org/packages/33/bc/fa0b5347139cd9564f0d44ebd2b147ac97c36b2403943dbee8a25fd74012/virtualenv-16.0.0.tar.gz</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">tar xf virtualenv-16.0.0.tar.gz</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
-</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"># Make sure to install using Python 3, as TensorFlow only provides Python 3 artifacts</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">python virtualenv-16.0.0/virtualenv.py venv</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">. venv/bin/activate</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">pip install tensorflow==1.13.1</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">zip -r myvenv.zip venv</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">deactivate</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>The above commands will produced a myvenv.zip and it will be used in below example. There&#x27;s no need to copy it to other nodes. And it is not needed when using Docker to run the job.</p><p><strong>Note:</strong> If you require a version of TensorFlow and TensorBoard prior to <code>1.13.1</code>, take a look at <a href="https://github.com/linkedin/TonY/issues/42" target="_blank" rel="noopener noreferrer">this</a> issue.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="get-the-training-examples"></a>Get the training examples<a class="hash-link" href="#get-the-training-examples" title="Direct link to heading">#</a></h3><p>Get mnist_distributed.py from <a href="https://github.com/linkedin/TonY/tree/master/tony-examples/mnist-tensorflow" target="_blank" rel="noopener noreferrer">https://github.com/linkedin/TonY/tree/master/tony-examples/mnist-tensorflow</a></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">SUBMARINE_VERSION=&lt;REPLACE_VERSION&gt;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">SUBMARINE_HADOOP_VERSION=3.1</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">CLASSPATH=$(hadoop classpath --glob):path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">java org.apache.submarine.client.cli.Cli job run --name tf-job-001 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --framework tensorflow \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --verbose \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --input_path &quot;&quot; \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --num_workers 2 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --worker_resources memory=1G,vcores=1 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --num_ps 1 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --ps_resources memory=1G,vcores=1 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --worker_launch_cmd &quot;myvenv.zip/venv/bin/python mnist_distributed.py --steps 2 --data_dir /tmp/data --working_dir /tmp/mode&quot; \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --ps_launch_cmd &quot;myvenv.zip/venv/bin/python mnist_distributed.py --steps 2 --data_dir /tmp/data --working_dir /tmp/mode&quot; \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --insecure \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --conf tony.containers.resources=path-to/myvenv.zip#archive,path-to/mnist_distributed.py,path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>You should then be able to see links and status of the jobs from command line:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">2019-04-22 20:30:42,611 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000003/pi status: RUNNING</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2019-04-22 20:30:42,612 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 1 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000004/pi status: RUNNING</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2019-04-22 20:30:42,612 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: ps index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000002/pi status: RUNNING</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2019-04-22 20:30:42,612 INFO tony.TonyClient: Logs for ps 0 at: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000002/pi</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2019-04-22 20:30:42,612 INFO tony.TonyClient: Logs for worker 0 at: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000003/pi</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2019-04-22 20:30:42,612 INFO tony.TonyClient: Logs for worker 1 at: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000004/pi</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2019-04-22 20:30:44,625 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: ps index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000002/pi status: FINISHED</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2019-04-22 20:30:44,625 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000003/pi status: FINISHED</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2019-04-22 20:30:44,626 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 1 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000004/pi status: FINISHED</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
-</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="with-docker"></a>With Docker<a class="hash-link" href="#with-docker" title="Direct link to heading">#</a></h3><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">SUBMARINE_VERSION=&lt;REPLACE_VERSION&gt;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">SUBMARINE_HADOOP_VERSION=3.1</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">CLASSPATH=$(hadoop classpath --glob):path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">java org.apache.submarine.client.cli.Cli job run --name tf-job-001 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --framework tensorflow \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --docker_image hadoopsubmarine/tf-1.8.0-cpu:0.0.1 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --input_path hdfs://pi-aw:9000/dataset/cifar-10-data \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --worker_resources memory=3G,vcores=2 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --worker_launch_cmd &quot;export CLASSPATH=\$(/hadoop-3.1.0/bin/hadoop classpath --glob) &amp;&amp; cd /test/models/tutorials/image/cifar10_estimator &amp;&amp; python cifar10_main.py --data-dir=%input_path% --job-dir=%checkpoint_path% --train-steps=10000 --eval-batch-size=16 --train-batch-size=16 --variable-strategy=CPU --num-gpus=0 --sync&quot; \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --env JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --env DOCKER_HADOOP_HDFS_HOME=/hadoop-3.1.0 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --env DOCKER_JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --env HADOOP_HOME=/hadoop-3.1.0 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --env HADOOP_YARN_HOME=/hadoop-3.1.0 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --env HADOOP_COMMON_HOME=/hadoop-3.1.0 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --env HADOOP_HDFS_HOME=/hadoop-3.1.0 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --env HADOOP_CONF_DIR=/hadoop-3.1.0/etc/hadoop \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --conf tony.containers.resources=path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="notes"></a>Notes:<a class="hash-link" href="#notes" title="Direct link to heading">#</a></h4><p>1) <code>DOCKER_JAVA_HOME</code> points to JAVA_HOME inside Docker image.</p><p>2) <code>DOCKER_HADOOP_HDFS_HOME</code> points to HADOOP_HDFS_HOME inside Docker image.</p><p>We removed TonY submodule after applying <a href="https://issues.apache.org/jira/browse/SUBMARINE-371" target="_blank" rel="noopener noreferrer">SUBMARINE-371</a> and changed to use TonY dependency directly.</p><p>After Submarine v0.2.0, there is a uber jar <code>submarine-all-${SUBMARINE_VERSION}-hadoop-${HADOOP_VERSION}.jar</code> released together with
-the <code>submarine-core-${SUBMARINE_VERSION}.jar</code>, <code>submarine-yarnservice-runtime-${SUBMARINE_VERSION}.jar</code> and <code>submarine-tony-runtime-${SUBMARINE_VERSION}.jar</code>.</p><br><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="launch-pytorch-application"></a>Launch PyTorch Application:<a class="hash-link" href="#launch-pytorch-application" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="without-docker-1"></a>Without Docker<a class="hash-link" href="#without-docker-1" title="Direct link to heading">#</a></h3><p>You need:</p><ul><li>Build a Python virtual environment with PyTorch 0.4.0+ installed</li><li>A cluster with Hadoop 2.9 or above.</li></ul><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="building-a-python-virtual-environment-with-pytorch"></a>Building a Python virtual environment with PyTorch<a class="hash-link" href="#building-a-python-virtual-environment-with-pytorch" title="Direct link to heading">#</a></h3><p>TonY requires a Python virtual environment zip with PyTorch and any needed Python libraries already installed.</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">wget https://files.pythonhosted.org/packages/33/bc/fa0b5347139cd9564f0d44ebd2b147ac97c36b2403943dbee8a25fd74012/virtualenv-16.0.0.tar.gz</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">tar xf virtualenv-16.0.0.tar.gz</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
-</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">python virtualenv-16.0.0/virtualenv.py venv</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">. venv/bin/activate</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">pip install pytorch==0.4.0</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">zip -r myvenv.zip venv</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">deactivate</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="get-the-training-examples-1"></a>Get the training examples<a class="hash-link" href="#get-the-training-examples-1" title="Direct link to heading">#</a></h3><p>Get mnist_distributed.py from <a href="https://github.com/linkedin/TonY/tree/master/tony-examples/mnist-pytorch" target="_blank" rel="noopener noreferrer">https://github.com/linkedin/TonY/tree/master/tony-examples/mnist-pytorch</a></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">SUBMARINE_VERSION=&lt;REPLACE_VERSION&gt;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">SUBMARINE_HADOOP_VERSION=3.1</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">CLASSPATH=$(hadoop classpath --glob):path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">java org.apache.submarine.client.cli.Cli job run --name PyTorch-job-001 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --framework pytorch</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --num_workers 2 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --worker_resources memory=3G,vcores=2 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --num_ps 2 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --ps_resources memory=3G,vcores=2 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --worker_launch_cmd &quot;myvenv.zip/venv/bin/python mnist_distributed.py&quot; \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --ps_launch_cmd &quot;myvenv.zip/venv/bin/python mnist_distributed.py&quot; \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --insecure \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --conf tony.containers.resources=path-to/myvenv.zip#archive,path-to/mnist_distributed.py, \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>You should then be able to see links and status of the jobs from command line:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">2019-04-22 20:30:42,611 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000003/pi status: RUNNING</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2019-04-22 20:30:42,612 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 1 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000004/pi status: RUNNING</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2019-04-22 20:30:42,612 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: ps index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000002/pi status: RUNNING</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2019-04-22 20:30:42,612 INFO tony.TonyClient: Logs for ps 0 at: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000002/pi</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2019-04-22 20:30:42,612 INFO tony.TonyClient: Logs for worker 0 at: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000003/pi</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2019-04-22 20:30:42,612 INFO tony.TonyClient: Logs for worker 1 at: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000004/pi</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2019-04-22 20:30:44,625 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: ps index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000002/pi status: FINISHED</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2019-04-22 20:30:44,625 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000003/pi status: FINISHED</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2019-04-22 20:30:44,626 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 1 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000004/pi status: FINISHED</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
-</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="with-docker-1"></a>With Docker<a class="hash-link" href="#with-docker-1" title="Direct link to heading">#</a></h3><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">SUBMARINE_VERSION=&lt;REPLACE_VERSION&gt;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">SUBMARINE_HADOOP_VERSION=3.1</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">CLASSPATH=$(hadoop classpath --glob):path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">java org.apache.submarine.client.cli.Cli job run --name PyTorch-job-001 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --framework pytorch</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --docker_image pytorch-latest-gpu:0.0.1 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --input_path &quot;&quot; \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --num_workers 1 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --worker_resources memory=3G,vcores=2 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --worker_launch_cmd &quot;cd /test/ &amp;&amp; python cifar10_tutorial.py&quot; \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --env JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --env DOCKER_HADOOP_HDFS_HOME=/hadoop-3.1.2 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --env DOCKER_JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --env HADOOP_HOME=/hadoop-3.1.2 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --env HADOOP_YARN_HOME=/hadoop-3.1.2 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --env HADOOP_COMMON_HOME=/hadoop-3.1.2 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --env HADOOP_HDFS_HOME=/hadoop-3.1.2 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --env HADOOP_CONF_DIR=/hadoop-3.1.2/etc/hadoop \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --conf tony.containers.resources=path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="launch-mxnet-application"></a>Launch MXNet Application:<a class="hash-link" href="#launch-mxnet-application" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="without-docker-2"></a>Without Docker<a class="hash-link" href="#without-docker-2" title="Direct link to heading">#</a></h3><p>You need:</p><ul><li>Build a Python virtual environment with MXNet installed</li><li>A cluster with Hadoop 2.9 or above.</li></ul><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="building-a-python-virtual-environment-with-mxnet"></a>Building a Python virtual environment with MXNet<a class="hash-link" href="#building-a-python-virtual-environment-with-mxnet" title="Direct link to heading">#</a></h3><p>TonY requires a Python virtual environment zip with MXNet and any needed Python libraries already installed.</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">wget https://files.pythonhosted.org/packages/33/bc/fa0b5347139cd9564f0d44ebd2b147ac97c36b2403943dbee8a25fd74012/virtualenv-16.0.0.tar.gz</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">tar xf virtualenv-16.0.0.tar.gz</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
-</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">python virtualenv-16.0.0/virtualenv.py venv</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">. venv/bin/activate</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">pip install mxnet==1.5.1</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">zip -r myvenv.zip venv</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">deactivate</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="get-the-training-examples-2"></a>Get the training examples<a class="hash-link" href="#get-the-training-examples-2" title="Direct link to heading">#</a></h3><p>Get image_classification.py from this <a href="https://github.com/apache/submarine/blob/master/dev-support/mini-submarine/submarine/image_classification.py" target="_blank" rel="noopener noreferrer">link</a></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">SUBMARINE_VERSION=&lt;REPLACE_VERSION&gt;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">SUBMARINE_HADOOP_VERSION=3.1</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">CLASSPATH=$(hadoop classpath --glob):path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">java org.apache.submarine.client.cli.Cli job run --name MXNet-job-001 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --framework mxnet</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --input_path &quot;&quot; \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --num_workers 2 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --worker_resources memory=3G,vcores=2 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --worker_launch_cmd &quot;myvenv.zip/venv/bin/python image_classification.py --dataset cifar10 --model vgg11 --epochs 1 --kvstore dist_sync&quot; \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --num_ps 2 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --ps_resources memory=3G,vcores=2 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --ps_launch_cmd &quot;myvenv.zip/venv/bin/python image_classification.py --dataset cifar10 --model vgg11 --epochs 1 --kvstore dist_sync&quot; \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --num_schedulers=1 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --scheduler_resources memory=1G,vcores=1 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --scheduler_launch_cmd=&quot;myvenv.zip/venv/bin/python image_classification.py --dataset cifar10 --model vgg11 --epochs 1 --kvstore dist_sync&quot; \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --insecure \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --conf tony.containers.resources=path-to/myvenv.zip#archive,path-to/image_classification.py, \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>You should then be able to see links and status of the jobs from command line:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">2020-04-16 20:23:43,834 INFO tony.TonyClient: Task status updated: [TaskInfo] name: server, index: 1, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000004/pi status: RUNNING</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2020-04-16 20:23:43,834 INFO tony.TonyClient: Task status updated: [TaskInfo] name: server, index: 0, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000003/pi status: RUNNING</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2020-04-16 20:23:43,834 INFO tony.TonyClient: Task status updated: [TaskInfo] name: worker, index: 1, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000006/pi status: RUNNING</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2020-04-16 20:23:43,834 INFO tony.TonyClient: Task status updated: [TaskInfo] name: worker, index: 0, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000005/pi status: RUNNING</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2020-04-16 20:23:43,834 INFO tony.TonyClient: Task status updated: [TaskInfo] name: scheduler, index: 0, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000002/pi status: RUNNING</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2020-04-16 20:23:43,839 INFO tony.TonyClient: Logs for scheduler 0 at: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000002/pi</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2020-04-16 20:23:43,839 INFO tony.TonyClient: Logs for server 0 at: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000003/pi</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2020-04-16 20:23:43,840 INFO tony.TonyClient: Logs for server 1 at: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000004/pi</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2020-04-16 20:23:43,840 INFO tony.TonyClient: Logs for worker 0 at: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000005/pi</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2020-04-16 20:23:43,840 INFO tony.TonyClient: Logs for worker 1 at: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000006/pi</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2020-04-16 21:02:09,723 INFO tony.TonyClient: Task status updated: [TaskInfo] name: scheduler, index: 0, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000002/pi status: SUCCEEDED</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2020-04-16 21:02:09,736 INFO tony.TonyClient: Task status updated: [TaskInfo] name: worker, index: 0, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000005/pi status: SUCCEEDED</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2020-04-16 21:02:09,737 INFO tony.TonyClient: Task status updated: [TaskInfo] name: server, index: 1, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000004/pi status: SUCCEEDED</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2020-04-16 21:02:09,737 INFO tony.TonyClient: Task status updated: [TaskInfo] name: worker, index: 1, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000006/pi status: SUCCEEDED</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2020-04-16 21:02:09,737 INFO tony.TonyClient: Task status updated: [TaskInfo] name: server, index: 0, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000003/pi status: SUCCEEDED</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="with-docker-2"></a>With Docker<a class="hash-link" href="#with-docker-2" title="Direct link to heading">#</a></h3><p>You could refer to this <a target="_blank" href="/assets/files/Dockerfile.cifar10.mx_1.5-cff207e9070bfca947922e0977637093.1">sample Dockerfile</a> for building your own Docker image.</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">SUBMARINE_VERSION=&lt;REPLACE_VERSION&gt;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">SUBMARINE_HADOOP_VERSION=3.1</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">CLASSPATH=$(hadoop classpath --glob):path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">java org.apache.submarine.client.cli.Cli job run --name MXNet-job-001 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --framework mxnet</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --docker_image &lt;your_docker_image&gt; \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --input_path &quot;&quot; \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --num_schedulers 1 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --scheduler_resources memory=1G,vcores=1 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --scheduler_launch_cmd &quot;/usr/bin/python image_classification.py --dataset cifar10 --model vgg11 --epochs 1 --kvstore dist_sync&quot; \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --num_workers 2 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --worker_resources memory=2G,vcores=1 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --worker_launch_cmd &quot;/usr/bin/python image_classification.py --dataset cifar10 --model vgg11 --epochs 1 --kvstore dist_sync&quot; \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --num_ps 2 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --ps_resources memory=2G,vcores=1 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --ps_launch_cmd &quot;/usr/bin/python image_classification.py --dataset cifar10 --model vgg11 --epochs 1 --kvstore dist_sync&quot; \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --verbose \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --insecure \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --conf tony.containers.resources=path-to/image_classification.py,path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="use-yarn-service-to-run-submarine-deprecated"></a>Use YARN Service to run Submarine: Deprecated<a class="hash-link" href="#use-yarn-service-to-run-submarine-deprecated" title="Direct link to heading">#</a></h2><p>Historically, Submarine supports to use <a href="https://hadoop.apache.org/docs/r3.1.0/hadoop-yarn/hadoop-yarn-site/yarn-service/Overview.html" target="_blank" rel="noopener noreferrer">YARN Service</a> to submit deep learning jobs. Now we stop supporting it because YARN service is not actively developed by community, and extra dependencies such as RegistryDNS/ATS-v2 causes lots of issues for setup.</p><p>As of now, you can still use YARN service to run Submarine, but code will be removed in the future release. We will only support use TonY when use Submarine on YARN.</p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/userDocs/yarn/YARNRuntimeGuide.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"></div><div class="pagination-nav__item pagination-nav__item--next"></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#prerequisite" class="table-of-contents__link">Prerequisite</a></li><li><a href="#build-your-own-docker-image" class="table-of-contents__link">Build your own Docker image</a></li><li><a href="#launch-tensorflow-application" class="table-of-contents__link">Launch TensorFlow Application:</a><ul><li><a href="#without-docker" class="table-of-contents__link">Without Docker</a></li><li><a href="#building-a-python-virtual-environment-with-tensorflow" class="table-of-contents__link">Building a Python virtual environment with TensorFlow</a></li><li><a href="#get-the-training-examples" class="table-of-contents__link">Get the training examples</a></li><li><a href="#with-docker" class="table-of-contents__link">With Docker</a></li></ul></li><li><a href="#launch-pytorch-application" class="table-of-contents__link">Launch PyTorch Application:</a><ul><li><a href="#without-docker-1" class="table-of-contents__link">Without Docker</a></li><li><a href="#building-a-python-virtual-environment-with-pytorch" class="table-of-contents__link">Building a Python virtual environment with PyTorch</a></li><li><a href="#get-the-training-examples-1" class="table-of-contents__link">Get the training examples</a></li><li><a href="#with-docker-1" class="table-of-contents__link">With Docker</a></li></ul></li><li><a href="#launch-mxnet-application" class="table-of-contents__link">Launch MXNet Application:</a><ul><li><a href="#without-docker-2" class="table-of-contents__link">Without Docker</a></li><li><a href="#building-a-python-virtual-environment-with-mxnet" class="table-of-contents__link">Building a Python virtual environment with MXNet</a></li><li><a href="#get-the-training-examples-2" class="table-of-contents__link">Get the training examples</a></li><li><a href="#with-docker-2" class="table-of-contents__link">With Docker</a></li></ul></li><li><a href="#use-yarn-service-to-run-submarine-deprecated" class="table-of-contents__link">Use YARN Service to run Submarine: Deprecated</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
-       either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
-        countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/fa111d7f.bfaf4849.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/next/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README/index.html b/docs/next/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README/index.html
deleted file mode 100644
index c8fa770..0000000
--- a/docs/next/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README/index.html
+++ /dev/null
@@ -1,84 +0,0 @@
-<!doctype html>
-<html lang="en">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-alpha.70">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">README | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="current"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="README | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/next/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/next/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/935f2afb.954d7b62.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/76a60836.12547885.js" as="script">
-</head>
-<body>
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link" href="/docs/next/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/next/api/environment">API</a><a class="navbar__item navbar__link navbar__link--active" href="/docs/next/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/next/">master 🏃</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/next/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README">master 🏃</a></li><li><a class="dropdown__link" href="/docs/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/next/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/next/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/next/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is unreleased documentation for Apache Submarine <strong>master 🏃</strong> version.</div><div class="margin-top--md">For up-to-date documentation, see the <strong><a href="/docs/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README">latest version</a></strong> (0.6.0).</div></div><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: master 🏃</span></div><header><h1 class="docTitle_Oumm">README</h1></header><div class="markdown"><p>(Copied from <a href="https://github.com/tensorflow/models/tree/master/tutorials/image/cifar10_estimator" target="_blank" rel="noopener noreferrer">https://github.com/tensorflow/models/tree/master/tutorials/image/cifar10_estimator</a>)</p><p>CIFAR-10 is a common benchmark in machine learning for image recognition.</p><p><a href="http://www.cs.toronto.edu/~kriz/cifar.html" target="_blank" rel="noopener noreferrer">http://www.cs.toronto.edu/~kriz/cifar.html</a></p><p>Code in this directory focuses on how to use TensorFlow Estimators to train and
-evaluate a CIFAR-10 ResNet model on:</p><ul><li>A single host with one CPU;</li><li>A single host with multiple GPUs;</li><li>Multiple hosts with CPU or multiple GPUs;</li></ul><p>Before trying to run the model we highly encourage you to read all the README.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="prerequisite"></a>Prerequisite<a class="hash-link" href="#prerequisite" title="Direct link to heading">#</a></h2><ol><li><p><a href="https://www.tensorflow.org/install/" target="_blank" rel="noopener noreferrer">Install</a> TensorFlow version 1.2.1 or
-later.</p></li><li><p>Download the CIFAR-10 dataset and generate TFRecord files using the provided
-script.  The script and associated command below will download the CIFAR-10
-dataset and then generate a TFRecord for the training, validation, and
-evaluation datasets.</p></li></ol><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-shell codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">python generate_cifar10_tfrecords.py --data-dir</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token variable" style="color:rgb(191, 199, 213)">${</span><span class="token variable environment constant" style="color:rgb(130, 170, 255)">PWD</span><span class="token variable" style="color:rgb(191, 199, 213)">}</span><span class="token plain">/cifar-10-data</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>After running the command above, you should see the following files in the
---data-dir (<code>ls -R cifar-10-data</code>):</p><ul><li>train.tfrecords</li><li>validation.tfrecords</li><li>eval.tfrecords</li></ul><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="training-on-a-single-machine-with-gpus-or-cpu"></a>Training on a single machine with GPUs or CPU<a class="hash-link" href="#training-on-a-single-machine-with-gpus-or-cpu" title="Direct link to heading">#</a></h2><p>Run the training on CPU only. After training, it runs the evaluation.</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">python cifar10_main.py --data-dir=${PWD}/cifar-10-data \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                       --job-dir=/tmp/cifar10 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                       --num-gpus=0 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                       --train-steps=1000</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Run the model on 2 GPUs using CPU as parameter server. After training, it runs
-the evaluation.</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">python cifar10_main.py --data-dir=${PWD}/cifar-10-data \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                       --job-dir=/tmp/cifar10 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                       --num-gpus=2 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                       --train-steps=1000</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Run the model on 2 GPUs using GPU as parameter server.
-It will run an experiment, which for local setting basically means it will run
-stop training
-a couple of times to perform evaluation.</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">python cifar10_main.py --data-dir=${PWD}/cifar-10-data \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                       --job-dir=/tmp/cifar10 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                       --variable-strategy GPU \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                       --num-gpus=2 \</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>There are more command line flags to play with; run
-<code>python cifar10_main.py --help</code> for details.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="run-distributed-training"></a>Run distributed training<a class="hash-link" href="#run-distributed-training" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="optional-running-on-google-cloud-machine-learning-engine"></a>(Optional) Running on Google Cloud Machine Learning Engine<a class="hash-link" href="#optional-running-on-google-cloud-machine-learning-engine" title="Direct link to heading">#</a></h3><p>This example can be run on Google Cloud Machine Learning Engine (ML Engine),
-which will configure the environment and take care of running workers,
-parameters servers, and masters in a fault tolerant way.</p><p>To install the command line tool, and set up a project and billing, see the
-quickstart <a href="https://cloud.google.com/ml-engine/docs/quickstarts/command-line" target="_blank" rel="noopener noreferrer">here</a>.</p><p>You&#x27;ll also need a Google Cloud Storage bucket for the data. If you followed the
-instructions above, you can just run:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">MY_BUCKET=gs://&lt;my-bucket-name&gt;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">gsutil cp -r ${PWD}/cifar-10-data $MY_BUCKET/</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Then run the following command from the <code>tutorials/image</code> directory of this
-repository (the parent directory of this README):</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">gcloud ml-engine jobs submit training cifarmultigpu \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    --runtime-version 1.2 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    --job-dir=$MY_BUCKET/model_dirs/cifarmultigpu \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    --config cifar10_estimator/cmle_config.yaml \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    --package-path cifar10_estimator/ \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    --module-name cifar10_estimator.cifar10_main \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    -- \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    --data-dir=$MY_BUCKET/cifar-10-data \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    --num-gpus=4 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    --train-steps=1000</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="set-tf_config"></a>Set TF_CONFIG<a class="hash-link" href="#set-tf_config" title="Direct link to heading">#</a></h3><p>Considering that you already have multiple hosts configured, all you need is a
-<code>TF_CONFIG</code> environment variable on each host. You can set up the hosts manually
-or check <a href="https://github.com/tensorflow/ecosystem" target="_blank" rel="noopener noreferrer">tensorflow/ecosystem</a> for
-instructions about how to set up a Cluster.</p><p>The <code>TF_CONFIG</code> will be used by the <code>RunConfig</code> to know the existing hosts and
-their task: <code>master</code>, <code>ps</code> or <code>worker</code>.</p><p>Here&#x27;s an example of <code>TF_CONFIG</code>.</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-python codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">cluster </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;master&#x27;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;master-ip:8000&#x27;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">           </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;ps&#x27;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;ps-ip:8000&#x27;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">           </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;worker&#x27;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;worker-ip:8000&#x27;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
-</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">TF_CONFIG </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> json</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token plain">dumps</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;cluster&#x27;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> cluster</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;task&#x27;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;type&#x27;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> master</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;index&#x27;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">0</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;model_dir&#x27;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;gs://&lt;bucket_path&gt;/&lt;dir_path&gt;&#x27;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;environment&#x27;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;cloud&#x27;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><em>Cluster</em></p><p>A cluster spec, which is basically a dictionary that describes all of the tasks
-in the cluster. More about it <a href="https://www.tensorflow.org/deploy/distributed" target="_blank" rel="noopener noreferrer">here</a>.</p><p>In this cluster spec we are defining a cluster with 1 master, 1 ps and 1 worker.</p><ul><li><p><code>ps</code>: saves the parameters among all workers. All workers can
-read/write/update the parameters for model via ps. As some models are
-extremely large the parameters are shared among the ps (each ps stores a
-subset).</p></li><li><p><code>worker</code>: does the training.</p></li><li><p><code>master</code>: basically a special worker, it does training, but also restores and
-saves checkpoints and do evaluation.</p></li></ul><p><em>Task</em></p><p>The Task defines what is the role of the current node, for this example the node
-is the master on index 0 on the cluster spec, the task will be different for
-each node. An example of the <code>TF_CONFIG</code> for a worker would be:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-python codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">cluster </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;master&#x27;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;master-ip:8000&#x27;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">           </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;ps&#x27;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;ps-ip:8000&#x27;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">           </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;worker&#x27;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;worker-ip:8000&#x27;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
-</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">TF_CONFIG </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> json</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token plain">dumps</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;cluster&#x27;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> cluster</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;task&#x27;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;type&#x27;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> worker</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;index&#x27;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">0</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;model_dir&#x27;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;gs://&lt;bucket_path&gt;/&lt;dir_path&gt;&#x27;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">   </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;environment&#x27;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;cloud&#x27;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><em>Model_dir</em></p><p>This is the path where the master will save the checkpoints, graph and
-TensorBoard files. For a multi host environment you may want to use a
-Distributed File System, Google Storage and DFS are supported.</p><p><em>Environment</em></p><p>By the default environment is <em>local</em>, for a distributed setting we need to
-change it to <em>cloud</em>.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="running-script"></a>Running script<a class="hash-link" href="#running-script" title="Direct link to heading">#</a></h3><p>Once you have a <code>TF_CONFIG</code> configured properly on each host you&#x27;re ready to run
-on distributed settings.</p><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="master"></a>Master<a class="hash-link" href="#master" title="Direct link to heading">#</a></h4><p>Run this on master:
-Runs an Experiment in sync mode on 4 GPUs using CPU as parameter server for
-40000 steps. It will run evaluation a couple of times during training. The
-num_workers argument is used only to update the learning rate correctly. Make
-sure the model_dir is the same as defined on the TF_CONFIG.</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-shell codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">python cifar10_main.py --data-dir</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">gs://path/cifar-10-data </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                       --job-dir</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">gs://path/model_dir/ </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                       --num-gpus</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token number" style="color:rgb(247, 140, 108)">4</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                       --train-steps</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token number" style="color:rgb(247, 140, 108)">40000</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                       --sync </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                       --num-workers</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token number" style="color:rgb(247, 140, 108)">2</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><em>Output:</em></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-shell codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:Using model_dir </span><span class="token keyword" style="font-style:italic">in</span><span class="token plain"> TF_CONFIG: gs://path/model_dir/</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:Using config: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;_save_checkpoints_secs&#x27;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">600</span><span class="token plain">, </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;_num_ps_replicas&#x27;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token plain">, </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;_keep_checkpoint_max&#x27;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">5</span><span class="token plain">, </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;_task_type&#x27;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> u</span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;master&#x27;</span><span class="token plain">, </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;_is_chief&#x27;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> True, </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;_cluster_spec&#x27;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">&lt;</span><span class="token plain">tensorflow.python.training.server_lib.ClusterSpec object at 0x7fd16fb2be1</span><span class="token operator file-descriptor important" style="color:rgb(137, 221, 255)">0</span><span class="token operator" style="color:rgb(137, 221, 255)">&gt;</span><span class="token plain">, </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;_model_dir&#x27;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;gs://path/model_dir/&#x27;</span><span class="token plain">, </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;_save_checkpoints_steps&#x27;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> None, </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;_keep_checkpoint_every_n_hours&#x27;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">10000</span><span class="token plain">, </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;_session_config&#x27;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> intra_op_parallelism_threads: </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">gpu_options </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">allow_soft_placement: </span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">, </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;_tf_random_seed&#x27;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> None, </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;_environment&#x27;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> u</span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;cloud&#x27;</span><span class="token plain">, </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;_num_worker_replicas&#x27;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token plain">, </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;_task_id&#x27;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">0</span><span class="token plain">, </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;_save_summary_steps&#x27;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">100</span><span class="token plain">, </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;_tf_config&#x27;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> gpu_options </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  per_process_gpu_memory_fraction: </span><span class="token number" style="color:rgb(247, 140, 108)">1.0</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">, </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;_evaluation_master&#x27;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;&#x27;</span><span class="token plain">, </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;_master&#x27;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> u</span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;grpc://master-ip:8000&#x27;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">..</span><span class="token plain">.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token number" style="color:rgb(247, 140, 108)">2017</span><span class="token plain">-08-01 </span><span class="token number" style="color:rgb(247, 140, 108)">19</span><span class="token plain">:59:26.496208: I tensorflow/core/common_runtime/gpu/gpu_device.cc:940</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"> Found device </span><span class="token number" style="color:rgb(247, 140, 108)">0</span><span class="token plain"> with properties:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">name: Tesla K80</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">major: </span><span class="token number" style="color:rgb(247, 140, 108)">3</span><span class="token plain"> minor: </span><span class="token number" style="color:rgb(247, 140, 108)">7</span><span class="token plain"> memoryClockRate </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">GHz</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">0.8235</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">pciBusID 0000:00:04.0</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Total memory: </span><span class="token number" style="color:rgb(247, 140, 108)">11</span><span class="token plain">.17GiB</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Free memory: </span><span class="token number" style="color:rgb(247, 140, 108)">11</span><span class="token plain">.09GiB</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token number" style="color:rgb(247, 140, 108)">2017</span><span class="token plain">-08-01 </span><span class="token number" style="color:rgb(247, 140, 108)">19</span><span class="token plain">:59:26.775660: I tensorflow/core/common_runtime/gpu/gpu_device.cc:940</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"> Found device </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token plain"> with properties:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">name: Tesla K80</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">major: </span><span class="token number" style="color:rgb(247, 140, 108)">3</span><span class="token plain"> minor: </span><span class="token number" style="color:rgb(247, 140, 108)">7</span><span class="token plain"> memoryClockRate </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">GHz</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">0.8235</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">pciBusID 0000:00:05.0</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Total memory: </span><span class="token number" style="color:rgb(247, 140, 108)">11</span><span class="token plain">.17GiB</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Free memory: </span><span class="token number" style="color:rgb(247, 140, 108)">11</span><span class="token plain">.10GiB</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">..</span><span class="token plain">.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token number" style="color:rgb(247, 140, 108)">2017</span><span class="token plain">-08-01 </span><span class="token number" style="color:rgb(247, 140, 108)">19</span><span class="token plain">:59:29.675171: I tensorflow/core/distributed_runtime/rpc/grpc_server_lib.cc:316</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"> Started server with target: grpc://localhost:8000</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_1/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_2/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_3/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_4/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_5/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_6/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1/avg_pool/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_1/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_2/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_3/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_4/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_1/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_2/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_3/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_4/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_5/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_6/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1/avg_pool/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">8</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">8</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">64</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">8</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">8</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_1/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">64</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">8</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">8</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_2/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">64</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">8</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">8</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_3/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">64</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">8</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">8</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_4/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">64</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">8</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">8</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_5/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">64</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">8</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">8</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_6/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">64</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">8</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">8</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/global_avg_pool/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">64</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/fully_connected/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">11</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:SyncReplicasV2: </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">replicas_to_aggregate</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">;</span><span class="token plain"> </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">total_num_replicas</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:Create CheckpointSaverHook.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:Restoring parameters from gs://path/model_dir/model.ckpt-0</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token number" style="color:rgb(247, 140, 108)">2017</span><span class="token plain">-08-01 </span><span class="token number" style="color:rgb(247, 140, 108)">19</span><span class="token plain">:59:37.560775: I tensorflow/core/distributed_runtime/master_session.cc:999</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"> Start master session 156fcb55fe6648d6 with config:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">intra_op_parallelism_threads: </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">gpu_options </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  per_process_gpu_memory_fraction: </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">allow_soft_placement: </span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
-</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:Saving checkpoints </span><span class="token keyword" style="font-style:italic">for</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token plain"> into gs://path/model_dir/model.ckpt.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:loss </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1.20682</span><span class="token plain">, step </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:loss </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1.20682</span><span class="token plain">, learning_rate </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">0.1</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_1/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_2/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_3/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_4/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_5/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_6/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1/avg_pool/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_1/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_2/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_3/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_4/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_5/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_6/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1/avg_pool/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">8</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">8</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">64</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">8</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">8</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_1/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">64</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">8</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">8</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_2/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">64</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">8</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">8</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_3/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">64</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">8</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">8</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_4/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">64</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">8</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">8</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_5/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">64</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">8</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">8</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_6/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">64</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">8</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">8</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/global_avg_pool/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">64</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/fully_connected/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">11</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:SyncReplicasV2: </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">replicas_to_aggregate</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token number" style="color:rgb(247, 140, 108)">2</span><span class="token punctuation" style="color:rgb(199, 146, 234)">;</span><span class="token plain"> </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">total_num_replicas</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token number" style="color:rgb(247, 140, 108)">2</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:Starting evaluation at </span><span class="token number" style="color:rgb(247, 140, 108)">2017</span><span class="token plain">-08-01-20:00:14</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token number" style="color:rgb(247, 140, 108)">2017</span><span class="token plain">-08-01 </span><span class="token number" style="color:rgb(247, 140, 108)">20</span><span class="token plain">:00:15.745881: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"> Creating TensorFlow device </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">/gpu:0</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> -</span><span class="token operator" style="color:rgb(137, 221, 255)">&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">device: </span><span class="token number" style="color:rgb(247, 140, 108)">0</span><span class="token plain">, name: Tesla K80, pci bus id: 0000:00:04.0</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token number" style="color:rgb(247, 140, 108)">2017</span><span class="token plain">-08-01 </span><span class="token number" style="color:rgb(247, 140, 108)">20</span><span class="token plain">:00:15.745949: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"> Creating TensorFlow device </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">/gpu:1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> -</span><span class="token operator" style="color:rgb(137, 221, 255)">&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">device: </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token plain">, name: Tesla K80, pci bus id: 0000:00:05.0</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token number" style="color:rgb(247, 140, 108)">2017</span><span class="token plain">-08-01 </span><span class="token number" style="color:rgb(247, 140, 108)">20</span><span class="token plain">:00:15.745958: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"> Creating TensorFlow device </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">/gpu:2</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> -</span><span class="token operator" style="color:rgb(137, 221, 255)">&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">device: </span><span class="token number" style="color:rgb(247, 140, 108)">2</span><span class="token plain">, name: Tesla K80, pci bus id: 0000:00:06.0</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token number" style="color:rgb(247, 140, 108)">2017</span><span class="token plain">-08-01 </span><span class="token number" style="color:rgb(247, 140, 108)">20</span><span class="token plain">:00:15.745964: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"> Creating TensorFlow device </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">/gpu:3</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> -</span><span class="token operator" style="color:rgb(137, 221, 255)">&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">device: </span><span class="token number" style="color:rgb(247, 140, 108)">3</span><span class="token plain">, name: Tesla K80, pci bus id: 0000:00:07.0</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token number" style="color:rgb(247, 140, 108)">2017</span><span class="token plain">-08-01 </span><span class="token number" style="color:rgb(247, 140, 108)">20</span><span class="token plain">:00:15.745969: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"> Creating TensorFlow device </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">/gpu:4</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> -</span><span class="token operator" style="color:rgb(137, 221, 255)">&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">device: </span><span class="token number" style="color:rgb(247, 140, 108)">4</span><span class="token plain">, name: Tesla K80, pci bus id: 0000:00:08.0</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token number" style="color:rgb(247, 140, 108)">2017</span><span class="token plain">-08-01 </span><span class="token number" style="color:rgb(247, 140, 108)">20</span><span class="token plain">:00:15.745975: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"> Creating TensorFlow device </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">/gpu:5</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> -</span><span class="token operator" style="color:rgb(137, 221, 255)">&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">device: </span><span class="token number" style="color:rgb(247, 140, 108)">5</span><span class="token plain">, name: Tesla K80, pci bus id: 0000:00:09.0</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token number" style="color:rgb(247, 140, 108)">2017</span><span class="token plain">-08-01 </span><span class="token number" style="color:rgb(247, 140, 108)">20</span><span class="token plain">:00:15.745987: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"> Creating TensorFlow device </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">/gpu:6</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> -</span><span class="token operator" style="color:rgb(137, 221, 255)">&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">device: </span><span class="token number" style="color:rgb(247, 140, 108)">6</span><span class="token plain">, name: Tesla K80, pci bus id: 0000:00:0a.0</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token number" style="color:rgb(247, 140, 108)">2017</span><span class="token plain">-08-01 </span><span class="token number" style="color:rgb(247, 140, 108)">20</span><span class="token plain">:00:15.745997: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"> Creating TensorFlow device </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">/gpu:7</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> -</span><span class="token operator" style="color:rgb(137, 221, 255)">&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">device: </span><span class="token number" style="color:rgb(247, 140, 108)">7</span><span class="token plain">, name: Tesla K80, pci bus id: 0000:00:0b.0</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:Restoring parameters from gs://path/model_dir/model.ckpt-10023</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:Evaluation </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token plain">/100</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:Evaluation </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token number" style="color:rgb(247, 140, 108)">2</span><span class="token plain">/100</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:Evaluation </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token number" style="color:rgb(247, 140, 108)">3</span><span class="token plain">/100</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:Evaluation </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token number" style="color:rgb(247, 140, 108)">4</span><span class="token plain">/100</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:Evaluation </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token number" style="color:rgb(247, 140, 108)">5</span><span class="token plain">/100</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:Evaluation </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token number" style="color:rgb(247, 140, 108)">6</span><span class="token plain">/100</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:Evaluation </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token number" style="color:rgb(247, 140, 108)">7</span><span class="token plain">/100</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:Evaluation </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token number" style="color:rgb(247, 140, 108)">8</span><span class="token plain">/100</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:Evaluation </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token number" style="color:rgb(247, 140, 108)">9</span><span class="token plain">/100</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:Evaluation </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token number" style="color:rgb(247, 140, 108)">10</span><span class="token plain">/100</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:Evaluation </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token number" style="color:rgb(247, 140, 108)">11</span><span class="token plain">/100</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:Evaluation </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token number" style="color:rgb(247, 140, 108)">12</span><span class="token plain">/100</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:Evaluation </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token number" style="color:rgb(247, 140, 108)">13</span><span class="token plain">/100</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">..</span><span class="token plain">.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:Evaluation </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token number" style="color:rgb(247, 140, 108)">100</span><span class="token plain">/100</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:Finished evaluation at </span><span class="token number" style="color:rgb(247, 140, 108)">2017</span><span class="token plain">-08-01-20:00:31</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:Saving dict </span><span class="token keyword" style="font-style:italic">for</span><span class="token plain"> global step </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token plain">: accuracy </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">0.0994</span><span class="token plain">, global_step </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token plain">, loss </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">630.425</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="worker"></a>Worker<a class="hash-link" href="#worker" title="Direct link to heading">#</a></h4><p>Run this on worker:
-Runs an Experiment in sync mode on 4 GPUs using CPU as parameter server for
-40000 steps. It will run evaluation a couple of times during training. Make sure
-the model_dir is the same as defined on the TF_CONFIG.</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-shell codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">python cifar10_main.py --data-dir</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">gs://path/cifar-10-data </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                       --job-dir</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">gs://path/model_dir/ </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                       --num-gpus</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token number" style="color:rgb(247, 140, 108)">4</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                       --train-steps</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token number" style="color:rgb(247, 140, 108)">40000</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                       --sync</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><em>Output:</em></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-shell codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:Using model_dir </span><span class="token keyword" style="font-style:italic">in</span><span class="token plain"> TF_CONFIG: gs://path/model_dir/</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:Using config: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;_save_checkpoints_secs&#x27;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">600</span><span class="token plain">,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;_num_ps_replicas&#x27;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token plain">, </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;_keep_checkpoint_max&#x27;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">5</span><span class="token plain">, </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;_task_type&#x27;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> u</span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;worker&#x27;</span><span class="token plain">,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;_is_chief&#x27;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> False, </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;_cluster_spec&#x27;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token operator" style="color:rgb(137, 221, 255)">&lt;</span><span class="token plain">tensorflow.python.training.server_lib.ClusterSpec object at 0x7f6918438e1</span><span class="token operator file-descriptor important" style="color:rgb(137, 221, 255)">0</span><span class="token operator" style="color:rgb(137, 221, 255)">&gt;</span><span class="token plain">,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;_model_dir&#x27;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;gs://&lt;path&gt;/model_dir/&#x27;</span><span class="token plain">,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;_save_checkpoints_steps&#x27;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> None, </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;_keep_checkpoint_every_n_hours&#x27;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">10000</span><span class="token plain">,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;_session_config&#x27;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> intra_op_parallelism_threads: </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">gpu_options </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">allow_soft_placement: </span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">, </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;_tf_random_seed&#x27;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> None, </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;_environment&#x27;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> u</span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;cloud&#x27;</span><span class="token plain">, </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;_num_worker_replicas&#x27;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token plain">,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;_task_id&#x27;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">0</span><span class="token plain">, </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;_save_summary_steps&#x27;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">100</span><span class="token plain">, </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;_tf_config&#x27;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> gpu_options </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  per_process_gpu_memory_fraction: </span><span class="token number" style="color:rgb(247, 140, 108)">1.0</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">..</span><span class="token plain">.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token number" style="color:rgb(247, 140, 108)">2017</span><span class="token plain">-08-01 </span><span class="token number" style="color:rgb(247, 140, 108)">19</span><span class="token plain">:59:26.496208: I tensorflow/core/common_runtime/gpu/gpu_device.cc:940</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"> Found device </span><span class="token number" style="color:rgb(247, 140, 108)">0</span><span class="token plain"> with properties:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">name: Tesla K80</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">major: </span><span class="token number" style="color:rgb(247, 140, 108)">3</span><span class="token plain"> minor: </span><span class="token number" style="color:rgb(247, 140, 108)">7</span><span class="token plain"> memoryClockRate </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">GHz</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">0.8235</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">pciBusID 0000:00:04.0</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Total memory: </span><span class="token number" style="color:rgb(247, 140, 108)">11</span><span class="token plain">.17GiB</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Free memory: </span><span class="token number" style="color:rgb(247, 140, 108)">11</span><span class="token plain">.09GiB</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token number" style="color:rgb(247, 140, 108)">2017</span><span class="token plain">-08-01 </span><span class="token number" style="color:rgb(247, 140, 108)">19</span><span class="token plain">:59:26.775660: I tensorflow/core/common_runtime/gpu/gpu_device.cc:940</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"> Found device </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token plain"> with properties:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">name: Tesla K80</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">major: </span><span class="token number" style="color:rgb(247, 140, 108)">3</span><span class="token plain"> minor: </span><span class="token number" style="color:rgb(247, 140, 108)">7</span><span class="token plain"> memoryClockRate </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">GHz</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">0.8235</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">pciBusID 0000:00:05.0</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Total memory: </span><span class="token number" style="color:rgb(247, 140, 108)">11</span><span class="token plain">.17GiB</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Free memory: </span><span class="token number" style="color:rgb(247, 140, 108)">11</span><span class="token plain">.10GiB</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">..</span><span class="token plain">.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token number" style="color:rgb(247, 140, 108)">2017</span><span class="token plain">-08-01 </span><span class="token number" style="color:rgb(247, 140, 108)">19</span><span class="token plain">:59:29.675171: I tensorflow/core/distributed_runtime/rpc/grpc_server_lib.cc:316</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"> Started server with target: grpc://localhost:8000</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_1/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_2/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_3/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_4/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_5/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_6/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1/avg_pool/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_1/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_2/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_3/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_4/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_1/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_2/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_3/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_4/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_5/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_6/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1/avg_pool/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">32</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">8</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">8</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">64</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">8</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">8</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_1/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">64</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">8</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">8</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_2/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">64</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">8</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">8</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_3/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">64</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">8</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">8</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_4/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">64</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">8</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">8</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_5/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">64</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">8</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">8</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_6/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">64</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">8</span><span class="token plain">, </span><span class="token number" style="color:rgb(247, 140, 108)">8</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/global_avg_pool/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">64</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:image after unit resnet/tower_0/fully_connected/: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">?, </span><span class="token number" style="color:rgb(247, 140, 108)">11</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:SyncReplicasV2: </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">replicas_to_aggregate</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token number" style="color:rgb(247, 140, 108)">2</span><span class="token punctuation" style="color:rgb(199, 146, 234)">;</span><span class="token plain"> </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">total_num_replicas</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token number" style="color:rgb(247, 140, 108)">2</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:Create CheckpointSaverHook.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token number" style="color:rgb(247, 140, 108)">2017</span><span class="token plain">-07-31 </span><span class="token number" style="color:rgb(247, 140, 108)">22</span><span class="token plain">:38:04.629150: I</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">tensorflow/core/distributed_runtime/master.cc:209</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"> CreateSession still waiting</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token keyword" style="font-style:italic">for</span><span class="token plain"> response from worker: /job:master/replica:0/task:0</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token number" style="color:rgb(247, 140, 108)">2017</span><span class="token plain">-07-31 </span><span class="token number" style="color:rgb(247, 140, 108)">22</span><span class="token plain">:38:09.263492: I</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">tensorflow/core/distributed_runtime/master_session.cc:999</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"> Start master</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">session cc58f93b1e259b0c with config:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">intra_op_parallelism_threads: </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">gpu_options </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">per_process_gpu_memory_fraction: </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">allow_soft_placement: </span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:loss </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">5.82382</span><span class="token plain">, step </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">0</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:loss </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">5.82382</span><span class="token plain">, learning_rate </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">0.8</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:Average examples/sec: </span><span class="token number" style="color:rgb(247, 140, 108)">1116.92</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token number" style="color:rgb(247, 140, 108)">1116.92</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain">, step </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">10</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:Average examples/sec: </span><span class="token number" style="color:rgb(247, 140, 108)">1233.73</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token number" style="color:rgb(247, 140, 108)">1377.83</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain">, step </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">20</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:Average examples/sec: </span><span class="token number" style="color:rgb(247, 140, 108)">1485.43</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token number" style="color:rgb(247, 140, 108)">2509.3</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain">, step </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">30</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:Average examples/sec: </span><span class="token number" style="color:rgb(247, 140, 108)">1680.27</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token number" style="color:rgb(247, 140, 108)">2770.39</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain">, step </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">40</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:Average examples/sec: </span><span class="token number" style="color:rgb(247, 140, 108)">1825.38</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token number" style="color:rgb(247, 140, 108)">2788.78</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain">, step </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">50</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:Average examples/sec: </span><span class="token number" style="color:rgb(247, 140, 108)">1929.32</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token number" style="color:rgb(247, 140, 108)">2697.27</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain">, step </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">60</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:Average examples/sec: </span><span class="token number" style="color:rgb(247, 140, 108)">2015.17</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token number" style="color:rgb(247, 140, 108)">2749.05</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain">, step </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">70</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:loss </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">37.6272</span><span class="token plain">, step </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">79</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token number" style="color:rgb(247, 140, 108)">19.554</span><span class="token plain"> sec</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:loss </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">37.6272</span><span class="token plain">, learning_rate </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">0.8</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token number" style="color:rgb(247, 140, 108)">19.554</span><span class="token plain"> sec</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:Average examples/sec: </span><span class="token number" style="color:rgb(247, 140, 108)">2074.92</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token number" style="color:rgb(247, 140, 108)">2618.36</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain">, step </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">80</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:Average examples/sec: </span><span class="token number" style="color:rgb(247, 140, 108)">2132.71</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token number" style="color:rgb(247, 140, 108)">2744.13</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain">, step </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">90</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:Average examples/sec: </span><span class="token number" style="color:rgb(247, 140, 108)">2183.38</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token number" style="color:rgb(247, 140, 108)">2777.21</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain">, step </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">100</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:Average examples/sec: </span><span class="token number" style="color:rgb(247, 140, 108)">2224.4</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token number" style="color:rgb(247, 140, 108)">2739.03</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain">, step </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">110</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:Average examples/sec: </span><span class="token number" style="color:rgb(247, 140, 108)">2240.28</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token number" style="color:rgb(247, 140, 108)">2431.26</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain">, step </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">120</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:Average examples/sec: </span><span class="token number" style="color:rgb(247, 140, 108)">2272.12</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token number" style="color:rgb(247, 140, 108)">2739.32</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain">, step </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">130</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:Average examples/sec: </span><span class="token number" style="color:rgb(247, 140, 108)">2300.68</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token number" style="color:rgb(247, 140, 108)">2750.03</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain">, step </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">140</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:Average examples/sec: </span><span class="token number" style="color:rgb(247, 140, 108)">2325.81</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token number" style="color:rgb(247, 140, 108)">2745.63</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain">, step </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">150</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:Average examples/sec: </span><span class="token number" style="color:rgb(247, 140, 108)">2347.14</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token number" style="color:rgb(247, 140, 108)">2721.53</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain">, step </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">160</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:Average examples/sec: </span><span class="token number" style="color:rgb(247, 140, 108)">2367.74</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token number" style="color:rgb(247, 140, 108)">2754.54</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain">, step </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">170</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:loss </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">27.8453</span><span class="token plain">, step </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">179</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token number" style="color:rgb(247, 140, 108)">18.893</span><span class="token plain"> sec</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">..</span><span class="token plain">.</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="ps"></a>PS<a class="hash-link" href="#ps" title="Direct link to heading">#</a></h4><p>Run this on ps:
-The ps will not do training so most of the arguments won&#x27;t affect the execution</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-shell codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">python cifar10_main.py --job-dir</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">gs://path/model_dir/</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><em>Output:</em></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-shell codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:Using model_dir </span><span class="token keyword" style="font-style:italic">in</span><span class="token plain"> TF_CONFIG: gs://path/model_dir/</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">INFO:tensorflow:Using config: </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;_save_checkpoints_secs&#x27;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">600</span><span class="token plain">, </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;_num_ps_replicas&#x27;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token plain">, </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;_keep_checkpoint_max&#x27;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">5</span><span class="token plain">, </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;_task_type&#x27;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> u</span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;ps&#x27;</span><span class="token plain">, </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;_is_chief&#x27;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> False, </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;_cluster_spec&#x27;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">&lt;</span><span class="token plain">tensorflow.python.training.server_lib.ClusterSpec object at 0x7f48f1addf9</span><span class="token operator file-descriptor important" style="color:rgb(137, 221, 255)">0</span><span class="token operator" style="color:rgb(137, 221, 255)">&gt;</span><span class="token plain">, </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;_model_dir&#x27;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;gs://path/model_dir/&#x27;</span><span class="token plain">, </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;_save_checkpoints_steps&#x27;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> None, </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;_keep_checkpoint_every_n_hours&#x27;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">10000</span><span class="token plain">, </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;_session_config&#x27;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> intra_op_parallelism_threads: </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">gpu_options </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">allow_soft_placement: </span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">, </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;_tf_random_seed&#x27;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> None, </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;_environment&#x27;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> u</span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;cloud&#x27;</span><span class="token plain">, </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;_num_worker_replicas&#x27;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token plain">, </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;_task_id&#x27;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">0</span><span class="token plain">, </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;_save_summary_steps&#x27;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">100</span><span class="token plain">, </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;_tf_config&#x27;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> gpu_options </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  per_process_gpu_memory_fraction: </span><span class="token number" style="color:rgb(247, 140, 108)">1.0</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">, </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;_evaluation_master&#x27;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;&#x27;</span><span class="token plain">, </span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;_master&#x27;</span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">:</span><span class="token plain"> u</span><span class="token string" style="color:rgb(195, 232, 141)">&#x27;grpc://master-ip:8000&#x27;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token number" style="color:rgb(247, 140, 108)">2017</span><span class="token plain">-07-31 </span><span class="token number" style="color:rgb(247, 140, 108)">22</span><span class="token plain">:54:58.928088: I tensorflow/core/distributed_runtime/rpc/grpc_channel.cc:215</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"> Initialize GrpcChannelCache </span><span class="token keyword" style="font-style:italic">for</span><span class="token plain"> job master -</span><span class="token operator" style="color:rgb(137, 221, 255)">&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token number" style="color:rgb(247, 140, 108)">0</span><span class="token plain"> -</span><span class="token operator" style="color:rgb(137, 221, 255)">&gt;</span><span class="token plain"> master-ip:8000</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token number" style="color:rgb(247, 140, 108)">2017</span><span class="token plain">-07-31 </span><span class="token number" style="color:rgb(247, 140, 108)">22</span><span class="token plain">:54:58.928153: I tensorflow/core/distributed_runtime/rpc/grpc_channel.cc:215</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"> Initialize GrpcChannelCache </span><span class="token keyword" style="font-style:italic">for</span><span class="token plain"> job </span><span class="token function" style="color:rgb(130, 170, 255)">ps</span><span class="token plain"> -</span><span class="token operator" style="color:rgb(137, 221, 255)">&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token number" style="color:rgb(247, 140, 108)">0</span><span class="token plain"> -</span><span class="token operator" style="color:rgb(137, 221, 255)">&gt;</span><span class="token plain"> localhost:8000</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token number" style="color:rgb(247, 140, 108)">2017</span><span class="token plain">-07-31 </span><span class="token number" style="color:rgb(247, 140, 108)">22</span><span class="token plain">:54:58.928160: I tensorflow/core/distributed_runtime/rpc/grpc_channel.cc:215</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"> Initialize GrpcChannelCache </span><span class="token keyword" style="font-style:italic">for</span><span class="token plain"> job worker -</span><span class="token operator" style="color:rgb(137, 221, 255)">&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token number" style="color:rgb(247, 140, 108)">0</span><span class="token plain"> -</span><span class="token operator" style="color:rgb(137, 221, 255)">&gt;</span><span class="token plain"> worker-ip:8000</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token number" style="color:rgb(247, 140, 108)">2017</span><span class="token plain">-07-31 </span><span class="token number" style="color:rgb(247, 140, 108)">22</span><span class="token plain">:54:58.929873: I tensorflow/core/distributed_runtime/rpc/grpc_server_lib.cc:316</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"> Started server with target: grpc://localhost:8000</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="visualizing-results-with-tensorboard"></a>Visualizing results with TensorBoard<a class="hash-link" href="#visualizing-results-with-tensorboard" title="Direct link to heading">#</a></h2><p>When using Estimators you can also visualize your data in TensorBoard, with no
-changes in your code. You can use TensorBoard to visualize your TensorFlow
-graph, plot quantitative metrics about the execution of your graph, and show
-additional data like images that pass through it.</p><p>You&#x27;ll see something similar to this if you &quot;point&quot; TensorBoard to the
-<code>job dir</code> parameter you used to train or evaluate your model.</p><p>Check TensorBoard during training or after it. Just point TensorBoard to the
-model_dir you chose on the previous step.</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-shell codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">tensorboard --log-dir</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&lt;job dir&gt;&quot;</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="warnings"></a>Warnings<a class="hash-link" href="#warnings" title="Direct link to heading">#</a></h2><p>When running <code>cifar10_main.py</code> with <code>--sync</code> argument you may see an error
-similar to:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-python codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">File </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cifar10_main.py&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> line </span><span class="token number" style="color:rgb(247, 140, 108)">538</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">in</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">&lt;</span><span class="token plain">module</span><span class="token operator" style="color:rgb(137, 221, 255)">&gt;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    tf</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token plain">app</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token plain">run</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">File </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;/usr/local/lib/python2.7/dist-packages/tensorflow/python/platform/app.py&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> line </span><span class="token number" style="color:rgb(247, 140, 108)">48</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">in</span><span class="token plain"> run</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    _sys</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token plain">exit</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">main</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">_sys</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token plain">argv</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">+</span><span class="token plain"> flags_passthrough</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">File </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cifar10_main.py&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> line </span><span class="token number" style="color:rgb(247, 140, 108)">518</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">in</span><span class="token plain"> main</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    hooks</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> run_config</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">config</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">File </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/learn_runner.py&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> line </span><span class="token number" style="color:rgb(247, 140, 108)">210</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">in</span><span class="token plain"> run</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token keyword" style="font-style:italic">return</span><span class="token plain"> _execute_schedule</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">experiment</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> schedule</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">File </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/learn_runner.py&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> line </span><span class="token number" style="color:rgb(247, 140, 108)">47</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">in</span><span class="token plain"> _execute_schedule</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token keyword" style="font-style:italic">return</span><span class="token plain"> task</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">File </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/experiment.py&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> line </span><span class="token number" style="color:rgb(247, 140, 108)">501</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">in</span><span class="token plain"> train_and_evaluate</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    hooks</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">self</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token plain">_eval_hooks</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">File </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/experiment.py&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> line </span><span class="token number" style="color:rgb(247, 140, 108)">681</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">in</span><span class="token plain"> _call_evaluate</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    hooks</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">hooks</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">File </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;/usr/local/lib/python2.7/dist-packages/tensorflow/python/estimator/estimator.py&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> line </span><span class="token number" style="color:rgb(247, 140, 108)">292</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">in</span><span class="token plain"> evaluate</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    name</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">name</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">File </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;/usr/local/lib/python2.7/dist-packages/tensorflow/python/estimator/estimator.py&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> line </span><span class="token number" style="color:rgb(247, 140, 108)">638</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">in</span><span class="token plain"> _evaluate_model</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    features</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> labels</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> model_fn_lib</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token plain">ModeKeys</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token plain">EVAL</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">File </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;/usr/local/lib/python2.7/dist-packages/tensorflow/python/estimator/estimator.py&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> line </span><span class="token number" style="color:rgb(247, 140, 108)">545</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">in</span><span class="token plain"> _call_model_fn</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    features</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">features</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> labels</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">labels</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">**</span><span class="token plain">kwargs</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">File </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cifar10_main.py&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> line </span><span class="token number" style="color:rgb(247, 140, 108)">331</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">in</span><span class="token plain"> _resnet_model_fn</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    gradvars</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> global_step</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">tf</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token plain">train</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token plain">get_global_step</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">File </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/sync_replicas_optimizer.py&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> line </span><span class="token number" style="color:rgb(247, 140, 108)">252</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">in</span><span class="token plain"> apply_gradients</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    variables</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token plain">global_variables</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">File </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;/usr/local/lib/python2.7/dist-packages/tensorflow/python/util/tf_should_use.py&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> line </span><span class="token number" style="color:rgb(247, 140, 108)">170</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">in</span><span class="token plain"> wrapped</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token keyword" style="font-style:italic">return</span><span class="token plain"> _add_should_use_warning</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">fn</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token operator" style="color:rgb(137, 221, 255)">*</span><span class="token plain">args</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">**</span><span class="token plain">kwargs</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">File </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;/usr/local/lib/python2.7/dist-packages/tensorflow/python/util/tf_should_use.py&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> line </span><span class="token number" style="color:rgb(247, 140, 108)">139</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">in</span><span class="token plain"> _add_should_use_warning</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    wrapped </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> TFShouldUseWarningWrapper</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">x</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">File </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;/usr/local/lib/python2.7/dist-packages/tensorflow/python/util/tf_should_use.py&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> line </span><span class="token number" style="color:rgb(247, 140, 108)">96</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">in</span><span class="token plain"> __init__</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    stack </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain">s</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token plain">strip</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">for</span><span class="token plain"> s </span><span class="token keyword" style="font-style:italic">in</span><span class="token plain"> traceback</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token plain">format_stack</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>This should not affect your training, and should be fixed on the next releases.</p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/docs/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"></div><div class="pagination-nav__item pagination-nav__item--next"></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#prerequisite" class="table-of-contents__link">Prerequisite</a></li><li><a href="#training-on-a-single-machine-with-gpus-or-cpu" class="table-of-contents__link">Training on a single machine with GPUs or CPU</a></li><li><a href="#run-distributed-training" class="table-of-contents__link">Run distributed training</a><ul><li><a href="#optional-running-on-google-cloud-machine-learning-engine" class="table-of-contents__link">(Optional) Running on Google Cloud Machine Learning Engine</a></li><li><a href="#set-tf_config" class="table-of-contents__link">Set TF_CONFIG</a></li><li><a href="#running-script" class="table-of-contents__link">Running script</a></li></ul></li><li><a href="#visualizing-results-with-tensorboard" class="table-of-contents__link">Visualizing results with TensorBoard</a></li><li><a href="#warnings" class="table-of-contents__link">Warnings</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
-       either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
-        countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/935f2afb.954d7b62.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/76a60836.12547885.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/userDocs/api/environment/index.html b/docs/userDocs/api/environment/index.html
index 0d8a486..3259e73 100644
--- a/docs/userDocs/api/environment/index.html
+++ b/docs/userDocs/api/environment/index.html
@@ -6,31 +6,31 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Environment REST API | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="0.6.0"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-0.6.0"><meta data-react-helmet="true" property="og:title" content="Environment REST API | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/userDocs/api/environment"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/userDocs/api/environment"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/58f10d9f.a5917f48.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/5e036026.96c78b60.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/58f10d9f.87a860a5.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/5e036026.6c3df0b2.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/">0.6.0</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/next/userDocs/api/environment">master 🏃</a></li><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/userDocs/api/environment">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/userDocs/api/environment">master 🏃</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/userDocs/api/environment">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!" tabindex="0">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/submarine-sdk/model-client">Model Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Submarine Security</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/submarine-security/spark-security/README">Submarine Spark Security Plugin</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin">Building Submarine Spark Security Plugin</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Administrator Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine on Yarn</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/adminDocs/yarn/README">Running Submarine on YARN</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/community/contributing">How To Contribute to Submarine</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/submarine-server/experimentSpec">Generic Expeiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: 0.6.0</span></div><header><h1 class="docTitle_Oumm">Environment REST API</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="create-environment"></a>Create Environment<a class="hash-link" href="#create-environment" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">POST /api/v1/environment</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="parameters"></a>Parameters<a class="hash-link" href="#parameters" title="Direct link to heading">#</a></h3><p>Put EnvironmentSpec in request body.</p><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="environmentspec"></a><strong>EnvironmentSpec</strong><a class="hash-link" href="#environmentspec" title="Direct link to heading">#</a></h4><table><thead><tr><th>Field Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>name</td><td>String</td><td>Environment name.</td></tr><tr><td>dockerImage</td><td>String</td><td>Docker image name.</td></tr><tr><td>kernelSpec</td><td>KernelSpec</td><td>Environment spec.</td></tr><tr><td>description</td><td>String</td><td>Description of environment.</td></tr></tbody></table><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="kernelspec"></a><strong>KernelSpec</strong><a class="hash-link" href="#kernelspec" title="Direct link to heading">#</a></h4><table><thead><tr><th>Field Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>name</td><td>String</td><td>Kernel name.</td></tr><tr><td>channels</td><td>List&lt;String&gt;</td><td>Names of the channels.</td></tr><tr><td>condaDependencies</td><td>List&lt;String&gt;</td><td>List of kernel conda dependencies.</td></tr><tr><td>pipDependencies</td><td>List&lt;String&gt;</td><td>List of kernel pip dependencies.</td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example"></a>Code Example<a class="hash-link" href="#code-example" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X POST -H &quot;Content-Type: application/json&quot; -d &#x27;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">{</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;name&quot;: &quot;my-submarine-env&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;dockerImage&quot; : &quot;continuumio/anaconda3&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;kernelSpec&quot; : {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;name&quot; : &quot;team_default_python_3.7&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;channels&quot; : [&quot;defaults&quot;],</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;condaDependencies&quot; :</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      [&quot;_ipyw_jlab_nb_ext_conf=0.1.0=py37_0&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;alabaster=0.7.12=py37_0&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;anaconda=2020.02=py37_0&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;anaconda-client=1.7.2=py37_0&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;anaconda-navigator=1.9.12=py37_0&quot;],</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;pipDependencies&quot; :</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      [&quot;apache-submarine==0.5.0&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;pyarrow==0.17.0&quot;]</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">}</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">&#x27; http://127.0.0.1:32080/api/v1/environment</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;environmentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;environment_1626160071451_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;environmentSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;my-submarine-env&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;continuumio/anaconda3&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;team_default_python_3.7&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;channels&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;defaults&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;condaDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;_ipyw_jlab_nb_ext_conf\u003d0.1.0\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;alabaster\u003d0.7.12\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;anaconda\u003d2020.02\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;anaconda-client\u003d1.7.2\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;anaconda-navigator\u003d1.9.12\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;pipDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache-submarine\u003d\u003d0.5.0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;pyarrow\u003d\u003d0.17.0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="list-environment"></a>List Environment<a class="hash-link" href="#list-environment" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">GET /api/v1/environment</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example-1"></a>Code Example<a class="hash-link" href="#code-example-1" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X GET http://127.0.0.1:32080/api/v1/environment</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environmentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;environment_1600862964725_0002&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environmentSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;notebook-gpu-env&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:jupyter-notebook-gpu-0.7.0-SNAPSHOT&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;submarine_jupyter_py3&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;channels&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;defaults&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;condaDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;pipDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environmentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;environment_1626160071451_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environmentSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;my-submarine-env&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;continuumio/anaconda3&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;team_default_python_3.7&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;channels&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;defaults&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;condaDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;_ipyw_jlab_nb_ext_conf\u003d0.1.0\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;alabaster\u003d0.7.12\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;anaconda\u003d2020.02\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;anaconda-client\u003d1.7.2\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;anaconda-navigator\u003d1.9.12\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;pipDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache-submarine\u003d\u003d0.5.0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;pyarrow\u003d\u003d0.17.0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environmentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;environment_1600862964725_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environmentSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;notebook-env&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:jupyter-notebook-0.7.0-SNAPSHOT&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;submarine_jupyter_py3&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;channels&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;defaults&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;condaDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;pipDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="get-environment"></a>Get Environment<a class="hash-link" href="#get-environment" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">GET /api/v1/environment/{name}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="parameters-1"></a>Parameters<a class="hash-link" href="#parameters-1" title="Direct link to heading">#</a></h3><table><thead><tr><th>Field Name</th><th>Type</th><th>In</th><th>Description</th></tr></thead><tbody><tr><td>name</td><td>String</td><td>path</td><td>Environment name.</td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example-2"></a>Code Example<a class="hash-link" href="#code-example-2" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X GET http://127.0.0.1:32080/api/v1/environment/my-submarine-env</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;environmentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;environment_1626160071451_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;environmentSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;my-submarine-env&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;continuumio/anaconda3&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;team_default_python_3.7&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;channels&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;defaults&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;condaDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;_ipyw_jlab_nb_ext_conf\u003d0.1.0\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;alabaster\u003d0.7.12\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;anaconda\u003d2020.02\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;anaconda-client\u003d1.7.2\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;anaconda-navigator\u003d1.9.12\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;pipDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache-submarine\u003d\u003d0.5.0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;pyarrow\u003d\u003d0.17.0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="patch-environment"></a>Patch Environment<a class="hash-link" href="#patch-environment" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">PATCH /api/v1/environment/{name}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="parameters-2"></a>Parameters<a class="hash-link" href="#parameters-2" title="Direct link to heading">#</a></h3><table><thead><tr><th>Field Name</th><th>Type</th><th>In</th><th>Description</th></tr></thead><tbody><tr><td>name</td><td>String</td><td>path and body</td><td>Environment name.</td></tr><tr><td>dockerImage</td><td>String</td><td>body</td><td>Docker image name.</td></tr><tr><td>kernelSpec</td><td>KernelSpec</td><td>body</td><td>Environment spec.</td></tr><tr><td>description</td><td>String</td><td>body</td><td>Description of environment. This field is optional.</td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example-3"></a>Code Example<a class="hash-link" href="#code-example-3" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X PATCH -H &quot;Content-Type: application/json&quot; -d &#x27;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">{</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;name&quot;: &quot;my-submarine-env&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;dockerImage&quot; : &quot;continuumio/anaconda3&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;kernelSpec&quot; : {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;name&quot; : &quot;team_default_python_3.7_updated&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;channels&quot; : [&quot;defaults&quot;],</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;condaDependencies&quot; :</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      [&quot;_ipyw_jlab_nb_ext_conf=0.1.0=py37_0&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;alabaster=0.7.12=py37_0&quot;],</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;pipDependencies&quot; :</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      []</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">}</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">&#x27; http://127.0.0.1:32080/api/v1/environment/my-submarine-env</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;environmentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;environment_1626160071451_0003&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;environmentSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;my-submarine-env&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;continuumio/anaconda3&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;team_default_python_3.7_updated&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;channels&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;defaults&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;condaDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;_ipyw_jlab_nb_ext_conf\u003d0.1.0\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;alabaster\u003d0.7.12\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;pipDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="delete-environment"></a>Delete Environment<a class="hash-link" href="#delete-environment" title="Direct link to heading">#</a></h3><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">DELETE /api/v1/environment/{name}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="parameters-3"></a>Parameters<a class="hash-link" href="#parameters-3" title="Direct link to heading">#</a></h3><table><thead><tr><th>Field Name</th><th>Type</th><th>In</th><th>Description</th></tr></thead><tbody><tr><td>name</td><td>String</td><td>path</td><td>Environment name.</td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example-4"></a>Code Example<a class="hash-link" href="#code-example-4" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X DELETE http://127.0.0.1:32080/api/v1/environment/my-submarine-env</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;environmentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;environment_1626160071451_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;environmentSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;my-submarine-env&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;continuumio/anaconda3&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;team_default_python_3.7&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;channels&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;defaults&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;condaDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;_ipyw_jlab_nb_ext_conf\u003d0.1.0\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;alabaster\u003d0.7.12\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;anaconda\u003d2020.02\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;anaconda-client\u003d1.7.2\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;anaconda-navigator\u003d1.9.12\u003dpy37_0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;pipDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache-submarine\u003d\u003d0.5.0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;pyarrow\u003d\u003d0.17.0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/api/environment.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/userDocs/api/experiment"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Experiment REST API</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/userDocs/api/experiment-template"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Experiment Template REST API »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#create-environment" class="table-of-contents__link">Create Environment</a><ul><li><a href="#parameters" class="table-of-contents__link">Parameters</a></li><li><a href="#code-example" class="table-of-contents__link">Code Example</a></li></ul></li><li><a href="#list-environment" class="table-of-contents__link">List Environment</a><ul><li><a href="#code-example-1" class="table-of-contents__link">Code Example</a></li></ul></li><li><a href="#get-environment" class="table-of-contents__link">Get Environment</a><ul><li><a href="#parameters-1" class="table-of-contents__link">Parameters</a></li><li><a href="#code-example-2" class="table-of-contents__link">Code Example</a></li></ul></li><li><a href="#patch-environment" class="table-of-contents__link">Patch Environment</a><ul><li><a href="#parameters-2" class="table-of-contents__link">Parameters</a></li><li><a href="#code-example-3" class="table-of-contents__link">Code Example</a></li><li><a href="#delete-environment" class="table-of-contents__link">Delete Environment</a></li><li><a href="#parameters-3" class="table-of-contents__link">Parameters</a></li><li><a href="#code-example-4" class="table-of-contents__link">Code Example</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/58f10d9f.a5917f48.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/5e036026.96c78b60.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/58f10d9f.87a860a5.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/5e036026.6c3df0b2.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/userDocs/api/experiment-template/index.html b/docs/userDocs/api/experiment-template/index.html
index 619efeb..0c1086c 100644
--- a/docs/userDocs/api/experiment-template/index.html
+++ b/docs/userDocs/api/experiment-template/index.html
@@ -6,31 +6,31 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Experiment Template REST API | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="0.6.0"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-0.6.0"><meta data-react-helmet="true" property="og:title" content="Experiment Template REST API | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/userDocs/api/experiment-template"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/userDocs/api/experiment-template"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/58f10d9f.a5917f48.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/0e4b5d7a.7f9d833f.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/58f10d9f.87a860a5.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/0e4b5d7a.10e71edd.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/">0.6.0</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/next/userDocs/api/experiment-template">master 🏃</a></li><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/userDocs/api/experiment-template">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/userDocs/api/experiment-template">master 🏃</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/userDocs/api/experiment-template">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!" tabindex="0">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/submarine-sdk/model-client">Model Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Submarine Security</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/submarine-security/spark-security/README">Submarine Spark Security Plugin</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin">Building Submarine Spark Security Plugin</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Administrator Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine on Yarn</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/adminDocs/yarn/README">Running Submarine on YARN</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/community/contributing">How To Contribute to Submarine</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/submarine-server/experimentSpec">Generic Expeiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: 0.6.0</span></div><header><h1 class="docTitle_Oumm">Experiment Template REST API</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="create-experiment-template"></a>Create Experiment Template<a class="hash-link" href="#create-experiment-template" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">POST /api/v1/template</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="parameters"></a>Parameters<a class="hash-link" href="#parameters" title="Direct link to heading">#</a></h3><table><thead><tr><th>Field Name</th><th>Type</th><th>In</th><th>Description</th></tr></thead><tbody><tr><td>name</td><td>String</td><td>body</td><td>Experiment template name. This is required.</td></tr><tr><td>author</td><td>String</td><td>body</td><td>Author name.</td></tr><tr><td>description</td><td>String</td><td>body</td><td>Description of the experiment template.</td></tr><tr><td>parameters</td><td>List&lt;ExperimentTemplateParamSpec&gt;</td><td>body</td><td>Parameters of the experiment template.</td></tr><tr><td>experimentSpec</td><td>ExperimentSpec</td><td>body</td><td>Spec of the experiment template.</td></tr></tbody></table><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="experimenttemplateparamspec"></a><strong>ExperimentTemplateParamSpec</strong><a class="hash-link" href="#experimenttemplateparamspec" title="Direct link to heading">#</a></h4><table><thead><tr><th>Field Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>name</td><td>String</td><td>Parameter name.</td></tr><tr><td>required</td><td>Boolean</td><td>true / false. Whether the parameter is required.</td></tr><tr><td>description</td><td>String</td><td>Description of the parameter.</td></tr><tr><td>value</td><td>String</td><td>Value of the parameter.</td></tr></tbody></table><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="experimentspec"></a><strong>ExperimentSpec</strong><a class="hash-link" href="#experimentspec" title="Direct link to heading">#</a></h4><table><thead><tr><th>Field Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>meta</td><td>ExperimentMeta</td><td>Meta data of the experiment template.</td></tr><tr><td>environment</td><td>EnvironmentSpec</td><td>Environment of the experiment template.</td></tr><tr><td>spec</td><td>Map&lt;String, ExperimentTaskSpec&gt;</td><td>Spec of pods.</td></tr><tr><td>code</td><td>CodeSpec</td><td>Experiment codespec.</td></tr></tbody></table><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="experimentmeta"></a><strong>ExperimentMeta</strong><a class="hash-link" href="#experimentmeta" title="Direct link to heading">#</a></h4><table><thead><tr><th>Field Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>name</td><td>String</td><td>Experiment Name.</td></tr><tr><td>namespace</td><td>String</td><td>Experiment namespace.</td></tr><tr><td>framework</td><td>String</td><td>Experiment framework.</td></tr><tr><td>cmd</td><td>String</td><td>Command.</td></tr><tr><td>envVars</td><td>Map&lt;String, String&gt;</td><td>Environmental variables.</td></tr></tbody></table><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="environmentspec"></a><strong>EnvironmentSpec</strong><a class="hash-link" href="#environmentspec" title="Direct link to heading">#</a></h4><p>See more details in <a href="https://submarine.apache.org/docs/userDocs/api/environment" target="_blank" rel="noopener noreferrer">environment api</a>.</p><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="experimenttaskspec"></a><strong>ExperimentTaskSpec</strong><a class="hash-link" href="#experimenttaskspec" title="Direct link to heading">#</a></h4><table><thead><tr><th>Field Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>replicas</td><td>Integer</td><td>Numbers of replicas.</td></tr><tr><td>resoureces</td><td>String</td><td>Resouces of the task</td></tr><tr><td>name</td><td>String</td><td>Task name.</td></tr><tr><td>image</td><td>String</td><td>Image name.</td></tr><tr><td>cmd</td><td>String</td><td>Command.</td></tr><tr><td>envVars</td><td>Map&lt;String, String&gt;</td><td>Environmental variables.</td></tr></tbody></table><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="codespec"></a><strong>CodeSpec</strong><a class="hash-link" href="#codespec" title="Direct link to heading">#</a></h4><table><thead><tr><th>Field Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>syncMode</td><td>String</td><td>sync mode of code spec.</td></tr><tr><td>url</td><td>String</td><td>url of code spec.</td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example"></a>Code Example<a class="hash-link" href="#code-example" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X POST -H &quot;Content-Type: application/json&quot; -d &#x27;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">{</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;name&quot;: &quot;my-tf-mnist-template&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;author&quot;: &quot;author&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;description&quot;: &quot;This is a template to run tf-mnist&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;parameters&quot;: [{</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;name&quot;: &quot;learning_rate&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;value&quot;: 0.1,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;required&quot;: true,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;description&quot;: &quot;This is learning_rate of training.&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;name&quot;: &quot;batch_size&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;value&quot;: 150,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;required&quot;: true,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;description&quot;: &quot;This is batch_size of training.&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;name&quot;: &quot;experiment_name&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;value&quot;: &quot;tf-mnist1&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;required&quot;: true,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;description&quot;: &quot;the name of experiment.&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  ],</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;experimentSpec&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;meta&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;cmd&quot;: &quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate={{learning_rate}} --batch_size={{batch_size}}&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;name&quot;: &quot;{{experiment_name}}&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;envVars&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        &quot;ENV1&quot;: &quot;ENV1&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;framework&quot;: &quot;TensorFlow&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;namespace&quot;: &quot;default&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;spec&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;Ps&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        &quot;replicas&quot;: 1,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        &quot;resources&quot;: &quot;cpu=1,memory=1024M&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;Worker&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        &quot;replicas&quot;: 1,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        &quot;resources&quot;: &quot;cpu=1,memory=1024M&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;environment&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;image&quot;: &quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">}</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">&#x27; http://127.0.0.1:32080/api/v1/template</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;experimentTemplateId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;id&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;serverTimestamp&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1626160071451</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;experimentTemplateSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;my-tf-mnist-template&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;author&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;author&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;This is a template to run tf-mnist&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;parameters&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;learning_rate&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;true&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;This is learning_rate of training.&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;0.1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;batch_size&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;true&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;This is batch_size of training.&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;150&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_name&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;true&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;the name of experiment.&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Ps.replicas&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Ps.resourceMap.cpu&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Ps.resourceMap.memory&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Worker.replicas&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Worker.resourceMap.cpu&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Worker.resourceMap.memory&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain">&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          value</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;:&quot;</span><span class="token number" style="color:rgb(247, 140, 108)">1024</span><span class="token plain">M&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;experimentSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;{{experiment_name}}&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;framework&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;TensorFlow&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir\u003d/train/log --learning_rate\u003d{{learning_rate}} --batch_size\u003d{{batch_size}}&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;ENV1&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;Ps&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;Worker&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="list-experiment-template"></a>List Experiment Template<a class="hash-link" href="#list-experiment-template" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">GET /api/v1/template</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example-1"></a>Code Example<a class="hash-link" href="#code-example-1" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X GET http://127.0.0.1:32080/api/v1/template</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;experimentTemplateId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;id&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;serverTimestamp&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1626160071451</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;experimentTemplateSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;my-tf-mnist-template&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;author&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;author&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;This is a template to run tf-mnist&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;parameters&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;learning_rate&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;true&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;This is learning_rate of training.&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;0.1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;batch_size&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;true&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;This is batch_size of training.&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;150&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_name&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;true&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;the name of experiment.&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Ps.replicas&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Ps.resourceMap.cpu&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Ps.resourceMap.memory&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Worker.replicas&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Worker.resourceMap.cpu&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Worker.resourceMap.memory&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain">&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            value</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;:&quot;</span><span class="token number" style="color:rgb(247, 140, 108)">1024</span><span class="token plain">M&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;experimentSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;{{experiment_name}}&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;framework&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;TensorFlow&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir\u003d/train/log --learning_rate\u003d{{learning_rate}} --batch_size\u003d{{batch_size}}&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;ENV1&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;Ps&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;Worker&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">                </span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">              </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="patch-experiment-template"></a>Patch Experiment Template<a class="hash-link" href="#patch-experiment-template" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">PATCH /api/v1/template{name}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="parameters-1"></a>Parameters<a class="hash-link" href="#parameters-1" title="Direct link to heading">#</a></h3><table><thead><tr><th>Field Name</th><th>Type</th><th>In</th><th>Description</th></tr></thead><tbody><tr><td>name</td><td>String</td><td>path and body</td><td>Experiment template name. This is required.</td></tr><tr><td>author</td><td>String</td><td>body</td><td>Author name.</td></tr><tr><td>description</td><td>String</td><td>body</td><td>Description of the experiment template.</td></tr><tr><td>parameters</td><td>List&lt;ExperimentTemplateParamSpec&gt;</td><td>body</td><td>Parameters of the experiment template.</td></tr><tr><td>experimentSpec</td><td>ExperimentSpec</td><td>body</td><td>Spec of the experiment template.</td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example-2"></a>Code Example<a class="hash-link" href="#code-example-2" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X PATCH -H &quot;Content-Type: application/json&quot; -d &#x27;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">{</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;name&quot;: &quot;my-tf-mnist-template&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;author&quot;: &quot;author-new&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;description&quot;: &quot;This is a template to run tf-mnist&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;parameters&quot;: [{</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;name&quot;: &quot;learning_rate&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;value&quot;: 0.1,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;required&quot;: true,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;description&quot;: &quot;This is learning_rate of training.&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;name&quot;: &quot;batch_size&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;value&quot;: 150,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;required&quot;: true,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;description&quot;: &quot;This is batch_size of training.&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;name&quot;: &quot;experiment_name&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;value&quot;: &quot;tf-mnist1&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;required&quot;: true,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;description&quot;: &quot;the name of experiment.&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  ],</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;experimentSpec&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;meta&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;cmd&quot;: &quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate={{learning_rate}} --batch_size={{batch_size}}&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;name&quot;: &quot;{{experiment_name}}&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;envVars&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        &quot;ENV1&quot;: &quot;ENV1&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;framework&quot;: &quot;TensorFlow&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;namespace&quot;: &quot;default&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;spec&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;Ps&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        &quot;replicas&quot;: 1,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        &quot;resources&quot;: &quot;cpu=1,memory=1024M&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;Worker&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        &quot;replicas&quot;: 1,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        &quot;resources&quot;: &quot;cpu=1,memory=1024M&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;environment&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;image&quot;: &quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">}</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">&#x27; http://127.0.0.1:32080/api/v1/template/my-tf-mnist-template</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;experimentTemplateId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;id&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">2</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;serverTimestamp&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1626160071451</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;experimentTemplateSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;my-tf-mnist-template&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;author&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;author-new&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;This is a template to run tf-mnist&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;parameters&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;learning_rate&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;true&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;This is learning_rate of training.&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;0.1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;batch_size&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;true&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;This is batch_size of training.&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;150&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_name&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;true&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;the name of experiment.&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Ps.replicas&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Ps.resourceMap.cpu&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Ps.resourceMap.memory&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Worker.replicas&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Worker.resourceMap.cpu&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Worker.resourceMap.memory&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;experimentSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;{{experiment_name}}&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;framework&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;TensorFlow&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir\u003d/train/log --learning_rate\u003d{{learning_rate}} --batch_size\u003d{{batch_size}}&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;ENV1&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;Ps&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;Worker&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="delete-experiment-template"></a>Delete Experiment Template<a class="hash-link" href="#delete-experiment-template" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">DELETE /api/v1/template{name}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="parameters-2"></a>Parameters<a class="hash-link" href="#parameters-2" title="Direct link to heading">#</a></h3><table><thead><tr><th>Field Name</th><th>Type</th><th>In</th><th>Description</th></tr></thead><tbody><tr><td>name</td><td>String</td><td>path</td><td>Experiment template name. This is required.</td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example-3"></a>Code Example<a class="hash-link" href="#code-example-3" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X DELETE http://127.0.0.1:32080/api/v1/template/my-tf-mnist-template</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>reponse</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;experimentTemplateId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;id&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">2</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;serverTimestamp&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1626160071451</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;experimentTemplateSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;my-tf-mnist-template&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;author&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;author-new&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;This is a template to run tf-mnist&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;parameters&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;learning_rate&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;true&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;This is learning_rate of training.&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;0.1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;batch_size&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;true&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;This is batch_size of training.&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;150&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_name&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;true&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;the name of experiment.&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Ps.replicas&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Ps.resourceMap.cpu&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Ps.resourceMap.memory&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Worker.replicas&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Worker.resourceMap.cpu&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;spec.Worker.resourceMap.memory&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;required&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;false&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;value&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;experimentSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;{{experiment_name}}&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;framework&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;TensorFlow&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir\u003d/train/log --learning_rate\u003d{{learning_rate}} --batch_size\u003d{{batch_size}}&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;ENV1&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;Ps&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;Worker&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">            </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="use-template-to-create-a-experiment"></a>Use Template to Create a Experiment<a class="hash-link" href="#use-template-to-create-a-experiment" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">POST /api/v1/experiment/{template_name}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="parameters-3"></a>Parameters<a class="hash-link" href="#parameters-3" title="Direct link to heading">#</a></h3><table><thead><tr><th>Field Name</th><th>Type</th><th>In</th><th>Description</th></tr></thead><tbody><tr><td>template_name</td><td>String</td><td>path</td><td>Experiment template name.</td></tr><tr><td>name</td><td>String</td><td>body</td><td>Experiment template name.</td></tr><tr><td>params</td><td>Map&lt;String, String&gt;</td><td>body</td><td>Parameters of the experiment including <code>experiment_name</code>.</td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example-4"></a>Code Example<a class="hash-link" href="#code-example-4" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X POST -H &quot;Content-Type: application/json&quot; -d &#x27;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">{</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;name&quot;: &quot;tf-mnist&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;params&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        &quot;learning_rate&quot;:&quot;0.01&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        &quot;batch_size&quot;:&quot;150&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        &quot;experiment_name&quot;:&quot;newexperiment1&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">}</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">&#x27; http://127.0.0.1:32080/api/v1/experiment/my-tf-mnist-template</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;experimentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_1626160071451_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;newexperiment1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;uid&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;b895985c-411c-4e89-90e0-c60a2a8a4235&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Accepted&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;acceptedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-07-13T16:21:31.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;createdTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;runningTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;finishedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;newexperiment1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;framework&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;TensorFlow&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir\u003d/train/log --learning_rate\u003d0.01 --batch_size\u003d150&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;ENV1&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;Ps&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;Worker&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/api/experiment-template.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/userDocs/api/environment"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Environment REST API</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/userDocs/api/notebook"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Notebook REST API »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#create-experiment-template" class="table-of-contents__link">Create Experiment Template</a><ul><li><a href="#parameters" class="table-of-contents__link">Parameters</a></li><li><a href="#code-example" class="table-of-contents__link">Code Example</a></li></ul></li><li><a href="#list-experiment-template" class="table-of-contents__link">List Experiment Template</a><ul><li><a href="#code-example-1" class="table-of-contents__link">Code Example</a></li></ul></li><li><a href="#patch-experiment-template" class="table-of-contents__link">Patch Experiment Template</a><ul><li><a href="#parameters-1" class="table-of-contents__link">Parameters</a></li><li><a href="#code-example-2" class="table-of-contents__link">Code Example</a></li></ul></li><li><a href="#delete-experiment-template" class="table-of-contents__link">Delete Experiment Template</a><ul><li><a href="#parameters-2" class="table-of-contents__link">Parameters</a></li><li><a href="#code-example-3" class="table-of-contents__link">Code Example</a></li></ul></li><li><a href="#use-template-to-create-a-experiment" class="table-of-contents__link">Use Template to Create a Experiment</a><ul><li><a href="#parameters-3" class="table-of-contents__link">Parameters</a></li><li><a href="#code-example-4" class="table-of-contents__link">Code Example</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/58f10d9f.a5917f48.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/0e4b5d7a.7f9d833f.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/58f10d9f.87a860a5.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/0e4b5d7a.10e71edd.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/userDocs/api/experiment/index.html b/docs/userDocs/api/experiment/index.html
index 0a8efd2..9d112c1 100644
--- a/docs/userDocs/api/experiment/index.html
+++ b/docs/userDocs/api/experiment/index.html
@@ -6,31 +6,31 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Experiment REST API | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="0.6.0"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-0.6.0"><meta data-react-helmet="true" property="og:title" content="Experiment REST API | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/userDocs/api/experiment"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/userDocs/api/experiment"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/58f10d9f.a5917f48.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/73bafbdc.aea1d01f.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/58f10d9f.87a860a5.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/73bafbdc.f052f259.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/">0.6.0</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/next/userDocs/api/experiment">master 🏃</a></li><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/userDocs/api/experiment">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/userDocs/api/experiment">master 🏃</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/userDocs/api/experiment">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!" tabindex="0">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/submarine-sdk/model-client">Model Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Submarine Security</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/submarine-security/spark-security/README">Submarine Spark Security Plugin</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin">Building Submarine Spark Security Plugin</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Administrator Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine on Yarn</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/adminDocs/yarn/README">Running Submarine on YARN</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/community/contributing">How To Contribute to Submarine</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/submarine-server/experimentSpec">Generic Expeiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: 0.6.0</span></div><header><h1 class="docTitle_Oumm">Experiment REST API</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="create-experiment-using-anonymousembedded-environment"></a>Create Experiment (Using Anonymous/Embedded Environment)<a class="hash-link" href="#create-experiment-using-anonymousembedded-environment" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">POST /api/v1/experiment</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="parameters"></a>Parameters<a class="hash-link" href="#parameters" title="Direct link to heading">#</a></h3><p>Put ExperimentSpec in request body.</p><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="experimentspec"></a><strong>ExperimentSpec</strong><a class="hash-link" href="#experimentspec" title="Direct link to heading">#</a></h4><table><thead><tr><th>Field Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>meta</td><td>ExperimentMeta</td><td>Meta data of the experiment template.</td></tr><tr><td>environment</td><td>EnvironmentSpec</td><td>Environment of the experiment template.</td></tr><tr><td>spec</td><td>Map&lt;String, ExperimentTaskSpec&gt;</td><td>Spec of pods.</td></tr><tr><td>code</td><td>CodeSpec</td><td>Experiment codespec.</td></tr></tbody></table><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="experimentmeta"></a><strong>ExperimentMeta</strong><a class="hash-link" href="#experimentmeta" title="Direct link to heading">#</a></h4><table><thead><tr><th>Field Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>name</td><td>String</td><td>Experiment name.</td></tr><tr><td>namespace</td><td>String</td><td>Experiment namespace.</td></tr><tr><td>framework</td><td>String</td><td>Experiemnt framework.</td></tr><tr><td>cmd</td><td>String</td><td>Command.</td></tr><tr><td>envVars</td><td>Map&lt;String, String&gt;</td><td>Environmental variables.</td></tr></tbody></table><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="environmentspec"></a><strong>EnvironmentSpec</strong><a class="hash-link" href="#environmentspec" title="Direct link to heading">#</a></h4><p>There are two types of environment: Anonymous and Predefined.</p><ul><li>Anonymous environment: only specify <code>dockerImage</code> in environment spec. The container will be built on the docker image.</li><li>Embedded environment: specify <code>name</code> in environment spec. The container will be built on the existing environment (including dockerImage and kernalSpec).</li></ul><p>See more details in <a href="https://submarine.apache.org/docs/userDocs/api/environment" target="_blank" rel="noopener noreferrer">environment api</a>.</p><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="experimenttaskspec"></a><strong>ExperimentTaskSpec</strong><a class="hash-link" href="#experimenttaskspec" title="Direct link to heading">#</a></h4><table><thead><tr><th>Field Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>replicas</td><td>Integer</td><td>Numbers of replicas.</td></tr><tr><td>resoureces</td><td>String</td><td>Resouces of the task</td></tr><tr><td>name</td><td>String</td><td>Task name.</td></tr><tr><td>image</td><td>String</td><td>Image name.</td></tr><tr><td>cmd</td><td>String</td><td>Command.</td></tr><tr><td>envVars</td><td>Map&lt;String, String&gt;</td><td>Environmental variables.</td></tr></tbody></table><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="codespec"></a><strong>CodeSpec</strong><a class="hash-link" href="#codespec" title="Direct link to heading">#</a></h4><p>Currently only support pulling from github. HDFS, NFS and s3 are in development</p><table><thead><tr><th>Field Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>syncMode</td><td>String (git|hdfs|nfs|s3)</td><td>sync mode of code spec.</td></tr><tr><td>url</td><td>String</td><td>url of code spec.</td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example"></a>Code Example<a class="hash-link" href="#code-example" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X POST -H &quot;Content-Type: application/json&quot; -d &#x27;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">{</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;meta&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;name&quot;: &quot;tf-mnist-json&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;namespace&quot;: &quot;default&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;framework&quot;: &quot;TensorFlow&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;cmd&quot;: &quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;envVars&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;ENV_1&quot;: &quot;ENV1&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;environment&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;image&quot;: &quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;spec&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;Ps&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;replicas&quot;: 1,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;resources&quot;: &quot;cpu=1,memory=1024M&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;Worker&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;replicas&quot;: 1,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;resources&quot;: &quot;cpu=1,memory=2048M&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">}</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">&#x27; http://127.0.0.1:32080/api/v1/experiment</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;experimentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_1626160071451_0002&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;uid&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;5a6ec922-6c90-43d4-844f-039f6804ed36&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Accepted&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;acceptedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-07-13T16:47:51.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;createdTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;runningTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;finishedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;framework&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;TensorFlow&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir\u003d/train/log --learning_rate\u003d0.01 --batch_size\u003d150&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;ENV_1&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;Ps&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;Worker&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d2048M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2048M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="create-experiment-using-pre-definedstored-environment"></a>Create Experiment (Using Pre-defined/Stored Environment)<a class="hash-link" href="#create-experiment-using-pre-definedstored-environment" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">POST /api/v1/experiment</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="parameters-1"></a>Parameters<a class="hash-link" href="#parameters-1" title="Direct link to heading">#</a></h3><p>Put ExperimentSpec in request body.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example-1"></a>Code Example<a class="hash-link" href="#code-example-1" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X POST -H &quot;Content-Type: application/json&quot; -d &#x27;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">{</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;meta&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;name&quot;: &quot;tf-mnist-json&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;namespace&quot;: &quot;default&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;framework&quot;: &quot;TensorFlow&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;cmd&quot;: &quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;envVars&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;ENV_1&quot;: &quot;ENV1&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;environment&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;name&quot;: &quot;my-submarine-env&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;spec&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;Ps&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;replicas&quot;: 1,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;resources&quot;: &quot;cpu=1,memory=1024M&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;Worker&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;replicas&quot;: 1,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;resources&quot;: &quot;cpu=1,memory=2048M&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">}</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">&#x27; http://127.0.0.1:32080/api/v1/experiment</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Above example assume environment &quot;my-submarine-env&quot; already exists in Submarine. Please refer Environment API Reference doc to <a href="https://submarine.apache.org/docs/userDocs/api/environment" target="_blank" rel="noopener noreferrer">environment rest api</a>.</p><p><strong>response</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;experimentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_1626160071451_0005&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;uid&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;4944c603-0f21-49e5-826a-2ff820bb4d93&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Accepted&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;acceptedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-07-13T16:57:27.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;createdTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;runningTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;finishedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;framework&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;TensorFlow&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir\u003d/train/log --learning_rate\u003d0.01 --batch_size\u003d150&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;ENV_1&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;my-submarine-env&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;Ps&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;Worker&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d2048M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2048M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="list-experiment"></a>List Experiment<a class="hash-link" href="#list-experiment" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">GET /api/v1/experiment</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example-2"></a>Code Example<a class="hash-link" href="#code-example-2" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X GET http://127.0.0.1:32080/api/v1/experiment</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;experimentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_1626160071451_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;newexperiment1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;uid&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;b895985c-411c-4e89-90e0-c60a2a8a4235&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Succeeded&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;acceptedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-07-13T16:21:31.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;createdTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-07-13T16:21:31.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;runningTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-07-13T16:21:46.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;finishedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-07-13T16:26:54.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;newexperiment1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;framework&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;TensorFlow&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir\u003d/train/log --learning_rate\u003d0.01 --batch_size\u003d150&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;ENV1&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;Ps&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;Worker&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;experimentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_1626160071451_0005&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;uid&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;4944c603-0f21-49e5-826a-2ff820bb4d93&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Accepted&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;acceptedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-07-13T16:57:27.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;createdTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;runningTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;finishedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;framework&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;TensorFlow&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir\u003d/train/log --learning_rate\u003d0.01 --batch_size\u003d150&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;ENV_1&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;my-submarine-env&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;Ps&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;Worker&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d2048M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2048M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="get-experiment"></a>Get Experiment<a class="hash-link" href="#get-experiment" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">GET /api/v1/experiment/{id}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="parameters-2"></a>Parameters<a class="hash-link" href="#parameters-2" title="Direct link to heading">#</a></h3><table><thead><tr><th>Field Name</th><th>Type</th><th>In</th><th>Description</th></tr></thead><tbody><tr><td>id</td><td>String</td><td>path</td><td>Experiment id.</td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example-3"></a>Code Example<a class="hash-link" href="#code-example-3" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X GET http://127.0.0.1:32080/api/v1/experiment/experiment_1626160071451_0005</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;experimentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_1626160071451_0005&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;uid&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;4944c603-0f21-49e5-826a-2ff820bb4d93&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Accepted&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;acceptedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-07-13T16:57:27.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;createdTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;runningTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;finishedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;framework&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;TensorFlow&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir\u003d/train/log --learning_rate\u003d0.01 --batch_size\u003d150&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;ENV_1&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;my-submarine-env&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;Ps&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;Worker&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d2048M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2048M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="patch-experiment"></a>Patch Experiment<a class="hash-link" href="#patch-experiment" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">PATCH /api/v1/experiment/{id}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="parameters-3"></a>Parameters<a class="hash-link" href="#parameters-3" title="Direct link to heading">#</a></h3><table><thead><tr><th>Field Name</th><th>Type</th><th>In</th><th>Description</th></tr></thead><tbody><tr><td>id</td><td>String</td><td>path</td><td>Experiment id.</td></tr><tr><td>meta</td><td>ExperimentMeta</td><td>body</td><td>Meta data of the experiment template.</td></tr><tr><td>environment</td><td>EnvironmentSpec</td><td>body</td><td>Environment of the experiment template.</td></tr><tr><td>spec</td><td>Map&lt;String, ExperimentTaskSpec&gt;</td><td>body</td><td>Spec of pods.</td></tr><tr><td>code</td><td>CodeSpec</td><td>body</td><td>TODO</td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example-4"></a>Code Example<a class="hash-link" href="#code-example-4" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X PATCH -H &quot;Content-Type: application/json&quot; -d &#x27;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">{</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;meta&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;name&quot;: &quot;tf-mnist-json&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;namespace&quot;: &quot;default&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;framework&quot;: &quot;TensorFlow&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;cmd&quot;: &quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;envVars&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;ENV_1&quot;: &quot;ENV1&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;environment&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;image&quot;: &quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;spec&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;Ps&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;replicas&quot;: 1,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;resources&quot;: &quot;cpu=1,memory=1024M&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;Worker&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;replicas&quot;: 2,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;resources&quot;: &quot;cpu=1,memory=2048M&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">}</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">&#x27; http://127.0.0.1:32080/api/v1/experiment/experiment_1626160071451_0005</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;experimentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_1626160071451_0005&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;uid&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;4944c603-0f21-49e5-826a-2ff820bb4d93&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Accepted&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;acceptedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-07-13T16:57:27.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;createdTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;runningTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;finishedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;framework&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;TensorFlow&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir\u003d/train/log --learning_rate\u003d0.01 --batch_size\u003d150&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;ENV_1&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;Ps&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;Worker&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">2</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d2048M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2048M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="delete-experiment"></a>Delete Experiment<a class="hash-link" href="#delete-experiment" title="Direct link to heading">#</a></h3><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">DELETE /api/v1/experiment/{id}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="parameters-4"></a>Parameters<a class="hash-link" href="#parameters-4" title="Direct link to heading">#</a></h3><table><thead><tr><th>Field Name</th><th>Type</th><th>In</th><th>Description</th></tr></thead><tbody><tr><td>id</td><td>String</td><td>path</td><td>Experiment id.</td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example-5"></a>Code Example<a class="hash-link" href="#code-example-5" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X DELETE http://127.0.0.1:32080/api/v1/experiment/experiment_1626160071451_0005</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;experimentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_1626160071451_0005&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;uid&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;4944c603-0f21-49e5-826a-2ff820bb4d93&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Deleted&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;acceptedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;createdTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;runningTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;finishedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;tf-mnist-json&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;framework&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;TensorFlow&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /var/tf_mnist/mnist_with_summaries.py --log_dir\u003d/train/log --learning_rate\u003d0.01 --batch_size\u003d150&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;ENV_1&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ENV1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:tf-mnist-with-summaries-1.0&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;Ps&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1024M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;Worker&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;replicas&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">2</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d2048M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;cmd&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;resourceMap&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;memory&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2048M&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token property">&quot;cpu&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;1&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="list-experiment-log"></a>List Experiment Log<a class="hash-link" href="#list-experiment-log" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">GET /api/v1/experiment/logs</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example-6"></a>Code Example<a class="hash-link" href="#code-example-6" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X GET http://127.0.0.1:32080/api/v1/experiment/logs</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;experimentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_1626160071451_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;logContent&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;podName&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;newexperiment1-ps-0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;podLog&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;podName&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;newexperiment1-worker-0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;podLog&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="get-experiment-log"></a>Get Experiment Log<a class="hash-link" href="#get-experiment-log" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">GET /api/v1/experiment/logs/{id}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="parameters-5"></a>Parameters<a class="hash-link" href="#parameters-5" title="Direct link to heading">#</a></h3><table><thead><tr><th>Field Name</th><th>Type</th><th>In</th><th>Description</th></tr></thead><tbody><tr><td>id</td><td>String</td><td>path</td><td>Experiment id.</td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example-7"></a>Code Example<a class="hash-link" href="#code-example-7" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X GET http://127.0.0.1:32080/api/v1/experiment/logs/experiment_1626160071451_0001</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;experimentId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_1626160071451_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;logContent&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;podName&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;newexperiment1-ps-0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;podLog&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;podName&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;newexperiment1-worker-0&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;podLog&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/api/experiment.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/gettingStarted/notebook"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Jupyter Notebook</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/userDocs/api/environment"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Environment REST API »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#create-experiment-using-anonymousembedded-environment" class="table-of-contents__link">Create Experiment (Using Anonymous/Embedded Environment)</a><ul><li><a href="#parameters" class="table-of-contents__link">Parameters</a></li><li><a href="#code-example" class="table-of-contents__link">Code Example</a></li></ul></li><li><a href="#create-experiment-using-pre-definedstored-environment" class="table-of-contents__link">Create Experiment (Using Pre-defined/Stored Environment)</a><ul><li><a href="#parameters-1" class="table-of-contents__link">Parameters</a></li><li><a href="#code-example-1" class="table-of-contents__link">Code Example</a></li></ul></li><li><a href="#list-experiment" class="table-of-contents__link">List Experiment</a><ul><li><a href="#code-example-2" class="table-of-contents__link">Code Example</a></li></ul></li><li><a href="#get-experiment" class="table-of-contents__link">Get Experiment</a><ul><li><a href="#parameters-2" class="table-of-contents__link">Parameters</a></li><li><a href="#code-example-3" class="table-of-contents__link">Code Example</a></li></ul></li><li><a href="#patch-experiment" class="table-of-contents__link">Patch Experiment</a><ul><li><a href="#parameters-3" class="table-of-contents__link">Parameters</a></li><li><a href="#code-example-4" class="table-of-contents__link">Code Example</a></li><li><a href="#delete-experiment" class="table-of-contents__link">Delete Experiment</a></li><li><a href="#parameters-4" class="table-of-contents__link">Parameters</a></li><li><a href="#code-example-5" class="table-of-contents__link">Code Example</a></li></ul></li><li><a href="#list-experiment-log" class="table-of-contents__link">List Experiment Log</a><ul><li><a href="#code-example-6" class="table-of-contents__link">Code Example</a></li></ul></li><li><a href="#get-experiment-log" class="table-of-contents__link">Get Experiment Log</a><ul><li><a href="#parameters-5" class="table-of-contents__link">Parameters</a></li><li><a href="#code-example-7" class="table-of-contents__link">Code Example</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/58f10d9f.a5917f48.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/73bafbdc.aea1d01f.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/58f10d9f.87a860a5.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/73bafbdc.f052f259.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/userDocs/api/notebook/index.html b/docs/userDocs/api/notebook/index.html
index c8cf47c..f740ebc 100644
--- a/docs/userDocs/api/notebook/index.html
+++ b/docs/userDocs/api/notebook/index.html
@@ -6,31 +6,31 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Notebook REST API | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="0.6.0"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-0.6.0"><meta data-react-helmet="true" property="og:title" content="Notebook REST API | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/userDocs/api/notebook"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/userDocs/api/notebook"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/58f10d9f.a5917f48.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/cd51f9ed.31f260ae.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/58f10d9f.87a860a5.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/cd51f9ed.6eac8c3d.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/">0.6.0</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/next/userDocs/api/notebook">master 🏃</a></li><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/userDocs/api/notebook">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/userDocs/api/notebook">master 🏃</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/userDocs/api/notebook">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!" tabindex="0">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/submarine-sdk/model-client">Model Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Submarine Security</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/submarine-security/spark-security/README">Submarine Spark Security Plugin</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin">Building Submarine Spark Security Plugin</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Administrator Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine on Yarn</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/adminDocs/yarn/README">Running Submarine on YARN</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/community/contributing">How To Contribute to Submarine</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/submarine-server/experimentSpec">Generic Expeiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: 0.6.0</span></div><header><h1 class="docTitle_Oumm">Notebook REST API</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="create-a-notebook-instance"></a>Create a Notebook Instance<a class="hash-link" href="#create-a-notebook-instance" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">POST /api/v1/notebook</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="parameters"></a>Parameters<a class="hash-link" href="#parameters" title="Direct link to heading">#</a></h3><p>NotebookSpec in request body.</p><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="notebookspec"></a><strong>NotebookSpec</strong><a class="hash-link" href="#notebookspec" title="Direct link to heading">#</a></h4><table><thead><tr><th>Field Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>meta</td><td>NotebookMeta</td><td>Meta data of the notebook.</td></tr><tr><td>environment</td><td>EnvironmentSpec</td><td>Environment of the experiment template.</td></tr><tr><td>spec</td><td>NotebookPodSpec</td><td>Spec of the notebook pods.</td></tr></tbody></table><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="notebookmeta"></a><strong>NotebookMeta</strong><a class="hash-link" href="#notebookmeta" title="Direct link to heading">#</a></h4><table><thead><tr><th>Field Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>name</td><td>String</td><td>Notebook name.</td></tr><tr><td>namespace</td><td>String</td><td>Notebook namespace.</td></tr><tr><td>ownerId</td><td>String</td><td>User id.</td></tr></tbody></table><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="environmentspec"></a><strong>EnvironmentSpec</strong><a class="hash-link" href="#environmentspec" title="Direct link to heading">#</a></h4><p>See more details in <a href="https://submarine.apache.org/docs/userDocs/api/environment" target="_blank" rel="noopener noreferrer">environment api</a>.</p><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="notebookpodspec"></a><strong>NotebookPodSpec</strong><a class="hash-link" href="#notebookpodspec" title="Direct link to heading">#</a></h4><table><thead><tr><th>Field Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>envVars</td><td>Map&lt;String, String&gt;</td><td>Environmental variables.</td></tr><tr><td>resources</td><td>String</td><td>Resourecs of the pod.</td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example"></a>Code Example<a class="hash-link" href="#code-example" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X POST -H &quot;Content-Type: application/json&quot; -d &#x27;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">{</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;meta&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;name&quot;: &quot;test-nb&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;namespace&quot;: &quot;default&quot;,</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;ownerId&quot;: &quot;e9ca23d68d884d4ebb19d07889727dae&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;environment&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;name&quot;: &quot;notebook-env&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  &quot;spec&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;envVars&quot;: {</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      &quot;TEST_ENV&quot;: &quot;test&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    },</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    &quot;resources&quot;: &quot;cpu=1,memory=1.0Gi&quot;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  }</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">}</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">&#x27; http://127.0.0.1:32080/api/v1/notebook</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Create a notebook instance&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;notebookId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;notebook_1626160071451_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test-nb&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;uid&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;a56713da-f2a3-40d0-ae2e-45fdc0bb15f5&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;url&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;/notebook/default/test-nb/lab&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;creating&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;reason&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;The notebook instance is creating&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;createdTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-07-13T16:23:38.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;deletedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test-nb&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;ownerId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;e9ca23d68d884d4ebb19d07889727dae&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;notebook-env&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:jupyter-notebook-0.7.0-SNAPSHOT&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;submarine_jupyter_py3&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;channels&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;defaults&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;condaDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;pipDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;TEST_ENV&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1.0Gi&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="list-notebook-instances-which-belong-to-user"></a>List notebook instances which belong to user<a class="hash-link" href="#list-notebook-instances-which-belong-to-user" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">GET /api/v1/notebook</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="parameters-1"></a>Parameters<a class="hash-link" href="#parameters-1" title="Direct link to heading">#</a></h3><table><thead><tr><th>Field Name</th><th>Type</th><th>In</th><th>Description</th></tr></thead><tbody><tr><td>id</td><td>String</td><td>query</td><td>User id.</td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example-1"></a>Code Example<a class="hash-link" href="#code-example-1" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X GET http://127.0.0.1:32080/api/v1/notebook?id=e9ca23d68d884d4ebb19d07889727dae</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;List all notebook instances&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;notebookId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;notebook_1626160071451_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test-nb&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;uid&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;a56713da-f2a3-40d0-ae2e-45fdc0bb15f5&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;url&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;/notebook/default/test-nb/lab&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;waiting&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;reason&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ContainerCreating&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;createdTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-07-13T16:23:38.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;deletedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test-nb&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;ownerId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;e9ca23d68d884d4ebb19d07889727dae&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;notebook-env&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:jupyter-notebook-0.7.0-SNAPSHOT&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;submarine_jupyter_py3&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;channels&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;defaults&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;condaDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;pipDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;TEST_ENV&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1.0Gi&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="get-the-notebook-instance"></a>Get the notebook instance<a class="hash-link" href="#get-the-notebook-instance" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">GET /api/v1/notebook/{id}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="parameters-2"></a>Parameters<a class="hash-link" href="#parameters-2" title="Direct link to heading">#</a></h3><table><thead><tr><th>Field Name</th><th>Type</th><th>In</th><th>Description</th></tr></thead><tbody><tr><td>id</td><td>String</td><td>path</td><td>Notebook id.</td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example-2"></a>Code Example<a class="hash-link" href="#code-example-2" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X GET http://127.0.0.1:32080/api/v1/notebook/notebook_1626160071451_0001</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Get the notebook instance&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;notebookId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;notebook_1626160071451_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test-nb&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;uid&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;a56713da-f2a3-40d0-ae2e-45fdc0bb15f5&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;url&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;/notebook/default/test-nb/lab&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;waiting&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;reason&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;ContainerCreating&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;createdTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-07-13T16:23:38.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;deletedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test-nb&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;ownerId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;e9ca23d68d884d4ebb19d07889727dae&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;notebook-env&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:jupyter-notebook-0.7.0-SNAPSHOT&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;submarine_jupyter_py3&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;channels&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;defaults&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;condaDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;pipDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;TEST_ENV&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1.0Gi&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="delete-the-notebook-instance"></a>Delete the notebook instance<a class="hash-link" href="#delete-the-notebook-instance" title="Direct link to heading">#</a></h2><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">DELETE /api/v1/notebook/{id}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="parameters-3"></a>Parameters<a class="hash-link" href="#parameters-3" title="Direct link to heading">#</a></h3><table><thead><tr><th>Field Name</th><th>Type</th><th>In</th><th>Description</th></tr></thead><tbody><tr><td>id</td><td>String</td><td>path</td><td>Notebook id.</td></tr></tbody></table><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="code-example-3"></a>Code Example<a class="hash-link" href="#code-example-3" title="Direct link to heading">#</a></h3><p><strong>shell</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-sh codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">curl -X DELETE http://127.0.0.1:32080/api/v1/notebook/notebook_1626160071451_0001</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p><strong>response:</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-json codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;OK&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;code&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token number" style="color:rgb(247, 140, 108)">200</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;success&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;message&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Delete the notebook instance&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;result&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;notebookId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;notebook_1626160071451_0001&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test-nb&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;uid&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;a56713da-f2a3-40d0-ae2e-45fdc0bb15f5&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;url&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;/notebook/default/test-nb/lab&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;status&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;terminating&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;reason&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;The notebook instance is terminating&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;createdTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;2021-07-13T16:23:38.000+08:00&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;deletedTime&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;meta&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test-nb&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;namespace&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;default&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;ownerId&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;e9ca23d68d884d4ebb19d07889727dae&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;environment&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;notebook-env&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;dockerImage&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;apache/submarine:jupyter-notebook-0.7.0-SNAPSHOT&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;kernelSpec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;name&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;submarine_jupyter_py3&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;channels&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;defaults&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;condaDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">          </span><span class="token property">&quot;pipDependencies&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;description&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;image&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token null keyword" style="font-style:italic">null</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token property">&quot;spec&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;envVars&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token property">&quot;TEST_ENV&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;test&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token property">&quot;resources&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cpu\u003d1,memory\u003d1.0Gi&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token property">&quot;attributes&quot;</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/api/notebook.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/userDocs/api/experiment-template"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Experiment Template REST API</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/userDocs/submarine-sdk/experiment-client"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Experiment Client »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#create-a-notebook-instance" class="table-of-contents__link">Create a Notebook Instance</a><ul><li><a href="#parameters" class="table-of-contents__link">Parameters</a></li><li><a href="#code-example" class="table-of-contents__link">Code Example</a></li></ul></li><li><a href="#list-notebook-instances-which-belong-to-user" class="table-of-contents__link">List notebook instances which belong to user</a><ul><li><a href="#parameters-1" class="table-of-contents__link">Parameters</a></li><li><a href="#code-example-1" class="table-of-contents__link">Code Example</a></li></ul></li><li><a href="#get-the-notebook-instance" class="table-of-contents__link">Get the notebook instance</a><ul><li><a href="#parameters-2" class="table-of-contents__link">Parameters</a></li><li><a href="#code-example-2" class="table-of-contents__link">Code Example</a></li></ul></li><li><a href="#delete-the-notebook-instance" class="table-of-contents__link">Delete the notebook instance</a><ul><li><a href="#parameters-3" class="table-of-contents__link">Parameters</a></li><li><a href="#code-example-3" class="table-of-contents__link">Code Example</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/58f10d9f.a5917f48.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/cd51f9ed.31f260ae.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/58f10d9f.87a860a5.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/cd51f9ed.6eac8c3d.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/userDocs/others/mlflow/index.html b/docs/userDocs/others/mlflow/index.html
index f21efd8..56ab8d5 100644
--- a/docs/userDocs/others/mlflow/index.html
+++ b/docs/userDocs/others/mlflow/index.html
@@ -6,16 +6,16 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">MLflow UI | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="0.6.0"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-0.6.0"><meta data-react-helmet="true" property="og:title" content="MLflow UI | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/userDocs/others/mlflow"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/userDocs/others/mlflow"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/58f10d9f.a5917f48.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/10dc6c9a.abe7d86f.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/58f10d9f.87a860a5.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/10dc6c9a.ad0b736b.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -27,15 +27,15 @@
 result. You can also compare the training between different workers.</li></ol><p><img src="/assets/images/mlflow-ui-e2fbae31ba60c324e66f00f0ae3caebf.png"></p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/others/mlflow.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Building Submarine Spark Security Plugin</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/userDocs/others/tensorboard"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Tensorboard »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#usage" class="table-of-contents__link">Usage</a></li><li><a href="#example" class="table-of-contents__link">Example</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/58f10d9f.a5917f48.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/10dc6c9a.abe7d86f.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/58f10d9f.87a860a5.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/10dc6c9a.ad0b736b.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/userDocs/others/tensorboard/index.html b/docs/userDocs/others/tensorboard/index.html
index 2d0b7ed..8e88618 100644
--- a/docs/userDocs/others/tensorboard/index.html
+++ b/docs/userDocs/others/tensorboard/index.html
@@ -6,16 +6,16 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Tensorboard | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="0.6.0"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-0.6.0"><meta data-react-helmet="true" property="og:title" content="Tensorboard | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/userDocs/others/tensorboard"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/userDocs/others/tensorboard"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/58f10d9f.a5917f48.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/76720dd8.ea402a86.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/58f10d9f.87a860a5.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/76720dd8.946557fc.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -23,15 +23,15 @@
 </span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="connect-to-the-tensorboard-webpage"></a>Connect to the tensorboard webpage<a class="hash-link" href="#connect-to-the-tensorboard-webpage" title="Direct link to heading">#</a></h2><ol><li>Open the experiment page in the workbench, and Click the <code>TensorBoard</code> button.</li></ol><p><img src="/assets/images/tensorboard-experiment-page-bf5d5aad633d80ef059ce4b7e4d91db3.png"></p><ol start="2"><li>Inspect the process on tensorboard page.</li></ol><p><img src="/assets/images/tensorboard-webpage-f8b9c5ceeb7b5ef535939ea22f680d96.png"></p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/others/tensorboard.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/userDocs/others/mlflow"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« MLflow UI</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/adminDocs/yarn/README"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Running Submarine on YARN »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#write-to-logdirs-by-the-environment-variable" class="table-of-contents__link">Write to LogDirs by the environment variable</a><ul><li><a href="#environment-variable" class="table-of-contents__link">Environment variable</a></li><li><a href="#example" class="table-of-contents__link">Example</a></li></ul></li><li><a href="#connect-to-the-tensorboard-webpage" class="table-of-contents__link">Connect to the tensorboard webpage</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/58f10d9f.a5917f48.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/76720dd8.ea402a86.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/58f10d9f.87a860a5.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/76720dd8.946557fc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/userDocs/submarine-sdk/README/index.html b/docs/userDocs/submarine-sdk/README/index.html
index 671b0ab..8d0dfce 100644
--- a/docs/userDocs/submarine-sdk/README/index.html
+++ b/docs/userDocs/submarine-sdk/README/index.html
@@ -6,16 +6,16 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Submarine-SDK | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="0.6.0"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-0.6.0"><meta data-react-helmet="true" property="og:title" content="Submarine-SDK | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/userDocs/submarine-sdk/README"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/userDocs/submarine-sdk/README"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/58f10d9f.a5917f48.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/e235d551.56d51622.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/58f10d9f.87a860a5.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/e235d551.050d5dc9.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -23,15 +23,15 @@
 add tracking/metrics and view tracking/metrics from Submarine Workbench UI.</p></li></ul></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/submarine-sdk/README.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"></div><div class="pagination-nav__item pagination-nav__item--next"></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#summary" class="table-of-contents__link">Summary</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/58f10d9f.a5917f48.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/e235d551.56d51622.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/58f10d9f.87a860a5.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/e235d551.050d5dc9.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/userDocs/submarine-sdk/experiment-client/index.html b/docs/userDocs/submarine-sdk/experiment-client/index.html
index 3a41132..c4f0eed 100644
--- a/docs/userDocs/submarine-sdk/experiment-client/index.html
+++ b/docs/userDocs/submarine-sdk/experiment-client/index.html
@@ -6,16 +6,16 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Experiment Client | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="0.6.0"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-0.6.0"><meta data-react-helmet="true" property="og:title" content="Experiment Client | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/userDocs/submarine-sdk/experiment-client"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/userDocs/submarine-sdk/experiment-client"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/58f10d9f.a5917f48.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/fc109cd1.44d81630.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/58f10d9f.87a860a5.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/fc109cd1.206f096b.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -23,15 +23,15 @@
 By default print all the logs of Pod.</p><blockquote><p><strong>Parameters</strong></p><ul><li><strong>id</strong>: Submarine experiment id.</li><li><strong>onlyMaster</strong>: By default include pod log of &quot;master&quot; which might be Tensorflow PS/Chief or PyTorch master.</li></ul></blockquote><blockquote><p><strong>Return</strong></p><ul><li>The info of pod logs</li></ul></blockquote><p>Example</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-python codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">client</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token plain">get_log</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_1626160071451_0009&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="list_logstatus-str---listdict"></a><code>list_log(status: str) -&gt; list[dict]</code><a class="hash-link" href="#list_logstatus-str---listdict" title="Direct link to heading">#</a></h3><p>List experiment log.</p><blockquote><p><strong>Parameters</strong></p><ul><li><strong>status</strong>: Accepted, Created, Running, Succeeded, Deleted.</li></ul></blockquote><blockquote><p><strong>Returns</strong></p><ul><li>List of submarine experiment logs.</li></ul></blockquote><p>Example</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-python codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">logs </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> client</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token plain">list_log</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Succeeded&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="wait_for_finishid-str-polling_interval-optionalint10---dict"></a><code>wait_for_finish(id: str, polling_interval: Optional[int]=10) -&gt; dict</code><a class="hash-link" href="#wait_for_finishid-str-polling_interval-optionalint10---dict" title="Direct link to heading">#</a></h3><p>Waits until the experiment is finished or failed.</p><blockquote><p><strong>Parameters</strong></p><ul><li><strong>id</strong>: Submarine experiment id.</li><li><strong>polling_interval</strong>: How many seconds between two polls for the status of the experiment.</li></ul></blockquote><blockquote><p><strong>Returns</strong></p><ul><li>Submarine experiment logs.</li></ul></blockquote><p>Example</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-python codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">logs </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> client</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token plain">wait_for_finish</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;experiment_1626160071451_0009&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">5</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/submarine-sdk/experiment-client.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/userDocs/api/notebook"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Notebook REST API</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/userDocs/submarine-sdk/model-client"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Model Client »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#class-experimentclient" class="table-of-contents__link">class ExperimentClient()</a><ul><li><a href="#create_experimentexperiment_spec-json---dict" class="table-of-contents__link"><code>create_experiment(experiment_spec: json) -&gt; dict</code></a></li><li><a href="#patch_experimentid-str-experiment_spec-json---dict" class="table-of-contents__link"><code>patch_experiment(id: str, experiment_spec: json) -&gt; dict</code></a></li><li><a href="#get_experimentid-str---dict" class="table-of-contents__link"><code>get_experiment(id: str) -&gt; dict</code></a></li><li><a href="#list_experimentsstatus-optionalstrnone---listdict" class="table-of-contents__link"><code>list_experiments(status: Optional[str]=None) -&gt; list[dict]</code></a></li><li><a href="#delete_experimentid-str---dict" class="table-of-contents__link"><code>delete_experiment(id: str) -&gt; dict</code></a></li><li><a href="#get_logid-str-onlymaster-optionalboolfalse---none" class="table-of-contents__link"><code>get_log(id: str, onlyMaster: Optional[bool]=False) -&gt; None</code></a></li><li><a href="#list_logstatus-str---listdict" class="table-of-contents__link"><code>list_log(status: str) -&gt; list[dict]</code></a></li><li><a href="#wait_for_finishid-str-polling_interval-optionalint10---dict" class="table-of-contents__link"><code>wait_for_finish(id: str, polling_interval: Optional[int]=10) -&gt; dict</code></a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/58f10d9f.a5917f48.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/fc109cd1.44d81630.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/58f10d9f.87a860a5.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/fc109cd1.206f096b.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/userDocs/submarine-sdk/model-client/index.html b/docs/userDocs/submarine-sdk/model-client/index.html
index ae64882..726de7a 100644
--- a/docs/userDocs/submarine-sdk/model-client/index.html
+++ b/docs/userDocs/submarine-sdk/model-client/index.html
@@ -6,16 +6,16 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Model Client | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="0.6.0"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-0.6.0"><meta data-react-helmet="true" property="og:title" content="Model Client | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/userDocs/submarine-sdk/model-client"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/userDocs/submarine-sdk/model-client"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/58f10d9f.a5917f48.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/a8c4e132.f3a754af.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/58f10d9f.87a860a5.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/a8c4e132.fa55c01a.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -29,15 +29,15 @@
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">modelClient </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> ModelsClient</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token keyword" style="font-style:italic">with</span><span class="token plain"> modelClient</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token plain">start</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">as</span><span class="token plain"> run</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  modelClient</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token plain">log_metrics</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">metrics</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="beta-modelsclientsave_modelself-model_type-model-artifact_path-registered_model_namenone"></a><code>(Beta) ModelsClient.save_model(self, model_type, model, artifact_path, registered_model_name=None)</code><a class="hash-link" href="#beta-modelsclientsave_modelself-model_type-model-artifact_path-registered_model_namenone" title="Direct link to heading">#</a></h3><p>Save model to model registry.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="beta-modelsclientload_modelself-name-version-mlflowpyfuncpyfuncmodel"></a><code>(Beta) ModelsClient.load_model(self, name, version)-&gt;mlflow.pyfunc.PyFuncModel</code><a class="hash-link" href="#beta-modelsclientload_modelself-name-version-mlflowpyfuncpyfuncmodel" title="Direct link to heading">#</a></h3><p>Load a model from model registry.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="beta-modelsclientupdate_modelself-name-new_name-none"></a><code>(Beta) ModelsClient.update_model(self, name, new_name)-&gt;None</code><a class="hash-link" href="#beta-modelsclientupdate_modelself-name-new_name-none" title="Direct link to heading">#</a></h3><p>Update a model by new name.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="beta-modelsclientdelete_modelself-name-version-none"></a><code>(Beta) ModelsClient.delete_model(self, name, version)-&gt;None</code><a class="hash-link" href="#beta-modelsclientdelete_modelself-name-version-none" title="Direct link to heading">#</a></h3><p>Delete a model in model registry.</p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/submarine-sdk/model-client.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/userDocs/submarine-sdk/experiment-client"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Experiment Client</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/userDocs/submarine-sdk/tracking"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Tracking »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#class-modelclient" class="table-of-contents__link">class ModelClient()</a><ul><li><a href="#modelsclienttracking_urinone-registry_urinone-modelsclient" class="table-of-contents__link"><code>ModelsClient(tracking_uri=None, registry_uri=None)-&gt;ModelsClient</code></a></li><li><a href="#modelsclientstart-active-run" class="table-of-contents__link"><code>ModelsClient.start()-&gt;[Active Run]</code></a></li><li><a href="#modelsclientlog_paramkey-value-none" class="table-of-contents__link"><code>ModelsClient.log_param(key, value)-&gt;None</code></a></li><li><a href="#modelsclientlog_paramsparams-none" class="table-of-contents__link"><code>ModelsClient.log_params(params)-&gt;None</code></a></li><li><a href="#modelsclientlog_metricself-key-value-stepnone-none" class="table-of-contents__link"><code>ModelsClient.log_metric(self, key, value, step=None)-&gt;None</code></a></li><li><a href="#modelsclientlog_metricsself-metrics-stepnone-none" class="table-of-contents__link"><code>ModelsClient.log_metrics(self, metrics, step=None)-&gt;None</code></a></li><li><a href="#beta-modelsclientsave_modelself-model_type-model-artifact_path-registered_model_namenone" class="table-of-contents__link"><code>(Beta) ModelsClient.save_model(self, model_type, model, artifact_path, registered_model_name=None)</code></a></li><li><a href="#beta-modelsclientload_modelself-name-version-mlflowpyfuncpyfuncmodel" class="table-of-contents__link"><code>(Beta) ModelsClient.load_model(self, name, version)-&gt;mlflow.pyfunc.PyFuncModel</code></a></li><li><a href="#beta-modelsclientupdate_modelself-name-new_name-none" class="table-of-contents__link"><code>(Beta) ModelsClient.update_model(self, name, new_name)-&gt;None</code></a></li><li><a href="#beta-modelsclientdelete_modelself-name-version-none" class="table-of-contents__link"><code>(Beta) ModelsClient.delete_model(self, name, version)-&gt;None</code></a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/58f10d9f.a5917f48.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/a8c4e132.f3a754af.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/58f10d9f.87a860a5.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/a8c4e132.fa55c01a.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/userDocs/submarine-sdk/pysubmarine/development/index.html b/docs/userDocs/submarine-sdk/pysubmarine/development/index.html
index 8b48c74..bb420d5 100644
--- a/docs/userDocs/submarine-sdk/pysubmarine/development/index.html
+++ b/docs/userDocs/submarine-sdk/pysubmarine/development/index.html
@@ -6,16 +6,16 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Python SDK Development | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="0.6.0"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-0.6.0"><meta data-react-helmet="true" property="og:title" content="Python SDK Development | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!---"><meta data-react-helmet="true" property="og:description" content="&lt;!---"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/userDocs/submarine-sdk/pysubmarine/development"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/userDocs/submarine-sdk/pysubmarine/development"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/58f10d9f.a5917f48.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/fe5a2634.78b6a4ff.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/58f10d9f.87a860a5.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/fe5a2634.5756be1c.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -34,15 +34,15 @@
 in your local directory</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">python setup.py bdist_wheel</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><ol start="4"><li>Upload python package to TestPyPI for testing</li></ol><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">python -m twine upload --repository testpypi dist/*</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><ol start="5"><li>Upload python package to PyPi</li></ol><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">python -m twine upload --repository-url https://upload.pypi.org/legacy/ dist/*</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/submarine-sdk/pysubmarine/development.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"></div><div class="pagination-nav__item pagination-nav__item--next"></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#prerequisites" class="table-of-contents__link">Prerequisites</a></li><li><a href="#pysubmarine-docker" class="table-of-contents__link">PySubmarine Docker</a></li><li><a href="#coding-style" class="table-of-contents__link">Coding Style</a></li><li><a href="#unit-testing" class="table-of-contents__link">Unit Testing</a></li><li><a href="#generate-python-sdk-from-swagger" class="table-of-contents__link">Generate python SDK from swagger</a></li><li><a href="#model-management-model-development" class="table-of-contents__link">Model Management Model Development</a></li><li><a href="#upload-package-to-pypi" class="table-of-contents__link">Upload package to PyPi</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/58f10d9f.a5917f48.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/fe5a2634.78b6a4ff.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/58f10d9f.87a860a5.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/fe5a2634.5756be1c.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/userDocs/submarine-sdk/tracking/index.html b/docs/userDocs/submarine-sdk/tracking/index.html
index 76f8ba2..2d0d31b 100644
--- a/docs/userDocs/submarine-sdk/tracking/index.html
+++ b/docs/userDocs/submarine-sdk/tracking/index.html
@@ -6,16 +6,16 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Tracking | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="0.6.0"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-0.6.0"><meta data-react-helmet="true" property="og:title" content="Tracking | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/userDocs/submarine-sdk/tracking"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/userDocs/submarine-sdk/tracking"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/58f10d9f.a5917f48.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/2bab9bf0.891248b4.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/58f10d9f.87a860a5.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/2bab9bf0.bb5d412b.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -26,15 +26,15 @@
 More detail : <a href="https://docs.sqlalchemy.org/en/latest/core/engines.html#database-urls" target="_blank" rel="noopener noreferrer">SQLAlchemy docs</a></li></ul></blockquote><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="submarinelog_paramkey-str-value-str---none"></a><code>submarine.log_param(key: str, value: str) -&gt; None</code><a class="hash-link" href="#submarinelog_paramkey-str-value-str---none" title="Direct link to heading">#</a></h3><p>log a single key-value parameter. The key and value are both strings.</p><blockquote><p><strong>Parameters</strong></p><ul><li><strong>key</strong> - Parameter name.</li><li><strong>value</strong> - Parameter value.</li></ul></blockquote><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="submarinelog_metrickey-str-value-float-step0---none"></a><code>submarine.log_metric(key: str, value: float, step=0) -&gt; None</code><a class="hash-link" href="#submarinelog_metrickey-str-value-float-step0---none" title="Direct link to heading">#</a></h3><p>log a single key-value metric. The value must always be a number.</p><blockquote><p><strong>Parameters</strong></p><ul><li><strong>key</strong> - Metric name.</li><li><strong>value</strong> - Metric value.</li><li><strong>step</strong> - A single integer step at which to log the specified Metrics, by default it&#x27;s 0.</li></ul></blockquote></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/submarine-sdk/tracking.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/userDocs/submarine-sdk/model-client"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Model Client</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/userDocs/submarine-security/spark-security/README"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Submarine Spark Security Plugin »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#functions" class="table-of-contents__link">Functions</a><ul><li><a href="#submarineget_tracking_uri---str" class="table-of-contents__link"><code>submarine.get_tracking_uri() -&gt; str</code></a></li><li><a href="#submarineset_tracking_uriuri-str---none" class="table-of-contents__link"><code>submarine.set_tracking_uri(uri: str) -&gt; None</code></a></li><li><a href="#submarinelog_paramkey-str-value-str---none" class="table-of-contents__link"><code>submarine.log_param(key: str, value: str) -&gt; None</code></a></li><li><a href="#submarinelog_metrickey-str-value-float-step0---none" class="table-of-contents__link"><code>submarine.log_metric(key: str, value: float, step=0) -&gt; None</code></a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/58f10d9f.a5917f48.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/2bab9bf0.891248b4.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/58f10d9f.87a860a5.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/2bab9bf0.bb5d412b.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/userDocs/submarine-security/spark-security/README/index.html b/docs/userDocs/submarine-security/spark-security/README/index.html
index d8f2873..dc26f23 100644
--- a/docs/userDocs/submarine-security/spark-security/README/index.html
+++ b/docs/userDocs/submarine-security/spark-security/README/index.html
@@ -6,16 +6,16 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Submarine Spark Security Plugin | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="0.6.0"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-0.6.0"><meta data-react-helmet="true" property="og:title" content="Submarine Spark Security Plugin | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/userDocs/submarine-security/spark-security/README"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/userDocs/submarine-security/spark-security/README"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/58f10d9f.a5917f48.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/d2a03af7.c7f3811a.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/58f10d9f.87a860a5.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/d2a03af7.100b4d05.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -45,15 +45,15 @@
 extra functions.</p><table><thead><tr><th>option</th><th>authorization</th><th>row filtering</th><th>data masking</th></tr></thead><tbody><tr><td>org.apache.submarine.spark.security.api.RangerSparkAuthzExtension</td><td>√</td><td>×</td><td>×</td></tr><tr><td>org.apache.submarine.spark.security.api.RangerSparkSQLExtension</td><td>√</td><td>√</td><td>√</td></tr></tbody></table></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/submarine-security/spark-security/README.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/userDocs/submarine-sdk/tracking"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Tracking</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Building Submarine Spark Security Plugin »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#build" class="table-of-contents__link">Build</a></li><li><a href="#quick-start" class="table-of-contents__link">Quick Start</a><ul><li><a href="#installation" class="table-of-contents__link">Installation</a></li><li><a href="#configurations" class="table-of-contents__link">Configurations</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/58f10d9f.a5917f48.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/d2a03af7.c7f3811a.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/58f10d9f.87a860a5.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/d2a03af7.100b4d05.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin/index.html b/docs/userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin/index.html
index 2017c21..1bad46b 100644
--- a/docs/userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin/index.html
+++ b/docs/userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin/index.html
@@ -6,31 +6,31 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Building Submarine Spark Security Plugin | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="0.6.0"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-0.6.0"><meta data-react-helmet="true" property="og:title" content="Building Submarine Spark Security Plugin | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/58f10d9f.a5917f48.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/5de1a2b0.1a1b3b5b.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/58f10d9f.87a860a5.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/5de1a2b0.6d503cf4.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link navbar__link--active" href="/docs/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/">0.6.0</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/next/">master 🏃</a></li><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/">master 🏃</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Getting Started</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/gettingStarted/quickstart">Quickstart</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/gettingStarted/notebook">Jupyter Notebook</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">User Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">API documentation</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/api/experiment">Experiment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/api/environment">Environment REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/api/experiment-template">Experiment Template REST API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/api/notebook">Notebook REST API</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Submarine SDK</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/submarine-sdk/experiment-client">Experiment Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/submarine-sdk/model-client">Model Client</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/submarine-sdk/tracking">Tracking</a></li></ul></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!" tabindex="0">Submarine Security</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/userDocs/submarine-security/spark-security/README">Submarine Spark Security Plugin</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin">Building Submarine Spark Security Plugin</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="0">Others</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/others/mlflow">MLflow UI</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/userDocs/others/tensorboard">Tensorboard</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Administrator Docs</a><ul class="menu__list"><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine on Yarn</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/adminDocs/yarn/README">Running Submarine on YARN</a></li></ul></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Developer Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/README">Project Architecture</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/Dependencies">Dependencies for Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/BuildFromCode">How to Build Submarine</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/Development">Development Guide</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/IntegrationTestK8s">How to Run Integration K8s Test</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/devDocs/IntegrationTestE2E">How to Run Frontend Integration Test</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/community/README">Apache Submarine Community</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/community/HowToCommit">Guide for Apache Submarine Committers</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/community/contributing">How To Contribute to Submarine</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/architecture-and-requirements">Architecture and Requirment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/implementation-notes">Implementation Notes</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/environments-implementation">Environments Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/experiment-implementation">Experiment Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/notebook-implementation">Notebook Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/storage-implementation">Storage Implementation</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">Submarine Server</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/submarine-server/architecture">Submarine Server Implementation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/submarine-server/experimentSpec">Generic Expeiment Spec</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!" tabindex="-1">WIP Design Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/wip-designs/submarine-launcher">Submarine Launcher</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/wip-designs/submarine-clusterServer">Cluster Server Design - High-Availability</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/designDocs/wip-designs/security-implementation">Security Implementation</a></li></ul></li></ul></li></ul></div></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: 0.6.0</span></div><header><h1 class="docTitle_Oumm">Building Submarine Spark Security Plugin</h1></header><div class="markdown"><p>Submarine Spark Security Plugin is built using <a href="http://maven.apache.org" target="_blank" rel="noopener noreferrer">Apache Maven</a>. To build it, <code>cd</code> to the root direct of submarine project and run:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">mvn clean package -Dmaven.javadoc.skip</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">true -DskipTests -pl :submarine-spark-security</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>By default, Submarine Spark Security Plugin is built against Apache Spark <code>2.3.x</code> and Apache Ranger <code>1.1.0</code>, which may be incompatible with other Apache Spark or Apache Ranger releases.</p><p>Currently, available profiles are:</p><p><strong>Spark</strong>: <code>-Pspark-2.3</code>, <code>-Pspark-2.4</code>, <code>-Pspark-3.0</code></p><p><strong>Ranger</strong>: <code>-Pranger-1.2</code>, <code>-Pranger-2.0</code></p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/userDocs/submarine-security/spark-security/README"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Submarine Spark Security Plugin</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/userDocs/others/mlflow"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">MLflow UI »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/58f10d9f.a5917f48.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/5de1a2b0.1a1b3b5b.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/58f10d9f.87a860a5.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/5de1a2b0.6d503cf4.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/userDocs/yarn/Dockerfiles/index.html b/docs/userDocs/yarn/Dockerfiles/index.html
index a6c8138..c3ef51a 100644
--- a/docs/userDocs/yarn/Dockerfiles/index.html
+++ b/docs/userDocs/yarn/Dockerfiles/index.html
@@ -6,31 +6,31 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Write Dockerfiles for Submarine | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="0.6.0"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-0.6.0"><meta data-react-helmet="true" property="og:title" content="Write Dockerfiles for Submarine | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/userDocs/yarn/Dockerfiles"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/userDocs/yarn/Dockerfiles"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/58f10d9f.a5917f48.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/0b49bfb5.4330d396.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/58f10d9f.87a860a5.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/0b49bfb5.22ff41c8.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link" href="/docs/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/api/environment">API</a><a class="navbar__item navbar__link navbar__link--active" href="/docs/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/">0.6.0</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/next/userDocs/yarn/Dockerfiles">master 🏃</a></li><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/userDocs/yarn/Dockerfiles">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/userDocs/yarn/Dockerfiles">master 🏃</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/userDocs/yarn/Dockerfiles">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: 0.6.0</span></div><header><h1 class="docTitle_Oumm">Write Dockerfiles for Submarine</h1></header><div class="markdown"><p><a href="/docs/userDocs/yarn/WriteDockerfileTF">How to write Dockerfile for Submarine TensorFlow jobs</a></p><p><a href="/docs/userDocs/yarn/WriteDockerfilePT">How to write Dockerfile for Submarine PyTorch jobs</a></p><p><a href="/docs/userDocs/yarn/WriteDockerfileMX">How to write Dockerfile for Submarine MXNet jobs</a></p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/yarn/Dockerfiles.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"></div><div class="pagination-nav__item pagination-nav__item--next"></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link" href="/docs/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/api/environment">API</a><a class="navbar__item navbar__link navbar__link--active" href="/docs/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/">0.6.0</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/next/">master 🏃</a></li><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/userDocs/yarn/Dockerfiles">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/">master 🏃</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/userDocs/yarn/Dockerfiles">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: 0.6.0</span></div><header><h1 class="docTitle_Oumm">Write Dockerfiles for Submarine</h1></header><div class="markdown"><p><a href="/docs/userDocs/yarn/WriteDockerfileTF">How to write Dockerfile for Submarine TensorFlow jobs</a></p><p><a href="/docs/userDocs/yarn/WriteDockerfilePT">How to write Dockerfile for Submarine PyTorch jobs</a></p><p><a href="/docs/userDocs/yarn/WriteDockerfileMX">How to write Dockerfile for Submarine MXNet jobs</a></p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/yarn/Dockerfiles.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"></div><div class="pagination-nav__item pagination-nav__item--next"></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/58f10d9f.a5917f48.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/0b49bfb5.4330d396.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/58f10d9f.87a860a5.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/0b49bfb5.22ff41c8.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/userDocs/yarn/TestAndTroubleshooting/index.html b/docs/userDocs/yarn/TestAndTroubleshooting/index.html
index 862b987..9ab15fc 100644
--- a/docs/userDocs/yarn/TestAndTroubleshooting/index.html
+++ b/docs/userDocs/yarn/TestAndTroubleshooting/index.html
@@ -6,20 +6,20 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Test and Troubleshooting | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="0.6.0"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-0.6.0"><meta data-react-helmet="true" property="og:title" content="Test and Troubleshooting | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/userDocs/yarn/TestAndTroubleshooting"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/userDocs/yarn/TestAndTroubleshooting"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/58f10d9f.a5917f48.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/380d7376.48f32eaf.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/58f10d9f.87a860a5.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/380d7376.c239ca64.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link" href="/docs/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/api/environment">API</a><a class="navbar__item navbar__link navbar__link--active" href="/docs/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/">0.6.0</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/next/userDocs/yarn/TestAndTroubleshooting">master 🏃</a></li><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/userDocs/yarn/TestAndTroubleshooting">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/userDocs/yarn/TestAndTroubleshooting">master 🏃</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/userDocs/yarn/TestAndTroubleshooting">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: 0.6.0</span></div><header><h1 class="docTitle_Oumm">Test and Troubleshooting</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="test-with-a-tensorflow-job"></a>Test with a tensorflow job<a class="hash-link" href="#test-with-a-tensorflow-job" title="Direct link to heading">#</a></h2><p>Distributed-shell + GPU + cgroup</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">..</span><span class="token plain">. </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> job run </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --env </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">DOCKER_JAVA_HOME</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">/opt/java </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --env </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">DOCKER_HADOOP_HDFS_HOME</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">/hadoop-current --name distributed-tf-gpu </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --env </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">YARN_CONTAINER_RUNTIME_DOCKER_CONTAINER_NETWORK</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">calico-network </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --worker_docker_image tf-1.13.1-gpu:0.0.1 </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --ps_docker_image tf-1.13.1-cpu:0.0.1 </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --input_path hdfs://</span><span class="token variable" style="color:rgb(191, 199, 213)">${dfs_name_service}</span><span class="token plain">/tmp/cifar-10-data </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --checkpoint_path hdfs://</span><span class="token variable" style="color:rgb(191, 199, 213)">${dfs_name_service}</span><span class="token plain">/user/hadoop/tf-distributed-checkpoint </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --num_ps </span><span class="token number" style="color:rgb(247, 140, 108)">0</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --ps_resources </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">memory</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">4G,vcores</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token number" style="color:rgb(247, 140, 108)">2</span><span class="token plain">,gpu</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token number" style="color:rgb(247, 140, 108)">0</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --ps_launch_cmd </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /test/cifar10_estimator/cifar10_main.py --data-dir=hdfs://</span><span class="token string variable" style="color:rgb(191, 199, 213)">${dfs_name_service}</span><span class="token string" style="color:rgb(195, 232, 141)">/tmp/cifar-10-data --job-dir=hdfs://</span><span class="token string variable" style="color:rgb(191, 199, 213)">${dfs_name_service}</span><span class="token string" style="color:rgb(195, 232, 141)">/tmp/cifar-10-jobdir --num-gpus=0&quot;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --worker_resources </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">memory</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">4G,vcores</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token number" style="color:rgb(247, 140, 108)">2</span><span class="token plain">,gpu</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token plain"> --verbose </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --num_workers </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --worker_launch_cmd </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /test/cifar10_estimator/cifar10_main.py --data-dir=hdfs://</span><span class="token string variable" style="color:rgb(191, 199, 213)">${dfs_name_service}</span><span class="token string" style="color:rgb(195, 232, 141)">/tmp/cifar-10-data --job-dir=hdfs://</span><span class="token string variable" style="color:rgb(191, 199, 213)">${dfs_name_service}</span><span class="token string" style="color:rgb(195, 232, 141)">/tmp/cifar-10-jobdir --train-steps=500 --eval-batch-size=16 --train-batch-size=16 --sync --num-gpus=1&quot;</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="issues"></a>Issues:<a class="hash-link" href="#issues" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="issue-1-fail-to-start-nodemanager-after-system-reboot"></a>Issue 1: Fail to start nodemanager after system reboot<a class="hash-link" href="#issue-1-fail-to-start-nodemanager-after-system-reboot" title="Direct link to heading">#</a></h3><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">2018-09-20 18:54:39,785 ERROR org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor: Failed to bootstrap configured resource subsystems!</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.ResourceHandlerException: Unexpected: Cannot create yarn cgroup Subsystem:cpu Mount points:/proc/mounts User:yarn Path:/sys/fs/cgroup/cpu,cpuacct/hadoop-yarn</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsHandlerImpl.initializePreMountedCGroupController(CGroupsHandlerImpl.java:425)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsHandlerImpl.initializeCGroupController(CGroupsHandlerImpl.java:377)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsCpuResourceHandlerImpl.bootstrap(CGroupsCpuResourceHandlerImpl.java:98)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsCpuResourceHandlerImpl.bootstrap(CGroupsCpuResourceHandlerImpl.java:87)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.ResourceHandlerChain.bootstrap(ResourceHandlerChain.java:58)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor.init(LinuxContainerExecutor.java:320)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.yarn.server.nodemanager.NodeManager.serviceInit(NodeManager.java:389)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.service.AbstractService.init(AbstractService.java:164)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.yarn.server.nodemanager.NodeManager.initAndStartNodeManager(NodeManager.java:929)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.yarn.server.nodemanager.NodeManager.main(NodeManager.java:997)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2018-09-20 18:54:39,789 INFO org.apache.hadoop.service.AbstractService: Service NodeManager failed in state INITED</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Solution: Grant user yarn the access to  <code>/sys/fs/cgroup/cpu,cpuacct</code>, which is the subfolder of cgroup mount destination.</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">chown :yarn -R /sys/fs/cgroup/cpu,cpuacct</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">chmod g+rwx -R /sys/fs/cgroup/cpu,cpuacct</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>If GPUs are used,the access to cgroup devices folder is neede as well</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">chown :yarn -R /sys/fs/cgroup/devices</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">chmod g+rwx -R /sys/fs/cgroup/devices</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="issue-2-container-executor-permission-denied"></a>Issue 2: container-executor permission denied<a class="hash-link" href="#issue-2-container-executor-permission-denied" title="Direct link to heading">#</a></h3><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">2018-09-21 09:36:26,102 WARN org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.privileged.PrivilegedOperationExecutor: IOException executing command:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">java.io.IOException: Cannot run program &quot;/etc/yarn/sbin/Linux-amd64-64/container-executor&quot;: error=13, Permission denied</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        at org.apache.hadoop.util.Shell.runCommand(Shell.java:938)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        at org.apache.hadoop.util.Shell.run(Shell.java:901)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:1213)</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Solution: The permission of <code>/etc/yarn/sbin/Linux-amd64-64/container-executor</code> should be 6050</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="issue-3:how-to-get-docker-service-log"></a>Issue 3:How to get docker service log<a class="hash-link" href="#issue-3:how-to-get-docker-service-log" title="Direct link to heading">#</a></h3><p>Solution: we can get docker log with the following command</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">journalctl -u docker</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="issue-4:docker-cant-remove-containers-with-errors-like-device-or-resource-busy"></a>Issue 4:docker can&#x27;t remove containers with errors like <code>device or resource busy</code><a class="hash-link" href="#issue-4:docker-cant-remove-containers-with-errors-like-device-or-resource-busy" title="Direct link to heading">#</a></h3><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">$ docker </span><span class="token function" style="color:rgb(130, 170, 255)">rm</span><span class="token plain"> 0bfafa146431</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Error response from daemon: Unable to remove filesystem </span><span class="token keyword" style="font-style:italic">for</span><span class="token plain"> 0bfafa146431771f6024dcb9775ef47f170edb2f1852f71916ba44209ca6120a: remove /app/docker/containers/0bfafa146431771f6024dcb9775ef47f170edb2f152f71916ba44209ca6120a/shm: device or resource busy</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Solution: to find which process leads to a <code>device or resource busy</code>, we can add a shell script, named <code>find-busy-mnt.sh</code></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token shebang important">#!/usr/bin/env bash</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link" href="/docs/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/api/environment">API</a><a class="navbar__item navbar__link navbar__link--active" href="/docs/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/">0.6.0</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/next/">master 🏃</a></li><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/userDocs/yarn/TestAndTroubleshooting">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/">master 🏃</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/userDocs/yarn/TestAndTroubleshooting">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: 0.6.0</span></div><header><h1 class="docTitle_Oumm">Test and Troubleshooting</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="test-with-a-tensorflow-job"></a>Test with a tensorflow job<a class="hash-link" href="#test-with-a-tensorflow-job" title="Direct link to heading">#</a></h2><p>Distributed-shell + GPU + cgroup</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">..</span><span class="token plain">. </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> job run </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --env </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">DOCKER_JAVA_HOME</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">/opt/java </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --env </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">DOCKER_HADOOP_HDFS_HOME</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">/hadoop-current --name distributed-tf-gpu </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --env </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">YARN_CONTAINER_RUNTIME_DOCKER_CONTAINER_NETWORK</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">calico-network </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --worker_docker_image tf-1.13.1-gpu:0.0.1 </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --ps_docker_image tf-1.13.1-cpu:0.0.1 </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --input_path hdfs://</span><span class="token variable" style="color:rgb(191, 199, 213)">${dfs_name_service}</span><span class="token plain">/tmp/cifar-10-data </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --checkpoint_path hdfs://</span><span class="token variable" style="color:rgb(191, 199, 213)">${dfs_name_service}</span><span class="token plain">/user/hadoop/tf-distributed-checkpoint </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --num_ps </span><span class="token number" style="color:rgb(247, 140, 108)">0</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --ps_resources </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">memory</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">4G,vcores</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token number" style="color:rgb(247, 140, 108)">2</span><span class="token plain">,gpu</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token number" style="color:rgb(247, 140, 108)">0</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --ps_launch_cmd </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /test/cifar10_estimator/cifar10_main.py --data-dir=hdfs://</span><span class="token string variable" style="color:rgb(191, 199, 213)">${dfs_name_service}</span><span class="token string" style="color:rgb(195, 232, 141)">/tmp/cifar-10-data --job-dir=hdfs://</span><span class="token string variable" style="color:rgb(191, 199, 213)">${dfs_name_service}</span><span class="token string" style="color:rgb(195, 232, 141)">/tmp/cifar-10-jobdir --num-gpus=0&quot;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --worker_resources </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">memory</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">4G,vcores</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token number" style="color:rgb(247, 140, 108)">2</span><span class="token plain">,gpu</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token plain"> --verbose </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --num_workers </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --worker_launch_cmd </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;python /test/cifar10_estimator/cifar10_main.py --data-dir=hdfs://</span><span class="token string variable" style="color:rgb(191, 199, 213)">${dfs_name_service}</span><span class="token string" style="color:rgb(195, 232, 141)">/tmp/cifar-10-data --job-dir=hdfs://</span><span class="token string variable" style="color:rgb(191, 199, 213)">${dfs_name_service}</span><span class="token string" style="color:rgb(195, 232, 141)">/tmp/cifar-10-jobdir --train-steps=500 --eval-batch-size=16 --train-batch-size=16 --sync --num-gpus=1&quot;</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="issues"></a>Issues:<a class="hash-link" href="#issues" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="issue-1-fail-to-start-nodemanager-after-system-reboot"></a>Issue 1: Fail to start nodemanager after system reboot<a class="hash-link" href="#issue-1-fail-to-start-nodemanager-after-system-reboot" title="Direct link to heading">#</a></h3><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">2018-09-20 18:54:39,785 ERROR org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor: Failed to bootstrap configured resource subsystems!</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.ResourceHandlerException: Unexpected: Cannot create yarn cgroup Subsystem:cpu Mount points:/proc/mounts User:yarn Path:/sys/fs/cgroup/cpu,cpuacct/hadoop-yarn</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsHandlerImpl.initializePreMountedCGroupController(CGroupsHandlerImpl.java:425)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsHandlerImpl.initializeCGroupController(CGroupsHandlerImpl.java:377)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsCpuResourceHandlerImpl.bootstrap(CGroupsCpuResourceHandlerImpl.java:98)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsCpuResourceHandlerImpl.bootstrap(CGroupsCpuResourceHandlerImpl.java:87)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.ResourceHandlerChain.bootstrap(ResourceHandlerChain.java:58)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor.init(LinuxContainerExecutor.java:320)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.yarn.server.nodemanager.NodeManager.serviceInit(NodeManager.java:389)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.service.AbstractService.init(AbstractService.java:164)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.yarn.server.nodemanager.NodeManager.initAndStartNodeManager(NodeManager.java:929)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  at org.apache.hadoop.yarn.server.nodemanager.NodeManager.main(NodeManager.java:997)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2018-09-20 18:54:39,789 INFO org.apache.hadoop.service.AbstractService: Service NodeManager failed in state INITED</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Solution: Grant user yarn the access to  <code>/sys/fs/cgroup/cpu,cpuacct</code>, which is the subfolder of cgroup mount destination.</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">chown :yarn -R /sys/fs/cgroup/cpu,cpuacct</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">chmod g+rwx -R /sys/fs/cgroup/cpu,cpuacct</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>If GPUs are used,the access to cgroup devices folder is neede as well</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">chown :yarn -R /sys/fs/cgroup/devices</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">chmod g+rwx -R /sys/fs/cgroup/devices</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="issue-2-container-executor-permission-denied"></a>Issue 2: container-executor permission denied<a class="hash-link" href="#issue-2-container-executor-permission-denied" title="Direct link to heading">#</a></h3><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">2018-09-21 09:36:26,102 WARN org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.privileged.PrivilegedOperationExecutor: IOException executing command:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">java.io.IOException: Cannot run program &quot;/etc/yarn/sbin/Linux-amd64-64/container-executor&quot;: error=13, Permission denied</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        at org.apache.hadoop.util.Shell.runCommand(Shell.java:938)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        at org.apache.hadoop.util.Shell.run(Shell.java:901)</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:1213)</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Solution: The permission of <code>/etc/yarn/sbin/Linux-amd64-64/container-executor</code> should be 6050</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="issue-3:how-to-get-docker-service-log"></a>Issue 3:How to get docker service log<a class="hash-link" href="#issue-3:how-to-get-docker-service-log" title="Direct link to heading">#</a></h3><p>Solution: we can get docker log with the following command</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">journalctl -u docker</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="issue-4:docker-cant-remove-containers-with-errors-like-device-or-resource-busy"></a>Issue 4:docker can&#x27;t remove containers with errors like <code>device or resource busy</code><a class="hash-link" href="#issue-4:docker-cant-remove-containers-with-errors-like-device-or-resource-busy" title="Direct link to heading">#</a></h3><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">$ docker </span><span class="token function" style="color:rgb(130, 170, 255)">rm</span><span class="token plain"> 0bfafa146431</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Error response from daemon: Unable to remove filesystem </span><span class="token keyword" style="font-style:italic">for</span><span class="token plain"> 0bfafa146431771f6024dcb9775ef47f170edb2f1852f71916ba44209ca6120a: remove /app/docker/containers/0bfafa146431771f6024dcb9775ef47f170edb2f152f71916ba44209ca6120a/shm: device or resource busy</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Solution: to find which process leads to a <code>device or resource busy</code>, we can add a shell script, named <code>find-busy-mnt.sh</code></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token shebang important">#!/usr/bin/env bash</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># A simple script to get information about mount points and pids and their</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># mount namespaces.</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token keyword" style="font-style:italic">if</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain"> </span><span class="token variable" style="color:rgb(191, 199, 213)">$#</span><span class="token plain"> -ne </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">;</span><span class="token keyword" style="font-style:italic">then</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">echo</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;Usage: </span><span class="token string variable" style="color:rgb(191, 199, 213)">$0</span><span class="token string" style="color:rgb(195, 232, 141)"> &lt;devicemapper-device-id&gt;&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">exit</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token keyword" style="font-style:italic">fi</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">ID</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token variable" style="color:rgb(191, 199, 213)">$1</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
@@ -28,15 +28,15 @@
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">printf</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;PID</span><span class="token string entity" style="color:rgb(195, 232, 141)">\t</span><span class="token string" style="color:rgb(195, 232, 141)">NAME</span><span class="token string entity" style="color:rgb(195, 232, 141)">\t</span><span class="token string entity" style="color:rgb(195, 232, 141)">\t</span><span class="token string" style="color:rgb(195, 232, 141)">MNTNS</span><span class="token string entity" style="color:rgb(195, 232, 141)">\n</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">echo</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token string variable" style="color:rgb(191, 199, 213)">$MOUNTS</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">|</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">while</span><span class="token plain"> </span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">read</span><span class="token plain"> LINE</span><span class="token punctuation" style="color:rgb(199, 146, 234)">;</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">do</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">PID</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token variable" style="color:rgb(191, 199, 213)">`</span><span class="token variable builtin class-name" style="color:rgb(255, 203, 107)">echo</span><span class="token variable" style="color:rgb(191, 199, 213)"> $LINE </span><span class="token variable operator" style="color:rgb(137, 221, 255)">|</span><span class="token variable" style="color:rgb(191, 199, 213)"> </span><span class="token variable function" style="color:rgb(130, 170, 255)">cut</span><span class="token variable" style="color:rgb(191, 199, 213)"> -d </span><span class="token variable string" style="color:rgb(195, 232, 141)">&quot;:&quot;</span><span class="token variable" style="color:rgb(191, 199, 213)"> -f1 </span><span class="token variable operator" style="color:rgb(137, 221, 255)">|</span><span class="token variable" style="color:rgb(191, 199, 213)"> </span><span class="token variable function" style="color:rgb(130, 170, 255)">cut</span><span class="token variable" style="color:rgb(191, 199, 213)"> -d </span><span class="token variable string" style="color:rgb(195, 232, 141)">&quot;/&quot;</span><span class="token variable" style="color:rgb(191, 199, 213)"> -f3</span><span class="token variable" style="color:rgb(191, 199, 213)">`</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Ignore self and thread-self</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token keyword" style="font-style:italic">if</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token string variable" style="color:rgb(191, 199, 213)">$PID</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">==</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;self&quot;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">||</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token string variable" style="color:rgb(191, 199, 213)">$PID</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">==</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;thread-self&quot;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token punctuation" style="color:rgb(199, 146, 234)">;</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">then</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">continue</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token keyword" style="font-style:italic">fi</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">NAME</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token variable" style="color:rgb(191, 199, 213)">`</span><span class="token variable function" style="color:rgb(130, 170, 255)">ps</span><span class="token variable" style="color:rgb(191, 199, 213)"> -q $PID -o </span><span class="token variable assign-left variable" style="color:rgb(191, 199, 213)">comm</span><span class="token variable operator" style="color:rgb(137, 221, 255)">=</span><span class="token variable" style="color:rgb(191, 199, 213)">`</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">MNTNS</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token variable" style="color:rgb(191, 199, 213)">`</span><span class="token variable" style="color:rgb(191, 199, 213)">readlink /proc/$PID/ns/mnt</span><span class="token variable" style="color:rgb(191, 199, 213)">`</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">printf</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;%s</span><span class="token string entity" style="color:rgb(195, 232, 141)">\t</span><span class="token string" style="color:rgb(195, 232, 141)">%s</span><span class="token string entity" style="color:rgb(195, 232, 141)">\t</span><span class="token string entity" style="color:rgb(195, 232, 141)">\t</span><span class="token string" style="color:rgb(195, 232, 141)">%s</span><span class="token string entity" style="color:rgb(195, 232, 141)">\n</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token string variable" style="color:rgb(191, 199, 213)">$PID</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token string variable" style="color:rgb(191, 199, 213)">$NAME</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token string variable" style="color:rgb(191, 199, 213)">$MNTNS</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token keyword" style="font-style:italic">done</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Kill the process by pid, which is found by the script</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-bash codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">$ </span><span class="token function" style="color:rgb(130, 170, 255)">chmod</span><span class="token plain"> +x find-busy-mnt.sh</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">./find-busy-mnt.sh 0bfafa146431771f6024dcb9775ef47f170edb2f152f71916ba44209ca6120a</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># PID   NAME            MNTNS</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># 5007  ntpd            mnt:[4026533598]</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">$ </span><span class="token function" style="color:rgb(130, 170, 255)">kill</span><span class="token plain"> -9 </span><span class="token number" style="color:rgb(247, 140, 108)">5007</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="issue-5:yarn-failed-to-start-containers"></a>Issue 5:Yarn failed to start containers<a class="hash-link" href="#issue-5:yarn-failed-to-start-containers" title="Direct link to heading">#</a></h3><p>if the number of GPUs required by applications is larger than the number of GPUs in the cluster, there would be some containers can&#x27;t be created.</p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/yarn/TestAndTroubleshooting.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"></div><div class="pagination-nav__item pagination-nav__item--next"></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#test-with-a-tensorflow-job" class="table-of-contents__link">Test with a tensorflow job</a></li><li><a href="#issues" class="table-of-contents__link">Issues:</a><ul><li><a href="#issue-1-fail-to-start-nodemanager-after-system-reboot" class="table-of-contents__link">Issue 1: Fail to start nodemanager after system reboot</a></li><li><a href="#issue-2-container-executor-permission-denied" class="table-of-contents__link">Issue 2: container-executor permission denied</a></li><li><a href="#issue-3:how-to-get-docker-service-log" class="table-of-contents__link">Issue 3:How to get docker service log</a></li><li><a href="#issue-4:docker-cant-remove-containers-with-errors-like-device-or-resource-busy" class="table-of-contents__link">Issue 4:docker can&#39;t remove containers with errors like <code>device or resource busy</code></a></li><li><a href="#issue-5:yarn-failed-to-start-containers" class="table-of-contents__link">Issue 5:Yarn failed to start containers</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/58f10d9f.a5917f48.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/380d7376.48f32eaf.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/58f10d9f.87a860a5.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/380d7376.c239ca64.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/userDocs/yarn/WriteDockerfileMX/index.html b/docs/userDocs/yarn/WriteDockerfileMX/index.html
index 0ac36ab..504a9d2 100644
--- a/docs/userDocs/yarn/WriteDockerfileMX/index.html
+++ b/docs/userDocs/yarn/WriteDockerfileMX/index.html
@@ -6,20 +6,20 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Docker Images for MXNet | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="0.6.0"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-0.6.0"><meta data-react-helmet="true" property="og:title" content="Docker Images for MXNet | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/userDocs/yarn/WriteDockerfileMX"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/userDocs/yarn/WriteDockerfileMX"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/58f10d9f.a5917f48.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/cbc53c13.83471bd3.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/58f10d9f.87a860a5.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/cbc53c13.c80ea8ce.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link" href="/docs/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/api/environment">API</a><a class="navbar__item navbar__link navbar__link--active" href="/docs/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/">0.6.0</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/next/userDocs/yarn/WriteDockerfileMX">master 🏃</a></li><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/userDocs/yarn/WriteDockerfileMX">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/userDocs/yarn/WriteDockerfileMX">master 🏃</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/userDocs/yarn/WriteDockerfileMX">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: 0.6.0</span></div><header><h1 class="docTitle_Oumm">Docker Images for MXNet</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="how-to-create-docker-images-to-run-mxnet-on-yarn"></a>How to create docker images to run MXNet on YARN<a class="hash-link" href="#how-to-create-docker-images-to-run-mxnet-on-yarn" title="Direct link to heading">#</a></h2><p>Dockerfile to run MXNet on YARN needs two parts:</p><p><strong>Base libraries which MXNet depends on</strong></p><p>1) OS base image, for example <code>ubuntu:18.04</code></p><p>2) MXNet dependent libraries and packages. \
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link" href="/docs/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/api/environment">API</a><a class="navbar__item navbar__link navbar__link--active" href="/docs/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/">0.6.0</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/next/">master 🏃</a></li><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/userDocs/yarn/WriteDockerfileMX">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/">master 🏃</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/userDocs/yarn/WriteDockerfileMX">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: 0.6.0</span></div><header><h1 class="docTitle_Oumm">Docker Images for MXNet</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="how-to-create-docker-images-to-run-mxnet-on-yarn"></a>How to create docker images to run MXNet on YARN<a class="hash-link" href="#how-to-create-docker-images-to-run-mxnet-on-yarn" title="Direct link to heading">#</a></h2><p>Dockerfile to run MXNet on YARN needs two parts:</p><p><strong>Base libraries which MXNet depends on</strong></p><p>1) OS base image, for example <code>ubuntu:18.04</code></p><p>2) MXNet dependent libraries and packages. \
 For example <code>python</code>, <code>scipy</code>. For GPU support, you also need <code>cuda</code>, <code>cudnn</code>, etc.</p><p>3) MXNet package.</p><p><strong>Libraries to access HDFS</strong></p><p>1) JDK</p><p>2) Hadoop</p><p>Here&#x27;s an example of a base image (without GPU support) to install MXNet:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-shell codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">FROM ubuntu:18.04</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Install some development tools and packages</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># MXNet 1.6 is going to be the last MXNet release to support Python2</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">RUN </span><span class="token function" style="color:rgb(130, 170, 255)">apt-get</span><span class="token plain"> update </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">DEBIAN_FRONTEND</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">noninteractive </span><span class="token function" style="color:rgb(130, 170, 255)">apt-get</span><span class="token plain"> </span><span class="token function" style="color:rgb(130, 170, 255)">install</span><span class="token plain"> -y tzdata </span><span class="token function" style="color:rgb(130, 170, 255)">git</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token function" style="color:rgb(130, 170, 255)">wget</span><span class="token plain"> </span><span class="token function" style="color:rgb(130, 170, 255)">zip</span><span class="token plain"> python3 python3-pip python3-distutils libgomp1 libopenblas-dev libopencv-dev</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Install latest MXNet using pip (without GPU support)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">RUN pip3 </span><span class="token function" style="color:rgb(130, 170, 255)">install</span><span class="token plain"> mxnet</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
@@ -28,15 +28,15 @@
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">RUN </span><span class="token function" style="color:rgb(130, 170, 255)">tar</span><span class="token plain"> zxf hadoop-</span><span class="token variable" style="color:rgb(191, 199, 213)">${HADOOP_VERSION}</span><span class="token plain">.tar.gz</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">RUN </span><span class="token function" style="color:rgb(130, 170, 255)">ln</span><span class="token plain"> -s hadoop-</span><span class="token variable" style="color:rgb(191, 199, 213)">${HADOOP_VERSION}</span><span class="token plain"> hadoop-current</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">RUN </span><span class="token function" style="color:rgb(130, 170, 255)">rm</span><span class="token plain"> hadoop-</span><span class="token variable" style="color:rgb(191, 199, 213)">${HADOOP_VERSION}</span><span class="token plain">.tar.gz</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Build and push to your own docker registry: Use <code>docker build ... </code> and <code>docker push ...</code> to finish this step.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="use-examples-to-build-your-own-mxnet-docker-images"></a>Use examples to build your own MXNet docker images<a class="hash-link" href="#use-examples-to-build-your-own-mxnet-docker-images" title="Direct link to heading">#</a></h2><p>We provided some example Dockerfiles for you to build your own MXNet docker images.</p><p>For latest MXNet</p><ul><li><em>docker/mxnet/base/ubuntu-18.04/Dockerfile.cpu.mxnet_latest</em>: Latest MXNet that supports CPU</li><li><em>docker/mxnet/base/ubuntu-18.04/Dockerfile.gpu.mxnet_latest</em>: Latest MXNet that supports GPU, which is prebuilt to CUDA10.</li></ul><h1><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="build-docker-images"></a>Build Docker images<a class="hash-link" href="#build-docker-images" title="Direct link to heading">#</a></h1><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="manually-build-docker-image"></a>Manually build Docker image:<a class="hash-link" href="#manually-build-docker-image" title="Direct link to heading">#</a></h3><p>Under <code>docker/mxnet</code> directory, run <code>build-all.sh</code> to build all Docker images. This command will build the following Docker images:</p><ul><li><code>mxnet-latest-cpu-base:0.0.1</code> for base Docker image which includes Hadoop, MXNet</li><li><code>mxnet-latest-gpu-base:0.0.1</code> for base Docker image which includes Hadoop, MXNet, GPU base libraries.</li></ul></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/yarn/WriteDockerfileMX.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"></div><div class="pagination-nav__item pagination-nav__item--next"></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#how-to-create-docker-images-to-run-mxnet-on-yarn" class="table-of-contents__link">How to create docker images to run MXNet on YARN</a></li><li><a href="#use-examples-to-build-your-own-mxnet-docker-images" class="table-of-contents__link">Use examples to build your own MXNet docker images</a><ul><li><a href="#manually-build-docker-image" class="table-of-contents__link">Manually build Docker image:</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/58f10d9f.a5917f48.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/cbc53c13.83471bd3.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/58f10d9f.87a860a5.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/cbc53c13.c80ea8ce.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/userDocs/yarn/WriteDockerfilePT/index.html b/docs/userDocs/yarn/WriteDockerfilePT/index.html
index 860e6c2..0711e82 100644
--- a/docs/userDocs/yarn/WriteDockerfilePT/index.html
+++ b/docs/userDocs/yarn/WriteDockerfilePT/index.html
@@ -6,20 +6,20 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Docker Images for PyTorch | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="0.6.0"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-0.6.0"><meta data-react-helmet="true" property="og:title" content="Docker Images for PyTorch | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/userDocs/yarn/WriteDockerfilePT"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/userDocs/yarn/WriteDockerfilePT"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/58f10d9f.a5917f48.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/51b2b2c4.18ceaaaa.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/58f10d9f.87a860a5.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/51b2b2c4.ccc68cb9.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link" href="/docs/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/api/environment">API</a><a class="navbar__item navbar__link navbar__link--active" href="/docs/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/">0.6.0</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/next/userDocs/yarn/WriteDockerfilePT">master 🏃</a></li><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/userDocs/yarn/WriteDockerfilePT">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/userDocs/yarn/WriteDockerfilePT">master 🏃</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/userDocs/yarn/WriteDockerfilePT">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: 0.6.0</span></div><header><h1 class="docTitle_Oumm">Docker Images for PyTorch</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="how-to-create-docker-images-to-run-pytorch-on-yarn"></a>How to create docker images to run PyTorch on YARN<a class="hash-link" href="#how-to-create-docker-images-to-run-pytorch-on-yarn" title="Direct link to heading">#</a></h2><p>Dockerfile to run PyTorch on YARN needs two parts:</p><p><strong>Base libraries which PyTorch depends on</strong></p><p>1) OS base image, for example <code>ubuntu:18.04</code></p><p>2) PyTorch dependent libraries and packages. For example <code>python</code>, <code>scipy</code>. For GPU support, you also need <code>cuda</code>, <code>cudnn</code>, etc.</p><p>3) PyTorch package.</p><p><strong>Libraries to access HDFS</strong></p><p>1) JDK</p><p>2) Hadoop</p><p>Here&#x27;s an example of a base image (with GPU support) to install PyTorch:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-shell codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">FROM nvidia/cuda:10.0-cudnn7-devel-ubuntu18.04</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">ARG </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">PYTHON_VERSION</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token number" style="color:rgb(247, 140, 108)">3.6</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">RUN </span><span class="token function" style="color:rgb(130, 170, 255)">apt-get</span><span class="token plain"> update </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token function" style="color:rgb(130, 170, 255)">apt-get</span><span class="token plain"> </span><span class="token function" style="color:rgb(130, 170, 255)">install</span><span class="token plain"> -y --no-install-recommends </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         build-essential </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         cmake </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token function" style="color:rgb(130, 170, 255)">git</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token function" style="color:rgb(130, 170, 255)">curl</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token function" style="color:rgb(130, 170, 255)">vim</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         ca-certificates </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         libjpeg-dev </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         libpng-dev </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token function" style="color:rgb(130, 170, 255)">wget</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">     </span><span class="token function" style="color:rgb(130, 170, 255)">rm</span><span class="token plain"> -rf /var/lib/apt/lists/*</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link" href="/docs/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/api/environment">API</a><a class="navbar__item navbar__link navbar__link--active" href="/docs/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/">0.6.0</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/next/">master 🏃</a></li><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/userDocs/yarn/WriteDockerfilePT">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/">master 🏃</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/userDocs/yarn/WriteDockerfilePT">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: 0.6.0</span></div><header><h1 class="docTitle_Oumm">Docker Images for PyTorch</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="how-to-create-docker-images-to-run-pytorch-on-yarn"></a>How to create docker images to run PyTorch on YARN<a class="hash-link" href="#how-to-create-docker-images-to-run-pytorch-on-yarn" title="Direct link to heading">#</a></h2><p>Dockerfile to run PyTorch on YARN needs two parts:</p><p><strong>Base libraries which PyTorch depends on</strong></p><p>1) OS base image, for example <code>ubuntu:18.04</code></p><p>2) PyTorch dependent libraries and packages. For example <code>python</code>, <code>scipy</code>. For GPU support, you also need <code>cuda</code>, <code>cudnn</code>, etc.</p><p>3) PyTorch package.</p><p><strong>Libraries to access HDFS</strong></p><p>1) JDK</p><p>2) Hadoop</p><p>Here&#x27;s an example of a base image (with GPU support) to install PyTorch:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-shell codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">FROM nvidia/cuda:10.0-cudnn7-devel-ubuntu18.04</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">ARG </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">PYTHON_VERSION</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token number" style="color:rgb(247, 140, 108)">3.6</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">RUN </span><span class="token function" style="color:rgb(130, 170, 255)">apt-get</span><span class="token plain"> update </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token function" style="color:rgb(130, 170, 255)">apt-get</span><span class="token plain"> </span><span class="token function" style="color:rgb(130, 170, 255)">install</span><span class="token plain"> -y --no-install-recommends </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         build-essential </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         cmake </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token function" style="color:rgb(130, 170, 255)">git</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token function" style="color:rgb(130, 170, 255)">curl</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token function" style="color:rgb(130, 170, 255)">vim</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         ca-certificates </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         libjpeg-dev </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         libpng-dev </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">         </span><span class="token function" style="color:rgb(130, 170, 255)">wget</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">     </span><span class="token function" style="color:rgb(130, 170, 255)">rm</span><span class="token plain"> -rf /var/lib/apt/lists/*</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">RUN </span><span class="token function" style="color:rgb(130, 170, 255)">curl</span><span class="token plain"> -o ~/miniconda.sh -O  https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh  </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">     </span><span class="token function" style="color:rgb(130, 170, 255)">chmod</span><span class="token plain"> +x ~/miniconda.sh </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">     ~/miniconda.sh -b -p /opt/conda </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">     </span><span class="token function" style="color:rgb(130, 170, 255)">rm</span><span class="token plain"> ~/miniconda.sh </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">     /opt/conda/bin/conda </span><span class="token function" style="color:rgb(130, 170, 255)">install</span><span class="token plain"> -y </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">python</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token variable" style="color:rgb(191, 199, 213)">$PYTHON_VERSION</span><span class="token plain"> numpy pyyaml scipy ipython mkl mkl-include cython typing </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">     /opt/conda/bin/conda </span><span class="token function" style="color:rgb(130, 170, 255)">install</span><span class="token plain"> -y -c pytorch magma-cuda100 </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">     /opt/conda/bin/conda clean -ya</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">ENV </span><span class="token environment constant" style="color:rgb(130, 170, 255)">PATH</span><span class="token plain"> /opt/conda/bin:</span><span class="token environment constant" style="color:rgb(130, 170, 255)">$PATH</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">RUN pip </span><span class="token function" style="color:rgb(130, 170, 255)">install</span><span class="token plain"> ninja</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># This must be done before pip so that requirements.txt is available</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">WORKDIR /opt/pytorch</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">RUN </span><span class="token function" style="color:rgb(130, 170, 255)">git</span><span class="token plain"> clone https://github.com/pytorch/pytorch.git</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">WORKDIR pytorch</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">RUN </span><span class="token function" style="color:rgb(130, 170, 255)">git</span><span class="token plain"> submodule update --init</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">RUN </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">TORCH_CUDA_ARCH_LIST</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;3.5 5.2 6.0 6.1 7.0+PTX&quot;</span><span class="token plain"> </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">TORCH_NVCC_FLAGS</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;-Xfatbin -compress-all&quot;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">CMAKE_PREFIX_PATH</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token string" style="color:rgb(195, 232, 141)">&quot;</span><span class="token string variable" style="color:rgb(191, 199, 213)">$(</span><span class="token string variable function" style="color:rgb(130, 170, 255)">dirname</span><span class="token string variable" style="color:rgb(191, 199, 213)"> </span><span class="token string variable punctuation" style="color:rgb(199, 146, 234)">$(</span><span class="token string variable" style="color:rgb(191, 199, 213)">which conda</span><span class="token string variable punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token string variable" style="color:rgb(191, 199, 213)">)</span><span class="token string" style="color:rgb(195, 232, 141)">/../&quot;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    pip </span><span class="token function" style="color:rgb(130, 170, 255)">install</span><span class="token plain"> -v </span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">.</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">WORKDIR /opt/pytorch</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">RUN </span><span class="token function" style="color:rgb(130, 170, 255)">git</span><span class="token plain"> clone https://github.com/pytorch/vision.git </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">cd</span><span class="token plain"> vision </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> pip </span><span class="token function" style="color:rgb(130, 170, 255)">install</span><span class="token plain"> -v </span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">.</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
@@ -27,15 +27,15 @@
 You can also use prebuilt images for convenience:</p><ul><li>hadoopsubmarine/pytorch-latest-gpu-base:0.0.1</li></ul></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/yarn/WriteDockerfilePT.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"></div><div class="pagination-nav__item pagination-nav__item--next"></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#how-to-create-docker-images-to-run-pytorch-on-yarn" class="table-of-contents__link">How to create docker images to run PyTorch on YARN</a></li><li><a href="#use-examples-to-build-your-own-pytorch-docker-images" class="table-of-contents__link">Use examples to build your own PyTorch docker images</a></li><li><a href="#build-docker-images" class="table-of-contents__link">Build Docker images</a><ul><li><a href="#manually-build-docker-image" class="table-of-contents__link">Manually build Docker image:</a></li><li><a href="#use-prebuilt-images" class="table-of-contents__link">Use prebuilt images</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/58f10d9f.a5917f48.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/51b2b2c4.18ceaaaa.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/58f10d9f.87a860a5.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/51b2b2c4.ccc68cb9.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/userDocs/yarn/WriteDockerfileTF/index.html b/docs/userDocs/yarn/WriteDockerfileTF/index.html
index 4b8d110..56fc6b1 100644
--- a/docs/userDocs/yarn/WriteDockerfileTF/index.html
+++ b/docs/userDocs/yarn/WriteDockerfileTF/index.html
@@ -6,20 +6,20 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Docker Images for TensorFlow | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="0.6.0"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-0.6.0"><meta data-react-helmet="true" property="og:title" content="Docker Images for TensorFlow | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/userDocs/yarn/WriteDockerfileTF"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/userDocs/yarn/WriteDockerfileTF"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/58f10d9f.a5917f48.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/781c7eda.1741f324.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/58f10d9f.87a860a5.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/781c7eda.0ccfe196.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link" href="/docs/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/api/environment">API</a><a class="navbar__item navbar__link navbar__link--active" href="/docs/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/">0.6.0</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/next/userDocs/yarn/WriteDockerfileTF">master 🏃</a></li><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/userDocs/yarn/WriteDockerfileTF">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/userDocs/yarn/WriteDockerfileTF">master 🏃</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/userDocs/yarn/WriteDockerfileTF">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: 0.6.0</span></div><header><h1 class="docTitle_Oumm">Docker Images for TensorFlow</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="how-to-create-docker-images-to-run-tensorflow-on-yarn"></a>How to create docker images to run Tensorflow on YARN<a class="hash-link" href="#how-to-create-docker-images-to-run-tensorflow-on-yarn" title="Direct link to heading">#</a></h2><p>Dockerfile to run Tensorflow on YARN need two part:</p><p><strong>Base libraries which Tensorflow depends on</strong></p><p>1) OS base image, for example <code>ubuntu:18.04</code></p><p>2) Tensorflow depended libraries and packages. For example <code>python</code>, <code>scipy</code>. For GPU support, need <code>cuda</code>, <code>cudnn</code>, etc.</p><p>3) Tensorflow package.</p><p><strong>Libraries to access HDFS</strong></p><p>1) JDK</p><p>2) Hadoop</p><p>Here&#x27;s an example of a base image (w/o GPU support) to install Tensorflow:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-shell codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">FROM ubuntu:18.04</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link" href="/docs/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/api/environment">API</a><a class="navbar__item navbar__link navbar__link--active" href="/docs/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/">0.6.0</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/next/">master 🏃</a></li><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/userDocs/yarn/WriteDockerfileTF">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/">master 🏃</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/userDocs/yarn/WriteDockerfileTF">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: 0.6.0</span></div><header><h1 class="docTitle_Oumm">Docker Images for TensorFlow</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="how-to-create-docker-images-to-run-tensorflow-on-yarn"></a>How to create docker images to run Tensorflow on YARN<a class="hash-link" href="#how-to-create-docker-images-to-run-tensorflow-on-yarn" title="Direct link to heading">#</a></h2><p>Dockerfile to run Tensorflow on YARN need two part:</p><p><strong>Base libraries which Tensorflow depends on</strong></p><p>1) OS base image, for example <code>ubuntu:18.04</code></p><p>2) Tensorflow depended libraries and packages. For example <code>python</code>, <code>scipy</code>. For GPU support, need <code>cuda</code>, <code>cudnn</code>, etc.</p><p>3) Tensorflow package.</p><p><strong>Libraries to access HDFS</strong></p><p>1) JDK</p><p>2) Hadoop</p><p>Here&#x27;s an example of a base image (w/o GPU support) to install Tensorflow:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-shell codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">FROM ubuntu:18.04</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Pick up some TF dependencies</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">RUN </span><span class="token function" style="color:rgb(130, 170, 255)">apt-get</span><span class="token plain"> update </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token function" style="color:rgb(130, 170, 255)">apt-get</span><span class="token plain"> </span><span class="token function" style="color:rgb(130, 170, 255)">install</span><span class="token plain"> -y --no-install-recommends </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        build-essential </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token function" style="color:rgb(130, 170, 255)">curl</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        libfreetype6-dev </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        libpng-dev </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        libzmq3-dev </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        pkg-config </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        python </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        python-dev </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token function" style="color:rgb(130, 170, 255)">rsync</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        software-properties-common </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token function" style="color:rgb(130, 170, 255)">unzip</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">        </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token function" style="color:rgb(130, 170, 255)">apt-get</span><span class="token plain"> clean </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token function" style="color:rgb(130, 170, 255)">rm</span><span class="token plain"> -rf /var/lib/apt/lists/*</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">RUN </span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">export</span><span class="token plain"> </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">DEBIAN_FRONTEND</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">noninteractive </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token function" style="color:rgb(130, 170, 255)">apt-get</span><span class="token plain"> update </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token function" style="color:rgb(130, 170, 255)">apt-get</span><span class="token plain"> </span><span class="token function" style="color:rgb(130, 170, 255)">install</span><span class="token plain"> -yq krb5-user libpam-krb5 </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token function" style="color:rgb(130, 170, 255)">apt-get</span><span class="token plain"> clean</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">RUN </span><span class="token function" style="color:rgb(130, 170, 255)">curl</span><span class="token plain"> -O https://bootstrap.pypa.io/get-pip.py </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    python get-pip.py </span><span class="token operator" style="color:rgb(137, 221, 255)">&amp;&amp;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token function" style="color:rgb(130, 170, 255)">rm</span><span class="token plain"> get-pip.py</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
@@ -28,15 +28,15 @@
 You can also use prebuilt images for convenience:</p><ul><li>hadoopsubmarine/tf-1.13.1-gpu:0.0.1</li><li>hadoopsubmarine/tf-1.13.1-cpu:0.0.1</li></ul></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/yarn/WriteDockerfileTF.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"></div><div class="pagination-nav__item pagination-nav__item--next"></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#how-to-create-docker-images-to-run-tensorflow-on-yarn" class="table-of-contents__link">How to create docker images to run Tensorflow on YARN</a></li><li><a href="#use-examples-to-build-your-own-tensorflow-docker-images" class="table-of-contents__link">Use examples to build your own Tensorflow docker images</a></li><li><a href="#build-docker-images" class="table-of-contents__link">Build Docker images</a><ul><li><a href="#manually-build-docker-image" class="table-of-contents__link">Manually build Docker image:</a></li><li><a href="#use-prebuilt-images" class="table-of-contents__link">Use prebuilt images</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/58f10d9f.a5917f48.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/781c7eda.1741f324.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/58f10d9f.87a860a5.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/781c7eda.0ccfe196.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/userDocs/yarn/YARNRuntimeGuide/index.html b/docs/userDocs/yarn/YARNRuntimeGuide/index.html
index adbc12f..b658eee 100644
--- a/docs/userDocs/yarn/YARNRuntimeGuide/index.html
+++ b/docs/userDocs/yarn/YARNRuntimeGuide/index.html
@@ -6,20 +6,20 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">YARN Runtime Quick Start Guide | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="0.6.0"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-0.6.0"><meta data-react-helmet="true" property="og:title" content="YARN Runtime Quick Start Guide | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/userDocs/yarn/YARNRuntimeGuide"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/userDocs/yarn/YARNRuntimeGuide"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/58f10d9f.a5917f48.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/27f12fe0.3aba8788.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/58f10d9f.87a860a5.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/27f12fe0.7cd2b4d7.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link" href="/docs/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/api/environment">API</a><a class="navbar__item navbar__link navbar__link--active" href="/docs/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/">0.6.0</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/next/userDocs/yarn/YARNRuntimeGuide">master 🏃</a></li><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/userDocs/yarn/YARNRuntimeGuide">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/userDocs/yarn/YARNRuntimeGuide">master 🏃</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/userDocs/yarn/YARNRuntimeGuide">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: 0.6.0</span></div><header><h1 class="docTitle_Oumm">YARN Runtime Quick Start Guide</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="prerequisite"></a>Prerequisite<a class="hash-link" href="#prerequisite" title="Direct link to heading">#</a></h2><p>Check out the <a href="/docs/adminDocs/yarn/README">Running Submarine on YARN</a></p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="build-your-own-docker-image"></a>Build your own Docker image<a class="hash-link" href="#build-your-own-docker-image" title="Direct link to heading">#</a></h2><p>When you follow the documents below, and want to build your own Docker image for Tensorflow/PyTorch/MXNet? Please check out <a href="/docs/userDocs/yarn/Dockerfiles">Build your Docker image</a> for more details.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="launch-tensorflow-application"></a>Launch TensorFlow Application:<a class="hash-link" href="#launch-tensorflow-application" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="without-docker"></a>Without Docker<a class="hash-link" href="#without-docker" title="Direct link to heading">#</a></h3><p>You need:</p><ul><li>Build a Python virtual environment with TensorFlow 1.13.1 installed</li><li>A cluster with Hadoop 2.9 or above.</li></ul><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="building-a-python-virtual-environment-with-tensorflow"></a>Building a Python virtual environment with TensorFlow<a class="hash-link" href="#building-a-python-virtual-environment-with-tensorflow" title="Direct link to heading">#</a></h3><p>TonY requires a Python virtual environment zip with TensorFlow and any needed Python libraries already installed.</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">wget https://files.pythonhosted.org/packages/33/bc/fa0b5347139cd9564f0d44ebd2b147ac97c36b2403943dbee8a25fd74012/virtualenv-16.0.0.tar.gz</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">tar xf virtualenv-16.0.0.tar.gz</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link" href="/docs/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/api/environment">API</a><a class="navbar__item navbar__link navbar__link--active" href="/docs/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/">0.6.0</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/next/">master 🏃</a></li><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/userDocs/yarn/YARNRuntimeGuide">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/">master 🏃</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/userDocs/yarn/YARNRuntimeGuide">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: 0.6.0</span></div><header><h1 class="docTitle_Oumm">YARN Runtime Quick Start Guide</h1></header><div class="markdown"><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="prerequisite"></a>Prerequisite<a class="hash-link" href="#prerequisite" title="Direct link to heading">#</a></h2><p>Check out the <a href="/docs/adminDocs/yarn/README">Running Submarine on YARN</a></p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="build-your-own-docker-image"></a>Build your own Docker image<a class="hash-link" href="#build-your-own-docker-image" title="Direct link to heading">#</a></h2><p>When you follow the documents below, and want to build your own Docker image for Tensorflow/PyTorch/MXNet? Please check out <a href="/docs/userDocs/yarn/Dockerfiles">Build your Docker image</a> for more details.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="launch-tensorflow-application"></a>Launch TensorFlow Application:<a class="hash-link" href="#launch-tensorflow-application" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="without-docker"></a>Without Docker<a class="hash-link" href="#without-docker" title="Direct link to heading">#</a></h3><p>You need:</p><ul><li>Build a Python virtual environment with TensorFlow 1.13.1 installed</li><li>A cluster with Hadoop 2.9 or above.</li></ul><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="building-a-python-virtual-environment-with-tensorflow"></a>Building a Python virtual environment with TensorFlow<a class="hash-link" href="#building-a-python-virtual-environment-with-tensorflow" title="Direct link to heading">#</a></h3><p>TonY requires a Python virtual environment zip with TensorFlow and any needed Python libraries already installed.</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">wget https://files.pythonhosted.org/packages/33/bc/fa0b5347139cd9564f0d44ebd2b147ac97c36b2403943dbee8a25fd74012/virtualenv-16.0.0.tar.gz</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">tar xf virtualenv-16.0.0.tar.gz</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"># Make sure to install using Python 3, as TensorFlow only provides Python 3 artifacts</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">python virtualenv-16.0.0/virtualenv.py venv</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">. venv/bin/activate</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">pip install tensorflow==1.13.1</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">zip -r myvenv.zip venv</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">deactivate</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>The above commands will produced a myvenv.zip and it will be used in below example. There&#x27;s no need to copy it to other nodes. And it is not needed when using Docker to run the job.</p><p><strong>Note:</strong> If you require a version of TensorFlow and TensorBoard prior to <code>1.13.1</code>, take a look at <a href="https://github.com/linkedin/TonY/issues/42" target="_blank" rel="noopener noreferrer">this</a> issue.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="get-the-training-examples"></a>Get the training examples<a class="hash-link" href="#get-the-training-examples" title="Direct link to heading">#</a></h3><p>Get mnist_distributed.py from <a href="https://github.com/linkedin/TonY/tree/master/tony-examples/mnist-tensorflow" target="_blank" rel="noopener noreferrer">https://github.com/linkedin/TonY/tree/master/tony-examples/mnist-tensorflow</a></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">SUBMARINE_VERSION=&lt;REPLACE_VERSION&gt;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">SUBMARINE_HADOOP_VERSION=3.1</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">CLASSPATH=$(hadoop classpath --glob):path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">java org.apache.submarine.client.cli.Cli job run --name tf-job-001 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --framework tensorflow \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --verbose \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --input_path &quot;&quot; \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --num_workers 2 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --worker_resources memory=1G,vcores=1 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --num_ps 1 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --ps_resources memory=1G,vcores=1 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --worker_launch_cmd &quot;myvenv.zip/venv/bin/python mnist_distributed.py --steps 2 --data_dir /tmp/data --working_dir /tmp/mode&quot; \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --ps_launch_cmd &quot;myvenv.zip/venv/bin/python mnist_distributed.py --steps 2 --data_dir /tmp/data --working_dir /tmp/mode&quot; \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --insecure \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --conf tony.containers.resources=path-to/myvenv.zip#archive,path-to/mnist_distributed.py,path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>You should then be able to see links and status of the jobs from command line:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">2019-04-22 20:30:42,611 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000003/pi status: RUNNING</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2019-04-22 20:30:42,612 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 1 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000004/pi status: RUNNING</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2019-04-22 20:30:42,612 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: ps index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000002/pi status: RUNNING</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2019-04-22 20:30:42,612 INFO tony.TonyClient: Logs for ps 0 at: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000002/pi</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2019-04-22 20:30:42,612 INFO tony.TonyClient: Logs for worker 0 at: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000003/pi</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2019-04-22 20:30:42,612 INFO tony.TonyClient: Logs for worker 1 at: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000004/pi</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2019-04-22 20:30:44,625 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: ps index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000002/pi status: FINISHED</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2019-04-22 20:30:44,625 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000003/pi status: FINISHED</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2019-04-22 20:30:44,626 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 1 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000004/pi status: FINISHED</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
 </span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="with-docker"></a>With Docker<a class="hash-link" href="#with-docker" title="Direct link to heading">#</a></h3><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">SUBMARINE_VERSION=&lt;REPLACE_VERSION&gt;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">SUBMARINE_HADOOP_VERSION=3.1</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">CLASSPATH=$(hadoop classpath --glob):path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">java org.apache.submarine.client.cli.Cli job run --name tf-job-001 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --framework tensorflow \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --docker_image hadoopsubmarine/tf-1.8.0-cpu:0.0.1 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --input_path hdfs://pi-aw:9000/dataset/cifar-10-data \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --worker_resources memory=3G,vcores=2 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --worker_launch_cmd &quot;export CLASSPATH=\$(/hadoop-3.1.0/bin/hadoop classpath --glob) &amp;&amp; cd /test/models/tutorials/image/cifar10_estimator &amp;&amp; python cifar10_main.py --data-dir=%input_path% --job-dir=%checkpoint_path% --train-steps=10000 --eval-batch-size=16 --train-batch-size=16 --variable-strategy=CPU --num-gpus=0 --sync&quot; \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --env JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --env DOCKER_HADOOP_HDFS_HOME=/hadoop-3.1.0 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --env DOCKER_JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --env HADOOP_HOME=/hadoop-3.1.0 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --env HADOOP_YARN_HOME=/hadoop-3.1.0 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --env HADOOP_COMMON_HOME=/hadoop-3.1.0 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --env HADOOP_HDFS_HOME=/hadoop-3.1.0 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --env HADOOP_CONF_DIR=/hadoop-3.1.0/etc/hadoop \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --conf tony.containers.resources=path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="notes"></a>Notes:<a class="hash-link" href="#notes" title="Direct link to heading">#</a></h4><p>1) <code>DOCKER_JAVA_HOME</code> points to JAVA_HOME inside Docker image.</p><p>2) <code>DOCKER_HADOOP_HDFS_HOME</code> points to HADOOP_HDFS_HOME inside Docker image.</p><p>We removed TonY submodule after applying <a href="https://issues.apache.org/jira/browse/SUBMARINE-371" target="_blank" rel="noopener noreferrer">SUBMARINE-371</a> and changed to use TonY dependency directly.</p><p>After Submarine v0.2.0, there is a uber jar <code>submarine-all-${SUBMARINE_VERSION}-hadoop-${HADOOP_VERSION}.jar</code> released together with
 the <code>submarine-core-${SUBMARINE_VERSION}.jar</code>, <code>submarine-yarnservice-runtime-${SUBMARINE_VERSION}.jar</code> and <code>submarine-tony-runtime-${SUBMARINE_VERSION}.jar</code>.</p><br><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="launch-pytorch-application"></a>Launch PyTorch Application:<a class="hash-link" href="#launch-pytorch-application" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="without-docker-1"></a>Without Docker<a class="hash-link" href="#without-docker-1" title="Direct link to heading">#</a></h3><p>You need:</p><ul><li>Build a Python virtual environment with PyTorch 0.4.0+ installed</li><li>A cluster with Hadoop 2.9 or above.</li></ul><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="building-a-python-virtual-environment-with-pytorch"></a>Building a Python virtual environment with PyTorch<a class="hash-link" href="#building-a-python-virtual-environment-with-pytorch" title="Direct link to heading">#</a></h3><p>TonY requires a Python virtual environment zip with PyTorch and any needed Python libraries already installed.</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">wget https://files.pythonhosted.org/packages/33/bc/fa0b5347139cd9564f0d44ebd2b147ac97c36b2403943dbee8a25fd74012/virtualenv-16.0.0.tar.gz</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">tar xf virtualenv-16.0.0.tar.gz</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block">
@@ -28,15 +28,15 @@
 </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">python virtualenv-16.0.0/virtualenv.py venv</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">. venv/bin/activate</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">pip install mxnet==1.5.1</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">zip -r myvenv.zip venv</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">deactivate</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="get-the-training-examples-2"></a>Get the training examples<a class="hash-link" href="#get-the-training-examples-2" title="Direct link to heading">#</a></h3><p>Get image_classification.py from this <a href="https://github.com/apache/submarine/blob/master/dev-support/mini-submarine/submarine/image_classification.py" target="_blank" rel="noopener noreferrer">link</a></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">SUBMARINE_VERSION=&lt;REPLACE_VERSION&gt;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">SUBMARINE_HADOOP_VERSION=3.1</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">CLASSPATH=$(hadoop classpath --glob):path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">java org.apache.submarine.client.cli.Cli job run --name MXNet-job-001 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --framework mxnet</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --input_path &quot;&quot; \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --num_workers 2 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --worker_resources memory=3G,vcores=2 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --worker_launch_cmd &quot;myvenv.zip/venv/bin/python image_classification.py --dataset cifar10 --model vgg11 --epochs 1 --kvstore dist_sync&quot; \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --num_ps 2 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --ps_resources memory=3G,vcores=2 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --ps_launch_cmd &quot;myvenv.zip/venv/bin/python image_classification.py --dataset cifar10 --model vgg11 --epochs 1 --kvstore dist_sync&quot; \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --num_schedulers=1 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --scheduler_resources memory=1G,vcores=1 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --scheduler_launch_cmd=&quot;myvenv.zip/venv/bin/python image_classification.py --dataset cifar10 --model vgg11 --epochs 1 --kvstore dist_sync&quot; \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --insecure \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --conf tony.containers.resources=path-to/myvenv.zip#archive,path-to/image_classification.py, \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>You should then be able to see links and status of the jobs from command line:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">2020-04-16 20:23:43,834 INFO tony.TonyClient: Task status updated: [TaskInfo] name: server, index: 1, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000004/pi status: RUNNING</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2020-04-16 20:23:43,834 INFO tony.TonyClient: Task status updated: [TaskInfo] name: server, index: 0, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000003/pi status: RUNNING</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2020-04-16 20:23:43,834 INFO tony.TonyClient: Task status updated: [TaskInfo] name: worker, index: 1, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000006/pi status: RUNNING</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2020-04-16 20:23:43,834 INFO tony.TonyClient: Task status updated: [TaskInfo] name: worker, index: 0, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000005/pi status: RUNNING</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2020-04-16 20:23:43,834 INFO tony.TonyClient: Task status updated: [TaskInfo] name: scheduler, index: 0, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000002/pi status: RUNNING</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2020-04-16 20:23:43,839 INFO tony.TonyClient: Logs for scheduler 0 at: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000002/pi</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2020-04-16 20:23:43,839 INFO tony.TonyClient: Logs for server 0 at: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000003/pi</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2020-04-16 20:23:43,840 INFO tony.TonyClient: Logs for server 1 at: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000004/pi</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2020-04-16 20:23:43,840 INFO tony.TonyClient: Logs for worker 0 at: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000005/pi</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2020-04-16 20:23:43,840 INFO tony.TonyClient: Logs for worker 1 at: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000006/pi</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2020-04-16 21:02:09,723 INFO tony.TonyClient: Task status updated: [TaskInfo] name: scheduler, index: 0, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000002/pi status: SUCCEEDED</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2020-04-16 21:02:09,736 INFO tony.TonyClient: Task status updated: [TaskInfo] name: worker, index: 0, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000005/pi status: SUCCEEDED</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2020-04-16 21:02:09,737 INFO tony.TonyClient: Task status updated: [TaskInfo] name: server, index: 1, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000004/pi status: SUCCEEDED</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2020-04-16 21:02:09,737 INFO tony.TonyClient: Task status updated: [TaskInfo] name: worker, index: 1, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000006/pi status: SUCCEEDED</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">2020-04-16 21:02:09,737 INFO tony.TonyClient: Task status updated: [TaskInfo] name: server, index: 0, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000003/pi status: SUCCEEDED</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="with-docker-2"></a>With Docker<a class="hash-link" href="#with-docker-2" title="Direct link to heading">#</a></h3><p>You could refer to this <a target="_blank" href="/assets/files/Dockerfile.cifar10.mx_1.5-cff207e9070bfca947922e0977637093.1">sample Dockerfile</a> for building your own Docker image.</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">SUBMARINE_VERSION=&lt;REPLACE_VERSION&gt;</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">SUBMARINE_HADOOP_VERSION=3.1</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">CLASSPATH=$(hadoop classpath --glob):path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">java org.apache.submarine.client.cli.Cli job run --name MXNet-job-001 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --framework mxnet</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --docker_image &lt;your_docker_image&gt; \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --input_path &quot;&quot; \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --num_schedulers 1 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --scheduler_resources memory=1G,vcores=1 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --scheduler_launch_cmd &quot;/usr/bin/python image_classification.py --dataset cifar10 --model vgg11 --epochs 1 --kvstore dist_sync&quot; \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --num_workers 2 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --worker_resources memory=2G,vcores=1 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --worker_launch_cmd &quot;/usr/bin/python image_classification.py --dataset cifar10 --model vgg11 --epochs 1 --kvstore dist_sync&quot; \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --num_ps 2 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --ps_resources memory=2G,vcores=1 \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --ps_launch_cmd &quot;/usr/bin/python image_classification.py --dataset cifar10 --model vgg11 --epochs 1 --kvstore dist_sync&quot; \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --verbose \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --insecure \</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> --conf tony.containers.resources=path-to/image_classification.py,path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="use-yarn-service-to-run-submarine-deprecated"></a>Use YARN Service to run Submarine: Deprecated<a class="hash-link" href="#use-yarn-service-to-run-submarine-deprecated" title="Direct link to heading">#</a></h2><p>Historically, Submarine supports to use <a href="https://hadoop.apache.org/docs/r3.1.0/hadoop-yarn/hadoop-yarn-site/yarn-service/Overview.html" target="_blank" rel="noopener noreferrer">YARN Service</a> to submit deep learning jobs. Now we stop supporting it because YARN service is not actively developed by community, and extra dependencies such as RegistryDNS/ATS-v2 causes lots of issues for setup.</p><p>As of now, you can still use YARN service to run Submarine, but code will be removed in the future release. We will only support use TonY when use Submarine on YARN.</p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/yarn/YARNRuntimeGuide.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"></div><div class="pagination-nav__item pagination-nav__item--next"></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#prerequisite" class="table-of-contents__link">Prerequisite</a></li><li><a href="#build-your-own-docker-image" class="table-of-contents__link">Build your own Docker image</a></li><li><a href="#launch-tensorflow-application" class="table-of-contents__link">Launch TensorFlow Application:</a><ul><li><a href="#without-docker" class="table-of-contents__link">Without Docker</a></li><li><a href="#building-a-python-virtual-environment-with-tensorflow" class="table-of-contents__link">Building a Python virtual environment with TensorFlow</a></li><li><a href="#get-the-training-examples" class="table-of-contents__link">Get the training examples</a></li><li><a href="#with-docker" class="table-of-contents__link">With Docker</a></li></ul></li><li><a href="#launch-pytorch-application" class="table-of-contents__link">Launch PyTorch Application:</a><ul><li><a href="#without-docker-1" class="table-of-contents__link">Without Docker</a></li><li><a href="#building-a-python-virtual-environment-with-pytorch" class="table-of-contents__link">Building a Python virtual environment with PyTorch</a></li><li><a href="#get-the-training-examples-1" class="table-of-contents__link">Get the training examples</a></li><li><a href="#with-docker-1" class="table-of-contents__link">With Docker</a></li></ul></li><li><a href="#launch-mxnet-application" class="table-of-contents__link">Launch MXNet Application:</a><ul><li><a href="#without-docker-2" class="table-of-contents__link">Without Docker</a></li><li><a href="#building-a-python-virtual-environment-with-mxnet" class="table-of-contents__link">Building a Python virtual environment with MXNet</a></li><li><a href="#get-the-training-examples-2" class="table-of-contents__link">Get the training examples</a></li><li><a href="#with-docker-2" class="table-of-contents__link">With Docker</a></li></ul></li><li><a href="#use-yarn-service-to-run-submarine-deprecated" class="table-of-contents__link">Use YARN Service to run Submarine: Deprecated</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/58f10d9f.a5917f48.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/27f12fe0.3aba8788.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/58f10d9f.87a860a5.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/27f12fe0.7cd2b4d7.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README/index.html b/docs/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README/index.html
index 45412ed..146d405 100644
--- a/docs/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README/index.html
+++ b/docs/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README/index.html
@@ -6,20 +6,20 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">README | Apache Submarine</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_version" content="0.6.0"><meta data-react-helmet="true" name="docusaurus_tag" content="docs-default-0.6.0"><meta data-react-helmet="true" property="og:title" content="README | Apache Submarine"><meta data-react-helmet="true" name="description" content="&lt;!--"><meta data-react-helmet="true" property="og:description" content="&lt;!--"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//docs/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//docs/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/1f391b9e.fee84980.js" as="script">
-<link rel="preload" href="/143.a1031c43.js" as="script">
-<link rel="preload" href="/58f10d9f.a5917f48.js" as="script">
-<link rel="preload" href="/17896441.57b41a63.js" as="script">
-<link rel="preload" href="/ab130550.1ab1e613.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/1f391b9e.f22e8160.js" as="script">
+<link rel="preload" href="/128.10c43f42.js" as="script">
+<link rel="preload" href="/58f10d9f.87a860a5.js" as="script">
+<link rel="preload" href="/17896441.be8f95bf.js" as="script">
+<link rel="preload" href="/ab130550.f5d8809e.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link" href="/docs/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/api/environment">API</a><a class="navbar__item navbar__link navbar__link--active" href="/docs/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/">0.6.0</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/next/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README">master 🏃</a></li><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README">master 🏃</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: 0.6.0</span></div><header><h1 class="docTitle_Oumm">README</h1></header><div class="markdown"><p>(Copied from <a href="https://github.com/tensorflow/models/tree/master/tutorials/image/cifar10_estimator" target="_blank" rel="noopener noreferrer">https://github.com/tensorflow/models/tree/master/tutorials/image/cifar10_estimator</a>)</p><p>CIFAR-10 is a common benchmark in machine learning for image recognition.</p><p><a href="http://www.cs.toronto.edu/~kriz/cifar.html" target="_blank" rel="noopener noreferrer">http://www.cs.toronto.edu/~kriz/cifar.html</a></p><p>Code in this directory focuses on how to use TensorFlow Estimators to train and
+<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link" href="/docs/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/api/environment">API</a><a class="navbar__item navbar__link navbar__link--active" href="/docs/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/">0.6.0</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/next/">master 🏃</a></li><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link navbar__link--active" href="/docs/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/">master 🏃</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/docs/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="docItemContainer_a7m4"><article><div><span class="badge badge--secondary">Version: 0.6.0</span></div><header><h1 class="docTitle_Oumm">README</h1></header><div class="markdown"><p>(Copied from <a href="https://github.com/tensorflow/models/tree/master/tutorials/image/cifar10_estimator" target="_blank" rel="noopener noreferrer">https://github.com/tensorflow/models/tree/master/tutorials/image/cifar10_estimator</a>)</p><p>CIFAR-10 is a common benchmark in machine learning for image recognition.</p><p><a href="http://www.cs.toronto.edu/~kriz/cifar.html" target="_blank" rel="noopener noreferrer">http://www.cs.toronto.edu/~kriz/cifar.html</a></p><p>Code in this directory focuses on how to use TensorFlow Estimators to train and
 evaluate a CIFAR-10 ResNet model on:</p><ul><li>A single host with one CPU;</li><li>A single host with multiple GPUs;</li><li>Multiple hosts with CPU or multiple GPUs;</li></ul><p>Before trying to run the model we highly encourage you to read all the README.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="prerequisite"></a>Prerequisite<a class="hash-link" href="#prerequisite" title="Direct link to heading">#</a></h2><ol><li><p><a href="https://www.tensorflow.org/install/" target="_blank" rel="noopener noreferrer">Install</a> TensorFlow version 1.2.1 or
 later.</p></li><li><p>Download the CIFAR-10 dataset and generate TFRecord files using the provided
 script.  The script and associated command below will download the CIFAR-10
@@ -70,15 +70,15 @@
 similar to:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-python codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">File </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cifar10_main.py&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> line </span><span class="token number" style="color:rgb(247, 140, 108)">538</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">in</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">&lt;</span><span class="token plain">module</span><span class="token operator" style="color:rgb(137, 221, 255)">&gt;</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    tf</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token plain">app</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token plain">run</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">File </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;/usr/local/lib/python2.7/dist-packages/tensorflow/python/platform/app.py&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> line </span><span class="token number" style="color:rgb(247, 140, 108)">48</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">in</span><span class="token plain"> run</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    _sys</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token plain">exit</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">main</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">_sys</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token plain">argv</span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">+</span><span class="token plain"> flags_passthrough</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">File </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cifar10_main.py&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> line </span><span class="token number" style="color:rgb(247, 140, 108)">518</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">in</span><span class="token plain"> main</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    hooks</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> run_config</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">config</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">File </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/learn_runner.py&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> line </span><span class="token number" style="color:rgb(247, 140, 108)">210</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">in</span><span class="token plain"> run</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token keyword" style="font-style:italic">return</span><span class="token plain"> _execute_schedule</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">experiment</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> schedule</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">File </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/learn_runner.py&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> line </span><span class="token number" style="color:rgb(247, 140, 108)">47</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">in</span><span class="token plain"> _execute_schedule</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token keyword" style="font-style:italic">return</span><span class="token plain"> task</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">File </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/experiment.py&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> line </span><span class="token number" style="color:rgb(247, 140, 108)">501</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">in</span><span class="token plain"> train_and_evaluate</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    hooks</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">self</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token plain">_eval_hooks</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">File </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/experiment.py&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> line </span><span class="token number" style="color:rgb(247, 140, 108)">681</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">in</span><span class="token plain"> _call_evaluate</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    hooks</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">hooks</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">File </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;/usr/local/lib/python2.7/dist-packages/tensorflow/python/estimator/estimator.py&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> line </span><span class="token number" style="color:rgb(247, 140, 108)">292</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">in</span><span class="token plain"> evaluate</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    name</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">name</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">File </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;/usr/local/lib/python2.7/dist-packages/tensorflow/python/estimator/estimator.py&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> line </span><span class="token number" style="color:rgb(247, 140, 108)">638</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">in</span><span class="token plain"> _evaluate_model</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    features</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> labels</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> model_fn_lib</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token plain">ModeKeys</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token plain">EVAL</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">File </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;/usr/local/lib/python2.7/dist-packages/tensorflow/python/estimator/estimator.py&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> line </span><span class="token number" style="color:rgb(247, 140, 108)">545</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">in</span><span class="token plain"> _call_model_fn</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    features</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">features</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> labels</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">labels</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">**</span><span class="token plain">kwargs</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">File </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;cifar10_main.py&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> line </span><span class="token number" style="color:rgb(247, 140, 108)">331</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">in</span><span class="token plain"> _resnet_model_fn</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    gradvars</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> global_step</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">tf</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token plain">train</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token plain">get_global_step</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">File </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/sync_replicas_optimizer.py&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> line </span><span class="token number" style="color:rgb(247, 140, 108)">252</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">in</span><span class="token plain"> apply_gradients</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    variables</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token plain">global_variables</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">File </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;/usr/local/lib/python2.7/dist-packages/tensorflow/python/util/tf_should_use.py&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> line </span><span class="token number" style="color:rgb(247, 140, 108)">170</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">in</span><span class="token plain"> wrapped</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token keyword" style="font-style:italic">return</span><span class="token plain"> _add_should_use_warning</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">fn</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token operator" style="color:rgb(137, 221, 255)">*</span><span class="token plain">args</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">**</span><span class="token plain">kwargs</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">File </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;/usr/local/lib/python2.7/dist-packages/tensorflow/python/util/tf_should_use.py&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> line </span><span class="token number" style="color:rgb(247, 140, 108)">139</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">in</span><span class="token plain"> _add_should_use_warning</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    wrapped </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> TFShouldUseWarningWrapper</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">x</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">File </span><span class="token string" style="color:rgb(195, 232, 141)">&quot;/usr/local/lib/python2.7/dist-packages/tensorflow/python/util/tf_should_use.py&quot;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> line </span><span class="token number" style="color:rgb(247, 140, 108)">96</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">in</span><span class="token plain"> __init__</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    stack </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain">s</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token plain">strip</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">for</span><span class="token plain"> s </span><span class="token keyword" style="font-style:italic">in</span><span class="token plain"> traceback</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token plain">format_stack</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>This should not affect your training, and should be fixed on the next releases.</p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"></div><div class="pagination-nav__item pagination-nav__item--next"></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#prerequisite" class="table-of-contents__link">Prerequisite</a></li><li><a href="#training-on-a-single-machine-with-gpus-or-cpu" class="table-of-contents__link">Training on a single machine with GPUs or CPU</a></li><li><a href="#run-distributed-training" class="table-of-contents__link">Run distributed training</a><ul><li><a href="#optional-running-on-google-cloud-machine-learning-engine" class="table-of-contents__link">(Optional) Running on Google Cloud Machine Learning Engine</a></li><li><a href="#set-tf_config" class="table-of-contents__link">Set TF_CONFIG</a></li><li><a href="#running-script" class="table-of-contents__link">Running script</a></li></ul></li><li><a href="#visualizing-results-with-tensorboard" class="table-of-contents__link">Visualizing results with TensorBoard</a></li><li><a href="#warnings" class="table-of-contents__link">Warnings</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/1f391b9e.fee84980.js"></script>
-<script src="/143.a1031c43.js"></script>
-<script src="/58f10d9f.a5917f48.js"></script>
-<script src="/17896441.57b41a63.js"></script>
-<script src="/ab130550.1ab1e613.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/1f391b9e.f22e8160.js"></script>
+<script src="/128.10c43f42.js"></script>
+<script src="/58f10d9f.87a860a5.js"></script>
+<script src="/17896441.be8f95bf.js"></script>
+<script src="/ab130550.f5d8809e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/e235d551.56d51622.js b/e235d551.050d5dc9.js
similarity index 94%
rename from e235d551.56d51622.js
rename to e235d551.050d5dc9.js
index c2dd6c6..1c4ed17 100644
--- a/e235d551.56d51622.js
+++ b/e235d551.050d5dc9.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[120],{187:function(e,r,t){"use strict";t.r(r),t.d(r,"frontMatter",(function(){return c})),t.d(r,"metadata",(function(){return i})),t.d(r,"toc",(function(){return u})),t.d(r,"default",(function(){return p}));var n=t(3),o=t(7),a=(t(0),t(209)),c={title:"Submarine-SDK"},i={unversionedId:"userDocs/submarine-sdk/README",id:"version-0.6.0/userDocs/submarine-sdk/README",isDocsHomePage:!1,title:"Submarine-SDK",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/userDocs/submarine-sdk/README.md",slug:"/userDocs/submarine-sdk/README",permalink:"/docs/userDocs/submarine-sdk/README",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/submarine-sdk/README.md",version:"0.6.0"},u=[{value:"Summary",id:"summary",children:[]}],s={toc:u};function p(e){var r=e.components,t=Object(o.a)(e,["components"]);return Object(a.b)("wrapper",Object(n.a)({},s,t,{components:r,mdxType:"MDXLayout"}),Object(a.b)("h1",{id:"submarine-sdk"},"Submarine-SDK"),Object(a.b)("h2",{id:"summary"},"Summary"),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},Object(a.b)("p",{parentName:"li"},"Support Python, Scala, R language for algorithm development")),Object(a.b)("li",{parentName:"ul"},Object(a.b)("p",{parentName:"li"},"Support tracking/metrics APIs which allows developers\nadd tracking/metrics and view tracking/metrics from Submarine Workbench UI."))))}p.isMDXComponent=!0},209:function(e,r,t){"use strict";t.d(r,"a",(function(){return l})),t.d(r,"b",(function(){return d}));var n=t(0),o=t.n(n);function a(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function c(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function i(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?c(Object(t),!0).forEach((function(r){a(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):c(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}function u(e,r){if(null==e)return{};var t,n,o=function(e,r){if(null==e)return{};var t,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)t=a[n],r.indexOf(t)>=0||(o[t]=e[t]);return o}(e,r);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)t=a[n],r.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}var s=o.a.createContext({}),p=function(e){var r=o.a.useContext(s),t=r;return e&&(t="function"==typeof e?e(r):i(i({},r),e)),t},l=function(e){var r=p(e.components);return o.a.createElement(s.Provider,{value:r},e.children)},m={inlineCode:"code",wrapper:function(e){var r=e.children;return o.a.createElement(o.a.Fragment,{},r)}},b=o.a.forwardRef((function(e,r){var t=e.components,n=e.mdxType,a=e.originalType,c=e.parentName,s=u(e,["components","mdxType","originalType","parentName"]),l=p(t),b=n,d=l["".concat(c,".").concat(b)]||l[b]||m[b]||a;return t?o.a.createElement(d,i(i({ref:r},s),{},{components:t})):o.a.createElement(d,i({ref:r},s))}));function d(e,r){var t=arguments,n=r&&r.mdxType;if("string"==typeof e||n){var a=t.length,c=new Array(a);c[0]=b;var i={};for(var u in r)hasOwnProperty.call(r,u)&&(i[u]=r[u]);i.originalType=e,i.mdxType="string"==typeof e?e:n,c[1]=i;for(var s=2;s<a;s++)c[s]=t[s];return o.a.createElement.apply(null,c)}return o.a.createElement.apply(null,t)}b.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[108],{175:function(e,r,t){"use strict";t.r(r),t.d(r,"frontMatter",(function(){return c})),t.d(r,"metadata",(function(){return i})),t.d(r,"toc",(function(){return u})),t.d(r,"default",(function(){return p}));var n=t(3),o=t(7),a=(t(0),t(194)),c={title:"Submarine-SDK"},i={unversionedId:"userDocs/submarine-sdk/README",id:"version-0.6.0/userDocs/submarine-sdk/README",isDocsHomePage:!1,title:"Submarine-SDK",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/userDocs/submarine-sdk/README.md",slug:"/userDocs/submarine-sdk/README",permalink:"/docs/userDocs/submarine-sdk/README",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/submarine-sdk/README.md",version:"0.6.0"},u=[{value:"Summary",id:"summary",children:[]}],s={toc:u};function p(e){var r=e.components,t=Object(o.a)(e,["components"]);return Object(a.b)("wrapper",Object(n.a)({},s,t,{components:r,mdxType:"MDXLayout"}),Object(a.b)("h1",{id:"submarine-sdk"},"Submarine-SDK"),Object(a.b)("h2",{id:"summary"},"Summary"),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},Object(a.b)("p",{parentName:"li"},"Support Python, Scala, R language for algorithm development")),Object(a.b)("li",{parentName:"ul"},Object(a.b)("p",{parentName:"li"},"Support tracking/metrics APIs which allows developers\nadd tracking/metrics and view tracking/metrics from Submarine Workbench UI."))))}p.isMDXComponent=!0},194:function(e,r,t){"use strict";t.d(r,"a",(function(){return l})),t.d(r,"b",(function(){return d}));var n=t(0),o=t.n(n);function a(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function c(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function i(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?c(Object(t),!0).forEach((function(r){a(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):c(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}function u(e,r){if(null==e)return{};var t,n,o=function(e,r){if(null==e)return{};var t,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)t=a[n],r.indexOf(t)>=0||(o[t]=e[t]);return o}(e,r);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)t=a[n],r.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}var s=o.a.createContext({}),p=function(e){var r=o.a.useContext(s),t=r;return e&&(t="function"==typeof e?e(r):i(i({},r),e)),t},l=function(e){var r=p(e.components);return o.a.createElement(s.Provider,{value:r},e.children)},m={inlineCode:"code",wrapper:function(e){var r=e.children;return o.a.createElement(o.a.Fragment,{},r)}},b=o.a.forwardRef((function(e,r){var t=e.components,n=e.mdxType,a=e.originalType,c=e.parentName,s=u(e,["components","mdxType","originalType","parentName"]),l=p(t),b=n,d=l["".concat(c,".").concat(b)]||l[b]||m[b]||a;return t?o.a.createElement(d,i(i({ref:r},s),{},{components:t})):o.a.createElement(d,i({ref:r},s))}));function d(e,r){var t=arguments,n=r&&r.mdxType;if("string"==typeof e||n){var a=t.length,c=new Array(a);c[0]=b;var i={};for(var u in r)hasOwnProperty.call(r,u)&&(i[u]=r[u]);i.originalType=e,i.mdxType="string"==typeof e?e:n,c[1]=i;for(var s=2;s<a;s++)c[s]=t[s];return o.a.createElement.apply(null,c)}return o.a.createElement.apply(null,t)}b.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/e2e9fab8.5b60f0b4.js b/e2e9fab8.3f6ab158.js
similarity index 98%
rename from e2e9fab8.5b60f0b4.js
rename to e2e9fab8.3f6ab158.js
index 7315d25..38f1136 100644
--- a/e2e9fab8.5b60f0b4.js
+++ b/e2e9fab8.3f6ab158.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[121],{188:function(e,t,a){"use strict";a.r(t),a.d(t,"frontMatter",(function(){return s})),a.d(t,"metadata",(function(){return o})),a.d(t,"toc",(function(){return c})),a.d(t,"default",(function(){return p}));var n=a(3),r=a(7),i=(a(0),a(209)),s={title:"How to Release"},o={unversionedId:"devDocs/HowToRelease",id:"devDocs/HowToRelease",isDocsHomePage:!1,title:"How to Release",description:"\x3c!--",source:"@site/docs/devDocs/HowToRelease.md",slug:"/devDocs/HowToRelease",permalink:"/docs/next/devDocs/HowToRelease",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/devDocs/HowToRelease.md",version:"current",sidebar:"docs",previous:{title:"How to Run Frontend Integration Test",permalink:"/docs/next/devDocs/IntegrationTestE2E"},next:{title:"How to Verify",permalink:"/docs/next/devDocs/HowToVerify"}},c=[{value:"0. Preface",id:"0-preface",children:[]},{value:"1. Add GPG KEY",id:"1-add-gpg-key",children:[{value:"1.1 Install gpg",id:"11-install-gpg",children:[]},{value:"1.2 generate gpg Key",id:"12-generate-gpg-key",children:[]},{value:"1.3 Upload the generated key to the public server",id:"13-upload-the-generated-key-to-the-public-server",children:[]},{value:"1.4 Check whether the key is created successfully",id:"14-check-whether-the-key-is-created-successfully",children:[]},{value:"1.5 Add your gpg public key to the KEYS file",id:"15-add-your-gpg-public-key-to-the-keys-file",children:[]},{value:"1.6 Upload GPG public key to Github account",id:"16-upload-gpg-public-key-to-github-account",children:[]}]},{value:"2. Set maven settings",id:"2-set-maven-settings",children:[]},{value:"3. Compile and package",id:"3-compile-and-package",children:[{value:"3.1 Prepare a branch",id:"31-prepare-a-branch",children:[]},{value:"3.2 Create the tag",id:"32-create-the-tag",children:[]},{value:"3.3 Package the source code",id:"33-package-the-source-code",children:[]},{value:"3.4 Packaged binary package",id:"34-packaged-binary-package",children:[]},{value:"3.5 Sign the source package/binary package/sha512",id:"35-sign-the-source-packagebinary-packagesha512",children:[]},{value:"3.6 Check whether the generated signature/sha512 is correct",id:"36-check-whether-the-generated-signaturesha512-is-correct",children:[]}]},{value:"4. Prepare for Apache release",id:"4-prepare-for-apache-release",children:[{value:"4.1 Publish the jar package to the Apache Nexus repository",id:"41-publish-the-jar-package-to-the-apache-nexus-repository",children:[]},{value:"4.2 Upload the tag to git repository",id:"42-upload-the-tag-to-git-repository",children:[]},{value:"4.3 Upload the compiled file to dist",id:"43-upload-the-compiled-file-to-dist",children:[]},{value:"4.3.1 Checkout Submarine to a local directory",id:"431-checkout-submarine-to-a-local-directory",children:[]},{value:"4.3.2 Add the public key to the KEYS file and submit it to the SVN repository",id:"432-add-the-public-key-to-the-keys-file-and-submit-it-to-the-svn-repository",children:[]},{value:"4.4 Shut down the Apache Staging repository",id:"44-shut-down-the-apache-staging-repository",children:[]}]},{value:"5. Enter voting",id:"5-enter-voting",children:[{value:"Vote in the Submarine community",id:"vote-in-the-submarine-community",children:[]}]},{value:"6. Officially released",id:"6-officially-released",children:[{value:"6.1 Merge the changes from the release-${release_version} branch to the master branch",id:"61-merge-the-changes-from-the-release-release_version-branch-to-the-master-branch",children:[]},{value:"6.2 Release the version in the Apache Staging repository",id:"62-release-the-version-in-the-apache-staging-repository",children:[]},{value:"6.3 Update official website link",id:"63-update-official-website-link",children:[]},{value:"6.4. Send an email to<code>dev@submarine.apache.org</code>",id:"64-send-an-email-todevsubmarineapacheorg",children:[]}]}],l={toc:c};function p(e){var t=e.components,a=Object(r.a)(e,["components"]);return Object(i.b)("wrapper",Object(n.a)({},l,a,{components:t,mdxType:"MDXLayout"}),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},"This article mainly introduces how the Release Manager releases a specific version of the project according to the Apache process.")),Object(i.b)("h2",{id:"0-preface"},"0. Preface"),Object(i.b)("p",null,"Source Release is the focus of Apache\u2019s attention and it is also a required content for release. Binary Release is optional, Submarine can choose whether to release the binary package to the Apache warehouse or to the Maven central warehouse."),Object(i.b)("p",null,"Please refer to the following link to find more details about release guidelines:"),Object(i.b)("p",null,Object(i.b)("a",{parentName:"p",href:"https://cwiki.apache.org/confluence/display/SUBMARINE/How+to+release"},"How to Release"),Object(i.b)("br",{parentName:"p"}),"\n",Object(i.b)("a",{parentName:"p",href:"https://cwiki.apache.org/confluence/display/SUBMARINE/Submarine+Release+Guidelines"},"Submarine Release Guidelines")),Object(i.b)("h2",{id:"1-add-gpg-key"},"1. Add GPG KEY"),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},"Main references in this chapter:",Object(i.b)("a",{parentName:"p",href:"https://infra.apache.org/openpgp.html"},"https://infra.apache.org/openpgp.html")," > ",Object(i.b)("strong",{parentName:"p"},"This chapter is only needed for the first release manager of the project."))),Object(i.b)("h3",{id:"11-install-gpg"},"1.1 Install gpg"),Object(i.b)("p",null,"Detailed installation documents can refer to ",Object(i.b)("a",{parentName:"p",href:"https://www.gnupg.org/download/index.html"},"tutorial"),", The environment configuration of Mac OS is as follows:"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-shell"},"$ brew install gpg\n$ gpg --version #Check the version\uff0cshould be 2.x\n")),Object(i.b)("h3",{id:"12-generate-gpg-key"},"1.2 generate gpg Key"),Object(i.b)("h4",{id:"need-to-pay-attention-to-the-following-points\uff1a"},"Need to pay attention to the following points\uff1a"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"When entering the name, it is better to be consistent with the Full name registered in Apache"),Object(i.b)("li",{parentName:"ul"},"The mailbox used should be apache mailbox"),Object(i.b)("li",{parentName:"ul"},"It\u2019s better to use pinyin or English for the name, otherwise there will be garbled characters")),Object(i.b)("h4",{id:"follow-the-hint\uff0cgenerate-a-key"},"Follow the hint\uff0cgenerate a key"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-shell"},"\u279c  ~ gpg --full-gen-key\ngpg (GnuPG) 2.2.20; Copyright (C) 2020 Free Software Foundation, Inc.\nThis is free software: you are free to change and redistribute it.\nThere is NO WARRANTY, to the extent permitted by law.\n\nPlease select what kind of key you want:\n   (1) RSA and RSA (default)\n   (2) DSA and Elgamal\n   (3) DSA (sign only)\n   (4) RSA (sign only)\n  (14) Existing key from card\nYour selection? 1 # enter 1 here\nRSA keys may be between 1024 and 4096 bits long.\nWhat keysize do you want? (2048) 4096 # enter 4096 here\nRequested keysize is 4096 bits\nPlease specify how long the key should be valid.\n         0 = key does not expire\n      <n>  = key expires in n days\n      <n>w = key expires in n weeks\n      <n>m = key expires in n months\n      <n>y = key expires in n years\nKey is valid for? (0) 0 # enter 0 here\nKey does not expire at all\nIs this correct? (y/N) y # enter y here\n\nGnuPG needs to construct a user ID to identify your key.\n\nReal name: Guangxu Cheng # enter your name here\nEmail address: gxcheng@apache.org # enter your mailbox here\nComment:                          # enter some comment here (Optional)\nYou selected this USER-ID:\n    \"Guangxu Cheng <gxcheng@apache.org>\"\n\nChange (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O #enter O here\nWe need to generate a lot of random bytes. It is a good idea to perform\nsome other action (type on the keyboard, move the mouse, utilize the\ndisks) during the prime generation; this gives the random number\ngenerator a better chance to gain enough entropy.\nWe need to generate a lot of random bytes. It is a good idea to perform\nsome other action (type on the keyboard, move the mouse, utilize the\ndisks) during the prime generation; this gives the random number\ngenerator a better chance to gain enough entropy.\n\n# A dialog box will pop up, asking you to enter the key for this gpg.\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 Please enter this passphrase                         \u2502\n\u2502                                                      \u2502\n\u2502 Passphrase: _______________________________          \u2502\n\u2502                                                      \u2502\n\u2502       <OK>                              <Cancel>     \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n# After entering the secret key, it will be created. And it will output the following information.\ngpg: key 2DD587E7B10F3B1F marked as ultimately trusted\ngpg: revocation certificate stored as '/Users/cheng/.gnupg/openpgp-revocs.d/41936314E25F402D5F7D73152DD587E7B10F3B1F.rev'\npublic and secret key created and signed.\n\npub   rsa4096 2020-05-19 [SC]\n      41936314E25F402D5F7D73152DD587E7B10F3B1F\nuid                      Guangxu Cheng <gxcheng@apache.org>\nsub   rsa4096 2020-05-19 [E]\n")),Object(i.b)("h3",{id:"13-upload-the-generated-key-to-the-public-server"},"1.3 Upload the generated key to the public server"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-shell"},"\u279c  ~ gpg --list-keys\n-------------------------------\npub   rsa4096 2020-05-18 [SC]\n      5931F8CFD04B37A325E4465D8C0D31C4149B3A87\nuid           [ultimate] Guangxu Cheng <gxcheng@apache.org>\nsub   rsa4096 2020-05-18 [E]\n\n# Send public key to keyserver via key id\n$ gpg --keyserver pgpkeys.mit.edu --send-key <key id>\n# Among them, pgpkeys.mit.edu is a randomly selected keyserver, and the keyserver list is: https://sks-keyservers.net/status/, which is automatically synchronized with each other, you can choose any one.\n")),Object(i.b)("h3",{id:"14-check-whether-the-key-is-created-successfully"},"1.4 Check whether the key is created successfully"),Object(i.b)("p",null,"Through the following URL, use the email to check whether the upload is successful or not. It will take about a minute to find out. When searching, check the show full-key hashes under advance on ",Object(i.b)("a",{parentName:"p",href:"http://keys.gnupg.net"},"http://keys.gnupg.net"),"."),Object(i.b)("p",null,"The query results are as follows:"),Object(i.b)("h3",{id:"15-add-your-gpg-public-key-to-the-keys-file"},"1.5 Add your gpg public key to the KEYS file"),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},"SVN is required for this step")),Object(i.b)("p",null,"The svn library of the DEV branch is ",Object(i.b)("a",{parentName:"p",href:"https://dist.apache.org/repos/dist/dev/submarine"},"https://dist.apache.org/repos/dist/dev/submarine")),Object(i.b)("p",null,"The SVN library of the Release branch is ",Object(i.b)("a",{parentName:"p",href:"https://dist.apache.org/repos/dist/release/submarine"},"https://dist.apache.org/repos/dist/release/submarine")),Object(i.b)("h4",{id:"151-add-the-public-key-to-keys-in-the-dev-branch-to-release-the-rc-version"},"1.5.1 Add the public key to KEYS in the dev branch to release the RC version"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-shell"},'\u279c  ~ svn co https://dist.apache.org/repos/dist/dev/submarine /tmp/submarine-dist-dev\n# This step is relatively slow, and all versions will be copied. If the network is disconnected, use svn cleanup to delete the lock and re-execute it, and the transfer will be resumed.\n\u279c  ~ cd submarine-dist-dev\n\u279c  submarine-dist-dev ~ (gpg --list-sigs YOUR_NAME@apache.org && gpg --export --armor YOUR_NAME@apache.org) >> KEYS # Append the KEY you generated to the file KEYS, it is best to check if it is correct after appending.\n\u279c  submarine-dist-dev ~ svn add .   # If there is a KEYS file before, it is not needed.\n\u279c  submarine-dist-dev ~ svn ci -m "add gpg key for YOUR_NAME" # Next, you will be asked to enter a username and password, just use your apache username and password.\n')),Object(i.b)("h4",{id:"152-add-the-public-key-to-keys-in-the-release-branch-to-release-the-official-version"},"1.5.2 Add the public key to KEYS in the release branch to release the official version"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-shell"},'\u279c  ~ svn co https://dist.apache.org/repos/dist/release/submarine /tmp/submarine-dist-release\n\u279c  ~ cd submarine-dist-release\n\u279c  submarine-dist-release ~ (gpg --list-sigs YOUR_NAME@apache.org && gpg --export --armor YOUR_NAME@apache.org) >> KEYS # Append the KEY you generated to the file KEYS, it is best to check if it is correct after appending.\n\u279c  submarine-dist-release ~ svn add .   # If there is a KEYS file before, it is not needed.\n\u279c  submarine-dist-release ~ svn ci -m "add gpg key for YOUR_NAME" # Next, you will be asked to enter a username and password, just use your apache username and password.\n')),Object(i.b)("h3",{id:"16-upload-gpg-public-key-to-github-account"},"1.6 Upload GPG public key to Github account"),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},"Go to ",Object(i.b)("a",{parentName:"li",href:"https://github.com/settings/keys"},"https://github.com/settings/keys")," and add GPG KEYS."),Object(i.b)("li",{parentName:"ol"},'If you find "unverified" is written after the key after adding it, remember to bind the mailbox used in the GPG key to your github account (',Object(i.b)("a",{parentName:"li",href:"https://github.com/settings/emails"},"https://github.com/settings/emails"),").")),Object(i.b)("h2",{id:"2-set-maven-settings"},"2. Set maven settings"),Object(i.b)("p",null,Object(i.b)("strong",{parentName:"p"},"Skip if it has already been set")),Object(i.b)("p",null,"In the maven configuration file ~/.m2/settings.xml, add the following ",Object(i.b)("inlineCode",{parentName:"p"},"<server>")," item"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-xml"},'<?xml version="1.0" encoding="UTF-8"?>\n<settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd" xmlns="http://maven.apache.org/SETTINGS/1.1.0"\n    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">\n  <servers>\n    \x3c!-- Apache Repo Settings --\x3e\n    <server>\n        <id>apache.snapshots.https</id>\n        <username>{user-id}</username>\n        <password>{user-pass}</password>\n    </server>\n    <server>\n        <id>apache.releases.https</id>\n        <username>{user-id}</username>\n        <password>{user-pass}</password>\n    </server>\n  </servers>\n<profiles>\n    <profile>\n      <id>apache-release</id>\n      <properties>\n        <gpg.keyname>Your KEYID</gpg.keyname>\x3c!-- Your GPG Keyname here --\x3e\n        \x3c!-- Use an agent: Prevents being asked for the password during the build --\x3e\n        <gpg.useagent>true</gpg.useagent>\n        <gpg.passphrase>Your password of the private key</gpg.passphrase>\n      </properties>\n    </profile>\n</profiles>\n</settings>\n')),Object(i.b)("h2",{id:"3-compile-and-package"},"3. Compile and package"),Object(i.b)("h3",{id:"31-prepare-a-branch"},"3.1 Prepare a branch"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"Pull the new branch from the main branch as a release branch, release-${release_version}")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"Update ",Object(i.b)("inlineCode",{parentName:"p"},"CHANGES.md"))),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"Check whether the code is normal, including successful compilation, all unit tests, successful RAT check, etc."),Object(i.b)("pre",{parentName:"li"},Object(i.b)("code",{parentName:"pre",className:"language-shell"},"# build check\n$ mvn clean package -Dmaven.javadoc.skip=true\n# RAT check\n$ mvn apache-rat:check\n"))),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"Change the version number"))),Object(i.b)("h3",{id:"32-create-the-tag"},"3.2 Create the tag"),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},"Before creating the tag, make sure that the code has been checked for errors, including: successful compilation, all unit tests, and successful RAT checks, etc.")),Object(i.b)("p",null,Object(i.b)("strong",{parentName:"p"},"Create a tag with signature")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-shell"},'$ git_tag=${release_version}-${rc_version}\n$ git tag -s $git_tag -m "Tagging the ${release_version} first Releae Candidate (Candidates start at zero)"\n# If a error happened like gpg: signing failed: secret key not available, set the private key first.\n$ git config user.signingkey ${KEY_ID}\n')),Object(i.b)("h3",{id:"33-package-the-source-code"},"3.3 Package the source code"),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},"After the tag is successfully created, the tag source code should be packaged into a tar package.")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-shell"},'mkdir /tmp/apache-submarine-${release_version}-${rc_version}\ngit archive --format=tar.gz --output="/tmp/apache-submarine-${release_version}-${rc_version}/apache-submarine-${release_version}-src.tar.gz" --prefix="apache-submarine-${release_version}/" $git_tag\n')),Object(i.b)("h3",{id:"34-packaged-binary-package"},"3.4 Packaged binary package"),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},"Compile the source code packaged in the previous step")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-shell"},"cd /tmp/apache-submarine-${release_version}-${rc_version} # Enter the source package directory.\ntar xzvf apache-submarine-${release_version}-src.tar.gz # Unzip the source package.\ncd apache-submarine-${release_version} # Enter the source directory.\nmvn compile clean install package -DskipTests # Compile.\ncp ./submarine-distribution/target/apache-submarine-${release_version}-bin.tar.gz /tmp/apache-submarine-${release_version}-${rc_version}/  # Copy the binary package to the source package directory to facilitate signing the package in the next step.\n")),Object(i.b)("h3",{id:"35-sign-the-source-packagebinary-packagesha512"},"3.5 Sign the source package/binary package/sha512"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-shell"},"for i in *.tar.gz; do echo $i; gpg --print-md SHA512 $i > $i.sha512 ; done # Calculate SHA512\nfor i in *.tar.gz; do echo $i; gpg --armor --output $i.asc --detach-sig $i ; done # Calculate the signature\n")),Object(i.b)("h3",{id:"36-check-whether-the-generated-signaturesha512-is-correct"},"3.6 Check whether the generated signature/sha512 is correct"),Object(i.b)("p",null,"For example, verify that the signature is correct as follows:"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-shell"},"for i in *.tar.gz; do echo $i; gpg --verify $i.asc $i ; done\n")),Object(i.b)("h2",{id:"4-prepare-for-apache-release"},"4. Prepare for Apache release"),Object(i.b)("h3",{id:"41-publish-the-jar-package-to-the-apache-nexus-repository"},"4.1 Publish the jar package to the Apache Nexus repository"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-shell"},"cd /tmp/apache-submarine-${release_version}-${rc_version} # Enter the source package directory\ntar xzvf apache-submarine-${release_version}-src.tar.gz # Unzip the source package\ncd apache-submarine-${release_version}\nmvn -DskipTests deploy -Papache-release -Dmaven.javadoc.skip=true  # Start upload\n")),Object(i.b)("h3",{id:"42-upload-the-tag-to-git-repository"},"4.2 Upload the tag to git repository"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-shell"},"git push origin ${release_version}-${rc_version}\n")),Object(i.b)("h3",{id:"43-upload-the-compiled-file-to-dist"},"4.3 Upload the compiled file to dist"),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},"This step requires the use of SVN, the svn library of the DEV branch is ",Object(i.b)("a",{parentName:"p",href:"https://dist.apache.org/repos/dist/dev/submarine"},"https://dist.apache.org/repos/dist/dev/submarine"))),Object(i.b)("h3",{id:"431-checkout-submarine-to-a-local-directory"},"4.3.1 Checkout Submarine to a local directory"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-shell"},"# This step may be slow, and all versions will be tested. If the network is broken, use svn cleanup to delete the lock and re-execute it, and the upload will be resumed.\nsvn co https://dist.apache.org/repos/dist/dev/submarine /tmp/submarine-dist-dev\n")),Object(i.b)("h3",{id:"432-add-the-public-key-to-the-keys-file-and-submit-it-to-the-svn-repository"},"4.3.2 Add the public key to the KEYS file and submit it to the SVN repository"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-shell"},'cd /tmp/submarine-dist-dev\nmkdir ${release_version}-${rc_version} # Create version directory\n# Copy the source code package and signed package here.\ncp /tmp/apache-submarine-${release_version}-${rc_version}/*tar.gz* ${release_version}-${rc_version}/\nsvn status # Check svn status.\nsvn add ${release_version}-${rc_version} # Add to svn version.\nsvn status # Check svn status.\nsvn commit -m "prepare for ${release_version} ${rc_version}"     # Submit to svn remote server.\n')),Object(i.b)("h3",{id:"44-shut-down-the-apache-staging-repository"},"4.4 Shut down the Apache Staging repository"),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},"Please make sure all artifacts are fine.")),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},Object(i.b)("strong",{parentName:"li"},"Log in")," ",Object(i.b)("a",{parentName:"li",href:"http://repository.apache.org"},"http://repository.apache.org")," , with Apache account"),Object(i.b)("li",{parentName:"ol"},"Click on Staging repositories on the left."),Object(i.b)("li",{parentName:"ol"},"Search for Submarine keywords and select the repository you uploaded recently."),Object(i.b)("li",{parentName:"ol"},"Click the Close button above, and a series of checks will be performed during this process."),Object(i.b)("li",{parentName:"ol"},"After the check is passed, a link will appear on the Summary tab below. Please save this link and put it in the next voting email.\nThe link should look like: ",Object(i.b)("inlineCode",{parentName:"li"},"https://repository.apache.org/content/repositories/orgapachesubmarine-xxxx"))),Object(i.b)("p",null,"WARN: Please note that clicking Close may fail, please check the reason for the failure and deal with it."),Object(i.b)("h2",{id:"5-enter-voting"},"5. Enter voting"),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},"To vote in the Submarine community, send an email to:",Object(i.b)("inlineCode",{parentName:"p"},"dev@submarine.apache.org"))),Object(i.b)("h3",{id:"vote-in-the-submarine-community"},"Vote in the Submarine community"),Object(i.b)("h4",{id:"voting-template"},"Voting template"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"Title\uff1a[VOTE] Submarine-${release_version}-${rc_version} is ready for a vote!\n\nContent\uff1a\n\nHi folks,\n\nThanks to everyone's help on this release.\n\nI've created a release candidate (${rc_version}) for submarine ${release_version}. The\nhighlighted features are as follows:\n\n1. AAA\n2. BBB\n3. CCC\n\nThe mini-submarine image is here:\n\ndocker pull apache/submarine:mini-${release_version}-${rc_version}\n\n\nThe RC tag in git is here:\n\nhttps://github.com/apache/submarine/releases/tag/release-${release_version}-${rc_version}\n\nThe RC release artifacts are available at:\n\nhttp://home.apache.org/~pingsutw/submarine-${release_version}-${rc_version}\n\n\nThe Maven staging repository is here:\n\nhttps://repository.apache.org/content/repositories/orgapachesubmarine-1030\n\nMy public key is here:\n\nhttps://dist.apache.org/repos/dist/release/submarine/KEYS\n\n\n*This vote will run for 7 days, ending on DDDD/EE/FF at 11:59 pm PST.*\n\n\nFor the testing, I have verified the\n\n1. Build from source, Install Submarine on minikube\n\n2. Workbench UI (Experiment / Notebook / Template / Environment)\n\n3. Experiment / Notebook / Template / Environment REST API\n\n\nMy +1 to start. Thanks!\n\nBR,\nXXX\n\n")),Object(i.b)("h4",{id:"announce-voting-results-template"},"Announce voting results template"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"Title\uff1a[RESULT][VOTE] Release Apache Submarine ${release_version} ${rc_version}\n\nContent\uff1a\n\nHello Apache Submarine PMC and Community,\n  The vote closes now as 72hr have passed. The vote PASSES with\n  xx (+1 non-binding) votes from the PMC,\n  xx (+1 non-binding) vote from the rest of the developer community,\n  and no further 0 or -1 votes.\n\n  The vote thread:{vote_mail_address}\n\nThank you for your support.\nYour Submarine Release Manager\n")),Object(i.b)("h2",{id:"6-officially-released"},"6. Officially released"),Object(i.b)("h3",{id:"61-merge-the-changes-from-the-release-release_version-branch-to-the-master-branch"},"6.1 Merge the changes from the release-${release_version} branch to the master branch"),Object(i.b)("h3",{id:"62-release-the-version-in-the-apache-staging-repository"},"6.2 Release the version in the Apache Staging repository"),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},"Please make sure all artifacts are fine.")),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},"Log in to ",Object(i.b)("a",{parentName:"li",href:"http://repository.apache.org"},"http://repository.apache.org")," with your Apache account."),Object(i.b)("li",{parentName:"ol"},"Click on Staging repositories on the left."),Object(i.b)("li",{parentName:"ol"},"Search for Submarine keywords, select your recently uploaded repository, the repository specified in the voting email."),Object(i.b)("li",{parentName:"ol"},"Click the ",Object(i.b)("inlineCode",{parentName:"li"},"Release")," button above, and a series of checks will be carried out during this process.\n",Object(i.b)("strong",{parentName:"li"},"It usually takes 24 hours to wait for the repository to synchronize to other data sources"))),Object(i.b)("h3",{id:"63-update-official-website-link"},"6.3 Update official website link"),Object(i.b)("h3",{id:"64-send-an-email-todevsubmarineapacheorg"},"6.4. Send an email to",Object(i.b)("inlineCode",{parentName:"h3"},"dev@submarine.apache.org")),Object(i.b)("p",null,Object(i.b)("strong",{parentName:"p"},"Please make sure that the repository in 6.4 has been successfully released, generally the email is sent 24 hours after 6.4")),Object(i.b)("p",null,"Announce release email template:"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"Title\uff1a [ANNOUNCE] Apache Submarine ${release_version} release!\nContent\uff1a\nHi folks, It's a great honor for me to announce that the Apache Submarine Community\nhas released Apache Submarine ${release_version}!\nThe highlighted features are:\n1. AAA\n2. BBB\n3. CCC\n\nTons of thanks to our contributors and community!\nLet's keep fighting! *Apache Submarine ${release_version} released*:\nhttps://submarine.apache.org/docs/next/releases/submarine-release-${release_version}\n\nBR,\nXXXX\n")))}p.isMDXComponent=!0},209:function(e,t,a){"use strict";a.d(t,"a",(function(){return h})),a.d(t,"b",(function(){return d}));var n=a(0),r=a.n(n);function i(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function s(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?s(Object(a),!0).forEach((function(t){i(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):s(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function c(e,t){if(null==e)return{};var a,n,r=function(e,t){if(null==e)return{};var a,n,r={},i=Object.keys(e);for(n=0;n<i.length;n++)a=i[n],t.indexOf(a)>=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)a=i[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var l=r.a.createContext({}),p=function(e){var t=r.a.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},h=function(e){var t=p(e.components);return r.a.createElement(l.Provider,{value:t},e.children)},b={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},u=r.a.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,l=c(e,["components","mdxType","originalType","parentName"]),h=p(a),u=n,d=h["".concat(s,".").concat(u)]||h[u]||b[u]||i;return a?r.a.createElement(d,o(o({ref:t},l),{},{components:a})):r.a.createElement(d,o({ref:t},l))}));function d(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,s=new Array(i);s[0]=u;var o={};for(var c in t)hasOwnProperty.call(t,c)&&(o[c]=t[c]);o.originalType=e,o.mdxType="string"==typeof e?e:n,s[1]=o;for(var l=2;l<i;l++)s[l]=a[l];return r.a.createElement.apply(null,s)}return r.a.createElement.apply(null,a)}u.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[109],{176:function(e,t,a){"use strict";a.r(t),a.d(t,"frontMatter",(function(){return s})),a.d(t,"metadata",(function(){return o})),a.d(t,"toc",(function(){return c})),a.d(t,"default",(function(){return p}));var n=a(3),r=a(7),i=(a(0),a(194)),s={title:"How to Release"},o={unversionedId:"devDocs/HowToRelease",id:"devDocs/HowToRelease",isDocsHomePage:!1,title:"How to Release",description:"\x3c!--",source:"@site/docs/devDocs/HowToRelease.md",slug:"/devDocs/HowToRelease",permalink:"/docs/next/devDocs/HowToRelease",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/devDocs/HowToRelease.md",version:"current",sidebar:"docs",previous:{title:"How to Run Frontend Integration Test",permalink:"/docs/next/devDocs/IntegrationTestE2E"},next:{title:"How to Verify",permalink:"/docs/next/devDocs/HowToVerify"}},c=[{value:"0. Preface",id:"0-preface",children:[]},{value:"1. Add GPG KEY",id:"1-add-gpg-key",children:[{value:"1.1 Install gpg",id:"11-install-gpg",children:[]},{value:"1.2 generate gpg Key",id:"12-generate-gpg-key",children:[]},{value:"1.3 Upload the generated key to the public server",id:"13-upload-the-generated-key-to-the-public-server",children:[]},{value:"1.4 Check whether the key is created successfully",id:"14-check-whether-the-key-is-created-successfully",children:[]},{value:"1.5 Add your gpg public key to the KEYS file",id:"15-add-your-gpg-public-key-to-the-keys-file",children:[]},{value:"1.6 Upload GPG public key to Github account",id:"16-upload-gpg-public-key-to-github-account",children:[]}]},{value:"2. Set maven settings",id:"2-set-maven-settings",children:[]},{value:"3. Compile and package",id:"3-compile-and-package",children:[{value:"3.1 Prepare a branch",id:"31-prepare-a-branch",children:[]},{value:"3.2 Create the tag",id:"32-create-the-tag",children:[]},{value:"3.3 Package the source code",id:"33-package-the-source-code",children:[]},{value:"3.4 Packaged binary package",id:"34-packaged-binary-package",children:[]},{value:"3.5 Sign the source package/binary package/sha512",id:"35-sign-the-source-packagebinary-packagesha512",children:[]},{value:"3.6 Check whether the generated signature/sha512 is correct",id:"36-check-whether-the-generated-signaturesha512-is-correct",children:[]}]},{value:"4. Prepare for Apache release",id:"4-prepare-for-apache-release",children:[{value:"4.1 Publish the jar package to the Apache Nexus repository",id:"41-publish-the-jar-package-to-the-apache-nexus-repository",children:[]},{value:"4.2 Upload the tag to git repository",id:"42-upload-the-tag-to-git-repository",children:[]},{value:"4.3 Upload the compiled file to dist",id:"43-upload-the-compiled-file-to-dist",children:[]},{value:"4.3.1 Checkout Submarine to a local directory",id:"431-checkout-submarine-to-a-local-directory",children:[]},{value:"4.3.2 Add the public key to the KEYS file and submit it to the SVN repository",id:"432-add-the-public-key-to-the-keys-file-and-submit-it-to-the-svn-repository",children:[]},{value:"4.4 Shut down the Apache Staging repository",id:"44-shut-down-the-apache-staging-repository",children:[]}]},{value:"5. Enter voting",id:"5-enter-voting",children:[{value:"Vote in the Submarine community",id:"vote-in-the-submarine-community",children:[]}]},{value:"6. Officially released",id:"6-officially-released",children:[{value:"6.1 Merge the changes from the release-${release_version} branch to the master branch",id:"61-merge-the-changes-from-the-release-release_version-branch-to-the-master-branch",children:[]},{value:"6.2 Release the version in the Apache Staging repository",id:"62-release-the-version-in-the-apache-staging-repository",children:[]},{value:"6.3 Update official website link",id:"63-update-official-website-link",children:[]},{value:"6.4. Send an email to<code>dev@submarine.apache.org</code>",id:"64-send-an-email-todevsubmarineapacheorg",children:[]}]}],l={toc:c};function p(e){var t=e.components,a=Object(r.a)(e,["components"]);return Object(i.b)("wrapper",Object(n.a)({},l,a,{components:t,mdxType:"MDXLayout"}),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},"This article mainly introduces how the Release Manager releases a specific version of the project according to the Apache process.")),Object(i.b)("h2",{id:"0-preface"},"0. Preface"),Object(i.b)("p",null,"Source Release is the focus of Apache\u2019s attention and it is also a required content for release. Binary Release is optional, Submarine can choose whether to release the binary package to the Apache warehouse or to the Maven central warehouse."),Object(i.b)("p",null,"Please refer to the following link to find more details about release guidelines:"),Object(i.b)("p",null,Object(i.b)("a",{parentName:"p",href:"https://cwiki.apache.org/confluence/display/SUBMARINE/How+to+release"},"How to Release"),Object(i.b)("br",{parentName:"p"}),"\n",Object(i.b)("a",{parentName:"p",href:"https://cwiki.apache.org/confluence/display/SUBMARINE/Submarine+Release+Guidelines"},"Submarine Release Guidelines")),Object(i.b)("h2",{id:"1-add-gpg-key"},"1. Add GPG KEY"),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},"Main references in this chapter:",Object(i.b)("a",{parentName:"p",href:"https://infra.apache.org/openpgp.html"},"https://infra.apache.org/openpgp.html")," > ",Object(i.b)("strong",{parentName:"p"},"This chapter is only needed for the first release manager of the project."))),Object(i.b)("h3",{id:"11-install-gpg"},"1.1 Install gpg"),Object(i.b)("p",null,"Detailed installation documents can refer to ",Object(i.b)("a",{parentName:"p",href:"https://www.gnupg.org/download/index.html"},"tutorial"),", The environment configuration of Mac OS is as follows:"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-shell"},"$ brew install gpg\n$ gpg --version #Check the version\uff0cshould be 2.x\n")),Object(i.b)("h3",{id:"12-generate-gpg-key"},"1.2 generate gpg Key"),Object(i.b)("h4",{id:"need-to-pay-attention-to-the-following-points\uff1a"},"Need to pay attention to the following points\uff1a"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"When entering the name, it is better to be consistent with the Full name registered in Apache"),Object(i.b)("li",{parentName:"ul"},"The mailbox used should be apache mailbox"),Object(i.b)("li",{parentName:"ul"},"It\u2019s better to use pinyin or English for the name, otherwise there will be garbled characters")),Object(i.b)("h4",{id:"follow-the-hint\uff0cgenerate-a-key"},"Follow the hint\uff0cgenerate a key"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-shell"},"\u279c  ~ gpg --full-gen-key\ngpg (GnuPG) 2.2.20; Copyright (C) 2020 Free Software Foundation, Inc.\nThis is free software: you are free to change and redistribute it.\nThere is NO WARRANTY, to the extent permitted by law.\n\nPlease select what kind of key you want:\n   (1) RSA and RSA (default)\n   (2) DSA and Elgamal\n   (3) DSA (sign only)\n   (4) RSA (sign only)\n  (14) Existing key from card\nYour selection? 1 # enter 1 here\nRSA keys may be between 1024 and 4096 bits long.\nWhat keysize do you want? (2048) 4096 # enter 4096 here\nRequested keysize is 4096 bits\nPlease specify how long the key should be valid.\n         0 = key does not expire\n      <n>  = key expires in n days\n      <n>w = key expires in n weeks\n      <n>m = key expires in n months\n      <n>y = key expires in n years\nKey is valid for? (0) 0 # enter 0 here\nKey does not expire at all\nIs this correct? (y/N) y # enter y here\n\nGnuPG needs to construct a user ID to identify your key.\n\nReal name: Guangxu Cheng # enter your name here\nEmail address: gxcheng@apache.org # enter your mailbox here\nComment:                          # enter some comment here (Optional)\nYou selected this USER-ID:\n    \"Guangxu Cheng <gxcheng@apache.org>\"\n\nChange (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O #enter O here\nWe need to generate a lot of random bytes. It is a good idea to perform\nsome other action (type on the keyboard, move the mouse, utilize the\ndisks) during the prime generation; this gives the random number\ngenerator a better chance to gain enough entropy.\nWe need to generate a lot of random bytes. It is a good idea to perform\nsome other action (type on the keyboard, move the mouse, utilize the\ndisks) during the prime generation; this gives the random number\ngenerator a better chance to gain enough entropy.\n\n# A dialog box will pop up, asking you to enter the key for this gpg.\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 Please enter this passphrase                         \u2502\n\u2502                                                      \u2502\n\u2502 Passphrase: _______________________________          \u2502\n\u2502                                                      \u2502\n\u2502       <OK>                              <Cancel>     \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n# After entering the secret key, it will be created. And it will output the following information.\ngpg: key 2DD587E7B10F3B1F marked as ultimately trusted\ngpg: revocation certificate stored as '/Users/cheng/.gnupg/openpgp-revocs.d/41936314E25F402D5F7D73152DD587E7B10F3B1F.rev'\npublic and secret key created and signed.\n\npub   rsa4096 2020-05-19 [SC]\n      41936314E25F402D5F7D73152DD587E7B10F3B1F\nuid                      Guangxu Cheng <gxcheng@apache.org>\nsub   rsa4096 2020-05-19 [E]\n")),Object(i.b)("h3",{id:"13-upload-the-generated-key-to-the-public-server"},"1.3 Upload the generated key to the public server"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-shell"},"\u279c  ~ gpg --list-keys\n-------------------------------\npub   rsa4096 2020-05-18 [SC]\n      5931F8CFD04B37A325E4465D8C0D31C4149B3A87\nuid           [ultimate] Guangxu Cheng <gxcheng@apache.org>\nsub   rsa4096 2020-05-18 [E]\n\n# Send public key to keyserver via key id\n$ gpg --keyserver pgpkeys.mit.edu --send-key <key id>\n# Among them, pgpkeys.mit.edu is a randomly selected keyserver, and the keyserver list is: https://sks-keyservers.net/status/, which is automatically synchronized with each other, you can choose any one.\n")),Object(i.b)("h3",{id:"14-check-whether-the-key-is-created-successfully"},"1.4 Check whether the key is created successfully"),Object(i.b)("p",null,"Through the following URL, use the email to check whether the upload is successful or not. It will take about a minute to find out. When searching, check the show full-key hashes under advance on ",Object(i.b)("a",{parentName:"p",href:"http://keys.gnupg.net"},"http://keys.gnupg.net"),"."),Object(i.b)("p",null,"The query results are as follows:"),Object(i.b)("h3",{id:"15-add-your-gpg-public-key-to-the-keys-file"},"1.5 Add your gpg public key to the KEYS file"),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},"SVN is required for this step")),Object(i.b)("p",null,"The svn library of the DEV branch is ",Object(i.b)("a",{parentName:"p",href:"https://dist.apache.org/repos/dist/dev/submarine"},"https://dist.apache.org/repos/dist/dev/submarine")),Object(i.b)("p",null,"The SVN library of the Release branch is ",Object(i.b)("a",{parentName:"p",href:"https://dist.apache.org/repos/dist/release/submarine"},"https://dist.apache.org/repos/dist/release/submarine")),Object(i.b)("h4",{id:"151-add-the-public-key-to-keys-in-the-dev-branch-to-release-the-rc-version"},"1.5.1 Add the public key to KEYS in the dev branch to release the RC version"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-shell"},'\u279c  ~ svn co https://dist.apache.org/repos/dist/dev/submarine /tmp/submarine-dist-dev\n# This step is relatively slow, and all versions will be copied. If the network is disconnected, use svn cleanup to delete the lock and re-execute it, and the transfer will be resumed.\n\u279c  ~ cd submarine-dist-dev\n\u279c  submarine-dist-dev ~ (gpg --list-sigs YOUR_NAME@apache.org && gpg --export --armor YOUR_NAME@apache.org) >> KEYS # Append the KEY you generated to the file KEYS, it is best to check if it is correct after appending.\n\u279c  submarine-dist-dev ~ svn add .   # If there is a KEYS file before, it is not needed.\n\u279c  submarine-dist-dev ~ svn ci -m "add gpg key for YOUR_NAME" # Next, you will be asked to enter a username and password, just use your apache username and password.\n')),Object(i.b)("h4",{id:"152-add-the-public-key-to-keys-in-the-release-branch-to-release-the-official-version"},"1.5.2 Add the public key to KEYS in the release branch to release the official version"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-shell"},'\u279c  ~ svn co https://dist.apache.org/repos/dist/release/submarine /tmp/submarine-dist-release\n\u279c  ~ cd submarine-dist-release\n\u279c  submarine-dist-release ~ (gpg --list-sigs YOUR_NAME@apache.org && gpg --export --armor YOUR_NAME@apache.org) >> KEYS # Append the KEY you generated to the file KEYS, it is best to check if it is correct after appending.\n\u279c  submarine-dist-release ~ svn add .   # If there is a KEYS file before, it is not needed.\n\u279c  submarine-dist-release ~ svn ci -m "add gpg key for YOUR_NAME" # Next, you will be asked to enter a username and password, just use your apache username and password.\n')),Object(i.b)("h3",{id:"16-upload-gpg-public-key-to-github-account"},"1.6 Upload GPG public key to Github account"),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},"Go to ",Object(i.b)("a",{parentName:"li",href:"https://github.com/settings/keys"},"https://github.com/settings/keys")," and add GPG KEYS."),Object(i.b)("li",{parentName:"ol"},'If you find "unverified" is written after the key after adding it, remember to bind the mailbox used in the GPG key to your github account (',Object(i.b)("a",{parentName:"li",href:"https://github.com/settings/emails"},"https://github.com/settings/emails"),").")),Object(i.b)("h2",{id:"2-set-maven-settings"},"2. Set maven settings"),Object(i.b)("p",null,Object(i.b)("strong",{parentName:"p"},"Skip if it has already been set")),Object(i.b)("p",null,"In the maven configuration file ~/.m2/settings.xml, add the following ",Object(i.b)("inlineCode",{parentName:"p"},"<server>")," item"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-xml"},'<?xml version="1.0" encoding="UTF-8"?>\n<settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd" xmlns="http://maven.apache.org/SETTINGS/1.1.0"\n    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">\n  <servers>\n    \x3c!-- Apache Repo Settings --\x3e\n    <server>\n        <id>apache.snapshots.https</id>\n        <username>{user-id}</username>\n        <password>{user-pass}</password>\n    </server>\n    <server>\n        <id>apache.releases.https</id>\n        <username>{user-id}</username>\n        <password>{user-pass}</password>\n    </server>\n  </servers>\n<profiles>\n    <profile>\n      <id>apache-release</id>\n      <properties>\n        <gpg.keyname>Your KEYID</gpg.keyname>\x3c!-- Your GPG Keyname here --\x3e\n        \x3c!-- Use an agent: Prevents being asked for the password during the build --\x3e\n        <gpg.useagent>true</gpg.useagent>\n        <gpg.passphrase>Your password of the private key</gpg.passphrase>\n      </properties>\n    </profile>\n</profiles>\n</settings>\n')),Object(i.b)("h2",{id:"3-compile-and-package"},"3. Compile and package"),Object(i.b)("h3",{id:"31-prepare-a-branch"},"3.1 Prepare a branch"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"Pull the new branch from the main branch as a release branch, release-${release_version}")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"Update ",Object(i.b)("inlineCode",{parentName:"p"},"CHANGES.md"))),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"Check whether the code is normal, including successful compilation, all unit tests, successful RAT check, etc."),Object(i.b)("pre",{parentName:"li"},Object(i.b)("code",{parentName:"pre",className:"language-shell"},"# build check\n$ mvn clean package -Dmaven.javadoc.skip=true\n# RAT check\n$ mvn apache-rat:check\n"))),Object(i.b)("li",{parentName:"ul"},Object(i.b)("p",{parentName:"li"},"Change the version number"))),Object(i.b)("h3",{id:"32-create-the-tag"},"3.2 Create the tag"),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},"Before creating the tag, make sure that the code has been checked for errors, including: successful compilation, all unit tests, and successful RAT checks, etc.")),Object(i.b)("p",null,Object(i.b)("strong",{parentName:"p"},"Create a tag with signature")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-shell"},'$ git_tag=${release_version}-${rc_version}\n$ git tag -s $git_tag -m "Tagging the ${release_version} first Releae Candidate (Candidates start at zero)"\n# If a error happened like gpg: signing failed: secret key not available, set the private key first.\n$ git config user.signingkey ${KEY_ID}\n')),Object(i.b)("h3",{id:"33-package-the-source-code"},"3.3 Package the source code"),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},"After the tag is successfully created, the tag source code should be packaged into a tar package.")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-shell"},'mkdir /tmp/apache-submarine-${release_version}-${rc_version}\ngit archive --format=tar.gz --output="/tmp/apache-submarine-${release_version}-${rc_version}/apache-submarine-${release_version}-src.tar.gz" --prefix="apache-submarine-${release_version}/" $git_tag\n')),Object(i.b)("h3",{id:"34-packaged-binary-package"},"3.4 Packaged binary package"),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},"Compile the source code packaged in the previous step")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-shell"},"cd /tmp/apache-submarine-${release_version}-${rc_version} # Enter the source package directory.\ntar xzvf apache-submarine-${release_version}-src.tar.gz # Unzip the source package.\ncd apache-submarine-${release_version} # Enter the source directory.\nmvn compile clean install package -DskipTests # Compile.\ncp ./submarine-distribution/target/apache-submarine-${release_version}-bin.tar.gz /tmp/apache-submarine-${release_version}-${rc_version}/  # Copy the binary package to the source package directory to facilitate signing the package in the next step.\n")),Object(i.b)("h3",{id:"35-sign-the-source-packagebinary-packagesha512"},"3.5 Sign the source package/binary package/sha512"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-shell"},"for i in *.tar.gz; do echo $i; gpg --print-md SHA512 $i > $i.sha512 ; done # Calculate SHA512\nfor i in *.tar.gz; do echo $i; gpg --armor --output $i.asc --detach-sig $i ; done # Calculate the signature\n")),Object(i.b)("h3",{id:"36-check-whether-the-generated-signaturesha512-is-correct"},"3.6 Check whether the generated signature/sha512 is correct"),Object(i.b)("p",null,"For example, verify that the signature is correct as follows:"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-shell"},"for i in *.tar.gz; do echo $i; gpg --verify $i.asc $i ; done\n")),Object(i.b)("h2",{id:"4-prepare-for-apache-release"},"4. Prepare for Apache release"),Object(i.b)("h3",{id:"41-publish-the-jar-package-to-the-apache-nexus-repository"},"4.1 Publish the jar package to the Apache Nexus repository"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-shell"},"cd /tmp/apache-submarine-${release_version}-${rc_version} # Enter the source package directory\ntar xzvf apache-submarine-${release_version}-src.tar.gz # Unzip the source package\ncd apache-submarine-${release_version}\nmvn -DskipTests deploy -Papache-release -Dmaven.javadoc.skip=true  # Start upload\n")),Object(i.b)("h3",{id:"42-upload-the-tag-to-git-repository"},"4.2 Upload the tag to git repository"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-shell"},"git push origin ${release_version}-${rc_version}\n")),Object(i.b)("h3",{id:"43-upload-the-compiled-file-to-dist"},"4.3 Upload the compiled file to dist"),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},"This step requires the use of SVN, the svn library of the DEV branch is ",Object(i.b)("a",{parentName:"p",href:"https://dist.apache.org/repos/dist/dev/submarine"},"https://dist.apache.org/repos/dist/dev/submarine"))),Object(i.b)("h3",{id:"431-checkout-submarine-to-a-local-directory"},"4.3.1 Checkout Submarine to a local directory"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-shell"},"# This step may be slow, and all versions will be tested. If the network is broken, use svn cleanup to delete the lock and re-execute it, and the upload will be resumed.\nsvn co https://dist.apache.org/repos/dist/dev/submarine /tmp/submarine-dist-dev\n")),Object(i.b)("h3",{id:"432-add-the-public-key-to-the-keys-file-and-submit-it-to-the-svn-repository"},"4.3.2 Add the public key to the KEYS file and submit it to the SVN repository"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-shell"},'cd /tmp/submarine-dist-dev\nmkdir ${release_version}-${rc_version} # Create version directory\n# Copy the source code package and signed package here.\ncp /tmp/apache-submarine-${release_version}-${rc_version}/*tar.gz* ${release_version}-${rc_version}/\nsvn status # Check svn status.\nsvn add ${release_version}-${rc_version} # Add to svn version.\nsvn status # Check svn status.\nsvn commit -m "prepare for ${release_version} ${rc_version}"     # Submit to svn remote server.\n')),Object(i.b)("h3",{id:"44-shut-down-the-apache-staging-repository"},"4.4 Shut down the Apache Staging repository"),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},"Please make sure all artifacts are fine.")),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},Object(i.b)("strong",{parentName:"li"},"Log in")," ",Object(i.b)("a",{parentName:"li",href:"http://repository.apache.org"},"http://repository.apache.org")," , with Apache account"),Object(i.b)("li",{parentName:"ol"},"Click on Staging repositories on the left."),Object(i.b)("li",{parentName:"ol"},"Search for Submarine keywords and select the repository you uploaded recently."),Object(i.b)("li",{parentName:"ol"},"Click the Close button above, and a series of checks will be performed during this process."),Object(i.b)("li",{parentName:"ol"},"After the check is passed, a link will appear on the Summary tab below. Please save this link and put it in the next voting email.\nThe link should look like: ",Object(i.b)("inlineCode",{parentName:"li"},"https://repository.apache.org/content/repositories/orgapachesubmarine-xxxx"))),Object(i.b)("p",null,"WARN: Please note that clicking Close may fail, please check the reason for the failure and deal with it."),Object(i.b)("h2",{id:"5-enter-voting"},"5. Enter voting"),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},"To vote in the Submarine community, send an email to:",Object(i.b)("inlineCode",{parentName:"p"},"dev@submarine.apache.org"))),Object(i.b)("h3",{id:"vote-in-the-submarine-community"},"Vote in the Submarine community"),Object(i.b)("h4",{id:"voting-template"},"Voting template"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"Title\uff1a[VOTE] Submarine-${release_version}-${rc_version} is ready for a vote!\n\nContent\uff1a\n\nHi folks,\n\nThanks to everyone's help on this release.\n\nI've created a release candidate (${rc_version}) for submarine ${release_version}. The\nhighlighted features are as follows:\n\n1. AAA\n2. BBB\n3. CCC\n\nThe mini-submarine image is here:\n\ndocker pull apache/submarine:mini-${release_version}-${rc_version}\n\n\nThe RC tag in git is here:\n\nhttps://github.com/apache/submarine/releases/tag/release-${release_version}-${rc_version}\n\nThe RC release artifacts are available at:\n\nhttp://home.apache.org/~pingsutw/submarine-${release_version}-${rc_version}\n\n\nThe Maven staging repository is here:\n\nhttps://repository.apache.org/content/repositories/orgapachesubmarine-1030\n\nMy public key is here:\n\nhttps://dist.apache.org/repos/dist/release/submarine/KEYS\n\n\n*This vote will run for 7 days, ending on DDDD/EE/FF at 11:59 pm PST.*\n\n\nFor the testing, I have verified the\n\n1. Build from source, Install Submarine on minikube\n\n2. Workbench UI (Experiment / Notebook / Template / Environment)\n\n3. Experiment / Notebook / Template / Environment REST API\n\n\nMy +1 to start. Thanks!\n\nBR,\nXXX\n\n")),Object(i.b)("h4",{id:"announce-voting-results-template"},"Announce voting results template"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"Title\uff1a[RESULT][VOTE] Release Apache Submarine ${release_version} ${rc_version}\n\nContent\uff1a\n\nHello Apache Submarine PMC and Community,\n  The vote closes now as 72hr have passed. The vote PASSES with\n  xx (+1 non-binding) votes from the PMC,\n  xx (+1 non-binding) vote from the rest of the developer community,\n  and no further 0 or -1 votes.\n\n  The vote thread:{vote_mail_address}\n\nThank you for your support.\nYour Submarine Release Manager\n")),Object(i.b)("h2",{id:"6-officially-released"},"6. Officially released"),Object(i.b)("h3",{id:"61-merge-the-changes-from-the-release-release_version-branch-to-the-master-branch"},"6.1 Merge the changes from the release-${release_version} branch to the master branch"),Object(i.b)("h3",{id:"62-release-the-version-in-the-apache-staging-repository"},"6.2 Release the version in the Apache Staging repository"),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},"Please make sure all artifacts are fine.")),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},"Log in to ",Object(i.b)("a",{parentName:"li",href:"http://repository.apache.org"},"http://repository.apache.org")," with your Apache account."),Object(i.b)("li",{parentName:"ol"},"Click on Staging repositories on the left."),Object(i.b)("li",{parentName:"ol"},"Search for Submarine keywords, select your recently uploaded repository, the repository specified in the voting email."),Object(i.b)("li",{parentName:"ol"},"Click the ",Object(i.b)("inlineCode",{parentName:"li"},"Release")," button above, and a series of checks will be carried out during this process.\n",Object(i.b)("strong",{parentName:"li"},"It usually takes 24 hours to wait for the repository to synchronize to other data sources"))),Object(i.b)("h3",{id:"63-update-official-website-link"},"6.3 Update official website link"),Object(i.b)("h3",{id:"64-send-an-email-todevsubmarineapacheorg"},"6.4. Send an email to",Object(i.b)("inlineCode",{parentName:"h3"},"dev@submarine.apache.org")),Object(i.b)("p",null,Object(i.b)("strong",{parentName:"p"},"Please make sure that the repository in 6.4 has been successfully released, generally the email is sent 24 hours after 6.4")),Object(i.b)("p",null,"Announce release email template:"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"Title\uff1a [ANNOUNCE] Apache Submarine ${release_version} release!\nContent\uff1a\nHi folks, It's a great honor for me to announce that the Apache Submarine Community\nhas released Apache Submarine ${release_version}!\nThe highlighted features are:\n1. AAA\n2. BBB\n3. CCC\n\nTons of thanks to our contributors and community!\nLet's keep fighting! *Apache Submarine ${release_version} released*:\nhttps://submarine.apache.org/docs/next/releases/submarine-release-${release_version}\n\nBR,\nXXXX\n")))}p.isMDXComponent=!0},194:function(e,t,a){"use strict";a.d(t,"a",(function(){return h})),a.d(t,"b",(function(){return d}));var n=a(0),r=a.n(n);function i(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function s(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?s(Object(a),!0).forEach((function(t){i(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):s(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function c(e,t){if(null==e)return{};var a,n,r=function(e,t){if(null==e)return{};var a,n,r={},i=Object.keys(e);for(n=0;n<i.length;n++)a=i[n],t.indexOf(a)>=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)a=i[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var l=r.a.createContext({}),p=function(e){var t=r.a.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},h=function(e){var t=p(e.components);return r.a.createElement(l.Provider,{value:t},e.children)},b={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},u=r.a.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,l=c(e,["components","mdxType","originalType","parentName"]),h=p(a),u=n,d=h["".concat(s,".").concat(u)]||h[u]||b[u]||i;return a?r.a.createElement(d,o(o({ref:t},l),{},{components:a})):r.a.createElement(d,o({ref:t},l))}));function d(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,s=new Array(i);s[0]=u;var o={};for(var c in t)hasOwnProperty.call(t,c)&&(o[c]=t[c]);o.originalType=e,o.mdxType="string"==typeof e?e:n,s[1]=o;for(var l=2;l<i;l++)s[l]=a[l];return r.a.createElement.apply(null,s)}return r.a.createElement.apply(null,a)}u.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/e3af4e10.b73ec906.js b/e3af4e10.2c97d2ab.js
similarity index 98%
rename from e3af4e10.b73ec906.js
rename to e3af4e10.2c97d2ab.js
index 326af44..da84795 100644
--- a/e3af4e10.b73ec906.js
+++ b/e3af4e10.2c97d2ab.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[122],{189:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return i})),n.d(t,"metadata",(function(){return s})),n.d(t,"toc",(function(){return l})),n.d(t,"default",(function(){return d}));var a=n(3),r=n(7),o=(n(0),n(209)),i={title:"Architecture and Requirment"},s={unversionedId:"designDocs/architecture-and-requirements",id:"designDocs/architecture-and-requirements",isDocsHomePage:!1,title:"Architecture and Requirment",description:"\x3c!--",source:"@site/docs/designDocs/architecture-and-requirements.md",slug:"/designDocs/architecture-and-requirements",permalink:"/docs/next/designDocs/architecture-and-requirements",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/designDocs/architecture-and-requirements.md",version:"current",sidebar:"docs",previous:{title:"How to become a Committer",permalink:"/docs/next/community/HowToBecomeCommitter"},next:{title:"Implementation Notes",permalink:"/docs/next/designDocs/implementation-notes"}},l=[{value:"Terminology",id:"terminology",children:[]},{value:"Background",id:"background",children:[]},{value:"Machine Learning Workflows &amp; Pain points",id:"machine-learning-workflows--pain-points",children:[{value:"Pain #1 Complex workflow/steps from raw data to model, different tools needed by different steps, hard to make changes to workflow, and not error-proof",id:"pain-1-complex-workflowsteps-from-raw-data-to-model-different-tools-needed-by-different-steps-hard-to-make-changes-to-workflow-and-not-error-proof",children:[]},{value:"Pain #2 Dependencies of underlying resource management platform",id:"pain-2-dependencies-of-underlying-resource-management-platform",children:[]},{value:"Pain #3 Data scientist are forced to interact with lower-level platform components",id:"pain-3-data-scientist-are-forced-to-interact-with-lower-level-platform-components",children:[]},{value:"Pain #4 Comply with data security/governance requirements",id:"pain-4-comply-with-data-securitygovernance-requirements",children:[]},{value:"Pain #5 No good way to reduce routine ML code development",id:"pain-5-no-good-way-to-reduce-routine-ml-code-development",children:[]}]},{value:"Overview",id:"overview",children:[{value:"A little bit history",id:"a-little-bit-history",children:[]},{value:"Why Submarine?",id:"why-submarine",children:[]}]},{value:"Requirements and non-requirements",id:"requirements-and-non-requirements",children:[{value:"Notebook",id:"notebook",children:[]},{value:"Experiment",id:"experiment",children:[]},{value:"Environment Profiles",id:"environment-profiles",children:[]},{value:"Model",id:"model",children:[]},{value:"Metrics for training job and model",id:"metrics-for-training-job-and-model",children:[]},{value:"Deployment",id:"deployment",children:[]},{value:"Security / Access Control / User Management / Quota Management",id:"security--access-control--user-management--quota-management",children:[]},{value:"Dataset",id:"dataset",children:[]}]},{value:"Architecture Overview",id:"architecture-overview",children:[{value:"Architecture Diagram",id:"architecture-diagram",children:[]}]}],c={toc:l};function d(e){var t=e.components,i=Object(r.a)(e,["components"]);return Object(o.b)("wrapper",Object(a.a)({},c,i,{components:t,mdxType:"MDXLayout"}),Object(o.b)("h2",{id:"terminology"},"Terminology"),Object(o.b)("table",null,Object(o.b)("thead",{parentName:"table"},Object(o.b)("tr",{parentName:"thead"},Object(o.b)("th",{parentName:"tr",align:null},"Term"),Object(o.b)("th",{parentName:"tr",align:null},"Description"))),Object(o.b)("tbody",{parentName:"table"},Object(o.b)("tr",{parentName:"tbody"},Object(o.b)("td",{parentName:"tr",align:null},"User"),Object(o.b)("td",{parentName:"tr",align:null},"A single data-scientist/data-engineer. User has resource quota, credentials")),Object(o.b)("tr",{parentName:"tbody"},Object(o.b)("td",{parentName:"tr",align:null},"Team"),Object(o.b)("td",{parentName:"tr",align:null},"User belongs to one or more teams, teams have ACLs for artifacts sharing such as notebook content, model, etc.")),Object(o.b)("tr",{parentName:"tbody"},Object(o.b)("td",{parentName:"tr",align:null},"Admin"),Object(o.b)("td",{parentName:"tr",align:null},"Also called SRE, who manages user's quotas, credentials, team, and other components.")))),Object(o.b)("h2",{id:"background"},"Background"),Object(o.b)("p",null,"Everybody talks about machine learning today, and lots of companies are trying to leverage machine learning to push the business to the next level. Nowadays, as more and more developers, infrastructure software companies coming to this field, machine learning becomes more and more achievable."),Object(o.b)("p",null,"In the last decade, the software industry has built many open source tools for machine learning to solve the pain points:"),Object(o.b)("ol",null,Object(o.b)("li",{parentName:"ol"},Object(o.b)("p",{parentName:"li"},"It was not easy to build machine learning algorithms manually, such as logistic regression, GBDT, and many other algorithms:\n",Object(o.b)("strong",{parentName:"p"},"Answer to that:")," Industries have open sourced many algorithm libraries, tools, and even pre-trained models so that data scientists can directly reuse these building blocks to hook up to their data without knowing intricate details inside these algorithms and models.")),Object(o.b)("li",{parentName:"ol"},Object(o.b)("p",{parentName:"li"},'It was not easy to achieve "WYSIWYG, what you see is what you get" from IDEs: not easy to get output, visualization, troubleshooting experiences at the same place.\n',Object(o.b)("strong",{parentName:"p"},"Answer to that:")," Notebooks concept was added to this picture, notebook brought the experiences of interactive coding, sharing, visualization, debugging under the same user interface. There're popular open-source notebooks like Apache Zeppelin/Jupyter.")),Object(o.b)("li",{parentName:"ol"},Object(o.b)("p",{parentName:"li"},"It was not easy to manage dependencies: ML applications can run on one machine is hard to deploy on another machine because it has lots of libraries dependencies.\n",Object(o.b)("strong",{parentName:"p"},"Answer to that:"),' Containerization becomes popular and a standard to packaging dependencies to make it easier to "build once, run anywhere".')),Object(o.b)("li",{parentName:"ol"},Object(o.b)("p",{parentName:"li"},"Fragmented tools, libraries were hard for ML engineers to learn. Experiences learned in one company are not naturally migratable to another company.\n",Object(o.b)("strong",{parentName:"p"},"Answer to that:")," A few dominant open-source frameworks reduced the overhead of learning too many different frameworks, concepts. Data-scientist can learn a few libraries such as Tensorflow/PyTorch, and a few high-level wrappers like Keras will be able to create your machine learning application from other open-source building blocks.")),Object(o.b)("li",{parentName:"ol"},Object(o.b)("p",{parentName:"li"},"Similarly, models built by one library (such as libsvm) were hard to be integrated into machine learning pipeline since there's no standard format.\n",Object(o.b)("strong",{parentName:"p"},"Answer to that:")," Industry has built successful open-source standard machine learning frameworks such as Tensorflow/PyTorch/Keras so their format can be easily shared across. And efforts to build an even more general model format such as ONNX.")),Object(o.b)("li",{parentName:"ol"},Object(o.b)("p",{parentName:"li"},"It was hard to build a data pipeline that flows/transform data from a raw data source to whatever required by ML applications.\n",Object(o.b)("strong",{parentName:"p"},"Answer to that:")," Open source big data industry plays an important role in providing, simplify, unify processes and building blocks for data flows, transformations, etc."))),Object(o.b)("p",null,"The machine learning industry is moving on the right track to solve major roadblocks. So what are the pain points now for companies which have machine learning needs? What can we help here? To answer this question, let's look at machine learning workflow first."),Object(o.b)("h2",{id:"machine-learning-workflows--pain-points"},"Machine Learning Workflows & Pain points"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"1) From different data sources such as edge, clickstream, logs, etc.\n   => Land to data lakes\n\n2) From data lake, data transformation:\n   => Data transformations: Cleanup, remove invalid rows/columns,\n                            select columns, sampling, split train/test\n                            data-set, join table, etc.\n   => Data prepared for training.\n\n3) From prepared data:\n   => Training, model hyper-parameter tuning, cross-validation, etc.\n   => Models saved to storage.\n\n4) From saved models:\n   => Model assurance, deployment, A/B testing, etc.\n   => Model deployed for online serving or offline scoring.\n")),Object(o.b)("p",null,"Typically data scientists responsible for item 2)-4), 1) typically handled by a different team (called Data Engineering team in many companies, some Data Engineering team also responsible for part of data transformation)"),Object(o.b)("h3",{id:"pain-1-complex-workflowsteps-from-raw-data-to-model-different-tools-needed-by-different-steps-hard-to-make-changes-to-workflow-and-not-error-proof"},"Pain ","#","1 Complex workflow/steps from raw data to model, different tools needed by different steps, hard to make changes to workflow, and not error-proof"),Object(o.b)("p",null,"It is a complex workflow from raw data to usable models, after talking to many different data scientists, we have learned that a typical procedure to train a new model and push to production can take months to 1-2 years."),Object(o.b)("p",null,"It is also a wide skill set required by this workflow. For example, data transformation needs tools like Spark/Hive for large scale and tools like Pandas for a small scale. And model training needs to be switched between XGBoost, Tensorflow, Keras, PyTorch. Building a data pipeline requires Apache Airflow or Oozie."),Object(o.b)("p",null,"Yes, there are great, standardized open-source tools built for many of such purposes. But how about changes need to be made for a particular part of the data pipeline? How about adding a few columns to the training data for experiments? How about training models, and push models to validation, A/B testing before rolling to production? All these steps need jumping between different tools, UIs, and very hard to make changes, and it is not error-proof during these procedures."),Object(o.b)("h3",{id:"pain-2-dependencies-of-underlying-resource-management-platform"},"Pain ","#","2 Dependencies of underlying resource management platform"),Object(o.b)("p",null,"To make jobs/services required by a machine learning platform to be able to run, we need an underlying resource management platform. There're some choices of resource management platform, and they have distinct advantages and disadvantages."),Object(o.b)("p",null,"For example, there're many machine learning platform built on top of K8s. It is relatively easy to get a K8s from a cloud vendor, easy to orchestrate machine learning required services/daemons run on K8s. However, K8s doesn't offer good support jobs like Spark/Flink/Hive. So if your company has Spark/Flink/Hive running on YARN, there're gaps and a significant amount of work to move required jobs from YARN to K8s. Maintaining a separate K8s cluster is also overhead to Hadoop-based data infrastructure."),Object(o.b)("p",null,"Similarly, if your company's data pipelines are mostly built on top of cloud resources and SaaS offerings, asking you to install a separate YARN cluster to run a new machine learning platform doesn't make a lot of sense."),Object(o.b)("h3",{id:"pain-3-data-scientist-are-forced-to-interact-with-lower-level-platform-components"},"Pain ","#","3 Data scientist are forced to interact with lower-level platform components"),Object(o.b)("p",null,"In addition to the above pain, we do see Data Scientists are forced to learn underlying platform knowledge to be able to build a real-world machine learning workflow."),Object(o.b)("p",null,"For most of the data scientists we talked with, they're experts of ML algorithms/libraries, feature engineering, etc. They're also most familiar with Python, R, and some of them understand Spark, Hive, etc."),Object(o.b)("p",null,"If they're asked to do interactions with lower-level components like fine-tuning a Spark job's performance; or troubleshooting job failed to launch because of resource constraints; or write a K8s/YARN job spec and mount volumes, set networks properly. They will scratch their heads and typically cannot perform these operations efficiently."),Object(o.b)("h3",{id:"pain-4-comply-with-data-securitygovernance-requirements"},"Pain ","#","4 Comply with data security/governance requirements"),Object(o.b)("p",null,"TODO: Add more details."),Object(o.b)("h3",{id:"pain-5-no-good-way-to-reduce-routine-ml-code-development"},"Pain ","#","5 No good way to reduce routine ML code development"),Object(o.b)("p",null,"After the data is prepared, the data scientist needs to do several routine tasks to build the ML pipeline. To get a sense of the existing the data set, it usually needs a split of the data set, the statistics of data set. These tasks have a common duplicate part of code, which reduces the efficiency of data scientists."),Object(o.b)("p",null,"An abstraction layer/framework to help the developer to boost ML pipeline development could be valuable. It's better than the developer only needs to fill callback function to focus on their key logic."),Object(o.b)("h1",{id:"submarine"},"Submarine"),Object(o.b)("h2",{id:"overview"},"Overview"),Object(o.b)("h3",{id:"a-little-bit-history"},"A little bit history"),Object(o.b)("p",null,"Initially, Submarine is built to solve problems of running deep learning jobs like Tensorflow/PyTorch on Apache Hadoop YARN, allows admin to monitor launched deep learning jobs, and manage generated models."),Object(o.b)("p",null,"It was part of YARN initially, and code resides under ",Object(o.b)("inlineCode",{parentName:"p"},"hadoop-yarn-applications"),". Later, the community decided to convert it to be a subproject within Hadoop (Sibling project of YARN, HDFS, etc.) because we want to support other resource management platforms like K8s. And finally, we're reconsidering Submarine's charter, and the Hadoop community voted that it is the time to moved Submarine to a separate Apache TLP."),Object(o.b)("h3",{id:"why-submarine"},"Why Submarine?"),Object(o.b)("p",null,Object(o.b)("inlineCode",{parentName:"p"},"ONE PLATFORM")),Object(o.b)("p",null,"Submarine is the ONE PLATFORM to allow Data Scientists to create end-to-end machine learning workflow. ",Object(o.b)("inlineCode",{parentName:"p"},"ONE PLATFORM")," means it supports Data Scientists and data engineers to finish their jobs on the same platform without frequently switching their toolsets. From dataset exploring data pipeline creation, model training, and tuning, and push model to production. All these steps can be completed within the ",Object(o.b)("inlineCode",{parentName:"p"},"ONE PLATFORM"),"."),Object(o.b)("p",null,Object(o.b)("inlineCode",{parentName:"p"},"Resource Management Independent")),Object(o.b)("p",null,"It is also designed to be resource management independent, no matter if you have Apache Hadoop YARN, K8s, or just a container service, you will be able to run Submarine on top it."),Object(o.b)("h2",{id:"requirements-and-non-requirements"},"Requirements and non-requirements"),Object(o.b)("h3",{id:"notebook"},"Notebook"),Object(o.b)("p",null,"1) Users should be able to create, edit, delete a notebook. (P0)\n2) Notebooks can be persisted to storage and can be recovered if failure happens. (P0)\n3) Users can trace back to history versions of a notebook. (P1)\n4) Notebooks can be shared with different users. (P1)\n5) Users can define a list of parameters of a notebook (looks like parameters of the notebook's main function) to allow executing a notebook like a job. (P1)\n6) Different users can collaborate on the same notebook at the same time. (P2)"),Object(o.b)("p",null,"A running notebook instance is called notebook session (or session for short)."),Object(o.b)("h3",{id:"experiment"},"Experiment"),Object(o.b)("p",null,"Experiments of Submarine is an offline task. It could be a shell command, a Python command, a Spark job, a SQL query, or even a workflow."),Object(o.b)("p",null,"The primary purposes of experiments under Submarine's context is to do training tasks, offline scoring, etc. However, experiment can be generalized to do other tasks as well."),Object(o.b)("p",null,"Major requirement of experiment:"),Object(o.b)("p",null,"1) Experiments can be submitted from UI/CLI/SDK.\n2) Experiments can be monitored/managed from UI/CLI/SDK.\n3) Experiments should not bind to one resource management platform (K8s)."),Object(o.b)("h4",{id:"type-of-experiments"},"Type of experiments"),Object(o.b)("p",null,Object(o.b)("img",{src:n(252).default})),Object(o.b)("p",null,"There're two types of experiments:\n",Object(o.b)("inlineCode",{parentName:"p"},"Adhoc experiments"),": which includes a Python/R/notebook, or even an adhoc Tensorflow/PyTorch task, etc."),Object(o.b)("p",null,Object(o.b)("inlineCode",{parentName:"p"},"Predefined experiment library"),": This is specialized experiments, which including developed libraries such as CTR, BERT, etc. Users are only required to specify a few parameters such as input, output, hyper parameters, etc. Instead of worrying about where's training script/dependencies located."),Object(o.b)("h4",{id:"adhoc-experiment"},"Adhoc experiment"),Object(o.b)("p",null,"Requirements:"),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},"Allow run adhoc scripts."),Object(o.b)("li",{parentName:"ul"},"Allow model engineer, data scientist to run Tensorflow/Pytorch programs on K8s/Container-cloud."),Object(o.b)("li",{parentName:"ul"},"Allow jobs easy access data/models in HDFS/s3, etc."),Object(o.b)("li",{parentName:"ul"},"Support run distributed Tensorflow/Pytorch jobs with simple configs."),Object(o.b)("li",{parentName:"ul"},"Support run user-specified Docker images."),Object(o.b)("li",{parentName:"ul"},"Support specify GPU and other resources.")),Object(o.b)("h4",{id:"predefined-experiment-library"},"Predefined experiment library"),Object(o.b)("p",null,"Here's an example of predefined experiment library to train deepfm model:"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},'{\n  "input": {\n    "train_data": ["hdfs:///user/submarine/data/tr.libsvm"],\n    "valid_data": ["hdfs:///user/submarine/data/va.libsvm"],\n    "test_data": ["hdfs:///user/submarine/data/te.libsvm"],\n    "type": "libsvm"\n  },\n  "output": {\n    "save_model_dir": "hdfs:///user/submarine/deepfm",\n    "metric": "auc"\n  },\n  "training": {\n    "batch_size" : 512,\n    "field_size": 39,\n    "num_epochs": 3,\n    "feature_size": 117581,\n    ...\n  }\n}\n')),Object(o.b)("p",null,"Predefined experiment libraries can be shared across users on the same platform, users can also add new or modified predefined experiment library via UI/REST API."),Object(o.b)("p",null,"We will also model AutoML, auto hyper-parameter tuning to predefined experiment library."),Object(o.b)("h4",{id:"pipeline"},"Pipeline"),Object(o.b)("p",null,"Pipeline is a special kind of experiment:"),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},"A pipeline is a DAG of experiments."),Object(o.b)("li",{parentName:"ul"},"Can be also treated as a special kind of experiment."),Object(o.b)("li",{parentName:"ul"},"Users can submit/terminate a pipeline."),Object(o.b)("li",{parentName:"ul"},"Pipeline can be created/submitted via UI/API.")),Object(o.b)("h3",{id:"environment-profiles"},"Environment Profiles"),Object(o.b)("p",null,"Environment profiles (or environment for short) defines a set of libraries and when Docker is being used, a Docker image in order to run an experiment or a notebook."),Object(o.b)("p",null,"Docker or VM image (such as AMI: Amazon Machine Images) defines the base layer of the environment."),Object(o.b)("p",null,"On top of that, users can define a set of libraries (such as Python/R) to install."),Object(o.b)("p",null,"Users can save different environment configs which can be also shared across the platform. Environment profiles can be used to run a notebook (e.g. by choosing different kernel from Jupyter), or an experiment. Predefined experiment library includes what environment to use so users don't have to choose which environment to use."),Object(o.b)("p",null,"Environments can be added/listed/deleted/selected through CLI/SDK."),Object(o.b)("h3",{id:"model"},"Model"),Object(o.b)("h4",{id:"model-management"},"Model management"),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},"Model artifacts are generated by experiments or notebook."),Object(o.b)("li",{parentName:"ul"},"A model consists of artifacts from one or multiple files."),Object(o.b)("li",{parentName:"ul"},"Users can choose to save, tag, version a produced model."),Object(o.b)("li",{parentName:"ul"},"Once The Model is saved, Users can do the online model serving or offline scoring of the model.")),Object(o.b)("h4",{id:"model-serving"},"Model serving"),Object(o.b)("p",null,"After model saved, users can specify a serving script, a model and create a web service to serve the model."),Object(o.b)("p",null,'We call the web service to "endpoint". Users can manage (add/stop) model serving endpoints via CLI/API/UI.'),Object(o.b)("h3",{id:"metrics-for-training-job-and-model"},"Metrics for training job and model"),Object(o.b)("p",null,"Submarine-SDK provides tracking/metrics APIs, which allows developers to add tracking/metrics and view tracking/metrics from Submarine Workbench UI."),Object(o.b)("h3",{id:"deployment"},"Deployment"),Object(o.b)("p",null,"Submarine Services (See architecture overview below) should be deployed easily on-prem / on-cloud. Since there're more and more public cloud offering for compute/storage management on cloud, we need to support deploy Submarine compute-related workloads (such as notebook session, experiments, etc.) to cloud-managed clusters."),Object(o.b)("p",null,"This also include Submarine may need to take input parameters from customers and create/manage clusters if needed. It is also a common requirement to use hybrid of on-prem/on-cloud clusters."),Object(o.b)("h3",{id:"security--access-control--user-management--quota-management"},"Security / Access Control / User Management / Quota Management"),Object(o.b)("p",null,"There're 4 kinds of objects need access-control:"),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},"Assets belong to Submarine system, which includes notebook, experiments and results, models, predefined experiment libraries, environment profiles."),Object(o.b)("li",{parentName:"ul"},"Data security. (Who owns what data, and what data can be accessed by each users)."),Object(o.b)("li",{parentName:"ul"},"User credentials. (Such as LDAP)."),Object(o.b)("li",{parentName:"ul"},"Other security, such as Git repo access, etc.")),Object(o.b)("p",null,"For the data security / user credentials / other security, it will be delegated to 3rd libraries such as Apache Ranger, IAM roles, etc."),Object(o.b)("p",null,"Assets belong to Submarine system will be handled by Submarine itself."),Object(o.b)("p",null,"Here're operations which Submarine admin can do for users / teams which can be used to access Submarine's assets."),Object(o.b)("p",null,Object(o.b)("strong",{parentName:"p"},"Operations for admins")),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},'Admin uses "User Management System" to onboard new users, upload user credentials, assign resource quotas, etc.'),Object(o.b)("li",{parentName:"ul"},"Admins can create new users, new teams, update user/team mappings. Or remove users/teams."),Object(o.b)("li",{parentName:"ul"},"Admin can set resource quotas (if different from system default), permissions, upload/update necessary credentials (like Kerberos keytab) of a user."),Object(o.b)("li",{parentName:"ul"},"A DE/DS can also be an admin if the DE/DS has admin access. (Like a privileged user). This will be useful when a cluster is exclusively shared by a user or only shared by a small team."),Object(o.b)("li",{parentName:"ul"},Object(o.b)("inlineCode",{parentName:"li"},"Resource Quota Management System")," helps admin to manage resources quotas of teams, organizations. Resources can be machine resources like CPU/Memory/Disk, etc. It can also include non-machine resources like $$-based budgets.")),Object(o.b)("h3",{id:"dataset"},"Dataset"),Object(o.b)("p",null,"There's also need to tag dataset which will be used for training and shared across the platform by different users."),Object(o.b)("p",null,"Like mentioned above, access to the actual data will be handled by 3rd party system like Apache Ranger / Hive Metastore which is out of the Submarine's scope."),Object(o.b)("h2",{id:"architecture-overview"},"Architecture Overview"),Object(o.b)("h3",{id:"architecture-diagram"},"Architecture Diagram"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"     +-----------------------------------------------------------------+\n     |            Submarine UI / CLI / REST API / SDK                  |\n     |                 Mini-Submarine                                  |\n     +-----------------------------------------------------------------+\n\n     +--------------------Submarine Server-----------------------------+\n     | +---------+ +---------+ +----------+ +----------+ +------------+|\n     | |Data set | |Notebooks| |Experiment| |Models    | |Servings    ||\n     | +---------+ +---------+ +----------+ +----------+ +------------+|\n     |-----------------------------------------------------------------|\n     |                                                                 |\n     | +-----------------+ +-----------------+ +---------------------+ |\n     | |Experiment       | |Compute Resource | |Other Management     | |\n     | |Manager          | |   Manager       | |Services             | |\n     | +-----------------+ +-----------------+ +---------------------+ |\n     |   Spark, template      K8s/Docker                          |\n     |   TF, PyTorch, pipeline                                         |\n     |                                                                 |\n     + +-----------------+                                             +\n     | |Submarine Meta   |                                             |\n     | |    Store        |                                             |\n     | +-----------------+                                             |\n     |                                                                 |\n     +-----------------------------------------------------------------+\n\n      (You can use http://stable.ascii-flow.appspot.com/#Draw\n      to draw such diagrams)\n")),Object(o.b)("p",null,Object(o.b)("inlineCode",{parentName:"p"},"Compute Resource Manager")," Helps to manage compute resources on-prem/on-cloud, this module can also handle cluster creation / management, etc."),Object(o.b)("p",null,Object(o.b)("inlineCode",{parentName:"p"},"Experiment Manager"),' Work with "Compute Resource Manager" to submit different kinds of workloads such as (distributed) Tensorflow / Pytorch, etc.'),Object(o.b)("p",null,Object(o.b)("inlineCode",{parentName:"p"},"Submarine SDK")," provides Java/Python/REST API to allow DS or other engineers to integrate into Submarine services. It also includes a ",Object(o.b)("inlineCode",{parentName:"p"},"mini-submarine")," component that launches Submarine components from a single Docker container (or a VM image)."),Object(o.b)("p",null,"Details of Submarine Server design can be found at ",Object(o.b)("a",{parentName:"p",href:"/docs/next/designDocs/submarine-server/architecture"},"submarine-server-design"),"."))}d.isMDXComponent=!0},209:function(e,t,n){"use strict";n.d(t,"a",(function(){return m})),n.d(t,"b",(function(){return u}));var a=n(0),r=n.n(a);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},o=Object.keys(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var c=r.a.createContext({}),d=function(e){var t=r.a.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},m=function(e){var t=d(e.components);return r.a.createElement(c.Provider,{value:t},e.children)},b={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},p=r.a.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,i=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),m=d(n),p=a,u=m["".concat(i,".").concat(p)]||m[p]||b[p]||o;return n?r.a.createElement(u,s(s({ref:t},c),{},{components:n})):r.a.createElement(u,s({ref:t},c))}));function u(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=p;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s.mdxType="string"==typeof e?e:a,i[1]=s;for(var c=2;c<o;c++)i[c]=n[c];return r.a.createElement.apply(null,i)}return r.a.createElement.apply(null,n)}p.displayName="MDXCreateElement"},252:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/experiments-7a09831687ecbc0e1dcf01b0c6f45445.png"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[110],{177:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return i})),n.d(t,"metadata",(function(){return s})),n.d(t,"toc",(function(){return l})),n.d(t,"default",(function(){return d}));var a=n(3),r=n(7),o=(n(0),n(194)),i={title:"Architecture and Requirment"},s={unversionedId:"designDocs/architecture-and-requirements",id:"designDocs/architecture-and-requirements",isDocsHomePage:!1,title:"Architecture and Requirment",description:"\x3c!--",source:"@site/docs/designDocs/architecture-and-requirements.md",slug:"/designDocs/architecture-and-requirements",permalink:"/docs/next/designDocs/architecture-and-requirements",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/designDocs/architecture-and-requirements.md",version:"current",sidebar:"docs",previous:{title:"How to become a Committer",permalink:"/docs/next/community/HowToBecomeCommitter"},next:{title:"Implementation Notes",permalink:"/docs/next/designDocs/implementation-notes"}},l=[{value:"Terminology",id:"terminology",children:[]},{value:"Background",id:"background",children:[]},{value:"Machine Learning Workflows &amp; Pain points",id:"machine-learning-workflows--pain-points",children:[{value:"Pain #1 Complex workflow/steps from raw data to model, different tools needed by different steps, hard to make changes to workflow, and not error-proof",id:"pain-1-complex-workflowsteps-from-raw-data-to-model-different-tools-needed-by-different-steps-hard-to-make-changes-to-workflow-and-not-error-proof",children:[]},{value:"Pain #2 Dependencies of underlying resource management platform",id:"pain-2-dependencies-of-underlying-resource-management-platform",children:[]},{value:"Pain #3 Data scientist are forced to interact with lower-level platform components",id:"pain-3-data-scientist-are-forced-to-interact-with-lower-level-platform-components",children:[]},{value:"Pain #4 Comply with data security/governance requirements",id:"pain-4-comply-with-data-securitygovernance-requirements",children:[]},{value:"Pain #5 No good way to reduce routine ML code development",id:"pain-5-no-good-way-to-reduce-routine-ml-code-development",children:[]}]},{value:"Overview",id:"overview",children:[{value:"A little bit history",id:"a-little-bit-history",children:[]},{value:"Why Submarine?",id:"why-submarine",children:[]}]},{value:"Requirements and non-requirements",id:"requirements-and-non-requirements",children:[{value:"Notebook",id:"notebook",children:[]},{value:"Experiment",id:"experiment",children:[]},{value:"Environment Profiles",id:"environment-profiles",children:[]},{value:"Model",id:"model",children:[]},{value:"Metrics for training job and model",id:"metrics-for-training-job-and-model",children:[]},{value:"Deployment",id:"deployment",children:[]},{value:"Security / Access Control / User Management / Quota Management",id:"security--access-control--user-management--quota-management",children:[]},{value:"Dataset",id:"dataset",children:[]}]},{value:"Architecture Overview",id:"architecture-overview",children:[{value:"Architecture Diagram",id:"architecture-diagram",children:[]}]}],c={toc:l};function d(e){var t=e.components,i=Object(r.a)(e,["components"]);return Object(o.b)("wrapper",Object(a.a)({},c,i,{components:t,mdxType:"MDXLayout"}),Object(o.b)("h2",{id:"terminology"},"Terminology"),Object(o.b)("table",null,Object(o.b)("thead",{parentName:"table"},Object(o.b)("tr",{parentName:"thead"},Object(o.b)("th",{parentName:"tr",align:null},"Term"),Object(o.b)("th",{parentName:"tr",align:null},"Description"))),Object(o.b)("tbody",{parentName:"table"},Object(o.b)("tr",{parentName:"tbody"},Object(o.b)("td",{parentName:"tr",align:null},"User"),Object(o.b)("td",{parentName:"tr",align:null},"A single data-scientist/data-engineer. User has resource quota, credentials")),Object(o.b)("tr",{parentName:"tbody"},Object(o.b)("td",{parentName:"tr",align:null},"Team"),Object(o.b)("td",{parentName:"tr",align:null},"User belongs to one or more teams, teams have ACLs for artifacts sharing such as notebook content, model, etc.")),Object(o.b)("tr",{parentName:"tbody"},Object(o.b)("td",{parentName:"tr",align:null},"Admin"),Object(o.b)("td",{parentName:"tr",align:null},"Also called SRE, who manages user's quotas, credentials, team, and other components.")))),Object(o.b)("h2",{id:"background"},"Background"),Object(o.b)("p",null,"Everybody talks about machine learning today, and lots of companies are trying to leverage machine learning to push the business to the next level. Nowadays, as more and more developers, infrastructure software companies coming to this field, machine learning becomes more and more achievable."),Object(o.b)("p",null,"In the last decade, the software industry has built many open source tools for machine learning to solve the pain points:"),Object(o.b)("ol",null,Object(o.b)("li",{parentName:"ol"},Object(o.b)("p",{parentName:"li"},"It was not easy to build machine learning algorithms manually, such as logistic regression, GBDT, and many other algorithms:\n",Object(o.b)("strong",{parentName:"p"},"Answer to that:")," Industries have open sourced many algorithm libraries, tools, and even pre-trained models so that data scientists can directly reuse these building blocks to hook up to their data without knowing intricate details inside these algorithms and models.")),Object(o.b)("li",{parentName:"ol"},Object(o.b)("p",{parentName:"li"},'It was not easy to achieve "WYSIWYG, what you see is what you get" from IDEs: not easy to get output, visualization, troubleshooting experiences at the same place.\n',Object(o.b)("strong",{parentName:"p"},"Answer to that:")," Notebooks concept was added to this picture, notebook brought the experiences of interactive coding, sharing, visualization, debugging under the same user interface. There're popular open-source notebooks like Apache Zeppelin/Jupyter.")),Object(o.b)("li",{parentName:"ol"},Object(o.b)("p",{parentName:"li"},"It was not easy to manage dependencies: ML applications can run on one machine is hard to deploy on another machine because it has lots of libraries dependencies.\n",Object(o.b)("strong",{parentName:"p"},"Answer to that:"),' Containerization becomes popular and a standard to packaging dependencies to make it easier to "build once, run anywhere".')),Object(o.b)("li",{parentName:"ol"},Object(o.b)("p",{parentName:"li"},"Fragmented tools, libraries were hard for ML engineers to learn. Experiences learned in one company are not naturally migratable to another company.\n",Object(o.b)("strong",{parentName:"p"},"Answer to that:")," A few dominant open-source frameworks reduced the overhead of learning too many different frameworks, concepts. Data-scientist can learn a few libraries such as Tensorflow/PyTorch, and a few high-level wrappers like Keras will be able to create your machine learning application from other open-source building blocks.")),Object(o.b)("li",{parentName:"ol"},Object(o.b)("p",{parentName:"li"},"Similarly, models built by one library (such as libsvm) were hard to be integrated into machine learning pipeline since there's no standard format.\n",Object(o.b)("strong",{parentName:"p"},"Answer to that:")," Industry has built successful open-source standard machine learning frameworks such as Tensorflow/PyTorch/Keras so their format can be easily shared across. And efforts to build an even more general model format such as ONNX.")),Object(o.b)("li",{parentName:"ol"},Object(o.b)("p",{parentName:"li"},"It was hard to build a data pipeline that flows/transform data from a raw data source to whatever required by ML applications.\n",Object(o.b)("strong",{parentName:"p"},"Answer to that:")," Open source big data industry plays an important role in providing, simplify, unify processes and building blocks for data flows, transformations, etc."))),Object(o.b)("p",null,"The machine learning industry is moving on the right track to solve major roadblocks. So what are the pain points now for companies which have machine learning needs? What can we help here? To answer this question, let's look at machine learning workflow first."),Object(o.b)("h2",{id:"machine-learning-workflows--pain-points"},"Machine Learning Workflows & Pain points"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"1) From different data sources such as edge, clickstream, logs, etc.\n   => Land to data lakes\n\n2) From data lake, data transformation:\n   => Data transformations: Cleanup, remove invalid rows/columns,\n                            select columns, sampling, split train/test\n                            data-set, join table, etc.\n   => Data prepared for training.\n\n3) From prepared data:\n   => Training, model hyper-parameter tuning, cross-validation, etc.\n   => Models saved to storage.\n\n4) From saved models:\n   => Model assurance, deployment, A/B testing, etc.\n   => Model deployed for online serving or offline scoring.\n")),Object(o.b)("p",null,"Typically data scientists responsible for item 2)-4), 1) typically handled by a different team (called Data Engineering team in many companies, some Data Engineering team also responsible for part of data transformation)"),Object(o.b)("h3",{id:"pain-1-complex-workflowsteps-from-raw-data-to-model-different-tools-needed-by-different-steps-hard-to-make-changes-to-workflow-and-not-error-proof"},"Pain ","#","1 Complex workflow/steps from raw data to model, different tools needed by different steps, hard to make changes to workflow, and not error-proof"),Object(o.b)("p",null,"It is a complex workflow from raw data to usable models, after talking to many different data scientists, we have learned that a typical procedure to train a new model and push to production can take months to 1-2 years."),Object(o.b)("p",null,"It is also a wide skill set required by this workflow. For example, data transformation needs tools like Spark/Hive for large scale and tools like Pandas for a small scale. And model training needs to be switched between XGBoost, Tensorflow, Keras, PyTorch. Building a data pipeline requires Apache Airflow or Oozie."),Object(o.b)("p",null,"Yes, there are great, standardized open-source tools built for many of such purposes. But how about changes need to be made for a particular part of the data pipeline? How about adding a few columns to the training data for experiments? How about training models, and push models to validation, A/B testing before rolling to production? All these steps need jumping between different tools, UIs, and very hard to make changes, and it is not error-proof during these procedures."),Object(o.b)("h3",{id:"pain-2-dependencies-of-underlying-resource-management-platform"},"Pain ","#","2 Dependencies of underlying resource management platform"),Object(o.b)("p",null,"To make jobs/services required by a machine learning platform to be able to run, we need an underlying resource management platform. There're some choices of resource management platform, and they have distinct advantages and disadvantages."),Object(o.b)("p",null,"For example, there're many machine learning platform built on top of K8s. It is relatively easy to get a K8s from a cloud vendor, easy to orchestrate machine learning required services/daemons run on K8s. However, K8s doesn't offer good support jobs like Spark/Flink/Hive. So if your company has Spark/Flink/Hive running on YARN, there're gaps and a significant amount of work to move required jobs from YARN to K8s. Maintaining a separate K8s cluster is also overhead to Hadoop-based data infrastructure."),Object(o.b)("p",null,"Similarly, if your company's data pipelines are mostly built on top of cloud resources and SaaS offerings, asking you to install a separate YARN cluster to run a new machine learning platform doesn't make a lot of sense."),Object(o.b)("h3",{id:"pain-3-data-scientist-are-forced-to-interact-with-lower-level-platform-components"},"Pain ","#","3 Data scientist are forced to interact with lower-level platform components"),Object(o.b)("p",null,"In addition to the above pain, we do see Data Scientists are forced to learn underlying platform knowledge to be able to build a real-world machine learning workflow."),Object(o.b)("p",null,"For most of the data scientists we talked with, they're experts of ML algorithms/libraries, feature engineering, etc. They're also most familiar with Python, R, and some of them understand Spark, Hive, etc."),Object(o.b)("p",null,"If they're asked to do interactions with lower-level components like fine-tuning a Spark job's performance; or troubleshooting job failed to launch because of resource constraints; or write a K8s/YARN job spec and mount volumes, set networks properly. They will scratch their heads and typically cannot perform these operations efficiently."),Object(o.b)("h3",{id:"pain-4-comply-with-data-securitygovernance-requirements"},"Pain ","#","4 Comply with data security/governance requirements"),Object(o.b)("p",null,"TODO: Add more details."),Object(o.b)("h3",{id:"pain-5-no-good-way-to-reduce-routine-ml-code-development"},"Pain ","#","5 No good way to reduce routine ML code development"),Object(o.b)("p",null,"After the data is prepared, the data scientist needs to do several routine tasks to build the ML pipeline. To get a sense of the existing the data set, it usually needs a split of the data set, the statistics of data set. These tasks have a common duplicate part of code, which reduces the efficiency of data scientists."),Object(o.b)("p",null,"An abstraction layer/framework to help the developer to boost ML pipeline development could be valuable. It's better than the developer only needs to fill callback function to focus on their key logic."),Object(o.b)("h1",{id:"submarine"},"Submarine"),Object(o.b)("h2",{id:"overview"},"Overview"),Object(o.b)("h3",{id:"a-little-bit-history"},"A little bit history"),Object(o.b)("p",null,"Initially, Submarine is built to solve problems of running deep learning jobs like Tensorflow/PyTorch on Apache Hadoop YARN, allows admin to monitor launched deep learning jobs, and manage generated models."),Object(o.b)("p",null,"It was part of YARN initially, and code resides under ",Object(o.b)("inlineCode",{parentName:"p"},"hadoop-yarn-applications"),". Later, the community decided to convert it to be a subproject within Hadoop (Sibling project of YARN, HDFS, etc.) because we want to support other resource management platforms like K8s. And finally, we're reconsidering Submarine's charter, and the Hadoop community voted that it is the time to moved Submarine to a separate Apache TLP."),Object(o.b)("h3",{id:"why-submarine"},"Why Submarine?"),Object(o.b)("p",null,Object(o.b)("inlineCode",{parentName:"p"},"ONE PLATFORM")),Object(o.b)("p",null,"Submarine is the ONE PLATFORM to allow Data Scientists to create end-to-end machine learning workflow. ",Object(o.b)("inlineCode",{parentName:"p"},"ONE PLATFORM")," means it supports Data Scientists and data engineers to finish their jobs on the same platform without frequently switching their toolsets. From dataset exploring data pipeline creation, model training, and tuning, and push model to production. All these steps can be completed within the ",Object(o.b)("inlineCode",{parentName:"p"},"ONE PLATFORM"),"."),Object(o.b)("p",null,Object(o.b)("inlineCode",{parentName:"p"},"Resource Management Independent")),Object(o.b)("p",null,"It is also designed to be resource management independent, no matter if you have Apache Hadoop YARN, K8s, or just a container service, you will be able to run Submarine on top it."),Object(o.b)("h2",{id:"requirements-and-non-requirements"},"Requirements and non-requirements"),Object(o.b)("h3",{id:"notebook"},"Notebook"),Object(o.b)("p",null,"1) Users should be able to create, edit, delete a notebook. (P0)\n2) Notebooks can be persisted to storage and can be recovered if failure happens. (P0)\n3) Users can trace back to history versions of a notebook. (P1)\n4) Notebooks can be shared with different users. (P1)\n5) Users can define a list of parameters of a notebook (looks like parameters of the notebook's main function) to allow executing a notebook like a job. (P1)\n6) Different users can collaborate on the same notebook at the same time. (P2)"),Object(o.b)("p",null,"A running notebook instance is called notebook session (or session for short)."),Object(o.b)("h3",{id:"experiment"},"Experiment"),Object(o.b)("p",null,"Experiments of Submarine is an offline task. It could be a shell command, a Python command, a Spark job, a SQL query, or even a workflow."),Object(o.b)("p",null,"The primary purposes of experiments under Submarine's context is to do training tasks, offline scoring, etc. However, experiment can be generalized to do other tasks as well."),Object(o.b)("p",null,"Major requirement of experiment:"),Object(o.b)("p",null,"1) Experiments can be submitted from UI/CLI/SDK.\n2) Experiments can be monitored/managed from UI/CLI/SDK.\n3) Experiments should not bind to one resource management platform (K8s)."),Object(o.b)("h4",{id:"type-of-experiments"},"Type of experiments"),Object(o.b)("p",null,Object(o.b)("img",{src:n(235).default})),Object(o.b)("p",null,"There're two types of experiments:\n",Object(o.b)("inlineCode",{parentName:"p"},"Adhoc experiments"),": which includes a Python/R/notebook, or even an adhoc Tensorflow/PyTorch task, etc."),Object(o.b)("p",null,Object(o.b)("inlineCode",{parentName:"p"},"Predefined experiment library"),": This is specialized experiments, which including developed libraries such as CTR, BERT, etc. Users are only required to specify a few parameters such as input, output, hyper parameters, etc. Instead of worrying about where's training script/dependencies located."),Object(o.b)("h4",{id:"adhoc-experiment"},"Adhoc experiment"),Object(o.b)("p",null,"Requirements:"),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},"Allow run adhoc scripts."),Object(o.b)("li",{parentName:"ul"},"Allow model engineer, data scientist to run Tensorflow/Pytorch programs on K8s/Container-cloud."),Object(o.b)("li",{parentName:"ul"},"Allow jobs easy access data/models in HDFS/s3, etc."),Object(o.b)("li",{parentName:"ul"},"Support run distributed Tensorflow/Pytorch jobs with simple configs."),Object(o.b)("li",{parentName:"ul"},"Support run user-specified Docker images."),Object(o.b)("li",{parentName:"ul"},"Support specify GPU and other resources.")),Object(o.b)("h4",{id:"predefined-experiment-library"},"Predefined experiment library"),Object(o.b)("p",null,"Here's an example of predefined experiment library to train deepfm model:"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},'{\n  "input": {\n    "train_data": ["hdfs:///user/submarine/data/tr.libsvm"],\n    "valid_data": ["hdfs:///user/submarine/data/va.libsvm"],\n    "test_data": ["hdfs:///user/submarine/data/te.libsvm"],\n    "type": "libsvm"\n  },\n  "output": {\n    "save_model_dir": "hdfs:///user/submarine/deepfm",\n    "metric": "auc"\n  },\n  "training": {\n    "batch_size" : 512,\n    "field_size": 39,\n    "num_epochs": 3,\n    "feature_size": 117581,\n    ...\n  }\n}\n')),Object(o.b)("p",null,"Predefined experiment libraries can be shared across users on the same platform, users can also add new or modified predefined experiment library via UI/REST API."),Object(o.b)("p",null,"We will also model AutoML, auto hyper-parameter tuning to predefined experiment library."),Object(o.b)("h4",{id:"pipeline"},"Pipeline"),Object(o.b)("p",null,"Pipeline is a special kind of experiment:"),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},"A pipeline is a DAG of experiments."),Object(o.b)("li",{parentName:"ul"},"Can be also treated as a special kind of experiment."),Object(o.b)("li",{parentName:"ul"},"Users can submit/terminate a pipeline."),Object(o.b)("li",{parentName:"ul"},"Pipeline can be created/submitted via UI/API.")),Object(o.b)("h3",{id:"environment-profiles"},"Environment Profiles"),Object(o.b)("p",null,"Environment profiles (or environment for short) defines a set of libraries and when Docker is being used, a Docker image in order to run an experiment or a notebook."),Object(o.b)("p",null,"Docker or VM image (such as AMI: Amazon Machine Images) defines the base layer of the environment."),Object(o.b)("p",null,"On top of that, users can define a set of libraries (such as Python/R) to install."),Object(o.b)("p",null,"Users can save different environment configs which can be also shared across the platform. Environment profiles can be used to run a notebook (e.g. by choosing different kernel from Jupyter), or an experiment. Predefined experiment library includes what environment to use so users don't have to choose which environment to use."),Object(o.b)("p",null,"Environments can be added/listed/deleted/selected through CLI/SDK."),Object(o.b)("h3",{id:"model"},"Model"),Object(o.b)("h4",{id:"model-management"},"Model management"),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},"Model artifacts are generated by experiments or notebook."),Object(o.b)("li",{parentName:"ul"},"A model consists of artifacts from one or multiple files."),Object(o.b)("li",{parentName:"ul"},"Users can choose to save, tag, version a produced model."),Object(o.b)("li",{parentName:"ul"},"Once The Model is saved, Users can do the online model serving or offline scoring of the model.")),Object(o.b)("h4",{id:"model-serving"},"Model serving"),Object(o.b)("p",null,"After model saved, users can specify a serving script, a model and create a web service to serve the model."),Object(o.b)("p",null,'We call the web service to "endpoint". Users can manage (add/stop) model serving endpoints via CLI/API/UI.'),Object(o.b)("h3",{id:"metrics-for-training-job-and-model"},"Metrics for training job and model"),Object(o.b)("p",null,"Submarine-SDK provides tracking/metrics APIs, which allows developers to add tracking/metrics and view tracking/metrics from Submarine Workbench UI."),Object(o.b)("h3",{id:"deployment"},"Deployment"),Object(o.b)("p",null,"Submarine Services (See architecture overview below) should be deployed easily on-prem / on-cloud. Since there're more and more public cloud offering for compute/storage management on cloud, we need to support deploy Submarine compute-related workloads (such as notebook session, experiments, etc.) to cloud-managed clusters."),Object(o.b)("p",null,"This also include Submarine may need to take input parameters from customers and create/manage clusters if needed. It is also a common requirement to use hybrid of on-prem/on-cloud clusters."),Object(o.b)("h3",{id:"security--access-control--user-management--quota-management"},"Security / Access Control / User Management / Quota Management"),Object(o.b)("p",null,"There're 4 kinds of objects need access-control:"),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},"Assets belong to Submarine system, which includes notebook, experiments and results, models, predefined experiment libraries, environment profiles."),Object(o.b)("li",{parentName:"ul"},"Data security. (Who owns what data, and what data can be accessed by each users)."),Object(o.b)("li",{parentName:"ul"},"User credentials. (Such as LDAP)."),Object(o.b)("li",{parentName:"ul"},"Other security, such as Git repo access, etc.")),Object(o.b)("p",null,"For the data security / user credentials / other security, it will be delegated to 3rd libraries such as Apache Ranger, IAM roles, etc."),Object(o.b)("p",null,"Assets belong to Submarine system will be handled by Submarine itself."),Object(o.b)("p",null,"Here're operations which Submarine admin can do for users / teams which can be used to access Submarine's assets."),Object(o.b)("p",null,Object(o.b)("strong",{parentName:"p"},"Operations for admins")),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},'Admin uses "User Management System" to onboard new users, upload user credentials, assign resource quotas, etc.'),Object(o.b)("li",{parentName:"ul"},"Admins can create new users, new teams, update user/team mappings. Or remove users/teams."),Object(o.b)("li",{parentName:"ul"},"Admin can set resource quotas (if different from system default), permissions, upload/update necessary credentials (like Kerberos keytab) of a user."),Object(o.b)("li",{parentName:"ul"},"A DE/DS can also be an admin if the DE/DS has admin access. (Like a privileged user). This will be useful when a cluster is exclusively shared by a user or only shared by a small team."),Object(o.b)("li",{parentName:"ul"},Object(o.b)("inlineCode",{parentName:"li"},"Resource Quota Management System")," helps admin to manage resources quotas of teams, organizations. Resources can be machine resources like CPU/Memory/Disk, etc. It can also include non-machine resources like $$-based budgets.")),Object(o.b)("h3",{id:"dataset"},"Dataset"),Object(o.b)("p",null,"There's also need to tag dataset which will be used for training and shared across the platform by different users."),Object(o.b)("p",null,"Like mentioned above, access to the actual data will be handled by 3rd party system like Apache Ranger / Hive Metastore which is out of the Submarine's scope."),Object(o.b)("h2",{id:"architecture-overview"},"Architecture Overview"),Object(o.b)("h3",{id:"architecture-diagram"},"Architecture Diagram"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre"},"     +-----------------------------------------------------------------+\n     |            Submarine UI / CLI / REST API / SDK                  |\n     |                 Mini-Submarine                                  |\n     +-----------------------------------------------------------------+\n\n     +--------------------Submarine Server-----------------------------+\n     | +---------+ +---------+ +----------+ +----------+ +------------+|\n     | |Data set | |Notebooks| |Experiment| |Models    | |Servings    ||\n     | +---------+ +---------+ +----------+ +----------+ +------------+|\n     |-----------------------------------------------------------------|\n     |                                                                 |\n     | +-----------------+ +-----------------+ +---------------------+ |\n     | |Experiment       | |Compute Resource | |Other Management     | |\n     | |Manager          | |   Manager       | |Services             | |\n     | +-----------------+ +-----------------+ +---------------------+ |\n     |   Spark, template      K8s/Docker                          |\n     |   TF, PyTorch, pipeline                                         |\n     |                                                                 |\n     + +-----------------+                                             +\n     | |Submarine Meta   |                                             |\n     | |    Store        |                                             |\n     | +-----------------+                                             |\n     |                                                                 |\n     +-----------------------------------------------------------------+\n\n      (You can use http://stable.ascii-flow.appspot.com/#Draw\n      to draw such diagrams)\n")),Object(o.b)("p",null,Object(o.b)("inlineCode",{parentName:"p"},"Compute Resource Manager")," Helps to manage compute resources on-prem/on-cloud, this module can also handle cluster creation / management, etc."),Object(o.b)("p",null,Object(o.b)("inlineCode",{parentName:"p"},"Experiment Manager"),' Work with "Compute Resource Manager" to submit different kinds of workloads such as (distributed) Tensorflow / Pytorch, etc.'),Object(o.b)("p",null,Object(o.b)("inlineCode",{parentName:"p"},"Submarine SDK")," provides Java/Python/REST API to allow DS or other engineers to integrate into Submarine services. It also includes a ",Object(o.b)("inlineCode",{parentName:"p"},"mini-submarine")," component that launches Submarine components from a single Docker container (or a VM image)."),Object(o.b)("p",null,"Details of Submarine Server design can be found at ",Object(o.b)("a",{parentName:"p",href:"/docs/next/designDocs/submarine-server/architecture"},"submarine-server-design"),"."))}d.isMDXComponent=!0},194:function(e,t,n){"use strict";n.d(t,"a",(function(){return m})),n.d(t,"b",(function(){return u}));var a=n(0),r=n.n(a);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},o=Object.keys(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var c=r.a.createContext({}),d=function(e){var t=r.a.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},m=function(e){var t=d(e.components);return r.a.createElement(c.Provider,{value:t},e.children)},b={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},p=r.a.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,i=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),m=d(n),p=a,u=m["".concat(i,".").concat(p)]||m[p]||b[p]||o;return n?r.a.createElement(u,s(s({ref:t},c),{},{components:n})):r.a.createElement(u,s({ref:t},c))}));function u(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=p;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s.mdxType="string"==typeof e?e:a,i[1]=s;for(var c=2;c<o;c++)i[c]=n[c];return r.a.createElement.apply(null,i)}return r.a.createElement.apply(null,n)}p.displayName="MDXCreateElement"},235:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/experiments-7a09831687ecbc0e1dcf01b0c6f45445.png"}}]);
\ No newline at end of file
diff --git a/e9f77c1e.e19853ef.js b/e9f77c1e.b1f5f3a8.js
similarity index 94%
rename from e9f77c1e.e19853ef.js
rename to e9f77c1e.b1f5f3a8.js
index cc8fde1..e416106 100644
--- a/e9f77c1e.e19853ef.js
+++ b/e9f77c1e.b1f5f3a8.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[123],{190:function(e,t,r){"use strict";r.r(t),r.d(t,"frontMatter",(function(){return i})),r.d(t,"metadata",(function(){return c})),r.d(t,"toc",(function(){return u})),r.d(t,"default",(function(){return s}));var n=r(3),a=r(7),o=(r(0),r(209)),i={},c={type:"mdx",permalink:"/releases/submarine-release-0.4.0",source:"@site/src/pages/releases/submarine-release-0.4.0.md"},u=[],l={toc:u};function s(e){var t=e.components,r=Object(a.a)(e,["components"]);return Object(o.b)("wrapper",Object(n.a)({},l,r,{components:t,mdxType:"MDXLayout"}),Object(o.b)("h1",{id:"apache-submarine-release-040"},"Apache Submarine Release 0.4.0"),Object(o.b)("p",null,"The Apache Submarine Community is pleased to announce the availability of the ",Object(o.b)("inlineCode",{parentName:"p"},"0.4.0")," release."),Object(o.b)("p",null,"The community put significant effort into improving Apache Submarine since the last release.\n175 patches for improvements and bug fixes. The highlighted features are as follows:"),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},"Submarine Experiments: Refactor the Job to experiment and redefined the experiment spec"),Object(o.b)("li",{parentName:"ul"},"Submarine Helm Charts: Provides one command to install the submarine into the Kubernetes cluster"),Object(o.b)("li",{parentName:"ul"},"PySubmarine: Submarine Python SDK")),Object(o.b)("p",null,"We encourage to ",Object(o.b)("a",{parentName:"p",href:"/docs/download"},"download")," the latest release. Feedback through the ",Object(o.b)("a",{parentName:"p",href:"/docs/community/README"},"mailing lists")," is very welcome."),Object(o.b)("p",null,"You can visit ",Object(o.b)("a",{parentName:"p",href:"https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12322824&version=12346621"},"issue tracker")," for full list of issues that are resolved."))}s.isMDXComponent=!0},209:function(e,t,r){"use strict";r.d(t,"a",(function(){return p})),r.d(t,"b",(function(){return f}));var n=r(0),a=r.n(n);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function c(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?i(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function u(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=a.a.createContext({}),s=function(e){var t=a.a.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):c(c({},t),e)),r},p=function(e){var t=s(e.components);return a.a.createElement(l.Provider,{value:t},e.children)},b={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},m=a.a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,i=e.parentName,l=u(e,["components","mdxType","originalType","parentName"]),p=s(r),m=n,f=p["".concat(i,".").concat(m)]||p[m]||b[m]||o;return r?a.a.createElement(f,c(c({ref:t},l),{},{components:r})):a.a.createElement(f,c({ref:t},l))}));function f(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,i=new Array(o);i[0]=m;var c={};for(var u in t)hasOwnProperty.call(t,u)&&(c[u]=t[u]);c.originalType=e,c.mdxType="string"==typeof e?e:n,i[1]=c;for(var l=2;l<o;l++)i[l]=r[l];return a.a.createElement.apply(null,i)}return a.a.createElement.apply(null,r)}m.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[111],{178:function(e,t,r){"use strict";r.r(t),r.d(t,"frontMatter",(function(){return i})),r.d(t,"metadata",(function(){return c})),r.d(t,"toc",(function(){return u})),r.d(t,"default",(function(){return s}));var n=r(3),a=r(7),o=(r(0),r(194)),i={},c={type:"mdx",permalink:"/releases/submarine-release-0.4.0",source:"@site/src/pages/releases/submarine-release-0.4.0.md"},u=[],l={toc:u};function s(e){var t=e.components,r=Object(a.a)(e,["components"]);return Object(o.b)("wrapper",Object(n.a)({},l,r,{components:t,mdxType:"MDXLayout"}),Object(o.b)("h1",{id:"apache-submarine-release-040"},"Apache Submarine Release 0.4.0"),Object(o.b)("p",null,"The Apache Submarine Community is pleased to announce the availability of the ",Object(o.b)("inlineCode",{parentName:"p"},"0.4.0")," release."),Object(o.b)("p",null,"The community put significant effort into improving Apache Submarine since the last release.\n175 patches for improvements and bug fixes. The highlighted features are as follows:"),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},"Submarine Experiments: Refactor the Job to experiment and redefined the experiment spec"),Object(o.b)("li",{parentName:"ul"},"Submarine Helm Charts: Provides one command to install the submarine into the Kubernetes cluster"),Object(o.b)("li",{parentName:"ul"},"PySubmarine: Submarine Python SDK")),Object(o.b)("p",null,"We encourage to ",Object(o.b)("a",{parentName:"p",href:"/docs/download"},"download")," the latest release. Feedback through the ",Object(o.b)("a",{parentName:"p",href:"/docs/community/README"},"mailing lists")," is very welcome."),Object(o.b)("p",null,"You can visit ",Object(o.b)("a",{parentName:"p",href:"https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12322824&version=12346621"},"issue tracker")," for full list of issues that are resolved."))}s.isMDXComponent=!0},194:function(e,t,r){"use strict";r.d(t,"a",(function(){return p})),r.d(t,"b",(function(){return f}));var n=r(0),a=r.n(n);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function c(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?i(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function u(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=a.a.createContext({}),s=function(e){var t=a.a.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):c(c({},t),e)),r},p=function(e){var t=s(e.components);return a.a.createElement(l.Provider,{value:t},e.children)},b={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},m=a.a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,i=e.parentName,l=u(e,["components","mdxType","originalType","parentName"]),p=s(r),m=n,f=p["".concat(i,".").concat(m)]||p[m]||b[m]||o;return r?a.a.createElement(f,c(c({ref:t},l),{},{components:r})):a.a.createElement(f,c({ref:t},l))}));function f(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,i=new Array(o);i[0]=m;var c={};for(var u in t)hasOwnProperty.call(t,u)&&(c[u]=t[u]);c.originalType=e,c.mdxType="string"==typeof e?e:n,i[1]=c;for(var l=2;l<o;l++)i[l]=r[l];return a.a.createElement.apply(null,i)}return a.a.createElement.apply(null,r)}m.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/eb4979b3.bcf831ee.js b/eb4979b3.572bc7c2.js
similarity index 95%
rename from eb4979b3.bcf831ee.js
rename to eb4979b3.572bc7c2.js
index d2eb3a5..5c7d808 100644
--- a/eb4979b3.bcf831ee.js
+++ b/eb4979b3.572bc7c2.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[124],{191:function(e,n,r){"use strict";r.r(n),r.d(n,"frontMatter",(function(){return i})),r.d(n,"metadata",(function(){return c})),r.d(n,"toc",(function(){return u})),r.d(n,"default",(function(){return p}));var t=r(3),o=r(7),a=(r(0),r(209)),i={title:"Running Submarine on YARN"},c={unversionedId:"adminDocs/yarn/README",id:"version-0.6.0/adminDocs/yarn/README",isDocsHomePage:!1,title:"Running Submarine on YARN",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/adminDocs/yarn/README.md",slug:"/adminDocs/yarn/README",permalink:"/docs/adminDocs/yarn/README",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/adminDocs/yarn/README.md",version:"0.6.0",sidebar:"docs",previous:{title:"Tensorboard",permalink:"/docs/userDocs/others/tensorboard"},next:{title:"Project Architecture",permalink:"/docs/devDocs/README"}},u=[{value:"Hadoop version",id:"hadoop-version",children:[]},{value:"Submarine YARN Runtime Guide",id:"submarine-yarn-runtime-guide",children:[]}],s={toc:u};function p(e){var n=e.components,r=Object(o.a)(e,["components"]);return Object(a.b)("wrapper",Object(t.a)({},s,r,{components:n,mdxType:"MDXLayout"}),Object(a.b)("p",null,"Submarine for YARN supports TensorFlow, PyTorch and MXNet framework. (Which is leveraging ",Object(a.b)("a",{parentName:"p",href:"https://github.com/linkedin/TonY"},"TonY")," created by Linkedin to run deep learning training jobs on YARN."),Object(a.b)("p",null,"Submarine also supports GPU-on-YARN and Docker-on-YARN feature."),Object(a.b)("p",null,"Submarine can run on Hadoop 2.7.3 or later version, if GPU-on-YARN or Docker-on-YARN feature is needed, newer Hadoop version is required, please refer to the next section about what Hadoop version to choose."),Object(a.b)("h2",{id:"hadoop-version"},"Hadoop version"),Object(a.b)("p",null,"Must:"),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},"Apache Hadoop version newer than 2.7.3")),Object(a.b)("p",null,"Optional:"),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},"When you want to use GPU-on-YARN feature with Submarine, please make sure Hadoop is at least 2.10.0+ (or 3.1.0+), and follow ",Object(a.b)("a",{parentName:"li",href:"https://hadoop.apache.org/docs/r2.10.0/hadoop-yarn/hadoop-yarn-site/UsingGpus.html"},"Enable GPU on YARN 2.10.0+")," to enable GPU-on-YARN feature."),Object(a.b)("li",{parentName:"ul"},"When you want to run training jobs with Docker container, please make sure Hadoop is at least 2.8.2, and follow ",Object(a.b)("a",{parentName:"li",href:"https://hadoop.apache.org/docs/r2.8.2/hadoop-yarn/hadoop-yarn-site/DockerContainers.html"},"Enable Docker on YARN 2.8.2+")," to enable Docker-on-YARN feature.")),Object(a.b)("h2",{id:"submarine-yarn-runtime-guide"},"Submarine YARN Runtime Guide"),Object(a.b)("p",null,Object(a.b)("a",{parentName:"p",href:"../../userDocs/yarn/YARNRuntimeGuide"},"YARN Runtime Guide")," talk about how to use Submarine to run jobs on YARN, with Docker / without Docker."))}p.isMDXComponent=!0},209:function(e,n,r){"use strict";r.d(n,"a",(function(){return l})),r.d(n,"b",(function(){return m}));var t=r(0),o=r.n(t);function a(e,n,r){return n in e?Object.defineProperty(e,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[n]=r,e}function i(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),r.push.apply(r,t)}return r}function c(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?i(Object(r),!0).forEach((function(n){a(e,n,r[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))}))}return e}function u(e,n){if(null==e)return{};var r,t,o=function(e,n){if(null==e)return{};var r,t,o={},a=Object.keys(e);for(t=0;t<a.length;t++)r=a[t],n.indexOf(r)>=0||(o[r]=e[r]);return o}(e,n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(t=0;t<a.length;t++)r=a[t],n.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var s=o.a.createContext({}),p=function(e){var n=o.a.useContext(s),r=n;return e&&(r="function"==typeof e?e(n):c(c({},n),e)),r},l=function(e){var n=p(e.components);return o.a.createElement(s.Provider,{value:n},e.children)},b={inlineCode:"code",wrapper:function(e){var n=e.children;return o.a.createElement(o.a.Fragment,{},n)}},d=o.a.forwardRef((function(e,n){var r=e.components,t=e.mdxType,a=e.originalType,i=e.parentName,s=u(e,["components","mdxType","originalType","parentName"]),l=p(r),d=t,m=l["".concat(i,".").concat(d)]||l[d]||b[d]||a;return r?o.a.createElement(m,c(c({ref:n},s),{},{components:r})):o.a.createElement(m,c({ref:n},s))}));function m(e,n){var r=arguments,t=n&&n.mdxType;if("string"==typeof e||t){var a=r.length,i=new Array(a);i[0]=d;var c={};for(var u in n)hasOwnProperty.call(n,u)&&(c[u]=n[u]);c.originalType=e,c.mdxType="string"==typeof e?e:t,i[1]=c;for(var s=2;s<a;s++)i[s]=r[s];return o.a.createElement.apply(null,i)}return o.a.createElement.apply(null,r)}d.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[112],{179:function(e,n,r){"use strict";r.r(n),r.d(n,"frontMatter",(function(){return i})),r.d(n,"metadata",(function(){return c})),r.d(n,"toc",(function(){return u})),r.d(n,"default",(function(){return p}));var t=r(3),o=r(7),a=(r(0),r(194)),i={title:"Running Submarine on YARN"},c={unversionedId:"adminDocs/yarn/README",id:"version-0.6.0/adminDocs/yarn/README",isDocsHomePage:!1,title:"Running Submarine on YARN",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/adminDocs/yarn/README.md",slug:"/adminDocs/yarn/README",permalink:"/docs/adminDocs/yarn/README",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/adminDocs/yarn/README.md",version:"0.6.0",sidebar:"docs",previous:{title:"Tensorboard",permalink:"/docs/userDocs/others/tensorboard"},next:{title:"Project Architecture",permalink:"/docs/devDocs/README"}},u=[{value:"Hadoop version",id:"hadoop-version",children:[]},{value:"Submarine YARN Runtime Guide",id:"submarine-yarn-runtime-guide",children:[]}],s={toc:u};function p(e){var n=e.components,r=Object(o.a)(e,["components"]);return Object(a.b)("wrapper",Object(t.a)({},s,r,{components:n,mdxType:"MDXLayout"}),Object(a.b)("p",null,"Submarine for YARN supports TensorFlow, PyTorch and MXNet framework. (Which is leveraging ",Object(a.b)("a",{parentName:"p",href:"https://github.com/linkedin/TonY"},"TonY")," created by Linkedin to run deep learning training jobs on YARN."),Object(a.b)("p",null,"Submarine also supports GPU-on-YARN and Docker-on-YARN feature."),Object(a.b)("p",null,"Submarine can run on Hadoop 2.7.3 or later version, if GPU-on-YARN or Docker-on-YARN feature is needed, newer Hadoop version is required, please refer to the next section about what Hadoop version to choose."),Object(a.b)("h2",{id:"hadoop-version"},"Hadoop version"),Object(a.b)("p",null,"Must:"),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},"Apache Hadoop version newer than 2.7.3")),Object(a.b)("p",null,"Optional:"),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},"When you want to use GPU-on-YARN feature with Submarine, please make sure Hadoop is at least 2.10.0+ (or 3.1.0+), and follow ",Object(a.b)("a",{parentName:"li",href:"https://hadoop.apache.org/docs/r2.10.0/hadoop-yarn/hadoop-yarn-site/UsingGpus.html"},"Enable GPU on YARN 2.10.0+")," to enable GPU-on-YARN feature."),Object(a.b)("li",{parentName:"ul"},"When you want to run training jobs with Docker container, please make sure Hadoop is at least 2.8.2, and follow ",Object(a.b)("a",{parentName:"li",href:"https://hadoop.apache.org/docs/r2.8.2/hadoop-yarn/hadoop-yarn-site/DockerContainers.html"},"Enable Docker on YARN 2.8.2+")," to enable Docker-on-YARN feature.")),Object(a.b)("h2",{id:"submarine-yarn-runtime-guide"},"Submarine YARN Runtime Guide"),Object(a.b)("p",null,Object(a.b)("a",{parentName:"p",href:"../../userDocs/yarn/YARNRuntimeGuide"},"YARN Runtime Guide")," talk about how to use Submarine to run jobs on YARN, with Docker / without Docker."))}p.isMDXComponent=!0},194:function(e,n,r){"use strict";r.d(n,"a",(function(){return l})),r.d(n,"b",(function(){return m}));var t=r(0),o=r.n(t);function a(e,n,r){return n in e?Object.defineProperty(e,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[n]=r,e}function i(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),r.push.apply(r,t)}return r}function c(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?i(Object(r),!0).forEach((function(n){a(e,n,r[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))}))}return e}function u(e,n){if(null==e)return{};var r,t,o=function(e,n){if(null==e)return{};var r,t,o={},a=Object.keys(e);for(t=0;t<a.length;t++)r=a[t],n.indexOf(r)>=0||(o[r]=e[r]);return o}(e,n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(t=0;t<a.length;t++)r=a[t],n.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var s=o.a.createContext({}),p=function(e){var n=o.a.useContext(s),r=n;return e&&(r="function"==typeof e?e(n):c(c({},n),e)),r},l=function(e){var n=p(e.components);return o.a.createElement(s.Provider,{value:n},e.children)},b={inlineCode:"code",wrapper:function(e){var n=e.children;return o.a.createElement(o.a.Fragment,{},n)}},d=o.a.forwardRef((function(e,n){var r=e.components,t=e.mdxType,a=e.originalType,i=e.parentName,s=u(e,["components","mdxType","originalType","parentName"]),l=p(r),d=t,m=l["".concat(i,".").concat(d)]||l[d]||b[d]||a;return r?o.a.createElement(m,c(c({ref:n},s),{},{components:r})):o.a.createElement(m,c({ref:n},s))}));function m(e,n){var r=arguments,t=n&&n.mdxType;if("string"==typeof e||t){var a=r.length,i=new Array(a);i[0]=d;var c={};for(var u in n)hasOwnProperty.call(n,u)&&(c[u]=n[u]);c.originalType=e,c.mdxType="string"==typeof e?e:t,i[1]=c;for(var s=2;s<a;s++)i[s]=r[s];return o.a.createElement.apply(null,i)}return o.a.createElement.apply(null,r)}d.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/ed46a2dd.429a9c4b.js b/ed46a2dd.ef3898b5.js
similarity index 93%
rename from ed46a2dd.429a9c4b.js
rename to ed46a2dd.ef3898b5.js
index 7cb4930..97d9879 100644
--- a/ed46a2dd.429a9c4b.js
+++ b/ed46a2dd.ef3898b5.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[125],{192:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return a})),n.d(t,"metadata",(function(){return c})),n.d(t,"toc",(function(){return s})),n.d(t,"default",(function(){return p}));var r=n(3),o=n(7),i=(n(0),n(209)),a={title:"Jupyter Notebook"},c={unversionedId:"gettingStarted/notebook",id:"gettingStarted/notebook",isDocsHomePage:!1,title:"Jupyter Notebook",description:"\x3c!--",source:"@site/docs/gettingStarted/notebook.md",slug:"/gettingStarted/notebook",permalink:"/docs/next/gettingStarted/notebook",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/gettingStarted/notebook.md",version:"current",sidebar:"docs",previous:{title:"Quickstart",permalink:"/docs/next/gettingStarted/quickstart"},next:{title:"Experiment REST API",permalink:"/docs/next/userDocs/api/experiment"}},s=[{value:"Working with notebooks",id:"working-with-notebooks",children:[{value:"Notebooks Web UI",id:"notebooks-web-ui",children:[]}]},{value:"Experiment with your notebook",id:"experiment-with-your-notebook",children:[]}],b={toc:s};function p(e){var t=e.components,a=Object(o.a)(e,["components"]);return Object(i.b)("wrapper",Object(r.a)({},b,a,{components:t,mdxType:"MDXLayout"}),Object(i.b)("p",null,"This guide describes how to use Jupyter notebook in Submarine to launch\nand manage Jupyter notebooks."),Object(i.b)("h2",{id:"working-with-notebooks"},"Working with notebooks"),Object(i.b)("p",null,"We recommend using Web UI to manage notebooks."),Object(i.b)("h3",{id:"notebooks-web-ui"},"Notebooks Web UI"),Object(i.b)("p",null,"Notebooks can be started from the Web UI. You can click the \u201cNotebook\u201d tab in the\nleft-hand panel to manage your notebooks."),Object(i.b)("p",null,Object(i.b)("img",{src:n(253).default})),Object(i.b)("p",null,"To create a new notebook server, click \u201cNew Notebook\u201d. You should see a form for entering\ndetails of your new notebook server."),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Notebook Name : Name of the notebook server. It should follow the rules below.",Object(i.b)("ol",{parentName:"li"},Object(i.b)("li",{parentName:"ol"},"Contain at most 63 characters."),Object(i.b)("li",{parentName:"ol"},"Contain only lowercase alphanumeric characters or '-'."),Object(i.b)("li",{parentName:"ol"},"Start with an alphabetic character."),Object(i.b)("li",{parentName:"ol"},"End with an alphanumeric character."))),Object(i.b)("li",{parentName:"ul"},"Environment : It defines a set of libraries and docker image."),Object(i.b)("li",{parentName:"ul"},"CPU and Memory"),Object(i.b)("li",{parentName:"ul"},"GPU (optional)"),Object(i.b)("li",{parentName:"ul"},"EnvVar (optional) : Injects environment variables into the notebook.")),Object(i.b)("p",null,"If you want to use notebook-gpu-env, you should set up the gpu environment in your kubernetes.\nYou can install ",Object(i.b)("a",{parentName:"p",href:"https://github.com/NVIDIA/k8s-device-plugin"},"NVIDIA/k8s-device-plugin"),".\nThe list of prerequisites for running the NVIDIA device plugin is described below"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"NVIDIA drivers ~= 384.81"),Object(i.b)("li",{parentName:"ul"},"nvidia-docker version > 2.0"),Object(i.b)("li",{parentName:"ul"},"docker configured with nvidia as the default runtime"),Object(i.b)("li",{parentName:"ul"},"Kubernetes version >= 1.10")),Object(i.b)("p",null,Object(i.b)("strong",{parentName:"p"},"If you\u2019re not sure which environment you need, please choose the environment \u201cnotebook-env\u201d\nfor the new notebook.")),Object(i.b)("p",null,Object(i.b)("img",{src:n(254).default})),Object(i.b)("p",null,"You should see your new notebook server. Click the name of your notebook server to connect to it."),Object(i.b)("p",null,Object(i.b)("img",{src:n(255).default})),Object(i.b)("h2",{id:"experiment-with-your-notebook"},"Experiment with your notebook"),Object(i.b)("p",null,"The environment \u201cnotebook-env\u201d includes Submarine Python SDK which can talk to Submarine Server to\ncreate experiments, as the example below:"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-python"},"from __future__ import print_function\nimport submarine\nfrom submarine.client.models.environment_spec import EnvironmentSpec\nfrom submarine.client.models.experiment_spec import ExperimentSpec\nfrom submarine.client.models.experiment_task_spec import ExperimentTaskSpec\nfrom submarine.client.models.experiment_meta import ExperimentMeta\nfrom submarine.client.models.code_spec import CodeSpec\n\n# Create Submarine Client\nsubmarine_client = submarine.ExperimentClient()\n\n# Define TensorFlow experiment spec\nenvironment = EnvironmentSpec(image='apache/submarine:tf-dist-mnist-test-1.0')\nexperiment_meta = ExperimentMeta(name='mnist-dist',\n                                 namespace='default',\n                                 framework='Tensorflow',\n                                 cmd='python /var/tf_dist_mnist/dist_mnist.py --train_steps=100',\n                                 env_vars={'ENV1': 'ENV1'})\n\nworker_spec = ExperimentTaskSpec(resources='cpu=1,memory=1024M',\n                                 replicas=1)\nps_spec = ExperimentTaskSpec(resources='cpu=1,memory=1024M',\n                                 replicas=1)\ncode_spec = CodeSpec(sync_mode='git', url='https://github.com/apache/submarine.git')\n\nexperiment_spec = ExperimentSpec(meta=experiment_meta,\n                                 environment=environment,\n                                 code=code_spec,\n                                 spec={'Ps' : ps_spec,'Worker': worker_spec})\n\n# Create experiment\nexperiment = submarine_client.create_experiment(experiment_spec=experiment_spec)\n\n")),Object(i.b)("p",null,"You can create a new notebook, paste the above code and run it. Or, you can find the notebook ",Object(i.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/blob/master/submarine-sdk/pysubmarine/example/submarine_experiment_sdk.ipynb"},Object(i.b)("inlineCode",{parentName:"a"},"submarine_experiment_sdk.ipynb"))," inside the launched notebook session. You can open it, try it out."),Object(i.b)("p",null,"After experiment submitted to Submarine server, you can find the experiment jobs on the UI."))}p.isMDXComponent=!0},209:function(e,t,n){"use strict";n.d(t,"a",(function(){return u})),n.d(t,"b",(function(){return d}));var r=n(0),o=n.n(r);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function c(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var b=o.a.createContext({}),p=function(e){var t=o.a.useContext(b),n=t;return e&&(n="function"==typeof e?e(t):c(c({},t),e)),n},u=function(e){var t=p(e.components);return o.a.createElement(b.Provider,{value:t},e.children)},l={inlineCode:"code",wrapper:function(e){var t=e.children;return o.a.createElement(o.a.Fragment,{},t)}},m=o.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,a=e.parentName,b=s(e,["components","mdxType","originalType","parentName"]),u=p(n),m=r,d=u["".concat(a,".").concat(m)]||u[m]||l[m]||i;return n?o.a.createElement(d,c(c({ref:t},b),{},{components:n})):o.a.createElement(d,c({ref:t},b))}));function d(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,a=new Array(i);a[0]=m;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c.mdxType="string"==typeof e?e:r,a[1]=c;for(var b=2;b<i;b++)a[b]=n[b];return o.a.createElement.apply(null,a)}return o.a.createElement.apply(null,n)}m.displayName="MDXCreateElement"},253:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/notebook-list-507c0f9a50f6cd5637891c13c62d4650.png"},254:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/notebook-form-1c2959c2de638b11edb28f20e2fe171b.png"},255:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/created-notebook-360544388021273ece4a1d7fba8900ee.png"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[113],{180:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return a})),n.d(t,"metadata",(function(){return c})),n.d(t,"toc",(function(){return s})),n.d(t,"default",(function(){return p}));var r=n(3),o=n(7),i=(n(0),n(194)),a={title:"Jupyter Notebook"},c={unversionedId:"gettingStarted/notebook",id:"gettingStarted/notebook",isDocsHomePage:!1,title:"Jupyter Notebook",description:"\x3c!--",source:"@site/docs/gettingStarted/notebook.md",slug:"/gettingStarted/notebook",permalink:"/docs/next/gettingStarted/notebook",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/gettingStarted/notebook.md",version:"current",sidebar:"docs",previous:{title:"Quickstart",permalink:"/docs/next/gettingStarted/quickstart"},next:{title:"Experiment REST API",permalink:"/docs/next/userDocs/api/experiment"}},s=[{value:"Working with notebooks",id:"working-with-notebooks",children:[{value:"Notebooks Web UI",id:"notebooks-web-ui",children:[]}]},{value:"Experiment with your notebook",id:"experiment-with-your-notebook",children:[]}],b={toc:s};function p(e){var t=e.components,a=Object(o.a)(e,["components"]);return Object(i.b)("wrapper",Object(r.a)({},b,a,{components:t,mdxType:"MDXLayout"}),Object(i.b)("p",null,"This guide describes how to use Jupyter notebook in Submarine to launch\nand manage Jupyter notebooks."),Object(i.b)("h2",{id:"working-with-notebooks"},"Working with notebooks"),Object(i.b)("p",null,"We recommend using Web UI to manage notebooks."),Object(i.b)("h3",{id:"notebooks-web-ui"},"Notebooks Web UI"),Object(i.b)("p",null,"Notebooks can be started from the Web UI. You can click the \u201cNotebook\u201d tab in the\nleft-hand panel to manage your notebooks."),Object(i.b)("p",null,Object(i.b)("img",{src:n(236).default})),Object(i.b)("p",null,"To create a new notebook server, click \u201cNew Notebook\u201d. You should see a form for entering\ndetails of your new notebook server."),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Notebook Name : Name of the notebook server. It should follow the rules below.",Object(i.b)("ol",{parentName:"li"},Object(i.b)("li",{parentName:"ol"},"Contain at most 63 characters."),Object(i.b)("li",{parentName:"ol"},"Contain only lowercase alphanumeric characters or '-'."),Object(i.b)("li",{parentName:"ol"},"Start with an alphabetic character."),Object(i.b)("li",{parentName:"ol"},"End with an alphanumeric character."))),Object(i.b)("li",{parentName:"ul"},"Environment : It defines a set of libraries and docker image."),Object(i.b)("li",{parentName:"ul"},"CPU and Memory"),Object(i.b)("li",{parentName:"ul"},"GPU (optional)"),Object(i.b)("li",{parentName:"ul"},"EnvVar (optional) : Injects environment variables into the notebook.")),Object(i.b)("p",null,"If you want to use notebook-gpu-env, you should set up the gpu environment in your kubernetes.\nYou can install ",Object(i.b)("a",{parentName:"p",href:"https://github.com/NVIDIA/k8s-device-plugin"},"NVIDIA/k8s-device-plugin"),".\nThe list of prerequisites for running the NVIDIA device plugin is described below"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"NVIDIA drivers ~= 384.81"),Object(i.b)("li",{parentName:"ul"},"nvidia-docker version > 2.0"),Object(i.b)("li",{parentName:"ul"},"docker configured with nvidia as the default runtime"),Object(i.b)("li",{parentName:"ul"},"Kubernetes version >= 1.10")),Object(i.b)("p",null,Object(i.b)("strong",{parentName:"p"},"If you\u2019re not sure which environment you need, please choose the environment \u201cnotebook-env\u201d\nfor the new notebook.")),Object(i.b)("p",null,Object(i.b)("img",{src:n(237).default})),Object(i.b)("p",null,"You should see your new notebook server. Click the name of your notebook server to connect to it."),Object(i.b)("p",null,Object(i.b)("img",{src:n(238).default})),Object(i.b)("h2",{id:"experiment-with-your-notebook"},"Experiment with your notebook"),Object(i.b)("p",null,"The environment \u201cnotebook-env\u201d includes Submarine Python SDK which can talk to Submarine Server to\ncreate experiments, as the example below:"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-python"},"from __future__ import print_function\nimport submarine\nfrom submarine.client.models.environment_spec import EnvironmentSpec\nfrom submarine.client.models.experiment_spec import ExperimentSpec\nfrom submarine.client.models.experiment_task_spec import ExperimentTaskSpec\nfrom submarine.client.models.experiment_meta import ExperimentMeta\nfrom submarine.client.models.code_spec import CodeSpec\n\n# Create Submarine Client\nsubmarine_client = submarine.ExperimentClient()\n\n# Define TensorFlow experiment spec\nenvironment = EnvironmentSpec(image='apache/submarine:tf-dist-mnist-test-1.0')\nexperiment_meta = ExperimentMeta(name='mnist-dist',\n                                 namespace='default',\n                                 framework='Tensorflow',\n                                 cmd='python /var/tf_dist_mnist/dist_mnist.py --train_steps=100',\n                                 env_vars={'ENV1': 'ENV1'})\n\nworker_spec = ExperimentTaskSpec(resources='cpu=1,memory=1024M',\n                                 replicas=1)\nps_spec = ExperimentTaskSpec(resources='cpu=1,memory=1024M',\n                                 replicas=1)\ncode_spec = CodeSpec(sync_mode='git', url='https://github.com/apache/submarine.git')\n\nexperiment_spec = ExperimentSpec(meta=experiment_meta,\n                                 environment=environment,\n                                 code=code_spec,\n                                 spec={'Ps' : ps_spec,'Worker': worker_spec})\n\n# Create experiment\nexperiment = submarine_client.create_experiment(experiment_spec=experiment_spec)\n\n")),Object(i.b)("p",null,"You can create a new notebook, paste the above code and run it. Or, you can find the notebook ",Object(i.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/blob/master/submarine-sdk/pysubmarine/example/submarine_experiment_sdk.ipynb"},Object(i.b)("inlineCode",{parentName:"a"},"submarine_experiment_sdk.ipynb"))," inside the launched notebook session. You can open it, try it out."),Object(i.b)("p",null,"After experiment submitted to Submarine server, you can find the experiment jobs on the UI."))}p.isMDXComponent=!0},194:function(e,t,n){"use strict";n.d(t,"a",(function(){return u})),n.d(t,"b",(function(){return d}));var r=n(0),o=n.n(r);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function c(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var b=o.a.createContext({}),p=function(e){var t=o.a.useContext(b),n=t;return e&&(n="function"==typeof e?e(t):c(c({},t),e)),n},u=function(e){var t=p(e.components);return o.a.createElement(b.Provider,{value:t},e.children)},l={inlineCode:"code",wrapper:function(e){var t=e.children;return o.a.createElement(o.a.Fragment,{},t)}},m=o.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,a=e.parentName,b=s(e,["components","mdxType","originalType","parentName"]),u=p(n),m=r,d=u["".concat(a,".").concat(m)]||u[m]||l[m]||i;return n?o.a.createElement(d,c(c({ref:t},b),{},{components:n})):o.a.createElement(d,c({ref:t},b))}));function d(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,a=new Array(i);a[0]=m;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c.mdxType="string"==typeof e?e:r,a[1]=c;for(var b=2;b<i;b++)a[b]=n[b];return o.a.createElement.apply(null,a)}return o.a.createElement.apply(null,n)}m.displayName="MDXCreateElement"},236:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/notebook-list-507c0f9a50f6cd5637891c13c62d4650.png"},237:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/notebook-form-1c2959c2de638b11edb28f20e2fe171b.png"},238:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/created-notebook-360544388021273ece4a1d7fba8900ee.png"}}]);
\ No newline at end of file
diff --git a/ee8d19c0.4e222057.js b/ee8d19c0.4e222057.js
deleted file mode 100644
index 6fddf46..0000000
--- a/ee8d19c0.4e222057.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[126],{193:function(e,n,r){"use strict";r.r(n),r.d(n,"frontMatter",(function(){return o})),r.d(n,"metadata",(function(){return c})),r.d(n,"toc",(function(){return s})),r.d(n,"default",(function(){return b}));var t=r(3),i=r(7),a=(r(0),r(209)),o={title:"Project Architecture"},c={unversionedId:"devDocs/README",id:"devDocs/README",isDocsHomePage:!1,title:"Project Architecture",description:"\x3c!--",source:"@site/docs/devDocs/README.md",slug:"/devDocs/README",permalink:"/docs/next/devDocs/README",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/devDocs/README.md",version:"current",sidebar:"docs",previous:{title:"Running Submarine on YARN (deprecated)",permalink:"/docs/next/adminDocs/yarn/README"},next:{title:"Dependencies for Submarine",permalink:"/docs/next/devDocs/Dependencies"}},s=[{value:"1. Introduction",id:"1-introduction",children:[]},{value:"2. Submarine Project Structure",id:"2-submarine-project-structure",children:[{value:"2.1. submarine-client",id:"21-submarine-client",children:[]},{value:"2.2. submarine-cloud-v2",id:"22-submarine-cloud-v2",children:[]},{value:"2.3. submarine-commons",id:"23-submarine-commons",children:[]},{value:"2.4. submarine-dist",id:"24-submarine-dist",children:[]},{value:"2.5. submarine-sdk",id:"25-submarine-sdk",children:[]},{value:"2.6. submarine-server",id:"26-submarine-server",children:[]},{value:"2.7. submarine-test",id:"27-submarine-test",children:[]},{value:"2.8. submarine-workbench",id:"28-submarine-workbench",children:[]},{value:"2.9 dev-support",id:"29-dev-support",children:[]}]}],u={toc:s};function b(e){var n=e.components,r=Object(i.a)(e,["components"]);return Object(a.b)("wrapper",Object(t.a)({},u,r,{components:n,mdxType:"MDXLayout"}),Object(a.b)("h2",{id:"1-introduction"},"1. Introduction"),Object(a.b)("p",null,"This document mainly describes the structure of each module of the Submarine project, the development and test description of each module."),Object(a.b)("h2",{id:"2-submarine-project-structure"},"2. Submarine Project Structure"),Object(a.b)("h3",{id:"21-submarine-client"},"2.1. submarine-client"),Object(a.b)("p",null,"Provide the CLI interface for submarine user. (Currently only support YARN service (deprecated))"),Object(a.b)("h3",{id:"22-submarine-cloud-v2"},"2.2. submarine-cloud-v2"),Object(a.b)("p",null,"The operator for Submarine application. For details, please see the ",Object(a.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/blob/master/submarine-cloud-v2/README.md"},"README on github"),"."),Object(a.b)("h3",{id:"23-submarine-commons"},"2.3. submarine-commons"),Object(a.b)("p",null,"Define utility function used in multiple packages, mainly related to hadoop."),Object(a.b)("h3",{id:"24-submarine-dist"},"2.4. submarine-dist"),Object(a.b)("p",null,"Store the pre-release files."),Object(a.b)("h3",{id:"25-submarine-sdk"},"2.5. submarine-sdk"),Object(a.b)("p",null,"Provide Python SDK for submarine user."),Object(a.b)("h3",{id:"26-submarine-server"},"2.6. submarine-server"),Object(a.b)("p",null,"Include core server, restful api, and k8s submitter."),Object(a.b)("h3",{id:"27-submarine-test"},"2.7. submarine-test"),Object(a.b)("p",null,"Provide end-to-end and k8s test for submarine."),Object(a.b)("h3",{id:"28-submarine-workbench"},"2.8. submarine-workbench"),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},"workbench-server: is a Jetty-based web server service. Workbench-server provides RESTful interface and Websocket interface. The RESTful interface provides workbench-web with management capabilities for databases such as project, department, user, and role."),Object(a.b)("li",{parentName:"ul"},"workbench-web: is a web front-end service based on Angular.js framework. With workbench-web users can manage Submarine project, department, user, role through browser. You can also use the notebook to develop machine learning algorithms, model release and other lifecycle management.")),Object(a.b)("h3",{id:"29-dev-support"},"2.9 dev-support"),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},Object(a.b)("strong",{parentName:"li"},"mini-submarine"),": by using the docker image provided by Submarine, you can\nexperience all the functions of Submarine in a single docker environment, while\nmini-submarine also provides developers with a development and testing\nenvironment, Avoid the hassle of installing and deploying the runtime\nenvironment."),Object(a.b)("li",{parentName:"ul"},Object(a.b)("strong",{parentName:"li"},"submarine-installer"),": submarine-installer is our submarine runtime\nenvironment installation tool for yarn-3.1+ and above.By using\nsubmarine-installer, it is easy to install and deploy system services such as\n",Object(a.b)("inlineCode",{parentName:"li"},"docker"),", ",Object(a.b)("inlineCode",{parentName:"li"},"nvidia-docker"),", ",Object(a.b)("inlineCode",{parentName:"li"},"nvidia driver"),", ",Object(a.b)("inlineCode",{parentName:"li"},"ETCD"),", ",Object(a.b)("inlineCode",{parentName:"li"},"Calico network")," etc.\nrequired by yarn-3.1+.")))}b.isMDXComponent=!0},209:function(e,n,r){"use strict";r.d(n,"a",(function(){return l})),r.d(n,"b",(function(){return p}));var t=r(0),i=r.n(t);function a(e,n,r){return n in e?Object.defineProperty(e,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[n]=r,e}function o(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),r.push.apply(r,t)}return r}function c(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?o(Object(r),!0).forEach((function(n){a(e,n,r[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))}))}return e}function s(e,n){if(null==e)return{};var r,t,i=function(e,n){if(null==e)return{};var r,t,i={},a=Object.keys(e);for(t=0;t<a.length;t++)r=a[t],n.indexOf(r)>=0||(i[r]=e[r]);return i}(e,n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(t=0;t<a.length;t++)r=a[t],n.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var u=i.a.createContext({}),b=function(e){var n=i.a.useContext(u),r=n;return e&&(r="function"==typeof e?e(n):c(c({},n),e)),r},l=function(e){var n=b(e.components);return i.a.createElement(u.Provider,{value:n},e.children)},d={inlineCode:"code",wrapper:function(e){var n=e.children;return i.a.createElement(i.a.Fragment,{},n)}},m=i.a.forwardRef((function(e,n){var r=e.components,t=e.mdxType,a=e.originalType,o=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),l=b(r),m=t,p=l["".concat(o,".").concat(m)]||l[m]||d[m]||a;return r?i.a.createElement(p,c(c({ref:n},u),{},{components:r})):i.a.createElement(p,c({ref:n},u))}));function p(e,n){var r=arguments,t=n&&n.mdxType;if("string"==typeof e||t){var a=r.length,o=new Array(a);o[0]=m;var c={};for(var s in n)hasOwnProperty.call(n,s)&&(c[s]=n[s]);c.originalType=e,c.mdxType="string"==typeof e?e:t,o[1]=c;for(var u=2;u<a;u++)o[u]=r[u];return i.a.createElement.apply(null,o)}return i.a.createElement.apply(null,r)}m.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/ee8d19c0.ae17985b.js b/ee8d19c0.ae17985b.js
new file mode 100644
index 0000000..1d8652c
--- /dev/null
+++ b/ee8d19c0.ae17985b.js
@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([[114],{181:function(e,r,n){"use strict";n.r(r),n.d(r,"frontMatter",(function(){return o})),n.d(r,"metadata",(function(){return c})),n.d(r,"toc",(function(){return s})),n.d(r,"default",(function(){return b}));var t=n(3),i=n(7),a=(n(0),n(194)),o={title:"Project Architecture"},c={unversionedId:"devDocs/README",id:"devDocs/README",isDocsHomePage:!1,title:"Project Architecture",description:"\x3c!--",source:"@site/docs/devDocs/README.md",slug:"/devDocs/README",permalink:"/docs/next/devDocs/README",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/devDocs/README.md",version:"current",sidebar:"docs",previous:{title:"Tensorboard",permalink:"/docs/next/userDocs/others/tensorboard"},next:{title:"Dependencies for Submarine",permalink:"/docs/next/devDocs/Dependencies"}},s=[{value:"1. Introduction",id:"1-introduction",children:[]},{value:"2. Submarine Project Structure",id:"2-submarine-project-structure",children:[{value:"2.1. submarine-client",id:"21-submarine-client",children:[]},{value:"2.2. submarine-cloud-v2",id:"22-submarine-cloud-v2",children:[]},{value:"2.3. submarine-commons",id:"23-submarine-commons",children:[]},{value:"2.4. submarine-dist",id:"24-submarine-dist",children:[]},{value:"2.5. submarine-sdk",id:"25-submarine-sdk",children:[]},{value:"2.6. submarine-server",id:"26-submarine-server",children:[]},{value:"2.7. submarine-test",id:"27-submarine-test",children:[]},{value:"2.8. submarine-workbench",id:"28-submarine-workbench",children:[]},{value:"2.9 dev-support",id:"29-dev-support",children:[]}]}],u={toc:s};function b(e){var r=e.components,n=Object(i.a)(e,["components"]);return Object(a.b)("wrapper",Object(t.a)({},u,n,{components:r,mdxType:"MDXLayout"}),Object(a.b)("h2",{id:"1-introduction"},"1. Introduction"),Object(a.b)("p",null,"This document mainly describes the structure of each module of the Submarine project, the development and test description of each module."),Object(a.b)("h2",{id:"2-submarine-project-structure"},"2. Submarine Project Structure"),Object(a.b)("h3",{id:"21-submarine-client"},"2.1. submarine-client"),Object(a.b)("p",null,"Provide the CLI interface for submarine user. (Currently only support YARN service (deprecated))"),Object(a.b)("h3",{id:"22-submarine-cloud-v2"},"2.2. submarine-cloud-v2"),Object(a.b)("p",null,"The operator for Submarine application. For details, please see the ",Object(a.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/blob/master/submarine-cloud-v2/README.md"},"README on github"),"."),Object(a.b)("h3",{id:"23-submarine-commons"},"2.3. submarine-commons"),Object(a.b)("p",null,"Define utility function used in multiple packages, mainly related to hadoop."),Object(a.b)("h3",{id:"24-submarine-dist"},"2.4. submarine-dist"),Object(a.b)("p",null,"Store the pre-release files."),Object(a.b)("h3",{id:"25-submarine-sdk"},"2.5. submarine-sdk"),Object(a.b)("p",null,"Provide Python SDK for submarine user."),Object(a.b)("h3",{id:"26-submarine-server"},"2.6. submarine-server"),Object(a.b)("p",null,"Include core server, restful api, and k8s submitter."),Object(a.b)("h3",{id:"27-submarine-test"},"2.7. submarine-test"),Object(a.b)("p",null,"Provide end-to-end and k8s test for submarine."),Object(a.b)("h3",{id:"28-submarine-workbench"},"2.8. submarine-workbench"),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},"workbench-server: is a Jetty-based web server service. Workbench-server provides RESTful interface and Websocket interface. The RESTful interface provides workbench-web with management capabilities for databases such as project, department, user, and role."),Object(a.b)("li",{parentName:"ul"},"workbench-web: is a web front-end service based on Angular.js framework. With workbench-web users can manage Submarine project, department, user, role through browser. You can also use the notebook to develop machine learning algorithms, model release and other lifecycle management.")),Object(a.b)("h3",{id:"29-dev-support"},"2.9 dev-support"),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},Object(a.b)("strong",{parentName:"li"},"mini-submarine"),": by using the docker image provided by Submarine, you can\nexperience all the functions of Submarine in a single docker environment, while\nmini-submarine also provides developers with a development and testing\nenvironment, Avoid the hassle of installing and deploying the runtime\nenvironment."),Object(a.b)("li",{parentName:"ul"},Object(a.b)("strong",{parentName:"li"},"submarine-installer"),": submarine-installer is our submarine runtime\nenvironment installation tool for yarn-3.1+ and above.By using\nsubmarine-installer, it is easy to install and deploy system services such as\n",Object(a.b)("inlineCode",{parentName:"li"},"docker"),", ",Object(a.b)("inlineCode",{parentName:"li"},"nvidia-docker"),", ",Object(a.b)("inlineCode",{parentName:"li"},"nvidia driver"),", ",Object(a.b)("inlineCode",{parentName:"li"},"ETCD"),", ",Object(a.b)("inlineCode",{parentName:"li"},"Calico network")," etc.\nrequired by yarn-3.1+.")))}b.isMDXComponent=!0},194:function(e,r,n){"use strict";n.d(r,"a",(function(){return l})),n.d(r,"b",(function(){return p}));var t=n(0),i=n.n(t);function a(e,r,n){return r in e?Object.defineProperty(e,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[r]=n,e}function o(e,r){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);r&&(t=t.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),n.push.apply(n,t)}return n}function c(e){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?o(Object(n),!0).forEach((function(r){a(e,r,n[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))}))}return e}function s(e,r){if(null==e)return{};var n,t,i=function(e,r){if(null==e)return{};var n,t,i={},a=Object.keys(e);for(t=0;t<a.length;t++)n=a[t],r.indexOf(n)>=0||(i[n]=e[n]);return i}(e,r);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(t=0;t<a.length;t++)n=a[t],r.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var u=i.a.createContext({}),b=function(e){var r=i.a.useContext(u),n=r;return e&&(n="function"==typeof e?e(r):c(c({},r),e)),n},l=function(e){var r=b(e.components);return i.a.createElement(u.Provider,{value:r},e.children)},d={inlineCode:"code",wrapper:function(e){var r=e.children;return i.a.createElement(i.a.Fragment,{},r)}},m=i.a.forwardRef((function(e,r){var n=e.components,t=e.mdxType,a=e.originalType,o=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),l=b(n),m=t,p=l["".concat(o,".").concat(m)]||l[m]||d[m]||a;return n?i.a.createElement(p,c(c({ref:r},u),{},{components:n})):i.a.createElement(p,c({ref:r},u))}));function p(e,r){var n=arguments,t=r&&r.mdxType;if("string"==typeof e||t){var a=n.length,o=new Array(a);o[0]=m;var c={};for(var s in r)hasOwnProperty.call(r,s)&&(c[s]=r[s]);c.originalType=e,c.mdxType="string"==typeof e?e:t,o[1]=c;for(var u=2;u<a;u++)o[u]=n[u];return i.a.createElement.apply(null,o)}return i.a.createElement.apply(null,n)}m.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/ef17f2ad.b0f19d95.js b/ef17f2ad.a6a30414.js
similarity index 98%
rename from ef17f2ad.b0f19d95.js
rename to ef17f2ad.a6a30414.js
index ffc49fa..153f785 100644
--- a/ef17f2ad.b0f19d95.js
+++ b/ef17f2ad.a6a30414.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[127],{194:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return l})),n.d(t,"metadata",(function(){return b})),n.d(t,"toc",(function(){return c})),n.d(t,"default",(function(){return s}));var r=n(3),a=n(7),i=(n(0),n(209)),l={title:"Generic Expeiment Spec"},b={unversionedId:"designDocs/submarine-server/experimentSpec",id:"version-0.6.0/designDocs/submarine-server/experimentSpec",isDocsHomePage:!1,title:"Generic Expeiment Spec",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/designDocs/submarine-server/experimentSpec.md",slug:"/designDocs/submarine-server/experimentSpec",permalink:"/docs/designDocs/submarine-server/experimentSpec",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/designDocs/submarine-server/experimentSpec.md",version:"0.6.0",sidebar:"docs",previous:{title:"Submarine Server Implementation",permalink:"/docs/designDocs/submarine-server/architecture"},next:{title:"Submarine Launcher",permalink:"/docs/designDocs/wip-designs/submarine-launcher"}},c=[{value:"Motivation",id:"motivation",children:[]},{value:"Proposal",id:"proposal",children:[{value:"Library Spec",id:"library-spec",children:[]},{value:"Submitter Spec",id:"submitter-spec",children:[]},{value:"Task Spec",id:"task-spec",children:[]}]},{value:"Implements",id:"implements",children:[]}],p={toc:c};function s(e){var t=e.components,n=Object(a.a)(e,["components"]);return Object(i.b)("wrapper",Object(r.a)({},p,n,{components:t,mdxType:"MDXLayout"}),Object(i.b)("h2",{id:"motivation"},"Motivation"),Object(i.b)("p",null,"As the machine learning platform, the submarine should support multiple machine learning frameworks, such as Tensorflow, Pytorch etc. But different framework has different distributed components for the training experiment. So that we designed a generic experiment spec to abstract the training experiment across different frameworks. In this way, the submarine-server can hide the complexity of underlying infrastructure differences and provide a cleaner interface to manager experiments"),Object(i.b)("h2",{id:"proposal"},"Proposal"),Object(i.b)("p",null,"Considering the Tensorflow and Pytorch framework, we propose one spec which consists of library spec, submitter spec and task specs etc. Such as:"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-yaml"},'name: "mnist"\nlibrarySpec:\n  name: "TensorFlow"\n  version: "2.1.0"\n  image: "apache/submarine:tf-mnist-with-summaries-1.0"\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"\nsubmitterSpec:\n  type: "k8s"\n  namespace: "submarine"\ntaskSpecs:\n  Ps:\n    name: tensorflow\n    replicas: 2\n    resources: "cpu=4,memory=2048M,nvidia.com/gpu=1"\n  Worker:\n    name: tensorflow\n    replicas: 2\n    resources: "cpu=4,memory=2048M,nvidia.com/gpu=1"\n')),Object(i.b)("h3",{id:"library-spec"},"Library Spec"),Object(i.b)("p",null,"The library spec describes the info about machine learning framework. All the fields as below:"),Object(i.b)("table",null,Object(i.b)("thead",{parentName:"table"},Object(i.b)("tr",{parentName:"thead"},Object(i.b)("th",{parentName:"tr",align:null},"field"),Object(i.b)("th",{parentName:"tr",align:null},"type"),Object(i.b)("th",{parentName:"tr",align:null},"optional"),Object(i.b)("th",{parentName:"tr",align:null},"description"))),Object(i.b)("tbody",{parentName:"table"},Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"name"),Object(i.b)("td",{parentName:"tr",align:null},"string"),Object(i.b)("td",{parentName:"tr",align:null},"NO"),Object(i.b)("td",{parentName:"tr",align:null},"Machine Learning Framework name. Only ",Object(i.b)("inlineCode",{parentName:"td"},'"tensorflow"')," and ",Object(i.b)("inlineCode",{parentName:"td"},'"pytorch"')," is supported. It doesn't matter if the value is uppercase or lowercase.")),Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"version"),Object(i.b)("td",{parentName:"tr",align:null},"string"),Object(i.b)("td",{parentName:"tr",align:null},"NO"),Object(i.b)("td",{parentName:"tr",align:null},"The version of ML framework. Such as: 2.1.0")),Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"image"),Object(i.b)("td",{parentName:"tr",align:null},"string"),Object(i.b)("td",{parentName:"tr",align:null},"NO"),Object(i.b)("td",{parentName:"tr",align:null},"The public image used for each task if not specified. Such as: apache/submarine")),Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"cmd"),Object(i.b)("td",{parentName:"tr",align:null},"string"),Object(i.b)("td",{parentName:"tr",align:null},"YES"),Object(i.b)("td",{parentName:"tr",align:null},"The public entry cmd for the task if not specified.")),Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"envVars"),Object(i.b)("td",{parentName:"tr",align:null},"key/value"),Object(i.b)("td",{parentName:"tr",align:null},"YES"),Object(i.b)("td",{parentName:"tr",align:null},"The public env vars for the task if not specified.")))),Object(i.b)("h3",{id:"submitter-spec"},"Submitter Spec"),Object(i.b)("p",null,"It describes the info of submitter which the user specified, such as yarn, yarnservice or k8s. All the fields as below:"),Object(i.b)("table",null,Object(i.b)("thead",{parentName:"table"},Object(i.b)("tr",{parentName:"thead"},Object(i.b)("th",{parentName:"tr",align:null},"field"),Object(i.b)("th",{parentName:"tr",align:null},"type"),Object(i.b)("th",{parentName:"tr",align:null},"optional"),Object(i.b)("th",{parentName:"tr",align:null},"description"))),Object(i.b)("tbody",{parentName:"table"},Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"type"),Object(i.b)("td",{parentName:"tr",align:null},"string"),Object(i.b)("td",{parentName:"tr",align:null},"NO"),Object(i.b)("td",{parentName:"tr",align:null},"The submitter type, supports ",Object(i.b)("inlineCode",{parentName:"td"},"k8s")," now")),Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"configPath"),Object(i.b)("td",{parentName:"tr",align:null},"string"),Object(i.b)("td",{parentName:"tr",align:null},"YES"),Object(i.b)("td",{parentName:"tr",align:null},"The config path of the specified resource manager. You can set it in submarine-site.xml if run submarine-server locally")),Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"namespace"),Object(i.b)("td",{parentName:"tr",align:null},"string"),Object(i.b)("td",{parentName:"tr",align:null},"NO"),Object(i.b)("td",{parentName:"tr",align:null},"It's known as queue in Apache Hadoop YARN and namespace in Kubernetes.")),Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"kind"),Object(i.b)("td",{parentName:"tr",align:null},"string"),Object(i.b)("td",{parentName:"tr",align:null},"YES"),Object(i.b)("td",{parentName:"tr",align:null},"It's used for k8s submitter, supports TFJob and PyTorchJob")),Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"apiVersion"),Object(i.b)("td",{parentName:"tr",align:null},"string"),Object(i.b)("td",{parentName:"tr",align:null},"YES"),Object(i.b)("td",{parentName:"tr",align:null},"It should pair with the kind, such as the TFJob's api version is ",Object(i.b)("inlineCode",{parentName:"td"},"kubeflow.org/v1"))))),Object(i.b)("h3",{id:"task-spec"},"Task Spec"),Object(i.b)("p",null,"It describes the task info, the tasks make up the experiment. So it must be specified when submit the experiment. All the tasks should putted into the key value collection. Such as:"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-yaml"},'taskSpecs:\n  Ps:\n    name: tensorflow\n    replicas: 2\n    resources: "cpu=4,memory=2048M,nvidia.com/gpu=1"\n  Worker:\n    name: tensorflow\n    replicas: 2\n    resources: "cpu=4,memory=2048M,nvidia.com/gpu=1"\n')),Object(i.b)("p",null,"All the fields as below:"),Object(i.b)("table",null,Object(i.b)("thead",{parentName:"table"},Object(i.b)("tr",{parentName:"thead"},Object(i.b)("th",{parentName:"tr",align:null},"field"),Object(i.b)("th",{parentName:"tr",align:null},"type"),Object(i.b)("th",{parentName:"tr",align:null},"optional"),Object(i.b)("th",{parentName:"tr",align:null},"description"))),Object(i.b)("tbody",{parentName:"table"},Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"name"),Object(i.b)("td",{parentName:"tr",align:null},"string"),Object(i.b)("td",{parentName:"tr",align:null},"YES"),Object(i.b)("td",{parentName:"tr",align:null},"The experiment name, if not specify using the library name")),Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"image"),Object(i.b)("td",{parentName:"tr",align:null},"string"),Object(i.b)("td",{parentName:"tr",align:null},"YES"),Object(i.b)("td",{parentName:"tr",align:null},"The experiment docker image")),Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"cmd"),Object(i.b)("td",{parentName:"tr",align:null},"string"),Object(i.b)("td",{parentName:"tr",align:null},"YES"),Object(i.b)("td",{parentName:"tr",align:null},"The entry command for running task")),Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"envVars"),Object(i.b)("td",{parentName:"tr",align:null},"key/value"),Object(i.b)("td",{parentName:"tr",align:null},"YES"),Object(i.b)("td",{parentName:"tr",align:null},"The environment variables for the task")),Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"resources"),Object(i.b)("td",{parentName:"tr",align:null},"string"),Object(i.b)("td",{parentName:"tr",align:null},"NO"),Object(i.b)("td",{parentName:"tr",align:null},"The limit resource for the task. Formatter: cpu=%s,memory=%s,nvidia.com/gpu=%s")))),Object(i.b)("h2",{id:"implements"},"Implements"),Object(i.b)("p",null,"For more info see ",Object(i.b)("a",{parentName:"p",href:"https://issues.apache.org/jira/browse/SUBMARINE-321"},"SUBMARINE-321")))}s.isMDXComponent=!0},209:function(e,t,n){"use strict";n.d(t,"a",(function(){return o})),n.d(t,"b",(function(){return d}));var r=n(0),a=n.n(r);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function b(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?l(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):l(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function c(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var p=a.a.createContext({}),s=function(e){var t=a.a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):b(b({},t),e)),n},o=function(e){var t=s(e.components);return a.a.createElement(p.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},u=a.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,l=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),o=s(n),u=r,d=o["".concat(l,".").concat(u)]||o[u]||m[u]||i;return n?a.a.createElement(d,b(b({ref:t},p),{},{components:n})):a.a.createElement(d,b({ref:t},p))}));function d(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,l=new Array(i);l[0]=u;var b={};for(var c in t)hasOwnProperty.call(t,c)&&(b[c]=t[c]);b.originalType=e,b.mdxType="string"==typeof e?e:r,l[1]=b;for(var p=2;p<i;p++)l[p]=n[p];return a.a.createElement.apply(null,l)}return a.a.createElement.apply(null,n)}u.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[115],{182:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return l})),n.d(t,"metadata",(function(){return b})),n.d(t,"toc",(function(){return c})),n.d(t,"default",(function(){return s}));var r=n(3),a=n(7),i=(n(0),n(194)),l={title:"Generic Expeiment Spec"},b={unversionedId:"designDocs/submarine-server/experimentSpec",id:"version-0.6.0/designDocs/submarine-server/experimentSpec",isDocsHomePage:!1,title:"Generic Expeiment Spec",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/designDocs/submarine-server/experimentSpec.md",slug:"/designDocs/submarine-server/experimentSpec",permalink:"/docs/designDocs/submarine-server/experimentSpec",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/designDocs/submarine-server/experimentSpec.md",version:"0.6.0",sidebar:"docs",previous:{title:"Submarine Server Implementation",permalink:"/docs/designDocs/submarine-server/architecture"},next:{title:"Submarine Launcher",permalink:"/docs/designDocs/wip-designs/submarine-launcher"}},c=[{value:"Motivation",id:"motivation",children:[]},{value:"Proposal",id:"proposal",children:[{value:"Library Spec",id:"library-spec",children:[]},{value:"Submitter Spec",id:"submitter-spec",children:[]},{value:"Task Spec",id:"task-spec",children:[]}]},{value:"Implements",id:"implements",children:[]}],p={toc:c};function s(e){var t=e.components,n=Object(a.a)(e,["components"]);return Object(i.b)("wrapper",Object(r.a)({},p,n,{components:t,mdxType:"MDXLayout"}),Object(i.b)("h2",{id:"motivation"},"Motivation"),Object(i.b)("p",null,"As the machine learning platform, the submarine should support multiple machine learning frameworks, such as Tensorflow, Pytorch etc. But different framework has different distributed components for the training experiment. So that we designed a generic experiment spec to abstract the training experiment across different frameworks. In this way, the submarine-server can hide the complexity of underlying infrastructure differences and provide a cleaner interface to manager experiments"),Object(i.b)("h2",{id:"proposal"},"Proposal"),Object(i.b)("p",null,"Considering the Tensorflow and Pytorch framework, we propose one spec which consists of library spec, submitter spec and task specs etc. Such as:"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-yaml"},'name: "mnist"\nlibrarySpec:\n  name: "TensorFlow"\n  version: "2.1.0"\n  image: "apache/submarine:tf-mnist-with-summaries-1.0"\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"\nsubmitterSpec:\n  type: "k8s"\n  namespace: "submarine"\ntaskSpecs:\n  Ps:\n    name: tensorflow\n    replicas: 2\n    resources: "cpu=4,memory=2048M,nvidia.com/gpu=1"\n  Worker:\n    name: tensorflow\n    replicas: 2\n    resources: "cpu=4,memory=2048M,nvidia.com/gpu=1"\n')),Object(i.b)("h3",{id:"library-spec"},"Library Spec"),Object(i.b)("p",null,"The library spec describes the info about machine learning framework. All the fields as below:"),Object(i.b)("table",null,Object(i.b)("thead",{parentName:"table"},Object(i.b)("tr",{parentName:"thead"},Object(i.b)("th",{parentName:"tr",align:null},"field"),Object(i.b)("th",{parentName:"tr",align:null},"type"),Object(i.b)("th",{parentName:"tr",align:null},"optional"),Object(i.b)("th",{parentName:"tr",align:null},"description"))),Object(i.b)("tbody",{parentName:"table"},Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"name"),Object(i.b)("td",{parentName:"tr",align:null},"string"),Object(i.b)("td",{parentName:"tr",align:null},"NO"),Object(i.b)("td",{parentName:"tr",align:null},"Machine Learning Framework name. Only ",Object(i.b)("inlineCode",{parentName:"td"},'"tensorflow"')," and ",Object(i.b)("inlineCode",{parentName:"td"},'"pytorch"')," is supported. It doesn't matter if the value is uppercase or lowercase.")),Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"version"),Object(i.b)("td",{parentName:"tr",align:null},"string"),Object(i.b)("td",{parentName:"tr",align:null},"NO"),Object(i.b)("td",{parentName:"tr",align:null},"The version of ML framework. Such as: 2.1.0")),Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"image"),Object(i.b)("td",{parentName:"tr",align:null},"string"),Object(i.b)("td",{parentName:"tr",align:null},"NO"),Object(i.b)("td",{parentName:"tr",align:null},"The public image used for each task if not specified. Such as: apache/submarine")),Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"cmd"),Object(i.b)("td",{parentName:"tr",align:null},"string"),Object(i.b)("td",{parentName:"tr",align:null},"YES"),Object(i.b)("td",{parentName:"tr",align:null},"The public entry cmd for the task if not specified.")),Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"envVars"),Object(i.b)("td",{parentName:"tr",align:null},"key/value"),Object(i.b)("td",{parentName:"tr",align:null},"YES"),Object(i.b)("td",{parentName:"tr",align:null},"The public env vars for the task if not specified.")))),Object(i.b)("h3",{id:"submitter-spec"},"Submitter Spec"),Object(i.b)("p",null,"It describes the info of submitter which the user specified, such as yarn, yarnservice or k8s. All the fields as below:"),Object(i.b)("table",null,Object(i.b)("thead",{parentName:"table"},Object(i.b)("tr",{parentName:"thead"},Object(i.b)("th",{parentName:"tr",align:null},"field"),Object(i.b)("th",{parentName:"tr",align:null},"type"),Object(i.b)("th",{parentName:"tr",align:null},"optional"),Object(i.b)("th",{parentName:"tr",align:null},"description"))),Object(i.b)("tbody",{parentName:"table"},Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"type"),Object(i.b)("td",{parentName:"tr",align:null},"string"),Object(i.b)("td",{parentName:"tr",align:null},"NO"),Object(i.b)("td",{parentName:"tr",align:null},"The submitter type, supports ",Object(i.b)("inlineCode",{parentName:"td"},"k8s")," now")),Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"configPath"),Object(i.b)("td",{parentName:"tr",align:null},"string"),Object(i.b)("td",{parentName:"tr",align:null},"YES"),Object(i.b)("td",{parentName:"tr",align:null},"The config path of the specified resource manager. You can set it in submarine-site.xml if run submarine-server locally")),Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"namespace"),Object(i.b)("td",{parentName:"tr",align:null},"string"),Object(i.b)("td",{parentName:"tr",align:null},"NO"),Object(i.b)("td",{parentName:"tr",align:null},"It's known as queue in Apache Hadoop YARN and namespace in Kubernetes.")),Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"kind"),Object(i.b)("td",{parentName:"tr",align:null},"string"),Object(i.b)("td",{parentName:"tr",align:null},"YES"),Object(i.b)("td",{parentName:"tr",align:null},"It's used for k8s submitter, supports TFJob and PyTorchJob")),Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"apiVersion"),Object(i.b)("td",{parentName:"tr",align:null},"string"),Object(i.b)("td",{parentName:"tr",align:null},"YES"),Object(i.b)("td",{parentName:"tr",align:null},"It should pair with the kind, such as the TFJob's api version is ",Object(i.b)("inlineCode",{parentName:"td"},"kubeflow.org/v1"))))),Object(i.b)("h3",{id:"task-spec"},"Task Spec"),Object(i.b)("p",null,"It describes the task info, the tasks make up the experiment. So it must be specified when submit the experiment. All the tasks should putted into the key value collection. Such as:"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-yaml"},'taskSpecs:\n  Ps:\n    name: tensorflow\n    replicas: 2\n    resources: "cpu=4,memory=2048M,nvidia.com/gpu=1"\n  Worker:\n    name: tensorflow\n    replicas: 2\n    resources: "cpu=4,memory=2048M,nvidia.com/gpu=1"\n')),Object(i.b)("p",null,"All the fields as below:"),Object(i.b)("table",null,Object(i.b)("thead",{parentName:"table"},Object(i.b)("tr",{parentName:"thead"},Object(i.b)("th",{parentName:"tr",align:null},"field"),Object(i.b)("th",{parentName:"tr",align:null},"type"),Object(i.b)("th",{parentName:"tr",align:null},"optional"),Object(i.b)("th",{parentName:"tr",align:null},"description"))),Object(i.b)("tbody",{parentName:"table"},Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"name"),Object(i.b)("td",{parentName:"tr",align:null},"string"),Object(i.b)("td",{parentName:"tr",align:null},"YES"),Object(i.b)("td",{parentName:"tr",align:null},"The experiment name, if not specify using the library name")),Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"image"),Object(i.b)("td",{parentName:"tr",align:null},"string"),Object(i.b)("td",{parentName:"tr",align:null},"YES"),Object(i.b)("td",{parentName:"tr",align:null},"The experiment docker image")),Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"cmd"),Object(i.b)("td",{parentName:"tr",align:null},"string"),Object(i.b)("td",{parentName:"tr",align:null},"YES"),Object(i.b)("td",{parentName:"tr",align:null},"The entry command for running task")),Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"envVars"),Object(i.b)("td",{parentName:"tr",align:null},"key/value"),Object(i.b)("td",{parentName:"tr",align:null},"YES"),Object(i.b)("td",{parentName:"tr",align:null},"The environment variables for the task")),Object(i.b)("tr",{parentName:"tbody"},Object(i.b)("td",{parentName:"tr",align:null},"resources"),Object(i.b)("td",{parentName:"tr",align:null},"string"),Object(i.b)("td",{parentName:"tr",align:null},"NO"),Object(i.b)("td",{parentName:"tr",align:null},"The limit resource for the task. Formatter: cpu=%s,memory=%s,nvidia.com/gpu=%s")))),Object(i.b)("h2",{id:"implements"},"Implements"),Object(i.b)("p",null,"For more info see ",Object(i.b)("a",{parentName:"p",href:"https://issues.apache.org/jira/browse/SUBMARINE-321"},"SUBMARINE-321")))}s.isMDXComponent=!0},194:function(e,t,n){"use strict";n.d(t,"a",(function(){return o})),n.d(t,"b",(function(){return d}));var r=n(0),a=n.n(r);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function b(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?l(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):l(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function c(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var p=a.a.createContext({}),s=function(e){var t=a.a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):b(b({},t),e)),n},o=function(e){var t=s(e.components);return a.a.createElement(p.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},u=a.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,l=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),o=s(n),u=r,d=o["".concat(l,".").concat(u)]||o[u]||m[u]||i;return n?a.a.createElement(d,b(b({ref:t},p),{},{components:n})):a.a.createElement(d,b({ref:t},p))}));function d(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,l=new Array(i);l[0]=u;var b={};for(var c in t)hasOwnProperty.call(t,c)&&(b[c]=t[c]);b.originalType=e,b.mdxType="string"==typeof e?e:r,l[1]=b;for(var p=2;p<i;p++)l[p]=n[p];return a.a.createElement.apply(null,l)}return a.a.createElement.apply(null,n)}u.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/f0df3a58.b3e87ed7.js b/f0df3a58.988417ee.js
similarity index 97%
rename from f0df3a58.b3e87ed7.js
rename to f0df3a58.988417ee.js
index 5315bd0..bb85dcb 100644
--- a/f0df3a58.b3e87ed7.js
+++ b/f0df3a58.988417ee.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[128],{195:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return s})),n.d(t,"metadata",(function(){return c})),n.d(t,"toc",(function(){return p})),n.d(t,"default",(function(){return o}));var a=n(3),r=n(7),l=(n(0),n(209)),s={title:"Serve REST API"},c={unversionedId:"api/registered-model",id:"api/registered-model",isDocsHomePage:!1,title:"Serve REST API",description:"\x3c!--",source:"@site/docs/api/registered-model.md",slug:"/api/registered-model",permalink:"/docs/next/api/registered-model",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/api/registered-model.md",version:"current"},p=[{value:"Create a registered model",id:"create-a-registered-model",children:[{value:"List registered models",id:"list-registered-models",children:[]},{value:"Get a registered model",id:"get-a-registered-model",children:[]},{value:"Patch a registered model",id:"patch-a-registered-model",children:[]}]},{value:"Delete a registered model",id:"delete-a-registered-model",children:[]},{value:"Create a registered model tag",id:"create-a-registered-model-tag",children:[]},{value:"Delete a registered model tag",id:"delete-a-registered-model-tag",children:[]}],i={toc:p};function o(e){var t=e.components,n=Object(r.a)(e,["components"]);return Object(l.b)("wrapper",Object(a.a)({},i,n,{components:t,mdxType:"MDXLayout"}),Object(l.b)("blockquote",null,Object(l.b)("p",{parentName:"blockquote"},"Note: The Registered Model API is in the alpha stage which is subjected to incompatible changes in future releases.")),Object(l.b)("h2",{id:"create-a-registered-model"},"Create a registered model"),Object(l.b)("p",null,Object(l.b)("inlineCode",{parentName:"p"},"POST /api/v1/registered-model")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"Example Request")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},'curl -X POST -H "Content-Type: application/json" -d \'\n{\n   "name": "example_name",\n   "description": "example_description",\n   "tags": ["123", "456"]\n   }\n\' http://127.0.0.1:32080/api/v1/registered-model\n')),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"Example Response:")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n    "status":"OK",\n    "code":200,\n    "success":true,\n    "message":"Create a registered model instance",\n    "result":null,\n    "attributes":{}\n}\n')),Object(l.b)("h3",{id:"list-registered-models"},"List registered models"),Object(l.b)("p",null,Object(l.b)("inlineCode",{parentName:"p"},"GET /api/v1/registered-model")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"Example Request:")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/registered-model\n")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"Example Response:")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n   "attributes" : {},\n   "code" : 200,\n   "message" : "List all registered model instances",\n   "result" : [\n      {\n         "creationTime" : "2021-12-16 10:14:06",\n         "description" : "example_description",\n         "lastUpdatedTime" : "2021-12-16 10:14:06",\n         "name" : "example_name",\n         "tags" : [\n            "123",\n            "456"\n         ]\n      },\n      {\n         "creationTime" : "2021-12-16 10:16:25",\n         "description" : "example_description",\n         "lastUpdatedTime" : "2021-12-16 10:16:25",\n         "name" : "example_name1",\n         "tags" : [\n            "123",\n            "456"\n         ]\n      },\n      {\n         "creationTime" : "2021-12-12 02:27:05",\n         "description" : null,\n         "lastUpdatedTime" : "2021-12-14 12:49:33",\n         "name" : "register",\n         "tags" : []\n      }\n   ],\n   "status" : "OK",\n   "success" : true\n}\n')),Object(l.b)("h3",{id:"get-a-registered-model"},"Get a registered model"),Object(l.b)("p",null,Object(l.b)("inlineCode",{parentName:"p"},"GET /api/v1/registered-model/{name}")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"Example Request:")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/registered-model/example_name\n")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"Example Response:")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n   "attributes" : {},\n   "code" : 200,\n   "message" : "Get the registered model instance",\n   "result" : {\n      "creationTime" : "2021-12-16 10:14:06",\n      "description" : "example_description",\n      "lastUpdatedTime" : "2021-12-16 10:14:06",\n      "name" : "example_name",\n      "tags" : [\n         "123",\n         "456"\n      ]\n   },\n   "status" : "OK",\n   "success" : true\n}\n')),Object(l.b)("h3",{id:"patch-a-registered-model"},"Patch a registered model"),Object(l.b)("p",null,Object(l.b)("inlineCode",{parentName:"p"},"PATCH /api/v1/registered-model/{name}")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"Example Request:")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},'curl -X PATCH -H "Content-Type: application/json" -d \'\n{\n    "name": "new_name",\n    "description": "new_description"\n}\' http://127.0.0.1:32080/api/v1/registered-model/example_name\n')),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"Example Response:")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n   "attributes" : {},\n   "code" : 200,\n   "message" : "Update the registered model instance",\n   "result" : null,\n   "status" : "OK",\n   "success" : true\n}\n')),Object(l.b)("h2",{id:"delete-a-registered-model"},"Delete a registered model"),Object(l.b)("p",null,Object(l.b)("inlineCode",{parentName:"p"},"DELETE /api/v1/registered-model/{name}")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"Example Request")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},"curl -X DELETE http://127.0.0.1:32080/api/v1/registered-model/example_name\n")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"Example Response:")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n   "attributes" : {},\n   "code" : 200,\n   "message" : "Delete the registered model instance",\n   "result" : null,\n   "status" : "OK",\n   "success" : true\n}\n')),Object(l.b)("h2",{id:"create-a-registered-model-tag"},"Create a registered model tag"),Object(l.b)("p",null,Object(l.b)("inlineCode",{parentName:"p"},"POST /api/v1/registered-model/tag?name={name}&tag={tag}")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"Example Request")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},"curl -X POST http://127.0.0.1:32080/api/v1/registered-model/tag?name=example_name&tag=789\n")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"Example Response:")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n    "status":"OK",\n    "code":200,\n    "success":true,\n    "message":"Create a registered model tag instance",\n    "result":null,\n    "attributes":{}\n}\n')),Object(l.b)("h2",{id:"delete-a-registered-model-tag"},"Delete a registered model tag"),Object(l.b)("p",null,Object(l.b)("inlineCode",{parentName:"p"},"DELETE /api/v1/registered-model/tag?name={name}&tag={tag}")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"Example Request")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},"curl -X DELETE http://127.0.0.1:32080/api/v1/registered-model/tag?name=example_name&tag=789\n")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"Example Response:")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n   "attributes" : {},\n   "code" : 200,\n   "message" : "Delete a registered model tag instance",\n   "result" : null,\n   "status" : "OK",\n   "success" : true\n}\n')))}o.isMDXComponent=!0},209:function(e,t,n){"use strict";n.d(t,"a",(function(){return d})),n.d(t,"b",(function(){return u}));var a=n(0),r=n.n(a);function l(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function s(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function c(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?s(Object(n),!0).forEach((function(t){l(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):s(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function p(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},l=Object.keys(e);for(a=0;a<l.length;a++)n=l[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a<l.length;a++)n=l[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var i=r.a.createContext({}),o=function(e){var t=r.a.useContext(i),n=t;return e&&(n="function"==typeof e?e(t):c(c({},t),e)),n},d=function(e){var t=o(e.components);return r.a.createElement(i.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},b=r.a.forwardRef((function(e,t){var n=e.components,a=e.mdxType,l=e.originalType,s=e.parentName,i=p(e,["components","mdxType","originalType","parentName"]),d=o(n),b=a,u=d["".concat(s,".").concat(b)]||d[b]||m[b]||l;return n?r.a.createElement(u,c(c({ref:t},i),{},{components:n})):r.a.createElement(u,c({ref:t},i))}));function u(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var l=n.length,s=new Array(l);s[0]=b;var c={};for(var p in t)hasOwnProperty.call(t,p)&&(c[p]=t[p]);c.originalType=e,c.mdxType="string"==typeof e?e:a,s[1]=c;for(var i=2;i<l;i++)s[i]=n[i];return r.a.createElement.apply(null,s)}return r.a.createElement.apply(null,n)}b.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[116],{183:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return s})),n.d(t,"metadata",(function(){return c})),n.d(t,"toc",(function(){return p})),n.d(t,"default",(function(){return o}));var a=n(3),r=n(7),l=(n(0),n(194)),s={title:"Serve REST API"},c={unversionedId:"api/registered-model",id:"api/registered-model",isDocsHomePage:!1,title:"Serve REST API",description:"\x3c!--",source:"@site/docs/api/registered-model.md",slug:"/api/registered-model",permalink:"/docs/next/api/registered-model",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/api/registered-model.md",version:"current"},p=[{value:"Create a registered model",id:"create-a-registered-model",children:[{value:"List registered models",id:"list-registered-models",children:[]},{value:"Get a registered model",id:"get-a-registered-model",children:[]},{value:"Patch a registered model",id:"patch-a-registered-model",children:[]}]},{value:"Delete a registered model",id:"delete-a-registered-model",children:[]},{value:"Create a registered model tag",id:"create-a-registered-model-tag",children:[]},{value:"Delete a registered model tag",id:"delete-a-registered-model-tag",children:[]}],i={toc:p};function o(e){var t=e.components,n=Object(r.a)(e,["components"]);return Object(l.b)("wrapper",Object(a.a)({},i,n,{components:t,mdxType:"MDXLayout"}),Object(l.b)("blockquote",null,Object(l.b)("p",{parentName:"blockquote"},"Note: The Registered Model API is in the alpha stage which is subjected to incompatible changes in future releases.")),Object(l.b)("h2",{id:"create-a-registered-model"},"Create a registered model"),Object(l.b)("p",null,Object(l.b)("inlineCode",{parentName:"p"},"POST /api/v1/registered-model")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"Example Request")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},'curl -X POST -H "Content-Type: application/json" -d \'\n{\n   "name": "example_name",\n   "description": "example_description",\n   "tags": ["123", "456"]\n   }\n\' http://127.0.0.1:32080/api/v1/registered-model\n')),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"Example Response:")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n    "status":"OK",\n    "code":200,\n    "success":true,\n    "message":"Create a registered model instance",\n    "result":null,\n    "attributes":{}\n}\n')),Object(l.b)("h3",{id:"list-registered-models"},"List registered models"),Object(l.b)("p",null,Object(l.b)("inlineCode",{parentName:"p"},"GET /api/v1/registered-model")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"Example Request:")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/registered-model\n")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"Example Response:")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n   "attributes" : {},\n   "code" : 200,\n   "message" : "List all registered model instances",\n   "result" : [\n      {\n         "creationTime" : "2021-12-16 10:14:06",\n         "description" : "example_description",\n         "lastUpdatedTime" : "2021-12-16 10:14:06",\n         "name" : "example_name",\n         "tags" : [\n            "123",\n            "456"\n         ]\n      },\n      {\n         "creationTime" : "2021-12-16 10:16:25",\n         "description" : "example_description",\n         "lastUpdatedTime" : "2021-12-16 10:16:25",\n         "name" : "example_name1",\n         "tags" : [\n            "123",\n            "456"\n         ]\n      },\n      {\n         "creationTime" : "2021-12-12 02:27:05",\n         "description" : null,\n         "lastUpdatedTime" : "2021-12-14 12:49:33",\n         "name" : "register",\n         "tags" : []\n      }\n   ],\n   "status" : "OK",\n   "success" : true\n}\n')),Object(l.b)("h3",{id:"get-a-registered-model"},"Get a registered model"),Object(l.b)("p",null,Object(l.b)("inlineCode",{parentName:"p"},"GET /api/v1/registered-model/{name}")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"Example Request:")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/registered-model/example_name\n")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"Example Response:")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n   "attributes" : {},\n   "code" : 200,\n   "message" : "Get the registered model instance",\n   "result" : {\n      "creationTime" : "2021-12-16 10:14:06",\n      "description" : "example_description",\n      "lastUpdatedTime" : "2021-12-16 10:14:06",\n      "name" : "example_name",\n      "tags" : [\n         "123",\n         "456"\n      ]\n   },\n   "status" : "OK",\n   "success" : true\n}\n')),Object(l.b)("h3",{id:"patch-a-registered-model"},"Patch a registered model"),Object(l.b)("p",null,Object(l.b)("inlineCode",{parentName:"p"},"PATCH /api/v1/registered-model/{name}")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"Example Request:")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},'curl -X PATCH -H "Content-Type: application/json" -d \'\n{\n    "name": "new_name",\n    "description": "new_description"\n}\' http://127.0.0.1:32080/api/v1/registered-model/example_name\n')),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"Example Response:")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n   "attributes" : {},\n   "code" : 200,\n   "message" : "Update the registered model instance",\n   "result" : null,\n   "status" : "OK",\n   "success" : true\n}\n')),Object(l.b)("h2",{id:"delete-a-registered-model"},"Delete a registered model"),Object(l.b)("p",null,Object(l.b)("inlineCode",{parentName:"p"},"DELETE /api/v1/registered-model/{name}")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"Example Request")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},"curl -X DELETE http://127.0.0.1:32080/api/v1/registered-model/example_name\n")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"Example Response:")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n   "attributes" : {},\n   "code" : 200,\n   "message" : "Delete the registered model instance",\n   "result" : null,\n   "status" : "OK",\n   "success" : true\n}\n')),Object(l.b)("h2",{id:"create-a-registered-model-tag"},"Create a registered model tag"),Object(l.b)("p",null,Object(l.b)("inlineCode",{parentName:"p"},"POST /api/v1/registered-model/tag?name={name}&tag={tag}")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"Example Request")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},"curl -X POST http://127.0.0.1:32080/api/v1/registered-model/tag?name=example_name&tag=789\n")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"Example Response:")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n    "status":"OK",\n    "code":200,\n    "success":true,\n    "message":"Create a registered model tag instance",\n    "result":null,\n    "attributes":{}\n}\n')),Object(l.b)("h2",{id:"delete-a-registered-model-tag"},"Delete a registered model tag"),Object(l.b)("p",null,Object(l.b)("inlineCode",{parentName:"p"},"DELETE /api/v1/registered-model/tag?name={name}&tag={tag}")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"Example Request")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-sh"},"curl -X DELETE http://127.0.0.1:32080/api/v1/registered-model/tag?name=example_name&tag=789\n")),Object(l.b)("p",null,Object(l.b)("strong",{parentName:"p"},"Example Response:")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-json"},'{\n   "attributes" : {},\n   "code" : 200,\n   "message" : "Delete a registered model tag instance",\n   "result" : null,\n   "status" : "OK",\n   "success" : true\n}\n')))}o.isMDXComponent=!0},194:function(e,t,n){"use strict";n.d(t,"a",(function(){return d})),n.d(t,"b",(function(){return u}));var a=n(0),r=n.n(a);function l(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function s(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function c(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?s(Object(n),!0).forEach((function(t){l(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):s(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function p(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},l=Object.keys(e);for(a=0;a<l.length;a++)n=l[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a<l.length;a++)n=l[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var i=r.a.createContext({}),o=function(e){var t=r.a.useContext(i),n=t;return e&&(n="function"==typeof e?e(t):c(c({},t),e)),n},d=function(e){var t=o(e.components);return r.a.createElement(i.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},b=r.a.forwardRef((function(e,t){var n=e.components,a=e.mdxType,l=e.originalType,s=e.parentName,i=p(e,["components","mdxType","originalType","parentName"]),d=o(n),b=a,u=d["".concat(s,".").concat(b)]||d[b]||m[b]||l;return n?r.a.createElement(u,c(c({ref:t},i),{},{components:n})):r.a.createElement(u,c({ref:t},i))}));function u(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var l=n.length,s=new Array(l);s[0]=b;var c={};for(var p in t)hasOwnProperty.call(t,p)&&(c[p]=t[p]);c.originalType=e,c.mdxType="string"==typeof e?e:a,s[1]=c;for(var i=2;i<l;i++)s[i]=n[i];return r.a.createElement.apply(null,s)}return r.a.createElement.apply(null,n)}b.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/f1c2161d.2e2a1a77.js b/f1c2161d.3e307552.js
similarity index 98%
rename from f1c2161d.2e2a1a77.js
rename to f1c2161d.3e307552.js
index 1737190..c65768f 100644
--- a/f1c2161d.2e2a1a77.js
+++ b/f1c2161d.3e307552.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[129],{196:function(e,n,t){"use strict";t.r(n),t.d(n,"frontMatter",(function(){return i})),t.d(n,"metadata",(function(){return p})),t.d(n,"toc",(function(){return o})),t.d(n,"default",(function(){return m}));var r=t(3),a=t(7),s=(t(0),t(209)),i={title:"Experiment REST API"},p={unversionedId:"api/experiment",id:"version-0.6.0/api/experiment",isDocsHomePage:!1,title:"Experiment REST API",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/api/experiment.md",slug:"/api/experiment",permalink:"/docs/api/experiment",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/api/experiment.md",version:"0.6.0",sidebar:"api",previous:{title:"Environment REST API",permalink:"/docs/api/environment"},next:{title:"Experiment Template REST API",permalink:"/docs/api/experiment-template"}},o=[{value:"Create Experiment (Using Anonymous/Embedded Environment)",id:"create-experiment-using-anonymousembedded-environment",children:[]},{value:"Create Experiment (Using Pre-defined/Stored Environment)",id:"create-experiment-using-pre-definedstored-environment",children:[{value:"List experiment",id:"list-experiment",children:[]},{value:"Get experiment",id:"get-experiment",children:[]},{value:"Patch experiment",id:"patch-experiment",children:[]},{value:"Delete experiment",id:"delete-experiment",children:[]},{value:"List experiment Log",id:"list-experiment-log",children:[]},{value:"Get experiment Log",id:"get-experiment-log",children:[]}]}],c={toc:o};function m(e){var n=e.components,t=Object(a.a)(e,["components"]);return Object(s.b)("wrapper",Object(r.a)({},c,t,{components:n,mdxType:"MDXLayout"}),Object(s.b)("blockquote",null,Object(s.b)("p",{parentName:"blockquote"},"Note: The Experiment API is in the alpha stage which is subjected to incompatible changes in\nfuture releases.")),Object(s.b)("h2",{id:"create-experiment-using-anonymousembedded-environment"},"Create Experiment (Using Anonymous/Embedded Environment)"),Object(s.b)("p",null,Object(s.b)("inlineCode",{parentName:"p"},"POST /api/v1/experiment")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Request")),Object(s.b)("pre",null,Object(s.b)("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')),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Response:")),Object(s.b)("pre",null,Object(s.b)("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')),Object(s.b)("h2",{id:"create-experiment-using-pre-definedstored-environment"},"Create Experiment (Using Pre-defined/Stored Environment)"),Object(s.b)("p",null,Object(s.b)("inlineCode",{parentName:"p"},"POST /api/v1/experiment")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Request")),Object(s.b)("pre",null,Object(s.b)("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')),Object(s.b)("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'),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Response:")),Object(s.b)("pre",null,Object(s.b)("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')),Object(s.b)("h3",{id:"list-experiment"},"List experiment"),Object(s.b)("p",null,Object(s.b)("inlineCode",{parentName:"p"},"GET /api/v1/experiment")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Request:")),Object(s.b)("pre",null,Object(s.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/experiment\n")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Response:")),Object(s.b)("pre",null,Object(s.b)("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')),Object(s.b)("h3",{id:"get-experiment"},"Get experiment"),Object(s.b)("p",null,Object(s.b)("inlineCode",{parentName:"p"},"GET /api/v1/experiment/{id}")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Request:")),Object(s.b)("pre",null,Object(s.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/experiment/experiment_1592057447228_0001\n")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Response:")),Object(s.b)("pre",null,Object(s.b)("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')),Object(s.b)("h3",{id:"patch-experiment"},"Patch experiment"),Object(s.b)("p",null,Object(s.b)("inlineCode",{parentName:"p"},"PATCH /api/v1/experiment/{id}")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Request:")),Object(s.b)("pre",null,Object(s.b)("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')),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Response:")),Object(s.b)("pre",null,Object(s.b)("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')),Object(s.b)("h3",{id:"delete-experiment"},"Delete experiment"),Object(s.b)("p",null,Object(s.b)("inlineCode",{parentName:"p"},"GET /api/v1/experiment/{id}")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Request:")),Object(s.b)("pre",null,Object(s.b)("code",{parentName:"pre",className:"language-sh"},"curl -X DELETE http://127.0.0.1:32080/api/v1/experiment/experiment_1592057447228_0001\n")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Response:")),Object(s.b)("pre",null,Object(s.b)("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')),Object(s.b)("h3",{id:"list-experiment-log"},"List experiment Log"),Object(s.b)("p",null,Object(s.b)("inlineCode",{parentName:"p"},"GET /api/v1/experiment/logs")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Request:")),Object(s.b)("pre",null,Object(s.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/experiment/logs\n")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Response:")),Object(s.b)("pre",null,Object(s.b)("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')),Object(s.b)("h3",{id:"get-experiment-log"},"Get experiment Log"),Object(s.b)("p",null,Object(s.b)("inlineCode",{parentName:"p"},"GET /api/v1/experiment/logs/{id}")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Request:")),Object(s.b)("pre",null,Object(s.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/experiment/logs/experiment_1589199154923_0002\n")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Response:")),Object(s.b)("pre",null,Object(s.b)("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')))}m.isMDXComponent=!0},209:function(e,n,t){"use strict";t.d(n,"a",(function(){return l})),t.d(n,"b",(function(){return d}));var r=t(0),a=t.n(r);function s(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(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 p(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?i(Object(t),!0).forEach((function(n){s(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):i(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function o(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 c=a.a.createContext({}),m=function(e){var n=a.a.useContext(c),t=n;return e&&(t="function"==typeof e?e(n):p(p({},n),e)),t},l=function(e){var n=m(e.components);return a.a.createElement(c.Provider,{value:n},e.children)},u={inlineCode:"code",wrapper:function(e){var n=e.children;return a.a.createElement(a.a.Fragment,{},n)}},b=a.a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,s=e.originalType,i=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),l=m(t),b=r,d=l["".concat(i,".").concat(b)]||l[b]||u[b]||s;return t?a.a.createElement(d,p(p({ref:n},c),{},{components:t})):a.a.createElement(d,p({ref:n},c))}));function d(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var s=t.length,i=new Array(s);i[0]=b;var p={};for(var o in n)hasOwnProperty.call(n,o)&&(p[o]=n[o]);p.originalType=e,p.mdxType="string"==typeof e?e:r,i[1]=p;for(var c=2;c<s;c++)i[c]=t[c];return a.a.createElement.apply(null,i)}return a.a.createElement.apply(null,t)}b.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[117],{184:function(e,n,t){"use strict";t.r(n),t.d(n,"frontMatter",(function(){return i})),t.d(n,"metadata",(function(){return p})),t.d(n,"toc",(function(){return o})),t.d(n,"default",(function(){return m}));var r=t(3),a=t(7),s=(t(0),t(194)),i={title:"Experiment REST API"},p={unversionedId:"api/experiment",id:"version-0.6.0/api/experiment",isDocsHomePage:!1,title:"Experiment REST API",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/api/experiment.md",slug:"/api/experiment",permalink:"/docs/api/experiment",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/api/experiment.md",version:"0.6.0",sidebar:"api",previous:{title:"Environment REST API",permalink:"/docs/api/environment"},next:{title:"Experiment Template REST API",permalink:"/docs/api/experiment-template"}},o=[{value:"Create Experiment (Using Anonymous/Embedded Environment)",id:"create-experiment-using-anonymousembedded-environment",children:[]},{value:"Create Experiment (Using Pre-defined/Stored Environment)",id:"create-experiment-using-pre-definedstored-environment",children:[{value:"List experiment",id:"list-experiment",children:[]},{value:"Get experiment",id:"get-experiment",children:[]},{value:"Patch experiment",id:"patch-experiment",children:[]},{value:"Delete experiment",id:"delete-experiment",children:[]},{value:"List experiment Log",id:"list-experiment-log",children:[]},{value:"Get experiment Log",id:"get-experiment-log",children:[]}]}],c={toc:o};function m(e){var n=e.components,t=Object(a.a)(e,["components"]);return Object(s.b)("wrapper",Object(r.a)({},c,t,{components:n,mdxType:"MDXLayout"}),Object(s.b)("blockquote",null,Object(s.b)("p",{parentName:"blockquote"},"Note: The Experiment API is in the alpha stage which is subjected to incompatible changes in\nfuture releases.")),Object(s.b)("h2",{id:"create-experiment-using-anonymousembedded-environment"},"Create Experiment (Using Anonymous/Embedded Environment)"),Object(s.b)("p",null,Object(s.b)("inlineCode",{parentName:"p"},"POST /api/v1/experiment")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Request")),Object(s.b)("pre",null,Object(s.b)("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')),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Response:")),Object(s.b)("pre",null,Object(s.b)("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')),Object(s.b)("h2",{id:"create-experiment-using-pre-definedstored-environment"},"Create Experiment (Using Pre-defined/Stored Environment)"),Object(s.b)("p",null,Object(s.b)("inlineCode",{parentName:"p"},"POST /api/v1/experiment")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Request")),Object(s.b)("pre",null,Object(s.b)("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')),Object(s.b)("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'),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Response:")),Object(s.b)("pre",null,Object(s.b)("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')),Object(s.b)("h3",{id:"list-experiment"},"List experiment"),Object(s.b)("p",null,Object(s.b)("inlineCode",{parentName:"p"},"GET /api/v1/experiment")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Request:")),Object(s.b)("pre",null,Object(s.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/experiment\n")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Response:")),Object(s.b)("pre",null,Object(s.b)("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')),Object(s.b)("h3",{id:"get-experiment"},"Get experiment"),Object(s.b)("p",null,Object(s.b)("inlineCode",{parentName:"p"},"GET /api/v1/experiment/{id}")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Request:")),Object(s.b)("pre",null,Object(s.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/experiment/experiment_1592057447228_0001\n")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Response:")),Object(s.b)("pre",null,Object(s.b)("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')),Object(s.b)("h3",{id:"patch-experiment"},"Patch experiment"),Object(s.b)("p",null,Object(s.b)("inlineCode",{parentName:"p"},"PATCH /api/v1/experiment/{id}")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Request:")),Object(s.b)("pre",null,Object(s.b)("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')),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Response:")),Object(s.b)("pre",null,Object(s.b)("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')),Object(s.b)("h3",{id:"delete-experiment"},"Delete experiment"),Object(s.b)("p",null,Object(s.b)("inlineCode",{parentName:"p"},"GET /api/v1/experiment/{id}")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Request:")),Object(s.b)("pre",null,Object(s.b)("code",{parentName:"pre",className:"language-sh"},"curl -X DELETE http://127.0.0.1:32080/api/v1/experiment/experiment_1592057447228_0001\n")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Response:")),Object(s.b)("pre",null,Object(s.b)("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')),Object(s.b)("h3",{id:"list-experiment-log"},"List experiment Log"),Object(s.b)("p",null,Object(s.b)("inlineCode",{parentName:"p"},"GET /api/v1/experiment/logs")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Request:")),Object(s.b)("pre",null,Object(s.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/experiment/logs\n")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Response:")),Object(s.b)("pre",null,Object(s.b)("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')),Object(s.b)("h3",{id:"get-experiment-log"},"Get experiment Log"),Object(s.b)("p",null,Object(s.b)("inlineCode",{parentName:"p"},"GET /api/v1/experiment/logs/{id}")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Request:")),Object(s.b)("pre",null,Object(s.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/experiment/logs/experiment_1589199154923_0002\n")),Object(s.b)("p",null,Object(s.b)("strong",{parentName:"p"},"Example Response:")),Object(s.b)("pre",null,Object(s.b)("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')))}m.isMDXComponent=!0},194:function(e,n,t){"use strict";t.d(n,"a",(function(){return l})),t.d(n,"b",(function(){return d}));var r=t(0),a=t.n(r);function s(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(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 p(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?i(Object(t),!0).forEach((function(n){s(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):i(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function o(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 c=a.a.createContext({}),m=function(e){var n=a.a.useContext(c),t=n;return e&&(t="function"==typeof e?e(n):p(p({},n),e)),t},l=function(e){var n=m(e.components);return a.a.createElement(c.Provider,{value:n},e.children)},u={inlineCode:"code",wrapper:function(e){var n=e.children;return a.a.createElement(a.a.Fragment,{},n)}},b=a.a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,s=e.originalType,i=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),l=m(t),b=r,d=l["".concat(i,".").concat(b)]||l[b]||u[b]||s;return t?a.a.createElement(d,p(p({ref:n},c),{},{components:t})):a.a.createElement(d,p({ref:n},c))}));function d(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var s=t.length,i=new Array(s);i[0]=b;var p={};for(var o in n)hasOwnProperty.call(n,o)&&(p[o]=n[o]);p.originalType=e,p.mdxType="string"==typeof e?e:r,i[1]=p;for(var c=2;c<s;c++)i[c]=t[c];return a.a.createElement.apply(null,i)}return a.a.createElement.apply(null,t)}b.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/f2cef85d.e5c45c6f.js b/f2cef85d.6a5a9909.js
similarity index 92%
rename from f2cef85d.e5c45c6f.js
rename to f2cef85d.6a5a9909.js
index 44116dc..cede9e8 100644
--- a/f2cef85d.e5c45c6f.js
+++ b/f2cef85d.6a5a9909.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[130],{197:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return a})),n.d(t,"metadata",(function(){return c})),n.d(t,"toc",(function(){return s})),n.d(t,"default",(function(){return b}));var o=n(3),r=n(7),i=(n(0),n(209)),a={title:"Jupyter Notebook"},c={unversionedId:"gettingStarted/notebook",id:"version-0.6.0/gettingStarted/notebook",isDocsHomePage:!1,title:"Jupyter Notebook",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/gettingStarted/notebook.md",slug:"/gettingStarted/notebook",permalink:"/docs/gettingStarted/notebook",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/gettingStarted/notebook.md",version:"0.6.0",sidebar:"docs",previous:{title:"Quickstart",permalink:"/docs/gettingStarted/quickstart"},next:{title:"Experiment REST API",permalink:"/docs/userDocs/api/experiment"}},s=[{value:"Working with notebooks",id:"working-with-notebooks",children:[{value:"Notebooks Web UI",id:"notebooks-web-ui",children:[]}]},{value:"Experiment with your notebook",id:"experiment-with-your-notebook",children:[]}],p={toc:s};function b(e){var t=e.components,a=Object(r.a)(e,["components"]);return Object(i.b)("wrapper",Object(o.a)({},p,a,{components:t,mdxType:"MDXLayout"}),Object(i.b)("p",null,"This guide describes how to use Jupyter notebook in Submarine to launch\nand manage Jupyter notebooks."),Object(i.b)("h2",{id:"working-with-notebooks"},"Working with notebooks"),Object(i.b)("p",null,"We recommend using Web UI to manage notebooks."),Object(i.b)("h3",{id:"notebooks-web-ui"},"Notebooks Web UI"),Object(i.b)("p",null,"Notebooks can be started from the Web UI. You can click the \u201cNotebook\u201d tab in the\nleft-hand panel to manage your notebooks."),Object(i.b)("p",null,Object(i.b)("img",{src:n(253).default})),Object(i.b)("p",null,"To create a new notebook server, click \u201cNew Notebook\u201d. You should see a form for entering\ndetails of your new notebook server."),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Notebook Name : Name of the notebook server. It should follow the rules below.",Object(i.b)("ol",{parentName:"li"},Object(i.b)("li",{parentName:"ol"},"Contain at most 63 characters."),Object(i.b)("li",{parentName:"ol"},"Contain only lowercase alphanumeric characters or '-'."),Object(i.b)("li",{parentName:"ol"},"Start with an alphabetic character."),Object(i.b)("li",{parentName:"ol"},"End with an alphanumeric character."))),Object(i.b)("li",{parentName:"ul"},"Environment : It defines a set of libraries and docker image."),Object(i.b)("li",{parentName:"ul"},"CPU and Memory"),Object(i.b)("li",{parentName:"ul"},"GPU (optional)"),Object(i.b)("li",{parentName:"ul"},"EnvVar (optional) : Injects environment variables into the notebook.")),Object(i.b)("p",null,Object(i.b)("strong",{parentName:"p"},"If you\u2019re not sure which environment you need, please choose the environment \u201cnotebook-env\u201d\nfor the new notebook.")),Object(i.b)("p",null,Object(i.b)("img",{src:n(254).default})),Object(i.b)("p",null,"You should see your new notebook server. Click the name of your notebook server to connect to it."),Object(i.b)("p",null,Object(i.b)("img",{src:n(255).default})),Object(i.b)("h2",{id:"experiment-with-your-notebook"},"Experiment with your notebook"),Object(i.b)("p",null,"The environment \u201cnotebook-env\u201d includes Submarine Python SDK which can talk to Submarine Server to\ncreate experiments, as the example below:"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-python"},"from __future__ import print_function\nimport submarine\nfrom submarine.experiment.models.environment_spec import EnvironmentSpec\nfrom submarine.experiment.models.experiment_spec import ExperimentSpec\nfrom submarine.experiment.models.experiment_task_spec import ExperimentTaskSpec\nfrom submarine.experiment.models.experiment_meta import ExperimentMeta\nfrom submarine.experiment.models.code_spec import CodeSpec\n\n# Create Submarine Client\nsubmarine_client = submarine.ExperimentClient()\n\n# Define TensorFlow experiment spec\nenvironment = EnvironmentSpec(image='apache/submarine:tf-dist-mnist-test-1.0')\nexperiment_meta = ExperimentMeta(name='mnist-dist',\n                                 namespace='default',\n                                 framework='Tensorflow',\n                                 cmd='python /var/tf_dist_mnist/dist_mnist.py --train_steps=100',\n                                 env_vars={'ENV1': 'ENV1'})\n\nworker_spec = ExperimentTaskSpec(resources='cpu=1,memory=1024M',\n                                 replicas=1)\nps_spec = ExperimentTaskSpec(resources='cpu=1,memory=1024M',\n                                 replicas=1)\ncode_spec = CodeSpec(sync_mode='git', url='https://github.com/apache/submarine.git')\n\nexperiment_spec = ExperimentSpec(meta=experiment_meta,\n                                 environment=environment,\n                                 code=code_spec,\n                                 spec={'Ps' : ps_spec,'Worker': worker_spec})\n\n# Create experiment\nexperiment = submarine_client.create_experiment(experiment_spec=experiment_spec)\n\n")),Object(i.b)("p",null,"You can create a new notebook, paste the above code and run it. Or, you can find the notebook ",Object(i.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/blob/master/submarine-sdk/pysubmarine/example/submarine_experiment_sdk.ipynb"},Object(i.b)("inlineCode",{parentName:"a"},"submarine_experiment_sdk.ipynb"))," inside the launched notebook session. You can open it, try it out."),Object(i.b)("p",null,"After experiment submitted to Submarine server, you can find the experiment jobs on the UI."))}b.isMDXComponent=!0},209:function(e,t,n){"use strict";n.d(t,"a",(function(){return m})),n.d(t,"b",(function(){return d}));var o=n(0),r=n.n(o);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function c(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,o,r=function(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o<i.length;o++)n=i[o],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o<i.length;o++)n=i[o],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var p=r.a.createContext({}),b=function(e){var t=r.a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):c(c({},t),e)),n},m=function(e){var t=b(e.components);return r.a.createElement(p.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},l=r.a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,i=e.originalType,a=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),m=b(n),l=o,d=m["".concat(a,".").concat(l)]||m[l]||u[l]||i;return n?r.a.createElement(d,c(c({ref:t},p),{},{components:n})):r.a.createElement(d,c({ref:t},p))}));function d(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=n.length,a=new Array(i);a[0]=l;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c.mdxType="string"==typeof e?e:o,a[1]=c;for(var p=2;p<i;p++)a[p]=n[p];return r.a.createElement.apply(null,a)}return r.a.createElement.apply(null,n)}l.displayName="MDXCreateElement"},253:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/notebook-list-507c0f9a50f6cd5637891c13c62d4650.png"},254:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/notebook-form-1c2959c2de638b11edb28f20e2fe171b.png"},255:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/created-notebook-360544388021273ece4a1d7fba8900ee.png"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[118],{185:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return a})),n.d(t,"metadata",(function(){return c})),n.d(t,"toc",(function(){return s})),n.d(t,"default",(function(){return b}));var o=n(3),r=n(7),i=(n(0),n(194)),a={title:"Jupyter Notebook"},c={unversionedId:"gettingStarted/notebook",id:"version-0.6.0/gettingStarted/notebook",isDocsHomePage:!1,title:"Jupyter Notebook",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/gettingStarted/notebook.md",slug:"/gettingStarted/notebook",permalink:"/docs/gettingStarted/notebook",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/gettingStarted/notebook.md",version:"0.6.0",sidebar:"docs",previous:{title:"Quickstart",permalink:"/docs/gettingStarted/quickstart"},next:{title:"Experiment REST API",permalink:"/docs/userDocs/api/experiment"}},s=[{value:"Working with notebooks",id:"working-with-notebooks",children:[{value:"Notebooks Web UI",id:"notebooks-web-ui",children:[]}]},{value:"Experiment with your notebook",id:"experiment-with-your-notebook",children:[]}],p={toc:s};function b(e){var t=e.components,a=Object(r.a)(e,["components"]);return Object(i.b)("wrapper",Object(o.a)({},p,a,{components:t,mdxType:"MDXLayout"}),Object(i.b)("p",null,"This guide describes how to use Jupyter notebook in Submarine to launch\nand manage Jupyter notebooks."),Object(i.b)("h2",{id:"working-with-notebooks"},"Working with notebooks"),Object(i.b)("p",null,"We recommend using Web UI to manage notebooks."),Object(i.b)("h3",{id:"notebooks-web-ui"},"Notebooks Web UI"),Object(i.b)("p",null,"Notebooks can be started from the Web UI. You can click the \u201cNotebook\u201d tab in the\nleft-hand panel to manage your notebooks."),Object(i.b)("p",null,Object(i.b)("img",{src:n(236).default})),Object(i.b)("p",null,"To create a new notebook server, click \u201cNew Notebook\u201d. You should see a form for entering\ndetails of your new notebook server."),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Notebook Name : Name of the notebook server. It should follow the rules below.",Object(i.b)("ol",{parentName:"li"},Object(i.b)("li",{parentName:"ol"},"Contain at most 63 characters."),Object(i.b)("li",{parentName:"ol"},"Contain only lowercase alphanumeric characters or '-'."),Object(i.b)("li",{parentName:"ol"},"Start with an alphabetic character."),Object(i.b)("li",{parentName:"ol"},"End with an alphanumeric character."))),Object(i.b)("li",{parentName:"ul"},"Environment : It defines a set of libraries and docker image."),Object(i.b)("li",{parentName:"ul"},"CPU and Memory"),Object(i.b)("li",{parentName:"ul"},"GPU (optional)"),Object(i.b)("li",{parentName:"ul"},"EnvVar (optional) : Injects environment variables into the notebook.")),Object(i.b)("p",null,Object(i.b)("strong",{parentName:"p"},"If you\u2019re not sure which environment you need, please choose the environment \u201cnotebook-env\u201d\nfor the new notebook.")),Object(i.b)("p",null,Object(i.b)("img",{src:n(237).default})),Object(i.b)("p",null,"You should see your new notebook server. Click the name of your notebook server to connect to it."),Object(i.b)("p",null,Object(i.b)("img",{src:n(238).default})),Object(i.b)("h2",{id:"experiment-with-your-notebook"},"Experiment with your notebook"),Object(i.b)("p",null,"The environment \u201cnotebook-env\u201d includes Submarine Python SDK which can talk to Submarine Server to\ncreate experiments, as the example below:"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-python"},"from __future__ import print_function\nimport submarine\nfrom submarine.experiment.models.environment_spec import EnvironmentSpec\nfrom submarine.experiment.models.experiment_spec import ExperimentSpec\nfrom submarine.experiment.models.experiment_task_spec import ExperimentTaskSpec\nfrom submarine.experiment.models.experiment_meta import ExperimentMeta\nfrom submarine.experiment.models.code_spec import CodeSpec\n\n# Create Submarine Client\nsubmarine_client = submarine.ExperimentClient()\n\n# Define TensorFlow experiment spec\nenvironment = EnvironmentSpec(image='apache/submarine:tf-dist-mnist-test-1.0')\nexperiment_meta = ExperimentMeta(name='mnist-dist',\n                                 namespace='default',\n                                 framework='Tensorflow',\n                                 cmd='python /var/tf_dist_mnist/dist_mnist.py --train_steps=100',\n                                 env_vars={'ENV1': 'ENV1'})\n\nworker_spec = ExperimentTaskSpec(resources='cpu=1,memory=1024M',\n                                 replicas=1)\nps_spec = ExperimentTaskSpec(resources='cpu=1,memory=1024M',\n                                 replicas=1)\ncode_spec = CodeSpec(sync_mode='git', url='https://github.com/apache/submarine.git')\n\nexperiment_spec = ExperimentSpec(meta=experiment_meta,\n                                 environment=environment,\n                                 code=code_spec,\n                                 spec={'Ps' : ps_spec,'Worker': worker_spec})\n\n# Create experiment\nexperiment = submarine_client.create_experiment(experiment_spec=experiment_spec)\n\n")),Object(i.b)("p",null,"You can create a new notebook, paste the above code and run it. Or, you can find the notebook ",Object(i.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/blob/master/submarine-sdk/pysubmarine/example/submarine_experiment_sdk.ipynb"},Object(i.b)("inlineCode",{parentName:"a"},"submarine_experiment_sdk.ipynb"))," inside the launched notebook session. You can open it, try it out."),Object(i.b)("p",null,"After experiment submitted to Submarine server, you can find the experiment jobs on the UI."))}b.isMDXComponent=!0},194:function(e,t,n){"use strict";n.d(t,"a",(function(){return m})),n.d(t,"b",(function(){return d}));var o=n(0),r=n.n(o);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function c(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,o,r=function(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o<i.length;o++)n=i[o],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o<i.length;o++)n=i[o],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var p=r.a.createContext({}),b=function(e){var t=r.a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):c(c({},t),e)),n},m=function(e){var t=b(e.components);return r.a.createElement(p.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},l=r.a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,i=e.originalType,a=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),m=b(n),l=o,d=m["".concat(a,".").concat(l)]||m[l]||u[l]||i;return n?r.a.createElement(d,c(c({ref:t},p),{},{components:n})):r.a.createElement(d,c({ref:t},p))}));function d(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=n.length,a=new Array(i);a[0]=l;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c.mdxType="string"==typeof e?e:o,a[1]=c;for(var p=2;p<i;p++)a[p]=n[p];return r.a.createElement.apply(null,a)}return r.a.createElement.apply(null,n)}l.displayName="MDXCreateElement"},236:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/notebook-list-507c0f9a50f6cd5637891c13c62d4650.png"},237:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/notebook-form-1c2959c2de638b11edb28f20e2fe171b.png"},238:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/created-notebook-360544388021273ece4a1d7fba8900ee.png"}}]);
\ No newline at end of file
diff --git a/f477976c.c25cbad0.js b/f477976c.c25cbad0.js
deleted file mode 100644
index 9c2236e..0000000
--- a/f477976c.c25cbad0.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[131],{198:function(e,n,t){"use strict";t.r(n),t.d(n,"frontMatter",(function(){return l})),t.d(n,"metadata",(function(){return i})),t.d(n,"toc",(function(){return c})),t.d(n,"default",(function(){return u}));var r=t(3),o=t(7),a=(t(0),t(209)),l={title:"Docker Images for TensorFlow"},i={unversionedId:"userDocs/yarn/WriteDockerfileTF",id:"userDocs/yarn/WriteDockerfileTF",isDocsHomePage:!1,title:"Docker Images for TensorFlow",description:"\x3c!--",source:"@site/docs/userDocs/yarn/WriteDockerfileTF.md",slug:"/userDocs/yarn/WriteDockerfileTF",permalink:"/docs/next/userDocs/yarn/WriteDockerfileTF",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/userDocs/yarn/WriteDockerfileTF.md",version:"current"},c=[{value:"How to create docker images to run Tensorflow on YARN",id:"how-to-create-docker-images-to-run-tensorflow-on-yarn",children:[]},{value:"Use examples to build your own Tensorflow docker images",id:"use-examples-to-build-your-own-tensorflow-docker-images",children:[]},{value:"Build Docker images",id:"build-docker-images",children:[{value:"Manually build Docker image:",id:"manually-build-docker-image",children:[]},{value:"Use prebuilt images",id:"use-prebuilt-images",children:[]}]}],p={toc:c};function u(e){var n=e.components,t=Object(o.a)(e,["components"]);return Object(a.b)("wrapper",Object(r.a)({},p,t,{components:n,mdxType:"MDXLayout"}),Object(a.b)("h2",{id:"how-to-create-docker-images-to-run-tensorflow-on-yarn"},"How to create docker images to run Tensorflow on YARN"),Object(a.b)("p",null,"Dockerfile to run Tensorflow on YARN need two part:"),Object(a.b)("p",null,Object(a.b)("strong",{parentName:"p"},"Base libraries which Tensorflow depends on")),Object(a.b)("p",null,"1) OS base image, for example ",Object(a.b)("inlineCode",{parentName:"p"},"ubuntu:18.04")),Object(a.b)("p",null,"2) Tensorflow depended libraries and packages. For example ",Object(a.b)("inlineCode",{parentName:"p"},"python"),", ",Object(a.b)("inlineCode",{parentName:"p"},"scipy"),". For GPU support, need ",Object(a.b)("inlineCode",{parentName:"p"},"cuda"),", ",Object(a.b)("inlineCode",{parentName:"p"},"cudnn"),", etc."),Object(a.b)("p",null,"3) Tensorflow package."),Object(a.b)("p",null,Object(a.b)("strong",{parentName:"p"},"Libraries to access HDFS")),Object(a.b)("p",null,"1) JDK"),Object(a.b)("p",null,"2) Hadoop"),Object(a.b)("p",null,"Here's an example of a base image (w/o GPU support) to install Tensorflow:"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre",className:"language-shell"},"FROM ubuntu:18.04\n\n# Pick up some TF dependencies\nRUN apt-get update && apt-get install -y --no-install-recommends \\\n        build-essential \\\n        curl \\\n        libfreetype6-dev \\\n        libpng-dev \\\n        libzmq3-dev \\\n        pkg-config \\\n        python \\\n        python-dev \\\n        rsync \\\n        software-properties-common \\\n        unzip \\\n        && \\\n    apt-get clean && \\\n    rm -rf /var/lib/apt/lists/*\n\nRUN export DEBIAN_FRONTEND=noninteractive && apt-get update && apt-get install -yq krb5-user libpam-krb5 && apt-get clean\n\nRUN curl -O https://bootstrap.pypa.io/get-pip.py && \\\n    python get-pip.py && \\\n    rm get-pip.py\n\nRUN pip --no-cache-dir install \\\n        Pillow \\\n        h5py \\\n        ipykernel \\\n        jupyter \\\n        matplotlib \\\n        numpy \\\n        pandas \\\n        scipy \\\n        sklearn \\\n        && \\\n    python -m ipykernel.kernelspec\n\nRUN pip --no-cache-dir install \\\n    http://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.13.1-cp27-none-linux_x86_64.whl\n")),Object(a.b)("p",null,"On top of above image, add files, install packages to access HDFS"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre",className:"language-shell"},'RUN apt-get update && apt-get install -y openjdk-8-jdk wget\n# Install hadoop\nENV HADOOP_VERSION="2.9.2"\nRUN wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-${HADOOP_VERSION}/hadoop-${HADOOP_VERSION}.tar.gz\nRUN tar zxf hadoop-${HADOOP_VERSION}.tar.gz\nRUN ln -s hadoop-${HADOOP_VERSION} hadoop-current\nRUN rm hadoop-${HADOOP_VERSION}.tar.gz\n')),Object(a.b)("p",null,"Build and push to your own docker registry: Use ",Object(a.b)("inlineCode",{parentName:"p"},"docker build ... ")," and ",Object(a.b)("inlineCode",{parentName:"p"},"docker push ...")," to finish this step."),Object(a.b)("h2",{id:"use-examples-to-build-your-own-tensorflow-docker-images"},"Use examples to build your own Tensorflow docker images"),Object(a.b)("p",null,"We provided following examples for you to build tensorflow docker images."),Object(a.b)("p",null,"For Tensorflow 1.13.1 (Precompiled to CUDA 10.x)"),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},Object(a.b)("em",{parentName:"li"},"docker/tensorflow/base/ubuntu-18.04/Dockerfile.cpu.tf_1.13.1"),": Tensorflow 1.13.1 supports CPU only."),Object(a.b)("li",{parentName:"ul"},Object(a.b)("em",{parentName:"li"},"docker/tensorflow/with-cifar10-models/ubuntu-18.04/Dockerfile.cpu.tf_1.13.1"),": Tensorflow 1.13.1 supports CPU only, and included models"),Object(a.b)("li",{parentName:"ul"},Object(a.b)("em",{parentName:"li"},"docker/tensorflow/base/ubuntu-18.04/Dockerfile.gpu.tf_1.13.1"),": Tensorflow 1.13.1 supports GPU, which is prebuilt to CUDA10."),Object(a.b)("li",{parentName:"ul"},Object(a.b)("em",{parentName:"li"},"docker/tensorflow/with-cifar10-models/ubuntu-18.04/Dockerfile.gpu.tf_1.13.1"),": Tensorflow 1.13.1 supports GPU, which is prebuilt to CUDA10, with models.")),Object(a.b)("h2",{id:"build-docker-images"},"Build Docker images"),Object(a.b)("h3",{id:"manually-build-docker-image"},"Manually build Docker image:"),Object(a.b)("p",null,"Under ",Object(a.b)("inlineCode",{parentName:"p"},"docker/")," directory, run ",Object(a.b)("inlineCode",{parentName:"p"},"build-all.sh")," to build Docker images. It will build following images:"),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},Object(a.b)("inlineCode",{parentName:"li"},"tf-1.13.1-gpu-base:0.0.1")," for base Docker image which includes Hadoop, Tensorflow, GPU base libraries."),Object(a.b)("li",{parentName:"ul"},Object(a.b)("inlineCode",{parentName:"li"},"tf-1.13.1-gpu-base:0.0.1")," for base Docker image which includes Hadoop. Tensorflow."),Object(a.b)("li",{parentName:"ul"},Object(a.b)("inlineCode",{parentName:"li"},"tf-1.13.1-gpu:0.0.1")," which includes cifar10 model"),Object(a.b)("li",{parentName:"ul"},Object(a.b)("inlineCode",{parentName:"li"},"tf-1.13.1-cpu:0.0.1")," which inclues cifar10 model (cpu only).")),Object(a.b)("h3",{id:"use-prebuilt-images"},"Use prebuilt images"),Object(a.b)("p",null,"(No liability)\nYou can also use prebuilt images for convenience:"),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},"hadoopsubmarine/tf-1.13.1-gpu:0.0.1"),Object(a.b)("li",{parentName:"ul"},"hadoopsubmarine/tf-1.13.1-cpu:0.0.1")))}u.isMDXComponent=!0},209:function(e,n,t){"use strict";t.d(n,"a",(function(){return s})),t.d(n,"b",(function(){return m}));var r=t(0),o=t.n(r);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 l(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?l(Object(t),!0).forEach((function(n){a(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):l(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function c(e,n){if(null==e)return{};var t,r,o=function(e,n){if(null==e)return{};var t,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)t=a[r],n.indexOf(t)>=0||(o[t]=e[t]);return o}(e,n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)t=a[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}var p=o.a.createContext({}),u=function(e){var n=o.a.useContext(p),t=n;return e&&(t="function"==typeof e?e(n):i(i({},n),e)),t},s=function(e){var n=u(e.components);return o.a.createElement(p.Provider,{value:n},e.children)},b={inlineCode:"code",wrapper:function(e){var n=e.children;return o.a.createElement(o.a.Fragment,{},n)}},d=o.a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,a=e.originalType,l=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),s=u(t),d=r,m=s["".concat(l,".").concat(d)]||s[d]||b[d]||a;return t?o.a.createElement(m,i(i({ref:n},p),{},{components:t})):o.a.createElement(m,i({ref:n},p))}));function m(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var a=t.length,l=new Array(a);l[0]=d;var i={};for(var c in n)hasOwnProperty.call(n,c)&&(i[c]=n[c]);i.originalType=e,i.mdxType="string"==typeof e?e:r,l[1]=i;for(var p=2;p<a;p++)l[p]=t[p];return o.a.createElement.apply(null,l)}return o.a.createElement.apply(null,t)}d.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/f5ec27a4.1acb9c22.js b/f5ec27a4.1acb9c22.js
deleted file mode 100644
index 978fe46..0000000
--- a/f5ec27a4.1acb9c22.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[132],{199:function(e,n,r){"use strict";r.r(n),r.d(n,"frontMatter",(function(){return i})),r.d(n,"metadata",(function(){return c})),r.d(n,"toc",(function(){return u})),r.d(n,"default",(function(){return p}));var t=r(3),o=r(7),a=(r(0),r(209)),i={title:"Running Submarine on YARN (deprecated)"},c={unversionedId:"adminDocs/yarn/README",id:"adminDocs/yarn/README",isDocsHomePage:!1,title:"Running Submarine on YARN (deprecated)",description:"\x3c!--",source:"@site/docs/adminDocs/yarn/README.md",slug:"/adminDocs/yarn/README",permalink:"/docs/next/adminDocs/yarn/README",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/adminDocs/yarn/README.md",version:"current",sidebar:"docs",previous:{title:"Tensorboard",permalink:"/docs/next/userDocs/others/tensorboard"},next:{title:"Project Architecture",permalink:"/docs/next/devDocs/README"}},u=[{value:"Hadoop version",id:"hadoop-version",children:[]},{value:"Submarine YARN Runtime Guide",id:"submarine-yarn-runtime-guide",children:[]}],s={toc:u};function p(e){var n=e.components,r=Object(o.a)(e,["components"]);return Object(a.b)("wrapper",Object(t.a)({},s,r,{components:n,mdxType:"MDXLayout"}),Object(a.b)("p",null,"Submarine for YARN supports TensorFlow, PyTorch and MXNet framework. (Which is leveraging ",Object(a.b)("a",{parentName:"p",href:"https://github.com/linkedin/TonY"},"TonY")," created by Linkedin to run deep learning training jobs on YARN."),Object(a.b)("p",null,"Submarine also supports GPU-on-YARN and Docker-on-YARN feature."),Object(a.b)("p",null,"Submarine can run on Hadoop 2.7.3 or later version, if GPU-on-YARN or Docker-on-YARN feature is needed, newer Hadoop version is required, please refer to the next section about what Hadoop version to choose."),Object(a.b)("h2",{id:"hadoop-version"},"Hadoop version"),Object(a.b)("p",null,"Must:"),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},"Apache Hadoop version newer than 2.7.3")),Object(a.b)("p",null,"Optional:"),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},"When you want to use GPU-on-YARN feature with Submarine, please make sure Hadoop is at least 2.10.0+ (or 3.1.0+), and follow ",Object(a.b)("a",{parentName:"li",href:"https://hadoop.apache.org/docs/r2.10.0/hadoop-yarn/hadoop-yarn-site/UsingGpus.html"},"Enable GPU on YARN 2.10.0+")," to enable GPU-on-YARN feature."),Object(a.b)("li",{parentName:"ul"},"When you want to run training jobs with Docker container, please make sure Hadoop is at least 2.8.2, and follow ",Object(a.b)("a",{parentName:"li",href:"https://hadoop.apache.org/docs/r2.8.2/hadoop-yarn/hadoop-yarn-site/DockerContainers.html"},"Enable Docker on YARN 2.8.2+")," to enable Docker-on-YARN feature.")),Object(a.b)("h2",{id:"submarine-yarn-runtime-guide"},"Submarine YARN Runtime Guide"),Object(a.b)("p",null,Object(a.b)("a",{parentName:"p",href:"../../userDocs/yarn/YARNRuntimeGuide"},"YARN Runtime Guide")," talk about how to use Submarine to run jobs on YARN, with Docker / without Docker."))}p.isMDXComponent=!0},209:function(e,n,r){"use strict";r.d(n,"a",(function(){return l})),r.d(n,"b",(function(){return m}));var t=r(0),o=r.n(t);function a(e,n,r){return n in e?Object.defineProperty(e,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[n]=r,e}function i(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),r.push.apply(r,t)}return r}function c(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?i(Object(r),!0).forEach((function(n){a(e,n,r[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))}))}return e}function u(e,n){if(null==e)return{};var r,t,o=function(e,n){if(null==e)return{};var r,t,o={},a=Object.keys(e);for(t=0;t<a.length;t++)r=a[t],n.indexOf(r)>=0||(o[r]=e[r]);return o}(e,n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(t=0;t<a.length;t++)r=a[t],n.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var s=o.a.createContext({}),p=function(e){var n=o.a.useContext(s),r=n;return e&&(r="function"==typeof e?e(n):c(c({},n),e)),r},l=function(e){var n=p(e.components);return o.a.createElement(s.Provider,{value:n},e.children)},d={inlineCode:"code",wrapper:function(e){var n=e.children;return o.a.createElement(o.a.Fragment,{},n)}},b=o.a.forwardRef((function(e,n){var r=e.components,t=e.mdxType,a=e.originalType,i=e.parentName,s=u(e,["components","mdxType","originalType","parentName"]),l=p(r),b=t,m=l["".concat(i,".").concat(b)]||l[b]||d[b]||a;return r?o.a.createElement(m,c(c({ref:n},s),{},{components:r})):o.a.createElement(m,c({ref:n},s))}));function m(e,n){var r=arguments,t=n&&n.mdxType;if("string"==typeof e||t){var a=r.length,i=new Array(a);i[0]=b;var c={};for(var u in n)hasOwnProperty.call(n,u)&&(c[u]=n[u]);c.originalType=e,c.mdxType="string"==typeof e?e:t,i[1]=c;for(var s=2;s<a;s++)i[s]=r[s];return o.a.createElement.apply(null,i)}return o.a.createElement.apply(null,r)}b.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/f6956115.d54a89ba.js b/f6956115.1f3df0b9.js
similarity index 97%
rename from f6956115.d54a89ba.js
rename to f6956115.1f3df0b9.js
index 62fcb27..9c34e92 100644
--- a/f6956115.d54a89ba.js
+++ b/f6956115.1f3df0b9.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[133],{200:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return i})),n.d(t,"metadata",(function(){return l})),n.d(t,"toc",(function(){return m})),n.d(t,"default",(function(){return s}));var a=n(3),r=n(7),p=(n(0),n(209)),i={title:"Experiment Template REST API"},l={unversionedId:"api/experiment-template",id:"version-0.6.0/api/experiment-template",isDocsHomePage:!1,title:"Experiment Template REST API",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/api/experiment-template.md",slug:"/api/experiment-template",permalink:"/docs/api/experiment-template",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/api/experiment-template.md",version:"0.6.0",sidebar:"api",previous:{title:"Experiment REST API",permalink:"/docs/api/experiment"},next:{title:"Notebook REST API",permalink:"/docs/api/notebook"}},m=[{value:"Create experiment template",id:"create-experiment-template",children:[{value:"List experiment template",id:"list-experiment-template",children:[]},{value:"Get experiment template",id:"get-experiment-template",children:[]},{value:"Patch template",id:"patch-template",children:[]},{value:"Delete template",id:"delete-template",children:[]},{value:"Use template to create a experiment",id:"use-template-to-create-a-experiment",children:[]}]}],c={toc:m};function s(e){var t=e.components,n=Object(r.a)(e,["components"]);return Object(p.b)("wrapper",Object(a.a)({},c,n,{components:t,mdxType:"MDXLayout"}),Object(p.b)("blockquote",null,Object(p.b)("p",{parentName:"blockquote"},"Note: The Experiment API is in the alpha stage which is subjected to incompatible changes in\nfuture releases.")),Object(p.b)("p",null,'Developers can register a parameterized experiment as an experiment template,\nFor example, if the developer wants to change the following "--learning_rate=0.1" to parameters.'),Object(p.b)("pre",null,Object(p.b)("code",{parentName:"pre",className:"language-json"},'"experimentSpec": {\n  "meta": {\n    "cmd": "python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.1 --batch_size=150"\n  }, \n  "...": "..."\n}\n')),Object(p.b)("p",null,"They can use two curly braces as placeholders, the template format will be as"),Object(p.b)("pre",null,Object(p.b)("code",{parentName:"pre",className:"language-json"},'"experimentSpec": {\n  "meta": {\n    "cmd": "python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate={{learning_rate}} --batch_size=150"\n  }, \n  "...": "..."\n}\n')),Object(p.b)("p",null,"The template parameters format will be as"),Object(p.b)("pre",null,Object(p.b)("code",{parentName:"pre",className:"language-json"},'{\n  "name": "learning_rate",\n  "value": 0.1,\n  "required": true,\n  "description": "This is learning_rate of training."\n}\n')),Object(p.b)("p",null,"name: placeholder name\nvalue; default value\nrequired: Indicates whether the user must enter parameters, when required is true, value can be null\ndescription: Introduction of this parameter"),Object(p.b)("p",null,"Users can use existing experiment templates and adjust the default value to create experiments.\nAfter the user submits the experiment template, the submarine server finds the corresponding template based on the name. And the template handler converts input parameters to an actual experiment, such as a distributed TF experiment."),Object(p.b)("p",null,'The "replicas", "cpu", "memory" of resources will be automatically parameterized, so developers do not need to add them.\nFor example, if there are "Ps" and "Worker" under spec, the following parameters will be automatically appended.'),Object(p.b)("pre",null,Object(p.b)("code",{parentName:"pre"},"spec.Ps.replicas\nspec.Ps.resourceMap.cpu\nspec.Ps.resourceMap.memory\nspec.Worker.replicas\nspec.Worker.resourceMap.cpu\nspec.Worker.resourceMap.memory\n")),Object(p.b)("h2",{id:"create-experiment-template"},"Create experiment template"),Object(p.b)("p",null,Object(p.b)("inlineCode",{parentName:"p"},"POST /api/v1/template")),Object(p.b)("p",null,Object(p.b)("strong",{parentName:"p"},"Example Request")),Object(p.b)("pre",null,Object(p.b)("code",{parentName:"pre",className:"language-sh"},'curl -X POST -H "Content-Type: application/json" -d \'\n{\n  "name": "my-tf-mnist-template",\n  "author": "author",\n  "description": "This is a template to run tf-mnist",\n  "parameters": [{\n      "name": "learning_rate",\n      "value": 0.1,\n      "required": true,\n      "description": "This is learning_rate of training."\n    },\n    {\n      "name": "batch_size",\n      "value": 150,\n      "required": true,\n      "description": "This is batch_size of training."\n    },\n    {\n      "name": "experiment_name",\n      "value": "tf-mnist1",\n      "required": true,\n      "description": "the name of experiment."\n    }\n  ],\n  "experimentSpec": {\n    "meta": {\n      "cmd": "python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate={{learning_rate}} --batch_size={{batch_size}}",\n      "name": "{{experiment_name}}",\n      "envVars": {\n        "ENV1": "ENV1"\n      },\n      "framework": "TensorFlow",\n      "namespace": "default"\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=1024M"\n      }\n    },\n    "environment": {\n      "image": "apache/submarine:tf-mnist-with-summaries-1.0"\n    }\n  }\n}\n\' http://127.0.0.1:32080/api/v1/template\n')),Object(p.b)("h3",{id:"list-experiment-template"},"List experiment template"),Object(p.b)("p",null,Object(p.b)("inlineCode",{parentName:"p"},"GET /api/v1/template")),Object(p.b)("p",null,Object(p.b)("strong",{parentName:"p"},"Example Request:")),Object(p.b)("pre",null,Object(p.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/template\n")),Object(p.b)("h3",{id:"get-experiment-template"},"Get experiment template"),Object(p.b)("p",null,Object(p.b)("inlineCode",{parentName:"p"},"GET /api/v1/template/{name}")),Object(p.b)("p",null,Object(p.b)("strong",{parentName:"p"},"Example Request:")),Object(p.b)("pre",null,Object(p.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/template/my-tf-mnist-template\n")),Object(p.b)("h3",{id:"patch-template"},"Patch template"),Object(p.b)("p",null,Object(p.b)("inlineCode",{parentName:"p"},"PATCH /api/v1/template/{name}")),Object(p.b)("pre",null,Object(p.b)("code",{parentName:"pre",className:"language-sh"},'curl -X PATCH -H "Content-Type: application/json" -d \'\n{\n  "name": "my-tf-mnist-template",\n  "author": "author-new",\n  "description": "This is a template to run tf-mnist",\n  "parameters": [{\n      "name": "learning_rate",\n      "value": 0.1,\n      "required": true,\n      "description": "This is learning_rate of training."\n    },\n    {\n      "name": "batch_size",\n      "value": 150,\n      "required": true,\n      "description": "This is batch_size of training."\n    },\n    {\n      "name": "experiment_name",\n      "value": "tf-mnist1",\n      "required": true,\n      "description": "the name of experiment."\n    }\n  ],\n  "experimentSpec": {\n    "meta": {\n      "cmd": "python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate={{learning_rate}} --batch_size={{batch_size}}",\n      "name": "{{experiment_name}}",\n      "envVars": {\n        "ENV1": "ENV1"\n      },\n      "framework": "TensorFlow",\n      "namespace": "default"\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=1024M"\n      }\n    },\n    "environment": {\n      "image": "apache/submarine:tf-mnist-with-summaries-1.0"\n    }\n  }\n}\n\' http://127.0.0.1:32080/api/v1/template/my-tf-mnist-template\n')),Object(p.b)("blockquote",null,Object(p.b)("p",{parentName:"blockquote"},'"description", "parameters", "experimentSpec", "author" etc can be updated using this API.\n"name" of experiment template is not supported.')),Object(p.b)("h3",{id:"delete-template"},"Delete template"),Object(p.b)("p",null,Object(p.b)("inlineCode",{parentName:"p"},"GET /api/v1/template/{name}")),Object(p.b)("p",null,Object(p.b)("strong",{parentName:"p"},"Example Request:")),Object(p.b)("pre",null,Object(p.b)("code",{parentName:"pre",className:"language-sh"},"curl -X DELETE http://127.0.0.1:32080/api/v1/template/my-tf-mnist-template\n")),Object(p.b)("h3",{id:"use-template-to-create-a-experiment"},"Use template to create a experiment"),Object(p.b)("p",null,Object(p.b)("inlineCode",{parentName:"p"},"POST /api/v1/experiment/{template_name}")),Object(p.b)("p",null,Object(p.b)("strong",{parentName:"p"},"Example Request:")),Object(p.b)("pre",null,Object(p.b)("code",{parentName:"pre",className:"language-sh"},'curl -X POST -H "Content-Type: application/json" -d \'\n{\n    "name": "tf-mnist",\n    "params": {\n        "learning_rate":"0.01",\n        "batch_size":"150",\n        "experiment_name":"newexperiment1"\n    }\n}\n\' http://127.0.0.1:32080/api/v1/experiment/my-tf-mnist-template\n')))}s.isMDXComponent=!0},209:function(e,t,n){"use strict";n.d(t,"a",(function(){return o})),n.d(t,"b",(function(){return d}));var a=n(0),r=n.n(a);function p(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){p(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function m(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},p=Object.keys(e);for(a=0;a<p.length;a++)n=p[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var p=Object.getOwnPropertySymbols(e);for(a=0;a<p.length;a++)n=p[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var c=r.a.createContext({}),s=function(e){var t=r.a.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},o=function(e){var t=s(e.components);return r.a.createElement(c.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},b=r.a.forwardRef((function(e,t){var n=e.components,a=e.mdxType,p=e.originalType,i=e.parentName,c=m(e,["components","mdxType","originalType","parentName"]),o=s(n),b=a,d=o["".concat(i,".").concat(b)]||o[b]||u[b]||p;return n?r.a.createElement(d,l(l({ref:t},c),{},{components:n})):r.a.createElement(d,l({ref:t},c))}));function d(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var p=n.length,i=new Array(p);i[0]=b;var l={};for(var m in t)hasOwnProperty.call(t,m)&&(l[m]=t[m]);l.originalType=e,l.mdxType="string"==typeof e?e:a,i[1]=l;for(var c=2;c<p;c++)i[c]=n[c];return r.a.createElement.apply(null,i)}return r.a.createElement.apply(null,n)}b.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[119],{186:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return i})),n.d(t,"metadata",(function(){return l})),n.d(t,"toc",(function(){return m})),n.d(t,"default",(function(){return s}));var a=n(3),r=n(7),p=(n(0),n(194)),i={title:"Experiment Template REST API"},l={unversionedId:"api/experiment-template",id:"version-0.6.0/api/experiment-template",isDocsHomePage:!1,title:"Experiment Template REST API",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/api/experiment-template.md",slug:"/api/experiment-template",permalink:"/docs/api/experiment-template",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/api/experiment-template.md",version:"0.6.0",sidebar:"api",previous:{title:"Experiment REST API",permalink:"/docs/api/experiment"},next:{title:"Notebook REST API",permalink:"/docs/api/notebook"}},m=[{value:"Create experiment template",id:"create-experiment-template",children:[{value:"List experiment template",id:"list-experiment-template",children:[]},{value:"Get experiment template",id:"get-experiment-template",children:[]},{value:"Patch template",id:"patch-template",children:[]},{value:"Delete template",id:"delete-template",children:[]},{value:"Use template to create a experiment",id:"use-template-to-create-a-experiment",children:[]}]}],c={toc:m};function s(e){var t=e.components,n=Object(r.a)(e,["components"]);return Object(p.b)("wrapper",Object(a.a)({},c,n,{components:t,mdxType:"MDXLayout"}),Object(p.b)("blockquote",null,Object(p.b)("p",{parentName:"blockquote"},"Note: The Experiment API is in the alpha stage which is subjected to incompatible changes in\nfuture releases.")),Object(p.b)("p",null,'Developers can register a parameterized experiment as an experiment template,\nFor example, if the developer wants to change the following "--learning_rate=0.1" to parameters.'),Object(p.b)("pre",null,Object(p.b)("code",{parentName:"pre",className:"language-json"},'"experimentSpec": {\n  "meta": {\n    "cmd": "python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.1 --batch_size=150"\n  }, \n  "...": "..."\n}\n')),Object(p.b)("p",null,"They can use two curly braces as placeholders, the template format will be as"),Object(p.b)("pre",null,Object(p.b)("code",{parentName:"pre",className:"language-json"},'"experimentSpec": {\n  "meta": {\n    "cmd": "python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate={{learning_rate}} --batch_size=150"\n  }, \n  "...": "..."\n}\n')),Object(p.b)("p",null,"The template parameters format will be as"),Object(p.b)("pre",null,Object(p.b)("code",{parentName:"pre",className:"language-json"},'{\n  "name": "learning_rate",\n  "value": 0.1,\n  "required": true,\n  "description": "This is learning_rate of training."\n}\n')),Object(p.b)("p",null,"name: placeholder name\nvalue; default value\nrequired: Indicates whether the user must enter parameters, when required is true, value can be null\ndescription: Introduction of this parameter"),Object(p.b)("p",null,"Users can use existing experiment templates and adjust the default value to create experiments.\nAfter the user submits the experiment template, the submarine server finds the corresponding template based on the name. And the template handler converts input parameters to an actual experiment, such as a distributed TF experiment."),Object(p.b)("p",null,'The "replicas", "cpu", "memory" of resources will be automatically parameterized, so developers do not need to add them.\nFor example, if there are "Ps" and "Worker" under spec, the following parameters will be automatically appended.'),Object(p.b)("pre",null,Object(p.b)("code",{parentName:"pre"},"spec.Ps.replicas\nspec.Ps.resourceMap.cpu\nspec.Ps.resourceMap.memory\nspec.Worker.replicas\nspec.Worker.resourceMap.cpu\nspec.Worker.resourceMap.memory\n")),Object(p.b)("h2",{id:"create-experiment-template"},"Create experiment template"),Object(p.b)("p",null,Object(p.b)("inlineCode",{parentName:"p"},"POST /api/v1/template")),Object(p.b)("p",null,Object(p.b)("strong",{parentName:"p"},"Example Request")),Object(p.b)("pre",null,Object(p.b)("code",{parentName:"pre",className:"language-sh"},'curl -X POST -H "Content-Type: application/json" -d \'\n{\n  "name": "my-tf-mnist-template",\n  "author": "author",\n  "description": "This is a template to run tf-mnist",\n  "parameters": [{\n      "name": "learning_rate",\n      "value": 0.1,\n      "required": true,\n      "description": "This is learning_rate of training."\n    },\n    {\n      "name": "batch_size",\n      "value": 150,\n      "required": true,\n      "description": "This is batch_size of training."\n    },\n    {\n      "name": "experiment_name",\n      "value": "tf-mnist1",\n      "required": true,\n      "description": "the name of experiment."\n    }\n  ],\n  "experimentSpec": {\n    "meta": {\n      "cmd": "python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate={{learning_rate}} --batch_size={{batch_size}}",\n      "name": "{{experiment_name}}",\n      "envVars": {\n        "ENV1": "ENV1"\n      },\n      "framework": "TensorFlow",\n      "namespace": "default"\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=1024M"\n      }\n    },\n    "environment": {\n      "image": "apache/submarine:tf-mnist-with-summaries-1.0"\n    }\n  }\n}\n\' http://127.0.0.1:32080/api/v1/template\n')),Object(p.b)("h3",{id:"list-experiment-template"},"List experiment template"),Object(p.b)("p",null,Object(p.b)("inlineCode",{parentName:"p"},"GET /api/v1/template")),Object(p.b)("p",null,Object(p.b)("strong",{parentName:"p"},"Example Request:")),Object(p.b)("pre",null,Object(p.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/template\n")),Object(p.b)("h3",{id:"get-experiment-template"},"Get experiment template"),Object(p.b)("p",null,Object(p.b)("inlineCode",{parentName:"p"},"GET /api/v1/template/{name}")),Object(p.b)("p",null,Object(p.b)("strong",{parentName:"p"},"Example Request:")),Object(p.b)("pre",null,Object(p.b)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/template/my-tf-mnist-template\n")),Object(p.b)("h3",{id:"patch-template"},"Patch template"),Object(p.b)("p",null,Object(p.b)("inlineCode",{parentName:"p"},"PATCH /api/v1/template/{name}")),Object(p.b)("pre",null,Object(p.b)("code",{parentName:"pre",className:"language-sh"},'curl -X PATCH -H "Content-Type: application/json" -d \'\n{\n  "name": "my-tf-mnist-template",\n  "author": "author-new",\n  "description": "This is a template to run tf-mnist",\n  "parameters": [{\n      "name": "learning_rate",\n      "value": 0.1,\n      "required": true,\n      "description": "This is learning_rate of training."\n    },\n    {\n      "name": "batch_size",\n      "value": 150,\n      "required": true,\n      "description": "This is batch_size of training."\n    },\n    {\n      "name": "experiment_name",\n      "value": "tf-mnist1",\n      "required": true,\n      "description": "the name of experiment."\n    }\n  ],\n  "experimentSpec": {\n    "meta": {\n      "cmd": "python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate={{learning_rate}} --batch_size={{batch_size}}",\n      "name": "{{experiment_name}}",\n      "envVars": {\n        "ENV1": "ENV1"\n      },\n      "framework": "TensorFlow",\n      "namespace": "default"\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=1024M"\n      }\n    },\n    "environment": {\n      "image": "apache/submarine:tf-mnist-with-summaries-1.0"\n    }\n  }\n}\n\' http://127.0.0.1:32080/api/v1/template/my-tf-mnist-template\n')),Object(p.b)("blockquote",null,Object(p.b)("p",{parentName:"blockquote"},'"description", "parameters", "experimentSpec", "author" etc can be updated using this API.\n"name" of experiment template is not supported.')),Object(p.b)("h3",{id:"delete-template"},"Delete template"),Object(p.b)("p",null,Object(p.b)("inlineCode",{parentName:"p"},"GET /api/v1/template/{name}")),Object(p.b)("p",null,Object(p.b)("strong",{parentName:"p"},"Example Request:")),Object(p.b)("pre",null,Object(p.b)("code",{parentName:"pre",className:"language-sh"},"curl -X DELETE http://127.0.0.1:32080/api/v1/template/my-tf-mnist-template\n")),Object(p.b)("h3",{id:"use-template-to-create-a-experiment"},"Use template to create a experiment"),Object(p.b)("p",null,Object(p.b)("inlineCode",{parentName:"p"},"POST /api/v1/experiment/{template_name}")),Object(p.b)("p",null,Object(p.b)("strong",{parentName:"p"},"Example Request:")),Object(p.b)("pre",null,Object(p.b)("code",{parentName:"pre",className:"language-sh"},'curl -X POST -H "Content-Type: application/json" -d \'\n{\n    "name": "tf-mnist",\n    "params": {\n        "learning_rate":"0.01",\n        "batch_size":"150",\n        "experiment_name":"newexperiment1"\n    }\n}\n\' http://127.0.0.1:32080/api/v1/experiment/my-tf-mnist-template\n')))}s.isMDXComponent=!0},194:function(e,t,n){"use strict";n.d(t,"a",(function(){return o})),n.d(t,"b",(function(){return d}));var a=n(0),r=n.n(a);function p(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){p(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function m(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},p=Object.keys(e);for(a=0;a<p.length;a++)n=p[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var p=Object.getOwnPropertySymbols(e);for(a=0;a<p.length;a++)n=p[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var c=r.a.createContext({}),s=function(e){var t=r.a.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},o=function(e){var t=s(e.components);return r.a.createElement(c.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},b=r.a.forwardRef((function(e,t){var n=e.components,a=e.mdxType,p=e.originalType,i=e.parentName,c=m(e,["components","mdxType","originalType","parentName"]),o=s(n),b=a,d=o["".concat(i,".").concat(b)]||o[b]||u[b]||p;return n?r.a.createElement(d,l(l({ref:t},c),{},{components:n})):r.a.createElement(d,l({ref:t},c))}));function d(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var p=n.length,i=new Array(p);i[0]=b;var l={};for(var m in t)hasOwnProperty.call(t,m)&&(l[m]=t[m]);l.originalType=e,l.mdxType="string"==typeof e?e:a,i[1]=l;for(var c=2;c<p;c++)i[c]=n[c];return r.a.createElement.apply(null,i)}return r.a.createElement.apply(null,n)}b.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/f8f6d32b.d2e6640e.js b/f8f6d32b.1f2be71c.js
similarity index 96%
rename from f8f6d32b.d2e6640e.js
rename to f8f6d32b.1f2be71c.js
index c91c035..2f7102f 100644
--- a/f8f6d32b.d2e6640e.js
+++ b/f8f6d32b.1f2be71c.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[134],{201:function(e,n,r){"use strict";r.r(n),r.d(n,"frontMatter",(function(){return c})),r.d(n,"metadata",(function(){return o})),r.d(n,"toc",(function(){return s})),r.d(n,"default",(function(){return l}));var t=r(3),i=r(7),a=(r(0),r(209)),c={title:"Submarine Launcher"},o={unversionedId:"designDocs/wip-designs/submarine-launcher",id:"version-0.6.0/designDocs/wip-designs/submarine-launcher",isDocsHomePage:!1,title:"Submarine Launcher",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/designDocs/wip-designs/submarine-launcher.md",slug:"/designDocs/wip-designs/submarine-launcher",permalink:"/docs/designDocs/wip-designs/submarine-launcher",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/designDocs/wip-designs/submarine-launcher.md",version:"0.6.0",sidebar:"docs",previous:{title:"Generic Expeiment Spec",permalink:"/docs/designDocs/submarine-server/experimentSpec"},next:{title:"Cluster Server Design - High-Availability",permalink:"/docs/designDocs/wip-designs/submarine-clusterServer"}},s=[{value:"Introduction",id:"introduction",children:[]},{value:"Requirement",id:"requirement",children:[{value:"Cloud-Native Service",id:"cloud-native-service",children:[]},{value:"Service discovery",id:"service-discovery",children:[]}]},{value:"Design",id:"design",children:[{value:"Launcher",id:"launcher",children:[]},{value:"Launcher On Docker",id:"launcher-on-docker",children:[]},{value:"Launcher On Kubernetes",id:"launcher-on-kubernetes",children:[]},{value:"Launcher On Yarn",id:"launcher-on-yarn",children:[]},{value:"Launcher On AWS",id:"launcher-on-aws",children:[]},{value:"Launcher On GCP",id:"launcher-on-gcp",children:[]},{value:"Launcher On Azure",id:"launcher-on-azure",children:[]}]}],u={toc:s};function l(e){var n=e.components,c=Object(i.a)(e,["components"]);return Object(a.b)("wrapper",Object(t.a)({},u,c,{components:n,mdxType:"MDXLayout"}),Object(a.b)("div",{className:"admonition admonition-warning alert alert--danger"},Object(a.b)("div",{parentName:"div",className:"admonition-heading"},Object(a.b)("h5",{parentName:"div"},Object(a.b)("span",{parentName:"h5",className:"admonition-icon"},Object(a.b)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},Object(a.b)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"warning")),Object(a.b)("div",{parentName:"div",className:"admonition-content"},Object(a.b)("p",{parentName:"div"},"Please note that this design doc is working-in-progress and need more works to complete. "))),Object(a.b)("h2",{id:"introduction"},"Introduction"),Object(a.b)("p",null,"Submarine is built and run in Cloud Native, taking advantage of the cloud computing model."),Object(a.b)("p",null,"To give full play to the advantages of cloud computing.\nThese applications are characterized by rapid and frequent build, release, and deployment.\nCombined with the features of cloud computing, they are decoupled from the underlying hardware and operating system,\nand can easily meet the requirements of scalability, availability, and portability. And provide better economy."),Object(a.b)("p",null,"In the enterprise data center, submarine can support k8s/yarn/docker three resource scheduling systems;\nin the public cloud environment, submarine can support these cloud services in GCE/AWS/Azure;"),Object(a.b)("h2",{id:"requirement"},"Requirement"),Object(a.b)("h3",{id:"cloud-native-service"},"Cloud-Native Service"),Object(a.b)("p",null,"The submarine server is a long-running services in the daemon mode.\nThe submarine server is mainly used by algorithm engineers to provide online front-end functions such as algorithm development,\nalgorithm debugging, data processing, and workflow scheduling.\nAnd submarine server also mainly used for back-end functions such as scheduling and execution of jobs, tracking of job status, and so on."),Object(a.b)("p",null,"Through the ability of rolling upgrades, we can better provide system stability.\nFor example, we can upgrade or restart the workbench server without affecting the normal operation of submitted jobs."),Object(a.b)("p",null,"You can also make full use of system resources.\nFor example, when the number of current developers or job tasks increases,\nThe number of submarine server instances can be adjusted dynamically."),Object(a.b)("p",null,"In addition, submarine will provide each user with a completely independent workspace container.\nThis workspace container has already deployed the development tools and library files commonly used by algorithm engineers including their operating environment.\nAlgorithm engineers can work in our prepared workspaces without any extra work."),Object(a.b)("p",null,"Each user's workspace can also be run through a cloud service."),Object(a.b)("h3",{id:"service-discovery"},"Service discovery"),Object(a.b)("p",null,"With the cluster function of submarine, each service only needs to run in the container,\nand it will automatically register the service in the submarine cluster center.\nSubmarine cluster management will automatically maintain the relationship between service and service, service and user."),Object(a.b)("h2",{id:"design"},"Design"),Object(a.b)("p",null,Object(a.b)("img",{alt:"cloud-service",src:r(251).default})),Object(a.b)("h3",{id:"launcher"},"Launcher"),Object(a.b)("p",null,"The submarine launcher module defines the complete interface.\nBy using this interface, you can run the submarine server, and workspace in k8s / yarn / docker / AWS / GCE / Azure."),Object(a.b)("h3",{id:"launcher-on-docker"},"Launcher On Docker"),Object(a.b)("p",null,"In order to allow some small and medium-sized users without k8s/yarn to use submarine,\nwe support running the submarine system in docker mode."),Object(a.b)("p",null,"Users only need to provide several servers with docker runtime environment.\nThe submarine system can automatically cluster these servers into clusters, manage all the hardware resources of the cluster,\nand run the service or workspace container in this cluster through scheduling algorithms."),Object(a.b)("h3",{id:"launcher-on-kubernetes"},"Launcher On Kubernetes"),Object(a.b)("p",null,"submarine operator"),Object(a.b)("h3",{id:"launcher-on-yarn"},"Launcher On Yarn"),Object(a.b)("p",null,"[TODO]"),Object(a.b)("h3",{id:"launcher-on-aws"},"Launcher On AWS"),Object(a.b)("p",null,"[TODO]"),Object(a.b)("h3",{id:"launcher-on-gcp"},"Launcher On GCP"),Object(a.b)("p",null,"[TODO]"),Object(a.b)("h3",{id:"launcher-on-azure"},"Launcher On Azure"),Object(a.b)("p",null,"[TODO]"))}l.isMDXComponent=!0},209:function(e,n,r){"use strict";r.d(n,"a",(function(){return d})),r.d(n,"b",(function(){return h}));var t=r(0),i=r.n(t);function a(e,n,r){return n in e?Object.defineProperty(e,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[n]=r,e}function c(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),r.push.apply(r,t)}return r}function o(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?c(Object(r),!0).forEach((function(n){a(e,n,r[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):c(Object(r)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))}))}return e}function s(e,n){if(null==e)return{};var r,t,i=function(e,n){if(null==e)return{};var r,t,i={},a=Object.keys(e);for(t=0;t<a.length;t++)r=a[t],n.indexOf(r)>=0||(i[r]=e[r]);return i}(e,n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(t=0;t<a.length;t++)r=a[t],n.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var u=i.a.createContext({}),l=function(e){var n=i.a.useContext(u),r=n;return e&&(r="function"==typeof e?e(n):o(o({},n),e)),r},d=function(e){var n=l(e.components);return i.a.createElement(u.Provider,{value:n},e.children)},b={inlineCode:"code",wrapper:function(e){var n=e.children;return i.a.createElement(i.a.Fragment,{},n)}},p=i.a.forwardRef((function(e,n){var r=e.components,t=e.mdxType,a=e.originalType,c=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),d=l(r),p=t,h=d["".concat(c,".").concat(p)]||d[p]||b[p]||a;return r?i.a.createElement(h,o(o({ref:n},u),{},{components:r})):i.a.createElement(h,o({ref:n},u))}));function h(e,n){var r=arguments,t=n&&n.mdxType;if("string"==typeof e||t){var a=r.length,c=new Array(a);c[0]=p;var o={};for(var s in n)hasOwnProperty.call(n,s)&&(o[s]=n[s]);o.originalType=e,o.mdxType="string"==typeof e?e:t,c[1]=o;for(var u=2;u<a;u++)c[u]=r[u];return i.a.createElement.apply(null,c)}return i.a.createElement.apply(null,r)}p.displayName="MDXCreateElement"},251:function(e,n,r){"use strict";r.r(n),n.default=r.p+"assets/images/multi-dc-cloud-420a103fad1e4af8a56287f083760d92.png"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[120],{187:function(e,n,r){"use strict";r.r(n),r.d(n,"frontMatter",(function(){return c})),r.d(n,"metadata",(function(){return o})),r.d(n,"toc",(function(){return s})),r.d(n,"default",(function(){return l}));var t=r(3),i=r(7),a=(r(0),r(194)),c={title:"Submarine Launcher"},o={unversionedId:"designDocs/wip-designs/submarine-launcher",id:"version-0.6.0/designDocs/wip-designs/submarine-launcher",isDocsHomePage:!1,title:"Submarine Launcher",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/designDocs/wip-designs/submarine-launcher.md",slug:"/designDocs/wip-designs/submarine-launcher",permalink:"/docs/designDocs/wip-designs/submarine-launcher",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/designDocs/wip-designs/submarine-launcher.md",version:"0.6.0",sidebar:"docs",previous:{title:"Generic Expeiment Spec",permalink:"/docs/designDocs/submarine-server/experimentSpec"},next:{title:"Cluster Server Design - High-Availability",permalink:"/docs/designDocs/wip-designs/submarine-clusterServer"}},s=[{value:"Introduction",id:"introduction",children:[]},{value:"Requirement",id:"requirement",children:[{value:"Cloud-Native Service",id:"cloud-native-service",children:[]},{value:"Service discovery",id:"service-discovery",children:[]}]},{value:"Design",id:"design",children:[{value:"Launcher",id:"launcher",children:[]},{value:"Launcher On Docker",id:"launcher-on-docker",children:[]},{value:"Launcher On Kubernetes",id:"launcher-on-kubernetes",children:[]},{value:"Launcher On Yarn",id:"launcher-on-yarn",children:[]},{value:"Launcher On AWS",id:"launcher-on-aws",children:[]},{value:"Launcher On GCP",id:"launcher-on-gcp",children:[]},{value:"Launcher On Azure",id:"launcher-on-azure",children:[]}]}],u={toc:s};function l(e){var n=e.components,c=Object(i.a)(e,["components"]);return Object(a.b)("wrapper",Object(t.a)({},u,c,{components:n,mdxType:"MDXLayout"}),Object(a.b)("div",{className:"admonition admonition-warning alert alert--danger"},Object(a.b)("div",{parentName:"div",className:"admonition-heading"},Object(a.b)("h5",{parentName:"div"},Object(a.b)("span",{parentName:"h5",className:"admonition-icon"},Object(a.b)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},Object(a.b)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"warning")),Object(a.b)("div",{parentName:"div",className:"admonition-content"},Object(a.b)("p",{parentName:"div"},"Please note that this design doc is working-in-progress and need more works to complete. "))),Object(a.b)("h2",{id:"introduction"},"Introduction"),Object(a.b)("p",null,"Submarine is built and run in Cloud Native, taking advantage of the cloud computing model."),Object(a.b)("p",null,"To give full play to the advantages of cloud computing.\nThese applications are characterized by rapid and frequent build, release, and deployment.\nCombined with the features of cloud computing, they are decoupled from the underlying hardware and operating system,\nand can easily meet the requirements of scalability, availability, and portability. And provide better economy."),Object(a.b)("p",null,"In the enterprise data center, submarine can support k8s/yarn/docker three resource scheduling systems;\nin the public cloud environment, submarine can support these cloud services in GCE/AWS/Azure;"),Object(a.b)("h2",{id:"requirement"},"Requirement"),Object(a.b)("h3",{id:"cloud-native-service"},"Cloud-Native Service"),Object(a.b)("p",null,"The submarine server is a long-running services in the daemon mode.\nThe submarine server is mainly used by algorithm engineers to provide online front-end functions such as algorithm development,\nalgorithm debugging, data processing, and workflow scheduling.\nAnd submarine server also mainly used for back-end functions such as scheduling and execution of jobs, tracking of job status, and so on."),Object(a.b)("p",null,"Through the ability of rolling upgrades, we can better provide system stability.\nFor example, we can upgrade or restart the workbench server without affecting the normal operation of submitted jobs."),Object(a.b)("p",null,"You can also make full use of system resources.\nFor example, when the number of current developers or job tasks increases,\nThe number of submarine server instances can be adjusted dynamically."),Object(a.b)("p",null,"In addition, submarine will provide each user with a completely independent workspace container.\nThis workspace container has already deployed the development tools and library files commonly used by algorithm engineers including their operating environment.\nAlgorithm engineers can work in our prepared workspaces without any extra work."),Object(a.b)("p",null,"Each user's workspace can also be run through a cloud service."),Object(a.b)("h3",{id:"service-discovery"},"Service discovery"),Object(a.b)("p",null,"With the cluster function of submarine, each service only needs to run in the container,\nand it will automatically register the service in the submarine cluster center.\nSubmarine cluster management will automatically maintain the relationship between service and service, service and user."),Object(a.b)("h2",{id:"design"},"Design"),Object(a.b)("p",null,Object(a.b)("img",{alt:"cloud-service",src:r(234).default})),Object(a.b)("h3",{id:"launcher"},"Launcher"),Object(a.b)("p",null,"The submarine launcher module defines the complete interface.\nBy using this interface, you can run the submarine server, and workspace in k8s / yarn / docker / AWS / GCE / Azure."),Object(a.b)("h3",{id:"launcher-on-docker"},"Launcher On Docker"),Object(a.b)("p",null,"In order to allow some small and medium-sized users without k8s/yarn to use submarine,\nwe support running the submarine system in docker mode."),Object(a.b)("p",null,"Users only need to provide several servers with docker runtime environment.\nThe submarine system can automatically cluster these servers into clusters, manage all the hardware resources of the cluster,\nand run the service or workspace container in this cluster through scheduling algorithms."),Object(a.b)("h3",{id:"launcher-on-kubernetes"},"Launcher On Kubernetes"),Object(a.b)("p",null,"submarine operator"),Object(a.b)("h3",{id:"launcher-on-yarn"},"Launcher On Yarn"),Object(a.b)("p",null,"[TODO]"),Object(a.b)("h3",{id:"launcher-on-aws"},"Launcher On AWS"),Object(a.b)("p",null,"[TODO]"),Object(a.b)("h3",{id:"launcher-on-gcp"},"Launcher On GCP"),Object(a.b)("p",null,"[TODO]"),Object(a.b)("h3",{id:"launcher-on-azure"},"Launcher On Azure"),Object(a.b)("p",null,"[TODO]"))}l.isMDXComponent=!0},194:function(e,n,r){"use strict";r.d(n,"a",(function(){return d})),r.d(n,"b",(function(){return h}));var t=r(0),i=r.n(t);function a(e,n,r){return n in e?Object.defineProperty(e,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[n]=r,e}function c(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),r.push.apply(r,t)}return r}function o(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?c(Object(r),!0).forEach((function(n){a(e,n,r[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):c(Object(r)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))}))}return e}function s(e,n){if(null==e)return{};var r,t,i=function(e,n){if(null==e)return{};var r,t,i={},a=Object.keys(e);for(t=0;t<a.length;t++)r=a[t],n.indexOf(r)>=0||(i[r]=e[r]);return i}(e,n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(t=0;t<a.length;t++)r=a[t],n.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var u=i.a.createContext({}),l=function(e){var n=i.a.useContext(u),r=n;return e&&(r="function"==typeof e?e(n):o(o({},n),e)),r},d=function(e){var n=l(e.components);return i.a.createElement(u.Provider,{value:n},e.children)},b={inlineCode:"code",wrapper:function(e){var n=e.children;return i.a.createElement(i.a.Fragment,{},n)}},p=i.a.forwardRef((function(e,n){var r=e.components,t=e.mdxType,a=e.originalType,c=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),d=l(r),p=t,h=d["".concat(c,".").concat(p)]||d[p]||b[p]||a;return r?i.a.createElement(h,o(o({ref:n},u),{},{components:r})):i.a.createElement(h,o({ref:n},u))}));function h(e,n){var r=arguments,t=n&&n.mdxType;if("string"==typeof e||t){var a=r.length,c=new Array(a);c[0]=p;var o={};for(var s in n)hasOwnProperty.call(n,s)&&(o[s]=n[s]);o.originalType=e,o.mdxType="string"==typeof e?e:t,c[1]=o;for(var u=2;u<a;u++)c[u]=r[u];return i.a.createElement.apply(null,c)}return i.a.createElement.apply(null,r)}p.displayName="MDXCreateElement"},234:function(e,n,r){"use strict";r.r(n),n.default=r.p+"assets/images/multi-dc-cloud-420a103fad1e4af8a56287f083760d92.png"}}]);
\ No newline at end of file
diff --git a/f9e23376.b31b1214.js b/f9e23376.cac9ed61.js
similarity index 98%
rename from f9e23376.b31b1214.js
rename to f9e23376.cac9ed61.js
index 697b503..6235861 100644
--- a/f9e23376.b31b1214.js
+++ b/f9e23376.cac9ed61.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[135],{202:function(e,a,r){"use strict";r.r(a),r.d(a,"frontMatter",(function(){return i})),r.d(a,"metadata",(function(){return s})),r.d(a,"toc",(function(){return c})),r.d(a,"default",(function(){return m}));var t=r(3),n=r(7),b=(r(0),r(209)),i={title:"Download Apache Submarine"},s={unversionedId:"download",id:"download",isDocsHomePage:!1,title:"Download Apache Submarine",description:"\x3c!--",source:"@site/docs/download.md",slug:"/download",permalink:"/docs/next/download",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/download.md",version:"current"},c=[{value:"Verify the integrity of the files",id:"verify-the-integrity-of-the-files",children:[]},{value:"Old releases",id:"old-releases",children:[]}],p={toc:c};function m(e){var a=e.components,r=Object(n.a)(e,["components"]);return Object(b.b)("wrapper",Object(t.a)({},p,r,{components:a,mdxType:"MDXLayout"}),Object(b.b)("p",null,"The latest release of Apache Submarine is ",Object(b.b)("inlineCode",{parentName:"p"},"0.6.0"),"."),Object(b.b)("ul",null,Object(b.b)("li",{parentName:"ul"},Object(b.b)("p",{parentName:"li"},"Apache Submarine ",Object(b.b)("inlineCode",{parentName:"p"},"0.6.0")," released on Oct 21, 2021 (",Object(b.b)("a",{parentName:"p",href:"https://submarine.apache.org/releases/submarine-release-0.6.0"},"release notes"),") (",Object(b.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/tree/rel/release-0.6.0"},"git tag"),")"),Object(b.b)("ul",{parentName:"li"},Object(b.b)("li",{parentName:"ul"},Object(b.b)("p",{parentName:"li"},"Binary package:\n",Object(b.b)("a",{parentName:"p",href:"https://www.apache.org/dyn/closer.cgi/submarine/submarine-0.6.0/submarine-dist-0.6.0-hadoop-2.9.tar.gz"},"submarine-dist-0.6.0-hadoop-2.9.tar.gz")," (518 MB, ",Object(b.b)("a",{parentName:"p",href:"https://www.apache.org/dist/submarine/submarine-0.6.0/submarine-dist-0.6.0-hadoop-2.9.tar.gz.sha512"},"checksum"),", ",Object(b.b)("a",{parentName:"p",href:"https://www.apache.org/dist/submarine/submarine-0.6.0/submarine-dist-0.6.0-hadoop-2.9.tar.gz.asc"},"signature"),")")),Object(b.b)("li",{parentName:"ul"},Object(b.b)("p",{parentName:"li"},"Source:\n",Object(b.b)("a",{parentName:"p",href:"https://www.apache.org/dyn/closer.cgi/submarine/submarine-0.6.0/submarine-dist-0.6.0-src.tar.gz"},"submarine-dist-0.6.0-src.tar.gz")," (8.3 MB, ",Object(b.b)("a",{parentName:"p",href:"https://www.apache.org/dist/submarine/submarine-0.6.0/submarine-dist-0.6.0-src.tar.gz.sha512"},"checksum"),", ",Object(b.b)("a",{parentName:"p",href:"https://www.apache.org/dist/submarine/submarine-0.6.0/submarine-dist-0.6.0-src.tar.gz.asc"},"signature"),"))")),Object(b.b)("li",{parentName:"ul"},Object(b.b)("p",{parentName:"li"},"Docker images:"),Object(b.b)("ul",{parentName:"li"},Object(b.b)("li",{parentName:"ul"},Object(b.b)("a",{parentName:"li",href:"https://hub.docker.com/layers/apache/submarine/mini-0.6.0/images/sha256-a068563409735c4e5c64d529936de614919b7fb9f11cc55c0302a19fe20bf37d?context=explore"},"mini-submarine")," ",Object(b.b)("inlineCode",{parentName:"li"},"docker pull apache/submarine:mini-0.6.0")),Object(b.b)("li",{parentName:"ul"},Object(b.b)("a",{parentName:"li",href:"https://hub.docker.com/layers/apache/submarine/server-0.6.0/images/sha256-e224668d76b7c758f67fdbfb1d478e26dfc49837eb49592da16041fe1ee1df2a?context=explore"},"submarine server")," ",Object(b.b)("inlineCode",{parentName:"li"},"docker pull apache/submarine:server-0.6.0")),Object(b.b)("li",{parentName:"ul"},Object(b.b)("a",{parentName:"li",href:"https://hub.docker.com/layers/apache/submarine/database-0.6.0/images/sha256-543bb90bc1c1dc6282934dbbaaae145f38fc494e134c916a17c49b69f171c911?context=explore"},"submarine database")," ",Object(b.b)("inlineCode",{parentName:"li"},"docker pull apache/submarine:database-0.6.0")),Object(b.b)("li",{parentName:"ul"},Object(b.b)("a",{parentName:"li",href:"https://hub.docker.com/layers/apache/submarine/jupyter-notebook-0.6.0/images/sha256-c3464987598c2aee312f2e538b250dc2ec9d4b0ea15b760c67c52a7489e36130?context=explore"},"submarine jupyter-notebook")," ",Object(b.b)("inlineCode",{parentName:"li"},"docker pull apache/submarine:jupyter-notebook-0.6.0")),Object(b.b)("li",{parentName:"ul"},Object(b.b)("a",{parentName:"li",href:"https://hub.docker.com/layers/apache/submarine/quickstart-0.6.0/images/sha256-7f019c7fe71bbd34b5abced68736758908cc6f32696cf2c2a5f7b0d7200fde29?context=explore"},"submarine quickstart")," ",Object(b.b)("inlineCode",{parentName:"li"},"docker pull apache/submarine:quickstart-0.6.0")),Object(b.b)("li",{parentName:"ul"},Object(b.b)("a",{parentName:"li",href:"https://hub.docker.com/layers/apache/submarine/serve-0.6.0/images/sha256-d510a8e294a26b0c2f3043531dfd92b698adec1993f47171630ccc5612fe9930?context=explore"},"submarine serve")," ",Object(b.b)("inlineCode",{parentName:"li"},"docker pull apache/submarine:serve-0.6.0")),Object(b.b)("li",{parentName:"ul"},Object(b.b)("a",{parentName:"li",href:"https://hub.docker.com/layers/apache/submarine/mlflow-0.6.0/images/sha256-b395838b6c30e21c48c3304f20315788e2416bb4cf410779ad2d1530688e7fa9?context=explore"},"submarine mlflow")," ",Object(b.b)("inlineCode",{parentName:"li"},"docker pull apache/submarine:mlflow-0.6.0")),Object(b.b)("li",{parentName:"ul"},Object(b.b)("a",{parentName:"li",href:"https://hub.docker.com/layers/apache/submarine/operator-0.6.0/images/sha256-c7e7a0c47a9ddf693bbe01b28c707ac1f05a710a4b86e8baaf59395da13a9a42?context=explore"},"submarine operator")," ",Object(b.b)("inlineCode",{parentName:"li"},"docker pull apache/submarine:operator-0.6.0")))),Object(b.b)("li",{parentName:"ul"},Object(b.b)("p",{parentName:"li"},"SDK:"),Object(b.b)("ul",{parentName:"li"},Object(b.b)("li",{parentName:"ul"},Object(b.b)("a",{parentName:"li",href:"https://pypi.org/project/apache-submarine/0.6.0/"},"PySubmarine")," ",Object(b.b)("inlineCode",{parentName:"li"},"pip install apache-submarine==0.6.0"))))))),Object(b.b)("h2",{id:"verify-the-integrity-of-the-files"},"Verify the integrity of the files"),Object(b.b)("p",null,"It is essential that you ",Object(b.b)("a",{parentName:"p",href:"https://www.apache.org/info/verification.html"},"verify")," the integrity of the downloaded files using the PGP or MD5 signatures. This signature should be matched against the ",Object(b.b)("a",{parentName:"p",href:"https://www.apache.org/dist/submarine/KEYS"},"KEYS")," file."),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre"},"gpg --import KEYS\ngpg --verify submarine-dist-X.Y.Z-src.tar.gz.asc\n")),Object(b.b)("h2",{id:"old-releases"},"Old releases"),Object(b.b)("ul",null,Object(b.b)("li",{parentName:"ul"},Object(b.b)("p",{parentName:"li"},"Apache Submarine ",Object(b.b)("inlineCode",{parentName:"p"},"0.5.0")," released on Dec 17, 2020 (",Object(b.b)("a",{parentName:"p",href:"https://submarine.apache.org/releases/submarine-release-0.5.0"},"release notes"),") (",Object(b.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/tree/rel/release-0.5.0"},"git tag"),")"),Object(b.b)("ul",{parentName:"li"},Object(b.b)("li",{parentName:"ul"},"Binary package:\n",Object(b.b)("a",{parentName:"li",href:"https://www.apache.org/dyn/closer.cgi/submarine/submarine-0.5.0/submarine-dist-0.5.0-hadoop-2.9.tar.gz"},"submarine-dist-0.5.0-hadoop-2.9.tar.gz")," (505 MB, ",Object(b.b)("a",{parentName:"li",href:"https://www.apache.org/dist/submarine/submarine-0.5.0/submarine-dist-0.5.0-hadoop-2.9.tar.gz.sha512"},"checksum"),", ",Object(b.b)("a",{parentName:"li",href:"https://www.apache.org/dist/submarine/submarine-0.5.0/submarine-dist-0.5.0-hadoop-2.9.tar.gz.asc"},"signature"),")"),Object(b.b)("li",{parentName:"ul"},"Source:\n",Object(b.b)("a",{parentName:"li",href:"https://www.apache.org/dyn/closer.cgi/submarine/submarine-0.5.0/submarine-dist-0.5.0-src.tar.gz"},"submarine-dist-0.5.0-src.tar.gz")," (5.0 MB, ",Object(b.b)("a",{parentName:"li",href:"https://www.apache.org/dist/submarine/submarine-0.5.0/submarine-dist-0.5.0-src.tar.gz.sha512"},"checksum"),", ",Object(b.b)("a",{parentName:"li",href:"https://www.apache.org/dist/submarine/submarine-0.5.0/submarine-dist-0.5.0-src.tar.gz.asc"},"signature"),"))"),Object(b.b)("li",{parentName:"ul"},"Docker images:",Object(b.b)("ul",{parentName:"li"},Object(b.b)("li",{parentName:"ul"},Object(b.b)("a",{parentName:"li",href:"https://hub.docker.com/layers/apache/submarine/mini-0.5.0/images/sha256-e3248c8c6336b245539028043783b91135eaffe9302dec05fe13571a0f2902a6"},"mini-submarine")," ",Object(b.b)("inlineCode",{parentName:"li"},"docker pull apache/submarine:mini-0.5.0")),Object(b.b)("li",{parentName:"ul"},Object(b.b)("a",{parentName:"li",href:"https://hub.docker.com/layers/apache/submarine/server-0.5.0/images/sha256-1805df8fd8e5274d16be8cdf39900d8576119c0caac7598db29990ebe138bf5c"},"submarine server")," ",Object(b.b)("inlineCode",{parentName:"li"},"docker pull apache/submarine:server-0.5.0")),Object(b.b)("li",{parentName:"ul"},Object(b.b)("a",{parentName:"li",href:"https://hub.docker.com/layers/apache/submarine/database-0.5.0/images/sha256-073889e773c1b44cef9f518dc2fc468ebc420200f6087e2a943438677dadc9e5"},"submarine database")," ",Object(b.b)("inlineCode",{parentName:"li"},"docker pull apache/submarine:database-0.5.0")),Object(b.b)("li",{parentName:"ul"},Object(b.b)("a",{parentName:"li",href:"https://hub.docker.com/layers/apache/submarine/jupyter-notebook-0.5.0/images/sha256-f3cc2510c208b752ef4be7b383ee8f2325e4fc538696078bdb604d62fa47e4be"},"submarine jupyter-notebook")," ",Object(b.b)("inlineCode",{parentName:"li"},"docker pull apache/submarine:jupyter-notebook-0.5.0")))),Object(b.b)("li",{parentName:"ul"},"SDK:",Object(b.b)("ul",{parentName:"li"},Object(b.b)("li",{parentName:"ul"},Object(b.b)("a",{parentName:"li",href:"https://pypi.org/project/apache-submarine/0.5.0/"},"PySubmarine")," ",Object(b.b)("inlineCode",{parentName:"li"},"pip install apache-submarine==0.5.0")))))),Object(b.b)("li",{parentName:"ul"},Object(b.b)("p",{parentName:"li"},"Apache Submarine 0.4.0 released on Jul 05, 2020 (",Object(b.b)("a",{parentName:"p",href:"https://submarine.apache.org/releases/submarine-release-0.4.0"},"release notes"),") (",Object(b.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/tree/rel/release-0.4.0"},"git tag"),")"),Object(b.b)("ul",{parentName:"li"},Object(b.b)("li",{parentName:"ul"},"Binary package with submarine:\n",Object(b.b)("a",{parentName:"li",href:"https://www.apache.org/dyn/closer.cgi/submarine/submarine-0.4.0/submarine-dist-0.4.0-hadoop-2.9.tar.gz"},"submarine-dist-0.4.0-hadoop-2.9.tar.gz")," (550 MB,\n",Object(b.b)("a",{parentName:"li",href:"https://www.apache.org/dist/submarine/submarine-0.4.0/submarine-dist-0.4.0-hadoop-2.9.tar.gz.sha512"},"checksum"),",\n",Object(b.b)("a",{parentName:"li",href:"https://www.apache.org/dist/submarine/submarine-0.4.0/submarine-dist-0.4.0-hadoop-2.9.tar.gz.asc"},"signature"),")"),Object(b.b)("li",{parentName:"ul"},"Source:\n",Object(b.b)("a",{parentName:"li",href:"https://www.apache.org/dyn/closer.cgi/submarine/submarine-0.4.0/submarine-dist-0.4.0-src.tar.gz"},"submarine-dist-0.4.0-src.tar.gz")," (6 MB,\n",Object(b.b)("a",{parentName:"li",href:"https://www.apache.org/dist/submarine/submarine-0.4.0/submarine-dist-0.4.0-src.tar.gz.sha512"},"checksum"),",\n",Object(b.b)("a",{parentName:"li",href:"https://www.apache.org/dist/submarine/submarine-0.4.0/submarine-dist-0.4.0-src.tar.gz.asc"},"signature"),")"),Object(b.b)("li",{parentName:"ul"},"Docker images:\n",Object(b.b)("em",{parentName:"li"},Object(b.b)("a",{parentName:"em",href:"https://hub.docker.com/layers/apache/submarine/mini-0.4.0/images/sha256-a8e7bd98f1f0325223d68e0ba64fd48bd56ee91736461d289945e70ad138e08f"},"mini-submarine"))," ",Object(b.b)("a",{parentName:"li",href:"https://github.com/apache/submarine/blob/rel/release-0.4.0/dev-support/mini-submarine/README.md#mini-submarine"},"(guide)")))),Object(b.b)("li",{parentName:"ul"},Object(b.b)("p",{parentName:"li"},"Apache Submarine 0.3.0 released on Feb 01, 2020 (",Object(b.b)("a",{parentName:"p",href:"https://submarine.apache.org/releases/submarine-release-0.3.0"},"release notes"),") (",Object(b.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/tree/rel/release-0.3.0"},"git tag"),")"),Object(b.b)("ul",{parentName:"li"},Object(b.b)("li",{parentName:"ul"},"Binary package with submarine:\n",Object(b.b)("a",{parentName:"li",href:"https://www.apache.org/dyn/closer.cgi/submarine/submarine-0.3.0/submarine-dist-0.3.0-hadoop-2.9.tar.gz"},"submarine-dist-0.3.0-hadoop-2.9.tar.gz")," (550 MB,\n",Object(b.b)("a",{parentName:"li",href:"https://www.apache.org/dist/submarine/submarine-0.3.0/submarine-dist-0.3.0-hadoop-2.9.tar.gz.sha512"},"checksum"),",\n",Object(b.b)("a",{parentName:"li",href:"https://www.apache.org/dist/submarine/submarine-0.3.0/submarine-dist-0.3.0-hadoop-2.9.tar.gz.asc"},"signature"),")"),Object(b.b)("li",{parentName:"ul"},"Source:\n",Object(b.b)("a",{parentName:"li",href:"https://www.apache.org/dyn/closer.cgi/submarine/submarine-0.3.0/submarine-dist-0.3.0-src.tar.gz"},"submarine-dist-0.3.0-src.tar.gz")," (6 MB,\n",Object(b.b)("a",{parentName:"li",href:"https://www.apache.org/dist/submarine/submarine-0.3.0/submarine-dist-0.3.0-src.tar.gz.sha512"},"checksum"),",\n",Object(b.b)("a",{parentName:"li",href:"https://www.apache.org/dist/submarine/submarine-0.3.0/submarine-dist-0.3.0-src.tar.gz.asc"},"signature"),")"),Object(b.b)("li",{parentName:"ul"},"Docker images:\n",Object(b.b)("em",{parentName:"li"},Object(b.b)("a",{parentName:"em",href:"https://hub.docker.com/layers/apache/submarine/mini-0.3.0/images/sha256-3dd49054bf8a91521f5743c675278d626a5fa568e91651c67867b8ba6ceba340"},"mini-submarine"))," ",Object(b.b)("a",{parentName:"li",href:"https://github.com/apache/submarine/blob/rel/release-0.3.0/dev-support/mini-submarine/README.md#mini-submarine"},"(guide)")))),Object(b.b)("li",{parentName:"ul"},Object(b.b)("p",{parentName:"li"},"Apache Submarine 0.2.0 released on Jul 2, 2019"),Object(b.b)("ul",{parentName:"li"},Object(b.b)("li",{parentName:"ul"},Object(b.b)("p",{parentName:"li"},"Binary package with submarine:\n",Object(b.b)("a",{parentName:"p",href:"https://www.apache.org/dyn/closer.cgi/hadoop/submarine/submarine-0.2.0/hadoop-submarine-0.2.0.tar.gz"},"hadoop-submarine-0.2.0.tar.gz")," (111 MB,\n",Object(b.b)("a",{parentName:"p",href:"https://dist.apache.org/repos/dist/release/hadoop/submarine/submarine-0.2.0/hadoop-submarine-0.2.0.tar.gz.mds"},"checksum"),",\n",Object(b.b)("a",{parentName:"p",href:"https://dist.apache.org/repos/dist/release/hadoop/submarine/submarine-0.2.0/hadoop-submarine-0.2.0.tar.gz.asc"},"signature"),",\n",Object(b.b)("a",{parentName:"p",href:"http://hadoop.apache.org/submarine/release/0.2.0/"},"Announcement"),")")),Object(b.b)("li",{parentName:"ul"},Object(b.b)("p",{parentName:"li"},"Source:\n",Object(b.b)("a",{parentName:"p",href:"https://www.apache.org/dyn/closer.cgi/hadoop/submarine/submarine-0.2.0/hadoop-submarine-0.2.0-src.tar.gz"},"hadoop-submarine-0.2.0-src.tar.gz")," (1.4 MB,\n",Object(b.b)("a",{parentName:"p",href:"https://dist.apache.org/repos/dist/release/hadoop/submarine/submarine-0.2.0/hadoop-submarine-0.2.0-src.tar.gz.mds"},"checksum"),",\n",Object(b.b)("a",{parentName:"p",href:"https://dist.apache.org/repos/dist/release/hadoop/submarine/submarine-0.2.0/hadoop-submarine-0.2.0-src.tar.gz.asc"},"signature"),")")))),Object(b.b)("li",{parentName:"ul"},Object(b.b)("p",{parentName:"li"},"Apache Submarine 0.1.0 released on Jan 16, 2019"),Object(b.b)("ul",{parentName:"li"},Object(b.b)("li",{parentName:"ul"},Object(b.b)("p",{parentName:"li"},"Binary package with submarine:\n",Object(b.b)("a",{parentName:"p",href:"https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-3.2.0/hadoop-3.2.0.tar.gz"},"submarine-0.2.0-bin-all.tgz")," (97 MB,\n",Object(b.b)("a",{parentName:"p",href:"https://www.apache.org/dist/hadoop/common/hadoop-3.2.0/hadoop-3.2.0.tar.gz.mds"},"checksum"),",\n",Object(b.b)("a",{parentName:"p",href:"https://www.apache.org/dist/hadoop/common/hadoop-3.2.0/hadoop-3.2.0.tar.gz.asc"},"signature"),",\n",Object(b.b)("a",{parentName:"p",href:"https://hadoop.apache.org/docs/r3.2.0/index.html"},"Announcement"),")")),Object(b.b)("li",{parentName:"ul"},Object(b.b)("p",{parentName:"li"},"Source:\n",Object(b.b)("a",{parentName:"p",href:"https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-3.2.0/hadoop-3.2.0-src.tar.gz"},"submarine-hadoop-3.2.0-src.tar.gz")," (1.1 MB,\n",Object(b.b)("a",{parentName:"p",href:"https://www.apache.org/dist/hadoop/common/hadoop-3.2.0/hadoop-3.2.0-src.tar.gz.mds"},"checksum"),",\n",Object(b.b)("a",{parentName:"p",href:"https://www.apache.org/dist/hadoop/common/hadoop-3.2.0/hadoop-3.2.0-src.tar.gz.asc"},"signature"),")"))))))}m.isMDXComponent=!0},209:function(e,a,r){"use strict";r.d(a,"a",(function(){return o})),r.d(a,"b",(function(){return h}));var t=r(0),n=r.n(t);function b(e,a,r){return a in e?Object.defineProperty(e,a,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[a]=r,e}function i(e,a){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);a&&(t=t.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),r.push.apply(r,t)}return r}function s(e){for(var a=1;a<arguments.length;a++){var r=null!=arguments[a]?arguments[a]:{};a%2?i(Object(r),!0).forEach((function(a){b(e,a,r[a])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(r,a))}))}return e}function c(e,a){if(null==e)return{};var r,t,n=function(e,a){if(null==e)return{};var r,t,n={},b=Object.keys(e);for(t=0;t<b.length;t++)r=b[t],a.indexOf(r)>=0||(n[r]=e[r]);return n}(e,a);if(Object.getOwnPropertySymbols){var b=Object.getOwnPropertySymbols(e);for(t=0;t<b.length;t++)r=b[t],a.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var p=n.a.createContext({}),m=function(e){var a=n.a.useContext(p),r=a;return e&&(r="function"==typeof e?e(a):s(s({},a),e)),r},o=function(e){var a=m(e.components);return n.a.createElement(p.Provider,{value:a},e.children)},u={inlineCode:"code",wrapper:function(e){var a=e.children;return n.a.createElement(n.a.Fragment,{},a)}},l=n.a.forwardRef((function(e,a){var r=e.components,t=e.mdxType,b=e.originalType,i=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),o=m(r),l=t,h=o["".concat(i,".").concat(l)]||o[l]||u[l]||b;return r?n.a.createElement(h,s(s({ref:a},p),{},{components:r})):n.a.createElement(h,s({ref:a},p))}));function h(e,a){var r=arguments,t=a&&a.mdxType;if("string"==typeof e||t){var b=r.length,i=new Array(b);i[0]=l;var s={};for(var c in a)hasOwnProperty.call(a,c)&&(s[c]=a[c]);s.originalType=e,s.mdxType="string"==typeof e?e:t,i[1]=s;for(var p=2;p<b;p++)i[p]=r[p];return n.a.createElement.apply(null,i)}return n.a.createElement.apply(null,r)}l.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[121],{188:function(e,a,r){"use strict";r.r(a),r.d(a,"frontMatter",(function(){return i})),r.d(a,"metadata",(function(){return s})),r.d(a,"toc",(function(){return c})),r.d(a,"default",(function(){return m}));var t=r(3),n=r(7),b=(r(0),r(194)),i={title:"Download Apache Submarine"},s={unversionedId:"download",id:"download",isDocsHomePage:!1,title:"Download Apache Submarine",description:"\x3c!--",source:"@site/docs/download.md",slug:"/download",permalink:"/docs/next/download",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/download.md",version:"current"},c=[{value:"Verify the integrity of the files",id:"verify-the-integrity-of-the-files",children:[]},{value:"Old releases",id:"old-releases",children:[]}],p={toc:c};function m(e){var a=e.components,r=Object(n.a)(e,["components"]);return Object(b.b)("wrapper",Object(t.a)({},p,r,{components:a,mdxType:"MDXLayout"}),Object(b.b)("p",null,"The latest release of Apache Submarine is ",Object(b.b)("inlineCode",{parentName:"p"},"0.6.0"),"."),Object(b.b)("ul",null,Object(b.b)("li",{parentName:"ul"},Object(b.b)("p",{parentName:"li"},"Apache Submarine ",Object(b.b)("inlineCode",{parentName:"p"},"0.6.0")," released on Oct 21, 2021 (",Object(b.b)("a",{parentName:"p",href:"https://submarine.apache.org/releases/submarine-release-0.6.0"},"release notes"),") (",Object(b.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/tree/rel/release-0.6.0"},"git tag"),")"),Object(b.b)("ul",{parentName:"li"},Object(b.b)("li",{parentName:"ul"},Object(b.b)("p",{parentName:"li"},"Binary package:\n",Object(b.b)("a",{parentName:"p",href:"https://www.apache.org/dyn/closer.cgi/submarine/submarine-0.6.0/submarine-dist-0.6.0-hadoop-2.9.tar.gz"},"submarine-dist-0.6.0-hadoop-2.9.tar.gz")," (518 MB, ",Object(b.b)("a",{parentName:"p",href:"https://www.apache.org/dist/submarine/submarine-0.6.0/submarine-dist-0.6.0-hadoop-2.9.tar.gz.sha512"},"checksum"),", ",Object(b.b)("a",{parentName:"p",href:"https://www.apache.org/dist/submarine/submarine-0.6.0/submarine-dist-0.6.0-hadoop-2.9.tar.gz.asc"},"signature"),")")),Object(b.b)("li",{parentName:"ul"},Object(b.b)("p",{parentName:"li"},"Source:\n",Object(b.b)("a",{parentName:"p",href:"https://www.apache.org/dyn/closer.cgi/submarine/submarine-0.6.0/submarine-dist-0.6.0-src.tar.gz"},"submarine-dist-0.6.0-src.tar.gz")," (8.3 MB, ",Object(b.b)("a",{parentName:"p",href:"https://www.apache.org/dist/submarine/submarine-0.6.0/submarine-dist-0.6.0-src.tar.gz.sha512"},"checksum"),", ",Object(b.b)("a",{parentName:"p",href:"https://www.apache.org/dist/submarine/submarine-0.6.0/submarine-dist-0.6.0-src.tar.gz.asc"},"signature"),"))")),Object(b.b)("li",{parentName:"ul"},Object(b.b)("p",{parentName:"li"},"Docker images:"),Object(b.b)("ul",{parentName:"li"},Object(b.b)("li",{parentName:"ul"},Object(b.b)("a",{parentName:"li",href:"https://hub.docker.com/layers/apache/submarine/mini-0.6.0/images/sha256-a068563409735c4e5c64d529936de614919b7fb9f11cc55c0302a19fe20bf37d?context=explore"},"mini-submarine")," ",Object(b.b)("inlineCode",{parentName:"li"},"docker pull apache/submarine:mini-0.6.0")),Object(b.b)("li",{parentName:"ul"},Object(b.b)("a",{parentName:"li",href:"https://hub.docker.com/layers/apache/submarine/server-0.6.0/images/sha256-e224668d76b7c758f67fdbfb1d478e26dfc49837eb49592da16041fe1ee1df2a?context=explore"},"submarine server")," ",Object(b.b)("inlineCode",{parentName:"li"},"docker pull apache/submarine:server-0.6.0")),Object(b.b)("li",{parentName:"ul"},Object(b.b)("a",{parentName:"li",href:"https://hub.docker.com/layers/apache/submarine/database-0.6.0/images/sha256-543bb90bc1c1dc6282934dbbaaae145f38fc494e134c916a17c49b69f171c911?context=explore"},"submarine database")," ",Object(b.b)("inlineCode",{parentName:"li"},"docker pull apache/submarine:database-0.6.0")),Object(b.b)("li",{parentName:"ul"},Object(b.b)("a",{parentName:"li",href:"https://hub.docker.com/layers/apache/submarine/jupyter-notebook-0.6.0/images/sha256-c3464987598c2aee312f2e538b250dc2ec9d4b0ea15b760c67c52a7489e36130?context=explore"},"submarine jupyter-notebook")," ",Object(b.b)("inlineCode",{parentName:"li"},"docker pull apache/submarine:jupyter-notebook-0.6.0")),Object(b.b)("li",{parentName:"ul"},Object(b.b)("a",{parentName:"li",href:"https://hub.docker.com/layers/apache/submarine/quickstart-0.6.0/images/sha256-7f019c7fe71bbd34b5abced68736758908cc6f32696cf2c2a5f7b0d7200fde29?context=explore"},"submarine quickstart")," ",Object(b.b)("inlineCode",{parentName:"li"},"docker pull apache/submarine:quickstart-0.6.0")),Object(b.b)("li",{parentName:"ul"},Object(b.b)("a",{parentName:"li",href:"https://hub.docker.com/layers/apache/submarine/serve-0.6.0/images/sha256-d510a8e294a26b0c2f3043531dfd92b698adec1993f47171630ccc5612fe9930?context=explore"},"submarine serve")," ",Object(b.b)("inlineCode",{parentName:"li"},"docker pull apache/submarine:serve-0.6.0")),Object(b.b)("li",{parentName:"ul"},Object(b.b)("a",{parentName:"li",href:"https://hub.docker.com/layers/apache/submarine/mlflow-0.6.0/images/sha256-b395838b6c30e21c48c3304f20315788e2416bb4cf410779ad2d1530688e7fa9?context=explore"},"submarine mlflow")," ",Object(b.b)("inlineCode",{parentName:"li"},"docker pull apache/submarine:mlflow-0.6.0")),Object(b.b)("li",{parentName:"ul"},Object(b.b)("a",{parentName:"li",href:"https://hub.docker.com/layers/apache/submarine/operator-0.6.0/images/sha256-c7e7a0c47a9ddf693bbe01b28c707ac1f05a710a4b86e8baaf59395da13a9a42?context=explore"},"submarine operator")," ",Object(b.b)("inlineCode",{parentName:"li"},"docker pull apache/submarine:operator-0.6.0")))),Object(b.b)("li",{parentName:"ul"},Object(b.b)("p",{parentName:"li"},"SDK:"),Object(b.b)("ul",{parentName:"li"},Object(b.b)("li",{parentName:"ul"},Object(b.b)("a",{parentName:"li",href:"https://pypi.org/project/apache-submarine/0.6.0/"},"PySubmarine")," ",Object(b.b)("inlineCode",{parentName:"li"},"pip install apache-submarine==0.6.0"))))))),Object(b.b)("h2",{id:"verify-the-integrity-of-the-files"},"Verify the integrity of the files"),Object(b.b)("p",null,"It is essential that you ",Object(b.b)("a",{parentName:"p",href:"https://www.apache.org/info/verification.html"},"verify")," the integrity of the downloaded files using the PGP or MD5 signatures. This signature should be matched against the ",Object(b.b)("a",{parentName:"p",href:"https://www.apache.org/dist/submarine/KEYS"},"KEYS")," file."),Object(b.b)("pre",null,Object(b.b)("code",{parentName:"pre"},"gpg --import KEYS\ngpg --verify submarine-dist-X.Y.Z-src.tar.gz.asc\n")),Object(b.b)("h2",{id:"old-releases"},"Old releases"),Object(b.b)("ul",null,Object(b.b)("li",{parentName:"ul"},Object(b.b)("p",{parentName:"li"},"Apache Submarine ",Object(b.b)("inlineCode",{parentName:"p"},"0.5.0")," released on Dec 17, 2020 (",Object(b.b)("a",{parentName:"p",href:"https://submarine.apache.org/releases/submarine-release-0.5.0"},"release notes"),") (",Object(b.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/tree/rel/release-0.5.0"},"git tag"),")"),Object(b.b)("ul",{parentName:"li"},Object(b.b)("li",{parentName:"ul"},"Binary package:\n",Object(b.b)("a",{parentName:"li",href:"https://www.apache.org/dyn/closer.cgi/submarine/submarine-0.5.0/submarine-dist-0.5.0-hadoop-2.9.tar.gz"},"submarine-dist-0.5.0-hadoop-2.9.tar.gz")," (505 MB, ",Object(b.b)("a",{parentName:"li",href:"https://www.apache.org/dist/submarine/submarine-0.5.0/submarine-dist-0.5.0-hadoop-2.9.tar.gz.sha512"},"checksum"),", ",Object(b.b)("a",{parentName:"li",href:"https://www.apache.org/dist/submarine/submarine-0.5.0/submarine-dist-0.5.0-hadoop-2.9.tar.gz.asc"},"signature"),")"),Object(b.b)("li",{parentName:"ul"},"Source:\n",Object(b.b)("a",{parentName:"li",href:"https://www.apache.org/dyn/closer.cgi/submarine/submarine-0.5.0/submarine-dist-0.5.0-src.tar.gz"},"submarine-dist-0.5.0-src.tar.gz")," (5.0 MB, ",Object(b.b)("a",{parentName:"li",href:"https://www.apache.org/dist/submarine/submarine-0.5.0/submarine-dist-0.5.0-src.tar.gz.sha512"},"checksum"),", ",Object(b.b)("a",{parentName:"li",href:"https://www.apache.org/dist/submarine/submarine-0.5.0/submarine-dist-0.5.0-src.tar.gz.asc"},"signature"),"))"),Object(b.b)("li",{parentName:"ul"},"Docker images:",Object(b.b)("ul",{parentName:"li"},Object(b.b)("li",{parentName:"ul"},Object(b.b)("a",{parentName:"li",href:"https://hub.docker.com/layers/apache/submarine/mini-0.5.0/images/sha256-e3248c8c6336b245539028043783b91135eaffe9302dec05fe13571a0f2902a6"},"mini-submarine")," ",Object(b.b)("inlineCode",{parentName:"li"},"docker pull apache/submarine:mini-0.5.0")),Object(b.b)("li",{parentName:"ul"},Object(b.b)("a",{parentName:"li",href:"https://hub.docker.com/layers/apache/submarine/server-0.5.0/images/sha256-1805df8fd8e5274d16be8cdf39900d8576119c0caac7598db29990ebe138bf5c"},"submarine server")," ",Object(b.b)("inlineCode",{parentName:"li"},"docker pull apache/submarine:server-0.5.0")),Object(b.b)("li",{parentName:"ul"},Object(b.b)("a",{parentName:"li",href:"https://hub.docker.com/layers/apache/submarine/database-0.5.0/images/sha256-073889e773c1b44cef9f518dc2fc468ebc420200f6087e2a943438677dadc9e5"},"submarine database")," ",Object(b.b)("inlineCode",{parentName:"li"},"docker pull apache/submarine:database-0.5.0")),Object(b.b)("li",{parentName:"ul"},Object(b.b)("a",{parentName:"li",href:"https://hub.docker.com/layers/apache/submarine/jupyter-notebook-0.5.0/images/sha256-f3cc2510c208b752ef4be7b383ee8f2325e4fc538696078bdb604d62fa47e4be"},"submarine jupyter-notebook")," ",Object(b.b)("inlineCode",{parentName:"li"},"docker pull apache/submarine:jupyter-notebook-0.5.0")))),Object(b.b)("li",{parentName:"ul"},"SDK:",Object(b.b)("ul",{parentName:"li"},Object(b.b)("li",{parentName:"ul"},Object(b.b)("a",{parentName:"li",href:"https://pypi.org/project/apache-submarine/0.5.0/"},"PySubmarine")," ",Object(b.b)("inlineCode",{parentName:"li"},"pip install apache-submarine==0.5.0")))))),Object(b.b)("li",{parentName:"ul"},Object(b.b)("p",{parentName:"li"},"Apache Submarine 0.4.0 released on Jul 05, 2020 (",Object(b.b)("a",{parentName:"p",href:"https://submarine.apache.org/releases/submarine-release-0.4.0"},"release notes"),") (",Object(b.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/tree/rel/release-0.4.0"},"git tag"),")"),Object(b.b)("ul",{parentName:"li"},Object(b.b)("li",{parentName:"ul"},"Binary package with submarine:\n",Object(b.b)("a",{parentName:"li",href:"https://www.apache.org/dyn/closer.cgi/submarine/submarine-0.4.0/submarine-dist-0.4.0-hadoop-2.9.tar.gz"},"submarine-dist-0.4.0-hadoop-2.9.tar.gz")," (550 MB,\n",Object(b.b)("a",{parentName:"li",href:"https://www.apache.org/dist/submarine/submarine-0.4.0/submarine-dist-0.4.0-hadoop-2.9.tar.gz.sha512"},"checksum"),",\n",Object(b.b)("a",{parentName:"li",href:"https://www.apache.org/dist/submarine/submarine-0.4.0/submarine-dist-0.4.0-hadoop-2.9.tar.gz.asc"},"signature"),")"),Object(b.b)("li",{parentName:"ul"},"Source:\n",Object(b.b)("a",{parentName:"li",href:"https://www.apache.org/dyn/closer.cgi/submarine/submarine-0.4.0/submarine-dist-0.4.0-src.tar.gz"},"submarine-dist-0.4.0-src.tar.gz")," (6 MB,\n",Object(b.b)("a",{parentName:"li",href:"https://www.apache.org/dist/submarine/submarine-0.4.0/submarine-dist-0.4.0-src.tar.gz.sha512"},"checksum"),",\n",Object(b.b)("a",{parentName:"li",href:"https://www.apache.org/dist/submarine/submarine-0.4.0/submarine-dist-0.4.0-src.tar.gz.asc"},"signature"),")"),Object(b.b)("li",{parentName:"ul"},"Docker images:\n",Object(b.b)("em",{parentName:"li"},Object(b.b)("a",{parentName:"em",href:"https://hub.docker.com/layers/apache/submarine/mini-0.4.0/images/sha256-a8e7bd98f1f0325223d68e0ba64fd48bd56ee91736461d289945e70ad138e08f"},"mini-submarine"))," ",Object(b.b)("a",{parentName:"li",href:"https://github.com/apache/submarine/blob/rel/release-0.4.0/dev-support/mini-submarine/README.md#mini-submarine"},"(guide)")))),Object(b.b)("li",{parentName:"ul"},Object(b.b)("p",{parentName:"li"},"Apache Submarine 0.3.0 released on Feb 01, 2020 (",Object(b.b)("a",{parentName:"p",href:"https://submarine.apache.org/releases/submarine-release-0.3.0"},"release notes"),") (",Object(b.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/tree/rel/release-0.3.0"},"git tag"),")"),Object(b.b)("ul",{parentName:"li"},Object(b.b)("li",{parentName:"ul"},"Binary package with submarine:\n",Object(b.b)("a",{parentName:"li",href:"https://www.apache.org/dyn/closer.cgi/submarine/submarine-0.3.0/submarine-dist-0.3.0-hadoop-2.9.tar.gz"},"submarine-dist-0.3.0-hadoop-2.9.tar.gz")," (550 MB,\n",Object(b.b)("a",{parentName:"li",href:"https://www.apache.org/dist/submarine/submarine-0.3.0/submarine-dist-0.3.0-hadoop-2.9.tar.gz.sha512"},"checksum"),",\n",Object(b.b)("a",{parentName:"li",href:"https://www.apache.org/dist/submarine/submarine-0.3.0/submarine-dist-0.3.0-hadoop-2.9.tar.gz.asc"},"signature"),")"),Object(b.b)("li",{parentName:"ul"},"Source:\n",Object(b.b)("a",{parentName:"li",href:"https://www.apache.org/dyn/closer.cgi/submarine/submarine-0.3.0/submarine-dist-0.3.0-src.tar.gz"},"submarine-dist-0.3.0-src.tar.gz")," (6 MB,\n",Object(b.b)("a",{parentName:"li",href:"https://www.apache.org/dist/submarine/submarine-0.3.0/submarine-dist-0.3.0-src.tar.gz.sha512"},"checksum"),",\n",Object(b.b)("a",{parentName:"li",href:"https://www.apache.org/dist/submarine/submarine-0.3.0/submarine-dist-0.3.0-src.tar.gz.asc"},"signature"),")"),Object(b.b)("li",{parentName:"ul"},"Docker images:\n",Object(b.b)("em",{parentName:"li"},Object(b.b)("a",{parentName:"em",href:"https://hub.docker.com/layers/apache/submarine/mini-0.3.0/images/sha256-3dd49054bf8a91521f5743c675278d626a5fa568e91651c67867b8ba6ceba340"},"mini-submarine"))," ",Object(b.b)("a",{parentName:"li",href:"https://github.com/apache/submarine/blob/rel/release-0.3.0/dev-support/mini-submarine/README.md#mini-submarine"},"(guide)")))),Object(b.b)("li",{parentName:"ul"},Object(b.b)("p",{parentName:"li"},"Apache Submarine 0.2.0 released on Jul 2, 2019"),Object(b.b)("ul",{parentName:"li"},Object(b.b)("li",{parentName:"ul"},Object(b.b)("p",{parentName:"li"},"Binary package with submarine:\n",Object(b.b)("a",{parentName:"p",href:"https://www.apache.org/dyn/closer.cgi/hadoop/submarine/submarine-0.2.0/hadoop-submarine-0.2.0.tar.gz"},"hadoop-submarine-0.2.0.tar.gz")," (111 MB,\n",Object(b.b)("a",{parentName:"p",href:"https://dist.apache.org/repos/dist/release/hadoop/submarine/submarine-0.2.0/hadoop-submarine-0.2.0.tar.gz.mds"},"checksum"),",\n",Object(b.b)("a",{parentName:"p",href:"https://dist.apache.org/repos/dist/release/hadoop/submarine/submarine-0.2.0/hadoop-submarine-0.2.0.tar.gz.asc"},"signature"),",\n",Object(b.b)("a",{parentName:"p",href:"http://hadoop.apache.org/submarine/release/0.2.0/"},"Announcement"),")")),Object(b.b)("li",{parentName:"ul"},Object(b.b)("p",{parentName:"li"},"Source:\n",Object(b.b)("a",{parentName:"p",href:"https://www.apache.org/dyn/closer.cgi/hadoop/submarine/submarine-0.2.0/hadoop-submarine-0.2.0-src.tar.gz"},"hadoop-submarine-0.2.0-src.tar.gz")," (1.4 MB,\n",Object(b.b)("a",{parentName:"p",href:"https://dist.apache.org/repos/dist/release/hadoop/submarine/submarine-0.2.0/hadoop-submarine-0.2.0-src.tar.gz.mds"},"checksum"),",\n",Object(b.b)("a",{parentName:"p",href:"https://dist.apache.org/repos/dist/release/hadoop/submarine/submarine-0.2.0/hadoop-submarine-0.2.0-src.tar.gz.asc"},"signature"),")")))),Object(b.b)("li",{parentName:"ul"},Object(b.b)("p",{parentName:"li"},"Apache Submarine 0.1.0 released on Jan 16, 2019"),Object(b.b)("ul",{parentName:"li"},Object(b.b)("li",{parentName:"ul"},Object(b.b)("p",{parentName:"li"},"Binary package with submarine:\n",Object(b.b)("a",{parentName:"p",href:"https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-3.2.0/hadoop-3.2.0.tar.gz"},"submarine-0.2.0-bin-all.tgz")," (97 MB,\n",Object(b.b)("a",{parentName:"p",href:"https://www.apache.org/dist/hadoop/common/hadoop-3.2.0/hadoop-3.2.0.tar.gz.mds"},"checksum"),",\n",Object(b.b)("a",{parentName:"p",href:"https://www.apache.org/dist/hadoop/common/hadoop-3.2.0/hadoop-3.2.0.tar.gz.asc"},"signature"),",\n",Object(b.b)("a",{parentName:"p",href:"https://hadoop.apache.org/docs/r3.2.0/index.html"},"Announcement"),")")),Object(b.b)("li",{parentName:"ul"},Object(b.b)("p",{parentName:"li"},"Source:\n",Object(b.b)("a",{parentName:"p",href:"https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-3.2.0/hadoop-3.2.0-src.tar.gz"},"submarine-hadoop-3.2.0-src.tar.gz")," (1.1 MB,\n",Object(b.b)("a",{parentName:"p",href:"https://www.apache.org/dist/hadoop/common/hadoop-3.2.0/hadoop-3.2.0-src.tar.gz.mds"},"checksum"),",\n",Object(b.b)("a",{parentName:"p",href:"https://www.apache.org/dist/hadoop/common/hadoop-3.2.0/hadoop-3.2.0-src.tar.gz.asc"},"signature"),")"))))))}m.isMDXComponent=!0},194:function(e,a,r){"use strict";r.d(a,"a",(function(){return o})),r.d(a,"b",(function(){return h}));var t=r(0),n=r.n(t);function b(e,a,r){return a in e?Object.defineProperty(e,a,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[a]=r,e}function i(e,a){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);a&&(t=t.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),r.push.apply(r,t)}return r}function s(e){for(var a=1;a<arguments.length;a++){var r=null!=arguments[a]?arguments[a]:{};a%2?i(Object(r),!0).forEach((function(a){b(e,a,r[a])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(r,a))}))}return e}function c(e,a){if(null==e)return{};var r,t,n=function(e,a){if(null==e)return{};var r,t,n={},b=Object.keys(e);for(t=0;t<b.length;t++)r=b[t],a.indexOf(r)>=0||(n[r]=e[r]);return n}(e,a);if(Object.getOwnPropertySymbols){var b=Object.getOwnPropertySymbols(e);for(t=0;t<b.length;t++)r=b[t],a.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var p=n.a.createContext({}),m=function(e){var a=n.a.useContext(p),r=a;return e&&(r="function"==typeof e?e(a):s(s({},a),e)),r},o=function(e){var a=m(e.components);return n.a.createElement(p.Provider,{value:a},e.children)},u={inlineCode:"code",wrapper:function(e){var a=e.children;return n.a.createElement(n.a.Fragment,{},a)}},l=n.a.forwardRef((function(e,a){var r=e.components,t=e.mdxType,b=e.originalType,i=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),o=m(r),l=t,h=o["".concat(i,".").concat(l)]||o[l]||u[l]||b;return r?n.a.createElement(h,s(s({ref:a},p),{},{components:r})):n.a.createElement(h,s({ref:a},p))}));function h(e,a){var r=arguments,t=a&&a.mdxType;if("string"==typeof e||t){var b=r.length,i=new Array(b);i[0]=l;var s={};for(var c in a)hasOwnProperty.call(a,c)&&(s[c]=a[c]);s.originalType=e,s.mdxType="string"==typeof e?e:t,i[1]=s;for(var p=2;p<b;p++)i[p]=r[p];return n.a.createElement.apply(null,i)}return n.a.createElement.apply(null,r)}l.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/fa111d7f.bfaf4849.js b/fa111d7f.bfaf4849.js
deleted file mode 100644
index c815fff..0000000
--- a/fa111d7f.bfaf4849.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[136],{203:function(e,n,t){"use strict";t.r(n),t.d(n,"frontMatter",(function(){return i})),t.d(n,"metadata",(function(){return s})),t.d(n,"toc",(function(){return c})),t.d(n,"default",(function(){return l}));var a=t(3),o=t(7),r=(t(0),t(209)),i={title:"YARN Runtime Quick Start Guide"},s={unversionedId:"userDocs/yarn/YARNRuntimeGuide",id:"userDocs/yarn/YARNRuntimeGuide",isDocsHomePage:!1,title:"YARN Runtime Quick Start Guide",description:"\x3c!--",source:"@site/docs/userDocs/yarn/YARNRuntimeGuide.md",slug:"/userDocs/yarn/YARNRuntimeGuide",permalink:"/docs/next/userDocs/yarn/YARNRuntimeGuide",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/userDocs/yarn/YARNRuntimeGuide.md",version:"current"},c=[{value:"Prerequisite",id:"prerequisite",children:[]},{value:"Build your own Docker image",id:"build-your-own-docker-image",children:[]},{value:"Launch TensorFlow Application:",id:"launch-tensorflow-application",children:[{value:"Without Docker",id:"without-docker",children:[]},{value:"Building a Python virtual environment with TensorFlow",id:"building-a-python-virtual-environment-with-tensorflow",children:[]},{value:"Get the training examples",id:"get-the-training-examples",children:[]},{value:"With Docker",id:"with-docker",children:[]}]},{value:"Launch PyTorch Application:",id:"launch-pytorch-application",children:[{value:"Without Docker",id:"without-docker-1",children:[]},{value:"Building a Python virtual environment with PyTorch",id:"building-a-python-virtual-environment-with-pytorch",children:[]},{value:"Get the training examples",id:"get-the-training-examples-1",children:[]},{value:"With Docker",id:"with-docker-1",children:[]}]},{value:"Launch MXNet Application:",id:"launch-mxnet-application",children:[{value:"Without Docker",id:"without-docker-2",children:[]},{value:"Building a Python virtual environment with MXNet",id:"building-a-python-virtual-environment-with-mxnet",children:[]},{value:"Get the training examples",id:"get-the-training-examples-2",children:[]},{value:"With Docker",id:"with-docker-2",children:[]}]},{value:"Use YARN Service to run Submarine: Deprecated",id:"use-yarn-service-to-run-submarine-deprecated",children:[]}],p={toc:c};function l(e){var n=e.components,i=Object(o.a)(e,["components"]);return Object(r.b)("wrapper",Object(a.a)({},p,i,{components:n,mdxType:"MDXLayout"}),Object(r.b)("h2",{id:"prerequisite"},"Prerequisite"),Object(r.b)("p",null,"Check out the ",Object(r.b)("a",{parentName:"p",href:"../../adminDocs/yarn/README"},"Running Submarine on YARN")),Object(r.b)("h2",{id:"build-your-own-docker-image"},"Build your own Docker image"),Object(r.b)("p",null,"When you follow the documents below, and want to build your own Docker image for Tensorflow/PyTorch/MXNet? Please check out ",Object(r.b)("a",{parentName:"p",href:"Dockerfiles"},"Build your Docker image")," for more details."),Object(r.b)("h2",{id:"launch-tensorflow-application"},"Launch TensorFlow Application:"),Object(r.b)("h3",{id:"without-docker"},"Without Docker"),Object(r.b)("p",null,"You need:"),Object(r.b)("ul",null,Object(r.b)("li",{parentName:"ul"},"Build a Python virtual environment with TensorFlow 1.13.1 installed"),Object(r.b)("li",{parentName:"ul"},"A cluster with Hadoop 2.9 or above.")),Object(r.b)("h3",{id:"building-a-python-virtual-environment-with-tensorflow"},"Building a Python virtual environment with TensorFlow"),Object(r.b)("p",null,"TonY requires a Python virtual environment zip with TensorFlow and any needed Python libraries already installed."),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre"},"wget https://files.pythonhosted.org/packages/33/bc/fa0b5347139cd9564f0d44ebd2b147ac97c36b2403943dbee8a25fd74012/virtualenv-16.0.0.tar.gz\ntar xf virtualenv-16.0.0.tar.gz\n\n# Make sure to install using Python 3, as TensorFlow only provides Python 3 artifacts\npython virtualenv-16.0.0/virtualenv.py venv\n. venv/bin/activate\npip install tensorflow==1.13.1\nzip -r myvenv.zip venv\ndeactivate\n")),Object(r.b)("p",null,"The above commands will produced a myvenv.zip and it will be used in below example. There's no need to copy it to other nodes. And it is not needed when using Docker to run the job."),Object(r.b)("p",null,Object(r.b)("strong",{parentName:"p"},"Note:")," If you require a version of TensorFlow and TensorBoard prior to ",Object(r.b)("inlineCode",{parentName:"p"},"1.13.1"),", take a look at ",Object(r.b)("a",{parentName:"p",href:"https://github.com/linkedin/TonY/issues/42"},"this")," issue."),Object(r.b)("h3",{id:"get-the-training-examples"},"Get the training examples"),Object(r.b)("p",null,"Get mnist_distributed.py from ",Object(r.b)("a",{parentName:"p",href:"https://github.com/linkedin/TonY/tree/master/tony-examples/mnist-tensorflow"},"https://github.com/linkedin/TonY/tree/master/tony-examples/mnist-tensorflow")),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre"},'SUBMARINE_VERSION=<REPLACE_VERSION>\nSUBMARINE_HADOOP_VERSION=3.1\nCLASSPATH=$(hadoop classpath --glob):path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar \\\njava org.apache.submarine.client.cli.Cli job run --name tf-job-001 \\\n --framework tensorflow \\\n --verbose \\\n --input_path "" \\\n --num_workers 2 \\\n --worker_resources memory=1G,vcores=1 \\\n --num_ps 1 \\\n --ps_resources memory=1G,vcores=1 \\\n --worker_launch_cmd "myvenv.zip/venv/bin/python mnist_distributed.py --steps 2 --data_dir /tmp/data --working_dir /tmp/mode" \\\n --ps_launch_cmd "myvenv.zip/venv/bin/python mnist_distributed.py --steps 2 --data_dir /tmp/data --working_dir /tmp/mode" \\\n --insecure \\\n --conf tony.containers.resources=path-to/myvenv.zip#archive,path-to/mnist_distributed.py,path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar\n')),Object(r.b)("p",null,"You should then be able to see links and status of the jobs from command line:"),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre"},"2019-04-22 20:30:42,611 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000003/pi status: RUNNING\n2019-04-22 20:30:42,612 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 1 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000004/pi status: RUNNING\n2019-04-22 20:30:42,612 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: ps index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000002/pi status: RUNNING\n2019-04-22 20:30:42,612 INFO tony.TonyClient: Logs for ps 0 at: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000002/pi\n2019-04-22 20:30:42,612 INFO tony.TonyClient: Logs for worker 0 at: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000003/pi\n2019-04-22 20:30:42,612 INFO tony.TonyClient: Logs for worker 1 at: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000004/pi\n2019-04-22 20:30:44,625 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: ps index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000002/pi status: FINISHED\n2019-04-22 20:30:44,625 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000003/pi status: FINISHED\n2019-04-22 20:30:44,626 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 1 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000004/pi status: FINISHED\n\n")),Object(r.b)("h3",{id:"with-docker"},"With Docker"),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre"},'SUBMARINE_VERSION=<REPLACE_VERSION>\nSUBMARINE_HADOOP_VERSION=3.1\nCLASSPATH=$(hadoop classpath --glob):path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar \\\njava org.apache.submarine.client.cli.Cli job run --name tf-job-001 \\\n --framework tensorflow \\\n --docker_image hadoopsubmarine/tf-1.8.0-cpu:0.0.1 \\\n --input_path hdfs://pi-aw:9000/dataset/cifar-10-data \\\n --worker_resources memory=3G,vcores=2 \\\n --worker_launch_cmd "export CLASSPATH=\\$(/hadoop-3.1.0/bin/hadoop classpath --glob) && cd /test/models/tutorials/image/cifar10_estimator && python cifar10_main.py --data-dir=%input_path% --job-dir=%checkpoint_path% --train-steps=10000 --eval-batch-size=16 --train-batch-size=16 --variable-strategy=CPU --num-gpus=0 --sync" \\\n --env JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 \\\n --env DOCKER_HADOOP_HDFS_HOME=/hadoop-3.1.0 \\\n --env DOCKER_JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 \\\n --env HADOOP_HOME=/hadoop-3.1.0 \\\n --env HADOOP_YARN_HOME=/hadoop-3.1.0 \\\n --env HADOOP_COMMON_HOME=/hadoop-3.1.0 \\\n --env HADOOP_HDFS_HOME=/hadoop-3.1.0 \\\n --env HADOOP_CONF_DIR=/hadoop-3.1.0/etc/hadoop \\\n --conf tony.containers.resources=path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar\n')),Object(r.b)("h4",{id:"notes"},"Notes:"),Object(r.b)("p",null,"1) ",Object(r.b)("inlineCode",{parentName:"p"},"DOCKER_JAVA_HOME")," points to JAVA_HOME inside Docker image."),Object(r.b)("p",null,"2) ",Object(r.b)("inlineCode",{parentName:"p"},"DOCKER_HADOOP_HDFS_HOME")," points to HADOOP_HDFS_HOME inside Docker image."),Object(r.b)("p",null,"We removed TonY submodule after applying ",Object(r.b)("a",{parentName:"p",href:"https://issues.apache.org/jira/browse/SUBMARINE-371"},"SUBMARINE-371")," and changed to use TonY dependency directly."),Object(r.b)("p",null,"After Submarine v0.2.0, there is a uber jar ",Object(r.b)("inlineCode",{parentName:"p"},"submarine-all-${SUBMARINE_VERSION}-hadoop-${HADOOP_VERSION}.jar")," released together with\nthe ",Object(r.b)("inlineCode",{parentName:"p"},"submarine-core-${SUBMARINE_VERSION}.jar"),", ",Object(r.b)("inlineCode",{parentName:"p"},"submarine-yarnservice-runtime-${SUBMARINE_VERSION}.jar")," and ",Object(r.b)("inlineCode",{parentName:"p"},"submarine-tony-runtime-${SUBMARINE_VERSION}.jar"),"."),Object(r.b)("br",null),Object(r.b)("h2",{id:"launch-pytorch-application"},"Launch PyTorch Application:"),Object(r.b)("h3",{id:"without-docker-1"},"Without Docker"),Object(r.b)("p",null,"You need:"),Object(r.b)("ul",null,Object(r.b)("li",{parentName:"ul"},"Build a Python virtual environment with PyTorch 0.4.0+ installed"),Object(r.b)("li",{parentName:"ul"},"A cluster with Hadoop 2.9 or above.")),Object(r.b)("h3",{id:"building-a-python-virtual-environment-with-pytorch"},"Building a Python virtual environment with PyTorch"),Object(r.b)("p",null,"TonY requires a Python virtual environment zip with PyTorch and any needed Python libraries already installed."),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre"},"wget https://files.pythonhosted.org/packages/33/bc/fa0b5347139cd9564f0d44ebd2b147ac97c36b2403943dbee8a25fd74012/virtualenv-16.0.0.tar.gz\ntar xf virtualenv-16.0.0.tar.gz\n\npython virtualenv-16.0.0/virtualenv.py venv\n. venv/bin/activate\npip install pytorch==0.4.0\nzip -r myvenv.zip venv\ndeactivate\n")),Object(r.b)("h3",{id:"get-the-training-examples-1"},"Get the training examples"),Object(r.b)("p",null,"Get mnist_distributed.py from ",Object(r.b)("a",{parentName:"p",href:"https://github.com/linkedin/TonY/tree/master/tony-examples/mnist-pytorch"},"https://github.com/linkedin/TonY/tree/master/tony-examples/mnist-pytorch")),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre"},'SUBMARINE_VERSION=<REPLACE_VERSION>\nSUBMARINE_HADOOP_VERSION=3.1\nCLASSPATH=$(hadoop classpath --glob):path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar \\\njava org.apache.submarine.client.cli.Cli job run --name PyTorch-job-001 \\\n --framework pytorch\n --num_workers 2 \\\n --worker_resources memory=3G,vcores=2 \\\n --num_ps 2 \\\n --ps_resources memory=3G,vcores=2 \\\n --worker_launch_cmd "myvenv.zip/venv/bin/python mnist_distributed.py" \\\n --ps_launch_cmd "myvenv.zip/venv/bin/python mnist_distributed.py" \\\n --insecure \\\n --conf tony.containers.resources=path-to/myvenv.zip#archive,path-to/mnist_distributed.py, \\\npath-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar\n')),Object(r.b)("p",null,"You should then be able to see links and status of the jobs from command line:"),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre"},"2019-04-22 20:30:42,611 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000003/pi status: RUNNING\n2019-04-22 20:30:42,612 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 1 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000004/pi status: RUNNING\n2019-04-22 20:30:42,612 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: ps index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000002/pi status: RUNNING\n2019-04-22 20:30:42,612 INFO tony.TonyClient: Logs for ps 0 at: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000002/pi\n2019-04-22 20:30:42,612 INFO tony.TonyClient: Logs for worker 0 at: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000003/pi\n2019-04-22 20:30:42,612 INFO tony.TonyClient: Logs for worker 1 at: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000004/pi\n2019-04-22 20:30:44,625 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: ps index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000002/pi status: FINISHED\n2019-04-22 20:30:44,625 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000003/pi status: FINISHED\n2019-04-22 20:30:44,626 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 1 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000004/pi status: FINISHED\n\n")),Object(r.b)("h3",{id:"with-docker-1"},"With Docker"),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre"},'SUBMARINE_VERSION=<REPLACE_VERSION>\nSUBMARINE_HADOOP_VERSION=3.1\nCLASSPATH=$(hadoop classpath --glob):path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar \\\njava org.apache.submarine.client.cli.Cli job run --name PyTorch-job-001 \\\n --framework pytorch\n --docker_image pytorch-latest-gpu:0.0.1 \\\n --input_path "" \\\n --num_workers 1 \\\n --worker_resources memory=3G,vcores=2 \\\n --worker_launch_cmd "cd /test/ && python cifar10_tutorial.py" \\\n --env JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 \\\n --env DOCKER_HADOOP_HDFS_HOME=/hadoop-3.1.2 \\\n --env DOCKER_JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 \\\n --env HADOOP_HOME=/hadoop-3.1.2 \\\n --env HADOOP_YARN_HOME=/hadoop-3.1.2 \\\n --env HADOOP_COMMON_HOME=/hadoop-3.1.2 \\\n --env HADOOP_HDFS_HOME=/hadoop-3.1.2 \\\n --env HADOOP_CONF_DIR=/hadoop-3.1.2/etc/hadoop \\\n --conf tony.containers.resources=path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar\n')),Object(r.b)("h2",{id:"launch-mxnet-application"},"Launch MXNet Application:"),Object(r.b)("h3",{id:"without-docker-2"},"Without Docker"),Object(r.b)("p",null,"You need:"),Object(r.b)("ul",null,Object(r.b)("li",{parentName:"ul"},"Build a Python virtual environment with MXNet installed"),Object(r.b)("li",{parentName:"ul"},"A cluster with Hadoop 2.9 or above.")),Object(r.b)("h3",{id:"building-a-python-virtual-environment-with-mxnet"},"Building a Python virtual environment with MXNet"),Object(r.b)("p",null,"TonY requires a Python virtual environment zip with MXNet and any needed Python libraries already installed."),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre"},"wget https://files.pythonhosted.org/packages/33/bc/fa0b5347139cd9564f0d44ebd2b147ac97c36b2403943dbee8a25fd74012/virtualenv-16.0.0.tar.gz\ntar xf virtualenv-16.0.0.tar.gz\n\npython virtualenv-16.0.0/virtualenv.py venv\n. venv/bin/activate\npip install mxnet==1.5.1\nzip -r myvenv.zip venv\ndeactivate\n")),Object(r.b)("h3",{id:"get-the-training-examples-2"},"Get the training examples"),Object(r.b)("p",null,"Get image_classification.py from this ",Object(r.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/blob/master/dev-support/mini-submarine/submarine/image_classification.py"},"link")),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre"},'SUBMARINE_VERSION=<REPLACE_VERSION>\nSUBMARINE_HADOOP_VERSION=3.1\nCLASSPATH=$(hadoop classpath --glob):path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar \\\njava org.apache.submarine.client.cli.Cli job run --name MXNet-job-001 \\\n --framework mxnet\n --input_path "" \\\n --num_workers 2 \\\n --worker_resources memory=3G,vcores=2 \\\n --worker_launch_cmd "myvenv.zip/venv/bin/python image_classification.py --dataset cifar10 --model vgg11 --epochs 1 --kvstore dist_sync" \\\n --num_ps 2 \\\n --ps_resources memory=3G,vcores=2 \\\n --ps_launch_cmd "myvenv.zip/venv/bin/python image_classification.py --dataset cifar10 --model vgg11 --epochs 1 --kvstore dist_sync" \\\n --num_schedulers=1 \\\n --scheduler_resources memory=1G,vcores=1 \\\n --scheduler_launch_cmd="myvenv.zip/venv/bin/python image_classification.py --dataset cifar10 --model vgg11 --epochs 1 --kvstore dist_sync" \\\n --insecure \\\n --conf tony.containers.resources=path-to/myvenv.zip#archive,path-to/image_classification.py, \\\npath-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar\n')),Object(r.b)("p",null,"You should then be able to see links and status of the jobs from command line:"),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre"},"2020-04-16 20:23:43,834 INFO tony.TonyClient: Task status updated: [TaskInfo] name: server, index: 1, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000004/pi status: RUNNING\n2020-04-16 20:23:43,834 INFO tony.TonyClient: Task status updated: [TaskInfo] name: server, index: 0, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000003/pi status: RUNNING\n2020-04-16 20:23:43,834 INFO tony.TonyClient: Task status updated: [TaskInfo] name: worker, index: 1, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000006/pi status: RUNNING\n2020-04-16 20:23:43,834 INFO tony.TonyClient: Task status updated: [TaskInfo] name: worker, index: 0, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000005/pi status: RUNNING\n2020-04-16 20:23:43,834 INFO tony.TonyClient: Task status updated: [TaskInfo] name: scheduler, index: 0, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000002/pi status: RUNNING\n2020-04-16 20:23:43,839 INFO tony.TonyClient: Logs for scheduler 0 at: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000002/pi\n2020-04-16 20:23:43,839 INFO tony.TonyClient: Logs for server 0 at: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000003/pi\n2020-04-16 20:23:43,840 INFO tony.TonyClient: Logs for server 1 at: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000004/pi\n2020-04-16 20:23:43,840 INFO tony.TonyClient: Logs for worker 0 at: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000005/pi\n2020-04-16 20:23:43,840 INFO tony.TonyClient: Logs for worker 1 at: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000006/pi\n2020-04-16 21:02:09,723 INFO tony.TonyClient: Task status updated: [TaskInfo] name: scheduler, index: 0, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000002/pi status: SUCCEEDED\n2020-04-16 21:02:09,736 INFO tony.TonyClient: Task status updated: [TaskInfo] name: worker, index: 0, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000005/pi status: SUCCEEDED\n2020-04-16 21:02:09,737 INFO tony.TonyClient: Task status updated: [TaskInfo] name: server, index: 1, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000004/pi status: SUCCEEDED\n2020-04-16 21:02:09,737 INFO tony.TonyClient: Task status updated: [TaskInfo] name: worker, index: 1, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000006/pi status: SUCCEEDED\n2020-04-16 21:02:09,737 INFO tony.TonyClient: Task status updated: [TaskInfo] name: server, index: 0, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000003/pi status: SUCCEEDED\n")),Object(r.b)("h3",{id:"with-docker-2"},"With Docker"),Object(r.b)("p",null,"You could refer to this ",Object(r.b)("a",{target:"_blank",href:t(303).default},"sample Dockerfile")," for building your own Docker image."),Object(r.b)("pre",null,Object(r.b)("code",{parentName:"pre"},'SUBMARINE_VERSION=<REPLACE_VERSION>\nSUBMARINE_HADOOP_VERSION=3.1\nCLASSPATH=$(hadoop classpath --glob):path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar \\\njava org.apache.submarine.client.cli.Cli job run --name MXNet-job-001 \\\n --framework mxnet\n --docker_image <your_docker_image> \\\n --input_path "" \\\n --num_schedulers 1 \\\n --scheduler_resources memory=1G,vcores=1 \\\n --scheduler_launch_cmd "/usr/bin/python image_classification.py --dataset cifar10 --model vgg11 --epochs 1 --kvstore dist_sync" \\\n --num_workers 2 \\\n --worker_resources memory=2G,vcores=1 \\\n --worker_launch_cmd "/usr/bin/python image_classification.py --dataset cifar10 --model vgg11 --epochs 1 --kvstore dist_sync" \\\n --num_ps 2 \\\n --ps_resources memory=2G,vcores=1 \\\n --ps_launch_cmd "/usr/bin/python image_classification.py --dataset cifar10 --model vgg11 --epochs 1 --kvstore dist_sync" \\\n --verbose \\\n --insecure \\\n --conf tony.containers.resources=path-to/image_classification.py,path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar\n')),Object(r.b)("h2",{id:"use-yarn-service-to-run-submarine-deprecated"},"Use YARN Service to run Submarine: Deprecated"),Object(r.b)("p",null,"Historically, Submarine supports to use ",Object(r.b)("a",{parentName:"p",href:"https://hadoop.apache.org/docs/r3.1.0/hadoop-yarn/hadoop-yarn-site/yarn-service/Overview.html"},"YARN Service")," to submit deep learning jobs. Now we stop supporting it because YARN service is not actively developed by community, and extra dependencies such as RegistryDNS/ATS-v2 causes lots of issues for setup."),Object(r.b)("p",null,"As of now, you can still use YARN service to run Submarine, but code will be removed in the future release. We will only support use TonY when use Submarine on YARN."))}l.isMDXComponent=!0},209:function(e,n,t){"use strict";t.d(n,"a",(function(){return u})),t.d(n,"b",(function(){return b}));var a=t(0),o=t.n(a);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function s(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?i(Object(t),!0).forEach((function(n){r(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):i(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function c(e,n){if(null==e)return{};var t,a,o=function(e,n){if(null==e)return{};var t,a,o={},r=Object.keys(e);for(a=0;a<r.length;a++)t=r[a],n.indexOf(t)>=0||(o[t]=e[t]);return o}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a<r.length;a++)t=r[a],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}var p=o.a.createContext({}),l=function(e){var n=o.a.useContext(p),t=n;return e&&(t="function"==typeof e?e(n):s(s({},n),e)),t},u=function(e){var n=l(e.components);return o.a.createElement(p.Provider,{value:n},e.children)},d={inlineCode:"code",wrapper:function(e){var n=e.children;return o.a.createElement(o.a.Fragment,{},n)}},h=o.a.forwardRef((function(e,n){var t=e.components,a=e.mdxType,r=e.originalType,i=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),u=l(t),h=a,b=u["".concat(i,".").concat(h)]||u[h]||d[h]||r;return t?o.a.createElement(b,s(s({ref:n},p),{},{components:t})):o.a.createElement(b,s({ref:n},p))}));function b(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var r=t.length,i=new Array(r);i[0]=h;var s={};for(var c in n)hasOwnProperty.call(n,c)&&(s[c]=n[c]);s.originalType=e,s.mdxType="string"==typeof e?e:a,i[1]=s;for(var p=2;p<r;p++)i[p]=t[p];return o.a.createElement.apply(null,i)}return o.a.createElement.apply(null,t)}h.displayName="MDXCreateElement"},303:function(e,n,t){"use strict";t.r(n),n.default=t.p+"assets/files/Dockerfile.cifar10.mx_1.5-cff207e9070bfca947922e0977637093.1"}}]);
\ No newline at end of file
diff --git a/fa8b9269.a0c0d121.js b/fa8b9269.421b7629.js
similarity index 97%
rename from fa8b9269.a0c0d121.js
rename to fa8b9269.421b7629.js
index 281fd49..a3bdb3c 100644
--- a/fa8b9269.a0c0d121.js
+++ b/fa8b9269.421b7629.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[137],{204:function(e,n,r){"use strict";r.r(n),r.d(n,"frontMatter",(function(){return o})),r.d(n,"metadata",(function(){return c})),r.d(n,"toc",(function(){return s})),r.d(n,"default",(function(){return b}));var t=r(3),i=r(7),a=(r(0),r(209)),o={title:"Project Architecture"},c={unversionedId:"devDocs/README",id:"version-0.6.0/devDocs/README",isDocsHomePage:!1,title:"Project Architecture",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/devDocs/README.md",slug:"/devDocs/README",permalink:"/docs/devDocs/README",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/devDocs/README.md",version:"0.6.0",sidebar:"docs",previous:{title:"Running Submarine on YARN",permalink:"/docs/adminDocs/yarn/README"},next:{title:"Dependencies for Submarine",permalink:"/docs/devDocs/Dependencies"}},s=[{value:"1. Introduction",id:"1-introduction",children:[]},{value:"2. Submarine Project Structure",id:"2-submarine-project-structure",children:[{value:"2.1. submarine-client",id:"21-submarine-client",children:[]},{value:"2.2. submarine-cloud-v2",id:"22-submarine-cloud-v2",children:[]},{value:"2.3. submarine-commons",id:"23-submarine-commons",children:[]},{value:"2.4. submarine-dist",id:"24-submarine-dist",children:[]},{value:"2.5. submarine-sdk",id:"25-submarine-sdk",children:[]},{value:"2.6. submarine-security",id:"26-submarine-security",children:[]},{value:"2.7. submarine-server",id:"27-submarine-server",children:[]},{value:"2.8. submarine-test",id:"28-submarine-test",children:[]},{value:"2.9. submarine-workbench",id:"29-submarine-workbench",children:[]},{value:"2.10 dev-support",id:"210-dev-support",children:[]}]}],u={toc:s};function b(e){var n=e.components,r=Object(i.a)(e,["components"]);return Object(a.b)("wrapper",Object(t.a)({},u,r,{components:n,mdxType:"MDXLayout"}),Object(a.b)("h2",{id:"1-introduction"},"1. Introduction"),Object(a.b)("p",null,"This document mainly describes the structure of each module of the Submarine project, the development and test description of each module."),Object(a.b)("h2",{id:"2-submarine-project-structure"},"2. Submarine Project Structure"),Object(a.b)("h3",{id:"21-submarine-client"},"2.1. submarine-client"),Object(a.b)("p",null,"Provide the CLI interface for submarine user. (Currently only support YARN service)"),Object(a.b)("h3",{id:"22-submarine-cloud-v2"},"2.2. submarine-cloud-v2"),Object(a.b)("p",null,"The operator for Submarine application. For details, please see the ",Object(a.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/blob/master/submarine-cloud-v2/README.md"},"README on github"),"."),Object(a.b)("h3",{id:"23-submarine-commons"},"2.3. submarine-commons"),Object(a.b)("p",null,"Define utility function used in multiple packages, mainly related to hadoop."),Object(a.b)("h3",{id:"24-submarine-dist"},"2.4. submarine-dist"),Object(a.b)("p",null,"Store the pre-release files."),Object(a.b)("h3",{id:"25-submarine-sdk"},"2.5. submarine-sdk"),Object(a.b)("p",null,"Provide Python SDK for submarine user."),Object(a.b)("h3",{id:"26-submarine-security"},"2.6. submarine-security"),Object(a.b)("p",null,"Provide authorization for Apache Spark to talking to Ranger Admin."),Object(a.b)("h3",{id:"27-submarine-server"},"2.7. submarine-server"),Object(a.b)("p",null,"Include core server, restful api, and k8s/yarn submitter."),Object(a.b)("h3",{id:"28-submarine-test"},"2.8. submarine-test"),Object(a.b)("p",null,"Provide end-to-end and k8s test for submarine."),Object(a.b)("h3",{id:"29-submarine-workbench"},"2.9. submarine-workbench"),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},"workbench-server: is a Jetty-based web server service. Workbench-server provides RESTful interface and Websocket interface. The RESTful interface provides workbench-web with management capabilities for databases such as project, department, user, and role."),Object(a.b)("li",{parentName:"ul"},"workbench-web: is a web front-end service based on Angular.js framework. With workbench-web users can manage Submarine project, department, user, role through browser. You can also use the notebook to develop machine learning algorithms, model release and other lifecycle management.")),Object(a.b)("h3",{id:"210-dev-support"},"2.10 dev-support"),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},Object(a.b)("strong",{parentName:"li"},"mini-submarine"),": by using the docker image provided by Submarine, you can\nexperience all the functions of Submarine in a single docker environment, while\nmini-submarine also provides developers with a development and testing\nenvironment, Avoid the hassle of installing and deploying the runtime\nenvironment."),Object(a.b)("li",{parentName:"ul"},Object(a.b)("strong",{parentName:"li"},"submarine-installer"),": submarine-installer is our submarine runtime\nenvironment installation tool for yarn-3.1+ and above.By using\nsubmarine-installer, it is easy to install and deploy system services such as\n",Object(a.b)("inlineCode",{parentName:"li"},"docker"),", ",Object(a.b)("inlineCode",{parentName:"li"},"nvidia-docker"),", ",Object(a.b)("inlineCode",{parentName:"li"},"nvidia driver"),", ",Object(a.b)("inlineCode",{parentName:"li"},"ETCD"),", ",Object(a.b)("inlineCode",{parentName:"li"},"Calico network")," etc.\nrequired by yarn-3.1+.")))}b.isMDXComponent=!0},209:function(e,n,r){"use strict";r.d(n,"a",(function(){return l})),r.d(n,"b",(function(){return p}));var t=r(0),i=r.n(t);function a(e,n,r){return n in e?Object.defineProperty(e,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[n]=r,e}function o(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),r.push.apply(r,t)}return r}function c(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?o(Object(r),!0).forEach((function(n){a(e,n,r[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))}))}return e}function s(e,n){if(null==e)return{};var r,t,i=function(e,n){if(null==e)return{};var r,t,i={},a=Object.keys(e);for(t=0;t<a.length;t++)r=a[t],n.indexOf(r)>=0||(i[r]=e[r]);return i}(e,n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(t=0;t<a.length;t++)r=a[t],n.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var u=i.a.createContext({}),b=function(e){var n=i.a.useContext(u),r=n;return e&&(r="function"==typeof e?e(n):c(c({},n),e)),r},l=function(e){var n=b(e.components);return i.a.createElement(u.Provider,{value:n},e.children)},d={inlineCode:"code",wrapper:function(e){var n=e.children;return i.a.createElement(i.a.Fragment,{},n)}},m=i.a.forwardRef((function(e,n){var r=e.components,t=e.mdxType,a=e.originalType,o=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),l=b(r),m=t,p=l["".concat(o,".").concat(m)]||l[m]||d[m]||a;return r?i.a.createElement(p,c(c({ref:n},u),{},{components:r})):i.a.createElement(p,c({ref:n},u))}));function p(e,n){var r=arguments,t=n&&n.mdxType;if("string"==typeof e||t){var a=r.length,o=new Array(a);o[0]=m;var c={};for(var s in n)hasOwnProperty.call(n,s)&&(c[s]=n[s]);c.originalType=e,c.mdxType="string"==typeof e?e:t,o[1]=c;for(var u=2;u<a;u++)o[u]=r[u];return i.a.createElement.apply(null,o)}return i.a.createElement.apply(null,r)}m.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[122],{189:function(e,n,r){"use strict";r.r(n),r.d(n,"frontMatter",(function(){return o})),r.d(n,"metadata",(function(){return c})),r.d(n,"toc",(function(){return s})),r.d(n,"default",(function(){return b}));var t=r(3),i=r(7),a=(r(0),r(194)),o={title:"Project Architecture"},c={unversionedId:"devDocs/README",id:"version-0.6.0/devDocs/README",isDocsHomePage:!1,title:"Project Architecture",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/devDocs/README.md",slug:"/devDocs/README",permalink:"/docs/devDocs/README",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/devDocs/README.md",version:"0.6.0",sidebar:"docs",previous:{title:"Running Submarine on YARN",permalink:"/docs/adminDocs/yarn/README"},next:{title:"Dependencies for Submarine",permalink:"/docs/devDocs/Dependencies"}},s=[{value:"1. Introduction",id:"1-introduction",children:[]},{value:"2. Submarine Project Structure",id:"2-submarine-project-structure",children:[{value:"2.1. submarine-client",id:"21-submarine-client",children:[]},{value:"2.2. submarine-cloud-v2",id:"22-submarine-cloud-v2",children:[]},{value:"2.3. submarine-commons",id:"23-submarine-commons",children:[]},{value:"2.4. submarine-dist",id:"24-submarine-dist",children:[]},{value:"2.5. submarine-sdk",id:"25-submarine-sdk",children:[]},{value:"2.6. submarine-security",id:"26-submarine-security",children:[]},{value:"2.7. submarine-server",id:"27-submarine-server",children:[]},{value:"2.8. submarine-test",id:"28-submarine-test",children:[]},{value:"2.9. submarine-workbench",id:"29-submarine-workbench",children:[]},{value:"2.10 dev-support",id:"210-dev-support",children:[]}]}],u={toc:s};function b(e){var n=e.components,r=Object(i.a)(e,["components"]);return Object(a.b)("wrapper",Object(t.a)({},u,r,{components:n,mdxType:"MDXLayout"}),Object(a.b)("h2",{id:"1-introduction"},"1. Introduction"),Object(a.b)("p",null,"This document mainly describes the structure of each module of the Submarine project, the development and test description of each module."),Object(a.b)("h2",{id:"2-submarine-project-structure"},"2. Submarine Project Structure"),Object(a.b)("h3",{id:"21-submarine-client"},"2.1. submarine-client"),Object(a.b)("p",null,"Provide the CLI interface for submarine user. (Currently only support YARN service)"),Object(a.b)("h3",{id:"22-submarine-cloud-v2"},"2.2. submarine-cloud-v2"),Object(a.b)("p",null,"The operator for Submarine application. For details, please see the ",Object(a.b)("a",{parentName:"p",href:"https://github.com/apache/submarine/blob/master/submarine-cloud-v2/README.md"},"README on github"),"."),Object(a.b)("h3",{id:"23-submarine-commons"},"2.3. submarine-commons"),Object(a.b)("p",null,"Define utility function used in multiple packages, mainly related to hadoop."),Object(a.b)("h3",{id:"24-submarine-dist"},"2.4. submarine-dist"),Object(a.b)("p",null,"Store the pre-release files."),Object(a.b)("h3",{id:"25-submarine-sdk"},"2.5. submarine-sdk"),Object(a.b)("p",null,"Provide Python SDK for submarine user."),Object(a.b)("h3",{id:"26-submarine-security"},"2.6. submarine-security"),Object(a.b)("p",null,"Provide authorization for Apache Spark to talking to Ranger Admin."),Object(a.b)("h3",{id:"27-submarine-server"},"2.7. submarine-server"),Object(a.b)("p",null,"Include core server, restful api, and k8s/yarn submitter."),Object(a.b)("h3",{id:"28-submarine-test"},"2.8. submarine-test"),Object(a.b)("p",null,"Provide end-to-end and k8s test for submarine."),Object(a.b)("h3",{id:"29-submarine-workbench"},"2.9. submarine-workbench"),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},"workbench-server: is a Jetty-based web server service. Workbench-server provides RESTful interface and Websocket interface. The RESTful interface provides workbench-web with management capabilities for databases such as project, department, user, and role."),Object(a.b)("li",{parentName:"ul"},"workbench-web: is a web front-end service based on Angular.js framework. With workbench-web users can manage Submarine project, department, user, role through browser. You can also use the notebook to develop machine learning algorithms, model release and other lifecycle management.")),Object(a.b)("h3",{id:"210-dev-support"},"2.10 dev-support"),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},Object(a.b)("strong",{parentName:"li"},"mini-submarine"),": by using the docker image provided by Submarine, you can\nexperience all the functions of Submarine in a single docker environment, while\nmini-submarine also provides developers with a development and testing\nenvironment, Avoid the hassle of installing and deploying the runtime\nenvironment."),Object(a.b)("li",{parentName:"ul"},Object(a.b)("strong",{parentName:"li"},"submarine-installer"),": submarine-installer is our submarine runtime\nenvironment installation tool for yarn-3.1+ and above.By using\nsubmarine-installer, it is easy to install and deploy system services such as\n",Object(a.b)("inlineCode",{parentName:"li"},"docker"),", ",Object(a.b)("inlineCode",{parentName:"li"},"nvidia-docker"),", ",Object(a.b)("inlineCode",{parentName:"li"},"nvidia driver"),", ",Object(a.b)("inlineCode",{parentName:"li"},"ETCD"),", ",Object(a.b)("inlineCode",{parentName:"li"},"Calico network")," etc.\nrequired by yarn-3.1+.")))}b.isMDXComponent=!0},194:function(e,n,r){"use strict";r.d(n,"a",(function(){return l})),r.d(n,"b",(function(){return p}));var t=r(0),i=r.n(t);function a(e,n,r){return n in e?Object.defineProperty(e,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[n]=r,e}function o(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),r.push.apply(r,t)}return r}function c(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?o(Object(r),!0).forEach((function(n){a(e,n,r[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))}))}return e}function s(e,n){if(null==e)return{};var r,t,i=function(e,n){if(null==e)return{};var r,t,i={},a=Object.keys(e);for(t=0;t<a.length;t++)r=a[t],n.indexOf(r)>=0||(i[r]=e[r]);return i}(e,n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(t=0;t<a.length;t++)r=a[t],n.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var u=i.a.createContext({}),b=function(e){var n=i.a.useContext(u),r=n;return e&&(r="function"==typeof e?e(n):c(c({},n),e)),r},l=function(e){var n=b(e.components);return i.a.createElement(u.Provider,{value:n},e.children)},d={inlineCode:"code",wrapper:function(e){var n=e.children;return i.a.createElement(i.a.Fragment,{},n)}},m=i.a.forwardRef((function(e,n){var r=e.components,t=e.mdxType,a=e.originalType,o=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),l=b(r),m=t,p=l["".concat(o,".").concat(m)]||l[m]||d[m]||a;return r?i.a.createElement(p,c(c({ref:n},u),{},{components:r})):i.a.createElement(p,c({ref:n},u))}));function p(e,n){var r=arguments,t=n&&n.mdxType;if("string"==typeof e||t){var a=r.length,o=new Array(a);o[0]=m;var c={};for(var s in n)hasOwnProperty.call(n,s)&&(c[s]=n[s]);c.originalType=e,c.mdxType="string"==typeof e?e:t,o[1]=c;for(var u=2;u<a;u++)o[u]=r[u];return i.a.createElement.apply(null,o)}return i.a.createElement.apply(null,r)}m.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/fc109cd1.44d81630.js b/fc109cd1.206f096b.js
similarity index 98%
rename from fc109cd1.44d81630.js
rename to fc109cd1.206f096b.js
index c50b8ac..302cd47 100644
--- a/fc109cd1.44d81630.js
+++ b/fc109cd1.206f096b.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[138],{205:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return l})),n.d(t,"metadata",(function(){return c})),n.d(t,"toc",(function(){return o})),n.d(t,"default",(function(){return p}));var r=n(3),a=n(7),i=(n(0),n(209)),l={title:"Experiment Client"},c={unversionedId:"userDocs/submarine-sdk/experiment-client",id:"version-0.6.0/userDocs/submarine-sdk/experiment-client",isDocsHomePage:!1,title:"Experiment Client",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/userDocs/submarine-sdk/experiment-client.md",slug:"/userDocs/submarine-sdk/experiment-client",permalink:"/docs/userDocs/submarine-sdk/experiment-client",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/submarine-sdk/experiment-client.md",version:"0.6.0",sidebar:"docs",previous:{title:"Notebook REST API",permalink:"/docs/userDocs/api/notebook"},next:{title:"Model Client",permalink:"/docs/userDocs/submarine-sdk/model-client"}},o=[{value:"class ExperimentClient()",id:"class-experimentclient",children:[{value:"<code>create_experiment(experiment_spec: json) -&gt; dict</code>",id:"create_experimentexperiment_spec-json---dict",children:[]},{value:"<code>patch_experiment(id: str, experiment_spec: json) -&gt; dict</code>",id:"patch_experimentid-str-experiment_spec-json---dict",children:[]},{value:"<code>get_experiment(id: str) -&gt; dict</code>",id:"get_experimentid-str---dict",children:[]},{value:"<code>list_experiments(status: Optional[str]=None) -&gt; list[dict]</code>",id:"list_experimentsstatus-optionalstrnone---listdict",children:[]},{value:"<code>delete_experiment(id: str) -&gt; dict</code>",id:"delete_experimentid-str---dict",children:[]},{value:"<code>get_log(id: str, onlyMaster: Optional[bool]=False) -&gt; None</code>",id:"get_logid-str-onlymaster-optionalboolfalse---none",children:[]},{value:"<code>list_log(status: str) -&gt; list[dict]</code>",id:"list_logstatus-str---listdict",children:[]},{value:"<code>wait_for_finish(id: str, polling_interval: Optional[int]=10) -&gt; dict</code>",id:"wait_for_finishid-str-polling_interval-optionalint10---dict",children:[]}]}],b={toc:o};function p(e){var t=e.components,n=Object(a.a)(e,["components"]);return Object(i.b)("wrapper",Object(r.a)({},b,n,{components:t,mdxType:"MDXLayout"}),Object(i.b)("h2",{id:"class-experimentclient"},"class ExperimentClient()"),Object(i.b)("p",null,"Client of a submarine server that creates and manages experients and logs."),Object(i.b)("h3",{id:"create_experimentexperiment_spec-json---dict"},Object(i.b)("inlineCode",{parentName:"h3"},"create_experiment(experiment_spec: json) -> dict")),Object(i.b)("p",null,"Create an experiment."),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Parameters")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"experiment_spec"),": Submarine experiment spec. More detailed information can be found at ",Object(i.b)("a",{parentName:"li",href:"https://submarine.apache.org/docs/userDocs/api/experiment"},"Experiment API"),"."))),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Returns"),": The detailed info about the submarine experiment.")),Object(i.b)("p",null,"Example"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-python"},'from submarine import *\nclient = ExperimentClient()\nclient.create_experiment({\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=1024M"\n    }\n  }\n})\n')),Object(i.b)("h3",{id:"patch_experimentid-str-experiment_spec-json---dict"},Object(i.b)("inlineCode",{parentName:"h3"},"patch_experiment(id: str, experiment_spec: json) -> dict")),Object(i.b)("p",null,"Patch an experiment."),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Parameters")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"id"),": Submarine experiment id. "),Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"experiment_spec"),": Submarine experiment spec. More detailed information can be found at ",Object(i.b)("a",{parentName:"li",href:"https://submarine.apache.org/docs/userDocs/api/experiment"},"Experiment API"),"."))),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Returns")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},"The detailed info about the submarine experiment."))),Object(i.b)("p",null,"Example"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-python"},'client.patch_experiment("experiment_1626160071451_0008", {\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    "Worker": {\n      "replicas": 2,\n      "resources": "cpu=1,memory=1024M"\n    }\n  }\n})\n')),Object(i.b)("h3",{id:"get_experimentid-str---dict"},Object(i.b)("inlineCode",{parentName:"h3"},"get_experiment(id: str) -> dict")),Object(i.b)("p",null,"Get the experiment's detailed info by id."),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Parameters")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"id"),": Submarine experiment id."))),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Returns")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},"The detailed info about the submarine experiment."))),Object(i.b)("p",null,"Example"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-python"},'experiment = client.get_experiment("experiment_1626160071451_0008")\n')),Object(i.b)("h3",{id:"list_experimentsstatus-optionalstrnone---listdict"},Object(i.b)("inlineCode",{parentName:"h3"},"list_experiments(status: Optional[str]=None) -> list[dict]")),Object(i.b)("p",null,"List all experiment for the user."),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Parameters")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"status"),": Accepted, Created, Running, Succeeded, Deleted."))),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Returns")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},"List of submarine experiments."))),Object(i.b)("p",null,"Example"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-python"},"experiments = client.list_experiments()\n")),Object(i.b)("h3",{id:"delete_experimentid-str---dict"},Object(i.b)("inlineCode",{parentName:"h3"},"delete_experiment(id: str) -> dict")),Object(i.b)("p",null,"Delete the submarine experiment."),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Parameters")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"id"),": Submarine experiment id."))),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Returns")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},"The detailed info about the deleted submarine experiment."))),Object(i.b)("p",null,"Example"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-python"},'client.delete_experiment("experiment_1626160071451_0008")\n')),Object(i.b)("h3",{id:"get_logid-str-onlymaster-optionalboolfalse---none"},Object(i.b)("inlineCode",{parentName:"h3"},"get_log(id: str, onlyMaster: Optional[bool]=False) -> None")),Object(i.b)("p",null,"Print training logs of all pod of the experiment.\nBy default print all the logs of Pod."),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Parameters")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"id"),": Submarine experiment id."),Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"onlyMaster"),': By default include pod log of "master" which might be Tensorflow PS/Chief or PyTorch master.'))),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Return")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},"The info of pod logs"))),Object(i.b)("p",null,"Example"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-python"},'client.get_log("experiment_1626160071451_0009")\n')),Object(i.b)("h3",{id:"list_logstatus-str---listdict"},Object(i.b)("inlineCode",{parentName:"h3"},"list_log(status: str) -> list[dict]")),Object(i.b)("p",null,"List experiment log."),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Parameters")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"status"),": Accepted, Created, Running, Succeeded, Deleted."))),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Returns")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},"List of submarine experiment logs."))),Object(i.b)("p",null,"Example"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-python"},'logs = client.list_log("Succeeded")\n')),Object(i.b)("h3",{id:"wait_for_finishid-str-polling_interval-optionalint10---dict"},Object(i.b)("inlineCode",{parentName:"h3"},"wait_for_finish(id: str, polling_interval: Optional[int]=10) -> dict")),Object(i.b)("p",null,"Waits until the experiment is finished or failed."),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Parameters")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"id"),": Submarine experiment id."),Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"polling_interval"),": How many seconds between two polls for the status of the experiment."))),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Returns")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},"Submarine experiment logs."))),Object(i.b)("p",null,"Example"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-python"},'logs = client.wait_for_finish("experiment_1626160071451_0009", 5)\n')))}p.isMDXComponent=!0},209:function(e,t,n){"use strict";n.d(t,"a",(function(){return s})),n.d(t,"b",(function(){return d}));var r=n(0),a=n.n(r);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function c(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?l(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):l(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function o(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var b=a.a.createContext({}),p=function(e){var t=a.a.useContext(b),n=t;return e&&(n="function"==typeof e?e(t):c(c({},t),e)),n},s=function(e){var t=p(e.components);return a.a.createElement(b.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},u=a.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,l=e.parentName,b=o(e,["components","mdxType","originalType","parentName"]),s=p(n),u=r,d=s["".concat(l,".").concat(u)]||s[u]||m[u]||i;return n?a.a.createElement(d,c(c({ref:t},b),{},{components:n})):a.a.createElement(d,c({ref:t},b))}));function d(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,l=new Array(i);l[0]=u;var c={};for(var o in t)hasOwnProperty.call(t,o)&&(c[o]=t[o]);c.originalType=e,c.mdxType="string"==typeof e?e:r,l[1]=c;for(var b=2;b<i;b++)l[b]=n[b];return a.a.createElement.apply(null,l)}return a.a.createElement.apply(null,n)}u.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[123],{190:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return l})),n.d(t,"metadata",(function(){return c})),n.d(t,"toc",(function(){return o})),n.d(t,"default",(function(){return p}));var r=n(3),a=n(7),i=(n(0),n(194)),l={title:"Experiment Client"},c={unversionedId:"userDocs/submarine-sdk/experiment-client",id:"version-0.6.0/userDocs/submarine-sdk/experiment-client",isDocsHomePage:!1,title:"Experiment Client",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/userDocs/submarine-sdk/experiment-client.md",slug:"/userDocs/submarine-sdk/experiment-client",permalink:"/docs/userDocs/submarine-sdk/experiment-client",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/submarine-sdk/experiment-client.md",version:"0.6.0",sidebar:"docs",previous:{title:"Notebook REST API",permalink:"/docs/userDocs/api/notebook"},next:{title:"Model Client",permalink:"/docs/userDocs/submarine-sdk/model-client"}},o=[{value:"class ExperimentClient()",id:"class-experimentclient",children:[{value:"<code>create_experiment(experiment_spec: json) -&gt; dict</code>",id:"create_experimentexperiment_spec-json---dict",children:[]},{value:"<code>patch_experiment(id: str, experiment_spec: json) -&gt; dict</code>",id:"patch_experimentid-str-experiment_spec-json---dict",children:[]},{value:"<code>get_experiment(id: str) -&gt; dict</code>",id:"get_experimentid-str---dict",children:[]},{value:"<code>list_experiments(status: Optional[str]=None) -&gt; list[dict]</code>",id:"list_experimentsstatus-optionalstrnone---listdict",children:[]},{value:"<code>delete_experiment(id: str) -&gt; dict</code>",id:"delete_experimentid-str---dict",children:[]},{value:"<code>get_log(id: str, onlyMaster: Optional[bool]=False) -&gt; None</code>",id:"get_logid-str-onlymaster-optionalboolfalse---none",children:[]},{value:"<code>list_log(status: str) -&gt; list[dict]</code>",id:"list_logstatus-str---listdict",children:[]},{value:"<code>wait_for_finish(id: str, polling_interval: Optional[int]=10) -&gt; dict</code>",id:"wait_for_finishid-str-polling_interval-optionalint10---dict",children:[]}]}],b={toc:o};function p(e){var t=e.components,n=Object(a.a)(e,["components"]);return Object(i.b)("wrapper",Object(r.a)({},b,n,{components:t,mdxType:"MDXLayout"}),Object(i.b)("h2",{id:"class-experimentclient"},"class ExperimentClient()"),Object(i.b)("p",null,"Client of a submarine server that creates and manages experients and logs."),Object(i.b)("h3",{id:"create_experimentexperiment_spec-json---dict"},Object(i.b)("inlineCode",{parentName:"h3"},"create_experiment(experiment_spec: json) -> dict")),Object(i.b)("p",null,"Create an experiment."),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Parameters")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"experiment_spec"),": Submarine experiment spec. More detailed information can be found at ",Object(i.b)("a",{parentName:"li",href:"https://submarine.apache.org/docs/userDocs/api/experiment"},"Experiment API"),"."))),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Returns"),": The detailed info about the submarine experiment.")),Object(i.b)("p",null,"Example"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-python"},'from submarine import *\nclient = ExperimentClient()\nclient.create_experiment({\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=1024M"\n    }\n  }\n})\n')),Object(i.b)("h3",{id:"patch_experimentid-str-experiment_spec-json---dict"},Object(i.b)("inlineCode",{parentName:"h3"},"patch_experiment(id: str, experiment_spec: json) -> dict")),Object(i.b)("p",null,"Patch an experiment."),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Parameters")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"id"),": Submarine experiment id. "),Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"experiment_spec"),": Submarine experiment spec. More detailed information can be found at ",Object(i.b)("a",{parentName:"li",href:"https://submarine.apache.org/docs/userDocs/api/experiment"},"Experiment API"),"."))),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Returns")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},"The detailed info about the submarine experiment."))),Object(i.b)("p",null,"Example"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-python"},'client.patch_experiment("experiment_1626160071451_0008", {\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    "Worker": {\n      "replicas": 2,\n      "resources": "cpu=1,memory=1024M"\n    }\n  }\n})\n')),Object(i.b)("h3",{id:"get_experimentid-str---dict"},Object(i.b)("inlineCode",{parentName:"h3"},"get_experiment(id: str) -> dict")),Object(i.b)("p",null,"Get the experiment's detailed info by id."),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Parameters")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"id"),": Submarine experiment id."))),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Returns")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},"The detailed info about the submarine experiment."))),Object(i.b)("p",null,"Example"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-python"},'experiment = client.get_experiment("experiment_1626160071451_0008")\n')),Object(i.b)("h3",{id:"list_experimentsstatus-optionalstrnone---listdict"},Object(i.b)("inlineCode",{parentName:"h3"},"list_experiments(status: Optional[str]=None) -> list[dict]")),Object(i.b)("p",null,"List all experiment for the user."),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Parameters")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"status"),": Accepted, Created, Running, Succeeded, Deleted."))),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Returns")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},"List of submarine experiments."))),Object(i.b)("p",null,"Example"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-python"},"experiments = client.list_experiments()\n")),Object(i.b)("h3",{id:"delete_experimentid-str---dict"},Object(i.b)("inlineCode",{parentName:"h3"},"delete_experiment(id: str) -> dict")),Object(i.b)("p",null,"Delete the submarine experiment."),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Parameters")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"id"),": Submarine experiment id."))),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Returns")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},"The detailed info about the deleted submarine experiment."))),Object(i.b)("p",null,"Example"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-python"},'client.delete_experiment("experiment_1626160071451_0008")\n')),Object(i.b)("h3",{id:"get_logid-str-onlymaster-optionalboolfalse---none"},Object(i.b)("inlineCode",{parentName:"h3"},"get_log(id: str, onlyMaster: Optional[bool]=False) -> None")),Object(i.b)("p",null,"Print training logs of all pod of the experiment.\nBy default print all the logs of Pod."),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Parameters")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"id"),": Submarine experiment id."),Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"onlyMaster"),': By default include pod log of "master" which might be Tensorflow PS/Chief or PyTorch master.'))),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Return")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},"The info of pod logs"))),Object(i.b)("p",null,"Example"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-python"},'client.get_log("experiment_1626160071451_0009")\n')),Object(i.b)("h3",{id:"list_logstatus-str---listdict"},Object(i.b)("inlineCode",{parentName:"h3"},"list_log(status: str) -> list[dict]")),Object(i.b)("p",null,"List experiment log."),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Parameters")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"status"),": Accepted, Created, Running, Succeeded, Deleted."))),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Returns")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},"List of submarine experiment logs."))),Object(i.b)("p",null,"Example"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-python"},'logs = client.list_log("Succeeded")\n')),Object(i.b)("h3",{id:"wait_for_finishid-str-polling_interval-optionalint10---dict"},Object(i.b)("inlineCode",{parentName:"h3"},"wait_for_finish(id: str, polling_interval: Optional[int]=10) -> dict")),Object(i.b)("p",null,"Waits until the experiment is finished or failed."),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Parameters")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"id"),": Submarine experiment id."),Object(i.b)("li",{parentName:"ul"},Object(i.b)("strong",{parentName:"li"},"polling_interval"),": How many seconds between two polls for the status of the experiment."))),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},Object(i.b)("strong",{parentName:"p"},"Returns")),Object(i.b)("ul",{parentName:"blockquote"},Object(i.b)("li",{parentName:"ul"},"Submarine experiment logs."))),Object(i.b)("p",null,"Example"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-python"},'logs = client.wait_for_finish("experiment_1626160071451_0009", 5)\n')))}p.isMDXComponent=!0},194:function(e,t,n){"use strict";n.d(t,"a",(function(){return s})),n.d(t,"b",(function(){return d}));var r=n(0),a=n.n(r);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function c(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?l(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):l(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function o(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var b=a.a.createContext({}),p=function(e){var t=a.a.useContext(b),n=t;return e&&(n="function"==typeof e?e(t):c(c({},t),e)),n},s=function(e){var t=p(e.components);return a.a.createElement(b.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},u=a.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,l=e.parentName,b=o(e,["components","mdxType","originalType","parentName"]),s=p(n),u=r,d=s["".concat(l,".").concat(u)]||s[u]||m[u]||i;return n?a.a.createElement(d,c(c({ref:t},b),{},{components:n})):a.a.createElement(d,c({ref:t},b))}));function d(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,l=new Array(i);l[0]=u;var c={};for(var o in t)hasOwnProperty.call(t,o)&&(c[o]=t[o]);c.originalType=e,c.mdxType="string"==typeof e?e:r,l[1]=c;for(var b=2;b<i;b++)l[b]=n[b];return a.a.createElement.apply(null,l)}return a.a.createElement.apply(null,n)}u.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/fe5a2634.78b6a4ff.js b/fe5a2634.5756be1c.js
similarity index 97%
rename from fe5a2634.78b6a4ff.js
rename to fe5a2634.5756be1c.js
index ae94844..56c7aae 100644
--- a/fe5a2634.78b6a4ff.js
+++ b/fe5a2634.5756be1c.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[139],{206:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return o})),n.d(t,"metadata",(function(){return l})),n.d(t,"toc",(function(){return s})),n.d(t,"default",(function(){return p}));var r=n(3),a=n(7),i=(n(0),n(209)),o={title:"Python SDK Development"},l={unversionedId:"userDocs/submarine-sdk/pysubmarine/development",id:"version-0.6.0/userDocs/submarine-sdk/pysubmarine/development",isDocsHomePage:!1,title:"Python SDK Development",description:"\x3c!---",source:"@site/versioned_docs/version-0.6.0/userDocs/submarine-sdk/pysubmarine/development.md",slug:"/userDocs/submarine-sdk/pysubmarine/development",permalink:"/docs/userDocs/submarine-sdk/pysubmarine/development",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/submarine-sdk/pysubmarine/development.md",version:"0.6.0"},s=[{value:"Prerequisites",id:"prerequisites",children:[]},{value:"PySubmarine Docker",id:"pysubmarine-docker",children:[]},{value:"Coding Style",id:"coding-style",children:[]},{value:"Unit Testing",id:"unit-testing",children:[]},{value:"Generate python SDK from swagger",id:"generate-python-sdk-from-swagger",children:[]},{value:"Model Management Model Development",id:"model-management-model-development",children:[]},{value:"Upload package to PyPi",id:"upload-package-to-pypi",children:[]}],c={toc:s};function p(e){var t=e.components,n=Object(a.a)(e,["components"]);return Object(i.b)("wrapper",Object(r.a)({},c,n,{components:t,mdxType:"MDXLayout"}),Object(i.b)("p",null,"This page provides general Python development guidelines and source build instructions"),Object(i.b)("h3",{id:"prerequisites"},"Prerequisites"),Object(i.b)("p",null,"This is required for developing & testing changes, we recommend installing pysubmarine\nin its own conda environment by running the following"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"conda create --name submarine-dev python=3.6\nconda activate submarine-dev\n\n# Install auto-format and lints (lint-requirements.txt is in ./dev-support/style-check/python)\npip install -r lint-requirements.txt\n\n# Install mypy (mypy-requirements.txt is in ./dev-support/style-check/python)\npip install -r mypy-requirements.txt\n\n# test-requirements.txt is in ./submarine-sdk/pysubmarine/github-actions\npip install -r test-requirements.txt\n\n# Installs pysubmarine from current checkout\npip install ./submarine-sdk/pysubmarine\n")),Object(i.b)("h3",{id:"pysubmarine-docker"},"PySubmarine Docker"),Object(i.b)("p",null,"We also use docker to provide build environments for CI, development,\ngenerate python sdk from swagger."),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"./run-pysubmarine-ci.sh\n")),Object(i.b)("p",null,"The script does the following things:"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Start an interactive bash session"),Object(i.b)("li",{parentName:"ul"},"Mount submarine directory to /workspace and set it as home"),Object(i.b)("li",{parentName:"ul"},"Switch user to be the same user that calls the ",Object(i.b)("inlineCode",{parentName:"li"},"run-pysubmarine-ci.sh"))),Object(i.b)("h3",{id:"coding-style"},"Coding Style"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Use ",Object(i.b)("a",{parentName:"li",href:"https://github.com/PyCQA/isort"},"isort")," to sort the Python imports and ",Object(i.b)("a",{parentName:"li",href:"https://github.com/psf/black"},"black")," to format Python code"),Object(i.b)("li",{parentName:"ul"},"Both style is configured in ",Object(i.b)("inlineCode",{parentName:"li"},"pyproject.toml")),Object(i.b)("li",{parentName:"ul"},"To autoformat code")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"./dev-support/style-check/python/auto-format.sh\n")),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Use ",Object(i.b)("a",{parentName:"li",href:"https://github.com/PyCQA/flake8"},"flake8")," to verify the linter, its' configure is in ",Object(i.b)("inlineCode",{parentName:"li"},".flake8"),"."),Object(i.b)("li",{parentName:"ul"},"Also, we are using ",Object(i.b)("a",{parentName:"li",href:"https://github.com/python/mypy"},"mypy")," to check the static type in ",Object(i.b)("inlineCode",{parentName:"li"},"submarine-sdk/pysubmarine/submarine"),"."),Object(i.b)("li",{parentName:"ul"},"Verify linter pass before submitting a pull request by running:")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"./dev-support/style-check/python/lint.sh\n")),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"If you encouter a unexpected format, use the following method")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-python"},'# fmt: off\n  "Unexpected format, formated by yourself"\n# fmt: on\n')),Object(i.b)("h3",{id:"unit-testing"},"Unit Testing"),Object(i.b)("p",null,"We are using ",Object(i.b)("a",{parentName:"p",href:"https://docs.pytest.org/en/latest/"},"pytest")," to develop our unit test suite.\nAfter building the project (see below) you can run its unit tests like so:"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"cd submarine-sdk/pysubmarine\n")),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Run unit test")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-shell",metastring:"script",script:!0},'pytest --cov=submarine -vs -m "not e2e"\n')),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Run integration test")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-shell",metastring:"script",script:!0},'pytest --cov=submarine -vs -m "e2e"\n')),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},"Before run this command in local, you should make sure the submarine server is running.")),Object(i.b)("h3",{id:"generate-python-sdk-from-swagger"},"Generate python SDK from swagger"),Object(i.b)("p",null,"We use ",Object(i.b)("a",{parentName:"p",href:"https://openapi-generator.tech/docs/installation/#jar"},"open-api generator"),"\nto generate pysubmarine client API that used to communicate with submarine server."),Object(i.b)("p",null,"If change below files, please run ",Object(i.b)("inlineCode",{parentName:"p"},"./dev-support/pysubmarine/gen-sdk.sh"),"\nto generate latest version of SDK."),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",{parentName:"li",href:"https://github.com/apache/submarine/blob/master/submarine-server/server-core/src/main/java/org/apache/submarine/server/Bootstrap.java"},"Bootstrap.java")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",{parentName:"li",href:"https://github.com/apache/submarine/blob/master/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/ExperimentRestApi.java"},"ExperimentRestApi.java"))),Object(i.b)("h3",{id:"model-management-model-development"},"Model Management Model Development"),Object(i.b)("p",null,"For local development, we can access cluster's service easily thanks to ",Object(i.b)("a",{parentName:"p",href:"https://www.telepresence.io/"},"telepresence"),".\nTo elaborate, we can develop the sdk in local but can reach out to mlflow server by proxy."),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},"Install telepresence follow ",Object(i.b)("a",{parentName:"li",href:"https://www.telepresence.io/reference/install"},"the instruction"),"."),Object(i.b)("li",{parentName:"ol"},"Start proxy pod")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"telepresence --new-deployment submarine-dev\n")),Object(i.b)("ol",{start:3},Object(i.b)("li",{parentName:"ol"},"You can develop as if in the cluster.")),Object(i.b)("h3",{id:"upload-package-to-pypi"},"Upload package to PyPi"),Object(i.b)("p",null,"For Apache Submarine committer and PMCs to do a new release."),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},"Change the version from 0.x.x-SNAPSHOT to 0.x.x\nin ",Object(i.b)("a",{parentName:"li",href:"https://github.com/apache/submarine/blob/master/submarine-sdk/pysubmarine/setup.py"},"setup.py")),Object(i.b)("li",{parentName:"ol"},"Install Python packages")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"cd submarine-sdk/pysubmarine\npip install -r github-actions/pypi-requirements.txt\n")),Object(i.b)("ol",{start:3},Object(i.b)("li",{parentName:"ol"},"Compiling Your Package")),Object(i.b)("p",null,"It will create ",Object(i.b)("inlineCode",{parentName:"p"},"build"),", ",Object(i.b)("inlineCode",{parentName:"p"},"dist"),", and ",Object(i.b)("inlineCode",{parentName:"p"},"project.egg.info"),"\nin your local directory"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"python setup.py bdist_wheel\n")),Object(i.b)("ol",{start:4},Object(i.b)("li",{parentName:"ol"},"Upload python package to TestPyPI for testing")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"python -m twine upload --repository testpypi dist/*\n")),Object(i.b)("ol",{start:5},Object(i.b)("li",{parentName:"ol"},"Upload python package to PyPi")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"python -m twine upload --repository-url https://upload.pypi.org/legacy/ dist/*\n")))}p.isMDXComponent=!0},209:function(e,t,n){"use strict";n.d(t,"a",(function(){return b})),n.d(t,"b",(function(){return d}));var r=n(0),a=n.n(r);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var c=a.a.createContext({}),p=function(e){var t=a.a.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},b=function(e){var t=p(e.components);return a.a.createElement(c.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},m=a.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,o=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),b=p(n),m=r,d=b["".concat(o,".").concat(m)]||b[m]||u[m]||i;return n?a.a.createElement(d,l(l({ref:t},c),{},{components:n})):a.a.createElement(d,l({ref:t},c))}));function d(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l.mdxType="string"==typeof e?e:r,o[1]=l;for(var c=2;c<i;c++)o[c]=n[c];return a.a.createElement.apply(null,o)}return a.a.createElement.apply(null,n)}m.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[124],{191:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return o})),n.d(t,"metadata",(function(){return l})),n.d(t,"toc",(function(){return s})),n.d(t,"default",(function(){return p}));var r=n(3),a=n(7),i=(n(0),n(194)),o={title:"Python SDK Development"},l={unversionedId:"userDocs/submarine-sdk/pysubmarine/development",id:"version-0.6.0/userDocs/submarine-sdk/pysubmarine/development",isDocsHomePage:!1,title:"Python SDK Development",description:"\x3c!---",source:"@site/versioned_docs/version-0.6.0/userDocs/submarine-sdk/pysubmarine/development.md",slug:"/userDocs/submarine-sdk/pysubmarine/development",permalink:"/docs/userDocs/submarine-sdk/pysubmarine/development",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/userDocs/submarine-sdk/pysubmarine/development.md",version:"0.6.0"},s=[{value:"Prerequisites",id:"prerequisites",children:[]},{value:"PySubmarine Docker",id:"pysubmarine-docker",children:[]},{value:"Coding Style",id:"coding-style",children:[]},{value:"Unit Testing",id:"unit-testing",children:[]},{value:"Generate python SDK from swagger",id:"generate-python-sdk-from-swagger",children:[]},{value:"Model Management Model Development",id:"model-management-model-development",children:[]},{value:"Upload package to PyPi",id:"upload-package-to-pypi",children:[]}],c={toc:s};function p(e){var t=e.components,n=Object(a.a)(e,["components"]);return Object(i.b)("wrapper",Object(r.a)({},c,n,{components:t,mdxType:"MDXLayout"}),Object(i.b)("p",null,"This page provides general Python development guidelines and source build instructions"),Object(i.b)("h3",{id:"prerequisites"},"Prerequisites"),Object(i.b)("p",null,"This is required for developing & testing changes, we recommend installing pysubmarine\nin its own conda environment by running the following"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"conda create --name submarine-dev python=3.6\nconda activate submarine-dev\n\n# Install auto-format and lints (lint-requirements.txt is in ./dev-support/style-check/python)\npip install -r lint-requirements.txt\n\n# Install mypy (mypy-requirements.txt is in ./dev-support/style-check/python)\npip install -r mypy-requirements.txt\n\n# test-requirements.txt is in ./submarine-sdk/pysubmarine/github-actions\npip install -r test-requirements.txt\n\n# Installs pysubmarine from current checkout\npip install ./submarine-sdk/pysubmarine\n")),Object(i.b)("h3",{id:"pysubmarine-docker"},"PySubmarine Docker"),Object(i.b)("p",null,"We also use docker to provide build environments for CI, development,\ngenerate python sdk from swagger."),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"./run-pysubmarine-ci.sh\n")),Object(i.b)("p",null,"The script does the following things:"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Start an interactive bash session"),Object(i.b)("li",{parentName:"ul"},"Mount submarine directory to /workspace and set it as home"),Object(i.b)("li",{parentName:"ul"},"Switch user to be the same user that calls the ",Object(i.b)("inlineCode",{parentName:"li"},"run-pysubmarine-ci.sh"))),Object(i.b)("h3",{id:"coding-style"},"Coding Style"),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Use ",Object(i.b)("a",{parentName:"li",href:"https://github.com/PyCQA/isort"},"isort")," to sort the Python imports and ",Object(i.b)("a",{parentName:"li",href:"https://github.com/psf/black"},"black")," to format Python code"),Object(i.b)("li",{parentName:"ul"},"Both style is configured in ",Object(i.b)("inlineCode",{parentName:"li"},"pyproject.toml")),Object(i.b)("li",{parentName:"ul"},"To autoformat code")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"./dev-support/style-check/python/auto-format.sh\n")),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Use ",Object(i.b)("a",{parentName:"li",href:"https://github.com/PyCQA/flake8"},"flake8")," to verify the linter, its' configure is in ",Object(i.b)("inlineCode",{parentName:"li"},".flake8"),"."),Object(i.b)("li",{parentName:"ul"},"Also, we are using ",Object(i.b)("a",{parentName:"li",href:"https://github.com/python/mypy"},"mypy")," to check the static type in ",Object(i.b)("inlineCode",{parentName:"li"},"submarine-sdk/pysubmarine/submarine"),"."),Object(i.b)("li",{parentName:"ul"},"Verify linter pass before submitting a pull request by running:")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"./dev-support/style-check/python/lint.sh\n")),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"If you encouter a unexpected format, use the following method")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-python"},'# fmt: off\n  "Unexpected format, formated by yourself"\n# fmt: on\n')),Object(i.b)("h3",{id:"unit-testing"},"Unit Testing"),Object(i.b)("p",null,"We are using ",Object(i.b)("a",{parentName:"p",href:"https://docs.pytest.org/en/latest/"},"pytest")," to develop our unit test suite.\nAfter building the project (see below) you can run its unit tests like so:"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"cd submarine-sdk/pysubmarine\n")),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Run unit test")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-shell",metastring:"script",script:!0},'pytest --cov=submarine -vs -m "not e2e"\n')),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},"Run integration test")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-shell",metastring:"script",script:!0},'pytest --cov=submarine -vs -m "e2e"\n')),Object(i.b)("blockquote",null,Object(i.b)("p",{parentName:"blockquote"},"Before run this command in local, you should make sure the submarine server is running.")),Object(i.b)("h3",{id:"generate-python-sdk-from-swagger"},"Generate python SDK from swagger"),Object(i.b)("p",null,"We use ",Object(i.b)("a",{parentName:"p",href:"https://openapi-generator.tech/docs/installation/#jar"},"open-api generator"),"\nto generate pysubmarine client API that used to communicate with submarine server."),Object(i.b)("p",null,"If change below files, please run ",Object(i.b)("inlineCode",{parentName:"p"},"./dev-support/pysubmarine/gen-sdk.sh"),"\nto generate latest version of SDK."),Object(i.b)("ul",null,Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",{parentName:"li",href:"https://github.com/apache/submarine/blob/master/submarine-server/server-core/src/main/java/org/apache/submarine/server/Bootstrap.java"},"Bootstrap.java")),Object(i.b)("li",{parentName:"ul"},Object(i.b)("a",{parentName:"li",href:"https://github.com/apache/submarine/blob/master/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/ExperimentRestApi.java"},"ExperimentRestApi.java"))),Object(i.b)("h3",{id:"model-management-model-development"},"Model Management Model Development"),Object(i.b)("p",null,"For local development, we can access cluster's service easily thanks to ",Object(i.b)("a",{parentName:"p",href:"https://www.telepresence.io/"},"telepresence"),".\nTo elaborate, we can develop the sdk in local but can reach out to mlflow server by proxy."),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},"Install telepresence follow ",Object(i.b)("a",{parentName:"li",href:"https://www.telepresence.io/reference/install"},"the instruction"),"."),Object(i.b)("li",{parentName:"ol"},"Start proxy pod")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre"},"telepresence --new-deployment submarine-dev\n")),Object(i.b)("ol",{start:3},Object(i.b)("li",{parentName:"ol"},"You can develop as if in the cluster.")),Object(i.b)("h3",{id:"upload-package-to-pypi"},"Upload package to PyPi"),Object(i.b)("p",null,"For Apache Submarine committer and PMCs to do a new release."),Object(i.b)("ol",null,Object(i.b)("li",{parentName:"ol"},"Change the version from 0.x.x-SNAPSHOT to 0.x.x\nin ",Object(i.b)("a",{parentName:"li",href:"https://github.com/apache/submarine/blob/master/submarine-sdk/pysubmarine/setup.py"},"setup.py")),Object(i.b)("li",{parentName:"ol"},"Install Python packages")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"cd submarine-sdk/pysubmarine\npip install -r github-actions/pypi-requirements.txt\n")),Object(i.b)("ol",{start:3},Object(i.b)("li",{parentName:"ol"},"Compiling Your Package")),Object(i.b)("p",null,"It will create ",Object(i.b)("inlineCode",{parentName:"p"},"build"),", ",Object(i.b)("inlineCode",{parentName:"p"},"dist"),", and ",Object(i.b)("inlineCode",{parentName:"p"},"project.egg.info"),"\nin your local directory"),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"python setup.py bdist_wheel\n")),Object(i.b)("ol",{start:4},Object(i.b)("li",{parentName:"ol"},"Upload python package to TestPyPI for testing")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"python -m twine upload --repository testpypi dist/*\n")),Object(i.b)("ol",{start:5},Object(i.b)("li",{parentName:"ol"},"Upload python package to PyPi")),Object(i.b)("pre",null,Object(i.b)("code",{parentName:"pre",className:"language-bash"},"python -m twine upload --repository-url https://upload.pypi.org/legacy/ dist/*\n")))}p.isMDXComponent=!0},194:function(e,t,n){"use strict";n.d(t,"a",(function(){return b})),n.d(t,"b",(function(){return d}));var r=n(0),a=n.n(r);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var c=a.a.createContext({}),p=function(e){var t=a.a.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},b=function(e){var t=p(e.components);return a.a.createElement(c.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},m=a.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,o=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),b=p(n),m=r,d=b["".concat(o,".").concat(m)]||b[m]||u[m]||i;return n?a.a.createElement(d,l(l({ref:t},c),{},{components:n})):a.a.createElement(d,l({ref:t},c))}));function d(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l.mdxType="string"==typeof e?e:r,o[1]=l;for(var c=2;c<i;c++)o[c]=n[c];return a.a.createElement.apply(null,o)}return a.a.createElement.apply(null,n)}m.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/index.html b/index.html
index feee81c..98b6066 100644
--- a/index.html
+++ b/index.html
@@ -6,29 +6,29 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Hello from Apache Submarine | Apache Submarine</title><meta data-react-helmet="true" property="og:title" content="Hello from Apache Submarine | Apache Submarine"><meta data-react-helmet="true" name="description" content="Description will go into a meta tag in &lt;head /&gt;"><meta data-react-helmet="true" property="og:description" content="Description will go into a meta tag in &lt;head /&gt;"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_tag" content="default"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><script data-react-helmet="true">document.addEventListener("DOMContentLoaded",(function(){var n=document.getElementById("base-url-issue-banner-container");if(n){var e=window.location.pathname,t="/"===e.substr(-1)?e:e+"/";n.innerHTML=t}}))</script><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/18b93cb3.603ff4e5.js" as="script">
-<link rel="preload" href="/1be78505.15c0b52a.js" as="script">
-<link rel="preload" href="/c4f5d8e4.89aae0ca.js" as="script">
-<link rel="preload" href="/145.4f2a58d3.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/18b93cb3.6bc02854.js" as="script">
+<link rel="preload" href="/1be78505.ed765e6d.js" as="script">
+<link rel="preload" href="/c4f5d8e4.4fc79c88.js" as="script">
+<link rel="preload" href="/130.4bee60be.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div class="baseUrlIssueBanner_1-cE" style="border:solid red thick;background-color:#ffe6b3;margin:20px;padding:20px;font-size:20px"><p style="font-weight:bold;font-size:30px">Your Docusaurus site did not load properly.</p><p>A very common reason is a wrong site <a href="https://v2.docusaurus.io/docs/docusaurus.config.js/#baseurl" style="font-weight:bold">baseUrl configuration</a>.</p><p>Current configured baseUrl = <span style="font-weight:bold;color:red">/</span>  (default value)</p><p>We suggest trying baseUrl = <span style="font-weight:bold;color:green" id="base-url-issue-banner-container"></span> </p></div><nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link" href="/docs/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/">0.6.0</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/next/">master 🏃</a></li><li><a class="dropdown__link" href="/docs/">0.6.0</a></li><li><a class="dropdown__link" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/download">Download</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/">0.6.0</a></li><li class="menu__list-item"><a class="menu__link" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><header class="hero hero--primary heroBanner_2Ftp"><div class="container"><h1 class="hero__title">Apache Submarine</h1><p class="hero__subtitle">Cloud Native Machine Learning Platform</p><div class="buttons_1Wc3"><a class="button button--outline button--secondary button--lg" href="/docs/gettingStarted/quickstart">Get Started</a><iframe src="https://ghbtns.com/github-btn.html?user=apache&amp;repo=submarine&amp;type=star&amp;count=true&amp;size=large" frameborder="0" scrolling="0" width="160" height="30" title="GitHub Stars"></iframe></div></div></header><main><section class="features_P2SU"><div class="container"><div class="row"><div class="col col--4"><div class="text--center"><img class="featureImage_3Xqx" src="/img/spark-flink.png" alt="Data Preprocessing"></div><h3>Data Preprocessing</h3><p>Submarine supports data processing and algorithm development using spark &amp; python through notebook</p></div><div class="col col--4"><div class="text--center"><img class="featureImage_3Xqx" src="/img/tf-pytorch.png" alt="Machine Learning"></div><h3>Machine Learning</h3><p>Submarine supports multiple machine learning frameworks for model training.</p></div><div class="col col--4"><div class="text--center"><img class="featureImage_3Xqx" src="/img/yarn-k8s.png" alt="Infrastructure"></div><h3>Infrastructure</h3><p>Submarine supports Yarn, Kubernetes, Docker with Resource Scheduling.</p></div></div></div></section></main></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/18b93cb3.603ff4e5.js"></script>
-<script src="/1be78505.15c0b52a.js"></script>
-<script src="/c4f5d8e4.89aae0ca.js"></script>
-<script src="/145.4f2a58d3.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/18b93cb3.6bc02854.js"></script>
+<script src="/1be78505.ed765e6d.js"></script>
+<script src="/c4f5d8e4.4fc79c88.js"></script>
+<script src="/130.4bee60be.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/lunr-index.json b/lunr-index.json
index 15015df..19a5efa 100644
--- a/lunr-index.json
+++ b/lunr-index.json
@@ -1 +1 @@
-{"version":"2.3.9","fields":["title","content","keywords"],"fieldVectors":[["title/0",[0,242.121,1,138.581,2,487.845,3,943.046]],["content/0",[]],["keywords/0",[]],["title/1",[4,686.52,5,559.092]],["content/1",[0,2.982,1,1.707,2,10.309,4,9.754,5,5.183,6,5.622,7,4.953,8,12.854,9,7.327,10,9.454,11,3.246,12,9.364,13,12.379,14,7.717,15,7.875,16,9.316,17,17.386,18,10.842,19,6.865,20,16.491,21,12.854,22,4.914,23,5.183,24,5.681,25,6.179,26,17.386]],["keywords/1",[]],["title/2",[1,138.581,2,487.845,27,683.808,28,633.586]],["content/2",[0,4.104,1,2.349,2,9.971,11,4.467,23,7.132,24,6.15,27,11.591,28,10.74,29,12.049,30,2.985,31,10.847]],["keywords/2",[]],["title/3",[1,158.147,32,515.929,33,586.043]],["content/3",[]],["keywords/3",[]],["title/4",[34,1130.435]],["content/4",[35,19.406,36,11.782,37,16.368,38,16.899,39,17.537]],["keywords/4",[]],["title/5",[33,586.043,40,604.462,41,438.054]],["content/5",[5,6.977,30,2.92,40,8.784,42,10.953,43,8.319,44,11.482,45,15.07,46,11.631,47,11.205,48,13.237,49,15.07,50,14.191,51,17.305,52,15.639,53,2.721]],["keywords/5",[]],["title/6",[1,158.147,40,604.462,54,472.149]],["content/6",[1,2.776,30,3.527,33,9.261,36,11.426,53,2.959,54,5.742,55,7.497,56,9.491,57,10.665,58,7.875,59,11.316,60,4.092,61,11.877,62,14.484,63,13.089,64,14.484,65,14.484,66,12.216,67,6.923,68,5.348,69,6.366,70,14.484,71,5.368,72,6.216,73,12.216,74,7.995]],["keywords/6",[]],["title/7",[54,549.77,75,868.152]],["content/7",[0,4.699,1,2.271,23,3.299,25,3.934,30,3.112,33,4.027,53,2.689,54,6.78,60,3.544,67,3.911,69,3.597,76,5.123,77,3.826,78,6.537,79,3.669,80,3.868,81,6.025,82,5.179,83,10.002,84,4.744,85,6.025,86,5.826,87,7.395,88,2.629,89,5.237,90,8.183,91,8.183,92,17.583,93,10.352,94,19.457,95,4.076,96,6.674,97,8.183,98,8.183,99,4.744,100,8.183,101,8.183,102,2.476,103,8.183,104,8.183,105,5.5,106,8.183,107,8.183,108,3.706,109,8.183,110,8.183,111,5.574,112,4.264,113,8.183,114,4.264,115,5.018,116,8.183,117,8.183,118,4.632,119,5.429,120,7.15,121,6.902,122,6.393,123,7.732,124,8.183,125,8.183,126,12.544,127,12.544,128,8.183,129,6.542,130,6.542,131,5.922,132,7.395,133,6.609,134,8.183,135,8.183,136,8.183]],["keywords/7",[]],["title/8",[1,158.147,41,438.054,137,593.203]],["content/8",[11,4.565,30,3.979,42,12.839,53,2.142,83,7.966,84,7.897,105,9.154,138,6.046,139,12.567,140,11.861,141,12.983,142,14.222,143,10.889,144,11.861,145,14.014,146,11.488,147,10.889,148,10.215,149,12.309,150,12.869,151,10.215,152,10.889,153,11.169]],["keywords/8",[]],["title/9",[154,673.224,155,499.465,156,876.87]],["content/9",[68,6.46,144,15.235,148,13.121,154,9.89,157,15.81,158,17.495,159,15.81,160,15.235,161,13.987,162,7.371,163,13.668,164,12.882,165,13.561]],["keywords/9",[]],["title/10",[1,184.147,166,1137.075]],["content/10",[1,2.577,30,3.275,36,11.782,53,3.052,133,8.407]],["keywords/10",[]],["title/11",[167,1659.47]],["content/11",[]],["keywords/11",[]],["title/12",[1,138.581,5,420.749,155,437.671,168,589.931]],["content/12",[1,2.203,5,8.976,7,6.392,14,7.363,86,11.81,111,11.299,155,6.957,169,20.508,170,16.587,171,13.991,172,12.44,173,13.262,174,16.587,175,13.991,176,12.214,177,7.884]],["keywords/12",[]],["title/13",[1,158.147,178,575.772,179,1190.871]],["content/13",[0,4.609,1,3.033,24,5.728,25,6.28,53,2.054,60,4.966,99,12.319,102,3.953,112,6.807,155,7.372,180,5.887,181,4.632,182,7.932,183,14.826,184,13.064,185,9.098,186,11.019,187,13.064,188,12.344,189,17.577,190,13.064,191,13.064,192,13.064,193,12.344,194,9.025,195,7.71,196,11.806,197,13.064]],["keywords/13",[]],["title/14",[1,138.581,77,487.845,99,605.026,198,389.728]],["content/14",[0,2.889,1,2.574,11,3.145,24,4.907,25,5.986,30,3.68,31,7.637,53,3.048,99,13.055,138,9.247,155,5.223,198,6.355,199,11.254,200,11.93,201,10.504,202,9.525,203,11.254,204,12.53,205,12.453,206,12.453,207,11.254,208,18.827,209,12.315,210,7.797,211,12.453,212,8.37,213,12.453]],["keywords/14",[]],["title/15",[0,276.306,1,158.147,155,499.465]],["content/15",[1,2.514,43,9.1,53,2.977,58,10.293,102,4.422,155,6.13,181,5.182,182,8.874,204,13.939,214,18.93,215,17.107,216,14.616,217,8.789,218,12.328,219,13.7,220,10.578,221,7.372,222,14.616,223,7.669,224,6.833,225,5.317,226,18.93,227,9.697]],["keywords/15",[]],["title/16",[1,184.147,228,1253.121]],["content/16",[1,2.905,5,4.176,11,2.616,43,7.186,48,7.921,60,2.926,68,6.477,155,7.357,181,3.672,204,11.007,215,13.509,217,8.988,218,12.608,219,10.818,221,5.223,223,5.433,225,5.437,227,6.871,228,13.509,229,8.068,230,5.191,231,8.743,232,9.131,233,2.526,234,5.953,235,9.359,236,10.366,237,6.705,238,10.356,239,12.156,240,6.96,241,10.356,242,10.356,243,8.735,244,10.356,245,10.356,246,10.356,247,10.356,248,7.055,249,6.057,250,10.356,251,7.843,252,10.356,253,7.495,254,5.433,255,10.356]],["keywords/16",[]],["title/17",[1,184.147,256,1108.641]],["content/17",[0,1.959,1,2.802,11,3.928,60,2.385,68,7.792,102,5.259,139,7.959,141,5.403,151,6.332,155,3.541,164,15.077,221,8.766,232,3.785,256,6.75,257,8.273,258,5.619,259,7.352,260,4.231,261,8.442,262,8.442,263,6.923,264,8.442,265,15.706,266,6.457,267,8.442,268,6.457,269,4.773,270,8.442,271,8.442,272,5.076,273,6.75,274,5.532,275,8.442,276,20.477,277,10.037,278,7.878,279,8.442,280,8.634,281,10.835,282,8.634,283,12.846,284,12.846,285,8.442,286,15.551,287,11.609,288,8.418,289,8.442,290,4.399,291,3.037,292,8.442,293,15.551,294,8.442,295,5.403,296,4.708,297,8.442,298,8.442,299,5.532]],["keywords/17",[]],["title/18",[300,868.152,301,859.064]],["content/18",[]],["keywords/18",[]],["title/19",[233,338.213,302,324.255]],["content/19",[]],["keywords/19",[]],["title/20",[40,703.837,300,868.152]],["content/20",[0,2.091,1,1.792,11,4.537,14,4.001,19,5.329,30,2.73,32,3.905,40,4.575,41,5.952,53,2.123,60,2.546,67,4.308,79,4.041,83,5.272,89,5.769,139,10.024,142,6.319,143,10.791,146,7.602,181,3.196,221,6.808,224,4.214,258,5.904,300,5.643,303,5.705,304,11.794,305,4.635,306,11.068,307,11.52,308,10.791,309,12.411,310,7.602,311,4.762,312,9.013,313,4.082,314,3.943,315,5.082,316,9.824,317,2.314,318,7.206,319,8.145,320,8.145,321,6.14,322,7.206,323,9.013,324,9.013,325,8.145,326,11.754,327,9.013,328,8.145,329,12.197,330,12.197,331,13.497,332,13.497,333,6.637,334,5.906,335,3.78,336,9.013,337,9.013,338,2.646,339,9.013,340,4.462]],["keywords/20",[]],["title/21",[33,586.043,88,382.545,301,737.773]],["content/21",[0,4.208,1,1.46,7,4.238,10,5.98,11,4.581,15,4.981,30,1.856,32,4.764,33,5.412,40,5.582,41,4.045,53,2.852,60,3.107,67,5.256,76,9.77,83,9.127,84,6.376,86,7.83,88,7.31,102,5.488,137,5.478,156,8.098,164,13.355,194,7.597,200,7.71,201,9.276,258,4.81,301,12.914,304,6.025,305,5.655,309,7.597,317,2.823,341,6.96,342,12.476,343,10.997,344,10.997,345,7.296,346,8.412,347,8.792,348,10.997,349,10.997,350,6.118,351,10.997,352,10.997]],["keywords/21",[]],["title/22",[72,595.104,353,1021.028]],["content/22",[]],["keywords/22",[]],["title/23",[23,480.154,72,511.082,354,472.149]],["content/23",[0,2.14,12,6.525,22,5.248,23,6.613,30,4.074,53,1.45,60,2.605,71,3.418,93,4.906,108,7.428,198,7.255,355,8.325,356,4.511,357,7.373,358,6.848,359,8.333,360,7.373,361,5.09,362,7.778,363,6.198,364,8.333,365,9.227,366,7.053,367,8.333,368,7.053,369,6.37,370,8.333,371,12.295,372,8.333,373,8.333,374,7.373,375,6.79,376,6.79,377,8.333,378,6.79,379,4.816,380,12.407,381,16.42,382,12.407,383,10.109,384,7.373,385,6.198,386,8.333,387,7.053,388,6.198,389,6.198,390,8.333,391,6.916,392,9.936,393,11.58,394,6.043,395,8.333]],["keywords/23",[]],["title/24",[114,864.749]],["content/24",[]],["keywords/24",[]],["title/25",[43,365.849,71,282.072,114,396.587,260,381.455,396,487.1,397,608.473,398,687.77]],["content/25",[2,9.449,12,4.828,53,2.729,115,6.23,118,3.751,137,7.343,181,3.602,257,5.405,307,10.496,315,3.191,335,4.261,357,13.872,396,9.435,397,8.122,399,11.786,400,11.786,401,11.786,402,9.18,403,9.18,404,9.18,405,9.18,406,9.18,407,8.568,408,9.18,409,9.18,410,9.18,411,9.18,412,9.18,413,9.18,414,9.18,415,9.18,416,9.18,417,9.18,418,9.18,419,9.18,420,9.18,421,9.18,422,9.18,423,5.79,424,9.18,425,7.233,426,8.122,427,6.828,428,8.33,429,3.551,430,15.68,431,9.18,432,8.568,433,13.322,434,11.338,435,10.855,436,13.322,437,9.18,438,7.122,439,7.77,440,7.352,441,13.322]],["keywords/25",[]],["title/26",[25,402.134,114,435.92,162,352.448,442,668.821,443,518.256,444,639.861]],["content/26",[0,3.423,53,2.32,79,6.613,111,10.048,229,7.962,399,11.794,400,11.794,427,9.914,442,15.225,443,11.798,444,11.283,445,13.331,446,13.331,447,13.331,448,13.331,449,13.331,450,11.283,451,17.209,452,13.156,453,17.209,454,13.331,455,13.331,456,13.331,457,13.331,458,13.331,459,13.331]],["keywords/26",[]],["title/27",[24,267.779,114,483.915,335,389.483,460,839.217,461,429.487]],["content/27",[19,7.307,24,6.319,53,2.91,79,8.297,427,12.439,461,8.559,462,16.725,463,14.156]],["keywords/27",[]],["title/28",[25,309.921,114,335.959,115,395.352,118,238.048,438,451.998,464,582.628,465,515.453,466,399.415,467,493.134]],["content/28",[24,1.984,30,4.092,53,2.146,60,3.856,67,3.289,71,4.06,93,5.828,115,4.219,118,4.045,121,5.803,122,5.375,185,5.67,202,5.263,224,3.216,231,7.983,236,5.912,307,11.08,356,3.366,427,4.624,435,5.066,438,9.568,466,6.786,467,12.996,468,4.979,469,6.218,470,2.651,471,4.899,472,6.218,473,6.218,474,6.218,475,10.076,476,5.375,477,12.334,478,6.218,479,4.899,480,3.955,481,4.687,482,17.808,483,6.218,484,10.049,485,4.404,486,6.218,487,5.525,488,8.758,489,9.239,490,6.218,491,6.218,492,6.218,493,6.218,494,5.803,495,6.218,496,6.218,497,7.462,498,9.899,499,6.218,500,4.508,501,6.858,502,6.218,503,9.899,504,6.218,505,6.218,506,5.803,507,14.063,508,9.239,509,6.218,510,5.803,511,5.375,512,6.218,513,6.218,514,6.218,515,6.218,516,9.899,517,4.753,518,9.899,519,2.512,520,6.218,521,9.899,522,6.218,523,6.218,524,6.218]],["keywords/28",[]],["title/29",[25,446.409,43,446.409,114,483.915,396,594.358,525,839.217]],["content/29",[12,10.275,25,8.695,41,6.654,315,5.682,465,14.462,526,14.165,527,7.8,528,11.577,529,13.319]],["keywords/29",[]],["title/30",[530,1269.313]],["content/30",[]],["keywords/30",[]],["title/31",[531,970.633]],["content/31",[1,2.671,11,2.897,60,3.24,69,8.157,96,6.103,118,4.235,141,7.341,155,6.742,164,8.446,177,7.641,181,5.7,223,6.018,232,8.321,299,7.516,305,5.898,429,7.878,443,7.106,461,7.435,531,6.709,532,10.366,533,6.432,534,6.432,535,4.9,536,11.471,537,16.075,538,7.814,539,16.075,540,7.814,541,8.774,542,8.446,543,8.446,544,9.406,545,9.675,546,4.548,547,10.366,548,7.427,549,8.446,550,10.534,551,10.366,552,11.471,553,7.924,554,10.838]],["keywords/31",[]],["title/32",[194,1146.432]],["content/32",[1,2.832,155,7.419,163,13.82,164,13.024,194,12.22,195,12.588,200,12.401,230,8.866,240,11.888,429,6.183,461,8.181]],["keywords/32",[]],["title/33",[240,1115.327]],["content/33",[1,2.554,7,4.725,11,4.252,13,11.988,43,5.895,118,4.528,131,8.874,138,8.535,154,6.932,155,7.062,195,7.237,209,8.874,229,6.618,240,8.241,429,5.885,480,7.049,485,7.848,535,5.238,540,8.353,550,8.035,555,7.848,556,9.029,557,6.618,558,6.989,559,10.678,560,9.58,561,11.081,562,15.216,563,6.54,564,15.216,565,13.461,566,12.262,567,8.136,568,11.081,569,8.601,570,8.601,571,6.185,572,7.172,573,8.035]],["keywords/33",[]],["title/34",[574,1074.47]],["content/34",[195,10.439,230,8.866,526,11.591,567,11.736,574,11.453,575,11.736,576,17.688,577,17.688,578,16.664,579,14.919,580,17.688,581,15.403]],["keywords/34",[]],["title/35",[570,847.751]],["content/35",[7,3.439,19,1.509,28,2.32,31,2.343,32,1.656,55,1.978,60,2.521,68,1.411,71,1.416,88,5.383,95,1.904,96,2.033,137,3.333,154,3.783,155,6.424,162,1.61,177,3.18,195,5.267,210,2.393,212,4.497,217,4.023,224,4.172,229,6.572,230,4.473,232,8.589,258,8.026,260,1.915,280,4.497,296,1.4,301,2.368,302,0.894,305,1.965,315,2.803,333,2.814,354,1.515,361,2.11,379,1.341,429,3.12,434,2.276,443,4.145,480,3.846,533,2.143,534,5.005,535,3.812,538,7.298,541,2.923,549,2.814,556,4.927,558,2.178,559,3.328,562,8.065,564,3.454,567,2.536,569,1.952,570,12.099,574,2.474,575,2.536,582,3.454,583,6.322,584,2.986,585,3.822,586,1.68,587,3.328,588,3.163,589,5.644,590,3.454,591,3.611,592,2.721,593,3.822,594,3.822,595,3.822,596,4.023,597,2.721,598,6.047,599,3.822,600,3.822,601,2.419,602,6.047,603,5.228,604,3.822,605,3.822,606,4.764,607,4.842,608,3.822,609,3.822,610,3.822,611,9.126,612,3.822,613,1.858,614,3.822,615,1.713,616,2.721,617,15.143,618,3.822,619,4.022,620,2.923,621,3.055,622,7.454,623,2.063,624,1.858,625,5.35,626,5.35,627,3.822,628,1.438,629,2.986,630,3.134,631,10.957,632,2.923,633,3.223,634,3.822,635,10.749,636,3.328,637,11.833,638,3.822,639,8.079,640,2.814,641,2.64,642,3.223,643,16.085,644,8.184,645,1.767,646,2.568,647,3.645,648,2.866,649,2.474,650,2.64,651,3.223,652,3.454,653,3.223,654,3.822,655,3.822,656,3.454,657,2.721,658,4.189,659,3.223,660,3.454,661,2.536,662,2.446,663,3.134,664,3.822,665,5.649,666,3.822]],["keywords/35",[]],["title/36",[571,836.983]],["content/36",[667,8.33]],["keywords/36",[]],["title/37",[22,634.394]],["content/37",[667,8.33]],["keywords/37",[]],["title/38",[635,1028.082]],["content/38",[667,8.33]],["keywords/38",[]],["title/39",[668,953.897]],["content/39",[667,8.33]],["keywords/39",[]],["title/40",[669,1146.432]],["content/40",[667,8.33]],["keywords/40",[]],["title/41",[23,669.091]],["content/41",[667,8.33]],["keywords/41",[]],["title/42",[198,619.76]],["content/42",[667,8.33]],["keywords/42",[]],["title/43",[670,582.125]],["content/43",[667,8.33]],["keywords/43",[]],["title/44",[291,596.996]],["content/44",[]],["keywords/44",[]],["title/45",[429,580.065]],["content/45",[667,8.33]],["keywords/45",[]],["title/46",[635,1028.082]],["content/46",[667,8.33]],["keywords/46",[]],["title/47",[198,517.871,671,957.957]],["content/47",[667,8.33]],["keywords/47",[]],["title/48",[672,1399.695]],["content/48",[667,8.33]],["keywords/48",[]],["title/49",[0,321.731,155,581.578]],["content/49",[0,4.558,1,2.609,28,11.927,155,8.239]],["keywords/49",[]],["title/50",[673,1386.652,674,1386.652]],["content/50",[]],["keywords/50",[]],["title/51",[531,970.633]],["content/51",[1,3.1,30,4.274,155,9.381,299,10.983]],["keywords/51",[]],["title/52",[194,1146.432]],["content/52",[1,2.91,30,4.073,155,7.762,194,12.786,240,12.439]],["keywords/52",[]],["title/53",[240,1115.327]],["content/53",[1,2.889,7,6.076,30,4.281,43,7.581,154,8.915,155,8.334,240,10.599,560,12.32,565,12.608,675,15.769]],["keywords/53",[]],["title/54",[574,1074.47]],["content/54",[30,3.998,574,12.414,578,17.48]],["keywords/54",[]],["title/55",[570,847.751]],["content/55",[1,1.49,7,4.325,30,4.334,55,3.672,88,6.748,95,3.534,154,4.01,155,8.355,217,6.749,224,5.247,229,3.829,301,4.395,443,4.395,480,4.078,570,10.731,574,7.267,596,6.749,602,12.584,606,5.051,607,5.134,611,9.486,617,18.002,624,3.45,626,5.672,631,4.832,635,10.685,639,11.443,644,4.768,647,2.897,656,6.411,658,4.441,660,6.411,661,4.707,665,4.49,676,7.094,677,7.094,678,7.094,679,7.094]],["keywords/55",[]],["title/56",[571,836.983]],["content/56",[667,8.33]],["keywords/56",[]],["title/57",[22,634.394]],["content/57",[667,8.33]],["keywords/57",[]],["title/58",[635,1028.082]],["content/58",[667,8.33]],["keywords/58",[]],["title/59",[668,953.897]],["content/59",[667,8.33]],["keywords/59",[]],["title/60",[669,1146.432]],["content/60",[667,8.33]],["keywords/60",[]],["title/61",[23,669.091]],["content/61",[667,8.33]],["keywords/61",[]],["title/62",[198,619.76]],["content/62",[667,8.33]],["keywords/62",[]],["title/63",[670,582.125]],["content/63",[667,8.33]],["keywords/63",[]],["title/64",[291,596.996]],["content/64",[]],["keywords/64",[]],["title/65",[429,580.065]],["content/65",[667,8.33]],["keywords/65",[]],["title/66",[635,1028.082]],["content/66",[667,8.33]],["keywords/66",[]],["title/67",[198,517.871,671,957.957]],["content/67",[667,8.33]],["keywords/67",[]],["title/68",[672,1399.695]],["content/68",[667,8.33]],["keywords/68",[]],["title/69",[0,321.731,155,581.578]],["content/69",[0,4.558,1,2.609,28,11.927,155,8.239]],["keywords/69",[]],["title/70",[233,290.461,680,638.111,681,506.352]],["content/70",[]],["keywords/70",[]],["title/71",[233,338.213,315,435.558]],["content/71",[1,1.831,6,6.031,30,4.224,53,2.168,60,5.148,68,5.091,69,4.077,185,4.801,296,3.399,317,3.54,358,5.757,470,3.574,519,3.386,546,3.677,628,3.491,682,7.497,683,7.415,684,3.491,685,5.006,686,4.459,687,5.006,688,8.632,689,9.817,690,7.497,691,9.267,692,7.926,693,8.138,694,9.525,695,9.525,696,10.546,697,12.588,698,10.546,699,10.546,700,8.138,701,10.772,702,11.024,703,7.415,704,5.081,705,2.764,706,5.12,707,7.094,708,7.094,709,5.377]],["keywords/71",[]],["title/72",[138,615.505,233,338.213]],["content/72",[1,1.905,6,4.28,30,4.275,53,2.256,60,5.283,68,5.297,69,4.301,162,4.123,317,3.683,358,5.989,470,3.771,519,3.573,546,3.88,628,3.683,683,7.824,684,3.683,688,8.981,689,6.968,690,7.8,691,6.577,692,8.246,693,8.466,694,9.91,695,6.76,696,7.485,697,9.91,698,7.485,699,7.485,700,8.466,701,7.645,702,7.824,703,7.824,704,5.361,705,2.916,706,5.402,707,10.972,708,7.485,709,8.317,710,9.786,711,9.786,712,9.786]],["keywords/72",[]],["title/73",[233,404.755]],["content/73",[1,2.201,6,5.243,30,4.163,53,2.607,60,4.683,68,4.426,69,5.269,317,4.255,358,6.921,470,4.619,519,4.376,546,4.752,628,4.511,684,4.511,688,7.504,689,8.534,690,6.517,691,8.056,692,6.89,693,7.074,694,8.281,695,8.281,696,9.168,697,11.451,698,9.168,699,9.168,700,7.074,701,9.365,702,9.583,704,6.567,705,3.572,706,6.617,707,9.168,708,9.168,709,6.95,713,8.826,714,8.826]],["keywords/73",[]],["title/74",[233,338.213,715,678.332]],["content/74",[1,2.163,11,2.302,30,4.237,53,2.141,60,5.729,68,5.026,69,4.007,185,4.719,269,5.154,296,3.341,317,3.495,358,6.802,470,3.513,519,3.328,546,3.614,586,4.007,628,3.431,681,3.876,684,3.431,685,4.92,686,4.382,687,4.92,688,10.199,689,9.692,690,8.857,692,9.364,693,9.614,694,9.404,695,9.404,700,9.614,704,4.994,705,2.717,706,5.032,707,6.973,708,6.973,709,7.892,713,6.712,714,6.712,715,6.659,716,11.481,717,5.38,718,3.756,719,4.541]],["keywords/74",[]],["title/75",[133,600.748,233,338.213]],["content/75",[1,2.272,30,4.212,53,2.69,60,4.833,68,4.634,69,5.517,133,5.438,317,4.392,358,7.143,470,4.836,519,4.582,546,4.976,628,4.724,684,4.724,688,7.858,689,8.936,690,6.824,692,7.215,693,7.407,694,8.671,695,8.671,700,7.407,704,6.876,705,3.74,706,6.929,707,9.6,708,9.6,709,7.277,713,9.242,714,9.242,716,10.586]],["keywords/75",[]],["title/76",[302,278.474,680,638.111,681,506.352]],["content/76",[]],["keywords/76",[]],["title/77",[11,234.543,233,226.502,302,217.154,315,291.693,720,839.217]],["content/77",[30,4.194,53,1.784,60,3.969,67,5.422,68,4.188,69,4.986,71,5.911,108,6.363,118,5.889,185,3.721,233,2.767,296,2.635,317,2.912,338,3.33,354,4.497,379,3.979,470,2.77,519,2.625,546,2.85,563,4.406,588,5.361,628,2.706,682,6.167,684,2.706,685,3.88,686,3.456,687,3.88,704,3.939,705,2.142,706,3.969,721,5.294,722,4.801,723,8.205,724,8.145,725,6.078,726,5.911,727,6.576,728,6.956,729,7.101,730,5.685,731,6.956,732,6.361,733,6.694,734,5.992,735,5.992,736,5.392,737,5.422,738,8.672,739,6.694,740,7.623,741,5.294,742,4.967,743,6.064,744,5.119,745,5.499,746,5.499,747,5.499,748,5.499,749,5.499,750,4.711,751,5.499,752,4.77,753,5.499,754,5.499]],["keywords/77",[]],["title/78",[11,211.281,233,204.037,302,195.617,315,262.763,755,562.237,756,755.984]],["content/78",[1,2.042,14,2.99,30,4.166,53,1.694,60,4.749,67,5.148,68,3.977,69,4.734,71,5.698,108,6.095,118,5.677,119,4.469,120,3.839,185,3.486,233,4.101,296,2.468,311,5.69,317,3.455,354,4.27,358,5.619,379,3.778,470,2.595,519,2.459,546,2.67,563,4.183,588,5.09,628,2.535,680,3.609,681,2.864,682,5.856,684,2.535,685,3.635,686,3.238,687,3.635,704,3.69,705,2.007,706,3.718,721,4.959,722,4.558,723,6.36,724,7.802,725,5.771,726,5.612,727,6.244,728,6.604,729,6.743,730,5.398,731,6.604,732,6.039,736,5.165,737,5.148,738,8.36,739,6.356,740,7.238,741,4.959,742,4.653,743,5.681,744,4.796,745,5.152,746,5.152,747,5.152,748,5.152,749,5.152,750,4.414,751,5.152,752,4.469,753,5.152,754,5.152,757,3.558,758,5.051,759,4.796,760,6.735,761,6.735]],["keywords/78",[]],["title/79",[138,615.505,302,324.255]],["content/79",[30,4.192,53,1.717,60,4.385,67,5.218,68,4.031,69,5.982,71,5.754,95,5.438,108,4.944,118,5.732,233,2.663,317,2.803,338,3.205,354,2.716,379,3.83,470,2.64,519,2.501,546,2.716,563,4.241,588,5.16,628,2.578,684,2.578,704,3.753,705,2.041,706,3.782,721,5.044,722,4.62,723,8.538,724,7.89,725,5.85,726,3.57,727,3.972,728,4.201,729,4.289,730,5.472,731,6.694,732,6.122,733,4.043,734,3.619,735,5.767,736,5.958,737,3.275,738,8.441,739,8.032,740,4.604,741,5.044,742,7.542,744,7.773,745,5.24,746,8.35,747,8.35,748,8.35,749,8.35,750,7.154,751,8.35,752,7.243,753,8.35,754,5.24,762,6.191,763,6.851,764,6.851,765,6.851,766,6.851,767,6.191,768,5.778,769,6.851,770,4.201,771,4.436]],["keywords/79",[]],["title/80",[302,388.052]],["content/80",[30,4.128,53,2.246,60,4.034,67,4.649,68,3.591,69,6.277,71,5.293,108,6.468,118,5.273,233,2.372,317,3.666,338,2.855,354,3.856,379,3.412,470,3.748,519,3.551,546,3.856,563,3.778,588,4.597,628,3.661,684,3.661,704,5.328,705,2.898,706,5.369,722,4.117,723,7.998,724,8.28,725,5.212,726,5.068,727,5.639,728,5.964,729,6.089,730,4.875,731,5.964,732,5.454,733,5.74,734,5.138,735,5.138,736,5.481,737,4.649,738,7.765,739,5.74,740,6.537,742,6.719,744,6.925,745,7.439,746,7.439,747,7.439,748,7.439,749,7.439,750,6.373,751,7.439,752,6.453,753,7.439,754,7.439,762,8.79,772,7.162,773,8.204]],["keywords/80",[]],["title/81",[302,324.255,715,678.332]],["content/81",[30,4.214,53,1.913,60,3.436,67,5.813,68,4.491,69,3.455,71,4.508,108,5.509,118,6.182,162,5.124,185,4.069,233,2.966,269,4.444,296,2.881,317,3.122,338,3.57,354,4.822,379,4.266,470,3.029,519,2.87,546,3.117,563,4.724,588,5.749,628,2.959,684,2.959,685,4.243,686,3.779,687,4.243,704,4.307,705,2.343,706,4.34,715,5.95,717,4.64,722,5.148,723,7.914,724,7.052,725,6.517,726,6.338,727,7.052,728,7.458,729,7.615,730,6.096,731,7.458,732,6.82,733,7.178,734,6.425,735,6.425,736,4.668,737,5.813,738,9.104,739,7.178,740,8.174,772,5.788,773,6.631]],["keywords/81",[]],["title/82",[133,600.748,302,324.255]],["content/82",[30,4.124,53,2.236,60,4.016,67,4.621,68,3.569,69,6.249,71,3.583,108,6.439,118,5.249,133,4.188,162,4.073,233,2.358,317,3.65,338,2.838,354,3.833,379,3.391,470,3.725,519,3.53,546,3.833,563,3.755,588,4.569,628,3.638,684,3.638,704,5.296,705,2.881,706,5.337,722,4.092,723,7.97,724,8.243,725,5.18,726,5.038,727,5.605,728,5.928,729,6.053,730,4.845,731,5.928,732,5.421,733,5.706,734,5.107,735,5.107,736,5.457,737,4.621,738,7.73,739,5.706,740,6.497,742,6.679,743,8.154,744,6.883,745,7.394,746,7.394,747,7.394,748,7.394,749,7.394,750,6.335,751,7.394,752,6.414,753,7.394,754,7.394,772,7.118,773,8.154]],["keywords/82",[]],["title/83",[138,528.602,302,278.474,461,550.765]],["content/83",[30,4.209,53,2.442,69,4.801,93,9.613,95,7.735,317,3.987,470,4.209,519,3.988,546,4.33,563,6.032,628,4.111,684,4.111,704,5.983,705,3.255,706,6.029,717,6.446,723,8.541,742,10.728,768,13.098,770,9.523,771,7.072,774,9.87,775,9.87,776,14.576,777,6.766,778,10.922,779,12.416,780,16.329,781,14.447,782,9.87,783,4.922]],["keywords/83",[]],["title/84",[302,324.255,461,641.312]],["content/84",[11,2.263,30,3.324,53,1.409,69,2.363,71,8.849,93,4.767,95,6.693,317,2.3,338,3.944,355,4.548,470,2.072,519,1.963,546,2.132,563,2.088,628,2.023,684,2.023,704,2.945,705,1.602,706,2.968,717,3.173,723,4.235,742,3.714,768,11.333,770,5.494,771,3.481,776,6.281,777,3.331,779,4.299,780,8.097,781,7.163,782,4.859,783,2.423,784,4.859,785,5.376,786,8.959,787,13.436,788,13.436,789,16.122,790,10.743,791,13.436,792,13.436,793,8.959,794,18.263,795,8.959,796,8.959,797,8.959,798,8.959,799,8.959,800,8.959,801,8.959,802,8.959,803,8.959,804,8.959,805,8.959,806,8.959,807,8.959,808,8.959,809,8.959,810,8.959,811,8.959,812,8.959,813,8.959,814,8.959,815,8.959,816,8.959,817,8.959,818,8.959,819,8.959,820,8.959,821,8.959,822,8.959,823,8.959,824,8.959,825,8.959,826,8.959]],["keywords/84",[]],["title/85",[302,244.021,647,426.205,680,559.163,681,443.705]],["content/85",[]],["keywords/85",[]],["title/86",[302,278.474,315,374.061,647,486.381]],["content/86",[0,1.949,22,4.891,30,4.166,53,1.321,60,5.553,67,4.014,68,3.101,71,4.742,108,7.02,118,4.724,185,4.347,225,3.055,233,2.048,251,8.132,269,8.763,296,3.078,302,1.964,317,2.156,338,2.465,354,3.33,379,2.946,519,3.066,527,6.684,546,3.33,548,8.285,563,3.262,588,3.969,623,9.355,647,5.226,682,6.957,684,3.161,685,4.533,686,4.037,687,4.533,722,3.554,723,7.326,725,4.5,726,4.376,727,4.869,730,4.209,732,7.175,733,4.956,734,4.437,735,4.437,736,3.223,737,4.014,738,6.957,739,7.552,827,6.714,828,8.97,829,6.424,830,8.189,831,6.424,832,9.787,833,6.184,834,5.258,835,6.714,836,6.714,837,6.714]],["keywords/86",[]],["title/87",[138,528.602,302,278.474,647,486.381]],["content/87",[53,2.979,317,4.864,519,6.917,546,7.512,684,7.13,827,15.147,837,15.147]],["keywords/87",[]],["title/88",[302,324.255,647,566.342]],["content/88",[53,2.877,108,8.286,317,4.697,519,6.68,546,7.254,647,7.472,684,6.886,723,8.647,838,15.431,839,13.994]],["keywords/88",[]],["title/89",[647,566.342,715,678.332]],["content/89",[0,1.815,7,3.014,11,1.976,22,4.632,30,4.13,53,1.23,60,5.63,67,3.739,68,2.888,71,4.491,108,7.563,118,4.474,185,4.049,225,4.407,233,1.908,251,7.78,269,8.383,296,2.867,302,2.833,338,2.296,354,3.102,379,2.744,519,2.856,527,6.394,548,9.602,563,3.039,586,3.438,588,3.697,623,9.751,647,6.82,681,3.326,684,2.944,685,4.222,686,3.76,687,4.222,715,5.927,718,3.223,719,3.897,722,3.311,723,7.893,725,4.192,726,4.076,727,4.536,730,3.921,732,6.794,733,4.617,734,4.133,735,4.133,736,3.002,737,3.739,738,6.588,739,7.151,828,8.495,829,5.984,830,7.755,831,5.984,832,9.268,833,5.76,834,7.586,835,6.254,836,6.254,838,6.598,839,5.984]],["keywords/89",[]],["title/90",[133,600.748,647,566.342]],["content/90",[53,2.845,108,8.193,133,7.837,317,4.644,519,6.604,546,7.172,647,7.388,684,6.808,723,8.55,838,15.257,839,13.836]],["keywords/90",[]],["title/91",[11,263.561,302,244.021,315,327.782,647,426.205]],["content/91",[30,3.996,53,2.341,60,4.206,108,8.677,185,7.706,296,5.456,317,3.822,519,5.436,546,5.903,647,6.081,682,10.416,684,5.603,685,8.036,686,7.157,687,8.036,723,9.055,840,13.455,841,11.632,842,13.455,843,13.455,844,13.455,845,13.455]],["keywords/91",[]],["title/92",[102,360.324,680,638.111,681,506.352]],["content/92",[]],["keywords/92",[]],["title/93",[5,337.289,138,371.322,531,489.296,670,447.51,846,493.718]],["content/93",[5,5.93,30,4.295,53,1.378,60,3.733,66,14.94,69,2.301,71,1.94,74,7.295,138,2.324,162,2.206,269,2.96,302,3.09,317,2.25,354,5.239,470,2.017,519,1.912,531,7.729,546,2.076,596,7.946,623,7.132,628,1.97,670,1.837,684,1.97,704,2.868,705,1.56,706,2.89,717,3.09,742,9.129,776,12.419,777,3.244,783,2.359,847,4.416,848,5.674,849,4.416,850,5.674,851,2.461,852,11.942,853,19.292,854,15.031,855,12.486,856,8.187,857,17.713,858,13.214,859,11.942,860,13.214,861,7.132,862,13.214,863,5.236,864,13.214,865,5.674,866,5.674,867,2.71,868,9.496,869,5.674,870,3.314]],["keywords/93",[]],["title/94",[5,559.092,670,486.423]],["content/94",[5,5.916,30,4.25,53,2.308,60,2.852,66,12.377,69,4.437,71,3.741,74,5.573,269,5.707,302,2.361,317,3.767,354,4.002,470,3.89,519,3.686,531,5.904,546,4.002,596,6.07,623,5.448,628,3.799,670,3.541,684,3.799,704,5.53,705,3.008,706,5.573,717,5.958,742,6.974,776,10.288,777,6.254,783,4.549,847,8.514,849,8.514,851,4.745,852,9.123,853,17.151,854,13.865,855,9.538,856,6.254,857,14.674,858,10.095,859,9.123,860,10.095,861,5.448,862,10.095,863,10.095,864,10.095,871,10.095,872,10.095]],["keywords/94",[]],["title/95",[5,480.154,670,417.745,715,582.559]],["content/95",[5,8.292,30,4.112,53,2.62,60,3.412,69,5.308,71,4.476,185,6.251,269,6.827,296,4.426,317,4.277,470,4.654,519,4.409,531,7.064,546,4.788,623,6.518,628,4.545,670,4.236,684,4.545,685,6.518,686,5.806,687,6.518,704,6.616,705,3.599,706,6.667,715,8.151,717,7.128,719,6.016,776,8.467,777,7.482,783,5.442,847,10.186,849,10.186,851,5.677,855,11.411,856,7.482,873,12.077,874,9.903,875,13.088]],["keywords/95",[]],["title/96",[5,480.154,133,515.929,670,417.745]],["content/96",[5,5.636,30,4.111,53,2.891,69,6.144,133,8.901,269,7.902,317,4.72,470,5.386,519,5.103,546,5.542,628,5.26,670,4.903,684,5.26,704,7.657,705,4.165,706,7.716,717,8.249,776,9.799,777,8.659,783,6.298,847,11.789,849,11.789,851,6.57,871,13.977,872,13.977]],["keywords/96",[]],["title/97",[5,420.749,315,327.782,596,627.48,670,366.061]],["content/97",[5,5.587,30,4.104,53,2.875,69,6.09,269,7.833,315,4.352,317,4.693,470,5.339,519,5.059,546,5.494,596,8.332,628,5.215,670,4.861,682,9.94,684,5.215,704,7.591,705,4.129,706,7.649,717,8.178,776,9.714,777,8.584,783,6.244,847,11.687,849,11.687,851,6.513,876,13.856,877,13.856]],["keywords/97",[]],["title/98",[5,420.749,133,452.098,596,627.48,670,366.061]],["content/98",[30,3.312,53,3.087,133,8.503,317,5.039,470,5.959,519,5.646,531,9.045,546,6.131,596,9.299,670,5.425,684,5.82,783,6.968,847,13.044,849,13.044,851,7.269,876,15.464,877,15.464,878,7.61,879,7.61,880,7.61,881,13.975,882,13.975]],["keywords/98",[]],["title/99",[88,382.545,680,638.111,681,506.352]],["content/99",[]],["keywords/99",[]],["title/100",[88,382.545,315,374.061,851,559.771]],["content/100",[30,4.181,53,2.02,60,4.393,67,4.035,68,4.743,72,5.513,88,5.583,118,3.117,180,3.804,185,4.37,233,3.133,296,3.094,315,2.652,317,3.298,358,5.364,470,3.253,519,3.082,546,3.347,628,3.177,682,6.985,684,3.177,685,4.557,686,4.058,687,4.557,690,4.59,691,5.674,692,4.853,722,5.437,730,6.439,736,5.968,783,3.804,851,6.039,878,4.155,879,4.155,880,4.155,883,6.75,884,12.007,885,7.121,886,7.629,887,7.121,888,7.121,889,7.629,890,6.923,891,7.121,892,9.147,893,7.121,894,6.75,895,6.75,896,6.75,897,6.75,898,6.011,899,7.629,900,6.75,901,7.121,902,6.457,903,7.121,904,6.011,905,4.734,906,5.832,907,5.832,908,5.832,909,6.596,910,4.399,911,4.399,912,7.121,913,7.121]],["keywords/100",[]],["title/101",[88,298.309,138,412.205,429,324.605,851,436.51,914,710.31]],["content/101",[0,3.452,30,4.118,53,2.34,60,2.907,68,3.799,69,4.523,88,5.614,180,4.637,233,2.51,317,3.82,358,4.296,470,3.965,519,3.757,546,4.08,628,3.873,684,3.873,690,5.595,691,6.916,692,5.915,722,4.355,730,5.157,736,5.71,783,4.637,851,6.994,878,5.064,879,5.064,880,5.064,883,8.227,884,12.074,891,8.679,892,10.594,893,8.679,894,8.227,895,8.227,896,8.227,897,8.227,898,7.326,901,8.679,902,7.87,903,8.679,904,7.326,905,5.77,906,7.108,907,7.108,908,7.108,909,8.039,910,5.362,911,5.362,912,8.679,913,8.679,915,10.289,916,9.299,917,7.87]],["keywords/101",[]],["title/102",[88,445.436,851,651.798]],["content/102",[0,2.434,30,4.078,53,2.373,60,2.964,68,3.874,88,5.676,180,4.728,233,2.559,317,3.874,358,4.381,470,4.043,519,3.831,546,4.16,628,3.949,684,3.949,690,5.705,691,7.052,692,6.031,722,4.441,730,5.259,736,5.791,783,4.728,851,7.093,878,5.163,879,5.163,880,5.163,884,12.207,891,8.85,892,10.744,893,8.85,894,8.388,895,8.388,896,8.388,897,8.388,898,7.47,900,8.388,901,8.85,902,8.025,903,8.85,904,7.47,905,5.884,906,7.248,907,7.248,908,7.248,909,8.197,910,5.467,911,5.467,912,8.85,913,8.85,918,8.388,919,9.482,920,9.482,921,10.492]],["keywords/102",[]],["title/103",[88,382.545,133,515.929,851,559.771]],["content/103",[30,4.14,53,2.07,60,4.991,67,4.167,68,4.86,69,5.786,72,6.806,88,5.675,118,3.219,133,6.871,180,3.929,233,2.127,249,5.1,269,4.929,317,3.379,338,2.559,358,3.64,470,3.36,519,3.183,546,3.457,623,4.706,628,3.281,684,3.281,688,5.458,690,4.741,691,5.86,692,5.012,704,4.776,705,2.598,706,4.813,717,5.146,722,3.69,730,4.37,736,5.052,744,6.208,752,8.734,776,9.229,777,5.401,783,3.929,851,6.188,884,10.956,887,7.354,888,7.354,894,6.971,895,6.971,896,6.971,897,6.971,902,10.069,906,6.023,909,6.812,917,6.669,918,6.971,919,7.879,922,8.719,923,8.719,924,8.719,925,8.719,926,11.103,927,8.719,928,8.719,929,8.719,930,8.719,931,8.238]],["keywords/103",[]],["title/104",[102,360.324,680,638.111,681,506.352]],["content/104",[]],["keywords/104",[]],["title/105",[102,360.324,315,374.061,670,417.745]],["content/105",[5,5.4,15,6.065,16,7.176,30,3.881,53,2.811,60,3.783,71,4.963,99,7.764,102,4.052,185,6.932,296,4.908,317,4.588,470,5.16,479,12.725,519,4.889,546,5.31,670,4.698,682,9.718,684,5.04,685,7.228,686,6.438,687,7.228,783,6.035,851,6.295,878,6.59,879,6.59,880,6.59,890,10.982,932,13.392,933,13.392,934,13.392,935,13.392,936,14.513]],["keywords/105",[]],["title/106",[102,315.745,133,452.098,354,413.734,670,366.061]],["content/106",[30,3.948,53,2.925,102,4.304,133,8.058,185,7.364,296,5.213,317,4.775,470,5.482,479,10.129,519,5.194,546,5.64,670,4.99,684,5.354,685,7.678,686,6.839,687,7.678,783,6.41,851,6.687,878,7.001,879,7.001,880,7.001,881,12.856,882,12.856,932,14.226,933,14.226,934,14.226,935,14.226]],["keywords/106",[]],["title/107",[937,1659.47]],["content/107",[0,0.335,1,1.803,4,0.715,6,6.249,7,3.501,11,0.988,13,2.785,14,0.641,15,2.691,19,0.57,25,1.317,28,0.877,30,0.244,38,1.257,43,1.317,60,0.408,71,4.229,72,0.62,74,0.797,80,0.682,85,1.063,93,0.768,96,2.646,112,1.428,114,0.752,118,1.012,120,1.562,122,1.128,123,1.364,130,1.154,137,1.948,138,3.031,154,0.816,172,1.083,177,2.364,180,0.651,182,0.877,209,1.045,223,3.117,232,1.229,254,1.438,258,0.632,281,1.218,291,2.749,296,2.502,303,0.914,311,2.066,313,1.771,314,0.632,315,0.454,317,0.371,321,4.047,322,1.154,345,0.958,346,1.104,355,0.733,361,0.797,396,0.924,425,1.028,428,1.184,429,2.671,440,1.045,466,4.23,468,2.831,470,3.501,480,0.83,501,0.904,527,5.13,535,3.264,544,12.476,546,1.087,549,1.063,555,0.924,556,1.063,557,0.779,559,1.257,563,0.561,567,0.958,570,8.948,571,6.45,572,2.288,573,0.946,575,0.958,584,3.886,586,0.635,587,2.386,592,1.028,603,3.056,615,3.061,619,3.077,621,1.154,624,0.702,626,1.154,629,1.128,633,2.311,637,12.476,640,2.018,644,0.97,645,1.267,646,0.97,648,1.083,662,2.503,668,0.83,686,1.317,705,3.078,717,0.852,718,1.611,750,0.946,757,0.763,777,0.895,846,2.308,861,0.779,867,2.024,874,6.267,917,2.096,937,3.911,938,3.893,939,3.139,940,14.201,941,1.565,942,3.804,943,5.759,944,2.97,945,1.565,946,1.364,947,8.393,948,2.589,949,2.97,950,1.364,951,2.055,952,1.565,953,1.364,954,1.257,955,1.565,956,1.364,957,1.565,958,4.941,959,0.904,960,3.911,961,1.364,962,8.47,963,3.081,964,1.364,965,1.565,966,1.565,967,4.948,968,1.565,969,5.759,970,1.305,971,1.364,972,1.632,973,5.599,974,1.565,975,3.436,976,2.97,977,2.97,978,1.364,979,5.174,980,1.921,981,9.596,982,1.565,983,1.444,984,1.842,985,1.565,986,5.39,987,4.238,988,2.589,989,1.364,990,5.39,991,9.936,992,1.045,993,4.238,994,11.676,995,10.093,996,14.266,997,3.487,998,5.39,999,2.97,1000,3.911,1001,2.477,1002,5.39,1003,4.866,1004,6.439,1005,1.364,1006,1.565,1007,1.565,1008,5.816,1009,1.565,1010,14.716,1011,1.218,1012,2.055,1013,4.238,1014,1.565,1015,1.218,1016,0.946,1017,1.257,1018,3.056,1019,1.565,1020,1.565,1021,1.364,1022,0.877,1023,0.791,1024,1.364,1025,2.248,1026,1.444,1027,0.83,1028,0.512,1029,1.565,1030,1.063,1031,1.184,1032,9.095,1033,1.565,1034,1.184,1035,1.063,1036,1.565,1037,4.195,1038,1.565,1039,1.218,1040,2.311,1041,1.565,1042,1.565,1043,2.97,1044,1.565,1045,1.565,1046,1.565,1047,1.565,1048,1.257,1049,1.565,1050,9.847,1051,1.565,1052,1.565,1053,1.565,1054,1.565,1055,2.386,1056,1.045,1057,1.565,1058,2.97,1059,1.565,1060,1.565,1061,1.444,1062,1.565,1063,1.565,1064,1.063,1065,8.393,1066,1.565,1067,1.754,1068,5.174,1069,1.364,1070,1.364,1071,2.563,1072,1.104,1073,2.74,1074,3.976,1075,0.885,1076,0.958,1077,1.444,1078,2.589,1079,1.565,1080,1.128,1081,2.589,1082,8.199,1083,2.97,1084,1.565,1085,1.983,1086,2.97,1087,3.541,1088,1.565,1089,1.364,1090,1.444,1091,1.565,1092,1.565,1093,2.386,1094,2.97,1095,1.565,1096,2.386,1097,1.364,1098,1.184,1099,1.305,1100,1.154,1101,2.97,1102,1.565,1103,1.364,1104,3.231,1105,1.257,1106,5.39,1107,1.565,1108,9.194,1109,1.565,1110,1.565,1111,1.565,1112,7.399,1113,1.565,1114,4.3,1115,1.565,1116,1.565,1117,1.565,1118,1.565,1119,1.305,1120,1.565,1121,1.565,1122,1.565,1123,1.444,1124,1.565,1125,1.218,1126,1.565,1127,1.565,1128,1.364,1129,1.444,1130,1.154,1131,1.565,1132,1.012,1133,1.565,1134,1.565,1135,1.983,1136,1.045,1137,1.565,1138,1.154,1139,1.565,1140,1.364,1141,1.565,1142,1.184,1143,1.257,1144,2.386,1145,1.565,1146,2.97,1147,2.141,1148,1.983,1149,4.238,1150,2.589,1151,2.477,1152,3.406,1153,0.914,1154,0.914,1155,1.565,1156,1.444,1157,1.083,1158,1.565,1159,0.97]],["keywords/107",[]],["title/108",[102,360.324,680,638.111,681,506.352]],["content/108",[]],["keywords/108",[]],["title/109",[315,374.061,531,696.547,670,417.745]],["content/109",[30,3.891,53,2.826,60,3.815,185,6.99,296,4.949,317,4.614,470,5.204,519,4.931,531,7.899,546,5.354,596,8.121,623,7.289,670,7.086,682,9.772,684,5.083,685,7.289,686,6.492,687,7.289,783,6.086,851,6.348,878,6.646,879,6.646,880,6.646,882,12.205,890,11.074,1160,11.074,1161,12.761,1162,12.761,1163,12.761,1164,12.761,1165,11.074]],["keywords/109",[]],["title/110",[138,528.602,531,696.547,670,417.745]],["content/110",[30,4.281,53,2.028,60,4.407,66,16.647,69,3.73,138,3.767,269,4.798,317,3.311,470,3.27,519,3.099,531,7.544,546,3.365,596,9.381,623,8.421,628,3.194,670,5.473,684,3.194,704,4.649,705,2.529,706,4.685,717,5.009,776,5.95,777,5.258,783,3.824,851,3.989,852,14.099,853,18.539,854,8.019,859,14.099,1160,6.96,1161,8.019,1162,12.187,1163,12.187,1164,12.187,1165,6.96,1166,13.933,1167,12.898,1168,13.978,1169,9.197,1170,8.019,1171,9.197]],["keywords/110",[]],["title/111",[531,811.06,670,486.423]],["content/111",[30,4.229,53,2.567,60,3.312,66,13.767,69,5.153,269,6.627,317,4.19,470,4.517,519,4.28,531,6.857,546,4.648,596,7.049,623,6.327,628,4.412,670,4.112,684,4.412,704,6.422,705,3.493,706,6.471,717,6.919,777,7.263,783,5.282,851,5.51,852,10.594,853,14.75,859,10.594,1160,9.613,1161,11.077,1162,11.077,1163,11.077,1164,11.077,1165,9.613,1166,13.049,1167,16.322,1172,11.077,1173,11.077]],["keywords/111",[]],["title/112",[531,696.547,670,417.745,715,582.559]],["content/112",[30,4.144,53,2.705,60,3.574,69,5.56,185,6.548,269,7.151,296,4.636,317,4.415,470,4.875,519,4.619,531,7.399,546,5.016,623,6.828,628,4.761,670,4.438,684,4.761,685,6.828,686,6.081,687,6.828,704,6.93,705,3.77,706,6.983,715,8.414,717,7.466,719,6.301,776,8.869,777,7.837,783,5.7,851,5.946,873,12.65,1160,10.373,1165,10.373,1172,11.953,1173,11.953,1174,12.65]],["keywords/112",[]],["title/113",[133,515.929,531,696.547,670,417.745]],["content/113",[30,4.111,53,2.891,69,6.144,133,8.901,269,7.902,317,4.72,470,5.386,519,5.103,531,8.175,546,5.542,628,5.26,670,4.903,684,5.26,704,7.657,705,4.165,706,7.716,717,8.249,776,9.799,777,8.659,783,6.298,851,6.57,1160,11.462,1165,11.462,1172,13.207,1173,13.207]],["keywords/113",[]],["title/114",[315,327.782,531,610.369,596,627.48,670,366.061]],["content/114",[30,3.312,53,3.087,317,5.039,470,5.959,519,5.646,531,9.045,546,6.131,596,9.299,670,5.425,682,10.672,684,5.82,783,6.968,851,7.269,878,7.61,879,7.61,880,7.61,882,13.975,890,12.681,1160,12.681,1165,12.681,1175,15.464,1176,15.464]],["keywords/114",[]],["title/115",[133,452.098,531,610.369,596,627.48,670,366.061]],["content/115",[30,4.104,53,2.875,69,6.09,133,8.863,269,7.833,317,4.693,470,5.339,519,5.059,531,8.105,546,5.494,596,8.332,628,5.215,670,4.861,684,5.215,704,7.591,705,4.129,706,7.649,717,8.178,776,9.714,777,8.584,783,6.244,851,6.513,1160,11.362,1165,11.362,1175,13.856,1176,13.856]],["keywords/115",[]],["title/116",[1,184.147,967,897.826]],["content/116",[]],["keywords/116",[]],["title/117",[1177,1567.993]],["content/117",[1,2.606,6,9.92,14,6.864,500,10.133,563,6.007,572,9.045,573,10.133,705,4.608,938,10.133,942,15.013,943,13.044,967,10.013,1012,14.72,1081,14.612,1178,17.092,1179,11.192,1180,13.975,1181,15.464,1182,13.467]],["keywords/117",[]],["title/118",[1,184.147,1028,491.666]],["content/118",[705,6.001,1028,7.141]],["keywords/118",[]],["title/119",[315,435.558,715,678.332]],["content/119",[1,2.546,19,7.57,30,3.235,606,13.651,670,6.726,1183,11.021]],["keywords/119",[]],["title/120",[182,462.079,199,687.77,223,399.297,606,541.881,662,487.1,1184,608.473,1185,407.802]],["content/120",[315,5.951,606,15.82,620,14.491,662,12.126,1186,15.147,1187,18.946]],["keywords/120",[]],["title/121",[1,123.323,32,402.322,56,608.521,203,839.217,305,477.508]],["content/121",[1,1.491,30,4.023,53,1.766,55,11.284,56,10.377,57,8.268,58,6.105,60,3.172,77,5.249,163,8.773,224,7.403,232,7.1,249,6.568,429,3.925,663,9.208,771,7.27,1185,6.017,1188,18.346,1189,11.229,1190,18.896,1191,16.338,1192,15.837,1193,7.45,1194,11.453,1195,15.837,1196,11.229,1197,12.986,1198,12.661,1199,8.268]],["keywords/121",[]],["title/122",[1,111.092,7,322.348,207,755.984,315,262.763,570,427.352,1200,705.587]],["content/122",[1,2.717,7,7.883,14,6.15,114,11.784,120,7.898,163,10.826,181,4.913,227,9.193,315,5.742,334,9.08,526,9.08,542,13.461,570,7.079,581,12.066,975,9.572,1144,12.066,1200,19.074,1201,13.856,1202,13.856,1203,8.497,1204,13.856,1205,13.856,1206,11.687,1207,11.687]],["keywords/122",[]],["title/123",[32,402.322,315,291.693,967,601.275,1008,594.358,1208,928.642]],["content/123",[1,2.889,7,5.339,15,6.276,30,3.452,32,6.003,53,2.179,55,11.705,58,7.534,114,7.22,315,4.352,317,3.557,771,11.836,1008,8.868,1190,11.687,1198,11.078,1206,11.687,1209,8.675,1210,13.856,1211,15.984,1212,12.522,1213,11.687,1214,13.856,1215,13.983,1216,14.616]],["keywords/123",[]],["title/124",[30,156.7,315,291.693,535,396.687,1003,538.413,1217,928.642]],["content/124",[1,2.788,28,8.874,30,2.466,53,2.299,55,10.868,224,6.833,258,6.393,317,3.752,611,12.895,705,6.257,719,7.281,777,9.055,967,9.464,1003,12.876,1008,9.355,1206,12.328,1215,14.479,1218,11.686,1219,14.616,1220,13.478]],["keywords/124",[]],["title/125",[32,402.322,394,608.521,1008,594.358,1213,783.272,1221,928.642]],["content/125",[1,2.015,11,3.832,14,6.734,15,6.871,30,2.56,32,6.573,53,2.386,55,11.657,315,4.765,1003,11.242,1008,12.41,1135,14.032,1183,11.145,1190,12.796,1198,12.129,1212,13.71,1213,12.796,1215,11.604,1222,12.129,1223,12.129,1224,15.171]],["keywords/125",[]],["title/126",[32,362.42,606,595.625,1008,535.41,1125,705.587,1194,480.86,1225,836.54]],["content/126",[1,2.546,53,3.015,55,9.924,1194,11.021,1197,15.722,1215,14.665]],["keywords/126",[]],["title/127",[69,334.514,77,355.789,1003,441.25,1082,504.942,1125,641.921,1185,407.802,1226,761.058]],["content/127",[7,6.892,15,8.101,16,9.584,315,5.618,546,7.091,553,12.356,1003,10.37,1027,10.281,1183,10.281,1186,14.3,1227,17.886,1228,11.198]],["keywords/127",[]],["title/128",[315,262.763,546,331.666,1183,480.86,1185,448.248,1229,836.54,1230,476.829]],["content/128",[30,2.661,236,8.511,315,4.953,317,4.048,546,9.056,606,11.228,620,12.062,647,8.116,1016,10.333,1183,13.13,1186,12.608,1231,15.769,1232,13.732,1233,15.769,1234,15.769,1235,12.931,1236,15.769]],["keywords/128",[]],["title/129",[69,306.829,77,326.343,546,276.766,1082,463.151,1183,401.265,1184,558.114,1185,374.051,1237,698.071]],["content/129",[15,8.48,16,10.033,546,7.424,553,12.935,1183,10.763,1186,14.97,1228,11.723,1238,18.724]],["keywords/129",[]],["title/130",[236,642.757,1016,780.355,1239,1190.871]],["content/130",[30,2.069,71,4.545,85,9.029,223,6.434,282,8.241,313,7.626,527,5.287,607,13.916,615,5.498,619,5.526,644,8.241,653,14.201,705,3.654,715,5.999,737,5.861,981,11.348,992,8.874,994,11.586,1016,12.6,1025,7.049,1040,10.343,1074,13.461,1108,11.586,1119,11.081,1135,14.98,1183,7.049,1240,12.262,1241,12.038,1242,12.879,1243,19.228,1244,12.262,1245,9.58,1246,11.081,1247,10.678,1248,12.262,1249,11.081]],["keywords/130",[]],["title/131",[141,667.893,607,755.225,1016,683.808,1250,1043.535]],["content/131",[1,2.249,7,6.527,141,10.841,546,8.237,607,12.259,719,8.438,981,9.997,1003,9.821,1008,10.841,1016,11.1,1135,12.259,1183,11.942,1194,9.737,1215,12.956,1251,16.939]],["keywords/131",[]],["title/132",[705,413.216,1252,1386.652]],["content/132",[11,3.906,19,6.106,28,9.389,232,8.8,239,9.787,280,10.394,487,7.8,705,5.849,1023,8.472,1218,15.692,1253,12.364,1254,15.464,1255,16.493,1256,12.681,1257,13.975,1258,13.975,1259,12.681,1260,13.044,1261,15.464,1262,15.464,1263,15.464]],["keywords/132",[]],["title/133",[980,972.16,981,818.389]],["content/133",[1,2.602,5,4.361,6,6.216,7,1.899,10,2.68,11,2.104,13,5.931,15,2.232,19,1.946,30,0.832,43,2.369,69,2.166,72,4.642,74,2.721,114,5.637,115,3.023,138,6.308,181,1.748,224,3.894,254,2.586,296,1.806,311,2.604,313,2.232,322,3.941,341,5.272,429,2.911,443,3.054,480,2.833,497,3.358,501,3.086,527,2.125,532,4.454,535,3.558,563,1.915,565,3.941,567,3.27,569,2.518,570,8.389,571,2.486,572,2.883,615,2.21,628,1.855,630,6.83,633,4.157,637,4.042,646,5.598,705,3.223,718,2.031,938,9.313,940,5.84,942,3.77,943,4.157,947,8.329,960,10.817,967,12.382,970,4.454,972,9.781,973,10.427,975,8.784,979,4.292,980,7.583,981,10.186,983,4.929,984,3.313,992,7.828,995,6.371,996,3.77,1016,3.23,1018,6.508,1021,4.657,1028,1.748,1030,3.629,1037,7.025,1040,4.157,1064,3.629,1068,4.292,1074,3.941,1089,10.22,1104,2.68,1119,7.527,1125,4.157,1129,4.929,1130,3.941,1132,3.456,1135,6.028,1138,10.166,1140,4.657,1147,6.508,1156,4.929,1200,4.157,1235,6.83,1245,3.851,1259,4.042,1264,6.028,1265,4.454,1266,9.419,1267,5.323,1268,7.253,1269,7.87,1270,8.451,1271,5.341,1272,4.042,1273,5.341,1274,4.292,1275,4.657,1276,3.191,1277,4.657,1278,4.657,1279,5.341,1280,4.657,1281,5.341,1282,4.157,1283,4.657,1284,4.929,1285,5.341,1286,5.341,1287,5.341,1288,5.341,1289,5.341,1290,3.567,1291,5.341,1292,3.851,1293,4.292,1294,5.341,1295,5.341,1296,5.341,1297,4.657,1298,5.341,1299,4.657,1300,4.657,1301,5.341,1302,5.341,1303,3.697,1304,5.341,1305,5.341,1306,5.341,1307,5.341,1308,4.657,1309,3.12,1310,5.341,1311,5.341,1312,3.086,1313,5.341,1314,5.341]],["keywords/133",[]],["title/134",[1,138.581,6,456.454,28,633.586,981,615.885]],["content/134",[]],["keywords/134",[]],["title/135",[7,534.325,981,818.389]],["content/135",[1,1.735,6,5.714,7,7.655,60,3.691,76,8.179,182,10.672,195,7.71,224,6.107,254,9.222,500,8.56,517,9.025,527,5.633,628,4.917,719,6.507,861,7.051,938,8.56,948,12.344,951,9.798,981,13.087,1003,7.574,1098,10.712,1104,7.103,1132,9.159,1193,8.667,1315,13.064,1316,13.064,1317,11.806,1318,9.619,1319,13.064,1320,15.885,1321,13.064,1322,13.064,1323,13.064,1324,13.064,1325,13.064,1326,13.064]],["keywords/135",[]],["title/136",[1016,1087.418]],["content/136",[1,1.512,30,1.922,74,6.287,138,7.1,195,6.722,497,7.758,544,9.339,546,4.515,548,7.374,555,7.289,630,9.339,715,11.231,958,8.242,981,12.465,1003,10.719,1016,13.84,1027,6.547,1093,9.918,1104,6.192,1152,9.918,1157,11.996,1241,7.13,1267,9.098,1282,9.606,1327,11.389,1328,10.292,1329,8.711,1330,11.389,1331,11.389,1332,11.389,1333,10.292,1334,10.292,1335,10.761,1336,10.292,1337,9.606,1338,11.389,1339,11.389,1340,11.389,1341,11.389,1342,11.389,1343,11.389,1344,9.606]],["keywords/136",[]],["title/137",[1337,1399.695]],["content/137",[7,5.846,182,9.211,715,11.017,967,9.823,975,10.481,981,12.612,1016,9.941,1048,16.885,1098,12.44,1235,12.44,1337,16.354,1345,15.171,1346,15.171,1347,12.129,1348,15.171,1349,11.604,1350,12.129,1351,10.334,1352,15.171,1353,15.171,1354,11.604]],["keywords/137",[]],["title/138",[629,930.412,715,582.559,1003,690.449]],["content/138",[1,2.158,5,6.552,11,5.114,55,8.411,80,7.681,89,10.401,231,9.505,303,10.285,661,10.782,705,4.842,861,8.771,1135,11.761,1268,14.151,1350,12.992,1355,16.25,1356,16.25,1357,16.25,1358,16.25,1359,16.25,1360,16.25]],["keywords/138",[]],["title/139",[321,811.224,975,822.704,1361,811.224]],["content/139",[114,8.915,133,7.412,194,8.671,195,7.407,232,7.67,282,8.435,321,16.239,334,11.21,547,17.588,570,8.739,578,9.806,607,9.083,611,8.55,621,10.035,975,14.439,980,8.799,981,11.487,1037,10.586,1207,10.586,1303,9.413,1362,12.551,1363,12.551,1364,12.551,1365,12.551,1366,12.551,1367,12.551,1368,12.551,1369,10.292,1370,12.551,1371,12.551]],["keywords/139",[]],["title/140",[940,834.902,981,702.841,996,910.886]],["content/140",[]],["keywords/140",[]],["title/141",[1,111.092,236,451.511,940,586.485,980,586.485,981,493.718,996,639.861]],["content/141",[1,2.43,6,6.068,7,2.182,19,2.236,53,0.89,61,7.669,71,4.428,93,3.012,138,4.151,154,3.201,168,3.201,181,5.446,224,2.647,236,3.056,259,8.144,315,1.778,346,4.331,396,3.624,425,4.031,476,4.424,501,3.545,532,8.452,542,15.074,548,3.666,549,4.169,553,6.461,558,3.227,570,7.087,573,3.71,619,2.551,626,7.477,631,3.857,635,5.794,637,9.798,644,11.761,663,9.798,686,2.722,734,4.941,750,6.128,757,2.991,861,3.056,867,2.931,940,15.861,967,6.055,972,3.373,973,11.377,975,3.912,979,13.375,980,3.97,981,5.52,992,11.115,996,9.139,1000,5.662,1018,14.294,1025,3.255,1048,4.931,1069,5.35,1073,5.662,1078,5.35,1087,4.031,1100,4.527,1105,10.405,1123,5.662,1138,4.527,1147,4.424,1200,4.776,1247,8.144,1264,6.769,1284,5.662,1312,3.545,1372,6.136,1373,5.35,1374,6.136,1375,6.136,1376,15.035,1377,16.644,1378,6.136,1379,10.135,1380,6.136,1381,5.662,1382,6.136,1383,6.136,1384,3.71,1385,6.136,1386,5.35,1387,6.136,1388,4.169,1389,9.335,1390,6.136,1391,6.136,1392,5.35,1393,5.117,1394,6.136,1395,6.136,1396,4.931,1397,5.117,1398,5.662,1399,6.136,1400,5.35,1401,5.35,1402,5.662]],["keywords/141",[]],["title/142",[1,158.147,6,520.9,972,709.345]],["content/142",[]],["keywords/142",[]],["title/143",[972,988.467]],["content/143",[1,1.977,19,5.878,237,9.64,394,9.756,535,6.36,538,10.142,540,10.142,574,9.64,598,13.455,637,12.209,646,10.006,692,8.558,757,7.866,963,9.224,972,8.868,1025,8.558,1037,12.558,1209,9.321,1393,17.312,1403,13.455,1404,18.101,1405,16.134,1406,16.134,1407,16.134,1408,16.134,1409,14.888,1410,14.888,1411,14.888]],["keywords/143",[]],["title/144",[182,841.91,967,897.826]],["content/144",[1,2.484,7,6.257,10,6.328,25,5.594,43,5.594,72,4.994,73,9.816,80,5.5,114,10.547,120,6.633,277,9.092,314,5.09,440,8.422,475,7.535,544,9.543,546,6.438,563,4.52,570,5.945,661,10.774,715,5.693,790,9.304,967,12.11,975,11.218,978,10.996,980,8.159,1056,8.422,1067,7.448,1087,8.286,1104,8.829,1135,8.422,1147,9.092,1183,9.334,1185,6.236,1228,7.286,1267,9.96,1268,10.134,1412,11.637,1413,10.996,1414,8.04,1415,10.517,1416,11.637,1417,11.637,1418,11.637,1419,11.637]],["keywords/144",[]],["title/145",[980,972.16,981,818.389]],["content/145",[1,1.721,6,7.647,19,5.116,80,6.125,112,6.752,114,6.752,181,4.594,182,7.867,236,6.994,313,5.869,314,5.668,429,4.529,535,5.535,572,10.225,624,6.302,705,3.861,715,6.339,750,8.491,938,8.491,940,12.256,963,8.028,975,12.077,979,11.284,980,12.256,981,11.676,996,13.371,1072,9.911,1203,7.946,1267,6.377,1420,10.929,1421,10.36,1422,12.958,1423,12.958,1424,12.958,1425,8.293,1426,10.36,1427,12.958,1428,12.958]],["keywords/145",[]],["title/146",[1003,962.136]],["content/146",[1,2.546,80,9.062,572,11.214,759,13.651,981,11.316,1003,11.116]],["keywords/146",[]],["title/147",[972,988.467]],["content/147",[1,2.487,705,5.58,958,13.551,972,13.143,1180,16.921,1265,16.921,1429,18.724]],["keywords/147",[]],["title/148",[138,615.505,973,1137.075]],["content/148",[1,1.512,6,4.982,7,4.389,10,6.192,11,2.876,19,4.497,30,3.12,53,1.791,138,5.055,141,7.289,317,2.924,429,3.981,485,7.289,538,7.758,540,7.758,542,11.778,563,4.424,570,5.818,572,9.356,715,5.571,777,9.909,961,10.761,967,10.356,973,13.116,1003,6.603,1023,10.128,1069,10.761,1071,7.463,1078,10.761,1147,8.898,1245,8.898,1389,8.898,1426,9.105,1430,21.9,1431,18.487,1432,18.487,1433,11.389,1434,11.389,1435,12.342,1436,12.342,1437,10.761,1438,5.975,1439,12.342,1440,9.606,1441,9.105]],["keywords/148",[]],["title/149",[1012,1244.581]],["content/149",[1,2.402,6,7.912,80,8.55,258,7.912,314,7.912,705,5.39,846,10.676,861,9.763,1012,16.213,1178,15.752]],["keywords/149",[]],["title/150",[233,338.213,1442,695.013]],["content/150",[]],["keywords/150",[]],["title/151",[1443,1181.561]],["content/151",[0,1.865,5,3.24,10,2.569,11,3.502,12,2.246,14,2.097,24,3.567,30,4.303,44,9.2,53,1.264,54,1.873,68,2.967,80,2.233,88,2.582,112,2.462,168,2.671,177,8.051,180,3.621,210,6.565,232,3.603,233,4.712,248,7.143,282,3.176,296,1.732,301,2.927,302,2.893,305,2.43,316,2.869,317,1.213,338,4.972,354,1.873,358,3.355,379,1.658,429,5.272,555,5.143,558,2.693,615,5.546,616,5.722,619,2.129,624,6.744,665,2.991,668,2.716,718,3.311,757,2.496,851,2.221,939,5.54,1030,3.479,1031,3.875,1193,3.135,1425,3.024,1442,2.368,1444,3.778,1445,7.919,1446,3.875,1447,4.725,1448,4.725,1449,4.27,1450,4.27,1451,3.985,1452,3.985,1453,4.27,1454,8.546,1455,8.036,1456,10.486,1457,4.725,1458,10.486,1459,8.036,1460,10.486,1461,4.979,1462,3.42,1463,3.264,1464,4.115,1465,2.693,1466,4.725,1467,3.778,1468,3.024,1469,2.958,1470,4.725,1471,4.725,1472,4.725,1473,4.725,1474,4.725,1475,3.985,1476,4.27,1477,4.725,1478,4.27,1479,4.27]],["keywords/151",[]],["title/152",[233,290.461,681,506.352,1480,910.886]],["content/152",[0,2.7,7,6.257,9,9.256,11,2.939,22,4.449,23,4.692,24,5.393,30,2.74,44,13.429,53,1.83,60,3.288,119,7.721,178,5.627,181,4.126,233,4.562,260,5.833,305,5.984,311,6.148,315,3.655,338,6.249,358,4.859,429,4.068,619,5.244,623,6.281,635,7.21,681,4.948,939,6.148,1022,7.066,1191,9.543,1193,7.721,1241,11.71,1454,12.921,1480,8.901,1481,10.167,1482,10.517,1483,8.901,1484,6.807,1485,11.637,1486,11.637,1487,10.517,1488,9.816]],["keywords/152",[]],["title/153",[24,300.909,44,692.358,338,441.213]],["content/153",[7,4.389,24,5.781,30,1.922,44,7.556,68,4.205,78,5.935,80,5.383,88,3.658,115,6.984,165,7.289,181,4.038,198,4.253,231,6.661,233,3.901,234,6.547,248,7.758,260,5.708,300,7.13,302,2.663,317,2.924,338,6.2,341,7.208,429,3.981,481,7.758,568,10.292,570,5.818,619,5.132,917,8.711,938,7.463,1025,6.547,1098,9.339,1193,7.556,1282,9.606,1283,10.761,1454,11.05,1480,8.711,1489,7.208,1490,10.292,1491,8.711,1492,7.13,1493,9.105,1494,12.295,1495,11.389,1496,9.606,1497,7.463,1498,11.389,1499,11.389,1500,9.105,1501,10.292,1502,9.606,1503,8.711]],["keywords/153",[]],["title/154",[1442,695.013,1454,957.957]],["content/154",[1,1.104,7,3.202,11,4.354,24,3.66,25,3.995,30,2.599,44,5.514,53,1.996,60,4.351,68,4.687,76,5.203,88,2.67,102,2.515,172,6.233,177,3.95,178,6.137,180,6.94,224,3.885,233,4.775,258,5.552,302,1.943,313,3.764,314,3.635,338,4.521,342,10.149,358,5.3,379,2.915,429,4.437,466,5.149,497,5.661,586,3.653,589,7.01,615,3.726,619,3.745,624,4.042,691,5.586,692,7.296,694,8.769,695,8.769,696,9.709,697,12.828,698,9.709,699,9.709,718,3.424,939,4.391,1039,7.01,1096,7.237,1241,7.947,1454,10.64,1481,5.203,1482,11.471,1504,8.311,1505,8.311,1506,6.357,1507,13.76,1508,8.311,1509,5.319,1510,5.046,1511,8.311,1512,11.471,1513,6.357,1514,8.311,1515,8.531,1516,9.52,1517,8.311,1518,8.311,1519,4.66]],["keywords/154",[]],["title/155",[233,338.213,1520,722.583]],["content/155",[1,2.322,14,5.752,24,5.041,68,4.784,99,7.513,180,5.839,233,3.16,258,5.668,260,6.495,311,6.846,313,5.869,314,5.668,338,3.804,350,11.006,479,9.226,613,6.302,692,10.049,992,9.378,1076,8.597,1154,8.201,1328,11.71,1442,8.762,1497,8.491,1507,13.878,1520,9.11,1521,12.958,1522,8.491,1523,9.541,1524,12.958,1525,7.648,1526,7.792,1527,9.911,1528,12.958,1529,12.958,1530,11.71,1531,12.958]],["keywords/155",[]],["title/156",[1,101.068,11,192.217,15,344.698,233,185.627,429,266.027,1442,381.455,1515,511.506]],["content/156",[0,3.895,1,2.41,5,4.923,10,4.296,11,3.084,15,7.603,16,6.542,19,4.82,22,3.02,23,3.185,24,4.303,30,2.518,53,2.347,54,4.84,79,3.542,80,3.734,88,4.793,102,3.694,168,4.466,178,5.903,181,2.801,225,2.874,233,2.978,248,5.382,301,7.564,302,2.855,313,3.578,314,3.456,340,3.911,379,2.771,429,5.868,563,4.742,619,5.501,624,3.842,661,5.241,718,3.255,736,3.032,830,5.056,995,11.413,1027,4.541,1055,6.88,1159,5.31,1193,5.241,1290,5.717,1425,5.056,1426,9.761,1442,6.119,1445,3.693,1454,10.309,1461,4.894,1463,5.458,1494,7.487,1496,6.663,1501,7.139,1507,9.778,1526,4.75,1532,7.9,1533,7.9,1534,8.99,1535,7.9,1536,7.9,1537,7.814,1538,6.316,1539,6.663,1540,9.761,1541,5.817,1542,12.209,1543,9.338,1544,7.9,1545,12.209,1546,14.922,1547,6.316,1548,7.9,1549,6.663,1550,7.139]],["keywords/156",[]],["title/157",[527,597.909,1276,897.826]],["content/157",[]],["keywords/157",[]],["title/158",[1551,1659.47]],["content/158",[88,4.611,118,5.3,165,9.187,198,5.361,291,5.164,313,6.501,345,9.523,429,6.54,550,9.406,615,6.435,635,13.663,668,8.251,670,5.035,686,6.9,718,5.914,914,10.979,1025,8.251,1266,12.5,1425,9.187,1490,12.972,1552,14.354,1553,14.354,1554,9.406,1555,14.958,1556,13.776,1557,14.354,1558,9.406,1559,8.892]],["keywords/158",[]],["title/159",[950,1567.993]],["content/159",[0,1.75,6,1.919,15,1.987,22,1.677,25,2.109,29,2.989,31,2.691,33,2.159,61,3.598,76,2.747,80,2.074,82,2.777,88,3.187,154,8.768,177,2.086,180,3.399,181,1.556,182,2.664,198,6.116,236,2.368,243,3.701,254,2.302,280,5.07,288,6.502,291,1.579,295,4.828,302,2.32,305,9.907,313,6.01,314,1.919,315,1.378,321,2.989,353,3.231,429,1.534,467,3.356,481,5.139,487,2.213,527,1.892,528,4.828,533,11.228,534,5.564,535,1.874,556,5.554,572,2.567,588,4.69,597,9.447,601,2.777,613,2.134,615,5.949,632,5.77,640,3.231,641,3.031,645,2.029,649,6.424,650,3.031,657,3.124,668,4.336,670,4.132,705,1.308,717,2.59,718,1.808,755,2.949,846,2.59,861,8.838,942,5.77,959,2.747,962,3.598,964,4.146,980,5.289,984,7.916,1025,5.703,1028,5.5,1031,6.186,1035,3.231,1147,3.428,1194,2.522,1203,2.691,1209,2.747,1228,2.747,1241,2.747,1272,8.136,1277,4.146,1303,5.657,1309,2.777,1329,7.589,1344,6.363,1349,3.356,1361,2.989,1438,2.302,1445,6.203,1461,2.718,1491,9.009,1492,4.723,1497,2.875,1515,2.949,1530,6.817,1539,3.701,1554,2.875,1560,4.388,1561,4.388,1562,5.894,1563,9.935,1564,4.388,1565,3.598,1566,4.388,1567,3.508,1568,4.388,1569,4.388,1570,13.268,1571,6.363,1572,5.211,1573,4.388,1574,4.388,1575,4.388,1576,4.388,1577,3.508,1578,8.64,1579,3.965,1580,3.428,1581,4.388,1582,4.388,1583,4.388,1584,7.543,1585,4.388,1586,4.388,1587,4.388,1588,6.212,1589,4.388,1590,4.388,1591,4.388,1592,4.388,1593,4.388,1594,4.388,1595,4.388,1596,3.356,1597,3.965,1598,3.508,1599,3.428,1600,3.701,1601,3.965,1602,3.965,1603,3.701,1604,4.943,1605,3.124,1606,4.388,1607,4.388,1608,4.388,1609,4.388,1610,3.701,1611,4.388,1612,3.965,1613,3.701,1614,4.388,1615,4.388,1616,3.231,1617,3.701,1618,4.388,1619,3.176,1620,2.808,1621,3.821]],["keywords/159",[]],["title/160",[30,141.158,305,430.149,481,569.853,533,469.106,1228,523.739,1572,577.917]],["content/160",[22,5.204,30,3.546,33,6.699,53,1.434,71,5.045,72,3.912,102,2.758,162,5.735,177,6.47,198,8.631,208,8.238,212,6.127,225,3.316,232,4.087,461,4.216,466,5.648,470,5.245,567,6.048,615,4.087,635,10.092,665,8.615,670,6.782,718,7.444,861,4.92,867,4.719,870,8.615,951,10.209,984,6.127,1114,6.598,1393,8.238,1425,5.835,1489,8.615,1492,5.707,1520,4.75,1526,5.482,1537,5.835,1541,6.712,1554,8.92,1563,7.689,1617,13.74,1622,9.116,1623,9.116,1624,9.116,1625,13.612,1626,8.238,1627,9.116,1628,9.116,1629,8.238,1630,7.288,1631,9.116,1632,8.238,1633,7.288,1634,9.116,1635,9.116,1636,8.238,1637,7.122,1638,6.973,1639,7.689]],["keywords/160",[]],["title/161",[15,172.995,71,141.564,115,234.223,177,317.875,181,135.43,198,142.648,288,250.287,622,212.497,670,133.985,1104,207.681,1228,239.133,1491,292.153,1493,305.376,1534,281.243,1572,263.87,1610,322.162,1640,381.954]],["content/161",[6,3.834,7,3.378,15,3.97,22,6.773,29,5.972,71,3.249,72,3.762,95,4.367,115,5.376,154,4.956,162,3.693,176,6.455,177,6.283,181,6.282,198,7.463,232,3.93,288,11.609,302,2.05,317,2.251,354,3.476,527,5.7,529,6.455,533,4.916,615,3.93,622,4.877,649,5.676,670,6.669,861,4.732,874,10.839,951,6.575,984,8.884,1001,7.922,1027,5.039,1028,3.108,1040,7.394,1068,7.634,1071,5.744,1080,6.849,1103,8.283,1104,7.187,1114,6.344,1194,7.598,1228,8.276,1230,4.997,1272,7.189,1329,6.705,1361,5.972,1414,6.056,1467,7.009,1491,6.705,1492,5.488,1493,7.009,1534,6.455,1537,5.611,1601,7.922,1604,8.662,1610,7.394,1617,7.394,1629,7.922,1636,7.922,1641,8.766,1642,13.218,1643,8.283,1644,8.766,1645,8.766,1646,11.149,1647,9.566,1648,7.922,1649,8.766,1650,8.766,1651,8.283,1652,7.922,1653,7.922,1654,8.766,1655,7.922,1656,6.705]],["keywords/161",[]],["title/162",[118,281.007,162,320.646,180,342.942,291,273.791,1468,487.1,1572,525.771,1657,582.126]],["content/162",[0,4.204,2,7.641,4,4.539,7,3.533,15,6.192,23,5.512,41,5.028,54,3.635,118,6.035,181,3.251,198,5.105,277,7.163,291,4.918,305,9.316,317,2.354,340,10.061,527,7.048,533,10.16,555,8.749,563,3.561,586,4.03,597,9.733,624,4.459,649,8.851,984,6.162,1005,8.663,1035,6.751,1076,9.07,1242,7.013,1292,7.163,1461,10.126,1468,12.403,1484,7.996,1562,7.163,1563,7.733,1567,7.33,1597,8.286,1602,8.286,1604,6.008,1657,7.013,1658,9.168,1659,9.168,1660,9.168,1661,8.286,1662,8.286,1663,8.663,1664,9.168,1665,9.168,1666,10.456,1667,12.354,1668,13.67,1669,9.168,1670,8.286,1671,9.168,1672,9.168,1673,9.168,1674,7.518,1675,8.286]],["keywords/162",[]],["title/163",[198,223.682,556,441.009,867,310.015,1309,379.067,1468,383.334,1492,374.978,1559,371.053,1572,413.767,1676,541.256,1677,478.851]],["content/163",[13,7.884,23,6.323,29,7.543,80,5.234,96,5.891,118,4.089,178,5.354,198,5.856,232,4.965,305,5.694,307,7.884,334,7.256,341,7.008,353,8.154,363,7.442,379,3.884,396,7.087,434,6.596,533,8.794,556,8.154,573,7.256,603,12.252,718,6.461,736,4.25,757,5.85,951,8.305,1028,3.926,1228,6.933,1297,10.463,1309,7.008,1468,7.087,1492,9.818,1503,8.47,1554,7.256,1559,6.86,1572,7.65,1588,6.933,1633,8.853,1657,8.47,1674,9.08,1676,10.007,1677,8.853,1678,11.073,1679,9.643,1680,11.073,1681,15.357,1682,11.073,1683,11.073,1684,10.833,1685,9.643,1686,10.007,1687,11.073,1688,9.34,1689,9.34,1690,7.442,1691,11.073,1692,11.073,1693,10.007]],["keywords/163",[]],["title/164",[198,312.421,527,360.707,870,529.45,1572,577.917,1694,836.54,1695,836.54]],["content/164",[224,9.183,313,8.897,314,8.593,667,8.023]],["keywords/164",[]],["title/165",[535,275.401,646,433.31,705,192.121,1159,433.31,1242,493.134,1572,445.394,1588,403.64,1596,493.134,1696,582.628]],["content/165",[1,1.641,120,7.044,181,6.845,198,8.39,232,8.655,253,8.943,290,6.439,535,8.247,541,9.452,557,9.136,572,7.228,648,9.268,705,3.682,1022,7.503,1028,4.381,1245,9.654,1351,8.418,1373,11.676,1489,7.821,1492,10.597,1537,7.909,1588,10.597,1596,9.452,1604,11.091,1630,9.88,1675,11.167,1693,11.167,1696,11.167,1697,11.167,1698,11.167,1699,10.423,1700,12.357,1701,12.357,1702,12.357,1703,8.001,1704,11.676,1705,12.357]],["keywords/165",[]],["title/166",[1443,1181.561]],["content/166",[]],["keywords/166",[]],["title/167",[1223,952.113,1706,1190.871,1707,1125.225]],["content/167",[0,2.624,1,2.114,2,9.344,4,9.895,6,6.962,10,6.149,23,6.417,118,4.175,131,8.184,165,7.238,178,5.467,223,5.933,254,5.933,291,5.726,340,5.599,528,7.238,533,8.925,569,5.777,570,5.777,586,4.97,644,10.697,649,7.322,670,3.967,705,3.37,718,4.659,846,6.674,940,7.928,958,8.184,972,9.48,988,10.685,1035,8.327,1039,9.538,1076,7.503,1153,7.157,1468,7.238,1537,7.238,1571,9.538,1598,9.041,1708,9.538,1709,14.383,1710,6.934,1711,11.308,1712,9.538,1713,11.308,1714,8.052,1715,11.308,1716,10.219,1717,11.308,1718,8.052,1719,11.308]],["keywords/167",[]],["title/168",[1,220.377]],["content/168",[0,2.642,1,2.124,2,5.324,4,5.639,6,4.982,22,4.354,23,4.592,25,5.475,31,6.984,118,5.906,176,8.386,198,7.488,291,5.754,295,7.289,305,5.856,315,3.577,335,4.777,340,5.639,533,6.387,555,7.289,586,5.006,622,6.336,670,5.611,856,7.056,874,9.339,958,8.242,1025,11.525,1142,9.339,1153,7.208,1179,8.242,1194,6.547,1228,7.13,1264,8.242,1312,7.13,1388,11.778,1468,13.517,1492,10.014,1502,9.606,1554,7.463,1604,7.463,1633,9.105,1720,7.463,1721,10.292,1722,11.389,1723,10.292,1724,13.491]],["keywords/168",[]],["title/169",[74,657.396,527,711.497]],["content/169",[]],["keywords/169",[]],["title/170",[88,533.074]],["content/170",[0,2.661,5,4.625,23,4.625,71,4.251,88,7.508,133,4.969,138,5.092,162,4.833,177,7.641,223,6.018,225,5.847,229,6.191,295,10.289,315,3.603,429,7.402,611,7.814,668,6.593,851,5.392,867,5.937,870,7.26,939,6.06,1153,7.26,1159,7.709,1223,9.171,1241,7.181,1425,7.341,1426,9.171,1444,9.171,1519,9.015,1520,5.977,1522,7.516,1703,7.427,1725,14.527,1726,11.471,1727,8.962,1728,9.675,1729,8.962,1730,18.559,1731,9.171,1732,8.042,1733,9.406,1734,11.471,1735,9.675]],["keywords/170",[]],["title/171",[302,388.052]],["content/171",[0,3.151,1,0.726,7,2.107,12,2.599,22,5.191,23,4.7,24,1.577,30,3.258,53,0.86,71,2.027,79,4.074,82,5.751,118,3.355,137,2.724,162,2.304,168,3.091,198,2.042,224,2.556,225,4.241,237,5.883,254,2.869,291,1.967,295,3.5,296,4.272,302,5.159,304,4.978,317,1.404,340,2.707,355,2.776,356,2.675,379,1.918,429,4.747,440,3.958,450,4.183,479,3.894,527,5.027,535,2.336,557,7.329,597,3.894,615,4.074,619,4.095,668,3.143,670,4.089,681,2.325,718,5.595,830,3.5,846,3.227,867,4.703,962,4.484,991,4.762,1025,3.143,1055,4.762,1148,3.958,1153,3.461,1228,3.424,1267,2.691,1303,6.815,1329,4.183,1445,8.055,1461,3.388,1465,6.645,1468,5.816,1469,10.179,1492,3.424,1554,3.583,1598,9.321,1603,4.612,1604,7.639,1632,8.212,1633,4.372,1638,6.95,1639,4.612,1652,4.942,1684,3.778,1718,3.894,1736,5.468,1737,4.484,1738,5.468,1739,9.087,1740,5.468,1741,5.468,1742,5.468,1743,9.833,1744,10.535,1745,4.372,1746,5.468,1747,6.576,1748,4.942,1749,5.468,1750,4.942,1751,5.468,1752,4.183,1753,5.468,1754,5.926,1755,5.926,1756,5.468,1757,4.942,1758,5.926,1759,5.468,1760,5.468,1761,3.675,1762,4.183,1763,4.942,1764,4.942,1765,4.942,1766,4.942,1767,4.942,1768,4.942,1769,4.942,1770,4.942,1771,3.171,1772,4.942,1773,4.612,1774,4.942,1775,4.942,1776,4.942,1777,4.942,1778,4.942,1779,5.468,1780,4.942,1781,4.612,1782,5.468,1783,5.926,1784,5.468,1785,5.468,1786,5.468,1787,5.468,1788,5.468,1789,4.612]],["keywords/171",[]],["title/172",[233,338.213,616,987.311]],["content/172",[0,3.603,11,4.97,24,5.21,44,7.246,54,4.33,88,4.988,177,7.381,210,9.722,232,6.962,233,5.54,282,7.341,301,6.766,302,4.225,305,5.616,316,6.631,338,5.304,429,6.316,555,6.99,558,6.226,615,6.962,616,11.057,619,4.922,624,5.312,665,6.913,668,6.278,939,9.546,1030,8.042,1193,7.246,1444,8.732,1445,8.447,1446,8.956,1449,9.87,1450,9.87,1452,9.212,1453,9.87,1454,7.545,1468,6.99,1469,6.838,1478,9.87,1790,10.922]],["keywords/172",[]],["title/173",[670,582.125]],["content/173",[5,4.906,102,6.546,210,7.619,231,7.118,237,7.879,254,6.385,291,6.025,299,10.975,302,2.846,315,3.822,335,7.025,429,6.694,575,8.074,596,7.317,665,12.121,670,8.49,1017,10.597,1025,6.995,1075,7.462,1425,7.788,1465,6.936,1558,10.975,1637,9.507,1638,9.308,1639,10.264,1791,12.169,1792,13.187,1793,12.169,1794,14.127,1795,12.169,1796,12.169]],["keywords/173",[]],["title/174",[22,398.93,23,420.749,670,366.061,1771,605.026]],["content/174",[1,2.814,155,7.337,224,8.179,535,7.473,631,11.917,645,8.091,681,7.439,1153,11.073,1230,9.972,1797,8.715,1798,20.597]],["keywords/174",[]],["title/175",[33,816.647]],["content/175",[1,2.564,11,3.121,30,2.085,33,8.33,41,7.101,78,6.439,80,5.841,88,3.969,181,6.845,225,4.495,248,8.418,291,6.089,302,2.89,313,7.666,335,5.183,527,5.328,586,5.431,615,5.54,619,5.568,639,8.199,718,5.091,1022,7.503,1071,8.097,1154,7.821,1276,8.001,1443,8.798,1461,7.655,1484,12.723,1515,8.305,1519,6.929,1667,11.167,1747,8.943,1799,11.167,1800,12.357,1801,8.097,1802,9.88,1803,12.357,1804,12.357,1805,11.167]],["keywords/175",[]],["title/176",[30,209.675,89,383.334,137,298.343,291,352.355,429,209.356,1555,478.851,1806,413.767]],["content/176",[1,2.102,6,3.103,7,5.366,11,3.517,30,2.671,41,2.609,55,3.672,68,2.619,74,3.916,88,2.279,89,4.54,96,5.971,118,6.772,137,8.591,165,11.739,177,3.372,181,2.515,198,5.201,230,3.556,232,3.18,233,1.73,260,8.645,291,5.01,302,2.624,304,3.886,305,5.771,310,5.983,315,2.228,321,4.832,429,6.963,443,4.395,466,4.395,551,6.411,572,4.149,615,6.243,619,5.057,624,3.45,628,2.67,635,8.627,658,4.441,661,4.707,668,6.451,670,2.488,718,5.737,719,3.534,870,4.49,914,8.585,1070,6.703,1144,6.178,1207,5.983,1414,4.901,1415,6.411,1445,5.247,1461,4.395,1469,4.441,1481,4.441,1526,4.266,1555,12.657,1556,11.657,1718,5.051,1806,10.937,1807,11.745,1808,7.094,1809,7.688,1810,7.094,1811,7.094,1812,5.426,1813,5.672,1814,7.094,1815,5.983,1816,6.411,1817,7.094,1818,7.688,1819,5.983,1820,7.688,1821,7.094,1822,6.411,1823,6.411,1824,7.094,1825,11.223,1826,7.094,1827,7.094,1828,7.094,1829,7.094]],["keywords/176",[]],["title/177",[856,1028.082]],["content/177",[6,6.699,11,3.868,22,5.855,30,2.584,137,7.629,177,7.28,181,5.431,198,5.72,260,7.677,429,5.354,596,9.21,668,8.804,757,8.092,856,9.489,963,9.489,1056,11.085,1468,9.803,1523,11.278,1526,9.21,1605,10.905,1685,13.338,1718,10.905,1812,11.715,1813,12.245,1830,12.919,1831,13.841,1832,12.245]],["keywords/177",[]],["title/178",[1276,897.826,1443,987.311]],["content/178",[]],["keywords/178",[]],["title/179",[1276,897.826,1833,1108.641]],["content/179",[1,2.621,11,1.472,24,1.68,25,2.801,30,4.369,41,2.143,44,3.866,53,0.916,88,1.872,95,4.77,102,4.272,108,2.639,118,5.213,177,2.77,178,2.817,198,2.176,232,2.613,291,6.658,302,2.851,304,3.192,314,2.549,335,4.016,338,1.711,345,3.866,350,3.242,354,2.31,355,2.958,497,3.969,563,2.263,572,3.408,601,3.688,615,4.293,619,2.626,645,2.695,647,2.38,670,2.044,680,3.122,681,4.072,718,3.946,722,2.466,1142,4.778,1153,3.688,1230,3.321,1267,2.868,1312,5.996,1484,3.408,1526,3.504,1554,3.818,1559,5.933,1604,3.818,1684,4.026,1797,4.77,1801,9.252,1802,4.659,1805,5.266,1833,4.659,1834,4.085,1835,8.077,1836,5.827,1837,5.827,1838,5.827,1839,5.827,1840,3.268,1841,5.827,1842,5.827]],["keywords/179",[]],["title/180",[302,324.255,1442,695.013]],["content/180",[]],["keywords/180",[]],["title/181",[1443,1181.561]],["content/181",[0,2.962,1,1.443,11,1.253,12,2.357,19,3.306,22,4.154,29,5.704,30,4.311,32,2.149,48,3.794,50,4.067,53,0.78,78,4.363,82,8.08,118,4.714,168,2.804,178,5.253,180,2.235,198,4.058,209,6.06,230,2.486,233,2.65,254,2.602,282,3.333,291,3.909,302,4.591,316,3.011,353,3.652,355,2.517,379,1.74,392,3.589,557,8.889,567,3.291,573,3.25,575,5.555,615,3.754,616,3.531,624,2.412,636,7.291,640,3.652,670,1.74,680,2.658,705,3.238,718,5.26,757,2.62,759,3.531,938,3.25,939,2.62,997,3.477,1075,3.041,1182,4.319,1309,3.139,1312,5.242,1318,3.652,1333,4.482,1369,4.067,1425,3.174,1442,2.486,1444,3.965,1445,3.914,1461,6.732,1462,3.589,1463,3.426,1526,2.982,1547,3.965,1558,7.12,1559,5.187,1604,3.25,1616,3.652,1681,7.062,1688,4.183,1732,8.95,1747,6.06,1812,3.794,1832,3.965,1833,3.965,1843,8.373,1844,4.96,1845,4.96,1846,4.96,1847,4.96,1848,9.074,1849,7.567,1850,5.375,1851,4.96,1852,4.183,1853,5.375,1854,4.96,1855,3.965,1856,5.375,1857,3.794,1858,4.96,1859,4.96,1860,4.183,1861,4.96]],["keywords/181",[]],["title/182",[302,324.255,681,589.596]],["content/182",[11,3.399,12,6.396,14,2.99,15,3.051,16,3.609,20,5.262,23,4.342,24,1.942,30,1.817,46,4.527,53,1.694,55,5.575,60,4.343,68,5.677,108,4.878,118,2.487,177,7.307,180,3.035,217,6.476,225,3.917,229,3.635,231,6.299,233,4.101,249,6.299,296,4.931,302,4.836,311,3.558,313,3.051,314,2.946,317,2.765,338,1.977,354,2.67,355,6.83,358,4.497,371,6.816,379,3.778,535,2.877,563,2.616,572,3.94,573,4.414,586,2.96,619,3.035,635,9.525,681,2.864,705,4.582,718,2.775,736,4.133,737,3.219,939,7.109,1025,6.191,1027,3.872,1203,4.13,1241,4.217,1465,3.839,1480,5.152,1481,4.217,1483,10.293,1503,5.152,1588,9.626,1605,4.796,1688,5.681,1761,4.527,1862,5.385,1863,12.161,1864,8.238,1865,6.087,1866,6.087,1867,6.087,1868,9.733,1869,10.77,1870,10.77,1871,13.457,1872,13.457,1873,13.457,1874,10.77,1875,9.733,1876,8.831,1877,9.733,1878,5.385,1879,6.735,1880,6.735,1881,6.087,1882,6.087,1883,6.735,1884,6.735,1885,4.217]],["keywords/182",[]],["title/183",[233,290.461,291,428.417,302,278.474]],["content/183",[14,8.51,233,4.676,311,10.129,313,8.684,314,8.386,1886,19.173]],["keywords/183",[]],["title/184",[291,428.417,302,278.474,1520,620.562]],["content/184",[14,7.141,177,7.646,180,7.249,233,3.924,291,5.787,296,5.895,302,3.762,311,8.499,313,9.113,314,8.801,461,7.44,615,7.212,619,7.249,705,5.996,1442,8.063,1461,9.966,1520,10.485,1771,9.327]],["keywords/184",[]],["title/185",[291,334.08,302,217.154,755,624.139,939,490.603,1445,434.133]],["content/185",[]],["keywords/185",[]],["title/186",[302,278.474,1267,586.043,1616,876.87]],["content/186",[]],["keywords/186",[]],["title/187",[237,675.665,1267,513.537,1616,768.382,1797,519.812]],["content/187",[14,7.519,78,8.827,112,8.827,302,4.858,573,13.613,622,9.424,681,7.202,705,6.191,1138,13.543,1242,12.956,1351,11.539,1442,8.49,1887,14.287,1888,16.939]],["keywords/187",[]],["title/188",[11,300.774,233,290.461,1465,678.798]],["content/188",[14,5.204,30,3.963,53,1.844,60,3.312,68,4.328,78,6.109,88,3.766,177,5.572,180,7.355,210,10.219,233,5.64,302,2.741,311,6.193,358,6.815,563,4.554,573,7.682,688,7.339,692,6.739,718,4.83,939,6.193,1027,6.739,1241,7.339,1267,5.769,1351,7.986,1442,5.876,1507,7.682,1731,9.373,1889,16.322,1890,11.723,1891,11.723,1892,9.888,1893,11.723,1894,11.723,1895,11.723,1896,11.723,1897,11.723,1898,11.723,1899,11.723,1900,11.723,1901,11.723]],["keywords/188",[]],["title/189",[22,266.863,225,253.921,302,163.237,315,219.269,705,208.022,1465,397.901,1750,630.849,1752,533.948]],["content/189",[0,3.475,10,3.5,11,2.623,22,4.99,23,2.595,30,4.233,53,2.053,60,4.231,68,2.377,82,4.074,88,4.193,178,3.112,181,2.282,217,3.871,225,5.448,233,4.508,258,5.71,296,4.784,302,3.842,342,5.146,371,6.573,379,2.258,647,5.331,705,4.463,755,4.326,758,4.828,830,4.12,939,5.486,1157,4.828,1361,4.385,1445,4.855,1465,5.92,1483,9.985,1487,5.817,1537,4.12,1539,5.429,1547,5.146,1620,4.12,1638,7.943,1732,4.513,1743,8.759,1747,4.659,1752,4.924,1761,4.326,1773,5.429,1864,4.924,1865,5.817,1866,9.385,1867,5.817,1868,9.385,1902,5.817,1903,4.513,1904,13.054,1905,13.054,1906,13.054,1907,10.385,1908,10.385,1909,13.054,1910,13.054,1911,6.573,1912,6.437,1913,6.437,1914,6.437,1915,6.437,1916,6.437,1917,6.437,1918,6.437,1919,6.437,1920,5.817]],["keywords/189",[]],["title/190",[88,298.309,302,217.154,1386,877.452,1519,520.754,1921,839.217]],["content/190",[0,4.902,1,1.358,24,2.948,25,4.915,29,6.964,30,1.725,32,6.416,82,6.471,88,6.133,177,8.277,233,2.494,257,5.439,295,6.543,302,4.464,338,3.001,361,5.644,461,4.728,557,5.518,592,7.279,631,6.964,668,10.01,670,3.586,681,4.347,705,3.047,718,6.102,722,4.327,1022,10.573,1185,5.478,1223,11.841,1230,5.828,1309,6.471,1519,8.305,1520,7.717,1522,6.699,1558,6.699,1605,7.279,1638,7.82,1647,7.399,1728,12.491,1731,8.174,1771,5.928,1789,8.623,1864,7.82,1911,6.471,1921,9.239,1922,10.224,1923,10.224,1924,10.224,1925,10.224,1926,10.224,1927,10.224,1928,10.224,1929,10.224,1930,8.623,1931,10.224,1932,10.224]],["keywords/190",[]],["title/191",[1,111.092,102,253.114,302,195.617,1154,529.45,1497,548.168,1840,469.106]],["content/191",[1,2.516,14,8.41,102,5.732,311,10.009,313,8.581,314,8.287,1276,12.267]],["keywords/191",[]],["title/192",[291,498.85,302,324.255]],["content/192",[204,12.472,229,9.142,291,6.094,302,5.255,545,14.287,546,6.716,722,7.169,1267,8.336,1522,11.1,1543,12.956,1710,10.387,1840,9.499,1860,14.287,1933,16.939,1934,16.939]],["keywords/192",[]],["title/193",[41,438.054,291,428.417,1801,780.355]],["content/193",[0,2.959,1,1.693,7,4.913,11,3.221,32,5.524,41,8.531,130,10.195,137,8.614,181,6.131,291,7.059,302,4.588,315,4.005,470,4.913,584,9.962,586,5.605,615,5.717,624,6.201,750,8.356,1024,12.048,1025,7.33,1075,7.819,1136,12.515,1420,10.755,1556,12.733,1605,9.079,1799,11.523,1801,13.786,1830,10.755,1935,10.3,1936,12.751]],["keywords/193",[]],["title/194",[302,324.255,1937,908.646]],["content/194",[0,1.596,1,2.256,7,2.651,10,3.741,11,4.795,23,2.774,24,4.487,25,3.307,27,7.178,40,3.492,41,5.02,60,1.944,68,2.54,96,7.261,102,4.708,108,4.961,114,3.585,118,5.746,173,5.501,177,7.396,180,3.1,210,4.308,219,7.928,230,3.448,231,4.024,233,1.678,239,4.355,260,7.8,282,7.362,291,6.112,302,3.639,304,6.001,315,3.441,340,7.704,354,2.728,355,3.492,429,2.405,527,4.723,534,3.858,586,5.999,615,4.911,641,4.753,645,6.312,647,2.81,718,4.513,755,4.624,846,6.465,939,3.635,1075,4.219,1076,4.565,1255,5.263,1267,3.386,1290,4.979,1361,4.687,1414,4.753,1442,5.49,1481,4.308,1484,4.024,1526,4.137,1571,5.803,1604,4.508,1646,5.803,1780,6.218,1840,9.528,1902,6.218,1937,13.306,1938,6.88,1939,6.218,1940,6.88,1941,17.808,1942,6.88,1943,4.899,1944,5.066,1945,6.88,1946,6.88,1947,10.954,1948,6.88,1949,6.501,1950,4.508,1951,6.88,1952,4.899]],["keywords/194",[]],["title/195",[302,324.255,1710,850.325]],["content/195",[0,3.16,27,8.925,41,5.01,118,5.029,177,6.474,181,6.409,229,7.351,230,6.827,254,7.146,260,6.827,290,7.097,291,4.9,302,4.226,423,10.302,717,8.038,1203,8.352,1264,9.857,1421,10.889,1710,8.352,1727,10.641,1732,9.549,1771,10.479,1815,11.488,1937,8.925,1941,12.309,1953,13.62,1954,13.62,1955,9.698,1956,16.334,1957,9.698,1958,13.62,1959,13.62,1960,13.62,1961,11.488,1962,13.62]],["keywords/195",[]],["title/196",[302,217.154,1154,587.743,1543,710.31,1559,575.316,1616,683.784]],["content/196",[7,2.051,11,2.888,23,2.146,30,4.414,41,3.268,53,0.837,69,5.026,76,3.332,99,3.086,120,3.034,177,2.53,198,1.988,224,2.488,233,1.298,291,3.196,302,4.171,304,2.916,305,2.737,313,2.411,314,2.328,315,2.791,340,2.635,425,3.79,429,1.861,647,2.174,667,2.174,718,3.661,719,4.426,722,2.253,736,2.043,1025,3.06,1114,3.852,1199,9.832,1267,6.571,1481,3.332,1522,3.488,1710,7.013,1729,4.159,1801,3.488,1937,5.822,1963,9.143,1964,8.885,1965,5.323,1966,5.323]],["keywords/196",[]],["title/197",[102,280.981,1022,563.829,1488,783.272,1840,520.754,1967,839.217]],["content/197",[0,4.147,15,6.065,69,7.856,102,4.052,118,4.945,181,4.748,198,5.001,223,7.026,260,6.712,282,9.001,291,4.818,295,8.571,340,6.63,461,6.194,668,10.273,718,5.518,722,5.668,1022,8.131,1028,4.748,1157,10.044,1267,6.59,1442,6.712,1488,11.296,1522,8.775,1562,10.463,1578,11.662,1596,10.243,1698,12.102,1710,10.96,1802,10.707,1857,10.243,1878,10.707,1967,12.102,1968,14.513,1969,14.513,1970,13.392,1971,13.392,1972,13.392]],["keywords/197",[]],["title/198",[302,244.021,586,458.674,647,426.205,1469,653.334]],["content/198",[115,10.498,198,6.394,200,12.003,223,8.982,225,6.227,302,4.89,429,5.984,646,11.506,647,6.992,665,10.835,1469,10.719,1492,10.719,1493,13.688,1973,17.12,1974,17.12]],["keywords/198",[]],["title/199",[0,194.094,302,298.315,647,341.663,681,355.692,1469,523.739]],["content/199",[0,2.801,11,3.734,22,7.605,23,3.139,30,3.896,53,1.898,60,4.176,68,6.15,82,4.927,108,3.526,138,3.455,198,2.907,225,6.557,230,3.902,251,6.333,266,9.233,268,5.954,269,4.401,280,9.936,290,6.29,296,2.853,302,2.823,309,5.378,317,1.999,342,6.224,345,5.165,350,4.331,355,3.951,392,8.736,527,7.182,534,4.365,548,5.04,575,5.165,623,8.99,645,3.6,647,7.362,830,4.982,867,4.029,870,4.927,1274,6.779,1276,5.04,1469,4.874,1603,6.566,1745,9.651,1747,5.634,1757,7.035,1762,9.233,1763,7.035,1764,7.035,1765,7.035,1766,7.035,1767,7.035,1768,7.035,1769,7.035,1770,7.035,1771,4.513,1772,7.035,1773,6.566,1774,7.035,1775,7.035,1776,7.035,1777,7.035,1778,7.035,1789,6.566,1830,6.566,1975,4.874,1976,7.785,1977,7.785,1978,12.071,1979,7.785,1980,7.785,1981,7.785,1982,7.785,1983,6.566,1984,6.224]],["keywords/199",[]],["title/200",[102,253.114,302,195.617,647,341.663,1469,523.739,1526,503.013,1849,755.984]],["content/200",[1,1.606,7,1.244,10,1.755,11,0.815,14,1.433,22,2.984,23,1.301,30,4.398,41,1.187,53,1.492,60,0.912,72,1.385,81,2.377,102,3.66,108,2.61,112,1.682,181,1.144,198,1.205,224,1.509,225,2.84,237,2.09,272,3.465,291,1.161,302,4.018,304,1.768,315,1.014,354,1.28,355,2.925,429,1.128,475,2.09,531,1.888,592,2.298,615,1.447,624,1.57,628,1.215,641,3.981,647,8.134,648,2.421,667,1.318,680,1.729,681,1.372,705,0.962,718,1.33,736,1.239,755,2.169,759,2.298,834,2.021,841,2.522,939,1.705,992,2.336,1076,2.141,1114,4.171,1199,10.905,1241,2.021,1267,3.842,1272,4.725,1347,2.58,1469,4.887,1483,2.469,1497,3.776,1525,1.905,1526,9.696,1543,2.469,1577,2.58,1604,3.776,1616,2.377,1630,2.58,1648,2.917,1684,2.23,1710,1.979,1712,2.722,1745,2.58,1747,2.336,1762,2.469,1801,2.115,1831,2.917,1855,2.58,1903,2.263,1937,2.115,1944,2.377,1963,2.58,1985,3.228,1986,3.228,1987,3.228,1988,3.228,1989,3.228,1990,3.228,1991,9.489,1992,3.228,1993,3.228,1994,3.228,1995,3.228,1996,3.228,1997,2.811,1998,3.228,1999,2.58]],["keywords/200",[]],["title/201",[112,722.583,1442,695.013]],["content/201",[1,2.757,11,2.457,30,1.641,33,7.028,76,6.089,78,5.068,88,3.124,102,4.321,112,5.068,182,5.905,233,3.483,291,6.088,302,4.644,314,4.254,315,3.055,335,5.989,340,4.815,350,10.374,461,4.498,500,6.373,527,6.158,563,5.547,573,6.373,584,7.599,647,5.833,718,5.884,1016,6.373,1027,5.591,1031,7.976,1035,7.162,1143,8.47,1276,10.957,1312,12.434,1442,8.482,1469,8.941,1484,5.689,1520,5.068,1720,6.373,1771,5.639,1816,8.79,1840,5.454,1950,6.373,1956,12.905,2000,9.726,2001,9.726,2002,9.726,2003,5.689,2004,14.281,2005,14.281,2006,9.726,2007,14.281,2008,9.726]],["keywords/201",[]],["title/202",[88,445.436,1442,695.013]],["content/202",[]],["keywords/202",[]],["title/203",[1443,1181.561]],["content/203",[]],["keywords/203",[]],["title/204",[550,908.646,1309,877.619]],["content/204",[0,3.313,1,1.896,14,4.317,30,1.641,43,6.865,81,7.162,88,7.523,93,5.175,118,5.273,138,4.317,178,6.905,210,12.434,233,3.483,274,6.373,302,2.274,311,5.138,313,4.405,314,4.254,429,7.501,526,6.373,529,7.162,582,8.79,615,4.361,616,6.925,644,6.537,705,2.898,718,4.007,851,4.572,914,7.439,926,8.204,1230,5.544,1354,7.439,1414,6.719,1442,4.875,1519,12.596,1522,6.373,1690,6.537,1725,8.79,1735,12.045,1834,6.819,1857,7.439,1984,7.776,2009,12.045,2010,9.726,2011,9.726,2012,9.726,2013,8.79,2014,9.726,2015,9.726,2016,9.726]],["keywords/204",[]],["title/205",[1309,877.619,2017,1253.121]],["content/205",[88,6.505,118,6,178,9.79,230,11.056,429,7.71,984,10.922,1015,13.706,1519,11.355,1555,12.992,1735,13.706,2018,20.249,2019,14.685,2020,16.25]],["keywords/205",[]],["title/206",[1559,859.064,2021,1253.121]],["content/206",[]],["keywords/206",[]],["title/207",[350,771.451,2003,811.06]],["content/207",[0,4.245,88,5.877,99,10.607,181,6.487,350,10.179,1519,10.26,1522,11.989,1718,13.027,2003,12.73]],["keywords/207",[]],["title/208",[1,184.147,102,419.562]],["content/208",[1,2.628,7,2.957,11,1.938,30,4.407,53,1.207,76,4.804,88,6.573,102,3.611,178,5.771,291,2.76,429,2.682,680,4.111,681,3.262,851,5.61,1199,8.788,1230,6.803,1497,5.028,1519,8.214,1522,5.028,1523,5.65,1963,6.134,2003,4.488,2022,7.25,2023,7.673]],["keywords/208",[]],["title/209",[118,511.996,291,498.85]],["content/209",[0,4.245,1,2.43,7,7.05,11,4.621,84,10.607,88,5.877,118,6.755,291,6.582,340,9.058,1519,10.26]],["keywords/209",[]],["title/210",[1520,864.749]],["content/210",[1,2.414,14,8.068,32,5.951,77,9.524,88,5.839,102,4.156,177,6.529,181,4.871,233,3.351,240,9.233,296,5.034,311,7.257,439,10.507,527,5.923,550,9.002,615,6.159,648,10.303,705,5.417,718,5.66,1354,13.903,1442,9.111,1461,11.261,1519,7.703,1520,11.298,1690,12.217,2024,12.414]],["keywords/210",[]],["title/211",[233,404.755]],["content/211",[0,4.056,1,2.322,5,5.225,11,4.415,14,8.781,15,5.869,19,5.116,24,3.736,77,8.172,88,6.355,102,3.921,112,6.752,165,8.293,233,5.165,302,3.03,313,5.869,338,3.804,429,4.529,619,5.839,640,9.541,670,4.545,718,5.339,1028,4.594,1064,9.541,1442,8.762,1445,8.172,1507,8.491,1515,8.709,1731,13.977,2025,12.958,2026,9.085,2027,11.284]],["keywords/211",[]],["title/212",[1,138.581,302,244.021,718,429.942,1797,519.812]],["content/212",[0,2.534,1,3.149,5,4.404,7,4.209,11,3.922,29,7.44,54,6.157,88,3.509,96,5.811,102,5.467,137,5.441,145,7.545,178,5.281,181,3.873,227,7.246,233,3.788,257,5.811,302,3.631,303,6.913,379,3.831,429,6.316,440,7.904,480,6.278,624,5.312,645,5.051,650,7.545,670,3.831,972,6.506,1347,8.732,1351,7.44,1361,7.44,1445,7.26,1494,6.698,1500,8.732,1507,7.157,1519,6.125,1541,8.042,1556,8.042,1771,6.332,1794,9.212,1797,10.356,1999,8.732,2026,7.657,2028,7.545,2029,10.922,2030,10.922]],["keywords/212",[]],["title/213",[1806,1146.432]],["content/213",[0,3.031,7,5.034,11,4.439,14,5.799,76,8.179,88,5.646,118,4.824,137,9.895,181,4.632,198,4.879,273,10.445,302,3.055,311,6.902,313,7.961,314,5.714,427,11.814,429,6.144,479,9.302,584,10.207,586,5.742,624,6.353,646,8.78,667,5.336,1022,7.932,1267,6.429,1442,6.548,1519,7.326,1655,11.806,1806,9.025,2031,9.302,2032,13.064,2033,13.064,2034,11.019,2035,13.064,2036,13.064,2037,13.064,2038,13.064,2039,13.064]],["keywords/213",[]],["title/214",[1442,695.013,1520,722.583]],["content/214",[]],["keywords/214",[]],["title/215",[1154,660.459,1481,653.334,1520,543.785,1588,653.334]],["content/215",[1,1.127,11,2.143,19,1.989,22,1.926,23,2.031,24,2.446,30,4.307,53,0.792,74,2.781,82,3.188,88,5.33,102,5.02,177,2.394,180,4.952,181,4.572,182,5.151,223,2.643,233,3.145,248,3.432,254,2.643,258,2.204,260,2.525,296,1.846,302,4.074,313,2.282,338,2.49,350,2.803,353,3.709,429,1.761,461,3.924,480,4.877,485,3.224,500,3.301,557,2.719,615,6.452,628,1.896,632,3.853,647,2.058,670,6.574,681,2.142,705,2.528,718,5.313,722,7.375,794,3.853,851,2.368,951,3.778,1130,4.028,1154,6.956,1203,8.825,1241,3.154,1290,3.646,1309,5.37,1461,5.256,1481,3.154,1510,3.059,1519,2.825,1520,4.421,1522,5.559,1523,3.709,1525,2.973,1558,7.202,1588,6.881,1598,4.028,1621,4.387,1771,7.476,1802,4.028,1885,3.154,2040,5.038,2041,7.667,2042,5.038,2043,4.249,2044,5.038,2045,5.038,2046,3.646,2047,5.038,2048,4.76,2049,5.038,2050,5.038,2051,5.038,2052,5.038,2053,5.038,2054,5.038]],["keywords/215",[]],["title/216",[997,651.057,1154,587.743,1442,465.451,1481,581.403,1588,581.403]],["content/216",[1,1.232,5,3.74,14,4.117,24,3.976,32,7.13,55,4.801,78,4.833,89,5.936,96,4.934,99,7.994,180,4.179,181,4.889,198,6.146,223,7.234,233,3.363,258,7.97,296,3.399,314,4.057,338,2.723,461,4.29,475,6.005,529,6.829,661,6.154,670,4.837,692,5.331,705,4.109,722,3.926,992,6.712,1203,5.688,1275,13.028,1280,13.028,1300,8.764,1414,6.407,1481,5.807,1484,10.658,1507,6.078,1520,10.635,1523,6.829,1525,5.474,1558,6.078,1690,6.234,1714,12.974,1771,7.994,1930,7.823,1984,7.415,2041,8.382,2055,9.275,2056,9.275,2057,12.46,2058,13.788,2059,13.028,2060,9.275,2061,18.222,2062,9.275,2063,9.275,2064,9.275,2065,9.275,2066,8.382,2067,9.275,2068,9.275,2069,9.275]],["keywords/216",[]],["title/217",[314,606.537,992,1003.544]],["content/217",[0,1.888,1,1.081,5,1.934,7,1.848,10,4.425,11,4.093,15,4.802,19,1.894,22,4.053,23,3.281,24,4.034,25,6.005,30,1.789,32,6.06,53,1.28,55,8.826,56,3.143,60,4.579,68,1.771,71,1.778,76,3.003,79,2.15,81,3.531,84,4.719,88,1.541,89,3.07,102,4.232,162,2.021,177,2.279,178,5.126,180,2.161,181,2.886,198,3.039,217,4.894,229,2.589,233,2.586,249,2.805,251,2.516,254,2.516,258,2.098,295,5.209,302,3.271,303,7.906,304,2.627,307,3.415,315,1.506,317,2.089,318,3.834,338,4.757,340,6.185,350,5.898,358,2.002,379,1.682,394,8.186,429,4.89,439,3.668,557,2.589,597,3.415,611,5.544,615,2.15,619,2.161,635,2.971,646,3.223,661,5.4,668,2.757,670,1.682,686,2.305,705,6.76,718,1.976,719,2.389,736,4.794,757,4.3,846,2.831,867,2.482,970,4.334,1027,2.757,1072,3.668,1104,4.425,1179,3.471,1191,3.933,1194,2.757,1203,2.941,1209,5.095,1303,3.597,1396,4.176,1438,2.516,1461,2.971,1483,6.225,1491,3.668,1492,3.003,1520,5.524,1537,8.953,1540,3.834,1550,4.334,1588,3.003,1605,3.415,1666,3.668,1690,3.223,1728,4.045,1729,3.747,1748,4.334,1857,3.668,1863,4.334,1864,3.668,1881,4.334,1882,4.334,1930,4.045,2003,2.805,2024,9.581,2070,7.355,2071,3.834,2072,4.796,2073,4.796,2074,4.796,2075,4.796,2076,4.796,2077,4.796,2078,4.532,2079,4.796,2080,12.492,2081,8.139,2082,4.532,2083,4.796,2084,4.796,2085,4.796,2086,8.139,2087,8.139,2088,4.796]],["keywords/217",[]],["title/218",[260,523.037,1154,660.459,1520,543.785,2089,943.046]],["content/218",[0,2.845,1,2.236,22,4.688,25,5.895,40,6.224,102,3.71,118,4.528,165,7.848,178,5.929,180,5.526,260,11.233,300,7.677,340,6.071,429,4.286,461,9.573,470,6.488,471,11.988,480,7.049,485,7.848,615,5.498,619,5.526,718,6.937,1154,12.17,1309,7.761,1481,10.541,1526,7.373,1559,7.597,1567,9.804,1588,7.677,1771,7.109,1812,9.379,1832,9.804,2017,11.081,2089,11.081,2090,12.262,2091,12.262,2092,12.262,2093,8.731]],["keywords/218",[]],["title/219",[1354,1060.637,1690,931.966]],["content/219",[0,2.912,1,1.667,5,5.061,11,4.916,30,2.118,88,7.026,114,6.54,173,10.035,181,4.45,227,8.327,240,8.435,258,5.49,277,9.806,302,2.935,429,4.387,439,9.6,476,9.806,527,5.412,550,8.224,557,6.774,586,5.517,652,11.342,665,7.944,686,6.033,997,8.799,1022,7.62,1157,9.413,1270,9.806,1303,9.413,1354,14.887,1520,6.54,1677,10.035,1690,13.081,1723,11.342,1743,10.586,2094,12.551,2095,9.6,2096,12.551,2097,12.551,2098,12.551]],["keywords/219",[]],["title/220",[30,176.087,963,646.495,1056,1087.789]],["content/220",[1,2.992,570,11.51,1067,12.42]],["keywords/220",[]],["title/221",[254,624.804,302,278.474,736,457.061]],["content/221",[]],["keywords/221",[]],["title/222",[2099,1659.47]],["content/222",[1,2.373,22,6.832,95,6.671,102,4.052,177,10.201,254,7.026,291,4.818,302,5.019,305,9.19,354,5.31,355,6.797,533,10.022,586,5.886,588,9.508,615,6.004,641,9.252,645,6.194,646,9.001,718,5.518,736,5.14,1075,8.212,1312,8.384,1468,8.571,1496,11.296,1534,9.861,1559,8.297,1567,10.707,1657,10.243,1699,11.296,2100,8.885]],["keywords/222",[]],["title/223",[1087,1181.561]],["content/223",[1,1.568,5,4.761,53,1.857,60,5.754,67,5.645,95,5.883,118,6.057,162,6.912,296,4.328,338,3.467,340,5.847,354,8.076,379,4.143,557,6.374,563,4.587,575,7.835,588,5.582,615,5.295,718,4.866,723,7.754,725,6.328,726,6.154,727,6.847,728,7.242,729,7.394,730,5.919,731,7.242,732,6.622,733,6.97,734,6.239,735,6.239,736,7.818,737,5.645,738,8.92,997,8.279,1025,6.788,1087,8.408,1445,5.521,1937,7.738,2101,11.809,2102,10.672,2103,11.809,2104,10.672,2105,14.825]],["keywords/223",[]],["title/224",[736,532.202,1445,648.249]],["content/224",[5,6.581,9,6.682,11,2.961,60,3.312,78,6.109,95,5.839,230,5.876,251,6.151,296,4.296,305,8.393,338,4.791,354,4.648,358,4.895,423,6.682,533,9.153,557,10.135,586,5.153,588,8.875,615,7.318,639,12.458,725,8.746,730,5.876,736,4.499,1067,7.503,1080,12.752,1184,9.373,1438,8.563,1445,5.48,1465,10.703,1502,9.888,1588,7.339,1666,8.967,1852,9.888,1975,7.339,2102,10.594,2106,10.58,2107,11.723,2108,10.594,2109,10.594,2110,11.723]],["keywords/224",[]],["title/225",[736,532.202,1937,908.646]],["content/225",[0,2.7,1,2.156,5,4.692,9,6.633,11,2.939,32,5.042,40,5.907,67,7.762,78,6.064,102,3.521,118,4.297,221,5.87,232,5.218,253,11.752,256,9.304,291,4.187,296,5.951,304,8.896,316,7.066,318,9.304,340,9.26,423,6.633,429,4.068,586,7.138,615,7.28,681,4.948,953,10.996,1067,7.448,1080,14.613,1438,8.52,1465,9.256,1619,8.422,1937,12.256,2106,11.094,2111,11.637,2112,11.637,2113,11.637,2114,11.637,2115,9.816,2116,11.637,2117,11.637]],["keywords/225",[]],["title/226",[557,748.426,736,532.202]],["content/226",[0,2.483,9,6.101,11,2.703,15,4.847,24,3.086,53,1.683,60,5.509,78,5.577,79,4.798,118,7.2,162,6.449,220,7.746,233,2.61,234,6.152,251,5.615,290,5.577,296,3.922,302,4.56,338,4.493,354,6.068,423,6.101,557,11.582,563,4.157,615,4.798,725,5.735,730,5.364,737,5.116,738,8.322,954,9.32,1015,9.027,1067,6.85,1080,15.235,1209,6.701,1267,5.267,1438,8.03,1445,5.003,1465,8.724,1852,9.027,1975,6.701,2104,9.672,2105,13.832,2106,10.161,2109,9.672,2118,10.703,2119,10.703]],["keywords/226",[]],["title/227",[1442,831.754]],["content/227",[1,2.577,80,9.172,313,8.789,423,11.061,2120,19.406]],["keywords/227",[]],["title/228",[1,158.147,102,360.324,1442,596.885]],["content/228",[]],["keywords/228",[]],["title/229",[1276,897.826,1443,987.311]],["content/229",[0,2.209,1,2.451,11,2.404,23,2.332,24,1.668,25,4.576,30,4.322,33,4.685,41,5.715,53,0.91,71,2.144,78,3.015,80,2.734,88,3.058,89,3.703,102,3.67,162,2.437,165,3.703,198,2.161,291,2.081,299,6.238,302,1.353,322,4.625,335,5.087,338,3.561,350,5.296,429,4.24,527,2.494,528,3.703,550,7.948,575,3.838,615,4.268,619,2.607,718,5.791,722,2.448,767,8.603,851,4.475,939,3.056,1025,6.972,1056,4.187,1072,4.425,1075,3.547,1130,4.625,1183,3.325,1194,3.325,1276,3.746,1309,3.661,1497,3.791,1520,4.961,1525,5.618,1527,4.425,1540,4.625,1580,4.52,1681,4.879,1718,6.778,1752,4.425,1761,3.888,1801,10.182,1807,8.029,1812,4.425,1832,4.625,1833,4.625,1999,4.625,2121,5.785,2122,5.785,2123,5.785,2124,5.785,2125,5.785,2126,5.785,2127,5.785,2128,5.785,2129,5.785,2130,5.785,2131,6.269,2132,5.785,2133,5.785,2134,5.785,2135,6.269,2136,5.785,2137,5.785,2138,5.785]],["keywords/229",[]],["title/230",[1,158.147,102,360.324,681,506.352]],["content/230",[1,2.167,11,2.959,14,3.326,22,2.864,23,5.817,30,4.263,53,1.178,76,4.691,88,2.407,102,4.937,112,3.905,137,5.836,172,5.62,198,2.798,239,4.742,254,3.931,273,5.991,291,4.215,311,3.958,313,3.394,314,5.125,315,2.354,333,5.517,335,3.143,423,4.271,429,2.619,470,2.887,517,5.176,540,5.104,546,2.971,623,4.044,624,3.644,670,4.11,680,10.511,681,7.528,718,3.087,736,4.497,856,4.642,867,3.878,939,3.958,1067,4.796,1153,4.742,1199,5.517,1228,4.691,1230,6.679,1312,4.691,1317,6.771,1425,4.796,1479,6.771,1480,8.962,1492,4.691,1497,4.91,1526,4.505,1559,7.259,1620,4.796,1712,6.32,1716,6.771,1794,6.32,1797,5.836,1807,6.32,1834,8.214,2070,6.771,2139,7.493,2140,6.771,2141,6.771,2142,9.883]],["keywords/230",[]],["title/231",[1087,1181.561]],["content/231",[0,1.231,1,1.177,23,5.372,27,3.476,30,4.425,41,4.196,53,0.834,96,2.822,102,3.452,155,2.225,168,2.999,171,4.475,177,2.521,196,4.794,272,5.328,291,1.909,335,2.225,340,4.387,423,3.024,558,3.024,592,3.777,645,2.454,680,6.113,681,2.256,1087,3.777,1197,4.35,1267,4.36,1318,3.906,1425,3.395,1630,4.241,1710,3.253,1797,2.643,1834,6.212,1840,4.968,1937,3.476,2141,4.794,2143,5.305,2144,5.305,2145,5.305,2146,5.305,2147,5.305,2148,5.305]],["keywords/231",[]],["title/232",[1,158.147,102,360.324,1559,737.773]],["content/232",[1,1.07,30,4.424,41,2.965,53,1.267,88,2.589,102,3.751,233,1.966,302,1.885,443,4.993,670,4.349,856,4.993,1519,4.519,1525,4.757,1801,5.281,1819,6.798,1963,16.625,2003,4.714]],["keywords/232",[]],["title/233",[291,498.85,302,324.255]],["content/233",[667,8.33]],["keywords/233",[]],["title/234",[88,382.545,291,428.417,1519,667.804]],["content/234",[667,8.33]],["keywords/234",[]],["title/235",[233,338.213,291,498.85]],["content/235",[667,8.33]],["keywords/235",[]],["title/236",[670,486.423,1525,818.389]],["content/236",[667,8.33]],["keywords/236",[]],["title/237",[102,360.324,291,428.417,670,417.745]],["content/237",[667,8.33]],["keywords/237",[]],["title/238",[41,438.054,291,428.417,1801,780.355]],["content/238",[667,8.33]],["keywords/238",[]],["title/239",[291,498.85,856,859.064]],["content/239",[667,8.33]],["keywords/239",[]],["title/240",[291,428.417,443,737.773,1819,1004.451]],["content/240",[667,8.33]],["keywords/240",[]],["title/241",[291,498.85,2003,811.06]],["content/241",[667,8.33]],["keywords/241",[]],["title/242",[1,123.323,1056,672.075,1527,710.31,1999,742.458,2149,928.642]],["content/242",[1,2.226,102,5.071,198,6.26,291,7.426,667,6.846,718,6.906,963,10.384,1018,13.095,1056,12.13,1067,10.728,1520,10.756,1523,12.342,1526,10.079,1527,12.82,1559,10.384,2150,15.147]],["keywords/242",[]],["title/243",[1442,695.013,1806,957.957]],["content/243",[]],["keywords/243",[]],["title/244",[550,780.355,1526,716.073,1556,876.87]],["content/244",[24,4.547,237,10.21,290,8.217,313,7.142,314,6.898,317,4.048,340,7.807,350,8.773,429,5.512,550,10.333,619,7.106,667,6.441,718,6.497,1185,8.45,1525,9.307,1556,16.021,1822,14.251,1823,14.251,2151,14.251,2152,15.769,2153,15.769,2154,12.931]],["keywords/244",[]],["title/245",[1,184.147,178,670.43]],["content/245",[]],["keywords/245",[]],["title/246",[2155,1269.313]],["content/246",[0,2.72,1,2.494,13,8.347,33,5.769,96,6.237,118,4.328,198,4.378,233,2.859,260,8.181,281,9.888,335,4.917,527,5.055,528,7.503,571,5.913,586,7.174,621,9.373,639,7.778,645,5.422,649,7.59,670,4.112,1028,4.157,1071,7.682,1351,7.986,1476,10.594,1484,12.927,1515,7.879,1613,9.888,1657,8.967,1661,14.75,1721,10.594,1801,12.304,1836,11.723,1862,9.373,1939,10.594,1952,8.347,2156,10.594,2157,10.209,2158,11.723,2159,11.723,2160,10.594,2161,11.723,2162,8.347,2163,11.723,2164,11.723,2165,11.723,2166,8.632,2167,11.723]],["keywords/246",[]],["title/247",[527,715.545]],["content/247",[]],["keywords/247",[]],["title/248",[335,499.465,1484,696.547,2156,1076.194]],["content/248",[0,2.922,1,2.455,11,4.331,15,3.725,23,6.914,25,6.054,31,7.723,33,4.048,69,3.615,86,5.856,96,6.7,102,5.593,118,3.037,119,5.457,155,3.45,198,3.072,229,4.439,230,6.312,233,2.006,236,4.439,243,6.938,258,3.598,260,6.312,288,5.39,306,6.745,317,3.233,334,5.39,335,5.282,361,4.541,429,2.875,471,5.856,526,8.252,534,10.365,535,6.537,550,5.39,557,4.439,558,7.178,561,7.433,563,4.892,574,11.102,615,5.646,619,3.706,645,7.077,851,3.866,1203,5.044,1228,5.15,1264,5.953,1267,4.048,1270,6.426,1278,7.772,1351,5.603,1388,9.273,1445,3.845,1484,4.811,1489,5.206,1554,10.027,1637,6.426,1653,7.433,1703,8.154,1724,6.938,1729,6.426,1862,6.576,1911,5.206,1952,8.967,2095,9.633,2168,7.433,2169,8.225,2170,9.839,2171,8.225,2172,6.938,2173,7.163,2174,8.225,2175,8.225]],["keywords/248",[]],["title/249",[335,581.578,2176,1169.584]],["content/249",[0,3.623,1,2.876,25,7.506,41,7.967,181,5.537,227,13.103,230,7.827,291,5.618,335,9.846,429,5.458,531,9.133,1292,12.2,1647,11.301,1703,10.111,2021,14.112,2166,11.498]],["keywords/249",[]],["title/250",[1312,1038.958]],["content/250",[]],["keywords/250",[]],["title/251",[178,802.334]],["content/251",[0,3.77,1,2.689,11,4.104,24,4.686,30,3.896,102,4.917,178,7.857,340,8.045,574,10.522,641,13.989,939,8.585,1264,11.761,1451,13.706,1840,9.113,2177,14.685,2178,16.25]],["keywords/251",[]],["title/252",[24,399.849,178,670.43]],["content/252",[0,4.147,1,2.671,11,3.382,24,5.154,25,6.438,27,8.775,31,8.212,41,7.895,102,5.408,118,4.945,181,4.748,227,8.885,233,3.266,260,8.958,291,4.818,335,5.617,340,6.63,429,6.247,534,7.51,558,7.633,574,8.671,586,5.886,645,6.194,648,10.044,1030,9.861,1153,8.476,1414,9.252,1911,8.476,1952,9.535,1984,10.707,2013,12.102,2160,12.102]],["keywords/252",[]],["title/253",[40,703.837,178,670.43]],["content/253",[1,2.674,96,10.714]],["keywords/253",[]],["title/254",[178,670.43,2177,1253.121]],["content/254",[667,8.33]],["keywords/254",[]],["title/255",[178,670.43,2179,1386.652]],["content/255",[667,8.33]],["keywords/255",[]],["title/256",[178,670.43,1451,1169.584]],["content/256",[667,8.33]],["keywords/256",[]],["title/257",[41,341.595,102,280.981,1312,581.403,1599,725.536,2162,661.203]],["content/257",[]],["keywords/257",[]],["title/258",[78,620.562,120,678.798,1087,847.913]],["content/258",[]],["keywords/258",[]],["title/259",[2155,1269.313]],["content/259",[1,2.8,23,7.675,25,4.883,69,4.465,88,3.263,96,5.405,102,6.379,155,7.277,168,5.743,198,5.505,236,5.483,260,5.092,290,5.294,305,5.224,334,6.657,335,8.477,392,7.352,429,3.551,471,7.233,533,5.697,534,9.73,535,6.297,558,5.79,570,5.19,579,8.568,588,4.802,645,8.024,669,7.018,670,6.086,719,5.06,997,7.122,1599,14.872,1612,13.322,1637,11.517,1710,6.23,1815,8.568,1887,8.568,1952,10.496,2095,11.276,2162,12.354,2180,10.159,2181,10.159,2182,10.159,2183,10.159]],["keywords/259",[]],["title/260",[527,715.545]],["content/260",[]],["keywords/260",[]],["title/261",[41,438.054,2003,696.547,2166,876.87]],["content/261",[1,2.167,11,2.961,41,6.004,96,6.237,102,4.938,112,6.109,129,9.373,155,4.917,172,8.792,198,8.254,236,8.809,251,6.151,290,6.109,315,3.682,350,9.08,534,9.153,558,6.682,615,5.256,651,9.888,653,9.888,1075,10.009,1179,8.484,1292,9.159,1414,8.099,1445,5.48,1520,6.109,1670,10.594,1708,9.888,1752,8.967,1950,10.695,2003,11.876,2028,8.099,2115,9.888,2166,12.018,2184,10.594,2185,11.723,2186,10.209,2187,11.723,2188,11.723,2189,11.723,2190,11.723,2191,11.723]],["keywords/261",[]],["title/262",[335,581.578,2176,1169.584]],["content/262",[139,8.736,141,9.025,145,9.741,181,5,236,12.275,274,9.24,317,3.62,335,9.186,350,10.288,379,4.946,475,11.973,480,12.59,487,7.112,558,8.037,645,6.521,669,9.741,1072,10.785,1515,12.429,2003,10.816,2031,10.04,2166,10.383,2176,11.893]],["keywords/262",[]],["title/263",[41,510.07,1955,987.311]],["content/263",[1,1.735,41,8.157,89,8.361,96,6.95,102,5.318,155,5.479,230,8.81,236,11.469,259,11.376,291,4.7,317,3.354,335,7.372,379,4.583,450,9.992,549,9.619,586,5.742,592,9.302,629,10.207,669,9.025,972,7.781,1076,8.667,1290,9.454,1389,13.733,1955,15.129,2031,9.302,2192,13.064,2193,13.064,2194,13.064,2195,13.064,2196,11.806,2197,13.064]],["keywords/263",[]],["title/264",[1724,1399.695]],["content/264",[31,10.498,41,6.298,282,11.506,335,7.18,534,9.6,558,9.758,625,13.688,718,7.054,1442,8.581,1445,8.004,1718,12.19,1950,11.218,2031,12.19,2198,17.12,2199,15.471,2200,15.471]],["keywords/264",[]],["title/265",[1662,1499.668]],["content/265",[1,1.906,41,5.28,69,6.309,102,6.298,155,6.02,181,5.089,260,9.377,313,8.474,335,6.02,450,10.979,527,6.189,534,10.491,642,12.107,645,6.638,1097,13.562,1950,12.259,2028,9.916,2031,10.22,2162,10.22,2173,12.5,2201,18.709,2202,14.354,2203,12.972,2204,12.972,2205,12.972,2206,14.354,2207,14.354]],["keywords/265",[]],["title/266",[260,695.013,1312,868.152]],["content/266",[]],["keywords/266",[]],["title/267",[1312,868.152,2208,1386.652]],["content/267",[1,2.851,41,7.896,102,5.902,120,8.73,155,8.182,168,8.659,181,5.431,260,7.677,335,6.424,535,6.543,645,7.084,1076,10.162,1312,9.589,1577,12.245,1699,12.919,1703,12.631,1840,10.939,2031,10.905,2209,15.316]],["keywords/267",[]],["title/268",[2210,1659.47]],["content/268",[1,2.158,41,5.978,102,6.127,138,7.213,145,11.226,224,7.597,236,10.929,256,12.992,257,8.645,534,9.113,558,9.263,567,10.782,1840,9.113,1950,10.648,2211,13.706,2212,13.706,2213,16.25,2214,16.25,2215,16.25]],["keywords/268",[]],["title/269",[2216,1499.668]],["content/269",[0,2.867,1,2.248,11,3.121,41,7.638,79,5.54,96,6.574,102,5.121,168,6.986,230,8.484,257,6.574,291,6.945,315,3.881,335,8.709,341,7.821,425,8.798,500,8.097,534,9.492,558,7.044,567,8.199,624,6.009,1292,9.654,1445,5.777,1840,9.492,1903,8.663,1950,11.091,2003,9.9,2211,10.423,2212,10.423,2216,11.167,2217,11.167,2218,12.357,2219,9.88,2220,11.167,2221,10.423,2222,12.357,2223,12.357,2224,12.357]],["keywords/269",[]],["title/270",[2225,1499.668]],["content/270",[0,2.434,1,2.985,11,2.65,41,6.5,43,5.044,102,5.846,139,6.5,145,7.248,168,5.931,230,5.259,236,11.049,257,5.582,272,11.619,274,6.875,291,6.357,341,9.55,425,7.47,466,6.5,480,8.674,500,6.875,534,5.884,549,7.726,567,6.961,669,13.349,972,6.25,1293,9.137,1361,7.147,1445,4.905,1840,8.462,1903,7.356,1950,9.888,2003,10.335,2166,7.726,2211,8.85,2212,8.85,2217,9.482,2219,12.064,2220,9.482,2221,14.904,2225,9.482,2226,8.85,2227,10.492]],["keywords/270",[]],["title/271",[2228,1659.47]],["content/271",[1,3.116,43,5.986,60,4.807,102,6.304,139,12.009,145,13.391,155,7.137,223,8.928,251,6.534,290,6.489,350,6.928,480,7.158,669,14.392,2003,9.953,2115,10.504,2229,12.453,2230,12.453,2231,12.453,2232,12.453,2233,12.453,2234,12.453,2235,12.453,2236,12.453,2237,12.453,2238,17.016,2239,12.453,2240,12.453,2241,15.378]],["keywords/271",[]],["title/272",[363,800.382,2242,1076.194,2243,1076.194]],["content/272",[32,6.7,41,5.688,77,7.229,233,3.772,335,6.486,355,7.849,363,13.191,396,9.898,508,13.044,665,9.787,717,9.127,777,9.581,1003,8.966,1076,10.26,1267,7.61,1384,10.133,1887,16.555,2003,11.48,2244,15.464,2245,15.464,2246,15.464,2247,13.467,2248,15.464]],["keywords/272",[]],["title/273",[41,510.07,1710,850.325]],["content/273",[0,3.409,1,2.995,41,7.743,77,5.601,102,6.51,118,5.425,181,2.734,198,4.474,223,6.286,230,6.005,236,11.361,335,6.949,466,4.776,476,6.023,480,4.432,485,7.668,501,4.827,545,6.503,563,2.995,565,6.164,633,6.503,669,12.396,719,3.84,917,5.897,954,6.714,963,4.776,997,5.405,1030,5.677,1074,6.164,1150,15.656,1157,5.782,1235,6.322,1270,6.023,1336,6.967,1384,5.052,1389,11.48,1503,5.897,1599,6.023,1677,6.164,1697,6.967,1710,11.004,1840,8.239,1857,5.897,1875,6.967,1944,5.677,2003,4.509,2150,6.967,2203,10.827,2204,10.827,2221,6.503,2226,6.503,2241,16.216,2249,11.98,2250,6.503,2251,7.71,2252,11.98,2253,7.71,2254,7.71]],["keywords/273",[]],["title/274",[534,585.182,1445,487.845,1950,683.808,2219,834.316]],["content/274",[1,2.752,11,4.698,33,7.001,41,6.842,102,6.27,355,10.519,534,10.43,553,9.828,575,9.439,649,9.211,1028,5.044,1030,10.475,1075,8.724,1400,13.442,1420,11.999,1534,10.475,1596,10.881,1911,9.004,1950,12.188,2199,12.856,2219,14.871,2255,14.226,2256,14.226,2257,12.856]],["keywords/274",[]],["title/275",[112,620.562,155,499.465,1222,952.113]],["content/275",[41,7.355,88,5.116,102,6.613,112,8.299,122,12.443,133,6.9,176,11.727,181,5.647,315,5.003,429,6.989,628,5.994,719,7.933,1148,11.526,1222,12.733,1344,13.433,1446,13.06,1727,12.443,1911,10.08,2258,14.393]],["keywords/275",[]],["title/276",[112,543.785,138,463.203,719,519.812,1955,743.008]],["content/276",[30,3.123,88,5.945,138,8.215,1703,11.983,1955,13.177,2259,18.507,2260,18.507,2261,18.507,2262,18.507]],["keywords/276",[]],["title/277",[112,543.785,719,519.812,1955,743.008,2196,943.046]],["content/277",[1,2.43,41,6.73,102,5.536,112,9.534,237,11.846,335,7.673,777,11.334,1955,13.027,2258,16.534,2263,18.295]],["keywords/277",[]],["title/278",[1,184.147,1028,491.666]],["content/278",[]],["keywords/278",[]],["title/279",[34,1130.435]],["content/279",[24,5.399,30,3.723,569,9.565,2264,13.551,2265,16.921,2266,15.793,2267,16.305]],["keywords/279",[]],["title/280",[43,666.579,560,1083.373]],["content/280",[]],["keywords/280",[]],["title/281",[1,123.323,24,267.779,248,632.593,338,272.597,1028,329.269]],["content/281",[1,2.564,15,7.666,16,6.621,24,5.567,53,3.036,68,4.563,99,7.164,102,3.739,112,6.439,137,6.155,181,6.002,338,6.594,340,6.118,571,6.232,613,6.009,645,5.715,649,8.001,651,10.423,757,6.528,1023,9.273,1028,6.002,1104,6.719,1194,7.103,1245,9.654,1500,9.88,1525,7.293,1558,8.097,2100,8.199,2268,12.357,2269,12.357,2270,12.357,2271,8.537,2272,9.099,2273,14.277,2274,11.167,2275,11.167]],["keywords/281",[]],["title/282",[77,556.723,571,600.637,1012,893.138]],["content/282",[53,3.015,2100,12.721,2271,13.246,2276,19.173,2277,16.172,2278,19.173]],["keywords/282",[]],["title/283",[30,117.793,355,354.327,705,208.022,861,376.774,1028,247.515,1600,588.794,2279,489.407,2280,523.544]],["content/283",[5,7.413,9,7.967,30,3.467,53,2.198,77,6.534,172,10.483,180,6.298,300,8.751,317,3.588,572,8.175,613,6.797,1600,18.411,1708,11.789,1944,10.292,2009,11.789,2100,9.274,2271,12.702,2272,10.292,2280,17.461,2281,13.977,2282,13.977,2283,13.977,2284,20.546]],["keywords/283",[]],["title/284",[1,184.147,180,624.842]],["content/284",[]],["keywords/284",[]],["title/285",[40,842.314]],["content/285",[5,7.293,30,3.052,40,9.181,519,7.893,569,9.241,2285,19.602,2286,15.752,2287,18.088,2288,19.602,2289,19.602]],["keywords/285",[]],["title/286",[304,909.105]],["content/286",[5,6.83,30,4.129,304,9.28,519,6.184,2286,14.751,2290,16.939,2291,16.939,2292,16.939,2293,16.939,2294,16.939,2295,16.939,2296,16.939]],["keywords/286",[]],["title/287",[239,1050.287]],["content/287",[5,7.549,30,3.159,519,8.056,2264,13.551,2297,20.291,2298,17.692,2299,18.724]],["keywords/287",[]],["title/288",[2280,1244.581]],["content/288",[30,3.998,569,9.795,2266,16.172,2267,16.696]],["keywords/288",[]],["title/289",[24,478.518]],["content/289",[569,10.419]],["keywords/289",[]],["title/290",[36,1007.553]],["content/290",[5,8.12,867,10.424]],["keywords/290",[]],["title/291",[2300,1798.349]],["content/291",[569,10.288,1170,19.029]],["keywords/291",[]],["title/292",[1085,1200.988]],["content/292",[5,7.462,30,3.123,75,11.587,519,6.757,569,9.455,1085,13.394,2301,20.056,2302,20.056,2303,20.056]],["keywords/292",[]],["title/293",[379,582.125]],["content/293",[5,7.293,30,3.052,75,11.325,379,6.345,519,6.604,569,9.241,2286,15.752,2304,19.602,2305,18.088,2306,19.602,2307,19.602]],["keywords/293",[]],["title/294",[28,841.91,535,592.334]],["content/294",[]],["keywords/294",[]],["title/295",[2308,1499.668]],["content/295",[1,2.487,237,12.123,257,9.962,967,12.123,1185,10.033,1580,14.629,1997,16.305,2308,16.921]],["keywords/295",[]],["title/296",[102,419.562,535,592.334]],["content/296",[]],["keywords/296",[]],["title/297",[34,1130.435]],["content/297",[24,5.399,30,3.723,569,9.565,2264,13.551,2265,16.921,2266,15.793,2267,16.305]],["keywords/297",[]],["title/298",[232,467.855,487,526.325,1209,653.334,1260,880.179]],["content/298",[1,1.735,5,7.087,7,5.034,30,3.585,32,5.66,54,5.179,77,6.107,154,7.385,175,11.019,212,8.78,224,6.107,229,7.051,232,5.857,257,6.95,258,5.714,288,11.518,487,6.589,572,7.641,623,7.051,650,9.025,1255,13.445,1257,11.806,1258,11.806,1259,10.712,1260,19.263,1540,14.053,2205,11.806,2309,13.064,2310,13.064,2311,13.064,2312,13.064,2313,13.064,2314,13.064]],["keywords/298",[]],["title/299",[72,712.189]],["content/299",[11,4.063,72,10.165,224,7.52,230,8.063,235,14.538,317,4.13,341,10.181,592,11.454,601,10.181,1903,14.107,2315,15.391,2316,16.087,2317,16.087,2318,16.087,2319,16.087,2320,16.087]],["keywords/299",[]],["title/300",[861,748.426,1028,491.666]],["content/300",[0,2.387,1,2.321,7,7.379,11,3.758,16,5.513,24,6.106,30,2.949,32,4.458,33,7.322,36,6.247,40,5.223,41,3.785,42,13.819,53,2.748,54,5.899,83,6.018,96,5.474,102,5.794,131,7.447,133,6.446,176,7.576,219,7.447,258,4.501,315,3.232,338,5.13,358,6.212,391,11.159,463,7.87,471,10.594,488,8.227,535,4.395,613,5.004,650,7.108,758,7.717,1023,5.637,1025,5.915,1027,5.915,1028,6.79,2271,7.108,2272,7.576,2273,8.679,2274,9.299,2321,9.722]],["keywords/300",[]],["title/301",[155,581.578,535,592.334]],["content/301",[0,4.056,1,2.322,15,5.869,16,6.943,19,5.116,32,5.614,33,8.603,43,6.229,53,2.749,54,6.931,58,7.046,72,5.561,80,6.125,102,3.921,155,7.332,156,12.872,180,5.839,223,6.798,274,8.491,299,8.491,546,5.137,624,6.302,1104,7.046,1105,11.284,1679,11.284,2322,12.958,2323,14.042,2324,12.958,2325,12.958,2326,17.481,2327,10.36,2328,17.481,2329,12.958,2330,12.958,2331,10.929,2332,9.226,2333,12.958]],["keywords/301",[]],["title/302",[99,803.96,535,592.334]],["content/302",[0,3.006,1,1.721,7,4.993,24,6.57,30,3.338,33,6.377,36,10.614,41,4.766,42,13.996,53,2.749,59,10.124,84,7.513,176,9.541,232,5.809,338,5.132,358,7.299,391,13.111,463,9.911,471,12.447,488,10.36,650,8.952,1023,7.099,1028,7.015,2170,10.124,2273,10.929,2275,11.71,2334,12.958]],["keywords/302",[]],["title/303",[96,737.734,535,592.334]],["content/303",[14,8.311,28,11.368,77,8.753,314,8.19,530,14.322,535,7.998,963,11.6,1185,10.033]],["keywords/303",[]],["title/304",[1,158.147,535,508.702,1132,834.902]],["content/304",[1,2.442,7,5.386,11,3.53,162,5.889,195,8.249,254,9.646,258,6.114,280,9.394,350,7.776,538,9.521,572,8.175,611,9.521,649,9.05,661,9.274,686,6.719,715,6.838,719,6.962,1003,8.104,1132,15.899,1194,8.034,1320,12.631,1911,8.846,2335,18.386,2336,12.631,2337,13.977,2338,13.977,2339,13.977,2340,13.977,2341,13.977,2342,13.977]],["keywords/304",[]],["title/305",[7,458.884,195,702.841,224,556.723]],["content/305",[7,6.97,10,9.835,15,8.193,16,9.692,195,10.676,221,9.123,224,10.106,258,7.912,1132,12.682,2343,18.088]],["keywords/305",[]],["title/306",[54,657.936]],["content/306",[2,10.175,11,4.621,53,2.877,54,8.629,180,8.244,291,6.582,613,8.897,1132,12.827]],["keywords/306",[]],["title/307",[1028,588.399]],["content/307",[2,8.362,15,8.101,16,9.584,53,2.813,315,5.618,546,7.091,1027,10.281,1028,7.613,1132,12.54,1183,10.281,1441,14.3]],["keywords/307",[]],["title/308",[32,600.748,535,592.334]],["content/308",[2,7.754,31,10.172,32,7.186,43,9.859,53,2.609,79,7.437,86,11.81,102,6.205,154,9.377,156,12.214,175,13.991,535,7.086,1104,9.019,1209,10.385,2344,16.587,2345,16.587,2346,16.587]],["keywords/308",[]],["title/309",[75,1038.958]],["content/309",[]],["keywords/309",[]],["title/310",[571,600.637,1018,930.412,2257,1076.194]],["content/310",[]],["keywords/310",[]],["title/311",[5,306.855,32,329.718,71,282.072,217,457.626,233,185.627,571,383.853,1018,594.605]],["content/311",[53,3.052,2186,16.899,2347,16.368,2348,21.03,2349,15.515]],["keywords/311",[]],["title/312",[5,337.289,75,523.739,162,352.448,658,523.739,1384,548.168,2350,906.548]],["content/312",[19,7.393,236,10.106,619,8.437,686,9.001,969,15.793,1015,15.793,1949,17.692,2257,16.921]],["keywords/312",[]],["title/313",[77,434.133,571,468.377,613,451.611,1264,672.075,2351,877.452]],["content/313",[9,8.256,77,6.771,138,6.429,162,6.102,613,10.762,619,9.972,658,11.782,686,6.963,705,6.595,770,8.882,861,11.945,870,9.167,1384,9.491,2279,13.194,2352,20.394,2353,11.58,2354,13.089,2355,15.696]],["keywords/313",[]],["title/314",[77,487.845,2353,834.316,2356,986.011,2357,692.358]],["content/314",[1,1.959,5,2.797,6,6.454,10,2.166,11,2.785,14,1.768,19,2.739,30,3.143,32,1.726,53,1.734,71,4.633,75,7.826,77,5.155,79,1.786,102,2.099,162,1.678,177,1.893,181,1.412,186,9.301,210,4.344,217,2.395,232,1.786,272,4.172,290,9.707,315,4.911,429,2.425,484,2.933,485,10.007,517,2.752,611,2.714,613,3.374,628,1.499,639,4.603,642,3.36,658,2.494,684,1.499,718,1.641,752,11.319,861,2.15,867,2.062,870,2.521,942,5.307,943,3.36,946,3.764,959,5.77,1039,3.36,1065,3.983,1068,3.469,1104,2.166,1114,7.981,1159,6.194,1179,2.883,1193,2.643,1220,2.836,1241,2.494,1242,3.047,1269,17.602,1381,3.983,1384,2.61,1402,3.983,1580,3.112,1729,3.112,1732,2.793,1876,3.266,2026,4.864,2027,3.469,2082,14.773,2154,3.266,2162,2.836,2279,4.864,2353,10.972,2357,12.052,2358,4.317,2359,4.317,2360,3.983,2361,4.317,2362,3.469,2363,8.329,2364,3.983,2365,3.983,2366,3.983,2367,3.983,2368,3.983,2369,3.983,2370,10.419,2371,11.95,2372,13.615,2373,15.635,2374,15.635,2375,10.419,2376,17.996,2377,11.95,2378,11.95,2379,12.501,2380,13.547,2381,13.547,2382,4.317,2383,4.317,2384,3.764,2385,4.317,2386,4.317,2387,4.317,2388,3.983,2389,5.109,2390,3.6,2391,3.764,2392,10.505,2393,3.764,2394,5.42,2395,7.518,2396,6.555,2397,3.764,2398,4.317,2399,4.317,2400,4.317,2401,4.317,2402,3.6,2403,4.317,2404,4.317]],["keywords/314",[]],["title/315",[77,487.845,2354,943.046,2405,943.046,2406,986.011]],["content/315",[1,2.484,6,8.181,30,3.156,32,5.042,53,1.83,75,7.286,77,5.44,102,3.521,181,4.126,272,6.998,484,11.957,517,11.218,575,7.721,613,7.897,658,7.286,770,7.136,1025,6.689,1384,7.626,2279,11.385,2354,19.927,2357,13.429,2362,10.134,2390,10.517,2392,13.317,2394,9.092,2396,15.343,2406,15.343,2407,11.637,2408,18.291,2409,20.24,2410,12.611,2411,12.611]],["keywords/315",[]],["title/316",[77,391.076,258,365.912,613,406.82,686,402.134,861,451.511,2412,755.984]],["content/316",[1,1.941,6,6.393,19,5.771,72,6.273,77,6.833,120,10.79,258,9.184,345,9.697,553,10.097,686,9.1,705,4.356,861,7.889,1012,14.197,1037,12.328,1384,13.758,2392,10.407,2394,11.419,2413,11.686,2414,14.616,2415,18.93,2416,12.728,2417,15.839,2418,10.407,2419,15.839]],["keywords/316",[]],["title/317",[77,355.789,613,576.781,658,476.482,2279,831.506,2420,719.105]],["content/317",[0,3.16,1,2.4,6,7.906,19,5.378,33,6.703,72,5.845,75,8.527,77,6.367,102,4.121,120,10.302,233,3.322,258,7.906,272,8.19,686,8.688,874,11.169,1012,10.215,1085,9.857,1384,14.159,2392,12.869,2394,14.121,2413,10.889,2414,13.62,2415,18.074,2416,11.861,2421,14.76,2422,14.76,2423,14.76,2424,14.76,2425,14.76]],["keywords/317",[]],["title/318",[0,242.121,72,447.85,601,660.459,2331,880.179]],["content/318",[]],["keywords/318",[]],["title/319",[2155,1269.313]],["content/319",[0,3.889,1,2.226,32,7.262,72,10.018,155,7.03,278,10.278,601,10.608,846,9.892,1082,11.121,1136,14.938,1185,8.981,2026,11.751,2028,11.579,2332,11.934]],["keywords/319",[]],["title/320",[0,242.121,32,452.098,72,447.85,2332,743.008]],["content/320",[0,4.912,1,2.543,10,4.274,15,3.561,16,4.212,19,3.104,30,3.996,32,5.269,33,3.869,43,3.779,53,2.633,54,3.117,58,4.274,71,2.914,72,6.384,75,4.922,77,3.675,79,3.524,83,4.598,105,5.284,112,4.096,137,3.916,139,10.373,141,5.031,142,8.527,148,5.896,151,5.896,152,6.285,153,6.446,155,6.239,161,9.724,162,3.312,181,2.787,231,7.114,234,4.519,249,7.114,258,5.32,278,4.821,300,4.922,311,6.425,317,2.018,463,6.013,1064,5.788,1136,10.766,1148,13.857,1384,5.151,1388,5.788,2028,5.431,2100,5.216,2140,7.104,2271,8.402,2332,5.597,2418,5.597,2426,12.162,2427,7.861,2428,7.861,2429,7.861,2430,7.861,2431,7.861,2432,7.861,2433,7.861,2434,7.861,2435,7.861,2436,12.162,2437,7.861,2438,7.861,2439,7.861,2440,6.846,2441,7.861]],["keywords/320",[]],["title/321",[0,215.464,72,398.542,1082,616.13,1185,497.6,2332,661.203]],["content/321",[223,9.824,227,12.423,230,9.385,1003,10.856,1082,12.423,1185,10.033,1194,10.763,2071,14.97]],["keywords/321",[]],["title/322",[7,322.348,72,359.015,224,391.076,1136,605.419,2331,705.587,2332,595.625]],["content/322",[11,3.868,111,10.433,129,12.245,177,7.28,223,8.036,500,10.036,543,16.641,573,10.036,938,10.036,939,8.092,984,10.294,1647,11.085,1703,9.917,2442,15.316,2443,19.508,2444,19.508,2445,15.316,2446,15.316,2447,15.316,2448,15.316,2449,15.316,2450,15.316]],["keywords/322",[]],["title/323",[0,242.121,72,447.85,340,516.646,601,660.459]],["content/323",[]],["keywords/323",[]],["title/324",[2155,1269.313]],["content/324",[0,4.17,1,2.86,24,3.894,32,5.851,41,4.968,42,8.547,72,9.623,105,9.077,139,8.367,142,9.468,263,11.074,278,11.021,304,7.398,315,4.242,334,8.85,338,3.964,340,6.686,570,6.899,601,8.547,613,6.568,680,7.236,681,5.742,770,8.282,846,7.971,1027,7.763,1028,4.788,1082,8.96,1136,9.774,1185,7.236,2026,9.468,2028,9.33,2418,9.616]],["keywords/324",[]],["title/325",[0,242.121,32,452.098,72,447.85,340,516.646]],["content/325",[1,2.484,11,2.939,19,4.595,28,7.066,32,5.042,41,5.973,42,10.278,53,2.941,54,6.438,72,8.027,75,7.286,79,5.218,83,6.807,84,6.747,102,4.913,105,7.822,139,10.06,141,7.448,142,11.385,151,8.728,152,9.304,180,5.244,229,6.281,300,7.286,304,6.375,340,8.04,558,6.633,569,5.945,613,5.659,662,7.448,861,6.281,1028,4.126,1216,9.304,1318,8.569,1840,6.526,2028,8.04,2170,9.092,2271,11.218,2272,8.569,2451,11.637,2452,10.996,2453,11.637,2454,11.637,2455,10.996,2456,10.996,2457,8.728]],["keywords/325",[]],["title/326",[0,215.464,72,398.542,340,459.763,1082,616.13,1185,497.6]],["content/326",[223,9.824,227,12.423,230,9.385,705,5.58,1082,12.423,1185,10.033,1267,9.214,2071,14.97]],["keywords/326",[]],["title/327",[571,836.983]],["content/327",[]],["keywords/327",[]],["title/328",[93,737.734,1177,1310.214]],["content/328",[1,2.47,6,6.223,9,8.109,14,6.315,19,5.617,210,8.907,311,7.516,313,6.443,314,6.223,475,9.211,527,6.134,540,9.691,571,12.021,613,6.918,686,6.839,861,7.678,1048,16.197,1265,12.856,1384,9.322,1704,13.442,2279,13.04,2280,10.669,2458,14.226,2459,20.156,2460,15.417]],["keywords/328",[]],["title/329",[71,386.767,224,487.845,290,543.785,2357,692.358]],["content/329",[30,3.087,181,6.487,182,11.108,291,6.582,311,9.666,570,9.346,571,9.228,1732,12.827,2461,19.827,2462,19.827]],["keywords/329",[]],["title/330",[54,472.149,2357,790.112,2463,1125.225]],["content/330",[5,6.552,19,6.416,30,3.417,53,2.555,54,8.028,77,7.597,233,3.964,257,8.645,311,8.585,314,7.108,938,10.648,1462,11.761,2357,13.434,2452,15.354,2464,17.61,2465,17.61,2466,17.61,2467,17.61]],["keywords/330",[]],["title/331",[254,547.502,290,543.785,2357,692.358,2468,943.046]],["content/331",[6,1.769,9,2.305,10,3.822,11,1.775,14,4.139,19,3.681,30,3.772,49,9.703,50,5.764,53,0.636,60,3.565,68,1.493,71,3.456,82,2.559,93,5.928,120,2.305,141,2.588,162,1.704,181,3.951,186,3.411,200,12.808,212,6.267,254,7.803,281,5.929,290,10.656,296,2.576,304,2.215,315,2.208,350,2.25,429,2.457,480,2.325,481,2.755,487,3.545,511,5.492,526,4.606,531,2.365,542,2.978,546,1.603,575,2.683,583,3.821,591,3.821,603,5.492,607,5.087,636,3.522,639,2.683,704,2.215,744,2.879,752,6.186,867,2.093,870,2.559,942,5.377,943,3.411,946,3.821,1001,3.654,1011,7.864,1026,4.044,1035,5.176,1082,4.664,1089,6.642,1104,3.822,1114,5.087,1140,6.642,1143,3.522,1152,3.522,1170,3.821,1209,2.532,1242,5.377,1269,3.821,1270,5.492,1334,3.654,1335,3.821,1351,7.59,1392,6.642,1413,6.642,1465,2.305,1562,5.492,1620,10.081,1643,3.821,1647,2.927,1656,5.377,1674,3.316,1679,3.522,1707,6.642,1862,5.62,2009,10.644,2026,2.835,2154,5.764,2157,3.522,2357,8.372,2360,7.029,2362,3.522,2363,8.426,2364,4.044,2365,4.044,2366,4.044,2367,4.044,2368,4.044,2369,4.044,2372,6.121,2373,7.029,2374,13.842,2375,3.821,2376,3.821,2388,4.044,2389,5.176,2402,10.069,2458,4.044,2469,4.382,2470,4.382,2471,4.382,2472,4.382,2473,4.382,2474,4.382,2475,4.382,2476,4.382,2477,6.642,2478,4.382,2479,3.821,2480,7.618,2481,3.821,2482,4.382,2483,4.382,2484,4.382,2485,4.382,2486,9.324,2487,9.324,2488,9.324,2489,4.382,2490,4.382,2491,4.382,2492,4.382,2493,10.528,2494,7.618,2495,7.618,2496,7.618,2497,6.121,2498,7.618,2499,7.618,2500,7.618,2501,4.382,2502,4.382,2503,7.618,2504,4.382,2505,4.382,2506,4.382,2507,4.382,2508,3.522,2509,4.382,2510,4.382,2511,4.044,2512,7.029,2513,4.382]],["keywords/331",[]],["title/332",[102,253.114,254,438.9,290,435.92,639,555.022,658,523.739,2514,906.548]],["content/332",[30,3.651,53,1.914,138,7.434,186,10.264,210,7.619,212,8.179,227,8.074,230,6.099,237,7.879,290,11.274,487,8.448,639,8.074,744,8.664,752,11.112,1025,6.995,1143,10.597,1222,9.729,1389,13.086,2357,11.112,2372,14.585,2375,11.498,2376,11.498,2486,12.169,2487,12.169,2488,12.169,2511,12.169,2512,16.749,2515,18.151,2516,13.187,2517,22.358,2518,18.151,2519,13.187,2520,13.187,2521,13.187]],["keywords/332",[]],["title/333",[77,391.076,290,435.92,315,262.763,1384,548.168,1441,668.821,2522,790.426]],["content/333",[11,3.944,19,7.797,77,9.232,209,11.301,249,9.133,290,8.137,475,10.111,542,11.498,558,8.901,598,14.112,628,5.877,658,9.776,717,9.216,846,9.216,963,9.674,1071,10.232,1384,10.232,1737,12.805,1862,12.485,2406,14.755,2523,16.922,2524,16.922,2525,16.922]],["keywords/333",[]],["title/334",[224,355.789,258,332.895,290,618.039,639,504.942,2357,504.942,2526,719.105]],["content/334",[1,2.44,5,4.854,6,4.127,11,3.04,30,4.076,53,1.893,58,5.13,77,4.411,133,2.479,138,4.188,163,10.91,164,10.282,181,3.345,200,6.615,224,7.772,229,3.089,254,4.95,258,6.108,277,4.471,290,11.074,326,8.216,363,3.846,527,2.468,571,9.605,622,5.249,639,6.26,770,12.028,1008,8.938,1023,9.632,1027,5.424,1061,5.723,1138,4.575,1220,6.718,1282,7.958,1445,4.411,1516,7.076,1565,7.737,1626,5.172,1674,7.737,2026,6.615,2059,13.195,2186,8.216,2347,16.543,2357,11.03,2527,8.915,2528,10.225,2529,6.202,2530,5.723,2531,5.723,2532,6.202,2533,5.723,2534,5.723,2535,5.723,2536,9.435,2537,15.133,2538,9.435,2539,8.915,2540,10.225,2541,6.202]],["keywords/334",[]],["title/335",[290,396.587,639,504.942,658,476.482,663,624.079,1185,407.802,2357,504.942,2542,719.105]],["content/335",[11,4.189,224,7.754,290,10.687,475,10.74,663,13.602,991,14.445,1085,12.005,1185,8.888,1361,11.299,1392,15.673,2357,13.607,2543,17.975,2544,17.975,2545,17.975,2546,17.975,2547,17.975,2548,17.975]],["keywords/335",[]],["title/336",[162,439.659,232,673.876,2280,782.637]],["content/336",[6,4.62,11,2.667,19,4.17,30,3.463,47,6.838,53,1.661,102,6.659,119,7.007,164,11.163,224,4.937,232,8.689,257,5.619,258,4.62,268,11.596,567,7.007,616,13.8,626,8.444,661,7.007,851,4.964,1028,3.745,1090,10.561,1446,8.66,1620,6.76,1656,8.078,1674,8.66,2280,7.921,2357,7.007,2549,10.561,2550,11.445,2551,11.445,2552,11.445,2553,11.445,2554,11.445,2555,11.445,2556,11.445,2557,11.445,2558,11.445,2559,11.445,2560,16.43,2561,16.43,2562,16.43,2563,16.43,2564,11.445,2565,11.445,2566,11.445,2567,11.445,2568,11.445,2569,11.445,2570,11.445,2571,11.445,2572,11.445,2573,11.445]],["keywords/336",[]],["title/337",[613,579.136,867,616.411,2418,847.913]],["content/337",[]],["keywords/337",[]],["title/338",[1008,762.193,1489,753.709,2574,1076.194]],["content/338",[5,5.355,6,5.809,7,5.118,30,3.609,53,2.089,72,5.7,77,10,526,8.703,571,8.964,613,6.459,619,5.984,705,3.958,717,10.489,718,5.472,719,6.615,1008,12.821,1028,4.709,1104,7.221,1183,7.634,1384,8.703,1732,9.311,2100,8.811,2173,11.565,2271,12.278,2277,14.991,2315,10.158,2392,9.456,2418,9.456,2575,14.392,2576,12.549,2577,14.392]],["keywords/338",[]],["title/339",[315,374.061,596,716.073,2578,1190.871]],["content/339",[15,5.429,16,6.423,30,3.459,43,5.762,53,1.885,55,8.58,72,5.144,77,7.749,115,10.164,182,10.064,232,5.374,290,8.637,315,5.206,316,7.278,396,7.672,596,12.326,619,5.401,626,9.583,705,3.572,717,9.783,718,4.938,1011,10.11,1018,12.95,1027,6.89,1220,8.534,1426,9.583,2154,9.829,2162,8.534,2277,10.11,2315,9.168,2349,9.583,2353,9.583,2357,7.953,2392,8.534,2418,8.534,2579,12.99,2580,8.99,2581,11.986,2582,12.99,2583,11.326,2584,12.99,2585,12.99]],["keywords/339",[]],["title/340",[613,507.485,705,310.969,861,563.234,2266,880.179]],["content/340",[1,2.98,53,2.363,55,7.779,315,4.72,596,11.589,613,9.372,705,4.478,861,8.111,1441,12.015,2349,12.015,2392,15.978,2394,11.741,2581,15.028,2586,9.971,2587,12.676,2588,13.581,2589,14.2,2590,16.286,2591,16.286,2592,16.286,2593,16.286]],["keywords/340",[]],["title/341",[613,730.956,2279,731.606,2594,1130.867]],["content/341",[1,2.895,6,6.927,30,3.545,53,2.49,54,4.452,58,8.611,130,8.978,200,11.103,278,11.25,613,10.895,622,8.811,705,3.346,861,11.339,1011,9.471,1565,9.208,2100,7.45,2271,7.757,2272,8.268,2279,7.872,2349,12.661,2392,14.959,2394,8.773,2396,10.61,2413,8.978,2418,13.062,2586,7.45,2588,14.312,2595,11.229,2596,8.773,2597,12.169,2598,12.169]],["keywords/341",[]],["title/342",[861,501.222,1011,783.272,2599,1006.359,2600,1006.359,2601,1006.359]],["content/342",[30,3.938,53,2.409,82,9.694,484,14.364,517,13.477,2353,12.245,2354,17.629,2357,12.943,2390,17.629,2391,14.472,2407,19.508,2408,13.841,2409,15.316,2536,15.316,2538,15.316,2602,16.598,2603,16.598]],["keywords/342",[]],["title/343",[77,391.076,254,438.9,1384,548.168,2026,586.485,2305,836.54,2604,906.548]],["content/343",[19,6.984,30,2.985,53,2.782,75,13.354,317,4.541,484,13.024,517,12.22,2026,12.401,2353,14.142,2357,11.736,2390,15.985,2391,16.713]],["keywords/343",[]],["title/344",[6,456.454,571,526.325,870,660.459,1489,660.459]],["content/344",[]],["keywords/344",[]],["title/345",[6,332.895,219,550.791,613,370.112,662,487.1,1021,719.105,2605,824.75,2606,824.75]],["content/345",[1,2.764,6,8.183,30,3.512,33,7.064,43,6.9,53,2.257,58,10.173,200,10.063,278,8.802,571,7.24,613,9.098,658,8.987,861,10.098,2271,9.916,2272,10.569,2349,11.476,2392,14.82,2394,11.214,2413,11.476,2576,13.562,2586,9.523,2588,12.972,2595,14.354,2607,15.555]],["keywords/345",[]],["title/346",[55,480.678,596,558.394,658,581.403,662,594.358,2608,1006.359]],["content/346",[53,3.015,55,9.924,1194,11.021,1197,15.722,2349,15.329,2392,13.651]],["keywords/346",[]],["title/347",[258,406.198,658,581.403,770,569.464,2418,661.203,2609,1006.359]],["content/347",[11,4.674,527,7.98,622,10.296,1008,11.845,1023,10.139,1445,8.652,2347,18.483,2527,17.487]],["keywords/347",[]],["title/348",[1,123.323,32,402.322,278,569.464,1211,725.536,2610,1006.359]],["content/348",[5,6.421,11,4.022,30,2.687,53,2.505,72,6.835,133,6.9,229,8.596,326,13.869,363,10.704,622,8.861,658,9.971,770,9.766,1023,8.725,1626,14.393,2186,13.869,2347,16.865,2527,15.048,2531,15.926,2533,15.926,2534,15.926,2535,15.926,2611,17.259]],["keywords/348",[]],["title/349",[224,301.398,258,282.004,290,541.847,639,427.75,662,412.635,1267,317.271,2347,543.788,2612,698.667]],["content/349",[1,1.568,5,6.615,30,3.738,53,2.58,58,6.421,69,8.953,77,7.669,102,3.573,224,7.669,278,7.242,315,3.709,326,10.284,613,7.978,705,3.519,770,7.242,861,6.374,1003,6.847,1011,9.961,1023,6.47,1191,9.684,1220,8.408,1267,5.812,1489,7.474,1620,7.558,2347,19.541,2349,16.285,2392,15.239,2587,9.961,2588,10.672,2596,9.227,2613,12.798]],["keywords/349",[]],["title/350",[6,365.912,662,535.41,2614,906.548,2615,906.548,2616,906.548,2617,728.482]],["content/350",[1,1.592,6,5.243,14,9.099,15,5.429,16,6.423,30,2.023,77,8.882,78,6.246,111,8.165,112,6.246,212,8.056,220,8.675,396,7.672,461,5.544,538,8.165,540,12.943,542,8.826,553,8.281,578,9.365,603,9.365,620,9.168,642,10.11,658,7.504,662,10.609,665,7.586,734,6.332,757,6.332,917,9.168,940,8.404,1241,7.504,1293,14.434,1558,7.854,1565,9.829,1656,9.168,1686,10.832,1727,9.365,1997,10.438,2057,10.832,2617,10.438,2618,11.986,2619,12.99,2620,11.986,2621,11.986,2622,12.99,2623,12.99,2624,11.986,2625,11.986]],["keywords/350",[]],["title/351",[200,834.902,940,834.902,1159,800.382]],["content/351",[1,2.546,542,14.118,940,13.442,972,11.42,1389,14.98,2626,20.778]],["keywords/351",[]],["title/352",[1,158.147,940,834.902,972,709.345]],["content/352",[0,1.59,1,2.517,6,4.775,13,4.878,19,2.705,24,1.975,30,3.048,42,4.336,43,3.293,53,1.717,54,2.716,55,3.546,71,6.695,72,2.94,74,6.026,75,4.289,85,5.044,88,3.507,93,3.645,155,2.873,162,4.599,233,2.663,290,3.57,291,2.465,302,2.553,315,2.152,338,2.011,535,2.926,553,7.542,571,8.551,572,4.007,586,3.011,596,4.119,628,2.578,639,4.545,647,6.34,662,4.385,680,5.85,681,2.913,686,5.248,861,3.698,867,5.651,940,14.573,972,6.503,991,9.507,996,8.35,1018,5.352,1028,2.429,1151,6.191,1152,5.966,1182,5.966,1183,3.938,1230,3.905,1293,5.966,1388,5.044,1401,6.473,1558,4.489,1619,4.958,1620,9.936,1835,5.778,2162,4.878,2280,5.138,2349,14.443,2379,6.851,2392,12.862,2530,10.917,2617,5.966,2624,6.851,2627,7.424,2628,6.851,2629,6.851,2630,12.299,2631,7.424,2632,7.424,2633,6.851,2634,6.851,2635,6.851,2636,6.851,2637,6.851,2638,7.424,2639,7.424,2640,7.424,2641,7.424,2642,7.424,2643,7.424,2644,7.424,2645,7.424,2646,6.851,2647,7.424,2648,7.424,2649,7.424,2650,11.83,2651,7.424]],["keywords/352",[]],["title/353",[571,600.637,1138,952.113,1733,976.532]],["content/353",[]],["keywords/353",[]],["title/354",[571,352.084,771,451.985,1008,709.229,1104,379.564,1135,505.206,1397,630.849,2392,497.034]],["content/354",[]],["keywords/354",[]],["title/355",[5,337.289,6,365.912,571,421.923,662,535.41,1398,836.54,2617,728.482]],["content/355",[1,1.809,6,5.958,14,6.046,15,6.169,16,7.298,77,6.367,198,5.087,212,9.154,461,6.299,543,10.029,565,10.889,571,6.87,620,10.418,658,8.527,662,13.829,757,7.196,861,7.351,940,9.549,963,8.438,1071,8.925,1077,13.62,1222,10.889,1245,10.641,1246,12.309,1247,11.861,1465,7.763,1558,8.925,1656,10.418,1686,12.309,2057,12.309,2617,11.861,2618,13.62,2620,13.62,2621,13.62,2652,14.76,2653,14.76,2654,14.76]],["keywords/355",[]],["title/356",[540,632.593,719,462.581,1132,651.057,1138,742.458,2655,1006.359]],["content/356",[]],["keywords/356",[]],["title/357",[542,768.382,1389,815.301,2656,1043.535,2657,1130.867]],["content/357",[1,2.671,6,8.797,13,8.167,14,5.092,15,5.195,16,6.146,53,1.804,71,4.251,162,4.833,253,8.301,254,6.018,542,11.837,571,11.071,581,9.989,647,4.685,662,7.341,686,5.514,867,5.937,972,9.575,975,7.924,1105,9.989,1246,10.366,1247,9.989,1401,17.536,1441,9.171,1621,9.989,1651,10.838,2078,10.838,2392,14.32,2625,11.471,2628,11.471,2629,11.471,2630,10.366,2633,11.471,2634,11.471,2635,11.471,2636,11.471,2646,11.471,2656,16.075,2658,12.43,2659,12.43,2660,12.43,2661,12.43]],["keywords/357",[]],["title/358",[570,708.38,1276,897.826]],["content/358",[]],["keywords/358",[]],["title/359",[71,513.937,2155,1060.637]],["content/359",[1,2.349,72,7.591,230,10.691,535,7.556,570,9.036,623,9.547,938,11.591,1067,11.321,1840,11.961,1961,14.919,2095,13.53]],["keywords/359",[]],["title/360",[1,138.581,162,439.659,570,533.097,1961,880.179]],["content/360",[]],["keywords/360",[]],["title/361",[1,158.147,272,716.073,2351,1125.225]],["content/361",[1,2.43,2,8.553,3,16.534,335,7.673,361,10.1,429,6.395,586,8.042,641,12.639,645,8.461,1834,12.827]],["keywords/361",[]],["title/362",[1,138.581,1484,610.369,2356,986.011,2662,908.739]],["content/362",[1,2.487,14,8.311,80,8.85,96,9.962,314,8.19,528,11.984,530,14.322,1185,10.033]],["keywords/362",[]],["title/363",[1,158.147,1022,723.042,2405,1076.194]],["content/363",[4,9.163,11,4.674,613,9,939,9.777,1075,11.349,1154,11.713,1703,11.983,2095,14.156,2497,16.117]],["keywords/363",[]],["title/364",[1,158.147,770,730.268,2412,1076.194]],["content/364",[258,8.593,350,10.929,571,9.908,755,13.203]],["keywords/364",[]],["title/365",[1,158.147,1797,593.203,2420,1125.225]],["content/365",[1,2.577,379,6.807,429,6.783,645,8.975,1797,9.666]],["keywords/365",[]],["title/366",[1,158.147,102,360.324,2663,1190.871]],["content/366",[102,5.732,340,9.38,619,8.537,680,10.152,681,8.056,1318,13.95,1937,12.415]],["keywords/366",[]],["title/367",[1,158.147,72,511.082,2664,1190.871]],["content/367",[1,2.546,72,8.228,340,9.492,645,8.867,1388,16.474]],["keywords/367",[]],["title/368",[1,158.147,155,499.465,2665,1190.871]],["content/368",[1,1.592,11,3.027,88,3.85,99,6.95,102,5.749,155,8.598,156,8.826,287,10.832,291,6.835,299,14.1,305,6.163,321,8.165,335,6.952,429,6.641,533,6.722,534,6.722,535,5.12,558,6.832,570,8.468,571,6.046,588,5.665,615,5.374,624,8.061,641,13.126,645,7.666,670,4.205,672,13.981,680,8.882,1388,8.826,2031,8.534,2168,10.832,2666,11.986,2667,11.986,2668,11.986,2669,11.986]],["keywords/368",[]],["title/369",[586,523.434,1023,652.393,2457,893.138]],["content/369",[1,3.017,2,7.669,11,4.143,24,5.436,27,10.75,33,8.073,54,8.783,72,5.068,233,4.598,260,5.919,288,7.738,302,2.762,335,4.953,338,3.467,345,7.835,363,7.937,527,5.092,535,7.008,597,8.408,615,5.295,645,7.587,718,4.866,1464,10.284,1703,7.646,1835,13.837,1944,8.696,2200,10.672,2574,14.825,2670,11.809,2671,11.809,2672,11.809,2673,11.809,2674,15.501,2675,11.809]],["keywords/369",[]],["title/370",[1,158.147,6,520.9,217,716.073]],["content/370",[]],["keywords/370",[]],["title/371",[75,745.578,258,520.9,601,753.709]],["content/371",[1,2.094,11,3.983,53,2.48,75,12.441,217,9.482,258,8.692,290,10.355,601,9.98,770,9.67,959,9.873,1099,14.251,2353,15.887,2357,13.184,2393,14.9,2676,13.301,2677,15.769,2678,15.769,2679,15.769,2680,15.769]],["keywords/371",[]],["title/372",[171,1169.584,571,699.382]],["content/372",[1,2.768,4,7.723,6,7.932,24,4.498,28,6.674,54,2.74,55,7.085,63,6.245,88,3.531,99,4.006,102,2.091,112,7.132,162,2.911,188,6.529,193,6.529,301,4.281,338,2.028,571,9.954,596,8.23,613,7.586,701,5.399,752,9.081,770,11.12,909,12.188,931,6.529,1034,9.014,1166,5.525,1183,8.967,1510,4.195,1733,9.014,1797,3.442,1835,5.828,2279,11.937,2299,6.91,2372,6.017,2394,13.303,2463,6.529,2522,6.529,2637,6.91,2681,7.488,2682,7.488,2683,13.687,2684,7.488,2685,10.386,2686,11.912,2687,7.488,2688,7.488,2689,7.488,2690,14.832,2691,5.399,2692,11.544,2693,10.992,2694,13.687,2695,10.992,2696,10.992,2697,10.992,2698,10.992,2699,13.687,2700,6.91,2701,6.245,2702,13.687,2703,6.91,2704,6.91,2705,6.91,2706,10.992,2707,6.91,2708,10.992,2709,6.91,2710,6.91,2711,6.91,2712,6.91,2713,6.91]],["keywords/372",[]],["title/373",[2714,1659.47]],["content/373",[]],["keywords/373",[]],["title/374",[0,194.094,2,391.076,24,241.221,315,262.763,338,245.561,2715,577.917]],["content/374",[]],["keywords/374",[]],["title/375",[0,194.094,2,391.076,24,241.221,315,262.763,338,245.561,2715,577.917]],["content/375",[0,3.315,2,2.326,4,7.672,11,2.12,12,3.99,15,6.471,24,3.14,30,4.196,47,7.051,53,1.32,54,6.144,55,4.345,56,3.26,58,5.921,71,4.036,137,4.182,162,3.537,168,2.812,180,4.907,181,2.977,224,2.326,257,2.647,258,2.176,303,3.149,317,2.796,338,3.197,358,3.505,361,2.746,379,1.745,452,3.437,468,6.076,555,3.184,586,3.69,613,4.083,622,2.768,624,5.296,668,2.86,715,2.434,718,2.05,719,4.182,757,2.628,867,2.575,989,4.701,1023,2.725,1028,2.977,1194,4.826,1249,4.496,1445,5.091,1462,3.6,1463,5.8,1494,3.051,1525,2.936,1537,3.184,1714,5.977,1720,3.26,1761,3.344,1892,4.196,2100,3.301,2264,7.882,2389,6.181,2413,3.978,2418,3.542,2508,4.332,2580,6.296,2586,3.301,2715,9.871,2716,7.587,2717,7.587,2718,7.587,2719,7.587,2720,8.395,2721,3.978,2722,4.332,2723,10.929,2724,4.196,2725,7.754,2726,4.975,2727,4.975,2728,4.975,2729,4.975,2730,7.319,2731,4.975,2732,4.975,2733,4.975,2734,3.978,2735,4.975,2736,4.975,2737,4.496,2738,4.196,2739,4.196,2740,6.712,2741,4.975,2742,4.496,2743,4.975,2744,4.975,2745,4.975,2746,8.395,2747,4.975,2748,4.975,2749,10.89,2750,10.89,2751,4.975,2752,4.975,2753,3.978,2754,4.496,2755,3.978,2756,8.707,2757,3.978,2758,3.978]],["keywords/375",[]],["title/376",[11,211.281,24,241.221,317,214.759,338,245.561,1028,296.612,2715,577.917]],["content/376",[12,7.967,19,6.618,24,4.833,317,4.303,338,4.92,569,10.544,586,7.367,645,7.752,670,5.88,1028,5.943,2715,15.452,2759,16.761,2760,16.761,2761,10.983,2762,13.401]],["keywords/376",[]],["title/377",[24,343.395,338,349.572,1028,422.248]],["content/377",[0,2.867,4,6.118,11,4.275,12,9.176,19,4.879,24,6.272,54,4.899,338,6.594,443,7.655,569,8.647,619,7.627,624,8.231,657,8.798,670,4.335,846,7.293,1028,7.713,1148,8.943,1445,5.777,2715,11.693,2761,11.091,2763,12.357,2764,12.357,2765,13.533,2766,12.052,2767,10.423,2768,10.423,2769,10.423,2770,12.357,2771,10.423]],["keywords/377",[]],["title/378",[1,158.147,33,586.043,36,723.042]],["content/378",[]],["keywords/378",[]],["title/379",[34,1130.435]],["content/379",[36,11.237,37,15.61,40,9.394,42,11.713,54,7.338,148,13.88,233,4.514,304,10.139,2772,18.507]],["keywords/379",[]],["title/380",[1,158.147,33,586.043,40,604.462]],["content/380",[1,2.838,24,4.375,33,7.466,36,11.772,53,2.386,54,7.687,55,7.853,56,9.941,57,11.171,58,8.249,59,11.853,68,5.602,79,6.802,182,9.211,223,7.96,335,6.363,338,4.453,371,9.602,1071,9.941,1183,8.721,1184,12.129,1877,13.71,2773,15.171,2774,15.171]],["keywords/380",[]],["title/381",[54,549.77,75,868.152]],["content/381",[53,3.089,83,11.49,667,8.023,2775,17.752]],["keywords/381",[]],["title/382",[1,184.147,166,1137.075]],["content/382",[1,2.375,30,3.018,36,13.971,53,2.813,77,8.362,131,12.945,166,14.667,2776,16.164,2777,17.886,2778,16.164]],["keywords/382",[]],["title/383",[296,508.161,1690,931.966]],["content/383",[1,0.972,9,4.173,20,8.99,30,1.942,36,11.287,40,3.716,41,2.693,53,2.754,54,5.636,68,4.248,83,4.282,84,4.245,102,5.625,120,4.173,137,3.647,145,11.13,168,4.139,180,3.299,198,2.734,221,5.803,232,9.029,251,3.841,257,7.562,258,3.202,260,3.67,272,4.402,296,5.209,308,9.199,309,5.058,315,4.465,317,2.954,325,14.559,333,5.391,347,5.853,350,4.073,361,4.042,363,4.921,485,4.686,586,3.218,619,3.299,650,5.058,668,4.208,755,4.921,1022,4.445,1023,4.011,1075,4.49,1130,5.853,1153,4.634,1515,4.921,1520,9.125,1690,4.921,1834,5.133,2389,5.391,2497,6.376,2723,5.6,2778,6.616,2779,20.605,2780,12.845,2781,7.321,2782,7.321,2783,11.506,2784,11.506,2785,7.321,2786,10.02,2787,7.321,2788,7.321,2789,7.321,2790,7.321,2791,7.321,2792,7.321,2793,7.321,2794,7.321,2795,7.321,2796,7.321,2797,7.321,2798,7.321,2799,7.321]],["keywords/383",[]],["title/384",[1,158.147,102,360.324,137,593.203]],["content/384",[0,1.842,1,2.415,10,8.139,11,5.061,14,5.44,19,4.839,20,6.203,30,2.84,32,3.44,36,7.441,40,4.03,41,6.691,42,7.757,53,2.647,54,3.148,68,6.716,78,4.137,79,3.559,89,9.58,102,5.093,105,14.272,137,8.384,139,7.593,140,6.914,146,10.337,154,4.488,156,5.846,160,6.914,232,3.559,248,5.408,249,8.755,251,6.43,257,4.224,263,6.51,266,6.073,269,4.488,304,6.714,309,5.485,311,6.475,313,3.596,314,3.473,315,2.494,318,6.348,319,7.175,320,7.175,321,5.408,322,6.348,328,11.075,329,7.175,330,7.175,333,5.846,335,3.33,340,6.068,475,5.141,625,6.348,958,5.746,1128,7.502,1148,5.746,1193,5.268,1527,6.073,2327,6.348,2780,7.175,2800,7.939,2801,12.256,2802,7.939,2803,7.939,2804,7.939,2805,7.939]],["keywords/384",[]],["title/385",[2806,1659.47]],["content/385",[]],["keywords/385",[]],["title/386",[22,455.254,198,444.753,1489,753.709]],["content/386",[0,2.27,2,6.706,10,5.321,11,2.472,14,6.367,19,3.864,30,1.651,53,3.131,55,5.065,56,6.412,57,10.562,58,5.321,60,4.797,68,3.613,71,3.627,78,5.099,79,4.387,111,6.666,112,5.099,133,4.24,162,4.123,198,3.655,217,5.884,258,4.28,295,9.181,305,5.032,317,2.512,335,8.351,434,5.829,510,8.254,528,6.263,533,5.488,624,4.759,856,6.062,867,5.065,870,6.193,1022,5.941,1075,6.001,1085,7.082,1153,6.193,1211,7.645,1299,9.246,1516,7.339,1577,7.824,1666,7.485,2247,8.522,2587,8.254,2596,7.645,2730,11.414,2767,12.099,2807,9.786,2808,9.786,2809,9.786,2810,8.843,2811,14.345,2812,9.786,2813,9.786,2814,9.786,2815,9.786,2816,9.786,2817,9.786,2818,9.786,2819,9.786,2820,9.786,2821,9.786,2822,9.786,2823,9.786,2824,9.786]],["keywords/386",[]],["title/387",[24,343.395,338,349.572,1489,753.709]],["content/387",[11,4.467,12,8.407,24,5.101,311,9.345,338,5.192,341,11.195,569,9.036,1025,10.168,1028,6.272,1494,10.847,2761,11.591,2766,12.594,2771,14.919]],["keywords/387",[]],["title/388",[0,276.306,23,480.154,2715,822.704]],["content/388",[]],["keywords/388",[]],["title/389",[0,276.306,22,455.254,355,604.462]],["content/389",[0,0.476,2,0.204,5,0.347,7,0.642,11,0.793,12,0.208,14,0.382,15,0.389,16,0.461,18,2.045,19,0.81,22,0.167,23,0.176,24,0.126,30,3.763,41,0.316,43,1.165,47,0.283,50,0.705,53,0.323,54,1.511,58,0.468,60,0.123,68,0.469,71,1.033,80,0.6,82,1.055,86,0.612,93,2.366,96,0.457,99,6.728,102,2.508,111,0.586,118,1.755,120,0.95,138,0.74,143,0.687,162,2.596,180,0.924,181,1.113,183,0.369,195,0.258,201,3.215,202,0.334,204,0.633,212,9.351,219,0.316,223,1.646,224,0.204,225,0.746,229,1.504,232,7.17,234,0.251,236,1.694,251,0.451,257,1.29,258,0.729,265,4.563,272,6.027,273,0.349,278,0.778,290,1.635,291,0.309,309,0.302,310,0.725,315,1.765,316,0.522,334,1.092,338,0.128,355,0.644,358,1.012,361,1.921,362,0.369,363,0.294,365,1.629,369,0.302,371,0.544,385,0.294,387,0.334,388,0.578,389,0.294,401,0.687,425,1.187,429,0.301,432,0.725,434,0.26,444,2.131,452,11.973,466,1.032,480,0.958,484,0.322,487,2.243,489,0.369,494,0.369,500,8.137,506,0.369,517,0.302,527,0.188,541,0.334,543,0.633,546,1.763,549,0.322,563,1.352,569,0.223,587,3.873,611,0.586,613,7.231,624,0.617,629,0.341,630,0.705,631,0.586,644,1.629,645,1.121,719,1.208,759,1.187,771,2.677,867,1.255,959,3.161,971,0.812,984,0.294,1022,4.903,1028,0.591,1071,2.056,1074,0.349,1076,0.29,1093,0.38,1096,2.111,1104,1.115,1136,0.316,1142,0.358,1148,0.622,1159,3.394,1179,0.316,1193,0.29,1198,0.687,1209,8.838,1216,1.332,1264,0.316,1266,3.873,1361,0.298,1465,0.249,1489,8.806,1534,0.322,1541,0.935,1543,3.862,1619,0.622,1620,0.28,1666,0.334,1720,0.563,1727,0.341,1781,2.045,1840,0.482,1876,1.988,1911,1.534,1983,0.369,2019,2.518,2066,12.384,2071,2.509,2151,5.568,2170,2.452,2402,1.506,2477,1.575,2479,0.812,2481,0.812,2526,2.291,2587,0.369,2589,0.812,2596,0.341,2685,1.575,2715,0.302,2724,0.725,2725,0.311,2734,12.096,2766,0.311,2767,0.369,2771,0.369,2786,0.749,2810,0.395,2825,0.437,2826,0.306,2827,0.437,2828,0.437,2829,0.437,2830,0.437,2831,0.437,2832,0.437,2833,0.437,2834,0.369,2835,0.437,2836,0.437,2837,0.437,2838,0.437,2839,0.437,2840,0.437,2841,0.437,2842,0.437,2843,0.437,2844,0.437,2845,1.666,2846,0.437,2847,0.349,2848,0.86,2849,0.437,2850,1.27,2851,0.437,2852,0.437,2853,0.437,2854,0.437,2855,0.437,2856,0.437,2857,0.437,2858,0.437,2859,0.437,2860,0.437,2861,0.437,2862,0.437,2863,0.358,2864,1.666,2865,5.049,2866,5.62,2867,4.447,2868,11.604,2869,4.447,2870,5.049,2871,8.906,2872,8.906,2873,2.424,2874,5.049,2875,4.447,2876,5.049,2877,4.447,2878,5.049,2879,2.424,2880,2.424,2881,2.424,2882,2.424,2883,5.049,2884,4.447,2885,11.008,2886,5.049,2887,8.5,2888,4.447,2889,4.563,2890,4.447,2891,4.447,2892,4.447,2893,4.447,2894,0.86,2895,0.86,2896,0.86,2897,0.86,2898,0.86,2899,0.86,2900,0.86,2901,0.86,2902,0.86,2903,0.86,2904,0.777,2905,0.86,2906,0.86,2907,0.86,2908,0.86,2909,0.86,2910,0.86,2911,0.86,2912,0.86,2913,0.86,2914,0.86,2915,0.86,2916,0.86,2917,0.86,2918,0.86,2919,0.86,2920,0.86,2921,0.86,2922,1.666,2923,0.86,2924,0.86,2925,0.437,2926,1.666,2927,0.86,2928,0.437,2929,0.86,2930,0.86,2931,13.914,2932,9.295,2933,2.424,2934,0.86,2935,0.86,2936,2.424,2937,0.86,2938,0.86,2939,4.447,2940,4.447,2941,0.86,2942,0.86,2943,0.86,2944,0.86,2945,2.424,2946,2.424,2947,0.86,2948,0.86,2949,7.631,2950,7.631,2951,2.424,2952,2.424,2953,0.86,2954,0.86,2955,2.424,2956,0.86,2957,0.86,2958,4.447,2959,4.447,2960,0.86,2961,0.86,2962,0.86,2963,0.86,2964,4.447,2965,4.447,2966,0.86,2967,0.86,2968,0.86,2969,0.86,2970,2.424,2971,2.424,2972,0.86,2973,0.86,2974,2.424,2975,0.86,2976,0.86,2977,2.424,2978,0.86,2979,0.86,2980,6.161,2981,6.161,2982,0.86,2983,0.86,2984,2.424,2985,2.424,2986,0.86,2987,0.86,2988,2.424,2989,0.86,2990,0.86,2991,2.424,2992,0.86,2993,0.86,2994,2.424,2995,3.138,2996,0.86,2997,0.86,2998,3.48,2999,6.923,3000,6.923,3001,0.86,3002,0.86,3003,0.86,3004,0.86,3005,2.424,3006,0.86,3007,0.86,3008,0.86,3009,0.86,3010,0.437,3011,0.86,3012,2.424,3013,2.424,3014,0.86,3015,0.86,3016,0.86,3017,0.86,3018,0.86,3019,0.86,3020,2.424,3021,0.86,3022,0.86,3023,2.424,3024,0.86,3025,0.86,3026,2.424,3027,0.86,3028,0.86,3029,2.424,3030,0.86,3031,0.86,3032,2.424,3033,2.424,3034,0.86,3035,0.437,3036,2.424,3037,2.424,3038,0.86,3039,0.437,3040,0.437,3041,0.437,3042,13.914,3043,13.914,3044,2.424,3045,0.86,3046,0.86,3047,0.86,3048,0.777,3049,0.86,3050,0.777,3051,0.86,3052,0.777,3053,0.86,3054,0.777,3055,0.86,3056,0.86,3057,0.777,3058,0.86,3059,0.725,3060,0.86,3061,18.331,3062,0.86,3063,0.86,3064,2.424,3065,0.86,3066,1.666,3067,0.86,3068,1.666,3069,2.424,3070,0.86,3071,0.86,3072,0.86,3073,0.86,3074,0.86,3075,0.86,3076,0.86,3077,1.666,3078,0.86,3079,0.86,3080,1.666,3081,0.86,3082,2.424,3083,0.86,3084,0.86,3085,0.86,3086,2.424,3087,0.86,3088,1.666,3089,0.86,3090,2.424,3091,0.86,3092,0.86,3093,0.86,3094,0.86,3095,0.86,3096,0.86,3097,0.86,3098,0.86,3099,0.86,3100,2.051,3101,0.86,3102,0.86,3103,0.437,3104,0.86,3105,0.86,3106,1.666,3107,0.86,3108,0.86,3109,0.86,3110,0.86,3111,0.86,3112,0.86,3113,0.86,3114,0.86,3115,0.86,3116,0.86,3117,0.86,3118,0.86,3119,1.666,3120,1.666,3121,1.666,3122,1.666,3123,1.666,3124,1.666,3125,1.666,3126,0.86,3127,0.86,3128,0.86,3129,0.86,3130,1.666,3131,5.62,3132,2.424,3133,0.86,3134,0.86,3135,0.86,3136,0.749,3137,0.86,3138,0.86,3139,0.86,3140,0.86,3141,0.86,3142,0.86,3143,0.86,3144,0.86,3145,0.86,3146,1.666,3147,0.86,3148,0.86,3149,0.86,3150,0.86,3151,0.86,3152,0.86,3153,6.923,3154,2.787,3155,2.787,3156,0.86,3157,0.86,3158,0.86,3159,0.86,3160,0.86,3161,0.86,3162,0.437,3163,0.437,3164,0.437,3165,0.437,3166,0.86,3167,0.86,3168,0.86,3169,0.395,3170,0.437,3171,0.437,3172,0.437,3173,0.437,3174,3.138,3175,0.437,3176,1.666,3177,0.437,3178,1.666,3179,1.666,3180,0.437,3181,1.666,3182,0.437,3183,0.86,3184,0.86,3185,0.86,3186,0.437,3187,0.437,3188,0.437,3189,0.437,3190,0.437,3191,1.666,3192,0.437,3193,0.437,3194,0.437,3195,0.86]],["keywords/389",[]],["title/390",[11,234.543,40,471.36,41,341.595,300,581.403,304,508.737]],["content/390",[]],["keywords/390",[]],["title/391",[40,529.678,41,383.857,304,571.678,315,327.782]],["content/391",[0,2.569,1,1.471,5,7.984,9,6.312,15,5.015,19,4.372,30,3.527,32,4.797,40,9.241,41,6.697,42,7.008,53,1.741,79,4.965,217,6.658,221,5.585,229,8.464,300,6.933,303,7.008,304,12.224,305,5.694,315,4.926,338,3.251,429,3.871,435,8.154,452,7.65,519,4.043,535,4.73,684,4.168,1035,8.154,1064,11.546,1465,6.312,1516,11.761,1620,7.087,2279,10.994,2724,9.34,3196,11.073,3197,11.073,3198,11.073,3199,11.073,3200,11.073,3201,10.007,3202,11.073,3203,11.073,3204,11.073,3205,11.073]],["keywords/391",[]],["title/392",[9,678.798,40,604.462,2093,847.913]],["content/392",[]],["keywords/392",[]],["title/393",[33,816.647]],["content/393",[19,7.142,33,8.902,53,2.845,79,8.11,83,10.58,229,9.763,346,13.836,347,14.462,2093,12.879,3206,18.088,3207,18.088]],["keywords/393",[]],["title/394",[315,435.558,3208,1386.652]],["content/394",[0,3.588,19,6.106,41,5.688,53,2.432,79,6.933,83,11.48,137,7.703,165,14.516,315,6.165,428,12.681,443,9.581,2093,15.352,3209,15.464,3210,19.486,3211,15.464,3212,15.464,3213,15.464]],["keywords/394",[]],["title/395",[9,678.798,137,593.203,2034,1004.451]],["content/395",[0,3.487,10,8.171,11,3.796,19,5.934,30,2.536,53,2.363,79,6.738,83,11.273,165,12.335,194,10.382,212,10.1,290,7.831,640,11.066,1067,12.335,2034,17.945,2093,15.148,2154,17.446,3210,17.417,3214,15.028]],["keywords/395",[]],["title/396",[43,572.465,335,499.465,2093,847.913]],["content/396",[53,2.845,83,10.58,137,9.01,1619,13.091,2093,15.392,2327,14.462,2775,16.347,3215,18.088,3216,18.088,3217,18.088]],["keywords/396",[]],["title/397",[1,158.147,379,417.745,1797,593.203]],["content/397",[]],["keywords/397",[]],["title/398",[0,194.094,1,111.092,233,204.037,379,293.449,1489,529.45,1797,416.702]],["content/398",[1,1.721,7,4.993,11,4.415,15,5.869,16,6.943,30,2.95,53,2.038,54,5.137,120,7.386,233,4.264,253,9.378,300,8.113,315,4.07,358,5.41,379,7.757,527,5.587,867,6.707,1349,9.911,1351,8.827,1506,9.911,1509,8.293,1513,15.132,1541,9.541,1797,6.455,1944,9.541,2586,8.597,2730,8.709,2734,10.36,3218,12.958,3219,12.958,3220,12.958,3221,10.36,3222,13.977,3223,10.36,3224,10.36,3225,10.36]],["keywords/398",[]],["title/399",[1,158.147,54,472.149,1797,593.203]],["content/399",[]],["keywords/399",[]],["title/400",[54,413.734,303,660.459,1797,519.812,3226,1043.535]],["content/400",[1,2.776,5,8.429,6,8.232,14,6.429,30,3.175,43,6.963,53,2.278,54,8.774,181,5.136,313,6.56,314,6.335,379,5.081,569,7.399,645,6.699,1064,10.665,1104,7.875,1308,13.685,1500,11.58,1510,11.426,1797,7.215,2692,12.216,3227,14.484,3228,14.484]],["keywords/400",[]],["title/401",[54,413.734,705,310.969,861,563.234,1797,519.812]],["content/401",[9,8.331,14,6.488,30,3.194,53,2.299,54,5.795,55,9.799,56,12.405,57,10.762,58,7.947,182,8.874,217,8.789,571,10.59,705,5.641,861,7.889,1008,9.355,1064,10.762,1085,10.578,1185,7.832,1211,11.419,1510,8.874,2026,10.247,2440,12.728,3229,14.616,3230,14.616,3231,14.616,3232,11.686]],["keywords/401",[]],["title/402",[1,158.147,291,428.417,302,278.474]],["content/402",[0,3.623,1,2.623,19,6.165,54,7.83,88,5.016,105,10.495,142,10.948,154,8.828,288,10.232,301,9.674,302,4.618,317,4.009,335,6.549,340,7.731,356,7.639,379,5.478,758,11.711,1619,11.301,1797,9.837,3136,13.598,3233,15.615]],["keywords/402",[]],["title/403",[22,455.254,670,417.745,1762,910.886]],["content/403",[1,1.906,4,7.106,11,3.625,19,5.667,22,7.152,32,6.219,40,7.286,181,5.089,257,7.637,258,6.278,260,7.194,317,3.685,334,9.406,355,7.286,429,5.017,501,8.987,586,6.309,597,10.22,615,6.435,670,7.736,705,4.277,1290,10.388,1329,10.979,1349,10.979,1745,11.476,1762,10.979,1797,7.15,3234,14.354,3235,14.354,3236,14.354]],["keywords/403",[]],["title/404",[88,445.436,301,859.064]],["content/404",[]],["keywords/404",[]],["title/405",[88,445.436,563,538.632]],["content/405",[11,4.842,88,6.159,291,6.898,299,12.564,303,12.135,1230,10.929]],["keywords/405",[]],["title/406",[88,382.545,299,780.355,1230,678.798]],["content/406",[0,1.889,5,5.038,7,7.089,9,4.641,10,4.427,11,2.056,12,5.939,14,3.614,16,4.362,19,3.215,24,3.603,25,3.914,30,3.412,34,5.546,40,4.132,43,6.007,54,3.228,60,4.296,68,3.006,78,6.511,80,5.906,88,7.411,102,5.567,138,3.614,181,2.887,200,5.708,210,5.097,232,5.602,233,4.487,234,4.68,257,4.331,274,5.335,291,2.929,299,5.335,314,3.561,315,2.557,358,5.217,438,8.76,538,10.358,578,6.361,939,4.301,969,6.867,1067,5.211,1209,5.097,1230,4.641,1255,9.557,1259,6.676,1369,6.676,1445,3.806,1464,7.09,2108,7.357,2157,10.881,2674,14.367,3237,8.141,3238,8.141,3239,8.141,3240,8.141,3241,12.495,3242,8.141,3243,8.141,3244,8.141,3245,8.141,3246,8.141,3247,8.141,3248,8.823,3249,8.823,3250,8.823,3251,8.823,3252,8.823,3253,8.141]],["keywords/406",[]],["title/407",[88,445.436,302,324.255]],["content/407",[0,1.908,1,2.455,7,3.169,23,3.316,29,5.603,30,3.812,53,1.293,72,3.53,78,4.286,88,5.508,102,3.81,154,4.65,178,3.977,233,3.072,272,4.946,302,4.559,315,5.386,317,2.112,354,3.261,358,3.434,379,2.885,475,8.154,619,3.706,705,2.451,709,4.769,723,3.888,732,4.612,735,4.345,736,3.157,757,4.345,770,7.723,834,5.15,939,4.345,959,12.704,963,5.096,1230,4.688,1267,4.048,1349,6.291,1437,7.772,1497,5.39,1519,4.612,1797,4.097,3254,8.225,3255,8.225,3256,8.914,3257,8.914,3258,8.914,3259,6.576,3260,8.914,3261,6.576,3262,8.914,3263,6.576,3264,8.225,3265,8.225,3266,8.225,3267,8.225,3268,8.225,3269,8.225,3270,8.225,3271,8.225,3272,8.225,3273,8.225,3274,8.225,3275,12.594,3276,12.594,3277,12.594,3278,8.225,3279,8.225,3280,8.225,3281,8.225,3282,6.576,3283,8.225,3284,8.225,3285,8.225,3286,8.225,3287,8.225,3288,8.225,3289,8.225]],["keywords/407",[]],["title/408",[2863,1360.79]],["content/408",[]],["keywords/408",[]],["title/409",[54,657.936]],["content/409",[]],["keywords/409",[]],["title/410",[40,604.462,41,438.054,1489,753.709]],["content/410",[5,6.296,34,10.637,36,9.481,37,13.171,38,13.598,39,14.112,40,7.926,41,5.744,42,12.499,43,9.493,44,10.36,45,13.598,46,10.495,47,10.111,48,11.944,49,13.598,53,2.456,77,7.3,180,7.036,195,9.216,659,13.171,3290,15.615,3291,16.922]],["keywords/410",[]],["title/411",[1,158.147,41,438.054,178,575.772]],["content/411",[1,3.084,36,12.421,53,3.217,54,7.248,55,7.172,56,11.979,57,10.203,58,7.534,59,10.826,83,8.105,96,9.726,99,8.034,102,4.192,118,5.116,131,10.028,180,6.244,248,9.439,315,5.742,346,10.598,347,11.078,570,7.079,718,5.709,1484,8.105,3292,15.016,3293,13.856]],["keywords/411",[]],["title/412",[1,158.147,85,876.87,2028,822.704]],["content/412",[0,5.274,1,2.775,11,2.264,15,4.059,16,4.803,23,3.614,33,4.411,53,2.114,60,2.532,69,5.908,71,3.322,83,7.861,84,9.349,85,6.6,86,6.382,87,8.1,88,2.879,89,5.737,92,20.232,93,11.435,95,4.465,96,8.579,99,5.197,102,2.712,105,6.024,108,4.059,162,3.776,230,4.492,1737,7.35,1885,5.611,2046,6.487,3294,8.963,3295,9.713,3296,20.8,3297,8.963,3298,9.713,3299,9.713,3300,9.713,3301,20.8,3302,8.1,3303,9.713,3304,9.713,3305,9.713,3306,9.713,3307,9.713,3308,9.713,3309,9.713,3310,9.713,3311,9.713,3312,9.713,3313,8.963,3314,9.713,3315,8.963,3316,9.713]],["keywords/412",[]],["title/413",[155,581.578,274,908.646]],["content/413",[11,5.331,30,3.325,42,12.47,53,2.021,71,6.444,83,7.518,105,8.639,139,10.771,141,11.128,142,12.189,145,13.611,147,10.277,148,9.64,149,11.616,151,9.64,152,10.277,153,10.54,155,5.391,157,11.616,159,11.616,161,16.876,162,7.325,317,3.3,333,9.465,335,5.391,631,8.756,1085,12.583,3317,12.854,3318,12.854]],["keywords/413",[]],["title/414",[317,354.3,355,471.36,723,438.925,1267,456.997]],["content/414",[22,6.838,24,5.158,220,12.945,231,12.559,317,4.592,338,5.25,705,5.33,1028,6.342,1547,14.3,1620,11.448,3319,17.886]],["keywords/414",[]],["title/415",[22,319.798,71,310.048,231,489.296,341,529.45,355,424.611,379,293.449]],["content/415",[1,0.883,9,3.791,30,3.959,53,1.046,71,3.952,93,5.672,108,3.012,162,4.492,181,2.358,198,2.484,210,4.164,231,3.89,311,3.514,317,1.708,338,3.917,354,4.227,355,3.376,479,4.736,670,5.355,723,5.039,790,8.524,794,8.155,830,4.257,856,4.121,867,9.229,870,4.21,958,4.814,959,9.557,1023,3.644,1071,4.358,1452,5.61,1646,5.61,1710,4.079,1732,7.475,1903,4.663,1935,7.949,2043,5.61,2250,8.993,3320,6.651,3321,6.651,3322,6.651,3323,6.651,3324,6.651,3325,6.651,3326,6.651,3327,6.651,3328,6.651,3329,16.707,3330,6.651,3331,6.651,3332,6.011,3333,10.662,3334,6.651,3335,6.651,3336,6.651,3337,6.651,3338,6.651,3339,6.651,3340,6.651,3341,6.651,3342,10.662,3343,6.651,3344,6.651,3345,6.651,3346,15.264,3347,6.651,3348,6.651,3349,10.662,3350,10.662,3351,6.651,3352,6.651,3353,6.651,3354,6.651,3355,6.651,3356,6.651,3357,6.651,3358,6.651,3359,6.651,3360,6.651,3361,10.662,3362,6.651,3363,10.662,3364,10.662,3365,6.651,3366,6.651,3367,6.651,3368,6.651,3369,6.651,3370,6.651,3371,6.651,3372,6.651,3373,6.651,3374,6.651,3375,9.635,3376,6.651,3377,7.208,3378,6.651,3379,6.651,3380,6.651,3381,6.651,3382,6.651,3383,6.651,3384,6.011,3385,6.011]],["keywords/415",[]],["title/416",[22,355.008,162,391.252,233,226.502,659,783.272,1489,587.743]],["content/416",[24,6.15,42,11.195,53,2.782,233,4.314,338,5.192,358,7.385,391,13.266,527,7.627,1023,9.69,1028,6.272,3386,17.688,3387,17.688]],["keywords/416",[]],["title/417",[302,278.474,867,616.411,1267,586.043]],["content/417",[1,2.158,7,6.262,30,2.742,154,9.187,155,6.815,232,7.286,302,4.735,538,11.07,541,12.43,563,6.312,622,9.041,867,8.411,969,13.706,1267,7.997,1441,12.992,1620,10.401,3388,16.25,3389,16.25,3390,16.25,3391,16.25]],["keywords/417",[]],["title/418",[236,642.757,870,753.709,1710,730.268]],["content/418",[1,2.639,11,3.983,60,4.455,80,9.392,138,7,212,10.599,230,7.904,302,3.688,538,10.742,555,10.093,563,7.719,592,11.228,628,5.935,705,4.699,1369,12.931,1421,12.608,1771,11.521,1797,7.855,2863,12.931,3392,17.089]],["keywords/418",[]],["title/419",[102,315.745,535,445.765,670,366.061,1159,701.358]],["content/419",[]],["keywords/419",[]],["title/420",[233,290.461,680,638.111,681,506.352]],["content/420",[]],["keywords/420",[]],["title/421",[233,338.213,315,435.558]],["content/421",[53,3.128,682,10.814,683,15.901]],["keywords/421",[]],["title/422",[225,603.628]],["content/422",[24,3.648,60,6.391,138,7.634,180,7.75,220,9.155,233,4.766,296,6.303,338,3.713,546,5.016,623,9.283,688,7.92,690,10.625,692,9.887,693,7.466,700,7.466,709,9.972,736,4.855,1438,9.024,1454,13.5,1507,8.289,1510,7.681,1975,10.768,2106,10.927,3393,8.502,3394,19.542]],["keywords/422",[]],["title/423",[317,355.985,705,413.216]],["content/423",[1,1.949,6,6.419,30,4.129,53,2.308,60,4.145,68,3.727,185,5.225,296,3.699,356,4.938,358,6.127,470,3.89,519,3.686,628,3.799,682,5.489,684,3.799,685,5.448,686,4.853,687,5.448,688,6.32,689,7.187,690,7.979,691,6.785,692,5.803,693,8.66,694,6.974,695,6.974,696,7.721,697,13.111,698,7.721,699,7.721,700,8.66,701,7.887,702,8.071,703,8.071,709,5.853,783,4.549,878,4.968,879,4.968,880,4.968,910,5.26,911,5.26,3395,5.661,3396,8.071,3397,6.32,3398,7.721,3399,8.071,3400,6.785,3401,7.721,3402,7.721,3403,8.071,3404,8.071,3405,8.071,3406,8.071,3407,8.071]],["keywords/423",[]],["title/424",[138,615.505,233,338.213]],["content/424",[53,3.167,683,16.101]],["keywords/424",[]],["title/425",[317,355.985,705,413.216]],["content/425",[1,1.324,6,4.36,12,6.911,30,4.072,53,2.287,88,4.671,356,4.877,358,7.167,470,3.841,519,3.64,628,3.752,684,3.752,690,9.333,693,10.13,697,10.045,700,10.13,703,7.97,709,9.952,783,4.492,878,4.906,879,4.906,880,4.906,907,10.045,908,10.045,910,8.944,911,8.944,2826,10.194,3395,5.59,3396,7.97,3397,6.241,3398,7.625,3399,7.97,3400,11.536,3401,7.625,3402,7.625,3403,7.97,3404,7.97,3405,7.97,3406,7.97,3407,7.97,3408,9.969,3409,10.905,3410,11.122,3411,9.969]],["keywords/425",[]],["title/426",[233,404.755]],["content/426",[53,3.167,713,14.829]],["keywords/426",[]],["title/427",[225,603.628]],["content/427",[60,6.233,221,9.444,233,4.567,296,6.862,1438,9.824,1975,11.723,2106,9.757]],["keywords/427",[]],["title/428",[317,355.985,705,413.216]],["content/428",[1,2.36,6,5.809,30,3.763,53,2.795,356,6.497,358,7.421,470,5.118,519,4.849,628,4.998,684,4.998,690,7.221,693,7.838,697,12.278,700,7.838,709,7.7,714,9.779,783,5.984,878,6.536,879,6.536,880,6.536,910,6.921,911,6.921,3395,7.447,3396,10.618,3397,8.315,3398,10.158,3399,10.618,3400,8.926,3401,10.158,3402,10.158,3403,10.618,3404,10.618,3405,10.618,3406,10.618,3407,10.618]],["keywords/428",[]],["title/429",[233,338.213,715,678.332]],["content/429",[53,3.128,713,14.644,715,9.729]],["keywords/429",[]],["title/430",[225,603.628]],["content/430",[9,8.73,24,4.417,60,6.064,221,7.725,233,5.236,296,5.613,338,4.496,623,10.529,688,9.589,690,10.607,736,5.878,1438,10.235,1975,9.589,2106,11.186,3393,15.189]],["keywords/430",[]],["title/431",[317,355.985,705,413.216]],["content/431",[1,2.409,30,4.196,53,2.454,60,4.408,68,4.061,185,5.692,296,4.03,356,5.38,358,7.573,470,4.238,519,4.015,628,4.139,684,4.139,685,5.936,686,5.286,687,5.936,688,6.885,689,7.83,690,8.485,692,6.321,693,9.21,694,7.597,695,7.597,700,9.21,709,6.376,714,8.098,715,5.38,716,9.276,783,4.955,878,5.412,879,5.412,880,5.412,910,5.731,911,5.731,3395,6.167,3397,6.885,3398,8.412,3400,7.391,3401,8.412,3402,8.412,3412,10.997,3413,10.997]],["keywords/431",[]],["title/432",[133,600.748,233,338.213]],["content/432",[53,3.128,133,8.616,713,14.644]],["keywords/432",[]],["title/433",[225,603.628]],["content/433",[60,6.233,221,9.444,233,4.567,296,6.862,1438,9.824,1975,11.723,2106,9.757]],["keywords/433",[]],["title/434",[317,355.985,705,413.216]],["content/434",[1,2.36,6,5.809,30,3.609,53,2.795,133,5.754,356,6.497,358,7.421,470,5.118,519,4.849,628,4.998,684,4.998,690,7.221,693,7.838,697,12.278,700,7.838,709,7.7,714,9.779,783,5.984,878,6.536,879,6.536,880,6.536,910,6.921,911,6.921,3395,7.447,3396,10.618,3397,8.315,3398,10.158,3399,10.618,3400,8.926,3401,10.158,3402,10.158,3403,10.618,3404,10.618,3405,10.618,3406,10.618,3407,10.618]],["keywords/434",[]],["title/435",[302,278.474,680,638.111,681,506.352]],["content/435",[]],["keywords/435",[]],["title/436",[11,234.543,233,226.502,302,217.154,315,291.693,720,839.217]],["content/436",[53,3.128,682,10.814,721,14.644]],["keywords/436",[]],["title/437",[225,603.628]],["content/437",[24,2.151,25,5.612,60,5.886,67,5.58,79,5.234,80,3.525,84,4.324,120,4.251,168,4.216,198,2.785,220,5.397,233,5.082,234,6.71,249,6.828,296,6.474,302,4.131,313,3.378,314,3.262,338,3.427,361,4.117,394,4.887,526,4.887,535,3.186,546,2.957,557,6.301,586,3.278,588,5.518,619,3.361,647,4.768,649,7.559,681,3.171,688,7.309,705,4.287,709,6.768,722,3.157,725,6.255,730,5.851,736,7.191,738,4.055,834,7.309,1183,4.287,1185,3.996,1438,8.538,1465,6.654,1469,4.669,1714,5.31,1864,5.704,1911,4.72,1975,4.669,2106,11.502,2779,6.74,3259,9.334,3261,9.334,3263,11.501,3393,5.012,3414,6.29,3415,11.003,3416,7.458,3417,9.334,3418,11.674,3419,7.458,3420,7.458,3421,6.74,3422,6.116,3423,6.29,3424,6.74,3425,6.74,3426,7.458]],["keywords/437",[]],["title/438",[317,355.985,705,413.216]],["content/438",[30,4.11,53,1.849,60,2.127,67,3.598,68,2.78,71,4.359,108,3.41,118,4.342,185,3.897,233,2.868,296,2.759,338,2.21,354,2.985,356,3.683,379,2.641,470,2.901,519,2.749,563,4.568,588,3.558,628,2.833,682,4.093,684,2.833,685,4.063,686,3.619,687,4.063,722,4.977,723,8.387,724,8.39,725,4.034,726,6.128,727,4.365,728,4.616,729,4.713,730,3.773,731,4.616,732,4.222,733,4.443,734,6.213,735,6.213,736,5.554,737,5.621,738,6.394,739,4.443,740,5.06,741,5.543,783,3.392,878,3.705,879,3.705,880,3.705,905,4.222,910,3.923,911,6.128,3395,4.222,3427,7.528,3428,8.659,3429,7.528,3430,7.528,3431,7.528,3432,7.528,3433,7.528,3434,5.543,3435,5.543,3436,4.818,3437,7.528,3438,5.36,3439,5.36,3440,5.36,3441,4.818,3442,4.818,3443,4.818,3444,5.36,3445,5.36,3446,5.543,3447,9.262,3448,4.818,3449,4.818,3450,5.06,3451,7.527,3452,4.818,3453,7.527,3454,7.527,3455,5.06,3456,5.543,3457,5.543,3458,4.818]],["keywords/438",[]],["title/439",[11,211.281,233,204.037,302,195.617,315,262.763,755,562.237,756,755.984]],["content/439",[53,3.128,682,10.814,721,14.644]],["keywords/439",[]],["title/440",[225,603.628]],["content/440",[220,14.217,546,7.788,834,12.299,3393,13.203]],["keywords/440",[]],["title/441",[317,355.985,705,413.216]],["content/441",[1,2.092,14,3.121,30,4.073,53,1.753,60,3.149,67,3.361,68,2.596,71,4.131,108,3.185,118,4.115,119,4.665,120,4.008,185,3.64,233,4.189,296,2.577,311,5.888,317,1.805,354,2.788,356,3.44,358,5.781,379,2.467,470,2.709,519,2.567,563,4.329,588,3.323,628,2.646,680,3.768,681,4.739,682,3.823,684,2.646,685,3.795,686,3.38,687,3.795,722,4.717,723,6.544,724,8.027,725,3.768,726,5.808,727,4.077,728,4.312,729,4.402,730,3.524,731,4.312,732,3.943,736,5.314,737,5.327,738,6.06,739,4.15,740,4.726,741,5.178,757,3.715,758,5.274,759,5.007,783,3.168,878,3.46,879,3.46,880,3.46,905,3.943,910,3.664,911,7.215,3395,3.943,3397,4.402,3428,8.206,3434,5.178,3435,5.178,3436,4.5,3438,5.007,3439,5.007,3440,5.007,3441,4.5,3442,4.5,3443,4.5,3444,5.007,3445,5.007,3446,5.178,3447,7.133,3448,4.5,3449,4.5,3451,7.133,3452,4.5,3453,7.133,3454,7.133,3455,4.726,3456,5.178,3457,5.178,3458,4.5,3459,5.378,3460,5.378,3461,5.378,3462,5.378,3463,5.378,3464,5.378,3465,5.622]],["keywords/441",[]],["title/442",[138,615.505,302,324.255]],["content/442",[53,3.167,721,14.829]],["keywords/442",[]],["title/443",[317,355.985,705,413.216]],["content/443",[1,0.959,30,3.937,53,1.79,233,2.776,356,3.533,358,3.015,470,2.783,519,2.637,563,4.422,628,2.718,684,2.718,722,4.818,723,6.659,724,6.6,726,5.932,734,3.815,735,3.815,736,6.137,737,5.441,741,5.318,783,3.254,878,3.554,879,3.554,880,3.554,905,6.383,910,5.932,911,9.066,3395,4.05,3397,4.522,3428,8.382,3434,5.318,3435,8.382,3436,11.135,3438,5.142,3439,5.142,3440,5.142,3441,7.286,3442,7.286,3443,7.286,3444,8.105,3445,8.105,3446,5.318,3447,11.135,3448,7.286,3449,7.286,3450,4.854,3451,10.234,3452,9.017,3453,10.234,3454,10.234,3455,9.469,3456,5.318,3457,5.318,3458,7.286,3459,5.524,3460,5.524,3461,5.524,3462,5.524,3463,5.524,3464,5.524,3465,5.774,3466,5.774,3467,10.287,3468,6.527,3469,6.527,3470,6.527,3471,6.527,3472,6.527,3473,7.222,3474,10.287,3475,5.524,3476,7.222,3477,7.222,3478,7.222,3479,7.222,3480,5.318]],["keywords/443",[]],["title/444",[302,388.052]],["content/444",[53,3.167,772,14.829]],["keywords/444",[]],["title/445",[225,603.628]],["content/445",[60,5.29,221,9.444,296,6.862,302,4.378,487,9.444,1438,9.824,2106,9.757,3481,13.332]],["keywords/445",[]],["title/446",[317,355.985,705,413.216]],["content/446",[1,1.375,30,3.85,53,2.351,233,2.526,356,5.066,358,4.324,470,3.991,519,3.781,563,4.023,628,3.898,684,3.898,722,4.383,723,7.065,724,8.667,726,5.397,736,5.737,737,4.95,783,4.667,878,5.096,879,5.096,880,5.096,905,5.807,910,5.397,911,9.141,3395,5.807,3397,6.484,3428,11.007,3434,7.625,3435,7.625,3436,6.628,3438,7.374,3439,7.374,3440,7.374,3441,6.628,3442,6.628,3443,6.628,3444,7.374,3445,7.374,3446,7.625,3447,9.567,3448,6.628,3449,6.628,3451,9.567,3452,6.628,3453,9.567,3454,9.567,3455,6.96,3456,7.625,3457,7.625,3458,6.628,3459,7.921,3460,7.921,3461,7.921,3462,7.921,3463,7.921,3464,7.921,3465,8.28,3482,8.735]],["keywords/446",[]],["title/447",[302,324.255,715,678.332]],["content/447",[53,3.128,715,9.729,772,14.644]],["keywords/447",[]],["title/448",[225,603.628]],["content/448",[60,4.167,84,8.552,198,5.509,221,7.44,233,4.645,296,5.406,302,4.931,487,7.44,647,7.778,667,6.025,705,4.396,709,8.552,722,8.06,736,7.309,1438,7.739,2106,7.687,3259,11.794,3261,11.794,3263,11.794,3393,14.978,3415,11.283,3481,10.503]],["keywords/448",[]],["title/449",[317,355.985,705,413.216]],["content/449",[30,4.11,53,1.849,60,2.127,67,3.598,68,2.78,71,2.79,108,3.41,118,4.342,162,3.172,185,3.897,233,2.868,296,2.759,338,2.21,354,2.985,356,3.683,379,2.641,470,2.901,519,2.749,563,4.568,588,3.558,628,2.833,684,2.833,685,4.063,686,3.619,687,4.063,715,3.683,722,4.977,723,8.387,724,8.39,725,4.034,726,6.128,727,4.365,728,4.616,729,4.713,730,3.773,731,4.616,732,4.222,733,4.443,734,6.213,735,6.213,736,5.554,737,5.621,738,6.394,739,4.443,740,5.06,783,3.392,878,3.705,879,3.705,880,3.705,905,4.222,910,3.923,911,6.128,3395,4.222,3428,8.659,3434,5.543,3435,5.543,3436,4.818,3438,5.36,3439,5.36,3440,5.36,3441,4.818,3442,4.818,3443,4.818,3444,5.36,3445,5.36,3446,5.543,3447,9.262,3448,4.818,3449,4.818,3450,5.06,3451,4.818,3452,4.818,3453,7.527,3454,7.527,3455,5.06,3456,5.543,3457,5.543,3458,4.818,3459,5.758,3460,5.758,3461,5.758,3462,5.758,3463,5.758,3464,5.758,3465,6.019,3482,6.35,3483,6.803]],["keywords/449",[]],["title/450",[133,600.748,302,324.255]],["content/450",[53,3.128,133,8.616,772,14.644]],["keywords/450",[]],["title/451",[225,603.628]],["content/451",[60,5.29,221,9.444,296,6.862,302,4.378,487,9.444,1438,9.824,2106,9.757,3481,13.332]],["keywords/451",[]],["title/452",[317,355.985,705,413.216]],["content/452",[30,3.85,53,2.351,133,4.487,233,2.526,356,5.066,470,3.991,519,3.781,563,4.023,628,3.898,684,3.898,722,4.383,723,8.291,724,8.667,726,5.397,734,5.471,735,5.471,736,5.737,737,4.95,783,4.667,878,5.096,879,5.096,880,5.096,905,5.807,910,5.397,911,7.79,3395,5.807,3428,11.007,3438,7.374,3439,7.374,3440,7.374,3441,6.628,3442,6.628,3443,6.628,3444,7.374,3445,7.374,3446,7.625,3447,11.227,3448,6.628,3449,6.628,3450,6.96,3451,6.628,3452,6.628,3453,9.567,3454,9.567,3455,6.96,3456,7.625,3457,7.625,3458,6.628,3459,7.921,3460,7.921,3461,7.921,3462,7.921,3463,7.921,3464,7.921,3482,8.735,3483,9.359,3484,10.356,3485,10.356]],["keywords/452",[]],["title/453",[138,528.602,302,278.474,461,550.765]],["content/453",[53,3.167,774,18.2]],["keywords/453",[]],["title/454",[317,355.985,705,413.216]],["content/454",[30,4.11,53,2.995,93,10.131,356,7.216,470,5.684,519,5.386,563,5.73,628,5.552,684,5.552,737,7.051,775,13.331,779,11.794,781,15.225,783,6.647,878,7.259,879,7.259,880,7.259,3395,8.272,3466,11.794,3486,17.209]],["keywords/454",[]],["title/455",[302,324.255,461,641.312]],["content/455",[53,3.167,784,18.2]],["keywords/455",[]],["title/456",[225,603.628]],["content/456",[60,5.29,221,9.444,296,6.862,302,4.378,487,9.444,1438,9.824,2106,9.757,3481,13.332]],["keywords/456",[]],["title/457",[317,355.985,705,413.216]],["content/457",[30,4.065,53,3.013,93,10.192,356,7.283,470,5.737,519,5.436,563,5.783,628,5.603,684,5.603,737,7.116,779,11.903,781,15.316,783,6.709,878,7.327,879,7.327,880,7.327,3395,8.349,3466,11.903,3486,17.312,3487,14.888]],["keywords/457",[]],["title/458",[302,244.021,647,426.205,680,559.163,681,443.705]],["content/458",[]],["keywords/458",[]],["title/459",[302,278.474,315,374.061,647,486.381]],["content/459",[53,3.128,682,10.814,827,15.901]],["keywords/459",[]],["title/460",[225,603.628]],["content/460",[30,1.166,60,6.209,67,5.254,79,4.928,80,3.266,84,4.006,198,2.581,225,6.596,233,3.338,234,6.318,249,6.429,251,5.767,266,5.285,269,3.906,296,6.645,302,4.873,313,3.13,314,3.023,338,3.227,394,4.528,526,4.528,527,5.902,548,7.117,557,5.933,588,5.195,623,8.42,647,7.406,681,2.938,705,4.079,709,6.373,722,2.925,725,5.89,730,5.509,736,6.535,738,3.757,834,8.569,1384,4.528,1438,9.514,1911,4.373,1975,8.569,2106,12.061,3259,8.788,3261,8.788,3263,10.943,3393,11.444,3414,5.828,3415,10.469,3417,8.788,3421,6.245,3422,5.666,3423,5.828,3424,6.245,3425,6.245,3488,6.245,3489,6.91,3490,6.91]],["keywords/460",[]],["title/461",[317,355.985,705,413.216]],["content/461",[0,1.923,22,4.842,30,4.196,53,1.303,60,4.625,67,2.342,68,1.809,71,3.071,108,6.414,118,3.06,185,2.536,225,3.014,233,2.021,251,5.65,269,6.087,296,1.795,302,1.938,338,1.438,354,1.942,356,2.396,379,1.718,470,1.888,519,1.789,527,4.643,548,5.365,563,3.219,588,2.315,623,10.009,628,1.844,647,5.173,682,2.664,684,1.844,685,2.644,686,2.355,687,2.644,722,3.507,723,7.266,725,2.625,726,4.318,727,2.84,730,2.455,732,4.647,733,2.891,734,4.378,735,4.378,736,3.18,737,3.961,738,4.505,739,4.89,783,2.207,828,7.549,829,3.747,830,6.892,831,3.747,832,6.338,833,6.101,834,5.188,835,3.917,836,3.917,837,3.917,878,2.411,879,2.411,880,2.411,905,2.747,910,2.553,911,4.318,3395,2.747,3397,3.067,3441,3.135,3442,3.135,3443,3.135,3447,6.892,3448,3.135,3449,3.135,3450,3.292,3451,5.303,3452,5.303,3453,5.303,3454,5.303,3458,3.135,3480,3.607,3491,3.917,3492,4.427,3493,3.917,3494,3.917,3495,3.917,3496,8.609,3497,3.917,3498,8.609,3499,3.917,3500,3.917,3501,3.917,3502,3.917,3503,3.917,3504,3.917,3505,3.917,3506,12.291,3507,10.126,3508,3.917,3509,3.917,3510,6.625,3511,3.917,3512,3.917,3513,3.917,3514,3.917,3515,3.917,3516,3.917,3517,7.488,3518,7.488,3519,7.488]],["keywords/461",[]],["title/462",[138,528.602,302,278.474,647,486.381]],["content/462",[53,3.167,827,16.101]],["keywords/462",[]],["title/463",[317,355.985,705,413.216]],["content/463",[0,1.668,22,4.336,30,4.175,53,1.784,60,2.031,108,5.137,225,2.615,233,1.754,302,1.681,356,3.517,470,2.77,519,2.625,563,2.793,623,9.956,628,2.706,647,4.633,684,2.706,722,3.043,723,6.64,726,3.747,734,3.798,735,3.798,736,2.759,737,3.437,783,3.24,828,5.041,830,4.602,833,5.294,834,4.501,837,5.748,878,3.538,879,3.538,880,3.538,905,4.032,910,3.747,911,5.911,3395,4.032,3397,4.501,3441,4.602,3442,4.602,3443,4.602,3447,8.991,3448,4.602,3449,4.602,3450,4.832,3451,7.26,3452,7.26,3453,7.26,3454,7.26,3458,4.602,3480,5.294,3491,5.748,3492,6.497,3493,5.748,3494,5.748,3495,5.748,3496,11.231,3497,5.748,3498,11.231,3499,5.748,3500,5.748,3501,5.748,3502,5.748,3503,5.748,3504,5.748,3505,5.748,3506,14.748,3507,12.752,3508,5.748,3509,5.748,3510,9.069,3511,5.748,3512,5.748,3513,5.748,3514,5.748,3515,5.748,3516,5.748,3517,10.251,3518,10.251,3519,10.251]],["keywords/463",[]],["title/464",[302,278.474,647,486.381,715,582.559]],["content/464",[53,3.128,715,9.729,3520,17.973]],["keywords/464",[]],["title/465",[225,603.628]],["content/465",[60,5.88,221,7.24,225,6.805,296,5.26,302,5.157,527,6.189,548,12.113,623,10.098,647,9.008,736,5.509,834,11.713,1438,7.531,1975,8.987,2106,10.846,3393,15.372,3488,12.972]],["keywords/465",[]],["title/466",[317,355.985,705,413.216]],["content/466",[0,1.928,7,3.201,22,4.851,30,4.186,53,1.306,60,4.632,67,2.349,68,1.814,71,3.079,108,6.974,118,3.067,185,2.543,225,3.022,233,2.026,251,5.662,269,6.101,296,1.801,302,1.943,338,1.442,354,1.948,356,2.404,379,1.724,470,1.893,519,1.794,527,4.654,548,5.379,563,3.227,588,2.323,623,10.021,628,1.849,647,5.794,684,1.849,685,2.652,686,2.362,687,2.652,715,2.404,722,3.516,723,7.75,725,2.633,726,4.329,727,2.849,730,2.463,732,4.659,733,2.9,734,4.389,735,4.389,736,3.189,737,3.971,738,4.517,739,4.903,783,2.214,828,7.566,829,3.759,830,6.907,831,3.759,832,6.354,833,6.117,834,5.201,835,3.929,836,3.929,839,3.759,878,2.418,879,2.418,880,2.418,905,2.756,910,2.561,911,4.329,3395,2.756,3397,3.076,3441,3.145,3442,3.145,3443,3.145,3447,6.907,3448,3.145,3449,3.145,3450,3.303,3451,5.317,3452,5.317,3453,5.317,3454,5.317,3455,5.584,3458,3.145,3480,3.618,3491,3.929,3493,3.929,3494,3.929,3495,3.929,3496,8.629,3497,3.929,3498,8.629,3499,3.929,3500,3.929,3501,3.929,3502,3.929,3503,3.929,3504,3.929,3505,3.929,3506,12.31,3507,10.146,3508,3.929,3509,3.929,3510,6.642,3511,3.929,3512,3.929,3513,3.929,3514,3.929,3515,3.929,3516,3.929,3521,4.441]],["keywords/466",[]],["title/467",[133,515.929,302,278.474,647,486.381]],["content/467",[53,3.128,133,8.616,3520,17.973]],["keywords/467",[]],["title/468",[225,603.628]],["content/468",[60,6.149,221,9.228,296,6.705,302,4.278,527,7.889,647,7.472,1438,9.599,1975,11.454,2106,9.534]],["keywords/468",[]],["title/469",[317,355.985,705,413.216]],["content/469",[0,1.683,7,2.796,22,4.367,30,4.146,53,1.797,60,2.05,108,6.4,133,3.143,225,2.639,233,1.77,302,1.696,356,3.549,519,2.649,563,2.818,623,9.995,628,2.73,647,5.771,684,2.73,722,3.071,723,7.576,726,3.781,734,3.833,735,3.833,736,2.784,737,3.468,783,3.269,828,5.086,830,4.643,833,5.342,834,4.542,839,5.549,878,3.57,879,3.57,880,3.57,905,4.068,910,3.781,911,5.953,3395,4.068,3397,4.542,3441,4.643,3442,4.643,3443,4.643,3447,9.044,3448,4.643,3449,4.643,3450,4.876,3451,7.312,3452,7.312,3453,7.312,3454,7.312,3455,7.678,3458,4.643,3480,5.342,3491,5.8,3493,5.8,3494,5.8,3495,5.8,3496,11.297,3497,5.8,3498,11.297,3499,5.8,3500,5.8,3501,5.8,3502,5.8,3503,5.8,3504,5.8,3505,5.8,3506,14.805,3507,12.816,3508,5.8,3509,5.8,3510,9.133,3511,5.8,3512,5.8,3513,5.8,3514,5.8,3515,5.8,3516,5.8,3521,6.556,3522,7.255]],["keywords/469",[]],["title/470",[11,263.561,302,244.021,315,327.782,647,426.205]],["content/470",[53,3.128,682,10.814,840,17.973]],["keywords/470",[]],["title/471",[225,603.628]],["content/471",[60,6.476,221,8.033,225,5.793,296,5.836,302,5.111,619,7.177,647,8.167,832,12.182,841,12.443,1438,8.356,2106,11.39,3393,13.439,3415,12.182,3523,15.926]],["keywords/471",[]],["title/472",[317,355.985,705,413.216]],["content/472",[30,4.019,53,2.159,60,2.605,108,6.218,185,4.773,233,2.249,296,3.379,356,4.511,470,3.553,519,3.367,563,3.582,628,3.471,647,3.766,682,5.014,684,3.471,685,4.977,686,4.433,687,4.977,722,3.903,723,7.752,726,4.805,734,4.872,735,4.872,736,5.269,737,4.408,783,4.155,841,7.205,842,8.333,843,8.333,844,8.333,845,8.333,878,4.538,879,4.538,880,4.538,905,5.171,910,4.805,911,7.154,3395,5.171,3434,6.79,3435,6.79,3436,5.902,3438,6.566,3439,6.566,3440,6.566,3441,5.902,3442,5.902,3443,5.902,3444,6.566,3445,6.566,3447,10.497,3448,5.902,3449,5.902,3450,6.198,3451,8.787,3452,8.787,3453,8.787,3454,8.787,3455,9.227,3458,5.902,3466,7.373,3467,12.407,3468,8.333,3469,8.333,3470,8.333,3471,8.333,3472,8.333,3474,8.333,3480,6.79]],["keywords/472",[]],["title/473",[1230,790.393,2046,1003.544]],["content/473",[]],["keywords/473",[]],["title/474",[485,1062.11]],["content/474",[11,4.146,78,8.555,209,11.881,302,3.839,317,4.215,485,10.507,628,7.669,631,11.183,681,6.98,1203,10.067,1230,12.631,2046,16.037,3524,14.836,3525,14.836,3526,11.881]],["keywords/474",[]],["title/475",[317,426.023]],["content/475",[0,4.147,1,1.778,19,5.288,22,5.12,30,3.394,41,4.926,53,2.106,80,6.33,177,6.365,195,7.904,223,7.026,563,5.202,628,5.04,705,3.991,959,12.594,1230,7.633,1232,11.662,1647,9.692,2046,9.692,2493,12.654,3059,11.296,3384,12.102,3385,12.102,3524,12.102,3525,12.102,3526,9.692,3527,13.67,3528,10.982,3529,12.654,3530,20.115,3531,13.392,3532,13.392,3533,12.654,3534,13.392]],["keywords/475",[]],["title/476",[88,382.545,680,638.111,681,506.352]],["content/476",[]],["keywords/476",[]],["title/477",[88,382.545,315,374.061,851,559.771]],["content/477",[53,3.128,682,10.814,883,15.901]],["keywords/477",[]],["title/478",[225,603.628]],["content/478",[60,5.773,67,7.882,80,5.623,84,9.561,88,6.564,118,4.393,198,4.443,233,4.616,234,6.839,296,6.935,302,2.782,313,5.389,314,5.204,429,4.159,487,6.001,546,4.717,647,4.859,681,5.059,709,9.561,722,5.035,736,6.329,885,10.035,1438,9.929,1975,7.449,2106,11.183,3393,7.996,3414,10.035,3415,9.1,3417,9.512,3423,10.035,3535,16.49,3536,16.49,3537,16.49,3538,11.897]],["keywords/478",[]],["title/479",[317,355.985,705,413.216]],["content/479",[30,4.121,53,2.114,60,3.797,67,4.284,68,3.309,72,5.768,88,5.755,118,3.309,185,4.639,233,3.278,296,3.285,315,2.815,356,4.385,358,5.612,470,3.454,519,3.272,628,3.373,682,4.873,684,3.373,685,4.838,686,4.309,687,4.838,690,4.873,693,5.29,700,5.29,722,5.689,730,4.492,736,6.189,783,4.039,851,6.318,878,4.411,879,4.411,880,4.411,884,11.14,885,7.56,886,8.1,887,7.56,888,7.56,889,8.1,890,7.35,892,9.57,898,6.382,899,8.1,900,7.166,904,6.382,905,5.026,906,6.192,907,6.192,908,6.192,910,4.671,911,4.671,2826,6.284,3400,6.024,3409,6.722,3410,6.856,3436,5.737,3475,6.856,3539,7.166,3540,7.166,3541,7.166,3542,7.166,3543,7.166,3544,7.166,3545,7.166,3546,7.166,3547,7.166,3548,7.166]],["keywords/479",[]],["title/480",[88,298.309,138,412.205,429,324.605,851,436.51,914,710.31]],["content/480",[53,3.167,883,16.101]],["keywords/480",[]],["title/481",[225,603.628]],["content/481",[60,5.29,296,6.862,429,6.545,487,9.444,1438,9.824,1737,15.354,2106,9.757,3481,13.332]],["keywords/481",[]],["title/482",[317,355.985,705,413.216]],["content/482",[30,3.938,53,2.515,88,5.138,233,2.778,356,5.571,358,4.755,470,4.389,519,4.158,628,4.286,684,4.286,690,6.192,693,6.722,700,6.722,722,4.82,736,6.139,783,5.132,851,5.353,878,5.605,879,5.605,880,5.605,884,11.05,892,11.389,898,8.109,904,8.109,905,6.387,906,7.868,907,7.868,908,7.868,910,5.935,911,5.935,916,10.292,2826,7.985,3400,7.654,3409,8.541,3410,8.711,3436,7.289,3475,8.711,3539,9.105,3540,9.105,3541,9.105,3542,9.105,3543,9.105,3544,9.105,3545,9.105,3546,9.105,3547,9.105,3548,9.105,3549,11.389,3550,10.292,3551,10.292]],["keywords/482",[]],["title/483",[88,445.436,851,651.798]],["content/483",[53,3.167,918,16.101]],["keywords/483",[]],["title/484",[225,603.628]],["content/484",[60,5.29,88,6.015,221,9.444,296,6.862,487,9.444,1438,9.824,2106,9.757,3481,13.332]],["keywords/484",[]],["title/485",[317,355.985,705,413.216]],["content/485",[30,3.881,53,2.528,88,5.164,233,2.798,356,5.611,358,4.789,470,4.42,519,4.188,628,4.317,684,4.317,690,6.237,693,6.77,700,6.77,722,4.855,736,6.17,783,5.169,851,5.392,878,5.645,879,5.645,880,5.645,884,11.106,892,11.446,898,8.167,904,8.167,905,6.432,906,7.924,907,7.924,908,7.924,910,5.977,911,5.977,920,10.366,2826,8.042,3400,7.709,3409,8.603,3410,8.774,3436,7.341,3475,8.774,3539,9.171,3540,9.171,3541,9.171,3542,9.171,3543,9.171,3544,9.171,3545,9.171,3546,9.171,3547,9.171,3548,9.171,3550,10.366,3551,10.366,3552,10.366]],["keywords/485",[]],["title/486",[88,382.545,133,515.929,851,559.771]],["content/486",[53,3.128,133,8.616,918,15.901]],["keywords/486",[]],["title/487",[225,603.628]],["content/487",[60,5.29,88,6.015,221,9.444,296,6.862,487,9.444,1438,9.824,2106,9.757,3481,13.332]],["keywords/487",[]],["title/488",[317,355.985,705,413.216]],["content/488",[30,3.853,53,2.478,88,5.871,133,4.831,233,2.72,356,5.455,358,4.656,470,4.297,519,4.071,628,4.197,684,4.197,690,6.063,693,6.581,700,6.581,722,4.719,736,6.048,783,5.025,851,7.407,878,5.487,879,5.487,880,5.487,881,10.077,884,10.887,892,11.22,898,7.939,900,8.915,904,7.939,905,6.253,906,7.703,907,7.703,908,7.703,910,5.811,911,5.811,926,9.405,2826,7.817,3400,7.494,3409,8.363,3410,8.529,3436,7.137,3475,8.529,3539,8.915,3540,8.915,3541,8.915,3542,8.915,3543,8.915,3544,8.915,3545,8.915,3546,8.915,3547,8.915,3548,8.915,3552,10.077,3553,11.151]],["keywords/488",[]],["title/489",[1885,1038.958]],["content/489",[]],["keywords/489",[]],["title/490",[233,254.525,234,599.845,341,660.459,3554,1043.535]],["content/490",[]],["keywords/490",[]],["title/491",[233,338.213,234,797.075]],["content/491",[25,8.319,30,3.552,120,9.864,181,6.136,236,9.34,302,4.047,461,8.004,1440,14.596,1885,10.835,2416,15.07,3555,21.048,3556,15.639,3557,15.639]],["keywords/491",[]],["title/492",[317,426.023]],["content/492",[30,4.171,53,2.071,60,3.721,67,6.296,68,4.863,71,4.882,118,4.863,233,3.213,338,3.866,354,7.008,379,4.62,563,5.116,588,6.225,722,5.575,723,8.354,725,7.058,726,6.864,728,8.077,730,6.602,731,8.077,732,7.386,733,7.774,734,6.958,735,6.958,736,5.055,738,7.162,770,8.077,1885,8.246,3558,13.171,3559,13.171,3560,13.171]],["keywords/492",[]],["title/493",[274,780.355,1885,745.578,3557,1076.194]],["content/493",[154,10.226,155,7.587,195,12.758,236,9.763,302,4.23,538,12.322,620,13.836,1885,13.534,3556,16.347]],["keywords/493",[]],["title/494",[272,833.796,302,324.255]],["content/494",[]],["keywords/494",[]],["title/495",[1903,972.16,3561,1253.121]],["content/495",[1,2.516,102,5.732,272,11.392,291,6.816,302,4.43,315,5.951,461,8.762]],["keywords/495",[]],["title/496",[30,176.087,671,720.918,724,605.026,3562,1043.535]],["content/496",[1,2.347,30,4.105,53,1.65,60,2.964,67,5.015,68,3.874,71,5.593,108,4.752,118,5.571,225,3.816,233,2.559,272,6.309,302,4.518,313,4.752,314,6.6,315,3.296,317,2.694,338,3.08,354,4.16,379,3.68,423,5.98,480,6.031,497,7.147,563,4.076,588,4.959,681,4.461,722,4.441,723,7.132,724,6.083,725,5.622,726,5.467,727,6.083,728,6.434,729,6.569,730,5.259,731,6.434,732,5.884,733,6.192,734,5.543,735,5.543,736,5.791,737,5.015,738,8.205,739,8.906,959,6.569,1935,6.25,3282,8.388,3561,9.482,3563,10.492]],["keywords/496",[]],["title/497",[30,141.158,671,577.917,724,485.013,3282,668.821,3564,836.54,3565,541.641]],["content/497",[1,2.418,30,4.051,53,1.741,60,3.128,67,5.293,68,4.089,108,5.015,118,4.089,162,4.665,225,4.028,233,2.701,302,4.887,313,5.015,314,6.859,317,2.843,338,3.251,354,4.39,379,3.884,423,6.312,480,6.365,487,7.909,497,7.543,563,4.301,588,5.234,681,4.708,715,5.417,722,4.687,723,7.412,724,6.42,725,5.933,726,5.77,727,6.42,728,6.79,729,6.933,730,5.55,731,6.79,732,6.21,733,6.535,734,5.85,735,5.85,736,6.019,738,6.021,739,6.535,1935,6.596,3282,8.853,3566,11.073]],["keywords/497",[]],["title/498",[30,176.087,671,720.918,3565,675.665,3567,1043.535]],["content/498",[1,2.724,30,2.799,53,2.609,225,6.034,302,5.206,314,8.971,317,4.258,423,11.69,487,11.229,1860,13.991,1935,9.88,3568,16.587]],["keywords/498",[]],["title/499",[30,176.087,3569,1043.535,3570,1043.535,3571,943.046]],["content/499",[0,3.849,1,2.203,30,2.799,53,2.609,69,7.291,133,7.186,138,9.103,225,6.034,302,5.206,315,5.21,317,4.258,429,5.798,750,10.869,1935,9.88,3572,13.991,3573,16.587]],["keywords/499",[]],["title/500",[30,176.087,671,720.918,3565,675.665,3574,1043.535]],["content/500",[1,2.984,53,2.664,133,9,225,6.161,302,5.255,314,7.409,317,4.349,423,9.655,487,10.478,1935,10.09,3575,16.939]],["keywords/500",[]],["title/501",[30,141.158,74,461.795,3565,541.641,3576,836.54,3577,836.54,3578,836.54]],["content/501",[1,1.977,22,5.692,53,2.341,68,7.073,84,12.966,95,7.416,225,5.416,302,4.48,317,3.822,354,5.903,423,8.486,461,10.343,487,7.509,619,6.709,771,12.404,1935,8.868,2408,17.312,3579,14.888,3580,14.888,3581,14.888]],["keywords/501",[]],["title/502",[30,176.087,3565,675.665,3571,943.046,3582,1043.535]],["content/502",[0,3.809,1,2.18,30,2.77,53,2.582,69,7.216,133,7.112,138,9.045,225,5.972,302,4.765,315,5.157,317,4.215,461,10.249,750,10.758,1935,9.779,3572,13.847,3583,16.417]],["keywords/502",[]],["title/503",[30,141.158,671,577.917,3565,541.641,3584,836.54,3585,836.54,3586,836.54]],["content/503",[1,2.591,30,2.584,53,2.409,69,6.732,168,8.659,225,5.571,302,5.285,317,3.932,396,9.803,461,9.022,487,7.725,543,11.278,984,10.294,1159,10.294,1647,11.085,1720,10.036,1935,9.123,3587,15.316,3588,15.316,3589,15.316,3590,15.316,3591,15.316]],["keywords/503",[]],["title/504",[1,184.147,1797,690.727]],["content/504",[]],["keywords/504",[]],["title/505",[734,876.701]],["content/505",[1,2.203,155,6.957,224,7.754,379,5.819,434,9.88,534,9.302,535,8.761,586,9.014,589,13.991,590,14.99,631,11.299,681,7.053,1153,10.498,1230,9.455,1798,20.119]],["keywords/505",[]],["title/506",[379,417.745,535,508.702,1797,593.203]],["content/506",[]],["keywords/506",[]],["title/507",[34,1130.435]],["content/507",[0,2.5,1,2.597,19,4.254,30,3.49,53,1.694,54,8.974,60,3.044,72,6.6,186,9.088,233,2.628,280,7.242,303,6.819,315,3.384,361,10.797,434,10.683,527,4.646,535,4.603,995,8.242,1023,10.715,1104,5.859,1211,15.281,1256,8.836,1507,11.752,1510,11.875,1781,9.088,2691,12.016,3232,8.615,3592,10.775,3593,13.899,3594,11.677,3595,16.039,3596,9.737,3597,11.677,3598,10.775,3599,11.677]],["keywords/507",[]],["title/508",[24,399.849,2691,1083.373]],["content/508",[0,4.341,1,1.906,11,3.625,19,5.667,24,4.139,43,6.9,53,2.257,202,10.979,231,8.396,232,6.435,233,3.501,254,7.531,278,8.802,295,9.187,379,5.035,429,6.54,535,6.131,574,9.294,645,6.638,1028,5.089,1309,9.085,1396,12.5,1425,9.187,1797,7.15,2142,12.107,2539,13.562,2691,14.617,3600,18.709,3601,14.354,3602,14.354]],["keywords/508",[]],["title/509",[705,413.216,1218,1108.641]],["content/509",[0,2.74,1,1.568,11,5.144,19,4.663,30,2.768,53,2.964,75,7.394,77,5.521,161,9.442,257,8.728,280,13.69,296,4.328,379,5.755,407,13.837,546,4.682,553,8.158,705,3.519,959,7.394,1023,8.987,1027,6.788,1183,6.788,1218,9.442,1256,13.453,1267,5.812,2336,10.672,3593,14.825,3596,10.672,3603,11.809,3604,11.809,3605,11.809,3606,11.809,3607,11.809,3608,11.809,3609,11.809,3610,11.809,3611,11.809,3612,11.809,3613,11.809,3614,11.809,3615,11.809,3616,16.405,3617,11.809]],["keywords/509",[]],["title/510",[72,595.104,2315,1060.637]],["content/510",[0,5.159,1,2.347,11,3.327,15,5.966,16,7.058,32,5.706,53,3.137,58,7.162,72,9.149,73,11.109,78,6.864,79,5.905,80,6.225,102,3.985,535,5.626,570,6.729,601,8.336,1027,7.571,1028,4.67,1220,12.585,1512,15.973,2315,15.258,2332,12.585,3232,10.531,3618,19.948,3619,17.675]],["keywords/510",[]],["title/511",[254,547.502,379,366.061,1797,519.812,2142,880.179]],["content/511",[0,1.969,1,1.127,5,3.422,7,3.27,11,3.258,14,7.736,30,3.462,43,4.08,53,2.741,54,3.365,71,3.146,102,3.903,148,6.365,154,4.798,177,4.034,221,4.281,229,4.581,231,4.964,239,5.372,254,8.185,272,5.103,379,2.977,485,5.432,501,5.314,527,3.66,569,4.336,613,4.127,619,3.824,622,4.722,681,7.41,705,3.844,719,4.228,736,3.257,939,4.484,959,8.075,972,5.055,1023,4.649,1027,4.879,1104,7.013,1256,6.96,1270,12.189,1559,5.258,1797,6.425,2184,11.656,2416,7.391,2440,7.391,2549,8.487,2691,6.631,2826,5.95,3409,6.365,3595,6.96,3620,8.487,3621,9.197,3622,13.978,3623,13.978,3624,13.978,3625,13.978,3626,9.197,3627,9.197,3628,9.197,3629,13.978,3630,9.197,3631,9.197,3632,9.197,3633,9.197,3634,9.197,3635,18.886,3636,9.197,3637,9.197,3638,9.197,3639,8.487,3640,9.197,3641,9.197,3642,9.197,3643,9.197,3644,9.197,3645,9.197]],["keywords/511",[]],["title/512",[291,375.413,535,445.765,670,527.257]],["content/512",[1,1.941,7,5.632,19,5.771,32,8.201,33,7.193,41,5.376,53,2.299,54,5.795,84,8.474,99,8.474,102,4.422,137,7.281,335,6.13,535,8.969,963,9.055,1023,8.007,1403,13.209,1515,9.823,1797,7.281,2226,12.328,2327,15.135,2630,13.209,3302,13.209,3646,20.996,3647,14.616,3648,14.616]],["keywords/512",[]],["title/513",[613,579.136,658,745.578,3649,1076.194]],["content/513",[1,2.135,5,4.625,6,5.017,7,4.42,32,4.969,53,3.163,54,4.548,58,6.237,72,4.923,249,6.709,278,7.034,315,3.603,379,7.7,434,6.832,571,5.785,613,9.781,658,12.592,662,10.289,770,11.381,981,6.77,996,8.774,1028,4.067,1104,6.237,1185,6.146,1220,11.446,1510,6.964,2418,8.167,2826,8.042,3232,9.171,3595,9.406,3649,10.366,3650,16.075,3651,11.471,3652,11.471,3653,11.471,3654,11.471,3655,11.471,3656,16.075,3657,16.075,3658,11.471]],["keywords/513",[]],["title/514",[1203,1017.624]],["content/514",[]],["keywords/514",[]],["title/515",[1703,1074.47]],["content/515",[]],["keywords/515",[]],["title/516",[30,200.949,3565,771.062,3659,1190.871]],["content/516",[1,2.226,68,6.189,74,11.394,77,7.836,218,14.137,234,9.635,249,9.804,1100,13.401,1203,12.657,1465,9.554,1935,12.295,3417,13.401,3660,20.213]],["keywords/516",[]],["title/517",[30,176.087,74,576.062,3565,675.665,3661,1043.535]],["content/517",[1,2.47,30,2.401,68,5.253,99,10.784,102,4.304,198,5.313,204,10.475,225,5.175,232,8.339,233,3.47,234,8.177,249,8.321,253,10.296,274,9.322,280,9.561,313,6.443,314,6.223,475,9.211,759,10.129,1203,8.724,1274,12.388,1421,11.374,2106,7.413,3660,19.862,3662,14.226,3663,14.226,3664,14.226,3665,14.226,3666,14.226]],["keywords/517",[]],["title/518",[30,141.158,74,461.795,251,438.9,3565,826.001,3667,836.54]],["content/518",[225,8.585,251,11.901,290,11.82,345,11.482,461,8.004,1290,12.524,2106,9.018,3668,15.639]],["keywords/518",[]],["title/519",[30,128.422,74,420.126,251,399.297,3565,492.768,3669,761.058,3670,761.058,3671,761.058]],["content/519",[68,5.881,93,8.473,225,5.793,251,10.491,253,11.526,290,10.42,345,13.266,461,9.248,526,10.436,622,8.861,1347,12.733,1465,9.078,1771,13.291,3422,13.06,3668,14.393,3672,15.926]],["keywords/519",[]],["title/520",[30,175.147,74,572.987,138,285.543,670,128.181,3565,557.953,3673,395.987,3674,365.407,3675,395.987,3676,395.987,3677,395.987]],["content/520",[74,8.455,82,9.694,84,8.88,95,7.629,225,5.571,296,5.613,531,8.959,586,6.732,665,9.694,670,8.506,1525,9.039,1747,11.085,3302,13.841,3678,15.316,3679,16.598,3680,16.598,3681,16.598,3682,16.598,3683,21.14,3684,16.598]],["keywords/520",[]],["title/521",[1,184.147,1834,972.16]],["content/521",[]],["keywords/521",[]],["title/522",[316,1007.553]],["content/522",[79,8.807,232,10.173,1834,13.772]],["keywords/522",[]],["title/523",[426,1326.762]],["content/523",[1,2.795,53,3.31,68,6.39,316,13.772,426,13.836,644,11.631,1834,14.757,1935,10.308,3685,16.351,3686,18.754]],["keywords/523",[]],["title/524",[209,861.855,316,723.042,361,657.396]],["content/524",[1,1.923,30,4.346,53,2.959,138,6.429,139,8.973,140,12.613,274,9.491,316,8.794,317,3.718,1935,8.627,3136,12.613,3687,15.696,3688,15.696]],["keywords/524",[]],["title/525",[232,621.687,316,841.91]],["content/525",[1,2.759,53,3.267,139,10.494,232,10.075,251,8.887,263,17.036,274,11.1,316,12.614,317,4.349,3689,16.939,3690,16.939]],["keywords/525",[]],["title/526",[316,1007.553]],["content/526",[1,2.852,53,3.619,316,13.037,317,4.592,1935,10.654,3689,17.886,3690,17.886,3691,19.383]],["keywords/526",[]],["title/527",[88,533.074]],["content/527",[]],["keywords/527",[]],["title/528",[88,445.436,138,615.505]],["content/528",[1,2.609,53,3.089,88,6.31,138,8.72]],["keywords/528",[]],["title/529",[88,533.074]],["content/529",[1,2.43,11,4.621,53,2.877,79,8.203,88,7.463,138,8.121,487,10.977]],["keywords/529",[]],["title/530",[88,445.436,133,600.748]],["content/530",[1,2.546,53,3.015,88,7.187,133,8.306,487,9.67]],["keywords/530",[]],["title/531",[302,388.052]],["content/531",[]],["keywords/531",[]],["title/532",[138,615.505,302,324.255]],["content/532",[1,2.609,53,3.089,138,8.72,302,4.594]],["keywords/532",[]],["title/533",[302,388.052]],["content/533",[1,2.43,11,4.621,53,2.877,79,8.203,138,8.121,302,5.433,487,10.977]],["keywords/533",[]],["title/534",[133,600.748,302,324.255]],["content/534",[1,2.274,30,2.889,53,2.692,68,6.321,74,9.451,133,7.417,302,4.89,487,8.635,543,17.756,1578,18.21]],["keywords/534",[]],["title/535",[233,404.755]],["content/535",[]],["keywords/535",[]],["title/536",[138,615.505,233,338.213]],["content/536",[1,2.609,53,3.089,138,8.72,233,4.791]],["keywords/536",[]],["title/537",[233,404.755]],["content/537",[1,2.577,53,3.052,60,5.482,233,5.496]],["keywords/537",[]],["title/538",[133,600.748,233,338.213]],["content/538",[1,2.546,53,3.015,60,5.416,133,8.306,233,4.676,302,4.483]],["keywords/538",[]],["title/539",[1,158.147,341,753.709,1494,730.268]],["content/539",[1,3.012,23,9.146,95,8.62,341,14.357,354,6.861,1494,13.91,3692,10.612]],["keywords/539",[]],["title/540",[72,595.104,353,1021.028]],["content/540",[]],["keywords/540",[]],["title/541",[23,480.154,72,511.082,354,472.149]],["content/541",[0,2.14,12,6.525,22,5.248,23,6.613,30,4.074,53,1.45,60,2.605,71,3.418,93,4.906,108,7.428,198,7.255,355,8.325,356,4.511,357,7.373,358,6.848,359,8.333,360,7.373,361,5.09,362,7.778,363,6.198,364,8.333,365,9.227,366,7.053,367,8.333,368,7.053,369,6.37,370,8.333,371,12.295,372,8.333,373,8.333,374,7.373,375,6.79,376,6.79,377,8.333,378,6.79,379,4.816,380,12.407,381,16.42,382,12.407,383,10.109,384,7.373,385,6.198,386,8.333,387,7.053,388,6.198,389,6.198,390,8.333,391,6.916,392,9.936,393,11.58,394,6.043,395,8.333]],["keywords/541",[]],["title/542",[114,864.749]],["content/542",[]],["keywords/542",[]],["title/543",[43,365.849,71,282.072,114,396.587,260,381.455,396,487.1,397,608.473,398,687.77]],["content/543",[2,9.449,12,4.828,53,2.729,115,6.23,118,3.751,137,7.343,181,3.602,257,5.405,307,10.496,315,3.191,335,4.261,357,13.872,396,9.435,397,8.122,399,11.786,400,11.786,401,11.786,402,9.18,403,9.18,404,9.18,405,9.18,406,9.18,407,8.568,408,9.18,409,9.18,410,9.18,411,9.18,412,9.18,413,9.18,414,9.18,415,9.18,416,9.18,417,9.18,418,9.18,419,9.18,420,9.18,421,9.18,422,9.18,423,5.79,424,9.18,425,7.233,426,8.122,427,6.828,428,8.33,429,3.551,430,15.68,431,9.18,432,8.568,433,13.322,434,11.338,435,10.855,436,13.322,437,9.18,438,7.122,439,7.77,440,7.352,441,13.322]],["keywords/543",[]],["title/544",[25,402.134,114,435.92,162,352.448,442,668.821,443,518.256,444,639.861]],["content/544",[0,3.423,53,2.32,79,6.613,111,10.048,229,7.962,399,11.794,400,11.794,427,9.914,442,15.225,443,11.798,444,11.283,445,13.331,446,13.331,447,13.331,448,13.331,449,13.331,450,11.283,451,17.209,452,13.156,453,17.209,454,13.331,455,13.331,456,13.331,457,13.331,458,13.331,459,13.331]],["keywords/544",[]],["title/545",[24,267.779,114,483.915,335,389.483,460,839.217,461,429.487]],["content/545",[19,7.307,24,6.319,53,2.91,79,8.297,427,12.439,461,8.559,462,16.725,463,14.156]],["keywords/545",[]],["title/546",[25,309.921,114,335.959,115,395.352,118,238.048,438,451.998,464,582.628,465,515.453,466,399.415,467,493.134]],["content/546",[24,1.984,30,4.092,53,2.146,60,3.856,67,3.289,71,4.06,93,5.828,115,4.219,118,4.045,121,5.803,122,5.375,185,5.67,202,5.263,224,3.216,231,7.983,236,5.912,307,11.08,356,3.366,427,4.624,435,5.066,438,9.568,466,6.786,467,12.996,468,4.979,469,6.218,470,2.651,471,4.899,472,6.218,473,6.218,474,6.218,475,10.076,476,5.375,477,12.334,478,6.218,479,4.899,480,3.955,481,4.687,482,17.808,483,6.218,484,10.049,485,4.404,486,6.218,487,5.525,488,8.758,489,9.239,490,6.218,491,6.218,492,6.218,493,6.218,494,5.803,495,6.218,496,6.218,497,7.462,498,9.899,499,6.218,500,4.508,501,6.858,502,6.218,503,9.899,504,6.218,505,6.218,506,5.803,507,14.063,508,9.239,509,6.218,510,5.803,511,5.375,512,6.218,513,6.218,514,6.218,515,6.218,516,9.899,517,4.753,518,9.899,519,2.512,520,6.218,521,9.899,522,6.218,523,6.218,524,6.218]],["keywords/546",[]],["title/547",[25,446.409,43,446.409,114,483.915,396,594.358,525,839.217]],["content/547",[12,10.275,25,8.695,41,6.654,315,5.682,465,14.462,526,14.165,527,7.8,528,11.577,529,13.319]],["keywords/547",[]],["title/548",[24,343.395,338,349.572,3692,730.268]],["content/548",[]],["keywords/548",[]],["title/549",[0,194.094,2,391.076,24,241.221,315,262.763,338,245.561,3692,512.985]],["content/549",[0,4.54,2,2.656,4,8.202,11,3.025,12,5.693,19,2.244,24,3.454,30,3.676,31,5.752,47,6.073,53,1.475,54,7.757,55,2.941,61,4.659,71,3.476,79,2.548,137,4.672,162,3.952,168,3.212,180,4.227,181,3.326,224,2.656,258,2.485,288,3.723,301,3.52,317,3.075,338,3.516,358,3.916,361,3.137,379,3.29,429,1.986,452,3.925,468,4.112,484,4.184,535,2.427,555,3.637,569,2.903,571,2.866,586,6.111,613,7.483,622,3.161,624,5.825,718,2.341,719,4.672,757,3.002,867,2.941,1023,5.139,1028,3.326,1085,4.112,1154,3.596,1194,5.392,1220,4.046,1445,5.6,1462,4.112,1463,3.925,1467,4.543,1494,3.484,1510,5.695,1525,3.354,1537,3.637,1538,7.499,1714,6.679,1720,3.723,1761,3.819,2264,6.788,2389,6.907,2542,5.369,2580,4.262,2586,3.77,2721,4.543,2723,10.635,2725,6.679,2730,9.345,2734,11.116,2740,4.543,2753,4.543,2754,5.135,2755,7.499,2756,11.116,2757,4.543,2758,4.543,3692,11.647,3693,7.912,3694,5.682,3695,5.135,3696,5.682,3697,4.543,3698,5.682,3699,5.682,3700,5.682,3701,5.682,3702,9.38,3703,5.682,3704,5.135,3705,5.135,3706,4.793,3707,5.135,3708,5.135,3709,5.682,3710,5.682,3711,5.682,3712,4.793]],["keywords/549",[]],["title/550",[11,211.281,24,241.221,317,214.759,338,245.561,1028,296.612,3692,512.985]],["content/550",[12,7.422,24,5.695,317,4.009,338,5.797,569,11.065,586,8.68,645,7.222,1028,7.002,1494,9.576,2761,10.232,2762,12.485,3692,13.957,3713,15.615,3714,15.615,3715,15.615,3716,15.615]],["keywords/550",[]],["title/551",[24,300.909,338,306.323,657,743.008,1028,370.007]],["content/551",[0,3.272,4,9.155,12,8.789,19,5.567,24,6.316,46,9.477,79,6.322,278,8.647,338,6.43,569,9.447,619,8.333,624,10.035,846,8.322,1028,7.316,1445,6.592,2765,11.274,2766,13.167,3692,11.34,3717,14.101,3718,14.101]],["keywords/551",[]],["title/552",[24,343.395,95,593.203,338,349.572]],["content/552",[]],["keywords/552",[]],["title/553",[0,194.094,2,391.076,24,241.221,95,416.702,315,262.763,338,245.561]],["content/553",[0,4.581,2,2.209,4,7.467,11,1.193,12,3.82,24,3.024,30,3.983,47,3.059,53,1.264,54,7.468,55,6.403,56,5.266,58,2.569,71,2.978,95,8.015,137,4.003,162,3.386,168,2.671,180,3.621,181,2.849,183,3.985,221,2.383,224,2.209,258,2.067,296,1.732,303,2.991,317,2.692,338,3.078,358,3.355,361,2.608,379,1.658,426,3.778,435,3.479,468,7.589,511,6.279,517,3.264,519,1.725,555,3.024,569,2.414,586,3.532,613,5.099,619,2.129,622,2.629,624,5.099,684,3.024,718,1.947,719,5.223,757,2.496,867,2.446,1023,4.402,1027,2.716,1028,3.718,1194,4.619,1199,5.917,1216,3.778,1397,4.27,1445,4.902,1462,3.42,1463,3.264,1494,2.898,1507,3.096,1510,7.511,1525,2.789,1537,3.024,1538,3.778,1714,5.722,1720,3.096,1761,3.176,1892,3.985,2100,3.135,2162,3.364,2264,5.816,2362,4.115,2389,9.109,2508,4.115,2580,3.544,2586,3.135,2676,3.985,2716,4.27,2717,4.27,2718,4.27,2719,4.27,2721,3.778,2723,9.462,2725,3.364,2730,7.047,2737,4.27,2738,3.985,2739,3.985,2740,3.778,2755,3.778,2756,8.383,2757,3.778,2758,3.778,3201,4.27,3595,3.875,3693,6.778,3706,3.985,3712,3.985,3719,4.725,3720,4.725,3721,4.725,3722,4.725,3723,4.27,3724,12.371,3725,4.725,3726,4.725,3727,4.725,3728,10.486,3729,4.725,3730,4.725,3731,4.725,3732,8.036,3733,4.725,3734,4.725,3735,4.725,3736,4.725,3737,4.725,3738,4.725,3739,10.486,3740,8.036,3741,4.725,3742,4.27,3743,4.725,3744,4.725,3745,4.725,3746,4.725,3747,4.725,3748,4.725,3749,4.725,3750,4.725,3751,4.725,3752,4.725,3753,4.27]],["keywords/553",[]],["title/554",[11,211.281,24,241.221,95,416.702,317,214.759,338,245.561,1028,296.612]],["content/554",[12,9.329,24,4.459,95,11.297,317,3.97,338,4.539,569,11.015,586,6.797,645,7.152,670,5.425,1028,5.483,1494,9.483,2761,12.861,2762,12.364,3754,15.464,3755,19.627,3756,15.464,3757,11.387,3758,13.975]],["keywords/554",[]],["title/555",[24,343.395,338,349.572,1028,422.248]],["content/555",[]],["keywords/555",[]],["title/556",[24,300.909,338,306.323,657,743.008,1028,370.007]],["content/556",[0,3.361,4,7.171,12,8.944,19,5.719,24,6.028,79,6.494,95,9.374,278,8.882,338,6.136,366,11.078,440,10.482,569,9.614,619,8.48,624,9.152,670,5.081,846,8.548,1028,7.412,2765,11.58,2766,10.313,3757,10.665,3759,14.484,3760,14.484]],["keywords/556",[]],["title/557",[11,300.774,338,349.572,2761,780.355]],["content/557",[11,4.674,12,8.796,338,5.433,569,9.455,2761,12.127,2766,13.177,2768,15.61,2769,15.61,3761,18.507]],["keywords/557",[]],["title/558",[24,343.395,338,349.572,354,472.149]],["content/558",[]],["keywords/558",[]],["title/559",[0,194.094,2,391.076,24,241.221,315,262.763,338,245.561,354,331.666]],["content/559",[0,4.501,2,2.4,4,7.798,11,1.297,12,4.098,24,3.213,30,4.117,47,3.325,53,1.356,54,7.243,71,3.195,74,2.835,108,2.326,137,4.294,162,3.632,168,2.903,180,5.021,181,3.057,224,2.4,258,2.246,268,3.928,301,3.181,303,3.25,316,3.118,317,2.861,338,3.271,354,5.768,358,2.144,361,2.835,365,3.451,379,5.103,429,1.795,468,8.065,511,4.012,555,3.286,586,3.789,613,5.419,622,2.857,624,5.419,684,3.245,718,2.116,719,5.551,757,2.713,867,2.658,942,3.928,1022,3.118,1023,7.151,1028,3.951,1194,4.956,1209,3.215,1220,3.656,1445,5.209,1462,3.716,1463,3.547,1467,4.105,1494,3.149,1510,5.234,1516,3.851,1525,3.03,1537,3.286,1538,6.893,1714,6.138,1720,3.365,1761,3.451,2100,5.72,2264,6.239,2389,6.348,2413,4.105,2580,3.851,2586,3.407,2676,4.331,2721,4.105,2722,4.471,2723,13.437,2725,3.656,2730,5.794,2738,4.331,2739,4.331,2740,4.105,2755,4.105,2756,8.909,2757,4.105,2758,4.105,2889,4.64,2904,4.64,3693,7.272,3695,4.64,3704,4.64,3705,4.64,3706,4.331,3707,4.64,3708,4.64,3712,4.331,3723,4.64,3753,4.64,3762,5.135,3763,5.135,3764,5.135,3765,5.135,3766,5.135,3767,8.621,3768,5.135,3769,11.143,3770,8.621,3771,5.135,3772,5.135,3773,5.135,3774,5.135,3775,5.135]],["keywords/559",[]],["title/560",[11,211.281,24,241.221,317,214.759,338,245.561,354,331.666,1028,296.612]],["content/560",[12,8.354,19,5.158,24,3.767,46,11.814,317,3.354,338,3.835,354,9.055,365,14.903,586,9.339,619,5.887,645,6.042,670,4.583,1028,4.632,1463,9.025,2761,11.518,2762,10.445,3757,12.943,3758,15.885,3776,13.064,3777,13.064,3778,13.064,3779,17.577,3780,13.064,3781,13.064,3782,17.577,3783,13.064]],["keywords/560",[]],["title/561",[24,343.395,338,349.572,1028,422.248]],["content/561",[]],["keywords/561",[]],["title/562",[24,300.909,338,306.323,657,743.008,1028,370.007]],["content/562",[0,3.031,4,8.702,12,9.442,19,5.158,24,6.127,46,8.78,108,5.917,278,8.011,338,6.237,354,5.179,365,14.281,366,9.992,368,9.992,619,8.952,624,9.661,670,4.583,846,7.71,1028,7.044,2765,10.445,2766,12.515,3757,12.943,3784,13.064,3785,13.064,3786,13.064,3787,13.064]],["keywords/562",[]],["title/563",[11,300.774,338,349.572,2761,780.355]],["content/563",[11,4.621,338,5.371,365,14.628,368,13.994,2761,11.989,2768,15.431,2769,15.431,3788,16.534,3789,18.295]],["keywords/563",[]],["title/564",[530,1269.313]],["content/564",[]],["keywords/564",[]],["title/565",[34,1130.435]],["content/565",[0,2.935,5,5.101,11,3.195,19,4.995,22,4.836,53,1.989,54,5.016,78,6.592,79,7.711,80,5.979,198,7.832,217,10.342,231,10.06,254,9.024,258,7.523,354,5.016,371,13.272,379,4.438,434,7.535,569,6.462,645,5.851,757,6.683,856,12.107,956,11.953,1114,9.155,1957,9.007,2776,11.432,3790,12.65,3791,19.542,3792,17.199,3793,12.65,3794,11.432,3795,12.65]],["keywords/565",[]],["title/566",[12,441.379,22,355.008,46,624.139,305,477.508,345,616.13]],["content/566",[0,4.885,11,3.453,12,8.612,22,7.769,23,6.59,30,3.799,32,3.972,46,9.188,53,2.57,79,4.111,102,4.136,162,5.759,198,7.59,223,4.81,225,4.973,232,4.111,234,5.27,302,2.144,313,4.153,314,4.01,371,10.345,379,5.734,383,12.036,384,7.33,501,5.74,572,5.363,603,7.163,670,4.795,1179,6.635,1613,7.733,1855,7.33,1878,7.33,1957,11.638,2250,7.733,3794,14.771,3796,14.486,3797,16.345,3798,12.354,3799,13.67,3800,7.984,3801,9.168,3802,9.168]],["keywords/566",[]],["title/567",[0,276.306,22,455.254,355,604.462]],["content/567",[]],["keywords/567",[]],["title/568",[0,176.581,9,433.804,305,391.336,533,426.778,1253,608.473,1484,445.147,1554,498.706]],["content/568",[0,4.157,5,3.614,19,5.307,22,5.138,23,5.419,27,5.873,30,3.709,53,2.114,54,3.554,60,3.797,79,6.026,80,4.236,102,2.712,147,7.166,181,3.178,198,6.691,221,4.521,225,3.26,232,4.018,233,2.186,257,4.768,278,8.242,288,5.873,305,4.609,316,5.442,317,2.301,371,8.506,383,6.6,434,5.339,501,5.611,530,6.856,533,5.026,563,3.482,570,4.579,613,4.359,646,6.024,662,5.737,757,4.735,771,5.803,1071,5.873,1209,5.611,1253,10.746,1267,4.411,1350,7.166,1484,7.861,1520,4.671,1554,10.567,1588,8.415,1620,5.737,1840,5.026,2242,8.1,2243,8.1,2468,8.1,2596,7.003,2863,7.35,3798,8.1,3803,8.963,3804,8.963,3805,13.44,3806,8.963,3807,8.963,3808,8.963,3809,8.963,3810,8.963,3811,8.963,3812,8.963,3813,8.963,3814,8.963,3815,8.963,3816,8.963,3817,8.963,3818,8.963,3819,8.1]],["keywords/568",[]],["title/569",[232,621.687,3820,1169.584]],["content/569",[10,3.276,11,2.486,22,3.762,30,2.875,32,2.61,41,7.804,53,1.548,68,2.225,71,4.624,77,2.817,93,6.638,119,3.997,120,3.434,177,2.864,181,3.49,221,3.039,225,4.538,230,6.253,232,5.594,233,4.156,234,3.463,237,3.901,257,3.205,258,4.305,260,3.02,296,3.607,308,12.694,309,8.619,313,2.729,317,3.203,321,4.104,350,3.352,355,4.995,361,3.326,374,7.869,529,4.436,557,9.703,563,8.099,586,2.648,657,4.29,665,7.896,668,3.463,670,3.452,736,4.789,737,9.539,771,12.921,939,5.199,997,4.224,1067,3.856,1075,3.695,1104,3.276,1209,6.162,1253,4.817,1350,4.817,1475,5.082,1484,7.298,1520,3.139,1580,4.707,1620,3.856,1744,5.445,1761,4.049,1855,7.869,1885,3.772,1957,4.29,3685,5.693,3820,13.392,3821,6.025,3822,6.025,3823,6.025,3824,15.397,3825,9.842,3826,9.975,3827,10.523,3828,9.842,3829,5.445,3830,6.025,3831,6.025,3832,6.025,3833,6.025,3834,6.025]],["keywords/569",[]],["title/570",[0,321.731,231,811.06]],["content/570",[0,1.482,11,0.711,12,0.924,15,0.881,16,1.042,22,1.676,23,2.054,30,3.941,43,2.108,46,1.307,47,11.336,48,4.887,53,0.801,60,2.42,71,4.363,74,2.812,76,0.631,82,1.781,85,0.743,93,4.291,102,1.327,143,0.806,162,0.425,198,1.354,223,1.02,225,1.319,229,0.544,230,0.505,232,0.452,257,0.537,266,1.487,268,2.773,269,2.88,295,1.244,302,0.455,308,0.806,315,2.007,316,2.662,354,2.533,355,0.512,371,1.781,374,0.806,379,0.987,383,2.072,388,0.678,394,2.376,401,0.806,438,8.253,470,0.389,487,3.222,497,2.47,533,0.566,543,0.743,563,1.703,579,3.058,622,7.226,644,1.891,671,0.697,719,0.502,735,1.487,737,1.733,771,3.299,828,1.973,829,0.771,831,0.771,867,2.269,870,1.781,902,8.192,939,1.027,962,2.973,1100,0.806,1151,3.962,1159,2.437,1166,16.794,1481,1.762,1503,0.771,1519,1.09,1549,1.64,1656,1.487,1733,0.827,1876,0.827,1878,1.554,1911,1.23,1957,2.582,1983,16.94,2027,0.878,2043,0.851,2172,0.851,2277,0.851,2298,2.659,2315,15.784,2363,3.277,2370,2.659,2384,0.953,2701,9.679,3048,0.911,3050,0.911,3052,0.911,3054,0.911,3057,0.911,3059,3.058,3169,0.911,3332,2.543,3375,0.911,3436,3.261,3796,2.25,3819,1.757,3820,4.297,3824,3.277,3827,3.698,3835,1.009,3836,1.944,3837,1.944,3838,2.814,3839,1.944,3840,1.009,3841,5.095,3842,4.384,3843,2.814,3844,2.814,3845,2.814,3846,2.814,3847,2.814,3848,1.009,3849,2.814,3850,2.814,3851,2.814,3852,1.009,3853,2.814,3854,2.814,3855,2.814,3856,2.814,3857,4.384,3858,6.389,3859,4.384,3860,2.814,3861,2.814,3862,2.814,3863,2.814,3864,2.814,3865,2.814,3866,2.814,3867,4.384,3868,1.944,3869,1.944,3870,1.944,3871,12.702,3872,1.944,3873,3.626,3874,8.565,3875,8.565,3876,3.626,3877,3.626,3878,3.626,3879,3.626,3880,3.626,3881,2.814,3882,3.626,3883,1.944,3884,1.944,3885,2.814,3886,1.944,3887,1.944,3888,2.814,3889,2.814,3890,2.814,3891,20.635,3892,2.814,3893,2.814,3894,2.814,3895,2.814,3896,2.814,3897,2.814,3898,2.814,3899,2.814,3900,4.384,3901,4.384,3902,4.384,3903,4.384,3904,4.384,3905,2.814,3906,2.814,3907,2.814,3908,2.814,3909,12.988,3910,2.814,3911,2.814,3912,2.814,3913,2.814,3914,2.814,3915,2.814,3916,2.814,3917,2.814,3918,2.814,3919,1.009,3920,1.009,3921,1.944,3922,1.944,3923,1.944,3924,2.814,3925,1.009,3926,1.944,3927,1.009,3928,1.944,3929,5.762,3930,1.944,3931,1.944,3932,1.944,3933,1.009,3934,1.009,3935,1.009,3936,6.389,3937,1.009,3938,6.389,3939,6.389,3940,1.009,3941,1.009,3942,1.009,3943,1.009,3944,1.009,3945,1.009,3946,1.009,3947,1.009,3948,1.009,3949,1.009,3950,1.009,3951,1.009,3952,1.009,3953,1.009,3954,1.009,3955,1.009,3956,1.009,3957,1.009,3958,1.009,3959,1.009,3960,1.009,3961,9.488,3962,1.009,3963,1.009,3964,1.009,3965,1.009,3966,1.009,3967,1.009,3968,1.009,3969,1.009,3970,1.009,3971,1.009,3972,1.009,3973,1.009,3974,1.009,3975,1.009,3976,1.009,3977,1.009,3978,1.009,3979,1.009,3980,1.009,3981,1.009,3982,1.009,3983,1.009,3984,5.095,3985,1.009,3986,1.009,3987,1.009,3988,1.009,3989,1.009,3990,1.009,3991,1.944,3992,1.944,3993,10.71,3994,10.71,3995,1.944,3996,1.009,3997,1.009,3998,1.009,3999,1.009,4000,1.009,4001,1.009,4002,1.009,4003,1.009,4004,1.009,4005,1.009,4006,1.009,4007,1.009,4008,1.944,4009,1.009,4010,1.944,4011,1.009,4012,1.009,4013,1.009,4014,1.009,4015,1.009,4016,1.009,4017,1.009,4018,1.009,4019,1.009,4020,1.009,4021,1.009,4022,1.009,4023,1.009,4024,1.009,4025,1.009,4026,1.009,4027,1.009,4028,1.009,4029,1.009,4030,1.009,4031,1.009,4032,1.009,4033,1.009,4034,1.009,4035,1.009,4036,0.911,4037,1.009,4038,1.009,4039,1.009,4040,1.009,4041,1.009,4042,1.009,4043,2.814,4044,2.814,4045,1.009,4046,1.009,4047,1.009,4048,1.009]],["keywords/570",[]],["title/571",[628,448.191,632,910.886,1885,745.578]],["content/571",[11,4.936,22,6.575,53,1.989,77,5.914,80,5.979,81,9.315,130,10.114,147,10.114,198,6.423,209,9.155,225,4.602,229,6.828,334,8.289,338,3.713,354,5.016,461,5.851,481,11.716,553,8.739,558,7.211,622,7.038,632,13.156,670,4.438,705,3.77,1104,6.878,1475,14.507,1656,9.676,1771,7.334,1885,14.164,1957,9.007,2397,11.953,3827,10.67,4049,12.65,4050,12.65,4051,12.65,4052,12.65,4053,12.65,4054,12.65]],["keywords/571",[]],["title/572",[111,1130.435]],["content/572",[0,3.368,13,5.385,22,2.892,30,2.449,53,1.189,80,3.575,81,5.569,115,4.638,132,6.835,258,10.04,394,4.956,501,14.371,557,4.082,571,3.815,790,6.047,1549,6.38,1565,6.202,1579,6.835,1732,5.303,1840,4.242,1935,8.646,1952,5.385,1957,5.385,2172,6.38,2580,5.673,3796,13.111,4036,6.835,4055,7.564,4056,7.564,4057,22.149,4058,7.564,4059,7.564,4060,7.564,4061,7.564,4062,7.564,4063,7.564,4064,11.803,4065,7.564,4066,7.564,4067,7.564,4068,7.564,4069,11.803,4070,7.564,4071,7.564,4072,7.564,4073,7.564,4074,7.564,4075,7.564,4076,14.515,4077,7.564,4078,7.564,4079,7.564,4080,7.564,4081,7.564,4082,7.564,4083,7.564,4084,7.564,4085,7.564,4086,11.803,4087,7.564,4088,7.564,4089,7.564,4090,7.564,4091,7.564,4092,7.564,4093,7.564,4094,7.564,4095,14.515,4096,11.803,4097,7.564,4098,7.564,4099,7.564,4100,7.564,4101,7.564,4102,7.564,4103,7.564,4104,7.564,4105,7.564]],["keywords/572",[]],["title/573",[2,434.133,27,608.521,28,563.829,43,446.409,560,725.536]],["content/573",[]],["keywords/573",[]],["title/574",[34,1130.435]],["content/574",[0,4.503,1,2.577,2,9.072,77,9.072,963,12.022]],["keywords/574",[]],["title/575",[24,343.395,338,349.572,1028,422.248]],["content/575",[10,9.309,14,7.599,19,6.76,24,6.03,77,8.004,78,8.921,313,7.754,314,7.489,338,6.138,938,11.218,963,10.606,1028,7.414,4106,17.12]],["keywords/575",[]],["title/576",[178,575.772,354,472.149,528,762.193]],["content/576",[]],["keywords/576",[]],["title/577",[24,399.849,31,850.325]],["content/577",[4,8.855,41,6.579,181,6.342,233,4.363,354,7.091,365,12.021,379,6.274,757,9.449,1028,6.342,1509,11.448,2457,13.414,4107,15.086]],["keywords/577",[]],["title/578",[233,226.502,354,368.182,379,325.758,1028,329.269,1509,594.358]],["content/578",[0,2.483,5,4.315,11,4.513,15,4.847,16,5.735,23,4.315,24,3.086,30,2.583,53,2.407,54,7.084,78,5.577,79,4.798,112,5.577,114,5.577,119,7.101,181,6.335,233,2.61,309,7.394,317,2.748,354,7.084,365,7.193,379,7.237,434,6.375,527,6.6,645,4.95,757,5.654,867,7.923,1017,9.32,1071,7.013,1241,6.701,1445,5.003,1506,11.707,1509,6.85,1510,6.498,1513,11.707,1558,7.013,1605,7.62,1885,6.701,2586,7.101,2730,7.193,3221,8.557,3222,12.237,3223,8.557,3224,8.557,3225,8.557,3697,12.237,4108,8.027,4109,10.703,4110,12.91,4111,9.027,4112,10.703]],["keywords/578",[]],["title/579",[22,530.099,317,355.985]],["content/579",[0,3.066,4,4.338,23,4.556,30,3.439,53,1.378,60,4.772,69,8.959,71,4.898,79,2.347,80,2.475,93,8.463,108,2.371,162,4.761,239,3.314,249,9.305,354,3.474,369,3.617,375,3.855,376,3.855,378,3.855,385,3.519,387,4.005,388,3.519,389,3.519,423,10.494,461,5.227,501,3.278,540,3.567,557,8.586,563,6.179,588,2.475,622,4.875,719,7.924,737,5.402,1034,15.096,1720,7.405,1943,3.728,3826,12.719,4113,10.213,4114,4.731,4115,4.731,4116,3.855,4117,3.855,4118,3.855,4119,3.855,4120,6.452,4121,6.452,4122,6.452,4123,3.855,4124,3.855,4125,7.391,4126,7.391,4127,8.763,4128,8.763,4129,8.763,4130,8.763,4131,4.186,4132,3.855,4133,3.855,4134,4.416,4135,5.236,4136,15.528,4137,16.637,4138,4.731,4139,15.528,4140,13.418,4141,15.528,4142,10.213,4143,13.292,4144,10.213,4145,10.213,4146,7.919,4147,4.731]],["keywords/579",[]],["title/580",[24,478.518]],["content/580",[0,1.59,1,2.399,4,6.738,11,1.73,18,14.301,22,4.173,23,5.487,24,3.148,27,7.154,30,3.868,47,7.068,53,1.077,58,3.725,60,1.935,71,2.539,108,3.103,112,3.57,162,2.886,180,3.087,198,4.077,219,4.958,234,3.938,239,4.336,338,3.205,346,5.24,354,2.716,358,8.215,360,5.477,368,5.24,369,4.733,371,4.336,379,2.403,383,5.044,384,5.477,385,4.604,389,4.604,391,5.138,392,7.901,393,9.208,394,4.489,452,7.542,466,4.244,481,7.437,571,3.455,588,3.238,650,4.733,1104,3.725,1318,5.044,1497,7.154,1516,5.138,1943,7.773,2725,7.773,2753,5.477,2834,5.778,2847,5.477,3742,6.191,3788,6.191,3796,5.477,4108,10.207,4116,5.044,4117,5.044,4118,5.044,4119,5.044,4120,8.038,4121,10.021,4122,8.038,4123,5.044,4124,5.044,4132,5.044,4133,5.044,4148,6.851,4149,6.851,4150,6.851,4151,5.477,4152,6.851,4153,6.851,4154,6.851,4155,6.851,4156,6.851,4157,6.851,4158,6.851,4159,6.851,4160,6.191,4161,6.191,4162,6.191,4163,6.191,4164,6.191,4165,6.851,4166,6.851,4167,6.851,4168,6.851,4169,6.851,4170,6.851,4171,6.851,4172,6.851,4173,6.851,4174,6.851,4175,13.609,4176,6.191]],["keywords/580",[]],["title/581",[95,593.203,178,575.772,528,762.193]],["content/581",[]],["keywords/581",[]],["title/582",[24,399.849,31,850.325]],["content/582",[4,8.855,41,6.579,95,8.91,181,6.342,233,4.363,379,6.274,757,9.449,1028,6.342,1509,11.448,2457,13.414,2692,15.086,4107,15.086]],["keywords/582",[]],["title/583",[95,462.581,233,226.502,379,325.758,1028,329.269,1509,594.358]],["content/583",[30,2.422,53,2.257,54,7.417,95,7.15,119,9.523,181,5.089,233,3.501,379,7.301,434,8.55,527,6.189,1445,6.71,1506,14.31,1509,9.187,1510,8.715,1513,14.31,2586,9.523,2730,9.647,3221,11.476,3222,14.958,3223,11.476,3224,11.476,3225,11.476,3697,14.958,4108,10.765,4110,12.107,4111,12.107,4177,14.354]],["keywords/583",[]],["title/584",[22,530.099,317,355.985]],["content/584",[0,3.171,4,4.537,23,4.735,30,3.27,53,1.441,60,4.89,69,9.102,71,4.353,79,2.477,80,2.611,93,8.694,95,5.85,162,3.861,221,2.787,239,3.497,249,9.558,375,4.068,376,4.068,378,4.068,385,3.713,388,3.713,389,3.713,423,10.713,461,5.431,501,3.459,540,3.764,557,8.82,563,6.348,588,2.611,719,8.14,737,5.613,1034,15.412,1720,7.695,1943,3.934,3826,13.065,4113,10.613,4114,4.993,4115,4.993,4116,4.068,4117,4.068,4118,4.068,4119,4.068,4120,6.748,4121,6.748,4122,6.748,4123,4.068,4124,4.068,4126,7.73,4131,4.417,4132,4.068,4133,4.068,4134,4.66,4136,15.852,4137,16.985,4138,4.993,4139,15.852,4140,13.783,4141,15.852,4142,10.613,4143,13.695,4144,10.613,4145,10.613,4146,8.282,4147,4.993,4151,7.327,4178,5.525]],["keywords/584",[]],["title/585",[24,478.518]],["content/585",[0,2.284,4,7.134,23,5.81,30,4.114,47,9.33,53,1.548,58,5.354,60,2.782,71,3.649,72,4.226,95,8.489,239,6.232,358,9.222,360,7.872,366,7.531,369,6.802,379,3.454,385,6.617,388,6.617,389,6.617,452,9.955,569,5.03,588,4.654,1943,7.01,2725,10.26,2753,7.872,2834,8.305,2847,7.872,4116,7.25,4117,7.25,4118,7.25,4119,7.25,4120,10.61,4121,10.61,4122,10.61,4123,7.25,4124,7.25,4132,7.25,4133,7.25,4151,7.872,4160,8.898,4161,8.898,4162,8.898,4163,8.898,4164,8.898,4179,9.846,4180,19.96,4181,9.846]],["keywords/585",[]],["title/586",[178,575.772,528,762.193,3692,730.268]],["content/586",[]],["keywords/586",[]],["title/587",[24,399.849,31,850.325]],["content/587",[4,8.955,41,6.654,181,6.414,233,4.412,379,6.345,757,9.556,1028,6.414,1509,11.577,2457,13.566,3692,11.092,4107,15.257]],["keywords/587",[]],["title/588",[233,226.502,379,325.758,1028,329.269,1509,594.358,3692,569.464]],["content/588",[30,2.422,53,2.257,54,7.417,119,9.523,181,5.089,233,3.501,379,7.301,434,8.55,527,6.189,1445,6.71,1506,14.31,1509,9.187,1510,8.715,1513,14.31,2586,9.523,2730,9.647,3221,11.476,3222,14.958,3223,11.476,3224,11.476,3225,11.476,3692,8.802,3697,14.958,4108,10.765,4110,12.107,4111,12.107,4182,14.354]],["keywords/588",[]],["title/589",[22,530.099,317,355.985]],["content/589",[0,3.1,4,3.299,23,3.585,30,3.228,53,1.048,60,4.892,69,9.161,71,5.948,79,1.705,80,1.798,93,8.538,102,4.042,162,2.807,221,1.918,239,2.407,249,9.781,369,2.628,375,2.801,376,2.801,378,2.801,385,2.556,388,2.556,389,2.556,423,10.903,461,5.615,501,2.381,540,4.539,557,9.025,563,5.19,588,1.798,670,3.119,719,8.329,752,12.691,794,6.801,856,5.509,1166,15.293,1943,2.708,1952,6.331,3572,10.24,3692,4.086,3757,6.547,3826,13.369,4116,2.801,4117,2.801,4118,2.801,4119,2.801,4120,4.906,4121,4.906,4122,4.906,4123,2.801,4124,2.801,4125,3.208,4126,5.62,4131,3.041,4132,2.801,4133,2.801,4134,3.208,4136,16.134,4139,16.134,4140,14.104,4141,16.134,4151,5.327,4183,9.649,4184,8.036,4185,8.036,4186,8.036,4187,3.803,4188,3.437,4189,3.803,4190,3.803,4191,12.14,4192,8.892,4193,8.892,4194,8.892,4195,8.892,4196,8.892,4197,6.663,4198,8.892,4199,3.803,4200,3.803,4201,8.892]],["keywords/589",[]],["title/590",[24,478.518]],["content/590",[0,2.103,4,6.711,23,5.465,24,2.614,30,4.037,53,1.425,60,2.561,71,6.677,162,5.711,239,5.737,311,4.789,338,2.661,369,6.262,375,6.674,376,6.674,378,6.674,385,6.092,387,6.933,388,6.092,389,6.092,588,4.284,670,5.695,794,12.418,856,10.058,1028,3.214,1494,5.559,1541,6.674,1943,6.454,2742,14.671,2847,7.247,3692,8.312,3757,11.954,4116,6.674,4117,6.674,4118,6.674,4119,6.674,4120,9.98,4121,9.98,4122,9.98,4123,6.674,4124,6.674,4125,7.646,4131,7.247,4132,6.674,4133,6.674,4183,14.671,4184,14.671,4185,14.671,4186,14.671,4188,8.192,4202,9.065,4203,9.065,4204,9.065,4205,13.554,4206,9.065]],["keywords/590",[]],["title/591",[0,194.094,1,111.092,2,391.076,3,755.984,11,211.281,335,350.854]],["content/591",[0,3.056,1,2.649,2,9.967,11,5.384,23,5.311,114,6.864,129,10.531,173,10.531,180,5.935,300,8.246,306,10.801,335,8.366,466,8.16,533,7.386,535,5.626,571,6.643,586,8.768,615,5.905,705,3.925,972,7.846,995,10.075,1100,10.531,1267,6.482,1562,10.291,1619,12.791,1709,11.903,2662,11.47,3800,11.47,4108,9.878,4207,13.171,4208,13.171]],["keywords/591",[]],["title/592",[1,158.147,32,515.929,33,586.043]],["content/592",[]],["keywords/592",[]],["title/593",[34,1130.435]],["content/593",[35,19.406,36,11.782,37,16.368,38,16.899,39,17.537]],["keywords/593",[]],["title/594",[33,586.043,40,604.462,41,438.054]],["content/594",[5,6.977,30,2.92,40,8.784,42,10.953,43,8.319,44,11.482,45,15.07,46,11.631,47,11.205,48,13.237,49,15.07,50,14.191,51,17.305,52,15.639,53,2.721]],["keywords/594",[]],["title/595",[1,158.147,40,604.462,54,472.149]],["content/595",[1,2.776,30,3.527,33,9.261,36,11.426,53,2.959,54,5.742,55,7.497,56,9.491,57,10.665,58,7.875,59,11.316,60,4.092,61,11.877,62,14.484,63,13.089,64,14.484,65,14.484,66,12.216,67,6.923,68,5.348,69,6.366,70,14.484,71,5.368,72,6.216,73,12.216,74,7.995]],["keywords/595",[]],["title/596",[54,549.77,75,868.152]],["content/596",[0,4.699,1,2.271,23,3.299,25,3.934,30,3.112,33,4.027,53,2.689,54,6.78,60,3.544,67,3.911,69,3.597,76,5.123,77,3.826,78,6.537,79,3.669,80,3.868,81,6.025,82,5.179,83,10.002,84,4.744,85,6.025,86,5.826,87,7.395,88,2.629,89,5.237,90,8.183,91,8.183,92,17.583,93,10.352,94,19.457,95,4.076,96,6.674,97,8.183,98,8.183,99,4.744,100,8.183,101,8.183,102,2.476,103,8.183,104,8.183,105,5.5,106,8.183,107,8.183,108,3.706,109,8.183,110,8.183,111,5.574,112,4.264,113,8.183,114,4.264,115,5.018,116,8.183,117,8.183,118,4.632,119,5.429,120,7.15,121,6.902,122,6.393,123,7.732,124,8.183,125,8.183,126,12.544,127,12.544,128,8.183,129,6.542,130,6.542,131,5.922,132,7.395,133,6.609,134,8.183,135,8.183,136,8.183]],["keywords/596",[]],["title/597",[1,158.147,41,438.054,137,593.203]],["content/597",[11,4.565,30,3.979,42,12.839,53,2.142,83,7.966,84,7.897,105,9.154,138,6.046,139,12.567,140,11.861,141,12.983,142,14.222,143,10.889,144,11.861,145,14.014,146,11.488,147,10.889,148,10.215,149,12.309,150,12.869,151,10.215,152,10.889,153,11.169]],["keywords/597",[]],["title/598",[154,673.224,155,499.465,156,876.87]],["content/598",[68,6.46,144,15.235,148,13.121,154,9.89,157,15.81,158,17.495,159,15.81,160,15.235,161,13.987,162,7.371,163,13.668,164,12.882,165,13.561]],["keywords/598",[]],["title/599",[1,184.147,166,1137.075]],["content/599",[1,2.577,30,3.275,36,11.782,53,3.052,133,8.407]],["keywords/599",[]],["title/600",[0,276.306,1,158.147,2,556.723]],["content/600",[]],["keywords/600",[]],["title/601",[4,686.52,5,559.092]],["content/601",[0,2.982,1,1.707,2,10.309,4,9.754,5,5.183,6,5.622,7,4.953,8,12.854,9,7.327,10,9.454,11,3.246,12,9.364,13,12.379,14,7.717,15,7.875,16,9.316,17,17.386,18,10.842,19,6.865,20,16.491,21,12.854,22,4.914,23,5.183,24,5.681,25,6.179,26,17.386]],["keywords/601",[]],["title/602",[1,138.581,2,487.845,27,683.808,28,633.586]],["content/602",[0,4.104,1,2.349,2,9.971,11,4.467,23,7.132,24,6.15,27,11.591,28,10.74,29,12.049,30,2.985,31,10.847]],["keywords/602",[]],["title/603",[167,1659.47]],["content/603",[]],["keywords/603",[]],["title/604",[1,138.581,5,420.749,155,437.671,168,589.931]],["content/604",[1,2.203,5,8.976,7,6.392,14,7.363,86,11.81,111,11.299,155,6.957,169,20.508,170,16.587,171,13.991,172,12.44,173,13.262,174,16.587,175,13.991,176,12.214,177,7.884]],["keywords/604",[]],["title/605",[1,158.147,178,575.772,179,1190.871]],["content/605",[0,4.609,1,3.033,24,5.728,25,6.28,53,2.054,60,4.966,99,12.319,102,3.953,112,6.807,155,7.372,180,5.887,181,4.632,182,7.932,183,14.826,184,13.064,185,9.098,186,11.019,187,13.064,188,12.344,189,17.577,190,13.064,191,13.064,192,13.064,193,12.344,194,9.025,195,7.71,196,11.806,197,13.064]],["keywords/605",[]],["title/606",[1,138.581,77,487.845,99,605.026,198,389.728]],["content/606",[0,2.889,1,2.574,11,3.145,24,4.907,25,5.986,30,3.68,31,7.637,53,3.048,99,13.055,138,9.247,155,5.223,198,6.355,199,11.254,200,11.93,201,10.504,202,9.525,203,11.254,204,12.53,205,12.453,206,12.453,207,11.254,208,18.827,209,12.315,210,7.797,211,12.453,212,8.37,213,12.453]],["keywords/606",[]],["title/607",[0,276.306,1,158.147,155,499.465]],["content/607",[1,2.514,43,9.1,53,2.977,58,10.293,102,4.422,155,6.13,181,5.182,182,8.874,204,13.939,214,18.93,215,17.107,216,14.616,217,8.789,218,12.328,219,13.7,220,10.578,221,7.372,222,14.616,223,7.669,224,6.833,225,5.317,226,18.93,227,9.697]],["keywords/607",[]],["title/608",[1,184.147,228,1253.121]],["content/608",[1,2.905,5,4.176,11,2.616,43,7.186,48,7.921,60,2.926,68,6.477,155,7.357,181,3.672,204,11.007,215,13.509,217,8.988,218,12.608,219,10.818,221,5.223,223,5.433,225,5.437,227,6.871,228,13.509,229,8.068,230,5.191,231,8.743,232,9.131,233,2.526,234,5.953,235,9.359,236,10.366,237,6.705,238,10.356,239,12.156,240,6.96,241,10.356,242,10.356,243,8.735,244,10.356,245,10.356,246,10.356,247,10.356,248,7.055,249,6.057,250,10.356,251,7.843,252,10.356,253,7.495,254,5.433,255,10.356]],["keywords/608",[]],["title/609",[1,184.147,256,1108.641]],["content/609",[0,1.959,1,2.802,11,3.928,60,2.385,68,7.792,102,5.259,139,7.959,141,5.403,151,6.332,155,3.541,164,15.077,221,8.766,232,3.785,256,6.75,257,8.273,258,5.619,259,7.352,260,4.231,261,8.442,262,8.442,263,6.923,264,8.442,265,15.706,266,6.457,267,8.442,268,6.457,269,4.773,270,8.442,271,8.442,272,5.076,273,6.75,274,5.532,275,8.442,276,20.477,277,10.037,278,7.878,279,8.442,280,8.634,281,10.835,282,8.634,283,12.846,284,12.846,285,8.442,286,15.551,287,11.609,288,8.418,289,8.442,290,4.399,291,3.037,292,8.442,293,15.551,294,8.442,295,5.403,296,4.708,297,8.442,298,8.442,299,5.532]],["keywords/609",[]],["title/610",[72,595.104,353,1021.028]],["content/610",[]],["keywords/610",[]],["title/611",[23,480.154,72,511.082,354,472.149]],["content/611",[0,2.14,12,6.525,22,5.248,23,6.613,30,4.074,53,1.45,60,2.605,71,3.418,93,4.906,108,7.428,198,7.255,355,8.325,356,4.511,357,7.373,358,6.848,359,8.333,360,7.373,361,5.09,362,7.778,363,6.198,364,8.333,365,9.227,366,7.053,367,8.333,368,7.053,369,6.37,370,8.333,371,12.295,372,8.333,373,8.333,374,7.373,375,6.79,376,6.79,377,8.333,378,6.79,379,4.816,380,12.407,381,16.42,382,12.407,383,10.109,384,7.373,385,6.198,386,8.333,387,7.053,388,6.198,389,6.198,390,8.333,391,6.916,392,9.936,393,11.58,394,6.043,395,8.333]],["keywords/611",[]],["title/612",[114,864.749]],["content/612",[]],["keywords/612",[]],["title/613",[43,365.849,71,282.072,114,396.587,260,381.455,396,487.1,397,608.473,398,687.77]],["content/613",[2,9.449,12,4.828,53,2.729,115,6.23,118,3.751,137,7.343,181,3.602,257,5.405,307,10.496,315,3.191,335,4.261,357,13.872,396,9.435,397,8.122,399,11.786,400,11.786,401,11.786,402,9.18,403,9.18,404,9.18,405,9.18,406,9.18,407,8.568,408,9.18,409,9.18,410,9.18,411,9.18,412,9.18,413,9.18,414,9.18,415,9.18,416,9.18,417,9.18,418,9.18,419,9.18,420,9.18,421,9.18,422,9.18,423,5.79,424,9.18,425,7.233,426,8.122,427,6.828,428,8.33,429,3.551,430,15.68,431,9.18,432,8.568,433,13.322,434,11.338,435,10.855,436,13.322,437,9.18,438,7.122,439,7.77,440,7.352,441,13.322]],["keywords/613",[]],["title/614",[25,402.134,114,435.92,162,352.448,442,668.821,443,518.256,444,639.861]],["content/614",[0,3.423,53,2.32,79,6.613,111,10.048,229,7.962,399,11.794,400,11.794,427,9.914,442,15.225,443,11.798,444,11.283,445,13.331,446,13.331,447,13.331,448,13.331,449,13.331,450,11.283,451,17.209,452,13.156,453,17.209,454,13.331,455,13.331,456,13.331,457,13.331,458,13.331,459,13.331]],["keywords/614",[]],["title/615",[24,267.779,114,483.915,335,389.483,460,839.217,461,429.487]],["content/615",[19,7.307,24,6.319,53,2.91,79,8.297,427,12.439,461,8.559,462,16.725,463,14.156]],["keywords/615",[]],["title/616",[25,309.921,114,335.959,115,395.352,118,238.048,438,451.998,464,582.628,465,515.453,466,399.415,467,493.134]],["content/616",[24,1.984,30,4.092,53,2.146,60,3.856,67,3.289,71,4.06,93,5.828,115,4.219,118,4.045,121,5.803,122,5.375,185,5.67,202,5.263,224,3.216,231,7.983,236,5.912,307,11.08,356,3.366,427,4.624,435,5.066,438,9.568,466,6.786,467,12.996,468,4.979,469,6.218,470,2.651,471,4.899,472,6.218,473,6.218,474,6.218,475,10.076,476,5.375,477,12.334,478,6.218,479,4.899,480,3.955,481,4.687,482,17.808,483,6.218,484,10.049,485,4.404,486,6.218,487,5.525,488,8.758,489,9.239,490,6.218,491,6.218,492,6.218,493,6.218,494,5.803,495,6.218,496,6.218,497,7.462,498,9.899,499,6.218,500,4.508,501,6.858,502,6.218,503,9.899,504,6.218,505,6.218,506,5.803,507,14.063,508,9.239,509,6.218,510,5.803,511,5.375,512,6.218,513,6.218,514,6.218,515,6.218,516,9.899,517,4.753,518,9.899,519,2.512,520,6.218,521,9.899,522,6.218,523,6.218,524,6.218]],["keywords/616",[]],["title/617",[25,446.409,43,446.409,114,483.915,396,594.358,525,839.217]],["content/617",[12,10.275,25,8.695,41,6.654,315,5.682,465,14.462,526,14.165,527,7.8,528,11.577,529,13.319]],["keywords/617",[]],["title/618",[300,868.152,301,859.064]],["content/618",[]],["keywords/618",[]],["title/619",[233,338.213,302,324.255]],["content/619",[]],["keywords/619",[]],["title/620",[40,703.837,300,868.152]],["content/620",[0,2.091,1,1.792,11,4.537,14,4.001,19,5.329,30,2.73,32,3.905,40,4.575,41,5.952,53,2.123,60,2.546,67,4.308,79,4.041,83,5.272,89,5.769,139,10.024,142,6.319,143,10.791,146,7.602,181,3.196,221,6.808,224,4.214,258,5.904,300,5.643,303,5.705,304,11.794,305,4.635,306,11.068,307,11.52,308,10.791,309,12.411,310,7.602,311,4.762,312,9.013,313,4.082,314,3.943,315,5.082,316,9.824,317,2.314,318,7.206,319,8.145,320,8.145,321,6.14,322,7.206,323,9.013,324,9.013,325,8.145,326,11.754,327,9.013,328,8.145,329,12.197,330,12.197,331,13.497,332,13.497,333,6.637,334,5.906,335,3.78,336,9.013,337,9.013,338,2.646,339,9.013,340,4.462]],["keywords/620",[]],["title/621",[33,586.043,88,382.545,301,737.773]],["content/621",[0,4.208,1,1.46,7,4.238,10,5.98,11,4.581,15,4.981,30,1.856,32,4.764,33,5.412,40,5.582,41,4.045,53,2.852,60,3.107,67,5.256,76,9.77,83,9.127,84,6.376,86,7.83,88,7.31,102,5.488,137,5.478,156,8.098,164,13.355,194,7.597,200,7.71,201,9.276,258,4.81,301,12.914,304,6.025,305,5.655,309,7.597,317,2.823,341,6.96,342,12.476,343,10.997,344,10.997,345,7.296,346,8.412,347,8.792,348,10.997,349,10.997,350,6.118,351,10.997,352,10.997]],["keywords/621",[]],["title/622",[530,1269.313]],["content/622",[]],["keywords/622",[]],["title/623",[531,970.633]],["content/623",[1,2.671,11,2.897,60,3.24,69,8.157,96,6.103,118,4.235,141,7.341,155,6.742,164,8.446,177,7.641,181,5.7,223,6.018,232,8.321,299,7.516,305,5.898,429,7.878,443,7.106,461,7.435,531,6.709,532,10.366,533,6.432,534,6.432,535,4.9,536,11.471,537,16.075,538,7.814,539,16.075,540,7.814,541,8.774,542,8.446,543,8.446,544,9.406,545,9.675,546,4.548,547,10.366,548,7.427,549,8.446,550,10.534,551,10.366,552,11.471,553,7.924,554,10.838]],["keywords/623",[]],["title/624",[194,1146.432]],["content/624",[1,2.832,155,7.419,163,13.82,164,13.024,194,12.22,195,12.588,200,12.401,230,8.866,240,11.888,429,6.183,461,8.181]],["keywords/624",[]],["title/625",[240,1115.327]],["content/625",[1,2.554,7,4.725,11,4.252,13,11.988,43,5.895,118,4.528,131,8.874,138,8.535,154,6.932,155,7.062,195,7.237,209,8.874,229,6.618,240,8.241,429,5.885,480,7.049,485,7.848,535,5.238,540,8.353,550,8.035,555,7.848,556,9.029,557,6.618,558,6.989,559,10.678,560,9.58,561,11.081,562,15.216,563,6.54,564,15.216,565,13.461,566,12.262,567,8.136,568,11.081,569,8.601,570,8.601,571,6.185,572,7.172,573,8.035]],["keywords/625",[]],["title/626",[574,1074.47]],["content/626",[195,10.439,230,8.866,526,11.591,567,11.736,574,11.453,575,11.736,576,17.688,577,17.688,578,16.664,579,14.919,580,17.688,581,15.403]],["keywords/626",[]],["title/627",[570,847.751]],["content/627",[7,3.439,19,1.509,28,2.32,31,2.343,32,1.656,55,1.978,60,2.521,68,1.411,71,1.416,88,5.383,95,1.904,96,2.033,137,3.333,154,3.783,155,6.424,162,1.61,177,3.18,195,5.267,210,2.393,212,4.497,217,4.023,224,4.172,229,6.572,230,4.473,232,8.589,258,8.026,260,1.915,280,4.497,296,1.4,301,2.368,302,0.894,305,1.965,315,2.803,333,2.814,354,1.515,361,2.11,379,1.341,429,3.12,434,2.276,443,4.145,480,3.846,533,2.143,534,5.005,535,3.812,538,7.298,541,2.923,549,2.814,556,4.927,558,2.178,559,3.328,562,8.065,564,3.454,567,2.536,569,1.952,570,12.099,574,2.474,575,2.536,582,3.454,583,6.322,584,2.986,585,3.822,586,1.68,587,3.328,588,3.163,589,5.644,590,3.454,591,3.611,592,2.721,593,3.822,594,3.822,595,3.822,596,4.023,597,2.721,598,6.047,599,3.822,600,3.822,601,2.419,602,6.047,603,5.228,604,3.822,605,3.822,606,4.764,607,4.842,608,3.822,609,3.822,610,3.822,611,9.126,612,3.822,613,1.858,614,3.822,615,1.713,616,2.721,617,15.143,618,3.822,619,4.022,620,2.923,621,3.055,622,7.454,623,2.063,624,1.858,625,5.35,626,5.35,627,3.822,628,1.438,629,2.986,630,3.134,631,10.957,632,2.923,633,3.223,634,3.822,635,10.749,636,3.328,637,11.833,638,3.822,639,8.079,640,2.814,641,2.64,642,3.223,643,16.085,644,8.184,645,1.767,646,2.568,647,3.645,648,2.866,649,2.474,650,2.64,651,3.223,652,3.454,653,3.223,654,3.822,655,3.822,656,3.454,657,2.721,658,4.189,659,3.223,660,3.454,661,2.536,662,2.446,663,3.134,664,3.822,665,5.649,666,3.822]],["keywords/627",[]],["title/628",[571,836.983]],["content/628",[667,8.33]],["keywords/628",[]],["title/629",[22,634.394]],["content/629",[667,8.33]],["keywords/629",[]],["title/630",[635,1028.082]],["content/630",[667,8.33]],["keywords/630",[]],["title/631",[668,953.897]],["content/631",[667,8.33]],["keywords/631",[]],["title/632",[669,1146.432]],["content/632",[667,8.33]],["keywords/632",[]],["title/633",[23,669.091]],["content/633",[667,8.33]],["keywords/633",[]],["title/634",[198,619.76]],["content/634",[667,8.33]],["keywords/634",[]],["title/635",[670,582.125]],["content/635",[667,8.33]],["keywords/635",[]],["title/636",[291,596.996]],["content/636",[]],["keywords/636",[]],["title/637",[429,580.065]],["content/637",[667,8.33]],["keywords/637",[]],["title/638",[635,1028.082]],["content/638",[667,8.33]],["keywords/638",[]],["title/639",[198,517.871,671,957.957]],["content/639",[667,8.33]],["keywords/639",[]],["title/640",[672,1399.695]],["content/640",[667,8.33]],["keywords/640",[]],["title/641",[0,321.731,155,581.578]],["content/641",[0,4.558,1,2.609,28,11.927,155,8.239]],["keywords/641",[]],["title/642",[673,1386.652,674,1386.652]],["content/642",[]],["keywords/642",[]],["title/643",[531,970.633]],["content/643",[1,3.1,30,4.274,155,9.381,299,10.983]],["keywords/643",[]],["title/644",[194,1146.432]],["content/644",[1,2.91,30,4.073,155,7.762,194,12.786,240,12.439]],["keywords/644",[]],["title/645",[240,1115.327]],["content/645",[1,2.889,7,6.076,30,4.281,43,7.581,154,8.915,155,8.334,240,10.599,560,12.32,565,12.608,675,15.769]],["keywords/645",[]],["title/646",[574,1074.47]],["content/646",[30,3.998,574,12.414,578,17.48]],["keywords/646",[]],["title/647",[570,847.751]],["content/647",[1,1.49,7,4.325,30,4.334,55,3.672,88,6.748,95,3.534,154,4.01,155,8.355,217,6.749,224,5.247,229,3.829,301,4.395,443,4.395,480,4.078,570,10.731,574,7.267,596,6.749,602,12.584,606,5.051,607,5.134,611,9.486,617,18.002,624,3.45,626,5.672,631,4.832,635,10.685,639,11.443,644,4.768,647,2.897,656,6.411,658,4.441,660,6.411,661,4.707,665,4.49,676,7.094,677,7.094,678,7.094,679,7.094]],["keywords/647",[]],["title/648",[571,836.983]],["content/648",[667,8.33]],["keywords/648",[]],["title/649",[22,634.394]],["content/649",[667,8.33]],["keywords/649",[]],["title/650",[635,1028.082]],["content/650",[667,8.33]],["keywords/650",[]],["title/651",[668,953.897]],["content/651",[667,8.33]],["keywords/651",[]],["title/652",[669,1146.432]],["content/652",[667,8.33]],["keywords/652",[]],["title/653",[23,669.091]],["content/653",[667,8.33]],["keywords/653",[]],["title/654",[198,619.76]],["content/654",[667,8.33]],["keywords/654",[]],["title/655",[670,582.125]],["content/655",[667,8.33]],["keywords/655",[]],["title/656",[291,596.996]],["content/656",[]],["keywords/656",[]],["title/657",[429,580.065]],["content/657",[667,8.33]],["keywords/657",[]],["title/658",[635,1028.082]],["content/658",[667,8.33]],["keywords/658",[]],["title/659",[198,517.871,671,957.957]],["content/659",[667,8.33]],["keywords/659",[]],["title/660",[672,1399.695]],["content/660",[667,8.33]],["keywords/660",[]],["title/661",[0,321.731,155,581.578]],["content/661",[0,4.558,1,2.609,28,11.927,155,8.239]],["keywords/661",[]],["title/662",[233,290.461,680,638.111,681,506.352]],["content/662",[]],["keywords/662",[]],["title/663",[233,338.213,315,435.558]],["content/663",[1,1.831,6,6.031,30,4.224,53,2.168,60,5.148,68,5.091,69,4.077,185,4.801,296,3.399,317,3.54,358,5.757,470,3.574,519,3.386,546,3.677,628,3.491,682,7.497,683,7.415,684,3.491,685,5.006,686,4.459,687,5.006,688,8.632,689,9.817,690,7.497,691,9.267,692,7.926,693,8.138,694,9.525,695,9.525,696,10.546,697,12.588,698,10.546,699,10.546,700,8.138,701,10.772,702,11.024,703,7.415,704,5.081,705,2.764,706,5.12,707,7.094,708,7.094,709,5.377]],["keywords/663",[]],["title/664",[138,615.505,233,338.213]],["content/664",[1,1.905,6,4.28,30,4.275,53,2.256,60,5.283,68,5.297,69,4.301,162,4.123,317,3.683,358,5.989,470,3.771,519,3.573,546,3.88,628,3.683,683,7.824,684,3.683,688,8.981,689,6.968,690,7.8,691,6.577,692,8.246,693,8.466,694,9.91,695,6.76,696,7.485,697,9.91,698,7.485,699,7.485,700,8.466,701,7.645,702,7.824,703,7.824,704,5.361,705,2.916,706,5.402,707,10.972,708,7.485,709,8.317,710,9.786,711,9.786,712,9.786]],["keywords/664",[]],["title/665",[233,404.755]],["content/665",[1,2.201,6,5.243,30,4.163,53,2.607,60,4.683,68,4.426,69,5.269,317,4.255,358,6.921,470,4.619,519,4.376,546,4.752,628,4.511,684,4.511,688,7.504,689,8.534,690,6.517,691,8.056,692,6.89,693,7.074,694,8.281,695,8.281,696,9.168,697,11.451,698,9.168,699,9.168,700,7.074,701,9.365,702,9.583,704,6.567,705,3.572,706,6.617,707,9.168,708,9.168,709,6.95,713,8.826,714,8.826]],["keywords/665",[]],["title/666",[233,338.213,715,678.332]],["content/666",[1,2.163,11,2.302,30,4.237,53,2.141,60,5.729,68,5.026,69,4.007,185,4.719,269,5.154,296,3.341,317,3.495,358,6.802,470,3.513,519,3.328,546,3.614,586,4.007,628,3.431,681,3.876,684,3.431,685,4.92,686,4.382,687,4.92,688,10.199,689,9.692,690,8.857,692,9.364,693,9.614,694,9.404,695,9.404,700,9.614,704,4.994,705,2.717,706,5.032,707,6.973,708,6.973,709,7.892,713,6.712,714,6.712,715,6.659,716,11.481,717,5.38,718,3.756,719,4.541]],["keywords/666",[]],["title/667",[133,600.748,233,338.213]],["content/667",[1,2.272,30,4.212,53,2.69,60,4.833,68,4.634,69,5.517,133,5.438,317,4.392,358,7.143,470,4.836,519,4.582,546,4.976,628,4.724,684,4.724,688,7.858,689,8.936,690,6.824,692,7.215,693,7.407,694,8.671,695,8.671,700,7.407,704,6.876,705,3.74,706,6.929,707,9.6,708,9.6,709,7.277,713,9.242,714,9.242,716,10.586]],["keywords/667",[]],["title/668",[302,244.021,647,426.205,680,559.163,681,443.705]],["content/668",[]],["keywords/668",[]],["title/669",[302,278.474,315,374.061,647,486.381]],["content/669",[0,1.949,22,4.891,30,4.166,53,1.321,60,5.553,67,4.014,68,3.101,71,4.742,108,7.02,118,4.724,185,4.347,225,3.055,233,2.048,251,8.132,269,8.763,296,3.078,302,1.964,317,2.156,338,2.465,354,3.33,379,2.946,519,3.066,527,6.684,546,3.33,548,8.285,563,3.262,588,3.969,623,9.355,647,5.226,682,6.957,684,3.161,685,4.533,686,4.037,687,4.533,722,3.554,723,7.326,725,4.5,726,4.376,727,4.869,730,4.209,732,7.175,733,4.956,734,4.437,735,4.437,736,3.223,737,4.014,738,6.957,739,7.552,827,6.714,828,8.97,829,6.424,830,8.189,831,6.424,832,9.787,833,6.184,834,5.258,835,6.714,836,6.714,837,6.714]],["keywords/669",[]],["title/670",[138,528.602,302,278.474,647,486.381]],["content/670",[53,2.979,317,4.864,519,6.917,546,7.512,684,7.13,827,15.147,837,15.147]],["keywords/670",[]],["title/671",[302,324.255,647,566.342]],["content/671",[53,2.877,108,8.286,317,4.697,519,6.68,546,7.254,647,7.472,684,6.886,723,8.647,838,15.431,839,13.994]],["keywords/671",[]],["title/672",[647,566.342,715,678.332]],["content/672",[0,1.815,7,3.014,11,1.976,22,4.632,30,4.13,53,1.23,60,5.63,67,3.739,68,2.888,71,4.491,108,7.563,118,4.474,185,4.049,225,4.407,233,1.908,251,7.78,269,8.383,296,2.867,302,2.833,338,2.296,354,3.102,379,2.744,519,2.856,527,6.394,548,9.602,563,3.039,586,3.438,588,3.697,623,9.751,647,6.82,681,3.326,684,2.944,685,4.222,686,3.76,687,4.222,715,5.927,718,3.223,719,3.897,722,3.311,723,7.893,725,4.192,726,4.076,727,4.536,730,3.921,732,6.794,733,4.617,734,4.133,735,4.133,736,3.002,737,3.739,738,6.588,739,7.151,828,8.495,829,5.984,830,7.755,831,5.984,832,9.268,833,5.76,834,7.586,835,6.254,836,6.254,838,6.598,839,5.984]],["keywords/672",[]],["title/673",[133,600.748,647,566.342]],["content/673",[53,2.845,108,8.193,133,7.837,317,4.644,519,6.604,546,7.172,647,7.388,684,6.808,723,8.55,838,15.257,839,13.836]],["keywords/673",[]],["title/674",[11,263.561,302,244.021,315,327.782,647,426.205]],["content/674",[30,3.996,53,2.341,60,4.206,108,8.677,185,7.706,296,5.456,317,3.822,519,5.436,546,5.903,647,6.081,682,10.416,684,5.603,685,8.036,686,7.157,687,8.036,723,9.055,840,13.455,841,11.632,842,13.455,843,13.455,844,13.455,845,13.455]],["keywords/674",[]],["title/675",[302,278.474,680,638.111,681,506.352]],["content/675",[]],["keywords/675",[]],["title/676",[11,234.543,233,226.502,302,217.154,315,291.693,720,839.217]],["content/676",[30,4.194,53,1.784,60,3.969,67,5.422,68,4.188,69,4.986,71,5.911,108,6.363,118,5.889,185,3.721,233,2.767,296,2.635,317,2.912,338,3.33,354,4.497,379,3.979,470,2.77,519,2.625,546,2.85,563,4.406,588,5.361,628,2.706,682,6.167,684,2.706,685,3.88,686,3.456,687,3.88,704,3.939,705,2.142,706,3.969,721,5.294,722,4.801,723,8.205,724,8.145,725,6.078,726,5.911,727,6.576,728,6.956,729,7.101,730,5.685,731,6.956,732,6.361,733,6.694,734,5.992,735,5.992,736,5.392,737,5.422,738,8.672,739,6.694,740,7.623,741,5.294,742,4.967,743,6.064,744,5.119,745,5.499,746,5.499,747,5.499,748,5.499,749,5.499,750,4.711,751,5.499,752,4.77,753,5.499,754,5.499]],["keywords/676",[]],["title/677",[11,211.281,233,204.037,302,195.617,315,262.763,755,562.237,756,755.984]],["content/677",[1,2.042,14,2.99,30,4.166,53,1.694,60,4.749,67,5.148,68,3.977,69,4.734,71,5.698,108,6.095,118,5.677,119,4.469,120,3.839,185,3.486,233,4.101,296,2.468,311,5.69,317,3.455,354,4.27,358,5.619,379,3.778,470,2.595,519,2.459,546,2.67,563,4.183,588,5.09,628,2.535,680,3.609,681,2.864,682,5.856,684,2.535,685,3.635,686,3.238,687,3.635,704,3.69,705,2.007,706,3.718,721,4.959,722,4.558,723,6.36,724,7.802,725,5.771,726,5.612,727,6.244,728,6.604,729,6.743,730,5.398,731,6.604,732,6.039,736,5.165,737,5.148,738,8.36,739,6.356,740,7.238,741,4.959,742,4.653,743,5.681,744,4.796,745,5.152,746,5.152,747,5.152,748,5.152,749,5.152,750,4.414,751,5.152,752,4.469,753,5.152,754,5.152,757,3.558,758,5.051,759,4.796,760,6.735,761,6.735]],["keywords/677",[]],["title/678",[138,615.505,302,324.255]],["content/678",[30,4.192,53,1.717,60,4.385,67,5.218,68,4.031,69,5.982,71,5.754,95,5.438,108,4.944,118,5.732,233,2.663,317,2.803,338,3.205,354,2.716,379,3.83,470,2.64,519,2.501,546,2.716,563,4.241,588,5.16,628,2.578,684,2.578,704,3.753,705,2.041,706,3.782,721,5.044,722,4.62,723,8.538,724,7.89,725,5.85,726,3.57,727,3.972,728,4.201,729,4.289,730,5.472,731,6.694,732,6.122,733,4.043,734,3.619,735,5.767,736,5.958,737,3.275,738,8.441,739,8.032,740,4.604,741,5.044,742,7.542,744,7.773,745,5.24,746,8.35,747,8.35,748,8.35,749,8.35,750,7.154,751,8.35,752,7.243,753,8.35,754,5.24,762,6.191,763,6.851,764,6.851,765,6.851,766,6.851,767,6.191,768,5.778,769,6.851,770,4.201,771,4.436]],["keywords/678",[]],["title/679",[302,388.052]],["content/679",[30,4.128,53,2.246,60,4.034,67,4.649,68,3.591,69,6.277,71,5.293,108,6.468,118,5.273,233,2.372,317,3.666,338,2.855,354,3.856,379,3.412,470,3.748,519,3.551,546,3.856,563,3.778,588,4.597,628,3.661,684,3.661,704,5.328,705,2.898,706,5.369,722,4.117,723,7.998,724,8.28,725,5.212,726,5.068,727,5.639,728,5.964,729,6.089,730,4.875,731,5.964,732,5.454,733,5.74,734,5.138,735,5.138,736,5.481,737,4.649,738,7.765,739,5.74,740,6.537,742,6.719,744,6.925,745,7.439,746,7.439,747,7.439,748,7.439,749,7.439,750,6.373,751,7.439,752,6.453,753,7.439,754,7.439,762,8.79,772,7.162,773,8.204]],["keywords/679",[]],["title/680",[302,324.255,715,678.332]],["content/680",[30,4.214,53,1.913,60,3.436,67,5.813,68,4.491,69,3.455,71,4.508,108,5.509,118,6.182,162,5.124,185,4.069,233,2.966,269,4.444,296,2.881,317,3.122,338,3.57,354,4.822,379,4.266,470,3.029,519,2.87,546,3.117,563,4.724,588,5.749,628,2.959,684,2.959,685,4.243,686,3.779,687,4.243,704,4.307,705,2.343,706,4.34,715,5.95,717,4.64,722,5.148,723,7.914,724,7.052,725,6.517,726,6.338,727,7.052,728,7.458,729,7.615,730,6.096,731,7.458,732,6.82,733,7.178,734,6.425,735,6.425,736,4.668,737,5.813,738,9.104,739,7.178,740,8.174,772,5.788,773,6.631]],["keywords/680",[]],["title/681",[133,600.748,302,324.255]],["content/681",[30,4.124,53,2.236,60,4.016,67,4.621,68,3.569,69,6.249,71,3.583,108,6.439,118,5.249,133,4.188,162,4.073,233,2.358,317,3.65,338,2.838,354,3.833,379,3.391,470,3.725,519,3.53,546,3.833,563,3.755,588,4.569,628,3.638,684,3.638,704,5.296,705,2.881,706,5.337,722,4.092,723,7.97,724,8.243,725,5.18,726,5.038,727,5.605,728,5.928,729,6.053,730,4.845,731,5.928,732,5.421,733,5.706,734,5.107,735,5.107,736,5.457,737,4.621,738,7.73,739,5.706,740,6.497,742,6.679,743,8.154,744,6.883,745,7.394,746,7.394,747,7.394,748,7.394,749,7.394,750,6.335,751,7.394,752,6.414,753,7.394,754,7.394,772,7.118,773,8.154]],["keywords/681",[]],["title/682",[138,528.602,302,278.474,461,550.765]],["content/682",[30,4.209,53,2.442,69,4.801,93,9.613,95,7.735,317,3.987,470,4.209,519,3.988,546,4.33,563,6.032,628,4.111,684,4.111,704,5.983,705,3.255,706,6.029,717,6.446,723,8.541,742,10.728,768,13.098,770,9.523,771,7.072,774,9.87,775,9.87,776,14.576,777,6.766,778,10.922,779,12.416,780,16.329,781,14.447,782,9.87,783,4.922]],["keywords/682",[]],["title/683",[302,324.255,461,641.312]],["content/683",[11,2.263,30,3.324,53,1.409,69,2.363,71,8.849,93,4.767,95,6.693,317,2.3,338,3.944,355,4.548,470,2.072,519,1.963,546,2.132,563,2.088,628,2.023,684,2.023,704,2.945,705,1.602,706,2.968,717,3.173,723,4.235,742,3.714,768,11.333,770,5.494,771,3.481,776,6.281,777,3.331,779,4.299,780,8.097,781,7.163,782,4.859,783,2.423,784,4.859,785,5.376,786,8.959,787,13.436,788,13.436,789,16.122,790,10.743,791,13.436,792,13.436,793,8.959,794,18.263,795,8.959,796,8.959,797,8.959,798,8.959,799,8.959,800,8.959,801,8.959,802,8.959,803,8.959,804,8.959,805,8.959,806,8.959,807,8.959,808,8.959,809,8.959,810,8.959,811,8.959,812,8.959,813,8.959,814,8.959,815,8.959,816,8.959,817,8.959,818,8.959,819,8.959,820,8.959,821,8.959,822,8.959,823,8.959,824,8.959,825,8.959,826,8.959]],["keywords/683",[]],["title/684",[1,184.147,967,897.826]],["content/684",[]],["keywords/684",[]],["title/685",[1177,1567.993]],["content/685",[1,2.606,6,9.92,14,6.864,500,10.133,563,6.007,572,9.045,573,10.133,705,4.608,938,10.133,942,15.013,943,13.044,967,10.013,1012,14.72,1081,14.612,1178,17.092,1179,11.192,1180,13.975,1181,15.464,1182,13.467]],["keywords/685",[]],["title/686",[1,184.147,1028,491.666]],["content/686",[705,6.001,1028,7.141]],["keywords/686",[]],["title/687",[315,435.558,715,678.332]],["content/687",[1,2.546,19,7.57,30,3.235,606,13.651,670,6.726,1183,11.021]],["keywords/687",[]],["title/688",[182,462.079,199,687.77,223,399.297,606,541.881,662,487.1,1184,608.473,1185,407.802]],["content/688",[315,5.951,606,15.82,620,14.491,662,12.126,1186,15.147,1187,18.946]],["keywords/688",[]],["title/689",[1,123.323,32,402.322,56,608.521,203,839.217,305,477.508]],["content/689",[1,1.491,30,4.023,53,1.766,55,11.284,56,10.377,57,8.268,58,6.105,60,3.172,77,5.249,163,8.773,224,7.403,232,7.1,249,6.568,429,3.925,663,9.208,771,7.27,1185,6.017,1188,18.346,1189,11.229,1190,18.896,1191,16.338,1192,15.837,1193,7.45,1194,11.453,1195,15.837,1196,11.229,1197,12.986,1198,12.661,1199,8.268]],["keywords/689",[]],["title/690",[1,111.092,7,322.348,207,755.984,315,262.763,570,427.352,1200,705.587]],["content/690",[1,2.717,7,7.883,14,6.15,114,11.784,120,7.898,163,10.826,181,4.913,227,9.193,315,5.742,334,9.08,526,9.08,542,13.461,570,7.079,581,12.066,975,9.572,1144,12.066,1200,19.074,1201,13.856,1202,13.856,1203,8.497,1204,13.856,1205,13.856,1206,11.687,1207,11.687]],["keywords/690",[]],["title/691",[32,402.322,315,291.693,967,601.275,1008,594.358,1208,928.642]],["content/691",[1,2.889,7,5.339,15,6.276,30,3.452,32,6.003,53,2.179,55,11.705,58,7.534,114,7.22,315,4.352,317,3.557,771,11.836,1008,8.868,1190,11.687,1198,11.078,1206,11.687,1209,8.675,1210,13.856,1211,15.984,1212,12.522,1213,11.687,1214,13.856,1215,13.983,1216,14.616]],["keywords/691",[]],["title/692",[30,156.7,315,291.693,535,396.687,1003,538.413,1217,928.642]],["content/692",[1,2.788,28,8.874,30,2.466,53,2.299,55,10.868,224,6.833,258,6.393,317,3.752,611,12.895,705,6.257,719,7.281,777,9.055,967,9.464,1003,12.876,1008,9.355,1206,12.328,1215,14.479,1218,11.686,1219,14.616,1220,13.478]],["keywords/692",[]],["title/693",[32,402.322,394,608.521,1008,594.358,1213,783.272,1221,928.642]],["content/693",[1,2.015,11,3.832,14,6.734,15,6.871,30,2.56,32,6.573,53,2.386,55,11.657,315,4.765,1003,11.242,1008,12.41,1135,14.032,1183,11.145,1190,12.796,1198,12.129,1212,13.71,1213,12.796,1215,11.604,1222,12.129,1223,12.129,1224,15.171]],["keywords/693",[]],["title/694",[32,362.42,606,595.625,1008,535.41,1125,705.587,1194,480.86,1225,836.54]],["content/694",[1,2.546,53,3.015,55,9.924,1194,11.021,1197,15.722,1215,14.665]],["keywords/694",[]],["title/695",[69,334.514,77,355.789,1003,441.25,1082,504.942,1125,641.921,1185,407.802,1226,761.058]],["content/695",[7,6.892,15,8.101,16,9.584,315,5.618,546,7.091,553,12.356,1003,10.37,1027,10.281,1183,10.281,1186,14.3,1227,17.886,1228,11.198]],["keywords/695",[]],["title/696",[315,262.763,546,331.666,1183,480.86,1185,448.248,1229,836.54,1230,476.829]],["content/696",[30,2.661,236,8.511,315,4.953,317,4.048,546,9.056,606,11.228,620,12.062,647,8.116,1016,10.333,1183,13.13,1186,12.608,1231,15.769,1232,13.732,1233,15.769,1234,15.769,1235,12.931,1236,15.769]],["keywords/696",[]],["title/697",[69,306.829,77,326.343,546,276.766,1082,463.151,1183,401.265,1184,558.114,1185,374.051,1237,698.071]],["content/697",[15,8.48,16,10.033,546,7.424,553,12.935,1183,10.763,1186,14.97,1228,11.723,1238,18.724]],["keywords/697",[]],["title/698",[236,642.757,1016,780.355,1239,1190.871]],["content/698",[30,2.069,71,4.545,85,9.029,223,6.434,282,8.241,313,7.626,527,5.287,607,13.916,615,5.498,619,5.526,644,8.241,653,14.201,705,3.654,715,5.999,737,5.861,981,11.348,992,8.874,994,11.586,1016,12.6,1025,7.049,1040,10.343,1074,13.461,1108,11.586,1119,11.081,1135,14.98,1183,7.049,1240,12.262,1241,12.038,1242,12.879,1243,19.228,1244,12.262,1245,9.58,1246,11.081,1247,10.678,1248,12.262,1249,11.081]],["keywords/698",[]],["title/699",[141,667.893,607,755.225,1016,683.808,1250,1043.535]],["content/699",[1,2.249,7,6.527,141,10.841,546,8.237,607,12.259,719,8.438,981,9.997,1003,9.821,1008,10.841,1016,11.1,1135,12.259,1183,11.942,1194,9.737,1215,12.956,1251,16.939]],["keywords/699",[]],["title/700",[705,413.216,1252,1386.652]],["content/700",[11,3.906,19,6.106,28,9.389,232,8.8,239,9.787,280,10.394,487,7.8,705,5.849,1023,8.472,1218,15.692,1253,12.364,1254,15.464,1255,16.493,1256,12.681,1257,13.975,1258,13.975,1259,12.681,1260,13.044,1261,15.464,1262,15.464,1263,15.464]],["keywords/700",[]],["title/701",[88,382.545,680,638.111,681,506.352]],["content/701",[]],["keywords/701",[]],["title/702",[88,382.545,315,374.061,851,559.771]],["content/702",[30,4.181,53,2.02,60,4.393,67,4.035,68,4.743,72,5.513,88,5.583,118,3.117,180,3.804,185,4.37,233,3.133,296,3.094,315,2.652,317,3.298,358,5.364,470,3.253,519,3.082,546,3.347,628,3.177,682,6.985,684,3.177,685,4.557,686,4.058,687,4.557,690,4.59,691,5.674,692,4.853,722,5.437,730,6.439,736,5.968,783,3.804,851,6.039,878,4.155,879,4.155,880,4.155,883,6.75,884,12.007,885,7.121,886,7.629,887,7.121,888,7.121,889,7.629,890,6.923,891,7.121,892,9.147,893,7.121,894,6.75,895,6.75,896,6.75,897,6.75,898,6.011,899,7.629,900,6.75,901,7.121,902,6.457,903,7.121,904,6.011,905,4.734,906,5.832,907,5.832,908,5.832,909,6.596,910,4.399,911,4.399,912,7.121,913,7.121]],["keywords/702",[]],["title/703",[88,298.309,138,412.205,429,324.605,851,436.51,914,710.31]],["content/703",[0,3.452,30,4.118,53,2.34,60,2.907,68,3.799,69,4.523,88,5.614,180,4.637,233,2.51,317,3.82,358,4.296,470,3.965,519,3.757,546,4.08,628,3.873,684,3.873,690,5.595,691,6.916,692,5.915,722,4.355,730,5.157,736,5.71,783,4.637,851,6.994,878,5.064,879,5.064,880,5.064,883,8.227,884,12.074,891,8.679,892,10.594,893,8.679,894,8.227,895,8.227,896,8.227,897,8.227,898,7.326,901,8.679,902,7.87,903,8.679,904,7.326,905,5.77,906,7.108,907,7.108,908,7.108,909,8.039,910,5.362,911,5.362,912,8.679,913,8.679,915,10.289,916,9.299,917,7.87]],["keywords/703",[]],["title/704",[88,445.436,851,651.798]],["content/704",[0,2.434,30,4.078,53,2.373,60,2.964,68,3.874,88,5.676,180,4.728,233,2.559,317,3.874,358,4.381,470,4.043,519,3.831,546,4.16,628,3.949,684,3.949,690,5.705,691,7.052,692,6.031,722,4.441,730,5.259,736,5.791,783,4.728,851,7.093,878,5.163,879,5.163,880,5.163,884,12.207,891,8.85,892,10.744,893,8.85,894,8.388,895,8.388,896,8.388,897,8.388,898,7.47,900,8.388,901,8.85,902,8.025,903,8.85,904,7.47,905,5.884,906,7.248,907,7.248,908,7.248,909,8.197,910,5.467,911,5.467,912,8.85,913,8.85,918,8.388,919,9.482,920,9.482,921,10.492]],["keywords/704",[]],["title/705",[88,382.545,133,515.929,851,559.771]],["content/705",[30,4.14,53,2.07,60,4.991,67,4.167,68,4.86,69,5.786,72,6.806,88,5.675,118,3.219,133,6.871,180,3.929,233,2.127,249,5.1,269,4.929,317,3.379,338,2.559,358,3.64,470,3.36,519,3.183,546,3.457,623,4.706,628,3.281,684,3.281,688,5.458,690,4.741,691,5.86,692,5.012,704,4.776,705,2.598,706,4.813,717,5.146,722,3.69,730,4.37,736,5.052,744,6.208,752,8.734,776,9.229,777,5.401,783,3.929,851,6.188,884,10.956,887,7.354,888,7.354,894,6.971,895,6.971,896,6.971,897,6.971,902,10.069,906,6.023,909,6.812,917,6.669,918,6.971,919,7.879,922,8.719,923,8.719,924,8.719,925,8.719,926,11.103,927,8.719,928,8.719,929,8.719,930,8.719,931,8.238]],["keywords/705",[]],["title/706",[1,138.581,6,456.454,28,633.586,981,615.885]],["content/706",[]],["keywords/706",[]],["title/707",[7,534.325,981,818.389]],["content/707",[1,1.735,6,5.714,7,7.655,60,3.691,76,8.179,182,10.672,195,7.71,224,6.107,254,9.222,500,8.56,517,9.025,527,5.633,628,4.917,719,6.507,861,7.051,938,8.56,948,12.344,951,9.798,981,13.087,1003,7.574,1098,10.712,1104,7.103,1132,9.159,1193,8.667,1315,13.064,1316,13.064,1317,11.806,1318,9.619,1319,13.064,1320,15.885,1321,13.064,1322,13.064,1323,13.064,1324,13.064,1325,13.064,1326,13.064]],["keywords/707",[]],["title/708",[1016,1087.418]],["content/708",[1,1.512,30,1.922,74,6.287,138,7.1,195,6.722,497,7.758,544,9.339,546,4.515,548,7.374,555,7.289,630,9.339,715,11.231,958,8.242,981,12.465,1003,10.719,1016,13.84,1027,6.547,1093,9.918,1104,6.192,1152,9.918,1157,11.996,1241,7.13,1267,9.098,1282,9.606,1327,11.389,1328,10.292,1329,8.711,1330,11.389,1331,11.389,1332,11.389,1333,10.292,1334,10.292,1335,10.761,1336,10.292,1337,9.606,1338,11.389,1339,11.389,1340,11.389,1341,11.389,1342,11.389,1343,11.389,1344,9.606]],["keywords/708",[]],["title/709",[1337,1399.695]],["content/709",[7,5.846,182,9.211,715,11.017,967,9.823,975,10.481,981,12.612,1016,9.941,1048,16.885,1098,12.44,1235,12.44,1337,16.354,1345,15.171,1346,15.171,1347,12.129,1348,15.171,1349,11.604,1350,12.129,1351,10.334,1352,15.171,1353,15.171,1354,11.604]],["keywords/709",[]],["title/710",[629,930.412,715,582.559,1003,690.449]],["content/710",[1,2.158,5,6.552,11,5.114,55,8.411,80,7.681,89,10.401,231,9.505,303,10.285,661,10.782,705,4.842,861,8.771,1135,11.761,1268,14.151,1350,12.992,1355,16.25,1356,16.25,1357,16.25,1358,16.25,1359,16.25,1360,16.25]],["keywords/710",[]],["title/711",[321,811.224,975,822.704,1361,811.224]],["content/711",[114,8.915,133,7.412,194,8.671,195,7.407,232,7.67,282,8.435,321,16.239,334,11.21,547,17.588,570,8.739,578,9.806,607,9.083,611,8.55,621,10.035,975,14.439,980,8.799,981,11.487,1037,10.586,1207,10.586,1303,9.413,1362,12.551,1363,12.551,1364,12.551,1365,12.551,1366,12.551,1367,12.551,1368,12.551,1369,10.292,1370,12.551,1371,12.551]],["keywords/711",[]],["title/712",[1,158.147,6,520.9,972,709.345]],["content/712",[]],["keywords/712",[]],["title/713",[972,988.467]],["content/713",[19,6.288,237,10.312,394,10.436,429,6.989,535,6.803,637,13.06,646,10.704,963,9.867,972,9.487,1023,8.725,1025,9.155,1209,9.971,1403,14.393,1404,18.893,1409,15.926,1410,15.926,1411,15.926,4209,21.669,4210,21.669]],["keywords/713",[]],["title/714",[182,841.91,967,897.826]],["content/714",[1,2.484,7,6.257,10,6.328,25,5.594,43,5.594,72,4.994,73,9.816,80,5.5,114,10.547,120,6.633,277,9.092,314,5.09,440,8.422,475,7.535,544,9.543,546,6.438,563,4.52,570,5.945,661,10.774,715,5.693,790,9.304,967,12.11,975,11.218,978,10.996,980,8.159,1056,8.422,1067,7.448,1087,8.286,1104,8.829,1135,8.422,1147,9.092,1183,9.334,1185,6.236,1228,7.286,1267,9.96,1268,10.134,1412,11.637,1413,10.996,1414,8.04,1415,10.517,1416,11.637,1417,11.637,1418,11.637,1419,11.637]],["keywords/714",[]],["title/715",[980,972.16,981,818.389]],["content/715",[6,5.958,19,5.378,112,7.097,114,7.097,181,4.829,182,8.27,236,7.351,429,6.318,535,5.818,572,10.572,624,6.624,705,4.059,715,6.663,750,8.925,938,8.925,940,12.672,963,8.438,975,12.486,979,11.861,980,9.549,981,10.667,996,10.418,1072,10.418,1203,8.352,1267,6.703,1404,12.869,1420,11.488,1421,10.889,1422,13.62,1423,13.62,1424,13.62,1425,8.717,1426,10.889,1427,13.62,1428,13.62]],["keywords/715",[]],["title/716",[1003,962.136]],["content/716",[1,2.546,80,9.062,572,11.214,759,13.651,981,11.316,1003,11.116]],["keywords/716",[]],["title/717",[972,988.467]],["content/717",[1,2.487,705,5.58,958,13.551,972,13.143,1180,16.921,1265,16.921,1429,18.724]],["keywords/717",[]],["title/718",[138,615.505,973,1137.075]],["content/718",[1,1.941,6,6.393,10,7.947,11,3.692,30,3.543,138,6.488,429,5.109,485,9.355,570,7.467,572,11.072,715,7.15,777,9.055,961,13.81,967,12.257,973,11.985,1003,8.474,1147,11.419,1430,20.996,1431,20.996,1432,20.996,1433,14.616,1434,14.616]],["keywords/718",[]],["title/719",[1012,1244.581]],["content/719",[1,2.402,6,7.912,80,8.55,258,7.912,314,7.912,705,5.39,846,10.676,861,9.763,1012,16.213,1178,15.752]],["keywords/719",[]],["title/720",[233,338.213,1442,695.013]],["content/720",[]],["keywords/720",[]],["title/721",[1443,1181.561]],["content/721",[0,1.865,5,3.24,10,2.569,11,3.502,12,2.246,14,2.097,24,3.567,30,4.303,44,9.2,53,1.264,54,1.873,68,2.967,80,2.233,88,2.582,112,2.462,168,2.671,177,8.051,180,3.621,210,6.565,232,3.603,233,4.712,248,7.143,282,3.176,296,1.732,301,2.927,302,2.893,305,2.43,316,2.869,317,1.213,338,4.972,354,1.873,358,3.355,379,1.658,429,5.272,555,5.143,558,2.693,615,5.546,616,5.722,619,2.129,624,6.744,665,2.991,668,2.716,718,3.311,757,2.496,851,2.221,939,5.54,1030,3.479,1031,3.875,1193,3.135,1425,3.024,1442,2.368,1444,3.778,1445,7.919,1446,3.875,1447,4.725,1448,4.725,1449,4.27,1450,4.27,1451,3.985,1452,3.985,1453,4.27,1454,8.546,1455,8.036,1456,10.486,1457,4.725,1458,10.486,1459,8.036,1460,10.486,1461,4.979,1462,3.42,1463,3.264,1464,4.115,1465,2.693,1466,4.725,1467,3.778,1468,3.024,1469,2.958,1470,4.725,1471,4.725,1472,4.725,1473,4.725,1474,4.725,1475,3.985,1476,4.27,1477,4.725,1478,4.27,1479,4.27]],["keywords/721",[]],["title/722",[233,290.461,681,506.352,1480,910.886]],["content/722",[0,2.7,7,6.257,9,9.256,11,2.939,22,4.449,23,4.692,24,5.393,30,2.74,44,13.429,53,1.83,60,3.288,119,7.721,178,5.627,181,4.126,233,4.562,260,5.833,305,5.984,311,6.148,315,3.655,338,6.249,358,4.859,429,4.068,619,5.244,623,6.281,635,7.21,681,4.948,939,6.148,1022,7.066,1191,9.543,1193,7.721,1241,11.71,1454,12.921,1480,8.901,1481,10.167,1482,10.517,1483,8.901,1484,6.807,1485,11.637,1486,11.637,1487,10.517,1488,9.816]],["keywords/722",[]],["title/723",[24,300.909,44,692.358,338,441.213]],["content/723",[7,4.389,24,5.781,30,1.922,44,7.556,68,4.205,78,5.935,80,5.383,88,3.658,115,6.984,165,7.289,181,4.038,198,4.253,231,6.661,233,3.901,234,6.547,248,7.758,260,5.708,300,7.13,302,2.663,317,2.924,338,6.2,341,7.208,429,3.981,481,7.758,568,10.292,570,5.818,619,5.132,917,8.711,938,7.463,1025,6.547,1098,9.339,1193,7.556,1282,9.606,1283,10.761,1454,11.05,1480,8.711,1489,7.208,1490,10.292,1491,8.711,1492,7.13,1493,9.105,1494,12.295,1495,11.389,1496,9.606,1497,7.463,1498,11.389,1499,11.389,1500,9.105,1501,10.292,1502,9.606,1503,8.711]],["keywords/723",[]],["title/724",[1442,695.013,1454,957.957]],["content/724",[1,1.104,7,3.202,11,4.354,24,3.66,25,3.995,30,2.599,44,5.514,53,1.996,60,4.351,68,4.687,76,5.203,88,2.67,102,2.515,172,6.233,177,3.95,178,6.137,180,6.94,224,3.885,233,4.775,258,5.552,302,1.943,313,3.764,314,3.635,338,4.521,342,10.149,358,5.3,379,2.915,429,4.437,466,5.149,497,5.661,586,3.653,589,7.01,615,3.726,619,3.745,624,4.042,691,5.586,692,7.296,694,8.769,695,8.769,696,9.709,697,12.828,698,9.709,699,9.709,718,3.424,939,4.391,1039,7.01,1096,7.237,1241,7.947,1454,10.64,1481,5.203,1482,11.471,1504,8.311,1505,8.311,1506,6.357,1507,13.76,1508,8.311,1509,5.319,1510,5.046,1511,8.311,1512,11.471,1513,6.357,1514,8.311,1515,8.531,1516,9.52,1517,8.311,1518,8.311,1519,4.66]],["keywords/724",[]],["title/725",[233,338.213,1520,722.583]],["content/725",[1,2.322,14,5.752,24,5.041,68,4.784,99,7.513,180,5.839,233,3.16,258,5.668,260,6.495,311,6.846,313,5.869,314,5.668,338,3.804,350,11.006,479,9.226,613,6.302,692,10.049,992,9.378,1076,8.597,1154,8.201,1328,11.71,1442,8.762,1497,8.491,1507,13.878,1520,9.11,1521,12.958,1522,8.491,1523,9.541,1524,12.958,1525,7.648,1526,7.792,1527,9.911,1528,12.958,1529,12.958,1530,11.71,1531,12.958]],["keywords/725",[]],["title/726",[1,101.068,11,192.217,15,344.698,233,185.627,429,266.027,1442,381.455,1515,511.506]],["content/726",[0,3.895,1,2.41,5,4.923,10,4.296,11,3.084,15,7.603,16,6.542,19,4.82,22,3.02,23,3.185,24,4.303,30,2.518,53,2.347,54,4.84,79,3.542,80,3.734,88,4.793,102,3.694,168,4.466,178,5.903,181,2.801,225,2.874,233,2.978,248,5.382,301,7.564,302,2.855,313,3.578,314,3.456,340,3.911,379,2.771,429,5.868,563,4.742,619,5.501,624,3.842,661,5.241,718,3.255,736,3.032,830,5.056,995,11.413,1027,4.541,1055,6.88,1159,5.31,1193,5.241,1290,5.717,1425,5.056,1426,9.761,1442,6.119,1445,3.693,1454,10.309,1461,4.894,1463,5.458,1494,7.487,1496,6.663,1501,7.139,1507,9.778,1526,4.75,1532,7.9,1533,7.9,1534,8.99,1535,7.9,1536,7.9,1537,7.814,1538,6.316,1539,6.663,1540,9.761,1541,5.817,1542,12.209,1543,9.338,1544,7.9,1545,12.209,1546,14.922,1547,6.316,1548,7.9,1549,6.663,1550,7.139]],["keywords/726",[]],["title/727",[527,597.909,1276,897.826]],["content/727",[]],["keywords/727",[]],["title/728",[1551,1659.47]],["content/728",[88,4.611,118,5.3,165,9.187,198,5.361,291,5.164,313,6.501,345,9.523,429,6.54,550,9.406,615,6.435,635,13.663,668,8.251,670,5.035,686,6.9,718,5.914,914,10.979,1025,8.251,1266,12.5,1425,9.187,1490,12.972,1552,14.354,1553,14.354,1554,9.406,1555,14.958,1556,13.776,1557,14.354,1558,9.406,1559,8.892]],["keywords/728",[]],["title/729",[950,1567.993]],["content/729",[0,1.75,6,1.919,15,1.987,22,1.677,25,2.109,29,2.989,31,2.691,33,2.159,61,3.598,76,2.747,80,2.074,82,2.777,88,3.187,154,8.768,177,2.086,180,3.399,181,1.556,182,2.664,198,6.116,236,2.368,243,3.701,254,2.302,280,5.07,288,6.502,291,1.579,295,4.828,302,2.32,305,9.907,313,6.01,314,1.919,315,1.378,321,2.989,353,3.231,429,1.534,467,3.356,481,5.139,487,2.213,527,1.892,528,4.828,533,11.228,534,5.564,535,1.874,556,5.554,572,2.567,588,4.69,597,9.447,601,2.777,613,2.134,615,5.949,632,5.77,640,3.231,641,3.031,645,2.029,649,6.424,650,3.031,657,3.124,668,4.336,670,4.132,705,1.308,717,2.59,718,1.808,755,2.949,846,2.59,861,8.838,942,5.77,959,2.747,962,3.598,964,4.146,980,5.289,984,7.916,1025,5.703,1028,5.5,1031,6.186,1035,3.231,1147,3.428,1194,2.522,1203,2.691,1209,2.747,1228,2.747,1241,2.747,1272,8.136,1277,4.146,1303,5.657,1309,2.777,1329,7.589,1344,6.363,1349,3.356,1361,2.989,1438,2.302,1445,6.203,1461,2.718,1491,9.009,1492,4.723,1497,2.875,1515,2.949,1530,6.817,1539,3.701,1554,2.875,1560,4.388,1561,4.388,1562,5.894,1563,9.935,1564,4.388,1565,3.598,1566,4.388,1567,3.508,1568,4.388,1569,4.388,1570,13.268,1571,6.363,1572,5.211,1573,4.388,1574,4.388,1575,4.388,1576,4.388,1577,3.508,1578,8.64,1579,3.965,1580,3.428,1581,4.388,1582,4.388,1583,4.388,1584,7.543,1585,4.388,1586,4.388,1587,4.388,1588,6.212,1589,4.388,1590,4.388,1591,4.388,1592,4.388,1593,4.388,1594,4.388,1595,4.388,1596,3.356,1597,3.965,1598,3.508,1599,3.428,1600,3.701,1601,3.965,1602,3.965,1603,3.701,1604,4.943,1605,3.124,1606,4.388,1607,4.388,1608,4.388,1609,4.388,1610,3.701,1611,4.388,1612,3.965,1613,3.701,1614,4.388,1615,4.388,1616,3.231,1617,3.701,1618,4.388,1619,3.176,1620,2.808,1621,3.821]],["keywords/729",[]],["title/730",[30,141.158,305,430.149,481,569.853,533,469.106,1228,523.739,1572,577.917]],["content/730",[22,5.204,30,3.546,33,6.699,53,1.434,71,5.045,72,3.912,102,2.758,162,5.735,177,6.47,198,8.631,208,8.238,212,6.127,225,3.316,232,4.087,461,4.216,466,5.648,470,5.245,567,6.048,615,4.087,635,10.092,665,8.615,670,6.782,718,7.444,861,4.92,867,4.719,870,8.615,951,10.209,984,6.127,1114,6.598,1393,8.238,1425,5.835,1489,8.615,1492,5.707,1520,4.75,1526,5.482,1537,5.835,1541,6.712,1554,8.92,1563,7.689,1617,13.74,1622,9.116,1623,9.116,1624,9.116,1625,13.612,1626,8.238,1627,9.116,1628,9.116,1629,8.238,1630,7.288,1631,9.116,1632,8.238,1633,7.288,1634,9.116,1635,9.116,1636,8.238,1637,7.122,1638,6.973,1639,7.689]],["keywords/730",[]],["title/731",[15,172.995,71,141.564,115,234.223,177,317.875,181,135.43,198,142.648,288,250.287,622,212.497,670,133.985,1104,207.681,1228,239.133,1491,292.153,1493,305.376,1534,281.243,1572,263.87,1610,322.162,1640,381.954]],["content/731",[6,3.834,7,3.378,15,3.97,22,6.773,29,5.972,71,3.249,72,3.762,95,4.367,115,5.376,154,4.956,162,3.693,176,6.455,177,6.283,181,6.282,198,7.463,232,3.93,288,11.609,302,2.05,317,2.251,354,3.476,527,5.7,529,6.455,533,4.916,615,3.93,622,4.877,649,5.676,670,6.669,861,4.732,874,10.839,951,6.575,984,8.884,1001,7.922,1027,5.039,1028,3.108,1040,7.394,1068,7.634,1071,5.744,1080,6.849,1103,8.283,1104,7.187,1114,6.344,1194,7.598,1228,8.276,1230,4.997,1272,7.189,1329,6.705,1361,5.972,1414,6.056,1467,7.009,1491,6.705,1492,5.488,1493,7.009,1534,6.455,1537,5.611,1601,7.922,1604,8.662,1610,7.394,1617,7.394,1629,7.922,1636,7.922,1641,8.766,1642,13.218,1643,8.283,1644,8.766,1645,8.766,1646,11.149,1647,9.566,1648,7.922,1649,8.766,1650,8.766,1651,8.283,1652,7.922,1653,7.922,1654,8.766,1655,7.922,1656,6.705]],["keywords/731",[]],["title/732",[118,281.007,162,320.646,180,342.942,291,273.791,1468,487.1,1572,525.771,1657,582.126]],["content/732",[0,4.204,2,7.641,4,4.539,7,3.533,15,6.192,23,5.512,41,5.028,54,3.635,118,6.035,181,3.251,198,5.105,277,7.163,291,4.918,305,9.316,317,2.354,340,10.061,527,7.048,533,10.16,555,8.749,563,3.561,586,4.03,597,9.733,624,4.459,649,8.851,984,6.162,1005,8.663,1035,6.751,1076,9.07,1242,7.013,1292,7.163,1461,10.126,1468,12.403,1484,7.996,1562,7.163,1563,7.733,1567,7.33,1597,8.286,1602,8.286,1604,6.008,1657,7.013,1658,9.168,1659,9.168,1660,9.168,1661,8.286,1662,8.286,1663,8.663,1664,9.168,1665,9.168,1666,10.456,1667,12.354,1668,13.67,1669,9.168,1670,8.286,1671,9.168,1672,9.168,1673,9.168,1674,7.518,1675,8.286]],["keywords/732",[]],["title/733",[198,223.682,556,441.009,867,310.015,1309,379.067,1468,383.334,1492,374.978,1559,371.053,1572,413.767,1676,541.256,1677,478.851]],["content/733",[13,7.884,23,6.323,29,7.543,80,5.234,96,5.891,118,4.089,178,5.354,198,5.856,232,4.965,305,5.694,307,7.884,334,7.256,341,7.008,353,8.154,363,7.442,379,3.884,396,7.087,434,6.596,533,8.794,556,8.154,573,7.256,603,12.252,718,6.461,736,4.25,757,5.85,951,8.305,1028,3.926,1228,6.933,1297,10.463,1309,7.008,1468,7.087,1492,9.818,1503,8.47,1554,7.256,1559,6.86,1572,7.65,1588,6.933,1633,8.853,1657,8.47,1674,9.08,1676,10.007,1677,8.853,1678,11.073,1679,9.643,1680,11.073,1681,15.357,1682,11.073,1683,11.073,1684,10.833,1685,9.643,1686,10.007,1687,11.073,1688,9.34,1689,9.34,1690,7.442,1691,11.073,1692,11.073,1693,10.007]],["keywords/733",[]],["title/734",[198,312.421,527,360.707,870,529.45,1572,577.917,1694,836.54,1695,836.54]],["content/734",[224,9.183,313,8.897,314,8.593,667,8.023]],["keywords/734",[]],["title/735",[535,275.401,646,433.31,705,192.121,1159,433.31,1242,493.134,1572,445.394,1588,403.64,1596,493.134,1696,582.628]],["content/735",[1,1.641,120,7.044,181,6.845,198,8.39,232,8.655,253,8.943,290,6.439,535,8.247,541,9.452,557,9.136,572,7.228,648,9.268,705,3.682,1022,7.503,1028,4.381,1245,9.654,1351,8.418,1373,11.676,1489,7.821,1492,10.597,1537,7.909,1588,10.597,1596,9.452,1604,11.091,1630,9.88,1675,11.167,1693,11.167,1696,11.167,1697,11.167,1698,11.167,1699,10.423,1700,12.357,1701,12.357,1702,12.357,1703,8.001,1704,11.676,1705,12.357]],["keywords/735",[]],["title/736",[1443,1181.561]],["content/736",[]],["keywords/736",[]],["title/737",[1223,952.113,1706,1190.871,1707,1125.225]],["content/737",[0,2.624,1,2.114,2,9.344,4,9.895,6,6.962,10,6.149,23,6.417,118,4.175,131,8.184,165,7.238,178,5.467,223,5.933,254,5.933,291,5.726,340,5.599,528,7.238,533,8.925,569,5.777,570,5.777,586,4.97,644,10.697,649,7.322,670,3.967,705,3.37,718,4.659,846,6.674,940,7.928,958,8.184,972,9.48,988,10.685,1035,8.327,1039,9.538,1076,7.503,1153,7.157,1468,7.238,1537,7.238,1571,9.538,1598,9.041,1708,9.538,1709,14.383,1710,6.934,1711,11.308,1712,9.538,1713,11.308,1714,8.052,1715,11.308,1716,10.219,1717,11.308,1718,8.052,1719,11.308]],["keywords/737",[]],["title/738",[1,220.377]],["content/738",[0,2.642,1,2.124,2,5.324,4,5.639,6,4.982,22,4.354,23,4.592,25,5.475,31,6.984,118,5.906,176,8.386,198,7.488,291,5.754,295,7.289,305,5.856,315,3.577,335,4.777,340,5.639,533,6.387,555,7.289,586,5.006,622,6.336,670,5.611,856,7.056,874,9.339,958,8.242,1025,11.525,1142,9.339,1153,7.208,1179,8.242,1194,6.547,1228,7.13,1264,8.242,1312,7.13,1388,11.778,1468,13.517,1492,10.014,1502,9.606,1554,7.463,1604,7.463,1633,9.105,1720,7.463,1721,10.292,1722,11.389,1723,10.292,1724,13.491]],["keywords/738",[]],["title/739",[74,657.396,527,711.497]],["content/739",[]],["keywords/739",[]],["title/740",[88,533.074]],["content/740",[0,2.661,5,4.625,23,4.625,71,4.251,88,7.508,133,4.969,138,5.092,162,4.833,177,7.641,223,6.018,225,5.847,229,6.191,295,10.289,315,3.603,429,7.402,611,7.814,668,6.593,851,5.392,867,5.937,870,7.26,939,6.06,1153,7.26,1159,7.709,1223,9.171,1241,7.181,1425,7.341,1426,9.171,1444,9.171,1519,9.015,1520,5.977,1522,7.516,1703,7.427,1725,14.527,1726,11.471,1727,8.962,1728,9.675,1729,8.962,1730,18.559,1731,9.171,1732,8.042,1733,9.406,1734,11.471,1735,9.675]],["keywords/740",[]],["title/741",[302,388.052]],["content/741",[0,3.137,1,0.721,7,2.093,12,2.581,22,5.169,23,4.678,24,1.566,30,3.25,53,0.854,71,2.013,79,4.051,82,5.719,118,3.336,137,2.705,162,2.288,168,3.07,198,2.028,224,2.539,225,4.22,237,5.85,254,2.85,291,1.954,295,3.476,296,4.252,302,5.201,304,4.95,317,1.394,355,2.757,356,2.657,379,1.905,429,4.726,440,3.931,450,4.154,479,3.867,527,5.002,535,2.32,557,7.298,586,2.387,597,3.867,615,4.051,619,4.071,668,3.122,670,4.07,681,2.309,718,6.185,830,3.476,846,3.205,867,4.677,962,4.454,991,4.73,1025,3.122,1055,4.73,1148,3.931,1153,5.719,1228,3.4,1267,2.673,1303,6.776,1329,4.154,1445,8.03,1461,3.365,1465,6.613,1468,5.783,1469,10.145,1484,3.177,1492,3.4,1554,3.559,1598,9.276,1603,4.581,1604,7.602,1632,8.165,1633,4.342,1638,6.911,1639,4.581,1652,4.908,1684,3.752,1689,4.581,1718,3.867,1736,5.431,1737,4.454,1738,5.431,1739,9.035,1740,5.431,1741,5.431,1742,5.431,1743,9.785,1744,10.484,1745,4.342,1746,5.431,1747,6.539,1748,4.908,1749,5.431,1750,4.908,1751,5.431,1752,4.154,1753,5.431,1756,5.431,1757,4.908,1759,5.431,1760,5.431,1761,3.65,1762,4.154,1763,4.908,1764,4.908,1765,4.908,1766,4.908,1767,4.908,1768,4.908,1769,4.908,1770,4.908,1771,3.149,1772,4.908,1773,4.581,1774,4.908,1775,4.908,1776,4.908,1777,4.908,1778,4.908,1779,5.431,1780,4.908,1781,4.581,1782,5.431,1784,5.431,1785,5.431,1786,5.431,1787,5.431,1788,5.431,1789,4.581,4211,5.886]],["keywords/741",[]],["title/742",[233,338.213,616,987.311]],["content/742",[0,3.603,11,4.97,24,5.21,44,7.246,54,4.33,88,4.988,177,7.381,210,9.722,232,6.962,233,5.54,282,7.341,301,6.766,302,4.225,305,5.616,316,6.631,338,5.304,429,6.316,555,6.99,558,6.226,615,6.962,616,11.057,619,4.922,624,5.312,665,6.913,668,6.278,939,9.546,1030,8.042,1193,7.246,1444,8.732,1445,8.447,1446,8.956,1449,9.87,1450,9.87,1452,9.212,1453,9.87,1454,7.545,1468,6.99,1469,6.838,1478,9.87,1790,10.922]],["keywords/742",[]],["title/743",[670,582.125]],["content/743",[5,4.869,102,6.528,210,7.561,231,7.064,237,7.82,254,6.336,258,5.283,291,5.994,299,10.918,302,2.824,315,3.793,335,6.988,429,7.189,575,8.013,596,7.262,665,12.073,670,8.478,1017,10.517,1025,6.942,1075,7.406,1425,7.73,1465,6.884,1558,10.918,1637,9.436,1638,9.238,1639,10.186,1791,12.077,1793,12.077,1794,14.053,1795,12.077,1796,12.077]],["keywords/743",[]],["title/744",[22,398.93,23,420.749,670,366.061,1771,605.026]],["content/744",[1,2.814,155,7.337,224,8.179,535,7.473,631,11.917,645,8.091,681,7.439,1153,11.073,1230,9.972,1797,8.715,1798,20.597]],["keywords/744",[]],["title/745",[33,816.647]],["content/745",[1,2.564,11,3.121,30,2.085,33,8.33,41,7.101,78,6.439,80,5.841,88,3.969,181,6.845,225,4.495,248,8.418,291,6.089,302,2.89,313,7.666,335,5.183,527,5.328,586,5.431,615,5.54,619,5.568,639,8.199,718,5.091,1022,7.503,1071,8.097,1154,7.821,1276,8.001,1443,8.798,1461,7.655,1484,12.723,1515,8.305,1519,6.929,1667,11.167,1747,8.943,1799,11.167,1800,12.357,1801,8.097,1802,9.88,1803,12.357,1804,12.357,1805,11.167]],["keywords/745",[]],["title/746",[30,209.675,89,383.334,137,298.343,291,352.355,429,209.356,1555,478.851,1806,413.767]],["content/746",[1,2.087,6,3.062,7,5.32,11,3.487,30,2.652,41,2.575,55,3.624,68,2.585,74,3.865,88,2.249,89,4.481,96,5.909,118,6.733,137,8.536,165,12.69,177,3.327,181,2.482,198,5.156,230,3.509,232,3.139,233,1.708,260,8.589,291,4.966,302,2.597,304,3.835,305,5.711,310,5.905,315,2.199,321,4.769,429,7.314,443,4.337,466,4.337,551,6.327,572,4.095,615,6.189,619,5.005,624,3.405,628,2.635,635,8.553,658,4.383,661,4.645,668,6.384,670,2.456,718,6.474,719,3.487,870,4.431,914,8.495,1070,6.615,1144,6.096,1207,5.905,1414,4.836,1415,6.327,1445,5.192,1461,4.337,1469,4.383,1481,4.383,1526,4.21,1555,12.564,1556,11.571,1718,4.985,1806,10.856,1807,11.644,1808,7.001,1810,7.001,1811,7.001,1812,5.355,1813,5.597,1814,7.001,1815,5.905,1816,6.327,1817,7.001,1819,5.905,1821,7.001,1822,6.327,1823,6.327,1824,7.001,1825,11.106,1826,7.001,1827,7.001,1828,7.001,1829,7.001,4212,7.587]],["keywords/746",[]],["title/747",[856,1028.082]],["content/747",[6,6.699,11,3.868,22,5.855,30,2.584,137,7.629,177,7.28,181,5.431,198,5.72,260,7.677,429,5.354,596,9.21,668,8.804,757,8.092,856,9.489,963,9.489,1056,11.085,1468,9.803,1523,11.278,1526,9.21,1605,10.905,1685,13.338,1718,10.905,1812,11.715,1813,12.245,1830,12.919,1831,13.841,1832,12.245]],["keywords/747",[]],["title/748",[1276,897.826,1443,987.311]],["content/748",[]],["keywords/748",[]],["title/749",[1276,897.826,1833,1108.641]],["content/749",[1,2.621,11,1.472,24,1.68,25,2.801,30,4.369,41,2.143,44,3.866,53,0.916,88,1.872,95,4.77,102,4.272,108,2.639,118,5.213,177,2.77,178,2.817,198,2.176,232,2.613,291,6.658,302,2.851,304,3.192,314,2.549,335,4.016,338,1.711,345,3.866,350,3.242,354,2.31,355,2.958,497,3.969,563,2.263,572,3.408,601,3.688,615,4.293,619,2.626,645,2.695,647,2.38,670,2.044,680,3.122,681,4.072,718,3.946,722,2.466,1142,4.778,1153,3.688,1230,3.321,1267,2.868,1312,5.996,1484,3.408,1526,3.504,1554,3.818,1559,5.933,1604,3.818,1684,4.026,1797,4.77,1801,9.252,1802,4.659,1805,5.266,1833,4.659,1834,4.085,1835,8.077,1837,5.827,1838,5.827,1839,5.827,1840,3.268,1841,5.827,1842,5.827,4213,6.315]],["keywords/749",[]],["title/750",[112,722.583,1442,695.013]],["content/750",[1,2.913,2,4.492,11,2.427,30,1.621,33,6.965,76,6.016,78,5.007,88,3.087,102,4.283,112,5.007,182,5.834,233,3.452,291,6.045,302,4.621,314,4.203,315,3.018,335,5.936,340,4.757,350,10.314,461,4.444,500,6.297,527,6.103,563,5.498,573,6.297,584,7.508,647,5.781,718,5.832,1016,6.297,1027,5.524,1031,7.88,1035,7.076,1143,8.368,1276,10.88,1312,12.373,1442,8.422,1469,8.862,1484,5.621,1520,5.007,1720,6.297,1771,5.571,1816,8.684,1840,5.389,1950,6.297,1956,12.791,2000,9.609,2001,9.609,2002,9.609,2003,5.621,2004,9.609,2005,14.154,2006,9.609,2007,14.154,2008,9.609]],["keywords/750",[]],["title/751",[88,445.436,1442,695.013]],["content/751",[]],["keywords/751",[]],["title/752",[1443,1181.561]],["content/752",[]],["keywords/752",[]],["title/753",[550,908.646,1309,877.619]],["content/753",[0,3.313,1,1.896,14,4.317,30,1.641,43,6.865,81,7.162,88,7.523,93,5.175,118,5.273,138,4.317,178,6.905,210,12.434,233,3.483,274,6.373,302,2.274,311,5.138,313,4.405,314,4.254,429,7.501,526,6.373,529,7.162,582,8.79,615,4.361,616,6.925,644,6.537,705,2.898,718,4.007,851,4.572,914,7.439,926,8.204,1230,5.544,1354,7.439,1414,6.719,1442,4.875,1519,12.596,1522,6.373,1690,6.537,1725,8.79,1735,12.045,1834,6.819,1857,7.439,1984,7.776,2009,12.045,2010,9.726,2011,9.726,2012,9.726,2013,8.79,2014,9.726,2015,9.726,2016,9.726]],["keywords/753",[]],["title/754",[1309,877.619,2017,1253.121]],["content/754",[88,6.505,118,6,178,9.79,230,11.056,429,7.71,984,10.922,1015,13.706,1519,11.355,1555,12.992,1735,13.706,2018,20.249,2019,14.685,2020,16.25]],["keywords/754",[]],["title/755",[1559,859.064,2021,1253.121]],["content/755",[]],["keywords/755",[]],["title/756",[350,771.451,2003,811.06]],["content/756",[0,4.245,88,5.877,99,10.607,181,6.487,350,10.179,1519,10.26,1522,11.989,1718,13.027,2003,12.73]],["keywords/756",[]],["title/757",[1,184.147,102,419.562]],["content/757",[1,2.628,7,2.957,11,1.938,30,4.407,53,1.207,76,4.804,88,6.573,102,3.611,178,5.771,291,2.76,429,2.682,680,4.111,681,3.262,851,5.61,1199,8.788,1230,6.803,1497,5.028,1519,8.214,1522,5.028,1523,5.65,1963,6.134,2003,4.488,2022,7.25,2023,7.673]],["keywords/757",[]],["title/758",[118,511.996,291,498.85]],["content/758",[0,4.245,1,2.43,7,7.05,11,4.621,84,10.607,88,5.877,118,6.755,291,6.582,340,9.058,1519,10.26]],["keywords/758",[]],["title/759",[1520,864.749]],["content/759",[1,2.414,14,8.068,32,5.951,77,9.524,88,5.839,102,4.156,177,6.529,181,4.871,233,3.351,240,9.233,296,5.034,311,7.257,439,10.507,527,5.923,550,9.002,615,6.159,648,10.303,705,5.417,718,5.66,1354,13.903,1442,9.111,1461,11.261,1519,7.703,1520,11.298,1690,12.217,2024,12.414]],["keywords/759",[]],["title/760",[233,404.755]],["content/760",[0,4.056,1,2.322,5,5.225,11,4.415,14,8.781,15,5.869,19,5.116,24,3.736,77,8.172,88,6.355,102,3.921,112,6.752,165,8.293,233,5.165,302,3.03,313,5.869,338,3.804,429,4.529,619,5.839,640,9.541,670,4.545,718,5.339,1028,4.594,1064,9.541,1442,8.762,1445,8.172,1507,8.491,1515,8.709,1731,13.977,2025,12.958,2026,9.085,2027,11.284]],["keywords/760",[]],["title/761",[1,138.581,302,244.021,718,429.942,1797,519.812]],["content/761",[0,2.534,1,3.149,5,4.404,7,4.209,11,3.922,29,7.44,54,6.157,88,3.509,96,5.811,102,5.467,137,5.441,145,7.545,178,5.281,181,3.873,227,7.246,233,3.788,257,5.811,302,3.631,303,6.913,379,3.831,429,6.316,440,7.904,480,6.278,624,5.312,645,5.051,650,7.545,670,3.831,972,6.506,1347,8.732,1351,7.44,1361,7.44,1445,7.26,1494,6.698,1500,8.732,1507,7.157,1519,6.125,1541,8.042,1556,8.042,1771,6.332,1794,9.212,1797,10.356,1999,8.732,2026,7.657,2028,7.545,2029,10.922,2030,10.922]],["keywords/761",[]],["title/762",[1806,1146.432]],["content/762",[0,3.031,7,5.034,11,4.439,14,5.799,76,8.179,88,5.646,118,4.824,137,9.895,181,4.632,198,4.879,273,10.445,302,3.055,311,6.902,313,7.961,314,5.714,427,11.814,429,6.144,479,9.302,584,10.207,586,5.742,624,6.353,646,8.78,667,5.336,1022,7.932,1267,6.429,1442,6.548,1519,7.326,1655,11.806,1806,9.025,2031,9.302,2032,13.064,2033,13.064,2034,11.019,2035,13.064,2036,13.064,2037,13.064,2038,13.064,2039,13.064]],["keywords/762",[]],["title/763",[302,324.255,1442,695.013]],["content/763",[]],["keywords/763",[]],["title/764",[1443,1181.561]],["content/764",[0,2.956,1,1.44,11,1.249,12,2.35,19,3.297,22,4.144,29,5.689,30,4.31,32,2.142,48,3.782,50,4.054,53,0.778,78,4.352,82,8.064,118,4.704,168,2.795,178,5.242,180,2.228,198,4.049,209,6.044,230,2.478,233,2.644,254,2.594,282,3.323,291,3.9,302,4.684,316,5.07,353,3.641,355,2.51,379,1.734,392,3.578,481,3.368,557,8.876,567,3.28,573,3.24,575,5.541,615,3.744,616,3.52,624,2.404,636,7.272,640,3.641,670,1.734,680,2.649,705,3.797,718,5.249,757,2.612,759,3.52,938,3.24,939,2.612,997,3.466,1075,3.032,1182,4.306,1309,3.129,1312,5.228,1318,3.641,1333,4.468,1369,4.054,1425,3.164,1442,2.478,1444,3.953,1445,3.904,1461,6.716,1462,3.578,1463,3.416,1526,2.973,1547,3.953,1558,7.104,1559,5.174,1604,3.24,1616,3.641,1681,7.044,1688,4.17,1732,8.932,1747,6.044,1812,3.782,1832,3.953,1833,3.953,1843,8.351,1844,4.944,1845,4.944,1846,4.944,1847,4.944,1849,7.547,1851,4.944,1852,4.17,1854,4.944,1855,3.953,1857,3.782,1858,4.944,1859,4.944,1860,4.17,1861,4.944,4214,9.05]],["keywords/764",[]],["title/765",[302,324.255,681,589.596]],["content/765",[11,3.399,12,6.396,14,2.99,15,3.051,16,3.609,20,5.262,23,4.342,24,1.942,30,1.817,46,4.527,53,1.694,55,5.575,60,4.343,68,5.677,108,4.878,118,2.487,177,7.307,180,3.035,217,6.476,225,3.917,229,3.635,231,6.299,233,4.101,249,6.299,296,4.931,302,4.836,311,3.558,313,3.051,314,2.946,317,2.765,338,1.977,354,2.67,355,6.83,358,4.497,371,6.816,379,3.778,535,2.877,563,2.616,572,3.94,573,4.414,586,2.96,619,3.035,635,9.525,681,2.864,705,4.582,718,2.775,736,4.133,737,3.219,939,7.109,1025,6.191,1027,3.872,1203,4.13,1241,4.217,1465,3.839,1480,5.152,1481,4.217,1483,10.293,1503,5.152,1588,9.626,1605,4.796,1688,5.681,1761,4.527,1862,5.385,1863,12.161,1864,8.238,1865,6.087,1866,6.087,1867,6.087,1868,9.733,1869,10.77,1870,10.77,1871,13.457,1872,13.457,1873,13.457,1874,10.77,1875,9.733,1876,8.831,1877,9.733,1878,5.385,1879,6.735,1880,6.735,1881,6.087,1882,6.087,1883,6.735,1884,6.735,1885,4.217]],["keywords/765",[]],["title/766",[233,290.461,291,428.417,302,278.474]],["content/766",[14,8.51,233,4.676,311,10.129,313,8.684,314,8.386,1886,19.173]],["keywords/766",[]],["title/767",[291,428.417,302,278.474,1520,620.562]],["content/767",[14,7.141,177,7.646,180,7.249,233,3.924,291,5.787,296,5.895,302,3.762,311,8.499,313,9.113,314,8.801,461,7.44,615,7.212,619,7.249,705,5.996,1442,8.063,1461,9.966,1520,10.485,1771,9.327]],["keywords/767",[]],["title/768",[291,334.08,302,217.154,755,624.139,939,490.603,1445,434.133]],["content/768",[]],["keywords/768",[]],["title/769",[302,278.474,1267,586.043,1616,876.87]],["content/769",[]],["keywords/769",[]],["title/770",[237,675.665,1267,513.537,1616,768.382,1797,519.812]],["content/770",[14,7.519,78,8.827,112,8.827,302,4.858,573,13.613,622,9.424,681,7.202,705,6.191,1138,13.543,1242,12.956,1351,11.539,1442,8.49,1887,14.287,1888,16.939]],["keywords/770",[]],["title/771",[11,300.774,233,290.461,1465,678.798]],["content/771",[14,5.204,30,3.963,53,1.844,60,3.312,68,4.328,78,6.109,88,3.766,177,5.572,180,7.355,210,10.219,233,5.64,302,2.741,311,6.193,358,6.815,563,4.554,573,7.682,688,7.339,692,6.739,718,4.83,939,6.193,1027,6.739,1241,7.339,1267,5.769,1351,7.986,1442,5.876,1507,7.682,1731,9.373,1889,16.322,1890,11.723,1891,11.723,1892,9.888,1893,11.723,1894,11.723,1895,11.723,1896,11.723,1897,11.723,1898,11.723,1899,11.723,1900,11.723,1901,11.723]],["keywords/771",[]],["title/772",[22,266.863,225,253.921,302,163.237,315,219.269,705,208.022,1465,397.901,1750,630.849,1752,533.948]],["content/772",[0,3.475,10,3.5,11,2.623,22,4.99,23,2.595,30,4.233,53,2.053,60,4.231,68,2.377,82,4.074,88,4.193,178,3.112,181,2.282,217,3.871,225,5.448,233,4.508,258,5.71,296,4.784,302,3.842,342,5.146,371,6.573,379,2.258,647,5.331,705,4.463,755,4.326,758,4.828,830,4.12,939,5.486,1157,4.828,1361,4.385,1445,4.855,1465,5.92,1483,9.985,1487,5.817,1537,4.12,1539,5.429,1547,5.146,1620,4.12,1638,7.943,1732,4.513,1743,8.759,1747,4.659,1752,4.924,1761,4.326,1773,5.429,1864,4.924,1865,5.817,1866,9.385,1867,5.817,1868,9.385,1902,5.817,1903,4.513,1904,13.054,1905,13.054,1906,13.054,1907,10.385,1908,10.385,1909,13.054,1910,13.054,1911,6.573,1912,6.437,1913,6.437,1914,6.437,1915,6.437,1916,6.437,1917,6.437,1918,6.437,1919,6.437,1920,5.817]],["keywords/772",[]],["title/773",[88,298.309,302,217.154,1386,877.452,1519,520.754,1921,839.217]],["content/773",[0,4.902,1,1.358,24,2.948,25,4.915,29,6.964,30,1.725,32,6.416,82,6.471,88,6.133,177,8.277,233,2.494,257,5.439,295,6.543,302,4.464,338,3.001,361,5.644,461,4.728,557,5.518,592,7.279,631,6.964,668,10.01,670,3.586,681,4.347,705,3.047,718,6.102,722,4.327,1022,10.573,1185,5.478,1223,11.841,1230,5.828,1309,6.471,1519,8.305,1520,7.717,1522,6.699,1558,6.699,1605,7.279,1638,7.82,1647,7.399,1728,12.491,1731,8.174,1771,5.928,1789,8.623,1864,7.82,1911,6.471,1921,9.239,1922,10.224,1923,10.224,1924,10.224,1925,10.224,1926,10.224,1927,10.224,1928,10.224,1929,10.224,1930,8.623,1931,10.224,1932,10.224]],["keywords/773",[]],["title/774",[1,111.092,102,253.114,302,195.617,1154,529.45,1497,548.168,1840,469.106]],["content/774",[1,2.516,14,8.41,102,5.732,311,10.009,313,8.581,314,8.287,1276,12.267]],["keywords/774",[]],["title/775",[291,498.85,302,324.255]],["content/775",[204,12.472,229,9.142,291,6.094,302,5.255,545,14.287,546,6.716,722,7.169,1267,8.336,1522,11.1,1543,12.956,1710,10.387,1840,9.499,1860,14.287,1933,16.939,1934,16.939]],["keywords/775",[]],["title/776",[41,438.054,291,428.417,1801,780.355]],["content/776",[0,2.959,1,1.693,7,4.913,11,3.221,32,5.524,41,8.531,130,10.195,137,8.614,181,6.131,291,7.059,302,4.588,315,4.005,470,4.913,584,9.962,586,5.605,615,5.717,624,6.201,750,8.356,1024,12.048,1025,7.33,1075,7.819,1136,12.515,1420,10.755,1556,12.733,1605,9.079,1799,11.523,1801,13.786,1830,10.755,1935,10.3,1936,12.751]],["keywords/776",[]],["title/777",[302,324.255,1937,908.646]],["content/777",[0,2.305,1,2.121,2,8.008,4,3.017,7,2.348,10,3.313,11,4.92,22,2.33,23,4.005,24,4.182,25,2.929,27,8.24,40,3.093,41,5.335,60,1.721,68,2.25,96,6.69,102,4.388,108,4.499,114,3.175,118,5.355,173,4.872,177,6.893,180,2.746,210,3.815,219,7.189,230,3.054,231,3.564,233,1.486,239,3.857,260,7.269,282,6.676,291,5.746,302,3.391,304,5.442,315,3.12,335,2.556,340,7.18,354,2.416,355,3.093,429,2.13,527,4.283,534,3.417,586,6.375,615,4.454,641,4.21,645,6.707,647,2.489,718,4.093,755,4.096,757,3.219,846,5.863,939,3.219,1075,3.737,1076,4.043,1255,4.661,1267,2.999,1290,4.41,1361,4.151,1414,4.21,1440,5.14,1442,4.979,1481,3.815,1484,3.564,1526,3.664,1571,5.14,1604,3.993,1646,5.14,1780,5.507,1840,8.957,1902,5.507,1937,13.944,1938,6.094,1939,5.507,1940,6.094,1941,18.531,1942,6.094,1943,4.339,1944,4.487,1945,6.094,1946,6.094,1947,9.933,1948,6.094,1949,5.758,1950,3.993,1951,6.094,1952,4.339,4108,4.57,4176,8.977,4215,6.604]],["keywords/777",[]],["title/778",[302,324.255,1710,850.325]],["content/778",[0,3.16,27,8.925,41,5.01,118,5.029,177,6.474,181,6.409,229,7.351,230,6.827,254,7.146,260,6.827,290,7.097,291,4.9,302,4.226,423,10.302,717,8.038,1203,8.352,1264,9.857,1421,10.889,1710,8.352,1727,10.641,1732,9.549,1771,10.479,1815,11.488,1937,8.925,1941,12.309,1953,13.62,1954,13.62,1955,9.698,1956,16.334,1957,9.698,1958,13.62,1959,13.62,1960,13.62,1961,11.488,1962,13.62]],["keywords/778",[]],["title/779",[302,217.154,1154,587.743,1543,710.31,1559,575.316,1616,683.784]],["content/779",[7,2.051,11,2.888,23,2.146,30,4.414,41,3.268,53,0.837,69,5.026,76,3.332,99,3.086,120,3.034,177,2.53,198,1.988,224,2.488,233,1.298,291,3.196,302,4.171,304,2.916,305,2.737,313,2.411,314,2.328,315,2.791,425,3.79,429,1.861,647,2.174,667,2.174,718,3.661,719,4.426,722,2.253,736,2.043,1025,3.06,1114,3.852,1199,9.832,1267,6.571,1481,3.332,1522,3.488,1689,4.49,1710,7.013,1729,4.159,1801,3.488,1937,5.822,1963,9.143,1964,8.885,1965,5.323,1966,5.323]],["keywords/779",[]],["title/780",[102,280.981,1022,563.829,1488,783.272,1840,520.754,1967,839.217]],["content/780",[0,4.124,15,6.015,69,7.812,102,4.018,118,4.904,181,6.302,198,4.96,223,6.968,260,6.657,282,8.926,291,4.778,295,8.5,340,6.575,461,6.142,668,10.216,718,5.472,722,5.621,1022,8.063,1028,4.709,1157,9.96,1267,6.536,1442,6.657,1488,11.202,1522,8.703,1562,10.376,1578,11.565,1596,10.158,1698,12.002,1710,10.899,1802,10.618,1857,10.158,1878,10.618,1967,12.002,1970,13.281,1971,13.281,1972,13.281,2022,12.549,4216,14.392]],["keywords/780",[]],["title/781",[302,244.021,586,458.674,647,426.205,1469,653.334]],["content/781",[115,10.498,198,6.394,200,12.003,223,8.982,225,6.227,302,4.89,429,5.984,646,11.506,647,6.992,665,10.835,1469,10.719,1492,10.719,1493,13.688,1973,17.12,1974,17.12]],["keywords/781",[]],["title/782",[0,194.094,302,298.315,647,341.663,681,355.692,1469,523.739]],["content/782",[0,2.801,11,3.734,22,7.605,23,3.139,30,3.896,53,1.898,60,4.176,68,6.15,82,4.927,108,3.526,138,3.455,198,2.907,225,6.557,230,3.902,251,6.333,266,9.233,268,5.954,269,4.401,280,9.936,290,6.29,296,2.853,302,2.823,309,5.378,317,1.999,342,6.224,345,5.165,350,4.331,355,3.951,392,8.736,527,7.182,534,4.365,548,5.04,575,5.165,623,8.99,645,3.6,647,7.362,830,4.982,867,4.029,870,4.927,1274,6.779,1276,5.04,1469,4.874,1603,6.566,1745,9.651,1747,5.634,1757,7.035,1762,9.233,1763,7.035,1764,7.035,1765,7.035,1766,7.035,1767,7.035,1768,7.035,1769,7.035,1770,7.035,1771,4.513,1772,7.035,1773,6.566,1774,7.035,1775,7.035,1776,7.035,1777,7.035,1778,7.035,1789,6.566,1830,6.566,1975,4.874,1976,7.785,1977,7.785,1978,12.071,1979,7.785,1980,7.785,1981,7.785,1982,7.785,1983,6.566,1984,6.224]],["keywords/782",[]],["title/783",[102,253.114,302,195.617,647,341.663,1469,523.739,1526,503.013,1849,755.984]],["content/783",[1,1.606,7,1.244,10,1.755,11,0.815,14,1.433,22,2.984,23,1.301,30,4.398,41,1.187,53,1.492,60,0.912,72,1.385,81,2.377,102,3.66,108,2.61,112,1.682,181,1.144,198,1.205,224,1.509,225,2.84,237,2.09,272,3.465,291,1.161,302,4.018,304,1.768,315,1.014,354,1.28,355,2.925,429,1.128,475,2.09,531,1.888,592,2.298,615,1.447,624,1.57,628,1.215,641,3.981,647,8.134,648,2.421,667,1.318,680,1.729,681,1.372,705,0.962,718,1.33,736,1.239,755,2.169,759,2.298,834,2.021,841,2.522,939,1.705,992,2.336,1076,2.141,1114,4.171,1199,10.905,1241,2.021,1267,3.842,1272,4.725,1347,2.58,1469,4.887,1483,2.469,1497,3.776,1525,1.905,1526,9.696,1543,2.469,1577,2.58,1604,3.776,1616,2.377,1630,2.58,1648,2.917,1684,2.23,1710,1.979,1712,2.722,1745,2.58,1747,2.336,1762,2.469,1801,2.115,1831,2.917,1855,2.58,1903,2.263,1937,2.115,1944,2.377,1963,2.58,1985,3.228,1986,3.228,1987,3.228,1988,3.228,1989,3.228,1990,3.228,1991,9.489,1992,3.228,1993,3.228,1994,3.228,1995,3.228,1996,3.228,1997,2.811,1998,3.228,1999,2.58]],["keywords/783",[]],["title/784",[1442,695.013,1520,722.583]],["content/784",[]],["keywords/784",[]],["title/785",[1154,660.459,1481,653.334,1520,543.785,1588,653.334]],["content/785",[1,1.127,11,2.143,19,1.989,22,1.926,23,2.031,24,2.446,30,4.307,53,0.792,74,2.781,82,3.188,88,5.33,102,5.02,177,2.394,180,4.952,181,4.572,182,5.151,223,2.643,233,3.145,248,3.432,254,2.643,258,2.204,260,2.525,296,1.846,302,4.074,313,2.282,338,2.49,350,2.803,353,3.709,429,1.761,461,3.924,480,4.877,485,3.224,500,3.301,557,2.719,615,6.452,628,1.896,632,3.853,647,2.058,670,6.574,681,2.142,705,2.528,718,5.313,722,7.375,794,3.853,851,2.368,951,3.778,1130,4.028,1154,6.956,1203,8.825,1241,3.154,1290,3.646,1309,5.37,1461,5.256,1481,3.154,1510,3.059,1519,2.825,1520,4.421,1522,5.559,1523,3.709,1525,2.973,1558,7.202,1588,6.881,1598,4.028,1621,4.387,1771,7.476,1802,4.028,1885,3.154,2040,5.038,2041,7.667,2042,5.038,2043,4.249,2044,5.038,2045,5.038,2046,3.646,2047,5.038,2048,4.76,2049,5.038,2050,5.038,2051,5.038,2052,5.038,2053,5.038,2054,5.038]],["keywords/785",[]],["title/786",[997,651.057,1154,587.743,1442,465.451,1481,581.403,1588,581.403]],["content/786",[1,1.232,5,3.74,14,4.117,24,3.976,32,7.13,55,4.801,78,4.833,89,5.936,96,4.934,99,7.994,180,4.179,181,4.889,198,6.146,223,7.234,233,3.363,258,7.97,296,3.399,314,4.057,338,2.723,461,4.29,475,6.005,529,6.829,661,6.154,670,4.837,692,5.331,705,4.109,722,3.926,992,6.712,1203,5.688,1275,13.028,1280,13.028,1300,8.764,1414,6.407,1481,5.807,1484,10.658,1507,6.078,1520,10.635,1523,6.829,1525,5.474,1558,6.078,1690,6.234,1714,12.974,1771,7.994,1930,7.823,1984,7.415,2041,8.382,2055,9.275,2056,9.275,2057,12.46,2058,13.788,2059,13.028,2060,9.275,2061,18.222,2062,9.275,2063,9.275,2064,9.275,2065,9.275,2066,8.382,2067,9.275,2068,9.275,2069,9.275]],["keywords/786",[]],["title/787",[314,606.537,992,1003.544]],["content/787",[0,1.888,1,1.081,5,1.934,7,1.848,10,4.425,11,4.093,15,4.802,19,1.894,22,4.053,23,3.281,24,4.034,25,6.005,30,1.789,32,6.06,53,1.28,55,8.826,56,3.143,60,4.579,68,1.771,71,1.778,76,3.003,79,2.15,81,3.531,84,4.719,88,1.541,89,3.07,102,4.232,162,2.021,177,2.279,178,5.126,180,2.161,181,2.886,198,3.039,217,4.894,229,2.589,233,2.586,249,2.805,251,2.516,254,2.516,258,2.098,295,5.209,302,3.271,303,7.906,304,2.627,307,3.415,315,1.506,317,2.089,318,3.834,338,4.757,340,6.185,350,5.898,358,2.002,379,1.682,394,8.186,429,4.89,439,3.668,557,2.589,597,3.415,611,5.544,615,2.15,619,2.161,635,2.971,646,3.223,661,5.4,668,2.757,670,1.682,686,2.305,705,6.76,718,1.976,719,2.389,736,4.794,757,4.3,846,2.831,867,2.482,970,4.334,1027,2.757,1072,3.668,1104,4.425,1179,3.471,1191,3.933,1194,2.757,1203,2.941,1209,5.095,1303,3.597,1396,4.176,1438,2.516,1461,2.971,1483,6.225,1491,3.668,1492,3.003,1520,5.524,1537,8.953,1540,3.834,1550,4.334,1588,3.003,1605,3.415,1666,3.668,1690,3.223,1728,4.045,1729,3.747,1748,4.334,1857,3.668,1863,4.334,1864,3.668,1881,4.334,1882,4.334,1930,4.045,2003,2.805,2024,9.581,2070,7.355,2071,3.834,2072,4.796,2073,4.796,2074,4.796,2075,4.796,2076,4.796,2077,4.796,2078,4.532,2079,4.796,2080,12.492,2081,8.139,2082,4.532,2083,4.796,2084,4.796,2085,4.796,2086,8.139,2087,8.139,2088,4.796]],["keywords/787",[]],["title/788",[260,523.037,1154,660.459,1520,543.785,2089,943.046]],["content/788",[0,2.845,1,2.236,22,4.688,25,5.895,40,6.224,102,3.71,118,4.528,165,7.848,178,5.929,180,5.526,260,11.233,300,7.677,340,6.071,429,4.286,461,9.573,470,6.488,471,11.988,480,7.049,485,7.848,615,5.498,619,5.526,718,6.937,1154,12.17,1309,7.761,1481,10.541,1526,7.373,1559,7.597,1567,9.804,1588,7.677,1771,7.109,1812,9.379,1832,9.804,2017,11.081,2089,11.081,2090,12.262,2091,12.262,2092,12.262,2093,8.731]],["keywords/788",[]],["title/789",[1354,1060.637,1690,931.966]],["content/789",[0,2.912,1,1.667,5,5.061,11,4.916,30,2.118,88,7.026,114,6.54,173,10.035,181,4.45,227,8.327,240,8.435,258,5.49,277,9.806,302,2.935,429,4.387,439,9.6,476,9.806,527,5.412,550,8.224,557,6.774,586,5.517,652,11.342,665,7.944,686,6.033,997,8.799,1022,7.62,1157,9.413,1270,9.806,1303,9.413,1354,14.887,1520,6.54,1677,10.035,1690,13.081,1723,11.342,1743,10.586,2094,12.551,2095,9.6,2096,12.551,2097,12.551,2098,12.551]],["keywords/789",[]],["title/790",[30,176.087,963,646.495,1056,1087.789]],["content/790",[1,2.992,570,11.51,1067,12.42]],["keywords/790",[]],["title/791",[1,158.147,102,360.324,1442,596.885]],["content/791",[]],["keywords/791",[]],["title/792",[1276,897.826,1443,987.311]],["content/792",[0,2.196,1,2.444,11,2.39,23,2.316,24,1.656,25,4.549,30,4.32,33,4.657,41,6.126,53,0.903,71,2.129,78,2.993,80,2.715,88,3.04,89,3.676,102,3.652,162,2.42,165,3.676,198,2.145,291,2.066,299,6.201,302,1.343,322,4.592,335,5.062,338,3.543,350,5.265,429,4.892,527,2.476,528,3.676,550,7.908,575,3.811,615,4.243,619,2.588,718,5.766,722,2.431,767,8.552,851,4.448,939,3.034,1025,6.937,1056,4.157,1072,4.393,1075,3.522,1130,4.592,1183,3.301,1194,3.301,1276,3.719,1309,3.635,1461,3.558,1497,3.764,1520,4.931,1525,5.585,1527,4.393,1540,4.592,1580,4.487,1681,4.844,1718,6.738,1752,4.393,1761,3.86,1801,10.142,1807,7.982,1812,4.393,1832,4.592,1833,4.592,1999,4.592,2121,5.743,2122,5.743,2123,5.743,2124,5.743,2125,5.743,2126,9.463,2127,5.743,2128,5.743,2129,5.743,2130,5.743,2132,5.743,2133,5.743,2134,5.743,2136,5.743,2137,5.743,2138,5.743]],["keywords/792",[]],["title/793",[1,158.147,102,360.324,681,506.352]],["content/793",[1,2.167,11,2.959,14,3.326,22,2.864,23,5.817,30,4.263,53,1.178,76,4.691,88,2.407,102,4.937,112,3.905,137,5.836,172,5.62,198,2.798,239,4.742,254,3.931,273,5.991,291,4.215,311,3.958,313,3.394,314,5.125,315,2.354,333,5.517,335,3.143,423,4.271,429,2.619,470,2.887,517,5.176,540,5.104,546,2.971,623,4.044,624,3.644,670,4.11,680,10.511,681,7.528,718,3.087,736,4.497,856,4.642,867,3.878,939,3.958,1067,4.796,1153,4.742,1199,5.517,1228,4.691,1230,6.679,1312,4.691,1317,6.771,1425,4.796,1479,6.771,1480,8.962,1492,4.691,1497,4.91,1526,4.505,1559,7.259,1620,4.796,1712,6.32,1716,6.771,1794,6.32,1797,5.836,1807,6.32,1834,8.214,2070,6.771,2139,7.493,2140,6.771,2141,6.771,2142,9.883]],["keywords/793",[]],["title/794",[1087,1181.561]],["content/794",[0,1.032,1,1.014,2,3.569,23,4.793,27,2.915,30,4.43,41,4.373,53,0.7,96,2.367,102,3.033,155,1.866,168,2.515,171,3.753,177,2.115,196,4.021,272,4.59,291,1.601,335,1.866,340,3.779,423,2.536,558,2.536,592,3.168,645,2.058,680,5.372,681,1.892,1087,3.168,1197,3.648,1267,3.757,1318,3.276,1425,2.847,1630,3.557,1710,2.728,1797,2.216,1834,5.352,1840,4.281,1937,2.915,2141,4.021,2143,7.633,2144,7.633,2145,4.449,2146,4.449,2147,4.449,2148,4.449,4217,4.821,4218,4.821]],["keywords/794",[]],["title/795",[1,158.147,102,360.324,1559,737.773]],["content/795",[1,1.07,30,4.424,41,2.965,53,1.267,88,2.589,102,3.751,233,1.966,302,1.885,443,4.993,670,4.349,856,4.993,1519,4.519,1525,4.757,1801,5.281,1819,6.798,1963,16.625,2003,4.714]],["keywords/795",[]],["title/796",[291,498.85,302,324.255]],["content/796",[667,8.33]],["keywords/796",[]],["title/797",[88,382.545,291,428.417,1519,667.804]],["content/797",[667,8.33]],["keywords/797",[]],["title/798",[233,338.213,291,498.85]],["content/798",[667,8.33]],["keywords/798",[]],["title/799",[670,486.423,1525,818.389]],["content/799",[667,8.33]],["keywords/799",[]],["title/800",[102,360.324,291,428.417,670,417.745]],["content/800",[667,8.33]],["keywords/800",[]],["title/801",[41,438.054,291,428.417,1801,780.355]],["content/801",[667,8.33]],["keywords/801",[]],["title/802",[291,498.85,856,859.064]],["content/802",[667,8.33]],["keywords/802",[]],["title/803",[291,428.417,443,737.773,1819,1004.451]],["content/803",[667,8.33]],["keywords/803",[]],["title/804",[291,498.85,2003,811.06]],["content/804",[667,8.33]],["keywords/804",[]],["title/805",[1,123.323,1056,672.075,1527,710.31,1999,742.458,2149,928.642]],["content/805",[1,2.226,102,5.071,198,6.26,291,7.426,667,6.846,718,6.906,963,10.384,1018,13.095,1056,12.13,1067,10.728,1520,10.756,1523,12.342,1526,10.079,1527,12.82,1559,10.384,2150,15.147]],["keywords/805",[]],["title/806",[254,624.804,736,457.061,4219,1290.533]],["content/806",[]],["keywords/806",[]],["title/807",[2099,1659.47]],["content/807",[1,2.373,22,6.832,95,6.671,102,4.052,177,10.201,254,7.026,291,4.818,302,5.019,305,9.19,354,5.31,355,6.797,533,10.022,586,5.886,588,9.508,615,6.004,641,9.252,645,6.194,646,9.001,718,5.518,736,5.14,1075,8.212,1312,8.384,1468,8.571,1496,11.296,1534,9.861,1559,8.297,1567,10.707,1657,10.243,1699,11.296,2100,8.885]],["keywords/807",[]],["title/808",[1087,1181.561]],["content/808",[1,1.568,5,4.761,53,1.857,60,5.754,67,5.645,95,5.883,118,6.057,162,6.912,296,4.328,338,3.467,340,5.847,354,8.076,379,4.143,557,6.374,563,4.587,575,7.835,588,5.582,615,5.295,718,4.866,723,7.754,725,6.328,726,6.154,727,6.847,728,7.242,729,7.394,730,5.919,731,7.242,732,6.622,733,6.97,734,6.239,735,6.239,736,7.818,737,5.645,738,8.92,997,8.279,1025,6.788,1087,8.408,1445,5.521,1937,7.738,2101,11.809,2102,10.672,2103,11.809,2104,10.672,2105,14.825]],["keywords/808",[]],["title/809",[736,532.202,1445,648.249]],["content/809",[5,6.581,9,6.682,11,2.961,60,3.312,78,6.109,95,5.839,230,5.876,251,6.151,296,4.296,305,8.393,338,4.791,354,4.648,358,4.895,423,6.682,533,9.153,557,10.135,586,5.153,588,8.875,615,7.318,639,12.458,725,8.746,730,5.876,736,4.499,1067,7.503,1080,12.752,1184,9.373,1438,8.563,1445,5.48,1465,10.703,1502,9.888,1588,7.339,1666,8.967,1852,9.888,1975,7.339,2102,10.594,2106,10.58,2107,11.723,2108,10.594,2109,10.594,2110,11.723]],["keywords/809",[]],["title/810",[736,532.202,1937,908.646]],["content/810",[0,2.587,1,2.093,2,7.367,4,5.521,5,4.496,6,4.877,9,6.356,11,2.816,32,4.831,40,5.66,67,7.532,78,5.811,102,3.374,118,4.117,221,5.624,232,4.999,253,11.405,256,8.915,291,4.011,296,5.775,304,8.633,316,6.77,318,8.915,340,9.048,423,6.356,429,3.898,586,6.926,615,7.065,681,4.741,953,10.536,1067,7.137,1080,14.279,1438,8.268,1465,8.982,1619,8.07,1937,11.976,2106,10.919,2111,11.151,2112,11.151,2113,11.151,2114,11.151,2115,9.405,2116,11.151,2117,11.151,2247,9.71,4176,10.077]],["keywords/810",[]],["title/811",[557,748.426,736,532.202]],["content/811",[0,2.483,9,6.101,11,2.703,15,4.847,24,3.086,53,1.683,60,5.509,78,5.577,79,4.798,118,7.2,162,6.449,220,7.746,233,2.61,234,6.152,251,5.615,290,5.577,296,3.922,302,4.56,338,4.493,354,6.068,423,6.101,557,11.582,563,4.157,615,4.798,725,5.735,730,5.364,737,5.116,738,8.322,954,9.32,1015,9.027,1067,6.85,1080,15.235,1209,6.701,1267,5.267,1438,8.03,1445,5.003,1465,8.724,1852,9.027,1975,6.701,2104,9.672,2105,13.832,2106,10.161,2109,9.672,2118,10.703,2119,10.703]],["keywords/811",[]],["title/812",[1442,831.754]],["content/812",[1,2.577,80,9.172,313,8.789,423,11.061,2120,19.406]],["keywords/812",[]],["title/813",[1442,695.013,1806,957.957]],["content/813",[]],["keywords/813",[]],["title/814",[550,780.355,1526,716.073,1556,876.87]],["content/814",[24,4.547,237,10.21,290,8.217,313,7.142,314,6.898,317,4.048,340,7.807,350,8.773,429,5.512,550,10.333,619,7.106,667,6.441,718,6.497,1185,8.45,1525,9.307,1556,16.021,1822,14.251,1823,14.251,2151,14.251,2152,15.769,2153,15.769,2154,12.931]],["keywords/814",[]],["title/815",[1,184.147,178,670.43]],["content/815",[]],["keywords/815",[]],["title/816",[2155,1269.313]],["content/816",[0,2.72,1,2.494,13,8.347,33,5.769,96,6.237,118,4.328,198,4.378,233,2.859,260,8.181,281,9.888,335,4.917,527,5.055,528,7.503,571,5.913,586,7.174,621,9.373,639,7.778,645,5.422,649,7.59,670,4.112,1028,4.157,1071,7.682,1351,7.986,1476,10.594,1484,12.927,1515,7.879,1613,9.888,1657,8.967,1661,14.75,1721,10.594,1801,12.304,1862,9.373,1939,10.594,1952,8.347,2156,10.594,2157,10.209,2158,11.723,2159,11.723,2160,10.594,2161,11.723,2162,8.347,2163,11.723,2164,11.723,2165,11.723,2166,8.632,2167,11.723,4220,12.704]],["keywords/816",[]],["title/817",[527,715.545]],["content/817",[]],["keywords/817",[]],["title/818",[335,499.465,1484,696.547,2156,1076.194]],["content/818",[0,2.922,1,2.455,11,4.331,15,3.725,23,6.914,25,6.054,31,7.723,33,4.048,69,3.615,86,5.856,96,6.7,102,5.593,118,3.037,119,5.457,155,3.45,198,3.072,229,4.439,230,6.312,233,2.006,236,4.439,243,6.938,258,3.598,260,6.312,288,5.39,306,6.745,317,3.233,334,5.39,335,5.282,361,4.541,429,2.875,471,5.856,526,8.252,534,10.365,535,6.537,550,5.39,557,4.439,558,7.178,561,7.433,563,4.892,574,11.102,615,5.646,619,3.706,645,7.077,851,3.866,1203,5.044,1228,5.15,1264,5.953,1267,4.048,1270,6.426,1278,7.772,1351,5.603,1388,9.273,1445,3.845,1484,4.811,1489,5.206,1554,10.027,1637,6.426,1653,7.433,1703,8.154,1724,6.938,1729,6.426,1862,6.576,1911,5.206,1952,8.967,2095,9.633,2168,7.433,2169,8.225,2170,9.839,2171,8.225,2172,6.938,2173,7.163,2174,8.225,2175,8.225]],["keywords/818",[]],["title/819",[335,581.578,2176,1169.584]],["content/819",[0,3.623,1,2.876,25,7.506,41,7.967,181,5.537,227,13.103,230,7.827,291,5.618,335,9.846,429,5.458,531,9.133,1292,12.2,1647,11.301,1703,10.111,2021,14.112,2166,11.498]],["keywords/819",[]],["title/820",[1312,1038.958]],["content/820",[]],["keywords/820",[]],["title/821",[178,802.334]],["content/821",[0,3.695,1,2.655,2,7.445,11,4.022,24,4.592,30,3.985,102,4.819,178,7.7,340,7.885,574,10.312,641,13.814,939,8.414,1264,11.526,1451,13.433,1840,8.931,2177,14.393,2178,15.926]],["keywords/821",[]],["title/822",[24,399.849,178,670.43]],["content/822",[0,4.147,1,2.671,11,3.382,24,5.154,25,6.438,27,8.775,31,8.212,41,7.895,102,5.408,118,4.945,181,4.748,227,8.885,233,3.266,260,8.958,291,4.818,335,5.617,429,6.247,534,7.51,558,7.633,574,8.671,586,5.886,645,6.194,648,10.044,1030,9.861,1153,8.476,1414,9.252,1689,11.296,1911,8.476,1952,9.535,1984,10.707,2013,12.102,2160,12.102]],["keywords/822",[]],["title/823",[40,703.837,178,670.43]],["content/823",[1,2.674,96,10.714]],["keywords/823",[]],["title/824",[2,648.249,178,670.43]],["content/824",[667,8.33]],["keywords/824",[]],["title/825",[178,670.43,2177,1253.121]],["content/825",[667,8.33]],["keywords/825",[]],["title/826",[178,670.43,2179,1386.652]],["content/826",[667,8.33]],["keywords/826",[]],["title/827",[178,670.43,1451,1169.584]],["content/827",[667,8.33]],["keywords/827",[]],["title/828",[41,341.595,102,280.981,1312,581.403,1599,725.536,2162,661.203]],["content/828",[]],["keywords/828",[]],["title/829",[78,620.562,120,678.798,1087,847.913]],["content/829",[]],["keywords/829",[]],["title/830",[2155,1269.313]],["content/830",[1,2.8,23,7.675,25,4.883,69,4.465,88,3.263,96,5.405,102,6.379,155,7.277,168,5.743,198,5.505,236,5.483,260,5.092,290,5.294,305,5.224,334,6.657,335,8.477,392,7.352,429,3.551,471,7.233,533,5.697,534,9.73,535,6.297,558,5.79,570,5.19,579,8.568,588,4.802,645,8.024,669,7.018,670,6.086,719,5.06,997,7.122,1599,14.872,1612,13.322,1637,11.517,1710,6.23,1815,8.568,1887,8.568,1952,10.496,2095,11.276,2162,12.354,2180,10.159,2181,10.159,2182,10.159,2183,10.159]],["keywords/830",[]],["title/831",[527,715.545]],["content/831",[]],["keywords/831",[]],["title/832",[41,438.054,2003,696.547,2166,876.87]],["content/832",[1,2.167,11,2.961,41,6.004,96,6.237,102,4.938,112,6.109,129,9.373,155,4.917,172,8.792,198,8.254,236,8.809,251,6.151,290,6.109,315,3.682,350,9.08,534,9.153,558,6.682,615,5.256,651,9.888,653,9.888,1075,10.009,1179,8.484,1292,9.159,1414,8.099,1445,5.48,1520,6.109,1670,10.594,1708,9.888,1752,8.967,1950,10.695,2003,11.876,2028,8.099,2115,9.888,2166,12.018,2184,10.594,2185,11.723,2186,10.209,2187,11.723,2188,11.723,2189,11.723,2190,11.723,2191,11.723]],["keywords/832",[]],["title/833",[335,581.578,2176,1169.584]],["content/833",[139,8.736,141,9.025,145,9.741,181,5,236,12.275,274,9.24,317,3.62,335,9.186,350,10.288,379,4.946,475,11.973,480,12.59,487,7.112,558,8.037,645,6.521,669,9.741,1072,10.785,1515,12.429,2003,10.816,2031,10.04,2166,10.383,2176,11.893]],["keywords/833",[]],["title/834",[41,510.07,1955,987.311]],["content/834",[1,1.735,41,8.157,89,8.361,96,6.95,102,5.318,155,5.479,230,8.81,236,11.469,259,11.376,291,4.7,317,3.354,335,7.372,379,4.583,450,9.992,549,9.619,586,5.742,592,9.302,629,10.207,669,9.025,972,7.781,1076,8.667,1290,9.454,1389,13.733,1955,15.129,2031,9.302,2192,13.064,2193,13.064,2194,13.064,2195,13.064,2196,11.806,2197,13.064]],["keywords/834",[]],["title/835",[1724,1399.695]],["content/835",[31,10.498,41,6.298,282,11.506,335,7.18,534,9.6,558,9.758,625,13.688,718,7.054,1442,8.581,1445,8.004,1718,12.19,1950,11.218,2031,12.19,2198,17.12,2199,15.471,2200,15.471]],["keywords/835",[]],["title/836",[1662,1499.668]],["content/836",[1,1.906,41,5.28,69,6.309,102,6.298,155,6.02,181,5.089,260,9.377,313,8.474,335,6.02,450,10.979,527,6.189,534,10.491,642,12.107,645,6.638,1097,13.562,1950,12.259,2028,9.916,2031,10.22,2162,10.22,2173,12.5,2201,18.709,2202,14.354,2203,12.972,2204,12.972,2205,12.972,2206,14.354,2207,14.354]],["keywords/836",[]],["title/837",[260,695.013,1312,868.152]],["content/837",[]],["keywords/837",[]],["title/838",[1312,868.152,2208,1386.652]],["content/838",[1,2.851,41,7.896,102,5.902,120,8.73,155,8.182,168,8.659,181,5.431,260,7.677,335,6.424,535,6.543,645,7.084,1076,10.162,1312,9.589,1577,12.245,1699,12.919,1703,12.631,1840,10.939,2031,10.905,2209,15.316]],["keywords/838",[]],["title/839",[2210,1659.47]],["content/839",[1,2.158,41,5.978,102,6.127,138,7.213,145,11.226,224,7.597,236,10.929,256,12.992,257,8.645,534,9.113,558,9.263,567,10.782,1840,9.113,1950,10.648,2211,13.706,2212,13.706,2213,16.25,2214,16.25,2215,16.25]],["keywords/839",[]],["title/840",[2216,1499.668]],["content/840",[0,2.867,1,2.248,11,3.121,41,7.638,79,5.54,96,6.574,102,5.121,168,6.986,230,8.484,257,6.574,291,6.945,315,3.881,335,8.709,341,7.821,425,8.798,500,8.097,534,9.492,558,7.044,567,8.199,624,6.009,1292,9.654,1445,5.777,1840,9.492,1903,8.663,1950,11.091,2003,9.9,2211,10.423,2212,10.423,2216,11.167,2217,11.167,2218,12.357,2219,9.88,2220,11.167,2221,10.423,2222,12.357,2223,12.357,2224,12.357]],["keywords/840",[]],["title/841",[2225,1499.668]],["content/841",[0,2.434,1,2.985,11,2.65,41,6.5,43,5.044,102,5.846,139,6.5,145,7.248,168,5.931,230,5.259,236,11.049,257,5.582,272,11.619,274,6.875,291,6.357,341,9.55,425,7.47,466,6.5,480,8.674,500,6.875,534,5.884,549,7.726,567,6.961,669,13.349,972,6.25,1293,9.137,1361,7.147,1445,4.905,1840,8.462,1903,7.356,1950,9.888,2003,10.335,2166,7.726,2211,8.85,2212,8.85,2217,9.482,2219,12.064,2220,9.482,2221,14.904,2225,9.482,2226,8.85,2227,10.492]],["keywords/841",[]],["title/842",[2228,1659.47]],["content/842",[1,3.116,43,5.986,60,4.807,102,6.304,139,12.009,145,13.391,155,7.137,223,8.928,251,6.534,290,6.489,350,6.928,480,7.158,669,14.392,2003,9.953,2115,10.504,2229,12.453,2230,12.453,2231,12.453,2232,12.453,2233,12.453,2234,12.453,2235,12.453,2236,12.453,2237,12.453,2238,17.016,2239,12.453,2240,12.453,2241,15.378]],["keywords/842",[]],["title/843",[363,800.382,2242,1076.194,2243,1076.194]],["content/843",[32,6.7,41,5.688,77,7.229,233,3.772,335,6.486,355,7.849,363,13.191,396,9.898,508,13.044,665,9.787,717,9.127,777,9.581,1003,8.966,1076,10.26,1267,7.61,1384,10.133,1887,16.555,2003,11.48,2244,15.464,2245,15.464,2246,15.464,2247,13.467,2248,15.464]],["keywords/843",[]],["title/844",[41,510.07,1710,850.325]],["content/844",[0,3.409,1,2.995,41,7.743,77,5.601,102,6.51,118,5.425,181,2.734,198,4.474,223,6.286,230,6.005,236,11.361,335,6.949,466,4.776,476,6.023,480,4.432,485,7.668,501,4.827,545,6.503,563,2.995,565,6.164,633,6.503,669,12.396,719,3.84,917,5.897,954,6.714,963,4.776,997,5.405,1030,5.677,1074,6.164,1150,15.656,1157,5.782,1235,6.322,1270,6.023,1336,6.967,1384,5.052,1389,11.48,1503,5.897,1599,6.023,1677,6.164,1697,6.967,1710,11.004,1840,8.239,1857,5.897,1875,6.967,1944,5.677,2003,4.509,2150,6.967,2203,10.827,2204,10.827,2221,6.503,2226,6.503,2241,16.216,2249,11.98,2250,6.503,2251,7.71,2252,11.98,2253,7.71,2254,7.71]],["keywords/844",[]],["title/845",[534,585.182,1445,487.845,1950,683.808,2219,834.316]],["content/845",[1,2.752,11,4.698,33,7.001,41,6.842,102,6.27,355,10.519,534,10.43,553,9.828,575,9.439,649,9.211,1028,5.044,1030,10.475,1075,8.724,1400,13.442,1420,11.999,1534,10.475,1596,10.881,1911,9.004,1950,12.188,2199,12.856,2219,14.871,2255,14.226,2256,14.226,2257,12.856]],["keywords/845",[]],["title/846",[112,620.562,155,499.465,1222,952.113]],["content/846",[41,7.355,88,5.116,102,6.613,112,8.299,122,12.443,133,6.9,176,11.727,181,5.647,315,5.003,429,6.989,628,5.994,719,7.933,1148,11.526,1222,12.733,1344,13.433,1446,13.06,1727,12.443,1911,10.08,2258,14.393]],["keywords/846",[]],["title/847",[112,543.785,138,463.203,719,519.812,1955,743.008]],["content/847",[30,3.123,88,5.945,138,8.215,1703,11.983,1955,13.177,2259,18.507,2260,18.507,2261,18.507,2262,18.507]],["keywords/847",[]],["title/848",[112,543.785,719,519.812,1955,743.008,2196,943.046]],["content/848",[1,2.43,41,6.73,102,5.536,112,9.534,237,11.846,335,7.673,777,11.334,1955,13.027,2258,16.534,2263,18.295]],["keywords/848",[]],["title/849",[1,184.147,1028,491.666]],["content/849",[]],["keywords/849",[]],["title/850",[34,1130.435]],["content/850",[24,5.399,30,3.723,569,9.565,2264,13.551,2265,16.921,2266,15.793,2267,16.305]],["keywords/850",[]],["title/851",[43,666.579,560,1083.373]],["content/851",[]],["keywords/851",[]],["title/852",[1,123.323,24,267.779,248,632.593,338,272.597,1028,329.269]],["content/852",[1,2.564,15,7.666,16,6.621,24,5.567,53,3.036,68,4.563,99,7.164,102,3.739,112,6.439,137,6.155,181,6.002,338,6.594,340,6.118,571,6.232,613,6.009,645,5.715,649,8.001,651,10.423,757,6.528,1023,9.273,1028,6.002,1104,6.719,1194,7.103,1245,9.654,1500,9.88,1525,7.293,1558,8.097,2100,8.199,2268,12.357,2269,12.357,2270,12.357,2271,8.537,2272,9.099,2273,14.277,2274,11.167,2275,11.167]],["keywords/852",[]],["title/853",[30,141.158,355,424.611,705,249.285,861,451.511,1028,296.612,2279,586.485]],["content/853",[4,9.957,5,8.109,53,3.407,68,3.704,77,4.69,315,6.593,355,10.654,571,5.059,613,10.207,705,2.989,861,5.414,1012,7.523,2100,14.375,2271,14.968,2272,15.455,2276,10.031,2277,8.461,2278,10.031,2279,14.099,2456,17.879,2457,7.523,2574,9.065,2578,10.031,4221,10.871,4222,10.871,4223,10.031,4224,10.871,4225,10.871,4226,10.871]],["keywords/853",[]],["title/854",[30,117.793,355,354.327,705,208.022,861,376.774,1028,247.515,1600,588.794,2279,489.407,2280,523.544]],["content/854",[5,7.413,9,7.967,30,3.467,53,2.198,77,6.534,172,10.483,180,6.298,300,8.751,317,3.588,572,8.175,613,6.797,1600,18.411,1708,11.789,1944,10.292,2009,11.789,2100,9.274,2271,12.702,2272,10.292,2280,17.461,2281,13.977,2282,13.977,2283,13.977,2284,20.546]],["keywords/854",[]],["title/855",[1,184.147,180,624.842]],["content/855",[]],["keywords/855",[]],["title/856",[40,842.314]],["content/856",[5,6.977,30,3.828,40,8.784,75,13.178,519,6.318,2286,15.07,2287,17.305,4227,18.754,4228,18.754,4229,18.754,4230,18.754,4231,18.754]],["keywords/856",[]],["title/857",[304,909.105]],["content/857",[5,6.83,30,4.129,304,9.28,519,6.184,2286,14.751,2290,16.939,2291,16.939,2292,16.939,2293,16.939,2294,16.939,2295,16.939,2296,16.939]],["keywords/857",[]],["title/858",[239,1050.287]],["content/858",[667,8.33]],["keywords/858",[]],["title/859",[2280,1244.581]],["content/859",[667,8.33]],["keywords/859",[]],["title/860",[24,478.518]],["content/860",[667,8.33]],["keywords/860",[]],["title/861",[28,841.91,535,592.334]],["content/861",[]],["keywords/861",[]],["title/862",[2308,1499.668]],["content/862",[1,2.487,237,12.123,257,9.962,967,12.123,1185,10.033,1580,14.629,1997,16.305,2308,16.921]],["keywords/862",[]],["title/863",[102,419.562,535,592.334]],["content/863",[]],["keywords/863",[]],["title/864",[34,1130.435]],["content/864",[24,5.399,30,3.723,569,9.565,2264,13.551,2265,16.921,2266,15.793,2267,16.305]],["keywords/864",[]],["title/865",[232,467.855,487,526.325,1209,653.334,1260,880.179]],["content/865",[1,1.721,5,7.048,7,4.993,30,3.731,32,5.614,54,5.137,77,6.058,154,7.325,175,10.929,212,8.709,224,6.058,229,6.994,232,5.809,257,6.894,258,5.668,288,11.455,487,6.536,572,7.579,623,6.994,650,8.952,1255,13.371,1257,11.71,1258,11.71,1259,10.626,1260,19.217,1540,13.977,2205,11.71,2309,12.958,2310,12.958,2311,12.958,2312,12.958,2313,12.958,2314,12.958]],["keywords/865",[]],["title/866",[72,712.189]],["content/866",[11,4.063,72,10.165,224,7.52,230,8.063,235,14.538,317,4.13,341,10.181,592,11.454,601,10.181,1903,14.107,2315,15.391,2316,16.087,2317,16.087,2318,16.087,2319,16.087,2320,16.087]],["keywords/866",[]],["title/867",[861,748.426,1028,491.666]],["content/867",[0,2.313,1,2.279,7,6.614,11,2.518,16,5.342,20,7.788,24,6.235,30,2.896,32,4.319,36,10.421,40,5.06,41,3.667,42,13.686,53,2.699,54,3.952,59,7.788,84,8.43,102,5.708,131,7.215,176,7.34,178,4.82,219,7.215,232,6.519,258,4.36,269,5.636,338,5.038,358,6.071,391,10.905,463,7.625,471,10.353,488,7.97,535,4.258,613,7.071,650,6.887,719,4.966,758,7.476,1023,5.461,1027,5.73,1028,6.69,2170,7.788,2271,6.887,2272,7.34,2273,8.408,2274,9.009,2321,9.419,4232,10.803,4233,10.803]],["keywords/867",[]],["title/868",[155,581.578,535,592.334]],["content/868",[0,4.101,1,2.347,15,5.966,16,7.058,19,5.201,33,6.482,43,6.332,53,2.78,54,7.008,58,7.162,72,5.653,80,6.225,102,3.985,155,7.413,156,13.014,180,5.935,223,6.91,274,8.631,299,8.631,546,5.222,624,6.405,1104,7.162,1105,11.47,1679,11.47,2322,13.171,2324,13.171,2325,13.171,2326,17.675,2327,10.531,2328,17.675,2329,13.171,2330,13.171,2331,11.109,2332,9.378,2333,13.171,4234,14.274]],["keywords/868",[]],["title/869",[99,803.96,535,592.334]],["content/869",[0,2.085,1,2.777,5,2.175,7,2.079,11,3.777,14,5.125,15,2.443,16,2.891,24,4.657,28,3.275,30,2.725,32,2.337,33,4.421,36,11.308,40,4.56,41,4.953,42,12.483,43,4.319,44,3.579,45,4.698,52,4.875,53,2.929,54,4.578,58,2.933,59,9.02,71,1.999,72,5.779,77,2.522,83,8.748,84,3.128,96,9.909,131,6.502,133,5.002,139,5.566,141,5.75,142,6.299,144,4.698,145,7.976,147,4.313,148,6.738,149,4.875,150,5.097,151,4.046,153,4.424,155,2.263,157,4.875,159,4.875,160,4.698,161,7.183,162,2.273,166,4.424,176,3.972,180,4.049,232,4.028,314,2.36,315,1.694,317,1.385,333,3.972,335,2.263,338,2.637,346,6.872,347,7.183,358,3.751,391,6.738,429,4.707,434,3.213,463,4.126,471,6.397,488,4.313,530,4.126,535,4.932,622,4.998,631,3.675,650,3.727,758,4.046,963,5.566,1023,2.955,1027,3.101,1028,4.774,1085,8.356,1159,6.039,1185,2.891,1484,3.155,1663,5.097,1911,3.414,2009,9.738,2170,4.215,2273,4.55,2275,4.875,2321,5.097,2334,5.395,2596,4.215,2662,4.698,3293,5.395,3317,5.395,3800,7.824,4235,5.846,4236,5.846,4237,5.846,4238,5.846,4239,5.846,4240,5.846,4241,5.846,4242,5.846]],["keywords/869",[]],["title/870",[1,158.147,535,508.702,1132,834.902]],["content/870",[1,2.442,7,5.386,11,3.53,162,5.889,195,8.249,254,9.646,258,6.114,280,9.394,350,7.776,538,9.521,572,8.175,611,9.521,649,9.05,661,9.274,686,6.719,715,6.838,719,6.962,1003,8.104,1132,15.899,1194,8.034,1320,12.631,1911,8.846,2335,18.386,2336,12.631,2337,13.977,2338,13.977,2339,13.977,2340,13.977,2341,13.977,2342,13.977]],["keywords/870",[]],["title/871",[7,458.884,195,702.841,224,556.723]],["content/871",[7,6.97,10,9.835,15,8.193,16,9.692,195,10.676,221,9.123,224,10.106,258,7.912,1132,12.682,2343,18.088]],["keywords/871",[]],["title/872",[54,657.936]],["content/872",[2,10.175,11,4.621,53,2.877,54,8.629,180,8.244,291,6.582,613,8.897,1132,12.827]],["keywords/872",[]],["title/873",[1028,588.399]],["content/873",[2,8.362,15,8.101,16,9.584,53,2.813,315,5.618,546,7.091,1027,10.281,1028,7.613,1132,12.54,1183,10.281,1441,14.3]],["keywords/873",[]],["title/874",[32,600.748,535,592.334]],["content/874",[2,7.754,31,10.172,32,7.186,43,9.859,53,2.609,79,7.437,86,11.81,102,6.205,154,9.377,156,12.214,175,13.991,535,7.086,1104,9.019,1209,10.385,2344,16.587,2345,16.587,2346,16.587]],["keywords/874",[]],["title/875",[0,242.121,72,447.85,601,660.459,2331,880.179]],["content/875",[]],["keywords/875",[]],["title/876",[2155,1269.313]],["content/876",[0,3.889,1,2.226,32,7.262,72,10.018,155,7.03,278,10.278,601,10.608,846,9.892,1082,11.121,1136,14.938,1185,8.981,2026,11.751,2028,11.579,2332,11.934]],["keywords/876",[]],["title/877",[0,242.121,32,452.098,72,447.85,2332,743.008]],["content/877",[0,4.912,1,2.543,10,4.274,15,3.561,16,4.212,19,3.104,30,3.996,32,5.269,33,3.869,43,3.779,53,2.633,54,3.117,58,4.274,71,2.914,72,6.384,75,4.922,77,3.675,79,3.524,83,4.598,105,5.284,112,4.096,137,3.916,139,10.373,141,5.031,142,8.527,148,5.896,151,5.896,152,6.285,153,6.446,155,6.239,161,9.724,162,3.312,181,2.787,231,7.114,234,4.519,249,7.114,258,5.32,278,4.821,300,4.922,311,6.425,317,2.018,463,6.013,1064,5.788,1136,10.766,1148,13.857,1384,5.151,1388,5.788,2028,5.431,2100,5.216,2140,7.104,2271,8.402,2332,5.597,2418,5.597,2426,12.162,2427,7.861,2428,7.861,2429,7.861,2430,7.861,2431,7.861,2432,7.861,2433,7.861,2434,7.861,2435,7.861,2436,12.162,2437,7.861,2438,7.861,2439,7.861,2440,6.846,2441,7.861]],["keywords/877",[]],["title/878",[0,215.464,72,398.542,1082,616.13,1185,497.6,2332,661.203]],["content/878",[223,9.824,227,12.423,230,9.385,1003,10.856,1082,12.423,1185,10.033,1194,10.763,2071,14.97]],["keywords/878",[]],["title/879",[7,322.348,72,359.015,224,391.076,1136,605.419,2331,705.587,2332,595.625]],["content/879",[11,3.868,111,10.433,129,12.245,177,7.28,223,8.036,500,10.036,543,16.641,573,10.036,938,10.036,939,8.092,984,10.294,1647,11.085,1703,9.917,2442,15.316,2443,19.508,2444,19.508,2445,15.316,2446,15.316,2447,15.316,2448,15.316,2449,15.316,2450,15.316]],["keywords/879",[]],["title/880",[570,708.38,1276,897.826]],["content/880",[]],["keywords/880",[]],["title/881",[71,513.937,2155,1060.637]],["content/881",[1,2.349,72,7.591,230,10.691,535,7.556,570,9.036,623,9.547,938,11.591,1067,11.321,1840,11.961,1961,14.919,2095,13.53]],["keywords/881",[]],["title/882",[1,138.581,162,439.659,570,533.097,1961,880.179]],["content/882",[]],["keywords/882",[]],["title/883",[1,158.147,272,716.073,2351,1125.225]],["content/883",[1,2.458,2,8.652,335,7.762,361,10.217,429,6.469,586,8.135,641,12.786,645,8.559,1834,12.975]],["keywords/883",[]],["title/884",[1,138.581,1484,610.369,2356,986.011,2662,908.739]],["content/884",[1,2.487,14,8.311,80,8.85,96,9.962,314,8.19,528,11.984,530,14.322,1185,10.033]],["keywords/884",[]],["title/885",[1,158.147,1022,723.042,2405,1076.194]],["content/885",[4,9.163,11,4.674,613,9,939,9.777,1075,11.349,1154,11.713,1703,11.983,2095,14.156,2497,16.117]],["keywords/885",[]],["title/886",[1,158.147,770,730.268,2412,1076.194]],["content/886",[258,8.593,350,10.929,571,9.908,755,13.203]],["keywords/886",[]],["title/887",[1,158.147,1797,593.203,2420,1125.225]],["content/887",[1,2.577,379,6.807,429,6.783,645,8.975,1797,9.666]],["keywords/887",[]],["title/888",[1,158.147,1806,822.704,2663,1190.871]],["content/888",[6,8.287,29,12.906,165,12.126,548,12.267,645,8.762,1684,13.089,1813,15.147]],["keywords/888",[]],["title/889",[1,158.147,102,360.324,2664,1190.871]],["content/889",[102,5.732,619,8.537,680,10.152,681,8.056,1318,13.95,1689,15.98,1937,12.415]],["keywords/889",[]],["title/890",[1,158.147,72,511.082,2665,1190.871]],["content/890",[1,2.546,72,8.228,340,9.492,645,8.867,1388,16.474]],["keywords/890",[]],["title/891",[1,158.147,155,499.465,2457,893.138]],["content/891",[1,1.592,11,3.027,88,3.85,99,6.95,102,5.749,155,8.598,156,8.826,287,10.832,291,6.835,299,14.1,305,6.163,321,8.165,335,6.952,429,6.641,533,6.722,534,6.722,535,5.12,558,6.832,570,8.468,571,6.046,588,5.665,615,5.374,624,8.061,641,13.126,645,7.666,670,4.205,672,13.981,680,8.882,1388,8.826,2031,8.534,2168,10.832,2666,11.986,2667,11.986,2668,11.986,2669,11.986]],["keywords/891",[]],["title/892",[586,523.434,1023,652.393,4223,1190.871]],["content/892",[1,3.017,2,7.669,11,4.143,24,5.436,27,10.75,33,8.073,54,8.783,72,5.068,233,4.598,260,5.919,288,7.738,302,2.762,335,4.953,338,3.467,345,7.835,363,7.937,527,5.092,535,7.008,597,8.408,615,5.295,645,7.587,718,4.866,1464,10.284,1703,7.646,1835,13.837,1944,8.696,2200,10.672,2574,14.825,2670,11.809,2671,11.809,2672,11.809,2673,11.809,2674,15.501,2675,11.809]],["keywords/892",[]],["title/893",[0,242.121,72,447.85,340,516.646,601,660.459]],["content/893",[]],["keywords/893",[]],["title/894",[2155,1269.313]],["content/894",[0,4.17,1,2.86,24,3.894,32,5.851,41,4.968,42,8.547,72,9.623,105,9.077,139,8.367,142,9.468,263,11.074,278,11.021,304,7.398,315,4.242,334,8.85,338,3.964,340,6.686,570,6.899,601,8.547,613,6.568,680,7.236,681,5.742,770,8.282,846,7.971,1027,7.763,1028,4.788,1082,8.96,1136,9.774,1185,7.236,2026,9.468,2028,9.33,2418,9.616]],["keywords/894",[]],["title/895",[0,242.121,32,452.098,72,447.85,340,516.646]],["content/895",[1,2.484,11,2.939,19,4.595,28,7.066,32,5.042,41,5.973,42,10.278,53,2.941,54,6.438,72,8.027,75,7.286,79,5.218,83,6.807,84,6.747,102,4.913,105,7.822,139,10.06,141,7.448,142,11.385,151,8.728,152,9.304,180,5.244,229,6.281,300,7.286,304,6.375,340,8.04,558,6.633,569,5.945,613,5.659,662,7.448,861,6.281,1028,4.126,1216,9.304,1318,8.569,1840,6.526,2028,8.04,2170,9.092,2271,11.218,2272,8.569,2451,11.637,2452,10.996,2453,11.637,2454,11.637,2455,10.996,2456,10.996,2457,8.728]],["keywords/895",[]],["title/896",[0,215.464,72,398.542,340,459.763,1082,616.13,1185,497.6]],["content/896",[223,9.824,227,12.423,230,9.385,705,5.58,1082,12.423,1185,10.033,1267,9.214,2071,14.97]],["keywords/896",[]],["title/897",[1,158.147,6,520.9,217,716.073]],["content/897",[]],["keywords/897",[]],["title/898",[75,745.578,258,520.9,601,753.709]],["content/898",[1,2.094,11,3.983,53,2.48,75,12.441,217,9.482,258,8.692,290,10.355,601,9.98,770,9.67,959,9.873,1099,14.251,2353,15.887,2357,13.184,2393,14.9,2676,13.301,2677,15.769,2678,15.769,2679,15.769,2680,15.769]],["keywords/898",[]],["title/899",[171,1169.584,571,699.382]],["content/899",[1,2.878,4,8.12,6,7.948,28,8.336,55,7.106,63,8.333,112,7.154,162,3.885,571,10.272,596,8.255,613,8.836,752,9.109,770,11.142,1034,11.258,1166,7.373,1733,11.258,2279,12.739,2372,8.03,2394,14.196,2463,8.713,2522,8.713,2683,13.729,2692,13.834,2693,13.729,2694,16.401,2695,13.729,2696,13.729,2697,13.729,2698,13.729,2699,16.401,2700,9.221,2701,8.333,2702,16.401,2703,9.221,2704,9.221,2705,9.221,2706,13.729,2707,9.221,2708,13.729,2709,9.221,2710,9.221,2711,9.221,2712,9.221,2713,9.221]],["keywords/899",[]],["title/900",[2714,1659.47]],["content/900",[]],["keywords/900",[]],["title/901",[0,194.094,2,391.076,24,241.221,315,262.763,338,245.561,2715,577.917]],["content/901",[]],["keywords/901",[]],["title/902",[0,194.094,2,391.076,24,241.221,315,262.763,338,245.561,2715,577.917]],["content/902",[0,3.315,2,2.326,4,7.672,11,2.12,12,3.99,15,6.471,24,3.14,30,4.196,47,7.051,53,1.32,54,6.144,55,4.345,56,3.26,58,5.921,71,4.036,137,4.182,162,3.537,168,2.812,180,4.907,181,2.977,224,2.326,257,2.647,258,2.176,303,3.149,317,2.796,338,3.197,358,3.505,361,2.746,379,1.745,452,3.437,468,6.076,555,3.184,586,3.69,613,4.083,622,2.768,624,5.296,668,2.86,715,2.434,718,2.05,719,4.182,757,2.628,867,2.575,989,4.701,1023,2.725,1028,2.977,1194,4.826,1249,4.496,1445,5.091,1462,3.6,1463,5.8,1494,3.051,1525,2.936,1537,3.184,1714,5.977,1720,3.26,1761,3.344,1892,4.196,2100,3.301,2264,7.882,2389,6.181,2413,3.978,2418,3.542,2508,4.332,2580,6.296,2586,3.301,2715,9.871,2716,7.587,2717,7.587,2718,7.587,2719,7.587,2720,8.395,2721,3.978,2722,4.332,2723,10.929,2724,4.196,2725,7.754,2726,4.975,2727,4.975,2728,4.975,2729,4.975,2730,7.319,2731,4.975,2732,4.975,2733,4.975,2734,3.978,2735,4.975,2736,4.975,2737,4.496,2738,4.196,2739,4.196,2740,6.712,2741,4.975,2742,4.496,2743,4.975,2744,4.975,2745,4.975,2746,8.395,2747,4.975,2748,4.975,2749,10.89,2750,10.89,2751,4.975,2752,4.975,2753,3.978,2754,4.496,2755,3.978,2756,8.707,2757,3.978,2758,3.978]],["keywords/902",[]],["title/903",[11,211.281,24,241.221,317,214.759,338,245.561,1028,296.612,2715,577.917]],["content/903",[12,7.967,19,6.618,24,4.833,317,4.303,338,4.92,569,10.544,586,7.367,645,7.752,670,5.88,1028,5.943,2715,15.452,2759,16.761,2760,16.761,2761,10.983,2762,13.401]],["keywords/903",[]],["title/904",[24,343.395,338,349.572,1028,422.248]],["content/904",[0,2.867,4,6.118,11,4.275,12,9.176,19,4.879,24,6.272,54,4.899,338,6.594,443,7.655,569,8.647,619,7.627,624,8.231,657,8.798,670,4.335,846,7.293,1028,7.713,1148,8.943,1445,5.777,2715,11.693,2761,11.091,2763,12.357,2764,12.357,2765,13.533,2766,12.052,2767,10.423,2768,10.423,2769,10.423,2770,12.357,2771,10.423]],["keywords/904",[]],["title/905",[1,158.147,33,586.043,36,723.042]],["content/905",[]],["keywords/905",[]],["title/906",[34,1130.435]],["content/906",[36,11.237,37,15.61,40,9.394,42,11.713,54,7.338,148,13.88,233,4.514,304,10.139,2772,18.507]],["keywords/906",[]],["title/907",[1,158.147,33,586.043,40,604.462]],["content/907",[1,2.838,24,4.375,33,7.466,36,11.772,53,2.386,54,7.687,55,7.853,56,9.941,57,11.171,58,8.249,59,11.853,68,5.602,79,6.802,182,9.211,223,7.96,335,6.363,338,4.453,371,9.602,1071,9.941,1183,8.721,1184,12.129,1877,13.71,2773,15.171,2774,15.171]],["keywords/907",[]],["title/908",[54,549.77,75,868.152]],["content/908",[53,3.089,83,11.49,667,8.023,2775,17.752]],["keywords/908",[]],["title/909",[1,184.147,166,1137.075]],["content/909",[1,2.375,30,3.018,36,13.971,53,2.813,77,8.362,131,12.945,166,14.667,2776,16.164,2777,17.886,2778,16.164]],["keywords/909",[]],["title/910",[296,508.161,1690,931.966]],["content/910",[1,0.972,9,4.173,20,8.99,30,1.942,36,11.287,40,3.716,41,2.693,53,2.754,54,5.636,68,4.248,83,4.282,84,4.245,102,5.625,120,4.173,137,3.647,145,11.13,168,4.139,180,3.299,198,2.734,221,5.803,232,9.029,251,3.841,257,7.562,258,3.202,260,3.67,272,4.402,296,5.209,308,9.199,309,5.058,315,4.465,317,2.954,325,14.559,333,5.391,347,5.853,350,4.073,361,4.042,363,4.921,485,4.686,586,3.218,619,3.299,650,5.058,668,4.208,755,4.921,1022,4.445,1023,4.011,1075,4.49,1130,5.853,1153,4.634,1515,4.921,1520,9.125,1690,4.921,1834,5.133,2389,5.391,2497,6.376,2723,5.6,2778,6.616,2779,20.605,2780,12.845,2781,7.321,2782,7.321,2783,11.506,2784,11.506,2785,7.321,2786,10.02,2787,7.321,2788,7.321,2789,7.321,2790,7.321,2791,7.321,2792,7.321,2793,7.321,2794,7.321,2795,7.321,2796,7.321,2797,7.321,2798,7.321,2799,7.321]],["keywords/910",[]],["title/911",[1,158.147,102,360.324,137,593.203]],["content/911",[0,1.842,1,2.415,10,8.139,11,5.061,14,5.44,19,4.839,20,6.203,30,2.84,32,3.44,36,7.441,40,4.03,41,6.691,42,7.757,53,2.647,54,3.148,68,6.716,78,4.137,79,3.559,89,9.58,102,5.093,105,14.272,137,8.384,139,7.593,140,6.914,146,10.337,154,4.488,156,5.846,160,6.914,232,3.559,248,5.408,249,8.755,251,6.43,257,4.224,263,6.51,266,6.073,269,4.488,304,6.714,309,5.485,311,6.475,313,3.596,314,3.473,315,2.494,318,6.348,319,7.175,320,7.175,321,5.408,322,6.348,328,11.075,329,7.175,330,7.175,333,5.846,335,3.33,340,6.068,475,5.141,625,6.348,958,5.746,1128,7.502,1148,5.746,1193,5.268,1527,6.073,2327,6.348,2780,7.175,2800,7.939,2801,12.256,2802,7.939,2803,7.939,2804,7.939,2805,7.939]],["keywords/911",[]],["title/912",[2806,1659.47]],["content/912",[]],["keywords/912",[]],["title/913",[22,455.254,198,444.753,1489,753.709]],["content/913",[0,2.27,2,6.706,10,5.321,11,2.472,14,6.367,19,3.864,30,1.651,53,3.131,55,5.065,56,6.412,57,10.562,58,5.321,60,4.797,68,3.613,71,3.627,78,5.099,79,4.387,111,6.666,112,5.099,133,4.24,162,4.123,198,3.655,217,5.884,258,4.28,295,9.181,305,5.032,317,2.512,335,8.351,434,5.829,510,8.254,528,6.263,533,5.488,624,4.759,856,6.062,867,5.065,870,6.193,1022,5.941,1075,6.001,1085,7.082,1153,6.193,1211,7.645,1299,9.246,1516,7.339,1577,7.824,1666,7.485,2247,8.522,2587,8.254,2596,7.645,2730,11.414,2767,12.099,2807,9.786,2808,9.786,2809,9.786,2810,8.843,2811,14.345,2812,9.786,2813,9.786,2814,9.786,2815,9.786,2816,9.786,2817,9.786,2818,9.786,2819,9.786,2820,9.786,2821,9.786,2822,9.786,2823,9.786,2824,9.786]],["keywords/913",[]],["title/914",[24,343.395,338,349.572,1489,753.709]],["content/914",[11,4.467,12,8.407,24,5.101,311,9.345,338,5.192,341,11.195,569,9.036,1025,10.168,1028,6.272,1494,10.847,2761,11.591,2766,12.594,2771,14.919]],["keywords/914",[]],["title/915",[0,276.306,23,480.154,2715,822.704]],["content/915",[]],["keywords/915",[]],["title/916",[0,276.306,22,455.254,355,604.462]],["content/916",[0,0.476,2,0.204,5,0.347,7,0.642,11,0.793,12,0.208,14,0.382,15,0.389,16,0.461,18,2.045,19,0.81,22,0.167,23,0.176,24,0.126,30,3.763,41,0.316,43,1.165,47,0.283,50,0.705,53,0.323,54,1.511,58,0.468,60,0.123,68,0.469,71,1.033,80,0.6,82,1.055,86,0.612,93,2.366,96,0.457,99,6.728,102,2.508,111,0.586,118,1.755,120,0.95,138,0.74,143,0.687,162,2.596,180,0.924,181,1.113,183,0.369,195,0.258,201,3.215,202,0.334,204,0.633,212,9.351,219,0.316,223,1.646,224,0.204,225,0.746,229,1.504,232,7.17,234,0.251,236,1.694,251,0.451,257,1.29,258,0.729,265,4.563,272,6.027,273,0.349,278,0.778,290,1.635,291,0.309,309,0.302,310,0.725,315,1.765,316,0.522,334,1.092,338,0.128,355,0.644,358,1.012,361,1.921,362,0.369,363,0.294,365,1.629,369,0.302,371,0.544,385,0.294,387,0.334,388,0.578,389,0.294,401,0.687,425,1.187,429,0.301,432,0.725,434,0.26,444,2.131,452,11.973,466,1.032,480,0.958,484,0.322,487,2.243,489,0.369,494,0.369,500,8.137,506,0.369,517,0.302,527,0.188,541,0.334,543,0.633,546,1.763,549,0.322,563,1.352,569,0.223,587,3.873,611,0.586,613,7.231,624,0.617,629,0.341,630,0.705,631,0.586,644,1.629,645,1.121,719,1.208,759,1.187,771,2.677,867,1.255,959,3.161,971,0.812,984,0.294,1022,4.903,1028,0.591,1071,2.056,1074,0.349,1076,0.29,1093,0.38,1096,2.111,1104,1.115,1136,0.316,1142,0.358,1148,0.622,1159,3.394,1179,0.316,1193,0.29,1198,0.687,1209,8.838,1216,1.332,1264,0.316,1266,3.873,1361,0.298,1465,0.249,1489,8.806,1534,0.322,1541,0.935,1543,3.862,1619,0.622,1620,0.28,1666,0.334,1720,0.563,1727,0.341,1781,2.045,1840,0.482,1876,1.988,1911,1.534,1983,0.369,2019,2.518,2066,12.384,2071,2.509,2151,5.568,2170,2.452,2402,1.506,2477,1.575,2479,0.812,2481,0.812,2526,2.291,2587,0.369,2589,0.812,2596,0.341,2685,1.575,2715,0.302,2724,0.725,2725,0.311,2734,12.096,2766,0.311,2767,0.369,2771,0.369,2786,0.749,2810,0.395,2825,0.437,2826,0.306,2827,0.437,2828,0.437,2829,0.437,2830,0.437,2831,0.437,2832,0.437,2833,0.437,2834,0.369,2835,0.437,2836,0.437,2837,0.437,2838,0.437,2839,0.437,2840,0.437,2841,0.437,2842,0.437,2843,0.437,2844,0.437,2845,1.666,2846,0.437,2847,0.349,2848,0.86,2849,0.437,2850,1.27,2851,0.437,2852,0.437,2853,0.437,2854,0.437,2855,0.437,2856,0.437,2857,0.437,2858,0.437,2859,0.437,2860,0.437,2861,0.437,2862,0.437,2863,0.358,2864,1.666,2865,5.049,2866,5.62,2867,4.447,2868,11.604,2869,4.447,2870,5.049,2871,8.906,2872,8.906,2873,2.424,2874,5.049,2875,4.447,2876,5.049,2877,4.447,2878,5.049,2879,2.424,2880,2.424,2881,2.424,2882,2.424,2883,5.049,2884,4.447,2885,11.008,2886,5.049,2887,8.5,2888,4.447,2889,4.563,2890,4.447,2891,4.447,2892,4.447,2893,4.447,2894,0.86,2895,0.86,2896,0.86,2897,0.86,2898,0.86,2899,0.86,2900,0.86,2901,0.86,2902,0.86,2903,0.86,2904,0.777,2905,0.86,2906,0.86,2907,0.86,2908,0.86,2909,0.86,2910,0.86,2911,0.86,2912,0.86,2913,0.86,2914,0.86,2915,0.86,2916,0.86,2917,0.86,2918,0.86,2919,0.86,2920,0.86,2921,0.86,2922,1.666,2923,0.86,2924,0.86,2925,0.437,2926,1.666,2927,0.86,2928,0.437,2929,0.86,2930,0.86,2931,13.914,2932,9.295,2933,2.424,2934,0.86,2935,0.86,2936,2.424,2937,0.86,2938,0.86,2939,4.447,2940,4.447,2941,0.86,2942,0.86,2943,0.86,2944,0.86,2945,2.424,2946,2.424,2947,0.86,2948,0.86,2949,7.631,2950,7.631,2951,2.424,2952,2.424,2953,0.86,2954,0.86,2955,2.424,2956,0.86,2957,0.86,2958,4.447,2959,4.447,2960,0.86,2961,0.86,2962,0.86,2963,0.86,2964,4.447,2965,4.447,2966,0.86,2967,0.86,2968,0.86,2969,0.86,2970,2.424,2971,2.424,2972,0.86,2973,0.86,2974,2.424,2975,0.86,2976,0.86,2977,2.424,2978,0.86,2979,0.86,2980,6.161,2981,6.161,2982,0.86,2983,0.86,2984,2.424,2985,2.424,2986,0.86,2987,0.86,2988,2.424,2989,0.86,2990,0.86,2991,2.424,2992,0.86,2993,0.86,2994,2.424,2995,3.138,2996,0.86,2997,0.86,2998,3.48,2999,6.923,3000,6.923,3001,0.86,3002,0.86,3003,0.86,3004,0.86,3005,2.424,3006,0.86,3007,0.86,3008,0.86,3009,0.86,3010,0.437,3011,0.86,3012,2.424,3013,2.424,3014,0.86,3015,0.86,3016,0.86,3017,0.86,3018,0.86,3019,0.86,3020,2.424,3021,0.86,3022,0.86,3023,2.424,3024,0.86,3025,0.86,3026,2.424,3027,0.86,3028,0.86,3029,2.424,3030,0.86,3031,0.86,3032,2.424,3033,2.424,3034,0.86,3035,0.437,3036,2.424,3037,2.424,3038,0.86,3039,0.437,3040,0.437,3041,0.437,3042,13.914,3043,13.914,3044,2.424,3045,0.86,3046,0.86,3047,0.86,3048,0.777,3049,0.86,3050,0.777,3051,0.86,3052,0.777,3053,0.86,3054,0.777,3055,0.86,3056,0.86,3057,0.777,3058,0.86,3059,0.725,3060,0.86,3061,18.331,3062,0.86,3063,0.86,3064,2.424,3065,0.86,3066,1.666,3067,0.86,3068,1.666,3069,2.424,3070,0.86,3071,0.86,3072,0.86,3073,0.86,3074,0.86,3075,0.86,3076,0.86,3077,1.666,3078,0.86,3079,0.86,3080,1.666,3081,0.86,3082,2.424,3083,0.86,3084,0.86,3085,0.86,3086,2.424,3087,0.86,3088,1.666,3089,0.86,3090,2.424,3091,0.86,3092,0.86,3093,0.86,3094,0.86,3095,0.86,3096,0.86,3097,0.86,3098,0.86,3099,0.86,3100,2.051,3101,0.86,3102,0.86,3103,0.437,3104,0.86,3105,0.86,3106,1.666,3107,0.86,3108,0.86,3109,0.86,3110,0.86,3111,0.86,3112,0.86,3113,0.86,3114,0.86,3115,0.86,3116,0.86,3117,0.86,3118,0.86,3119,1.666,3120,1.666,3121,1.666,3122,1.666,3123,1.666,3124,1.666,3125,1.666,3126,0.86,3127,0.86,3128,0.86,3129,0.86,3130,1.666,3131,5.62,3132,2.424,3133,0.86,3134,0.86,3135,0.86,3136,0.749,3137,0.86,3138,0.86,3139,0.86,3140,0.86,3141,0.86,3142,0.86,3143,0.86,3144,0.86,3145,0.86,3146,1.666,3147,0.86,3148,0.86,3149,0.86,3150,0.86,3151,0.86,3152,0.86,3153,6.923,3154,2.787,3155,2.787,3156,0.86,3157,0.86,3158,0.86,3159,0.86,3160,0.86,3161,0.86,3162,0.437,3163,0.437,3164,0.437,3165,0.437,3166,0.86,3167,0.86,3168,0.86,3169,0.395,3170,0.437,3171,0.437,3172,0.437,3173,0.437,3174,3.138,3175,0.437,3176,1.666,3177,0.437,3178,1.666,3179,1.666,3180,0.437,3181,1.666,3182,0.437,3183,0.86,3184,0.86,3185,0.86,3186,0.437,3187,0.437,3188,0.437,3189,0.437,3190,0.437,3191,1.666,3192,0.437,3193,0.437,3194,0.437,3195,0.86]],["keywords/916",[]],["title/917",[11,234.543,40,471.36,41,341.595,300,581.403,304,508.737]],["content/917",[]],["keywords/917",[]],["title/918",[40,529.678,41,383.857,304,571.678,315,327.782]],["content/918",[0,2.569,1,1.471,5,7.984,9,6.312,15,5.015,19,4.372,30,3.527,32,4.797,40,9.241,41,6.697,42,7.008,53,1.741,79,4.965,217,6.658,221,5.585,229,8.464,300,6.933,303,7.008,304,12.224,305,5.694,315,4.926,338,3.251,429,3.871,435,8.154,452,7.65,519,4.043,535,4.73,684,4.168,1035,8.154,1064,11.546,1465,6.312,1516,11.761,1620,7.087,2279,10.994,2724,9.34,3196,11.073,3197,11.073,3198,11.073,3199,11.073,3200,11.073,3201,10.007,3202,11.073,3203,11.073,3204,11.073,3205,11.073]],["keywords/918",[]],["title/919",[9,678.798,40,604.462,2093,847.913]],["content/919",[]],["keywords/919",[]],["title/920",[33,816.647]],["content/920",[19,7.142,33,8.902,53,2.845,79,8.11,83,10.58,229,9.763,346,13.836,347,14.462,2093,12.879,3206,18.088,3207,18.088]],["keywords/920",[]],["title/921",[315,435.558,3208,1386.652]],["content/921",[0,3.588,19,6.106,41,5.688,53,2.432,79,6.933,83,11.48,137,7.703,165,14.516,315,6.165,428,12.681,443,9.581,2093,15.352,3209,15.464,3210,19.486,3211,15.464,3212,15.464,3213,15.464]],["keywords/921",[]],["title/922",[9,678.798,137,593.203,2034,1004.451]],["content/922",[0,3.487,10,8.171,11,3.796,19,5.934,30,2.536,53,2.363,79,6.738,83,11.273,165,12.335,194,10.382,212,10.1,290,7.831,640,11.066,1067,12.335,2034,17.945,2093,15.148,2154,17.446,3210,17.417,3214,15.028]],["keywords/922",[]],["title/923",[43,572.465,335,499.465,2093,847.913]],["content/923",[53,2.845,83,10.58,137,9.01,1619,13.091,2093,15.392,2327,14.462,2775,16.347,3215,18.088,3216,18.088,3217,18.088]],["keywords/923",[]],["title/924",[1,158.147,379,417.745,1797,593.203]],["content/924",[]],["keywords/924",[]],["title/925",[0,194.094,1,111.092,233,204.037,379,293.449,1489,529.45,1797,416.702]],["content/925",[1,1.721,7,4.993,11,4.415,15,5.869,16,6.943,30,2.95,53,2.038,54,5.137,120,7.386,233,4.264,253,9.378,300,8.113,315,4.07,358,5.41,379,7.757,527,5.587,867,6.707,1349,9.911,1351,8.827,1506,9.911,1509,8.293,1513,15.132,1541,9.541,1797,6.455,1944,9.541,2586,8.597,2730,8.709,2734,10.36,3218,12.958,3219,12.958,3220,12.958,3221,10.36,3222,13.977,3223,10.36,3224,10.36,3225,10.36]],["keywords/925",[]],["title/926",[1,158.147,54,472.149,1797,593.203]],["content/926",[]],["keywords/926",[]],["title/927",[54,413.734,303,660.459,1797,519.812,3226,1043.535]],["content/927",[1,2.776,5,8.429,6,8.232,14,6.429,30,3.175,43,6.963,53,2.278,54,8.774,181,5.136,313,6.56,314,6.335,379,5.081,569,7.399,645,6.699,1064,10.665,1104,7.875,1308,13.685,1500,11.58,1510,11.426,1797,7.215,2692,12.216,3227,14.484,3228,14.484]],["keywords/927",[]],["title/928",[54,413.734,705,310.969,861,563.234,1797,519.812]],["content/928",[9,8.331,14,6.488,30,3.194,53,2.299,54,5.795,55,9.799,56,12.405,57,10.762,58,7.947,182,8.874,217,8.789,571,10.59,705,5.641,861,7.889,1008,9.355,1064,10.762,1085,10.578,1185,7.832,1211,11.419,1510,8.874,2026,10.247,2440,12.728,3229,14.616,3230,14.616,3231,14.616,3232,11.686]],["keywords/928",[]],["title/929",[1,158.147,291,428.417,302,278.474]],["content/929",[0,3.623,1,2.623,19,6.165,54,7.83,88,5.016,105,10.495,142,10.948,154,8.828,288,10.232,301,9.674,302,4.618,317,4.009,335,6.549,340,7.731,356,7.639,379,5.478,758,11.711,1619,11.301,1797,9.837,3136,13.598,3233,15.615]],["keywords/929",[]],["title/930",[22,455.254,670,417.745,1762,910.886]],["content/930",[1,1.906,4,7.106,11,3.625,19,5.667,22,7.152,32,6.219,40,7.286,181,5.089,257,7.637,258,6.278,260,7.194,317,3.685,334,9.406,355,7.286,429,5.017,501,8.987,586,6.309,597,10.22,615,6.435,670,7.736,705,4.277,1290,10.388,1329,10.979,1349,10.979,1745,11.476,1762,10.979,1797,7.15,3234,14.354,3235,14.354,3236,14.354]],["keywords/930",[]],["title/931",[88,445.436,301,859.064]],["content/931",[]],["keywords/931",[]],["title/932",[88,445.436,563,538.632]],["content/932",[11,4.842,88,6.159,291,6.898,299,12.564,303,12.135,1230,10.929]],["keywords/932",[]],["title/933",[88,382.545,299,780.355,1230,678.798]],["content/933",[7,7.749,9,5.718,14,4.453,16,5.375,19,3.961,24,2.893,25,4.822,30,3.193,43,7.022,60,4.866,78,5.227,80,6.904,88,7.641,102,6.085,181,3.557,200,7.033,210,6.28,232,4.497,233,4.615,234,5.766,274,6.573,291,3.609,299,6.573,314,4.388,315,3.151,358,4.188,538,11.734,578,7.837,939,5.3,969,8.461,1230,5.718,1259,8.226,1369,8.226,1445,4.69,2108,9.065,2157,12.72,3237,10.031,3238,10.031,3239,10.031,3240,10.031,3241,14.607,3242,10.031,3243,10.031,3244,10.031,3245,10.031,3246,10.031,3247,10.031,3253,10.031]],["keywords/933",[]],["title/934",[88,445.436,302,324.255]],["content/934",[0,1.908,1,2.455,7,3.169,23,3.316,29,5.603,30,3.812,53,1.293,72,3.53,78,4.286,88,5.508,102,3.81,154,4.65,178,3.977,233,3.072,272,4.946,302,4.559,315,5.386,317,2.112,354,3.261,358,3.434,379,2.885,475,8.154,619,3.706,705,2.451,709,4.769,723,3.888,732,4.612,735,4.345,736,3.157,757,4.345,770,7.723,834,5.15,939,4.345,959,12.704,963,5.096,1230,4.688,1267,4.048,1349,6.291,1437,7.772,1497,5.39,1519,4.612,1797,4.097,3254,8.225,3255,8.225,3259,6.576,3261,6.576,3263,6.576,3264,8.225,3265,8.225,3266,8.225,3267,8.225,3268,8.225,3269,8.225,3270,8.225,3271,8.225,3272,8.225,3273,8.225,3274,8.225,3275,12.594,3276,12.594,3277,12.594,3278,8.225,3279,8.225,3280,8.225,3281,8.225,3282,6.576,3283,8.225,3284,8.225,3285,8.225,3286,8.225,3287,8.225,3288,8.225,3289,8.225,4243,8.914,4244,8.914,4245,8.914,4246,8.914,4247,8.914]],["keywords/934",[]],["title/935",[2863,1360.79]],["content/935",[]],["keywords/935",[]],["title/936",[54,657.936]],["content/936",[]],["keywords/936",[]],["title/937",[40,604.462,41,438.054,1489,753.709]],["content/937",[5,6.235,30,2.609,34,10.534,36,9.389,37,13.044,38,13.467,39,13.975,40,7.849,41,5.688,42,12.422,43,9.435,44,10.26,45,13.467,46,10.394,47,10.013,48,11.829,49,13.467,52,13.975,53,2.432,77,7.229,180,6.968,195,9.127,659,13.044,3290,15.464]],["keywords/937",[]],["title/938",[1,158.147,41,438.054,178,575.772]],["content/938",[1,2.689,30,3.722,36,13.393,53,3.184,54,8.028,55,8.411,56,13.269,57,11.965,58,8.836,59,12.696,118,6,131,11.761,570,8.301]],["keywords/938",[]],["title/939",[1,158.147,85,876.87,2028,822.704]],["content/939",[0,5.246,1,2.716,11,2.356,15,4.225,16,4.999,23,3.761,30,1.574,33,4.591,53,2.178,60,2.635,69,6.087,83,8.1,84,9.575,85,6.869,86,6.642,87,8.431,88,2.997,89,5.971,92,20.079,93,11.821,95,4.647,96,7.367,99,5.409,102,2.823,105,6.27,108,4.225,230,4.676,1737,7.65,1885,5.841,2046,6.752,3294,9.329,3297,9.329,3302,8.431,3313,9.329,3315,9.329,4248,10.11,4249,24.078,4250,10.11,4251,10.11,4252,10.11,4253,10.11,4254,10.11,4255,10.11,4256,10.11,4257,10.11,4258,10.11,4259,10.11,4260,10.11,4261,10.11,4262,10.11]],["keywords/939",[]],["title/940",[155,581.578,274,908.646]],["content/940",[11,4.233,30,3.483,53,2.636,83,9.804,105,11.265,139,13.857,141,10.728,142,15.681,151,12.571,152,13.401,153,13.744,154,9.475,3318,16.761]],["keywords/940",[]],["title/941",[317,354.3,355,471.36,723,438.925,1267,456.997]],["content/941",[22,6.838,24,5.158,220,12.945,231,12.559,317,4.592,338,5.25,705,5.33,1028,6.342,1547,14.3,1620,11.448,3319,17.886]],["keywords/941",[]],["title/942",[22,319.798,71,310.048,231,489.296,341,529.45,355,424.611,379,293.449]],["content/942",[0,1.506,1,0.862,9,3.699,30,3.966,53,1.021,71,3.874,93,5.561,108,2.939,162,4.404,181,2.301,198,2.424,210,4.063,231,3.796,311,3.428,317,1.666,338,3.853,354,4.144,355,3.294,479,4.62,670,5.279,723,4.941,790,8.357,794,7.995,830,4.153,856,4.02,867,9.127,870,4.107,958,4.696,959,9.422,1023,3.555,1071,4.252,1452,5.473,1646,5.473,1710,3.979,1732,7.328,1903,4.55,1935,7.818,2043,5.473,2250,8.817,3320,6.489,3321,6.489,3322,6.489,3323,6.489,3324,6.489,3325,6.489,3326,6.489,3327,6.489,3328,6.489,3329,16.5,3330,6.489,3331,6.489,3332,5.864,3333,10.453,3334,6.489,3335,6.489,3336,6.489,3337,6.489,3338,6.489,3339,6.489,3340,6.489,3341,6.489,3342,10.453,3343,6.489,3344,6.489,3345,6.489,3346,15.049,3347,6.489,3348,6.489,3349,10.453,3350,10.453,3351,6.489,3352,6.489,3353,6.489,3354,6.489,3355,6.489,3356,6.489,3357,6.489,3358,6.489,3359,6.489,3360,6.489,3361,10.453,3362,6.489,3363,10.453,3364,10.453,3365,6.489,3366,6.489,3367,6.489,3368,6.489,3369,6.489,3370,6.489,3371,6.489,3372,6.489,3373,6.489,3374,6.489,3375,9.446,3376,6.489,3378,6.489,3379,6.489,3380,6.489,3381,6.489,3382,6.489,3383,6.489,3384,5.864,3385,5.864,3526,4.696,3527,7.995,3528,5.321,4263,7.032]],["keywords/942",[]],["title/943",[22,355.008,162,391.252,233,226.502,659,783.272,1489,587.743]],["content/943",[24,5.276,30,3.087,53,2.877,233,4.462,338,5.371,527,7.889,1023,10.023,1028,6.487,3386,18.295,3387,18.295]],["keywords/943",[]],["title/944",[302,278.474,867,616.411,1267,586.043]],["content/944",[1,2.158,7,6.262,30,2.742,154,9.187,155,6.815,232,7.286,302,4.735,538,11.07,541,12.43,563,6.312,622,9.041,867,8.411,969,13.706,1267,7.997,1441,12.992,1620,10.401,3388,16.25,3389,16.25,3390,16.25,3391,16.25]],["keywords/944",[]],["title/945",[236,563.234,870,660.459,1710,639.919,3526,755.225]],["content/945",[1,2.158,11,4.104,80,7.681,155,6.815,212,10.922,230,8.145,538,13.793,563,7.865,628,6.116,705,4.842,1230,9.263,1232,17.633,1421,12.992,1771,11.74,1797,8.095,2046,11.761,3526,11.761]],["keywords/945",[]],["title/946",[102,315.745,535,445.765,670,366.061,1159,701.358]],["content/946",[]],["keywords/946",[]],["title/947",[233,290.461,680,638.111,681,506.352]],["content/947",[]],["keywords/947",[]],["title/948",[233,338.213,315,435.558]],["content/948",[53,3.128,682,10.814,683,15.901]],["keywords/948",[]],["title/949",[225,603.628]],["content/949",[24,3.648,60,6.391,138,7.634,180,7.75,220,9.155,233,4.766,296,6.303,338,3.713,546,5.016,623,9.283,688,7.92,690,10.625,692,9.887,693,7.466,700,7.466,709,9.972,736,4.855,1438,9.024,1454,13.5,1507,8.289,1510,7.681,1975,10.768,2106,10.927,3393,8.502,3394,19.542]],["keywords/949",[]],["title/950",[317,355.985,705,413.216]],["content/950",[1,1.949,6,6.419,30,4.129,53,2.308,60,4.145,68,3.727,185,5.225,296,3.699,356,4.938,358,6.127,470,3.89,519,3.686,628,3.799,682,5.489,684,3.799,685,5.448,686,4.853,687,5.448,688,6.32,689,7.187,690,7.979,691,6.785,692,5.803,693,8.66,694,6.974,695,6.974,696,7.721,697,13.111,698,7.721,699,7.721,700,8.66,701,7.887,702,8.071,703,8.071,709,5.853,783,4.549,878,4.968,879,4.968,880,4.968,910,5.26,911,5.26,3395,5.661,3396,8.071,3397,6.32,3398,7.721,3399,8.071,3400,6.785,3401,7.721,3402,7.721,3403,8.071,3404,8.071,3405,8.071,3406,8.071,3407,8.071]],["keywords/950",[]],["title/951",[138,615.505,233,338.213]],["content/951",[53,3.167,683,16.101]],["keywords/951",[]],["title/952",[317,355.985,705,413.216]],["content/952",[1,1.324,6,4.36,12,6.911,30,4.072,53,2.287,88,4.671,356,4.877,358,7.167,470,3.841,519,3.64,628,3.752,684,3.752,690,9.333,693,10.13,697,10.045,700,10.13,703,7.97,709,9.952,783,4.492,878,4.906,879,4.906,880,4.906,907,10.045,908,10.045,910,8.944,911,8.944,2826,10.194,3395,5.59,3396,7.97,3397,6.241,3398,7.625,3399,7.97,3400,11.536,3401,7.625,3402,7.625,3403,7.97,3404,7.97,3405,7.97,3406,7.97,3407,7.97,3408,9.969,3409,10.905,3410,11.122,3411,9.969]],["keywords/952",[]],["title/953",[233,404.755]],["content/953",[53,3.167,713,14.829]],["keywords/953",[]],["title/954",[225,603.628]],["content/954",[60,6.233,221,9.444,233,4.567,296,6.862,1438,9.824,1975,11.723,2106,9.757]],["keywords/954",[]],["title/955",[317,355.985,705,413.216]],["content/955",[1,2.36,6,5.809,30,3.763,53,2.795,356,6.497,358,7.421,470,5.118,519,4.849,628,4.998,684,4.998,690,7.221,693,7.838,697,12.278,700,7.838,709,7.7,714,9.779,783,5.984,878,6.536,879,6.536,880,6.536,910,6.921,911,6.921,3395,7.447,3396,10.618,3397,8.315,3398,10.158,3399,10.618,3400,8.926,3401,10.158,3402,10.158,3403,10.618,3404,10.618,3405,10.618,3406,10.618,3407,10.618]],["keywords/955",[]],["title/956",[233,338.213,715,678.332]],["content/956",[53,3.128,713,14.644,715,9.729]],["keywords/956",[]],["title/957",[225,603.628]],["content/957",[9,8.73,24,4.417,60,6.064,221,7.725,233,5.236,296,5.613,338,4.496,623,10.529,688,9.589,690,10.607,736,5.878,1438,10.235,1975,9.589,2106,11.186,3393,15.189]],["keywords/957",[]],["title/958",[317,355.985,705,413.216]],["content/958",[1,2.409,30,4.196,53,2.454,60,4.408,68,4.061,185,5.692,296,4.03,356,5.38,358,7.573,470,4.238,519,4.015,628,4.139,684,4.139,685,5.936,686,5.286,687,5.936,688,6.885,689,7.83,690,8.485,692,6.321,693,9.21,694,7.597,695,7.597,700,9.21,709,6.376,714,8.098,715,5.38,716,9.276,783,4.955,878,5.412,879,5.412,880,5.412,910,5.731,911,5.731,3395,6.167,3397,6.885,3398,8.412,3400,7.391,3401,8.412,3402,8.412,3412,10.997,3413,10.997]],["keywords/958",[]],["title/959",[133,600.748,233,338.213]],["content/959",[53,3.128,133,8.616,713,14.644]],["keywords/959",[]],["title/960",[225,603.628]],["content/960",[60,6.233,221,9.444,233,4.567,296,6.862,1438,9.824,1975,11.723,2106,9.757]],["keywords/960",[]],["title/961",[317,355.985,705,413.216]],["content/961",[1,2.36,6,5.809,30,3.609,53,2.795,133,5.754,356,6.497,358,7.421,470,5.118,519,4.849,628,4.998,684,4.998,690,7.221,693,7.838,697,12.278,700,7.838,709,7.7,714,9.779,783,5.984,878,6.536,879,6.536,880,6.536,910,6.921,911,6.921,3395,7.447,3396,10.618,3397,8.315,3398,10.158,3399,10.618,3400,8.926,3401,10.158,3402,10.158,3403,10.618,3404,10.618,3405,10.618,3406,10.618,3407,10.618]],["keywords/961",[]],["title/962",[302,278.474,680,638.111,681,506.352]],["content/962",[]],["keywords/962",[]],["title/963",[11,234.543,233,226.502,302,217.154,315,291.693,720,839.217]],["content/963",[53,3.128,682,10.814,721,14.644]],["keywords/963",[]],["title/964",[225,603.628]],["content/964",[24,2.151,25,5.612,60,5.886,67,5.58,79,5.234,80,3.525,84,4.324,120,4.251,168,4.216,198,2.785,220,5.397,233,5.082,234,6.71,249,6.828,296,6.474,302,4.131,313,3.378,314,3.262,338,3.427,361,4.117,394,4.887,526,4.887,535,3.186,546,2.957,557,6.301,586,3.278,588,5.518,619,3.361,647,4.768,649,7.559,681,3.171,688,7.309,705,4.287,709,6.768,722,3.157,725,6.255,730,5.851,736,7.191,738,4.055,834,7.309,1183,4.287,1185,3.996,1438,8.538,1465,6.654,1469,4.669,1714,5.31,1864,5.704,1911,4.72,1975,4.669,2106,11.502,2779,6.74,3259,9.334,3261,9.334,3263,11.501,3393,5.012,3414,6.29,3415,11.003,3416,7.458,3417,9.334,3418,11.674,3419,7.458,3420,7.458,3421,6.74,3422,6.116,3423,6.29,3424,6.74,3425,6.74,3426,7.458]],["keywords/964",[]],["title/965",[317,355.985,705,413.216]],["content/965",[30,4.11,53,1.849,60,2.127,67,3.598,68,2.78,71,4.359,108,3.41,118,4.342,185,3.897,233,2.868,296,2.759,338,2.21,354,2.985,356,3.683,379,2.641,470,2.901,519,2.749,563,4.568,588,3.558,628,2.833,682,4.093,684,2.833,685,4.063,686,3.619,687,4.063,722,4.977,723,8.387,724,8.39,725,4.034,726,6.128,727,4.365,728,4.616,729,4.713,730,3.773,731,4.616,732,4.222,733,4.443,734,6.213,735,6.213,736,5.554,737,5.621,738,6.394,739,4.443,740,5.06,741,5.543,783,3.392,878,3.705,879,3.705,880,3.705,905,4.222,910,3.923,911,6.128,3395,4.222,3427,7.528,3428,8.659,3429,7.528,3430,7.528,3431,7.528,3432,7.528,3433,7.528,3434,5.543,3435,5.543,3436,4.818,3437,7.528,3438,5.36,3439,5.36,3440,5.36,3441,4.818,3442,4.818,3443,4.818,3444,5.36,3445,5.36,3446,5.543,3447,9.262,3448,4.818,3449,4.818,3450,5.06,3451,7.527,3452,4.818,3453,7.527,3454,7.527,3455,5.06,3456,5.543,3457,5.543,3458,4.818]],["keywords/965",[]],["title/966",[11,211.281,233,204.037,302,195.617,315,262.763,755,562.237,756,755.984]],["content/966",[53,3.128,682,10.814,721,14.644]],["keywords/966",[]],["title/967",[225,603.628]],["content/967",[220,14.217,546,7.788,834,12.299,3393,13.203]],["keywords/967",[]],["title/968",[317,355.985,705,413.216]],["content/968",[1,2.092,14,3.121,30,4.073,53,1.753,60,3.149,67,3.361,68,2.596,71,4.131,108,3.185,118,4.115,119,4.665,120,4.008,185,3.64,233,4.189,296,2.577,311,5.888,317,1.805,354,2.788,356,3.44,358,5.781,379,2.467,470,2.709,519,2.567,563,4.329,588,3.323,628,2.646,680,3.768,681,4.739,682,3.823,684,2.646,685,3.795,686,3.38,687,3.795,722,4.717,723,6.544,724,8.027,725,3.768,726,5.808,727,4.077,728,4.312,729,4.402,730,3.524,731,4.312,732,3.943,736,5.314,737,5.327,738,6.06,739,4.15,740,4.726,741,5.178,757,3.715,758,5.274,759,5.007,783,3.168,878,3.46,879,3.46,880,3.46,905,3.943,910,3.664,911,7.215,3395,3.943,3397,4.402,3428,8.206,3434,5.178,3435,5.178,3436,4.5,3438,5.007,3439,5.007,3440,5.007,3441,4.5,3442,4.5,3443,4.5,3444,5.007,3445,5.007,3446,5.178,3447,7.133,3448,4.5,3449,4.5,3451,7.133,3452,4.5,3453,7.133,3454,7.133,3455,4.726,3456,5.178,3457,5.178,3458,4.5,3459,5.378,3460,5.378,3461,5.378,3462,5.378,3463,5.378,3464,5.378,3465,5.622]],["keywords/968",[]],["title/969",[138,615.505,302,324.255]],["content/969",[53,3.167,721,14.829]],["keywords/969",[]],["title/970",[317,355.985,705,413.216]],["content/970",[1,0.959,30,3.937,53,1.79,233,2.776,356,3.533,358,3.015,470,2.783,519,2.637,563,4.422,628,2.718,684,2.718,722,4.818,723,6.659,724,6.6,726,5.932,734,3.815,735,3.815,736,6.137,737,5.441,741,5.318,783,3.254,878,3.554,879,3.554,880,3.554,905,6.383,910,5.932,911,9.066,3395,4.05,3397,4.522,3428,8.382,3434,5.318,3435,8.382,3436,11.135,3438,5.142,3439,5.142,3440,5.142,3441,7.286,3442,7.286,3443,7.286,3444,8.105,3445,8.105,3446,5.318,3447,11.135,3448,7.286,3449,7.286,3450,4.854,3451,10.234,3452,9.017,3453,10.234,3454,10.234,3455,9.469,3456,5.318,3457,5.318,3458,7.286,3459,5.524,3460,5.524,3461,5.524,3462,5.524,3463,5.524,3464,5.524,3465,5.774,3466,5.774,3467,10.287,3468,6.527,3469,6.527,3470,6.527,3471,6.527,3472,6.527,3473,7.222,3474,10.287,3475,5.524,3476,7.222,3477,7.222,3478,7.222,3479,7.222,3480,5.318]],["keywords/970",[]],["title/971",[302,388.052]],["content/971",[53,3.167,772,14.829]],["keywords/971",[]],["title/972",[225,603.628]],["content/972",[60,5.29,221,9.444,296,6.862,302,4.378,487,9.444,1438,9.824,2106,9.757,3481,13.332]],["keywords/972",[]],["title/973",[317,355.985,705,413.216]],["content/973",[1,1.375,30,3.85,53,2.351,233,2.526,356,5.066,358,4.324,470,3.991,519,3.781,563,4.023,628,3.898,684,3.898,722,4.383,723,7.065,724,8.667,726,5.397,736,5.737,737,4.95,783,4.667,878,5.096,879,5.096,880,5.096,905,5.807,910,5.397,911,9.141,3395,5.807,3397,6.484,3428,11.007,3434,7.625,3435,7.625,3436,6.628,3438,7.374,3439,7.374,3440,7.374,3441,6.628,3442,6.628,3443,6.628,3444,7.374,3445,7.374,3446,7.625,3447,9.567,3448,6.628,3449,6.628,3451,9.567,3452,6.628,3453,9.567,3454,9.567,3455,6.96,3456,7.625,3457,7.625,3458,6.628,3459,7.921,3460,7.921,3461,7.921,3462,7.921,3463,7.921,3464,7.921,3465,8.28,3482,8.735]],["keywords/973",[]],["title/974",[302,324.255,715,678.332]],["content/974",[53,3.128,715,9.729,772,14.644]],["keywords/974",[]],["title/975",[225,603.628]],["content/975",[60,4.167,84,8.552,198,5.509,221,7.44,233,4.645,296,5.406,302,4.931,487,7.44,647,7.778,667,6.025,705,4.396,709,8.552,722,8.06,736,7.309,1438,7.739,2106,7.687,3259,11.794,3261,11.794,3263,11.794,3393,14.978,3415,11.283,3481,10.503]],["keywords/975",[]],["title/976",[317,355.985,705,413.216]],["content/976",[30,4.11,53,1.849,60,2.127,67,3.598,68,2.78,71,2.79,108,3.41,118,4.342,162,3.172,185,3.897,233,2.868,296,2.759,338,2.21,354,2.985,356,3.683,379,2.641,470,2.901,519,2.749,563,4.568,588,3.558,628,2.833,684,2.833,685,4.063,686,3.619,687,4.063,715,3.683,722,4.977,723,8.387,724,8.39,725,4.034,726,6.128,727,4.365,728,4.616,729,4.713,730,3.773,731,4.616,732,4.222,733,4.443,734,6.213,735,6.213,736,5.554,737,5.621,738,6.394,739,4.443,740,5.06,783,3.392,878,3.705,879,3.705,880,3.705,905,4.222,910,3.923,911,6.128,3395,4.222,3428,8.659,3434,5.543,3435,5.543,3436,4.818,3438,5.36,3439,5.36,3440,5.36,3441,4.818,3442,4.818,3443,4.818,3444,5.36,3445,5.36,3446,5.543,3447,9.262,3448,4.818,3449,4.818,3450,5.06,3451,4.818,3452,4.818,3453,7.527,3454,7.527,3455,5.06,3456,5.543,3457,5.543,3458,4.818,3459,5.758,3460,5.758,3461,5.758,3462,5.758,3463,5.758,3464,5.758,3465,6.019,3482,6.35,3483,6.803]],["keywords/976",[]],["title/977",[133,600.748,302,324.255]],["content/977",[53,3.128,133,8.616,772,14.644]],["keywords/977",[]],["title/978",[225,603.628]],["content/978",[60,5.29,221,9.444,296,6.862,302,4.378,487,9.444,1438,9.824,2106,9.757,3481,13.332]],["keywords/978",[]],["title/979",[317,355.985,705,413.216]],["content/979",[30,3.85,53,2.351,133,4.487,233,2.526,356,5.066,470,3.991,519,3.781,563,4.023,628,3.898,684,3.898,722,4.383,723,8.291,724,8.667,726,5.397,734,5.471,735,5.471,736,5.737,737,4.95,783,4.667,878,5.096,879,5.096,880,5.096,905,5.807,910,5.397,911,7.79,3395,5.807,3428,11.007,3438,7.374,3439,7.374,3440,7.374,3441,6.628,3442,6.628,3443,6.628,3444,7.374,3445,7.374,3446,7.625,3447,11.227,3448,6.628,3449,6.628,3450,6.96,3451,6.628,3452,6.628,3453,9.567,3454,9.567,3455,6.96,3456,7.625,3457,7.625,3458,6.628,3459,7.921,3460,7.921,3461,7.921,3462,7.921,3463,7.921,3464,7.921,3482,8.735,3483,9.359,3484,10.356,3485,10.356]],["keywords/979",[]],["title/980",[138,528.602,302,278.474,461,550.765]],["content/980",[53,3.167,774,18.2]],["keywords/980",[]],["title/981",[317,355.985,705,413.216]],["content/981",[30,4.11,53,2.995,93,10.131,356,7.216,470,5.684,519,5.386,563,5.73,628,5.552,684,5.552,737,7.051,775,13.331,779,11.794,781,15.225,783,6.647,878,7.259,879,7.259,880,7.259,3395,8.272,3466,11.794,3486,17.209]],["keywords/981",[]],["title/982",[302,324.255,461,641.312]],["content/982",[53,3.167,784,18.2]],["keywords/982",[]],["title/983",[225,603.628]],["content/983",[60,5.29,221,9.444,296,6.862,302,4.378,487,9.444,1438,9.824,2106,9.757,3481,13.332]],["keywords/983",[]],["title/984",[317,355.985,705,413.216]],["content/984",[30,4.065,53,3.013,93,10.192,356,7.283,470,5.737,519,5.436,563,5.783,628,5.603,684,5.603,737,7.116,779,11.903,781,15.316,783,6.709,878,7.327,879,7.327,880,7.327,3395,8.349,3466,11.903,3486,17.312,3487,14.888]],["keywords/984",[]],["title/985",[302,244.021,647,426.205,680,559.163,681,443.705]],["content/985",[]],["keywords/985",[]],["title/986",[302,278.474,315,374.061,647,486.381]],["content/986",[53,3.128,682,10.814,827,15.901]],["keywords/986",[]],["title/987",[225,603.628]],["content/987",[30,1.166,60,6.209,67,5.254,79,4.928,80,3.266,84,4.006,198,2.581,225,6.596,233,3.338,234,6.318,249,6.429,251,5.767,266,5.285,269,3.906,296,6.645,302,4.873,313,3.13,314,3.023,338,3.227,394,4.528,526,4.528,527,5.902,548,7.117,557,5.933,588,5.195,623,8.42,647,7.406,681,2.938,705,4.079,709,6.373,722,2.925,725,5.89,730,5.509,736,6.535,738,3.757,834,8.569,1384,4.528,1438,9.514,1911,4.373,1975,8.569,2106,12.061,3259,8.788,3261,8.788,3263,10.943,3393,11.444,3414,5.828,3415,10.469,3417,8.788,3421,6.245,3422,5.666,3423,5.828,3424,6.245,3425,6.245,3488,6.245,3489,6.91,3490,6.91]],["keywords/987",[]],["title/988",[317,355.985,705,413.216]],["content/988",[0,1.923,22,4.842,30,4.196,53,1.303,60,4.625,67,2.342,68,1.809,71,3.071,108,6.414,118,3.06,185,2.536,225,3.014,233,2.021,251,5.65,269,6.087,296,1.795,302,1.938,338,1.438,354,1.942,356,2.396,379,1.718,470,1.888,519,1.789,527,4.643,548,5.365,563,3.219,588,2.315,623,10.009,628,1.844,647,5.173,682,2.664,684,1.844,685,2.644,686,2.355,687,2.644,722,3.507,723,7.266,725,2.625,726,4.318,727,2.84,730,2.455,732,4.647,733,2.891,734,4.378,735,4.378,736,3.18,737,3.961,738,4.505,739,4.89,783,2.207,828,7.549,829,3.747,830,6.892,831,3.747,832,6.338,833,6.101,834,5.188,835,3.917,836,3.917,837,3.917,878,2.411,879,2.411,880,2.411,905,2.747,910,2.553,911,4.318,3395,2.747,3397,3.067,3441,3.135,3442,3.135,3443,3.135,3447,6.892,3448,3.135,3449,3.135,3450,3.292,3451,5.303,3452,5.303,3453,5.303,3454,5.303,3458,3.135,3480,3.607,3491,3.917,3492,4.427,3493,3.917,3494,3.917,3495,3.917,3496,8.609,3497,3.917,3498,8.609,3499,3.917,3500,3.917,3501,3.917,3502,3.917,3503,3.917,3504,3.917,3505,3.917,3506,12.291,3507,10.126,3508,3.917,3509,3.917,3510,6.625,3511,3.917,3512,3.917,3513,3.917,3514,3.917,3515,3.917,3516,3.917,3517,7.488,3518,7.488,3519,7.488]],["keywords/988",[]],["title/989",[138,528.602,302,278.474,647,486.381]],["content/989",[53,3.167,827,16.101]],["keywords/989",[]],["title/990",[317,355.985,705,413.216]],["content/990",[0,1.668,22,4.336,30,4.175,53,1.784,60,2.031,108,5.137,225,2.615,233,1.754,302,1.681,356,3.517,470,2.77,519,2.625,563,2.793,623,9.956,628,2.706,647,4.633,684,2.706,722,3.043,723,6.64,726,3.747,734,3.798,735,3.798,736,2.759,737,3.437,783,3.24,828,5.041,830,4.602,833,5.294,834,4.501,837,5.748,878,3.538,879,3.538,880,3.538,905,4.032,910,3.747,911,5.911,3395,4.032,3397,4.501,3441,4.602,3442,4.602,3443,4.602,3447,8.991,3448,4.602,3449,4.602,3450,4.832,3451,7.26,3452,7.26,3453,7.26,3454,7.26,3458,4.602,3480,5.294,3491,5.748,3492,6.497,3493,5.748,3494,5.748,3495,5.748,3496,11.231,3497,5.748,3498,11.231,3499,5.748,3500,5.748,3501,5.748,3502,5.748,3503,5.748,3504,5.748,3505,5.748,3506,14.748,3507,12.752,3508,5.748,3509,5.748,3510,9.069,3511,5.748,3512,5.748,3513,5.748,3514,5.748,3515,5.748,3516,5.748,3517,10.251,3518,10.251,3519,10.251]],["keywords/990",[]],["title/991",[302,278.474,647,486.381,715,582.559]],["content/991",[53,3.128,715,9.729,3520,17.973]],["keywords/991",[]],["title/992",[225,603.628]],["content/992",[60,5.88,221,7.24,225,6.805,296,5.26,302,5.157,527,6.189,548,12.113,623,10.098,647,9.008,736,5.509,834,11.713,1438,7.531,1975,8.987,2106,10.846,3393,15.372,3488,12.972]],["keywords/992",[]],["title/993",[317,355.985,705,413.216]],["content/993",[0,1.928,7,3.201,22,4.851,30,4.186,53,1.306,60,4.632,67,2.349,68,1.814,71,3.079,108,6.974,118,3.067,185,2.543,225,3.022,233,2.026,251,5.662,269,6.101,296,1.801,302,1.943,338,1.442,354,1.948,356,2.404,379,1.724,470,1.893,519,1.794,527,4.654,548,5.379,563,3.227,588,2.323,623,10.021,628,1.849,647,5.794,684,1.849,685,2.652,686,2.362,687,2.652,715,2.404,722,3.516,723,7.75,725,2.633,726,4.329,727,2.849,730,2.463,732,4.659,733,2.9,734,4.389,735,4.389,736,3.189,737,3.971,738,4.517,739,4.903,783,2.214,828,7.566,829,3.759,830,6.907,831,3.759,832,6.354,833,6.117,834,5.201,835,3.929,836,3.929,839,3.759,878,2.418,879,2.418,880,2.418,905,2.756,910,2.561,911,4.329,3395,2.756,3397,3.076,3441,3.145,3442,3.145,3443,3.145,3447,6.907,3448,3.145,3449,3.145,3450,3.303,3451,5.317,3452,5.317,3453,5.317,3454,5.317,3455,5.584,3458,3.145,3480,3.618,3491,3.929,3493,3.929,3494,3.929,3495,3.929,3496,8.629,3497,3.929,3498,8.629,3499,3.929,3500,3.929,3501,3.929,3502,3.929,3503,3.929,3504,3.929,3505,3.929,3506,12.31,3507,10.146,3508,3.929,3509,3.929,3510,6.642,3511,3.929,3512,3.929,3513,3.929,3514,3.929,3515,3.929,3516,3.929,3521,4.441]],["keywords/993",[]],["title/994",[133,515.929,302,278.474,647,486.381]],["content/994",[53,3.128,133,8.616,3520,17.973]],["keywords/994",[]],["title/995",[225,603.628]],["content/995",[60,6.149,221,9.228,296,6.705,302,4.278,527,7.889,647,7.472,1438,9.599,1975,11.454,2106,9.534]],["keywords/995",[]],["title/996",[317,355.985,705,413.216]],["content/996",[0,1.683,7,2.796,22,4.367,30,4.146,53,1.797,60,2.05,108,6.4,133,3.143,225,2.639,233,1.77,302,1.696,356,3.549,519,2.649,563,2.818,623,9.995,628,2.73,647,5.771,684,2.73,722,3.071,723,7.576,726,3.781,734,3.833,735,3.833,736,2.784,737,3.468,783,3.269,828,5.086,830,4.643,833,5.342,834,4.542,839,5.549,878,3.57,879,3.57,880,3.57,905,4.068,910,3.781,911,5.953,3395,4.068,3397,4.542,3441,4.643,3442,4.643,3443,4.643,3447,9.044,3448,4.643,3449,4.643,3450,4.876,3451,7.312,3452,7.312,3453,7.312,3454,7.312,3455,7.678,3458,4.643,3480,5.342,3491,5.8,3493,5.8,3494,5.8,3495,5.8,3496,11.297,3497,5.8,3498,11.297,3499,5.8,3500,5.8,3501,5.8,3502,5.8,3503,5.8,3504,5.8,3505,5.8,3506,14.805,3507,12.816,3508,5.8,3509,5.8,3510,9.133,3511,5.8,3512,5.8,3513,5.8,3514,5.8,3515,5.8,3516,5.8,3521,6.556,3522,7.255]],["keywords/996",[]],["title/997",[11,263.561,302,244.021,315,327.782,647,426.205]],["content/997",[53,3.128,682,10.814,840,17.973]],["keywords/997",[]],["title/998",[225,603.628]],["content/998",[60,6.476,221,8.033,225,5.793,296,5.836,302,5.111,619,7.177,647,8.167,832,12.182,841,12.443,1438,8.356,2106,11.39,3393,13.439,3415,12.182,3523,15.926]],["keywords/998",[]],["title/999",[317,355.985,705,413.216]],["content/999",[30,4.019,53,2.159,60,2.605,108,6.218,185,4.773,233,2.249,296,3.379,356,4.511,470,3.553,519,3.367,563,3.582,628,3.471,647,3.766,682,5.014,684,3.471,685,4.977,686,4.433,687,4.977,722,3.903,723,7.752,726,4.805,734,4.872,735,4.872,736,5.269,737,4.408,783,4.155,841,7.205,842,8.333,843,8.333,844,8.333,845,8.333,878,4.538,879,4.538,880,4.538,905,5.171,910,4.805,911,7.154,3395,5.171,3434,6.79,3435,6.79,3436,5.902,3438,6.566,3439,6.566,3440,6.566,3441,5.902,3442,5.902,3443,5.902,3444,6.566,3445,6.566,3447,10.497,3448,5.902,3449,5.902,3450,6.198,3451,8.787,3452,8.787,3453,8.787,3454,8.787,3455,9.227,3458,5.902,3466,7.373,3467,12.407,3468,8.333,3469,8.333,3470,8.333,3471,8.333,3472,8.333,3474,8.333,3480,6.79]],["keywords/999",[]],["title/1000",[1230,790.393,2046,1003.544]],["content/1000",[]],["keywords/1000",[]],["title/1001",[485,1062.11]],["content/1001",[11,4.146,78,8.555,209,11.881,302,3.839,317,4.215,485,10.507,628,7.669,631,11.183,681,6.98,1203,10.067,1230,12.631,2046,16.037,3524,14.836,3525,14.836,3526,11.881]],["keywords/1001",[]],["title/1002",[317,426.023]],["content/1002",[0,4.147,1,1.778,19,5.288,22,5.12,30,3.394,41,4.926,53,2.106,80,6.33,177,6.365,195,7.904,223,7.026,563,5.202,628,5.04,705,3.991,959,12.594,1230,7.633,1232,11.662,1647,9.692,2046,9.692,2493,12.654,3059,11.296,3384,12.102,3385,12.102,3524,12.102,3525,12.102,3526,9.692,3527,13.67,3528,10.982,3529,12.654,3530,20.115,3531,13.392,3532,13.392,3533,12.654,3534,13.392]],["keywords/1002",[]],["title/1003",[1885,1038.958]],["content/1003",[]],["keywords/1003",[]],["title/1004",[233,254.525,234,599.845,341,660.459,3554,1043.535]],["content/1004",[]],["keywords/1004",[]],["title/1005",[233,338.213,234,797.075]],["content/1005",[25,8.319,30,3.552,120,9.864,181,6.136,236,9.34,302,4.047,461,8.004,1440,14.596,1885,10.835,2416,15.07,3555,21.048,3556,15.639,3557,15.639]],["keywords/1005",[]],["title/1006",[317,426.023]],["content/1006",[30,4.171,53,2.071,60,3.721,67,6.296,68,4.863,71,4.882,118,4.863,233,3.213,338,3.866,354,7.008,379,4.62,563,5.116,588,6.225,722,5.575,723,8.354,725,7.058,726,6.864,728,8.077,730,6.602,731,8.077,732,7.386,733,7.774,734,6.958,735,6.958,736,5.055,738,7.162,770,8.077,1885,8.246,3558,13.171,3559,13.171,3560,13.171]],["keywords/1006",[]],["title/1007",[274,780.355,1885,745.578,3557,1076.194]],["content/1007",[154,10.226,155,7.587,195,12.758,236,9.763,302,4.23,538,12.322,620,13.836,1885,13.534,3556,16.347]],["keywords/1007",[]],["title/1008",[88,382.545,680,638.111,681,506.352]],["content/1008",[]],["keywords/1008",[]],["title/1009",[88,382.545,315,374.061,851,559.771]],["content/1009",[53,3.128,682,10.814,883,15.901]],["keywords/1009",[]],["title/1010",[225,603.628]],["content/1010",[60,5.773,67,7.882,80,5.623,84,9.561,88,6.564,118,4.393,198,4.443,233,4.616,234,6.839,296,6.935,302,2.782,313,5.389,314,5.204,429,4.159,487,6.001,546,4.717,647,4.859,681,5.059,709,9.561,722,5.035,736,6.329,885,10.035,1438,9.929,1975,7.449,2106,11.183,3393,7.996,3414,10.035,3415,9.1,3417,9.512,3423,10.035,3535,16.49,3536,16.49,3537,16.49,3538,11.897]],["keywords/1010",[]],["title/1011",[317,355.985,705,413.216]],["content/1011",[30,4.121,53,2.114,60,3.797,67,4.284,68,3.309,72,5.768,88,5.755,118,3.309,185,4.639,233,3.278,296,3.285,315,2.815,356,4.385,358,5.612,470,3.454,519,3.272,628,3.373,682,4.873,684,3.373,685,4.838,686,4.309,687,4.838,690,4.873,693,5.29,700,5.29,722,5.689,730,4.492,736,6.189,783,4.039,851,6.318,878,4.411,879,4.411,880,4.411,884,11.14,885,7.56,886,8.1,887,7.56,888,7.56,889,8.1,890,7.35,892,9.57,898,6.382,899,8.1,900,7.166,904,6.382,905,5.026,906,6.192,907,6.192,908,6.192,910,4.671,911,4.671,2826,6.284,3400,6.024,3409,6.722,3410,6.856,3436,5.737,3475,6.856,3539,7.166,3540,7.166,3541,7.166,3542,7.166,3543,7.166,3544,7.166,3545,7.166,3546,7.166,3547,7.166,3548,7.166]],["keywords/1011",[]],["title/1012",[88,298.309,138,412.205,429,324.605,851,436.51,914,710.31]],["content/1012",[53,3.167,883,16.101]],["keywords/1012",[]],["title/1013",[225,603.628]],["content/1013",[60,5.29,296,6.862,429,6.545,487,9.444,1438,9.824,1737,15.354,2106,9.757,3481,13.332]],["keywords/1013",[]],["title/1014",[317,355.985,705,413.216]],["content/1014",[30,3.938,53,2.515,88,5.138,233,2.778,356,5.571,358,4.755,470,4.389,519,4.158,628,4.286,684,4.286,690,6.192,693,6.722,700,6.722,722,4.82,736,6.139,783,5.132,851,5.353,878,5.605,879,5.605,880,5.605,884,11.05,892,11.389,898,8.109,904,8.109,905,6.387,906,7.868,907,7.868,908,7.868,910,5.935,911,5.935,916,10.292,2826,7.985,3400,7.654,3409,8.541,3410,8.711,3436,7.289,3475,8.711,3539,9.105,3540,9.105,3541,9.105,3542,9.105,3543,9.105,3544,9.105,3545,9.105,3546,9.105,3547,9.105,3548,9.105,3549,11.389,3550,10.292,3551,10.292]],["keywords/1014",[]],["title/1015",[88,445.436,851,651.798]],["content/1015",[53,3.167,918,16.101]],["keywords/1015",[]],["title/1016",[225,603.628]],["content/1016",[60,5.29,88,6.015,221,9.444,296,6.862,487,9.444,1438,9.824,2106,9.757,3481,13.332]],["keywords/1016",[]],["title/1017",[317,355.985,705,413.216]],["content/1017",[30,3.881,53,2.528,88,5.164,233,2.798,356,5.611,358,4.789,470,4.42,519,4.188,628,4.317,684,4.317,690,6.237,693,6.77,700,6.77,722,4.855,736,6.17,783,5.169,851,5.392,878,5.645,879,5.645,880,5.645,884,11.106,892,11.446,898,8.167,904,8.167,905,6.432,906,7.924,907,7.924,908,7.924,910,5.977,911,5.977,920,10.366,2826,8.042,3400,7.709,3409,8.603,3410,8.774,3436,7.341,3475,8.774,3539,9.171,3540,9.171,3541,9.171,3542,9.171,3543,9.171,3544,9.171,3545,9.171,3546,9.171,3547,9.171,3548,9.171,3550,10.366,3551,10.366,3552,10.366]],["keywords/1017",[]],["title/1018",[88,382.545,133,515.929,851,559.771]],["content/1018",[53,3.128,133,8.616,918,15.901]],["keywords/1018",[]],["title/1019",[225,603.628]],["content/1019",[60,5.29,88,6.015,221,9.444,296,6.862,487,9.444,1438,9.824,2106,9.757,3481,13.332]],["keywords/1019",[]],["title/1020",[317,355.985,705,413.216]],["content/1020",[30,3.853,53,2.478,88,5.871,133,4.831,233,2.72,356,5.455,358,4.656,470,4.297,519,4.071,628,4.197,684,4.197,690,6.063,693,6.581,700,6.581,722,4.719,736,6.048,783,5.025,851,7.407,878,5.487,879,5.487,880,5.487,881,10.077,884,10.887,892,11.22,898,7.939,900,8.915,904,7.939,905,6.253,906,7.703,907,7.703,908,7.703,910,5.811,911,5.811,926,9.405,2826,7.817,3400,7.494,3409,8.363,3410,8.529,3436,7.137,3475,8.529,3539,8.915,3540,8.915,3541,8.915,3542,8.915,3543,8.915,3544,8.915,3545,8.915,3546,8.915,3547,8.915,3548,8.915,3552,10.077,3553,11.151]],["keywords/1020",[]],["title/1021",[272,833.796,302,324.255]],["content/1021",[]],["keywords/1021",[]],["title/1022",[1903,972.16,3561,1253.121]],["content/1022",[1,2.516,102,5.732,272,11.392,291,6.816,302,4.43,315,5.951,461,8.762]],["keywords/1022",[]],["title/1023",[30,176.087,671,720.918,724,605.026,3562,1043.535]],["content/1023",[1,2.347,30,4.105,53,1.65,60,2.964,67,5.015,68,3.874,71,5.593,108,4.752,118,5.571,225,3.816,233,2.559,272,6.309,302,4.518,313,4.752,314,6.6,315,3.296,317,2.694,338,3.08,354,4.16,379,3.68,423,5.98,480,6.031,497,7.147,563,4.076,588,4.959,681,4.461,722,4.441,723,7.132,724,6.083,725,5.622,726,5.467,727,6.083,728,6.434,729,6.569,730,5.259,731,6.434,732,5.884,733,6.192,734,5.543,735,5.543,736,5.791,737,5.015,738,8.205,739,8.906,959,6.569,1935,6.25,3282,8.388,3561,9.482,3563,10.492]],["keywords/1023",[]],["title/1024",[30,141.158,671,577.917,724,485.013,3282,668.821,3564,836.54,3565,541.641]],["content/1024",[1,2.418,30,4.051,53,1.741,60,3.128,67,5.293,68,4.089,108,5.015,118,4.089,162,4.665,225,4.028,233,2.701,302,4.887,313,5.015,314,6.859,317,2.843,338,3.251,354,4.39,379,3.884,423,6.312,480,6.365,487,7.909,497,7.543,563,4.301,588,5.234,681,4.708,715,5.417,722,4.687,723,7.412,724,6.42,725,5.933,726,5.77,727,6.42,728,6.79,729,6.933,730,5.55,731,6.79,732,6.21,733,6.535,734,5.85,735,5.85,736,6.019,738,6.021,739,6.535,1935,6.596,3282,8.853,3566,11.073]],["keywords/1024",[]],["title/1025",[30,176.087,671,720.918,3565,675.665,3567,1043.535]],["content/1025",[1,2.724,30,2.799,53,2.609,225,6.034,302,5.206,314,8.971,317,4.258,423,11.69,487,11.229,1860,13.991,1935,9.88,3568,16.587]],["keywords/1025",[]],["title/1026",[30,176.087,3569,1043.535,3570,1043.535,3571,943.046]],["content/1026",[0,3.849,1,2.203,30,2.799,53,2.609,69,7.291,133,7.186,138,9.103,225,6.034,302,5.206,315,5.21,317,4.258,429,5.798,750,10.869,1935,9.88,3572,13.991,3573,16.587]],["keywords/1026",[]],["title/1027",[30,176.087,671,720.918,3565,675.665,3574,1043.535]],["content/1027",[1,2.984,53,2.664,133,9,225,6.161,302,5.255,314,7.409,317,4.349,423,9.655,487,10.478,1935,10.09,3575,16.939]],["keywords/1027",[]],["title/1028",[30,141.158,74,461.795,3565,541.641,3576,836.54,3577,836.54,3578,836.54]],["content/1028",[1,1.977,22,5.692,53,2.341,68,7.073,84,12.966,95,7.416,225,5.416,302,4.48,317,3.822,354,5.903,423,8.486,461,10.343,487,7.509,619,6.709,771,12.404,1935,8.868,2408,17.312,3579,14.888,3580,14.888,3581,14.888]],["keywords/1028",[]],["title/1029",[30,176.087,3565,675.665,3571,943.046,3582,1043.535]],["content/1029",[0,3.809,1,2.18,30,2.77,53,2.582,69,7.216,133,7.112,138,9.045,225,5.972,302,4.765,315,5.157,317,4.215,461,10.249,750,10.758,1935,9.779,3572,13.847,3583,16.417]],["keywords/1029",[]],["title/1030",[30,141.158,671,577.917,3565,541.641,3584,836.54,3585,836.54,3586,836.54]],["content/1030",[1,2.591,30,2.584,53,2.409,69,6.732,168,8.659,225,5.571,302,5.285,317,3.932,396,9.803,461,9.022,487,7.725,543,11.278,984,10.294,1159,10.294,1647,11.085,1720,10.036,1935,9.123,3587,15.316,3588,15.316,3589,15.316,3590,15.316,3591,15.316]],["keywords/1030",[]],["title/1031",[272,833.796,670,486.423]],["content/1031",[]],["keywords/1031",[]],["title/1032",[1903,972.16,3526,1003.544]],["content/1032",[1,2.375,30,3.018,225,6.506,291,6.435,461,8.272,556,13.17,645,8.272,670,6.274,681,7.605,1599,13.974,1771,10.37,3527,13.681]],["keywords/1032",[]],["title/1033",[3527,910.886,4264,1290.533,4265,1290.533]],["content/1033",[0,4.366,1,2.776,30,2.444,53,2.278,181,6.673,225,5.268,317,3.718,625,15.046,644,9.734,851,8.846,959,9.068,1334,17.007,1465,12.614,1935,8.627,3526,10.482,3527,15.99,4266,15.696,4267,15.696,4268,15.696,4269,15.696,4270,15.696]],["keywords/1033",[]],["title/1034",[0,276.306,995,910.886,4271,1290.533]],["content/1034",[0,5.117,7,5.531,22,5.487,23,7.543,32,6.219,43,6.9,60,4.055,233,3.501,234,8.251,254,7.531,302,3.356,314,6.278,355,7.286,461,6.638,487,9.436,563,7.267,846,8.471,995,14.31,1440,12.107,1558,9.406,1935,8.55,2003,8.396,2046,10.388,4272,15.555,4273,15.555,4274,15.555,4275,15.555]],["keywords/1034",[]],["title/1035",[74,657.396,251,624.804,4276,1290.533]],["content/1035",[0,4.582,1,2.074,30,3.655,53,2.456,225,8.279,251,8.193,290,8.137,317,4.009,361,8.62,461,7.222,846,9.216,959,9.776,1920,14.112,3526,11.301,3527,15.105,3528,12.805,3529,14.755,4277,16.922]],["keywords/1035",[]],["title/1036",[74,765.473,4278,1502.698]],["content/1036",[0,4.445,1,1.977,30,3.774,53,2.341,225,5.416,251,7.811,317,3.822,361,8.219,371,9.423,392,10.775,461,6.886,828,10.438,841,16.549,959,9.321,1920,13.455,2106,7.758,3526,10.775,3527,14.653,3528,12.209,3829,13.455,4279,16.134,4280,16.134,4281,16.134]],["keywords/1036",[]],["title/1037",[74,512.638,251,487.222,290,483.915,4282,1006.359,4283,928.642]],["content/1037",[0,4.341,1,1.906,30,3.721,53,2.257,60,4.055,68,5.3,225,5.221,251,7.531,290,7.48,317,3.685,361,7.924,461,6.638,622,7.986,846,8.471,959,8.987,1771,12.787,2184,12.972,2583,13.562,3526,10.388,3527,14.31,3528,11.77,3533,13.562,4284,15.555,4285,15.555,4286,14.354,4287,14.354]],["keywords/1037",[]],["title/1038",[74,576.062,1771,605.026,4283,1043.535,4288,1130.867]],["content/1038",[0,4.101,1,1.749,30,3.752,53,2.071,225,4.791,230,6.602,251,6.91,317,3.381,345,8.739,361,7.271,461,9.226,622,9.833,959,8.246,1075,8.077,1465,7.508,1771,12.892,2106,6.864,2583,12.445,3422,10.801,3526,9.532,3527,13.519,3528,10.801,3829,11.903,4286,13.171,4287,13.171,4289,14.274,4290,14.274,4291,14.274,4292,14.274,4293,14.274,4294,14.274]],["keywords/1038",[]],["title/1039",[670,293.449,3674,836.54,3678,836.54,4295,755.984,4296,906.548,4297,906.548]],["content/1039",[665,12.433,670,7.96,1525,11.594]],["keywords/1039",[]],["title/1040",[5,374.424,60,262.345,4295,839.217,4298,1006.359,4299,1006.359]],["content/1040",[670,7.96,1525,11.594,2048,18.561]],["keywords/1040",[]],["title/1041",[60,262.345,74,512.638,1174,928.642,4295,839.217,4300,1006.359]],["content/1041",[7,7.57,60,5.55,670,6.891,719,9.785]],["keywords/1041",[]],["title/1042",[5,374.424,60,262.345,74,512.638,4295,839.217,4301,1006.359]],["content/1042",[133,8.511,670,7.96,1525,11.594]],["keywords/1042",[]],["title/1043",[1,184.147,1797,690.727]],["content/1043",[]],["keywords/1043",[]],["title/1044",[734,876.701]],["content/1044",[1,2.203,155,6.957,224,7.754,379,5.819,434,9.88,534,9.302,535,8.761,586,9.014,589,13.991,590,14.99,631,11.299,681,7.053,1153,10.498,1230,9.455,1798,20.119]],["keywords/1044",[]],["title/1045",[379,417.745,535,508.702,1797,593.203]],["content/1045",[]],["keywords/1045",[]],["title/1046",[34,1130.435]],["content/1046",[0,2.5,1,2.597,19,4.254,30,3.49,53,1.694,54,8.974,60,3.044,72,7.697,233,2.628,280,7.242,303,6.819,315,3.384,361,5.948,434,10.683,527,4.646,535,4.603,995,8.242,1023,10.715,1082,7.149,1104,5.859,1211,8.418,1256,14.706,1507,11.752,1510,11.875,1781,9.088,2691,12.016,3232,8.615,3592,10.775,3593,13.899,3595,17.636,3596,16.207,3598,10.775,4302,16.667]],["keywords/1046",[]],["title/1047",[24,399.849,2691,1083.373]],["content/1047",[0,4.341,1,1.906,11,3.625,19,5.667,24,4.139,43,6.9,53,2.257,202,10.979,231,8.396,232,6.435,233,3.501,254,7.531,278,8.802,295,9.187,379,5.035,429,6.54,535,6.131,574,9.294,645,6.638,1028,5.089,1309,9.085,1396,12.5,1425,9.187,1797,7.15,2142,12.107,2539,13.562,2691,14.617,3600,18.709,3601,14.354,3602,14.354]],["keywords/1047",[]],["title/1048",[705,413.216,1218,1108.641]],["content/1048",[0,2.74,1,1.568,11,5.144,19,4.663,30,2.768,53,2.964,75,7.394,77,5.521,161,9.442,257,8.728,280,13.69,296,4.328,379,5.755,407,13.837,546,4.682,553,8.158,705,3.519,959,7.394,1023,8.987,1027,6.788,1183,6.788,1218,9.442,1256,13.453,1267,5.812,2336,10.672,3593,14.825,3596,10.672,3603,11.809,3604,11.809,3605,11.809,3606,11.809,3607,11.809,3608,11.809,3609,11.809,3610,11.809,3611,11.809,3612,11.809,3613,11.809,3614,11.809,3615,11.809,3616,16.405,3617,11.809]],["keywords/1048",[]],["title/1049",[72,595.104,2315,1060.637]],["content/1049",[0,5.159,1,2.347,11,3.327,15,5.966,16,7.058,32,5.706,53,3.137,58,7.162,72,9.149,73,11.109,78,6.864,79,5.905,80,6.225,102,3.985,535,5.626,570,6.729,601,8.336,1027,7.571,1028,4.67,1220,12.585,1512,15.973,2315,15.258,2332,12.585,3232,10.531,3618,19.948,3619,17.675]],["keywords/1049",[]],["title/1050",[254,547.502,379,366.061,1797,519.812,2142,880.179]],["content/1050",[0,3.623,1,2.074,5,6.296,11,4.988,14,6.931,78,8.137,102,4.725,154,8.828,254,10.361,258,6.83,272,9.39,569,7.977,681,8.397,972,9.301,1023,8.555,1104,8.491,1797,7.778,2691,12.2,3620,15.615,3639,15.615,4303,16.922,4304,16.922]],["keywords/1050",[]],["title/1051",[291,375.413,535,445.765,670,527.257]],["content/1051",[1,1.959,7,5.684,19,5.824,32,8.25,33,7.259,41,5.426,53,2.32,54,5.848,84,8.552,102,4.463,137,7.348,335,6.187,535,9.008,963,9.139,1023,8.081,1403,13.331,1515,9.914,1797,7.348,2046,10.676,2226,12.442,2327,15.225,2630,13.331,3646,21.088,3647,14.751,3648,14.751]],["keywords/1051",[]],["title/1052",[613,579.136,658,745.578,3649,1076.194]],["content/1052",[1,2.135,5,4.625,6,5.017,7,4.42,32,4.969,53,3.163,54,4.548,58,6.237,72,4.923,249,6.709,278,7.034,315,3.603,379,7.7,434,6.832,571,5.785,613,9.781,658,12.592,662,10.289,770,11.381,981,6.77,996,8.774,1028,4.067,1104,6.237,1185,6.146,1220,11.446,1510,6.964,2418,8.167,2826,8.042,3232,9.171,3595,9.406,3649,10.366,3650,16.075,3651,11.471,3652,11.471,3653,11.471,3654,11.471,3655,11.471,3656,16.075,3657,16.075,3658,11.471]],["keywords/1052",[]],["title/1053",[1,123.323,1028,329.269,1255,710.31,1684,641.545,1806,641.545]],["content/1053",[0,2.72,1,2.696,6,9.337,11,2.961,53,1.844,58,6.374,68,4.328,361,6.471,570,5.989,571,5.913,613,5.701,616,8.347,649,10.568,1028,4.157,1099,10.594,1178,10.209,1255,12.484,1440,9.888,1684,15.269,1806,12.972,1813,15.012,2100,7.778,2162,8.347,2271,8.099,2272,8.632,2280,8.792,2405,10.594,2412,10.594,2455,11.077,2468,10.594,2576,11.077,2786,10.209,4305,12.704,4306,12.704,4307,12.704,4308,20.348,4309,12.704,4310,17.687]],["keywords/1053",[]],["title/1054",[1203,1017.624]],["content/1054",[]],["keywords/1054",[]],["title/1055",[1703,1074.47]],["content/1055",[]],["keywords/1055",[]],["title/1056",[30,200.949,3565,771.062,3659,1190.871]],["content/1056",[1,2.226,68,6.189,74,11.394,77,7.836,218,14.137,234,9.635,249,9.804,1100,13.401,1203,12.657,1465,9.554,1935,12.295,3417,13.401,3660,20.213]],["keywords/1056",[]],["title/1057",[30,176.087,74,576.062,3565,675.665,3661,1043.535]],["content/1057",[1,2.47,30,2.401,68,5.253,99,10.784,102,4.304,198,5.313,204,10.475,225,5.175,232,8.339,233,3.47,234,8.177,249,8.321,253,10.296,274,9.322,280,9.561,313,6.443,314,6.223,475,9.211,759,10.129,1203,8.724,1274,12.388,1421,11.374,2106,7.413,3660,19.862,3662,14.226,3663,14.226,3664,14.226,3665,14.226,3666,14.226]],["keywords/1057",[]],["title/1058",[30,141.158,74,461.795,251,438.9,3565,826.001,3667,836.54]],["content/1058",[225,8.585,251,11.901,290,11.82,345,11.482,461,8.004,1290,12.524,2106,9.018,3668,15.639]],["keywords/1058",[]],["title/1059",[30,128.422,74,420.126,251,399.297,3565,492.768,3669,761.058,3670,761.058,3671,761.058]],["content/1059",[68,5.881,93,8.473,225,5.793,251,10.491,253,11.526,290,10.42,345,13.266,461,9.248,526,10.436,622,8.861,1347,12.733,1465,9.078,1771,13.291,3422,13.06,3668,14.393,3672,15.926]],["keywords/1059",[]],["title/1060",[1,138.581,1255,798.19,1684,720.918,1806,720.918]],["content/1060",[]],["keywords/1060",[]],["title/1061",[1028,588.399]],["content/1061",[1,2.458,14,8.215,311,9.777,938,12.127,1028,6.562,1637,14.459,1684,12.786,1806,12.786,4311,20.056]],["keywords/1061",[]],["title/1062",[43,666.579,560,1083.373]],["content/1062",[6,9.718,601,11.991,621,15.147,622,10.54,1684,13.089,1813,15.147]],["keywords/1062",[]],["title/1063",[54,657.936]],["content/1063",[1,2.546,1072,14.665,1684,13.246,1806,13.246,4312,20.778,4313,20.778]],["keywords/1063",[]],["title/1064",[257,882.88]],["content/1064",[6,6.588,9,7.04,19,5.947,30,3.257,53,1.942,102,2.426,141,5.132,165,7.905,198,2.995,210,5.02,224,5.774,232,6.753,257,10.698,268,18.561,306,6.576,315,3.879,317,2.059,335,5.18,361,4.427,481,5.463,548,7.997,554,7.577,625,6.411,640,5.905,645,3.709,1684,10.406,1685,10.755,1703,5.192,1813,15.431,2722,6.983,4314,8.69,4315,13.384,4316,8.69,4317,8.69,4318,8.69,4319,8.69,4320,8.69,4321,8.69,4322,8.69,4323,8.69,4324,8.69,4325,8.69,4326,8.69,4327,8.69,4328,8.69,4329,8.69,4330,8.69,4331,8.69,4332,8.69,4333,8.69,4334,8.69,4335,8.69,4336,8.69,4337,8.69,4338,8.69,4339,8.69,4340,8.69,4341,13.384,4342,8.69,4343,13.384,4344,8.69,4345,8.69,4346,8.69,4347,8.69,4348,8.69,4349,8.69]],["keywords/1064",[]],["title/1065",[1,158.147,341,753.709,1494,730.268]],["content/1065",[1,3.012,23,9.146,95,8.62,341,14.357,354,6.861,1494,13.91,3692,10.612]],["keywords/1065",[]],["title/1066",[72,595.104,353,1021.028]],["content/1066",[]],["keywords/1066",[]],["title/1067",[23,480.154,72,511.082,354,472.149]],["content/1067",[0,2.14,12,6.525,22,5.248,23,6.613,30,4.074,53,1.45,60,2.605,71,3.418,93,4.906,108,7.428,198,7.255,355,8.325,356,4.511,357,7.373,358,6.848,359,8.333,360,7.373,361,5.09,362,7.778,363,6.198,364,8.333,365,9.227,366,7.053,367,8.333,368,7.053,369,6.37,370,8.333,371,12.295,372,8.333,373,8.333,374,7.373,375,6.79,376,6.79,377,8.333,378,6.79,379,4.816,380,12.407,381,16.42,382,12.407,383,10.109,384,7.373,385,6.198,386,8.333,387,7.053,388,6.198,389,6.198,390,8.333,391,6.916,392,9.936,393,11.58,394,6.043,395,8.333]],["keywords/1067",[]],["title/1068",[114,864.749]],["content/1068",[]],["keywords/1068",[]],["title/1069",[43,365.849,71,282.072,114,396.587,260,381.455,396,487.1,397,608.473,398,687.77]],["content/1069",[2,9.449,12,4.828,53,2.729,115,6.23,118,3.751,137,7.343,181,3.602,257,5.405,307,10.496,315,3.191,335,4.261,357,13.872,396,9.435,397,8.122,399,11.786,400,11.786,401,11.786,402,9.18,403,9.18,404,9.18,405,9.18,406,9.18,407,8.568,408,9.18,409,9.18,410,9.18,411,9.18,412,9.18,413,9.18,414,9.18,415,9.18,416,9.18,417,9.18,418,9.18,419,9.18,420,9.18,421,9.18,422,9.18,423,5.79,424,9.18,425,7.233,426,8.122,427,6.828,428,8.33,429,3.551,430,15.68,431,9.18,432,8.568,433,13.322,434,11.338,435,10.855,436,13.322,437,9.18,438,7.122,439,7.77,440,7.352,441,13.322]],["keywords/1069",[]],["title/1070",[25,402.134,114,435.92,162,352.448,442,668.821,443,518.256,444,639.861]],["content/1070",[0,3.423,53,2.32,79,6.613,111,10.048,229,7.962,399,11.794,400,11.794,427,9.914,442,15.225,443,11.798,444,11.283,445,13.331,446,13.331,447,13.331,448,13.331,449,13.331,450,11.283,451,17.209,452,13.156,453,17.209,454,13.331,455,13.331,456,13.331,457,13.331,458,13.331,459,13.331]],["keywords/1070",[]],["title/1071",[24,267.779,114,483.915,335,389.483,460,839.217,461,429.487]],["content/1071",[19,7.307,24,6.319,53,2.91,79,8.297,427,12.439,461,8.559,462,16.725,463,14.156]],["keywords/1071",[]],["title/1072",[25,309.921,114,335.959,115,395.352,118,238.048,438,451.998,464,582.628,465,515.453,466,399.415,467,493.134]],["content/1072",[24,1.984,30,4.092,53,2.146,60,3.856,67,3.289,71,4.06,93,5.828,115,4.219,118,4.045,121,5.803,122,5.375,185,5.67,202,5.263,224,3.216,231,7.983,236,5.912,307,11.08,356,3.366,427,4.624,435,5.066,438,9.568,466,6.786,467,12.996,468,4.979,469,6.218,470,2.651,471,4.899,472,6.218,473,6.218,474,6.218,475,10.076,476,5.375,477,12.334,478,6.218,479,4.899,480,3.955,481,4.687,482,17.808,483,6.218,484,10.049,485,4.404,486,6.218,487,5.525,488,8.758,489,9.239,490,6.218,491,6.218,492,6.218,493,6.218,494,5.803,495,6.218,496,6.218,497,7.462,498,9.899,499,6.218,500,4.508,501,6.858,502,6.218,503,9.899,504,6.218,505,6.218,506,5.803,507,14.063,508,9.239,509,6.218,510,5.803,511,5.375,512,6.218,513,6.218,514,6.218,515,6.218,516,9.899,517,4.753,518,9.899,519,2.512,520,6.218,521,9.899,522,6.218,523,6.218,524,6.218]],["keywords/1072",[]],["title/1073",[25,446.409,43,446.409,114,483.915,396,594.358,525,839.217]],["content/1073",[12,10.275,25,8.695,41,6.654,315,5.682,465,14.462,526,14.165,527,7.8,528,11.577,529,13.319]],["keywords/1073",[]],["title/1074",[24,343.395,338,349.572,3692,730.268]],["content/1074",[]],["keywords/1074",[]],["title/1075",[0,194.094,2,391.076,24,241.221,315,262.763,338,245.561,3692,512.985]],["content/1075",[0,4.54,2,2.656,4,8.202,11,3.025,12,5.693,19,2.244,24,3.454,30,3.676,31,5.752,47,6.073,53,1.475,54,7.757,55,2.941,61,4.659,71,3.476,79,2.548,137,4.672,162,3.952,168,3.212,180,4.227,181,3.326,224,2.656,258,2.485,288,3.723,301,3.52,317,3.075,338,3.516,358,3.916,361,3.137,379,3.29,429,1.986,452,3.925,468,4.112,484,4.184,535,2.427,555,3.637,569,2.903,571,2.866,586,6.111,613,7.483,622,3.161,624,5.825,718,2.341,719,4.672,757,3.002,867,2.941,1023,5.139,1028,3.326,1085,4.112,1154,3.596,1194,5.392,1220,4.046,1445,5.6,1462,4.112,1463,3.925,1467,4.543,1494,3.484,1510,5.695,1525,3.354,1537,3.637,1538,7.499,1714,6.679,1720,3.723,1761,3.819,2264,6.788,2389,6.907,2542,5.369,2580,4.262,2586,3.77,2721,4.543,2723,10.635,2725,6.679,2730,9.345,2734,11.116,2740,4.543,2753,4.543,2754,5.135,2755,7.499,2756,11.116,2757,4.543,2758,4.543,3692,11.647,3693,7.912,3694,5.682,3695,5.135,3696,5.682,3697,4.543,3698,5.682,3699,5.682,3700,5.682,3701,5.682,3702,9.38,3703,5.682,3704,5.135,3705,5.135,3706,4.793,3707,5.135,3708,5.135,3709,5.682,3710,5.682,3711,5.682,3712,4.793]],["keywords/1075",[]],["title/1076",[11,211.281,24,241.221,317,214.759,338,245.561,1028,296.612,3692,512.985]],["content/1076",[12,7.422,24,5.695,317,4.009,338,5.797,569,11.065,586,8.68,645,7.222,1028,7.002,1494,9.576,2761,10.232,2762,12.485,3692,13.957,3713,15.615,3714,15.615,3715,15.615,3716,15.615]],["keywords/1076",[]],["title/1077",[24,300.909,338,306.323,657,743.008,1028,370.007]],["content/1077",[0,3.272,4,9.155,12,8.789,19,5.567,24,6.316,46,9.477,79,6.322,278,8.647,338,6.43,569,9.447,619,8.333,624,10.035,846,8.322,1028,7.316,1445,6.592,2765,11.274,2766,13.167,3692,11.34,3717,14.101,3718,14.101]],["keywords/1077",[]],["title/1078",[24,343.395,95,593.203,338,349.572]],["content/1078",[]],["keywords/1078",[]],["title/1079",[0,194.094,2,391.076,24,241.221,95,416.702,315,262.763,338,245.561]],["content/1079",[0,4.581,2,2.209,4,7.467,11,1.193,12,3.82,24,3.024,30,3.983,47,3.059,53,1.264,54,7.468,55,6.403,56,5.266,58,2.569,71,2.978,95,8.015,137,4.003,162,3.386,168,2.671,180,3.621,181,2.849,183,3.985,221,2.383,224,2.209,258,2.067,296,1.732,303,2.991,317,2.692,338,3.078,358,3.355,361,2.608,379,1.658,426,3.778,435,3.479,468,7.589,511,6.279,517,3.264,519,1.725,555,3.024,569,2.414,586,3.532,613,5.099,619,2.129,622,2.629,624,5.099,684,3.024,718,1.947,719,5.223,757,2.496,867,2.446,1023,4.402,1027,2.716,1028,3.718,1194,4.619,1199,5.917,1216,3.778,1397,4.27,1445,4.902,1462,3.42,1463,3.264,1494,2.898,1507,3.096,1510,7.511,1525,2.789,1537,3.024,1538,3.778,1714,5.722,1720,3.096,1761,3.176,1892,3.985,2100,3.135,2162,3.364,2264,5.816,2362,4.115,2389,9.109,2508,4.115,2580,3.544,2586,3.135,2676,3.985,2716,4.27,2717,4.27,2718,4.27,2719,4.27,2721,3.778,2723,9.462,2725,3.364,2730,7.047,2737,4.27,2738,3.985,2739,3.985,2740,3.778,2755,3.778,2756,8.383,2757,3.778,2758,3.778,3201,4.27,3595,3.875,3693,6.778,3706,3.985,3712,3.985,3719,4.725,3720,4.725,3721,4.725,3722,4.725,3723,4.27,3724,12.371,3725,4.725,3726,4.725,3727,4.725,3728,10.486,3729,4.725,3730,4.725,3731,4.725,3732,8.036,3733,4.725,3734,4.725,3735,4.725,3736,4.725,3737,4.725,3738,4.725,3739,10.486,3740,8.036,3741,4.725,3742,4.27,3743,4.725,3744,4.725,3745,4.725,3746,4.725,3747,4.725,3748,4.725,3749,4.725,3750,4.725,3751,4.725,3752,4.725,3753,4.27]],["keywords/1079",[]],["title/1080",[11,211.281,24,241.221,95,416.702,317,214.759,338,245.561,1028,296.612]],["content/1080",[12,9.329,24,4.459,95,11.297,317,3.97,338,4.539,569,11.015,586,6.797,645,7.152,670,5.425,1028,5.483,1494,9.483,2761,12.861,2762,12.364,3754,15.464,3755,19.627,3756,15.464,3757,11.387,3758,13.975]],["keywords/1080",[]],["title/1081",[24,343.395,338,349.572,1028,422.248]],["content/1081",[]],["keywords/1081",[]],["title/1082",[24,300.909,338,306.323,657,743.008,1028,370.007]],["content/1082",[0,3.361,4,7.171,12,8.944,19,5.719,24,6.028,79,6.494,95,9.374,278,8.882,338,6.136,366,11.078,440,10.482,569,9.614,619,8.48,624,9.152,670,5.081,846,8.548,1028,7.412,2765,11.58,2766,10.313,3757,10.665,3759,14.484,3760,14.484]],["keywords/1082",[]],["title/1083",[11,300.774,338,349.572,2761,780.355]],["content/1083",[11,4.674,12,8.796,338,5.433,569,9.455,2761,12.127,2766,13.177,2768,15.61,2769,15.61,3761,18.507]],["keywords/1083",[]],["title/1084",[530,1269.313]],["content/1084",[]],["keywords/1084",[]],["title/1085",[34,1130.435]],["content/1085",[0,2.935,5,5.101,11,3.195,19,4.995,22,4.836,53,1.989,54,5.016,78,6.592,79,7.711,80,5.979,198,7.832,217,10.342,231,10.06,254,9.024,258,7.523,354,5.016,371,13.272,379,4.438,434,7.535,569,6.462,645,5.851,757,6.683,856,12.107,956,11.953,1114,9.155,1957,9.007,2776,11.432,3790,12.65,3791,19.542,3792,17.199,3793,12.65,3794,11.432,3795,12.65]],["keywords/1085",[]],["title/1086",[12,441.379,22,355.008,46,624.139,305,477.508,345,616.13]],["content/1086",[0,4.885,11,3.453,12,8.612,22,7.769,23,6.59,30,3.799,32,3.972,46,9.188,53,2.57,79,4.111,102,4.136,162,5.759,198,7.59,223,4.81,225,4.973,232,4.111,234,5.27,302,2.144,313,4.153,314,4.01,371,10.345,379,5.734,383,12.036,384,7.33,501,5.74,572,5.363,603,7.163,670,4.795,1179,6.635,1613,7.733,1855,7.33,1878,7.33,1957,11.638,2250,7.733,3794,14.771,3796,14.486,3797,16.345,3798,12.354,3799,13.67,3800,7.984,3801,9.168,3802,9.168]],["keywords/1086",[]],["title/1087",[0,276.306,22,455.254,355,604.462]],["content/1087",[]],["keywords/1087",[]],["title/1088",[0,176.581,9,433.804,305,391.336,533,426.778,1253,608.473,1484,445.147,1554,498.706]],["content/1088",[0,4.157,5,3.614,19,5.307,22,5.138,23,5.419,27,5.873,30,3.709,53,2.114,54,3.554,60,3.797,79,6.026,80,4.236,102,2.712,147,7.166,181,3.178,198,6.691,221,4.521,225,3.26,232,4.018,233,2.186,257,4.768,278,8.242,288,5.873,305,4.609,316,5.442,317,2.301,371,8.506,383,6.6,434,5.339,501,5.611,530,6.856,533,5.026,563,3.482,570,4.579,613,4.359,646,6.024,662,5.737,757,4.735,771,5.803,1071,5.873,1209,5.611,1253,10.746,1267,4.411,1350,7.166,1484,7.861,1520,4.671,1554,10.567,1588,8.415,1620,5.737,1840,5.026,2242,8.1,2243,8.1,2468,8.1,2596,7.003,2863,7.35,3798,8.1,3803,8.963,3804,8.963,3805,13.44,3806,8.963,3807,8.963,3808,8.963,3809,8.963,3810,8.963,3811,8.963,3812,8.963,3813,8.963,3814,8.963,3815,8.963,3816,8.963,3817,8.963,3818,8.963,3819,8.1]],["keywords/1088",[]],["title/1089",[232,621.687,3820,1169.584]],["content/1089",[10,3.276,11,2.486,22,3.762,30,2.875,32,2.61,41,7.804,53,1.548,68,2.225,71,4.624,77,2.817,93,6.638,119,3.997,120,3.434,177,2.864,181,3.49,221,3.039,225,4.538,230,6.253,232,5.594,233,4.156,234,3.463,237,3.901,257,3.205,258,4.305,260,3.02,296,3.607,308,12.694,309,8.619,313,2.729,317,3.203,321,4.104,350,3.352,355,4.995,361,3.326,374,7.869,529,4.436,557,9.703,563,8.099,586,2.648,657,4.29,665,7.896,668,3.463,670,3.452,736,4.789,737,9.539,771,12.921,939,5.199,997,4.224,1067,3.856,1075,3.695,1104,3.276,1209,6.162,1253,4.817,1350,4.817,1475,5.082,1484,7.298,1520,3.139,1580,4.707,1620,3.856,1744,5.445,1761,4.049,1855,7.869,1885,3.772,1957,4.29,3685,5.693,3820,13.392,3821,6.025,3822,6.025,3823,6.025,3824,15.397,3825,9.842,3826,9.975,3827,10.523,3828,9.842,3829,5.445,3830,6.025,3831,6.025,3832,6.025,3833,6.025,3834,6.025]],["keywords/1089",[]],["title/1090",[0,321.731,231,811.06]],["content/1090",[0,1.482,11,0.711,12,0.924,15,0.881,16,1.042,22,1.676,23,2.054,30,3.941,43,2.108,46,1.307,47,11.336,48,4.887,53,0.801,60,2.42,71,4.363,74,2.812,76,0.631,82,1.781,85,0.743,93,4.291,102,1.327,143,0.806,162,0.425,198,1.354,223,1.02,225,1.319,229,0.544,230,0.505,232,0.452,257,0.537,266,1.487,268,2.773,269,2.88,295,1.244,302,0.455,308,0.806,315,2.007,316,2.662,354,2.533,355,0.512,371,1.781,374,0.806,379,0.987,383,2.072,388,0.678,394,2.376,401,0.806,438,8.253,470,0.389,487,3.222,497,2.47,533,0.566,543,0.743,563,1.703,579,3.058,622,7.226,644,1.891,671,0.697,719,0.502,735,1.487,737,1.733,771,3.299,828,1.973,829,0.771,831,0.771,867,2.269,870,1.781,902,8.192,939,1.027,962,2.973,1100,0.806,1151,3.962,1159,2.437,1166,16.794,1481,1.762,1503,0.771,1519,1.09,1549,1.64,1656,1.487,1733,0.827,1876,0.827,1878,1.554,1911,1.23,1957,2.582,1983,16.94,2027,0.878,2043,0.851,2172,0.851,2277,0.851,2298,2.659,2315,15.784,2363,3.277,2370,2.659,2384,0.953,2701,9.679,3048,0.911,3050,0.911,3052,0.911,3054,0.911,3057,0.911,3059,3.058,3169,0.911,3332,2.543,3375,0.911,3436,3.261,3796,2.25,3819,1.757,3820,4.297,3824,3.277,3827,3.698,3835,1.009,3836,1.944,3837,1.944,3838,2.814,3839,1.944,3840,1.009,3841,5.095,3842,4.384,3843,2.814,3844,2.814,3845,2.814,3846,2.814,3847,2.814,3848,1.009,3849,2.814,3850,2.814,3851,2.814,3852,1.009,3853,2.814,3854,2.814,3855,2.814,3856,2.814,3857,4.384,3858,6.389,3859,4.384,3860,2.814,3861,2.814,3862,2.814,3863,2.814,3864,2.814,3865,2.814,3866,2.814,3867,4.384,3868,1.944,3869,1.944,3870,1.944,3871,12.702,3872,1.944,3873,3.626,3874,8.565,3875,8.565,3876,3.626,3877,3.626,3878,3.626,3879,3.626,3880,3.626,3881,2.814,3882,3.626,3883,1.944,3884,1.944,3885,2.814,3886,1.944,3887,1.944,3888,2.814,3889,2.814,3890,2.814,3891,20.635,3892,2.814,3893,2.814,3894,2.814,3895,2.814,3896,2.814,3897,2.814,3898,2.814,3899,2.814,3900,4.384,3901,4.384,3902,4.384,3903,4.384,3904,4.384,3905,2.814,3906,2.814,3907,2.814,3908,2.814,3909,12.988,3910,2.814,3911,2.814,3912,2.814,3913,2.814,3914,2.814,3915,2.814,3916,2.814,3917,2.814,3918,2.814,3919,1.009,3920,1.009,3921,1.944,3922,1.944,3923,1.944,3924,2.814,3925,1.009,3926,1.944,3927,1.009,3928,1.944,3929,5.762,3930,1.944,3931,1.944,3932,1.944,3933,1.009,3934,1.009,3935,1.009,3936,6.389,3937,1.009,3938,6.389,3939,6.389,3940,1.009,3941,1.009,3942,1.009,3943,1.009,3944,1.009,3945,1.009,3946,1.009,3947,1.009,3948,1.009,3949,1.009,3950,1.009,3951,1.009,3952,1.009,3953,1.009,3954,1.009,3955,1.009,3956,1.009,3957,1.009,3958,1.009,3959,1.009,3960,1.009,3961,9.488,3962,1.009,3963,1.009,3964,1.009,3965,1.009,3966,1.009,3967,1.009,3968,1.009,3969,1.009,3970,1.009,3971,1.009,3972,1.009,3973,1.009,3974,1.009,3975,1.009,3976,1.009,3977,1.009,3978,1.009,3979,1.009,3980,1.009,3981,1.009,3982,1.009,3983,1.009,3984,5.095,3985,1.009,3986,1.009,3987,1.009,3988,1.009,3989,1.009,3990,1.009,3991,1.944,3992,1.944,3993,10.71,3994,10.71,3995,1.944,3996,1.009,3997,1.009,3998,1.009,3999,1.009,4000,1.009,4001,1.009,4002,1.009,4003,1.009,4004,1.009,4005,1.009,4006,1.009,4007,1.009,4008,1.944,4009,1.009,4010,1.944,4011,1.009,4012,1.009,4013,1.009,4014,1.009,4015,1.009,4016,1.009,4017,1.009,4018,1.009,4019,1.009,4020,1.009,4021,1.009,4022,1.009,4023,1.009,4024,1.009,4025,1.009,4026,1.009,4027,1.009,4028,1.009,4029,1.009,4030,1.009,4031,1.009,4032,1.009,4033,1.009,4034,1.009,4035,1.009,4036,0.911,4037,1.009,4038,1.009,4039,1.009,4040,1.009,4041,1.009,4042,1.009,4043,2.814,4044,2.814,4045,1.009,4046,1.009,4047,1.009,4048,1.009]],["keywords/1090",[]],["title/1091",[628,448.191,632,910.886,1885,745.578]],["content/1091",[11,4.936,22,6.575,53,1.989,77,5.914,80,5.979,81,9.315,130,10.114,147,10.114,198,6.423,209,9.155,225,4.602,229,6.828,334,8.289,338,3.713,354,5.016,461,5.851,481,11.716,553,8.739,558,7.211,622,7.038,632,13.156,670,4.438,705,3.77,1104,6.878,1475,14.507,1656,9.676,1771,7.334,1885,14.164,1957,9.007,2397,11.953,3827,10.67,4049,12.65,4050,12.65,4051,12.65,4052,12.65,4053,12.65,4054,12.65]],["keywords/1091",[]],["title/1092",[111,1130.435]],["content/1092",[0,3.368,13,5.385,22,2.892,30,2.449,53,1.189,80,3.575,81,5.569,115,4.638,132,6.835,258,10.04,394,4.956,501,14.371,557,4.082,571,3.815,790,6.047,1549,6.38,1565,6.202,1579,6.835,1732,5.303,1840,4.242,1935,8.646,1952,5.385,1957,5.385,2172,6.38,2580,5.673,3796,13.111,4036,6.835,4055,7.564,4056,7.564,4057,22.149,4058,7.564,4059,7.564,4060,7.564,4061,7.564,4062,7.564,4063,7.564,4064,11.803,4065,7.564,4066,7.564,4067,7.564,4068,7.564,4069,11.803,4070,7.564,4071,7.564,4072,7.564,4073,7.564,4074,7.564,4075,7.564,4076,14.515,4077,7.564,4078,7.564,4079,7.564,4080,7.564,4081,7.564,4082,7.564,4083,7.564,4084,7.564,4085,7.564,4086,11.803,4087,7.564,4088,7.564,4089,7.564,4090,7.564,4091,7.564,4092,7.564,4093,7.564,4094,7.564,4095,14.515,4096,11.803,4097,7.564,4098,7.564,4099,7.564,4100,7.564,4101,7.564,4102,7.564,4103,7.564,4104,7.564,4105,7.564]],["keywords/1092",[]],["title/1093",[24,343.395,338,349.572,354,472.149]],["content/1093",[]],["keywords/1093",[]],["title/1094",[0,194.094,2,391.076,24,241.221,315,262.763,338,245.561,354,331.666]],["content/1094",[0,4.501,2,2.4,4,7.798,11,1.297,12,4.098,24,3.213,30,4.117,47,3.325,53,1.356,54,7.243,71,3.195,74,2.835,108,2.326,137,4.294,162,3.632,168,2.903,180,5.021,181,3.057,224,2.4,258,2.246,268,3.928,301,3.181,303,3.25,316,3.118,317,2.861,338,3.271,354,5.768,358,2.144,361,2.835,365,3.451,379,5.103,429,1.795,468,8.065,511,4.012,555,3.286,586,3.789,613,5.419,622,2.857,624,5.419,684,3.245,718,2.116,719,5.551,757,2.713,867,2.658,942,3.928,1022,3.118,1023,7.151,1028,3.951,1194,4.956,1209,3.215,1220,3.656,1445,5.209,1462,3.716,1463,3.547,1467,4.105,1494,3.149,1510,5.234,1516,3.851,1525,3.03,1537,3.286,1538,6.893,1714,6.138,1720,3.365,1761,3.451,2100,5.72,2264,6.239,2389,6.348,2413,4.105,2580,3.851,2586,3.407,2676,4.331,2721,4.105,2722,4.471,2723,13.437,2725,3.656,2730,5.794,2738,4.331,2739,4.331,2740,4.105,2755,4.105,2756,8.909,2757,4.105,2758,4.105,2889,4.64,2904,4.64,3693,7.272,3695,4.64,3704,4.64,3705,4.64,3706,4.331,3707,4.64,3708,4.64,3712,4.331,3723,4.64,3753,4.64,3762,5.135,3763,5.135,3764,5.135,3765,5.135,3766,5.135,3767,8.621,3768,5.135,3769,11.143,3770,8.621,3771,5.135,3772,5.135,3773,5.135,3774,5.135,3775,5.135]],["keywords/1094",[]],["title/1095",[11,211.281,24,241.221,317,214.759,338,245.561,354,331.666,1028,296.612]],["content/1095",[12,8.354,19,5.158,24,3.767,46,11.814,317,3.354,338,3.835,354,9.055,365,14.903,586,9.339,619,5.887,645,6.042,670,4.583,1028,4.632,1463,9.025,2761,11.518,2762,10.445,3757,12.943,3758,15.885,3776,13.064,3777,13.064,3778,13.064,3779,17.577,3780,13.064,3781,13.064,3782,17.577,3783,13.064]],["keywords/1095",[]],["title/1096",[24,343.395,338,349.572,1028,422.248]],["content/1096",[]],["keywords/1096",[]],["title/1097",[24,300.909,338,306.323,657,743.008,1028,370.007]],["content/1097",[0,3.031,4,8.702,12,9.442,19,5.158,24,6.127,46,8.78,108,5.917,278,8.011,338,6.237,354,5.179,365,14.281,366,9.992,368,9.992,619,8.952,624,9.661,670,4.583,846,7.71,1028,7.044,2765,10.445,2766,12.515,3757,12.943,3784,13.064,3785,13.064,3786,13.064,3787,13.064]],["keywords/1097",[]],["title/1098",[11,300.774,338,349.572,2761,780.355]],["content/1098",[11,4.621,338,5.371,365,14.628,368,13.994,2761,11.989,2768,15.431,2769,15.431,3788,16.534,3789,18.295]],["keywords/1098",[]],["title/1099",[2,434.133,27,608.521,28,563.829,43,446.409,560,725.536]],["content/1099",[]],["keywords/1099",[]],["title/1100",[34,1130.435]],["content/1100",[0,4.503,1,2.577,2,9.072,77,9.072,963,12.022]],["keywords/1100",[]],["title/1101",[24,343.395,338,349.572,1028,422.248]],["content/1101",[10,9.309,14,7.599,19,6.76,24,6.03,77,8.004,78,8.921,313,7.754,314,7.489,338,6.138,938,11.218,963,10.606,1028,7.414,4106,17.12]],["keywords/1101",[]],["title/1102",[178,575.772,354,472.149,528,762.193]],["content/1102",[]],["keywords/1102",[]],["title/1103",[24,399.849,31,850.325]],["content/1103",[4,8.855,41,6.579,181,6.342,233,4.363,354,7.091,365,12.021,379,6.274,757,9.449,1028,6.342,1509,11.448,2457,13.414,4107,15.086]],["keywords/1103",[]],["title/1104",[233,226.502,354,368.182,379,325.758,1028,329.269,1509,594.358]],["content/1104",[0,2.483,5,4.315,11,4.513,15,4.847,16,5.735,23,4.315,24,3.086,30,2.583,53,2.407,54,7.084,78,5.577,79,4.798,112,5.577,114,5.577,119,7.101,181,6.335,233,2.61,309,7.394,317,2.748,354,7.084,365,7.193,379,7.237,434,6.375,527,6.6,645,4.95,757,5.654,867,7.923,1017,9.32,1071,7.013,1241,6.701,1445,5.003,1506,11.707,1509,6.85,1510,6.498,1513,11.707,1558,7.013,1605,7.62,1885,6.701,2586,7.101,2730,7.193,3221,8.557,3222,12.237,3223,8.557,3224,8.557,3225,8.557,3697,12.237,4108,8.027,4109,10.703,4110,12.91,4111,9.027,4112,10.703]],["keywords/1104",[]],["title/1105",[22,530.099,317,355.985]],["content/1105",[0,3.066,4,4.338,23,4.556,30,3.439,53,1.378,60,4.772,69,8.959,71,4.898,79,2.347,80,2.475,93,8.463,108,2.371,162,4.761,239,3.314,249,9.305,354,3.474,369,3.617,375,3.855,376,3.855,378,3.855,385,3.519,387,4.005,388,3.519,389,3.519,423,10.494,461,5.227,501,3.278,540,3.567,557,8.586,563,6.179,588,2.475,622,4.875,719,7.924,737,5.402,1034,15.096,1720,7.405,1943,3.728,3826,12.719,4113,10.213,4114,4.731,4115,4.731,4116,3.855,4117,3.855,4118,3.855,4119,3.855,4120,6.452,4121,6.452,4122,6.452,4123,3.855,4124,3.855,4125,7.391,4126,7.391,4127,8.763,4128,8.763,4129,8.763,4130,8.763,4131,4.186,4132,3.855,4133,3.855,4134,4.416,4135,5.236,4136,15.528,4137,16.637,4138,4.731,4139,15.528,4140,13.418,4141,15.528,4142,10.213,4143,13.292,4144,10.213,4145,10.213,4146,7.919,4147,4.731]],["keywords/1105",[]],["title/1106",[24,478.518]],["content/1106",[0,1.59,1,2.399,4,6.738,11,1.73,18,14.301,22,4.173,23,5.487,24,3.148,27,7.154,30,3.868,47,7.068,53,1.077,58,3.725,60,1.935,71,2.539,108,3.103,112,3.57,162,2.886,180,3.087,198,4.077,219,4.958,234,3.938,239,4.336,338,3.205,346,5.24,354,2.716,358,8.215,360,5.477,368,5.24,369,4.733,371,4.336,379,2.403,383,5.044,384,5.477,385,4.604,389,4.604,391,5.138,392,7.901,393,9.208,394,4.489,452,7.542,466,4.244,481,7.437,571,3.455,588,3.238,650,4.733,1104,3.725,1318,5.044,1497,7.154,1516,5.138,1943,7.773,2725,7.773,2753,5.477,2834,5.778,2847,5.477,3742,6.191,3788,6.191,3796,5.477,4108,10.207,4116,5.044,4117,5.044,4118,5.044,4119,5.044,4120,8.038,4121,10.021,4122,8.038,4123,5.044,4124,5.044,4132,5.044,4133,5.044,4148,6.851,4149,6.851,4150,6.851,4151,5.477,4152,6.851,4153,6.851,4154,6.851,4155,6.851,4156,6.851,4157,6.851,4158,6.851,4159,6.851,4160,6.191,4161,6.191,4162,6.191,4163,6.191,4164,6.191,4165,6.851,4166,6.851,4167,6.851,4168,6.851,4169,6.851,4170,6.851,4171,6.851,4172,6.851,4173,6.851,4174,6.851,4175,13.609,4176,6.191]],["keywords/1106",[]],["title/1107",[95,593.203,178,575.772,528,762.193]],["content/1107",[]],["keywords/1107",[]],["title/1108",[24,399.849,31,850.325]],["content/1108",[4,8.855,41,6.579,95,8.91,181,6.342,233,4.363,379,6.274,757,9.449,1028,6.342,1509,11.448,2457,13.414,2692,15.086,4107,15.086]],["keywords/1108",[]],["title/1109",[95,462.581,233,226.502,379,325.758,1028,329.269,1509,594.358]],["content/1109",[30,2.422,53,2.257,54,7.417,95,7.15,119,9.523,181,5.089,233,3.501,379,7.301,434,8.55,527,6.189,1445,6.71,1506,14.31,1509,9.187,1510,8.715,1513,14.31,2586,9.523,2730,9.647,3221,11.476,3222,14.958,3223,11.476,3224,11.476,3225,11.476,3697,14.958,4108,10.765,4110,12.107,4111,12.107,4177,14.354]],["keywords/1109",[]],["title/1110",[22,530.099,317,355.985]],["content/1110",[0,3.171,4,4.537,23,4.735,30,3.27,53,1.441,60,4.89,69,9.102,71,4.353,79,2.477,80,2.611,93,8.694,95,5.85,162,3.861,221,2.787,239,3.497,249,9.558,375,4.068,376,4.068,378,4.068,385,3.713,388,3.713,389,3.713,423,10.713,461,5.431,501,3.459,540,3.764,557,8.82,563,6.348,588,2.611,719,8.14,737,5.613,1034,15.412,1720,7.695,1943,3.934,3826,13.065,4113,10.613,4114,4.993,4115,4.993,4116,4.068,4117,4.068,4118,4.068,4119,4.068,4120,6.748,4121,6.748,4122,6.748,4123,4.068,4124,4.068,4126,7.73,4131,4.417,4132,4.068,4133,4.068,4134,4.66,4136,15.852,4137,16.985,4138,4.993,4139,15.852,4140,13.783,4141,15.852,4142,10.613,4143,13.695,4144,10.613,4145,10.613,4146,8.282,4147,4.993,4151,7.327,4178,5.525]],["keywords/1110",[]],["title/1111",[24,478.518]],["content/1111",[0,2.284,4,7.134,23,5.81,30,4.114,47,9.33,53,1.548,58,5.354,60,2.782,71,3.649,72,4.226,95,8.489,239,6.232,358,9.222,360,7.872,366,7.531,369,6.802,379,3.454,385,6.617,388,6.617,389,6.617,452,9.955,569,5.03,588,4.654,1943,7.01,2725,10.26,2753,7.872,2834,8.305,2847,7.872,4116,7.25,4117,7.25,4118,7.25,4119,7.25,4120,10.61,4121,10.61,4122,10.61,4123,7.25,4124,7.25,4132,7.25,4133,7.25,4151,7.872,4160,8.898,4161,8.898,4162,8.898,4163,8.898,4164,8.898,4179,9.846,4180,19.96,4181,9.846]],["keywords/1111",[]],["title/1112",[178,575.772,528,762.193,3692,730.268]],["content/1112",[]],["keywords/1112",[]],["title/1113",[24,399.849,31,850.325]],["content/1113",[4,8.955,41,6.654,181,6.414,233,4.412,379,6.345,757,9.556,1028,6.414,1509,11.577,2457,13.566,3692,11.092,4107,15.257]],["keywords/1113",[]],["title/1114",[233,226.502,379,325.758,1028,329.269,1509,594.358,3692,569.464]],["content/1114",[30,2.422,53,2.257,54,7.417,119,9.523,181,5.089,233,3.501,379,7.301,434,8.55,527,6.189,1445,6.71,1506,14.31,1509,9.187,1510,8.715,1513,14.31,2586,9.523,2730,9.647,3221,11.476,3222,14.958,3223,11.476,3224,11.476,3225,11.476,3692,8.802,3697,14.958,4108,10.765,4110,12.107,4111,12.107,4182,14.354]],["keywords/1114",[]],["title/1115",[22,530.099,317,355.985]],["content/1115",[0,3.1,4,3.299,23,3.585,30,3.228,53,1.048,60,4.892,69,9.161,71,5.948,79,1.705,80,1.798,93,8.538,102,4.042,162,2.807,221,1.918,239,2.407,249,9.781,369,2.628,375,2.801,376,2.801,378,2.801,385,2.556,388,2.556,389,2.556,423,10.903,461,5.615,501,2.381,540,4.539,557,9.025,563,5.19,588,1.798,670,3.119,719,8.329,752,12.691,794,6.801,856,5.509,1166,15.293,1943,2.708,1952,6.331,3572,10.24,3692,4.086,3757,6.547,3826,13.369,4116,2.801,4117,2.801,4118,2.801,4119,2.801,4120,4.906,4121,4.906,4122,4.906,4123,2.801,4124,2.801,4125,3.208,4126,5.62,4131,3.041,4132,2.801,4133,2.801,4134,3.208,4136,16.134,4139,16.134,4140,14.104,4141,16.134,4151,5.327,4183,9.649,4184,8.036,4185,8.036,4186,8.036,4187,3.803,4188,3.437,4189,3.803,4190,3.803,4191,12.14,4192,8.892,4193,8.892,4194,8.892,4195,8.892,4196,8.892,4197,6.663,4198,8.892,4199,3.803,4200,3.803,4201,8.892]],["keywords/1115",[]],["title/1116",[24,478.518]],["content/1116",[0,2.103,4,6.711,23,5.465,24,2.614,30,4.037,53,1.425,60,2.561,71,6.677,162,5.711,239,5.737,311,4.789,338,2.661,369,6.262,375,6.674,376,6.674,378,6.674,385,6.092,387,6.933,388,6.092,389,6.092,588,4.284,670,5.695,794,12.418,856,10.058,1028,3.214,1494,5.559,1541,6.674,1943,6.454,2742,14.671,2847,7.247,3692,8.312,3757,11.954,4116,6.674,4117,6.674,4118,6.674,4119,6.674,4120,9.98,4121,9.98,4122,9.98,4123,6.674,4124,6.674,4125,7.646,4131,7.247,4132,6.674,4133,6.674,4183,14.671,4184,14.671,4185,14.671,4186,14.671,4188,8.192,4202,9.065,4203,9.065,4204,9.065,4205,13.554,4206,9.065]],["keywords/1116",[]],["title/1117",[0,194.094,1,111.092,2,391.076,3,755.984,11,211.281,335,350.854]],["content/1117",[0,3.056,1,2.649,2,9.967,11,5.384,23,5.311,114,6.864,129,10.531,173,10.531,180,5.935,300,8.246,306,10.801,335,8.366,466,8.16,533,7.386,535,5.626,571,6.643,586,8.768,615,5.905,705,3.925,972,7.846,995,10.075,1100,10.531,1267,6.482,1562,10.291,1619,12.791,1709,11.903,2662,11.47,3800,11.47,4108,9.878,4207,13.171,4208,13.171]],["keywords/1117",[]]],"invertedIndex":[["",{"_index":30,"title":{"124":{"position":[[15,1]]},"160":{"position":[[27,1]]},"176":{"position":[[9,1],[26,1],[44,1]]},"220":{"position":[[9,1]]},"283":{"position":[[21,1]]},"496":{"position":[[42,1]]},"497":{"position":[[50,1]]},"498":{"position":[[25,1]]},"499":{"position":[[46,1]]},"500":{"position":[[28,1]]},"501":{"position":[[52,1]]},"502":{"position":[[23,1]]},"503":{"position":[[62,1]]},"516":{"position":[[30,1]]},"517":{"position":[[38,1]]},"518":{"position":[[43,1]]},"519":{"position":[[54,1]]},"520":{"position":[[92,1],[116,1],[141,1],[151,1]]},"692":{"position":[[15,1]]},"730":{"position":[[27,1]]},"746":{"position":[[9,1],[26,1],[44,1]]},"790":{"position":[[9,1]]},"853":{"position":[[21,1]]},"854":{"position":[[21,1]]},"1023":{"position":[[42,1]]},"1024":{"position":[[50,1]]},"1025":{"position":[[25,1]]},"1026":{"position":[[46,1]]},"1027":{"position":[[28,1]]},"1028":{"position":[[52,1]]},"1029":{"position":[[23,1]]},"1030":{"position":[[62,1]]},"1056":{"position":[[30,1]]},"1057":{"position":[[38,1]]},"1058":{"position":[[43,1]]},"1059":{"position":[[54,1]]}},"content":{"2":{"position":[[84,1]]},"5":{"position":[[0,1]]},"6":{"position":[[0,1],[52,1],[67,1]]},"7":{"position":[[89,1],[671,1],[951,1],[992,2],[1052,2]]},"8":{"position":[[0,1],[70,1],[101,1],[112,1],[126,1],[184,1],[219,1]]},"10":{"position":[[0,1]]},"14":{"position":[[182,2],[220,2],[265,2],[297,2],[334,1]]},"20":{"position":[[318,1],[411,1],[605,1]]},"21":{"position":[[653,1]]},"23":{"position":[[18,1],[24,1],[34,3],[38,1],[48,1],[83,1],[157,1],[228,1],[272,1],[312,1],[372,1],[457,1],[470,1],[512,1],[705,1],[761,1],[779,1]]},"28":{"position":[[0,1],[417,1],[492,1],[515,1],[517,2],[619,1],[649,1],[664,1],[666,2],[690,2],[745,1],[783,1],[792,3],[800,1],[809,3],[818,1],[851,1],[860,2],[870,1],[872,2],[875,1],[884,2],[901,2],[1095,1],[1206,1],[1223,1],[1252,1]]},"51":{"position":[[0,6],[17,19],[57,1],[63,44],[108,4],[113,3],[117,4],[142,42],[185,4],[190,9]]},"52":{"position":[[0,2],[13,4],[24,15],[60,3]]},"53":{"position":[[0,1],[22,1],[29,34],[64,1],[78,7],[96,25],[122,1],[136,31],[168,1],[182,7],[200,22],[233,8]]},"54":{"position":[[10,5],[20,6],[31,16]]},"55":{"position":[[0,1],[10,22],[43,2],[54,12],[75,5],[91,2],[129,1],[205,5],[263,1],[279,10],[298,4],[313,3],[333,1],[343,3],[425,6],[568,8],[593,37],[631,5],[654,15],[683,11],[704,33],[857,21],[891,18],[921,3],[930,1],[939,15],[964,4],[980,3],[989,22],[1012,4],[1028,3],[1051,18],[1079,4],[1095,3],[1104,25],[1130,4],[1146,3],[1169,21],[1203,4],[1219,3],[1228,28],[1257,4],[1273,3],[1296,24],[1321,5],[1357,13],[1391,54],[1455,18],[1510,10],[1529,4],[1566,4],[1588,1],[1608,5],[1624,3],[1642,3],[1651,17],[1669,16],[1693,6],[1730,6],[1747,4],[1761,5]]},"71":{"position":[[93,1],[95,1],[139,1],[179,1],[181,1],[190,1],[230,1],[266,1],[449,1],[498,1],[500,1],[502,1],[569,1],[610,1],[682,1],[726,1],[766,1],[768,1],[777,1],[817,1],[853,1],[1036,1],[1085,1],[1087,1],[1089,1],[1091,1]]},"72":{"position":[[118,1],[159,1],[161,1],[233,1],[277,1],[317,1],[319,1],[328,1],[368,1],[404,1],[587,1],[636,1],[638,1],[640,2],[643,1],[715,1],[761,1],[801,1],[803,1],[812,1],[854,1],[890,1],[951,1],[953,3],[957,1],[959,1],[961,1],[963,1],[965,1]]},"73":{"position":[[142,1],[183,1],[255,1],[299,1],[339,1],[341,1],[350,1],[390,1],[426,1],[609,1],[658,1],[660,1],[662,1],[664,1]]},"74":{"position":[[103,1],[105,1],[149,1],[189,1],[191,1],[200,1],[248,1],[284,1],[372,1],[374,2],[377,1],[379,1],[381,1],[465,1],[523,1],[595,1],[639,1],[679,1],[681,1],[690,1],[738,1],[774,1],[862,1],[864,2],[867,1],[869,1],[871,1],[873,1]]},"75":{"position":[[145,1],[186,1],[258,1],[302,1],[342,1],[344,1],[353,1],[401,1],[437,1],[525,1],[527,2],[530,1],[532,1],[534,1],[536,1]]},"77":{"position":[[92,1],[94,1],[104,1],[307,1],[325,1],[327,2],[345,1],[403,2],[414,1],[422,1],[473,2],[486,1],[537,1],[539,1],[541,1],[543,1],[609,1],[650,1],[852,1],[862,1],[1065,1],[1083,1],[1085,2],[1103,1],[1161,2],[1172,1],[1180,1],[1231,2],[1244,1],[1295,1],[1297,1],[1299,1],[1301,1],[1303,1]]},"78":{"position":[[92,1],[94,1],[104,1],[307,1],[325,1],[327,2],[345,1],[374,2],[385,1],[393,1],[444,2],[457,1],[508,1],[510,1],[512,1],[514,1],[756,1],[797,1],[999,1],[1009,1],[1212,1],[1230,1],[1232,2],[1250,1],[1279,2],[1290,1],[1298,1],[1349,2],[1362,1],[1413,1],[1415,1],[1417,1],[1419,1],[1421,1]]},"79":{"position":[[116,1],[157,1],[159,1],[361,1],[371,1],[574,1],[592,1],[594,2],[612,1],[670,2],[681,1],[689,1],[740,2],[753,1],[804,1],[806,1],[808,1],[810,2],[813,1],[1007,1],[1017,1],[1154,1],[1172,1],[1174,2],[1192,1],[1245,2],[1256,1],[1268,1],[1319,2],[1332,1],[1383,1],[1385,1],[1387,1],[1389,1],[1391,1],[1393,1]]},"80":{"position":[[151,1],[192,1],[394,1],[404,1],[607,1],[625,1],[627,2],[645,1],[703,2],[714,1],[722,1],[773,2],[786,1],[837,1],[839,1],[841,1],[843,1],[845,1]]},"81":{"position":[[100,1],[102,1],[112,1],[315,1],[333,1],[335,2],[353,1],[411,2],[422,1],[430,1],[481,2],[494,1],[545,1],[547,1],[549,1],[551,1],[647,1],[705,1],[715,1],[918,1],[936,1],[938,2],[956,1],[1014,2],[1025,1],[1033,1],[1084,2],[1097,1],[1148,1],[1150,1],[1152,1],[1154,1]]},"82":{"position":[[154,1],[195,1],[397,1],[407,1],[610,1],[628,1],[630,2],[648,1],[706,2],[717,1],[725,1],[776,2],[789,1],[840,1],[842,1],[844,1],[846,1],[848,1]]},"83":{"position":[[126,1],[201,1],[203,1],[268,1],[270,1],[316,1],[318,1],[320,2],[323,1],[388,1],[390,1],[454,2],[457,1],[521,1],[523,1],[525,1],[527,2],[544,2],[547,1]]},"84":{"position":[[161,1],[236,1],[301,1],[303,1],[1477,2],[1480,1],[2654,1],[2656,1],[2658,2],[2675,2],[2678,1]]},"86":{"position":[[90,1],[92,1],[213,2],[325,2],[328,1],[433,2],[436,1],[546,1],[548,2],[569,1],[579,1],[761,1],[778,2],[831,2],[842,1],[850,1],[901,2],[914,1],[965,1],[967,2],[985,1],[1043,1],[1045,1],[1047,1],[1049,1]]},"89":{"position":[[83,1],[85,1],[210,2],[322,2],[325,1],[430,2],[433,1],[543,1],[545,2],[566,1],[576,1],[758,1],[775,2],[828,2],[839,1],[847,1],[898,2],[911,1],[962,1],[964,2],[982,1],[1040,1],[1042,1],[1044,1],[1046,1]]},"91":{"position":[[109,1],[111,1],[143,1],[224,1],[226,1],[228,1]]},"93":{"position":[[138,1],[153,1],[155,3],[166,1],[183,1],[230,1],[232,1],[234,1],[251,1],[291,1],[311,1],[333,1],[356,1],[409,1],[446,1],[469,1],[492,1],[559,1],[561,3],[574,1],[576,3],[590,1],[594,2],[597,1],[614,1],[654,1],[674,1],[696,1],[719,1],[772,1],[809,1],[832,1],[855,1],[922,1],[924,3],[937,1],[939,3],[953,1],[957,2],[960,1],[977,1],[1017,1],[1037,1],[1059,1],[1082,1],[1135,1],[1172,1],[1195,1],[1218,1],[1286,1],[1288,3],[1301,1],[1303,3],[1317,1],[1321,2],[1324,1],[1341,1],[1381,1],[1401,1],[1423,1],[1446,1],[1499,1],[1536,1],[1559,1],[1582,1],[1650,1],[1652,3],[1665,1],[1667,3],[1681,1],[1685,2],[1688,2],[1700,1],[1718,1],[1725,1]]},"94":{"position":[[150,1],[165,1],[167,3],[178,1],[195,1],[240,1],[242,1],[259,1],[299,1],[319,1],[341,1],[364,1],[417,1],[454,1],[477,1],[500,1],[567,1],[569,3],[582,1],[584,3],[598,1],[602,2],[614,1],[632,1],[639,1]]},"95":{"position":[[98,1],[100,1],[225,2],[295,1],[310,1],[312,3],[323,1],[340,1],[388,1],[405,1],[423,1],[430,1]]},"96":{"position":[[155,1],[170,1],[172,3],[183,1],[200,1],[248,1],[265,1],[283,1],[290,1]]},"97":{"position":[[203,1],[218,1],[220,3],[231,1],[248,1],[298,1],[315,1],[333,1],[340,1]]},"98":{"position":[[207,1],[335,1]]},"100":{"position":[[90,1],[92,1],[102,1],[193,2],[211,1],[236,2],[247,1],[260,1],[281,2],[318,1],[320,1],[322,1],[386,1],[864,2],[1025,1],[1038,2],[1057,1],[1059,2],[1062,1],[1064,2],[1100,2],[1142,2],[1178,1],[1180,1],[1182,2],[1201,1]]},"101":{"position":[[125,1],[222,1],[606,2],[767,1],[780,2],[799,1],[801,2],[804,1],[806,2],[842,2],[884,2],[920,1],[922,1],[924,1],[926,2],[945,1]]},"102":{"position":[[122,1],[597,2],[758,1],[771,2],[790,1],[792,2],[795,1],[797,2],[833,2],[875,2],[911,1],[913,1],[915,2],[934,1]]},"103":{"position":[[128,1],[229,1],[553,1],[563,1],[653,2],[671,1],[769,1],[818,1],[831,2],[850,1],[852,2],[855,1],[857,2],[895,2],[906,1],[919,1],[940,2],[977,1],[979,1],[981,2],[998,2],[1001,1]]},"105":{"position":[[159,1],[161,1],[204,1],[206,1],[267,1],[388,1]]},"106":{"position":[[91,1],[93,1],[136,1],[138,1],[199,1],[320,1]]},"107":{"position":[[7505,1]]},"109":{"position":[[98,1],[100,1],[187,1],[189,1],[261,1],[385,1]]},"110":{"position":[[128,1],[143,1],[145,3],[156,1],[173,1],[223,1],[225,1],[227,1],[244,1],[283,1],[326,1],[358,1],[383,1],[385,1],[400,1],[402,2],[405,1],[422,1],[461,1],[504,1],[536,1],[562,1],[564,1],[579,1],[581,2],[584,1],[601,1],[640,1],[666,1],[698,1],[719,1],[721,2],[724,1],[726,2],[738,1],[756,1],[763,1]]},"111":{"position":[[148,1],[163,1],[165,3],[176,1],[193,1],[241,1],[243,1],[260,1],[299,1],[342,1],[374,1],[399,1],[401,1],[416,1],[418,2],[430,1],[448,1],[455,1]]},"112":{"position":[[108,1],[110,1],[165,2],[251,1],[266,1],[268,3],[279,1],[296,1],[347,1],[364,1],[382,1],[389,1]]},"113":{"position":[[153,1],[168,1],[170,3],[181,1],[198,1],[249,1],[266,1],[284,1],[291,1]]},"114":{"position":[[185,1],[313,1]]},"115":{"position":[[189,1],[204,1],[206,3],[217,1],[234,1],[287,1],[304,1],[322,1],[329,1]]},"119":{"position":[[23,1]]},"121":{"position":[[0,1],[11,1],[95,1],[169,1],[244,1],[314,1],[394,1],[419,1],[477,1],[534,1],[589,1]]},"123":{"position":[[13,1],[115,1],[213,1]]},"124":{"position":[[192,1]]},"125":{"position":[[0,1]]},"128":{"position":[[77,1]]},"130":{"position":[[182,1]]},"133":{"position":[[2068,6]]},"136":{"position":[[674,1]]},"148":{"position":[[89,1],[172,1],[262,1]]},"151":{"position":[[514,1],[534,1],[536,2],[555,2],[558,2],[572,2],[575,2],[593,2],[596,2],[618,2],[637,2],[657,2],[672,2],[694,2],[697,2],[716,2],[719,1],[739,1],[881,1],[1367,1],[1387,1],[1389,2],[1408,2],[1411,1],[1424,1],[1426,2],[1440,2],[1450,1],[1452,2],[1470,2],[1473,1],[1486,1],[1488,2],[1507,2],[1510,1],[1523,1],[1525,2],[1544,3],[1551,1],[1560,1],[1579,2],[1582,1],[1584,1],[1597,1],[1611,2],[1614,1],[1616,1],[1629,1],[1650,2],[1653,1],[1662,1],[1664,2],[1683,2],[1686,1],[1688,1],[1701,1],[1703,1],[1723,1],[1725,1],[1727,1],[1729,1],[1731,1],[1751,1],[1753,1],[1755,2],[1774,2],[1777,1],[1779,2],[1793,2],[1796,1],[1798,2],[1816,2],[1819,1],[1821,2],[1840,2],[1843,1],[1845,2],[1864,2],[1867,1],[1886,2],[1889,1],[1903,3],[1910,1],[1931,2],[1934,2],[1953,2],[1956,1],[1976,1]]},"152":{"position":[[140,6],[161,6]]},"153":{"position":[[61,1]]},"154":{"position":[[886,6],[907,6],[1177,1]]},"156":{"position":[[609,1],[1025,4],[1185,4]]},"160":{"position":[[69,2],[131,2],[264,2],[318,2],[384,2],[434,2],[484,2]]},"171":{"position":[[1435,1],[1446,1],[1635,2],[1648,1],[1717,2],[1732,1],[1747,1],[1813,3],[1817,1],[1819,1]]},"175":{"position":[[87,1]]},"176":{"position":[[378,1],[397,1],[621,1],[1437,2]]},"177":{"position":[[219,1]]},"179":{"position":[[1,1],[67,1],[69,1],[84,1],[90,1],[101,1],[107,1],[109,1],[126,1],[128,1],[194,1],[196,1],[262,1],[264,1],[266,1],[276,1],[278,1],[288,1],[290,1],[301,1],[303,1],[314,1],[316,1],[329,2],[332,1],[344,1],[379,1],[391,2],[394,1],[396,1],[406,1],[408,1],[418,1],[420,1],[431,1],[433,1],[444,1],[446,1],[459,2],[462,1],[528,1],[530,1],[532,1],[534,1],[536,1],[554,1],[556,1],[574,1],[576,1],[598,1],[600,1],[602,1],[616,1],[636,1],[656,1],[658,1],[660,1],[671,1],[673,1],[683,1],[695,1],[697,1],[699,1],[701,1],[719,1],[721,1],[739,1],[741,1],[763,1],[765,1],[767,1],[796,1],[798,1],[822,1],[824,1],[826,1],[828,1],[830,1],[848,1],[850,1],[852,1],[870,1],[872,1],[874,1],[876,1],[884,1],[886,1],[888,1],[890,1],[908,1],[910,1],[912,1],[914,1],[916,1],[982,1],[1190,1],[1337,1]]},"181":{"position":[[210,1],[250,1],[252,1],[263,1],[265,1],[284,1],[291,1],[293,1],[295,1],[306,1],[308,1],[310,1],[345,1],[347,1],[349,1],[360,1],[362,1],[364,1],[391,1],[393,1],[395,1],[413,1],[415,1],[426,1],[428,1],[430,1],[432,1],[434,1],[454,1],[469,1],[471,1],[493,1],[495,1],[513,1],[515,1],[517,1],[519,1],[521,1],[556,1],[558,1],[560,1],[578,1],[580,1],[582,1],[584,1],[586,1],[621,1],[623,1],[625,1],[636,1],[638,1],[640,1],[672,1],[674,1],[676,1],[690,1],[692,1],[694,1],[729,1],[731,1],[747,1],[749,1],[751,1],[786,1],[788,1],[790,1],[792,1],[794,1],[796,1],[828,1],[830,1],[832,1],[846,1],[848,1],[850,1],[885,1],[887,1],[889,1],[929,1],[931,1],[933,1],[964,1],[966,1],[1000,1],[1033,1],[1067,1]]},"182":{"position":[[356,1],[1332,1]]},"188":{"position":[[191,1],[193,3],[439,3],[443,1],[523,1],[544,1],[558,1],[590,1],[610,1]]},"189":{"position":[[230,1],[250,1],[264,1],[296,1],[298,1],[305,1],[335,1],[337,1],[373,2],[381,1],[400,1],[493,1],[495,1],[728,1],[748,1],[762,1],[794,1],[796,1],[803,1],[833,1],[835,1],[877,2],[885,1],[904,1],[1000,1],[1002,1],[1119,1],[1139,1],[1141,1],[1203,1],[1235,1],[1237,1],[1244,1],[1263,1],[1272,1],[1309,1],[1325,1],[1400,1],[1402,1],[1465,1],[1502,3],[1506,1],[1508,1],[1510,1],[1512,1]]},"190":{"position":[[756,1]]},"196":{"position":[[1,1],[19,1],[21,1],[38,1],[40,1],[57,1],[59,1],[77,1],[92,1],[111,1],[125,1],[127,1],[140,1],[147,1],[154,1],[167,1],[169,1],[179,1],[181,1],[199,1],[201,1],[218,1],[220,1],[237,1],[239,1],[257,1],[259,1],[261,1],[263,1],[265,1],[272,1],[274,1],[276,1],[278,1],[287,2],[326,2],[329,1],[371,1],[373,1],[375,1],[405,1],[407,1],[409,1],[437,1],[439,1],[441,1],[453,1],[455,1],[457,1],[459,1],[461,1],[463,1],[493,1],[495,1],[497,1],[530,1],[532,1],[534,1],[536,1],[538,1],[540,1],[542,1],[544,1],[546,1],[548,2],[567,1],[569,1],[571,1],[573,1],[575,1],[597,1],[599,1],[601,1],[622,1],[624,1],[626,1],[663,2],[666,1],[668,1],[682,1],[698,1],[700,1],[702,1],[733,2],[750,1],[752,1],[754,1],[756,1],[774,1],[788,1],[790,1],[792,1],[809,1],[826,2],[832,1],[834,1],[836,1],[866,1],[868,1],[870,1],[872,1],[874,1],[891,1],[893,1],[895,1],[897,1],[899,1],[901,1],[903,1],[913,1],[915,1],[917,1],[919,1],[921,1],[933,1],[935,1],[937,1],[939,1],[941,1],[950,1],[952,1],[954,1],[956,1],[958,1],[960,2],[1018,2],[1021,1],[1023,1],[1025,1],[1027,1],[1029,1],[1031,1],[1033,1],[1068,1],[1070,1],[1072,1],[1074,1],[1084,1],[1086,2],[1092,1],[1094,1],[1096,1],[1098,1],[1100,1],[1102,1],[1104,1],[1106,1],[1108,1],[1110,1],[1112,1],[1114,1],[1116,1]]},"199":{"position":[[181,1],[367,1],[378,1],[567,2],[580,1],[649,2],[664,1],[679,1],[745,3],[749,1],[751,1],[797,1],[857,1],[1098,1],[1167,3]]},"200":{"position":[[130,1],[183,1],[185,1],[200,1],[202,1],[204,1],[222,1],[224,1],[234,2],[261,1],[263,1],[265,1],[267,1],[269,1],[271,1],[273,1],[275,1],[277,1],[292,1],[294,1],[296,1],[314,1],[316,1],[318,1],[320,1],[322,1],[331,1],[333,1],[351,1],[377,1],[388,1],[402,2],[430,1],[443,1],[475,1],[490,1],[492,1],[500,1],[510,1],[512,1],[521,1],[523,1],[525,1],[527,1],[529,1],[547,1],[549,1],[567,1],[569,1],[571,1],[591,1],[606,1],[608,1],[610,1],[625,1],[645,1],[647,1],[649,1],[651,1],[669,1],[671,1],[680,1],[689,1],[691,1],[693,1],[695,1],[697,1],[699,1],[701,1],[703,1],[705,1],[707,1],[725,1],[727,1],[729,1],[743,1],[745,1],[747,1],[760,1],[762,1],[764,1],[766,1],[775,1],[784,1],[786,1],[788,1],[790,1],[792,1],[794,1],[796,1],[798,1],[800,1],[802,1],[820,1],[822,1],[824,1],[826,1],[828,1],[830,1],[832,1],[834,1],[836,6],[843,1],[845,1],[847,1],[849,1],[867,1],[869,1],[871,1],[873,1],[875,1],[928,1],[1456,1],[1474,1],[1476,1],[1495,1],[1511,1],[1513,1],[1528,1],[1530,1],[1532,2],[1549,1],[1551,1],[1561,1],[1563,1],[1581,1],[1583,1],[1602,1],[1604,1],[1606,1],[1608,1],[1610,1],[1612,1],[1616,1],[1637,1],[1639,1],[1658,1],[1660,1],[1662,1],[1680,2],[1683,1],[1696,1],[1698,1],[1700,1],[1715,3],[1722,2],[1734,1],[1736,1],[1738,1],[1750,2],[1753,1],[1772,1],[1774,1],[1776,1],[1784,1],[1794,2],[1797,1],[1799,1],[1801,1],[1803,1],[1805,1],[1823,2],[1826,1],[1828,1],[1844,2],[1847,1],[1849,1],[1851,2],[1854,1],[1856,1],[1864,1],[1874,2],[1877,1],[1879,1],[1881,1],[1883,1],[1885,1],[1903,2],[1906,1],[1908,1],[1922,2],[1925,1],[1927,1],[1937,2],[1940,1],[1942,1],[1950,1],[1960,2],[1963,1],[1965,1],[1967,1],[1969,1],[1971,1],[1989,2],[1992,1],[1994,1],[2011,2],[2014,1],[2016,1],[2026,2],[2029,1],[2031,1],[2049,2],[2052,1],[2054,1],[2056,1],[2077,1],[2147,1],[2165,1],[2167,1],[2186,1],[2202,1],[2204,1],[2219,1],[2221,1],[2223,2],[2240,1],[2242,1],[2252,1],[2254,1],[2272,1],[2274,1],[2293,1],[2295,1],[2297,1],[2301,1],[2320,1],[2322,1],[2341,1],[2356,1],[2358,1],[2373,1],[2390,2],[2396,2],[2407,1],[2409,1],[2428,1],[2430,1],[2449,1],[2593,1],[2664,1]]},"201":{"position":[[783,1]]},"204":{"position":[[21,2]]},"208":{"position":[[1,1],[16,1],[18,1],[63,1],[79,1],[81,1],[83,1],[103,1],[105,1],[107,1],[109,2],[114,1],[126,1],[128,1],[130,1],[141,1],[143,1],[145,1],[166,1],[168,1],[183,1],[185,1],[187,1],[189,1],[191,1],[193,1],[195,1],[204,1],[215,1],[217,1],[232,1],[234,1],[236,1],[238,1],[240,1],[254,1],[256,1],[258,1],[260,1],[280,1],[282,1],[288,1],[290,1],[292,1],[294,1],[306,1],[309,1],[311,1],[326,1],[328,1],[330,1],[332,1],[347,1],[349,1],[351,1],[353,1],[355,1],[357,1],[359,1],[361,1],[363,1],[365,1],[367,1],[369,1],[378,1],[389,1],[391,1],[393,1],[395,1],[397,1],[399,1],[410,1],[444,1],[446,1],[448,1],[463,1],[465,1],[484,1],[486,1],[505,1],[507,1],[509,1],[511,1],[522,1],[524,1],[526,1],[528,1],[547,1]]},"215":{"position":[[101,1],[111,1],[113,1],[126,1],[134,2],[149,1],[151,1],[162,1],[164,1],[174,1],[176,1],[189,1],[191,1],[208,1],[221,1],[223,1],[238,2],[261,1],[263,1],[274,1],[276,1],[294,1],[296,1],[309,1],[311,1],[328,1],[330,1],[341,2],[379,1],[392,1],[394,1],[412,1],[414,1],[427,1],[429,1],[440,1],[442,1],[444,1],[462,1],[464,1],[466,1],[481,1],[483,1],[506,1],[508,1],[510,1],[512,1],[530,1],[532,1],[554,1],[556,1],[571,1],[579,1],[581,1],[604,1],[606,1],[608,1],[610,1],[628,1],[647,1],[649,1],[665,1],[667,1],[690,1],[692,1],[710,1],[730,1],[732,1],[755,1],[777,1],[779,1],[802,1],[819,1],[821,1],[844,1],[868,1],[870,1],[893,1],[914,1],[916,1],[939,1],[986,1],[1000,1]]},"217":{"position":[[1460,3],[2085,2],[2180,2]]},"219":{"position":[[80,1]]},"229":{"position":[[1,1],[37,1],[39,1],[41,1],[43,1],[45,1],[58,1],[60,1],[73,1],[75,1],[77,1],[107,1],[109,1],[111,1],[130,1],[132,1],[134,1],[147,1],[149,1],[162,1],[164,1],[184,1],[186,1],[188,1],[190,1],[192,1],[209,1],[211,1],[215,1],[225,1],[247,1],[268,1],[270,1],[272,1],[274,1],[293,1],[295,1],[297,1],[299,1],[301,1],[304,1],[326,1],[328,1],[347,1],[349,1],[351,1],[353,1],[355,1],[357,1],[373,1],[380,1],[382,1],[384,1],[386,1],[388,1],[390,1],[398,1],[423,1],[425,1],[444,1],[446,1],[464,1],[466,1],[491,1],[493,1],[512,1],[514,1],[530,1],[532,1],[557,1],[559,1],[561,1],[563,1],[582,1],[584,3]]},"230":{"position":[[230,1],[279,1],[290,1],[292,1],[298,2],[303,1],[305,1],[316,1],[320,1],[337,1],[339,1],[354,1],[356,1],[368,1],[370,1],[381,1],[383,1],[394,1],[396,1],[398,1],[400,1],[406,4],[411,3],[422,1],[424,1],[435,1],[437,1],[452,1],[454,1],[456,1],[458,1],[460,1],[477,1],[479,1],[490,1],[492,1],[494,1],[499,2],[504,1],[506,1],[517,1]]},"231":{"position":[[0,1],[12,1],[14,1],[16,1],[18,1],[30,1],[34,1],[36,1],[71,1],[73,1],[75,1],[77,1],[79,1],[81,1],[88,1],[90,1],[112,1],[114,1],[116,1],[128,1],[130,1],[132,1],[134,1],[136,1],[138,1],[140,1],[148,1],[150,1],[152,1],[154,1],[176,1],[178,1],[180,1],[182,1],[184,1],[186,1],[188,1],[194,1],[196,1],[198,1],[200,1],[202,1],[211,1],[213,1],[218,1],[220,1],[222,1],[234,1],[236,1],[238,1],[240,1],[242,1],[244,1],[246,1],[254,1],[256,1],[258,1],[260,1],[262,1],[264,1],[275,1],[277,1],[279,1],[281,1],[283,1],[285,1],[287,1],[289,1],[301,1],[303,1],[305,1],[307,1],[309,1],[311,1],[316,1],[318,1],[320,1],[326,1],[333,2],[336,1],[343,1],[345,1],[367,1],[369,1],[374,2],[388,1],[393,1],[395,1],[397,1],[399,1],[401,1],[403,1],[405,1],[407,1],[409,1],[431,1],[433,1],[435,1],[437,1],[439,1],[450,1],[452,1],[464,1],[466,1],[468,1],[470,1],[472,1],[474,1],[476,1],[484,1],[486,1],[494,1],[496,1],[498,1],[500,1],[502,1],[511,1],[513,1],[518,1],[520,1],[522,1],[524,1],[526,1],[528,1],[530,1],[552,1],[554,1],[556,1],[570,1],[572,1],[584,1],[586,1],[588,1],[590,1],[592,1],[594,1],[596,1],[604,1],[606,1],[614,1],[616,1],[618,1],[620,1],[642,1],[644,1],[646,1],[648,1],[650,1],[652,1],[654,1],[656,1],[669,1],[671,1],[673,1],[679,1],[683,1],[685,1],[687,1],[694,1],[696,1],[718,1],[720,1],[722,1],[724,1],[726,1],[761,1],[763,1],[775,1]]},"232":{"position":[[1,1],[72,1],[74,1],[76,1],[94,1],[96,1],[115,1],[117,1],[138,1],[140,1],[142,1],[144,1],[157,1],[177,1],[196,1],[198,1],[200,1],[202,1],[208,1],[215,1],[217,1],[219,1],[221,1],[223,1],[225,1],[243,1],[245,1],[264,1],[266,1],[287,1],[289,1],[291,1],[293,1],[295,1],[297,1],[315,1],[317,1],[336,1],[338,1],[359,1],[361,1],[363,1],[365,1],[382,1],[403,1],[426,1],[428,1],[430,1],[432,1],[434,1],[436,1],[438,1],[440,1],[442,1],[444,1],[446,1],[448,1],[466,1],[468,1],[487,1],[489,1],[510,1],[512,1],[514,1],[516,1],[518,1],[520,1],[538,1],[540,1],[559,1],[561,1],[582,1],[584,1],[586,1],[588,1],[602,1],[615,1],[631,1],[633,1],[635,1],[637,1],[639,1],[657,1],[659,1],[661,1],[663,1],[665,1],[667,1],[685,1],[687,1],[706,1],[708,1],[729,1],[731,1],[733,1],[804,1]]},"251":{"position":[[142,1],[151,1],[157,1],[163,1]]},"276":{"position":[[56,3]]},"279":{"position":[[26,1],[28,1]]},"283":{"position":[[101,1],[188,1],[226,1]]},"285":{"position":[[65,1]]},"286":{"position":[[48,1],[56,1],[64,1],[72,1],[81,1],[90,1]]},"287":{"position":[[22,1]]},"288":{"position":[[13,1],[15,1],[23,1]]},"292":{"position":[[31,1]]},"293":{"position":[[51,1]]},"297":{"position":[[26,1],[28,1]]},"298":{"position":[[119,1],[145,1],[154,1],[219,3]]},"300":{"position":[[277,1],[376,1],[442,1]]},"302":{"position":[[23,1],[122,1],[187,1]]},"314":{"position":[[81,1],[88,1],[122,1],[234,1],[1120,1],[1150,1],[1169,1],[1192,1],[1210,1],[1233,1],[1346,1],[1939,1],[2061,1]]},"315":{"position":[[232,1],[480,1],[482,2]]},"320":{"position":[[420,1],[469,3],[473,1],[475,7],[504,7],[512,1],[514,1],[549,1],[683,3],[737,1],[739,36],[776,1],[778,3],[925,1],[987,1],[1173,1],[1275,1],[1298,1]]},"329":{"position":[[70,1]]},"330":{"position":[[110,1],[129,1]]},"331":{"position":[[308,1],[310,1],[695,1],[797,1],[897,1],[923,1],[952,1],[982,1],[1013,1],[1062,1],[1129,1],[1226,1],[1283,1],[1318,1],[1999,1],[2069,56],[2126,1],[2157,1],[2159,1],[2161,1],[2163,1],[2209,1],[2211,1],[2213,1],[2215,1],[2231,1],[2233,56],[2290,1]]},"332":{"position":[[0,1],[2,1],[198,1],[240,1],[294,1]]},"334":{"position":[[288,1],[290,1],[372,1],[557,1],[559,1],[583,1],[604,1],[644,2],[690,2],[698,1],[801,1],[822,1],[832,1],[834,1],[886,1],[907,1],[947,1],[1144,1],[1146,1],[1236,1],[1238,1],[1266,1],[1291,1],[1331,2],[1377,2],[1385,1],[1488,1],[1513,1],[1523,1],[1525,1],[1577,1],[1602,1],[1642,1]]},"336":{"position":[[384,2],[412,1],[778,1],[780,2],[856,1]]},"338":{"position":[[218,1],[232,1],[278,1],[290,1]]},"339":{"position":[[189,1],[232,1],[340,1],[441,1]]},"341":{"position":[[112,1],[206,1],[273,1],[349,1],[498,1]]},"342":{"position":[[56,1],[68,1],[75,1],[169,1],[176,1]]},"343":{"position":[[116,1]]},"345":{"position":[[58,1],[151,1],[283,1]]},"348":{"position":[[0,1]]},"349":{"position":[[66,1],[93,1],[261,1],[322,1],[355,1],[436,1]]},"350":{"position":[[77,1]]},"352":{"position":[[1020,1],[1031,1],[1042,1],[1071,1],[1082,1],[1093,1]]},"375":{"position":[[465,2],[468,1],[485,2],[488,1],[533,1],[540,1],[556,1],[571,1],[577,1],[584,1],[595,1],[606,1],[614,1],[622,1],[629,1],[635,1],[645,1],[651,1],[664,1],[676,1],[686,1],[699,1],[717,1],[725,1],[734,1],[740,2],[743,1],[773,2],[776,1],[893,2],[896,1],[912,2],[915,1],[937,2],[940,1],[966,2],[969,1],[988,2],[991,1],[1011,2],[1014,1],[1048,2],[1051,1],[1077,2],[1080,1],[1189,2],[1230,1],[1434,2],[1437,1],[1479,2],[1482,1],[1530,2],[1533,1],[1636,3],[1656,3]]},"382":{"position":[[25,1]]},"383":{"position":[[498,1],[1223,1]]},"384":{"position":[[238,1],[889,1],[947,1],[1142,1]]},"386":{"position":[[224,2]]},"389":{"position":[[0,1],[213,1],[258,1],[365,1],[408,1],[472,1],[529,1],[600,1],[629,1],[656,1],[973,1],[1016,1],[1077,1],[1105,1],[1153,1],[1220,2],[1223,1],[1294,2],[1297,1],[1344,2],[1347,1],[1357,2],[1402,2],[1405,1],[1410,1],[1445,2],[1448,1],[1464,2],[1500,2],[1516,1],[1612,1],[1624,1],[1905,3],[7041,3],[7063,3],[7088,3],[7114,3],[7140,3],[7166,3],[7192,3],[7218,3],[7244,3],[7270,3],[7296,3],[7322,3],[7348,3],[7374,3],[7400,3],[7426,3],[7452,3],[7478,3],[7504,3],[7530,3],[7556,3],[7583,3],[7693,3],[7735,3],[7844,3],[7882,3],[8007,3],[8053,3],[8178,3],[8227,3],[8335,3],[8375,3],[8495,3],[8543,3],[8656,3],[8697,3],[8841,3],[8903,3],[9047,3],[9109,3],[9239,3],[9290,3],[9420,3],[9471,3],[9597,3],[9647,3],[9753,3],[9781,3],[9896,3],[9937,3],[10067,3],[10117,3],[10227,3],[10266,3],[10368,3],[10400,3],[10512,3],[10553,3],[10674,3],[10722,3],[10845,3],[10889,3],[11014,3],[11058,3],[11157,3],[11188,3],[11309,3],[11351,3],[11476,3],[11520,3],[11645,3],[11696,3],[11836,3],[11891,3],[12021,3],[12071,3],[12201,3],[12248,3],[12365,3],[12405,3],[12515,3],[12552,3],[12685,3],[12741,3],[12869,3],[12919,3],[13037,3],[13080,3],[13135,3],[13189,3],[13232,3],[13271,3],[13318,3],[13368,3],[13409,3],[13534,3],[13576,3],[13673,3],[13736,3],[13788,3],[13840,3],[13891,3],[13920,3],[13962,3],[14013,3],[14053,3],[14086,3],[14128,3],[14364,1],[14519,1],[15106,3],[15244,3],[15351,3],[15383,3],[15502,3],[15649,3],[15742,2],[15775,2],[15796,2],[15846,2],[16351,3],[16407,3],[16458,3],[16509,3],[16640,3],[16773,3],[16909,3],[17142,3],[17183,3],[17221,3],[17278,3],[17329,3],[17373,3],[17427,3],[17482,3],[22759,3],[22781,3],[22806,3],[22832,3],[22858,3],[22884,3],[22910,3],[22936,3],[22962,3],[22988,3],[23014,3],[23040,3],[23066,3],[23092,3],[23118,3],[23144,3],[23170,3],[23196,3],[23222,3],[23248,3],[23274,3],[23301,3],[23411,3],[23453,3],[23562,3],[23600,3],[23725,3],[23771,3],[23896,3],[23945,3],[24053,3],[24093,3],[24213,3],[24261,3],[24374,3],[24415,3],[24559,3],[24621,3],[24765,3],[24827,3],[24957,3],[25008,3],[25138,3],[25189,3],[25315,3],[25365,3],[25471,3],[25499,3],[25614,3],[25655,3],[25785,3],[25835,3],[25945,3],[25984,3],[26086,3],[26118,3],[26230,3],[26271,3],[26392,3],[26440,3],[26563,3],[26607,3],[26732,3],[26776,3],[26875,3],[26906,3],[27027,3],[27069,3],[27194,3],[27245,3],[27385,3],[27440,3],[27570,3],[27620,3],[27750,3],[27797,3],[27914,3],[27954,3],[28064,3],[28101,3],[28234,3],[28290,3],[28418,3],[28468,3],[28586,3],[28629,3],[28684,3],[28738,3],[28781,3],[28820,3],[28867,3],[28917,3],[28958,3],[29083,3],[29125,3],[29222,3],[29285,3],[29337,3],[29389,3],[29440,3],[29469,3],[29511,3],[29562,3],[29602,3],[29635,3],[29677,3],[29913,1],[30068,1],[30655,3],[30793,3],[30900,3],[30932,3],[31051,3],[31205,3],[31261,3],[31312,3],[31363,3],[31494,3],[31627,3],[31763,3],[31996,3],[32037,3],[32075,3],[32132,3],[32183,3],[32227,3],[32281,3],[32336,3]]},"391":{"position":[[225,1],[271,2],[417,1],[462,1],[535,1]]},"395":{"position":[[112,1]]},"398":{"position":[[402,1],[485,1]]},"400":{"position":[[153,1],[214,1]]},"401":{"position":[[171,1],[313,1]]},"406":{"position":[[266,1],[411,1],[498,1],[593,1],[878,2],[909,1],[985,2]]},"407":{"position":[[530,1],[573,1],[604,1],[652,1],[735,1],[920,1],[993,1],[1068,1],[1159,1],[1250,1],[1284,1],[1315,1]]},"413":{"position":[[17,1],[59,1],[117,1]]},"415":{"position":[[120,3],[310,3],[477,1],[485,1],[563,1],[598,2],[637,1],[805,1],[1368,1],[1520,1],[1535,1],[1560,1],[1624,1],[1687,1],[1757,1],[1759,1],[1812,1],[1845,1],[1929,1],[2050,1],[2279,2]]},"417":{"position":[[35,1]]},"423":{"position":[[58,1],[60,1],[104,1],[144,1],[146,1],[155,1],[195,1],[231,1],[414,1],[463,1],[465,1],[467,1],[525,1],[1127,2],[1163,1],[1165,2],[1184,1]]},"425":{"position":[[74,1],[146,1],[432,2],[468,1],[470,2],[473,1],[1005,2],[1041,1],[1043,2],[1046,1],[1324,2],[1360,1],[1362,1],[1364,2],[1383,1]]},"428":{"position":[[91,1],[693,2],[729,1],[731,2],[750,1]]},"431":{"position":[[59,1],[61,1],[105,1],[145,1],[147,1],[156,1],[204,1],[240,1],[328,1],[330,2],[333,1],[335,1],[337,1],[412,1],[832,2],[868,1],[870,2],[889,1]]},"434":{"position":[[94,1],[696,2],[732,1],[752,1]]},"438":{"position":[[58,1],[60,1],[70,1],[273,1],[291,1],[293,2],[311,1],[369,2],[380,1],[388,1],[439,2],[452,1],[503,1],[505,1],[507,1],[509,1],[566,1],[1132,2],[1278,2],[1453,2],[1623,1],[1625,2],[1640,1],[1642,2],[1661,1]]},"441":{"position":[[58,1],[60,1],[70,1],[273,1],[291,1],[293,2],[311,1],[340,2],[351,1],[359,1],[410,2],[423,1],[474,1],[476,1],[478,1],[480,1],[686,1],[1252,2],[1370,2],[1545,2],[1715,1],[1717,2],[1732,1],[1734,2],[1753,1]]},"443":{"position":[[73,1],[144,2],[724,2],[870,2],[1045,2],[1215,1],[1217,2],[1232,1],[1234,2],[1237,1],[1733,2],[1851,2],[2026,2],[2196,1],[2198,2],[2213,1],[2215,3],[2235,1]]},"446":{"position":[[103,1],[669,2],[787,2],[962,2],[1132,1],[1134,2],[1149,1],[1151,2],[1170,1]]},"449":{"position":[[59,1],[61,1],[71,1],[274,1],[292,1],[294,2],[312,1],[370,2],[381,1],[389,1],[440,2],[453,1],[504,1],[506,1],[508,1],[510,1],[597,1],[1163,2],[1309,2],[1484,2],[1654,1],[1656,2],[1671,1],[1673,2],[1692,1]]},"452":{"position":[[106,1],[644,2],[790,2],[965,2],[1135,1],[1137,2],[1152,1],[1154,2],[1173,1]]},"454":{"position":[[78,1],[149,2],[214,2],[262,2],[265,1],[316,2],[319,3],[339,1]]},"457":{"position":[[108,1],[242,2],[290,2],[293,1],[344,2],[347,2],[366,1]]},"460":{"position":[[450,1]]},"461":{"position":[[58,1],[60,1],[181,2],[293,2],[296,1],[401,2],[404,1],[514,1],[516,2],[537,1],[547,1],[729,1],[746,2],[799,2],[810,1],[818,1],[869,2],[882,1],[933,1],[935,2],[953,1],[1011,1],[1013,1],[1015,1],[1017,1],[1072,1],[1209,2],[1355,2],[1467,2],[1470,1],[1575,2],[1578,1],[1686,2],[1689,1],[1768,2],[1771,1],[1857,2],[1860,1],[1953,2],[1956,1],[2039,2],[2042,1],[2132,2],[2135,1],[2232,3],[2521,2],[2667,2],[2843,1],[2845,2],[3016,1],[3018,1],[3020,2],[3035,1],[3037,1],[3039,2],[3058,1]]},"463":{"position":[[71,1],[143,2],[211,2],[357,2],[469,2],[472,1],[577,2],[580,1],[688,2],[691,1],[770,2],[773,1],[859,2],[862,1],[955,2],[958,1],[1041,2],[1044,1],[1134,2],[1137,1],[1234,3],[1523,2],[1669,2],[1845,1],[1847,2],[2018,1],[2020,1],[2022,2],[2037,1],[2039,1],[2041,3],[2061,1]]},"466":{"position":[[59,1],[61,1],[186,2],[298,2],[301,1],[406,2],[409,1],[519,1],[521,2],[542,1],[552,1],[734,1],[751,2],[804,2],[815,1],[823,1],[874,2],[887,1],[938,1],[940,2],[958,1],[1016,1],[1018,1],[1020,1],[1022,1],[1098,1],[1235,2],[1385,2],[1497,2],[1500,1],[1605,2],[1608,1],[1716,2],[1719,1],[1798,2],[1801,1],[1887,2],[1890,1],[1983,2],[1986,1],[2069,2],[2072,1],[2162,2],[2165,1],[2262,3],[2551,2],[2697,2],[2872,2],[3042,1],[3044,2],[3059,1],[3061,1],[3063,2],[3082,1]]},"469":{"position":[[94,1],[231,2],[381,2],[493,2],[496,1],[601,2],[604,1],[712,2],[715,1],[794,2],[797,1],[883,2],[886,1],[979,2],[982,1],[1065,2],[1068,1],[1158,2],[1161,1],[1258,3],[1547,2],[1693,2],[1868,2],[2038,1],[2040,2],[2055,1],[2057,1],[2059,2],[2078,1]]},"472":{"position":[[58,1],[60,1],[92,1],[173,1],[175,1],[177,1],[255,1],[822,2],[968,2],[1143,2],[1313,1],[1315,2],[1330,1],[1332,2],[1351,1]]},"475":{"position":[[111,2],[138,1],[325,1]]},"479":{"position":[[58,1],[60,1],[70,1],[161,2],[179,1],[204,2],[215,1],[228,1],[249,2],[286,1],[288,1],[290,1],[346,1],[827,2],[1052,2],[1088,2],[1174,1],[1176,1],[1178,2],[1197,1]]},"482":{"position":[[107,1],[203,2],[574,2],[799,2],[835,2],[921,1],[923,1],[925,3],[945,1]]},"485":{"position":[[99,1],[562,2],[787,2],[823,2],[909,1],[911,1],[913,2],[932,1]]},"488":{"position":[[103,1],[592,2],[817,2],[853,2],[939,1],[941,1],[943,2],[962,1]]},"491":{"position":[[153,2],[160,4]]},"492":{"position":[[0,1],[10,1],[254,1],[272,1],[274,2],[292,1],[350,2],[361,1],[373,1],[423,1],[425,1],[427,1]]},"496":{"position":[[224,1],[233,1],[289,1],[492,1],[510,1],[512,2],[530,1],[588,2],[599,1],[607,1],[658,2],[671,1],[722,1],[724,1],[726,2]]},"497":{"position":[[286,1],[296,1],[499,1],[517,1],[519,2],[537,1],[595,2],[606,1],[618,1],[669,1],[671,1],[673,2]]},"498":{"position":[[159,1]]},"499":{"position":[[160,1]]},"502":{"position":[[144,1]]},"503":{"position":[[224,1]]},"507":{"position":[[32,1],[215,1],[339,1],[446,1],[572,1]]},"509":{"position":[[504,1],[557,1]]},"511":{"position":[[234,1],[328,1],[924,1],[940,1],[976,1],[1033,1],[1359,1]]},"517":{"position":[[440,1]]},"524":{"position":[[39,1],[48,21],[89,22],[112,1],[114,1],[116,1],[118,1],[134,1],[136,1],[138,1],[165,1],[167,1],[183,1],[185,1],[187,1],[189,1],[191,1],[193,1],[195,1],[197,63]]},"534":{"position":[[44,1]]},"541":{"position":[[18,1],[24,1],[34,3],[38,1],[48,1],[83,1],[157,1],[228,1],[272,1],[312,1],[372,1],[457,1],[470,1],[512,1],[705,1],[761,1],[779,1]]},"546":{"position":[[0,1],[417,1],[492,1],[515,1],[517,2],[619,1],[649,1],[664,1],[666,2],[690,2],[745,1],[783,1],[792,3],[800,1],[809,3],[818,1],[851,1],[860,2],[870,1],[872,2],[875,1],[884,2],[901,2],[1095,1],[1206,1],[1223,1],[1252,1]]},"549":{"position":[[173,1],[403,1],[449,1],[537,2],[601,1],[689,1],[810,2],[813,1],[907,2],[910,1],[1082,2],[1123,1],[1279,1],[1346,1],[1661,3],[1681,3]]},"553":{"position":[[479,2],[525,1],[543,1],[551,1],[557,1],[564,1],[570,1],[588,1],[602,1],[615,1],[622,3],[754,2],[757,1],[783,2],[786,1],[820,2],[823,1],[843,2],[846,1],[960,2],[963,1],[1022,2],[1025,1],[1110,1],[1394,1],[1446,1],[1463,1],[1538,2],[1551,2],[1569,1],[1661,2],[1702,1],[2059,3],[2079,3]]},"559":{"position":[[410,1],[460,2],[506,1],[524,1],[531,1],[550,1],[563,1],[577,1],[590,1],[599,1],[612,1],[620,1],[649,1],[657,1],[659,2],[662,1],[678,2],[681,1],[753,2],[771,2],[816,2],[882,2],[885,1],[905,2],[908,1],[955,1],[964,1],[971,1],[983,1],[993,1],[1006,1],[1014,1],[1023,1],[1031,1],[1041,1],[1043,2],[1046,1],[1110,1],[1298,2],[1339,1],[1696,3],[1716,3]]},"566":{"position":[[125,1],[150,1],[165,1],[341,1],[366,1],[381,1],[651,1],[676,1],[702,1],[717,1]]},"568":{"position":[[676,1],[700,1],[748,1],[794,1],[830,1],[877,1],[882,1],[920,1],[935,1]]},"569":{"position":[[384,1],[479,1],[621,2],[1419,1],[1514,1],[1656,2]]},"570":{"position":[[479,1],[512,1],[527,1],[549,1],[558,1],[1082,1],[1084,1],[1113,1],[1262,1],[1301,1],[1303,1],[1327,3],[1368,3],[1864,3],[2080,3],[2166,3],[2252,3],[2338,3],[2424,3],[2510,3],[2596,3],[2691,3],[2777,3],[2865,3],[2953,3],[3041,3],[3129,3],[3215,3],[3303,3],[3391,3],[3479,3],[3567,3],[3655,3],[3743,3],[3838,3],[3922,3],[4008,3],[4094,3],[4180,3],[4266,3],[4352,3],[4438,3],[4518,3],[4592,3],[4981,1],[5018,1],[5146,1],[5162,1],[5187,1],[5212,1],[5286,3],[5372,3],[5458,3],[5544,3],[5630,3],[5716,3],[5802,3],[5897,3],[5983,3],[6071,3],[6159,3],[6247,3],[6335,3],[6423,3],[6511,3],[6606,3],[6690,3],[6776,3],[6862,3],[6948,3],[7034,3],[7120,3],[7206,3],[7286,3],[7360,3],[7627,1],[7806,1],[7985,1],[8164,1],[8343,1],[8522,1],[8701,1],[8880,1],[9475,3],[9631,1],[9653,1],[9663,1],[9976,1],[10009,1],[10024,1],[10046,1],[10564,1],[10566,1],[10595,1],[10744,1],[10783,1],[10785,3],[11281,3],[11497,3],[11583,3],[11669,3],[11755,3],[11841,3],[11927,3],[12013,3],[12108,3],[12194,3],[12282,3],[12370,3],[12458,3],[12546,3],[12632,3],[12720,3],[12808,3],[12896,3],[12984,3],[13072,3],[13160,3],[13255,3],[13339,3],[13425,3],[13511,3],[13597,3],[13683,3],[13769,3],[13855,3],[13935,3],[14009,3],[14487,1],[14524,1],[14574,1],[14590,1],[14615,1],[14640,1],[14708,1],[14775,1],[14841,1],[14908,1],[14975,1],[15042,1],[15109,1],[15135,1],[15151,1],[15190,1],[15215,1],[15296,1],[15363,1],[15430,1],[15497,1],[15565,1],[15633,1],[15701,1],[15769,1],[15837,1],[15905,1],[15932,1],[15948,1],[15967,3],[16633,1],[16635,1],[16664,1],[16813,1],[16852,1],[16854,1],[16878,3],[17054,1],[17060,1],[17209,1],[17215,1],[17368,1],[17374,1]]},"572":{"position":[[268,1],[1964,1],[2109,1]]},"578":{"position":[[283,1],[413,1]]},"579":{"position":[[290,1],[359,1],[384,1],[396,1],[411,2],[414,1],[432,1],[472,1],[485,1],[521,1],[648,1],[771,1],[784,1]]},"580":{"position":[[184,1],[253,1],[278,1],[330,1],[385,1],[425,1],[511,2],[564,2],[750,1],[802,1],[848,1],[907,1],[941,1],[980,1],[1021,1],[1060,1],[1109,1]]},"583":{"position":[[324,1]]},"584":{"position":[[287,1],[361,1],[399,1],[439,1],[452,1],[488,1],[560,1],[628,1],[641,1],[733,1]]},"585":{"position":[[184,1],[258,1],[320,1],[335,2],[338,1],[356,1],[396,1],[429,2],[460,1],[512,1],[558,1],[617,1],[651,1],[690,1],[731,1],[770,1],[819,1]]},"588":{"position":[[322,1]]},"589":{"position":[[227,1],[299,1],[332,2],[335,1],[353,1],[393,1],[531,1],[544,1],[580,1],[714,1],[735,1],[778,1],[919,1],[932,1],[1027,1]]},"590":{"position":[[262,1],[334,1],[389,1],[404,2],[407,1],[428,1],[471,1],[601,1],[619,1],[659,1],[786,1],[799,1],[835,1],[958,1],[970,1],[983,1]]},"594":{"position":[[0,1]]},"595":{"position":[[0,1],[52,1],[67,1]]},"596":{"position":[[89,1],[671,1],[951,1],[992,2],[1052,2]]},"597":{"position":[[0,1],[70,1],[101,1],[112,1],[126,1],[184,1],[219,1]]},"599":{"position":[[0,1]]},"602":{"position":[[84,1]]},"606":{"position":[[182,2],[220,2],[265,2],[297,2],[334,1]]},"611":{"position":[[18,1],[24,1],[34,3],[38,1],[48,1],[83,1],[157,1],[228,1],[272,1],[312,1],[372,1],[457,1],[470,1],[512,1],[705,1],[761,1],[779,1]]},"616":{"position":[[0,1],[417,1],[492,1],[515,1],[517,2],[619,1],[649,1],[664,1],[666,2],[690,2],[745,1],[783,1],[792,3],[800,1],[809,3],[818,1],[851,1],[860,2],[870,1],[872,2],[875,1],[884,2],[901,2],[1095,1],[1206,1],[1223,1],[1252,1]]},"620":{"position":[[318,1],[411,1],[605,1]]},"621":{"position":[[653,1]]},"643":{"position":[[0,6],[17,19],[57,1],[63,44],[108,4],[113,3],[117,4],[142,42],[185,4],[190,9]]},"644":{"position":[[0,2],[13,4],[24,15],[60,3]]},"645":{"position":[[0,1],[22,1],[29,34],[64,1],[78,7],[96,25],[122,1],[136,31],[168,1],[182,7],[200,22],[233,8]]},"646":{"position":[[10,5],[20,6],[31,16]]},"647":{"position":[[0,1],[10,22],[43,2],[54,12],[75,5],[91,2],[129,1],[205,5],[263,1],[279,10],[298,4],[313,3],[333,1],[343,3],[425,6],[568,8],[593,37],[631,5],[654,15],[683,11],[704,33],[857,21],[891,18],[921,3],[930,1],[939,15],[964,4],[980,3],[989,22],[1012,4],[1028,3],[1051,18],[1079,4],[1095,3],[1104,25],[1130,4],[1146,3],[1169,21],[1203,4],[1219,3],[1228,28],[1257,4],[1273,3],[1296,24],[1321,5],[1357,13],[1391,54],[1455,18],[1510,10],[1529,4],[1566,4],[1588,1],[1608,5],[1624,3],[1642,3],[1651,17],[1669,16],[1693,6],[1730,6],[1747,4],[1761,5]]},"663":{"position":[[93,1],[95,1],[139,1],[179,1],[181,1],[190,1],[230,1],[266,1],[449,1],[498,1],[500,1],[502,1],[569,1],[610,1],[682,1],[726,1],[766,1],[768,1],[777,1],[817,1],[853,1],[1036,1],[1085,1],[1087,1],[1089,1],[1091,1]]},"664":{"position":[[118,1],[159,1],[161,1],[233,1],[277,1],[317,1],[319,1],[328,1],[368,1],[404,1],[587,1],[636,1],[638,1],[640,2],[643,1],[715,1],[761,1],[801,1],[803,1],[812,1],[854,1],[890,1],[951,1],[953,3],[957,1],[959,1],[961,1],[963,1],[965,1]]},"665":{"position":[[142,1],[183,1],[255,1],[299,1],[339,1],[341,1],[350,1],[390,1],[426,1],[609,1],[658,1],[660,1],[662,1],[664,1]]},"666":{"position":[[103,1],[105,1],[149,1],[189,1],[191,1],[200,1],[248,1],[284,1],[372,1],[374,2],[377,1],[379,1],[381,1],[465,1],[523,1],[595,1],[639,1],[679,1],[681,1],[690,1],[738,1],[774,1],[862,1],[864,2],[867,1],[869,1],[871,1],[873,1]]},"667":{"position":[[145,1],[186,1],[258,1],[302,1],[342,1],[344,1],[353,1],[401,1],[437,1],[525,1],[527,2],[530,1],[532,1],[534,1],[536,1]]},"669":{"position":[[90,1],[92,1],[213,2],[325,2],[328,1],[433,2],[436,1],[546,1],[548,2],[569,1],[579,1],[761,1],[778,2],[831,2],[842,1],[850,1],[901,2],[914,1],[965,1],[967,2],[985,1],[1043,1],[1045,1],[1047,1],[1049,1]]},"672":{"position":[[83,1],[85,1],[210,2],[322,2],[325,1],[430,2],[433,1],[543,1],[545,2],[566,1],[576,1],[758,1],[775,2],[828,2],[839,1],[847,1],[898,2],[911,1],[962,1],[964,2],[982,1],[1040,1],[1042,1],[1044,1],[1046,1]]},"674":{"position":[[109,1],[111,1],[143,1],[224,1],[226,1],[228,1]]},"676":{"position":[[92,1],[94,1],[104,1],[307,1],[325,1],[327,2],[345,1],[403,2],[414,1],[422,1],[473,2],[486,1],[537,1],[539,1],[541,1],[543,1],[609,1],[650,1],[852,1],[862,1],[1065,1],[1083,1],[1085,2],[1103,1],[1161,2],[1172,1],[1180,1],[1231,2],[1244,1],[1295,1],[1297,1],[1299,1],[1301,1],[1303,1]]},"677":{"position":[[92,1],[94,1],[104,1],[307,1],[325,1],[327,2],[345,1],[374,2],[385,1],[393,1],[444,2],[457,1],[508,1],[510,1],[512,1],[514,1],[756,1],[797,1],[999,1],[1009,1],[1212,1],[1230,1],[1232,2],[1250,1],[1279,2],[1290,1],[1298,1],[1349,2],[1362,1],[1413,1],[1415,1],[1417,1],[1419,1],[1421,1]]},"678":{"position":[[116,1],[157,1],[159,1],[361,1],[371,1],[574,1],[592,1],[594,2],[612,1],[670,2],[681,1],[689,1],[740,2],[753,1],[804,1],[806,1],[808,1],[810,2],[813,1],[1007,1],[1017,1],[1154,1],[1172,1],[1174,2],[1192,1],[1245,2],[1256,1],[1268,1],[1319,2],[1332,1],[1383,1],[1385,1],[1387,1],[1389,1],[1391,1],[1393,1]]},"679":{"position":[[151,1],[192,1],[394,1],[404,1],[607,1],[625,1],[627,2],[645,1],[703,2],[714,1],[722,1],[773,2],[786,1],[837,1],[839,1],[841,1],[843,1],[845,1]]},"680":{"position":[[100,1],[102,1],[112,1],[315,1],[333,1],[335,2],[353,1],[411,2],[422,1],[430,1],[481,2],[494,1],[545,1],[547,1],[549,1],[551,1],[647,1],[705,1],[715,1],[918,1],[936,1],[938,2],[956,1],[1014,2],[1025,1],[1033,1],[1084,2],[1097,1],[1148,1],[1150,1],[1152,1],[1154,1]]},"681":{"position":[[154,1],[195,1],[397,1],[407,1],[610,1],[628,1],[630,2],[648,1],[706,2],[717,1],[725,1],[776,2],[789,1],[840,1],[842,1],[844,1],[846,1],[848,1]]},"682":{"position":[[126,1],[201,1],[203,1],[268,1],[270,1],[316,1],[318,1],[320,2],[323,1],[388,1],[390,1],[454,2],[457,1],[521,1],[523,1],[525,1],[527,2],[544,2],[547,1]]},"683":{"position":[[161,1],[236,1],[301,1],[303,1],[1477,2],[1480,1],[2654,1],[2656,1],[2658,2],[2675,2],[2678,1]]},"687":{"position":[[23,1]]},"689":{"position":[[0,1],[11,1],[95,1],[169,1],[244,1],[314,1],[394,1],[419,1],[477,1],[534,1],[589,1]]},"691":{"position":[[13,1],[115,1],[213,1]]},"692":{"position":[[192,1]]},"693":{"position":[[0,1]]},"696":{"position":[[77,1]]},"698":{"position":[[182,1]]},"702":{"position":[[90,1],[92,1],[102,1],[193,2],[211,1],[236,2],[247,1],[260,1],[281,2],[318,1],[320,1],[322,1],[386,1],[864,2],[1025,1],[1038,2],[1057,1],[1059,2],[1062,1],[1064,2],[1100,2],[1142,2],[1178,1],[1180,1],[1182,2],[1201,1]]},"703":{"position":[[125,1],[222,1],[606,2],[767,1],[780,2],[799,1],[801,2],[804,1],[806,2],[842,2],[884,2],[920,1],[922,1],[924,1],[926,2],[945,1]]},"704":{"position":[[122,1],[597,2],[758,1],[771,2],[790,1],[792,2],[795,1],[797,2],[833,2],[875,2],[911,1],[913,1],[915,2],[934,1]]},"705":{"position":[[128,1],[229,1],[553,1],[563,1],[653,2],[671,1],[769,1],[818,1],[831,2],[850,1],[852,2],[855,1],[857,2],[895,2],[906,1],[919,1],[940,2],[977,1],[979,1],[981,2],[998,2],[1001,1]]},"708":{"position":[[674,1]]},"718":{"position":[[89,1],[172,1],[262,1]]},"721":{"position":[[514,1],[534,1],[536,2],[555,2],[558,2],[572,2],[575,2],[593,2],[596,2],[618,2],[637,2],[657,2],[672,2],[694,2],[697,2],[716,2],[719,1],[739,1],[881,1],[1367,1],[1387,1],[1389,2],[1408,2],[1411,1],[1424,1],[1426,2],[1440,2],[1450,1],[1452,2],[1470,2],[1473,1],[1486,1],[1488,2],[1507,2],[1510,1],[1523,1],[1525,2],[1544,3],[1551,1],[1560,1],[1579,2],[1582,1],[1584,1],[1597,1],[1611,2],[1614,1],[1616,1],[1629,1],[1650,2],[1653,1],[1662,1],[1664,2],[1683,2],[1686,1],[1688,1],[1701,1],[1703,1],[1723,1],[1725,1],[1727,1],[1729,1],[1731,1],[1751,1],[1753,1],[1755,2],[1774,2],[1777,1],[1779,2],[1793,2],[1796,1],[1798,2],[1816,2],[1819,1],[1821,2],[1840,2],[1843,1],[1845,2],[1864,2],[1867,1],[1886,2],[1889,1],[1903,3],[1910,1],[1931,2],[1934,2],[1953,2],[1956,1],[1976,1]]},"722":{"position":[[140,6],[161,6]]},"723":{"position":[[61,1]]},"724":{"position":[[886,6],[907,6],[1177,1]]},"726":{"position":[[609,1],[1025,4],[1185,4]]},"730":{"position":[[69,2],[131,2],[264,2],[318,2],[384,2],[434,2],[484,2]]},"741":{"position":[[1447,1],[1458,1],[1647,2],[1660,1],[1729,2],[1744,1],[1759,1],[1825,3],[1829,1],[1831,1]]},"745":{"position":[[87,1]]},"746":{"position":[[379,1],[398,1],[622,1],[1440,2]]},"747":{"position":[[219,1]]},"749":{"position":[[1,1],[67,1],[69,1],[84,1],[90,1],[101,1],[107,1],[109,1],[126,1],[128,1],[194,1],[196,1],[262,1],[264,1],[266,1],[276,1],[278,1],[288,1],[290,1],[301,1],[303,1],[314,1],[316,1],[329,2],[332,1],[344,1],[379,1],[391,2],[394,1],[396,1],[406,1],[408,1],[418,1],[420,1],[431,1],[433,1],[444,1],[446,1],[459,2],[462,1],[528,1],[530,1],[532,1],[534,1],[536,1],[554,1],[556,1],[574,1],[576,1],[598,1],[600,1],[602,1],[616,1],[636,1],[656,1],[658,1],[660,1],[671,1],[673,1],[683,1],[695,1],[697,1],[699,1],[701,1],[719,1],[721,1],[739,1],[741,1],[763,1],[765,1],[767,1],[801,1],[803,1],[827,1],[829,1],[831,1],[833,1],[835,1],[853,1],[855,1],[857,1],[875,1],[877,1],[879,1],[881,1],[889,1],[891,1],[893,1],[895,1],[913,1],[915,1],[917,1],[919,1],[921,1],[987,1],[1195,1],[1342,1]]},"750":{"position":[[784,1]]},"753":{"position":[[21,2]]},"757":{"position":[[1,1],[16,1],[18,1],[63,1],[79,1],[81,1],[83,1],[103,1],[105,1],[107,1],[109,2],[114,1],[126,1],[128,1],[130,1],[141,1],[143,1],[145,1],[166,1],[168,1],[183,1],[185,1],[187,1],[189,1],[191,1],[193,1],[195,1],[204,1],[215,1],[217,1],[232,1],[234,1],[236,1],[238,1],[240,1],[254,1],[256,1],[258,1],[260,1],[280,1],[282,1],[288,1],[290,1],[292,1],[294,1],[306,1],[309,1],[311,1],[326,1],[328,1],[330,1],[332,1],[347,1],[349,1],[351,1],[353,1],[355,1],[357,1],[359,1],[361,1],[363,1],[365,1],[367,1],[369,1],[378,1],[389,1],[391,1],[393,1],[395,1],[397,1],[399,1],[410,1],[444,1],[446,1],[448,1],[463,1],[465,1],[484,1],[486,1],[505,1],[507,1],[509,1],[511,1],[522,1],[524,1],[526,1],[528,1],[547,1]]},"764":{"position":[[210,1],[250,1],[252,1],[263,1],[265,1],[284,1],[291,1],[293,1],[295,1],[306,1],[308,1],[310,1],[345,1],[347,1],[349,1],[360,1],[362,1],[364,1],[391,1],[393,1],[395,1],[413,1],[415,1],[426,1],[428,1],[430,1],[432,1],[434,1],[454,1],[469,1],[471,1],[493,1],[495,1],[513,1],[515,1],[517,1],[519,1],[521,1],[556,1],[558,1],[560,1],[578,1],[580,1],[582,1],[584,1],[586,1],[621,1],[623,1],[625,1],[636,1],[638,1],[640,1],[672,1],[674,1],[676,1],[690,1],[692,1],[694,1],[729,1],[731,1],[747,1],[749,1],[751,1],[786,1],[788,1],[790,1],[792,1],[794,1],[796,1],[828,1],[830,1],[832,1],[846,1],[848,1],[850,1],[885,1],[887,1],[889,1],[929,1],[931,1],[933,1],[964,1],[966,1],[1000,1],[1038,1],[1072,1]]},"765":{"position":[[356,1],[1332,1]]},"771":{"position":[[191,1],[193,3],[439,3],[443,1],[523,1],[544,1],[558,1],[590,1],[610,1]]},"772":{"position":[[230,1],[250,1],[264,1],[296,1],[298,1],[305,1],[335,1],[337,1],[373,2],[381,1],[400,1],[493,1],[495,1],[728,1],[748,1],[762,1],[794,1],[796,1],[803,1],[833,1],[835,1],[877,2],[885,1],[904,1],[1000,1],[1002,1],[1119,1],[1139,1],[1141,1],[1203,1],[1235,1],[1237,1],[1244,1],[1263,1],[1272,1],[1309,1],[1325,1],[1400,1],[1402,1],[1465,1],[1502,3],[1506,1],[1508,1],[1510,1],[1512,1]]},"773":{"position":[[756,1]]},"779":{"position":[[1,1],[19,1],[21,1],[38,1],[40,1],[57,1],[59,1],[77,1],[92,1],[111,1],[125,1],[127,1],[140,1],[147,1],[154,1],[167,1],[169,1],[179,1],[181,1],[199,1],[201,1],[218,1],[220,1],[237,1],[239,1],[257,1],[259,1],[261,1],[263,1],[265,1],[272,1],[274,1],[276,1],[278,1],[287,2],[326,2],[329,1],[371,1],[373,1],[375,1],[405,1],[407,1],[409,1],[437,1],[439,1],[441,1],[453,1],[455,1],[457,1],[459,1],[461,1],[463,1],[493,1],[495,1],[497,1],[530,1],[532,1],[534,1],[536,1],[538,1],[540,1],[542,1],[544,1],[546,1],[548,2],[567,1],[569,1],[571,1],[573,1],[575,1],[597,1],[599,1],[601,1],[622,1],[624,1],[626,1],[663,2],[666,1],[668,1],[682,1],[698,1],[700,1],[702,1],[733,2],[750,1],[752,1],[754,1],[756,1],[774,1],[788,1],[790,1],[792,1],[809,1],[826,2],[832,1],[834,1],[836,1],[871,1],[873,1],[875,1],[877,1],[879,1],[896,1],[898,1],[900,1],[902,1],[904,1],[906,1],[908,1],[918,1],[920,1],[922,1],[924,1],[926,1],[938,1],[940,1],[942,1],[944,1],[946,1],[955,1],[957,1],[959,1],[961,1],[963,1],[965,2],[1023,2],[1026,1],[1028,1],[1030,1],[1032,1],[1034,1],[1036,1],[1038,1],[1073,1],[1075,1],[1077,1],[1079,1],[1089,1],[1091,2],[1097,1],[1099,1],[1101,1],[1103,1],[1105,1],[1107,1],[1109,1],[1111,1],[1113,1],[1115,1],[1117,1],[1119,1],[1121,1]]},"782":{"position":[[181,1],[367,1],[378,1],[567,2],[580,1],[649,2],[664,1],[679,1],[745,3],[749,1],[751,1],[797,1],[857,1],[1098,1],[1167,3]]},"783":{"position":[[130,1],[183,1],[185,1],[200,1],[202,1],[204,1],[222,1],[224,1],[234,2],[261,1],[263,1],[265,1],[267,1],[269,1],[271,1],[273,1],[275,1],[277,1],[292,1],[294,1],[296,1],[314,1],[316,1],[318,1],[320,1],[322,1],[331,1],[333,1],[351,1],[377,1],[388,1],[402,2],[430,1],[443,1],[475,1],[490,1],[492,1],[500,1],[510,1],[512,1],[521,1],[523,1],[525,1],[527,1],[529,1],[547,1],[549,1],[567,1],[569,1],[571,1],[591,1],[606,1],[608,1],[610,1],[625,1],[645,1],[647,1],[649,1],[651,1],[669,1],[671,1],[680,1],[689,1],[691,1],[693,1],[695,1],[697,1],[699,1],[701,1],[703,1],[705,1],[707,1],[725,1],[727,1],[729,1],[743,1],[745,1],[747,1],[760,1],[762,1],[764,1],[766,1],[775,1],[784,1],[786,1],[788,1],[790,1],[792,1],[794,1],[796,1],[798,1],[800,1],[802,1],[820,1],[822,1],[824,1],[826,1],[828,1],[830,1],[832,1],[834,1],[836,6],[843,1],[845,1],[847,1],[849,1],[867,1],[869,1],[871,1],[873,1],[875,1],[928,1],[1456,1],[1474,1],[1476,1],[1495,1],[1511,1],[1513,1],[1528,1],[1530,1],[1532,2],[1549,1],[1551,1],[1561,1],[1563,1],[1581,1],[1583,1],[1602,1],[1604,1],[1606,1],[1608,1],[1610,1],[1612,1],[1616,1],[1637,1],[1639,1],[1658,1],[1660,1],[1662,1],[1680,2],[1683,1],[1696,1],[1698,1],[1700,1],[1715,3],[1722,2],[1734,1],[1736,1],[1738,1],[1750,2],[1753,1],[1772,1],[1774,1],[1776,1],[1784,1],[1794,2],[1797,1],[1799,1],[1801,1],[1803,1],[1805,1],[1823,2],[1826,1],[1828,1],[1844,2],[1847,1],[1849,1],[1851,2],[1854,1],[1856,1],[1864,1],[1874,2],[1877,1],[1879,1],[1881,1],[1883,1],[1885,1],[1903,2],[1906,1],[1908,1],[1922,2],[1925,1],[1927,1],[1937,2],[1940,1],[1942,1],[1950,1],[1960,2],[1963,1],[1965,1],[1967,1],[1969,1],[1971,1],[1989,2],[1992,1],[1994,1],[2011,2],[2014,1],[2016,1],[2026,2],[2029,1],[2031,1],[2049,2],[2052,1],[2054,1],[2056,1],[2077,1],[2147,1],[2165,1],[2167,1],[2186,1],[2202,1],[2204,1],[2219,1],[2221,1],[2223,2],[2240,1],[2242,1],[2252,1],[2254,1],[2272,1],[2274,1],[2293,1],[2295,1],[2297,1],[2301,1],[2320,1],[2322,1],[2341,1],[2356,1],[2358,1],[2373,1],[2390,2],[2396,2],[2407,1],[2409,1],[2428,1],[2430,1],[2449,1],[2593,1],[2664,1]]},"785":{"position":[[101,1],[111,1],[113,1],[126,1],[134,2],[149,1],[151,1],[162,1],[164,1],[174,1],[176,1],[189,1],[191,1],[208,1],[221,1],[223,1],[238,2],[261,1],[263,1],[274,1],[276,1],[294,1],[296,1],[309,1],[311,1],[328,1],[330,1],[341,2],[379,1],[392,1],[394,1],[412,1],[414,1],[427,1],[429,1],[440,1],[442,1],[444,1],[462,1],[464,1],[466,1],[481,1],[483,1],[506,1],[508,1],[510,1],[512,1],[530,1],[532,1],[554,1],[556,1],[571,1],[579,1],[581,1],[604,1],[606,1],[608,1],[610,1],[628,1],[647,1],[649,1],[665,1],[667,1],[690,1],[692,1],[710,1],[730,1],[732,1],[755,1],[777,1],[779,1],[802,1],[819,1],[821,1],[844,1],[868,1],[870,1],[893,1],[914,1],[916,1],[939,1],[986,1],[1000,1]]},"787":{"position":[[1460,3],[2085,2],[2180,2]]},"789":{"position":[[80,1]]},"792":{"position":[[1,1],[37,1],[39,1],[41,1],[43,1],[45,1],[58,1],[60,1],[73,1],[75,1],[77,1],[107,1],[109,1],[111,1],[130,1],[132,1],[134,1],[147,1],[149,1],[162,1],[164,1],[184,1],[186,1],[188,1],[190,1],[192,1],[209,1],[211,1],[215,1],[225,1],[247,1],[268,1],[270,1],[272,1],[274,1],[293,1],[295,1],[297,1],[299,1],[301,1],[304,1],[326,1],[328,1],[347,1],[349,1],[351,1],[353,1],[355,1],[357,1],[373,1],[380,1],[382,1],[384,1],[386,1],[388,1],[390,1],[398,1],[423,1],[425,1],[444,1],[446,1],[464,1],[466,1],[491,1],[493,1],[512,1],[514,1],[530,1],[532,1],[557,1],[559,1],[561,1],[563,1],[582,1],[584,3]]},"793":{"position":[[230,1],[279,1],[290,1],[292,1],[298,2],[303,1],[305,1],[316,1],[320,1],[337,1],[339,1],[354,1],[356,1],[368,1],[370,1],[381,1],[383,1],[394,1],[396,1],[398,1],[400,1],[406,4],[411,3],[422,1],[424,1],[435,1],[437,1],[452,1],[454,1],[456,1],[458,1],[460,1],[477,1],[479,1],[490,1],[492,1],[494,1],[499,2],[504,1],[506,1],[517,1]]},"794":{"position":[[1,1],[23,1],[25,1],[37,1],[39,1],[41,1],[50,1],[52,1],[57,1],[59,1],[61,1],[63,1],[65,1],[87,1],[89,1],[101,1],[105,1],[107,1],[142,1],[144,1],[146,1],[155,1],[157,1],[162,1],[164,1],[166,1],[168,1],[170,1],[172,1],[174,1],[181,1],[183,1],[205,1],[207,1],[209,1],[212,2],[215,1],[224,1],[226,1],[231,1],[233,1],[235,1],[247,1],[249,1],[251,1],[253,1],[255,1],[257,1],[259,1],[266,1],[268,1],[276,1],[278,1],[280,1],[282,1],[284,1],[306,1],[308,1],[310,1],[312,1],[314,1],[316,1],[318,1],[325,1],[327,1],[333,1],[335,1],[337,1],[339,1],[341,1],[343,1],[352,1],[354,1],[359,1],[361,1],[363,1],[375,1],[377,1],[379,1],[381,1],[383,1],[385,1],[387,1],[394,1],[396,1],[404,1],[406,1],[408,1],[410,1],[412,1],[427,1],[429,1],[431,1],[433,1],[435,1],[437,1],[439,1],[441,1],[453,1],[455,1],[457,1],[459,1],[481,1],[483,1],[489,1],[496,2],[499,1],[506,1],[508,1],[530,1],[532,1],[536,1],[538,1],[540,1],[542,1],[544,1],[546,1],[548,1],[550,1],[572,1],[574,1],[576,1],[578,1],[600,1],[602,1],[614,1],[616,1],[618,1],[620,1],[622,1],[624,1],[626,1],[634,1],[636,1],[644,1],[646,1],[648,1],[650,1],[652,1],[654,1],[663,1],[665,1],[670,1],[672,1],[674,1],[676,1],[678,1],[680,1],[682,1],[704,1],[706,1],[708,1],[710,1],[712,1],[714,1],[725,1],[727,1],[739,1],[741,1],[743,1],[745,1],[747,1],[749,1],[751,1],[759,1],[761,1],[769,1],[771,1],[773,1],[775,1],[777,1],[779,1],[781,1],[783,1],[788,1],[790,1],[792,1],[794,1],[796,1],[798,1],[800,1],[802,1],[804,1],[817,1],[819,1],[821,1],[824,2],[838,1],[843,1],[845,1],[847,1],[853,1],[857,1],[859,1],[861,1],[868,1],[870,1],[892,1],[894,1],[896,1],[898,1],[900,1],[911,1],[913,1],[915,1],[917,1],[952,1],[954,1],[956,1],[965,1],[967,1],[972,1],[974,1],[976,1],[988,1],[990,1],[1004,1],[1020,1],[1042,1]]},"795":{"position":[[1,1],[72,1],[74,1],[76,1],[94,1],[96,1],[115,1],[117,1],[138,1],[140,1],[142,1],[144,1],[157,1],[177,1],[196,1],[198,1],[200,1],[202,1],[208,1],[215,1],[217,1],[219,1],[221,1],[223,1],[225,1],[243,1],[245,1],[264,1],[266,1],[287,1],[289,1],[291,1],[293,1],[295,1],[297,1],[315,1],[317,1],[336,1],[338,1],[359,1],[361,1],[363,1],[365,1],[382,1],[403,1],[426,1],[428,1],[430,1],[432,1],[434,1],[436,1],[438,1],[440,1],[442,1],[444,1],[446,1],[448,1],[466,1],[468,1],[487,1],[489,1],[510,1],[512,1],[514,1],[516,1],[518,1],[520,1],[538,1],[540,1],[559,1],[561,1],[582,1],[584,1],[586,1],[588,1],[602,1],[615,1],[631,1],[633,1],[635,1],[637,1],[639,1],[657,1],[659,1],[661,1],[663,1],[665,1],[667,1],[685,1],[687,1],[706,1],[708,1],[729,1],[731,1],[733,1],[804,1]]},"821":{"position":[[142,1],[149,1],[158,1],[164,1],[170,1]]},"847":{"position":[[56,3]]},"850":{"position":[[26,1],[28,1]]},"854":{"position":[[101,1],[188,1],[226,1]]},"856":{"position":[[56,1],[65,1],[74,1]]},"857":{"position":[[48,1],[56,1],[64,1],[72,1],[81,1],[90,1]]},"864":{"position":[[26,1],[28,1]]},"865":{"position":[[119,1],[145,1],[154,1],[168,1],[222,3]]},"867":{"position":[[277,1],[376,1],[442,1]]},"869":{"position":[[23,1],[122,1],[187,1],[1130,1],[1171,1],[1229,1]]},"877":{"position":[[420,1],[469,3],[473,1],[475,7],[504,7],[512,1],[514,1],[549,1],[683,3],[737,1],[739,36],[776,1],[778,3],[925,1],[987,1],[1173,1],[1275,1],[1298,1]]},"902":{"position":[[465,2],[468,1],[485,2],[488,1],[533,1],[540,1],[556,1],[571,1],[577,1],[584,1],[595,1],[606,1],[614,1],[622,1],[629,1],[635,1],[645,1],[651,1],[664,1],[676,1],[686,1],[699,1],[717,1],[725,1],[734,1],[740,2],[743,1],[773,2],[776,1],[893,2],[896,1],[912,2],[915,1],[937,2],[940,1],[966,2],[969,1],[988,2],[991,1],[1011,2],[1014,1],[1048,2],[1051,1],[1077,2],[1080,1],[1189,2],[1230,1],[1434,2],[1437,1],[1479,2],[1482,1],[1530,2],[1533,1],[1636,3],[1656,3]]},"909":{"position":[[25,1]]},"910":{"position":[[498,1],[1223,1]]},"911":{"position":[[238,1],[889,1],[947,1],[1142,1]]},"913":{"position":[[224,2]]},"916":{"position":[[0,1],[213,1],[258,1],[365,1],[408,1],[472,1],[529,1],[600,1],[629,1],[656,1],[973,1],[1016,1],[1077,1],[1105,1],[1153,1],[1220,2],[1223,1],[1294,2],[1297,1],[1344,2],[1347,1],[1357,2],[1402,2],[1405,1],[1410,1],[1445,2],[1448,1],[1464,2],[1500,2],[1516,1],[1612,1],[1624,1],[1905,3],[7041,3],[7063,3],[7088,3],[7114,3],[7140,3],[7166,3],[7192,3],[7218,3],[7244,3],[7270,3],[7296,3],[7322,3],[7348,3],[7374,3],[7400,3],[7426,3],[7452,3],[7478,3],[7504,3],[7530,3],[7556,3],[7583,3],[7693,3],[7735,3],[7844,3],[7882,3],[8007,3],[8053,3],[8178,3],[8227,3],[8335,3],[8375,3],[8495,3],[8543,3],[8656,3],[8697,3],[8841,3],[8903,3],[9047,3],[9109,3],[9239,3],[9290,3],[9420,3],[9471,3],[9597,3],[9647,3],[9753,3],[9781,3],[9896,3],[9937,3],[10067,3],[10117,3],[10227,3],[10266,3],[10368,3],[10400,3],[10512,3],[10553,3],[10674,3],[10722,3],[10845,3],[10889,3],[11014,3],[11058,3],[11157,3],[11188,3],[11309,3],[11351,3],[11476,3],[11520,3],[11645,3],[11696,3],[11836,3],[11891,3],[12021,3],[12071,3],[12201,3],[12248,3],[12365,3],[12405,3],[12515,3],[12552,3],[12685,3],[12741,3],[12869,3],[12919,3],[13037,3],[13080,3],[13135,3],[13189,3],[13232,3],[13271,3],[13318,3],[13368,3],[13409,3],[13534,3],[13576,3],[13673,3],[13736,3],[13788,3],[13840,3],[13891,3],[13920,3],[13962,3],[14013,3],[14053,3],[14086,3],[14128,3],[14364,1],[14519,1],[15106,3],[15244,3],[15351,3],[15383,3],[15502,3],[15649,3],[15742,2],[15775,2],[15796,2],[15846,2],[16351,3],[16407,3],[16458,3],[16509,3],[16640,3],[16773,3],[16909,3],[17142,3],[17183,3],[17221,3],[17278,3],[17329,3],[17373,3],[17427,3],[17482,3],[22759,3],[22781,3],[22806,3],[22832,3],[22858,3],[22884,3],[22910,3],[22936,3],[22962,3],[22988,3],[23014,3],[23040,3],[23066,3],[23092,3],[23118,3],[23144,3],[23170,3],[23196,3],[23222,3],[23248,3],[23274,3],[23301,3],[23411,3],[23453,3],[23562,3],[23600,3],[23725,3],[23771,3],[23896,3],[23945,3],[24053,3],[24093,3],[24213,3],[24261,3],[24374,3],[24415,3],[24559,3],[24621,3],[24765,3],[24827,3],[24957,3],[25008,3],[25138,3],[25189,3],[25315,3],[25365,3],[25471,3],[25499,3],[25614,3],[25655,3],[25785,3],[25835,3],[25945,3],[25984,3],[26086,3],[26118,3],[26230,3],[26271,3],[26392,3],[26440,3],[26563,3],[26607,3],[26732,3],[26776,3],[26875,3],[26906,3],[27027,3],[27069,3],[27194,3],[27245,3],[27385,3],[27440,3],[27570,3],[27620,3],[27750,3],[27797,3],[27914,3],[27954,3],[28064,3],[28101,3],[28234,3],[28290,3],[28418,3],[28468,3],[28586,3],[28629,3],[28684,3],[28738,3],[28781,3],[28820,3],[28867,3],[28917,3],[28958,3],[29083,3],[29125,3],[29222,3],[29285,3],[29337,3],[29389,3],[29440,3],[29469,3],[29511,3],[29562,3],[29602,3],[29635,3],[29677,3],[29913,1],[30068,1],[30655,3],[30793,3],[30900,3],[30932,3],[31051,3],[31205,3],[31261,3],[31312,3],[31363,3],[31494,3],[31627,3],[31763,3],[31996,3],[32037,3],[32075,3],[32132,3],[32183,3],[32227,3],[32281,3],[32336,3]]},"918":{"position":[[225,1],[271,2],[417,1],[462,1],[535,1]]},"922":{"position":[[112,1]]},"925":{"position":[[402,1],[485,1]]},"927":{"position":[[153,1],[214,1]]},"928":{"position":[[171,1],[313,1]]},"933":{"position":[[266,1],[411,1],[498,1],[593,1]]},"934":{"position":[[550,1],[593,1],[624,1],[672,1],[755,1],[940,1],[1013,1],[1088,1],[1179,1],[1270,1],[1304,1],[1335,1]]},"937":{"position":[[139,1]]},"938":{"position":[[18,1],[111,1],[126,1]]},"939":{"position":[[40,1]]},"940":{"position":[[16,1],[40,1]]},"942":{"position":[[120,3],[310,3],[495,1],[503,1],[581,1],[616,2],[655,1],[823,1],[1386,1],[1538,1],[1553,1],[1578,1],[1642,1],[1705,1],[1775,1],[1777,1],[1830,1],[1863,1],[1947,1],[2068,1],[2332,2],[2359,1]]},"943":{"position":[[71,1]]},"944":{"position":[[35,1]]},"950":{"position":[[58,1],[60,1],[104,1],[144,1],[146,1],[155,1],[195,1],[231,1],[414,1],[463,1],[465,1],[467,1],[525,1],[1127,2],[1163,1],[1165,2],[1184,1]]},"952":{"position":[[74,1],[146,1],[432,2],[468,1],[470,2],[473,1],[1005,2],[1041,1],[1043,2],[1046,1],[1324,2],[1360,1],[1362,1],[1364,2],[1383,1]]},"955":{"position":[[91,1],[693,2],[729,1],[731,2],[750,1]]},"958":{"position":[[59,1],[61,1],[105,1],[145,1],[147,1],[156,1],[204,1],[240,1],[328,1],[330,2],[333,1],[335,1],[337,1],[412,1],[832,2],[868,1],[870,2],[889,1]]},"961":{"position":[[94,1],[696,2],[732,1],[752,1]]},"965":{"position":[[58,1],[60,1],[70,1],[273,1],[291,1],[293,2],[311,1],[369,2],[380,1],[388,1],[439,2],[452,1],[503,1],[505,1],[507,1],[509,1],[566,1],[1132,2],[1278,2],[1453,2],[1623,1],[1625,2],[1640,1],[1642,2],[1661,1]]},"968":{"position":[[58,1],[60,1],[70,1],[273,1],[291,1],[293,2],[311,1],[340,2],[351,1],[359,1],[410,2],[423,1],[474,1],[476,1],[478,1],[480,1],[686,1],[1252,2],[1370,2],[1545,2],[1715,1],[1717,2],[1732,1],[1734,2],[1753,1]]},"970":{"position":[[73,1],[144,2],[724,2],[870,2],[1045,2],[1215,1],[1217,2],[1232,1],[1234,2],[1237,1],[1733,2],[1851,2],[2026,2],[2196,1],[2198,2],[2213,1],[2215,3],[2235,1]]},"973":{"position":[[103,1],[669,2],[787,2],[962,2],[1132,1],[1134,2],[1149,1],[1151,2],[1170,1]]},"976":{"position":[[59,1],[61,1],[71,1],[274,1],[292,1],[294,2],[312,1],[370,2],[381,1],[389,1],[440,2],[453,1],[504,1],[506,1],[508,1],[510,1],[597,1],[1163,2],[1309,2],[1484,2],[1654,1],[1656,2],[1671,1],[1673,2],[1692,1]]},"979":{"position":[[106,1],[644,2],[790,2],[965,2],[1135,1],[1137,2],[1152,1],[1154,2],[1173,1]]},"981":{"position":[[78,1],[149,2],[214,2],[262,2],[265,1],[316,2],[319,3],[339,1]]},"984":{"position":[[108,1],[242,2],[290,2],[293,1],[344,2],[347,2],[366,1]]},"987":{"position":[[450,1]]},"988":{"position":[[58,1],[60,1],[181,2],[293,2],[296,1],[401,2],[404,1],[514,1],[516,2],[537,1],[547,1],[729,1],[746,2],[799,2],[810,1],[818,1],[869,2],[882,1],[933,1],[935,2],[953,1],[1011,1],[1013,1],[1015,1],[1017,1],[1072,1],[1209,2],[1355,2],[1467,2],[1470,1],[1575,2],[1578,1],[1686,2],[1689,1],[1768,2],[1771,1],[1857,2],[1860,1],[1953,2],[1956,1],[2039,2],[2042,1],[2132,2],[2135,1],[2232,3],[2521,2],[2667,2],[2843,1],[2845,2],[3016,1],[3018,1],[3020,2],[3035,1],[3037,1],[3039,2],[3058,1]]},"990":{"position":[[71,1],[143,2],[211,2],[357,2],[469,2],[472,1],[577,2],[580,1],[688,2],[691,1],[770,2],[773,1],[859,2],[862,1],[955,2],[958,1],[1041,2],[1044,1],[1134,2],[1137,1],[1234,3],[1523,2],[1669,2],[1845,1],[1847,2],[2018,1],[2020,1],[2022,2],[2037,1],[2039,1],[2041,3],[2061,1]]},"993":{"position":[[59,1],[61,1],[186,2],[298,2],[301,1],[406,2],[409,1],[519,1],[521,2],[542,1],[552,1],[734,1],[751,2],[804,2],[815,1],[823,1],[874,2],[887,1],[938,1],[940,2],[958,1],[1016,1],[1018,1],[1020,1],[1022,1],[1098,1],[1235,2],[1385,2],[1497,2],[1500,1],[1605,2],[1608,1],[1716,2],[1719,1],[1798,2],[1801,1],[1887,2],[1890,1],[1983,2],[1986,1],[2069,2],[2072,1],[2162,2],[2165,1],[2262,3],[2551,2],[2697,2],[2872,2],[3042,1],[3044,2],[3059,1],[3061,1],[3063,2],[3082,1]]},"996":{"position":[[94,1],[231,2],[381,2],[493,2],[496,1],[601,2],[604,1],[712,2],[715,1],[794,2],[797,1],[883,2],[886,1],[979,2],[982,1],[1065,2],[1068,1],[1158,2],[1161,1],[1258,3],[1547,2],[1693,2],[1868,2],[2038,1],[2040,2],[2055,1],[2057,1],[2059,2],[2078,1]]},"999":{"position":[[58,1],[60,1],[92,1],[173,1],[175,1],[177,1],[255,1],[822,2],[968,2],[1143,2],[1313,1],[1315,2],[1330,1],[1332,2],[1351,1]]},"1002":{"position":[[111,2],[138,1],[325,1]]},"1005":{"position":[[153,2],[160,4]]},"1006":{"position":[[0,1],[10,1],[254,1],[272,1],[274,2],[292,1],[350,2],[361,1],[373,1],[423,1],[425,1],[427,1]]},"1011":{"position":[[58,1],[60,1],[70,1],[161,2],[179,1],[204,2],[215,1],[228,1],[249,2],[286,1],[288,1],[290,1],[346,1],[827,2],[1052,2],[1088,2],[1174,1],[1176,1],[1178,2],[1197,1]]},"1014":{"position":[[107,1],[203,2],[574,2],[799,2],[835,2],[921,1],[923,1],[925,3],[945,1]]},"1017":{"position":[[99,1],[562,2],[787,2],[823,2],[909,1],[911,1],[913,2],[932,1]]},"1020":{"position":[[103,1],[592,2],[817,2],[853,2],[939,1],[941,1],[943,2],[962,1]]},"1023":{"position":[[224,1],[233,1],[289,1],[492,1],[510,1],[512,2],[530,1],[588,2],[599,1],[607,1],[658,2],[671,1],[722,1],[724,1],[726,2]]},"1024":{"position":[[286,1],[296,1],[499,1],[517,1],[519,2],[537,1],[595,2],[606,1],[618,1],[669,1],[671,1],[673,2]]},"1025":{"position":[[159,1]]},"1026":{"position":[[160,1]]},"1029":{"position":[[144,1]]},"1030":{"position":[[224,1]]},"1032":{"position":[[73,1]]},"1033":{"position":[[355,1]]},"1035":{"position":[[52,1],[74,1],[147,1]]},"1036":{"position":[[61,1],[97,1],[155,1],[213,1]]},"1037":{"position":[[51,1],[80,1],[108,1],[217,1]]},"1038":{"position":[[61,1],[98,1],[118,1],[284,1],[330,1]]},"1046":{"position":[[32,1],[215,1],[347,1],[462,1],[572,1]]},"1048":{"position":[[504,1],[557,1]]},"1057":{"position":[[440,1]]},"1064":{"position":[[2026,1],[2028,1],[2030,1],[2096,1],[2098,1],[2100,1]]},"1067":{"position":[[18,1],[24,1],[34,3],[38,1],[48,1],[83,1],[157,1],[228,1],[272,1],[312,1],[372,1],[457,1],[470,1],[512,1],[705,1],[761,1],[779,1]]},"1072":{"position":[[0,1],[417,1],[492,1],[515,1],[517,2],[619,1],[649,1],[664,1],[666,2],[690,2],[745,1],[783,1],[792,3],[800,1],[809,3],[818,1],[851,1],[860,2],[870,1],[872,2],[875,1],[884,2],[901,2],[1095,1],[1206,1],[1223,1],[1252,1]]},"1075":{"position":[[173,1],[403,1],[449,1],[537,2],[601,1],[689,1],[810,2],[813,1],[907,2],[910,1],[1082,2],[1123,1],[1279,1],[1346,1],[1661,3],[1681,3]]},"1079":{"position":[[479,2],[525,1],[543,1],[551,1],[557,1],[564,1],[570,1],[588,1],[602,1],[615,1],[622,3],[754,2],[757,1],[783,2],[786,1],[820,2],[823,1],[843,2],[846,1],[960,2],[963,1],[1022,2],[1025,1],[1110,1],[1394,1],[1446,1],[1463,1],[1538,2],[1551,2],[1569,1],[1661,2],[1702,1],[2059,3],[2079,3]]},"1086":{"position":[[125,1],[150,1],[165,1],[341,1],[366,1],[381,1],[651,1],[676,1],[702,1],[717,1]]},"1088":{"position":[[676,1],[700,1],[748,1],[794,1],[830,1],[877,1],[882,1],[920,1],[935,1]]},"1089":{"position":[[384,1],[479,1],[621,2],[1419,1],[1514,1],[1656,2]]},"1090":{"position":[[479,1],[512,1],[527,1],[549,1],[558,1],[1082,1],[1084,1],[1113,1],[1262,1],[1301,1],[1303,1],[1327,3],[1368,3],[1864,3],[2080,3],[2166,3],[2252,3],[2338,3],[2424,3],[2510,3],[2596,3],[2691,3],[2777,3],[2865,3],[2953,3],[3041,3],[3129,3],[3215,3],[3303,3],[3391,3],[3479,3],[3567,3],[3655,3],[3743,3],[3838,3],[3922,3],[4008,3],[4094,3],[4180,3],[4266,3],[4352,3],[4438,3],[4518,3],[4592,3],[4981,1],[5018,1],[5146,1],[5162,1],[5187,1],[5212,1],[5286,3],[5372,3],[5458,3],[5544,3],[5630,3],[5716,3],[5802,3],[5897,3],[5983,3],[6071,3],[6159,3],[6247,3],[6335,3],[6423,3],[6511,3],[6606,3],[6690,3],[6776,3],[6862,3],[6948,3],[7034,3],[7120,3],[7206,3],[7286,3],[7360,3],[7627,1],[7806,1],[7985,1],[8164,1],[8343,1],[8522,1],[8701,1],[8880,1],[9475,3],[9631,1],[9653,1],[9663,1],[9976,1],[10009,1],[10024,1],[10046,1],[10564,1],[10566,1],[10595,1],[10744,1],[10783,1],[10785,3],[11281,3],[11497,3],[11583,3],[11669,3],[11755,3],[11841,3],[11927,3],[12013,3],[12108,3],[12194,3],[12282,3],[12370,3],[12458,3],[12546,3],[12632,3],[12720,3],[12808,3],[12896,3],[12984,3],[13072,3],[13160,3],[13255,3],[13339,3],[13425,3],[13511,3],[13597,3],[13683,3],[13769,3],[13855,3],[13935,3],[14009,3],[14487,1],[14524,1],[14574,1],[14590,1],[14615,1],[14640,1],[14708,1],[14775,1],[14841,1],[14908,1],[14975,1],[15042,1],[15109,1],[15135,1],[15151,1],[15190,1],[15215,1],[15296,1],[15363,1],[15430,1],[15497,1],[15565,1],[15633,1],[15701,1],[15769,1],[15837,1],[15905,1],[15932,1],[15948,1],[15967,3],[16633,1],[16635,1],[16664,1],[16813,1],[16852,1],[16854,1],[16878,3],[17054,1],[17060,1],[17209,1],[17215,1],[17368,1],[17374,1]]},"1092":{"position":[[268,1],[1964,1],[2109,1]]},"1094":{"position":[[410,1],[460,2],[506,1],[524,1],[531,1],[550,1],[563,1],[577,1],[590,1],[599,1],[612,1],[620,1],[649,1],[657,1],[659,2],[662,1],[678,2],[681,1],[753,2],[771,2],[816,2],[882,2],[885,1],[905,2],[908,1],[955,1],[964,1],[971,1],[983,1],[993,1],[1006,1],[1014,1],[1023,1],[1031,1],[1041,1],[1043,2],[1046,1],[1110,1],[1298,2],[1339,1],[1696,3],[1716,3]]},"1104":{"position":[[283,1],[413,1]]},"1105":{"position":[[290,1],[359,1],[384,1],[396,1],[411,2],[414,1],[432,1],[472,1],[485,1],[521,1],[648,1],[771,1],[784,1]]},"1106":{"position":[[184,1],[253,1],[278,1],[330,1],[385,1],[425,1],[511,2],[564,2],[750,1],[802,1],[848,1],[907,1],[941,1],[980,1],[1021,1],[1060,1],[1109,1]]},"1109":{"position":[[324,1]]},"1110":{"position":[[287,1],[361,1],[399,1],[439,1],[452,1],[488,1],[560,1],[628,1],[641,1],[733,1]]},"1111":{"position":[[184,1],[258,1],[320,1],[335,2],[338,1],[356,1],[396,1],[429,2],[460,1],[512,1],[558,1],[617,1],[651,1],[690,1],[731,1],[770,1],[819,1]]},"1114":{"position":[[322,1]]},"1115":{"position":[[227,1],[299,1],[332,2],[335,1],[353,1],[393,1],[531,1],[544,1],[580,1],[714,1],[735,1],[778,1],[919,1],[932,1],[1027,1]]},"1116":{"position":[[262,1],[334,1],[389,1],[404,2],[407,1],[428,1],[471,1],[601,1],[619,1],[659,1],[786,1],[799,1],[835,1],[958,1],[970,1],[983,1]]}},"keywords":{}}],["0",{"_index":93,"title":{"328":{"position":[[0,2]]}},"content":{"7":{"position":[[204,1],[255,1],[307,1],[357,1],[408,1],[457,1]]},"23":{"position":[[468,1]]},"28":{"position":[[546,2],[698,1]]},"83":{"position":[[297,3],[435,3],[502,3]]},"84":{"position":[[348,3],[1525,3]]},"107":{"position":[[6551,1]]},"141":{"position":[[869,1]]},"204":{"position":[[24,2]]},"331":{"position":[[895,1],[1056,3],[1060,1],[1070,1]]},"352":{"position":[[1501,1]]},"389":{"position":[[3316,1],[3348,1],[14488,1],[17568,1],[17580,1],[17599,1],[19140,1],[19172,1],[30037,1],[32422,1],[32434,1],[32453,1]]},"412":{"position":[[183,1],[289,1],[340,1],[392,1],[446,1],[497,1],[554,1],[607,1]]},"415":{"position":[[511,3],[523,4]]},"454":{"position":[[246,3],[300,3]]},"457":{"position":[[274,3],[328,3]]},"519":{"position":[[200,2]]},"541":{"position":[[468,1]]},"546":{"position":[[546,2],[698,1]]},"569":{"position":[[548,3],[1295,1],[1583,3]]},"570":{"position":[[1205,2],[1469,1],[4795,1],[7638,2],[10687,2],[10886,1],[14592,1],[16756,2],[17056,2],[17211,2],[17370,2]]},"579":{"position":[[1140,1],[1538,1],[1698,1],[1845,1],[2172,1],[2374,1]]},"584":{"position":[[1000,1],[1398,1],[1558,1],[1705,1],[2032,1],[2234,1]]},"589":{"position":[[1496,2],[1900,2],[2105,2],[2273,1],[2420,1],[2714,1],[3048,2],[3252,2],[3864,2]]},"596":{"position":[[204,1],[255,1],[307,1],[357,1],[408,1],[457,1]]},"611":{"position":[[468,1]]},"616":{"position":[[546,2],[698,1]]},"682":{"position":[[297,3],[435,3],[502,3]]},"683":{"position":[[348,3],[1525,3]]},"753":{"position":[[24,2]]},"916":{"position":[[3316,1],[3348,1],[14488,1],[17568,1],[17580,1],[17599,1],[19140,1],[19172,1],[30037,1],[32422,1],[32434,1],[32453,1]]},"939":{"position":[[185,1],[239,1],[295,1],[348,1],[401,1],[455,1],[514,1],[569,1],[621,1]]},"942":{"position":[[529,3],[541,4]]},"981":{"position":[[246,3],[300,3]]},"984":{"position":[[274,3],[328,3]]},"1059":{"position":[[200,2]]},"1067":{"position":[[468,1]]},"1072":{"position":[[546,2],[698,1]]},"1089":{"position":[[548,3],[1295,1],[1583,3]]},"1090":{"position":[[1205,2],[1469,1],[4795,1],[7638,2],[10687,2],[10886,1],[14592,1],[16756,2],[17056,2],[17211,2],[17370,2]]},"1105":{"position":[[1140,1],[1538,1],[1698,1],[1845,1],[2172,1],[2374,1]]},"1110":{"position":[[1000,1],[1398,1],[1558,1],[1705,1],[2032,1],[2234,1]]},"1115":{"position":[[1496,2],[1900,2],[2105,2],[2273,1],[2420,1],[2714,1],[3048,2],[3252,2],[3864,2]]}},"keywords":{}}],["0%)]\\tloss=2.3000\\ntrain",{"_index":796,"title":{},"content":{"84":{"position":[[744,25],[1921,25]]},"683":{"position":[[744,25],[1921,25]]}},"keywords":{}}],["0.0.0.0",{"_index":151,"title":{},"content":{"8":{"position":[[252,7]]},"17":{"position":[[157,7]]},"320":{"position":[[142,7]]},"325":{"position":[[228,7]]},"413":{"position":[[182,7]]},"597":{"position":[[252,7]]},"609":{"position":[[157,7]]},"869":{"position":[[1293,7]]},"877":{"position":[[142,7]]},"895":{"position":[[228,7]]},"940":{"position":[[73,7]]}},"keywords":{}}],["0.01",{"_index":1920,"title":{},"content":{"189":{"position":[[1496,5]]},"772":{"position":[[1496,5]]},"1035":{"position":[[236,5]]},"1036":{"position":[[175,5]]}},"keywords":{}}],["0.0994",{"_index":3978,"title":{},"content":{"570":{"position":[[9633,7]]},"1090":{"position":[[9633,7]]}},"keywords":{}}],["0.1",{"_index":829,"title":{},"content":{"86":{"position":[[250,4]]},"89":{"position":[[247,4]]},"461":{"position":[[218,4]]},"466":{"position":[[223,4]]},"570":{"position":[[5214,3]]},"669":{"position":[[250,4]]},"672":{"position":[[247,4]]},"988":{"position":[[218,4]]},"993":{"position":[[223,4]]},"1090":{"position":[[5214,3]]}},"keywords":{}}],["0.1.0",{"_index":2709,"title":{},"content":{"372":{"position":[[1323,5]]},"899":{"position":[[776,5]]}},"keywords":{}}],["0.10.x",{"_index":2295,"title":{},"content":{"286":{"position":[[74,6]]},"857":{"position":[[74,6]]}},"keywords":{}}],["0.11.x",{"_index":2296,"title":{},"content":{"286":{"position":[[83,6]]},"857":{"position":[[83,6]]}},"keywords":{}}],["0.2.0",{"_index":2702,"title":{},"content":{"372":{"position":[[1106,5],[1261,5],[1394,5]]},"899":{"position":[[559,5],[714,5],[847,5]]}},"keywords":{}}],["0.2.0.tar.gz",{"_index":2704,"title":{},"content":{"372":{"position":[[1183,12]]},"899":{"position":[[636,12]]}},"keywords":{}}],["0.20160123cv",{"_index":2995,"title":{},"content":{"389":{"position":[[5431,13],[10648,13],[10705,13],[15089,13],[21255,13],[26366,13],[26423,13],[30638,13]]},"916":{"position":[[5431,13],[10648,13],[10705,13],[15089,13],[21255,13],[26366,13],[26423,13],[30638,13]]}},"keywords":{}}],["0.3.0",{"_index":2699,"title":{},"content":{"372":{"position":[[835,5],[937,5],[1010,5]]},"899":{"position":[[288,5],[390,5],[463,5]]}},"keywords":{}}],["0.4.0",{"_index":2692,"title":{},"content":{"372":{"position":[[564,5],[666,5],[739,5]]},"400":{"position":[[14,6]]},"582":{"position":[[58,6]]},"899":{"position":[[17,5],[119,5],[192,5]]},"927":{"position":[[14,6]]},"1108":{"position":[[58,6]]}},"keywords":{}}],["0.5.0",{"_index":909,"title":{},"content":{"100":{"position":[[955,7]]},"101":{"position":[[697,7]]},"102":{"position":[[688,7]]},"103":{"position":[[747,7]]},"372":{"position":[[17,5],[104,5],[179,5],[488,5]]},"702":{"position":[[955,7]]},"703":{"position":[[697,7]]},"704":{"position":[[688,7]]},"705":{"position":[[747,7]]}},"keywords":{}}],["0.5.0submarin",{"_index":2690,"title":{},"content":{"372":{"position":[[290,14],[348,14],[410,14]]}},"keywords":{}}],["0.6.x",{"_index":2291,"title":{},"content":{"286":{"position":[[42,5]]},"857":{"position":[[42,5]]}},"keywords":{}}],["0.7.0",{"_index":3409,"title":{},"content":{"425":{"position":[[298,5],[1190,5]]},"479":{"position":[[918,5]]},"482":{"position":[[665,5]]},"485":{"position":[[653,5]]},"488":{"position":[[683,5]]},"511":{"position":[[1016,6]]},"952":{"position":[[298,5],[1190,5]]},"1011":{"position":[[918,5]]},"1014":{"position":[[665,5]]},"1017":{"position":[[653,5]]},"1020":{"position":[[683,5]]}},"keywords":{}}],["0.7.x",{"_index":2292,"title":{},"content":{"286":{"position":[[50,5]]},"857":{"position":[[50,5]]}},"keywords":{}}],["0.8",{"_index":3992,"title":{},"content":{"570":{"position":[[14642,3],[15217,3]]},"1090":{"position":[[14642,3],[15217,3]]}},"keywords":{}}],["0.8.10ubuntu1.4",{"_index":2955,"title":{},"content":{"389":{"position":[[4156,15],[8679,17],[13558,17],[19980,15],[24397,17],[29107,17]]},"916":{"position":[[4156,15],[8679,17],[13558,17],[19980,15],[24397,17],[29107,17]]}},"keywords":{}}],["0.8.x",{"_index":2293,"title":{},"content":{"286":{"position":[[58,5]]},"857":{"position":[[58,5]]}},"keywords":{}}],["0.8235",{"_index":3879,"title":{},"content":{"570":{"position":[[1544,6],[1790,6],[10961,6],[11207,6]]},"1090":{"position":[[1544,6],[1790,6],[10961,6],[11207,6]]}},"keywords":{}}],["0.9.x",{"_index":2294,"title":{},"content":{"286":{"position":[[66,5]]},"857":{"position":[[66,5]]}},"keywords":{}}],["0.x.x",{"_index":3650,"title":{},"content":{"513":{"position":[[85,5],[103,5]]},"1052":{"position":[[85,5],[103,5]]}},"keywords":{}}],["0.xxx",{"_index":3131,"title":{},"content":{"389":{"position":[[14196,5],[14277,5],[14342,6],[16581,5],[16712,5],[16844,5],[16980,5],[17703,5],[29745,5],[29826,5],[29891,6],[31435,5],[31566,5],[31698,5],[31834,5],[32581,5]]},"916":{"position":[[14196,5],[14277,5],[14342,6],[16581,5],[16712,5],[16844,5],[16980,5],[17703,5],[29745,5],[29826,5],[29891,6],[31435,5],[31566,5],[31698,5],[31834,5],[32581,5]]}},"keywords":{}}],["0/60000",{"_index":795,"title":{},"content":{"84":{"position":[[735,8],[1912,8]]},"683":{"position":[[735,8],[1912,8]]}},"keywords":{}}],["0000:00:04.0",{"_index":3881,"title":{},"content":{"570":{"position":[[1560,12],[7670,13],[10977,12]]},"1090":{"position":[[1560,12],[7670,13],[10977,12]]}},"keywords":{}}],["0000:00:05.0",{"_index":3885,"title":{},"content":{"570":{"position":[[1806,12],[7849,13],[11223,12]]},"1090":{"position":[[1806,12],[7849,13],[11223,12]]}},"keywords":{}}],["0000:00:06.0",{"_index":3944,"title":{},"content":{"570":{"position":[[8028,13]]},"1090":{"position":[[8028,13]]}},"keywords":{}}],["0000:00:07.0",{"_index":3947,"title":{},"content":{"570":{"position":[[8207,13]]},"1090":{"position":[[8207,13]]}},"keywords":{}}],["0000:00:08.0",{"_index":3950,"title":{},"content":{"570":{"position":[[8386,13]]},"1090":{"position":[[8386,13]]}},"keywords":{}}],["0000:00:09.0",{"_index":3953,"title":{},"content":{"570":{"position":[[8565,13]]},"1090":{"position":[[8565,13]]}},"keywords":{}}],["0000:00:0a.0",{"_index":3956,"title":{},"content":{"570":{"position":[[8744,13]]},"1090":{"position":[[8744,13]]}},"keywords":{}}],["0000:00:0b.0",{"_index":3959,"title":{},"content":{"570":{"position":[[8923,13]]},"1090":{"position":[[8923,13]]}},"keywords":{}}],["0001",{"_index":858,"title":{},"content":{"93":{"position":[[384,6],[747,6],[1110,6],[1474,6]]},"94":{"position":[[392,6]]}},"keywords":{}}],["0001/example/1",{"_index":863,"title":{},"content":{"93":{"position":[[535,16]]},"94":{"position":[[543,16]]}},"keywords":{}}],["0001/example/2",{"_index":865,"title":{},"content":{"93":{"position":[[898,16]]}},"keywords":{}}],["0001/example1/1",{"_index":866,"title":{},"content":{"93":{"position":[[1261,17]]}},"keywords":{}}],["0001/example2/1",{"_index":869,"title":{},"content":{"93":{"position":[[1625,17]]}},"keywords":{}}],["001",{"_index":4124,"title":{},"content":{"579":{"position":[[355,3]]},"580":{"position":[[249,3]]},"584":{"position":[[357,3]]},"585":{"position":[[254,3]]},"589":{"position":[[295,3]]},"590":{"position":[[330,3]]},"1105":{"position":[[355,3]]},"1106":{"position":[[249,3]]},"1110":{"position":[[357,3]]},"1111":{"position":[[254,3]]},"1115":{"position":[[295,3]]},"1116":{"position":[[330,3]]}},"keywords":{}}],["01",{"_index":2701,"title":{},"content":{"372":{"position":[[857,3]]},"570":{"position":[[1380,2],[1626,2],[1876,2],[4805,2],[7493,2],[7513,2],[7692,2],[7871,2],[8050,2],[8229,2],[8408,2],[8587,2],[8766,2],[9563,2],[10797,2],[11043,2],[11293,2]]},"899":{"position":[[310,3]]},"1090":{"position":[[1380,2],[1626,2],[1876,2],[4805,2],[7493,2],[7513,2],[7692,2],[7871,2],[8050,2],[8229,2],[8408,2],[8587,2],[8766,2],[9563,2],[10797,2],[11043,2],[11293,2]]}},"keywords":{}}],["0242ac110003",{"_index":749,"title":{},"content":{"77":{"position":[[758,14]]},"78":{"position":[[905,14]]},"79":{"position":[[267,14],[913,14]]},"80":{"position":[[300,14]]},"82":{"position":[[303,14]]},"676":{"position":[[758,14]]},"677":{"position":[[905,14]]},"678":{"position":[[267,14],[913,14]]},"679":{"position":[[300,14]]},"681":{"position":[[303,14]]}},"keywords":{}}],["02:27:05",{"_index":854,"title":{},"content":{"93":{"position":[[265,10],[423,10],[628,10],[786,10],[991,10],[1149,10]]},"94":{"position":[[273,10],[431,10]]},"110":{"position":[[615,10]]}},"keywords":{}}],["02:27:06",{"_index":868,"title":{},"content":{"93":{"position":[[1355,10],[1513,10]]}},"keywords":{}}],["039f6804ed36",{"_index":3433,"title":{},"content":{"438":{"position":[[741,14]]},"965":{"position":[[741,14]]}},"keywords":{}}],["04",{"_index":4136,"title":{},"content":{"579":{"position":[[1046,2],[1247,2],[1448,2],[1645,2],[1788,2],[1935,2],[2082,2],[2280,2],[2482,2]]},"584":{"position":[[906,2],[1107,2],[1308,2],[1505,2],[1648,2],[1795,2],[1942,2],[2140,2],[2342,2]]},"589":{"position":[[1200,2],[1402,2],[1604,2],[1806,2],[2008,2],[2213,2],[2363,2],[2510,2],[2657,2],[2804,2],[2951,2],[3158,2],[3362,2],[3566,2],[3770,2]]},"1105":{"position":[[1046,2],[1247,2],[1448,2],[1645,2],[1788,2],[1935,2],[2082,2],[2280,2],[2482,2]]},"1110":{"position":[[906,2],[1107,2],[1308,2],[1505,2],[1648,2],[1795,2],[1942,2],[2140,2],[2342,2]]},"1115":{"position":[[1200,2],[1402,2],[1604,2],[1806,2],[2008,2],[2213,2],[2363,2],[2510,2],[2657,2],[2804,2],[2951,2],[3158,2],[3362,2],[3566,2],[3770,2]]}},"keywords":{}}],["05",{"_index":2372,"title":{},"content":{"314":{"position":[[524,2],[633,2],[769,2],[878,2],[1400,2],[1509,2],[1639,2],[1748,2]]},"331":{"position":[[2625,2],[2733,2]]},"332":{"position":[[69,2],[188,2]]},"372":{"position":[[586,3]]},"899":{"position":[[39,3]]}},"keywords":{}}],["05:35:36",{"_index":65,"title":{},"content":{"6":{"position":[[163,8]]},"595":{"position":[[163,8]]}},"keywords":{}}],["06",{"_index":753,"title":{},"content":{"77":{"position":[[817,2]]},"78":{"position":[[964,2]]},"79":{"position":[[326,2],[972,2]]},"80":{"position":[[359,2]]},"82":{"position":[[362,2]]},"676":{"position":[[817,2]]},"677":{"position":[[964,2]]},"678":{"position":[[326,2],[972,2]]},"679":{"position":[[359,2]]},"681":{"position":[[362,2]]}},"keywords":{}}],["07",{"_index":3436,"title":{},"content":{"438":{"position":[[798,2]]},"441":{"position":[[918,2]]},"443":{"position":[[309,2],[356,2],[403,2],[451,2],[1399,2]]},"446":{"position":[[335,2]]},"449":{"position":[[829,2]]},"472":{"position":[[488,2]]},"479":{"position":[[676,2]]},"482":{"position":[[423,2]]},"485":{"position":[[411,2]]},"488":{"position":[[441,2]]},"570":{"position":[[14144,2],[14308,2],[16924,2],[17083,2],[17238,2],[17397,2]]},"965":{"position":[[798,2]]},"968":{"position":[[918,2]]},"970":{"position":[[309,2],[356,2],[403,2],[451,2],[1399,2]]},"973":{"position":[[335,2]]},"976":{"position":[[829,2]]},"999":{"position":[[488,2]]},"1011":{"position":[[676,2]]},"1014":{"position":[[423,2]]},"1017":{"position":[[411,2]]},"1020":{"position":[[441,2]]},"1090":{"position":[[14144,2],[14308,2],[16924,2],[17083,2],[17238,2],[17397,2]]}},"keywords":{}}],["08",{"_index":902,"title":{},"content":{"100":{"position":[[713,2]]},"101":{"position":[[455,2]]},"102":{"position":[[446,2]]},"103":{"position":[[475,2],[523,2]]},"570":{"position":[[1377,2],[1623,2],[1873,2],[4802,2],[7490,2],[7510,2],[7689,2],[7868,2],[8047,2],[8226,2],[8405,2],[8584,2],[8763,2],[9560,2],[10794,2],[11040,2],[11290,2]]},"702":{"position":[[713,2]]},"703":{"position":[[455,2]]},"704":{"position":[[446,2]]},"705":{"position":[[475,2],[523,2]]},"1090":{"position":[[1377,2],[1623,2],[1873,2],[4802,2],[7490,2],[7510,2],[7689,2],[7868,2],[8047,2],[8226,2],[8405,2],[8584,2],[8763,2],[9560,2],[10794,2],[11040,2],[11290,2]]}},"keywords":{}}],["09",{"_index":400,"title":{},"content":{"25":{"position":[[5,2],[1615,2]]},"26":{"position":[[5,2]]},"543":{"position":[[5,2],[1615,2]]},"544":{"position":[[5,2]]},"613":{"position":[[5,2],[1615,2]]},"614":{"position":[[5,2]]},"1069":{"position":[[5,2],[1615,2]]},"1070":{"position":[[5,2]]}},"keywords":{}}],["09:36:26,102",{"_index":446,"title":{},"content":{"26":{"position":[[11,12]]},"544":{"position":[[11,12]]},"614":{"position":[[11,12]]},"1070":{"position":[[11,12]]}},"keywords":{}}],["0bfafa146431",{"_index":469,"title":{},"content":{"28":{"position":[[12,12]]},"546":{"position":[[12,12]]},"616":{"position":[[12,12]]},"1072":{"position":[[12,12]]}},"keywords":{}}],["0bfafa146431771f6024dcb9775ef47f170edb2f152f71916ba44209ca6120a",{"_index":520,"title":{},"content":{"28":{"position":[[1142,63]]},"546":{"position":[[1142,63]]},"616":{"position":[[1142,63]]},"1072":{"position":[[1142,63]]}},"keywords":{}}],["0bfafa146431771f6024dcb9775ef47f170edb2f1852f71916ba44209ca6120a",{"_index":473,"title":{},"content":{"28":{"position":[[85,65]]},"546":{"position":[[85,65]]},"616":{"position":[[85,65]]},"1072":{"position":[[85,65]]}},"keywords":{}}],["0f21",{"_index":3461,"title":{},"content":{"441":{"position":[[846,4]]},"443":{"position":[[1327,4]]},"446":{"position":[[263,4]]},"449":{"position":[[757,4]]},"452":{"position":[[266,4]]},"968":{"position":[[846,4]]},"970":{"position":[[1327,4]]},"973":{"position":[[263,4]]},"976":{"position":[[757,4]]},"979":{"position":[[266,4]]}},"keywords":{}}],["0s",{"_index":3039,"title":{},"content":{"389":{"position":[[6953,2]]},"916":{"position":[[6953,2]]}},"keywords":{}}],["0ubuntu1",{"_index":3037,"title":{},"content":{"389":{"position":[[6915,8],[13070,9],[17363,9],[22633,8],[28619,9],[32217,9]]},"916":{"position":[[6915,8],[13070,9],[17363,9],[22633,8],[28619,9],[32217,9]]}},"keywords":{}}],["0ubuntu11",{"_index":3124,"title":{},"content":{"389":{"position":[[13178,10],[17416,10],[28727,10],[32270,10]]},"916":{"position":[[13178,10],[17416,10],[28727,10],[32270,10]]}},"keywords":{}}],["0ubuntu1_all.deb",{"_index":3118,"title":{},"content":{"389":{"position":[[13020,16],[28569,16]]},"916":{"position":[[13020,16],[28569,16]]}},"keywords":{}}],["0x7f48f1addf90",{"_index":4041,"title":{},"content":{"570":{"position":[[16441,16]]},"1090":{"position":[[16441,16]]}},"keywords":{}}],["0x7f6918438e10",{"_index":3982,"title":{},"content":{"570":{"position":[[10370,16]]},"1090":{"position":[[10370,16]]}},"keywords":{}}],["0x7fd16fb2be10",{"_index":3852,"title":{},"content":{"570":{"position":[[890,16]]},"1090":{"position":[[890,16]]}},"keywords":{}}],["1",{"_index":71,"title":{"25":{"position":[[6,2]]},"161":{"position":[[5,2]]},"311":{"position":[[0,2]]},"329":{"position":[[0,2]]},"359":{"position":[[0,2]]},"415":{"position":[[0,2]]},"543":{"position":[[6,2]]},"613":{"position":[[6,2]]},"731":{"position":[[5,2]]},"881":{"position":[[0,2]]},"942":{"position":[[0,2]]},"1069":{"position":[[6,2]]}},"content":{"6":{"position":[[223,1]]},"23":{"position":[[777,1]]},"28":{"position":[[524,1],[580,1]]},"35":{"position":[[1287,2]]},"77":{"position":[[436,2],[500,2],[1194,2],[1258,2]]},"78":{"position":[[407,2],[471,2],[1312,2],[1376,2]]},"79":{"position":[[703,2],[767,2],[1282,2],[1346,2]]},"80":{"position":[[736,2],[800,2]]},"81":{"position":[[444,2],[1047,2]]},"82":{"position":[[739,2]]},"84":{"position":[[733,1],[777,1],[823,1],[870,1],[917,1],[964,1],[1011,1],[1058,1],[1105,1],[1152,1],[1200,1],[1248,1],[1296,1],[1344,1],[1392,1],[1440,1],[1910,1],[1954,1],[2000,1],[2047,1],[2094,1],[2141,1],[2188,1],[2235,1],[2282,1],[2329,1],[2377,1],[2425,1],[2473,1],[2521,1],[2569,1],[2617,1]]},"86":{"position":[[864,2],[928,2]]},"89":{"position":[[861,2],[925,2]]},"93":{"position":[[592,1]]},"94":{"position":[[600,1]]},"95":{"position":[[133,2]]},"105":{"position":[[88,1]]},"107":{"position":[[6266,2],[6704,1],[6940,1],[7507,2],[7748,2],[7824,1],[7913,2],[7939,2],[7954,1],[8050,2],[8063,1],[9009,3],[9055,3]]},"130":{"position":[[166,5]]},"141":{"position":[[829,2],[885,1],[931,2]]},"160":{"position":[[0,2],[600,2]]},"161":{"position":[[210,1]]},"170":{"position":[[0,2]]},"171":{"position":[[346,2]]},"217":{"position":[[98,2]]},"229":{"position":[[322,1]]},"314":{"position":[[674,4],[919,4],[1118,1],[1550,4],[1789,4]]},"320":{"position":[[1284,2]]},"331":{"position":[[563,3],[693,1],[703,1]]},"352":{"position":[[280,2],[940,2],[1119,2],[1382,3],[1422,3],[1507,1]]},"357":{"position":[[392,2]]},"375":{"position":[[85,2],[313,2],[841,1]]},"386":{"position":[[126,2]]},"389":{"position":[[1547,2],[6400,1],[12245,2],[17139,2],[22118,1],[27794,2],[31993,2]]},"412":{"position":[[657,1]]},"413":{"position":[[26,1],[263,2]]},"415":{"position":[[528,3],[904,4]]},"438":{"position":[[402,2],[466,2]]},"441":{"position":[[373,2],[437,2]]},"449":{"position":[[403,2]]},"461":{"position":[[832,2],[896,2]]},"466":{"position":[[837,2],[901,2]]},"492":{"position":[[387,2]]},"496":{"position":[[621,2],[685,2]]},"511":{"position":[[294,2]]},"541":{"position":[[777,1]]},"546":{"position":[[524,1],[580,1]]},"549":{"position":[[87,2],[294,2]]},"553":{"position":[[91,2],[300,2]]},"559":{"position":[[95,2],[300,2]]},"569":{"position":[[805,1],[815,1],[824,1]]},"570":{"position":[[738,2],[1068,1],[1190,2],[1715,1],[4967,1],[5016,1],[5086,1],[5164,1],[7817,2],[9619,2],[9655,2],[10217,2],[10550,1],[10672,2],[11132,1],[14473,1],[14522,1],[16292,2],[16619,1],[16741,2]]},"579":{"position":[[483,1],[1341,1],[1992,1],[2576,1]]},"580":{"position":[[1239,2]]},"584":{"position":[[1201,1],[1852,1],[2436,1]]},"585":{"position":[[354,1]]},"589":{"position":[[508,1],[691,1],[896,1],[1294,2],[1698,2],[2567,1],[2861,1],[3456,2],[3660,2]]},"590":{"position":[[426,1],[578,1],[763,1],[935,1]]},"595":{"position":[[223,1]]},"611":{"position":[[777,1]]},"616":{"position":[[524,1],[580,1]]},"627":{"position":[[1287,2]]},"669":{"position":[[864,2],[928,2]]},"672":{"position":[[861,2],[925,2]]},"676":{"position":[[436,2],[500,2],[1194,2],[1258,2]]},"677":{"position":[[407,2],[471,2],[1312,2],[1376,2]]},"678":{"position":[[703,2],[767,2],[1282,2],[1346,2]]},"679":{"position":[[736,2],[800,2]]},"680":{"position":[[444,2],[1047,2]]},"681":{"position":[[739,2]]},"683":{"position":[[733,1],[777,1],[823,1],[870,1],[917,1],[964,1],[1011,1],[1058,1],[1105,1],[1152,1],[1200,1],[1248,1],[1296,1],[1344,1],[1392,1],[1440,1],[1910,1],[1954,1],[2000,1],[2047,1],[2094,1],[2141,1],[2188,1],[2235,1],[2282,1],[2329,1],[2377,1],[2425,1],[2473,1],[2521,1],[2569,1],[2617,1]]},"698":{"position":[[166,5]]},"730":{"position":[[0,2],[600,2]]},"731":{"position":[[210,1]]},"740":{"position":[[0,2]]},"741":{"position":[[346,2]]},"787":{"position":[[98,2]]},"792":{"position":[[322,1]]},"869":{"position":[[1387,1]]},"877":{"position":[[1284,2]]},"902":{"position":[[85,2],[313,2],[841,1]]},"913":{"position":[[126,2]]},"916":{"position":[[1547,2],[6400,1],[12245,2],[17139,2],[22118,1],[27794,2],[31993,2]]},"942":{"position":[[546,3],[922,4]]},"965":{"position":[[402,2],[466,2]]},"968":{"position":[[373,2],[437,2]]},"976":{"position":[[403,2]]},"988":{"position":[[832,2],[896,2]]},"993":{"position":[[837,2],[901,2]]},"1006":{"position":[[387,2]]},"1023":{"position":[[621,2],[685,2]]},"1067":{"position":[[777,1]]},"1072":{"position":[[524,1],[580,1]]},"1075":{"position":[[87,2],[294,2]]},"1079":{"position":[[91,2],[300,2]]},"1089":{"position":[[805,1],[815,1],[824,1]]},"1090":{"position":[[738,2],[1068,1],[1190,2],[1715,1],[4967,1],[5016,1],[5086,1],[5164,1],[7817,2],[9619,2],[9655,2],[10217,2],[10550,1],[10672,2],[11132,1],[14473,1],[14522,1],[16292,2],[16619,1],[16741,2]]},"1094":{"position":[[95,2],[300,2]]},"1105":{"position":[[483,1],[1341,1],[1992,1],[2576,1]]},"1106":{"position":[[1239,2]]},"1110":{"position":[[1201,1],[1852,1],[2436,1]]},"1111":{"position":[[354,1]]},"1115":{"position":[[508,1],[691,1],[896,1],[1294,2],[1698,2],[2567,1],[2861,1],[3456,2],[3660,2]]},"1116":{"position":[[426,1],[578,1],[763,1],[935,1]]}},"keywords":{}}],["1%)]\\tloss=2.2135\\ntrain",{"_index":798,"title":{},"content":{"84":{"position":[[790,25],[1967,25]]},"683":{"position":[[790,25],[1967,25]]}},"keywords":{}}],["1.0",{"_index":735,"title":{},"content":{"77":{"position":[[398,4],[1156,4]]},"79":{"position":[[665,4],[1240,4]]},"80":{"position":[[698,4]]},"81":{"position":[[406,4],[1009,4]]},"82":{"position":[[701,4]]},"86":{"position":[[1038,4]]},"89":{"position":[[1035,4]]},"223":{"position":[[258,4]]},"407":{"position":[[713,5]]},"438":{"position":[[364,4],[1273,4]]},"443":{"position":[[865,4]]},"449":{"position":[[365,4],[1304,4]]},"452":{"position":[[785,4]]},"461":{"position":[[1006,4],[2662,4]]},"463":{"position":[[1664,4]]},"466":{"position":[[1011,4],[2692,4]]},"469":{"position":[[1688,4]]},"472":{"position":[[963,4]]},"492":{"position":[[345,4]]},"496":{"position":[[583,4]]},"497":{"position":[[590,4]]},"570":{"position":[[1297,3],[10779,3],[16848,3]]},"669":{"position":[[1038,4]]},"672":{"position":[[1035,4]]},"676":{"position":[[398,4],[1156,4]]},"678":{"position":[[665,4],[1240,4]]},"679":{"position":[[698,4]]},"680":{"position":[[406,4],[1009,4]]},"681":{"position":[[701,4]]},"808":{"position":[[258,4]]},"934":{"position":[[733,5]]},"965":{"position":[[364,4],[1273,4]]},"970":{"position":[[865,4]]},"976":{"position":[[365,4],[1304,4]]},"979":{"position":[[785,4]]},"988":{"position":[[1006,4],[2662,4]]},"990":{"position":[[1664,4]]},"993":{"position":[[1011,4],[2692,4]]},"996":{"position":[[1688,4]]},"999":{"position":[[963,4]]},"1006":{"position":[[345,4]]},"1023":{"position":[[583,4]]},"1024":{"position":[[590,4]]},"1090":{"position":[[1297,3],[10779,3],[16848,3]]}},"keywords":{}}],["1.0.3",{"_index":2936,"title":{},"content":{"389":{"position":[[3647,5],[7872,6],[13261,6],[19471,5],[23590,6],[28810,6]]},"916":{"position":[[3647,5],[7872,6],[13261,6],[19471,5],[23590,6],[28810,6]]}},"keywords":{}}],["1.0.37",{"_index":2988,"title":{},"content":{"389":{"position":[[5227,6],[10391,8],[14077,8],[21051,6],[26109,8],[29626,8]]},"916":{"position":[[5227,6],[10391,8],[14077,8],[21051,6],[26109,8],[29626,8]]}},"keywords":{}}],["1.09",{"_index":2939,"title":{},"content":{"389":{"position":[[3744,4],[3844,4],[8037,5],[8211,5],[13302,5],[13352,5],[19568,4],[19668,4],[23755,5],[23929,5],[28851,5],[28901,5]]},"916":{"position":[[3744,4],[3844,4],[8037,5],[8211,5],[13302,5],[13352,5],[19568,4],[19668,4],[23755,5],[23929,5],[28851,5],[28901,5]]}},"keywords":{}}],["1.1",{"_index":2463,"title":{"330":{"position":[[0,3]]}},"content":{"372":{"position":[[1493,4]]},"899":{"position":[[946,4]]}},"keywords":{}}],["1.1.0",{"_index":4306,"title":{},"content":{"1053":{"position":[[315,6]]}},"keywords":{}}],["1.1.0.xsd",{"_index":2556,"title":{},"content":{"336":{"position":[[261,10]]}},"keywords":{}}],["1.10",{"_index":3252,"title":{},"content":{"406":{"position":[[988,4]]}},"keywords":{}}],["1.10.0",{"_index":3026,"title":{},"content":{"389":{"position":[[6582,6],[12541,7],[17210,7],[22300,6],[28090,7],[32064,7]]},"916":{"position":[[6582,6],[12541,7],[17210,7],[22300,6],[28090,7],[32064,7]]}},"keywords":{}}],["1.13.1",{"_index":365,"title":{},"content":{"23":{"position":[[255,6],[295,6]]},"389":{"position":[[6687,6],[12715,7],[17252,7],[22405,6],[28264,7],[32106,7]]},"541":{"position":[[255,6],[295,6]]},"559":{"position":[[1174,6]]},"560":{"position":[[89,6],[196,6],[309,6],[427,6],[564,6]]},"562":{"position":[[101,6],[202,6],[283,6],[331,6]]},"563":{"position":[[84,6],[119,6]]},"577":{"position":[[61,6]]},"578":{"position":[[755,7]]},"611":{"position":[[255,6],[295,6]]},"916":{"position":[[6687,6],[12715,7],[17252,7],[22405,6],[28264,7],[32106,7]]},"1067":{"position":[[255,6],[295,6]]},"1094":{"position":[[1174,6]]},"1095":{"position":[[89,6],[196,6],[309,6],[427,6],[564,6]]},"1097":{"position":[[101,6],[202,6],[283,6],[331,6]]},"1098":{"position":[[84,6],[119,6]]},"1103":{"position":[[61,6]]},"1104":{"position":[[755,7]]}},"keywords":{}}],["1.14.x",{"_index":4228,"title":{},"content":{"856":{"position":[[49,6]]}},"keywords":{}}],["1.15.x",{"_index":2287,"title":{},"content":{"285":{"position":[[49,6]]},"856":{"position":[[58,6]]}},"keywords":{}}],["1.16",{"_index":2302,"title":{},"content":{"292":{"position":[[26,4]]}},"keywords":{}}],["1.16.x",{"_index":4229,"title":{},"content":{"856":{"position":[[67,6]]}},"keywords":{}}],["1.17",{"_index":2303,"title":{},"content":{"292":{"position":[[33,4]]}},"keywords":{}}],["1.17.x",{"_index":4230,"title":{},"content":{"856":{"position":[[76,6]]}},"keywords":{}}],["1.18.x",{"_index":4231,"title":{},"content":{"856":{"position":[[98,6]]}},"keywords":{}}],["1.2",{"_index":2468,"title":{"331":{"position":[[0,3]]}},"content":{"568":{"position":[[696,3]]},"1053":{"position":[[496,4]]},"1088":{"position":[[696,3]]}},"keywords":{}}],["1.2.1",{"_index":3790,"title":{},"content":{"565":{"position":[[27,5]]},"1085":{"position":[[27,5]]}},"keywords":{}}],["1.20682",{"_index":3930,"title":{},"content":{"570":{"position":[[5148,8],[5189,8]]},"1090":{"position":[[5148,8],[5189,8]]}},"keywords":{}}],["1.21.x",{"_index":2288,"title":{},"content":{"285":{"position":[[58,6]]}},"keywords":{}}],["1.22.x",{"_index":2289,"title":{},"content":{"285":{"position":[[67,6]]}},"keywords":{}}],["1.3",{"_index":2514,"title":{"332":{"position":[[0,3]]}},"content":{},"keywords":{}}],["1.4",{"_index":2522,"title":{"333":{"position":[[0,3]]}},"content":{"372":{"position":[[1278,4]]},"899":{"position":[[731,4]]}},"keywords":{}}],["1.5",{"_index":2526,"title":{"334":{"position":[[0,3]]}},"content":{"389":{"position":[[3562,3],[7730,4],[13227,4],[19386,3],[23448,4],[28776,4]]},"916":{"position":[[3562,3],[7730,4],[13227,4],[19386,3],[23448,4],[28776,4]]}},"keywords":{}}],["1.5.1",{"_index":2529,"title":{},"content":{"334":{"position":[[210,5]]}},"keywords":{}}],["1.5.2",{"_index":2541,"title":{},"content":{"334":{"position":[[1056,5]]}},"keywords":{}}],["1.5_amd64.deb",{"_index":3063,"title":{},"content":{"389":{"position":[[7679,13],[23397,13]]},"916":{"position":[[7679,13],[23397,13]]}},"keywords":{}}],["1.6",{"_index":2542,"title":{"335":{"position":[[0,3]]}},"content":{"549":{"position":[[457,3]]},"1075":{"position":[[457,3]]}},"keywords":{}}],["1.6.0",{"_index":2970,"title":{},"content":{"389":{"position":[[4743,5],[9630,6],[13874,6],[20567,5],[25348,6],[29423,6]]},"916":{"position":[[4743,5],[9630,6],[13874,6],[20567,5],[25348,6],[29423,6]]}},"keywords":{}}],["1.8.0",{"_index":4148,"title":{},"content":{"580":{"position":[[314,5]]},"1106":{"position":[[314,5]]}},"keywords":{}}],["1.8mav",{"_index":2265,"title":{},"content":{"279":{"position":[[4,8]]},"297":{"position":[[4,8]]},"850":{"position":[[4,8]]},"864":{"position":[[4,8]]}},"keywords":{}}],["1/1",{"_index":92,"title":{},"content":{"7":{"position":[[192,3],[243,3],[295,3],[345,3],[396,3],[445,3]]},"412":{"position":[[171,3],[223,3],[277,3],[328,3],[380,3],[434,3],[485,3],[542,3],[595,3],[645,3]]},"596":{"position":[[192,3],[243,3],[295,3],[345,3],[396,3],[445,3]]},"939":{"position":[[173,3],[227,3],[283,3],[336,3],[389,3],[443,3],[502,3],[557,3],[609,3]]}},"keywords":{}}],["1/100",{"_index":3962,"title":{},"content":{"570":{"position":[[9043,7]]},"1090":{"position":[[9043,7]]}},"keywords":{}}],["10",{"_index":371,"title":{},"content":{"23":{"position":[[364,2],[626,2],[681,2],[897,2],[952,2]]},"182":{"position":[[389,2],[1384,2]]},"189":{"position":[[434,2],[941,2]]},"380":{"position":[[246,2]]},"389":{"position":[[7092,3],[22810,3]]},"541":{"position":[[364,2],[626,2],[681,2],[897,2],[952,2]]},"565":{"position":[[62,2],[192,2],[348,2],[460,2]]},"566":{"position":[[117,2],[333,2],[643,2]]},"568":{"position":[[475,2],[912,2]]},"570":{"position":[[471,2],[9968,2],[14710,2]]},"580":{"position":[[377,2]]},"611":{"position":[[364,2],[626,2],[681,2],[897,2],[952,2]]},"765":{"position":[[389,2],[1384,2]]},"772":{"position":[[434,2],[941,2]]},"907":{"position":[[246,2]]},"916":{"position":[[7092,3],[22810,3]]},"1036":{"position":[[197,3]]},"1067":{"position":[[364,2],[626,2],[681,2],[897,2],[952,2]]},"1085":{"position":[[62,2],[192,2],[348,2],[460,2]]},"1086":{"position":[[117,2],[333,2],[643,2]]},"1088":{"position":[[475,2],[912,2]]},"1090":{"position":[[471,2],[9968,2],[14710,2]]},"1106":{"position":[[377,2]]}},"keywords":{}}],["10%)]\\tloss=0.4860\\ntrain",{"_index":814,"title":{},"content":{"84":{"position":[[1166,26],[2343,26]]},"683":{"position":[[1166,26],[2343,26]]}},"keywords":{}}],["10.2",{"_index":3038,"title":{},"content":{"389":{"position":[[6924,5],[22642,5]]},"916":{"position":[[6924,5],[22642,5]]}},"keywords":{}}],["10.8",{"_index":2941,"title":{},"content":{"389":{"position":[[3758,5],[19582,5]]},"916":{"position":[[3758,5],[19582,5]]}},"keywords":{}}],["10.96.0.2",{"_index":2799,"title":{},"content":{"383":{"position":[[1289,9]]},"910":{"position":[[1289,9]]}},"keywords":{}}],["10.96.0.2us",{"_index":2793,"title":{},"content":{"383":{"position":[[893,12]]},"910":{"position":[[893,12]]}},"keywords":{}}],["10.x",{"_index":3777,"title":{},"content":{"560":{"position":[[117,5]]},"1095":{"position":[[117,5]]}},"keywords":{}}],["10/100",{"_index":3971,"title":{},"content":{"570":{"position":[[9358,8]]},"1090":{"position":[[9358,8]]}},"keywords":{}}],["100",{"_index":3059,"title":{},"content":{"389":{"position":[[7560,4],[23278,4]]},"475":{"position":[[327,4]]},"570":{"position":[[1231,4],[10713,4],[15432,3],[16782,4]]},"916":{"position":[[7560,4],[23278,4]]},"1002":{"position":[[327,4]]},"1090":{"position":[[1231,4],[10713,4],[15432,3],[16782,4]]}},"keywords":{}}],["100/100",{"_index":3975,"title":{},"content":{"570":{"position":[[9506,9]]},"1090":{"position":[[9506,9]]}},"keywords":{}}],["10000",{"_index":3332,"title":{},"content":{"415":{"position":[[479,5]]},"570":{"position":[[1012,6],[10494,6],[16563,6]]},"942":{"position":[[497,5]]},"1090":{"position":[[1012,6],[10494,6],[16563,6]]}},"keywords":{}}],["10023",{"_index":3960,"title":{},"content":{"570":{"position":[[9010,5]]},"1090":{"position":[[9010,5]]}},"keywords":{}}],["1024",{"_index":2479,"title":{},"content":{"331":{"position":[[734,4]]},"389":{"position":[[16644,4],[31498,4]]},"916":{"position":[[16644,4],[31498,4]]}},"keywords":{}}],["1030",{"_index":2640,"title":{},"content":{"352":{"position":[[746,4]]}},"keywords":{}}],["105",{"_index":2968,"title":{},"content":{"389":{"position":[[4657,4],[20481,4]]},"916":{"position":[[4657,4],[20481,4]]}},"keywords":{}}],["10:14:06",{"_index":1167,"title":{},"content":{"110":{"position":[[258,10],[340,10]]},"111":{"position":[[274,10],[356,10]]}},"keywords":{}}],["10:16:25",{"_index":1168,"title":{},"content":{"110":{"position":[[436,10],[518,10]]}},"keywords":{}}],["11",{"_index":2298,"title":{},"content":{"287":{"position":[[24,2]]},"570":{"position":[[4596,3],[7364,3],[14013,3]]},"1090":{"position":[[4596,3],[7364,3],[14013,3]]}},"keywords":{}}],["11%)]\\tloss=0.4389\\ntrain",{"_index":816,"title":{},"content":{"84":{"position":[[1214,26],[2391,26]]},"683":{"position":[[1214,26],[2391,26]]}},"keywords":{}}],["11.0",{"_index":3027,"title":{},"content":{"389":{"position":[[6591,5],[22309,5]]},"916":{"position":[[6591,5],[22309,5]]}},"keywords":{}}],["11.09gib",{"_index":3883,"title":{},"content":{"570":{"position":[[1609,8],[11026,8]]},"1090":{"position":[[1609,8],[11026,8]]}},"keywords":{}}],["11.10gib",{"_index":3886,"title":{},"content":{"570":{"position":[[1855,8],[11272,8]]},"1090":{"position":[[1855,8],[11272,8]]}},"keywords":{}}],["11.17gib",{"_index":3882,"title":{},"content":{"570":{"position":[[1587,8],[1833,8],[11004,8],[11250,8]]},"1090":{"position":[[1587,8],[1833,8],[11004,8],[11250,8]]}},"keywords":{}}],["11/100",{"_index":3972,"title":{},"content":{"570":{"position":[[9394,8]]},"1090":{"position":[[9394,8]]}},"keywords":{}}],["110",{"_index":4019,"title":{},"content":{"570":{"position":[[15499,3]]},"1090":{"position":[[15499,3]]}},"keywords":{}}],["111",{"_index":2705,"title":{},"content":{"372":{"position":[[1196,4]]},"899":{"position":[[649,4]]}},"keywords":{}}],["1116.92",{"_index":3995,"title":{},"content":{"570":{"position":[[14684,7],[14692,10]]},"1090":{"position":[[14684,7],[14692,10]]}},"keywords":{}}],["1152",{"_index":2992,"title":{},"content":{"389":{"position":[[5341,5],[21165,5]]},"916":{"position":[[5341,5],[21165,5]]}},"keywords":{}}],["117581",{"_index":1778,"title":{},"content":{"171":{"position":[[1805,7]]},"199":{"position":[[737,7]]},"741":{"position":[[1817,7]]},"782":{"position":[[737,7]]}},"keywords":{}}],["11:45:01",{"_index":2400,"title":{},"content":{"314":{"position":[[2632,8]]}},"keywords":{}}],["11:59",{"_index":2643,"title":{},"content":{"352":{"position":[[888,5]]}},"keywords":{}}],["11ea",{"_index":747,"title":{},"content":{"77":{"position":[[748,4]]},"78":{"position":[[895,4]]},"79":{"position":[[257,4],[903,4]]},"80":{"position":[[290,4]]},"82":{"position":[[293,4]]},"676":{"position":[[748,4]]},"677":{"position":[[895,4]]},"678":{"position":[[257,4],[903,4]]},"679":{"position":[[290,4]]},"681":{"position":[[293,4]]}},"keywords":{}}],["11m",{"_index":3301,"title":{},"content":{"412":{"position":[[291,3],[342,3],[394,3],[499,3],[556,3]]}},"keywords":{}}],["12",{"_index":853,"title":{},"content":{"93":{"position":[[259,2],[262,2],[417,2],[420,2],[622,2],[625,2],[780,2],[783,2],[985,2],[988,2],[1143,2],[1146,2],[1349,2],[1352,2],[1507,2],[1510,2]]},"94":{"position":[[267,2],[270,2],[425,2],[428,2]]},"110":{"position":[[252,2],[334,2],[430,2],[512,2],[609,2],[612,2],[674,2]]},"111":{"position":[[268,2],[350,2]]}},"keywords":{}}],["12%)]\\tloss=0.4084\\ntrain",{"_index":818,"title":{},"content":{"84":{"position":[[1262,26],[2439,26]]},"683":{"position":[[1262,26],[2439,26]]}},"keywords":{}}],["12.0",{"_index":2937,"title":{},"content":{"389":{"position":[[3655,5],[19479,5]]},"916":{"position":[[3655,5],[19479,5]]}},"keywords":{}}],["12.1",{"_index":2927,"title":{},"content":{"389":{"position":[[3393,4],[6942,4]]},"916":{"position":[[3393,4],[6942,4]]}},"keywords":{}}],["12.9",{"_index":2975,"title":{},"content":{"389":{"position":[[4842,5],[20666,5]]},"916":{"position":[[4842,5],[20666,5]]}},"keywords":{}}],["12/100",{"_index":3973,"title":{},"content":{"570":{"position":[[9430,8]]},"1090":{"position":[[9430,8]]}},"keywords":{}}],["120",{"_index":4022,"title":{},"content":{"570":{"position":[[15567,3]]},"1090":{"position":[[15567,3]]}},"keywords":{}}],["123",{"_index":1163,"title":{},"content":{"109":{"position":[[172,7]]},"110":{"position":[[387,6],[566,6]]},"111":{"position":[[403,6]]}},"keywords":{}}],["123.ipynb",{"_index":1913,"title":{},"content":{"189":{"position":[[866,10]]},"772":{"position":[[866,10]]}},"keywords":{}}],["1233.73",{"_index":3996,"title":{},"content":{"570":{"position":[[14751,7]]},"1090":{"position":[[14751,7]]}},"keywords":{}}],["127.0.0.0/8",{"_index":3139,"title":{},"content":{"389":{"position":[[14415,11],[29964,11]]},"916":{"position":[[14415,11],[29964,11]]}},"keywords":{}}],["127.0.0.1:4200",{"_index":2427,"title":{},"content":{"320":{"position":[[358,15]]},"877":{"position":[[358,15]]}},"keywords":{}}],["127.0.0.1:8080",{"_index":2439,"title":{},"content":{"320":{"position":[[1223,14]]},"877":{"position":[[1223,14]]}},"keywords":{}}],["1280/60000",{"_index":799,"title":{},"content":{"84":{"position":[[825,11],[2002,11]]},"683":{"position":[[825,11],[2002,11]]}},"keywords":{}}],["12:49:33",{"_index":1171,"title":{},"content":{"110":{"position":[[680,10]]}},"keywords":{}}],["13%)]\\tloss=0.4602\\ntrain",{"_index":820,"title":{},"content":{"84":{"position":[[1310,26],[2487,26]]},"683":{"position":[[1310,26],[2487,26]]}},"keywords":{}}],["13/100",{"_index":3974,"title":{},"content":{"570":{"position":[[9466,8]]},"1090":{"position":[[9466,8]]}},"keywords":{}}],["130",{"_index":4025,"title":{},"content":{"570":{"position":[[15635,3]]},"1090":{"position":[[15635,3]]}},"keywords":{}}],["1377.83",{"_index":3997,"title":{},"content":{"570":{"position":[[14759,10]]},"1090":{"position":[[14759,10]]}},"keywords":{}}],["139",{"_index":4098,"title":{},"content":{"572":{"position":[[1924,4]]},"1092":{"position":[[1924,4]]}},"keywords":{}}],["13t16:21:31.000+08:00",{"_index":3474,"title":{},"content":{"443":{"position":[[312,23],[359,23]]},"472":{"position":[[491,23]]},"970":{"position":[[312,23],[359,23]]},"999":{"position":[[491,23]]}},"keywords":{}}],["13t16:21:46.000+08:00",{"_index":3477,"title":{},"content":{"443":{"position":[[406,23]]},"970":{"position":[[406,23]]}},"keywords":{}}],["13t16:23:38.000+08:00",{"_index":3546,"title":{},"content":{"479":{"position":[[679,23]]},"482":{"position":[[426,23]]},"485":{"position":[[414,23]]},"488":{"position":[[444,23]]},"1011":{"position":[[679,23]]},"1014":{"position":[[426,23]]},"1017":{"position":[[414,23]]},"1020":{"position":[[444,23]]}},"keywords":{}}],["13t16:26:54.000+08:00",{"_index":3479,"title":{},"content":{"443":{"position":[[454,23]]},"970":{"position":[[454,23]]}},"keywords":{}}],["13t16:47:51.000+08:00",{"_index":3437,"title":{},"content":{"438":{"position":[[801,23]]},"965":{"position":[[801,23]]}},"keywords":{}}],["13t16:57:27.000+08:00",{"_index":3465,"title":{},"content":{"441":{"position":[[921,23]]},"443":{"position":[[1402,23]]},"446":{"position":[[338,23]]},"449":{"position":[[832,23]]},"968":{"position":[[921,23]]},"970":{"position":[[1402,23]]},"973":{"position":[[338,23]]},"976":{"position":[[832,23]]}},"keywords":{}}],["13t22:19:29.000+08:00",{"_index":765,"title":{},"content":{"79":{"position":[[975,23]]},"678":{"position":[[975,23]]}},"keywords":{}}],["13t22:59:29.000+08:00",{"_index":754,"title":{},"content":{"77":{"position":[[820,23]]},"78":{"position":[[967,23]]},"79":{"position":[[329,23]]},"80":{"position":[[362,23]]},"82":{"position":[[365,23]]},"676":{"position":[[820,23]]},"677":{"position":[[967,23]]},"678":{"position":[[329,23]]},"679":{"position":[[362,23]]},"681":{"position":[[365,23]]}},"keywords":{}}],["14",{"_index":1170,"title":{},"content":{"110":{"position":[[677,2]]},"291":{"position":[[0,2]]},"331":{"position":[[649,4]]}},"keywords":{}}],["14%)]\\tloss=0.4289\\ntrain",{"_index":822,"title":{},"content":{"84":{"position":[[1358,26],[2535,26]]},"683":{"position":[[1358,26],[2535,26]]}},"keywords":{}}],["140",{"_index":4028,"title":{},"content":{"570":{"position":[[15703,3]]},"1090":{"position":[[15703,3]]}},"keywords":{}}],["1485.43",{"_index":3998,"title":{},"content":{"570":{"position":[[14818,7]]},"1090":{"position":[[14818,7]]}},"keywords":{}}],["15",{"_index":3045,"title":{},"content":{"389":{"position":[[7118,3],[22836,3]]},"916":{"position":[[7118,3],[22836,3]]}},"keywords":{}}],["15%)]\\tloss=0.3990\\ntrain",{"_index":824,"title":{},"content":{"84":{"position":[[1406,26],[2583,26]]},"683":{"position":[[1406,26],[2583,26]]}},"keywords":{}}],["15.0",{"_index":3040,"title":{},"content":{"389":{"position":[[6956,5]]},"916":{"position":[[6956,5]]}},"keywords":{}}],["150",{"_index":831,"title":{},"content":{"86":{"position":[[361,4]]},"89":{"position":[[358,4]]},"461":{"position":[[329,4]]},"466":{"position":[[334,4]]},"570":{"position":[[15771,3]]},"669":{"position":[[361,4]]},"672":{"position":[[358,4]]},"988":{"position":[[329,4]]},"993":{"position":[[334,4]]},"1090":{"position":[[15771,3]]}},"keywords":{}}],["153",{"_index":2960,"title":{},"content":{"389":{"position":[[4299,4],[20123,4]]},"916":{"position":[[4299,4],[20123,4]]}},"keywords":{}}],["156",{"_index":3001,"title":{},"content":{"389":{"position":[[5551,4],[21375,4]]},"916":{"position":[[5551,4],[21375,4]]}},"keywords":{}}],["156fcb55fe6648d6",{"_index":3927,"title":{},"content":{"570":{"position":[[4907,16]]},"1090":{"position":[[4907,16]]}},"keywords":{}}],["16",{"_index":1166,"title":{},"content":{"110":{"position":[[255,2],[337,2],[433,2],[515,2]]},"111":{"position":[[271,2],[353,2]]},"372":{"position":[[1345,3]]},"570":{"position":[[2084,3],[2170,3],[2256,3],[2342,3],[2428,3],[2514,3],[2600,3],[2695,3],[2699,3],[2703,3],[2785,3],[2789,3],[2873,3],[2877,3],[2961,3],[2965,3],[3049,3],[3053,3],[3137,3],[3141,3],[3223,3],[3227,3],[3311,3],[3315,3],[3399,3],[3403,3],[3487,3],[3491,3],[3575,3],[3579,3],[3663,3],[3667,3],[3751,3],[3755,3],[5290,3],[5376,3],[5462,3],[5548,3],[5634,3],[5720,3],[5806,3],[5901,3],[5905,3],[5909,3],[5991,3],[5995,3],[6079,3],[6083,3],[6167,3],[6171,3],[6255,3],[6259,3],[6343,3],[6347,3],[6431,3],[6435,3],[6519,3],[6523,3],[11501,3],[11587,3],[11673,3],[11759,3],[11845,3],[11931,3],[12017,3],[12112,3],[12116,3],[12120,3],[12202,3],[12206,3],[12290,3],[12294,3],[12378,3],[12382,3],[12466,3],[12470,3],[12554,3],[12558,3],[12640,3],[12644,3],[12728,3],[12732,3],[12816,3],[12820,3],[12904,3],[12908,3],[12992,3],[12996,3],[13080,3],[13084,3],[13168,3],[13172,3]]},"589":{"position":[[1203,2],[1405,2],[1607,2],[1809,2],[2011,2],[2216,2],[2366,2],[2513,2],[2660,2],[2807,2],[2954,2],[3161,2],[3365,2],[3569,2],[3773,2]]},"899":{"position":[[798,3]]},"1090":{"position":[[2084,3],[2170,3],[2256,3],[2342,3],[2428,3],[2514,3],[2600,3],[2695,3],[2699,3],[2703,3],[2785,3],[2789,3],[2873,3],[2877,3],[2961,3],[2965,3],[3049,3],[3053,3],[3137,3],[3141,3],[3223,3],[3227,3],[3311,3],[3315,3],[3399,3],[3403,3],[3487,3],[3491,3],[3575,3],[3579,3],[3663,3],[3667,3],[3751,3],[3755,3],[5290,3],[5376,3],[5462,3],[5548,3],[5634,3],[5720,3],[5806,3],[5901,3],[5905,3],[5909,3],[5991,3],[5995,3],[6079,3],[6083,3],[6167,3],[6171,3],[6255,3],[6259,3],[6343,3],[6347,3],[6431,3],[6435,3],[6519,3],[6523,3],[11501,3],[11587,3],[11673,3],[11759,3],[11845,3],[11931,3],[12017,3],[12112,3],[12116,3],[12120,3],[12202,3],[12206,3],[12290,3],[12294,3],[12378,3],[12382,3],[12466,3],[12470,3],[12554,3],[12558,3],[12640,3],[12644,3],[12728,3],[12732,3],[12816,3],[12820,3],[12904,3],[12908,3],[12992,3],[12996,3],[13080,3],[13084,3],[13168,3],[13172,3]]},"1115":{"position":[[1203,2],[1405,2],[1607,2],[1809,2],[2011,2],[2216,2],[2366,2],[2513,2],[2660,2],[2807,2],[2954,2],[3161,2],[3365,2],[3569,2],[3773,2]]}},"keywords":{}}],["16%)]\\tloss=0.3852\\n",{"_index":826,"title":{},"content":{"84":{"position":[[1454,22],[2631,22]]},"683":{"position":[[1454,22],[2631,22]]}},"keywords":{}}],["16.0.0.tar.gz",{"_index":3222,"title":{},"content":{"398":{"position":[[356,13],[388,13]]},"578":{"position":[[237,13],[269,13]]},"583":{"position":[[234,13],[266,13]]},"588":{"position":[[232,13],[264,13]]},"925":{"position":[[356,13],[388,13]]},"1104":{"position":[[237,13],[269,13]]},"1109":{"position":[[234,13],[266,13]]},"1114":{"position":[[232,13],[264,13]]}},"keywords":{}}],["16.0.0/virtualenv.pi",{"_index":3224,"title":{},"content":{"398":{"position":[[459,20]]},"578":{"position":[[387,20]]},"583":{"position":[[298,20]]},"588":{"position":[[296,20]]},"925":{"position":[[459,20]]},"1104":{"position":[[387,20]]},"1109":{"position":[[298,20]]},"1114":{"position":[[296,20]]}},"keywords":{}}],["16.9",{"_index":2989,"title":{},"content":{"389":{"position":[[5234,5],[21058,5]]},"916":{"position":[[5234,5],[21058,5]]}},"keywords":{}}],["160",{"_index":4033,"title":{},"content":{"570":{"position":[[15839,3]]},"1090":{"position":[[15839,3]]}},"keywords":{}}],["1639276018590",{"_index":857,"title":{},"content":{"93":{"position":[[370,13],[521,13],[733,13],[884,13],[1096,13],[1247,13],[1460,13],[1611,13]]},"94":{"position":[[378,13],[529,13]]}},"keywords":{}}],["1680.27",{"_index":4000,"title":{},"content":{"570":{"position":[[14884,7]]},"1090":{"position":[[14884,7]]}},"keywords":{}}],["17",{"_index":2299,"title":{},"content":{"287":{"position":[[29,2]]},"372":{"position":[[39,3]]}},"keywords":{}}],["170",{"_index":4036,"title":{},"content":{"570":{"position":[[15907,3]]},"572":{"position":[[1764,4]]},"1090":{"position":[[15907,3]]},"1092":{"position":[[1764,4]]}},"keywords":{}}],["179",{"_index":4038,"title":{},"content":{"570":{"position":[[15950,3]]},"1090":{"position":[[15950,3]]}},"keywords":{}}],["18",{"_index":2515,"title":{},"content":{"332":{"position":[[72,2],[191,2]]}},"keywords":{}}],["18.04/dockerfile.cpu.mxnet_lat",{"_index":3714,"title":{},"content":{"550":{"position":[[126,34]]},"1076":{"position":[[126,34]]}},"keywords":{}}],["18.04/dockerfile.cpu.tf_1.13.1",{"_index":3779,"title":{},"content":{"560":{"position":[[153,31],[266,31]]},"1095":{"position":[[153,31],[266,31]]}},"keywords":{}}],["18.04/dockerfile.gpu.kaldi_lat",{"_index":2760,"title":{},"content":{"376":{"position":[[99,34]]},"903":{"position":[[99,34]]}},"keywords":{}}],["18.04/dockerfile.gpu.mxnet_lat",{"_index":3716,"title":{},"content":{"550":{"position":[[216,34]]},"1076":{"position":[[216,34]]}},"keywords":{}}],["18.04/dockerfile.gpu.pytorch_lat",{"_index":3755,"title":{},"content":{"554":{"position":[[132,36],[273,36]]},"1080":{"position":[[132,36],[273,36]]}},"keywords":{}}],["18.04/dockerfile.gpu.tf_1.13.1",{"_index":3782,"title":{},"content":{"560":{"position":[[384,31],[521,31]]},"1095":{"position":[[384,31],[521,31]]}},"keywords":{}}],["18.893",{"_index":4039,"title":{},"content":{"570":{"position":[[15954,7]]},"1090":{"position":[[15954,7]]}},"keywords":{}}],["1825.38",{"_index":4002,"title":{},"content":{"570":{"position":[[14951,7]]},"1090":{"position":[[14951,7]]}},"keywords":{}}],["18:54:39,785",{"_index":402,"title":{},"content":{"25":{"position":[[11,12]]},"543":{"position":[[11,12]]},"613":{"position":[[11,12]]},"1069":{"position":[[11,12]]}},"keywords":{}}],["18:54:39,789",{"_index":422,"title":{},"content":{"25":{"position":[[1621,12]]},"543":{"position":[[1621,12]]},"613":{"position":[[1621,12]]},"1069":{"position":[[1621,12]]}},"keywords":{}}],["19",{"_index":2373,"title":{},"content":{"314":{"position":[[527,2],[636,2],[772,2],[881,2],[1403,2],[1512,2],[1642,2],[1751,2]]},"331":{"position":[[2628,2],[2736,2]]}},"keywords":{}}],["19.554",{"_index":4010,"title":{},"content":{"570":{"position":[[15156,7],[15221,7]]},"1090":{"position":[[15156,7],[15221,7]]}},"keywords":{}}],["192.168.49.2",{"_index":149,"title":{},"content":{"8":{"position":[[171,12]]},"413":{"position":[[104,12]]},"597":{"position":[[171,12]]},"869":{"position":[[1216,12]]}},"keywords":{}}],["1920/60000",{"_index":801,"title":{},"content":{"84":{"position":[[872,11],[2049,11]]},"683":{"position":[[872,11],[2049,11]]}},"keywords":{}}],["1929.32",{"_index":4004,"title":{},"content":{"570":{"position":[[15018,7]]},"1090":{"position":[[15018,7]]}},"keywords":{}}],["19:59:26.496208",{"_index":3872,"title":{},"content":{"570":{"position":[[1383,16],[10800,16]]},"1090":{"position":[[1383,16],[10800,16]]}},"keywords":{}}],["19:59:26.775660",{"_index":3884,"title":{},"content":{"570":{"position":[[1629,16],[11046,16]]},"1090":{"position":[[1629,16],[11046,16]]}},"keywords":{}}],["19:59:29.675171",{"_index":3887,"title":{},"content":{"570":{"position":[[1879,16],[11296,16]]},"1090":{"position":[[1879,16],[11296,16]]}},"keywords":{}}],["19:59:37.560775",{"_index":3925,"title":{},"content":{"570":{"position":[[4808,16]]},"1090":{"position":[[4808,16]]}},"keywords":{}}],["1:1.0.9",{"_index":2984,"title":{},"content":{"389":{"position":[[5129,7],[10247,8],[14034,8],[20953,7],[25965,8],[29583,8]]},"916":{"position":[[5129,7],[10247,8],[14034,8],[20953,7],[25965,8],[29583,8]]}},"keywords":{}}],["1:2.5.1",{"_index":2933,"title":{},"content":{"389":{"position":[[3554,7],[7721,8],[13218,8],[19378,7],[23439,8],[28767,8]]},"916":{"position":[[3554,7],[7721,8],[13218,8],[19378,7],[23439,8],[28767,8]]}},"keywords":{}}],["1:7.2p2",{"_index":2980,"title":{},"content":{"389":{"position":[[5031,7],[6165,7],[6281,7],[10096,8],[11870,8],[12050,8],[13992,8],[16386,8],[16437,8],[20855,7],[21883,7],[21999,7],[25814,8],[27419,8],[27599,8],[29541,8],[31240,8],[31291,8]]},"916":{"position":[[5031,7],[6165,7],[6281,7],[10096,8],[11870,8],[12050,8],[13992,8],[16386,8],[16437,8],[20855,7],[21883,7],[21999,7],[25814,8],[27419,8],[27599,8],[29541,8],[31240,8],[31291,8]]}},"keywords":{}}],["1:9.10.3.dfsg.p4",{"_index":2958,"title":{},"content":{"389":{"position":[[4270,16],[4396,16],[8872,17],[9078,17],[13642,17],[13705,17],[20094,16],[20220,16],[24590,17],[24796,17],[29191,17],[29254,17]]},"916":{"position":[[4270,16],[4396,16],[8872,17],[9078,17],[13642,17],[13705,17],[20094,16],[20220,16],[24590,17],[24796,17],[29191,17],[29254,17]]}},"keywords":{}}],["1]/128",{"_index":3141,"title":{},"content":{"389":{"position":[[14450,9],[29999,9]]},"916":{"position":[[14450,9],[29999,9]]}},"keywords":{}}],["1_all.deb",{"_index":3108,"title":{},"content":{"389":{"position":[[12191,9],[27740,9]]},"916":{"position":[[12191,9],[27740,9]]}},"keywords":{}}],["1s",{"_index":1137,"title":{},"content":{"107":{"position":[[9136,3]]}},"keywords":{}}],["1step",{"_index":3389,"title":{},"content":{"417":{"position":[[107,5]]},"944":{"position":[[107,5]]}},"keywords":{}}],["1ubuntu1",{"_index":3013,"title":{},"content":{"389":{"position":[[6055,8],[11686,9],[16341,9],[21773,8],[27235,9],[31195,9]]},"916":{"position":[[6055,8],[11686,9],[16341,9],[21773,8],[27235,9],[31195,9]]}},"keywords":{}}],["1ubuntu1_all.deb",{"_index":3105,"title":{},"content":{"389":{"position":[[11628,16],[27177,16]]},"916":{"position":[[11628,16],[27177,16]]}},"keywords":{}}],["1ubuntu2",{"_index":2985,"title":{},"content":{"389":{"position":[[5137,8],[10256,9],[14043,9],[20961,8],[25974,9],[29592,9]]},"916":{"position":[[5137,8],[10256,9],[14043,9],[20961,8],[25974,9],[29592,9]]}},"keywords":{}}],["1ubuntu2_amd64.deb",{"_index":3092,"title":{},"content":{"389":{"position":[[10208,18],[25926,18]]},"916":{"position":[[10208,18],[25926,18]]}},"keywords":{}}],["1ubuntu3.16.04.5",{"_index":2952,"title":{},"content":{"389":{"position":[[4050,16],[8525,17],[13516,17],[19874,16],[24243,17],[29065,17]]},"916":{"position":[[4050,16],[8525,17],[13516,17],[19874,16],[24243,17],[29065,17]]}},"keywords":{}}],["1ubuntu3.16.04.5_amd64.deb",{"_index":3074,"title":{},"content":{"389":{"position":[[8468,26],[24186,26]]},"916":{"position":[[8468,26],[24186,26]]}},"keywords":{}}],["2",{"_index":162,"title":{"26":{"position":[[6,2]]},"162":{"position":[[5,2]]},"312":{"position":[[0,2]]},"336":{"position":[[0,2]]},"360":{"position":[[0,2]]},"416":{"position":[[0,2]]},"544":{"position":[[6,2]]},"614":{"position":[[6,2]]},"732":{"position":[[5,2]]},"882":{"position":[[0,2]]},"943":{"position":[[0,2]]},"1070":{"position":[[6,2]]}},"content":{"9":{"position":[[116,3]]},"35":{"position":[[2874,2]]},"72":{"position":[[743,3]]},"81":{"position":[[508,2],[1111,2]]},"82":{"position":[[803,2]]},"93":{"position":[[955,1]]},"160":{"position":[[91,2],[593,2]]},"161":{"position":[[212,1]]},"170":{"position":[[65,2]]},"171":{"position":[[395,2]]},"217":{"position":[[345,2]]},"223":{"position":[[489,1],[575,1]]},"226":{"position":[[224,1],[310,1]]},"229":{"position":[[553,1]]},"304":{"position":[[44,2]]},"313":{"position":[[335,3]]},"314":{"position":[[1148,1]]},"320":{"position":[[1307,2]]},"331":{"position":[[589,3]]},"352":{"position":[[287,2],[992,2]]},"357":{"position":[[399,2]]},"372":{"position":[[1128,2]]},"375":{"position":[[157,2],[320,2]]},"386":{"position":[[422,2]]},"389":{"position":[[4933,1],[5445,1],[6496,1],[9934,2],[10719,2],[12402,2],[13959,2],[15103,2],[17180,2],[20757,1],[21269,1],[22214,1],[25652,2],[26437,2],[27951,2],[29508,2],[30652,2],[32034,2]]},"412":{"position":[[235,1]]},"413":{"position":[[126,1],[358,2]]},"415":{"position":[[943,4],[1038,4]]},"449":{"position":[[467,2]]},"497":{"position":[[632,2]]},"549":{"position":[[130,2],[301,2]]},"553":{"position":[[134,2],[307,2]]},"559":{"position":[[138,2],[307,2]]},"566":{"position":[[208,1],[424,1]]},"570":{"position":[[7996,2]]},"579":{"position":[[430,1],[600,1],[723,1]]},"580":{"position":[[1300,2]]},"584":{"position":[[397,1],[450,1]]},"589":{"position":[[351,1],[542,1]]},"590":{"position":[[617,1],[797,1]]},"598":{"position":[[116,3]]},"627":{"position":[[2874,2]]},"664":{"position":[[743,3]]},"680":{"position":[[508,2],[1111,2]]},"681":{"position":[[803,2]]},"730":{"position":[[91,2],[593,2]]},"731":{"position":[[212,1]]},"740":{"position":[[65,2]]},"741":{"position":[[395,2]]},"787":{"position":[[345,2]]},"792":{"position":[[553,1]]},"808":{"position":[[489,1],[575,1]]},"811":{"position":[[224,1],[310,1]]},"869":{"position":[[1489,1]]},"870":{"position":[[44,2]]},"877":{"position":[[1307,2]]},"899":{"position":[[581,2]]},"902":{"position":[[157,2],[320,2]]},"913":{"position":[[422,2]]},"916":{"position":[[4933,1],[5445,1],[6496,1],[9934,2],[10719,2],[12402,2],[13959,2],[15103,2],[17180,2],[20757,1],[21269,1],[22214,1],[25652,2],[26437,2],[27951,2],[29508,2],[30652,2],[32034,2]]},"942":{"position":[[961,4],[1056,4]]},"976":{"position":[[467,2]]},"1024":{"position":[[632,2]]},"1075":{"position":[[130,2],[301,2]]},"1079":{"position":[[134,2],[307,2]]},"1086":{"position":[[208,1],[424,1]]},"1090":{"position":[[7996,2]]},"1094":{"position":[[138,2],[307,2]]},"1105":{"position":[[430,1],[600,1],[723,1]]},"1106":{"position":[[1300,2]]},"1110":{"position":[[397,1],[450,1]]},"1115":{"position":[[351,1],[542,1]]},"1116":{"position":[[617,1],[797,1]]}},"keywords":{}}],["2%)]\\tloss=2.1704\\ntrain",{"_index":800,"title":{},"content":{"84":{"position":[[837,25],[2014,25]]},"683":{"position":[[837,25],[2014,25]]}},"keywords":{}}],["2.0",{"_index":1178,"title":{},"content":{"117":{"position":[[30,3],[108,3]]},"149":{"position":[[42,3]]},"685":{"position":[[30,3],[108,3]]},"719":{"position":[[42,3]]},"1053":{"position":[[510,3]]}},"keywords":{}}],["2.0dock",{"_index":3250,"title":{},"content":{"406":{"position":[[911,9]]}},"keywords":{}}],["2.1",{"_index":2351,"title":{"313":{"position":[[0,3]]},"361":{"position":[[0,4]]},"883":{"position":[[0,4]]}},"content":{},"keywords":{}}],["2.1.0",{"_index":2102,"title":{},"content":{"223":{"position":[[201,7]]},"224":{"position":[[334,5]]},"808":{"position":[[201,7]]},"809":{"position":[[334,5]]}},"keywords":{}}],["2.10",{"_index":4223,"title":{"892":{"position":[[0,4]]}},"content":{"853":{"position":[[369,4]]}},"keywords":{}}],["2.10.0",{"_index":17,"title":{},"content":{"1":{"position":[[148,7],[199,7]]},"601":{"position":[[148,7],[199,7]]}},"keywords":{}}],["2.10.x",{"_index":4222,"title":{},"content":{"853":{"position":[[315,6]]}},"keywords":{}}],["2.11+dfsg",{"_index":2945,"title":{},"content":{"389":{"position":[[3935,9],[8354,10],[13388,10],[19759,9],[24072,10],[28937,10]]},"916":{"position":[[3935,9],[8354,10],[13388,10],[19759,9],[24072,10],[28937,10]]}},"keywords":{}}],["2.2",{"_index":2356,"title":{"314":{"position":[[0,3]]},"362":{"position":[[0,4]]},"884":{"position":[[0,4]]}},"content":{},"keywords":{}}],["2.2.20",{"_index":2476,"title":{},"content":{"331":{"position":[[343,7]]}},"keywords":{}}],["2.2.21",{"_index":2361,"title":{},"content":{"314":{"position":[[277,7]]}},"keywords":{}}],["2.23",{"_index":3123,"title":{},"content":{"389":{"position":[[13172,5],[17410,5],[28721,5],[32264,5]]},"916":{"position":[[13172,5],[17410,5],[28721,5],[32264,5]]}},"keywords":{}}],["2.3",{"_index":2405,"title":{"315":{"position":[[0,3]]},"363":{"position":[[0,4]]},"885":{"position":[[0,4]]}},"content":{"1053":{"position":[[449,4]]}},"keywords":{}}],["2.3.0",{"_index":3023,"title":{},"content":{"389":{"position":[[6490,5],[12395,6],[17173,6],[22208,5],[27944,6],[32027,6]]},"916":{"position":[[6490,5],[12395,6],[17173,6],[22208,5],[27944,6],[32027,6]]}},"keywords":{}}],["2.3.x",{"_index":4305,"title":{},"content":{"1053":{"position":[[291,5]]}},"keywords":{}}],["2.4",{"_index":2412,"title":{"316":{"position":[[0,4]]},"364":{"position":[[0,4]]},"886":{"position":[[0,4]]}},"content":{"1053":{"position":[[462,4]]}},"keywords":{}}],["2.5",{"_index":2420,"title":{"317":{"position":[[0,3]]},"365":{"position":[[0,4]]},"887":{"position":[[0,4]]}},"content":{},"keywords":{}}],["2.6",{"_index":2663,"title":{"366":{"position":[[0,4]]},"888":{"position":[[0,4]]}},"content":{},"keywords":{}}],["2.7",{"_index":2664,"title":{"367":{"position":[[0,4]]},"889":{"position":[[0,4]]}},"content":{},"keywords":{}}],["2.7.3",{"_index":8,"title":{},"content":{"1":{"position":[[39,5]]},"601":{"position":[[39,5]]}},"keywords":{}}],["2.8",{"_index":2665,"title":{"368":{"position":[[0,4]]},"890":{"position":[[0,4]]}},"content":{},"keywords":{}}],["2.8.2",{"_index":26,"title":{},"content":{"1":{"position":[[331,6],[371,6]]},"601":{"position":[[331,6],[371,6]]}},"keywords":{}}],["2.9",{"_index":2457,"title":{"369":{"position":[[0,3]]},"891":{"position":[[0,4]]}},"content":{"325":{"position":[[508,3]]},"577":{"position":[[99,3]]},"582":{"position":[[96,3]]},"587":{"position":[[87,3]]},"853":{"position":[[267,3]]},"895":{"position":[[508,3]]},"1103":{"position":[[99,3]]},"1108":{"position":[[96,3]]},"1113":{"position":[[87,3]]}},"keywords":{}}],["2.9.1",{"_index":3032,"title":{},"content":{"389":{"position":[[6808,5],[12900,6],[17310,6],[22526,5],[28449,6],[32164,6]]},"916":{"position":[[6808,5],[12900,6],[17310,6],[22526,5],[28449,6],[32164,6]]}},"keywords":{}}],["2.9.tar.gz",{"_index":2683,"title":{},"content":{"372":{"position":[[117,10],[679,10],[950,10]]},"899":{"position":[[132,10],[403,10]]}},"keywords":{}}],["2.9.x",{"_index":4221,"title":{},"content":{"853":{"position":[[214,5]]}},"keywords":{}}],["2.x",{"_index":2467,"title":{},"content":{"330":{"position":[[174,3]]}},"keywords":{}}],["2/100",{"_index":3963,"title":{},"content":{"570":{"position":[[9078,7]]},"1090":{"position":[[9078,7]]}},"keywords":{}}],["20",{"_index":401,"title":{},"content":{"25":{"position":[[8,2],[1618,2]]},"389":{"position":[[7144,3],[22862,3]]},"543":{"position":[[8,2],[1618,2]]},"570":{"position":[[14777,2]]},"613":{"position":[[8,2],[1618,2]]},"916":{"position":[[7144,3],[22862,3]]},"1069":{"position":[[8,2],[1618,2]]},"1090":{"position":[[14777,2]]}},"keywords":{}}],["20.7.0",{"_index":3020,"title":{},"content":{"389":{"position":[[6393,6],[12237,7],[17131,7],[22111,6],[27786,7],[31985,7]]},"916":{"position":[[6393,6],[12237,7],[17131,7],[22111,6],[27786,7],[31985,7]]}},"keywords":{}}],["200",{"_index":706,"title":{},"content":{"71":{"position":[[595,4]]},"72":{"position":[[144,4]]},"73":{"position":[[168,4]]},"74":{"position":[[491,4]]},"75":{"position":[[171,4]]},"77":{"position":[[635,4]]},"78":{"position":[[782,4]]},"79":{"position":[[142,4]]},"80":{"position":[[177,4]]},"81":{"position":[[673,4]]},"82":{"position":[[180,4]]},"83":{"position":[[152,4]]},"84":{"position":[[187,4]]},"93":{"position":[[168,4]]},"94":{"position":[[180,4]]},"95":{"position":[[325,4]]},"96":{"position":[[185,4]]},"97":{"position":[[233,4]]},"103":{"position":[[154,4]]},"110":{"position":[[158,4]]},"111":{"position":[[178,4]]},"112":{"position":[[281,4]]},"113":{"position":[[183,4]]},"115":{"position":[[219,4]]},"663":{"position":[[595,4]]},"664":{"position":[[144,4]]},"665":{"position":[[168,4]]},"666":{"position":[[491,4]]},"667":{"position":[[171,4]]},"676":{"position":[[635,4]]},"677":{"position":[[782,4]]},"678":{"position":[[142,4]]},"679":{"position":[[177,4]]},"680":{"position":[[673,4]]},"681":{"position":[[180,4]]},"682":{"position":[[152,4]]},"683":{"position":[[187,4]]},"705":{"position":[[154,4]]}},"keywords":{}}],["2015.17",{"_index":4006,"title":{},"content":{"570":{"position":[[15085,7]]},"1090":{"position":[[15085,7]]}},"keywords":{}}],["2017",{"_index":3871,"title":{},"content":{"570":{"position":[[1372,4],[1618,4],[1868,4],[4797,4],[7485,4],[7505,4],[7684,4],[7863,4],[8042,4],[8221,4],[8400,4],[8579,4],[8758,4],[9555,4],[10789,4],[11035,4],[11285,4],[14139,4],[14303,4],[16919,4],[17078,4],[17233,4],[17392,4]]},"1090":{"position":[[1372,4],[1618,4],[1868,4],[4797,4],[7485,4],[7505,4],[7684,4],[7863,4],[8042,4],[8221,4],[8400,4],[8579,4],[8758,4],[9555,4],[10789,4],[11035,4],[11285,4],[14139,4],[14303,4],[16919,4],[17078,4],[17233,4],[17392,4]]}},"keywords":{}}],["2018",{"_index":399,"title":{},"content":{"25":{"position":[[0,4],[1610,4]]},"26":{"position":[[0,4]]},"543":{"position":[[0,4],[1610,4]]},"544":{"position":[[0,4]]},"613":{"position":[[0,4],[1610,4]]},"614":{"position":[[0,4]]},"1069":{"position":[[0,4],[1610,4]]},"1070":{"position":[[0,4]]}},"keywords":{}}],["2019",{"_index":1034,"title":{},"content":{"107":{"position":[[3753,4]]},"372":{"position":[[1131,4],[1349,4]]},"579":{"position":[[1041,4],[1242,4],[1443,4],[1640,4],[1783,4],[1930,4],[2077,4],[2275,4],[2477,4]]},"584":{"position":[[901,4],[1102,4],[1303,4],[1500,4],[1643,4],[1790,4],[1937,4],[2135,4],[2337,4]]},"899":{"position":[[584,4],[802,4]]},"1105":{"position":[[1041,4],[1242,4],[1443,4],[1640,4],[1783,4],[1930,4],[2077,4],[2275,4],[2477,4]]},"1110":{"position":[[901,4],[1102,4],[1303,4],[1500,4],[1643,4],[1790,4],[1937,4],[2135,4],[2337,4]]}},"keywords":{}}],["2020",{"_index":752,"title":{},"content":{"77":{"position":[[811,5]]},"78":{"position":[[958,5]]},"79":{"position":[[320,5],[966,5]]},"80":{"position":[[353,5]]},"82":{"position":[[356,5]]},"103":{"position":[[469,5],[517,5]]},"314":{"position":[[299,4],[519,4],[628,4],[764,4],[873,4],[1395,4],[1504,4],[1634,4],[1743,4],[2641,4]]},"331":{"position":[[365,4],[2620,4],[2728,4]]},"332":{"position":[[64,4],[183,4]]},"372":{"position":[[43,4],[590,4],[861,4]]},"589":{"position":[[1195,4],[1397,4],[1599,4],[1801,4],[2003,4],[2208,4],[2358,4],[2505,4],[2652,4],[2799,4],[2946,4],[3153,4],[3357,4],[3561,4],[3765,4]]},"676":{"position":[[811,5]]},"677":{"position":[[958,5]]},"678":{"position":[[320,5],[966,5]]},"679":{"position":[[353,5]]},"681":{"position":[[356,5]]},"705":{"position":[[469,5],[517,5]]},"899":{"position":[[43,4],[314,4]]},"1115":{"position":[[1195,4],[1397,4],[1599,4],[1801,4],[2003,4],[2208,4],[2358,4],[2505,4],[2652,4],[2799,4],[2946,4],[3153,4],[3357,4],[3561,4],[3765,4]]}},"keywords":{}}],["2021",{"_index":66,"title":{},"content":{"6":{"position":[[172,4]]},"93":{"position":[[253,5],[411,5],[616,5],[774,5],[979,5],[1137,5],[1343,5],[1501,5]]},"94":{"position":[[261,5],[419,5]]},"110":{"position":[[246,5],[328,5],[424,5],[506,5],[603,5],[668,5]]},"111":{"position":[[262,5],[344,5]]},"595":{"position":[[172,4]]}},"keywords":{}}],["2048",{"_index":2481,"title":{},"content":{"331":{"position":[[785,6]]},"389":{"position":[[16513,4],[31367,4]]},"916":{"position":[[16513,4],[31367,4]]}},"keywords":{}}],["2074.92",{"_index":4011,"title":{},"content":{"570":{"position":[[15272,7]]},"1090":{"position":[[15272,7]]}},"keywords":{}}],["20:00:14",{"_index":3934,"title":{},"content":{"570":{"position":[[7496,8]]},"1090":{"position":[[7496,8]]}},"keywords":{}}],["20:00:15.745881",{"_index":3935,"title":{},"content":{"570":{"position":[[7516,16]]},"1090":{"position":[[7516,16]]}},"keywords":{}}],["20:00:15.745949",{"_index":3940,"title":{},"content":{"570":{"position":[[7695,16]]},"1090":{"position":[[7695,16]]}},"keywords":{}}],["20:00:15.745958",{"_index":3942,"title":{},"content":{"570":{"position":[[7874,16]]},"1090":{"position":[[7874,16]]}},"keywords":{}}],["20:00:15.745964",{"_index":3945,"title":{},"content":{"570":{"position":[[8053,16]]},"1090":{"position":[[8053,16]]}},"keywords":{}}],["20:00:15.745969",{"_index":3948,"title":{},"content":{"570":{"position":[[8232,16]]},"1090":{"position":[[8232,16]]}},"keywords":{}}],["20:00:15.745975",{"_index":3951,"title":{},"content":{"570":{"position":[[8411,16]]},"1090":{"position":[[8411,16]]}},"keywords":{}}],["20:00:15.745987",{"_index":3954,"title":{},"content":{"570":{"position":[[8590,16]]},"1090":{"position":[[8590,16]]}},"keywords":{}}],["20:00:15.745997",{"_index":3957,"title":{},"content":{"570":{"position":[[8769,16]]},"1090":{"position":[[8769,16]]}},"keywords":{}}],["20:00:31",{"_index":3977,"title":{},"content":{"570":{"position":[[9566,8]]},"1090":{"position":[[9566,8]]}},"keywords":{}}],["20:23:43,834",{"_index":4191,"title":{},"content":{"589":{"position":[[1206,12],[1408,12],[1610,12],[1812,12],[2014,12]]},"1115":{"position":[[1206,12],[1408,12],[1610,12],[1812,12],[2014,12]]}},"keywords":{}}],["20:23:43,839",{"_index":4197,"title":{},"content":{"589":{"position":[[2219,12],[2369,12]]},"1115":{"position":[[2219,12],[2369,12]]}},"keywords":{}}],["20:23:43,840",{"_index":4198,"title":{},"content":{"589":{"position":[[2516,12],[2663,12],[2810,12]]},"1115":{"position":[[2516,12],[2663,12],[2810,12]]}},"keywords":{}}],["20:30:42,611",{"_index":4138,"title":{},"content":{"579":{"position":[[1052,12]]},"584":{"position":[[912,12]]},"1105":{"position":[[1052,12]]},"1110":{"position":[[912,12]]}},"keywords":{}}],["20:30:42,612",{"_index":4143,"title":{},"content":{"579":{"position":[[1253,12],[1454,12],[1651,12],[1794,12],[1941,12]]},"584":{"position":[[1113,12],[1314,12],[1511,12],[1654,12],[1801,12]]},"1105":{"position":[[1253,12],[1454,12],[1651,12],[1794,12],[1941,12]]},"1110":{"position":[[1113,12],[1314,12],[1511,12],[1654,12],[1801,12]]}},"keywords":{}}],["20:30:44,625",{"_index":4146,"title":{},"content":{"579":{"position":[[2088,12],[2286,12]]},"584":{"position":[[1948,12],[2146,12]]},"1105":{"position":[[2088,12],[2286,12]]},"1110":{"position":[[1948,12],[2146,12]]}},"keywords":{}}],["20:30:44,626",{"_index":4147,"title":{},"content":{"579":{"position":[[2488,12]]},"584":{"position":[[2348,12]]},"1105":{"position":[[2488,12]]},"1110":{"position":[[2348,12]]}},"keywords":{}}],["20t21:58:27.000+08:00",{"_index":903,"title":{},"content":{"100":{"position":[[716,23]]},"101":{"position":[[458,23]]},"102":{"position":[[449,23]]},"702":{"position":[[716,23]]},"703":{"position":[[458,23]]},"704":{"position":[[449,23]]}},"keywords":{}}],["21",{"_index":445,"title":{},"content":{"26":{"position":[[8,2]]},"544":{"position":[[8,2]]},"614":{"position":[[8,2]]},"1070":{"position":[[8,2]]}},"keywords":{}}],["210",{"_index":4065,"title":{},"content":{"572":{"position":[[465,4]]},"1092":{"position":[[465,4]]}},"keywords":{}}],["2132.71",{"_index":4013,"title":{},"content":{"570":{"position":[[15339,7]]},"1090":{"position":[[15339,7]]}},"keywords":{}}],["21398",{"_index":3060,"title":{},"content":{"389":{"position":[[7587,5],[23305,5]]},"916":{"position":[[7587,5],[23305,5]]}},"keywords":{}}],["2183.38",{"_index":4015,"title":{},"content":{"570":{"position":[[15406,7]]},"1090":{"position":[[15406,7]]}},"keywords":{}}],["21:02:09,723",{"_index":4199,"title":{},"content":{"589":{"position":[[2957,12]]},"1115":{"position":[[2957,12]]}},"keywords":{}}],["21:02:09,736",{"_index":4200,"title":{},"content":{"589":{"position":[[3164,12]]},"1115":{"position":[[3164,12]]}},"keywords":{}}],["21:02:09,737",{"_index":4201,"title":{},"content":{"589":{"position":[[3368,12],[3572,12],[3776,12]]},"1115":{"position":[[3368,12],[3572,12],[3776,12]]}},"keywords":{}}],["22",{"_index":4137,"title":{},"content":{"579":{"position":[[1049,2],[1250,2],[1451,2],[1648,2],[1791,2],[1938,2],[2085,2],[2283,2],[2485,2]]},"584":{"position":[[909,2],[1110,2],[1311,2],[1508,2],[1651,2],[1798,2],[1945,2],[2143,2],[2345,2]]},"1105":{"position":[[1049,2],[1250,2],[1451,2],[1648,2],[1791,2],[1938,2],[2085,2],[2283,2],[2485,2]]},"1110":{"position":[[909,2],[1110,2],[1311,2],[1508,2],[1651,2],[1798,2],[1945,2],[2143,2],[2345,2]]}},"keywords":{}}],["22.7",{"_index":2986,"title":{},"content":{"389":{"position":[[5146,5],[20970,5]]},"916":{"position":[[5146,5],[20970,5]]}},"keywords":{}}],["2224.4",{"_index":4017,"title":{},"content":{"570":{"position":[[15474,6]]},"1090":{"position":[[15474,6]]}},"keywords":{}}],["224",{"_index":2966,"title":{},"content":{"389":{"position":[[4541,4],[20365,4]]},"916":{"position":[[4541,4],[20365,4]]}},"keywords":{}}],["2240.28",{"_index":4020,"title":{},"content":{"570":{"position":[[15541,7]]},"1090":{"position":[[15541,7]]}},"keywords":{}}],["2272.12",{"_index":4023,"title":{},"content":{"570":{"position":[[15609,7]]},"1090":{"position":[[15609,7]]}},"keywords":{}}],["229",{"_index":3120,"title":{},"content":{"389":{"position":[[13116,4],[17463,4],[28665,4],[32317,4]]},"916":{"position":[[13116,4],[17463,4],[28665,4],[32317,4]]}},"keywords":{}}],["22:38:04.629150",{"_index":3985,"title":{},"content":{"570":{"position":[[14150,16]]},"1090":{"position":[[14150,16]]}},"keywords":{}}],["22:38:09.263492",{"_index":3989,"title":{},"content":{"570":{"position":[[14314,16]]},"1090":{"position":[[14314,16]]}},"keywords":{}}],["22:54:58.928088",{"_index":4042,"title":{},"content":{"570":{"position":[[16930,16]]},"1090":{"position":[[16930,16]]}},"keywords":{}}],["22:54:58.928153",{"_index":4045,"title":{},"content":{"570":{"position":[[17089,16]]},"1090":{"position":[[17089,16]]}},"keywords":{}}],["22:54:58.928160",{"_index":4047,"title":{},"content":{"570":{"position":[[17244,16]]},"1090":{"position":[[17244,16]]}},"keywords":{}}],["22:54:58.929873",{"_index":4048,"title":{},"content":{"570":{"position":[[17403,16]]},"1090":{"position":[[17403,16]]}},"keywords":{}}],["22t14:03:19.000+08:00",{"_index":928,"title":{},"content":{"103":{"position":[[478,23]]},"705":{"position":[[478,23]]}},"keywords":{}}],["22t14:46:28+0800",{"_index":930,"title":{},"content":{"103":{"position":[[526,18]]},"705":{"position":[[526,18]]}},"keywords":{}}],["2300.68",{"_index":4026,"title":{},"content":{"570":{"position":[[15677,7]]},"1090":{"position":[[15677,7]]}},"keywords":{}}],["2325.81",{"_index":4029,"title":{},"content":{"570":{"position":[[15745,7]]},"1090":{"position":[[15745,7]]}},"keywords":{}}],["2347.14",{"_index":4031,"title":{},"content":{"570":{"position":[[15813,7]]},"1090":{"position":[[15813,7]]}},"keywords":{}}],["2367.74",{"_index":4034,"title":{},"content":{"570":{"position":[[15881,7]]},"1090":{"position":[[15881,7]]}},"keywords":{}}],["24",{"_index":1246,"title":{},"content":{"130":{"position":[[451,2]]},"355":{"position":[[377,2]]},"357":{"position":[[104,2]]},"698":{"position":[[451,2]]}},"keywords":{}}],["24.2",{"_index":2934,"title":{},"content":{"389":{"position":[[3566,5],[19390,5]]},"916":{"position":[[3566,5],[19390,5]]}},"keywords":{}}],["2429",{"_index":3010,"title":{},"content":{"389":{"position":[[5957,5]]},"916":{"position":[[5957,5]]}},"keywords":{}}],["2431.26",{"_index":4021,"title":{},"content":{"570":{"position":[[15549,10]]},"1090":{"position":[[15549,10]]}},"keywords":{}}],["249",{"_index":3014,"title":{},"content":{"389":{"position":[[6064,4],[21782,4]]},"916":{"position":[[6064,4],[21782,4]]}},"keywords":{}}],["25",{"_index":3046,"title":{},"content":{"389":{"position":[[7170,3],[22888,3]]},"916":{"position":[[7170,3],[22888,3]]}},"keywords":{}}],["2500.00",{"_index":4287,"title":{},"content":{"1037":{"position":[[297,8]]},"1038":{"position":[[294,8]]}},"keywords":{}}],["2509.3",{"_index":3999,"title":{},"content":{"570":{"position":[[14826,9]]},"1090":{"position":[[14826,9]]}},"keywords":{}}],["252",{"_index":4092,"title":{},"content":{"572":{"position":[[1618,4]]},"1092":{"position":[[1618,4]]}},"keywords":{}}],["255",{"_index":3333,"title":{},"content":{"415":{"position":[[515,4],[601,3]]},"942":{"position":[[533,4],[619,3]]}},"keywords":{}}],["256",{"_index":3179,"title":{},"content":{"389":{"position":[[16777,3],[16913,3],[31631,3],[31767,3]]},"916":{"position":[[16777,3],[16913,3],[31631,3],[31767,3]]}},"keywords":{}}],["2560/60000",{"_index":803,"title":{},"content":{"84":{"position":[[919,11],[2096,11]]},"683":{"position":[[919,11],[2096,11]]}},"keywords":{}}],["2618.36",{"_index":4012,"title":{},"content":{"570":{"position":[[15280,10]]},"1090":{"position":[[15280,10]]}},"keywords":{}}],["2697.27",{"_index":4005,"title":{},"content":{"570":{"position":[[15026,10]]},"1090":{"position":[[15026,10]]}},"keywords":{}}],["27.2",{"_index":2972,"title":{},"content":{"389":{"position":[[4758,5],[20582,5]]},"916":{"position":[[4758,5],[20582,5]]}},"keywords":{}}],["27.8453",{"_index":4037,"title":{},"content":{"570":{"position":[[15934,8]]},"1090":{"position":[[15934,8]]}},"keywords":{}}],["2721.53",{"_index":4032,"title":{},"content":{"570":{"position":[[15821,10]]},"1090":{"position":[[15821,10]]}},"keywords":{}}],["2739.03",{"_index":4018,"title":{},"content":{"570":{"position":[[15481,10]]},"1090":{"position":[[15481,10]]}},"keywords":{}}],["2739.32",{"_index":4024,"title":{},"content":{"570":{"position":[[15617,10]]},"1090":{"position":[[15617,10]]}},"keywords":{}}],["2744.13",{"_index":4014,"title":{},"content":{"570":{"position":[[15347,10]]},"1090":{"position":[[15347,10]]}},"keywords":{}}],["2745.63",{"_index":4030,"title":{},"content":{"570":{"position":[[15753,10]]},"1090":{"position":[[15753,10]]}},"keywords":{}}],["2749.05",{"_index":4007,"title":{},"content":{"570":{"position":[[15093,10]]},"1090":{"position":[[15093,10]]}},"keywords":{}}],["2750.03",{"_index":4027,"title":{},"content":{"570":{"position":[[15685,10]]},"1090":{"position":[[15685,10]]}},"keywords":{}}],["2754.54",{"_index":4035,"title":{},"content":{"570":{"position":[[15889,10]]},"1090":{"position":[[15889,10]]}},"keywords":{}}],["2770.39",{"_index":4001,"title":{},"content":{"570":{"position":[[14892,10]]},"1090":{"position":[[14892,10]]}},"keywords":{}}],["2777.21",{"_index":4016,"title":{},"content":{"570":{"position":[[15414,10]]},"1090":{"position":[[15414,10]]}},"keywords":{}}],["2788.78",{"_index":4003,"title":{},"content":{"570":{"position":[[14959,10]]},"1090":{"position":[[14959,10]]}},"keywords":{}}],["28",{"_index":3348,"title":{},"content":{"415":{"position":[[900,3]]},"942":{"position":[[918,3]]}},"keywords":{}}],["28e39dcd",{"_index":745,"title":{},"content":{"77":{"position":[[733,9]]},"78":{"position":[[880,9]]},"79":{"position":[[242,9]]},"80":{"position":[[275,9]]},"82":{"position":[[278,9]]},"676":{"position":[[733,9]]},"677":{"position":[[880,9]]},"678":{"position":[[242,9]]},"679":{"position":[[275,9]]},"681":{"position":[[278,9]]}},"keywords":{}}],["29",{"_index":64,"title":{},"content":{"6":{"position":[[160,2]]},"595":{"position":[[160,2]]}},"keywords":{}}],["292",{"_index":4077,"title":{},"content":{"572":{"position":[[1057,4]]},"1092":{"position":[[1057,4]]}},"keywords":{}}],["2:1.1.2",{"_index":2977,"title":{},"content":{"389":{"position":[[4925,7],[9925,8],[13950,8],[20749,7],[25643,8],[29499,8]]},"916":{"position":[[4925,7],[9925,8],[13950,8],[20749,7],[25643,8],[29499,8]]}},"keywords":{}}],["2>/dev/nul",{"_index":495,"title":{},"content":{"28":{"position":[[636,12]]},"546":{"position":[[636,12]]},"616":{"position":[[636,12]]},"1072":{"position":[[636,12]]}},"keywords":{}}],["2_all.deb",{"_index":3110,"title":{},"content":{"389":{"position":[[12355,9],[27904,9]]},"916":{"position":[[12355,9],[27904,9]]}},"keywords":{}}],["2_amd64.deb",{"_index":3088,"title":{},"content":{"389":{"position":[[9884,11],[10662,11],[25602,11],[26380,11]]},"916":{"position":[[9884,11],[10662,11],[25602,11],[26380,11]]}},"keywords":{}}],["2dd587e7b10f3b1f",{"_index":2505,"title":{},"content":{"331":{"position":[[2398,16]]}},"keywords":{}}],["2ff820bb4d93",{"_index":3464,"title":{},"content":{"441":{"position":[[861,14]]},"443":{"position":[[1342,14]]},"446":{"position":[[278,14]]},"449":{"position":[[772,14]]},"452":{"position":[[281,14]]},"968":{"position":[[861,14]]},"970":{"position":[[1342,14]]},"973":{"position":[[278,14]]},"976":{"position":[[772,14]]},"979":{"position":[[281,14]]}},"keywords":{}}],["2m",{"_index":2859,"title":{},"content":{"389":{"position":[[1461,2]]},"916":{"position":[[1461,2]]}},"keywords":{}}],["2s",{"_index":3187,"title":{},"content":{"389":{"position":[[22671,2]]},"916":{"position":[[22671,2]]}},"keywords":{}}],["2step",{"_index":3390,"title":{},"content":{"417":{"position":[[113,5]]},"944":{"position":[[113,5]]}},"keywords":{}}],["2ubuntu0.16.04.3",{"_index":3029,"title":{},"content":{"389":{"position":[[6694,16],[12723,17],[17260,17],[22412,16],[28272,17],[32114,17]]},"916":{"position":[[6694,16],[12723,17],[17260,17],[22412,16],[28272,17],[32114,17]]}},"keywords":{}}],["2ubuntu0.16.04.3_all.deb",{"_index":3114,"title":{},"content":{"389":{"position":[[12660,24],[28209,24]]},"916":{"position":[[12660,24],[28209,24]]}},"keywords":{}}],["2ubuntu3",{"_index":2971,"title":{},"content":{"389":{"position":[[4749,8],[9637,9],[13881,9],[20573,8],[25355,9],[29430,9]]},"916":{"position":[[4749,8],[9637,9],[13881,9],[20573,8],[25355,9],[29430,9]]}},"keywords":{}}],["2ubuntu3_amd64.deb",{"_index":3084,"title":{},"content":{"389":{"position":[[9578,18],[25296,18]]},"916":{"position":[[9578,18],[25296,18]]}},"keywords":{}}],["2⁄3",{"_index":1112,"title":{},"content":{"107":{"position":[[7967,3],[7987,3],[9620,3],[10074,3],[10252,3],[10489,3]]}},"keywords":{}}],["3",{"_index":867,"title":{"163":{"position":[[5,2]]},"337":{"position":[[0,2]]},"417":{"position":[[0,2]]},"733":{"position":[[5,2]]},"944":{"position":[[0,2]]}},"content":{"93":{"position":[[1319,1]]},"107":{"position":[[7738,1],[7903,1],[8024,1]]},"141":{"position":[[827,1]]},"160":{"position":[[295,2]]},"170":{"position":[[152,2]]},"171":{"position":[[452,2],[1786,2]]},"199":{"position":[[718,2]]},"217":{"position":[[837,2]]},"230":{"position":[[559,1]]},"290":{"position":[[8,1]]},"314":{"position":[[1167,1]]},"331":{"position":[[609,3]]},"352":{"position":[[294,2],[1057,2]]},"357":{"position":[[406,2]]},"375":{"position":[[270,2]]},"386":{"position":[[530,2]]},"389":{"position":[[6589,1],[12549,2],[17218,2],[22307,1],[28098,2],[32072,2]]},"398":{"position":[[438,1]]},"415":{"position":[[856,3],[860,3],[976,3],[980,3],[1071,3],[1075,3]]},"417":{"position":[[91,1]]},"549":{"position":[[251,2]]},"553":{"position":[[255,2]]},"559":{"position":[[252,2]]},"570":{"position":[[1511,1],[1757,1],[8175,2],[10928,1],[11174,1]]},"578":{"position":[[319,2],[357,1]]},"730":{"position":[[295,2]]},"740":{"position":[[152,2]]},"741":{"position":[[452,2],[1798,2]]},"782":{"position":[[718,2]]},"787":{"position":[[837,2]]},"793":{"position":[[559,1]]},"902":{"position":[[270,2]]},"913":{"position":[[530,2]]},"916":{"position":[[6589,1],[12549,2],[17218,2],[22307,1],[28098,2],[32072,2]]},"925":{"position":[[438,1]]},"942":{"position":[[874,3],[878,3],[994,3],[998,3],[1089,3],[1093,3]]},"944":{"position":[[91,1]]},"1075":{"position":[[251,2]]},"1079":{"position":[[255,2]]},"1090":{"position":[[1511,1],[1757,1],[8175,2],[10928,1],[11174,1]]},"1094":{"position":[[252,2]]},"1104":{"position":[[319,2],[357,1]]}},"keywords":{}}],["3%)]\\tloss=2.0766\\ntrain",{"_index":802,"title":{},"content":{"84":{"position":[[884,25],[2061,25]]},"683":{"position":[[884,25],[2061,25]]}},"keywords":{}}],["3.0",{"_index":4309,"title":{},"content":{"1053":{"position":[[475,3]]}},"keywords":{}}],["3.1",{"_index":2574,"title":{"338":{"position":[[0,3]]}},"content":{"369":{"position":[[411,4],[593,5]]},"853":{"position":[[471,3]]},"892":{"position":[[411,4],[593,5]]}},"keywords":{}}],["3.1.0",{"_index":18,"title":{},"content":{"1":{"position":[[160,8]]},"389":{"position":[[5324,5],[10534,6],[14109,6],[21148,5],[26252,6],[29658,6]]},"580":{"position":[[842,5],[935,5],[974,5],[1015,5],[1054,5]]},"601":{"position":[[160,8]]},"916":{"position":[[5324,5],[10534,6],[14109,6],[21148,5],[26252,6],[29658,6]]},"1106":{"position":[[842,5],[935,5],[974,5],[1015,5],[1054,5]]}},"keywords":{}}],["3.1.0/bin/hadoop",{"_index":4153,"title":{},"content":{"580":{"position":[[476,16]]},"1106":{"position":[[476,16]]}},"keywords":{}}],["3.1.0/etc/hadoop",{"_index":4165,"title":{},"content":{"580":{"position":[[1092,16]]},"1106":{"position":[[1092,16]]}},"keywords":{}}],["3.1.2",{"_index":4180,"title":{},"content":{"585":{"position":[[552,5],[645,5],[684,5],[725,5],[764,5]]},"1111":{"position":[[552,5],[645,5],[684,5],[725,5],[764,5]]}},"keywords":{}}],["3.1.2/etc/hadoop",{"_index":4181,"title":{},"content":{"585":{"position":[[802,16]]},"1111":{"position":[[802,16]]}},"keywords":{}}],["3.1.x",{"_index":4224,"title":{},"content":{"853":{"position":[[418,5]]}},"keywords":{}}],["3.2",{"_index":2578,"title":{"339":{"position":[[0,3]]}},"content":{"853":{"position":[[572,3]]}},"keywords":{}}],["3.2.0",{"_index":2713,"title":{},"content":{"372":{"position":[[1476,5]]},"899":{"position":[[929,5]]}},"keywords":{}}],["3.2.x",{"_index":4225,"title":{},"content":{"853":{"position":[[519,5]]}},"keywords":{}}],["3.3",{"_index":2266,"title":{"340":{"position":[[0,3]]}},"content":{"279":{"position":[[13,3]]},"288":{"position":[[0,3]]},"297":{"position":[[13,3]]},"850":{"position":[[13,3]]},"864":{"position":[[13,3]]}},"keywords":{}}],["3.4",{"_index":2594,"title":{"341":{"position":[[0,3]]}},"content":{},"keywords":{}}],["3.5",{"_index":2599,"title":{"342":{"position":[[0,3]]}},"content":{},"keywords":{}}],["3.6",{"_index":2305,"title":{"343":{"position":[[0,3]]}},"content":{"293":{"position":[[42,4]]}},"keywords":{}}],["3.6.1",{"_index":2281,"title":{},"content":{"283":{"position":[[130,6]]},"854":{"position":[[130,6]]}},"keywords":{}}],["3.7",{"_index":2306,"title":{},"content":{"293":{"position":[[47,3]]}},"keywords":{}}],["3.8",{"_index":2307,"title":{},"content":{"293":{"position":[[53,3]]}},"keywords":{}}],["3.8.1",{"_index":2267,"title":{},"content":{"279":{"position":[[30,5]]},"288":{"position":[[17,5]]},"297":{"position":[[30,5]]},"850":{"position":[[30,5]]},"864":{"position":[[30,5]]}},"keywords":{}}],["3/100",{"_index":3964,"title":{},"content":{"570":{"position":[[9113,7]]},"1090":{"position":[[9113,7]]}},"keywords":{}}],["30",{"_index":1876,"title":{},"content":{"182":{"position":[[505,3],[1469,3]]},"314":{"position":[[2629,2]]},"389":{"position":[[3364,2],[7196,3],[17615,2],[19188,2],[22914,3],[32469,2]]},"570":{"position":[[14843,2]]},"765":{"position":[[505,3],[1469,3]]},"916":{"position":[[3364,2],[7196,3],[17615,2],[19188,2],[22914,3],[32469,2]]},"1090":{"position":[[14843,2]]}},"keywords":{}}],["30070",{"_index":336,"title":{},"content":{"20":{"position":[[683,5]]},"620":{"position":[[683,5]]}},"keywords":{}}],["31",{"_index":3984,"title":{},"content":{"570":{"position":[[14147,2],[14311,2],[16927,2],[17086,2],[17241,2],[17400,2]]},"1090":{"position":[[14147,2],[14311,2],[16927,2],[17086,2],[17241,2],[17400,2]]}},"keywords":{}}],["32",{"_index":1983,"title":{},"content":{"199":{"position":[[1224,2]]},"389":{"position":[[19152,2]]},"570":{"position":[[2088,3],[2092,3],[2174,3],[2178,3],[2260,3],[2264,3],[2346,3],[2350,3],[2432,3],[2436,3],[2518,3],[2522,3],[2604,3],[2608,3],[2781,3],[2869,3],[2957,3],[3045,3],[3133,3],[3219,3],[3307,3],[3395,3],[3483,3],[3571,3],[3659,3],[3747,3],[3842,3],[5294,3],[5298,3],[5380,3],[5384,3],[5466,3],[5470,3],[5552,3],[5556,3],[5638,3],[5642,3],[5724,3],[5728,3],[5810,3],[5814,3],[5987,3],[6075,3],[6163,3],[6251,3],[6339,3],[6427,3],[6515,3],[6610,3],[11505,3],[11509,3],[11591,3],[11595,3],[11677,3],[11681,3],[11763,3],[11767,3],[11849,3],[11853,3],[11935,3],[11939,3],[12021,3],[12025,3],[12198,3],[12286,3],[12374,3],[12462,3],[12550,3],[12636,3],[12724,3],[12812,3],[12900,3],[12988,3],[13076,3],[13164,3],[13259,3]]},"782":{"position":[[1224,2]]},"916":{"position":[[19152,2]]},"1090":{"position":[[2088,3],[2092,3],[2174,3],[2178,3],[2260,3],[2264,3],[2346,3],[2350,3],[2432,3],[2436,3],[2518,3],[2522,3],[2604,3],[2608,3],[2781,3],[2869,3],[2957,3],[3045,3],[3133,3],[3219,3],[3307,3],[3395,3],[3483,3],[3571,3],[3659,3],[3747,3],[3842,3],[5294,3],[5298,3],[5380,3],[5384,3],[5466,3],[5470,3],[5552,3],[5556,3],[5638,3],[5642,3],[5724,3],[5728,3],[5810,3],[5814,3],[5987,3],[6075,3],[6163,3],[6251,3],[6339,3],[6427,3],[6515,3],[6610,3],[11505,3],[11509,3],[11591,3],[11595,3],[11677,3],[11681,3],[11763,3],[11767,3],[11849,3],[11853,3],[11935,3],[11939,3],[12021,3],[12025,3],[12198,3],[12286,3],[12374,3],[12462,3],[12550,3],[12636,3],[12724,3],[12812,3],[12900,3],[12988,3],[13076,3],[13164,3],[13259,3]]}},"keywords":{}}],["3200/60000",{"_index":805,"title":{},"content":{"84":{"position":[[966,11],[2143,11]]},"683":{"position":[[966,11],[2143,11]]}},"keywords":{}}],["32080",{"_index":140,"title":{},"content":{"8":{"position":[[18,5]]},"384":{"position":[[838,5]]},"524":{"position":[[177,5]]},"597":{"position":[[18,5]]},"911":{"position":[[838,5]]}},"keywords":{}}],["32080:80",{"_index":153,"title":{},"content":{"8":{"position":[[286,8]]},"320":{"position":[[176,8]]},"413":{"position":[[216,8]]},"597":{"position":[[286,8]]},"869":{"position":[[1340,8]]},"877":{"position":[[176,8]]},"940":{"position":[[107,8]]}},"keywords":{}}],["321",{"_index":2120,"title":{},"content":{"227":{"position":[[28,3]]},"812":{"position":[[28,3]]}},"keywords":{}}],["33",{"_index":2925,"title":{},"content":{"389":{"position":[[3328,2]]},"916":{"position":[[3328,2]]}},"keywords":{}}],["3306:3306",{"_index":184,"title":{},"content":{"13":{"position":[[176,9]]},"605":{"position":[[176,9]]}},"keywords":{}}],["331",{"_index":4087,"title":{},"content":{"572":{"position":[[1437,4]]},"1092":{"position":[[1437,4]]}},"keywords":{}}],["335",{"_index":3018,"title":{},"content":{"389":{"position":[[6300,4],[22018,4]]},"916":{"position":[[6300,4],[22018,4]]}},"keywords":{}}],["3394",{"_index":3003,"title":{},"content":{"389":{"position":[[5656,5],[21480,5]]},"916":{"position":[[5656,5],[21480,5]]}},"keywords":{}}],["35",{"_index":3047,"title":{},"content":{"389":{"position":[[7222,3],[22940,3]]},"916":{"position":[[7222,3],[22940,3]]}},"keywords":{}}],["37.6272",{"_index":4008,"title":{},"content":{"570":{"position":[[15137,8],[15192,8]]},"1090":{"position":[[15137,8],[15192,8]]}},"keywords":{}}],["371",{"_index":4170,"title":{},"content":{"580":{"position":[[1426,3]]},"1106":{"position":[[1426,3]]}},"keywords":{}}],["38.9",{"_index":3016,"title":{},"content":{"389":{"position":[[6184,5],[21902,5]]},"916":{"position":[[6184,5],[21902,5]]}},"keywords":{}}],["384.81nvidia",{"_index":3249,"title":{},"content":{"406":{"position":[[881,12]]}},"keywords":{}}],["3840/60000",{"_index":807,"title":{},"content":{"84":{"position":[[1013,11],[2190,11]]},"683":{"position":[[1013,11],[2190,11]]}},"keywords":{}}],["38e39dcd",{"_index":764,"title":{},"content":{"79":{"position":[[888,9]]},"678":{"position":[[888,9]]}},"keywords":{}}],["39",{"_index":1775,"title":{},"content":{"171":{"position":[[1768,3]]},"199":{"position":[[700,3]]},"741":{"position":[[1780,3]]},"782":{"position":[[700,3]]}},"keywords":{}}],["3_all.deb",{"_index":3112,"title":{},"content":{"389":{"position":[[12505,9],[28054,9]]},"916":{"position":[[12505,9],[28054,9]]}},"keywords":{}}],["3dde3f6869",{"_index":1514,"title":{},"content":{"154":{"position":[[299,12]]},"724":{"position":[[299,12]]}},"keywords":{}}],["3h33m",{"_index":4249,"title":{},"content":{"939":{"position":[[187,5],[241,5],[297,5],[350,5],[403,5],[457,5],[516,5],[571,5],[623,5]]}},"keywords":{}}],["3rd",{"_index":1812,"title":{},"content":{"176":{"position":[[439,3]]},"177":{"position":[[183,3]]},"181":{"position":[[172,3]]},"218":{"position":[[334,3]]},"229":{"position":[[1647,3]]},"746":{"position":[[440,3]]},"747":{"position":[[183,3]]},"764":{"position":[[172,3]]},"788":{"position":[[334,3]]},"792":{"position":[[1649,3]]}},"keywords":{}}],["3the",{"_index":3391,"title":{},"content":{"417":{"position":[[119,4]]},"944":{"position":[[119,4]]}},"keywords":{}}],["3ubuntu0.1",{"_index":3033,"title":{},"content":{"389":{"position":[[6814,10],[12907,11],[17317,11],[22532,10],[28456,11],[32171,11]]},"916":{"position":[[6814,10],[12907,11],[17317,11],[22532,10],[28456,11],[32171,11]]}},"keywords":{}}],["3ubuntu0.1_all.deb",{"_index":3116,"title":{},"content":{"389":{"position":[[12850,18],[28399,18]]},"916":{"position":[[12850,18],[28399,18]]}},"keywords":{}}],["3ubuntu0.3",{"_index":2991,"title":{},"content":{"389":{"position":[[5330,10],[10541,11],[14116,11],[21154,10],[26259,11],[29665,11]]},"916":{"position":[[5330,10],[10541,11],[14116,11],[21154,10],[26259,11],[29665,11]]}},"keywords":{}}],["3ubuntu0.3_amd64.deb",{"_index":3095,"title":{},"content":{"389":{"position":[[10491,20],[26209,20]]},"916":{"position":[[10491,20],[26209,20]]}},"keywords":{}}],["3:how",{"_index":460,"title":{"27":{"position":[[6,5]]},"545":{"position":[[6,5]]},"615":{"position":[[6,5]]},"1071":{"position":[[6,5]]}},"content":{},"keywords":{}}],["3:preview",{"_index":664,"title":{},"content":{"35":{"position":[[3615,9]]},"627":{"position":[[3615,9]]}},"keywords":{}}],["4",{"_index":870,"title":{"164":{"position":[[5,2]]},"344":{"position":[[0,2]]},"418":{"position":[[0,2]]},"734":{"position":[[5,2]]},"945":{"position":[[0,2]]}},"content":{"93":{"position":[[1683,1]]},"160":{"position":[[412,2],[596,3]]},"170":{"position":[[216,2]]},"176":{"position":[[9,1]]},"199":{"position":[[88,1]]},"313":{"position":[[339,4]]},"314":{"position":[[1190,1]]},"331":{"position":[[629,3]]},"386":{"position":[[608,2]]},"415":{"position":[[1522,1]]},"570":{"position":[[167,1],[8354,2],[9741,1]]},"730":{"position":[[412,2],[596,3]]},"740":{"position":[[216,2]]},"746":{"position":[[9,1]]},"782":{"position":[[88,1]]},"913":{"position":[[608,2]]},"942":{"position":[[1540,1]]},"1090":{"position":[[167,1],[8354,2],[9741,1]]}},"keywords":{}}],["4%)]\\tloss=1.8679\\ntrain",{"_index":804,"title":{},"content":{"84":{"position":[[931,25],[2108,25]]},"683":{"position":[[931,25],[2108,25]]}},"keywords":{}}],["4.1",{"_index":2605,"title":{"345":{"position":[[0,3]]}},"content":{},"keywords":{}}],["4.2",{"_index":2608,"title":{"346":{"position":[[0,3]]}},"content":{},"keywords":{}}],["4.3",{"_index":2609,"title":{"347":{"position":[[0,3]]}},"content":{},"keywords":{}}],["4.3.0",{"_index":2951,"title":{},"content":{"389":{"position":[[4044,5],[8518,6],[13509,6],[19868,5],[24236,6],[29058,6]]},"916":{"position":[[4044,5],[8518,6],[13509,6],[19868,5],[24236,6],[29058,6]]}},"keywords":{}}],["4.3.1",{"_index":2610,"title":{"348":{"position":[[0,5]]}},"content":{},"keywords":{}}],["4.3.2",{"_index":2612,"title":{"349":{"position":[[0,5]]}},"content":{},"keywords":{}}],["4.3.3",{"_index":2964,"title":{},"content":{"389":{"position":[[4522,5],[4638,5],[9269,6],[9450,6],[13767,6],[13819,6],[20346,5],[20462,5],[24987,6],[25168,6],[29316,6],[29368,6]]},"916":{"position":[[4522,5],[4638,5],[9269,6],[9450,6],[13767,6],[13819,6],[20346,5],[20462,5],[24987,6],[25168,6],[29316,6],[29368,6]]}},"keywords":{}}],["4.4",{"_index":2614,"title":{"350":{"position":[[0,3]]}},"content":{},"keywords":{}}],["4/100",{"_index":3965,"title":{},"content":{"570":{"position":[[9148,7]]},"1090":{"position":[[9148,7]]}},"keywords":{}}],["40",{"_index":3048,"title":{},"content":{"389":{"position":[[7248,3],[22966,3]]},"570":{"position":[[14910,2]]},"916":{"position":[[7248,3],[22966,3]]},"1090":{"position":[[14910,2]]}},"keywords":{}}],["40000",{"_index":3836,"title":{},"content":{"570":{"position":[[208,5],[9782,5]]},"1090":{"position":[[208,5],[9782,5]]}},"keywords":{}}],["4096",{"_index":49,"title":{},"content":{"5":{"position":[[54,4]]},"331":{"position":[[743,4],[792,4],[805,4],[836,4]]},"410":{"position":[[191,4]]},"594":{"position":[[54,4]]},"937":{"position":[[193,4]]}},"keywords":{}}],["40d0",{"_index":3542,"title":{},"content":{"479":{"position":[[525,4]]},"482":{"position":[[289,4]]},"485":{"position":[[277,4]]},"488":{"position":[[284,4]]},"1011":{"position":[[525,4]]},"1014":{"position":[[289,4]]},"1017":{"position":[[277,4]]},"1020":{"position":[[284,4]]}},"keywords":{}}],["410",{"_index":3006,"title":{},"content":{"389":{"position":[[5749,4],[21573,4]]},"916":{"position":[[5749,4],[21573,4]]}},"keywords":{}}],["411c",{"_index":3469,"title":{},"content":{"443":{"position":[[236,4]]},"472":{"position":[[416,4]]},"970":{"position":[[236,4]]},"999":{"position":[[416,4]]}},"keywords":{}}],["41936314e25f402d5f7d73152dd587e7b10f3b1f",{"_index":2513,"title":{},"content":{"331":{"position":[[2636,40]]}},"keywords":{}}],["4200",{"_index":2429,"title":{},"content":{"320":{"position":[[414,5]]},"877":{"position":[[414,5]]}},"keywords":{}}],["4222",{"_index":895,"title":{},"content":{"100":{"position":[[565,4]]},"101":{"position":[[307,4]]},"102":{"position":[[300,4]]},"103":{"position":[[317,4]]},"702":{"position":[[565,4]]},"703":{"position":[[307,4]]},"704":{"position":[[300,4]]},"705":{"position":[[317,4]]}},"keywords":{}}],["43d4",{"_index":3431,"title":{},"content":{"438":{"position":[[731,4]]},"965":{"position":[[731,4]]}},"keywords":{}}],["4480/60000",{"_index":809,"title":{},"content":{"84":{"position":[[1060,11],[2237,11]]},"683":{"position":[[1060,11],[2237,11]]}},"keywords":{}}],["4496",{"_index":3188,"title":{},"content":{"389":{"position":[[22674,5]]},"916":{"position":[[22674,5]]}},"keywords":{}}],["45",{"_index":3049,"title":{},"content":{"389":{"position":[[7274,3],[22992,3]]},"916":{"position":[[7274,3],[22992,3]]}},"keywords":{}}],["456",{"_index":1164,"title":{},"content":{"109":{"position":[[180,6]]},"110":{"position":[[394,5],[573,5]]},"111":{"position":[[410,5]]}},"keywords":{}}],["45fdc0bb15f5",{"_index":3544,"title":{},"content":{"479":{"position":[[535,14]]},"482":{"position":[[299,14]]},"485":{"position":[[287,14]]},"488":{"position":[[294,14]]},"1011":{"position":[[535,14]]},"1014":{"position":[[299,14]]},"1017":{"position":[[287,14]]},"1020":{"position":[[294,14]]}},"keywords":{}}],["47",{"_index":4067,"title":{},"content":{"572":{"position":[[630,3]]},"1092":{"position":[[630,3]]}},"keywords":{}}],["48",{"_index":4059,"title":{},"content":{"572":{"position":[[228,3]]},"1092":{"position":[[228,3]]}},"keywords":{}}],["49e5",{"_index":3462,"title":{},"content":{"441":{"position":[[851,4]]},"443":{"position":[[1332,4]]},"446":{"position":[[268,4]]},"449":{"position":[[762,4]]},"452":{"position":[[271,4]]},"968":{"position":[[851,4]]},"970":{"position":[[1332,4]]},"973":{"position":[[268,4]]},"976":{"position":[[762,4]]},"979":{"position":[[271,4]]}},"keywords":{}}],["4bczn",{"_index":4261,"title":{},"content":{"939":{"position":[[551,5]]}},"keywords":{}}],["4e89",{"_index":3470,"title":{},"content":{"443":{"position":[[241,4]]},"472":{"position":[[421,4]]},"970":{"position":[[241,4]]},"999":{"position":[[421,4]]}},"keywords":{}}],["4ubuntu2.8",{"_index":2981,"title":{},"content":{"389":{"position":[[5039,10],[6173,10],[6289,10],[10105,11],[11879,11],[12059,11],[14001,11],[16395,11],[16446,11],[20863,10],[21891,10],[22007,10],[25823,11],[27428,11],[27608,11],[29550,11],[31249,11],[31300,11]]},"916":{"position":[[5039,10],[6173,10],[6289,10],[10105,11],[11879,11],[12059,11],[14001,11],[16395,11],[16446,11],[20863,10],[21891,10],[22007,10],[25823,11],[27428,11],[27608,11],[29550,11],[31249,11],[31300,11]]}},"keywords":{}}],["4ubuntu2.8_amd64.deb",{"_index":3090,"title":{},"content":{"389":{"position":[[10046,20],[11815,20],[12000,20],[25764,20],[27364,20],[27549,20]]},"916":{"position":[[10046,20],[11815,20],[12000,20],[25764,20],[27364,20],[27549,20]]}},"keywords":{}}],["4ubuntu21.22",{"_index":3121,"title":{},"content":{"389":{"position":[[13121,13],[17468,13],[28670,13],[32322,13]]},"916":{"position":[[13121,13],[17468,13],[28670,13],[32322,13]]}},"keywords":{}}],["4:dock",{"_index":464,"title":{"28":{"position":[[6,8]]},"546":{"position":[[6,8]]},"616":{"position":[[6,8]]},"1072":{"position":[[6,8]]}},"content":{},"keywords":{}}],["5",{"_index":1159,"title":{"165":{"position":[[5,2]]},"351":{"position":[[0,2]]},"419":{"position":[[0,2]]},"735":{"position":[[5,2]]},"946":{"position":[[0,2]]}},"content":{"107":{"position":[[10933,1]]},"156":{"position":[[1059,1]]},"170":{"position":[[270,2]]},"314":{"position":[[1208,1],[1272,1],[1282,1]]},"389":{"position":[[3653,1],[5747,1],[7067,2],[7879,2],[11185,2],[13268,2],[15380,2],[19477,1],[21571,1],[22785,2],[23597,2],[26903,2],[28817,2],[30929,2]]},"503":{"position":[[282,2]]},"570":{"position":[[765,2],[8533,2],[10244,2],[16319,2]]},"726":{"position":[[1059,1]]},"740":{"position":[[270,2]]},"869":{"position":[[1397,2],[1499,2]]},"916":{"position":[[3653,1],[5747,1],[7067,2],[7879,2],[11185,2],[13268,2],[15380,2],[19477,1],[21571,1],[22785,2],[23597,2],[26903,2],[28817,2],[30929,2]]},"1030":{"position":[[282,2]]},"1090":{"position":[[765,2],[8533,2],[10244,2],[16319,2]]}},"keywords":{}}],["5%)]\\tloss=1.4135\\ntrain",{"_index":806,"title":{},"content":{"84":{"position":[[978,25],[2155,25]]},"683":{"position":[[978,25],[2155,25]]}},"keywords":{}}],["5.0",{"_index":2688,"title":{},"content":{"372":{"position":[[196,4]]}},"keywords":{}}],["5.1.39",{"_index":252,"title":{},"content":{"16":{"position":[[753,7]]},"608":{"position":[[753,7]]}},"keywords":{}}],["5.2",{"_index":3744,"title":{},"content":{"553":{"position":[[1331,3]]},"1079":{"position":[[1331,3]]}},"keywords":{}}],["5.3",{"_index":2974,"title":{},"content":{"389":{"position":[[4838,3],[9775,5],[13914,5],[20662,3],[25493,5],[29463,5]]},"916":{"position":[[4838,3],[9775,5],[13914,5],[20662,3],[25493,5],[29463,5]]}},"keywords":{}}],["5.5",{"_index":3036,"title":{},"content":{"389":{"position":[[6911,3],[13065,4],[17358,4],[22629,3],[28614,4],[32212,4]]},"916":{"position":[[6911,3],[13065,4],[17358,4],[22629,3],[28614,4],[32212,4]]}},"keywords":{}}],["5.82382",{"_index":3991,"title":{},"content":{"570":{"position":[[14576,8],[14617,8]]},"1090":{"position":[[14576,8],[14617,8]]}},"keywords":{}}],["5/100",{"_index":3966,"title":{},"content":{"570":{"position":[[9183,7]]},"1090":{"position":[[9183,7]]}},"keywords":{}}],["50",{"_index":3050,"title":{},"content":{"389":{"position":[[7300,3],[23018,3]]},"570":{"position":[[14977,2]]},"916":{"position":[[7300,3],[23018,3]]},"1090":{"position":[[14977,2]]}},"keywords":{}}],["50.00",{"_index":4293,"title":{},"content":{"1038":{"position":[[311,6]]}},"keywords":{}}],["5007",{"_index":521,"title":{},"content":{"28":{"position":[[1225,4],[1262,4]]},"546":{"position":[[1225,4],[1262,4]]},"616":{"position":[[1225,4],[1262,4]]},"1072":{"position":[[1225,4],[1262,4]]}},"keywords":{}}],["501",{"_index":4070,"title":{},"content":{"572":{"position":[[773,4]]},"1092":{"position":[[773,4]]}},"keywords":{}}],["505",{"_index":2684,"title":{},"content":{"372":{"position":[[128,4]]}},"keywords":{}}],["51.2",{"_index":3186,"title":{},"content":{"389":{"position":[[19260,4]]},"916":{"position":[[19260,4]]}},"keywords":{}}],["512",{"_index":1773,"title":{},"content":{"171":{"position":[[1749,4]]},"189":{"position":[[1481,4]]},"199":{"position":[[681,4]]},"741":{"position":[[1761,4]]},"772":{"position":[[1481,4]]},"782":{"position":[[681,4]]}},"keywords":{}}],["5120/60000",{"_index":811,"title":{},"content":{"84":{"position":[[1107,11],[2284,11]]},"683":{"position":[[1107,11],[2284,11]]}},"keywords":{}}],["518",{"_index":4062,"title":{},"content":{"572":{"position":[[319,4]]},"1092":{"position":[[319,4]]}},"keywords":{}}],["523",{"_index":2953,"title":{},"content":{"389":{"position":[[4067,4],[19891,4]]},"916":{"position":[[4067,4],[19891,4]]}},"keywords":{}}],["538",{"_index":4055,"title":{},"content":{"572":{"position":[[112,4]]},"1092":{"position":[[112,4]]}},"keywords":{}}],["54.9",{"_index":2956,"title":{},"content":{"389":{"position":[[4172,5],[19996,5]]},"916":{"position":[[4172,5],[19996,5]]}},"keywords":{}}],["545",{"_index":4082,"title":{},"content":{"572":{"position":[[1341,4]]},"1092":{"position":[[1341,4]]}},"keywords":{}}],["55",{"_index":3051,"title":{},"content":{"389":{"position":[[7326,3],[23044,3]]},"916":{"position":[[7326,3],[23044,3]]}},"keywords":{}}],["55.8",{"_index":3034,"title":{},"content":{"389":{"position":[[6825,5],[22543,5]]},"916":{"position":[[6825,5],[22543,5]]}},"keywords":{}}],["550",{"_index":2695,"title":{},"content":{"372":{"position":[[690,4],[961,4]]},"899":{"position":[[143,4],[414,4]]}},"keywords":{}}],["5760/60000",{"_index":813,"title":{},"content":{"84":{"position":[[1154,11],[2331,11]]},"683":{"position":[[1154,11],[2331,11]]}},"keywords":{}}],["58.5",{"_index":3030,"title":{},"content":{"389":{"position":[[6711,5],[22429,5]]},"916":{"position":[[6711,5],[22429,5]]}},"keywords":{}}],["590",{"_index":2982,"title":{},"content":{"389":{"position":[[5050,4],[20874,4]]},"916":{"position":[[5050,4],[20874,4]]}},"keywords":{}}],["5931f8cfd04b37a325e4465d8c0d31c4149b3a87",{"_index":2516,"title":{},"content":{"332":{"position":[[80,40]]}},"keywords":{}}],["5_amd64.deb",{"_index":3066,"title":{},"content":{"389":{"position":[[7832,11],[11145,11],[23550,11],[26863,11]]},"916":{"position":[[7832,11],[11145,11],[23550,11],[26863,11]]}},"keywords":{}}],["5a94c01d",{"_index":924,"title":{},"content":{"103":{"position":[[302,9]]},"705":{"position":[[302,9]]}},"keywords":{}}],["5d4f5f874c",{"_index":3294,"title":{},"content":{"412":{"position":[[154,10]]},"939":{"position":[[156,10]]}},"keywords":{}}],["5db8b6cbf7",{"_index":90,"title":{},"content":{"7":{"position":[[175,10]]},"596":{"position":[[175,10]]}},"keywords":{}}],["5dd79cdf86",{"_index":3307,"title":{},"content":{"412":{"position":[[417,10]]}},"keywords":{}}],["5df8499fd4",{"_index":3311,"title":{},"content":{"412":{"position":[[525,10]]}},"keywords":{}}],["5fdd957785",{"_index":4253,"title":{},"content":{"939":{"position":[[319,10]]}},"keywords":{}}],["5s",{"_index":94,"title":{},"content":{"7":{"position":[[206,2],[257,2],[309,2],[359,2],[410,2],[459,2]]},"596":{"position":[[206,2],[257,2],[309,2],[359,2],[410,2],[459,2]]}},"keywords":{}}],["5ubuntu1",{"_index":2946,"title":{},"content":{"389":{"position":[[3945,8],[8365,9],[13399,9],[19769,8],[24083,9],[28948,9]]},"916":{"position":[[3945,8],[8365,9],[13399,9],[19769,8],[24083,9],[28948,9]]}},"keywords":{}}],["5ubuntu12.10",{"_index":2965,"title":{},"content":{"389":{"position":[[4528,12],[4644,12],[9276,13],[9457,13],[13774,13],[13826,13],[20352,12],[20468,12],[24994,13],[25175,13],[29323,13],[29375,13]]},"916":{"position":[[4528,12],[4644,12],[9276,13],[9457,13],[13774,13],[13826,13],[20352,12],[20468,12],[24994,13],[25175,13],[29323,13],[29375,13]]}},"keywords":{}}],["5ubuntu12.10_amd64.deb",{"_index":3080,"title":{},"content":{"389":{"position":[[9216,22],[9397,22],[24934,22],[25115,22]]},"916":{"position":[[9216,22],[9397,22],[24934,22],[25115,22]]}},"keywords":{}}],["5ubuntu1_amd64.deb",{"_index":3072,"title":{},"content":{"389":{"position":[[8316,18],[24034,18]]},"916":{"position":[[8316,18],[24034,18]]}},"keywords":{}}],["5:yarn",{"_index":525,"title":{"29":{"position":[[6,6]]},"547":{"position":[[6,6]]},"617":{"position":[[6,6]]},"1073":{"position":[[6,6]]}},"content":{},"keywords":{}}],["6",{"_index":1733,"title":{"353":{"position":[[0,2]]}},"content":{"170":{"position":[[428,2]]},"372":{"position":[[756,2],[1027,2]]},"570":{"position":[[8712,2]]},"740":{"position":[[428,2]]},"899":{"position":[[209,2],[480,2]]},"1090":{"position":[[8712,2]]}},"keywords":{}}],["6%)]\\tloss=1.0003\\ntrain",{"_index":808,"title":{},"content":{"84":{"position":[[1025,25],[2202,25]]},"683":{"position":[[1025,25],[2202,25]]}},"keywords":{}}],["6.0",{"_index":3745,"title":{},"content":{"553":{"position":[[1335,3]]},"1079":{"position":[[1335,3]]}},"keywords":{}}],["6.0+20160213",{"_index":3012,"title":{},"content":{"389":{"position":[[6042,12],[11672,13],[16327,13],[21760,12],[27221,13],[31181,13]]},"916":{"position":[[6042,12],[11672,13],[16327,13],[21760,12],[27221,13],[31181,13]]}},"keywords":{}}],["6.1",{"_index":1397,"title":{"354":{"position":[[0,3]]}},"content":{"141":{"position":[[1895,3]]},"553":{"position":[[1339,3]]},"1079":{"position":[[1339,3]]}},"keywords":{}}],["6.18.01",{"_index":3005,"title":{},"content":{"389":{"position":[[5739,7],[11176,8],[15371,8],[21563,7],[26894,8],[30920,8]]},"916":{"position":[[5739,7],[11176,8],[15371,8],[21563,7],[26894,8],[30920,8]]}},"keywords":{}}],["6.2",{"_index":1398,"title":{"355":{"position":[[0,3]]}},"content":{"141":{"position":[[2022,3]]}},"keywords":{}}],["6.2u5",{"_index":2999,"title":{},"content":{"389":{"position":[[5541,5],[5646,5],[5842,5],[5947,5],[10877,6],[11046,6],[11339,6],[11508,6],[15232,6],[15339,6],[15490,6],[15637,6],[21365,5],[21470,5],[21666,5],[26595,6],[26764,6],[27057,6],[30781,6],[30888,6],[31039,6]]},"916":{"position":[[5541,5],[5646,5],[5842,5],[5947,5],[10877,6],[11046,6],[11339,6],[11508,6],[15232,6],[15339,6],[15490,6],[15637,6],[21365,5],[21470,5],[21666,5],[26595,6],[26764,6],[27057,6],[30781,6],[30888,6],[31039,6]]}},"keywords":{}}],["6.3",{"_index":2655,"title":{"356":{"position":[[0,3]]}},"content":{},"keywords":{}}],["6.4",{"_index":2656,"title":{"357":{"position":[[0,4]]}},"content":{"357":{"position":[[40,3],[119,3]]}},"keywords":{}}],["6/100",{"_index":3967,"title":{},"content":{"570":{"position":[[9218,7]]},"1090":{"position":[[9218,7]]}},"keywords":{}}],["60",{"_index":3052,"title":{},"content":{"389":{"position":[[7352,3],[23070,3]]},"570":{"position":[[15044,2]]},"916":{"position":[[7352,3],[23070,3]]},"1090":{"position":[[15044,2]]}},"keywords":{}}],["600",{"_index":3844,"title":{},"content":{"570":{"position":[[713,4],[10192,4],[16267,4]]},"1090":{"position":[[713,4],[10192,4],[16267,4]]}},"keywords":{}}],["6050",{"_index":459,"title":{},"content":{"26":{"position":[[626,4]]},"544":{"position":[[626,4]]},"614":{"position":[[626,4]]},"1070":{"position":[[626,4]]}},"keywords":{}}],["61m",{"_index":3296,"title":{},"content":{"412":{"position":[[185,3],[237,3],[448,3],[609,3],[659,3]]}},"keywords":{}}],["63",{"_index":3239,"title":{},"content":{"406":{"position":[[347,2]]},"933":{"position":[[347,2]]}},"keywords":{}}],["63.7",{"_index":2996,"title":{},"content":{"389":{"position":[[5447,5],[21271,5]]},"916":{"position":[[5447,5],[21271,5]]}},"keywords":{}}],["630.425",{"_index":3980,"title":{},"content":{"570":{"position":[[9665,7]]},"1090":{"position":[[9665,7]]}},"keywords":{}}],["638",{"_index":4079,"title":{},"content":{"572":{"position":[[1178,4]]},"1092":{"position":[[1178,4]]}},"keywords":{}}],["64",{"_index":3909,"title":{},"content":{"570":{"position":[[3926,3],[4012,3],[4098,3],[4184,3],[4270,3],[4356,3],[4442,3],[4522,3],[6694,3],[6780,3],[6866,3],[6952,3],[7038,3],[7124,3],[7210,3],[7290,3],[13343,3],[13429,3],[13515,3],[13601,3],[13687,3],[13773,3],[13859,3],[13939,3]]},"1090":{"position":[[3926,3],[4012,3],[4098,3],[4184,3],[4270,3],[4356,3],[4442,3],[4522,3],[6694,3],[6780,3],[6866,3],[6952,3],[7038,3],[7124,3],[7210,3],[7290,3],[13343,3],[13429,3],[13515,3],[13601,3],[13687,3],[13773,3],[13859,3],[13939,3]]}},"keywords":{}}],["64/contain",{"_index":453,"title":{},"content":{"26":{"position":[[233,12],[594,12]]},"544":{"position":[[233,12],[594,12]]},"614":{"position":[[233,12],[594,12]]},"1070":{"position":[[233,12],[594,12]]}},"keywords":{}}],["640/60000",{"_index":797,"title":{},"content":{"84":{"position":[[779,10],[1956,10]]},"683":{"position":[[779,10],[1956,10]]}},"keywords":{}}],["6400/60000",{"_index":815,"title":{},"content":{"84":{"position":[[1202,11],[2379,11]]},"683":{"position":[[1202,11],[2379,11]]}},"keywords":{}}],["65",{"_index":3053,"title":{},"content":{"389":{"position":[[7378,3],[23096,3]]},"916":{"position":[[7378,3],[23096,3]]}},"keywords":{}}],["65.8",{"_index":2928,"title":{},"content":{"389":{"position":[[3436,4]]},"916":{"position":[[3436,4]]}},"keywords":{}}],["665",{"_index":2962,"title":{},"content":{"389":{"position":[[4425,4],[20249,4]]},"916":{"position":[[4425,4],[20249,4]]}},"keywords":{}}],["66f7b8658b",{"_index":4257,"title":{},"content":{"939":{"position":[[426,10]]}},"keywords":{}}],["66sx6",{"_index":107,"title":{},"content":{"7":{"position":[[390,5]]},"596":{"position":[[390,5]]}},"keywords":{}}],["674987ff7d",{"_index":4251,"title":{},"content":{"939":{"position":[[266,10]]}},"keywords":{}}],["681",{"_index":4073,"title":{},"content":{"572":{"position":[[928,4]]},"1092":{"position":[[928,4]]}},"keywords":{}}],["68985b767",{"_index":3309,"title":{},"content":{"412":{"position":[[469,9]]}},"keywords":{}}],["6a92",{"_index":894,"title":{},"content":{"100":{"position":[[560,4]]},"101":{"position":[[302,4]]},"102":{"position":[[295,4]]},"103":{"position":[[312,4]]},"702":{"position":[[560,4]]},"703":{"position":[[302,4]]},"704":{"position":[[295,4]]},"705":{"position":[[312,4]]}},"keywords":{}}],["6bb69fd44",{"_index":3315,"title":{},"content":{"412":{"position":[[629,9]]},"939":{"position":[[593,9]]}},"keywords":{}}],["6c44944dfb",{"_index":4259,"title":{},"content":{"939":{"position":[[485,10]]}},"keywords":{}}],["6c90",{"_index":3430,"title":{},"content":{"438":{"position":[[726,4]]},"965":{"position":[[726,4]]}},"keywords":{}}],["6nhkx",{"_index":3214,"title":{},"content":{"395":{"position":[[228,5]]},"922":{"position":[[228,5]]}},"keywords":{}}],["6ubuntu1",{"_index":2940,"title":{},"content":{"389":{"position":[[3749,8],[3849,8],[8043,9],[8217,9],[13308,9],[13358,9],[19573,8],[19673,8],[23761,9],[23935,9],[28857,9],[28907,9]]},"916":{"position":[[3749,8],[3849,8],[8043,9],[8217,9],[13308,9],[13358,9],[19573,8],[19673,8],[23761,9],[23935,9],[28857,9],[28907,9]]}},"keywords":{}}],["6ubuntu1_amd64.deb",{"_index":3068,"title":{},"content":{"389":{"position":[[7988,18],[8159,18],[23706,18],[23877,18]]},"916":{"position":[[7988,18],[8159,18],[23706,18],[23877,18]]}},"keywords":{}}],["7",{"_index":1151,"title":{},"content":{"107":{"position":[[10686,1],[10995,1]]},"352":{"position":[[856,1]]},"570":{"position":[[1520,1],[1766,1],[8891,2],[10937,1],[11183,1]]},"1090":{"position":[[1520,1],[1766,1],[8891,2],[10937,1],[11183,1]]}},"keywords":{}}],["7%)]\\tloss=0.7762\\ntrain",{"_index":810,"title":{},"content":{"84":{"position":[[1072,25],[2249,25]]},"683":{"position":[[1072,25],[2249,25]]}},"keywords":{}}],["7.0+ptx",{"_index":3746,"title":{},"content":{"553":{"position":[[1343,8]]},"1079":{"position":[[1343,8]]}},"keywords":{}}],["7.4",{"_index":3000,"title":{},"content":{"389":{"position":[[5547,3],[5652,3],[5848,3],[5953,3],[10884,4],[11053,4],[11346,4],[11515,4],[15239,4],[15346,4],[15497,4],[15644,4],[21371,3],[21476,3],[21672,3],[26602,4],[26771,4],[27064,4],[30788,4],[30895,4],[31046,4]]},"916":{"position":[[5547,3],[5652,3],[5848,3],[5953,3],[10884,4],[11053,4],[11346,4],[11515,4],[15239,4],[15346,4],[15497,4],[15644,4],[21371,3],[21476,3],[21672,3],[26602,4],[26771,4],[27064,4],[30788,4],[30895,4],[31046,4]]}},"keywords":{}}],["7.4_all.deb",{"_index":3098,"title":{},"content":{"389":{"position":[[10833,11],[26551,11]]},"916":{"position":[[10833,11],[26551,11]]}},"keywords":{}}],["7.4_amd64.deb",{"_index":3100,"title":{},"content":{"389":{"position":[[11000,13],[11295,13],[11462,13],[26718,13],[27013,13]]},"916":{"position":[[11000,13],[11295,13],[11462,13],[26718,13],[27013,13]]}},"keywords":{}}],["7/100",{"_index":3968,"title":{},"content":{"570":{"position":[[9253,7]]},"1090":{"position":[[9253,7]]}},"keywords":{}}],["70",{"_index":3054,"title":{},"content":{"389":{"position":[[7404,3],[23122,3]]},"570":{"position":[[15111,2]]},"916":{"position":[[7404,3],[23122,3]]},"1090":{"position":[[15111,2]]}},"keywords":{}}],["7040/60000",{"_index":817,"title":{},"content":{"84":{"position":[[1250,11],[2427,11]]},"683":{"position":[[1250,11],[2427,11]]}},"keywords":{}}],["72",{"_index":1379,"title":{},"content":{"141":{"position":[[417,2],[788,2]]}},"keywords":{}}],["72hr",{"_index":2649,"title":{},"content":{"352":{"position":[[1340,4]]}},"keywords":{}}],["74",{"_index":3642,"title":{},"content":{"511":{"position":[[1308,2]]}},"keywords":{}}],["74.8",{"_index":2947,"title":{},"content":{"389":{"position":[[3954,5],[19778,5]]},"916":{"position":[[3954,5],[19778,5]]}},"keywords":{}}],["748",{"_index":1206,"title":{},"content":{"122":{"position":[[328,4]]},"123":{"position":[[250,3]]},"124":{"position":[[228,4]]},"690":{"position":[[328,4]]},"691":{"position":[[250,3]]},"692":{"position":[[228,4]]}},"keywords":{}}],["75",{"_index":3055,"title":{},"content":{"389":{"position":[[7430,3],[23148,3]]},"916":{"position":[[7430,3],[23148,3]]}},"keywords":{}}],["75f86d8f4d",{"_index":3305,"title":{},"content":{"412":{"position":[[363,10]]}},"keywords":{}}],["76465444f6",{"_index":3303,"title":{},"content":{"412":{"position":[[311,10]]}},"keywords":{}}],["7680/60000",{"_index":819,"title":{},"content":{"84":{"position":[[1298,11],[2475,11]]},"683":{"position":[[1298,11],[2475,11]]}},"keywords":{}}],["76bbf5c7b",{"_index":4255,"title":{},"content":{"939":{"position":[[373,9]]}},"keywords":{}}],["77d4",{"_index":746,"title":{},"content":{"77":{"position":[[743,4]]},"78":{"position":[[890,4]]},"79":{"position":[[252,4],[898,4]]},"80":{"position":[[285,4]]},"82":{"position":[[288,4]]},"676":{"position":[[743,4]]},"677":{"position":[[890,4]]},"678":{"position":[[252,4],[898,4]]},"679":{"position":[[285,4]]},"681":{"position":[[288,4]]}},"keywords":{}}],["7844656dd",{"_index":109,"title":{},"content":{"7":{"position":[[429,9]]},"596":{"position":[[429,9]]}},"keywords":{}}],["79",{"_index":4009,"title":{},"content":{"570":{"position":[[15153,2]]},"1090":{"position":[[15153,2]]}},"keywords":{}}],["79.0",{"_index":3021,"title":{},"content":{"389":{"position":[[6402,5],[22120,5]]},"916":{"position":[[6402,5],[22120,5]]}},"keywords":{}}],["7bvr7",{"_index":104,"title":{},"content":{"7":{"position":[[339,5]]},"596":{"position":[[339,5]]}},"keywords":{}}],["7cbcfd4bd9",{"_index":3313,"title":{},"content":{"412":{"position":[[578,10]]},"939":{"position":[[540,10]]}},"keywords":{}}],["7ff5d96d59",{"_index":97,"title":{},"content":{"7":{"position":[[226,10]]},"596":{"position":[[226,10]]}},"keywords":{}}],["8",{"_index":47,"title":{},"content":{"5":{"position":[[43,1]]},"336":{"position":[[150,4]]},"375":{"position":[[550,1],[1219,1],[1306,1]]},"389":{"position":[[451,1]]},"410":{"position":[[180,1]]},"549":{"position":[[1047,1],[1112,1]]},"553":{"position":[[1691,1]]},"559":{"position":[[1328,1]]},"570":{"position":[[3846,2],[3849,2],[3930,2],[3933,2],[4016,2],[4019,2],[4102,2],[4105,2],[4188,2],[4191,2],[4274,2],[4277,2],[4360,2],[4363,2],[4446,2],[4449,2],[6614,2],[6617,2],[6698,2],[6701,2],[6784,2],[6787,2],[6870,2],[6873,2],[6956,2],[6959,2],[7042,2],[7045,2],[7128,2],[7131,2],[7214,2],[7217,2],[13263,2],[13266,2],[13347,2],[13350,2],[13433,2],[13436,2],[13519,2],[13522,2],[13605,2],[13608,2],[13691,2],[13694,2],[13777,2],[13780,2],[13863,2],[13866,2]]},"580":{"position":[[786,1],[891,1]]},"585":{"position":[[496,1],[601,1]]},"594":{"position":[[43,1]]},"902":{"position":[[550,1],[1219,1],[1306,1]]},"916":{"position":[[451,1]]},"937":{"position":[[182,1]]},"1075":{"position":[[1047,1],[1112,1]]},"1079":{"position":[[1691,1]]},"1090":{"position":[[3846,2],[3849,2],[3930,2],[3933,2],[4016,2],[4019,2],[4102,2],[4105,2],[4188,2],[4191,2],[4274,2],[4277,2],[4360,2],[4363,2],[4446,2],[4449,2],[6614,2],[6617,2],[6698,2],[6701,2],[6784,2],[6787,2],[6870,2],[6873,2],[6956,2],[6959,2],[7042,2],[7045,2],[7128,2],[7131,2],[7214,2],[7217,2],[13263,2],[13266,2],[13347,2],[13350,2],[13433,2],[13436,2],[13519,2],[13522,2],[13605,2],[13608,2],[13691,2],[13694,2],[13777,2],[13780,2],[13863,2],[13866,2]]},"1094":{"position":[[1328,1]]},"1106":{"position":[[786,1],[891,1]]},"1111":{"position":[[496,1],[601,1]]}},"keywords":{}}],["8.0",{"_index":2312,"title":{},"content":{"298":{"position":[[211,3]]},"865":{"position":[[214,3]]}},"keywords":{}}],["8.1.2",{"_index":2994,"title":{},"content":{"389":{"position":[[5425,5],[10698,6],[15082,6],[21249,5],[26416,6],[30631,6]]},"916":{"position":[[5425,5],[10698,6],[15082,6],[21249,5],[26416,6],[30631,6]]}},"keywords":{}}],["8/100",{"_index":3969,"title":{},"content":{"570":{"position":[[9288,7]]},"1090":{"position":[[9288,7]]}},"keywords":{}}],["80",{"_index":143,"title":{},"content":{"8":{"position":[[56,2]]},"20":{"position":[[575,2],[588,2]]},"389":{"position":[[7456,3],[23174,3]]},"570":{"position":[[15298,2]]},"597":{"position":[[56,2]]},"620":{"position":[[575,2],[588,2]]},"916":{"position":[[7456,3],[23174,3]]},"1090":{"position":[[15298,2]]}},"keywords":{}}],["8056",{"_index":2943,"title":{},"content":{"389":{"position":[[3858,5],[19682,5]]},"916":{"position":[[3858,5],[19682,5]]}},"keywords":{}}],["8080",{"_index":263,"title":{},"content":{"17":{"position":[[218,4]]},"324":{"position":[[376,4]]},"384":{"position":[[35,4]]},"525":{"position":[[87,5],[130,4]]},"609":{"position":[[218,4]]},"894":{"position":[[376,4]]},"911":{"position":[[35,4]]}},"keywords":{}}],["8080:80",{"_index":2453,"title":{},"content":{"325":{"position":[[262,7]]},"895":{"position":[[262,7]]}},"keywords":{}}],["8080:8080",{"_index":190,"title":{},"content":{"13":{"position":[[309,9]]},"605":{"position":[[309,9]]}},"keywords":{}}],["826a",{"_index":3463,"title":{},"content":{"441":{"position":[[856,4]]},"443":{"position":[[1337,4]]},"446":{"position":[[273,4]]},"449":{"position":[[767,4]]},"452":{"position":[[276,4]]},"968":{"position":[[856,4]]},"970":{"position":[[1337,4]]},"973":{"position":[[273,4]]},"976":{"position":[[767,4]]},"979":{"position":[[276,4]]}},"keywords":{}}],["8320/60000",{"_index":821,"title":{},"content":{"84":{"position":[[1346,11],[2523,11]]},"683":{"position":[[1346,11],[2523,11]]}},"keywords":{}}],["844c866d54",{"_index":3297,"title":{},"content":{"412":{"position":[[206,10]]},"939":{"position":[[210,10]]}},"keywords":{}}],["844f",{"_index":3432,"title":{},"content":{"438":{"position":[[736,4]]},"965":{"position":[[736,4]]}},"keywords":{}}],["8483",{"_index":270,"title":{},"content":{"17":{"position":[[389,4]]},"609":{"position":[[389,4]]}},"keywords":{}}],["85",{"_index":3056,"title":{},"content":{"389":{"position":[[7482,3],[23200,3]]},"916":{"position":[[7482,3],[23200,3]]}},"keywords":{}}],["85bd68dbc5",{"_index":3299,"title":{},"content":{"412":{"position":[[260,10]]}},"keywords":{}}],["8888",{"_index":337,"title":{},"content":{"20":{"position":[[699,4]]},"620":{"position":[[699,4]]}},"keywords":{}}],["8960/60000",{"_index":823,"title":{},"content":{"84":{"position":[[1394,11],[2571,11]]},"683":{"position":[[1394,11],[2571,11]]}},"keywords":{}}],["8d95d74f7",{"_index":100,"title":{},"content":{"7":{"position":[[279,9]]},"596":{"position":[[279,9]]}},"keywords":{}}],["8dbb",{"_index":748,"title":{},"content":{"77":{"position":[[753,4]]},"78":{"position":[[900,4]]},"79":{"position":[[262,4],[908,4]]},"80":{"position":[[295,4]]},"82":{"position":[[298,4]]},"676":{"position":[[753,4]]},"677":{"position":[[900,4]]},"678":{"position":[[262,4],[908,4]]},"679":{"position":[[295,4]]},"681":{"position":[[298,4]]}},"keywords":{}}],["8ubuntu1.15",{"_index":2959,"title":{},"content":{"389":{"position":[[4287,11],[4413,11],[8890,12],[9096,12],[13660,12],[13723,12],[20111,11],[20237,11],[24608,12],[24814,12],[29209,12],[29272,12]]},"916":{"position":[[4287,11],[4413,11],[8890,12],[9096,12],[13660,12],[13723,12],[20111,11],[20237,11],[24608,12],[24814,12],[29209,12],[29272,12]]}},"keywords":{}}],["8ubuntu1.15_amd64.deb",{"_index":3077,"title":{},"content":{"389":{"position":[[8819,21],[9025,21],[24537,21],[24743,21]]},"916":{"position":[[8819,21],[9025,21],[24537,21],[24743,21]]}},"keywords":{}}],["9",{"_index":524,"title":{},"content":{"28":{"position":[[1260,1]]},"546":{"position":[[1260,1]]},"616":{"position":[[1260,1]]},"1072":{"position":[[1260,1]]}},"keywords":{}}],["9%)]\\tloss=0.4598\\ntrain",{"_index":812,"title":{},"content":{"84":{"position":[[1119,25],[2296,25]]},"683":{"position":[[1119,25],[2296,25]]}},"keywords":{}}],["9/100",{"_index":3970,"title":{},"content":{"570":{"position":[[9323,7]]},"1090":{"position":[[9323,7]]}},"keywords":{}}],["90",{"_index":3057,"title":{},"content":{"389":{"position":[[7508,3],[23226,3]]},"570":{"position":[[15365,2]]},"916":{"position":[[7508,3],[23226,3]]},"1090":{"position":[[15365,2]]}},"keywords":{}}],["90e0",{"_index":3471,"title":{},"content":{"443":{"position":[[246,4]]},"472":{"position":[[426,4]]},"970":{"position":[[246,4]]},"999":{"position":[[426,4]]}},"keywords":{}}],["95",{"_index":3058,"title":{},"content":{"389":{"position":[[7534,3],[23252,3]]},"916":{"position":[[7534,3],[23252,3]]}},"keywords":{}}],["96",{"_index":4101,"title":{},"content":{"572":{"position":[[2087,3]]},"1092":{"position":[[2087,3]]}},"keywords":{}}],["96.2",{"_index":3024,"title":{},"content":{"389":{"position":[[6498,5],[22216,5]]},"916":{"position":[[6498,5],[22216,5]]}},"keywords":{}}],["9600/60000",{"_index":825,"title":{},"content":{"84":{"position":[[1442,11],[2619,11]]},"683":{"position":[[1442,11],[2619,11]]}},"keywords":{}}],["9633",{"_index":3185,"title":{},"content":{"389":{"position":[[19217,4],[22660,4]]},"916":{"position":[[19217,4],[22660,4]]}},"keywords":{}}],["9674",{"_index":2978,"title":{},"content":{"389":{"position":[[4935,5],[20759,5]]},"916":{"position":[[4935,5],[20759,5]]}},"keywords":{}}],["97",{"_index":2711,"title":{},"content":{"372":{"position":[[1412,3]]},"899":{"position":[[865,3]]}},"keywords":{}}],["990",{"_index":3008,"title":{},"content":{"389":{"position":[[5852,4],[21676,4]]},"916":{"position":[[5852,4],[21676,4]]}},"keywords":{}}],["9b12c2228bdff4f4cfe849445ef3a66d57ec647a",{"_index":2403,"title":{},"content":{"314":{"position":[[2669,40]]}},"keywords":{}}],["9bb6f8577",{"_index":106,"title":{},"content":{"7":{"position":[[380,9]]},"596":{"position":[[380,9]]}},"keywords":{}}],["_",{"_index":3337,"title":{},"content":{"415":{"position":[[635,1]]},"942":{"position":[[653,1]]}},"keywords":{}}],["_______________________________",{"_index":2504,"title":{},"content":{"331":{"position":[[2177,31]]}},"keywords":{}}],["__future__",{"_index":3254,"title":{},"content":{"407":{"position":[[146,10]]},"934":{"position":[[146,10]]}},"keywords":{}}],["__init__",{"_index":4102,"title":{},"content":{"572":{"position":[[2094,8]]},"1092":{"position":[[2094,8]]}},"keywords":{}}],["__main__",{"_index":3385,"title":{},"content":{"415":{"position":[[2282,11]]},"475":{"position":[[114,11]]},"942":{"position":[[2335,11]]},"1002":{"position":[[114,11]]}},"keywords":{}}],["__name__",{"_index":3384,"title":{},"content":{"415":{"position":[[2270,8]]},"475":{"position":[[102,8]]},"942":{"position":[[2323,8]]},"1002":{"position":[[102,8]]}},"keywords":{}}],["_add_should_use_warn",{"_index":4099,"title":{},"content":{"572":{"position":[[1932,23]]},"1092":{"position":[[1932,23]]}},"keywords":{}}],["_add_should_use_warning(fn(*arg",{"_index":4097,"title":{},"content":{"572":{"position":[[1787,33]]},"1092":{"position":[[1787,33]]}},"keywords":{}}],["_call_evalu",{"_index":4074,"title":{},"content":{"572":{"position":[[936,14]]},"1092":{"position":[[936,14]]}},"keywords":{}}],["_call_model_fn",{"_index":4083,"title":{},"content":{"572":{"position":[[1349,14]]},"1092":{"position":[[1349,14]]}},"keywords":{}}],["_cluster_spec",{"_index":3850,"title":{},"content":{"570":{"position":[[812,16],[10292,16],[16363,16]]},"1090":{"position":[[812,16],[10292,16],[16363,16]]}},"keywords":{}}],["_environ",{"_index":3861,"title":{},"content":{"570":{"position":[[1140,15],[10622,15],[16691,15]]},"1090":{"position":[[1140,15],[10622,15],[16691,15]]}},"keywords":{}}],["_evaluate_model",{"_index":4080,"title":{},"content":{"572":{"position":[[1186,15]]},"1092":{"position":[[1186,15]]}},"keywords":{}}],["_evaluation_mast",{"_index":3868,"title":{},"content":{"570":{"position":[[1305,21],[16856,21]]},"1090":{"position":[[1305,21],[16856,21]]}},"keywords":{}}],["_execute_schedul",{"_index":4068,"title":{},"content":{"572":{"position":[[637,17]]},"1092":{"position":[[637,17]]}},"keywords":{}}],["_execute_schedule(experi",{"_index":4066,"title":{},"content":{"572":{"position":[[484,29]]},"1092":{"position":[[484,29]]}},"keywords":{}}],["_ipyw_jlab_nb_ext_conf=0.1.0=py37_0",{"_index":694,"title":{},"content":{"71":{"position":[[268,39],[855,39]]},"72":{"position":[[406,39],[892,40]]},"73":{"position":[[428,39]]},"74":{"position":[[286,39],[776,39]]},"75":{"position":[[439,39]]},"154":{"position":[[568,35],[989,35]]},"423":{"position":[[233,39]]},"431":{"position":[[242,39]]},"663":{"position":[[268,39],[855,39]]},"664":{"position":[[406,39],[892,40]]},"665":{"position":[[428,39]]},"666":{"position":[[286,39],[776,39]]},"667":{"position":[[439,39]]},"724":{"position":[[568,35],[989,35]]},"950":{"position":[[233,39]]},"958":{"position":[[242,39]]}},"keywords":{}}],["_ipyw_jlab_nb_ext_conf\\u003d0.1.0\\u003dpy37_0",{"_index":3401,"title":{},"content":{"423":{"position":[[828,49]]},"425":{"position":[[706,49]]},"428":{"position":[[394,49]]},"431":{"position":[[723,49]]},"434":{"position":[[397,49]]},"950":{"position":[[828,49]]},"952":{"position":[[706,49]]},"955":{"position":[[394,49]]},"958":{"position":[[723,49]]},"961":{"position":[[397,49]]}},"keywords":{}}],["_is_chief",{"_index":3849,"title":{},"content":{"570":{"position":[[793,12],[10272,12],[16343,12]]},"1090":{"position":[[793,12],[10272,12],[16343,12]]}},"keywords":{}}],["_keep_checkpoint_every_n_hour",{"_index":3855,"title":{},"content":{"570":{"position":[[978,33],[10460,33],[16529,33]]},"1090":{"position":[[978,33],[10460,33],[16529,33]]}},"keywords":{}}],["_keep_checkpoint_max",{"_index":3846,"title":{},"content":{"570":{"position":[[741,23],[10220,23],[16295,23]]},"1090":{"position":[[741,23],[10220,23],[16295,23]]}},"keywords":{}}],["_mast",{"_index":3869,"title":{},"content":{"570":{"position":[[1331,10],[16882,10]]},"1090":{"position":[[1331,10],[16882,10]]}},"keywords":{}}],["_model_dir",{"_index":3853,"title":{},"content":{"570":{"position":[[907,13],[10387,13],[16458,13]]},"1090":{"position":[[907,13],[10387,13],[16458,13]]}},"keywords":{}}],["_num_ps_replica",{"_index":3845,"title":{},"content":{"570":{"position":[[718,19],[10197,19],[16272,19]]},"1090":{"position":[[718,19],[10197,19],[16272,19]]}},"keywords":{}}],["_num_worker_replica",{"_index":3863,"title":{},"content":{"570":{"position":[[1166,23],[10648,23],[16717,23]]},"1090":{"position":[[1166,23],[10648,23],[16717,23]]}},"keywords":{}}],["_resnet_model_fn",{"_index":4088,"title":{},"content":{"572":{"position":[[1445,16]]},"1092":{"position":[[1445,16]]}},"keywords":{}}],["_save_checkpoints_sec",{"_index":3843,"title":{},"content":{"570":{"position":[[686,26],[10165,26],[16240,26]]},"1090":{"position":[[686,26],[10165,26],[16240,26]]}},"keywords":{}}],["_save_checkpoints_step",{"_index":3854,"title":{},"content":{"570":{"position":[[945,26],[10427,26],[16496,26]]},"1090":{"position":[[945,26],[10427,26],[16496,26]]}},"keywords":{}}],["_save_summary_step",{"_index":3865,"title":{},"content":{"570":{"position":[[1208,22],[10690,22],[16759,22]]},"1090":{"position":[[1208,22],[10690,22],[16759,22]]}},"keywords":{}}],["_session_conf",{"_index":3856,"title":{},"content":{"570":{"position":[[1019,18],[10501,18],[16570,18]]},"1090":{"position":[[1019,18],[10501,18],[16570,18]]}},"keywords":{}}],["_sys.exit(main(_sys.argv[:1",{"_index":4060,"title":{},"content":{"572":{"position":[[239,28]]},"1092":{"position":[[239,28]]}},"keywords":{}}],["_task_id",{"_index":3864,"title":{},"content":{"570":{"position":[[1193,11],[10675,11],[16744,11]]},"1090":{"position":[[1193,11],[10675,11],[16744,11]]}},"keywords":{}}],["_task_typ",{"_index":3847,"title":{},"content":{"570":{"position":[[768,13],[10247,13],[16322,13]]},"1090":{"position":[[768,13],[10247,13],[16322,13]]}},"keywords":{}}],["_tf_config",{"_index":3866,"title":{},"content":{"570":{"position":[[1236,13],[10718,13],[16787,13]]},"1090":{"position":[[1236,13],[10718,13],[16787,13]]}},"keywords":{}}],["_tf_random_s",{"_index":3860,"title":{},"content":{"570":{"position":[[1115,18],[10597,18],[16666,18]]},"1090":{"position":[[1115,18],[10597,18],[16666,18]]}},"keywords":{}}],["a.k.a",{"_index":1924,"title":{},"content":{"190":{"position":[[270,6]]},"773":{"position":[[270,6]]}},"keywords":{}}],["a/b",{"_index":1636,"title":{},"content":{"160":{"position":[[466,3]]},"161":{"position":[[833,3]]},"730":{"position":[[466,3]]},"731":{"position":[[833,3]]}},"keywords":{}}],["aaa",{"_index":2634,"title":{},"content":{"352":{"position":[[283,3]]},"357":{"position":[[395,3]]}},"keywords":{}}],["abc",{"_index":1483,"title":{},"content":{"152":{"position":[[250,4]]},"182":{"position":[[228,6],[573,6],[1028,4]]},"189":{"position":[[383,6],[887,6],[1265,6]]},"200":{"position":[[2360,3]]},"217":{"position":[[1418,6],[1898,3]]},"722":{"position":[[250,4]]},"765":{"position":[[228,6],[573,6],[1028,4]]},"772":{"position":[[383,6],[887,6],[1265,6]]},"783":{"position":[[2360,3]]},"787":{"position":[[1418,6],[1898,3]]}},"keywords":{}}],["abfs/hdf",{"_index":1879,"title":{},"content":{"182":{"position":[[875,11]]},"765":{"position":[[875,11]]}},"keywords":{}}],["abid",{"_index":1429,"title":{},"content":{"147":{"position":[[45,6]]},"717":{"position":[[45,6]]}},"keywords":{}}],["abil",{"_index":2169,"title":{},"content":{"248":{"position":[[409,7]]},"818":{"position":[[409,7]]}},"keywords":{}}],["abnorm",{"_index":2204,"title":{},"content":{"265":{"position":[[283,9]]},"273":{"position":[[847,8],[1397,10]]},"836":{"position":[[283,9]]},"844":{"position":[[847,8],[1397,10]]}},"keywords":{}}],["abov",{"_index":757,"title":{},"content":{"78":{"position":[[562,5]]},"107":{"position":[[10976,5]]},"141":{"position":[[1804,5]]},"143":{"position":[[200,6]]},"151":{"position":[[2016,5]]},"163":{"position":[[19,5]]},"177":{"position":[[131,6]]},"181":{"position":[[1092,5]]},"217":{"position":[[1364,7],[2192,5]]},"281":{"position":[[233,5]]},"350":{"position":[[241,6]]},"355":{"position":[[290,6]]},"375":{"position":[[1114,5]]},"407":{"position":[[1431,5]]},"441":{"position":[[528,5]]},"549":{"position":[[959,5]]},"553":{"position":[[1586,5]]},"559":{"position":[[1223,5]]},"565":{"position":[[387,6]]},"568":{"position":[[392,6]]},"577":{"position":[[106,6]]},"578":{"position":[[507,5]]},"582":{"position":[[103,6]]},"587":{"position":[[94,6]]},"677":{"position":[[562,5]]},"721":{"position":[[2016,5]]},"733":{"position":[[19,5]]},"747":{"position":[[131,6]]},"764":{"position":[[1097,5]]},"777":{"position":[[1114,6]]},"787":{"position":[[1364,7],[2192,5]]},"852":{"position":[[233,5]]},"902":{"position":[[1114,5]]},"934":{"position":[[1451,5]]},"968":{"position":[[528,5]]},"1075":{"position":[[959,5]]},"1079":{"position":[[1586,5]]},"1085":{"position":[[387,6]]},"1088":{"position":[[392,6]]},"1094":{"position":[[1223,5]]},"1103":{"position":[[106,6]]},"1104":{"position":[[507,5]]},"1108":{"position":[[103,6]]},"1113":{"position":[[94,6]]}},"keywords":{}}],["above.bi",{"_index":2672,"title":{},"content":{"369":{"position":[[420,8]]},"892":{"position":[[420,8]]}},"keywords":{}}],["abstract",{"_index":1699,"title":{},"content":{"165":{"position":[[324,11]]},"222":{"position":[[273,8]]},"267":{"position":[[143,8]]},"735":{"position":[[324,11]]},"807":{"position":[[273,8]]},"838":{"position":[[143,8]]}},"keywords":{}}],["abstractsubmarineit.java",{"_index":2450,"title":{},"content":{"322":{"position":[[250,25]]},"879":{"position":[[250,25]]}},"keywords":{}}],["accept",{"_index":750,"title":{},"content":{"77":{"position":[[783,11]]},"78":{"position":[[930,11]]},"79":{"position":[[292,11],[938,11]]},"80":{"position":[[325,11]]},"82":{"position":[[328,11]]},"107":{"position":[[9250,6]]},"141":{"position":[[1384,6],[1611,7]]},"145":{"position":[[239,7]]},"193":{"position":[[17,8]]},"499":{"position":[[53,9]]},"502":{"position":[[40,9]]},"676":{"position":[[783,11]]},"677":{"position":[[930,11]]},"678":{"position":[[292,11],[938,11]]},"679":{"position":[[325,11]]},"681":{"position":[[328,11]]},"715":{"position":[[239,7]]},"776":{"position":[[17,8]]},"1026":{"position":[[53,9]]},"1029":{"position":[[40,9]]}},"keywords":{}}],["acceptedtim",{"_index":751,"title":{},"content":{"77":{"position":[[795,15]]},"78":{"position":[[942,15]]},"79":{"position":[[304,15],[950,15]]},"80":{"position":[[337,15]]},"82":{"position":[[340,15]]},"676":{"position":[[795,15]]},"677":{"position":[[942,15]]},"678":{"position":[[304,15],[950,15]]},"679":{"position":[[337,15]]},"681":{"position":[[340,15]]}},"keywords":{}}],["acceptedtime\":\"2021",{"_index":3435,"title":{},"content":{"438":{"position":[[777,20]]},"441":{"position":[[897,20]]},"443":{"position":[[288,20],[1378,20]]},"446":{"position":[[314,20]]},"449":{"position":[[808,20]]},"472":{"position":[[467,20]]},"965":{"position":[[777,20]]},"968":{"position":[[897,20]]},"970":{"position":[[288,20],[1378,20]]},"973":{"position":[[314,20]]},"976":{"position":[[808,20]]},"999":{"position":[[467,20]]}},"keywords":{}}],["acceptedtime\":nul",{"_index":3485,"title":{},"content":{"452":{"position":[[316,20]]},"979":{"position":[[316,20]]}},"keywords":{}}],["access",{"_index":137,"title":{"8":{"position":[[0,6]]},"176":{"position":[[11,6]]},"384":{"position":[[0,6]]},"395":{"position":[[4,6]]},"597":{"position":[[0,6]]},"746":{"position":[[11,6]]},"911":{"position":[[0,6]]},"922":{"position":[[4,6]]}},"content":{"21":{"position":[[304,6]]},"25":{"position":[[1760,6],[1960,6]]},"35":{"position":[[1798,6],[1971,6]]},"107":{"position":[[1821,6],[1969,6],[2257,6]]},"171":{"position":[[1145,6]]},"176":{"position":[[33,6],[253,8],[343,7],[650,6],[1099,7]]},"177":{"position":[[138,6]]},"193":{"position":[[254,6],[484,6]]},"212":{"position":[[30,6]]},"213":{"position":[[50,8],[108,6],[183,6]]},"230":{"position":[[57,6],[143,6]]},"281":{"position":[[246,8]]},"320":{"position":[[885,8]]},"375":{"position":[[301,6],[1158,6]]},"383":{"position":[[643,6]]},"384":{"position":[[294,6],[401,8],[876,7],[952,6]]},"394":{"position":[[48,6]]},"396":{"position":[[23,6]]},"512":{"position":[[30,6]]},"543":{"position":[[1760,6],[1960,6]]},"549":{"position":[[282,6],[1003,6]]},"553":{"position":[[288,6],[1630,6]]},"559":{"position":[[288,6],[1267,6]]},"613":{"position":[[1760,6],[1960,6]]},"621":{"position":[[304,6]]},"627":{"position":[[1798,6],[1971,6]]},"741":{"position":[[1156,6]]},"746":{"position":[[33,6],[253,8],[344,7],[651,6],[1102,7]]},"747":{"position":[[138,6]]},"761":{"position":[[30,6]]},"762":{"position":[[50,8],[108,6],[183,6]]},"776":{"position":[[254,6],[484,6]]},"793":{"position":[[57,6],[143,6]]},"852":{"position":[[246,8]]},"877":{"position":[[885,8]]},"902":{"position":[[301,6],[1158,6]]},"910":{"position":[[643,6]]},"911":{"position":[[294,6],[401,8],[876,7],[952,6]]},"921":{"position":[[48,6]]},"923":{"position":[[23,6]]},"1051":{"position":[[30,6]]},"1069":{"position":[[1760,6],[1960,6]]},"1075":{"position":[[282,6],[1003,6]]},"1079":{"position":[[288,6],[1630,6]]},"1094":{"position":[[288,6],[1267,6]]}},"keywords":{}}],["accompani",{"_index":1116,"title":{},"content":{"107":{"position":[[8152,11]]}},"keywords":{}}],["accord",{"_index":549,"title":{},"content":{"31":{"position":[[435,9]]},"35":{"position":[[1817,9]]},"107":{"position":[[3281,9]]},"141":{"position":[[1768,9]]},"263":{"position":[[201,9]]},"270":{"position":[[111,9]]},"389":{"position":[[23,9]]},"623":{"position":[[435,9]]},"627":{"position":[[1817,9]]},"834":{"position":[[201,9]]},"841":{"position":[[111,9]]},"916":{"position":[[23,9]]}},"keywords":{}}],["accordingli",{"_index":3388,"title":{},"content":{"417":{"position":[[66,12]]},"944":{"position":[[66,12]]}},"keywords":{}}],["account",{"_index":663,"title":{"335":{"position":[[36,7]]}},"content":{"35":{"position":[[3601,8]]},"121":{"position":[[30,7]]},"141":{"position":[[1682,8],[1760,7],[1979,8]]},"335":{"position":[[187,7]]},"627":{"position":[[3601,8]]},"689":{"position":[[30,7]]}},"keywords":{}}],["account.click",{"_index":2652,"title":{},"content":{"355":{"position":[[97,13]]}},"keywords":{}}],["accountclick",{"_index":2619,"title":{},"content":{"350":{"position":[[91,12]]}},"keywords":{}}],["accuraci",{"_index":3375,"title":{},"content":{"415":{"position":[[2073,8],[2139,11]]},"570":{"position":[[9622,8]]},"942":{"position":[[2091,8],[2159,11]]},"1090":{"position":[[9622,8]]}},"keywords":{}}],["achiev",{"_index":1031,"title":{},"content":{"107":{"position":[[3578,7]]},"151":{"position":[[847,8]]},"159":{"position":[[282,11],[825,7]]},"201":{"position":[[850,9]]},"721":{"position":[[847,8]]},"729":{"position":[[282,11],[825,7]]},"750":{"position":[[851,9]]}},"keywords":{}}],["acl",{"_index":1557,"title":{},"content":{"158":{"position":[[148,4]]},"728":{"position":[[148,4]]}},"keywords":{}}],["act",{"_index":1317,"title":{},"content":{"135":{"position":[[143,3]]},"230":{"position":[[671,4]]},"707":{"position":[[143,3]]},"793":{"position":[[671,4]]}},"keywords":{}}],["action",{"_index":1082,"title":{"127":{"position":[[20,7]]},"129":{"position":[[21,7]]},"321":{"position":[[23,7]]},"326":{"position":[[23,7]]},"695":{"position":[[20,7]]},"697":{"position":[[21,7]]},"878":{"position":[[23,7]]},"896":{"position":[[23,7]]}},"content":{"107":{"position":[[6293,6],[6466,6],[6634,6],[6684,6],[6983,7],[7101,6],[7292,6],[7644,7],[8534,6],[8599,7],[8642,7],[8736,6],[8785,7],[10183,7],[10419,7]]},"319":{"position":[[176,8]]},"321":{"position":[[37,7]]},"324":{"position":[[174,8]]},"326":{"position":[[38,7]]},"331":{"position":[[1570,6],[1826,6]]},"876":{"position":[[176,8]]},"878":{"position":[[37,7]]},"894":{"position":[[174,8]]},"896":{"position":[[38,7]]},"1046":{"position":[[527,7]]}},"keywords":{}}],["actions/pypi",{"_index":3652,"title":{},"content":{"513":{"position":[[195,12]]},"1052":{"position":[[195,12]]}},"keywords":{}}],["actions/t",{"_index":3599,"title":{},"content":{"507":{"position":[[542,12]]}},"keywords":{}}],["activ",{"_index":995,"title":{"1034":{"position":[[21,8]]}},"content":{"107":{"position":[[2048,6],[2333,6],[2550,7],[2630,6],[4509,6],[4779,6],[7162,6],[8964,6],[9325,6],[9735,6],[9839,6],[9936,6],[10090,6],[10268,6],[10505,6],[10618,6],[10706,6]]},"133":{"position":[[695,6],[2775,6]]},"156":{"position":[[300,6],[320,6],[1315,6]]},"507":{"position":[[192,8]]},"591":{"position":[[137,8]]},"726":{"position":[[300,6],[320,6],[1315,6]]},"1034":{"position":[[15,6],[313,6]]},"1046":{"position":[[192,8]]},"1117":{"position":[[137,8]]}},"keywords":{}}],["activation='relu",{"_index":3346,"title":{},"content":{"415":{"position":[[864,18],[984,19],[1079,19],[1154,19]]},"942":{"position":[[882,18],[1002,19],[1097,19],[1172,19]]}},"keywords":{}}],["activation='softmax",{"_index":3354,"title":{},"content":{"415":{"position":[[1201,22]]},"942":{"position":[[1219,22]]}},"keywords":{}}],["actual",{"_index":1831,"title":{},"content":{"177":{"position":[[152,6]]},"200":{"position":[[1158,6]]},"747":{"position":[[152,6]]},"783":{"position":[[1158,6]]}},"keywords":{}}],["ad",{"_index":1361,"title":{"139":{"position":[[0,6]]},"711":{"position":[[0,6]]}},"content":{"159":{"position":[[1007,5]]},"161":{"position":[[716,6]]},"189":{"position":[[4,2]]},"194":{"position":[[73,2]]},"212":{"position":[[626,5]]},"270":{"position":[[744,5]]},"335":{"position":[[112,6]]},"389":{"position":[[16141,6]]},"729":{"position":[[1007,5]]},"731":{"position":[[716,6]]},"761":{"position":[[626,5]]},"772":{"position":[[4,2]]},"777":{"position":[[73,2]]},"841":{"position":[[744,5]]},"916":{"position":[[16141,6]]}},"keywords":{}}],["adapt",{"_index":1960,"title":{},"content":{"195":{"position":[[238,5]]},"778":{"position":[[238,5]]}},"keywords":{}}],["add",{"_index":224,"title":{"305":{"position":[[0,3]]},"322":{"position":[[0,3]]},"329":{"position":[[3,3]]},"334":{"position":[[4,3]]},"349":{"position":[[6,3]]},"871":{"position":[[0,3]]},"879":{"position":[[0,3]]}},"content":{"15":{"position":[[199,3]]},"20":{"position":[[413,3]]},"28":{"position":[[354,3]]},"35":{"position":[[1101,3],[1131,3],[3326,3]]},"55":{"position":[[551,3],[577,3]]},"121":{"position":[[195,3],[261,3]]},"124":{"position":[[112,3]]},"133":{"position":[[1940,3],[2243,3]]},"135":{"position":[[187,3]]},"141":{"position":[[1930,3]]},"154":{"position":[[346,4]]},"164":{"position":[[6,3]]},"171":{"position":[[1922,3]]},"174":{"position":[[73,3]]},"196":{"position":[[1137,3]]},"200":{"position":[[2724,3]]},"268":{"position":[[0,3]]},"298":{"position":[[215,3]]},"299":{"position":[[145,3]]},"305":{"position":[[15,3],[59,3]]},"334":{"position":[[216,3],[828,3],[919,4],[1062,3],[1519,3],[1614,4]]},"335":{"position":[[43,3]]},"336":{"position":[[84,3]]},"349":{"position":[[285,3],[324,3]]},"375":{"position":[[1127,3]]},"389":{"position":[[17680,3]]},"505":{"position":[[114,3]]},"546":{"position":[[354,3]]},"549":{"position":[[972,3]]},"553":{"position":[[1599,3]]},"559":{"position":[[1236,3]]},"607":{"position":[[199,3]]},"616":{"position":[[354,3]]},"620":{"position":[[413,3]]},"627":{"position":[[1101,3],[1131,3],[3326,3]]},"647":{"position":[[551,3],[577,3]]},"689":{"position":[[195,3],[261,3]]},"692":{"position":[[112,3]]},"707":{"position":[[187,3]]},"724":{"position":[[346,4]]},"734":{"position":[[6,3]]},"741":{"position":[[1934,3]]},"744":{"position":[[73,3]]},"779":{"position":[[1142,3]]},"783":{"position":[[2724,3]]},"839":{"position":[[0,3]]},"865":{"position":[[218,3]]},"866":{"position":[[145,3]]},"871":{"position":[[15,3],[59,3]]},"902":{"position":[[1127,3]]},"916":{"position":[[17680,3]]},"1044":{"position":[[114,3]]},"1064":{"position":[[85,3],[887,3]]},"1072":{"position":[[354,3]]},"1075":{"position":[[972,3]]},"1079":{"position":[[1599,3]]},"1094":{"position":[[1236,3]]}},"keywords":{}}],["add/stop",{"_index":1795,"title":{},"content":{"173":{"position":[[463,10]]},"743":{"position":[[464,10]]}},"keywords":{}}],["added/listed/deleted/select",{"_index":1478,"title":{},"content":{"151":{"position":[[2252,29]]},"172":{"position":[[697,29]]},"721":{"position":[[2252,29]]},"742":{"position":[[697,29]]}},"keywords":{}}],["addit",{"_index":334,"title":{},"content":{"20":{"position":[[616,10]]},"122":{"position":[[115,9]]},"139":{"position":[[233,8],[361,8]]},"163":{"position":[[3,8]]},"248":{"position":[[792,9]]},"259":{"position":[[607,8]]},"324":{"position":[[362,9]]},"389":{"position":[[2005,10],[3447,10],[17847,10],[19271,10]]},"403":{"position":[[179,9]]},"571":{"position":[[231,10]]},"620":{"position":[[616,10]]},"690":{"position":[[115,9]]},"711":{"position":[[233,8],[361,8]]},"733":{"position":[[3,8]]},"818":{"position":[[792,9]]},"830":{"position":[[607,8]]},"894":{"position":[[362,9]]},"916":{"position":[[2005,10],[3447,10],[17847,10],[19271,10]]},"930":{"position":[[179,9]]},"1091":{"position":[[231,10]]}},"keywords":{}}],["address",{"_index":141,"title":{"131":{"position":[[8,7]]},"699":{"position":[[8,7]]}},"content":{"8":{"position":[[31,10],[146,7],[244,7]]},"17":{"position":[[137,8]]},"31":{"position":[[204,7]]},"131":{"position":[[106,7]]},"148":{"position":[[530,7]]},"262":{"position":[[180,7]]},"320":{"position":[[134,7]]},"325":{"position":[[220,7]]},"331":{"position":[[1255,8]]},"413":{"position":[[79,7],[174,7]]},"597":{"position":[[31,10],[146,7],[244,7]]},"609":{"position":[[137,8]]},"623":{"position":[[204,7]]},"699":{"position":[[106,7]]},"833":{"position":[[180,7]]},"869":{"position":[[1191,7],[1285,7]]},"877":{"position":[[134,7]]},"895":{"position":[[220,7]]},"940":{"position":[[65,7]]},"1064":{"position":[[268,7]]}},"keywords":{}}],["adh",{"_index":1345,"title":{},"content":{"137":{"position":[[40,6]]},"709":{"position":[[40,6]]}},"keywords":{}}],["adhoc",{"_index":1743,"title":{},"content":{"171":{"position":[[648,5],[978,5],[1020,5]]},"189":{"position":[[307,8],[805,8]]},"219":{"position":[[325,5]]},"741":{"position":[[653,5],[983,5],[1025,5]]},"772":{"position":[[307,8],[805,8]]},"789":{"position":[[325,5]]}},"keywords":{}}],["adjust",{"_index":2174,"title":{},"content":{"248":{"position":[[767,8]]},"818":{"position":[[767,8]]}},"keywords":{}}],["admin",{"_index":165,"title":{},"content":{"9":{"position":[[157,5],[167,5]]},"153":{"position":[[55,5]]},"158":{"position":[[213,5]]},"167":{"position":[[132,5]]},"176":{"position":[[598,5],[692,6],[699,5],[1070,5],[1093,5],[1270,5]]},"211":{"position":[[336,5]]},"218":{"position":[[397,6]]},"229":{"position":[[392,5]]},"394":{"position":[[120,5],[173,5],[204,5],[245,5]]},"395":{"position":[[141,5],[213,5]]},"598":{"position":[[157,5],[167,5]]},"723":{"position":[[55,5]]},"728":{"position":[[213,5]]},"737":{"position":[[132,5]]},"746":{"position":[[599,5],[693,6],[700,5],[812,6],[902,5],[1073,5],[1096,5],[1273,5]]},"760":{"position":[[336,5]]},"788":{"position":[[397,6]]},"792":{"position":[[392,5]]},"888":{"position":[[60,6]]},"921":{"position":[[120,5],[173,5],[204,5],[245,5]]},"922":{"position":[[141,5],[213,5]]},"1064":{"position":[[158,5],[262,5]]}},"keywords":{}}],["admin'",{"_index":2017,"title":{"205":{"position":[[0,7]]},"754":{"position":[[0,7]]}},"content":{"218":{"position":[[549,7]]},"788":{"position":[[549,7]]}},"keywords":{}}],["admin.org:6080</valu",{"_index":4319,"title":{},"content":{"1064":{"position":[[295,22]]}},"keywords":{}}],["administr",{"_index":547,"title":{},"content":{"31":{"position":[[392,13]]},"139":{"position":[[22,16],[283,14],[506,16]]},"623":{"position":[[392,13]]},"711":{"position":[[22,16],[283,14],[506,16]]}},"keywords":{}}],["administrators/committers/contributor",{"_index":1371,"title":{},"content":{"139":{"position":[[558,38]]},"711":{"position":[[558,38]]}},"keywords":{}}],["adopt",{"_index":1139,"title":{},"content":{"107":{"position":[[9344,8]]}},"keywords":{}}],["advanc",{"_index":2524,"title":{},"content":{"333":{"position":[[185,7]]}},"keywords":{}}],["advantag",{"_index":1661,"title":{},"content":{"162":{"position":[[211,10]]},"246":{"position":[[51,9],[116,10]]},"732":{"position":[[211,10]]},"816":{"position":[[51,9],[116,10]]}},"keywords":{}}],["ae2",{"_index":3543,"title":{},"content":{"479":{"position":[[530,4]]},"482":{"position":[[294,4]]},"485":{"position":[[282,4]]},"488":{"position":[[289,4]]},"1011":{"position":[[530,4]]},"1014":{"position":[[294,4]]},"1017":{"position":[[282,4]]},"1020":{"position":[[289,4]]}},"keywords":{}}],["affect",{"_index":2172,"title":{},"content":{"248":{"position":[[546,9]]},"570":{"position":[[16055,6]]},"572":{"position":[[2178,6]]},"818":{"position":[[546,9]]},"1090":{"position":[[16055,6]]},"1092":{"position":[[2178,6]]}},"keywords":{}}],["ag",{"_index":87,"title":{},"content":{"7":{"position":[[140,3]]},"412":{"position":[[119,3]]},"596":{"position":[[140,3]]},"939":{"position":[[121,3]]}},"keywords":{}}],["again",{"_index":1099,"title":{},"content":{"107":{"position":[[7080,7]]},"371":{"position":[[136,7]]},"898":{"position":[[136,7]]},"1053":{"position":[[270,7]]}},"keywords":{}}],["agent",{"_index":2570,"title":{},"content":{"336":{"position":[[792,6]]}},"keywords":{}}],["agentlib:jdwp=transport=dt_socket",{"_index":244,"title":{},"content":{"16":{"position":[[456,34]]},"608":{"position":[[456,34]]}},"keywords":{}}],["aggreg",{"_index":2063,"title":{},"content":{"216":{"position":[[342,13]]},"786":{"position":[[342,13]]}},"keywords":{}}],["agr",{"_index":1081,"title":{},"content":{"107":{"position":[[6276,8],[6610,5]]},"117":{"position":[[88,5]]},"685":{"position":[[88,5]]}},"keywords":{}}],["agreement",{"_index":1013,"title":{},"content":{"107":{"position":[[2773,9],[7062,9],[8343,9]]}},"keywords":{}}],["ahead",{"_index":1086,"title":{},"content":{"107":{"position":[[6499,6],[6697,6]]}},"keywords":{}}],["airflow",{"_index":1649,"title":{},"content":{"161":{"position":[[520,7]]},"731":{"position":[[520,7]]}},"keywords":{}}],["alabaster=0.7.12=py37_0",{"_index":695,"title":{},"content":{"71":{"position":[[308,26],[895,26]]},"72":{"position":[[446,26]]},"73":{"position":[[468,26]]},"74":{"position":[[326,27],[816,27]]},"75":{"position":[[479,27]]},"154":{"position":[[606,23],[1027,23]]},"423":{"position":[[273,26]]},"431":{"position":[[282,27]]},"663":{"position":[[308,26],[895,26]]},"664":{"position":[[446,26]]},"665":{"position":[[468,26]]},"666":{"position":[[326,27],[816,27]]},"667":{"position":[[479,27]]},"724":{"position":[[606,23],[1027,23]]},"950":{"position":[[273,26]]},"958":{"position":[[282,27]]}},"keywords":{}}],["alabaster\\u003d0.7.12\\u003dpy37_0",{"_index":3402,"title":{},"content":{"423":{"position":[[878,36]]},"425":{"position":[[756,36]]},"428":{"position":[[444,36]]},"431":{"position":[[773,37]]},"434":{"position":[[447,36]]},"950":{"position":[[878,36]]},"952":{"position":[[756,36]]},"955":{"position":[[444,36]]},"958":{"position":[[773,37]]},"961":{"position":[[447,36]]}},"keywords":{}}],["algorithm",{"_index":534,"title":{"274":{"position":[[12,9]]},"845":{"position":[[12,9]]}},"content":{"31":{"position":[[57,9]]},"35":{"position":[[220,9],[779,9],[3049,9]]},"159":{"position":[[458,10],[590,9],[783,10]]},"194":{"position":[[1250,9]]},"199":{"position":[[911,10]]},"248":{"position":[[107,9],[173,9],[196,9],[989,9],[1048,9]]},"252":{"position":[[418,11]]},"259":{"position":[[260,9],[287,9],[504,9]]},"261":{"position":[[95,9],[213,9]]},"264":{"position":[[66,9]]},"265":{"position":[[17,9],[112,10]]},"268":{"position":[[164,9]]},"269":{"position":[[47,9],[377,9]]},"270":{"position":[[47,9]]},"274":{"position":[[225,9],[265,9]]},"368":{"position":[[482,11]]},"505":{"position":[[38,9]]},"623":{"position":[[57,9]]},"627":{"position":[[220,9],[779,9],[3049,9]]},"729":{"position":[[458,10],[590,9],[783,10]]},"777":{"position":[[1530,9]]},"782":{"position":[[911,10]]},"818":{"position":[[107,9],[173,9],[196,9],[989,9],[1048,9]]},"822":{"position":[[423,11]]},"830":{"position":[[260,9],[287,9],[504,9]]},"832":{"position":[[95,9],[213,9]]},"835":{"position":[[66,9]]},"836":{"position":[[17,9],[112,10]]},"839":{"position":[[164,9]]},"840":{"position":[[47,9],[377,9]]},"841":{"position":[[47,9]]},"845":{"position":[[225,9],[265,9]]},"891":{"position":[[482,11]]},"1044":{"position":[[38,9]]}},"keywords":{}}],["algorithms/librari",{"_index":1683,"title":{},"content":{"163":{"position":[[237,21]]},"733":{"position":[[237,21]]}},"keywords":{}}],["algorithms:answ",{"_index":1576,"title":{},"content":{"159":{"position":[[529,17]]},"729":{"position":[[529,17]]}},"keywords":{}}],["alia",{"_index":3132,"title":{},"content":{"389":{"position":[[14210,5],[14229,5],[14675,6],[29759,5],[29778,5],[30224,6]]},"916":{"position":[[14210,5],[14229,5],[14675,6],[29759,5],[29778,5],[30224,6]]}},"keywords":{}}],["all.q",{"_index":2823,"title":{},"content":{"386":{"position":[[737,6]]},"913":{"position":[[737,6]]}},"keywords":{}}],["all.sh",{"_index":2765,"title":{},"content":{"377":{"position":[[96,6],[147,6]]},"551":{"position":[[40,6]]},"556":{"position":[[42,6]]},"562":{"position":[[35,6]]},"904":{"position":[[96,6],[147,6]]},"1077":{"position":[[40,6]]},"1082":{"position":[[42,6]]},"1097":{"position":[[35,6]]}},"keywords":{}}],["all.tgz",{"_index":2710,"title":{},"content":{"372":{"position":[[1404,7]]},"899":{"position":[[857,7]]}},"keywords":{}}],["alloc",{"_index":552,"title":{},"content":{"31":{"position":[[499,9]]},"623":{"position":[[499,9]]}},"keywords":{}}],["allow",{"_index":1153,"title":{},"content":{"107":{"position":[[10696,5]]},"167":{"position":[[125,6]]},"168":{"position":[[46,5]]},"170":{"position":[[384,5]]},"171":{"position":[[1010,5]]},"174":{"position":[[52,6]]},"179":{"position":[[1400,5]]},"230":{"position":[[32,5]]},"252":{"position":[[12,5]]},"383":{"position":[[616,6]]},"386":{"position":[[796,5]]},"505":{"position":[[96,6]]},"737":{"position":[[125,6]]},"738":{"position":[[46,5]]},"740":{"position":[[384,5]]},"741":{"position":[[1015,5],[1140,5]]},"744":{"position":[[52,6]]},"749":{"position":[[1405,5]]},"793":{"position":[[32,5]]},"822":{"position":[[12,5]]},"910":{"position":[[616,6]]},"913":{"position":[[796,5]]},"1044":{"position":[[96,6]]}},"keywords":{}}],["allow_soft_plac",{"_index":3859,"title":{},"content":{"570":{"position":[[1086,21],[5020,21],[10568,21],[14526,21],[16637,21]]},"1090":{"position":[[1086,21],[5020,21],[10568,21],[14526,21],[16637,21]]}},"keywords":{}}],["alon",{"_index":1158,"title":{},"content":{"107":{"position":[[10906,6]]}},"keywords":{}}],["alphabet",{"_index":3242,"title":{},"content":{"406":{"position":[[429,10]]},"933":{"position":[[429,10]]}},"keywords":{}}],["alphanum",{"_index":3241,"title":{},"content":{"406":{"position":[[384,12],[462,12]]},"933":{"position":[[384,12],[462,12]]}},"keywords":{}}],["alreadi",{"_index":119,"title":{},"content":{"7":{"position":[[583,7]]},"78":{"position":[[614,7]]},"152":{"position":[[434,7]]},"248":{"position":[[915,7]]},"336":{"position":[[15,7]]},"441":{"position":[[580,7]]},"569":{"position":[[21,7]]},"578":{"position":[[95,7]]},"583":{"position":[[92,7]]},"588":{"position":[[90,7]]},"596":{"position":[[583,7]]},"677":{"position":[[614,7]]},"722":{"position":[[434,7]]},"818":{"position":[[915,7]]},"968":{"position":[[580,7]]},"1089":{"position":[[21,7]]},"1104":{"position":[[95,7]]},"1109":{"position":[[92,7]]},"1114":{"position":[[90,7]]}},"keywords":{}}],["alt",{"_index":1096,"title":{},"content":{"107":{"position":[[6961,11],[9447,11]]},"154":{"position":[[30,12]]},"389":{"position":[[13420,13],[15117,13],[15394,13],[28969,13],[30666,13],[30943,13]]},"724":{"position":[[30,12]]},"916":{"position":[[13420,13],[15117,13],[15394,13],[28969,13],[30666,13],[30943,13]]}},"keywords":{}}],["alway",{"_index":1347,"title":{},"content":{"137":{"position":[[110,6]]},"200":{"position":[[75,6]]},"212":{"position":[[281,6]]},"519":{"position":[[46,6]]},"709":{"position":[[110,6]]},"761":{"position":[[281,6]]},"783":{"position":[[75,6]]},"1059":{"position":[[46,6]]}},"keywords":{}}],["amazon",{"_index":1449,"title":{},"content":{"151":{"position":[[225,6]]},"172":{"position":[[199,6]]},"721":{"position":[[225,6]]},"742":{"position":[[199,6]]}},"keywords":{}}],["amd64",{"_index":452,"title":{},"content":{"26":{"position":[[227,5],[588,5]]},"375":{"position":[[1316,5]]},"389":{"position":[[3534,5],[3548,5],[3627,5],[3641,5],[3716,5],[3738,5],[3819,5],[3838,5],[3918,5],[3929,5],[4023,5],[4038,5],[4135,5],[4150,5],[4241,5],[4264,5],[4367,5],[4390,5],[4494,5],[4516,5],[4610,5],[4632,5],[4718,5],[4737,5],[4820,5],[4904,5],[4919,5],[5004,5],[5025,5],[5111,5],[5123,5],[5208,5],[5304,5],[5318,5],[5403,5],[5419,5],[5513,5],[5616,5],[5640,5],[5722,5],[5733,5],[5814,5],[5836,5],[5917,5],[5941,5],[6019,5],[6133,5],[6159,5],[6254,5],[6275,5],[6361,5],[6464,5],[6560,5],[6661,5],[6781,5],[6887,5],[19358,5],[19372,5],[19451,5],[19465,5],[19540,5],[19562,5],[19643,5],[19662,5],[19742,5],[19753,5],[19847,5],[19862,5],[19959,5],[19974,5],[20065,5],[20088,5],[20191,5],[20214,5],[20318,5],[20340,5],[20434,5],[20456,5],[20542,5],[20561,5],[20644,5],[20728,5],[20743,5],[20828,5],[20849,5],[20935,5],[20947,5],[21032,5],[21128,5],[21142,5],[21227,5],[21243,5],[21337,5],[21440,5],[21464,5],[21546,5],[21557,5],[21638,5],[21660,5],[21737,5],[21851,5],[21877,5],[21972,5],[21993,5],[22079,5],[22182,5],[22278,5],[22379,5],[22499,5],[22605,5]]},"391":{"position":[[411,5]]},"544":{"position":[[227,5],[588,5]]},"549":{"position":[[1057,5]]},"580":{"position":[[796,5],[901,5]]},"585":{"position":[[506,5],[611,5]]},"614":{"position":[[227,5],[588,5]]},"902":{"position":[[1316,5]]},"916":{"position":[[3534,5],[3548,5],[3627,5],[3641,5],[3716,5],[3738,5],[3819,5],[3838,5],[3918,5],[3929,5],[4023,5],[4038,5],[4135,5],[4150,5],[4241,5],[4264,5],[4367,5],[4390,5],[4494,5],[4516,5],[4610,5],[4632,5],[4718,5],[4737,5],[4820,5],[4904,5],[4919,5],[5004,5],[5025,5],[5111,5],[5123,5],[5208,5],[5304,5],[5318,5],[5403,5],[5419,5],[5513,5],[5616,5],[5640,5],[5722,5],[5733,5],[5814,5],[5836,5],[5917,5],[5941,5],[6019,5],[6133,5],[6159,5],[6254,5],[6275,5],[6361,5],[6464,5],[6560,5],[6661,5],[6781,5],[6887,5],[19358,5],[19372,5],[19451,5],[19465,5],[19540,5],[19562,5],[19643,5],[19662,5],[19742,5],[19753,5],[19847,5],[19862,5],[19959,5],[19974,5],[20065,5],[20088,5],[20191,5],[20214,5],[20318,5],[20340,5],[20434,5],[20456,5],[20542,5],[20561,5],[20644,5],[20728,5],[20743,5],[20828,5],[20849,5],[20935,5],[20947,5],[21032,5],[21128,5],[21142,5],[21227,5],[21243,5],[21337,5],[21440,5],[21464,5],[21546,5],[21557,5],[21638,5],[21660,5],[21737,5],[21851,5],[21877,5],[21972,5],[21993,5],[22079,5],[22182,5],[22278,5],[22379,5],[22499,5],[22605,5]]},"918":{"position":[[411,5]]},"1070":{"position":[[227,5],[588,5]]},"1075":{"position":[[1057,5]]},"1106":{"position":[[796,5],[901,5]]},"1111":{"position":[[506,5],[611,5]]}},"keywords":{}}],["amd64/jr",{"_index":2835,"title":{},"content":{"389":{"position":[[461,10]]},"916":{"position":[[461,10]]}},"keywords":{}}],["ami",{"_index":1450,"title":{},"content":{"151":{"position":[[249,4]]},"172":{"position":[[194,4]]},"721":{"position":[[249,4]]},"742":{"position":[[194,4]]}},"keywords":{}}],["amount",{"_index":1670,"title":{},"content":{"162":{"position":[[603,6]]},"261":{"position":[[544,7]]},"732":{"position":[[603,6]]},"832":{"position":[[544,7]]}},"keywords":{}}],["anaconda",{"_index":697,"title":{},"content":{"71":{"position":[[362,9],[394,9],[949,9],[981,9]]},"72":{"position":[[500,9],[532,9]]},"73":{"position":[[522,9],[554,9]]},"154":{"position":[[658,8],[689,8],[724,8],[1079,8],[1110,8]]},"423":{"position":[[327,9],[359,9],[952,9],[994,9]]},"425":{"position":[[830,9],[872,9]]},"428":{"position":[[518,9],[560,9]]},"434":{"position":[[521,9],[563,9]]},"663":{"position":[[362,9],[394,9],[949,9],[981,9]]},"664":{"position":[[500,9],[532,9]]},"665":{"position":[[522,9],[554,9]]},"724":{"position":[[658,8],[689,8],[724,8],[1079,8],[1110,8]]},"950":{"position":[[327,9],[359,9],[952,9],[994,9]]},"952":{"position":[[830,9],[872,9]]},"955":{"position":[[518,9],[560,9]]},"961":{"position":[[521,9],[563,9]]}},"keywords":{}}],["anaconda=2020.02=py37_0",{"_index":696,"title":{},"content":{"71":{"position":[[335,26],[922,26]]},"72":{"position":[[473,26]]},"73":{"position":[[495,26]]},"154":{"position":[[632,23],[1053,23]]},"423":{"position":[[300,26]]},"663":{"position":[[335,26],[922,26]]},"664":{"position":[[473,26]]},"665":{"position":[[495,26]]},"724":{"position":[[632,23],[1053,23]]},"950":{"position":[[300,26]]}},"keywords":{}}],["anaconda\\u003d2020.02\\u003dpy37_0",{"_index":3403,"title":{},"content":{"423":{"position":[[915,36]]},"425":{"position":[[793,36]]},"428":{"position":[[481,36]]},"434":{"position":[[484,36]]},"950":{"position":[[915,36]]},"952":{"position":[[793,36]]},"955":{"position":[[481,36]]},"961":{"position":[[484,36]]}},"keywords":{}}],["analyz",{"_index":1284,"title":{},"content":{"133":{"position":[[1318,7]]},"141":{"position":[[368,8]]}},"keywords":{}}],["and/or",{"_index":1447,"title":{},"content":{"151":{"position":[[173,6]]},"721":{"position":[[173,6]]}},"keywords":{}}],["angular",{"_index":169,"title":{},"content":{"12":{"position":[[0,7],[82,7]]},"604":{"position":[[0,7],[82,7]]}},"keywords":{}}],["angular.j",{"_index":2668,"title":{},"content":{"368":{"position":[[307,10]]},"891":{"position":[[307,10]]}},"keywords":{}}],["announc",{"_index":1401,"title":{},"content":{"141":{"position":[[2096,10]]},"352":{"position":[[1153,8]]},"357":{"position":[[123,8],[163,10],[267,8]]}},"keywords":{}}],["announcements.dev",{"_index":1433,"title":{},"content":{"148":{"position":[[154,17]]},"718":{"position":[[154,17]]}},"keywords":{}}],["annual",{"_index":1059,"title":{},"content":{"107":{"position":[[5187,9]]}},"keywords":{}}],["anoconda",{"_index":3219,"title":{},"content":{"398":{"position":[[90,8]]},"925":{"position":[[90,8]]}},"keywords":{}}],["anomali",{"_index":2244,"title":{},"content":{"272":{"position":[[51,10]]},"843":{"position":[[51,10]]}},"keywords":{}}],["anonym",{"_index":3418,"title":{},"content":{"437":{"position":[[567,9],[593,9]]},"964":{"position":[[567,9],[593,9]]}},"keywords":{}}],["anonymous/embed",{"_index":720,"title":{"77":{"position":[[25,18]]},"436":{"position":[[25,18]]},"676":{"position":[[25,18]]},"963":{"position":[[25,18]]}},"content":{},"keywords":{}}],["anoth",{"_index":1344,"title":{},"content":{"136":{"position":[[646,7]]},"159":{"position":[[1320,7],[1653,7]]},"275":{"position":[[273,7]]},"708":{"position":[[646,7]]},"729":{"position":[[1320,7],[1653,7]]},"846":{"position":[[273,7]]}},"keywords":{}}],["answ",{"_index":1277,"title":{},"content":{"133":{"position":[[964,6]]},"159":{"position":[[2880,6]]},"729":{"position":[[2880,6]]}},"keywords":{}}],["anti",{"_index":2072,"title":{},"content":{"217":{"position":[[389,4]]},"787":{"position":[[389,4]]}},"keywords":{}}],["anyon",{"_index":1119,"title":{},"content":{"107":{"position":[[8278,6]]},"130":{"position":[[0,6]]},"133":{"position":[[288,6],[423,6]]},"698":{"position":[[0,6]]}},"keywords":{}}],["anyth",{"_index":1550,"title":{},"content":{"156":{"position":[[1342,8]]},"217":{"position":[[479,9]]},"726":{"position":[[1342,8]]},"787":{"position":[[479,9]]}},"keywords":{}}],["anywh",{"_index":1590,"title":{},"content":{"159":{"position":[[1510,10]]},"729":{"position":[[1510,10]]}},"keywords":{}}],["apach",{"_index":6,"title":{"134":{"position":[[10,6]]},"142":{"position":[[0,6]]},"344":{"position":[[15,6]]},"345":{"position":[[35,6]]},"350":{"position":[[18,6]]},"355":{"position":[[31,6]]},"370":{"position":[[9,6]]},"706":{"position":[[10,6]]},"712":{"position":[[0,6]]},"897":{"position":[[9,6]]}},"content":{"1":{"position":[[6,6]]},"71":{"position":[[451,8],[1038,8]]},"72":{"position":[[589,8]]},"73":{"position":[[611,8]]},"107":{"position":[[49,6],[237,6],[341,6],[499,6],[588,7],[620,6],[706,6],[759,6],[1191,6],[1329,6],[2705,6],[2806,6],[3693,6],[3729,6],[3827,7],[3923,6],[4038,6],[4888,6],[4932,6],[5451,6]]},"117":{"position":[[0,6],[23,6],[101,6],[209,6]]},"133":{"position":[[0,6],[73,6],[112,7],[196,6],[384,6]]},"135":{"position":[[86,6]]},"141":{"position":[[1466,6],[1669,6],[1753,6],[2005,6]]},"145":{"position":[[110,6],[484,6]]},"148":{"position":[[15,6]]},"149":{"position":[[35,6]]},"159":{"position":[[1195,6]]},"161":{"position":[[513,6]]},"167":{"position":[[105,6],[612,6]]},"168":{"position":[[545,6]]},"176":{"position":[[461,6]]},"177":{"position":[[205,6]]},"314":{"position":[[1963,6],[2014,6],[2187,6],[2245,6],[2312,6],[2370,6],[2554,6]]},"315":{"position":[[185,6],[350,6],[426,6]]},"316":{"position":[[6,6]]},"317":{"position":[[6,6],[64,6]]},"328":{"position":[[191,6]]},"331":{"position":[[168,6]]},"334":{"position":[[1021,6],[1716,6]]},"336":{"position":[[389,6]]},"338":{"position":[[296,6]]},"341":{"position":[[159,6],[237,6]]},"345":{"position":[[104,6],[181,6]]},"350":{"position":[[84,6]]},"352":{"position":[[1216,6],[1281,6]]},"355":{"position":[[90,6]]},"357":{"position":[[174,6],[285,6],[325,6],[484,7]]},"372":{"position":[[0,6],[523,6],[547,6],[818,6],[1089,6],[1306,6]]},"400":{"position":[[197,6],[253,6]]},"423":{"position":[[416,8],[1060,8]]},"425":{"position":[[938,8]]},"428":{"position":[[626,8]]},"434":{"position":[[629,8]]},"513":{"position":[[4,6]]},"601":{"position":[[6,6]]},"663":{"position":[[451,8],[1038,8]]},"664":{"position":[[589,8]]},"665":{"position":[[611,8]]},"685":{"position":[[0,6],[23,6],[101,6],[209,6]]},"707":{"position":[[86,6]]},"715":{"position":[[110,6]]},"718":{"position":[[15,6]]},"719":{"position":[[35,6]]},"729":{"position":[[1195,6]]},"731":{"position":[[513,6]]},"737":{"position":[[105,6],[612,6]]},"738":{"position":[[545,6]]},"746":{"position":[[462,6]]},"747":{"position":[[205,6]]},"810":{"position":[[388,6]]},"888":{"position":[[26,6]]},"899":{"position":[[0,6],[271,6],[542,6],[759,6]]},"927":{"position":[[197,6],[253,6]]},"950":{"position":[[416,8],[1060,8]]},"952":{"position":[[938,8]]},"955":{"position":[[626,8]]},"961":{"position":[[629,8]]},"1052":{"position":[[4,6]]},"1053":{"position":[[47,6],[278,6],[301,6],[359,6],[375,6]]},"1062":{"position":[[25,6],[42,6]]},"1064":{"position":[[13,6],[144,6],[1607,6]]}},"keywords":{}}],["apache'",{"_index":1315,"title":{},"content":{"135":{"position":[[44,8]]},"707":{"position":[[44,8]]}},"keywords":{}}],["apache/submarin",{"_index":1184,"title":{"120":{"position":[[12,16]]},"129":{"position":[[60,16]]},"688":{"position":[[12,16]]},"697":{"position":[[60,16]]}},"content":{"224":{"position":[[419,16]]},"380":{"position":[[296,16]]},"809":{"position":[[419,16]]},"907":{"position":[[296,16]]}},"keywords":{}}],["apache/submarine:databas",{"_index":188,"title":{},"content":{"13":{"position":[[247,25]]},"372":{"position":[[384,25]]},"605":{"position":[[247,25]]}},"keywords":{}}],["apache/submarine:jupyt",{"_index":931,"title":{},"content":{"103":{"position":[[712,25]]},"372":{"position":[[454,24]]},"705":{"position":[[712,25]]}},"keywords":{}}],["apache/submarine:mini",{"_index":2637,"title":{},"content":{"352":{"position":[[347,21]]},"372":{"position":[[268,21]]}},"keywords":{}}],["apache/submarine:pytorch",{"_index":769,"title":{},"content":{"79":{"position":[[1203,25]]},"678":{"position":[[1203,25]]}},"keywords":{}}],["apache/submarine:serv",{"_index":193,"title":{},"content":{"13":{"position":[[391,23]]},"372":{"position":[[324,23]]},"605":{"position":[[391,23]]}},"keywords":{}}],["apache/submarine:tf",{"_index":733,"title":{},"content":{"77":{"position":[[356,20],[1114,20]]},"79":{"position":[[623,20]]},"80":{"position":[[656,20]]},"81":{"position":[[364,20],[967,20]]},"82":{"position":[[659,20]]},"86":{"position":[[996,20]]},"89":{"position":[[993,20]]},"223":{"position":[[216,20]]},"438":{"position":[[322,20]]},"449":{"position":[[323,20]]},"461":{"position":[[964,20]]},"466":{"position":[[969,20]]},"492":{"position":[[303,20]]},"496":{"position":[[541,20]]},"497":{"position":[[548,20]]},"669":{"position":[[996,20]]},"672":{"position":[[993,20]]},"676":{"position":[[356,20],[1114,20]]},"678":{"position":[[623,20]]},"679":{"position":[[656,20]]},"680":{"position":[[364,20],[967,20]]},"681":{"position":[[659,20]]},"808":{"position":[[216,20]]},"965":{"position":[[322,20]]},"976":{"position":[[323,20]]},"988":{"position":[[964,20]]},"993":{"position":[[969,20]]},"1006":{"position":[[303,20]]},"1023":{"position":[[541,20]]},"1024":{"position":[[548,20]]}},"keywords":{}}],["apacheth",{"_index":2470,"title":{},"content":{"331":{"position":[[135,9]]}},"keywords":{}}],["apache’",{"_index":1265,"title":{},"content":{"133":{"position":[[57,8]]},"147":{"position":[[55,8]]},"328":{"position":[[31,8]]},"717":{"position":[[55,8]]}},"keywords":{}}],["api",{"_index":681,"title":{"70":{"position":[[17,3]]},"76":{"position":[[16,3]]},"85":{"position":[[25,3]]},"92":{"position":[[11,3]]},"99":{"position":[[14,3]]},"104":{"position":[[11,3]]},"108":{"position":[[11,3]]},"152":{"position":[[12,3]]},"182":{"position":[[0,3]]},"199":{"position":[[31,3]]},"230":{"position":[[25,4]]},"420":{"position":[[17,3]]},"435":{"position":[[16,3]]},"458":{"position":[[25,3]]},"476":{"position":[[14,3]]},"662":{"position":[[17,3]]},"668":{"position":[[25,3]]},"675":{"position":[[16,3]]},"701":{"position":[[14,3]]},"722":{"position":[[12,3]]},"765":{"position":[[0,3]]},"782":{"position":[[31,3]]},"793":{"position":[[25,4]]},"947":{"position":[[17,3]]},"962":{"position":[[16,3]]},"985":{"position":[[25,3]]},"1008":{"position":[[14,3]]}},"content":{"74":{"position":[[998,4]]},"78":{"position":[[668,3]]},"89":{"position":[[1199,4]]},"152":{"position":[[72,3]]},"171":{"position":[[1984,4]]},"174":{"position":[[40,5]]},"179":{"position":[[97,3],[1393,3]]},"182":{"position":[[94,4]]},"187":{"position":[[184,5]]},"190":{"position":[[491,4]]},"200":{"position":[[2918,4]]},"208":{"position":[[161,4]]},"215":{"position":[[1394,4]]},"225":{"position":[[530,3]]},"230":{"position":[[202,4],[390,3],[529,3],[595,3],[928,3]]},"231":{"position":[[945,4]]},"324":{"position":[[117,4]]},"352":{"position":[[1112,3]]},"366":{"position":[[29,4]]},"437":{"position":[[894,4]]},"441":{"position":[[634,3],[672,4]]},"460":{"position":[[1107,4]]},"474":{"position":[[111,4]]},"478":{"position":[[410,4]]},"496":{"position":[[130,4]]},"497":{"position":[[158,4]]},"505":{"position":[[85,4]]},"511":{"position":[[12,3],[56,3],[130,3],[768,3]]},"666":{"position":[[998,4]]},"672":{"position":[[1199,4]]},"677":{"position":[[668,3]]},"722":{"position":[[72,3]]},"741":{"position":[[1996,4]]},"744":{"position":[[40,5]]},"749":{"position":[[97,3],[1398,3]]},"757":{"position":[[161,4]]},"765":{"position":[[94,4]]},"770":{"position":[[184,5]]},"773":{"position":[[491,4]]},"783":{"position":[[2918,4]]},"785":{"position":[[1394,4]]},"793":{"position":[[202,4],[390,3],[529,3],[595,3],[928,3]]},"794":{"position":[[1198,4]]},"810":{"position":[[583,3]]},"889":{"position":[[29,4]]},"894":{"position":[[117,4]]},"964":{"position":[[894,4]]},"968":{"position":[[634,3],[672,4]]},"987":{"position":[[1107,4]]},"1001":{"position":[[111,4]]},"1010":{"position":[[410,4]]},"1023":{"position":[[130,4]]},"1024":{"position":[[158,4]]},"1032":{"position":[[49,3]]},"1044":{"position":[[85,4]]},"1050":{"position":[[12,3],[56,3]]}},"keywords":{}}],["api'",{"_index":761,"title":{},"content":{"78":{"position":[[732,5]]},"677":{"position":[[732,5]]}},"keywords":{}}],["api/multi_worker_strategi",{"_index":3324,"title":{},"content":{"415":{"position":[[270,25]]},"942":{"position":[[270,25]]}},"keywords":{}}],["api/v1/environ",{"_index":683,"title":{},"content":{"71":{"position":[[5,19]]},"72":{"position":[[4,19]]},"421":{"position":[[5,19]]},"424":{"position":[[4,19]]},"663":{"position":[[5,19]]},"664":{"position":[[4,19]]},"948":{"position":[[5,19]]},"951":{"position":[[4,19]]}},"keywords":{}}],["api/v1/environment/{nam",{"_index":713,"title":{},"content":{"73":{"position":[[4,26]]},"74":{"position":[[6,26]]},"75":{"position":[[4,26]]},"426":{"position":[[4,26]]},"429":{"position":[[6,26]]},"432":{"position":[[7,26]]},"665":{"position":[[4,26]]},"666":{"position":[[6,26]]},"667":{"position":[[4,26]]},"953":{"position":[[4,26]]},"956":{"position":[[6,26]]},"959":{"position":[[7,26]]}},"keywords":{}}],["api/v1/experi",{"_index":721,"title":{},"content":{"77":{"position":[[5,18]]},"78":{"position":[[5,18]]},"79":{"position":[[4,18]]},"436":{"position":[[5,18]]},"439":{"position":[[5,18]]},"442":{"position":[[4,18]]},"676":{"position":[[5,18]]},"677":{"position":[[5,18]]},"678":{"position":[[4,18]]},"963":{"position":[[5,18]]},"966":{"position":[[5,18]]},"969":{"position":[[4,18]]}},"keywords":{}}],["api/v1/experiment/log",{"_index":774,"title":{},"content":{"83":{"position":[[4,23]]},"453":{"position":[[4,23]]},"682":{"position":[[4,23]]},"980":{"position":[[4,23]]}},"keywords":{}}],["api/v1/experiment/logs/{id",{"_index":784,"title":{},"content":{"84":{"position":[[4,28]]},"455":{"position":[[4,28]]},"683":{"position":[[4,28]]},"982":{"position":[[4,28]]}},"keywords":{}}],["api/v1/experiment/{id",{"_index":772,"title":{},"content":{"80":{"position":[[4,23]]},"81":{"position":[[6,23]]},"82":{"position":[[4,23]]},"444":{"position":[[4,23]]},"447":{"position":[[6,23]]},"450":{"position":[[7,23]]},"679":{"position":[[4,23]]},"680":{"position":[[6,23]]},"681":{"position":[[4,23]]},"971":{"position":[[4,23]]},"974":{"position":[[6,23]]},"977":{"position":[[7,23]]}},"keywords":{}}],["api/v1/experiment/{template_nam",{"_index":840,"title":{},"content":{"91":{"position":[[5,34]]},"470":{"position":[[5,34]]},"674":{"position":[[5,34]]},"997":{"position":[[5,34]]}},"keywords":{}}],["api/v1/model",{"_index":847,"title":{},"content":{"93":{"position":[[4,13]]},"94":{"position":[[4,13]]},"95":{"position":[[6,13]]},"96":{"position":[[7,13]]},"97":{"position":[[5,13]]},"98":{"position":[[7,13]]}},"keywords":{}}],["api/v1/notebook",{"_index":883,"title":{},"content":{"100":{"position":[[5,16]]},"101":{"position":[[4,16]]},"477":{"position":[[5,16]]},"480":{"position":[[4,16]]},"702":{"position":[[5,16]]},"703":{"position":[[4,16]]},"1009":{"position":[[5,16]]},"1012":{"position":[[4,16]]}},"keywords":{}}],["api/v1/notebook/{id",{"_index":918,"title":{},"content":{"102":{"position":[[4,21]]},"103":{"position":[[7,21]]},"483":{"position":[[4,21]]},"486":{"position":[[7,21]]},"704":{"position":[[4,21]]},"705":{"position":[[7,21]]},"1015":{"position":[[4,21]]},"1018":{"position":[[7,21]]}},"keywords":{}}],["api/v1/regist",{"_index":1160,"title":{},"content":{"109":{"position":[[5,18]]},"110":{"position":[[4,18]]},"111":{"position":[[4,18]]},"112":{"position":[[6,18]]},"113":{"position":[[7,18]]},"114":{"position":[[5,18]]},"115":{"position":[[7,18]]}},"keywords":{}}],["api/v1/serv",{"_index":932,"title":{},"content":{"105":{"position":[[5,13]]},"106":{"position":[[7,13]]}},"keywords":{}}],["api/v1/templ",{"_index":827,"title":{},"content":{"86":{"position":[[5,16]]},"87":{"position":[[4,16]]},"459":{"position":[[5,16]]},"462":{"position":[[4,16]]},"669":{"position":[[5,16]]},"670":{"position":[[4,16]]},"986":{"position":[[5,16]]},"989":{"position":[[4,16]]}},"keywords":{}}],["api/v1/template/{nam",{"_index":838,"title":{},"content":{"88":{"position":[[4,23]]},"89":{"position":[[6,23]]},"90":{"position":[[4,23]]},"671":{"position":[[4,23]]},"672":{"position":[[6,23]]},"673":{"position":[[4,23]]}},"keywords":{}}],["api/v1/template{nam",{"_index":3520,"title":{},"content":{"464":{"position":[[6,22]]},"467":{"position":[[7,22]]},"991":{"position":[[6,22]]},"994":{"position":[[7,22]]}},"keywords":{}}],["apiextensions.k8s.io/v1beta1",{"_index":126,"title":{},"content":{"7":{"position":[[733,29],[804,29]]},"596":{"position":[[733,29],[804,29]]}},"keywords":{}}],["apiv",{"_index":318,"title":{},"content":{"20":{"position":[[334,11]]},"217":{"position":[[1846,11]]},"225":{"position":[[458,10]]},"384":{"position":[[738,11]]},"620":{"position":[[334,11]]},"787":{"position":[[1846,11]]},"810":{"position":[[511,10]]},"911":{"position":[[738,11]]}},"keywords":{}}],["app/docker/containers/0bfafa146431771f6024dcb9775ef47f170edb2f152f71916ba44209ca6120a/shm",{"_index":474,"title":{},"content":{"28":{"position":[[158,91]]},"546":{"position":[[158,91]]},"616":{"position":[[158,91]]},"1072":{"position":[[158,91]]}},"keywords":{}}],["apparmor",{"_index":2902,"title":{},"content":{"389":{"position":[[2542,8],[18384,8]]},"916":{"position":[[2542,8],[18384,8]]}},"keywords":{}}],["appear",{"_index":642,"title":{},"content":{"35":{"position":[[2039,6]]},"265":{"position":[[276,6]]},"314":{"position":[[2478,8]]},"350":{"position":[[348,6]]},"627":{"position":[[2039,6]]},"836":{"position":[[276,6]]}},"keywords":{}}],["append",{"_index":2059,"title":{},"content":{"216":{"position":[[88,10],[202,10]]},"334":{"position":[[700,6],[790,10],[1387,6],[1477,10]]},"786":{"position":[[88,10],[202,10]]}},"keywords":{}}],["applaunchservices=0.2.1=py_0",{"_index":1518,"title":{},"content":{"154":{"position":[[754,28]]},"724":{"position":[[754,28]]}},"keywords":{}}],["appli",{"_index":346,"title":{},"content":{"21":{"position":[[213,5]]},"107":{"position":[[7414,7]]},"141":{"position":[[1899,5]]},"393":{"position":[[60,5]]},"411":{"position":[[317,5]]},"580":{"position":[[1407,8]]},"621":{"position":[[213,5]]},"869":{"position":[[951,5],[1034,5]]},"920":{"position":[[60,5]]},"1106":{"position":[[1407,8]]}},"keywords":{}}],["applic",{"_index":528,"title":{"576":{"position":[[18,12]]},"581":{"position":[[15,12]]},"586":{"position":[[13,12]]},"1102":{"position":[[18,12]]},"1107":{"position":[[15,12]]},"1112":{"position":[[13,12]]}},"content":{"29":{"position":[[34,12]]},"159":{"position":[[1263,12],[1952,11]]},"167":{"position":[[273,13]]},"229":{"position":[[1657,13]]},"246":{"position":[[153,12]]},"362":{"position":[[27,12]]},"386":{"position":[[877,11]]},"547":{"position":[[34,12]]},"617":{"position":[[34,12]]},"729":{"position":[[1263,12],[1952,11]]},"737":{"position":[[273,13]]},"792":{"position":[[1659,13]]},"816":{"position":[[153,12]]},"884":{"position":[[27,12]]},"913":{"position":[[877,11]]},"1073":{"position":[[34,12]]}},"keywords":{}}],["application/json",{"_index":687,"title":{},"content":{"71":{"position":[[72,17]]},"74":{"position":[[82,17]]},"77":{"position":[[71,17]]},"78":{"position":[[71,17]]},"81":{"position":[[79,17]]},"86":{"position":[[69,17]]},"89":{"position":[[62,17]]},"91":{"position":[[88,17]]},"95":{"position":[[77,17]]},"100":{"position":[[69,17]]},"105":{"position":[[138,17]]},"106":{"position":[[70,17]]},"109":{"position":[[77,17]]},"112":{"position":[[87,17]]},"423":{"position":[[37,17]]},"431":{"position":[[38,17]]},"438":{"position":[[37,17]]},"441":{"position":[[37,17]]},"449":{"position":[[38,17]]},"461":{"position":[[37,17]]},"466":{"position":[[38,17]]},"472":{"position":[[37,17]]},"479":{"position":[[37,17]]},"663":{"position":[[72,17]]},"666":{"position":[[82,17]]},"669":{"position":[[69,17]]},"672":{"position":[[62,17]]},"674":{"position":[[88,17]]},"676":{"position":[[71,17]]},"677":{"position":[[71,17]]},"680":{"position":[[79,17]]},"702":{"position":[[69,17]]},"950":{"position":[[37,17]]},"958":{"position":[[38,17]]},"965":{"position":[[37,17]]},"968":{"position":[[37,17]]},"976":{"position":[[38,17]]},"988":{"position":[[37,17]]},"993":{"position":[[38,17]]},"999":{"position":[[37,17]]},"1011":{"position":[[37,17]]}},"keywords":{}}],["applications.answ",{"_index":1611,"title":{},"content":{"159":{"position":[[2506,19]]},"729":{"position":[[2506,19]]}},"keywords":{}}],["apply_gradi",{"_index":4093,"title":{},"content":{"572":{"position":[[1626,15]]},"1092":{"position":[[1626,15]]}},"keywords":{}}],["appoint",{"_index":1051,"title":{},"content":{"107":{"position":[[4823,9]]}},"keywords":{}}],["appreci",{"_index":1419,"title":{},"content":{"144":{"position":[[625,12]]},"714":{"position":[[625,12]]}},"keywords":{}}],["approach",{"_index":2070,"title":{},"content":{"217":{"position":[[165,9],[2438,8]]},"230":{"position":[[561,11]]},"787":{"position":[[165,9],[2438,8]]},"793":{"position":[[561,11]]}},"keywords":{}}],["appropri",{"_index":1094,"title":{},"content":{"107":{"position":[[6856,12],[6921,11]]}},"keywords":{}}],["approv",{"_index":544,"title":{},"content":{"31":{"position":[[292,8]]},"107":{"position":[[2010,8],[2032,8],[2321,8],[4099,8],[4473,8],[4497,8],[4763,8],[5568,9],[5665,9],[5675,9],[5744,10],[5805,9],[6137,8],[7571,9],[7604,9],[7679,9],[7699,8],[7720,8],[8709,8],[8952,8],[9498,9],[9827,8],[9924,8]]},"136":{"position":[[676,7]]},"144":{"position":[[274,8]]},"623":{"position":[[292,8]]},"708":{"position":[[676,7]]},"714":{"position":[[274,8]]}},"keywords":{}}],["apt",{"_index":2723,"title":{},"content":{"375":{"position":[[451,3],[470,3],[490,3],[1174,3],[1192,3]]},"383":{"position":[[972,3]]},"549":{"position":[[522,3],[571,3],[1067,3],[1085,3]]},"553":{"position":[[464,3],[482,3],[1646,3],[1664,3]]},"559":{"position":[[445,3],[463,3],[664,3],[756,3],[774,3],[819,3],[1283,3],[1301,3]]},"902":{"position":[[451,3],[470,3],[490,3],[1174,3],[1192,3]]},"910":{"position":[[972,3]]},"1075":{"position":[[522,3],[571,3],[1067,3],[1085,3]]},"1079":{"position":[[464,3],[482,3],[1646,3],[1664,3]]},"1094":{"position":[[445,3],[463,3],[664,3],[756,3],[774,3],[819,3],[1283,3],[1301,3]]}},"keywords":{}}],["arbitrari",{"_index":1363,"title":{},"content":{"139":{"position":[[214,9]]},"711":{"position":[[214,9]]}},"keywords":{}}],["architectur",{"_index":1276,"title":{"157":{"position":[[0,12]]},"178":{"position":[[0,12]]},"179":{"position":[[0,12]]},"229":{"position":[[0,12]]},"358":{"position":[[8,12]]},"727":{"position":[[0,12]]},"748":{"position":[[0,12]]},"749":{"position":[[0,12]]},"792":{"position":[[0,12]]},"880":{"position":[[8,12]]}},"content":{"133":{"position":[[759,13]]},"175":{"position":[[24,12]]},"191":{"position":[[17,12]]},"199":{"position":[[334,12]]},"201":{"position":[[64,12],[139,13],[613,13]]},"229":{"position":[[851,12]]},"745":{"position":[[24,12]]},"750":{"position":[[64,12],[139,13],[614,13]]},"774":{"position":[[17,12]]},"782":{"position":[[334,12]]},"792":{"position":[[851,12]]}},"keywords":{}}],["archiv",{"_index":2589,"title":{},"content":{"340":{"position":[[163,7]]},"389":{"position":[[3404,9],[19228,9]]},"916":{"position":[[3404,9],[19228,9]]}},"keywords":{}}],["archives/netbase_5.3_all.deb",{"_index":3085,"title":{},"content":{"389":{"position":[[9720,32],[25438,32]]},"916":{"position":[[9720,32],[25438,32]]}},"keywords":{}}],["archivesfor",{"_index":1432,"title":{},"content":{"148":{"position":[[115,11],[198,11],[288,11]]},"718":{"position":[[115,11],[198,11],[288,11]]}},"keywords":{}}],["arg",{"_index":3719,"title":{},"content":{"553":{"position":[[437,3]]},"1079":{"position":[[437,3]]}},"keywords":{}}],["argument",{"_index":1549,"title":{},"content":{"156":{"position":[[1282,8]]},"570":{"position":[[295,8],[16039,9]]},"572":{"position":[[41,8]]},"726":{"position":[[1282,8]]},"1090":{"position":[[295,8],[16039,9]]},"1092":{"position":[[41,8]]}},"keywords":{}}],["armor",{"_index":2538,"title":{},"content":{"334":{"position":[[662,5],[1349,5]]},"342":{"position":[[131,5]]}},"keywords":{}}],["around",{"_index":1029,"title":{},"content":{"107":{"position":[[3521,6]]}},"keywords":{}}],["artifact",{"_index":1558,"title":{},"content":{"158":{"position":[[157,9]]},"173":{"position":[[24,9],[95,9]]},"181":{"position":[[444,9],[1871,9],[1914,10]]},"190":{"position":[[260,9]]},"215":{"position":[[251,9],[1572,9],[1668,9]]},"216":{"position":[[447,9]]},"281":{"position":[[55,10]]},"350":{"position":[[21,9]]},"352":{"position":[[534,9]]},"355":{"position":[[21,9]]},"578":{"position":[[359,9]]},"728":{"position":[[157,9]]},"743":{"position":[[24,9],[95,9]]},"764":{"position":[[444,9],[1884,9],[1927,10]]},"773":{"position":[[260,9]]},"785":{"position":[[251,9],[1572,9],[1668,9]]},"786":{"position":[[447,9]]},"852":{"position":[[55,10]]},"1034":{"position":[[80,9]]},"1104":{"position":[[359,9]]}},"keywords":{}}],["artifact.artifact_path",{"_index":3680,"title":{},"content":{"520":{"position":[[126,22]]}},"keywords":{}}],["artifact_path",{"_index":3674,"title":{"520":{"position":[[45,14]]},"1039":{"position":[[56,14]]}},"content":{},"keywords":{}}],["artifacts/examples/crd.yaml",{"_index":4237,"title":{},"content":{"869":{"position":[[960,27]]}},"keywords":{}}],["artifacts/examples/exampl",{"_index":4239,"title":{},"content":{"869":{"position":[[1066,26]]}},"keywords":{}}],["as_supervised=tru",{"_index":3340,"title":{},"content":{"415":{"position":[[679,19]]},"942":{"position":[[697,19]]}},"keywords":{}}],["asdock",{"_index":2673,"title":{},"content":{"369":{"position":[[510,9]]},"892":{"position":[[510,9]]}},"keywords":{}}],["asf",{"_index":1037,"title":{},"content":{"107":{"position":[[3879,3],[4840,3],[10220,3],[10456,3]]},"133":{"position":[[108,3],[2094,3]]},"139":{"position":[[416,3]]},"143":{"position":[[226,3]]},"316":{"position":[[246,3]]},"711":{"position":[[416,3]]}},"keywords":{}}],["asf.slack.com/submarin",{"_index":4210,"title":{},"content":{"713":{"position":[[107,23],[160,23]]}},"keywords":{}}],["asf/shared_invite/zt",{"_index":1406,"title":{},"content":{"143":{"position":[[124,20]]}},"keywords":{}}],["ask",{"_index":1674,"title":{},"content":{"162":{"position":[[854,6]]},"163":{"position":[[385,5]]},"331":{"position":[[2027,6]]},"334":{"position":[[967,5],[1662,5]]},"336":{"position":[[814,5]]},"732":{"position":[[854,6]]},"733":{"position":[[385,5]]}},"keywords":{}}],["askpass",{"_index":2903,"title":{},"content":{"389":{"position":[[2555,7],[18397,7]]},"916":{"position":[[2555,7],[18397,7]]}},"keywords":{}}],["asn1crypto=1.3.0=py37_0",{"_index":1890,"title":{},"content":{"188":{"position":[[250,23]]},"771":{"position":[[250,23]]}},"keywords":{}}],["asr/kaldi.git",{"_index":2745,"title":{},"content":{"375":{"position":[[868,13]]},"902":{"position":[[868,13]]}},"keywords":{}}],["assent’).lazi",{"_index":1110,"title":{},"content":{"107":{"position":[[7848,13]]}},"keywords":{}}],["asset",{"_index":1807,"title":{},"content":{"176":{"position":[[49,6],[492,6],[669,7]]},"229":{"position":[[124,5],[1208,5]]},"230":{"position":[[246,6]]},"746":{"position":[[49,6],[493,6],[670,7]]},"792":{"position":[[124,5],[1209,5]]},"793":{"position":[[246,6]]}},"keywords":{}}],["assign",{"_index":1207,"title":{},"content":{"122":{"position":[[341,8]]},"139":{"position":[[132,8]]},"176":{"position":[[782,6]]},"690":{"position":[[341,8]]},"711":{"position":[[132,8]]},"746":{"position":[[783,6]]}},"keywords":{}}],["assist",{"_index":1395,"title":{},"content":{"141":{"position":[[1719,6]]}},"keywords":{}}],["associ",{"_index":956,"title":{},"content":{"107":{"position":[[802,10]]},"565":{"position":[[143,10]]},"1085":{"position":[[143,10]]}},"keywords":{}}],["assum",{"_index":758,"title":{},"content":{"78":{"position":[[576,6]]},"189":{"position":[[44,6]]},"300":{"position":[[19,6]]},"402":{"position":[[0,8]]},"441":{"position":[[542,6]]},"677":{"position":[[576,6]]},"772":{"position":[[44,6]]},"867":{"position":[[19,6]]},"869":{"position":[[407,6]]},"929":{"position":[[0,8]]},"968":{"position":[[542,6]]}},"keywords":{}}],["assur",{"_index":1635,"title":{},"content":{"160":{"position":[[443,10]]},"730":{"position":[[443,10]]}},"keywords":{}}],["at",{"_index":1988,"title":{},"content":{"200":{"position":[[612,4]]},"783":{"position":[[612,4]]}},"keywords":{}}],["atf_conf",{"_index":3821,"title":{},"content":{"569":{"position":[[77,10]]},"1089":{"position":[[77,10]]}},"keywords":{}}],["athttps://github.com/apache/submarine/tree/master/dev",{"_index":1359,"title":{},"content":{"138":{"position":[[216,53]]},"710":{"position":[[216,53]]}},"keywords":{}}],["atomix",{"_index":2219,"title":{"274":{"position":[[0,6]]},"845":{"position":[[0,6]]}},"content":{"269":{"position":[[341,6]]},"270":{"position":[[579,6],[641,6]]},"274":{"position":[[290,6],[304,6]]},"840":{"position":[[341,6]]},"841":{"position":[[579,6],[641,6]]},"845":{"position":[[290,6],[304,6]]}},"keywords":{}}],["attach",{"_index":1354,"title":{"219":{"position":[[0,10]]},"789":{"position":[[0,10]]}},"content":{"137":{"position":[[328,8]]},"204":{"position":[[596,6]]},"210":{"position":[[245,6],[362,11]]},"219":{"position":[[41,10],[249,10],[486,10]]},"709":{"position":[[328,8]]},"753":{"position":[[596,6]]},"759":{"position":[[245,6],[362,11]]},"789":{"position":[[41,10],[249,10],[486,10]]}},"keywords":{}}],["attempt",{"_index":1327,"title":{},"content":{"136":{"position":[[51,7]]},"708":{"position":[[51,7]]}},"keywords":{}}],["attent",{"_index":2458,"title":{},"content":{"328":{"position":[[40,9]]},"331":{"position":[[12,9]]}},"keywords":{}}],["attribut",{"_index":783,"title":{},"content":{"83":{"position":[[530,13]]},"84":{"position":[[2661,13]]},"93":{"position":[[140,12]]},"94":{"position":[[152,12]]},"95":{"position":[[297,12]]},"96":{"position":[[157,12]]},"97":{"position":[[205,12]]},"98":{"position":[[319,15]]},"100":{"position":[[1185,15]]},"101":{"position":[[929,15]]},"102":{"position":[[918,15]]},"103":{"position":[[984,13]]},"105":{"position":[[372,15]]},"106":{"position":[[304,15]]},"109":{"position":[[369,15]]},"110":{"position":[[130,12]]},"111":{"position":[[150,12]]},"112":{"position":[[253,12]]},"113":{"position":[[155,12]]},"114":{"position":[[297,15]]},"115":{"position":[[191,12]]},"423":{"position":[[1168,15]]},"425":{"position":[[1367,15]]},"428":{"position":[[734,15]]},"431":{"position":[[873,15]]},"434":{"position":[[734,17]]},"438":{"position":[[1645,15]]},"441":{"position":[[1737,15]]},"443":{"position":[[2219,15]]},"446":{"position":[[1154,15]]},"449":{"position":[[1676,15]]},"452":{"position":[[1157,15]]},"454":{"position":[[323,15]]},"457":{"position":[[350,15]]},"461":{"position":[[3042,15]]},"463":{"position":[[2045,15]]},"466":{"position":[[3066,15]]},"469":{"position":[[2062,15]]},"472":{"position":[[1335,15]]},"479":{"position":[[1181,15]]},"482":{"position":[[929,15]]},"485":{"position":[[916,15]]},"488":{"position":[[946,15]]},"682":{"position":[[530,13]]},"683":{"position":[[2661,13]]},"702":{"position":[[1185,15]]},"703":{"position":[[929,15]]},"704":{"position":[[918,15]]},"705":{"position":[[984,13]]},"950":{"position":[[1168,15]]},"952":{"position":[[1367,15]]},"955":{"position":[[734,15]]},"958":{"position":[[873,15]]},"961":{"position":[[734,17]]},"965":{"position":[[1645,15]]},"968":{"position":[[1737,15]]},"970":{"position":[[2219,15]]},"973":{"position":[[1154,15]]},"976":{"position":[[1676,15]]},"979":{"position":[[1157,15]]},"981":{"position":[[323,15]]},"984":{"position":[[350,15]]},"988":{"position":[[3042,15]]},"990":{"position":[[2045,15]]},"993":{"position":[[3066,15]]},"996":{"position":[[2062,15]]},"999":{"position":[[1335,15]]},"1011":{"position":[[1181,15]]},"1014":{"position":[[929,15]]},"1017":{"position":[[916,15]]},"1020":{"position":[[946,15]]}},"keywords":{}}],["auc",{"_index":1772,"title":{},"content":{"171":{"position":[[1711,5]]},"199":{"position":[[643,5]]},"741":{"position":[[1723,5]]},"782":{"position":[[643,5]]}},"keywords":{}}],["audit",{"_index":554,"title":{},"content":{"31":{"position":[[557,6]]},"623":{"position":[[557,6]]},"1064":{"position":[[938,9]]}},"keywords":{}}],["audit.xml",{"_index":4330,"title":{},"content":{"1064":{"position":[[853,9]]}},"keywords":{}}],["authent",{"_index":273,"title":{},"content":{"17":{"position":[[434,14]]},"213":{"position":[[290,14]]},"230":{"position":[[652,15]]},"389":{"position":[[15657,14]]},"609":{"position":[[434,14]]},"762":{"position":[[290,14]]},"793":{"position":[[652,15]]},"916":{"position":[[15657,14]]}},"keywords":{}}],["author",{"_index":548,"title":{},"content":{"31":{"position":[[425,9]]},"86":{"position":[[126,9],[136,9]]},"89":{"position":[[119,9],[129,7],[1160,8]]},"136":{"position":[[223,9]]},"141":{"position":[[1969,9]]},"199":{"position":[[836,7]]},"460":{"position":[[91,6],[110,6]]},"461":{"position":[[94,9],[104,9]]},"465":{"position":[[100,6],[119,6]]},"466":{"position":[[95,9],[105,7]]},"623":{"position":[[425,9]]},"669":{"position":[[126,9],[136,9]]},"672":{"position":[[119,9],[129,7],[1160,8]]},"708":{"position":[[223,9]]},"782":{"position":[[836,7]]},"888":{"position":[[8,13]]},"987":{"position":[[91,6],[110,6]]},"988":{"position":[[94,9],[104,9]]},"992":{"position":[[100,6],[119,6]]},"993":{"position":[[95,9],[105,7]]},"1064":{"position":[[1872,13],[1920,13]]}},"keywords":{}}],["author\":\"author",{"_index":3495,"title":{},"content":{"461":{"position":[[1270,18]]},"463":{"position":[[272,18]]},"466":{"position":[[1296,16]]},"469":{"position":[[292,16]]},"988":{"position":[[1270,18]]},"990":{"position":[[272,18]]},"993":{"position":[[1296,16]]},"996":{"position":[[292,16]]}},"keywords":{}}],["auto",{"_index":1781,"title":{},"content":{"171":{"position":[[2016,4]]},"389":{"position":[[13479,4],[15193,4],[15453,4],[29028,4],[30742,4],[31002,4]]},"507":{"position":[[225,4]]},"741":{"position":[[2028,4]]},"916":{"position":[[13479,4],[15193,4],[15453,4],[29028,4],[30742,4],[31002,4]]},"1046":{"position":[[225,4]]}},"keywords":{}}],["autoconf",{"_index":2728,"title":{},"content":{"375":{"position":[[597,8]]},"902":{"position":[[597,8]]}},"keywords":{}}],["autoformat",{"_index":3608,"title":{},"content":{"509":{"position":[[113,10]]},"1048":{"position":[[113,10]]}},"keywords":{}}],["autoipd",{"_index":2900,"title":{},"content":{"389":{"position":[[2513,7],[18355,7]]},"916":{"position":[[2513,7],[18355,7]]}},"keywords":{}}],["automak",{"_index":2727,"title":{},"content":{"375":{"position":[[586,8]]},"902":{"position":[[586,8]]}},"keywords":{}}],["automat",{"_index":227,"title":{},"content":{"15":{"position":[[244,14]]},"16":{"position":[[20,13]]},"122":{"position":[[363,14]]},"212":{"position":[[587,13]]},"219":{"position":[[174,13]]},"249":{"position":[[101,13],[203,13]]},"252":{"position":[[239,13]]},"321":{"position":[[63,14]]},"326":{"position":[[59,14]]},"332":{"position":[[430,13]]},"607":{"position":[[244,14]]},"608":{"position":[[20,13]]},"690":{"position":[[363,14]]},"761":{"position":[[587,13]]},"789":{"position":[[174,13]]},"819":{"position":[[101,13],[203,13]]},"822":{"position":[[244,13]]},"878":{"position":[[63,14]]},"896":{"position":[[59,14]]}},"keywords":{}}],["automatically.aft",{"_index":1251,"title":{},"content":{"131":{"position":[[82,19]]},"699":{"position":[[82,19]]}},"keywords":{}}],["automl",{"_index":1780,"title":{},"content":{"171":{"position":[[2008,7]]},"194":{"position":[[142,7]]},"741":{"position":[[2020,7]]},"777":{"position":[[142,7]]}},"keywords":{}}],["avahi",{"_index":2899,"title":{},"content":{"389":{"position":[[2507,5],[18349,5]]},"916":{"position":[[2507,5],[18349,5]]}},"keywords":{}}],["avail",{"_index":2162,"title":{"257":{"position":[[29,12]]},"828":{"position":[[29,12]]}},"content":{"246":{"position":[[408,13]]},"259":{"position":[[436,12],[628,12],[695,12]]},"265":{"position":[[66,9]]},"314":{"position":[[470,10]]},"339":{"position":[[403,10]]},"352":{"position":[[548,9]]},"553":{"position":[[1169,9]]},"816":{"position":[[408,13]]},"830":{"position":[[436,12],[628,12],[695,12]]},"836":{"position":[[66,9]]},"1053":{"position":[[410,9]]},"1079":{"position":[[1169,9]]}},"keywords":{}}],["averag",{"_index":2253,"title":{},"content":{"273":{"position":[[1023,7]]},"844":{"position":[[1023,7]]}},"keywords":{}}],["avoid",{"_index":1944,"title":{},"content":{"194":{"position":[[479,5]]},"200":{"position":[[2681,5]]},"273":{"position":[[921,5]]},"283":{"position":[[53,5]]},"369":{"position":[[237,5]]},"398":{"position":[[135,5]]},"777":{"position":[[485,5]]},"783":{"position":[[2681,5]]},"844":{"position":[[921,5]]},"854":{"position":[[53,5]]},"892":{"position":[[237,5]]},"925":{"position":[[135,5]]}},"keywords":{}}],["aw",{"_index":2177,"title":{"254":{"position":[[12,3]]},"825":{"position":[[12,3]]}},"content":{"251":{"position":[[153,3]]},"821":{"position":[[160,3]]}},"keywords":{}}],["aw:8042/node/containerlogs/container_1555916523933_0030_01_000002/pi",{"_index":4145,"title":{},"content":{"579":{"position":[[1555,68],[1714,68],[2189,68]]},"584":{"position":[[1415,68],[1574,68],[2049,68]]},"1105":{"position":[[1555,68],[1714,68],[2189,68]]},"1110":{"position":[[1415,68],[1574,68],[2049,68]]}},"keywords":{}}],["aw:8042/node/containerlogs/container_1555916523933_0030_01_000003/pi",{"_index":4142,"title":{},"content":{"579":{"position":[[1157,68],[1861,68],[2391,68]]},"584":{"position":[[1017,68],[1721,68],[2251,68]]},"1105":{"position":[[1157,68],[1861,68],[2391,68]]},"1110":{"position":[[1017,68],[1721,68],[2251,68]]}},"keywords":{}}],["aw:8042/node/containerlogs/container_1555916523933_0030_01_000004/pi",{"_index":4144,"title":{},"content":{"579":{"position":[[1358,68],[2008,68],[2593,68]]},"584":{"position":[[1218,68],[1868,68],[2453,68]]},"1105":{"position":[[1358,68],[2008,68],[2593,68]]},"1110":{"position":[[1218,68],[1868,68],[2453,68]]}},"keywords":{}}],["aw:8042/node/containerlogs/container_1587037749540_0005_01_000002/pi",{"_index":4196,"title":{},"content":{"589":{"position":[[2123,68],[2289,68],[3066,68]]},"1115":{"position":[[2123,68],[2289,68],[3066,68]]}},"keywords":{}}],["aw:8042/node/containerlogs/container_1587037749540_0005_01_000003/pi",{"_index":4193,"title":{},"content":{"589":{"position":[[1514,68],[2436,68],[3882,68]]},"1115":{"position":[[1514,68],[2436,68],[3882,68]]}},"keywords":{}}],["aw:8042/node/containerlogs/container_1587037749540_0005_01_000004/pi",{"_index":4192,"title":{},"content":{"589":{"position":[[1312,68],[2583,68],[3474,68]]},"1115":{"position":[[1312,68],[2583,68],[3474,68]]}},"keywords":{}}],["aw:8042/node/containerlogs/container_1587037749540_0005_01_000005/pi",{"_index":4195,"title":{},"content":{"589":{"position":[[1918,68],[2730,68],[3270,68]]},"1115":{"position":[[1918,68],[2730,68],[3270,68]]}},"keywords":{}}],["aw:8042/node/containerlogs/container_1587037749540_0005_01_000006/pi",{"_index":4194,"title":{},"content":{"589":{"position":[[1716,68],[2877,68],[3678,68]]},"1115":{"position":[[1716,68],[2877,68],[3678,68]]}},"keywords":{}}],["aw:9000/dataset/cifar",{"_index":4150,"title":{},"content":{"580":{"position":[[355,21]]},"1106":{"position":[[355,21]]}},"keywords":{}}],["azur",{"_index":1451,"title":{"256":{"position":[[12,5]]},"827":{"position":[[12,5]]}},"content":{"151":{"position":[[273,5]]},"251":{"position":[[165,6]]},"721":{"position":[[273,5]]},"821":{"position":[[172,6]]}},"keywords":{}}],["b",{"_index":1216,"title":{},"content":{"123":{"position":[[186,1],[238,1]]},"325":{"position":[[513,1]]},"389":{"position":[[3864,2],[4941,2],[19688,2],[20765,2]]},"553":{"position":[[804,1]]},"691":{"position":[[186,1],[238,1]]},"895":{"position":[[513,1]]},"916":{"position":[[3864,2],[4941,2],[19688,2],[20765,2]]},"1079":{"position":[[804,1]]}},"keywords":{}}],["b6cd4787b",{"_index":103,"title":{},"content":{"7":{"position":[[329,9]]},"596":{"position":[[329,9]]}},"keywords":{}}],["back",{"_index":1729,"title":{},"content":{"170":{"position":[[171,4]]},"196":{"position":[[1049,4]]},"217":{"position":[[302,4]]},"248":{"position":[[301,4]]},"314":{"position":[[1235,4]]},"740":{"position":[[171,4]]},"779":{"position":[[1054,4]]},"787":{"position":[[302,4]]},"818":{"position":[[301,4]]}},"keywords":{}}],["back.w",{"_index":2049,"title":{},"content":{"215":{"position":[[1884,7]]},"785":{"position":[[1884,7]]}},"keywords":{}}],["backend",{"_index":767,"title":{},"content":{"79":{"position":[[1128,7]]},"229":{"position":[[94,8],[704,7]]},"678":{"position":[[1128,7]]},"792":{"position":[[94,8],[704,7]]}},"keywords":{}}],["backend\\ndownload",{"_index":786,"title":{},"content":{"84":{"position":[[399,20],[1576,20]]},"683":{"position":[[399,20],[1576,20]]}},"keywords":{}}],["background",{"_index":950,"title":{"159":{"position":[[0,10]]},"729":{"position":[[0,10]]}},"content":{"107":{"position":[[445,10]]}},"keywords":{}}],["bad",{"_index":1974,"title":{},"content":{"198":{"position":[[161,4]]},"781":{"position":[[161,4]]}},"keywords":{}}],["bas",{"_index":624,"title":{},"content":{"35":{"position":[[1346,4]]},"55":{"position":[[637,4]]},"107":{"position":[[9526,4]]},"145":{"position":[[61,5]]},"151":{"position":[[295,4],[702,4],[771,4],[1669,4],[1939,4]]},"154":{"position":[[526,4]]},"156":{"position":[[455,4]]},"162":{"position":[[720,5]]},"172":{"position":[[234,4]]},"176":{"position":[[1440,5]]},"181":{"position":[[802,4]]},"193":{"position":[[49,5]]},"200":{"position":[[1082,5]]},"212":{"position":[[503,4]]},"213":{"position":[[284,5]]},"230":{"position":[[917,5]]},"269":{"position":[[128,5]]},"301":{"position":[[241,5]]},"368":{"position":[[29,5],[298,5]]},"375":{"position":[[47,4],[91,4],[353,4]]},"377":{"position":[[242,4],[294,4]]},"386":{"position":[[100,5]]},"389":{"position":[[15965,5],[16041,5],[16101,5]]},"549":{"position":[[49,4],[93,4],[334,4]]},"551":{"position":[[160,4],[238,4],[290,4]]},"553":{"position":[[51,4],[97,4],[340,4]]},"556":{"position":[[164,4],[218,4]]},"559":{"position":[[52,4],[101,4],[340,4]]},"562":{"position":[[127,4],[184,4],[228,4]]},"627":{"position":[[1346,4]]},"647":{"position":[[637,4]]},"715":{"position":[[61,5]]},"721":{"position":[[295,4],[702,4],[771,4],[1669,4],[1939,4]]},"724":{"position":[[526,4]]},"726":{"position":[[455,4]]},"732":{"position":[[720,5]]},"742":{"position":[[234,4]]},"746":{"position":[[1443,5]]},"761":{"position":[[503,4]]},"762":{"position":[[284,5]]},"764":{"position":[[802,4]]},"776":{"position":[[49,5]]},"783":{"position":[[1082,5]]},"793":{"position":[[917,5]]},"840":{"position":[[128,5]]},"868":{"position":[[225,5]]},"891":{"position":[[29,5],[298,5]]},"902":{"position":[[47,4],[91,4],[353,4]]},"904":{"position":[[242,4],[294,4]]},"913":{"position":[[100,5]]},"916":{"position":[[15965,5],[16041,5],[16101,5]]},"1075":{"position":[[49,4],[93,4],[334,4]]},"1077":{"position":[[160,4],[238,4],[290,4]]},"1079":{"position":[[51,4],[97,4],[340,4]]},"1082":{"position":[[164,4],[218,4]]},"1094":{"position":[[52,4],[101,4],[340,4]]},"1097":{"position":[[127,4],[184,4],[228,4]]}},"keywords":{}}],["base/ubuntu",{"_index":2759,"title":{},"content":{"376":{"position":[[86,12]]},"903":{"position":[[86,12]]}},"keywords":{}}],["base:0.0.1",{"_index":2766,"title":{},"content":{"377":{"position":[[227,10],[477,10]]},"387":{"position":[[104,10]]},"389":{"position":[[1066,10]]},"551":{"position":[[145,10],[223,10]]},"556":{"position":[[149,10]]},"557":{"position":[[100,10]]},"562":{"position":[[112,10],[213,10]]},"904":{"position":[[227,10],[477,10]]},"914":{"position":[[104,10]]},"916":{"position":[[1066,10]]},"1077":{"position":[[145,10],[223,10]]},"1082":{"position":[[149,10]]},"1083":{"position":[[100,10]]},"1097":{"position":[[112,10],[213,10]]}},"keywords":{}}],["bash",{"_index":202,"title":{},"content":{"14":{"position":[[81,4]]},"28":{"position":[[412,4]]},"389":{"position":[[1360,4]]},"508":{"position":[[192,4]]},"546":{"position":[[412,4]]},"606":{"position":[[81,4]]},"616":{"position":[[412,4]]},"916":{"position":[[1360,4]]},"1047":{"position":[[192,4]]},"1072":{"position":[[412,4]]}},"keywords":{}}],["basic",{"_index":1855,"title":{},"content":{"181":{"position":[[1575,5]]},"200":{"position":[[935,10]]},"566":{"position":[[513,9]]},"569":{"position":[[662,9],[1081,9]]},"764":{"position":[[1582,5]]},"783":{"position":[[935,10]]},"1086":{"position":[[513,9]]},"1089":{"position":[[662,9],[1081,9]]}},"keywords":{}}],["batch",{"_index":392,"title":{},"content":{"23":{"position":[[987,5],[1009,5]]},"181":{"position":[[2014,5]]},"199":{"position":[[1248,5],[1280,5]]},"259":{"position":[[572,6]]},"541":{"position":[[987,5],[1009,5]]},"580":{"position":[[669,5],[691,5]]},"611":{"position":[[987,5],[1009,5]]},"764":{"position":[[2027,5]]},"782":{"position":[[1248,5],[1280,5]]},"830":{"position":[[572,6]]},"1036":{"position":[[6,5]]},"1067":{"position":[[987,5],[1009,5]]},"1106":{"position":[[669,5],[691,5]]}},"keywords":{}}],["batch_siz",{"_index":830,"title":{},"content":{"86":{"position":[[338,13],[408,10]]},"89":{"position":[[335,13],[405,10]]},"156":{"position":[[1048,10]]},"171":{"position":[[1734,12]]},"189":{"position":[[1467,13]]},"199":{"position":[[666,12]]},"415":{"position":[[1524,10]]},"461":{"position":[[306,13],[376,10],[1535,10]]},"463":{"position":[[537,10]]},"466":{"position":[[311,13],[381,10],[1565,10]]},"469":{"position":[[561,10]]},"669":{"position":[[338,13],[408,10]]},"672":{"position":[[335,13],[405,10]]},"726":{"position":[[1048,10]]},"741":{"position":[[1746,12]]},"772":{"position":[[1467,13]]},"782":{"position":[[666,12]]},"942":{"position":[[1542,10]]},"988":{"position":[[306,13],[376,10],[1535,10]]},"990":{"position":[[537,10]]},"993":{"position":[[311,13],[381,10],[1565,10]]},"996":{"position":[[561,10]]}},"keywords":{}}],["batch_size\":\"150",{"_index":843,"title":{},"content":{"91":{"position":[[169,19]]},"472":{"position":[[118,19]]},"674":{"position":[[169,19]]},"999":{"position":[[118,19]]}},"keywords":{}}],["batch_size=150",{"_index":729,"title":{},"content":{"77":{"position":[[279,16],[1037,16]]},"78":{"position":[[279,16],[1184,16]]},"79":{"position":[[546,16]]},"80":{"position":[[579,16]]},"81":{"position":[[287,16],[890,16]]},"82":{"position":[[582,16]]},"223":{"position":[[358,15]]},"438":{"position":[[245,16]]},"441":{"position":[[245,16]]},"449":{"position":[[246,16]]},"496":{"position":[[464,16]]},"497":{"position":[[471,16]]},"676":{"position":[[279,16],[1037,16]]},"677":{"position":[[279,16],[1184,16]]},"678":{"position":[[546,16]]},"679":{"position":[[579,16]]},"680":{"position":[[287,16],[890,16]]},"681":{"position":[[582,16]]},"808":{"position":[[358,15]]},"965":{"position":[[245,16]]},"968":{"position":[[245,16]]},"976":{"position":[[246,16]]},"1023":{"position":[[464,16]]},"1024":{"position":[[471,16]]}},"keywords":{}}],["batch_size=20",{"_index":3559,"title":{},"content":{"492":{"position":[[227,15]]},"1006":{"position":[[227,15]]}},"keywords":{}}],["batch_size={{batch_s",{"_index":836,"title":{},"content":{"86":{"position":[[691,27]]},"89":{"position":[[688,27]]},"461":{"position":[[659,27]]},"466":{"position":[[664,27]]},"669":{"position":[[691,27]]},"672":{"position":[[688,27]]},"988":{"position":[[659,27]]},"993":{"position":[[664,27]]}},"keywords":{}}],["batch_size\\u003d150",{"_index":3445,"title":{},"content":{"438":{"position":[[1083,21]]},"441":{"position":[[1203,21]]},"443":{"position":[[676,21],[1684,21]]},"446":{"position":[[620,21]]},"449":{"position":[[1114,21]]},"452":{"position":[[595,21]]},"472":{"position":[[774,21]]},"965":{"position":[[1083,21]]},"968":{"position":[[1203,21]]},"970":{"position":[[676,21],[1684,21]]},"973":{"position":[[620,21]]},"976":{"position":[[1114,21]]},"979":{"position":[[595,21]]},"999":{"position":[[774,21]]}},"keywords":{}}],["batch_size\\u003d{{batch_s",{"_index":3516,"title":{},"content":{"461":{"position":[[2462,32]]},"463":{"position":[[1464,32]]},"466":{"position":[[2492,32]]},"469":{"position":[[1488,32]]},"988":{"position":[[2462,32]]},"990":{"position":[[1464,32]]},"993":{"position":[[2492,32]]},"996":{"position":[[1488,32]]}},"keywords":{}}],["batch_size_per_replica",{"_index":3361,"title":{},"content":{"415":{"position":[[1497,22],[1537,22]]},"942":{"position":[[1515,22],[1555,22]]}},"keywords":{}}],["bbb",{"_index":2635,"title":{},"content":{"352":{"position":[[290,3]]},"357":{"position":[[402,3]]}},"keywords":{}}],["bc66",{"_index":896,"title":{},"content":{"100":{"position":[[570,4]]},"101":{"position":[[312,4]]},"102":{"position":[[305,4]]},"103":{"position":[[322,4]]},"702":{"position":[[570,4]]},"703":{"position":[[312,4]]},"704":{"position":[[305,4]]},"705":{"position":[[322,4]]}},"keywords":{}}],["bdist_wheel",{"_index":3655,"title":{},"content":{"513":{"position":[[341,11]]},"1052":{"position":[[341,11]]}},"keywords":{}}],["be",{"_index":1446,"title":{},"content":{"151":{"position":[[94,5]]},"172":{"position":[[94,5]]},"275":{"position":[[231,5]]},"336":{"position":[[808,5]]},"721":{"position":[[94,5]]},"742":{"position":[[94,5]]},"846":{"position":[[231,5]]}},"keywords":{}}],["becam",{"_index":1036,"title":{},"content":{"107":{"position":[[3797,6]]}},"keywords":{}}],["becom",{"_index":980,"title":{"133":{"position":[[7,6]]},"141":{"position":[[22,8]]},"145":{"position":[[9,6]]},"715":{"position":[[9,6]]}},"content":{"107":{"position":[[1624,6],[3002,6]]},"133":{"position":[[374,6],[716,8],[2383,6]]},"139":{"position":[[125,6]]},"141":{"position":[[2196,7]]},"144":{"position":[[304,6]]},"145":{"position":[[299,8],[474,6]]},"159":{"position":[[260,7],[1415,7]]},"711":{"position":[[125,6]]},"714":{"position":[[304,6]]},"715":{"position":[[299,8]]},"729":{"position":[[260,7],[1415,7]]}},"keywords":{}}],["befor",{"_index":1027,"title":{},"content":{"107":{"position":[[3457,6]]},"127":{"position":[[111,6]]},"136":{"position":[[701,6]]},"156":{"position":[[1335,6]]},"161":{"position":[[845,6]]},"182":{"position":[[740,6]]},"188":{"position":[[0,6]]},"201":{"position":[[0,6]]},"217":{"position":[[1025,6]]},"300":{"position":[[0,6]]},"307":{"position":[[49,6]]},"324":{"position":[[183,6]]},"334":{"position":[[860,7],[1551,7]]},"339":{"position":[[0,6]]},"509":{"position":[[351,6]]},"510":{"position":[[282,6]]},"511":{"position":[[1194,6]]},"553":{"position":[[1130,6]]},"695":{"position":[[111,6]]},"708":{"position":[[701,6]]},"726":{"position":[[1335,6]]},"731":{"position":[[845,6]]},"750":{"position":[[0,6]]},"765":{"position":[[740,6]]},"771":{"position":[[0,6]]},"787":{"position":[[1025,6]]},"867":{"position":[[0,6]]},"869":{"position":[[388,6]]},"873":{"position":[[49,6]]},"894":{"position":[[183,6]]},"1048":{"position":[[351,6]]},"1049":{"position":[[282,6]]},"1079":{"position":[[1130,6]]}},"keywords":{}}],["begin",{"_index":1949,"title":{},"content":{"194":{"position":[[1057,10]]},"312":{"position":[[0,5]]},"777":{"position":[[1337,10]]}},"keywords":{}}],["behalf",{"_index":1043,"title":{},"content":{"107":{"position":[[4233,6],[6380,6]]}},"keywords":{}}],["believ",{"_index":1331,"title":{},"content":{"136":{"position":[[237,7]]},"708":{"position":[[237,7]]}},"keywords":{}}],["belong",{"_index":914,"title":{"101":{"position":[[30,6]]},"480":{"position":[[30,6]]},"703":{"position":[[30,6]]},"1012":{"position":[[30,6]]}},"content":{"158":{"position":[[107,7]]},"176":{"position":[[56,6],[499,6]]},"204":{"position":[[693,7]]},"728":{"position":[[107,7]]},"746":{"position":[[56,6],[500,6]]},"753":{"position":[[693,7]]}},"keywords":{}}],["below",{"_index":78,"title":{"258":{"position":[[0,5]]},"829":{"position":[[0,5]]}},"content":{"7":{"position":[[38,5],[502,5]]},"153":{"position":[[623,6]]},"175":{"position":[[46,6]]},"181":{"position":[[202,6],[1430,6]]},"187":{"position":[[139,5]]},"188":{"position":[[166,6]]},"201":{"position":[[683,5]]},"216":{"position":[[613,5]]},"224":{"position":[[88,6]]},"225":{"position":[[92,6]]},"226":{"position":[[384,6]]},"229":{"position":[[921,6]]},"350":{"position":[[374,6]]},"384":{"position":[[177,5]]},"386":{"position":[[83,5]]},"406":{"position":[[324,6],[857,5]]},"407":{"position":[[134,6]]},"474":{"position":[[155,5]]},"510":{"position":[[84,6]]},"565":{"position":[[162,5]]},"575":{"position":[[30,6]]},"578":{"position":[[572,5]]},"596":{"position":[[38,5],[502,5]]},"723":{"position":[[623,6]]},"745":{"position":[[46,6]]},"750":{"position":[[684,5]]},"764":{"position":[[202,6],[1437,6]]},"770":{"position":[[139,5]]},"771":{"position":[[166,6]]},"786":{"position":[[613,5]]},"792":{"position":[[921,6]]},"809":{"position":[[88,6]]},"810":{"position":[[113,6]]},"811":{"position":[[384,6]]},"911":{"position":[[177,5]]},"913":{"position":[[83,5]]},"933":{"position":[[324,6]]},"934":{"position":[[134,6]]},"1001":{"position":[[155,5]]},"1049":{"position":[[84,6]]},"1050":{"position":[[118,5]]},"1085":{"position":[[162,5]]},"1101":{"position":[[30,6]]},"1104":{"position":[[572,5]]}},"keywords":{}}],["benchmark",{"_index":2807,"title":{},"content":{"386":{"position":[[20,9]]},"913":{"position":[[20,9]]}},"keywords":{}}],["benefici",{"_index":1302,"title":{},"content":{"133":{"position":[[2011,10]]}},"keywords":{}}],["bert",{"_index":1746,"title":{},"content":{"171":{"position":[[797,5]]},"741":{"position":[[802,5]]}},"keywords":{}}],["best",{"_index":1282,"title":{},"content":{"133":{"position":[[1238,4]]},"136":{"position":[[634,4]]},"153":{"position":[[416,4]]},"334":{"position":[[753,4],[1440,4]]},"708":{"position":[[634,4]]},"723":{"position":[[416,4]]}},"keywords":{}}],["beta",{"_index":4295,"title":{"1039":{"position":[[0,6]]},"1040":{"position":[[0,6]]},"1041":{"position":[[0,6]]},"1042":{"position":[[0,6]]}},"content":{},"keywords":{}}],["beta8/aio/deploy/recommended.yaml",{"_index":3207,"title":{},"content":{"393":{"position":[[131,33]]},"920":{"position":[[131,33]]}},"keywords":{}}],["bett",{"_index":1351,"title":{},"content":{"137":{"position":[[196,6]]},"165":{"position":[[431,6]]},"187":{"position":[[3,6]]},"188":{"position":[[620,6]]},"212":{"position":[[249,6]]},"246":{"position":[[451,6]]},"248":{"position":[[445,6]]},"331":{"position":[[78,6],[187,6],[1705,6],[1961,6]]},"398":{"position":[[40,6]]},"709":{"position":[[196,6]]},"735":{"position":[[431,6]]},"761":{"position":[[249,6]]},"770":{"position":[[3,6]]},"771":{"position":[[620,6]]},"816":{"position":[[451,6]]},"818":{"position":[[445,6]]},"925":{"position":[[40,6]]}},"keywords":{}}],["betwe",{"_index":1647,"title":{},"content":{"161":{"position":[[434,7],[904,7]]},"190":{"position":[[64,7]]},"249":{"position":[[243,7]]},"322":{"position":[[76,7]]},"331":{"position":[[726,7]]},"475":{"position":[[500,7]]},"503":{"position":[[124,7]]},"731":{"position":[[434,7],[904,7]]},"773":{"position":[[64,7]]},"819":{"position":[[243,7]]},"879":{"position":[[76,7]]},"1002":{"position":[[500,7]]},"1030":{"position":[[124,7]]}},"keywords":{}}],["big",{"_index":1612,"title":{},"content":{"159":{"position":[[2547,3]]},"259":{"position":[[483,3],[644,3]]},"729":{"position":[[2547,3]]},"830":{"position":[[483,3],[644,3]]}},"keywords":{}}],["bigg",{"_index":1313,"title":{},"content":{"133":{"position":[[2800,6]]}},"keywords":{}}],["bill",{"_index":3804,"title":{},"content":{"568":{"position":[[264,8]]},"1088":{"position":[[264,8]]}},"keywords":{}}],["bin.tar.gz",{"_index":2396,"title":{},"content":{"314":{"position":[[2288,10],[2413,10]]},"315":{"position":[[393,10],[469,10]]},"341":{"position":[[431,10]]}},"keywords":{}}],["bin.tar.gz.asc",{"_index":2395,"title":{},"content":{"314":{"position":[[2230,14],[2355,14]]}},"keywords":{}}],["bin/csh",{"_index":3160,"title":{},"content":{"389":{"position":[[15435,8],[30984,8]]},"916":{"position":[[15435,8],[30984,8]]}},"keywords":{}}],["bin/mt",{"_index":3125,"title":{},"content":{"389":{"position":[[13440,7],[13463,7],[28989,7],[29012,7]]},"916":{"position":[[13440,7],[13463,7],[28989,7],[29012,7]]}},"keywords":{}}],["bin/submarin",{"_index":214,"title":{},"content":{"15":{"position":[[13,15],[272,15]]},"607":{"position":[[13,15],[272,15]]}},"keywords":{}}],["bin/tcsh",{"_index":3159,"title":{},"content":{"389":{"position":[[15414,9],[30963,9]]},"916":{"position":[[15414,9],[30963,9]]}},"keywords":{}}],["bin_1.09",{"_index":3067,"title":{},"content":{"389":{"position":[[7979,8],[23697,8]]},"916":{"position":[[7979,8],[23697,8]]}},"keywords":{}}],["binari",{"_index":2279,"title":{"283":{"position":[[23,6]]},"317":{"position":[[14,6],[37,6]]},"341":{"position":[[13,6]]},"853":{"position":[[23,6]]},"854":{"position":[[23,6]]}},"content":{"313":{"position":[[75,6],[273,6]]},"314":{"position":[[2079,6],[2147,6]]},"315":{"position":[[250,6],[312,6]]},"328":{"position":[[97,6],[169,6]]},"341":{"position":[[509,6]]},"372":{"position":[[74,6],[621,6],[892,6],[1136,6],[1354,6]]},"391":{"position":[[428,6],[473,6]]},"853":{"position":[[92,6],[182,6],[283,6],[386,6],[487,6]]},"899":{"position":[[74,6],[345,6],[589,6],[807,6]]},"918":{"position":[[428,6],[473,6]]}},"keywords":{}}],["bind",{"_index":991,"title":{},"content":{"107":{"position":[[1891,7],[2661,7],[7184,8],[7197,7],[7243,7],[7386,8],[7740,7],[7764,7],[7905,7],[7931,7],[8088,7],[8295,7],[8762,7]]},"171":{"position":[[478,4]]},"335":{"position":[[135,4]]},"352":{"position":[[1390,8],[1430,8]]},"741":{"position":[[478,4]]}},"keywords":{}}],["bit",{"_index":1707,"title":{"167":{"position":[[9,3]]},"737":{"position":[[9,3]]}},"content":{"331":{"position":[[748,4],[841,4]]}},"keywords":{}}],["black",{"_index":3605,"title":{},"content":{"509":{"position":[[41,5]]},"1048":{"position":[[41,5]]}},"keywords":{}}],["blacklist",{"_index":2924,"title":{},"content":{"389":{"position":[[2828,9],[18670,9]]},"916":{"position":[[2828,9],[18670,9]]}},"keywords":{}}],["blank",{"_index":656,"title":{},"content":{"35":{"position":[[3285,5]]},"55":{"position":[[1474,26]]},"627":{"position":[[3285,5]]},"647":{"position":[[1474,26]]}},"keywords":{}}],["blank:creat",{"_index":655,"title":{},"content":{"35":{"position":[[3270,12]]},"627":{"position":[[3270,12]]}},"keywords":{}}],["blas=1.0=mkl",{"_index":1891,"title":{},"content":{"188":{"position":[[276,12]]},"771":{"position":[[276,12]]}},"keywords":{}}],["blob",{"_index":2061,"title":{},"content":{"216":{"position":[[130,4],[240,4],[362,4],[539,4]]},"786":{"position":[[130,4],[240,4],[362,4],[539,4]]}},"keywords":{}}],["block",{"_index":1578,"title":{},"content":{"159":{"position":[[704,6],[1996,7],[2642,6]]},"197":{"position":[[320,6]]},"534":{"position":[[86,8],[102,8]]},"729":{"position":[[704,6],[1996,7],[2642,6]]},"780":{"position":[[327,6]]}},"keywords":{}}],["blog",{"_index":1300,"title":{},"content":{"133":{"position":[[1913,5]]},"216":{"position":[[676,4]]},"786":{"position":[[676,4]]}},"keywords":{}}],["board",{"_index":1032,"title":{},"content":{"107":{"position":[[3736,5],[3865,5],[4844,6],[4988,5],[5093,5],[5458,6],[10224,5],[10460,5]]}},"keywords":{}}],["bodi",{"_index":3393,"title":{},"content":{"422":{"position":[[31,5]]},"430":{"position":[[51,4],[93,4],[139,4],[181,4]]},"437":{"position":[[30,5]]},"440":{"position":[[30,5]]},"448":{"position":[[80,4],[151,4],[233,4],[266,4]]},"460":{"position":[[42,4],[105,4],[142,4],[232,4],[306,4]]},"465":{"position":[[51,4],[114,4],[151,4],[241,4],[315,4]]},"471":{"position":[[94,4],[152,4]]},"478":{"position":[[24,5]]},"949":{"position":[[31,5]]},"957":{"position":[[51,4],[93,4],[139,4],[181,4]]},"964":{"position":[[30,5]]},"967":{"position":[[30,5]]},"975":{"position":[[80,4],[151,4],[233,4],[266,4]]},"987":{"position":[[42,4],[105,4],[142,4],[232,4],[306,4]]},"992":{"position":[[51,4],[114,4],[151,4],[241,4],[315,4]]},"998":{"position":[[94,4],[152,4]]},"1010":{"position":[[24,5]]}},"keywords":{}}],["boolean",{"_index":3490,"title":{},"content":{"460":{"position":[[437,7]]},"987":{"position":[[437,7]]}},"keywords":{}}],["boost",{"_index":1701,"title":{},"content":{"165":{"position":[[377,5]]},"735":{"position":[[377,5]]}},"keywords":{}}],["bootstrap",{"_index":404,"title":{},"content":{"25":{"position":[[106,9]]},"543":{"position":[[106,9]]},"613":{"position":[[106,9]]},"1069":{"position":[[106,9]]}},"keywords":{}}],["bootstrap.java",{"_index":3621,"title":{},"content":{"511":{"position":[[171,15]]}},"keywords":{}}],["bootstrap.javaexperimentrestapi.java",{"_index":4304,"title":{},"content":{"1050":{"position":[[213,36]]}},"keywords":{}}],["bootstrap.sh",{"_index":1542,"title":{},"content":{"156":{"position":[[715,14],[1217,12]]},"726":{"position":[[715,14],[1217,12]]}},"keywords":{}}],["both",{"_index":1290,"title":{},"content":{"133":{"position":[[1624,5]]},"156":{"position":[[233,4]]},"194":{"position":[[571,5]]},"215":{"position":[[1616,4]]},"263":{"position":[[460,4]]},"403":{"position":[[217,4]]},"518":{"position":[[56,4]]},"726":{"position":[[233,4]]},"777":{"position":[[577,5]]},"785":{"position":[[1616,4]]},"834":{"position":[[460,4]]},"930":{"position":[[217,4]]},"1058":{"position":[[56,4]]}},"keywords":{}}],["bottom",{"_index":1340,"title":{},"content":{"136":{"position":[[519,7]]},"708":{"position":[[519,7]]}},"keywords":{}}],["box",{"_index":636,"title":{},"content":{"35":{"position":[[1759,4]]},"181":{"position":[[1229,4],[1424,5]]},"331":{"position":[[2010,3]]},"627":{"position":[[1759,4]]},"764":{"position":[[1235,4],[1431,5]]}},"keywords":{}}],["br",{"_index":2646,"title":{},"content":{"352":{"position":[[1140,3]]},"357":{"position":[[617,3]]}},"keywords":{}}],["branch",{"_index":1008,"title":{"123":{"position":[[22,6]]},"125":{"position":[[26,6]]},"126":{"position":[[23,6]]},"338":{"position":[[14,6]]},"354":{"position":[[58,6],[79,6]]},"691":{"position":[[22,6]]},"693":{"position":[[26,6]]},"694":{"position":[[23,6]]}},"content":{"107":{"position":[[2422,6],[2487,6],[2558,6],[3380,6],[9108,7],[9652,6],[9676,6],[9955,6],[10036,6]]},"123":{"position":[[130,6]]},"124":{"position":[[54,7]]},"125":{"position":[[30,6],[141,7]]},"131":{"position":[[45,7]]},"334":{"position":[[57,6],[147,6],[254,6],[1104,6]]},"338":{"position":[[13,6],[34,6],[54,7]]},"347":{"position":[[62,6]]},"401":{"position":[[202,6]]},"691":{"position":[[130,6]]},"692":{"position":[[54,7]]},"693":{"position":[[30,6],[141,7]]},"699":{"position":[[45,7]]},"928":{"position":[[202,6]]}},"keywords":{}}],["break",{"_index":1945,"title":{},"content":{"194":{"position":[[518,5]]},"777":{"position":[[524,5]]}},"keywords":{}}],["brew",{"_index":2465,"title":{},"content":{"330":{"position":[[112,4]]}},"keywords":{}}],["bring",{"_index":1466,"title":{},"content":{"151":{"position":[[922,5]]},"721":{"position":[[922,5]]}},"keywords":{}}],["broadcast",{"_index":2196,"title":{"277":{"position":[[0,9]]},"848":{"position":[[0,9]]}},"content":{"263":{"position":[[465,9]]},"834":{"position":[[465,9]]}},"keywords":{}}],["brok",{"_index":2611,"title":{},"content":{"348":{"position":[[76,7]]}},"keywords":{}}],["brought",{"_index":1586,"title":{},"content":{"159":{"position":[[1039,7]]},"729":{"position":[[1039,7]]}},"keywords":{}}],["brows",{"_index":156,"title":{"9":{"position":[[22,8]]},"598":{"position":[[22,8]]}},"content":{"21":{"position":[[340,7]]},"301":{"position":[[135,8],[399,7]]},"308":{"position":[[61,7]]},"368":{"position":[[415,8]]},"384":{"position":[[1012,8]]},"621":{"position":[[340,7]]},"868":{"position":[[119,8],[383,7]]},"874":{"position":[[61,7]]},"891":{"position":[[415,8]]},"911":{"position":[[1012,8]]}},"keywords":{}}],["bsd",{"_index":2865,"title":{},"content":{"389":{"position":[[2044,3],[2884,3],[5409,3],[10597,3],[10628,7],[10688,3],[15072,3],[17886,3],[18726,3],[21233,3],[26315,3],[26346,7],[26406,3],[30621,3]]},"916":{"position":[[2044,3],[2884,3],[5409,3],[10597,3],[10628,7],[10688,3],[15072,3],[17886,3],[18726,3],[21233,3],[26315,3],[26346,7],[26406,3],[30621,3]]}},"keywords":{}}],["bu",{"_index":3939,"title":{},"content":{"570":{"position":[[7662,3],[7841,3],[8020,3],[8199,3],[8378,3],[8557,3],[8736,3],[8915,3]]},"1090":{"position":[[7662,3],[7841,3],[8020,3],[8199,3],[8378,3],[8557,3],[8736,3],[8915,3]]}},"keywords":{}}],["bucket",{"_index":3805,"title":{},"content":{"568":{"position":[[338,6],[436,6]]},"1088":{"position":[[338,6],[436,6]]}},"keywords":{}}],["budget",{"_index":1829,"title":{},"content":{"176":{"position":[[1446,8]]},"746":{"position":[[1449,8]]}},"keywords":{}}],["buffer_s",{"_index":3331,"title":{},"content":{"415":{"position":[[465,11]]},"942":{"position":[[483,11]]}},"keywords":{}}],["bug",{"_index":970,"title":{},"content":{"107":{"position":[[1258,3]]},"133":{"position":[[1098,5]]},"217":{"position":[[335,4]]},"787":{"position":[[335,4]]}},"keywords":{}}],["build",{"_index":1028,"title":{"118":{"position":[[0,5]]},"278":{"position":[[7,5]]},"281":{"position":[[0,5]]},"283":{"position":[[0,8]]},"300":{"position":[[0,5]]},"307":{"position":[[0,5]]},"376":{"position":[[16,5]]},"377":{"position":[[0,5]]},"550":{"position":[[16,5]]},"551":{"position":[[9,5]]},"554":{"position":[[16,5]]},"555":{"position":[[0,5]]},"556":{"position":[[9,5]]},"560":{"position":[[16,5]]},"561":{"position":[[0,5]]},"562":{"position":[[9,5]]},"575":{"position":[[0,5]]},"578":{"position":[[0,8]]},"583":{"position":[[0,8]]},"588":{"position":[[0,8]]},"686":{"position":[[0,5]]},"849":{"position":[[7,5]]},"852":{"position":[[0,5]]},"853":{"position":[[0,8]]},"854":{"position":[[0,8]]},"867":{"position":[[0,5]]},"873":{"position":[[0,5]]},"903":{"position":[[16,5]]},"904":{"position":[[0,5]]},"1053":{"position":[[0,8]]},"1061":{"position":[[0,5]]},"1076":{"position":[[16,5]]},"1077":{"position":[[9,5]]},"1080":{"position":[[16,5]]},"1081":{"position":[[0,5]]},"1082":{"position":[[9,5]]},"1095":{"position":[[16,5]]},"1096":{"position":[[0,5]]},"1097":{"position":[[9,5]]},"1101":{"position":[[0,5]]},"1104":{"position":[[0,8]]},"1109":{"position":[[0,8]]},"1114":{"position":[[0,8]]}},"content":{"107":{"position":[[3502,8]]},"118":{"position":[[0,5]]},"133":{"position":[[17,6]]},"159":{"position":[[435,5],[695,8],[1493,6],[1987,8],[2339,5],[2408,5],[2633,8]]},"161":{"position":[[479,8]]},"163":{"position":[[121,5]]},"165":{"position":[[84,5]]},"197":{"position":[[311,8]]},"211":{"position":[[372,5]]},"246":{"position":[[206,6]]},"274":{"position":[[109,5]]},"281":{"position":[[364,5],[446,5]]},"300":{"position":[[7,8],[231,5],[315,5],[389,5]]},"302":{"position":[[0,5],[61,5],[135,5]]},"307":{"position":[[31,5],[86,5]]},"324":{"position":[[334,8]]},"325":{"position":[[106,5]]},"336":{"position":[[848,5]]},"338":{"position":[[220,5]]},"352":{"position":[[943,5]]},"375":{"position":[[1575,5],[1630,5]]},"376":{"position":[[42,5]]},"377":{"position":[[9,5],[90,5],[141,5],[157,5],[186,5]]},"387":{"position":[[29,5]]},"389":{"position":[[1934,8],[17511,8],[17776,8],[32365,8]]},"414":{"position":[[101,5]]},"416":{"position":[[0,5]]},"508":{"position":[[30,5]]},"510":{"position":[[58,8]]},"513":{"position":[[268,6]]},"549":{"position":[[1600,5],[1655,5]]},"550":{"position":[[48,5],[312,5]]},"551":{"position":[[34,5],[50,5],[93,5]]},"553":{"position":[[527,5],[1998,5],[2053,5]]},"554":{"position":[[48,5]]},"556":{"position":[[36,5],[52,5],[95,5]]},"559":{"position":[[508,5],[1635,5],[1690,5]]},"560":{"position":[[42,5]]},"562":{"position":[[29,5],[45,5],[74,5]]},"575":{"position":[[49,5],[124,5]]},"577":{"position":[[10,5]]},"582":{"position":[[10,5]]},"587":{"position":[[10,5]]},"590":{"position":[[46,8]]},"686":{"position":[[0,5]]},"729":{"position":[[435,5],[695,8],[1493,6],[1987,8],[2339,5],[2408,5],[2633,8]]},"731":{"position":[[479,8]]},"733":{"position":[[121,5]]},"735":{"position":[[84,5]]},"760":{"position":[[372,5]]},"780":{"position":[[318,8]]},"816":{"position":[[206,6]]},"845":{"position":[[109,5]]},"852":{"position":[[364,5],[446,5]]},"867":{"position":[[7,8],[231,5],[315,5],[389,5]]},"869":{"position":[[0,5],[61,5],[135,5],[395,8]]},"873":{"position":[[31,5],[86,5]]},"894":{"position":[[334,8]]},"895":{"position":[[106,5]]},"902":{"position":[[1575,5],[1630,5]]},"903":{"position":[[42,5]]},"904":{"position":[[9,5],[90,5],[141,5],[157,5],[186,5]]},"914":{"position":[[29,5]]},"916":{"position":[[1934,8],[17511,8],[17776,8],[32365,8]]},"941":{"position":[[101,5]]},"943":{"position":[[0,5]]},"1047":{"position":[[30,5]]},"1049":{"position":[[58,8]]},"1052":{"position":[[268,6]]},"1053":{"position":[[64,5]]},"1061":{"position":[[43,8]]},"1075":{"position":[[1600,5],[1655,5]]},"1076":{"position":[[48,5],[312,5]]},"1077":{"position":[[34,5],[50,5],[93,5]]},"1079":{"position":[[527,5],[1998,5],[2053,5]]},"1080":{"position":[[48,5]]},"1082":{"position":[[36,5],[52,5],[95,5]]},"1094":{"position":[[508,5],[1635,5],[1690,5]]},"1095":{"position":[[42,5]]},"1097":{"position":[[29,5],[45,5],[74,5]]},"1101":{"position":[[49,5],[124,5]]},"1103":{"position":[[10,5]]},"1108":{"position":[[10,5]]},"1113":{"position":[[10,5]]},"1116":{"position":[[46,8]]}},"keywords":{}}],["build.sh",{"_index":3319,"title":{},"content":{"414":{"position":[[75,8]]},"941":{"position":[[75,8]]}},"keywords":{}}],["build/push/manag",{"_index":1499,"title":{},"content":{"153":{"position":[[337,17]]},"723":{"position":[[337,17]]}},"keywords":{}}],["build_and_compile_cnn_model",{"_index":3342,"title":{},"content":{"415":{"position":[[768,30],[1931,29]]},"942":{"position":[[786,30],[1949,29]]}},"keywords":{}}],["building/compil",{"_index":3370,"title":{},"content":{"415":{"position":[[1853,18]]},"942":{"position":[[1871,18]]}},"keywords":{}}],["built",{"_index":649,"title":{},"content":{"35":{"position":[[3074,5]]},"159":{"position":[[340,5],[2022,5],[2180,5]]},"161":{"position":[[591,5]]},"162":{"position":[[294,5],[802,5]]},"167":{"position":[[24,5]]},"246":{"position":[[13,5]]},"274":{"position":[[175,5]]},"281":{"position":[[227,5]]},"304":{"position":[[21,5]]},"437":{"position":[[684,5],[788,5]]},"627":{"position":[[3074,5]]},"729":{"position":[[340,5],[2022,5],[2180,5]]},"731":{"position":[[591,5]]},"732":{"position":[[294,5],[802,5]]},"737":{"position":[[24,5]]},"816":{"position":[[13,5]]},"845":{"position":[[175,5]]},"852":{"position":[[227,5]]},"870":{"position":[[21,5]]},"964":{"position":[[684,5],[788,5]]},"1053":{"position":[[35,5],[264,5]]}},"keywords":{}}],["busi",{"_index":467,"title":{"28":{"position":[[75,4]]},"546":{"position":[[75,4]]},"616":{"position":[[75,4]]},"1072":{"position":[[75,4]]}},"content":{"28":{"position":[[269,4],[341,5],[385,4],[1111,4],[1130,4]]},"159":{"position":[[120,8]]},"546":{"position":[[269,4],[341,5],[385,4],[1111,4],[1130,4]]},"616":{"position":[[269,4],[341,5],[385,4],[1111,4],[1130,4]]},"729":{"position":[[120,8]]},"1072":{"position":[[269,4],[341,5],[385,4],[1111,4],[1130,4]]}},"keywords":{}}],["button",{"_index":620,"title":{},"content":{"35":{"position":[[1147,6]]},"120":{"position":[[56,6]]},"128":{"position":[[92,6]]},"350":{"position":[[234,6]]},"355":{"position":[[283,6]]},"493":{"position":[[69,7]]},"627":{"position":[[1147,6]]},"688":{"position":[[56,6]]},"696":{"position":[[92,6]]},"1007":{"position":[[69,7]]}},"keywords":{}}],["button.download:th",{"_index":612,"title":{},"content":{"35":{"position":[[859,19]]},"627":{"position":[[859,19]]}},"keywords":{}}],["button.setting:edit",{"_index":614,"title":{},"content":{"35":{"position":[[947,19]]},"627":{"position":[[947,19]]}},"keywords":{}}],["bylaw",{"_index":937,"title":{"107":{"position":[[0,6]]}},"content":{"107":{"position":[[26,6],[4374,6],[10569,6]]}},"keywords":{}}],["byt",{"_index":2494,"title":{},"content":{"331":{"position":[[1523,6],[1779,6]]}},"keywords":{}}],["bzip2",{"_index":2729,"title":{},"content":{"375":{"position":[[608,5]]},"902":{"position":[[608,5]]}},"keywords":{}}],["c",{"_index":2362,"title":{},"content":{"314":{"position":[[295,3]]},"315":{"position":[[534,1]]},"331":{"position":[[361,3]]},"553":{"position":[[998,1]]},"1079":{"position":[[998,1]]}},"keywords":{}}],["c)omment",{"_index":2490,"title":{},"content":{"331":{"position":[[1434,10]]}},"keywords":{}}],["c60a2a8a4235",{"_index":3472,"title":{},"content":{"443":{"position":[[251,14]]},"472":{"position":[[431,14]]},"970":{"position":[[251,14]]},"999":{"position":[[431,14]]}},"keywords":{}}],["c610c277546d",{"_index":897,"title":{},"content":{"100":{"position":[[575,14]]},"101":{"position":[[317,14]]},"102":{"position":[[310,14]]},"103":{"position":[[327,14]]},"702":{"position":[[575,14]]},"703":{"position":[[317,14]]},"704":{"position":[[310,14]]},"705":{"position":[[327,14]]}},"keywords":{}}],["ca",{"_index":1892,"title":{},"content":{"188":{"position":[[291,2]]},"375":{"position":[[701,2]]},"553":{"position":[[572,2]]},"771":{"position":[[291,2]]},"902":{"position":[[701,2]]},"1079":{"position":[[572,2]]}},"keywords":{}}],["cach",{"_index":3770,"title":{},"content":{"559":{"position":[[937,5],[1092,5]]},"1094":{"position":[[937,5],[1092,5]]}},"keywords":{}}],["calcul",{"_index":2407,"title":{},"content":{"315":{"position":[[6,11]]},"342":{"position":[[77,9],[178,9]]}},"keywords":{}}],["calico",{"_index":2675,"title":{},"content":{"369":{"position":[[556,6]]},"892":{"position":[[556,6]]}},"keywords":{}}],["call",{"_index":1425,"title":{},"content":{"145":{"position":[[197,6]]},"151":{"position":[[474,4]]},"156":{"position":[[289,4]]},"158":{"position":[[224,6]]},"160":{"position":[[641,7]]},"170":{"position":[[538,6]]},"173":{"position":[[410,4]]},"181":{"position":[[1486,6]]},"230":{"position":[[683,6]]},"231":{"position":[[930,5]]},"508":{"position":[[299,5]]},"715":{"position":[[197,6]]},"721":{"position":[[474,4]]},"726":{"position":[[289,4]]},"728":{"position":[[224,6]]},"730":{"position":[[641,7]]},"740":{"position":[[538,6]]},"743":{"position":[[411,4]]},"764":{"position":[[1493,6]]},"793":{"position":[[683,6]]},"794":{"position":[[1183,5]]},"1047":{"position":[[299,5]]}},"keywords":{}}],["callabl",{"_index":1994,"title":{},"content":{"200":{"position":[[2478,8]]},"783":{"position":[[2478,8]]}},"keywords":{}}],["callback",{"_index":1702,"title":{},"content":{"165":{"position":[[476,8]]},"735":{"position":[[476,8]]}},"keywords":{}}],["callbacks=[mycallback",{"_index":3383,"title":{},"content":{"415":{"position":[[2241,25]]},"942":{"position":[[2294,25]]}},"keywords":{}}],["can't",{"_index":465,"title":{"28":{"position":[[15,5]]},"546":{"position":[[15,5]]},"616":{"position":[[15,5]]},"1072":{"position":[[15,5]]}},"content":{"29":{"position":[[128,5]]},"547":{"position":[[128,5]]},"617":{"position":[[128,5]]},"1073":{"position":[[128,5]]}},"keywords":{}}],["cancel",{"_index":1335,"title":{},"content":{"136":{"position":[[339,9]]},"331":{"position":[[2222,8]]},"708":{"position":[[339,9]]}},"keywords":{}}],["candid",{"_index":1018,"title":{"310":{"position":[[28,9]]},"311":{"position":[[16,9]]}},"content":{"107":{"position":[[3271,9],[3428,10],[3555,10]]},"133":{"position":[[660,10],[2616,9]]},"141":{"position":[[133,10],[1316,10],[1362,9],[1527,10],[1601,9],[1642,9],[1730,9],[2175,9]]},"242":{"position":[[118,10]]},"339":{"position":[[302,9],[312,11]]},"352":{"position":[[179,9]]},"805":{"position":[[118,10]]}},"keywords":{}}],["candidate’",{"_index":1378,"title":{},"content":{"141":{"position":[[283,11]]}},"keywords":{}}],["capabl",{"_index":2031,"title":{},"content":{"213":{"position":[[142,10]]},"262":{"position":[[398,13]]},"263":{"position":[[497,13]]},"264":{"position":[[36,12]]},"265":{"position":[[160,12]]},"267":{"position":[[123,13]]},"368":{"position":[[185,12]]},"762":{"position":[[142,10]]},"833":{"position":[[398,13]]},"834":{"position":[[497,13]]},"835":{"position":[[36,12]]},"836":{"position":[[160,12]]},"838":{"position":[[123,13]]},"891":{"position":[[185,12]]}},"keywords":{}}],["car",{"_index":3803,"title":{},"content":{"568":{"position":[[123,4]]},"1088":{"position":[[123,4]]}},"keywords":{}}],["card",{"_index":583,"title":{},"content":{"35":{"position":[[86,6],[107,4]]},"331":{"position":[[672,4]]},"627":{"position":[[86,6],[107,4]]}},"keywords":{}}],["card.project",{"_index":594,"title":{},"content":{"35":{"position":[[380,12]]},"627":{"position":[[380,12]]}},"keywords":{}}],["carefulli",{"_index":2442,"title":{},"content":{"322":{"position":[[35,10]]},"879":{"position":[[35,10]]}},"keywords":{}}],["carefully.th",{"_index":1181,"title":{},"content":{"117":{"position":[[149,13]]},"685":{"position":[[149,13]]}},"keywords":{}}],["carri",{"_index":1077,"title":{},"content":{"107":{"position":[[6195,7]]},"355":{"position":[[328,7]]}},"keywords":{}}],["cas",{"_index":1136,"title":{"322":{"position":[[28,4]]},"879":{"position":[[28,4]]}},"content":{"107":{"position":[[9125,4]]},"193":{"position":[[381,6],[432,6]]},"319":{"position":[[9,5],[131,5]]},"320":{"position":[[832,5],[919,5],[1072,5]]},"324":{"position":[[9,5]]},"389":{"position":[[1697,6]]},"776":{"position":[[381,6],[432,6]]},"876":{"position":[[9,5],[131,5]]},"877":{"position":[[832,5],[919,5],[1072,5]]},"894":{"position":[[9,5]]},"916":{"position":[[1697,6]]}},"keywords":{}}],["cast",{"_index":990,"title":{},"content":{"107":{"position":[[1886,4],[2656,4],[8135,5],[8461,7]]}},"keywords":{}}],["cat",{"_index":3183,"title":{},"content":{"389":{"position":[[17637,3],[32491,3]]},"916":{"position":[[17637,3],[32491,3]]}},"keywords":{}}],["caus",{"_index":129,"title":{},"content":{"7":{"position":[[881,6]]},"261":{"position":[[315,5]]},"322":{"position":[[183,5]]},"591":{"position":[[220,6]]},"596":{"position":[[881,6]]},"832":{"position":[[315,5]]},"879":{"position":[[183,5]]},"1117":{"position":[[220,6]]}},"keywords":{}}],["cc58f93b1e259b0c",{"_index":3990,"title":{},"content":{"570":{"position":[[14413,16]]},"1090":{"position":[[14413,16]]}},"keywords":{}}],["ccc",{"_index":2636,"title":{},"content":{"352":{"position":[[297,3]]},"357":{"position":[[409,3]]}},"keywords":{}}],["cd",{"_index":58,"title":{},"content":{"6":{"position":[[54,2]]},"15":{"position":[[0,2],[259,2]]},"121":{"position":[[156,2]]},"123":{"position":[[0,2]]},"301":{"position":[[169,2]]},"320":{"position":[[1238,2]]},"334":{"position":[[561,2],[1240,2]]},"341":{"position":[[54,2],[234,2]]},"345":{"position":[[0,2],[178,2]]},"349":{"position":[[0,2]]},"375":{"position":[[898,2],[917,2],[993,2]]},"380":{"position":[[50,2]]},"386":{"position":[[227,2]]},"389":{"position":[[1349,2],[1467,2]]},"401":{"position":[[262,2]]},"411":{"position":[[135,2]]},"510":{"position":[[127,2]]},"513":{"position":[[144,2]]},"553":{"position":[[1541,2]]},"580":{"position":[[514,2]]},"585":{"position":[[418,3]]},"595":{"position":[[54,2]]},"607":{"position":[[0,2],[259,2]]},"689":{"position":[[156,2]]},"691":{"position":[[0,2]]},"868":{"position":[[153,2]]},"869":{"position":[[666,2]]},"877":{"position":[[1238,2]]},"902":{"position":[[898,2],[917,2],[993,2]]},"907":{"position":[[50,2]]},"913":{"position":[[227,2]]},"916":{"position":[[1349,2],[1467,2]]},"928":{"position":[[262,2]]},"938":{"position":[[113,2]]},"1049":{"position":[[127,2]]},"1052":{"position":[[144,2]]},"1053":{"position":[[74,2]]},"1079":{"position":[[1541,2]]},"1106":{"position":[[514,2]]},"1111":{"position":[[418,3]]}},"keywords":{}}],["cdb",{"_index":2918,"title":{},"content":{"389":{"position":[[2730,3],[18572,3]]},"916":{"position":[[2730,3],[18572,3]]}},"keywords":{}}],["cent",{"_index":2166,"title":{"261":{"position":[[17,6]]},"832":{"position":[[17,6]]}},"content":{"246":{"position":[[490,7]]},"249":{"position":[[161,7]]},"261":{"position":[[158,7],[384,6]]},"262":{"position":[[69,7]]},"270":{"position":[[314,7]]},"816":{"position":[[490,7]]},"819":{"position":[[161,7]]},"832":{"position":[[158,7],[384,6]]},"833":{"position":[[69,7]]},"841":{"position":[[314,7]]}},"keywords":{}}],["cento",{"_index":2795,"title":{},"content":{"383":{"position":[[1007,6]]},"910":{"position":[[1007,6]]}},"keywords":{}}],["central",{"_index":2460,"title":{},"content":{"328":{"position":[[224,7]]}},"keywords":{}}],["cert",{"_index":2891,"title":{},"content":{"389":{"position":[[2408,4],[3300,4],[5218,4],[10314,5],[10386,4],[14072,4],[18250,4],[19124,4],[21042,4],[26032,5],[26104,4],[29621,4]]},"916":{"position":[[2408,4],[3300,4],[5218,4],[10314,5],[10386,4],[14072,4],[18250,4],[19124,4],[21042,4],[26032,5],[26104,4],[29621,4]]}},"keywords":{}}],["cert_1.0.37_all.deb",{"_index":3093,"title":{},"content":{"389":{"position":[[10348,19],[26066,19]]},"916":{"position":[[10348,19],[26066,19]]}},"keywords":{}}],["certif",{"_index":2508,"title":{},"content":{"331":{"position":[[2460,11]]},"375":{"position":[[704,12]]},"553":{"position":[[575,12]]},"902":{"position":[[704,12]]},"1079":{"position":[[575,12]]}},"keywords":{}}],["certifi=2020.4.5.1=py37_0",{"_index":1894,"title":{},"content":{"188":{"position":[[320,25]]},"771":{"position":[[320,25]]}},"keywords":{}}],["certificates=2020.1.1=0",{"_index":1893,"title":{},"content":{"188":{"position":[[294,23]]},"771":{"position":[[294,23]]}},"keywords":{}}],["cffi=1.14.0=py37hb5b8e2f_0",{"_index":1895,"title":{},"content":{"188":{"position":[[348,26]]},"771":{"position":[[348,26]]}},"keywords":{}}],["cfg",{"_index":2854,"title":{},"content":{"389":{"position":[[1352,4]]},"916":{"position":[[1352,4]]}},"keywords":{}}],["cgroup",{"_index":357,"title":{},"content":{"23":{"position":[[26,6]]},"25":{"position":[[280,6],[1824,6],[1970,6]]},"541":{"position":[[26,6]]},"543":{"position":[[280,6],[1824,6],[1970,6]]},"611":{"position":[[26,6]]},"613":{"position":[[280,6],[1824,6],[1970,6]]},"1067":{"position":[[26,6]]},"1069":{"position":[[280,6],[1824,6],[1970,6]]}},"keywords":{}}],["chackout",{"_index":3230,"title":{},"content":{"401":{"position":[[184,8]]},"928":{"position":[[184,8]]}},"keywords":{}}],["chain",{"_index":1993,"title":{},"content":{"200":{"position":[[2105,7]]},"783":{"position":[[2105,7]]}},"keywords":{}}],["chair",{"_index":1050,"title":{},"content":{"107":{"position":[[4803,5],[4855,5],[5072,5],[5159,5],[5206,5],[5241,5],[5300,5],[10241,5],[10477,6]]}},"keywords":{}}],["challeng",{"_index":1117,"title":{},"content":{"107":{"position":[[8246,11]]}},"keywords":{}}],["chanc",{"_index":2499,"title":{},"content":{"331":{"position":[[1712,6],[1968,6]]}},"keywords":{}}],["chang",{"_index":1104,"title":{"161":{"position":[[111,7]]},"354":{"position":[[14,7]]},"731":{"position":[[111,7]]}},"content":{"107":{"position":[[7425,7],[8798,6],[8807,6],[9075,6],[10770,7]]},"133":{"position":[[1786,8]]},"135":{"position":[[237,8]]},"136":{"position":[[619,8]]},"144":{"position":[[438,6],[578,7]]},"161":{"position":[[638,7],[956,8]]},"217":{"position":[[243,6],[312,6]]},"281":{"position":[[175,8]]},"301":{"position":[[428,6]]},"308":{"position":[[82,7]]},"314":{"position":[[374,6]]},"331":{"position":[[440,6],[1419,6]]},"338":{"position":[[318,6]]},"389":{"position":[[2,6],[14244,8],[14754,8],[29793,8],[30303,8]]},"400":{"position":[[59,6]]},"507":{"position":[[42,8]]},"511":{"position":[[152,6],[1318,6]]},"513":{"position":[[61,6]]},"569":{"position":[[1964,6]]},"571":{"position":[[79,7]]},"580":{"position":[[1434,7]]},"707":{"position":[[237,8]]},"708":{"position":[[619,8]]},"714":{"position":[[438,6],[578,7]]},"731":{"position":[[638,7],[956,8]]},"787":{"position":[[243,6],[312,6]]},"852":{"position":[[175,8]]},"868":{"position":[[412,6]]},"874":{"position":[[82,7]]},"916":{"position":[[2,6],[14244,8],[14754,8],[29793,8],[30303,8]]},"927":{"position":[[59,6]]},"1046":{"position":[[42,8]]},"1050":{"position":[[111,6]]},"1052":{"position":[[61,6]]},"1089":{"position":[[1964,6]]},"1091":{"position":[[79,7]]},"1106":{"position":[[1434,7]]}},"keywords":{}}],["changes.md",{"_index":2575,"title":{},"content":{"338":{"position":[[96,10]]}},"keywords":{}}],["channel",{"_index":692,"title":{},"content":{"71":{"position":[[219,10],[806,10]]},"72":{"position":[[357,10],[843,10]]},"73":{"position":[[379,10]]},"74":{"position":[[237,10],[727,10],[917,11]]},"75":{"position":[[390,10]]},"100":{"position":[[1013,11]]},"101":{"position":[[755,11]]},"102":{"position":[[746,11]]},"103":{"position":[[806,11]]},"143":{"position":[[284,7]]},"154":{"position":[[531,9],[952,9]]},"155":{"position":[[271,7],[376,8]]},"188":{"position":[[213,9]]},"216":{"position":[[782,9]]},"422":{"position":[[300,8],[335,9]]},"423":{"position":[[184,10]]},"431":{"position":[[193,10]]},"663":{"position":[[219,10],[806,10]]},"664":{"position":[[357,10],[843,10]]},"665":{"position":[[379,10]]},"666":{"position":[[237,10],[727,10],[917,11]]},"667":{"position":[[390,10]]},"702":{"position":[[1013,11]]},"703":{"position":[[755,11]]},"704":{"position":[[746,11]]},"705":{"position":[[806,11]]},"724":{"position":[[531,9],[952,9]]},"725":{"position":[[271,7],[376,8]]},"771":{"position":[[213,9]]},"786":{"position":[[782,9]]},"949":{"position":[[300,8],[335,9]]},"950":{"position":[[184,10]]},"958":{"position":[[193,10]]}},"keywords":{}}],["channels\":[\"default",{"_index":3400,"title":{},"content":{"423":{"position":[[782,24]]},"425":{"position":[[362,24],[660,24],[1254,24]]},"428":{"position":[[348,24]]},"431":{"position":[[677,24]]},"434":{"position":[[351,24]]},"479":{"position":[[982,24]]},"482":{"position":[[729,24]]},"485":{"position":[[717,24]]},"488":{"position":[[747,24]]},"950":{"position":[[782,24]]},"952":{"position":[[362,24],[660,24],[1254,24]]},"955":{"position":[[348,24]]},"958":{"position":[[677,24]]},"961":{"position":[[351,24]]},"1011":{"position":[[982,24]]},"1014":{"position":[[729,24]]},"1017":{"position":[[717,24]]},"1020":{"position":[[747,24]]}},"keywords":{}}],["chapt",{"_index":2462,"title":{},"content":{"329":{"position":[[77,7]]}},"keywords":{}}],["chapter:https://infra.apache.org/openpgp.html",{"_index":2461,"title":{},"content":{"329":{"position":[[24,45]]}},"keywords":{}}],["charact",{"_index":2157,"title":{},"content":{"246":{"position":[[170,13]]},"331":{"position":[[265,10]]},"406":{"position":[[397,10],[475,10]]},"816":{"position":[[170,13]]},"933":{"position":[[397,10],[475,10]]}},"keywords":{}}],["character.",{"_index":3243,"title":{},"content":{"406":{"position":[[440,13]]},"933":{"position":[[440,13]]}},"keywords":{}}],["characterist",{"_index":2055,"title":{},"content":{"216":{"position":[[12,15]]},"786":{"position":[[12,15]]}},"keywords":{}}],["characters.contain",{"_index":3240,"title":{},"content":{"406":{"position":[[350,18]]},"933":{"position":[[350,18]]}},"keywords":{}}],["chardet",{"_index":2888,"title":{},"content":{"389":{"position":[[2315,7],[3207,7],[6478,7],[12300,8],[12387,7],[17165,7],[18157,7],[19031,7],[22196,7],[27849,8],[27936,7],[32019,7]]},"916":{"position":[[2315,7],[3207,7],[6478,7],[12300,8],[12387,7],[17165,7],[18157,7],[19031,7],[22196,7],[27849,8],[27936,7],[32019,7]]}},"keywords":{}}],["chardet=3.0.4=py37_1003",{"_index":1896,"title":{},"content":{"188":{"position":[[377,23]]},"771":{"position":[[377,23]]}},"keywords":{}}],["chardet_2.3.0",{"_index":3109,"title":{},"content":{"389":{"position":[[12341,13],[27890,13]]},"916":{"position":[[12341,13],[27890,13]]}},"keywords":{}}],["chart",{"_index":131,"title":{},"content":{"7":{"position":[[924,7]]},"33":{"position":[[116,7]]},"167":{"position":[[519,8]]},"300":{"position":[[131,5]]},"382":{"position":[[51,5]]},"411":{"position":[[129,5]]},"596":{"position":[[924,7]]},"625":{"position":[[116,7]]},"737":{"position":[[519,8]]},"867":{"position":[[131,5]]},"869":{"position":[[523,5],[1694,5]]},"909":{"position":[[51,5]]},"938":{"position":[[105,5]]}},"keywords":{}}],["charts/submarin",{"_index":59,"title":{},"content":{"6":{"position":[[99,16]]},"302":{"position":[[348,16]]},"380":{"position":[[93,16]]},"411":{"position":[[178,16]]},"595":{"position":[[99,16]]},"867":{"position":[[588,16]]},"869":{"position":[[348,16],[734,16],[829,16]]},"907":{"position":[[93,16]]},"938":{"position":[[158,16]]}},"keywords":{}}],["charts/submarine/chart",{"_index":4235,"title":{},"content":{"869":{"position":[[703,23]]}},"keywords":{}}],["charts/submarine/charts/traefik/values.yaml",{"_index":2802,"title":{},"content":{"384":{"position":[[433,43]]},"911":{"position":[[433,43]]}},"keywords":{}}],["charts/submarine/values.yaml",{"_index":2780,"title":{},"content":{"383":{"position":[[134,29],[507,28],[1232,28]]},"384":{"position":[[208,29]]},"910":{"position":[[134,29],[507,28],[1232,28]]},"911":{"position":[[208,29]]}},"keywords":{}}],["charts/submarine/values.yaml.to",{"_index":2783,"title":{},"content":{"383":{"position":[[330,31],[1075,31]]},"910":{"position":[[330,31],[1075,31]]}},"keywords":{}}],["check",{"_index":77,"title":{"14":{"position":[[0,5]]},"127":{"position":[[7,5]]},"129":{"position":[[8,5]]},"282":{"position":[[0,8]]},"313":{"position":[[4,5]]},"314":{"position":[[4,5]]},"315":{"position":[[4,5]]},"316":{"position":[[5,5]]},"317":{"position":[[4,5]]},"333":{"position":[[4,5]]},"343":{"position":[[4,5]]},"606":{"position":[[0,5]]},"695":{"position":[[7,5]]},"697":{"position":[[8,5]]}},"content":{"7":{"position":[[27,5]]},"121":{"position":[[396,5]]},"210":{"position":[[158,5],[326,5],[356,5]]},"211":{"position":[[94,5],[163,5]]},"272":{"position":[[143,5]]},"273":{"position":[[313,6],[1250,6]]},"283":{"position":[[190,5]]},"298":{"position":[[426,5]]},"303":{"position":[[20,5]]},"313":{"position":[[306,5]]},"314":{"position":[[1066,8],[1864,5],[2112,5],[2429,5]]},"315":{"position":[[283,5]]},"316":{"position":[[57,5]]},"317":{"position":[[124,5]]},"320":{"position":[[855,5]]},"330":{"position":[[145,6]]},"333":{"position":[[44,5],[148,5]]},"334":{"position":[[761,5],[1448,5]]},"338":{"position":[[107,5],[206,6],[226,5],[284,5]]},"339":{"position":[[58,7],[148,7]]},"349":{"position":[[263,5],[357,5]]},"350":{"position":[[264,6],[319,5],[597,5]]},"355":{"position":[[313,6]]},"382":{"position":[[27,5]]},"410":{"position":[[13,5]]},"509":{"position":[[271,5]]},"516":{"position":[[50,5]]},"569":{"position":[[160,5]]},"571":{"position":[[411,5]]},"574":{"position":[[0,5]]},"575":{"position":[[114,5]]},"596":{"position":[[27,5]]},"689":{"position":[[396,5]]},"759":{"position":[[158,5],[326,5],[356,5]]},"760":{"position":[[94,5],[163,5]]},"843":{"position":[[143,5]]},"844":{"position":[[313,6],[1250,6]]},"853":{"position":[[0,8]]},"854":{"position":[[190,5]]},"865":{"position":[[429,5]]},"869":{"position":[[1775,5]]},"877":{"position":[[855,5]]},"909":{"position":[[27,5]]},"937":{"position":[[13,5]]},"1048":{"position":[[271,5]]},"1056":{"position":[[50,5]]},"1089":{"position":[[160,5]]},"1091":{"position":[[411,5]]},"1100":{"position":[[0,5]]},"1101":{"position":[[114,5]]}},"keywords":{}}],["check/python",{"_index":4302,"title":{},"content":{"1046":{"position":[[296,13],[411,13]]}},"keywords":{}}],["check/python/auto",{"_index":3609,"title":{},"content":{"509":{"position":[[149,17]]},"1048":{"position":[[149,17]]}},"keywords":{}}],["check/python/lint",{"_index":3594,"title":{},"content":{"507":{"position":[[304,17]]}},"keywords":{}}],["check/python/lint.sh",{"_index":3614,"title":{},"content":{"509":{"position":[[416,20]]},"1048":{"position":[[416,20]]}},"keywords":{}}],["check/python/mypi",{"_index":3597,"title":{},"content":{"507":{"position":[[411,17]]}},"keywords":{}}],["checkout",{"_index":1211,"title":{"348":{"position":[[6,8]]}},"content":{"123":{"position":[[53,8],[176,8],[228,8]]},"386":{"position":[[425,8]]},"401":{"position":[[224,8]]},"507":{"position":[[260,8],[367,8],[483,8],[608,8]]},"691":{"position":[[53,8],[176,8],[228,8]]},"913":{"position":[[425,8]]},"928":{"position":[[224,8]]},"1046":{"position":[[608,8]]}},"keywords":{}}],["checkpoint",{"_index":374,"title":{},"content":{"23":{"position":[[446,10]]},"541":{"position":[[446,10]]},"569":{"position":[[1155,11],[1722,12]]},"570":{"position":[[5070,11]]},"611":{"position":[[446,10]]},"1067":{"position":[[446,10]]},"1089":{"position":[[1155,11],[1722,12]]},"1090":{"position":[[5070,11]]}},"keywords":{}}],["checkpoint_path",{"_index":372,"title":{},"content":{"23":{"position":[[376,15]]},"541":{"position":[[376,15]]},"611":{"position":[[376,15]]},"1067":{"position":[[376,15]]}},"keywords":{}}],["checkpointsaverhook",{"_index":3922,"title":{},"content":{"570":{"position":[[4701,20],[14118,20]]},"1090":{"position":[[4701,20],[14118,20]]}},"keywords":{}}],["checkstyl",{"_index":1260,"title":{"298":{"position":[[11,10]]},"865":{"position":[[11,10]]}},"content":{"132":{"position":[[169,10]]},"298":{"position":[[0,10],[156,10],[171,10],[191,10],[282,10],[360,10]]},"700":{"position":[[169,10]]},"865":{"position":[[0,10],[156,10],[174,10],[194,10],[285,10],[363,10]]}},"keywords":{}}],["checkstyle+idea",{"_index":2310,"title":{},"content":{"298":{"position":[[79,15]]},"865":{"position":[[79,15]]}},"keywords":{}}],["checksum",{"_index":2686,"title":{},"content":{"372":{"position":[[137,9],[205,9]]}},"keywords":{}}],["cheng",{"_index":2487,"title":{},"content":{"331":{"position":[[1220,5],[1391,5],[2689,5]]},"332":{"position":[[144,5]]}},"keywords":{}}],["child",{"_index":2192,"title":{},"content":{"263":{"position":[[87,5]]},"834":{"position":[[87,5]]}},"keywords":{}}],["china",{"_index":3711,"title":{},"content":{"549":{"position":[[1304,6]]},"1075":{"position":[[1304,6]]}},"keywords":{}}],["chmod",{"_index":435,"title":{},"content":{"25":{"position":[[1892,5],[2047,5]]},"28":{"position":[[1097,5]]},"391":{"position":[[446,5]]},"543":{"position":[[1892,5],[2047,5]]},"546":{"position":[[1097,5]]},"553":{"position":[[759,5]]},"613":{"position":[[1892,5],[2047,5]]},"616":{"position":[[1097,5]]},"918":{"position":[[446,5]]},"1069":{"position":[[1892,5],[2047,5]]},"1072":{"position":[[1097,5]]},"1079":{"position":[[759,5]]}},"keywords":{}}],["choic",{"_index":1659,"title":{},"content":{"162":{"position":[[147,7]]},"732":{"position":[[147,7]]}},"keywords":{}}],["choos",{"_index":210,"title":{},"content":{"14":{"position":[[223,6]]},"35":{"position":[[3092,6]]},"151":{"position":[[1188,8],[1333,6],[2162,6]]},"172":{"position":[[499,8],[644,6]]},"173":{"position":[[142,6]]},"188":{"position":[[43,6],[70,7]]},"194":{"position":[[359,6]]},"204":{"position":[[226,6],[373,6],[501,6],[586,6],[758,6]]},"314":{"position":[[1274,7],[1348,6]]},"328":{"position":[[139,6]]},"332":{"position":[[482,6]]},"406":{"position":[[1047,6]]},"415":{"position":[[56,6]]},"606":{"position":[[223,6]]},"627":{"position":[[3092,6]]},"721":{"position":[[1188,8],[1333,6],[2162,6]]},"742":{"position":[[499,8],[644,6]]},"743":{"position":[[143,6]]},"753":{"position":[[226,6],[373,6],[501,6],[586,6],[758,6]]},"771":{"position":[[43,6],[70,7]]},"777":{"position":[[365,6]]},"933":{"position":[[698,6]]},"942":{"position":[[56,6]]},"1064":{"position":[[1865,6]]}},"keywords":{}}],["chos",{"_index":4053,"title":{},"content":{"571":{"position":[[502,5]]},"1091":{"position":[[502,5]]}},"keywords":{}}],["chown",{"_index":433,"title":{},"content":{"25":{"position":[[1850,5],[2009,5]]},"543":{"position":[[1850,5],[2009,5]]},"613":{"position":[[1850,5],[2009,5]]},"1069":{"position":[[1850,5],[2009,5]]}},"keywords":{}}],["ci",{"_index":2539,"title":{},"content":{"334":{"position":[[913,2],[1608,2]]},"508":{"position":[[53,3]]},"1047":{"position":[[53,3]]}},"keywords":{}}],["ci.sh",{"_index":3600,"title":{},"content":{"508":{"position":[[122,5],[325,5]]},"1047":{"position":[[122,5],[325,5]]}},"keywords":{}}],["cicd",{"_index":1358,"title":{},"content":{"138":{"position":[[165,4]]},"710":{"position":[[165,4]]}},"keywords":{}}],["cifar",{"_index":3791,"title":{},"content":{"565":{"position":[[56,5],[186,5],[454,5]]},"1085":{"position":[[56,5],[186,5],[454,5]]}},"keywords":{}}],["cifar10",{"_index":3757,"title":{},"content":{"554":{"position":[[251,7]]},"556":{"position":[[273,7]]},"560":{"position":[[244,7],[499,7]]},"562":{"position":[[315,7],[362,7]]},"589":{"position":[[477,7],[660,7],[865,7]]},"590":{"position":[[547,7],[732,7],[904,7]]},"1080":{"position":[[251,7]]},"1082":{"position":[[273,7]]},"1095":{"position":[[244,7],[499,7]]},"1097":{"position":[[315,7],[362,7]]},"1115":{"position":[[477,7],[660,7],[865,7]]},"1116":{"position":[[547,7],[732,7],[904,7]]}},"keywords":{}}],["cifar10_estim",{"_index":3816,"title":{},"content":{"568":{"position":[[811,18]]},"1088":{"position":[[811,18]]}},"keywords":{}}],["cifar10_estimator.cifar10_main",{"_index":3817,"title":{},"content":{"568":{"position":[[846,30]]},"1088":{"position":[[846,30]]}},"keywords":{}}],["cifar10_estimator/cmle_config.yaml",{"_index":3815,"title":{},"content":{"568":{"position":[[759,34]]},"1088":{"position":[[759,34]]}},"keywords":{}}],["cifar10_main.pi",{"_index":3796,"title":{},"content":{"566":{"position":[[77,15],[293,15],[603,15],[782,15]]},"570":{"position":[[428,15],[9925,15],[16083,15]]},"572":{"position":[[13,15],[88,18],[295,18],[1413,18]]},"580":{"position":[[574,15]]},"1086":{"position":[[77,15],[293,15],[603,15],[782,15]]},"1090":{"position":[[428,15],[9925,15],[16083,15]]},"1092":{"position":[[13,15],[88,18],[295,18],[1413,18]]},"1106":{"position":[[574,15]]}},"keywords":{}}],["cifar10_tutorial.pi",{"_index":4179,"title":{},"content":{"585":{"position":[[439,20]]},"1111":{"position":[[439,20]]}},"keywords":{}}],["cifarmultigpu",{"_index":3813,"title":{},"content":{"568":{"position":[[662,13]]},"1088":{"position":[[662,13]]}},"keywords":{}}],["cla",{"_index":1014,"title":{},"content":{"107":{"position":[[2783,5]]}},"keywords":{}}],["clarifi",{"_index":1385,"title":{},"content":{"141":{"position":[[946,7]]}},"keywords":{}}],["class",{"_index":1903,"title":{"495":{"position":[[0,5]]},"1022":{"position":[[0,5]]},"1032":{"position":[[0,5]]}},"content":{"189":{"position":[[109,5]]},"200":{"position":[[2487,5]]},"269":{"position":[[359,5]]},"270":{"position":[[597,5]]},"299":{"position":[[19,6],[162,8]]},"415":{"position":[[1961,5]]},"772":{"position":[[109,5]]},"783":{"position":[[2487,5]]},"840":{"position":[[359,5]]},"841":{"position":[[597,5]]},"866":{"position":[[19,6],[162,8]]},"942":{"position":[[1979,5]]}},"keywords":{}}],["classload",{"_index":1947,"title":{},"content":{"194":{"position":[[644,11],[690,12]]},"777":{"position":[[650,11],[696,12]]}},"keywords":{}}],["classpath",{"_index":1943,"title":{},"content":{"194":{"position":[[464,11]]},"579":{"position":[[190,9]]},"580":{"position":[[84,9],[493,9]]},"584":{"position":[[187,9]]},"585":{"position":[[84,9]]},"589":{"position":[[127,9]]},"590":{"position":[[162,9]]},"777":{"position":[[470,11]]},"1105":{"position":[[190,9]]},"1106":{"position":[[84,9],[493,9]]},"1110":{"position":[[187,9]]},"1111":{"position":[[84,9]]},"1115":{"position":[[127,9]]},"1116":{"position":[[162,9]]}},"keywords":{}}],["classpath=$(hadoop",{"_index":4118,"title":{},"content":{"579":{"position":[[171,18]]},"580":{"position":[[65,18]]},"584":{"position":[[168,18]]},"585":{"position":[[65,18]]},"589":{"position":[[108,18]]},"590":{"position":[[143,18]]},"1105":{"position":[[171,18]]},"1106":{"position":[[65,18]]},"1110":{"position":[[168,18]]},"1111":{"position":[[65,18]]},"1115":{"position":[[108,18]]},"1116":{"position":[[143,18]]}},"keywords":{}}],["classpath=\\$(/hadoop",{"_index":4152,"title":{},"content":{"580":{"position":[[455,20]]},"1106":{"position":[[455,20]]}},"keywords":{}}],["clean",{"_index":2100,"title":{},"content":{"222":{"position":[[448,7]]},"281":{"position":[[333,5]]},"282":{"position":[[4,5]]},"283":{"position":[[271,5]]},"320":{"position":[[1314,5]]},"338":{"position":[[238,5]]},"341":{"position":[[315,5]]},"375":{"position":[[459,5]]},"553":{"position":[[1048,5]]},"559":{"position":[[672,5],[827,5]]},"807":{"position":[[448,7]]},"852":{"position":[[333,5]]},"853":{"position":[[35,5],[144,5],[232,5],[334,5],[436,5],[537,5],[617,5]]},"854":{"position":[[271,5]]},"877":{"position":[[1314,5]]},"902":{"position":[[459,5]]},"1053":{"position":[[130,5]]},"1079":{"position":[[1048,5]]},"1094":{"position":[[672,5],[827,5]]}},"keywords":{}}],["cleanup",{"_index":1626,"title":{},"content":{"160":{"position":[[156,8]]},"334":{"position":[[477,7]]},"348":{"position":[[92,7]]},"730":{"position":[[156,8]]}},"keywords":{}}],["clear",{"_index":1336,"title":{},"content":{"136":{"position":[[356,5]]},"273":{"position":[[398,5]]},"708":{"position":[[356,5]]},"844":{"position":[[398,5]]}},"keywords":{}}],["clearli",{"_index":1073,"title":{},"content":{"107":{"position":[[6044,7],[6166,7]]},"141":{"position":[[319,7]]}},"keywords":{}}],["cli",{"_index":1834,"title":{"521":{"position":[[10,3]]}},"content":{"179":{"position":[[86,3]]},"204":{"position":[[176,3]]},"230":{"position":[[226,3],[294,3]]},"231":{"position":[[322,3],[877,3]]},"361":{"position":[[12,3]]},"383":{"position":[[226,4]]},"522":{"position":[[17,3]]},"523":{"position":[[44,3],[80,3]]},"749":{"position":[[86,3]]},"753":{"position":[[176,3]]},"793":{"position":[[226,3],[294,3]]},"794":{"position":[[485,3],[1130,3]]},"883":{"position":[[12,3]]},"910":{"position":[[226,4]]}},"keywords":{}}],["cli/api/ui",{"_index":1796,"title":{},"content":{"173":{"position":[[502,11]]},"743":{"position":[[503,11]]}},"keywords":{}}],["cli/sdk",{"_index":1790,"title":{},"content":{"172":{"position":[[735,8]]},"742":{"position":[[735,8]]}},"keywords":{}}],["cli/sdk/ui",{"_index":1479,"title":{},"content":{"151":{"position":[[2290,11]]},"230":{"position":[[573,12]]},"721":{"position":[[2290,11]]},"793":{"position":[[573,12]]}},"keywords":{}}],["click",{"_index":538,"title":{},"content":{"31":{"position":[[146,5]]},"35":{"position":[[811,8],[841,8],[925,8],[1118,8]]},"143":{"position":[[182,8]]},"148":{"position":[[463,5]]},"304":{"position":[[375,5]]},"350":{"position":[[565,8]]},"406":{"position":[[50,5],[158,5],[1149,5]]},"417":{"position":[[29,5]]},"418":{"position":[[91,5]]},"493":{"position":[[47,5]]},"623":{"position":[[146,5]]},"627":{"position":[[811,8],[841,8],[925,8],[1118,8]]},"870":{"position":[[375,5]]},"933":{"position":[[50,5],[158,5],[800,5]]},"944":{"position":[[29,5]]},"945":{"position":[[93,5],[202,5]]},"1007":{"position":[[47,5]]}},"keywords":{}}],["clickstream",{"_index":1623,"title":{},"content":{"160":{"position":[[45,12]]},"730":{"position":[[45,12]]}},"keywords":{}}],["client",{"_index":272,"title":{"361":{"position":[[15,6]]},"494":{"position":[[11,6]]},"883":{"position":[[15,6]]},"1021":{"position":[[11,6]]},"1031":{"position":[[6,6]]}},"content":{"17":{"position":[[427,6]]},"200":{"position":[[226,7],[951,7]]},"231":{"position":[[777,6],[923,6]]},"270":{"position":[[57,6],[270,6],[345,6],[440,6]]},"314":{"position":[[2329,6],[2387,6]]},"315":{"position":[[443,6]]},"317":{"position":[[23,6]]},"383":{"position":[[632,7]]},"389":{"position":[[2104,6],[2257,6],[2530,6],[2910,6],[2996,6],[3149,6],[4509,6],[5018,6],[5633,6],[9162,7],[9262,6],[9989,7],[10089,6],[10944,7],[11039,6],[13760,6],[13985,6],[15332,6],[17946,6],[18099,6],[18372,6],[18752,6],[18820,6],[18973,6],[20333,6],[20842,6],[21457,6],[24880,7],[24980,6],[25707,7],[25807,6],[26662,7],[26757,6],[29309,6],[29534,6],[30881,6]]},"407":{"position":[[549,6]]},"495":{"position":[[0,6]]},"496":{"position":[[226,6]]},"511":{"position":[[49,6]]},"609":{"position":[[427,6]]},"783":{"position":[[226,7],[951,7]]},"794":{"position":[[1006,6],[1176,6]]},"841":{"position":[[57,6],[270,6],[345,6],[440,6]]},"910":{"position":[[632,7]]},"916":{"position":[[2104,6],[2257,6],[2530,6],[2910,6],[2996,6],[3149,6],[4509,6],[5018,6],[5633,6],[9162,7],[9262,6],[9989,7],[10089,6],[10944,7],[11039,6],[13760,6],[13985,6],[15332,6],[17946,6],[18099,6],[18372,6],[18752,6],[18820,6],[18973,6],[20333,6],[20842,6],[21457,6],[24880,7],[24980,6],[25707,7],[25807,6],[26662,7],[26757,6],[29309,6],[29534,6],[30881,6]]},"934":{"position":[[569,6]]},"1022":{"position":[[0,6]]},"1023":{"position":[[226,6]]},"1050":{"position":[[49,6]]}},"keywords":{}}],["client.create_experi",{"_index":3563,"title":{},"content":{"496":{"position":[[254,26]]},"1023":{"position":[[254,26]]}},"keywords":{}}],["client.delete_experiment(\"experiment_1626160071451_0008",{"_index":3575,"title":{},"content":{"500":{"position":[[147,57]]},"1027":{"position":[[147,57]]}},"keywords":{}}],["client.get_experiment(\"experiment_1626160071451_0008",{"_index":3568,"title":{},"content":{"498":{"position":[[161,54]]},"1025":{"position":[[161,54]]}},"keywords":{}}],["client.get_log(\"experiment_1626160071451_0009",{"_index":3581,"title":{},"content":{"501":{"position":[[268,47]]},"1028":{"position":[[268,47]]}},"keywords":{}}],["client.list_experi",{"_index":3573,"title":{},"content":{"499":{"position":[[162,25]]},"1026":{"position":[[162,25]]}},"keywords":{}}],["client.list_log(\"succeed",{"_index":3583,"title":{},"content":{"502":{"position":[[146,28]]},"1029":{"position":[[146,28]]}},"keywords":{}}],["client.patch_experiment(\"experiment_1626160071451_0008",{"_index":3566,"title":{},"content":{"497":{"position":[[229,56]]},"1024":{"position":[[229,56]]}},"keywords":{}}],["client.wait_for_finish(\"experiment_1626160071451_0009",{"_index":3591,"title":{},"content":{"503":{"position":[[226,55]]},"1030":{"position":[[226,55]]}},"keywords":{}}],["client=1.7.2=py37_0",{"_index":698,"title":{},"content":{"71":{"position":[[372,21],[959,21]]},"72":{"position":[[510,21]]},"73":{"position":[[532,21]]},"154":{"position":[[667,19],[1088,19]]},"423":{"position":[[337,21]]},"663":{"position":[[372,21],[959,21]]},"664":{"position":[[510,21]]},"665":{"position":[[532,21]]},"724":{"position":[[667,19],[1088,19]]},"950":{"position":[[337,21]]}},"keywords":{}}],["client\\u003d1.7.2\\u003dpy37_0",{"_index":3404,"title":{},"content":{"423":{"position":[[962,31]]},"425":{"position":[[840,31]]},"428":{"position":[[528,31]]},"434":{"position":[[531,31]]},"950":{"position":[[962,31]]},"952":{"position":[[840,31]]},"955":{"position":[[528,31]]},"961":{"position":[[531,31]]}},"keywords":{}}],["client_1%3a7.2p2",{"_index":3089,"title":{},"content":{"389":{"position":[[10029,16],[25747,16]]},"916":{"position":[[10029,16],[25747,16]]}},"keywords":{}}],["client_4.3.3",{"_index":3079,"title":{},"content":{"389":{"position":[[9203,12],[24921,12]]},"916":{"position":[[9203,12],[24921,12]]}},"keywords":{}}],["client_6.2u5",{"_index":3099,"title":{},"content":{"389":{"position":[[10987,12],[26705,12]]},"916":{"position":[[10987,12],[26705,12]]}},"keywords":{}}],["clon",{"_index":56,"title":{"121":{"position":[[7,5]]},"689":{"position":[[7,5]]}},"content":{"6":{"position":[[6,5]]},"121":{"position":[[48,5],[105,5]]},"217":{"position":[[2079,5]]},"375":{"position":[[827,5]]},"380":{"position":[[4,5]]},"386":{"position":[[479,5]]},"401":{"position":[[13,5],[125,5]]},"411":{"position":[[0,5],[22,5]]},"553":{"position":[[1208,5],[1494,5]]},"595":{"position":[[6,5]]},"689":{"position":[[48,5],[105,5]]},"787":{"position":[[2079,5]]},"902":{"position":[[827,5]]},"907":{"position":[[4,5]]},"913":{"position":[[479,5]]},"928":{"position":[[13,5],[125,5]]},"938":{"position":[[0,5],[24,5]]},"1079":{"position":[[1208,5],[1494,5]]}},"keywords":{}}],["clos",{"_index":1293,"title":{},"content":{"133":{"position":[[1761,7]]},"270":{"position":[[888,7]]},"350":{"position":[[228,5],[574,5]]},"352":{"position":[[1326,6]]},"841":{"position":[[888,7]]}},"keywords":{}}],["cloud",{"_index":1484,"title":{"248":{"position":[[0,5]]},"362":{"position":[[15,5]]},"568":{"position":[[29,5]]},"818":{"position":[[0,5]]},"884":{"position":[[15,5]]},"1088":{"position":[[29,5]]}},"content":{"152":{"position":[[349,5]]},"162":{"position":[[357,5],[818,5]]},"175":{"position":[[92,6],[135,5],[184,6],[302,5],[501,5]]},"179":{"position":[[1138,6]]},"194":{"position":[[255,6]]},"201":{"position":[[957,6]]},"216":{"position":[[124,5],[234,5],[356,5],[533,5]]},"246":{"position":[[30,5],[68,5],[130,5],[268,5],[580,5],[627,5]]},"248":{"position":[[1176,5]]},"411":{"position":[[336,5]]},"568":{"position":[[34,5],[324,5]]},"569":{"position":[[613,7],[1648,7],[1977,6]]},"722":{"position":[[349,5]]},"732":{"position":[[357,5],[818,5]]},"741":{"position":[[1133,6]]},"745":{"position":[[92,6],[135,5],[184,6],[302,5],[501,5]]},"749":{"position":[[1143,6]]},"750":{"position":[[964,6]]},"777":{"position":[[261,6]]},"786":{"position":[[124,5],[234,5],[356,5],[533,5]]},"816":{"position":[[30,5],[68,5],[130,5],[268,5],[585,5],[632,5]]},"818":{"position":[[1176,5]]},"869":{"position":[[679,5]]},"1088":{"position":[[34,5],[324,5]]},"1089":{"position":[[613,7],[1648,7],[1977,6]]}},"keywords":{}}],["cloud.allow",{"_index":1755,"title":{},"content":{"171":{"position":[[1123,11]]}},"keywords":{}}],["clust",{"_index":41,"title":{"5":{"position":[[18,7]]},"8":{"position":[[22,7]]},"193":{"position":[[8,7]]},"238":{"position":[[8,7]]},"257":{"position":[[0,7]]},"261":{"position":[[0,7]]},"263":{"position":[[0,7]]},"273":{"position":[[0,7]]},"390":{"position":[[19,7]]},"391":{"position":[[18,7]]},"410":{"position":[[21,7]]},"411":{"position":[[24,7]]},"594":{"position":[[18,7]]},"597":{"position":[[22,7]]},"776":{"position":[[8,7]]},"801":{"position":[[8,7]]},"828":{"position":[[0,7]]},"832":{"position":[[0,7]]},"834":{"position":[[0,7]]},"844":{"position":[[0,7]]},"917":{"position":[[19,7]]},"918":{"position":[[18,7]]},"937":{"position":[[21,7]]},"938":{"position":[[24,7]]}},"content":{"20":{"position":[[46,7],[326,7],[766,7]]},"21":{"position":[[35,8]]},"29":{"position":[[88,8]]},"162":{"position":[[685,7],[892,7]]},"175":{"position":[[316,9],[421,8],[507,9]]},"176":{"position":[[1160,7]]},"179":{"position":[[1173,7]]},"193":{"position":[[64,7],[191,10],[210,7],[273,8],[334,7],[405,7],[497,7]]},"194":{"position":[[907,7],[1217,7],[1279,7]]},"195":{"position":[[258,7]]},"196":{"position":[[103,7],[670,8]]},"200":{"position":[[1289,7]]},"229":{"position":[[314,7],[545,7],[906,9],[1005,8],[1146,8]]},"231":{"position":[[562,7],[1073,8],[1111,8]]},"232":{"position":[[414,7]]},"249":{"position":[[9,7],[153,7],[179,7]]},"252":{"position":[[253,7],[280,9],[331,8],[391,7]]},"261":{"position":[[70,7],[118,7]]},"263":{"position":[[24,8],[111,7],[218,7],[428,8],[437,7]]},"264":{"position":[[25,10]]},"265":{"position":[[149,10]]},"267":{"position":[[112,10],[156,7],[263,7]]},"268":{"position":[[207,7]]},"269":{"position":[[92,7],[217,7],[279,7],[320,7]]},"270":{"position":[[103,7],[326,7],[421,7]]},"272":{"position":[[134,8]]},"273":{"position":[[4,7],[240,7],[444,7],[604,8],[622,7],[742,7],[987,7],[1191,7],[1444,8]]},"274":{"position":[[129,8],[198,8]]},"275":{"position":[[3,7],[139,7]]},"277":{"position":[[77,7]]},"300":{"position":[[144,8]]},"302":{"position":[[276,7]]},"324":{"position":[[229,7]]},"325":{"position":[[31,7],[51,8]]},"383":{"position":[[856,8]]},"384":{"position":[[56,8],[332,8],[613,8],[715,8],[730,7]]},"389":{"position":[[15703,7],[16175,7]]},"391":{"position":[[109,7],[544,7],[629,7]]},"394":{"position":[[40,7]]},"410":{"position":[[131,7]]},"475":{"position":[[30,7]]},"512":{"position":[[327,8]]},"547":{"position":[[88,8]]},"569":{"position":[[226,8],[376,7],[493,11],[505,8],[629,7],[639,7],[724,8],[761,7],[792,7],[1304,7],[1411,7],[1528,11],[1540,8]]},"577":{"position":[[79,7]]},"582":{"position":[[76,7]]},"587":{"position":[[67,7]]},"617":{"position":[[88,8]]},"620":{"position":[[46,7],[326,7],[766,7]]},"621":{"position":[[35,8]]},"732":{"position":[[685,7],[892,7]]},"745":{"position":[[316,9],[421,8],[507,9]]},"746":{"position":[[1163,7]]},"749":{"position":[[1178,7]]},"776":{"position":[[64,7],[191,10],[210,7],[273,8],[334,7],[405,7],[497,7]]},"777":{"position":[[865,8],[1187,7],[1497,7],[1559,7]]},"778":{"position":[[258,7]]},"779":{"position":[[103,7],[670,8]]},"783":{"position":[[1289,7]]},"792":{"position":[[314,7],[545,7],[906,9],[970,9],[1006,8],[1147,8]]},"794":{"position":[[419,7],[996,7],[1326,8],[1364,8]]},"795":{"position":[[414,7]]},"819":{"position":[[9,7],[153,7],[179,7]]},"822":{"position":[[258,7],[285,9],[336,8],[396,7]]},"832":{"position":[[70,7],[118,7]]},"834":{"position":[[24,8],[111,7],[218,7],[428,8],[437,7]]},"835":{"position":[[25,10]]},"836":{"position":[[149,10]]},"838":{"position":[[112,10],[156,7],[263,7]]},"839":{"position":[[207,7]]},"840":{"position":[[92,7],[217,7],[279,7],[320,7]]},"841":{"position":[[103,7],[326,7],[421,7]]},"843":{"position":[[134,8]]},"844":{"position":[[4,7],[240,7],[444,7],[604,8],[622,7],[742,7],[987,7],[1191,7],[1444,8]]},"845":{"position":[[129,8],[198,8]]},"846":{"position":[[3,7],[139,7]]},"848":{"position":[[77,7]]},"867":{"position":[[144,8]]},"869":{"position":[[276,7],[536,8],[564,7],[885,7]]},"894":{"position":[[229,7]]},"895":{"position":[[31,7],[51,8]]},"910":{"position":[[856,8]]},"911":{"position":[[56,8],[332,8],[613,8],[715,8],[730,7]]},"916":{"position":[[15703,7],[16175,7]]},"918":{"position":[[109,7],[544,7],[629,7]]},"921":{"position":[[40,7]]},"937":{"position":[[131,7]]},"1002":{"position":[[30,7]]},"1051":{"position":[[315,8]]},"1073":{"position":[[88,8]]},"1089":{"position":[[226,8],[376,7],[493,11],[505,8],[629,7],[639,7],[724,8],[761,7],[792,7],[1304,7],[1411,7],[1528,11],[1540,8]]},"1103":{"position":[[79,7]]},"1108":{"position":[[76,7]]},"1113":{"position":[[67,7]]}},"keywords":{}}],["cluster'",{"_index":2226,"title":{},"content":{"270":{"position":[[295,9]]},"273":{"position":[[704,9]]},"512":{"position":[[37,9]]},"841":{"position":[[295,9]]},"844":{"position":[[704,9]]},"1051":{"position":[[37,9]]}},"keywords":{}}],["cluster).there'r",{"_index":2131,"title":{},"content":{"229":{"position":[[970,17]]}},"keywords":{}}],["cluster.mak",{"_index":2321,"title":{},"content":{"300":{"position":[[75,12]]},"867":{"position":[[75,12]]},"869":{"position":[[463,12]]}},"keywords":{}}],["cluster_nam",{"_index":2764,"title":{},"content":{"377":{"position":[[58,12]]},"904":{"position":[[58,12]]}},"keywords":{}}],["cluster_user=`whoami",{"_index":2852,"title":{},"content":{"389":{"position":[[1299,21]]},"916":{"position":[[1299,21]]}},"keywords":{}}],["clustercli",{"_index":2225,"title":{"270":{"position":[[0,13]]},"841":{"position":[[0,13]]}},"content":{"270":{"position":[[4,13]]},"841":{"position":[[4,13]]}},"keywords":{}}],["clusterconfigur",{"_index":2210,"title":{"268":{"position":[[0,16]]},"839":{"position":[[0,16]]}},"content":{},"keywords":{}}],["clustermetadata",{"_index":2228,"title":{"271":{"position":[[0,15]]},"842":{"position":[[0,15]]}},"content":{},"keywords":{}}],["clusterrole=clust",{"_index":3212,"title":{},"content":{"394":{"position":[[184,19]]},"921":{"position":[[184,19]]}},"keywords":{}}],["clusterrolebind",{"_index":3211,"title":{},"content":{"394":{"position":[[144,18]]},"921":{"position":[[144,18]]}},"keywords":{}}],["clusterserv",{"_index":2216,"title":{"269":{"position":[[0,13]]},"840":{"position":[[0,13]]}},"content":{"269":{"position":[[4,13]]},"840":{"position":[[4,13]]}},"keywords":{}}],["clusterstatemachin",{"_index":2221,"title":{},"content":{"269":{"position":[[410,20]]},"270":{"position":[[546,19],[757,19],[802,19]]},"273":{"position":[[714,20]]},"840":{"position":[[410,20]]},"841":{"position":[[546,19],[757,19],[802,19]]},"844":{"position":[[714,20]]}},"keywords":{}}],["cmak",{"_index":3721,"title":{},"content":{"553":{"position":[[545,5]]},"1079":{"position":[[545,5]]}},"keywords":{}}],["cmake_prefix_path=\"$(dirnam",{"_index":3750,"title":{},"content":{"553":{"position":[[1396,28]]},"1079":{"position":[[1396,28]]}},"keywords":{}}],["cmd",{"_index":725,"title":{},"content":{"77":{"position":[[182,6],[940,6]]},"78":{"position":[[182,6],[1087,6]]},"79":{"position":[[449,6],[1097,6]]},"80":{"position":[[482,6]]},"81":{"position":[[190,6],[793,6]]},"82":{"position":[[485,6]]},"86":{"position":[[581,6]]},"89":{"position":[[578,6]]},"223":{"position":[[263,4]]},"224":{"position":[[436,3],[468,3]]},"226":{"position":[[542,3]]},"437":{"position":[[441,3],[1071,3]]},"438":{"position":[[148,6]]},"441":{"position":[[148,6]]},"449":{"position":[[149,6]]},"460":{"position":[[985,3],[1284,3]]},"461":{"position":[[549,6]]},"466":{"position":[[554,6]]},"492":{"position":[[108,6]]},"496":{"position":[[367,6]]},"497":{"position":[[374,6]]},"669":{"position":[[581,6]]},"672":{"position":[[578,6]]},"676":{"position":[[182,6],[940,6]]},"677":{"position":[[182,6],[1087,6]]},"678":{"position":[[449,6],[1097,6]]},"679":{"position":[[482,6]]},"680":{"position":[[190,6],[793,6]]},"681":{"position":[[485,6]]},"808":{"position":[[263,4]]},"809":{"position":[[436,3],[468,3]]},"811":{"position":[[542,3]]},"964":{"position":[[441,3],[1071,3]]},"965":{"position":[[148,6]]},"968":{"position":[[148,6]]},"976":{"position":[[149,6]]},"987":{"position":[[985,3],[1284,3]]},"988":{"position":[[549,6]]},"993":{"position":[[554,6]]},"1006":{"position":[[108,6]]},"1023":{"position":[[367,6]]},"1024":{"position":[[374,6]]}},"keywords":{}}],["cmd\":\"python",{"_index":3442,"title":{},"content":{"438":{"position":[[977,13]]},"441":{"position":[[1097,13]]},"443":{"position":[[570,13],[1578,13]]},"446":{"position":[[514,13]]},"449":{"position":[[1008,13]]},"452":{"position":[[489,13]]},"461":{"position":[[2343,13]]},"463":{"position":[[1345,13]]},"466":{"position":[[2373,13]]},"469":{"position":[[1369,13]]},"472":{"position":[[668,13]]},"965":{"position":[[977,13]]},"968":{"position":[[1097,13]]},"970":{"position":[[570,13],[1578,13]]},"973":{"position":[[514,13]]},"976":{"position":[[1008,13]]},"979":{"position":[[489,13]]},"988":{"position":[[2343,13]]},"990":{"position":[[1345,13]]},"993":{"position":[[2373,13]]},"996":{"position":[[1369,13]]},"999":{"position":[[668,13]]}},"keywords":{}}],["cmd\":null",{"_index":3453,"title":{},"content":{"438":{"position":[[1382,11],[1552,11]]},"441":{"position":[[1474,11],[1644,11]]},"443":{"position":[[974,11],[1144,11],[1955,11],[2125,11]]},"446":{"position":[[891,11],[1061,11]]},"449":{"position":[[1413,11],[1583,11]]},"452":{"position":[[894,11],[1064,11]]},"461":{"position":[[2771,11],[2944,11]]},"463":{"position":[[1773,11],[1946,11]]},"466":{"position":[[2801,11],[2971,11]]},"469":{"position":[[1797,11],[1967,11]]},"472":{"position":[[1072,11],[1242,11]]},"965":{"position":[[1382,11],[1552,11]]},"968":{"position":[[1474,11],[1644,11]]},"970":{"position":[[974,11],[1144,11],[1955,11],[2125,11]]},"973":{"position":[[891,11],[1061,11]]},"976":{"position":[[1413,11],[1583,11]]},"979":{"position":[[894,11],[1064,11]]},"988":{"position":[[2771,11],[2944,11]]},"990":{"position":[[1773,11],[1946,11]]},"993":{"position":[[2801,11],[2971,11]]},"996":{"position":[[1797,11],[1967,11]]},"999":{"position":[[1072,11],[1242,11]]}},"keywords":{}}],["cmd='python",{"_index":3271,"title":{},"content":{"407":{"position":[[816,11]]},"934":{"position":[[836,11]]}},"keywords":{}}],["cn",{"_index":674,"title":{"50":{"position":[[10,2]]},"642":{"position":[[10,2]]}},"content":{},"keywords":{}}],["co",{"_index":2186,"title":{},"content":{"261":{"position":[[274,2]]},"311":{"position":[[4,2]]},"334":{"position":[[296,2],[1152,2]]},"348":{"position":[[174,2]]},"832":{"position":[[274,2]]}},"keywords":{}}],["cod",{"_index":705,"title":{"132":{"position":[[0,4]]},"165":{"position":[[41,4]]},"189":{"position":[[44,4]]},"283":{"position":[[16,4]]},"340":{"position":[[23,4]]},"401":{"position":[[24,4]]},"423":{"position":[[0,4]]},"425":{"position":[[0,4]]},"428":{"position":[[0,4]]},"431":{"position":[[0,4]]},"434":{"position":[[0,4]]},"438":{"position":[[0,4]]},"441":{"position":[[0,4]]},"443":{"position":[[0,4]]},"446":{"position":[[0,4]]},"449":{"position":[[0,4]]},"452":{"position":[[0,4]]},"454":{"position":[[0,4]]},"457":{"position":[[0,4]]},"461":{"position":[[0,4]]},"463":{"position":[[0,4]]},"466":{"position":[[0,4]]},"469":{"position":[[0,4]]},"472":{"position":[[0,4]]},"479":{"position":[[0,4]]},"482":{"position":[[0,4]]},"485":{"position":[[0,4]]},"488":{"position":[[0,4]]},"509":{"position":[[0,6]]},"700":{"position":[[0,4]]},"735":{"position":[[41,4]]},"772":{"position":[[44,4]]},"853":{"position":[[16,4]]},"854":{"position":[[16,4]]},"928":{"position":[[24,4]]},"950":{"position":[[0,4]]},"952":{"position":[[0,4]]},"955":{"position":[[0,4]]},"958":{"position":[[0,4]]},"961":{"position":[[0,4]]},"965":{"position":[[0,4]]},"968":{"position":[[0,4]]},"970":{"position":[[0,4]]},"973":{"position":[[0,4]]},"976":{"position":[[0,4]]},"979":{"position":[[0,4]]},"981":{"position":[[0,4]]},"984":{"position":[[0,4]]},"988":{"position":[[0,4]]},"990":{"position":[[0,4]]},"993":{"position":[[0,4]]},"996":{"position":[[0,4]]},"999":{"position":[[0,4]]},"1011":{"position":[[0,4]]},"1014":{"position":[[0,4]]},"1017":{"position":[[0,4]]},"1020":{"position":[[0,4]]},"1048":{"position":[[0,6]]}},"content":{"71":{"position":[[587,7]]},"72":{"position":[[136,7]]},"73":{"position":[[160,7]]},"74":{"position":[[483,7]]},"75":{"position":[[163,7]]},"77":{"position":[[627,7]]},"78":{"position":[[774,7]]},"79":{"position":[[134,7]]},"80":{"position":[[169,7]]},"81":{"position":[[665,7]]},"82":{"position":[[172,7]]},"83":{"position":[[144,7]]},"84":{"position":[[179,7]]},"93":{"position":[[159,6]]},"94":{"position":[[171,6]]},"95":{"position":[[316,6]]},"96":{"position":[[176,6]]},"97":{"position":[[224,6]]},"103":{"position":[[146,7]]},"107":{"position":[[348,4],[367,4],[1473,5],[3073,5],[3099,4],[8793,4],[8899,5],[9017,4],[9070,4],[9521,4],[10765,4]]},"110":{"position":[[149,6]]},"111":{"position":[[169,6]]},"112":{"position":[[272,6]]},"113":{"position":[[174,6]]},"115":{"position":[[210,6]]},"117":{"position":[[133,4]]},"118":{"position":[[11,4]]},"124":{"position":[[17,4],[62,7],[77,4]]},"130":{"position":[[399,4]]},"132":{"position":[[24,4],[102,4]]},"133":{"position":[[820,4],[1630,4],[1643,5]]},"138":{"position":[[30,4]]},"145":{"position":[[117,5]]},"147":{"position":[[64,4]]},"149":{"position":[[17,4]]},"159":{"position":[[1078,7]]},"165":{"position":[[266,5]]},"167":{"position":[[242,4]]},"181":{"position":[[386,4],[1359,5],[2192,5]]},"182":{"position":[[286,5],[766,4],[800,4],[1260,5]]},"184":{"position":[[198,4],[218,5]]},"187":{"position":[[145,4],[165,5]]},"189":{"position":[[22,5],[60,4],[682,4],[712,4]]},"190":{"position":[[620,4]]},"200":{"position":[[2699,6]]},"204":{"position":[[513,4]]},"210":{"position":[[85,5],[215,6]]},"215":{"position":[[573,5],[1902,4]]},"216":{"position":[[552,4],[623,4]]},"217":{"position":[[6,4],[92,5],[101,4],[180,4],[348,4],[512,4],[662,4],[713,4],[840,4],[908,4],[974,4],[1044,5],[1100,5],[1189,4],[1255,5],[1479,5],[1596,5],[1986,4],[2006,5],[2088,7],[2118,4],[2138,5],[2161,4],[2216,4],[2241,5]]},"313":{"position":[[53,4],[134,4],[195,4],[253,4]]},"316":{"position":[[284,4]]},"326":{"position":[[12,4]]},"338":{"position":[[125,4]]},"339":{"position":[[44,4]]},"340":{"position":[[54,4]]},"341":{"position":[[19,4]]},"349":{"position":[[111,4]]},"401":{"position":[[19,4],[115,5]]},"403":{"position":[[88,4]]},"407":{"position":[[1437,4]]},"414":{"position":[[11,4]]},"418":{"position":[[7,5]]},"437":{"position":[[256,4],[1308,4],[1337,4]]},"448":{"position":[[252,4]]},"460":{"position":[[800,4],[1423,4],[1452,4]]},"475":{"position":[[18,4]]},"509":{"position":[[124,4]]},"511":{"position":[[163,4],[209,4]]},"571":{"position":[[95,5]]},"591":{"position":[[317,4]]},"663":{"position":[[587,7]]},"664":{"position":[[136,7]]},"665":{"position":[[160,7]]},"666":{"position":[[483,7]]},"667":{"position":[[163,7]]},"676":{"position":[[627,7]]},"677":{"position":[[774,7]]},"678":{"position":[[134,7]]},"679":{"position":[[169,7]]},"680":{"position":[[665,7]]},"681":{"position":[[172,7]]},"682":{"position":[[144,7]]},"683":{"position":[[179,7]]},"685":{"position":[[133,4]]},"686":{"position":[[11,4]]},"692":{"position":[[17,4],[62,7],[77,4]]},"698":{"position":[[399,4]]},"700":{"position":[[24,4],[102,4]]},"705":{"position":[[146,7]]},"710":{"position":[[30,4]]},"715":{"position":[[117,5]]},"717":{"position":[[64,4]]},"719":{"position":[[17,4]]},"729":{"position":[[1078,7]]},"735":{"position":[[266,5]]},"737":{"position":[[242,4]]},"753":{"position":[[513,4]]},"759":{"position":[[85,5],[215,6]]},"764":{"position":[[386,4],[1365,5],[1625,5],[2205,5]]},"765":{"position":[[286,5],[766,4],[800,4],[1260,5]]},"767":{"position":[[198,4],[218,5]]},"770":{"position":[[145,4],[165,5]]},"772":{"position":[[22,5],[60,4],[682,4],[712,4]]},"773":{"position":[[620,4]]},"783":{"position":[[2699,6]]},"785":{"position":[[573,5],[1902,4]]},"786":{"position":[[552,4],[623,4]]},"787":{"position":[[6,4],[92,5],[101,4],[180,4],[348,4],[512,4],[662,4],[713,4],[840,4],[908,4],[974,4],[1044,5],[1100,5],[1189,4],[1255,5],[1479,5],[1596,5],[1986,4],[2006,5],[2088,7],[2118,4],[2138,5],[2161,4],[2216,4],[2241,5]]},"853":{"position":[[595,4]]},"896":{"position":[[12,4]]},"928":{"position":[[19,4],[115,5]]},"930":{"position":[[88,4]]},"934":{"position":[[1457,4]]},"941":{"position":[[11,4]]},"945":{"position":[[7,5]]},"964":{"position":[[256,4],[1308,4],[1337,4]]},"975":{"position":[[252,4]]},"987":{"position":[[800,4],[1423,4],[1452,4]]},"1002":{"position":[[18,4]]},"1048":{"position":[[124,4]]},"1091":{"position":[[95,5]]},"1117":{"position":[[317,4]]}},"keywords":{}}],["code\":200",{"_index":879,"title":{},"content":{"98":{"position":[[224,11]]},"100":{"position":[[403,11]]},"101":{"position":[[142,11]]},"102":{"position":[[139,11]]},"105":{"position":[[284,11]]},"106":{"position":[[216,11]]},"109":{"position":[[278,11]]},"114":{"position":[[202,11]]},"423":{"position":[[542,11]]},"425":{"position":[[91,11]]},"428":{"position":[[108,11]]},"431":{"position":[[429,11]]},"434":{"position":[[111,11]]},"438":{"position":[[583,11]]},"441":{"position":[[703,11]]},"443":{"position":[[90,11]]},"446":{"position":[[120,11]]},"449":{"position":[[614,11]]},"452":{"position":[[123,11]]},"454":{"position":[[95,11]]},"457":{"position":[[125,11]]},"461":{"position":[[1089,11]]},"463":{"position":[[88,11]]},"466":{"position":[[1115,11]]},"469":{"position":[[111,11]]},"472":{"position":[[272,11]]},"479":{"position":[[363,11]]},"482":{"position":[[124,11]]},"485":{"position":[[116,11]]},"488":{"position":[[120,11]]},"702":{"position":[[403,11]]},"703":{"position":[[142,11]]},"704":{"position":[[139,11]]},"950":{"position":[[542,11]]},"952":{"position":[[91,11]]},"955":{"position":[[108,11]]},"958":{"position":[[429,11]]},"961":{"position":[[111,11]]},"965":{"position":[[583,11]]},"968":{"position":[[703,11]]},"970":{"position":[[90,11]]},"973":{"position":[[120,11]]},"976":{"position":[[614,11]]},"979":{"position":[[123,11]]},"981":{"position":[[95,11]]},"984":{"position":[[125,11]]},"988":{"position":[[1089,11]]},"990":{"position":[[88,11]]},"993":{"position":[[1115,11]]},"996":{"position":[[111,11]]},"999":{"position":[[272,11]]},"1011":{"position":[[363,11]]},"1014":{"position":[[124,11]]},"1017":{"position":[[116,11]]},"1020":{"position":[[120,11]]}},"keywords":{}}],["code\":nul",{"_index":3458,"title":{},"content":{"438":{"position":[[1628,11]]},"441":{"position":[[1720,11]]},"443":{"position":[[1220,11],[2201,11]]},"446":{"position":[[1137,11]]},"449":{"position":[[1659,11]]},"452":{"position":[[1140,11]]},"461":{"position":[[3023,11]]},"463":{"position":[[2025,11]]},"466":{"position":[[3047,11]]},"469":{"position":[[2043,11]]},"472":{"position":[[1318,11]]},"965":{"position":[[1628,11]]},"968":{"position":[[1720,11]]},"970":{"position":[[1220,11],[2201,11]]},"973":{"position":[[1137,11]]},"976":{"position":[[1659,11]]},"979":{"position":[[1140,11]]},"988":{"position":[[3023,11]]},"990":{"position":[[2025,11]]},"993":{"position":[[3047,11]]},"996":{"position":[[2043,11]]},"999":{"position":[[1318,11]]}},"keywords":{}}],["code.experi",{"_index":1856,"title":{},"content":{"181":{"position":[[1618,15]]}},"keywords":{}}],["code/train",{"_index":1883,"title":{},"content":{"182":{"position":[[1341,14]]},"765":{"position":[[1341,14]]}},"keywords":{}}],["code=code_spec",{"_index":3285,"title":{},"content":{"407":{"position":[[1223,15]]},"934":{"position":[[1243,15]]}},"keywords":{}}],["code_spec",{"_index":3279,"title":{},"content":{"407":{"position":[[1058,9]]},"934":{"position":[[1078,9]]}},"keywords":{}}],["codebas",{"_index":947,"title":{},"content":{"107":{"position":[[389,9],[3940,9],[4176,8],[7455,9],[8824,8],[9360,8],[9378,8],[9459,9]]},"133":{"position":[[261,8],[859,9]]}},"keywords":{}}],["codeboth",{"_index":3606,"title":{},"content":{"509":{"position":[[64,8]]},"1048":{"position":[[64,8]]}},"keywords":{}}],["codespec",{"_index":3263,"title":{},"content":{"407":{"position":[[521,8]]},"437":{"position":[[261,8],[281,9],[1144,9]]},"448":{"position":[[257,8]]},"460":{"position":[[805,8],[825,9],[1357,9]]},"934":{"position":[[541,8]]},"964":{"position":[[261,8],[281,9],[1144,9]]},"975":{"position":[[257,8]]},"987":{"position":[[805,8],[825,9],[1357,9]]}},"keywords":{}}],["codespec(sync_mode='git",{"_index":3280,"title":{},"content":{"407":{"position":[[1070,25]]},"934":{"position":[[1090,25]]}},"keywords":{}}],["collabor",{"_index":1734,"title":{},"content":{"170":{"position":[[451,11]]},"740":{"position":[[451,11]]}},"keywords":{}}],["collect",{"_index":954,"title":{},"content":{"107":{"position":[[568,12]]},"226":{"position":[[161,11]]},"273":{"position":[[1011,7]]},"811":{"position":[[161,11]]},"844":{"position":[[1011,7]]}},"keywords":{}}],["collect(collectors.toset",{"_index":3629,"title":{},"content":{"511":{"position":[[435,29],[653,30]]}},"keywords":{}}],["column",{"_index":1629,"title":{},"content":{"160":{"position":[[201,8]]},"161":{"position":[[729,7]]},"730":{"position":[[201,8]]},"731":{"position":[[729,7]]}},"keywords":{}}],["com",{"_index":1568,"title":{},"content":{"159":{"position":[[221,6]]},"729":{"position":[[221,6]]}},"keywords":{}}],["combin",{"_index":1476,"title":{},"content":{"151":{"position":[[2089,12]]},"246":{"position":[[238,8]]},"721":{"position":[[2089,12]]},"816":{"position":[[238,8]]}},"keywords":{}}],["comm",{"_index":512,"title":{},"content":{"28":{"position":[[941,6]]},"546":{"position":[[941,6]]},"616":{"position":[[941,6]]},"1072":{"position":[[941,6]]}},"keywords":{}}],["command",{"_index":79,"title":{},"content":{"7":{"position":[[44,8]]},"20":{"position":[[745,8]]},"26":{"position":[[156,8]]},"27":{"position":[[51,7]]},"156":{"position":[[909,7]]},"171":{"position":[[65,8],[83,8]]},"217":{"position":[[2065,8]]},"226":{"position":[[567,7]]},"269":{"position":[[557,9]]},"308":{"position":[[5,7]]},"314":{"position":[[1853,7]]},"320":{"position":[[1088,8]]},"325":{"position":[[446,7]]},"380":{"position":[[126,9]]},"384":{"position":[[1093,7]]},"386":{"position":[[864,7]]},"391":{"position":[[158,8]]},"393":{"position":[[43,8]]},"394":{"position":[[18,8]]},"395":{"position":[[71,8]]},"437":{"position":[[452,8],[1082,8]]},"460":{"position":[[996,8],[1295,8]]},"510":{"position":[[298,7]]},"522":{"position":[[38,7]]},"529":{"position":[[80,7]]},"533":{"position":[[86,7]]},"544":{"position":[[156,8]]},"545":{"position":[[51,7]]},"549":{"position":[[1337,8]]},"551":{"position":[[80,7]]},"556":{"position":[[82,7]]},"565":{"position":[[154,7],[379,7]]},"566":{"position":[[739,7]]},"568":{"position":[[220,7],[523,7]]},"578":{"position":[[513,8]]},"579":{"position":[[1027,7]]},"584":{"position":[[887,7]]},"589":{"position":[[1181,7]]},"596":{"position":[[44,8]]},"614":{"position":[[156,8]]},"615":{"position":[[51,7]]},"620":{"position":[[745,8]]},"726":{"position":[[909,7]]},"741":{"position":[[65,8],[83,8]]},"787":{"position":[[2065,8]]},"811":{"position":[[567,7]]},"840":{"position":[[557,9]]},"874":{"position":[[5,7]]},"877":{"position":[[1088,8]]},"895":{"position":[[446,7]]},"907":{"position":[[126,9]]},"911":{"position":[[1093,7]]},"913":{"position":[[864,7]]},"918":{"position":[[158,8]]},"920":{"position":[[43,8]]},"921":{"position":[[18,8]]},"922":{"position":[[71,8]]},"964":{"position":[[452,8],[1082,8]]},"987":{"position":[[996,8],[1295,8]]},"1049":{"position":[[298,7]]},"1070":{"position":[[156,8]]},"1071":{"position":[[51,7]]},"1075":{"position":[[1337,8]]},"1077":{"position":[[80,7]]},"1082":{"position":[[82,7]]},"1085":{"position":[[154,7],[379,7]]},"1086":{"position":[[739,7]]},"1088":{"position":[[220,7],[523,7]]},"1104":{"position":[[513,8]]},"1105":{"position":[[1027,7]]},"1110":{"position":[[887,7]]},"1115":{"position":[[1181,7]]}},"keywords":{}}],["commandlin",{"_index":2029,"title":{},"content":{"212":{"position":[[393,12]]},"761":{"position":[[393,12]]}},"keywords":{}}],["comment",{"_index":607,"title":{"131":{"position":[[23,8]]},"699":{"position":[[23,8]]}},"content":{"35":{"position":[[617,7],[702,7]]},"55":{"position":[[335,7]]},"130":{"position":[[29,7],[127,7],[548,10]]},"131":{"position":[[125,9]]},"139":{"position":[[326,9]]},"331":{"position":[[1309,8],[1331,7]]},"627":{"position":[[617,7],[702,7]]},"647":{"position":[[335,7]]},"698":{"position":[[29,7],[127,7],[548,10]]},"699":{"position":[[125,9]]},"711":{"position":[[326,9]]}},"keywords":{}}],["commit",{"_index":1003,"title":{"124":{"position":[[24,7]]},"127":{"position":[[52,6]]},"138":{"position":[[0,6]]},"146":{"position":[[7,6]]},"692":{"position":[[24,7]]},"695":{"position":[[52,6]]},"710":{"position":[[0,6]]},"716":{"position":[[7,6]]}},"content":{"107":{"position":[[2250,6],[2466,6],[7526,6],[7555,6],[8852,9],[9029,9],[9996,6],[10143,6]]},"124":{"position":[[100,7],[136,6],[173,8],[207,6]]},"125":{"position":[[196,8],[221,6]]},"127":{"position":[[80,7]]},"131":{"position":[[9,7]]},"135":{"position":[[452,6]]},"136":{"position":[[291,6],[595,7],[708,7]]},"146":{"position":[[11,6]]},"148":{"position":[[300,6]]},"272":{"position":[[272,6]]},"304":{"position":[[170,10]]},"321":{"position":[[12,6]]},"349":{"position":[[379,6]]},"692":{"position":[[100,7],[136,6],[173,8],[207,6]]},"693":{"position":[[196,8],[221,6]]},"695":{"position":[[80,7]]},"699":{"position":[[9,7]]},"707":{"position":[[452,6]]},"708":{"position":[[291,6],[595,7],[708,7]]},"716":{"position":[[11,6]]},"718":{"position":[[300,6]]},"843":{"position":[[272,6]]},"870":{"position":[[170,10]]},"878":{"position":[[12,6]]}},"keywords":{}}],["committ",{"_index":981,"title":{"133":{"position":[[16,9]]},"134":{"position":[[27,10]]},"135":{"position":[[4,10]]},"140":{"position":[[14,9]]},"141":{"position":[[43,9]]},"145":{"position":[[18,10]]},"706":{"position":[[27,10]]},"707":{"position":[[4,10]]},"715":{"position":[[18,10]]}},"content":{"107":{"position":[[1633,10],[1713,10],[1738,10],[1805,10],[1871,10],[1959,9],[2070,9],[2211,9],[2565,10],[2712,10],[2845,9],[2911,10],[2924,9],[3225,9],[3640,9],[3673,9],[7169,10],[8867,10],[8971,11],[9659,9],[9683,9],[9758,9],[9779,9],[9880,9],[9962,9],[10109,9],[10302,9]]},"130":{"position":[[261,9],[299,9],[533,11]]},"131":{"position":[[135,10]]},"133":{"position":[[80,9],[213,9],[401,10],[599,10],[650,9],[725,9],[2390,9],[2533,9]]},"135":{"position":[[4,10],[61,9],[97,9],[119,9],[161,9]]},"136":{"position":[[10,10],[151,9],[185,9],[475,10],[654,9]]},"137":{"position":[[92,10],[217,9],[344,9]]},"139":{"position":[[39,11],[190,10],[373,10]]},"141":{"position":[[648,9],[2208,9]]},"145":{"position":[[174,9],[310,9],[501,9]]},"146":{"position":[[47,11]]},"513":{"position":[[21,9]]},"698":{"position":[[261,9],[299,9],[533,11]]},"699":{"position":[[135,10]]},"707":{"position":[[4,10],[61,9],[97,9],[119,9],[161,9]]},"708":{"position":[[10,10],[151,9],[185,9],[475,10],[654,9]]},"709":{"position":[[92,10],[217,9],[344,9]]},"711":{"position":[[39,11],[190,10],[373,10]]},"715":{"position":[[174,9],[310,9]]},"716":{"position":[[47,11]]},"1052":{"position":[[21,9]]}},"keywords":{}}],["committership",{"_index":1423,"title":{},"content":{"145":{"position":[[136,14]]},"715":{"position":[[136,14]]}},"keywords":{}}],["committersmaintain",{"_index":1047,"title":{},"content":{"107":{"position":[[4346,21]]}},"keywords":{}}],["common",{"_index":1022,"title":{"197":{"position":[[0,6]]},"363":{"position":[[15,7]]},"780":{"position":[[0,6]]},"885":{"position":[[15,7]]}},"content":{"107":{"position":[[3351,6]]},"152":{"position":[[226,6]]},"165":{"position":[[241,6]]},"175":{"position":[[454,6]]},"190":{"position":[[10,6],[169,14],[730,13]]},"197":{"position":[[57,14]]},"213":{"position":[[377,6]]},"219":{"position":[[439,6]]},"383":{"position":[[995,6]]},"386":{"position":[[13,6]]},"389":{"position":[[2070,6],[2120,6],[2715,6],[2928,6],[3012,6],[4625,6],[5530,6],[9343,7],[9443,6],[10777,7],[10870,6],[13812,6],[15225,6],[17912,6],[17962,6],[18557,6],[18770,6],[18836,6],[20449,6],[21354,6],[25061,7],[25161,6],[26495,7],[26588,6],[29361,6],[30774,6]]},"559":{"position":[[642,6]]},"722":{"position":[[226,6]]},"735":{"position":[[241,6]]},"745":{"position":[[454,6]]},"762":{"position":[[377,6]]},"773":{"position":[[10,6],[169,14],[730,13]]},"780":{"position":[[57,14]]},"789":{"position":[[439,6]]},"910":{"position":[[995,6]]},"913":{"position":[[13,6]]},"916":{"position":[[2070,6],[2120,6],[2715,6],[2928,6],[3012,6],[4625,6],[5530,6],[9343,7],[9443,6],[10777,7],[10870,6],[13812,6],[15225,6],[17912,6],[17962,6],[18557,6],[18770,6],[18836,6],[20449,6],[21354,6],[25061,7],[25161,6],[26495,7],[26588,6],[29361,6],[30774,6]]},"1094":{"position":[[642,6]]}},"keywords":{}}],["common_4.3.3",{"_index":3081,"title":{},"content":{"389":{"position":[[9384,12],[25102,12]]},"916":{"position":[[9384,12],[25102,12]]}},"keywords":{}}],["common_6.2u5",{"_index":3097,"title":{},"content":{"389":{"position":[[10820,12],[26538,12]]},"916":{"position":[[10820,12],[26538,12]]}},"keywords":{}}],["commonli",{"_index":561,"title":{},"content":{"33":{"position":[[158,8]]},"248":{"position":[[972,8]]},"625":{"position":[[158,8]]},"818":{"position":[[972,8]]}},"keywords":{}}],["commun",{"_index":972,"title":{"142":{"position":[[17,9]]},"143":{"position":[[0,13]]},"147":{"position":[[0,13]]},"352":{"position":[[22,9]]},"712":{"position":[[17,9]]},"713":{"position":[[0,13]]},"717":{"position":[[0,13]]}},"content":{"107":{"position":[[1336,9],[7322,10]]},"133":{"position":[[26,9],[336,9],[1878,9],[2058,9],[2464,10],[2522,10],[2827,10]]},"141":{"position":[[80,9]]},"143":{"position":[[25,9]]},"147":{"position":[[0,13],[35,9]]},"167":{"position":[[298,9],[543,9]]},"212":{"position":[[423,9]]},"263":{"position":[[49,11]]},"270":{"position":[[82,11]]},"351":{"position":[[25,10]]},"352":{"position":[[1306,10],[1475,10]]},"357":{"position":[[302,9],[452,10]]},"511":{"position":[[73,11]]},"591":{"position":[[159,10]]},"713":{"position":[[25,9]]},"717":{"position":[[0,13],[35,9]]},"737":{"position":[[298,9],[543,9]]},"761":{"position":[[423,9]]},"834":{"position":[[49,11]]},"841":{"position":[[82,11]]},"1050":{"position":[[73,11]]},"1117":{"position":[[159,10]]}},"keywords":{}}],["communication=tf.distribute.experimental.collectivecommunication.auto",{"_index":3360,"title":{},"content":{"415":{"position":[[1426,70]]},"942":{"position":[[1444,70]]}},"keywords":{}}],["compani",{"_index":1563,"title":{},"content":{"159":{"position":[[58,9],[211,9],[1613,7],[2809,9]]},"160":{"position":[[679,10]]},"162":{"position":[[525,7]]},"729":{"position":[[58,9],[211,9],[1613,7],[2809,9]]},"730":{"position":[[679,10]]},"732":{"position":[[525,7]]}},"keywords":{}}],["company'",{"_index":1671,"title":{},"content":{"162":{"position":[[766,9]]},"732":{"position":[[766,9]]}},"keywords":{}}],["company.answ",{"_index":1594,"title":{},"content":{"159":{"position":[[1661,14]]},"729":{"position":[[1661,14]]}},"keywords":{}}],["compar",{"_index":1232,"title":{},"content":{"128":{"position":[[69,7]]},"475":{"position":[[479,7]]},"696":{"position":[[69,7]]},"945":{"position":[[130,7],[208,7]]},"1002":{"position":[[479,7]]}},"keywords":{}}],["compat",{"_index":659,"title":{"416":{"position":[[26,10]]},"943":{"position":[[26,10]]}},"content":{"35":{"position":[[3440,10]]},"410":{"position":[[43,10]]},"627":{"position":[[3440,10]]},"937":{"position":[[43,10]]}},"keywords":{}}],["compil",{"_index":2418,"title":{"337":{"position":[[3,7]]},"347":{"position":[[15,8]]}},"content":{"316":{"position":[[296,8]]},"320":{"position":[[1102,7]]},"324":{"position":[[260,7]]},"338":{"position":[[162,12]]},"339":{"position":[[100,12]]},"341":{"position":[[0,7],[307,7],[351,8]]},"375":{"position":[[279,8]]},"513":{"position":[[230,9]]},"877":{"position":[[1102,7]]},"894":{"position":[[260,7]]},"902":{"position":[[279,8]]},"1052":{"position":[[230,9]]}},"keywords":{}}],["complet",{"_index":1264,"title":{"313":{"position":[[36,8]]}},"content":{"133":{"position":[[36,10],[2134,8]]},"141":{"position":[[1821,10],[2155,10]]},"168":{"position":[[397,9]]},"195":{"position":[[383,8]]},"248":{"position":[[842,10]]},"251":{"position":[[42,8]]},"389":{"position":[[16192,8]]},"738":{"position":[[397,9]]},"778":{"position":[[383,8]]},"818":{"position":[[842,10]]},"821":{"position":[[42,8]]},"916":{"position":[[16192,8]]}},"keywords":{}}],["complex",{"_index":1534,"title":{"161":{"position":[[8,7]]},"731":{"position":[[8,7]]}},"content":{"156":{"position":[[48,12],[146,13]]},"161":{"position":[[8,7]]},"222":{"position":[[382,10]]},"274":{"position":[[34,10]]},"389":{"position":[[16031,9]]},"726":{"position":[[48,12],[146,13]]},"731":{"position":[[8,7]]},"807":{"position":[[382,10]]},"845":{"position":[[34,10]]},"916":{"position":[[16031,9]]}},"keywords":{}}],["compli",{"_index":1694,"title":{"164":{"position":[[8,6]]},"734":{"position":[[8,6]]}},"content":{},"keywords":{}}],["compliant",{"_index":2350,"title":{"312":{"position":[[42,9]]}},"content":{},"keywords":{}}],["compon",{"_index":1559,"title":{"163":{"position":[[72,10]]},"196":{"position":[[35,10]]},"206":{"position":[[24,10]]},"232":{"position":[[17,10]]},"733":{"position":[[72,10]]},"755":{"position":[[24,10]]},"779":{"position":[[35,10]]},"795":{"position":[[17,10]]}},"content":{"158":{"position":[[292,11]]},"163":{"position":[[427,10]]},"179":{"position":[[1500,9],[1534,10]]},"181":{"position":[[122,11],[182,11]]},"218":{"position":[[145,10]]},"222":{"position":[[184,10]]},"230":{"position":[[709,10],[729,9]]},"242":{"position":[[41,11]]},"511":{"position":[[134,10]]},"728":{"position":[[292,11]]},"733":{"position":[[427,10]]},"749":{"position":[[1505,9],[1539,10]]},"764":{"position":[[122,11],[182,11]]},"788":{"position":[[145,10]]},"793":{"position":[[709,10],[729,9]]},"805":{"position":[[41,11]]},"807":{"position":[[184,10]]}},"keywords":{}}],["components/servic",{"_index":2149,"title":{"242":{"position":[[0,19]]},"805":{"position":[[0,19]]}},"content":{},"keywords":{}}],["compress",{"_index":3749,"title":{},"content":{"553":{"position":[[1380,8]]},"1079":{"position":[[1380,8]]}},"keywords":{}}],["comput",{"_index":1801,"title":{"193":{"position":[[0,7]]},"238":{"position":[[0,7]]},"776":{"position":[[0,7]]},"801":{"position":[[0,7]]}},"content":{"175":{"position":[[227,7]]},"179":{"position":[[618,8],[1068,7],[1109,7],[1238,8]]},"193":{"position":[[183,7],[202,7],[265,7],[326,7]]},"196":{"position":[[94,8]]},"200":{"position":[[1281,7]]},"229":{"position":[[306,7],[537,7],[898,7],[997,7],[1138,7]]},"232":{"position":[[405,8]]},"246":{"position":[[74,9],[136,10],[274,10]]},"745":{"position":[[227,7]]},"749":{"position":[[618,8],[1073,7],[1114,7],[1243,8]]},"776":{"position":[[183,7],[202,7],[265,7],[326,7]]},"779":{"position":[[94,8]]},"783":{"position":[[1281,7]]},"792":{"position":[[306,7],[537,7],[898,7],[998,7],[1139,7]]},"795":{"position":[[405,8]]},"816":{"position":[[74,9],[136,10],[274,10]]}},"keywords":{}}],["compute/storag",{"_index":1800,"title":{},"content":{"175":{"position":[[154,15]]},"745":{"position":[[154,15]]}},"keywords":{}}],["computeclust",{"_index":1966,"title":{},"content":{"196":{"position":[[606,15]]},"779":{"position":[[606,15]]}},"keywords":{}}],["computeclustermanag",{"_index":1936,"title":{},"content":{"193":{"position":[[439,21]]},"776":{"position":[[439,21]]}},"keywords":{}}],["conc",{"_index":1088,"title":{},"content":{"107":{"position":[[6652,9]]}},"keywords":{}}],["concept",{"_index":1584,"title":{},"content":{"159":{"position":[[995,7],[1787,9]]},"729":{"position":[[995,7],[1787,9]]}},"keywords":{}}],["concurr",{"_index":2018,"title":{},"content":{"205":{"position":[[9,10],[132,10]]},"754":{"position":[[9,10],[132,10]]}},"keywords":{}}],["conda",{"_index":1507,"title":{},"content":{"154":{"position":[[91,5],[281,5],[322,6],[374,5],[464,5],[491,5],[798,5],[1276,5]]},"155":{"position":[[232,5],[265,5],[370,5],[401,5]]},"156":{"position":[[294,5],[498,5],[1309,5]]},"188":{"position":[[203,5]]},"211":{"position":[[400,5]]},"212":{"position":[[466,5]]},"216":{"position":[[776,5]]},"422":{"position":[[391,5]]},"507":{"position":[[98,5],[141,5],[186,5]]},"553":{"position":[[1433,12]]},"724":{"position":[[91,5],[281,5],[322,6],[374,5],[464,5],[491,5],[798,5],[1276,5]]},"725":{"position":[[232,5],[265,5],[370,5],[401,5]]},"726":{"position":[[294,5],[498,5],[1309,5]]},"760":{"position":[[400,5]]},"761":{"position":[[466,5]]},"771":{"position":[[203,5]]},"786":{"position":[[776,5]]},"949":{"position":[[391,5]]},"1046":{"position":[[98,5],[141,5],[186,5]]},"1079":{"position":[[1433,12]]}},"keywords":{}}],["conda_environ",{"_index":1889,"title":{},"content":{"188":{"position":[[173,17],[592,17]]},"771":{"position":[[173,17],[592,17]]}},"keywords":{}}],["condadep",{"_index":693,"title":{},"content":{"71":{"position":[[246,19],[833,19]]},"72":{"position":[[384,19],[870,19]]},"73":{"position":[[406,19]]},"74":{"position":[[264,19],[754,19],[929,20]]},"75":{"position":[[417,19]]},"422":{"position":[[345,17]]},"423":{"position":[[211,19],[807,20]]},"425":{"position":[[387,23],[685,20],[1279,23]]},"428":{"position":[[373,20]]},"431":{"position":[[220,19],[702,20]]},"434":{"position":[[376,20]]},"479":{"position":[[1007,23]]},"482":{"position":[[754,23]]},"485":{"position":[[742,23]]},"488":{"position":[[772,23]]},"663":{"position":[[246,19],[833,19]]},"664":{"position":[[384,19],[870,19]]},"665":{"position":[[406,19]]},"666":{"position":[[264,19],[754,19],[929,20]]},"667":{"position":[[417,19]]},"949":{"position":[[345,17]]},"950":{"position":[[211,19],[807,20]]},"952":{"position":[[387,23],[685,20],[1279,23]]},"955":{"position":[[373,20]]},"958":{"position":[[220,19],[702,20]]},"961":{"position":[[376,20]]},"1011":{"position":[[1007,23]]},"1014":{"position":[[754,23]]},"1017":{"position":[[742,23]]},"1020":{"position":[[772,23]]}},"keywords":{}}],["condaenviron",{"_index":1901,"title":{},"content":{"188":{"position":[[573,16]]},"771":{"position":[[573,16]]}},"keywords":{}}],["conduct",{"_index":1180,"title":{},"content":{"117":{"position":[[141,7]]},"147":{"position":[[72,8]]},"685":{"position":[[141,7]]},"717":{"position":[[72,8]]}},"keywords":{}}],["conf",{"_index":4132,"title":{},"content":{"579":{"position":[[788,4]]},"580":{"position":[[1113,4]]},"584":{"position":[[645,4]]},"585":{"position":[[823,4]]},"589":{"position":[[936,4]]},"590":{"position":[[987,4]]},"1105":{"position":[[788,4]]},"1106":{"position":[[1113,4]]},"1110":{"position":[[645,4]]},"1111":{"position":[[823,4]]},"1115":{"position":[[936,4]]},"1116":{"position":[[987,4]]}},"keywords":{}}],["config",{"_index":316,"title":{"522":{"position":[[0,6]]},"524":{"position":[[13,6]]},"525":{"position":[[4,6]]},"526":{"position":[[4,6]]}},"content":{"20":{"position":[[277,6],[805,6],[826,7]]},"151":{"position":[[1074,7]]},"172":{"position":[[385,7]]},"181":{"position":[[297,8]]},"225":{"position":[[208,6]]},"339":{"position":[[447,6]]},"389":{"position":[[15257,6],[30806,6]]},"523":{"position":[[10,6],[48,6],[84,6]]},"524":{"position":[[10,6]]},"525":{"position":[[10,6],[103,6]]},"526":{"position":[[10,6],[66,6]]},"559":{"position":[[583,6]]},"568":{"position":[[752,6]]},"570":{"position":[[678,7],[4929,7],[10157,7],[14435,7],[16232,7]]},"620":{"position":[[277,6],[805,6],[826,7]]},"721":{"position":[[1074,7]]},"742":{"position":[[385,7]]},"764":{"position":[[297,8],[1212,8]]},"810":{"position":[[229,6]]},"916":{"position":[[15257,6],[30806,6]]},"1088":{"position":[[752,6]]},"1090":{"position":[[678,7],[4929,7],[10157,7],[14435,7],[16232,7]]},"1094":{"position":[[583,6]]}},"keywords":{}}],["config/checkstyle.xml",{"_index":1258,"title":{},"content":{"132":{"position":[[137,21]]},"298":{"position":[[329,21]]},"700":{"position":[[137,21]]},"865":{"position":[[332,21]]}},"keywords":{}}],["configpath",{"_index":2112,"title":{},"content":{"225":{"position":[[182,10]]},"810":{"position":[[203,10]]}},"keywords":{}}],["configs.in",{"_index":1850,"title":{},"content":{"181":{"position":[[1207,10]]}},"keywords":{}}],["configs.support",{"_index":1759,"title":{},"content":{"171":{"position":[[1240,15]]},"741":{"position":[[1252,15]]}},"keywords":{}}],["configu",{"_index":2777,"title":{},"content":{"382":{"position":[[57,12]]},"909":{"position":[[57,12]]}},"keywords":{}}],["configur",{"_index":257,"title":{"1064":{"position":[[0,14]]}},"content":{"17":{"position":[[26,13],[545,13],[925,13]]},"25":{"position":[[116,10]]},"190":{"position":[[822,13]]},"212":{"position":[[576,10]]},"268":{"position":[[54,13]]},"269":{"position":[[145,13]]},"270":{"position":[[132,13]]},"295":{"position":[[52,13]]},"298":{"position":[[229,13]]},"330":{"position":[[71,13]]},"336":{"position":[[45,13]]},"375":{"position":[[1016,11]]},"383":{"position":[[109,10],[302,9],[1047,9]]},"384":{"position":[[659,13]]},"389":{"position":[[14719,14],[14829,13],[15951,13],[16004,13],[30268,14],[30378,13]]},"403":{"position":[[99,13]]},"406":{"position":[[921,10]]},"509":{"position":[[82,10],[220,9]]},"543":{"position":[[116,10]]},"568":{"position":[[88,9]]},"569":{"position":[[49,11]]},"570":{"position":[[26,10]]},"609":{"position":[[26,13],[545,13],[925,13]]},"613":{"position":[[116,10]]},"761":{"position":[[576,10]]},"773":{"position":[[822,13]]},"839":{"position":[[54,13]]},"840":{"position":[[145,13]]},"841":{"position":[[132,13]]},"862":{"position":[[52,13]]},"865":{"position":[[232,13]]},"902":{"position":[[1016,11]]},"910":{"position":[[109,10],[302,9],[1047,9]]},"911":{"position":[[659,13]]},"916":{"position":[[14719,14],[14829,13],[15951,13],[16004,13],[30268,14],[30378,13]]},"930":{"position":[[99,13]]},"1048":{"position":[[82,10],[220,9]]},"1064":{"position":[[103,14],[172,15],[811,16],[905,14],[948,15],[1572,16],[1629,9]]},"1069":{"position":[[116,10]]},"1088":{"position":[[88,9]]},"1089":{"position":[[49,11]]},"1090":{"position":[[26,10]]}},"keywords":{}}],["configurationfor",{"_index":312,"title":{},"content":{"20":{"position":[[220,16]]},"620":{"position":[[220,16]]}},"keywords":{}}],["confirm",{"_index":1118,"title":{},"content":{"107":{"position":[[8265,9]]}},"keywords":{}}],["conflict",{"_index":123,"title":{},"content":{"7":{"position":[[650,9]]},"107":{"position":[[178,9]]},"596":{"position":[[650,9]]}},"keywords":{}}],["connect",{"_index":274,"title":{"413":{"position":[[0,7]]},"493":{"position":[[0,7]]},"940":{"position":[[0,7]]},"1007":{"position":[[0,7]]}},"content":{"17":{"position":[[465,12]]},"204":{"position":[[720,7]]},"262":{"position":[[361,7]]},"270":{"position":[[626,7]]},"301":{"position":[[94,7]]},"406":{"position":[[1191,7]]},"517":{"position":[[155,10]]},"524":{"position":[[120,13]]},"525":{"position":[[68,10]]},"609":{"position":[[465,12]]},"753":{"position":[[720,7]]},"833":{"position":[[361,7]]},"841":{"position":[[626,7]]},"868":{"position":[[78,7]]},"933":{"position":[[842,7]]},"1057":{"position":[[155,10]]}},"keywords":{}}],["connection.port",{"_index":3690,"title":{},"content":{"525":{"position":[[114,15]]},"526":{"position":[[77,15]]}},"keywords":{}}],["connection.port=8080",{"_index":3691,"title":{},"content":{"526":{"position":[[105,20]]}},"keywords":{}}],["consensu",{"_index":994,"title":{},"content":{"107":{"position":[[2022,9],[2311,9],[3511,9],[4487,9],[4753,9],[5654,10],[6747,9],[7689,9],[7710,9],[7784,9],[7801,9],[8942,9],[9722,9],[9817,9],[9914,9]]},"130":{"position":[[332,9]]},"698":{"position":[[332,9]]}},"keywords":{}}],["consent",{"_index":1375,"title":{},"content":{"141":{"position":[[118,7]]}},"keywords":{}}],["consid",{"_index":997,"title":{"216":{"position":[[15,14]]},"786":{"position":[[15,14]]}},"content":{"107":{"position":[[2083,10],[4545,10],[6479,13],[10728,8]]},"181":{"position":[[73,15]]},"219":{"position":[[466,8]]},"223":{"position":[[0,11]]},"259":{"position":[[765,14]]},"273":{"position":[[1356,9]]},"569":{"position":[[0,11]]},"764":{"position":[[73,15]]},"789":{"position":[[466,8]]},"808":{"position":[[0,11]]},"830":{"position":[[765,14]]},"844":{"position":[[1356,9]]},"1089":{"position":[[0,11]]}},"keywords":{}}],["consist",{"_index":575,"title":{},"content":{"34":{"position":[[10,8]]},"35":{"position":[[112,8]]},"107":{"position":[[2501,10]]},"173":{"position":[[83,8]]},"181":{"position":[[100,8],[1128,8]]},"199":{"position":[[31,8]]},"223":{"position":[[76,8]]},"229":{"position":[[669,8]]},"274":{"position":[[334,11]]},"315":{"position":[[64,10]]},"331":{"position":[[91,10]]},"626":{"position":[[10,8]]},"627":{"position":[[112,8]]},"743":{"position":[[83,8]]},"764":{"position":[[100,8],[1133,8]]},"782":{"position":[[31,8]]},"792":{"position":[[669,8]]},"808":{"position":[[76,8]]},"845":{"position":[[334,11]]}},"keywords":{}}],["constraint",{"_index":1688,"title":{},"content":{"163":{"position":[[542,12]]},"181":{"position":[[1737,11]]},"182":{"position":[[1615,11]]},"733":{"position":[[542,12]]},"764":{"position":[[1750,11]]},"765":{"position":[[1615,11]]}},"keywords":{}}],["construct",{"_index":2485,"title":{},"content":{"331":{"position":[[1159,9]]}},"keywords":{}}],["consumpt",{"_index":2422,"title":{},"content":{"317":{"position":[[390,11]]}},"keywords":{}}],["contain",{"_index":25,"title":{"26":{"position":[[9,9]]},"28":{"position":[[28,10]]},"29":{"position":[[29,10]]},"544":{"position":[[9,9]]},"546":{"position":[[28,10]]},"547":{"position":[[29,10]]},"614":{"position":[[9,9]]},"616":{"position":[[28,10]]},"617":{"position":[[29,10]]},"1070":{"position":[[9,9]]},"1072":{"position":[[28,10]]},"1073":{"position":[[29,10]]}},"content":{"1":{"position":[[284,10]]},"7":{"position":[[559,7]]},"13":{"position":[[115,9]]},"14":{"position":[[36,9]]},"29":{"position":[[117,10]]},"107":{"position":[[6110,7],[6814,7]]},"144":{"position":[[558,10]]},"154":{"position":[[1302,10]]},"159":{"position":[[1398,16]]},"168":{"position":[[580,9]]},"179":{"position":[[1566,9]]},"190":{"position":[[358,10]]},"194":{"position":[[245,9]]},"217":{"position":[[1015,9],[1221,9],[1908,11],[2259,11]]},"218":{"position":[[271,11]]},"229":{"position":[[1404,9],[1531,9]]},"248":{"position":[[875,10],[901,9]]},"249":{"position":[[78,10]]},"252":{"position":[[373,9]]},"259":{"position":[[21,8]]},"406":{"position":[[331,7]]},"437":{"position":[[666,9],[770,9]]},"491":{"position":[[57,10]]},"547":{"position":[[117,10]]},"596":{"position":[[559,7]]},"601":{"position":[[284,10]]},"605":{"position":[[115,9]]},"606":{"position":[[36,9]]},"617":{"position":[[117,10]]},"714":{"position":[[558,10]]},"724":{"position":[[1302,10]]},"729":{"position":[[1398,16]]},"738":{"position":[[580,9]]},"749":{"position":[[1571,9]]},"773":{"position":[[358,10]]},"777":{"position":[[251,9]]},"787":{"position":[[1015,9],[1221,9],[1908,11],[2259,11]]},"788":{"position":[[271,11]]},"792":{"position":[[1406,9],[1533,9]]},"818":{"position":[[875,10],[901,9]]},"819":{"position":[[78,10]]},"822":{"position":[[378,9]]},"830":{"position":[[21,8]]},"933":{"position":[[331,7]]},"964":{"position":[[666,9],[770,9]]},"1005":{"position":[[57,10]]},"1073":{"position":[[117,10]]}},"keywords":{}}],["container,thi",{"_index":2821,"title":{},"content":{"386":{"position":[[667,14]]},"913":{"position":[[667,14]]}},"keywords":{}}],["containerpath",{"_index":327,"title":{},"content":{"20":{"position":[[509,14]]},"620":{"position":[[509,14]]}},"keywords":{}}],["containerport",{"_index":329,"title":{},"content":{"20":{"position":[[560,14],[668,14]]},"384":{"position":[[823,14]]},"620":{"position":[[560,14],[668,14]]},"911":{"position":[[823,14]]}},"keywords":{}}],["content",{"_index":686,"title":{"316":{"position":[[20,7]]}},"content":{"71":{"position":[[57,8]]},"74":{"position":[[67,8]]},"77":{"position":[[56,8]]},"78":{"position":[[56,8]]},"81":{"position":[[64,8]]},"86":{"position":[[54,8]]},"89":{"position":[[47,8]]},"91":{"position":[[73,8]]},"95":{"position":[[62,8]]},"100":{"position":[[54,8]]},"105":{"position":[[123,8]]},"106":{"position":[[55,8]]},"107":{"position":[[3532,7],[8928,8]]},"109":{"position":[[62,8]]},"112":{"position":[[72,8]]},"141":{"position":[[1810,7]]},"158":{"position":[[192,8]]},"217":{"position":[[2459,9]]},"219":{"position":[[146,8]]},"304":{"position":[[107,7]]},"312":{"position":[[83,7]]},"313":{"position":[[316,8]]},"316":{"position":[[126,7],[204,7]]},"317":{"position":[[193,7],[275,7]]},"328":{"position":[[76,7]]},"352":{"position":[[94,8],[1266,8]]},"357":{"position":[[219,8]]},"423":{"position":[[22,8]]},"431":{"position":[[23,8]]},"438":{"position":[[22,8]]},"441":{"position":[[22,8]]},"449":{"position":[[23,8]]},"461":{"position":[[22,8]]},"466":{"position":[[23,8]]},"472":{"position":[[22,8]]},"479":{"position":[[22,8]]},"663":{"position":[[57,8]]},"666":{"position":[[67,8]]},"669":{"position":[[54,8]]},"672":{"position":[[47,8]]},"674":{"position":[[73,8]]},"676":{"position":[[56,8]]},"677":{"position":[[56,8]]},"680":{"position":[[64,8]]},"702":{"position":[[54,8]]},"728":{"position":[[192,8]]},"787":{"position":[[2459,9]]},"789":{"position":[[146,8]]},"870":{"position":[[107,7]]},"950":{"position":[[22,8]]},"958":{"position":[[23,8]]},"965":{"position":[[22,8]]},"968":{"position":[[22,8]]},"976":{"position":[[23,8]]},"988":{"position":[[22,8]]},"993":{"position":[[23,8]]},"999":{"position":[[22,8]]},"1011":{"position":[[22,8]]}},"keywords":{}}],["context",{"_index":1738,"title":{},"content":{"171":{"position":[[192,7]]},"741":{"position":[[192,7]]}},"keywords":{}}],["continu",{"_index":122,"title":{},"content":{"7":{"position":[[609,8]]},"28":{"position":[[909,8]]},"107":{"position":[[9536,9]]},"275":{"position":[[245,8]]},"546":{"position":[[909,8]]},"596":{"position":[[609,8]]},"616":{"position":[[909,8]]},"846":{"position":[[245,8]]},"1072":{"position":[[909,8]]}},"keywords":{}}],["continuumio/anaconda3",{"_index":689,"title":{},"content":{"71":{"position":[[141,24],[728,24]]},"72":{"position":[[279,24]]},"73":{"position":[[301,24]]},"74":{"position":[[151,24],[641,24]]},"75":{"position":[[304,24]]},"423":{"position":[[106,24]]},"431":{"position":[[107,24]]},"663":{"position":[[141,24],[728,24]]},"664":{"position":[[279,24]]},"665":{"position":[[301,24]]},"666":{"position":[[151,24],[641,24]]},"667":{"position":[[304,24]]},"950":{"position":[[106,24]]},"958":{"position":[[107,24]]}},"keywords":{}}],["continuumio/miniconda",{"_index":711,"title":{},"content":{"72":{"position":[[763,24]]},"664":{"position":[[763,24]]}},"keywords":{}}],["contrast",{"_index":2044,"title":{},"content":{"215":{"position":[[1176,8]]},"785":{"position":[[1176,8]]}},"keywords":{}}],["contribut",{"_index":967,"title":{"116":{"position":[[7,10]]},"123":{"position":[[38,12]]},"144":{"position":[[11,12]]},"684":{"position":[[7,10]]},"691":{"position":[[38,12]]},"714":{"position":[[11,12]]}},"content":{"107":{"position":[[1173,10],[1454,12],[1577,13],[2138,12],[2956,12],[3042,12],[4602,12]]},"117":{"position":[[52,12]]},"124":{"position":[[240,12]]},"133":{"position":[[315,13],[430,11],[785,13],[825,13],[839,12],[869,12],[1047,13],[1990,12],[2196,10],[2747,14],[2807,12]]},"137":{"position":[[185,10]]},"141":{"position":[[57,13],[295,13]]},"144":{"position":[[586,13],[642,12],[697,12]]},"148":{"position":[[35,10],[228,10]]},"295":{"position":[[94,10]]},"685":{"position":[[52,12]]},"692":{"position":[[240,12]]},"709":{"position":[[185,10]]},"714":{"position":[[586,13],[642,12],[697,12]]},"718":{"position":[[35,10],[228,10]]},"862":{"position":[[94,10]]}},"keywords":{}}],["contributor",{"_index":975,"title":{"139":{"position":[[7,12]]},"711":{"position":[[7,12]]}},"content":{"107":{"position":[[1411,12],[1535,11],[2512,13],[2753,11]]},"122":{"position":[[4,12]]},"133":{"position":[[502,11],[584,11],[702,13],[1840,12]]},"137":{"position":[[130,12]]},"139":{"position":[[51,13],[81,12],[103,12],[245,12]]},"141":{"position":[[90,12]]},"144":{"position":[[184,13],[323,12]]},"145":{"position":[[48,12],[93,12]]},"357":{"position":[[435,12]]},"690":{"position":[[4,12]]},"709":{"position":[[130,12]]},"711":{"position":[[51,13],[81,12],[103,12],[245,12]]},"714":{"position":[[184,13],[323,12]]},"715":{"position":[[48,12],[93,12]]}},"keywords":{}}],["contributor]\".check",{"_index":1202,"title":{},"content":{"122":{"position":[[167,19]]},"690":{"position":[[167,19]]}},"keywords":{}}],["control",{"_index":89,"title":{"176":{"position":[[18,7]]},"746":{"position":[[18,7]]}},"content":{"7":{"position":[[153,10]]},"20":{"position":[[384,7]]},"138":{"position":[[43,8]]},"176":{"position":[[40,8]]},"216":{"position":[[570,8]]},"217":{"position":[[230,8]]},"229":{"position":[[735,8]]},"263":{"position":[[346,8]]},"384":{"position":[[364,10],[788,7],[924,10]]},"412":{"position":[[132,10]]},"596":{"position":[[153,10]]},"620":{"position":[[384,7]]},"710":{"position":[[43,8]]},"746":{"position":[[40,8]]},"786":{"position":[[570,8]]},"787":{"position":[[230,8]]},"792":{"position":[[735,8]]},"834":{"position":[[346,8]]},"911":{"position":[[364,10],[788,7],[924,10]]},"939":{"position":[[134,10]]}},"keywords":{}}],["conv",{"_index":1985,"title":{},"content":{"200":{"position":[[22,10]]},"783":{"position":[[22,10]]}},"keywords":{}}],["conveni",{"_index":2769,"title":{},"content":{"377":{"position":[[413,11]]},"557":{"position":[[52,12]]},"563":{"position":[[52,12]]},"904":{"position":[[413,11]]},"1083":{"position":[[52,12]]},"1098":{"position":[[52,12]]}},"keywords":{}}],["convent",{"_index":1252,"title":{"132":{"position":[[5,10]]},"700":{"position":[[5,10]]}},"content":{},"keywords":{}}],["convention)cr",{"_index":1219,"title":{},"content":{"124":{"position":[[82,17]]},"692":{"position":[[82,17]]}},"keywords":{}}],["convert",{"_index":1712,"title":{},"content":{"167":{"position":[[319,7]]},"200":{"position":[[1126,8]]},"230":{"position":[[870,10]]},"737":{"position":[[319,7]]},"783":{"position":[[1126,8]]},"793":{"position":[[870,10]]}},"keywords":{}}],["copi",{"_index":53,"title":{},"content":{"5":{"position":[[105,4]]},"6":{"position":[[116,4],[242,4]]},"7":{"position":[[108,4],[462,4],[864,4],[1099,4]]},"8":{"position":[[295,4]]},"10":{"position":[[24,4]]},"13":{"position":[[433,4]]},"14":{"position":[[86,4],[143,4],[358,4]]},"15":{"position":[[60,4],[316,4]]},"20":{"position":[[718,4],[890,4]]},"21":{"position":[[257,4],[525,4],[681,4]]},"23":{"position":[[1044,4]]},"25":{"position":[[1725,4],[1934,4],[2085,4]]},"26":{"position":[[534,4]]},"27":{"position":[[80,4]]},"28":{"position":[[274,4],[1036,4],[1267,4]]},"71":{"position":[[546,4],[1093,4]]},"72":{"position":[[95,4],[967,4]]},"73":{"position":[[119,4],[666,4]]},"74":{"position":[[442,4],[875,4]]},"75":{"position":[[122,4],[538,4]]},"77":{"position":[[586,4],[1305,4]]},"78":{"position":[[557,4],[1423,4]]},"79":{"position":[[93,4],[1395,4]]},"80":{"position":[[128,4],[847,4]]},"81":{"position":[[624,4],[1156,4]]},"82":{"position":[[131,4],[850,4]]},"83":{"position":[[103,4],[549,4]]},"84":{"position":[[138,4],[2680,4]]},"86":{"position":[[1090,4]]},"87":{"position":[[89,4]]},"88":{"position":[[117,4]]},"89":{"position":[[1108,4]]},"90":{"position":[[120,4]]},"91":{"position":[[292,4]]},"93":{"position":[[115,4],[1727,4]]},"94":{"position":[[127,4],[641,4]]},"95":{"position":[[272,4],[432,4]]},"96":{"position":[[132,4],[292,4]]},"97":{"position":[[180,4],[342,4]]},"98":{"position":[[184,4],[337,4]]},"100":{"position":[[363,4],[1203,4]]},"101":{"position":[[102,4],[947,4]]},"102":{"position":[[99,4],[936,4]]},"103":{"position":[[105,4],[1003,4]]},"105":{"position":[[244,4],[390,4]]},"106":{"position":[[176,4],[322,4]]},"109":{"position":[[238,4],[387,4]]},"110":{"position":[[105,4],[765,4]]},"111":{"position":[[125,4],[457,4]]},"112":{"position":[[228,4],[391,4]]},"113":{"position":[[130,4],[293,4]]},"114":{"position":[[162,4],[315,4]]},"115":{"position":[[166,4],[331,4]]},"121":{"position":[[629,4]]},"123":{"position":[[254,4]]},"124":{"position":[[260,4]]},"125":{"position":[[83,4]]},"126":{"position":[[41,4]]},"141":{"position":[[1546,4]]},"148":{"position":[[521,4]]},"151":{"position":[[741,4],[1978,4]]},"152":{"position":[[255,4]]},"154":{"position":[[783,4],[1143,4]]},"156":{"position":[[730,4],[1084,4],[1198,4]]},"160":{"position":[[541,4]]},"171":{"position":[[1821,4]]},"179":{"position":[[1063,4]]},"181":{"position":[[1069,4]]},"182":{"position":[[515,4],[1479,4]]},"188":{"position":[[612,4]]},"189":{"position":[[560,4],[1067,4],[1577,4]]},"196":{"position":[[1126,4]]},"199":{"position":[[753,4],[1271,4]]},"200":{"position":[[930,4],[2079,4],[2451,4],[2666,4]]},"208":{"position":[[549,4]]},"215":{"position":[[941,4]]},"217":{"position":[[1540,4],[2183,4]]},"223":{"position":[[626,4]]},"226":{"position":[[361,4]]},"229":{"position":[[588,4]]},"230":{"position":[[519,4]]},"231":{"position":[[791,4]]},"232":{"position":[[806,4]]},"281":{"position":[[359,4],[441,4],[524,4]]},"282":{"position":[[49,4]]},"283":{"position":[[297,4]]},"300":{"position":[[226,4],[503,4],[639,4]]},"301":{"position":[[218,4],[277,4]]},"302":{"position":[[248,4],[365,4]]},"306":{"position":[[89,4]]},"307":{"position":[[92,4]]},"308":{"position":[[158,4]]},"311":{"position":[[90,4]]},"314":{"position":[[145,4],[1830,4],[2424,4],[2790,4]]},"315":{"position":[[545,4]]},"320":{"position":[[185,4],[782,4],[1054,4],[1331,4]]},"325":{"position":[[270,4],[424,4],[515,4]]},"330":{"position":[[178,4]]},"331":{"position":[[2743,4]]},"332":{"position":[[498,4]]},"334":{"position":[[429,7],[1051,4],[1746,4]]},"336":{"position":[[1007,4]]},"338":{"position":[[313,4]]},"339":{"position":[[480,4]]},"340":{"position":[[357,4]]},"341":{"position":[[500,4],[608,4]]},"342":{"position":[[202,4]]},"343":{"position":[[123,4]]},"345":{"position":[[298,4]]},"346":{"position":[[49,4]]},"348":{"position":[[250,4]]},"349":{"position":[[95,4],[467,4]]},"352":{"position":[[1148,4],[1611,4]]},"357":{"position":[[626,4]]},"371":{"position":[[226,4]]},"375":{"position":[[1099,4],[1570,4]]},"380":{"position":[[110,4]]},"381":{"position":[[16,4]]},"382":{"position":[[41,4]]},"383":{"position":[[573,4],[805,4],[1002,4],[1035,4],[1299,4]]},"384":{"position":[[286,4],[884,4],[1044,4],[1185,4]]},"386":{"position":[[417,4],[525,4],[603,4],[744,4],[913,4]]},"389":{"position":[[1528,4],[17632,4],[17709,4],[32486,4],[32595,4]]},"391":{"position":[[674,4]]},"393":{"position":[[165,4]]},"394":{"position":[[254,4]]},"395":{"position":[[234,4]]},"396":{"position":[[14,4]]},"398":{"position":[[505,4]]},"400":{"position":[[289,4]]},"401":{"position":[[315,4]]},"407":{"position":[[1385,4]]},"410":{"position":[[225,4]]},"411":{"position":[[68,4],[195,4],[387,4]]},"412":{"position":[[57,4],[663,4]]},"413":{"position":[[225,4]]},"415":{"position":[[2301,4]]},"416":{"position":[[142,4]]},"421":{"position":[[25,4]]},"423":{"position":[[511,4],[1186,4]]},"424":{"position":[[24,4]]},"425":{"position":[[60,4],[1385,4]]},"426":{"position":[[31,4]]},"428":{"position":[[77,4],[752,4]]},"429":{"position":[[33,4]]},"431":{"position":[[398,4],[891,4]]},"432":{"position":[[34,4]]},"434":{"position":[[80,4],[754,4]]},"436":{"position":[[24,4]]},"438":{"position":[[552,4],[1663,4]]},"439":{"position":[[24,4]]},"441":{"position":[[523,4],[1755,4]]},"442":{"position":[[23,4]]},"443":{"position":[[59,4],[2237,4]]},"444":{"position":[[28,4]]},"446":{"position":[[89,4],[1172,4]]},"447":{"position":[[30,4]]},"449":{"position":[[583,4],[1694,4]]},"450":{"position":[[31,4]]},"452":{"position":[[92,4],[1175,4]]},"453":{"position":[[28,4]]},"454":{"position":[[64,4],[341,4]]},"455":{"position":[[33,4]]},"457":{"position":[[94,4],[368,4]]},"459":{"position":[[22,4]]},"461":{"position":[[1058,4],[3060,4]]},"462":{"position":[[21,4]]},"463":{"position":[[57,4],[2063,4]]},"464":{"position":[[29,4]]},"466":{"position":[[1084,4],[3084,4]]},"467":{"position":[[30,4]]},"469":{"position":[[81,4],[2080,4]]},"470":{"position":[[40,4]]},"472":{"position":[[241,4],[1353,4]]},"475":{"position":[[385,4]]},"477":{"position":[[22,4]]},"479":{"position":[[331,4],[1199,4]]},"480":{"position":[[21,4]]},"482":{"position":[[93,4],[947,4]]},"483":{"position":[[26,4]]},"485":{"position":[[85,4],[934,4]]},"486":{"position":[[29,4]]},"488":{"position":[[88,4],[964,4]]},"492":{"position":[[429,4]]},"496":{"position":[[729,4]]},"497":{"position":[[676,4]]},"498":{"position":[[216,4]]},"499":{"position":[[188,4]]},"500":{"position":[[205,4]]},"501":{"position":[[316,4]]},"502":{"position":[[175,4]]},"503":{"position":[[285,4]]},"507":{"position":[[660,4]]},"508":{"position":[[128,4]]},"509":{"position":[[177,4],[437,4],[567,4]]},"510":{"position":[[156,4],[215,4],[277,4]]},"511":{"position":[[684,4],[1035,4],[1372,4],[1393,4]]},"512":{"position":[[293,4]]},"513":{"position":[[225,4],[353,4],[456,4],[570,4]]},"523":{"position":[[22,4],[67,4]]},"524":{"position":[[22,4],[261,4]]},"525":{"position":[[46,4],[135,4]]},"526":{"position":[[38,4],[93,4],[126,4]]},"528":{"position":[[24,4]]},"529":{"position":[[37,4]]},"530":{"position":[[40,4]]},"532":{"position":[[26,4]]},"533":{"position":[[41,4]]},"534":{"position":[[63,4]]},"536":{"position":[[27,4]]},"537":{"position":[[45,4]]},"538":{"position":[[47,4]]},"541":{"position":[[1044,4]]},"543":{"position":[[1725,4],[1934,4],[2085,4]]},"544":{"position":[[534,4]]},"545":{"position":[[80,4]]},"546":{"position":[[274,4],[1036,4],[1267,4]]},"549":{"position":[[944,4],[1595,4]]},"553":{"position":[[1571,4],[1993,4]]},"559":{"position":[[1208,4],[1630,4]]},"565":{"position":[[356,4]]},"566":{"position":[[186,4],[402,4],[719,4]]},"568":{"position":[[495,4],[956,4]]},"569":{"position":[[624,4],[1659,4]]},"570":{"position":[[576,4],[9673,4],[10055,4],[15971,4],[16130,4],[17536,4]]},"571":{"position":[[564,4]]},"572":{"position":[[2157,4]]},"578":{"position":[[498,4],[606,4]]},"579":{"position":[[957,4],[2679,4]]},"580":{"position":[[1226,4]]},"583":{"position":[[405,4]]},"584":{"position":[[817,4],[2539,4]]},"585":{"position":[[936,4]]},"588":{"position":[[401,4]]},"589":{"position":[[1111,4],[3969,4]]},"590":{"position":[[1132,4]]},"594":{"position":[[105,4]]},"595":{"position":[[116,4],[242,4]]},"596":{"position":[[108,4],[462,4],[864,4],[1099,4]]},"597":{"position":[[295,4]]},"599":{"position":[[24,4]]},"605":{"position":[[433,4]]},"606":{"position":[[86,4],[143,4],[358,4]]},"607":{"position":[[60,4],[316,4]]},"611":{"position":[[1044,4]]},"613":{"position":[[1725,4],[1934,4],[2085,4]]},"614":{"position":[[534,4]]},"615":{"position":[[80,4]]},"616":{"position":[[274,4],[1036,4],[1267,4]]},"620":{"position":[[718,4],[890,4]]},"621":{"position":[[257,4],[525,4],[681,4]]},"663":{"position":[[546,4],[1093,4]]},"664":{"position":[[95,4],[967,4]]},"665":{"position":[[119,4],[666,4]]},"666":{"position":[[442,4],[875,4]]},"667":{"position":[[122,4],[538,4]]},"669":{"position":[[1090,4]]},"670":{"position":[[89,4]]},"671":{"position":[[117,4]]},"672":{"position":[[1108,4]]},"673":{"position":[[120,4]]},"674":{"position":[[292,4]]},"676":{"position":[[586,4],[1305,4]]},"677":{"position":[[557,4],[1423,4]]},"678":{"position":[[93,4],[1395,4]]},"679":{"position":[[128,4],[847,4]]},"680":{"position":[[624,4],[1156,4]]},"681":{"position":[[131,4],[850,4]]},"682":{"position":[[103,4],[549,4]]},"683":{"position":[[138,4],[2680,4]]},"689":{"position":[[629,4]]},"691":{"position":[[254,4]]},"692":{"position":[[260,4]]},"693":{"position":[[83,4]]},"694":{"position":[[41,4]]},"702":{"position":[[363,4],[1203,4]]},"703":{"position":[[102,4],[947,4]]},"704":{"position":[[99,4],[936,4]]},"705":{"position":[[105,4],[1003,4]]},"721":{"position":[[741,4],[1978,4]]},"722":{"position":[[255,4]]},"724":{"position":[[783,4],[1143,4]]},"726":{"position":[[730,4],[1084,4],[1198,4]]},"730":{"position":[[541,4]]},"741":{"position":[[1833,4]]},"749":{"position":[[1068,4]]},"757":{"position":[[549,4]]},"764":{"position":[[1074,4]]},"765":{"position":[[515,4],[1479,4]]},"771":{"position":[[612,4]]},"772":{"position":[[560,4],[1067,4],[1577,4]]},"779":{"position":[[1131,4]]},"782":{"position":[[753,4],[1271,4]]},"783":{"position":[[930,4],[2079,4],[2451,4],[2666,4]]},"785":{"position":[[941,4]]},"787":{"position":[[1540,4],[2183,4]]},"792":{"position":[[588,4]]},"793":{"position":[[519,4]]},"794":{"position":[[1044,4]]},"795":{"position":[[806,4]]},"808":{"position":[[626,4]]},"811":{"position":[[361,4]]},"852":{"position":[[359,4],[441,4],[524,4]]},"853":{"position":[[80,4],[170,4],[271,4],[374,4],[475,4],[576,4],[649,4]]},"854":{"position":[[297,4]]},"867":{"position":[[226,4],[503,4],[605,4]]},"868":{"position":[[202,4],[261,4]]},"869":{"position":[[248,4],[365,4],[636,4],[856,4],[919,4],[1108,4],[1349,4],[1621,4],[1744,4]]},"872":{"position":[[89,4]]},"873":{"position":[[92,4]]},"874":{"position":[[158,4]]},"877":{"position":[[185,4],[782,4],[1054,4],[1331,4]]},"895":{"position":[[270,4],[424,4],[515,4]]},"898":{"position":[[226,4]]},"902":{"position":[[1099,4],[1570,4]]},"907":{"position":[[110,4]]},"908":{"position":[[16,4]]},"909":{"position":[[41,4]]},"910":{"position":[[573,4],[805,4],[1002,4],[1035,4],[1299,4]]},"911":{"position":[[286,4],[884,4],[1044,4],[1185,4]]},"913":{"position":[[417,4],[525,4],[603,4],[744,4],[913,4]]},"916":{"position":[[1528,4],[17632,4],[17709,4],[32486,4],[32595,4]]},"918":{"position":[[674,4]]},"920":{"position":[[165,4]]},"921":{"position":[[254,4]]},"922":{"position":[[234,4]]},"923":{"position":[[14,4]]},"925":{"position":[[505,4]]},"927":{"position":[[289,4]]},"928":{"position":[[315,4]]},"934":{"position":[[1405,4]]},"937":{"position":[[228,4]]},"938":{"position":[[70,4],[175,4]]},"939":{"position":[[59,4],[629,4]]},"940":{"position":[[116,4]]},"942":{"position":[[2383,4]]},"943":{"position":[[116,4]]},"948":{"position":[[25,4]]},"950":{"position":[[511,4],[1186,4]]},"951":{"position":[[24,4]]},"952":{"position":[[60,4],[1385,4]]},"953":{"position":[[31,4]]},"955":{"position":[[77,4],[752,4]]},"956":{"position":[[33,4]]},"958":{"position":[[398,4],[891,4]]},"959":{"position":[[34,4]]},"961":{"position":[[80,4],[754,4]]},"963":{"position":[[24,4]]},"965":{"position":[[552,4],[1663,4]]},"966":{"position":[[24,4]]},"968":{"position":[[523,4],[1755,4]]},"969":{"position":[[23,4]]},"970":{"position":[[59,4],[2237,4]]},"971":{"position":[[28,4]]},"973":{"position":[[89,4],[1172,4]]},"974":{"position":[[30,4]]},"976":{"position":[[583,4],[1694,4]]},"977":{"position":[[31,4]]},"979":{"position":[[92,4],[1175,4]]},"980":{"position":[[28,4]]},"981":{"position":[[64,4],[341,4]]},"982":{"position":[[33,4]]},"984":{"position":[[94,4],[368,4]]},"986":{"position":[[22,4]]},"988":{"position":[[1058,4],[3060,4]]},"989":{"position":[[21,4]]},"990":{"position":[[57,4],[2063,4]]},"991":{"position":[[29,4]]},"993":{"position":[[1084,4],[3084,4]]},"994":{"position":[[30,4]]},"996":{"position":[[81,4],[2080,4]]},"997":{"position":[[40,4]]},"999":{"position":[[241,4],[1353,4]]},"1002":{"position":[[385,4]]},"1006":{"position":[[429,4]]},"1009":{"position":[[22,4]]},"1011":{"position":[[331,4],[1199,4]]},"1012":{"position":[[21,4]]},"1014":{"position":[[93,4],[947,4]]},"1015":{"position":[[26,4]]},"1017":{"position":[[85,4],[934,4]]},"1018":{"position":[[29,4]]},"1020":{"position":[[88,4],[964,4]]},"1023":{"position":[[729,4]]},"1024":{"position":[[676,4]]},"1025":{"position":[[216,4]]},"1026":{"position":[[188,4]]},"1027":{"position":[[205,4]]},"1028":{"position":[[316,4]]},"1029":{"position":[[175,4]]},"1030":{"position":[[285,4]]},"1033":{"position":[[428,4]]},"1035":{"position":[[242,4]]},"1036":{"position":[[294,4]]},"1037":{"position":[[306,4]]},"1038":{"position":[[413,4]]},"1046":{"position":[[657,4]]},"1047":{"position":[[128,4]]},"1048":{"position":[[177,4],[437,4],[567,4]]},"1049":{"position":[[156,4],[215,4],[277,4]]},"1051":{"position":[[281,4]]},"1052":{"position":[[225,4],[353,4],[456,4],[570,4]]},"1053":{"position":[[212,4]]},"1064":{"position":[[828,4],[1589,4]]},"1067":{"position":[[1044,4]]},"1069":{"position":[[1725,4],[1934,4],[2085,4]]},"1070":{"position":[[534,4]]},"1071":{"position":[[80,4]]},"1072":{"position":[[274,4],[1036,4],[1267,4]]},"1075":{"position":[[944,4],[1595,4]]},"1079":{"position":[[1571,4],[1993,4]]},"1085":{"position":[[356,4]]},"1086":{"position":[[186,4],[402,4],[719,4]]},"1088":{"position":[[495,4],[956,4]]},"1089":{"position":[[624,4],[1659,4]]},"1090":{"position":[[576,4],[9673,4],[10055,4],[15971,4],[16130,4],[17536,4]]},"1091":{"position":[[564,4]]},"1092":{"position":[[2157,4]]},"1094":{"position":[[1208,4],[1630,4]]},"1104":{"position":[[498,4],[606,4]]},"1105":{"position":[[957,4],[2679,4]]},"1106":{"position":[[1226,4]]},"1109":{"position":[[405,4]]},"1110":{"position":[[817,4],[2539,4]]},"1111":{"position":[[936,4]]},"1114":{"position":[[401,4]]},"1115":{"position":[[1111,4],[3969,4]]},"1116":{"position":[[1132,4]]}},"keywords":{}}],["copyright",{"_index":946,"title":{},"content":{"107":{"position":[[328,9]]},"314":{"position":[[285,9]]},"331":{"position":[[351,9]]}},"keywords":{}}],["cor",{"_index":1318,"title":{},"content":{"135":{"position":[[156,4]]},"181":{"position":[[1799,6]]},"231":{"position":[[829,4]]},"325":{"position":[[320,5]]},"366":{"position":[[8,4]]},"580":{"position":[[1620,4]]},"707":{"position":[[156,4]]},"764":{"position":[[1812,6]]},"794":{"position":[[1082,4]]},"889":{"position":[[8,4]]},"895":{"position":[[320,5]]},"1106":{"position":[[1620,4]]}},"keywords":{}}],["correct",{"_index":2026,"title":{"343":{"position":[[52,7]]}},"content":{"211":{"position":[[378,7]]},"212":{"position":[[495,7]]},"314":{"position":[[2165,8],[2518,8]]},"319":{"position":[[80,11]]},"324":{"position":[[80,11]]},"331":{"position":[[1112,8]]},"334":{"position":[[776,7],[1463,7]]},"343":{"position":[[42,7]]},"401":{"position":[[233,8]]},"760":{"position":[[378,7]]},"761":{"position":[[495,7]]},"876":{"position":[[80,11]]},"894":{"position":[[80,11]]},"928":{"position":[[233,8]]}},"keywords":{}}],["correct.wheth",{"_index":2415,"title":{},"content":{"316":{"position":[[137,15],[215,15]]},"317":{"position":[[204,15],[286,15]]}},"keywords":{}}],["correctli",{"_index":2027,"title":{},"content":{"211":{"position":[[419,9]]},"314":{"position":[[1005,9]]},"570":{"position":[[345,10]]},"760":{"position":[[419,9]]},"1090":{"position":[[345,10]]}},"keywords":{}}],["correspond",{"_index":592,"title":{},"content":{"35":{"position":[[345,13]]},"107":{"position":[[8695,13]]},"190":{"position":[[477,13]]},"200":{"position":[[1051,13]]},"231":{"position":[[1132,13]]},"263":{"position":[[178,13]]},"299":{"position":[[37,13]]},"418":{"position":[[97,13]]},"627":{"position":[[345,13]]},"773":{"position":[[477,13]]},"783":{"position":[[1051,13]]},"794":{"position":[[1385,13]]},"834":{"position":[[178,13]]},"866":{"position":[[37,13]]}},"keywords":{}}],["count",{"_index":1092,"title":{},"content":{"107":{"position":[[6780,6]]}},"keywords":{}}],["coupl",{"_index":1878,"title":{},"content":{"182":{"position":[[843,6]]},"197":{"position":[[269,8]]},"566":{"position":[[557,6]]},"570":{"position":[[246,6],[9820,6]]},"765":{"position":[[843,6]]},"780":{"position":[[276,8]]},"1086":{"position":[[557,6]]},"1090":{"position":[[246,6],[9820,6]]}},"keywords":{}}],["cour",{"_index":1097,"title":{},"content":{"107":{"position":[[6973,6]]},"265":{"position":[[296,7]]},"836":{"position":[[296,7]]}},"keywords":{}}],["cov",{"_index":1141,"title":{},"content":{"107":{"position":[[9556,6]]}},"keywords":{}}],["cov=submarin",{"_index":3619,"title":{},"content":{"510":{"position":[[184,13],[250,13]]},"1049":{"position":[[184,13],[250,13]]}},"keywords":{}}],["coverag",{"_index":2188,"title":{},"content":{"261":{"position":[[345,8]]},"832":{"position":[[345,8]]}},"keywords":{}}],["cp",{"_index":2596,"title":{},"content":{"341":{"position":[[360,2]]},"349":{"position":[[149,2]]},"386":{"position":[[567,2]]},"389":{"position":[[1230,2]]},"568":{"position":[[456,2]]},"869":{"position":[[689,2]]},"913":{"position":[[567,2]]},"916":{"position":[[1230,2]]},"1088":{"position":[[456,2]]}},"keywords":{}}],["cp27",{"_index":3774,"title":{},"content":{"559":{"position":[[1181,4]]},"1094":{"position":[[1181,4]]}},"keywords":{}}],["cpio",{"_index":2867,"title":{},"content":{"389":{"position":[[2054,4],[2894,4],[3924,4],[8271,5],[8349,4],[13383,4],[17896,4],[18736,4],[19748,4],[23989,5],[24067,4],[28932,4]]},"916":{"position":[[2054,4],[2894,4],[3924,4],[8271,5],[8349,4],[13383,4],[17896,4],[18736,4],[19748,4],[23989,5],[24067,4],[28932,4]]}},"keywords":{}}],["cpio_2.11+dfsg",{"_index":3071,"title":{},"content":{"389":{"position":[[8297,18],[24015,18]]},"916":{"position":[[8297,18],[24015,18]]}},"keywords":{}}],["cpu",{"_index":46,"title":{"566":{"position":[[42,3]]},"1086":{"position":[[42,3]]}},"content":{"5":{"position":[[38,4]]},"182":{"position":[[1108,4]]},"410":{"position":[[175,4]]},"551":{"position":[[141,3]]},"560":{"position":[[212,3],[325,3]]},"562":{"position":[[376,4]]},"566":{"position":[[20,3],[221,3]]},"570":{"position":[[180,3],[9754,3]]},"594":{"position":[[38,4]]},"765":{"position":[[1108,4]]},"937":{"position":[[177,4]]},"1077":{"position":[[141,3]]},"1086":{"position":[[20,3],[221,3]]},"1090":{"position":[[180,3],[9754,3]]},"1095":{"position":[[212,3],[325,3]]},"1097":{"position":[[376,4]]}},"keywords":{}}],["cpu\":\"1",{"_index":3519,"title":{},"content":{"461":{"position":[[2833,9],[3006,9]]},"463":{"position":[[1835,9],[2008,9]]},"988":{"position":[[2833,9],[3006,9]]},"990":{"position":[[1835,9],[2008,9]]}},"keywords":{}}],["cpu/memori",{"_index":2045,"title":{},"content":{"215":{"position":[[1211,10]]},"785":{"position":[[1211,10]]}},"keywords":{}}],["cpu/memory/disk",{"_index":1828,"title":{},"content":{"176":{"position":[[1368,16]]},"746":{"position":[[1371,16]]}},"keywords":{}}],["cpu:0.0.1",{"_index":368,"title":{},"content":{"23":{"position":[[302,9]]},"541":{"position":[[302,9]]},"562":{"position":[[338,9]]},"563":{"position":[[126,9]]},"580":{"position":[[320,9]]},"611":{"position":[[302,9]]},"1067":{"position":[[302,9]]},"1097":{"position":[[338,9]]},"1098":{"position":[[126,9]]},"1106":{"position":[[320,9]]}},"keywords":{}}],["cpu=%s,memory=%s,nvidia.com/gpu=%",{"_index":2119,"title":{},"content":{"226":{"position":[[717,34]]},"811":{"position":[[717,34]]}},"keywords":{}}],["cpu=1,memory=1.0gi",{"_index":888,"title":{},"content":{"100":{"position":[[297,20]]},"103":{"position":[[956,20]]},"479":{"position":[[265,20]]},"702":{"position":[[297,20]]},"705":{"position":[[956,20]]},"1011":{"position":[[265,20]]}},"keywords":{}}],["cpu=1,memory=1024m",{"_index":739,"title":{},"content":{"77":{"position":[[452,20],[1210,20]]},"78":{"position":[[423,20],[1328,20]]},"79":{"position":[[719,20],[1298,20],[1362,20]]},"80":{"position":[[752,20]]},"81":{"position":[[460,20],[1063,20]]},"82":{"position":[[755,20]]},"86":{"position":[[880,20],[944,20]]},"89":{"position":[[877,20],[941,20]]},"438":{"position":[[418,20]]},"441":{"position":[[389,20]]},"449":{"position":[[419,20]]},"461":{"position":[[848,20],[912,20]]},"466":{"position":[[853,20],[917,20]]},"496":{"position":[[637,20],[701,20]]},"497":{"position":[[648,20]]},"669":{"position":[[880,20],[944,20]]},"672":{"position":[[877,20],[941,20]]},"676":{"position":[[452,20],[1210,20]]},"677":{"position":[[423,20],[1328,20]]},"678":{"position":[[719,20],[1298,20],[1362,20]]},"679":{"position":[[752,20]]},"680":{"position":[[460,20],[1063,20]]},"681":{"position":[[755,20]]},"965":{"position":[[418,20]]},"968":{"position":[[389,20]]},"976":{"position":[[419,20]]},"988":{"position":[[848,20],[912,20]]},"993":{"position":[[853,20],[917,20]]},"1023":{"position":[[637,20],[701,20]]},"1024":{"position":[[648,20]]}},"keywords":{}}],["cpu=1,memory=2048m",{"_index":740,"title":{},"content":{"77":{"position":[[516,20],[1274,20]]},"78":{"position":[[487,20],[1392,20]]},"79":{"position":[[783,20]]},"80":{"position":[[816,20]]},"81":{"position":[[524,20],[1127,20]]},"82":{"position":[[819,20]]},"438":{"position":[[482,20]]},"441":{"position":[[453,20]]},"449":{"position":[[483,20]]},"676":{"position":[[516,20],[1274,20]]},"677":{"position":[[487,20],[1392,20]]},"678":{"position":[[783,20]]},"679":{"position":[[816,20]]},"680":{"position":[[524,20],[1127,20]]},"681":{"position":[[819,20]]},"965":{"position":[[482,20]]},"968":{"position":[[453,20]]},"976":{"position":[[483,20]]}},"keywords":{}}],["cpu=1,memory=512m",{"_index":3560,"title":{},"content":{"492":{"position":[[403,19]]},"1006":{"position":[[403,19]]}},"keywords":{}}],["cpu=4,memory=2048m,nvidia.com/gpu=1",{"_index":2105,"title":{},"content":{"223":{"position":[[502,37],[588,37]]},"226":{"position":[[237,37],[323,37]]},"808":{"position":[[502,37],[588,37]]},"811":{"position":[[237,37],[323,37]]}},"keywords":{}}],["cpudocker/mxnet/base/ubuntu",{"_index":3715,"title":{},"content":{"550":{"position":[[188,27]]},"1076":{"position":[[188,27]]}},"keywords":{}}],["crd",{"_index":1948,"title":{},"content":{"194":{"position":[[1006,3]]},"777":{"position":[[1286,3]]}},"keywords":{}}],["crd/podgroups.scheduling.incubator.k8s.io",{"_index":135,"title":{},"content":{"7":{"position":[[1010,41]]},"596":{"position":[[1010,41]]}},"keywords":{}}],["crd/pytorchjobs.kubeflow.org",{"_index":136,"title":{},"content":{"7":{"position":[[1070,28]]},"596":{"position":[[1070,28]]}},"keywords":{}}],["crd/tfjobs.kubeflow.org",{"_index":134,"title":{},"content":{"7":{"position":[[968,23]]},"596":{"position":[[968,23]]}},"keywords":{}}],["creat",{"_index":315,"title":{"71":{"position":[[0,6]]},"77":{"position":[[0,6]]},"78":{"position":[[0,6]]},"86":{"position":[[0,6]]},"91":{"position":[[16,6]]},"97":{"position":[[0,6]]},"100":{"position":[[0,6]]},"105":{"position":[[0,6]]},"109":{"position":[[0,6]]},"114":{"position":[[0,6]]},"119":{"position":[[0,8]]},"122":{"position":[[7,6]]},"123":{"position":[[7,6]]},"124":{"position":[[17,6]]},"128":{"position":[[7,6]]},"189":{"position":[[0,6]]},"333":{"position":[[29,7]]},"339":{"position":[[4,6]]},"374":{"position":[[0,8]]},"375":{"position":[[7,6]]},"391":{"position":[[0,6]]},"394":{"position":[[0,6]]},"421":{"position":[[0,6]]},"436":{"position":[[0,6]]},"439":{"position":[[0,6]]},"459":{"position":[[0,6]]},"470":{"position":[[16,6]]},"477":{"position":[[0,6]]},"549":{"position":[[7,6]]},"553":{"position":[[7,6]]},"559":{"position":[[7,6]]},"663":{"position":[[0,6]]},"669":{"position":[[0,6]]},"674":{"position":[[16,6]]},"676":{"position":[[0,6]]},"677":{"position":[[0,6]]},"687":{"position":[[0,8]]},"690":{"position":[[7,6]]},"691":{"position":[[7,6]]},"692":{"position":[[17,6]]},"696":{"position":[[7,6]]},"702":{"position":[[0,6]]},"772":{"position":[[0,6]]},"901":{"position":[[0,8]]},"902":{"position":[[7,6]]},"918":{"position":[[0,6]]},"921":{"position":[[0,6]]},"948":{"position":[[0,6]]},"963":{"position":[[0,6]]},"966":{"position":[[0,6]]},"986":{"position":[[0,6]]},"997":{"position":[[16,6]]},"1009":{"position":[[0,6]]},"1075":{"position":[[7,6]]},"1079":{"position":[[7,6]]},"1094":{"position":[[7,6]]}},"content":{"20":{"position":[[263,6],[759,6],[863,6]]},"25":{"position":[[268,6]]},"29":{"position":[[137,8]]},"35":{"position":[[38,7],[1206,8],[1240,6]]},"97":{"position":[[250,7]]},"100":{"position":[[682,10]]},"107":{"position":[[3714,7]]},"120":{"position":[[66,6]]},"122":{"position":[[35,6],[290,8]]},"123":{"position":[[117,6]]},"125":{"position":[[182,6]]},"127":{"position":[[118,8]]},"128":{"position":[[102,6]]},"141":{"position":[[1743,6]]},"152":{"position":[[565,6]]},"159":{"position":[[1923,6]]},"168":{"position":[[71,6]]},"170":{"position":[[27,7]]},"173":{"position":[[366,6]]},"176":{"position":[[821,6]]},"193":{"position":[[313,6]]},"194":{"position":[[1263,6],[1434,6]]},"196":{"position":[[398,6],[704,6]]},"200":{"position":[[1400,6]]},"201":{"position":[[317,8]]},"217":{"position":[[2207,6]]},"230":{"position":[[110,6]]},"261":{"position":[[51,6]]},"269":{"position":[[75,6]]},"275":{"position":[[26,8]]},"300":{"position":[[559,6]]},"307":{"position":[[56,8]]},"314":{"position":[[510,8],[619,8],[755,8],[864,8],[1386,8],[1495,8],[1625,8],[1734,8]]},"324":{"position":[[245,8]]},"331":{"position":[[2334,8],[2588,7]]},"339":{"position":[[7,8],[161,6]]},"340":{"position":[[30,8]]},"349":{"position":[[68,6]]},"352":{"position":[[161,7]]},"383":{"position":[[728,6],[754,6],[818,6]]},"384":{"position":[[698,8]]},"389":{"position":[[13580,8],[14132,8],[14607,8],[15248,8],[16462,8],[16593,8],[16724,8],[16858,8],[29129,8],[29681,8],[30156,8],[30797,8],[31316,8],[31447,8],[31578,8],[31712,8]]},"391":{"position":[[537,6],[622,6]]},"394":{"position":[[88,6],[137,6]]},"398":{"position":[[79,7]]},"406":{"position":[[128,6]]},"407":{"position":[[99,6],[532,6],[1286,6],[1398,6]]},"411":{"position":[[200,6],[257,6]]},"479":{"position":[[645,10]]},"495":{"position":[[34,7]]},"496":{"position":[[0,6]]},"499":{"position":[[63,8]]},"502":{"position":[[50,8]]},"507":{"position":[[147,6]]},"513":{"position":[[261,6]]},"543":{"position":[[268,6]]},"547":{"position":[[137,8]]},"570":{"position":[[7590,8],[7769,8],[7948,8],[8127,8],[8306,8],[8485,8],[8664,8],[8843,8]]},"613":{"position":[[268,6]]},"617":{"position":[[137,8]]},"620":{"position":[[263,6],[759,6],[863,6]]},"627":{"position":[[38,7],[1206,8],[1240,6]]},"688":{"position":[[66,6]]},"690":{"position":[[35,6],[290,8]]},"691":{"position":[[117,6]]},"693":{"position":[[182,6]]},"695":{"position":[[118,8]]},"696":{"position":[[102,6]]},"702":{"position":[[682,10]]},"722":{"position":[[565,6]]},"729":{"position":[[1923,6]]},"738":{"position":[[71,6]]},"740":{"position":[[27,7]]},"743":{"position":[[367,6]]},"746":{"position":[[823,6]]},"750":{"position":[[317,8]]},"776":{"position":[[313,6]]},"777":{"position":[[1543,6],[1714,6]]},"779":{"position":[[398,6],[704,6]]},"783":{"position":[[1400,6]]},"787":{"position":[[2207,6]]},"793":{"position":[[110,6]]},"832":{"position":[[51,6]]},"840":{"position":[[75,6]]},"846":{"position":[[26,8]]},"853":{"position":[[85,6],[175,6],[276,6],[379,6],[480,6],[581,6]]},"869":{"position":[[996,6]]},"873":{"position":[[56,8]]},"894":{"position":[[245,8]]},"910":{"position":[[728,6],[754,6],[818,6]]},"911":{"position":[[698,8]]},"916":{"position":[[13580,8],[14132,8],[14607,8],[15248,8],[16462,8],[16593,8],[16724,8],[16858,8],[29129,8],[29681,8],[30156,8],[30797,8],[31316,8],[31447,8],[31578,8],[31712,8]]},"918":{"position":[[537,6],[622,6]]},"921":{"position":[[88,6],[137,6]]},"925":{"position":[[79,7]]},"933":{"position":[[128,6]]},"934":{"position":[[99,6],[552,6],[1306,6],[1418,6]]},"1011":{"position":[[645,10]]},"1022":{"position":[[34,7]]},"1023":{"position":[[0,6]]},"1026":{"position":[[63,8]]},"1029":{"position":[[50,8]]},"1046":{"position":[[147,6]]},"1052":{"position":[[261,6]]},"1064":{"position":[[28,6],[833,6]]},"1069":{"position":[[268,6]]},"1073":{"position":[[137,8]]},"1090":{"position":[[7590,8],[7769,8],[7948,8],[8127,8],[8306,8],[8485,8],[8664,8],[8843,8]]}},"keywords":{}}],["create/manag",{"_index":1803,"title":{},"content":{"175":{"position":[[407,13]]},"745":{"position":[[407,13]]}},"keywords":{}}],["create/update/delete/list",{"_index":760,"title":{},"content":{"78":{"position":[[689,25]]},"677":{"position":[[689,25]]}},"keywords":{}}],["create_environ",{"_index":1899,"title":{},"content":{"188":{"position":[[525,18]]},"771":{"position":[[525,18]]}},"keywords":{}}],["create_experi",{"_index":1905,"title":{},"content":{"189":{"position":[[232,17],[730,17],[1121,17]]},"772":{"position":[[232,17],[730,17],[1121,17]]}},"keywords":{}}],["create_experiment(experiment_spec",{"_index":3562,"title":{"496":{"position":[[0,34]]},"1023":{"position":[[0,34]]}},"content":{},"keywords":{}}],["created/submit",{"_index":1788,"title":{},"content":{"171":{"position":[[2271,17]]},"741":{"position":[[2284,17]]}},"keywords":{}}],["createdtim",{"_index":927,"title":{},"content":{"103":{"position":[[454,14]]},"705":{"position":[[454,14]]}},"keywords":{}}],["createdtime\":\"2020",{"_index":901,"title":{},"content":{"100":{"position":[[693,19]]},"101":{"position":[[435,19]]},"102":{"position":[[426,19]]},"702":{"position":[[693,19]]},"703":{"position":[[435,19]]},"704":{"position":[[426,19]]}},"keywords":{}}],["createdtime\":\"2021",{"_index":3475,"title":{},"content":{"443":{"position":[[336,19]]},"479":{"position":[[656,19]]},"482":{"position":[[403,19]]},"485":{"position":[[391,19]]},"488":{"position":[[421,19]]},"970":{"position":[[336,19]]},"1011":{"position":[[656,19]]},"1014":{"position":[[403,19]]},"1017":{"position":[[391,19]]},"1020":{"position":[[421,19]]}},"keywords":{}}],["createdtime\":nul",{"_index":3438,"title":{},"content":{"438":{"position":[[825,19]]},"441":{"position":[[945,19]]},"443":{"position":[[1426,19]]},"446":{"position":[[362,19]]},"449":{"position":[[856,19]]},"452":{"position":[[337,19]]},"472":{"position":[[515,19]]},"965":{"position":[[825,19]]},"968":{"position":[[945,19]]},"970":{"position":[[1426,19]]},"973":{"position":[[362,19]]},"976":{"position":[[856,19]]},"979":{"position":[[337,19]]},"999":{"position":[[515,19]]}},"keywords":{}}],["createexperiment(templatedexperimentparamet",{"_index":1996,"title":{},"content":{"200":{"position":[[2610,46]]},"783":{"position":[[2610,46]]}},"keywords":{}}],["createsess",{"_index":3987,"title":{},"content":{"570":{"position":[[14220,13]]},"1090":{"position":[[14220,13]]}},"keywords":{}}],["creation",{"_index":1142,"title":{},"content":{"107":{"position":[[9567,8]]},"168":{"position":[[306,9]]},"179":{"position":[[1181,8]]},"389":{"position":[[16183,8]]},"738":{"position":[[306,9]]},"749":{"position":[[1186,8]]},"916":{"position":[[16183,8]]}},"keywords":{}}],["creationtim",{"_index":852,"title":{},"content":{"93":{"position":[[236,14],[599,14],[962,14],[1326,14]]},"94":{"position":[[244,14]]},"110":{"position":[[229,14],[407,14],[586,14]]},"111":{"position":[[245,14]]}},"keywords":{}}],["credenti",{"_index":1556,"title":{"244":{"position":[[14,10]]},"814":{"position":[[14,10]]}},"content":{"158":{"position":[[85,11],[263,12]]},"176":{"position":[[282,12],[385,11],[769,12],[1002,11]]},"193":{"position":[[239,11],[469,11]]},"212":{"position":[[226,12]]},"244":{"position":[[6,10],[61,12],[103,10]]},"728":{"position":[[85,11],[263,12]]},"746":{"position":[[283,12],[386,11],[770,12],[1005,11]]},"761":{"position":[[226,12]]},"776":{"position":[[239,11],[469,11]]},"814":{"position":[[6,10],[61,12],[103,10]]}},"keywords":{}}],["credit",{"_index":1319,"title":{},"content":{"135":{"position":[[209,7]]},"707":{"position":[[209,7]]}},"keywords":{}}],["cross",{"_index":1634,"title":{},"content":{"160":{"position":[[361,5]]},"730":{"position":[[361,5]]}},"keywords":{}}],["crud",{"_index":2064,"title":{},"content":{"216":{"position":[[395,4]]},"786":{"position":[[395,4]]}},"keywords":{}}],["csh",{"_index":3161,"title":{},"content":{"389":{"position":[[15444,5],[30993,5]]},"916":{"position":[[15444,5],[30993,5]]}},"keywords":{}}],["cst",{"_index":2401,"title":{},"content":{"314":{"position":[[2646,3]]}},"keywords":{}}],["ctr",{"_index":1745,"title":{},"content":{"171":{"position":[[792,4]]},"199":{"position":[[293,3],[885,3]]},"200":{"position":[[581,3]]},"403":{"position":[[58,3]]},"741":{"position":[[797,4]]},"782":{"position":[[293,3],[885,3]]},"783":{"position":[[581,3]]},"930":{"position":[[58,3]]}},"keywords":{}}],["ctrl+c",{"_index":4242,"title":{},"content":{"869":{"position":[[1650,6]]}},"keywords":{}}],["cuda",{"_index":1463,"title":{},"content":{"151":{"position":[[804,4]]},"156":{"position":[[475,5]]},"181":{"position":[[822,5]]},"375":{"position":[[252,5],[1043,4]]},"549":{"position":[[233,5]]},"553":{"position":[[237,5]]},"559":{"position":[[234,5]]},"560":{"position":[[112,4]]},"721":{"position":[[804,4]]},"726":{"position":[[475,5]]},"764":{"position":[[822,5]]},"902":{"position":[[252,5],[1043,4]]},"1075":{"position":[[233,5]]},"1079":{"position":[[237,5]]},"1094":{"position":[[234,5]]},"1095":{"position":[[112,4]]}},"keywords":{}}],["cuda10",{"_index":2762,"title":{},"content":{"376":{"position":[[187,7]]},"550":{"position":[[304,7]]},"554":{"position":[[356,7]]},"560":{"position":[[606,7]]},"903":{"position":[[187,7]]},"1076":{"position":[[304,7]]},"1080":{"position":[[356,7]]},"1095":{"position":[[606,7]]}},"keywords":{}}],["cuda10.docker/pytorch/with",{"_index":3756,"title":{},"content":{"554":{"position":[[224,26]]},"1080":{"position":[[224,26]]}},"keywords":{}}],["cuda10.docker/tensorflow/with",{"_index":3783,"title":{},"content":{"560":{"position":[[469,29]]},"1095":{"position":[[469,29]]}},"keywords":{}}],["cuda100",{"_index":3735,"title":{},"content":{"553":{"position":[[1014,7]]},"1079":{"position":[[1014,7]]}},"keywords":{}}],["cuda=10.2",{"_index":1459,"title":{},"content":{"151":{"position":[[660,11],[1599,11]]},"721":{"position":[[660,11],[1599,11]]}},"keywords":{}}],["cuda=10.3",{"_index":1474,"title":{},"content":{"151":{"position":[[1891,11]]},"721":{"position":[[1891,11]]}},"keywords":{}}],["cudnn",{"_index":2721,"title":{},"content":{"375":{"position":[[258,6]]},"549":{"position":[[239,6]]},"553":{"position":[[243,6]]},"559":{"position":[[240,6]]},"902":{"position":[[258,6]]},"1075":{"position":[[239,6]]},"1079":{"position":[[243,6]]},"1094":{"position":[[240,6]]}},"keywords":{}}],["cudnn7",{"_index":2717,"title":{},"content":{"375":{"position":[[132,6],[422,6]]},"553":{"position":[[412,6]]},"902":{"position":[[132,6],[422,6]]},"1079":{"position":[[412,6]]}},"keywords":{}}],["curl",{"_index":684,"title":{},"content":{"71":{"position":[[41,4]]},"72":{"position":[[41,4]]},"73":{"position":[[48,4]]},"74":{"position":[[50,4]]},"75":{"position":[[48,4]]},"77":{"position":[[40,4]]},"78":{"position":[[40,4]]},"79":{"position":[[40,4]]},"80":{"position":[[45,4]]},"81":{"position":[[47,4]]},"82":{"position":[[45,4]]},"83":{"position":[[45,4]]},"84":{"position":[[50,4]]},"86":{"position":[[38,4]]},"87":{"position":[[38,4]]},"88":{"position":[[45,4]]},"89":{"position":[[30,4]]},"90":{"position":[[45,4]]},"91":{"position":[[57,4]]},"93":{"position":[[50,4]]},"94":{"position":[[60,4]]},"95":{"position":[[45,4]]},"96":{"position":[[62,4]]},"97":{"position":[[87,4]]},"98":{"position":[[89,4]]},"100":{"position":[[38,4]]},"101":{"position":[[38,4]]},"102":{"position":[[43,4]]},"103":{"position":[[46,4]]},"105":{"position":[[107,4]]},"106":{"position":[[37,4]]},"109":{"position":[[46,4]]},"110":{"position":[[46,4]]},"111":{"position":[[53,4]]},"112":{"position":[[55,4]]},"113":{"position":[[55,4]]},"114":{"position":[[72,4]]},"115":{"position":[[74,4]]},"314":{"position":[[22,4]]},"391":{"position":[[310,4]]},"423":{"position":[[6,4]]},"425":{"position":[[6,4]]},"428":{"position":[[6,4]]},"431":{"position":[[6,4]]},"434":{"position":[[6,4]]},"438":{"position":[[6,4]]},"441":{"position":[[6,4]]},"443":{"position":[[6,4]]},"446":{"position":[[6,4]]},"449":{"position":[[6,4]]},"452":{"position":[[6,4]]},"454":{"position":[[6,4]]},"457":{"position":[[6,4]]},"461":{"position":[[6,4]]},"463":{"position":[[6,4]]},"466":{"position":[[6,4]]},"469":{"position":[[6,4]]},"472":{"position":[[6,4]]},"479":{"position":[[6,4]]},"482":{"position":[[6,4]]},"485":{"position":[[6,4]]},"488":{"position":[[6,4]]},"553":{"position":[[559,4],[658,4]]},"559":{"position":[[526,4],[837,4]]},"663":{"position":[[41,4]]},"664":{"position":[[41,4]]},"665":{"position":[[48,4]]},"666":{"position":[[50,4]]},"667":{"position":[[48,4]]},"669":{"position":[[38,4]]},"670":{"position":[[38,4]]},"671":{"position":[[45,4]]},"672":{"position":[[30,4]]},"673":{"position":[[45,4]]},"674":{"position":[[57,4]]},"676":{"position":[[40,4]]},"677":{"position":[[40,4]]},"678":{"position":[[40,4]]},"679":{"position":[[45,4]]},"680":{"position":[[47,4]]},"681":{"position":[[45,4]]},"682":{"position":[[45,4]]},"683":{"position":[[50,4]]},"702":{"position":[[38,4]]},"703":{"position":[[38,4]]},"704":{"position":[[43,4]]},"705":{"position":[[46,4]]},"918":{"position":[[310,4]]},"950":{"position":[[6,4]]},"952":{"position":[[6,4]]},"955":{"position":[[6,4]]},"958":{"position":[[6,4]]},"961":{"position":[[6,4]]},"965":{"position":[[6,4]]},"968":{"position":[[6,4]]},"970":{"position":[[6,4]]},"973":{"position":[[6,4]]},"976":{"position":[[6,4]]},"979":{"position":[[6,4]]},"981":{"position":[[6,4]]},"984":{"position":[[6,4]]},"988":{"position":[[6,4]]},"990":{"position":[[6,4]]},"993":{"position":[[6,4]]},"996":{"position":[[6,4]]},"999":{"position":[[6,4]]},"1011":{"position":[[6,4]]},"1014":{"position":[[6,4]]},"1017":{"position":[[6,4]]},"1020":{"position":[[6,4]]},"1079":{"position":[[559,4],[658,4]]},"1094":{"position":[[526,4],[837,4]]}},"keywords":{}}],["current",{"_index":361,"title":{"524":{"position":[[5,7]]}},"content":{"23":{"position":[[123,7]]},"35":{"position":[[171,9]]},"107":{"position":[[5233,7]]},"190":{"position":[[561,7]]},"248":{"position":[[676,7]]},"361":{"position":[[46,10]]},"375":{"position":[[1522,7]]},"383":{"position":[[44,9]]},"389":{"position":[[7615,9],[14990,7],[15539,7],[16234,7],[17029,7],[23333,9],[30539,7],[31088,7],[31883,7]]},"437":{"position":[[1154,9]]},"507":{"position":[[252,7],[359,7],[475,7],[600,7]]},"541":{"position":[[123,7]]},"549":{"position":[[1548,7]]},"553":{"position":[[1946,7]]},"559":{"position":[[1583,7]]},"569":{"position":[[1232,7]]},"611":{"position":[[123,7]]},"627":{"position":[[171,9]]},"773":{"position":[[561,7]]},"818":{"position":[[676,7]]},"883":{"position":[[46,10]]},"902":{"position":[[1522,7]]},"910":{"position":[[44,9]]},"916":{"position":[[7615,9],[14990,7],[15539,7],[16234,7],[17029,7],[23333,9],[30539,7],[31088,7],[31883,7]]},"964":{"position":[[1154,9]]},"1035":{"position":[[24,7]]},"1036":{"position":[[30,7]]},"1037":{"position":[[23,7]]},"1038":{"position":[[29,7]]},"1046":{"position":[[600,7]]},"1053":{"position":[[399,10]]},"1064":{"position":[[1793,10]]},"1067":{"position":[[123,7]]},"1075":{"position":[[1548,7]]},"1079":{"position":[[1946,7]]},"1089":{"position":[[1232,7]]},"1094":{"position":[[1583,7]]}},"keywords":{}}],["currentstag",{"_index":855,"title":{},"content":{"93":{"position":[[276,14],[639,14],[1002,14],[1366,14]]},"94":{"position":[[284,14]]},"95":{"position":[[170,15]]}},"keywords":{}}],["custom",{"_index":248,"title":{"281":{"position":[[11,6]]},"852":{"position":[[11,6]]}},"content":{"16":{"position":[[630,10]]},"151":{"position":[[257,6],[1965,10],[2051,12]]},"153":{"position":[[263,9]]},"156":{"position":[[666,14]]},"175":{"position":[[393,9]]},"215":{"position":[[1461,10]]},"384":{"position":[[525,9]]},"411":{"position":[[219,6]]},"608":{"position":[[630,10]]},"721":{"position":[[257,6],[1965,10],[2051,12]]},"723":{"position":[[263,9]]},"726":{"position":[[666,14]]},"745":{"position":[[393,9]]},"785":{"position":[[1461,10]]},"911":{"position":[[525,9]]}},"keywords":{}}],["cut",{"_index":503,"title":{},"content":{"28":{"position":[[785,3],[802,3]]},"546":{"position":[[785,3],[802,3]]},"616":{"position":[[785,3],[802,3]]},"1072":{"position":[[785,3],[802,3]]}},"keywords":{}}],["cycl",{"_index":1954,"title":{},"content":{"195":{"position":[[39,5]]},"778":{"position":[[39,5]]}},"keywords":{}}],["cython",{"_index":3733,"title":{},"content":{"553":{"position":[[946,6]]},"1079":{"position":[[946,6]]}},"keywords":{}}],["d",{"_index":185,"title":{},"content":{"13":{"position":[[187,1],[320,1]]},"28":{"position":[[790,1],[807,1]]},"71":{"position":[[91,1]]},"74":{"position":[[101,1]]},"77":{"position":[[90,1]]},"78":{"position":[[90,1]]},"81":{"position":[[98,1]]},"86":{"position":[[88,1]]},"89":{"position":[[81,1]]},"91":{"position":[[107,1]]},"95":{"position":[[96,1]]},"100":{"position":[[88,1]]},"105":{"position":[[157,1]]},"106":{"position":[[89,1]]},"109":{"position":[[96,1]]},"112":{"position":[[106,1]]},"423":{"position":[[56,1]]},"431":{"position":[[57,1]]},"438":{"position":[[56,1]]},"441":{"position":[[56,1]]},"449":{"position":[[57,1]]},"461":{"position":[[56,1]]},"466":{"position":[[57,1]]},"472":{"position":[[56,1]]},"479":{"position":[[56,1]]},"546":{"position":[[790,1],[807,1]]},"605":{"position":[[187,1],[320,1]]},"616":{"position":[[790,1],[807,1]]},"663":{"position":[[91,1]]},"666":{"position":[[101,1]]},"669":{"position":[[88,1]]},"672":{"position":[[81,1]]},"674":{"position":[[107,1]]},"676":{"position":[[90,1]]},"677":{"position":[[90,1]]},"680":{"position":[[98,1]]},"702":{"position":[[88,1]]},"950":{"position":[[56,1]]},"958":{"position":[[57,1]]},"965":{"position":[[56,1]]},"968":{"position":[[56,1]]},"976":{"position":[[57,1]]},"988":{"position":[[56,1]]},"993":{"position":[[57,1]]},"999":{"position":[[56,1]]},"1011":{"position":[[56,1]]},"1072":{"position":[[790,1],[807,1]]}},"keywords":{}}],["daemon",{"_index":471,"title":{},"content":{"28":{"position":[[45,7]]},"218":{"position":[[74,6],[244,8]]},"248":{"position":[[55,6]]},"259":{"position":[[45,6]]},"300":{"position":[[305,6],[465,6]]},"302":{"position":[[51,6],[210,6]]},"546":{"position":[[45,7]]},"616":{"position":[[45,7]]},"788":{"position":[[74,6],[244,8]]},"818":{"position":[[55,6]]},"830":{"position":[[45,6]]},"867":{"position":[[305,6],[465,6]]},"869":{"position":[[51,6],[210,6]]},"1072":{"position":[[45,7]]}},"keywords":{}}],["daemon.sh",{"_index":215,"title":{},"content":{"15":{"position":[[29,9],[288,9]]},"16":{"position":[[67,9],[125,9]]},"607":{"position":[[29,9],[288,9]]},"608":{"position":[[67,9],[125,9]]}},"keywords":{}}],["dag",{"_index":1782,"title":{},"content":{"171":{"position":[[2146,3]]},"741":{"position":[[2158,3]]}},"keywords":{}}],["dang",{"_index":2032,"title":{},"content":{"213":{"position":[[214,9]]},"762":{"position":[[214,9]]}},"keywords":{}}],["dashboard",{"_index":2093,"title":{"392":{"position":[[11,9]]},"396":{"position":[[6,9]]},"919":{"position":[[11,9]]},"923":{"position":[[6,9]]}},"content":{"218":{"position":[[452,10]]},"393":{"position":[[10,10]]},"394":{"position":[[69,10],[110,9],[163,9]]},"395":{"position":[[42,10],[131,9],[203,9]]},"396":{"position":[[30,9],[149,9]]},"788":{"position":[[452,10]]},"920":{"position":[[10,10]]},"921":{"position":[[69,10],[110,9],[163,9]]},"922":{"position":[[42,10],[131,9],[203,9]]},"923":{"position":[[30,9],[149,9]]}},"keywords":{}}],["dashboard/services/https:kubernet",{"_index":3216,"title":{},"content":{"396":{"position":[[95,35]]},"923":{"position":[[95,35]]}},"keywords":{}}],["dashboard:/proxi",{"_index":3217,"title":{},"content":{"396":{"position":[[131,17]]},"923":{"position":[[131,17]]}},"keywords":{}}],["dat",{"_index":1210,"title":{},"content":{"123":{"position":[[44,4]]},"691":{"position":[[44,4]]}},"keywords":{}}],["data",{"_index":198,"title":{"14":{"position":[[10,4]]},"42":{"position":[[0,4]]},"47":{"position":[[0,4]]},"62":{"position":[[0,4]]},"67":{"position":[[0,4]]},"161":{"position":[[40,4]]},"163":{"position":[[8,4]]},"164":{"position":[[20,4]]},"386":{"position":[[8,4]]},"606":{"position":[[10,4]]},"634":{"position":[[0,4]]},"639":{"position":[[0,4]]},"654":{"position":[[0,4]]},"659":{"position":[[0,4]]},"731":{"position":[[40,4]]},"733":{"position":[[8,4]]},"734":{"position":[[20,4]]},"913":{"position":[[8,4]]}},"content":{"14":{"position":[[164,4],[309,4]]},"23":{"position":[[367,4],[580,4],[629,4],[851,4],[900,4]]},"153":{"position":[[84,4]]},"158":{"position":[[30,4]]},"159":{"position":[[654,4],[731,4],[1797,4],[2416,4],[2451,4],[2467,4],[2551,4],[2653,4]]},"160":{"position":[[18,4],[80,4],[99,4],[110,4],[134,4],[237,4],[267,4],[312,5],[556,4],[649,4],[695,4],[746,4]]},"161":{"position":[[34,4],[89,4],[289,4],[490,4],[691,4],[753,4]]},"162":{"position":[[726,4],[776,4]]},"163":{"position":[[41,4],[183,4]]},"165":{"position":[[10,4],[32,4],[142,4],[184,4],[212,4],[304,4]]},"168":{"position":[[52,4],[147,4],[167,4],[292,4]]},"171":{"position":[[1056,4]]},"176":{"position":[[226,5],[241,4],[364,4]]},"177":{"position":[[159,4]]},"179":{"position":[[334,5]]},"181":{"position":[[463,5],[1194,4],[1998,4]]},"196":{"position":[[512,4]]},"197":{"position":[[137,4]]},"198":{"position":[[53,4]]},"199":{"position":[[1106,4]]},"200":{"position":[[1745,4]]},"213":{"position":[[190,5]]},"216":{"position":[[73,4],[187,4],[426,5]]},"217":{"position":[[543,5],[1828,4]]},"229":{"position":[[495,4]]},"230":{"position":[[38,4]]},"242":{"position":[[155,4]]},"246":{"position":[[485,4]]},"248":{"position":[[217,4]]},"259":{"position":[[487,4],[648,4]]},"261":{"position":[[288,4],[364,5],[398,4],[466,5],[555,4],[590,4]]},"273":{"position":[[566,4],[1271,4]]},"355":{"position":[[437,4]]},"383":{"position":[[268,4]]},"386":{"position":[[61,4]]},"415":{"position":[[501,4]]},"437":{"position":[[104,4]]},"448":{"position":[[90,4]]},"460":{"position":[[648,4]]},"478":{"position":[[94,4]]},"517":{"position":[[208,4]]},"541":{"position":[[367,4],[580,4],[629,4],[851,4],[900,4]]},"565":{"position":[[326,4],[351,4],[438,4],[463,6]]},"566":{"position":[[95,4],[120,4],[311,4],[336,4],[621,4],[646,4]]},"568":{"position":[[353,5],[478,4],[886,4],[915,4]]},"570":{"position":[[446,4],[474,4],[9943,4],[9971,4]]},"571":{"position":[[50,4],[242,4]]},"580":{"position":[[380,4],[592,4]]},"606":{"position":[[164,4],[309,4]]},"611":{"position":[[367,4],[580,4],[629,4],[851,4],[900,4]]},"723":{"position":[[84,4]]},"728":{"position":[[30,4]]},"729":{"position":[[654,4],[731,4],[1797,4],[2416,4],[2451,4],[2467,4],[2551,4],[2653,4]]},"730":{"position":[[18,4],[80,4],[99,4],[110,4],[134,4],[237,4],[267,4],[312,5],[556,4],[649,4],[695,4],[746,4]]},"731":{"position":[[34,4],[89,4],[289,4],[490,4],[691,4],[753,4]]},"732":{"position":[[726,4],[776,4]]},"733":{"position":[[41,4],[183,4]]},"735":{"position":[[10,4],[32,4],[142,4],[184,4],[212,4],[304,4]]},"738":{"position":[[52,4],[147,4],[167,4],[292,4]]},"741":{"position":[[1061,4]]},"746":{"position":[[226,5],[241,4],[365,4]]},"747":{"position":[[159,4]]},"749":{"position":[[334,5]]},"762":{"position":[[190,5]]},"764":{"position":[[463,5],[1199,4],[2011,4]]},"779":{"position":[[512,4]]},"780":{"position":[[142,4]]},"781":{"position":[[53,4]]},"782":{"position":[[1106,4]]},"783":{"position":[[1745,4]]},"786":{"position":[[73,4],[187,4],[426,5]]},"787":{"position":[[543,5],[1828,4]]},"792":{"position":[[495,4]]},"793":{"position":[[38,4]]},"805":{"position":[[155,4]]},"816":{"position":[[485,4]]},"818":{"position":[[217,4]]},"830":{"position":[[487,4],[648,4]]},"832":{"position":[[288,4],[364,5],[398,4],[466,5],[555,4],[590,4]]},"844":{"position":[[566,4],[1271,4]]},"910":{"position":[[268,4]]},"913":{"position":[[61,4]]},"942":{"position":[[519,4]]},"964":{"position":[[104,4]]},"975":{"position":[[90,4]]},"987":{"position":[[648,4]]},"1010":{"position":[[94,4]]},"1057":{"position":[[208,4]]},"1064":{"position":[[1948,4]]},"1067":{"position":[[367,4],[580,4],[629,4],[851,4],[900,4]]},"1085":{"position":[[326,4],[351,4],[438,4],[463,6]]},"1086":{"position":[[95,4],[120,4],[311,4],[336,4],[621,4],[646,4]]},"1088":{"position":[[353,5],[478,4],[886,4],[915,4]]},"1090":{"position":[[446,4],[474,4],[9943,4],[9971,4]]},"1091":{"position":[[50,4],[242,4]]},"1106":{"position":[[380,4],[592,4]]}},"keywords":{}}],["data/model",{"_index":1756,"title":{},"content":{"171":{"position":[[1152,11]]},"741":{"position":[[1163,11]]}},"keywords":{}}],["data_dir",{"_index":4127,"title":{},"content":{"579":{"position":[[604,8],[727,8]]},"1105":{"position":[[604,8],[727,8]]}},"keywords":{}}],["databas",{"_index":99,"title":{"14":{"position":[[32,8]]},"302":{"position":[[8,8]]},"606":{"position":[[32,8]]},"869":{"position":[[8,8]]}},"content":{"7":{"position":[[270,8]]},"13":{"position":[[75,9],[142,8],[206,8],[358,8]]},"14":{"position":[[27,8],[72,8],[110,8],[194,9],[209,10],[232,8]]},"105":{"position":[[97,9]]},"155":{"position":[[120,9]]},"196":{"position":[[520,9]]},"207":{"position":[[84,11]]},"216":{"position":[[254,8],[432,8]]},"281":{"position":[[462,8]]},"368":{"position":[[202,9]]},"372":{"position":[[363,8]]},"389":{"position":[[7032,8],[7054,8],[7079,8],[7105,8],[7131,8],[7157,8],[7183,8],[7209,8],[7235,8],[7261,8],[7287,8],[7313,8],[7339,8],[7365,8],[7391,8],[7417,8],[7443,8],[7469,8],[7495,8],[7521,8],[7547,8],[7574,8],[14235,8],[22750,8],[22772,8],[22797,8],[22823,8],[22849,8],[22875,8],[22901,8],[22927,8],[22953,8],[22979,8],[23005,8],[23031,8],[23057,8],[23083,8],[23109,8],[23135,8],[23161,8],[23187,8],[23213,8],[23239,8],[23265,8],[23292,8],[29784,8]]},"411":{"position":[[286,9]]},"412":{"position":[[251,8]]},"512":{"position":[[153,8]]},"517":{"position":[[146,8],[234,8]]},"596":{"position":[[270,8]]},"605":{"position":[[75,9],[142,8],[206,8],[358,8]]},"606":{"position":[[27,8],[72,8],[110,8],[194,9],[209,10],[232,8]]},"725":{"position":[[120,9]]},"756":{"position":[[84,11]]},"779":{"position":[[520,9]]},"786":{"position":[[254,8],[432,8]]},"852":{"position":[[462,8]]},"891":{"position":[[202,9]]},"916":{"position":[[7032,8],[7054,8],[7079,8],[7105,8],[7131,8],[7157,8],[7183,8],[7209,8],[7235,8],[7261,8],[7287,8],[7313,8],[7339,8],[7365,8],[7391,8],[7417,8],[7443,8],[7469,8],[7495,8],[7521,8],[7547,8],[7574,8],[14235,8],[22750,8],[22772,8],[22797,8],[22823,8],[22849,8],[22875,8],[22901,8],[22927,8],[22953,8],[22979,8],[23005,8],[23031,8],[23057,8],[23083,8],[23109,8],[23135,8],[23161,8],[23187,8],[23213,8],[23239,8],[23265,8],[23292,8],[29784,8]]},"939":{"position":[[257,8]]},"1057":{"position":[[146,8],[234,8]]}},"keywords":{}}],["database(e.g",{"_index":1933,"title":{},"content":{"192":{"position":[[94,13]]},"775":{"position":[[94,13]]}},"keywords":{}}],["database.dataset",{"_index":2134,"title":{},"content":{"229":{"position":[[1320,17]]},"792":{"position":[[1321,17]]}},"keywords":{}}],["database:3306/submarin",{"_index":3665,"title":{},"content":{"517":{"position":[[403,24]]},"1057":{"position":[[403,24]]}},"keywords":{}}],["database:submarin",{"_index":192,"title":{},"content":{"13":{"position":[[339,18]]},"605":{"position":[[339,18]]}},"keywords":{}}],["dataset",{"_index":856,"title":{"177":{"position":[[0,7]]},"239":{"position":[[0,7]]},"747":{"position":[[0,7]]},"802":{"position":[[0,7]]}},"content":{"93":{"position":[[301,9],[664,9],[1027,9],[1391,9]]},"94":{"position":[[309,9]]},"95":{"position":[[200,10]]},"168":{"position":[[274,7]]},"177":{"position":[[25,7]]},"230":{"position":[[150,9]]},"232":{"position":[[590,7]]},"386":{"position":[[117,8]]},"415":{"position":[[625,9]]},"565":{"position":[[65,7],[195,7],[277,9]]},"589":{"position":[[469,7],[652,7],[857,7]]},"590":{"position":[[539,7],[724,7],[896,7]]},"738":{"position":[[274,7]]},"747":{"position":[[25,7]]},"793":{"position":[[150,9]]},"795":{"position":[[590,7]]},"913":{"position":[[117,8]]},"942":{"position":[[643,9]]},"1085":{"position":[[65,7],[195,7],[277,9]]},"1115":{"position":[[469,7],[652,7],[857,7]]},"1116":{"position":[[539,7],[724,7],[896,7]]}},"keywords":{}}],["datasets['train'].map(scale).cache().shuffle(buffer_s",{"_index":3341,"title":{},"content":{"415":{"position":[[706,57]]},"942":{"position":[[724,57]]}},"keywords":{}}],["day",{"_index":1152,"title":{},"content":{"107":{"position":[[10688,4],[10935,5],[10997,5]]},"136":{"position":[[174,5]]},"331":{"position":[[942,4]]},"352":{"position":[[858,5]]},"708":{"position":[[174,5]]}},"keywords":{}}],["db",{"_index":2022,"title":{},"content":{"208":{"position":[[284,3]]},"757":{"position":[[284,3]]},"780":{"position":[[150,3]]}},"keywords":{}}],["db.need",{"_index":1969,"title":{},"content":{"197":{"position":[[145,7]]}},"keywords":{}}],["dddd/ee/ff",{"_index":2642,"title":{},"content":{"352":{"position":[[874,10]]}},"keywords":{}}],["ddn",{"_index":2901,"title":{},"content":{"389":{"position":[[2537,4],[18379,4]]},"916":{"position":[[2537,4],[18379,4]]}},"keywords":{}}],["de/d",{"_index":1825,"title":{},"content":{"176":{"position":[[1049,5],[1083,5]]},"746":{"position":[[1052,5],[1086,5]]}},"keywords":{}}],["deactiv",{"_index":4111,"title":{},"content":{"578":{"position":[[487,10]]},"583":{"position":[[394,10]]},"588":{"position":[[390,10]]},"1104":{"position":[[487,10]]},"1109":{"position":[[394,10]]},"1114":{"position":[[390,10]]}},"keywords":{}}],["deal",{"_index":1997,"title":{},"content":{"200":{"position":[[2794,4]]},"295":{"position":[[38,4]]},"350":{"position":[[634,4]]},"783":{"position":[[2794,4]]},"862":{"position":[[38,4]]}},"keywords":{}}],["debian_frontend=noninteract",{"_index":3695,"title":{},"content":{"549":{"position":[[540,30]]},"559":{"position":[[722,30]]},"1075":{"position":[[540,30]]},"1094":{"position":[[722,30]]}},"keywords":{}}],["debug",{"_index":243,"title":{},"content":{"16":{"position":[[398,5]]},"159":{"position":[[1110,9]]},"248":{"position":[[206,10]]},"608":{"position":[[398,5]]},"729":{"position":[[1110,9]]},"818":{"position":[[206,10]]}},"keywords":{}}],["dec",{"_index":2681,"title":{},"content":{"372":{"position":[[35,3]]}},"keywords":{}}],["decad",{"_index":1569,"title":{},"content":{"159":{"position":[[306,7]]},"729":{"position":[[306,7]]}},"keywords":{}}],["decid",{"_index":1039,"title":{},"content":{"107":{"position":[[3990,8]]},"154":{"position":[[76,7]]},"167":{"position":[[308,7]]},"314":{"position":[[967,6]]},"724":{"position":[[76,7]]},"737":{"position":[[308,7]]}},"keywords":{}}],["decis",{"_index":1065,"title":{},"content":{"107":{"position":[[5418,8],[5465,8],[5531,9],[5630,9],[5774,8],[5822,9],[7133,10],[7341,10]]},"314":{"position":[[1262,9]]}},"keywords":{}}],["declar",{"_index":999,"title":{},"content":{"107":{"position":[[2116,11],[4580,11]]}},"keywords":{}}],["declin",{"_index":1391,"title":{},"content":{"141":{"position":[[1394,7]]}},"keywords":{}}],["decoupl",{"_index":2159,"title":{},"content":{"246":{"position":[[294,9]]},"816":{"position":[[294,9]]}},"keywords":{}}],["dedic",{"_index":1305,"title":{},"content":{"133":{"position":[[2287,10]]}},"keywords":{}}],["deep",{"_index":1709,"title":{},"content":{"167":{"position":[[59,4],[158,4]]},"591":{"position":[[63,4]]},"737":{"position":[[59,4],[158,4]]},"1117":{"position":[[63,4]]}},"keywords":{}}],["deepfm",{"_index":1762,"title":{"403":{"position":[[11,6]]},"930":{"position":[[11,6]]}},"content":{"171":{"position":[[1421,6]]},"199":{"position":[[286,6],[904,6]]},"200":{"position":[[573,7]]},"403":{"position":[[293,6]]},"741":{"position":[[1433,6]]},"782":{"position":[[286,6],[904,6]]},"783":{"position":[[573,7]]},"930":{"position":[[293,6]]}},"keywords":{}}],["deepfm.ctr",{"_index":1978,"title":{},"content":{"199":{"position":[[799,10],[825,10]]},"782":{"position":[[799,10],[825,10]]}},"keywords":{}}],["deepfm_ctr",{"_index":1916,"title":{},"content":{"189":{"position":[[1311,13]]},"772":{"position":[[1311,13]]}},"keywords":{}}],["def",{"_index":3329,"title":{},"content":{"415":{"position":[[434,3],[532,3],[764,3],[1347,3],[2008,3]]},"942":{"position":[[452,3],[550,3],[782,3],[1365,3],[2026,3]]}},"keywords":{}}],["default",{"_index":68,"title":{},"content":{"6":{"position":[[188,7]]},"9":{"position":[[124,7]]},"16":{"position":[[273,7],[736,7],[787,7]]},"17":{"position":[[146,7],[210,7],[283,7],[381,7],[804,8],[950,8],[1067,8],[1215,8]]},"35":{"position":[[1439,9]]},"71":{"position":[[232,13],[819,13]]},"72":{"position":[[370,13],[856,13]]},"73":{"position":[[392,13]]},"74":{"position":[[250,13],[740,13]]},"75":{"position":[[403,13]]},"77":{"position":[[144,10],[902,10]]},"78":{"position":[[144,10],[1049,10]]},"79":{"position":[[411,10],[1062,10]]},"80":{"position":[[444,10]]},"81":{"position":[[152,10],[755,10]]},"82":{"position":[[447,10]]},"86":{"position":[[821,9]]},"89":{"position":[[818,9]]},"100":{"position":[[136,10],[1027,10]]},"101":{"position":[[769,10]]},"102":{"position":[[760,10]]},"103":{"position":[[597,10],[820,10]]},"151":{"position":[[1709,7],[2029,8]]},"153":{"position":[[534,7]]},"154":{"position":[[543,8],[964,8]]},"155":{"position":[[389,7]]},"176":{"position":[[955,9]]},"182":{"position":[[270,7],[652,7],[1097,7],[1192,7]]},"188":{"position":[[225,8]]},"189":{"position":[[1160,7]]},"194":{"position":[[801,7]]},"199":{"position":[[115,7],[192,7],[925,7],[1215,8]]},"217":{"position":[[1444,7]]},"281":{"position":[[19,7]]},"331":{"position":[[579,9]]},"380":{"position":[[182,9]]},"383":{"position":[[73,9],[188,7]]},"384":{"position":[[20,7],[119,8],[255,7],[539,7],[938,8]]},"386":{"position":[[699,7]]},"389":{"position":[[14711,7],[15788,7],[30260,7]]},"406":{"position":[[951,7]]},"423":{"position":[[197,13]]},"431":{"position":[[206,13]]},"438":{"position":[[110,10]]},"441":{"position":[[110,10]]},"449":{"position":[[111,10]]},"461":{"position":[[789,9]]},"466":{"position":[[794,9]]},"479":{"position":[[104,10]]},"492":{"position":[[70,10]]},"496":{"position":[[329,10]]},"497":{"position":[[336,10]]},"501":{"position":[[53,7],[142,7]]},"516":{"position":[[118,7]]},"517":{"position":[[345,7]]},"519":{"position":[[187,7]]},"523":{"position":[[94,7]]},"534":{"position":[[111,8]]},"569":{"position":[[1897,7]]},"595":{"position":[[188,7]]},"598":{"position":[[124,7]]},"608":{"position":[[273,7],[736,7],[787,7]]},"609":{"position":[[146,7],[210,7],[283,7],[381,7],[804,8],[950,8],[1067,8],[1215,8]]},"627":{"position":[[1439,9]]},"663":{"position":[[232,13],[819,13]]},"664":{"position":[[370,13],[856,13]]},"665":{"position":[[392,13]]},"666":{"position":[[250,13],[740,13]]},"667":{"position":[[403,13]]},"669":{"position":[[821,9]]},"672":{"position":[[818,9]]},"676":{"position":[[144,10],[902,10]]},"677":{"position":[[144,10],[1049,10]]},"678":{"position":[[411,10],[1062,10]]},"679":{"position":[[444,10]]},"680":{"position":[[152,10],[755,10]]},"681":{"position":[[447,10]]},"702":{"position":[[136,10],[1027,10]]},"703":{"position":[[769,10]]},"704":{"position":[[760,10]]},"705":{"position":[[597,10],[820,10]]},"721":{"position":[[1709,7],[2029,8]]},"723":{"position":[[534,7]]},"724":{"position":[[543,8],[964,8]]},"725":{"position":[[389,7]]},"746":{"position":[[958,9]]},"765":{"position":[[270,7],[652,7],[1097,7],[1192,7]]},"771":{"position":[[225,8]]},"772":{"position":[[1160,7]]},"777":{"position":[[807,7]]},"782":{"position":[[115,7],[192,7],[925,7],[1215,8]]},"787":{"position":[[1444,7]]},"852":{"position":[[19,7]]},"853":{"position":[[117,7]]},"907":{"position":[[182,9]]},"910":{"position":[[73,9],[188,7]]},"911":{"position":[[20,7],[119,8],[255,7],[539,7],[938,8]]},"913":{"position":[[699,7]]},"916":{"position":[[14711,7],[15788,7],[30260,7]]},"950":{"position":[[197,13]]},"958":{"position":[[206,13]]},"965":{"position":[[110,10]]},"968":{"position":[[110,10]]},"976":{"position":[[111,10]]},"988":{"position":[[789,9]]},"993":{"position":[[794,9]]},"1006":{"position":[[70,10]]},"1011":{"position":[[104,10]]},"1023":{"position":[[329,10]]},"1024":{"position":[[336,10]]},"1028":{"position":[[53,7],[142,7]]},"1037":{"position":[[129,8]]},"1053":{"position":[[220,8]]},"1056":{"position":[[118,7]]},"1057":{"position":[[345,7]]},"1059":{"position":[[187,7]]},"1089":{"position":[[1897,7]]}},"keywords":{}}],["default)vu",{"_index":170,"title":{},"content":{"12":{"position":[[8,12]]},"604":{"position":[[8,12]]}},"keywords":{}}],["defin",{"_index":939,"title":{"185":{"position":[[11,7]]},"768":{"position":[[11,7]]}},"content":{"107":{"position":[[14,7],[87,7],[775,6],[932,7],[5698,7]]},"151":{"position":[[48,7],[283,7],[414,6]]},"152":{"position":[[49,6]]},"154":{"position":[[1250,7]]},"170":{"position":[[283,6]]},"172":{"position":[[48,7],[222,7],[291,6]]},"181":{"position":[[1555,7]]},"182":{"position":[[525,7],[668,7],[771,7]]},"188":{"position":[[90,7]]},"189":{"position":[[1080,7],[1337,7]]},"194":{"position":[[113,7]]},"200":{"position":[[2543,7]]},"229":{"position":[[1179,7]]},"230":{"position":[[739,7]]},"251":{"position":[[30,7]]},"322":{"position":[[218,6]]},"363":{"position":[[0,6]]},"406":{"position":[[503,7]]},"407":{"position":[[606,6]]},"511":{"position":[[860,7]]},"569":{"position":[[781,8],[1200,7]]},"570":{"position":[[395,7],[9892,7]]},"721":{"position":[[48,7],[283,7],[414,6]]},"722":{"position":[[49,6]]},"724":{"position":[[1250,7]]},"740":{"position":[[283,6]]},"742":{"position":[[48,7],[222,7],[291,6]]},"764":{"position":[[1562,7]]},"765":{"position":[[525,7],[668,7],[771,7]]},"771":{"position":[[90,7]]},"772":{"position":[[1080,7],[1337,7]]},"777":{"position":[[113,7]]},"783":{"position":[[2543,7]]},"792":{"position":[[1180,7]]},"793":{"position":[[739,7]]},"821":{"position":[[30,7]]},"879":{"position":[[218,6]]},"885":{"position":[[0,6]]},"933":{"position":[[503,7]]},"934":{"position":[[626,6]]},"1089":{"position":[[781,8],[1200,7]]},"1090":{"position":[[395,7],[9892,7]]}},"keywords":{}}],["defined/stor",{"_index":756,"title":{"78":{"position":[[29,14]]},"439":{"position":[[29,14]]},"677":{"position":[[29,14]]},"966":{"position":[[29,14]]}},"content":{},"keywords":{}}],["definit",{"_index":1480,"title":{"152":{"position":[[16,10]]},"722":{"position":[[16,10]]}},"content":{"152":{"position":[[24,10]]},"153":{"position":[[502,10]]},"182":{"position":[[19,10]]},"230":{"position":[[943,11],[1014,10]]},"722":{"position":[[24,10]]},"723":{"position":[[502,10]]},"765":{"position":[[19,10]]},"793":{"position":[[943,11],[1014,10]]}},"keywords":{}}],["del_not",{"_index":2260,"title":{},"content":{"276":{"position":[[25,9]]},"847":{"position":[[25,9]]}},"keywords":{}}],["delay",{"_index":2245,"title":{},"content":{"272":{"position":[[70,7]]},"843":{"position":[[70,7]]}},"keywords":{}}],["deleg",{"_index":1811,"title":{},"content":{"176":{"position":[[426,9]]},"746":{"position":[[427,9]]}},"keywords":{}}],["delet",{"_index":133,"title":{"75":{"position":[[0,6]]},"82":{"position":[[0,6]]},"90":{"position":[[0,6]]},"96":{"position":[[0,6]]},"98":{"position":[[0,6]]},"103":{"position":[[0,6]]},"106":{"position":[[0,6]]},"113":{"position":[[0,6]]},"115":{"position":[[0,6]]},"432":{"position":[[0,6]]},"450":{"position":[[0,6]]},"467":{"position":[[0,6]]},"486":{"position":[[0,6]]},"530":{"position":[[0,6]]},"534":{"position":[[0,6]]},"538":{"position":[[0,6]]},"667":{"position":[[0,6]]},"673":{"position":[[0,6]]},"681":{"position":[[0,6]]},"705":{"position":[[0,6]]},"959":{"position":[[0,6]]},"977":{"position":[[0,6]]},"994":{"position":[[0,6]]},"1018":{"position":[[0,6]]}},"content":{"7":{"position":[[961,6],[1003,6],[1063,6]]},"10":{"position":[[7,6]]},"75":{"position":[[56,6]]},"82":{"position":[[53,6]]},"90":{"position":[[53,6]]},"96":{"position":[[0,6],[70,6],[202,7]]},"98":{"position":[[0,6],[97,6]]},"103":{"position":[[0,6],[54,6],[187,7]]},"106":{"position":[[0,6],[45,6]]},"113":{"position":[[0,6],[63,6],[200,7]]},"115":{"position":[[0,6],[82,6],[236,7]]},"139":{"position":[[315,6],[344,6]]},"170":{"position":[[41,6]]},"275":{"position":[[49,7]]},"300":{"position":[[508,6],[604,6]]},"334":{"position":[[488,6]]},"348":{"position":[[103,6]]},"386":{"position":[[921,6]]},"432":{"position":[[0,6]]},"434":{"position":[[14,6]]},"450":{"position":[[0,6]]},"452":{"position":[[14,6]]},"467":{"position":[[0,6]]},"469":{"position":[[14,6]]},"486":{"position":[[0,6]]},"488":{"position":[[14,6]]},"499":{"position":[[92,8]]},"500":{"position":[[0,6],[109,7]]},"502":{"position":[[79,8]]},"530":{"position":[[10,6]]},"534":{"position":[[10,6]]},"538":{"position":[[10,6]]},"596":{"position":[[961,6],[1003,6],[1063,6]]},"599":{"position":[[7,6]]},"667":{"position":[[56,6]]},"673":{"position":[[53,6]]},"681":{"position":[[53,6]]},"705":{"position":[[0,6],[54,6],[187,7]]},"711":{"position":[[315,6],[344,6]]},"740":{"position":[[41,6]]},"846":{"position":[[49,7]]},"869":{"position":[[1538,6],[1563,6],[1718,6]]},"913":{"position":[[921,6]]},"959":{"position":[[0,6]]},"961":{"position":[[14,6]]},"977":{"position":[[0,6]]},"979":{"position":[[14,6]]},"994":{"position":[[0,6]]},"996":{"position":[[14,6]]},"1018":{"position":[[0,6]]},"1020":{"position":[[14,6]]},"1026":{"position":[[92,8]]},"1027":{"position":[[0,6],[109,7]]},"1029":{"position":[[79,8]]},"1042":{"position":[[0,6]]}},"keywords":{}}],["delete_experiment(id",{"_index":3574,"title":{"500":{"position":[[0,21]]},"1027":{"position":[[0,21]]}},"content":{},"keywords":{}}],["deletecommand",{"_index":2224,"title":{},"content":{"269":{"position":[[533,13]]},"840":{"position":[[533,13]]}},"keywords":{}}],["deletedtim",{"_index":929,"title":{},"content":{"103":{"position":[[502,14]]},"705":{"position":[[502,14]]}},"keywords":{}}],["deletedtime\":nul",{"_index":904,"title":{},"content":{"100":{"position":[[740,19]]},"101":{"position":[[482,19]]},"102":{"position":[[473,19]]},"479":{"position":[[703,19]]},"482":{"position":[[450,19]]},"485":{"position":[[438,19]]},"488":{"position":[[468,19]]},"702":{"position":[[740,19]]},"703":{"position":[[482,19]]},"704":{"position":[[473,19]]},"1011":{"position":[[703,19]]},"1014":{"position":[[450,19]]},"1017":{"position":[[438,19]]},"1020":{"position":[[468,19]]}},"keywords":{}}],["deliveri",{"_index":2197,"title":{},"content":{"263":{"position":[[488,8]]},"834":{"position":[[488,8]]}},"keywords":{}}],["deni",{"_index":444,"title":{"26":{"position":[[39,6]]},"544":{"position":[[39,6]]},"614":{"position":[[39,6]]},"1070":{"position":[[39,6]]}},"content":{"26":{"position":[[278,6]]},"389":{"position":[[15032,6],[15581,6],[16276,6],[17071,6],[30581,6],[31130,6],[31925,6]]},"544":{"position":[[278,6]]},"614":{"position":[[278,6]]},"916":{"position":[[15032,6],[15581,6],[16276,6],[17071,6],[30581,6],[31130,6],[31925,6]]},"1070":{"position":[[278,6]]}},"keywords":{}}],["dep",{"_index":1845,"title":{},"content":{"181":{"position":[[653,4]]},"764":{"position":[[653,4]]}},"keywords":{}}],["depart",{"_index":672,"title":{"48":{"position":[[0,10]]},"68":{"position":[[0,10]]},"640":{"position":[[0,10]]},"660":{"position":[[0,10]]}},"content":{"368":{"position":[[229,11],[384,11]]},"891":{"position":[[229,11],[384,11]]}},"keywords":{}}],["depend",{"_index":180,"title":{"162":{"position":[[8,12]]},"284":{"position":[[0,12]]},"732":{"position":[[8,12]]},"855":{"position":[[0,12]]}},"content":{"13":{"position":[[50,7]]},"100":{"position":[[1041,15]]},"101":{"position":[[783,15]]},"102":{"position":[[774,15]]},"103":{"position":[[834,15]]},"107":{"position":[[1688,7]]},"151":{"position":[[605,12],[934,13]]},"154":{"position":[[358,10],[552,13],[973,13]]},"155":{"position":[[238,12]]},"159":{"position":[[1246,13],[1459,12]]},"181":{"position":[[1448,12]]},"182":{"position":[[689,12]]},"184":{"position":[[60,12]]},"188":{"position":[[98,13],[234,13]]},"194":{"position":[[494,12]]},"215":{"position":[[558,12],[2037,6],[2060,13]]},"216":{"position":[[709,14]]},"217":{"position":[[494,13]]},"218":{"position":[[134,10]]},"283":{"position":[[59,12]]},"301":{"position":[[156,12]]},"306":{"position":[[47,12]]},"325":{"position":[[366,10]]},"375":{"position":[[74,7],[166,8],[1058,6]]},"383":{"position":[[938,12]]},"389":{"position":[[215,9],[1943,10],[17520,10],[17785,10],[32374,10]]},"410":{"position":[[19,10]]},"411":{"position":[[108,12]]},"422":{"position":[[397,13],[459,13]]},"549":{"position":[[76,7],[139,9]]},"553":{"position":[[80,7],[145,9]]},"559":{"position":[[84,7],[152,8],[428,12]]},"580":{"position":[[1454,10]]},"591":{"position":[[180,12]]},"605":{"position":[[50,7]]},"702":{"position":[[1041,15]]},"703":{"position":[[783,15]]},"704":{"position":[[774,15]]},"705":{"position":[[834,15]]},"721":{"position":[[605,12],[934,13]]},"724":{"position":[[358,10],[552,13],[973,13]]},"725":{"position":[[238,12]]},"729":{"position":[[1246,13],[1459,12]]},"764":{"position":[[1455,12]]},"765":{"position":[[689,12]]},"767":{"position":[[60,12]]},"771":{"position":[[98,13],[234,13]]},"777":{"position":[[500,12]]},"785":{"position":[[558,12],[2037,6],[2060,13]]},"786":{"position":[[709,14]]},"787":{"position":[[494,13]]},"788":{"position":[[134,10]]},"854":{"position":[[59,12]]},"868":{"position":[[140,12]]},"869":{"position":[[653,12],[1700,12]]},"872":{"position":[[47,12]]},"895":{"position":[[366,10]]},"902":{"position":[[74,7],[166,8],[1058,6]]},"910":{"position":[[938,12]]},"916":{"position":[[215,9],[1943,10],[17520,10],[17785,10],[32374,10]]},"937":{"position":[[19,10]]},"949":{"position":[[397,13],[459,13]]},"1075":{"position":[[76,7],[139,9]]},"1079":{"position":[[80,7],[145,9]]},"1094":{"position":[[84,7],[152,8],[428,12]]},"1106":{"position":[[1454,10]]},"1117":{"position":[[180,12]]}},"keywords":{}}],["dependencies.answ",{"_index":1589,"title":{},"content":{"159":{"position":[[1369,19]]},"729":{"position":[[1369,19]]}},"keywords":{}}],["deploy",{"_index":33,"title":{"3":{"position":[[16,10]]},"5":{"position":[[0,6]]},"21":{"position":[[0,6]]},"175":{"position":[[0,10]]},"378":{"position":[[0,6]]},"380":{"position":[[0,6]]},"393":{"position":[[0,6]]},"592":{"position":[[16,10]]},"594":{"position":[[0,6]]},"621":{"position":[[0,6]]},"745":{"position":[[0,10]]},"905":{"position":[[0,6]]},"907":{"position":[[0,6]]},"920":{"position":[[0,6]]}},"content":{"6":{"position":[[142,9],[204,8]]},"7":{"position":[[164,10]]},"21":{"position":[[73,6]]},"159":{"position":[[1310,6]]},"160":{"position":[[454,11],[493,8]]},"175":{"position":[[63,8],[210,6]]},"201":{"position":[[895,10],[921,6]]},"229":{"position":[[640,11],[875,8]]},"246":{"position":[[226,11]]},"248":{"position":[[923,8]]},"274":{"position":[[23,10]]},"300":{"position":[[526,10],[611,10]]},"301":{"position":[[0,6],[60,11]]},"302":{"position":[[253,6]]},"317":{"position":[[306,10]]},"320":{"position":[[86,11]]},"345":{"position":[[233,6]]},"369":{"position":[[272,9],[482,6]]},"380":{"position":[[166,8]]},"393":{"position":[[3,6]]},"412":{"position":[[143,10]]},"512":{"position":[[268,10]]},"595":{"position":[[142,9],[204,8]]},"596":{"position":[[164,10]]},"621":{"position":[[73,6]]},"729":{"position":[[1310,6]]},"730":{"position":[[454,11],[493,8]]},"745":{"position":[[63,8],[210,6]]},"750":{"position":[[896,10],[922,6]]},"792":{"position":[[640,11],[875,8]]},"816":{"position":[[226,11]]},"818":{"position":[[923,8]]},"845":{"position":[[23,10]]},"868":{"position":[[0,6]]},"869":{"position":[[253,6],[924,6]]},"877":{"position":[[86,11]]},"892":{"position":[[272,9],[482,6]]},"907":{"position":[[166,8]]},"920":{"position":[[3,6]]},"939":{"position":[[145,10]]},"1051":{"position":[[256,10]]}},"keywords":{}}],["deprec",{"_index":3,"title":{"0":{"position":[[26,12]]},"591":{"position":[[35,10]]},"1117":{"position":[[35,10]]}},"content":{"361":{"position":[[83,13]]}},"keywords":{}}],["depth",{"_index":2743,"title":{},"content":{"375":{"position":[[835,5]]},"902":{"position":[[835,5]]}},"keywords":{}}],["describ",{"_index":1067,"title":{},"content":{"107":{"position":[[5612,9],[8620,9]]},"144":{"position":[[413,10]]},"220":{"position":[[0,8]]},"224":{"position":[[17,9]]},"225":{"position":[[3,9]]},"226":{"position":[[3,9]]},"230":{"position":[[774,9]]},"242":{"position":[[6,8]]},"359":{"position":[[21,9]]},"395":{"position":[[159,8],[187,8]]},"406":{"position":[[847,9]]},"569":{"position":[[690,9]]},"714":{"position":[[413,10]]},"790":{"position":[[0,8]]},"793":{"position":[[774,9]]},"805":{"position":[[6,8]]},"809":{"position":[[17,9]]},"810":{"position":[[3,9]]},"811":{"position":[[3,9]]},"881":{"position":[[21,9]]},"922":{"position":[[159,8],[187,8]]},"1089":{"position":[[690,9]]}},"keywords":{}}],["describedhere(tldr",{"_index":1323,"title":{},"content":{"135":{"position":[[381,19]]},"707":{"position":[[381,19]]}},"keywords":{}}],["descript",{"_index":623,"title":{},"content":{"35":{"position":[[1327,11]]},"86":{"position":[[146,14],[273,14],[384,14],[505,14]]},"89":{"position":[[143,14],[270,14],[381,14],[502,14],[1113,14]]},"93":{"position":[[319,13],[682,13],[1045,13],[1409,13]]},"94":{"position":[[327,13]]},"95":{"position":[[136,14]]},"103":{"position":[[860,14]]},"109":{"position":[[126,14]]},"110":{"position":[[269,13],[447,13],[626,13]]},"111":{"position":[[285,13]]},"112":{"position":[[132,14]]},"152":{"position":[[195,12]]},"199":{"position":[[238,11],[844,12],[1085,12],[1227,12]]},"230":{"position":[[895,11]]},"298":{"position":[[248,12]]},"359":{"position":[[111,11]]},"422":{"position":[[189,11],[208,11]]},"430":{"position":[[162,11],[186,11]]},"460":{"position":[[123,11],[147,11],[494,11],[513,11]]},"461":{"position":[[114,14],[241,14],[352,14],[473,14],[1738,17],[1827,17],[1919,17],[2009,17],[2102,17],[2198,18]]},"463":{"position":[[740,17],[829,17],[921,17],[1011,17],[1104,17],[1200,18]]},"465":{"position":[[132,11],[156,11]]},"466":{"position":[[119,14],[246,14],[357,14],[478,14],[1768,17],[1857,17],[1949,17],[2039,17],[2132,17],[2228,17]]},"469":{"position":[[764,17],[853,17],[945,17],[1035,17],[1128,17],[1224,17]]},"627":{"position":[[1327,11]]},"669":{"position":[[146,14],[273,14],[384,14],[505,14]]},"672":{"position":[[143,14],[270,14],[381,14],[502,14],[1113,14]]},"705":{"position":[[860,14]]},"722":{"position":[[195,12]]},"782":{"position":[[238,11],[844,12],[1085,12],[1227,12]]},"793":{"position":[[895,11]]},"865":{"position":[[251,12]]},"881":{"position":[[111,11]]},"949":{"position":[[189,11],[208,11]]},"957":{"position":[[162,11],[186,11]]},"987":{"position":[[123,11],[147,11],[494,11],[513,11]]},"988":{"position":[[114,14],[241,14],[352,14],[473,14],[1738,17],[1827,17],[1919,17],[2009,17],[2102,17],[2198,18]]},"990":{"position":[[740,17],[829,17],[921,17],[1011,17],[1104,17],[1200,18]]},"992":{"position":[[132,11],[156,11]]},"993":{"position":[[119,14],[246,14],[357,14],[478,14],[1768,17],[1857,17],[1949,17],[2039,17],[2132,17],[2228,17]]},"996":{"position":[[764,17],[853,17],[945,17],[1035,17],[1128,17],[1224,17]]}},"keywords":{}}],["description\":\"th",{"_index":3503,"title":{},"content":{"461":{"position":[[1625,18]]},"463":{"position":[[627,18]]},"466":{"position":[[1655,18]]},"469":{"position":[[651,18]]},"988":{"position":[[1625,18]]},"990":{"position":[[627,18]]},"993":{"position":[[1655,18]]},"996":{"position":[[651,18]]}},"keywords":{}}],["description\":\"thi",{"_index":3496,"title":{},"content":{"461":{"position":[[1289,19],[1401,19],[1512,19]]},"463":{"position":[[291,19],[403,19],[514,19]]},"466":{"position":[[1319,19],[1431,19],[1542,19]]},"469":{"position":[[315,19],[427,19],[538,19]]},"988":{"position":[[1289,19],[1401,19],[1512,19]]},"990":{"position":[[291,19],[403,19],[514,19]]},"993":{"position":[[1319,19],[1431,19],[1542,19]]},"996":{"position":[[315,19],[427,19],[538,19]]}},"keywords":{}}],["description\":nul",{"_index":910,"title":{},"content":{"100":{"position":[[1067,19]]},"101":{"position":[[809,19]]},"102":{"position":[[800,19]]},"423":{"position":[[1130,19]]},"425":{"position":[[435,19],[1008,19],[1327,19]]},"428":{"position":[[696,19]]},"431":{"position":[[835,19]]},"434":{"position":[[699,19]]},"438":{"position":[[1203,19]]},"441":{"position":[[1337,19]]},"443":{"position":[[795,19],[1818,19]]},"446":{"position":[[754,19]]},"449":{"position":[[1234,19]]},"452":{"position":[[715,19]]},"461":{"position":[[2592,19]]},"463":{"position":[[1594,19]]},"466":{"position":[[2622,19]]},"469":{"position":[[1618,19]]},"472":{"position":[[893,19]]},"479":{"position":[[1055,19]]},"482":{"position":[[802,19]]},"485":{"position":[[790,19]]},"488":{"position":[[820,19]]},"702":{"position":[[1067,19]]},"703":{"position":[[809,19]]},"704":{"position":[[800,19]]},"950":{"position":[[1130,19]]},"952":{"position":[[435,19],[1008,19],[1327,19]]},"955":{"position":[[696,19]]},"958":{"position":[[835,19]]},"961":{"position":[[699,19]]},"965":{"position":[[1203,19]]},"968":{"position":[[1337,19]]},"970":{"position":[[795,19],[1818,19]]},"973":{"position":[[754,19]]},"976":{"position":[[1234,19]]},"979":{"position":[[715,19]]},"988":{"position":[[2592,19]]},"990":{"position":[[1594,19]]},"993":{"position":[[2622,19]]},"996":{"position":[[1618,19]]},"999":{"position":[[893,19]]},"1011":{"position":[[1055,19]]},"1014":{"position":[[802,19]]},"1017":{"position":[[790,19]]},"1020":{"position":[[820,19]]}},"keywords":{}}],["descriptionenvvar",{"_index":3538,"title":{},"content":{"478":{"position":[[448,18]]},"1010":{"position":[[448,18]]}},"keywords":{}}],["descriptionid",{"_index":3481,"title":{},"content":{"445":{"position":[[19,13]]},"448":{"position":[[19,13]]},"451":{"position":[[19,13]]},"456":{"position":[[19,13]]},"481":{"position":[[19,13]]},"484":{"position":[[19,13]]},"487":{"position":[[19,13]]},"972":{"position":[[19,13]]},"975":{"position":[[19,13]]},"978":{"position":[[19,13]]},"983":{"position":[[19,13]]},"1013":{"position":[[19,13]]},"1016":{"position":[[19,13]]},"1019":{"position":[[19,13]]}},"keywords":{}}],["descriptionintp_tserver_host",{"_index":2237,"title":{},"content":{"271":{"position":[[419,28]]},"842":{"position":[[419,28]]}},"keywords":{}}],["descriptionmeta",{"_index":3414,"title":{},"content":{"437":{"position":[[68,15]]},"460":{"position":[[612,15]]},"478":{"position":[[60,15]]},"964":{"position":[[68,15]]},"987":{"position":[[612,15]]},"1010":{"position":[[60,15]]}},"keywords":{}}],["descriptionnam",{"_index":1975,"title":{},"content":{"199":{"position":[[129,15]]},"224":{"position":[[115,15]]},"226":{"position":[[411,15]]},"422":{"position":[[70,15],[264,15]]},"427":{"position":[[19,15]]},"430":{"position":[[19,15]]},"433":{"position":[[19,15]]},"437":{"position":[[323,15]]},"460":{"position":[[19,15],[389,15],[867,15]]},"465":{"position":[[19,15]]},"468":{"position":[[19,15]]},"478":{"position":[[262,15]]},"782":{"position":[[129,15]]},"809":{"position":[[115,15]]},"811":{"position":[[411,15]]},"949":{"position":[[70,15],[264,15]]},"954":{"position":[[19,15]]},"957":{"position":[[19,15]]},"960":{"position":[[19,15]]},"964":{"position":[[323,15]]},"987":{"position":[[19,15],[389,15],[867,15]]},"992":{"position":[[19,15]]},"995":{"position":[[19,15]]},"1010":{"position":[[262,15]]}},"keywords":{}}],["descriptionreplica",{"_index":3421,"title":{},"content":{"437":{"position":[[935,19]]},"460":{"position":[[1148,19]]},"964":{"position":[[935,19]]},"987":{"position":[[1148,19]]}},"keywords":{}}],["descriptionsubmarine_server_host",{"_index":2232,"title":{},"content":{"271":{"position":[[138,32]]},"842":{"position":[[138,32]]}},"keywords":{}}],["descriptionsyncmod",{"_index":3425,"title":{},"content":{"437":{"position":[[1250,19]]},"460":{"position":[[1383,19]]},"964":{"position":[[1250,19]]},"987":{"position":[[1383,19]]}},"keywords":{}}],["descriptiontemplate_nam",{"_index":3523,"title":{},"content":{"471":{"position":[[19,24]]},"998":{"position":[[19,24]]}},"keywords":{}}],["descriptiontyp",{"_index":2111,"title":{},"content":{"225":{"position":[[119,15]]},"810":{"position":[[140,15]]}},"keywords":{}}],["descriptionus",{"_index":1552,"title":{},"content":{"158":{"position":[[5,15]]},"728":{"position":[[5,15]]}},"keywords":{}}],["design",{"_index":1312,"title":{"250":{"position":[[0,6]]},"257":{"position":[[15,6]]},"266":{"position":[[7,6]]},"267":{"position":[[10,6]]},"820":{"position":[[0,6]]},"828":{"position":[[15,6]]},"837":{"position":[[7,6]]},"838":{"position":[[10,6]]}},"content":{"133":{"position":[[2706,6]]},"141":{"position":[[1414,10]]},"168":{"position":[[475,8]]},"179":{"position":[[1621,6],[1661,7]]},"181":{"position":[[66,6],[2134,6]]},"201":{"position":[[603,9],[674,8],[693,7],[776,6],[818,7]]},"222":{"position":[[235,8]]},"230":{"position":[[20,8]]},"267":{"position":[[8,7]]},"738":{"position":[[475,8]]},"749":{"position":[[1626,6],[1666,7]]},"750":{"position":[[604,9],[675,8],[694,7],[777,6],[819,7]]},"764":{"position":[[66,6],[2147,6]]},"793":{"position":[[20,8]]},"807":{"position":[[235,8]]},"838":{"position":[[8,7]]}},"keywords":{}}],["destin",{"_index":432,"title":{},"content":{"25":{"position":[[1837,12]]},"389":{"position":[[14308,13],[29857,13]]},"543":{"position":[[1837,12]]},"613":{"position":[[1837,12]]},"916":{"position":[[14308,13],[29857,13]]},"1069":{"position":[[1837,12]]}},"keywords":{}}],["destroy",{"_index":2824,"title":{},"content":{"386":{"position":[[890,7]]},"913":{"position":[[890,7]]}},"keywords":{}}],["detach",{"_index":2603,"title":{},"content":{"342":{"position":[[155,6]]}},"keywords":{}}],["detail",{"_index":314,"title":{"217":{"position":[[0,8]]},"787":{"position":[[0,8]]}},"content":{"20":{"position":[[242,8]]},"107":{"position":[[2879,7]]},"144":{"position":[[659,7]]},"145":{"position":[[528,8]]},"149":{"position":[[80,8]]},"154":{"position":[[199,7]]},"155":{"position":[[423,8]]},"156":{"position":[[781,6]]},"159":{"position":[[762,7]]},"164":{"position":[[15,8]]},"179":{"position":[[1593,7]]},"182":{"position":[[54,8]]},"183":{"position":[[55,7]]},"184":{"position":[[98,8],[156,8]]},"191":{"position":[[59,8]]},"196":{"position":[[1146,7]]},"201":{"position":[[20,7]]},"204":{"position":[[414,7]]},"213":{"position":[[470,8]]},"216":{"position":[[592,8]]},"230":{"position":[[788,8],[822,8]]},"244":{"position":[[189,7]]},"303":{"position":[[4,8]]},"328":{"position":[[291,7]]},"330":{"position":[[0,8]]},"362":{"position":[[44,8]]},"384":{"position":[[502,7]]},"400":{"position":[[102,7]]},"406":{"position":[[215,7]]},"437":{"position":[[871,7]]},"460":{"position":[[1084,7]]},"478":{"position":[[387,7]]},"496":{"position":[[82,8],[148,8]]},"497":{"position":[[110,8],[175,8]]},"498":{"position":[[21,8],[94,8]]},"500":{"position":[[85,8]]},"517":{"position":[[433,6]]},"566":{"position":[[809,8]]},"575":{"position":[[157,8]]},"620":{"position":[[242,8]]},"714":{"position":[[659,7]]},"719":{"position":[[80,8]]},"724":{"position":[[199,7]]},"725":{"position":[[423,8]]},"726":{"position":[[781,6]]},"729":{"position":[[762,7]]},"734":{"position":[[15,8]]},"749":{"position":[[1598,7]]},"750":{"position":[[20,7]]},"753":{"position":[[414,7]]},"762":{"position":[[470,8]]},"765":{"position":[[54,8]]},"766":{"position":[[55,7]]},"767":{"position":[[98,8],[156,8]]},"774":{"position":[[59,8]]},"779":{"position":[[1151,7]]},"786":{"position":[[592,8]]},"793":{"position":[[788,8],[822,8]]},"814":{"position":[[189,7]]},"869":{"position":[[1759,8]]},"884":{"position":[[44,8]]},"911":{"position":[[502,7]]},"927":{"position":[[102,7]]},"933":{"position":[[215,7]]},"964":{"position":[[871,7]]},"987":{"position":[[1084,7]]},"1010":{"position":[[387,7]]},"1023":{"position":[[82,8],[148,8]]},"1024":{"position":[[110,8],[175,8]]},"1025":{"position":[[21,8],[94,8]]},"1027":{"position":[[85,8]]},"1034":{"position":[[4,7]]},"1057":{"position":[[433,6]]},"1086":{"position":[[809,8]]},"1101":{"position":[[157,8]]}},"keywords":{}}],["detect",{"_index":2205,"title":{},"content":{"265":{"position":[[312,8]]},"298":{"position":[[30,6]]},"836":{"position":[[312,8]]},"865":{"position":[[30,6]]}},"keywords":{}}],["determin",{"_index":2019,"title":{},"content":{"205":{"position":[[70,10]]},"389":{"position":[[14980,9],[15529,9],[16224,9],[17019,9],[30529,9],[31078,9],[31873,9]]},"754":{"position":[[70,10]]},"916":{"position":[[14980,9],[15529,9],[16224,9],[17019,9],[30529,9],[31078,9],[31873,9]]}},"keywords":{}}],["dev",{"_index":1023,"title":{"369":{"position":[[4,3]]},"892":{"position":[[5,3]]}},"content":{"107":{"position":[[3358,4]]},"132":{"position":[[119,3]]},"148":{"position":[[344,3],[391,3],[629,3]]},"281":{"position":[[394,5],[478,5]]},"300":{"position":[[395,5]]},"302":{"position":[[141,5]]},"334":{"position":[[53,3],[250,3],[368,3],[579,3],[600,3],[818,3],[903,3]]},"347":{"position":[[58,3]]},"348":{"position":[[246,3]]},"349":{"position":[[23,3]]},"375":{"position":[[695,3]]},"383":{"position":[[764,5]]},"415":{"position":[[124,5]]},"416":{"position":[[99,5]]},"507":{"position":[[171,3],[211,3],[284,5],[391,5]]},"509":{"position":[[129,5],[396,5]]},"511":{"position":[[1082,5]]},"512":{"position":[[289,3]]},"549":{"position":[[671,3],[685,3]]},"553":{"position":[[598,3],[611,3]]},"559":{"position":[[546,3],[559,3],[573,3],[608,3]]},"700":{"position":[[119,3]]},"713":{"position":[[131,4]]},"852":{"position":[[394,5],[478,5]]},"867":{"position":[[395,5]]},"869":{"position":[[141,5]]},"902":{"position":[[695,3]]},"910":{"position":[[764,5]]},"942":{"position":[[124,5]]},"943":{"position":[[73,5]]},"1046":{"position":[[171,3],[211,3],[276,5],[391,5]]},"1048":{"position":[[129,5],[396,5]]},"1050":{"position":[[142,5]]},"1051":{"position":[[277,3]]},"1075":{"position":[[671,3],[685,3]]},"1079":{"position":[[598,3],[611,3]]},"1094":{"position":[[546,3],[559,3],[573,3],[608,3]]}},"keywords":{}}],["dev=tru",{"_index":4236,"title":{},"content":{"869":{"position":[[794,8]]}},"keywords":{}}],["dev@submarine.apache.org",{"_index":1069,"title":{},"content":{"107":{"position":[[5920,27]]},"141":{"position":[[2059,24]]},"148":{"position":[[728,24]]}},"keywords":{}}],["devel",{"_index":2718,"title":{},"content":{"375":{"position":[[139,5],[429,5]]},"553":{"position":[[419,5]]},"902":{"position":[[139,5],[429,5]]},"1079":{"position":[[419,5]]}},"keywords":{}}],["develop",{"_index":535,"title":{"124":{"position":[[7,7]]},"165":{"position":[[46,11]]},"294":{"position":[[0,11]]},"296":{"position":[[0,7]]},"301":{"position":[[0,7]]},"302":{"position":[[0,7]]},"303":{"position":[[0,7]]},"304":{"position":[[0,7]]},"308":{"position":[[6,11]]},"419":{"position":[[23,12]]},"506":{"position":[[11,11]]},"512":{"position":[[23,11]]},"692":{"position":[[7,7]]},"735":{"position":[[46,11]]},"861":{"position":[[0,11]]},"863":{"position":[[0,7]]},"868":{"position":[[0,7]]},"869":{"position":[[0,7]]},"870":{"position":[[0,7]]},"874":{"position":[[6,11]]},"946":{"position":[[23,12]]},"1045":{"position":[[11,11]]},"1051":{"position":[[23,11]]}},"content":{"31":{"position":[[67,11]]},"33":{"position":[[503,12]]},"35":{"position":[[245,11],[789,11],[3023,11]]},"107":{"position":[[627,12],[1072,10],[1118,11],[1232,10],[2395,9],[5112,12],[5895,11]]},"133":{"position":[[1568,10],[2029,11]]},"143":{"position":[[84,10]]},"145":{"position":[[398,11]]},"159":{"position":[[175,11]]},"165":{"position":[[364,9],[395,11],[447,9]]},"171":{"position":[[764,9]]},"174":{"position":[[59,10]]},"182":{"position":[[154,9]]},"248":{"position":[[183,12],[684,10],[936,11]]},"259":{"position":[[297,12],[514,12]]},"267":{"position":[[200,11]]},"300":{"position":[[30,9]]},"303":{"position":[[45,9]]},"308":{"position":[[28,11]]},"352":{"position":[[1465,9]]},"359":{"position":[[90,11]]},"368":{"position":[[457,7]]},"369":{"position":[[182,10],[200,11]]},"391":{"position":[[19,10]]},"437":{"position":[[1222,11]]},"505":{"position":[[48,11],[103,10]]},"507":{"position":[[21,10]]},"508":{"position":[[57,12]]},"510":{"position":[[23,7]]},"512":{"position":[[10,12],[107,7],[306,7]]},"549":{"position":[[418,11]]},"591":{"position":[[146,9]]},"623":{"position":[[67,11]]},"625":{"position":[[503,12]]},"627":{"position":[[245,11],[789,11],[3023,11]]},"713":{"position":[[84,10]]},"715":{"position":[[398,11]]},"729":{"position":[[175,11]]},"735":{"position":[[364,9],[395,11],[447,9]]},"741":{"position":[[769,9]]},"744":{"position":[[59,10]]},"765":{"position":[[154,9]]},"818":{"position":[[183,12],[684,10],[936,11]]},"830":{"position":[[297,12],[514,12]]},"838":{"position":[[200,11]]},"867":{"position":[[30,9]]},"869":{"position":[[370,7],[418,9],[1800,9]]},"874":{"position":[[28,11]]},"881":{"position":[[90,11]]},"891":{"position":[[457,7]]},"892":{"position":[[182,10],[200,11]]},"918":{"position":[[19,10]]},"964":{"position":[[1222,11]]},"1044":{"position":[[48,11],[103,10]]},"1046":{"position":[[21,10]]},"1047":{"position":[[57,12]]},"1049":{"position":[[23,7]]},"1051":{"position":[[10,12],[107,7],[294,7]]},"1075":{"position":[[418,11]]},"1117":{"position":[[146,9]]}},"keywords":{}}],["devic",{"_index":438,"title":{"28":{"position":[[56,6]]},"546":{"position":[[56,6]]},"616":{"position":[[56,6]]},"1072":{"position":[[56,6]]}},"content":{"25":{"position":[[1977,7]]},"28":{"position":[[250,6],[322,6],[563,6]]},"406":{"position":[[766,6],[830,6]]},"543":{"position":[[1977,7]]},"546":{"position":[[250,6],[322,6],[563,6]]},"570":{"position":[[1462,6],[1708,6],[7610,6],[7629,8],[7789,6],[7808,8],[7968,6],[7987,8],[8147,6],[8166,8],[8326,6],[8345,8],[8505,6],[8524,8],[8684,6],[8703,8],[8863,6],[8882,8],[10879,6],[11125,6]]},"613":{"position":[[1977,7]]},"616":{"position":[[250,6],[322,6],[563,6]]},"1069":{"position":[[1977,7]]},"1072":{"position":[[250,6],[322,6],[563,6]]},"1090":{"position":[[1462,6],[1708,6],[7610,6],[7629,8],[7789,6],[7808,8],[7968,6],[7987,8],[8147,6],[8166,8],[8326,6],[8345,8],[8505,6],[8524,8],[8684,6],[8703,8],[8863,6],[8882,8],[10879,6],[11125,6]]}},"keywords":{}}],["devicemapp",{"_index":486,"title":{},"content":{"28":{"position":[[549,13]]},"546":{"position":[[549,13]]},"616":{"position":[[549,13]]},"1072":{"position":[[549,13]]}},"keywords":{}}],["df",{"_index":3834,"title":{},"content":{"569":{"position":[[1859,3]]},"1089":{"position":[[1859,3]]}},"keywords":{}}],["dhcp",{"_index":2872,"title":{},"content":{"389":{"position":[[2099,4],[2115,4],[2525,4],[2991,4],[3007,4],[4504,4],[4620,4],[9157,4],[9198,4],[9257,4],[9338,4],[9379,4],[9438,4],[13755,4],[13807,4],[17941,4],[17957,4],[18367,4],[18815,4],[18831,4],[20328,4],[20444,4],[24875,4],[24916,4],[24975,4],[25056,4],[25097,4],[25156,4],[29304,4],[29356,4]]},"916":{"position":[[2099,4],[2115,4],[2525,4],[2991,4],[3007,4],[4504,4],[4620,4],[9157,4],[9198,4],[9257,4],[9338,4],[9379,4],[9438,4],[13755,4],[13807,4],[17941,4],[17957,4],[18367,4],[18815,4],[18831,4],[20328,4],[20444,4],[24875,4],[24916,4],[24975,4],[25056,4],[25097,4],[25156,4],[29304,4],[29356,4]]}},"keywords":{}}],["diagram",{"_index":1833,"title":{"179":{"position":[[13,7]]},"749":{"position":[[13,7]]}},"content":{"179":{"position":[[1053,9]]},"181":{"position":[[1098,8]]},"229":{"position":[[602,7]]},"749":{"position":[[1058,9]]},"764":{"position":[[1103,8]]},"792":{"position":[[602,7]]}},"keywords":{}}],["dialect>+<driver>://<username>:<password>@<host>:<port>/<databas",{"_index":3663,"title":{},"content":{"517":{"position":[[273,68]]},"1057":{"position":[[273,68]]}},"keywords":{}}],["dialog",{"_index":2501,"title":{},"content":{"331":{"position":[[2003,6]]}},"keywords":{}}],["dict",{"_index":671,"title":{"47":{"position":[[5,4]]},"67":{"position":[[5,4]]},"496":{"position":[[44,4]]},"497":{"position":[[52,4]]},"498":{"position":[[27,4]]},"500":{"position":[[30,4]]},"503":{"position":[[64,4]]},"639":{"position":[[5,4]]},"659":{"position":[[5,4]]},"1023":{"position":[[44,4]]},"1024":{"position":[[52,4]]},"1025":{"position":[[27,4]]},"1027":{"position":[[30,4]]},"1030":{"position":[[64,4]]}},"content":{"570":{"position":[[9598,4]]},"1090":{"position":[[9598,4]]}},"keywords":{}}],["dictionari",{"_index":3829,"title":{},"content":{"569":{"position":[[674,10]]},"1036":{"position":[[63,10]]},"1038":{"position":[[63,10]]},"1089":{"position":[[674,10]]}},"keywords":{}}],["diff",{"_index":177,"title":{"161":{"position":[[55,9],[81,9]]},"731":{"position":[[55,9],[81,9]]}},"content":{"12":{"position":[[173,9]]},"31":{"position":[[612,9],[633,9]]},"35":{"position":[[430,9],[3013,9]]},"107":{"position":[[5512,9],[5549,9],[7634,9],[7660,9]]},"151":{"position":[[355,9],[956,9],[1052,9],[1197,9],[2079,9],[2119,9],[2169,9],[2196,9]]},"154":{"position":[[20,9]]},"159":{"position":[[1765,9]]},"160":{"position":[[8,9],[626,9]]},"161":{"position":[[79,9],[912,9]]},"170":{"position":[[248,9],[431,9]]},"172":{"position":[[363,9],[508,9]]},"176":{"position":[[933,9]]},"177":{"position":[[99,9]]},"179":{"position":[[1275,9]]},"182":{"position":[[897,9],[938,9],[1498,9],[1580,9]]},"184":{"position":[[9,9]]},"188":{"position":[[469,9]]},"190":{"position":[[52,11],[153,11],[184,11]]},"194":{"position":[[29,9],[196,9],[400,9],[664,9]]},"195":{"position":[[248,9]]},"196":{"position":[[758,9]]},"210":{"position":[[17,9]]},"215":{"position":[[1244,9]]},"217":{"position":[[1149,9]]},"222":{"position":[[138,9],[162,9],[313,9],[422,11]]},"231":{"position":[[1101,9]]},"314":{"position":[[1093,9]]},"322":{"position":[[65,10]]},"475":{"position":[[508,9]]},"511":{"position":[[120,9]]},"569":{"position":[[1335,9]]},"604":{"position":[[173,9]]},"623":{"position":[[612,9],[633,9]]},"627":{"position":[[430,9],[3013,9]]},"721":{"position":[[355,9],[956,9],[1052,9],[1197,9],[2079,9],[2119,9],[2169,9],[2196,9]]},"724":{"position":[[20,9]]},"729":{"position":[[1765,9]]},"730":{"position":[[8,9],[626,9]]},"731":{"position":[[79,9],[912,9]]},"740":{"position":[[248,9],[431,9]]},"742":{"position":[[363,9],[508,9]]},"746":{"position":[[936,9]]},"747":{"position":[[99,9]]},"749":{"position":[[1280,9]]},"759":{"position":[[17,9]]},"765":{"position":[[897,9],[938,9],[1498,9],[1580,9]]},"767":{"position":[[9,9]]},"771":{"position":[[469,9]]},"773":{"position":[[52,11],[153,11],[184,11]]},"777":{"position":[[29,9],[196,9],[406,9],[670,9]]},"778":{"position":[[248,9]]},"779":{"position":[[758,9]]},"785":{"position":[[1244,9]]},"787":{"position":[[1149,9]]},"794":{"position":[[1354,9]]},"807":{"position":[[138,9],[162,9],[313,9],[422,11]]},"879":{"position":[[65,10]]},"1002":{"position":[[508,9]]},"1089":{"position":[[1335,9]]}},"keywords":{}}],["dig",{"_index":2000,"title":{},"content":{"201":{"position":[[7,7]]},"750":{"position":[[7,7]]}},"keywords":{}}],["dim",{"_index":3683,"title":{},"content":{"520":{"position":[[295,9],[342,9]]}},"keywords":{}}],["dir=\"<job",{"_index":4054,"title":{},"content":{"571":{"position":[[548,9]]},"1091":{"position":[[548,9]]}},"keywords":{}}],["dir=$my_bucket/cifar",{"_index":3818,"title":{},"content":{"568":{"position":[[891,20]]},"1088":{"position":[[891,20]]}},"keywords":{}}],["dir=$my_bucket/model_dirs/cifarmultigpu",{"_index":3814,"title":{},"content":{"568":{"position":[[708,39]]},"1088":{"position":[[708,39]]}},"keywords":{}}],["dir=${pwd}/cifar",{"_index":3794,"title":{},"content":{"565":{"position":[[331,16]]},"566":{"position":[[100,16],[316,16],[626,16]]},"1085":{"position":[[331,16]]},"1086":{"position":[[100,16],[316,16],[626,16]]}},"keywords":{}}],["dir=%checkpoint_path",{"_index":4157,"title":{},"content":{"580":{"position":[[620,21]]},"1106":{"position":[[620,21]]}},"keywords":{}}],["dir=%input_path",{"_index":4156,"title":{},"content":{"580":{"position":[[597,16]]},"1106":{"position":[[597,16]]}},"keywords":{}}],["dir=/tmp/cifar10",{"_index":3797,"title":{},"content":{"566":{"position":[[133,16],[349,16],[659,16]]},"1086":{"position":[[133,16],[349,16],[659,16]]}},"keywords":{}}],["dir=gs://path/cifar",{"_index":3837,"title":{},"content":{"570":{"position":[[451,19],[9948,19]]},"1090":{"position":[[451,19],[9948,19]]}},"keywords":{}}],["dir=gs://path/model_dir",{"_index":3838,"title":{},"content":{"570":{"position":[[487,24],[9984,24],[16105,24]]},"1090":{"position":[[487,24],[9984,24],[16105,24]]}},"keywords":{}}],["dir=hdfs://${dfs_name_service}/tmp/cifar",{"_index":381,"title":{},"content":{"23":{"position":[[585,40],[640,40],[856,40],[911,40]]},"541":{"position":[[585,40],[640,40],[856,40],[911,40]]},"611":{"position":[[585,40],[640,40],[856,40],[911,40]]},"1067":{"position":[[585,40],[640,40],[856,40],[911,40]]}},"keywords":{}}],["direct",{"_index":1440,"title":{},"content":{"148":{"position":[[671,10]]},"491":{"position":[[85,6]]},"777":{"position":[[1059,6]]},"1005":{"position":[[85,6]]},"1034":{"position":[[54,6]]},"1053":{"position":[[89,6]]}},"keywords":{}}],["directli",{"_index":650,"title":{},"content":{"35":{"position":[[3162,8]]},"159":{"position":[[674,8]]},"212":{"position":[[379,8]]},"298":{"position":[[48,8]]},"300":{"position":[[327,8]]},"302":{"position":[[73,8]]},"383":{"position":[[273,8]]},"580":{"position":[[1465,9]]},"627":{"position":[[3162,8]]},"729":{"position":[[674,8]]},"761":{"position":[[379,8]]},"865":{"position":[[48,8]]},"867":{"position":[[327,8]]},"869":{"position":[[73,8]]},"910":{"position":[[273,8]]},"1106":{"position":[[1465,9]]}},"keywords":{}}],["directori",{"_index":278,"title":{"348":{"position":[[36,9]]}},"content":{"17":{"position":[[559,9],[939,10]]},"319":{"position":[[25,9]]},"320":{"position":[[1162,10]]},"324":{"position":[[25,9],[320,9]]},"341":{"position":[[139,10],[292,10],[546,9]]},"345":{"position":[[85,9]]},"349":{"position":[[83,9]]},"389":{"position":[[7603,11],[15805,10],[23321,11]]},"508":{"position":[[220,9]]},"513":{"position":[[315,9]]},"551":{"position":[[19,10]]},"556":{"position":[[21,10]]},"562":{"position":[[14,10]]},"568":{"position":[[556,9],[597,9]]},"609":{"position":[[559,9],[939,10]]},"876":{"position":[[25,9]]},"877":{"position":[[1162,10]]},"894":{"position":[[25,9],[320,9]]},"916":{"position":[[7603,11],[15805,10],[23321,11]]},"1047":{"position":[[220,9]]},"1052":{"position":[[315,9]]},"1077":{"position":[[19,10]]},"1082":{"position":[[21,10]]},"1088":{"position":[[556,9],[597,9]]},"1097":{"position":[[14,10]]}},"keywords":{}}],["directory,th",{"_index":2763,"title":{},"content":{"377":{"position":[[44,13]]},"904":{"position":[[44,13]]}},"keywords":{}}],["dirti",{"_index":2189,"title":{},"content":{"261":{"position":[[358,5]]},"832":{"position":[[358,5]]}},"keywords":{}}],["disadvantag",{"_index":1662,"title":{"265":{"position":[[0,13]]},"836":{"position":[[0,13]]}},"content":{"162":{"position":[[226,14]]},"732":{"position":[[226,14]]}},"keywords":{}}],["disagr",{"_index":1123,"title":{},"content":{"107":{"position":[[8407,8]]},"141":{"position":[[567,13]]}},"keywords":{}}],["disclaim",{"_index":2414,"title":{},"content":{"316":{"position":[[87,10]]},"317":{"position":[[154,10]]}},"keywords":{}}],["disconnect",{"_index":2532,"title":{},"content":{"334":{"position":[[455,13]]}},"keywords":{}}],["discov",{"_index":1372,"title":{},"content":{"141":{"position":[[35,8]]}},"keywords":{}}],["discoveri",{"_index":2176,"title":{"249":{"position":[[8,9]]},"262":{"position":[[8,9]]},"819":{"position":[[8,9]]},"833":{"position":[[8,9]]}},"content":{"262":{"position":[[388,9]]},"833":{"position":[[388,9]]}},"keywords":{}}],["discuss",{"_index":992,"title":{"217":{"position":[[9,11]]},"787":{"position":[[9,11]]}},"content":{"107":{"position":[[1922,10]]},"130":{"position":[[370,12]]},"133":{"position":[[921,10],[1454,10],[2684,10]]},"141":{"position":[[160,10],[213,9],[356,7],[381,10],[591,10]]},"155":{"position":[[432,10]]},"200":{"position":[[2940,9]]},"216":{"position":[[601,11]]},"698":{"position":[[370,12]]},"725":{"position":[[432,10]]},"783":{"position":[[2940,9]]},"786":{"position":[[601,11]]}},"keywords":{}}],["discuss]answ",{"_index":1288,"title":{},"content":{"133":{"position":[[1528,15]]}},"keywords":{}}],["disk",{"_index":50,"title":{},"content":{"5":{"position":[[61,4]]},"181":{"position":[[1811,4]]},"331":{"position":[[1628,6],[1884,6]]},"389":{"position":[[3458,4],[19282,4]]},"594":{"position":[[61,4]]},"764":{"position":[[1824,4]]},"916":{"position":[[3458,4],[19282,4]]}},"keywords":{}}],["display",{"_index":562,"title":{},"content":{"33":{"position":[[207,9],[459,9]]},"35":{"position":[[73,9],[1179,7],[1532,10]]},"625":{"position":[[207,9],[459,9]]},"627":{"position":[[73,9],[1179,7],[1532,10]]}},"keywords":{}}],["disput",{"_index":1045,"title":{},"content":{"107":{"position":[[4273,8]]}},"keywords":{}}],["dist",{"_index":770,"title":{"347":{"position":[[32,4]]},"364":{"position":[[15,4]]},"886":{"position":[[15,4]]}},"content":{"79":{"position":[[1229,4]]},"83":{"position":[[412,4],[479,4]]},"84":{"position":[[325,4],[1502,4]]},"313":{"position":[[24,4]]},"315":{"position":[[91,5]]},"324":{"position":[[315,4]]},"334":{"position":[[363,4],[574,4],[595,4],[813,4],[898,4],[1223,4],[1253,4],[1278,4],[1500,4],[1589,4]]},"348":{"position":[[241,4]]},"349":{"position":[[18,4]]},"371":{"position":[[200,4]]},"372":{"position":[[99,4],[174,4],[661,4],[734,4],[932,4],[1005,4]]},"407":{"position":[[697,4],[764,6]]},"492":{"position":[[44,4]]},"513":{"position":[[275,5],[449,6],[563,6]]},"678":{"position":[[1229,4]]},"682":{"position":[[412,4],[479,4]]},"683":{"position":[[325,4],[1502,4]]},"894":{"position":[[315,4]]},"898":{"position":[[200,4]]},"899":{"position":[[114,4],[187,4],[385,4],[458,4]]},"934":{"position":[[717,4],[784,6]]},"1006":{"position":[[44,4]]},"1052":{"position":[[275,5],[449,6],[563,6]]}},"keywords":{}}],["dist_sync",{"_index":4186,"title":{},"content":{"589":{"position":[[520,10],[703,10],[908,10]]},"590":{"position":[[590,10],[775,10],[947,10]]},"1115":{"position":[[520,10],[703,10],[908,10]]},"1116":{"position":[[590,10],[775,10],[947,10]]}},"keywords":{}}],["distinct",{"_index":1660,"title":{},"content":{"162":{"position":[[202,8]]},"732":{"position":[[202,8]]}},"keywords":{}}],["distribut",{"_index":355,"title":{"283":{"position":[[30,12]]},"389":{"position":[[4,11]]},"414":{"position":[[24,11]]},"415":{"position":[[29,11]]},"567":{"position":[[4,11]]},"853":{"position":[[30,12]]},"854":{"position":[[30,12]]},"916":{"position":[[4,11]]},"941":{"position":[[24,11]]},"942":{"position":[[29,11]]},"1087":{"position":[[4,11]]}},"content":{"23":{"position":[[0,11],[138,11],[434,11]]},"84":{"position":[[369,11],[1546,11]]},"107":{"position":[[4007,11]]},"171":{"position":[[1192,11]]},"179":{"position":[[1312,13]]},"181":{"position":[[1299,11]]},"182":{"position":[[967,11],[1033,11],[1056,12]]},"194":{"position":[[88,11]]},"199":{"position":[[1011,11]]},"200":{"position":[[1187,11],[2343,12]]},"222":{"position":[[172,11]]},"272":{"position":[[5,11]]},"274":{"position":[[48,11],[117,11],[186,11]]},"389":{"position":[[396,11],[1580,11],[1859,11]]},"403":{"position":[[231,11]]},"415":{"position":[[98,11]]},"541":{"position":[[0,11],[138,11],[434,11]]},"569":{"position":[[1815,11],[1933,11]]},"570":{"position":[[82,11]]},"611":{"position":[[0,11],[138,11],[434,11]]},"683":{"position":[[369,11],[1546,11]]},"741":{"position":[[1204,11]]},"749":{"position":[[1317,13]]},"764":{"position":[[1305,11]]},"765":{"position":[[967,11],[1033,11],[1056,12]]},"777":{"position":[[88,11]]},"782":{"position":[[1011,11]]},"783":{"position":[[1187,11],[2343,12]]},"807":{"position":[[172,11]]},"843":{"position":[[5,11]]},"845":{"position":[[48,11],[117,11],[186,11]]},"853":{"position":[[99,12],[189,12],[290,12],[393,12],[494,12],[600,12]]},"916":{"position":[[396,11],[1580,11],[1859,11]]},"930":{"position":[[231,11]]},"942":{"position":[[98,11]]},"1034":{"position":[[164,11]]},"1067":{"position":[[0,11],[138,11],[434,11]]},"1089":{"position":[[1815,11],[1933,11]]},"1090":{"position":[[82,11]]}},"keywords":{}}],["distribution/target/apach",{"_index":2597,"title":{},"content":{"341":{"position":[[375,26]]}},"keywords":{}}],["distutil",{"_index":3698,"title":{},"content":{"549":{"position":[[640,9]]},"1075":{"position":[[640,9]]}},"keywords":{}}],["dmaven.javadoc.skip=tru",{"_index":2576,"title":{},"content":{"338":{"position":[[253,24]]},"345":{"position":[[258,24]]},"1053":{"position":[[145,24]]}},"keywords":{}}],["dmaven=3.6.1",{"_index":2283,"title":{},"content":{"283":{"position":[[175,12]]},"854":{"position":[[175,12]]}},"keywords":{}}],["do",{"_index":2448,"title":{},"content":{"322":{"position":[[170,5]]},"879":{"position":[[170,5]]}},"keywords":{}}],["doc",{"_index":759,"title":{},"content":{"78":{"position":[[682,3]]},"146":{"position":[[29,3]]},"181":{"position":[[2141,4]]},"200":{"position":[[2968,4]]},"389":{"position":[[2492,3],[2742,3],[18334,3],[18584,3]]},"441":{"position":[[648,3]]},"517":{"position":[[453,4]]},"677":{"position":[[682,3]]},"716":{"position":[[29,3]]},"764":{"position":[[2154,4]]},"783":{"position":[[2968,4]]},"916":{"position":[[2492,3],[2742,3],[18334,3],[18584,3]]},"968":{"position":[[648,3]]},"1057":{"position":[[453,4]]}},"keywords":{}}],["dock",{"_index":24,"title":{"27":{"position":[[19,6]]},"153":{"position":[[13,6]]},"252":{"position":[[12,6]]},"281":{"position":[[28,6]]},"289":{"position":[[0,6]]},"374":{"position":[[9,6]]},"375":{"position":[[14,6]]},"376":{"position":[[37,6]]},"377":{"position":[[6,6]]},"387":{"position":[[8,6]]},"508":{"position":[[12,6]]},"545":{"position":[[19,6]]},"548":{"position":[[0,6]]},"549":{"position":[[14,6]]},"550":{"position":[[37,6]]},"551":{"position":[[15,6]]},"552":{"position":[[0,6]]},"553":{"position":[[14,6]]},"554":{"position":[[39,6]]},"555":{"position":[[6,6]]},"556":{"position":[[15,6]]},"558":{"position":[[0,6]]},"559":{"position":[[14,6]]},"560":{"position":[[42,6]]},"561":{"position":[[6,6]]},"562":{"position":[[15,6]]},"575":{"position":[[15,6]]},"577":{"position":[[8,6]]},"580":{"position":[[5,6]]},"582":{"position":[[8,6]]},"585":{"position":[[5,6]]},"587":{"position":[[8,6]]},"590":{"position":[[5,6]]},"615":{"position":[[19,6]]},"723":{"position":[[13,6]]},"822":{"position":[[12,6]]},"852":{"position":[[28,6]]},"860":{"position":[[0,6]]},"901":{"position":[[9,6]]},"902":{"position":[[14,6]]},"903":{"position":[[37,6]]},"904":{"position":[[6,6]]},"914":{"position":[[8,6]]},"1047":{"position":[[12,6]]},"1071":{"position":[[19,6]]},"1074":{"position":[[0,6]]},"1075":{"position":[[14,6]]},"1076":{"position":[[37,6]]},"1077":{"position":[[15,6]]},"1078":{"position":[[0,6]]},"1079":{"position":[[14,6]]},"1080":{"position":[[39,6]]},"1081":{"position":[[6,6]]},"1082":{"position":[[15,6]]},"1093":{"position":[[0,6]]},"1094":{"position":[[14,6]]},"1095":{"position":[[42,6]]},"1096":{"position":[[6,6]]},"1097":{"position":[[15,6]]},"1101":{"position":[[15,6]]},"1103":{"position":[[8,6]]},"1106":{"position":[[5,6]]},"1108":{"position":[[8,6]]},"1111":{"position":[[5,6]]},"1113":{"position":[[8,6]]},"1116":{"position":[[5,6]]}},"content":{"1":{"position":[[277,6],[356,6],[388,6]]},"2":{"position":[[77,6],[94,7]]},"13":{"position":[[108,6],[158,6],[291,6]]},"14":{"position":[[46,6],[395,7]]},"27":{"position":[[21,6],[73,6]]},"28":{"position":[[2,6]]},"151":{"position":[[84,6],[108,6],[166,6],[883,6]]},"152":{"position":[[147,6],[372,6],[466,6]]},"153":{"position":[[0,6],[152,6],[201,6],[359,6]]},"154":{"position":[[893,6],[1258,6]]},"155":{"position":[[130,6],[170,6]]},"156":{"position":[[898,6],[963,6],[1123,6]]},"171":{"position":[[1275,6]]},"172":{"position":[[84,6],[108,6],[166,6]]},"179":{"position":[[1559,6]]},"182":{"position":[[1508,6]]},"190":{"position":[[630,6]]},"194":{"position":[[1210,6],[1272,6],[1294,6],[1478,6]]},"211":{"position":[[386,6]]},"215":{"position":[[651,6],[2091,6]]},"216":{"position":[[724,6],[792,6]]},"217":{"position":[[364,6],[443,6],[609,6],[681,6],[800,6]]},"226":{"position":[[529,6]]},"229":{"position":[[1423,7]]},"244":{"position":[[45,6]]},"251":{"position":[[144,6]]},"252":{"position":[[125,6],[186,6]]},"279":{"position":[[36,7]]},"281":{"position":[[27,6],[147,6],[312,6]]},"297":{"position":[[36,7]]},"300":{"position":[[252,6],[298,6],[364,6],[382,6],[458,6],[488,6]]},"302":{"position":[[10,6],[44,6],[110,6],[128,6],[203,6],[233,6]]},"324":{"position":[[345,6]]},"352":{"position":[[335,6]]},"369":{"position":[[29,6],[127,6],[527,7]]},"372":{"position":[[256,6],[312,6],[372,6],[442,6]]},"375":{"position":[[1602,6],[1623,6],[1644,6]]},"376":{"position":[[54,6]]},"377":{"position":[[15,6],[36,7],[163,6],[247,6],[432,6]]},"380":{"position":[[266,6]]},"387":{"position":[[37,6]]},"389":{"position":[[1626,6]]},"406":{"position":[[534,6],[894,6]]},"414":{"position":[[109,6]]},"416":{"position":[[8,6],[87,6]]},"422":{"position":[[130,6]]},"430":{"position":[[98,6]]},"437":{"position":[[697,6]]},"508":{"position":[[12,6]]},"545":{"position":[[21,6],[73,6]]},"546":{"position":[[2,6]]},"549":{"position":[[1627,6],[1648,6],[1669,6]]},"550":{"position":[[69,6],[318,6]]},"551":{"position":[[60,6],[113,6],[165,6],[243,6]]},"553":{"position":[[2025,6],[2046,6],[2067,6]]},"554":{"position":[[71,6]]},"556":{"position":[[62,6],[115,6],[169,6]]},"559":{"position":[[1662,6],[1683,6],[1704,6]]},"560":{"position":[[59,6]]},"562":{"position":[[6,7],[51,6],[132,6],[233,6]]},"575":{"position":[[64,6],[135,6]]},"578":{"position":[[662,6]]},"580":{"position":[[1286,6],[1361,6]]},"590":{"position":[[64,6]]},"601":{"position":[[277,6],[356,6],[388,6]]},"602":{"position":[[77,6],[94,7]]},"605":{"position":[[108,6],[158,6],[291,6]]},"606":{"position":[[46,6],[395,7]]},"615":{"position":[[21,6],[73,6]]},"616":{"position":[[2,6]]},"721":{"position":[[84,6],[108,6],[166,6],[883,6]]},"722":{"position":[[147,6],[372,6],[466,6]]},"723":{"position":[[0,6],[152,6],[201,6],[359,6]]},"724":{"position":[[893,6],[1258,6]]},"725":{"position":[[130,6],[170,6]]},"726":{"position":[[898,6],[963,6],[1123,6]]},"741":{"position":[[1287,6]]},"742":{"position":[[84,6],[108,6],[166,6]]},"749":{"position":[[1564,6]]},"760":{"position":[[386,6]]},"765":{"position":[[1508,6]]},"773":{"position":[[630,6]]},"777":{"position":[[1490,6],[1552,6],[1574,6],[1758,6]]},"785":{"position":[[651,6],[2091,6]]},"786":{"position":[[724,6],[792,6]]},"787":{"position":[[364,6],[443,6],[609,6],[681,6],[800,6]]},"792":{"position":[[1425,7]]},"811":{"position":[[529,6]]},"814":{"position":[[45,6]]},"821":{"position":[[151,6]]},"822":{"position":[[130,6],[191,6]]},"850":{"position":[[36,7]]},"852":{"position":[[27,6],[147,6],[312,6]]},"864":{"position":[[36,7]]},"867":{"position":[[252,6],[298,6],[364,6],[382,6],[458,6],[488,6],[696,6]]},"869":{"position":[[10,6],[44,6],[110,6],[128,6],[203,6],[233,6]]},"892":{"position":[[29,6],[127,6],[527,7]]},"894":{"position":[[345,6]]},"902":{"position":[[1602,6],[1623,6],[1644,6]]},"903":{"position":[[54,6]]},"904":{"position":[[15,6],[36,7],[163,6],[247,6],[432,6]]},"907":{"position":[[266,6]]},"914":{"position":[[37,6]]},"916":{"position":[[1626,6]]},"933":{"position":[[534,6]]},"941":{"position":[[109,6]]},"943":{"position":[[8,6]]},"949":{"position":[[130,6]]},"957":{"position":[[98,6]]},"964":{"position":[[697,6]]},"1047":{"position":[[12,6]]},"1071":{"position":[[21,6],[73,6]]},"1072":{"position":[[2,6]]},"1075":{"position":[[1627,6],[1648,6],[1669,6]]},"1076":{"position":[[69,6],[318,6]]},"1077":{"position":[[60,6],[113,6],[165,6],[243,6]]},"1079":{"position":[[2025,6],[2046,6],[2067,6]]},"1080":{"position":[[71,6]]},"1082":{"position":[[62,6],[115,6],[169,6]]},"1094":{"position":[[1662,6],[1683,6],[1704,6]]},"1095":{"position":[[59,6]]},"1097":{"position":[[6,7],[51,6],[132,6],[233,6]]},"1101":{"position":[[64,6],[135,6]]},"1104":{"position":[[662,6]]},"1106":{"position":[[1286,6],[1361,6]]},"1116":{"position":[[64,6]]}},"keywords":{}}],["docker/mxnet",{"_index":3717,"title":{},"content":{"551":{"position":[[6,12]]},"1077":{"position":[[6,12]]}},"keywords":{}}],["docker/mxnet/base/ubuntu",{"_index":3713,"title":{},"content":{"550":{"position":[[101,24]]},"1076":{"position":[[101,24]]}},"keywords":{}}],["docker/pytorch",{"_index":3759,"title":{},"content":{"556":{"position":[[6,14]]},"1082":{"position":[[6,14]]}},"keywords":{}}],["docker/pytorch/base/ubuntu",{"_index":3754,"title":{},"content":{"554":{"position":[[105,26]]},"1080":{"position":[[105,26]]}},"keywords":{}}],["docker/tensorflow/base/ubuntu",{"_index":3778,"title":{},"content":{"560":{"position":[[123,29]]},"1095":{"position":[[123,29]]}},"keywords":{}}],["docker_hadoop_hdfs_hom",{"_index":4168,"title":{},"content":{"580":{"position":[[1303,23]]},"1106":{"position":[[1303,23]]}},"keywords":{}}],["docker_hadoop_hdfs_home=$docker_hadoop_hdfs_hom",{"_index":2836,"title":{},"content":{"389":{"position":[[480,48]]},"916":{"position":[[480,48]]}},"keywords":{}}],["docker_hadoop_hdfs_home=/app/${submarine_v",{"_index":2829,"title":{},"content":{"389":{"position":[[163,49]]},"916":{"position":[[163,49]]}},"keywords":{}}],["docker_hadoop_hdfs_home=/hadoop",{"_index":360,"title":{},"content":{"23":{"position":[[91,31]]},"541":{"position":[[91,31]]},"580":{"position":[[810,31]]},"585":{"position":[[520,31]]},"611":{"position":[[91,31]]},"1067":{"position":[[91,31]]},"1106":{"position":[[810,31]]},"1111":{"position":[[520,31]]}},"keywords":{}}],["docker_imag",{"_index":2847,"title":{},"content":{"389":{"position":[[1020,12]]},"580":{"position":[[282,12]]},"585":{"position":[[282,12]]},"590":{"position":[[356,12]]},"916":{"position":[[1020,12]]},"1106":{"position":[[282,12]]},"1111":{"position":[[282,12]]},"1116":{"position":[[356,12]]}},"keywords":{}}],["docker_java_hom",{"_index":4166,"title":{},"content":{"580":{"position":[[1242,16]]},"1106":{"position":[[1242,16]]}},"keywords":{}}],["docker_java_home=/opt/java",{"_index":359,"title":{},"content":{"23":{"position":[[56,26]]},"541":{"position":[[56,26]]},"611":{"position":[[56,26]]},"1067":{"position":[[56,26]]}},"keywords":{}}],["docker_java_home=/usr/lib/jvm/java",{"_index":2834,"title":{},"content":{"389":{"position":[[416,34]]},"580":{"position":[[856,34]]},"585":{"position":[[566,34]]},"916":{"position":[[416,34]]},"1106":{"position":[[856,34]]},"1111":{"position":[[566,34]]}},"keywords":{}}],["dockerfil",{"_index":1494,"title":{"539":{"position":[[6,11]]},"1065":{"position":[[6,11]]}},"content":{"153":{"position":[[124,11],[322,10],[445,12],[458,10]]},"156":{"position":[[408,10],[636,11]]},"212":{"position":[[452,10]]},"375":{"position":[[0,10]]},"387":{"position":[[15,10]]},"539":{"position":[[13,10],[67,10],[118,10]]},"549":{"position":[[0,10]]},"550":{"position":[[25,11]]},"553":{"position":[[0,10]]},"554":{"position":[[25,11]]},"559":{"position":[[0,10]]},"590":{"position":[[31,10]]},"723":{"position":[[124,11],[322,10],[445,12],[458,10]]},"726":{"position":[[408,10],[636,11]]},"761":{"position":[[452,10]]},"902":{"position":[[0,10]]},"914":{"position":[[15,10]]},"1065":{"position":[[13,10],[67,10],[118,10]]},"1075":{"position":[[0,10]]},"1076":{"position":[[25,11]]},"1079":{"position":[[0,10]]},"1080":{"position":[[25,11]]},"1094":{"position":[[0,10]]},"1116":{"position":[[31,10]]}},"keywords":{}}],["dockerhub",{"_index":2774,"title":{},"content":{"380":{"position":[[316,10]]},"907":{"position":[[316,10]]}},"keywords":{}}],["dockerimag",{"_index":688,"title":{},"content":{"71":{"position":[[125,13],[712,13]]},"72":{"position":[[263,13],[747,13]]},"73":{"position":[[285,13]]},"74":{"position":[[135,13],[625,13],[880,12]]},"75":{"position":[[288,13]]},"103":{"position":[[697,14]]},"188":{"position":[[546,11]]},"422":{"position":[[111,11]]},"423":{"position":[[90,13]]},"430":{"position":[[74,11]]},"431":{"position":[[91,13]]},"437":{"position":[[629,11],[833,11]]},"663":{"position":[[125,13],[712,13]]},"664":{"position":[[263,13],[747,13]]},"665":{"position":[[285,13]]},"666":{"position":[[135,13],[625,13],[880,12]]},"667":{"position":[[288,13]]},"705":{"position":[[697,14]]},"771":{"position":[[546,11]]},"949":{"position":[[111,11]]},"950":{"position":[[90,13]]},"957":{"position":[[74,11]]},"958":{"position":[[91,13]]},"964":{"position":[[629,11],[833,11]]}},"keywords":{}}],["dockerimage\":\"apache/submarine:jupyt",{"_index":908,"title":{},"content":{"100":{"position":[[906,39]]},"101":{"position":[[648,39]]},"102":{"position":[[639,39]]},"425":{"position":[[245,39],[1141,39]]},"479":{"position":[[869,39]]},"482":{"position":[[616,39]]},"485":{"position":[[604,39]]},"488":{"position":[[634,39]]},"702":{"position":[[906,39]]},"703":{"position":[[648,39]]},"704":{"position":[[639,39]]},"952":{"position":[[245,39],[1141,39]]},"1011":{"position":[[869,39]]},"1014":{"position":[[616,39]]},"1017":{"position":[[604,39]]},"1020":{"position":[[634,39]]}},"keywords":{}}],["dockerimage\":\"continuumio/anaconda3",{"_index":3398,"title":{},"content":{"423":{"position":[[694,38]]},"425":{"position":[[572,38]]},"428":{"position":[[260,38]]},"431":{"position":[[581,38]]},"434":{"position":[[263,38]]},"950":{"position":[[694,38]]},"952":{"position":[[572,38]]},"955":{"position":[[260,38]]},"958":{"position":[[581,38]]},"961":{"position":[[263,38]]}},"keywords":{}}],["dockerimage\":nul",{"_index":3448,"title":{},"content":{"438":{"position":[[1164,19]]},"441":{"position":[[1298,19]]},"443":{"position":[[756,19],[1779,19]]},"446":{"position":[[715,19]]},"449":{"position":[[1195,19]]},"452":{"position":[[676,19]]},"461":{"position":[[2553,19]]},"463":{"position":[[1555,19]]},"466":{"position":[[2583,19]]},"469":{"position":[[1579,19]]},"472":{"position":[[854,19]]},"965":{"position":[[1164,19]]},"968":{"position":[[1298,19]]},"970":{"position":[[756,19],[1779,19]]},"973":{"position":[[715,19]]},"976":{"position":[[1195,19]]},"979":{"position":[[676,19]]},"988":{"position":[[2553,19]]},"990":{"position":[[1555,19]]},"993":{"position":[[2583,19]]},"996":{"position":[[1579,19]]},"999":{"position":[[854,19]]}},"keywords":{}}],["docsand",{"_index":2805,"title":{},"content":{"384":{"position":[[643,7]]},"911":{"position":[[643,7]]}},"keywords":{}}],["docsfor",{"_index":2803,"title":{},"content":{"384":{"position":[[489,7]]},"911":{"position":[[489,7]]}},"keywords":{}}],["document",{"_index":938,"title":{},"content":{"107":{"position":[[5,8],[1479,14],[3152,14],[8905,14],[10591,9]]},"117":{"position":[[163,8]]},"133":{"position":[[889,10],[1173,9],[1203,9],[1295,9],[2107,9]]},"135":{"position":[[71,14]]},"145":{"position":[[433,13]]},"153":{"position":[[396,8]]},"181":{"position":[[5,8]]},"322":{"position":[[26,8]]},"330":{"position":[[22,9]]},"359":{"position":[[5,8]]},"575":{"position":[[20,9]]},"685":{"position":[[163,8]]},"707":{"position":[[71,14]]},"715":{"position":[[444,13]]},"723":{"position":[[396,8]]},"764":{"position":[[5,8]]},"879":{"position":[[26,8]]},"881":{"position":[[5,8]]},"1061":{"position":[[27,13]]},"1101":{"position":[[20,9]]}},"keywords":{}}],["docusauru",{"_index":2335,"title":{},"content":{"304":{"position":[[33,10],[216,10]]},"870":{"position":[[33,10],[216,10]]}},"keywords":{}}],["doesn't",{"_index":1666,"title":{},"content":{"162":{"position":[[459,7],[939,7]]},"217":{"position":[[558,7]]},"224":{"position":[[223,7]]},"386":{"position":[[788,7]]},"389":{"position":[[1721,7]]},"732":{"position":[[459,7],[939,7]]},"787":{"position":[[558,7]]},"809":{"position":[[223,7]]},"913":{"position":[[788,7]]},"916":{"position":[[1721,7]]}},"keywords":{}}],["domain_suffix=\"ml.com",{"_index":2853,"title":{},"content":{"389":{"position":[[1321,22]]},"916":{"position":[[1321,22]]}},"keywords":{}}],["domin",{"_index":1595,"title":{},"content":{"159":{"position":[[1691,8]]},"729":{"position":[[1691,8]]}},"keywords":{}}],["don",{"_index":517,"title":{},"content":{"28":{"position":[[1031,4]]},"135":{"position":[[343,5]]},"230":{"position":[[968,5]]},"314":{"position":[[1941,4]]},"315":{"position":[[154,4],[540,4]]},"342":{"position":[[70,4],[171,4]]},"343":{"position":[[118,4]]},"389":{"position":[[32565,4]]},"546":{"position":[[1031,4]]},"553":{"position":[[1125,4]]},"616":{"position":[[1031,4]]},"707":{"position":[[343,5]]},"793":{"position":[[968,5]]},"916":{"position":[[32565,4]]},"1072":{"position":[[1031,4]]},"1079":{"position":[[1125,4]]}},"keywords":{}}],["don't",{"_index":1193,"title":{},"content":{"121":{"position":[[316,5]]},"135":{"position":[[401,5]]},"151":{"position":[[1319,5]]},"152":{"position":[[287,5]]},"153":{"position":[[302,5]]},"156":{"position":[[29,5]]},"172":{"position":[[630,5]]},"314":{"position":[[1124,5]]},"384":{"position":[[135,5]]},"389":{"position":[[1744,5]]},"689":{"position":[[316,5]]},"707":{"position":[[401,5]]},"721":{"position":[[1319,5]]},"722":{"position":[[287,5]]},"723":{"position":[[302,5]]},"726":{"position":[[29,5]]},"742":{"position":[[630,5]]},"911":{"position":[[135,5]]},"916":{"position":[[1744,5]]}},"keywords":{}}],["don’t",{"_index":3234,"title":{},"content":{"403":{"position":[[127,5]]},"930":{"position":[[127,5]]}},"keywords":{}}],["doubl",{"_index":610,"title":{},"content":{"35":{"position":[[804,6]]},"627":{"position":[[804,6]]}},"keywords":{}}],["dovecot",{"_index":2917,"title":{},"content":{"389":{"position":[[2707,7],[18549,7]]},"916":{"position":[[2707,7],[18549,7]]}},"keywords":{}}],["down",{"_index":2616,"title":{"350":{"position":[[9,4]]}},"content":{},"keywords":{}}],["downgrad",{"_index":2206,"title":{},"content":{"265":{"position":[[341,11]]},"836":{"position":[[341,11]]}},"keywords":{}}],["download",{"_index":217,"title":{"311":{"position":[[3,8]]},"370":{"position":[[0,8]]},"897":{"position":[[0,8]]}},"content":{"15":{"position":[[104,8]]},"16":{"position":[[648,8],[720,11]]},"35":{"position":[[884,9],[938,8]]},"55":{"position":[[441,31],[473,8]]},"182":{"position":[[720,10],[813,11]]},"189":{"position":[[207,11]]},"217":{"position":[[965,8],[2450,8]]},"314":{"position":[[90,8]]},"371":{"position":[[53,10]]},"386":{"position":[[129,8]]},"391":{"position":[[227,8]]},"401":{"position":[[90,8]]},"565":{"position":[[43,8],[173,8]]},"607":{"position":[[104,8]]},"608":{"position":[[648,8],[720,11]]},"627":{"position":[[884,9],[938,8]]},"647":{"position":[[441,31],[473,8]]},"765":{"position":[[720,10],[813,11]]},"772":{"position":[[207,11]]},"787":{"position":[[965,8],[2450,8]]},"898":{"position":[[53,10]]},"913":{"position":[[129,8]]},"918":{"position":[[227,8]]},"928":{"position":[[90,8]]},"1085":{"position":[[43,8],[173,8]]}},"keywords":{}}],["downsid",{"_index":2094,"title":{},"content":{"219":{"position":[[237,8]]},"789":{"position":[[237,8]]}},"keywords":{}}],["draw",{"_index":1839,"title":{},"content":{"179":{"position":[[1043,4]]},"749":{"position":[[1048,4]]}},"keywords":{}}],["driv",{"_index":1464,"title":{},"content":{"151":{"position":[[822,7]]},"369":{"position":[[542,7]]},"406":{"position":[[870,7]]},"721":{"position":[[822,7]]},"892":{"position":[[542,7]]}},"keywords":{}}],["driver=dock",{"_index":45,"title":{},"content":{"5":{"position":[[22,13]]},"410":{"position":[[159,13]]},"594":{"position":[[22,13]]},"869":{"position":[[592,13]]},"937":{"position":[[161,13]]}},"keywords":{}}],["ds",{"_index":1842,"title":{},"content":{"179":{"position":[[1406,2]]},"749":{"position":[[1411,2]]}},"keywords":{}}],["ds_train",{"_index":3364,"title":{},"content":{"415":{"position":[[1615,8],[1803,8]]},"942":{"position":[[1633,8],[1821,8]]}},"keywords":{}}],["ds_train.with_options(opt",{"_index":3369,"title":{},"content":{"415":{"position":[[1814,30]]},"942":{"position":[[1832,30]]}},"keywords":{}}],["dsa",{"_index":2477,"title":{},"content":{"331":{"position":[[593,3],[613,3]]},"389":{"position":[[16607,3],[16718,5],[31461,3],[31572,5]]},"916":{"position":[[16607,3],[16718,5],[31461,3],[31572,5]]}},"keywords":{}}],["dskiprat",{"_index":2454,"title":{},"content":{"325":{"position":[[466,8]]},"895":{"position":[[466,8]]}},"keywords":{}}],["dskipt",{"_index":2272,"title":{},"content":{"281":{"position":[[348,10]]},"283":{"position":[[286,10]]},"300":{"position":[[215,10]]},"325":{"position":[[413,10]]},"341":{"position":[[338,10]]},"345":{"position":[[222,10]]},"852":{"position":[[348,10]]},"853":{"position":[[159,10],[247,10],[349,10],[451,10],[552,10],[632,10]]},"854":{"position":[[286,10]]},"867":{"position":[[215,10]]},"895":{"position":[[413,10]]},"1053":{"position":[[171,10]]}},"keywords":{}}],["due",{"_index":1959,"title":{},"content":{"195":{"position":[[231,3]]},"778":{"position":[[231,3]]}},"keywords":{}}],["duplic",{"_index":1698,"title":{},"content":{"165":{"position":[[248,9]]},"197":{"position":[[419,13]]},"735":{"position":[[248,9]]},"780":{"position":[[426,13]]}},"keywords":{}}],["dur",{"_index":1656,"title":{},"content":{"161":{"position":[[991,6]]},"331":{"position":[[1635,6],[1891,6]]},"336":{"position":[[837,6]]},"350":{"position":[[289,6]]},"355":{"position":[[340,6]]},"570":{"position":[[262,6],[9836,6]]},"571":{"position":[[429,6]]},"731":{"position":[[991,6]]},"1090":{"position":[[262,6],[9836,6]]},"1091":{"position":[[429,6]]}},"keywords":{}}],["dynam",{"_index":2175,"title":{},"content":{"248":{"position":[[776,12]]},"818":{"position":[[776,12]]}},"keywords":{}}],["e",{"_index":186,"title":{},"content":{"13":{"position":[[216,1]]},"314":{"position":[[661,1],[906,1],[1537,1],[1776,1]]},"331":{"position":[[2739,3]]},"332":{"position":[[194,3]]},"507":{"position":[[630,1]]},"605":{"position":[[216,1]]}},"keywords":{}}],["e)mail",{"_index":2491,"title":{},"content":{"331":{"position":[[1445,7]]}},"keywords":{}}],["e.g",{"_index":282,"title":{},"content":{"17":{"position":[[630,5],[1045,5]]},"130":{"position":[[240,5]]},"139":{"position":[[447,5]]},"151":{"position":[[1179,5]]},"172":{"position":[[490,5]]},"181":{"position":[[1776,5]]},"194":{"position":[[67,5],[234,5]]},"197":{"position":[[347,5]]},"264":{"position":[[126,5]]},"609":{"position":[[630,5],[1045,5]]},"698":{"position":[[240,5]]},"711":{"position":[[447,5]]},"721":{"position":[[1179,5]]},"742":{"position":[[490,5]]},"764":{"position":[[1789,5]]},"777":{"position":[[67,5],[234,5]]},"780":{"position":[[354,5]]},"835":{"position":[[126,5]]}},"keywords":{}}],["e2",{"_index":2332,"title":{"320":{"position":[[4,3]]},"321":{"position":[[4,3]]},"322":{"position":[[19,3]]},"877":{"position":[[4,3]]},"878":{"position":[[4,3]]},"879":{"position":[[19,3]]}},"content":{"301":{"position":[[458,3]]},"319":{"position":[[40,3]]},"320":{"position":[[1271,3]]},"510":{"position":[[210,4],[271,5]]},"868":{"position":[[442,3]]},"876":{"position":[[40,3]]},"877":{"position":[[1271,3]]},"1049":{"position":[[210,4],[271,5]]}},"keywords":{}}],["e9ca23d68d884d4ebb19d07889727da",{"_index":886,"title":{},"content":{"100":{"position":[[158,34]]},"479":{"position":[[126,34]]},"702":{"position":[[158,34]]},"1011":{"position":[[126,34]]}},"keywords":{}}],["each",{"_index":230,"title":{},"content":{"16":{"position":[[43,4]]},"32":{"position":[[0,4]]},"34":{"position":[[82,4]]},"35":{"position":[[94,4],[412,4],[569,4]]},"176":{"position":[[265,4]]},"181":{"position":[[1753,4]]},"194":{"position":[[723,4]]},"195":{"position":[[341,4]]},"199":{"position":[[62,4]]},"205":{"position":[[57,4],[109,4],[180,4]]},"224":{"position":[[382,4]]},"248":{"position":[[825,4],[1128,4]]},"249":{"position":[[40,4]]},"263":{"position":[[66,4],[129,4]]},"269":{"position":[[252,4],[473,4]]},"270":{"position":[[360,4]]},"273":{"position":[[478,4],[1279,4]]},"299":{"position":[[14,4]]},"321":{"position":[[0,4]]},"326":{"position":[[0,4]]},"332":{"position":[[462,4]]},"359":{"position":[[48,4],[126,4]]},"412":{"position":[[72,4]]},"418":{"position":[[182,4]]},"569":{"position":[[112,4],[1019,5],[1349,4]]},"570":{"position":[[49,4]]},"608":{"position":[[43,4]]},"624":{"position":[[0,4]]},"626":{"position":[[82,4]]},"627":{"position":[[94,4],[412,4],[569,4]]},"746":{"position":[[265,4]]},"754":{"position":[[57,4],[109,4],[180,4]]},"764":{"position":[[1766,4]]},"777":{"position":[[729,4]]},"778":{"position":[[341,4]]},"782":{"position":[[62,4]]},"809":{"position":[[382,4]]},"818":{"position":[[825,4],[1128,4]]},"819":{"position":[[40,4]]},"834":{"position":[[66,4],[129,4]]},"840":{"position":[[252,4],[473,4]]},"841":{"position":[[360,4]]},"844":{"position":[[478,4],[1279,4]]},"866":{"position":[[14,4]]},"878":{"position":[[0,4]]},"881":{"position":[[48,4],[126,4]]},"896":{"position":[[0,4]]},"939":{"position":[[74,4]]},"945":{"position":[[153,4]]},"1038":{"position":[[197,4]]},"1089":{"position":[[112,4],[1019,5],[1349,4]]},"1090":{"position":[[49,4]]}},"keywords":{}}],["earli",{"_index":2286,"title":{},"content":{"285":{"position":[[38,8]]},"286":{"position":[[31,8]]},"293":{"position":[[31,8]]},"856":{"position":[[38,8]]},"857":{"position":[[31,8]]}},"keywords":{}}],["easi",{"_index":597,"title":{},"content":{"35":{"position":[[449,4]]},"159":{"position":[[427,4],[817,4],[888,4],[1231,4],[1483,6]]},"162":{"position":[[332,4],[371,4]]},"171":{"position":[[1140,4]]},"217":{"position":[[276,6]]},"369":{"position":[[462,4]]},"403":{"position":[[46,4]]},"627":{"position":[[449,4]]},"729":{"position":[[427,4],[817,4],[888,4],[1231,4],[1483,6]]},"732":{"position":[[332,4],[371,4]]},"741":{"position":[[1151,4]]},"787":{"position":[[276,6]]},"892":{"position":[[462,4]]},"930":{"position":[[46,4]]}},"keywords":{}}],["easili",{"_index":1515,"title":{"156":{"position":[[34,6]]},"726":{"position":[[34,6]]}},"content":{"154":{"position":[[339,6],[407,6]]},"159":{"position":[[2302,6]]},"175":{"position":[[72,6]]},"211":{"position":[[204,6]]},"246":{"position":[[363,6]]},"262":{"position":[[84,6],[305,6]]},"383":{"position":[[102,6]]},"512":{"position":[[55,6]]},"724":{"position":[[339,6],[407,6]]},"729":{"position":[[2302,6]]},"745":{"position":[[72,6]]},"760":{"position":[[204,6]]},"816":{"position":[[363,6]]},"833":{"position":[[84,6],[305,6]]},"910":{"position":[[102,6]]},"1051":{"position":[[55,6]]}},"keywords":{}}],["ecdsa",{"_index":3178,"title":{},"content":{"389":{"position":[[16738,5],[16850,7],[31592,5],[31704,7]]},"916":{"position":[[16738,5],[16850,7],[31592,5],[31704,7]]}},"keywords":{}}],["echo",{"_index":484,"title":{},"content":{"28":{"position":[[533,4],[669,4],[730,4]]},"314":{"position":[[1907,4]]},"315":{"position":[[119,4],[514,4]]},"342":{"position":[[22,4],[116,4]]},"343":{"position":[[84,4]]},"389":{"position":[[1412,6]]},"546":{"position":[[533,4],[669,4],[730,4]]},"549":{"position":[[771,4]]},"616":{"position":[[533,4],[669,4],[730,4]]},"916":{"position":[[1412,6]]},"1072":{"position":[[533,4],[669,4],[730,4]]},"1075":{"position":[[771,4]]}},"keywords":{}}],["eclips",{"_index":1263,"title":{},"content":{"132":{"position":[[237,7]]},"700":{"position":[[237,7]]}},"keywords":{}}],["economi",{"_index":2164,"title":{},"content":{"246":{"position":[[458,8]]},"816":{"position":[[458,8]]}},"keywords":{}}],["ed25519",{"_index":3181,"title":{},"content":{"389":{"position":[[16872,7],[16986,9],[31726,7],[31840,9]]},"916":{"position":[[16872,7],[16986,9],[31726,7],[31840,9]]}},"keywords":{}}],["edg",{"_index":1622,"title":{},"content":{"160":{"position":[[39,5]]},"730":{"position":[[39,5]]}},"keywords":{}}],["edit",{"_index":611,"title":{},"content":{"35":{"position":[[854,4],[2360,4],[2450,4],[2575,4],[2702,5],[2830,5]]},"55":{"position":[[402,17],[420,4],[1074,4]]},"124":{"position":[[8,4],[116,8]]},"139":{"position":[[307,4]]},"170":{"position":[[35,5]]},"217":{"position":[[708,4],[1788,4]]},"304":{"position":[[381,5]]},"314":{"position":[[214,4]]},"389":{"position":[[14763,4],[30312,4]]},"627":{"position":[[854,4],[2360,4],[2450,4],[2575,4],[2702,5],[2830,5]]},"647":{"position":[[402,17],[420,4],[1074,4]]},"692":{"position":[[8,4],[116,8]]},"711":{"position":[[307,4]]},"740":{"position":[[35,5]]},"787":{"position":[[708,4],[1788,4]]},"870":{"position":[[381,5]]},"916":{"position":[[14763,4],[30312,4]]}},"keywords":{}}],["edit:us",{"_index":609,"title":{},"content":{"35":{"position":[[726,10]]},"627":{"position":[[726,10]]}},"keywords":{}}],["effect",{"_index":2254,"title":{},"content":{"273":{"position":[[1123,13]]},"844":{"position":[[1123,13]]}},"keywords":{}}],["effici",{"_index":1693,"title":{},"content":{"163":{"position":[[702,12]]},"165":{"position":[[290,10]]},"733":{"position":[[702,12]]},"735":{"position":[[290,10]]}},"keywords":{}}],["effort",{"_index":964,"title":{},"content":{"107":{"position":[[1130,7]]},"159":{"position":[[2328,7]]},"729":{"position":[[2328,7]]}},"keywords":{}}],["eg",{"_index":1205,"title":{},"content":{"122":{"position":[[313,4]]},"690":{"position":[[313,4]]}},"keywords":{}}],["elabor",{"_index":3647,"title":{},"content":{"512":{"position":[[89,10]]},"1051":{"position":[[89,10]]}},"keywords":{}}],["elgam",{"_index":2478,"title":{},"content":{"331":{"position":[[601,7]]}},"keywords":{}}],["email",{"_index":542,"title":{"357":{"position":[[13,5]]}},"content":{"31":{"position":[[198,5]]},"122":{"position":[[62,5],[129,5]]},"141":{"position":[[258,6],[392,5],[527,6],[602,6],[1017,5],[1151,6],[1225,5],[1303,5],[1346,5],[1499,5],[1676,5],[2046,5]]},"148":{"position":[[382,5],[618,5]]},"331":{"position":[[1249,5]]},"333":{"position":[[35,5]]},"350":{"position":[[433,6]]},"351":{"position":[[44,5]]},"357":{"position":[[90,5],[140,5]]},"623":{"position":[[198,5]]},"690":{"position":[[62,5],[129,5]]}},"keywords":{}}],["email.click",{"_index":2653,"title":{},"content":{"355":{"position":[[259,11]]}},"keywords":{}}],["emeritu",{"_index":998,"title":{},"content":{"107":{"position":[[2094,8],[2202,8],[4556,10],[4666,8]]}},"keywords":{}}],["emptydir",{"_index":2081,"title":{},"content":{"217":{"position":[[1673,8],[2170,9]]},"787":{"position":[[1673,8],[2170,9]]}},"keywords":{}}],["enabl",{"_index":20,"title":{},"content":{"1":{"position":[[180,6],[210,6],[349,6],[381,6]]},"182":{"position":[[1452,7]]},"383":{"position":[[362,6],[1107,6]]},"384":{"position":[[272,8]]},"601":{"position":[[180,6],[210,6],[349,6],[381,6]]},"765":{"position":[[1452,7]]},"867":{"position":[[644,8]]},"910":{"position":[[362,6],[1107,6]]},"911":{"position":[[272,8]]}},"keywords":{}}],["enable/dis",{"_index":4331,"title":{},"content":{"1064":{"position":[[923,14]]}},"keywords":{}}],["encapsul",{"_index":2217,"title":{},"content":{"269":{"position":[[25,12]]},"270":{"position":[[25,12]]},"840":{"position":[[25,12]]},"841":{"position":[[25,12]]}},"keywords":{}}],["encoding=\"utf",{"_index":2553,"title":{},"content":{"336":{"position":[[136,13]]}},"keywords":{}}],["encount",{"_index":113,"title":{},"content":{"7":{"position":[[492,9]]},"596":{"position":[[492,9]]}},"keywords":{}}],["encourag",{"_index":1098,"title":{},"content":{"107":{"position":[[7037,10]]},"135":{"position":[[19,10]]},"137":{"position":[[167,9]]},"153":{"position":[[244,9]]},"707":{"position":[[19,10]]},"709":{"position":[[167,9]]},"723":{"position":[[244,9]]}},"keywords":{}}],["encout",{"_index":3615,"title":{},"content":{"509":{"position":[[449,8]]},"1048":{"position":[[449,8]]}},"keywords":{}}],["end",{"_index":1388,"title":{},"content":{"141":{"position":[[1102,3]]},"168":{"position":[[78,3],[85,3]]},"248":{"position":[[151,3],[306,3]]},"320":{"position":[[1138,6]]},"352":{"position":[[864,6]]},"367":{"position":[[8,3],[15,3]]},"368":{"position":[[286,3]]},"738":{"position":[[78,3],[85,3]]},"818":{"position":[[151,3],[306,3]]},"877":{"position":[[1138,6]]},"890":{"position":[[8,3],[15,3]]},"891":{"position":[[286,3]]}},"keywords":{}}],["endpoint",{"_index":1794,"title":{},"content":{"173":{"position":[[434,11],[488,9]]},"212":{"position":[[201,8]]},"230":{"position":[[886,8]]},"743":{"position":[[435,11],[489,9]]},"761":{"position":[[201,8]]},"793":{"position":[[886,8]]}},"keywords":{}}],["engin",{"_index":1554,"title":{"568":{"position":[[52,6]]},"1088":{"position":[[52,6]]}},"content":{"158":{"position":[[50,9]]},"159":{"position":[[1566,9]]},"160":{"position":[[654,11],[700,11]]},"163":{"position":[[267,12]]},"168":{"position":[[172,9]]},"171":{"position":[[1046,9]]},"179":{"position":[[1418,9]]},"248":{"position":[[117,9],[999,9],[1058,9]]},"568":{"position":[[57,6],[68,8],[634,6]]},"728":{"position":[[50,9]]},"729":{"position":[[1566,9]]},"730":{"position":[[654,11],[700,11]]},"733":{"position":[[267,12]]},"738":{"position":[[172,9]]},"741":{"position":[[1051,9]]},"749":{"position":[[1423,9]]},"818":{"position":[[117,9],[999,9],[1058,9]]},"1088":{"position":[[57,6],[68,8],[634,6]]}},"keywords":{}}],["english",{"_index":2473,"title":{},"content":{"331":{"position":[[211,7]]}},"keywords":{}}],["enough",{"_index":1089,"title":{},"content":{"107":{"position":[[6662,6]]},"133":{"position":[[308,6],[357,6],[2782,6]]},"331":{"position":[[1727,6],[1983,6]]}},"keywords":{}}],["ensur",{"_index":2028,"title":{"412":{"position":[[0,6]]},"939":{"position":[[0,6]]}},"content":{"212":{"position":[[242,6]]},"261":{"position":[[223,7]]},"265":{"position":[[79,6]]},"319":{"position":[[69,6]]},"320":{"position":[[0,6]]},"324":{"position":[[69,6]]},"325":{"position":[[0,6]]},"761":{"position":[[242,6]]},"832":{"position":[[223,7]]},"836":{"position":[[79,6]]},"876":{"position":[[69,6]]},"877":{"position":[[0,6]]},"894":{"position":[[69,6]]},"895":{"position":[[0,6]]}},"keywords":{}}],["ent",{"_index":200,"title":{"351":{"position":[[3,5]]}},"content":{"14":{"position":[[7,5],[98,5]]},"21":{"position":[[402,5]]},"32":{"position":[[71,8]]},"198":{"position":[[88,8]]},"331":{"position":[[53,8],[697,5],[799,5],[1064,5],[1131,5],[1228,5],[1285,5],[1320,5],[1473,6],[2041,5],[2135,5],[2298,8]]},"334":{"position":[[976,5],[1671,5]]},"341":{"position":[[114,5],[275,5]]},"345":{"position":[[60,5]]},"406":{"position":[[206,8]]},"606":{"position":[[7,5],[98,5]]},"621":{"position":[[402,5]]},"624":{"position":[[71,8]]},"781":{"position":[[88,8]]},"933":{"position":[[206,8]]}},"keywords":{}}],["enterpris",{"_index":2165,"title":{},"content":{"246":{"position":[[474,10]]},"816":{"position":[[474,10]]}},"keywords":{}}],["entir",{"_index":259,"title":{},"content":{"17":{"position":[[53,6]]},"141":{"position":[[897,6],[2137,6]]},"263":{"position":[[7,6]]},"609":{"position":[[53,6]]},"834":{"position":[[7,6]]}},"keywords":{}}],["entri",{"_index":1852,"title":{},"content":{"181":{"position":[[1404,5]]},"224":{"position":[[462,5]]},"226":{"position":[[561,5]]},"764":{"position":[[1410,5]]},"809":{"position":[[462,5]]},"811":{"position":[[561,5]]}},"keywords":{}}],["entropi",{"_index":2500,"title":{},"content":{"331":{"position":[[1734,8],[1990,8]]}},"keywords":{}}],["entrypoint",{"_index":1501,"title":{},"content":{"153":{"position":[[491,10]]},"156":{"position":[[691,10]]},"723":{"position":[[491,10]]},"726":{"position":[[691,10]]}},"keywords":{}}],["env",{"_index":358,"title":{},"content":{"23":{"position":[[52,3],[87,3],[161,3]]},"71":{"position":[[119,5],[706,5]]},"72":{"position":[[257,5],[739,3]]},"73":{"position":[[115,3],[279,5]]},"74":{"position":[[129,5],[438,3],[619,5]]},"75":{"position":[[118,3],[282,5]]},"78":{"position":[[369,4],[609,4],[1274,4]]},"100":{"position":[[231,4],[900,5]]},"101":{"position":[[642,5]]},"102":{"position":[[633,5]]},"103":{"position":[[691,5]]},"151":{"position":[[1717,3],[2038,4]]},"152":{"position":[[233,3]]},"154":{"position":[[146,4],[497,3]]},"182":{"position":[[281,4],[663,4]]},"188":{"position":[[209,3],[435,3]]},"217":{"position":[[1455,4]]},"224":{"position":[[536,3]]},"300":{"position":[[371,4],[495,3]]},"302":{"position":[[117,4],[240,3]]},"375":{"position":[[1247,3],[1274,3]]},"389":{"position":[[412,3],[476,3],[533,3],[604,3],[633,3],[660,3]]},"398":{"position":[[205,3]]},"406":{"position":[[676,4],[1080,4]]},"407":{"position":[[26,4]]},"416":{"position":[[94,4]]},"423":{"position":[[84,5],[688,5]]},"425":{"position":[[239,5],[566,5],[1135,5]]},"428":{"position":[[73,3],[254,5]]},"431":{"position":[[85,5],[394,3],[575,5]]},"434":{"position":[[76,3],[257,5]]},"441":{"position":[[335,4],[575,4],[1292,5]]},"443":{"position":[[1773,5]]},"446":{"position":[[709,5]]},"479":{"position":[[199,4],[863,5]]},"482":{"position":[[610,5]]},"485":{"position":[[598,5]]},"488":{"position":[[628,5]]},"541":{"position":[[52,3],[87,3],[161,3]]},"549":{"position":[[1015,3],[1140,3]]},"553":{"position":[[1058,3],[1719,3]]},"559":{"position":[[1356,3]]},"580":{"position":[[754,3],[806,3],[852,3],[911,3],[945,3],[984,3],[1025,3],[1064,3]]},"585":{"position":[[464,3],[516,3],[562,3],[621,3],[655,3],[694,3],[735,3],[774,3]]},"611":{"position":[[52,3],[87,3],[161,3]]},"663":{"position":[[119,5],[706,5]]},"664":{"position":[[257,5],[739,3]]},"665":{"position":[[115,3],[279,5]]},"666":{"position":[[129,5],[438,3],[619,5]]},"667":{"position":[[118,3],[282,5]]},"677":{"position":[[369,4],[609,4],[1274,4]]},"702":{"position":[[231,4],[900,5]]},"703":{"position":[[642,5]]},"704":{"position":[[633,5]]},"705":{"position":[[691,5]]},"721":{"position":[[1717,3],[2038,4]]},"722":{"position":[[233,3]]},"724":{"position":[[146,4],[497,3]]},"765":{"position":[[281,4],[663,4]]},"771":{"position":[[209,3],[435,3]]},"787":{"position":[[1455,4]]},"809":{"position":[[536,3]]},"867":{"position":[[371,4],[495,3]]},"869":{"position":[[117,4],[240,3]]},"902":{"position":[[1247,3],[1274,3]]},"916":{"position":[[412,3],[476,3],[533,3],[604,3],[633,3],[660,3]]},"925":{"position":[[205,3]]},"933":{"position":[[731,4]]},"934":{"position":[[26,4]]},"950":{"position":[[84,5],[688,5]]},"952":{"position":[[239,5],[566,5],[1135,5]]},"955":{"position":[[73,3],[254,5]]},"958":{"position":[[85,5],[394,3],[575,5]]},"961":{"position":[[76,3],[257,5]]},"968":{"position":[[335,4],[575,4],[1292,5]]},"970":{"position":[[1773,5]]},"973":{"position":[[709,5]]},"1011":{"position":[[199,4],[863,5]]},"1014":{"position":[[610,5]]},"1017":{"position":[[598,5]]},"1020":{"position":[[628,5]]},"1067":{"position":[[52,3],[87,3],[161,3]]},"1075":{"position":[[1015,3],[1140,3]]},"1079":{"position":[[1058,3],[1719,3]]},"1094":{"position":[[1356,3]]},"1106":{"position":[[754,3],[806,3],[852,3],[911,3],[945,3],[984,3],[1025,3],[1064,3]]},"1111":{"position":[[464,3],[516,3],[562,3],[621,3],[655,3],[694,3],[735,3],[774,3]]}},"keywords":{}}],["env.sh",{"_index":228,"title":{"16":{"position":[[10,6]]},"608":{"position":[[10,6]]}},"content":{"16":{"position":[[10,6],[217,7]]},"608":{"position":[[10,6],[217,7]]}},"keywords":{}}],["env1",{"_index":732,"title":{},"content":{"77":{"position":[[318,6],[1076,6]]},"78":{"position":[[318,6],[1223,6]]},"79":{"position":[[585,6],[1165,6]]},"80":{"position":[[618,6]]},"81":{"position":[[326,6],[929,6]]},"82":{"position":[[621,6]]},"86":{"position":[[763,7],[771,6]]},"89":{"position":[[760,7],[768,6]]},"223":{"position":[[390,6]]},"407":{"position":[[899,8]]},"438":{"position":[[284,6]]},"441":{"position":[[284,6]]},"449":{"position":[[285,6]]},"461":{"position":[[731,7],[739,6]]},"466":{"position":[[736,7],[744,6]]},"492":{"position":[[265,6]]},"496":{"position":[[503,6]]},"497":{"position":[[510,6]]},"669":{"position":[[763,7],[771,6]]},"672":{"position":[[760,7],[768,6]]},"676":{"position":[[318,6],[1076,6]]},"677":{"position":[[318,6],[1223,6]]},"678":{"position":[[585,6],[1165,6]]},"679":{"position":[[618,6]]},"680":{"position":[[326,6],[929,6]]},"681":{"position":[[621,6]]},"808":{"position":[[390,6]]},"934":{"position":[[919,8]]},"965":{"position":[[284,6]]},"968":{"position":[[284,6]]},"976":{"position":[[285,6]]},"988":{"position":[[731,7],[739,6]]},"993":{"position":[[736,7],[744,6]]},"1006":{"position":[[265,6]]},"1023":{"position":[[503,6]]},"1024":{"position":[[510,6]]}},"keywords":{}}],["env_1",{"_index":731,"title":{},"content":{"77":{"position":[[309,8],[1067,8]]},"78":{"position":[[309,8],[1214,8]]},"79":{"position":[[576,8],[1156,8]]},"80":{"position":[[609,8]]},"81":{"position":[[317,8],[920,8]]},"82":{"position":[[612,8]]},"223":{"position":[[383,6]]},"438":{"position":[[275,8]]},"441":{"position":[[275,8]]},"449":{"position":[[276,8]]},"492":{"position":[[256,8]]},"496":{"position":[[494,8]]},"497":{"position":[[501,8]]},"676":{"position":[[309,8],[1067,8]]},"677":{"position":[[309,8],[1214,8]]},"678":{"position":[[576,8],[1156,8]]},"679":{"position":[[609,8]]},"680":{"position":[[317,8],[920,8]]},"681":{"position":[[612,8]]},"808":{"position":[[383,6]]},"965":{"position":[[275,8]]},"968":{"position":[[275,8]]},"976":{"position":[[276,8]]},"1006":{"position":[[256,8]]},"1023":{"position":[[494,8]]},"1024":{"position":[[501,8]]}},"keywords":{}}],["env_nam",{"_index":1536,"title":{},"content":{"156":{"position":[[307,9]]},"726":{"position":[[307,9]]}},"keywords":{}}],["env_vars={'env1",{"_index":3274,"title":{},"content":{"407":{"position":[[881,17]]},"934":{"position":[[901,17]]}},"keywords":{}}],["envar",{"_index":2030,"title":{},"content":{"212":{"position":[[638,5]]},"761":{"position":[[638,5]]}},"keywords":{}}],["environ",{"_index":233,"title":{"19":{"position":[[11,11]]},"70":{"position":[[0,11]]},"71":{"position":[[7,11]]},"72":{"position":[[5,11]]},"73":{"position":[[4,11]]},"74":{"position":[[6,11]]},"75":{"position":[[7,11]]},"77":{"position":[[44,12]]},"78":{"position":[[44,12]]},"150":{"position":[[0,12]]},"152":{"position":[[0,11]]},"155":{"position":[[11,11]]},"156":{"position":[[55,13]]},"172":{"position":[[0,11]]},"183":{"position":[[7,12]]},"188":{"position":[[13,11]]},"211":{"position":[[0,11]]},"235":{"position":[[0,11]]},"311":{"position":[[62,11]]},"398":{"position":[[15,11]]},"416":{"position":[[14,11]]},"420":{"position":[[0,11]]},"421":{"position":[[7,11]]},"424":{"position":[[5,11]]},"426":{"position":[[4,11]]},"429":{"position":[[6,11]]},"432":{"position":[[7,11]]},"436":{"position":[[44,12]]},"439":{"position":[[44,12]]},"490":{"position":[[24,11]]},"491":{"position":[[0,11]]},"535":{"position":[[0,12]]},"536":{"position":[[5,12]]},"537":{"position":[[4,12]]},"538":{"position":[[7,12]]},"578":{"position":[[26,11]]},"583":{"position":[[26,11]]},"588":{"position":[[26,11]]},"619":{"position":[[11,11]]},"662":{"position":[[0,11]]},"663":{"position":[[7,11]]},"664":{"position":[[5,11]]},"665":{"position":[[4,11]]},"666":{"position":[[6,11]]},"667":{"position":[[7,11]]},"676":{"position":[[44,12]]},"677":{"position":[[44,12]]},"720":{"position":[[0,12]]},"722":{"position":[[0,11]]},"725":{"position":[[11,11]]},"726":{"position":[[55,13]]},"742":{"position":[[0,11]]},"760":{"position":[[0,11]]},"766":{"position":[[7,12]]},"771":{"position":[[13,11]]},"798":{"position":[[0,11]]},"925":{"position":[[15,11]]},"943":{"position":[[14,11]]},"947":{"position":[[0,11]]},"948":{"position":[[7,11]]},"951":{"position":[[5,11]]},"953":{"position":[[4,11]]},"956":{"position":[[6,11]]},"959":{"position":[[7,11]]},"963":{"position":[[44,12]]},"966":{"position":[[44,12]]},"1004":{"position":[[24,11]]},"1005":{"position":[[0,11]]},"1104":{"position":[[26,11]]},"1109":{"position":[[26,11]]},"1114":{"position":[[26,11]]}},"content":{"16":{"position":[[150,11]]},"77":{"position":[[330,14],[1088,14]]},"78":{"position":[[330,14],[583,11],[656,11],[715,11],[1235,14]]},"79":{"position":[[597,14],[1177,14]]},"80":{"position":[[630,14]]},"81":{"position":[[338,14],[941,14]]},"82":{"position":[[633,14]]},"86":{"position":[[970,14]]},"89":{"position":[[967,14]]},"100":{"position":[[196,14],[867,15]]},"101":{"position":[[609,15]]},"102":{"position":[[600,15]]},"103":{"position":[[656,14]]},"151":{"position":[[0,11],[25,11],[313,12],[501,11],[1024,12],[1062,11],[1128,11],[1291,11],[1346,11],[1996,12],[2179,12],[2232,12]]},"152":{"position":[[59,12],[79,11],[491,11]]},"153":{"position":[[221,14],[640,11]]},"154":{"position":[[97,11],[287,11],[380,12],[421,11],[470,11],[816,11]]},"155":{"position":[[0,11]]},"156":{"position":[[189,13],[327,13]]},"172":{"position":[[0,11],[25,11],[252,12],[373,11],[439,11],[602,11],[657,11],[677,12]]},"176":{"position":[[175,11]]},"181":{"position":[[1503,11],[1526,11],[2179,12]]},"182":{"position":[[251,12],[634,11],[1078,12],[1173,12],[1590,11]]},"183":{"position":[[16,11]]},"184":{"position":[[73,15]]},"188":{"position":[[18,12],[55,11],[78,11],[450,11],[499,11],[511,11],[642,11],[677,11]]},"189":{"position":[[252,11],[266,12],[750,11],[764,12],[1168,11],[1191,11],[1205,12]]},"190":{"position":[[810,11]]},"194":{"position":[[1309,11]]},"196":{"position":[[1170,12]]},"201":{"position":[[287,12],[304,12]]},"204":{"position":[[383,11],[438,11]]},"210":{"position":[[91,12]]},"211":{"position":[[21,11],[100,11],[225,14],[268,11]]},"212":{"position":[[333,11],[472,11]]},"215":{"position":[[468,12],[895,13],[1819,12],[2047,12]]},"216":{"position":[[697,11],[753,11]]},"217":{"position":[[1159,12],[1425,12],[1625,12]]},"226":{"position":[[618,11]]},"232":{"position":[[179,12]]},"246":{"position":[[586,12]]},"248":{"position":[[1035,12]]},"252":{"position":[[201,12]]},"272":{"position":[[17,12]]},"317":{"position":[[345,11]]},"330":{"position":[[59,11]]},"352":{"position":[[1044,12],[1095,11]]},"369":{"position":[[134,12],[224,12],[372,11]]},"379":{"position":[[66,11]]},"398":{"position":[[67,11],[168,12]]},"406":{"position":[[486,11],[603,11],[707,11],[1018,11],[1058,11]]},"407":{"position":[[4,11],[640,11]]},"416":{"position":[[58,12]]},"422":{"position":[[93,11],[171,11],[223,12]]},"427":{"position":[[47,11]]},"430":{"position":[[56,11],[144,11],[201,12]]},"433":{"position":[[47,11]]},"437":{"position":[[137,11],[165,11],[554,12],[603,12],[644,11],[719,12],[748,11],[810,11],[882,11]]},"438":{"position":[[296,14],[1135,15]]},"441":{"position":[[296,14],[549,11],[622,11],[655,11],[1255,15]]},"443":{"position":[[727,15],[1736,15]]},"446":{"position":[[672,15]]},"448":{"position":[[123,11],[156,11]]},"449":{"position":[[297,14],[1166,15]]},"452":{"position":[[647,15]]},"460":{"position":[[681,11],[709,11],[1095,11]]},"461":{"position":[[938,14],[2524,15]]},"463":{"position":[[1526,15]]},"466":{"position":[[943,14],[2554,15]]},"469":{"position":[[1550,15]]},"472":{"position":[[825,15]]},"478":{"position":[[116,11],[144,11],[398,11]]},"479":{"position":[[164,14],[830,15]]},"482":{"position":[[577,15]]},"485":{"position":[[565,15]]},"488":{"position":[[595,15]]},"492":{"position":[[277,14]]},"496":{"position":[[515,14]]},"497":{"position":[[522,14]]},"507":{"position":[[104,11]]},"508":{"position":[[36,12]]},"517":{"position":[[66,11]]},"536":{"position":[[15,11]]},"537":{"position":[[14,11],[26,12]]},"538":{"position":[[28,12]]},"568":{"position":[[102,11]]},"569":{"position":[[88,11],[598,14],[1633,14],[1781,11],[1878,11],[1905,11]]},"577":{"position":[[33,11]]},"578":{"position":[[31,11]]},"582":{"position":[[33,11]]},"583":{"position":[[31,11]]},"587":{"position":[[33,11]]},"588":{"position":[[31,11]]},"608":{"position":[[150,11]]},"669":{"position":[[970,14]]},"672":{"position":[[967,14]]},"676":{"position":[[330,14],[1088,14]]},"677":{"position":[[330,14],[583,11],[656,11],[715,11],[1235,14]]},"678":{"position":[[597,14],[1177,14]]},"679":{"position":[[630,14]]},"680":{"position":[[338,14],[941,14]]},"681":{"position":[[633,14]]},"702":{"position":[[196,14],[867,15]]},"703":{"position":[[609,15]]},"704":{"position":[[600,15]]},"705":{"position":[[656,14]]},"721":{"position":[[0,11],[25,11],[313,12],[501,11],[1024,12],[1062,11],[1128,11],[1291,11],[1346,11],[1996,12],[2179,12],[2232,12]]},"722":{"position":[[59,12],[79,11],[491,11]]},"723":{"position":[[221,14],[640,11]]},"724":{"position":[[97,11],[287,11],[380,12],[421,11],[470,11],[816,11]]},"725":{"position":[[0,11]]},"726":{"position":[[189,13],[327,13]]},"742":{"position":[[0,11],[25,11],[252,12],[373,11],[439,11],[602,11],[657,11],[677,12]]},"746":{"position":[[175,11]]},"750":{"position":[[287,12],[304,12]]},"753":{"position":[[383,11],[438,11]]},"759":{"position":[[91,12]]},"760":{"position":[[21,11],[100,11],[225,14],[268,11]]},"761":{"position":[[333,11],[472,11]]},"764":{"position":[[1510,11],[1533,11],[2192,12]]},"765":{"position":[[251,12],[634,11],[1078,12],[1173,12],[1590,11]]},"766":{"position":[[16,11]]},"767":{"position":[[73,15]]},"771":{"position":[[18,12],[55,11],[78,11],[450,11],[499,11],[511,11],[642,11],[677,11]]},"772":{"position":[[252,11],[266,12],[750,11],[764,12],[1168,11],[1191,11],[1205,12]]},"773":{"position":[[810,11]]},"777":{"position":[[1589,11]]},"779":{"position":[[1175,12]]},"785":{"position":[[468,12],[895,13],[1819,12],[2047,12]]},"786":{"position":[[697,11],[753,11]]},"787":{"position":[[1159,12],[1425,12],[1625,12]]},"795":{"position":[[179,12]]},"811":{"position":[[618,11]]},"816":{"position":[[591,12]]},"818":{"position":[[1035,12]]},"822":{"position":[[206,12]]},"843":{"position":[[17,12]]},"892":{"position":[[134,12],[224,12],[372,11]]},"906":{"position":[[66,11]]},"925":{"position":[[67,11],[168,12]]},"933":{"position":[[486,11],[603,11],[669,11],[709,11]]},"934":{"position":[[4,11],[660,11]]},"943":{"position":[[58,12]]},"949":{"position":[[93,11],[171,11],[223,12]]},"954":{"position":[[47,11]]},"957":{"position":[[56,11],[144,11],[201,12]]},"960":{"position":[[47,11]]},"964":{"position":[[137,11],[165,11],[554,12],[603,12],[644,11],[719,12],[748,11],[810,11],[882,11]]},"965":{"position":[[296,14],[1135,15]]},"968":{"position":[[296,14],[549,11],[622,11],[655,11],[1255,15]]},"970":{"position":[[727,15],[1736,15]]},"973":{"position":[[672,15]]},"975":{"position":[[123,11],[156,11]]},"976":{"position":[[297,14],[1166,15]]},"979":{"position":[[647,15]]},"987":{"position":[[681,11],[709,11],[1095,11]]},"988":{"position":[[938,14],[2524,15]]},"990":{"position":[[1526,15]]},"993":{"position":[[943,14],[2554,15]]},"996":{"position":[[1550,15]]},"999":{"position":[[825,15]]},"1006":{"position":[[277,14]]},"1010":{"position":[[116,11],[144,11],[398,11]]},"1011":{"position":[[164,14],[830,15]]},"1014":{"position":[[577,15]]},"1017":{"position":[[565,15]]},"1020":{"position":[[595,15]]},"1023":{"position":[[515,14]]},"1024":{"position":[[522,14]]},"1034":{"position":[[225,11]]},"1046":{"position":[[104,11]]},"1047":{"position":[[36,12]]},"1057":{"position":[[66,11]]},"1088":{"position":[[102,11]]},"1089":{"position":[[88,11],[598,14],[1633,14],[1781,11],[1878,11],[1905,11]]},"1103":{"position":[[33,11]]},"1104":{"position":[[31,11]]},"1108":{"position":[[33,11]]},"1109":{"position":[[31,11]]},"1113":{"position":[[33,11]]},"1114":{"position":[[31,11]]}},"keywords":{}}],["environment",{"_index":3417,"title":{},"content":{"437":{"position":[[489,13],[1119,13]]},"460":{"position":[[1033,13],[1332,13]]},"478":{"position":[[487,13]]},"516":{"position":[[60,13]]},"964":{"position":[[489,13],[1119,13]]},"987":{"position":[[1033,13],[1332,13]]},"1010":{"position":[[487,13]]},"1056":{"position":[[60,13]]}},"keywords":{}}],["environment.submarin",{"_index":2671,"title":{},"content":{"369":{"position":[[294,21]]},"892":{"position":[[294,21]]}},"keywords":{}}],["environment=environ",{"_index":3284,"title":{},"content":{"407":{"position":[[1198,24]]},"934":{"position":[[1218,24]]}},"keywords":{}}],["environment_1586156073228_0001",{"_index":708,"title":{},"content":{"71":{"position":[[629,33]]},"72":{"position":[[180,33]]},"73":{"position":[[202,33]]},"74":{"position":[[542,33]]},"75":{"position":[[205,33]]},"663":{"position":[[629,33]]},"664":{"position":[[180,33]]},"665":{"position":[[202,33]]},"666":{"position":[[542,33]]},"667":{"position":[[205,33]]}},"keywords":{}}],["environment_1586156073228_0002",{"_index":710,"title":{},"content":{"72":{"position":[[662,33]]},"664":{"position":[[662,33]]}},"keywords":{}}],["environmentid",{"_index":707,"title":{},"content":{"71":{"position":[[612,16]]},"72":{"position":[[163,16],[645,16]]},"73":{"position":[[185,16]]},"74":{"position":[[525,16]]},"75":{"position":[[188,16]]},"663":{"position":[[612,16]]},"664":{"position":[[163,16],[645,16]]},"665":{"position":[[185,16]]},"666":{"position":[[525,16]]},"667":{"position":[[188,16]]}},"keywords":{}}],["environmentid\":\"environment_1600862964725_0001",{"_index":3411,"title":{},"content":{"425":{"position":[[1048,49]]},"952":{"position":[[1048,49]]}},"keywords":{}}],["environmentid\":\"environment_1600862964725_0002",{"_index":3408,"title":{},"content":{"425":{"position":[[148,49]]},"952":{"position":[[148,49]]}},"keywords":{}}],["environmentid\":\"environment_1626160071451_0001",{"_index":3396,"title":{},"content":{"423":{"position":[[597,49]]},"425":{"position":[[475,49]]},"428":{"position":[[163,49]]},"434":{"position":[[166,49]]},"950":{"position":[[597,49]]},"952":{"position":[[475,49]]},"955":{"position":[[163,49]]},"961":{"position":[[166,49]]}},"keywords":{}}],["environmentid\":\"environment_1626160071451_0003",{"_index":3412,"title":{},"content":{"431":{"position":[[484,49]]},"958":{"position":[[484,49]]}},"keywords":{}}],["environmentrestapi",{"_index":3624,"title":{},"content":{"511":{"position":[[257,19],[821,18]]}},"keywords":{}}],["environmentspec",{"_index":709,"title":{},"content":{"71":{"position":[[663,18]]},"72":{"position":[[214,18],[696,18]]},"73":{"position":[[236,18]]},"74":{"position":[[576,18],[1013,15]]},"75":{"position":[[239,18]]},"407":{"position":[[249,15]]},"422":{"position":[[4,15],[37,16]]},"423":{"position":[[647,19]]},"425":{"position":[[198,19],[525,19],[1098,19]]},"428":{"position":[[213,19]]},"431":{"position":[[534,19]]},"434":{"position":[[216,19]]},"437":{"position":[[149,15],[514,16]]},"448":{"position":[[135,15]]},"460":{"position":[[693,15],[1058,16]]},"478":{"position":[[128,15],[361,16]]},"663":{"position":[[663,18]]},"664":{"position":[[214,18],[696,18]]},"665":{"position":[[236,18]]},"666":{"position":[[576,18],[1013,15]]},"667":{"position":[[239,18]]},"934":{"position":[[253,15]]},"949":{"position":[[4,15],[37,16]]},"950":{"position":[[647,19]]},"952":{"position":[[198,19],[525,19],[1098,19]]},"955":{"position":[[213,19]]},"958":{"position":[[534,19]]},"961":{"position":[[216,19]]},"964":{"position":[[149,15],[514,16]]},"975":{"position":[[135,15]]},"987":{"position":[[693,15],[1058,16]]},"1010":{"position":[[128,15],[361,16]]}},"keywords":{}}],["environmentspec(image='apache/submarine:tf",{"_index":3266,"title":{},"content":{"407":{"position":[[654,42]]},"934":{"position":[[674,42]]}},"keywords":{}}],["envvar",{"_index":730,"title":{},"content":{"77":{"position":[[296,10],[1054,10]]},"78":{"position":[[296,10],[1201,10]]},"79":{"position":[[563,10],[1143,10]]},"80":{"position":[[596,10]]},"81":{"position":[[304,10],[907,10]]},"82":{"position":[[599,10]]},"86":{"position":[[750,10]]},"89":{"position":[[747,10]]},"100":{"position":[[249,10],[1112,11]]},"101":{"position":[[854,11]]},"102":{"position":[[845,11]]},"103":{"position":[[908,10]]},"223":{"position":[[374,8]]},"224":{"position":[[503,7]]},"226":{"position":[[592,7]]},"437":{"position":[[461,7],[1091,7]]},"438":{"position":[[262,10]]},"441":{"position":[[262,10]]},"449":{"position":[[263,10]]},"460":{"position":[[1005,7],[1304,7]]},"461":{"position":[[718,10]]},"466":{"position":[[723,10]]},"479":{"position":[[217,10]]},"492":{"position":[[243,10]]},"496":{"position":[[481,10]]},"497":{"position":[[488,10]]},"669":{"position":[[750,10]]},"672":{"position":[[747,10]]},"676":{"position":[[296,10],[1054,10]]},"677":{"position":[[296,10],[1201,10]]},"678":{"position":[[563,10],[1143,10]]},"679":{"position":[[596,10]]},"680":{"position":[[304,10],[907,10]]},"681":{"position":[[599,10]]},"702":{"position":[[249,10],[1112,11]]},"703":{"position":[[854,11]]},"704":{"position":[[845,11]]},"705":{"position":[[908,10]]},"808":{"position":[[374,8]]},"809":{"position":[[503,7]]},"811":{"position":[[592,7]]},"964":{"position":[[461,7],[1091,7]]},"965":{"position":[[262,10]]},"968":{"position":[[262,10]]},"976":{"position":[[263,10]]},"987":{"position":[[1005,7],[1304,7]]},"988":{"position":[[718,10]]},"993":{"position":[[723,10]]},"1006":{"position":[[243,10]]},"1011":{"position":[[217,10]]},"1023":{"position":[[481,10]]},"1024":{"position":[[488,10]]}},"keywords":{}}],["envvars\":nul",{"_index":3454,"title":{},"content":{"438":{"position":[[1394,15],[1564,15]]},"441":{"position":[[1486,15],[1656,15]]},"443":{"position":[[986,15],[1156,15],[1967,15],[2137,15]]},"446":{"position":[[903,15],[1073,15]]},"449":{"position":[[1425,15],[1595,15]]},"452":{"position":[[906,15],[1076,15]]},"461":{"position":[[2783,15],[2956,15]]},"463":{"position":[[1785,15],[1958,15]]},"466":{"position":[[2813,15],[2983,15]]},"469":{"position":[[1809,15],[1979,15]]},"472":{"position":[[1084,15],[1254,15]]},"965":{"position":[[1394,15],[1564,15]]},"968":{"position":[[1486,15],[1656,15]]},"970":{"position":[[986,15],[1156,15],[1967,15],[2137,15]]},"973":{"position":[[903,15],[1073,15]]},"976":{"position":[[1425,15],[1595,15]]},"979":{"position":[[906,15],[1076,15]]},"988":{"position":[[2783,15],[2956,15]]},"990":{"position":[[1785,15],[1958,15]]},"993":{"position":[[2813,15],[2983,15]]},"996":{"position":[[1809,15],[1979,15]]},"999":{"position":[[1084,15],[1254,15]]}},"keywords":{}}],["envvars\":{\"env1\":\"env1",{"_index":3480,"title":{},"content":{"443":{"position":[[698,25]]},"461":{"position":[[2495,25]]},"463":{"position":[[1497,25]]},"466":{"position":[[2525,25]]},"469":{"position":[[1521,25]]},"472":{"position":[[796,25]]},"970":{"position":[[698,25]]},"988":{"position":[[2495,25]]},"990":{"position":[[1497,25]]},"993":{"position":[[2525,25]]},"996":{"position":[[1521,25]]},"999":{"position":[[796,25]]}},"keywords":{}}],["envvars\":{\"env_1\":\"env1",{"_index":3446,"title":{},"content":{"438":{"position":[[1105,26]]},"441":{"position":[[1225,26]]},"443":{"position":[[1706,26]]},"446":{"position":[[642,26]]},"449":{"position":[[1136,26]]},"452":{"position":[[617,26]]},"965":{"position":[[1105,26]]},"968":{"position":[[1225,26]]},"970":{"position":[[1706,26]]},"973":{"position":[[642,26]]},"976":{"position":[[1136,26]]},"979":{"position":[[617,26]]}},"keywords":{}}],["envvars\":{\"test_env\":\"t",{"_index":3547,"title":{},"content":{"479":{"position":[[1100,30]]},"482":{"position":[[847,30]]},"485":{"position":[[835,30]]},"488":{"position":[[865,30]]},"1011":{"position":[[1100,30]]},"1014":{"position":[[847,30]]},"1017":{"position":[[835,30]]},"1020":{"position":[[865,30]]}},"keywords":{}}],["ephem",{"_index":1926,"title":{},"content":{"190":{"position":[[378,9]]},"773":{"position":[[378,9]]}},"keywords":{}}],["epoch",{"_index":794,"title":{},"content":{"84":{"position":[[726,6],[770,6],[816,6],[863,6],[910,6],[957,6],[1004,6],[1051,6],[1098,6],[1145,6],[1193,6],[1241,6],[1289,6],[1337,6],[1385,6],[1433,6],[1903,6],[1947,6],[1993,6],[2040,6],[2087,6],[2134,6],[2181,6],[2228,6],[2275,6],[2322,6],[2370,6],[2418,6],[2466,6],[2514,6],[2562,6],[2610,6]]},"215":{"position":[[1160,6]]},"415":{"position":[[2031,6],[2170,6]]},"589":{"position":[[501,6],[684,6],[889,6]]},"590":{"position":[[571,6],[756,6],[928,6]]},"683":{"position":[[726,6],[770,6],[816,6],[863,6],[910,6],[957,6],[1004,6],[1051,6],[1098,6],[1145,6],[1193,6],[1241,6],[1289,6],[1337,6],[1385,6],[1433,6],[1903,6],[1947,6],[1993,6],[2040,6],[2087,6],[2134,6],[2181,6],[2228,6],[2275,6],[2322,6],[2370,6],[2418,6],[2466,6],[2514,6],[2562,6],[2610,6]]},"785":{"position":[[1160,6]]},"942":{"position":[[2049,6],[2190,6]]},"1115":{"position":[[501,6],[684,6],[889,6]]},"1116":{"position":[[571,6],[756,6],[928,6]]}},"keywords":{}}],["epochs=10",{"_index":3381,"title":{},"content":{"415":{"position":[[2210,10]]},"942":{"position":[[2263,10]]}},"keywords":{}}],["equip",{"_index":3386,"title":{},"content":{"416":{"position":[[21,8]]},"943":{"position":[[21,8]]}},"keywords":{}}],["equvil",{"_index":1544,"title":{},"content":{"156":{"position":[[931,9]]},"726":{"position":[[931,9]]}},"keywords":{}}],["error",{"_index":115,"title":{"28":{"position":[[44,6]]},"161":{"position":[[140,5]]},"546":{"position":[[44,6]]},"616":{"position":[[44,6]]},"731":{"position":[[140,5]]},"1072":{"position":[[44,6]]}},"content":{"7":{"position":[[533,6]]},"25":{"position":[[24,5]]},"28":{"position":[[25,5]]},"133":{"position":[[1807,5]]},"153":{"position":[[112,5]]},"161":{"position":[[979,5]]},"198":{"position":[[121,5]]},"339":{"position":[[70,7],[347,5]]},"543":{"position":[[24,5]]},"546":{"position":[[25,5]]},"572":{"position":[[65,5]]},"596":{"position":[[533,6]]},"613":{"position":[[24,5]]},"616":{"position":[[25,5]]},"723":{"position":[[112,5]]},"731":{"position":[[979,5]]},"781":{"position":[[121,5]]},"1069":{"position":[[24,5]]},"1072":{"position":[[25,5]]},"1092":{"position":[[65,5]]}},"keywords":{}}],["error=13",{"_index":454,"title":{},"content":{"26":{"position":[[257,9]]},"544":{"position":[[257,9]]},"614":{"position":[[257,9]]},"1070":{"position":[[257,9]]}},"keywords":{}}],["especi",{"_index":652,"title":{},"content":{"35":{"position":[[3215,10]]},"219":{"position":[[100,10]]},"627":{"position":[[3215,10]]},"789":{"position":[[100,10]]}},"keywords":{}}],["essenti",{"_index":2676,"title":{},"content":{"371":{"position":[[6,9]]},"553":{"position":[[533,9]]},"559":{"position":[[514,9]]},"898":{"position":[[6,9]]},"1079":{"position":[[533,9]]},"1094":{"position":[[514,9]]}},"keywords":{}}],["establish",{"_index":2218,"title":{},"content":{"269":{"position":[[306,11]]},"840":{"position":[[306,11]]}},"keywords":{}}],["estim",{"_index":4049,"title":{},"content":{"571":{"position":[[11,10]]},"1091":{"position":[[11,10]]}},"keywords":{}}],["etc",{"_index":718,"title":{"212":{"position":[[31,5]]},"761":{"position":[[31,5]]}},"content":{"74":{"position":[[968,3]]},"89":{"position":[[1169,3]]},"107":{"position":[[202,4],[3176,4],[8937,4]]},"133":{"position":[[982,5]]},"151":{"position":[[830,4],[1005,4]]},"154":{"position":[[66,6]]},"156":{"position":[[481,5]]},"158":{"position":[[208,4]]},"159":{"position":[[2682,4]]},"160":{"position":[[64,4],[259,4],[379,4],[479,4]]},"163":{"position":[[280,4],[369,4]]},"167":{"position":[[395,5]]},"171":{"position":[[242,4],[679,4],[803,4],[901,4]]},"175":{"position":[[293,5]]},"176":{"position":[[351,4],[487,4],[1385,4]]},"179":{"position":[[1204,4],[1348,4]]},"181":{"position":[[507,5],[1331,4],[1816,4],[2222,4]]},"182":{"position":[[892,4]]},"188":{"position":[[112,4]]},"190":{"position":[[602,4],[690,5]]},"194":{"position":[[150,6],[262,5]]},"196":{"position":[[846,4],[1183,4]]},"197":{"position":[[403,5]]},"200":{"position":[[1306,4]]},"201":{"position":[[259,4],[649,4]]},"204":{"position":[[349,6]]},"210":{"position":[[104,4]]},"211":{"position":[[82,4]]},"215":{"position":[[1167,4],[1229,5],[1445,5],[1832,4]]},"217":{"position":[[340,4]]},"218":{"position":[[283,6],[381,4]]},"222":{"position":[[129,4]]},"223":{"position":[[132,4]]},"229":{"position":[[525,4],[1099,4],[1278,4],[1577,4]]},"230":{"position":[[160,4]]},"242":{"position":[[188,4]]},"244":{"position":[[91,4]]},"264":{"position":[[149,5]]},"314":{"position":[[1112,5]]},"338":{"position":[[213,4]]},"339":{"position":[[156,4]]},"369":{"position":[[571,4]]},"375":{"position":[[265,4]]},"411":{"position":[[296,4]]},"549":{"position":[[246,4]]},"553":{"position":[[250,4]]},"559":{"position":[[247,4]]},"666":{"position":[[968,3]]},"672":{"position":[[1169,3]]},"721":{"position":[[830,4],[1005,4]]},"724":{"position":[[66,6]]},"726":{"position":[[481,5]]},"728":{"position":[[208,4]]},"729":{"position":[[2682,4]]},"730":{"position":[[64,4],[259,4],[379,4],[479,4]]},"733":{"position":[[280,4],[369,4]]},"737":{"position":[[395,5]]},"741":{"position":[[242,4],[684,4],[808,4],[906,4],[1187,4]]},"745":{"position":[[293,5]]},"746":{"position":[[352,4],[488,4],[807,4],[1388,4]]},"749":{"position":[[1209,4],[1353,4]]},"750":{"position":[[259,4],[650,4]]},"753":{"position":[[349,6]]},"759":{"position":[[104,4]]},"760":{"position":[[82,4]]},"764":{"position":[[507,5],[1337,4],[1829,4],[2235,4]]},"765":{"position":[[892,4]]},"771":{"position":[[112,4]]},"773":{"position":[[602,4],[690,5]]},"777":{"position":[[150,6],[268,5]]},"779":{"position":[[851,4],[1188,4]]},"780":{"position":[[410,5]]},"783":{"position":[[1306,4]]},"785":{"position":[[1167,4],[1229,5],[1445,5],[1832,4]]},"787":{"position":[[340,4]]},"788":{"position":[[283,6],[381,4]]},"792":{"position":[[525,4],[1100,4],[1279,4],[1579,4]]},"793":{"position":[[160,4]]},"805":{"position":[[188,4]]},"807":{"position":[[129,4]]},"808":{"position":[[132,4]]},"814":{"position":[[91,4]]},"835":{"position":[[149,5]]},"892":{"position":[[571,4]]},"902":{"position":[[265,4]]},"1075":{"position":[[246,4]]},"1079":{"position":[[250,4]]},"1094":{"position":[[247,4]]}},"keywords":{}}],["etc.admin",{"_index":1818,"title":{},"content":{"176":{"position":[[806,10]]}},"keywords":{}}],["etc.guid",{"_index":1296,"title":{},"content":{"133":{"position":[[1826,9]]}},"keywords":{}}],["etc.submarin",{"_index":2008,"title":{},"content":{"201":{"position":[[872,13]]},"750":{"position":[[873,13]]}},"keywords":{}}],["etc.support",{"_index":1758,"title":{},"content":{"171":{"position":[[1176,11]]}},"keywords":{}}],["etc/alias",{"_index":3146,"title":{},"content":{"389":{"position":[[14578,12],[14629,12],[30127,12],[30178,12]]},"916":{"position":[[14578,12],[14629,12],[30127,12],[30178,12]]}},"keywords":{}}],["etc/default/gridengin",{"_index":3158,"title":{},"content":{"389":{"position":[[15269,23],[30818,23]]},"916":{"position":[[15269,23],[30818,23]]}},"keywords":{}}],["etc/init.d/postfix",{"_index":3150,"title":{},"content":{"389":{"position":[[14908,20],[30457,20]]},"916":{"position":[[14908,20],[30457,20]]}},"keywords":{}}],["etc/mailnam",{"_index":3133,"title":{},"content":{"389":{"position":[[14253,13],[29802,13]]},"916":{"position":[[14253,13],[29802,13]]}},"keywords":{}}],["etc/network/interfac",{"_index":3128,"title":{},"content":{"389":{"position":[[13589,24],[29138,24]]},"916":{"position":[[13589,24],[29138,24]]}},"keywords":{}}],["etc/postfix/dynamicmaps.cf",{"_index":3129,"title":{},"content":{"389":{"position":[[14141,27],[29690,27]]},"916":{"position":[[14141,27],[29690,27]]}},"keywords":{}}],["etc/postfix/main.cf",{"_index":3147,"title":{},"content":{"389":{"position":[[14768,20],[30317,20]]},"916":{"position":[[14768,20],[30317,20]]}},"keywords":{}}],["etc/yarn/sbin/linux",{"_index":451,"title":{},"content":{"26":{"position":[[205,21],[567,20]]},"544":{"position":[[205,21],[567,20]]},"614":{"position":[[205,21],[567,20]]},"1070":{"position":[[205,21],[567,20]]}},"keywords":{}}],["etcd",{"_index":2200,"title":{},"content":{"264":{"position":[[143,5]]},"369":{"position":[[550,5]]},"835":{"position":[[143,5]]},"892":{"position":[[550,5]]}},"keywords":{}}],["etl",{"_index":1992,"title":{},"content":{"200":{"position":[[1840,3]]},"783":{"position":[[1840,3]]}},"keywords":{}}],["eval",{"_index":391,"title":{},"content":{"23":{"position":[[982,4]]},"300":{"position":[[348,4],[472,4]]},"302":{"position":[[94,4],[217,4]]},"416":{"position":[[71,4]]},"541":{"position":[[982,4]]},"580":{"position":[[664,4]]},"611":{"position":[[982,4]]},"867":{"position":[[348,4],[472,4]]},"869":{"position":[[94,4],[217,4]]},"1067":{"position":[[982,4]]},"1106":{"position":[[664,4]]}},"keywords":{}}],["evalu",{"_index":1957,"title":{},"content":{"195":{"position":[[159,10]]},"565":{"position":[[266,10]]},"566":{"position":[[58,11],[274,11],[584,11]]},"569":{"position":[[1174,11]]},"570":{"position":[[233,10],[7471,10],[9541,10],[9807,10]]},"571":{"position":[[390,8]]},"572":{"position":[[1065,8]]},"778":{"position":[[159,10]]},"1085":{"position":[[266,10]]},"1086":{"position":[[58,11],[274,11],[584,11]]},"1089":{"position":[[1174,11]]},"1090":{"position":[[233,10],[7471,10],[9541,10],[9807,10]]},"1091":{"position":[[390,8]]},"1092":{"position":[[1065,8]]}},"keywords":{}}],["even",{"_index":1303,"title":{},"content":{"133":{"position":[[2151,4]]},"139":{"position":[[339,4]]},"159":{"position":[[622,4],[2348,4]]},"171":{"position":[[121,4],[640,4]]},"217":{"position":[[538,4]]},"219":{"position":[[292,4]]},"711":{"position":[[339,4]]},"729":{"position":[[622,4],[2348,4]]},"741":{"position":[[121,4],[645,4]]},"787":{"position":[[538,4]]},"789":{"position":[[292,4]]}},"keywords":{}}],["event",{"_index":1955,"title":{"263":{"position":[[8,5]]},"276":{"position":[[23,6]]},"277":{"position":[[22,5]]},"834":{"position":[[8,5]]},"847":{"position":[[23,6]]},"848":{"position":[[22,5]]}},"content":{"195":{"position":[[66,6]]},"263":{"position":[[119,6],[226,7],[335,5],[445,6]]},"276":{"position":[[60,5]]},"277":{"position":[[39,5]]},"778":{"position":[[66,6]]},"834":{"position":[[119,6],[226,7],[335,5],[445,6]]},"847":{"position":[[60,5]]},"848":{"position":[[39,5]]}},"keywords":{}}],["everybodi",{"_index":1560,"title":{},"content":{"159":{"position":[[0,9]]},"729":{"position":[[0,9]]}},"keywords":{}}],["everyon",{"_index":532,"title":{},"content":{"31":{"position":[[0,8]]},"133":{"position":[[2121,8]]},"141":{"position":[[343,8],[975,8]]},"623":{"position":[[0,8]]}},"keywords":{}}],["everyone'",{"_index":2631,"title":{},"content":{"352":{"position":[[123,10]]}},"keywords":{}}],["ex",{"_index":148,"title":{},"content":{"8":{"position":[[167,3]]},"9":{"position":[[47,3]]},"320":{"position":[[1025,3]]},"379":{"position":[[78,4]]},"413":{"position":[[100,3]]},"511":{"position":[[899,3]]},"597":{"position":[[167,3]]},"598":{"position":[[47,3]]},"869":{"position":[[1212,3],[1441,3]]},"877":{"position":[[1025,3]]},"906":{"position":[[78,4]]}},"keywords":{}}],["exact",{"_index":983,"title":{},"content":{"107":{"position":[[1655,5]]},"133":{"position":[[552,5]]}},"keywords":{}}],["exampl",{"_index":317,"title":{"376":{"position":[[4,8]]},"414":{"position":[[0,8],[36,7]]},"423":{"position":[[5,7]]},"425":{"position":[[5,7]]},"428":{"position":[[5,7]]},"431":{"position":[[5,7]]},"434":{"position":[[5,7]]},"438":{"position":[[5,7]]},"441":{"position":[[5,7]]},"443":{"position":[[5,7]]},"446":{"position":[[5,7]]},"449":{"position":[[5,7]]},"452":{"position":[[5,7]]},"454":{"position":[[5,7]]},"457":{"position":[[5,7]]},"461":{"position":[[5,7]]},"463":{"position":[[5,7]]},"466":{"position":[[5,7]]},"469":{"position":[[5,7]]},"472":{"position":[[5,7]]},"475":{"position":[[0,7]]},"479":{"position":[[5,7]]},"482":{"position":[[5,7]]},"485":{"position":[[5,7]]},"488":{"position":[[5,7]]},"492":{"position":[[0,7]]},"550":{"position":[[4,8]]},"554":{"position":[[4,8]]},"560":{"position":[[4,8]]},"579":{"position":[[17,8]]},"584":{"position":[[17,8]]},"589":{"position":[[17,8]]},"903":{"position":[[4,8]]},"941":{"position":[[0,8],[36,7]]},"950":{"position":[[5,7]]},"952":{"position":[[5,7]]},"955":{"position":[[5,7]]},"958":{"position":[[5,7]]},"961":{"position":[[5,7]]},"965":{"position":[[5,7]]},"968":{"position":[[5,7]]},"970":{"position":[[5,7]]},"973":{"position":[[5,7]]},"976":{"position":[[5,7]]},"979":{"position":[[5,7]]},"981":{"position":[[5,7]]},"984":{"position":[[5,7]]},"988":{"position":[[5,7]]},"990":{"position":[[5,7]]},"993":{"position":[[5,7]]},"996":{"position":[[5,7]]},"999":{"position":[[5,7]]},"1002":{"position":[[0,7]]},"1006":{"position":[[0,7]]},"1011":{"position":[[5,7]]},"1014":{"position":[[5,7]]},"1017":{"position":[[5,7]]},"1020":{"position":[[5,7]]},"1076":{"position":[[4,8]]},"1080":{"position":[[4,8]]},"1095":{"position":[[4,8]]},"1105":{"position":[[17,8]]},"1110":{"position":[[17,8]]},"1115":{"position":[[17,8]]}},"content":{"20":{"position":[[310,7]]},"21":{"position":[[108,7]]},"71":{"position":[[25,7],[551,7]]},"72":{"position":[[24,7],[100,7]]},"73":{"position":[[31,7],[124,7]]},"74":{"position":[[33,7],[447,7]]},"75":{"position":[[31,7],[127,7]]},"77":{"position":[[24,7],[591,7]]},"78":{"position":[[24,7],[568,7],[738,7]]},"79":{"position":[[23,7],[98,7]]},"80":{"position":[[28,7],[133,7]]},"81":{"position":[[30,7],[629,7]]},"82":{"position":[[28,7],[136,7]]},"83":{"position":[[28,7],[108,7]]},"84":{"position":[[33,7],[143,7]]},"86":{"position":[[22,7]]},"87":{"position":[[21,7]]},"88":{"position":[[28,7]]},"90":{"position":[[28,7]]},"91":{"position":[[40,7]]},"93":{"position":[[33,7],[120,7]]},"94":{"position":[[43,7],[132,7]]},"95":{"position":[[28,7],[277,7]]},"96":{"position":[[46,7],[137,7]]},"97":{"position":[[71,7],[185,7]]},"98":{"position":[[73,7],[189,7]]},"100":{"position":[[22,7],[368,7]]},"101":{"position":[[21,7],[107,7]]},"102":{"position":[[26,7],[104,7]]},"103":{"position":[[29,7],[110,7]]},"105":{"position":[[19,7],[249,7]]},"106":{"position":[[21,7],[181,7]]},"107":{"position":[[5582,8]]},"109":{"position":[[30,7],[243,7]]},"110":{"position":[[29,7],[110,7]]},"111":{"position":[[36,7],[130,7]]},"112":{"position":[[38,7],[233,7]]},"113":{"position":[[39,7],[135,7]]},"114":{"position":[[56,7],[167,7]]},"115":{"position":[[58,7],[171,7]]},"123":{"position":[[215,8]]},"124":{"position":[[194,8]]},"128":{"position":[[244,8]]},"148":{"position":[[354,8]]},"151":{"position":[[490,7]]},"153":{"position":[[434,7]]},"161":{"position":[[280,8]]},"162":{"position":[[245,8]]},"171":{"position":[[1371,7]]},"182":{"position":[[114,7],[959,7]]},"199":{"position":[[275,7]]},"217":{"position":[[1265,8],[1355,8]]},"244":{"position":[[145,8]]},"248":{"position":[[482,8],[648,8]]},"262":{"position":[[164,8]]},"263":{"position":[[238,8]]},"283":{"position":[[255,8]]},"299":{"position":[[66,8]]},"320":{"position":[[307,8]]},"343":{"position":[[4,8]]},"375":{"position":[[107,7],[203,7],[340,7]]},"376":{"position":[[22,8]]},"383":{"position":[[489,8],[1214,8]]},"386":{"position":[[89,7]]},"402":{"position":[[204,7]]},"403":{"position":[[300,7]]},"407":{"position":[[126,7]]},"413":{"position":[[304,8]]},"414":{"position":[[24,7]]},"415":{"position":[[44,8]]},"441":{"position":[[534,7]]},"474":{"position":[[168,7]]},"496":{"position":[[194,7]]},"497":{"position":[[221,7]]},"498":{"position":[[140,7]]},"499":{"position":[[140,7]]},"500":{"position":[[139,7]]},"501":{"position":[[260,7]]},"502":{"position":[[131,7]]},"503":{"position":[[211,7]]},"524":{"position":[[31,7]]},"525":{"position":[[55,8]]},"526":{"position":[[47,8]]},"549":{"position":[[109,7],[179,7],[321,7]]},"550":{"position":[[17,7]]},"553":{"position":[[113,7],[183,7],[327,7]]},"554":{"position":[[17,7]]},"559":{"position":[[117,7],[189,7],[327,7]]},"560":{"position":[[22,8]]},"568":{"position":[[5,7]]},"569":{"position":[[354,7],[1255,7],[1363,7]]},"578":{"position":[[578,8]]},"620":{"position":[[310,7]]},"621":{"position":[[108,7]]},"663":{"position":[[25,7],[551,7]]},"664":{"position":[[24,7],[100,7]]},"665":{"position":[[31,7],[124,7]]},"666":{"position":[[33,7],[447,7]]},"667":{"position":[[31,7],[127,7]]},"669":{"position":[[22,7]]},"670":{"position":[[21,7]]},"671":{"position":[[28,7]]},"673":{"position":[[28,7]]},"674":{"position":[[40,7]]},"676":{"position":[[24,7],[591,7]]},"677":{"position":[[24,7],[568,7],[738,7]]},"678":{"position":[[23,7],[98,7]]},"679":{"position":[[28,7],[133,7]]},"680":{"position":[[30,7],[629,7]]},"681":{"position":[[28,7],[136,7]]},"682":{"position":[[28,7],[108,7]]},"683":{"position":[[33,7],[143,7]]},"691":{"position":[[215,8]]},"692":{"position":[[194,8]]},"696":{"position":[[244,8]]},"702":{"position":[[22,7],[368,7]]},"703":{"position":[[21,7],[107,7]]},"704":{"position":[[26,7],[104,7]]},"705":{"position":[[29,7],[110,7]]},"721":{"position":[[490,7]]},"723":{"position":[[434,7]]},"731":{"position":[[280,8]]},"732":{"position":[[245,8]]},"741":{"position":[[1383,7]]},"765":{"position":[[114,7],[959,7]]},"782":{"position":[[275,7]]},"787":{"position":[[1265,8],[1355,8]]},"814":{"position":[[145,8]]},"818":{"position":[[482,8],[648,8]]},"833":{"position":[[164,8]]},"834":{"position":[[238,8]]},"854":{"position":[[255,8]]},"866":{"position":[[66,8]]},"869":{"position":[[1580,7]]},"877":{"position":[[307,8]]},"902":{"position":[[107,7],[203,7],[340,7]]},"903":{"position":[[22,8]]},"910":{"position":[[489,8],[1214,8]]},"913":{"position":[[89,7]]},"929":{"position":[[204,7]]},"930":{"position":[[300,7]]},"934":{"position":[[126,7]]},"941":{"position":[[24,7]]},"942":{"position":[[44,8]]},"968":{"position":[[534,7]]},"1001":{"position":[[168,7]]},"1023":{"position":[[194,7]]},"1024":{"position":[[221,7]]},"1025":{"position":[[140,7]]},"1026":{"position":[[140,7]]},"1027":{"position":[[139,7]]},"1028":{"position":[[260,7]]},"1029":{"position":[[131,7]]},"1030":{"position":[[211,7]]},"1033":{"position":[[300,7]]},"1035":{"position":[[92,7]]},"1036":{"position":[[105,7]]},"1037":{"position":[[162,7]]},"1038":{"position":[[233,7]]},"1064":{"position":[[1697,8]]},"1075":{"position":[[109,7],[179,7],[321,7]]},"1076":{"position":[[17,7]]},"1079":{"position":[[113,7],[183,7],[327,7]]},"1080":{"position":[[17,7]]},"1088":{"position":[[5,7]]},"1089":{"position":[[354,7],[1255,7],[1363,7]]},"1094":{"position":[[117,7],[189,7],[327,7]]},"1095":{"position":[[22,8]]},"1104":{"position":[[578,8]]}},"keywords":{}}],["example_descript",{"_index":1162,"title":{},"content":{"109":{"position":[[141,22]]},"110":{"position":[[285,22],[463,22]]},"111":{"position":[[301,22]]}},"keywords":{}}],["example_nam",{"_index":1161,"title":{},"content":{"109":{"position":[[110,15]]},"110":{"position":[[360,15]]},"111":{"position":[[376,15]]}},"keywords":{}}],["example_name1",{"_index":1169,"title":{},"content":{"110":{"position":[[538,16]]}},"keywords":{}}],["examples/mnist",{"_index":4115,"title":{},"content":{"579":{"position":[[80,14]]},"584":{"position":[[80,14]]},"1105":{"position":[[80,14]]},"1110":{"position":[[80,14]]}},"keywords":{}}],["examples/sec",{"_index":3994,"title":{},"content":{"570":{"position":[[14670,13],[14737,13],[14804,13],[14870,13],[14937,13],[15004,13],[15071,13],[15258,13],[15325,13],[15392,13],[15460,13],[15527,13],[15595,13],[15663,13],[15731,13],[15799,13],[15867,13]]},"1090":{"position":[[14670,13],[14737,13],[14804,13],[14870,13],[14937,13],[15004,13],[15071,13],[15258,13],[15325,13],[15392,13],[15460,13],[15527,13],[15595,13],[15663,13],[15731,13],[15799,13],[15867,13]]}},"keywords":{}}],["except",{"_index":2246,"title":{},"content":{"272":{"position":[[89,11]]},"843":{"position":[[89,11]]}},"keywords":{}}],["exclud",{"_index":1146,"title":{},"content":{"107":{"position":[[10287,10],[10524,10]]}},"keywords":{}}],["exclus",{"_index":1826,"title":{},"content":{"176":{"position":[[1171,11]]},"746":{"position":[[1174,11]]}},"keywords":{}}],["exec",{"_index":201,"title":{},"content":{"14":{"position":[[53,4]]},"21":{"position":[[468,4]]},"389":{"position":[[2946,4],[5831,4],[11243,5],[11334,4],[15485,4],[18788,4],[21655,4],[26961,5],[27052,4],[31034,4]]},"606":{"position":[[53,4]]},"621":{"position":[[468,4]]},"916":{"position":[[2946,4],[5831,4],[11243,5],[11334,4],[15485,4],[18788,4],[21655,4],[26961,5],[27052,4],[31034,4]]}},"keywords":{}}],["exec_6.2u5",{"_index":3102,"title":{},"content":{"389":{"position":[[11284,10],[27002,10]]},"916":{"position":[[11284,10],[27002,10]]}},"keywords":{}}],["execut",{"_index":229,"title":{},"content":{"16":{"position":[[34,8],[87,9]]},"26":{"position":[[146,9]]},"33":{"position":[[93,9]]},"35":{"position":[[1551,9],[2612,7],[2712,7],[2840,7],[3151,7]]},"55":{"position":[[1195,7]]},"170":{"position":[[390,9]]},"182":{"position":[[747,9]]},"192":{"position":[[187,10]]},"195":{"position":[[211,9]]},"217":{"position":[[526,8]]},"248":{"position":[[343,9]]},"298":{"position":[[414,7]]},"325":{"position":[[429,7]]},"334":{"position":[[511,7]]},"348":{"position":[[126,7]]},"389":{"position":[[15039,9],[15588,9],[16283,9],[17078,9],[30588,9],[31137,9],[31932,9]]},"391":{"position":[[435,10],[488,10]]},"393":{"position":[[21,7]]},"511":{"position":[[1074,7]]},"544":{"position":[[146,9]]},"570":{"position":[[16066,9]]},"571":{"position":[[197,9]]},"608":{"position":[[34,8],[87,9]]},"614":{"position":[[146,9]]},"625":{"position":[[93,9]]},"627":{"position":[[1551,9],[2612,7],[2712,7],[2840,7],[3151,7]]},"647":{"position":[[1195,7]]},"740":{"position":[[390,9]]},"765":{"position":[[747,9]]},"775":{"position":[[187,10]]},"778":{"position":[[211,9]]},"787":{"position":[[526,8]]},"818":{"position":[[343,9]]},"865":{"position":[[417,7]]},"895":{"position":[[429,7]]},"916":{"position":[[15039,9],[15588,9],[16283,9],[17078,9],[30588,9],[31137,9],[31932,9]]},"918":{"position":[[435,10],[488,10]]},"920":{"position":[[21,7]]},"1070":{"position":[[146,9]]},"1090":{"position":[[16066,9]]},"1091":{"position":[[197,9]]}},"keywords":{}}],["executor",{"_index":442,"title":{"26":{"position":[[19,8]]},"544":{"position":[[19,8]]},"614":{"position":[[19,8]]},"1070":{"position":[[19,8]]}},"content":{"26":{"position":[[246,10],[607,8]]},"544":{"position":[[246,10],[607,8]]},"614":{"position":[[246,10],[607,8]]},"1070":{"position":[[246,10],[607,8]]}},"keywords":{}}],["exist",{"_index":120,"title":{"258":{"position":[[9,8]]},"829":{"position":[[9,8]]}},"content":{"7":{"position":[[591,7],[632,8]]},"78":{"position":[[622,6]]},"107":{"position":[[9394,9],[9512,8]]},"122":{"position":[[210,8]]},"144":{"position":[[28,8]]},"165":{"position":[[129,8]]},"196":{"position":[[637,10]]},"267":{"position":[[45,6]]},"316":{"position":[[103,6],[181,6]]},"317":{"position":[[170,6],[252,6]]},"331":{"position":[[654,8]]},"383":{"position":[[685,8]]},"389":{"position":[[14600,6],[14642,7],[30149,6],[30191,7]]},"398":{"position":[[152,8]]},"437":{"position":[[801,8]]},"441":{"position":[[588,6]]},"491":{"position":[[31,5]]},"569":{"position":[[291,8]]},"596":{"position":[[591,7],[632,8]]},"677":{"position":[[622,6]]},"690":{"position":[[210,8]]},"714":{"position":[[28,8]]},"735":{"position":[[129,8]]},"779":{"position":[[637,10]]},"838":{"position":[[45,6]]},"910":{"position":[[685,8]]},"916":{"position":[[14600,6],[14642,7],[30149,6],[30191,7]]},"925":{"position":[[152,8]]},"964":{"position":[[801,8]]},"968":{"position":[[588,6]]},"1005":{"position":[[31,5]]},"1089":{"position":[[291,8]]}},"keywords":{}}],["existing_kind",{"_index":125,"title":{},"content":{"7":{"position":[[718,14]]},"596":{"position":[[718,14]]}},"keywords":{}}],["exit",{"_index":488,"title":{},"content":{"28":{"position":[[575,4],[693,4]]},"300":{"position":[[444,4]]},"302":{"position":[[189,4]]},"546":{"position":[[575,4],[693,4]]},"616":{"position":[[575,4],[693,4]]},"867":{"position":[[444,4]]},"869":{"position":[[189,4]]},"1072":{"position":[[575,4],[693,4]]}},"keywords":{}}],["exp",{"_index":1457,"title":{},"content":{"151":{"position":[[601,3]]},"721":{"position":[[601,3]]}},"keywords":{}}],["expand",{"_index":2039,"title":{},"content":{"213":{"position":[[442,6]]},"762":{"position":[[442,6]]}},"keywords":{}}],["expect",{"_index":1274,"title":{},"content":{"133":{"position":[[626,8]]},"199":{"position":[[1114,8]]},"517":{"position":[[250,8]]},"782":{"position":[[1114,8]]},"1057":{"position":[[250,8]]}},"keywords":{}}],["expeiment",{"_index":4219,"title":{"806":{"position":[[8,9]]}},"content":{},"keywords":{}}],["experi",{"_index":302,"title":{"19":{"position":[[0,10]]},"76":{"position":[[0,10]]},"77":{"position":[[7,10]]},"78":{"position":[[7,10]]},"79":{"position":[[5,10]]},"80":{"position":[[4,10]]},"81":{"position":[[6,10]]},"82":{"position":[[7,10]]},"83":{"position":[[5,10]]},"84":{"position":[[4,10]]},"85":{"position":[[0,10]]},"86":{"position":[[7,10]]},"87":{"position":[[5,10]]},"88":{"position":[[4,10]]},"91":{"position":[[25,10]]},"171":{"position":[[0,10]]},"180":{"position":[[0,10]]},"182":{"position":[[7,10]]},"183":{"position":[[24,10]]},"184":{"position":[[20,10]]},"185":{"position":[[19,10]]},"186":{"position":[[16,10]]},"189":{"position":[[7,11]]},"190":{"position":[[11,10]]},"191":{"position":[[0,10]]},"192":{"position":[[0,10]]},"194":{"position":[[0,10]]},"195":{"position":[[0,10]]},"196":{"position":[[16,10]]},"198":{"position":[[19,10]]},"199":{"position":[[11,10],[42,10]]},"200":{"position":[[18,10]]},"212":{"position":[[19,11]]},"221":{"position":[[8,10]]},"233":{"position":[[0,10]]},"402":{"position":[[17,10]]},"407":{"position":[[0,10]]},"417":{"position":[[14,10]]},"435":{"position":[[0,10]]},"436":{"position":[[7,10]]},"439":{"position":[[7,10]]},"442":{"position":[[5,10]]},"444":{"position":[[4,10]]},"447":{"position":[[6,10]]},"450":{"position":[[7,10]]},"453":{"position":[[5,10]]},"455":{"position":[[4,10]]},"458":{"position":[[0,10]]},"459":{"position":[[7,10]]},"462":{"position":[[5,10]]},"464":{"position":[[6,10]]},"467":{"position":[[7,10]]},"470":{"position":[[25,10]]},"494":{"position":[[0,10]]},"531":{"position":[[0,11]]},"532":{"position":[[5,11]]},"533":{"position":[[4,10]]},"534":{"position":[[7,10]]},"619":{"position":[[0,10]]},"668":{"position":[[0,10]]},"669":{"position":[[7,10]]},"670":{"position":[[5,10]]},"671":{"position":[[4,10]]},"674":{"position":[[25,10]]},"675":{"position":[[0,10]]},"676":{"position":[[7,10]]},"677":{"position":[[7,10]]},"678":{"position":[[5,10]]},"679":{"position":[[4,10]]},"680":{"position":[[6,10]]},"681":{"position":[[7,10]]},"682":{"position":[[5,10]]},"683":{"position":[[4,10]]},"741":{"position":[[0,10]]},"761":{"position":[[19,11]]},"763":{"position":[[0,10]]},"765":{"position":[[7,10]]},"766":{"position":[[24,10]]},"767":{"position":[[20,10]]},"768":{"position":[[19,10]]},"769":{"position":[[16,10]]},"772":{"position":[[7,11]]},"773":{"position":[[11,10]]},"774":{"position":[[0,10]]},"775":{"position":[[0,10]]},"777":{"position":[[0,10]]},"778":{"position":[[0,10]]},"779":{"position":[[16,10]]},"781":{"position":[[19,10]]},"782":{"position":[[11,10],[42,10]]},"783":{"position":[[18,10]]},"796":{"position":[[0,10]]},"929":{"position":[[17,10]]},"934":{"position":[[0,10]]},"944":{"position":[[14,10]]},"962":{"position":[[0,10]]},"963":{"position":[[7,10]]},"966":{"position":[[7,10]]},"969":{"position":[[5,10]]},"971":{"position":[[4,10]]},"974":{"position":[[6,10]]},"977":{"position":[[7,10]]},"980":{"position":[[5,10]]},"982":{"position":[[4,10]]},"985":{"position":[[0,10]]},"986":{"position":[[7,10]]},"989":{"position":[[5,10]]},"991":{"position":[[6,10]]},"994":{"position":[[7,10]]},"997":{"position":[[25,10]]},"1021":{"position":[[0,10]]}},"content":{"35":{"position":[[3250,10]]},"86":{"position":[[533,12]]},"89":{"position":[[530,12],[1214,10]]},"93":{"position":[[358,11],[721,11],[1084,11],[1448,11]]},"94":{"position":[[366,11]]},"151":{"position":[[140,10],[1235,11],[1258,10],[2206,11]]},"153":{"position":[[585,11]]},"154":{"position":[[1166,10]]},"156":{"position":[[203,11],[848,11]]},"159":{"position":[[939,11],[1051,11],[1586,11]]},"161":{"position":[[762,12]]},"171":{"position":[[0,11],[162,11],[256,10],[334,11],[349,11],[398,11],[455,11],[534,12],[588,12],[695,10],[735,12],[984,11],[1341,10],[1393,10],[1837,10],[1953,10],[2058,10],[2118,11]]},"172":{"position":[[140,10],[546,11],[569,10]]},"173":{"position":[[51,11]]},"175":{"position":[[280,12]]},"176":{"position":[[109,11],[153,10]]},"179":{"position":[[358,12],[604,11],[1209,10]]},"181":{"position":[[44,11],[89,10],[267,10],[366,10],[642,10],[1117,10],[1242,10],[1437,10],[1607,10],[1758,10],[1894,12],[1954,11]]},"182":{"position":[[33,11],[83,10],[125,10],[198,11],[210,11],[544,11],[614,11],[789,10],[916,11],[1010,11]]},"184":{"position":[[207,10]]},"187":{"position":[[21,10],[99,10]]},"188":{"position":[[123,10]]},"189":{"position":[[11,10],[219,10],[717,10],[1088,10],[1108,10]]},"190":{"position":[[80,10],[197,10],[459,10],[745,10]]},"192":{"position":[[4,10],[36,10],[72,10]]},"193":{"position":[[6,10],[29,10],[76,10]]},"194":{"position":[[0,10],[48,11],[166,11],[321,11]]},"195":{"position":[[23,10],[105,10]]},"196":{"position":[[79,12],[113,11],[129,10],[411,10],[469,10],[584,12],[797,11],[1057,10]]},"198":{"position":[[11,10],[142,10]]},"199":{"position":[[11,10],[306,10]]},"200":{"position":[[47,10],[357,10],[390,11],[593,11],[731,11],[1165,11],[1202,11],[1264,10],[1322,10],[1369,10],[1419,11],[2379,10],[2835,10]]},"201":{"position":[[365,11],[381,11],[433,10],[483,11],[535,10]]},"204":{"position":[[548,11]]},"211":{"position":[[55,11]]},"212":{"position":[[18,11],[256,11]]},"213":{"position":[[167,11]]},"215":{"position":[[225,12],[630,11],[846,11],[988,11],[1536,10],[1749,10],[1807,11],[1911,10]]},"217":{"position":[[81,10],[1119,11],[1372,11],[1887,10],[1928,10]]},"219":{"position":[[69,10]]},"222":{"position":[[212,11],[254,10],[295,10],[477,11]]},"226":{"position":[[50,11],[102,11],[442,10],[518,10]]},"229":{"position":[[448,10]]},"232":{"position":[[146,10]]},"352":{"position":[[1008,11],[1060,10]]},"369":{"position":[[73,10]]},"402":{"position":[[193,10],[222,11]]},"407":{"position":[[106,12],[624,10],[1293,10],[1304,10],[1588,10],[1647,10]]},"417":{"position":[[41,10],[124,10]]},"418":{"position":[[111,10]]},"437":{"position":[[116,10],[184,10],[270,10],[346,10],[380,10]]},"445":{"position":[[45,10]]},"448":{"position":[[45,10],[102,10],[175,10]]},"451":{"position":[[45,10]]},"456":{"position":[[45,10]]},"460":{"position":[[47,10],[166,10],[255,10],[323,10],[660,10],[728,10],[814,10],[890,10],[924,10],[963,10]]},"461":{"position":[[501,12],[1652,13]]},"463":{"position":[[654,13]]},"465":{"position":[[56,10],[175,10],[264,10],[332,10]]},"466":{"position":[[506,12],[1682,13]]},"468":{"position":[[47,10]]},"469":{"position":[[678,13]]},"471":{"position":[[56,10],[99,10],[175,10]]},"474":{"position":[[43,12]]},"478":{"position":[[163,10]]},"491":{"position":[[46,10]]},"493":{"position":[[9,10]]},"495":{"position":[[54,10]]},"496":{"position":[[10,11],[60,10],[119,10],[182,11]]},"497":{"position":[[9,11],[46,10],[88,10],[147,10],[209,11]]},"498":{"position":[[67,10],[128,11],[148,10]]},"499":{"position":[[9,10],[127,12],[148,11]]},"500":{"position":[[21,11],[58,10],[127,11]]},"501":{"position":[[38,11],[113,10]]},"502":{"position":[[5,10],[114,10]]},"503":{"position":[[16,10],[75,10],[164,11],[194,10]]},"532":{"position":[[15,10]]},"533":{"position":[[14,10],[25,11],[58,10]]},"534":{"position":[[17,10],[28,11]]},"538":{"position":[[17,10]]},"566":{"position":[[477,11]]},"570":{"position":[[140,10],[9714,10]]},"627":{"position":[[3250,10]]},"669":{"position":[[533,12]]},"672":{"position":[[530,12],[1214,10]]},"721":{"position":[[140,10],[1235,11],[1258,10],[2206,11]]},"723":{"position":[[585,11]]},"724":{"position":[[1166,10]]},"726":{"position":[[203,11],[848,11]]},"729":{"position":[[939,11],[1051,11],[1586,11]]},"731":{"position":[[762,12]]},"741":{"position":[[0,11],[162,11],[256,10],[334,11],[349,11],[398,11],[455,11],[539,12],[593,12],[700,10],[740,12],[989,11],[1353,10],[1405,10],[1849,10],[1965,10],[2070,10],[2130,11],[2165,12]]},"742":{"position":[[140,10],[546,11],[569,10]]},"743":{"position":[[51,11]]},"745":{"position":[[280,12]]},"746":{"position":[[109,11],[153,10]]},"749":{"position":[[358,12],[604,11],[1214,10]]},"750":{"position":[[366,11],[382,11],[434,10],[484,11],[536,10]]},"753":{"position":[[548,11]]},"760":{"position":[[55,11]]},"761":{"position":[[18,11],[256,11]]},"762":{"position":[[167,11]]},"764":{"position":[[44,11],[89,10],[267,10],[366,10],[642,10],[1122,10],[1248,10],[1444,10],[1614,10],[1631,10],[1771,10],[1907,12],[1967,11]]},"765":{"position":[[33,11],[83,10],[125,10],[198,11],[210,11],[544,11],[614,11],[789,10],[916,11],[1010,11]]},"767":{"position":[[207,10]]},"770":{"position":[[21,10],[99,10]]},"771":{"position":[[123,10]]},"772":{"position":[[11,10],[219,10],[717,10],[1088,10],[1108,10]]},"773":{"position":[[80,10],[197,10],[459,10],[745,10]]},"775":{"position":[[4,10],[36,10],[72,10]]},"776":{"position":[[6,10],[29,10],[76,10]]},"777":{"position":[[0,10],[48,11],[166,11],[327,11]]},"778":{"position":[[23,10],[105,10]]},"779":{"position":[[79,12],[113,11],[129,10],[411,10],[469,10],[584,12],[797,11],[1062,10]]},"781":{"position":[[11,10],[142,10]]},"782":{"position":[[11,10],[306,10]]},"783":{"position":[[47,10],[357,10],[390,11],[593,11],[731,11],[1165,11],[1202,11],[1264,10],[1322,10],[1369,10],[1419,11],[2379,10],[2835,10]]},"785":{"position":[[225,12],[630,11],[846,11],[988,11],[1536,10],[1749,10],[1807,11],[1911,10]]},"787":{"position":[[81,10],[1119,11],[1372,11],[1887,10],[1928,10]]},"789":{"position":[[69,10]]},"792":{"position":[[448,10]]},"795":{"position":[[146,10]]},"807":{"position":[[212,11],[254,10],[295,10],[477,11]]},"811":{"position":[[50,11],[102,11],[442,10],[518,10]]},"892":{"position":[[73,10]]},"929":{"position":[[193,10],[222,11]]},"934":{"position":[[106,12],[644,10],[1313,10],[1324,10],[1608,10],[1667,10]]},"944":{"position":[[41,10],[124,10]]},"964":{"position":[[116,10],[184,10],[270,10],[346,10],[380,10]]},"972":{"position":[[45,10]]},"975":{"position":[[45,10],[102,10],[175,10]]},"978":{"position":[[45,10]]},"983":{"position":[[45,10]]},"987":{"position":[[47,10],[166,10],[255,10],[323,10],[660,10],[728,10],[814,10],[890,10],[924,10],[963,10]]},"988":{"position":[[501,12],[1652,13]]},"990":{"position":[[654,13]]},"992":{"position":[[56,10],[175,10],[264,10],[332,10]]},"993":{"position":[[506,12],[1682,13]]},"995":{"position":[[47,10]]},"996":{"position":[[678,13]]},"998":{"position":[[56,10],[99,10],[175,10]]},"1001":{"position":[[43,12]]},"1005":{"position":[[46,10]]},"1007":{"position":[[9,10]]},"1010":{"position":[[163,10]]},"1022":{"position":[[54,10]]},"1023":{"position":[[10,11],[60,10],[119,10],[182,11]]},"1024":{"position":[[9,11],[46,10],[88,10],[147,10],[209,11]]},"1025":{"position":[[67,10],[128,11],[148,10]]},"1026":{"position":[[9,10],[127,12],[148,11]]},"1027":{"position":[[21,11],[58,10],[127,11]]},"1028":{"position":[[38,11],[113,10]]},"1029":{"position":[[5,10],[114,10]]},"1030":{"position":[[16,10],[75,10],[164,11],[194,10]]},"1034":{"position":[[137,10]]},"1086":{"position":[[477,11]]},"1090":{"position":[[140,10],[9714,10]]}},"keywords":{}}],["experiemnt",{"_index":3416,"title":{},"content":{"437":{"position":[[419,10]]},"964":{"position":[[419,10]]}},"keywords":{}}],["experim",{"_index":1986,"title":{},"content":{"200":{"position":[[243,13]]},"783":{"position":[[243,13]]}},"keywords":{}}],["experiment'",{"_index":1860,"title":{},"content":{"181":{"position":[[2092,12]]},"192":{"position":[[174,12]]},"498":{"position":[[8,12]]},"764":{"position":[[2105,12]]},"775":{"position":[[174,12]]},"1025":{"position":[[8,12]]}},"keywords":{}}],["experiment.run",{"_index":1909,"title":{},"content":{"189":{"position":[[497,16],[1004,16],[1514,16]]},"772":{"position":[[497,16],[1004,16],[1514,16]]}},"keywords":{}}],["experiment.us",{"_index":1785,"title":{},"content":{"171":{"position":[[2206,16]]},"741":{"position":[[2219,16]]}},"keywords":{}}],["experiment.wait_for_finish(print_output=tru",{"_index":1910,"title":{},"content":{"189":{"position":[[514,45],[1021,45],[1531,45]]},"772":{"position":[[514,45],[1021,45],[1531,45]]}},"keywords":{}}],["experiment/notebook",{"_index":1488,"title":{"197":{"position":[[18,19]]},"780":{"position":[[18,19]]}},"content":{"152":{"position":[[578,20]]},"197":{"position":[[0,19]]},"722":{"position":[[578,20]]},"780":{"position":[[0,19]]}},"keywords":{}}],["experiment/notebook/model",{"_index":2024,"title":{},"content":{"210":{"position":[[181,25]]},"217":{"position":[[15,25],[1066,25],[1321,25]]},"759":{"position":[[181,25]]},"787":{"position":[[15,25],[1066,25],[1321,25]]}},"keywords":{}}],["experiment_1586156073228_0001",{"_index":743,"title":{},"content":{"77":{"position":[[668,32]]},"78":{"position":[[815,32]]},"82":{"position":[[213,32]]},"676":{"position":[[668,32]]},"677":{"position":[[815,32]]},"681":{"position":[[213,32]]}},"keywords":{}}],["experiment_1589199154923_0001",{"_index":778,"title":{},"content":{"83":{"position":[[221,32]]},"682":{"position":[[221,32]]}},"keywords":{}}],["experiment_1589199154923_0002",{"_index":782,"title":{},"content":{"83":{"position":[[341,32]]},"84":{"position":[[254,32]]},"682":{"position":[[341,32]]},"683":{"position":[[254,32]]}},"keywords":{}}],["experiment_1592057447228_0001",{"_index":762,"title":{},"content":{"79":{"position":[[177,32]]},"80":{"position":[[210,32]]},"678":{"position":[[177,32]]},"679":{"position":[[210,32]]}},"keywords":{}}],["experiment_1592057447228_0002",{"_index":763,"title":{},"content":{"79":{"position":[[831,32]]},"678":{"position":[[831,32]]}},"keywords":{}}],["experiment_meta",{"_index":3267,"title":{},"content":{"407":{"position":[[719,15]]},"934":{"position":[[739,15]]}},"keywords":{}}],["experiment_nam",{"_index":832,"title":{},"content":{"86":{"position":[[446,18],[727,22]]},"89":{"position":[[443,18],[724,22]]},"461":{"position":[[414,18],[695,22]]},"466":{"position":[[419,18],[700,22]]},"471":{"position":[[196,16]]},"669":{"position":[[446,18],[727,22]]},"672":{"position":[[443,18],[724,22]]},"988":{"position":[[414,18],[695,22]]},"993":{"position":[[419,18],[700,22]]},"998":{"position":[[196,16]]}},"keywords":{}}],["experiment_name\":\"newexperiment1",{"_index":844,"title":{},"content":{"91":{"position":[[189,34]]},"472":{"position":[[138,34]]},"674":{"position":[[189,34]]},"999":{"position":[[138,34]]}},"keywords":{}}],["experiment_spec",{"_index":3282,"title":{"497":{"position":[[26,16]]},"1024":{"position":[[26,16]]}},"content":{"407":{"position":[[1143,15]]},"496":{"position":[[33,16]]},"497":{"position":[[61,16]]},"934":{"position":[[1163,15]]},"1023":{"position":[[33,16]]},"1024":{"position":[[61,16]]}},"keywords":{}}],["experimentcli",{"_index":3561,"title":{"495":{"position":[[6,18]]},"1022":{"position":[[6,18]]}},"content":{"496":{"position":[[235,18]]},"1023":{"position":[[235,18]]}},"keywords":{}}],["experimentconf",{"_index":1906,"title":{},"content":{"189":{"position":[[279,16],[777,16],[1218,16]]},"772":{"position":[[279,16],[777,16],[1218,16]]}},"keywords":{}}],["experimentid",{"_index":742,"title":{},"content":{"77":{"position":[[652,15]]},"78":{"position":[[799,15]]},"79":{"position":[[161,15],[815,15]]},"80":{"position":[[194,15]]},"82":{"position":[[197,15]]},"83":{"position":[[205,15],[325,15]]},"84":{"position":[[238,15]]},"93":{"position":[[341,14],[704,14],[1067,14],[1431,14]]},"94":{"position":[[349,14]]},"676":{"position":[[652,15]]},"677":{"position":[[799,15]]},"678":{"position":[[161,15],[815,15]]},"679":{"position":[[194,15]]},"681":{"position":[[197,15]]},"682":{"position":[[205,15],[325,15]]},"683":{"position":[[238,15]]}},"keywords":{}}],["experimentid\":\"experiment_1626160071451_0001",{"_index":3466,"title":{},"content":{"443":{"position":[[147,47]]},"454":{"position":[[152,47]]},"457":{"position":[[180,47]]},"472":{"position":[[327,47]]},"970":{"position":[[147,47]]},"981":{"position":[[152,47]]},"984":{"position":[[180,47]]},"999":{"position":[[327,47]]}},"keywords":{}}],["experimentid\":\"experiment_1626160071451_0002",{"_index":3427,"title":{},"content":{"438":{"position":[[638,47]]},"965":{"position":[[638,47]]}},"keywords":{}}],["experimentid\":\"experiment_1626160071451_0005",{"_index":3459,"title":{},"content":{"441":{"position":[[758,47]]},"443":{"position":[[1239,47]]},"446":{"position":[[175,47]]},"449":{"position":[[669,47]]},"452":{"position":[[178,47]]},"968":{"position":[[758,47]]},"970":{"position":[[1239,47]]},"973":{"position":[[175,47]]},"976":{"position":[[669,47]]},"979":{"position":[[178,47]]}},"keywords":{}}],["experimentit",{"_index":2438,"title":{},"content":{"320":{"position":[[1038,15]]},"877":{"position":[[1038,15]]}},"keywords":{}}],["experimentmeta",{"_index":3261,"title":{},"content":{"407":{"position":[[460,14]]},"437":{"position":[[84,14],[291,15]]},"448":{"position":[[65,14]]},"460":{"position":[[628,14],[835,15]]},"934":{"position":[[476,14]]},"964":{"position":[[84,14],[291,15]]},"975":{"position":[[65,14]]},"987":{"position":[[628,14],[835,15]]}},"keywords":{}}],["experimentmeta(name='mnist",{"_index":3268,"title":{},"content":{"407":{"position":[[737,26]]},"934":{"position":[[757,26]]}},"keywords":{}}],["experimentmodel",{"_index":2040,"title":{},"content":{"215":{"position":[[75,15]]},"785":{"position":[[75,15]]}},"keywords":{}}],["experimentrestapi",{"_index":3623,"title":{},"content":{"511":{"position":[[236,17],[799,17]]}},"keywords":{}}],["experiments.can",{"_index":1783,"title":{},"content":{"171":{"position":[[2153,15]]}},"keywords":{}}],["experiments/notebook",{"_index":1477,"title":{},"content":{"151":{"position":[[2129,22]]},"721":{"position":[[2129,22]]}},"keywords":{}}],["experiments:adhoc",{"_index":1741,"title":{},"content":{"171":{"position":[[570,17]]},"741":{"position":[[575,17]]}},"keywords":{}}],["experimentspec",{"_index":834,"title":{},"content":{"86":{"position":[[551,17]]},"89":{"position":[[548,17],[1142,17]]},"200":{"position":[[2595,14]]},"407":{"position":[[317,14]]},"437":{"position":[[4,14],[36,15]]},"440":{"position":[[4,14]]},"460":{"position":[[276,14],[291,14],[580,15]]},"461":{"position":[[519,17],[2236,18]]},"463":{"position":[[1238,18]]},"465":{"position":[[285,14],[300,14]]},"466":{"position":[[524,17],[2266,18]]},"469":{"position":[[1262,18]]},"669":{"position":[[551,17]]},"672":{"position":[[548,17],[1142,17]]},"783":{"position":[[2595,14]]},"934":{"position":[[325,14]]},"964":{"position":[[4,14],[36,15]]},"967":{"position":[[4,14]]},"987":{"position":[[276,14],[291,14],[580,15]]},"988":{"position":[[519,17],[2236,18]]},"990":{"position":[[1238,18]]},"992":{"position":[[285,14],[300,14]]},"993":{"position":[[524,17],[2266,18]]},"996":{"position":[[1262,18]]}},"keywords":{}}],["experimentspec(meta=experiment_meta",{"_index":3283,"title":{},"content":{"407":{"position":[[1161,36]]},"934":{"position":[[1181,36]]}},"keywords":{}}],["experimenttaskspec",{"_index":3259,"title":{},"content":{"407":{"position":[[389,18]]},"437":{"position":[[222,19],[899,19]]},"448":{"position":[[213,19]]},"460":{"position":[[766,19],[1112,19]]},"934":{"position":[[401,18]]},"964":{"position":[[222,19],[899,19]]},"975":{"position":[[213,19]]},"987":{"position":[[766,19],[1112,19]]}},"keywords":{}}],["experimenttaskspec(resources='cpu=1,memory=1024m",{"_index":3276,"title":{},"content":{"407":{"position":[[922,50],[995,50]]},"934":{"position":[[942,50],[1015,50]]}},"keywords":{}}],["experimenttemplatehandl",{"_index":1995,"title":{},"content":{"200":{"position":[[2567,25]]},"783":{"position":[[2567,25]]}},"keywords":{}}],["experimenttemplateid",{"_index":3491,"title":{},"content":{"461":{"position":[[1144,24]]},"463":{"position":[[146,24]]},"466":{"position":[[1170,24]]},"469":{"position":[[166,24]]},"988":{"position":[[1144,24]]},"990":{"position":[[146,24]]},"993":{"position":[[1170,24]]},"996":{"position":[[166,24]]}},"keywords":{}}],["experimenttemplateparamspec",{"_index":3489,"title":{},"content":{"460":{"position":[[344,28]]},"987":{"position":[[344,28]]}},"keywords":{}}],["experimenttemplatespec",{"_index":3494,"title":{},"content":{"461":{"position":[[1212,26]]},"463":{"position":[[214,26]]},"466":{"position":[[1238,26]]},"469":{"position":[[234,26]]},"988":{"position":[[1212,26]]},"990":{"position":[[214,26]]},"993":{"position":[[1238,26]]},"996":{"position":[[234,26]]}},"keywords":{}}],["expert",{"_index":1682,"title":{},"content":{"163":{"position":[[223,7]]},"733":{"position":[[223,7]]}},"keywords":{}}],["expir",{"_index":2374,"title":{},"content":{"314":{"position":[[530,8],[639,8],[775,8],[884,8],[1406,8],[1515,8],[1645,8],[1754,8]]},"331":{"position":[[912,6],[929,7],[958,7],[988,7],[1019,7],[1090,6]]}},"keywords":{}}],["explain",{"_index":949,"title":{},"content":{"107":{"position":[[418,8],[8182,10]]}},"keywords":{}}],["explan",{"_index":1093,"title":{},"content":{"107":{"position":[[6825,11],[6884,11]]},"136":{"position":[[362,11]]},"389":{"position":[[1533,13]]},"708":{"position":[[362,11]]},"916":{"position":[[1533,13]]}},"keywords":{}}],["explicit",{"_index":2443,"title":{},"content":{"322":{"position":[[84,8],[154,8]]},"879":{"position":[[84,8],[154,8]]}},"keywords":{}}],["explictili",{"_index":1535,"title":{},"content":{"156":{"position":[[278,10]]},"726":{"position":[[278,10]]}},"keywords":{}}],["explor",{"_index":1723,"title":{},"content":{"168":{"position":[[282,9]]},"219":{"position":[[331,9]]},"738":{"position":[[282,9]]},"789":{"position":[[331,9]]}},"keywords":{}}],["export",{"_index":1516,"title":{},"content":{"154":{"position":[[414,6],[501,6]]},"334":{"position":[[653,6],[1340,6]]},"386":{"position":[[707,6]]},"391":{"position":[[282,6],[588,6]]},"559":{"position":[[715,6]]},"580":{"position":[[447,7]]},"724":{"position":[[414,6],[501,6]]},"913":{"position":[[707,6]]},"918":{"position":[[282,6],[588,6]]},"1094":{"position":[[715,6]]},"1106":{"position":[[447,7]]}},"keywords":{}}],["export160",{"_index":2877,"title":{},"content":{"389":{"position":[[2159,9],[3051,9],[4254,9],[8748,10],[8862,9],[13632,9],[18001,9],[18875,9],[20078,9],[24466,10],[24580,9],[29181,9]]},"916":{"position":[[2159,9],[3051,9],[4254,9],[8748,10],[8862,9],[13632,9],[18001,9],[18875,9],[20078,9],[24466,10],[24580,9],[29181,9]]}},"keywords":{}}],["export160_1%3a9.10.3.dfsg.p4",{"_index":3076,"title":{},"content":{"389":{"position":[[8790,28],[24508,28]]},"916":{"position":[[8790,28],[24508,28]]}},"keywords":{}}],["export162",{"_index":2875,"title":{},"content":{"389":{"position":[[2142,9],[3034,9],[4380,9],[8954,10],[9068,9],[13695,9],[17984,9],[18858,9],[20204,9],[24672,10],[24786,9],[29244,9]]},"916":{"position":[[2142,9],[3034,9],[4380,9],[8954,10],[9068,9],[13695,9],[17984,9],[18858,9],[20204,9],[24672,10],[24786,9],[29244,9]]}},"keywords":{}}],["export162_1%3a9.10.3.dfsg.p4",{"_index":3078,"title":{},"content":{"389":{"position":[[8996,28],[24714,28]]},"916":{"position":[[8996,28],[24714,28]]}},"keywords":{}}],["expos",{"_index":333,"title":{},"content":{"20":{"position":[[607,8]]},"35":{"position":[[1611,7]]},"230":{"position":[[182,7]]},"383":{"position":[[869,6]]},"384":{"position":[[28,6]]},"413":{"position":[[0,8]]},"620":{"position":[[607,8]]},"627":{"position":[[1611,7]]},"793":{"position":[[182,7]]},"869":{"position":[[1113,8]]},"910":{"position":[[869,6]]},"911":{"position":[[28,6]]}},"keywords":{}}],["express",{"_index":1382,"title":{},"content":{"141":{"position":[[491,7]]}},"keywords":{}}],["ext",{"_index":625,"title":{},"content":{"35":{"position":[[1419,10],[1962,8]]},"264":{"position":[[108,8]]},"384":{"position":[[392,8]]},"627":{"position":[[1419,10],[1962,8]]},"835":{"position":[[108,8]]},"911":{"position":[[392,8]]},"1033":{"position":[[136,8],[247,8]]},"1064":{"position":[[1669,10]]}},"keywords":{}}],["extent",{"_index":2367,"title":{},"content":{"314":{"position":[[431,6]]},"331":{"position":[[497,6]]}},"keywords":{}}],["extr",{"_index":3831,"title":{},"content":{"569":{"position":[[964,9]]},"1089":{"position":[[964,9]]}},"keywords":{}}],["extra",{"_index":306,"title":{},"content":{"20":{"position":[[86,5],[144,5]]},"248":{"position":[[1116,5]]},"591":{"position":[[174,5]]},"620":{"position":[[86,5],[144,5]]},"818":{"position":[[1116,5]]},"1064":{"position":[[1896,5]]},"1117":{"position":[[174,5]]}},"keywords":{}}],["extramount",{"_index":323,"title":{},"content":{"20":{"position":[[398,12]]},"620":{"position":[[398,12]]}},"keywords":{}}],["extraportmap",{"_index":328,"title":{},"content":{"20":{"position":[[539,18]]},"384":{"position":[[673,19],[802,18]]},"620":{"position":[[539,18]]},"911":{"position":[[673,19],[802,18]]}},"keywords":{}}],["extras/install_mkl.sh",{"_index":2748,"title":{},"content":{"375":{"position":[[942,23]]},"902":{"position":[[942,23]]}},"keywords":{}}],["f",{"_index":347,"title":{},"content":{"21":{"position":[[220,1]]},"383":{"position":[[762,1]]},"393":{"position":[[67,1]]},"411":{"position":[[324,1]]},"621":{"position":[[220,1]]},"869":{"position":[[958,1],[1064,1]]},"910":{"position":[[762,1]]},"920":{"position":[[67,1]]}},"keywords":{}}],["f1",{"_index":504,"title":{},"content":{"28":{"position":[[797,2]]},"546":{"position":[[797,2]]},"616":{"position":[[797,2]]},"1072":{"position":[[797,2]]}},"keywords":{}}],["f2a3",{"_index":3541,"title":{},"content":{"479":{"position":[[520,4]]},"482":{"position":[[284,4]]},"485":{"position":[[272,4]]},"488":{"position":[[279,4]]},"1011":{"position":[[520,4]]},"1014":{"position":[[284,4]]},"1017":{"position":[[272,4]]},"1020":{"position":[[279,4]]}},"keywords":{}}],["f3",{"_index":505,"title":{},"content":{"28":{"position":[[814,3]]},"546":{"position":[[814,3]]},"616":{"position":[[814,3]]},"1072":{"position":[[814,3]]}},"keywords":{}}],["f821",{"_index":3645,"title":{},"content":{"511":{"position":[[1367,4]]}},"keywords":{}}],["facilit",{"_index":2598,"title":{},"content":{"341":{"position":[[559,10]]}},"keywords":{}}],["factor",{"_index":985,"title":{},"content":{"107":{"position":[[1704,8]]}},"keywords":{}}],["fail",{"_index":396,"title":{"25":{"position":[[9,4]]},"29":{"position":[[13,6]]},"543":{"position":[[9,4]]},"547":{"position":[[13,6]]},"613":{"position":[[9,4]]},"617":{"position":[[13,6]]},"1069":{"position":[[9,4]]},"1073":{"position":[[13,6]]}},"content":{"25":{"position":[[96,6],[1702,6]]},"107":{"position":[[9484,5]]},"141":{"position":[[914,5]]},"163":{"position":[[505,6]]},"272":{"position":[[208,6]]},"339":{"position":[[380,7]]},"350":{"position":[[584,5]]},"503":{"position":[[42,7]]},"543":{"position":[[96,6],[1702,6]]},"613":{"position":[[96,6],[1702,6]]},"733":{"position":[[505,6]]},"843":{"position":[[208,6]]},"1030":{"position":[[42,7]]},"1069":{"position":[[96,6],[1702,6]]}},"keywords":{}}],["failur",{"_index":1727,"title":{},"content":{"170":{"position":[[130,7]]},"195":{"position":[[196,7]]},"275":{"position":[[186,7]]},"350":{"position":[[622,7]]},"389":{"position":[[15672,7]]},"740":{"position":[[130,7]]},"778":{"position":[[196,7]]},"846":{"position":[[186,7]]},"916":{"position":[[15672,7]]}},"keywords":{}}],["fal",{"_index":266,"title":{},"content":{"17":{"position":[[291,5]]},"199":{"position":[[183,6],[1209,5]]},"384":{"position":[[192,5]]},"460":{"position":[[452,6]]},"570":{"position":[[10285,6],[16356,6]]},"609":{"position":[[291,5]]},"782":{"position":[[183,6],[1209,5]]},"911":{"position":[[192,5]]},"987":{"position":[[452,6]]},"1090":{"position":[[10285,6],[16356,6]]}},"keywords":{}}],["familiar",{"_index":1297,"title":{},"content":{"133":{"position":[[1860,8]]},"163":{"position":[[303,8]]},"733":{"position":[[303,8]]}},"keywords":{}}],["faq",{"_index":948,"title":{},"content":{"107":{"position":[[414,3],[2855,3]]},"135":{"position":[[129,3]]},"707":{"position":[[129,3]]}},"keywords":{}}],["far",{"_index":1402,"title":{},"content":{"141":{"position":[[2128,4]]},"314":{"position":[[978,3]]}},"keywords":{}}],["fault",{"_index":2242,"title":{"272":{"position":[[8,5]]},"843":{"position":[[8,5]]}},"content":{"568":{"position":[[185,5]]},"1088":{"position":[[185,5]]}},"keywords":{}}],["featur",{"_index":13,"title":{},"content":{"1":{"position":[[88,7],[403,8]]},"33":{"position":[[172,7],[400,8]]},"107":{"position":[[1274,7],[2376,8],[2614,7]]},"133":{"position":[[1104,9],[2698,7]]},"163":{"position":[[259,7]]},"246":{"position":[[256,8]]},"352":{"position":[[255,8]]},"357":{"position":[[378,8]]},"572":{"position":[[1202,9]]},"601":{"position":[[88,7],[403,8]]},"625":{"position":[[172,7],[400,8]]},"733":{"position":[[259,7]]},"816":{"position":[[256,8]]},"1092":{"position":[[1202,9]]}},"keywords":{}}],["feature.wh",{"_index":21,"title":{},"content":{"1":{"position":[[229,12]]},"601":{"position":[[229,12]]}},"keywords":{}}],["feature_s",{"_index":1777,"title":{},"content":{"171":{"position":[[1789,15]]},"199":{"position":[[721,15]]},"741":{"position":[[1801,15]]},"782":{"position":[[721,15]]}},"keywords":{}}],["features.perform",{"_index":1285,"title":{},"content":{"133":{"position":[[1330,16]]}},"keywords":{}}],["features=featur",{"_index":4084,"title":{},"content":{"572":{"position":[[1364,18]]},"1092":{"position":[[1364,18]]}},"keywords":{}}],["feb",{"_index":2700,"title":{},"content":{"372":{"position":[[853,3]]},"899":{"position":[[306,3]]}},"keywords":{}}],["feedback",{"_index":968,"title":{},"content":{"107":{"position":[[1220,8]]}},"keywords":{}}],["feel",{"_index":1341,"title":{},"content":{"136":{"position":[[557,4]]},"708":{"position":[[557,4]]}},"keywords":{}}],["fetch",{"_index":1198,"title":{},"content":{"121":{"position":[[469,7],[581,7]]},"123":{"position":[[73,5]]},"125":{"position":[[41,5]]},"389":{"position":[[6934,7],[22652,7]]},"689":{"position":[[469,7],[581,7]]},"691":{"position":[[73,5]]},"693":{"position":[[41,5]]},"916":{"position":[[6934,7],[22652,7]]}},"keywords":{}}],["few",{"_index":1329,"title":{},"content":{"136":{"position":[[170,3]]},"159":{"position":[[1687,3],[1824,3],[1872,3]]},"161":{"position":[[725,3]]},"171":{"position":[[845,3]]},"403":{"position":[[75,3]]},"708":{"position":[[170,3]]},"729":{"position":[[1687,3],[1824,3],[1872,3]]},"731":{"position":[[725,3]]},"741":{"position":[[850,3]]},"930":{"position":[[75,3]]}},"keywords":{}}],["ffff:127.0.0.0]/104",{"_index":3140,"title":{},"content":{"389":{"position":[[14427,22],[29976,22]]},"916":{"position":[[14427,22],[29976,22]]}},"keywords":{}}],["ffmpeg",{"_index":2736,"title":{},"content":{"375":{"position":[[727,6]]},"902":{"position":[[727,6]]}},"keywords":{}}],["fi",{"_index":489,"title":{},"content":{"28":{"position":[[582,2],[918,2]]},"389":{"position":[[1512,3]]},"546":{"position":[[582,2],[918,2]]},"616":{"position":[[582,2],[918,2]]},"916":{"position":[[1512,3]]},"1072":{"position":[[582,2],[918,2]]}},"keywords":{}}],["field",{"_index":1438,"title":{},"content":{"148":{"position":[[566,5]]},"159":{"position":[[236,6]]},"217":{"position":[[1471,7]]},"224":{"position":[[78,6],[95,5]]},"225":{"position":[[82,6],[99,5]]},"226":{"position":[[374,6],[391,5]]},"422":{"position":[[54,5],[248,5]]},"427":{"position":[[0,5]]},"430":{"position":[[0,5],[219,5]]},"433":{"position":[[0,5]]},"437":{"position":[[52,5],[307,5],[919,5],[1234,5]]},"445":{"position":[[0,5]]},"448":{"position":[[0,5]]},"451":{"position":[[0,5]]},"456":{"position":[[0,5]]},"460":{"position":[[0,5],[373,5],[596,5],[851,5],[1132,5],[1367,5]]},"465":{"position":[[0,5]]},"468":{"position":[[0,5]]},"471":{"position":[[0,5]]},"478":{"position":[[44,5],[246,5],[432,5]]},"481":{"position":[[0,5]]},"484":{"position":[[0,5]]},"487":{"position":[[0,5]]},"729":{"position":[[236,6]]},"787":{"position":[[1471,7]]},"809":{"position":[[78,6],[95,5]]},"810":{"position":[[103,6],[120,5]]},"811":{"position":[[374,6],[391,5]]},"949":{"position":[[54,5],[248,5]]},"954":{"position":[[0,5]]},"957":{"position":[[0,5],[219,5]]},"960":{"position":[[0,5]]},"964":{"position":[[52,5],[307,5],[919,5],[1234,5]]},"972":{"position":[[0,5]]},"975":{"position":[[0,5]]},"978":{"position":[[0,5]]},"983":{"position":[[0,5]]},"987":{"position":[[0,5],[373,5],[596,5],[851,5],[1132,5],[1367,5]]},"992":{"position":[[0,5]]},"995":{"position":[[0,5]]},"998":{"position":[[0,5]]},"1010":{"position":[[44,5],[246,5],[432,5]]},"1013":{"position":[[0,5]]},"1016":{"position":[[0,5]]},"1019":{"position":[[0,5]]}},"keywords":{}}],["field_siz",{"_index":1774,"title":{},"content":{"171":{"position":[[1754,13]]},"199":{"position":[[686,13]]},"741":{"position":[[1766,13]]},"782":{"position":[[686,13]]}},"keywords":{}}],["fig",{"_index":2147,"title":{},"content":{"231":{"position":[[904,4]]},"794":{"position":[[1157,4]]}},"keywords":{}}],["fight",{"_index":2660,"title":{},"content":{"357":{"position":[[474,9]]}},"keywords":{}}],["fil",{"_index":258,"title":{"316":{"position":[[15,4]]},"334":{"position":[[40,4]]},"347":{"position":[[24,4]]},"349":{"position":[[37,4]]},"371":{"position":[[28,5]]},"898":{"position":[[28,5]]}},"content":{"17":{"position":[[40,4],[1295,4]]},"20":{"position":[[284,5],[463,6]]},"21":{"position":[[65,4]]},"35":{"position":[[1094,6],[1485,5],[2211,5],[2332,5],[2459,5],[2584,5],[2734,6],[2862,6],[3344,4],[3408,4],[3499,4],[3530,4],[3638,5]]},"107":{"position":[[2792,4]]},"124":{"position":[[125,6]]},"149":{"position":[[71,4]]},"154":{"position":[[441,5],[456,4]]},"155":{"position":[[47,5]]},"189":{"position":[[578,4],[641,4],[1332,4]]},"215":{"position":[[1582,7]]},"216":{"position":[[102,4],[216,4],[283,6],[498,6]]},"217":{"position":[[764,5]]},"219":{"position":[[372,4]]},"248":{"position":[[966,5]]},"298":{"position":[[243,4]]},"300":{"position":[[197,4]]},"304":{"position":[[273,5]]},"305":{"position":[[67,4]]},"316":{"position":[[98,4],[176,4],[235,5]]},"317":{"position":[[165,4],[247,4]]},"320":{"position":[[1114,5],[1132,5]]},"334":{"position":[[736,4],[855,4],[1423,4],[1546,4]]},"336":{"position":[[59,4]]},"364":{"position":[[22,6]]},"371":{"position":[[64,5],[153,5]]},"375":{"position":[[1131,6]]},"383":{"position":[[591,4]]},"386":{"position":[[141,5]]},"389":{"position":[[7593,5],[15264,4],[23311,5],[30813,4]]},"403":{"position":[[113,5]]},"549":{"position":[[976,6]]},"553":{"position":[[1603,6]]},"559":{"position":[[1240,6]]},"565":{"position":[[95,5],[423,5]]},"569":{"position":[[1757,6],[1827,4]]},"572":{"position":[[83,4],[142,4],[290,4],[359,4],[524,4],[669,4],[824,4],[964,4],[1085,4],[1248,4],[1408,4],[1512,4],[1672,4],[1832,4],[1995,4]]},"609":{"position":[[40,4],[1295,4]]},"620":{"position":[[284,5],[463,6]]},"621":{"position":[[65,4]]},"627":{"position":[[1094,6],[1485,5],[2211,5],[2332,5],[2459,5],[2584,5],[2734,6],[2862,6],[3344,4],[3408,4],[3499,4],[3530,4],[3638,5]]},"692":{"position":[[125,6]]},"719":{"position":[[71,4]]},"724":{"position":[[441,5],[456,4]]},"725":{"position":[[47,5]]},"743":{"position":[[126,6]]},"772":{"position":[[578,4],[641,4],[1332,4]]},"785":{"position":[[1582,7]]},"786":{"position":[[102,4],[216,4],[283,6],[498,6]]},"787":{"position":[[764,5]]},"789":{"position":[[372,4]]},"818":{"position":[[966,5]]},"865":{"position":[[246,4]]},"867":{"position":[[197,4]]},"870":{"position":[[273,5]]},"871":{"position":[[67,4]]},"877":{"position":[[1114,5],[1132,5]]},"886":{"position":[[22,6]]},"898":{"position":[[64,5],[153,5]]},"902":{"position":[[1131,6]]},"910":{"position":[[591,4]]},"913":{"position":[[141,5]]},"916":{"position":[[7593,5],[15264,4],[23311,5],[30813,4]]},"930":{"position":[[113,5]]},"1050":{"position":[[124,6]]},"1075":{"position":[[976,6]]},"1079":{"position":[[1603,6]]},"1085":{"position":[[95,5],[423,5]]},"1089":{"position":[[1757,6],[1827,4]]},"1092":{"position":[[83,4],[142,4],[290,4],[359,4],[524,4],[669,4],[824,4],[964,4],[1085,4],[1248,4],[1408,4],[1512,4],[1672,4],[1832,4],[1995,4]]},"1094":{"position":[[1240,6]]}},"keywords":{}}],["files.us",{"_index":1792,"title":{},"content":{"173":{"position":[[126,11]]}},"keywords":{}}],["filesyst",{"_index":472,"title":{},"content":{"28":{"position":[[70,10]]},"546":{"position":[[70,10]]},"616":{"position":[[70,10]]},"1072":{"position":[[70,10]]}},"keywords":{}}],["fill",{"_index":541,"title":{},"content":{"31":{"position":[[175,4]]},"35":{"position":[[1290,4]]},"165":{"position":[[471,4]]},"389":{"position":[[250,4]]},"417":{"position":[[52,4]]},"623":{"position":[[175,4]]},"627":{"position":[[1290,4]]},"735":{"position":[[471,4]]},"916":{"position":[[250,4]]},"944":{"position":[[52,4]]}},"keywords":{}}],["filt",{"_index":4347,"title":{},"content":{"1064":{"position":[[1938,9]]}},"keywords":{}}],["fin",{"_index":1686,"title":{},"content":{"163":{"position":[[443,4]]},"350":{"position":[[35,5]]},"355":{"position":[[35,5]]},"733":{"position":[[443,4]]}},"keywords":{}}],["final",{"_index":1715,"title":{},"content":{"167":{"position":[[478,8]]},"737":{"position":[[478,8]]}},"keywords":{}}],["find",{"_index":475,"title":{},"content":{"28":{"position":[[292,4],[380,4],[1106,4],[1123,6]]},"144":{"position":[[17,7]]},"200":{"position":[[1041,5]]},"216":{"position":[[587,4]]},"262":{"position":[[91,4],[312,4]]},"328":{"position":[[281,4]]},"333":{"position":[[122,4]]},"335":{"position":[[63,4]]},"384":{"position":[[1104,4]]},"407":{"position":[[1466,4],[1638,4]]},"517":{"position":[[105,4]]},"546":{"position":[[292,4],[380,4],[1106,4],[1123,6]]},"616":{"position":[[292,4],[380,4],[1106,4],[1123,6]]},"714":{"position":[[17,7]]},"783":{"position":[[1041,5]]},"786":{"position":[[587,4]]},"833":{"position":[[91,4],[312,4]]},"911":{"position":[[1104,4]]},"934":{"position":[[1486,4],[1658,4]]},"1057":{"position":[[105,4]]},"1072":{"position":[[292,4],[380,4],[1106,4],[1123,6]]}},"keywords":{}}],["fingerprint",{"_index":2383,"title":{},"content":{"314":{"position":[[1075,12]]}},"keywords":{}}],["finish",{"_index":1720,"title":{},"content":{"168":{"position":[[185,6]]},"201":{"position":[[795,9]]},"375":{"position":[[1663,6]]},"389":{"position":[[17666,6],[32556,8]]},"503":{"position":[[30,8]]},"549":{"position":[[1688,6]]},"553":{"position":[[2086,6]]},"559":{"position":[[1723,6]]},"579":{"position":[[2266,8],[2468,8],[2670,8]]},"584":{"position":[[2126,8],[2328,8],[2530,8]]},"738":{"position":[[185,6]]},"750":{"position":[[796,9]]},"902":{"position":[[1663,6]]},"916":{"position":[[17666,6],[32556,8]]},"1030":{"position":[[30,8]]},"1075":{"position":[[1688,6]]},"1079":{"position":[[2086,6]]},"1094":{"position":[[1723,6]]},"1105":{"position":[[2266,8],[2468,8],[2670,8]]},"1110":{"position":[[2126,8],[2328,8],[2530,8]]}},"keywords":{}}],["finishedtime\":\"2021",{"_index":3478,"title":{},"content":{"443":{"position":[[430,20]]},"970":{"position":[[430,20]]}},"keywords":{}}],["finishedtime\":nul",{"_index":3440,"title":{},"content":{"438":{"position":[[865,20]]},"441":{"position":[[985,20]]},"443":{"position":[[1466,20]]},"446":{"position":[[402,20]]},"449":{"position":[[896,20]]},"452":{"position":[[377,20]]},"472":{"position":[[555,20]]},"965":{"position":[[865,20]]},"968":{"position":[[985,20]]},"970":{"position":[[1466,20]]},"973":{"position":[[402,20]]},"976":{"position":[[896,20]]},"979":{"position":[[377,20]]},"999":{"position":[[555,20]]}},"keywords":{}}],["first",{"_index":182,"title":{"120":{"position":[[47,6]]},"144":{"position":[[5,5]]},"688":{"position":[[47,6]]},"714":{"position":[[5,5]]}},"content":{"13":{"position":[[151,6]]},"15":{"position":[[176,5]]},"107":{"position":[[9049,5]]},"135":{"position":[[33,5],[137,5]]},"137":{"position":[[283,5]]},"145":{"position":[[0,5]]},"159":{"position":[[2942,6]]},"201":{"position":[[94,5]]},"215":{"position":[[0,5],[946,5]]},"329":{"position":[[108,5]]},"339":{"position":[[289,5],[434,6]]},"380":{"position":[[206,5]]},"401":{"position":[[7,5]]},"605":{"position":[[151,6]]},"607":{"position":[[176,5]]},"707":{"position":[[33,5],[137,5]]},"709":{"position":[[283,5]]},"715":{"position":[[0,5]]},"729":{"position":[[2942,6]]},"750":{"position":[[94,5]]},"785":{"position":[[0,5],[946,5]]},"907":{"position":[[206,5]]},"928":{"position":[[7,5]]}},"keywords":{}}],["fiv",{"_index":577,"title":{},"content":{"34":{"position":[[32,4]]},"626":{"position":[[32,4]]}},"keywords":{}}],["fix",{"_index":132,"title":{},"content":{"7":{"position":[[932,3]]},"572":{"position":[[2214,5]]},"596":{"position":[[932,3]]},"1092":{"position":[[2214,5]]}},"keywords":{}}],["flag",{"_index":3801,"title":{},"content":{"566":{"position":[[752,5]]},"1086":{"position":[[752,5]]}},"keywords":{}}],["flags_passthrough",{"_index":4061,"title":{},"content":{"572":{"position":[[270,19]]},"1092":{"position":[[270,19]]}},"keywords":{}}],["flake8",{"_index":3611,"title":{},"content":{"509":{"position":[[186,6]]},"1048":{"position":[[186,6]]}},"keywords":{}}],["flake8.also",{"_index":3612,"title":{},"content":{"509":{"position":[[236,13]]},"1048":{"position":[[236,13]]}},"keywords":{}}],["flavor",{"_index":1079,"title":{},"content":{"107":{"position":[[6258,7]]}},"keywords":{}}],["float",{"_index":3670,"title":{"519":{"position":[[38,6]]},"1059":{"position":[[38,6]]}},"content":{},"keywords":{}}],["float).step",{"_index":4285,"title":{},"content":{"1037":{"position":[[95,12]]}},"keywords":{}}],["float.step",{"_index":4290,"title":{},"content":{"1038":{"position":[[107,10]]}},"keywords":{}}],["flow",{"_index":1616,"title":{"186":{"position":[[0,5]]},"187":{"position":[[15,6]]},"196":{"position":[[7,5]]},"769":{"position":[[0,5]]},"770":{"position":[[15,6]]},"779":{"position":[[7,5]]}},"content":{"159":{"position":[[2658,6]]},"181":{"position":[[56,5]]},"200":{"position":[[112,4]]},"729":{"position":[[2658,6]]},"764":{"position":[[56,5]]},"783":{"position":[[112,4]]}},"keywords":{}}],["flow.appspot.com/#draw",{"_index":1838,"title":{},"content":{"179":{"position":[[1017,22]]},"749":{"position":[[1022,22]]}},"keywords":{}}],["flows/transform",{"_index":1609,"title":{},"content":{"159":{"position":[[2435,15]]},"729":{"position":[[2435,15]]}},"keywords":{}}],["fluent",{"_index":2445,"title":{},"content":{"322":{"position":[[118,6]]},"879":{"position":[[118,6]]}},"keywords":{}}],["fmt",{"_index":3616,"title":{},"content":{"509":{"position":[[506,4],[559,4]]},"1048":{"position":[[506,4],[559,4]]}},"keywords":{}}],["focu",{"_index":1704,"title":{},"content":{"165":{"position":[[497,5]]},"328":{"position":[[22,5]]},"735":{"position":[[497,5]]}},"keywords":{}}],["fold",{"_index":439,"title":{},"content":{"25":{"position":[[1985,6]]},"210":{"position":[[280,7]]},"217":{"position":[[1204,6]]},"219":{"position":[[229,7]]},"543":{"position":[[1985,6]]},"613":{"position":[[1985,6]]},"759":{"position":[[280,7]]},"787":{"position":[[1204,6]]},"789":{"position":[[229,7]]},"1069":{"position":[[1985,6]]}},"keywords":{}}],["folk",{"_index":2629,"title":{},"content":{"352":{"position":[[106,6]]},"357":{"position":[[231,6]]}},"keywords":{}}],["follow",{"_index":19,"title":{},"content":{"1":{"position":[[173,6],[342,6]]},"20":{"position":[[294,9],[735,9]]},"27":{"position":[[41,9]]},"35":{"position":[[128,9]]},"107":{"position":[[947,9]]},"119":{"position":[[10,7]]},"132":{"position":[[7,9]]},"133":{"position":[[47,9]]},"141":{"position":[[1873,9]]},"143":{"position":[[62,9]]},"145":{"position":[[251,9]]},"148":{"position":[[660,6]]},"156":{"position":[[389,9],[888,9]]},"181":{"position":[[112,9],[1144,9]]},"211":{"position":[[349,6]]},"215":{"position":[[1058,9]]},"217":{"position":[[59,9]]},"301":{"position":[[21,6]]},"312":{"position":[[73,9]]},"314":{"position":[[1843,9],[2468,9]]},"316":{"position":[[66,8]]},"317":{"position":[[133,8]]},"320":{"position":[[1078,9]]},"325":{"position":[[76,6]]},"328":{"position":[[263,9]]},"330":{"position":[[101,8]]},"331":{"position":[[29,9],[276,6],[2366,9]]},"333":{"position":[[12,9],[244,8]]},"336":{"position":[[92,9]]},"343":{"position":[[53,8]]},"352":{"position":[[271,8]]},"376":{"position":[[12,9]]},"377":{"position":[[192,9]]},"384":{"position":[[990,9],[1083,9]]},"386":{"position":[[854,9]]},"389":{"position":[[1995,9],[2842,9],[15720,9],[17837,9],[18684,9]]},"391":{"position":[[148,9]]},"393":{"position":[[33,9]]},"394":{"position":[[8,9]]},"395":{"position":[[61,9]]},"402":{"position":[[182,6]]},"403":{"position":[[282,6]]},"406":{"position":[[307,6]]},"475":{"position":[[8,9]]},"507":{"position":[[131,9]]},"508":{"position":[[153,9]]},"509":{"position":[[487,9]]},"512":{"position":[[210,6]]},"545":{"position":[[41,9]]},"549":{"position":[[1327,9]]},"551":{"position":[[103,9]]},"556":{"position":[[105,9]]},"560":{"position":[[12,9]]},"562":{"position":[[80,9]]},"565":{"position":[[413,9]]},"568":{"position":[[366,8],[513,9]]},"575":{"position":[[9,6]]},"601":{"position":[[173,6],[342,6]]},"615":{"position":[[41,9]]},"620":{"position":[[294,9],[735,9]]},"627":{"position":[[128,9]]},"687":{"position":[[10,7]]},"700":{"position":[[7,9]]},"713":{"position":[[62,9]]},"715":{"position":[[251,9]]},"726":{"position":[[389,9],[888,9]]},"760":{"position":[[349,6]]},"764":{"position":[[112,9],[1149,9]]},"785":{"position":[[1058,9]]},"787":{"position":[[59,9]]},"868":{"position":[[21,6]]},"877":{"position":[[1078,9]]},"895":{"position":[[76,6]]},"903":{"position":[[12,9]]},"904":{"position":[[192,9]]},"911":{"position":[[990,9],[1083,9]]},"913":{"position":[[854,9]]},"916":{"position":[[1995,9],[2842,9],[15720,9],[17837,9],[18684,9]]},"918":{"position":[[148,9]]},"920":{"position":[[33,9]]},"921":{"position":[[8,9]]},"922":{"position":[[61,9]]},"929":{"position":[[182,6]]},"930":{"position":[[282,6]]},"933":{"position":[[307,6]]},"1002":{"position":[[8,9]]},"1046":{"position":[[131,9]]},"1047":{"position":[[153,9]]},"1048":{"position":[[487,9]]},"1051":{"position":[[198,6]]},"1064":{"position":[[93,9],[895,9],[1820,9]]},"1071":{"position":[[41,9]]},"1075":{"position":[[1327,9]]},"1077":{"position":[[103,9]]},"1082":{"position":[[105,9]]},"1085":{"position":[[413,9]]},"1088":{"position":[[366,8],[513,9]]},"1095":{"position":[[12,9]]},"1097":{"position":[[80,9]]},"1101":{"position":[[9,6]]}},"keywords":{}}],["forc",{"_index":1676,"title":{"163":{"position":[[27,6]]},"733":{"position":[[27,6]]}},"content":{"163":{"position":[[61,6]]},"733":{"position":[[61,6]]}},"keywords":{}}],["forg",{"_index":1531,"title":{},"content":{"155":{"position":[[407,6]]},"725":{"position":[[407,6]]}},"keywords":{}}],["forget",{"_index":1324,"title":{},"content":{"135":{"position":[[407,6]]},"707":{"position":[[407,6]]}},"keywords":{}}],["fork",{"_index":606,"title":{"120":{"position":[[7,4]]},"126":{"position":[[47,4]]},"688":{"position":[[7,4]]},"694":{"position":[[47,4]]}},"content":{"35":{"position":[[607,5],[3523,4]]},"55":{"position":[[1646,4]]},"119":{"position":[[18,4]]},"120":{"position":[[51,4],[75,4]]},"128":{"position":[[11,4]]},"627":{"position":[[607,5],[3523,4]]},"647":{"position":[[1646,4]]},"687":{"position":[[18,4]]},"688":{"position":[[51,4],[75,4]]},"696":{"position":[[11,4]]}},"keywords":{}}],["form",{"_index":969,"title":{},"content":{"107":{"position":[[1250,4],[2158,4],[3034,4],[4622,4],[5559,5],[7490,4]]},"312":{"position":[[95,6]]},"406":{"position":[[197,4]]},"417":{"position":[[61,4]]},"933":{"position":[[197,4]]},"944":{"position":[[61,4]]}},"keywords":{}}],["format",{"_index":280,"title":{},"content":{"17":{"position":[[601,6],[1014,6]]},"35":{"position":[[3425,6],[3504,8]]},"132":{"position":[[84,7]]},"159":{"position":[[2288,6],[2372,6]]},"199":{"position":[[788,8],[1130,7],[1286,6]]},"304":{"position":[[127,6]]},"507":{"position":[[230,6]]},"509":{"position":[[50,6],[471,7],[527,7],[535,8]]},"517":{"position":[[266,6]]},"609":{"position":[[601,6],[1014,6]]},"627":{"position":[[3425,6],[3504,8]]},"700":{"position":[[84,7]]},"729":{"position":[[2288,6],[2372,6]]},"782":{"position":[[788,8],[1130,7],[1286,6]]},"870":{"position":[[127,6]]},"1046":{"position":[[230,6]]},"1048":{"position":[[50,6],[471,7],[527,7],[535,8]]},"1057":{"position":[[266,6]]}},"keywords":{}}],["format.answ",{"_index":1606,"title":{},"content":{"159":{"position":[[2144,13]]},"729":{"position":[[2144,13]]}},"keywords":{}}],["format.sh",{"_index":3610,"title":{},"content":{"509":{"position":[[167,9]]},"1048":{"position":[[167,9]]}},"keywords":{}}],["format=tar.gz",{"_index":2590,"title":{},"content":{"340":{"position":[[173,13]]}},"keywords":{}}],["formatt",{"_index":2118,"title":{},"content":{"226":{"position":[[706,10]]},"811":{"position":[[706,10]]}},"keywords":{}}],["forum",{"_index":974,"title":{},"content":{"107":{"position":[[1403,7]]}},"keywords":{}}],["forward",{"_index":142,"title":{},"content":{"8":{"position":[[42,10],[208,10],[234,7]]},"20":{"position":[[172,7]]},"320":{"position":[[98,7],[124,7]]},"324":{"position":[[417,10]]},"325":{"position":[[184,7],[210,7]]},"402":{"position":[[47,7]]},"413":{"position":[[140,10],[164,7]]},"597":{"position":[[42,10],[208,10],[234,7]]},"620":{"position":[[172,7]]},"869":{"position":[[1251,10],[1275,7]]},"877":{"position":[[98,7],[124,7]]},"894":{"position":[[417,10]]},"895":{"position":[[184,7],[210,7]]},"929":{"position":[[47,7]]},"940":{"position":[[5,10],[29,10],[55,7]]}},"keywords":{}}],["found",{"_index":497,"title":{},"content":{"28":{"position":[[683,6],[1075,5]]},"133":{"position":[[1135,5]]},"136":{"position":[[436,5]]},"154":{"position":[[214,5]]},"179":{"position":[[1635,5]]},"496":{"position":[[110,5]]},"497":{"position":[[138,5]]},"546":{"position":[[683,6],[1075,5]]},"570":{"position":[[1456,5],[1702,5],[10873,5],[11119,5]]},"616":{"position":[[683,6],[1075,5]]},"708":{"position":[[436,5]]},"724":{"position":[[214,5]]},"749":{"position":[[1640,5]]},"1023":{"position":[[110,5]]},"1024":{"position":[[138,5]]},"1072":{"position":[[683,6],[1075,5]]},"1090":{"position":[[1456,5],[1702,5],[10873,5],[11119,5]]}},"keywords":{}}],["foundat",{"_index":943,"title":{},"content":{"107":{"position":[[253,11],[269,10],[403,10],[463,11],[2822,11],[4904,10]]},"117":{"position":[[225,10]]},"133":{"position":[[129,11]]},"314":{"position":[[318,11]]},"331":{"position":[[384,11]]},"685":{"position":[[225,10]]}},"keywords":{}}],["four",{"_index":559,"title":{},"content":{"33":{"position":[[111,4]]},"35":{"position":[[2925,4]]},"107":{"position":[[6253,4]]},"625":{"position":[[111,4]]},"627":{"position":[[2925,4]]}},"keywords":{}}],["fragment",{"_index":1591,"title":{},"content":{"159":{"position":[[1521,10]]},"729":{"position":[[1521,10]]}},"keywords":{}}],["framework",{"_index":588,"title":{},"content":{"35":{"position":[[230,10],[3059,10]]},"77":{"position":[[155,12],[913,12]]},"78":{"position":[[155,12],[1060,12]]},"79":{"position":[[422,12],[1073,12]]},"80":{"position":[[455,12]]},"81":{"position":[[163,12],[766,12]]},"82":{"position":[[458,12]]},"86":{"position":[[781,12]]},"89":{"position":[[778,12]]},"159":{"position":[[1712,10],[1775,11],[2235,10]]},"222":{"position":[[89,11],[148,9],[323,11]]},"223":{"position":[[39,10]]},"224":{"position":[[59,10],[158,9],[314,10]]},"259":{"position":[[674,11]]},"368":{"position":[[318,10]]},"437":{"position":[[402,9],[430,10]]},"438":{"position":[[121,12]]},"441":{"position":[[121,12]]},"449":{"position":[[122,12]]},"460":{"position":[[946,9],[974,10]]},"461":{"position":[[749,12]]},"466":{"position":[[754,12]]},"492":{"position":[[81,12]]},"496":{"position":[[340,12]]},"497":{"position":[[347,12]]},"579":{"position":[[363,9]]},"580":{"position":[[257,9]]},"584":{"position":[[365,9]]},"585":{"position":[[262,9]]},"589":{"position":[[303,9]]},"590":{"position":[[338,9]]},"627":{"position":[[230,10],[3059,10]]},"669":{"position":[[781,12]]},"672":{"position":[[778,12]]},"676":{"position":[[155,12],[913,12]]},"677":{"position":[[155,12],[1060,12]]},"678":{"position":[[422,12],[1073,12]]},"679":{"position":[[455,12]]},"680":{"position":[[163,12],[766,12]]},"681":{"position":[[458,12]]},"729":{"position":[[1712,10],[1775,11],[2235,10]]},"807":{"position":[[89,11],[148,9],[323,11]]},"808":{"position":[[39,10]]},"809":{"position":[[59,10],[158,9],[314,10]]},"830":{"position":[[674,11]]},"891":{"position":[[318,10]]},"964":{"position":[[402,9],[430,10]]},"965":{"position":[[121,12]]},"968":{"position":[[121,12]]},"976":{"position":[[122,12]]},"987":{"position":[[946,9],[974,10]]},"988":{"position":[[749,12]]},"993":{"position":[[754,12]]},"1006":{"position":[[81,12]]},"1023":{"position":[[340,12]]},"1024":{"position":[[347,12]]},"1105":{"position":[[363,9]]},"1106":{"position":[[257,9]]},"1110":{"position":[[365,9]]},"1111":{"position":[[262,9]]},"1115":{"position":[[303,9]]},"1116":{"position":[[338,9]]}},"keywords":{}}],["framework\":\"tensorflow",{"_index":3441,"title":{},"content":{"438":{"position":[[951,25]]},"441":{"position":[[1071,25]]},"443":{"position":[[544,25],[1552,25]]},"446":{"position":[[488,25]]},"449":{"position":[[982,25]]},"452":{"position":[[463,25]]},"461":{"position":[[2317,25]]},"463":{"position":[[1319,25]]},"466":{"position":[[2347,25]]},"469":{"position":[[1343,25]]},"472":{"position":[[642,25]]},"965":{"position":[[951,25]]},"968":{"position":[[1071,25]]},"970":{"position":[[544,25],[1552,25]]},"973":{"position":[[488,25]]},"976":{"position":[[982,25]]},"979":{"position":[[463,25]]},"988":{"position":[[2317,25]]},"990":{"position":[[1319,25]]},"993":{"position":[[2347,25]]},"996":{"position":[[1343,25]]},"999":{"position":[[642,25]]}},"keywords":{}}],["framework='tensorflow",{"_index":3270,"title":{},"content":{"407":{"position":[[792,23]]},"934":{"position":[[812,23]]}},"keywords":{}}],["free",{"_index":2363,"title":{},"content":{"314":{"position":[[304,4],[343,4],[366,4]]},"331":{"position":[[370,4],[409,4],[432,4]]},"570":{"position":[[1596,4],[1842,4],[11013,4],[11259,4]]},"1090":{"position":[[1596,4],[1842,4],[11013,4],[11259,4]]}},"keywords":{}}],["frequent",{"_index":1721,"title":{},"content":{"168":{"position":[[232,10]]},"246":{"position":[[197,8]]},"738":{"position":[[232,10]]},"816":{"position":[[197,8]]}},"keywords":{}}],["fri",{"_index":62,"title":{},"content":{"6":{"position":[[152,3]]},"595":{"position":[[152,3]]}},"keywords":{}}],["fro",{"_index":1214,"title":{},"content":{"123":{"position":[[137,3]]},"691":{"position":[[137,3]]}},"keywords":{}}],["front",{"_index":2168,"title":{},"content":{"248":{"position":[[145,5]]},"368":{"position":[[280,5]]},"818":{"position":[[145,5]]},"891":{"position":[[280,5]]}},"keywords":{}}],["frontend",{"_index":2331,"title":{"318":{"position":[[11,8]]},"322":{"position":[[10,8]]},"875":{"position":[[11,8]]},"879":{"position":[[10,8]]}},"content":{"301":{"position":[[449,8]]},"868":{"position":[[433,8]]}},"keywords":{}}],["full",{"_index":1862,"title":{},"content":{"182":{"position":[[14,4]]},"246":{"position":[[99,4]]},"248":{"position":[[614,4]]},"331":{"position":[[111,4],[318,4]]},"333":{"position":[[163,4]]},"765":{"position":[[14,4]]},"816":{"position":[[99,4]]},"818":{"position":[[614,4]]}},"keywords":{}}],["fulli",{"_index":1381,"title":{},"content":{"141":{"position":[[485,5]]},"314":{"position":[[1202,5]]}},"keywords":{}}],["function",{"_index":1703,"title":{"515":{"position":[[0,9]]},"1055":{"position":[[0,9]]}},"content":{"165":{"position":[[485,8]]},"170":{"position":[[371,9]]},"248":{"position":[[155,9],[310,9]]},"249":{"position":[[17,8]]},"267":{"position":[[164,8],[271,8]]},"276":{"position":[[116,9]]},"322":{"position":[[237,9]]},"363":{"position":[[15,8]]},"369":{"position":[[92,9]]},"735":{"position":[[485,8]]},"740":{"position":[[371,9]]},"818":{"position":[[155,9],[310,9]]},"819":{"position":[[17,8]]},"838":{"position":[[164,8],[271,8]]},"847":{"position":[[116,9]]},"879":{"position":[[237,9]]},"885":{"position":[[15,8]]},"892":{"position":[[92,9]]},"1064":{"position":[[1902,10]]}},"keywords":{}}],["funtion",{"_index":2319,"title":{},"content":{"299":{"position":[[151,7]]},"866":{"position":[[151,7]]}},"keywords":{}}],["furth",{"_index":1182,"title":{},"content":{"117":{"position":[[236,8]]},"181":{"position":[[2048,7]]},"352":{"position":[[1493,7]]},"685":{"position":[[236,8]]},"764":{"position":[[2061,7]]}},"keywords":{}}],["futur",{"_index":173,"title":{},"content":{"12":{"position":[[97,8]]},"194":{"position":[[1184,7]]},"219":{"position":[[415,7]]},"591":{"position":[[345,6]]},"604":{"position":[[97,8]]},"777":{"position":[[1464,7]]},"789":{"position":[[415,7]]},"1117":{"position":[[345,6]]}},"keywords":{}}],["g",{"_index":2720,"title":{},"content":{"375":{"position":[[219,4],[573,3]]},"902":{"position":[[219,4],[573,3]]}},"keywords":{}}],["g+rwx",{"_index":436,"title":{},"content":{"25":{"position":[[1898,5],[2053,5]]},"543":{"position":[[1898,5],[2053,5]]},"613":{"position":[[1898,5],[2053,5]]},"1069":{"position":[[1898,5],[2053,5]]}},"keywords":{}}],["g2ntd",{"_index":4256,"title":{},"content":{"939":{"position":[[383,5]]}},"keywords":{}}],["gain",{"_index":1140,"title":{},"content":{"107":{"position":[[9493,4]]},"133":{"position":[[350,6]]},"331":{"position":[[1722,4],[1978,4]]}},"keywords":{}}],["gap",{"_index":1669,"title":{},"content":{"162":{"position":[[580,4]]},"732":{"position":[[580,4]]}},"keywords":{}}],["garbl",{"_index":2474,"title":{},"content":{"331":{"position":[[257,7]]}},"keywords":{}}],["gb",{"_index":2067,"title":{},"content":{"216":{"position":[[492,5]]},"786":{"position":[[492,5]]}},"keywords":{}}],["gbdt",{"_index":1575,"title":{},"content":{"159":{"position":[[508,5]]},"729":{"position":[[508,5]]}},"keywords":{}}],["gce",{"_index":2178,"title":{},"content":{"251":{"position":[[159,3]]},"821":{"position":[[166,3]]}},"keywords":{}}],["gce/aws/azur",{"_index":2167,"title":{},"content":{"246":{"position":[[645,14]]},"816":{"position":[[650,14]]}},"keywords":{}}],["gcloud",{"_index":3812,"title":{},"content":{"568":{"position":[[624,6]]},"1088":{"position":[[624,6]]}},"keywords":{}}],["gcp",{"_index":2179,"title":{"255":{"position":[[12,3]]},"826":{"position":[[12,3]]}},"content":{},"keywords":{}}],["gen",{"_index":254,"title":{"221":{"position":[[0,7]]},"331":{"position":[[4,8]]},"332":{"position":[[15,9]]},"343":{"position":[[22,9]]},"511":{"position":[[0,8]]},"806":{"position":[[0,7]]},"1050":{"position":[[0,8]]}},"content":{"16":{"position":[[774,8]]},"107":{"position":[[6325,8],[6601,8]]},"133":{"position":[[675,9]]},"135":{"position":[[53,7],[463,9]]},"159":{"position":[[2358,7]]},"167":{"position":[[189,9]]},"171":{"position":[[274,11]]},"173":{"position":[[38,9]]},"181":{"position":[[1881,9]]},"195":{"position":[[307,7]]},"215":{"position":[[1557,8]]},"217":{"position":[[1722,10]]},"222":{"position":[[246,7]]},"230":{"position":[[751,7]]},"304":{"position":[[71,10],[240,8]]},"331":{"position":[[323,3],[1498,8],[1652,11],[1693,9],[1754,8],[1908,11],[1949,9]]},"334":{"position":[[719,9],[1406,9]]},"357":{"position":[[76,9]]},"508":{"position":[[70,8]]},"511":{"position":[[28,8],[111,8],[1122,8]]},"565":{"position":[[77,8],[212,8]]},"608":{"position":[[774,8]]},"707":{"position":[[53,7],[463,9]]},"729":{"position":[[2358,7]]},"737":{"position":[[189,9]]},"741":{"position":[[274,11]]},"743":{"position":[[38,9]]},"764":{"position":[[1894,9]]},"778":{"position":[[307,7]]},"785":{"position":[[1557,8]]},"787":{"position":[[1722,10]]},"793":{"position":[[751,7]]},"807":{"position":[[246,7]]},"870":{"position":[[71,10],[240,8]]},"1034":{"position":[[294,10]]},"1047":{"position":[[70,8]]},"1050":{"position":[[28,8],[181,8]]},"1085":{"position":[[77,8],[212,8]]}},"keywords":{}}],["generate_cifar10_tfrecords.pi",{"_index":3793,"title":{},"content":{"565":{"position":[[294,29]]},"1085":{"position":[[294,29]]}},"keywords":{}}],["generatorto",{"_index":3620,"title":{},"content":{"511":{"position":[[16,11]]},"1050":{"position":[[16,11]]}},"keywords":{}}],["get",{"_index":2322,"title":{},"content":{"301":{"position":[[28,7]]},"868":{"position":[[28,7]]}},"keywords":{}}],["get:1",{"_index":2930,"title":{},"content":{"389":{"position":[[3483,5],[19307,5]]},"916":{"position":[[3483,5],[19307,5]]}},"keywords":{}}],["get:10",{"_index":2963,"title":{},"content":{"389":{"position":[[4434,6],[20258,6]]},"916":{"position":[[4434,6],[20258,6]]}},"keywords":{}}],["get:11",{"_index":2967,"title":{},"content":{"389":{"position":[[4550,6],[20374,6]]},"916":{"position":[[4550,6],[20374,6]]}},"keywords":{}}],["get:12",{"_index":2969,"title":{},"content":{"389":{"position":[[4666,6],[20490,6]]},"916":{"position":[[4666,6],[20490,6]]}},"keywords":{}}],["get:13",{"_index":2973,"title":{},"content":{"389":{"position":[[4768,6],[20592,6]]},"916":{"position":[[4768,6],[20592,6]]}},"keywords":{}}],["get:14",{"_index":2976,"title":{},"content":{"389":{"position":[[4852,6],[20676,6]]},"916":{"position":[[4852,6],[20676,6]]}},"keywords":{}}],["get:15",{"_index":2979,"title":{},"content":{"389":{"position":[[4944,6],[20768,6]]},"916":{"position":[[4944,6],[20768,6]]}},"keywords":{}}],["get:16",{"_index":2983,"title":{},"content":{"389":{"position":[[5059,6],[20883,6]]},"916":{"position":[[5059,6],[20883,6]]}},"keywords":{}}],["get:17",{"_index":2987,"title":{},"content":{"389":{"position":[[5156,6],[20980,6]]},"916":{"position":[[5156,6],[20980,6]]}},"keywords":{}}],["get:18",{"_index":2990,"title":{},"content":{"389":{"position":[[5244,6],[21068,6]]},"916":{"position":[[5244,6],[21068,6]]}},"keywords":{}}],["get:19",{"_index":2993,"title":{},"content":{"389":{"position":[[5351,6],[21175,6]]},"916":{"position":[[5351,6],[21175,6]]}},"keywords":{}}],["get:2",{"_index":2935,"title":{},"content":{"389":{"position":[[3576,5],[19400,5]]},"916":{"position":[[3576,5],[19400,5]]}},"keywords":{}}],["get:20",{"_index":2997,"title":{},"content":{"389":{"position":[[5457,6],[21281,6]]},"916":{"position":[[5457,6],[21281,6]]}},"keywords":{}}],["get:21",{"_index":3002,"title":{},"content":{"389":{"position":[[5560,6],[21384,6]]},"916":{"position":[[5560,6],[21384,6]]}},"keywords":{}}],["get:22",{"_index":3004,"title":{},"content":{"389":{"position":[[5666,6],[21490,6]]},"916":{"position":[[5666,6],[21490,6]]}},"keywords":{}}],["get:23",{"_index":3007,"title":{},"content":{"389":{"position":[[5758,6],[21582,6]]},"916":{"position":[[5758,6],[21582,6]]}},"keywords":{}}],["get:24",{"_index":3009,"title":{},"content":{"389":{"position":[[5861,6],[21685,6]]},"916":{"position":[[5861,6],[21685,6]]}},"keywords":{}}],["get:25",{"_index":3011,"title":{},"content":{"389":{"position":[[5967,6],[21791,6]]},"916":{"position":[[5967,6],[21791,6]]}},"keywords":{}}],["get:26",{"_index":3015,"title":{},"content":{"389":{"position":[[6073,6],[21912,6]]},"916":{"position":[[6073,6],[21912,6]]}},"keywords":{}}],["get:27",{"_index":3017,"title":{},"content":{"389":{"position":[[6194,6],[22027,6]]},"916":{"position":[[6194,6],[22027,6]]}},"keywords":{}}],["get:28",{"_index":3019,"title":{},"content":{"389":{"position":[[6309,6],[22130,6]]},"916":{"position":[[6309,6],[22130,6]]}},"keywords":{}}],["get:29",{"_index":3022,"title":{},"content":{"389":{"position":[[6412,6],[22226,6]]},"916":{"position":[[6412,6],[22226,6]]}},"keywords":{}}],["get:3",{"_index":2938,"title":{},"content":{"389":{"position":[[3665,5],[19489,5]]},"916":{"position":[[3665,5],[19489,5]]}},"keywords":{}}],["get:30",{"_index":3025,"title":{},"content":{"389":{"position":[[6508,6],[22319,6]]},"916":{"position":[[6508,6],[22319,6]]}},"keywords":{}}],["get:31",{"_index":3028,"title":{},"content":{"389":{"position":[[6601,6],[22439,6]]},"916":{"position":[[6601,6],[22439,6]]}},"keywords":{}}],["get:32",{"_index":3031,"title":{},"content":{"389":{"position":[[6721,6],[22553,6]]},"916":{"position":[[6721,6],[22553,6]]}},"keywords":{}}],["get:33",{"_index":3035,"title":{},"content":{"389":{"position":[[6835,6]]},"916":{"position":[[6835,6]]}},"keywords":{}}],["get:4",{"_index":2942,"title":{},"content":{"389":{"position":[[3768,5],[19592,5]]},"916":{"position":[[3768,5],[19592,5]]}},"keywords":{}}],["get:5",{"_index":2944,"title":{},"content":{"389":{"position":[[3867,5],[19691,5]]},"916":{"position":[[3867,5],[19691,5]]}},"keywords":{}}],["get:6",{"_index":2948,"title":{},"content":{"389":{"position":[[3964,5],[19788,5]]},"916":{"position":[[3964,5],[19788,5]]}},"keywords":{}}],["get:7",{"_index":2954,"title":{},"content":{"389":{"position":[[4076,5],[19900,5]]},"916":{"position":[[4076,5],[19900,5]]}},"keywords":{}}],["get:8",{"_index":2957,"title":{},"content":{"389":{"position":[[4182,5],[20006,5]]},"916":{"position":[[4182,5],[20006,5]]}},"keywords":{}}],["get:9",{"_index":2961,"title":{},"content":{"389":{"position":[[4308,5],[20132,5]]},"916":{"position":[[4308,5],[20132,5]]}},"keywords":{}}],["get_experiment(id",{"_index":3567,"title":{"498":{"position":[[0,18]]},"1025":{"position":[[0,18]]}},"content":{},"keywords":{}}],["get_log(id",{"_index":3576,"title":{"501":{"position":[[0,11]]},"1028":{"position":[[0,11]]}},"content":{},"keywords":{}}],["getmysqljar",{"_index":226,"title":{},"content":{"15":{"position":[[214,12],[304,11]]},"607":{"position":[[214,12],[304,11]]}},"keywords":{}}],["getqueri",{"_index":2223,"title":{},"content":{"269":{"position":[[519,9]]},"840":{"position":[[519,9]]}},"keywords":{}}],["ghz",{"_index":3878,"title":{},"content":{"570":{"position":[[1538,5],[1784,5],[10955,5],[11201,5]]},"1090":{"position":[[1538,5],[1784,5],[10955,5],[11201,5]]}},"keywords":{}}],["git",{"_index":55,"title":{"346":{"position":[[22,3]]}},"content":{"6":{"position":[[2,3]]},"35":{"position":[[3513,3]]},"55":{"position":[[1614,3]]},"121":{"position":[[44,3],[101,3],[184,3],[250,3],[351,3],[615,3]]},"123":{"position":[[49,3],[69,3],[88,3],[172,3],[224,3]]},"124":{"position":[[108,3],[132,3],[203,3]]},"125":{"position":[[37,3],[56,3],[106,3],[157,3]]},"126":{"position":[[0,3]]},"138":{"position":[[15,3]]},"176":{"position":[[334,3]]},"182":{"position":[[887,4],[1277,3]]},"216":{"position":[[693,3]]},"217":{"position":[[117,3],[196,4],[1284,3],[1496,3],[2036,3],[2056,3],[2074,4],[2289,3]]},"339":{"position":[[234,3],[443,3]]},"340":{"position":[[159,3]]},"346":{"position":[[0,3]]},"352":{"position":[[416,3]]},"372":{"position":[[64,4],[611,4],[882,4]]},"375":{"position":[[647,3],[823,3]]},"380":{"position":[[0,3]]},"386":{"position":[[475,3]]},"401":{"position":[[121,3],[220,3]]},"411":{"position":[[18,3]]},"549":{"position":[[597,3]]},"553":{"position":[[553,3],[1204,3],[1273,3],[1490,3]]},"595":{"position":[[2,3]]},"627":{"position":[[3513,3]]},"647":{"position":[[1614,3]]},"689":{"position":[[44,3],[101,3],[184,3],[250,3],[351,3],[615,3]]},"691":{"position":[[49,3],[69,3],[88,3],[172,3],[224,3]]},"692":{"position":[[108,3],[132,3],[203,3]]},"693":{"position":[[37,3],[56,3],[106,3],[157,3]]},"694":{"position":[[0,3]]},"710":{"position":[[15,3]]},"746":{"position":[[335,3]]},"765":{"position":[[887,4],[1277,3]]},"786":{"position":[[693,3]]},"787":{"position":[[117,3],[196,4],[1284,3],[1496,3],[2036,3],[2056,3],[2074,4],[2289,3]]},"899":{"position":[[64,4],[335,4]]},"902":{"position":[[647,3],[823,3]]},"907":{"position":[[0,3]]},"913":{"position":[[475,3]]},"928":{"position":[[121,3],[220,3]]},"938":{"position":[[20,3]]},"1075":{"position":[[597,3]]},"1079":{"position":[[553,3],[1204,3],[1273,3],[1490,3]]}},"keywords":{}}],["git@github.com:${username}/submarine.git",{"_index":1188,"title":{},"content":{"121":{"position":[[54,40],[428,40],[486,40]]},"689":{"position":[[54,40],[428,40],[486,40]]}},"keywords":{}}],["git@github.com:apache/submarine.git",{"_index":1192,"title":{},"content":{"121":{"position":[[208,35],[545,35]]},"689":{"position":[[208,35],[545,35]]}},"keywords":{}}],["git_tag",{"_index":2581,"title":{},"content":{"339":{"position":[[245,8]]},"340":{"position":[[348,8]]}},"keywords":{}}],["git_tag=${release_v",{"_index":2579,"title":{},"content":{"339":{"position":[[191,26]]}},"keywords":{}}],["github",{"_index":1185,"title":{"120":{"position":[[29,6]]},"127":{"position":[[13,6]]},"128":{"position":[[32,6]]},"129":{"position":[[14,6]]},"321":{"position":[[16,6]]},"326":{"position":[[16,6]]},"335":{"position":[[29,6]]},"688":{"position":[[29,6]]},"695":{"position":[[13,6]]},"696":{"position":[[32,6]]},"697":{"position":[[14,6]]},"878":{"position":[[16,6]]},"896":{"position":[[16,6]]}},"content":{"121":{"position":[[18,6]]},"144":{"position":[[248,6]]},"190":{"position":[[682,7]]},"244":{"position":[[74,6]]},"295":{"position":[[115,7]]},"303":{"position":[[64,7]]},"319":{"position":[[169,6]]},"321":{"position":[[30,6]]},"324":{"position":[[167,6]]},"326":{"position":[[31,6]]},"335":{"position":[[180,6]]},"362":{"position":[[78,7]]},"401":{"position":[[29,6]]},"437":{"position":[[1190,7]]},"513":{"position":[[188,6]]},"689":{"position":[[18,6]]},"714":{"position":[[248,6]]},"773":{"position":[[682,7]]},"814":{"position":[[74,6]]},"862":{"position":[[115,7]]},"869":{"position":[[1819,7]]},"876":{"position":[[169,6]]},"878":{"position":[[30,6]]},"884":{"position":[[78,7]]},"894":{"position":[[167,6]]},"896":{"position":[[31,6]]},"928":{"position":[[29,6]]},"964":{"position":[[1190,7]]},"1052":{"position":[[188,6]]}},"keywords":{}}],["github/gitlab",{"_index":602,"title":{},"content":{"35":{"position":[[550,14],[3587,13]]},"55":{"position":[[215,24],[265,13],[1628,13]]},"627":{"position":[[550,14],[3587,13]]},"647":{"position":[[215,24],[265,13],[1628,13]]}},"keywords":{}}],["githubpul",{"_index":1338,"title":{},"content":{"136":{"position":[[449,10]]},"708":{"position":[[449,10]]}},"keywords":{}}],["git|hdfs|nfs|s3",{"_index":3426,"title":{},"content":{"437":{"position":[[1277,17]]},"964":{"position":[[1277,17]]}},"keywords":{}}],["giv",{"_index":281,"title":{},"content":{"17":{"position":[[615,5],[1028,5]]},"107":{"position":[[7842,5]]},"246":{"position":[[94,4]]},"331":{"position":[[1669,5],[1925,5]]},"609":{"position":[[615,5],[1028,5]]},"816":{"position":[[94,4]]}},"keywords":{}}],["glob",{"_index":4154,"title":{},"content":{"580":{"position":[[505,5]]},"1106":{"position":[[505,5]]}},"keywords":{}}],["glob):path",{"_index":4119,"title":{},"content":{"579":{"position":[[202,10]]},"580":{"position":[[96,10]]},"584":{"position":[[199,10]]},"585":{"position":[[96,10]]},"589":{"position":[[139,10]]},"590":{"position":[[174,10]]},"1105":{"position":[[202,10]]},"1106":{"position":[[96,10]]},"1110":{"position":[[199,10]]},"1111":{"position":[[96,10]]},"1115":{"position":[[139,10]]},"1116":{"position":[[174,10]]}},"keywords":{}}],["global",{"_index":3169,"title":{},"content":{"389":{"position":[[15944,6]]},"570":{"position":[[9607,6]]},"916":{"position":[[15944,6]]},"1090":{"position":[[9607,6]]}},"keywords":{}}],["global_step",{"_index":3979,"title":{},"content":{"570":{"position":[[9641,11]]},"1090":{"position":[[9641,11]]}},"keywords":{}}],["global_step=tf.train.get_global_step",{"_index":4090,"title":{},"content":{"572":{"position":[[1472,39]]},"1092":{"position":[[1472,39]]}},"keywords":{}}],["gloo",{"_index":768,"title":{},"content":{"79":{"position":[[1136,6]]},"83":{"position":[[423,4],[490,4]]},"84":{"position":[[336,4],[394,4],[1513,4],[1571,4]]},"678":{"position":[[1136,6]]},"682":{"position":[[423,4],[490,4]]},"683":{"position":[[336,4],[394,4],[1513,4],[1571,4]]}},"keywords":{}}],["gnu",{"_index":3126,"title":{},"content":{"389":{"position":[[13448,3],[28997,3]]},"916":{"position":[[13448,3],[28997,3]]}},"keywords":{}}],["gnupg",{"_index":2360,"title":{},"content":{"314":{"position":[[269,7]]},"331":{"position":[[335,7],[1144,5]]}},"keywords":{}}],["go",{"_index":1085,"title":{"292":{"position":[[0,2]]}},"content":{"107":{"position":[[6496,2],[6691,5]]},"292":{"position":[[0,2]]},"317":{"position":[[447,2]]},"335":{"position":[[0,2]]},"386":{"position":[[533,2]]},"401":{"position":[[39,2]]},"413":{"position":[[266,2],[361,2]]},"549":{"position":[[464,5]]},"869":{"position":[[761,2],[1407,2],[1509,2]]},"913":{"position":[[533,2]]},"928":{"position":[[39,2]]},"1075":{"position":[[464,5]]}},"keywords":{}}],["goal",{"_index":2181,"title":{},"content":{"259":{"position":[[387,4]]},"830":{"position":[[387,4]]}},"keywords":{}}],["goe",{"_index":1989,"title":{},"content":{"200":{"position":[[1229,4]]},"783":{"position":[[1229,4]]}},"keywords":{}}],["good",{"_index":1242,"title":{"165":{"position":[[11,4]]},"735":{"position":[[11,4]]}},"content":{"130":{"position":[[151,6],[190,4]]},"162":{"position":[[473,4]]},"187":{"position":[[59,4]]},"314":{"position":[[2715,4]]},"331":{"position":[[1538,4],[1794,4]]},"698":{"position":[[151,6],[190,4]]},"732":{"position":[[473,4]]},"770":{"position":[[59,4]]}},"keywords":{}}],["googl",{"_index":1253,"title":{"568":{"position":[[22,6]]},"1088":{"position":[[22,6]]}},"content":{"132":{"position":[[17,6]]},"568":{"position":[[27,6],[317,6]]},"569":{"position":[[1840,6]]},"700":{"position":[[17,6]]},"1088":{"position":[[27,6],[317,6]]},"1089":{"position":[[1840,6]]}},"keywords":{}}],["gov",{"_index":957,"title":{},"content":{"107":{"position":[[854,6]]}},"keywords":{}}],["gpg",{"_index":2357,"title":{"314":{"position":[[10,3]]},"329":{"position":[[7,3]]},"330":{"position":[[12,3]]},"331":{"position":[[13,3]]},"334":{"position":[[13,3]]},"335":{"position":[[11,3]]}},"content":{"314":{"position":[[104,3],[208,3],[265,3],[715,4],[1591,4],[1916,3],[1950,3],[2174,3],[2299,3],[2601,4],[2650,4],[2710,4]]},"315":{"position":[[128,3],[163,3],[328,3],[404,3]]},"330":{"position":[[125,3],[131,3]]},"331":{"position":[[312,3],[331,3],[2064,4],[2389,4],[2444,4]]},"332":{"position":[[4,3],[242,3]]},"334":{"position":[[606,4],[647,3],[924,3],[1293,4],[1334,3],[1619,3]]},"335":{"position":[[47,3],[164,3]]},"336":{"position":[[759,3]]},"339":{"position":[[367,4]]},"342":{"position":[[31,3],[125,3]]},"343":{"position":[[93,3]]},"371":{"position":[[159,3],[177,3]]},"898":{"position":[[159,3],[177,3]]}},"keywords":{}}],["gpg.keyname>your",{"_index":2567,"title":{},"content":{"336":{"position":[[712,17]]}},"keywords":{}}],["gpg.passphrase>your",{"_index":2572,"title":{},"content":{"336":{"position":[[892,20]]}},"keywords":{}}],["gpg.useagent>true</gpg.useag",{"_index":2571,"title":{},"content":{"336":{"position":[[858,33]]}},"keywords":{}}],["gpm2p",{"_index":3308,"title":{},"content":{"412":{"position":[[428,5]]}},"keywords":{}}],["gpu",{"_index":12,"title":{"566":{"position":[[34,4]]},"1086":{"position":[[34,4]]}},"content":{"1":{"position":[[76,3],[187,3],[217,3]]},"23":{"position":[[20,3],[153,3]]},"25":{"position":[[1942,4]]},"29":{"position":[[17,4],[76,4]]},"151":{"position":[[818,3]]},"171":{"position":[[1305,3]]},"181":{"position":[[1806,4]]},"182":{"position":[[1203,4],[1535,3],[1560,4]]},"375":{"position":[[234,3],[369,3]]},"376":{"position":[[161,4]]},"377":{"position":[[223,3],[290,3],[473,3]]},"387":{"position":[[100,3]]},"389":{"position":[[1062,3]]},"406":{"position":[[672,3],[703,3]]},"425":{"position":[[235,3],[294,3]]},"541":{"position":[[20,3],[153,3]]},"543":{"position":[[1942,4]]},"547":{"position":[[17,4],[76,4]]},"549":{"position":[[206,3],[354,3],[731,3]]},"550":{"position":[[278,4]]},"551":{"position":[[219,3],[286,3]]},"553":{"position":[[210,3],[357,3]]},"554":{"position":[[198,4],[330,4]]},"556":{"position":[[145,3],[214,3]]},"557":{"position":[[96,3]]},"559":{"position":[[216,3],[356,3]]},"560":{"position":[[443,4],[580,4]]},"562":{"position":[[108,3],[180,3],[209,3]]},"566":{"position":[[210,4],[426,4],[437,3],[698,3]]},"570":{"position":[[169,4],[9743,4]]},"601":{"position":[[76,3],[187,3],[217,3]]},"611":{"position":[[20,3],[153,3]]},"613":{"position":[[1942,4]]},"617":{"position":[[17,4],[76,4]]},"721":{"position":[[818,3]]},"741":{"position":[[1317,3]]},"764":{"position":[[1819,4]]},"765":{"position":[[1203,4],[1535,3],[1560,4]]},"902":{"position":[[234,3],[369,3]]},"903":{"position":[[161,4]]},"904":{"position":[[223,3],[290,3],[473,3]]},"914":{"position":[[100,3]]},"916":{"position":[[1062,3]]},"952":{"position":[[235,3],[294,3]]},"1067":{"position":[[20,3],[153,3]]},"1069":{"position":[[1942,4]]},"1073":{"position":[[17,4],[76,4]]},"1075":{"position":[[206,3],[354,3],[731,3]]},"1076":{"position":[[278,4]]},"1077":{"position":[[219,3],[286,3]]},"1079":{"position":[[210,3],[357,3]]},"1080":{"position":[[198,4],[330,4]]},"1082":{"position":[[145,3],[214,3]]},"1083":{"position":[[96,3]]},"1086":{"position":[[210,4],[426,4],[437,3],[698,3]]},"1090":{"position":[[169,4],[9743,4]]},"1094":{"position":[[216,3],[356,3]]},"1095":{"position":[[443,4],[580,4]]},"1097":{"position":[[108,3],[180,3],[209,3]]}},"keywords":{}}],["gpu.w",{"_index":2862,"title":{},"content":{"389":{"position":[[1737,6]]},"916":{"position":[[1737,6]]}},"keywords":{}}],["gpu:0",{"_index":3937,"title":{},"content":{"570":{"position":[[7617,8]]},"1090":{"position":[[7617,8]]}},"keywords":{}}],["gpu:0.0.1",{"_index":366,"title":{},"content":{"23":{"position":[[262,9]]},"541":{"position":[[262,9]]},"556":{"position":[[248,9]]},"562":{"position":[[290,9]]},"585":{"position":[[310,9]]},"611":{"position":[[262,9]]},"1067":{"position":[[262,9]]},"1082":{"position":[[248,9]]},"1097":{"position":[[290,9]]},"1111":{"position":[[310,9]]}},"keywords":{}}],["gpu:0.0.1hadoopsubmarine/tf",{"_index":3789,"title":{},"content":{"563":{"position":[[91,27]]},"1098":{"position":[[91,27]]}},"keywords":{}}],["gpu:1",{"_index":3941,"title":{},"content":{"570":{"position":[[7796,8]]},"1090":{"position":[[7796,8]]}},"keywords":{}}],["gpu:2",{"_index":3943,"title":{},"content":{"570":{"position":[[7975,8]]},"1090":{"position":[[7975,8]]}},"keywords":{}}],["gpu:3",{"_index":3946,"title":{},"content":{"570":{"position":[[8154,8]]},"1090":{"position":[[8154,8]]}},"keywords":{}}],["gpu:4",{"_index":3949,"title":{},"content":{"570":{"position":[[8333,8]]},"1090":{"position":[[8333,8]]}},"keywords":{}}],["gpu:5",{"_index":3952,"title":{},"content":{"570":{"position":[[8512,8]]},"1090":{"position":[[8512,8]]}},"keywords":{}}],["gpu:6",{"_index":3955,"title":{},"content":{"570":{"position":[[8691,8]]},"1090":{"position":[[8691,8]]}},"keywords":{}}],["gpu:7",{"_index":3958,"title":{},"content":{"570":{"position":[[8870,8]]},"1090":{"position":[[8870,8]]}},"keywords":{}}],["gpu=0",{"_index":1880,"title":{},"content":{"182":{"position":[[1158,6]]},"765":{"position":[[1158,6]]}},"keywords":{}}],["gpu=2",{"_index":1874,"title":{},"content":{"182":{"position":[[489,6],[1253,6]]},"765":{"position":[[489,6],[1253,6]]}},"keywords":{}}],["gpu_driver=375",{"_index":1460,"title":{},"content":{"151":{"position":[[675,18],[1631,18],[1912,18]]},"721":{"position":[[675,18],[1631,18],[1912,18]]}},"keywords":{}}],["gpu_opt",{"_index":3858,"title":{},"content":{"570":{"position":[[1070,11],[1250,11],[4969,11],[10552,11],[10732,11],[14475,11],[16621,11],[16801,11]]},"1090":{"position":[[1070,11],[1250,11],[4969,11],[10552,11],[10732,11],[14475,11],[16621,11],[16801,11]]}},"keywords":{}}],["gpus=0",{"_index":384,"title":{},"content":{"23":{"position":[[697,7]]},"541":{"position":[[697,7]]},"566":{"position":[[158,6]]},"580":{"position":[[735,6]]},"611":{"position":[[697,7]]},"1067":{"position":[[697,7]]},"1086":{"position":[[158,6]]},"1106":{"position":[[735,6]]}},"keywords":{}}],["gpus=1",{"_index":395,"title":{},"content":{"23":{"position":[[1036,7]]},"541":{"position":[[1036,7]]},"611":{"position":[[1036,7]]},"1067":{"position":[[1036,7]]}},"keywords":{}}],["gpus=2",{"_index":3799,"title":{},"content":{"566":{"position":[[374,6],[710,6]]},"1086":{"position":[[374,6],[710,6]]}},"keywords":{}}],["gpus=4",{"_index":3819,"title":{},"content":{"568":{"position":[[928,6]]},"570":{"position":[[520,6],[10017,6]]},"1088":{"position":[[928,6]]},"1090":{"position":[[520,6],[10017,6]]}},"keywords":{}}],["gradvar",{"_index":4089,"title":{},"content":{"572":{"position":[[1462,9]]},"1092":{"position":[[1462,9]]}},"keywords":{}}],["grafana",{"_index":2091,"title":{},"content":{"218":{"position":[[360,8]]},"788":{"position":[[360,8]]}},"keywords":{}}],["grant",{"_index":428,"title":{},"content":{"25":{"position":[[1740,5]]},"107":{"position":[[2460,5]]},"394":{"position":[[30,5]]},"543":{"position":[[1740,5]]},"613":{"position":[[1740,5]]},"921":{"position":[[30,5]]},"1069":{"position":[[1740,5]]}},"keywords":{}}],["graph",{"_index":1475,"title":{},"content":{"151":{"position":[[2022,6]]},"569":{"position":[[1735,5]]},"571":{"position":[[154,6],[215,6]]},"721":{"position":[[2022,6]]},"1089":{"position":[[1735,5]]},"1091":{"position":[[154,6],[215,6]]}},"keywords":{}}],["graphviz==0.8.4",{"_index":3703,"title":{},"content":{"549":{"position":[[835,15]]},"1075":{"position":[[835,15]]}},"keywords":{}}],["great",{"_index":1651,"title":{},"content":{"161":{"position":[[553,6]]},"357":{"position":[[245,5]]},"731":{"position":[[553,6]]}},"keywords":{}}],["greatli",{"_index":1418,"title":{},"content":{"144":{"position":[[617,7]]},"714":{"position":[[617,7]]}},"keywords":{}}],["grep",{"_index":494,"title":{},"content":{"28":{"position":[[627,4]]},"389":{"position":[[1430,5]]},"546":{"position":[[627,4]]},"616":{"position":[[627,4]]},"916":{"position":[[1430,5]]},"1072":{"position":[[627,4]]}},"keywords":{}}],["gridengin",{"_index":2868,"title":{},"content":{"389":{"position":[[2059,10],[2456,10],[2899,10],[2917,10],[2935,10],[2951,10],[5519,10],[5622,10],[5820,10],[5923,10],[10766,10],[10805,14],[10859,10],[10933,10],[10972,14],[11028,10],[11232,10],[11269,14],[11323,10],[11395,10],[11434,14],[11490,10],[15214,10],[15321,10],[15474,10],[15619,10],[17901,10],[18298,10],[18741,10],[18759,10],[18777,10],[21343,10],[21446,10],[21644,10],[26484,10],[26523,14],[26577,10],[26651,10],[26690,14],[26746,10],[26950,10],[26987,14],[27041,10],[30763,10],[30870,10],[31023,10]]},"916":{"position":[[2059,10],[2456,10],[2899,10],[2917,10],[2935,10],[2951,10],[5519,10],[5622,10],[5820,10],[5923,10],[10766,10],[10805,14],[10859,10],[10933,10],[10972,14],[11028,10],[11232,10],[11269,14],[11323,10],[11395,10],[11434,14],[11490,10],[15214,10],[15321,10],[15474,10],[15619,10],[17901,10],[18298,10],[18741,10],[18759,10],[18777,10],[21343,10],[21446,10],[21644,10],[26484,10],[26523,14],[26577,10],[26651,10],[26690,14],[26746,10],[26950,10],[26987,14],[27041,10],[30763,10],[30870,10],[31023,10]]}},"keywords":{}}],["group",{"_index":1400,"title":{},"content":{"141":{"position":[[2089,6]]},"274":{"position":[[164,6]]},"845":{"position":[[164,6]]}},"keywords":{}}],["grow",{"_index":1273,"title":{},"content":{"133":{"position":[[571,7]]}},"keywords":{}}],["grpc://localhost:8000",{"_index":3890,"title":{},"content":{"570":{"position":[[1990,21],[11407,21],[17514,21]]},"1090":{"position":[[1990,21],[11407,21],[17514,21]]}},"keywords":{}}],["grpcchannelcach",{"_index":4044,"title":{},"content":{"570":{"position":[[17021,16],[17180,16],[17335,16]]},"1090":{"position":[[17021,16],[17180,16],[17335,16]]}},"keywords":{}}],["gs://<bucket_path>/<dir_path",{"_index":3828,"title":{},"content":{"569":{"position":[[565,32],[1600,32]]},"1089":{"position":[[565,32],[1600,32]]}},"keywords":{}}],["gs://<path>/model_dir",{"_index":3983,"title":{},"content":{"570":{"position":[[10401,25]]},"1090":{"position":[[10401,25]]}},"keywords":{}}],["gs://path/model_dir",{"_index":3842,"title":{},"content":{"570":{"position":[[635,20],[921,23],[10114,20],[16189,20],[16472,23]]},"1090":{"position":[[635,20],[921,23],[10114,20],[16189,20],[16472,23]]}},"keywords":{}}],["gs://path/model_dir/model.ckpt",{"_index":3924,"title":{},"content":{"570":{"position":[[4764,30],[5093,31],[8979,30]]},"1090":{"position":[[4764,30],[5093,31],[8979,30]]}},"keywords":{}}],["gsutil",{"_index":3807,"title":{},"content":{"568":{"position":[[449,6]]},"1088":{"position":[[449,6]]}},"keywords":{}}],["guangxu",{"_index":2486,"title":{},"content":{"331":{"position":[[1212,7],[1382,8],[2681,7]]},"332":{"position":[[136,7]]}},"keywords":{}}],["guard",{"_index":2909,"title":{},"content":{"389":{"position":[[2607,5],[18449,5]]},"916":{"position":[[2607,5],[18449,5]]}},"keywords":{}}],["guid",{"_index":28,"title":{"2":{"position":[[23,5]]},"134":{"position":[[0,5]]},"294":{"position":[[12,5]]},"573":{"position":[[25,5]]},"602":{"position":[[23,5]]},"706":{"position":[[0,5]]},"861":{"position":[[12,5]]},"1099":{"position":[[25,5]]}},"content":{"2":{"position":[[13,5]]},"35":{"position":[[1191,5]]},"49":{"position":[[31,5]]},"69":{"position":[[31,5]]},"107":{"position":[[1106,5]]},"124":{"position":[[253,6]]},"132":{"position":[[254,6]]},"303":{"position":[[55,5]]},"325":{"position":[[178,5]]},"372":{"position":[[810,7],[1081,7]]},"602":{"position":[[13,5]]},"627":{"position":[[1191,5]]},"641":{"position":[[31,5]]},"661":{"position":[[31,5]]},"692":{"position":[[253,6]]},"700":{"position":[[254,6]]},"869":{"position":[[1810,5]]},"895":{"position":[[178,5]]},"899":{"position":[[263,7],[534,7]]}},"keywords":{}}],["guidanc",{"_index":2025,"title":{},"content":{"211":{"position":[[360,8]]},"760":{"position":[[360,8]]}},"keywords":{}}],["guide)checkstyl",{"_index":1262,"title":{},"content":{"132":{"position":[[209,16]]},"700":{"position":[[209,16]]}},"keywords":{}}],["guideapach",{"_index":1316,"title":{},"content":{"135":{"position":[[107,11]]},"707":{"position":[[107,11]]}},"keywords":{}}],["guidelin",{"_index":1048,"title":{},"content":{"107":{"position":[[4391,10]]},"137":{"position":[[54,10],[80,11]]},"141":{"position":[[1785,11]]},"328":{"position":[[313,11],[358,10]]},"709":{"position":[[54,10],[80,11]]}},"keywords":{}}],["gx7f5",{"_index":98,"title":{},"content":{"7":{"position":[[237,5]]},"596":{"position":[[237,5]]}},"keywords":{}}],["gxcheng@apache.org",{"_index":2488,"title":{},"content":{"331":{"position":[[1264,18],[1397,21],[2695,20]]},"332":{"position":[[150,20]]}},"keywords":{}}],["gz",{"_index":2809,"title":{},"content":{"386":{"position":[[138,2]]},"913":{"position":[[138,2]]}},"keywords":{}}],["h",{"_index":685,"title":{},"content":{"71":{"position":[[55,1]]},"74":{"position":[[65,1]]},"77":{"position":[[54,1]]},"78":{"position":[[54,1]]},"81":{"position":[[62,1]]},"86":{"position":[[52,1]]},"89":{"position":[[45,1]]},"91":{"position":[[71,1]]},"95":{"position":[[60,1]]},"100":{"position":[[52,1]]},"105":{"position":[[121,1]]},"106":{"position":[[53,1]]},"109":{"position":[[60,1]]},"112":{"position":[[70,1]]},"423":{"position":[[20,1]]},"431":{"position":[[21,1]]},"438":{"position":[[20,1]]},"441":{"position":[[20,1]]},"449":{"position":[[21,1]]},"461":{"position":[[20,1]]},"466":{"position":[[21,1]]},"472":{"position":[[20,1]]},"479":{"position":[[20,1]]},"663":{"position":[[55,1]]},"666":{"position":[[65,1]]},"669":{"position":[[52,1]]},"672":{"position":[[45,1]]},"674":{"position":[[71,1]]},"676":{"position":[[54,1]]},"677":{"position":[[54,1]]},"680":{"position":[[62,1]]},"702":{"position":[[52,1]]},"950":{"position":[[20,1]]},"958":{"position":[[21,1]]},"965":{"position":[[20,1]]},"968":{"position":[[20,1]]},"976":{"position":[[21,1]]},"988":{"position":[[20,1]]},"993":{"position":[[21,1]]},"999":{"position":[[20,1]]},"1011":{"position":[[20,1]]}},"keywords":{}}],["h5pi",{"_index":3772,"title":{},"content":{"559":{"position":[[966,4]]},"1094":{"position":[[966,4]]}},"keywords":{}}],["ha",{"_index":2007,"title":{},"content":{"201":{"position":[[815,2],[840,2]]},"750":{"position":[[816,2],[841,2]]}},"keywords":{}}],["hadoop",{"_index":4,"title":{"1":{"position":[[0,6]]},"601":{"position":[[0,6]]}},"content":{"1":{"position":[[13,6],[129,6],[312,6]]},"107":{"position":[[3786,6]]},"162":{"position":[[713,6]]},"167":{"position":[[112,6],[261,6],[356,6],[536,6]]},"168":{"position":[[552,6]]},"363":{"position":[[69,7]]},"372":{"position":[[110,6],[672,6],[943,6],[1469,6]]},"375":{"position":[[323,6],[1240,6],[1447,6],[1490,6],[1515,6],[1538,6]]},"377":{"position":[[275,7]]},"403":{"position":[[260,6]]},"549":{"position":[[304,6],[1133,6],[1474,6],[1516,6],[1541,6],[1563,6]]},"551":{"position":[[193,7],[271,7]]},"553":{"position":[[310,6],[1712,6],[1872,6],[1914,6],[1939,6],[1961,6]]},"556":{"position":[[197,7]]},"559":{"position":[[310,6],[1349,6],[1509,6],[1551,6],[1576,6],[1598,6]]},"562":{"position":[[160,7],[261,7]]},"577":{"position":[[92,6]]},"579":{"position":[[251,6],[918,6]]},"580":{"position":[[145,6],[1187,6],[1554,6]]},"582":{"position":[[89,6]]},"584":{"position":[[248,6],[778,6]]},"585":{"position":[[145,6],[897,6]]},"587":{"position":[[80,6]]},"589":{"position":[[188,6],[1072,6]]},"590":{"position":[[223,6],[1093,6]]},"601":{"position":[[13,6],[129,6],[312,6]]},"732":{"position":[[713,6]]},"737":{"position":[[112,6],[261,6],[356,6],[536,6]]},"738":{"position":[[552,6]]},"777":{"position":[[1102,6]]},"810":{"position":[[395,6]]},"853":{"position":[[125,6],[207,6],[308,6],[411,6],[512,6]]},"885":{"position":[[69,7]]},"899":{"position":[[125,6],[396,6],[922,6]]},"902":{"position":[[323,6],[1240,6],[1447,6],[1490,6],[1515,6],[1538,6]]},"904":{"position":[[275,7]]},"930":{"position":[[260,6]]},"1075":{"position":[[304,6],[1133,6],[1474,6],[1516,6],[1541,6],[1563,6]]},"1077":{"position":[[193,7],[271,7]]},"1079":{"position":[[310,6],[1712,6],[1872,6],[1914,6],[1939,6],[1961,6]]},"1082":{"position":[[197,7]]},"1094":{"position":[[310,6],[1349,6],[1509,6],[1551,6],[1576,6],[1598,6]]},"1097":{"position":[[160,7],[261,7]]},"1103":{"position":[[92,6]]},"1105":{"position":[[251,6],[918,6]]},"1106":{"position":[[145,6],[1187,6],[1554,6]]},"1108":{"position":[[89,6]]},"1110":{"position":[[248,6],[778,6]]},"1111":{"position":[[145,6],[897,6]]},"1113":{"position":[[80,6]]},"1115":{"position":[[188,6],[1072,6]]},"1116":{"position":[[223,6],[1093,6]]}},"keywords":{}}],["hadoop_common_home=/hadoop",{"_index":4162,"title":{},"content":{"580":{"position":[[988,26]]},"585":{"position":[[698,26]]},"1106":{"position":[[988,26]]},"1111":{"position":[[698,26]]}},"keywords":{}}],["hadoop_conf_dir=/hadoop",{"_index":4164,"title":{},"content":{"580":{"position":[[1068,23]]},"585":{"position":[[778,23]]},"1106":{"position":[[1068,23]]},"1111":{"position":[[778,23]]}},"keywords":{}}],["hadoop_hdfs_hom",{"_index":4169,"title":{},"content":{"580":{"position":[[1337,16]]},"1106":{"position":[[1337,16]]}},"keywords":{}}],["hadoop_hdfs_home=/hadoop",{"_index":4163,"title":{},"content":{"580":{"position":[[1029,24]]},"585":{"position":[[739,24]]},"1106":{"position":[[1029,24]]},"1111":{"position":[[739,24]]}},"keywords":{}}],["hadoop_home=/hadoop",{"_index":4160,"title":{},"content":{"580":{"position":[[915,19]]},"585":{"position":[[625,19]]},"1106":{"position":[[915,19]]},"1111":{"position":[[625,19]]}},"keywords":{}}],["hadoop_v",{"_index":2758,"title":{},"content":{"375":{"position":[[1497,17]]},"549":{"position":[[1523,17]]},"553":{"position":[[1921,17]]},"559":{"position":[[1558,17]]},"902":{"position":[[1497,17]]},"1075":{"position":[[1523,17]]},"1079":{"position":[[1921,17]]},"1094":{"position":[[1558,17]]}},"keywords":{}}],["hadoop_version=\"2.9.2",{"_index":3753,"title":{},"content":{"553":{"position":[[1723,22]]},"559":{"position":[[1360,22]]},"1079":{"position":[[1723,22]]},"1094":{"position":[[1360,22]]}},"keywords":{}}],["hadoop_version=\"3.1.2",{"_index":3709,"title":{},"content":{"549":{"position":[[1144,22]]},"1075":{"position":[[1144,22]]}},"keywords":{}}],["hadoop_version=\"3.2.1",{"_index":2752,"title":{},"content":{"375":{"position":[[1251,22]]},"902":{"position":[[1251,22]]}},"keywords":{}}],["hadoop_version}.jar",{"_index":4173,"title":{},"content":{"580":{"position":[[1561,21]]},"1106":{"position":[[1561,21]]}},"keywords":{}}],["hadoop_version}.tar.gz",{"_index":2756,"title":{},"content":{"375":{"position":[[1409,24],[1454,24],[1545,24]]},"549":{"position":[[1254,24],[1437,24],[1481,24],[1570,24]]},"553":{"position":[[1835,24],[1879,24],[1968,24]]},"559":{"position":[[1472,24],[1516,24],[1605,24]]},"902":{"position":[[1409,24],[1454,24],[1545,24]]},"1075":{"position":[[1254,24],[1437,24],[1481,24],[1570,24]]},"1079":{"position":[[1835,24],[1879,24],[1968,24]]},"1094":{"position":[[1472,24],[1516,24],[1605,24]]}},"keywords":{}}],["hadoop_version}/hadoop",{"_index":2755,"title":{},"content":{"375":{"position":[[1384,24]]},"549":{"position":[[1229,24],[1412,24]]},"553":{"position":[[1810,24]]},"559":{"position":[[1447,24]]},"902":{"position":[[1384,24]]},"1075":{"position":[[1229,24],[1412,24]]},"1079":{"position":[[1810,24]]},"1094":{"position":[[1447,24]]}},"keywords":{}}],["hadoop_yarn_home=/hadoop",{"_index":4161,"title":{},"content":{"580":{"position":[[949,24]]},"585":{"position":[[659,24]]},"1106":{"position":[[949,24]]},"1111":{"position":[[659,24]]}},"keywords":{}}],["hadoopsubmarine/kaldi",{"_index":2771,"title":{},"content":{"377":{"position":[[444,21]]},"387":{"position":[[71,21]]},"389":{"position":[[1033,21]]},"904":{"position":[[444,21]]},"914":{"position":[[71,21]]},"916":{"position":[[1033,21]]}},"keywords":{}}],["hadoopsubmarine/pytorch",{"_index":3761,"title":{},"content":{"557":{"position":[[65,23]]},"1083":{"position":[[65,23]]}},"keywords":{}}],["hadoopsubmarine/tf",{"_index":3788,"title":{},"content":{"563":{"position":[[65,18]]},"580":{"position":[[295,18]]},"1098":{"position":[[65,18]]},"1106":{"position":[[295,18]]}},"keywords":{}}],["half",{"_index":2201,"title":{},"content":{"265":{"position":[[46,4],[221,4]]},"836":{"position":[[46,4],[221,4]]}},"keywords":{}}],["hand",{"_index":3237,"title":{},"content":{"406":{"position":[[87,4]]},"933":{"position":[[87,4]]}},"keywords":{}}],["handl",{"_index":1526,"title":{"200":{"position":[[0,6]]},"244":{"position":[[0,6]]},"783":{"position":[[0,6]]},"814":{"position":[[0,6]]}},"content":{"155":{"position":[[201,7]]},"156":{"position":[[1266,6]]},"160":{"position":[[613,7]]},"176":{"position":[[534,7]]},"177":{"position":[[172,7]]},"179":{"position":[[1166,6]]},"181":{"position":[[2172,6]]},"194":{"position":[[21,7]]},"200":{"position":[[82,7],[617,7],[1074,7],[1118,7],[1553,7],[2137,8],[2244,7],[2399,7],[2465,7],[2783,7],[2825,9]]},"218":{"position":[[323,7]]},"230":{"position":[[607,7]]},"242":{"position":[[69,7]]},"725":{"position":[[201,7]]},"726":{"position":[[1266,6]]},"730":{"position":[[613,7]]},"746":{"position":[[535,7]]},"747":{"position":[[172,7]]},"749":{"position":[[1171,6]]},"764":{"position":[[2185,6]]},"777":{"position":[[21,7]]},"783":{"position":[[82,7],[617,7],[1074,7],[1118,7],[1553,7],[2137,8],[2244,7],[2399,7],[2465,7],[2783,7],[2825,9]]},"788":{"position":[[323,7]]},"793":{"position":[[607,7]]},"805":{"position":[[69,7]]}},"keywords":{}}],["handled/setup",{"_index":1529,"title":{},"content":{"155":{"position":[[333,15]]},"725":{"position":[[333,15]]}},"keywords":{}}],["happ",{"_index":1426,"title":{},"content":{"145":{"position":[[223,8]]},"148":{"position":[[441,7]]},"156":{"position":[[105,7],[352,7]]},"170":{"position":[[138,8]]},"339":{"position":[[353,8]]},"715":{"position":[[223,8]]},"726":{"position":[[105,7],[352,7]]},"740":{"position":[[138,8]]}},"keywords":{}}],["happen”+0",{"_index":1084,"title":{},"content":{"107":{"position":[[6414,9]]}},"keywords":{}}],["hard",{"_index":1491,"title":{"161":{"position":[[98,4]]},"731":{"position":[[98,4]]}},"content":{"153":{"position":[[75,4]]},"159":{"position":[[1302,4],[1554,4],[2065,4],[2400,4]]},"161":{"position":[[943,4]]},"217":{"position":[[700,4]]},"723":{"position":[[75,4]]},"729":{"position":[[1302,4],[1554,4],[2065,4],[2400,4]]},"731":{"position":[[943,4]]},"787":{"position":[[700,4]]}},"keywords":{}}],["hardwar",{"_index":2160,"title":{},"content":{"246":{"position":[[324,8]]},"252":{"position":[[305,8]]},"816":{"position":[[324,8]]},"822":{"position":[[310,8]]}},"keywords":{}}],["hash",{"_index":2406,"title":{"315":{"position":[[17,4]]}},"content":{"315":{"position":[[29,4],[300,4]]},"333":{"position":[[172,6]]}},"keywords":{}}],["hassl",{"_index":2670,"title":{},"content":{"369":{"position":[[247,6]]},"892":{"position":[[247,6]]}},"keywords":{}}],["hav",{"_index":2346,"title":{},"content":{"308":{"position":[[117,6]]},"874":{"position":[[117,6]]}},"keywords":{}}],["haven't",{"_index":2451,"title":{},"content":{"325":{"position":[[67,8]]},"895":{"position":[[67,8]]}},"keywords":{}}],["hdf",{"_index":1714,"title":{},"content":{"167":{"position":[[389,5]]},"216":{"position":[[118,5],[228,5],[331,4],[527,5]]},"375":{"position":[[308,4],[1165,4]]},"437":{"position":[[1198,5]]},"549":{"position":[[289,4],[1010,4]]},"553":{"position":[[295,4],[1637,4]]},"559":{"position":[[295,4],[1274,4]]},"737":{"position":[[389,5]]},"786":{"position":[[118,5],[228,5],[331,4],[527,5]]},"902":{"position":[[308,4],[1165,4]]},"964":{"position":[[1198,5]]},"1075":{"position":[[289,4],[1010,4]]},"1079":{"position":[[295,4],[1637,4]]},"1094":{"position":[[295,4],[1274,4]]}},"keywords":{}}],["hdfs/cloud",{"_index":2068,"title":{},"content":{"216":{"position":[[665,10]]},"786":{"position":[[665,10]]}},"keywords":{}}],["hdfs/s3",{"_index":1757,"title":{},"content":{"171":{"position":[[1167,8]]},"199":{"position":[[1159,7]]},"741":{"position":[[1178,8]]},"782":{"position":[[1159,7]]}},"keywords":{}}],["hdfs://${dfs_name_service}/tmp/cifar",{"_index":370,"title":{},"content":{"23":{"position":[[327,36]]},"541":{"position":[[327,36]]},"611":{"position":[[327,36]]},"1067":{"position":[[327,36]]}},"keywords":{}}],["hdfs://${dfs_name_service}/user/hadoop/tf",{"_index":373,"title":{},"content":{"23":{"position":[[392,41]]},"541":{"position":[[392,41]]},"611":{"position":[[392,41]]},"1067":{"position":[[392,41]]}},"keywords":{}}],["hdfs:///user/submarine/data/te.libsvm",{"_index":1768,"title":{},"content":{"171":{"position":[[1575,42]]},"199":{"position":[[507,42]]},"741":{"position":[[1587,42]]},"782":{"position":[[507,42]]}},"keywords":{}}],["hdfs:///user/submarine/data/tr.libsvm",{"_index":1764,"title":{},"content":{"171":{"position":[[1462,42]]},"199":{"position":[[394,42]]},"741":{"position":[[1474,42]]},"782":{"position":[[394,42]]}},"keywords":{}}],["hdfs:///user/submarine/data/va.libsvm",{"_index":1766,"title":{},"content":{"171":{"position":[[1519,42]]},"199":{"position":[[451,42]]},"741":{"position":[[1531,42]]},"782":{"position":[[451,42]]}},"keywords":{}}],["hdfs:///user/submarine/deepfm",{"_index":1770,"title":{},"content":{"171":{"position":[[1668,32]]},"199":{"position":[[600,32]]},"741":{"position":[[1680,32]]},"782":{"position":[[600,32]]}},"keywords":{}}],["hdfs://pi",{"_index":4149,"title":{},"content":{"580":{"position":[[345,9]]},"1106":{"position":[[345,9]]}},"keywords":{}}],["hdgdp",{"_index":3304,"title":{},"content":{"412":{"position":[[322,5]]}},"keywords":{}}],["head",{"_index":1692,"title":{},"content":{"163":{"position":[[650,5]]},"733":{"position":[[650,5]]}},"keywords":{}}],["header.wheth",{"_index":2417,"title":{},"content":{"316":{"position":[[258,14]]}},"keywords":{}}],["heartbeat",{"_index":2241,"title":{},"content":{"271":{"position":[[581,9],[613,9]]},"273":{"position":[[191,10],[556,9],[687,9],[767,9],[1261,9]]},"842":{"position":[[581,9],[613,9]]},"844":{"position":[[191,10],[556,9],[687,9],[767,9],[1261,9]]}},"keywords":{}}],["hello",{"_index":2648,"title":{},"content":{"352":{"position":[[1275,5]]}},"keywords":{}}],["helm",{"_index":36,"title":{"290":{"position":[[0,4]]},"378":{"position":[[22,4]]},"905":{"position":[[22,4]]}},"content":{"4":{"position":[[12,5]]},"6":{"position":[[69,4],[92,6]]},"10":{"position":[[2,4]]},"300":{"position":[[126,4]]},"302":{"position":[[284,4],[341,6]]},"379":{"position":[[8,4]]},"380":{"position":[[63,4],[86,6]]},"382":{"position":[[0,4],[33,4],[46,4]]},"383":{"position":[[127,6],[221,4],[323,6],[500,6],[1068,6],[1225,6]]},"384":{"position":[[201,6],[426,6]]},"410":{"position":[[73,5]]},"411":{"position":[[124,4],[148,4],[171,6]]},"593":{"position":[[12,5]]},"595":{"position":[[69,4],[92,6]]},"599":{"position":[[2,4]]},"867":{"position":[[126,4],[526,4],[581,6]]},"869":{"position":[[284,4],[341,6],[518,4],[695,7],[727,6],[775,4],[822,6],[1689,4],[1713,4]]},"906":{"position":[[8,4]]},"907":{"position":[[63,4],[86,6]]},"909":{"position":[[0,4],[33,4],[46,4]]},"910":{"position":[[127,6],[221,4],[323,6],[500,6],[1068,6],[1225,6]]},"911":{"position":[[201,6],[426,6]]},"937":{"position":[[73,5]]},"938":{"position":[[100,4],[128,4],[151,6]]}},"keywords":{}}],["help",{"_index":572,"title":{},"content":{"33":{"position":[[472,4]]},"107":{"position":[[1349,7],[3112,7],[6545,5]]},"117":{"position":[[189,4]]},"133":{"position":[[953,7]]},"145":{"position":[[379,7],[420,7]]},"146":{"position":[[22,6]]},"148":{"position":[[4,4],[144,5]]},"159":{"position":[[2866,4]]},"165":{"position":[[355,4]]},"176":{"position":[[1264,5]]},"179":{"position":[[1093,5]]},"182":{"position":[[149,4]]},"283":{"position":[[44,4]]},"298":{"position":[[22,4]]},"304":{"position":[[232,4]]},"352":{"position":[[134,4]]},"566":{"position":[[800,4]]},"625":{"position":[[472,4]]},"685":{"position":[[189,4]]},"715":{"position":[[379,7],[431,7]]},"716":{"position":[[22,6]]},"718":{"position":[[4,4],[144,5]]},"729":{"position":[[2866,4]]},"735":{"position":[[355,4]]},"746":{"position":[[1267,5]]},"749":{"position":[[1098,5]]},"765":{"position":[[149,4]]},"854":{"position":[[44,4]]},"865":{"position":[[22,4]]},"870":{"position":[[232,4]]},"1086":{"position":[[800,4]]}},"keywords":{}}],["help@submarine.apache.org",{"_index":1439,"title":{},"content":{"148":{"position":[[633,26]]}},"keywords":{}}],["her",{"_index":1620,"title":{},"content":{"159":{"position":[[2871,5]]},"189":{"position":[[1143,4]]},"230":{"position":[[840,5]]},"331":{"position":[[705,4],[810,4],[1072,4],[1139,4],[1244,4],[1304,4],[1339,4],[1482,4]]},"336":{"position":[[771,4]]},"349":{"position":[[143,5]]},"352":{"position":[[329,5],[423,5],[670,5],[768,5]]},"389":{"position":[[1772,4]]},"391":{"position":[[219,5]]},"414":{"position":[[32,5]]},"417":{"position":[[79,4]]},"568":{"position":[[292,5]]},"569":{"position":[[747,5]]},"729":{"position":[[2871,5]]},"772":{"position":[[1143,4]]},"793":{"position":[[840,5]]},"916":{"position":[[1772,4]]},"918":{"position":[[219,5]]},"941":{"position":[[32,5]]},"944":{"position":[[79,4]]},"1088":{"position":[[292,5]]},"1089":{"position":[[747,5]]}},"keywords":{}}],["here'",{"_index":1761,"title":{},"content":{"171":{"position":[[1361,6]]},"182":{"position":[[99,6]]},"189":{"position":[[675,6]]},"229":{"position":[[593,6]]},"375":{"position":[[330,6]]},"549":{"position":[[311,6]]},"553":{"position":[[317,6]]},"559":{"position":[[317,6]]},"569":{"position":[[344,6]]},"741":{"position":[[1373,6]]},"765":{"position":[[99,6]]},"772":{"position":[[675,6]]},"792":{"position":[[593,6]]},"902":{"position":[[330,6]]},"1075":{"position":[[311,6]]},"1079":{"position":[[317,6]]},"1089":{"position":[[344,6]]},"1094":{"position":[[317,6]]}},"keywords":{}}],["here'r",{"_index":1816,"title":{},"content":{"176":{"position":[[563,7]]},"201":{"position":[[153,7]]},"746":{"position":[[564,7]]},"750":{"position":[[153,7]]}},"keywords":{}}],["hi",{"_index":2628,"title":{},"content":{"352":{"position":[[103,2]]},"357":{"position":[[228,2]]}},"keywords":{}}],["hid",{"_index":1496,"title":{},"content":{"153":{"position":[[196,4]]},"156":{"position":[[141,4]]},"222":{"position":[[373,4]]},"723":{"position":[[196,4]]},"726":{"position":[[141,4]]},"807":{"position":[[373,4]]}},"keywords":{}}],["high",{"_index":1599,"title":{"257":{"position":[[24,4]]},"828":{"position":[[24,4]]}},"content":{"159":{"position":[[1876,4]]},"259":{"position":[[431,4],[453,4],[623,4],[690,4]]},"273":{"position":[[945,4]]},"729":{"position":[[1876,4]]},"830":{"position":[[431,4],[453,4],[623,4],[690,4]]},"844":{"position":[[945,4]]},"1032":{"position":[[38,4]]}},"keywords":{}}],["highlight",{"_index":2633,"title":{},"content":{"352":{"position":[[243,11]]},"357":{"position":[[366,11]]}},"keywords":{}}],["hint,g",{"_index":2475,"title":{},"content":{"331":{"position":[[287,13]]}},"keywords":{}}],["histor",{"_index":4207,"title":{},"content":{"591":{"position":[[0,13]]},"1117":{"position":[[0,13]]}},"keywords":{}}],["histori",{"_index":1223,"title":{"167":{"position":[[13,7]]},"737":{"position":[[13,7]]}},"content":{"125":{"position":[[228,7]]},"170":{"position":[[179,7]]},"190":{"position":[[392,7],[503,7]]},"693":{"position":[[228,7]]},"740":{"position":[[179,7]]},"773":{"position":[[392,7],[503,7]]}},"keywords":{}}],["hit",{"_index":1367,"title":{},"content":{"139":{"position":[[501,4]]},"711":{"position":[[501,4]]}},"keywords":{}}],["hiv",{"_index":1685,"title":{},"content":{"163":{"position":[[363,5]]},"177":{"position":[[221,4]]},"733":{"position":[[363,5]]},"747":{"position":[[221,4]]},"1064":{"position":[[403,4],[520,4]]}},"keywords":{}}],["hkbnhiu_udlch_rvahv9gqaft",{"_index":1408,"title":{},"content":{"143":{"position":[[154,27]]}},"keywords":{}}],["hoc",{"_index":1902,"title":{},"content":{"189":{"position":[[7,3]]},"194":{"position":[[76,3]]},"772":{"position":[[7,3]]},"777":{"position":[[76,3]]}},"keywords":{}}],["hold",{"_index":944,"title":{},"content":{"107":{"position":[[280,5],[4874,6]]}},"keywords":{}}],["hom",{"_index":240,"title":{"33":{"position":[[0,4]]},"53":{"position":[[0,4]]},"625":{"position":[[0,4]]},"645":{"position":[[0,4]]}},"content":{"16":{"position":[[262,4]]},"32":{"position":[[35,4]]},"33":{"position":[[27,4]]},"52":{"position":[[64,5]]},"53":{"position":[[24,4]]},"210":{"position":[[275,4]]},"219":{"position":[[224,4]]},"608":{"position":[[262,4]]},"624":{"position":[[35,4]]},"625":{"position":[[27,4]]},"644":{"position":[[64,5]]},"645":{"position":[[24,4]]},"759":{"position":[[275,4]]},"789":{"position":[[224,4]]}},"keywords":{}}],["homepag",{"_index":537,"title":{},"content":{"31":{"position":[[119,9],[136,9]]},"623":{"position":[[119,9],[136,9]]}},"keywords":{}}],["homeswitch",{"_index":3602,"title":{},"content":{"508":{"position":[[258,10]]},"1047":{"position":[[258,10]]}},"keywords":{}}],["honor",{"_index":2658,"title":{},"content":{"357":{"position":[[251,5]]}},"keywords":{}}],["hook",{"_index":1579,"title":{},"content":{"159":{"position":[[714,4]]},"572":{"position":[[332,7]]},"729":{"position":[[714,4]]},"1092":{"position":[[332,7]]}},"keywords":{}}],["hooks=hook",{"_index":4075,"title":{},"content":{"572":{"position":[[951,12]]},"1092":{"position":[[951,12]]}},"keywords":{}}],["hooks=self._eval_hook",{"_index":4072,"title":{},"content":{"572":{"position":[[800,23]]},"1092":{"position":[[800,23]]}},"keywords":{}}],["host",{"_index":308,"title":{},"content":{"20":{"position":[[113,4],[455,4]]},"383":{"position":[[551,4],[556,5]]},"569":{"position":[[43,5],[117,5],[142,5],[300,5],[1776,4]]},"570":{"position":[[54,4]]},"620":{"position":[[113,4],[455,4]]},"910":{"position":[[551,4],[556,5]]},"1089":{"position":[[43,5],[117,5],[142,5],[300,5],[1776,4]]},"1090":{"position":[[54,4]]}},"keywords":{}}],["host.to",{"_index":2785,"title":{},"content":{"383":{"position":[[408,7]]},"910":{"position":[[408,7]]}},"keywords":{}}],["host_nam",{"_index":2857,"title":{},"content":{"389":{"position":[[1419,10]]},"916":{"position":[[1419,10]]}},"keywords":{}}],["hostnam",{"_index":3688,"title":{},"content":{"524":{"position":[[140,11]]}},"keywords":{}}],["hostname=localhost,port=32080",{"_index":3686,"title":{},"content":{"523":{"position":[[102,31]]}},"keywords":{}}],["hostpath",{"_index":325,"title":{},"content":{"20":{"position":[[484,9]]},"383":{"position":[[64,8],[231,9],[244,9],[369,8]]},"620":{"position":[[484,9]]},"910":{"position":[[64,8],[231,9],[244,9],[369,8]]}},"keywords":{}}],["hostport",{"_index":330,"title":{},"content":{"20":{"position":[[578,9],[689,9]]},"384":{"position":[[844,9]]},"620":{"position":[[578,9],[689,9]]},"911":{"position":[[844,9]]}},"keywords":{}}],["hour",{"_index":1247,"title":{},"content":{"130":{"position":[[454,6]]},"141":{"position":[[420,6],[791,6]]},"355":{"position":[[380,5]]},"357":{"position":[[107,5]]},"698":{"position":[[454,6]]}},"keywords":{}}],["howtoreleas",{"_index":1019,"title":{},"content":{"107":{"position":[[3294,13]]}},"keywords":{}}],["howtorun",{"_index":167,"title":{"11":{"position":[[0,8]]},"603":{"position":[[0,8]]}},"content":{},"keywords":{}}],["html",{"_index":2339,"title":{},"content":{"304":{"position":[[253,4]]},"870":{"position":[[253,4]]}},"keywords":{}}],["http",{"_index":2140,"title":{},"content":{"230":{"position":[[615,4]]},"320":{"position":[[542,6]]},"793":{"position":[[615,4]]},"877":{"position":[[542,6]]}},"keywords":{}}],["http://0.0.0.0:32080",{"_index":3318,"title":{},"content":{"413":{"position":[[367,21]]},"940":{"position":[[126,20]]}},"keywords":{}}],["http://127.0.0.1:32080",{"_index":160,"title":{},"content":{"9":{"position":[[80,22]]},"384":{"position":[[1021,22]]},"598":{"position":[[80,22]]},"869":{"position":[[1515,22]]},"911":{"position":[[1021,22]]}},"keywords":{}}],["http://127.0.0.1:32080/api/v1/environ",{"_index":703,"title":{},"content":{"71":{"position":[[504,41]]},"72":{"position":[[53,41]]},"423":{"position":[[469,41]]},"425":{"position":[[18,41]]},"663":{"position":[[504,41]]},"664":{"position":[[53,41]]},"950":{"position":[[469,41]]},"952":{"position":[[18,41]]}},"keywords":{}}],["http://127.0.0.1:32080/api/v1/environment/mi",{"_index":714,"title":{},"content":{"73":{"position":[[60,44]]},"74":{"position":[[383,44]]},"75":{"position":[[63,44]]},"428":{"position":[[18,44]]},"431":{"position":[[339,44]]},"434":{"position":[[21,44]]},"665":{"position":[[60,44]]},"666":{"position":[[383,44]]},"667":{"position":[[63,44]]},"955":{"position":[[18,44]]},"958":{"position":[[339,44]]},"961":{"position":[[21,44]]}},"keywords":{}}],["http://127.0.0.1:32080/api/v1/experi",{"_index":741,"title":{},"content":{"77":{"position":[[545,40]]},"78":{"position":[[516,40]]},"79":{"position":[[52,40]]},"438":{"position":[[511,40]]},"441":{"position":[[482,40]]},"443":{"position":[[18,40]]},"676":{"position":[[545,40]]},"677":{"position":[[516,40]]},"678":{"position":[[52,40]]},"965":{"position":[[511,40]]},"968":{"position":[[482,40]]},"970":{"position":[[18,40]]}},"keywords":{}}],["http://127.0.0.1:32080/api/v1/experiment/experiment_1592057447228_0001",{"_index":773,"title":{},"content":{"80":{"position":[[57,70]]},"81":{"position":[[553,70]]},"82":{"position":[[60,70]]},"679":{"position":[[57,70]]},"680":{"position":[[553,70]]},"681":{"position":[[60,70]]}},"keywords":{}}],["http://127.0.0.1:32080/api/v1/experiment/experiment_1626160071451_0005",{"_index":3482,"title":{},"content":{"446":{"position":[[18,70]]},"449":{"position":[[512,70]]},"452":{"position":[[21,70]]},"973":{"position":[[18,70]]},"976":{"position":[[512,70]]},"979":{"position":[[21,70]]}},"keywords":{}}],["http://127.0.0.1:32080/api/v1/experiment/log",{"_index":775,"title":{},"content":{"83":{"position":[[57,45]]},"454":{"position":[[18,45]]},"682":{"position":[[57,45]]},"981":{"position":[[18,45]]}},"keywords":{}}],["http://127.0.0.1:32080/api/v1/experiment/logs/experiment_1589199154923_0002",{"_index":785,"title":{},"content":{"84":{"position":[[62,75]]},"683":{"position":[[62,75]]}},"keywords":{}}],["http://127.0.0.1:32080/api/v1/experiment/logs/experiment_1626160071451_0001",{"_index":3487,"title":{},"content":{"457":{"position":[[18,75]]},"984":{"position":[[18,75]]}},"keywords":{}}],["http://127.0.0.1:32080/api/v1/experiment/mi",{"_index":845,"title":{},"content":{"91":{"position":[[230,43]]},"472":{"position":[[179,43]]},"674":{"position":[[230,43]]},"999":{"position":[[179,43]]}},"keywords":{}}],["http://127.0.0.1:32080/api/v1/model",{"_index":849,"title":{},"content":{"93":{"position":[[62,35]]},"94":{"position":[[72,35]]},"95":{"position":[[228,35]]},"96":{"position":[[77,35]]},"97":{"position":[[100,35]]},"98":{"position":[[104,35]]}},"keywords":{}}],["http://127.0.0.1:32080/api/v1/notebook",{"_index":889,"title":{},"content":{"100":{"position":[[324,38]]},"479":{"position":[[292,38]]},"702":{"position":[[324,38]]},"1011":{"position":[[292,38]]}},"keywords":{}}],["http://127.0.0.1:32080/api/v1/notebook/notebook_1626160071451_0001",{"_index":3552,"title":{},"content":{"485":{"position":[[18,66]]},"488":{"position":[[21,66]]},"1017":{"position":[[18,66]]},"1020":{"position":[[21,66]]}},"keywords":{}}],["http://127.0.0.1:32080/api/v1/notebook/{id",{"_index":919,"title":{},"content":{"102":{"position":[[55,43]]},"103":{"position":[[61,43]]},"704":{"position":[[55,43]]},"705":{"position":[[61,43]]}},"keywords":{}}],["http://127.0.0.1:32080/api/v1/notebook?id=e9ca23d68d884d4ebb19d07889727da",{"_index":3549,"title":{},"content":{"482":{"position":[[18,74]]},"1014":{"position":[[18,74]]}},"keywords":{}}],["http://127.0.0.1:32080/api/v1/notebook?id={user_id",{"_index":915,"title":{},"content":{"101":{"position":[[50,51]]},"703":{"position":[[50,51]]}},"keywords":{}}],["http://127.0.0.1:32080/api/v1/regist",{"_index":1165,"title":{},"content":{"109":{"position":[[191,40]]},"110":{"position":[[58,40]]},"111":{"position":[[65,40]]},"112":{"position":[[168,40]]},"113":{"position":[[70,40]]},"114":{"position":[[85,40]]},"115":{"position":[[89,40]]}},"keywords":{}}],["http://127.0.0.1:32080/api/v1/serv",{"_index":935,"title":{},"content":{"105":{"position":[[208,35]]},"106":{"position":[[140,35]]}},"keywords":{}}],["http://127.0.0.1:32080/api/v1/templ",{"_index":837,"title":{},"content":{"86":{"position":[[1051,38]]},"87":{"position":[[50,38]]},"461":{"position":[[1019,38]]},"463":{"position":[[18,38]]},"669":{"position":[[1051,38]]},"670":{"position":[[50,38]]},"988":{"position":[[1019,38]]},"990":{"position":[[18,38]]}},"keywords":{}}],["http://127.0.0.1:32080/api/v1/template/mi",{"_index":839,"title":{},"content":{"88":{"position":[[57,41]]},"89":{"position":[[1048,41]]},"90":{"position":[[60,41]]},"466":{"position":[[1024,41]]},"469":{"position":[[21,41]]},"671":{"position":[[57,41]]},"672":{"position":[[1048,41]]},"673":{"position":[[60,41]]},"993":{"position":[[1024,41]]},"996":{"position":[[21,41]]}},"keywords":{}}],["http://127.0.0.1:8080",{"_index":197,"title":{},"content":{"13":{"position":[[493,22]]},"605":{"position":[[493,22]]}},"keywords":{}}],["http://192.168.49.2:32080",{"_index":159,"title":{},"content":{"9":{"position":[[51,25]]},"413":{"position":[[313,26]]},"598":{"position":[[51,25]]},"869":{"position":[[1445,25]]}},"keywords":{}}],["http://archive.ubuntu.com/ubuntu",{"_index":2931,"title":{},"content":{"389":{"position":[[3489,32],[3582,32],[3671,32],[3774,32],[3873,32],[3970,32],[4082,32],[4188,32],[4314,32],[4441,32],[4557,32],[4673,32],[4775,32],[4859,32],[4951,32],[5066,32],[5163,32],[5251,32],[5358,32],[5464,32],[5567,32],[5673,32],[5765,32],[5868,32],[5974,32],[6080,32],[6201,32],[6316,32],[6419,32],[6515,32],[6608,32],[6728,32],[6842,32],[19313,32],[19406,32],[19495,32],[19598,32],[19697,32],[19794,32],[19906,32],[20012,32],[20138,32],[20265,32],[20381,32],[20497,32],[20599,32],[20683,32],[20775,32],[20890,32],[20987,32],[21075,32],[21182,32],[21288,32],[21391,32],[21497,32],[21589,32],[21692,32],[21798,32],[21919,32],[22034,32],[22137,32],[22233,32],[22326,32],[22446,32],[22560,32]]},"916":{"position":[[3489,32],[3582,32],[3671,32],[3774,32],[3873,32],[3970,32],[4082,32],[4188,32],[4314,32],[4441,32],[4557,32],[4673,32],[4775,32],[4859,32],[4951,32],[5066,32],[5163,32],[5251,32],[5358,32],[5464,32],[5567,32],[5673,32],[5765,32],[5868,32],[5974,32],[6080,32],[6201,32],[6316,32],[6419,32],[6515,32],[6608,32],[6728,32],[6842,32],[19313,32],[19406,32],[19495,32],[19598,32],[19697,32],[19794,32],[19906,32],[20012,32],[20138,32],[20265,32],[20381,32],[20497,32],[20599,32],[20683,32],[20775,32],[20890,32],[20987,32],[21075,32],[21182,32],[21288,32],[21391,32],[21497,32],[21589,32],[21692,32],[21798,32],[21919,32],[22034,32],[22137,32],[22233,32],[22326,32],[22446,32],[22560,32]]}},"keywords":{}}],["http://home.apache.org/~pingsutw/submarin",{"_index":2639,"title":{},"content":{"352":{"position":[[562,42]]}},"keywords":{}}],["http://keys.gnupg.net",{"_index":2525,"title":{},"content":{"333":{"position":[[196,22]]}},"keywords":{}}],["http://localhost:32080",{"_index":2324,"title":{},"content":{"301":{"position":[[105,22]]},"868":{"position":[[89,22]]}},"keywords":{}}],["http://localhost:32080.op",{"_index":2330,"title":{},"content":{"301":{"position":[[346,27]]},"868":{"position":[[330,27]]}},"keywords":{}}],["http://localhost:4200",{"_index":2328,"title":{},"content":{"301":{"position":[[302,21],[374,21]]},"868":{"position":[[286,21],[358,21]]}},"keywords":{}}],["http://localhost:8001/api/v1/namespaces/kubernet",{"_index":3215,"title":{},"content":{"396":{"position":[[44,50]]},"923":{"position":[[44,50]]}},"keywords":{}}],["http://localhost:8080/v1/openapi.json",{"_index":3633,"title":{},"content":{"511":{"position":[[716,37]]}},"keywords":{}}],["http://localhost:8888",{"_index":349,"title":{},"content":{"21":{"position":[[354,21]]},"621":{"position":[[354,21]]}},"keywords":{}}],["http://localhost:8888/lab",{"_index":352,"title":{},"content":{"21":{"position":[[655,25]]},"621":{"position":[[655,25]]}},"keywords":{}}],["http://maven.apache.org/xsd/set",{"_index":2555,"title":{},"content":{"336":{"position":[[224,36]]}},"keywords":{}}],["http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop",{"_index":3712,"title":{},"content":{"549":{"position":[[1357,54]]},"553":{"position":[[1755,54]]},"559":{"position":[[1392,54]]},"1075":{"position":[[1357,54]]},"1079":{"position":[[1755,54]]},"1094":{"position":[[1392,54]]}},"keywords":{}}],["http://pi",{"_index":4141,"title":{},"content":{"579":{"position":[[1147,9],[1348,9],[1545,9],[1704,9],[1851,9],[1998,9],[2179,9],[2381,9],[2583,9]]},"584":{"position":[[1007,9],[1208,9],[1405,9],[1564,9],[1711,9],[1858,9],[2039,9],[2241,9],[2443,9]]},"589":{"position":[[1302,9],[1504,9],[1706,9],[1908,9],[2113,9],[2279,9],[2426,9],[2573,9],[2720,9],[2867,9],[3056,9],[3260,9],[3464,9],[3668,9],[3872,9]]},"1105":{"position":[[1147,9],[1348,9],[1545,9],[1704,9],[1851,9],[1998,9],[2179,9],[2381,9],[2583,9]]},"1110":{"position":[[1007,9],[1208,9],[1405,9],[1564,9],[1711,9],[1858,9],[2039,9],[2241,9],[2443,9]]},"1115":{"position":[[1302,9],[1504,9],[1706,9],[1908,9],[2113,9],[2279,9],[2426,9],[2573,9],[2720,9],[2867,9],[3056,9],[3260,9],[3464,9],[3668,9],[3872,9]]}},"keywords":{}}],["http://rang",{"_index":4318,"title":{},"content":{"1064":{"position":[[281,13]]}},"keywords":{}}],["http://repository.apache.org",{"_index":2618,"title":{},"content":{"350":{"position":[[48,28]]},"355":{"position":[[51,28]]}},"keywords":{}}],["http://stable.ascii",{"_index":1837,"title":{},"content":{"179":{"position":[[997,19]]},"749":{"position":[[1002,19]]}},"keywords":{}}],["http://storage.googleapis.com/tensorflow/linux/cpu/tensorflow",{"_index":3773,"title":{},"content":{"559":{"position":[[1112,61]]},"1094":{"position":[[1112,61]]}},"keywords":{}}],["http://submarine.apache.org/download.html",{"_index":3229,"title":{},"content":{"401":{"position":[[45,41]]},"928":{"position":[[45,41]]}},"keywords":{}}],["http://www.openslr.org/resources/18/data_thchs30.tgz",{"_index":2812,"title":{},"content":{"386":{"position":[[254,52]]},"913":{"position":[[254,52]]}},"keywords":{}}],["http://www.openslr.org/resources/18/resource.tgz",{"_index":2815,"title":{},"content":{"386":{"position":[[368,48]]},"913":{"position":[[368,48]]}},"keywords":{}}],["http://www.openslr.org/resources/18/t",{"_index":2813,"title":{},"content":{"386":{"position":[[312,40]]},"913":{"position":[[312,40]]}},"keywords":{}}],["http://yann.lecun.com/exdb/mnist/t10k",{"_index":792,"title":{},"content":{"84":{"position":[[566,37],[638,37],[1743,37],[1815,37]]},"683":{"position":[[566,37],[638,37],[1743,37],[1815,37]]}},"keywords":{}}],["http://yann.lecun.com/exdb/mnist/train",{"_index":787,"title":{},"content":{"84":{"position":[[420,38],[493,38],[1597,38],[1670,38]]},"683":{"position":[[420,38],[493,38],[1597,38],[1670,38]]}},"keywords":{}}],["http://{minikub",{"_index":157,"title":{},"content":{"9":{"position":[[5,16]]},"413":{"position":[[272,16]]},"598":{"position":[[5,16]]},"869":{"position":[[1413,16]]}},"keywords":{}}],["https://archive.apache.org/dist/hadoop/common/hadoop",{"_index":2754,"title":{},"content":{"375":{"position":[[1331,52]]},"549":{"position":[[1176,52]]},"902":{"position":[[1331,52]]},"1075":{"position":[[1176,52]]}},"keywords":{}}],["https://bootstrap.pypa.io/get",{"_index":3768,"title":{},"content":{"559":{"position":[[845,29]]},"1094":{"position":[[845,29]]}},"keywords":{}}],["https://cloudera.zoom.us/j/880548968",{"_index":1410,"title":{},"content":{"143":{"position":[[311,36]]},"713":{"position":[[196,36]]}},"keywords":{}}],["https://dist.apache.org/repos/dist/dev/submarin",{"_index":2527,"title":{},"content":{"334":{"position":[[67,48],[299,48]]},"347":{"position":[[72,48]]},"348":{"position":[[177,48]]}},"keywords":{}}],["https://dist.apache.org/repos/dist/dev/submarine/${release_v",{"_index":2348,"title":{},"content":{"311":{"position":[[7,67]]}},"keywords":{}}],["https://dist.apache.org/repos/dist/dev/submarine/key",{"_index":2358,"title":{},"content":{"314":{"position":[[27,53]]}},"keywords":{}}],["https://dist.apache.org/repos/dist/release/submarin",{"_index":2528,"title":{},"content":{"334":{"position":[[157,52],[1155,52]]}},"keywords":{}}],["https://dist.apache.org/repos/dist/release/submarine/key",{"_index":2641,"title":{},"content":{"352":{"position":[[774,57]]}},"keywords":{}}],["https://docs.google.com/document/d/16puo3tp4sxseldug817ghvajtiph9hyprho_jgdudvw/edit",{"_index":1411,"title":{},"content":{"143":{"position":[[357,84]]},"713":{"position":[[242,84]]}},"keywords":{}}],["https://files.pythonhosted.org/packages/33/bc/fa0b5347139cd9564f0d44ebd2b147ac97c36b2403943dbee8a25fd74012/virtualenv",{"_index":3221,"title":{},"content":{"398":{"position":[[238,117]]},"578":{"position":[[119,117]]},"583":{"position":[[116,117]]},"588":{"position":[[114,117]]},"925":{"position":[[238,117]]},"1104":{"position":[[119,117]]},"1109":{"position":[[116,117]]},"1114":{"position":[[114,117]]}},"keywords":{}}],["https://foo.com/train",{"_index":1881,"title":{},"content":{"182":{"position":[[1286,25]]},"217":{"position":[[1505,25]]},"765":{"position":[[1286,25]]},"787":{"position":[[1505,25]]}},"keywords":{}}],["https://gitbox.apache.org/repos/asf/submarine.git",{"_index":1356,"title":{},"content":{"138":{"position":[[77,49]]},"710":{"position":[[77,49]]}},"keywords":{}}],["https://github.com/${username}/submarine.git",{"_index":1189,"title":{},"content":{"121":{"position":[[111,44]]},"689":{"position":[[111,44]]}},"keywords":{}}],["https://github.com/${username}/submarine.gitclick",{"_index":1231,"title":{},"content":{"128":{"position":[[19,49]]},"696":{"position":[[19,49]]}},"keywords":{}}],["https://github.com/${username}/submarine/actionspleas",{"_index":1227,"title":{},"content":{"127":{"position":[[6,54]]},"695":{"position":[[6,54]]}},"keywords":{}}],["https://github.com/apache/submarin",{"_index":2341,"title":{},"content":{"304":{"position":[[296,35]]},"870":{"position":[[296,35]]}},"keywords":{}}],["https://github.com/apache/submarine.git",{"_index":57,"title":{},"content":{"6":{"position":[[12,39]]},"121":{"position":[[274,39]]},"380":{"position":[[10,39]]},"386":{"position":[[434,40],[485,39]]},"401":{"position":[[131,39]]},"411":{"position":[[28,39]]},"595":{"position":[[12,39]]},"689":{"position":[[274,39]]},"907":{"position":[[10,39]]},"913":{"position":[[434,40],[485,39]]},"928":{"position":[[131,39]]},"938":{"position":[[30,39]]}},"keywords":{}}],["https://github.com/apache/submarine/actionspleas",{"_index":1238,"title":{},"content":{"129":{"position":[[6,49]]},"697":{"position":[[6,49]]}},"keywords":{}}],["https://github.com/apache/submarine/releases/tag/releas",{"_index":2638,"title":{},"content":{"352":{"position":[[429,56]]}},"keywords":{}}],["https://github.com/apache/submarineclick",{"_index":1187,"title":{},"content":{"120":{"position":[[6,40]]},"688":{"position":[[6,40]]}},"keywords":{}}],["https://github.com/kaldi",{"_index":2744,"title":{},"content":{"375":{"position":[[843,24]]},"902":{"position":[[843,24]]}},"keywords":{}}],["https://github.com/kubeflow/tf",{"_index":3322,"title":{},"content":{"415":{"position":[[178,30]]},"942":{"position":[[178,30]]}},"keywords":{}}],["https://github.com/kubernet",{"_index":3199,"title":{},"content":{"391":{"position":[[326,29]]},"918":{"position":[[326,29]]}},"keywords":{}}],["https://github.com/kubernetes/git",{"_index":2088,"title":{},"content":{"217":{"position":[[2307,33]]},"787":{"position":[[2307,33]]}},"keywords":{}}],["https://github.com/linkedin/tony/tree/master/toni",{"_index":4114,"title":{},"content":{"579":{"position":[[30,49]]},"584":{"position":[[30,49]]},"1105":{"position":[[30,49]]},"1110":{"position":[[30,49]]}},"keywords":{}}],["https://github.com/pytorch/pytorch.git",{"_index":3741,"title":{},"content":{"553":{"position":[[1214,38]]},"1079":{"position":[[1214,38]]}},"keywords":{}}],["https://github.com/pytorch/vision.git",{"_index":3751,"title":{},"content":{"553":{"position":[[1500,37]]},"1079":{"position":[[1500,37]]}},"keywords":{}}],["https://github.com/settings/email",{"_index":2548,"title":{},"content":{"335":{"position":[[195,37]]}},"keywords":{}}],["https://github.com/settings/key",{"_index":2543,"title":{},"content":{"335":{"position":[[6,32]]}},"keywords":{}}],["https://helm.sh/docs/intro/instal",{"_index":2772,"title":{},"content":{"379":{"position":[[17,35]]},"906":{"position":[[17,35]]}},"keywords":{}}],["https://issues.apache.org/jira/browse/submarin",{"_index":1366,"title":{},"content":{"139":{"position":[[453,47]]},"711":{"position":[[453,47]]}},"keywords":{}}],["https://issues.apache.org/jira/projects/submarine/issues/submarine?filter=allopenissu",{"_index":1412,"title":{},"content":{"144":{"position":[[52,87]]},"714":{"position":[[52,87]]}},"keywords":{}}],["https://join.slack.com/t/th",{"_index":1405,"title":{},"content":{"143":{"position":[[95,28]]}},"keywords":{}}],["https://jupyt",{"_index":2035,"title":{},"content":{"213":{"position":[[305,15]]},"762":{"position":[[305,15]]}},"keywords":{}}],["https://medium.com/@krishnaregmi/pipenv",{"_index":1511,"title":{},"content":{"154":{"position":[[224,39]]},"724":{"position":[[224,39]]}},"keywords":{}}],["https://pypi.org/project/apach",{"_index":3227,"title":{},"content":{"400":{"position":[[110,31]]},"927":{"position":[[110,31]]}},"keywords":{}}],["https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0",{"_index":3206,"title":{},"content":{"393":{"position":[[69,61]]},"920":{"position":[[69,61]]}},"keywords":{}}],["https://repo.continuum.io/miniconda/miniconda3",{"_index":3725,"title":{},"content":{"553":{"position":[[684,46]]},"1079":{"position":[[684,46]]}},"keywords":{}}],["https://repository.apache.org/content/repositories/orgapachesubmarin",{"_index":2624,"title":{},"content":{"350":{"position":[[467,69]]},"352":{"position":[[676,69]]}},"keywords":{}}],["https://sk",{"_index":2520,"title":{},"content":{"332":{"position":[[385,11]]}},"keywords":{}}],["https://submarine.apache.org/docs/next/releases/submarin",{"_index":2661,"title":{},"content":{"357":{"position":[[532,57]]}},"keywords":{}}],["https://the",{"_index":4209,"title":{},"content":{"713":{"position":[[95,11],[148,11]]}},"keywords":{}}],["https://upload.pypi.org/legaci",{"_index":3658,"title":{},"content":{"513":{"position":[[531,31]]},"1052":{"position":[[531,31]]}},"keywords":{}}],["https://wiki.apache.org/general/boardvot",{"_index":1063,"title":{},"content":{"107":{"position":[[5355,43]]}},"keywords":{}}],["https://www.selenium.dev/selenium/docs/api/java/org/openqa/selenium/webdriver.html#get(java.lang.str",{"_index":2431,"title":{},"content":{"320":{"position":[[557,105]]},"877":{"position":[[557,105]]}},"keywords":{}}],["httpsclient",{"_index":2921,"title":{},"content":{"389":{"position":[[2777,11],[18619,11]]},"916":{"position":[[2777,11],[18619,11]]}},"keywords":{}}],["hub",{"_index":2770,"title":{},"content":{"377":{"position":[[439,4]]},"904":{"position":[[439,4]]}},"keywords":{}}],["hug",{"_index":1275,"title":{},"content":{"133":{"position":[[754,4]]},"216":{"position":[[306,5],[521,5]]},"786":{"position":[[306,5],[521,5]]}},"keywords":{}}],["hugo",{"_index":1326,"title":{},"content":{"135":{"position":[[442,5]]},"707":{"position":[[442,5]]}},"keywords":{}}],["hybrid",{"_index":1804,"title":{},"content":{"175":{"position":[[480,6]]},"745":{"position":[[480,6]]}},"keywords":{}}],["hyp",{"_index":1632,"title":{},"content":{"160":{"position":[[337,5]]},"171":{"position":[[883,5],[2021,5]]},"730":{"position":[[337,5]]},"741":{"position":[[888,5],[2033,5]]}},"keywords":{}}],["i'v",{"_index":2632,"title":{},"content":{"352":{"position":[[156,4]]}},"keywords":{}}],["i.asc",{"_index":2391,"title":{},"content":{"314":{"position":[[1929,6]]},"342":{"position":[[146,6]]},"343":{"position":[[106,6]]}},"keywords":{}}],["i.sha512",{"_index":2602,"title":{},"content":{"342":{"position":[[58,9]]}},"keywords":{}}],["iam",{"_index":1814,"title":{},"content":{"176":{"position":[[476,3]]},"746":{"position":[[477,3]]}},"keywords":{}}],["icon",{"_index":593,"title":{},"content":{"35":{"position":[[359,5]]},"627":{"position":[[359,5]]}},"keywords":{}}],["id",{"_index":487,"title":{"298":{"position":[[25,3]]},"865":{"position":[[25,3]]}},"content":{"28":{"position":[[570,4],[632,3]]},"132":{"position":[[110,3]]},"159":{"position":[[878,5]]},"262":{"position":[[353,3]]},"298":{"position":[[66,4]]},"331":{"position":[[1176,2],[1378,3]]},"332":{"position":[[237,2],[290,3]]},"389":{"position":[[2401,2],[3293,2],[6904,2],[12974,3],[13062,2],[17355,2],[18243,2],[19117,2],[22622,2],[28523,3],[28611,2],[32209,2]]},"445":{"position":[[56,3]]},"448":{"position":[[56,3]]},"451":{"position":[[56,3]]},"456":{"position":[[56,3]]},"478":{"position":[[357,3]]},"481":{"position":[[51,3]]},"484":{"position":[[54,3]]},"487":{"position":[[54,3]]},"497":{"position":[[32,3],[57,3]]},"498":{"position":[[38,3],[53,3],[78,3]]},"500":{"position":[[44,3],[69,3]]},"501":{"position":[[99,3]]},"503":{"position":[[61,3]]},"529":{"position":[[33,3],[63,2]]},"530":{"position":[[36,3]]},"533":{"position":[[37,3],[69,2]]},"534":{"position":[[40,3]]},"546":{"position":[[570,4],[632,3]]},"570":{"position":[[7666,3],[7845,3],[8024,3],[8203,3],[8382,3],[8561,3],[8740,3],[8919,3]]},"616":{"position":[[570,4],[632,3]]},"700":{"position":[[110,3]]},"729":{"position":[[878,5]]},"833":{"position":[[353,3]]},"865":{"position":[[66,4]]},"916":{"position":[[2401,2],[3293,2],[6904,2],[12974,3],[13062,2],[17355,2],[18243,2],[19117,2],[22622,2],[28523,3],[28611,2],[32209,2]]},"972":{"position":[[56,3]]},"975":{"position":[[56,3]]},"978":{"position":[[56,3]]},"983":{"position":[[56,3]]},"1010":{"position":[[357,3]]},"1013":{"position":[[51,3]]},"1016":{"position":[[54,3]]},"1019":{"position":[[54,3]]},"1024":{"position":[[32,3],[57,3]]},"1025":{"position":[[38,3],[53,3],[78,3]]},"1027":{"position":[[44,3],[69,3]]},"1028":{"position":[[99,3]]},"1030":{"position":[[61,3]]},"1034":{"position":[[201,2],[283,2]]},"1072":{"position":[[570,4],[632,3]]},"1090":{"position":[[7666,3],[7845,3],[8024,3],[8203,3],[8382,3],[8561,3],[8740,3],[8919,3]]}},"keywords":{}}],["id\":1",{"_index":3492,"title":{},"content":{"461":{"position":[[1169,7]]},"463":{"position":[[171,7]]},"988":{"position":[[1169,7]]},"990":{"position":[[171,7]]}},"keywords":{}}],["id\":2",{"_index":3521,"title":{},"content":{"466":{"position":[[1195,7]]},"469":{"position":[[191,7]]},"993":{"position":[[1195,7]]},"996":{"position":[[191,7]]}},"keywords":{}}],["id.onlymast",{"_index":3579,"title":{},"content":{"501":{"position":[[124,14]]},"1028":{"position":[[124,14]]}},"keywords":{}}],["id.polling_interv",{"_index":3588,"title":{},"content":{"503":{"position":[[86,20]]},"1030":{"position":[[86,20]]}},"keywords":{}}],["id=$1",{"_index":490,"title":{},"content":{"28":{"position":[[585,5]]},"546":{"position":[[585,5]]},"616":{"position":[[585,5]]},"1072":{"position":[[585,5]]}},"keywords":{}}],["id>apach",{"_index":2565,"title":{},"content":{"336":{"position":[[675,10]]}},"keywords":{}}],["id>apache.releases.https</id",{"_index":2564,"title":{},"content":{"336":{"position":[[538,30]]}},"keywords":{}}],["id>apache.snapshots.https</id",{"_index":2559,"title":{},"content":{"336":{"position":[[423,31]]}},"keywords":{}}],["id_5.5",{"_index":3117,"title":{},"content":{"389":{"position":[[13013,6],[28562,6]]},"916":{"position":[[13013,6],[28562,6]]}},"keywords":{}}],["idea",{"_index":1413,"title":{},"content":{"144":{"position":[[365,4]]},"331":{"position":[[1543,4],[1799,4]]},"714":{"position":[[365,4]]}},"keywords":{}}],["ideal",{"_index":1328,"title":{},"content":{"136":{"position":[[98,7]]},"155":{"position":[[110,7]]},"708":{"position":[[98,7]]},"725":{"position":[[110,7]]}},"keywords":{}}],["ident",{"_index":2150,"title":{},"content":{"242":{"position":[[134,8]]},"273":{"position":[[291,8]]},"805":{"position":[[134,8]]},"844":{"position":[[291,8]]}},"keywords":{}}],["identifi",{"_index":591,"title":{},"content":{"35":{"position":[[331,10]]},"331":{"position":[[1182,8]]},"627":{"position":[[331,10]]}},"keywords":{}}],["idx1",{"_index":791,"title":{},"content":{"84":{"position":[[539,4],[683,4],[1716,4],[1860,4]]},"683":{"position":[[539,4],[683,4],[1716,4],[1860,4]]}},"keywords":{}}],["idx3",{"_index":788,"title":{},"content":{"84":{"position":[[466,4],[611,4],[1643,4],[1788,4]]},"683":{"position":[[466,4],[611,4],[1643,4],[1788,4]]}},"keywords":{}}],["id}</usernam",{"_index":2561,"title":{},"content":{"336":{"position":[[471,14],[585,14]]}},"keywords":{}}],["ifupdown",{"_index":2869,"title":{},"content":{"389":{"position":[[2077,8],[2969,8],[4141,8],[8587,9],[8670,8],[13549,8],[17919,8],[18793,8],[19965,8],[24305,9],[24388,8],[29098,8]]},"916":{"position":[[2077,8],[2969,8],[4141,8],[8587,9],[8670,8],[13549,8],[17919,8],[18793,8],[19965,8],[24305,9],[24388,8],[29098,8]]}},"keywords":{}}],["ifupdown_0.8.10ubuntu1.4_amd64.deb",{"_index":3075,"title":{},"content":{"389":{"position":[[8617,38],[24335,38]]},"916":{"position":[[8617,38],[24335,38]]}},"keywords":{}}],["ignor",{"_index":506,"title":{},"content":{"28":{"position":[[820,6]]},"389":{"position":[[15680,9]]},"546":{"position":[[820,6]]},"616":{"position":[[820,6]]},"916":{"position":[[15680,9]]},"1072":{"position":[[820,6]]}},"keywords":{}}],["illustr",{"_index":2127,"title":{},"content":{"229":{"position":[[613,10]]},"792":{"position":[[613,10]]}},"keywords":{}}],["imag",{"_index":338,"title":{"153":{"position":[[3,5],[20,5]]},"281":{"position":[[35,6]]},"374":{"position":[[16,6]]},"375":{"position":[[21,6]]},"376":{"position":[[44,6]]},"377":{"position":[[13,6]]},"387":{"position":[[15,6]]},"548":{"position":[[7,6]]},"549":{"position":[[21,6]]},"550":{"position":[[44,6]]},"551":{"position":[[22,6]]},"552":{"position":[[7,6]]},"553":{"position":[[21,6]]},"554":{"position":[[46,6]]},"555":{"position":[[13,6]]},"556":{"position":[[22,6]]},"557":{"position":[[13,6]]},"558":{"position":[[7,6]]},"559":{"position":[[21,6]]},"560":{"position":[[49,6]]},"561":{"position":[[13,6]]},"562":{"position":[[22,6]]},"563":{"position":[[13,6]]},"575":{"position":[[22,5]]},"723":{"position":[[3,5],[20,5]]},"852":{"position":[[35,6]]},"901":{"position":[[16,6]]},"902":{"position":[[21,6]]},"903":{"position":[[44,6]]},"904":{"position":[[13,6]]},"914":{"position":[[15,6]]},"1074":{"position":[[7,6]]},"1075":{"position":[[21,6]]},"1076":{"position":[[44,6]]},"1077":{"position":[[22,6]]},"1078":{"position":[[7,6]]},"1079":{"position":[[21,6]]},"1080":{"position":[[46,6]]},"1081":{"position":[[13,6]]},"1082":{"position":[[22,6]]},"1083":{"position":[[13,6]]},"1093":{"position":[[7,6]]},"1094":{"position":[[21,6]]},"1095":{"position":[[49,6]]},"1096":{"position":[[13,6]]},"1097":{"position":[[22,6]]},"1098":{"position":[[13,6]]},"1101":{"position":[[22,5]]}},"content":{"20":{"position":[[776,5]]},"77":{"position":[[347,8],[1105,8]]},"79":{"position":[[614,8],[1194,8]]},"80":{"position":[[647,8]]},"81":{"position":[[355,8],[958,8]]},"82":{"position":[[650,8]]},"84":{"position":[[459,6],[604,6],[1636,6],[1781,6]]},"86":{"position":[[987,8]]},"89":{"position":[[984,8]]},"103":{"position":[[881,8]]},"151":{"position":[[115,5],[183,5],[217,7],[240,6],[264,5],[346,5],[875,5],[890,6]]},"152":{"position":[[133,6],[154,6],[263,5],[379,5],[457,5]]},"153":{"position":[[7,5],[20,5],[159,7],[208,5],[366,7]]},"154":{"position":[[879,6],[900,6],[1265,6]]},"155":{"position":[[137,5]]},"172":{"position":[[115,5],[179,5],[214,7]]},"179":{"position":[[1585,7]]},"182":{"position":[[1515,6]]},"190":{"position":[[637,5]]},"211":{"position":[[393,6]]},"215":{"position":[[658,6],[2098,8]]},"216":{"position":[[731,6]]},"217":{"position":[[371,6],[450,5],[616,5],[688,5],[807,6],[1944,6],[2049,6]]},"223":{"position":[[209,6]]},"224":{"position":[[340,5],[367,5]]},"226":{"position":[[497,5],[536,5]]},"229":{"position":[[331,5],[366,6],[1431,6]]},"281":{"position":[[34,5],[123,7],[154,5],[220,6],[387,6],[471,6]]},"300":{"position":[[259,5],[321,5],[590,5]]},"302":{"position":[[17,5],[67,5]]},"324":{"position":[[352,6]]},"352":{"position":[[320,5]]},"369":{"position":[[36,5]]},"372":{"position":[[233,7]]},"375":{"position":[[96,6],[358,5],[1120,6]]},"376":{"position":[[61,7]]},"377":{"position":[[22,7],[170,7],[202,7],[254,5],[353,7],[402,6]]},"380":{"position":[[273,6]]},"387":{"position":[[44,5]]},"389":{"position":[[1633,5]]},"391":{"position":[[639,5]]},"414":{"position":[[116,6]]},"415":{"position":[[557,5],[592,5],[612,6]]},"416":{"position":[[15,5]]},"422":{"position":[[137,5]]},"430":{"position":[[105,5]]},"437":{"position":[[1046,5],[1059,5]]},"438":{"position":[[313,8]]},"449":{"position":[[314,8]]},"460":{"position":[[1259,5],[1272,5]]},"461":{"position":[[955,8]]},"466":{"position":[[960,8]]},"492":{"position":[[294,8]]},"496":{"position":[[532,8]]},"497":{"position":[[539,8]]},"549":{"position":[[98,6],[339,5],[965,6]]},"550":{"position":[[76,7],[325,7]]},"551":{"position":[[67,7],[120,7],[172,5],[250,5]]},"553":{"position":[[102,6],[345,5],[1592,6]]},"554":{"position":[[78,7]]},"556":{"position":[[69,7],[122,7],[176,5]]},"557":{"position":[[41,6]]},"559":{"position":[[106,6],[345,5],[1229,6]]},"560":{"position":[[66,7]]},"562":{"position":[[58,7],[90,7],[139,5],[240,5]]},"563":{"position":[[41,6]]},"571":{"position":[[252,6]]},"575":{"position":[[71,5],[142,5]]},"580":{"position":[[1293,6],[1368,6]]},"590":{"position":[[71,6]]},"620":{"position":[[776,5]]},"669":{"position":[[987,8]]},"672":{"position":[[984,8]]},"676":{"position":[[347,8],[1105,8]]},"678":{"position":[[614,8],[1194,8]]},"679":{"position":[[647,8]]},"680":{"position":[[355,8],[958,8]]},"681":{"position":[[650,8]]},"683":{"position":[[459,6],[604,6],[1636,6],[1781,6]]},"705":{"position":[[881,8]]},"721":{"position":[[115,5],[183,5],[217,7],[240,6],[264,5],[346,5],[875,5],[890,6]]},"722":{"position":[[133,6],[154,6],[263,5],[379,5],[457,5]]},"723":{"position":[[7,5],[20,5],[159,7],[208,5],[366,7]]},"724":{"position":[[879,6],[900,6],[1265,6]]},"725":{"position":[[137,5]]},"742":{"position":[[115,5],[179,5],[214,7]]},"749":{"position":[[1590,7]]},"760":{"position":[[393,6]]},"765":{"position":[[1515,6]]},"773":{"position":[[637,5]]},"785":{"position":[[658,6],[2098,8]]},"786":{"position":[[731,6]]},"787":{"position":[[371,6],[450,5],[616,5],[688,5],[807,6],[1944,6],[2049,6]]},"792":{"position":[[331,5],[366,6],[1433,6]]},"808":{"position":[[209,6]]},"809":{"position":[[340,5],[367,5]]},"811":{"position":[[497,5],[536,5]]},"852":{"position":[[34,5],[123,7],[154,5],[220,6],[387,6],[471,6]]},"867":{"position":[[259,5],[321,5],[703,6]]},"869":{"position":[[17,5],[67,5]]},"892":{"position":[[36,5]]},"894":{"position":[[352,6]]},"902":{"position":[[96,6],[358,5],[1120,6]]},"903":{"position":[[61,7]]},"904":{"position":[[22,7],[170,7],[202,7],[254,5],[353,7],[402,6]]},"907":{"position":[[273,6]]},"914":{"position":[[44,5]]},"916":{"position":[[1633,5]]},"918":{"position":[[639,5]]},"941":{"position":[[116,6]]},"942":{"position":[[575,5],[610,5],[630,6]]},"943":{"position":[[15,5]]},"949":{"position":[[137,5]]},"957":{"position":[[105,5]]},"964":{"position":[[1046,5],[1059,5]]},"965":{"position":[[313,8]]},"976":{"position":[[314,8]]},"987":{"position":[[1259,5],[1272,5]]},"988":{"position":[[955,8]]},"993":{"position":[[960,8]]},"1006":{"position":[[294,8]]},"1023":{"position":[[532,8]]},"1024":{"position":[[539,8]]},"1075":{"position":[[98,6],[339,5],[965,6]]},"1076":{"position":[[76,7],[325,7]]},"1077":{"position":[[67,7],[120,7],[172,5],[250,5]]},"1079":{"position":[[102,6],[345,5],[1592,6]]},"1080":{"position":[[78,7]]},"1082":{"position":[[69,7],[122,7],[176,5]]},"1083":{"position":[[41,6]]},"1091":{"position":[[252,6]]},"1094":{"position":[[106,6],[345,5],[1229,6]]},"1095":{"position":[[66,7]]},"1097":{"position":[[58,7],[90,7],[139,5],[240,5]]},"1098":{"position":[[41,6]]},"1101":{"position":[[71,5],[142,5]]},"1106":{"position":[[1293,6],[1368,6]]},"1116":{"position":[[71,6]]}},"keywords":{}}],["image\":\"apache/submarine:tf",{"_index":3450,"title":{},"content":{"438":{"position":[[1223,28]]},"443":{"position":[[815,28]]},"449":{"position":[[1254,28]]},"452":{"position":[[735,28]]},"461":{"position":[[2612,28]]},"463":{"position":[[1614,28]]},"466":{"position":[[2642,28]]},"469":{"position":[[1638,28]]},"472":{"position":[[913,28]]},"965":{"position":[[1223,28]]},"970":{"position":[[815,28]]},"976":{"position":[[1254,28]]},"979":{"position":[[735,28]]},"988":{"position":[[2612,28]]},"990":{"position":[[1614,28]]},"993":{"position":[[2642,28]]},"996":{"position":[[1638,28]]},"999":{"position":[[913,28]]}},"keywords":{}}],["image\":nul",{"_index":911,"title":{},"content":{"100":{"position":[[1087,12]]},"101":{"position":[[829,12]]},"102":{"position":[[820,12]]},"423":{"position":[[1150,12]]},"425":{"position":[[455,12],[1028,12],[1347,12]]},"428":{"position":[[716,12]]},"431":{"position":[[855,12]]},"434":{"position":[[719,12]]},"438":{"position":[[1368,13],[1538,13]]},"441":{"position":[[1357,12],[1460,13],[1630,13]]},"443":{"position":[[960,13],[1130,13],[1838,12],[1941,13],[2111,13]]},"446":{"position":[[774,12],[877,13],[1047,13]]},"449":{"position":[[1399,13],[1569,13]]},"452":{"position":[[880,13],[1050,13]]},"461":{"position":[[2757,13],[2930,13]]},"463":{"position":[[1759,13],[1932,13]]},"466":{"position":[[2787,13],[2957,13]]},"469":{"position":[[1783,13],[1953,13]]},"472":{"position":[[1058,13],[1228,13]]},"479":{"position":[[1075,12]]},"482":{"position":[[822,12]]},"485":{"position":[[810,12]]},"488":{"position":[[840,12]]},"702":{"position":[[1087,12]]},"703":{"position":[[829,12]]},"704":{"position":[[820,12]]},"950":{"position":[[1150,12]]},"952":{"position":[[455,12],[1028,12],[1347,12]]},"955":{"position":[[716,12]]},"958":{"position":[[855,12]]},"961":{"position":[[719,12]]},"965":{"position":[[1368,13],[1538,13]]},"968":{"position":[[1357,12],[1460,13],[1630,13]]},"970":{"position":[[960,13],[1130,13],[1838,12],[1941,13],[2111,13]]},"973":{"position":[[774,12],[877,13],[1047,13]]},"976":{"position":[[1399,13],[1569,13]]},"979":{"position":[[880,13],[1050,13]]},"988":{"position":[[2757,13],[2930,13]]},"990":{"position":[[1759,13],[1932,13]]},"993":{"position":[[2787,13],[2957,13]]},"996":{"position":[[1783,13],[1953,13]]},"999":{"position":[[1058,13],[1228,13]]},"1011":{"position":[[1075,12]]},"1014":{"position":[[822,12]]},"1017":{"position":[[810,12]]},"1020":{"position":[[840,12]]}},"keywords":{}}],["image.cpu",{"_index":3244,"title":{},"content":{"406":{"position":[[541,9]]},"933":{"position":[[541,9]]}},"keywords":{}}],["image.embed",{"_index":3419,"title":{},"content":{"437":{"position":[[704,14]]},"964":{"position":[[704,14]]}},"keywords":{}}],["image.nam",{"_index":1486,"title":{},"content":{"152":{"position":[[473,10]]},"722":{"position":[[473,10]]}},"keywords":{}}],["image_classification.pi",{"_index":4183,"title":{},"content":{"589":{"position":[[4,23],[443,23],[626,23],[831,23]]},"590":{"position":[[513,23],[698,23],[870,23]]},"1115":{"position":[[4,23],[443,23],[626,23],[831,23]]},"1116":{"position":[[513,23],[698,23],[870,23]]}},"keywords":{}}],["images.imag",{"_index":2137,"title":{},"content":{"229":{"position":[[1541,12]]},"792":{"position":[[1543,12]]}},"keywords":{}}],["images.support",{"_index":1760,"title":{},"content":{"171":{"position":[[1282,14]]},"741":{"position":[[1294,14]]}},"keywords":{}}],["images/database/build.sh",{"_index":2275,"title":{},"content":{"281":{"position":[[499,24]]},"302":{"position":[[162,24]]},"852":{"position":[[499,24]]},"869":{"position":[[162,24]]}},"keywords":{}}],["images/submarine/build.sh",{"_index":2274,"title":{},"content":{"281":{"position":[[415,25]]},"300":{"position":[[416,25]]},"852":{"position":[[415,25]]},"867":{"position":[[416,25]]}},"keywords":{}}],["images:mini",{"_index":2698,"title":{},"content":{"372":{"position":[[788,11],[1059,11]]},"899":{"position":[[241,11],[512,11]]}},"keywords":{}}],["impact",{"_index":1307,"title":{},"content":{"133":{"position":[[2334,6]]}},"keywords":{}}],["implement",{"_index":1442,"title":{"150":{"position":[[13,14]]},"154":{"position":[[7,14]]},"156":{"position":[[7,9]]},"180":{"position":[[11,14]]},"201":{"position":[[0,14]]},"202":{"position":[[9,14]]},"214":{"position":[[8,14]]},"216":{"position":[[0,14]]},"227":{"position":[[0,10]]},"228":{"position":[[17,14]]},"243":{"position":[[9,14]]},"720":{"position":[[13,14]]},"724":{"position":[[7,14]]},"726":{"position":[[7,9]]},"750":{"position":[[0,14]]},"751":{"position":[[9,14]]},"763":{"position":[[11,14]]},"784":{"position":[[8,14]]},"786":{"position":[[0,14]]},"791":{"position":[[17,14]]},"812":{"position":[[0,10]]},"813":{"position":[[9,14]]}},"content":{"151":{"position":[[2302,15]]},"155":{"position":[[465,16],[506,15]]},"156":{"position":[[64,15],[766,14]]},"181":{"position":[[26,14]]},"184":{"position":[[131,15]]},"187":{"position":[[32,15]]},"188":{"position":[[689,15]]},"194":{"position":[[809,11],[978,10]]},"197":{"position":[[244,14]]},"201":{"position":[[31,16],[185,16],[627,14]]},"204":{"position":[[450,14]]},"210":{"position":[[142,15],[340,15]]},"211":{"position":[[112,15],[177,9]]},"213":{"position":[[25,14]]},"264":{"position":[[3,9]]},"721":{"position":[[2302,15]]},"725":{"position":[[465,16],[506,15]]},"726":{"position":[[64,15],[766,14]]},"750":{"position":[[31,16],[185,16],[628,14]]},"753":{"position":[[450,14]]},"759":{"position":[[142,15],[340,15]]},"760":{"position":[[112,15],[177,9]]},"762":{"position":[[25,14]]},"764":{"position":[[26,14]]},"767":{"position":[[131,15]]},"770":{"position":[[32,15]]},"771":{"position":[[689,15]]},"777":{"position":[[815,11],[1258,10]]},"780":{"position":[[251,14]]},"835":{"position":[[3,9]]}},"keywords":{}}],["implementation.md",{"_index":1886,"title":{},"content":{"183":{"position":[[28,17]]},"766":{"position":[[28,17]]}},"keywords":{}}],["implicit",{"_index":2444,"title":{},"content":{"322":{"position":[[99,8],[141,8]]},"879":{"position":[[99,8],[141,8]]}},"keywords":{}}],["import",{"_index":959,"title":{},"content":{"107":{"position":[[981,9]]},"159":{"position":[[2574,9]]},"314":{"position":[[0,6],[110,6],[124,6]]},"371":{"position":[[165,6]]},"389":{"position":[[2394,6],[3286,6],[6897,6],[12967,6],[13006,6],[13055,6],[17348,6],[18236,6],[19110,6],[22615,6],[28516,6],[28555,6],[28604,6],[32202,6]]},"407":{"position":[[157,6],[179,6],[242,6],[310,6],[382,6],[453,6],[514,6]]},"415":{"position":[[314,6],[349,6],[395,6],[417,6]]},"475":{"position":[[53,6],[73,6],[87,6]]},"496":{"position":[[217,6]]},"509":{"position":[[29,7]]},"511":{"position":[[872,6],[1047,6]]},"729":{"position":[[2574,9]]},"898":{"position":[[165,6]]},"916":{"position":[[2394,6],[3286,6],[6897,6],[12967,6],[13006,6],[13055,6],[17348,6],[18236,6],[19110,6],[22615,6],[28516,6],[28555,6],[28604,6],[32202,6]]},"934":{"position":[[157,6],[179,6],[246,6],[318,6],[394,6],[469,6],[534,6]]},"942":{"position":[[314,6],[349,6],[395,6],[432,6]]},"1002":{"position":[[53,6],[73,6],[87,6]]},"1023":{"position":[[217,6]]},"1033":{"position":[[323,6]]},"1035":{"position":[[115,6]]},"1036":{"position":[[128,6]]},"1037":{"position":[[185,6]]},"1038":{"position":[[256,6]]},"1048":{"position":[[29,7]]}},"keywords":{}}],["improv",{"_index":1235,"title":{},"content":{"128":{"position":[[203,7]]},"133":{"position":[[773,11],[1118,12]]},"137":{"position":[[237,7]]},"273":{"position":[[1091,7]]},"696":{"position":[[203,7]]},"709":{"position":[[237,7]]},"844":{"position":[[1091,7]]}},"keywords":{}}],["inc",{"_index":2364,"title":{},"content":{"314":{"position":[[330,4]]},"331":{"position":[[396,4]]}},"keywords":{}}],["inclu",{"_index":3787,"title":{},"content":{"562":{"position":[[354,7]]},"1097":{"position":[[354,7]]}},"keywords":{}}],["includ",{"_index":619,"title":{},"content":{"35":{"position":[[1085,8],[1491,8],[3629,8]]},"107":{"position":[[353,9],[3091,7],[3982,7],[4162,9],[6950,7],[8883,8]]},"130":{"position":[[522,10]]},"141":{"position":[[457,9]]},"151":{"position":[[1277,8]]},"152":{"position":[[442,8]]},"153":{"position":[[476,7]]},"154":{"position":[[788,9]]},"156":{"position":[[381,7],[437,8]]},"171":{"position":[[607,8],[754,9]]},"172":{"position":[[588,8]]},"175":{"position":[[336,7]]},"176":{"position":[[90,8],[1402,7]]},"179":{"position":[[1474,8]]},"182":{"position":[[183,8]]},"184":{"position":[[175,8]]},"211":{"position":[[287,7]]},"217":{"position":[[471,7]]},"218":{"position":[[63,10]]},"229":{"position":[[1214,8]]},"244":{"position":[[17,8]]},"248":{"position":[[1009,9]]},"312":{"position":[[38,8]]},"313":{"position":[[34,7],[114,8],[158,8],[219,8]]},"338":{"position":[[141,9]]},"339":{"position":[[78,10]]},"366":{"position":[[0,7]]},"377":{"position":[[266,8],[316,8]]},"383":{"position":[[54,9]]},"407":{"position":[[31,8]]},"437":{"position":[[822,10]]},"471":{"position":[[186,9]]},"501":{"position":[[150,7]]},"511":{"position":[[759,8]]},"551":{"position":[[184,8],[262,8]]},"553":{"position":[[938,7]]},"556":{"position":[[188,8],[264,8]]},"560":{"position":[[339,8]]},"562":{"position":[[151,8],[252,8],[306,8]]},"627":{"position":[[1085,8],[1491,8],[3629,8]]},"698":{"position":[[522,10]]},"721":{"position":[[1277,8]]},"722":{"position":[[442,8]]},"723":{"position":[[476,7]]},"724":{"position":[[788,9]]},"726":{"position":[[381,7],[437,8]]},"741":{"position":[[612,8],[759,9]]},"742":{"position":[[588,8]]},"745":{"position":[[336,7]]},"746":{"position":[[90,8],[1405,7]]},"749":{"position":[[1479,8]]},"760":{"position":[[287,7]]},"765":{"position":[[183,8]]},"767":{"position":[[175,8]]},"787":{"position":[[471,7]]},"788":{"position":[[63,10]]},"792":{"position":[[1215,8]]},"814":{"position":[[17,8]]},"818":{"position":[[1009,9]]},"889":{"position":[[0,7]]},"904":{"position":[[266,8],[316,8]]},"910":{"position":[[54,9]]},"934":{"position":[[31,8]]},"964":{"position":[[822,10]]},"998":{"position":[[186,9]]},"1028":{"position":[[150,7]]},"1077":{"position":[[184,8],[262,8]]},"1079":{"position":[[938,7]]},"1082":{"position":[[188,8],[264,8]]},"1095":{"position":[[339,8]]},"1097":{"position":[[151,8],[252,8],[306,8]]}},"keywords":{}}],["incognito",{"_index":174,"title":{},"content":{"12":{"position":[[137,9]]},"604":{"position":[[137,9]]}},"keywords":{}}],["incompat",{"_index":4307,"title":{},"content":{"1053":{"position":[[335,12]]}},"keywords":{}}],["incontribut",{"_index":1346,"title":{},"content":{"137":{"position":[[65,14]]},"709":{"position":[[65,14]]}},"keywords":{}}],["increas",{"_index":1278,"title":{},"content":{"133":{"position":[[1004,8]]},"248":{"position":[[708,10]]},"818":{"position":[[708,10]]}},"keywords":{}}],["increment",{"_index":2183,"title":{},"content":{"259":{"position":[[583,11]]},"830":{"position":[[583,11]]}},"keywords":{}}],["incub",{"_index":955,"title":{},"content":{"107":{"position":[[660,9]]}},"keywords":{}}],["indep",{"_index":1724,"title":{"264":{"position":[[0,12]]},"835":{"position":[[0,12]]}},"content":{"168":{"position":[[452,11],[510,12]]},"248":{"position":[[853,11]]},"738":{"position":[[452,11],[510,12]]},"818":{"position":[[853,11]]}},"keywords":{}}],["index",{"_index":3826,"title":{},"content":{"569":{"position":[[539,8],[1289,5],[1574,8]]},"579":{"position":[[1133,6],[1334,6],[1531,6],[2165,6],[2367,6],[2569,6]]},"584":{"position":[[993,6],[1194,6],[1391,6],[2025,6],[2227,6],[2429,6]]},"589":{"position":[[1287,6],[1489,6],[1691,6],[1893,6],[2098,6],[3041,6],[3245,6],[3449,6],[3653,6],[3857,6]]},"1089":{"position":[[539,8],[1289,5],[1574,8]]},"1105":{"position":[[1133,6],[1334,6],[1531,6],[2165,6],[2367,6],[2569,6]]},"1110":{"position":[[993,6],[1194,6],[1391,6],[2025,6],[2227,6],[2429,6]]},"1115":{"position":[[1287,6],[1489,6],[1691,6],[1893,6],[2098,6],[3041,6],[3245,6],[3449,6],[3653,6],[3857,6]]}},"keywords":{}}],["indic",{"_index":1074,"title":{},"content":{"107":{"position":[[6052,9],[6349,9],[6434,9],[6563,9]]},"130":{"position":[[71,8],[214,10]]},"133":{"position":[[144,8]]},"273":{"position":[[806,9]]},"389":{"position":[[1562,9]]},"698":{"position":[[71,8],[214,10]]},"844":{"position":[[806,9]]},"916":{"position":[[1562,9]]}},"keywords":{}}],["individu",{"_index":629,"title":{"138":{"position":[[7,10]]},"710":{"position":[[7,10]]}},"content":{"35":{"position":[[1590,12]]},"107":{"position":[[875,10]]},"263":{"position":[[389,10]]},"389":{"position":[[1800,10]]},"627":{"position":[[1590,12]]},"834":{"position":[[389,10]]},"916":{"position":[[1800,10]]}},"keywords":{}}],["industri",{"_index":1570,"title":{},"content":{"159":{"position":[[327,8],[556,10],[2167,8],[2556,8],[2708,8]]},"729":{"position":[[327,8],[556,10],[2167,8],[2556,8],[2708,8]]}},"keywords":{}}],["inet_interfac",{"_index":3144,"title":{},"content":{"389":{"position":[[14529,16],[30078,16]]},"916":{"position":[[14529,16],[30078,16]]}},"keywords":{}}],["inet_protocol",{"_index":3145,"title":{},"content":{"389":{"position":[[14558,15],[30107,15]]},"916":{"position":[[14558,15],[30107,15]]}},"keywords":{}}],["influenc",{"_index":1279,"title":{},"content":{"133":{"position":[[1018,10]]}},"keywords":{}}],["info",{"_index":423,"title":{},"content":{"25":{"position":[[1634,4]]},"195":{"position":[[81,4],[322,4]]},"224":{"position":[[31,4]]},"225":{"position":[[17,4]]},"226":{"position":[[22,5]]},"227":{"position":[[9,4]]},"230":{"position":[[797,4]]},"231":{"position":[[981,5]]},"496":{"position":[[157,4]]},"497":{"position":[[184,4]]},"498":{"position":[[30,4],[103,4]]},"500":{"position":[[94,4]]},"501":{"position":[[243,4]]},"543":{"position":[[1634,4]]},"579":{"position":[[1065,4],[1266,4],[1467,4],[1664,4],[1807,4],[1954,4],[2101,4],[2299,4],[2501,4]]},"584":{"position":[[925,4],[1126,4],[1327,4],[1524,4],[1667,4],[1814,4],[1961,4],[2159,4],[2361,4]]},"589":{"position":[[1219,4],[1421,4],[1623,4],[1825,4],[2027,4],[2232,4],[2382,4],[2529,4],[2676,4],[2823,4],[2970,4],[3177,4],[3381,4],[3585,4],[3789,4]]},"613":{"position":[[1634,4]]},"778":{"position":[[81,4],[322,4]]},"793":{"position":[[797,4]]},"794":{"position":[[1234,5]]},"809":{"position":[[31,4]]},"810":{"position":[[17,4]]},"811":{"position":[[22,5]]},"812":{"position":[[9,4]]},"1023":{"position":[[157,4]]},"1024":{"position":[[184,4]]},"1025":{"position":[[30,4],[103,4]]},"1027":{"position":[[94,4]]},"1028":{"position":[[243,4]]},"1069":{"position":[[1634,4]]},"1105":{"position":[[1065,4],[1266,4],[1467,4],[1664,4],[1807,4],[1954,4],[2101,4],[2299,4],[2501,4]]},"1110":{"position":[[925,4],[1126,4],[1327,4],[1524,4],[1667,4],[1814,4],[1961,4],[2159,4],[2361,4]]},"1115":{"position":[[1219,4],[1421,4],[1623,4],[1825,4],[2027,4],[2232,4],[2382,4],[2529,4],[2676,4],[2823,4],[2970,4],[3177,4],[3381,4],[3585,4],[3789,4]]}},"keywords":{}}],["info:tensorflow:averag",{"_index":3993,"title":{},"content":{"570":{"position":[[14646,23],[14713,23],[14780,23],[14846,23],[14913,23],[14980,23],[15047,23],[15234,23],[15301,23],[15368,23],[15436,23],[15503,23],[15571,23],[15639,23],[15707,23],[15775,23],[15843,23]]},"1090":{"position":[[14646,23],[14713,23],[14780,23],[14846,23],[14913,23],[14980,23],[15047,23],[15234,23],[15301,23],[15368,23],[15436,23],[15503,23],[15571,23],[15639,23],[15707,23],[15775,23],[15843,23]]}},"keywords":{}}],["info:tensorflow:cr",{"_index":3921,"title":{},"content":{"570":{"position":[[4678,22],[14095,22]]},"1090":{"position":[[4678,22],[14095,22]]}},"keywords":{}}],["info:tensorflow:evalu",{"_index":3961,"title":{},"content":{"570":{"position":[[9016,26],[9051,26],[9086,26],[9121,26],[9156,26],[9191,26],[9226,26],[9261,26],[9296,26],[9331,26],[9367,26],[9403,26],[9439,26],[9479,26]]},"1090":{"position":[[9016,26],[9051,26],[9086,26],[9121,26],[9156,26],[9191,26],[9226,26],[9261,26],[9296,26],[9331,26],[9367,26],[9403,26],[9439,26],[9479,26]]}},"keywords":{}}],["info:tensorflow:finish",{"_index":3976,"title":{},"content":{"570":{"position":[[9516,24]]},"1090":{"position":[[9516,24]]}},"keywords":{}}],["info:tensorflow:imag",{"_index":3891,"title":{},"content":{"570":{"position":[[2012,21],[2096,21],[2182,21],[2268,21],[2354,21],[2440,21],[2526,21],[2612,21],[2707,21],[2793,21],[2881,21],[2969,21],[3057,21],[3145,21],[3231,21],[3319,21],[3407,21],[3495,21],[3583,21],[3671,21],[3759,21],[3852,21],[3936,21],[4022,21],[4108,21],[4194,21],[4280,21],[4366,21],[4452,21],[4526,21],[5218,21],[5302,21],[5388,21],[5474,21],[5560,21],[5646,21],[5732,21],[5818,21],[5913,21],[5999,21],[6087,21],[6175,21],[6263,21],[6351,21],[6439,21],[6527,21],[6620,21],[6704,21],[6790,21],[6876,21],[6962,21],[7048,21],[7134,21],[7220,21],[7294,21],[11429,21],[11513,21],[11599,21],[11685,21],[11771,21],[11857,21],[11943,21],[12029,21],[12124,21],[12210,21],[12298,21],[12386,21],[12474,21],[12562,21],[12648,21],[12736,21],[12824,21],[12912,21],[13000,21],[13088,21],[13176,21],[13269,21],[13353,21],[13439,21],[13525,21],[13611,21],[13697,21],[13783,21],[13869,21],[13943,21]]},"1090":{"position":[[2012,21],[2096,21],[2182,21],[2268,21],[2354,21],[2440,21],[2526,21],[2612,21],[2707,21],[2793,21],[2881,21],[2969,21],[3057,21],[3145,21],[3231,21],[3319,21],[3407,21],[3495,21],[3583,21],[3671,21],[3759,21],[3852,21],[3936,21],[4022,21],[4108,21],[4194,21],[4280,21],[4366,21],[4452,21],[4526,21],[5218,21],[5302,21],[5388,21],[5474,21],[5560,21],[5646,21],[5732,21],[5818,21],[5913,21],[5999,21],[6087,21],[6175,21],[6263,21],[6351,21],[6439,21],[6527,21],[6620,21],[6704,21],[6790,21],[6876,21],[6962,21],[7048,21],[7134,21],[7220,21],[7294,21],[11429,21],[11513,21],[11599,21],[11685,21],[11771,21],[11857,21],[11943,21],[12029,21],[12124,21],[12210,21],[12298,21],[12386,21],[12474,21],[12562,21],[12648,21],[12736,21],[12824,21],[12912,21],[13000,21],[13088,21],[13176,21],[13269,21],[13353,21],[13439,21],[13525,21],[13611,21],[13697,21],[13783,21],[13869,21],[13943,21]]}},"keywords":{}}],["info:tensorflow:loss",{"_index":3929,"title":{},"content":{"570":{"position":[[5125,20],[5166,20],[14553,20],[14594,20],[15114,20],[15169,20],[15911,20]]},"1090":{"position":[[5125,20],[5166,20],[14553,20],[14594,20],[15114,20],[15169,20],[15911,20]]}},"keywords":{}}],["info:tensorflow:restor",{"_index":3923,"title":{},"content":{"570":{"position":[[4722,25],[8937,25]]},"1090":{"position":[[4722,25],[8937,25]]}},"keywords":{}}],["info:tensorflow:sav",{"_index":3928,"title":{},"content":{"570":{"position":[[5047,22],[9575,22]]},"1090":{"position":[[5047,22],[9575,22]]}},"keywords":{}}],["info:tensorflow:start",{"_index":3933,"title":{},"content":{"570":{"position":[[7446,24]]},"1090":{"position":[[7446,24]]}},"keywords":{}}],["info:tensorflow:syncreplicasv2",{"_index":3918,"title":{},"content":{"570":{"position":[[4600,31],[7368,31],[14017,31]]},"1090":{"position":[[4600,31],[7368,31],[14017,31]]}},"keywords":{}}],["info:tensorflow:us",{"_index":3841,"title":{},"content":{"570":{"position":[[589,21],[656,21],[10068,21],[10135,21],[16143,21],[16210,21]]},"1090":{"position":[[589,21],[656,21],[10068,21],[10135,21],[16143,21],[16210,21]]}},"keywords":{}}],["inform",{"_index":480,"title":{},"content":{"28":{"position":[[442,11]]},"33":{"position":[[421,11]]},"35":{"position":[[975,11],[1351,11]]},"55":{"position":[[642,11]]},"107":{"position":[[687,11]]},"133":{"position":[[1813,12]]},"212":{"position":[[45,12]]},"215":{"position":[[1728,12],[1872,11]]},"218":{"position":[[301,11]]},"262":{"position":[[15,11],[100,11],[247,11],[325,11]]},"270":{"position":[[251,11],[526,12]]},"271":{"position":[[25,11]]},"273":{"position":[[777,11]]},"331":{"position":[[2376,12]]},"389":{"position":[[1976,14],[17553,14],[17818,14],[32407,14]]},"496":{"position":[[91,11]]},"497":{"position":[[119,11]]},"546":{"position":[[442,11]]},"616":{"position":[[442,11]]},"625":{"position":[[421,11]]},"627":{"position":[[975,11],[1351,11]]},"647":{"position":[[642,11]]},"761":{"position":[[45,12]]},"785":{"position":[[1728,12],[1872,11]]},"788":{"position":[[301,11]]},"833":{"position":[[15,11],[100,11],[247,11],[325,11]]},"841":{"position":[[251,11],[526,12]]},"842":{"position":[[25,11]]},"844":{"position":[[777,11]]},"916":{"position":[[1976,14],[17553,14],[17818,14],[32407,14]]},"1023":{"position":[[91,11]]},"1024":{"position":[[119,11]]},"1072":{"position":[[442,11]]}},"keywords":{}}],["infrastructur",{"_index":1567,"title":{},"content":{"159":{"position":[[187,14]]},"162":{"position":[[731,15]]},"218":{"position":[[435,16]]},"222":{"position":[[407,14]]},"729":{"position":[[187,14]]},"732":{"position":[[731,15]]},"788":{"position":[[435,16]]},"807":{"position":[[407,14]]}},"keywords":{}}],["ingress",{"_index":2801,"title":{},"content":{"384":{"position":[[356,7],[916,7]]},"911":{"position":[[356,7],[916,7]]}},"keywords":{}}],["inherit",{"_index":1962,"title":{},"content":{"195":{"position":[[371,7]]},"778":{"position":[[371,7]]}},"keywords":{}}],["inhttps://github.com/apache/submarin",{"_index":1321,"title":{},"content":{"135":{"position":[[262,37]]},"707":{"position":[[262,37]]}},"keywords":{}}],["init",{"_index":426,"title":{"523":{"position":[[0,4]]}},"content":{"25":{"position":[[1718,6]]},"523":{"position":[[17,4]]},"543":{"position":[[1718,6]]},"553":{"position":[[1296,4]]},"613":{"position":[[1718,6]]},"1069":{"position":[[1718,6]]},"1079":{"position":[[1296,4]]}},"keywords":{}}],["initcontain",{"_index":2080,"title":{},"content":{"217":{"position":[[1655,13],[2012,15],[2275,13],[2424,13]]},"787":{"position":[[1655,13],[2012,15],[2275,13],[2424,13]]}},"keywords":{}}],["initi",{"_index":644,"title":{},"content":{"35":{"position":[[2884,7],[2938,10],[3115,10],[3369,10],[3556,10]]},"55":{"position":[[1327,7]]},"107":{"position":[[2536,10]]},"130":{"position":[[318,8]]},"141":{"position":[[149,8],[618,9],[637,8],[1041,9],[1269,9],[1700,9],[1841,9]]},"167":{"position":[[0,10],[227,10]]},"204":{"position":[[524,12]]},"389":{"position":[[15690,12],[15849,7],[15880,12],[15931,12],[16018,12],[16079,12]]},"523":{"position":[[55,11]]},"570":{"position":[[17010,10],[17169,10],[17324,10]]},"627":{"position":[[2884,7],[2938,10],[3115,10],[3369,10],[3556,10]]},"647":{"position":[[1327,7]]},"698":{"position":[[318,8]]},"737":{"position":[[0,10],[227,10]]},"753":{"position":[[524,12]]},"916":{"position":[[15690,12],[15849,7],[15880,12],[15931,12],[16018,12],[16079,12]]},"1033":{"position":[[0,10]]},"1090":{"position":[[17010,10],[17169,10],[17324,10]]}},"keywords":{}}],["inject",{"_index":3247,"title":{},"content":{"406":{"position":[[595,7]]},"933":{"position":[[595,7]]}},"keywords":{}}],["input",{"_index":1747,"title":{},"content":{"171":{"position":[[868,6],[1437,8]]},"175":{"position":[[371,5]]},"181":{"position":[[456,6],[1188,5]]},"189":{"position":[[1404,6]]},"199":{"position":[[369,8]]},"200":{"position":[[1135,5]]},"520":{"position":[[289,5]]},"741":{"position":[[873,6],[1449,8]]},"745":{"position":[[371,5]]},"764":{"position":[[456,6],[1193,5]]},"772":{"position":[[1404,6]]},"782":{"position":[[369,8]]},"783":{"position":[[1135,5]]}},"keywords":{}}],["input.train_data",{"_index":1980,"title":{},"content":{"199":{"position":[[1053,16]]},"782":{"position":[[1053,16]]}},"keywords":{}}],["input=\"s3://bucket/input",{"_index":1907,"title":{},"content":{"189":{"position":[[439,24],[946,24]]},"772":{"position":[[439,24],[946,24]]}},"keywords":{}}],["input=s3://bucket/input",{"_index":1869,"title":{},"content":{"182":{"position":[[394,23],[1389,23]]},"765":{"position":[[394,23],[1389,23]]}},"keywords":{}}],["input_dim",{"_index":3676,"title":{"520":{"position":[[100,10]]}},"content":{},"keywords":{}}],["input_path",{"_index":369,"title":{},"content":{"23":{"position":[[316,10]]},"389":{"position":[[977,10]]},"541":{"position":[[316,10]]},"579":{"position":[[400,10]]},"580":{"position":[[334,10]]},"585":{"position":[[324,10]]},"589":{"position":[[321,10]]},"590":{"position":[[393,10]]},"611":{"position":[[316,10]]},"916":{"position":[[977,10]]},"1067":{"position":[[316,10]]},"1105":{"position":[[400,10]]},"1106":{"position":[[334,10]]},"1111":{"position":[[324,10]]},"1115":{"position":[[321,10]]},"1116":{"position":[[393,10]]}},"keywords":{}}],["input_shape=(28",{"_index":3347,"title":{},"content":{"415":{"position":[[883,16]]},"942":{"position":[[901,16]]}},"keywords":{}}],["insecur",{"_index":4131,"title":{},"content":{"579":{"position":[[775,8]]},"584":{"position":[[632,8]]},"589":{"position":[[923,8]]},"590":{"position":[[974,8]]},"1105":{"position":[[775,8]]},"1110":{"position":[[632,8]]},"1115":{"position":[[923,8]]},"1116":{"position":[[974,8]]}},"keywords":{}}],["insid",{"_index":1497,"title":{"191":{"position":[[27,6]]},"774":{"position":[[27,6]]}},"content":{"153":{"position":[[214,6]]},"155":{"position":[[153,6]]},"159":{"position":[[770,6]]},"200":{"position":[[1013,6],[2493,6]]},"208":{"position":[[638,6]]},"229":{"position":[[1297,6]]},"230":{"position":[[253,6]]},"407":{"position":[[1515,6]]},"580":{"position":[[1279,6],[1354,6]]},"723":{"position":[[214,6]]},"725":{"position":[[153,6]]},"729":{"position":[[770,6]]},"757":{"position":[[638,6]]},"783":{"position":[[1013,6],[2493,6]]},"792":{"position":[[1298,6]]},"793":{"position":[[253,6]]},"934":{"position":[[1535,6]]},"1106":{"position":[[1279,6],[1354,6]]}},"keywords":{}}],["inspect",{"_index":3556,"title":{},"content":{"491":{"position":[[177,7]]},"493":{"position":[[78,7]]},"1005":{"position":[[177,7]]},"1007":{"position":[[78,7]]}},"keywords":{}}],["instal",{"_index":54,"title":{"6":{"position":[[0,7]]},"7":{"position":[[7,12]]},"306":{"position":[[0,12]]},"330":{"position":[[4,7]]},"381":{"position":[[7,12]]},"399":{"position":[[0,7]]},"400":{"position":[[0,7]]},"401":{"position":[[0,7]]},"409":{"position":[[0,12]]},"595":{"position":[[0,7]]},"596":{"position":[[7,12]]},"872":{"position":[[0,12]]},"908":{"position":[[7,12]]},"926":{"position":[[0,7]]},"927":{"position":[[0,7]]},"928":{"position":[[0,7]]},"936":{"position":[[0,12]]},"1063":{"position":[[0,12]]}},"content":{"6":{"position":[[74,7]]},"7":{"position":[[16,10],[519,13],[623,8],[904,9]]},"151":{"position":[[462,8]]},"156":{"position":[[536,10],[598,10]]},"162":{"position":[[868,7]]},"172":{"position":[[339,8]]},"212":{"position":[[288,7],[518,9]]},"298":{"position":[[71,7]]},"300":{"position":[[102,9],[206,7]]},"301":{"position":[[144,7],[210,7]]},"306":{"position":[[35,7],[81,7]]},"320":{"position":[[1320,7]]},"325":{"position":[[275,7],[404,7]]},"330":{"position":[[9,12],[117,7]]},"341":{"position":[[321,7]]},"352":{"position":[[962,7]]},"369":{"position":[[257,10],[316,10],[337,9],[384,12],[445,10],[470,7]]},"372":{"position":[[515,7]]},"375":{"position":[[385,7],[498,7],[514,7],[1138,7],[1200,7],[1232,7]]},"377":{"position":[[111,12]]},"379":{"position":[[0,7]]},"380":{"position":[[68,7],[217,12]]},"383":{"position":[[926,7],[980,7],[1018,7]]},"384":{"position":[[1064,10]]},"389":{"position":[[2033,10],[2873,10],[3337,10],[7625,11],[17588,10],[17875,10],[18715,10],[19161,10],[23343,11],[32442,10]]},"398":{"position":[[417,7]]},"400":{"position":[[155,7],[189,7],[216,7],[245,7]]},"401":{"position":[[305,7]]},"402":{"position":[[16,9],[171,10]]},"406":{"position":[[747,7]]},"411":{"position":[[73,7],[153,7]]},"507":{"position":[[64,10],[217,7],[273,7],[341,7],[380,7],[496,7],[574,8],[621,7]]},"511":{"position":[[1169,7]]},"512":{"position":[[189,7]]},"513":{"position":[[177,7]]},"549":{"position":[[370,7],[405,7],[579,7],[691,7],[753,7],[776,8],[820,7],[983,7],[1093,7],[1125,7]]},"553":{"position":[[373,7],[490,7],[506,7],[869,7],[986,7],[1096,7],[1452,7],[1558,7],[1610,7],[1672,7],[1704,7]]},"559":{"position":[[372,7],[471,7],[487,7],[782,7],[947,7],[1102,7],[1247,7],[1309,7],[1341,7]]},"565":{"position":[[0,7]]},"568":{"position":[[208,7]]},"578":{"position":[[103,10],[298,7],[437,7]]},"583":{"position":[[100,10],[348,7]]},"588":{"position":[[98,10],[346,7]]},"595":{"position":[[74,7]]},"596":{"position":[[16,10],[519,13],[623,8],[904,9]]},"721":{"position":[[462,8]]},"726":{"position":[[536,10],[598,10]]},"732":{"position":[[868,7]]},"742":{"position":[[339,8]]},"761":{"position":[[288,7],[518,9]]},"865":{"position":[[71,7]]},"867":{"position":[[102,9]]},"868":{"position":[[128,7],[194,7]]},"869":{"position":[[494,9],[641,7],[780,7]]},"872":{"position":[[35,7],[81,7]]},"877":{"position":[[1320,7]]},"892":{"position":[[257,10],[316,10],[337,9],[384,12],[445,10],[470,7]]},"895":{"position":[[275,7],[404,7]]},"902":{"position":[[385,7],[498,7],[514,7],[1138,7],[1200,7],[1232,7]]},"904":{"position":[[111,12]]},"906":{"position":[[0,7]]},"907":{"position":[[68,7],[217,12]]},"910":{"position":[[926,7],[980,7],[1018,7]]},"911":{"position":[[1064,10]]},"916":{"position":[[2033,10],[2873,10],[3337,10],[7625,11],[17588,10],[17875,10],[18715,10],[19161,10],[23343,11],[32442,10]]},"925":{"position":[[417,7]]},"927":{"position":[[155,7],[189,7],[216,7],[245,7]]},"928":{"position":[[305,7]]},"929":{"position":[[16,9],[171,10]]},"938":{"position":[[75,7],[133,7]]},"1046":{"position":[[64,10],[217,7],[314,7],[349,7],[429,7],[539,7],[574,8],[621,7]]},"1051":{"position":[[177,7]]},"1052":{"position":[[177,7]]},"1075":{"position":[[370,7],[405,7],[579,7],[691,7],[753,7],[776,8],[820,7],[983,7],[1093,7],[1125,7]]},"1079":{"position":[[373,7],[490,7],[506,7],[869,7],[986,7],[1096,7],[1452,7],[1558,7],[1610,7],[1672,7],[1704,7]]},"1085":{"position":[[0,7]]},"1088":{"position":[[208,7]]},"1094":{"position":[[372,7],[471,7],[487,7],[782,7],[947,7],[1102,7],[1247,7],[1309,7],[1341,7]]},"1104":{"position":[[103,10],[298,7],[437,7]]},"1109":{"position":[[100,10],[348,7]]},"1114":{"position":[[98,10],[346,7]]}},"keywords":{}}],["installeda",{"_index":4107,"title":{},"content":{"577":{"position":[[68,10]]},"582":{"position":[[65,10]]},"587":{"position":[[56,10]]},"1103":{"position":[[68,10]]},"1108":{"position":[[65,10]]},"1113":{"position":[[56,10]]}},"keywords":{}}],["instanc",{"_index":851,"title":{"100":{"position":[[18,8]]},"101":{"position":[[14,9]]},"102":{"position":[[17,8]]},"103":{"position":[[20,8]]},"477":{"position":[[18,8]]},"480":{"position":[[14,9]]},"483":{"position":[[17,8]]},"486":{"position":[[20,8]]},"702":{"position":[[18,8]]},"703":{"position":[[14,9]]},"704":{"position":[[17,8]]},"705":{"position":[[20,8]]},"1009":{"position":[[18,8]]},"1012":{"position":[[14,9]]},"1015":{"position":[[17,8]]},"1018":{"position":[[20,8]]}},"content":{"93":{"position":[[209,11]]},"94":{"position":[[220,10]]},"95":{"position":[[368,10]]},"96":{"position":[[228,10]]},"97":{"position":[[278,10]]},"98":{"position":[[293,10]]},"100":{"position":[[460,10],[670,8]]},"101":{"position":[[199,11],[413,8]]},"102":{"position":[[195,10],[404,8]]},"103":{"position":[[208,10],[428,8]]},"105":{"position":[[338,10]]},"106":{"position":[[278,10]]},"109":{"position":[[343,10]]},"110":{"position":[[202,11]]},"111":{"position":[[221,10]]},"112":{"position":[[327,10]]},"113":{"position":[[229,10]]},"114":{"position":[[271,10]]},"115":{"position":[[267,10]]},"151":{"position":[[373,8]]},"170":{"position":[[526,8]]},"204":{"position":[[97,9]]},"208":{"position":[[513,8],[741,9]]},"215":{"position":[[1016,10]]},"229":{"position":[[414,8],[1083,9]]},"248":{"position":[[750,9]]},"336":{"position":[[363,10]]},"479":{"position":[[420,10],[633,8]]},"482":{"position":[[181,11]]},"485":{"position":[[172,10]]},"488":{"position":[[179,10],[395,8]]},"702":{"position":[[460,10],[670,8]]},"703":{"position":[[199,11],[413,8]]},"704":{"position":[[195,10],[404,8]]},"705":{"position":[[208,10],[428,8]]},"721":{"position":[[373,8]]},"740":{"position":[[526,8]]},"753":{"position":[[97,9]]},"757":{"position":[[513,8],[741,9]]},"785":{"position":[[1016,10]]},"792":{"position":[[414,8],[1084,9]]},"818":{"position":[[750,9]]},"1011":{"position":[[420,10],[633,8]]},"1014":{"position":[[181,11]]},"1017":{"position":[[172,10]]},"1020":{"position":[[179,10],[395,8]]},"1033":{"position":[[26,9],[291,8]]}},"keywords":{}}],["instantan",{"_index":2251,"title":{},"content":{"273":{"position":[[931,13]]},"844":{"position":[[931,13]]}},"keywords":{}}],["instanti",{"_index":1946,"title":{},"content":{"194":{"position":[[605,11]]},"777":{"position":[[611,11]]}},"keywords":{}}],["instead",{"_index":1748,"title":{},"content":{"171":{"position":[[906,7]]},"217":{"position":[[1753,7]]},"741":{"position":[[911,7]]},"787":{"position":[[1753,7]]}},"keywords":{}}],["instruct",{"_index":1350,"title":{},"content":{"137":{"position":[[154,8]]},"138":{"position":[[203,12]]},"568":{"position":[[379,12]]},"569":{"position":[[191,12]]},"709":{"position":[[154,8]]},"710":{"position":[[203,12]]},"1088":{"position":[[379,12]]},"1089":{"position":[[191,12]]}},"keywords":{}}],["instruction.start",{"_index":3648,"title":{},"content":{"512":{"position":[[221,17]]},"1051":{"position":[[209,17]]}},"keywords":{}}],["int",{"_index":2184,"title":{},"content":{"261":{"position":[[126,10]]},"511":{"position":[[1333,3],[1388,4]]},"832":{"position":[[126,10]]},"1037":{"position":[[122,6]]}},"keywords":{}}],["integ",{"_index":3422,"title":{},"content":{"437":{"position":[[955,7]]},"460":{"position":[[1168,7]]},"519":{"position":[[132,7]]},"964":{"position":[[955,7]]},"987":{"position":[[1168,7]]},"1038":{"position":[[129,7]]},"1059":{"position":[[132,7]]}},"keywords":{}}],["integr",{"_index":601,"title":{"318":{"position":[[20,11]]},"323":{"position":[[11,11]]},"371":{"position":[[11,9]]},"875":{"position":[[20,11]]},"893":{"position":[[11,11]]},"898":{"position":[[11,9]]}},"content":{"35":{"position":[[534,10]]},"159":{"position":[[2076,10]]},"179":{"position":[[1431,9]]},"299":{"position":[[210,11]]},"319":{"position":[[48,11]]},"324":{"position":[[48,11]]},"371":{"position":[[36,9]]},"510":{"position":[[224,11]]},"627":{"position":[[534,10]]},"729":{"position":[[2076,10]]},"749":{"position":[[1436,9]]},"866":{"position":[[210,11]]},"876":{"position":[[48,11]]},"894":{"position":[[48,11]]},"898":{"position":[[36,9]]},"1049":{"position":[[224,11]]},"1062":{"position":[[15,9]]}},"keywords":{}}],["integrated:submarin",{"_index":600,"title":{},"content":{"35":{"position":[[493,20]]},"627":{"position":[[493,20]]}},"keywords":{}}],["integrationteste2e.md",{"_index":2333,"title":{},"content":{"301":{"position":[[468,21]]},"868":{"position":[[452,21]]}},"keywords":{}}],["integrationtestk8s.md",{"_index":2320,"title":{},"content":{"299":{"position":[[228,21]]},"866":{"position":[[228,21]]}},"keywords":{}}],["intellij",{"_index":1261,"title":{},"content":{"132":{"position":[[191,8]]},"700":{"position":[[191,8]]}},"keywords":{}}],["intend",{"_index":1024,"title":{},"content":{"107":{"position":[[3403,6]]},"193":{"position":[[87,8]]},"776":{"position":[[87,8]]}},"keywords":{}}],["interact",{"_index":1309,"title":{"163":{"position":[[37,8]]},"204":{"position":[[7,11]]},"205":{"position":[[8,11]]},"733":{"position":[[37,8]]},"753":{"position":[[7,11]]},"754":{"position":[[8,11]]}},"content":{"133":{"position":[[2443,11]]},"159":{"position":[[1066,11]]},"163":{"position":[[397,12]]},"181":{"position":[[139,8]]},"190":{"position":[[241,11]]},"215":{"position":[[35,8],[1044,8]]},"218":{"position":[[493,8]]},"229":{"position":[[781,8]]},"508":{"position":[[180,11]]},"729":{"position":[[1066,11]]},"733":{"position":[[397,12]]},"764":{"position":[[139,8]]},"773":{"position":[[241,11]]},"785":{"position":[[35,8],[1044,8]]},"788":{"position":[[493,8]]},"792":{"position":[[781,8]]},"1047":{"position":[[180,11]]}},"keywords":{}}],["interfac",{"_index":641,"title":{},"content":{"35":{"position":[[2024,9]]},"159":{"position":[[1140,10]]},"194":{"position":[[1039,10]]},"200":{"position":[[2533,9],[2557,9]]},"222":{"position":[[456,9]]},"251":{"position":[[51,10],[76,10]]},"361":{"position":[[16,9]]},"368":{"position":[[89,9],[113,10],[136,9]]},"627":{"position":[[2024,9]]},"729":{"position":[[1140,10]]},"777":{"position":[[1319,10]]},"783":{"position":[[2533,9],[2557,9]]},"807":{"position":[[456,9]]},"821":{"position":[[51,10],[76,10]]},"883":{"position":[[16,9]]},"891":{"position":[[89,9],[113,10],[136,9]]}},"keywords":{}}],["interpret",{"_index":669,"title":{"40":{"position":[[0,12]]},"60":{"position":[[0,12]]},"632":{"position":[[0,12]]},"652":{"position":[[0,12]]}},"content":{"259":{"position":[[323,11]]},"262":{"position":[[214,11]]},"263":{"position":[[298,11]]},"270":{"position":[[396,11],[490,11],[700,11],[862,11]]},"271":{"position":[[458,11],[508,11],[558,11],[601,11]]},"273":{"position":[[72,11],[151,11],[373,11],[514,11],[1315,11]]},"830":{"position":[[323,11]]},"833":{"position":[[214,11]]},"834":{"position":[[298,11]]},"841":{"position":[[396,11],[490,11],[700,11],[862,11]]},"842":{"position":[[458,11],[508,11],[558,11],[601,11]]},"844":{"position":[[72,11],[151,11],[373,11],[514,11],[1315,11]]}},"keywords":{}}],["interpretermeta:key=interpretergroupid,value={intp_tserver_host",{"_index":2236,"title":{},"content":{"271":{"position":[[341,72]]},"842":{"position":[[341,72]]}},"keywords":{}}],["intp_start_tim",{"_index":2240,"title":{},"content":{"271":{"position":[[532,15]]},"842":{"position":[[532,15]]}},"keywords":{}}],["intp_tserver_port",{"_index":2239,"title":{},"content":{"271":{"position":[[480,17]]},"842":{"position":[[480,17]]}},"keywords":{}}],["intra_op_parallelism_thread",{"_index":3857,"title":{},"content":{"570":{"position":[[1038,29],[4937,29],[10520,29],[14443,29],[16589,29]]},"1090":{"position":[[1038,29],[4937,29],[10520,29],[14443,29],[16589,29]]}},"keywords":{}}],["intric",{"_index":1581,"title":{},"content":{"159":{"position":[[752,9]]},"729":{"position":[[752,9]]}},"keywords":{}}],["introduct",{"_index":2155,"title":{"246":{"position":[[0,12]]},"259":{"position":[[0,12]]},"319":{"position":[[0,12]]},"324":{"position":[[0,12]]},"359":{"position":[[3,12]]},"816":{"position":[[0,12]]},"830":{"position":[[0,12]]},"876":{"position":[[0,12]]},"881":{"position":[[3,12]]},"894":{"position":[[0,12]]}},"content":{},"keywords":{}}],["invalid",{"_index":1627,"title":{},"content":{"160":{"position":[[172,7]]},"730":{"position":[[172,7]]}},"keywords":{}}],["invest",{"_index":1504,"title":{},"content":{"154":{"position":[[6,13]]},"724":{"position":[[6,13]]}},"keywords":{}}],["invit",{"_index":979,"title":{},"content":{"107":{"position":[[1613,7],[1676,11],[1982,10],[2991,7],[4445,10]]},"133":{"position":[[2367,8]]},"141":{"position":[[1292,10],[1335,10],[1434,12],[1447,10],[1623,11]]},"145":{"position":[[155,6]]},"715":{"position":[[155,6]]}},"keywords":{}}],["invok",{"_index":1543,"title":{"196":{"position":[[0,6]]},"779":{"position":[[0,6]]}},"content":{"156":{"position":[[881,6],[1302,6]]},"192":{"position":[[121,6]]},"200":{"position":[[105,6]]},"389":{"position":[[14957,6],[15007,6],[15506,6],[15556,6],[16201,6],[16251,6],[16996,6],[17046,6],[30506,6],[30556,6],[31055,6],[31105,6],[31850,6],[31900,6]]},"726":{"position":[[881,6],[1302,6]]},"775":{"position":[[121,6]]},"783":{"position":[[105,6]]},"916":{"position":[[14957,6],[15007,6],[15506,6],[15556,6],[16201,6],[16251,6],[16996,6],[17046,6],[30506,6],[30556,6],[31055,6],[31105,6],[31850,6],[31900,6]]}},"keywords":{}}],["involv",{"_index":1420,"title":{},"content":{"145":{"position":[[30,8]]},"193":{"position":[[413,9]]},"274":{"position":[[278,8]]},"715":{"position":[[30,8]]},"776":{"position":[[413,9]]},"845":{"position":[[278,8]]}},"keywords":{}}],["io.takari:maven:0.7.7:wrapp",{"_index":2282,"title":{},"content":{"283":{"position":[[144,29]]},"854":{"position":[[144,29]]}},"keywords":{}}],["ioexcept",{"_index":448,"title":{},"content":{"26":{"position":[[134,11]]},"544":{"position":[[134,11]]},"614":{"position":[[134,11]]},"1070":{"position":[[134,11]]}},"keywords":{}}],["ip",{"_index":145,"title":{},"content":{"8":{"position":[[98,2],[123,2],[143,2]]},"212":{"position":[[565,2]]},"262":{"position":[[177,2]]},"268":{"position":[[146,2]]},"270":{"position":[[239,2]]},"271":{"position":[[188,2],[284,2],[477,2]]},"383":{"position":[[887,2],[1163,2],[1210,3],[1285,3]]},"413":{"position":[[44,2],[56,2],[76,2]]},"597":{"position":[[98,2],[123,2],[143,2]]},"761":{"position":[[565,2]]},"833":{"position":[[177,2]]},"839":{"position":[[146,2]]},"841":{"position":[[239,2]]},"842":{"position":[[188,2],[284,2],[477,2]]},"869":{"position":[[1156,2],[1168,2],[1188,2]]},"910":{"position":[[887,2],[1163,2],[1210,3],[1285,3]]}},"keywords":{}}],["ip2",{"_index":2214,"title":{},"content":{"268":{"position":[[124,4]]},"839":{"position":[[124,4]]}},"keywords":{}}],["ip3",{"_index":2215,"title":{},"content":{"268":{"position":[[129,4]]},"839":{"position":[[129,4]]}},"keywords":{}}],["ip:8000",{"_index":3824,"title":{},"content":{"569":{"position":[[406,10],[428,10],[458,10],[1441,10],[1463,10],[1493,10]]},"570":{"position":[[1358,9],[16909,9],[17069,8],[17383,8]]},"1089":{"position":[[406,10],[428,10],[458,10],[1441,10],[1463,10],[1493,10]]},"1090":{"position":[[1358,9],[16909,9],[17069,8],[17383,8]]}},"keywords":{}}],["iproute2",{"_index":2870,"title":{},"content":{"389":{"position":[[2086,8],[2483,8],[2978,8],[4029,8],[8419,9],[8509,8],[13500,8],[17928,8],[18325,8],[18802,8],[19853,8],[24137,9],[24227,8],[29049,8]]},"916":{"position":[[2086,8],[2483,8],[2978,8],[4029,8],[8419,9],[8509,8],[13500,8],[17928,8],[18325,8],[18802,8],[19853,8],[24137,9],[24227,8],[29049,8]]}},"keywords":{}}],["iproute2_4.3.0",{"_index":3073,"title":{},"content":{"389":{"position":[[8449,18],[24167,18]]},"916":{"position":[[8449,18],[24167,18]]}},"keywords":{}}],["iputil",{"_index":2726,"title":{},"content":{"375":{"position":[[558,7]]},"902":{"position":[[558,7]]}},"keywords":{}}],["ipykernel",{"_index":3704,"title":{},"content":{"549":{"position":[[851,9]]},"559":{"position":[[973,9]]},"1075":{"position":[[851,9]]},"1094":{"position":[[973,9]]}},"keywords":{}}],["ipykernel.kernelspec",{"_index":3708,"title":{},"content":{"549":{"position":[[923,20]]},"559":{"position":[[1058,20]]},"1075":{"position":[[923,20]]},"1094":{"position":[[1058,20]]}},"keywords":{}}],["ipynb",{"_index":2052,"title":{},"content":{"215":{"position":[[1965,8]]},"785":{"position":[[1965,8]]}},"keywords":{}}],["ipython",{"_index":3731,"title":{},"content":{"553":{"position":[[922,7]]},"1079":{"position":[[922,7]]}},"keywords":{}}],["ip}:32080",{"_index":3317,"title":{},"content":{"413":{"position":[[289,10]]},"869":{"position":[[1430,10]]}},"keywords":{}}],["ip}:32080(from",{"_index":158,"title":{},"content":{"9":{"position":[[22,14]]},"598":{"position":[[22,14]]}},"keywords":{}}],["isc",{"_index":2871,"title":{},"content":{"389":{"position":[[2095,3],[2111,3],[2521,3],[2987,3],[3003,3],[4500,3],[4616,3],[9153,3],[9190,7],[9253,3],[9334,3],[9371,7],[9434,3],[13751,3],[13803,3],[17937,3],[17953,3],[18363,3],[18811,3],[18827,3],[20324,3],[20440,3],[24871,3],[24908,7],[24971,3],[25052,3],[25089,7],[25152,3],[29300,3],[29352,3]]},"916":{"position":[[2095,3],[2111,3],[2521,3],[2987,3],[3003,3],[4500,3],[4616,3],[9153,3],[9190,7],[9253,3],[9334,3],[9371,7],[9434,3],[13751,3],[13803,3],[17937,3],[17953,3],[18363,3],[18811,3],[18827,3],[20324,3],[20440,3],[24871,3],[24908,7],[24971,3],[25052,3],[25089,7],[25152,3],[29300,3],[29352,3]]}},"keywords":{}}],["isort",{"_index":3603,"title":{},"content":{"509":{"position":[[4,5]]},"1048":{"position":[[4,5]]}},"keywords":{}}],["issu",{"_index":114,"title":{"24":{"position":[[0,7]]},"25":{"position":[[0,5]]},"26":{"position":[[0,5]]},"27":{"position":[[0,5]]},"28":{"position":[[0,5]]},"29":{"position":[[0,5]]},"542":{"position":[[0,7]]},"543":{"position":[[0,5]]},"544":{"position":[[0,5]]},"545":{"position":[[0,5]]},"546":{"position":[[0,5]]},"547":{"position":[[0,5]]},"612":{"position":[[0,7]]},"613":{"position":[[0,5]]},"614":{"position":[[0,5]]},"615":{"position":[[0,5]]},"616":{"position":[[0,5]]},"617":{"position":[[0,5]]},"1068":{"position":[[0,7]]},"1069":{"position":[[0,5]]},"1070":{"position":[[0,5]]},"1071":{"position":[[0,5]]},"1072":{"position":[[0,5]]},"1073":{"position":[[0,5]]}},"content":{"7":{"position":[[508,5]]},"107":{"position":[[6734,6]]},"122":{"position":[[47,7],[192,5],[244,5],[281,5],[357,5]]},"123":{"position":[[141,5]]},"133":{"position":[[1692,6],[1745,7],[1778,7]]},"139":{"position":[[148,6],[351,6]]},"144":{"position":[[37,5],[153,6],[407,5],[507,5]]},"145":{"position":[[455,7]]},"194":{"position":[[591,6]]},"219":{"position":[[401,6]]},"578":{"position":[[783,6]]},"591":{"position":[[235,6]]},"596":{"position":[[508,5]]},"690":{"position":[[47,7],[192,5],[244,5],[281,5],[357,5]]},"691":{"position":[[141,5]]},"711":{"position":[[148,6],[351,6]]},"714":{"position":[[37,5],[153,6],[407,5],[507,5]]},"715":{"position":[[466,7]]},"777":{"position":[[597,6]]},"789":{"position":[[401,6]]},"1104":{"position":[[783,6]]},"1117":{"position":[[235,6]]}},"keywords":{}}],["issues.cr",{"_index":1204,"title":{},"content":{"122":{"position":[[219,13]]},"690":{"position":[[219,13]]}},"keywords":{}}],["issueupd",{"_index":1281,"title":{},"content":{"133":{"position":[[1148,11]]}},"keywords":{}}],["issue’",{"_index":1295,"title":{},"content":{"133":{"position":[[1799,7]]}},"keywords":{}}],["it'",{"_index":253,"title":{},"content":{"16":{"position":[[761,4]]},"165":{"position":[[426,4]]},"225":{"position":[[344,4],[399,4]]},"357":{"position":[[238,4]]},"398":{"position":[[35,4]]},"517":{"position":[[353,4]]},"519":{"position":[[195,4]]},"608":{"position":[[761,4]]},"735":{"position":[[426,4]]},"810":{"position":[[365,4],[452,4]]},"925":{"position":[[35,4]]},"1057":{"position":[[353,4]]},"1059":{"position":[[195,4]]}},"keywords":{}}],["item",{"_index":567,"title":{},"content":{"33":{"position":[[289,5]]},"34":{"position":[[73,5]]},"35":{"position":[[1414,4]]},"107":{"position":[[6127,5]]},"133":{"position":[[2161,5]]},"160":{"position":[[588,4]]},"181":{"position":[[1154,6]]},"268":{"position":[[68,5]]},"269":{"position":[[159,5]]},"270":{"position":[[146,5]]},"336":{"position":[[111,4]]},"625":{"position":[[289,5]]},"626":{"position":[[73,5]]},"627":{"position":[[1414,4]]},"730":{"position":[[588,4]]},"764":{"position":[[1159,6]]},"839":{"position":[[68,5]]},"840":{"position":[[159,5]]},"841":{"position":[[146,5]]}},"keywords":{}}],["iter",{"_index":1868,"title":{},"content":{"182":{"position":[[379,9],[1374,9]]},"189":{"position":[[424,9],[931,9]]},"765":{"position":[[379,9],[1374,9]]},"772":{"position":[[424,9],[931,9]]}},"keywords":{}}],["itself",{"_index":1815,"title":{},"content":{"176":{"position":[[555,7]]},"195":{"position":[[398,7]]},"259":{"position":[[749,6]]},"746":{"position":[[556,7]]},"778":{"position":[[398,7]]},"830":{"position":[[749,6]]}},"keywords":{}}],["it‘",{"_index":1428,"title":{},"content":{"145":{"position":[[363,4]]},"715":{"position":[[363,4]]}},"keywords":{}}],["j",{"_index":2749,"title":{},"content":{"375":{"position":[[977,1],[1066,1],[1088,1]]},"902":{"position":[[977,1],[1066,1],[1088,1]]}},"keywords":{}}],["jan",{"_index":63,"title":{},"content":{"6":{"position":[[156,3]]},"372":{"position":[[1341,3]]},"595":{"position":[[156,3]]},"899":{"position":[[794,3]]}},"keywords":{}}],["jar",{"_index":219,"title":{"345":{"position":[[16,3]]}},"content":{"15":{"position":[[124,3],[240,3]]},"16":{"position":[[668,4],[713,3]]},"194":{"position":[[437,4],[485,4]]},"300":{"position":[[193,3]]},"389":{"position":[[300,3]]},"580":{"position":[[1515,3]]},"607":{"position":[[124,3],[240,3]]},"608":{"position":[[668,4],[713,3]]},"777":{"position":[[443,4],[491,4]]},"867":{"position":[[193,3]]},"916":{"position":[[300,3]]},"1106":{"position":[[1515,3]]}},"keywords":{}}],["java",{"_index":239,"title":{"287":{"position":[[0,4]]},"858":{"position":[[0,4]]}},"content":{"16":{"position":[[257,4],[284,5],[318,4],[545,4]]},"132":{"position":[[36,4]]},"194":{"position":[[1034,4]]},"230":{"position":[[912,4]]},"511":{"position":[[204,4]]},"579":{"position":[[292,4]]},"580":{"position":[[186,4]]},"584":{"position":[[289,4]]},"585":{"position":[[186,4]]},"589":{"position":[[229,4]]},"590":{"position":[[264,4]]},"608":{"position":[[257,4],[284,5],[318,4],[545,4]]},"700":{"position":[[36,4]]},"777":{"position":[[1314,4]]},"793":{"position":[[912,4]]},"1105":{"position":[[292,4]]},"1106":{"position":[[186,4]]},"1110":{"position":[[289,4]]},"1111":{"position":[[186,4]]},"1115":{"position":[[229,4]]},"1116":{"position":[[264,4]]}},"keywords":{}}],["java.io.ioexcept",{"_index":449,"title":{},"content":{"26":{"position":[[165,20]]},"544":{"position":[[165,20]]},"614":{"position":[[165,20]]},"1070":{"position":[[165,20]]}},"keywords":{}}],["java.lang.processbuilder.start(processbuilder.java:1048",{"_index":455,"title":{},"content":{"26":{"position":[[288,56]]},"544":{"position":[[288,56]]},"614":{"position":[[288,56]]},"1070":{"position":[[288,56]]}},"keywords":{}}],["java/python/r",{"_index":1841,"title":{},"content":{"179":{"position":[[1376,16]]},"749":{"position":[[1381,16]]}},"keywords":{}}],["java_hom",{"_index":4167,"title":{},"content":{"580":{"position":[[1269,9]]},"1106":{"position":[[1269,9]]}},"keywords":{}}],["java_home=/usr/lib/jvm/java",{"_index":2753,"title":{},"content":{"375":{"position":[[1278,27]]},"549":{"position":[[1019,27]]},"580":{"position":[[758,27]]},"585":{"position":[[468,27]]},"902":{"position":[[1278,27]]},"1075":{"position":[[1019,27]]},"1106":{"position":[[758,27]]},"1111":{"position":[[468,27]]}},"keywords":{}}],["javascript",{"_index":2340,"title":{},"content":{"304":{"position":[[262,10]]},"870":{"position":[[262,10]]}},"keywords":{}}],["jdbc",{"_index":218,"title":{},"content":{"15":{"position":[[119,4]]},"16":{"position":[[663,4],[708,4]]},"516":{"position":[[136,4]]},"607":{"position":[[119,4]]},"608":{"position":[[663,4],[708,4]]},"1056":{"position":[[136,4]]}},"keywords":{}}],["jdk",{"_index":2264,"title":{},"content":{"279":{"position":[[0,3]]},"287":{"position":[[0,3]]},"297":{"position":[[0,3]]},"375":{"position":[[316,3],[552,3],[1221,3]]},"549":{"position":[[297,3],[1114,3]]},"553":{"position":[[303,3],[1693,3]]},"559":{"position":[[303,3],[1330,3]]},"850":{"position":[[0,3]]},"864":{"position":[[0,3]]},"902":{"position":[[316,3],[552,3],[1221,3]]},"1075":{"position":[[297,3],[1114,3]]},"1079":{"position":[[303,3],[1693,3]]},"1094":{"position":[[303,3],[1330,3]]}},"keywords":{}}],["jeps",{"_index":2256,"title":{},"content":{"274":{"position":[[327,6]]},"845":{"position":[[327,6]]}},"keywords":{}}],["jetti",{"_index":287,"title":{},"content":{"17":{"position":[[727,5],[1194,5]]},"368":{"position":[[23,5]]},"609":{"position":[[727,5],[1194,5]]},"891":{"position":[[23,5]]}},"keywords":{}}],["jira",{"_index":1200,"title":{"122":{"position":[[20,4]]},"690":{"position":[[20,4]]}},"content":{"122":{"position":[[42,4],[97,4],[187,4],[239,4],[301,4]]},"133":{"position":[[1702,4]]},"141":{"position":[[1996,4]]},"690":{"position":[[42,4],[97,4],[187,4],[239,4],[301,4]]}},"keywords":{}}],["jira_numb",{"_index":1215,"title":{},"content":{"123":{"position":[[157,14],[198,14]]},"124":{"position":[[39,14],[157,15]]},"125":{"position":[[15,14]]},"126":{"position":[[26,14]]},"131":{"position":[[30,14]]},"691":{"position":[[157,14],[198,14]]},"692":{"position":[[39,14],[157,15]]},"693":{"position":[[15,14]]},"694":{"position":[[26,14]]},"699":{"position":[[30,14]]}},"keywords":{}}],["jirago",{"_index":1365,"title":{},"content":{"139":{"position":[[420,6]]},"711":{"position":[[420,6]]}},"keywords":{}}],["jk",{"_index":283,"title":{},"content":{"17":{"position":[[636,3],[1051,3]]},"609":{"position":[[636,3],[1051,3]]}},"keywords":{}}],["job",{"_index":23,"title":{"23":{"position":[[23,3]]},"41":{"position":[[0,3]]},"61":{"position":[[0,3]]},"174":{"position":[[21,3]]},"388":{"position":[[10,4]]},"541":{"position":[[23,3]]},"611":{"position":[[23,3]]},"633":{"position":[[0,3]]},"653":{"position":[[0,3]]},"744":{"position":[[21,3]]},"915":{"position":[[10,4]]},"1067":{"position":[[23,3]]}},"content":{"1":{"position":[[267,4]]},"2":{"position":[[58,4]]},"7":{"position":[[416,3]]},"23":{"position":[[40,3],[636,3],[907,3]]},"152":{"position":[[340,3]]},"156":{"position":[[1380,5]]},"162":{"position":[[486,4],[635,4]]},"163":{"position":[[501,3],[575,3]]},"167":{"position":[[73,4],[172,5]]},"168":{"position":[[198,4]]},"170":{"position":[[418,4]]},"171":{"position":[[100,4],[1135,4],[1223,4]]},"182":{"position":[[709,3],[761,4]]},"189":{"position":[[137,3]]},"194":{"position":[[889,3]]},"196":{"position":[[781,3]]},"199":{"position":[[956,4]]},"200":{"position":[[1836,3]]},"215":{"position":[[1528,4]]},"217":{"position":[[1570,4],[1960,3]]},"229":{"position":[[1093,5]]},"230":{"position":[[89,5],[759,3],[808,4]]},"231":{"position":[[977,3],[1035,3],[1066,3],[1094,3]]},"248":{"position":[[356,5],[374,3],[590,5],[698,3]]},"259":{"position":[[134,3],[150,3],[166,3],[527,3]]},"389":{"position":[[367,3]]},"407":{"position":[[1658,4]]},"412":{"position":[[616,3]]},"539":{"position":[[49,4],[100,4],[149,4]]},"541":{"position":[[40,3],[636,3],[907,3]]},"566":{"position":[[129,3],[345,3],[655,3]]},"568":{"position":[[641,4],[704,3]]},"570":{"position":[[483,3],[9980,3],[16101,3],[17042,3],[17201,3],[17356,3]]},"578":{"position":[[680,4]]},"579":{"position":[[333,3],[351,3],[1017,4]]},"580":{"position":[[227,3],[245,3],[616,3]]},"584":{"position":[[330,3],[353,3],[877,4]]},"585":{"position":[[227,3],[250,3]]},"589":{"position":[[270,3],[291,3],[1171,4]]},"590":{"position":[[305,3],[326,3]]},"591":{"position":[[77,5]]},"596":{"position":[[416,3]]},"601":{"position":[[267,4]]},"602":{"position":[[58,4]]},"611":{"position":[[40,3],[636,3],[907,3]]},"722":{"position":[[340,3]]},"726":{"position":[[1380,5]]},"732":{"position":[[486,4],[635,4]]},"733":{"position":[[501,3],[575,3]]},"737":{"position":[[73,4],[172,5]]},"738":{"position":[[198,4]]},"740":{"position":[[418,4]]},"741":{"position":[[100,4],[1146,4],[1235,4]]},"765":{"position":[[709,3],[761,4]]},"772":{"position":[[137,3]]},"777":{"position":[[1016,4],[1169,3]]},"779":{"position":[[781,3]]},"782":{"position":[[956,4]]},"783":{"position":[[1836,3]]},"785":{"position":[[1528,4]]},"787":{"position":[[1570,4],[1960,3]]},"792":{"position":[[1094,5]]},"793":{"position":[[89,5],[759,3],[808,4]]},"794":{"position":[[1230,3],[1288,3],[1319,3],[1347,3]]},"818":{"position":[[356,5],[374,3],[590,5],[698,3]]},"830":{"position":[[134,3],[150,3],[166,3],[527,3]]},"916":{"position":[[367,3]]},"934":{"position":[[1678,4]]},"939":{"position":[[580,3]]},"1034":{"position":[[197,3],[279,3]]},"1065":{"position":[[49,4],[100,4],[149,4]]},"1067":{"position":[[40,3],[636,3],[907,3]]},"1086":{"position":[[129,3],[345,3],[655,3]]},"1088":{"position":[[641,4],[704,3]]},"1090":{"position":[[483,3],[9980,3],[16101,3],[17042,3],[17201,3],[17356,3]]},"1104":{"position":[[680,4]]},"1105":{"position":[[333,3],[351,3],[1017,4]]},"1106":{"position":[[227,3],[245,3],[616,3]]},"1110":{"position":[[330,3],[353,3],[877,4]]},"1111":{"position":[[227,3],[250,3]]},"1115":{"position":[[270,3],[291,3],[1171,4]]},"1116":{"position":[[305,3],[326,3]]},"1117":{"position":[[77,5]]}},"keywords":{}}],["job'",{"_index":1687,"title":{},"content":{"163":{"position":[[463,5]]},"733":{"position":[[463,5]]}},"keywords":{}}],["job.git",{"_index":1882,"title":{},"content":{"182":{"position":[[1312,8]]},"217":{"position":[[1531,8]]},"765":{"position":[[1312,8]]},"787":{"position":[[1531,8]]}},"keywords":{}}],["job.pi",{"_index":1844,"title":{},"content":{"181":{"position":[[485,7]]},"764":{"position":[[485,7]]}},"keywords":{}}],["job.tar.gz",{"_index":1866,"title":{},"content":{"182":{"position":[[333,11]]},"189":{"position":[[89,10],[361,11]]},"765":{"position":[[333,11]]},"772":{"position":[[89,10],[361,11]]}},"keywords":{}}],["job/training.pi",{"_index":1884,"title":{},"content":{"182":{"position":[[1356,15]]},"765":{"position":[[1356,15]]}},"keywords":{}}],["job1",{"_index":2143,"title":{},"content":{"231":{"position":[[267,7]]},"794":{"position":[[79,7],[717,7]]}},"keywords":{}}],["job2",{"_index":2144,"title":{},"content":{"231":{"position":[[442,7]]},"794":{"position":[[298,7],[903,7]]}},"keywords":{}}],["job:master/replica:0/task:0",{"_index":3988,"title":{},"content":{"570":{"position":[[14274,28]]},"1090":{"position":[[14274,28]]}},"keywords":{}}],["job_id",{"_index":4273,"title":{},"content":{"1034":{"position":[[148,9]]}},"keywords":{}}],["jobdir",{"_index":382,"title":{},"content":{"23":{"position":[[684,6],[955,6]]},"541":{"position":[[684,6],[955,6]]},"611":{"position":[[684,6],[955,6]]},"1067":{"position":[[684,6],[955,6]]}},"keywords":{}}],["jobmanag",{"_index":2141,"title":{},"content":{"230":{"position":[[698,10]]},"231":{"position":[[658,10]]},"793":{"position":[[698,10]]},"794":{"position":[[806,10]]}},"keywords":{}}],["jobs/servic",{"_index":1658,"title":{},"content":{"162":{"position":[[8,13]]},"732":{"position":[[8,13]]}},"keywords":{}}],["join",{"_index":1393,"title":{},"content":{"141":{"position":[[1461,4]]},"143":{"position":[[217,4],[296,4]]},"160":{"position":[[247,4]]},"730":{"position":[[247,4]]}},"keywords":{}}],["journalctl",{"_index":462,"title":{},"content":{"27":{"position":[[59,10]]},"545":{"position":[[59,10]]},"615":{"position":[[59,10]]},"1071":{"position":[[59,10]]}},"keywords":{}}],["json",{"_index":724,"title":{"496":{"position":[[35,5]]},"497":{"position":[[43,5]]},"1023":{"position":[[35,5]]},"1024":{"position":[[43,5]]}},"content":{"77":{"position":[[124,6],[719,6],[882,6]]},"78":{"position":[[124,6],[866,6],[1029,6]]},"79":{"position":[[228,6],[391,6],[1042,6]]},"80":{"position":[[261,6],[424,6]]},"81":{"position":[[132,6],[735,6]]},"82":{"position":[[264,6],[427,6]]},"438":{"position":[[90,6],[703,6],[921,6]]},"441":{"position":[[90,6],[823,6],[1041,6]]},"443":{"position":[[1304,6],[1522,6]]},"446":{"position":[[240,6],[458,6]]},"449":{"position":[[91,6],[734,6],[952,6]]},"452":{"position":[[243,6],[433,6]]},"496":{"position":[[309,6]]},"497":{"position":[[316,6]]},"676":{"position":[[124,6],[719,6],[882,6]]},"677":{"position":[[124,6],[866,6],[1029,6]]},"678":{"position":[[228,6],[391,6],[1042,6]]},"679":{"position":[[261,6],[424,6]]},"680":{"position":[[132,6],[735,6]]},"681":{"position":[[264,6],[427,6]]},"965":{"position":[[90,6],[703,6],[921,6]]},"968":{"position":[[90,6],[823,6],[1041,6]]},"970":{"position":[[1304,6],[1522,6]]},"973":{"position":[[240,6],[458,6]]},"976":{"position":[[91,6],[734,6],[952,6]]},"979":{"position":[[243,6],[433,6]]},"1023":{"position":[[309,6]]},"1024":{"position":[[316,6]]}},"keywords":{}}],["json.dump",{"_index":3825,"title":{},"content":{"569":{"position":[[481,11],[1516,11]]},"1089":{"position":[[481,11],[1516,11]]}},"keywords":{}}],["jul",{"_index":2693,"title":{},"content":{"372":{"position":[[582,3],[1124,3]]},"899":{"position":[[35,3],[577,3]]}},"keywords":{}}],["jump",{"_index":1654,"title":{},"content":{"161":{"position":[[896,7]]},"731":{"position":[[896,7]]}},"keywords":{}}],["jupyt",{"_index":301,"title":{"18":{"position":[[6,7]]},"21":{"position":[[7,7]]},"404":{"position":[[0,7]]},"618":{"position":[[6,7]]},"621":{"position":[[7,7]]},"931":{"position":[[0,7]]}},"content":{"21":{"position":[[82,7],[267,7],[477,8],[499,7],[582,7]]},"35":{"position":[[3460,7]]},"55":{"position":[[1571,7]]},"151":{"position":[[1219,9]]},"156":{"position":[[558,7],[1190,7]]},"172":{"position":[[530,9]]},"372":{"position":[[425,7]]},"402":{"position":[[122,7]]},"549":{"position":[[861,7]]},"559":{"position":[[985,7]]},"621":{"position":[[82,7],[267,7],[477,8],[499,7],[582,7]]},"627":{"position":[[3460,7]]},"647":{"position":[[1571,7]]},"721":{"position":[[1219,9]]},"726":{"position":[[558,7],[1190,7]]},"742":{"position":[[530,9]]},"929":{"position":[[122,7]]},"1075":{"position":[[861,7]]},"1094":{"position":[[985,7]]}},"keywords":{}}],["jupyter.yaml",{"_index":348,"title":{},"content":{"21":{"position":[[222,12]]},"621":{"position":[[222,12]]}},"keywords":{}}],["jupyter/minim",{"_index":343,"title":{},"content":{"21":{"position":[[129,15]]},"621":{"position":[[129,15]]}},"keywords":{}}],["jupyterlab",{"_index":351,"title":{},"content":{"21":{"position":[[642,10]]},"621":{"position":[[642,10]]}},"keywords":{}}],["k/v",{"_index":2058,"title":{},"content":{"216":{"position":[[83,4],[197,4]]},"786":{"position":[[83,4],[197,4]]}},"keywords":{}}],["k65jm",{"_index":91,"title":{},"content":{"7":{"position":[[186,5]]},"596":{"position":[[186,5]]}},"keywords":{}}],["k8",{"_index":340,"title":{"323":{"position":[[23,3]]},"325":{"position":[[4,3]]},"326":{"position":[[4,3]]},"893":{"position":[[23,3]]},"895":{"position":[[4,3]]},"896":{"position":[[4,3]]}},"content":{"20":{"position":[[841,3]]},"156":{"position":[[952,3]]},"162":{"position":[[310,4],[346,3],[441,4],[455,3],[653,4],[681,3]]},"167":{"position":[[469,4]]},"168":{"position":[[565,4]]},"171":{"position":[[519,6]]},"194":{"position":[[240,4],[836,4],[855,3],[966,3]]},"196":{"position":[[841,4]]},"197":{"position":[[372,4]]},"201":{"position":[[950,3]]},"209":{"position":[[11,3]]},"217":{"position":[[1621,3],[1709,3],[1793,3],[2198,3]]},"218":{"position":[[194,5]]},"223":{"position":[[418,5]]},"225":{"position":[[69,4],[174,3],[413,3]]},"231":{"position":[[190,3],[558,3]]},"244":{"position":[[170,3]]},"251":{"position":[[138,3]]},"252":{"position":[[60,3]]},"281":{"position":[[258,3]]},"324":{"position":[[40,3]]},"325":{"position":[[396,3],[495,3]]},"366":{"position":[[38,3]]},"367":{"position":[[23,3]]},"384":{"position":[[52,3],[711,3]]},"402":{"position":[[39,3]]},"620":{"position":[[841,3]]},"726":{"position":[[952,3]]},"732":{"position":[[310,4],[346,3],[441,4],[455,3],[653,4],[681,3]]},"737":{"position":[[469,4]]},"738":{"position":[[565,4]]},"750":{"position":[[951,4]]},"758":{"position":[[11,3]]},"777":{"position":[[240,4],[851,4],[1135,3],[1246,3]]},"780":{"position":[[379,4]]},"787":{"position":[[1621,3],[1709,3],[1793,3],[2198,3]]},"788":{"position":[[194,5]]},"794":{"position":[[329,3],[992,3]]},"808":{"position":[[418,5]]},"810":{"position":[[90,4],[195,3],[466,3]]},"814":{"position":[[170,3]]},"821":{"position":[[138,3]]},"852":{"position":[[258,3]]},"890":{"position":[[23,3]]},"894":{"position":[[40,3]]},"895":{"position":[[396,3],[495,3]]},"911":{"position":[[52,3],[711,3]]},"929":{"position":[[39,3]]}},"keywords":{}}],["k80",{"_index":3875,"title":{},"content":{"570":{"position":[[1500,3],[1746,3],[7653,4],[7832,4],[8011,4],[8190,4],[8369,4],[8548,4],[8727,4],[8906,4],[10917,3],[11163,3]]},"1090":{"position":[[1500,3],[1746,3],[7653,4],[7832,4],[8011,4],[8190,4],[8369,4],[8548,4],[8727,4],[8906,4],[10917,3],[11163,3]]}},"keywords":{}}],["k8s'",{"_index":2079,"title":{},"content":{"217":{"position":[[1649,5]]},"787":{"position":[[1649,5]]}},"keywords":{}}],["k8s.io/v1alpha4",{"_index":320,"title":{},"content":{"20":{"position":[[353,15]]},"384":{"position":[[757,15]]},"620":{"position":[[353,15]]},"911":{"position":[[757,15]]}},"keywords":{}}],["k8s.need",{"_index":1968,"title":{},"content":{"197":{"position":[[115,8]]}},"keywords":{}}],["k8s/cloud",{"_index":1848,"title":{},"content":{"181":{"position":[[1020,12],[1682,9]]}},"keywords":{}}],["k8s/contain",{"_index":1754,"title":{},"content":{"171":{"position":[[1109,13]]}},"keywords":{}}],["k8s/dock",{"_index":1836,"title":{},"content":{"179":{"position":[[785,10]]},"246":{"position":[[520,10]]}},"keywords":{}}],["k8s/yarn",{"_index":1689,"title":{},"content":{"163":{"position":[[566,8]]},"733":{"position":[[566,8]]},"741":{"position":[[519,11]]},"779":{"position":[[841,9]]},"822":{"position":[[60,8]]},"889":{"position":[[38,8]]}},"keywords":{}}],["k8s/yarn/cloud",{"_index":4214,"title":{},"content":{"764":{"position":[[1020,17],[1690,14]]}},"keywords":{}}],["k8s/yarn/dock",{"_index":4220,"title":{},"content":{"816":{"position":[[520,15]]}},"keywords":{}}],["kaihsun@apache.org",{"_index":1201,"title":{},"content":{"122":{"position":[[68,18]]},"690":{"position":[[68,18]]}},"keywords":{}}],["kaldi",{"_index":2715,"title":{"374":{"position":[[35,5]]},"375":{"position":[[35,5]]},"376":{"position":[[31,5]]},"388":{"position":[[4,5]]},"901":{"position":[[35,5]]},"902":{"position":[[35,5]]},"903":{"position":[[31,5]]},"915":{"position":[[4,5]]}},"content":{"375":{"position":[[18,5],[68,5],[160,5],[273,5],[393,6]]},"376":{"position":[[48,5],[80,5],[141,5]]},"377":{"position":[[210,5],[283,6]]},"389":{"position":[[382,5]]},"902":{"position":[[18,5],[68,5],[160,5],[273,5],[393,6]]},"903":{"position":[[48,5],[80,5],[141,5]]},"904":{"position":[[210,5],[283,6]]},"916":{"position":[[382,5]]}},"keywords":{}}],["kaldi/sg",{"_index":2817,"title":{},"content":{"386":{"position":[[573,11]]},"913":{"position":[[573,11]]}},"keywords":{}}],["kb",{"_index":2066,"title":{},"content":{"216":{"position":[[485,3]]},"389":{"position":[[3572,3],[3661,3],[3764,3],[3960,3],[4072,3],[4178,3],[4304,3],[4430,3],[4546,3],[4662,3],[4764,3],[4848,3],[5055,3],[5152,3],[5240,3],[5347,3],[5453,3],[5556,3],[5662,3],[5754,3],[5857,3],[5963,3],[6069,3],[6190,3],[6305,3],[6408,3],[6504,3],[6597,3],[6717,3],[6831,3],[6930,3],[19222,2],[19396,3],[19485,3],[19588,3],[19784,3],[19896,3],[20002,3],[20128,3],[20254,3],[20370,3],[20486,3],[20588,3],[20672,3],[20879,3],[20976,3],[21064,3],[21171,3],[21277,3],[21380,3],[21486,3],[21578,3],[21681,3],[21787,3],[21908,3],[22023,3],[22126,3],[22222,3],[22315,3],[22435,3],[22549,3],[22648,3],[22665,2]]},"786":{"position":[[485,3]]},"916":{"position":[[3572,3],[3661,3],[3764,3],[3960,3],[4072,3],[4178,3],[4304,3],[4430,3],[4546,3],[4662,3],[4764,3],[4848,3],[5055,3],[5152,3],[5240,3],[5347,3],[5453,3],[5556,3],[5662,3],[5754,3],[5857,3],[5963,3],[6069,3],[6190,3],[6305,3],[6408,3],[6504,3],[6597,3],[6717,3],[6831,3],[6930,3],[19222,2],[19396,3],[19485,3],[19588,3],[19784,3],[19896,3],[20002,3],[20128,3],[20254,3],[20370,3],[20486,3],[20588,3],[20672,3],[20879,3],[20976,3],[21064,3],[21171,3],[21277,3],[21380,3],[21486,3],[21578,3],[21681,3],[21787,3],[21908,3],[22023,3],[22126,3],[22222,3],[22315,3],[22435,3],[22549,3],[22648,3],[22665,2]]}},"keywords":{}}],["kb/",{"_index":3189,"title":{},"content":{"389":{"position":[[22680,5]]},"916":{"position":[[22680,5]]}},"keywords":{}}],["keep",{"_index":2078,"title":{},"content":{"217":{"position":[[1131,5]]},"357":{"position":[[469,4]]},"787":{"position":[[1131,5]]}},"keywords":{}}],["kera",{"_index":1601,"title":{},"content":{"159":{"position":[[1901,5]]},"161":{"position":[[463,6]]},"729":{"position":[[1901,5]]},"731":{"position":[[463,6]]}},"keywords":{}}],["keras.pi",{"_index":3325,"title":{},"content":{"415":{"position":[[301,8]]},"942":{"position":[[301,8]]}},"keywords":{}}],["kerbero",{"_index":1822,"title":{},"content":{"176":{"position":[[1020,8]]},"244":{"position":[[26,9]]},"746":{"position":[[1023,8]]},"814":{"position":[[26,9]]}},"keywords":{}}],["kernalspec",{"_index":3420,"title":{},"content":{"437":{"position":[[849,12]]},"964":{"position":[[849,12]]}},"keywords":{}}],["kernel",{"_index":1454,"title":{"154":{"position":[[0,6]]},"724":{"position":[[0,6]]}},"content":{"151":{"position":[[482,7],[1207,6],[1493,6],[1826,6]]},"152":{"position":[[168,7],[187,7],[424,6]]},"153":{"position":[[279,7],[611,6]]},"154":{"position":[[804,7],[914,7],[1282,6]]},"156":{"position":[[1001,6],[1161,6],[1275,6]]},"172":{"position":[[518,6]]},"422":{"position":[[287,6],[384,6],[448,6]]},"721":{"position":[[482,7],[1207,6],[1493,6],[1826,6]]},"722":{"position":[[168,7],[187,7],[424,6]]},"723":{"position":[[279,7],[611,6]]},"724":{"position":[[804,7],[914,7],[1282,6]]},"726":{"position":[[1001,6],[1161,6],[1275,6]]},"742":{"position":[[518,6]]},"949":{"position":[[287,6],[384,6],[448,6]]}},"keywords":{}}],["kernel_nam",{"_index":1546,"title":{},"content":{"156":{"position":[[1008,13],[1168,13],[1322,12]]},"726":{"position":[[1008,13],[1168,13],[1322,12]]}},"keywords":{}}],["kernelspec",{"_index":690,"title":{},"content":{"71":{"position":[[166,12],[753,12]]},"72":{"position":[[304,12],[788,12]]},"73":{"position":[[326,12]]},"74":{"position":[[176,12],[666,12],[904,12]]},"75":{"position":[[329,12]]},"100":{"position":[[963,14]]},"101":{"position":[[705,14]]},"102":{"position":[[696,14]]},"103":{"position":[[755,13]]},"422":{"position":[[149,10],[160,10],[236,11]]},"423":{"position":[[131,12],[733,14]]},"425":{"position":[[315,14],[611,14],[1207,14]]},"428":{"position":[[299,14]]},"430":{"position":[[117,10],[128,10]]},"431":{"position":[[132,12],[620,14]]},"434":{"position":[[302,14]]},"479":{"position":[[935,14]]},"482":{"position":[[682,14]]},"485":{"position":[[670,14]]},"488":{"position":[[700,14]]},"663":{"position":[[166,12],[753,12]]},"664":{"position":[[304,12],[788,12]]},"665":{"position":[[326,12]]},"666":{"position":[[176,12],[666,12],[904,12]]},"667":{"position":[[329,12]]},"702":{"position":[[963,14]]},"703":{"position":[[705,14]]},"704":{"position":[[696,14]]},"705":{"position":[[755,13]]},"949":{"position":[[149,10],[160,10],[236,11]]},"950":{"position":[[131,12],[733,14]]},"952":{"position":[[315,14],[611,14],[1207,14]]},"955":{"position":[[299,14]]},"957":{"position":[[117,10],[128,10]]},"958":{"position":[[132,12],[620,14]]},"961":{"position":[[302,14]]},"1011":{"position":[[935,14]]},"1014":{"position":[[682,14]]},"1017":{"position":[[670,14]]},"1020":{"position":[[700,14]]}},"keywords":{}}],["kernelspec\":nul",{"_index":3449,"title":{},"content":{"438":{"position":[[1184,18]]},"441":{"position":[[1318,18]]},"443":{"position":[[776,18],[1799,18]]},"446":{"position":[[735,18]]},"449":{"position":[[1215,18]]},"452":{"position":[[696,18]]},"461":{"position":[[2573,18]]},"463":{"position":[[1575,18]]},"466":{"position":[[2603,18]]},"469":{"position":[[1599,18]]},"472":{"position":[[874,18]]},"965":{"position":[[1184,18]]},"968":{"position":[[1318,18]]},"970":{"position":[[776,18],[1799,18]]},"973":{"position":[[735,18]]},"976":{"position":[[1215,18]]},"979":{"position":[[696,18]]},"988":{"position":[[2573,18]]},"990":{"position":[[1575,18]]},"993":{"position":[[2603,18]]},"996":{"position":[[1599,18]]},"999":{"position":[[874,18]]}},"keywords":{}}],["key",{"_index":290,"title":{"329":{"position":[[11,3]]},"331":{"position":[[17,3]]},"332":{"position":[[25,3]]},"333":{"position":[[22,3]]},"334":{"position":[[24,3],[35,4]]},"335":{"position":[[22,3]]},"349":{"position":[[21,3],[32,4]]},"1037":{"position":[[30,4]]}},"content":{"17":{"position":[[782,3]]},"165":{"position":[[512,3]]},"195":{"position":[[77,3]]},"199":{"position":[[102,3],[152,3]]},"226":{"position":[[151,3]]},"244":{"position":[[85,5]]},"259":{"position":[[761,3]]},"261":{"position":[[415,3]]},"271":{"position":[[45,3]]},"314":{"position":[[18,3],[83,4],[99,4],[117,4],[131,4],[167,3],[181,3],[219,3],[240,3],[463,3],[1035,4],[1315,3],[2665,3]]},"331":{"position":[[303,4],[327,3],[549,3],[663,3],[714,4],[874,3],[899,3],[925,3],[954,3],[984,3],[1015,3],[1038,3],[1077,3],[1196,4],[2051,3],[2318,4],[2394,3],[2584,3]]},"332":{"position":[[15,4],[212,3],[233,3],[281,3],[285,4]]},"333":{"position":[[168,3]]},"334":{"position":[[231,3],[238,4],[693,4],[711,3],[741,5],[850,4],[928,3],[1077,3],[1084,4],[1380,4],[1398,3],[1428,5],[1541,4],[1623,3]]},"335":{"position":[[102,3],[168,3]]},"339":{"position":[[395,3],[430,3]]},"352":{"position":[[761,3]]},"371":{"position":[[148,4],[172,4]]},"389":{"position":[[16480,4],[16611,4],[16744,4],[16880,4],[31334,4],[31465,4],[31598,4],[31734,4]]},"395":{"position":[[87,4]]},"518":{"position":[[13,3],[38,3],[81,3]]},"519":{"position":[[13,3],[77,3]]},"609":{"position":[[782,3]]},"735":{"position":[[512,3]]},"778":{"position":[[77,3]]},"782":{"position":[[102,3],[152,3]]},"811":{"position":[[151,3]]},"814":{"position":[[85,5]]},"830":{"position":[[761,3]]},"832":{"position":[[415,3]]},"842":{"position":[[45,3]]},"898":{"position":[[148,4],[172,4]]},"916":{"position":[[16480,4],[16611,4],[16744,4],[16880,4],[31334,4],[31465,4],[31598,4],[31734,4]]},"922":{"position":[[87,4]]},"1035":{"position":[[48,3]]},"1037":{"position":[[47,3]]},"1058":{"position":[[13,3],[38,3],[81,3]]},"1059":{"position":[[13,3],[77,3]]}},"keywords":{}}],["key/valu",{"_index":2109,"title":{},"content":{"224":{"position":[[511,9]]},"226":{"position":[[600,9]]},"809":{"position":[[511,9]]},"811":{"position":[[600,9]]}},"keywords":{}}],["key</gpg.passphras",{"_index":2573,"title":{},"content":{"336":{"position":[[937,20]]}},"keywords":{}}],["key_id",{"_index":2585,"title":{},"content":{"339":{"position":[[470,9]]}},"keywords":{}}],["keyboard",{"_index":2495,"title":{},"content":{"331":{"position":[[1590,9],[1846,9]]}},"keywords":{}}],["keychain",{"_index":2905,"title":{},"content":{"389":{"position":[[2574,8],[18416,8]]},"916":{"position":[[2574,8],[18416,8]]}},"keywords":{}}],["keycloak",{"_index":2153,"title":{},"content":{"244":{"position":[[158,8]]},"814":{"position":[[158,8]]}},"keywords":{}}],["keyid</gpg.keynam",{"_index":2568,"title":{},"content":{"336":{"position":[[730,21]]}},"keywords":{}}],["keynam",{"_index":2569,"title":{},"content":{"336":{"position":[[763,7]]}},"keywords":{}}],["keys.if",{"_index":2544,"title":{},"content":{"335":{"position":[[51,7]]}},"keywords":{}}],["keyserv",{"_index":2517,"title":{},"content":{"332":{"position":[[219,9],[248,9],[347,10],[366,9]]}},"keywords":{}}],["keyservers.net/statu",{"_index":2521,"title":{},"content":{"332":{"position":[[397,23]]}},"keywords":{}}],["keysiz",{"_index":2480,"title":{},"content":{"331":{"position":[[764,7],[825,7]]}},"keywords":{}}],["keystor",{"_index":276,"title":{},"content":{"17":{"position":[[514,8],[621,8],[683,8],[816,8],[966,8],[1100,8],[1231,8]]},"609":{"position":[[514,8],[621,8],[683,8],[816,8],[966,8],[1100,8],[1231,8]]}},"keywords":{}}],["keytab",{"_index":1823,"title":{},"content":{"176":{"position":[[1029,7]]},"244":{"position":[[36,8]]},"746":{"position":[[1032,7]]},"814":{"position":[[36,8]]}},"keywords":{}}],["keyword",{"_index":2621,"title":{},"content":{"350":{"position":[[161,8]]},"355":{"position":[[168,9]]}},"keywords":{}}],["keyword:good",{"_index":2398,"title":{},"content":{"314":{"position":[[2531,12]]}},"keywords":{}}],["kick",{"_index":1427,"title":{},"content":{"145":{"position":[[269,5]]},"715":{"position":[[269,5]]}},"keywords":{}}],["kill",{"_index":518,"title":{},"content":{"28":{"position":[[1041,4],[1254,4]]},"546":{"position":[[1041,4],[1254,4]]},"616":{"position":[[1041,4],[1254,4]]},"1072":{"position":[[1041,4],[1254,4]]}},"keywords":{}}],["kind",{"_index":304,"title":{"286":{"position":[[0,4]]},"390":{"position":[[33,4]]},"391":{"position":[[31,4]]},"857":{"position":[[0,4]]},"917":{"position":[[33,4]]},"918":{"position":[[31,4]]}},"content":{"20":{"position":[[19,4],[126,4],[187,4],[215,4],[272,4],[320,5],[754,4],[821,4]]},"21":{"position":[[194,4]]},"171":{"position":[[2110,4],[2198,4]]},"176":{"position":[[11,5]]},"179":{"position":[[1285,5]]},"194":{"position":[[39,5],[312,5]]},"196":{"position":[[768,5]]},"200":{"position":[[1411,4]]},"217":{"position":[[1861,5]]},"225":{"position":[[383,4],[504,5]]},"286":{"position":[[0,4]]},"324":{"position":[[222,6]]},"325":{"position":[[26,4]]},"331":{"position":[[541,4]]},"379":{"position":[[95,5]]},"384":{"position":[[584,4],[724,5]]},"391":{"position":[[64,4],[183,4],[260,4],[319,6],[455,6],[512,6],[617,4]]},"620":{"position":[[19,4],[126,4],[187,4],[215,4],[272,4],[320,5],[754,4],[821,4]]},"621":{"position":[[194,4]]},"741":{"position":[[2122,4],[2211,4]]},"746":{"position":[[11,5]]},"749":{"position":[[1290,5]]},"777":{"position":[[39,5],[318,5]]},"779":{"position":[[768,5]]},"783":{"position":[[1411,4]]},"787":{"position":[[1861,5]]},"810":{"position":[[436,4],[557,5]]},"857":{"position":[[0,4]]},"894":{"position":[[222,6]]},"895":{"position":[[26,4]]},"906":{"position":[[95,5]]},"911":{"position":[[584,4],[724,5]]},"918":{"position":[[64,4],[183,4],[260,4],[319,6],[455,6],[512,6],[617,4]]}},"keywords":{}}],["kind.x",{"_index":319,"title":{},"content":{"20":{"position":[[346,6]]},"384":{"position":[[750,6]]},"620":{"position":[[346,6]]},"911":{"position":[[750,6]]}},"keywords":{}}],["kind=customresourcedefinit",{"_index":127,"title":{},"content":{"7":{"position":[[763,30],[834,29]]},"596":{"position":[[763,30],[834,29]]}},"keywords":{}}],["kind_version=v0.11.1",{"_index":3197,"title":{},"content":{"391":{"position":[[289,20]]},"918":{"position":[[289,20]]}},"keywords":{}}],["kindest/node:${kube_v",{"_index":3205,"title":{},"content":{"391":{"position":[[645,28]]},"918":{"position":[[645,28]]}},"keywords":{}}],["kindest/node:v1.15.6",{"_index":339,"title":{},"content":{"20":{"position":[[782,20]]},"620":{"position":[[782,20]]}},"keywords":{}}],["know",{"_index":1580,"title":{},"content":{"159":{"position":[[744,7]]},"229":{"position":[[1505,4]]},"295":{"position":[[26,4]]},"314":{"position":[[1130,4]]},"569":{"position":[[282,4]]},"729":{"position":[[744,7]]},"792":{"position":[[1507,4]]},"862":{"position":[[26,4]]},"1089":{"position":[[282,4]]}},"keywords":{}}],["knowledg",{"_index":1678,"title":{},"content":{"163":{"position":[[97,9]]},"733":{"position":[[97,9]]}},"keywords":{}}],["known",{"_index":953,"title":{},"content":{"107":{"position":[[562,5]]},"225":{"position":[[349,5]]},"810":{"position":[[370,5]]}},"keywords":{}}],["knox",{"_index":2037,"title":{},"content":{"213":{"position":[[413,4]]},"762":{"position":[[413,4]]}},"keywords":{}}],["krb5",{"_index":3767,"title":{},"content":{"559":{"position":[[794,4],[811,4]]},"1094":{"position":[[794,4],[811,4]]}},"keywords":{}}],["kube_version=v1.15.12",{"_index":3204,"title":{},"content":{"391":{"position":[[595,21]]},"918":{"position":[[595,21]]}},"keywords":{}}],["kubectl",{"_index":83,"title":{},"content":{"7":{"position":[[91,7],[953,7],[995,7],[1055,7]]},"8":{"position":[[221,7]]},"20":{"position":[[855,7]]},"21":{"position":[[205,7],[460,7]]},"300":{"position":[[596,7]]},"320":{"position":[[111,7]]},"325":{"position":[[197,7]]},"381":{"position":[[0,7]]},"383":{"position":[[746,7]]},"393":{"position":[[52,7]]},"394":{"position":[[80,7],[129,7]]},"395":{"position":[[92,7],[179,7]]},"396":{"position":[[0,7]]},"411":{"position":[[309,7]]},"412":{"position":[[4,7],[40,7]]},"413":{"position":[[151,7]]},"596":{"position":[[91,7],[953,7],[995,7],[1055,7]]},"597":{"position":[[221,7]]},"620":{"position":[[855,7]]},"621":{"position":[[205,7],[460,7]]},"869":{"position":[[943,7],[988,7],[1026,7],[1262,7],[1555,7]]},"877":{"position":[[111,7]]},"895":{"position":[[197,7]]},"908":{"position":[[0,7]]},"910":{"position":[[746,7]]},"920":{"position":[[52,7]]},"921":{"position":[[80,7],[129,7]]},"922":{"position":[[92,7],[179,7]]},"923":{"position":[[0,7]]},"939":{"position":[[4,7],[42,7]]},"940":{"position":[[42,7]]}},"keywords":{}}],["kubectlhelm",{"_index":35,"title":{},"content":{"4":{"position":[[0,11]]},"593":{"position":[[0,11]]}},"keywords":{}}],["kubeflow.org/v1",{"_index":2117,"title":{},"content":{"225":{"position":[[545,15]]},"810":{"position":[[598,15]]}},"keywords":{}}],["kubernet",{"_index":40,"title":{"5":{"position":[[7,10]]},"6":{"position":[[21,10]]},"20":{"position":[[6,10]]},"253":{"position":[[12,10]]},"285":{"position":[[0,10]]},"380":{"position":[[20,10]]},"390":{"position":[[8,10]]},"391":{"position":[[7,10]]},"392":{"position":[[0,10]]},"410":{"position":[[10,10]]},"594":{"position":[[7,10]]},"595":{"position":[[21,10]]},"620":{"position":[[6,10]]},"823":{"position":[[12,10]]},"856":{"position":[[0,10]]},"907":{"position":[[20,10]]},"917":{"position":[[8,10]]},"918":{"position":[[7,10]]},"919":{"position":[[0,10]]},"937":{"position":[[10,10]]}},"content":{"5":{"position":[[77,10]]},"20":{"position":[[35,10]]},"21":{"position":[[24,10]]},"194":{"position":[[896,10]]},"218":{"position":[[162,10]]},"225":{"position":[[371,11]]},"285":{"position":[[0,10]]},"300":{"position":[[64,10]]},"379":{"position":[[55,10]]},"383":{"position":[[845,10]]},"384":{"position":[[602,10]]},"391":{"position":[[98,10],[200,10],[577,10]]},"403":{"position":[[270,11]]},"406":{"position":[[727,11]]},"410":{"position":[[198,10]]},"594":{"position":[[77,10]]},"620":{"position":[[35,10]]},"621":{"position":[[24,10]]},"777":{"position":[[1176,10]]},"788":{"position":[[162,10]]},"810":{"position":[[424,11]]},"856":{"position":[[0,10]]},"867":{"position":[[64,10]]},"869":{"position":[[452,10],[608,10]]},"906":{"position":[[55,10]]},"910":{"position":[[845,10]]},"911":{"position":[[602,10]]},"918":{"position":[[98,10],[200,10],[577,10]]},"930":{"position":[[270,11]]},"937":{"position":[[200,10]]}},"keywords":{}}],["kv",{"_index":2229,"title":{},"content":{"271":{"position":[[42,2]]},"842":{"position":[[42,2]]}},"keywords":{}}],["kvstor",{"_index":4185,"title":{},"content":{"589":{"position":[[512,7],[695,7],[900,7]]},"590":{"position":[[582,7],[767,7],[939,7]]},"1115":{"position":[[512,7],[695,7],[900,7]]},"1116":{"position":[[582,7],[767,7],[939,7]]}},"keywords":{}}],["kwarg",{"_index":4086,"title":{},"content":{"572":{"position":[[1398,9],[1821,10]]},"1092":{"position":[[1398,9],[1821,10]]}},"keywords":{}}],["l2_reg",{"_index":1919,"title":{},"content":{"189":{"position":[[1486,9]]},"772":{"position":[[1486,9]]}},"keywords":{}}],["label",{"_index":790,"title":{},"content":{"84":{"position":[[532,6],[676,6],[1709,6],[1853,6]]},"144":{"position":[[140,6]]},"415":{"position":[[549,7],[619,5]]},"572":{"position":[[1212,7]]},"683":{"position":[[532,6],[676,6],[1709,6],[1853,6]]},"714":{"position":[[140,6]]},"942":{"position":[[567,7],[637,5]]},"1092":{"position":[[1212,7]]}},"keywords":{}}],["labels=label",{"_index":4085,"title":{},"content":{"572":{"position":[[1383,14]]},"1092":{"position":[[1383,14]]}},"keywords":{}}],["lak",{"_index":1625,"title":{},"content":{"160":{"position":[[85,5],[104,5]]},"730":{"position":[[85,5],[104,5]]}},"keywords":{}}],["land",{"_index":1624,"title":{},"content":{"160":{"position":[[72,4]]},"730":{"position":[[72,4]]}},"keywords":{}}],["languag",{"_index":589,"title":{},"content":{"35":{"position":[[257,10],[3035,9]]},"154":{"position":[[183,10]]},"505":{"position":[[25,8]]},"627":{"position":[[257,10],[3035,9]]},"724":{"position":[[183,10]]},"1044":{"position":[[25,8]]}},"keywords":{}}],["larg",{"_index":529,"title":{},"content":{"29":{"position":[[50,6]]},"161":{"position":[[341,5]]},"204":{"position":[[342,6]]},"216":{"position":[[268,5]]},"547":{"position":[[50,6]]},"569":{"position":[[974,5]]},"617":{"position":[[50,6]]},"731":{"position":[[341,5]]},"753":{"position":[[342,6]]},"786":{"position":[[268,5]]},"1073":{"position":[[50,6]]},"1089":{"position":[[974,5]]}},"keywords":{}}],["last",{"_index":61,"title":{},"content":{"6":{"position":[[137,4]]},"141":{"position":[[403,4],[770,4]]},"159":{"position":[[301,4]]},"549":{"position":[[480,4]]},"595":{"position":[[137,4]]},"729":{"position":[[301,4]]},"1075":{"position":[[480,4]]}},"keywords":{}}],["lastupdatedtim",{"_index":859,"title":{},"content":{"93":{"position":[[391,17],[754,17],[1117,17],[1481,17]]},"94":{"position":[[399,17]]},"110":{"position":[[308,17],[486,17],[648,17]]},"111":{"position":[[324,17]]}},"keywords":{}}],["lat",{"_index":569,"title":{},"content":{"33":{"position":[[393,6],[496,6]]},"35":{"position":[[3304,5]]},"133":{"position":[[1724,6]]},"167":{"position":[[287,6]]},"279":{"position":[[20,5]]},"285":{"position":[[78,6]]},"288":{"position":[[7,5]]},"289":{"position":[[0,6]]},"291":{"position":[[7,6]]},"292":{"position":[[42,6]]},"293":{"position":[[61,6]]},"297":{"position":[[20,5]]},"325":{"position":[[287,6]]},"376":{"position":[[73,6],[134,6]]},"377":{"position":[[216,6],[466,6]]},"387":{"position":[[93,6]]},"389":{"position":[[1055,6]]},"400":{"position":[[163,6]]},"511":{"position":[[1131,6]]},"549":{"position":[[699,6]]},"550":{"position":[[88,6],[161,6],[251,6]]},"551":{"position":[[134,6],[212,6]]},"553":{"position":[[731,6]]},"554":{"position":[[90,6],[169,6],[310,6]]},"556":{"position":[[138,6],[241,6]]},"557":{"position":[[89,6]]},"565":{"position":[[36,6]]},"585":{"position":[[303,6]]},"625":{"position":[[393,6],[496,6]]},"627":{"position":[[3304,5]]},"737":{"position":[[287,6]]},"850":{"position":[[20,5]]},"864":{"position":[[20,5]]},"895":{"position":[[287,6]]},"903":{"position":[[73,6],[134,6]]},"904":{"position":[[216,6],[466,6]]},"914":{"position":[[93,6]]},"916":{"position":[[1055,6]]},"927":{"position":[[163,6]]},"1050":{"position":[[190,6]]},"1075":{"position":[[699,6]]},"1076":{"position":[[88,6],[161,6],[251,6]]},"1077":{"position":[[134,6],[212,6]]},"1079":{"position":[[731,6]]},"1080":{"position":[[90,6],[169,6],[310,6]]},"1082":{"position":[[138,6],[241,6]]},"1083":{"position":[[89,6]]},"1085":{"position":[[36,6]]},"1111":{"position":[[303,6]]}},"keywords":{}}],["launch",{"_index":178,"title":{"13":{"position":[[0,6]]},"245":{"position":[[10,8]]},"251":{"position":[[0,8]]},"252":{"position":[[0,8]]},"253":{"position":[[0,8]]},"254":{"position":[[0,8]]},"255":{"position":[[0,8]]},"256":{"position":[[0,8]]},"411":{"position":[[0,6]]},"576":{"position":[[0,6]]},"581":{"position":[[0,6]]},"586":{"position":[[0,6]]},"605":{"position":[[0,6]]},"815":{"position":[[10,8]]},"821":{"position":[[0,8]]},"822":{"position":[[0,8]]},"823":{"position":[[0,8]]},"824":{"position":[[0,8]]},"825":{"position":[[0,8]]},"826":{"position":[[0,8]]},"827":{"position":[[0,8]]},"938":{"position":[[0,6]]},"1102":{"position":[[0,6]]},"1107":{"position":[[0,6]]},"1112":{"position":[[0,6]]}},"content":{"152":{"position":[[301,6]]},"154":{"position":[[1153,6],[1292,6]]},"156":{"position":[[838,6],[1104,6]]},"163":{"position":[[515,6]]},"167":{"position":[[149,8]]},"179":{"position":[[1515,8]]},"181":{"position":[[935,7],[1644,8],[1700,8]]},"189":{"position":[[144,9]]},"204":{"position":[[131,8],[191,6]]},"205":{"position":[[45,8],[168,8]]},"208":{"position":[[584,6],[711,6]]},"212":{"position":[[680,9]]},"217":{"position":[[1006,8],[1234,9],[2250,8]]},"218":{"position":[[253,8]]},"251":{"position":[[14,8]]},"407":{"position":[[1526,8]]},"722":{"position":[[301,6]]},"724":{"position":[[1153,6],[1292,6]]},"726":{"position":[[838,6],[1104,6]]},"733":{"position":[[515,6]]},"737":{"position":[[149,8]]},"749":{"position":[[1520,8]]},"753":{"position":[[131,8],[191,6]]},"754":{"position":[[45,8],[168,8]]},"757":{"position":[[584,6],[711,6]]},"761":{"position":[[680,9]]},"764":{"position":[[935,7],[1652,8],[1713,8]]},"772":{"position":[[144,9]]},"787":{"position":[[1006,8],[1234,9],[2250,8]]},"788":{"position":[[253,8]]},"821":{"position":[[14,8]]},"867":{"position":[[674,8]]},"934":{"position":[[1546,8]]}},"keywords":{}}],["law",{"_index":2369,"title":{},"content":{"314":{"position":[[451,4]]},"331":{"position":[[517,4]]}},"keywords":{}}],["lay",{"_index":1452,"title":{},"content":{"151":{"position":[[300,5]]},"172":{"position":[[239,5]]},"415":{"position":[[402,7]]},"721":{"position":[[300,5]]},"742":{"position":[[239,5]]},"942":{"position":[[402,7]]}},"keywords":{}}],["layer/framework",{"_index":1700,"title":{},"content":{"165":{"position":[[336,15]]},"735":{"position":[[336,15]]}},"keywords":{}}],["layers.conv2d(32",{"_index":3345,"title":{},"content":{"415":{"position":[[838,17]]},"942":{"position":[[856,17]]}},"keywords":{}}],["layout",{"_index":2146,"title":{},"content":{"231":{"position":[[852,6]]},"794":{"position":[[1105,6]]}},"keywords":{}}],["lazi",{"_index":1108,"title":{},"content":{"107":{"position":[[7796,4],[7875,4],[7982,4],[9308,4],[9615,4],[9717,4],[10069,4],[10247,4],[10484,4],[10601,4]]},"130":{"position":[[327,4]]},"698":{"position":[[327,4]]}},"keywords":{}}],["ldap",{"_index":2913,"title":{},"content":{"389":{"position":[[2662,4],[18504,4]]},"916":{"position":[[2662,4],[18504,4]]}},"keywords":{}}],["ldap).oth",{"_index":1810,"title":{},"content":{"176":{"position":[[304,11]]},"746":{"position":[[305,11]]}},"keywords":{}}],["lead",{"_index":476,"title":{},"content":{"28":{"position":[[311,5]]},"141":{"position":[[1920,6]]},"219":{"position":[[381,4]]},"273":{"position":[[284,6]]},"546":{"position":[[311,5]]},"616":{"position":[[311,5]]},"789":{"position":[[381,4]]},"844":{"position":[[284,6]]},"1072":{"position":[[311,5]]}},"keywords":{}}],["leak",{"_index":1533,"title":{},"content":{"156":{"position":[[43,4]]},"726":{"position":[[43,4]]}},"keywords":{}}],["learn",{"_index":533,"title":{"160":{"position":[[8,8]]},"568":{"position":[[43,8]]},"730":{"position":[[8,8]]},"1088":{"position":[[43,8]]}},"content":{"31":{"position":[[48,8]]},"35":{"position":[[211,8]]},"159":{"position":[[30,8],[99,8],[251,8],[381,8],[449,8],[1579,6],[1598,7],[1747,8],[1816,5],[1943,8],[2100,8],[2226,8],[2699,8],[2838,8],[2924,8]]},"161":{"position":[[114,7]]},"162":{"position":[[44,8],[276,8],[399,8],[921,8]]},"163":{"position":[[71,5],[148,8]]},"167":{"position":[[64,8],[163,8]]},"168":{"position":[[97,8]]},"222":{"position":[[15,8],[80,8]]},"224":{"position":[[50,8],[149,8]]},"259":{"position":[[665,8]]},"368":{"position":[[473,8]]},"386":{"position":[[41,8]]},"568":{"position":[[48,8]]},"570":{"position":[[331,8]]},"591":{"position":[[68,8]]},"623":{"position":[[48,8]]},"627":{"position":[[211,8]]},"729":{"position":[[30,8],[99,8],[251,8],[381,8],[449,8],[1579,6],[1598,7],[1747,8],[1816,5],[1943,8],[2100,8],[2226,8],[2699,8],[2838,8],[2924,8]]},"731":{"position":[[114,7]]},"732":{"position":[[44,8],[276,8],[399,8],[921,8]]},"733":{"position":[[71,5],[148,8]]},"737":{"position":[[64,8],[163,8]]},"738":{"position":[[97,8]]},"807":{"position":[[15,8],[80,8]]},"809":{"position":[[50,8],[149,8]]},"830":{"position":[[665,8]]},"891":{"position":[[473,8]]},"913":{"position":[[41,8]]},"1088":{"position":[[48,8]]},"1090":{"position":[[331,8]]},"1117":{"position":[[68,8]]}},"keywords":{}}],["learning_r",{"_index":828,"title":{},"content":{"86":{"position":[[224,16],[297,13]]},"89":{"position":[[221,16],[294,13]]},"461":{"position":[[192,16],[265,13],[1424,13]]},"463":{"position":[[426,13]]},"466":{"position":[[197,16],[270,13],[1454,13]]},"469":{"position":[[450,13]]},"570":{"position":[[5198,13],[14626,13],[15201,13]]},"669":{"position":[[224,16],[297,13]]},"672":{"position":[[221,16],[294,13]]},"988":{"position":[[192,16],[265,13],[1424,13]]},"990":{"position":[[426,13]]},"993":{"position":[[197,16],[270,13],[1454,13]]},"996":{"position":[[450,13]]},"1036":{"position":[[157,17]]},"1090":{"position":[[5198,13],[14626,13],[15201,13]]}},"keywords":{}}],["learning_rate\":\"0.01",{"_index":842,"title":{},"content":{"91":{"position":[[145,23]]},"472":{"position":[[94,23]]},"674":{"position":[[145,23]]},"999":{"position":[[94,23]]}},"keywords":{}}],["learning_rate=0.01",{"_index":728,"title":{},"content":{"77":{"position":[[258,18],[1016,18]]},"78":{"position":[[258,18],[1163,18]]},"79":{"position":[[525,18]]},"80":{"position":[[558,18]]},"81":{"position":[[266,18],[869,18]]},"82":{"position":[[561,18]]},"223":{"position":[[337,18]]},"438":{"position":[[224,18]]},"441":{"position":[[224,18]]},"449":{"position":[[225,18]]},"492":{"position":[[206,18]]},"496":{"position":[[443,18]]},"497":{"position":[[450,18]]},"676":{"position":[[258,18],[1016,18]]},"677":{"position":[[258,18],[1163,18]]},"678":{"position":[[525,18]]},"679":{"position":[[558,18]]},"680":{"position":[[266,18],[869,18]]},"681":{"position":[[561,18]]},"808":{"position":[[337,18]]},"965":{"position":[[224,18]]},"968":{"position":[[224,18]]},"976":{"position":[[225,18]]},"1006":{"position":[[206,18]]},"1023":{"position":[[443,18]]},"1024":{"position":[[450,18]]}},"keywords":{}}],["learning_rate={{learning_r",{"_index":835,"title":{},"content":{"86":{"position":[[657,31]]},"89":{"position":[[654,31]]},"461":{"position":[[625,31]]},"466":{"position":[[630,31]]},"669":{"position":[[657,31]]},"672":{"position":[[654,31]]},"988":{"position":[[625,31]]},"993":{"position":[[630,31]]}},"keywords":{}}],["learning_rate\\u003d0.01",{"_index":3444,"title":{},"content":{"438":{"position":[[1057,23]]},"441":{"position":[[1177,23]]},"443":{"position":[[650,23],[1658,23]]},"446":{"position":[[594,23]]},"449":{"position":[[1088,23]]},"452":{"position":[[569,23]]},"472":{"position":[[748,23]]},"965":{"position":[[1057,23]]},"968":{"position":[[1177,23]]},"970":{"position":[[650,23],[1658,23]]},"973":{"position":[[594,23]]},"976":{"position":[[1088,23]]},"979":{"position":[[569,23]]},"999":{"position":[[748,23]]}},"keywords":{}}],["learning_rate\\u003d{{learning_r",{"_index":3515,"title":{},"content":{"461":{"position":[[2423,36]]},"463":{"position":[[1425,36]]},"466":{"position":[[2453,36]]},"469":{"position":[[1449,36]]},"988":{"position":[[2423,36]]},"990":{"position":[[1425,36]]},"993":{"position":[[2453,36]]},"996":{"position":[[1449,36]]}},"keywords":{}}],["left",{"_index":1369,"title":{},"content":{"139":{"position":[[545,4]]},"181":{"position":[[1168,4]]},"406":{"position":[[82,4]]},"418":{"position":[[228,4]]},"711":{"position":[[545,4]]},"764":{"position":[[1173,4]]},"933":{"position":[[82,4]]}},"keywords":{}}],["left.search",{"_index":2620,"title":{},"content":{"350":{"position":[[135,11]]},"355":{"position":[[142,11]]}},"keywords":{}}],["less",{"_index":2042,"title":{},"content":{"215":{"position":[[1039,4]]},"785":{"position":[[1039,4]]}},"keywords":{}}],["let'",{"_index":1621,"title":{},"content":{"159":{"position":[[2902,5]]},"215":{"position":[[6,5]]},"357":{"position":[[463,5]]},"729":{"position":[[2902,5]]},"785":{"position":[[6,5]]}},"keywords":{}}],["level",{"_index":556,"title":{"163":{"position":[[57,5]]},"733":{"position":[[57,5]]}},"content":{"33":{"position":[[46,5]]},"35":{"position":[[1029,5],[1401,5]]},"107":{"position":[[3810,5]]},"159":{"position":[[141,6],[1881,5]]},"163":{"position":[[421,5]]},"625":{"position":[[46,5]]},"627":{"position":[[1029,5],[1401,5]]},"729":{"position":[[141,6],[1881,5]]},"733":{"position":[[421,5]]},"1032":{"position":[[43,5]]}},"keywords":{}}],["leverag",{"_index":1564,"title":{},"content":{"159":{"position":[[82,8]]},"729":{"position":[[82,8]]}},"keywords":{}}],["lfgmd",{"_index":110,"title":{},"content":{"7":{"position":[[439,5]]},"596":{"position":[[439,5]]}},"keywords":{}}],["lgtm",{"_index":1243,"title":{},"content":{"130":{"position":[[158,7],[177,4],[246,7]]},"698":{"position":[[158,7],[177,4],[246,7]]}},"keywords":{}}],["liabil",{"_index":2768,"title":{},"content":{"377":{"position":[[365,10]]},"557":{"position":[[4,10]]},"563":{"position":[[4,10]]},"904":{"position":[[365,10]]},"1083":{"position":[[4,10]]},"1098":{"position":[[4,10]]}},"keywords":{}}],["lib",{"_index":2255,"title":{},"content":{"274":{"position":[[297,3]]},"845":{"position":[[297,3]]}},"keywords":{}}],["libarchive1",{"_index":2894,"title":{},"content":{"389":{"position":[[2444,11],[18286,11]]},"916":{"position":[[2444,11],[18286,11]]}},"keywords":{}}],["libari",{"_index":1847,"title":{},"content":{"181":{"position":[[807,8]]},"764":{"position":[[807,8]]}},"keywords":{}}],["libatm1",{"_index":2873,"title":{},"content":{"389":{"position":[[2127,7],[3019,7],[3540,7],[17969,7],[18843,7],[19364,7]]},"916":{"position":[[2127,7],[3019,7],[3540,7],[17969,7],[18843,7],[19364,7]]}},"keywords":{}}],["libatm1:amd64",{"_index":3044,"title":{},"content":{"389":{"position":[[7008,14],[7707,13],[13204,13],[22726,14],[23425,13],[28753,13]]},"916":{"position":[[7008,14],[7707,13],[13204,13],[22726,14],[23425,13],[28753,13]]}},"keywords":{}}],["libatm1_1%3a2.5.1",{"_index":3062,"title":{},"content":{"389":{"position":[[7657,21],[23375,21]]},"916":{"position":[[7657,21],[23375,21]]}},"keywords":{}}],["libc",{"_index":3122,"title":{},"content":{"389":{"position":[[13163,4],[17401,4],[28712,4],[32255,4]]},"916":{"position":[[13163,4],[17401,4],[28712,4],[32255,4]]}},"keywords":{}}],["libdn",{"_index":2874,"title":{},"content":{"389":{"position":[[2135,6],[3027,6],[4373,6],[8947,6],[8985,10],[9061,6],[13688,6],[17977,6],[18851,6],[20197,6],[24665,6],[24703,10],[24779,6],[29237,6]]},"916":{"position":[[2135,6],[3027,6],[4373,6],[8947,6],[8985,10],[9061,6],[13688,6],[17977,6],[18851,6],[20197,6],[24665,6],[24703,10],[24779,6],[29237,6]]}},"keywords":{}}],["libfreetype6",{"_index":3763,"title":{},"content":{"559":{"position":[[533,12]]},"1094":{"position":[[533,12]]}},"keywords":{}}],["libgomp1",{"_index":3699,"title":{},"content":{"549":{"position":[[650,8]]},"1075":{"position":[[650,8]]}},"keywords":{}}],["libisc",{"_index":2876,"title":{},"content":{"389":{"position":[[2152,6],[3044,6],[4247,6],[8741,6],[8779,10],[8855,6],[13625,6],[17994,6],[18868,6],[20071,6],[24459,6],[24497,10],[24573,6],[29174,6]]},"916":{"position":[[2152,6],[3044,6],[4247,6],[8741,6],[8779,10],[8855,6],[13625,6],[17994,6],[18868,6],[20071,6],[24459,6],[24497,10],[24573,6],[29174,6]]}},"keywords":{}}],["libjpeg",{"_index":3722,"title":{},"content":{"553":{"position":[[590,7]]},"1079":{"position":[[590,7]]}},"keywords":{}}],["liblockfil",{"_index":2878,"title":{},"content":{"389":{"position":[[2169,11],[3061,11],[3722,11],[7926,11],[7963,15],[8021,11],[13286,11],[18011,11],[18885,11],[19546,11],[23644,11],[23681,15],[23739,11],[28835,11]]},"916":{"position":[[2169,11],[3061,11],[3722,11],[7926,11],[7963,15],[8021,11],[13286,11],[18011,11],[18885,11],[19546,11],[23644,11],[23681,15],[23739,11],[28835,11]]}},"keywords":{}}],["liblockfile1",{"_index":2879,"title":{},"content":{"389":{"position":[[2185,12],[3077,12],[3825,12],[18027,12],[18901,12],[19649,12]]},"916":{"position":[[2185,12],[3077,12],[3825,12],[18027,12],[18901,12],[19649,12]]}},"keywords":{}}],["liblockfile1:amd64",{"_index":3069,"title":{},"content":{"389":{"position":[[8097,19],[8192,18],[13333,18],[23815,19],[23910,18],[28882,18]]},"916":{"position":[[8097,19],[8192,18],[13333,18],[23815,19],[23910,18],[28882,18]]}},"keywords":{}}],["liblockfile1_1.09",{"_index":3070,"title":{},"content":{"389":{"position":[[8137,21],[23855,21]]},"916":{"position":[[8137,21],[23855,21]]}},"keywords":{}}],["libmnl0",{"_index":2880,"title":{},"content":{"389":{"position":[[2198,7],[3090,7],[3633,7],[18040,7],[18914,7],[19457,7]]},"916":{"position":[[2198,7],[3090,7],[3633,7],[18040,7],[18914,7],[19457,7]]}},"keywords":{}}],["libmnl0:amd64",{"_index":3064,"title":{},"content":{"389":{"position":[[7779,14],[7858,13],[13247,13],[23497,14],[23576,13],[28796,13]]},"916":{"position":[[7779,14],[7858,13],[13247,13],[23497,14],[23576,13],[28796,13]]}},"keywords":{}}],["libmnl0_1.0.3",{"_index":3065,"title":{},"content":{"389":{"position":[[7814,17],[23532,17]]},"916":{"position":[[7814,17],[23532,17]]}},"keywords":{}}],["libopenbla",{"_index":3700,"title":{},"content":{"549":{"position":[[659,11]]},"1075":{"position":[[659,11]]}},"keywords":{}}],["libopencv",{"_index":3701,"title":{},"content":{"549":{"position":[[675,9]]},"1075":{"position":[[675,9]]}},"keywords":{}}],["libpam",{"_index":2904,"title":{},"content":{"389":{"position":[[2563,6],[18405,6]]},"559":{"position":[[804,6]]},"916":{"position":[[2563,6],[18405,6]]},"1094":{"position":[[804,6]]}},"keywords":{}}],["libpng",{"_index":3723,"title":{},"content":{"553":{"position":[[604,6]]},"559":{"position":[[552,6]]},"1079":{"position":[[604,6]]},"1094":{"position":[[552,6]]}},"keywords":{}}],["librari",{"_index":1445,"title":{"185":{"position":[[30,9]]},"224":{"position":[[0,7]]},"274":{"position":[[22,7]]},"768":{"position":[[30,9]]},"809":{"position":[[0,7]]},"845":{"position":[[22,7]]}},"content":{"151":{"position":[[65,9],[430,9],[707,7],[776,10],[1269,7],[1674,7],[1944,7],[2105,9]]},"156":{"position":[[460,9]]},"159":{"position":[[600,10],[1359,9],[1539,9],[1828,9],[2035,7]]},"171":{"position":[[706,8],[774,9],[1352,8],[1404,7],[1848,9],[1964,7],[2069,8]]},"172":{"position":[[65,9],[307,9],[580,7]]},"176":{"position":[[164,10],[443,9]]},"181":{"position":[[1473,9],[1581,9]]},"189":{"position":[[1099,8],[1183,7]]},"211":{"position":[[321,10],[406,9]]},"212":{"position":[[128,7],[508,9]]},"223":{"position":[[88,7]]},"224":{"position":[[4,7]]},"226":{"position":[[484,7]]},"248":{"position":[[958,7]]},"261":{"position":[[105,8]]},"264":{"position":[[76,8]]},"269":{"position":[[387,8]]},"270":{"position":[[615,7]]},"334":{"position":[[38,7],[124,7]]},"347":{"position":[[43,7]]},"375":{"position":[[52,9],[175,9],[288,9]]},"377":{"position":[[299,10]]},"406":{"position":[[520,9]]},"549":{"position":[[54,9],[149,9],[269,9]]},"551":{"position":[[295,10]]},"553":{"position":[[56,9],[155,9],[275,9]]},"559":{"position":[[57,9],[161,9],[275,9]]},"578":{"position":[[85,9]]},"583":{"position":[[82,9]]},"588":{"position":[[80,9]]},"721":{"position":[[65,9],[430,9],[707,7],[776,10],[1269,7],[1674,7],[1944,7],[2105,9]]},"726":{"position":[[460,9]]},"729":{"position":[[600,10],[1359,9],[1539,9],[1828,9],[2035,7]]},"741":{"position":[[711,8],[779,9],[1364,8],[1416,7],[1860,9],[1976,7],[2081,8]]},"742":{"position":[[65,9],[307,9],[580,7]]},"746":{"position":[[164,10],[444,9]]},"760":{"position":[[321,10],[406,9]]},"761":{"position":[[128,7],[508,9]]},"764":{"position":[[1480,9],[1588,9]]},"772":{"position":[[1099,8],[1183,7]]},"808":{"position":[[88,7]]},"809":{"position":[[4,7]]},"811":{"position":[[484,7]]},"818":{"position":[[958,7]]},"832":{"position":[[105,8]]},"835":{"position":[[76,8]]},"840":{"position":[[387,8]]},"841":{"position":[[615,7]]},"902":{"position":[[52,9],[175,9],[288,9]]},"904":{"position":[[299,10]]},"933":{"position":[[520,9]]},"1075":{"position":[[54,9],[149,9],[269,9]]},"1077":{"position":[[295,10]]},"1079":{"position":[[56,9],[155,9],[275,9]]},"1094":{"position":[[57,9],[161,9],[275,9]]},"1104":{"position":[[85,9]]},"1109":{"position":[[82,9]]},"1114":{"position":[[80,9]]}},"keywords":{}}],["libraries.pytorch",{"_index":3760,"title":{},"content":{"556":{"position":[[223,17]]},"1082":{"position":[[223,17]]}},"keywords":{}}],["libraries.tf",{"_index":3784,"title":{},"content":{"562":{"position":[[189,12]]},"1097":{"position":[[189,12]]}},"keywords":{}}],["libraries/dataset",{"_index":2125,"title":{},"content":{"229":{"position":[[249,18]]},"792":{"position":[[249,18]]}},"keywords":{}}],["libraries/dep",{"_index":2074,"title":{},"content":{"217":{"position":[[631,23]]},"787":{"position":[[631,23]]}},"keywords":{}}],["libraryspec",{"_index":2101,"title":{},"content":{"223":{"position":[[160,12]]},"808":{"position":[[160,12]]}},"keywords":{}}],["libsasl2",{"_index":2916,"title":{},"content":{"389":{"position":[[2690,8],[18532,8]]},"916":{"position":[[2690,8],[18532,8]]}},"keywords":{}}],["libsvm",{"_index":1603,"title":{},"content":{"159":{"position":[[2052,7]]},"171":{"position":[[1626,8]]},"199":{"position":[[558,8]]},"729":{"position":[[2052,7]]},"741":{"position":[[1638,8]]},"782":{"position":[[558,8]]}},"keywords":{}}],["libtool",{"_index":2732,"title":{},"content":{"375":{"position":[[637,7]]},"902":{"position":[[637,7]]}},"keywords":{}}],["libxmuu1",{"_index":2881,"title":{},"content":{"389":{"position":[[2206,8],[3098,8],[4910,8],[18048,8],[18922,8],[20734,8]]},"916":{"position":[[2206,8],[3098,8],[4910,8],[18048,8],[18922,8],[20734,8]]}},"keywords":{}}],["libxmuu1:amd64",{"_index":3086,"title":{},"content":{"389":{"position":[[9825,15],[9910,14],[13935,14],[25543,15],[25628,14],[29484,14]]},"916":{"position":[[9825,15],[9910,14],[13935,14],[25543,15],[25628,14],[29484,14]]}},"keywords":{}}],["libxmuu1_2%3a1.1.2",{"_index":3087,"title":{},"content":{"389":{"position":[[9861,22],[25579,22]]},"916":{"position":[[9861,22],[25579,22]]}},"keywords":{}}],["libxtables11",{"_index":2882,"title":{},"content":{"389":{"position":[[2215,12],[3107,12],[4724,12],[18057,12],[18931,12],[20548,12]]},"916":{"position":[[2215,12],[3107,12],[4724,12],[18057,12],[18931,12],[20548,12]]}},"keywords":{}}],["libxtables11:amd64",{"_index":3082,"title":{},"content":{"389":{"position":[[9515,19],[9611,18],[13855,18],[25233,19],[25329,18],[29404,18]]},"916":{"position":[[9515,19],[9611,18],[13855,18],[25233,19],[25329,18],[29404,18]]}},"keywords":{}}],["libxtables11_1.6.0",{"_index":3083,"title":{},"content":{"389":{"position":[[9555,22],[25273,22]]},"916":{"position":[[9555,22],[25273,22]]}},"keywords":{}}],["libzmq3",{"_index":3764,"title":{},"content":{"559":{"position":[[565,7]]},"1094":{"position":[[565,7]]}},"keywords":{}}],["lic",{"_index":1012,"title":{"149":{"position":[[0,7]]},"282":{"position":[[22,8]]},"719":{"position":[[0,7]]}},"content":{"107":{"position":[[2765,7],[4265,7]]},"117":{"position":[[34,7],[112,8]]},"149":{"position":[[46,8],[63,7]]},"316":{"position":[[157,7],[250,7]]},"317":{"position":[[224,7]]},"685":{"position":[[34,7],[112,8]]},"719":{"position":[[46,8],[63,7]]},"853":{"position":[[22,8]]}},"keywords":{}}],["lif",{"_index":1953,"title":{},"content":{"195":{"position":[[34,4]]},"778":{"position":[[34,4]]}},"keywords":{}}],["lifecycl",{"_index":2669,"title":{},"content":{"368":{"position":[[518,9]]},"891":{"position":[[518,9]]}},"keywords":{}}],["lightweight",{"_index":1951,"title":{},"content":{"194":{"position":[[1361,11]]},"777":{"position":[[1641,11]]}},"keywords":{}}],["limit",{"_index":1015,"title":{},"content":{"107":{"position":[[3062,7]]},"205":{"position":[[99,6]]},"226":{"position":[[677,5]]},"312":{"position":[[58,7]]},"754":{"position":[[99,6]]},"811":{"position":[[677,5]]}},"keywords":{}}],["lin",{"_index":501,"title":{},"content":{"28":{"position":[[758,5],[777,5]]},"107":{"position":[[6073,4]]},"133":{"position":[[811,5]]},"141":{"position":[[1085,5]]},"273":{"position":[[1114,4]]},"403":{"position":[[79,5]]},"511":{"position":[[1303,4]]},"546":{"position":[[758,5],[777,5]]},"566":{"position":[[747,4]]},"568":{"position":[[228,4]]},"572":{"position":[[107,4],[223,4],[314,4],[460,4],[625,4],[768,4],[923,4],[1052,4],[1173,4],[1336,4],[1432,4],[1613,4],[1759,4],[1919,4],[2082,4]]},"579":{"position":[[1035,5]]},"584":{"position":[[895,5]]},"589":{"position":[[1189,5]]},"616":{"position":[[758,5],[777,5]]},"844":{"position":[[1114,4]]},"930":{"position":[[79,5]]},"1072":{"position":[[758,5],[777,5]]},"1086":{"position":[[747,4]]},"1088":{"position":[[228,4]]},"1092":{"position":[[107,4],[223,4],[314,4],[460,4],[625,4],[768,4],[923,4],[1052,4],[1173,4],[1336,4],[1432,4],[1613,4],[1759,4],[1919,4],[2082,4]]},"1105":{"position":[[1035,5]]},"1110":{"position":[[895,5]]},"1115":{"position":[[1189,5]]}},"keywords":{}}],["link",{"_index":540,"title":{"356":{"position":[[28,4]]}},"content":{"31":{"position":[[169,5]]},"33":{"position":[[180,5]]},"143":{"position":[[195,4]]},"148":{"position":[[485,5]]},"230":{"position":[[996,4]]},"328":{"position":[[273,4]]},"350":{"position":[[338,4],[398,4],[444,4]]},"579":{"position":[[993,5]]},"584":{"position":[[853,5]]},"589":{"position":[[38,4],[1147,5]]},"623":{"position":[[169,5]]},"625":{"position":[[180,5]]},"793":{"position":[[996,4]]},"1105":{"position":[[993,5]]},"1110":{"position":[[853,5]]},"1115":{"position":[[38,4],[1147,5]]}},"keywords":{}}],["link=submarin",{"_index":191,"title":{},"content":{"13":{"position":[[324,14]]},"605":{"position":[[324,14]]}},"keywords":{}}],["lint",{"_index":1256,"title":{},"content":{"132":{"position":[[92,4]]},"507":{"position":[[241,5]]},"509":{"position":[[207,7],[339,6]]},"511":{"position":[[1221,4]]},"700":{"position":[[92,4]]},"1046":{"position":[[241,5],[247,5],[325,4]]},"1048":{"position":[[207,7],[339,6]]}},"keywords":{}}],["linux",{"_index":3201,"title":{},"content":{"391":{"position":[[405,5]]},"553":{"position":[[738,5]]},"918":{"position":[[405,5]]},"1079":{"position":[[738,5]]}},"keywords":{}}],["linux_x86_64.whl",{"_index":3775,"title":{},"content":{"559":{"position":[[1191,16]]},"1094":{"position":[[1191,16]]}},"keywords":{}}],["list",{"_index":138,"title":{"72":{"position":[[0,4]]},"79":{"position":[[0,4]]},"83":{"position":[[0,4]]},"87":{"position":[[0,4]]},"93":{"position":[[0,4]]},"101":{"position":[[0,4]]},"110":{"position":[[0,4]]},"148":{"position":[[8,5]]},"276":{"position":[[0,6]]},"424":{"position":[[0,4]]},"442":{"position":[[0,4]]},"453":{"position":[[0,4]]},"462":{"position":[[0,4]]},"480":{"position":[[0,4]]},"520":{"position":[[111,4],[136,4]]},"528":{"position":[[0,4]]},"532":{"position":[[0,4]]},"536":{"position":[[0,4]]},"664":{"position":[[0,4]]},"670":{"position":[[0,4]]},"678":{"position":[[0,4]]},"682":{"position":[[0,4]]},"703":{"position":[[0,4]]},"718":{"position":[[8,5]]},"847":{"position":[[0,6]]},"951":{"position":[[0,4]]},"969":{"position":[[0,4]]},"980":{"position":[[0,4]]},"989":{"position":[[0,4]]},"1012":{"position":[[0,4]]}},"content":{"8":{"position":[[2,7]]},"14":{"position":[[155,4],[185,4],[268,4],[300,4]]},"33":{"position":[[143,5],[268,5],[375,5]]},"93":{"position":[[185,5]]},"107":{"position":[[1380,5],[3145,6],[3363,4],[4205,6],[5915,4],[6028,5]]},"110":{"position":[[175,5]]},"133":{"position":[[947,5],[1029,4],[1480,5],[2175,5],[2259,6]]},"136":{"position":[[403,4],[502,4]]},"141":{"position":[[194,4],[693,4]]},"148":{"position":[[76,6]]},"170":{"position":[[292,4]]},"199":{"position":[[42,4]]},"204":{"position":[[667,4]]},"268":{"position":[[149,5]]},"276":{"position":[[0,6]]},"313":{"position":[[325,6]]},"332":{"position":[[10,4],[376,4]]},"334":{"position":[[613,4],[1300,4]]},"389":{"position":[[1925,8],[17502,8],[17767,8],[32356,8]]},"406":{"position":[[785,4]]},"418":{"position":[[237,5]]},"422":{"position":[[376,4],[440,4]]},"499":{"position":[[0,4],[109,4]]},"502":{"position":[[0,4],[96,4]]},"524":{"position":[[17,4]]},"528":{"position":[[10,4]]},"529":{"position":[[75,4]]},"532":{"position":[[10,4]]},"533":{"position":[[81,4]]},"536":{"position":[[10,4]]},"597":{"position":[[2,7]]},"606":{"position":[[155,4],[185,4],[268,4],[300,4]]},"625":{"position":[[143,5],[268,5],[375,5]]},"708":{"position":[[403,4],[502,4]]},"718":{"position":[[76,6]]},"740":{"position":[[292,4]]},"753":{"position":[[667,4]]},"782":{"position":[[42,4]]},"839":{"position":[[149,5]]},"847":{"position":[[0,6]]},"916":{"position":[[1925,8],[17502,8],[17767,8],[32356,8]]},"949":{"position":[[376,4],[440,4]]},"1026":{"position":[[0,4],[109,4]]},"1029":{"position":[[0,4],[96,4]]}},"keywords":{}}],["list<experimenttemplateparamspec",{"_index":3488,"title":{},"content":{"460":{"position":[[198,33]]},"465":{"position":[[207,33]]},"987":{"position":[[198,33]]},"992":{"position":[[207,33]]}},"keywords":{}}],["list<str",{"_index":3394,"title":{},"content":{"422":{"position":[[309,12],[363,12],[427,12]]},"949":{"position":[[309,12],[363,12],[427,12]]}},"keywords":{}}],["list[dict",{"_index":3571,"title":{"499":{"position":[[48,10]]},"502":{"position":[[25,10]]},"1026":{"position":[[48,10]]},"1029":{"position":[[25,10]]}},"content":{},"keywords":{}}],["list_experiments(statu",{"_index":3569,"title":{"499":{"position":[[0,24]]},"1026":{"position":[[0,24]]}},"content":{},"keywords":{}}],["list_log(statu",{"_index":3582,"title":{"502":{"position":[[0,16]]},"1029":{"position":[[0,16]]}},"content":{},"keywords":{}}],["listreview",{"_index":1289,"title":{},"content":{"133":{"position":[[1594,10]]}},"keywords":{}}],["littl",{"_index":1706,"title":{"167":{"position":[[2,6]]},"737":{"position":[[2,6]]}},"content":{},"keywords":{}}],["liv",{"_index":2345,"title":{},"content":{"308":{"position":[[104,4]]},"874":{"position":[[104,4]]}},"keywords":{}}],["ln",{"_index":2740,"title":{},"content":{"375":{"position":[[778,2],[1484,2]]},"549":{"position":[[1510,2]]},"553":{"position":[[1908,2]]},"559":{"position":[[1545,2]]},"902":{"position":[[778,2],[1484,2]]},"1075":{"position":[[1510,2]]},"1079":{"position":[[1908,2]]},"1094":{"position":[[1545,2]]}},"keywords":{}}],["lo",{"_index":3198,"title":{},"content":{"391":{"position":[[316,2]]},"918":{"position":[[316,2]]}},"keywords":{}}],["load",{"_index":2048,"title":{},"content":{"215":{"position":[[1657,4]]},"785":{"position":[[1657,4]]},"1040":{"position":[[0,4]]}},"keywords":{}}],["lobbi",{"_index":1124,"title":{},"content":{"107":{"position":[[8444,5]]}},"keywords":{}}],["local",{"_index":32,"title":{"3":{"position":[[10,5]]},"121":{"position":[[35,5]]},"123":{"position":[[16,5]]},"125":{"position":[[20,5]]},"126":{"position":[[17,5]]},"308":{"position":[[0,5]]},"311":{"position":[[56,5]]},"320":{"position":[[13,7]]},"325":{"position":[[13,7]]},"348":{"position":[[30,5]]},"592":{"position":[[10,5]]},"689":{"position":[[35,5]]},"691":{"position":[[16,5]]},"693":{"position":[[20,5]]},"694":{"position":[[17,5]]},"874":{"position":[[0,5]]},"877":{"position":[[13,7]]},"895":{"position":[[13,7]]}},"content":{"20":{"position":[[59,5]]},"21":{"position":[[379,5]]},"35":{"position":[[914,7]]},"123":{"position":[[25,5]]},"125":{"position":[[135,5]]},"181":{"position":[[1709,8]]},"190":{"position":[[328,5],[696,5]]},"193":{"position":[[491,5]]},"210":{"position":[[164,13]]},"216":{"position":[[221,6],[312,5],[640,13]]},"217":{"position":[[1050,12],[1180,8],[1551,9],[2040,8],[2293,8]]},"225":{"position":[[316,7]]},"272":{"position":[[240,5]]},"298":{"position":[[276,5]]},"300":{"position":[[58,5]]},"301":{"position":[[54,5]]},"308":{"position":[[22,5]]},"314":{"position":[[139,5]]},"315":{"position":[[34,8]]},"319":{"position":[[155,7]]},"320":{"position":[[36,8],[80,5]]},"324":{"position":[[153,7]]},"325":{"position":[[335,5]]},"384":{"position":[[596,5]]},"391":{"position":[[125,5]]},"403":{"position":[[222,5]]},"510":{"position":[[309,6]]},"512":{"position":[[4,5],[126,5]]},"513":{"position":[[309,5]]},"566":{"position":[[499,5]]},"569":{"position":[[1920,6]]},"620":{"position":[[59,5]]},"621":{"position":[[379,5]]},"627":{"position":[[914,7]]},"691":{"position":[[25,5]]},"693":{"position":[[135,5]]},"759":{"position":[[164,13]]},"764":{"position":[[1722,8]]},"773":{"position":[[328,5],[696,5]]},"776":{"position":[[491,5]]},"786":{"position":[[221,6],[312,5],[640,13]]},"787":{"position":[[1050,12],[1180,8],[1551,9],[2040,8],[2293,8]]},"810":{"position":[[337,7]]},"843":{"position":[[240,5]]},"865":{"position":[[279,5]]},"867":{"position":[[58,5]]},"869":{"position":[[446,5]]},"874":{"position":[[22,5]]},"876":{"position":[[155,7]]},"877":{"position":[[36,8],[80,5]]},"894":{"position":[[153,7]]},"895":{"position":[[335,5]]},"911":{"position":[[596,5]]},"918":{"position":[[125,5]]},"930":{"position":[[222,5]]},"1034":{"position":[[253,5]]},"1049":{"position":[[309,6]]},"1051":{"position":[[4,5],[126,5]]},"1052":{"position":[[309,5]]},"1086":{"position":[[499,5]]},"1089":{"position":[[1920,6]]}},"keywords":{}}],["local/eb",{"_index":2060,"title":{},"content":{"216":{"position":[[107,10]]},"786":{"position":[[107,10]]}},"keywords":{}}],["localhost",{"_index":3136,"title":{},"content":{"389":{"position":[[14366,9],[29915,9]]},"402":{"position":[[78,10]]},"524":{"position":[[152,12]]},"916":{"position":[[14366,9],[29915,9]]},"929":{"position":[[78,10]]}},"keywords":{}}],["localhost.xxx",{"_index":3135,"title":{},"content":{"389":{"position":[[14349,14],[29898,14]]},"916":{"position":[[14349,14],[29898,14]]}},"keywords":{}}],["localhost:8000",{"_index":4046,"title":{},"content":{"570":{"position":[[17217,15]]},"1090":{"position":[[17217,15]]}},"keywords":{}}],["localize_artifact",{"_index":1904,"title":{},"content":{"189":{"position":[[180,18],[316,18],[814,18]]},"772":{"position":[[180,18],[316,18],[814,18]]}},"keywords":{}}],["locat",{"_index":1752,"title":{"189":{"position":[[49,8]]},"772":{"position":[[49,8]]}},"content":{"171":{"position":[[969,8]]},"189":{"position":[[28,7]]},"229":{"position":[[1363,9]]},"261":{"position":[[277,8]]},"741":{"position":[[974,8]]},"772":{"position":[[28,7]]},"792":{"position":[[1364,9]]},"832":{"position":[[277,8]]}},"keywords":{}}],["lock",{"_index":2533,"title":{},"content":{"334":{"position":[[499,4]]},"348":{"position":[[114,4]]}},"keywords":{}}],["log",{"_index":461,"title":{"27":{"position":[[34,3]]},"83":{"position":[[16,3]]},"84":{"position":[[15,3]]},"453":{"position":[[16,3]]},"455":{"position":[[15,3]]},"545":{"position":[[34,3]]},"615":{"position":[[34,3]]},"682":{"position":[[16,3]]},"683":{"position":[[15,3]]},"980":{"position":[[16,3]]},"982":{"position":[[15,3]]},"1071":{"position":[[34,3]]}},"content":{"27":{"position":[[28,3]]},"31":{"position":[[83,3],[577,3]]},"32":{"position":[[20,4]]},"160":{"position":[[58,5]]},"184":{"position":[[45,5]]},"190":{"position":[[407,5]]},"197":{"position":[[397,5]]},"201":{"position":[[244,5]]},"215":{"position":[[128,5],[1085,4]]},"216":{"position":[[263,4]]},"218":{"position":[[81,4],[92,4],[119,4],[173,4]]},"350":{"position":[[41,3]]},"355":{"position":[[41,3]]},"491":{"position":[[97,4]]},"495":{"position":[[69,5]]},"501":{"position":[[15,4],[75,4],[162,3],[255,4]]},"502":{"position":[[16,4],[125,5],[139,4]]},"503":{"position":[[205,5],[219,4]]},"518":{"position":[[0,3]]},"519":{"position":[[0,3],[157,3]]},"545":{"position":[[28,3]]},"571":{"position":[[544,3]]},"579":{"position":[[1686,4],[1829,4],[1976,4]]},"584":{"position":[[1546,4],[1689,4],[1836,4]]},"589":{"position":[[2254,4],[2404,4],[2551,4],[2698,4],[2845,4]]},"615":{"position":[[28,3]]},"623":{"position":[[83,3],[577,3]]},"624":{"position":[[20,4]]},"730":{"position":[[58,5]]},"750":{"position":[[244,5]]},"767":{"position":[[45,5]]},"773":{"position":[[407,5]]},"780":{"position":[[404,5]]},"785":{"position":[[128,5],[1085,4]]},"786":{"position":[[263,4]]},"788":{"position":[[81,4],[92,4],[119,4],[173,4]]},"1005":{"position":[[97,4]]},"1022":{"position":[[69,5]]},"1028":{"position":[[15,4],[75,4],[162,3],[255,4]]},"1029":{"position":[[16,4],[125,5],[139,4]]},"1030":{"position":[[205,5],[219,4]]},"1032":{"position":[[57,7]]},"1034":{"position":[[65,7]]},"1035":{"position":[[0,3]]},"1036":{"position":[[0,3]]},"1037":{"position":[[0,3]]},"1038":{"position":[[0,3],[154,3],[212,6]]},"1058":{"position":[[0,3]]},"1059":{"position":[[0,3],[157,3]]},"1071":{"position":[[28,3]]},"1091":{"position":[[544,3]]},"1105":{"position":[[1686,4],[1829,4],[1976,4]]},"1110":{"position":[[1546,4],[1689,4],[1836,4]]},"1115":{"position":[[2254,4],[2404,4],[2551,4],[2698,4],[2845,4]]}},"keywords":{}}],["log/metr",{"_index":1929,"title":{},"content":{"190":{"position":[[589,12]]},"773":{"position":[[589,12]]}},"keywords":{}}],["log_dir=$(submarine_tensorboard_log_dir",{"_index":3558,"title":{},"content":{"492":{"position":[[163,40]]},"1006":{"position":[[163,40]]}},"keywords":{}}],["log_dir=/train/log",{"_index":727,"title":{},"content":{"77":{"position":[[237,18],[995,18]]},"78":{"position":[[237,18],[1142,18]]},"79":{"position":[[504,18]]},"80":{"position":[[537,18]]},"81":{"position":[[245,18],[848,18]]},"82":{"position":[[540,18]]},"86":{"position":[[636,18]]},"89":{"position":[[633,18]]},"223":{"position":[[316,18]]},"438":{"position":[[203,18]]},"441":{"position":[[203,18]]},"449":{"position":[[204,18]]},"461":{"position":[[604,18]]},"466":{"position":[[609,18]]},"496":{"position":[[422,18]]},"497":{"position":[[429,18]]},"669":{"position":[[636,18]]},"672":{"position":[[633,18]]},"676":{"position":[[237,18],[995,18]]},"677":{"position":[[237,18],[1142,18]]},"678":{"position":[[504,18]]},"679":{"position":[[537,18]]},"680":{"position":[[245,18],[848,18]]},"681":{"position":[[540,18]]},"808":{"position":[[316,18]]},"965":{"position":[[203,18]]},"968":{"position":[[203,18]]},"976":{"position":[[204,18]]},"988":{"position":[[604,18]]},"993":{"position":[[609,18]]},"1023":{"position":[[422,18]]},"1024":{"position":[[429,18]]}},"keywords":{}}],["log_dir\\u003d/train/log",{"_index":3443,"title":{},"content":{"438":{"position":[[1031,23]]},"441":{"position":[[1151,23]]},"443":{"position":[[624,23],[1632,23]]},"446":{"position":[[568,23]]},"449":{"position":[[1062,23]]},"452":{"position":[[543,23]]},"461":{"position":[[2397,23]]},"463":{"position":[[1399,23]]},"466":{"position":[[2427,23]]},"469":{"position":[[1423,23]]},"472":{"position":[[722,23]]},"965":{"position":[[1031,23]]},"968":{"position":[[1151,23]]},"970":{"position":[[624,23],[1632,23]]},"973":{"position":[[568,23]]},"976":{"position":[[1062,23]]},"979":{"position":[[543,23]]},"988":{"position":[[2397,23]]},"990":{"position":[[1399,23]]},"993":{"position":[[2427,23]]},"996":{"position":[[1423,23]]},"999":{"position":[[722,23]]}},"keywords":{}}],["log_metr",{"_index":3525,"title":{},"content":{"474":{"position":[[85,10]]},"475":{"position":[[447,10]]},"1001":{"position":[[85,10]]},"1002":{"position":[[447,10]]}},"keywords":{}}],["log_param",{"_index":3524,"title":{},"content":{"474":{"position":[[72,9]]},"475":{"position":[[429,9]]},"1001":{"position":[[72,9]]},"1002":{"position":[[429,9]]}},"keywords":{}}],["logcont",{"_index":779,"title":{},"content":{"83":{"position":[[254,13],[374,13]]},"84":{"position":[[287,13]]},"454":{"position":[[200,13]]},"457":{"position":[[228,13]]},"682":{"position":[[254,13],[374,13]]},"683":{"position":[[287,13]]},"981":{"position":[[200,13]]},"984":{"position":[[228,13]]}},"keywords":{}}],["logdir",{"_index":3554,"title":{"490":{"position":[[9,7]]},"1004":{"position":[[9,7]]}},"content":{},"keywords":{}}],["logic",{"_index":1705,"title":{},"content":{"165":{"position":[[516,6]]},"735":{"position":[[516,6]]}},"keywords":{}}],["login",{"_index":194,"title":{"32":{"position":[[0,5]]},"52":{"position":[[0,5]]},"624":{"position":[[0,5]]},"644":{"position":[[0,5]]}},"content":{"13":{"position":[[442,5]]},"21":{"position":[[576,5]]},"32":{"position":[[115,5]]},"52":{"position":[[18,5]]},"139":{"position":[[407,5]]},"395":{"position":[[32,5]]},"605":{"position":[[442,5]]},"621":{"position":[[576,5]]},"624":{"position":[[115,5]]},"644":{"position":[[18,5]]},"711":{"position":[[407,5]]},"922":{"position":[[32,5]]}},"keywords":{}}],["loginit",{"_index":2437,"title":{},"content":{"320":{"position":[[1029,8]]},"877":{"position":[[1029,8]]}},"keywords":{}}],["logist",{"_index":1573,"title":{},"content":{"159":{"position":[[487,8]]},"729":{"position":[[487,8]]}},"keywords":{}}],["logs/metr",{"_index":1846,"title":{},"content":{"181":{"position":[[733,13]]},"764":{"position":[[733,13]]}},"keywords":{}}],["logs=non",{"_index":3374,"title":{},"content":{"415":{"position":[[2038,11]]},"942":{"position":[[2056,11]]}},"keywords":{}}],["logs[\"accuraci",{"_index":3379,"title":{},"content":{"415":{"position":[[2151,18]]},"942":{"position":[[2171,18]]}},"keywords":{}}],["logs[\"loss",{"_index":3378,"title":{},"content":{"415":{"position":[[2125,13]]},"942":{"position":[[2145,13]]}},"keywords":{}}],["long",{"_index":1270,"title":{},"content":{"133":{"position":[[415,4],[685,4],[2422,4]]},"219":{"position":[[523,4]]},"248":{"position":[[26,4]]},"273":{"position":[[795,4]]},"331":{"position":[[753,5],[865,4]]},"511":{"position":[[1325,7],[1353,5],[1380,7]]},"789":{"position":[[523,4]]},"818":{"position":[[26,4]]},"844":{"position":[[795,4]]}},"keywords":{}}],["look",{"_index":1241,"title":{},"content":{"130":{"position":[[93,5],[144,6],[184,5]]},"136":{"position":[[527,7]]},"152":{"position":[[4,4],[35,5],[91,5]]},"154":{"position":[[508,5],[839,4]]},"159":{"position":[[2908,4]]},"170":{"position":[[325,6]]},"182":{"position":[[999,4]]},"188":{"position":[[155,5]]},"200":{"position":[[117,5]]},"215":{"position":[[12,4]]},"314":{"position":[[1044,7]]},"350":{"position":[[456,4]]},"578":{"position":[[770,4]]},"698":{"position":[[93,5],[144,6],[184,5]]},"708":{"position":[[527,7]]},"722":{"position":[[4,4],[35,5],[91,5]]},"724":{"position":[[508,5],[839,4]]},"729":{"position":[[2908,4]]},"740":{"position":[[325,6]]},"765":{"position":[[999,4]]},"771":{"position":[[155,5]]},"783":{"position":[[117,5]]},"785":{"position":[[12,4]]},"1104":{"position":[[770,4]]}},"keywords":{}}],["loos",{"_index":1971,"title":{},"content":{"197":{"position":[[263,5]]},"780":{"position":[[270,5]]}},"keywords":{}}],["loss",{"_index":2043,"title":{},"content":{"215":{"position":[[1154,5]]},"415":{"position":[[2064,4]]},"570":{"position":[[9658,4]]},"785":{"position":[[1154,5]]},"942":{"position":[[2082,4]]},"1090":{"position":[[9658,4]]}},"keywords":{}}],["loss='sparse_categorical_crossentropi",{"_index":3357,"title":{},"content":{"415":{"position":[[1272,39]]},"942":{"position":[[1290,39]]}},"keywords":{}}],["lot",{"_index":1562,"title":{},"content":{"159":{"position":[[50,4],[1351,4]]},"162":{"position":[[954,3]]},"197":{"position":[[50,3]]},"331":{"position":[[1509,3],[1765,3]]},"591":{"position":[[227,4]]},"729":{"position":[[50,4],[1351,4]]},"732":{"position":[[954,3]]},"780":{"position":[[50,3]]},"1117":{"position":[[227,4]]}},"keywords":{}}],["low",{"_index":1677,"title":{"163":{"position":[[51,5]]},"733":{"position":[[51,5]]}},"content":{"163":{"position":[[415,5]]},"219":{"position":[[553,5]]},"273":{"position":[[959,3]]},"733":{"position":[[415,5]]},"789":{"position":[[553,5]]},"844":{"position":[[959,3]]}},"keywords":{}}],["lowercas",{"_index":2108,"title":{},"content":{"224":{"position":[[267,10]]},"406":{"position":[[374,9]]},"809":{"position":[[267,10]]},"933":{"position":[[374,9]]}},"keywords":{}}],["ls",{"_index":2776,"title":{},"content":{"382":{"position":[[38,2]]},"565":{"position":[[447,3]]},"909":{"position":[[38,2]]},"1085":{"position":[[447,3]]}},"keywords":{}}],["m",{"_index":1220,"title":{},"content":{"124":{"position":[[144,1],[215,1]]},"314":{"position":[[1231,1]]},"334":{"position":[[917,1],[1612,1]]},"339":{"position":[[255,1]]},"349":{"position":[[387,1]]},"510":{"position":[[203,1],[269,1]]},"513":{"position":[[412,1],[499,1]]},"549":{"position":[[921,1]]},"559":{"position":[[1056,1]]},"692":{"position":[[144,1],[215,1]]},"1049":{"position":[[203,1],[269,1]]},"1052":{"position":[[412,1],[499,1]]},"1075":{"position":[[921,1]]},"1094":{"position":[[1056,1]]}},"keywords":{}}],["m2/settings.xml",{"_index":2550,"title":{},"content":{"336":{"position":[[64,19]]}},"keywords":{}}],["mac",{"_index":2464,"title":{},"content":{"330":{"position":[[88,3]]}},"keywords":{}}],["machin",{"_index":305,"title":{"121":{"position":[[41,7]]},"160":{"position":[[0,7]]},"566":{"position":[[21,7]]},"568":{"position":[[35,7]]},"689":{"position":[[41,7]]},"730":{"position":[[0,7]]},"1086":{"position":[[21,7]]},"1088":{"position":[[35,7]]}},"content":{"20":{"position":[[65,8]]},"21":{"position":[[385,8]]},"31":{"position":[[40,7]]},"35":{"position":[[203,7]]},"151":{"position":[[232,7]]},"152":{"position":[[362,9]]},"159":{"position":[[22,7],[91,7],[243,7],[373,7],[441,7],[1291,7],[1328,7],[1935,7],[2092,7],[2218,7],[2691,7],[2830,7],[2916,7]]},"162":{"position":[[36,7],[268,7],[391,7],[913,7]]},"163":{"position":[[140,7]]},"168":{"position":[[89,7]]},"172":{"position":[[206,7]]},"176":{"position":[[1345,7],[1414,7]]},"196":{"position":[[443,9]]},"222":{"position":[[7,7],[72,7]]},"224":{"position":[[42,7],[141,7]]},"259":{"position":[[657,7]]},"368":{"position":[[465,7]]},"386":{"position":[[33,7]]},"391":{"position":[[131,8]]},"568":{"position":[[40,7]]},"620":{"position":[[65,8]]},"621":{"position":[[385,8]]},"623":{"position":[[40,7]]},"627":{"position":[[203,7]]},"721":{"position":[[232,7]]},"722":{"position":[[362,9]]},"729":{"position":[[22,7],[91,7],[243,7],[373,7],[441,7],[1291,7],[1328,7],[1935,7],[2092,7],[2218,7],[2691,7],[2830,7],[2916,7]]},"732":{"position":[[36,7],[268,7],[391,7],[913,7]]},"733":{"position":[[140,7]]},"738":{"position":[[89,7]]},"742":{"position":[[206,7]]},"746":{"position":[[1348,7],[1417,7]]},"779":{"position":[[443,9]]},"807":{"position":[[7,7],[72,7]]},"809":{"position":[[42,7],[141,7]]},"830":{"position":[[657,7]]},"891":{"position":[[465,7]]},"913":{"position":[[33,7]]},"918":{"position":[[131,8]]},"1088":{"position":[[40,7]]}},"keywords":{}}],["mad",{"_index":1068,"title":{},"content":{"107":{"position":[[5858,4],[7433,4],[7565,5],[8814,4],[10830,4]]},"133":{"position":[[303,4]]},"161":{"position":[[657,4]]},"314":{"position":[[2616,4]]},"731":{"position":[[657,4]]}},"keywords":{}}],["magma",{"_index":3734,"title":{},"content":{"553":{"position":[[1008,5]]},"1079":{"position":[[1008,5]]}},"keywords":{}}],["mail",{"_index":973,"title":{"148":{"position":[[0,7]]},"718":{"position":[[0,7]]}},"content":{"107":{"position":[[1372,7],[3137,7],[4197,7],[5907,7],[6020,7],[6231,5]]},"133":{"position":[[939,7],[1472,7],[1508,5],[1586,7]]},"141":{"position":[[186,7],[685,7],[758,4],[2084,4]]},"148":{"position":[[68,7],[689,4]]},"718":{"position":[[68,7]]}},"keywords":{}}],["mailbox",{"_index":1392,"title":{},"content":{"141":{"position":[[1425,8]]},"331":{"position":[[145,7],[1296,7]]},"335":{"position":[[144,7]]}},"keywords":{}}],["mailbox_size_limit",{"_index":3142,"title":{},"content":{"389":{"position":[[14468,19],[30017,19]]},"916":{"position":[[14468,19],[30017,19]]}},"keywords":{}}],["mailboxit’",{"_index":2471,"title":{},"content":{"331":{"position":[[175,11]]}},"keywords":{}}],["mailx",{"_index":2866,"title":{},"content":{"389":{"position":[[2048,5],[2888,5],[5413,5],[10601,6],[10692,5],[15076,5],[15150,5],[15182,7],[17890,5],[18730,5],[21237,5],[26319,6],[26410,5],[30625,5],[30699,5],[30731,7]]},"916":{"position":[[2048,5],[2888,5],[5413,5],[10601,6],[10692,5],[15076,5],[15150,5],[15182,7],[17890,5],[18730,5],[21237,5],[26319,6],[26410,5],[30625,5],[30699,5],[30731,7]]}},"keywords":{}}],["mailx_8.1.2",{"_index":3096,"title":{},"content":{"389":{"position":[[10636,11],[26354,11]]},"916":{"position":[[10636,11],[26354,11]]}},"keywords":{}}],["main",{"_index":1732,"title":{},"content":{"170":{"position":[[366,4]]},"181":{"position":[[1345,4],[1399,4],[1602,4],[1935,4]]},"189":{"position":[[104,4]]},"195":{"position":[[61,4]]},"314":{"position":[[1247,4]]},"329":{"position":[[0,4]]},"338":{"position":[[29,4]]},"415":{"position":[[1351,7],[2294,6]]},"572":{"position":[[327,4]]},"740":{"position":[[366,4]]},"764":{"position":[[1351,4],[1405,4],[1609,4],[1948,4]]},"772":{"position":[[104,4]]},"778":{"position":[[61,4]]},"942":{"position":[[1369,7],[2376,6]]},"1092":{"position":[[327,4]]}},"keywords":{}}],["main.cf",{"_index":3149,"title":{},"content":{"389":{"position":[[14884,8],[30433,8]]},"916":{"position":[[14884,8],[30433,8]]}},"keywords":{}}],["mainland",{"_index":3710,"title":{},"content":{"549":{"position":[[1295,8]]},"1075":{"position":[[1295,8]]}},"keywords":{}}],["mainli",{"_index":2095,"title":{},"content":{"219":{"position":[[309,6]]},"248":{"position":[[92,6],[285,6]]},"259":{"position":[[118,6],[249,6]]},"359":{"position":[[14,6]]},"363":{"position":[[51,6]]},"789":{"position":[[309,6]]},"818":{"position":[[92,6],[285,6]]},"830":{"position":[[118,6],[249,6]]},"881":{"position":[[14,6]]},"885":{"position":[[51,6]]}},"keywords":{}}],["mainlin",{"_index":1145,"title":{},"content":{"107":{"position":[[10060,8]]}},"keywords":{}}],["maint",{"_index":2097,"title":{},"content":{"219":{"position":[[389,11]]},"789":{"position":[[389,11]]}},"keywords":{}}],["maintain",{"_index":1292,"title":{},"content":{"133":{"position":[[1711,8]]},"162":{"position":[[658,11]]},"249":{"position":[[217,8]]},"261":{"position":[[137,9]]},"269":{"position":[[396,9]]},"732":{"position":[[658,11]]},"819":{"position":[[217,8]]},"832":{"position":[[137,9]]},"840":{"position":[[396,9]]}},"keywords":{}}],["major",{"_index":962,"title":{},"content":{"107":{"position":[[1056,8],[7862,8],[7880,8],[7971,8],[7991,8],[9313,8],[9624,8],[10078,8],[10256,8],[10493,8],[10606,8]]},"159":{"position":[[2755,5]]},"171":{"position":[[313,5]]},"570":{"position":[[1504,6],[1750,6],[10921,6],[11167,6]]},"729":{"position":[[2755,5]]},"741":{"position":[[313,5]]},"1090":{"position":[[1504,6],[1750,6],[10921,6],[11167,6]]}},"keywords":{}}],["mak",{"_index":15,"title":{"156":{"position":[[20,4]]},"161":{"position":[[106,4]]},"726":{"position":[[20,4]]},"731":{"position":[[106,4]]}},"content":{"1":{"position":[[119,4],[302,4]]},"21":{"position":[[156,4]]},"105":{"position":[[35,4]]},"107":{"position":[[1552,5],[2938,5],[3413,4],[5474,7],[6403,7]]},"123":{"position":[[15,4]]},"125":{"position":[[216,4]]},"127":{"position":[[61,4]]},"129":{"position":[[56,4]]},"133":{"position":[[2793,4]]},"156":{"position":[[97,4],[344,4],[487,5],[547,5]]},"159":{"position":[[1475,4]]},"161":{"position":[[951,4]]},"162":{"position":[[3,4],[947,4]]},"182":{"position":[[679,4]]},"197":{"position":[[233,4]]},"211":{"position":[[190,4]]},"217":{"position":[[655,6],[694,5],[1109,4]]},"226":{"position":[[38,4]]},"248":{"position":[[609,4]]},"281":{"position":[[170,4],[206,4]]},"301":{"position":[[76,4]]},"305":{"position":[[46,4]]},"307":{"position":[[0,4]]},"320":{"position":[[1175,4]]},"339":{"position":[[25,4]]},"350":{"position":[[7,4]]},"355":{"position":[[7,4]]},"357":{"position":[[7,4]]},"375":{"position":[[224,5],[579,4],[971,4],[1053,4],[1082,4]]},"389":{"position":[[14749,4],[30298,4]]},"391":{"position":[[419,4]]},"398":{"position":[[404,4]]},"412":{"position":[[62,4]]},"510":{"position":[[327,4]]},"570":{"position":[[356,4],[9853,4]]},"578":{"position":[[285,4]]},"601":{"position":[[119,4],[302,4]]},"621":{"position":[[156,4]]},"691":{"position":[[15,4]]},"693":{"position":[[216,4]]},"695":{"position":[[61,4]]},"697":{"position":[[56,4]]},"726":{"position":[[97,4],[344,4],[487,5],[547,5]]},"729":{"position":[[1475,4]]},"731":{"position":[[951,4]]},"732":{"position":[[3,4],[947,4]]},"760":{"position":[[190,4]]},"765":{"position":[[679,4]]},"780":{"position":[[240,4]]},"787":{"position":[[655,6],[694,5],[1109,4]]},"811":{"position":[[38,4]]},"818":{"position":[[609,4]]},"852":{"position":[[170,4],[206,4]]},"868":{"position":[[60,4]]},"869":{"position":[[893,4]]},"871":{"position":[[46,4]]},"873":{"position":[[0,4]]},"877":{"position":[[1175,4]]},"902":{"position":[[224,5],[579,4],[971,4],[1053,4],[1082,4]]},"916":{"position":[[14749,4],[30298,4]]},"918":{"position":[[419,4]]},"925":{"position":[[404,4]]},"939":{"position":[[64,4]]},"1049":{"position":[[327,4]]},"1090":{"position":[[356,4],[9853,4]]},"1104":{"position":[[285,4]]}},"keywords":{}}],["make_datasets_unbatch",{"_index":3330,"title":{},"content":{"415":{"position":[[438,26]]},"942":{"position":[[456,26]]}},"keywords":{}}],["make_datasets_unbatched().batch(batch_size).repeat",{"_index":3365,"title":{},"content":{"415":{"position":[[1626,52]]},"942":{"position":[[1644,52]]}},"keywords":{}}],["manag",{"_index":291,"title":{"44":{"position":[[0,7]]},"64":{"position":[[0,7]]},"162":{"position":[[44,10]]},"176":{"position":[[33,10],[52,10]]},"183":{"position":[[0,6]]},"184":{"position":[[0,6]]},"185":{"position":[[0,6]]},"192":{"position":[[11,7]]},"193":{"position":[[16,7]]},"209":{"position":[[9,7]]},"233":{"position":[[11,7]]},"234":{"position":[[18,7]]},"235":{"position":[[12,7]]},"237":{"position":[[14,7]]},"238":{"position":[[16,7]]},"239":{"position":[[8,7]]},"240":{"position":[[22,7]]},"241":{"position":[[9,7]]},"402":{"position":[[0,6]]},"512":{"position":[[6,10]]},"636":{"position":[[0,7]]},"656":{"position":[[0,7]]},"732":{"position":[[44,10]]},"746":{"position":[[33,10],[52,10]]},"758":{"position":[[9,7]]},"766":{"position":[[0,6]]},"767":{"position":[[0,6]]},"768":{"position":[[0,6]]},"775":{"position":[[11,7]]},"776":{"position":[[16,7]]},"796":{"position":[[11,7]]},"797":{"position":[[18,7]]},"798":{"position":[[12,7]]},"800":{"position":[[14,7]]},"801":{"position":[[16,7]]},"802":{"position":[[8,7]]},"803":{"position":[[22,7]]},"804":{"position":[[9,7]]},"929":{"position":[[0,6]]},"1051":{"position":[[6,10]]}},"content":{"17":{"position":[[786,7]]},"107":{"position":[[1793,11],[3189,7],[3207,7],[3629,10],[3662,10],[3891,10],[5002,10]]},"158":{"position":[[240,7]]},"159":{"position":[[1239,6]]},"162":{"position":[[112,10],[167,10]]},"167":{"position":[[182,6],[443,10]]},"168":{"position":[[441,10],[499,10]]},"171":{"position":[[499,10]]},"173":{"position":[[6,11],[456,6]]},"175":{"position":[[170,10],[308,7]]},"176":{"position":[[716,10],[1246,10],[1279,6]]},"179":{"position":[[645,10],[662,8],[675,7],[1085,7],[1102,6],[1192,11],[1220,7],[1256,8]]},"181":{"position":[[1012,7],[1665,8],[2202,6]]},"184":{"position":[[191,6]]},"192":{"position":[[15,7]]},"193":{"position":[[40,8],[167,6],[218,7]]},"194":{"position":[[185,7],[215,10],[346,9],[559,8],[1159,10]]},"195":{"position":[[275,10]]},"196":{"position":[[480,7],[1076,7]]},"197":{"position":[[203,10]]},"200":{"position":[[1297,8]]},"201":{"position":[[326,8],[393,8],[495,8]]},"208":{"position":[[630,7]]},"209":{"position":[[27,8]]},"222":{"position":[[469,7]]},"225":{"position":[[246,8]]},"229":{"position":[[1636,7]]},"230":{"position":[[95,6],[239,6]]},"231":{"position":[[1039,11]]},"242":{"position":[[81,7],[143,11]]},"249":{"position":[[187,10]]},"252":{"position":[[290,6]]},"263":{"position":[[275,7]]},"269":{"position":[[225,10],[287,10],[435,7]]},"270":{"position":[[334,10],[429,10],[447,7]]},"306":{"position":[[24,7]]},"329":{"position":[[122,7]]},"352":{"position":[[1603,7]]},"368":{"position":[[174,10],[358,6],[528,11]]},"389":{"position":[[15857,7],[16167,7]]},"405":{"position":[[29,6]]},"406":{"position":[[101,6]]},"495":{"position":[[46,7]]},"609":{"position":[[786,7]]},"728":{"position":[[240,7]]},"729":{"position":[[1239,6]]},"732":{"position":[[112,10],[167,10]]},"737":{"position":[[182,6],[443,10]]},"738":{"position":[[441,10],[499,10]]},"741":{"position":[[499,10]]},"743":{"position":[[6,11],[457,6]]},"745":{"position":[[170,10],[308,7]]},"746":{"position":[[717,10],[1249,10],[1282,6]]},"749":{"position":[[645,10],[662,8],[675,7],[1090,7],[1107,6],[1197,11],[1225,7],[1261,8]]},"750":{"position":[[326,8],[394,8],[496,8]]},"757":{"position":[[630,7]]},"758":{"position":[[27,8]]},"764":{"position":[[1012,7],[1673,8],[2215,6]]},"767":{"position":[[191,6]]},"775":{"position":[[15,7]]},"776":{"position":[[40,8],[167,6],[218,7]]},"777":{"position":[[185,7],[215,10],[352,9],[565,8],[1439,10]]},"778":{"position":[[275,10]]},"779":{"position":[[480,7],[1081,7]]},"780":{"position":[[209,10]]},"783":{"position":[[1297,8]]},"792":{"position":[[1638,7]]},"793":{"position":[[95,6],[239,6]]},"794":{"position":[[1292,11]]},"805":{"position":[[81,7],[143,11]]},"807":{"position":[[469,7]]},"810":{"position":[[267,8]]},"819":{"position":[[187,10]]},"822":{"position":[[295,6]]},"834":{"position":[[275,7]]},"840":{"position":[[225,10],[287,10],[435,7]]},"841":{"position":[[334,10],[429,10],[447,7]]},"872":{"position":[[24,7]]},"891":{"position":[[174,10],[358,6],[528,11]]},"916":{"position":[[15857,7],[16167,7]]},"932":{"position":[[29,6]]},"933":{"position":[[101,6]]},"1022":{"position":[[46,7]]},"1032":{"position":[[90,8]]}},"keywords":{}}],["management.github/gitlab",{"_index":599,"title":{},"content":{"35":{"position":[[468,24]]},"627":{"position":[[468,24]]}},"keywords":{}}],["mani",{"_index":984,"title":{},"content":{"107":{"position":[[1699,4],[8045,4]]},"133":{"position":[[806,4]]},"159":{"position":[[346,4],[518,4],[585,4],[1760,4]]},"160":{"position":[[674,4]]},"161":{"position":[[74,4],[601,4]]},"162":{"position":[[263,4]]},"205":{"position":[[4,4]]},"322":{"position":[[225,4]]},"389":{"position":[[1692,4]]},"503":{"position":[[111,4]]},"729":{"position":[[346,4],[518,4],[585,4],[1760,4]]},"730":{"position":[[674,4]]},"731":{"position":[[74,4],[601,4]]},"732":{"position":[[263,4]]},"754":{"position":[[4,4]]},"879":{"position":[[225,4]]},"916":{"position":[[1692,4]]},"1030":{"position":[[111,4]]}},"keywords":{}}],["manif",{"_index":117,"title":{},"content":{"7":{"position":[[549,9]]},"596":{"position":[[549,9]]}},"keywords":{}}],["mann",{"_index":1129,"title":{},"content":{"107":{"position":[[8591,7]]},"133":{"position":[[2275,7]]}},"keywords":{}}],["manual",{"_index":657,"title":{"551":{"position":[[0,8]]},"556":{"position":[[0,8]]},"562":{"position":[[0,8]]},"1077":{"position":[[0,8]]},"1082":{"position":[[0,8]]},"1097":{"position":[[0,8]]}},"content":{"35":{"position":[[3317,8]]},"159":{"position":[[469,9]]},"377":{"position":[[0,8]]},"569":{"position":[[148,8]]},"627":{"position":[[3317,8]]},"729":{"position":[[469,9]]},"904":{"position":[[0,8]]},"1089":{"position":[[148,8]]}},"keywords":{}}],["map",{"_index":310,"title":{},"content":{"20":{"position":[[155,8]]},"176":{"position":[[867,9]]},"389":{"position":[[14216,4],[29765,4]]},"620":{"position":[[155,8]]},"746":{"position":[[869,9]]},"916":{"position":[[14216,4],[29765,4]]}},"keywords":{}}],["map<str",{"_index":3415,"title":{},"content":{"437":{"position":[[210,11],[469,11],[1099,11]]},"448":{"position":[[201,11]]},"460":{"position":[[754,11],[1013,11],[1312,11]]},"471":{"position":[[132,11]]},"478":{"position":[[467,11]]},"964":{"position":[[210,11],[469,11],[1099,11]]},"975":{"position":[[201,11]]},"987":{"position":[[754,11],[1013,11],[1312,11]]},"998":{"position":[[132,11]]},"1010":{"position":[[467,11]]}},"keywords":{}}],["margin",{"_index":2385,"title":{},"content":{"314":{"position":[[1179,10]]}},"keywords":{}}],["mark",{"_index":2506,"title":{},"content":{"331":{"position":[[2415,6]]}},"keywords":{}}],["markdown",{"_index":2337,"title":{},"content":{"304":{"position":[[118,8]]},"870":{"position":[[118,8]]}},"keywords":{}}],["maskingorg.apache.submarine.spark.security.api.rangersparkauthzext",{"_index":4348,"title":{},"content":{"1064":{"position":[[1953,72]]}},"keywords":{}}],["mast",{"_index":771,"title":{"354":{"position":[[72,6]]}},"content":{"79":{"position":[[1258,9]]},"83":{"position":[[428,6]]},"84":{"position":[[341,6]]},"121":{"position":[[343,7]]},"123":{"position":[[31,6],[62,6]]},"389":{"position":[[1436,8],[1897,7],[2962,6],[5934,6],[11406,7],[11501,6],[14189,6],[14270,6],[14335,6],[15630,6],[17673,6]]},"501":{"position":[[169,8],[224,7]]},"568":{"position":[[172,7]]},"569":{"position":[[322,7],[386,10],[397,8],[531,7],[807,7],[1073,7],[1279,6],[1421,10],[1432,8],[1701,6]]},"570":{"position":[[104,7],[124,7],[4892,6],[14398,6],[17046,6],[17062,6]]},"678":{"position":[[1258,9]]},"682":{"position":[[428,6]]},"683":{"position":[[341,6]]},"689":{"position":[[343,7]]},"691":{"position":[[31,6],[62,6]]},"916":{"position":[[1436,8],[1897,7],[2962,6],[5934,6],[11406,7],[11501,6],[14189,6],[14270,6],[14335,6],[15630,6],[17673,6]]},"1028":{"position":[[169,8],[224,7]]},"1088":{"position":[[172,7]]},"1089":{"position":[[322,7],[386,10],[397,8],[531,7],[807,7],[1073,7],[1279,6],[1421,10],[1432,8],[1701,6]]},"1090":{"position":[[104,7],[124,7],[4892,6],[14398,6],[17046,6],[17062,6]]}},"keywords":{}}],["master_6.2u5",{"_index":3103,"title":{},"content":{"389":{"position":[[11449,12]]},"916":{"position":[[11449,12]]}},"keywords":{}}],["match",{"_index":2679,"title":{},"content":{"371":{"position":[[128,7]]},"898":{"position":[[128,7]]}},"keywords":{}}],["matplotlib",{"_index":3705,"title":{},"content":{"549":{"position":[[869,10]]},"559":{"position":[[995,10]]},"1075":{"position":[[869,10]]},"1094":{"position":[[995,10]]}},"keywords":{}}],["matt",{"_index":1502,"title":{},"content":{"153":{"position":[[556,6]]},"168":{"position":[[526,6]]},"224":{"position":[[231,6]]},"723":{"position":[[556,6]]},"738":{"position":[[526,6]]},"809":{"position":[[231,6]]}},"keywords":{}}],["mav",{"_index":2280,"title":{"283":{"position":[[48,5]]},"288":{"position":[[0,5]]},"336":{"position":[[7,5]]},"854":{"position":[[48,5]]},"859":{"position":[[0,5]]}},"content":{"283":{"position":[[0,5],[26,5],[86,5],[109,5],[123,6],[196,5]]},"328":{"position":[[218,5]]},"336":{"position":[[39,5]]},"352":{"position":[[642,5]]},"854":{"position":[[0,5],[26,5],[86,5],[109,5],[123,6],[196,5]]},"1053":{"position":[[54,6]]}},"keywords":{}}],["maximum",{"_index":2020,"title":{},"content":{"205":{"position":[[124,7]]},"754":{"position":[[124,7]]}},"keywords":{}}],["mb",{"_index":2685,"title":{},"content":{"372":{"position":[[133,3],[201,3]]},"389":{"position":[[3398,2],[3441,2],[6947,2],[19265,2]]},"916":{"position":[[3398,2],[3441,2],[6947,2],[19265,2]]}},"keywords":{}}],["mb,checksum,signatur",{"_index":2708,"title":{},"content":{"372":{"position":[[1283,22],[1498,22]]},"899":{"position":[[736,22],[951,22]]}},"keywords":{}}],["mb,checksum,signature)dock",{"_index":2697,"title":{},"content":{"372":{"position":[[759,28],[1030,28]]},"899":{"position":[[212,28],[483,28]]}},"keywords":{}}],["mb,checksum,signature)source:submarin",{"_index":2696,"title":{},"content":{"372":{"position":[[695,38],[966,38]]},"899":{"position":[[148,38],[419,38]]}},"keywords":{}}],["mb,checksum,signature,announc",{"_index":2706,"title":{},"content":{"372":{"position":[[1201,35],[1416,35]]},"899":{"position":[[654,35],[869,35]]}},"keywords":{}}],["mb/",{"_index":3041,"title":{},"content":{"389":{"position":[[6962,5]]},"916":{"position":[[6962,5]]}},"keywords":{}}],["mc8ww",{"_index":4262,"title":{},"content":{"939":{"position":[[603,5]]}},"keywords":{}}],["md",{"_index":2409,"title":{},"content":{"315":{"position":[[140,2],[175,2],[340,2],[416,2]]},"342":{"position":[[43,2]]}},"keywords":{}}],["md5",{"_index":2678,"title":{},"content":{"371":{"position":[[87,3]]},"898":{"position":[[87,3]]}},"keywords":{}}],["me)at",{"_index":1244,"title":{},"content":{"130":{"position":[[198,5]]},"698":{"position":[[198,5]]}},"keywords":{}}],["mean",{"_index":1179,"title":{},"content":{"117":{"position":[[78,5]]},"168":{"position":[[129,5]]},"217":{"position":[[566,4]]},"261":{"position":[[406,5]]},"314":{"position":[[2490,5]]},"389":{"position":[[1785,7]]},"566":{"position":[[523,5]]},"685":{"position":[[78,5]]},"738":{"position":[[129,5]]},"787":{"position":[[566,4]]},"832":{"position":[[406,5]]},"916":{"position":[[1785,7]]},"1086":{"position":[[523,5]]}},"keywords":{}}],["medium",{"_index":2013,"title":{},"content":{"204":{"position":[[334,7]]},"252":{"position":[[33,6]]},"753":{"position":[[334,7]]},"822":{"position":[[33,6]]}},"keywords":{}}],["meet",{"_index":1939,"title":{},"content":{"194":{"position":[[271,4]]},"246":{"position":[[370,4]]},"777":{"position":[[277,4]]},"816":{"position":[[370,4]]}},"keywords":{}}],["mem/cpu/gpu",{"_index":2012,"title":{},"content":{"204":{"position":[[276,11]]},"753":{"position":[[276,11]]}},"keywords":{}}],["memb",{"_index":637,"title":{},"content":{"35":{"position":[[1774,7],[2173,7],[2289,7],[2417,7],[2537,7],[2672,7],[2795,7]]},"107":{"position":[[2059,8],[2344,8],[3011,6],[4334,7],[4520,8],[4535,6],[4675,6],[4790,8],[7374,7],[9336,7],[9640,7],[9746,7],[9850,7],[9866,6],[9947,7],[10101,7],[10279,7],[10329,6],[10353,6],[10390,6],[10516,7],[10539,6],[10629,7]]},"133":{"position":[[2867,6]]},"141":{"position":[[14,7],[448,8],[1947,8]]},"143":{"position":[[35,7]]},"627":{"position":[[1774,7],[2173,7],[2289,7],[2417,7],[2537,7],[2672,7],[2795,7]]},"713":{"position":[[35,7]]}},"keywords":{}}],["membership",{"_index":1049,"title":{},"content":{"107":{"position":[[4417,10]]}},"keywords":{}}],["memori",{"_index":48,"title":{},"content":{"5":{"position":[[47,6]]},"16":{"position":[[550,6]]},"181":{"position":[[1791,7]]},"410":{"position":[[184,6]]},"570":{"position":[[1579,7],[1601,7],[1825,7],[1847,7],[10996,7],[11018,7],[11242,7],[11264,7]]},"594":{"position":[[47,6]]},"608":{"position":[[550,6]]},"764":{"position":[[1804,7]]},"937":{"position":[[186,6]]},"1090":{"position":[[1579,7],[1601,7],[1825,7],[1847,7],[10996,7],[11018,7],[11242,7],[11264,7]]}},"keywords":{}}],["memory\":\"1024m",{"_index":3518,"title":{},"content":{"461":{"position":[[2815,17],[2988,17]]},"463":{"position":[[1817,17],[1990,17]]},"988":{"position":[[2815,17],[2988,17]]},"990":{"position":[[1817,17],[1990,17]]}},"keywords":{}}],["memory=1g,vcores=1",{"_index":4125,"title":{},"content":{"579":{"position":[[453,18],[502,18]]},"589":{"position":[[759,18]]},"590":{"position":[[452,18]]},"1105":{"position":[[453,18],[502,18]]},"1115":{"position":[[759,18]]},"1116":{"position":[[452,18]]}},"keywords":{}}],["memory=2g,vcores=1",{"_index":4205,"title":{},"content":{"590":{"position":[[640,18],[816,18]]},"1116":{"position":[[640,18],[816,18]]}},"keywords":{}}],["memory=3g,vcores=2",{"_index":4151,"title":{},"content":{"580":{"position":[[406,18]]},"584":{"position":[[420,18],[469,18]]},"585":{"position":[[377,18]]},"589":{"position":[[374,18],[561,18]]},"1106":{"position":[[406,18]]},"1110":{"position":[[420,18],[469,18]]},"1111":{"position":[[377,18]]},"1115":{"position":[[374,18],[561,18]]}},"keywords":{}}],["memory=4g,vcores=2,gpu=0",{"_index":377,"title":{},"content":{"23":{"position":[[487,24]]},"541":{"position":[[487,24]]},"611":{"position":[[487,24]]},"1067":{"position":[[487,24]]}},"keywords":{}}],["memory=4g,vcores=2,gpu=1",{"_index":386,"title":{},"content":{"23":{"position":[[726,24]]},"541":{"position":[[726,24]]},"611":{"position":[[726,24]]},"1067":{"position":[[726,24]]}},"keywords":{}}],["memory=64g,vcores=32,gpu=1",{"_index":2849,"title":{},"content":{"389":{"position":[[1126,26]]},"916":{"position":[[1126,26]]}},"keywords":{}}],["memoryclockr",{"_index":3877,"title":{},"content":{"570":{"position":[[1522,15],[1768,15],[10939,15],[11185,15]]},"1090":{"position":[[1522,15],[1768,15],[10939,15],[11185,15]]}},"keywords":{}}],["memorygpu",{"_index":3245,"title":{},"content":{"406":{"position":[[555,9]]},"933":{"position":[[555,9]]}},"keywords":{}}],["mention",{"_index":1830,"title":{},"content":{"177":{"position":[[121,9]]},"193":{"position":[[109,9]]},"199":{"position":[[317,9]]},"747":{"position":[[121,9]]},"776":{"position":[[109,9]]},"782":{"position":[[317,9]]}},"keywords":{}}],["mentor",{"_index":1380,"title":{},"content":{"141":{"position":[[471,8]]}},"keywords":{}}],["menu",{"_index":2386,"title":{},"content":{"314":{"position":[[1252,4]]}},"keywords":{}}],["mer",{"_index":1122,"title":{},"content":{"107":{"position":[[8369,6]]}},"keywords":{}}],["merg",{"_index":1135,"title":{"354":{"position":[[4,5]]}},"content":{"107":{"position":[[9095,5],[10046,6]]},"125":{"position":[[173,5],[189,6]]},"130":{"position":[[112,7],[289,7],[342,7],[411,6]]},"131":{"position":[[151,5]]},"133":{"position":[[278,5],[2568,5]]},"138":{"position":[[180,5]]},"144":{"position":[[287,7]]},"693":{"position":[[173,5],[189,6]]},"698":{"position":[[112,7],[289,7],[342,7],[411,6]]},"699":{"position":[[151,5]]},"710":{"position":[[180,5]]},"714":{"position":[[287,7]]}},"keywords":{}}],["messag",{"_index":777,"title":{},"content":{"83":{"position":[[174,10]]},"84":{"position":[[209,10]]},"93":{"position":[[173,9]]},"94":{"position":[[185,9]]},"95":{"position":[[330,9]]},"96":{"position":[[190,9]]},"97":{"position":[[238,9]]},"103":{"position":[[176,10]]},"107":{"position":[[7533,7]]},"110":{"position":[[163,9]]},"111":{"position":[[183,9]]},"112":{"position":[[286,9]]},"113":{"position":[[188,9]]},"115":{"position":[[224,9]]},"124":{"position":[[182,9]]},"148":{"position":[[307,8],[581,8]]},"272":{"position":[[246,7]]},"277":{"position":[[89,9]]},"682":{"position":[[174,10]]},"683":{"position":[[209,10]]},"692":{"position":[[182,9]]},"705":{"position":[[176,10]]},"718":{"position":[[307,8]]},"843":{"position":[[246,7]]},"848":{"position":[[89,9]]}},"keywords":{}}],["message\":\"cr",{"_index":890,"title":{},"content":{"100":{"position":[[431,17]]},"105":{"position":[[312,17]]},"109":{"position":[[306,17]]},"114":{"position":[[230,17]]},"479":{"position":[[391,17]]},"702":{"position":[[431,17]]},"1011":{"position":[[391,17]]}},"keywords":{}}],["message\":\"delet",{"_index":881,"title":{},"content":{"98":{"position":[[252,17]]},"106":{"position":[[244,17]]},"488":{"position":[[148,17]]},"1020":{"position":[[148,17]]}},"keywords":{}}],["message\":\"get",{"_index":920,"title":{},"content":{"102":{"position":[[167,14]]},"485":{"position":[[144,14]]},"704":{"position":[[167,14]]},"1017":{"position":[[144,14]]}},"keywords":{}}],["message\":\"list",{"_index":916,"title":{},"content":{"101":{"position":[[170,15]]},"482":{"position":[[152,15]]},"703":{"position":[[170,15]]},"1014":{"position":[[152,15]]}},"keywords":{}}],["message\":nul",{"_index":3395,"title":{},"content":{"423":{"position":[[570,15]]},"425":{"position":[[119,15]]},"428":{"position":[[136,15]]},"431":{"position":[[457,15]]},"434":{"position":[[139,15]]},"438":{"position":[[611,15]]},"441":{"position":[[731,15]]},"443":{"position":[[118,15]]},"446":{"position":[[148,15]]},"449":{"position":[[642,15]]},"452":{"position":[[151,15]]},"454":{"position":[[123,15]]},"457":{"position":[[153,15]]},"461":{"position":[[1117,15]]},"463":{"position":[[116,15]]},"466":{"position":[[1143,15]]},"469":{"position":[[139,15]]},"472":{"position":[[300,15]]},"950":{"position":[[570,15]]},"952":{"position":[[119,15]]},"955":{"position":[[136,15]]},"958":{"position":[[457,15]]},"961":{"position":[[139,15]]},"965":{"position":[[611,15]]},"968":{"position":[[731,15]]},"970":{"position":[[118,15]]},"973":{"position":[[148,15]]},"976":{"position":[[642,15]]},"979":{"position":[[151,15]]},"981":{"position":[[123,15]]},"984":{"position":[[153,15]]},"988":{"position":[[1117,15]]},"990":{"position":[[116,15]]},"993":{"position":[[1143,15]]},"996":{"position":[[139,15]]},"999":{"position":[[300,15]]}},"keywords":{}}],["messi",{"_index":1224,"title":{},"content":{"125":{"position":[[236,6]]},"693":{"position":[[236,6]]}},"keywords":{}}],["meta",{"_index":722,"title":{},"content":{"77":{"position":[[96,7],[854,7]]},"78":{"position":[[96,7],[1001,7]]},"79":{"position":[[363,7],[1009,7]]},"80":{"position":[[396,7]]},"81":{"position":[[104,7],[707,7]]},"82":{"position":[[399,7]]},"86":{"position":[[571,7]]},"89":{"position":[[568,7]]},"100":{"position":[[94,7],[769,8]]},"101":{"position":[[511,8]]},"102":{"position":[[502,8]]},"103":{"position":[[555,7]]},"179":{"position":[[865,4]]},"190":{"position":[[400,6]]},"192":{"position":[[83,5]]},"196":{"position":[[507,4]]},"197":{"position":[[132,4]]},"215":{"position":[[642,4],[725,4],[772,4],[814,4],[909,4],[1723,4],[1760,5],[1867,4]]},"216":{"position":[[421,4]]},"229":{"position":[[1272,5]]},"437":{"position":[[99,4]]},"438":{"position":[[62,7],[895,8]]},"441":{"position":[[62,7],[1015,8]]},"443":{"position":[[487,8],[1496,8]]},"446":{"position":[[432,8]]},"448":{"position":[[60,4],[85,4]]},"449":{"position":[[63,7],[926,8]]},"452":{"position":[[407,8]]},"460":{"position":[[643,4]]},"461":{"position":[[539,7],[2255,8]]},"463":{"position":[[1257,8]]},"466":{"position":[[544,7],[2285,8]]},"469":{"position":[[1281,8]]},"472":{"position":[[585,8]]},"478":{"position":[[89,4]]},"479":{"position":[[62,7],[732,8]]},"482":{"position":[[479,8]]},"485":{"position":[[467,8]]},"488":{"position":[[497,8]]},"492":{"position":[[2,7]]},"496":{"position":[[281,7]]},"497":{"position":[[288,7]]},"669":{"position":[[571,7]]},"672":{"position":[[568,7]]},"676":{"position":[[96,7],[854,7]]},"677":{"position":[[96,7],[1001,7]]},"678":{"position":[[363,7],[1009,7]]},"679":{"position":[[396,7]]},"680":{"position":[[104,7],[707,7]]},"681":{"position":[[399,7]]},"702":{"position":[[94,7],[769,8]]},"703":{"position":[[511,8]]},"704":{"position":[[502,8]]},"705":{"position":[[555,7]]},"749":{"position":[[870,4]]},"773":{"position":[[400,6]]},"775":{"position":[[83,5]]},"779":{"position":[[507,4]]},"780":{"position":[[137,4]]},"785":{"position":[[642,4],[725,4],[772,4],[814,4],[909,4],[1723,4],[1760,5],[1867,4]]},"786":{"position":[[421,4]]},"792":{"position":[[1273,5]]},"964":{"position":[[99,4]]},"965":{"position":[[62,7],[895,8]]},"968":{"position":[[62,7],[1015,8]]},"970":{"position":[[487,8],[1496,8]]},"973":{"position":[[432,8]]},"975":{"position":[[60,4],[85,4]]},"976":{"position":[[63,7],[926,8]]},"979":{"position":[[407,8]]},"987":{"position":[[643,4]]},"988":{"position":[[539,7],[2255,8]]},"990":{"position":[[1257,8]]},"993":{"position":[[544,7],[2285,8]]},"996":{"position":[[1281,8]]},"999":{"position":[[585,8]]},"1006":{"position":[[2,7]]},"1010":{"position":[[89,4]]},"1011":{"position":[[62,7],[732,8]]},"1014":{"position":[[479,8]]},"1017":{"position":[[467,8]]},"1020":{"position":[[497,8]]},"1023":{"position":[[281,7]]},"1024":{"position":[[288,7]]}},"keywords":{}}],["meta/logs/metr",{"_index":1927,"title":{},"content":{"190":{"position":[[422,17]]},"773":{"position":[[422,17]]}},"keywords":{}}],["metadata",{"_index":2003,"title":{"207":{"position":[[0,8]]},"241":{"position":[[0,8]]},"261":{"position":[[8,8]]},"756":{"position":[[0,8]]},"804":{"position":[[0,8]]},"832":{"position":[[8,8]]}},"content":{"201":{"position":[[234,9]]},"207":{"position":[[27,8],[69,8]]},"208":{"position":[[697,9]]},"217":{"position":[[1871,9]]},"232":{"position":[[617,9]]},"261":{"position":[[149,8],[194,9],[375,8],[500,8]]},"262":{"position":[[60,8],[272,9]]},"269":{"position":[[119,8],[461,8]]},"270":{"position":[[215,9],[305,8],[516,9]]},"271":{"position":[[0,8],[16,8]]},"272":{"position":[[118,8],[224,8]]},"273":{"position":[[248,9]]},"750":{"position":[[234,9]]},"756":{"position":[[27,8],[69,8]]},"757":{"position":[[697,9]]},"787":{"position":[[1871,9]]},"795":{"position":[[617,9]]},"832":{"position":[[149,8],[194,9],[375,8],[500,8]]},"833":{"position":[[60,8],[272,9]]},"840":{"position":[[119,8],[461,8]]},"841":{"position":[[215,9],[305,8],[516,9]]},"842":{"position":[[0,8],[16,8]]},"843":{"position":[[118,8],[224,8]]},"844":{"position":[[248,9]]},"1034":{"position":[[94,8]]}},"keywords":{}}],["metastor",{"_index":1523,"title":{},"content":{"155":{"position":[[90,10]]},"177":{"position":[[226,9]]},"208":{"position":[[242,11]]},"215":{"position":[[544,9]]},"216":{"position":[[385,9]]},"242":{"position":[[169,9]]},"725":{"position":[[90,10]]},"747":{"position":[[226,9]]},"757":{"position":[[242,11]]},"785":{"position":[[544,9]]},"786":{"position":[[385,9]]},"805":{"position":[[169,9]]}},"keywords":{}}],["method",{"_index":161,"title":{},"content":{"9":{"position":[[109,6]]},"320":{"position":[[1277,6],[1300,6]]},"413":{"position":[[19,6],[119,6],[256,6],[351,6]]},"509":{"position":[[497,6]]},"598":{"position":[[109,6]]},"869":{"position":[[1380,6],[1482,6]]},"877":{"position":[[1277,6],[1300,6]]},"1048":{"position":[[497,6]]}},"keywords":{}}],["method1",{"_index":144,"title":{},"content":{"8":{"position":[[72,7]]},"9":{"position":[[37,9]]},"597":{"position":[[72,7]]},"598":{"position":[[37,9]]},"869":{"position":[[1132,7]]}},"keywords":{}}],["method2",{"_index":150,"title":{},"content":{"8":{"position":[[186,7]]},"597":{"position":[[186,7]]},"869":{"position":[[1231,7]]}},"keywords":{}}],["metric",{"_index":1771,"title":{"174":{"position":[[0,7]]},"744":{"position":[[0,7]]},"1038":{"position":[[31,8]]}},"content":{"171":{"position":[[1701,9]]},"184":{"position":[[51,8]]},"190":{"position":[[413,8]]},"195":{"position":[[136,7],[315,6]]},"199":{"position":[[633,9]]},"201":{"position":[[250,8]]},"212":{"position":[[37,7]]},"215":{"position":[[359,8],[1138,7],[1195,7],[1274,8]]},"216":{"position":[[143,8],[167,7]]},"218":{"position":[[207,7]]},"418":{"position":[[63,8],[171,7]]},"519":{"position":[[23,7],[83,6],[103,6],[175,8]]},"571":{"position":[[179,7]]},"741":{"position":[[1713,9]]},"750":{"position":[[250,8]]},"761":{"position":[[37,7]]},"767":{"position":[[51,8]]},"773":{"position":[[413,8]]},"778":{"position":[[136,7],[315,6]]},"782":{"position":[[633,9]]},"785":{"position":[[359,8],[1138,7],[1195,7],[1274,8]]},"786":{"position":[[143,8],[167,7]]},"788":{"position":[[207,7]]},"945":{"position":[[65,8],[142,7]]},"1032":{"position":[[65,7]]},"1037":{"position":[[6,6],[53,6],[82,6],[110,6]]},"1038":{"position":[[13,7],[53,7],[172,8],[202,6],[276,7]]},"1059":{"position":[[23,7],[83,6],[103,6],[175,8]]},"1091":{"position":[[179,7]]}},"keywords":{}}],["metric_nam",{"_index":4289,"title":{},"content":{"1038":{"position":[[77,12]]}},"keywords":{}}],["metrics/log",{"_index":2089,"title":{"218":{"position":[[15,12]]},"788":{"position":[[15,12]]}},"content":{"218":{"position":[[522,13]]},"788":{"position":[[522,13]]}},"keywords":{}}],["metrics=['accuraci",{"_index":3358,"title":{},"content":{"415":{"position":[[1312,21]]},"942":{"position":[[1330,21]]}},"keywords":{}}],["mgr",{"_index":1963,"title":{},"content":{"196":{"position":[[142,4],[149,4],[628,4]]},"200":{"position":[[257,3]]},"208":{"position":[[343,3]]},"232":{"position":[[192,3],[204,3],[210,4],[399,3],[422,3],[598,3],[627,3],[653,3]]},"757":{"position":[[343,3]]},"779":{"position":[[142,4],[149,4],[628,4]]},"783":{"position":[[257,3]]},"795":{"position":[[192,3],[204,3],[210,4],[399,3],[422,3],[598,3],[627,3],[653,3]]}},"keywords":{}}],["microservic",{"_index":2130,"title":{},"content":{"229":{"position":[[838,12]]},"792":{"position":[[838,12]]}},"keywords":{}}],["middl",{"_index":1851,"title":{},"content":{"181":{"position":[[1222,6]]},"764":{"position":[[1228,6]]}},"keywords":{}}],["migrat",{"_index":1593,"title":{},"content":{"159":{"position":[[1639,10]]},"729":{"position":[[1639,10]]}},"keywords":{}}],["min",{"_index":1877,"title":{},"content":{"182":{"position":[[509,5],[1473,5]]},"380":{"position":[[249,4]]},"765":{"position":[[509,5],[1473,5]]},"907":{"position":[[249,4]]}},"keywords":{}}],["mini",{"_index":1835,"title":{},"content":{"179":{"position":[[111,4],[1485,4]]},"352":{"position":[[305,4]]},"369":{"position":[[0,4],[153,4]]},"372":{"position":[[241,4]]},"749":{"position":[[111,4],[1490,4]]},"892":{"position":[[0,4],[153,4]]}},"keywords":{}}],["miniconda.sh",{"_index":3724,"title":{},"content":{"553":{"position":[[666,14],[768,14],[788,14],[828,14]]},"1079":{"position":[[666,14],[768,14],[788,14],[828,14]]}},"keywords":{}}],["minikub",{"_index":42,"title":{},"content":{"5":{"position":[[2,8]]},"8":{"position":[[89,8],[114,8],[157,9]]},"300":{"position":[[44,8],[268,8],[289,8],[339,8],[353,10],[449,8],[477,10]]},"302":{"position":[[35,8],[85,8],[99,10],[194,8],[222,10]]},"324":{"position":[[213,8]]},"325":{"position":[[42,8],[88,8]]},"352":{"position":[[983,8]]},"379":{"position":[[83,8]]},"384":{"position":[[1052,8],[1144,8]]},"391":{"position":[[45,9]]},"410":{"position":[[122,8],[139,8]]},"413":{"position":[[35,8],[47,8],[90,9]]},"416":{"position":[[76,10]]},"594":{"position":[[2,8]]},"597":{"position":[[89,8],[114,8],[157,9]]},"867":{"position":[[44,8],[268,8],[289,8],[339,8],[353,10],[449,8],[477,10]]},"869":{"position":[[35,8],[85,8],[99,10],[194,8],[222,10],[432,8],[555,8],[572,8],[1147,8],[1159,8],[1202,9]]},"894":{"position":[[213,8]]},"895":{"position":[[42,8],[88,8]]},"906":{"position":[[83,8]]},"911":{"position":[[1052,8],[1144,8]]},"918":{"position":[[45,9]]},"937":{"position":[[122,8],[141,8]]}},"keywords":{}}],["minimum",{"_index":38,"title":{},"content":{"4":{"position":[[24,7]]},"107":{"position":[[8994,7]]},"410":{"position":[[85,7]]},"593":{"position":[[24,7]]},"937":{"position":[[85,7]]}},"keywords":{}}],["minio",{"_index":3302,"title":{},"content":{"412":{"position":[[305,5]]},"512":{"position":[[166,5]]},"520":{"position":[[22,5]]},"939":{"position":[[313,5]]}},"keywords":{}}],["minor",{"_index":3876,"title":{},"content":{"570":{"position":[[1513,6],[1759,6],[10930,6],[11176,6]]},"1090":{"position":[[1513,6],[1759,6],[10930,6],[11176,6]]}},"keywords":{}}],["minut",{"_index":2523,"title":{},"content":{"333":{"position":[[112,6]]}},"keywords":{}}],["misunderstand",{"_index":1922,"title":{},"content":{"190":{"position":[[17,16]]},"773":{"position":[[17,16]]}},"keywords":{}}],["mix",{"_index":2447,"title":{},"content":{"322":{"position":[[137,3]]},"879":{"position":[[137,3]]}},"keywords":{}}],["mkdir",{"_index":2587,"title":{},"content":{"340":{"position":[[98,5]]},"349":{"position":[[27,5]]},"386":{"position":[[199,5]]},"389":{"position":[[1181,5]]},"913":{"position":[[199,5]]},"916":{"position":[[1181,5]]}},"keywords":{}}],["mkl",{"_index":3732,"title":{},"content":{"553":{"position":[[930,3],[934,3]]},"1079":{"position":[[930,3],[934,3]]}},"keywords":{}}],["ml",{"_index":1588,"title":{"165":{"position":[[38,2]]},"215":{"position":[[0,2]]},"216":{"position":[[34,2]]},"735":{"position":[[38,2]]},"785":{"position":[[0,2]]},"786":{"position":[[34,2]]}},"content":{"159":{"position":[[1260,2],[1563,2],[2503,2]]},"163":{"position":[[234,2]]},"165":{"position":[[94,2],[383,2]]},"182":{"position":[[278,2],[660,2],[1105,2],[1200,2]]},"215":{"position":[[346,4],[1127,2],[1263,2]]},"217":{"position":[[1452,2]]},"218":{"position":[[11,2]]},"224":{"position":[[311,2]]},"568":{"position":[[64,3],[631,2]]},"729":{"position":[[1260,2],[1563,2],[2503,2]]},"733":{"position":[[234,2]]},"735":{"position":[[94,2],[383,2]]},"765":{"position":[[278,2],[660,2],[1105,2],[1200,2]]},"785":{"position":[[346,4],[1127,2],[1263,2]]},"787":{"position":[[1452,2]]},"788":{"position":[[11,2]]},"809":{"position":[[311,2]]},"1088":{"position":[[64,3],[631,2]]}},"keywords":{}}],["mlflow",{"_index":2046,"title":{"473":{"position":[[0,6]]},"1000":{"position":[[0,6]]}},"content":{"215":{"position":[[1428,6]]},"412":{"position":[[356,6]]},"474":{"position":[[0,6],[144,6],[192,6]]},"475":{"position":[[397,6]]},"785":{"position":[[1428,6]]},"939":{"position":[[366,6]]},"945":{"position":[[99,6]]},"1001":{"position":[[0,6],[144,6],[192,6]]},"1002":{"position":[[397,6]]},"1034":{"position":[[38,6]]},"1051":{"position":[[153,6]]}},"keywords":{}}],["mlflow.pyfunc.pyfuncmodel",{"_index":4299,"title":{"1040":{"position":[[52,26]]}},"content":{},"keywords":{}}],["mnbc8",{"_index":3295,"title":{},"content":{"412":{"position":[[165,5]]}},"keywords":{}}],["mnist",{"_index":723,"title":{"414":{"position":[[18,5]]},"941":{"position":[[18,5]]}},"content":{"77":{"position":[[118,5],[377,5],[713,5],[876,5],[1135,5]]},"78":{"position":[[118,5],[860,5],[1023,5]]},"79":{"position":[[222,5],[385,5],[644,5],[872,8],[1036,5],[1234,5]]},"80":{"position":[[255,5],[418,5],[677,5]]},"81":{"position":[[126,5],[385,5],[729,5],[988,5]]},"82":{"position":[[258,5],[421,5],[680,5]]},"83":{"position":[[283,6],[417,5],[484,5]]},"84":{"position":[[330,5],[1507,5]]},"86":{"position":[[109,5],[191,7],[1017,5]]},"88":{"position":[[102,5]]},"89":{"position":[[102,5],[188,7],[1014,5],[1093,5]]},"90":{"position":[[105,5]]},"91":{"position":[[125,7],[277,5]]},"223":{"position":[[152,7],[237,5]]},"407":{"position":[[702,5]]},"415":{"position":[[14,5],[495,5]]},"438":{"position":[[84,5],[343,5],[697,5],[915,5],[1252,5]]},"441":{"position":[[84,5],[817,5],[1035,5]]},"443":{"position":[[844,5],[1298,5],[1516,5]]},"446":{"position":[[234,5],[452,5]]},"449":{"position":[[85,5],[344,5],[728,5],[946,5],[1283,5]]},"452":{"position":[[237,5],[427,5],[764,5]]},"461":{"position":[[77,5],[159,7],[985,5],[1253,5],[1333,7],[2641,5]]},"463":{"position":[[255,5],[335,7],[1643,5]]},"466":{"position":[[78,5],[164,7],[990,5],[1069,5],[1279,5],[1363,7],[2671,5]]},"469":{"position":[[66,5],[275,5],[359,7],[1667,5]]},"472":{"position":[[74,7],[226,5],[942,5]]},"492":{"position":[[49,7],[324,5]]},"496":{"position":[[303,5],[562,5]]},"497":{"position":[[310,5],[569,5]]},"669":{"position":[[109,5],[191,7],[1017,5]]},"671":{"position":[[102,5]]},"672":{"position":[[102,5],[188,7],[1014,5],[1093,5]]},"673":{"position":[[105,5]]},"674":{"position":[[125,7],[277,5]]},"676":{"position":[[118,5],[377,5],[713,5],[876,5],[1135,5]]},"677":{"position":[[118,5],[860,5],[1023,5]]},"678":{"position":[[222,5],[385,5],[644,5],[872,8],[1036,5],[1234,5]]},"679":{"position":[[255,5],[418,5],[677,5]]},"680":{"position":[[126,5],[385,5],[729,5],[988,5]]},"681":{"position":[[258,5],[421,5],[680,5]]},"682":{"position":[[283,6],[417,5],[484,5]]},"683":{"position":[[330,5],[1507,5]]},"808":{"position":[[152,7],[237,5]]},"934":{"position":[[722,5]]},"942":{"position":[[14,5],[513,5]]},"965":{"position":[[84,5],[343,5],[697,5],[915,5],[1252,5]]},"968":{"position":[[84,5],[817,5],[1035,5]]},"970":{"position":[[844,5],[1298,5],[1516,5]]},"973":{"position":[[234,5],[452,5]]},"976":{"position":[[85,5],[344,5],[728,5],[946,5],[1283,5]]},"979":{"position":[[237,5],[427,5],[764,5]]},"988":{"position":[[77,5],[159,7],[985,5],[1253,5],[1333,7],[2641,5]]},"990":{"position":[[255,5],[335,7],[1643,5]]},"993":{"position":[[78,5],[164,7],[990,5],[1069,5],[1279,5],[1363,7],[2671,5]]},"996":{"position":[[66,5],[275,5],[359,7],[1667,5]]},"999":{"position":[[74,7],[226,5],[942,5]]},"1006":{"position":[[49,7],[324,5]]},"1023":{"position":[[303,5],[562,5]]},"1024":{"position":[[310,5],[569,5]]}},"keywords":{}}],["mnist1",{"_index":833,"title":{},"content":{"86":{"position":[[478,8]]},"89":{"position":[[475,8]]},"461":{"position":[[446,8],[1678,7]]},"463":{"position":[[680,7]]},"466":{"position":[[451,8],[1708,7]]},"469":{"position":[[704,7]]},"669":{"position":[[478,8]]},"672":{"position":[[475,8]]},"988":{"position":[[446,8],[1678,7]]},"990":{"position":[[680,7]]},"993":{"position":[[451,8],[1708,7]]},"996":{"position":[[704,7]]}},"keywords":{}}],["mnist_distributed.pi",{"_index":4113,"title":{},"content":{"579":{"position":[[4,20],[571,20],[694,20]]},"584":{"position":[[4,20],[538,21],[606,21]]},"1105":{"position":[[4,20],[571,20],[694,20]]},"1110":{"position":[[4,20],[538,21],[606,21]]}},"keywords":{}}],["mnt.sh",{"_index":477,"title":{},"content":{"28":{"position":[[390,6],[1116,6],[1135,6]]},"546":{"position":[[390,6],[1116,6],[1135,6]]},"616":{"position":[[390,6],[1116,6],[1135,6]]},"1072":{"position":[[390,6],[1116,6],[1135,6]]}},"keywords":{}}],["mnt:[4026533598",{"_index":523,"title":{},"content":{"28":{"position":[[1235,16]]},"546":{"position":[[1235,16]]},"616":{"position":[[1235,16]]},"1072":{"position":[[1235,16]]}},"keywords":{}}],["mntn",{"_index":516,"title":{},"content":{"28":{"position":[[1022,8],[1217,5]]},"546":{"position":[[1022,8],[1217,5]]},"616":{"position":[[1022,8],[1217,5]]},"1072":{"position":[[1022,8],[1217,5]]}},"keywords":{}}],["mntns=`readlink",{"_index":513,"title":{},"content":{"28":{"position":[[948,15]]},"546":{"position":[[948,15]]},"616":{"position":[[948,15]]},"1072":{"position":[[948,15]]}},"keywords":{}}],["mod",{"_index":1911,"title":{},"content":{"189":{"position":[[594,5],[657,5]]},"190":{"position":[[228,4]]},"248":{"position":[[62,5]]},"252":{"position":[[132,5]]},"274":{"position":[[60,5]]},"275":{"position":[[11,5]]},"304":{"position":[[49,6]]},"389":{"position":[[13484,4],[15198,4],[15458,4],[29033,4],[30747,4],[31007,4]]},"437":{"position":[[1300,4]]},"460":{"position":[[1415,4]]},"570":{"position":[[159,4],[9733,4]]},"772":{"position":[[594,5],[657,5]]},"773":{"position":[[228,4]]},"818":{"position":[[62,5]]},"822":{"position":[[137,5]]},"845":{"position":[[60,5]]},"846":{"position":[[11,5]]},"869":{"position":[[764,3]]},"870":{"position":[[49,6]]},"916":{"position":[[13484,4],[15198,4],[15458,4],[29033,4],[30747,4],[31007,4]]},"964":{"position":[[1300,4]]},"987":{"position":[[1415,4]]},"1090":{"position":[[159,4],[9733,4]]}},"keywords":{}}],["model",{"_index":670,"title":{"43":{"position":[[0,5]]},"63":{"position":[[0,5]]},"93":{"position":[[5,5],[39,5]]},"94":{"position":[[6,5]]},"95":{"position":[[8,5]]},"96":{"position":[[9,5]]},"97":{"position":[[9,5]]},"98":{"position":[[9,5]]},"105":{"position":[[9,5]]},"106":{"position":[[22,5]]},"109":{"position":[[20,5]]},"110":{"position":[[16,6]]},"111":{"position":[[17,5]]},"112":{"position":[[19,5]]},"113":{"position":[[20,5]]},"114":{"position":[[20,5]]},"115":{"position":[[20,5]]},"161":{"position":[[48,6]]},"173":{"position":[[0,5]]},"174":{"position":[[29,5]]},"236":{"position":[[0,5]]},"237":{"position":[[0,5]]},"403":{"position":[[18,5]]},"419":{"position":[[13,5]]},"512":{"position":[[0,5],[17,5]]},"520":{"position":[[38,6]]},"635":{"position":[[0,5]]},"655":{"position":[[0,5]]},"731":{"position":[[48,6]]},"743":{"position":[[0,5]]},"744":{"position":[[29,5]]},"799":{"position":[[0,5]]},"800":{"position":[[0,5]]},"930":{"position":[[18,5]]},"946":{"position":[[13,5]]},"1031":{"position":[[0,5]]},"1039":{"position":[[49,6]]},"1051":{"position":[[0,5],[17,5]]}},"content":{"93":{"position":[[195,5]]},"94":{"position":[[206,5]]},"95":{"position":[[354,5]]},"96":{"position":[[214,5]]},"97":{"position":[[260,5]]},"98":{"position":[[283,5]]},"105":{"position":[[56,5]]},"106":{"position":[[266,5]]},"109":{"position":[[24,5],[232,5],[337,5]]},"110":{"position":[[23,5],[99,5],[196,5]]},"111":{"position":[[215,5]]},"112":{"position":[[321,5]]},"113":{"position":[[223,5]]},"114":{"position":[[261,5]]},"115":{"position":[[257,5]]},"119":{"position":[[30,6]]},"158":{"position":[[201,6]]},"159":{"position":[[639,6],[798,7],[2015,6],[2366,5]]},"160":{"position":[[331,5],[387,6],[426,7],[437,5],[487,5]]},"161":{"position":[[49,7],[162,5],[398,5],[794,7],[811,6]]},"167":{"position":[[199,7]]},"168":{"position":[[316,5],[353,5]]},"171":{"position":[[1040,5],[1428,6],[2002,5]]},"173":{"position":[[0,5],[18,5],[77,5],[197,5],[237,5],[277,6],[284,5],[305,5],[356,5],[400,6],[474,5]]},"176":{"position":[[134,7]]},"179":{"position":[[371,7]]},"181":{"position":[[497,9]]},"190":{"position":[[277,6]]},"211":{"position":[[67,5]]},"212":{"position":[[64,5]]},"215":{"position":[[242,8],[712,6],[757,6],[1002,5],[1566,5],[1634,5],[1662,5],[1766,5],[1782,5],[1978,5]]},"216":{"position":[[441,5],[473,5]]},"217":{"position":[[1398,5]]},"230":{"position":[[102,7],[117,5]]},"232":{"position":[[367,5],[384,6]]},"246":{"position":[[84,6]]},"259":{"position":[[193,5],[543,5],[566,5]]},"368":{"position":[[494,5]]},"376":{"position":[[200,7]]},"377":{"position":[[333,6]]},"403":{"position":[[62,5],[157,5],[208,5],[319,6]]},"415":{"position":[[410,6],[799,5],[1341,5],[1847,5]]},"520":{"position":[[7,5],[69,6],[120,5],[151,5],[209,5],[243,5],[359,6]]},"554":{"position":[[369,7]]},"556":{"position":[[281,5]]},"560":{"position":[[619,7]]},"562":{"position":[[370,5]]},"566":{"position":[[199,5],[415,5]]},"569":{"position":[[931,5],[953,6]]},"571":{"position":[[404,6]]},"589":{"position":[[487,5],[670,5],[875,5]]},"590":{"position":[[557,5],[742,5],[914,5]]},"687":{"position":[[30,6]]},"728":{"position":[[201,6]]},"729":{"position":[[639,6],[798,7],[2015,6],[2366,5]]},"730":{"position":[[331,5],[387,6],[426,7],[437,5],[487,5]]},"731":{"position":[[49,7],[162,5],[398,5],[794,7],[811,6]]},"737":{"position":[[199,7]]},"738":{"position":[[316,5],[353,5]]},"741":{"position":[[1045,5],[1440,6],[2014,5]]},"743":{"position":[[0,5],[18,5],[77,5],[198,5],[238,5],[278,6],[285,5],[306,5],[357,5],[401,6],[475,5]]},"746":{"position":[[134,7]]},"749":{"position":[[371,7]]},"760":{"position":[[67,5]]},"761":{"position":[[64,5]]},"764":{"position":[[497,9]]},"773":{"position":[[277,6]]},"785":{"position":[[242,8],[712,6],[757,6],[1002,5],[1566,5],[1634,5],[1662,5],[1766,5],[1782,5],[1978,5]]},"786":{"position":[[441,5],[473,5]]},"787":{"position":[[1398,5]]},"793":{"position":[[102,7],[117,5]]},"795":{"position":[[367,5],[384,6]]},"816":{"position":[[84,6]]},"830":{"position":[[193,5],[543,5],[566,5]]},"891":{"position":[[494,5]]},"903":{"position":[[200,7]]},"904":{"position":[[333,6]]},"930":{"position":[[62,5],[157,5],[208,5],[319,6]]},"942":{"position":[[410,6],[817,5],[1359,5],[1865,5]]},"1032":{"position":[[99,7]]},"1039":{"position":[[5,5],[14,5]]},"1040":{"position":[[7,5],[18,5]]},"1041":{"position":[[9,5]]},"1042":{"position":[[9,5],[18,5]]},"1080":{"position":[[369,7]]},"1082":{"position":[[281,5]]},"1086":{"position":[[199,5],[415,5]]},"1089":{"position":[[931,5],[953,6]]},"1091":{"position":[[404,6]]},"1095":{"position":[[619,7]]},"1097":{"position":[[370,5]]},"1115":{"position":[[487,5],[670,5],[875,5]]},"1116":{"position":[[557,5],[742,5],[914,5]]}},"keywords":{}}],["model(",{"_index":1858,"title":{},"content":{"181":{"position":[[1978,9]]},"764":{"position":[[1991,9]]}},"keywords":{}}],["model.add",{"_index":3344,"title":{},"content":{"415":{"position":[[827,10]]},"942":{"position":[[845,10]]}},"keywords":{}}],["model.add(layers.conv2d(64",{"_index":3350,"title":{},"content":{"415":{"position":[[948,27],[1043,27]]},"942":{"position":[[966,27],[1061,27]]}},"keywords":{}}],["model.add(layers.dense(10",{"_index":3353,"title":{},"content":{"415":{"position":[[1174,26]]},"942":{"position":[[1192,26]]}},"keywords":{}}],["model.add(layers.dense(64",{"_index":3352,"title":{},"content":{"415":{"position":[[1127,26]]},"942":{"position":[[1145,26]]}},"keywords":{}}],["model.add(layers.flatt",{"_index":3351,"title":{},"content":{"415":{"position":[[1099,27]]},"942":{"position":[[1117,27]]}},"keywords":{}}],["model.add(layers.maxpooling2d((2",{"_index":3349,"title":{},"content":{"415":{"position":[[909,33],[1004,33]]},"942":{"position":[[927,33],[1022,33]]}},"keywords":{}}],["model.compile(optimizer='adam",{"_index":3356,"title":{},"content":{"415":{"position":[[1240,31]]},"942":{"position":[[1258,31]]}},"keywords":{}}],["model.onc",{"_index":1793,"title":{},"content":{"173":{"position":[[182,10]]},"743":{"position":[[183,10]]}},"keywords":{}}],["model.output_dim",{"_index":3684,"title":{},"content":{"520":{"position":[[312,16]]}},"keywords":{}}],["model.summari",{"_index":3355,"title":{},"content":{"415":{"position":[[1224,15]]},"942":{"position":[[1242,15]]}},"keywords":{}}],["model/example_nam",{"_index":1173,"title":{},"content":{"111":{"position":[[106,18]]},"112":{"position":[[209,18]]},"113":{"position":[[111,18]]}},"keywords":{}}],["model/metr",{"_index":2124,"title":{},"content":{"229":{"position":[[194,14]]},"792":{"position":[[194,14]]}},"keywords":{}}],["model/tag?name=example_name&tag=789",{"_index":1176,"title":{},"content":{"114":{"position":[[126,35]]},"115":{"position":[[130,35]]}},"keywords":{}}],["model/tag?name={name}&tag={tag",{"_index":1175,"title":{},"content":{"114":{"position":[[24,31]]},"115":{"position":[[26,31]]}},"keywords":{}}],["model/{nam",{"_index":1172,"title":{},"content":{"111":{"position":[[23,12]]},"112":{"position":[[25,12]]},"113":{"position":[[26,12]]}},"keywords":{}}],["model_dir",{"_index":3827,"title":{},"content":{"569":{"position":[[552,12],[1587,12],[1664,9]]},"570":{"position":[[370,9],[611,9],[9867,9],[10090,9],[16165,9]]},"571":{"position":[[488,9]]},"1089":{"position":[[552,12],[1587,12],[1664,9]]},"1090":{"position":[[370,9],[611,9],[9867,9],[10090,9],[16165,9]]},"1091":{"position":[[488,9]]}},"keywords":{}}],["model_fn_lib.modekeys.ev",{"_index":4081,"title":{},"content":{"572":{"position":[[1220,27]]},"1092":{"position":[[1220,27]]}},"keywords":{}}],["model_typ",{"_index":3678,"title":{"1039":{"position":[[37,11]]}},"content":{"520":{"position":[[44,10]]}},"keywords":{}}],["modelcli",{"_index":3526,"title":{"945":{"position":[[23,13]]},"1032":{"position":[[6,13]]}},"content":{"474":{"position":[[99,11]]},"475":{"position":[[126,11]]},"942":{"position":[[2347,11]]},"945":{"position":[[20,11]]},"1001":{"position":[[99,11]]},"1002":{"position":[[126,11]]},"1033":{"position":[[343,11]]},"1035":{"position":[[135,11]]},"1036":{"position":[[201,11]]},"1037":{"position":[[205,11]]},"1038":{"position":[[318,11]]}},"keywords":{}}],["modelclient.log_metric(\"acc",{"_index":3534,"title":{},"content":{"475":{"position":[[335,29]]},"1002":{"position":[[335,29]]}},"keywords":{}}],["modelclient.log_metric(\"m",{"_index":3533,"title":{},"content":{"475":{"position":[[279,29]]},"1002":{"position":[[279,29]]},"1037":{"position":[[267,29]]}},"keywords":{}}],["modelclient.log_metrics(metr",{"_index":4294,"title":{},"content":{"1038":{"position":[[380,32]]}},"keywords":{}}],["modelclient.log_metrics({\"loss",{"_index":4263,"title":{},"content":{"942":{"position":[[2112,32]]}},"keywords":{}}],["modelclient.log_param(\"learning_r",{"_index":3529,"title":{},"content":{"475":{"position":[[188,38]]},"1002":{"position":[[188,38]]},"1035":{"position":[[197,38]]}},"keywords":{}}],["modelclient.log_params(param",{"_index":4281,"title":{},"content":{"1036":{"position":[[263,30]]}},"keywords":{}}],["modelclient.start",{"_index":3528,"title":{},"content":{"475":{"position":[[160,19]]},"942":{"position":[[2202,19]]},"1002":{"position":[[160,19]]},"1035":{"position":[[169,19]]},"1036":{"position":[[235,19]]},"1037":{"position":[[239,19]]},"1038":{"position":[[352,19]]}},"keywords":{}}],["modelnam",{"_index":933,"title":{},"content":{"105":{"position":[[163,12]]},"106":{"position":[[95,12]]}},"keywords":{}}],["models.sequenti",{"_index":3343,"title":{},"content":{"415":{"position":[[807,19]]},"942":{"position":[[825,19]]}},"keywords":{}}],["models/ubuntu",{"_index":3758,"title":{},"content":{"554":{"position":[[259,13]]},"560":{"position":[[252,13],[507,13]]},"1080":{"position":[[259,13]]},"1095":{"position":[[252,13],[507,13]]}},"keywords":{}}],["modelscli",{"_index":3527,"title":{"1033":{"position":[[51,13]]}},"content":{"475":{"position":[[60,12],[140,14]]},"942":{"position":[[439,12],[2361,14]]},"1002":{"position":[[60,12],[140,14]]},"1032":{"position":[[14,12]]},"1033":{"position":[[13,12],[278,12],[330,12]]},"1035":{"position":[[122,12],[149,14]]},"1036":{"position":[[135,12],[215,14]]},"1037":{"position":[[192,12],[219,14]]},"1038":{"position":[[263,12],[332,14]]}},"keywords":{}}],["modelsclient(tracking_uri=\"0.0.0.0:4000",{"_index":4269,"title":{},"content":{"1033":{"position":[[357,41]]}},"keywords":{}}],["modelsclient(tracking_uri=non",{"_index":4264,"title":{"1033":{"position":[[0,31]]}},"content":{},"keywords":{}}],["modelsclient.delete_model(self",{"_index":4301,"title":{"1042":{"position":[[7,31]]}},"content":{},"keywords":{}}],["modelsclient.load_model(self",{"_index":4298,"title":{"1040":{"position":[[7,29]]}},"content":{},"keywords":{}}],["modelsclient.log_metric(self",{"_index":4282,"title":{"1037":{"position":[[0,29]]}},"content":{},"keywords":{}}],["modelsclient.log_metrics(self",{"_index":4288,"title":{"1038":{"position":[[0,30]]}},"content":{},"keywords":{}}],["modelsclient.log_param(key",{"_index":4276,"title":{"1035":{"position":[[0,27]]}},"content":{},"keywords":{}}],["modelsclient.log_params(param",{"_index":4278,"title":{"1036":{"position":[[0,31]]}},"content":{},"keywords":{}}],["modelsclient.save_model(self",{"_index":4296,"title":{"1039":{"position":[[7,29]]}},"content":{},"keywords":{}}],["modelsclient.start",{"_index":4271,"title":{"1034":{"position":[[0,20]]}},"content":{},"keywords":{}}],["modelsclient.update_model(self",{"_index":4300,"title":{"1041":{"position":[[7,31]]}},"content":{},"keywords":{}}],["modelsdocker/tensorflow/base/ubuntu",{"_index":3781,"title":{},"content":{"560":{"position":[[348,35]]},"1095":{"position":[[348,35]]}},"keywords":{}}],["modeltf",{"_index":3786,"title":{},"content":{"562":{"position":[[323,7]]},"1097":{"position":[[323,7]]}},"keywords":{}}],["modeltyp",{"_index":860,"title":{},"content":{"93":{"position":[[434,11],[797,11],[1160,11],[1524,11]]},"94":{"position":[[442,11]]}},"keywords":{}}],["modelversion\":1",{"_index":934,"title":{},"content":{"105":{"position":[[186,17]]},"106":{"position":[[118,17]]}},"keywords":{}}],["modif",{"_index":651,"title":{},"content":{"35":{"position":[[3195,13]]},"261":{"position":[[293,12]]},"281":{"position":[[102,13]]},"627":{"position":[[3195,13]]},"832":{"position":[[293,12]]},"852":{"position":[[102,13]]}},"keywords":{}}],["modifi",{"_index":1148,"title":{},"content":{"107":{"position":[[10559,9],[10576,9]]},"171":{"position":[[1933,8]]},"275":{"position":[[35,9]]},"320":{"position":[[190,6],[229,6],[385,6],[483,10],[687,6],[722,9]]},"377":{"position":[[78,8]]},"384":{"position":[[170,6]]},"389":{"position":[[14874,9],[30423,9]]},"741":{"position":[[1945,8]]},"846":{"position":[[35,9]]},"877":{"position":[[190,6],[229,6],[385,6],[483,10],[687,6],[722,9]]},"904":{"position":[[78,8]]},"911":{"position":[[170,6]]},"916":{"position":[[14874,9],[30423,9]]}},"keywords":{}}],["modul",{"_index":1840,"title":{"191":{"position":[[19,7]]},"197":{"position":[[7,7]]},"774":{"position":[[19,7]]},"780":{"position":[[7,7]]}},"content":{"179":{"position":[[1150,6]]},"192":{"position":[[140,7]]},"194":{"position":[[381,7],[752,6],[786,7],[1455,6],[1512,7]]},"201":{"position":[[906,7]]},"231":{"position":[[834,6],[868,8]]},"251":{"position":[[23,6]]},"267":{"position":[[189,6],[280,7]]},"268":{"position":[[174,6]]},"269":{"position":[[18,6],[57,7]]},"270":{"position":[[18,6],[64,7]]},"273":{"position":[[463,6],[641,6],[1210,6]]},"325":{"position":[[384,6]]},"359":{"position":[[53,6],[131,7]]},"389":{"position":[[2699,7],[18541,7]]},"568":{"position":[[834,6]]},"572":{"position":[[120,8]]},"749":{"position":[[1155,6]]},"750":{"position":[[907,7]]},"775":{"position":[[140,7]]},"777":{"position":[[387,7],[758,6],[792,7],[1735,6],[1792,7]]},"794":{"position":[[1087,6],[1121,8]]},"821":{"position":[[23,6]]},"838":{"position":[[189,6],[280,7]]},"839":{"position":[[174,6]]},"840":{"position":[[18,6],[57,7]]},"841":{"position":[[18,6],[64,7]]},"844":{"position":[[463,6],[641,6],[1210,6]]},"881":{"position":[[53,6],[131,7]]},"895":{"position":[[384,6]]},"916":{"position":[[2699,7],[18541,7]]},"1088":{"position":[[834,6]]},"1092":{"position":[[120,8]]}},"keywords":{}}],["modular",{"_index":2209,"title":{},"content":{"267":{"position":[[0,7]]},"838":{"position":[[0,7]]}},"keywords":{}}],["molli",{"_index":2908,"title":{},"content":{"389":{"position":[[2601,5],[18443,5]]},"916":{"position":[[2601,5],[18443,5]]}},"keywords":{}}],["monitor",{"_index":1710,"title":{"195":{"position":[[11,7]]},"273":{"position":[[8,10]]},"418":{"position":[[3,7]]},"778":{"position":[[11,7]]},"844":{"position":[[8,10]]},"945":{"position":[[3,7]]}},"content":{"167":{"position":[[141,7]]},"192":{"position":[[162,7]]},"195":{"position":[[4,7]]},"196":{"position":[[171,7],[851,7],[905,7]]},"197":{"position":[[153,7],[377,7]]},"200":{"position":[[1347,10]]},"231":{"position":[[542,9]]},"259":{"position":[[177,11]]},"273":{"position":[[21,7],[452,10],[630,10],[995,10],[1199,10]]},"415":{"position":[[2052,7]]},"737":{"position":[[141,7]]},"775":{"position":[[162,7]]},"778":{"position":[[4,7]]},"779":{"position":[[171,7],[856,7],[910,7]]},"780":{"position":[[159,7],[384,7]]},"783":{"position":[[1347,10]]},"794":{"position":[[694,9]]},"830":{"position":[[177,11]]},"844":{"position":[[21,7],[452,10],[630,10],[995,10],[1199,10]]},"942":{"position":[[2070,7]]}},"keywords":{}}],["monitored/manag",{"_index":1740,"title":{},"content":{"171":{"position":[[417,17]]},"741":{"position":[[417,17]]}},"keywords":{}}],["monkeysph",{"_index":2906,"title":{},"content":{"389":{"position":[[2583,12],[18425,12]]},"916":{"position":[[2583,12],[18425,12]]}},"keywords":{}}],["month",{"_index":1001,"title":{},"content":{"107":{"position":[[2191,7],[4655,7]]},"161":{"position":[[200,6]]},"331":{"position":[[1001,6]]},"731":{"position":[[200,6]]}},"keywords":{}}],["mor",{"_index":313,"title":{},"content":{"20":{"position":[[237,4]]},"107":{"position":[[682,4],[2874,4],[7926,4]]},"130":{"position":[[365,4],[477,4]]},"133":{"position":[[2075,4]]},"145":{"position":[[523,4]]},"154":{"position":[[194,4]]},"155":{"position":[[418,4]]},"156":{"position":[[661,4]]},"158":{"position":[[125,4]]},"159":{"position":[[161,4],[170,4],[268,4],[277,4],[2353,4]]},"164":{"position":[[10,4]]},"175":{"position":[[114,4],[123,4]]},"182":{"position":[[49,4]]},"183":{"position":[[50,4]]},"184":{"position":[[93,4],[151,4]]},"191":{"position":[[54,4]]},"196":{"position":[[1141,4]]},"204":{"position":[[409,4]]},"211":{"position":[[128,5]]},"213":{"position":[[372,4],[465,4]]},"215":{"position":[[1031,4]]},"227":{"position":[[4,4]]},"230":{"position":[[817,4]]},"244":{"position":[[183,5]]},"265":{"position":[[36,4],[211,4]]},"328":{"position":[[286,4]]},"384":{"position":[[497,4]]},"400":{"position":[[97,4]]},"437":{"position":[[866,4]]},"460":{"position":[[1079,4]]},"478":{"position":[[382,4]]},"496":{"position":[[77,4]]},"497":{"position":[[105,4]]},"517":{"position":[[428,4]]},"566":{"position":[[734,4]]},"569":{"position":[[733,4]]},"575":{"position":[[152,4]]},"620":{"position":[[237,4]]},"698":{"position":[[365,4],[477,4]]},"724":{"position":[[194,4]]},"725":{"position":[[418,4]]},"726":{"position":[[661,4]]},"728":{"position":[[125,4]]},"729":{"position":[[161,4],[170,4],[268,4],[277,4],[2353,4]]},"734":{"position":[[10,4]]},"745":{"position":[[114,4],[123,4]]},"753":{"position":[[409,4]]},"760":{"position":[[128,5]]},"762":{"position":[[372,4],[465,4]]},"765":{"position":[[49,4]]},"766":{"position":[[50,4]]},"767":{"position":[[93,4],[151,4]]},"774":{"position":[[54,4]]},"779":{"position":[[1146,4]]},"785":{"position":[[1031,4]]},"793":{"position":[[817,4]]},"812":{"position":[[4,4]]},"814":{"position":[[183,5]]},"836":{"position":[[36,4],[211,4]]},"911":{"position":[[497,4]]},"927":{"position":[[97,4]]},"964":{"position":[[866,4]]},"987":{"position":[[1079,4]]},"1010":{"position":[[382,4]]},"1023":{"position":[[77,4]]},"1024":{"position":[[105,4]]},"1057":{"position":[[428,4]]},"1086":{"position":[[734,4]]},"1089":{"position":[[733,4]]},"1101":{"position":[[152,4]]}},"keywords":{}}],["mostli",{"_index":1672,"title":{},"content":{"162":{"position":[[795,6]]},"732":{"position":[[795,6]]}},"keywords":{}}],["motiv",{"_index":2099,"title":{"222":{"position":[[0,10]]},"807":{"position":[[0,10]]}},"content":{},"keywords":{}}],["mount",{"_index":307,"title":{},"content":{"20":{"position":[[92,6],[102,5],[419,5]]},"25":{"position":[[301,5],[1831,5]]},"28":{"position":[[460,5],[494,5],[654,9],[735,9]]},"163":{"position":[[588,5]]},"217":{"position":[[2229,5]]},"543":{"position":[[301,5],[1831,5]]},"546":{"position":[[460,5],[494,5],[654,9],[735,9]]},"613":{"position":[[301,5],[1831,5]]},"616":{"position":[[460,5],[494,5],[654,9],[735,9]]},"620":{"position":[[92,6],[102,5],[419,5]]},"733":{"position":[[588,5]]},"787":{"position":[[2229,5]]},"1069":{"position":[[301,5],[1831,5]]},"1072":{"position":[[460,5],[494,5],[654,9],[735,9]]}},"keywords":{}}],["mountpath",{"_index":2087,"title":{},"content":{"217":{"position":[[1995,10],[2127,10]]},"787":{"position":[[1995,10],[2127,10]]}},"keywords":{}}],["mounts=`find",{"_index":491,"title":{},"content":{"28":{"position":[[591,12]]},"546":{"position":[[591,12]]},"616":{"position":[[591,12]]},"1072":{"position":[[591,12]]}},"keywords":{}}],["mous",{"_index":2496,"title":{},"content":{"331":{"position":[[1609,6],[1865,6]]}},"keywords":{}}],["mov",{"_index":1035,"title":{},"content":{"107":{"position":[[3773,5]]},"159":{"position":[[2720,6]]},"162":{"position":[[621,4]]},"167":{"position":[[582,5]]},"201":{"position":[[740,4]]},"331":{"position":[[1600,4],[1856,4]]},"391":{"position":[[464,4]]},"729":{"position":[[2720,6]]},"732":{"position":[[621,4]]},"737":{"position":[[582,5]]},"750":{"position":[[741,4]]},"918":{"position":[[464,4]]}},"keywords":{}}],["mpi",{"_index":1938,"title":{},"content":{"194":{"position":[[104,4]]},"777":{"position":[[104,4]]}},"keywords":{}}],["mse",{"_index":4291,"title":{},"content":{"1038":{"position":[[286,7]]}},"keywords":{}}],["mt",{"_index":3127,"title":{},"content":{"389":{"position":[[13471,4],[29020,4]]},"916":{"position":[[13471,4],[29020,4]]}},"keywords":{}}],["much",{"_index":1857,"title":{},"content":{"181":{"position":[[1786,4]]},"197":{"position":[[330,4]]},"204":{"position":[[271,4]]},"217":{"position":[[271,4]]},"273":{"position":[[1164,4]]},"753":{"position":[[271,4]]},"764":{"position":[[1799,4]]},"780":{"position":[[337,4]]},"787":{"position":[[271,4]]},"844":{"position":[[1164,4]]}},"keywords":{}}],["multi",{"_index":3833,"title":{},"content":{"569":{"position":[[1770,5]]},"1089":{"position":[[1770,5]]}},"keywords":{}}],["multi_worker_model",{"_index":3371,"title":{},"content":{"415":{"position":[[1910,18]]},"942":{"position":[[1928,18]]}},"keywords":{}}],["multi_worker_model.fit(ds_train",{"_index":3380,"title":{},"content":{"415":{"position":[[2177,32]]},"942":{"position":[[2230,32]]}},"keywords":{}}],["multipl",{"_index":1075,"title":{},"content":{"107":{"position":[[6118,8]]},"173":{"position":[[117,8]]},"181":{"position":[[1272,8]]},"193":{"position":[[174,8]]},"194":{"position":[[1324,8]]},"222":{"position":[[63,8]]},"229":{"position":[[988,8]]},"261":{"position":[[0,8],[236,8]]},"274":{"position":[[138,8]]},"363":{"position":[[32,8]]},"383":{"position":[[623,8]]},"386":{"position":[[802,8]]},"569":{"position":[[34,8]]},"743":{"position":[[117,8]]},"764":{"position":[[1278,8]]},"776":{"position":[[174,8]]},"777":{"position":[[1604,8]]},"792":{"position":[[989,8]]},"807":{"position":[[63,8]]},"832":{"position":[[0,8],[236,8]]},"845":{"position":[[138,8]]},"885":{"position":[[32,8]]},"910":{"position":[[623,8]]},"913":{"position":[[802,8]]},"1038":{"position":[[4,8]]},"1089":{"position":[[34,8]]}},"keywords":{}}],["multiworkermirroredstrategi",{"_index":3320,"title":{},"content":{"415":{"position":[[63,27]]},"942":{"position":[[63,27]]}},"keywords":{}}],["mutual",{"_index":2187,"title":{},"content":{"261":{"position":[[338,6]]},"832":{"position":[[338,6]]}},"keywords":{}}],["mv",{"_index":3202,"title":{},"content":{"391":{"position":[[509,2]]},"918":{"position":[[509,2]]}},"keywords":{}}],["mvn",{"_index":2271,"title":{},"content":{"281":{"position":[[329,3]]},"282":{"position":[[0,3]]},"283":{"position":[[137,3],[236,5]]},"300":{"position":[[202,3]]},"320":{"position":[[1287,3],[1310,3]]},"325":{"position":[[400,3],[454,3]]},"338":{"position":[[234,3],[292,3]]},"341":{"position":[[303,3]]},"345":{"position":[[217,3]]},"852":{"position":[[329,3]]},"853":{"position":[[31,3],[140,3],[228,3],[330,3],[432,3],[533,3],[613,3]]},"854":{"position":[[137,3],[236,5]]},"867":{"position":[[202,3]]},"877":{"position":[[1287,3],[1310,3]]},"895":{"position":[[400,3],[454,3]]},"1053":{"position":[[126,3]]}},"keywords":{}}],["mvnw",{"_index":2284,"title":{},"content":{"283":{"position":[[210,6],[247,7],[264,6]]},"854":{"position":[[210,6],[247,7],[264,6]]}},"keywords":{}}],["mxnet",{"_index":3692,"title":{"548":{"position":[[18,5]]},"549":{"position":[[35,5]]},"550":{"position":[[31,5]]},"586":{"position":[[7,5]]},"588":{"position":[[43,5]]},"1074":{"position":[[18,5]]},"1075":{"position":[[35,5]]},"1076":{"position":[[31,5]]},"1112":{"position":[[7,5]]},"1114":{"position":[[43,5]]}},"content":{"539":{"position":[[143,5]]},"549":{"position":[[18,5],[70,5],[133,5],[254,5],[378,6],[451,5],[485,5],[706,5],[761,5]]},"550":{"position":[[63,5],[95,5],[168,5],[258,5]]},"551":{"position":[[128,5],[279,6]]},"587":{"position":[[50,5]]},"588":{"position":[[52,5]]},"589":{"position":[[285,5],[313,5]]},"590":{"position":[[320,5],[348,5]]},"1065":{"position":[[143,5]]},"1075":{"position":[[18,5],[70,5],[133,5],[254,5],[378,6],[451,5],[485,5],[706,5],[761,5]]},"1076":{"position":[[63,5],[95,5],[168,5],[258,5]]},"1077":{"position":[[128,5],[279,6]]},"1113":{"position":[[50,5]]},"1114":{"position":[[52,5]]},"1115":{"position":[[285,5],[313,5]]},"1116":{"position":[[320,5],[348,5]]}},"keywords":{}}],["mxnet==1.5.1",{"_index":4182,"title":{},"content":{"588":{"position":[[354,12]]},"1114":{"position":[[354,12]]}},"keywords":{}}],["mxnetmxnet",{"_index":3718,"title":{},"content":{"551":{"position":[[201,10]]},"1077":{"position":[[201,10]]}},"keywords":{}}],["my_bucket",{"_index":3809,"title":{},"content":{"568":{"position":[[483,11]]},"1088":{"position":[[483,11]]}},"keywords":{}}],["my_bucket=gs://<mi",{"_index":3806,"title":{},"content":{"568":{"position":[[417,18]]},"1088":{"position":[[417,18]]}},"keywords":{}}],["my_submarine_env",{"_index":1482,"title":{},"content":{"152":{"position":[[110,19]]},"154":{"position":[[856,19],[1206,17]]},"722":{"position":[[110,19]]},"724":{"position":[[856,19],[1206,17]]}},"keywords":{}}],["mycallback(tf.keras.callbacks.callback",{"_index":3372,"title":{},"content":{"415":{"position":[[1967,40]]},"942":{"position":[[1985,40]]}},"keywords":{}}],["myhostnam",{"_index":3130,"title":{},"content":{"389":{"position":[[14177,11],[14322,12],[29726,11],[29871,12]]},"916":{"position":[[14177,11],[14322,12],[29726,11],[29871,12]]}},"keywords":{}}],["mynetwork",{"_index":3138,"title":{},"content":{"389":{"position":[[14403,11],[29952,11]]},"916":{"position":[[14403,11],[29952,11]]}},"keywords":{}}],["myorigin",{"_index":3134,"title":{},"content":{"389":{"position":[[14291,8],[29840,8]]},"916":{"position":[[14291,8],[29840,8]]}},"keywords":{}}],["mypi",{"_index":3596,"title":{},"content":{"507":{"position":[[349,4]]},"509":{"position":[[263,4]]},"1046":{"position":[[357,4],[362,5],[440,4]]},"1048":{"position":[[263,4]]}},"keywords":{}}],["mysql",{"_index":204,"title":{},"content":{"14":{"position":[[104,5],[119,5]]},"15":{"position":[[113,5],[234,5]]},"16":{"position":[[657,5],[702,5]]},"192":{"position":[[108,7]]},"389":{"position":[[2634,5],[18476,5]]},"517":{"position":[[216,5]]},"606":{"position":[[104,5],[119,5]]},"607":{"position":[[113,5],[234,5]]},"608":{"position":[[657,5],[702,5]]},"775":{"position":[[108,7]]},"916":{"position":[[2634,5],[18476,5]]},"1057":{"position":[[216,5]]}},"keywords":{}}],["mysql+pymysql://submarine:password@submarin",{"_index":3664,"title":{},"content":{"517":{"position":[[358,44]]},"1057":{"position":[[358,44]]}},"keywords":{}}],["mysql_jar_url",{"_index":247,"title":{},"content":{"16":{"position":[[612,13]]},"608":{"position":[[612,13]]}},"keywords":{}}],["mysql_jdbc_url",{"_index":255,"title":{},"content":{"16":{"position":[[804,14]]},"608":{"position":[[804,14]]}},"keywords":{}}],["mysql_root_password=password",{"_index":187,"title":{},"content":{"13":{"position":[[218,28]]},"605":{"position":[[218,28]]}},"keywords":{}}],["mysql_v",{"_index":250,"title":{},"content":{"16":{"position":[[673,13]]},"608":{"position":[[673,13]]}},"keywords":{}}],["myvenv.zip",{"_index":4110,"title":{},"content":{"578":{"position":[[471,10],[538,10]]},"583":{"position":[[378,10]]},"588":{"position":[[374,10]]},"1104":{"position":[[471,10],[538,10]]},"1109":{"position":[[378,10]]},"1114":{"position":[[374,10]]}},"keywords":{}}],["myvenv.zip/venv/bin/python",{"_index":4126,"title":{},"content":{"579":{"position":[[543,27],[666,27]]},"584":{"position":[[510,27],[578,27]]},"589":{"position":[[415,27],[598,27]]},"1105":{"position":[[543,27],[666,27]]},"1110":{"position":[[510,27],[578,27]]},"1115":{"position":[[415,27],[598,27]]}},"keywords":{}}],["n",{"_index":2009,"title":{},"content":{"204":{"position":[[16,1],[18,2]]},"283":{"position":[[142,1]]},"331":{"position":[[919,3],[940,1],[969,1],[999,1],[1030,1]]},"753":{"position":[[16,1],[18,2]]},"854":{"position":[[142,1]]},"869":{"position":[[1041,1],[1302,1],[1599,1]]}},"keywords":{}}],["n)am",{"_index":2489,"title":{},"content":{"331":{"position":[[1426,7]]}},"keywords":{}}],["n>i",{"_index":2484,"title":{},"content":{"331":{"position":[[1008,4]]}},"keywords":{}}],["n>m",{"_index":2483,"title":{},"content":{"331":{"position":[[977,4]]}},"keywords":{}}],["n>w",{"_index":2482,"title":{},"content":{"331":{"position":[[947,4]]}},"keywords":{}}],["n_estim",{"_index":4280,"title":{},"content":{"1036":{"position":[[181,15]]}},"keywords":{}}],["nam",{"_index":60,"title":{"1040":{"position":[[37,5]]},"1041":{"position":[[39,5]]},"1042":{"position":[[39,5]]}},"content":{"6":{"position":[[121,5]]},"7":{"position":[[113,4],[673,5]]},"13":{"position":[[191,4],[369,4]]},"16":{"position":[[225,4]]},"17":{"position":[[85,4]]},"20":{"position":[[836,4]]},"21":{"position":[[490,5]]},"23":{"position":[[133,4]]},"28":{"position":[[374,5],[1014,7],[1212,4]]},"31":{"position":[[192,5]]},"35":{"position":[[1003,5],[1310,4],[1732,4]]},"71":{"position":[[97,7],[183,6],[684,7],[770,6]]},"72":{"position":[[235,7],[321,6],[717,7],[805,6]]},"73":{"position":[[257,7],[343,6]]},"74":{"position":[[107,7],[193,6],[597,7],[683,6],[893,6],[1003,6]]},"75":{"position":[[260,7],[346,6]]},"77":{"position":[[106,7],[701,7],[864,7]]},"78":{"position":[[106,7],[347,7],[848,7],[1011,7],[1252,7]]},"79":{"position":[[210,7],[373,7],[864,7],[1019,7]]},"80":{"position":[[243,7],[406,7]]},"81":{"position":[[114,7],[717,7]]},"82":{"position":[[246,7],[409,7]]},"86":{"position":[[94,7],[216,7],[330,7],[438,7],[525,4],[719,7]]},"89":{"position":[[87,7],[213,7],[327,7],[435,7],[522,4],[716,7],[1204,6]]},"91":{"position":[[113,7]]},"93":{"position":[[462,6],[825,6],[1188,6],[1552,6]]},"94":{"position":[[470,6]]},"95":{"position":[[102,7]]},"100":{"position":[[104,7],[213,7],[978,7]]},"101":{"position":[[720,7]]},"102":{"position":[[711,7]]},"103":{"position":[[276,7],[565,7],[673,7],[771,7]]},"105":{"position":[[62,5]]},"107":{"position":[[307,4]]},"109":{"position":[[102,7]]},"110":{"position":[[351,6],[529,6],[691,6]]},"111":{"position":[[367,6]]},"112":{"position":[[112,7]]},"121":{"position":[[38,5]]},"135":{"position":[[197,4]]},"152":{"position":[[104,5]]},"154":{"position":[[520,5],[850,5],[922,5]]},"182":{"position":[[222,5],[568,4],[584,4],[1022,5]]},"188":{"position":[[197,5]]},"189":{"position":[[376,4],[880,4],[1258,4],[1283,4]]},"194":{"position":[[1462,5]]},"199":{"position":[[819,5],[1047,5],[1173,5]]},"200":{"position":[[1095,5]]},"217":{"position":[[1412,5],[1881,5],[1922,5],[1980,5],[2030,5],[2112,5],[2155,5]]},"223":{"position":[[146,5],[173,5],[462,5],[548,5]]},"224":{"position":[[168,5]]},"226":{"position":[[197,5],[283,5],[453,5],[492,4]]},"271":{"position":[[133,4],[414,4]]},"331":{"position":[[66,5],[116,4],[227,5],[1206,5],[1239,4]]},"386":{"position":[[834,5],[907,5],[975,5]]},"389":{"position":[[377,4]]},"406":{"position":[[261,4],[268,4],[1159,4]]},"412":{"position":[[92,4]]},"418":{"position":[[127,4]]},"422":{"position":[[60,4],[105,5],[143,5],[254,4],[294,5],[322,5]]},"423":{"position":[[62,7],[148,6]]},"427":{"position":[[6,4],[59,5]]},"430":{"position":[[6,4],[68,5],[111,5]]},"431":{"position":[[63,7],[149,6]]},"433":{"position":[[6,4],[59,5]]},"437":{"position":[[58,4],[313,4],[357,5],[740,4],[925,4],[1023,4],[1040,5],[1065,5],[1240,4]]},"438":{"position":[[72,7]]},"441":{"position":[[72,7],[313,7]]},"445":{"position":[[6,4]]},"448":{"position":[[6,4]]},"449":{"position":[[73,7]]},"451":{"position":[[6,4]]},"456":{"position":[[6,4]]},"460":{"position":[[6,4],[67,5],[117,5],[379,4],[422,5],[602,4],[857,4],[901,5],[1138,4],[1236,4],[1253,5],[1278,5],[1373,4]]},"461":{"position":[[62,7],[184,7],[298,7],[406,7],[493,4],[687,7],[1644,4]]},"463":{"position":[[646,4]]},"465":{"position":[[6,4],[76,5],[126,5]]},"466":{"position":[[63,7],[189,7],[303,7],[411,7],[498,4],[692,7],[1674,4]]},"468":{"position":[[6,4],[67,5]]},"469":{"position":[[670,4]]},"471":{"position":[[6,4],[76,5],[82,4],[119,5]]},"472":{"position":[[62,7]]},"478":{"position":[[50,4],[252,4],[294,5],[438,4]]},"479":{"position":[[72,7],[181,7]]},"481":{"position":[[6,4]]},"484":{"position":[[6,4]]},"487":{"position":[[6,4]]},"492":{"position":[[12,7]]},"496":{"position":[[291,7]]},"497":{"position":[[298,7]]},"507":{"position":[[156,4]]},"537":{"position":[[39,5]]},"538":{"position":[[41,5]]},"541":{"position":[[133,4]]},"546":{"position":[[374,5],[1014,7],[1212,4]]},"568":{"position":[[443,5],[841,4]]},"570":{"position":[[1488,5],[1734,5],[7641,5],[7820,5],[7999,5],[8178,5],[8357,5],[8536,5],[8715,5],[8894,5],[10905,5],[11151,5]]},"579":{"position":[[343,4],[1120,5],[1321,5],[1522,5],[2156,5],[2354,5],[2556,5]]},"580":{"position":[[237,4]]},"584":{"position":[[340,4],[980,5],[1181,5],[1382,5],[2016,5],[2214,5],[2416,5]]},"585":{"position":[[237,4]]},"589":{"position":[[280,4],[1273,5],[1475,5],[1677,5],[1879,5],[2081,5],[3024,5],[3231,5],[3435,5],[3639,5],[3843,5]]},"590":{"position":[[315,4]]},"595":{"position":[[121,5]]},"596":{"position":[[113,4],[673,5]]},"605":{"position":[[191,4],[369,4]]},"608":{"position":[[225,4]]},"609":{"position":[[85,4]]},"611":{"position":[[133,4]]},"616":{"position":[[374,5],[1014,7],[1212,4]]},"620":{"position":[[836,4]]},"621":{"position":[[490,5]]},"623":{"position":[[192,5]]},"627":{"position":[[1003,5],[1310,4],[1732,4]]},"663":{"position":[[97,7],[183,6],[684,7],[770,6]]},"664":{"position":[[235,7],[321,6],[717,7],[805,6]]},"665":{"position":[[257,7],[343,6]]},"666":{"position":[[107,7],[193,6],[597,7],[683,6],[893,6],[1003,6]]},"667":{"position":[[260,7],[346,6]]},"669":{"position":[[94,7],[216,7],[330,7],[438,7],[525,4],[719,7]]},"672":{"position":[[87,7],[213,7],[327,7],[435,7],[522,4],[716,7],[1204,6]]},"674":{"position":[[113,7]]},"676":{"position":[[106,7],[701,7],[864,7]]},"677":{"position":[[106,7],[347,7],[848,7],[1011,7],[1252,7]]},"678":{"position":[[210,7],[373,7],[864,7],[1019,7]]},"679":{"position":[[243,7],[406,7]]},"680":{"position":[[114,7],[717,7]]},"681":{"position":[[246,7],[409,7]]},"689":{"position":[[38,5]]},"702":{"position":[[104,7],[213,7],[978,7]]},"703":{"position":[[720,7]]},"704":{"position":[[711,7]]},"705":{"position":[[276,7],[565,7],[673,7],[771,7]]},"707":{"position":[[197,4]]},"722":{"position":[[104,5]]},"724":{"position":[[520,5],[850,5],[922,5]]},"765":{"position":[[222,5],[568,4],[584,4],[1022,5]]},"771":{"position":[[197,5]]},"772":{"position":[[376,4],[880,4],[1258,4],[1283,4]]},"777":{"position":[[1742,5]]},"782":{"position":[[819,5],[1047,5],[1173,5]]},"783":{"position":[[1095,5]]},"787":{"position":[[1412,5],[1881,5],[1922,5],[1980,5],[2030,5],[2112,5],[2155,5]]},"808":{"position":[[146,5],[173,5],[462,5],[548,5]]},"809":{"position":[[168,5]]},"811":{"position":[[197,5],[283,5],[453,5],[492,4]]},"842":{"position":[[133,4],[414,4]]},"913":{"position":[[834,5],[907,5],[975,5]]},"916":{"position":[[377,4]]},"933":{"position":[[261,4],[268,4],[810,4]]},"939":{"position":[[94,4]]},"949":{"position":[[60,4],[105,5],[143,5],[254,4],[294,5],[322,5]]},"950":{"position":[[62,7],[148,6]]},"954":{"position":[[6,4],[59,5]]},"957":{"position":[[6,4],[68,5],[111,5]]},"958":{"position":[[63,7],[149,6]]},"960":{"position":[[6,4],[59,5]]},"964":{"position":[[58,4],[313,4],[357,5],[740,4],[925,4],[1023,4],[1040,5],[1065,5],[1240,4]]},"965":{"position":[[72,7]]},"968":{"position":[[72,7],[313,7]]},"972":{"position":[[6,4]]},"975":{"position":[[6,4]]},"976":{"position":[[73,7]]},"978":{"position":[[6,4]]},"983":{"position":[[6,4]]},"987":{"position":[[6,4],[67,5],[117,5],[379,4],[422,5],[602,4],[857,4],[901,5],[1138,4],[1236,4],[1253,5],[1278,5],[1373,4]]},"988":{"position":[[62,7],[184,7],[298,7],[406,7],[493,4],[687,7],[1644,4]]},"990":{"position":[[646,4]]},"992":{"position":[[6,4],[76,5],[126,5]]},"993":{"position":[[63,7],[189,7],[303,7],[411,7],[498,4],[692,7],[1674,4]]},"995":{"position":[[6,4],[67,5]]},"996":{"position":[[670,4]]},"998":{"position":[[6,4],[76,5],[82,4],[119,5]]},"999":{"position":[[62,7]]},"1006":{"position":[[12,7]]},"1010":{"position":[[50,4],[252,4],[294,5],[438,4]]},"1011":{"position":[[72,7],[181,7]]},"1013":{"position":[[6,4]]},"1016":{"position":[[6,4]]},"1019":{"position":[[6,4]]},"1023":{"position":[[291,7]]},"1024":{"position":[[298,7]]},"1034":{"position":[[114,5]]},"1037":{"position":[[60,4]]},"1041":{"position":[[22,5]]},"1046":{"position":[[156,4]]},"1067":{"position":[[133,4]]},"1072":{"position":[[374,5],[1014,7],[1212,4]]},"1088":{"position":[[443,5],[841,4]]},"1090":{"position":[[1488,5],[1734,5],[7641,5],[7820,5],[7999,5],[8178,5],[8357,5],[8536,5],[8715,5],[8894,5],[10905,5],[11151,5]]},"1105":{"position":[[343,4],[1120,5],[1321,5],[1522,5],[2156,5],[2354,5],[2556,5]]},"1106":{"position":[[237,4]]},"1110":{"position":[[340,4],[980,5],[1181,5],[1382,5],[2016,5],[2214,5],[2416,5]]},"1111":{"position":[[237,4]]},"1115":{"position":[[280,4],[1273,5],[1475,5],[1677,5],[1879,5],[2081,5],[3024,5],[3231,5],[3435,5],[3639,5],[3843,5]]},"1116":{"position":[[315,4]]}},"keywords":{}}],["name\":\"batch_s",{"_index":3500,"title":{},"content":{"461":{"position":[[1472,20]]},"463":{"position":[[474,20]]},"466":{"position":[[1502,20]]},"469":{"position":[[498,20]]},"988":{"position":[[1472,20]]},"990":{"position":[[474,20]]},"993":{"position":[[1502,20]]},"996":{"position":[[498,20]]}},"keywords":{}}],["name\":\"experiment_nam",{"_index":3502,"title":{},"content":{"461":{"position":[[1580,25]]},"463":{"position":[[582,25]]},"466":{"position":[[1610,25]]},"469":{"position":[[606,25]]},"988":{"position":[[1580,25]]},"990":{"position":[[582,25]]},"993":{"position":[[1610,25]]},"996":{"position":[[606,25]]}},"keywords":{}}],["name\":\"learning_r",{"_index":3497,"title":{},"content":{"461":{"position":[[1358,23]]},"463":{"position":[[360,23]]},"466":{"position":[[1388,23]]},"469":{"position":[[384,23]]},"988":{"position":[[1358,23]]},"990":{"position":[[360,23]]},"993":{"position":[[1388,23]]},"996":{"position":[[384,23]]}},"keywords":{}}],["name\":\"mi",{"_index":3397,"title":{},"content":{"423":{"position":[[667,10]]},"425":{"position":[[545,10]]},"428":{"position":[[233,10]]},"431":{"position":[[554,10]]},"434":{"position":[[236,10]]},"441":{"position":[[1271,10]]},"443":{"position":[[1752,10]]},"446":{"position":[[688,10]]},"461":{"position":[[1239,10]]},"463":{"position":[[241,10]]},"466":{"position":[[1265,10]]},"469":{"position":[[261,10]]},"950":{"position":[[667,10]]},"952":{"position":[[545,10]]},"955":{"position":[[233,10]]},"958":{"position":[[554,10]]},"961":{"position":[[236,10]]},"968":{"position":[[1271,10]]},"970":{"position":[[1752,10]]},"973":{"position":[[688,10]]},"988":{"position":[[1239,10]]},"990":{"position":[[241,10]]},"993":{"position":[[1265,10]]},"996":{"position":[[261,10]]}},"keywords":{}}],["name\":\"newexperiment1",{"_index":3467,"title":{},"content":{"443":{"position":[[195,24],[496,24]]},"472":{"position":[[375,24],[594,24]]},"970":{"position":[[195,24],[496,24]]},"999":{"position":[[375,24],[594,24]]}},"keywords":{}}],["name\":\"notebook",{"_index":907,"title":{},"content":{"100":{"position":[[883,16]]},"101":{"position":[[625,16]]},"102":{"position":[[616,16]]},"425":{"position":[[218,16],[1118,16]]},"479":{"position":[[846,16]]},"482":{"position":[[593,16]]},"485":{"position":[[581,16]]},"488":{"position":[[611,16]]},"702":{"position":[[883,16]]},"703":{"position":[[625,16]]},"704":{"position":[[616,16]]},"952":{"position":[[218,16],[1118,16]]},"1011":{"position":[[846,16]]},"1014":{"position":[[593,16]]},"1017":{"position":[[581,16]]},"1020":{"position":[[611,16]]}},"keywords":{}}],["name\":\"spec.ps.replica",{"_index":3505,"title":{},"content":{"461":{"position":[[1691,26]]},"463":{"position":[[693,26]]},"466":{"position":[[1721,26]]},"469":{"position":[[717,26]]},"988":{"position":[[1691,26]]},"990":{"position":[[693,26]]},"993":{"position":[[1721,26]]},"996":{"position":[[717,26]]}},"keywords":{}}],["name\":\"spec.ps.resourcemap.cpu",{"_index":3508,"title":{},"content":{"461":{"position":[[1773,33]]},"463":{"position":[[775,33]]},"466":{"position":[[1803,33]]},"469":{"position":[[799,33]]},"988":{"position":[[1773,33]]},"990":{"position":[[775,33]]},"993":{"position":[[1803,33]]},"996":{"position":[[799,33]]}},"keywords":{}}],["name\":\"spec.ps.resourcemap.memori",{"_index":3509,"title":{},"content":{"461":{"position":[[1862,36]]},"463":{"position":[[864,36]]},"466":{"position":[[1892,36]]},"469":{"position":[[888,36]]},"988":{"position":[[1862,36]]},"990":{"position":[[864,36]]},"993":{"position":[[1892,36]]},"996":{"position":[[888,36]]}},"keywords":{}}],["name\":\"spec.worker.replica",{"_index":3511,"title":{},"content":{"461":{"position":[[1958,30]]},"463":{"position":[[960,30]]},"466":{"position":[[1988,30]]},"469":{"position":[[984,30]]},"988":{"position":[[1958,30]]},"990":{"position":[[960,30]]},"993":{"position":[[1988,30]]},"996":{"position":[[984,30]]}},"keywords":{}}],["name\":\"spec.worker.resourcemap.cpu",{"_index":3512,"title":{},"content":{"461":{"position":[[2044,37]]},"463":{"position":[[1046,37]]},"466":{"position":[[2074,37]]},"469":{"position":[[1070,37]]},"988":{"position":[[2044,37]]},"990":{"position":[[1046,37]]},"993":{"position":[[2074,37]]},"996":{"position":[[1070,37]]}},"keywords":{}}],["name\":\"spec.worker.resourcemap.memori",{"_index":3513,"title":{},"content":{"461":{"position":[[2137,40]]},"463":{"position":[[1139,40]]},"466":{"position":[[2167,40]]},"469":{"position":[[1163,40]]},"988":{"position":[[2137,40]]},"990":{"position":[[1139,40]]},"993":{"position":[[2167,40]]},"996":{"position":[[1163,40]]}},"keywords":{}}],["name\":\"submarine_jupyter_py3",{"_index":3410,"title":{},"content":{"425":{"position":[[330,31],[1222,31]]},"479":{"position":[[950,31]]},"482":{"position":[[697,31]]},"485":{"position":[[685,31]]},"488":{"position":[[715,31]]},"952":{"position":[[330,31],[1222,31]]},"1011":{"position":[[950,31]]},"1014":{"position":[[697,31]]},"1017":{"position":[[685,31]]},"1020":{"position":[[715,31]]}},"keywords":{}}],["name\":\"t",{"_index":892,"title":{},"content":{"100":{"position":[[526,12],[778,12]]},"101":{"position":[[268,12],[520,12]]},"102":{"position":[[261,12],[511,12]]},"479":{"position":[[486,12],[741,12]]},"482":{"position":[[250,12],[488,12]]},"485":{"position":[[238,12],[476,12]]},"488":{"position":[[245,12],[506,12]]},"702":{"position":[[526,12],[778,12]]},"703":{"position":[[268,12],[520,12]]},"704":{"position":[[261,12],[511,12]]},"1011":{"position":[[486,12],[741,12]]},"1014":{"position":[[250,12],[488,12]]},"1017":{"position":[[238,12],[476,12]]},"1020":{"position":[[245,12],[506,12]]}},"keywords":{}}],["name\":\"team_default_python_3.7",{"_index":3399,"title":{},"content":{"423":{"position":[[748,33]]},"425":{"position":[[626,33]]},"428":{"position":[[314,33]]},"434":{"position":[[317,33]]},"950":{"position":[[748,33]]},"952":{"position":[[626,33]]},"955":{"position":[[314,33]]},"961":{"position":[[317,33]]}},"keywords":{}}],["name\":\"team_default_python_3.7_upd",{"_index":3413,"title":{},"content":{"431":{"position":[[635,41]]},"958":{"position":[[635,41]]}},"keywords":{}}],["name\":\"tf",{"_index":3428,"title":{},"content":{"438":{"position":[[686,10],[904,10]]},"441":{"position":[[806,10],[1024,10]]},"443":{"position":[[1287,10],[1505,10]]},"446":{"position":[[223,10],[441,10]]},"449":{"position":[[717,10],[935,10]]},"452":{"position":[[226,10],[416,10]]},"965":{"position":[[686,10],[904,10]]},"968":{"position":[[806,10],[1024,10]]},"970":{"position":[[1287,10],[1505,10]]},"973":{"position":[[223,10],[441,10]]},"976":{"position":[[717,10],[935,10]]},"979":{"position":[[226,10],[416,10]]}},"keywords":{}}],["name\":\"{{experiment_nam",{"_index":3514,"title":{},"content":{"461":{"position":[[2264,29]]},"463":{"position":[[1266,29]]},"466":{"position":[[2294,29]]},"469":{"position":[[1290,29]]},"988":{"position":[[2264,29]]},"990":{"position":[[1266,29]]},"993":{"position":[[2294,29]]},"996":{"position":[[1290,29]]}},"keywords":{}}],["name\":nul",{"_index":3447,"title":{},"content":{"438":{"position":[[1151,12],[1355,12],[1525,12]]},"441":{"position":[[1447,12],[1617,12]]},"443":{"position":[[743,12],[947,12],[1117,12],[1928,12],[2098,12]]},"446":{"position":[[864,12],[1034,12]]},"449":{"position":[[1182,12],[1386,12],[1556,12]]},"452":{"position":[[663,12],[867,12],[1037,12]]},"461":{"position":[[2540,12],[2744,12],[2917,12]]},"463":{"position":[[1542,12],[1746,12],[1919,12]]},"466":{"position":[[2570,12],[2774,12],[2944,12]]},"469":{"position":[[1566,12],[1770,12],[1940,12]]},"472":{"position":[[841,12],[1045,12],[1215,12]]},"965":{"position":[[1151,12],[1355,12],[1525,12]]},"968":{"position":[[1447,12],[1617,12]]},"970":{"position":[[743,12],[947,12],[1117,12],[1928,12],[2098,12]]},"973":{"position":[[864,12],[1034,12]]},"976":{"position":[[1182,12],[1386,12],[1556,12]]},"979":{"position":[[663,12],[867,12],[1037,12]]},"988":{"position":[[2540,12],[2744,12],[2917,12]]},"990":{"position":[[1542,12],[1746,12],[1919,12]]},"993":{"position":[[2570,12],[2774,12],[2944,12]]},"996":{"position":[[1566,12],[1770,12],[1940,12]]},"999":{"position":[[841,12],[1045,12],[1215,12]]}},"keywords":{}}],["name.input_dim",{"_index":3682,"title":{},"content":{"520":{"position":[[268,14]]}},"keywords":{}}],["name.registered_model_nam",{"_index":3681,"title":{},"content":{"520":{"position":[[157,26]]}},"keywords":{}}],["name.valu",{"_index":3668,"title":{},"content":{"518":{"position":[[97,10]]},"519":{"position":[[90,10]]},"1058":{"position":[[97,10]]},"1059":{"position":[[90,10]]}},"keywords":{}}],["name/policycache</valu",{"_index":4325,"title":{},"content":{"1064":{"position":[[533,24]]}},"keywords":{}}],["name</valu",{"_index":4322,"title":{},"content":{"1064":{"position":[[416,12]]}},"keywords":{}}],["name=`p",{"_index":509,"title":{},"content":{"28":{"position":[[921,8]]},"546":{"position":[[921,8]]},"616":{"position":[[921,8]]},"1072":{"position":[[921,8]]}},"keywords":{}}],["name=nam",{"_index":4078,"title":{},"content":{"572":{"position":[[1074,10]]},"1092":{"position":[[1074,10]]}},"keywords":{}}],["name>ranger.plugin.spark.policy.cache.dir</nam",{"_index":4323,"title":{},"content":{"1064":{"position":[[452,49]]}},"keywords":{}}],["name>ranger.plugin.spark.policy.pollintervalms</nam",{"_index":4326,"title":{},"content":{"1064":{"position":[[581,54]]}},"keywords":{}}],["name>ranger.plugin.spark.policy.rest.url</nam",{"_index":4316,"title":{},"content":{"1064":{"position":[[199,48]]}},"keywords":{}}],["name>ranger.plugin.spark.policy.source.impl</nam",{"_index":4328,"title":{},"content":{"1064":{"position":[[679,51]]}},"keywords":{}}],["name>ranger.plugin.spark.service.name</nam",{"_index":4320,"title":{},"content":{"1064":{"position":[[341,45]]}},"keywords":{}}],["name>xasecure.audit.destination.db.jdbc.driver</nam",{"_index":4336,"title":{},"content":{"1064":{"position":[[1144,54]]}},"keywords":{}}],["name>xasecure.audit.destination.db.jdbc.url</nam",{"_index":4338,"title":{},"content":{"1064":{"position":[[1259,51]]}},"keywords":{}}],["name>xasecure.audit.destination.db.password</nam",{"_index":4340,"title":{},"content":{"1064":{"position":[[1383,51]]}},"keywords":{}}],["name>xasecure.audit.destination.db.user</nam",{"_index":4342,"title":{},"content":{"1064":{"position":[[1485,47]]}},"keywords":{}}],["name>xasecure.audit.destination.db</nam",{"_index":4334,"title":{},"content":{"1064":{"position":[[1057,42]]}},"keywords":{}}],["name>xasecure.audit.is.enabled</nam",{"_index":4332,"title":{},"content":{"1064":{"position":[[975,38]]}},"keywords":{}}],["namespac",{"_index":67,"title":{},"content":{"6":{"position":[[177,10]]},"7":{"position":[[660,10]]},"20":{"position":[[870,9]]},"21":{"position":[[237,9]]},"28":{"position":[[500,11]]},"77":{"position":[[131,12],[889,12]]},"78":{"position":[[131,12],[1036,12]]},"79":{"position":[[398,12],[1049,12]]},"80":{"position":[[431,12]]},"81":{"position":[[139,12],[742,12]]},"82":{"position":[[434,12]]},"86":{"position":[[808,12]]},"89":{"position":[[805,12]]},"100":{"position":[[123,12]]},"103":{"position":[[584,12]]},"223":{"position":[[424,10]]},"225":{"position":[[324,9],[358,9]]},"437":{"position":[[363,9],[391,10]]},"438":{"position":[[97,12]]},"441":{"position":[[97,12]]},"449":{"position":[[98,12]]},"460":{"position":[[907,9],[935,10]]},"461":{"position":[[776,12]]},"466":{"position":[[781,12]]},"478":{"position":[[300,9],[326,10]]},"479":{"position":[[91,12]]},"492":{"position":[[57,12]]},"496":{"position":[[316,12]]},"497":{"position":[[323,12]]},"546":{"position":[[500,11]]},"595":{"position":[[177,10]]},"596":{"position":[[660,10]]},"616":{"position":[[500,11]]},"620":{"position":[[870,9]]},"621":{"position":[[237,9]]},"669":{"position":[[808,12]]},"672":{"position":[[805,12]]},"676":{"position":[[131,12],[889,12]]},"677":{"position":[[131,12],[1036,12]]},"678":{"position":[[398,12],[1049,12]]},"679":{"position":[[431,12]]},"680":{"position":[[139,12],[742,12]]},"681":{"position":[[434,12]]},"702":{"position":[[123,12]]},"705":{"position":[[584,12]]},"808":{"position":[[424,10]]},"810":{"position":[[345,9],[411,9]]},"964":{"position":[[363,9],[391,10]]},"965":{"position":[[97,12]]},"968":{"position":[[97,12]]},"976":{"position":[[98,12]]},"987":{"position":[[907,9],[935,10]]},"988":{"position":[[776,12]]},"993":{"position":[[781,12]]},"1006":{"position":[[57,12]]},"1010":{"position":[[300,9],[326,10]]},"1011":{"position":[[91,12]]},"1023":{"position":[[316,12]]},"1024":{"position":[[323,12]]},"1072":{"position":[[500,11]]}},"keywords":{}}],["namespace\":\"default",{"_index":905,"title":{},"content":{"100":{"position":[[796,22]]},"101":{"position":[[538,22]]},"102":{"position":[[529,22]]},"438":{"position":[[928,22]]},"441":{"position":[[1048,22]]},"443":{"position":[[521,22],[1529,22]]},"446":{"position":[[465,22]]},"449":{"position":[[959,22]]},"452":{"position":[[440,22]]},"461":{"position":[[2294,22]]},"463":{"position":[[1296,22]]},"466":{"position":[[2324,22]]},"469":{"position":[[1320,22]]},"472":{"position":[[619,22]]},"479":{"position":[[759,22]]},"482":{"position":[[506,22]]},"485":{"position":[[494,22]]},"488":{"position":[[524,22]]},"702":{"position":[[796,22]]},"703":{"position":[[538,22]]},"704":{"position":[[529,22]]},"965":{"position":[[928,22]]},"968":{"position":[[1048,22]]},"970":{"position":[[521,22],[1529,22]]},"973":{"position":[[465,22]]},"976":{"position":[[959,22]]},"979":{"position":[[440,22]]},"988":{"position":[[2294,22]]},"990":{"position":[[1296,22]]},"993":{"position":[[2324,22]]},"996":{"position":[[1320,22]]},"999":{"position":[[619,22]]},"1011":{"position":[[759,22]]},"1014":{"position":[[506,22]]},"1017":{"position":[[494,22]]},"1020":{"position":[[524,22]]}},"keywords":{}}],["namespace.th",{"_index":2773,"title":{},"content":{"380":{"position":[[192,13]]},"907":{"position":[[192,13]]}},"keywords":{}}],["namespace='default",{"_index":3269,"title":{},"content":{"407":{"position":[[771,20]]},"934":{"position":[[791,20]]}},"keywords":{}}],["namevalu",{"_index":4277,"title":{},"content":{"1035":{"position":[[64,9]]}},"keywords":{}}],["nativ",{"_index":2156,"title":{"248":{"position":[[6,6]]},"818":{"position":[[6,6]]}},"content":{"246":{"position":[[36,7]]},"816":{"position":[[36,7]]}},"keywords":{}}],["natur",{"_index":1592,"title":{},"content":{"159":{"position":[[1629,9]]},"729":{"position":[[1629,9]]}},"keywords":{}}],["navigator=1.9.12=py37_0",{"_index":699,"title":{},"content":{"71":{"position":[[404,26],[991,26]]},"72":{"position":[[542,26]]},"73":{"position":[[564,26]]},"154":{"position":[[698,23],[1119,23]]},"423":{"position":[[369,26]]},"663":{"position":[[404,26],[991,26]]},"664":{"position":[[542,26]]},"665":{"position":[[564,26]]},"724":{"position":[[698,23],[1119,23]]},"950":{"position":[[369,26]]}},"keywords":{}}],["navigator\\u003d1.9.12\\u003dpy37_0",{"_index":3405,"title":{},"content":{"423":{"position":[[1004,36]]},"425":{"position":[[882,36]]},"428":{"position":[[570,36]]},"434":{"position":[[573,36]]},"950":{"position":[[1004,36]]},"952":{"position":[[882,36]]},"955":{"position":[[570,36]]},"961":{"position":[[573,36]]}},"keywords":{}}],["nb",{"_index":884,"title":{},"content":{"100":{"position":[[118,4],[539,4],[620,5],[791,4]]},"101":{"position":[[281,4],[362,5],[533,4]]},"102":{"position":[[274,4],[355,5],[524,4]]},"103":{"position":[[290,4],[373,5],[579,4]]},"479":{"position":[[86,4],[499,4],[754,4]]},"482":{"position":[[263,4],[501,4]]},"485":{"position":[[251,4],[489,4]]},"488":{"position":[[258,4],[519,4]]},"702":{"position":[[118,4],[539,4],[620,5],[791,4]]},"703":{"position":[[281,4],[362,5],[533,4]]},"704":{"position":[[274,4],[355,5],[524,4]]},"705":{"position":[[290,4],[373,5],[579,4]]},"1011":{"position":[[86,4],[499,4],[754,4]]},"1014":{"position":[[263,4],[501,4]]},"1017":{"position":[[251,4],[489,4]]},"1020":{"position":[[258,4],[519,4]]}},"keywords":{}}],["nb/lab",{"_index":3545,"title":{},"content":{"479":{"position":[[580,8]]},"482":{"position":[[344,8]]},"485":{"position":[[332,8]]},"488":{"position":[[339,8]]},"1011":{"position":[[580,8]]},"1014":{"position":[[344,8]]},"1017":{"position":[[332,8]]},"1020":{"position":[[339,8]]}},"keywords":{}}],["ncur",{"_index":2883,"title":{},"content":{"389":{"position":[[2228,7],[3120,7],[6025,7],[11564,7],[11598,11],[11659,7],[16314,7],[18070,7],[18944,7],[21743,7],[27113,7],[27147,11],[27208,7],[31168,7]]},"916":{"position":[[2228,7],[3120,7],[6025,7],[11564,7],[11598,11],[11659,7],[16314,7],[18070,7],[18944,7],[21743,7],[27113,7],[27147,11],[27208,7],[31168,7]]}},"keywords":{}}],["ndg",{"_index":2920,"title":{},"content":{"389":{"position":[[2773,3],[18615,3]]},"916":{"position":[[2773,3],[18615,3]]}},"keywords":{}}],["ne",{"_index":483,"title":{},"content":{"28":{"position":[[521,2]]},"546":{"position":[[521,2]]},"616":{"position":[[521,2]]},"1072":{"position":[[521,2]]}},"keywords":{}}],["necessari",{"_index":1070,"title":{},"content":{"107":{"position":[[5954,10]]},"176":{"position":[[992,9]]},"746":{"position":[[995,9]]}},"keywords":{}}],["necessarili",{"_index":1120,"title":{},"content":{"107":{"position":[[8323,11]]}},"keywords":{}}],["need",{"_index":181,"title":{"161":{"position":[[71,6]]},"731":{"position":[[71,6]]}},"content":{"13":{"position":[[92,4]]},"15":{"position":[[96,4]]},"16":{"position":[[390,4]]},"20":{"position":[[255,4]]},"25":{"position":[[1995,5]]},"31":{"position":[[13,5],[459,6]]},"122":{"position":[[17,4]]},"133":{"position":[[2310,4]]},"141":{"position":[[628,5],[938,4],[1352,5],[1710,5],[1857,5]]},"145":{"position":[[18,4]]},"152":{"position":[[293,4]]},"153":{"position":[[290,7]]},"156":{"position":[[684,6]]},"159":{"position":[[2847,6]]},"161":{"position":[[309,5],[413,5],[646,4],[891,4]]},"162":{"position":[[84,4]]},"165":{"position":[[47,5],[163,5],[462,5]]},"175":{"position":[[194,4],[358,4],[433,7]]},"176":{"position":[[28,4]]},"177":{"position":[[13,4]]},"189":{"position":[[1368,4]]},"193":{"position":[[345,7],[508,7]]},"195":{"position":[[148,6],[300,4]]},"197":{"position":[[225,4]]},"200":{"position":[[2929,4]]},"207":{"position":[[36,4]]},"210":{"position":[[236,5]]},"212":{"position":[[177,4]]},"213":{"position":[[437,4]]},"215":{"position":[[1596,4],[1648,5],[1840,4],[2032,4]]},"216":{"position":[[336,5],[557,4]]},"217":{"position":[[957,4],[1293,4]]},"219":{"position":[[24,5]]},"249":{"position":[[58,5]]},"252":{"position":[[149,4]]},"262":{"position":[[141,4]]},"265":{"position":[[129,4]]},"267":{"position":[[96,4]]},"273":{"position":[[12,5]]},"275":{"position":[[93,4]]},"281":{"position":[[198,4],[275,5]]},"314":{"position":[[2104,4]]},"315":{"position":[[275,4]]},"320":{"position":[[221,4]]},"329":{"position":[[93,6]]},"331":{"position":[[0,4],[1150,5],[1490,4],[1746,4]]},"334":{"position":[[878,7],[1569,7]]},"375":{"position":[[32,4],[247,4]]},"389":{"position":[[41,5],[1750,4],[3381,4],[14741,4],[14805,7],[19205,4],[30290,4],[30354,7]]},"400":{"position":[[89,7]]},"403":{"position":[[133,4]]},"406":{"position":[[1034,5]]},"415":{"position":[[1872,4]]},"491":{"position":[[77,4]]},"543":{"position":[[1995,5]]},"549":{"position":[[32,5],[228,4]]},"553":{"position":[[34,5],[232,4]]},"559":{"position":[[37,4],[229,4]]},"568":{"position":[[310,4]]},"569":{"position":[[69,4],[1956,4]]},"577":{"position":[[4,5]]},"578":{"position":[[71,6],[598,4],[644,6]]},"582":{"position":[[4,5]]},"583":{"position":[[68,6]]},"587":{"position":[[4,5]]},"588":{"position":[[66,6]]},"605":{"position":[[92,4]]},"607":{"position":[[96,4]]},"608":{"position":[[390,4]]},"613":{"position":[[1995,5]]},"620":{"position":[[255,4]]},"623":{"position":[[13,5],[459,6]]},"690":{"position":[[17,4]]},"715":{"position":[[18,4]]},"722":{"position":[[293,4]]},"723":{"position":[[290,7]]},"726":{"position":[[684,6]]},"729":{"position":[[2847,6]]},"731":{"position":[[309,5],[413,5],[646,4],[891,4]]},"732":{"position":[[84,4]]},"735":{"position":[[47,5],[163,5],[462,5]]},"745":{"position":[[194,4],[358,4],[433,7]]},"746":{"position":[[28,4]]},"747":{"position":[[13,4]]},"756":{"position":[[36,4]]},"759":{"position":[[236,5]]},"761":{"position":[[177,4]]},"762":{"position":[[437,4]]},"772":{"position":[[1368,4]]},"776":{"position":[[345,7],[508,7]]},"778":{"position":[[148,6],[300,4]]},"780":{"position":[[154,4],[232,4]]},"783":{"position":[[2929,4]]},"785":{"position":[[1596,4],[1648,5],[1840,4],[2032,4]]},"786":{"position":[[336,5],[557,4]]},"787":{"position":[[957,4],[1293,4]]},"789":{"position":[[24,5]]},"819":{"position":[[58,5]]},"822":{"position":[[154,4]]},"833":{"position":[[141,4]]},"836":{"position":[[129,4]]},"838":{"position":[[96,4]]},"844":{"position":[[12,5]]},"846":{"position":[[93,4]]},"852":{"position":[[198,4],[275,5]]},"877":{"position":[[221,4]]},"902":{"position":[[32,4],[247,4]]},"916":{"position":[[41,5],[1750,4],[3381,4],[14741,4],[14805,7],[19205,4],[30290,4],[30354,7]]},"927":{"position":[[89,7]]},"930":{"position":[[133,4]]},"933":{"position":[[685,5]]},"942":{"position":[[1890,4]]},"1005":{"position":[[77,4]]},"1033":{"position":[[93,4],[204,4]]},"1069":{"position":[[1995,5]]},"1075":{"position":[[32,5],[228,4]]},"1079":{"position":[[34,5],[232,4]]},"1088":{"position":[[310,4]]},"1089":{"position":[[69,4],[1956,4]]},"1094":{"position":[[37,4],[229,4]]},"1103":{"position":[[4,5]]},"1104":{"position":[[71,6],[598,4],[644,6]]},"1108":{"position":[[4,5]]},"1109":{"position":[[68,6]]},"1113":{"position":[[4,5]]},"1114":{"position":[[66,6]]}},"keywords":{}}],["neg",{"_index":1091,"title":{},"content":{"107":{"position":[[6716,8]]}},"keywords":{}}],["netbas",{"_index":2884,"title":{},"content":{"389":{"position":[[2241,7],[3133,7],[4826,7],[9691,8],[9767,7],[13906,7],[18083,7],[18957,7],[20650,7],[25409,8],[25485,7],[29455,7]]},"916":{"position":[[2241,7],[3133,7],[4826,7],[9691,8],[9767,7],[13906,7],[18083,7],[18957,7],[20650,7],[25409,8],[25485,7],[29455,7]]}},"keywords":{}}],["network",{"_index":363,"title":{"272":{"position":[[0,7]]},"843":{"position":[[0,7]]}},"content":{"23":{"position":[[220,7]]},"163":{"position":[[607,8]]},"272":{"position":[[43,7],[62,7]]},"334":{"position":[[444,7]]},"348":{"position":[[65,7]]},"369":{"position":[[563,7]]},"383":{"position":[[582,8]]},"389":{"position":[[592,7]]},"541":{"position":[[220,7]]},"611":{"position":[[220,7]]},"733":{"position":[[607,8]]},"843":{"position":[[43,7],[62,7]]},"892":{"position":[[563,7]]},"910":{"position":[[582,8]]},"916":{"position":[[592,7]]},"1067":{"position":[[220,7]]}},"keywords":{}}],["nev",{"_index":2082,"title":{},"content":{"217":{"position":[[1782,5]]},"314":{"position":[[539,5],[648,5],[784,5],[893,5],[1415,5],[1524,5],[1654,5],[1763,5]]},"787":{"position":[[1782,5]]}},"keywords":{}}],["new",{"_index":7,"title":{"122":{"position":[[16,3]]},"135":{"position":[[0,3]]},"305":{"position":[[6,3]]},"322":{"position":[[6,3]]},"690":{"position":[[16,3]]},"707":{"position":[[0,3]]},"871":{"position":[[6,3]]},"879":{"position":[[6,3]]}},"content":{"1":{"position":[[28,5]]},"12":{"position":[[133,3]]},"21":{"position":[[609,3]]},"33":{"position":[[363,4]]},"35":{"position":[[1105,3],[1135,3],[1249,3]]},"53":{"position":[[177,4]]},"55":{"position":[[555,3],[581,3]]},"89":{"position":[[137,5]]},"107":{"position":[[613,3],[4326,3],[5296,3],[9356,3],[9579,3],[9648,3],[9754,3],[9775,3],[9858,3]]},"122":{"position":[[0,3],[151,5],[235,3]]},"123":{"position":[[126,3]]},"127":{"position":[[76,3]]},"131":{"position":[[5,3]]},"133":{"position":[[1836,3]]},"135":{"position":[[0,3],[93,3],[152,3]]},"137":{"position":[[308,3]]},"141":{"position":[[2107,3]]},"144":{"position":[[180,3],[361,3]]},"148":{"position":[[577,3]]},"152":{"position":[[308,3],[574,3]]},"153":{"position":[[355,3]]},"154":{"position":[[1162,3]]},"161":{"position":[[158,3]]},"162":{"position":[[909,3]]},"171":{"position":[[1926,3]]},"176":{"position":[[746,3],[828,3],[839,3]]},"193":{"position":[[322,3]]},"194":{"position":[[1443,3]]},"196":{"position":[[713,3]]},"200":{"position":[[2728,3]]},"208":{"position":[[720,3]]},"209":{"position":[[77,3]]},"212":{"position":[[14,3]]},"213":{"position":[[163,3]]},"217":{"position":[[331,3]]},"298":{"position":[[225,3]]},"300":{"position":[[189,3],[241,3],[568,3],[586,3]]},"302":{"position":[[260,3]]},"304":{"position":[[183,3]]},"305":{"position":[[21,3]]},"338":{"position":[[9,3]]},"389":{"position":[[2852,3],[15298,3],[18694,3],[30847,3]]},"398":{"position":[[56,3]]},"406":{"position":[[137,3],[164,4],[231,3],[1093,3],[1128,3]]},"407":{"position":[[1407,3]]},"417":{"position":[[37,3]]},"466":{"position":[[113,5],[1313,5]]},"469":{"position":[[309,5]]},"511":{"position":[[330,3]]},"512":{"position":[[264,3]]},"513":{"position":[[48,3]]},"601":{"position":[[28,5]]},"604":{"position":[[133,3]]},"621":{"position":[[609,3]]},"625":{"position":[[363,4]]},"627":{"position":[[1105,3],[1135,3],[1249,3]]},"645":{"position":[[177,4]]},"647":{"position":[[555,3],[581,3]]},"672":{"position":[[137,5]]},"690":{"position":[[0,3],[151,5],[235,3]]},"691":{"position":[[126,3]]},"695":{"position":[[76,3]]},"699":{"position":[[5,3]]},"707":{"position":[[0,3],[93,3],[152,3]]},"709":{"position":[[308,3]]},"714":{"position":[[180,3],[361,3]]},"722":{"position":[[308,3],[574,3]]},"723":{"position":[[355,3]]},"724":{"position":[[1162,3]]},"731":{"position":[[158,3]]},"732":{"position":[[909,3]]},"741":{"position":[[1938,3]]},"746":{"position":[[747,3],[830,3],[841,3]]},"757":{"position":[[720,3]]},"758":{"position":[[77,3]]},"761":{"position":[[14,3]]},"762":{"position":[[163,3]]},"776":{"position":[[322,3]]},"777":{"position":[[1723,3]]},"779":{"position":[[713,3]]},"783":{"position":[[2728,3]]},"787":{"position":[[331,3]]},"865":{"position":[[228,3]]},"867":{"position":[[189,3],[241,3],[692,3]]},"869":{"position":[[260,3]]},"870":{"position":[[183,3]]},"871":{"position":[[21,3]]},"916":{"position":[[2852,3],[15298,3],[18694,3],[30847,3]]},"925":{"position":[[56,3]]},"933":{"position":[[137,3],[164,4],[231,3],[744,3],[779,3]]},"934":{"position":[[1427,3]]},"944":{"position":[[37,3]]},"993":{"position":[[113,5],[1313,5]]},"996":{"position":[[309,5]]},"1034":{"position":[[34,3]]},"1041":{"position":[[18,3]]},"1051":{"position":[[252,3]]},"1052":{"position":[[48,3]]}},"keywords":{}}],["new_dataset",{"_index":875,"title":{},"content":{"95":{"position":[[211,13]]}},"keywords":{}}],["new_descript",{"_index":873,"title":{},"content":{"95":{"position":[[151,18]]},"112":{"position":[[147,17]]}},"keywords":{}}],["new_kind",{"_index":128,"title":{},"content":{"7":{"position":[[794,9]]},"596":{"position":[[794,9]]}},"keywords":{}}],["new_nam",{"_index":1174,"title":{"1041":{"position":[[45,9]]}},"content":{"112":{"position":[[120,11]]}},"keywords":{}}],["new_not",{"_index":2259,"title":{},"content":{"276":{"position":[[15,9]]},"847":{"position":[[15,9]]}},"keywords":{}}],["newalias",{"_index":3152,"title":{},"content":{"389":{"position":[[14946,10],[30495,10]]},"916":{"position":[[14946,10],[30495,10]]}},"keywords":{}}],["newli",{"_index":2926,"title":{},"content":{"389":{"position":[[3331,5],[17582,5],[19155,5],[32436,5]]},"916":{"position":[[3331,5],[17582,5],[19155,5],[32436,5]]}},"keywords":{}}],["next",{"_index":1565,"title":{},"content":{"159":{"position":[[136,4]]},"334":{"position":[[949,5],[1644,5]]},"341":{"position":[[597,4]]},"350":{"position":[[421,4]]},"572":{"position":[[2227,4]]},"729":{"position":[[136,4]]},"1092":{"position":[[2227,4]]}},"keywords":{}}],["nexu",{"_index":2606,"title":{"345":{"position":[[42,5]]}},"content":{},"keywords":{}}],["nf",{"_index":2779,"title":{},"content":{"383":{"position":[[87,4],[578,3],[608,4],[694,3],[735,3],[827,3],[876,3],[915,3],[934,3],[991,3],[1026,3],[1114,3],[1170,3],[1276,3],[1280,4]]},"437":{"position":[[1204,3]]},"910":{"position":[[87,4],[578,3],[608,4],[694,3],[735,3],[827,3],[876,3],[915,3],[934,3],[991,3],[1026,3],[1114,3],[1170,3],[1276,3],[1280,4]]},"964":{"position":[[1204,3]]}},"keywords":{}}],["nfs.to",{"_index":2797,"title":{},"content":{"383":{"position":[[1148,6]]},"910":{"position":[[1148,6]]}},"keywords":{}}],["nic",{"_index":1508,"title":{},"content":{"154":{"position":[[115,6]]},"724":{"position":[[115,6]]}},"keywords":{}}],["nin",{"_index":566,"title":{},"content":{"33":{"position":[[284,4]]},"625":{"position":[[284,4]]}},"keywords":{}}],["ninja",{"_index":3738,"title":{},"content":{"553":{"position":[[1104,5]]},"1079":{"position":[[1104,5]]}},"keywords":{}}],["no_push",{"_index":1195,"title":{},"content":{"121":{"position":[[386,7],[600,7]]},"689":{"position":[[386,7],[600,7]]}},"keywords":{}}],["nod",{"_index":309,"title":{},"content":{"20":{"position":[[131,4],[192,6],[369,6],[477,4]]},"21":{"position":[[199,5]]},"199":{"position":[[948,4]]},"383":{"position":[[959,5]]},"384":{"position":[[773,6]]},"389":{"position":[[17691,4]]},"569":{"position":[[1240,5],[1267,4],[1354,5]]},"578":{"position":[[623,6]]},"620":{"position":[[131,4],[192,6],[369,6],[477,4]]},"621":{"position":[[199,5]]},"782":{"position":[[948,4]]},"910":{"position":[[959,5]]},"911":{"position":[[773,6]]},"916":{"position":[[17691,4]]},"1089":{"position":[[1240,5],[1267,4],[1354,5]]},"1104":{"position":[[623,6]]}},"keywords":{}}],["node.usag",{"_index":2782,"title":{},"content":{"383":{"position":[[290,11]]},"910":{"position":[[290,11]]}},"keywords":{}}],["nodej",{"_index":2300,"title":{"291":{"position":[[0,6]]}},"content":{},"keywords":{}}],["nodemanag",{"_index":397,"title":{"25":{"position":[[23,11]]},"543":{"position":[[23,11]]},"613":{"position":[[23,11]]},"1069":{"position":[[23,11]]}},"content":{"25":{"position":[[1690,11]]},"543":{"position":[[1690,11]]},"613":{"position":[[1690,11]]},"1069":{"position":[[1690,11]]}},"keywords":{}}],["nodeport",{"_index":146,"title":{},"content":{"8":{"position":[[103,8]]},"20":{"position":[[648,8]]},"384":{"position":[[379,8],[895,8]]},"597":{"position":[[103,8]]},"620":{"position":[[648,8]]},"911":{"position":[[379,8],[895,8]]}},"keywords":{}}],["noise.tgz",{"_index":2814,"title":{},"content":{"386":{"position":[[353,9]]},"913":{"position":[[353,9]]}},"keywords":{}}],["non",{"_index":74,"title":{"169":{"position":[[17,3]]},"501":{"position":[[54,4]]},"517":{"position":[[40,4]]},"518":{"position":[[45,4]]},"519":{"position":[[56,4]]},"520":{"position":[[94,5],[118,5],[143,6],[153,4]]},"739":{"position":[[17,3]]},"1028":{"position":[[54,4]]},"1035":{"position":[[35,5]]},"1036":{"position":[[32,5]]},"1037":{"position":[[53,5]]},"1038":{"position":[[51,5]]},"1041":{"position":[[55,5]]},"1042":{"position":[[54,5]]},"1057":{"position":[[40,4]]},"1058":{"position":[[45,4]]},"1059":{"position":[[56,4]]}},"content":{"6":{"position":[[237,4]]},"93":{"position":[[293,7],[656,7],[1019,7],[1383,7]]},"94":{"position":[[301,7]]},"107":{"position":[[7193,3]]},"133":{"position":[[1639,3]]},"136":{"position":[[607,3]]},"176":{"position":[[1410,3]]},"215":{"position":[[1493,3]]},"352":{"position":[[1386,3],[1426,3]]},"516":{"position":[[25,4],[101,5]]},"520":{"position":[[199,5]]},"534":{"position":[[98,3]]},"559":{"position":[[1186,4]]},"570":{"position":[[972,5],[1134,5],[10454,5],[10616,5],[16523,5],[16685,5]]},"595":{"position":[[237,4]]},"708":{"position":[[607,3]]},"746":{"position":[[1413,3]]},"785":{"position":[[1493,3]]},"1056":{"position":[[25,4],[101,5]]},"1090":{"position":[[972,5],[1134,5],[10454,5],[10616,5],[16523,5],[16685,5]]},"1094":{"position":[[1186,4]]}},"keywords":{}}],["noqa",{"_index":3644,"title":{},"content":{"511":{"position":[[1361,5]]}},"keywords":{}}],["normal",{"_index":2173,"title":{},"content":{"248":{"position":[[560,6]]},"265":{"position":[[90,9]]},"338":{"position":[[133,7]]},"818":{"position":[[560,6]]},"836":{"position":[[90,9]]}},"keywords":{}}],["normally.verifi",{"_index":2423,"title":{},"content":{"317":{"position":[[410,15]]}},"keywords":{}}],["normally.wheth",{"_index":2419,"title":{},"content":{"316":{"position":[[305,16]]}},"keywords":{}}],["not",{"_index":112,"title":{"201":{"position":[[15,5]]},"275":{"position":[[22,5]]},"276":{"position":[[11,4]]},"277":{"position":[[10,4]]},"750":{"position":[[15,5]]},"846":{"position":[[22,5]]},"847":{"position":[[11,4]]},"848":{"position":[[10,4]]}},"content":{"7":{"position":[[475,4]]},"13":{"position":[[13,5]]},"107":{"position":[[10172,5],[10408,5]]},"145":{"position":[[289,4]]},"151":{"position":[[333,4]]},"187":{"position":[[129,4]]},"200":{"position":[[7,4]]},"201":{"position":[[642,6]]},"211":{"position":[[247,4]]},"230":{"position":[[854,4]]},"261":{"position":[[489,5]]},"275":{"position":[[61,4]]},"277":{"position":[[4,4]]},"281":{"position":[[184,4]]},"320":{"position":[[516,5]]},"350":{"position":[[555,4]]},"372":{"position":[[57,6],[604,6],[875,6]]},"386":{"position":[[765,4]]},"578":{"position":[[685,5]]},"580":{"position":[[1231,7]]},"596":{"position":[[475,4]]},"605":{"position":[[13,5]]},"715":{"position":[[289,4]]},"721":{"position":[[333,4]]},"750":{"position":[[643,6]]},"760":{"position":[[247,4]]},"770":{"position":[[129,4]]},"783":{"position":[[7,4]]},"793":{"position":[[854,4]]},"832":{"position":[[489,5]]},"846":{"position":[[61,4]]},"848":{"position":[[4,4]]},"852":{"position":[[184,4]]},"877":{"position":[[516,5]]},"899":{"position":[[57,6],[328,6]]},"913":{"position":[[765,4]]},"1104":{"position":[[685,5]]},"1106":{"position":[[1231,7]]}},"keywords":{}}],["notebook",{"_index":88,"title":{"21":{"position":[[15,8]]},"99":{"position":[[0,8]]},"100":{"position":[[9,8]]},"101":{"position":[[5,8]]},"102":{"position":[[8,8]]},"103":{"position":[[11,8]]},"170":{"position":[[0,8]]},"190":{"position":[[27,8]]},"202":{"position":[[0,8]]},"234":{"position":[[0,8]]},"404":{"position":[[8,8]]},"405":{"position":[[13,9]]},"406":{"position":[[0,9]]},"407":{"position":[[21,8]]},"476":{"position":[[0,8]]},"477":{"position":[[9,8]]},"480":{"position":[[5,8]]},"483":{"position":[[8,8]]},"486":{"position":[[11,8]]},"527":{"position":[[0,9]]},"528":{"position":[[5,9]]},"529":{"position":[[4,9]]},"530":{"position":[[7,9]]},"621":{"position":[[15,8]]},"701":{"position":[[0,8]]},"702":{"position":[[9,8]]},"703":{"position":[[5,8]]},"704":{"position":[[8,8]]},"705":{"position":[[11,8]]},"740":{"position":[[0,8]]},"751":{"position":[[0,8]]},"773":{"position":[[27,8]]},"797":{"position":[[0,8]]},"931":{"position":[[8,8]]},"932":{"position":[[13,9]]},"933":{"position":[[0,9]]},"934":{"position":[[21,8]]},"1008":{"position":[[0,8]]},"1009":{"position":[[9,8]]},"1012":{"position":[[5,8]]},"1015":{"position":[[8,8]]},"1018":{"position":[[11,8]]}},"content":{"7":{"position":[[144,8]]},"21":{"position":[[90,9],[170,8],[275,8],[315,8],[438,8],[507,8],[551,8],[590,8]]},"35":{"position":[[268,9],[758,8],[1622,9],[3174,8],[3352,8],[3416,8],[3468,8],[3490,8],[3704,9],[3770,9]]},"55":{"position":[[432,8],[738,8],[1446,8],[1501,8],[1534,8],[1543,22],[1579,8],[1599,8],[1720,9],[1752,8]]},"100":{"position":[[221,9],[451,8],[661,8],[946,8]]},"101":{"position":[[190,8],[404,8],[688,8]]},"102":{"position":[[186,8],[395,8],[679,8]]},"103":{"position":[[199,8],[419,8],[681,9],[738,8]]},"151":{"position":[[156,9],[1170,8]]},"153":{"position":[[569,9]]},"154":{"position":[[1179,8]]},"156":{"position":[[219,9],[863,9],[1113,9]]},"158":{"position":[[183,8]]},"159":{"position":[[985,9],[1030,8],[1180,9]]},"170":{"position":[[50,9],[68,9],[201,9],[219,9],[316,8],[402,8],[475,8],[517,8],[545,8]]},"172":{"position":[[156,9],[481,8]]},"175":{"position":[[262,8]]},"176":{"position":[[99,9]]},"179":{"position":[[346,11]]},"188":{"position":[[139,9]]},"189":{"position":[[569,8],[632,8],[703,8]]},"190":{"position":[[116,8],[208,8],[341,8],[758,8]]},"201":{"position":[[469,9]]},"204":{"position":[[37,8],[58,8],[88,8],[107,8],[198,8],[249,8],[399,9],[482,9],[628,8],[675,8],[731,8],[788,8]]},"205":{"position":[[20,8],[143,8]]},"207":{"position":[[8,8]]},"208":{"position":[[132,8],[147,8],[334,8],[488,8],[593,8],[621,8],[678,8],[724,8]]},"209":{"position":[[46,8]]},"210":{"position":[[71,9],[301,8]]},"211":{"position":[[146,9],[312,8],[433,9]]},"212":{"position":[[659,8]]},"213":{"position":[[72,8],[132,9]]},"215":{"position":[[66,8],[138,10],[804,9],[968,8],[1624,9],[1797,9],[1956,8]]},"217":{"position":[[1388,9]]},"219":{"position":[[82,9],[122,8],[158,8],[297,8],[363,8]]},"229":{"position":[[405,8],[1074,8]]},"230":{"position":[[64,10]]},"232":{"position":[[159,9]]},"259":{"position":[[373,9]]},"275":{"position":[[176,9]]},"276":{"position":[[73,8]]},"352":{"position":[[1022,8],[1073,8]]},"368":{"position":[[445,8]]},"372":{"position":[[433,8],[479,8]]},"402":{"position":[[130,8]]},"405":{"position":[[36,10]]},"406":{"position":[[0,9],[60,10],[113,10],[141,8],[169,10],[235,8],[252,8],[280,8],[634,9],[663,8],[1070,9],[1097,9],[1132,8],[1172,8]]},"407":{"position":[[16,9],[1411,9],[1475,8],[1535,8]]},"412":{"position":[[123,8]]},"425":{"position":[[285,8],[1181,8]]},"478":{"position":[[106,9],[217,8],[285,8],[317,8]]},"479":{"position":[[189,9],[411,8],[624,8],[909,8]]},"482":{"position":[[172,8],[656,8]]},"484":{"position":[[45,8]]},"485":{"position":[[163,8],[644,8]]},"487":{"position":[[45,8]]},"488":{"position":[[170,8],[386,8],[674,8]]},"528":{"position":[[15,8]]},"529":{"position":[[14,8],[23,9],[54,8]]},"530":{"position":[[17,8],[26,9]]},"596":{"position":[[144,8]]},"621":{"position":[[90,9],[170,8],[275,8],[315,8],[438,8],[507,8],[551,8],[590,8]]},"627":{"position":[[268,9],[758,8],[1622,9],[3174,8],[3352,8],[3416,8],[3468,8],[3490,8],[3704,9],[3770,9]]},"647":{"position":[[432,8],[738,8],[1446,8],[1501,8],[1534,8],[1543,22],[1579,8],[1599,8],[1720,9],[1752,8]]},"702":{"position":[[221,9],[451,8],[661,8],[946,8]]},"703":{"position":[[190,8],[404,8],[688,8]]},"704":{"position":[[186,8],[395,8],[679,8]]},"705":{"position":[[199,8],[419,8],[681,9],[738,8]]},"721":{"position":[[156,9],[1170,8]]},"723":{"position":[[569,9]]},"724":{"position":[[1179,8]]},"726":{"position":[[219,9],[863,9],[1113,9]]},"728":{"position":[[183,8]]},"729":{"position":[[985,9],[1030,8],[1180,9]]},"740":{"position":[[50,9],[68,9],[201,9],[219,9],[316,8],[402,8],[475,8],[517,8],[545,8]]},"742":{"position":[[156,9],[481,8]]},"745":{"position":[[262,8]]},"746":{"position":[[99,9]]},"749":{"position":[[346,11]]},"750":{"position":[[470,9]]},"753":{"position":[[37,8],[58,8],[88,8],[107,8],[198,8],[249,8],[399,9],[482,9],[628,8],[675,8],[731,8],[788,8]]},"754":{"position":[[20,8],[143,8]]},"756":{"position":[[8,8]]},"757":{"position":[[132,8],[147,8],[334,8],[488,8],[593,8],[621,8],[678,8],[724,8]]},"758":{"position":[[46,8]]},"759":{"position":[[71,9],[301,8]]},"760":{"position":[[146,9],[312,8],[433,9]]},"761":{"position":[[659,8]]},"762":{"position":[[72,8],[132,9]]},"771":{"position":[[139,9]]},"772":{"position":[[569,8],[632,8],[703,8]]},"773":{"position":[[116,8],[208,8],[341,8],[758,8]]},"785":{"position":[[66,8],[138,10],[804,9],[968,8],[1624,9],[1797,9],[1956,8]]},"787":{"position":[[1388,9]]},"789":{"position":[[82,9],[122,8],[158,8],[297,8],[363,8]]},"792":{"position":[[405,8],[1075,8]]},"793":{"position":[[64,10]]},"795":{"position":[[159,9]]},"830":{"position":[[373,9]]},"846":{"position":[[176,9]]},"847":{"position":[[73,8]]},"891":{"position":[[445,8]]},"929":{"position":[[130,8]]},"932":{"position":[[36,10]]},"933":{"position":[[0,9],[60,10],[113,10],[141,8],[169,10],[235,8],[252,8],[280,8],[634,9],[721,9],[748,9],[783,8],[823,8]]},"934":{"position":[[16,9],[1431,9],[1495,8],[1555,8]]},"939":{"position":[[125,8]]},"952":{"position":[[285,8],[1181,8]]},"1010":{"position":[[106,9],[217,8],[285,8],[317,8]]},"1011":{"position":[[189,9],[411,8],[624,8],[909,8]]},"1014":{"position":[[172,8],[656,8]]},"1016":{"position":[[45,8]]},"1017":{"position":[[163,8],[644,8]]},"1019":{"position":[[45,8]]},"1020":{"position":[[170,8],[386,8],[674,8]]}},"keywords":{}}],["notebook'",{"_index":1731,"title":{},"content":{"170":{"position":[[355,10]]},"188":{"position":[[484,10]]},"190":{"position":[[709,10]]},"211":{"position":[[10,10],[257,10]]},"740":{"position":[[355,10]]},"760":{"position":[[10,10],[257,10]]},"771":{"position":[[484,10]]},"773":{"position":[[709,10]]}},"keywords":{}}],["notebook.a",{"_index":1791,"title":{},"content":{"173":{"position":[[66,10]]},"743":{"position":[[66,10]]}},"keywords":{}}],["notebook.readthedocs.io/en/stable/security.html",{"_index":2036,"title":{},"content":{"213":{"position":[[321,48]]},"762":{"position":[[321,48]]}},"keywords":{}}],["notebook/default/t",{"_index":925,"title":{},"content":{"103":{"position":[[349,23]]},"705":{"position":[[349,23]]}},"keywords":{}}],["notebook/experiments/model",{"_index":2054,"title":{},"content":{"215":{"position":[[1997,26]]},"785":{"position":[[1997,26]]}},"keywords":{}}],["notebook_1597931805405_0001",{"_index":923,"title":{},"content":{"103":{"position":[[245,30]]},"705":{"position":[[245,30]]}},"keywords":{}}],["notebookid",{"_index":922,"title":{},"content":{"103":{"position":[[231,13]]},"705":{"position":[[231,13]]}},"keywords":{}}],["notebookid\":\"notebook_1597931805405_0001",{"_index":891,"title":{},"content":{"100":{"position":[[482,43]]},"101":{"position":[[224,43]]},"102":{"position":[[217,43]]},"702":{"position":[[482,43]]},"703":{"position":[[224,43]]},"704":{"position":[[217,43]]}},"keywords":{}}],["notebookid\":\"notebook_1626160071451_0001",{"_index":3539,"title":{},"content":{"479":{"position":[[442,43]]},"482":{"position":[[206,43]]},"485":{"position":[[194,43]]},"488":{"position":[[201,43]]},"1011":{"position":[[442,43]]},"1014":{"position":[[206,43]]},"1017":{"position":[[194,43]]},"1020":{"position":[[201,43]]}},"keywords":{}}],["notebookmeta",{"_index":3536,"title":{},"content":{"478":{"position":[[76,12],[232,13]]},"1010":{"position":[[76,12],[232,13]]}},"keywords":{}}],["notebookpodspec",{"_index":3537,"title":{},"content":{"478":{"position":[[189,15],[415,16]]},"1010":{"position":[[189,15],[415,16]]}},"keywords":{}}],["notebookrestapi",{"_index":3622,"title":{},"content":{"511":{"position":[[218,15],[782,16]]}},"keywords":{}}],["notebookserver#onmessag",{"_index":2262,"title":{},"content":{"276":{"position":[[89,26]]},"847":{"position":[[89,26]]}},"keywords":{}}],["notebookspec",{"_index":3535,"title":{},"content":{"478":{"position":[[0,12],[30,13]]},"1010":{"position":[[0,12],[30,13]]}},"keywords":{}}],["notebookto",{"_index":344,"title":{},"content":{"21":{"position":[[145,10]]},"621":{"position":[[145,10]]}},"keywords":{}}],["notebook、python、r、scala、tensorflow",{"_index":676,"title":{},"content":{"55":{"position":[[94,34]]},"647":{"position":[[94,34]]}},"keywords":{}}],["notic",{"_index":2416,"title":{},"content":{"316":{"position":[[169,6]]},"317":{"position":[[240,6]]},"491":{"position":[[138,8]]},"511":{"position":[[1154,7]]},"1005":{"position":[[138,8]]}},"keywords":{}}],["notice:if",{"_index":2804,"title":{},"content":{"384":{"position":[[566,9]]},"911":{"position":[[566,9]]}},"keywords":{}}],["notif",{"_index":1399,"title":{},"content":{"141":{"position":[[2033,12]]}},"keywords":{}}],["notifi",{"_index":2258,"title":{},"content":{"275":{"position":[[104,8]]},"277":{"position":[[25,9]]},"846":{"position":[[104,8]]},"848":{"position":[[25,9]]}},"keywords":{}}],["novic",{"_index":654,"title":{},"content":{"35":{"position":[[3239,7]]},"627":{"position":[[3239,7]]}},"keywords":{}}],["now",{"_index":1619,"title":{},"content":{"159":{"position":[[2801,3]]},"225":{"position":[[178,3]]},"352":{"position":[[1333,3]]},"389":{"position":[[14693,3],[30242,3]]},"396":{"position":[[19,3]]},"402":{"position":[[89,3]]},"591":{"position":[[83,3],[259,4]]},"729":{"position":[[2801,3]]},"810":{"position":[[199,3]]},"916":{"position":[[14693,3],[30242,3]]},"923":{"position":[[19,3]]},"929":{"position":[[89,3]]},"1117":{"position":[[83,3],[259,4]]}},"keywords":{}}],["nowaday",{"_index":1566,"title":{},"content":{"159":{"position":[[148,9]]},"729":{"position":[[148,9]]}},"keywords":{}}],["npm",{"_index":2326,"title":{},"content":{"301":{"position":[[206,3],[263,3]]},"868":{"position":[[190,3],[247,3]]}},"keywords":{}}],["nproc",{"_index":2750,"title":{},"content":{"375":{"position":[[979,8],[1068,8],[1090,8]]},"902":{"position":[[979,8],[1068,8],[1090,8]]}},"keywords":{}}],["ns",{"_index":4238,"title":{},"content":{"869":{"position":[[1003,2]]}},"keywords":{}}],["ntpd",{"_index":522,"title":{},"content":{"28":{"position":[[1230,4]]},"546":{"position":[[1230,4]]},"616":{"position":[[1230,4]]},"1072":{"position":[[1230,4]]}},"keywords":{}}],["ntvqp",{"_index":101,"title":{},"content":{"7":{"position":[[289,5]]},"596":{"position":[[289,5]]}},"keywords":{}}],["null",{"_index":776,"title":{},"content":{"83":{"position":[[168,5],[185,5],[311,4],[449,4],[516,4]]},"84":{"position":[[203,5],[220,5]]},"93":{"position":[[313,5],[335,5],[676,5],[698,5],[1039,5],[1061,5],[1403,5],[1425,5]]},"94":{"position":[[321,5],[343,5]]},"95":{"position":[[390,5]]},"96":{"position":[[250,5]]},"97":{"position":[[300,5]]},"103":{"position":[[875,5],[890,4]]},"110":{"position":[[642,5]]},"112":{"position":[[349,5]]},"113":{"position":[[251,5]]},"115":{"position":[[289,5]]},"682":{"position":[[168,5],[185,5],[311,4],[449,4],[516,4]]},"683":{"position":[[203,5],[220,5]]},"705":{"position":[[875,5],[890,4]]}},"keywords":{}}],["num",{"_index":383,"title":{},"content":{"23":{"position":[[693,3],[1032,3]]},"541":{"position":[[693,3],[1032,3]]},"566":{"position":[[154,3],[370,3],[706,3]]},"568":{"position":[[924,3]]},"570":{"position":[[516,3],[562,3],[10013,3]]},"580":{"position":[[731,3]]},"611":{"position":[[693,3],[1032,3]]},"1067":{"position":[[693,3],[1032,3]]},"1086":{"position":[[154,3],[370,3],[706,3]]},"1088":{"position":[[924,3]]},"1090":{"position":[[516,3],[562,3],[10013,3]]},"1106":{"position":[[731,3]]}},"keywords":{}}],["num_epoch",{"_index":1776,"title":{},"content":{"171":{"position":[[1772,13]]},"199":{"position":[[704,13]]},"741":{"position":[[1784,13]]},"782":{"position":[[704,13]]}},"keywords":{}}],["num_p",{"_index":375,"title":{},"content":{"23":{"position":[[461,6]]},"541":{"position":[[461,6]]},"579":{"position":[[476,6]]},"584":{"position":[[443,6]]},"589":{"position":[[535,6]]},"590":{"position":[[790,6]]},"611":{"position":[[461,6]]},"1067":{"position":[[461,6]]},"1105":{"position":[[476,6]]},"1110":{"position":[[443,6]]},"1115":{"position":[[535,6]]},"1116":{"position":[[790,6]]}},"keywords":{}}],["num_schedul",{"_index":4203,"title":{},"content":{"590":{"position":[[411,14]]},"1116":{"position":[[411,14]]}},"keywords":{}}],["num_schedulers=1",{"_index":4187,"title":{},"content":{"589":{"position":[[718,16]]},"1115":{"position":[[718,16]]}},"keywords":{}}],["num_work",{"_index":388,"title":{},"content":{"23":{"position":[[765,11]]},"389":{"position":[[1081,11],[1550,11]]},"541":{"position":[[765,11]]},"570":{"position":[[283,11]]},"579":{"position":[[418,11]]},"584":{"position":[[385,11]]},"585":{"position":[[342,11]]},"589":{"position":[[339,11]]},"590":{"position":[[605,11]]},"611":{"position":[[765,11]]},"916":{"position":[[1081,11],[1550,11]]},"1067":{"position":[[765,11]]},"1090":{"position":[[283,11]]},"1105":{"position":[[418,11]]},"1110":{"position":[[385,11]]},"1111":{"position":[[342,11]]},"1115":{"position":[[339,11]]},"1116":{"position":[[605,11]]}},"keywords":{}}],["numb",{"_index":526,"title":{},"content":{"29":{"position":[[7,6],[66,6]]},"34":{"position":[[63,6]]},"122":{"position":[[306,6]]},"204":{"position":[[27,6]]},"248":{"position":[[666,6],[723,6]]},"331":{"position":[[1686,6],[1942,6]]},"338":{"position":[[337,6]]},"437":{"position":[[963,7]]},"460":{"position":[[1176,7]]},"519":{"position":[[58,7]]},"547":{"position":[[7,6],[66,6]]},"617":{"position":[[7,6],[66,6]]},"626":{"position":[[63,6]]},"690":{"position":[[306,6]]},"753":{"position":[[27,6]]},"818":{"position":[[666,6],[723,6]]},"964":{"position":[[963,7]]},"987":{"position":[[1176,7]]},"1059":{"position":[[58,7]]},"1073":{"position":[[7,6],[66,6]]}},"keywords":{}}],["numpi",{"_index":3706,"title":{},"content":{"549":{"position":[[880,5]]},"553":{"position":[[903,5]]},"559":{"position":[[1008,5]]},"1075":{"position":[[880,5]]},"1079":{"position":[[903,5]]},"1094":{"position":[[1008,5]]}},"keywords":{}}],["nvidia",{"_index":2674,"title":{},"content":{"369":{"position":[[520,6],[535,6]]},"406":{"position":[[823,6],[863,6],[937,6]]},"892":{"position":[[520,6],[535,6]]}},"keywords":{}}],["nvidia/cuda:10.0",{"_index":2716,"title":{},"content":{"375":{"position":[[115,16],[405,16]]},"553":{"position":[[395,16]]},"902":{"position":[[115,16],[405,16]]},"1079":{"position":[[395,16]]}},"keywords":{}}],["nvidia/k8",{"_index":3248,"title":{},"content":{"406":{"position":[[755,10]]}},"keywords":{}}],["o",{"_index":511,"title":{},"content":{"28":{"position":[[939,1]]},"331":{"position":[[1471,1],[1480,1]]},"546":{"position":[[939,1]]},"553":{"position":[[664,1],[682,1]]},"559":{"position":[[843,1]]},"616":{"position":[[939,1]]},"1072":{"position":[[939,1]]},"1079":{"position":[[664,1],[682,1]]},"1094":{"position":[[843,1]]}},"keywords":{}}],["o)kay/(q)uit",{"_index":2492,"title":{},"content":{"331":{"position":[[1456,14]]}},"keywords":{}}],["oasconf",{"_index":3626,"title":{},"content":{"511":{"position":[[318,9]]}},"keywords":{}}],["obfusc",{"_index":286,"title":{},"content":{"17":{"position":[[709,10],[842,11],[1176,10]]},"609":{"position":[[709,10],[842,11],[1176,10]]}},"keywords":{}}],["object",{"_index":1481,"title":{"215":{"position":[[11,7]]},"216":{"position":[[45,7]]},"785":{"position":[[11,7]]},"786":{"position":[[45,7]]}},"content":{"152":{"position":[[17,6],[176,7]]},"154":{"position":[[828,6]]},"176":{"position":[[20,7]]},"182":{"position":[[136,6]]},"194":{"position":[[1010,6]]},"196":{"position":[[422,6]]},"215":{"position":[[1076,8]]},"216":{"position":[[0,6]]},"218":{"position":[[22,8],[54,8]]},"570":{"position":[[880,6],[10360,6],[16431,6]]},"722":{"position":[[17,6],[176,7]]},"724":{"position":[[828,6]]},"746":{"position":[[20,7]]},"765":{"position":[[136,6]]},"777":{"position":[[1290,6]]},"779":{"position":[[422,6]]},"785":{"position":[[1076,8]]},"786":{"position":[[0,6]]},"788":{"position":[[22,8],[54,8]]},"1090":{"position":[[880,6],[10360,6],[16431,6]]}},"keywords":{}}],["oblig",{"_index":1311,"title":{},"content":{"133":{"position":[[2546,7]]}},"keywords":{}}],["obtain",{"_index":1374,"title":{},"content":{"141":{"position":[[107,6]]}},"keywords":{}}],["octob",{"_index":1033,"title":{},"content":{"107":{"position":[[3745,7]]}},"keywords":{}}],["off",{"_index":1667,"title":{},"content":{"162":{"position":[[467,5],[843,10]]},"175":{"position":[[141,8]]},"732":{"position":[[467,5],[843,10]]},"745":{"position":[[141,8]]}},"keywords":{}}],["offic",{"_index":1052,"title":{},"content":{"107":{"position":[[4867,6]]}},"keywords":{}}],["offici",{"_index":1138,"title":{"353":{"position":[[3,10]]},"356":{"position":[[11,8]]}},"content":{"107":{"position":[[9275,8]]},"133":{"position":[[480,10],[1164,8],[1957,8],[2098,8]]},"141":{"position":[[2185,10]]},"187":{"position":[[175,8]]},"334":{"position":[[1126,8]]},"770":{"position":[[175,8]]}},"keywords":{}}],["offlin",{"_index":1638,"title":{},"content":{"160":{"position":[[524,7]]},"171":{"position":[[31,7],[225,7]]},"173":{"position":[[254,7]]},"189":{"position":[[586,7],[649,7]]},"190":{"position":[[233,7]]},"730":{"position":[[524,7]]},"741":{"position":[[31,7],[225,7]]},"743":{"position":[[255,7]]},"772":{"position":[[586,7],[649,7]]},"773":{"position":[[233,7]]}},"keywords":{}}],["ok",{"_index":704,"title":{},"content":{"71":{"position":[[581,5]]},"72":{"position":[[130,5]]},"73":{"position":[[154,5]]},"74":{"position":[[477,5]]},"75":{"position":[[157,5]]},"77":{"position":[[621,5]]},"78":{"position":[[768,5]]},"79":{"position":[[128,5]]},"80":{"position":[[163,5]]},"81":{"position":[[659,5]]},"82":{"position":[[166,5]]},"83":{"position":[[138,5]]},"84":{"position":[[173,5]]},"93":{"position":[[1702,5]]},"94":{"position":[[616,5]]},"95":{"position":[[407,5]]},"96":{"position":[[267,5]]},"97":{"position":[[317,5]]},"103":{"position":[[140,5]]},"110":{"position":[[740,5]]},"111":{"position":[[432,5]]},"112":{"position":[[366,5]]},"113":{"position":[[268,5]]},"115":{"position":[[306,5]]},"331":{"position":[[2217,4]]},"663":{"position":[[581,5]]},"664":{"position":[[130,5]]},"665":{"position":[[154,5]]},"666":{"position":[[477,5]]},"667":{"position":[[157,5]]},"676":{"position":[[621,5]]},"677":{"position":[[768,5]]},"678":{"position":[[128,5]]},"679":{"position":[[163,5]]},"680":{"position":[[659,5]]},"681":{"position":[[166,5]]},"682":{"position":[[138,5]]},"683":{"position":[[173,5]]},"705":{"position":[[140,5]]}},"keywords":{}}],["old",{"_index":171,"title":{"372":{"position":[[0,3]]},"899":{"position":[[0,3]]}},"content":{"12":{"position":[[34,3]]},"231":{"position":[[848,3]]},"604":{"position":[[34,3]]},"794":{"position":[[1101,3]]}},"keywords":{}}],["on",{"_index":1025,"title":{},"content":{"107":{"position":[[3448,3],[9005,3],[9188,3]]},"130":{"position":[[210,3]]},"141":{"position":[[880,3]]},"143":{"position":[[51,3]]},"153":{"position":[[175,3]]},"158":{"position":[[118,3]]},"159":{"position":[[1287,3],[1609,3],[2031,3]]},"168":{"position":[[0,3],[30,3],[116,3],[418,3]]},"171":{"position":[[486,3]]},"173":{"position":[[110,3]]},"182":{"position":[[1522,3],[1543,3]]},"193":{"position":[[401,3]]},"196":{"position":[[717,5]]},"223":{"position":[[61,3]]},"229":{"position":[[887,3],[966,3],[1127,3]]},"300":{"position":[[572,3]]},"315":{"position":[[84,3]]},"332":{"position":[[493,4]]},"387":{"position":[[66,4]]},"698":{"position":[[210,3]]},"713":{"position":[[51,3]]},"723":{"position":[[175,3]]},"728":{"position":[[118,3]]},"729":{"position":[[1287,3],[1609,3],[2031,3]]},"738":{"position":[[0,3],[30,3],[116,3],[418,3]]},"741":{"position":[[486,3]]},"743":{"position":[[110,3]]},"765":{"position":[[1522,3],[1543,3]]},"776":{"position":[[401,3]]},"779":{"position":[[717,5]]},"792":{"position":[[887,3],[966,3],[1128,3]]},"808":{"position":[[61,3]]},"914":{"position":[[66,4]]}},"keywords":{}}],["on_epoch_end(self",{"_index":3373,"title":{},"content":{"415":{"position":[[2012,18]]},"942":{"position":[[2030,18]]}},"keywords":{}}],["onboard",{"_index":1817,"title":{},"content":{"176":{"position":[[738,7]]},"746":{"position":[[739,7]]}},"keywords":{}}],["onc",{"_index":76,"title":{},"content":{"7":{"position":[[0,4]]},"21":{"position":[[0,4],[262,4]]},"135":{"position":[[338,4]]},"154":{"position":[[317,4]]},"159":{"position":[[1500,5]]},"196":{"position":[[776,4]]},"201":{"position":[[771,4]]},"208":{"position":[[554,4]]},"213":{"position":[[40,4]]},"217":{"position":[[175,4]]},"230":{"position":[[955,4]]},"570":{"position":[[0,4]]},"596":{"position":[[0,4]]},"621":{"position":[[0,4],[262,4]]},"707":{"position":[[338,4]]},"724":{"position":[[317,4]]},"729":{"position":[[1500,5]]},"750":{"position":[[772,4]]},"757":{"position":[[554,4]]},"762":{"position":[[40,4]]},"779":{"position":[[776,4]]},"787":{"position":[[175,4]]},"793":{"position":[[955,4]]},"1090":{"position":[[0,4]]}},"keywords":{}}],["ongo",{"_index":1958,"title":{},"content":{"195":{"position":[[177,7]]},"778":{"position":[[177,7]]}},"keywords":{}}],["onlin",{"_index":1637,"title":{},"content":{"160":{"position":[[506,6]]},"173":{"position":[[230,6]]},"248":{"position":[[138,6]]},"259":{"position":[[199,6],[549,6]]},"730":{"position":[[506,6]]},"743":{"position":[[231,6]]},"818":{"position":[[138,6]]},"830":{"position":[[199,6],[549,6]]},"1061":{"position":[[20,6]]}},"keywords":{}}],["only.docker/tensorflow/with",{"_index":3780,"title":{},"content":{"560":{"position":[[216,27]]},"1095":{"position":[[216,27]]}},"keywords":{}}],["onlymast",{"_index":3577,"title":{"501":{"position":[[17,11]]},"1028":{"position":[[17,11]]}},"content":{},"keywords":{}}],["onnx",{"_index":1608,"title":{},"content":{"159":{"position":[[2387,5]]},"729":{"position":[[2387,5]]}},"keywords":{}}],["oozi",{"_index":1650,"title":{},"content":{"161":{"position":[[531,6]]},"731":{"position":[[531,6]]}},"keywords":{}}],["open",{"_index":154,"title":{"9":{"position":[[0,4]]},"598":{"position":[[0,4]]}},"content":{"9":{"position":[[0,4]]},"33":{"position":[[256,4]]},"35":{"position":[[741,4],[3748,4]]},"53":{"position":[[124,4]]},"55":{"position":[[1710,6]]},"107":{"position":[[10665,4]]},"141":{"position":[[1960,4]]},"159":{"position":[[351,4],[572,4],[1168,4],[1700,4],[1975,4],[2197,4],[2535,4]]},"161":{"position":[[573,4]]},"298":{"position":[[351,4]]},"308":{"position":[[51,4]]},"384":{"position":[[981,4]]},"402":{"position":[[101,4]]},"407":{"position":[[1561,4]]},"417":{"position":[[0,4]]},"493":{"position":[[0,4]]},"511":{"position":[[7,4]]},"598":{"position":[[0,4]]},"625":{"position":[[256,4]]},"627":{"position":[[741,4],[3748,4]]},"645":{"position":[[124,4]]},"647":{"position":[[1710,6]]},"729":{"position":[[351,4],[572,4],[1168,4],[1700,4],[1975,4],[2197,4],[2535,4]]},"731":{"position":[[573,4]]},"865":{"position":[[354,4]]},"874":{"position":[[51,4]]},"911":{"position":[[981,4]]},"929":{"position":[[101,4]]},"934":{"position":[[1581,4]]},"940":{"position":[[121,4]]},"944":{"position":[[0,4]]},"1007":{"position":[[0,4]]},"1050":{"position":[[7,4]]}},"keywords":{}}],["openapi(oa",{"_index":3627,"title":{},"content":{"511":{"position":[[357,13]]}},"keywords":{}}],["openjdk",{"_index":2725,"title":{},"content":{"375":{"position":[[542,7],[1211,7],[1308,7]]},"389":{"position":[[453,7]]},"549":{"position":[[1049,7],[1104,7]]},"553":{"position":[[1683,7]]},"559":{"position":[[1320,7]]},"580":{"position":[[788,7],[893,7]]},"585":{"position":[[498,7],[603,7]]},"902":{"position":[[542,7],[1211,7],[1308,7]]},"916":{"position":[[453,7]]},"1075":{"position":[[1049,7],[1104,7]]},"1079":{"position":[[1683,7]]},"1094":{"position":[[1320,7]]},"1106":{"position":[[788,7],[893,7]]},"1111":{"position":[[498,7],[603,7]]}},"keywords":{}}],["openssh",{"_index":2885,"title":{},"content":{"389":{"position":[[2249,7],[2264,7],[2279,7],[3141,7],[3156,7],[3171,7],[5010,7],[6139,7],[6260,7],[9981,7],[10017,11],[10081,7],[11740,7],[11781,11],[11850,7],[11935,7],[11971,11],[12035,7],[13977,7],[16366,7],[16422,7],[18091,7],[18106,7],[18121,7],[18965,7],[18980,7],[18995,7],[20834,7],[21857,7],[21978,7],[25699,7],[25735,11],[25799,7],[27289,7],[27330,11],[27399,7],[27484,7],[27520,11],[27584,7],[29526,7],[31220,7],[31276,7]]},"916":{"position":[[2249,7],[2264,7],[2279,7],[3141,7],[3156,7],[3171,7],[5010,7],[6139,7],[6260,7],[9981,7],[10017,11],[10081,7],[11740,7],[11781,11],[11850,7],[11935,7],[11971,11],[12035,7],[13977,7],[16366,7],[16422,7],[18091,7],[18106,7],[18121,7],[18965,7],[18980,7],[18995,7],[20834,7],[21857,7],[21978,7],[25699,7],[25735,11],[25799,7],[27289,7],[27330,11],[27399,7],[27484,7],[27520,11],[27584,7],[29526,7],[31220,7],[31276,7]]}},"keywords":{}}],["openssl",{"_index":2922,"title":{},"content":{"389":{"position":[[2797,7],[2820,7],[18639,7],[18662,7]]},"916":{"position":[[2797,7],[2820,7],[18639,7],[18662,7]]}},"keywords":{}}],["oper",{"_index":96,"title":{"303":{"position":[[8,8]]}},"content":{"7":{"position":[[217,8],[420,8]]},"31":{"position":[[415,9]]},"35":{"position":[[625,10]]},"107":{"position":[[74,9],[431,9],[526,8],[722,8]]},"163":{"position":[[691,10]]},"176":{"position":[[571,10],[677,10]]},"194":{"position":[[927,8],[993,9],[1082,8]]},"212":{"position":[[70,10]]},"216":{"position":[[400,10]]},"231":{"position":[[377,10]]},"246":{"position":[[337,9]]},"248":{"position":[[567,9],[1025,9]]},"253":{"position":[[10,8]]},"259":{"position":[[335,10]]},"261":{"position":[[182,7]]},"263":{"position":[[359,9]]},"269":{"position":[[547,9]]},"300":{"position":[[545,8]]},"362":{"position":[[4,8]]},"389":{"position":[[3425,10],[19249,10]]},"411":{"position":[[95,8],[243,8]]},"412":{"position":[[197,8],[408,8],[620,8]]},"596":{"position":[[217,8],[420,8]]},"623":{"position":[[415,9]]},"627":{"position":[[625,10]]},"733":{"position":[[691,10]]},"746":{"position":[[572,10],[678,10]]},"761":{"position":[[70,10]]},"777":{"position":[[1207,8],[1273,9],[1362,8]]},"786":{"position":[[400,10]]},"794":{"position":[[827,10]]},"816":{"position":[[337,9]]},"818":{"position":[[567,9],[1025,9]]},"823":{"position":[[10,8]]},"830":{"position":[[335,10]]},"832":{"position":[[182,7]]},"834":{"position":[[359,9]]},"840":{"position":[[547,9]]},"869":{"position":[[378,9],[751,9],[813,8],[846,9],[869,8],[910,8],[1635,8],[1669,9],[1735,8]]},"884":{"position":[[4,8]]},"916":{"position":[[3425,10],[19249,10]]},"939":{"position":[[201,8],[584,8]]}},"keywords":{}}],["operator/blob/master/examples/v1/distribution_strategy/kera",{"_index":3323,"title":{},"content":{"415":{"position":[[209,60]]},"942":{"position":[[209,60]]}},"keywords":{}}],["opt",{"_index":242,"title":{},"content":{"16":{"position":[[323,4]]},"608":{"position":[[323,4]]}},"keywords":{}}],["opt/anaconda3/envs/conda",{"_index":1898,"title":{},"content":{"188":{"position":[[409,25]]},"771":{"position":[[409,25]]}},"keywords":{}}],["opt/conda",{"_index":3727,"title":{},"content":{"553":{"position":[[809,10]]},"1079":{"position":[[809,10]]}},"keywords":{}}],["opt/conda/bin/conda",{"_index":3728,"title":{},"content":{"553":{"position":[[848,20],[965,20],[1027,20]]},"1079":{"position":[[848,20],[965,20],[1027,20]]}},"keywords":{}}],["opt/conda/bin:$path",{"_index":3737,"title":{},"content":{"553":{"position":[[1067,20]]},"1079":{"position":[[1067,20]]}},"keywords":{}}],["opt/kaldi",{"_index":2746,"title":{},"content":{"375":{"position":[[882,10],[901,10]]},"902":{"position":[[882,10],[901,10]]}},"keywords":{}}],["opt/kaldi/egs/mul",{"_index":2850,"title":{},"content":{"389":{"position":[[1190,18],[1261,18],[1470,18]]},"916":{"position":[[1190,18],[1261,18],[1470,18]]}},"keywords":{}}],["opt/kaldi/egs/thchs30/data",{"_index":2846,"title":{},"content":{"389":{"position":[[988,27]]},"916":{"position":[[988,27]]}},"keywords":{}}],["opt/kaldi/egs/thchs30/s5",{"_index":2851,"title":{},"content":{"389":{"position":[[1233,27]]},"916":{"position":[[1233,27]]}},"keywords":{}}],["opt/kaldi/egs/thchs30/s5/cmd.sh",{"_index":2820,"title":{},"content":{"386":{"position":[[627,32]]},"913":{"position":[[627,32]]}},"keywords":{}}],["opt/kaldi/src",{"_index":2751,"title":{},"content":{"375":{"position":[[996,14]]},"902":{"position":[[996,14]]}},"keywords":{}}],["opt/kaldi/tool",{"_index":2747,"title":{},"content":{"375":{"position":[[920,16]]},"902":{"position":[[920,16]]}},"keywords":{}}],["opt/pytorch",{"_index":3740,"title":{},"content":{"553":{"position":[[1187,12],[1473,12]]},"1079":{"position":[[1187,12],[1473,12]]}},"keywords":{}}],["option",{"_index":9,"title":{"392":{"position":[[21,10]]},"395":{"position":[[17,10]]},"568":{"position":[[0,10]]},"919":{"position":[[21,10]]},"922":{"position":[[17,10]]},"1088":{"position":[[0,10]]}},"content":{"1":{"position":[[45,9]]},"152":{"position":[[272,8],[412,8]]},"224":{"position":[[106,8]]},"225":{"position":[[110,8]]},"226":{"position":[[402,8]]},"283":{"position":[[14,11]]},"313":{"position":[[93,9]]},"328":{"position":[[115,9]]},"331":{"position":[[1344,10]]},"383":{"position":[[719,8]]},"391":{"position":[[80,6]]},"401":{"position":[[173,10]]},"406":{"position":[[582,10]]},"415":{"position":[[1679,7]]},"430":{"position":[[228,9]]},"601":{"position":[[45,9]]},"722":{"position":[[272,8],[412,8]]},"809":{"position":[[106,8]]},"810":{"position":[[131,8]]},"811":{"position":[[402,8]]},"854":{"position":[[14,11]]},"910":{"position":[[719,8]]},"918":{"position":[[80,6]]},"928":{"position":[[173,10]]},"933":{"position":[[582,10]]},"942":{"position":[[1697,7]]},"957":{"position":[[228,9]]},"1064":{"position":[[1830,7],[1913,6]]}},"keywords":{}}],["optional)envvar",{"_index":3246,"title":{},"content":{"406":{"position":[[565,16]]},"933":{"position":[[565,16]]}},"keywords":{}}],["optional[bool]=fal",{"_index":3578,"title":{"501":{"position":[[29,21]]},"1028":{"position":[[29,21]]}},"content":{},"keywords":{}}],["optional[int]=10",{"_index":3586,"title":{"503":{"position":[[43,17]]},"1030":{"position":[[43,17]]}},"content":{},"keywords":{}}],["optional[str]=non",{"_index":3570,"title":{"499":{"position":[[25,19]]},"1026":{"position":[[25,19]]}},"content":{},"keywords":{}}],["optional,modifi",{"_index":2819,"title":{},"content":{"386":{"position":[[611,15]]},"913":{"position":[[611,15]]}},"keywords":{}}],["options.experimental_distribute.auto_shard_polici",{"_index":3367,"title":{},"content":{"415":{"position":[[1707,49]]},"942":{"position":[[1725,49]]}},"keywords":{}}],["orchestr",{"_index":1664,"title":{},"content":{"162":{"position":[[379,11]]},"732":{"position":[[379,11]]}},"keywords":{}}],["ord",{"_index":1030,"title":{},"content":{"107":{"position":[[3569,5]]},"133":{"position":[[1079,7]]},"151":{"position":[[124,5]]},"172":{"position":[[124,5]]},"252":{"position":[[3,5]]},"273":{"position":[[912,5]]},"274":{"position":[[3,5]]},"721":{"position":[[124,5]]},"742":{"position":[[124,5]]},"822":{"position":[[3,5]]},"844":{"position":[[912,5]]},"845":{"position":[[3,5]]}},"keywords":{}}],["org.apache.hadoop.service.abstractservic",{"_index":424,"title":{},"content":{"25":{"position":[[1639,42]]},"543":{"position":[[1639,42]]},"613":{"position":[[1639,42]]},"1069":{"position":[[1639,42]]}},"keywords":{}}],["org.apache.hadoop.service.abstractservice.init(abstractservice.java:164",{"_index":419,"title":{},"content":{"25":{"position":[[1350,72]]},"543":{"position":[[1350,72]]},"613":{"position":[[1350,72]]},"1069":{"position":[[1350,72]]}},"keywords":{}}],["org.apache.hadoop.util.shell$shellcommandexecutor.execute(shell.java:1213",{"_index":458,"title":{},"content":{"26":{"position":[[459,74]]},"544":{"position":[[459,74]]},"614":{"position":[[459,74]]},"1070":{"position":[[459,74]]}},"keywords":{}}],["org.apache.hadoop.util.shell.run(shell.java:901",{"_index":457,"title":{},"content":{"26":{"position":[[407,48]]},"544":{"position":[[407,48]]},"614":{"position":[[407,48]]},"1070":{"position":[[407,48]]}},"keywords":{}}],["org.apache.hadoop.util.shell.runcommand(shell.java:938",{"_index":456,"title":{},"content":{"26":{"position":[[348,55]]},"544":{"position":[[348,55]]},"614":{"position":[[348,55]]},"1070":{"position":[[348,55]]}},"keywords":{}}],["org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.privileged.privilegedoperationexecutor",{"_index":447,"title":{},"content":{"26":{"position":[[29,104]]},"544":{"position":[[29,104]]},"614":{"position":[[29,104]]},"1070":{"position":[[29,104]]}},"keywords":{}}],["org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.cgroupscpuresourcehandlerimpl.bootstrap(cgroupscpuresourcehandlerimpl.java:87",{"_index":415,"title":{},"content":{"25":{"position":[[857,153]]},"543":{"position":[[857,153]]},"613":{"position":[[857,153]]},"1069":{"position":[[857,153]]}},"keywords":{}}],["org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.cgroupscpuresourcehandlerimpl.bootstrap(cgroupscpuresourcehandlerimpl.java:98",{"_index":414,"title":{},"content":{"25":{"position":[[700,153]]},"543":{"position":[[700,153]]},"613":{"position":[[700,153]]},"1069":{"position":[[700,153]]}},"keywords":{}}],["org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.cgroupshandlerimpl.initializecgroupcontroller(cgroupshandlerimpl.java:377",{"_index":413,"title":{},"content":{"25":{"position":[[547,149]]},"543":{"position":[[547,149]]},"613":{"position":[[547,149]]},"1069":{"position":[[547,149]]}},"keywords":{}}],["org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.cgroupshandlerimpl.initializepremountedcgroupcontroller(cgroupshandlerimpl.java:425",{"_index":412,"title":{},"content":{"25":{"position":[[384,159]]},"543":{"position":[[384,159]]},"613":{"position":[[384,159]]},"1069":{"position":[[384,159]]}},"keywords":{}}],["org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.resourcehandlerchain.bootstrap(resourcehandlerchain.java:58",{"_index":416,"title":{},"content":{"25":{"position":[[1014,135]]},"543":{"position":[[1014,135]]},"613":{"position":[[1014,135]]},"1069":{"position":[[1014,135]]}},"keywords":{}}],["org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.resourcehandlerexcept",{"_index":406,"title":{},"content":{"25":{"position":[[148,100]]},"543":{"position":[[148,100]]},"613":{"position":[[148,100]]},"1069":{"position":[[148,100]]}},"keywords":{}}],["org.apache.hadoop.yarn.server.nodemanager.linuxcontainerexecutor",{"_index":403,"title":{},"content":{"25":{"position":[[30,65]]},"543":{"position":[[30,65]]},"613":{"position":[[30,65]]},"1069":{"position":[[30,65]]}},"keywords":{}}],["org.apache.hadoop.yarn.server.nodemanager.linuxcontainerexecutor.init(linuxcontainerexecutor.java:320",{"_index":417,"title":{},"content":{"25":{"position":[[1153,102]]},"543":{"position":[[1153,102]]},"613":{"position":[[1153,102]]},"1069":{"position":[[1153,102]]}},"keywords":{}}],["org.apache.hadoop.yarn.server.nodemanager.nodemanager.initandstartnodemanager(nodemanager.java:929",{"_index":420,"title":{},"content":{"25":{"position":[[1426,99]]},"543":{"position":[[1426,99]]},"613":{"position":[[1426,99]]},"1069":{"position":[[1426,99]]}},"keywords":{}}],["org.apache.hadoop.yarn.server.nodemanager.nodemanager.main(nodemanager.java:997",{"_index":421,"title":{},"content":{"25":{"position":[[1529,80]]},"543":{"position":[[1529,80]]},"613":{"position":[[1529,80]]},"1069":{"position":[[1529,80]]}},"keywords":{}}],["org.apache.hadoop.yarn.server.nodemanager.nodemanager.serviceinit(nodemanager.java:389",{"_index":418,"title":{},"content":{"25":{"position":[[1259,87]]},"543":{"position":[[1259,87]]},"613":{"position":[[1259,87]]},"1069":{"position":[[1259,87]]}},"keywords":{}}],["org.apache.rat:apach",{"_index":2276,"title":{},"content":{"282":{"position":[[10,21]]},"853":{"position":[[41,21]]}},"keywords":{}}],["org.apache.submarine.client.cli.cli",{"_index":4123,"title":{},"content":{"579":{"position":[[297,35]]},"580":{"position":[[191,35]]},"584":{"position":[[294,35]]},"585":{"position":[[191,35]]},"589":{"position":[[234,35]]},"590":{"position":[[269,35]]},"1105":{"position":[[297,35]]},"1106":{"position":[[191,35]]},"1110":{"position":[[294,35]]},"1111":{"position":[[191,35]]},"1115":{"position":[[234,35]]},"1116":{"position":[[269,35]]}},"keywords":{}}],["org.apache.submarine.server.rest.environmentrestapi",{"_index":3632,"title":{},"content":{"511":{"position":[[598,54]]}},"keywords":{}}],["org.apache.submarine.server.rest.experimentrestapi",{"_index":3631,"title":{},"content":{"511":{"position":[[544,53]]}},"keywords":{}}],["org.apache.submarine.spark.security.api.rangersparksqlext",{"_index":4349,"title":{},"content":{"1064":{"position":[[2032,63]]}},"keywords":{}}],["organ",{"_index":551,"title":{},"content":{"31":{"position":[[482,12]]},"176":{"position":[[1313,14]]},"623":{"position":[[482,12]]},"746":{"position":[[1316,14]]}},"keywords":{}}],["origin",{"_index":1197,"title":{},"content":{"121":{"position":[[421,6],[479,6]]},"126":{"position":[[9,6]]},"231":{"position":[[820,8]]},"346":{"position":[[9,6]]},"689":{"position":[[421,6],[479,6]]},"694":{"position":[[9,6]]},"794":{"position":[[1073,8]]}},"keywords":{}}],["os",{"_index":1462,"title":{},"content":{"151":{"position":[[800,3]]},"181":{"position":[[798,3]]},"330":{"position":[[92,2]]},"375":{"position":[[88,2]]},"549":{"position":[[90,2]]},"553":{"position":[[94,2]]},"559":{"position":[[98,2]]},"721":{"position":[[800,3]]},"764":{"position":[[798,3]]},"902":{"position":[[88,2]]},"1075":{"position":[[90,2]]},"1079":{"position":[[94,2]]},"1094":{"position":[[98,2]]}},"keywords":{}}],["os/bas",{"_index":1854,"title":{},"content":{"181":{"position":[[1465,7]]},"764":{"position":[[1472,7]]}},"keywords":{}}],["os=ubuntu16.04",{"_index":1458,"title":{},"content":{"151":{"position":[[640,16],[1562,16],[1869,16]]},"721":{"position":[[640,16],[1562,16],[1869,16]]}},"keywords":{}}],["oth",{"_index":630,"title":{},"content":{"35":{"position":[[1640,6]]},"133":{"position":[[1617,6],[2591,7]]},"136":{"position":[[90,7]]},"389":{"position":[[14794,7],[30343,7]]},"627":{"position":[[1640,6]]},"708":{"position":[[90,7]]},"916":{"position":[[14794,7],[30343,7]]}},"keywords":{}}],["otherwis",{"_index":1334,"title":{},"content":{"136":{"position":[[309,9]]},"331":{"position":[[233,9]]},"708":{"position":[[309,9]]},"1033":{"position":[[113,10],[224,10]]}},"keywords":{}}],["out",{"_index":963,"title":{"220":{"position":[[11,3]]},"790":{"position":[[11,3]]}},"content":{"107":{"position":[[1089,3],[3120,3],[3779,3],[6203,3]]},"143":{"position":[[14,3]]},"145":{"position":[[387,3]]},"177":{"position":[[245,3]]},"242":{"position":[[28,3]]},"273":{"position":[[1348,4]]},"303":{"position":[[26,3]]},"333":{"position":[[127,4]]},"355":{"position":[[336,3]]},"407":{"position":[[1577,4]]},"512":{"position":[[146,3]]},"574":{"position":[[6,3]]},"575":{"position":[[120,3]]},"713":{"position":[[14,3]]},"715":{"position":[[387,3]]},"747":{"position":[[245,3]]},"805":{"position":[[28,3]]},"844":{"position":[[1348,4]]},"869":{"position":[[878,3],[1781,3]]},"934":{"position":[[1597,4]]},"1051":{"position":[[146,3]]},"1100":{"position":[[6,3]]},"1101":{"position":[[120,3]]}},"keywords":{}}],["outdat",{"_index":1294,"title":{},"content":{"133":{"position":[[1769,8]]}},"keywords":{}}],["output",{"_index":82,"title":{},"content":{"7":{"position":[[80,8]]},"159":{"position":[[900,7]]},"171":{"position":[[875,7],[1638,9]]},"181":{"position":[[436,7],[1907,6],[1940,6],[1991,6]]},"189":{"position":[[1429,7]]},"190":{"position":[[253,6]]},"199":{"position":[[570,9]]},"215":{"position":[[1454,6]]},"331":{"position":[[2355,6]]},"342":{"position":[[139,6]]},"389":{"position":[[1848,7],[1887,6],[17721,6],[32607,6]]},"520":{"position":[[335,6]]},"570":{"position":[[581,7],[10060,7],[16135,7]]},"596":{"position":[[80,8]]},"729":{"position":[[900,7]]},"741":{"position":[[880,7],[1650,9]]},"764":{"position":[[436,7],[1920,6],[1953,6],[2004,6]]},"772":{"position":[[1429,7]]},"773":{"position":[[253,6]]},"782":{"position":[[570,9]]},"785":{"position":[[1454,6]]},"916":{"position":[[1848,7],[1887,6],[17721,6],[32607,6]]},"1090":{"position":[[581,7],[10060,7],[16135,7]]}},"keywords":{}}],["output/log",{"_index":1861,"title":{},"content":{"181":{"position":[[2209,12]]},"764":{"position":[[2222,12]]}},"keywords":{}}],["output=\"/tmp/apach",{"_index":2591,"title":{},"content":{"340":{"position":[[189,19]]}},"keywords":{}}],["output=\"s3://bucket/output",{"_index":1908,"title":{},"content":{"189":{"position":[[464,28],[971,28]]},"772":{"position":[[464,28],[971,28]]}},"keywords":{}}],["output=s3://bucket/output",{"_index":1870,"title":{},"content":{"182":{"position":[[418,25],[1413,25]]},"765":{"position":[[418,25],[1413,25]]}},"keywords":{}}],["output_dim",{"_index":3677,"title":{"520":{"position":[[124,11]]}},"content":{},"keywords":{}}],["outsid",{"_index":1527,"title":{"242":{"position":[[20,7]]},"805":{"position":[[20,7]]}},"content":{"155":{"position":[[209,7]]},"229":{"position":[[1586,7]]},"242":{"position":[[89,7]]},"384":{"position":[[317,7]]},"725":{"position":[[209,7]]},"792":{"position":[[1588,7]]},"805":{"position":[[89,7]]},"911":{"position":[[317,7]]}},"keywords":{}}],["over",{"_index":1000,"title":{},"content":{"107":{"position":[[2182,4],[4646,4],[8776,4]]},"141":{"position":[[1026,5]]}},"keywords":{}}],["overal",{"_index":2001,"title":{},"content":{"201":{"position":[[114,7]]},"750":{"position":[[114,7]]}},"keywords":{}}],["overhead",{"_index":1597,"title":{},"content":{"159":{"position":[[1735,8]]},"162":{"position":[[701,8]]},"729":{"position":[[1735,8]]},"732":{"position":[[701,8]]}},"keywords":{}}],["overrid",{"_index":2781,"title":{},"content":{"383":{"position":[[175,8]]},"910":{"position":[[175,8]]}},"keywords":{}}],["overrul",{"_index":1115,"title":{},"content":{"107":{"position":[[8111,10]]}},"keywords":{}}],["oversight",{"_index":1038,"title":{},"content":{"107":{"position":[[3906,9]]}},"keywords":{}}],["overview",{"_index":1443,"title":{"151":{"position":[[0,8]]},"166":{"position":[[0,8]]},"178":{"position":[[13,8]]},"181":{"position":[[0,8]]},"203":{"position":[[0,8]]},"229":{"position":[[13,8]]},"721":{"position":[[0,8]]},"736":{"position":[[0,8]]},"748":{"position":[[13,8]]},"752":{"position":[[0,8]]},"764":{"position":[[0,8]]},"792":{"position":[[13,8]]}},"content":{"175":{"position":[[37,8]]},"745":{"position":[[37,8]]}},"keywords":{}}],["overwrit",{"_index":1979,"title":{},"content":{"199":{"position":[[974,9]]},"782":{"position":[[974,9]]}},"keywords":{}}],["own",{"_index":1415,"title":{},"content":{"144":{"position":[[479,6]]},"176":{"position":[[216,4]]},"714":{"position":[[479,6]]},"746":{"position":[[216,4]]}},"keywords":{}}],["ownerid",{"_index":885,"title":{},"content":{"100":{"position":[[147,10]]},"478":{"position":[[337,7]]},"479":{"position":[[115,10]]},"702":{"position":[[147,10]]},"1010":{"position":[[337,7]]},"1011":{"position":[[115,10]]}},"keywords":{}}],["ownerid\":\"e9ca23d68d884d4ebb19d07889727da",{"_index":906,"title":{},"content":{"100":{"position":[[819,44]]},"101":{"position":[[561,44]]},"102":{"position":[[552,44]]},"103":{"position":[[608,44]]},"479":{"position":[[782,44]]},"482":{"position":[[529,44]]},"485":{"position":[[517,44]]},"488":{"position":[[547,44]]},"702":{"position":[[819,44]]},"703":{"position":[[561,44]]},"704":{"position":[[552,44]]},"705":{"position":[[608,44]]},"1011":{"position":[[782,44]]},"1014":{"position":[[529,44]]},"1017":{"position":[[517,44]]},"1020":{"position":[[547,44]]}},"keywords":{}}],["p",{"_index":183,"title":{},"content":{"13":{"position":[[174,1],[307,1]]},"389":{"position":[[1188,1]]},"553":{"position":[[807,1]]},"605":{"position":[[174,1],[307,1]]},"916":{"position":[[1188,1]]},"1079":{"position":[[807,1]]}},"keywords":{}}],["p0",{"_index":1725,"title":{},"content":{"170":{"position":[[60,4],[147,4]]},"204":{"position":[[156,5]]},"740":{"position":[[60,4],[147,4]]},"753":{"position":[[156,5]]}},"keywords":{}}],["p0)and",{"_index":2014,"title":{},"content":{"204":{"position":[[356,7]]},"753":{"position":[[356,7]]}},"keywords":{}}],["p0)when",{"_index":2015,"title":{},"content":{"204":{"position":[[465,8]]},"753":{"position":[[465,8]]}},"keywords":{}}],["p1",{"_index":1730,"title":{},"content":{"170":{"position":[[211,4],[265,4],[423,4]]},"740":{"position":[[211,4],[265,4],[423,4]]}},"keywords":{}}],["p1)option",{"_index":2016,"title":{},"content":{"204":{"position":[[560,15]]},"753":{"position":[[560,15]]}},"keywords":{}}],["p2",{"_index":1735,"title":{},"content":{"170":{"position":[[502,4]]},"204":{"position":[[180,5],[646,4]]},"205":{"position":[[191,4]]},"740":{"position":[[502,4]]},"753":{"position":[[180,5],[646,4]]},"754":{"position":[[191,4]]}},"keywords":{}}],["packag",{"_index":613,"title":{"313":{"position":[[25,7]]},"316":{"position":[[42,8]]},"317":{"position":[[21,7],[44,7]]},"337":{"position":[[15,7]]},"340":{"position":[[4,7]]},"341":{"position":[[4,8],[20,7]]},"345":{"position":[[20,7]]},"513":{"position":[[7,7]]},"1052":{"position":[[7,7]]}},"content":{"35":{"position":[[906,7]]},"155":{"position":[[297,8]]},"159":{"position":[[1449,9]]},"281":{"position":[[339,7]]},"283":{"position":[[277,7]]},"300":{"position":[[153,7]]},"306":{"position":[[16,7]]},"313":{"position":[[4,7],[58,8],[82,7],[280,7]]},"314":{"position":[[2086,8],[2154,7]]},"315":{"position":[[257,8],[319,8]]},"324":{"position":[[272,7]]},"325":{"position":[[294,7]]},"328":{"position":[[176,7]]},"338":{"position":[[244,7]]},"340":{"position":[[69,8],[89,8]]},"341":{"position":[[24,8],[131,7],[225,8],[329,7],[516,7],[538,7],[582,7]]},"345":{"position":[[77,7],[170,7]]},"349":{"position":[[116,7],[135,7]]},"363":{"position":[[41,9]]},"372":{"position":[[628,7],[899,7],[1143,7],[1361,7]]},"375":{"position":[[189,9],[1146,8]]},"389":{"position":[[1917,7],[2016,8],[2434,9],[2856,8],[7000,7],[7771,7],[7918,7],[8089,7],[8263,7],[8411,7],[8579,7],[8733,7],[8939,7],[9145,7],[9326,7],[9507,7],[9683,7],[9817,7],[9973,7],[10153,7],[10302,7],[10436,7],[10589,7],[10758,7],[10925,7],[11094,7],[11224,7],[11387,7],[11556,7],[11732,7],[11927,7],[12107,7],[12284,7],[12441,7],[12588,7],[12777,7],[12955,7],[17494,7],[17759,7],[17858,8],[18276,9],[18698,8],[22718,7],[23489,7],[23636,7],[23807,7],[23981,7],[24129,7],[24297,7],[24451,7],[24657,7],[24863,7],[25044,7],[25225,7],[25401,7],[25535,7],[25691,7],[25871,7],[26020,7],[26154,7],[26307,7],[26476,7],[26643,7],[26812,7],[26942,7],[27105,7],[27281,7],[27476,7],[27656,7],[27833,7],[27990,7],[28137,7],[28326,7],[28504,7],[32348,7]]},"511":{"position":[[1186,7]]},"513":{"position":[[135,8],[245,7],[372,7],[475,7]]},"549":{"position":[[163,9],[260,8],[440,8],[800,9],[991,8]]},"553":{"position":[[169,9],[266,8],[1618,8]]},"559":{"position":[[175,9],[266,8],[1255,8]]},"568":{"position":[[798,7]]},"627":{"position":[[906,7]]},"725":{"position":[[297,8]]},"729":{"position":[[1449,9]]},"852":{"position":[[339,7]]},"853":{"position":[[150,7],[238,7],[340,7],[442,7],[543,7],[623,7]]},"854":{"position":[[277,7]]},"867":{"position":[[153,7],[206,7]]},"872":{"position":[[16,7]]},"885":{"position":[[41,9]]},"894":{"position":[[272,7]]},"895":{"position":[[294,7]]},"899":{"position":[[81,7],[352,7],[596,7],[814,7]]},"902":{"position":[[189,9],[1146,8]]},"916":{"position":[[1917,7],[2016,8],[2434,9],[2856,8],[7000,7],[7771,7],[7918,7],[8089,7],[8263,7],[8411,7],[8579,7],[8733,7],[8939,7],[9145,7],[9326,7],[9507,7],[9683,7],[9817,7],[9973,7],[10153,7],[10302,7],[10436,7],[10589,7],[10758,7],[10925,7],[11094,7],[11224,7],[11387,7],[11556,7],[11732,7],[11927,7],[12107,7],[12284,7],[12441,7],[12588,7],[12777,7],[12955,7],[17494,7],[17759,7],[17858,8],[18276,9],[18698,8],[22718,7],[23489,7],[23636,7],[23807,7],[23981,7],[24129,7],[24297,7],[24451,7],[24657,7],[24863,7],[25044,7],[25225,7],[25401,7],[25535,7],[25691,7],[25871,7],[26020,7],[26154,7],[26307,7],[26476,7],[26643,7],[26812,7],[26942,7],[27105,7],[27281,7],[27476,7],[27656,7],[27833,7],[27990,7],[28137,7],[28326,7],[28504,7],[32348,7]]},"1052":{"position":[[135,8],[245,7],[372,7],[475,7]]},"1053":{"position":[[136,7]]},"1075":{"position":[[163,9],[260,8],[440,8],[800,9],[991,8]]},"1079":{"position":[[169,9],[266,8],[1618,8]]},"1088":{"position":[[798,7]]},"1094":{"position":[[175,9],[266,8],[1255,8]]}},"keywords":{}}],["package.if",{"_index":2355,"title":{},"content":{"313":{"position":[[258,10]]}},"keywords":{}}],["package.wheth",{"_index":2352,"title":{},"content":{"313":{"position":[[139,15],[200,15]]}},"keywords":{}}],["package/binari",{"_index":2600,"title":{"342":{"position":[[20,14]]}},"content":{},"keywords":{}}],["package/sha512",{"_index":2601,"title":{"342":{"position":[[35,14]]}},"content":{},"keywords":{}}],["package:submarin",{"_index":2682,"title":{},"content":{"372":{"position":[[81,17]]}},"keywords":{}}],["packagenam",{"_index":3636,"title":{},"content":{"511":{"position":[[926,13]]}},"keywords":{}}],["packages/tensorflow/contrib/learn/python/learn/experiment.pi",{"_index":4069,"title":{},"content":{"572":{"position":[[705,62],[860,62]]},"1092":{"position":[[705,62],[860,62]]}},"keywords":{}}],["packages/tensorflow/contrib/learn/python/learn/learn_runner.pi",{"_index":4064,"title":{},"content":{"572":{"position":[[395,64],[560,64]]},"1092":{"position":[[395,64],[560,64]]}},"keywords":{}}],["packages/tensorflow/python/estimator/estimator.pi",{"_index":4076,"title":{},"content":{"572":{"position":[[1000,51],[1121,51],[1284,51]]},"1092":{"position":[[1000,51],[1121,51],[1284,51]]}},"keywords":{}}],["packages/tensorflow/python/platform/app.pi",{"_index":4058,"title":{},"content":{"572":{"position":[[178,44]]},"1092":{"position":[[178,44]]}},"keywords":{}}],["packages/tensorflow/python/training/sync_replicas_optimizer.pi",{"_index":4091,"title":{},"content":{"572":{"position":[[1548,64]]},"1092":{"position":[[1548,64]]}},"keywords":{}}],["packages/tensorflow/python/util/tf_should_use.pi",{"_index":4095,"title":{},"content":{"572":{"position":[[1708,50],[1868,50],[2031,50]]},"1092":{"position":[[1708,50],[1868,50],[2031,50]]}},"keywords":{}}],["packagev",{"_index":3638,"title":{},"content":{"511":{"position":[[998,17]]}},"keywords":{}}],["pag",{"_index":195,"title":{"305":{"position":[[10,4]]},"871":{"position":[[10,4]]}},"content":{"13":{"position":[[448,4]]},"32":{"position":[[40,4],[121,5]]},"33":{"position":[[32,5]]},"34":{"position":[[41,6]]},"35":{"position":[[15,5],[1169,4],[1197,4]]},"135":{"position":[[217,5]]},"136":{"position":[[469,5]]},"139":{"position":[[442,4]]},"304":{"position":[[392,5]]},"305":{"position":[[25,4]]},"389":{"position":[[1842,5]]},"410":{"position":[[30,4]]},"475":{"position":[[407,5]]},"493":{"position":[[20,4],[113,5]]},"605":{"position":[[448,4]]},"624":{"position":[[40,4],[121,5]]},"625":{"position":[[32,5]]},"626":{"position":[[41,6]]},"627":{"position":[[15,5],[1169,4],[1197,4]]},"707":{"position":[[217,5]]},"708":{"position":[[469,5]]},"711":{"position":[[442,4]]},"870":{"position":[[392,5]]},"871":{"position":[[25,4]]},"916":{"position":[[1842,5]]},"937":{"position":[[30,4]]},"1002":{"position":[[407,5]]},"1007":{"position":[[20,4],[113,5]]}},"keywords":{}}],["page'",{"_index":580,"title":{},"content":{"34":{"position":[[91,6]]},"626":{"position":[[91,6]]}},"keywords":{}}],["pain",{"_index":1572,"title":{"160":{"position":[[29,4]]},"161":{"position":[[0,4]]},"162":{"position":[[0,4]]},"163":{"position":[[0,4]]},"164":{"position":[[0,4]]},"165":{"position":[[0,4]]},"730":{"position":[[29,4]]},"731":{"position":[[0,4]]},"732":{"position":[[0,4]]},"733":{"position":[[0,4]]},"734":{"position":[[0,4]]},"735":{"position":[[0,4]]}},"content":{"159":{"position":[[403,4],[2789,4]]},"163":{"position":[[25,5]]},"729":{"position":[[403,4],[2789,4]]},"733":{"position":[[25,5]]}},"keywords":{}}],["pair",{"_index":2115,"title":{},"content":{"225":{"position":[[490,4]]},"261":{"position":[[425,6]]},"271":{"position":[[55,5]]},"810":{"position":[[543,4]]},"832":{"position":[[425,6]]},"842":{"position":[[55,5]]}},"keywords":{}}],["panda",{"_index":1467,"title":{},"content":{"151":{"position":[[997,7]]},"161":{"position":[[368,6]]},"549":{"position":[[886,6]]},"559":{"position":[[1016,6]]},"721":{"position":[[997,7]]},"731":{"position":[[368,6]]},"1075":{"position":[[886,6]]},"1094":{"position":[[1016,6]]}},"keywords":{}}],["panel",{"_index":3238,"title":{},"content":{"406":{"position":[[92,5]]},"933":{"position":[[92,5]]}},"keywords":{}}],["papach",{"_index":2607,"title":{},"content":{"345":{"position":[[241,7]]}},"keywords":{}}],["par",{"_index":4274,"title":{},"content":{"1034":{"position":[[213,6]]}},"keywords":{}}],["paragraph",{"_index":1931,"title":{},"content":{"190":{"position":[[720,9]]},"773":{"position":[[720,9]]}},"keywords":{}}],["paragraph'",{"_index":1928,"title":{},"content":{"190":{"position":[[577,11]]},"773":{"position":[[577,11]]}},"keywords":{}}],["param",{"_index":841,"title":{},"content":{"91":{"position":[[133,9]]},"200":{"position":[[2657,6]]},"471":{"position":[[125,6]]},"472":{"position":[[82,9]]},"674":{"position":[[133,9]]},"783":{"position":[[2657,6]]},"998":{"position":[[125,6]]},"999":{"position":[[82,9]]},"1036":{"position":[[15,6],[54,6],[148,6]]}},"keywords":{}}],["param_nam",{"_index":4279,"title":{},"content":{"1036":{"position":[[77,11]]}},"keywords":{}}],["paramet",{"_index":225,"title":{"189":{"position":[[62,11]]},"422":{"position":[[0,10]]},"427":{"position":[[0,10]]},"430":{"position":[[0,10]]},"433":{"position":[[0,10]]},"437":{"position":[[0,10]]},"440":{"position":[[0,10]]},"445":{"position":[[0,10]]},"448":{"position":[[0,10]]},"451":{"position":[[0,10]]},"456":{"position":[[0,10]]},"460":{"position":[[0,10]]},"465":{"position":[[0,10]]},"468":{"position":[[0,10]]},"471":{"position":[[0,10]]},"478":{"position":[[0,10]]},"481":{"position":[[0,10]]},"484":{"position":[[0,10]]},"487":{"position":[[0,10]]},"772":{"position":[[62,11]]},"949":{"position":[[0,10]]},"954":{"position":[[0,10]]},"957":{"position":[[0,10]]},"960":{"position":[[0,10]]},"964":{"position":[[0,10]]},"967":{"position":[[0,10]]},"972":{"position":[[0,10]]},"975":{"position":[[0,10]]},"978":{"position":[[0,10]]},"983":{"position":[[0,10]]},"987":{"position":[[0,10]]},"992":{"position":[[0,10]]},"995":{"position":[[0,10]]},"998":{"position":[[0,10]]},"1010":{"position":[[0,10]]},"1013":{"position":[[0,10]]},"1016":{"position":[[0,10]]},"1019":{"position":[[0,10]]}},"content":{"15":{"position":[[203,10]]},"16":{"position":[[328,9],[557,9]]},"86":{"position":[[199,13]]},"89":{"position":[[196,13],[1128,13]]},"156":{"position":[[1072,11]]},"160":{"position":[[343,9]]},"170":{"position":[[300,10],[337,10]]},"171":{"position":[[849,10],[889,11],[2027,9]]},"175":{"position":[[377,10]]},"182":{"position":[[345,10],[1321,10]]},"189":{"position":[[390,9],[894,9],[1357,10],[1390,9]]},"198":{"position":[[97,10]]},"199":{"position":[[50,11],[74,9],[257,9],[993,10],[1033,11]]},"200":{"position":[[432,10],[981,10],[1141,10]]},"389":{"position":[[1642,9],[1704,9],[1755,9],[1811,11],[15730,11]]},"460":{"position":[[187,10],[237,10],[412,9],[471,9],[532,10],[569,10]]},"461":{"position":[[167,13],[1341,13]]},"463":{"position":[[343,13]]},"465":{"position":[[196,10],[246,10]]},"466":{"position":[[172,13],[1371,13]]},"469":{"position":[[367,13]]},"471":{"position":[[157,10]]},"496":{"position":[[22,10]]},"497":{"position":[[21,10]]},"498":{"position":[[42,10]]},"499":{"position":[[34,10]]},"500":{"position":[[33,10]]},"501":{"position":[[88,10]]},"502":{"position":[[21,10]]},"503":{"position":[[50,10]]},"517":{"position":[[174,10]]},"518":{"position":[[23,10],[70,10],[87,9],[110,9]]},"519":{"position":[[66,10]]},"520":{"position":[[33,10]]},"566":{"position":[[228,9],[444,9]]},"568":{"position":[[148,10]]},"569":{"position":[[848,10],[916,10],[984,10]]},"570":{"position":[[187,9],[4748,10],[8963,10],[9761,9]]},"571":{"position":[[359,9]]},"607":{"position":[[203,10]]},"608":{"position":[[328,9],[557,9]]},"669":{"position":[[199,13]]},"672":{"position":[[196,13],[1128,13]]},"726":{"position":[[1072,11]]},"730":{"position":[[343,9]]},"740":{"position":[[300,10],[337,10]]},"741":{"position":[[854,10],[894,11],[2039,9]]},"745":{"position":[[377,10]]},"765":{"position":[[345,10],[1321,10]]},"772":{"position":[[390,9],[894,9],[1357,10],[1390,9]]},"781":{"position":[[97,10]]},"782":{"position":[[50,11],[74,9],[257,9],[993,10],[1033,11]]},"783":{"position":[[432,10],[981,10],[1141,10]]},"916":{"position":[[1642,9],[1704,9],[1755,9],[1811,11],[15730,11]]},"987":{"position":[[187,10],[237,10],[412,9],[471,9],[532,10],[569,10]]},"988":{"position":[[167,13],[1341,13]]},"990":{"position":[[343,13]]},"992":{"position":[[196,10],[246,10]]},"993":{"position":[[172,13],[1371,13]]},"996":{"position":[[367,13]]},"998":{"position":[[157,10]]},"1023":{"position":[[22,10]]},"1024":{"position":[[21,10]]},"1025":{"position":[[42,10]]},"1026":{"position":[[34,10]]},"1027":{"position":[[33,10]]},"1028":{"position":[[88,10]]},"1029":{"position":[[21,10]]},"1030":{"position":[[50,10]]},"1032":{"position":[[75,10]]},"1033":{"position":[[36,10]]},"1035":{"position":[[4,9],[37,10],[54,9],[76,9]]},"1036":{"position":[[43,10]]},"1037":{"position":[[36,10]]},"1038":{"position":[[42,10]]},"1057":{"position":[[174,10]]},"1058":{"position":[[23,10],[70,10],[87,9],[110,9]]},"1059":{"position":[[66,10]]},"1086":{"position":[[228,9],[444,9]]},"1088":{"position":[[148,10]]},"1089":{"position":[[848,10],[916,10],[984,10]]},"1090":{"position":[[187,9],[4748,10],[8963,10],[9761,9]]},"1091":{"position":[[359,9]]}},"keywords":{}}],["parameter_path",{"_index":3689,"title":{},"content":{"525":{"position":[[21,16]]},"526":{"position":[[21,16]]}},"keywords":{}}],["parent",{"_index":3811,"title":{},"content":{"568":{"position":[[590,6]]},"1088":{"position":[[590,6]]}},"keywords":{}}],["part",{"_index":1537,"title":{},"content":{"156":{"position":[[399,5],[1233,4]]},"160":{"position":[[738,4]]},"161":{"position":[[679,4]]},"165":{"position":[[258,4]]},"167":{"position":[[214,4]]},"189":{"position":[[68,4]]},"217":{"position":[[109,4],[188,4],[356,4],[673,4],[848,4]]},"375":{"position":[[41,5]]},"549":{"position":[[42,6]]},"553":{"position":[[44,6]]},"559":{"position":[[46,5]]},"726":{"position":[[399,5],[1233,4]]},"730":{"position":[[738,4]]},"731":{"position":[[679,4]]},"735":{"position":[[258,4]]},"737":{"position":[[214,4]]},"772":{"position":[[68,4]]},"787":{"position":[[109,4],[188,4],[356,4],[673,4],[848,4]]},"902":{"position":[[41,5]]},"1075":{"position":[[42,6]]},"1079":{"position":[[44,6]]},"1094":{"position":[[46,5]]}},"keywords":{}}],["parti",{"_index":1832,"title":{},"content":{"177":{"position":[[187,5]]},"181":{"position":[[176,5]]},"218":{"position":[[338,5]]},"229":{"position":[[1651,5]]},"747":{"position":[[187,5]]},"764":{"position":[[176,5]]},"788":{"position":[[338,5]]},"792":{"position":[[1653,5]]}},"keywords":{}}],["particip",{"_index":960,"title":{},"content":{"107":{"position":[[991,12],[1310,11],[6995,12]]},"133":{"position":[[900,13],[1385,11],[2665,11]]}},"keywords":{}}],["particular",{"_index":1040,"title":{},"content":{"107":{"position":[[4067,10],[7090,10]]},"130":{"position":[[426,10]]},"133":{"position":[[1068,10]]},"161":{"position":[[668,10]]},"698":{"position":[[426,10]]},"731":{"position":[[668,10]]}},"keywords":{}}],["pass",{"_index":553,"title":{},"content":{"31":{"position":[[548,4]]},"127":{"position":[[92,4]]},"129":{"position":[[88,4]]},"141":{"position":[[841,4],[1252,7]]},"274":{"position":[[320,6]]},"316":{"position":[[341,11]]},"350":{"position":[[328,7]]},"352":{"position":[[1350,7],[1367,6]]},"509":{"position":[[346,4]]},"571":{"position":[[264,4]]},"623":{"position":[[548,4]]},"695":{"position":[[92,4]]},"697":{"position":[[88,4]]},"845":{"position":[[320,6]]},"1048":{"position":[[346,4]]},"1091":{"position":[[264,4]]}},"keywords":{}}],["passphras",{"_index":2503,"title":{},"content":{"331":{"position":[[2146,10],[2165,11]]}},"keywords":{}}],["passport",{"_index":2382,"title":{},"content":{"314":{"position":[[1055,10]]}},"keywords":{}}],["password",{"_index":164,"title":{},"content":{"9":{"position":[[145,8]]},"17":{"position":[[692,9],[733,8],[794,9],[825,9],[1159,9],[1200,8],[1240,8]]},"21":{"position":[[420,8],[516,8],[613,9]]},"31":{"position":[[216,8]]},"32":{"position":[[99,8]]},"334":{"position":[[997,9],[1041,9],[1692,9],[1736,9]]},"336":{"position":[[828,8],[913,8]]},"598":{"position":[[145,8]]},"609":{"position":[[692,9],[733,8],[794,9],[825,9],[1159,9],[1200,8],[1240,8]]},"621":{"position":[[420,8],[516,8],[613,9]]},"623":{"position":[[216,8]]},"624":{"position":[[99,8]]}},"keywords":{}}],["password>{us",{"_index":2562,"title":{},"content":{"336":{"position":[[486,15],[600,15]]}},"keywords":{}}],["pass}</password",{"_index":2563,"title":{},"content":{"336":{"position":[[502,16],[616,16]]}},"keywords":{}}],["past",{"_index":1437,"title":{},"content":{"148":{"position":[[542,5]]},"407":{"position":[[1421,5]]},"934":{"position":[[1441,5]]}},"keywords":{}}],["patch",{"_index":715,"title":{"74":{"position":[[0,5]]},"81":{"position":[[0,5]]},"89":{"position":[[0,5]]},"95":{"position":[[0,5]]},"112":{"position":[[0,5]]},"119":{"position":[[9,7]]},"138":{"position":[[18,7]]},"429":{"position":[[0,5]]},"447":{"position":[[0,5]]},"464":{"position":[[0,5]]},"666":{"position":[[0,5]]},"672":{"position":[[0,5]]},"680":{"position":[[0,5]]},"687":{"position":[[9,7]]},"710":{"position":[[18,7]]},"956":{"position":[[0,5]]},"974":{"position":[[0,5]]},"991":{"position":[[0,5]]}},"content":{"74":{"position":[[0,5],[58,5]]},"81":{"position":[[0,5],[55,5]]},"89":{"position":[[0,5],[38,5]]},"95":{"position":[[0,5],[53,5]]},"112":{"position":[[0,5],[63,5]]},"130":{"position":[[87,5]]},"136":{"position":[[69,7],[122,5],[205,5],[302,6],[323,5],[421,7],[539,7],[693,7]]},"137":{"position":[[0,7],[203,8],[261,6],[312,5]]},"144":{"position":[[681,7]]},"145":{"position":[[354,8]]},"148":{"position":[[320,8]]},"304":{"position":[[187,5]]},"375":{"position":[[719,5]]},"429":{"position":[[0,5]]},"431":{"position":[[14,5]]},"447":{"position":[[0,5]]},"449":{"position":[[14,5]]},"464":{"position":[[0,5]]},"466":{"position":[[14,5]]},"497":{"position":[[0,5]]},"666":{"position":[[0,5],[58,5]]},"672":{"position":[[0,5],[38,5]]},"680":{"position":[[0,5],[55,5]]},"698":{"position":[[87,5]]},"708":{"position":[[69,7],[122,5],[205,5],[302,6],[323,5],[421,7],[539,7],[693,7]]},"709":{"position":[[0,7],[203,8],[261,6],[312,5]]},"714":{"position":[[681,7]]},"715":{"position":[[354,8]]},"718":{"position":[[320,8]]},"870":{"position":[[187,5]]},"902":{"position":[[719,5]]},"956":{"position":[[0,5]]},"958":{"position":[[14,5]]},"974":{"position":[[0,5]]},"976":{"position":[[14,5]]},"991":{"position":[[0,5]]},"993":{"position":[[14,5]]},"1024":{"position":[[0,5]]}},"keywords":{}}],["patch_experiment(id",{"_index":3564,"title":{"497":{"position":[[0,20]]},"1024":{"position":[[0,20]]}},"content":{},"keywords":{}}],["path",{"_index":221,"title":{},"content":{"15":{"position":[[146,4]]},"16":{"position":[[267,5]]},"17":{"position":[[506,4],[884,4],[975,4],[1300,5]]},"20":{"position":[[118,4],[812,5]]},"225":{"position":[[215,4]]},"305":{"position":[[72,4]]},"383":{"position":[[429,4],[483,5]]},"391":{"position":[[499,4]]},"427":{"position":[[42,4]]},"430":{"position":[[42,4]]},"433":{"position":[[42,4]]},"445":{"position":[[40,4]]},"448":{"position":[[40,4]]},"451":{"position":[[40,4]]},"456":{"position":[[40,4]]},"465":{"position":[[42,4]]},"468":{"position":[[42,4]]},"471":{"position":[[51,4]]},"484":{"position":[[40,4]]},"487":{"position":[[40,4]]},"511":{"position":[[879,4]]},"553":{"position":[[1062,4]]},"568":{"position":[[806,4]]},"569":{"position":[[1686,4]]},"584":{"position":[[735,4]]},"589":{"position":[[1029,4]]},"607":{"position":[[146,4]]},"608":{"position":[[267,5]]},"609":{"position":[[506,4],[884,4],[975,4],[1300,5]]},"620":{"position":[[118,4],[812,5]]},"810":{"position":[[236,4]]},"871":{"position":[[72,4]]},"910":{"position":[[429,4],[483,5]]},"918":{"position":[[499,4]]},"954":{"position":[[42,4]]},"957":{"position":[[42,4]]},"960":{"position":[[42,4]]},"972":{"position":[[40,4]]},"975":{"position":[[40,4]]},"978":{"position":[[40,4]]},"983":{"position":[[40,4]]},"992":{"position":[[42,4]]},"995":{"position":[[42,4]]},"998":{"position":[[51,4]]},"1016":{"position":[[40,4]]},"1019":{"position":[[40,4]]},"1079":{"position":[[1062,4]]},"1088":{"position":[[806,4]]},"1089":{"position":[[1686,4]]},"1110":{"position":[[735,4]]},"1115":{"position":[[1029,4]]}},"keywords":{}}],["path/to/my/fil",{"_index":324,"title":{},"content":{"20":{"position":[[430,17]]},"620":{"position":[[430,17]]}},"keywords":{}}],["path:/sys/fs/cgroup/cpu,cpuacct/hadoop",{"_index":411,"title":{},"content":{"25":{"position":[[337,38]]},"543":{"position":[[337,38]]},"613":{"position":[[337,38]]},"1069":{"position":[[337,38]]}},"keywords":{}}],["patt",{"_index":2073,"title":{},"content":{"217":{"position":[[394,7]]},"787":{"position":[[394,7]]}},"keywords":{}}],["pay",{"_index":2469,"title":{},"content":{"331":{"position":[[8,3]]}},"keywords":{}}],["pci",{"_index":3938,"title":{},"content":{"570":{"position":[[7658,3],[7837,3],[8016,3],[8195,3],[8374,3],[8553,3],[8732,3],[8911,3]]},"1090":{"position":[[7658,3],[7837,3],[8016,3],[8195,3],[8374,3],[8553,3],[8732,3],[8911,3]]}},"keywords":{}}],["pcibusid",{"_index":3880,"title":{},"content":{"570":{"position":[[1551,8],[1797,8],[10968,8],[11214,8]]},"1090":{"position":[[1551,8],[1797,8],[10968,8],[11214,8]]}},"keywords":{}}],["pcre",{"_index":2914,"title":{},"content":{"389":{"position":[[2675,4],[18517,4]]},"916":{"position":[[2675,4],[18517,4]]}},"keywords":{}}],["peak",{"_index":2252,"title":{},"content":{"273":{"position":[[950,4],[963,4]]},"844":{"position":[[950,4],[963,4]]}},"keywords":{}}],["peopl",{"_index":961,"title":{},"content":{"107":{"position":[[1023,6]]},"148":{"position":[[210,6]]},"718":{"position":[[210,6]]}},"keywords":{}}],["per",{"_index":1422,"title":{},"content":{"145":{"position":[[106,3]]},"715":{"position":[[106,3]]}},"keywords":{}}],["per_process_gpu_memory_fract",{"_index":3867,"title":{},"content":{"570":{"position":[[1264,32],[4983,32],[10746,32],[14489,32],[16815,32]]},"1090":{"position":[[1264,32],[4983,32],[10746,32],[14489,32],[16815,32]]}},"keywords":{}}],["percept",{"_index":1102,"title":{},"content":{"107":{"position":[[7275,10]]}},"keywords":{}}],["perform",{"_index":603,"title":{},"content":{"35":{"position":[[586,7],[771,7]]},"107":{"position":[[890,7],[5720,10],[6310,11]]},"163":{"position":[[469,12],[677,7]]},"331":{"position":[[1551,7],[1807,7]]},"350":{"position":[[279,9]]},"566":{"position":[[576,7]]},"627":{"position":[[586,7],[771,7]]},"733":{"position":[[469,12],[677,7]]},"1086":{"position":[[576,7]]}},"keywords":{}}],["period",{"_index":1150,"title":{},"content":{"107":{"position":[[10676,6],[10923,6]]},"273":{"position":[[173,12],[300,12],[535,12],[1065,6]]},"844":{"position":[[173,12],[300,12],[535,12],[1065,6]]}},"keywords":{}}],["permiss",{"_index":443,"title":{"26":{"position":[[28,10]]},"240":{"position":[[10,11]]},"544":{"position":[[28,10]]},"614":{"position":[[28,10]]},"803":{"position":[[10,11]]},"1070":{"position":[[28,10]]}},"content":{"26":{"position":[[267,10],[553,10]]},"31":{"position":[[643,11]]},"35":{"position":[[1942,11],[2005,10]]},"55":{"position":[[879,11]]},"133":{"position":[[227,10]]},"176":{"position":[[965,12]]},"232":{"position":[[641,11]]},"377":{"position":[[124,12]]},"394":{"position":[[55,10]]},"544":{"position":[[267,10],[553,10]]},"614":{"position":[[267,10],[553,10]]},"623":{"position":[[643,11]]},"627":{"position":[[1942,11],[2005,10]]},"647":{"position":[[879,11]]},"746":{"position":[[968,12]]},"795":{"position":[[641,11]]},"904":{"position":[[124,12]]},"921":{"position":[[55,10]]},"1070":{"position":[[267,10],[553,10]]}},"keywords":{}}],["permissions.delete:delet",{"_index":618,"title":{},"content":{"35":{"position":[[1039,25]]},"627":{"position":[[1039,25]]}},"keywords":{}}],["permissions.publ",{"_index":638,"title":{},"content":{"35":{"position":[[1838,19]]},"627":{"position":[[1838,19]]}},"keywords":{}}],["permit",{"_index":2368,"title":{},"content":{"314":{"position":[[438,9]]},"331":{"position":[[504,9]]}},"keywords":{}}],["persist",{"_index":1522,"title":{},"content":{"155":{"position":[[67,9]]},"170":{"position":[[85,9]]},"190":{"position":[[284,9]]},"192":{"position":[[57,10]]},"196":{"position":[[499,7]]},"197":{"position":[[124,7]]},"204":{"position":[[605,10]]},"207":{"position":[[41,12]]},"208":{"position":[[667,10]]},"215":{"position":[[1601,10],[1683,10]]},"725":{"position":[[67,9]]},"740":{"position":[[85,9]]},"753":{"position":[[605,10]]},"756":{"position":[[41,12]]},"757":{"position":[[667,10]]},"773":{"position":[[284,9]]},"775":{"position":[[57,10]]},"779":{"position":[[499,7]]},"780":{"position":[[129,7]]},"785":{"position":[[1601,10],[1683,10]]}},"keywords":{}}],["person",{"_index":1125,"title":{"126":{"position":[[38,8]]},"127":{"position":[[43,8]]},"694":{"position":[[38,8]]},"695":{"position":[[43,8]]}},"content":{"107":{"position":[[8454,6]]},"133":{"position":[[157,6]]}},"keywords":{}}],["perspect",{"_index":966,"title":{},"content":{"107":{"position":[[1154,12]]}},"keywords":{}}],["pervas",{"_index":1006,"title":{},"content":{"107":{"position":[[2366,9]]}},"keywords":{}}],["pgp",{"_index":2677,"title":{},"content":{"371":{"position":[[80,3]]},"898":{"position":[[80,3]]}},"keywords":{}}],["pgpkeys.mit.edu",{"_index":2518,"title":{},"content":{"332":{"position":[[258,15],[308,15]]}},"keywords":{}}],["pgsql",{"_index":2912,"title":{},"content":{"389":{"position":[[2648,5],[18490,5]]},"916":{"position":[[2648,5],[18490,5]]}},"keywords":{}}],["phadoop",{"_index":2456,"title":{},"content":{"325":{"position":[[500,7]]},"853":{"position":[[259,7],[361,7],[463,7],[564,7]]},"895":{"position":[[500,7]]}},"keywords":{}}],["physic",{"_index":2090,"title":{},"content":{"218":{"position":[[215,9]]},"788":{"position":[[215,9]]}},"keywords":{}}],["pick",{"_index":3762,"title":{},"content":{"559":{"position":[[412,4]]},"1094":{"position":[[412,4]]}},"keywords":{}}],["pictur",{"_index":1585,"title":{},"content":{"159":{"position":[[1021,8]]},"729":{"position":[[1021,8]]}},"keywords":{}}],["pid",{"_index":482,"title":{},"content":{"28":{"position":[[477,4],[678,4],[853,6],[877,6],[933,4],[1007,6],[1061,4],[1208,3]]},"546":{"position":[[477,4],[678,4],[853,6],[877,6],[933,4],[1007,6],[1061,4],[1208,3]]},"616":{"position":[[477,4],[678,4],[853,6],[877,6],[933,4],[1007,6],[1061,4],[1208,3]]},"1072":{"position":[[477,4],[678,4],[853,6],[877,6],[933,4],[1007,6],[1061,4],[1208,3]]}},"keywords":{}}],["pid=`echo",{"_index":502,"title":{},"content":{"28":{"position":[[767,9]]},"546":{"position":[[767,9]]},"616":{"position":[[767,9]]},"1072":{"position":[[767,9]]}},"keywords":{}}],["pid\\tname\\t\\tmntns\\n",{"_index":499,"title":{},"content":{"28":{"position":[[707,22]]},"546":{"position":[[707,22]]},"616":{"position":[[707,22]]},"1072":{"position":[[707,22]]}},"keywords":{}}],["pillow",{"_index":3771,"title":{},"content":{"559":{"position":[[957,6]]},"1094":{"position":[[957,6]]}},"keywords":{}}],["ping",{"_index":1249,"title":{},"content":{"130":{"position":[[507,4]]},"375":{"position":[[566,4]]},"698":{"position":[[507,4]]},"902":{"position":[[566,4]]}},"keywords":{}}],["pinyin",{"_index":2472,"title":{},"content":{"331":{"position":[[201,6]]}},"keywords":{}}],["pip",{"_index":1510,"title":{},"content":{"154":{"position":[[151,4]]},"215":{"position":[[2082,4]]},"372":{"position":[[511,3]]},"400":{"position":[[185,3],[241,3]]},"401":{"position":[[301,3]]},"422":{"position":[[455,3]]},"507":{"position":[[269,3],[376,3],[492,3],[617,3]]},"513":{"position":[[173,3]]},"549":{"position":[[628,3],[718,3]]},"553":{"position":[[1092,3],[1137,3],[1448,3],[1554,3]]},"559":{"position":[[928,3],[1083,3]]},"578":{"position":[[433,3]]},"583":{"position":[[344,3]]},"588":{"position":[[342,3]]},"724":{"position":[[151,4]]},"785":{"position":[[2082,4]]},"927":{"position":[[185,3],[241,3]]},"928":{"position":[[301,3]]},"949":{"position":[[455,3]]},"1046":{"position":[[310,3],[425,3],[535,3],[617,3]]},"1052":{"position":[[173,3]]},"1075":{"position":[[628,3],[718,3]]},"1079":{"position":[[1092,3],[1137,3],[1448,3],[1554,3]]},"1094":{"position":[[928,3],[1083,3]]},"1104":{"position":[[433,3]]},"1109":{"position":[[344,3]]},"1114":{"position":[[342,3]]}},"keywords":{}}],["pip.pi",{"_index":3769,"title":{},"content":{"559":{"position":[[875,6],[898,6],[917,6]]},"1094":{"position":[[875,6],[898,6],[917,6]]}},"keywords":{}}],["pip3",{"_index":3702,"title":{},"content":{"549":{"position":[[748,4],[815,4]]},"1075":{"position":[[748,4],[815,4]]}},"keywords":{}}],["pipdep",{"_index":700,"title":{},"content":{"71":{"position":[[431,17],[1018,17]]},"72":{"position":[[569,17],[933,17]]},"73":{"position":[[591,17]]},"74":{"position":[[354,17],[844,17],[950,17]]},"75":{"position":[[507,17]]},"422":{"position":[[411,15]]},"423":{"position":[[396,17],[1041,18]]},"425":{"position":[[411,20],[919,18],[1303,20]]},"428":{"position":[[607,18]]},"431":{"position":[[310,17],[811,20]]},"434":{"position":[[610,18]]},"479":{"position":[[1031,20]]},"482":{"position":[[778,20]]},"485":{"position":[[766,20]]},"488":{"position":[[796,20]]},"663":{"position":[[431,17],[1018,17]]},"664":{"position":[[569,17],[933,17]]},"665":{"position":[[591,17]]},"666":{"position":[[354,17],[844,17],[950,17]]},"667":{"position":[[507,17]]},"949":{"position":[[411,15]]},"950":{"position":[[396,17],[1041,18]]},"952":{"position":[[411,20],[919,18],[1303,20]]},"955":{"position":[[607,18]]},"958":{"position":[[310,17],[811,20]]},"961":{"position":[[610,18]]},"1011":{"position":[[1031,20]]},"1014":{"position":[[778,20]]},"1017":{"position":[[766,20]]},"1020":{"position":[[796,20]]}},"keywords":{}}],["pipelin",{"_index":1604,"title":{},"content":{"159":{"position":[[2109,8],[2421,8]]},"161":{"position":[[495,8],[696,9]]},"162":{"position":[[781,9]]},"165":{"position":[[97,9],[386,8]]},"168":{"position":[[297,8]]},"171":{"position":[[2078,9],[2088,8],[2132,8]]},"179":{"position":[[813,8]]},"181":{"position":[[1321,9]]},"194":{"position":[[132,9]]},"200":{"position":[[1445,9],[1725,8]]},"729":{"position":[[2109,8],[2421,8]]},"731":{"position":[[495,8],[696,9]]},"732":{"position":[[781,9]]},"735":{"position":[[97,9],[386,8]]},"738":{"position":[[297,8]]},"741":{"position":[[2090,9],[2100,8],[2144,8]]},"749":{"position":[[818,8]]},"764":{"position":[[1327,9]]},"777":{"position":[[132,9]]},"783":{"position":[[1445,9],[1725,8]]}},"keywords":{}}],["pipeline.pipelin",{"_index":1787,"title":{},"content":{"171":{"position":[[2246,17]]},"741":{"position":[[2259,17]]}},"keywords":{}}],["pipenv",{"_index":1505,"title":{},"content":{"154":{"position":[[52,7]]},"724":{"position":[[52,7]]}},"keywords":{}}],["pkcs12",{"_index":284,"title":{},"content":{"17":{"position":[[643,7],[1058,8]]},"609":{"position":[[643,7],[1058,8]]}},"keywords":{}}],["pkg",{"_index":2889,"title":{},"content":{"389":{"position":[[2331,3],[3223,3],[6375,3],[12123,3],[12170,3],[12223,3],[17117,3],[18173,3],[19047,3],[22093,3],[27672,3],[27719,3],[27772,3],[31971,3]]},"559":{"position":[[579,3]]},"916":{"position":[[2331,3],[3223,3],[6375,3],[12123,3],[12170,3],[12223,3],[17117,3],[18173,3],[19047,3],[22093,3],[27672,3],[27719,3],[27772,3],[31971,3]]},"1094":{"position":[[579,3]]}},"keywords":{}}],["pl",{"_index":2455,"title":{},"content":{"325":{"position":[[476,2]]},"895":{"position":[[476,2]]},"1053":{"position":[[183,2]]}},"keywords":{}}],["plac",{"_index":1072,"title":{},"content":{"107":{"position":[[5985,5]]},"145":{"position":[[280,8]]},"217":{"position":[[1583,6]]},"229":{"position":[[1117,6]]},"262":{"position":[[153,6]]},"715":{"position":[[280,8]]},"787":{"position":[[1583,6]]},"792":{"position":[[1118,6]]},"833":{"position":[[153,6]]},"1063":{"position":[[0,5]]}},"keywords":{}}],["place.answ",{"_index":1583,"title":{},"content":{"159":{"position":[[963,12]]},"729":{"position":[[963,12]]}},"keywords":{}}],["plan",{"_index":322,"title":{},"content":{"20":{"position":[[392,5]]},"107":{"position":[[3339,4]]},"133":{"position":[[2713,6]]},"229":{"position":[[744,7]]},"384":{"position":[[796,5]]},"620":{"position":[[392,5]]},"792":{"position":[[744,7]]},"911":{"position":[[796,5]]}},"keywords":{}}],["platform",{"_index":1468,"title":{"162":{"position":[[55,8]]},"163":{"position":[[63,8]]},"732":{"position":[[55,8]]},"733":{"position":[[63,8]]}},"content":{"151":{"position":[[1118,9]]},"162":{"position":[[53,8],[123,9],[178,9],[285,8],[930,8]]},"163":{"position":[[88,8]]},"167":{"position":[[454,9]]},"168":{"position":[[4,8],[34,8],[120,8],[215,8],[422,9]]},"171":{"position":[[510,8],[1897,9]]},"172":{"position":[[429,9]]},"177":{"position":[[87,8]]},"222":{"position":[[24,9]]},"721":{"position":[[1118,9]]},"732":{"position":[[53,8],[123,9],[178,9],[285,8],[930,8]]},"733":{"position":[[88,8]]},"737":{"position":[[454,9]]},"738":{"position":[[4,8],[34,8],[120,8],[215,8],[422,9]]},"741":{"position":[[510,8],[1909,9]]},"742":{"position":[[429,9]]},"747":{"position":[[87,8]]},"807":{"position":[[24,9]]}},"keywords":{}}],["play",{"_index":1613,"title":{},"content":{"159":{"position":[[2565,5]]},"246":{"position":[[104,4]]},"566":{"position":[[761,4]]},"729":{"position":[[2565,5]]},"816":{"position":[[104,4]]},"1086":{"position":[[761,4]]}},"keywords":{}}],["pleas",{"_index":14,"title":{},"content":{"1":{"position":[[112,6],[295,6]]},"12":{"position":[[116,6]]},"20":{"position":[[199,6]]},"78":{"position":[[643,6]]},"107":{"position":[[640,6]]},"117":{"position":[[121,6]]},"122":{"position":[[55,6]]},"125":{"position":[[88,6]]},"151":{"position":[[326,6]]},"155":{"position":[[482,6]]},"182":{"position":[[63,6]]},"183":{"position":[[0,6]]},"184":{"position":[[107,6]]},"187":{"position":[[122,6]]},"188":{"position":[[661,6]]},"191":{"position":[[0,7]]},"200":{"position":[[0,6]]},"204":{"position":[[422,6]]},"210":{"position":[[118,6],[319,6]]},"211":{"position":[[87,6],[156,6],[240,6]]},"213":{"position":[[0,6]]},"216":{"position":[[579,7]]},"230":{"position":[[846,7]]},"303":{"position":[[13,6]]},"314":{"position":[[960,6]]},"328":{"position":[[243,6]]},"331":{"position":[[522,6],[846,6],[2128,6]]},"350":{"position":[[0,6],[381,6],[548,6],[590,6]]},"355":{"position":[[0,6]]},"357":{"position":[[0,6]]},"362":{"position":[[53,6]]},"384":{"position":[[410,6],[622,6]]},"386":{"position":[[758,6],[843,6]]},"389":{"position":[[17739,6],[32520,6]]},"400":{"position":[[52,6]]},"401":{"position":[[0,6]]},"406":{"position":[[1040,6]]},"441":{"position":[[609,6]]},"511":{"position":[[145,6],[277,6],[1162,6],[1311,6]]},"575":{"position":[[107,6]]},"601":{"position":[[112,6],[295,6]]},"604":{"position":[[116,6]]},"620":{"position":[[199,6]]},"677":{"position":[[643,6]]},"685":{"position":[[121,6]]},"690":{"position":[[55,6]]},"693":{"position":[[88,6]]},"721":{"position":[[326,6]]},"725":{"position":[[482,6]]},"753":{"position":[[422,6]]},"759":{"position":[[118,6],[319,6]]},"760":{"position":[[87,6],[156,6],[240,6]]},"762":{"position":[[0,6]]},"765":{"position":[[63,6]]},"766":{"position":[[0,6]]},"767":{"position":[[107,6]]},"770":{"position":[[122,6]]},"771":{"position":[[661,6]]},"774":{"position":[[0,7]]},"783":{"position":[[0,6]]},"786":{"position":[[579,7]]},"793":{"position":[[846,7]]},"869":{"position":[[1400,6],[1502,6],[1768,6]]},"884":{"position":[[53,6]]},"911":{"position":[[410,6],[622,6]]},"913":{"position":[[758,6],[843,6]]},"916":{"position":[[17739,6],[32520,6]]},"927":{"position":[[52,6]]},"928":{"position":[[0,6]]},"933":{"position":[[691,6]]},"968":{"position":[[609,6]]},"1050":{"position":[[131,6]]},"1061":{"position":[[0,6]]},"1101":{"position":[[107,6]]}},"keywords":{}}],["pleasant",{"_index":1304,"title":{},"content":{"133":{"position":[[2266,8]]}},"keywords":{}}],["plguin",{"_index":4311,"title":{},"content":{"1061":{"position":[[77,6]]}},"keywords":{}}],["plot",{"_index":4050,"title":{},"content":{"571":{"position":[[161,4]]},"1091":{"position":[[161,4]]}},"keywords":{}}],["plug",{"_index":1941,"title":{},"content":{"194":{"position":[[373,4],[550,4],[627,4],[713,4],[728,4],[859,4],[970,4],[1447,4]]},"195":{"position":[[356,4]]},"777":{"position":[[379,4],[556,4],[633,4],[719,4],[734,4],[930,4],[959,4],[1051,4],[1139,4],[1250,4],[1727,4]]},"778":{"position":[[356,4]]}},"keywords":{}}],["plugin",{"_index":1255,"title":{"1053":{"position":[[34,6]]},"1060":{"position":[[25,6]]}},"content":{"132":{"position":[[73,7],[180,6],[226,6]]},"194":{"position":[[510,7]]},"298":{"position":[[11,6],[95,6]]},"406":{"position":[[773,7],[837,6]]},"700":{"position":[[73,7],[180,6],[226,6]]},"777":{"position":[[516,7]]},"865":{"position":[[11,6],[95,6]]},"1053":{"position":[[25,6],[254,6]]}},"keywords":{}}],["plugin:check",{"_index":2278,"title":{},"content":{"282":{"position":[[36,12]]},"853":{"position":[[67,12]]}},"keywords":{}}],["pluginsop",{"_index":2311,"title":{},"content":{"298":{"position":[[121,11]]},"865":{"position":[[121,11]]}},"keywords":{}}],["plugmgr",{"_index":2145,"title":{},"content":{"231":{"position":[[532,9]]},"794":{"position":[[684,9]]}},"keywords":{}}],["pm",{"_index":2644,"title":{},"content":{"352":{"position":[[894,2]]}},"keywords":{}}],["pmc",{"_index":996,"title":{"140":{"position":[[27,3]]},"141":{"position":[[56,3]]}},"content":{"107":{"position":[[2055,3],[2273,4],[2340,3],[2452,3],[3025,4],[3683,5],[3839,3],[3978,3],[4330,3],[4435,3],[4516,3],[4531,3],[4715,4],[4786,3],[4816,3],[5063,4],[5172,3],[5254,3],[5271,3],[5965,3],[6016,3],[7337,3],[7370,3],[9332,3],[9636,3],[9713,3],[9742,3],[9846,3],[9862,3],[9910,3],[9943,3],[10097,3],[10237,3],[10275,3],[10343,5],[10349,3],[10386,3],[10473,3],[10512,3],[10625,3]]},"133":{"position":[[2863,3]]},"141":{"position":[[10,3],[661,3],[2221,3]]},"145":{"position":[[123,4],[515,3]]},"352":{"position":[[1298,3],[1414,4]]},"513":{"position":[[35,4]]},"715":{"position":[[123,4]]},"1052":{"position":[[35,4]]}},"keywords":{}}],["pmcmaintain",{"_index":1041,"title":{},"content":{"107":{"position":[[4115,14]]}},"keywords":{}}],["pod",{"_index":84,"title":{},"content":{"7":{"position":[[103,4]]},"8":{"position":[[66,3]]},"21":{"position":[[486,3]]},"209":{"position":[[81,4]]},"217":{"position":[[1713,3],[1867,3]]},"302":{"position":[[264,4]]},"325":{"position":[[161,3]]},"383":{"position":[[838,3]]},"412":{"position":[[35,4],[52,4],[77,3]]},"437":{"position":[[250,5]]},"448":{"position":[[246,5]]},"460":{"position":[[794,5]]},"478":{"position":[[226,5],[546,4]]},"501":{"position":[[27,3],[83,4],[158,3],[251,3]]},"512":{"position":[[245,3]]},"520":{"position":[[28,4]]},"596":{"position":[[103,4]]},"597":{"position":[[66,3]]},"621":{"position":[[486,3]]},"758":{"position":[[81,4]]},"787":{"position":[[1713,3],[1867,3]]},"867":{"position":[[522,3],[664,3]]},"869":{"position":[[264,4]]},"895":{"position":[[161,3]]},"910":{"position":[[838,3]]},"939":{"position":[[35,4],[54,4],[79,3]]},"964":{"position":[[250,5]]},"975":{"position":[[246,5]]},"987":{"position":[[794,5]]},"1010":{"position":[[226,5],[546,4]]},"1028":{"position":[[27,3],[83,4],[158,3],[251,3]]},"1051":{"position":[[233,3]]}},"keywords":{}}],["podgroups.scheduling.incubator.k8s.io",{"_index":124,"title":{},"content":{"7":{"position":[[679,38]]},"596":{"position":[[679,38]]}},"keywords":{}}],["podlog",{"_index":781,"title":{},"content":{"83":{"position":[[301,9],[439,9],[506,9]]},"84":{"position":[[352,9],[1529,9]]},"454":{"position":[[250,11],[304,11]]},"457":{"position":[[278,11],[332,11]]},"682":{"position":[[301,9],[439,9],[506,9]]},"683":{"position":[[352,9],[1529,9]]},"981":{"position":[[250,11],[304,11]]},"984":{"position":[[278,11],[332,11]]}},"keywords":{}}],["podnam",{"_index":780,"title":{},"content":{"83":{"position":[[272,10],[392,10],[459,10]]},"84":{"position":[[305,10],[1482,10]]},"682":{"position":[[272,10],[392,10],[459,10]]},"683":{"position":[[305,10],[1482,10]]}},"keywords":{}}],["podname\":\"newexperiment1",{"_index":3486,"title":{},"content":{"454":{"position":[[217,25],[267,25]]},"457":{"position":[[245,25],[295,25]]},"981":{"position":[[217,25],[267,25]]},"984":{"position":[[245,25],[295,25]]}},"keywords":{}}],["podspec",{"_index":1972,"title":{},"content":{"197":{"position":[[360,8]]},"780":{"position":[[367,8]]}},"keywords":{}}],["point",{"_index":481,"title":{"160":{"position":[[34,6]]},"730":{"position":[[34,6]]}},"content":{"28":{"position":[[466,6]]},"153":{"position":[[519,7]]},"159":{"position":[[408,7],[2794,6]]},"331":{"position":[[39,8]]},"546":{"position":[[466,6]]},"571":{"position":[[325,7],[463,5]]},"580":{"position":[[1259,6],[1327,6]]},"616":{"position":[[466,6]]},"723":{"position":[[519,7]]},"729":{"position":[[408,7],[2794,6]]},"764":{"position":[[1416,6]]},"1064":{"position":[[122,8]]},"1072":{"position":[[466,6]]},"1091":{"position":[[325,7],[463,5]]},"1106":{"position":[[1259,6],[1327,6]]}},"keywords":{}}],["point.th",{"_index":1853,"title":{},"content":{"181":{"position":[[1410,9]]}},"keywords":{}}],["points:/proc/mount",{"_index":409,"title":{},"content":{"25":{"position":[[307,19]]},"543":{"position":[[307,19]]},"613":{"position":[[307,19]]},"1069":{"position":[[307,19]]}},"keywords":{}}],["polici",{"_index":3155,"title":{},"content":{"389":{"position":[[15020,6],[15569,6],[16264,6],[17059,6],[30569,6],[31118,6],[31913,6]]},"916":{"position":[[15020,6],[15569,6],[16264,6],[17059,6],[30569,6],[31118,6],[31913,6]]}},"keywords":{}}],["policies.submarine'",{"_index":2132,"title":{},"content":{"229":{"position":[[1187,20]]},"792":{"position":[[1188,20]]}},"keywords":{}}],["polit",{"_index":1348,"title":{},"content":{"137":{"position":[[120,6]]},"709":{"position":[[120,6]]}},"keywords":{}}],["poll",{"_index":3590,"title":{},"content":{"503":{"position":[[136,5]]},"1030":{"position":[[136,5]]}},"keywords":{}}],["polling_interv",{"_index":3585,"title":{"503":{"position":[[25,17]]},"1030":{"position":[[25,17]]}},"content":{},"keywords":{}}],["pop",{"_index":2502,"title":{},"content":{"331":{"position":[[2019,3]]}},"keywords":{}}],["popular",{"_index":1530,"title":{},"content":{"155":{"position":[[361,8]]},"159":{"position":[[1160,7],[1423,7]]},"725":{"position":[[361,8]]},"729":{"position":[[1160,7],[1423,7]]}},"keywords":{}}],["port",{"_index":139,"title":{},"content":{"8":{"position":[[13,4],[203,4],[229,4]]},"17":{"position":[[204,5],[334,5]]},"20":{"position":[[150,4],[167,4],[627,5]]},"262":{"position":[[192,4]]},"270":{"position":[[246,4]]},"271":{"position":[[230,4],[336,4],[527,4]]},"320":{"position":[[106,4],[119,4],[240,4],[873,4]]},"324":{"position":[[381,4]]},"325":{"position":[[192,4],[205,4]]},"384":{"position":[[40,4],[859,4]]},"413":{"position":[[135,4],[159,4]]},"524":{"position":[[169,7]]},"525":{"position":[[79,4]]},"597":{"position":[[13,4],[203,4],[229,4]]},"609":{"position":[[204,5],[334,5]]},"620":{"position":[[150,4],[167,4],[627,5]]},"833":{"position":[[192,4]]},"841":{"position":[[246,4]]},"842":{"position":[[230,4],[336,4],[527,4]]},"869":{"position":[[1246,4],[1270,4]]},"877":{"position":[[106,4],[119,4],[240,4],[873,4]]},"894":{"position":[[381,4]]},"895":{"position":[[192,4],[205,4]]},"911":{"position":[[40,4],[859,4]]},"940":{"position":[[0,4],[24,4],[50,4]]}},"keywords":{}}],["portabl",{"_index":2163,"title":{},"content":{"246":{"position":[[426,12]]},"816":{"position":[[426,12]]}},"keywords":{}}],["posit",{"_index":1306,"title":{},"content":{"133":{"position":[[2325,8]]}},"keywords":{}}],["possibl",{"_index":1157,"title":{},"content":{"107":{"position":[[10848,9]]},"136":{"position":[[41,9],[586,8]]},"189":{"position":[[606,8]]},"197":{"position":[[338,8]]},"219":{"position":[[6,8]]},"273":{"position":[[1172,9]]},"708":{"position":[[41,9],[586,8]]},"772":{"position":[[606,8]]},"780":{"position":[[345,8]]},"789":{"position":[[6,8]]},"844":{"position":[[1172,9]]}},"keywords":{}}],["post",{"_index":682,"title":{},"content":{"71":{"position":[[0,4],[49,4]]},"77":{"position":[[0,4],[48,4]]},"78":{"position":[[0,4],[48,4]]},"86":{"position":[[0,4],[46,4]]},"91":{"position":[[0,4],[65,4]]},"97":{"position":[[0,4],[95,4]]},"100":{"position":[[0,4],[46,4]]},"105":{"position":[[0,4],[115,4]]},"109":{"position":[[0,4],[54,4]]},"114":{"position":[[0,4],[80,4]]},"421":{"position":[[0,4]]},"423":{"position":[[14,4]]},"436":{"position":[[0,4]]},"438":{"position":[[14,4]]},"439":{"position":[[0,4]]},"441":{"position":[[14,4]]},"459":{"position":[[0,4]]},"461":{"position":[[14,4]]},"470":{"position":[[0,4]]},"472":{"position":[[14,4]]},"477":{"position":[[0,4]]},"479":{"position":[[14,4]]},"663":{"position":[[0,4],[49,4]]},"669":{"position":[[0,4],[46,4]]},"674":{"position":[[0,4],[65,4]]},"676":{"position":[[0,4],[48,4]]},"677":{"position":[[0,4],[48,4]]},"702":{"position":[[0,4],[46,4]]},"948":{"position":[[0,4]]},"950":{"position":[[14,4]]},"963":{"position":[[0,4]]},"965":{"position":[[14,4]]},"966":{"position":[[0,4]]},"968":{"position":[[14,4]]},"986":{"position":[[0,4]]},"988":{"position":[[14,4]]},"997":{"position":[[0,4]]},"999":{"position":[[14,4]]},"1009":{"position":[[0,4]]},"1011":{"position":[[14,4]]}},"keywords":{}}],["postconf(1",{"_index":3148,"title":{},"content":{"389":{"position":[[14855,12],[30404,12]]},"916":{"position":[[14855,12],[30404,12]]}},"keywords":{}}],["postfix",{"_index":2887,"title":{},"content":{"389":{"position":[[2299,7],[2626,7],[2640,7],[2654,7],[2667,7],[2722,7],[2734,7],[3191,7],[5310,7],[10444,8],[10526,7],[14101,7],[14682,7],[14821,7],[18141,7],[18468,7],[18482,7],[18496,7],[18509,7],[18564,7],[18576,7],[19015,7],[21134,7],[26162,8],[26244,7],[29650,7],[30231,7],[30370,7]]},"916":{"position":[[2299,7],[2626,7],[2640,7],[2654,7],[2667,7],[2722,7],[2734,7],[3191,7],[5310,7],[10444,8],[10526,7],[14101,7],[14682,7],[14821,7],[18141,7],[18468,7],[18482,7],[18496,7],[18509,7],[18564,7],[18576,7],[19015,7],[21134,7],[26162,8],[26244,7],[29650,7],[30231,7],[30370,7]]}},"keywords":{}}],["postfix_3.1.0",{"_index":3094,"title":{},"content":{"389":{"position":[[10473,17],[26191,17]]},"916":{"position":[[10473,17],[26191,17]]}},"keywords":{}}],["potenti",{"_index":1280,"title":{},"content":{"133":{"position":[[1037,9]]},"216":{"position":[[294,11],[509,11]]},"786":{"position":[[294,11],[509,11]]}},"keywords":{}}],["ppassword",{"_index":206,"title":{},"content":{"14":{"position":[[133,9]]},"606":{"position":[[133,9]]}},"keywords":{}}],["ppp",{"_index":2896,"title":{},"content":{"389":{"position":[[2472,3],[18314,3]]},"916":{"position":[[2472,3],[18314,3]]}},"keywords":{}}],["pr",{"_index":1268,"title":{},"content":{"133":{"position":[[284,3],[2574,3]]},"138":{"position":[[190,4]]},"144":{"position":[[203,2]]},"710":{"position":[[190,4]]},"714":{"position":[[203,2]]}},"keywords":{}}],["practic",{"_index":1283,"title":{},"content":{"133":{"position":[[1243,9]]},"153":{"position":[[421,8]]},"723":{"position":[[421,8]]}},"keywords":{}}],["prang",{"_index":4310,"title":{},"content":{"1053":{"position":[[488,7],[502,7]]}},"keywords":{}}],["pre",{"_index":755,"title":{"78":{"position":[[25,3]]},"185":{"position":[[7,3]]},"439":{"position":[[25,3]]},"677":{"position":[[25,3]]},"768":{"position":[[7,3]]},"966":{"position":[[25,3]]}},"content":{"159":{"position":[[627,3]]},"189":{"position":[[1076,3]]},"194":{"position":[[109,3]]},"200":{"position":[[415,3]]},"364":{"position":[[10,3]]},"383":{"position":[[681,3]]},"729":{"position":[[627,3]]},"772":{"position":[[1076,3]]},"777":{"position":[[109,3]]},"783":{"position":[[415,3]]},"886":{"position":[[10,3]]},"910":{"position":[[681,3]]}},"keywords":{}}],["prebuilt",{"_index":2761,"title":{"557":{"position":[[4,8]]},"563":{"position":[[4,8]]},"1083":{"position":[[4,8]]},"1098":{"position":[[4,8]]}},"content":{"376":{"position":[[175,8]]},"377":{"position":[[344,8],[393,8]]},"387":{"position":[[57,8]]},"550":{"position":[[292,8]]},"554":{"position":[[212,8],[344,8]]},"557":{"position":[[32,8]]},"560":{"position":[[457,8],[594,8]]},"563":{"position":[[32,8]]},"903":{"position":[[175,8]]},"904":{"position":[[344,8],[393,8]]},"914":{"position":[[57,8]]},"1076":{"position":[[292,8]]},"1080":{"position":[[212,8],[344,8]]},"1083":{"position":[[32,8]]},"1095":{"position":[[457,8],[594,8]]},"1098":{"position":[[32,8]]}},"keywords":{}}],["precompil",{"_index":3776,"title":{},"content":{"560":{"position":[[96,12]]},"1095":{"position":[[96,12]]}},"keywords":{}}],["preconfigur",{"_index":2136,"title":{},"content":{"229":{"position":[[1443,13]]},"792":{"position":[[1445,13]]}},"keywords":{}}],["predefin",{"_index":1469,"title":{"198":{"position":[[8,10]]},"199":{"position":[[0,10]]},"200":{"position":[[7,10]]},"781":{"position":[[8,10]]},"782":{"position":[[0,10]]},"783":{"position":[[7,10]]}},"content":{"151":{"position":[[1247,10]]},"171":{"position":[[684,10],[1330,10],[1382,10],[1826,10],[1942,10],[2047,10]]},"172":{"position":[[558,10]]},"176":{"position":[[142,10]]},"198":{"position":[[0,10]]},"199":{"position":[[0,10]]},"200":{"position":[[36,10],[1358,10],[1685,10]]},"201":{"position":[[422,10],[524,10]]},"437":{"position":[[581,11]]},"721":{"position":[[1247,10]]},"741":{"position":[[689,10],[1342,10],[1394,10],[1838,10],[1954,10],[2059,10]]},"742":{"position":[[558,10]]},"746":{"position":[[142,10]]},"750":{"position":[[423,10],[525,10]]},"781":{"position":[[0,10]]},"782":{"position":[[0,10]]},"783":{"position":[[36,10],[1358,10],[1685,10]]},"964":{"position":[[581,11]]}},"keywords":{}}],["predict",{"_index":2051,"title":{},"content":{"215":{"position":[[1943,12]]},"785":{"position":[[1943,12]]}},"keywords":{}}],["prediction.logs/metr",{"_index":1859,"title":{},"content":{"181":{"position":[[2020,23]]},"764":{"position":[[2033,23]]}},"keywords":{}}],["pref",{"_index":1540,"title":{},"content":{"156":{"position":[[514,9],[576,9]]},"217":{"position":[[1244,10]]},"229":{"position":[[1165,10]]},"298":{"position":[[107,10],[133,10]]},"726":{"position":[[514,9],[576,9]]},"787":{"position":[[1244,10]]},"792":{"position":[[1166,10]]},"865":{"position":[[107,10],[133,10]]}},"keywords":{}}],["prefac",{"_index":1177,"title":{"117":{"position":[[0,7]]},"328":{"position":[[3,7]]},"685":{"position":[[0,7]]}},"content":{},"keywords":{}}],["prefix",{"_index":1897,"title":{},"content":{"188":{"position":[[401,7]]},"771":{"position":[[401,7]]}},"keywords":{}}],["prefix=\"apach",{"_index":2593,"title":{},"content":{"340":{"position":[[302,14]]}},"keywords":{}}],["prem",{"_index":1799,"title":{},"content":{"175":{"position":[[82,4]]},"193":{"position":[[372,4]]},"745":{"position":[[82,4]]},"776":{"position":[[372,4]]}},"keywords":{}}],["prem/on",{"_index":1805,"title":{},"content":{"175":{"position":[[493,7]]},"179":{"position":[[1130,7]]},"745":{"position":[[493,7]]},"749":{"position":[[1135,7]]}},"keywords":{}}],["prepar",{"_index":1489,"title":{"338":{"position":[[4,7]]},"344":{"position":[[3,7]]},"386":{"position":[[0,7]]},"387":{"position":[[0,7]]},"398":{"position":[[0,7]]},"410":{"position":[[0,7]]},"416":{"position":[[3,7]]},"913":{"position":[[0,7]]},"914":{"position":[[0,7]]},"925":{"position":[[0,7]]},"937":{"position":[[0,7]]},"943":{"position":[[3,7]]}},"content":{"153":{"position":[[36,8]]},"160":{"position":[[272,8],[303,8]]},"165":{"position":[[18,9]]},"248":{"position":[[1084,8]]},"349":{"position":[[389,8]]},"389":{"position":[[7637,9],[7794,9],[7943,9],[8117,9],[8277,9],[8429,9],[8597,9],[8759,9],[8965,9],[9170,9],[9351,9],[9535,9],[9700,9],[9841,9],[9997,9],[10168,9],[10320,9],[10453,9],[10608,9],[10785,9],[10952,9],[11108,9],[11249,9],[11414,9],[11578,9],[11761,9],[11951,9],[12138,9],[12309,9],[12462,9],[12613,9],[12803,9],[12978,9],[23355,9],[23512,9],[23661,9],[23835,9],[23995,9],[24147,9],[24315,9],[24477,9],[24683,9],[24888,9],[25069,9],[25253,9],[25418,9],[25559,9],[25715,9],[25886,9],[26038,9],[26171,9],[26326,9],[26503,9],[26670,9],[26826,9],[26967,9],[27127,9],[27310,9],[27500,9],[27687,9],[27858,9],[28011,9],[28162,9],[28352,9],[28527,9]]},"723":{"position":[[36,8]]},"730":{"position":[[272,8],[303,8]]},"735":{"position":[[18,9]]},"818":{"position":[[1084,8]]},"916":{"position":[[7637,9],[7794,9],[7943,9],[8117,9],[8277,9],[8429,9],[8597,9],[8759,9],[8965,9],[9170,9],[9351,9],[9535,9],[9700,9],[9841,9],[9997,9],[10168,9],[10320,9],[10453,9],[10608,9],[10785,9],[10952,9],[11108,9],[11249,9],[11414,9],[11578,9],[11761,9],[11951,9],[12138,9],[12309,9],[12462,9],[12613,9],[12803,9],[12978,9],[23355,9],[23512,9],[23661,9],[23835,9],[23995,9],[24147,9],[24315,9],[24477,9],[24683,9],[24888,9],[25069,9],[25253,9],[25418,9],[25559,9],[25715,9],[25886,9],[26038,9],[26171,9],[26326,9],[26503,9],[26670,9],[26826,9],[26967,9],[27127,9],[27310,9],[27500,9],[27687,9],[27858,9],[28011,9],[28162,9],[28352,9],[28527,9]]}},"keywords":{}}],["prerequisit",{"_index":34,"title":{"4":{"position":[[0,12]]},"279":{"position":[[0,13]]},"297":{"position":[[0,13]]},"379":{"position":[[0,12]]},"507":{"position":[[0,13]]},"565":{"position":[[0,12]]},"574":{"position":[[0,12]]},"593":{"position":[[0,12]]},"850":{"position":[[0,13]]},"864":{"position":[[0,13]]},"906":{"position":[[0,12]]},"1046":{"position":[[0,13]]},"1085":{"position":[[0,12]]},"1100":{"position":[[0,12]]}},"content":{"406":{"position":[[793,13]]},"410":{"position":[[0,12]]},"937":{"position":[[0,12]]}},"keywords":{}}],["presid",{"_index":1054,"title":{},"content":{"107":{"position":[[4921,10]]}},"keywords":{}}],["press",{"_index":4241,"title":{},"content":{"869":{"position":[[1644,5]]}},"keywords":{}}],["prevent",{"_index":1090,"title":{},"content":{"107":{"position":[[6672,7]]},"336":{"position":[[799,8]]}},"keywords":{}}],["previou",{"_index":130,"title":{},"content":{"7":{"position":[[895,8]]},"107":{"position":[[5595,8]]},"193":{"position":[[126,8]]},"341":{"position":[[40,8]]},"571":{"position":[[515,8]]},"596":{"position":[[895,8]]},"776":{"position":[[126,8]]},"1091":{"position":[[515,8]]}},"keywords":{}}],["previous",{"_index":3042,"title":{},"content":{"389":{"position":[[6978,10],[7749,10],[7896,10],[8067,10],[8241,10],[8389,10],[8557,10],[8711,10],[8917,10],[9123,10],[9304,10],[9485,10],[9661,10],[9795,10],[9951,10],[10131,10],[10280,10],[10414,10],[10567,10],[10736,10],[10903,10],[11072,10],[11202,10],[11365,10],[11534,10],[11710,10],[11905,10],[12085,10],[12262,10],[12419,10],[12566,10],[12755,10],[12933,10],[22696,10],[23467,10],[23614,10],[23785,10],[23959,10],[24107,10],[24275,10],[24429,10],[24635,10],[24841,10],[25022,10],[25203,10],[25379,10],[25513,10],[25669,10],[25849,10],[25998,10],[26132,10],[26285,10],[26454,10],[26621,10],[26790,10],[26920,10],[27083,10],[27259,10],[27454,10],[27634,10],[27811,10],[27968,10],[28115,10],[28304,10],[28482,10]]},"916":{"position":[[6978,10],[7749,10],[7896,10],[8067,10],[8241,10],[8389,10],[8557,10],[8711,10],[8917,10],[9123,10],[9304,10],[9485,10],[9661,10],[9795,10],[9951,10],[10131,10],[10280,10],[10414,10],[10567,10],[10736,10],[10903,10],[11072,10],[11202,10],[11365,10],[11534,10],[11710,10],[11905,10],[12085,10],[12262,10],[12419,10],[12566,10],[12755,10],[12933,10],[22696,10],[23467,10],[23614,10],[23785,10],[23959,10],[24107,10],[24275,10],[24429,10],[24635,10],[24841,10],[25022,10],[25203,10],[25379,10],[25513,10],[25669,10],[25849,10],[25998,10],[26132,10],[26285,10],[26454,10],[26621,10],[26790,10],[26920,10],[27083,10],[27259,10],[27454,10],[27634,10],[27811,10],[27968,10],[28115,10],[28304,10],[28482,10]]}},"keywords":{}}],["prim",{"_index":2498,"title":{},"content":{"331":{"position":[[1646,5],[1902,5]]}},"keywords":{}}],["primari",{"_index":1055,"title":{},"content":{"107":{"position":[[4958,7],[5879,7]]},"156":{"position":[[173,7]]},"171":{"position":[[142,7]]},"726":{"position":[[173,7]]},"741":{"position":[[142,7]]}},"keywords":{}}],["primarili",{"_index":576,"title":{},"content":{"34":{"position":[[19,9]]},"626":{"position":[[19,9]]}},"keywords":{}}],["principl",{"_index":952,"title":{},"content":{"107":{"position":[[550,11]]}},"keywords":{}}],["print",{"_index":2408,"title":{},"content":{"315":{"position":[[134,5],[169,5],[334,5],[410,5]]},"342":{"position":[[37,5]]},"501":{"position":[[0,5],[61,5]]},"1028":{"position":[[0,5],[61,5]]}},"keywords":{}}],["print(log",{"_index":3376,"title":{},"content":{"415":{"position":[[2082,11]]},"942":{"position":[[2100,11]]}},"keywords":{}}],["print_funct",{"_index":3255,"title":{},"content":{"407":{"position":[[164,14]]},"934":{"position":[[164,14]]}},"keywords":{}}],["printf",{"_index":498,"title":{},"content":{"28":{"position":[[700,6],[983,6]]},"546":{"position":[[700,6],[983,6]]},"616":{"position":[[700,6],[983,6]]},"1072":{"position":[[700,6],[983,6]]}},"keywords":{}}],["prior",{"_index":4112,"title":{},"content":{"578":{"position":[[746,5]]},"1104":{"position":[[746,5]]}},"keywords":{}}],["prioriti",{"_index":2098,"title":{},"content":{"219":{"position":[[559,9]]},"789":{"position":[[559,9]]}},"keywords":{}}],["privat",{"_index":626,"title":{},"content":{"35":{"position":[[1430,8],[1456,7]]},"55":{"position":[[695,8]]},"107":{"position":[[5998,7]]},"141":{"position":[[178,7],[677,7]]},"336":{"position":[[929,7]]},"339":{"position":[[422,7]]},"627":{"position":[[1430,8],[1456,7]]},"647":{"position":[[695,8]]}},"keywords":{}}],["private@submarine.apache.org",{"_index":1394,"title":{},"content":{"141":{"position":[[1562,28]]}},"keywords":{}}],["privileg",{"_index":1144,"title":{},"content":{"107":{"position":[[10003,10],[10150,10]]},"122":{"position":[[22,9]]},"176":{"position":[[1115,10]]},"690":{"position":[[22,9]]},"746":{"position":[[1118,10]]}},"keywords":{}}],["probl",{"_index":1708,"title":{},"content":{"167":{"position":[[39,8]]},"261":{"position":[[321,8]]},"283":{"position":[[72,7]]},"737":{"position":[[39,8]]},"832":{"position":[[321,8]]},"854":{"position":[[72,7]]}},"keywords":{}}],["proc/$pid/ns/mnt",{"_index":514,"title":{},"content":{"28":{"position":[[964,18]]},"546":{"position":[[964,18]]},"616":{"position":[[964,18]]},"1072":{"position":[[964,18]]}},"keywords":{}}],["proc/*/mount",{"_index":492,"title":{},"content":{"28":{"position":[[604,14]]},"546":{"position":[[604,14]]},"616":{"position":[[604,14]]},"1072":{"position":[[604,14]]}},"keywords":{}}],["procedur",{"_index":1642,"title":{},"content":{"161":{"position":[[137,9],[1004,11]]},"731":{"position":[[137,9],[1004,11]]}},"keywords":{}}],["process",{"_index":236,"title":{"130":{"position":[[19,7]]},"141":{"position":[[11,7]]},"418":{"position":[[15,7]]},"698":{"position":[[19,7]]},"945":{"position":[[15,7]]}},"content":{"16":{"position":[[195,7],[367,7],[428,8],[596,7]]},"28":{"position":[[303,7],[1050,7]]},"128":{"position":[[235,8]]},"141":{"position":[[2144,7]]},"145":{"position":[[261,7]]},"159":{"position":[[2619,9]]},"248":{"position":[[222,11]]},"259":{"position":[[492,11]]},"261":{"position":[[41,9],[245,9]]},"262":{"position":[[45,7],[130,7],[238,8],[317,7],[345,7]]},"263":{"position":[[93,9],[156,7],[164,9],[310,7]]},"268":{"position":[[195,7],[233,10]]},"270":{"position":[[277,8],[408,8],[502,7],[712,9],[874,9]]},"273":{"position":[[84,9],[163,9],[385,9],[429,10],[526,8],[589,7],[836,7],[1327,8],[1386,7]]},"312":{"position":[[23,8]]},"389":{"position":[[13084,10],[13139,10],[17377,10],[17431,10],[28633,10],[28688,10],[32231,10],[32285,10]]},"491":{"position":[[189,7]]},"493":{"position":[[90,7]]},"546":{"position":[[303,7],[1050,7]]},"608":{"position":[[195,7],[367,7],[428,8],[596,7]]},"616":{"position":[[303,7],[1050,7]]},"696":{"position":[[235,8]]},"715":{"position":[[261,7]]},"729":{"position":[[2619,9]]},"818":{"position":[[222,11]]},"830":{"position":[[492,11]]},"832":{"position":[[41,9],[245,9]]},"833":{"position":[[45,7],[130,7],[238,8],[317,7],[345,7]]},"834":{"position":[[93,9],[156,7],[164,9],[310,7]]},"839":{"position":[[195,7],[233,10]]},"841":{"position":[[277,8],[408,8],[502,7],[712,9],[874,9]]},"844":{"position":[[84,9],[163,9],[385,9],[429,10],[526,8],[589,7],[836,7],[1327,8],[1386,7]]},"916":{"position":[[13084,10],[13139,10],[17377,10],[17431,10],[28633,10],[28688,10],[32231,10],[32285,10]]},"1005":{"position":[[189,7]]},"1007":{"position":[[90,7]]},"1072":{"position":[[303,7],[1050,7]]}},"keywords":{}}],["process.aft",{"_index":2623,"title":{},"content":{"350":{"position":[[301,13]]}},"keywords":{}}],["process.it",{"_index":2654,"title":{},"content":{"355":{"position":[[352,10]]}},"keywords":{}}],["processg",{"_index":1298,"title":{},"content":{"133":{"position":[[1888,11]]}},"keywords":{}}],["procmail",{"_index":2911,"title":{},"content":{"389":{"position":[[2617,8],[18459,8]]},"916":{"position":[[2617,8],[18459,8]]}},"keywords":{}}],["produc",{"_index":1017,"title":{},"content":{"107":{"position":[[3253,7]]},"173":{"position":[[173,8]]},"578":{"position":[[527,8]]},"743":{"position":[[174,8]]},"1104":{"position":[[527,8]]}},"keywords":{}}],["product",{"_index":874,"title":{},"content":{"95":{"position":[[186,13]]},"107":{"position":[[3599,7],[4022,8],[4292,8],[9154,7],[9209,8],[9413,7],[10858,7]]},"161":{"position":[[180,10],[863,11]]},"168":{"position":[[362,11]]},"317":{"position":[[375,10]]},"731":{"position":[[180,10],[863,11]]},"738":{"position":[[362,11]]}},"keywords":{}}],["profil",{"_index":616,"title":{"172":{"position":[[12,8]]},"742":{"position":[[12,8]]}},"content":{"35":{"position":[[1009,8]]},"151":{"position":[[12,8],[1140,8]]},"172":{"position":[[12,8],[451,8]]},"181":{"position":[[1515,7]]},"204":{"position":[[311,7]]},"336":{"position":[[654,10],[665,9],[972,10],[983,11]]},"627":{"position":[[1009,8]]},"721":{"position":[[12,8],[1140,8]]},"742":{"position":[[12,8],[451,8]]},"753":{"position":[[311,7]]},"764":{"position":[[1522,7]]},"1053":{"position":[[420,8]]}},"keywords":{}}],["profiles.data",{"_index":1808,"title":{},"content":{"176":{"position":[[187,13]]},"746":{"position":[[187,13]]}},"keywords":{}}],["program",{"_index":450,"title":{},"content":{"26":{"position":[[197,7]]},"171":{"position":[[1097,8]]},"263":{"position":[[192,8]]},"265":{"position":[[263,8]]},"544":{"position":[[197,7]]},"614":{"position":[[197,7]]},"741":{"position":[[1102,8]]},"834":{"position":[[192,8]]},"836":{"position":[[263,8]]},"1070":{"position":[[197,7]]}},"keywords":{}}],["progress",{"_index":1956,"title":{},"content":{"195":{"position":[[120,11],[221,9]]},"201":{"position":[[665,8],[722,9]]},"750":{"position":[[666,8],[723,9]]},"778":{"position":[[120,11],[221,9]]}},"keywords":{}}],["project",{"_index":570,"title":{"35":{"position":[[0,7]]},"55":{"position":[[0,7]]},"122":{"position":[[38,7]]},"358":{"position":[[0,7]]},"360":{"position":[[13,7]]},"627":{"position":[[0,7]]},"647":{"position":[[0,7]]},"690":{"position":[[38,7]]},"880":{"position":[[0,7]]},"882":{"position":[[13,7]]}},"content":{"33":{"position":[[413,7],[533,8]]},"35":{"position":[[7,7],[29,8],[99,7],[148,7],[372,7],[417,7],[574,7],[717,8],[746,8],[827,7],[898,7],[967,7],[995,7],[1069,7],[1109,8],[1139,7],[1161,7],[1219,8],[1253,7],[1302,7],[1319,7],[1464,8],[1507,7],[1575,7],[1707,8],[1809,7],[1872,8],[1918,7],[1992,8],[2078,7],[2226,8],[2347,8],[2474,8],[2599,8],[2892,7],[2953,8],[2982,7],[3131,7],[3291,8],[3385,7],[3571,7],[3651,7],[3675,7],[3723,7],[3757,7]]},"55":{"position":[[2,7],[33,8],[46,7],[67,7],[139,44],[197,7],[290,7],[559,8],[585,7],[1335,7]]},"107":{"position":[[66,7],[133,8],[222,7],[506,8],[670,7],[713,8],[766,8],[909,8],[1011,7],[1198,8],[1524,8],[1598,7],[2170,7],[2692,8],[2976,7],[3621,7],[3654,7],[3816,7],[4055,8],[4409,7],[4634,7],[5020,8],[5146,8],[5503,8],[5846,7],[5887,7],[7025,7],[8682,8],[8840,7],[9299,8],[9587,8],[9607,7],[9809,7]]},"122":{"position":[[263,8]]},"133":{"position":[[187,8],[459,8],[531,8],[1195,7],[2358,8],[2739,7],[2891,8]]},"139":{"position":[[72,8],[434,7]]},"141":{"position":[[435,7],[1912,7],[1934,7],[2012,9]]},"144":{"position":[[255,8]]},"148":{"position":[[53,7]]},"153":{"position":[[379,8]]},"167":{"position":[[372,7]]},"220":{"position":[[24,7],[62,7]]},"259":{"position":[[409,7]]},"324":{"position":[[294,7]]},"329":{"position":[[137,8]]},"359":{"position":[[77,8]]},"368":{"position":[[220,8],[375,8]]},"411":{"position":[[10,7]]},"510":{"position":[[71,7]]},"568":{"position":[[252,7]]},"625":{"position":[[413,7],[533,8]]},"627":{"position":[[7,7],[29,8],[99,7],[148,7],[372,7],[417,7],[574,7],[717,8],[746,8],[827,7],[898,7],[967,7],[995,7],[1069,7],[1109,8],[1139,7],[1161,7],[1219,8],[1253,7],[1302,7],[1319,7],[1464,8],[1507,7],[1575,7],[1707,8],[1809,7],[1872,8],[1918,7],[1992,8],[2078,7],[2226,8],[2347,8],[2474,8],[2599,8],[2892,7],[2953,8],[2982,7],[3131,7],[3291,8],[3385,7],[3571,7],[3651,7],[3675,7],[3723,7],[3757,7]]},"647":{"position":[[2,7],[33,8],[46,7],[67,7],[139,44],[197,7],[290,7],[559,8],[585,7],[1335,7]]},"690":{"position":[[263,8]]},"711":{"position":[[72,8],[434,7]]},"714":{"position":[[255,8]]},"718":{"position":[[53,7]]},"723":{"position":[[379,8]]},"737":{"position":[[372,7]]},"790":{"position":[[24,7],[62,7]]},"830":{"position":[[409,7]]},"881":{"position":[[77,8]]},"891":{"position":[[220,8],[375,8]]},"894":{"position":[[294,7]]},"938":{"position":[[10,7]]},"1049":{"position":[[71,7]]},"1053":{"position":[[109,7]]},"1088":{"position":[[252,7]]}},"keywords":{}}],["project'",{"_index":643,"title":{},"content":{"35":{"position":[[2130,9],[2244,9],[2374,9],[2492,9],[2629,9],[2724,9],[2750,9],[2852,9],[3334,9]]},"627":{"position":[[2130,9],[2244,9],[2374,9],[2492,9],[2629,9],[2724,9],[2750,9],[2852,9],[3334,9]]}},"keywords":{}}],["project.commit",{"_index":1434,"title":{},"content":{"148":{"position":[[246,15]]},"718":{"position":[[246,15]]}},"keywords":{}}],["project.committ",{"_index":1362,"title":{},"content":{"139":{"position":[[162,18]]},"711":{"position":[[162,18]]}},"keywords":{}}],["project.egg.infoin",{"_index":3653,"title":{},"content":{"513":{"position":[[285,18]]},"1052":{"position":[[285,18]]}},"keywords":{}}],["project.resolv",{"_index":1044,"title":{},"content":{"107":{"position":[[4247,17]]}},"keywords":{}}],["project.team",{"_index":634,"title":{},"content":{"35":{"position":[[1681,13]]},"627":{"position":[[1681,13]]}},"keywords":{}}],["project/notebook",{"_index":2123,"title":{},"content":{"229":{"position":[[166,17]]},"792":{"position":[[166,17]]}},"keywords":{}}],["project/notebook(content)/models/metrics/dataset",{"_index":2133,"title":{},"content":{"229":{"position":[[1223,48]]},"792":{"position":[[1224,48]]}},"keywords":{}}],["project=0.8.4=py_0",{"_index":1517,"title":{},"content":{"154":{"position":[[733,18]]},"724":{"position":[[733,18]]}},"keywords":{}}],["projectnam",{"_index":3637,"title":{},"content":{"511":{"position":[[962,13]]}},"keywords":{}}],["projectnomin",{"_index":1046,"title":{},"content":{"107":{"position":[[4308,17]]}},"keywords":{}}],["project’",{"_index":986,"title":{},"content":{"107":{"position":[[1728,9],[1773,9],[4134,9],[9199,9]]}},"keywords":{}}],["prometheu",{"_index":2092,"title":{},"content":{"218":{"position":[[369,11]]},"788":{"position":[[369,11]]}},"keywords":{}}],["promot",{"_index":1314,"title":{},"content":{"133":{"position":[[2849,8]]}},"keywords":{}}],["promptli",{"_index":1417,"title":{},"content":{"144":{"position":[[513,9]]},"714":{"position":[[513,9]]}},"keywords":{}}],["proof",{"_index":1493,"title":{"161":{"position":[[146,5]]},"731":{"position":[[146,5]]}},"content":{"153":{"position":[[118,5]]},"161":{"position":[[985,5]]},"198":{"position":[[127,5]]},"723":{"position":[[118,5]]},"731":{"position":[[985,5]]},"781":{"position":[[127,5]]}},"keywords":{}}],["prop",{"_index":1500,"title":{},"content":{"153":{"position":[[484,6]]},"212":{"position":[[296,6]]},"281":{"position":[[305,6]]},"400":{"position":[[74,6]]},"723":{"position":[[484,6]]},"761":{"position":[[296,6]]},"852":{"position":[[305,6]]},"927":{"position":[[74,6]]}},"keywords":{}}],["properli",{"_index":1503,"title":{},"content":{"153":{"position":[[662,9]]},"163":{"position":[[616,9]]},"182":{"position":[[731,8]]},"273":{"position":[[106,9]]},"570":{"position":[[37,8]]},"723":{"position":[[662,9]]},"733":{"position":[[616,9]]},"765":{"position":[[731,8]]},"844":{"position":[[106,9]]},"1090":{"position":[[37,8]]}},"keywords":{}}],["properti",{"_index":268,"title":{},"content":{"17":{"position":[[355,8]]},"199":{"position":[[90,11]]},"336":{"position":[[699,12],[958,13]]},"559":{"position":[[631,10]]},"570":{"position":[[1476,11],[1722,11],[10893,11],[11139,11]]},"609":{"position":[[355,8]]},"782":{"position":[[90,11]]},"1064":{"position":[[188,10],[318,11],[330,10],[429,11],[441,10],[558,11],[570,10],[656,11],[668,10],[799,11],[964,10],[1034,11],[1046,10],[1121,11],[1133,10],[1236,11],[1248,10],[1360,11],[1372,10],[1462,11],[1474,10],[1560,11]]},"1090":{"position":[[1476,11],[1722,11],[10893,11],[11139,11]]},"1094":{"position":[[631,10]]}},"keywords":{}}],["propos",{"_index":1087,"title":{"223":{"position":[[0,8]]},"231":{"position":[[0,8]]},"258":{"position":[[18,9]]},"794":{"position":[[0,8]]},"808":{"position":[[0,8]]},"829":{"position":[[18,9]]}},"content":{"107":{"position":[[6625,8],[9696,8],[9792,8],[9893,8]]},"141":{"position":[[518,8]]},"144":{"position":[[429,8]]},"223":{"position":[[53,7]]},"231":{"position":[[799,7]]},"714":{"position":[[429,8]]},"794":{"position":[[1052,7]]},"808":{"position":[[53,7]]}},"keywords":{}}],["protect",{"_index":2033,"title":{},"content":{"213":{"position":[[238,7]]},"762":{"position":[[238,7]]}},"keywords":{}}],["protocol",{"_index":331,"title":{},"content":{"20":{"position":[[591,9],[704,9]]},"620":{"position":[[591,9],[704,9]]}},"keywords":{}}],["provid",{"_index":645,"title":{},"content":{"35":{"position":[[2916,8]]},"107":{"position":[[1210,9],[2865,8]]},"159":{"position":[[2592,10]]},"174":{"position":[[14,8]]},"179":{"position":[[1367,8]]},"194":{"position":[[824,7],[1021,8],[1342,9]]},"199":{"position":[[213,8]]},"212":{"position":[[437,7]]},"222":{"position":[[438,7]]},"231":{"position":[[1008,8]]},"246":{"position":[[443,7]]},"248":{"position":[[130,7],[452,7],[817,7]]},"252":{"position":[[157,7]]},"259":{"position":[[125,8],[279,7],[423,7]]},"262":{"position":[[372,7]]},"265":{"position":[[379,7]]},"267":{"position":[[104,7]]},"281":{"position":[[10,8]]},"361":{"position":[[0,7]]},"365":{"position":[[0,7]]},"367":{"position":[[0,7]]},"368":{"position":[[72,8],[146,8]]},"369":{"position":[[42,8],[173,8]]},"376":{"position":[[3,8]]},"389":{"position":[[13455,7],[15159,7],[15427,7],[29004,7],[30708,7],[30976,7]]},"400":{"position":[[31,8]]},"508":{"position":[[22,7]]},"550":{"position":[[3,8]]},"554":{"position":[[3,8]]},"560":{"position":[[3,8]]},"565":{"position":[[111,8]]},"578":{"position":[[341,8]]},"627":{"position":[[2916,8]]},"729":{"position":[[2592,10]]},"744":{"position":[[14,8]]},"749":{"position":[[1372,8]]},"761":{"position":[[437,7]]},"777":{"position":[[830,7],[877,7],[1301,8],[1622,9]]},"782":{"position":[[213,8]]},"794":{"position":[[1261,8]]},"807":{"position":[[438,7]]},"816":{"position":[[443,7]]},"818":{"position":[[130,7],[452,7],[817,7]]},"822":{"position":[[162,7]]},"830":{"position":[[125,8],[279,7],[423,7]]},"833":{"position":[[372,7]]},"836":{"position":[[379,7]]},"838":{"position":[[104,7]]},"852":{"position":[[10,8]]},"883":{"position":[[0,7]]},"887":{"position":[[0,7]]},"888":{"position":[[0,7]]},"890":{"position":[[0,7]]},"891":{"position":[[72,8],[146,8]]},"892":{"position":[[42,8],[173,8]]},"903":{"position":[[3,8]]},"916":{"position":[[13455,7],[15159,7],[15427,7],[29004,7],[30708,7],[30976,7]]},"927":{"position":[[31,8]]},"1032":{"position":[[27,8]]},"1047":{"position":[[22,7]]},"1064":{"position":[[1683,9]]},"1076":{"position":[[3,8]]},"1080":{"position":[[3,8]]},"1085":{"position":[[111,8]]},"1095":{"position":[[3,8]]},"1104":{"position":[[341,8]]}},"keywords":{}}],["proxi",{"_index":2327,"title":{},"content":{"301":{"position":[[250,5]]},"384":{"position":[[110,5]]},"396":{"position":[[8,5]]},"512":{"position":[[182,6],[239,5]]},"868":{"position":[[234,5]]},"911":{"position":[[110,5]]},"923":{"position":[[8,5]]},"1051":{"position":[[170,6],[227,5]]}},"keywords":{}}],["ps",{"_index":737,"title":{},"content":{"77":{"position":[[416,5],[1174,5]]},"78":{"position":[[387,5],[1292,5]]},"79":{"position":[[683,5]]},"80":{"position":[[716,5]]},"81":{"position":[[424,5],[1027,5]]},"82":{"position":[[719,5]]},"86":{"position":[[844,5]]},"89":{"position":[[841,5]]},"130":{"position":[[172,4]]},"182":{"position":[[1074,3]]},"223":{"position":[[458,3]]},"226":{"position":[[193,3]]},"438":{"position":[[382,5],[1290,6]]},"441":{"position":[[353,5],[1382,6]]},"443":{"position":[[882,6],[1863,6]]},"446":{"position":[[799,6]]},"449":{"position":[[383,5],[1321,6]]},"452":{"position":[[802,6]]},"454":{"position":[[243,2]]},"457":{"position":[[271,2]]},"461":{"position":[[812,5],[2679,6]]},"463":{"position":[[1681,6]]},"466":{"position":[[817,5],[2709,6]]},"469":{"position":[[1705,6]]},"472":{"position":[[980,6]]},"496":{"position":[[601,5]]},"569":{"position":[[330,2],[417,5],[423,4],[817,2],[834,3],[941,3],[1016,2],[1025,2],[1452,5],[1458,4]]},"570":{"position":[[15976,3],[15992,3],[16000,2],[17205,2]]},"579":{"position":[[1528,2],[1695,2],[2162,2]]},"584":{"position":[[1388,2],[1555,2],[2022,2]]},"669":{"position":[[844,5]]},"672":{"position":[[841,5]]},"676":{"position":[[416,5],[1174,5]]},"677":{"position":[[387,5],[1292,5]]},"678":{"position":[[683,5]]},"679":{"position":[[716,5]]},"680":{"position":[[424,5],[1027,5]]},"681":{"position":[[719,5]]},"698":{"position":[[172,4]]},"765":{"position":[[1074,3]]},"808":{"position":[[458,3]]},"811":{"position":[[193,3]]},"965":{"position":[[382,5],[1290,6]]},"968":{"position":[[353,5],[1382,6]]},"970":{"position":[[882,6],[1863,6]]},"973":{"position":[[799,6]]},"976":{"position":[[383,5],[1321,6]]},"979":{"position":[[802,6]]},"981":{"position":[[243,2]]},"984":{"position":[[271,2]]},"988":{"position":[[812,5],[2679,6]]},"990":{"position":[[1681,6]]},"993":{"position":[[817,5],[2709,6]]},"996":{"position":[[1705,6]]},"999":{"position":[[980,6]]},"1023":{"position":[[601,5]]},"1089":{"position":[[330,2],[417,5],[423,4],[817,2],[834,3],[941,3],[1016,2],[1025,2],[1452,5],[1458,4]]},"1090":{"position":[[15976,3],[15992,3],[16000,2],[17205,2]]},"1105":{"position":[[1528,2],[1695,2],[2162,2]]},"1110":{"position":[[1388,2],[1555,2],[2022,2]]}},"keywords":{}}],["ps/chief",{"_index":3580,"title":{},"content":{"501":{"position":[[204,8]]},"1028":{"position":[[204,8]]}},"keywords":{}}],["ps_docker_imag",{"_index":367,"title":{},"content":{"23":{"position":[[276,15]]},"541":{"position":[[276,15]]},"611":{"position":[[276,15]]},"1067":{"position":[[276,15]]}},"keywords":{}}],["ps_launch_cmd",{"_index":378,"title":{},"content":{"23":{"position":[[516,13]]},"541":{"position":[[516,13]]},"579":{"position":[[652,13]]},"584":{"position":[[564,13]]},"589":{"position":[[584,13]]},"590":{"position":[[839,13]]},"611":{"position":[[516,13]]},"1067":{"position":[[516,13]]},"1105":{"position":[[652,13]]},"1110":{"position":[[564,13]]},"1115":{"position":[[584,13]]},"1116":{"position":[[839,13]]}},"keywords":{}}],["ps_resourc",{"_index":376,"title":{},"content":{"23":{"position":[[474,12]]},"541":{"position":[[474,12]]},"579":{"position":[[489,12]]},"584":{"position":[[456,12]]},"589":{"position":[[548,12]]},"590":{"position":[[803,12]]},"611":{"position":[[474,12]]},"1067":{"position":[[474,12]]},"1105":{"position":[[489,12]]},"1110":{"position":[[456,12]]},"1115":{"position":[[548,12]]},"1116":{"position":[[803,12]]}},"keywords":{}}],["ps_spec",{"_index":3278,"title":{},"content":{"407":{"position":[[985,7]]},"934":{"position":[[1005,7]]}},"keywords":{}}],["ps_spec,'work",{"_index":3287,"title":{},"content":{"407":{"position":[[1252,17]]},"934":{"position":[[1272,17]]}},"keywords":{}}],["pseudo",{"_index":1888,"title":{},"content":{"187":{"position":[[158,6]]},"770":{"position":[[158,6]]}},"keywords":{}}],["pspark",{"_index":4308,"title":{},"content":{"1053":{"position":[[442,6],[455,6],[468,6]]}},"keywords":{}}],["psrc",{"_index":4226,"title":{},"content":{"853":{"position":[[644,4]]}},"keywords":{}}],["pst",{"_index":2645,"title":{},"content":{"352":{"position":[[897,5]]}},"keywords":{}}],["pub",{"_index":2511,"title":{},"content":{"331":{"position":[[2608,3]]},"332":{"position":[[52,3]]}},"keywords":{}}],["public",{"_index":639,"title":{"332":{"position":[[36,6]]},"334":{"position":[[17,6]]},"335":{"position":[[15,6]]},"349":{"position":[[14,6]]}},"content":{"35":{"position":[[1865,6],[2104,7],[2275,7],[2523,7],[2781,7]]},"55":{"position":[[785,53],[932,6],[1032,6],[1150,6],[1277,6]]},"175":{"position":[[128,6]]},"224":{"position":[[360,6],[455,6],[529,6]]},"246":{"position":[[573,6]]},"314":{"position":[[11,6],[160,6]]},"331":{"position":[[2566,6]]},"332":{"position":[[205,6]]},"334":{"position":[[224,6],[1070,6]]},"352":{"position":[[754,6]]},"627":{"position":[[1865,6],[2104,7],[2275,7],[2523,7],[2781,7]]},"647":{"position":[[785,53],[932,6],[1032,6],[1150,6],[1277,6]]},"745":{"position":[[128,6]]},"809":{"position":[[360,6],[455,6],[529,6]]},"816":{"position":[[578,6]]}},"keywords":{}}],["public/priv",{"_index":2069,"title":{},"content":{"216":{"position":[[738,14]]},"786":{"position":[[738,14]]}},"keywords":{}}],["publicli",{"_index":627,"title":{},"content":{"35":{"position":[[1523,8]]},"627":{"position":[[1523,8]]}},"keywords":{}}],["publish",{"_index":1021,"title":{"345":{"position":[[4,7]]}},"content":{"107":{"position":[[3321,7]]},"133":{"position":[[1653,7]]}},"keywords":{}}],["pull",{"_index":1183,"title":{"128":{"position":[[16,4]]},"129":{"position":[[44,4]]},"696":{"position":[[16,4]]},"697":{"position":[[44,4]]}},"content":{"119":{"position":[[25,4]]},"125":{"position":[[110,4],[161,4]]},"127":{"position":[[129,4]]},"128":{"position":[[79,4],[109,4],[123,4],[146,4]]},"129":{"position":[[71,4]]},"130":{"position":[[44,4]]},"131":{"position":[[57,4],[161,4]]},"144":{"position":[[206,5],[532,4]]},"229":{"position":[[1517,4]]},"307":{"position":[[67,4]]},"338":{"position":[[0,4]]},"352":{"position":[[342,4]]},"372":{"position":[[263,4],[319,4],[379,4],[449,4]]},"380":{"position":[[284,6]]},"437":{"position":[[1177,7]]},"509":{"position":[[371,4]]},"687":{"position":[[25,4]]},"693":{"position":[[110,4],[161,4]]},"695":{"position":[[129,4]]},"696":{"position":[[79,4],[109,4],[123,4],[146,4]]},"697":{"position":[[71,4]]},"698":{"position":[[44,4]]},"699":{"position":[[57,4],[161,4]]},"714":{"position":[[206,5],[532,4]]},"792":{"position":[[1519,4]]},"873":{"position":[[67,4]]},"907":{"position":[[284,6]]},"964":{"position":[[1177,7]]},"1048":{"position":[[371,4]]}},"keywords":{}}],["purpos",{"_index":1652,"title":{},"content":{"161":{"position":[[614,9]]},"171":{"position":[[150,8]]},"731":{"position":[[614,9]]},"741":{"position":[[150,8]]}},"keywords":{}}],["push",{"_index":1194,"title":{"126":{"position":[[7,4]]},"694":{"position":[[7,4]]}},"content":{"121":{"position":[[322,4],[372,4],[527,6],[608,6]]},"126":{"position":[[4,4]]},"131":{"position":[[0,4]]},"159":{"position":[[111,4]]},"161":{"position":[[172,4],[806,4]]},"168":{"position":[[348,4]]},"217":{"position":[[814,4]]},"229":{"position":[[1399,4]]},"281":{"position":[[295,4]]},"304":{"position":[[283,4]]},"321":{"position":[[22,7]]},"346":{"position":[[4,4]]},"375":{"position":[[1585,4],[1651,4]]},"549":{"position":[[1610,4],[1676,4]]},"553":{"position":[[2008,4],[2074,4]]},"559":{"position":[[1645,4],[1711,4]]},"689":{"position":[[322,4],[372,4],[527,6],[608,6]]},"694":{"position":[[4,4]]},"699":{"position":[[0,4]]},"729":{"position":[[111,4]]},"731":{"position":[[172,4],[806,4]]},"738":{"position":[[348,4]]},"787":{"position":[[814,4]]},"792":{"position":[[1401,4]]},"852":{"position":[[295,4]]},"870":{"position":[[283,4]]},"878":{"position":[[22,7]]},"902":{"position":[[1585,4],[1651,4]]},"1075":{"position":[[1610,4],[1676,4]]},"1079":{"position":[[2008,4],[2074,4]]},"1094":{"position":[[1645,4],[1711,4]]}},"keywords":{}}],["push/manag",{"_index":1495,"title":{},"content":{"153":{"position":[[140,11]]},"723":{"position":[[140,11]]}},"keywords":{}}],["put",{"_index":220,"title":{},"content":{"15":{"position":[[132,3]]},"226":{"position":[[135,6]]},"350":{"position":[[407,3]]},"414":{"position":[[3,3]]},"422":{"position":[[0,3]]},"437":{"position":[[0,3]]},"440":{"position":[[0,3]]},"607":{"position":[[132,3]]},"811":{"position":[[135,6]]},"941":{"position":[[3,3]]},"949":{"position":[[0,3]]},"964":{"position":[[0,3]]},"967":{"position":[[0,3]]}},"keywords":{}}],["putcommand",{"_index":2222,"title":{},"content":{"269":{"position":[[507,11]]},"840":{"position":[[507,11]]}},"keywords":{}}],["pwd}/cifar",{"_index":3808,"title":{},"content":{"568":{"position":[[462,12]]},"1088":{"position":[[462,12]]}},"keywords":{}}],["pyarrow==0.17.0",{"_index":702,"title":{},"content":{"71":{"position":[[479,18],[1066,18]]},"72":{"position":[[617,18]]},"73":{"position":[[639,18]]},"423":{"position":[[444,18]]},"663":{"position":[[479,18],[1066,18]]},"664":{"position":[[617,18]]},"665":{"position":[[639,18]]},"950":{"position":[[444,18]]}},"keywords":{}}],["pyarrow\\u003d\\u003d0.17.0",{"_index":3407,"title":{},"content":{"423":{"position":[[1098,28]]},"425":{"position":[[976,28]]},"428":{"position":[[664,28]]},"434":{"position":[[667,28]]},"950":{"position":[[1098,28]]},"952":{"position":[[976,28]]},"955":{"position":[[664,28]]},"961":{"position":[[667,28]]}},"keywords":{}}],["pyasn1",{"_index":2923,"title":{},"content":{"389":{"position":[[2813,6],[18655,6]]},"916":{"position":[[2813,6],[18655,6]]}},"keywords":{}}],["pypi",{"_index":3649,"title":{"513":{"position":[[18,4]]},"1052":{"position":[[18,4]]}},"content":{"513":{"position":[[486,4]]},"1052":{"position":[[486,4]]}},"keywords":{}}],["pypi.org",{"_index":3226,"title":{"400":{"position":[[17,8]]},"927":{"position":[[17,8]]}},"content":{},"keywords":{}}],["pyproject.tomlto",{"_index":3607,"title":{},"content":{"509":{"position":[[96,16]]},"1048":{"position":[[96,16]]}},"keywords":{}}],["pysubmarin",{"_index":2691,"title":{"508":{"position":[[0,11]]},"1047":{"position":[[0,11]]}},"content":{"372":{"position":[[499,11]]},"507":{"position":[[75,11],[583,11]]},"508":{"position":[[110,11],[313,11]]},"511":{"position":[[37,11]]},"1046":{"position":[[75,11],[583,11]]},"1047":{"position":[[110,11],[313,11]]},"1050":{"position":[[37,11]]}},"keywords":{}}],["pyt",{"_index":3618,"title":{},"content":{"510":{"position":[[13,6],[175,6],[241,6]]},"1049":{"position":[[13,6],[175,6],[241,6]]}},"keywords":{}}],["python",{"_index":379,"title":{"293":{"position":[[0,6]]},"397":{"position":[[10,6]]},"398":{"position":[[8,6]]},"415":{"position":[[11,6]]},"506":{"position":[[0,6]]},"511":{"position":[[9,6]]},"578":{"position":[[11,6]]},"583":{"position":[[11,6]]},"588":{"position":[[11,6]]},"924":{"position":[[10,6]]},"925":{"position":[[8,6]]},"942":{"position":[[11,6]]},"1045":{"position":[[0,6]]},"1050":{"position":[[9,6]]},"1104":{"position":[[11,6]]},"1109":{"position":[[11,6]]},"1114":{"position":[[11,6]]}},"content":{"23":{"position":[[530,7],[801,7]]},"35":{"position":[[278,7]]},"77":{"position":[[189,7],[947,7]]},"78":{"position":[[189,7],[1094,7]]},"79":{"position":[[456,7],[1104,7]]},"80":{"position":[[489,7]]},"81":{"position":[[197,7],[800,7]]},"82":{"position":[[492,7]]},"86":{"position":[[588,7]]},"89":{"position":[[585,7]]},"151":{"position":[[977,7]]},"154":{"position":[[131,6]]},"156":{"position":[[1030,6]]},"163":{"position":[[317,7]]},"171":{"position":[[76,6]]},"181":{"position":[[664,7]]},"182":{"position":[[358,6],[1334,6]]},"189":{"position":[[402,7]]},"212":{"position":[[121,6]]},"217":{"position":[[757,6]]},"223":{"position":[[268,7]]},"262":{"position":[[207,6]]},"263":{"position":[[286,7]]},"293":{"position":[[0,6]]},"365":{"position":[[8,6]]},"375":{"position":[[211,7]]},"398":{"position":[[60,6],[102,6],[161,6],[190,6],[431,6]]},"400":{"position":[[40,6]]},"402":{"position":[[108,6]]},"407":{"position":[[50,6]]},"438":{"position":[[155,7]]},"441":{"position":[[155,7]]},"449":{"position":[[156,7]]},"461":{"position":[[556,7]]},"466":{"position":[[561,7]]},"492":{"position":[[115,7]]},"496":{"position":[[374,7]]},"497":{"position":[[381,7]]},"505":{"position":[[8,7]]},"508":{"position":[[79,6]]},"509":{"position":[[22,6],[57,6]]},"511":{"position":[[888,6]]},"513":{"position":[[128,6],[325,6],[365,6],[404,6],[468,6],[491,6]]},"541":{"position":[[530,7],[801,7]]},"549":{"position":[[187,7],[785,6]]},"553":{"position":[[191,7]]},"559":{"position":[[197,7],[592,6],[601,6],[887,6],[1048,6]]},"565":{"position":[[287,6]]},"566":{"position":[[70,6],[286,6],[596,6]]},"570":{"position":[[421,6],[9918,6],[16076,6]]},"577":{"position":[[18,6]]},"578":{"position":[[16,6],[78,6],[312,6],[350,6],[369,6]]},"580":{"position":[[567,6]]},"582":{"position":[[18,6]]},"583":{"position":[[16,6],[75,6],[280,6]]},"585":{"position":[[432,6]]},"587":{"position":[[18,6]]},"588":{"position":[[16,6],[73,6],[278,6]]},"611":{"position":[[530,7],[801,7]]},"627":{"position":[[278,7]]},"669":{"position":[[588,7]]},"672":{"position":[[585,7]]},"676":{"position":[[189,7],[947,7]]},"677":{"position":[[189,7],[1094,7]]},"678":{"position":[[456,7],[1104,7]]},"679":{"position":[[489,7]]},"680":{"position":[[197,7],[800,7]]},"681":{"position":[[492,7]]},"721":{"position":[[977,7]]},"724":{"position":[[131,6]]},"726":{"position":[[1030,6]]},"733":{"position":[[317,7]]},"741":{"position":[[76,6]]},"761":{"position":[[121,6]]},"764":{"position":[[664,7]]},"765":{"position":[[358,6],[1334,6]]},"772":{"position":[[402,7]]},"787":{"position":[[757,6]]},"808":{"position":[[268,7]]},"833":{"position":[[207,6]]},"834":{"position":[[286,7]]},"887":{"position":[[8,6]]},"902":{"position":[[211,7]]},"925":{"position":[[60,6],[102,6],[161,6],[190,6],[431,6]]},"927":{"position":[[40,6]]},"929":{"position":[[108,6]]},"934":{"position":[[50,6]]},"965":{"position":[[155,7]]},"968":{"position":[[155,7]]},"976":{"position":[[156,7]]},"988":{"position":[[556,7]]},"993":{"position":[[561,7]]},"1006":{"position":[[115,7]]},"1023":{"position":[[374,7]]},"1024":{"position":[[381,7]]},"1044":{"position":[[8,7]]},"1047":{"position":[[79,6]]},"1048":{"position":[[22,6],[57,6]]},"1052":{"position":[[128,6],[325,6],[365,6],[404,6],[468,6],[491,6]]},"1067":{"position":[[530,7],[801,7]]},"1075":{"position":[[187,7],[785,6]]},"1079":{"position":[[191,7]]},"1085":{"position":[[287,6]]},"1086":{"position":[[70,6],[286,6],[596,6]]},"1090":{"position":[[421,6],[9918,6],[16076,6]]},"1094":{"position":[[197,7],[592,6],[601,6],[887,6],[1048,6]]},"1103":{"position":[[18,6]]},"1104":{"position":[[16,6],[78,6],[312,6],[350,6],[369,6]]},"1106":{"position":[[567,6]]},"1108":{"position":[[18,6]]},"1109":{"position":[[16,6],[75,6],[280,6]]},"1111":{"position":[[432,6]]},"1113":{"position":[[18,6]]},"1114":{"position":[[16,6],[73,6],[278,6]]}},"keywords":{}}],["python/r",{"_index":1453,"title":{},"content":{"151":{"position":[[449,9]]},"172":{"position":[[326,9]]},"721":{"position":[[449,9]]},"742":{"position":[[326,9]]}},"keywords":{}}],["python/r/notebook",{"_index":1742,"title":{},"content":{"171":{"position":[[618,18]]},"741":{"position":[[623,18]]}},"keywords":{}}],["python/spark",{"_index":2180,"title":{},"content":{"259":{"position":[[310,12]]},"830":{"position":[[310,12]]}},"keywords":{}}],["python2",{"_index":3694,"title":{},"content":{"549":{"position":[[510,7]]},"1075":{"position":[[510,7]]}},"keywords":{}}],["python2.7",{"_index":2733,"title":{},"content":{"375":{"position":[[666,9]]},"902":{"position":[[666,9]]}},"keywords":{}}],["python3",{"_index":2734,"title":{},"content":{"375":{"position":[[678,7]]},"389":{"position":[[2307,7],[2323,7],[2345,7],[2362,7],[2374,7],[2746,7],[2765,7],[2789,7],[2805,7],[3199,7],[3215,7],[3237,7],[3254,7],[3266,7],[6367,7],[6470,7],[6566,7],[6667,7],[6787,7],[12115,7],[12158,11],[12215,7],[12292,7],[12329,11],[12379,7],[12449,7],[12482,11],[12529,7],[12596,7],[12633,11],[12699,7],[12785,7],[12823,11],[12883,7],[17109,7],[17157,7],[17198,7],[17236,7],[17293,7],[18149,7],[18165,7],[18187,7],[18204,7],[18216,7],[18588,7],[18607,7],[18631,7],[18647,7],[19023,7],[19039,7],[19061,7],[19078,7],[19090,7],[22085,7],[22188,7],[22284,7],[22385,7],[22505,7],[27664,7],[27707,11],[27764,7],[27841,7],[27878,11],[27928,7],[27998,7],[28031,11],[28078,7],[28145,7],[28182,11],[28248,7],[28334,7],[28372,11],[28432,7],[31963,7],[32011,7],[32052,7],[32090,7],[32147,7]]},"398":{"position":[[440,7]]},"549":{"position":[[612,7],[620,7],[632,7],[912,7]]},"902":{"position":[[678,7]]},"916":{"position":[[2307,7],[2323,7],[2345,7],[2362,7],[2374,7],[2746,7],[2765,7],[2789,7],[2805,7],[3199,7],[3215,7],[3237,7],[3254,7],[3266,7],[6367,7],[6470,7],[6566,7],[6667,7],[6787,7],[12115,7],[12158,11],[12215,7],[12292,7],[12329,11],[12379,7],[12449,7],[12482,11],[12529,7],[12596,7],[12633,11],[12699,7],[12785,7],[12823,11],[12883,7],[17109,7],[17157,7],[17198,7],[17236,7],[17293,7],[18149,7],[18165,7],[18187,7],[18204,7],[18216,7],[18588,7],[18607,7],[18631,7],[18647,7],[19023,7],[19039,7],[19061,7],[19078,7],[19090,7],[22085,7],[22188,7],[22284,7],[22385,7],[22505,7],[27664,7],[27707,11],[27764,7],[27841,7],[27878,11],[27928,7],[27998,7],[28031,11],[28078,7],[28145,7],[28182,11],[28248,7],[28334,7],[28372,11],[28432,7],[31963,7],[32011,7],[32052,7],[32090,7],[32147,7]]},"925":{"position":[[440,7]]},"1075":{"position":[[612,7],[620,7],[632,7],[912,7]]}},"keywords":{}}],["python3.7",{"_index":3218,"title":{},"content":{"398":{"position":[[23,11]]},"925":{"position":[[23,11]]}},"keywords":{}}],["python=$python_v",{"_index":3729,"title":{},"content":{"553":{"position":[[880,22]]},"1079":{"position":[[880,22]]}},"keywords":{}}],["python=3.3",{"_index":1473,"title":{},"content":{"151":{"position":[[1782,10]]},"721":{"position":[[1782,10]]}},"keywords":{}}],["python=3.6",{"_index":3592,"title":{},"content":{"507":{"position":[[175,10]]},"1046":{"position":[[175,10]]}},"keywords":{}}],["python=3.7",{"_index":1455,"title":{},"content":{"151":{"position":[[561,10],[1429,10]]},"721":{"position":[[561,10],[1429,10]]}},"keywords":{}}],["python_version=3.6",{"_index":3720,"title":{},"content":{"553":{"position":[[441,18]]},"1079":{"position":[[441,18]]}},"keywords":{}}],["pythonunbuffered=\"0",{"_index":2837,"title":{},"content":{"389":{"position":[[608,20]]},"916":{"position":[[608,20]]}},"keywords":{}}],["pytorch",{"_index":95,"title":{"552":{"position":[[18,7]]},"553":{"position":[[35,7]]},"554":{"position":[[31,7]]},"581":{"position":[[7,7]]},"583":{"position":[[43,7]]},"1078":{"position":[[18,7]]},"1079":{"position":[[35,7]]},"1080":{"position":[[31,7]]},"1107":{"position":[[7,7]]},"1109":{"position":[[43,7]]}},"content":{"7":{"position":[[209,7]]},"35":{"position":[[312,8]]},"55":{"position":[[131,7]]},"79":{"position":[[1027,8],[1086,10]]},"83":{"position":[[403,8],[470,8]]},"84":{"position":[[316,8],[381,7],[1493,8],[1558,7]]},"161":{"position":[[470,8]]},"179":{"position":[[804,8],[1339,8]]},"222":{"position":[[121,7]]},"223":{"position":[[31,7]]},"224":{"position":[[196,9]]},"412":{"position":[[189,7]]},"501":{"position":[[216,7]]},"520":{"position":[[89,7]]},"539":{"position":[[92,7]]},"553":{"position":[[18,7],[72,7],[137,7],[258,7],[381,8],[1000,7],[1261,7]]},"554":{"position":[[63,7],[97,7],[176,7],[317,7]]},"556":{"position":[[130,7],[205,8]]},"582":{"position":[[50,7]]},"583":{"position":[[52,7]]},"584":{"position":[[95,7],[345,7],[375,7]]},"585":{"position":[[242,7],[272,7],[295,7]]},"596":{"position":[[209,7]]},"627":{"position":[[312,8]]},"647":{"position":[[131,7]]},"678":{"position":[[1027,8],[1086,10]]},"682":{"position":[[403,8],[470,8]]},"683":{"position":[[316,8],[381,7],[1493,8],[1558,7]]},"731":{"position":[[470,8]]},"749":{"position":[[809,8],[1344,8]]},"807":{"position":[[121,7]]},"808":{"position":[[31,7]]},"809":{"position":[[196,9]]},"939":{"position":[[193,7]]},"1028":{"position":[[216,7]]},"1065":{"position":[[92,7]]},"1079":{"position":[[18,7],[72,7],[137,7],[258,7],[381,8],[1000,7],[1261,7]]},"1080":{"position":[[63,7],[97,7],[176,7],[317,7]]},"1082":{"position":[[130,7],[205,8]]},"1108":{"position":[[50,7]]},"1109":{"position":[[52,7]]},"1110":{"position":[[95,7],[345,7],[375,7]]},"1111":{"position":[[242,7],[272,7],[295,7]]}},"keywords":{}}],["pytorch==0.4.0",{"_index":4177,"title":{},"content":{"583":{"position":[[356,14]]},"1109":{"position":[[356,14]]}},"keywords":{}}],["pytorchjob",{"_index":2114,"title":{},"content":{"225":{"position":[[447,10]]},"810":{"position":[[500,10]]}},"keywords":{}}],["pyyaml",{"_index":3730,"title":{},"content":{"553":{"position":[[909,6]]},"1079":{"position":[[909,6]]}},"keywords":{}}],["q",{"_index":510,"title":{},"content":{"28":{"position":[[931,1]]},"386":{"position":[[735,1]]},"546":{"position":[[931,1]]},"616":{"position":[[931,1]]},"913":{"position":[[735,1]]},"1072":{"position":[[931,1]]}},"keywords":{}}],["q5ztd",{"_index":4250,"title":{},"content":{"939":{"position":[[221,5]]}},"keywords":{}}],["qggtm",{"_index":3300,"title":{},"content":{"412":{"position":[[271,5]]}},"keywords":{}}],["qmon",{"_index":2895,"title":{},"content":{"389":{"position":[[2467,4],[18309,4]]},"916":{"position":[[2467,4],[18309,4]]}},"keywords":{}}],["qualifi",{"_index":1342,"title":{},"content":{"136":{"position":[[562,9]]},"708":{"position":[[562,9]]}},"keywords":{}}],["qualiti",{"_index":1333,"title":{},"content":{"136":{"position":[[268,8]]},"181":{"position":[[2105,8]]},"708":{"position":[[268,8]]},"764":{"position":[[2118,8]]}},"keywords":{}}],["quantit",{"_index":4051,"title":{},"content":{"571":{"position":[[166,12]]},"1091":{"position":[[166,12]]}},"keywords":{}}],["quarterli",{"_index":1057,"title":{},"content":{"107":{"position":[[5099,9]]}},"keywords":{}}],["queri",{"_index":1737,"title":{},"content":{"171":{"position":[[111,6]]},"333":{"position":[[223,5]]},"412":{"position":[[15,5]]},"481":{"position":[[40,5]]},"741":{"position":[[111,6]]},"939":{"position":[[15,5]]},"1013":{"position":[[40,5]]}},"keywords":{}}],["question",{"_index":1147,"title":{},"content":{"107":{"position":[[10315,8],[10549,9]]},"133":{"position":[[971,10],[1544,9]]},"141":{"position":[[958,8]]},"144":{"position":[[460,9]]},"148":{"position":[[133,10]]},"159":{"position":[[2892,9]]},"714":{"position":[[460,9]]},"718":{"position":[[133,10]]},"729":{"position":[[2892,9]]}},"keywords":{}}],["queu",{"_index":2247,"title":{},"content":{"272":{"position":[[254,6]]},"386":{"position":[[682,5]]},"810":{"position":[[379,5]]},"843":{"position":[[254,6]]},"913":{"position":[[682,5]]}},"keywords":{}}],["quick",{"_index":560,"title":{"280":{"position":[[0,5]]},"573":{"position":[[13,5]]},"851":{"position":[[0,5]]},"1062":{"position":[[0,5]]},"1099":{"position":[[13,5]]}},"content":{"33":{"position":[[131,5]]},"53":{"position":[[66,5]]},"625":{"position":[[131,5]]},"645":{"position":[[66,5]]}},"keywords":{}}],["quickli",{"_index":564,"title":{},"content":{"33":{"position":[[240,8],[344,8]]},"35":{"position":[[3261,8]]},"625":{"position":[[240,8],[344,8]]},"627":{"position":[[3261,8]]}},"keywords":{}}],["quickstart",{"_index":2863,"title":{"408":{"position":[[0,10]]},"935":{"position":[[0,10]]}},"content":{"389":{"position":[[1831,10]]},"418":{"position":[[132,10]]},"568":{"position":[[281,10]]},"916":{"position":[[1831,10]]},"1088":{"position":[[281,10]]}},"keywords":{}}],["quota",{"_index":1555,"title":{"176":{"position":[[46,5]]},"746":{"position":[[46,5]]}},"content":{"158":{"position":[[78,6],[255,7]]},"176":{"position":[[798,7],[922,6],[1240,5],[1296,6]]},"205":{"position":[[93,5]]},"728":{"position":[[78,6],[255,7]]},"746":{"position":[[799,7],[925,6],[1243,5],[1299,6]]},"754":{"position":[[93,5]]}},"keywords":{}}],["r",{"_index":434,"title":{},"content":{"25":{"position":[[1863,1],[1905,1],[2022,1],[2060,1]]},"35":{"position":[[286,2]]},"163":{"position":[[325,2]]},"386":{"position":[[571,1]]},"389":{"position":[[1292,1]]},"505":{"position":[[23,1]]},"507":{"position":[[282,1],[389,1],[505,1]]},"513":{"position":[[186,1]]},"543":{"position":[[1863,1],[1905,1],[2022,1],[2060,1]]},"565":{"position":[[452,1]]},"568":{"position":[[460,1]]},"578":{"position":[[469,1]]},"583":{"position":[[376,1]]},"588":{"position":[[372,1]]},"613":{"position":[[1863,1],[1905,1],[2022,1],[2060,1]]},"627":{"position":[[286,2]]},"733":{"position":[[325,2]]},"869":{"position":[[693,1]]},"913":{"position":[[571,1]]},"916":{"position":[[1292,1]]},"1044":{"position":[[23,1]]},"1046":{"position":[[323,1],[438,1],[548,1]]},"1052":{"position":[[186,1]]},"1069":{"position":[[1863,1],[1905,1],[2022,1],[2060,1]]},"1085":{"position":[[452,1]]},"1088":{"position":[[460,1]]},"1104":{"position":[[469,1]]},"1109":{"position":[[376,1]]},"1114":{"position":[[372,1]]}},"keywords":{}}],["r8zq",{"_index":4252,"title":{},"content":{"939":{"position":[[277,5]]}},"keywords":{}}],["raft",{"_index":1950,"title":{"274":{"position":[[7,4]]},"845":{"position":[[7,4]]}},"content":{"194":{"position":[[1245,4]]},"201":{"position":[[866,5]]},"261":{"position":[[90,4],[208,4]]},"264":{"position":[[61,4]]},"265":{"position":[[12,4],[107,4]]},"268":{"position":[[159,4]]},"269":{"position":[[42,4],[372,4]]},"270":{"position":[[42,4],[610,4]]},"274":{"position":[[220,4],[260,4]]},"750":{"position":[[867,5]]},"777":{"position":[[1525,4]]},"832":{"position":[[90,4],[208,4]]},"835":{"position":[[61,4]]},"836":{"position":[[12,4],[107,4]]},"839":{"position":[[159,4]]},"840":{"position":[[42,4],[372,4]]},"841":{"position":[[42,4],[610,4]]},"845":{"position":[[220,4],[260,4]]}},"keywords":{}}],["raftclient",{"_index":2227,"title":{},"content":{"270":{"position":[[586,10]]},"841":{"position":[[586,10]]}},"keywords":{}}],["raftserv",{"_index":2220,"title":{},"content":{"269":{"position":[[348,10]]},"270":{"position":[[648,11]]},"840":{"position":[[348,10]]},"841":{"position":[[648,11]]}},"keywords":{}}],["random",{"_index":2493,"title":{},"content":{"331":{"position":[[1516,6],[1679,6],[1772,6],[1935,6]]},"475":{"position":[[80,6]]},"1002":{"position":[[80,6]]}},"keywords":{}}],["random.random",{"_index":3530,"title":{},"content":{"475":{"position":[[227,16],[309,15],[365,16]]},"1002":{"position":[[227,16],[309,15],[365,16]]}},"keywords":{}}],["randomli",{"_index":2519,"title":{},"content":{"332":{"position":[[329,8]]}},"keywords":{}}],["rang",{"_index":1813,"title":{},"content":{"176":{"position":[[468,7]]},"177":{"position":[[212,6]]},"746":{"position":[[469,7]]},"747":{"position":[[212,6]]},"888":{"position":[[53,6]]},"1053":{"position":[[308,6],[382,6],[479,7]]},"1062":{"position":[[49,7]]},"1064":{"position":[[20,7],[35,6],[151,6],[396,6],[513,6],[840,6]]}},"keywords":{}}],["range(100",{"_index":3531,"title":{},"content":{"475":{"position":[[253,11]]},"1002":{"position":[[253,11]]}},"keywords":{}}],["rapid",{"_index":2158,"title":{},"content":{"246":{"position":[[187,5]]},"816":{"position":[[187,5]]}},"keywords":{}}],["rat",{"_index":2277,"title":{},"content":{"282":{"position":[[32,3]]},"338":{"position":[[202,3],[280,3]]},"339":{"position":[[144,3]]},"570":{"position":[[340,4]]},"853":{"position":[[63,3]]},"1090":{"position":[[340,4]]}},"keywords":{}}],["rat:check",{"_index":2577,"title":{},"content":{"338":{"position":[[303,9]]}},"keywords":{}}],["ratifi",{"_index":1066,"title":{},"content":{"107":{"position":[[5435,8]]}},"keywords":{}}],["raw",{"_index":1610,"title":{"161":{"position":[[36,3]]},"731":{"position":[[36,3]]}},"content":{"159":{"position":[[2463,3]]},"161":{"position":[[30,3]]},"729":{"position":[[2463,3]]},"731":{"position":[[30,3]]}},"keywords":{}}],["rbac",{"_index":3208,"title":{"394":{"position":[[7,4]]},"921":{"position":[[7,4]]}},"content":{},"keywords":{}}],["rc",{"_index":2530,"title":{},"content":{"334":{"position":[[276,2]]},"352":{"position":[[406,2],[523,2]]}},"keywords":{}}],["rc.d",{"_index":3153,"title":{},"content":{"389":{"position":[[14964,5],[15014,5],[15027,4],[15513,5],[15563,5],[15576,4],[16208,5],[16258,5],[16271,4],[17003,5],[17053,5],[17066,4],[30513,5],[30563,5],[30576,4],[31062,5],[31112,5],[31125,4],[31857,5],[31907,5],[31920,4]]},"916":{"position":[[14964,5],[15014,5],[15027,4],[15513,5],[15563,5],[15576,4],[16208,5],[16258,5],[16271,4],[17003,5],[17053,5],[17066,4],[30513,5],[30563,5],[30576,4],[31062,5],[31112,5],[31125,4],[31857,5],[31907,5],[31920,4]]}},"keywords":{}}],["rc_version",{"_index":2349,"title":{},"content":{"311":{"position":[[75,14]]},"339":{"position":[[218,13]]},"340":{"position":[[145,13]]},"341":{"position":[[98,13],[483,14]]},"345":{"position":[[44,13]]},"346":{"position":[[35,13]]},"349":{"position":[[52,13],[235,14],[308,13],[421,14]]},"352":{"position":[[59,13],[189,15],[388,13],[505,13],[624,13],[1252,13]]}},"keywords":{}}],["rc_version}/*tar.gz",{"_index":2613,"title":{},"content":{"349":{"position":[[193,22]]}},"keywords":{}}],["rc_version}/apach",{"_index":2592,"title":{},"content":{"340":{"position":[[238,20]]}},"keywords":{}}],["rdnssd",{"_index":2897,"title":{},"content":{"389":{"position":[[2476,6],[18318,6]]},"916":{"position":[[2476,6],[18318,6]]}},"keywords":{}}],["re",{"_index":2534,"title":{},"content":{"334":{"position":[[508,2]]},"348":{"position":[[123,2]]}},"keywords":{}}],["reach",{"_index":1403,"title":{},"content":{"143":{"position":[[8,5]]},"512":{"position":[[140,5]]},"713":{"position":[[8,5]]},"1051":{"position":[[140,5]]}},"keywords":{}}],["read",{"_index":500,"title":{},"content":{"28":{"position":[[753,4]]},"117":{"position":[[128,4]]},"135":{"position":[[39,4]]},"201":{"position":[[59,4]]},"215":{"position":[[1856,4]]},"269":{"position":[[104,4]]},"270":{"position":[[200,4]]},"322":{"position":[[17,4]]},"389":{"position":[[1909,7],[1962,7],[7023,8],[7045,8],[7070,8],[7096,8],[7122,8],[7148,8],[7174,8],[7200,8],[7226,8],[7252,8],[7278,8],[7304,8],[7330,8],[7356,8],[7382,8],[7408,8],[7434,8],[7460,8],[7486,8],[7512,8],[7538,8],[7565,8],[17486,7],[17539,7],[17751,7],[17804,7],[22741,8],[22763,8],[22788,8],[22814,8],[22840,8],[22866,8],[22892,8],[22918,8],[22944,8],[22970,8],[22996,8],[23022,8],[23048,8],[23074,8],[23100,8],[23126,8],[23152,8],[23178,8],[23204,8],[23230,8],[23256,8],[23283,8],[32340,7],[32393,7]]},"546":{"position":[[753,4]]},"616":{"position":[[753,4]]},"685":{"position":[[128,4]]},"707":{"position":[[39,4]]},"750":{"position":[[59,4]]},"785":{"position":[[1856,4]]},"840":{"position":[[104,4]]},"841":{"position":[[200,4]]},"879":{"position":[[17,4]]},"916":{"position":[[1909,7],[1962,7],[7023,8],[7045,8],[7070,8],[7096,8],[7122,8],[7148,8],[7174,8],[7200,8],[7226,8],[7252,8],[7278,8],[7304,8],[7330,8],[7356,8],[7382,8],[7408,8],[7434,8],[7460,8],[7486,8],[7512,8],[7538,8],[7565,8],[17486,7],[17539,7],[17751,7],[17804,7],[22741,8],[22763,8],[22788,8],[22814,8],[22840,8],[22866,8],[22892,8],[22918,8],[22944,8],[22970,8],[22996,8],[23022,8],[23048,8],[23074,8],[23100,8],[23126,8],[23152,8],[23178,8],[23204,8],[23230,8],[23256,8],[23283,8],[32340,7],[32393,7]]},"1072":{"position":[[753,4]]}},"keywords":{}}],["read/write/upd",{"_index":3830,"title":{},"content":{"569":{"position":[[894,17]]},"1089":{"position":[[894,17]]}},"keywords":{}}],["readi",{"_index":85,"title":{"412":{"position":[[20,5]]},"939":{"position":[[20,5]]}},"content":{"7":{"position":[[118,5]]},"107":{"position":[[9221,6]]},"130":{"position":[[559,6]]},"352":{"position":[[76,5]]},"412":{"position":[[97,5]]},"570":{"position":[[66,5]]},"596":{"position":[[118,5]]},"698":{"position":[[559,6]]},"939":{"position":[[99,5]]},"1090":{"position":[[66,5]]}},"keywords":{}}],["readm",{"_index":530,"title":{"30":{"position":[[0,6]]},"564":{"position":[[0,6]]},"622":{"position":[[0,6]]},"1084":{"position":[[0,6]]}},"content":{"303":{"position":[[34,6]]},"362":{"position":[[68,6]]},"568":{"position":[[615,8]]},"869":{"position":[[1789,6]]},"884":{"position":[[68,6]]},"1088":{"position":[[615,8]]}},"keywords":{}}],["readme.zh",{"_index":673,"title":{"50":{"position":[[0,9]]},"642":{"position":[[0,9]]}},"content":{},"keywords":{}}],["real",{"_index":1679,"title":{},"content":{"163":{"position":[[129,4]]},"301":{"position":[[418,4]]},"331":{"position":[[1201,4]]},"733":{"position":[[129,4]]},"868":{"position":[[402,4]]}},"keywords":{}}],["realli",{"_index":2387,"title":{},"content":{"314":{"position":[[1291,6]]}},"keywords":{}}],["reason",{"_index":917,"title":{},"content":{"101":{"position":[[389,9]]},"103":{"position":[[404,9]]},"107":{"position":[[8175,6],[8197,7]]},"153":{"position":[[186,6]]},"273":{"position":[[1103,10]]},"350":{"position":[[607,6]]},"703":{"position":[[389,9]]},"705":{"position":[[404,9]]},"723":{"position":[[186,6]]},"844":{"position":[[1103,10]]}},"keywords":{}}],["reason\":\"containercr",{"_index":3551,"title":{},"content":{"482":{"position":[[373,29]]},"485":{"position":[[361,29]]},"1014":{"position":[[373,29]]},"1017":{"position":[[361,29]]}},"keywords":{}}],["reason\":\"th",{"_index":900,"title":{},"content":{"100":{"position":[[647,13]]},"102":{"position":[[381,13]]},"479":{"position":[[610,13]]},"488":{"position":[[372,13]]},"702":{"position":[[647,13]]},"704":{"position":[[381,13]]},"1011":{"position":[[610,13]]},"1020":{"position":[[372,13]]}},"keywords":{}}],["rebas",{"_index":1212,"title":{},"content":{"123":{"position":[[92,6]]},"125":{"position":[[60,6]]},"691":{"position":[[92,6]]},"693":{"position":[[60,6]]}},"keywords":{}}],["reboot",{"_index":398,"title":{"25":{"position":[[48,6]]},"543":{"position":[[48,6]]},"613":{"position":[[48,6]]},"1069":{"position":[[48,6]]}},"content":{},"keywords":{}}],["rebuild",{"_index":2269,"title":{},"content":{"281":{"position":[[139,7]]},"852":{"position":[[139,7]]}},"keywords":{}}],["receiv",{"_index":545,"title":{},"content":{"31":{"position":[[315,9]]},"192":{"position":[[23,8]]},"273":{"position":[[759,7]]},"623":{"position":[[315,9]]},"775":{"position":[[23,8]]},"844":{"position":[[759,7]]}},"keywords":{}}],["recent",{"_index":565,"title":{},"content":{"33":{"position":[[261,6],[318,9]]},"53":{"position":[[129,6]]},"133":{"position":[[1226,7]]},"273":{"position":[[1058,6]]},"355":{"position":[[190,8]]},"625":{"position":[[261,6],[318,9]]},"645":{"position":[[129,6]]},"844":{"position":[[1058,6]]}},"keywords":{}}],["recently.click",{"_index":2622,"title":{},"content":{"350":{"position":[[209,14]]}},"keywords":{}}],["recipient_delimit",{"_index":3143,"title":{},"content":{"389":{"position":[[14498,20],[30047,20]]},"916":{"position":[[14498,20],[30047,20]]}},"keywords":{}}],["recogn",{"_index":1271,"title":{},"content":{"133":{"position":[[491,10]]}},"keywords":{}}],["recognit",{"_index":1310,"title":{},"content":{"133":{"position":[[2493,11]]}},"keywords":{}}],["recomm",{"_index":303,"title":{"400":{"position":[[26,13]]},"927":{"position":[[26,13]]}},"content":{"20":{"position":[[3,9]]},"107":{"position":[[5284,9]]},"138":{"position":[[142,11]]},"212":{"position":[[271,9]]},"217":{"position":[[127,13],[153,11],[418,9],[592,9]]},"375":{"position":[[522,10]]},"391":{"position":[[3,9]]},"405":{"position":[[3,9]]},"507":{"position":[[54,9]]},"553":{"position":[[514,10]]},"559":{"position":[[495,10]]},"620":{"position":[[3,9]]},"710":{"position":[[142,11]]},"761":{"position":[[271,9]]},"787":{"position":[[127,13],[153,11],[418,9],[592,9]]},"902":{"position":[[522,10]]},"918":{"position":[[3,9]]},"932":{"position":[[3,9]]},"1046":{"position":[[54,9]]},"1079":{"position":[[514,10]]},"1094":{"position":[[495,10]]}},"keywords":{}}],["reconsid",{"_index":1717,"title":{},"content":{"167":{"position":[[493,13]]},"737":{"position":[[493,13]]}},"keywords":{}}],["record",{"_index":1421,"title":{},"content":{"145":{"position":[[81,6]]},"195":{"position":[[49,7]]},"418":{"position":[[52,6]]},"517":{"position":[[201,6]]},"715":{"position":[[81,6]]},"778":{"position":[[49,7]]},"945":{"position":[[54,6]]},"1057":{"position":[[201,6]]}},"keywords":{}}],["recov",{"_index":1726,"title":{},"content":{"170":{"position":[[117,9]]},"740":{"position":[[117,9]]}},"keywords":{}}],["recreat",{"_index":2075,"title":{},"content":{"217":{"position":[[787,8]]},"787":{"position":[[787,8]]}},"keywords":{}}],["redirect",{"_index":2329,"title":{},"content":{"301":{"position":[[332,10]]},"868":{"position":[[316,10]]}},"keywords":{}}],["redistribut",{"_index":2365,"title":{},"content":{"314":{"position":[[385,12]]},"331":{"position":[[451,12]]}},"keywords":{}}],["reduc",{"_index":1596,"title":{"165":{"position":[[23,6]]},"735":{"position":[[23,6]]}},"content":{"159":{"position":[[1723,7]]},"165":{"position":[[278,7]]},"197":{"position":[[412,6]]},"274":{"position":[[12,6]]},"729":{"position":[[1723,7]]},"735":{"position":[[278,7]]},"780":{"position":[[419,6]]},"845":{"position":[[12,6]]}},"keywords":{}}],["ref",{"_index":311,"title":{},"content":{"20":{"position":[[206,5]]},"78":{"position":[[650,5],[672,9]]},"107":{"position":[[647,5],[10204,8],[10440,8]]},"133":{"position":[[2084,5]]},"152":{"position":[[547,9]]},"155":{"position":[[489,5]]},"182":{"position":[[70,9]]},"183":{"position":[[7,5]]},"184":{"position":[[114,5]]},"188":{"position":[[668,5]]},"191":{"position":[[8,5]]},"204":{"position":[[429,5]]},"210":{"position":[[125,5]]},"213":{"position":[[7,5]]},"230":{"position":[[831,5]]},"320":{"position":[[61,5],[551,5]]},"328":{"position":[[250,5]]},"329":{"position":[[5,10]]},"330":{"position":[[36,5]]},"384":{"position":[[417,5],[629,5]]},"387":{"position":[[0,5]]},"415":{"position":[[167,10]]},"441":{"position":[[616,5],[638,9]]},"590":{"position":[[10,5]]},"620":{"position":[[206,5]]},"677":{"position":[[650,5],[672,9]]},"722":{"position":[[547,9]]},"725":{"position":[[489,5]]},"753":{"position":[[429,5]]},"759":{"position":[[125,5]]},"762":{"position":[[7,5]]},"765":{"position":[[70,9]]},"766":{"position":[[7,5]]},"767":{"position":[[114,5]]},"771":{"position":[[668,5]]},"774":{"position":[[8,5]]},"793":{"position":[[831,5]]},"877":{"position":[[61,5],[551,5]]},"911":{"position":[[417,5],[629,5]]},"914":{"position":[[0,5]]},"942":{"position":[[167,10]]},"968":{"position":[[616,5],[638,9]]},"1061":{"position":[[7,5]]},"1116":{"position":[[10,5]]}},"keywords":{}}],["referenc",{"_index":1528,"title":{},"content":{"155":{"position":[[286,10]]},"725":{"position":[[286,10]]}},"keywords":{}}],["reflect",{"_index":2344,"title":{},"content":{"308":{"position":[[94,9]]},"874":{"position":[[94,9]]}},"keywords":{}}],["refresh",{"_index":2263,"title":{},"content":{"277":{"position":[[12,9]]},"848":{"position":[[12,9]]}},"keywords":{}}],["refus",{"_index":2207,"title":{},"content":{"265":{"position":[[367,8]]},"836":{"position":[[367,8]]}},"keywords":{}}],["reg",{"_index":1325,"title":{},"content":{"135":{"position":[[417,10]]},"707":{"position":[[417,10]]}},"keywords":{}}],["regard",{"_index":993,"title":{},"content":{"107":{"position":[[1933,9],[4282,9],[5832,9]]}},"keywords":{}}],["regardless",{"_index":1383,"title":{},"content":{"141":{"position":[[534,10]]}},"keywords":{}}],["regist",{"_index":531,"title":{"31":{"position":[[0,8]]},"51":{"position":[[0,8]]},"93":{"position":[[28,10]]},"109":{"position":[[9,10]]},"110":{"position":[[5,10]]},"111":{"position":[[6,10]]},"112":{"position":[[8,10]]},"113":{"position":[[9,10]]},"114":{"position":[[9,10]]},"115":{"position":[[9,10]]},"623":{"position":[[0,8]]},"643":{"position":[[0,8]]}},"content":{"31":{"position":[[228,8]]},"93":{"position":[[471,11],[834,11],[1197,11],[1561,11]]},"94":{"position":[[479,11]]},"95":{"position":[[110,11]]},"98":{"position":[[272,10]]},"109":{"position":[[326,10]]},"110":{"position":[[185,10],[700,11]]},"111":{"position":[[204,10]]},"112":{"position":[[310,10]]},"113":{"position":[[212,10]]},"114":{"position":[[250,10]]},"115":{"position":[[246,10]]},"200":{"position":[[419,10]]},"249":{"position":[[115,8]]},"331":{"position":[[121,10]]},"520":{"position":[[223,10]]},"623":{"position":[[228,8]]},"783":{"position":[[419,10]]},"819":{"position":[[115,8]]}},"keywords":{}}],["registered/updated/delet",{"_index":1998,"title":{},"content":{"200":{"position":[[2863,26]]},"783":{"position":[[2863,26]]}},"keywords":{}}],["registered_model_nam",{"_index":3675,"title":{"520":{"position":[[65,22]]}},"content":{},"keywords":{}}],["registered_model_name=non",{"_index":4297,"title":{"1039":{"position":[[71,27]]}},"content":{},"keywords":{}}],["registr",{"_index":539,"title":{},"content":{"31":{"position":[[156,12],[329,12]]},"623":{"position":[[156,12],[329,12]]}},"keywords":{}}],["registri",{"_index":1525,"title":{"236":{"position":[[6,8]]},"799":{"position":[[6,8]]}},"content":{"155":{"position":[[177,9]]},"200":{"position":[[455,9]]},"215":{"position":[[1772,9]]},"216":{"position":[[799,9]]},"229":{"position":[[337,8],[1457,8]]},"232":{"position":[[373,8]]},"244":{"position":[[52,8]]},"281":{"position":[[319,9]]},"375":{"position":[[1609,9]]},"520":{"position":[[249,8]]},"549":{"position":[[1634,9]]},"553":{"position":[[2032,9]]},"559":{"position":[[1669,9]]},"725":{"position":[[177,9]]},"783":{"position":[[455,9]]},"785":{"position":[[1772,9]]},"786":{"position":[[799,9]]},"792":{"position":[[337,8],[1459,8]]},"795":{"position":[[373,8]]},"814":{"position":[[52,8]]},"852":{"position":[[319,9]]},"902":{"position":[[1609,9]]},"1039":{"position":[[20,9]]},"1040":{"position":[[24,9]]},"1042":{"position":[[24,9]]},"1075":{"position":[[1634,9]]},"1079":{"position":[[2032,9]]},"1094":{"position":[[1669,9]]}},"keywords":{}}],["registry/data",{"_index":2138,"title":{},"content":{"229":{"position":[[1554,13]]},"792":{"position":[[1556,13]]}},"keywords":{}}],["registry_uri",{"_index":4268,"title":{},"content":{"1033":{"position":[[256,13]]}},"keywords":{}}],["registry_uri=\"0.0.0.0:5000",{"_index":4270,"title":{},"content":{"1033":{"position":[[399,28]]}},"keywords":{}}],["registry_uri=non",{"_index":4265,"title":{"1033":{"position":[[32,18]]}},"content":{},"keywords":{}}],["registrydn",{"_index":2830,"title":{},"content":{"389":{"position":[[228,12]]},"916":{"position":[[228,12]]}},"keywords":{}}],["registrydns/at",{"_index":4208,"title":{},"content":{"591":{"position":[[201,15]]},"1117":{"position":[[201,15]]}},"keywords":{}}],["registrydnsip",{"_index":2831,"title":{},"content":{"389":{"position":[[265,14]]},"916":{"position":[[265,14]]}},"keywords":{}}],["regress",{"_index":1574,"title":{},"content":{"159":{"position":[[496,11]]},"729":{"position":[[496,11]]}},"keywords":{}}],["regular",{"_index":1524,"title":{},"content":{"155":{"position":[[162,7]]},"725":{"position":[[162,7]]}},"keywords":{}}],["reimplement",{"_index":3235,"title":{},"content":{"403":{"position":[[141,11]]},"930":{"position":[[141,11]]}},"keywords":{}}],["reinstat",{"_index":1002,"title":{},"content":{"107":{"position":[[2233,13],[2283,13],[4694,13],[4725,13]]}},"keywords":{}}],["reject",{"_index":1337,"title":{"137":{"position":[[0,6]]},"709":{"position":[[0,6]]}},"content":{"136":{"position":[[389,9]]},"137":{"position":[[18,8],[292,9]]},"708":{"position":[[389,9]]},"709":{"position":[[18,8],[292,9]]}},"keywords":{}}],["rel",{"_index":277,"title":{},"content":{"17":{"position":[[523,8],[903,8]]},"144":{"position":[[373,10]]},"162":{"position":[[321,10]]},"219":{"position":[[542,10]]},"334":{"position":[[387,10]]},"609":{"position":[[523,8],[903,8]]},"714":{"position":[[373,10]]},"732":{"position":[[321,10]]},"789":{"position":[[542,10]]}},"keywords":{}}],["relat",{"_index":1154,"title":{"191":{"position":[[11,7]]},"196":{"position":[[27,7]]},"215":{"position":[[3,7]]},"216":{"position":[[37,7]]},"218":{"position":[[7,7]]},"774":{"position":[[11,7]]},"779":{"position":[[27,7]]},"785":{"position":[[3,7]]},"786":{"position":[[37,7]]},"788":{"position":[[7,7]]}},"content":{"107":{"position":[[10753,8]]},"155":{"position":[[457,7]]},"175":{"position":[[235,7]]},"215":{"position":[[351,7],[1130,7],[1266,7]]},"218":{"position":[[14,7],[46,7],[514,7]]},"363":{"position":[[58,7]]},"549":{"position":[[792,7]]},"725":{"position":[[457,7]]},"745":{"position":[[235,7]]},"785":{"position":[[351,7],[1130,7],[1266,7]]},"788":{"position":[[14,7],[46,7],[514,7]]},"885":{"position":[[58,7]]},"1075":{"position":[[792,7]]}},"keywords":{}}],["relationship",{"_index":2021,"title":{"206":{"position":[[0,12]]},"755":{"position":[[0,12]]}},"content":{"249":{"position":[[230,12]]},"819":{"position":[[230,12]]}},"keywords":{}}],["relayhost",{"_index":3137,"title":{},"content":{"389":{"position":[[14384,10],[29933,10]]},"916":{"position":[[14384,10],[29933,10]]}},"keywords":{}}],["relea",{"_index":2582,"title":{},"content":{"339":{"position":[[295,6]]}},"keywords":{}}],["releas",{"_index":571,"title":{"36":{"position":[[0,7]]},"56":{"position":[[0,7]]},"282":{"position":[[9,8]]},"310":{"position":[[20,7]]},"311":{"position":[[40,8]]},"313":{"position":[[17,7]]},"327":{"position":[[7,7]]},"344":{"position":[[22,7]]},"353":{"position":[[14,8]]},"354":{"position":[[31,7]]},"355":{"position":[[4,7]]},"372":{"position":[[4,8]]},"628":{"position":[[0,7]]},"648":{"position":[[0,7]]},"899":{"position":[[4,8]]}},"content":{"33":{"position":[[433,8]]},"107":{"position":[[2637,7],[3181,7],[3199,7],[3263,7],[3331,7],[3420,7],[3547,7],[3607,7],[4082,8],[9162,7],[9177,7],[9261,7],[9284,7],[9404,8],[10866,7],[10891,7]]},"133":{"position":[[2655,9]]},"246":{"position":[[213,8]]},"281":{"position":[[47,7]]},"328":{"position":[[7,7],[88,8],[104,7],[157,7],[305,7],[332,7],[350,7]]},"329":{"position":[[114,7]]},"334":{"position":[[139,7],[264,7],[1096,7],[1114,7],[1228,7],[1258,7],[1283,7],[1505,7],[1594,7]]},"338":{"position":[[46,7],[62,7]]},"345":{"position":[[249,7]]},"352":{"position":[[147,8],[171,7],[526,7],[1208,7],[1595,7]]},"355":{"position":[[275,7]]},"357":{"position":[[66,9],[132,7],[210,8],[316,8],[521,10],[590,7]]},"364":{"position":[[14,7]]},"368":{"position":[[500,7]]},"372":{"position":[[23,8],[48,8],[570,8],[595,8],[841,8],[866,8],[1112,8],[1329,8]]},"401":{"position":[[99,8],[212,7],[242,7]]},"513":{"position":[[52,8]]},"549":{"position":[[491,7]]},"572":{"position":[[2232,9]]},"580":{"position":[[1583,8]]},"591":{"position":[[352,8]]},"625":{"position":[[433,8]]},"816":{"position":[[213,8]]},"852":{"position":[[47,7]]},"853":{"position":[[9,8]]},"886":{"position":[[14,7]]},"891":{"position":[[500,7]]},"899":{"position":[[23,8],[48,8],[294,8],[319,8],[565,8],[782,8]]},"928":{"position":[[99,8],[212,7],[242,7]]},"1052":{"position":[[52,8]]},"1053":{"position":[[389,9]]},"1075":{"position":[[491,7]]},"1092":{"position":[[2232,9]]},"1106":{"position":[[1583,8]]},"1117":{"position":[[352,8]]}},"keywords":{}}],["release</id",{"_index":2566,"title":{},"content":{"336":{"position":[[686,12]]}},"keywords":{}}],["release_v",{"_index":2392,"title":{"354":{"position":[[39,18]]}},"content":{"314":{"position":[[1980,18],[2031,18],[2211,18],[2269,18],[2336,18],[2394,18],[2571,18]]},"315":{"position":[[202,18],[374,18],[450,18]]},"316":{"position":[[23,18]]},"317":{"position":[[30,18],[88,18]]},"338":{"position":[[70,18]]},"339":{"position":[[270,18]]},"340":{"position":[[126,18],[219,18],[269,18],[327,20]]},"341":{"position":[[79,18],[176,18],[254,18],[412,18],[464,18]]},"345":{"position":[[25,18],[121,18],[198,18]]},"346":{"position":[[16,18]]},"349":{"position":[[33,18],[174,18],[216,18],[289,18],[402,18]]},"352":{"position":[[40,18],[219,19],[369,18],[486,18],[605,18],[1233,18]]},"357":{"position":[[191,18],[342,19],[502,18],[598,18]]}},"keywords":{}}],["releasedparticip",{"_index":1287,"title":{},"content":{"133":{"position":[[1427,19]]}},"keywords":{}}],["reli",{"_index":2198,"title":{},"content":{"264":{"position":[[93,7]]},"835":{"position":[[93,7]]}},"keywords":{}}],["reliabl",{"_index":2182,"title":{},"content":{"259":{"position":[[458,11]]},"830":{"position":[[458,11]]}},"keywords":{}}],["reload",{"_index":3151,"title":{},"content":{"389":{"position":[[14929,8],[30478,8]]},"916":{"position":[[14929,8],[30478,8]]}},"keywords":{}}],["rememb",{"_index":2547,"title":{},"content":{"335":{"position":[[123,8]]}},"keywords":{}}],["remind",{"_index":1387,"title":{},"content":{"141":{"position":[[1091,6]]}},"keywords":{}}],["remot",{"_index":1191,"title":{},"content":{"121":{"position":[[188,6],[254,6],[355,6],[619,6]]},"152":{"position":[[355,6]]},"217":{"position":[[984,6]]},"349":{"position":[[452,6]]},"689":{"position":[[188,6],[254,6],[355,6],[619,6]]},"722":{"position":[[355,6]]},"787":{"position":[[984,6]]}},"keywords":{}}],["remov",{"_index":466,"title":{"28":{"position":[[21,6]]},"546":{"position":[[21,6]]},"616":{"position":[[21,6]]},"1072":{"position":[[21,6]]}},"content":{"28":{"position":[[63,6],[151,6]]},"107":{"position":[[9972,7],[9985,7],[10119,7],[10132,7],[10360,7],[10373,7]]},"154":{"position":[[351,6]]},"160":{"position":[[165,6]]},"176":{"position":[[880,6]]},"270":{"position":[[785,7]]},"273":{"position":[[1424,7]]},"389":{"position":[[3353,6],[17604,6],[19177,6],[32458,6]]},"546":{"position":[[63,6],[151,6]]},"580":{"position":[[1378,7]]},"591":{"position":[[330,7]]},"616":{"position":[[63,6],[151,6]]},"724":{"position":[[351,6]]},"730":{"position":[[165,6]]},"746":{"position":[[882,6]]},"841":{"position":[[785,7]]},"844":{"position":[[1424,7]]},"916":{"position":[[3353,6],[17604,6],[19177,6],[32458,6]]},"1072":{"position":[[63,6],[151,6]]},"1106":{"position":[[1378,7]]},"1117":{"position":[[330,7]]}},"keywords":{}}],["remove_note_to_trash",{"_index":2261,"title":{},"content":{"276":{"position":[[35,20]]},"847":{"position":[[35,20]]}},"keywords":{}}],["renam",{"_index":2270,"title":{},"content":{"281":{"position":[[284,6]]},"852":{"position":[[284,6]]}},"keywords":{}}],["rend",{"_index":116,"title":{},"content":{"7":{"position":[[540,8]]},"596":{"position":[[540,8]]}},"keywords":{}}],["repeatedli",{"_index":1973,"title":{},"content":{"198":{"position":[[77,10]]},"781":{"position":[[77,10]]}},"keywords":{}}],["replac",{"_index":172,"title":{},"content":{"12":{"position":[[62,8]]},"107":{"position":[[9430,8]]},"154":{"position":[[122,8]]},"230":{"position":[[984,7]]},"261":{"position":[[582,7]]},"283":{"position":[[228,7]]},"604":{"position":[[62,8]]},"724":{"position":[[122,8]]},"793":{"position":[[984,7]]},"832":{"position":[[582,7]]},"854":{"position":[[228,7]]}},"keywords":{}}],["replace_v",{"_index":189,"title":{},"content":{"13":{"position":[[273,17],[415,17]]},"605":{"position":[[273,17],[415,17]]}},"keywords":{}}],["repli",{"_index":1078,"title":{},"content":{"107":{"position":[[6210,8],[7513,5]]},"141":{"position":[[1375,5]]},"148":{"position":[[697,6]]}},"keywords":{}}],["replica",{"_index":738,"title":{},"content":{"77":{"position":[[424,11],[488,11],[1182,11],[1246,11]]},"78":{"position":[[395,11],[459,11],[1300,11],[1364,11]]},"79":{"position":[[691,11],[755,11],[1270,11],[1334,11]]},"80":{"position":[[724,11],[788,11]]},"81":{"position":[[432,11],[496,11],[1035,11],[1099,11]]},"82":{"position":[[727,11],[791,11]]},"86":{"position":[[852,11],[916,11]]},"89":{"position":[[849,11],[913,11]]},"223":{"position":[[479,9],[565,9]]},"226":{"position":[[214,9],[300,9]]},"437":{"position":[[974,9]]},"438":{"position":[[390,11],[454,11]]},"441":{"position":[[361,11],[425,11]]},"449":{"position":[[391,11],[455,11]]},"460":{"position":[[1187,9]]},"461":{"position":[[820,11],[884,11]]},"466":{"position":[[825,11],[889,11]]},"492":{"position":[[375,11]]},"496":{"position":[[609,11],[673,11]]},"497":{"position":[[620,11]]},"669":{"position":[[852,11],[916,11]]},"672":{"position":[[849,11],[913,11]]},"676":{"position":[[424,11],[488,11],[1182,11],[1246,11]]},"677":{"position":[[395,11],[459,11],[1300,11],[1364,11]]},"678":{"position":[[691,11],[755,11],[1270,11],[1334,11]]},"679":{"position":[[724,11],[788,11]]},"680":{"position":[[432,11],[496,11],[1035,11],[1099,11]]},"681":{"position":[[727,11],[791,11]]},"808":{"position":[[479,9],[565,9]]},"811":{"position":[[214,9],[300,9]]},"964":{"position":[[974,9]]},"965":{"position":[[390,11],[454,11]]},"968":{"position":[[361,11],[425,11]]},"976":{"position":[[391,11],[455,11]]},"987":{"position":[[1187,9]]},"988":{"position":[[820,11],[884,11]]},"993":{"position":[[825,11],[889,11]]},"1006":{"position":[[375,11]]},"1023":{"position":[[609,11],[673,11]]},"1024":{"position":[[620,11]]}},"keywords":{}}],["replicas\":1",{"_index":3451,"title":{},"content":{"438":{"position":[[1297,13],[1467,13]]},"441":{"position":[[1389,13],[1559,13]]},"443":{"position":[[889,13],[1059,13],[1870,13],[2040,13]]},"446":{"position":[[806,13],[976,13]]},"449":{"position":[[1328,13]]},"452":{"position":[[809,13]]},"461":{"position":[[2686,13],[2859,13]]},"463":{"position":[[1688,13],[1861,13]]},"466":{"position":[[2716,13],[2886,13]]},"469":{"position":[[1712,13],[1882,13]]},"472":{"position":[[987,13],[1157,13]]},"965":{"position":[[1297,13],[1467,13]]},"968":{"position":[[1389,13],[1559,13]]},"970":{"position":[[889,13],[1059,13],[1870,13],[2040,13]]},"973":{"position":[[806,13],[976,13]]},"976":{"position":[[1328,13]]},"979":{"position":[[809,13]]},"988":{"position":[[2686,13],[2859,13]]},"990":{"position":[[1688,13],[1861,13]]},"993":{"position":[[2716,13],[2886,13]]},"996":{"position":[[1712,13],[1882,13]]},"999":{"position":[[987,13],[1157,13]]}},"keywords":{}}],["replicas\":2",{"_index":3483,"title":{},"content":{"449":{"position":[[1498,13]]},"452":{"position":[[979,13]]},"976":{"position":[[1498,13]]},"979":{"position":[[979,13]]}},"keywords":{}}],["replicas=1",{"_index":3277,"title":{},"content":{"407":{"position":[[973,11],[1046,11]]},"934":{"position":[[993,11],[1066,11]]}},"keywords":{}}],["replicas_to_aggregate=1",{"_index":3919,"title":{},"content":{"570":{"position":[[4632,24]]},"1090":{"position":[[4632,24]]}},"keywords":{}}],["replicas_to_aggregate=2",{"_index":3931,"title":{},"content":{"570":{"position":[[7400,24],[14049,24]]},"1090":{"position":[[7400,24],[14049,24]]}},"keywords":{}}],["repo",{"_index":661,"title":{},"content":{"35":{"position":[[3517,5]]},"55":{"position":[[1618,5]]},"138":{"position":[[65,4]]},"144":{"position":[[452,4],[474,4]]},"156":{"position":[[1251,5]]},"176":{"position":[[338,4]]},"216":{"position":[[765,4]]},"217":{"position":[[121,5],[1288,4]]},"304":{"position":[[210,5]]},"336":{"position":[[396,4]]},"627":{"position":[[3517,5]]},"647":{"position":[[1618,5]]},"710":{"position":[[65,4]]},"714":{"position":[[452,4],[474,4]]},"726":{"position":[[1251,5]]},"746":{"position":[[339,4]]},"786":{"position":[[765,4]]},"787":{"position":[[121,5],[1288,4]]},"870":{"position":[[210,5]]}},"keywords":{}}],["repon",{"_index":3522,"title":{},"content":{"469":{"position":[[86,7]]},"996":{"position":[[86,7]]}},"keywords":{}}],["report",{"_index":633,"title":{},"content":{"35":{"position":[[1667,6]]},"107":{"position":[[1262,7],[5078,7]]},"133":{"position":[[1356,6]]},"273":{"position":[[1076,10]]},"627":{"position":[[1667,6]]},"844":{"position":[[1076,10]]}},"keywords":{}}],["repositori",{"_index":662,"title":{"120":{"position":[[36,10]]},"345":{"position":[[48,10]]},"346":{"position":[[26,10]]},"349":{"position":[[67,10]]},"350":{"position":[[33,10]]},"355":{"position":[[46,10]]},"688":{"position":[[36,10]]}},"content":{"35":{"position":[[3542,10]]},"107":{"position":[[1857,13],[2436,11],[4185,11]]},"120":{"position":[[87,10]]},"325":{"position":[[341,11]]},"350":{"position":[[115,12],[185,10]]},"352":{"position":[[656,10]]},"355":{"position":[[122,12],[208,11],[224,10],[402,10]]},"357":{"position":[[26,10]]},"513":{"position":[[429,10],[516,10]]},"568":{"position":[[574,10]]},"627":{"position":[[3542,10]]},"688":{"position":[[87,10]]},"895":{"position":[[341,11]]},"1052":{"position":[[429,10],[516,10]]},"1088":{"position":[[574,10]]}},"keywords":{}}],["repr",{"_index":1134,"title":{},"content":{"107":{"position":[[9082,10]]}},"keywords":{}}],["requ",{"_index":546,"title":{"128":{"position":[[21,7]]},"129":{"position":[[49,7]]},"696":{"position":[[21,7]]},"697":{"position":[[49,7]]}},"content":{"31":{"position":[[342,7]]},"71":{"position":[[33,7]]},"72":{"position":[[32,8]]},"73":{"position":[[39,8]]},"74":{"position":[[41,8]]},"75":{"position":[[39,8]]},"77":{"position":[[32,7]]},"78":{"position":[[32,7]]},"79":{"position":[[31,8]]},"80":{"position":[[36,8]]},"81":{"position":[[38,8]]},"82":{"position":[[36,8]]},"83":{"position":[[36,8]]},"84":{"position":[[41,8]]},"86":{"position":[[30,7]]},"87":{"position":[[29,8]]},"88":{"position":[[36,8]]},"90":{"position":[[36,8]]},"91":{"position":[[48,8]]},"93":{"position":[[41,8]]},"94":{"position":[[51,8]]},"95":{"position":[[36,8]]},"96":{"position":[[54,7]]},"97":{"position":[[79,7]]},"98":{"position":[[81,7]]},"100":{"position":[[30,7]]},"101":{"position":[[29,8]]},"102":{"position":[[34,8]]},"103":{"position":[[37,8]]},"105":{"position":[[27,7]]},"106":{"position":[[29,7]]},"107":{"position":[[2225,7],[4686,7]]},"109":{"position":[[38,7]]},"110":{"position":[[37,8]]},"111":{"position":[[44,8]]},"112":{"position":[[46,8]]},"113":{"position":[[47,7]]},"114":{"position":[[64,7]]},"115":{"position":[[66,7]]},"127":{"position":[[134,8]]},"128":{"position":[[84,7],[114,8],[128,7],[151,7]]},"129":{"position":[[76,7]]},"131":{"position":[[62,7],[166,8]]},"136":{"position":[[460,8]]},"144":{"position":[[212,8],[537,7]]},"192":{"position":[[47,9]]},"230":{"position":[[620,8]]},"301":{"position":[[286,7]]},"307":{"position":[[72,8]]},"331":{"position":[[815,9]]},"389":{"position":[[2353,8],[3245,8],[6795,8],[12793,9],[12891,8],[17301,8],[18195,8],[19069,8],[22513,8],[28342,9],[28440,8],[32155,8]]},"422":{"position":[[23,7]]},"437":{"position":[[22,7]]},"440":{"position":[[22,7]]},"478":{"position":[[16,7]]},"509":{"position":[[376,7]]},"623":{"position":[[342,7]]},"663":{"position":[[33,7]]},"664":{"position":[[32,8]]},"665":{"position":[[39,8]]},"666":{"position":[[41,8]]},"667":{"position":[[39,8]]},"669":{"position":[[30,7]]},"670":{"position":[[29,8]]},"671":{"position":[[36,8]]},"673":{"position":[[36,8]]},"674":{"position":[[48,8]]},"676":{"position":[[32,7]]},"677":{"position":[[32,7]]},"678":{"position":[[31,8]]},"679":{"position":[[36,8]]},"680":{"position":[[38,8]]},"681":{"position":[[36,8]]},"682":{"position":[[36,8]]},"683":{"position":[[41,8]]},"695":{"position":[[134,8]]},"696":{"position":[[84,7],[114,8],[128,7],[151,7]]},"697":{"position":[[76,7]]},"699":{"position":[[62,7],[166,8]]},"702":{"position":[[30,7]]},"703":{"position":[[29,8]]},"704":{"position":[[34,8]]},"705":{"position":[[37,8]]},"708":{"position":[[460,8]]},"714":{"position":[[212,8],[537,7]]},"775":{"position":[[47,9]]},"793":{"position":[[620,8]]},"868":{"position":[[270,7]]},"873":{"position":[[72,8]]},"916":{"position":[[2353,8],[3245,8],[6795,8],[12793,9],[12891,8],[17301,8],[18195,8],[19069,8],[22513,8],[28342,9],[28440,8],[32155,8]]},"949":{"position":[[23,7]]},"964":{"position":[[22,7]]},"967":{"position":[[22,7]]},"1010":{"position":[[16,7]]},"1048":{"position":[[376,7]]}},"keywords":{}}],["requests.review",{"_index":1240,"title":{},"content":{"130":{"position":[[49,17]]},"698":{"position":[[49,17]]}},"keywords":{}}],["requests_2.9.1",{"_index":3115,"title":{},"content":{"389":{"position":[[12835,14],[28384,14]]},"916":{"position":[[12835,14],[28384,14]]}},"keywords":{}}],["requir",{"_index":527,"title":{"157":{"position":[[17,10]]},"164":{"position":[[45,12]]},"169":{"position":[[0,12],[21,12]]},"247":{"position":[[0,11]]},"260":{"position":[[0,11]]},"727":{"position":[[17,10]]},"734":{"position":[[45,12]]},"739":{"position":[[0,12],[21,12]]},"817":{"position":[[0,11]]},"831":{"position":[[0,11]]}},"content":{"29":{"position":[[22,8]]},"86":{"position":[[255,11],[366,11],[487,11]]},"89":{"position":[[252,11],[363,11],[484,11]]},"107":{"position":[[2727,8],[2894,12],[5541,7],[5646,7],[5783,7],[6760,9],[7652,7],[7729,8],[7811,8],[7894,8],[8006,8],[8718,8],[9144,9],[9238,8]]},"130":{"position":[[274,8]]},"133":{"position":[[744,7]]},"135":{"position":[[228,8]]},"159":{"position":[[2491,8]]},"161":{"position":[[249,8],[504,8]]},"162":{"position":[[22,8],[408,8],[626,8]]},"171":{"position":[[319,11],[823,8],[996,13]]},"175":{"position":[[461,11]]},"194":{"position":[[280,12],[428,8]]},"199":{"position":[[106,8],[172,8],[1070,9],[1199,9]]},"201":{"position":[[81,12],[122,12]]},"210":{"position":[[44,12]]},"219":{"position":[[446,12]]},"229":{"position":[[1522,8]]},"246":{"position":[[379,12]]},"265":{"position":[[27,8]]},"328":{"position":[[67,8]]},"334":{"position":[[7,8]]},"347":{"position":[[10,8]]},"369":{"position":[[576,8]]},"389":{"position":[[1729,7]]},"398":{"position":[[14,8]]},"416":{"position":[[39,11]]},"460":{"position":[[81,9],[428,8],[484,9]]},"461":{"position":[[223,11],[334,11],[455,11]]},"465":{"position":[[90,9]]},"466":{"position":[[228,11],[339,11],[460,11]]},"468":{"position":[[81,9]]},"507":{"position":[[8,8]]},"511":{"position":[[1177,8]]},"547":{"position":[[22,8]]},"578":{"position":[[5,8],[698,7]]},"583":{"position":[[5,8]]},"588":{"position":[[5,8]]},"617":{"position":[[22,8]]},"669":{"position":[[255,11],[366,11],[487,11]]},"672":{"position":[[252,11],[363,11],[484,11]]},"698":{"position":[[274,8]]},"707":{"position":[[228,8]]},"729":{"position":[[2491,8]]},"731":{"position":[[249,8],[504,8]]},"732":{"position":[[22,8],[408,8],[626,8]]},"741":{"position":[[319,11],[828,8],[1001,13]]},"745":{"position":[[461,11]]},"750":{"position":[[81,12],[122,12]]},"759":{"position":[[44,12]]},"777":{"position":[[286,12],[434,8]]},"782":{"position":[[106,8],[172,8],[1070,9],[1199,9]]},"789":{"position":[[446,12]]},"792":{"position":[[1524,8]]},"816":{"position":[[379,12]]},"836":{"position":[[27,8]]},"892":{"position":[[576,8]]},"916":{"position":[[1729,7]]},"925":{"position":[[14,8]]},"943":{"position":[[39,11]]},"987":{"position":[[81,9],[428,8],[484,9]]},"988":{"position":[[223,11],[334,11],[455,11]]},"992":{"position":[[90,9]]},"993":{"position":[[228,11],[339,11],[460,11]]},"995":{"position":[[81,9]]},"1046":{"position":[[8,8]]},"1073":{"position":[[22,8]]},"1104":{"position":[[5,8],[698,7]]},"1109":{"position":[[5,8]]},"1114":{"position":[[5,8]]}},"keywords":{}}],["required\":\"fal",{"_index":3506,"title":{},"content":{"461":{"position":[[1718,19],[1807,19],[1899,19],[1989,19],[2082,19],[2178,19]]},"463":{"position":[[720,19],[809,19],[901,19],[991,19],[1084,19],[1180,19]]},"466":{"position":[[1748,19],[1837,19],[1929,19],[2019,19],[2112,19],[2208,19]]},"469":{"position":[[744,19],[833,19],[925,19],[1015,19],[1108,19],[1204,19]]},"988":{"position":[[1718,19],[1807,19],[1899,19],[1989,19],[2082,19],[2178,19]]},"990":{"position":[[720,19],[809,19],[901,19],[991,19],[1084,19],[1180,19]]},"993":{"position":[[1748,19],[1837,19],[1929,19],[2019,19],[2112,19],[2208,19]]},"996":{"position":[[744,19],[833,19],[925,19],[1015,19],[1108,19],[1204,19]]}},"keywords":{}}],["required\":\"tru",{"_index":3498,"title":{},"content":{"461":{"position":[[1382,18],[1493,18],[1606,18]]},"463":{"position":[[384,18],[495,18],[608,18]]},"466":{"position":[[1412,18],[1523,18],[1636,18]]},"469":{"position":[[408,18],[519,18],[632,18]]},"988":{"position":[[1382,18],[1493,18],[1606,18]]},"990":{"position":[[384,18],[495,18],[608,18]]},"993":{"position":[[1412,18],[1523,18],[1636,18]]},"996":{"position":[[408,18],[519,18],[632,18]]}},"keywords":{}}],["requiredkernel",{"_index":1485,"title":{},"content":{"152":{"position":[[388,14]]},"722":{"position":[[388,14]]}},"keywords":{}}],["requirement.)minikub",{"_index":39,"title":{},"content":{"4":{"position":[[32,22]]},"410":{"position":[[93,22]]},"593":{"position":[[32,22]]},"937":{"position":[[93,22]]}},"keywords":{}}],["requirements.md",{"_index":1977,"title":{},"content":{"199":{"position":[[351,15]]},"782":{"position":[[351,15]]}},"keywords":{}}],["requirements.txt",{"_index":3595,"title":{},"content":{"507":{"position":[[322,16],[429,16],[453,16],[555,16]]},"511":{"position":[[1226,16]]},"513":{"position":[[208,16]]},"553":{"position":[[1149,16]]},"1046":{"position":[[253,16],[330,16],[368,16],[445,16],[469,16],[555,16]]},"1052":{"position":[[208,16]]},"1079":{"position":[[1149,16]]}},"keywords":{}}],["rerun",{"_index":2076,"title":{},"content":{"217":{"position":[[826,5]]},"787":{"position":[[826,5]]}},"keywords":{}}],["res=\"mem=20gb",{"_index":1872,"title":{},"content":{"182":{"position":[[465,14],[1134,14],[1229,14]]},"765":{"position":[[465,14],[1134,14],[1229,14]]}},"keywords":{}}],["resid",{"_index":1711,"title":{},"content":{"167":{"position":[[247,7]]},"737":{"position":[[247,7]]}},"keywords":{}}],["resign",{"_index":1060,"title":{},"content":{"107":{"position":[[5258,8]]}},"keywords":{}}],["resnet/tower_0/fully_connect",{"_index":3917,"title":{},"content":{"570":{"position":[[4559,32],[7327,32],[13976,32]]},"1090":{"position":[[4559,32],[7327,32],[13976,32]]}},"keywords":{}}],["resnet/tower_0/global_avg_pool",{"_index":3916,"title":{},"content":{"570":{"position":[[4485,32],[7253,32],[13902,32]]},"1090":{"position":[[4485,32],[7253,32],[13902,32]]}},"keywords":{}}],["resnet/tower_0/stage/residual_v1",{"_index":3892,"title":{},"content":{"570":{"position":[[2045,34],[5251,34],[11462,34]]},"1090":{"position":[[2045,34],[5251,34],[11462,34]]}},"keywords":{}}],["resnet/tower_0/stage/residual_v1_1",{"_index":3893,"title":{},"content":{"570":{"position":[[2129,36],[5335,36],[11546,36]]},"1090":{"position":[[2129,36],[5335,36],[11546,36]]}},"keywords":{}}],["resnet/tower_0/stage/residual_v1_2",{"_index":3894,"title":{},"content":{"570":{"position":[[2215,36],[5421,36],[11632,36]]},"1090":{"position":[[2215,36],[5421,36],[11632,36]]}},"keywords":{}}],["resnet/tower_0/stage/residual_v1_3",{"_index":3895,"title":{},"content":{"570":{"position":[[2301,36],[5507,36],[11718,36]]},"1090":{"position":[[2301,36],[5507,36],[11718,36]]}},"keywords":{}}],["resnet/tower_0/stage/residual_v1_4",{"_index":3896,"title":{},"content":{"570":{"position":[[2387,36],[5593,36],[11804,36]]},"1090":{"position":[[2387,36],[5593,36],[11804,36]]}},"keywords":{}}],["resnet/tower_0/stage/residual_v1_5",{"_index":3897,"title":{},"content":{"570":{"position":[[2473,36],[5679,36],[11890,36]]},"1090":{"position":[[2473,36],[5679,36],[11890,36]]}},"keywords":{}}],["resnet/tower_0/stage/residual_v1_6",{"_index":3898,"title":{},"content":{"570":{"position":[[2559,36],[5765,36],[11976,36]]},"1090":{"position":[[2559,36],[5765,36],[11976,36]]}},"keywords":{}}],["resnet/tower_0/stage_1/residual_v1",{"_index":3900,"title":{},"content":{"570":{"position":[[2740,36],[3178,36],[5946,36],[12157,36],[12595,36]]},"1090":{"position":[[2740,36],[3178,36],[5946,36],[12157,36],[12595,36]]}},"keywords":{}}],["resnet/tower_0/stage_1/residual_v1/avg_pool",{"_index":3899,"title":{},"content":{"570":{"position":[[2645,45],[5851,45],[12062,45]]},"1090":{"position":[[2645,45],[5851,45],[12062,45]]}},"keywords":{}}],["resnet/tower_0/stage_1/residual_v1_1",{"_index":3901,"title":{},"content":{"570":{"position":[[2826,38],[3264,38],[6032,38],[12243,38],[12681,38]]},"1090":{"position":[[2826,38],[3264,38],[6032,38],[12243,38],[12681,38]]}},"keywords":{}}],["resnet/tower_0/stage_1/residual_v1_2",{"_index":3902,"title":{},"content":{"570":{"position":[[2914,38],[3352,38],[6120,38],[12331,38],[12769,38]]},"1090":{"position":[[2914,38],[3352,38],[6120,38],[12331,38],[12769,38]]}},"keywords":{}}],["resnet/tower_0/stage_1/residual_v1_3",{"_index":3903,"title":{},"content":{"570":{"position":[[3002,38],[3440,38],[6208,38],[12419,38],[12857,38]]},"1090":{"position":[[3002,38],[3440,38],[6208,38],[12419,38],[12857,38]]}},"keywords":{}}],["resnet/tower_0/stage_1/residual_v1_4",{"_index":3904,"title":{},"content":{"570":{"position":[[3090,38],[3528,38],[6296,38],[12507,38],[12945,38]]},"1090":{"position":[[3090,38],[3528,38],[6296,38],[12507,38],[12945,38]]}},"keywords":{}}],["resnet/tower_0/stage_1/residual_v1_5",{"_index":3905,"title":{},"content":{"570":{"position":[[3616,38],[6384,38],[13033,38]]},"1090":{"position":[[3616,38],[6384,38],[13033,38]]}},"keywords":{}}],["resnet/tower_0/stage_1/residual_v1_6",{"_index":3906,"title":{},"content":{"570":{"position":[[3704,38],[6472,38],[13121,38]]},"1090":{"position":[[3704,38],[6472,38],[13121,38]]}},"keywords":{}}],["resnet/tower_0/stage_2/residual_v1",{"_index":3908,"title":{},"content":{"570":{"position":[[3885,36],[6653,36],[13302,36]]},"1090":{"position":[[3885,36],[6653,36],[13302,36]]}},"keywords":{}}],["resnet/tower_0/stage_2/residual_v1/avg_pool",{"_index":3907,"title":{},"content":{"570":{"position":[[3792,45],[6560,45],[13209,45]]},"1090":{"position":[[3792,45],[6560,45],[13209,45]]}},"keywords":{}}],["resnet/tower_0/stage_2/residual_v1_1",{"_index":3910,"title":{},"content":{"570":{"position":[[3969,38],[6737,38],[13386,38]]},"1090":{"position":[[3969,38],[6737,38],[13386,38]]}},"keywords":{}}],["resnet/tower_0/stage_2/residual_v1_2",{"_index":3911,"title":{},"content":{"570":{"position":[[4055,38],[6823,38],[13472,38]]},"1090":{"position":[[4055,38],[6823,38],[13472,38]]}},"keywords":{}}],["resnet/tower_0/stage_2/residual_v1_3",{"_index":3912,"title":{},"content":{"570":{"position":[[4141,38],[6909,38],[13558,38]]},"1090":{"position":[[4141,38],[6909,38],[13558,38]]}},"keywords":{}}],["resnet/tower_0/stage_2/residual_v1_4",{"_index":3913,"title":{},"content":{"570":{"position":[[4227,38],[6995,38],[13644,38]]},"1090":{"position":[[4227,38],[6995,38],[13644,38]]}},"keywords":{}}],["resnet/tower_0/stage_2/residual_v1_5",{"_index":3914,"title":{},"content":{"570":{"position":[[4313,38],[7081,38],[13730,38]]},"1090":{"position":[[4313,38],[7081,38],[13730,38]]}},"keywords":{}}],["resnet/tower_0/stage_2/residual_v1_6",{"_index":3915,"title":{},"content":{"570":{"position":[[4399,38],[7167,38],[13816,38]]},"1090":{"position":[[4399,38],[7167,38],[13816,38]]}},"keywords":{}}],["resolv",{"_index":941,"title":{},"content":{"107":{"position":[[192,9]]}},"keywords":{}}],["resolv.conf",{"_index":2832,"title":{},"content":{"389":{"position":[[283,11]]},"916":{"position":[[283,11]]}},"keywords":{}}],["resolvconf",{"_index":2898,"title":{},"content":{"389":{"position":[[2496,10],[18338,10]]},"916":{"position":[[2496,10],[18338,10]]}},"keywords":{}}],["resouc",{"_index":3424,"title":{},"content":{"437":{"position":[[1002,8]]},"460":{"position":[[1215,8]]},"964":{"position":[[1002,8]]},"987":{"position":[[1215,8]]}},"keywords":{}}],["resourc",{"_index":118,"title":{"28":{"position":[[66,8]]},"162":{"position":[[35,8]]},"209":{"position":[[0,8]]},"546":{"position":[[66,8]]},"616":{"position":[[66,8]]},"732":{"position":[[35,8]]},"758":{"position":[[0,8]]},"1072":{"position":[[66,8]]}},"content":{"7":{"position":[[569,8],[641,8]]},"25":{"position":[[127,8]]},"28":{"position":[[260,8],[332,8]]},"31":{"position":[[509,10]]},"33":{"position":[[69,8]]},"77":{"position":[[439,12],[503,12],[1197,12],[1261,12]]},"78":{"position":[[410,12],[474,12],[1315,12],[1379,12]]},"79":{"position":[[706,12],[770,12],[1285,12],[1349,12]]},"80":{"position":[[739,12],[803,12]]},"81":{"position":[[447,12],[511,12],[1050,12],[1114,12]]},"82":{"position":[[742,12],[806,12]]},"86":{"position":[[867,12],[931,12]]},"89":{"position":[[864,12],[928,12]]},"100":{"position":[[284,12]]},"103":{"position":[[943,12]]},"107":{"position":[[1497,9],[4151,10]]},"158":{"position":[[69,8]]},"162":{"position":[[103,8],[158,8],[824,9]]},"163":{"position":[[533,8]]},"167":{"position":[[434,8]]},"168":{"position":[[432,8],[490,8]]},"171":{"position":[[490,8],[1319,10]]},"176":{"position":[[789,8],[913,8],[1286,9],[1328,9],[1353,9],[1422,9]]},"179":{"position":[[627,8],[1076,8],[1117,9],[1247,8]]},"181":{"position":[[953,10],[1002,9],[1656,8],[1727,9]]},"182":{"position":[[1606,8]]},"194":{"position":[[206,8],[337,8],[1150,8],[1373,8]]},"195":{"position":[[266,8]]},"197":{"position":[[194,8]]},"204":{"position":[[288,10],[302,8]]},"205":{"position":[[84,8]]},"209":{"position":[[18,8]]},"213":{"position":[[115,9]]},"218":{"position":[[225,8]]},"223":{"position":[[491,10],[577,10]]},"225":{"position":[[237,8]]},"226":{"position":[[226,10],[312,10],[653,9],[683,8]]},"246":{"position":[[537,8]]},"248":{"position":[[633,10]]},"252":{"position":[[314,9]]},"273":{"position":[[873,8],[1031,8],[1151,9]]},"389":{"position":[[1614,9],[2335,9],[3227,9],[6379,9],[12127,10],[12227,9],[17121,9],[18177,9],[19051,9],[22097,9],[27676,10],[27776,9],[31975,9]]},"411":{"position":[[226,8]]},"438":{"position":[[405,12],[469,12]]},"441":{"position":[[376,12],[440,12]]},"449":{"position":[[406,12],[470,12]]},"461":{"position":[[835,12],[899,12]]},"466":{"position":[[840,12],[904,12]]},"478":{"position":[[512,9]]},"479":{"position":[[252,12]]},"492":{"position":[[390,12]]},"496":{"position":[[624,12],[688,12]]},"497":{"position":[[635,12]]},"543":{"position":[[127,8]]},"546":{"position":[[260,8],[332,8]]},"596":{"position":[[569,8],[641,8]]},"613":{"position":[[127,8]]},"616":{"position":[[260,8],[332,8]]},"623":{"position":[[509,10]]},"625":{"position":[[69,8]]},"669":{"position":[[867,12],[931,12]]},"672":{"position":[[864,12],[928,12]]},"676":{"position":[[439,12],[503,12],[1197,12],[1261,12]]},"677":{"position":[[410,12],[474,12],[1315,12],[1379,12]]},"678":{"position":[[706,12],[770,12],[1285,12],[1349,12]]},"679":{"position":[[739,12],[803,12]]},"680":{"position":[[447,12],[511,12],[1050,12],[1114,12]]},"681":{"position":[[742,12],[806,12]]},"702":{"position":[[284,12]]},"705":{"position":[[943,12]]},"728":{"position":[[69,8]]},"732":{"position":[[103,8],[158,8],[824,9]]},"733":{"position":[[533,8]]},"737":{"position":[[434,8]]},"738":{"position":[[432,8],[490,8]]},"741":{"position":[[490,8],[1331,10]]},"746":{"position":[[790,8],[916,8],[1289,9],[1331,9],[1356,9],[1425,9]]},"749":{"position":[[627,8],[1081,8],[1122,9],[1252,8]]},"753":{"position":[[288,10],[302,8]]},"754":{"position":[[84,8]]},"758":{"position":[[18,8]]},"762":{"position":[[115,9]]},"764":{"position":[[953,10],[1002,9],[1664,8],[1740,9]]},"765":{"position":[[1606,8]]},"777":{"position":[[206,8],[343,8],[1430,8],[1653,8]]},"778":{"position":[[266,8]]},"780":{"position":[[200,8]]},"788":{"position":[[225,8]]},"808":{"position":[[491,10],[577,10]]},"810":{"position":[[258,8]]},"811":{"position":[[226,10],[312,10],[653,9],[683,8]]},"816":{"position":[[542,8]]},"818":{"position":[[633,10]]},"822":{"position":[[319,9]]},"844":{"position":[[873,8],[1031,8],[1151,9]]},"916":{"position":[[1614,9],[2335,9],[3227,9],[6379,9],[12127,10],[12227,9],[17121,9],[18177,9],[19051,9],[22097,9],[27676,10],[27776,9],[31975,9]]},"938":{"position":[[87,9]]},"965":{"position":[[405,12],[469,12]]},"968":{"position":[[376,12],[440,12]]},"976":{"position":[[406,12],[470,12]]},"988":{"position":[[835,12],[899,12]]},"993":{"position":[[840,12],[904,12]]},"1006":{"position":[[390,12]]},"1010":{"position":[[512,9]]},"1011":{"position":[[252,12]]},"1023":{"position":[[624,12],[688,12]]},"1024":{"position":[[635,12]]},"1069":{"position":[[127,8]]},"1072":{"position":[[260,8],[332,8]]}},"keywords":{}}],["resource_constraint",{"_index":1871,"title":{},"content":{"182":{"position":[[444,20],[1113,20],[1208,20]]},"765":{"position":[[444,20],[1113,20],[1208,20]]}},"keywords":{}}],["resourceclasses(stream.of(\"org.apache.submarine.server.rest.notebookrestapi",{"_index":3630,"title":{},"content":{"511":{"position":[[465,78]]}},"keywords":{}}],["resourcemap",{"_index":3517,"title":{},"content":{"461":{"position":[[2799,15],[2972,15]]},"463":{"position":[[1801,15],[1974,15]]},"988":{"position":[[2799,15],[2972,15]]},"990":{"position":[[1801,15],[1974,15]]}},"keywords":{}}],["resourcemap\":{\"memory\":\"1024m\",\"cpu\":\"1",{"_index":3455,"title":{},"content":{"438":{"position":[[1410,42]]},"441":{"position":[[1502,42]]},"443":{"position":[[1002,42],[1172,42],[1983,42]]},"446":{"position":[[919,42]]},"449":{"position":[[1441,42]]},"452":{"position":[[922,42]]},"466":{"position":[[2829,42],[2999,42]]},"469":{"position":[[1825,42],[1995,42]]},"472":{"position":[[1100,42],[1270,42]]},"965":{"position":[[1410,42]]},"968":{"position":[[1502,42]]},"970":{"position":[[1002,42],[1172,42],[1983,42]]},"973":{"position":[[919,42]]},"976":{"position":[[1441,42]]},"979":{"position":[[922,42]]},"993":{"position":[[2829,42],[2999,42]]},"996":{"position":[[1825,42],[1995,42]]},"999":{"position":[[1100,42],[1270,42]]}},"keywords":{}}],["resourcemap\":{\"memory\":\"2048m\",\"cpu\":\"1",{"_index":3457,"title":{},"content":{"438":{"position":[[1580,42]]},"441":{"position":[[1672,42]]},"443":{"position":[[2153,42]]},"446":{"position":[[1089,42]]},"449":{"position":[[1611,42]]},"452":{"position":[[1092,42]]},"965":{"position":[[1580,42]]},"968":{"position":[[1672,42]]},"970":{"position":[[2153,42]]},"973":{"position":[[1089,42]]},"976":{"position":[[1611,42]]},"979":{"position":[[1092,42]]}},"keywords":{}}],["resourcepackages(stream.of(\"org.apache.submarine.server.r",{"_index":3628,"title":{},"content":{"511":{"position":[[371,63]]}},"keywords":{}}],["resources\":\"cpu=1,memory=1.0gi",{"_index":913,"title":{},"content":{"100":{"position":[[1145,32]]},"101":{"position":[[887,32]]},"102":{"position":[[878,32]]},"702":{"position":[[1145,32]]},"703":{"position":[[887,32]]},"704":{"position":[[878,32]]}},"keywords":{}}],["resources\":\"cpu\\u003d1,memory\\u003d1.0gi",{"_index":3548,"title":{},"content":{"479":{"position":[[1131,42]]},"482":{"position":[[878,42]]},"485":{"position":[[866,42]]},"488":{"position":[[896,42]]},"1011":{"position":[[1131,42]]},"1014":{"position":[[878,42]]},"1017":{"position":[[866,42]]},"1020":{"position":[[896,42]]}},"keywords":{}}],["resources\":\"cpu\\u003d1,memory\\u003d1024m",{"_index":3452,"title":{},"content":{"438":{"position":[[1311,43]]},"441":{"position":[[1403,43]]},"443":{"position":[[903,43],[1073,43],[1884,43]]},"446":{"position":[[820,43]]},"449":{"position":[[1342,43]]},"452":{"position":[[823,43]]},"461":{"position":[[2700,43],[2873,43]]},"463":{"position":[[1702,43],[1875,43]]},"466":{"position":[[2730,43],[2900,43]]},"469":{"position":[[1726,43],[1896,43]]},"472":{"position":[[1001,43],[1171,43]]},"965":{"position":[[1311,43]]},"968":{"position":[[1403,43]]},"970":{"position":[[903,43],[1073,43],[1884,43]]},"973":{"position":[[820,43]]},"976":{"position":[[1342,43]]},"979":{"position":[[823,43]]},"988":{"position":[[2700,43],[2873,43]]},"990":{"position":[[1702,43],[1875,43]]},"993":{"position":[[2730,43],[2900,43]]},"996":{"position":[[1726,43],[1896,43]]},"999":{"position":[[1001,43],[1171,43]]}},"keywords":{}}],["resources\":\"cpu\\u003d1,memory\\u003d2048m",{"_index":3456,"title":{},"content":{"438":{"position":[[1481,43]]},"441":{"position":[[1573,43]]},"443":{"position":[[2054,43]]},"446":{"position":[[990,43]]},"449":{"position":[[1512,43]]},"452":{"position":[[993,43]]},"965":{"position":[[1481,43]]},"968":{"position":[[1573,43]]},"970":{"position":[[2054,43]]},"973":{"position":[[990,43]]},"976":{"position":[[1512,43]]},"979":{"position":[[993,43]]}},"keywords":{}}],["resources_20.7.0",{"_index":3107,"title":{},"content":{"389":{"position":[[12174,16],[27723,16]]},"916":{"position":[[12174,16],[27723,16]]}},"keywords":{}}],["resourec",{"_index":3423,"title":{},"content":{"437":{"position":[[984,10]]},"460":{"position":[[1197,10]]},"478":{"position":[[529,9]]},"964":{"position":[[984,10]]},"987":{"position":[[1197,10]]},"1010":{"position":[[529,9]]}},"keywords":{}}],["respon",{"_index":470,"title":{},"content":{"28":{"position":[[31,8]]},"71":{"position":[[559,9]]},"72":{"position":[[108,9]]},"73":{"position":[[132,9]]},"74":{"position":[[455,9]]},"75":{"position":[[135,9]]},"77":{"position":[[599,9]]},"78":{"position":[[746,9]]},"79":{"position":[[106,9]]},"80":{"position":[[141,9]]},"81":{"position":[[637,9]]},"82":{"position":[[144,9]]},"83":{"position":[[116,9]]},"84":{"position":[[151,9]]},"93":{"position":[[128,9]]},"94":{"position":[[140,9]]},"95":{"position":[[285,9]]},"96":{"position":[[145,9]]},"97":{"position":[[193,9]]},"98":{"position":[[197,9]]},"100":{"position":[[376,9]]},"101":{"position":[[115,9]]},"102":{"position":[[112,9]]},"103":{"position":[[118,9]]},"105":{"position":[[257,9]]},"106":{"position":[[189,9]]},"107":{"position":[[109,16],[741,17],[824,17],[1753,11],[2580,11],[3486,11],[3846,11],[3954,16],[4966,14]]},"109":{"position":[[251,9]]},"110":{"position":[[118,9]]},"111":{"position":[[138,9]]},"112":{"position":[[241,9]]},"113":{"position":[[143,9]]},"114":{"position":[[175,9]]},"115":{"position":[[179,9]]},"160":{"position":[[572,11],[722,11]]},"193":{"position":[[298,11]]},"218":{"position":[[408,11],[557,15]]},"230":{"position":[[636,11]]},"423":{"position":[[516,8]]},"425":{"position":[[65,8]]},"428":{"position":[[82,8]]},"431":{"position":[[403,8]]},"434":{"position":[[85,8]]},"438":{"position":[[557,8]]},"441":{"position":[[677,8]]},"443":{"position":[[64,8]]},"446":{"position":[[94,8]]},"449":{"position":[[588,8]]},"452":{"position":[[97,8]]},"454":{"position":[[69,8]]},"457":{"position":[[99,8]]},"461":{"position":[[1063,8]]},"463":{"position":[[62,8]]},"466":{"position":[[1089,8]]},"472":{"position":[[246,8]]},"479":{"position":[[336,9]]},"482":{"position":[[98,8]]},"485":{"position":[[90,8]]},"488":{"position":[[93,9]]},"546":{"position":[[31,8]]},"570":{"position":[[14252,8]]},"616":{"position":[[31,8]]},"663":{"position":[[559,9]]},"664":{"position":[[108,9]]},"665":{"position":[[132,9]]},"666":{"position":[[455,9]]},"667":{"position":[[135,9]]},"676":{"position":[[599,9]]},"677":{"position":[[746,9]]},"678":{"position":[[106,9]]},"679":{"position":[[141,9]]},"680":{"position":[[637,9]]},"681":{"position":[[144,9]]},"682":{"position":[[116,9]]},"683":{"position":[[151,9]]},"702":{"position":[[376,9]]},"703":{"position":[[115,9]]},"704":{"position":[[112,9]]},"705":{"position":[[118,9]]},"730":{"position":[[572,11],[722,11]]},"776":{"position":[[298,11]]},"788":{"position":[[408,11],[557,15]]},"793":{"position":[[636,11]]},"950":{"position":[[516,8]]},"952":{"position":[[65,8]]},"955":{"position":[[82,8]]},"958":{"position":[[403,8]]},"961":{"position":[[85,8]]},"965":{"position":[[557,8]]},"968":{"position":[[677,8]]},"970":{"position":[[64,8]]},"973":{"position":[[94,8]]},"976":{"position":[[588,8]]},"979":{"position":[[97,8]]},"981":{"position":[[69,8]]},"984":{"position":[[99,8]]},"988":{"position":[[1063,8]]},"990":{"position":[[62,8]]},"993":{"position":[[1089,8]]},"999":{"position":[[246,8]]},"1011":{"position":[[336,9]]},"1014":{"position":[[98,8]]},"1017":{"position":[[90,8]]},"1020":{"position":[[93,9]]},"1072":{"position":[[31,8]]},"1090":{"position":[[14252,8]]}},"keywords":{}}],["respond",{"_index":1416,"title":{},"content":{"144":{"position":[[491,7]]},"714":{"position":[[491,7]]}},"keywords":{}}],["rest",{"_index":680,"title":{"70":{"position":[[12,4]]},"76":{"position":[[11,4]]},"85":{"position":[[20,4]]},"92":{"position":[[6,4]]},"99":{"position":[[9,4]]},"104":{"position":[[6,4]]},"108":{"position":[[6,4]]},"420":{"position":[[12,4]]},"435":{"position":[[11,4]]},"458":{"position":[[20,4]]},"476":{"position":[[9,4]]},"662":{"position":[[12,4]]},"668":{"position":[[20,4]]},"675":{"position":[[11,4]]},"701":{"position":[[9,4]]},"947":{"position":[[12,4]]},"962":{"position":[[11,4]]},"985":{"position":[[20,4]]},"1008":{"position":[[9,4]]}},"content":{"78":{"position":[[727,4]]},"179":{"position":[[92,4]]},"181":{"position":[[2122,4]]},"200":{"position":[[2913,4]]},"208":{"position":[[156,4]]},"230":{"position":[[197,4],[385,4],[524,4],[590,4],[724,4],[881,4],[923,4]]},"231":{"position":[[338,4],[940,4],[1021,4]]},"324":{"position":[[109,7]]},"352":{"position":[[1107,4],[1453,4]]},"366":{"position":[[21,7]]},"368":{"position":[[81,7],[128,7]]},"441":{"position":[[667,4]]},"677":{"position":[[727,4]]},"749":{"position":[[92,4]]},"757":{"position":[[156,4]]},"764":{"position":[[2135,4]]},"783":{"position":[[2913,4]]},"793":{"position":[[197,4],[385,4],[524,4],[590,4],[724,4],[881,4],[923,4]]},"794":{"position":[[501,4],[1193,4],[1274,4]]},"889":{"position":[[21,7]]},"891":{"position":[[81,7],[128,7]]},"894":{"position":[[109,7]]},"968":{"position":[[667,4]]}},"keywords":{}}],["restart",{"_index":86,"title":{},"content":{"7":{"position":[[131,8]]},"12":{"position":[[123,7]]},"21":{"position":[[536,10]]},"248":{"position":[[509,7]]},"308":{"position":[[127,7]]},"389":{"position":[[15052,8],[30601,8]]},"412":{"position":[[110,8]]},"596":{"position":[[131,8]]},"604":{"position":[[123,7]]},"621":{"position":[[536,10]]},"818":{"position":[[509,7]]},"874":{"position":[[127,7]]},"916":{"position":[[15052,8],[30601,8]]},"939":{"position":[[112,8]]}},"keywords":{}}],["restor",{"_index":3685,"title":{},"content":{"523":{"position":[[72,7]]},"569":{"position":[[1136,8]]},"1089":{"position":[[1136,8]]}},"keywords":{}}],["result",{"_index":628,"title":{"571":{"position":[[12,7]]},"1091":{"position":[[12,7]]}},"content":{"35":{"position":[[1561,6]]},"71":{"position":[[600,9]]},"72":{"position":[[149,9]]},"73":{"position":[[173,9]]},"74":{"position":[[513,9]]},"75":{"position":[[176,9]]},"77":{"position":[[640,9]]},"78":{"position":[[787,9]]},"79":{"position":[[147,9]]},"80":{"position":[[182,9]]},"81":{"position":[[695,9]]},"82":{"position":[[185,9]]},"83":{"position":[[191,9]]},"84":{"position":[[226,9]]},"93":{"position":[[221,8]]},"94":{"position":[[231,8]]},"95":{"position":[[379,8]]},"96":{"position":[[239,8]]},"97":{"position":[[289,8]]},"100":{"position":[[471,10]]},"101":{"position":[[211,10]]},"102":{"position":[[206,10]]},"103":{"position":[[219,9]]},"110":{"position":[[214,8]]},"111":{"position":[[232,8]]},"112":{"position":[[338,8]]},"113":{"position":[[240,8]]},"115":{"position":[[278,8]]},"133":{"position":[[2407,6]]},"135":{"position":[[473,8]]},"176":{"position":[[125,8]]},"200":{"position":[[2018,7]]},"215":{"position":[[1481,7]]},"275":{"position":[[208,6]]},"314":{"position":[[2439,6]]},"333":{"position":[[229,7]]},"352":{"position":[[1169,7]]},"418":{"position":[[83,7]]},"423":{"position":[[586,10]]},"425":{"position":[[135,10]]},"428":{"position":[[152,10]]},"431":{"position":[[473,10]]},"434":{"position":[[155,10]]},"438":{"position":[[627,10]]},"441":{"position":[[747,10]]},"443":{"position":[[134,9]]},"446":{"position":[[164,10]]},"449":{"position":[[658,10]]},"452":{"position":[[167,10]]},"454":{"position":[[139,9]]},"457":{"position":[[169,10]]},"461":{"position":[[1133,10]]},"463":{"position":[[132,10]]},"466":{"position":[[1159,10]]},"469":{"position":[[155,10]]},"472":{"position":[[316,10]]},"474":{"position":[[29,6],[134,6]]},"475":{"position":[[458,7]]},"479":{"position":[[431,10]]},"482":{"position":[[193,9]]},"485":{"position":[[183,10]]},"488":{"position":[[190,10]]},"627":{"position":[[1561,6]]},"663":{"position":[[600,9]]},"664":{"position":[[149,9]]},"665":{"position":[[173,9]]},"666":{"position":[[513,9]]},"667":{"position":[[176,9]]},"676":{"position":[[640,9]]},"677":{"position":[[787,9]]},"678":{"position":[[147,9]]},"679":{"position":[[182,9]]},"680":{"position":[[695,9]]},"681":{"position":[[185,9]]},"682":{"position":[[191,9]]},"683":{"position":[[226,9]]},"702":{"position":[[471,10]]},"703":{"position":[[211,10]]},"704":{"position":[[206,10]]},"705":{"position":[[219,9]]},"707":{"position":[[473,8]]},"746":{"position":[[125,8]]},"783":{"position":[[2018,7]]},"785":{"position":[[1481,7]]},"846":{"position":[[208,6]]},"945":{"position":[[85,7]]},"950":{"position":[[586,10]]},"952":{"position":[[135,10]]},"955":{"position":[[152,10]]},"958":{"position":[[473,10]]},"961":{"position":[[155,10]]},"965":{"position":[[627,10]]},"968":{"position":[[747,10]]},"970":{"position":[[134,9]]},"973":{"position":[[164,10]]},"976":{"position":[[658,10]]},"979":{"position":[[167,10]]},"981":{"position":[[139,9]]},"984":{"position":[[169,10]]},"988":{"position":[[1133,10]]},"990":{"position":[[132,10]]},"993":{"position":[[1159,10]]},"996":{"position":[[155,10]]},"999":{"position":[[316,10]]},"1001":{"position":[[29,6],[134,6]]},"1002":{"position":[[458,7]]},"1011":{"position":[[431,10]]},"1014":{"position":[[193,9]]},"1017":{"position":[[183,10]]},"1020":{"position":[[190,10]]}},"keywords":{}}],["result\":nul",{"_index":882,"title":{},"content":{"98":{"position":[[304,14]]},"106":{"position":[[289,14]]},"109":{"position":[[354,14]]},"114":{"position":[[282,14]]}},"keywords":{}}],["result\":{\"url\":nul",{"_index":936,"title":{},"content":{"105":{"position":[[349,22]]}},"keywords":{}}],["results.act",{"_index":1286,"title":{},"content":{"133":{"position":[[1368,16]]}},"keywords":{}}],["results][vot",{"_index":1390,"title":{},"content":{"141":{"position":[[1158,15]]}},"keywords":{}}],["resum",{"_index":2535,"title":{},"content":{"334":{"position":[[548,8]]},"348":{"position":[[161,8]]}},"keywords":{}}],["retri",{"_index":2248,"title":{},"content":{"272":{"position":[[289,6]]},"843":{"position":[[289,6]]}},"keywords":{}}],["retriev",{"_index":2148,"title":{},"content":{"231":{"position":[[964,8]]},"794":{"position":[[1217,8]]}},"keywords":{}}],["return",{"_index":1935,"title":{},"content":{"193":{"position":[[231,7],[461,7]]},"415":{"position":[[605,6],[699,6],[1334,6]]},"496":{"position":[[135,8]]},"497":{"position":[[163,7]]},"498":{"position":[[82,7]]},"499":{"position":[[101,7]]},"500":{"position":[[73,7]]},"501":{"position":[[232,6]]},"502":{"position":[[88,7]]},"503":{"position":[[176,7]]},"516":{"position":[[107,6],[146,7]]},"523":{"position":[[27,6]]},"524":{"position":[[41,6]]},"526":{"position":[[98,6]]},"572":{"position":[[477,6],[655,6],[1780,6]]},"776":{"position":[[231,7],[461,7]]},"942":{"position":[[623,6],[717,6],[1352,6]]},"1023":{"position":[[135,8]]},"1024":{"position":[[163,7]]},"1025":{"position":[[82,7]]},"1026":{"position":[[101,7]]},"1027":{"position":[[73,7]]},"1028":{"position":[[232,6]]},"1029":{"position":[[88,7]]},"1030":{"position":[[176,7]]},"1033":{"position":[[270,7]]},"1034":{"position":[[305,7]]},"1056":{"position":[[107,6],[146,7]]},"1092":{"position":[[477,6],[655,6],[1780,6]]}},"keywords":{}}],["reus",{"_index":1577,"title":{},"content":{"159":{"position":[[683,5]]},"200":{"position":[[2116,5]]},"267":{"position":[[253,5]]},"386":{"position":[[952,5]]},"729":{"position":[[683,5]]},"783":{"position":[[2116,5]]},"838":{"position":[[253,5]]},"913":{"position":[[952,5]]}},"keywords":{}}],["rev",{"_index":1128,"title":{},"content":{"107":{"position":[[8570,8]]},"384":{"position":[[102,7]]},"911":{"position":[[102,7]]}},"keywords":{}}],["review",{"_index":1016,"title":{"130":{"position":[[12,6]]},"131":{"position":[[16,6]]},"136":{"position":[[0,6]]},"698":{"position":[[12,6]]},"699":{"position":[[16,6]]},"708":{"position":[[0,6]]}},"content":{"107":{"position":[[3104,7]]},"128":{"position":[[228,6]]},"130":{"position":[[16,8],[512,9],[569,8]]},"131":{"position":[[118,6]]},"133":{"position":[[2557,6]]},"136":{"position":[[62,6],[137,8],[195,7],[575,6],[667,6]]},"137":{"position":[[358,7]]},"201":{"position":[[785,6]]},"696":{"position":[[228,6]]},"698":{"position":[[16,8],[512,9],[569,8]]},"699":{"position":[[118,6]]},"708":{"position":[[62,6],[137,8],[195,7],[575,6],[667,6]]},"709":{"position":[[358,7]]},"750":{"position":[[786,6]]}},"keywords":{}}],["reviews.contributor",{"_index":1248,"title":{},"content":{"130":{"position":[[482,20]]},"698":{"position":[[482,20]]}},"keywords":{}}],["revis",{"_index":70,"title":{},"content":{"6":{"position":[[213,9]]},"595":{"position":[[213,9]]}},"keywords":{}}],["revoc",{"_index":2507,"title":{},"content":{"331":{"position":[[2449,10]]}},"keywords":{}}],["revocs.d/41936314e25f402d5f7d73152dd587e7b10f3b1f.rev",{"_index":2510,"title":{},"content":{"331":{"position":[[2511,54]]}},"keywords":{}}],["rf",{"_index":2738,"title":{},"content":{"375":{"position":[[749,2]]},"553":{"position":[[630,2]]},"559":{"position":[[687,2]]},"902":{"position":[[749,2]]},"1079":{"position":[[630,2]]},"1094":{"position":[[687,2]]}},"keywords":{}}],["right",{"_index":640,"title":{},"content":{"35":{"position":[[1978,6]]},"107":{"position":[[813,6],[2473,6]]},"159":{"position":[[2734,5]]},"181":{"position":[[1851,5]]},"211":{"position":[[295,5]]},"395":{"position":[[125,5]]},"627":{"position":[[1978,6]]},"729":{"position":[[2734,5]]},"760":{"position":[[295,5]]},"764":{"position":[[1864,5]]},"922":{"position":[[125,5]]},"1064":{"position":[[138,5]]}},"keywords":{}}],["rj2z7",{"_index":3306,"title":{},"content":{"412":{"position":[[374,5]]}},"keywords":{}}],["rm",{"_index":468,"title":{},"content":{"28":{"position":[[9,2]]},"107":{"position":[[3215,4],[3312,2],[3480,2]]},"375":{"position":[[745,2],[1535,2]]},"546":{"position":[[9,2]]},"549":{"position":[[1560,2]]},"553":{"position":[[626,2],[825,2],[1958,2]]},"559":{"position":[[683,2],[910,2],[1595,2]]},"616":{"position":[[9,2]]},"902":{"position":[[745,2],[1535,2]]},"1072":{"position":[[9,2]]},"1075":{"position":[[1560,2]]},"1079":{"position":[[626,2],[825,2],[1958,2]]},"1094":{"position":[[683,2],[910,2],[1595,2]]}},"keywords":{}}],["rmse",{"_index":4292,"title":{},"content":{"1038":{"position":[[303,7]]}},"keywords":{}}],["roadblock",{"_index":1618,"title":{},"content":{"159":{"position":[[2761,11]]},"729":{"position":[[2761,11]]}},"keywords":{}}],["rol",{"_index":321,"title":{"139":{"position":[[20,4]]},"711":{"position":[[20,4]]}},"content":{"20":{"position":[[378,5]]},"107":{"position":[[99,5],[731,5],[791,5],[848,5],[922,5]]},"139":{"position":[[16,5],[116,4],[201,4],[224,5],[298,4],[384,5],[401,5],[530,7],[597,4]]},"159":{"position":[[2584,4]]},"176":{"position":[[480,6]]},"368":{"position":[[402,4]]},"384":{"position":[[782,5]]},"569":{"position":[[1220,4]]},"620":{"position":[[378,5]]},"711":{"position":[[16,5],[116,4],[201,4],[224,5],[298,4],[384,5],[401,5],[530,7],[597,4]]},"729":{"position":[[2584,4]]},"746":{"position":[[481,6]]},"891":{"position":[[402,4]]},"911":{"position":[[782,5]]},"1089":{"position":[[1220,4]]}},"keywords":{}}],["role.committ",{"_index":1364,"title":{},"content":{"139":{"position":[[258,15]]},"711":{"position":[[258,15]]}},"keywords":{}}],["role.workbench",{"_index":2667,"title":{},"content":{"368":{"position":[[251,14]]},"891":{"position":[[251,14]]}},"keywords":{}}],["roll",{"_index":1653,"title":{},"content":{"161":{"position":[[852,7]]},"248":{"position":[[420,7]]},"731":{"position":[[852,7]]},"818":{"position":[[420,7]]}},"keywords":{}}],["root",{"_index":2786,"title":{},"content":{"383":{"position":[[424,4],[562,5]]},"389":{"position":[[14670,4],[30219,4]]},"910":{"position":[[424,4],[562,5]]},"916":{"position":[[14670,4],[30219,4]]},"1053":{"position":[[84,4]]}},"keywords":{}}],["root@mast",{"_index":3176,"title":{},"content":{"389":{"position":[[16569,11],[16700,11],[16832,11],[16968,11]]},"916":{"position":[[16569,11],[16700,11],[16832,11],[16968,11]]}},"keywords":{}}],["root@work",{"_index":3191,"title":{},"content":{"389":{"position":[[31423,11],[31554,11],[31686,11],[31822,11]]},"916":{"position":[[31423,11],[31554,11],[31686,11],[31822,11]]}},"keywords":{}}],["rotat",{"_index":1058,"title":{},"content":{"107":{"position":[[5179,7],[5215,7]]}},"keywords":{}}],["rout",{"_index":1990,"title":{},"content":{"200":{"position":[[1246,5]]},"783":{"position":[[1246,5]]}},"keywords":{}}],["routin",{"_index":1696,"title":{"165":{"position":[[30,7]]},"735":{"position":[[30,7]]}},"content":{"165":{"position":[[67,7]]},"735":{"position":[[67,7]]}},"keywords":{}}],["row",{"_index":4346,"title":{},"content":{"1064":{"position":[[1934,3]]}},"keywords":{}}],["rows/column",{"_index":1628,"title":{},"content":{"160":{"position":[[180,13]]},"730":{"position":[[180,13]]}},"keywords":{}}],["rsa",{"_index":2402,"title":{},"content":{"314":{"position":[[2661,3]]},"331":{"position":[[567,3],[575,3],[633,3],[710,3]]},"389":{"position":[[16476,3],[16587,5],[31330,3],[31441,5]]},"916":{"position":[[16476,3],[16587,5],[31330,3],[31441,5]]}},"keywords":{}}],["rsa4096",{"_index":2512,"title":{},"content":{"331":{"position":[[2612,7],[2720,7]]},"332":{"position":[[56,7],[175,7]]}},"keywords":{}}],["rsa4096/17628566feed6af7",{"_index":2378,"title":{},"content":{"314":{"position":[[594,24],[839,24],[1470,24],[1709,24]]}},"keywords":{}}],["rsa4096/5ef3a66d57ec647a",{"_index":2371,"title":{},"content":{"314":{"position":[[485,24],[730,24],[1361,24],[1600,24]]}},"keywords":{}}],["rssh",{"_index":2907,"title":{},"content":{"389":{"position":[[2596,4],[18438,4]]},"916":{"position":[[2596,4],[18438,4]]}},"keywords":{}}],["rsync",{"_index":3765,"title":{},"content":{"559":{"position":[[614,5]]},"1094":{"position":[[614,5]]}},"keywords":{}}],["rul",{"_index":1259,"title":{},"content":{"132":{"position":[[162,6]]},"133":{"position":[[66,6]]},"298":{"position":[[405,4]]},"406":{"position":[[318,5]]},"700":{"position":[[162,6]]},"865":{"position":[[408,4]]},"933":{"position":[[318,5]]}},"keywords":{}}],["run",{"_index":0,"title":{"0":{"position":[[0,7]]},"15":{"position":[[0,3]]},"49":{"position":[[7,3]]},"69":{"position":[[7,3]]},"199":{"position":[[38,3]]},"318":{"position":[[7,3]]},"320":{"position":[[0,3]]},"321":{"position":[[0,3]]},"323":{"position":[[7,3]]},"325":{"position":[[0,3]]},"326":{"position":[[0,3]]},"374":{"position":[[27,7]]},"375":{"position":[[31,3]]},"388":{"position":[[0,3]]},"389":{"position":[[0,3]]},"398":{"position":[[30,3]]},"549":{"position":[[31,3]]},"553":{"position":[[31,3]]},"559":{"position":[[31,3]]},"567":{"position":[[0,3]]},"568":{"position":[[11,7]]},"570":{"position":[[0,7]]},"591":{"position":[[20,3]]},"600":{"position":[[0,7]]},"607":{"position":[[0,3]]},"641":{"position":[[7,3]]},"661":{"position":[[7,3]]},"782":{"position":[[38,3]]},"875":{"position":[[7,3]]},"877":{"position":[[0,3]]},"878":{"position":[[0,3]]},"893":{"position":[[7,3]]},"895":{"position":[[0,3]]},"896":{"position":[[0,3]]},"901":{"position":[[27,7]]},"902":{"position":[[31,3]]},"915":{"position":[[0,3]]},"916":{"position":[[0,3]]},"925":{"position":[[30,3]]},"1034":{"position":[[30,4]]},"1075":{"position":[[31,3]]},"1079":{"position":[[31,3]]},"1087":{"position":[[0,3]]},"1088":{"position":[[11,7]]},"1090":{"position":[[0,7]]},"1094":{"position":[[31,3]]},"1117":{"position":[[20,3]]}},"content":{"1":{"position":[[254,3]]},"2":{"position":[[54,3]]},"7":{"position":[[196,7],[247,7],[299,7],[349,7],[400,7],[449,7],[942,8]]},"13":{"position":[[100,3],[165,3],[298,3]]},"14":{"position":[[363,3]]},"17":{"position":[[80,4]]},"20":{"position":[[723,7]]},"21":{"position":[[16,7],[179,7],[287,8]]},"23":{"position":[[44,3]]},"26":{"position":[[193,3]]},"49":{"position":[[7,3]]},"69":{"position":[[7,3]]},"86":{"position":[[184,3]]},"89":{"position":[[181,3]]},"101":{"position":[[378,10],[425,9]]},"102":{"position":[[416,9]]},"107":{"position":[[10913,3]]},"151":{"position":[[133,3],[1164,3]]},"152":{"position":[[321,7]]},"156":{"position":[[905,3],[970,3],[1130,3],[1363,3]]},"159":{"position":[[1280,3],[1506,3]]},"162":{"position":[[76,4],[434,3],[554,7],[903,3]]},"167":{"position":[[51,7]]},"168":{"position":[[619,3]]},"170":{"position":[[509,7]]},"171":{"position":[[1016,3],[1074,3],[1188,3],[1256,3]]},"172":{"position":[[133,3],[475,3]]},"181":{"position":[[286,4],[1203,3],[1295,3],[1594,3]]},"189":{"position":[[565,3],[626,3],[697,3],[1072,3]]},"190":{"position":[[72,7],[96,7],[388,3],[499,3],[569,7],[615,4]]},"193":{"position":[[99,3]]},"194":{"position":[[63,3]]},"195":{"position":[[116,3]]},"197":{"position":[[104,7],[174,7]]},"199":{"position":[[881,3],[936,4]]},"204":{"position":[[80,7],[780,7]]},"207":{"position":[[0,7]]},"209":{"position":[[68,3]]},"211":{"position":[[51,3],[429,3]]},"212":{"position":[[10,3]]},"213":{"position":[[64,7]]},"217":{"position":[[1032,7],[1610,7]]},"218":{"position":[[183,7]]},"219":{"position":[[528,4]]},"225":{"position":[[295,3]]},"226":{"position":[[579,7]]},"229":{"position":[[459,4],[1066,7]]},"231":{"position":[[1086,7]]},"246":{"position":[[23,3]]},"248":{"position":[[31,7],[1162,3]]},"249":{"position":[[67,3]]},"251":{"position":[[95,3]]},"252":{"position":[[93,7],[344,3]]},"269":{"position":[[244,4]]},"270":{"position":[[352,4]]},"273":{"position":[[470,4],[648,4],[1217,4]]},"300":{"position":[[378,3]]},"301":{"position":[[223,3],[267,3]]},"302":{"position":[[124,3]]},"317":{"position":[[406,3]]},"319":{"position":[[144,3]]},"320":{"position":[[285,3],[347,7],[787,3],[811,4],[906,3],[1020,4],[1059,3],[1124,3],[1212,7]]},"324":{"position":[[130,3],[190,7]]},"352":{"position":[[848,3]]},"375":{"position":[[14,3],[447,3],[819,3],[1170,3],[1322,3]]},"377":{"position":[[137,3]]},"384":{"position":[[592,3]]},"386":{"position":[[850,3]]},"389":{"position":[[371,3],[14904,3],[14938,7],[30453,3],[30487,7]]},"391":{"position":[[140,3]]},"394":{"position":[[0,3]]},"395":{"position":[[53,3]]},"402":{"position":[[215,3]]},"406":{"position":[[811,7]]},"407":{"position":[[1446,3]]},"412":{"position":[[84,7],[175,7],[227,7],[281,7],[332,7],[384,7],[438,7],[489,7],[546,7],[599,7],[649,7]]},"461":{"position":[[152,3],[1326,3]]},"463":{"position":[[328,3]]},"466":{"position":[[157,3],[1356,3]]},"469":{"position":[[352,3]]},"475":{"position":[[0,3],[183,4]]},"499":{"position":[[72,8]]},"502":{"position":[[59,8]]},"507":{"position":[[119,7]]},"508":{"position":[[104,5],[309,3]]},"509":{"position":[[387,8]]},"510":{"position":[[99,3],[161,3],[220,3],[289,3],[361,8]]},"511":{"position":[[1201,7]]},"541":{"position":[[44,3]]},"544":{"position":[[193,3]]},"549":{"position":[[14,3],[518,3],[744,3],[767,3],[1063,3],[1167,3],[1348,3],[1462,3],[1506,3],[1556,3]]},"551":{"position":[[30,3]]},"553":{"position":[[14,3],[460,3],[654,3],[1088,3],[1200,3],[1269,3],[1301,3],[1486,3],[1642,3],[1746,3],[1860,3],[1904,3],[1954,3]]},"556":{"position":[[32,3]]},"559":{"position":[[14,3],[441,3],[711,3],[833,3],[924,3],[1079,3],[1279,3],[1383,3],[1497,3],[1541,3],[1591,3]]},"562":{"position":[[25,3]]},"565":{"position":[[367,7]]},"566":{"position":[[0,3],[49,4],[191,3],[265,4],[407,3],[470,3],[537,3]]},"568":{"position":[[20,3],[131,7],[412,4],[505,3]]},"570":{"position":[[75,3],[112,3],[132,4],[229,3],[9686,3],[9706,4],[9803,3],[15980,3]]},"572":{"position":[[5,7],[235,3],[473,3]]},"574":{"position":[[14,7]]},"578":{"position":[[672,3]]},"579":{"position":[[337,3],[1234,7],[1435,7],[1632,7]]},"580":{"position":[[231,3]]},"584":{"position":[[334,3],[1094,7],[1295,7],[1492,7]]},"585":{"position":[[231,3]]},"589":{"position":[[274,3],[1389,7],[1591,7],[1793,7],[1995,7],[2200,7]]},"590":{"position":[[309,3]]},"591":{"position":[[298,3]]},"596":{"position":[[196,7],[247,7],[299,7],[349,7],[400,7],[449,7],[942,8]]},"601":{"position":[[254,3]]},"602":{"position":[[54,3]]},"605":{"position":[[100,3],[165,3],[298,3]]},"606":{"position":[[363,3]]},"609":{"position":[[80,4]]},"611":{"position":[[44,3]]},"614":{"position":[[193,3]]},"620":{"position":[[723,7]]},"621":{"position":[[16,7],[179,7],[287,8]]},"641":{"position":[[7,3]]},"661":{"position":[[7,3]]},"669":{"position":[[184,3]]},"672":{"position":[[181,3]]},"703":{"position":[[378,10],[425,9]]},"704":{"position":[[416,9]]},"721":{"position":[[133,3],[1164,3]]},"722":{"position":[[321,7]]},"726":{"position":[[905,3],[970,3],[1130,3],[1363,3]]},"729":{"position":[[1280,3],[1506,3]]},"732":{"position":[[76,4],[434,3],[554,7],[903,3]]},"737":{"position":[[51,7]]},"738":{"position":[[619,3]]},"740":{"position":[[509,7]]},"741":{"position":[[1021,3],[1079,3],[1200,3],[1268,3]]},"742":{"position":[[133,3],[475,3]]},"753":{"position":[[80,7],[780,7]]},"756":{"position":[[0,7]]},"758":{"position":[[68,3]]},"760":{"position":[[51,3],[429,3]]},"761":{"position":[[10,3]]},"762":{"position":[[64,7]]},"764":{"position":[[286,4],[1208,3],[1301,3],[1601,3]]},"772":{"position":[[565,3],[626,3],[697,3],[1072,3]]},"773":{"position":[[72,7],[96,7],[388,3],[499,3],[569,7],[615,4]]},"776":{"position":[[99,3]]},"777":{"position":[[63,3],[999,3]]},"778":{"position":[[116,3]]},"780":{"position":[[104,7],[180,7]]},"782":{"position":[[881,3],[936,4]]},"787":{"position":[[1032,7],[1610,7]]},"788":{"position":[[183,7]]},"789":{"position":[[528,4]]},"792":{"position":[[459,4],[1067,7]]},"794":{"position":[[1339,7]]},"810":{"position":[[316,3]]},"811":{"position":[[579,7]]},"816":{"position":[[23,3]]},"818":{"position":[[31,7],[1162,3]]},"819":{"position":[[67,3]]},"821":{"position":[[95,3]]},"822":{"position":[[98,7],[349,3]]},"840":{"position":[[244,4]]},"841":{"position":[[352,4]]},"844":{"position":[[470,4],[648,4],[1217,4]]},"867":{"position":[[378,3]]},"868":{"position":[[207,3],[251,3]]},"869":{"position":[[124,3],[861,3]]},"876":{"position":[[144,3]]},"877":{"position":[[285,3],[347,7],[787,3],[811,4],[906,3],[1020,4],[1059,3],[1124,3],[1212,7]]},"894":{"position":[[130,3],[190,7]]},"902":{"position":[[14,3],[447,3],[819,3],[1170,3],[1322,3]]},"904":{"position":[[137,3]]},"911":{"position":[[592,3]]},"913":{"position":[[850,3]]},"916":{"position":[[371,3],[14904,3],[14938,7],[30453,3],[30487,7]]},"918":{"position":[[140,3]]},"921":{"position":[[0,3]]},"922":{"position":[[53,3]]},"929":{"position":[[215,3]]},"934":{"position":[[1466,3]]},"939":{"position":[[86,7],[177,7],[231,7],[287,7],[340,7],[393,7],[447,7],[506,7],[561,7],[613,7]]},"942":{"position":[[2225,4]]},"988":{"position":[[152,3],[1326,3]]},"990":{"position":[[328,3]]},"993":{"position":[[157,3],[1356,3]]},"996":{"position":[[352,3]]},"1002":{"position":[[0,3],[183,4]]},"1026":{"position":[[72,8]]},"1029":{"position":[[59,8]]},"1033":{"position":[[64,3],[175,3]]},"1034":{"position":[[22,3],[45,4],[110,3],[320,3]]},"1035":{"position":[[32,4],[192,4]]},"1036":{"position":[[38,4],[258,4]]},"1037":{"position":[[31,4],[262,4]]},"1038":{"position":[[37,4],[375,4]]},"1046":{"position":[[119,7]]},"1047":{"position":[[104,5],[309,3]]},"1048":{"position":[[387,8]]},"1049":{"position":[[99,3],[161,3],[220,3],[289,3],[361,8]]},"1050":{"position":[[138,3]]},"1053":{"position":[[121,4]]},"1067":{"position":[[44,3]]},"1070":{"position":[[193,3]]},"1075":{"position":[[14,3],[518,3],[744,3],[767,3],[1063,3],[1167,3],[1348,3],[1462,3],[1506,3],[1556,3]]},"1077":{"position":[[30,3]]},"1079":{"position":[[14,3],[460,3],[654,3],[1088,3],[1200,3],[1269,3],[1301,3],[1486,3],[1642,3],[1746,3],[1860,3],[1904,3],[1954,3]]},"1082":{"position":[[32,3]]},"1085":{"position":[[367,7]]},"1086":{"position":[[0,3],[49,4],[191,3],[265,4],[407,3],[470,3],[537,3]]},"1088":{"position":[[20,3],[131,7],[412,4],[505,3]]},"1090":{"position":[[75,3],[112,3],[132,4],[229,3],[9686,3],[9706,4],[9803,3],[15980,3]]},"1092":{"position":[[5,7],[235,3],[473,3]]},"1094":{"position":[[14,3],[441,3],[711,3],[833,3],[924,3],[1079,3],[1279,3],[1383,3],[1497,3],[1541,3],[1591,3]]},"1097":{"position":[[25,3]]},"1100":{"position":[[14,7]]},"1104":{"position":[[672,3]]},"1105":{"position":[[337,3],[1234,7],[1435,7],[1632,7]]},"1106":{"position":[[231,3]]},"1110":{"position":[[334,3],[1094,7],[1295,7],[1492,7]]},"1111":{"position":[[231,3]]},"1115":{"position":[[274,3],[1389,7],[1591,7],[1793,7],[1995,7],[2200,7]]},"1116":{"position":[[309,3]]},"1117":{"position":[[298,3]]}},"keywords":{}}],["run.sh",{"_index":2860,"title":{},"content":{"389":{"position":[[1503,8]]},"916":{"position":[[1503,8]]}},"keywords":{}}],["run_config=conf",{"_index":4063,"title":{},"content":{"572":{"position":[[340,18]]},"1092":{"position":[[340,18]]}},"keywords":{}}],["run_fronted_e2e.sh",{"_index":2435,"title":{},"content":{"320":{"position":[[954,20]]},"877":{"position":[[954,20]]}},"keywords":{}}],["run_frontend_e2e.sh",{"_index":2426,"title":{},"content":{"320":{"position":[[197,19],[791,19]]},"877":{"position":[[197,19],[791,19]]}},"keywords":{}}],["runconf",{"_index":3823,"title":{},"content":{"569":{"position":[[269,9]]},"1089":{"position":[[269,9]]}},"keywords":{}}],["runipi",{"_index":1914,"title":{},"content":{"189":{"position":[[906,7]]},"772":{"position":[[906,7]]}},"keywords":{}}],["runlevel",{"_index":3154,"title":{},"content":{"389":{"position":[[14998,8],[15547,8],[16242,8],[17037,8],[30547,8],[31096,8],[31891,8]]},"916":{"position":[[14998,8],[15547,8],[16242,8],[17037,8],[30547,8],[31096,8],[31891,8]]}},"keywords":{}}],["runnabl",{"_index":1843,"title":{},"content":{"181":{"position":[[377,8],[1350,8]]},"764":{"position":[[377,8],[1356,8]]}},"keywords":{}}],["runningdistributedthchs30kaldijob",{"_index":2806,"title":{"385":{"position":[[0,34]]},"912":{"position":[[0,34]]}},"content":{},"keywords":{}}],["runningtime\":\"2021",{"_index":3476,"title":{},"content":{"443":{"position":[[383,19]]},"970":{"position":[[383,19]]}},"keywords":{}}],["runningtime\":nul",{"_index":3439,"title":{},"content":{"438":{"position":[[845,19]]},"441":{"position":[[965,19]]},"443":{"position":[[1446,19]]},"446":{"position":[[382,19]]},"449":{"position":[[876,19]]},"452":{"position":[[357,19]]},"472":{"position":[[535,19]]},"965":{"position":[[845,19]]},"968":{"position":[[965,19]]},"970":{"position":[[1446,19]]},"973":{"position":[[382,19]]},"976":{"position":[[876,19]]},"979":{"position":[[357,19]]},"999":{"position":[[535,19]]}},"keywords":{}}],["runpython",{"_index":3802,"title":{},"content":{"566":{"position":[[772,9]]},"1086":{"position":[[772,9]]}},"keywords":{}}],["runtim",{"_index":27,"title":{"2":{"position":[[15,7]]},"573":{"position":[[5,7]]},"602":{"position":[[15,7]]},"1099":{"position":[[5,7]]}},"content":{"2":{"position":[[5,7]]},"194":{"position":[[943,8],[1301,7]]},"195":{"position":[[89,8]]},"231":{"position":[[1146,8]]},"252":{"position":[[193,7]]},"369":{"position":[[286,7],[364,7]]},"568":{"position":[[680,7]]},"580":{"position":[[1673,7],[1725,7]]},"602":{"position":[[5,7]]},"777":{"position":[[988,7],[1223,8],[1581,7]]},"778":{"position":[[89,8]]},"794":{"position":[[1399,8]]},"822":{"position":[[198,7]]},"892":{"position":[[286,7],[364,7]]},"1088":{"position":[[680,7]]},"1106":{"position":[[1673,7],[1725,7]]}},"keywords":{}}],["runtime1",{"_index":4217,"title":{},"content":{"794":{"position":[[67,10]]}},"keywords":{}}],["runtime2",{"_index":4218,"title":{},"content":{"794":{"position":[[286,10]]}},"keywords":{}}],["runtimekubernet",{"_index":3251,"title":{},"content":{"406":{"position":[[959,17]]}},"keywords":{}}],["s",{"_index":2580,"title":{},"content":{"339":{"position":[[243,1]]},"375":{"position":[[782,1],[1488,1]]},"549":{"position":[[1514,1]]},"553":{"position":[[1912,1]]},"559":{"position":[[1549,1]]},"572":{"position":[[2126,1]]},"902":{"position":[[782,1],[1488,1]]},"1075":{"position":[[1514,1]]},"1079":{"position":[[1912,1]]},"1092":{"position":[[2126,1]]},"1094":{"position":[[1549,1]]}},"keywords":{}}],["s.strip",{"_index":4104,"title":{},"content":{"572":{"position":[[2111,10]]},"1092":{"position":[[2111,10]]}},"keywords":{}}],["s3",{"_index":1864,"title":{},"content":{"182":{"position":[[303,2],[868,2]]},"189":{"position":[[39,4]]},"190":{"position":[[678,3]]},"217":{"position":[[2401,3]]},"437":{"position":[[1212,2]]},"765":{"position":[[303,2],[868,2]]},"772":{"position":[[39,4]]},"773":{"position":[[678,3]]},"787":{"position":[[2401,3]]},"964":{"position":[[1212,2]]}},"keywords":{}}],["s3/hdf",{"_index":2126,"title":{},"content":{"229":{"position":[[516,8]]},"792":{"position":[[516,8],[1382,8]]}},"keywords":{}}],["s3/hdfs.us",{"_index":2135,"title":{},"content":{"229":{"position":[[1381,13]]}},"keywords":{}}],["s3/hdfs/abf",{"_index":2077,"title":{},"content":{"217":{"position":[[856,13]]},"787":{"position":[[856,13]]}},"keywords":{}}],["s3/nf",{"_index":1925,"title":{},"content":{"190":{"position":[[320,7]]},"773":{"position":[[320,7]]}},"keywords":{}}],["s3://.../input",{"_index":1917,"title":{},"content":{"189":{"position":[[1411,17]]},"772":{"position":[[1411,17]]}},"keywords":{}}],["s3://.../output",{"_index":1918,"title":{},"content":{"189":{"position":[[1437,17]]},"772":{"position":[[1437,17]]}},"keywords":{}}],["s3://bucket/folder/notebook",{"_index":1912,"title":{},"content":{"189":{"position":[[837,28]]},"772":{"position":[[837,28]]}},"keywords":{}}],["s3://bucket/train",{"_index":1865,"title":{},"content":{"182":{"position":[[311,21]]},"189":{"position":[[339,21]]},"765":{"position":[[311,21]]},"772":{"position":[[339,21]]}},"keywords":{}}],["s3://submarine/experi",{"_index":862,"title":{},"content":{"93":{"position":[[494,26],[857,26],[1220,26],[1584,26]]},"94":{"position":[[502,26]]}},"keywords":{}}],["s\\t%s\\t\\t%s\\n",{"_index":515,"title":{},"content":{"28":{"position":[[990,16]]},"546":{"position":[[990,16]]},"616":{"position":[[990,16]]},"1072":{"position":[[990,16]]}},"keywords":{}}],["sa",{"_index":3210,"title":{},"content":{"394":{"position":[[126,2],[179,2],[251,2]]},"395":{"position":[[147,2],[219,2]]},"921":{"position":[[126,2],[179,2],[251,2]]},"922":{"position":[[147,2],[219,2]]}},"keywords":{}}],["saa",{"_index":1673,"title":{},"content":{"162":{"position":[[838,4]]},"732":{"position":[[838,4]]}},"keywords":{}}],["sam",{"_index":295,"title":{},"content":{"17":{"position":[[1083,4]]},"159":{"position":[[958,4],[1130,4]]},"168":{"position":[[210,4]]},"170":{"position":[[470,4],[491,4]]},"171":{"position":[[1892,4]]},"190":{"position":[[805,4]]},"197":{"position":[[289,4]]},"217":{"position":[[1137,4],[1199,4]]},"386":{"position":[[829,4],[962,4]]},"508":{"position":[[284,4]]},"570":{"position":[[387,4],[9884,4]]},"609":{"position":[[1083,4]]},"729":{"position":[[958,4],[1130,4]]},"738":{"position":[[210,4]]},"740":{"position":[[470,4],[491,4]]},"741":{"position":[[1904,4]]},"773":{"position":[[805,4]]},"780":{"position":[[296,4]]},"787":{"position":[[1137,4],[1199,4]]},"913":{"position":[[829,4],[962,4]]},"1047":{"position":[[284,4]]},"1090":{"position":[[387,4],[9884,4]]}},"keywords":{}}],["sampl",{"_index":1541,"title":{},"content":{"156":{"position":[[626,6]]},"160":{"position":[[210,9]]},"212":{"position":[[445,6]]},"389":{"position":[[1880,6],[17714,6],[32600,6]]},"398":{"position":[[183,6]]},"590":{"position":[[24,6]]},"726":{"position":[[626,6]]},"730":{"position":[[210,9]]},"761":{"position":[[445,6]]},"916":{"position":[[1880,6],[17714,6],[32600,6]]},"925":{"position":[[183,6]]},"1116":{"position":[[24,6]]}},"keywords":{}}],["sasl2",{"_index":2915,"title":{},"content":{"389":{"position":[[2680,5],[18522,5]]},"916":{"position":[[2680,5],[18522,5]]}},"keywords":{}}],["sat",{"_index":2399,"title":{},"content":{"314":{"position":[[2621,3]]}},"keywords":{}}],["sav",{"_index":665,"title":{},"content":{"35":{"position":[[3660,5],[3666,4],[3714,4]]},"55":{"position":[[1687,5]]},"151":{"position":[[1047,4]]},"160":{"position":[[394,5],[420,5]]},"172":{"position":[[358,4]]},"173":{"position":[[152,5],[206,6],[311,6]]},"198":{"position":[[48,4]]},"219":{"position":[[188,6]]},"272":{"position":[[215,4]]},"350":{"position":[[388,4]]},"520":{"position":[[0,4]]},"569":{"position":[[838,5],[1149,5],[1713,4]]},"627":{"position":[[3660,5],[3666,4],[3714,4]]},"647":{"position":[[1687,5]]},"721":{"position":[[1047,4]]},"730":{"position":[[394,5],[420,5]]},"742":{"position":[[358,4]]},"743":{"position":[[153,5],[207,6],[312,6]]},"781":{"position":[[48,4]]},"789":{"position":[[188,6]]},"843":{"position":[[215,4]]},"1039":{"position":[[0,4]]},"1089":{"position":[[838,5],[1149,5],[1713,4]]}},"keywords":{}}],["save_model_dir",{"_index":1769,"title":{},"content":{"171":{"position":[[1650,17]]},"199":{"position":[[582,17]]},"741":{"position":[[1662,17]]},"782":{"position":[[582,17]]}},"keywords":{}}],["sc",{"_index":2375,"title":{},"content":{"314":{"position":[[552,2],[797,2],[1428,2],[1667,2]]},"331":{"position":[[2631,4]]},"332":{"position":[[75,4]]}},"keywords":{}}],["scal",{"_index":1646,"title":{},"content":{"161":{"position":[[347,5],[387,6]]},"194":{"position":[[1410,5]]},"415":{"position":[[487,7]]},"731":{"position":[[347,5],[387,6]]},"777":{"position":[[1690,5]]},"942":{"position":[[505,7]]}},"keywords":{}}],["scala",{"_index":590,"title":{},"content":{"35":{"position":[[289,6]]},"505":{"position":[[16,6]]},"627":{"position":[[289,6]]},"1044":{"position":[[16,6]]}},"keywords":{}}],["scalabl",{"_index":2161,"title":{},"content":{"246":{"position":[[395,12]]},"816":{"position":[[395,12]]}},"keywords":{}}],["scale(imag",{"_index":3334,"title":{},"content":{"415":{"position":[[536,12]]},"942":{"position":[[554,12]]}},"keywords":{}}],["scan",{"_index":1339,"title":{},"content":{"136":{"position":[[493,4]]},"708":{"position":[[493,4]]}},"keywords":{}}],["schedul",{"_index":1952,"title":{},"content":{"194":{"position":[[1382,10]]},"246":{"position":[[546,10]]},"248":{"position":[[247,11],[328,10]]},"252":{"position":[[407,10]]},"259":{"position":[[154,11],[531,11]]},"572":{"position":[[514,9]]},"589":{"position":[[2087,10],[2263,9],[3030,10]]},"777":{"position":[[1662,10]]},"816":{"position":[[551,10]]},"818":{"position":[[247,11],[328,10]]},"822":{"position":[[412,10]]},"830":{"position":[[154,11],[531,11]]},"1092":{"position":[[514,9]]},"1115":{"position":[[2087,10],[2263,9],[3030,10]]}},"keywords":{}}],["scheduler_launch_cmd",{"_index":4204,"title":{},"content":{"590":{"position":[[475,20]]},"1116":{"position":[[475,20]]}},"keywords":{}}],["scheduler_launch_cmd=\"myvenv.zip/venv/bin/python",{"_index":4189,"title":{},"content":{"589":{"position":[[782,48]]},"1115":{"position":[[782,48]]}},"keywords":{}}],["scheduler_resourc",{"_index":4188,"title":{},"content":{"589":{"position":[[739,19]]},"590":{"position":[[432,19]]},"1115":{"position":[[739,19]]},"1116":{"position":[[432,19]]}},"keywords":{}}],["scientist",{"_index":1492,"title":{"163":{"position":[[13,9]]},"733":{"position":[[13,9]]}},"content":{"153":{"position":[[89,10]]},"159":{"position":[[659,10],[1802,9]]},"160":{"position":[[561,10]]},"161":{"position":[[94,11]]},"163":{"position":[[46,10],[188,10]]},"165":{"position":[[37,9],[309,11]]},"168":{"position":[[57,10],[152,10]]},"171":{"position":[[1061,9]]},"198":{"position":[[58,10]]},"217":{"position":[[1833,12]]},"230":{"position":[[43,10]]},"723":{"position":[[89,10]]},"729":{"position":[[659,10],[1802,9]]},"730":{"position":[[561,10]]},"731":{"position":[[94,11]]},"733":{"position":[[46,10],[188,10]]},"735":{"position":[[37,9],[309,11]]},"738":{"position":[[57,10],[152,10]]},"741":{"position":[[1066,9]]},"781":{"position":[[58,10]]},"787":{"position":[[1833,12]]},"793":{"position":[[43,10]]}},"keywords":{}}],["scientist/data",{"_index":1553,"title":{},"content":{"158":{"position":[[35,14]]},"728":{"position":[[35,14]]}},"keywords":{}}],["scipi",{"_index":3693,"title":{},"content":{"549":{"position":[[195,6],[893,5]]},"553":{"position":[[199,6],[916,5]]},"559":{"position":[[205,6],[1025,5]]},"1075":{"position":[[195,6],[893,5]]},"1079":{"position":[[199,6],[916,5]]},"1094":{"position":[[205,6],[1025,5]]}},"keywords":{}}],["scop",{"_index":1056,"title":{"220":{"position":[[3,5],[18,5]]},"242":{"position":[[50,5]]},"790":{"position":[[3,5],[18,5]]},"805":{"position":[[50,5]]}},"content":{"107":{"position":[[5040,5]]},"144":{"position":[[390,6]]},"177":{"position":[[268,6]]},"229":{"position":[[1616,5]]},"242":{"position":[[35,5]]},"714":{"position":[[390,6]]},"747":{"position":[[268,6]]},"792":{"position":[[1618,5]]},"805":{"position":[[35,5]]}},"keywords":{}}],["scor",{"_index":1639,"title":{},"content":{"160":{"position":[[532,8]]},"171":{"position":[[233,8]]},"173":{"position":[[262,7]]},"730":{"position":[[532,8]]},"741":{"position":[[233,8]]},"743":{"position":[[263,7]]}},"keywords":{}}],["scratch",{"_index":1691,"title":{},"content":{"163":{"position":[[636,7]]},"733":{"position":[[636,7]]}},"keywords":{}}],["screenshot",{"_index":2775,"title":{},"content":{"381":{"position":[[27,10]]},"396":{"position":[[159,11]]},"908":{"position":[[27,10]]},"923":{"position":[[159,11]]}},"keywords":{}}],["script",{"_index":231,"title":{"415":{"position":[[18,6]]},"570":{"position":[[8,6]]},"942":{"position":[[18,6]]},"1090":{"position":[[8,6]]}},"content":{"16":{"position":[[77,6],[135,6]]},"28":{"position":[[366,7],[428,6],[1088,6]]},"138":{"position":[[170,6]]},"153":{"position":[[542,7]]},"173":{"position":[[346,7]]},"182":{"position":[[241,9],[535,8]]},"194":{"position":[[80,7]]},"320":{"position":[[265,6],[843,6]]},"414":{"position":[[63,7],[91,6]]},"415":{"position":[[31,6]]},"508":{"position":[[137,6]]},"511":{"position":[[1213,7]]},"546":{"position":[[366,7],[428,6],[1088,6]]},"565":{"position":[[120,7],[132,6]]},"608":{"position":[[77,6],[135,6]]},"616":{"position":[[366,7],[428,6],[1088,6]]},"710":{"position":[[170,6]]},"723":{"position":[[542,7]]},"743":{"position":[[347,7]]},"765":{"position":[[241,9],[535,8]]},"777":{"position":[[80,7]]},"877":{"position":[[265,6],[843,6]]},"941":{"position":[[63,7],[91,6]]},"942":{"position":[[31,6]]},"1047":{"position":[[137,6]]},"1072":{"position":[[366,7],[428,6],[1088,6]]},"1085":{"position":[[120,7],[132,6]]}},"keywords":{}}],["script/dep",{"_index":1751,"title":{},"content":{"171":{"position":[[949,19]]},"741":{"position":[[954,19]]}},"keywords":{}}],["scripts.allow",{"_index":1753,"title":{},"content":{"171":{"position":[[1026,13]]},"741":{"position":[[1031,13]]}},"keywords":{}}],["sdk",{"_index":1797,"title":{"187":{"position":[[11,3]]},"212":{"position":[[10,3]]},"365":{"position":[[15,3]]},"397":{"position":[[17,3]]},"398":{"position":[[44,3]]},"399":{"position":[[18,3]]},"400":{"position":[[8,3]]},"401":{"position":[[8,3]]},"504":{"position":[[10,3]]},"506":{"position":[[7,3]]},"511":{"position":[[16,3]]},"761":{"position":[[10,3]]},"770":{"position":[[11,3]]},"887":{"position":[[15,3]]},"924":{"position":[[17,3]]},"925":{"position":[[44,3]]},"926":{"position":[[18,3]]},"927":{"position":[[8,3]]},"928":{"position":[[8,3]]},"1043":{"position":[[10,3]]},"1045":{"position":[[7,3]]},"1050":{"position":[[16,3]]}},"content":{"174":{"position":[[10,3]]},"179":{"position":[[103,3],[1363,3]]},"212":{"position":[[97,4],[112,3],[324,3],[375,3],[542,5]]},"230":{"position":[[232,3],[402,3]]},"231":{"position":[[675,3]]},"365":{"position":[[15,3]]},"372":{"position":[[494,4]]},"398":{"position":[[10,3]]},"400":{"position":[[47,4]]},"402":{"position":[[167,3],[189,3]]},"403":{"position":[[289,3]]},"407":{"position":[[57,3]]},"418":{"position":[[45,3]]},"508":{"position":[[86,3]]},"511":{"position":[[895,3],[1149,4]]},"512":{"position":[[119,3]]},"744":{"position":[[10,3]]},"749":{"position":[[103,3],[1368,3]]},"761":{"position":[[97,4],[112,3],[324,3],[375,3],[542,5]]},"793":{"position":[[232,3],[402,3]]},"794":{"position":[[849,3]]},"887":{"position":[[15,3]]},"925":{"position":[[10,3]]},"927":{"position":[[47,4]]},"929":{"position":[[167,3],[189,3]]},"930":{"position":[[289,3]]},"934":{"position":[[57,3]]},"945":{"position":[[47,3]]},"1047":{"position":[[86,3]]},"1050":{"position":[[208,4]]},"1051":{"position":[[119,3]]}},"keywords":{}}],["sdk.sh",{"_index":3640,"title":{},"content":{"511":{"position":[[1112,6]]}},"keywords":{}}],["sdk.shto",{"_index":4303,"title":{},"content":{"1050":{"position":[[172,8]]}},"keywords":{}}],["sdk/pysubmarin",{"_index":3232,"title":{},"content":{"401":{"position":[[285,15]]},"507":{"position":[[644,15]]},"510":{"position":[[140,15]]},"513":{"position":[[157,15]]},"928":{"position":[[285,15]]},"1046":{"position":[[641,15]]},"1049":{"position":[[140,15]]},"1052":{"position":[[157,15]]}},"keywords":{}}],["sdk/pysubmarine/client/api_client.pi",{"_index":3641,"title":{},"content":{"511":{"position":[[1266,36]]}},"keywords":{}}],["sdk/pysubmarine/github",{"_index":3598,"title":{},"content":{"507":{"position":[[519,22]]},"1046":{"position":[[504,22]]}},"keywords":{}}],["sdk/pysubmarine/submarine.verifi",{"_index":3613,"title":{},"content":{"509":{"position":[[306,32]]},"1048":{"position":[[306,32]]}},"keywords":{}}],["search",{"_index":598,"title":{},"content":{"35":{"position":[[454,9],[1934,7]]},"143":{"position":[[263,6]]},"333":{"position":[[137,10]]},"627":{"position":[[454,9],[1934,7]]}},"keywords":{}}],["sec",{"_index":2370,"title":{},"content":{"314":{"position":[[481,3],[726,3],[1357,3],[1596,3]]},"570":{"position":[[15164,4],[15229,4],[15962,4]]},"1090":{"position":[[15164,4],[15229,4],[15962,4]]}},"keywords":{}}],["second",{"_index":3589,"title":{},"content":{"503":{"position":[[116,7]]},"1030":{"position":[[116,7]]}},"keywords":{}}],["secret",{"_index":2154,"title":{},"content":{"244":{"position":[[174,8]]},"314":{"position":[[456,6]]},"331":{"position":[[2311,6],[2577,6]]},"339":{"position":[[388,6]]},"395":{"position":[[104,7],[172,6],[196,6]]},"814":{"position":[[174,8]]},"922":{"position":[[104,7],[172,6],[196,6]]}},"keywords":{}}],["section",{"_index":584,"title":{},"content":{"35":{"position":[[138,9]]},"107":{"position":[[957,8],[5604,7],[5690,7],[8612,7]]},"193":{"position":[[135,9]]},"201":{"position":[[763,7]]},"213":{"position":[[454,7]]},"627":{"position":[[138,9]]},"750":{"position":[[764,7]]},"762":{"position":[[454,7]]},"776":{"position":[[135,9]]}},"keywords":{}}],["secur",{"_index":1806,"title":{"176":{"position":[[0,8]]},"213":{"position":[[0,8]]},"243":{"position":[[0,8]]},"746":{"position":[[0,8]]},"762":{"position":[[0,8]]},"813":{"position":[[0,8]]},"888":{"position":[[15,8]]},"1053":{"position":[[25,8]]},"1060":{"position":[[16,8]]}},"content":{"176":{"position":[[201,9],[316,9],[369,8],[405,9]]},"213":{"position":[[16,8]]},"746":{"position":[[201,9],[317,9],[370,8],[406,9]]},"762":{"position":[[16,8]]},"1053":{"position":[[16,8],[203,8],[245,8]]},"1061":{"position":[[68,8]]},"1063":{"position":[[26,8]]}},"keywords":{}}],["securit",{"_index":2152,"title":{},"content":{"244":{"position":[[129,11]]},"814":{"position":[[129,11]]}},"keywords":{}}],["security.xml",{"_index":4314,"title":{},"content":{"1064":{"position":[[48,12]]}},"keywords":{}}],["security/gov",{"_index":1695,"title":{"164":{"position":[[25,19]]},"734":{"position":[[25,19]]}},"content":{},"keywords":{}}],["see",{"_index":80,"title":{},"content":{"7":{"position":[[68,3]]},"107":{"position":[[5351,3]]},"138":{"position":[[195,3]]},"144":{"position":[[638,3]]},"145":{"position":[[463,3]]},"146":{"position":[[0,3]]},"149":{"position":[[55,3]]},"151":{"position":[[757,4]]},"153":{"position":[[618,4]]},"156":{"position":[[823,3]]},"159":{"position":[[852,3]]},"163":{"position":[[37,3]]},"175":{"position":[[19,4]]},"227":{"position":[[14,3]]},"229":{"position":[[916,4]]},"301":{"position":[[410,3]]},"362":{"position":[[60,3]]},"389":{"position":[[1823,3],[14851,3],[30400,3]]},"406":{"position":[[191,3],[1119,3]]},"418":{"position":[[75,3],[163,3]]},"437":{"position":[[862,3]]},"460":{"position":[[1075,3]]},"475":{"position":[[421,3]]},"478":{"position":[[378,3]]},"510":{"position":[[79,4]]},"565":{"position":[[405,3]]},"568":{"position":[[273,3]]},"571":{"position":[[288,3]]},"572":{"position":[[58,3]]},"579":{"position":[[989,3]]},"584":{"position":[[849,3]]},"589":{"position":[[1143,3]]},"596":{"position":[[68,3]]},"710":{"position":[[195,3]]},"714":{"position":[[638,3]]},"716":{"position":[[0,3]]},"719":{"position":[[55,3]]},"721":{"position":[[757,4]]},"723":{"position":[[618,4]]},"726":{"position":[[823,3]]},"729":{"position":[[852,3]]},"733":{"position":[[37,3]]},"745":{"position":[[19,4]]},"792":{"position":[[916,4]]},"812":{"position":[[14,3]]},"868":{"position":[[394,3]]},"884":{"position":[[60,3]]},"916":{"position":[[1823,3],[14851,3],[30400,3]]},"933":{"position":[[191,3],[770,3]]},"945":{"position":[[77,3]]},"964":{"position":[[862,3]]},"987":{"position":[[1075,3]]},"1002":{"position":[[421,3]]},"1010":{"position":[[378,3]]},"1049":{"position":[[79,4]]},"1085":{"position":[[405,3]]},"1088":{"position":[[273,3]]},"1091":{"position":[[288,3]]},"1092":{"position":[[58,3]]},"1105":{"position":[[989,3]]},"1110":{"position":[[849,3]]},"1115":{"position":[[1143,3]]}},"keywords":{}}],["select",{"_index":212,"title":{},"content":{"14":{"position":[[327,6]]},"35":{"position":[[1716,6],[1749,9]]},"160":{"position":[[194,6]]},"298":{"position":[[384,6]]},"331":{"position":[[529,6],[682,10],[1359,8]]},"332":{"position":[[338,8]]},"350":{"position":[[174,6]]},"355":{"position":[[178,6]]},"389":{"position":[[6968,9],[7739,9],[7886,9],[8057,9],[8231,9],[8379,9],[8547,9],[8701,9],[8907,9],[9113,9],[9294,9],[9475,9],[9651,9],[9785,9],[9941,9],[10121,9],[10270,9],[10404,9],[10557,9],[10726,9],[10893,9],[11062,9],[11192,9],[11355,9],[11524,9],[11700,9],[11895,9],[12075,9],[12252,9],[12409,9],[12556,9],[12745,9],[12923,9],[22686,9],[23457,9],[23604,9],[23775,9],[23949,9],[24097,9],[24265,9],[24419,9],[24625,9],[24831,9],[25012,9],[25193,9],[25369,9],[25503,9],[25659,9],[25839,9],[25988,9],[26122,9],[26275,9],[26444,9],[26611,9],[26780,9],[26910,9],[27073,9],[27249,9],[27444,9],[27624,9],[27801,9],[27958,9],[28105,9],[28294,9],[28472,9]]},"395":{"position":[[114,6]]},"418":{"position":[[203,6]]},"606":{"position":[[327,6]]},"627":{"position":[[1716,6],[1749,9]]},"730":{"position":[[194,6]]},"865":{"position":[[387,6]]},"916":{"position":[[6968,9],[7739,9],[7886,9],[8057,9],[8231,9],[8379,9],[8547,9],[8701,9],[8907,9],[9113,9],[9294,9],[9475,9],[9651,9],[9785,9],[9941,9],[10121,9],[10270,9],[10404,9],[10557,9],[10726,9],[10893,9],[11062,9],[11192,9],[11355,9],[11524,9],[11700,9],[11895,9],[12075,9],[12252,9],[12409,9],[12556,9],[12745,9],[12923,9],[22686,9],[23457,9],[23604,9],[23775,9],[23949,9],[24097,9],[24265,9],[24419,9],[24625,9],[24831,9],[25012,9],[25193,9],[25369,9],[25503,9],[25659,9],[25839,9],[25988,9],[26122,9],[26275,9],[26444,9],[26611,9],[26780,9],[26910,9],[27073,9],[27249,9],[27444,9],[27624,9],[27801,9],[27958,9],[28105,9],[28294,9],[28472,9]]},"922":{"position":[[114,6]]},"945":{"position":[[174,6]]}},"keywords":{}}],["self",{"_index":507,"title":{},"content":{"28":{"position":[[827,4],[843,4],[863,6],[895,5]]},"546":{"position":[[827,4],[843,4],[863,6],[895,5]]},"616":{"position":[[827,4],[843,4],[863,6],[895,5]]},"1072":{"position":[[827,4],[843,4],[863,6],[895,5]]}},"keywords":{}}],["sen",{"_index":1675,"title":{},"content":{"162":{"position":[[961,6]]},"165":{"position":[[116,5]]},"732":{"position":[[961,6]]},"735":{"position":[[116,5]]}},"keywords":{}}],["send",{"_index":1389,"title":{"357":{"position":[[5,4]]}},"content":{"141":{"position":[[1121,4],[1284,4],[2026,4]]},"148":{"position":[[374,4]]},"263":{"position":[[106,4],[318,5]]},"273":{"position":[[186,4],[548,7],[677,5]]},"332":{"position":[[200,4],[276,4]]},"351":{"position":[[36,4]]},"834":{"position":[[106,4],[318,5]]},"844":{"position":[[186,4],[548,7],[677,5]]}},"keywords":{}}],["sent",{"_index":1105,"title":{},"content":{"107":{"position":[[7541,4]]},"141":{"position":[[1234,5],[1515,4],[1554,4]]},"301":{"position":[[294,4]]},"357":{"position":[[99,4]]},"868":{"position":[[278,4]]}},"keywords":{}}],["separ",{"_index":1076,"title":{},"content":{"107":{"position":[[6174,10]]},"155":{"position":[[349,11]]},"162":{"position":[[672,8],[878,8]]},"167":{"position":[[603,8]]},"194":{"position":[[743,8]]},"200":{"position":[[2950,10]]},"263":{"position":[[479,8]]},"267":{"position":[[180,8]]},"272":{"position":[[263,8]]},"389":{"position":[[1676,11]]},"725":{"position":[[349,11]]},"732":{"position":[[672,8],[878,8]]},"737":{"position":[[603,8]]},"777":{"position":[[749,8]]},"783":{"position":[[2950,10]]},"834":{"position":[[479,8]]},"838":{"position":[[180,8]]},"843":{"position":[[263,8]]},"916":{"position":[[1676,11]]}},"keywords":{}}],["seri",{"_index":2057,"title":{},"content":{"216":{"position":[[66,6],[180,6]]},"350":{"position":[[254,6]]},"355":{"position":[[303,6]]},"786":{"position":[[66,6],[180,6]]}},"keywords":{}}],["serv",{"_index":102,"title":{"92":{"position":[[0,5]]},"104":{"position":[[0,5]]},"105":{"position":[[15,5]]},"106":{"position":[[28,5]]},"108":{"position":[[0,5]]},"191":{"position":[[44,6]]},"197":{"position":[[52,7]]},"200":{"position":[[43,6]]},"208":{"position":[[10,6]]},"228":{"position":[[10,6]]},"230":{"position":[[10,6]]},"232":{"position":[[10,6]]},"237":{"position":[[6,7]]},"257":{"position":[[8,6]]},"296":{"position":[[8,6]]},"332":{"position":[[43,6]]},"366":{"position":[[15,6]]},"384":{"position":[[20,6]]},"419":{"position":[[3,5]]},"757":{"position":[[10,6]]},"774":{"position":[[44,6]]},"780":{"position":[[52,7]]},"783":{"position":[[43,6]]},"791":{"position":[[10,6]]},"793":{"position":[[10,6]]},"795":{"position":[[10,6]]},"800":{"position":[[6,7]]},"828":{"position":[[8,6]]},"863":{"position":[[8,6]]},"889":{"position":[[15,6]]},"911":{"position":[[20,6]]},"946":{"position":[[3,5]]}},"content":{"7":{"position":[[322,6]]},"13":{"position":[[384,6]]},"15":{"position":[[84,7]]},"17":{"position":[[130,6],[197,6],[273,9],[323,6]]},"21":{"position":[[324,6],[447,6],[560,7]]},"105":{"position":[[332,5]]},"106":{"position":[[272,5]]},"154":{"position":[[1234,6]]},"156":{"position":[[750,6],[801,7]]},"160":{"position":[[513,7]]},"173":{"position":[[243,7],[290,8],[338,7],[390,5],[480,7]]},"179":{"position":[[227,6],[381,9],[1614,6],[1654,6]]},"191":{"position":[[43,6]]},"194":{"position":[[538,7],[769,6],[1333,8],[1495,6]]},"197":{"position":[[34,7]]},"200":{"position":[[93,7],[153,6],[514,6],[1005,7],[1030,7],[2510,6]]},"201":{"position":[[571,7],[593,6]]},"208":{"position":[[37,6],[655,6]]},"210":{"position":[[207,7]]},"211":{"position":[[73,8]]},"212":{"position":[[164,6],[558,6],[614,7]]},"215":{"position":[[91,8],[369,9],[764,7],[1008,7],[1640,7],[1788,8],[2024,7]]},"217":{"position":[[41,8],[1092,7],[1347,7],[1404,7],[1746,6]]},"218":{"position":[[110,8]]},"222":{"position":[[362,6]]},"225":{"position":[[309,6]]},"229":{"position":[[27,6],[662,6],[820,6]]},"230":{"position":[[10,6],[175,6],[270,7],[415,6]]},"231":{"position":[[784,6],[885,6],[1001,6]]},"232":{"position":[[34,6],[391,7]]},"242":{"position":[[110,7]]},"248":{"position":[[14,6],[82,6],[273,6],[531,6],[743,6]]},"251":{"position":[[113,7]]},"252":{"position":[[173,7],[267,7]]},"259":{"position":[[72,6],[93,7],[111,6],[239,6],[721,6],[742,6]]},"261":{"position":[[34,6],[170,7]]},"263":{"position":[[37,7],[261,6]]},"265":{"position":[[58,7],[198,7],[233,7]]},"267":{"position":[[38,6],[242,6]]},"268":{"position":[[188,6],[226,6]]},"269":{"position":[[267,7],[488,6]]},"270":{"position":[[375,6],[469,6],[679,6],[841,6]]},"271":{"position":[[181,6],[223,6],[277,6],[329,6]]},"273":{"position":[[51,6],[130,6],[272,6],[352,6],[493,6],[666,7],[975,7],[1144,6],[1239,7],[1294,6]]},"274":{"position":[[76,6],[157,6],[248,7]]},"275":{"position":[[80,8],[124,7],[281,7]]},"277":{"position":[[62,7]]},"281":{"position":[[380,6]]},"300":{"position":[[175,6],[245,6],[519,6],[632,6]]},"301":{"position":[[256,6]]},"308":{"position":[[40,6],[139,7]]},"314":{"position":[[2204,6],[2262,6]]},"315":{"position":[[367,6]]},"317":{"position":[[81,6]]},"325":{"position":[[154,6],[313,6]]},"336":{"position":[[102,8],[374,9],[414,8],[519,9],[529,8],[633,9],[643,10]]},"349":{"position":[[459,7]]},"366":{"position":[[13,7]]},"368":{"position":[[10,7],[39,6],[65,6]]},"372":{"position":[[305,6]]},"383":{"position":[[698,7],[739,6],[831,6],[880,6],[919,6],[1174,7]]},"384":{"position":[[10,6],[305,6],[973,7],[1134,7]]},"389":{"position":[[1652,6],[1714,6],[1765,6],[2272,6],[2292,6],[3164,6],[3184,6],[6152,6],[6268,6],[11753,7],[11863,6],[11943,7],[12043,6],[16379,6],[16430,6],[18114,6],[18134,6],[18988,6],[19008,6],[21870,6],[21986,6],[27302,7],[27412,6],[27492,7],[27592,6],[31233,6],[31284,6]]},"406":{"position":[[150,7],[244,7],[289,7],[1141,7],[1181,6]]},"407":{"position":[[89,6],[1622,7]]},"411":{"position":[[278,7]]},"412":{"position":[[462,6]]},"495":{"position":[[22,6]]},"510":{"position":[[351,6]]},"511":{"position":[[100,7],[708,7]]},"512":{"position":[[172,6]]},"517":{"position":[[222,7]]},"566":{"position":[[238,7],[454,7]]},"568":{"position":[[159,8]]},"570":{"position":[[197,6],[1970,6],[9771,6],[11387,6],[17494,6]]},"589":{"position":[[1279,7],[1481,7],[2413,6],[2560,6],[3441,7],[3849,7]]},"596":{"position":[[322,6]]},"605":{"position":[[384,6]]},"607":{"position":[[84,7]]},"609":{"position":[[130,6],[197,6],[273,9],[323,6]]},"621":{"position":[[324,6],[447,6],[560,7]]},"724":{"position":[[1234,6]]},"726":{"position":[[750,6],[801,7]]},"730":{"position":[[513,7]]},"743":{"position":[[244,7],[291,8],[339,7],[391,5],[481,7]]},"749":{"position":[[227,6],[381,9],[1619,6],[1659,6]]},"750":{"position":[[572,7],[594,6]]},"757":{"position":[[37,6],[655,6]]},"759":{"position":[[207,7]]},"760":{"position":[[73,8]]},"761":{"position":[[164,6],[558,6],[614,7]]},"774":{"position":[[43,6]]},"777":{"position":[[544,7],[775,6],[1613,8],[1775,6]]},"780":{"position":[[34,7]]},"783":{"position":[[93,7],[153,6],[514,6],[1005,7],[1030,7],[2510,6]]},"785":{"position":[[91,8],[369,9],[764,7],[1008,7],[1640,7],[1788,8],[2024,7]]},"787":{"position":[[41,8],[1092,7],[1347,7],[1404,7],[1746,6]]},"788":{"position":[[110,8]]},"792":{"position":[[27,6],[662,6],[820,6]]},"793":{"position":[[10,6],[175,6],[270,7],[415,6]]},"794":{"position":[[1013,6],[1138,6],[1254,6]]},"795":{"position":[[34,6],[391,7]]},"805":{"position":[[110,7]]},"807":{"position":[[362,6]]},"810":{"position":[[330,6]]},"818":{"position":[[14,6],[82,6],[273,6],[531,6],[743,6]]},"821":{"position":[[113,7]]},"822":{"position":[[178,7],[272,7]]},"830":{"position":[[72,6],[93,7],[111,6],[239,6],[721,6],[742,6]]},"832":{"position":[[34,6],[170,7]]},"834":{"position":[[37,7],[261,6]]},"836":{"position":[[58,7],[198,7],[233,7]]},"838":{"position":[[38,6],[242,6]]},"839":{"position":[[188,6],[226,6]]},"840":{"position":[[267,7],[488,6]]},"841":{"position":[[375,6],[469,6],[679,6],[841,6]]},"842":{"position":[[181,6],[223,6],[277,6],[329,6]]},"844":{"position":[[51,6],[130,6],[272,6],[352,6],[493,6],[666,7],[975,7],[1144,6],[1239,7],[1294,6]]},"845":{"position":[[76,6],[157,6],[248,7]]},"846":{"position":[[80,8],[124,7],[281,7]]},"848":{"position":[[62,7]]},"852":{"position":[[380,6]]},"867":{"position":[[175,6],[245,6],[515,6],[657,6]]},"868":{"position":[[240,6]]},"874":{"position":[[40,6],[139,7]]},"889":{"position":[[13,7]]},"891":{"position":[[10,7],[39,6],[65,6]]},"895":{"position":[[154,6],[313,6]]},"910":{"position":[[698,7],[739,6],[831,6],[880,6],[919,6],[1174,7]]},"911":{"position":[[10,6],[305,6],[973,7],[1134,7]]},"916":{"position":[[1652,6],[1714,6],[1765,6],[2272,6],[2292,6],[3164,6],[3184,6],[6152,6],[6268,6],[11753,7],[11863,6],[11943,7],[12043,6],[16379,6],[16430,6],[18114,6],[18134,6],[18988,6],[19008,6],[21870,6],[21986,6],[27302,7],[27412,6],[27492,7],[27592,6],[31233,6],[31284,6]]},"933":{"position":[[150,7],[244,7],[289,7],[792,7],[832,6]]},"934":{"position":[[89,6],[1642,7]]},"939":{"position":[[419,6]]},"1022":{"position":[[22,6]]},"1049":{"position":[[351,6]]},"1050":{"position":[[100,7]]},"1051":{"position":[[160,6]]},"1057":{"position":[[222,7]]},"1064":{"position":[[164,7]]},"1086":{"position":[[238,7],[454,7]]},"1088":{"position":[[159,8]]},"1090":{"position":[[197,6],[1970,6],[9771,6],[11387,6],[17494,6]]},"1115":{"position":[[1279,7],[1481,7],[2413,6],[2560,6],[3441,7],[3849,7]]}},"keywords":{}}],["server'",{"_index":1999,"title":{"242":{"position":[[41,8]]},"805":{"position":[[41,8]]}},"content":{"200":{"position":[[2904,8]]},"212":{"position":[[192,8]]},"229":{"position":[[1607,8]]},"761":{"position":[[192,8]]},"783":{"position":[[2904,8]]},"792":{"position":[[1609,8]]}},"keywords":{}}],["server.yaml",{"_index":2792,"title":{},"content":{"383":{"position":[[793,11]]},"910":{"position":[[793,11]]}},"keywords":{}}],["server/nf",{"_index":2791,"title":{},"content":{"383":{"position":[[782,10]]},"910":{"position":[[782,10]]}},"keywords":{}}],["server=y,suspend=n,address=5005",{"_index":245,"title":{},"content":{"16":{"position":[[491,31]]},"608":{"position":[[491,31]]}},"keywords":{}}],["server_1%3a7.2p2",{"_index":3106,"title":{},"content":{"389":{"position":[[11798,16],[11983,16],[27347,16],[27532,16]]},"916":{"position":[[11798,16],[11983,16],[27347,16],[27532,16]]}},"keywords":{}}],["server_host=...,server_port",{"_index":2231,"title":{},"content":{"271":{"position":[[95,37]]},"842":{"position":[[95,37]]}},"keywords":{}}],["servermeta:key='host:port',valu",{"_index":2230,"title":{},"content":{"271":{"position":[[61,33]]},"842":{"position":[[61,33]]}},"keywords":{}}],["servertimestamp\":1626160071451",{"_index":3493,"title":{},"content":{"461":{"position":[[1177,31]]},"463":{"position":[[179,31]]},"466":{"position":[[1203,31]]},"469":{"position":[[199,31]]},"988":{"position":[[1177,31]]},"990":{"position":[[179,31]]},"993":{"position":[[1203,31]]},"996":{"position":[[199,31]]}},"keywords":{}}],["server’",{"_index":1942,"title":{},"content":{"194":{"position":[[455,8]]},"777":{"position":[[461,8]]}},"keywords":{}}],["servic",{"_index":335,"title":{"27":{"position":[[26,7]]},"248":{"position":[[13,7]]},"249":{"position":[[0,7]]},"262":{"position":[[0,7]]},"396":{"position":[[16,7]]},"545":{"position":[[26,7]]},"591":{"position":[[9,7]]},"615":{"position":[[26,7]]},"818":{"position":[[13,7]]},"819":{"position":[[0,7]]},"833":{"position":[[0,7]]},"923":{"position":[[16,7]]},"1071":{"position":[[26,7]]},"1117":{"position":[[9,7]]}},"content":{"20":{"position":[[657,8]]},"25":{"position":[[1682,7]]},"168":{"position":[[590,8]]},"173":{"position":[[379,7],[423,7]]},"175":{"position":[[10,8]]},"179":{"position":[[685,9],[1456,9]]},"201":{"position":[[886,8],[938,8]]},"229":{"position":[[712,9],[1046,8],[1493,7]]},"230":{"position":[[599,7]]},"231":{"position":[[1026,8]]},"246":{"position":[[633,8]]},"248":{"position":[[39,8],[1182,8]]},"249":{"position":[[45,7],[128,7],[251,7],[263,8],[272,7]]},"252":{"position":[[352,7]]},"259":{"position":[[52,9],[206,7],[356,8],[470,8],[556,9]]},"262":{"position":[[34,7],[119,7],[292,8],[380,7]]},"263":{"position":[[145,7],[376,8]]},"264":{"position":[[117,8]]},"265":{"position":[[387,7]]},"267":{"position":[[87,8]]},"269":{"position":[[84,7],[236,7],[298,7],[447,7]]},"272":{"position":[[81,7]]},"273":{"position":[[416,8],[578,7],[825,7],[1375,7]]},"277":{"position":[[99,8]]},"361":{"position":[[75,7]]},"368":{"position":[[46,8],[290,7]]},"369":{"position":[[496,8]]},"380":{"position":[[150,7]]},"384":{"position":[[1153,7]]},"386":{"position":[[780,7],[811,8],[898,8],[928,8],[967,7]]},"402":{"position":[[67,7]]},"413":{"position":[[9,7]]},"512":{"position":[[47,7]]},"543":{"position":[[1682,7]]},"591":{"position":[[45,7],[122,7],[287,7]]},"613":{"position":[[1682,7]]},"620":{"position":[[657,8]]},"738":{"position":[[590,8]]},"743":{"position":[[380,7],[424,7]]},"745":{"position":[[10,8]]},"749":{"position":[[685,9],[1461,9]]},"750":{"position":[[887,8],[939,8]]},"777":{"position":[[1079,7]]},"792":{"position":[[712,9],[1047,8],[1495,7]]},"793":{"position":[[599,7]]},"794":{"position":[[1279,8]]},"816":{"position":[[638,8]]},"818":{"position":[[39,8],[1182,8]]},"819":{"position":[[45,7],[128,7],[251,7],[263,8],[272,7]]},"822":{"position":[[357,7]]},"830":{"position":[[52,9],[206,7],[356,8],[470,8],[556,9]]},"833":{"position":[[34,7],[119,7],[292,8],[380,7]]},"834":{"position":[[145,7],[376,8]]},"835":{"position":[[117,8]]},"836":{"position":[[387,7]]},"838":{"position":[[87,8]]},"840":{"position":[[84,7],[236,7],[298,7],[447,7]]},"843":{"position":[[81,7]]},"844":{"position":[[416,8],[578,7],[825,7],[1375,7]]},"848":{"position":[[99,8]]},"869":{"position":[[1122,7]]},"883":{"position":[[75,8]]},"891":{"position":[[46,8],[290,7]]},"892":{"position":[[496,8]]},"907":{"position":[[150,7]]},"911":{"position":[[1153,7]]},"913":{"position":[[780,7],[811,8],[898,8],[928,8],[967,7]]},"929":{"position":[[67,7]]},"1051":{"position":[[47,7]]},"1064":{"position":[[408,7],[525,7]]},"1069":{"position":[[1682,7]]},"1117":{"position":[[45,7],[122,7],[287,7]]}},"keywords":{}}],["service/proxi",{"_index":2128,"title":{},"content":{"229":{"position":[[685,14]]},"792":{"position":[[685,14]]}},"keywords":{}}],["service/submarin",{"_index":152,"title":{},"content":{"8":{"position":[[260,17]]},"320":{"position":[[150,17]]},"325":{"position":[[236,17]]},"413":{"position":[[190,17]]},"597":{"position":[[260,17]]},"877":{"position":[[150,17]]},"895":{"position":[[236,17]]},"940":{"position":[[81,17]]}},"keywords":{}}],["service/traef",{"_index":4240,"title":{},"content":{"869":{"position":[[1324,15]]}},"keywords":{}}],["serviceaccount",{"_index":3209,"title":{},"content":{"394":{"position":[[95,14]]},"921":{"position":[[95,14]]}},"keywords":{}}],["serviceaccount=default:dashboard",{"_index":3213,"title":{},"content":{"394":{"position":[[212,32]]},"921":{"position":[[212,32]]}},"keywords":{}}],["services.submarin",{"_index":2129,"title":{},"content":{"229":{"position":[[801,18]]},"792":{"position":[[801,18]]}},"keywords":{}}],["services/daemon",{"_index":1665,"title":{},"content":{"162":{"position":[[417,16]]},"732":{"position":[[417,16]]}},"keywords":{}}],["servings.and",{"_index":2053,"title":{},"content":{"215":{"position":[[1984,12]]},"785":{"position":[[1984,12]]}},"keywords":{}}],["session",{"_index":1519,"title":{"190":{"position":[[36,7]]},"234":{"position":[[9,8]]},"773":{"position":[[36,7]]},"797":{"position":[[9,8]]}},"content":{"154":{"position":[[1188,7]]},"170":{"position":[[554,7],[566,7]]},"175":{"position":[[271,8]]},"190":{"position":[[125,8],[350,7]]},"204":{"position":[[46,9],[67,7],[116,7],[207,8],[258,7],[637,8],[684,8],[740,8],[797,8]]},"205":{"position":[[29,8],[152,8]]},"207":{"position":[[17,9]]},"208":{"position":[[497,7],[602,8],[733,7]]},"209":{"position":[[55,7]]},"210":{"position":[[310,8]]},"212":{"position":[[668,7]]},"213":{"position":[[81,8]]},"215":{"position":[[977,8]]},"232":{"position":[[169,7]]},"407":{"position":[[1544,8]]},"570":{"position":[[4899,7],[14405,7]]},"724":{"position":[[1188,7]]},"740":{"position":[[554,7],[566,7]]},"745":{"position":[[271,8]]},"753":{"position":[[46,9],[67,7],[116,7],[207,8],[258,7],[637,8],[684,8],[740,8],[797,8]]},"754":{"position":[[29,8],[152,8]]},"756":{"position":[[17,9]]},"757":{"position":[[497,7],[602,8],[733,7]]},"758":{"position":[[55,7]]},"759":{"position":[[310,8]]},"761":{"position":[[668,7]]},"762":{"position":[[81,8]]},"773":{"position":[[125,8],[350,7]]},"785":{"position":[[977,8]]},"795":{"position":[[169,7]]},"934":{"position":[[1564,8]]},"1090":{"position":[[4899,7],[14405,7]]}},"keywords":{}}],["session'",{"_index":2023,"title":{},"content":{"208":{"position":[[687,9]]},"757":{"position":[[687,9]]}},"keywords":{}}],["session/model",{"_index":1967,"title":{"197":{"position":[[38,13]]},"780":{"position":[[38,13]]}},"content":{"197":{"position":[[20,13]]},"780":{"position":[[20,13]]}},"keywords":{}}],["sessionenviron",{"_index":1932,"title":{},"content":{"190":{"position":[[767,18]]},"773":{"position":[[767,18]]}},"keywords":{}}],["sessionmount",{"_index":3601,"title":{},"content":{"508":{"position":[[197,12]]},"1047":{"position":[[197,12]]}},"keywords":{}}],["sessionrun",{"_index":1923,"title":{},"content":{"190":{"position":[[217,10]]},"773":{"position":[[217,10]]}},"keywords":{}}],["set",{"_index":232,"title":{"298":{"position":[[0,7]]},"336":{"position":[[3,3],[13,8]]},"525":{"position":[[0,3]]},"569":{"position":[[0,3]]},"865":{"position":[[0,7]]},"1089":{"position":[[0,3]]}},"content":{"16":{"position":[[107,3],[248,3],[310,3],[445,3],[537,3]]},"17":{"position":[[367,3]]},"31":{"position":[[406,4],[466,4],[524,4]]},"35":{"position":[[1382,3],[1449,3],[1603,3],[1695,3],[1834,3],[1858,3],[1954,3],[2016,7],[2089,3],[2154,3],[2268,3],[2398,3],[2516,3],[2653,3],[2774,3]]},"107":{"position":[[543,3],[784,3]]},"121":{"position":[[171,3],[362,3]]},"132":{"position":[[200,8],[245,8]]},"139":{"position":[[210,3],[397,3]]},"151":{"position":[[58,3],[423,3]]},"160":{"position":[[242,4]]},"161":{"position":[[245,3]]},"163":{"position":[[603,3]]},"165":{"position":[[147,4],[189,4],[217,4]]},"172":{"position":[[58,3],[300,3]]},"176":{"position":[[909,3]]},"179":{"position":[[340,3]]},"225":{"position":[[263,3]]},"298":{"position":[[167,3]]},"302":{"position":[[299,3]]},"314":{"position":[[1306,3]]},"336":{"position":[[28,3],[155,9],[401,8],[995,11]]},"339":{"position":[[414,3]]},"383":{"position":[[312,7],[387,3],[416,3],[452,3],[1057,7],[1127,3],[1155,3],[1182,3]]},"384":{"position":[[651,3]]},"389":{"position":[[13193,7],[13236,7],[13275,7],[13322,7],[13372,7],[13489,7],[13538,7],[13614,7],[13677,7],[13740,7],[13792,7],[13844,7],[13895,7],[13924,7],[13966,7],[14017,7],[14057,7],[14090,7],[14169,7],[14202,7],[14221,7],[14283,7],[14300,7],[14376,7],[14395,7],[14460,7],[14490,7],[14521,7],[14550,7],[14697,3],[15061,7],[15203,7],[15310,7],[15355,7],[15463,7],[15608,7],[16303,7],[16355,7],[16411,7],[17098,7],[17146,7],[17187,7],[17225,7],[17282,7],[17333,7],[28742,7],[28785,7],[28824,7],[28871,7],[28921,7],[29038,7],[29087,7],[29163,7],[29226,7],[29289,7],[29341,7],[29393,7],[29444,7],[29473,7],[29515,7],[29566,7],[29606,7],[29639,7],[29718,7],[29751,7],[29770,7],[29832,7],[29849,7],[29925,7],[29944,7],[30009,7],[30039,7],[30070,7],[30099,7],[30246,3],[30610,7],[30752,7],[30859,7],[30904,7],[31012,7],[31157,7],[31209,7],[31265,7],[31952,7],[32000,7],[32041,7],[32079,7],[32136,7],[32187,7]]},"406":{"position":[[513,3],[692,3]]},"417":{"position":[[87,3]]},"508":{"position":[[248,3]]},"517":{"position":[[0,3],[35,3]]},"522":{"position":[[8,3],[21,8]]},"525":{"position":[[17,3],[64,3],[110,3]]},"566":{"position":[[505,7]]},"568":{"position":[[243,3]]},"569":{"position":[[131,3],[217,3],[1945,7]]},"570":{"position":[[94,9]]},"608":{"position":[[107,3],[248,3],[310,3],[445,3],[537,3]]},"609":{"position":[[367,3]]},"623":{"position":[[406,4],[466,4],[524,4]]},"627":{"position":[[1382,3],[1449,3],[1603,3],[1695,3],[1834,3],[1858,3],[1954,3],[2016,7],[2089,3],[2154,3],[2268,3],[2398,3],[2516,3],[2653,3],[2774,3]]},"689":{"position":[[171,3],[362,3]]},"700":{"position":[[200,8],[245,8]]},"711":{"position":[[210,3],[397,3]]},"721":{"position":[[58,3],[423,3]]},"730":{"position":[[242,4]]},"731":{"position":[[245,3]]},"733":{"position":[[603,3]]},"735":{"position":[[147,4],[189,4],[217,4]]},"742":{"position":[[58,3],[300,3]]},"746":{"position":[[912,3]]},"749":{"position":[[340,3]]},"810":{"position":[[284,3]]},"865":{"position":[[170,3]]},"867":{"position":[[541,3],[610,3]]},"869":{"position":[[299,3],[790,3]]},"910":{"position":[[312,7],[387,3],[416,3],[452,3],[1057,7],[1127,3],[1155,3],[1182,3]]},"911":{"position":[[651,3]]},"916":{"position":[[13193,7],[13236,7],[13275,7],[13322,7],[13372,7],[13489,7],[13538,7],[13614,7],[13677,7],[13740,7],[13792,7],[13844,7],[13895,7],[13924,7],[13966,7],[14017,7],[14057,7],[14090,7],[14169,7],[14202,7],[14221,7],[14283,7],[14300,7],[14376,7],[14395,7],[14460,7],[14490,7],[14521,7],[14550,7],[14697,3],[15061,7],[15203,7],[15310,7],[15355,7],[15463,7],[15608,7],[16303,7],[16355,7],[16411,7],[17098,7],[17146,7],[17187,7],[17225,7],[17282,7],[17333,7],[28742,7],[28785,7],[28824,7],[28871,7],[28921,7],[29038,7],[29087,7],[29163,7],[29226,7],[29289,7],[29341,7],[29393,7],[29444,7],[29473,7],[29515,7],[29566,7],[29606,7],[29639,7],[29718,7],[29751,7],[29770,7],[29832,7],[29849,7],[29925,7],[29944,7],[30009,7],[30039,7],[30070,7],[30099,7],[30246,3],[30610,7],[30752,7],[30859,7],[30904,7],[31012,7],[31157,7],[31209,7],[31265,7],[31952,7],[32000,7],[32041,7],[32079,7],[32136,7],[32187,7]]},"933":{"position":[[513,3]]},"944":{"position":[[87,3]]},"1047":{"position":[[248,3]]},"1057":{"position":[[0,3],[35,3]]},"1064":{"position":[[0,8],[1594,8],[1812,3]]},"1086":{"position":[[505,7]]},"1088":{"position":[[243,3]]},"1089":{"position":[[131,3],[217,3],[1945,7]]},"1090":{"position":[[94,9]]}},"keywords":{}}],["setting:编辑项目信息,例如项目的名字,简介,分享级别和权限。delet",{"_index":679,"title":{},"content":{"55":{"position":[[482,68]]},"647":{"position":[[482,68]]}},"keywords":{}}],["setup",{"_index":300,"title":{"18":{"position":[[0,5]]},"20":{"position":[[0,5]]},"390":{"position":[[0,5]]},"618":{"position":[[0,5]]},"620":{"position":[[0,5]]},"917":{"position":[[0,5]]}},"content":{"20":{"position":[[27,5]]},"153":{"position":[[605,5]]},"218":{"position":[[423,5]]},"283":{"position":[[103,5]]},"320":{"position":[[16,5]]},"325":{"position":[[16,5]]},"391":{"position":[[90,5]]},"398":{"position":[[216,5]]},"591":{"position":[[246,6]]},"620":{"position":[[27,5]]},"723":{"position":[[605,5]]},"788":{"position":[[423,5]]},"854":{"position":[[103,5]]},"877":{"position":[[16,5]]},"895":{"position":[[16,5]]},"918":{"position":[[90,5]]},"925":{"position":[[216,5]]},"1117":{"position":[[246,6]]}},"keywords":{}}],["setup.pi",{"_index":3654,"title":{},"content":{"513":{"position":[[332,8]]},"1052":{"position":[[332,8]]}},"keywords":{}}],["setup.pyinstal",{"_index":3651,"title":{},"content":{"513":{"position":[[112,15]]},"1052":{"position":[[112,15]]}},"keywords":{}}],["setuptool",{"_index":2919,"title":{},"content":{"389":{"position":[[2754,10],[18596,10]]},"916":{"position":[[2754,10],[18596,10]]}},"keywords":{}}],["sev",{"_index":648,"title":{},"content":{"35":{"position":[[3005,7]]},"107":{"position":[[5622,7]]},"165":{"position":[[59,7]]},"200":{"position":[[2757,7]]},"210":{"position":[[9,7]]},"252":{"position":[[165,7]]},"627":{"position":[[3005,7]]},"735":{"position":[[59,7]]},"759":{"position":[[9,7]]},"783":{"position":[[2757,7]]},"822":{"position":[[170,7]]}},"keywords":{}}],["sfmv8",{"_index":4258,"title":{},"content":{"939":{"position":[[437,5]]}},"keywords":{}}],["sftp",{"_index":2886,"title":{},"content":{"389":{"position":[[2287,4],[3179,4],[6147,4],[11748,4],[11793,4],[11858,4],[16374,4],[18129,4],[19003,4],[21865,4],[27297,4],[27342,4],[27407,4],[31228,4]]},"916":{"position":[[2287,4],[3179,4],[6147,4],[11748,4],[11793,4],[11858,4],[16374,4],[18129,4],[19003,4],[21865,4],[27297,4],[27342,4],[27407,4],[31228,4]]}},"keywords":{}}],["sge",{"_index":3195,"title":{},"content":{"389":{"position":[[32538,3],[32617,4]]},"916":{"position":[[32538,3],[32617,4]]}},"keywords":{}}],["sge_cel",{"_index":3165,"title":{},"content":{"389":{"position":[[15778,9]]},"916":{"position":[[15778,9]]}},"keywords":{}}],["sge_cfg_path",{"_index":2856,"title":{},"content":{"389":{"position":[[1388,13]]},"916":{"position":[[1388,13]]}},"keywords":{}}],["sge_cfg_path/setcfg.log",{"_index":3184,"title":{},"content":{"389":{"position":[[17641,24],[32495,24]]},"916":{"position":[[17641,24],[32495,24]]}},"keywords":{}}],["sge_cfg_path=/cfg",{"_index":2828,"title":{},"content":{"389":{"position":[[93,17]]},"916":{"position":[[93,17]]}},"keywords":{}}],["sge_root",{"_index":3163,"title":{},"content":{"389":{"position":[[15745,9]]},"916":{"position":[[15745,9]]}},"keywords":{}}],["sge_run.sh",{"_index":2855,"title":{},"content":{"389":{"position":[[1365,10]]},"916":{"position":[[1365,10]]}},"keywords":{}}],["sgeadmin",{"_index":3168,"title":{},"content":{"389":{"position":[[15871,8],[16153,8]]},"916":{"position":[[15871,8],[16153,8]]}},"keywords":{}}],["sha256:/hra3xizih5czkxwtcfe6gwcmm+hehzztdfhxj4pzdg",{"_index":3194,"title":{},"content":{"389":{"position":[[31771,50]]},"916":{"position":[[31771,50]]}},"keywords":{}}],["sha256:3d5snniub4z+/buqxhefgg+dfjsxxqtt/zwwaqdx4jm",{"_index":3180,"title":{},"content":{"389":{"position":[[16781,50]]},"916":{"position":[[16781,50]]}},"keywords":{}}],["sha256:4d7zm4cd2ibdnhoxnzcio3fisbvow8eostgbnf1/bvo",{"_index":3193,"title":{},"content":{"389":{"position":[[31635,50]]},"916":{"position":[[31635,50]]}},"keywords":{}}],["sha256:4y48kvyt3ms3q1kgzzeoymns/2d/ta8tjuk5unsaxzi",{"_index":3192,"title":{},"content":{"389":{"position":[[31503,50]]},"916":{"position":[[31503,50]]}},"keywords":{}}],["sha256:gospmvgwxbhjzixn/gtjag+hvchqw8t7fhy4nsx8od0",{"_index":3177,"title":{},"content":{"389":{"position":[[16649,50]]},"916":{"position":[[16649,50]]}},"keywords":{}}],["sha256:hfqpes1as4cjf8aociparzr6342vdwutoyitru0wtu",{"_index":3175,"title":{},"content":{"389":{"position":[[16518,50]]},"916":{"position":[[16518,50]]}},"keywords":{}}],["sha256:ok/txzwtf5w8i55sdxrt4agy4fuwn39bisovvdobhv",{"_index":3190,"title":{},"content":{"389":{"position":[[31372,50]]},"916":{"position":[[31372,50]]}},"keywords":{}}],["sha256:swyev9isqow4tkli4wvc0zd8lwtuphcjpdu8owbwbfu",{"_index":3182,"title":{},"content":{"389":{"position":[[16917,50]]},"916":{"position":[[16917,50]]}},"keywords":{}}],["sha512",{"_index":2354,"title":{"315":{"position":[[10,6]]}},"content":{"313":{"position":[[232,6]]},"315":{"position":[[22,6],[143,6],[178,6],[293,6],[343,6],[419,6]]},"342":{"position":[[46,6],[87,6]]}},"keywords":{}}],["sha512sum",{"_index":2411,"title":{},"content":{"315":{"position":[[523,9]]}},"keywords":{}}],["shall",{"_index":1020,"title":{},"content":{"107":{"position":[[3315,5]]}},"keywords":{}}],["shar",{"_index":668,"title":{"39":{"position":[[0,6]]},"59":{"position":[[0,6]]},"631":{"position":[[0,6]]},"651":{"position":[[0,6]]}},"content":{"107":{"position":[[4144,6]]},"151":{"position":[[1100,6]]},"158":{"position":[[167,7]]},"159":{"position":[[1086,8],[2309,6]]},"170":{"position":[[236,6]]},"171":{"position":[[1865,6]]},"172":{"position":[[411,6]]},"176":{"position":[[1183,6],[1208,6]]},"177":{"position":[[69,6]]},"190":{"position":[[299,6],[646,6],[795,5]]},"197":{"position":[[42,5],[300,5]]},"217":{"position":[[931,6]]},"375":{"position":[[1030,6]]},"383":{"position":[[652,6]]},"569":{"position":[[999,6]]},"721":{"position":[[1100,6]]},"728":{"position":[[167,7]]},"729":{"position":[[1086,8],[2309,6]]},"740":{"position":[[236,6]]},"741":{"position":[[1877,6]]},"742":{"position":[[411,6]]},"746":{"position":[[1186,6],[1211,6]]},"747":{"position":[[69,6]]},"773":{"position":[[299,6],[646,6],[795,5]]},"780":{"position":[[42,5],[307,5]]},"787":{"position":[[931,6]]},"902":{"position":[[1030,6]]},"910":{"position":[[652,6]]},"1089":{"position":[[999,6]]}},"keywords":{}}],["shell",{"_index":356,"title":{},"content":{"23":{"position":[[12,5]]},"28":{"position":[[360,5]]},"171":{"position":[[59,5]]},"402":{"position":[[115,6]]},"423":{"position":[[0,5]]},"425":{"position":[[0,5]]},"428":{"position":[[0,5]]},"431":{"position":[[0,5]]},"434":{"position":[[0,5]]},"438":{"position":[[0,5]]},"441":{"position":[[0,5]]},"443":{"position":[[0,5]]},"446":{"position":[[0,5]]},"449":{"position":[[0,5]]},"452":{"position":[[0,5]]},"454":{"position":[[0,5]]},"457":{"position":[[0,5]]},"461":{"position":[[0,5]]},"463":{"position":[[0,5]]},"466":{"position":[[0,5]]},"469":{"position":[[0,5]]},"472":{"position":[[0,5]]},"479":{"position":[[0,5]]},"482":{"position":[[0,5]]},"485":{"position":[[0,5]]},"488":{"position":[[0,5]]},"541":{"position":[[12,5]]},"546":{"position":[[360,5]]},"611":{"position":[[12,5]]},"616":{"position":[[360,5]]},"741":{"position":[[59,5]]},"929":{"position":[[115,6]]},"950":{"position":[[0,5]]},"952":{"position":[[0,5]]},"955":{"position":[[0,5]]},"958":{"position":[[0,5]]},"961":{"position":[[0,5]]},"965":{"position":[[0,5]]},"968":{"position":[[0,5]]},"970":{"position":[[0,5]]},"973":{"position":[[0,5]]},"976":{"position":[[0,5]]},"979":{"position":[[0,5]]},"981":{"position":[[0,5]]},"984":{"position":[[0,5]]},"988":{"position":[[0,5]]},"990":{"position":[[0,5]]},"993":{"position":[[0,5]]},"996":{"position":[[0,5]]},"999":{"position":[[0,5]]},"1011":{"position":[[0,5]]},"1014":{"position":[[0,5]]},"1017":{"position":[[0,5]]},"1020":{"position":[[0,5]]},"1067":{"position":[[12,5]]},"1072":{"position":[[360,5]]}},"keywords":{}}],["shepherd",{"_index":1009,"title":{},"content":{"107":{"position":[[2596,11]]}},"keywords":{}}],["shirt",{"_index":2011,"title":{},"content":{"204":{"position":[[235,5]]},"753":{"position":[[235,5]]}},"keywords":{}}],["short",{"_index":1444,"title":{},"content":{"151":{"position":[[41,6]]},"170":{"position":[[578,7]]},"172":{"position":[[41,6]]},"181":{"position":[[1542,6]]},"721":{"position":[[41,6]]},"740":{"position":[[578,7]]},"742":{"position":[[41,6]]},"764":{"position":[[1549,6]]}},"keywords":{}}],["show",{"_index":209,"title":{"524":{"position":[[0,4]]}},"content":{"14":{"position":[[204,4],[284,4]]},"33":{"position":[[52,5]]},"107":{"position":[[7051,4]]},"181":{"position":[[194,7],[1077,7]]},"333":{"position":[[158,4]]},"474":{"position":[[10,5]]},"571":{"position":[[226,4]]},"606":{"position":[[204,4],[284,4]]},"625":{"position":[[52,5]]},"764":{"position":[[194,7],[1082,7]]},"1001":{"position":[[10,5]]},"1091":{"position":[[226,4]]}},"keywords":{}}],["shown",{"_index":196,"title":{},"content":{"13":{"position":[[484,5]]},"231":{"position":[[895,5]]},"605":{"position":[[484,5]]},"794":{"position":[[1148,5]]}},"keywords":{}}],["shut",{"_index":2615,"title":{"350":{"position":[[4,4]]}},"content":{},"keywords":{}}],["shutdown",{"_index":2193,"title":{},"content":{"263":{"position":[[326,8]]},"834":{"position":[[326,8]]}},"keywords":{}}],["sibl",{"_index":1713,"title":{},"content":{"167":{"position":[[363,8]]},"737":{"position":[[363,8]]}},"keywords":{}}],["sid",{"_index":1849,"title":{"200":{"position":[[50,4]]},"783":{"position":[[50,4]]}},"content":{"181":{"position":[[1173,5],[1857,5]]},"764":{"position":[[1178,5],[1870,5]]}},"keywords":{}}],["sideadd",{"_index":1370,"title":{},"content":{"139":{"position":[[550,7]]},"711":{"position":[[550,7]]}},"keywords":{}}],["sidebars.j",{"_index":2343,"title":{},"content":{"305":{"position":[[80,12]]},"871":{"position":[[80,12]]}},"keywords":{}}],["sig",{"_index":2536,"title":{},"content":{"334":{"position":[[618,4],[1305,4]]},"342":{"position":[[162,3]]}},"keywords":{}}],["sign",{"_index":1011,"title":{"342":{"position":[[4,4]]}},"content":{"107":{"position":[[2746,6]]},"331":{"position":[[617,5],[637,5],[2600,7]]},"339":{"position":[[372,7]]},"341":{"position":[[570,7]]},"349":{"position":[[128,6]]}},"keywords":{}}],["signatur",{"_index":2353,"title":{"314":{"position":[[14,9]]}},"content":{"313":{"position":[[171,9]]},"314":{"position":[[1874,10],[2130,9],[2505,9],[2544,9],[2606,9],[2720,9]]},"339":{"position":[[179,9]]},"342":{"position":[[192,9]]},"343":{"position":[[29,9]]},"371":{"position":[[91,11],[108,9]]},"898":{"position":[[91,11],[108,9]]}},"keywords":{}}],["signature))dock",{"_index":2689,"title":{},"content":{"372":{"position":[[215,17]]}},"keywords":{}}],["signature)source:submarin",{"_index":2687,"title":{},"content":{"372":{"position":[[147,26]]}},"keywords":{}}],["signature/sha512",{"_index":2604,"title":{"343":{"position":[[32,16]]}},"content":{},"keywords":{}}],["signifi",{"_index":1121,"title":{},"content":{"107":{"position":[[8335,7]]}},"keywords":{}}],["signific",{"_index":1005,"title":{},"content":{"107":{"position":[[2353,12]]},"162":{"position":[[591,11]]},"732":{"position":[[591,11]]}},"keywords":{}}],["sigs/kind/releases/download/${kind_version}/kind",{"_index":3200,"title":{},"content":{"391":{"position":[[356,48]]},"918":{"position":[[356,48]]}},"keywords":{}}],["silenc",{"_index":1109,"title":{},"content":{"107":{"position":[[7832,9]]}},"keywords":{}}],["similar",{"_index":81,"title":{},"content":{"7":{"position":[[72,7]]},"200":{"position":[[1238,7]]},"204":{"position":[[537,7]]},"217":{"position":[[2416,7]]},"571":{"position":[[302,7]]},"572":{"position":[[71,7]]},"596":{"position":[[72,7]]},"753":{"position":[[537,7]]},"783":{"position":[[1238,7]]},"787":{"position":[[2416,7]]},"1091":{"position":[[302,7]]},"1092":{"position":[[71,7]]}},"keywords":{}}],["similarili",{"_index":1548,"title":{},"content":{"156":{"position":[[1089,11]]},"726":{"position":[[1089,11]]}},"keywords":{}}],["similarli",{"_index":1602,"title":{},"content":{"159":{"position":[[2004,10]]},"162":{"position":[[747,10]]},"729":{"position":[[2004,10]]},"732":{"position":[[747,10]]}},"keywords":{}}],["simpl",{"_index":479,"title":{},"content":{"28":{"position":[[421,6]]},"105":{"position":[[68,6],[176,9]]},"106":{"position":[[108,9]]},"155":{"position":[[35,6]]},"171":{"position":[[1233,6]]},"213":{"position":[[252,6]]},"415":{"position":[[7,6]]},"546":{"position":[[421,6]]},"616":{"position":[[421,6]]},"725":{"position":[[35,6]]},"741":{"position":[[1245,6]]},"762":{"position":[[252,6]]},"942":{"position":[[7,6]]},"1072":{"position":[[421,6]]}},"keywords":{}}],["simpli",{"_index":1436,"title":{},"content":{"148":{"position":[[514,6]]}},"keywords":{}}],["simplic",{"_index":1532,"title":{},"content":{"156":{"position":[[8,13]]},"726":{"position":[[8,13]]}},"keywords":{}}],["simplifi",{"_index":1614,"title":{},"content":{"159":{"position":[[2603,9]]},"729":{"position":[[2603,9]]}},"keywords":{}}],["simultan",{"_index":2185,"title":{},"content":{"261":{"position":[[259,14]]},"832":{"position":[[259,14]]}},"keywords":{}}],["singl",{"_index":345,"title":{"566":{"position":[[14,6]]},"1086":{"position":[[14,6]]}},"content":{"21":{"position":[[163,6]]},"107":{"position":[[5312,6]]},"158":{"position":[[23,6]]},"179":{"position":[[1552,6]]},"199":{"position":[[941,6]]},"316":{"position":[[326,6]]},"369":{"position":[[120,6]]},"518":{"position":[[6,6]]},"519":{"position":[[6,6],[125,6]]},"621":{"position":[[163,6]]},"728":{"position":[[23,6]]},"749":{"position":[[1557,6]]},"782":{"position":[[941,6]]},"892":{"position":[[120,6]]},"1038":{"position":[[122,6]]},"1058":{"position":[[6,6]]},"1059":{"position":[[6,6],[125,6]]}},"keywords":{}}],["sit",{"_index":1320,"title":{},"content":{"135":{"position":[[250,4],[432,4]]},"304":{"position":[[346,5]]},"707":{"position":[[250,4],[432,4]]},"870":{"position":[[346,5]]}},"keywords":{}}],["site.xml",{"_index":256,"title":{"17":{"position":[[10,8]]},"609":{"position":[[10,8]]}},"content":{"17":{"position":[[10,8]]},"225":{"position":[[283,8]]},"268":{"position":[[87,9]]},"609":{"position":[[10,8]]},"810":{"position":[[304,8]]},"839":{"position":[[87,9]]}},"keywords":{}}],["site/blob/master/community/member.md",{"_index":1322,"title":{},"content":{"135":{"position":[[300,37]]},"707":{"position":[[300,37]]}},"keywords":{}}],["site/tree/asf",{"_index":2342,"title":{},"content":{"304":{"position":[[332,13]]},"870":{"position":[[332,13]]}},"keywords":{}}],["six",{"_index":587,"title":{},"content":{"35":{"position":[[190,3]]},"107":{"position":[[2187,3],[4651,3]]},"389":{"position":[[2370,3],[3262,3],[6574,3],[12457,4],[12537,3],[17206,3],[18212,3],[19086,3],[22292,3],[28006,4],[28086,3],[32060,3]]},"627":{"position":[[190,3]]},"916":{"position":[[2370,3],[3262,3],[6574,3],[12457,4],[12537,3],[17206,3],[18212,3],[19086,3],[22292,3],[28006,4],[28086,3],[32060,3]]}},"keywords":{}}],["six.py3",{"_index":3643,"title":{},"content":{"511":{"position":[[1340,7]]}},"keywords":{}}],["six_1.10.0",{"_index":3111,"title":{},"content":{"389":{"position":[[12494,10],[28043,10]]},"916":{"position":[[12494,10],[28043,10]]}},"keywords":{}}],["siz",{"_index":1984,"title":{},"content":{"199":{"position":[[1254,4]]},"204":{"position":[[241,4]]},"216":{"position":[[457,4]]},"252":{"position":[[40,5]]},"753":{"position":[[241,4]]},"782":{"position":[[1254,4]]},"786":{"position":[[457,4]]},"822":{"position":[[40,5]]}},"keywords":{}}],["size=16",{"_index":393,"title":{},"content":{"23":{"position":[[993,7],[1015,7]]},"541":{"position":[[993,7],[1015,7]]},"580":{"position":[[675,7],[697,7]]},"611":{"position":[[993,7],[1015,7]]},"1067":{"position":[[993,7],[1015,7]]},"1106":{"position":[[675,7],[697,7]]}},"keywords":{}}],["size=20g",{"_index":51,"title":{},"content":{"5":{"position":[[66,8]]},"594":{"position":[[66,8]]}},"keywords":{}}],["skill",{"_index":1644,"title":{},"content":{"161":{"position":[[239,5]]},"731":{"position":[[239,5]]}},"keywords":{}}],["skip",{"_index":2549,"title":{},"content":{"336":{"position":[[0,4]]},"511":{"position":[[284,4]]}},"keywords":{}}],["sklearn",{"_index":3707,"title":{},"content":{"549":{"position":[[899,7]]},"559":{"position":[[1033,7]]},"1075":{"position":[[899,7]]},"1094":{"position":[[1033,7]]}},"keywords":{}}],["slack",{"_index":1404,"title":{},"content":{"143":{"position":[[78,5],[230,5]]},"713":{"position":[[78,5],[136,5]]},"715":{"position":[[419,5]]}},"keywords":{}}],["sleep",{"_index":2858,"title":{},"content":{"389":{"position":[[1455,5]]},"916":{"position":[[1455,5]]}},"keywords":{}}],["slow",{"_index":2531,"title":{},"content":{"334":{"position":[[398,5]]},"348":{"position":[[19,5]]}},"keywords":{}}],["small",{"_index":1414,"title":{},"content":{"144":{"position":[[384,5]]},"161":{"position":[[381,5]]},"176":{"position":[[1220,5]]},"194":{"position":[[1404,5]]},"204":{"position":[[327,6]]},"216":{"position":[[415,5]]},"252":{"position":[[23,5]]},"261":{"position":[[538,5]]},"714":{"position":[[384,5]]},"731":{"position":[[381,5]]},"746":{"position":[[1223,5]]},"753":{"position":[[327,6]]},"777":{"position":[[1684,5]]},"786":{"position":[[415,5]]},"822":{"position":[[23,5]]},"832":{"position":[[538,5]]}},"keywords":{}}],["snapshot",{"_index":2826,"title":{},"content":{"389":{"position":[[71,8]]},"425":{"position":[[304,10],[1196,10]]},"479":{"position":[[924,10]]},"482":{"position":[[671,10]]},"485":{"position":[[659,10]]},"488":{"position":[[689,10]]},"511":{"position":[[1023,9]]},"513":{"position":[[91,8]]},"916":{"position":[[71,8]]},"952":{"position":[[304,10],[1196,10]]},"1011":{"position":[[924,10]]},"1014":{"position":[[671,10]]},"1017":{"position":[[659,10]]},"1020":{"position":[[689,10]]},"1052":{"position":[[91,8]]}},"keywords":{}}],["softwar",{"_index":942,"title":{},"content":{"107":{"position":[[244,8],[1042,9],[2813,8],[4895,8]]},"117":{"position":[[42,9],[216,8]]},"133":{"position":[[120,8]]},"159":{"position":[[202,8],[318,8]]},"314":{"position":[[309,8],[348,9]]},"331":{"position":[[375,8],[414,9]]},"559":{"position":[[622,8]]},"685":{"position":[[42,9],[216,8]]},"729":{"position":[[202,8],[318,8]]},"1094":{"position":[[622,8]]}},"keywords":{}}],["solut",{"_index":427,"title":{},"content":{"25":{"position":[[1730,9]]},"26":{"position":[[539,9]]},"27":{"position":[[0,9]]},"28":{"position":[[279,9]]},"213":{"position":[[259,8],[398,9]]},"543":{"position":[[1730,9]]},"544":{"position":[[539,9]]},"545":{"position":[[0,9]]},"546":{"position":[[279,9]]},"613":{"position":[[1730,9]]},"614":{"position":[[539,9]]},"615":{"position":[[0,9]]},"616":{"position":[[279,9]]},"762":{"position":[[259,8],[398,9]]},"1069":{"position":[[1730,9]]},"1070":{"position":[[539,9]]},"1071":{"position":[[0,9]]},"1072":{"position":[[279,9]]}},"keywords":{}}],["solv",{"_index":1571,"title":{},"content":{"159":{"position":[[393,5],[2749,5]]},"167":{"position":[[33,5]]},"194":{"position":[[580,5]]},"729":{"position":[[393,5],[2749,5]]},"737":{"position":[[33,5]]},"777":{"position":[[586,5]]}},"keywords":{}}],["someth",{"_index":2397,"title":{},"content":{"314":{"position":[[2449,9]]},"571":{"position":[[292,9]]},"1091":{"position":[[292,9]]}},"keywords":{}}],["sometim",{"_index":2268,"title":{},"content":{"281":{"position":[[66,9]]},"852":{"position":[[66,9]]}},"keywords":{}}],["sort",{"_index":3604,"title":{},"content":{"509":{"position":[[13,4]]},"1048":{"position":[[13,4]]}},"keywords":{}}],["sought",{"_index":1106,"title":{},"content":{"107":{"position":[[7626,7],[10017,6],[10164,7],[10400,7]]}},"keywords":{}}],["sourc",{"_index":861,"title":{"283":{"position":[[9,6]]},"300":{"position":[[11,6]]},"316":{"position":[[35,6]]},"340":{"position":[[16,6]]},"342":{"position":[[13,6]]},"401":{"position":[[17,6]]},"853":{"position":[[9,6]]},"854":{"position":[[9,6]]},"867":{"position":[[11,6]]},"928":{"position":[[17,6]]}},"content":{"93":{"position":[[483,8],[846,8],[1209,8],[1573,8]]},"94":{"position":[[491,8]]},"107":{"position":[[8892,6]]},"135":{"position":[[255,6]]},"138":{"position":[[23,6]]},"141":{"position":[[269,6]]},"149":{"position":[[10,6]]},"159":{"position":[[356,6],[577,7],[1173,6],[1705,6],[1980,6],[2202,6],[2472,6],[2540,6]]},"160":{"position":[[23,7]]},"161":{"position":[[578,6]]},"313":{"position":[[46,6],[127,6],[188,6],[246,6]]},"314":{"position":[[1103,8]]},"316":{"position":[[277,6]]},"325":{"position":[[131,6]]},"328":{"position":[[0,6]]},"340":{"position":[[47,6]]},"341":{"position":[[12,6],[124,6],[218,6],[285,6],[531,6]]},"345":{"position":[[70,6],[163,6]]},"349":{"position":[[104,6]]},"352":{"position":[[954,7]]},"355":{"position":[[442,7]]},"401":{"position":[[108,6]]},"707":{"position":[[255,6]]},"710":{"position":[[23,6]]},"719":{"position":[[10,6]]},"729":{"position":[[356,6],[577,7],[1173,6],[1705,6],[1980,6],[2202,6],[2472,6],[2540,6]]},"730":{"position":[[23,7]]},"731":{"position":[[578,6]]},"853":{"position":[[588,6]]},"895":{"position":[[131,6]]},"928":{"position":[[108,6]]}},"keywords":{}}],["source:hadoop",{"_index":2707,"title":{},"content":{"372":{"position":[[1237,13]]},"899":{"position":[[690,13]]}},"keywords":{}}],["source:submarin",{"_index":2712,"title":{},"content":{"372":{"position":[[1452,16]]},"899":{"position":[[905,16]]}},"keywords":{}}],["sox",{"_index":2731,"title":{},"content":{"375":{"position":[[631,3]]},"902":{"position":[[631,3]]}},"keywords":{}}],["spac",{"_index":2929,"title":{},"content":{"389":{"position":[[3463,5],[19287,5]]},"916":{"position":[[3463,5],[19287,5]]}},"keywords":{}}],["space.prerequisit",{"_index":2789,"title":{},"content":{"383":{"position":[[659,19]]},"910":{"position":[[659,19]]}},"keywords":{}}],["spark",{"_index":1684,"title":{"1053":{"position":[[19,5]]},"1060":{"position":[[10,5]]}},"content":{"163":{"position":[[356,6],[457,5]]},"171":{"position":[[94,5]]},"179":{"position":[[769,6]]},"200":{"position":[[1830,5]]},"733":{"position":[[356,6],[457,5]]},"741":{"position":[[94,5]]},"749":{"position":[[769,6]]},"783":{"position":[[1830,5]]},"888":{"position":[[33,5]]},"1053":{"position":[[10,5],[197,5],[239,5],[285,5],[366,5],[434,6]]},"1061":{"position":[[62,5]]},"1062":{"position":[[32,5]]},"1063":{"position":[[20,5]]},"1064":{"position":[[42,5],[847,5],[1614,6]]}},"keywords":{}}],["spark.sql.ext",{"_index":4343,"title":{},"content":{"1064":{"position":[[1639,20],[1841,20]]}},"keywords":{}}],["spark.sql.extensions=org.apache.submarine.spark.security.api.rangersparkauthzext",{"_index":4344,"title":{},"content":{"1064":{"position":[[1706,86]]}},"keywords":{}}],["spark/flink/h",{"_index":1668,"title":{},"content":{"162":{"position":[[496,17],[537,16]]},"732":{"position":[[496,17],[537,16]]}},"keywords":{}}],["spark/hiv",{"_index":1645,"title":{},"content":{"161":{"position":[[326,10]]},"731":{"position":[[326,10]]}},"keywords":{}}],["spark_home/conf",{"_index":4315,"title":{},"content":{"1064":{"position":[[64,16],[866,16]]}},"keywords":{}}],["spark_home/jar",{"_index":4313,"title":{},"content":{"1063":{"position":[[54,17]]}},"keywords":{}}],["spec",{"_index":736,"title":{"221":{"position":[[19,4]]},"224":{"position":[[8,4]]},"225":{"position":[[10,4]]},"226":{"position":[[5,4]]},"806":{"position":[[18,4]]},"809":{"position":[[8,4]]},"810":{"position":[[10,4]]},"811":{"position":[[5,4]]}},"content":{"77":{"position":[[406,7],[844,7],[1164,7]]},"78":{"position":[[377,7],[991,7],[1282,7]]},"79":{"position":[[353,7],[673,7],[999,7],[1248,7]]},"80":{"position":[[386,7],[706,7]]},"81":{"position":[[414,7],[1017,7]]},"82":{"position":[[389,7],[709,7]]},"86":{"position":[[834,7]]},"89":{"position":[[831,7]]},"100":{"position":[[239,7],[760,8],[1103,8]]},"101":{"position":[[502,8],[845,8]]},"102":{"position":[[493,8],[836,8]]},"103":{"position":[[545,7],[898,7]]},"156":{"position":[[956,6]]},"163":{"position":[[579,4]]},"182":{"position":[[948,6],[990,4]]},"196":{"position":[[389,4]]},"200":{"position":[[1275,5]]},"217":{"position":[[1717,4],[1797,5],[1902,5],[2202,4]]},"222":{"position":[[265,4]]},"223":{"position":[[65,4],[96,5],[112,4],[126,5]]},"224":{"position":[[12,4]]},"230":{"position":[[763,4],[1025,6]]},"407":{"position":[[635,4]]},"422":{"position":[[183,5]]},"430":{"position":[[156,5]]},"437":{"position":[[205,4],[242,4],[656,5],[760,5],[1313,5],[1342,5]]},"438":{"position":[[372,7],[886,8],[1281,8]]},"441":{"position":[[343,7],[1006,8],[1373,8]]},"443":{"position":[[478,8],[873,8],[1487,8],[1854,8]]},"446":{"position":[[423,8],[790,8]]},"448":{"position":[[196,4],[238,4]]},"449":{"position":[[373,7],[917,8],[1312,8]]},"452":{"position":[[398,8],[793,8]]},"460":{"position":[[311,4],[749,4],[786,4],[1428,5],[1457,5]]},"461":{"position":[[802,7],[2670,8]]},"463":{"position":[[1672,8]]},"465":{"position":[[320,4]]},"466":{"position":[[807,7],[2700,8]]},"469":{"position":[[1696,8]]},"472":{"position":[[576,8],[971,8]]},"478":{"position":[[184,4],[205,4]]},"479":{"position":[[207,7],[723,8],[1091,8]]},"482":{"position":[[470,8],[838,8]]},"485":{"position":[[458,8],[826,8]]},"488":{"position":[[488,8],[856,8]]},"492":{"position":[[353,7]]},"496":{"position":[[71,5],[591,7]]},"497":{"position":[[99,5],[598,7]]},"511":{"position":[[772,5]]},"569":{"position":[[647,5],[769,4],[1312,5]]},"669":{"position":[[834,7]]},"672":{"position":[[831,7]]},"676":{"position":[[406,7],[844,7],[1164,7]]},"677":{"position":[[377,7],[991,7],[1282,7]]},"678":{"position":[[353,7],[673,7],[999,7],[1248,7]]},"679":{"position":[[386,7],[706,7]]},"680":{"position":[[414,7],[1017,7]]},"681":{"position":[[389,7],[709,7]]},"702":{"position":[[239,7],[760,8],[1103,8]]},"703":{"position":[[502,8],[845,8]]},"704":{"position":[[493,8],[836,8]]},"705":{"position":[[545,7],[898,7]]},"726":{"position":[[956,6]]},"733":{"position":[[579,4]]},"765":{"position":[[948,6],[990,4]]},"779":{"position":[[389,4]]},"783":{"position":[[1275,5]]},"787":{"position":[[1717,4],[1797,5],[1902,5],[2202,4]]},"793":{"position":[[763,4],[1025,6]]},"807":{"position":[[265,4]]},"808":{"position":[[65,4],[96,5],[112,4],[126,5]]},"809":{"position":[[12,4]]},"934":{"position":[[655,4]]},"949":{"position":[[183,5]]},"957":{"position":[[156,5]]},"964":{"position":[[205,4],[242,4],[656,5],[760,5],[1313,5],[1342,5]]},"965":{"position":[[372,7],[886,8],[1281,8]]},"968":{"position":[[343,7],[1006,8],[1373,8]]},"970":{"position":[[478,8],[873,8],[1487,8],[1854,8]]},"973":{"position":[[423,8],[790,8]]},"975":{"position":[[196,4],[238,4]]},"976":{"position":[[373,7],[917,8],[1312,8]]},"979":{"position":[[398,8],[793,8]]},"987":{"position":[[311,4],[749,4],[786,4],[1428,5],[1457,5]]},"988":{"position":[[802,7],[2670,8]]},"990":{"position":[[1672,8]]},"992":{"position":[[320,4]]},"993":{"position":[[807,7],[2700,8]]},"996":{"position":[[1696,8]]},"999":{"position":[[576,8],[971,8]]},"1006":{"position":[[353,7]]},"1010":{"position":[[184,4],[205,4]]},"1011":{"position":[[207,7],[723,8],[1091,8]]},"1014":{"position":[[470,8],[838,8]]},"1017":{"position":[[458,8],[826,8]]},"1020":{"position":[[488,8],[856,8]]},"1023":{"position":[[71,5],[591,7]]},"1024":{"position":[[99,5],[598,7]]},"1089":{"position":[[647,5],[769,4],[1312,5]]}},"keywords":{}}],["spec={'p",{"_index":3286,"title":{},"content":{"407":{"position":[[1239,10]]},"934":{"position":[[1259,10]]}},"keywords":{}}],["special",{"_index":1744,"title":{},"content":{"171":{"position":[[723,11],[2102,7],[2190,7]]},"569":{"position":[[1093,7]]},"741":{"position":[[728,11],[2114,7],[2203,7]]},"1089":{"position":[[1093,7]]}},"keywords":{}}],["specif",{"_index":1064,"title":{},"content":{"107":{"position":[[5403,10]]},"133":{"position":[[178,8]]},"211":{"position":[[134,8]]},"320":{"position":[[818,8]]},"391":{"position":[[240,8],[557,8]]},"400":{"position":[[224,8]]},"401":{"position":[[193,8]]},"760":{"position":[[134,8]]},"877":{"position":[[818,8]]},"918":{"position":[[240,8],[557,8]]},"927":{"position":[[224,8]]},"928":{"position":[[193,8]]}},"keywords":{}}],["specifi",{"_index":1465,"title":{"188":{"position":[[0,7]]},"189":{"position":[[19,7]]},"771":{"position":[[0,7]]},"772":{"position":[[19,7]]}},"content":{"151":{"position":[[859,10]]},"171":{"position":[[835,7],[1265,9],[1297,7]]},"173":{"position":[[328,7]]},"182":{"position":[[1572,7]]},"189":{"position":[[163,9],[1379,10]]},"224":{"position":[[399,10],[492,10],[565,10]]},"225":{"position":[[50,10],[227,9]]},"226":{"position":[[76,9],[466,7]]},"331":{"position":[[853,7]]},"355":{"position":[[235,9]]},"389":{"position":[[1666,9]]},"391":{"position":[[171,7]]},"437":{"position":[[621,7],[732,7]]},"516":{"position":[[39,10]]},"519":{"position":[[165,9]]},"721":{"position":[[859,10]]},"741":{"position":[[840,7],[1277,9],[1309,7]]},"743":{"position":[[329,7]]},"765":{"position":[[1572,7]]},"772":{"position":[[163,9],[1379,10]]},"809":{"position":[[399,10],[492,10],[565,10]]},"810":{"position":[[50,10],[248,9]]},"811":{"position":[[76,9],[466,7]]},"916":{"position":[[1666,9]]},"918":{"position":[[171,7]]},"964":{"position":[[621,7],[732,7]]},"1033":{"position":[[101,7],[124,7],[212,7],[235,7]]},"1038":{"position":[[162,9]]},"1056":{"position":[[39,10]]},"1059":{"position":[[165,9]]}},"keywords":{}}],["specul",{"_index":1007,"title":{},"content":{"107":{"position":[[2410,11]]}},"keywords":{}}],["speech",{"_index":1299,"title":{},"content":{"133":{"position":[[1900,8]]},"386":{"position":[[54,6]]},"913":{"position":[[54,6]]}},"keywords":{}}],["speed",{"_index":1236,"title":{},"content":{"128":{"position":[[215,5]]},"696":{"position":[[215,5]]}},"keywords":{}}],["split",{"_index":1630,"title":{},"content":{"160":{"position":[[220,5]]},"165":{"position":[[171,5]]},"200":{"position":[[1702,5]]},"231":{"position":[[810,5]]},"730":{"position":[[220,5]]},"735":{"position":[[171,5]]},"783":{"position":[[1702,5]]},"794":{"position":[[1063,5]]}},"keywords":{}}],["spool",{"_index":3166,"title":{},"content":{"389":{"position":[[15799,5],[15893,5]]},"916":{"position":[[15799,5],[15893,5]]}},"keywords":{}}],["sql",{"_index":1736,"title":{},"content":{"171":{"position":[[107,3]]},"741":{"position":[[107,3]]}},"keywords":{}}],["sqlalchemi",{"_index":3666,"title":{},"content":{"517":{"position":[[442,10]]},"1057":{"position":[[442,10]]}},"keywords":{}}],["src.tar.gz",{"_index":2394,"title":{},"content":{"314":{"position":[[2050,10],[2590,10]]},"315":{"position":[[221,10]]},"316":{"position":[[42,10]]},"317":{"position":[[49,10],[107,11]]},"340":{"position":[[288,11]]},"341":{"position":[[195,10]]},"345":{"position":[[140,10]]},"372":{"position":[[185,10],[745,10],[1016,10],[1267,10],[1482,10]]},"899":{"position":[[198,10],[469,10],[720,10],[935,10]]}},"keywords":{}}],["src.tar.gz.asc",{"_index":2393,"title":{},"content":{"314":{"position":[[1999,14]]},"371":{"position":[[211,14]]},"898":{"position":[[211,14]]}},"keywords":{}}],["sre",{"_index":1490,"title":{},"content":{"153":{"position":[[63,5]]},"158":{"position":[[231,4]]},"723":{"position":[[63,5]]},"728":{"position":[[231,4]]}},"keywords":{}}],["ssb",{"_index":2377,"title":{},"content":{"314":{"position":[[590,3],[835,3],[1466,3],[1705,3]]}},"keywords":{}}],["ssh",{"_index":2151,"title":{},"content":{"244":{"position":[[81,3]]},"389":{"position":[[2390,3],[2551,3],[2570,3],[3282,3],[6893,3],[12963,3],[12998,7],[13051,3],[17344,3],[18232,3],[18393,3],[18412,3],[19106,3],[22611,3],[28512,3],[28547,7],[28600,3],[32198,3]]},"814":{"position":[[81,3]]},"916":{"position":[[2390,3],[2551,3],[2570,3],[3282,3],[6893,3],[12963,3],[12998,7],[13051,3],[17344,3],[18232,3],[18393,3],[18412,3],[19106,3],[22611,3],[28512,3],[28547,7],[28600,3],[32198,3]]}},"keywords":{}}],["ssh2",{"_index":3174,"title":{},"content":{"389":{"position":[[16471,4],[16602,4],[16733,4],[16867,4],[31325,4],[31456,4],[31587,4],[31721,4]]},"916":{"position":[[16471,4],[16602,4],[16733,4],[16867,4],[31325,4],[31456,4],[31587,4],[31721,4]]}},"keywords":{}}],["ssl",{"_index":265,"title":{},"content":{"17":{"position":[[244,3],[330,3],[351,3],[461,3]]},"389":{"position":[[2404,3],[3296,3],[5214,3],[10310,3],[10340,7],[10382,3],[14068,3],[18246,3],[19120,3],[21038,3],[26028,3],[26058,7],[26100,3],[29617,3]]},"609":{"position":[[244,3],[330,3],[351,3],[461,3]]},"916":{"position":[[2404,3],[3296,3],[5214,3],[10310,3],[10340,7],[10382,3],[14068,3],[18246,3],[19120,3],[21038,3],[26028,3],[26058,7],[26100,3],[29617,3]]}},"keywords":{}}],["sso",{"_index":2038,"title":{},"content":{"213":{"position":[[429,4]]},"762":{"position":[[429,4]]}},"keywords":{}}],["stabil",{"_index":2171,"title":{},"content":{"248":{"position":[[467,10]]},"818":{"position":[[467,10]]}},"keywords":{}}],["stabl",{"_index":1308,"title":{},"content":{"133":{"position":[[2436,6]]},"400":{"position":[[170,6]]},"927":{"position":[[170,6]]}},"keywords":{}}],["stack",{"_index":4103,"title":{},"content":{"572":{"position":[[2103,5]]},"1092":{"position":[[2103,5]]}},"keywords":{}}],["stag",{"_index":2617,"title":{"350":{"position":[[25,7]]},"355":{"position":[[38,7]]}},"content":{"350":{"position":[[107,7]]},"352":{"position":[[648,7]]},"355":{"position":[[114,7]]}},"keywords":{}}],["standard",{"_index":1272,"title":{},"content":{"133":{"position":[[558,8]]},"159":{"position":[[1437,8],[2135,8],[2209,8]]},"161":{"position":[[560,12]]},"200":{"position":[[2524,8],[2765,8]]},"729":{"position":[[1437,8],[2135,8],[2209,8]]},"731":{"position":[[560,12]]},"783":{"position":[[2524,8],[2765,8]]}},"keywords":{}}],["star",{"_index":605,"title":{},"content":{"35":{"position":[[601,5]]},"627":{"position":[[601,5]]}},"keywords":{}}],["start",{"_index":43,"title":{"25":{"position":[[17,5]]},"29":{"position":[[23,5]]},"280":{"position":[[6,5]]},"396":{"position":[[0,5]]},"543":{"position":[[17,5]]},"547":{"position":[[23,5]]},"573":{"position":[[19,5]]},"613":{"position":[[17,5]]},"617":{"position":[[23,5]]},"851":{"position":[[6,5]]},"923":{"position":[[0,5]]},"1062":{"position":[[6,5]]},"1069":{"position":[[17,5]]},"1073":{"position":[[23,5]]},"1099":{"position":[[19,5]]}},"content":{"5":{"position":[[11,5]]},"15":{"position":[[68,5],[298,5]]},"16":{"position":[[375,7],[604,7]]},"33":{"position":[[137,5]]},"53":{"position":[[72,5]]},"107":{"position":[[1083,5],[6078,8]]},"133":{"position":[[1514,8]]},"144":{"position":[[8,5]]},"204":{"position":[[10,5],[474,5]]},"270":{"position":[[726,8]]},"271":{"position":[[570,5]]},"301":{"position":[[271,5]]},"308":{"position":[[13,6],[152,5]]},"320":{"position":[[531,5]]},"339":{"position":[[324,5]]},"345":{"position":[[285,5]]},"352":{"position":[[1125,6]]},"389":{"position":[[15601,6],[16296,6],[17091,6],[31150,6],[31945,6],[32532,5]]},"400":{"position":[[0,8]]},"406":{"position":[[17,7],[413,7]]},"410":{"position":[[116,5],[148,5]]},"508":{"position":[[171,5]]},"511":{"position":[[695,8]]},"570":{"position":[[1962,7],[4886,5],[11379,7],[14392,5],[17486,7]]},"594":{"position":[[11,5]]},"607":{"position":[[68,5],[298,5]]},"608":{"position":[[375,7],[604,7]]},"625":{"position":[[137,5]]},"645":{"position":[[72,5]]},"714":{"position":[[8,5]]},"753":{"position":[[10,5],[474,5]]},"841":{"position":[[726,8]]},"842":{"position":[[570,5]]},"868":{"position":[[255,5]]},"869":{"position":[[545,5],[581,5]]},"874":{"position":[[13,6],[152,5]]},"877":{"position":[[531,5]]},"916":{"position":[[15601,6],[16296,6],[17091,6],[31150,6],[31945,6],[32532,5]]},"927":{"position":[[0,8]]},"933":{"position":[[17,7],[413,7]]},"937":{"position":[[116,5],[150,5]]},"1034":{"position":[[26,5]]},"1047":{"position":[[171,5]]},"1090":{"position":[[1962,7],[4886,5],[11379,7],[14392,5],[17486,7]]}},"keywords":{}}],["started/quickstart",{"_index":4234,"title":{},"content":{"868":{"position":[[36,19]]}},"keywords":{}}],["started/submarin",{"_index":2323,"title":{},"content":{"301":{"position":[[36,17]]}},"keywords":{}}],["start|stop|restart",{"_index":216,"title":{},"content":{"15":{"position":[[39,20]]},"607":{"position":[[39,20]]}},"keywords":{}}],["stat",{"_index":425,"title":{},"content":{"25":{"position":[[1712,5]]},"107":{"position":[[3368,7]]},"141":{"position":[[327,7]]},"196":{"position":[[429,6]]},"269":{"position":[[455,5]]},"270":{"position":[[510,5]]},"389":{"position":[[1970,5],[17547,5],[17812,5],[32401,5]]},"543":{"position":[[1712,5]]},"613":{"position":[[1712,5]]},"779":{"position":[[429,6]]},"840":{"position":[[455,5]]},"841":{"position":[[510,5]]},"916":{"position":[[1970,5],[17547,5],[17812,5],[32401,5]]},"1069":{"position":[[1712,5]]}},"keywords":{}}],["static",{"_index":2336,"title":{},"content":{"304":{"position":[[56,6]]},"509":{"position":[[281,6]]},"870":{"position":[[56,6]]},"1048":{"position":[[281,6]]}},"keywords":{}}],["statist",{"_index":1697,"title":{},"content":{"165":{"position":[[198,10]]},"273":{"position":[[888,10]]},"735":{"position":[[198,10]]},"844":{"position":[[888,10]]}},"keywords":{}}],["statu",{"_index":69,"title":{"127":{"position":[[28,6]]},"129":{"position":[[29,6]]},"695":{"position":[[28,6]]},"697":{"position":[[29,6]]}},"content":{"6":{"position":[[196,7]]},"7":{"position":[[124,6]]},"31":{"position":[[270,6],[301,7],[538,6]]},"71":{"position":[[571,9]]},"72":{"position":[[120,9]]},"73":{"position":[[144,9]]},"74":{"position":[[467,9]]},"75":{"position":[[147,9]]},"77":{"position":[[611,9],[773,9]]},"78":{"position":[[758,9],[920,9]]},"79":{"position":[[118,9],[282,9],[928,9]]},"80":{"position":[[153,9],[315,9]]},"81":{"position":[[649,9]]},"82":{"position":[[156,9],[318,9]]},"83":{"position":[[128,9]]},"84":{"position":[[163,9]]},"93":{"position":[[1691,8]]},"94":{"position":[[605,8]]},"95":{"position":[[396,8]]},"96":{"position":[[256,8]]},"97":{"position":[[306,8]]},"101":{"position":[[368,9]]},"103":{"position":[[130,9],[379,9]]},"110":{"position":[[729,8]]},"111":{"position":[[421,8]]},"112":{"position":[[355,8]]},"113":{"position":[[257,8]]},"115":{"position":[[295,8]]},"133":{"position":[[1731,6]]},"196":{"position":[[876,6],[943,6],[1042,6]]},"197":{"position":[[182,6],[385,7]]},"248":{"position":[[378,7]]},"259":{"position":[[170,6]]},"265":{"position":[[395,7]]},"349":{"position":[[254,6],[273,7],[348,6],[367,7]]},"412":{"position":[[25,6],[103,6]]},"499":{"position":[[45,7]]},"502":{"position":[[32,7]]},"503":{"position":[[150,6]]},"579":{"position":[[1003,6],[1093,6],[1226,7],[1294,6],[1427,7],[1495,6],[1624,7],[2129,6],[2258,7],[2327,6],[2460,7],[2529,6],[2662,7]]},"584":{"position":[[863,6],[953,6],[1086,7],[1154,6],[1287,7],[1355,6],[1484,7],[1989,6],[2118,7],[2187,6],[2320,7],[2389,6],[2522,7]]},"589":{"position":[[1157,6],[1246,6],[1381,7],[1448,6],[1583,7],[1650,6],[1785,7],[1852,6],[1987,7],[2054,6],[2192,7],[2997,6],[3135,7],[3204,6],[3339,7],[3408,6],[3543,7],[3612,6],[3747,7],[3816,6],[3951,7]]},"595":{"position":[[196,7]]},"596":{"position":[[124,6]]},"623":{"position":[[270,6],[301,7],[538,6]]},"663":{"position":[[571,9]]},"664":{"position":[[120,9]]},"665":{"position":[[144,9]]},"666":{"position":[[467,9]]},"667":{"position":[[147,9]]},"676":{"position":[[611,9],[773,9]]},"677":{"position":[[758,9],[920,9]]},"678":{"position":[[118,9],[282,9],[928,9]]},"679":{"position":[[153,9],[315,9]]},"680":{"position":[[649,9]]},"681":{"position":[[156,9],[318,9]]},"682":{"position":[[128,9]]},"683":{"position":[[163,9]]},"703":{"position":[[368,9]]},"705":{"position":[[130,9],[379,9]]},"779":{"position":[[881,6],[948,6],[1047,6]]},"780":{"position":[[188,6],[392,7]]},"818":{"position":[[378,7]]},"830":{"position":[[170,6]]},"836":{"position":[[395,7]]},"939":{"position":[[25,6],[105,6]]},"1026":{"position":[[45,7]]},"1029":{"position":[[32,7]]},"1030":{"position":[[150,6]]},"1105":{"position":[[1003,6],[1093,6],[1226,7],[1294,6],[1427,7],[1495,6],[1624,7],[2129,6],[2258,7],[2327,6],[2460,7],[2529,6],[2662,7]]},"1110":{"position":[[863,6],[953,6],[1086,7],[1154,6],[1287,7],[1355,6],[1484,7],[1989,6],[2118,7],[2187,6],[2320,7],[2389,6],[2522,7]]},"1115":{"position":[[1157,6],[1246,6],[1381,7],[1448,6],[1583,7],[1650,6],[1785,7],[1852,6],[1987,7],[2054,6],[2192,7],[2997,6],[3135,7],[3204,6],[3339,7],[3408,6],[3543,7],[3612,6],[3747,7],[3816,6],[3951,7]]}},"keywords":{}}],["status\":\"accept",{"_index":3434,"title":{},"content":{"438":{"position":[[756,20]]},"441":{"position":[[876,20]]},"443":{"position":[[1357,20]]},"446":{"position":[[293,20]]},"449":{"position":[[787,20]]},"472":{"position":[[446,20]]},"965":{"position":[[756,20]]},"968":{"position":[[876,20]]},"970":{"position":[[1357,20]]},"973":{"position":[[293,20]]},"976":{"position":[[787,20]]},"999":{"position":[[446,20]]}},"keywords":{}}],["status\":\"cr",{"_index":899,"title":{},"content":{"100":{"position":[[626,20]]},"479":{"position":[[589,20]]},"702":{"position":[[626,20]]},"1011":{"position":[[589,20]]}},"keywords":{}}],["status\":\"delet",{"_index":3484,"title":{},"content":{"452":{"position":[[296,19]]},"979":{"position":[[296,19]]}},"keywords":{}}],["status\":\"ok",{"_index":878,"title":{},"content":{"98":{"position":[[209,14]]},"100":{"position":[[388,14]]},"101":{"position":[[127,14]]},"102":{"position":[[124,14]]},"105":{"position":[[269,14]]},"106":{"position":[[201,14]]},"109":{"position":[[263,14]]},"114":{"position":[[187,14]]},"423":{"position":[[527,14]]},"425":{"position":[[76,14]]},"428":{"position":[[93,14]]},"431":{"position":[[414,14]]},"434":{"position":[[96,14]]},"438":{"position":[[568,14]]},"441":{"position":[[688,14]]},"443":{"position":[[75,14]]},"446":{"position":[[105,14]]},"449":{"position":[[599,14]]},"452":{"position":[[108,14]]},"454":{"position":[[80,14]]},"457":{"position":[[110,14]]},"461":{"position":[[1074,14]]},"463":{"position":[[73,14]]},"466":{"position":[[1100,14]]},"469":{"position":[[96,14]]},"472":{"position":[[257,14]]},"479":{"position":[[348,14]]},"482":{"position":[[109,14]]},"485":{"position":[[101,14]]},"488":{"position":[[105,14]]},"702":{"position":[[388,14]]},"703":{"position":[[127,14]]},"704":{"position":[[124,14]]},"950":{"position":[[527,14]]},"952":{"position":[[76,14]]},"955":{"position":[[93,14]]},"958":{"position":[[414,14]]},"961":{"position":[[96,14]]},"965":{"position":[[568,14]]},"968":{"position":[[688,14]]},"970":{"position":[[75,14]]},"973":{"position":[[105,14]]},"976":{"position":[[599,14]]},"979":{"position":[[108,14]]},"981":{"position":[[80,14]]},"984":{"position":[[110,14]]},"988":{"position":[[1074,14]]},"990":{"position":[[73,14]]},"993":{"position":[[1100,14]]},"996":{"position":[[96,14]]},"999":{"position":[[257,14]]},"1011":{"position":[[348,14]]},"1014":{"position":[[109,14]]},"1017":{"position":[[101,14]]},"1020":{"position":[[105,14]]}},"keywords":{}}],["status\":\"run",{"_index":921,"title":{},"content":{"102":{"position":[[361,19]]},"704":{"position":[[361,19]]}},"keywords":{}}],["status\":\"succeed",{"_index":3473,"title":{},"content":{"443":{"position":[[266,21]]},"970":{"position":[[266,21]]}},"keywords":{}}],["status\":\"termin",{"_index":3553,"title":{},"content":{"488":{"position":[[348,23]]},"1020":{"position":[[348,23]]}},"keywords":{}}],["status\":\"wait",{"_index":3550,"title":{},"content":{"482":{"position":[[353,19]]},"485":{"position":[[341,19]]},"1014":{"position":[[353,19]]},"1017":{"position":[[341,19]]}},"keywords":{}}],["step",{"_index":622,"title":{"161":{"position":[[91,6]]},"731":{"position":[[91,6]]}},"content":{"35":{"position":[[1275,6],[1282,4],[1363,5],[2869,4],[2900,5],[3610,4]]},"161":{"position":[[885,5]]},"168":{"position":[[384,5]]},"187":{"position":[[90,5]]},"334":{"position":[[25,4],[379,4]]},"341":{"position":[[49,4],[602,5]]},"347":{"position":[[5,4]]},"348":{"position":[[7,4]]},"375":{"position":[[1675,5]]},"417":{"position":[[102,4]]},"511":{"position":[[289,4]]},"519":{"position":[[140,4]]},"549":{"position":[[1700,5]]},"553":{"position":[[2098,5]]},"559":{"position":[[1735,5]]},"570":{"position":[[214,6],[5157,4],[9614,4],[9788,6],[14585,4],[14703,4],[14770,4],[14836,4],[14903,4],[14970,4],[15037,4],[15104,4],[15146,4],[15291,4],[15358,4],[15425,4],[15492,4],[15560,4],[15628,4],[15696,4],[15764,4],[15832,4],[15900,4],[15943,4]]},"571":{"position":[[524,5]]},"579":{"position":[[594,5],[717,5]]},"627":{"position":[[1275,6],[1282,4],[1363,5],[2869,4],[2900,5],[3610,4]]},"731":{"position":[[885,5]]},"738":{"position":[[384,5]]},"770":{"position":[[90,5]]},"869":{"position":[[1392,4],[1494,4]]},"902":{"position":[[1675,5]]},"944":{"position":[[102,4]]},"1037":{"position":[[117,4]]},"1038":{"position":[[137,4],[222,4]]},"1059":{"position":[[140,4]]},"1062":{"position":[[6,5]]},"1075":{"position":[[1700,5]]},"1079":{"position":[[2098,5]]},"1090":{"position":[[214,6],[5157,4],[9614,4],[9788,6],[14585,4],[14703,4],[14770,4],[14836,4],[14903,4],[14970,4],[15037,4],[15104,4],[15146,4],[15291,4],[15358,4],[15425,4],[15492,4],[15560,4],[15628,4],[15696,4],[15764,4],[15832,4],[15900,4],[15943,4]]},"1091":{"position":[[524,5]]},"1094":{"position":[[1735,5]]},"1105":{"position":[[594,5],[717,5]]}},"keywords":{}}],["step1",{"_index":199,"title":{"120":{"position":[[0,6]]},"688":{"position":[[0,6]]}},"content":{"14":{"position":[[0,6]]},"606":{"position":[[0,6]]}},"keywords":{}}],["step10",{"_index":1237,"title":{"129":{"position":[[0,7]]},"697":{"position":[[0,7]]}},"content":{},"keywords":{}}],["step11",{"_index":1239,"title":{"130":{"position":[[0,7]]},"698":{"position":[[0,7]]}},"content":{},"keywords":{}}],["step12",{"_index":1250,"title":{"131":{"position":[[0,7]]},"699":{"position":[[0,7]]}},"content":{},"keywords":{}}],["step2",{"_index":203,"title":{"121":{"position":[[0,6]]},"689":{"position":[[0,6]]}},"content":{"14":{"position":[[91,6]]},"606":{"position":[[91,6]]}},"keywords":{}}],["step3",{"_index":207,"title":{"122":{"position":[[0,6]]},"690":{"position":[[0,6]]}},"content":{"14":{"position":[[148,6]]},"606":{"position":[[148,6]]}},"keywords":{}}],["step4",{"_index":1208,"title":{"123":{"position":[[0,6]]},"691":{"position":[[0,6]]}},"content":{},"keywords":{}}],["step5",{"_index":1217,"title":{"124":{"position":[[0,6]]},"692":{"position":[[0,6]]}},"content":{},"keywords":{}}],["step6",{"_index":1221,"title":{"125":{"position":[[0,6]]},"693":{"position":[[0,6]]}},"content":{},"keywords":{}}],["step7",{"_index":1225,"title":{"126":{"position":[[0,6]]},"694":{"position":[[0,6]]}},"content":{},"keywords":{}}],["step8",{"_index":1226,"title":{"127":{"position":[[0,6]]},"695":{"position":[[0,6]]}},"content":{},"keywords":{}}],["step9",{"_index":1229,"title":{"128":{"position":[[0,6]]},"696":{"position":[[0,6]]}},"content":{},"keywords":{}}],["step=0",{"_index":3671,"title":{"519":{"position":[[45,7]]},"1059":{"position":[[45,7]]}},"content":{},"keywords":{}}],["step=non",{"_index":4283,"title":{"1037":{"position":[[42,10]]},"1038":{"position":[[40,10]]}},"content":{},"keywords":{}}],["steps=1000",{"_index":3798,"title":{},"content":{"566":{"position":[[175,10],[391,10]]},"568":{"position":[[945,10]]},"1086":{"position":[[175,10],[391,10]]},"1088":{"position":[[945,10]]}},"keywords":{}}],["steps=10000",{"_index":4158,"title":{},"content":{"580":{"position":[[650,11]]},"1106":{"position":[[650,11]]}},"keywords":{}}],["steps=40000",{"_index":3839,"title":{},"content":{"570":{"position":[[537,11],[10034,11]]},"1090":{"position":[[537,11],[10034,11]]}},"keywords":{}}],["steps=500",{"_index":390,"title":{},"content":{"23":{"position":[[970,9]]},"541":{"position":[[970,9]]},"611":{"position":[[970,9]]},"1067":{"position":[[970,9]]}},"keywords":{}}],["steps_per_epoch=70",{"_index":3382,"title":{},"content":{"415":{"position":[[2221,19]]},"942":{"position":[[2274,19]]}},"keywords":{}}],["still",{"_index":1100,"title":{},"content":{"107":{"position":[[7215,5]]},"141":{"position":[[1851,5]]},"516":{"position":[[95,5]]},"570":{"position":[[14234,5]]},"591":{"position":[[272,5]]},"1056":{"position":[[95,5]]},"1090":{"position":[[14234,5]]},"1117":{"position":[[272,5]]}},"keywords":{}}],["stop",{"_index":3800,"title":{},"content":{"566":{"position":[[541,4]]},"591":{"position":[[90,4]]},"869":{"position":[[1626,4],[1660,4]]},"1086":{"position":[[541,4]]},"1117":{"position":[[90,4]]}},"keywords":{}}],["stor",{"_index":350,"title":{"207":{"position":[[9,5]]},"756":{"position":[[9,5]]}},"content":{"21":{"position":[[412,5]]},"155":{"position":[[146,6],[255,6],[310,8]]},"179":{"position":[[878,5]]},"199":{"position":[[1149,6]]},"201":{"position":[[228,5],[335,6],[402,7],[504,7]]},"207":{"position":[[78,5]]},"215":{"position":[[719,5]]},"217":{"position":[[0,5],[212,6],[887,5]]},"229":{"position":[[1290,6],[1345,6]]},"244":{"position":[[122,6]]},"261":{"position":[[391,6],[530,7]]},"262":{"position":[[3,7],[262,6]]},"271":{"position":[[9,6]]},"304":{"position":[[85,5]]},"331":{"position":[[2472,6]]},"364":{"position":[[0,5]]},"383":{"position":[[262,5]]},"569":{"position":[[1028,6]]},"621":{"position":[[412,5]]},"725":{"position":[[146,6],[255,6],[310,8]]},"749":{"position":[[883,5]]},"750":{"position":[[228,5],[335,6],[403,7],[505,7]]},"756":{"position":[[78,5]]},"782":{"position":[[1149,6]]},"785":{"position":[[719,5]]},"787":{"position":[[0,5],[212,6],[887,5]]},"792":{"position":[[1291,6],[1346,6]]},"814":{"position":[[122,6]]},"832":{"position":[[391,6],[530,7]]},"833":{"position":[[3,7],[262,6]]},"842":{"position":[[9,6]]},"870":{"position":[[85,5]]},"886":{"position":[[0,5]]},"910":{"position":[[262,5]]},"1089":{"position":[[1028,6]]}},"keywords":{}}],["storag",{"_index":1520,"title":{"155":{"position":[[0,7]]},"184":{"position":[[7,8]]},"210":{"position":[[0,7]]},"214":{"position":[[0,7]]},"215":{"position":[[29,8]]},"218":{"position":[[38,8]]},"725":{"position":[[0,7]]},"759":{"position":[[0,7]]},"767":{"position":[[7,8]]},"784":{"position":[[0,7]]},"785":{"position":[[29,8]]},"788":{"position":[[38,8]]}},"content":{"155":{"position":[[449,7],[498,7]]},"160":{"position":[[403,8]]},"170":{"position":[[98,7]]},"184":{"position":[[28,8],[123,7]]},"190":{"position":[[306,7],[653,7]]},"201":{"position":[[212,8]]},"210":{"position":[[36,7],[109,8],[134,7],[332,7]]},"215":{"position":[[1068,7],[1694,8]]},"216":{"position":[[135,7],[245,8],[367,7],[544,7],[628,7],[681,8]]},"217":{"position":[[938,8],[991,7],[2375,8]]},"219":{"position":[[131,8]]},"229":{"position":[[500,7],[1568,8]]},"242":{"position":[[160,8],[179,8]]},"261":{"position":[[595,8]]},"383":{"position":[[378,8],[443,8],[536,8],[1118,8],[1261,8]]},"568":{"position":[[330,7]]},"569":{"position":[[1847,7]]},"725":{"position":[[449,7],[498,7]]},"730":{"position":[[403,8]]},"740":{"position":[[98,7]]},"750":{"position":[[212,8]]},"759":{"position":[[36,7],[109,8],[134,7],[332,7]]},"767":{"position":[[28,8],[123,7]]},"773":{"position":[[306,7],[653,7]]},"785":{"position":[[1068,7],[1694,8]]},"786":{"position":[[135,7],[245,8],[367,7],[544,7],[628,7],[681,8]]},"787":{"position":[[938,8],[991,7],[2375,8]]},"789":{"position":[[131,8]]},"792":{"position":[[500,7],[1570,8]]},"805":{"position":[[160,8],[179,8]]},"832":{"position":[[595,8]]},"910":{"position":[[378,8],[443,8],[536,8],[1118,8],[1261,8]]},"1088":{"position":[[330,7]]},"1089":{"position":[[1847,7]]}},"keywords":{}}],["storage.host.root",{"_index":2787,"title":{},"content":{"383":{"position":[[456,18]]},"910":{"position":[[456,18]]}},"keywords":{}}],["storage.nfs.ip",{"_index":2798,"title":{},"content":{"383":{"position":[[1186,15]]},"910":{"position":[[1186,15]]}},"keywords":{}}],["storage.typ",{"_index":2784,"title":{},"content":{"383":{"position":[[391,13],[1131,13]]},"910":{"position":[[391,13],[1131,13]]}},"keywords":{}}],["store/support",{"_index":2190,"title":{},"content":{"261":{"position":[[439,13]]},"832":{"position":[[439,13]]}},"keywords":{}}],["storemetr",{"_index":2056,"title":{},"content":{"216":{"position":[[37,13]]},"786":{"position":[[37,13]]}},"keywords":{}}],["str",{"_index":3565,"title":{"497":{"position":[[21,4]]},"498":{"position":[[19,4]]},"500":{"position":[[22,4]]},"501":{"position":[[12,4]]},"502":{"position":[[17,4]]},"503":{"position":[[20,4]]},"516":{"position":[[32,3]]},"517":{"position":[[32,4]]},"518":{"position":[[25,4],[37,4]]},"519":{"position":[[26,4]]},"520":{"position":[[33,4],[60,4],[88,3]]},"1024":{"position":[[21,4]]},"1025":{"position":[[19,4]]},"1027":{"position":[[22,4]]},"1028":{"position":[[12,4]]},"1029":{"position":[[17,4]]},"1030":{"position":[[20,4]]},"1056":{"position":[[32,3]]},"1057":{"position":[[32,4]]},"1058":{"position":[[25,4],[37,4]]},"1059":{"position":[[26,4]]}},"content":{},"keywords":{}}],["strategi",{"_index":2250,"title":{},"content":{"273":{"position":[[899,9]]},"415":{"position":[[110,9],[1359,8]]},"566":{"position":[[689,8]]},"844":{"position":[[899,9]]},"942":{"position":[[110,9],[1377,8]]},"1086":{"position":[[689,8]]}},"keywords":{}}],["strategy.num_replicas_in_sync",{"_index":3362,"title":{},"content":{"415":{"position":[[1562,29]]},"942":{"position":[[1580,29]]}},"keywords":{}}],["strategy.scop",{"_index":3363,"title":{},"content":{"415":{"position":[[1597,17],[1890,19]]},"942":{"position":[[1615,17],[1908,19]]}},"keywords":{}}],["strategy=cpu",{"_index":4159,"title":{},"content":{"580":{"position":[[716,12]]},"1106":{"position":[[716,12]]}},"keywords":{}}],["strict",{"_index":1155,"title":{},"content":{"107":{"position":[[10799,6]]}},"keywords":{}}],["string",{"_index":2106,"title":{},"content":{"224":{"position":[[131,6],[286,6],[346,6],[440,6]]},"225":{"position":[[135,6],[193,6],[334,6],[388,6],[469,6]]},"226":{"position":[[427,6],[503,6],[546,6],[663,6]]},"422":{"position":[[86,6],[123,6],[201,6],[280,6]]},"427":{"position":[[35,6]]},"430":{"position":[[35,6],[86,6],[174,6]]},"433":{"position":[[35,6]]},"437":{"position":[[339,6],[373,6],[412,6],[445,6],[481,7],[995,6],[1028,6],[1052,6],[1075,6],[1111,7],[1270,6],[1323,6]]},"445":{"position":[[33,6]]},"448":{"position":[[33,6]]},"451":{"position":[[33,6]]},"456":{"position":[[33,6]]},"460":{"position":[[35,6],[98,6],[135,6],[405,6],[506,6],[549,6],[883,6],[917,6],[956,6],[989,6],[1025,7],[1208,6],[1241,6],[1265,6],[1288,6],[1324,7],[1403,6],[1438,6]]},"465":{"position":[[35,6],[107,6],[144,6]]},"468":{"position":[[35,6]]},"471":{"position":[[44,6],[87,6],[144,7]]},"478":{"position":[[278,6],[310,6],[345,6],[479,7],[522,6]]},"481":{"position":[[33,6]]},"484":{"position":[[33,6]]},"487":{"position":[[33,6]]},"517":{"position":[[166,7]]},"518":{"position":[[61,8]]},"809":{"position":[[131,6],[286,6],[346,6],[440,6]]},"810":{"position":[[156,6],[214,6],[355,6],[441,6],[522,6]]},"811":{"position":[[427,6],[503,6],[546,6],[663,6]]},"949":{"position":[[86,6],[123,6],[201,6],[280,6]]},"954":{"position":[[35,6]]},"957":{"position":[[35,6],[86,6],[174,6]]},"960":{"position":[[35,6]]},"964":{"position":[[339,6],[373,6],[412,6],[445,6],[481,7],[995,6],[1028,6],[1052,6],[1075,6],[1111,7],[1270,6],[1323,6]]},"972":{"position":[[33,6]]},"975":{"position":[[33,6]]},"978":{"position":[[33,6]]},"983":{"position":[[33,6]]},"987":{"position":[[35,6],[98,6],[135,6],[405,6],[506,6],[549,6],[883,6],[917,6],[956,6],[989,6],[1025,7],[1208,6],[1241,6],[1265,6],[1288,6],[1324,7],[1403,6],[1438,6]]},"992":{"position":[[35,6],[107,6],[144,6]]},"995":{"position":[[35,6]]},"998":{"position":[[44,6],[87,6],[144,7]]},"1010":{"position":[[278,6],[310,6],[345,6],[479,7],[522,6]]},"1013":{"position":[[33,6]]},"1016":{"position":[[33,6]]},"1019":{"position":[[33,6]]},"1036":{"position":[[89,6]]},"1038":{"position":[[90,6]]},"1057":{"position":[[166,7]]},"1058":{"position":[[61,8]]}},"keywords":{}}],["string).valu",{"_index":4284,"title":{},"content":{"1037":{"position":[[65,14]]}},"keywords":{}}],["strongli",{"_index":1357,"title":{},"content":{"138":{"position":[[133,8]]},"710":{"position":[[133,8]]}},"keywords":{}}],["structur",{"_index":1961,"title":{"360":{"position":[[21,9]]},"882":{"position":[[21,9]]}},"content":{"195":{"position":[[327,9]]},"359":{"position":[[35,9]]},"778":{"position":[[327,9]]},"881":{"position":[[35,9]]}},"keywords":{}}],["stv",{"_index":1062,"title":{},"content":{"107":{"position":[[5337,5]]}},"keywords":{}}],["styl",{"_index":1218,"title":{"509":{"position":[[7,5]]},"1048":{"position":[[7,5]]}},"content":{"124":{"position":[[70,6]]},"132":{"position":[[29,6],[52,5]]},"509":{"position":[[73,5]]},"692":{"position":[[70,6]]},"700":{"position":[[29,6],[52,5]]},"1048":{"position":[[73,5]]}},"keywords":{}}],["styleshel",{"_index":1254,"title":{},"content":{"132":{"position":[[41,10]]},"700":{"position":[[41,10]]}},"keywords":{}}],["su",{"_index":3162,"title":{},"content":{"389":{"position":[[15653,3]]},"916":{"position":[[15653,3]]}},"keywords":{}}],["sub",{"_index":1143,"title":{},"content":{"107":{"position":[[9583,3]]},"201":{"position":[[161,3]]},"331":{"position":[[2716,3]]},"332":{"position":[[171,3]]},"750":{"position":[[161,3]]}},"keywords":{}}],["subfold",{"_index":431,"title":{},"content":{"25":{"position":[[1811,9]]},"543":{"position":[[1811,9]]},"613":{"position":[[1811,9]]},"1069":{"position":[[1811,9]]}},"keywords":{}}],["subject",{"_index":1004,"title":{},"content":{"107":{"position":[[2300,7],[4742,7],[6065,7],[10786,7],[10961,7]]}},"keywords":{}}],["submarin",{"_index":1,"title":{"0":{"position":[[8,9]]},"2":{"position":[[0,9]]},"3":{"position":[[0,9]]},"6":{"position":[[8,9]]},"8":{"position":[[7,9]]},"10":{"position":[[10,9]]},"12":{"position":[[16,9]]},"13":{"position":[[11,9]]},"14":{"position":[[22,9]]},"15":{"position":[[4,9]]},"16":{"position":[[0,9]]},"17":{"position":[[0,9]]},"116":{"position":[[21,9]]},"118":{"position":[[6,9]]},"121":{"position":[[17,9]]},"122":{"position":[[28,9]]},"134":{"position":[[17,9]]},"141":{"position":[[33,9]]},"142":{"position":[[7,9]]},"156":{"position":[[45,9]]},"168":{"position":[[4,10]]},"191":{"position":[[34,9]]},"208":{"position":[[0,9]]},"212":{"position":[[0,9]]},"228":{"position":[[0,9]]},"230":{"position":[[0,9]]},"232":{"position":[[0,9]]},"242":{"position":[[31,9]]},"245":{"position":[[0,9]]},"278":{"position":[[13,9]]},"281":{"position":[[18,9]]},"284":{"position":[[17,9]]},"304":{"position":[[8,9]]},"348":{"position":[[15,9]]},"352":{"position":[[12,9]]},"360":{"position":[[3,9]]},"361":{"position":[[5,9]]},"362":{"position":[[5,9]]},"363":{"position":[[5,9]]},"364":{"position":[[5,9]]},"365":{"position":[[5,9]]},"366":{"position":[[5,9]]},"367":{"position":[[5,9]]},"368":{"position":[[5,9]]},"370":{"position":[[16,9]]},"378":{"position":[[7,9]]},"380":{"position":[[7,9]]},"382":{"position":[[10,9]]},"384":{"position":[[10,9]]},"397":{"position":[[0,9]]},"398":{"position":[[34,9]]},"399":{"position":[[8,9]]},"402":{"position":[[7,9]]},"411":{"position":[[7,9]]},"412":{"position":[[7,9]]},"504":{"position":[[0,9]]},"521":{"position":[[0,9]]},"539":{"position":[[22,9]]},"591":{"position":[[24,10]]},"592":{"position":[[0,9]]},"595":{"position":[[8,9]]},"597":{"position":[[7,9]]},"599":{"position":[[10,9]]},"600":{"position":[[8,9]]},"602":{"position":[[0,9]]},"604":{"position":[[16,9]]},"605":{"position":[[11,9]]},"606":{"position":[[22,9]]},"607":{"position":[[4,9]]},"608":{"position":[[0,9]]},"609":{"position":[[0,9]]},"684":{"position":[[21,9]]},"686":{"position":[[6,9]]},"689":{"position":[[17,9]]},"690":{"position":[[28,9]]},"706":{"position":[[17,9]]},"712":{"position":[[7,9]]},"726":{"position":[[45,9]]},"738":{"position":[[4,10]]},"757":{"position":[[0,9]]},"761":{"position":[[0,9]]},"774":{"position":[[34,9]]},"791":{"position":[[0,9]]},"793":{"position":[[0,9]]},"795":{"position":[[0,9]]},"805":{"position":[[31,9]]},"815":{"position":[[0,9]]},"849":{"position":[[13,9]]},"852":{"position":[[18,9]]},"855":{"position":[[17,9]]},"870":{"position":[[8,9]]},"882":{"position":[[3,9]]},"883":{"position":[[5,9]]},"884":{"position":[[5,9]]},"885":{"position":[[5,9]]},"886":{"position":[[5,9]]},"887":{"position":[[5,9]]},"888":{"position":[[5,9]]},"889":{"position":[[5,9]]},"890":{"position":[[5,9]]},"891":{"position":[[5,9]]},"897":{"position":[[16,9]]},"905":{"position":[[7,9]]},"907":{"position":[[7,9]]},"909":{"position":[[10,9]]},"911":{"position":[[10,9]]},"924":{"position":[[0,9]]},"925":{"position":[[34,9]]},"926":{"position":[[8,9]]},"929":{"position":[[7,9]]},"938":{"position":[[7,9]]},"939":{"position":[[7,9]]},"1043":{"position":[[0,9]]},"1053":{"position":[[9,9]]},"1060":{"position":[[0,9]]},"1065":{"position":[[22,9]]},"1117":{"position":[[24,10]]}},"content":{"1":{"position":[[101,10]]},"2":{"position":[[41,9]]},"6":{"position":[[57,9],[82,9],[127,9]]},"7":{"position":[[260,9],[312,9],[362,9],[914,9]]},"10":{"position":[[14,9]]},"12":{"position":[[195,9]]},"13":{"position":[[30,9],[65,9],[132,9],[196,9],[374,9],[456,9]]},"14":{"position":[[17,9],[62,9],[367,9]]},"15":{"position":[[3,9],[262,9]]},"16":{"position":[[0,9],[57,9],[115,9],[207,9],[347,9],[408,9],[576,9]]},"17":{"position":[[0,9],[60,9],[120,9],[187,9],[263,9],[535,9],[915,9],[1267,9]]},"20":{"position":[[845,9],[880,9]]},"21":{"position":[[247,9]]},"31":{"position":[[26,9],[93,9],[367,9],[591,9]]},"32":{"position":[[5,9],[48,9]]},"33":{"position":[[7,9],[445,9],[523,9]]},"49":{"position":[[11,9]]},"51":{"position":[[7,9],[37,9],[122,9],[200,9]]},"52":{"position":[[3,9],[40,9]]},"53":{"position":[[2,9],[190,9],[223,9]]},"55":{"position":[[81,9],[240,12]]},"69":{"position":[[11,9]]},"71":{"position":[[109,9],[696,9]]},"72":{"position":[[247,9],[729,9]]},"73":{"position":[[105,9],[269,9]]},"74":{"position":[[119,9],[428,9],[609,9]]},"75":{"position":[[108,9],[272,9]]},"78":{"position":[[359,9],[599,9],[632,10],[1264,9]]},"107":{"position":[[56,9],[207,9],[312,11],[379,9],[475,9],[1514,9],[3700,9],[3763,9],[3930,9],[4045,9],[4939,10],[5053,9],[5136,9],[5493,9],[6006,9],[7015,9],[7312,9],[7445,9]]},"117":{"position":[[7,9],[68,9]]},"119":{"position":[[0,9]]},"121":{"position":[[159,9]]},"122":{"position":[[157,9],[253,9],[318,9]]},"123":{"position":[[3,9],[147,9],[188,9],[240,9]]},"124":{"position":[[29,9],[146,10],[217,10]]},"125":{"position":[[5,9]]},"126":{"position":[[16,9]]},"131":{"position":[[20,9]]},"133":{"position":[[7,9],[203,9],[251,9],[391,9],[449,9],[521,9],[1265,10],[1925,10],[2048,9],[2348,9],[2512,9],[2881,9]]},"135":{"position":[[360,9]]},"136":{"position":[[0,9]]},"138":{"position":[[0,9]]},"141":{"position":[[25,9],[202,10],[234,9],[701,10],[730,9],[1185,9],[1473,9],[2228,10]]},"143":{"position":[[274,9]]},"144":{"position":[[238,9],[313,9],[548,9]]},"145":{"position":[[491,9]]},"146":{"position":[[37,9]]},"147":{"position":[[25,9]]},"148":{"position":[[22,9]]},"149":{"position":[[0,9]]},"154":{"position":[[1224,9]]},"155":{"position":[[15,9],[80,9]]},"156":{"position":[[702,12],[740,9],[791,9],[1207,9],[1241,9]]},"165":{"position":[[523,10]]},"167":{"position":[[11,9],[588,9]]},"168":{"position":[[13,9],[623,9]]},"171":{"position":[[15,9]]},"174":{"position":[[0,9],[125,9]]},"175":{"position":[[0,9],[217,9],[344,9]]},"176":{"position":[[66,9],[509,9],[545,9],[588,9]]},"179":{"position":[[71,9],[116,9],[217,9],[854,10],[1353,9],[1446,9],[1490,9],[1524,9],[1604,9],[1644,9]]},"181":{"position":[[159,9],[1107,9],[1493,9]]},"190":{"position":[[530,9]]},"191":{"position":[[33,9]]},"193":{"position":[[145,9]]},"194":{"position":[[445,9],[528,9],[1114,9],[1200,9],[1225,10]]},"200":{"position":[[143,9],[480,9],[995,9],[1020,9],[2500,9],[2894,9]]},"201":{"position":[[175,9],[202,9],[583,9],[805,9],[830,9],[928,9]]},"204":{"position":[[143,9],[166,9]]},"208":{"position":[[27,9],[65,10],[116,9],[296,9],[568,9],[611,9],[645,9]]},"209":{"position":[[36,9]]},"210":{"position":[[61,9],[291,9]]},"211":{"position":[[0,9],[215,9]]},"212":{"position":[[87,9],[102,9],[154,9],[182,9],[314,9],[365,9],[413,9],[532,9],[548,9],[604,9],[649,9]]},"215":{"position":[[534,9],[1408,9]]},"216":{"position":[[375,9]]},"217":{"position":[[947,9],[1736,9]]},"218":{"position":[[100,9],[472,9]]},"219":{"position":[[508,9]]},"220":{"position":[[14,9],[52,9]]},"222":{"position":[[38,9],[352,9]]},"223":{"position":[[435,11]]},"225":{"position":[[273,9],[299,9]]},"227":{"position":[[18,9]]},"229":{"position":[[17,9],[114,9],[652,9],[755,10],[1036,9],[1469,10],[1483,9],[1597,9]]},"230":{"position":[[0,9],[165,9],[260,9],[358,9]]},"231":{"position":[[913,9],[991,9]]},"232":{"position":[[24,9]]},"242":{"position":[[100,9]]},"246":{"position":[[0,9],[498,9],[599,9]]},"248":{"position":[[4,9],[72,9],[263,9],[733,9],[802,9]]},"249":{"position":[[29,10],[143,9],[169,9]]},"251":{"position":[[4,9],[103,9]]},"252":{"position":[[71,10],[105,9],[218,9]]},"253":{"position":[[0,9]]},"259":{"position":[[4,9],[62,9],[101,9],[218,10],[399,9],[711,9]]},"261":{"position":[[9,9],[60,9]]},"263":{"position":[[14,9]]},"265":{"position":[[176,9]]},"267":{"position":[[16,9],[59,9],[220,9]]},"268":{"position":[[77,9]]},"269":{"position":[[257,9],[478,9]]},"270":{"position":[[365,9],[386,9],[459,9],[480,9],[669,9],[690,9],[831,9],[852,9]]},"271":{"position":[[171,9],[213,9],[257,9],[309,9],[448,9],[498,9],[548,9],[591,9]]},"273":{"position":[[41,9],[62,9],[120,9],[141,9],[262,9],[342,9],[363,9],[483,9],[504,9],[656,9],[1229,9],[1284,9],[1305,9]]},"274":{"position":[[66,9],[147,9],[238,9]]},"277":{"position":[[52,9]]},"281":{"position":[[0,9],[370,9],[452,9]]},"295":{"position":[[69,9]]},"298":{"position":[[395,9]]},"300":{"position":[[116,9],[165,9],[622,9]]},"301":{"position":[[11,9],[172,9]]},"302":{"position":[[331,9]]},"304":{"position":[[0,9],[200,9]]},"314":{"position":[[1970,9],[2021,9],[2194,9],[2252,9],[2319,9],[2377,9],[2561,9]]},"315":{"position":[[192,9],[357,9],[433,9]]},"316":{"position":[[13,9]]},"317":{"position":[[13,9],[71,9]]},"319":{"position":[[99,9]]},"320":{"position":[[26,9],[70,9],[324,9],[425,9],[930,9],[1189,9]]},"324":{"position":[[99,9],[284,9],[305,9],[389,9]]},"325":{"position":[[116,9],[302,10],[479,10]]},"328":{"position":[[125,9],[340,9]]},"334":{"position":[[564,9],[585,9],[803,9],[888,9],[1243,9],[1268,9],[1490,9],[1579,9]]},"340":{"position":[[116,9],[209,9],[259,9],[317,9]]},"341":{"position":[[69,9],[166,9],[244,9],[363,11],[402,9],[454,9]]},"345":{"position":[[15,9],[111,9],[188,9]]},"349":{"position":[[164,9]]},"350":{"position":[[151,9]]},"351":{"position":[[15,9]]},"352":{"position":[[30,9],[209,9],[310,9],[970,9],[1223,9],[1288,9],[1585,9]]},"355":{"position":[[158,9]]},"357":{"position":[[181,9],[292,9],[332,9],[492,9]]},"359":{"position":[[67,9]]},"361":{"position":[[30,9]]},"362":{"position":[[17,9]]},"365":{"position":[[23,9]]},"367":{"position":[[36,10]]},"368":{"position":[[365,9]]},"369":{"position":[[5,10],[54,10],[105,9],[158,9],[327,9],[354,9],[435,9]]},"371":{"position":[[190,9]]},"372":{"position":[[7,9],[246,9],[554,9],[800,9],[825,9],[1071,9],[1096,9],[1173,9],[1251,9],[1313,9]]},"380":{"position":[[53,9],[76,9],[140,9]]},"382":{"position":[[15,9]]},"383":{"position":[[0,9]]},"384":{"position":[[0,9],[71,9],[963,9],[1124,9],[1161,9]]},"391":{"position":[[30,9]]},"398":{"position":[[0,9]]},"400":{"position":[[21,9],[142,10],[204,9]]},"402":{"position":[[26,9],[157,9]]},"403":{"position":[[4,9]]},"407":{"position":[[40,9],[79,9],[186,9],[539,9],[1612,9]]},"411":{"position":[[85,9],[138,9],[161,9],[209,9],[268,9],[326,9]]},"412":{"position":[[241,9],[295,9],[346,9],[398,9],[452,9],[503,9],[560,9]]},"415":{"position":[[424,9]]},"417":{"position":[[5,9]]},"418":{"position":[[20,9],[35,9]]},"423":{"position":[[74,9],[678,9]]},"425":{"position":[[556,9]]},"428":{"position":[[63,9],[244,9]]},"431":{"position":[[75,9],[384,9],[565,9]]},"434":{"position":[[66,9],[247,9]]},"441":{"position":[[325,9],[565,9],[598,10],[1282,9]]},"443":{"position":[[1763,9]]},"446":{"position":[[699,9]]},"475":{"position":[[43,9]]},"495":{"position":[[12,9]]},"496":{"position":[[50,9],[172,9],[207,9]]},"497":{"position":[[36,9],[78,9],[199,9]]},"498":{"position":[[57,9],[118,9]]},"499":{"position":[[117,9]]},"500":{"position":[[11,9],[48,9],[117,9]]},"501":{"position":[[103,9]]},"502":{"position":[[104,9]]},"503":{"position":[[65,9],[184,9]]},"505":{"position":[[166,9]]},"507":{"position":[[161,9],[201,9],[507,11],[632,11]]},"508":{"position":[[210,9]]},"509":{"position":[[296,9]]},"510":{"position":[[130,9],[341,9]]},"511":{"position":[[90,9]]},"512":{"position":[[279,9]]},"513":{"position":[[11,9],[147,9]]},"516":{"position":[[126,9]]},"517":{"position":[[95,9],[191,9]]},"523":{"position":[[0,9],[34,9]]},"524":{"position":[[0,9]]},"525":{"position":[[0,9],[93,9]]},"526":{"position":[[0,9],[56,9]]},"528":{"position":[[0,9]]},"529":{"position":[[0,9]]},"530":{"position":[[0,9]]},"532":{"position":[[0,9]]},"533":{"position":[[0,9]]},"534":{"position":[[0,9]]},"536":{"position":[[0,9]]},"537":{"position":[[0,9]]},"538":{"position":[[0,9]]},"539":{"position":[[28,9],[82,9],[133,9]]},"574":{"position":[[22,9]]},"580":{"position":[[1416,9],[1481,9],[1519,9],[1610,9],[1651,9],[1710,9]]},"591":{"position":[[14,9],[302,10],[400,9]]},"595":{"position":[[57,9],[82,9],[127,9]]},"596":{"position":[[260,9],[312,9],[362,9],[914,9]]},"599":{"position":[[14,9]]},"601":{"position":[[101,10]]},"602":{"position":[[41,9]]},"604":{"position":[[195,9]]},"605":{"position":[[30,9],[65,9],[132,9],[196,9],[374,9],[456,9]]},"606":{"position":[[17,9],[62,9],[367,9]]},"607":{"position":[[3,9],[262,9]]},"608":{"position":[[0,9],[57,9],[115,9],[207,9],[347,9],[408,9],[576,9]]},"609":{"position":[[0,9],[60,9],[120,9],[187,9],[263,9],[535,9],[915,9],[1267,9]]},"620":{"position":[[845,9],[880,9]]},"621":{"position":[[247,9]]},"623":{"position":[[26,9],[93,9],[367,9],[591,9]]},"624":{"position":[[5,9],[48,9]]},"625":{"position":[[7,9],[445,9],[523,9]]},"641":{"position":[[11,9]]},"643":{"position":[[7,9],[37,9],[122,9],[200,9]]},"644":{"position":[[3,9],[40,9]]},"645":{"position":[[2,9],[190,9],[223,9]]},"647":{"position":[[81,9],[240,12]]},"661":{"position":[[11,9]]},"663":{"position":[[109,9],[696,9]]},"664":{"position":[[247,9],[729,9]]},"665":{"position":[[105,9],[269,9]]},"666":{"position":[[119,9],[428,9],[609,9]]},"667":{"position":[[108,9],[272,9]]},"677":{"position":[[359,9],[599,9],[632,10],[1264,9]]},"685":{"position":[[7,9],[68,9]]},"687":{"position":[[0,9]]},"689":{"position":[[159,9]]},"690":{"position":[[157,9],[253,9],[318,9]]},"691":{"position":[[3,9],[147,9],[188,9],[240,9]]},"692":{"position":[[29,9],[146,10],[217,10]]},"693":{"position":[[5,9]]},"694":{"position":[[16,9]]},"699":{"position":[[20,9]]},"707":{"position":[[360,9]]},"708":{"position":[[0,9]]},"710":{"position":[[0,9]]},"714":{"position":[[238,9],[313,9],[548,9]]},"716":{"position":[[37,9]]},"717":{"position":[[25,9]]},"718":{"position":[[22,9]]},"719":{"position":[[0,9]]},"724":{"position":[[1224,9]]},"725":{"position":[[15,9],[80,9]]},"726":{"position":[[702,12],[740,9],[791,9],[1207,9],[1241,9]]},"735":{"position":[[523,10]]},"737":{"position":[[11,9],[588,9]]},"738":{"position":[[13,9],[623,9]]},"741":{"position":[[15,9]]},"744":{"position":[[0,9],[125,9]]},"745":{"position":[[0,9],[217,9],[344,9]]},"746":{"position":[[66,9],[510,9],[546,9],[589,9]]},"749":{"position":[[71,9],[116,9],[217,9],[859,10],[1358,9],[1451,9],[1495,9],[1529,9],[1609,9],[1649,9]]},"750":{"position":[[175,9],[202,9],[345,10],[356,9],[584,9],[806,9],[831,9],[929,9]]},"753":{"position":[[143,9],[166,9]]},"757":{"position":[[27,9],[65,10],[116,9],[296,9],[568,9],[611,9],[645,9]]},"758":{"position":[[36,9]]},"759":{"position":[[61,9],[291,9]]},"760":{"position":[[0,9],[215,9]]},"761":{"position":[[87,9],[102,9],[154,9],[182,9],[314,9],[365,9],[413,9],[532,9],[548,9],[604,9],[649,9]]},"764":{"position":[[159,9],[1112,9],[1500,9]]},"773":{"position":[[530,9]]},"774":{"position":[[33,9]]},"776":{"position":[[145,9]]},"777":{"position":[[451,9],[534,9],[1394,9],[1480,9],[1505,10]]},"783":{"position":[[143,9],[480,9],[995,9],[1020,9],[2500,9],[2894,9]]},"785":{"position":[[534,9],[1408,9]]},"786":{"position":[[375,9]]},"787":{"position":[[947,9],[1736,9]]},"788":{"position":[[100,9],[472,9]]},"789":{"position":[[508,9]]},"790":{"position":[[14,9],[52,9]]},"792":{"position":[[17,9],[114,9],[652,9],[755,10],[1037,9],[1471,10],[1485,9],[1599,9]]},"793":{"position":[[0,9],[165,9],[260,9],[358,9]]},"794":{"position":[[1166,9],[1244,9]]},"795":{"position":[[24,9]]},"805":{"position":[[100,9]]},"807":{"position":[[38,9],[352,9]]},"808":{"position":[[435,11]]},"810":{"position":[[294,9],[320,9]]},"812":{"position":[[18,9]]},"816":{"position":[[0,9],[498,9],[604,9]]},"818":{"position":[[4,9],[72,9],[263,9],[733,9],[802,9]]},"819":{"position":[[29,10],[143,9],[169,9]]},"821":{"position":[[4,9],[103,9]]},"822":{"position":[[76,10],[110,9],[223,9]]},"823":{"position":[[0,9]]},"830":{"position":[[4,9],[62,9],[101,9],[218,10],[399,9],[711,9]]},"832":{"position":[[9,9],[60,9]]},"834":{"position":[[14,9]]},"836":{"position":[[176,9]]},"838":{"position":[[16,9],[59,9],[220,9]]},"839":{"position":[[77,9]]},"840":{"position":[[257,9],[478,9]]},"841":{"position":[[365,9],[386,9],[459,9],[480,9],[669,9],[690,9],[831,9],[852,9]]},"842":{"position":[[171,9],[213,9],[257,9],[309,9],[448,9],[498,9],[548,9],[591,9]]},"844":{"position":[[41,9],[62,9],[120,9],[141,9],[262,9],[342,9],[363,9],[483,9],[504,9],[656,9],[1229,9],[1284,9],[1305,9]]},"845":{"position":[[66,9],[147,9],[238,9]]},"848":{"position":[[52,9]]},"852":{"position":[[0,9],[370,9],[452,9]]},"862":{"position":[[69,9]]},"865":{"position":[[398,9]]},"867":{"position":[[116,9],[165,9],[571,9]]},"868":{"position":[[11,9],[156,9]]},"869":{"position":[[331,9],[508,9],[669,9],[803,9],[898,11],[933,9],[1006,9],[1043,9],[1304,9],[1545,9],[1570,9],[1588,9],[1601,9],[1725,9]]},"870":{"position":[[0,9],[200,9]]},"876":{"position":[[99,9]]},"877":{"position":[[26,9],[70,9],[324,9],[425,9],[930,9],[1189,9]]},"881":{"position":[[67,9]]},"883":{"position":[[30,9]]},"884":{"position":[[17,9]]},"887":{"position":[[23,9]]},"890":{"position":[[36,10]]},"891":{"position":[[365,9]]},"892":{"position":[[5,10],[54,10],[105,9],[158,9],[327,9],[354,9],[435,9]]},"894":{"position":[[99,9],[284,9],[305,9],[389,9]]},"895":{"position":[[116,9],[302,10],[479,10]]},"898":{"position":[[190,9]]},"899":{"position":[[7,9],[253,9],[278,9],[524,9],[549,9],[626,9],[704,9],[766,9]]},"907":{"position":[[53,9],[76,9],[140,9]]},"909":{"position":[[15,9]]},"910":{"position":[[0,9]]},"911":{"position":[[0,9],[71,9],[963,9],[1124,9],[1161,9]]},"918":{"position":[[30,9]]},"925":{"position":[[0,9]]},"927":{"position":[[21,9],[142,10],[204,9]]},"929":{"position":[[26,9],[157,9]]},"930":{"position":[[4,9]]},"934":{"position":[[40,9],[79,9],[186,9],[559,9],[1632,9]]},"938":{"position":[[116,9],[141,9]]},"939":{"position":[[247,9],[303,9],[356,9],[409,9],[463,9],[522,9]]},"942":{"position":[[422,9]]},"944":{"position":[[5,9]]},"945":{"position":[[37,9]]},"950":{"position":[[74,9],[678,9]]},"952":{"position":[[556,9]]},"955":{"position":[[63,9],[244,9]]},"958":{"position":[[75,9],[384,9],[565,9]]},"961":{"position":[[66,9],[247,9]]},"968":{"position":[[325,9],[565,9],[598,10],[1282,9]]},"970":{"position":[[1763,9]]},"973":{"position":[[699,9]]},"1002":{"position":[[43,9]]},"1022":{"position":[[12,9]]},"1023":{"position":[[50,9],[172,9],[207,9]]},"1024":{"position":[[36,9],[78,9],[199,9]]},"1025":{"position":[[57,9],[118,9]]},"1026":{"position":[[117,9]]},"1027":{"position":[[11,9],[48,9],[117,9]]},"1028":{"position":[[103,9]]},"1029":{"position":[[104,9]]},"1030":{"position":[[65,9],[184,9]]},"1032":{"position":[[4,9]]},"1033":{"position":[[71,10],[182,10],[313,9]]},"1035":{"position":[[105,9]]},"1036":{"position":[[118,9]]},"1037":{"position":[[175,9]]},"1038":{"position":[[246,9]]},"1044":{"position":[[166,9]]},"1046":{"position":[[161,9],[201,9],[492,11],[629,11]]},"1047":{"position":[[210,9]]},"1048":{"position":[[296,9]]},"1049":{"position":[[130,9],[341,9]]},"1050":{"position":[[90,9]]},"1051":{"position":[[267,9]]},"1052":{"position":[[11,9],[147,9]]},"1053":{"position":[[0,9],[99,9],[186,10],[229,9]]},"1056":{"position":[[126,9]]},"1057":{"position":[[95,9],[191,9]]},"1061":{"position":[[52,9]]},"1063":{"position":[[10,9]]},"1065":{"position":[[28,9],[82,9],[133,9]]},"1100":{"position":[[22,9]]},"1106":{"position":[[1416,9],[1481,9],[1519,9],[1610,9],[1651,9],[1710,9]]},"1117":{"position":[[14,9],[302,10],[400,9]]}},"keywords":{}}],["submarine'",{"_index":1718,"title":{},"content":{"167":{"position":[[507,11]]},"171":{"position":[[180,11]]},"176":{"position":[[657,11]]},"177":{"position":[[256,11]]},"207":{"position":[[57,11]]},"229":{"position":[[628,11],[1304,11]]},"264":{"position":[[13,11]]},"737":{"position":[[507,11]]},"741":{"position":[[180,11]]},"746":{"position":[[658,11]]},"747":{"position":[[256,11]]},"756":{"position":[[57,11]]},"792":{"position":[[628,11],[1305,11]]},"835":{"position":[[13,11]]}},"keywords":{}}],["submarine.cli",{"_index":3635,"title":{},"content":{"511":{"position":[[907,16],[942,19],[978,19],[1054,19]]}},"keywords":{}}],["submarine.client.models.code_spec",{"_index":3262,"title":{},"content":{"407":{"position":[[480,33]]}},"keywords":{}}],["submarine.client.models.environment_spec",{"_index":3256,"title":{},"content":{"407":{"position":[[201,40]]}},"keywords":{}}],["submarine.client.models.experiment_meta",{"_index":3260,"title":{},"content":{"407":{"position":[[413,39]]}},"keywords":{}}],["submarine.client.models.experiment_spec",{"_index":3257,"title":{},"content":{"407":{"position":[[270,39]]}},"keywords":{}}],["submarine.client.models.experiment_task_spec",{"_index":3258,"title":{},"content":{"407":{"position":[[337,44]]}},"keywords":{}}],["submarine.database.dev=tru",{"_index":2334,"title":{},"content":{"302":{"position":[[303,27]]},"869":{"position":[[303,27]]}},"keywords":{}}],["submarine.experiment.models.code_spec",{"_index":4247,"title":{},"content":{"934":{"position":[[496,37]]}},"keywords":{}}],["submarine.experiment.models.environment_spec",{"_index":4243,"title":{},"content":{"934":{"position":[[201,44]]}},"keywords":{}}],["submarine.experiment.models.experiment_meta",{"_index":4246,"title":{},"content":{"934":{"position":[[425,43]]}},"keywords":{}}],["submarine.experiment.models.experiment_spec",{"_index":4244,"title":{},"content":{"934":{"position":[[274,43]]}},"keywords":{}}],["submarine.experiment.models.experiment_task_spec",{"_index":4245,"title":{},"content":{"934":{"position":[[345,48]]}},"keywords":{}}],["submarine.experimentcli",{"_index":3265,"title":{},"content":{"407":{"position":[[575,28]]},"934":{"position":[[595,28]]}},"keywords":{}}],["submarine.get_tracking_uri",{"_index":3659,"title":{"516":{"position":[[0,28]]},"1056":{"position":[[0,28]]}},"content":{},"keywords":{}}],["submarine.log_metric(key",{"_index":3669,"title":{"519":{"position":[[0,25]]},"1059":{"position":[[0,25]]}},"content":{},"keywords":{}}],["submarine.log_metrics({\"loss",{"_index":3377,"title":{},"content":{"415":{"position":[[2094,30]]}},"keywords":{}}],["submarine.log_param(key",{"_index":3667,"title":{"518":{"position":[[0,24]]},"1058":{"position":[[0,24]]}},"content":{},"keywords":{}}],["submarine.save_model(model_typ",{"_index":3673,"title":{"520":{"position":[[0,32]]}},"content":{},"keywords":{}}],["submarine.server.addr",{"_index":2211,"title":{},"content":{"268":{"position":[[6,21]]},"269":{"position":[[165,21]]},"270":{"position":[[152,21]]},"839":{"position":[[6,21]]},"840":{"position":[[165,21]]},"841":{"position":[[152,21]]}},"keywords":{}}],["submarine.server.addr=ip1",{"_index":2213,"title":{},"content":{"268":{"position":[[97,26]]},"839":{"position":[[97,26]]}},"keywords":{}}],["submarine.server.dev",{"_index":4233,"title":{},"content":{"867":{"position":[[614,20]]}},"keywords":{}}],["submarine.server.dev=tru",{"_index":4232,"title":{},"content":{"867":{"position":[[545,25]]}},"keywords":{}}],["submarine.server.port",{"_index":262,"title":{},"content":{"17":{"position":[[165,21]]},"609":{"position":[[165,21]]}},"keywords":{}}],["submarine.server.ssl.port",{"_index":267,"title":{},"content":{"17":{"position":[[297,25]]},"609":{"position":[[297,25]]}},"keywords":{}}],["submarine.set_tracking_uri(uri",{"_index":3661,"title":{"517":{"position":[[0,31]]},"1057":{"position":[[0,31]]}},"content":{},"keywords":{}}],["submarine.ssl",{"_index":264,"title":{},"content":{"17":{"position":[[223,13]]},"609":{"position":[[223,13]]}},"keywords":{}}],["submarine.ssl.client.auth",{"_index":271,"title":{},"content":{"17":{"position":[[394,25]]},"609":{"position":[[394,25]]}},"keywords":{}}],["submarine.ssl.key.manager.password",{"_index":289,"title":{},"content":{"17":{"position":[[747,34]]},"609":{"position":[[747,34]]}},"keywords":{}}],["submarine.ssl.keystore.password",{"_index":285,"title":{},"content":{"17":{"position":[[651,31]]},"609":{"position":[[651,31]]}},"keywords":{}}],["submarine.ssl.keystore.path",{"_index":275,"title":{},"content":{"17":{"position":[[478,27]]},"609":{"position":[[478,27]]}},"keywords":{}}],["submarine.ssl.keystore.typ",{"_index":279,"title":{},"content":{"17":{"position":[[569,27]]},"609":{"position":[[569,27]]}},"keywords":{}}],["submarine.ssl.truststore.password",{"_index":297,"title":{},"content":{"17":{"position":[[1114,33]]},"609":{"position":[[1114,33]]}},"keywords":{}}],["submarine.ssl.truststore.path",{"_index":292,"title":{},"content":{"17":{"position":[[854,29]]},"609":{"position":[[854,29]]}},"keywords":{}}],["submarine.ssl.truststore.typ",{"_index":294,"title":{},"content":{"17":{"position":[[980,29]]},"609":{"position":[[980,29]]}},"keywords":{}}],["submarine.submarin",{"_index":2004,"title":{},"content":{"201":{"position":[[267,19],[345,19]]},"750":{"position":[[267,19]]}},"keywords":{}}],["submarine.yaml",{"_index":3293,"title":{},"content":{"411":{"position":[[372,14]]},"869":{"position":[[1093,14]]}},"keywords":{}}],["submarine/docker/ecosyst",{"_index":2816,"title":{},"content":{"386":{"position":[[539,27]]},"913":{"position":[[539,27]]}},"keywords":{}}],["submarine/submarin",{"_index":2440,"title":{},"content":{"320":{"position":[[1241,19]]},"401":{"position":[[265,19]]},"511":{"position":[[1246,19]]},"877":{"position":[[1241,19]]},"928":{"position":[[265,19]]}},"keywords":{}}],["submarine/website/doc",{"_index":2338,"title":{},"content":{"304":{"position":[[141,23]]},"870":{"position":[[141,23]]}},"keywords":{}}],["submarine:hadoop",{"_index":2703,"title":{},"content":{"372":{"position":[[1156,16]]},"899":{"position":[[609,16]]}},"keywords":{}}],["submarine:submarin",{"_index":2694,"title":{},"content":{"372":{"position":[[641,19],[912,19],[1374,19]]},"899":{"position":[[94,19],[365,19],[827,19]]}},"keywords":{}}],["submarine==0.5.0",{"_index":701,"title":{},"content":{"71":{"position":[[460,18],[1047,18]]},"72":{"position":[[598,18]]},"73":{"position":[[620,18]]},"372":{"position":[[530,16]]},"423":{"position":[[425,18]]},"663":{"position":[[460,18],[1047,18]]},"664":{"position":[[598,18]]},"665":{"position":[[620,18]]},"950":{"position":[[425,18]]}},"keywords":{}}],["submarine==<replace_v",{"_index":3228,"title":{},"content":{"400":{"position":[[260,28]]},"927":{"position":[[260,28]]}},"keywords":{}}],["submarine\\u003d\\u003d0.5.0",{"_index":3406,"title":{},"content":{"423":{"position":[[1069,28]]},"425":{"position":[[947,28]]},"428":{"position":[[635,28]]},"434":{"position":[[638,28]]},"950":{"position":[[1069,28]]},"952":{"position":[[947,28]]},"955":{"position":[[635,28]]},"961":{"position":[[638,28]]}},"keywords":{}}],["submarine_cli",{"_index":3264,"title":{},"content":{"407":{"position":[[556,16]]},"934":{"position":[[576,16]]}},"keywords":{}}],["submarine_client.create_experiment(experiment_spec=experiment_spec",{"_index":3288,"title":{},"content":{"407":{"position":[[1317,67]]},"934":{"position":[[1337,67]]}},"keywords":{}}],["submarine_docker_imag",{"_index":1545,"title":{},"content":{"156":{"position":[[974,24],[1134,24]]},"726":{"position":[[974,24],[1134,24]]}},"keywords":{}}],["submarine_experiment_sdk.ipynb",{"_index":3289,"title":{},"content":{"407":{"position":[[1484,30]]},"934":{"position":[[1504,30]]}},"keywords":{}}],["submarine_hadoop_version=3.1",{"_index":4117,"title":{},"content":{"579":{"position":[[142,28]]},"580":{"position":[[36,28]]},"584":{"position":[[139,28]]},"585":{"position":[[36,28]]},"589":{"position":[[79,28]]},"590":{"position":[[114,28]]},"1105":{"position":[[142,28]]},"1106":{"position":[[36,28]]},"1110":{"position":[[139,28]]},"1111":{"position":[[36,28]]},"1115":{"position":[[79,28]]},"1116":{"position":[[114,28]]}},"keywords":{}}],["submarine_hadoop_version}.jar",{"_index":4122,"title":{},"content":{"579":{"position":[[258,31],[925,31]]},"580":{"position":[[152,31],[1194,31]]},"584":{"position":[[255,31],[785,31]]},"585":{"position":[[152,31],[904,31]]},"589":{"position":[[195,31],[1079,31]]},"590":{"position":[[230,31],[1100,31]]},"1105":{"position":[[258,31],[925,31]]},"1106":{"position":[[152,31],[1194,31]]},"1110":{"position":[[255,31],[785,31]]},"1111":{"position":[[152,31],[904,31]]},"1115":{"position":[[195,31],[1079,31]]},"1116":{"position":[[230,31],[1100,31]]}},"keywords":{}}],["submarine_home}/dev",{"_index":2314,"title":{},"content":{"298":{"position":[[293,21]]},"865":{"position":[[296,21]]}},"keywords":{}}],["submarine_java_opt",{"_index":241,"title":{},"content":{"16":{"position":[[290,19]]},"608":{"position":[[290,19]]}},"keywords":{}}],["submarine_m",{"_index":246,"title":{},"content":{"16":{"position":[[523,13]]},"608":{"position":[[523,13]]}},"keywords":{}}],["submarine_server_port",{"_index":2233,"title":{},"content":{"271":{"position":[[191,21]]},"842":{"position":[[191,21]]}},"keywords":{}}],["submarine_tensorboard_log_dir",{"_index":3555,"title":{},"content":{"491":{"position":[[0,30],[105,32]]},"1005":{"position":[[0,30],[105,32]]}},"keywords":{}}],["submarine_tracking_uri",{"_index":3662,"title":{},"content":{"517":{"position":[[43,22]]},"1057":{"position":[[43,22]]}},"keywords":{}}],["submarine_v",{"_index":4121,"title":{},"content":{"579":{"position":[[230,20],[897,20]]},"580":{"position":[[124,20],[1166,20],[1533,20]]},"584":{"position":[[227,20],[757,20]]},"585":{"position":[[124,20],[876,20]]},"589":{"position":[[167,20],[1051,20]]},"590":{"position":[[202,20],[1072,20]]},"1105":{"position":[[230,20],[897,20]]},"1106":{"position":[[124,20],[1166,20],[1533,20]]},"1110":{"position":[[227,20],[757,20]]},"1111":{"position":[[124,20],[876,20]]},"1115":{"position":[[167,20],[1051,20]]},"1116":{"position":[[202,20],[1072,20]]}},"keywords":{}}],["submarine_version=3.3.0",{"_index":2825,"title":{},"content":{"389":{"position":[[47,23]]},"916":{"position":[[47,23]]}},"keywords":{}}],["submarine_version=<replace_v",{"_index":4116,"title":{},"content":{"579":{"position":[[106,35]]},"580":{"position":[[0,35]]},"584":{"position":[[103,35]]},"585":{"position":[[0,35]]},"589":{"position":[[43,35]]},"590":{"position":[[78,35]]},"1105":{"position":[[106,35]]},"1106":{"position":[[0,35]]},"1110":{"position":[[103,35]]},"1111":{"position":[[0,35]]},"1115":{"position":[[43,35]]},"1116":{"position":[[78,35]]}},"keywords":{}}],["submarine_version}.jar",{"_index":4175,"title":{},"content":{"580":{"position":[[1625,25],[1681,24],[1733,25]]},"1106":{"position":[[1625,25],[1681,24],[1733,25]]}},"keywords":{}}],["submarineani",{"_index":1301,"title":{},"content":{"133":{"position":[[1977,12]]}},"keywords":{}}],["submarinecliconf",{"_index":3687,"title":{},"content":{"524":{"position":[[70,18]]}},"keywords":{}}],["submarineserv",{"_index":235,"title":{},"content":{"16":{"position":[[179,15]]},"299":{"position":[[115,16]]},"608":{"position":[[179,15]]},"866":{"position":[[115,16]]}},"keywords":{}}],["submarineservert",{"_index":2317,"title":{},"content":{"299":{"position":[[75,19]]},"866":{"position":[[75,19]]}},"keywords":{}}],["submarineus",{"_index":2313,"title":{},"content":{"298":{"position":[[261,12]]},"865":{"position":[[264,12]]}},"keywords":{}}],["submiss",{"_index":1887,"title":{},"content":{"187":{"position":[[110,11]]},"259":{"position":[[138,11]]},"272":{"position":[[161,10],[197,10]]},"770":{"position":[[110,11]]},"830":{"position":[[138,11]]},"843":{"position":[[161,10],[197,10]]}},"keywords":{}}],["submit",{"_index":1267,"title":{"186":{"position":[[6,6]]},"187":{"position":[[0,6]]},"349":{"position":[[46,6]]},"414":{"position":[[9,6]]},"417":{"position":[[3,6]]},"769":{"position":[[6,6]]},"770":{"position":[[0,6]]},"941":{"position":[[9,6]]},"944":{"position":[[3,6]]}},"content":{"133":{"position":[[168,7],[1087,6],[2578,9]]},"136":{"position":[[77,9],[112,9],[411,9]]},"144":{"position":[[221,9],[397,6],[523,6],[670,10]]},"145":{"position":[[338,10]]},"171":{"position":[[368,9]]},"179":{"position":[[1268,6]]},"188":{"position":[[7,6]]},"192":{"position":[[151,6]]},"194":{"position":[[878,6]]},"196":{"position":[[280,6],[577,6],[726,6],[811,10]]},"197":{"position":[[353,6]]},"200":{"position":[[324,6],[962,9],[1333,9]]},"213":{"position":[[156,6]]},"226":{"position":[[91,6]]},"231":{"position":[[953,6],[1051,10]]},"248":{"position":[[580,9]]},"272":{"position":[[107,10]]},"326":{"position":[[20,10]]},"349":{"position":[[438,6]]},"407":{"position":[[1599,9]]},"417":{"position":[[151,9]]},"509":{"position":[[358,10]]},"568":{"position":[[646,6]]},"591":{"position":[[56,6]]},"708":{"position":[[77,9],[112,9],[411,9]]},"714":{"position":[[221,9],[397,6],[523,6],[670,10]]},"715":{"position":[[338,10]]},"741":{"position":[[368,9]]},"749":{"position":[[1273,6]]},"762":{"position":[[156,6]]},"771":{"position":[[7,6]]},"775":{"position":[[151,6]]},"777":{"position":[[1158,6]]},"779":{"position":[[280,6],[577,6],[726,6],[811,10]]},"780":{"position":[[360,6]]},"783":{"position":[[324,6],[962,9],[1333,9]]},"794":{"position":[[1206,6],[1304,10]]},"811":{"position":[[91,6]]},"818":{"position":[[580,9]]},"843":{"position":[[107,10]]},"896":{"position":[[20,10]]},"934":{"position":[[1619,9]]},"944":{"position":[[151,9]]},"1048":{"position":[[358,10]]},"1088":{"position":[[646,6]]},"1117":{"position":[[56,6]]}},"keywords":{}}],["submit/manag",{"_index":2139,"title":{},"content":{"230":{"position":[[75,13]]},"793":{"position":[[75,13]]}},"keywords":{}}],["submit/termin",{"_index":1786,"title":{},"content":{"171":{"position":[[2227,16]]},"741":{"position":[[2240,16]]}},"keywords":{}}],["submitt",{"_index":1937,"title":{"194":{"position":[[11,9]]},"225":{"position":[[0,9]]},"777":{"position":[[11,9]]},"810":{"position":[[0,9]]}},"content":{"194":{"position":[[11,9],[410,10],[617,9],[703,9],[776,9],[845,9],[956,9],[1468,9],[1502,9]]},"195":{"position":[[346,9]]},"196":{"position":[[156,10],[688,9]]},"200":{"position":[[749,10]]},"223":{"position":[[102,9]]},"225":{"position":[[25,9],[149,9],[417,10]]},"231":{"position":[[291,9]]},"366":{"position":[[42,10]]},"777":{"position":[[11,9],[416,10],[623,9],[709,9],[782,9],[889,9],[908,9],[944,9],[1029,9],[1125,9],[1236,9],[1748,9],[1782,9]]},"778":{"position":[[346,9]]},"779":{"position":[[156,10],[688,9]]},"783":{"position":[[749,10]]},"794":{"position":[[443,9]]},"808":{"position":[[102,9]]},"810":{"position":[[25,9],[170,9],[470,10]]},"889":{"position":[[47,10]]}},"keywords":{}}],["submitter.validate(spec",{"_index":1965,"title":{},"content":{"196":{"position":[[346,24]]},"779":{"position":[[346,24]]}},"keywords":{}}],["submitterspec",{"_index":2103,"title":{},"content":{"223":{"position":[[397,14]]},"808":{"position":[[397,14]]}},"keywords":{}}],["submodul",{"_index":3742,"title":{},"content":{"553":{"position":[[1277,9]]},"580":{"position":[[1391,9]]},"1079":{"position":[[1277,9]]},"1106":{"position":[[1391,9]]}},"keywords":{}}],["subprocess",{"_index":2194,"title":{},"content":{"263":{"position":[[400,12]]},"834":{"position":[[400,12]]}},"keywords":{}}],["subproject",{"_index":988,"title":{},"content":{"107":{"position":[[1835,10],[1947,11]]},"167":{"position":[[338,10]]},"737":{"position":[[338,10]]}},"keywords":{}}],["subscrib",{"_index":1430,"title":{},"content":{"148":{"position":[[91,10],[174,10],[264,10],[334,9],[473,11],[718,9]]},"718":{"position":[[91,10],[174,10],[264,10]]}},"keywords":{}}],["subscribe@submarine.apache.org",{"_index":1435,"title":{},"content":{"148":{"position":[[395,31]]}},"keywords":{}}],["subsequ",{"_index":1934,"title":{},"content":{"192":{"position":[[128,11]]},"775":{"position":[[128,11]]}},"keywords":{}}],["subset",{"_index":3832,"title":{},"content":{"569":{"position":[[1037,8]]},"1089":{"position":[[1037,8]]}},"keywords":{}}],["subsyst",{"_index":405,"title":{},"content":{"25":{"position":[[136,11]]},"543":{"position":[[136,11]]},"613":{"position":[[136,11]]},"1069":{"position":[[136,11]]}},"keywords":{}}],["subsystem:cpu",{"_index":408,"title":{},"content":{"25":{"position":[[287,13]]},"543":{"position":[[287,13]]},"613":{"position":[[287,13]]},"1069":{"position":[[287,13]]}},"keywords":{}}],["subv",{"_index":989,"title":{},"content":{"107":{"position":[[1846,10]]},"375":{"position":[[653,10]]},"902":{"position":[[653,10]]}},"keywords":{}}],["succeed",{"_index":3572,"title":{},"content":{"499":{"position":[[81,10]]},"502":{"position":[[68,10]]},"589":{"position":[[3143,9],[3347,9],[3551,9],[3755,9],[3959,9]]},"1026":{"position":[[81,10]]},"1029":{"position":[[68,10]]},"1115":{"position":[[3143,9],[3347,9],[3551,9],[3755,9],[3959,9]]}},"keywords":{}}],["success",{"_index":717,"title":{},"content":{"74":{"position":[[496,10]]},"81":{"position":[[678,10]]},"83":{"position":[[157,10]]},"84":{"position":[[192,10]]},"93":{"position":[[1708,9]]},"94":{"position":[[622,9]]},"95":{"position":[[413,9]]},"96":{"position":[[273,9]]},"97":{"position":[[323,9]]},"103":{"position":[[159,10]]},"107":{"position":[[3588,10]]},"110":{"position":[[746,9]]},"111":{"position":[[438,9]]},"112":{"position":[[372,9]]},"113":{"position":[[274,9]]},"115":{"position":[[312,9]]},"159":{"position":[[2186,10]]},"195":{"position":[[185,7]]},"272":{"position":[[175,11]]},"333":{"position":[[72,10]]},"338":{"position":[[151,10],[191,10]]},"339":{"position":[[89,10],[133,10]]},"666":{"position":[[496,10]]},"680":{"position":[[678,10]]},"682":{"position":[[157,10]]},"683":{"position":[[192,10]]},"705":{"position":[[159,10]]},"729":{"position":[[2186,10]]},"778":{"position":[[185,7]]},"843":{"position":[[175,11]]}},"keywords":{}}],["success\":tru",{"_index":880,"title":{},"content":{"98":{"position":[[236,15]]},"100":{"position":[[415,15]]},"101":{"position":[[154,15]]},"102":{"position":[[151,15]]},"105":{"position":[[296,15]]},"106":{"position":[[228,15]]},"109":{"position":[[290,15]]},"114":{"position":[[214,15]]},"423":{"position":[[554,15]]},"425":{"position":[[103,15]]},"428":{"position":[[120,15]]},"431":{"position":[[441,15]]},"434":{"position":[[123,15]]},"438":{"position":[[595,15]]},"441":{"position":[[715,15]]},"443":{"position":[[102,15]]},"446":{"position":[[132,15]]},"449":{"position":[[626,15]]},"452":{"position":[[135,15]]},"454":{"position":[[107,15]]},"457":{"position":[[137,15]]},"461":{"position":[[1101,15]]},"463":{"position":[[100,15]]},"466":{"position":[[1127,15]]},"469":{"position":[[123,15]]},"472":{"position":[[284,15]]},"479":{"position":[[375,15]]},"482":{"position":[[136,15]]},"485":{"position":[[128,15]]},"488":{"position":[[132,15]]},"702":{"position":[[415,15]]},"703":{"position":[[154,15]]},"704":{"position":[[151,15]]},"950":{"position":[[554,15]]},"952":{"position":[[103,15]]},"955":{"position":[[120,15]]},"958":{"position":[[441,15]]},"961":{"position":[[123,15]]},"965":{"position":[[595,15]]},"968":{"position":[[715,15]]},"970":{"position":[[102,15]]},"973":{"position":[[132,15]]},"976":{"position":[[626,15]]},"979":{"position":[[135,15]]},"981":{"position":[[107,15]]},"984":{"position":[[137,15]]},"988":{"position":[[1101,15]]},"990":{"position":[[100,15]]},"993":{"position":[[1127,15]]},"996":{"position":[[123,15]]},"999":{"position":[[284,15]]},"1011":{"position":[[375,15]]},"1014":{"position":[[136,15]]},"1017":{"position":[[128,15]]},"1020":{"position":[[132,15]]}},"keywords":{}}],["successful.deploy",{"_index":2421,"title":{},"content":{"317":{"position":[[320,17]]}},"keywords":{}}],["successfulli",{"_index":1441,"title":{"333":{"position":[[37,12]]}},"content":{"148":{"position":[[753,13]]},"307":{"position":[[18,12]]},"340":{"position":[[17,12]]},"357":{"position":[[53,12]]},"417":{"position":[[138,12]]},"873":{"position":[[18,12]]},"944":{"position":[[138,12]]}},"keywords":{}}],["such",{"_index":615,"title":{},"content":{"35":{"position":[[987,4]]},"107":{"position":[[1671,4],[2278,4],[4720,4],[9472,4],[10178,4],[10414,4]]},"130":{"position":[[135,4]]},"133":{"position":[[1753,4]]},"151":{"position":[[189,5],[440,5],[787,4],[948,4]]},"154":{"position":[[43,5]]},"158":{"position":[[175,4]]},"159":{"position":[[479,4],[1838,4],[2043,5],[2246,4],[2379,4]]},"160":{"position":[[31,4]]},"161":{"position":[[609,4]]},"171":{"position":[[784,4],[860,4]]},"172":{"position":[[185,5],[317,5]]},"175":{"position":[[253,5]]},"176":{"position":[[295,5],[326,4],[453,4]]},"179":{"position":[[1048,4],[1304,4]]},"181":{"position":[[1365,4],[1674,4]]},"184":{"position":[[37,4]]},"193":{"position":[[427,4]]},"194":{"position":[[161,4],[1192,4]]},"200":{"position":[[1177,4]]},"204":{"position":[[319,4]]},"210":{"position":[[259,5]]},"215":{"position":[[1146,4],[1203,4],[1399,5],[1741,4],[2074,4]]},"217":{"position":[[2393,4]]},"218":{"position":[[352,4]]},"222":{"position":[[101,4]]},"223":{"position":[[137,4]]},"224":{"position":[[325,4],[410,4]]},"225":{"position":[[61,4],[510,4]]},"226":{"position":[[173,4]]},"229":{"position":[[1373,4],[1414,5]]},"248":{"position":[[165,4],[320,4]]},"261":{"position":[[330,4]]},"368":{"position":[[212,4]]},"369":{"position":[[505,4]]},"403":{"position":[[252,4]]},"591":{"position":[[193,4]]},"627":{"position":[[987,4]]},"698":{"position":[[135,4]]},"721":{"position":[[189,5],[440,5],[787,4],[948,4]]},"724":{"position":[[43,5]]},"728":{"position":[[175,4]]},"729":{"position":[[479,4],[1838,4],[2043,5],[2246,4],[2379,4]]},"730":{"position":[[31,4]]},"731":{"position":[[609,4]]},"741":{"position":[[789,4],[865,4]]},"742":{"position":[[185,5],[317,5]]},"745":{"position":[[253,5]]},"746":{"position":[[296,5],[327,4],[454,4]]},"749":{"position":[[1053,4],[1309,4]]},"753":{"position":[[319,4]]},"759":{"position":[[259,5]]},"764":{"position":[[1371,4],[1682,4]]},"767":{"position":[[37,4]]},"776":{"position":[[427,4]]},"777":{"position":[[161,4],[1472,4]]},"783":{"position":[[1177,4]]},"785":{"position":[[1146,4],[1203,4],[1399,5],[1741,4],[2074,4]]},"787":{"position":[[2393,4]]},"788":{"position":[[352,4]]},"792":{"position":[[1374,4],[1416,5]]},"807":{"position":[[101,4]]},"808":{"position":[[137,4]]},"809":{"position":[[325,4],[410,4]]},"810":{"position":[[61,4],[563,4]]},"811":{"position":[[173,4]]},"818":{"position":[[165,4],[320,4]]},"832":{"position":[[330,4]]},"891":{"position":[[212,4]]},"892":{"position":[[505,4]]},"930":{"position":[[252,4]]},"1117":{"position":[[193,4]]}},"keywords":{}}],["sudo",{"_index":2724,"title":{},"content":{"375":{"position":[[535,4]]},"389":{"position":[[1175,5],[1225,4]]},"391":{"position":[[504,4]]},"902":{"position":[[535,4]]},"916":{"position":[[1175,5],[1225,4]]},"918":{"position":[[504,4]]}},"keywords":{}}],["suffici",{"_index":1332,"title":{},"content":{"136":{"position":[[257,10]]},"708":{"position":[[257,10]]}},"keywords":{}}],["sugg",{"_index":971,"title":{},"content":{"107":{"position":[[1282,12]]},"389":{"position":[[2424,9],[18266,9]]},"916":{"position":[[2424,9],[18266,9]]}},"keywords":{}}],["suggestionsreview",{"_index":1291,"title":{},"content":{"133":{"position":[[1670,17]]}},"keywords":{}}],["suit",{"_index":73,"title":{},"content":{"6":{"position":[[230,6]]},"144":{"position":[[169,6]]},"510":{"position":[[45,6]]},"595":{"position":[[230,6]]},"714":{"position":[[169,6]]},"1049":{"position":[[45,6]]}},"keywords":{}}],["suitabl",{"_index":653,"title":{},"content":{"35":{"position":[[3226,8]]},"130":{"position":[[99,8],[228,11]]},"261":{"position":[[517,8]]},"627":{"position":[[3226,8]]},"698":{"position":[[99,8],[228,11]]},"832":{"position":[[517,8]]}},"keywords":{}}],["summar",{"_index":1386,"title":{"190":{"position":[[0,10]]},"773":{"position":[[0,10]]}},"content":{"141":{"position":[[1058,9]]}},"keywords":{}}],["summari",{"_index":734,"title":{"505":{"position":[[0,7]]},"1044":{"position":[[0,7]]}},"content":{"77":{"position":[[388,9],[1146,9]]},"79":{"position":[[655,9]]},"80":{"position":[[688,9]]},"81":{"position":[[396,9],[999,9]]},"82":{"position":[[691,9]]},"86":{"position":[[1028,9]]},"89":{"position":[[1025,9]]},"141":{"position":[[1143,7],[1217,7]]},"223":{"position":[[248,9]]},"350":{"position":[[362,7]]},"438":{"position":[[354,9],[1263,9]]},"443":{"position":[[855,9]]},"449":{"position":[[355,9],[1294,9]]},"452":{"position":[[775,9]]},"461":{"position":[[996,9],[2652,9]]},"463":{"position":[[1654,9]]},"466":{"position":[[1001,9],[2682,9]]},"469":{"position":[[1678,9]]},"472":{"position":[[953,9]]},"492":{"position":[[335,9]]},"496":{"position":[[573,9]]},"497":{"position":[[580,9]]},"669":{"position":[[1028,9]]},"672":{"position":[[1025,9]]},"676":{"position":[[388,9],[1146,9]]},"678":{"position":[[655,9]]},"679":{"position":[[688,9]]},"680":{"position":[[396,9],[999,9]]},"681":{"position":[[691,9]]},"808":{"position":[[248,9]]},"965":{"position":[[354,9],[1263,9]]},"970":{"position":[[855,9]]},"976":{"position":[[355,9],[1294,9]]},"979":{"position":[[775,9]]},"988":{"position":[[996,9],[2652,9]]},"990":{"position":[[1654,9]]},"993":{"position":[[1001,9],[2682,9]]},"996":{"position":[[1678,9]]},"999":{"position":[[953,9]]},"1006":{"position":[[335,9]]},"1023":{"position":[[573,9]]},"1024":{"position":[[580,9]]}},"keywords":{}}],["support",{"_index":586,"title":{"198":{"position":[[0,7]]},"369":{"position":[[8,7]]},"781":{"position":[[0,7]]},"892":{"position":[[9,7]]}},"content":{"35":{"position":[[181,8]]},"74":{"position":[[1036,10]]},"89":{"position":[[1241,10]]},"107":{"position":[[1395,7]]},"154":{"position":[[169,7]]},"162":{"position":[[478,7]]},"167":{"position":[[420,7]]},"168":{"position":[[138,8]]},"175":{"position":[[202,7]]},"182":{"position":[[833,7]]},"193":{"position":[[155,8]]},"194":{"position":[[296,7],[392,7],[1132,7]]},"213":{"position":[[421,7]]},"219":{"position":[[478,7]]},"222":{"position":[[55,7]]},"224":{"position":[[209,10]]},"225":{"position":[[165,8],[428,8]]},"246":{"position":[[512,7],[613,7]]},"252":{"position":[[85,7]]},"263":{"position":[[452,7]]},"352":{"position":[[1571,8]]},"361":{"position":[[62,7]]},"375":{"position":[[238,8],[373,8]]},"376":{"position":[[152,8]]},"383":{"position":[[14,7]]},"403":{"position":[[19,8]]},"437":{"position":[[1169,7]]},"505":{"position":[[0,7],[60,7]]},"520":{"position":[[81,7]]},"549":{"position":[[210,8],[358,8],[502,7],[735,8]]},"550":{"position":[[179,8],[269,8]]},"553":{"position":[[214,8],[361,8]]},"554":{"position":[[189,8]]},"559":{"position":[[220,8],[360,8]]},"560":{"position":[[203,8],[316,8],[434,8],[571,8]]},"569":{"position":[[1867,10]]},"591":{"position":[[24,8],[95,10],[374,7]]},"627":{"position":[[181,8]]},"666":{"position":[[1036,10]]},"672":{"position":[[1241,10]]},"724":{"position":[[169,7]]},"732":{"position":[[478,7]]},"737":{"position":[[420,7]]},"738":{"position":[[138,8]]},"741":{"position":[[1192,7]]},"745":{"position":[[202,7]]},"762":{"position":[[421,7]]},"765":{"position":[[833,7]]},"776":{"position":[[155,8]]},"777":{"position":[[302,7],[398,7],[1093,8],[1412,7]]},"789":{"position":[[478,7]]},"807":{"position":[[55,7]]},"809":{"position":[[209,10]]},"810":{"position":[[186,8],[481,8]]},"816":{"position":[[512,7],[618,7]]},"822":{"position":[[90,7]]},"834":{"position":[[452,7]]},"883":{"position":[[62,7]]},"902":{"position":[[238,8],[373,8]]},"903":{"position":[[152,8]]},"910":{"position":[[14,7]]},"930":{"position":[[19,8]]},"964":{"position":[[1169,7]]},"1044":{"position":[[0,7],[60,7]]},"1075":{"position":[[210,8],[358,8],[502,7],[735,8]]},"1076":{"position":[[179,8],[269,8]]},"1079":{"position":[[214,8],[361,8]]},"1080":{"position":[[189,8]]},"1089":{"position":[[1867,10]]},"1094":{"position":[[220,8],[360,8]]},"1095":{"position":[[203,8],[316,8],[434,8],[571,8]]},"1117":{"position":[[24,8],[95,10],[374,7]]}},"keywords":{}}],["support/cicd",{"_index":1360,"title":{},"content":{"138":{"position":[[270,12]]},"710":{"position":[[270,12]]}},"keywords":{}}],["support/dock",{"_index":2273,"title":{},"content":{"281":{"position":[[400,14],[484,14]]},"300":{"position":[[401,14]]},"302":{"position":[[147,14]]},"852":{"position":[[400,14],[484,14]]},"867":{"position":[[401,14]]},"869":{"position":[[147,14]]}},"keywords":{}}],["support/examples/quickstart/build.sh",{"_index":3387,"title":{},"content":{"416":{"position":[[105,36]]},"943":{"position":[[79,36]]}},"keywords":{}}],["support/examples/quickstart/train.pi",{"_index":3321,"title":{},"content":{"415":{"position":[[130,36]]},"942":{"position":[[130,36]]}},"keywords":{}}],["support/mav",{"_index":1257,"title":{},"content":{"132":{"position":[[123,13]]},"298":{"position":[[315,13]]},"700":{"position":[[123,13]]},"865":{"position":[[318,13]]}},"keywords":{}}],["support/nf",{"_index":2790,"title":{},"content":{"383":{"position":[[770,11]]},"910":{"position":[[770,11]]}},"keywords":{}}],["support/pysubmarine/g",{"_index":3639,"title":{},"content":{"511":{"position":[[1088,23]]},"1050":{"position":[[148,23]]}},"keywords":{}}],["support/styl",{"_index":3593,"title":{},"content":{"507":{"position":[[290,13],[397,13]]},"509":{"position":[[135,13],[402,13]]},"1046":{"position":[[282,13],[397,13]]},"1048":{"position":[[135,13],[402,13]]}},"keywords":{}}],["support?0.5.x",{"_index":2290,"title":{},"content":{"286":{"position":[[13,13]]},"857":{"position":[[13,13]]}},"keywords":{}}],["support?1.13.x",{"_index":4227,"title":{},"content":{"856":{"position":[[19,14]]}},"keywords":{}}],["support?1.14.x",{"_index":2285,"title":{},"content":{"285":{"position":[[19,14]]}},"keywords":{}}],["support?1.15",{"_index":2301,"title":{},"content":{"292":{"position":[[11,12]]}},"keywords":{}}],["support?3.5",{"_index":2304,"title":{},"content":{"293":{"position":[[15,11]]}},"keywords":{}}],["support?8",{"_index":2297,"title":{},"content":{"287":{"position":[[12,9]]}},"keywords":{}}],["sur",{"_index":16,"title":{},"content":{"1":{"position":[[124,4],[307,4]]},"105":{"position":[[40,4]]},"127":{"position":[[66,4]]},"129":{"position":[[61,4]]},"156":{"position":[[493,4],[553,4]]},"182":{"position":[[684,4]]},"281":{"position":[[211,4]]},"300":{"position":[[88,4]]},"301":{"position":[[81,4]]},"305":{"position":[[51,4]]},"307":{"position":[[5,4]]},"320":{"position":[[1180,4]]},"339":{"position":[[30,4]]},"350":{"position":[[12,4]]},"355":{"position":[[12,4]]},"357":{"position":[[12,4]]},"389":{"position":[[14896,4],[30445,4]]},"398":{"position":[[409,4]]},"406":{"position":[[1007,4]]},"412":{"position":[[67,4]]},"510":{"position":[[332,4]]},"570":{"position":[[361,4],[9858,4]]},"578":{"position":[[290,4]]},"601":{"position":[[124,4],[307,4]]},"695":{"position":[[66,4]]},"697":{"position":[[61,4]]},"726":{"position":[[493,4],[553,4]]},"765":{"position":[[684,4]]},"852":{"position":[[211,4]]},"867":{"position":[[88,4]]},"868":{"position":[[65,4]]},"869":{"position":[[476,4]]},"871":{"position":[[51,4]]},"873":{"position":[[5,4]]},"877":{"position":[[1180,4]]},"916":{"position":[[14896,4],[30445,4]]},"925":{"position":[[409,4]]},"933":{"position":[[658,4]]},"939":{"position":[[69,4]]},"1049":{"position":[[332,4]]},"1090":{"position":[[361,4],[9858,4]]},"1104":{"position":[[290,4]]}},"keywords":{}}],["sustain",{"_index":977,"title":{},"content":{"107":{"position":[[1558,10],[2946,9]]}},"keywords":{}}],["svc",{"_index":2122,"title":{},"content":{"229":{"position":[[103,3]]},"792":{"position":[[103,3]]}},"keywords":{}}],["svc/prxi",{"_index":2121,"title":{},"content":{"229":{"position":[[84,9]]},"792":{"position":[[84,9]]}},"keywords":{}}],["svm",{"_index":1981,"title":{},"content":{"199":{"position":[[1126,3]]},"782":{"position":[[1126,3]]}},"keywords":{}}],["svn",{"_index":2347,"title":{"349":{"position":[[63,3]]}},"content":{"311":{"position":[[0,3]]},"334":{"position":[[0,3],[34,3],[120,3],[292,3],[473,3],[824,3],[909,3],[1148,3],[1515,3],[1604,3]]},"347":{"position":[[30,4],[39,3]]},"348":{"position":[[88,3],[170,3]]},"349":{"position":[[250,3],[269,3],[281,3],[331,3],[344,3],[363,3],[375,3],[448,3]]}},"keywords":{}}],["swagg",{"_index":2142,"title":{"511":{"position":[[25,7]]},"1050":{"position":[[25,7]]}},"content":{"230":{"position":[[935,7],[1006,7]]},"508":{"position":[[95,8]]},"793":{"position":[[935,7],[1006,7]]},"1047":{"position":[[95,8]]}},"keywords":{}}],["swagger_config.json",{"_index":3634,"title":{},"content":{"511":{"position":[[840,19]]}},"keywords":{}}],["swaggerconfigur",{"_index":3625,"title":{},"content":{"511":{"position":[[297,20],[334,22]]}},"keywords":{}}],["switch",{"_index":176,"title":{},"content":{"12":{"position":[[163,6]]},"161":{"position":[[425,8]]},"168":{"position":[[243,9]]},"275":{"position":[[260,9]]},"300":{"position":[[279,6]]},"302":{"position":[[25,6]]},"604":{"position":[[163,6]]},"731":{"position":[[425,8]]},"738":{"position":[[243,9]]},"846":{"position":[[260,9]]},"867":{"position":[[279,6]]},"869":{"position":[[25,6]]}},"keywords":{}}],["sync",{"_index":394,"title":{"125":{"position":[[7,7]]},"693":{"position":[[7,7]]}},"content":{"23":{"position":[[1025,4]]},"143":{"position":[[348,4]]},"217":{"position":[[1304,6],[2060,4],[2341,4],[2356,4]]},"437":{"position":[[1295,4]]},"460":{"position":[[1410,4]]},"541":{"position":[[1025,4]]},"570":{"position":[[154,4],[553,4],[9728,4],[10050,4]]},"572":{"position":[[36,4]]},"580":{"position":[[744,5]]},"611":{"position":[[1025,4]]},"713":{"position":[[233,4]]},"787":{"position":[[1304,6],[2060,4],[2341,4],[2356,4]]},"964":{"position":[[1295,4]]},"987":{"position":[[1410,4]]},"1067":{"position":[[1025,4]]},"1090":{"position":[[154,4],[553,4],[9728,4],[10050,4]]},"1092":{"position":[[36,4]]},"1106":{"position":[[744,5]]}},"keywords":{}}],["sync_mod",{"_index":1863,"title":{},"content":{"182":{"position":[[292,10],[853,9],[1266,10]]},"217":{"position":[[1485,10]]},"765":{"position":[[292,10],[853,9],[1266,10]]},"787":{"position":[[1485,10]]}},"keywords":{}}],["synchron",{"_index":1222,"title":{"275":{"position":[[0,11]]},"846":{"position":[[0,11]]}},"content":{"125":{"position":[[118,11]]},"275":{"position":[[150,11]]},"332":{"position":[[444,12]]},"355":{"position":[[416,11]]},"693":{"position":[[118,11]]},"846":{"position":[[150,11]]}},"keywords":{}}],["sys/fs/cgroup/cpu,cpuacct",{"_index":430,"title":{},"content":{"25":{"position":[[1770,27],[1865,26],[1907,26]]},"543":{"position":[[1770,27],[1865,26],[1907,26]]},"613":{"position":[[1770,27],[1865,26],[1907,26]]},"1069":{"position":[[1770,27],[1865,26],[1907,26]]}},"keywords":{}}],["sys/fs/cgroup/devic",{"_index":441,"title":{},"content":{"25":{"position":[[2024,22],[2062,22]]},"543":{"position":[[2024,22],[2062,22]]},"613":{"position":[[2024,22],[2062,22]]},"1069":{"position":[[2024,22],[2062,22]]}},"keywords":{}}],["syst",{"_index":260,"title":{"25":{"position":[[41,6]]},"218":{"position":[[0,6]]},"266":{"position":[[0,6]]},"543":{"position":[[41,6]]},"613":{"position":[[41,6]]},"788":{"position":[[0,6]]},"837":{"position":[[0,6]]},"1069":{"position":[[41,6]]}},"content":{"17":{"position":[[70,6]]},"35":{"position":[[527,6]]},"152":{"position":[[527,7]]},"153":{"position":[[48,6]]},"155":{"position":[[224,7]]},"176":{"position":[[76,7],[519,6],[727,7],[948,6],[1257,6]]},"177":{"position":[[193,6]]},"194":{"position":[[226,7],[683,6],[1170,6],[1393,6]]},"195":{"position":[[286,7]]},"197":{"position":[[214,7]]},"215":{"position":[[1188,6]]},"218":{"position":[[39,6],[200,6],[344,7],[390,6],[507,6],[542,6]]},"246":{"position":[[347,7],[557,8]]},"248":{"position":[[460,6],[626,6]]},"252":{"position":[[115,6],[228,6]]},"259":{"position":[[14,6]]},"265":{"position":[[333,7],[357,6]]},"267":{"position":[[69,7]]},"369":{"position":[[489,6]]},"383":{"position":[[596,8]]},"403":{"position":[[243,8]]},"569":{"position":[[1832,7]]},"609":{"position":[[70,6]]},"627":{"position":[[527,6]]},"722":{"position":[[527,7]]},"723":{"position":[[48,6]]},"725":{"position":[[224,7]]},"746":{"position":[[76,7],[520,6],[728,7],[951,6],[1260,6]]},"747":{"position":[[193,6]]},"777":{"position":[[226,7],[689,6],[1450,6],[1673,6]]},"778":{"position":[[286,7]]},"780":{"position":[[220,7]]},"785":{"position":[[1188,6]]},"788":{"position":[[39,6],[200,6],[344,7],[390,6],[507,6],[542,6]]},"816":{"position":[[347,7],[562,8]]},"818":{"position":[[460,6],[626,6]]},"822":{"position":[[120,6],[233,6]]},"830":{"position":[[14,6]]},"836":{"position":[[333,7],[357,6]]},"838":{"position":[[69,7]]},"892":{"position":[[489,6]]},"910":{"position":[[596,8]]},"930":{"position":[[243,8]]},"1089":{"position":[[1832,7]]}},"keywords":{}}],["systemd",{"_index":3119,"title":{},"content":{"389":{"position":[[13108,7],[17455,7],[28657,7],[32309,7]]},"916":{"position":[[13108,7],[17455,7],[28657,7],[32309,7]]}},"keywords":{}}],["t",{"_index":2010,"title":{},"content":{"204":{"position":[[233,1]]},"753":{"position":[[233,1]]}},"keywords":{}}],["tab",{"_index":578,"title":{},"content":{"34":{"position":[[37,3],[87,3]]},"54":{"position":[[16,3],[27,3]]},"139":{"position":[[538,3]]},"350":{"position":[[370,3]]},"406":{"position":[[71,3]]},"626":{"position":[[37,3],[87,3]]},"646":{"position":[[16,3],[27,3]]},"711":{"position":[[538,3]]},"933":{"position":[[71,3]]}},"keywords":{}}],["tabhit",{"_index":1368,"title":{},"content":{"139":{"position":[[523,6]]},"711":{"position":[[523,6]]}},"keywords":{}}],["tabl",{"_index":208,"title":{},"content":{"14":{"position":[[176,5],[277,6],[289,7],[321,5]]},"160":{"position":[[252,6]]},"606":{"position":[[176,5],[277,6],[289,7],[321,5]]},"730":{"position":[[252,6]]}},"keywords":{}}],["tag",{"_index":596,"title":{"97":{"position":[[23,3]]},"98":{"position":[[23,3]]},"114":{"position":[[26,3]]},"115":{"position":[[26,3]]},"339":{"position":[[15,3]]},"346":{"position":[[15,3]]}},"content":{"35":{"position":[[408,3],[440,4]]},"55":{"position":[[184,12],[211,3]]},"93":{"position":[[552,6],[915,6],[1279,6],[1643,6]]},"94":{"position":[[560,6]]},"97":{"position":[[274,3]]},"98":{"position":[[289,3]]},"109":{"position":[[164,7]]},"110":{"position":[[376,6],[555,6],[712,6]]},"111":{"position":[[392,6]]},"114":{"position":[[267,3]]},"115":{"position":[[263,3]]},"173":{"position":[[158,4]]},"177":{"position":[[21,3]]},"339":{"position":[[20,4],[170,3],[238,3],[257,8]]},"340":{"position":[[10,3],[43,3]]},"352":{"position":[[409,3]]},"372":{"position":[[69,4],[616,4],[887,4]]},"627":{"position":[[408,3],[440,4]]},"647":{"position":[[184,12],[211,3]]},"743":{"position":[[159,4]]},"747":{"position":[[21,3]]},"899":{"position":[[69,4],[340,4]]}},"keywords":{}}],["tag/branch",{"_index":3231,"title":{},"content":{"401":{"position":[[250,11]]},"928":{"position":[[250,11]]}},"keywords":{}}],["tags:us",{"_index":595,"title":{},"content":{"35":{"position":[[393,10]]},"627":{"position":[[393,10]]}},"keywords":{}}],["tak",{"_index":1071,"title":{},"content":{"107":{"position":[[5980,4],[6248,4],[7481,4]]},"148":{"position":[[329,4]]},"161":{"position":[[195,4]]},"175":{"position":[[366,4]]},"246":{"position":[[44,6]]},"333":{"position":[[99,4]]},"355":{"position":[[371,5]]},"380":{"position":[[235,4]]},"389":{"position":[[16494,4],[16625,4],[16758,4],[16894,4],[31348,4],[31479,4],[31612,4],[31748,4]]},"415":{"position":[[0,4]]},"568":{"position":[[118,4]]},"578":{"position":[[763,4]]},"731":{"position":[[195,4]]},"745":{"position":[[366,4]]},"816":{"position":[[44,6]]},"907":{"position":[[235,4]]},"916":{"position":[[16494,4],[16625,4],[16758,4],[16894,4],[31348,4],[31479,4],[31612,4],[31748,4]]},"942":{"position":[[0,4]]},"1088":{"position":[[118,4]]},"1104":{"position":[[763,4]]}},"keywords":{}}],["talk",{"_index":29,"title":{},"content":{"2":{"position":[[19,4]]},"159":{"position":[[10,5]]},"161":{"position":[[63,7]]},"163":{"position":[[202,6]]},"181":{"position":[[14,5],[2154,4]]},"190":{"position":[[142,4]]},"212":{"position":[[146,4]]},"407":{"position":[[71,4]]},"602":{"position":[[19,4]]},"729":{"position":[[10,5]]},"731":{"position":[[63,7]]},"733":{"position":[[202,6]]},"761":{"position":[[146,4]]},"764":{"position":[[14,5],[2167,4]]},"773":{"position":[[142,4]]},"888":{"position":[[42,7]]},"934":{"position":[[71,4]]}},"keywords":{}}],["tar",{"_index":2586,"title":{},"content":{"340":{"position":[[85,3]]},"341":{"position":[[150,3]]},"345":{"position":[[95,3]]},"375":{"position":[[1439,3]]},"398":{"position":[[370,3]]},"549":{"position":[[1466,3]]},"553":{"position":[[1864,3]]},"559":{"position":[[1501,3]]},"578":{"position":[[251,3]]},"583":{"position":[[248,3]]},"588":{"position":[[246,3]]},"902":{"position":[[1439,3]]},"925":{"position":[[370,3]]},"1075":{"position":[[1466,3]]},"1079":{"position":[[1864,3]]},"1094":{"position":[[1501,3]]},"1104":{"position":[[251,3]]},"1109":{"position":[[248,3]]},"1114":{"position":[[246,3]]}},"keywords":{}}],["tar.gz",{"_index":2390,"title":{},"content":{"314":{"position":[[1894,9]]},"315":{"position":[[106,9]]},"342":{"position":[[9,9],[103,9]]},"343":{"position":[[71,9]]}},"keywords":{}}],["tar.gz.sha512",{"_index":2410,"title":{},"content":{"315":{"position":[[494,16]]}},"keywords":{}}],["tarbal",{"_index":1930,"title":{},"content":{"190":{"position":[[667,7]]},"216":{"position":[[654,7]]},"217":{"position":[[918,7]]},"773":{"position":[[667,7]]},"786":{"position":[[654,7]]},"787":{"position":[[918,7]]}},"keywords":{}}],["target",{"_index":3889,"title":{},"content":{"570":{"position":[[1982,7],[11399,7],[17506,7]]},"1090":{"position":[[1982,7],[11399,7],[17506,7]]}},"keywords":{}}],["target_databas",{"_index":211,"title":{},"content":{"14":{"position":[[245,19]]},"606":{"position":[[245,19]]}},"keywords":{}}],["target_t",{"_index":213,"title":{},"content":{"14":{"position":[[341,16]]},"606":{"position":[[341,16]]}},"keywords":{}}],["task",{"_index":557,"title":{"226":{"position":[[0,4]]},"811":{"position":[[0,4]]}},"content":{"33":{"position":[[88,4]]},"107":{"position":[[866,5]]},"165":{"position":[[75,5],[228,5]]},"171":{"position":[[39,5],[218,6],[298,5],[673,5]]},"181":{"position":[[278,5],[943,4],[1253,6],[1281,5],[1634,5],[1769,6],[1836,7]]},"190":{"position":[[104,4]]},"215":{"position":[[1100,5]]},"217":{"position":[[1939,4]]},"219":{"position":[[341,6]]},"223":{"position":[[121,4]]},"224":{"position":[[387,4],[480,4],[553,4]]},"226":{"position":[[17,4],[32,5],[122,5],[587,4],[648,4],[700,5]]},"248":{"position":[[702,5]]},"437":{"position":[[1018,4],[1035,4]]},"460":{"position":[[1231,4],[1248,4]]},"569":{"position":[[316,5],[514,7],[711,5],[1186,4],[1195,4],[1322,4],[1549,7]]},"572":{"position":[[662,6]]},"579":{"position":[[1087,5],[1288,5],[1489,5],[2123,5],[2321,5],[2523,5]]},"584":{"position":[[947,5],[1148,5],[1349,5],[1983,5],[2181,5],[2383,5]]},"589":{"position":[[1241,4],[1443,4],[1645,4],[1847,4],[2049,4],[2992,4],[3199,4],[3403,4],[3607,4],[3811,4]]},"625":{"position":[[88,4]]},"735":{"position":[[75,5],[228,5]]},"741":{"position":[[39,5],[218,6],[298,5],[678,5]]},"764":{"position":[[278,5],[943,4],[1259,6],[1287,5],[1642,5],[1782,6],[1849,7]]},"773":{"position":[[104,4]]},"785":{"position":[[1100,5]]},"787":{"position":[[1939,4]]},"789":{"position":[[341,6]]},"808":{"position":[[121,4]]},"809":{"position":[[387,4],[480,4],[553,4]]},"811":{"position":[[17,4],[32,5],[122,5],[587,4],[648,4],[700,5]]},"818":{"position":[[702,5]]},"964":{"position":[[1018,4],[1035,4]]},"987":{"position":[[1231,4],[1248,4]]},"1089":{"position":[[316,5],[514,7],[711,5],[1186,4],[1195,4],[1322,4],[1549,7]]},"1092":{"position":[[662,6]]},"1105":{"position":[[1087,5],[1288,5],[1489,5],[2123,5],[2321,5],[2523,5]]},"1110":{"position":[[947,5],[1148,5],[1349,5],[1983,5],[2181,5],[2383,5]]},"1115":{"position":[[1241,4],[1443,4],[1645,4],[1847,4],[2049,4],[2992,4],[3199,4],[3403,4],[3607,4],[3811,4]]}},"keywords":{}}],["task/servic",{"_index":1970,"title":{},"content":{"197":{"position":[[161,12]]},"780":{"position":[[167,12]]}},"keywords":{}}],["taskinfo",{"_index":4140,"title":{},"content":{"579":{"position":[[1109,10],[1310,10],[1511,10],[2145,10],[2343,10],[2545,10]]},"584":{"position":[[969,10],[1170,10],[1371,10],[2005,10],[2203,10],[2405,10]]},"589":{"position":[[1262,10],[1464,10],[1666,10],[1868,10],[2070,10],[3013,10],[3220,10],[3424,10],[3628,10],[3832,10]]},"1105":{"position":[[1109,10],[1310,10],[1511,10],[2145,10],[2343,10],[2545,10]]},"1110":{"position":[[969,10],[1170,10],[1371,10],[2005,10],[2203,10],[2405,10]]},"1115":{"position":[[1262,10],[1464,10],[1666,10],[1868,10],[2070,10],[3013,10],[3220,10],[3424,10],[3628,10],[3832,10]]}},"keywords":{}}],["taskspec",{"_index":2104,"title":{},"content":{"223":{"position":[[447,10]]},"226":{"position":[[182,10]]},"808":{"position":[[447,10]]},"811":{"position":[[182,10]]}},"keywords":{}}],["tcp",{"_index":332,"title":{},"content":{"20":{"position":[[601,3],[714,3]]},"620":{"position":[[601,3],[714,3]]}},"keywords":{}}],["tcsh",{"_index":2892,"title":{},"content":{"389":{"position":[[2413,4],[3305,4],[5728,4],[11102,5],[11171,4],[15366,4],[18255,4],[19129,4],[21552,4],[26820,5],[26889,4],[30915,4]]},"916":{"position":[[2413,4],[3305,4],[5728,4],[11102,5],[11171,4],[15366,4],[18255,4],[19129,4],[21552,4],[26820,5],[26889,4],[30915,4]]}},"keywords":{}}],["tcsh_6.18.01",{"_index":3101,"title":{},"content":{"389":{"position":[[11128,16],[26846,16]]},"916":{"position":[[11128,16],[26846,16]]}},"keywords":{}}],["team",{"_index":635,"title":{"38":{"position":[[0,4]]},"46":{"position":[[0,4]]},"58":{"position":[[0,4]]},"66":{"position":[[0,4]]},"630":{"position":[[0,4]]},"638":{"position":[[0,4]]},"650":{"position":[[0,4]]},"658":{"position":[[0,4]]}},"content":{"35":{"position":[[1702,4],[1727,4],[1744,4],[1789,4],[2096,4],[2161,5],[2188,4],[2405,5],[2432,4],[2660,5],[2687,4]]},"55":{"position":[[747,37],[925,4],[984,4],[1099,4],[1223,4]]},"141":{"position":[[443,4],[1942,4]]},"152":{"position":[[245,4]]},"158":{"position":[[97,4],[130,6],[137,5],[276,5]]},"160":{"position":[[636,4],[666,4],[712,4]]},"176":{"position":[[623,5],[843,6],[1306,6]]},"182":{"position":[[264,5],[646,5],[1091,5],[1186,5]]},"217":{"position":[[1438,5]]},"627":{"position":[[1702,4],[1727,4],[1744,4],[1789,4],[2096,4],[2161,5],[2188,4],[2405,5],[2432,4],[2660,5],[2687,4]]},"647":{"position":[[747,37],[925,4],[984,4],[1099,4],[1223,4]]},"722":{"position":[[245,4]]},"728":{"position":[[97,4],[130,6],[137,5],[276,5]]},"730":{"position":[[636,4],[666,4],[712,4]]},"746":{"position":[[624,5],[845,6],[1309,6]]},"765":{"position":[[264,5],[646,5],[1091,5],[1186,5]]},"787":{"position":[[1438,5]]}},"keywords":{}}],["team.resourc",{"_index":1827,"title":{},"content":{"176":{"position":[[1226,13]]},"746":{"position":[[1229,13]]}},"keywords":{}}],["team_default_python_3.7",{"_index":691,"title":{},"content":{"71":{"position":[[192,26],[779,26]]},"72":{"position":[[330,26]]},"73":{"position":[[352,26]]},"100":{"position":[[986,26]]},"101":{"position":[[728,26]]},"102":{"position":[[719,26]]},"103":{"position":[[779,26]]},"154":{"position":[[928,23]]},"423":{"position":[[157,26]]},"663":{"position":[[192,26],[779,26]]},"664":{"position":[[330,26]]},"665":{"position":[[352,26]]},"702":{"position":[[986,26]]},"703":{"position":[[728,26]]},"704":{"position":[[719,26]]},"705":{"position":[[779,26]]},"724":{"position":[[928,23]]},"950":{"position":[[157,26]]}},"keywords":{}}],["team_default_python_3.7_upd",{"_index":716,"title":{},"content":{"74":{"position":[[202,34],[692,34]]},"75":{"position":[[355,34]]},"431":{"position":[[158,34]]},"666":{"position":[[202,34],[692,34]]},"667":{"position":[[355,34]]},"958":{"position":[[158,34]]}},"keywords":{}}],["team_miniconda_python_3.7",{"_index":712,"title":{},"content":{"72":{"position":[[814,28]]},"664":{"position":[[814,28]]}},"keywords":{}}],["technic",{"_index":987,"title":{},"content":{"107":{"position":[[1783,9],[1912,9],[7123,9]]}},"keywords":{}}],["telepr",{"_index":3646,"title":{},"content":{"512":{"position":[[72,13],[197,12],[249,12]]},"1051":{"position":[[72,13],[185,12],[237,12]]}},"keywords":{}}],["templ",{"_index":1987,"title":{},"content":{"200":{"position":[[585,5]]},"783":{"position":[[585,5]]}},"keywords":{}}],["templat",{"_index":647,"title":{"85":{"position":[[11,8]]},"86":{"position":[[18,8]]},"87":{"position":[[16,8]]},"88":{"position":[[15,8]]},"89":{"position":[[6,8]]},"90":{"position":[[7,8]]},"91":{"position":[[4,8]]},"198":{"position":[[30,9]]},"199":{"position":[[22,8]]},"200":{"position":[[29,8]]},"458":{"position":[[11,8]]},"459":{"position":[[18,8]]},"462":{"position":[[16,8]]},"464":{"position":[[17,8]]},"467":{"position":[[18,8]]},"470":{"position":[[4,8]]},"668":{"position":[[11,8]]},"669":{"position":[[18,8]]},"670":{"position":[[16,8]]},"671":{"position":[[15,8]]},"672":{"position":[[6,8]]},"673":{"position":[[7,8]]},"674":{"position":[[4,8]]},"781":{"position":[[30,9]]},"782":{"position":[[22,8]]},"783":{"position":[[29,8]]},"985":{"position":[[11,8]]},"986":{"position":[[18,8]]},"989":{"position":[[16,8]]},"991":{"position":[[17,8]]},"994":{"position":[[18,8]]},"997":{"position":[[4,8]]}},"content":{"35":{"position":[[2962,9],[2990,9],[3103,8]]},"55":{"position":[[1371,9]]},"86":{"position":[[115,10],[172,8]]},"88":{"position":[[108,8]]},"89":{"position":[[108,10],[169,8],[1099,8],[1225,8]]},"90":{"position":[[111,8]]},"91":{"position":[[283,8]]},"128":{"position":[[136,9],[179,8]]},"179":{"position":[[776,8]]},"189":{"position":[[1246,11],[1291,8],[1300,8]]},"194":{"position":[[121,10]]},"196":{"position":[[1160,9]]},"198":{"position":[[22,8]]},"199":{"position":[[22,8],[229,8],[762,8],[810,8],[869,8]]},"200":{"position":[[58,8],[368,8],[379,8],[445,9],[465,9],[972,8],[1065,8],[1109,8],[1380,8],[1497,9],[1519,8],[2084,8],[2128,8],[2188,9],[2210,8],[2364,8],[2456,8],[2732,9],[2774,8],[2816,8],[2846,9]]},"201":{"position":[[444,8],[546,8]]},"215":{"position":[[858,9]]},"352":{"position":[[7,9],[1033,8],[1084,8],[1177,9]]},"357":{"position":[[146,9]]},"437":{"position":[[127,9],[195,9]]},"448":{"position":[[113,9],[186,9]]},"460":{"position":[[58,8],[177,9],[266,9],[334,9],[671,9],[739,9]]},"461":{"position":[[83,10],[140,8],[1259,10],[1314,8]]},"463":{"position":[[261,10],[316,8]]},"465":{"position":[[67,8],[186,9],[275,9],[343,9]]},"466":{"position":[[84,10],[145,8],[1075,8],[1285,10],[1344,8]]},"468":{"position":[[58,8]]},"469":{"position":[[72,8],[281,10],[340,8]]},"471":{"position":[[67,8],[110,8]]},"472":{"position":[[232,8]]},"478":{"position":[[174,9]]},"627":{"position":[[2962,9],[2990,9],[3103,8]]},"647":{"position":[[1371,9]]},"669":{"position":[[115,10],[172,8]]},"671":{"position":[[108,8]]},"672":{"position":[[108,10],[169,8],[1099,8],[1225,8]]},"673":{"position":[[111,8]]},"674":{"position":[[283,8]]},"696":{"position":[[136,9],[179,8]]},"749":{"position":[[776,8]]},"750":{"position":[[445,8],[547,8]]},"772":{"position":[[1246,11],[1291,8],[1300,8]]},"777":{"position":[[121,10]]},"779":{"position":[[1165,9]]},"781":{"position":[[22,8]]},"782":{"position":[[22,8],[229,8],[762,8],[810,8],[869,8]]},"783":{"position":[[58,8],[368,8],[379,8],[445,9],[465,9],[972,8],[1065,8],[1109,8],[1380,8],[1497,9],[1519,8],[2084,8],[2128,8],[2188,9],[2210,8],[2364,8],[2456,8],[2732,9],[2774,8],[2816,8],[2846,9]]},"785":{"position":[[858,9]]},"964":{"position":[[127,9],[195,9]]},"975":{"position":[[113,9],[186,9]]},"987":{"position":[[58,8],[177,9],[266,9],[334,9],[671,9],[739,9]]},"988":{"position":[[83,10],[140,8],[1259,10],[1314,8]]},"990":{"position":[[261,10],[316,8]]},"992":{"position":[[67,8],[186,9],[275,9],[343,9]]},"993":{"position":[[84,10],[145,8],[1075,8],[1285,10],[1344,8]]},"995":{"position":[[58,8]]},"996":{"position":[[72,8],[281,10],[340,8]]},"998":{"position":[[67,8],[110,8]]},"999":{"position":[[232,8]]},"1010":{"position":[[174,9]]}},"keywords":{}}],["templatefil",{"_index":1233,"title":{},"content":{"128":{"position":[[159,15]]},"696":{"position":[[159,15]]}},"keywords":{}}],["temporari",{"_index":2062,"title":{},"content":{"216":{"position":[[318,12]]},"786":{"position":[[318,12]]}},"keywords":{}}],["tensorboard",{"_index":1885,"title":{"489":{"position":[[0,11]]},"493":{"position":[[15,11]]},"571":{"position":[[25,11]]},"1003":{"position":[[0,11]]},"1007":{"position":[[15,11]]},"1091":{"position":[[25,11]]}},"content":{"182":{"position":[[1439,12]]},"215":{"position":[[1356,12]]},"412":{"position":[[513,11]]},"491":{"position":[[204,11]]},"492":{"position":[[32,11]]},"493":{"position":[[57,11],[101,11]]},"569":{"position":[[1745,11]]},"571":{"position":[[58,12],[113,11],[333,11],[417,11],[469,11],[530,11]]},"578":{"position":[[734,11]]},"765":{"position":[[1439,12]]},"785":{"position":[[1356,12]]},"939":{"position":[[473,11]]},"1005":{"position":[[204,11]]},"1006":{"position":[[32,11]]},"1007":{"position":[[57,11],[101,11]]},"1089":{"position":[[1745,11]]},"1091":{"position":[[58,12],[113,11],[333,11],[417,11],[469,11],[530,11]]},"1104":{"position":[[734,11]]}},"keywords":{}}],["tensorflow",{"_index":354,"title":{"23":{"position":[[12,10]]},"106":{"position":[[11,10]]},"541":{"position":[[12,10]]},"558":{"position":[[18,10]]},"559":{"position":[[35,10]]},"560":{"position":[[31,10]]},"576":{"position":[[7,10]]},"578":{"position":[[43,10]]},"611":{"position":[[12,10]]},"1067":{"position":[[12,10]]},"1093":{"position":[[18,10]]},"1094":{"position":[[35,10]]},"1095":{"position":[[31,10]]},"1102":{"position":[[7,10]]},"1104":{"position":[[43,10]]}},"content":{"35":{"position":[[296,11]]},"77":{"position":[[168,13],[926,13]]},"78":{"position":[[168,13],[1073,13]]},"79":{"position":[[435,13]]},"80":{"position":[[468,13]]},"81":{"position":[[176,13],[779,13]]},"82":{"position":[[471,13]]},"86":{"position":[[794,13]]},"89":{"position":[[791,13]]},"93":{"position":[[448,13],[811,13],[1174,13],[1538,13]]},"94":{"position":[[456,13]]},"151":{"position":[[985,11]]},"161":{"position":[[451,11]]},"179":{"position":[[1326,10]]},"182":{"position":[[979,10]]},"194":{"position":[[1099,11]]},"200":{"position":[[632,12]]},"222":{"position":[[109,11]]},"223":{"position":[[16,10],[179,12],[468,10],[554,10]]},"224":{"position":[[179,12]]},"226":{"position":[[203,10],[289,10]]},"407":{"position":[[613,10]]},"415":{"position":[[20,10],[356,10]]},"438":{"position":[[134,13]]},"441":{"position":[[134,13]]},"449":{"position":[[135,13]]},"461":{"position":[[762,13]]},"466":{"position":[[767,13]]},"492":{"position":[[20,11],[94,13]]},"496":{"position":[[353,13]]},"497":{"position":[[360,13]]},"501":{"position":[[193,10]]},"539":{"position":[[38,10]]},"559":{"position":[[18,10],[73,10],[141,10],[255,10],[380,11]]},"560":{"position":[[48,10],[78,10],[185,10],[298,10],[416,10],[553,10]]},"562":{"position":[[168,11]]},"565":{"position":[[8,10]]},"570":{"position":[[7599,10],[7778,10],[7957,10],[8136,10],[8315,10],[8494,10],[8673,10],[8852,10]]},"571":{"position":[[143,10]]},"577":{"position":[[50,10]]},"578":{"position":[[52,10],[325,10],[719,10]]},"579":{"position":[[95,10],[373,10]]},"580":{"position":[[267,10]]},"627":{"position":[[296,11]]},"669":{"position":[[794,13]]},"672":{"position":[[791,13]]},"676":{"position":[[168,13],[926,13]]},"677":{"position":[[168,13],[1073,13]]},"678":{"position":[[435,13]]},"679":{"position":[[468,13]]},"680":{"position":[[176,13],[779,13]]},"681":{"position":[[471,13]]},"721":{"position":[[985,11]]},"731":{"position":[[451,11]]},"749":{"position":[[1331,10]]},"765":{"position":[[979,10]]},"777":{"position":[[1379,11]]},"783":{"position":[[632,12]]},"807":{"position":[[109,11]]},"808":{"position":[[16,10],[179,12],[468,10],[554,10]]},"809":{"position":[[179,12]]},"811":{"position":[[203,10],[289,10]]},"934":{"position":[[633,10]]},"942":{"position":[[20,10],[356,10]]},"965":{"position":[[134,13]]},"968":{"position":[[134,13]]},"976":{"position":[[135,13]]},"988":{"position":[[762,13]]},"993":{"position":[[767,13]]},"1006":{"position":[[20,11],[94,13]]},"1023":{"position":[[353,13]]},"1024":{"position":[[360,13]]},"1028":{"position":[[193,10]]},"1065":{"position":[[38,10]]},"1085":{"position":[[8,10]]},"1090":{"position":[[7599,10],[7778,10],[7957,10],[8136,10],[8315,10],[8494,10],[8673,10],[8852,10]]},"1091":{"position":[[143,10]]},"1094":{"position":[[18,10],[73,10],[141,10],[255,10],[380,11]]},"1095":{"position":[[48,10],[78,10],[185,10],[298,10],[416,10],[553,10]]},"1097":{"position":[[168,11]]},"1103":{"position":[[50,10]]},"1104":{"position":[[52,10],[325,10],[719,10]]},"1105":{"position":[[95,10],[373,10]]},"1106":{"position":[[267,10]]}},"keywords":{}}],["tensorflow.kera",{"_index":3328,"title":{},"content":{"415":{"position":[[378,16]]},"942":{"position":[[378,16]]}},"keywords":{}}],["tensorflow.model",{"_index":3679,"title":{},"content":{"520":{"position":[[101,16]]}},"keywords":{}}],["tensorflow.python.training.server_lib.clusterspec",{"_index":3851,"title":{},"content":{"570":{"position":[[829,50],[10309,50],[16380,50]]},"1090":{"position":[[829,50],[10309,50],[16380,50]]}},"keywords":{}}],["tensorflow.tf",{"_index":3785,"title":{},"content":{"562":{"position":[[269,13]]},"1097":{"position":[[269,13]]}},"keywords":{}}],["tensorflow/core/common_runtime/gpu/gpu_device.cc:1030",{"_index":3936,"title":{},"content":{"570":{"position":[[7535,54],[7714,54],[7893,54],[8072,54],[8251,54],[8430,54],[8609,54],[8788,54]]},"1090":{"position":[[7535,54],[7714,54],[7893,54],[8072,54],[8251,54],[8430,54],[8609,54],[8788,54]]}},"keywords":{}}],["tensorflow/core/common_runtime/gpu/gpu_device.cc:940",{"_index":3873,"title":{},"content":{"570":{"position":[[1402,53],[1648,53],[10819,53],[11065,53]]},"1090":{"position":[[1402,53],[1648,53],[10819,53],[11065,53]]}},"keywords":{}}],["tensorflow/core/distributed_runtime/master.cc:209",{"_index":3986,"title":{},"content":{"570":{"position":[[14169,50]]},"1090":{"position":[[14169,50]]}},"keywords":{}}],["tensorflow/core/distributed_runtime/master_session.cc:999",{"_index":3926,"title":{},"content":{"570":{"position":[[4827,58],[14333,58]]},"1090":{"position":[[4827,58],[14333,58]]}},"keywords":{}}],["tensorflow/core/distributed_runtime/rpc/grpc_channel.cc:215",{"_index":4043,"title":{},"content":{"570":{"position":[[16949,60],[17108,60],[17263,60]]},"1090":{"position":[[16949,60],[17108,60],[17263,60]]}},"keywords":{}}],["tensorflow/core/distributed_runtime/rpc/grpc_server_lib.cc:316",{"_index":3888,"title":{},"content":{"570":{"position":[[1898,63],[11315,63],[17422,63]]},"1090":{"position":[[1898,63],[11315,63],[17422,63]]}},"keywords":{}}],["tensorflow/ecosyst",{"_index":3822,"title":{},"content":{"569":{"position":[[166,20]]},"1089":{"position":[[166,20]]}},"keywords":{}}],["tensorflow/pytorch",{"_index":1598,"title":{},"content":{"159":{"position":[[1846,19]]},"167":{"position":[[83,18]]},"171":{"position":[[654,18],[1078,18],[1204,18]]},"215":{"position":[[1287,19]]},"729":{"position":[[1846,19]]},"737":{"position":[[83,18]]},"741":{"position":[[659,18],[1083,18],[1216,18]]},"785":{"position":[[1287,19]]}},"keywords":{}}],["tensorflow/pytorch/kera",{"_index":1607,"title":{},"content":{"159":{"position":[[2254,24]]},"729":{"position":[[2254,24]]}},"keywords":{}}],["tensorflow/pytorch/mxnet",{"_index":4106,"title":{},"content":{"575":{"position":[[81,25]]},"1101":{"position":[[81,25]]}},"keywords":{}}],["tensorflow=2.0",{"_index":1456,"title":{},"content":{"151":{"position":[[578,14],[1455,14],[1801,14]]},"721":{"position":[[578,14],[1455,14],[1801,14]]}},"keywords":{}}],["tensorflow==1.13.1",{"_index":4109,"title":{},"content":{"578":{"position":[[445,18]]},"1104":{"position":[[445,18]]}},"keywords":{}}],["tensorflow_dataset",{"_index":3326,"title":{},"content":{"415":{"position":[[321,19]]},"942":{"position":[[321,19]]}},"keywords":{}}],["term",{"_index":1266,"title":{},"content":{"133":{"position":[[95,4],[690,4],[2427,4]]},"158":{"position":[[0,4]]},"389":{"position":[[2236,4],[3128,4],[6033,4],[11572,5],[11667,4],[16322,4],[18078,4],[18952,4],[21751,4],[27121,5],[27216,4],[31176,4]]},"728":{"position":[[0,4]]},"916":{"position":[[2236,4],[3128,4],[6033,4],[11572,5],[11667,4],[16322,4],[18078,4],[18952,4],[21751,4],[27121,5],[27216,4],[31176,4]]}},"keywords":{}}],["term_6.0+20160213",{"_index":3104,"title":{},"content":{"389":{"position":[[11610,17],[27159,17]]},"916":{"position":[[11610,17],[27159,17]]}},"keywords":{}}],["termin",{"_index":926,"title":{},"content":{"103":{"position":[[389,14],[440,13]]},"204":{"position":[[768,9]]},"488":{"position":[[407,13]]},"705":{"position":[[389,14],[440,13]]},"753":{"position":[[768,9]]},"1020":{"position":[[407,13]]}},"keywords":{}}],["terminolog",{"_index":1551,"title":{"158":{"position":[[0,11]]},"728":{"position":[[0,11]]}},"content":{},"keywords":{}}],["tesla",{"_index":3874,"title":{},"content":{"570":{"position":[[1494,5],[1740,5],[7647,5],[7826,5],[8005,5],[8184,5],[8363,5],[8542,5],[8721,5],[8900,5],[10911,5],[11157,5]]},"1090":{"position":[[1494,5],[1740,5],[7647,5],[7826,5],[8005,5],[8184,5],[8363,5],[8542,5],[8721,5],[8900,5],[10911,5],[11157,5]]}},"keywords":{}}],["test",{"_index":72,"title":{"22":{"position":[[0,4]]},"23":{"position":[[0,4]]},"299":{"position":[[0,7]]},"318":{"position":[[32,4]]},"320":{"position":[[8,4]]},"321":{"position":[[8,4]]},"322":{"position":[[23,4]]},"323":{"position":[[27,4]]},"325":{"position":[[8,4]]},"326":{"position":[[8,4]]},"367":{"position":[[15,4]]},"510":{"position":[[5,7]]},"540":{"position":[[0,4]]},"541":{"position":[[0,4]]},"610":{"position":[[0,4]]},"611":{"position":[[0,4]]},"866":{"position":[[0,7]]},"875":{"position":[[32,4]]},"877":{"position":[[8,4]]},"878":{"position":[[8,4]]},"879":{"position":[[23,4]]},"890":{"position":[[15,4]]},"893":{"position":[[27,4]]},"895":{"position":[[8,4]]},"896":{"position":[[8,4]]},"1049":{"position":[[5,7]]},"1066":{"position":[[0,4]]},"1067":{"position":[[0,4]]}},"content":{"6":{"position":[[225,4]]},"100":{"position":[[112,5],[274,6]]},"103":{"position":[[284,5],[573,5],[933,6]]},"107":{"position":[[3167,8]]},"133":{"position":[[1347,4],[1363,4],[2599,4]]},"144":{"position":[[571,6]]},"160":{"position":[[470,8]]},"161":{"position":[[837,7]]},"200":{"position":[[1740,4]]},"299":{"position":[[5,4],[107,7],[193,4],[201,4],[222,5]]},"301":{"position":[[462,5]]},"316":{"position":[[333,4]]},"317":{"position":[[340,4]]},"319":{"position":[[4,4],[35,4],[60,5],[126,4]]},"320":{"position":[[827,4],[914,4],[1067,4]]},"324":{"position":[[4,4],[35,4],[60,5],[140,5],[202,6]]},"325":{"position":[[391,4],[441,4],[490,4]]},"338":{"position":[[184,6]]},"339":{"position":[[122,6]]},"348":{"position":[[50,7]]},"352":{"position":[[911,8]]},"359":{"position":[[106,4]]},"367":{"position":[[27,4]]},"369":{"position":[[216,7]]},"407":{"position":[[708,4]]},"479":{"position":[[80,5],[242,6]]},"507":{"position":[[34,7],[448,4]]},"510":{"position":[[40,4],[112,5],[170,4],[236,4]]},"513":{"position":[[396,7]]},"585":{"position":[[422,6]]},"595":{"position":[[225,4]]},"702":{"position":[[112,5],[274,6]]},"705":{"position":[[284,5],[573,5],[933,6]]},"714":{"position":[[571,6]]},"730":{"position":[[470,8]]},"731":{"position":[[837,7]]},"783":{"position":[[1740,4]]},"866":{"position":[[5,4],[107,7],[193,4],[201,4],[222,5]]},"868":{"position":[[446,5]]},"869":{"position":[[1021,4],[1058,4],[1319,4],[1616,4]]},"876":{"position":[[4,4],[35,4],[60,5],[126,4]]},"877":{"position":[[827,4],[914,4],[1067,4]]},"881":{"position":[[106,4]]},"890":{"position":[[27,4]]},"892":{"position":[[216,7]]},"894":{"position":[[4,4],[35,4],[60,5],[140,5],[202,6]]},"895":{"position":[[391,4],[441,4],[490,4]]},"934":{"position":[[728,4]]},"1011":{"position":[[80,5],[242,6]]},"1046":{"position":[[34,7],[464,4],[550,4]]},"1049":{"position":[[40,4],[112,5],[170,4],[236,4]]},"1052":{"position":[[396,7]]},"1111":{"position":[[422,6]]}},"keywords":{}}],["test/cifar10_estimator/cifar10_main.pi",{"_index":380,"title":{},"content":{"23":{"position":[[538,39],[809,39]]},"541":{"position":[[538,39],[809,39]]},"611":{"position":[[538,39],[809,39]]},"1067":{"position":[[538,39],[809,39]]}},"keywords":{}}],["test/models/tutorials/image/cifar10_estim",{"_index":4155,"title":{},"content":{"580":{"position":[[517,46]]},"1106":{"position":[[517,46]]}},"keywords":{}}],["test/t",{"_index":2441,"title":{},"content":{"320":{"position":[[1261,9]]},"877":{"position":[[1261,9]]}},"keywords":{}}],["test/test_e2",{"_index":2434,"title":{},"content":{"320":{"position":[[940,13]]},"877":{"position":[[940,13]]}},"keywords":{}}],["test/test_e2e/run_frontend_e2e.sh",{"_index":2430,"title":{},"content":{"320":{"position":[[435,33]]},"877":{"position":[[435,33]]}},"keywords":{}}],["test_data",{"_index":1767,"title":{},"content":{"171":{"position":[[1562,12]]},"199":{"position":[[494,12]]},"741":{"position":[[1574,12]]},"782":{"position":[[494,12]]}},"keywords":{}}],["test_env",{"_index":887,"title":{},"content":{"100":{"position":[[262,11]]},"103":{"position":[[921,11]]},"479":{"position":[[230,11]]},"702":{"position":[[262,11]]},"705":{"position":[[921,11]]},"1011":{"position":[[230,11]]}},"keywords":{}}],["test_env\":\"t",{"_index":912,"title":{},"content":{"100":{"position":[[1124,17]]},"101":{"position":[[866,17]]},"102":{"position":[[857,17]]},"702":{"position":[[1124,17]]},"703":{"position":[[866,17]]},"704":{"position":[[857,17]]}},"keywords":{}}],["testcas",{"_index":2436,"title":{},"content":{"320":{"position":[[975,11],[989,8]]},"877":{"position":[[975,11],[989,8]]}},"keywords":{}}],["testclass",{"_index":2316,"title":{},"content":{"299":{"position":[[51,10]]},"866":{"position":[[51,10]]}},"keywords":{}}],["testpypi",{"_index":3656,"title":{},"content":{"513":{"position":[[383,8],[440,8]]},"1052":{"position":[[383,8],[440,8]]}},"keywords":{}}],["text",{"_index":1521,"title":{},"content":{"155":{"position":[[42,4]]},"725":{"position":[[42,4]]}},"keywords":{}}],["tf",{"_index":108,"title":{},"content":{"7":{"position":[[413,2]]},"23":{"position":[[150,2],[252,2],[292,2]]},"77":{"position":[[114,3],[709,3],[872,3]]},"78":{"position":[[114,3],[856,3],[1019,3]]},"79":{"position":[[218,3],[381,3]]},"80":{"position":[[251,3],[414,3]]},"81":{"position":[[122,3],[725,3]]},"82":{"position":[[254,3],[417,3]]},"86":{"position":[[106,2],[188,2],[474,3]]},"88":{"position":[[99,2]]},"89":{"position":[[99,2],[185,2],[471,3],[1090,2]]},"90":{"position":[[102,2]]},"91":{"position":[[121,3],[274,2]]},"179":{"position":[[800,3]]},"182":{"position":[[1045,4],[1069,4]]},"194":{"position":[[100,3],[1079,2]]},"199":{"position":[[953,2]]},"200":{"position":[[1199,2],[2375,3]]},"412":{"position":[[613,2]]},"415":{"position":[[370,2]]},"438":{"position":[[80,3]]},"441":{"position":[[80,3]]},"449":{"position":[[81,3]]},"461":{"position":[[74,2],[156,2],[442,3],[1250,2],[1330,2]]},"463":{"position":[[252,2],[332,2]]},"466":{"position":[[75,2],[161,2],[447,3],[1066,2],[1276,2],[1360,2]]},"469":{"position":[[63,2],[272,2],[356,2]]},"472":{"position":[[70,3],[223,2]]},"496":{"position":[[299,3]]},"497":{"position":[[306,3]]},"541":{"position":[[150,2],[252,2],[292,2]]},"559":{"position":[[425,2]]},"562":{"position":[[98,2]]},"579":{"position":[[348,2]]},"580":{"position":[[242,2]]},"596":{"position":[[413,2]]},"611":{"position":[[150,2],[252,2],[292,2]]},"669":{"position":[[106,2],[188,2],[474,3]]},"671":{"position":[[99,2]]},"672":{"position":[[99,2],[185,2],[471,3],[1090,2]]},"673":{"position":[[102,2]]},"674":{"position":[[121,3],[274,2]]},"676":{"position":[[114,3],[709,3],[872,3]]},"677":{"position":[[114,3],[856,3],[1019,3]]},"678":{"position":[[218,3],[381,3]]},"679":{"position":[[251,3],[414,3]]},"680":{"position":[[122,3],[725,3]]},"681":{"position":[[254,3],[417,3]]},"749":{"position":[[805,3]]},"765":{"position":[[1045,4],[1069,4]]},"777":{"position":[[100,3],[1359,2]]},"782":{"position":[[953,2]]},"783":{"position":[[1199,2],[2375,3]]},"939":{"position":[[577,2]]},"942":{"position":[[370,2]]},"965":{"position":[[80,3]]},"968":{"position":[[80,3]]},"976":{"position":[[81,3]]},"988":{"position":[[74,2],[156,2],[442,3],[1250,2],[1330,2]]},"990":{"position":[[252,2],[332,2]]},"993":{"position":[[75,2],[161,2],[447,3],[1066,2],[1276,2],[1360,2]]},"996":{"position":[[63,2],[272,2],[356,2]]},"999":{"position":[[70,3],[223,2]]},"1023":{"position":[[299,3]]},"1024":{"position":[[306,3]]},"1067":{"position":[[150,2],[252,2],[292,2]]},"1094":{"position":[[425,2]]},"1097":{"position":[[98,2]]},"1105":{"position":[[348,2]]},"1106":{"position":[[242,2]]}},"keywords":{}}],["tf.app.run",{"_index":4056,"title":{},"content":{"572":{"position":[[129,12]]},"1092":{"position":[[129,12]]}},"keywords":{}}],["tf.cast(imag",{"_index":3335,"title":{},"content":{"415":{"position":[[565,14]]},"942":{"position":[[583,14]]}},"keywords":{}}],["tf.data.experimental.autoshardpolicy.data",{"_index":3368,"title":{},"content":{"415":{"position":[[1761,41]]},"942":{"position":[[1779,41]]}},"keywords":{}}],["tf.data.opt",{"_index":3366,"title":{},"content":{"415":{"position":[[1689,17]]},"942":{"position":[[1707,17]]}},"keywords":{}}],["tf.distribute.experimental.multiworkermirroredstrategi",{"_index":3359,"title":{},"content":{"415":{"position":[[1370,55]]},"942":{"position":[[1388,55]]}},"keywords":{}}],["tf.event",{"_index":2041,"title":{},"content":{"215":{"position":[[381,10],[1320,9]]},"216":{"position":[[51,9]]},"785":{"position":[[381,10],[1320,9]]},"786":{"position":[[51,9]]}},"keywords":{}}],["tf.float32",{"_index":3336,"title":{},"content":{"415":{"position":[[580,11]]},"942":{"position":[[598,11]]}},"keywords":{}}],["tf/pytorch",{"_index":2047,"title":{},"content":{"215":{"position":[[1497,10]]},"785":{"position":[[1497,10]]}},"keywords":{}}],["tf_config",{"_index":3820,"title":{"569":{"position":[[4,9]]},"1089":{"position":[[4,9]]}},"content":{"569":{"position":[[239,9],[365,10],[469,9],[1378,9],[1504,9]]},"570":{"position":[[16,9],[410,10],[624,10],[9907,10],[10103,10],[16178,10]]},"1089":{"position":[[239,9],[365,10],[469,9],[1378,9],[1504,9]]},"1090":{"position":[[16,9],[410,10],[624,10],[9907,10],[10103,10],[16178,10]]}},"keywords":{}}],["tfd",{"_index":3327,"title":{},"content":{"415":{"position":[[344,4]]},"942":{"position":[[344,4]]}},"keywords":{}}],["tfds.load(name='mnist",{"_index":3338,"title":{},"content":{"415":{"position":[[639,23]]},"942":{"position":[[657,23]]}},"keywords":{}}],["tfjob",{"_index":2113,"title":{},"content":{"225":{"position":[[437,5]]},"810":{"position":[[490,5]]}},"keywords":{}}],["tfjob'",{"_index":2116,"title":{},"content":{"225":{"position":[[522,7]]},"810":{"position":[[575,7]]}},"keywords":{}}],["tfrecord",{"_index":3792,"title":{},"content":{"565":{"position":[[86,8],[223,8]]},"1085":{"position":[[86,8],[223,8]]}},"keywords":{}}],["tfshouldusewarningwrapper(x",{"_index":4100,"title":{},"content":{"572":{"position":[[1966,28]]},"1092":{"position":[[1966,28]]}},"keywords":{}}],["thank",{"_index":2630,"title":{},"content":{"352":{"position":[[113,6],[1132,7],[1552,5]]},"357":{"position":[[421,6]]},"512":{"position":[[62,6]]},"1051":{"position":[[62,6]]}},"keywords":{}}],["that'",{"_index":2083,"title":{},"content":{"217":{"position":[[1803,6]]},"787":{"position":[[1803,6]]}},"keywords":{}}],["thchs30",{"_index":2767,"title":{},"content":{"377":{"position":[[325,7]]},"386":{"position":[[0,7],[109,7]]},"389":{"position":[[388,7]]},"904":{"position":[[325,7]]},"913":{"position":[[0,7],[109,7]]},"916":{"position":[[388,7]]}},"keywords":{}}],["thchs30/s5",{"_index":2845,"title":{},"content":{"389":{"position":[[962,10],[1209,10],[1280,10],[1489,10]]},"916":{"position":[[962,10],[1209,10],[1280,10],[1489,10]]}},"keywords":{}}],["thchs30_path/data",{"_index":2811,"title":{},"content":{"386":{"position":[[205,18],[230,18]]},"913":{"position":[[205,18],[230,18]]}},"keywords":{}}],["thchs30_path/sg",{"_index":2818,"title":{},"content":{"386":{"position":[[585,17]]},"913":{"position":[[585,17]]}},"keywords":{}}],["thchs30_path=/data/hdfs1/nfs/aisearch/kaldi/thchs30",{"_index":2810,"title":{},"content":{"386":{"position":[[147,51]]},"389":{"position":[[111,51]]},"913":{"position":[[147,51]]},"916":{"position":[[111,51]]}},"keywords":{}}],["thchs30_path}/data:/opt/kaldi/egs/thchs30",{"_index":2843,"title":{},"content":{"389":{"position":[[874,45]]},"916":{"position":[[874,45]]}},"keywords":{}}],["thchs30_path}/mul/s5:/opt/kaldi/egs/mul",{"_index":2844,"title":{},"content":{"389":{"position":[[920,41]]},"916":{"position":[[920,41]]}},"keywords":{}}],["thchs30_path}/sge/group:/etc/group:rw",{"_index":2841,"title":{},"content":{"389":{"position":[[796,41]]},"916":{"position":[[796,41]]}},"keywords":{}}],["thchs30_path}/sge/passwd:/etc/passwd:rw",{"_index":2840,"title":{},"content":{"389":{"position":[[752,43]]},"916":{"position":[[752,43]]}},"keywords":{}}],["thchs30_path}/sge:$sge_cfg_path",{"_index":2842,"title":{},"content":{"389":{"position":[[838,35]]},"916":{"position":[[838,35]]}},"keywords":{}}],["thejob",{"_index":4052,"title":{},"content":{"571":{"position":[[348,6]]},"1091":{"position":[[348,6]]}},"keywords":{}}],["themself",{"_index":3236,"title":{},"content":{"403":{"position":[[166,9]]},"930":{"position":[[166,9]]}},"keywords":{}}],["themselv",{"_index":582,"title":{},"content":{"35":{"position":[[58,10]]},"204":{"position":[[704,11]]},"627":{"position":[[58,10]]},"753":{"position":[[704,11]]}},"keywords":{}}],["there'",{"_index":1605,"title":{},"content":{"159":{"position":[[2124,7]]},"177":{"position":[[0,7]]},"182":{"position":[[626,7]]},"190":{"position":[[0,7]]},"193":{"position":[[388,7]]},"217":{"position":[[1274,7]]},"578":{"position":[[587,7]]},"729":{"position":[[2124,7]]},"747":{"position":[[0,7]]},"765":{"position":[[626,7]]},"773":{"position":[[0,7]]},"776":{"position":[[388,7]]},"787":{"position":[[1274,7]]},"1104":{"position":[[587,7]]}},"keywords":{}}],["there'r",{"_index":1461,"title":{},"content":{"151":{"position":[[762,8],[1983,8]]},"156":{"position":[[160,8]]},"159":{"position":[[1151,8]]},"162":{"position":[[133,8],[254,8],[571,8]]},"171":{"position":[[548,8]]},"175":{"position":[[105,8]]},"176":{"position":[[0,8]]},"181":{"position":[[1179,8],[1336,8],[1718,8]]},"184":{"position":[[0,8]]},"210":{"position":[[0,8],[227,8]]},"215":{"position":[[1235,8],[1703,8]]},"217":{"position":[[50,8]]},"721":{"position":[[762,8],[1983,8]]},"726":{"position":[[160,8]]},"729":{"position":[[1151,8]]},"732":{"position":[[133,8],[254,8],[571,8]]},"741":{"position":[[553,8]]},"745":{"position":[[105,8]]},"746":{"position":[[0,8]]},"759":{"position":[[0,8],[227,8]]},"764":{"position":[[1184,8],[1342,8],[1731,8]]},"767":{"position":[[0,8]]},"785":{"position":[[1235,8],[1703,8]]},"787":{"position":[[50,8]]},"792":{"position":[[980,8]]}},"keywords":{}}],["they'r",{"_index":1681,"title":{},"content":{"163":{"position":[[215,7],[285,7],[377,7]]},"181":{"position":[[1234,7],[1863,7]]},"229":{"position":[[722,7]]},"733":{"position":[[215,7],[285,7],[377,7]]},"764":{"position":[[1240,7],[1876,7]]},"792":{"position":[[722,7]]}},"keywords":{}}],["they'v",{"_index":1330,"title":{},"content":{"136":{"position":[[211,7]]},"708":{"position":[[211,7]]}},"keywords":{}}],["thing",{"_index":1396,"title":{},"content":{"141":{"position":[[1887,7]]},"217":{"position":[[1694,6]]},"508":{"position":[[163,7]]},"787":{"position":[[1694,6]]},"1047":{"position":[[163,7]]}},"keywords":{}}],["think",{"_index":2424,"title":{},"content":{"317":{"position":[[435,5]]}},"keywords":{}}],["thoroughli",{"_index":1234,"title":{},"content":{"128":{"position":[[188,10]]},"696":{"position":[[188,10]]}},"keywords":{}}],["thos",{"_index":1101,"title":{},"content":{"107":{"position":[[7232,5],[8747,5]]}},"keywords":{}}],["though",{"_index":982,"title":{},"content":{"107":{"position":[[1644,6]]}},"keywords":{}}],["thread",{"_index":508,"title":{},"content":{"28":{"position":[[836,6],[887,7]]},"272":{"position":[[279,6]]},"546":{"position":[[836,6],[887,7]]},"616":{"position":[[836,6],[887,7]]},"843":{"position":[[279,6]]},"1072":{"position":[[836,6],[887,7]]}},"keywords":{}}],["thread:{vote_mail_address",{"_index":2651,"title":{},"content":{"352":{"position":[[1525,26]]}},"keywords":{}}],["three",{"_index":621,"title":{},"content":{"35":{"position":[[1269,5]]},"107":{"position":[[9130,5]]},"139":{"position":[[10,5]]},"246":{"position":[[531,5]]},"627":{"position":[[1269,5]]},"711":{"position":[[10,5]]},"816":{"position":[[536,5]]},"1062":{"position":[[0,5]]}},"keywords":{}}],["thrift",{"_index":2238,"title":{},"content":{"271":{"position":[[470,6],[520,6]]},"842":{"position":[[470,6],[520,6]]}},"keywords":{}}],["through",{"_index":558,"title":{},"content":{"33":{"position":[[103,7]]},"35":{"position":[[1926,7]]},"141":{"position":[[1402,7]]},"151":{"position":[[2282,7]]},"172":{"position":[[727,7]]},"231":{"position":[[1120,7]]},"248":{"position":[[397,7],[1166,7]]},"252":{"position":[[399,7]]},"259":{"position":[[365,7]]},"261":{"position":[[78,7]]},"262":{"position":[[337,7]]},"264":{"position":[[49,7]]},"268":{"position":[[134,7]]},"269":{"position":[[495,7]]},"325":{"position":[[165,7]]},"333":{"position":[[0,7]]},"368":{"position":[[407,7]]},"571":{"position":[[269,7]]},"625":{"position":[[103,7]]},"627":{"position":[[1926,7]]},"721":{"position":[[2282,7]]},"742":{"position":[[727,7]]},"794":{"position":[[1373,7]]},"818":{"position":[[397,7],[1166,7]]},"822":{"position":[[404,7]]},"830":{"position":[[365,7]]},"832":{"position":[[78,7]]},"833":{"position":[[337,7]]},"835":{"position":[[49,7]]},"839":{"position":[[134,7]]},"840":{"position":[[495,7]]},"891":{"position":[[407,7]]},"895":{"position":[[165,7]]},"1091":{"position":[[269,7]]}},"keywords":{}}],["throughout",{"_index":2195,"title":{},"content":{"263":{"position":[[413,10]]},"834":{"position":[[413,10]]}},"keywords":{}}],["tim",{"_index":223,"title":{"120":{"position":[[54,5]]},"688":{"position":[[54,5]]}},"content":{"15":{"position":[[182,5]]},"16":{"position":[[48,4]]},"31":{"position":[[255,5]]},"107":{"position":[[1467,5],[1661,6],[8584,6],[10720,4],[10838,6]]},"130":{"position":[[437,4]]},"167":{"position":[[574,4]]},"170":{"position":[[496,5]]},"197":{"position":[[294,5]]},"198":{"position":[[69,4]]},"215":{"position":[[60,5]]},"216":{"position":[[61,4],[175,4]]},"271":{"position":[[576,4],[623,4]]},"273":{"position":[[800,5],[1342,5]]},"301":{"position":[[423,4]]},"321":{"position":[[5,4]]},"322":{"position":[[208,6]]},"326":{"position":[[5,4]]},"380":{"position":[[212,4]]},"389":{"position":[[16504,4],[16635,4],[16768,4],[16904,4],[31358,4],[31489,4],[31622,4],[31758,4]]},"475":{"position":[[94,4]]},"566":{"position":[[567,5]]},"570":{"position":[[256,5],[9830,5]]},"607":{"position":[[182,5]]},"608":{"position":[[48,4]]},"623":{"position":[[255,5]]},"698":{"position":[[437,4]]},"737":{"position":[[574,4]]},"740":{"position":[[496,5]]},"780":{"position":[[301,5]]},"781":{"position":[[69,4]]},"785":{"position":[[60,5]]},"786":{"position":[[61,4],[175,4]]},"842":{"position":[[576,4],[623,4]]},"844":{"position":[[800,5],[1342,5]]},"868":{"position":[[407,4]]},"878":{"position":[[5,4]]},"879":{"position":[[208,6]]},"896":{"position":[[5,4]]},"907":{"position":[[212,4]]},"916":{"position":[[16504,4],[16635,4],[16768,4],[16904,4],[31358,4],[31489,4],[31622,4],[31758,4]]},"1002":{"position":[[94,4]]},"1086":{"position":[[567,5]]},"1090":{"position":[[256,5],[9830,5]]}},"keywords":{}}],["time.sleep(1",{"_index":3532,"title":{},"content":{"475":{"position":[[265,13]]},"1002":{"position":[[265,13]]}},"keywords":{}}],["timefram",{"_index":1149,"title":{},"content":{"107":{"position":[[10644,10],[10881,9],[10982,9]]}},"keywords":{}}],["timeout",{"_index":1875,"title":{},"content":{"182":{"position":[[496,8],[1460,8]]},"273":{"position":[[408,7]]},"765":{"position":[[496,8],[1460,8]]},"844":{"position":[[408,7]]}},"keywords":{}}],["timestamp",{"_index":2249,"title":{},"content":{"273":{"position":[[222,10],[324,10]]},"844":{"position":[[222,10],[324,10]]}},"keywords":{}}],["timet",{"_index":1156,"title":{},"content":{"107":{"position":[[10806,9]]},"133":{"position":[[635,10]]}},"keywords":{}}],["titl",{"_index":581,"title":{},"content":{"34":{"position":[[98,6]]},"122":{"position":[[135,5]]},"357":{"position":[[156,6]]},"626":{"position":[[98,6]]},"690":{"position":[[135,5]]}},"keywords":{}}],["title:[result][vot",{"_index":2647,"title":{},"content":{"352":{"position":[[1187,20]]}},"keywords":{}}],["title:[vot",{"_index":2627,"title":{},"content":{"352":{"position":[[17,12]]}},"keywords":{}}],["tlp",{"_index":1719,"title":{},"content":{"167":{"position":[[619,4]]},"737":{"position":[[619,4]]}},"keywords":{}}],["tmp",{"_index":2788,"title":{},"content":{"383":{"position":[[568,4]]},"910":{"position":[[568,4]]}},"keywords":{}}],["tmp/apach",{"_index":2588,"title":{},"content":{"340":{"position":[[104,11]]},"341":{"position":[[57,11],[442,11]]},"345":{"position":[[3,11]]},"349":{"position":[[152,11]]}},"keywords":{}}],["tmp/data",{"_index":4128,"title":{},"content":{"579":{"position":[[613,9],[736,9]]},"1105":{"position":[[613,9],[736,9]]}},"keywords":{}}],["tmp/mod",{"_index":4130,"title":{},"content":{"579":{"position":[[637,10],[760,10]]},"1105":{"position":[[637,10],[760,10]]}},"keywords":{}}],["tmp/submarin",{"_index":326,"title":{},"content":{"20":{"position":[[494,14],[524,14]]},"334":{"position":[[348,14],[1208,14]]},"348":{"position":[[226,14]]},"349":{"position":[[3,14]]},"620":{"position":[[494,14],[524,14]]}},"keywords":{}}],["to/image_classification.pi",{"_index":4190,"title":{},"content":{"589":{"position":[[999,27]]},"1115":{"position":[[999,27]]}},"keywords":{}}],["to/image_classification.py,path",{"_index":4206,"title":{},"content":{"590":{"position":[[1023,31]]},"1116":{"position":[[1023,31]]}},"keywords":{}}],["to/mnist_distributed.pi",{"_index":4178,"title":{},"content":{"584":{"position":[[708,24]]},"1110":{"position":[[708,24]]}},"keywords":{}}],["to/mnist_distributed.py,path",{"_index":4135,"title":{},"content":{"579":{"position":[[851,28]]},"1105":{"position":[[851,28]]}},"keywords":{}}],["to/myvenv.zip#archive,path",{"_index":4134,"title":{},"content":{"579":{"position":[[824,26]]},"584":{"position":[[681,26]]},"589":{"position":[[972,26]]},"1105":{"position":[[824,26]]},"1110":{"position":[[681,26]]},"1115":{"position":[[972,26]]}},"keywords":{}}],["to/submarin",{"_index":4120,"title":{},"content":{"579":{"position":[[213,12],[880,12]]},"580":{"position":[[107,12],[1149,12]]},"584":{"position":[[210,12],[740,12]]},"585":{"position":[[107,12],[859,12]]},"589":{"position":[[150,12],[1034,12]]},"590":{"position":[[185,12],[1055,12]]},"1105":{"position":[[213,12],[880,12]]},"1106":{"position":[[107,12],[1149,12]]},"1110":{"position":[[210,12],[740,12]]},"1111":{"position":[[107,12],[859,12]]},"1115":{"position":[[150,12],[1034,12]]},"1116":{"position":[[185,12],[1055,12]]}},"keywords":{}}],["to:dev@submarine.apache.org",{"_index":2626,"title":{},"content":{"351":{"position":[[50,27]]}},"keywords":{}}],["today",{"_index":1561,"title":{},"content":{"159":{"position":[[39,6]]},"729":{"position":[[39,6]]}},"keywords":{}}],["todev@submarine.apache.org",{"_index":2657,"title":{"357":{"position":[[19,26]]}},"content":{},"keywords":{}}],["todo",{"_index":667,"title":{},"content":{"36":{"position":[[0,6]]},"37":{"position":[[0,6]]},"38":{"position":[[0,6]]},"39":{"position":[[0,6]]},"40":{"position":[[0,6]]},"41":{"position":[[0,6]]},"42":{"position":[[0,6]]},"43":{"position":[[0,6]]},"45":{"position":[[0,6]]},"46":{"position":[[0,6]]},"47":{"position":[[0,6]]},"48":{"position":[[0,6]]},"56":{"position":[[0,6]]},"57":{"position":[[0,6]]},"58":{"position":[[0,6]]},"59":{"position":[[0,6]]},"60":{"position":[[0,6]]},"61":{"position":[[0,6]]},"62":{"position":[[0,6]]},"63":{"position":[[0,6]]},"65":{"position":[[0,6]]},"66":{"position":[[0,6]]},"67":{"position":[[0,6]]},"68":{"position":[[0,6]]},"164":{"position":[[0,5]]},"196":{"position":[[1131,5]]},"200":{"position":[[2973,6]]},"213":{"position":[[479,7]]},"233":{"position":[[0,4]]},"234":{"position":[[0,4]]},"235":{"position":[[0,4]]},"236":{"position":[[0,4]]},"237":{"position":[[0,4]]},"238":{"position":[[0,4]]},"239":{"position":[[0,4]]},"240":{"position":[[0,4]]},"241":{"position":[[0,4]]},"242":{"position":[[0,5]]},"244":{"position":[[197,5]]},"254":{"position":[[0,6]]},"255":{"position":[[0,6]]},"256":{"position":[[0,6]]},"381":{"position":[[21,5]]},"448":{"position":[[271,4]]},"628":{"position":[[0,6]]},"629":{"position":[[0,6]]},"630":{"position":[[0,6]]},"631":{"position":[[0,6]]},"632":{"position":[[0,6]]},"633":{"position":[[0,6]]},"634":{"position":[[0,6]]},"635":{"position":[[0,6]]},"637":{"position":[[0,6]]},"638":{"position":[[0,6]]},"639":{"position":[[0,6]]},"640":{"position":[[0,6]]},"648":{"position":[[0,6]]},"649":{"position":[[0,6]]},"650":{"position":[[0,6]]},"651":{"position":[[0,6]]},"652":{"position":[[0,6]]},"653":{"position":[[0,6]]},"654":{"position":[[0,6]]},"655":{"position":[[0,6]]},"657":{"position":[[0,6]]},"658":{"position":[[0,6]]},"659":{"position":[[0,6]]},"660":{"position":[[0,6]]},"734":{"position":[[0,5]]},"762":{"position":[[479,7]]},"779":{"position":[[1136,5]]},"783":{"position":[[2973,6]]},"796":{"position":[[0,4]]},"797":{"position":[[0,4]]},"798":{"position":[[0,4]]},"799":{"position":[[0,4]]},"800":{"position":[[0,4]]},"801":{"position":[[0,4]]},"802":{"position":[[0,4]]},"803":{"position":[[0,4]]},"804":{"position":[[0,4]]},"805":{"position":[[0,5]]},"814":{"position":[[197,5]]},"824":{"position":[[0,6]]},"825":{"position":[[0,6]]},"826":{"position":[[0,6]]},"827":{"position":[[0,6]]},"858":{"position":[[0,4]]},"859":{"position":[[0,4]]},"860":{"position":[[0,4]]},"908":{"position":[[21,5]]},"975":{"position":[[271,4]]}},"keywords":{}}],["togeth",{"_index":4174,"title":{},"content":{"580":{"position":[[1592,8]]},"1106":{"position":[[1592,8]]}},"keywords":{}}],["tok",{"_index":2034,"title":{"395":{"position":[[11,5]]},"922":{"position":[[11,5]]}},"content":{"213":{"position":[[278,5]]},"395":{"position":[[23,5],[150,5],[222,5]]},"762":{"position":[[278,5]]},"922":{"position":[[23,5],[150,5],[222,5]]}},"keywords":{}}],["tol",{"_index":2243,"title":{"272":{"position":[[14,9]]},"843":{"position":[[14,9]]}},"content":{"568":{"position":[[191,8]]},"1088":{"position":[[191,8]]}},"keywords":{}}],["ton",{"_index":2659,"title":{},"content":{"357":{"position":[[413,4]]}},"keywords":{}}],["toni",{"_index":4108,"title":{},"content":{"578":{"position":[[0,4]]},"580":{"position":[[1386,4],[1449,4],[1720,4]]},"583":{"position":[[0,4]]},"588":{"position":[[0,4]]},"591":{"position":[[386,4]]},"777":{"position":[[976,4]]},"1104":{"position":[[0,4]]},"1106":{"position":[[1386,4],[1449,4],[1720,4]]},"1109":{"position":[[0,4]]},"1114":{"position":[[0,4]]},"1117":{"position":[[386,4]]}},"keywords":{}}],["tony.containers.resources=path",{"_index":4133,"title":{},"content":{"579":{"position":[[793,30]]},"580":{"position":[[1118,30]]},"584":{"position":[[650,30]]},"585":{"position":[[828,30]]},"589":{"position":[[941,30]]},"590":{"position":[[992,30]]},"1105":{"position":[[793,30]]},"1106":{"position":[[1118,30]]},"1110":{"position":[[650,30]]},"1111":{"position":[[828,30]]},"1115":{"position":[[941,30]]},"1116":{"position":[[992,30]]}},"keywords":{}}],["tony.tonycli",{"_index":4139,"title":{},"content":{"579":{"position":[[1070,16],[1271,16],[1472,16],[1669,16],[1812,16],[1959,16],[2106,16],[2304,16],[2506,16]]},"584":{"position":[[930,16],[1131,16],[1332,16],[1529,16],[1672,16],[1819,16],[1966,16],[2164,16],[2366,16]]},"589":{"position":[[1224,16],[1426,16],[1628,16],[1830,16],[2032,16],[2237,16],[2387,16],[2534,16],[2681,16],[2828,16],[2975,16],[3182,16],[3386,16],[3590,16],[3794,16]]},"1105":{"position":[[1070,16],[1271,16],[1472,16],[1669,16],[1812,16],[1959,16],[2106,16],[2304,16],[2506,16]]},"1110":{"position":[[930,16],[1131,16],[1332,16],[1529,16],[1672,16],[1819,16],[1966,16],[2164,16],[2366,16]]},"1115":{"position":[[1224,16],[1426,16],[1628,16],[1830,16],[2032,16],[2237,16],[2387,16],[2534,16],[2681,16],[2828,16],[2975,16],[3182,16],[3386,16],[3590,16],[3794,16]]}},"keywords":{}}],["tool",{"_index":288,"title":{"161":{"position":[[65,5]]},"731":{"position":[[65,5]]}},"content":{"17":{"position":[[742,4],[1209,5]]},"159":{"position":[[363,5],[611,6],[1532,6]]},"161":{"position":[[315,5],[357,5],[585,5],[922,6]]},"248":{"position":[[948,5]]},"298":{"position":[[147,5],[371,4]]},"369":{"position":[[397,4]]},"402":{"position":[[146,5]]},"549":{"position":[[430,5]]},"568":{"position":[[233,5]]},"609":{"position":[[742,4],[1209,5]]},"729":{"position":[[363,5],[611,6],[1532,6]]},"731":{"position":[[315,5],[357,5],[585,5],[922,6]]},"818":{"position":[[948,5]]},"865":{"position":[[147,5],[374,4]]},"892":{"position":[[397,4]]},"929":{"position":[[146,5]]},"1075":{"position":[[430,5]]},"1088":{"position":[[233,5]]}},"keywords":{}}],["toolset",{"_index":1722,"title":{},"content":{"168":{"position":[[259,9]]},"738":{"position":[[259,9]]}},"keywords":{}}],["top",{"_index":555,"title":{},"content":{"33":{"position":[[42,3]]},"107":{"position":[[3806,3]]},"136":{"position":[[512,3]]},"151":{"position":[[391,3],[900,3]]},"162":{"position":[[303,3],[811,3]]},"168":{"position":[[636,3]]},"172":{"position":[[268,3]]},"375":{"position":[[1107,3]]},"418":{"position":[[233,3]]},"549":{"position":[[952,3]]},"553":{"position":[[1579,3]]},"559":{"position":[[1216,3]]},"625":{"position":[[42,3]]},"708":{"position":[[512,3]]},"721":{"position":[[391,3],[900,3]]},"732":{"position":[[303,3],[811,3]]},"738":{"position":[[636,3]]},"742":{"position":[[268,3]]},"902":{"position":[[1107,3]]},"1075":{"position":[[952,3]]},"1079":{"position":[[1579,3]]},"1094":{"position":[[1216,3]]}},"keywords":{}}],["topic",{"_index":2002,"title":{},"content":{"201":{"position":[[165,6]]},"750":{"position":[[165,6]]}},"keywords":{}}],["torch_cuda_arch_list=\"3.5",{"_index":3743,"title":{},"content":{"553":{"position":[[1305,25]]},"1079":{"position":[[1305,25]]}},"keywords":{}}],["torch_nvcc_flag",{"_index":3747,"title":{},"content":{"553":{"position":[[1352,18]]},"1079":{"position":[[1352,18]]}},"keywords":{}}],["total",{"_index":579,"title":{},"content":{"34":{"position":[[57,5]]},"259":{"position":[[32,5]]},"570":{"position":[[1573,5],[1819,5],[10990,5],[11236,5]]},"626":{"position":[[57,5]]},"830":{"position":[[32,5]]},"1090":{"position":[[1573,5],[1819,5],[10990,5],[11236,5]]}},"keywords":{}}],["total_num_replicas=1",{"_index":3920,"title":{},"content":{"570":{"position":[[4657,20]]},"1090":{"position":[[4657,20]]}},"keywords":{}}],["total_num_replicas=2",{"_index":3932,"title":{},"content":{"570":{"position":[[7425,20],[14074,20]]},"1090":{"position":[[7425,20],[14074,20]]}},"keywords":{}}],["touch",{"_index":1498,"title":{},"content":{"153":{"position":[[316,5]]},"723":{"position":[[316,5]]}},"keywords":{}}],["trac",{"_index":1728,"title":{},"content":{"170":{"position":[[165,5]]},"190":{"position":[[447,6],[518,6]]},"217":{"position":[[296,5]]},"740":{"position":[[165,5]]},"773":{"position":[[447,6],[518,6]]},"787":{"position":[[296,5]]}},"keywords":{}}],["traceback.format_stack",{"_index":4105,"title":{},"content":{"572":{"position":[[2131,25]]},"1092":{"position":[[2131,25]]}},"keywords":{}}],["track",{"_index":1203,"title":{"514":{"position":[[0,8]]},"1054":{"position":[[0,8]]}},"content":{"122":{"position":[[198,7]]},"145":{"position":[[75,5]]},"159":{"position":[[2740,5]]},"182":{"position":[[604,5]]},"195":{"position":[[12,6]]},"215":{"position":[[210,10],[1385,8],[1418,9],[1435,9],[1472,8]]},"216":{"position":[[158,8]]},"217":{"position":[[258,8]]},"248":{"position":[[362,8]]},"474":{"position":[[20,8]]},"516":{"position":[[8,8],[158,8]]},"517":{"position":[[8,8]]},"690":{"position":[[198,7]]},"715":{"position":[[75,5]]},"729":{"position":[[2740,5]]},"765":{"position":[[604,5]]},"778":{"position":[[12,6]]},"785":{"position":[[210,10],[1385,8],[1418,9],[1435,9],[1472,8]]},"786":{"position":[[158,8]]},"787":{"position":[[258,8]]},"818":{"position":[[362,8]]},"1001":{"position":[[20,8]]},"1056":{"position":[[8,8],[158,8]]},"1057":{"position":[[8,8]]}},"keywords":{}}],["tracking/metr",{"_index":1798,"title":{},"content":{"174":{"position":[[23,16],[77,16],[103,16]]},"505":{"position":[[68,16],[118,16],[144,16]]},"744":{"position":[[23,16],[77,16],[103,16]]},"1044":{"position":[[68,16],[118,16],[144,16]]}},"keywords":{}}],["tracking_uri",{"_index":4266,"title":{},"content":{"1033":{"position":[[47,13]]}},"keywords":{}}],["tracking_uri.registry_uri",{"_index":4267,"title":{},"content":{"1033":{"position":[[145,26]]}},"keywords":{}}],["trademark",{"_index":945,"title":{},"content":{"107":{"position":[[290,9]]}},"keywords":{}}],["traefik",{"_index":105,"title":{},"content":{"7":{"position":[[372,7]]},"8":{"position":[[278,7]]},"320":{"position":[[168,7]]},"324":{"position":[[399,7]]},"325":{"position":[[254,7]]},"384":{"position":[[91,7],[153,8],[244,7],[263,8],[348,7],[481,7],[557,8],[908,7],[1171,7]]},"402":{"position":[[59,7]]},"412":{"position":[[570,7]]},"413":{"position":[[208,7]]},"596":{"position":[[372,7]]},"597":{"position":[[278,7]]},"877":{"position":[[168,7]]},"894":{"position":[[399,7]]},"895":{"position":[[254,7]]},"911":{"position":[[91,7],[153,8],[244,7],[263,8],[348,7],[481,7],[557,8],[908,7],[1171,7]]},"929":{"position":[[59,7]]},"939":{"position":[[532,7]]},"940":{"position":[[99,7]]}},"keywords":{}}],["train",{"_index":22,"title":{"37":{"position":[[0,8]]},"57":{"position":[[0,8]]},"174":{"position":[[12,8]]},"189":{"position":[[35,8]]},"386":{"position":[[17,8]]},"389":{"position":[[16,8]]},"403":{"position":[[0,8]]},"415":{"position":[[41,8]]},"416":{"position":[[46,8]]},"566":{"position":[[0,8]]},"567":{"position":[[16,8]]},"579":{"position":[[8,8]]},"584":{"position":[[8,8]]},"589":{"position":[[8,8]]},"629":{"position":[[0,8]]},"649":{"position":[[0,8]]},"744":{"position":[[12,8]]},"772":{"position":[[35,8]]},"913":{"position":[[17,8]]},"916":{"position":[[16,8]]},"930":{"position":[[0,8]]},"942":{"position":[[41,8]]},"943":{"position":[[46,8]]},"1086":{"position":[[0,8]]},"1087":{"position":[[16,8]]},"1105":{"position":[[8,8]]},"1110":{"position":[[8,8]]},"1115":{"position":[[8,8]]}},"content":{"1":{"position":[[258,8]]},"23":{"position":[[964,5],[1003,5]]},"86":{"position":[[314,10],[422,10]]},"89":{"position":[[311,10],[419,10]]},"152":{"position":[[331,8]]},"156":{"position":[[1371,8]]},"159":{"position":[[631,7]]},"160":{"position":[[285,9],[321,9]]},"161":{"position":[[150,5],[404,8],[744,8],[785,8]]},"168":{"position":[[322,9]]},"171":{"position":[[209,8],[940,8],[1415,5],[1720,11]]},"177":{"position":[[56,8]]},"181":{"position":[[479,5],[1311,9],[1390,8]]},"189":{"position":[[51,8],[80,8],[1455,9]]},"199":{"position":[[297,8],[652,11],[889,8],[984,8],[1023,9],[1100,5],[1262,8]]},"200":{"position":[[1708,6],[1910,5],[2005,5]]},"215":{"position":[[1519,8]]},"217":{"position":[[899,8],[1561,8],[1951,8]]},"218":{"position":[[262,8]]},"222":{"position":[[203,8],[286,8]]},"230":{"position":[[123,8]]},"389":{"position":[[1871,8]]},"403":{"position":[[37,5],[198,5]]},"414":{"position":[[54,8]]},"461":{"position":[[282,10],[390,10],[1441,11],[1549,11]]},"463":{"position":[[443,11],[551,11]]},"466":{"position":[[287,10],[395,10],[1471,11],[1579,11]]},"469":{"position":[[467,11],[575,11]]},"475":{"position":[[491,8]]},"501":{"position":[[6,8]]},"541":{"position":[[964,5],[1003,5]]},"565":{"position":[[240,9]]},"566":{"position":[[8,8],[36,9],[169,5],[252,9],[385,5],[546,8]]},"568":{"position":[[653,8],[939,5]]},"569":{"position":[[1063,9],[1117,9]]},"570":{"position":[[269,9],[531,5],[9843,9],[10028,5],[16015,8]]},"571":{"position":[[381,5],[436,8]]},"572":{"position":[[2190,9]]},"580":{"position":[[644,5],[685,5]]},"601":{"position":[[258,8]]},"611":{"position":[[964,5],[1003,5]]},"669":{"position":[[314,10],[422,10]]},"672":{"position":[[311,10],[419,10]]},"722":{"position":[[331,8]]},"726":{"position":[[1371,8]]},"729":{"position":[[631,7]]},"730":{"position":[[285,9],[321,9]]},"731":{"position":[[150,5],[404,8],[744,8],[785,8]]},"738":{"position":[[322,9]]},"741":{"position":[[209,8],[945,8],[1427,5],[1732,11]]},"747":{"position":[[56,8]]},"764":{"position":[[479,5],[1317,9],[1396,8]]},"772":{"position":[[51,8],[80,8],[1455,9]]},"777":{"position":[[1007,8]]},"782":{"position":[[297,8],[652,11],[889,8],[984,8],[1023,9],[1100,5],[1262,8]]},"783":{"position":[[1708,6],[1910,5],[2005,5]]},"785":{"position":[[1519,8]]},"787":{"position":[[899,8],[1561,8],[1951,8]]},"788":{"position":[[262,8]]},"793":{"position":[[123,8]]},"807":{"position":[[203,8],[286,8]]},"916":{"position":[[1871,8]]},"930":{"position":[[37,5],[198,5]]},"941":{"position":[[54,8]]},"988":{"position":[[282,10],[390,10],[1441,11],[1549,11]]},"990":{"position":[[443,11],[551,11]]},"993":{"position":[[287,10],[395,10],[1471,11],[1579,11]]},"996":{"position":[[467,11],[575,11]]},"1002":{"position":[[491,8]]},"1028":{"position":[[6,8]]},"1034":{"position":[[176,9]]},"1067":{"position":[[964,5],[1003,5]]},"1085":{"position":[[240,9]]},"1086":{"position":[[8,8],[36,9],[169,5],[252,9],[385,5],[546,8]]},"1088":{"position":[[653,8],[939,5]]},"1089":{"position":[[1063,9],[1117,9]]},"1090":{"position":[[269,9],[531,5],[9843,9],[10028,5],[16015,8]]},"1091":{"position":[[381,5],[436,8]]},"1092":{"position":[[2190,9]]},"1106":{"position":[[644,5],[685,5]]}},"keywords":{}}],["train.pi",{"_index":1547,"title":{},"content":{"156":{"position":[[1037,8]]},"181":{"position":[[1373,8]]},"189":{"position":[[118,9]]},"414":{"position":[[38,8]]},"726":{"position":[[1037,8]]},"764":{"position":[[1379,8]]},"772":{"position":[[118,9]]},"941":{"position":[[38,8]]}},"keywords":{}}],["train.tfrecordsvalidation.tfrecordseval.tfrecord",{"_index":3795,"title":{},"content":{"565":{"position":[[470,49]]},"1085":{"position":[[470,49]]}},"keywords":{}}],["train/t",{"_index":1631,"title":{},"content":{"160":{"position":[[226,10]]},"730":{"position":[[226,10]]}},"keywords":{}}],["train_and_evalu",{"_index":4071,"title":{},"content":{"572":{"position":[[781,18]]},"1092":{"position":[[781,18]]}},"keywords":{}}],["train_cmd=\"queue.pl",{"_index":2822,"title":{},"content":{"386":{"position":[[714,19]]},"913":{"position":[[714,19]]}},"keywords":{}}],["train_data",{"_index":1763,"title":{},"content":{"171":{"position":[[1448,13]]},"199":{"position":[[380,13]]},"741":{"position":[[1460,13]]},"782":{"position":[[380,13]]}},"keywords":{}}],["train_steps=100",{"_index":3273,"title":{},"content":{"407":{"position":[[863,17]]},"934":{"position":[[883,17]]}},"keywords":{}}],["training.batch_s",{"_index":1982,"title":{},"content":{"199":{"position":[[1179,19]]},"782":{"position":[[1179,19]]}},"keywords":{}}],["training.ipynb",{"_index":1915,"title":{},"content":{"189":{"position":[[914,14]]},"772":{"position":[[914,14]]}},"keywords":{}}],["training.paramet",{"_index":2861,"title":{},"content":{"389":{"position":[[1592,19]]},"916":{"position":[[1592,19]]}},"keywords":{}}],["training.pi",{"_index":1867,"title":{},"content":{"182":{"position":[[365,11]]},"189":{"position":[[410,11]]},"765":{"position":[[365,11]]},"772":{"position":[[410,11]]}},"keywords":{}}],["training/batch",{"_index":2050,"title":{},"content":{"215":{"position":[[1928,14]]},"785":{"position":[[1928,14]]}},"keywords":{}}],["tran",{"_index":4275,"title":{},"content":{"1034":{"position":[[259,8]]}},"keywords":{}}],["transcript",{"_index":2808,"title":{},"content":{"386":{"position":[[70,12]]},"913":{"position":[[70,12]]}},"keywords":{}}],["transf",{"_index":1061,"title":{},"content":{"107":{"position":[[5319,12]]},"334":{"position":[[531,8]]}},"keywords":{}}],["transform",{"_index":1617,"title":{},"content":{"159":{"position":[[2665,16]]},"160":{"position":[[115,15],[139,16],[751,15]]},"161":{"position":[[294,14]]},"729":{"position":[[2665,16]]},"730":{"position":[[115,15],[139,16],[751,15]]},"731":{"position":[[294,14]]}},"keywords":{}}],["treat",{"_index":1784,"title":{},"content":{"171":{"position":[[2177,7]]},"741":{"position":[[2190,7]]}},"keywords":{}}],["tree",{"_index":2864,"title":{},"content":{"389":{"position":[[1954,7],[17531,7],[17796,7],[32385,7]]},"916":{"position":[[1954,7],[17531,7],[17796,7],[32385,7]]}},"keywords":{}}],["tri",{"_index":1349,"title":{},"content":{"137":{"position":[[147,3]]},"159":{"position":[[72,6]]},"398":{"position":[[123,3]]},"403":{"position":[[311,3]]},"407":{"position":[[1570,3]]},"709":{"position":[[147,3]]},"729":{"position":[[72,6]]},"925":{"position":[[123,3]]},"930":{"position":[[311,3]]},"934":{"position":[[1590,3]]}},"keywords":{}}],["trigg",{"_index":2071,"title":{},"content":{"217":{"position":[[319,9]]},"321":{"position":[[53,9]]},"326":{"position":[[49,9]]},"389":{"position":[[13095,8],[13150,8],[17388,8],[17442,8],[28644,8],[28699,8],[32242,8],[32296,8]]},"787":{"position":[[319,9]]},"878":{"position":[[53,9]]},"896":{"position":[[49,9]]},"916":{"position":[[13095,8],[13150,8],[17388,8],[17442,8],[28644,8],[28699,8],[32242,8],[32296,8]]}},"keywords":{}}],["trivial",{"_index":1343,"title":{},"content":{"136":{"position":[[611,7]]},"708":{"position":[[611,7]]}},"keywords":{}}],["troubl",{"_index":3220,"title":{},"content":{"398":{"position":[[141,7]]},"925":{"position":[[141,7]]}},"keywords":{}}],["troubleshoot",{"_index":353,"title":{"22":{"position":[[9,15]]},"540":{"position":[[9,15]]},"610":{"position":[[9,15]]},"1066":{"position":[[9,15]]}},"content":{"159":{"position":[[923,15]]},"163":{"position":[[485,15]]},"181":{"position":[[2056,15]]},"215":{"position":[[1110,16]]},"729":{"position":[[923,15]]},"733":{"position":[[485,15]]},"764":{"position":[[2069,15]]},"785":{"position":[[1110,16]]}},"keywords":{}}],["true",{"_index":269,"title":{},"content":{"17":{"position":[[374,6]]},"74":{"position":[[507,5]]},"81":{"position":[[689,5]]},"86":{"position":[[267,5],[378,5],[499,5]]},"89":{"position":[[264,5],[375,5],[496,5]]},"93":{"position":[[1720,4]]},"94":{"position":[[634,4]]},"95":{"position":[[425,4]]},"96":{"position":[[285,4]]},"97":{"position":[[335,4]]},"103":{"position":[[170,5]]},"110":{"position":[[758,4]]},"111":{"position":[[450,4]]},"112":{"position":[[384,4]]},"113":{"position":[[286,4]]},"115":{"position":[[324,4]]},"199":{"position":[[1080,4]]},"384":{"position":[[281,4]]},"460":{"position":[[445,4]]},"461":{"position":[[235,5],[346,5],[467,5]]},"466":{"position":[[240,5],[351,5],[472,5]]},"570":{"position":[[806,5],[1108,4],[5042,4],[10590,4],[14548,4],[16659,4]]},"609":{"position":[[374,6]]},"666":{"position":[[507,5]]},"669":{"position":[[267,5],[378,5],[499,5]]},"672":{"position":[[264,5],[375,5],[496,5]]},"680":{"position":[[689,5]]},"705":{"position":[[170,5]]},"782":{"position":[[1080,4]]},"867":{"position":[[638,5]]},"911":{"position":[[281,4]]},"987":{"position":[[445,4]]},"988":{"position":[[235,5],[346,5],[467,5]]},"993":{"position":[[240,5],[351,5],[472,5]]},"1090":{"position":[[806,5],[1108,4],[5042,4],[10590,4],[14548,4],[16659,4]]}},"keywords":{}}],["true/fal",{"_index":1976,"title":{},"content":{"199":{"position":[[156,10]]},"782":{"position":[[156,10]]}},"keywords":{}}],["trust",{"_index":1269,"title":{},"content":{"133":{"position":[[364,5],[2483,5]]},"314":{"position":[[150,5],[171,5],[555,6],[720,5],[800,6],[986,5],[1161,5],[1173,5],[1196,5],[1214,5],[1331,6],[1431,6],[1670,6]]},"331":{"position":[[2436,7]]}},"keywords":{}}],["truststor",{"_index":293,"title":{},"content":{"17":{"position":[[892,10],[1034,10],[1148,10]]},"609":{"position":[[892,10],[1034,10],[1148,10]]}},"keywords":{}}],["tun",{"_index":1633,"title":{},"content":{"160":{"position":[[353,7]]},"163":{"position":[[448,6]]},"168":{"position":[[336,7]]},"171":{"position":[[2037,6]]},"730":{"position":[[353,7]]},"733":{"position":[[448,6]]},"738":{"position":[[336,7]]},"741":{"position":[[2049,6]]}},"keywords":{}}],["turn",{"_index":2202,"title":{},"content":{"265":{"position":[[137,4]]},"836":{"position":[[137,4]]}},"keywords":{}}],["tutori",{"_index":2452,"title":{},"content":{"325":{"position":[[97,8]]},"330":{"position":[[45,9]]},"895":{"position":[[97,8]]}},"keywords":{}}],["tutorials/imag",{"_index":3810,"title":{},"content":{"568":{"position":[[540,15]]},"1088":{"position":[[540,15]]}},"keywords":{}}],["tvbr9",{"_index":4260,"title":{},"content":{"939":{"position":[[496,5]]}},"keywords":{}}],["twic",{"_index":1113,"title":{},"content":{"107":{"position":[[8036,5]]}},"keywords":{}}],["twin",{"_index":3657,"title":{},"content":{"513":{"position":[[414,5],[501,5]]},"1052":{"position":[[414,5],[501,5]]}},"keywords":{}}],["two",{"_index":168,"title":{"12":{"position":[[0,3]]},"604":{"position":[[0,3]]}},"content":{"141":{"position":[[1883,3]]},"151":{"position":[[1992,3]]},"156":{"position":[[169,3]]},"171":{"position":[[557,3]]},"181":{"position":[[1420,3]]},"231":{"position":[[864,3]]},"259":{"position":[[41,3]]},"267":{"position":[[83,3]]},"269":{"position":[[141,3]]},"270":{"position":[[128,3]]},"375":{"position":[[37,3]]},"383":{"position":[[715,3]]},"437":{"position":[[541,3]]},"503":{"position":[[132,3]]},"549":{"position":[[38,3]]},"553":{"position":[[40,3]]},"559":{"position":[[42,3]]},"721":{"position":[[1992,3]]},"726":{"position":[[169,3]]},"741":{"position":[[562,3]]},"764":{"position":[[1427,3]]},"794":{"position":[[1117,3]]},"830":{"position":[[41,3]]},"838":{"position":[[83,3]]},"840":{"position":[[141,3]]},"841":{"position":[[128,3]]},"902":{"position":[[37,3]]},"910":{"position":[[715,3]]},"964":{"position":[[541,3]]},"1030":{"position":[[132,3]]},"1075":{"position":[[38,3]]},"1079":{"position":[[40,3]]},"1094":{"position":[[42,3]]}},"keywords":{}}],["typ",{"_index":296,"title":{"383":{"position":[[7,4]]},"910":{"position":[[7,4]]}},"content":{"17":{"position":[[1088,4],[1109,4]]},"35":{"position":[[194,5]]},"71":{"position":[[66,5]]},"74":{"position":[[76,5]]},"77":{"position":[[65,5]]},"78":{"position":[[65,5]]},"81":{"position":[[73,5]]},"86":{"position":[[63,5]]},"89":{"position":[[56,5]]},"91":{"position":[[82,5]]},"95":{"position":[[71,5]]},"100":{"position":[[63,5]]},"105":{"position":[[132,5]]},"106":{"position":[[64,5]]},"107":{"position":[[5522,5],[5735,5],[5765,5],[5797,4],[7595,5],[7670,5]]},"109":{"position":[[71,5]]},"112":{"position":[[81,5]]},"133":{"position":[[2730,5]]},"151":{"position":[[382,5]]},"171":{"position":[[526,4],[561,5],[1618,7]]},"182":{"position":[[235,5],[907,5],[1050,5]]},"184":{"position":[[19,5]]},"189":{"position":[[300,4],[798,4],[1239,4]]},"199":{"position":[[550,7]]},"210":{"position":[[27,5]]},"215":{"position":[[1254,5]]},"216":{"position":[[7,4]]},"223":{"position":[[412,5]]},"224":{"position":[[101,4]]},"225":{"position":[[105,4],[159,5]]},"226":{"position":[[397,4]]},"331":{"position":[[1577,5],[1833,5]]},"383":{"position":[[37,6],[545,5],[1270,5]]},"422":{"position":[[65,4],[259,4]]},"423":{"position":[[31,5]]},"427":{"position":[[11,4]]},"430":{"position":[[11,4]]},"431":{"position":[[32,5]]},"433":{"position":[[11,4]]},"437":{"position":[[63,4],[318,4],[545,5],[930,4],[1245,4]]},"438":{"position":[[31,5]]},"441":{"position":[[31,5]]},"445":{"position":[[11,4]]},"448":{"position":[[11,4]]},"449":{"position":[[32,5]]},"451":{"position":[[11,4]]},"456":{"position":[[11,4]]},"460":{"position":[[11,4],[384,4],[607,4],[862,4],[1143,4],[1378,4]]},"461":{"position":[[31,5]]},"465":{"position":[[11,4]]},"466":{"position":[[32,5]]},"468":{"position":[[11,4]]},"471":{"position":[[11,4]]},"472":{"position":[[31,5]]},"478":{"position":[[55,4],[257,4],[443,4]]},"479":{"position":[[31,5]]},"481":{"position":[[11,4]]},"484":{"position":[[11,4]]},"487":{"position":[[11,4]]},"509":{"position":[[288,4]]},"520":{"position":[[61,4]]},"553":{"position":[[953,6]]},"569":{"position":[[522,8],[1557,8]]},"609":{"position":[[1088,4],[1109,4]]},"627":{"position":[[194,5]]},"663":{"position":[[66,5]]},"666":{"position":[[76,5]]},"669":{"position":[[63,5]]},"672":{"position":[[56,5]]},"674":{"position":[[82,5]]},"676":{"position":[[65,5]]},"677":{"position":[[65,5]]},"680":{"position":[[73,5]]},"702":{"position":[[63,5]]},"721":{"position":[[382,5]]},"741":{"position":[[531,4],[566,5],[1630,7]]},"759":{"position":[[27,5]]},"765":{"position":[[235,5],[907,5],[1050,5]]},"767":{"position":[[19,5]]},"772":{"position":[[300,4],[798,4],[1239,4]]},"782":{"position":[[550,7]]},"785":{"position":[[1254,5]]},"786":{"position":[[7,4]]},"808":{"position":[[412,5]]},"809":{"position":[[101,4]]},"810":{"position":[[126,4],[180,5]]},"811":{"position":[[397,4]]},"910":{"position":[[37,6],[545,5],[1270,5]]},"949":{"position":[[65,4],[259,4]]},"950":{"position":[[31,5]]},"954":{"position":[[11,4]]},"957":{"position":[[11,4]]},"958":{"position":[[32,5]]},"960":{"position":[[11,4]]},"964":{"position":[[63,4],[318,4],[545,5],[930,4],[1245,4]]},"965":{"position":[[31,5]]},"968":{"position":[[31,5]]},"972":{"position":[[11,4]]},"975":{"position":[[11,4]]},"976":{"position":[[32,5]]},"978":{"position":[[11,4]]},"983":{"position":[[11,4]]},"987":{"position":[[11,4],[384,4],[607,4],[862,4],[1143,4],[1378,4]]},"988":{"position":[[31,5]]},"992":{"position":[[11,4]]},"993":{"position":[[32,5]]},"995":{"position":[[11,4]]},"998":{"position":[[11,4]]},"999":{"position":[[31,5]]},"1010":{"position":[[55,4],[257,4],[443,4]]},"1011":{"position":[[31,5]]},"1013":{"position":[[11,4]]},"1016":{"position":[[11,4]]},"1019":{"position":[[11,4]]},"1048":{"position":[[288,4]]},"1079":{"position":[[953,6]]},"1089":{"position":[[522,8],[1557,8]]}},"keywords":{}}],["type:submarin",{"_index":585,"title":{},"content":{"35":{"position":[[156,14]]},"627":{"position":[[156,14]]}},"keywords":{}}],["typic",{"_index":951,"title":{},"content":{"107":{"position":[[488,7],[7471,9]]},"135":{"position":[[174,9]]},"160":{"position":[[546,9],[603,9]]},"161":{"position":[[129,7]]},"163":{"position":[[660,9]]},"215":{"position":[[1547,9]]},"707":{"position":[[174,9]]},"730":{"position":[[546,9],[603,9]]},"731":{"position":[[129,7]]},"733":{"position":[[660,9]]},"785":{"position":[[1547,9]]}},"keywords":{}}],["tz=\"asia/shanghai",{"_index":2838,"title":{},"content":{"389":{"position":[[637,18]]},"916":{"position":[[637,18]]}},"keywords":{}}],["tzdata",{"_index":3696,"title":{},"content":{"549":{"position":[[590,6]]},"1075":{"position":[[590,6]]}},"keywords":{}}],["u",{"_index":463,"title":{},"content":{"27":{"position":[[71,1]]},"300":{"position":[[500,2]]},"302":{"position":[[245,2]]},"320":{"position":[[1329,1]]},"545":{"position":[[71,1]]},"615":{"position":[[71,1]]},"867":{"position":[[500,2]]},"869":{"position":[[245,2]]},"877":{"position":[[1329,1]]},"1071":{"position":[[71,1]]}},"keywords":{}}],["u'cloud",{"_index":3862,"title":{},"content":{"570":{"position":[[1156,9],[10638,9],[16707,9]]},"1090":{"position":[[1156,9],[10638,9],[16707,9]]}},"keywords":{}}],["u'grpc://mast",{"_index":3870,"title":{},"content":{"570":{"position":[[1342,15],[16893,15]]},"1090":{"position":[[1342,15],[16893,15]]}},"keywords":{}}],["u'mast",{"_index":3848,"title":{},"content":{"570":{"position":[[782,10]]},"1090":{"position":[[782,10]]}},"keywords":{}}],["u'p",{"_index":4040,"title":{},"content":{"570":{"position":[[16336,6]]},"1090":{"position":[[16336,6]]}},"keywords":{}}],["u'work",{"_index":3981,"title":{},"content":{"570":{"position":[[10261,10]]},"1090":{"position":[[10261,10]]}},"keywords":{}}],["uber",{"_index":4172,"title":{},"content":{"580":{"position":[[1510,4]]},"1106":{"position":[[1510,4]]}},"keywords":{}}],["ubuntu",{"_index":2794,"title":{},"content":{"383":{"position":[[965,6]]},"910":{"position":[[965,6]]}},"keywords":{}}],["ubuntu18.04",{"_index":2719,"title":{},"content":{"375":{"position":[[145,11],[435,11]]},"553":{"position":[[425,11]]},"902":{"position":[[145,11],[435,11]]},"1079":{"position":[[425,11]]}},"keywords":{}}],["ubuntu:16",{"_index":1900,"title":{},"content":{"188":{"position":[[560,12]]},"771":{"position":[[560,12]]}},"keywords":{}}],["ubuntu:18.04",{"_index":1538,"title":{},"content":{"156":{"position":[[424,12]]},"549":{"position":[[117,12],[390,12]]},"553":{"position":[[121,12]]},"559":{"position":[[125,12],[397,12]]},"726":{"position":[[424,12]]},"1075":{"position":[[117,12],[390,12]]},"1079":{"position":[[121,12]]},"1094":{"position":[[125,12],[397,12]]}},"keywords":{}}],["ubyte.gz\\ndownload",{"_index":789,"title":{},"content":{"84":{"position":[[471,21],[544,21],[616,21],[1648,21],[1721,21],[1793,21]]},"683":{"position":[[471,21],[544,21],[616,21],[1648,21],[1721,21],[1793,21]]}},"keywords":{}}],["ubyte.gz\\nprocessing...\\ndone!\\ntrain",{"_index":793,"title":{},"content":{"84":{"position":[[688,37],[1865,37]]},"683":{"position":[[688,37],[1865,37]]}},"keywords":{}}],["ufw",{"_index":2910,"title":{},"content":{"389":{"position":[[2613,3],[18455,3]]},"916":{"position":[[2613,3],[18455,3]]}},"keywords":{}}],["ui",{"_index":1230,"title":{"128":{"position":[[39,2]]},"406":{"position":[[14,2]]},"473":{"position":[[7,2]]},"696":{"position":[[39,2]]},"933":{"position":[[14,2]]},"1000":{"position":[[7,2]]}},"content":{"161":{"position":[[929,4]]},"174":{"position":[[145,3]]},"179":{"position":[[81,2]]},"190":{"position":[[470,2]]},"204":{"position":[[153,2]]},"208":{"position":[[76,2],[578,2]]},"230":{"position":[[190,2],[496,2]]},"352":{"position":[[1005,2]]},"405":{"position":[[23,2]]},"406":{"position":[[38,3]]},"407":{"position":[[1670,3]]},"474":{"position":[[7,2],[151,3],[199,3]]},"475":{"position":[[404,2]]},"505":{"position":[[186,3]]},"731":{"position":[[929,4]]},"744":{"position":[[145,3]]},"749":{"position":[[81,2]]},"753":{"position":[[153,2]]},"757":{"position":[[76,2],[578,2]]},"773":{"position":[[470,2]]},"793":{"position":[[190,2],[496,2]]},"932":{"position":[[23,2]]},"933":{"position":[[38,3]]},"934":{"position":[[1690,3]]},"945":{"position":[[106,2]]},"1001":{"position":[[7,2],[151,3],[199,3]]},"1002":{"position":[[404,2]]},"1044":{"position":[[186,3]]}},"keywords":{}}],["ui/api",{"_index":1789,"title":{},"content":{"171":{"position":[[2293,7]]},"190":{"position":[[540,7]]},"199":{"position":[[1308,7]]},"741":{"position":[[2306,7]]},"773":{"position":[[540,7]]},"782":{"position":[[1308,7]]}},"keywords":{}}],["ui/cli/sdk",{"_index":1739,"title":{},"content":{"171":{"position":[[383,11],[440,11]]},"741":{"position":[[383,11],[440,11]]}},"keywords":{}}],["ui/r",{"_index":1779,"title":{},"content":{"171":{"position":[[1976,7]]},"741":{"position":[[1988,7]]}},"keywords":{}}],["uid",{"_index":744,"title":{},"content":{"77":{"position":[[726,6]]},"78":{"position":[[873,6]]},"79":{"position":[[235,6],[881,6]]},"80":{"position":[[268,6]]},"82":{"position":[[271,6]]},"103":{"position":[[295,6]]},"331":{"position":[[2677,3]]},"332":{"position":[[121,3]]},"676":{"position":[[726,6]]},"677":{"position":[[873,6]]},"678":{"position":[[235,6],[881,6]]},"679":{"position":[[268,6]]},"681":{"position":[[271,6]]},"705":{"position":[[295,6]]}},"keywords":{}}],["uid\":\"4944c603",{"_index":3460,"title":{},"content":{"441":{"position":[[830,15]]},"443":{"position":[[1311,15]]},"446":{"position":[[247,15]]},"449":{"position":[[741,15]]},"452":{"position":[[250,15]]},"968":{"position":[[830,15]]},"970":{"position":[[1311,15]]},"973":{"position":[[247,15]]},"976":{"position":[[741,15]]},"979":{"position":[[250,15]]}},"keywords":{}}],["uid\":\"5a6ec922",{"_index":3429,"title":{},"content":{"438":{"position":[[710,15]]},"965":{"position":[[710,15]]}},"keywords":{}}],["uid\":\"5a94c01d",{"_index":893,"title":{},"content":{"100":{"position":[[544,15]]},"101":{"position":[[286,15]]},"102":{"position":[[279,15]]},"702":{"position":[[544,15]]},"703":{"position":[[286,15]]},"704":{"position":[[279,15]]}},"keywords":{}}],["uid\":\"a56713da",{"_index":3540,"title":{},"content":{"479":{"position":[[504,15]]},"482":{"position":[[268,15]]},"485":{"position":[[256,15]]},"488":{"position":[[263,15]]},"1011":{"position":[[504,15]]},"1014":{"position":[[268,15]]},"1017":{"position":[[256,15]]},"1020":{"position":[[263,15]]}},"keywords":{}}],["uid\":\"b895985c",{"_index":3468,"title":{},"content":{"443":{"position":[[220,15]]},"472":{"position":[[400,15]]},"970":{"position":[[220,15]]},"999":{"position":[[400,15]]}},"keywords":{}}],["ultim",{"_index":2376,"title":{},"content":{"314":{"position":[[562,8],[581,8],[663,10],[807,8],[826,8],[908,10],[1220,10],[1322,8],[1438,8],[1457,8],[1539,10],[1677,8],[1696,8],[1778,10]]},"331":{"position":[[2425,10]]},"332":{"position":[[125,10]]}},"keywords":{}}],["ultimate]gular2",{"_index":2404,"title":{},"content":{"314":{"position":[[2773,16]]}},"keywords":{}}],["unabl",{"_index":121,"title":{},"content":{"7":{"position":[[599,6]]},"28":{"position":[[53,6]]},"546":{"position":[[53,6]]},"596":{"position":[[599,6]]},"616":{"position":[[53,6]]},"1072":{"position":[[53,6]]}},"keywords":{}}],["unaccept",{"_index":1353,"title":{},"content":{"137":{"position":[[248,12]]},"709":{"position":[[248,12]]}},"keywords":{}}],["unavail",{"_index":2203,"title":{},"content":{"265":{"position":[[245,12]]},"273":{"position":[[860,12],[1408,11]]},"836":{"position":[[245,12]]},"844":{"position":[[860,12],[1408,11]]}},"keywords":{}}],["und",{"_index":846,"title":{"93":{"position":[[20,5]]}},"content":{"107":{"position":[[33,5],[535,5],[6473,5]]},"149":{"position":[[25,5]]},"159":{"position":[[1120,5]]},"167":{"position":[[255,5]]},"171":{"position":[[174,5]]},"194":{"position":[[759,5],[1485,5]]},"217":{"position":[[1590,5]]},"319":{"position":[[15,5]]},"324":{"position":[[15,5]]},"333":{"position":[[179,5]]},"377":{"position":[[30,5]]},"551":{"position":[[0,5]]},"556":{"position":[[0,5]]},"562":{"position":[[0,5]]},"719":{"position":[[25,5]]},"729":{"position":[[1120,5]]},"737":{"position":[[255,5]]},"741":{"position":[[174,5]]},"777":{"position":[[765,5],[1765,5]]},"787":{"position":[[1590,5]]},"876":{"position":[[15,5]]},"894":{"position":[[15,5]]},"904":{"position":[[30,5]]},"1034":{"position":[[131,5]]},"1035":{"position":[[14,5]]},"1037":{"position":[[13,5]]},"1077":{"position":[[0,5]]},"1082":{"position":[[0,5]]},"1097":{"position":[[0,5]]}},"keywords":{}}],["underli",{"_index":1657,"title":{"162":{"position":[[24,10]]},"732":{"position":[[24,10]]}},"content":{"162":{"position":[[92,10]]},"163":{"position":[[77,10]]},"222":{"position":[[396,10]]},"246":{"position":[[313,10]]},"732":{"position":[[92,10]]},"733":{"position":[[77,10]]},"807":{"position":[[396,10]]},"816":{"position":[[313,10]]}},"keywords":{}}],["understand",{"_index":573,"title":{},"content":{"33":{"position":[[481,10]]},"107":{"position":[[7260,10]]},"117":{"position":[[198,10]]},"141":{"position":[[988,11]]},"163":{"position":[[345,10]]},"181":{"position":[[2075,13]]},"182":{"position":[[167,10]]},"187":{"position":[[10,10],[67,10]]},"188":{"position":[[627,10]]},"201":{"position":[[103,10]]},"322":{"position":[[50,10]]},"625":{"position":[[481,10]]},"685":{"position":[[198,10]]},"733":{"position":[[345,10]]},"750":{"position":[[103,10]]},"764":{"position":[[2088,13]]},"765":{"position":[[167,10]]},"770":{"position":[[10,10],[67,10]]},"771":{"position":[[627,10]]},"879":{"position":[[50,10]]}},"keywords":{}}],["undertak",{"_index":1131,"title":{},"content":{"107":{"position":[[8660,10]]}},"keywords":{}}],["unexpect",{"_index":407,"title":{},"content":{"25":{"position":[[249,11]]},"509":{"position":[[460,10],[515,11]]},"543":{"position":[[249,11]]},"613":{"position":[[249,11]]},"1048":{"position":[[460,10],[515,11]]},"1069":{"position":[[249,11]]}},"keywords":{}}],["unfriendli",{"_index":2084,"title":{},"content":{"217":{"position":[[1814,10]]},"787":{"position":[[1814,10]]}},"keywords":{}}],["unifi",{"_index":1615,"title":{},"content":{"159":{"position":[[2613,5]]},"729":{"position":[[2613,5]]}},"keywords":{}}],["uninstal",{"_index":166,"title":{"10":{"position":[[0,9]]},"382":{"position":[[0,9]]},"599":{"position":[[0,9]]},"909":{"position":[[0,9]]}},"content":{"382":{"position":[[5,9]]},"869":{"position":[[1679,9]]},"909":{"position":[[5,9]]}},"keywords":{}}],["uniqu",{"_index":1487,"title":{},"content":{"152":{"position":[[513,6]]},"189":{"position":[[1276,6]]},"722":{"position":[[513,6]]},"772":{"position":[[1276,6]]}},"keywords":{}}],["unit",{"_index":2315,"title":{"510":{"position":[[0,4]]},"1049":{"position":[[0,4]]}},"content":{"299":{"position":[[0,4],[188,4]]},"338":{"position":[[179,4]]},"339":{"position":[[117,4]]},"510":{"position":[[35,4],[107,4],[165,4]]},"570":{"position":[[2040,4],[2124,4],[2210,4],[2296,4],[2382,4],[2468,4],[2554,4],[2640,4],[2735,4],[2821,4],[2909,4],[2997,4],[3085,4],[3173,4],[3259,4],[3347,4],[3435,4],[3523,4],[3611,4],[3699,4],[3787,4],[3880,4],[3964,4],[4050,4],[4136,4],[4222,4],[4308,4],[4394,4],[4480,4],[4554,4],[5246,4],[5330,4],[5416,4],[5502,4],[5588,4],[5674,4],[5760,4],[5846,4],[5941,4],[6027,4],[6115,4],[6203,4],[6291,4],[6379,4],[6467,4],[6555,4],[6648,4],[6732,4],[6818,4],[6904,4],[6990,4],[7076,4],[7162,4],[7248,4],[7322,4],[11457,4],[11541,4],[11627,4],[11713,4],[11799,4],[11885,4],[11971,4],[12057,4],[12152,4],[12238,4],[12326,4],[12414,4],[12502,4],[12590,4],[12676,4],[12764,4],[12852,4],[12940,4],[13028,4],[13116,4],[13204,4],[13297,4],[13381,4],[13467,4],[13553,4],[13639,4],[13725,4],[13811,4],[13897,4],[13971,4]]},"866":{"position":[[0,4],[188,4]]},"1049":{"position":[[35,4],[107,4],[165,4]]},"1090":{"position":[[2040,4],[2124,4],[2210,4],[2296,4],[2382,4],[2468,4],[2554,4],[2640,4],[2735,4],[2821,4],[2909,4],[2997,4],[3085,4],[3173,4],[3259,4],[3347,4],[3435,4],[3523,4],[3611,4],[3699,4],[3787,4],[3880,4],[3964,4],[4050,4],[4136,4],[4222,4],[4308,4],[4394,4],[4480,4],[4554,4],[5246,4],[5330,4],[5416,4],[5502,4],[5588,4],[5674,4],[5760,4],[5846,4],[5941,4],[6027,4],[6115,4],[6203,4],[6291,4],[6379,4],[6467,4],[6555,4],[6648,4],[6732,4],[6818,4],[6904,4],[6990,4],[7076,4],[7162,4],[7248,4],[7322,4],[11457,4],[11541,4],[11627,4],[11713,4],[11799,4],[11885,4],[11971,4],[12057,4],[12152,4],[12238,4],[12326,4],[12414,4],[12502,4],[12590,4],[12676,4],[12764,4],[12852,4],[12940,4],[13028,4],[13116,4],[13204,4],[13297,4],[13381,4],[13467,4],[13553,4],[13639,4],[13725,4],[13811,4],[13897,4],[13971,4]]}},"keywords":{}}],["univ",{"_index":2208,"title":{"267":{"position":[[0,9]]},"838":{"position":[[0,9]]}},"content":{},"keywords":{}}],["unless",{"_index":1133,"title":{},"content":{"107":{"position":[[9059,6]]}},"keywords":{}}],["unpack",{"_index":3061,"title":{},"content":{"389":{"position":[[7650,6],[7697,9],[7807,6],[7848,9],[7956,6],[8011,9],[8130,6],[8182,9],[8290,6],[8339,9],[8442,6],[8499,9],[8610,6],[8660,9],[8772,6],[8845,9],[8978,6],[9051,9],[9183,6],[9243,9],[9364,6],[9424,9],[9548,6],[9601,9],[9713,6],[9757,9],[9854,6],[9900,9],[10010,6],[10071,9],[10181,6],[10231,9],[10333,6],[10372,9],[10466,6],[10516,9],[10621,6],[10678,9],[10798,6],[10849,9],[10965,6],[11018,9],[11121,6],[11161,9],[11262,6],[11313,9],[11427,6],[11480,9],[11591,6],[11649,9],[11774,6],[11840,9],[11964,6],[12025,9],[12151,6],[12205,9],[12322,6],[12369,9],[12475,6],[12519,9],[12626,6],[12689,9],[12816,6],[12873,9],[12991,6],[13041,9],[23368,6],[23415,9],[23525,6],[23566,9],[23674,6],[23729,9],[23848,6],[23900,9],[24008,6],[24057,9],[24160,6],[24217,9],[24328,6],[24378,9],[24490,6],[24563,9],[24696,6],[24769,9],[24901,6],[24961,9],[25082,6],[25142,9],[25266,6],[25319,9],[25431,6],[25475,9],[25572,6],[25618,9],[25728,6],[25789,9],[25899,6],[25949,9],[26051,6],[26090,9],[26184,6],[26234,9],[26339,6],[26396,9],[26516,6],[26567,9],[26683,6],[26736,9],[26839,6],[26879,9],[26980,6],[27031,9],[27140,6],[27198,9],[27323,6],[27389,9],[27513,6],[27574,9],[27700,6],[27754,9],[27871,6],[27918,9],[28024,6],[28068,9],[28175,6],[28238,9],[28365,6],[28422,9],[28540,6],[28590,9]]},"916":{"position":[[7650,6],[7697,9],[7807,6],[7848,9],[7956,6],[8011,9],[8130,6],[8182,9],[8290,6],[8339,9],[8442,6],[8499,9],[8610,6],[8660,9],[8772,6],[8845,9],[8978,6],[9051,9],[9183,6],[9243,9],[9364,6],[9424,9],[9548,6],[9601,9],[9713,6],[9757,9],[9854,6],[9900,9],[10010,6],[10071,9],[10181,6],[10231,9],[10333,6],[10372,9],[10466,6],[10516,9],[10621,6],[10678,9],[10798,6],[10849,9],[10965,6],[11018,9],[11121,6],[11161,9],[11262,6],[11313,9],[11427,6],[11480,9],[11591,6],[11649,9],[11774,6],[11840,9],[11964,6],[12025,9],[12151,6],[12205,9],[12322,6],[12369,9],[12475,6],[12519,9],[12626,6],[12689,9],[12816,6],[12873,9],[12991,6],[13041,9],[23368,6],[23415,9],[23525,6],[23566,9],[23674,6],[23729,9],[23848,6],[23900,9],[24008,6],[24057,9],[24160,6],[24217,9],[24328,6],[24378,9],[24490,6],[24563,9],[24696,6],[24769,9],[24901,6],[24961,9],[25082,6],[25142,9],[25266,6],[25319,9],[25431,6],[25475,9],[25572,6],[25618,9],[25728,6],[25789,9],[25899,6],[25949,9],[26051,6],[26090,9],[26184,6],[26234,9],[26339,6],[26396,9],[26516,6],[26567,9],[26683,6],[26736,9],[26839,6],[26879,9],[26980,6],[27031,9],[27140,6],[27198,9],[27323,6],[27389,9],[27513,6],[27574,9],[27700,6],[27754,9],[27871,6],[27918,9],[28024,6],[28068,9],[28175,6],[28238,9],[28365,6],[28422,9],[28540,6],[28590,9]]}},"keywords":{}}],["unpredict",{"_index":2449,"title":{},"content":{"322":{"position":[[189,13]]},"879":{"position":[[189,13]]}},"keywords":{}}],["unselect",{"_index":3043,"title":{},"content":{"389":{"position":[[6989,10],[7760,10],[7907,10],[8078,10],[8252,10],[8400,10],[8568,10],[8722,10],[8928,10],[9134,10],[9315,10],[9496,10],[9672,10],[9806,10],[9962,10],[10142,10],[10291,10],[10425,10],[10578,10],[10747,10],[10914,10],[11083,10],[11213,10],[11376,10],[11545,10],[11721,10],[11916,10],[12096,10],[12273,10],[12430,10],[12577,10],[12766,10],[12944,10],[22707,10],[23478,10],[23625,10],[23796,10],[23970,10],[24118,10],[24286,10],[24440,10],[24646,10],[24852,10],[25033,10],[25214,10],[25390,10],[25524,10],[25680,10],[25860,10],[26009,10],[26143,10],[26296,10],[26465,10],[26632,10],[26801,10],[26931,10],[27094,10],[27270,10],[27465,10],[27645,10],[27822,10],[27979,10],[28126,10],[28315,10],[28493,10]]},"916":{"position":[[6989,10],[7760,10],[7907,10],[8078,10],[8252,10],[8400,10],[8568,10],[8722,10],[8928,10],[9134,10],[9315,10],[9496,10],[9672,10],[9806,10],[9962,10],[10142,10],[10291,10],[10425,10],[10578,10],[10747,10],[10914,10],[11083,10],[11213,10],[11376,10],[11545,10],[11721,10],[11916,10],[12096,10],[12273,10],[12430,10],[12577,10],[12766,10],[12944,10],[22707,10],[23478,10],[23625,10],[23796,10],[23970,10],[24118,10],[24286,10],[24440,10],[24646,10],[24852,10],[25033,10],[25214,10],[25390,10],[25524,10],[25680,10],[25860,10],[26009,10],[26143,10],[26296,10],[26465,10],[26632,10],[26801,10],[26931,10],[27094,10],[27270,10],[27465,10],[27645,10],[27822,10],[27979,10],[28126,10],[28315,10],[28493,10]]}},"keywords":{}}],["unspecifi",{"_index":4286,"title":{},"content":{"1037":{"position":[[149,12]]},"1038":{"position":[[184,12]]}},"keywords":{}}],["unsubscrib",{"_index":1431,"title":{},"content":{"148":{"position":[[102,12],[185,12],[275,12]]},"718":{"position":[[102,12],[185,12],[275,12]]}},"keywords":{}}],["until",{"_index":3587,"title":{},"content":{"503":{"position":[[6,5]]},"1030":{"position":[[6,5]]}},"keywords":{}}],["unv",{"_index":2096,"title":{},"content":{"219":{"position":[[351,11]]},"789":{"position":[[351,11]]}},"keywords":{}}],["unverifi",{"_index":2545,"title":{},"content":{"335":{"position":[[68,12]]}},"keywords":{}}],["unzip",{"_index":2413,"title":{},"content":{"316":{"position":[[0,5]]},"317":{"position":[[0,5]]},"341":{"position":[[208,5]]},"345":{"position":[[153,5]]},"375":{"position":[[616,5]]},"559":{"position":[[651,5]]},"902":{"position":[[616,5]]},"1094":{"position":[[651,5]]}},"keywords":{}}],["up",{"_index":1209,"title":{"298":{"position":[[8,2]]},"865":{"position":[[8,2]]}},"content":{"123":{"position":[[38,2]]},"143":{"position":[[353,3]]},"159":{"position":[[719,2]]},"217":{"position":[[1311,2],[2361,3]]},"226":{"position":[[43,2]]},"308":{"position":[[56,2]]},"331":{"position":[[2023,3]]},"389":{"position":[[13201,2],[13244,2],[13283,2],[13330,2],[13380,2],[13497,2],[13546,2],[13622,2],[13685,2],[13748,2],[13800,2],[13852,2],[13903,2],[13932,2],[13974,2],[14025,2],[14065,2],[14098,2],[14701,2],[15069,2],[15211,2],[15318,2],[15363,2],[15471,2],[15616,2],[16311,2],[16363,2],[16419,2],[17106,2],[17154,2],[17195,2],[17233,2],[17290,2],[17341,2],[28750,2],[28793,2],[28832,2],[28879,2],[28929,2],[29046,2],[29095,2],[29171,2],[29234,2],[29297,2],[29349,2],[29401,2],[29452,2],[29481,2],[29523,2],[29574,2],[29614,2],[29647,2],[30250,2],[30618,2],[30760,2],[30867,2],[30912,2],[31020,2],[31165,2],[31217,2],[31273,2],[31960,2],[32008,2],[32049,2],[32087,2],[32144,2],[32195,2]]},"406":{"position":[[696,2]]},"559":{"position":[[417,2]]},"568":{"position":[[247,2]]},"569":{"position":[[135,2],[221,2]]},"691":{"position":[[38,2]]},"713":{"position":[[238,3]]},"729":{"position":[[719,2]]},"787":{"position":[[1311,2],[2361,3]]},"811":{"position":[[43,2]]},"874":{"position":[[56,2]]},"916":{"position":[[13201,2],[13244,2],[13283,2],[13330,2],[13380,2],[13497,2],[13546,2],[13622,2],[13685,2],[13748,2],[13800,2],[13852,2],[13903,2],[13932,2],[13974,2],[14025,2],[14065,2],[14098,2],[14701,2],[15069,2],[15211,2],[15318,2],[15363,2],[15471,2],[15616,2],[16311,2],[16363,2],[16419,2],[17106,2],[17154,2],[17195,2],[17233,2],[17290,2],[17341,2],[28750,2],[28793,2],[28832,2],[28879,2],[28929,2],[29046,2],[29095,2],[29171,2],[29234,2],[29297,2],[29349,2],[29401,2],[29452,2],[29481,2],[29523,2],[29574,2],[29614,2],[29647,2],[30250,2],[30618,2],[30760,2],[30867,2],[30912,2],[31020,2],[31165,2],[31217,2],[31273,2],[31960,2],[32008,2],[32049,2],[32087,2],[32144,2],[32195,2]]},"1088":{"position":[[247,2]]},"1089":{"position":[[135,2],[221,2]]},"1094":{"position":[[417,2]]}},"keywords":{}}],["updat",{"_index":719,"title":{"276":{"position":[[16,6]]},"277":{"position":[[15,6]]},"356":{"position":[[4,6]]},"847":{"position":[[16,6]]},"848":{"position":[[15,6]]}},"content":{"74":{"position":[[979,7]]},"89":{"position":[[1180,7]]},"95":{"position":[[342,7]]},"112":{"position":[[298,7]]},"124":{"position":[[233,6]]},"131":{"position":[[75,6]]},"135":{"position":[[349,6]]},"176":{"position":[[850,6]]},"196":{"position":[[883,7],[1035,6]]},"217":{"position":[[734,6]]},"259":{"position":[[595,8]]},"273":{"position":[[205,6]]},"275":{"position":[[166,6]]},"304":{"position":[[355,6]]},"338":{"position":[[89,6]]},"375":{"position":[[478,6],[1182,6]]},"389":{"position":[[13413,6],[15110,6],[15387,6],[28962,6],[30659,6],[30936,6]]},"511":{"position":[[195,8]]},"549":{"position":[[530,6],[1075,6]]},"553":{"position":[[472,6],[1287,6],[1654,6]]},"559":{"position":[[453,6],[764,6],[1291,6]]},"570":{"position":[[320,6]]},"579":{"position":[[1100,8],[1301,8],[1502,8],[2136,8],[2334,8],[2536,8]]},"584":{"position":[[960,8],[1161,8],[1362,8],[1996,8],[2194,8],[2396,8]]},"589":{"position":[[1253,8],[1455,8],[1657,8],[1859,8],[2061,8],[3004,8],[3211,8],[3415,8],[3619,8],[3823,8]]},"666":{"position":[[979,7]]},"672":{"position":[[1180,7]]},"692":{"position":[[233,6]]},"699":{"position":[[75,6]]},"707":{"position":[[349,6]]},"746":{"position":[[852,6]]},"779":{"position":[[888,7],[1040,6]]},"787":{"position":[[734,6]]},"830":{"position":[[595,8]]},"844":{"position":[[205,6]]},"846":{"position":[[166,6]]},"867":{"position":[[508,6]]},"870":{"position":[[355,6]]},"902":{"position":[[478,6],[1182,6]]},"916":{"position":[[13413,6],[15110,6],[15387,6],[28962,6],[30659,6],[30936,6]]},"1041":{"position":[[0,6]]},"1075":{"position":[[530,6],[1075,6]]},"1079":{"position":[[472,6],[1287,6],[1654,6]]},"1090":{"position":[[320,6]]},"1094":{"position":[[453,6],[764,6],[1291,6]]},"1105":{"position":[[1100,8],[1301,8],[1502,8],[2136,8],[2334,8],[2536,8]]},"1110":{"position":[[960,8],[1161,8],[1362,8],[1996,8],[2194,8],[2396,8]]},"1115":{"position":[[1253,8],[1455,8],[1657,8],[1859,8],[2061,8],[3004,8],[3211,8],[3415,8],[3619,8],[3823,8]]}},"keywords":{}}],["updates/main",{"_index":2950,"title":{},"content":{"389":{"position":[[4010,12],[4122,12],[4228,12],[4354,12],[4481,12],[4597,12],[4991,12],[5291,12],[6120,12],[6241,12],[6648,12],[6768,12],[19834,12],[19946,12],[20052,12],[20178,12],[20305,12],[20421,12],[20815,12],[21115,12],[21838,12],[21959,12],[22366,12],[22486,12]]},"916":{"position":[[4010,12],[4122,12],[4228,12],[4354,12],[4481,12],[4597,12],[4991,12],[5291,12],[6120,12],[6241,12],[6648,12],[6768,12],[19834,12],[19946,12],[20052,12],[20178,12],[20305,12],[20421,12],[20815,12],[21115,12],[21838,12],[21959,12],[22366,12],[22486,12]]}},"keywords":{}}],["upgrad",{"_index":2170,"title":{},"content":{"248":{"position":[[428,9],[498,7]]},"302":{"position":[[289,7]]},"325":{"position":[[142,7]]},"389":{"position":[[3318,9],[3371,9],[17570,9],[17622,9],[19142,9],[19195,9],[32424,9],[32476,9]]},"818":{"position":[[428,9],[498,7]]},"867":{"position":[[531,7]]},"869":{"position":[[289,7]]},"895":{"position":[[142,7]]},"916":{"position":[[3318,9],[3371,9],[17570,9],[17622,9],[19142,9],[19195,9],[32424,9],[32476,9]]}},"keywords":{}}],["upload",{"_index":658,"title":{"312":{"position":[[22,8]]},"317":{"position":[[55,9]]},"332":{"position":[[4,6]]},"335":{"position":[[4,6]]},"346":{"position":[[4,6]]},"347":{"position":[[4,6]]},"513":{"position":[[0,6]]},"1052":{"position":[[0,6]]}},"content":{"35":{"position":[[3361,7],[3396,9]]},"55":{"position":[[1521,7]]},"176":{"position":[[757,6]]},"313":{"position":[[12,8],[291,9]]},"314":{"position":[[2070,6]]},"315":{"position":[[241,6]]},"333":{"position":[[62,6]]},"345":{"position":[[291,6]]},"348":{"position":[[146,6]]},"350":{"position":[[200,8]]},"355":{"position":[[199,8]]},"513":{"position":[[358,6],[420,6],[461,6],[507,6]]},"627":{"position":[[3361,7],[3396,9]]},"647":{"position":[[1521,7]]},"746":{"position":[[758,6]]},"1052":{"position":[[358,6],[420,6],[461,6],[507,6]]}},"keywords":{}}],["upload/upd",{"_index":1821,"title":{},"content":{"176":{"position":[[978,13]]},"746":{"position":[[981,13]]}},"keywords":{}}],["upp",{"_index":2006,"title":{},"content":{"201":{"position":[[757,5]]},"750":{"position":[[758,5]]}},"keywords":{}}],["uppercas",{"_index":2107,"title":{},"content":{"224":{"position":[[254,9]]},"809":{"position":[[254,9]]}},"keywords":{}}],["upstream",{"_index":1190,"title":{},"content":{"121":{"position":[[175,8],[199,8],[265,8],[334,8],[377,8],[536,8],[591,8]]},"123":{"position":[[79,8]]},"125":{"position":[[47,8]]},"689":{"position":[[175,8],[199,8],[265,8],[334,8],[377,8],[536,8],[591,8]]},"691":{"position":[[79,8]]},"693":{"position":[[47,8]]}},"keywords":{}}],["upstream/mast",{"_index":1213,"title":{"125":{"position":[[38,15]]},"693":{"position":[[38,15]]}},"content":{"123":{"position":[[99,15]]},"125":{"position":[[67,15]]},"691":{"position":[[99,15]]},"693":{"position":[[67,15]]}},"keywords":{}}],["upstream/origin",{"_index":1196,"title":{},"content":{"121":{"position":[[402,16]]},"689":{"position":[[402,16]]}},"keywords":{}}],["uri",{"_index":3660,"title":{},"content":{"516":{"position":[[17,4],[88,3],[167,4]]},"517":{"position":[[17,4],[112,3],[132,3],[185,3]]},"1056":{"position":[[17,4],[88,3],[167,4]]},"1057":{"position":[[17,4],[112,3],[132,3],[185,3]]}},"keywords":{}}],["url",{"_index":249,"title":{},"content":{"16":{"position":[[641,3]]},"103":{"position":[[342,6]]},"121":{"position":[[366,3]]},"182":{"position":[[306,4],[1281,4]]},"217":{"position":[[1500,4]]},"320":{"position":[[253,3],[522,3]]},"333":{"position":[[22,4]]},"384":{"position":[[1000,3],[1113,3],[1181,3]]},"437":{"position":[[1319,3],[1330,3]]},"460":{"position":[[1434,3],[1445,3]]},"513":{"position":[[527,3]]},"516":{"position":[[141,4]]},"517":{"position":[[243,3]]},"579":{"position":[[1142,4],[1343,4],[1540,4],[2174,4],[2376,4],[2578,4]]},"584":{"position":[[1002,4],[1203,4],[1400,4],[2034,4],[2236,4],[2438,4]]},"589":{"position":[[1297,4],[1499,4],[1701,4],[1903,4],[2108,4],[3051,4],[3255,4],[3459,4],[3663,4],[3867,4]]},"608":{"position":[[641,3]]},"689":{"position":[[366,3]]},"705":{"position":[[342,6]]},"765":{"position":[[306,4],[1281,4]]},"787":{"position":[[1500,4]]},"877":{"position":[[253,3],[522,3]]},"911":{"position":[[1000,3],[1113,3],[1181,3]]},"964":{"position":[[1319,3],[1330,3]]},"987":{"position":[[1434,3],[1445,3]]},"1052":{"position":[[527,3]]},"1056":{"position":[[141,4]]},"1057":{"position":[[243,3]]},"1105":{"position":[[1142,4],[1343,4],[1540,4],[2174,4],[2376,4],[2578,4]]},"1110":{"position":[[1002,4],[1203,4],[1400,4],[2034,4],[2236,4],[2438,4]]},"1115":{"position":[[1297,4],[1499,4],[1701,4],[1903,4],[2108,4],[3051,4],[3255,4],[3459,4],[3663,4],[3867,4]]}},"keywords":{}}],["url\":\"/notebook/default/t",{"_index":898,"title":{},"content":{"100":{"position":[[590,29]]},"101":{"position":[[332,29]]},"102":{"position":[[325,29]]},"479":{"position":[[550,29]]},"482":{"position":[[314,29]]},"485":{"position":[[302,29]]},"488":{"position":[[309,29]]},"702":{"position":[[590,29]]},"703":{"position":[[332,29]]},"704":{"position":[[325,29]]},"1011":{"position":[[550,29]]},"1014":{"position":[[314,29]]},"1017":{"position":[[302,29]]},"1020":{"position":[[309,29]]}},"keywords":{}}],["url=\"http://127.0.0.1",{"_index":2433,"title":{},"content":{"320":{"position":[[699,22]]},"877":{"position":[[699,22]]}},"keywords":{}}],["url='https://github.com/apache/submarine.git",{"_index":3281,"title":{},"content":{"407":{"position":[[1096,46]]},"934":{"position":[[1116,46]]}},"keywords":{}}],["urllib3",{"_index":2890,"title":{},"content":{"389":{"position":[[2382,7],[3274,7],[6675,7],[12604,8],[12707,7],[17244,7],[18224,7],[19098,7],[22393,7],[28153,8],[28256,7],[32098,7]]},"916":{"position":[[2382,7],[3274,7],[6675,7],[12604,8],[12707,7],[17244,7],[18224,7],[19098,7],[22393,7],[28153,8],[28256,7],[32098,7]]}},"keywords":{}}],["urllib3_1.13.1",{"_index":3113,"title":{},"content":{"389":{"position":[[12645,14],[28194,14]]},"916":{"position":[[12645,14],[28194,14]]}},"keywords":{}}],["uroot",{"_index":205,"title":{},"content":{"14":{"position":[[126,5]]},"606":{"position":[[126,5]]}},"keywords":{}}],["us",{"_index":11,"title":{"77":{"position":[[18,6]]},"78":{"position":[[18,6]]},"91":{"position":[[0,3]]},"156":{"position":[[41,3]]},"188":{"position":[[28,3]]},"376":{"position":[[0,3]]},"390":{"position":[[27,5]]},"436":{"position":[[18,6]]},"439":{"position":[[18,6]]},"470":{"position":[[0,3]]},"550":{"position":[[0,3]]},"554":{"position":[[0,3]]},"557":{"position":[[0,3]]},"560":{"position":[[0,3]]},"563":{"position":[[0,3]]},"591":{"position":[[0,3]]},"674":{"position":[[0,3]]},"676":{"position":[[18,6]]},"677":{"position":[[18,6]]},"726":{"position":[[41,3]]},"771":{"position":[[28,3]]},"903":{"position":[[0,3]]},"917":{"position":[[27,5]]},"963":{"position":[[18,6]]},"966":{"position":[[18,6]]},"997":{"position":[[0,3]]},"1076":{"position":[[0,3]]},"1080":{"position":[[0,3]]},"1083":{"position":[[0,3]]},"1095":{"position":[[0,3]]},"1098":{"position":[[0,3]]},"1117":{"position":[[0,3]]}},"content":{"1":{"position":[[72,3]]},"2":{"position":[[37,3]]},"8":{"position":[[83,5],[197,5]]},"14":{"position":[[241,3]]},"16":{"position":[[766,4]]},"17":{"position":[[251,4],[340,5],[452,4]]},"20":{"position":[[13,5],[82,3],[140,3],[639,4]]},"21":{"position":[[125,3],[348,5],[638,3]]},"31":{"position":[[22,3]]},"33":{"position":[[167,4],[313,4]]},"74":{"position":[[987,5]]},"84":{"position":[[362,6],[1539,6]]},"89":{"position":[[1188,5]]},"107":{"position":[[1034,3],[5306,5],[7221,6]]},"125":{"position":[[102,3]]},"132":{"position":[[114,4]]},"133":{"position":[[100,4],[1288,6]]},"138":{"position":[[10,4],[157,3]]},"148":{"position":[[9,5]]},"151":{"position":[[100,5],[1020,3],[1156,4],[1306,3],[1361,4]]},"152":{"position":[[237,4]]},"154":{"position":[[87,3],[485,5],[1196,5],[1246,3]]},"156":{"position":[[181,4],[946,5]]},"172":{"position":[[100,5],[467,4],[617,3],[672,4]]},"175":{"position":[[476,3]]},"176":{"position":[[642,4],[705,4],[1146,6]]},"177":{"position":[[47,4]]},"179":{"position":[[993,3]]},"181":{"position":[[1828,4]]},"182":{"position":[[596,4],[1529,5],[1554,5]]},"189":{"position":[[690,3],[1156,3]]},"193":{"position":[[377,3]]},"194":{"position":[[369,3],[636,5],[736,4],[870,4],[919,3],[1071,3],[1236,4]]},"196":{"position":[[342,3],[684,3],[822,3]]},"199":{"position":[[898,5],[1007,3],[1300,4]]},"200":{"position":[[1916,5]]},"201":{"position":[[860,5]]},"208":{"position":[[564,3]]},"209":{"position":[[5,5]]},"211":{"position":[[43,4],[211,3]]},"212":{"position":[[81,5],[361,3]]},"213":{"position":[[274,3],[394,3]]},"215":{"position":[[1316,3],[1381,3]]},"217":{"position":[[435,3],[463,4],[605,3],[1645,3],[2302,4],[2388,4],[2412,3]]},"219":{"position":[[111,6],[209,4],[316,4]]},"224":{"position":[[373,4]]},"225":{"position":[[404,4]]},"226":{"position":[[474,5]]},"229":{"position":[[941,6],[1028,4]]},"230":{"position":[[222,3],[541,4]]},"248":{"position":[[99,4],[292,4],[619,3],[981,4]]},"251":{"position":[[65,5]]},"252":{"position":[[67,3]]},"261":{"position":[[574,4]]},"269":{"position":[[331,5]]},"270":{"position":[[569,5]]},"274":{"position":[[92,3],[210,5]]},"299":{"position":[[98,4]]},"300":{"position":[[40,3],[576,5]]},"304":{"position":[[27,5]]},"306":{"position":[[3,3]]},"314":{"position":[[185,4],[244,4],[1835,3],[2655,5]]},"322":{"position":[[230,6]]},"325":{"position":[[357,3]]},"331":{"position":[[153,4],[197,3]]},"333":{"position":[[27,3]]},"334":{"position":[[469,3],[1012,3],[1707,3]]},"335":{"position":[[152,4]]},"336":{"position":[[785,3]]},"347":{"position":[[23,3]]},"348":{"position":[[84,3]]},"363":{"position":[[24,4]]},"368":{"position":[[437,3]]},"369":{"position":[[19,5],[429,5]]},"371":{"position":[[70,5]]},"375":{"position":[[1039,3],[1619,3]]},"377":{"position":[[340,3],[389,3]]},"384":{"position":[[86,4],[149,3],[240,3],[344,3],[580,3],[891,3],[1075,3]]},"386":{"position":[[691,4]]},"387":{"position":[[53,3]]},"389":{"position":[[3477,5],[13434,5],[15131,5],[15408,5],[19301,5],[28983,5],[30680,5],[30957,5]]},"395":{"position":[[15,3]]},"398":{"position":[[50,3],[425,5]]},"403":{"position":[[54,3]]},"405":{"position":[[13,5]]},"406":{"position":[[659,3]]},"412":{"position":[[0,3]]},"413":{"position":[[31,3],[131,3],[252,3],[347,3]]},"418":{"position":[[16,3]]},"474":{"position":[[64,3]]},"508":{"position":[[8,3]]},"509":{"position":[[0,3],[182,3],[257,5],[479,3]]},"510":{"position":[[7,5]]},"511":{"position":[[3,3],[65,4]]},"529":{"position":[[69,5]]},"533":{"position":[[75,5]]},"549":{"position":[[712,5],[1319,3],[1644,3]]},"553":{"position":[[2042,3]]},"557":{"position":[[28,3]]},"559":{"position":[[1679,3]]},"563":{"position":[[28,3]]},"565":{"position":[[101,5]]},"566":{"position":[[215,5],[431,5]]},"569":{"position":[[257,4],[1809,3]]},"570":{"position":[[174,5],[307,4],[9748,5]]},"571":{"position":[[5,5],[109,3],[373,4]]},"578":{"position":[[306,5],[564,4],[656,5]]},"580":{"position":[[1445,3]]},"591":{"position":[[36,3],[278,3],[382,3],[396,3]]},"597":{"position":[[83,5],[197,5]]},"601":{"position":[[72,3]]},"602":{"position":[[37,3]]},"606":{"position":[[241,3]]},"608":{"position":[[766,4]]},"609":{"position":[[251,4],[340,5],[452,4]]},"620":{"position":[[13,5],[82,3],[140,3],[639,4]]},"621":{"position":[[125,3],[348,5],[638,3]]},"623":{"position":[[22,3]]},"625":{"position":[[167,4],[313,4]]},"666":{"position":[[987,5]]},"672":{"position":[[1188,5]]},"683":{"position":[[362,6],[1539,6]]},"693":{"position":[[102,3]]},"700":{"position":[[114,4]]},"710":{"position":[[10,4],[157,3]]},"718":{"position":[[9,5]]},"721":{"position":[[100,5],[1020,3],[1156,4],[1306,3],[1361,4]]},"722":{"position":[[237,4]]},"724":{"position":[[87,3],[485,5],[1196,5],[1246,3]]},"726":{"position":[[181,4],[946,5]]},"742":{"position":[[100,5],[467,4],[617,3],[672,4]]},"745":{"position":[[476,3]]},"746":{"position":[[643,4],[706,4],[1149,6]]},"747":{"position":[[47,4]]},"749":{"position":[[998,3]]},"750":{"position":[[861,5]]},"757":{"position":[[564,3]]},"758":{"position":[[5,5]]},"760":{"position":[[43,4],[211,3]]},"761":{"position":[[81,5],[361,3]]},"762":{"position":[[274,3],[394,3]]},"764":{"position":[[1841,4]]},"765":{"position":[[596,4],[1529,5],[1554,5]]},"772":{"position":[[690,3],[1156,3]]},"776":{"position":[[377,3]]},"777":{"position":[[375,3],[642,5],[742,4],[967,4],[1066,3],[1150,4],[1199,3],[1351,3],[1516,4]]},"779":{"position":[[342,3],[684,3],[822,3]]},"782":{"position":[[898,5],[1007,3],[1300,4]]},"783":{"position":[[1916,5]]},"785":{"position":[[1316,3],[1381,3]]},"787":{"position":[[435,3],[463,4],[605,3],[1645,3],[2302,4],[2388,4],[2412,3]]},"789":{"position":[[111,6],[209,4],[316,4]]},"792":{"position":[[941,6],[1029,4]]},"793":{"position":[[222,3],[541,4]]},"809":{"position":[[373,4]]},"810":{"position":[[457,4]]},"811":{"position":[[474,5]]},"818":{"position":[[99,4],[292,4],[619,3],[981,4]]},"821":{"position":[[65,5]]},"822":{"position":[[72,3]]},"832":{"position":[[574,4]]},"840":{"position":[[331,5]]},"841":{"position":[[569,5]]},"845":{"position":[[92,3],[210,5]]},"866":{"position":[[98,4]]},"867":{"position":[[40,3]]},"869":{"position":[[428,3],[1143,3],[1242,3],[1376,3],[1478,3]]},"870":{"position":[[27,5]]},"872":{"position":[[3,3]]},"879":{"position":[[230,6]]},"885":{"position":[[24,4]]},"891":{"position":[[437,3]]},"892":{"position":[[19,5],[429,5]]},"895":{"position":[[357,3]]},"898":{"position":[[70,5]]},"902":{"position":[[1039,3],[1619,3]]},"904":{"position":[[340,3],[389,3]]},"911":{"position":[[86,4],[149,3],[240,3],[344,3],[580,3],[891,3],[1075,3]]},"913":{"position":[[691,4]]},"914":{"position":[[53,3]]},"916":{"position":[[3477,5],[13434,5],[15131,5],[15408,5],[19301,5],[28983,5],[30680,5],[30957,5]]},"922":{"position":[[15,3]]},"925":{"position":[[50,3],[425,5]]},"930":{"position":[[54,3]]},"932":{"position":[[13,5]]},"939":{"position":[[0,3]]},"940":{"position":[[18,5]]},"945":{"position":[[16,3]]},"1001":{"position":[[64,3]]},"1047":{"position":[[8,3]]},"1048":{"position":[[0,3],[182,3],[257,5],[479,3]]},"1049":{"position":[[7,5]]},"1050":{"position":[[3,3],[65,4]]},"1053":{"position":[[41,5]]},"1075":{"position":[[712,5],[1319,3],[1644,3]]},"1079":{"position":[[2042,3]]},"1083":{"position":[[28,3]]},"1085":{"position":[[101,5]]},"1086":{"position":[[215,5],[431,5]]},"1089":{"position":[[257,4],[1809,3]]},"1090":{"position":[[174,5],[307,4],[9748,5]]},"1091":{"position":[[5,5],[109,3],[373,4]]},"1094":{"position":[[1679,3]]},"1098":{"position":[[28,3]]},"1104":{"position":[[306,5],[564,4],[656,5]]},"1106":{"position":[[1445,3]]},"1117":{"position":[[36,3],[278,3],[382,3],[396,3]]}},"keywords":{}}],["usabl",{"_index":1641,"title":{},"content":{"161":{"position":[[42,6]]},"731":{"position":[[42,6]]}},"keywords":{}}],["usag",{"_index":485,"title":{"474":{"position":[[0,5]]},"1001":{"position":[[0,5]]}},"content":{"28":{"position":[[538,7]]},"33":{"position":[[78,5]]},"148":{"position":[[127,5]]},"215":{"position":[[1222,6]]},"218":{"position":[[234,6]]},"273":{"position":[[882,5],[1040,5]]},"314":{"position":[[545,6],[654,6],[790,6],[899,6],[1421,6],[1530,6],[1660,6],[1769,6]]},"383":{"position":[[1040,6]]},"474":{"position":[[183,5]]},"511":{"position":[[1040,6]]},"546":{"position":[[538,7]]},"616":{"position":[[538,7]]},"625":{"position":[[78,5]]},"718":{"position":[[127,5]]},"785":{"position":[[1222,6]]},"788":{"position":[[234,6]]},"844":{"position":[[882,5],[1040,5]]},"910":{"position":[[1040,6]]},"1001":{"position":[[183,5]]},"1072":{"position":[[538,7]]}},"keywords":{}}],["used,th",{"_index":437,"title":{},"content":{"25":{"position":[[1951,8]]},"543":{"position":[[1951,8]]},"613":{"position":[[1951,8]]},"1069":{"position":[[1951,8]]}},"keywords":{}}],["user",{"_index":429,"title":{"45":{"position":[[0,4]]},"65":{"position":[[0,4]]},"101":{"position":[[40,4]]},"156":{"position":[[25,4]]},"176":{"position":[[28,4]]},"480":{"position":[[40,4]]},"637":{"position":[[0,4]]},"657":{"position":[[0,4]]},"703":{"position":[[40,4]]},"726":{"position":[[25,4]]},"746":{"position":[[28,4]]},"1012":{"position":[[40,4]]}},"content":{"25":{"position":[[1746,4]]},"31":{"position":[[187,4],[241,5],[265,4],[359,4],[533,4],[568,4],[622,5]]},"32":{"position":[[15,4]]},"33":{"position":[[225,5],[304,4]]},"35":{"position":[[53,4],[879,4],[1885,5]]},"107":{"position":[[966,5],[1096,5],[1167,5],[1304,5],[1363,5],[1390,4],[3124,5]]},"121":{"position":[[25,4]]},"133":{"position":[[1309,5],[1559,5]]},"145":{"position":[[414,5]]},"148":{"position":[[83,5]]},"151":{"position":[[404,5],[913,4],[1014,5],[1037,5],[1313,5],[2152,5]]},"152":{"position":[[538,4]]},"153":{"position":[[254,5]]},"154":{"position":[[329,5],[393,4]]},"156":{"position":[[87,6],[247,5],[648,5],[809,4]]},"158":{"position":[[60,4],[102,4]]},"159":{"position":[[1135,4]]},"170":{"position":[[3,5],[155,5],[258,6],[273,5],[441,5]]},"171":{"position":[[808,5],[1260,4],[1879,5],[1907,5]]},"172":{"position":[[281,5],[348,5],[624,5]]},"173":{"position":[[213,5],[318,5],[446,5]]},"176":{"position":[[380,4],[615,5],[710,5],[750,6],[764,4],[832,6],[1126,6],[1195,4]]},"177":{"position":[[109,6]]},"194":{"position":[[1416,7]]},"196":{"position":[[267,4]]},"198":{"position":[[137,4]]},"200":{"position":[[2687,5]]},"204":{"position":[[0,5],[216,5],[364,4],[492,4],[576,5],[651,5],[749,4]]},"205":{"position":[[62,4],[114,5],[185,5]]},"208":{"position":[[559,4]]},"211":{"position":[[195,4]]},"212":{"position":[[0,5],[221,4],[351,5]]},"213":{"position":[[45,4],[94,4]]},"215":{"position":[[25,4]]},"217":{"position":[[287,5],[870,4],[1114,4],[1764,5],[1770,4]]},"218":{"position":[[463,5]]},"219":{"position":[[15,4]]},"225":{"position":[[45,4]]},"229":{"position":[[375,4],[400,4],[770,5]]},"230":{"position":[[207,5]]},"244":{"position":[[0,5]]},"248":{"position":[[830,4]]},"249":{"position":[[284,5]]},"252":{"position":[[46,5],[138,5]]},"259":{"position":[[270,5]]},"275":{"position":[[21,4],[222,4]]},"314":{"position":[[997,4],[1028,6]]},"331":{"position":[[1171,4],[1373,4]]},"361":{"position":[[40,5]]},"365":{"position":[[33,5]]},"368":{"position":[[241,5],[348,5],[396,5]]},"389":{"position":[[15865,5],[16148,4]]},"391":{"position":[[13,5]]},"403":{"position":[[28,5]]},"478":{"position":[[352,4]]},"481":{"position":[[46,4]]},"499":{"position":[[28,5]]},"508":{"position":[[269,4],[289,4]]},"543":{"position":[[1746,4]]},"549":{"position":[[830,4]]},"559":{"position":[[799,4]]},"613":{"position":[[1746,4]]},"623":{"position":[[187,4],[241,5],[265,4],[359,4],[533,4],[568,4],[622,5]]},"624":{"position":[[15,4]]},"625":{"position":[[225,5],[304,4]]},"627":{"position":[[53,4],[879,4],[1885,5]]},"689":{"position":[[25,4]]},"713":{"position":[[142,5],[184,5]]},"715":{"position":[[414,4],[425,5]]},"718":{"position":[[83,5]]},"721":{"position":[[404,5],[913,4],[1014,5],[1037,5],[1313,5],[2152,5]]},"722":{"position":[[538,4]]},"723":{"position":[[254,5]]},"724":{"position":[[329,5],[393,4]]},"726":{"position":[[87,6],[247,5],[648,5],[809,4]]},"728":{"position":[[60,4],[102,4]]},"729":{"position":[[1135,4]]},"740":{"position":[[3,5],[155,5],[258,6],[273,5],[441,5]]},"741":{"position":[[813,5],[1272,4],[1891,5],[1919,5]]},"742":{"position":[[281,5],[348,5],[624,5]]},"743":{"position":[[133,5],[214,5],[319,5],[447,5]]},"746":{"position":[[270,7],[278,4],[381,4],[616,5],[711,5],[751,6],[765,4],[834,6],[1129,6],[1198,4]]},"747":{"position":[[109,6]]},"753":{"position":[[0,5],[216,5],[364,4],[492,4],[576,5],[651,5],[749,4]]},"754":{"position":[[62,4],[114,5],[185,5]]},"757":{"position":[[559,4]]},"760":{"position":[[195,4]]},"761":{"position":[[0,5],[221,4],[351,5]]},"762":{"position":[[45,4],[94,4]]},"777":{"position":[[1696,7]]},"779":{"position":[[267,4]]},"781":{"position":[[137,4]]},"783":{"position":[[2687,5]]},"785":{"position":[[25,4]]},"787":{"position":[[287,5],[870,4],[1114,4],[1764,5],[1770,4]]},"788":{"position":[[463,5]]},"789":{"position":[[15,4]]},"792":{"position":[[375,4],[400,4],[770,5],[1391,5]]},"793":{"position":[[207,5]]},"810":{"position":[[45,4]]},"814":{"position":[[0,5]]},"818":{"position":[[830,4]]},"819":{"position":[[284,5]]},"822":{"position":[[46,5],[143,5]]},"830":{"position":[[270,5]]},"846":{"position":[[21,4],[222,4]]},"869":{"position":[[1016,4],[1053,4],[1314,4],[1611,4]]},"883":{"position":[[40,5]]},"887":{"position":[[33,5]]},"891":{"position":[[241,5],[348,5],[396,5]]},"916":{"position":[[15865,5],[16148,4]]},"918":{"position":[[13,5]]},"930":{"position":[[28,5]]},"1010":{"position":[[352,4]]},"1013":{"position":[[46,4]]},"1026":{"position":[[28,5]]},"1047":{"position":[[269,4],[289,4]]},"1069":{"position":[[1746,4]]},"1075":{"position":[[830,4]]},"1094":{"position":[[799,4]]}},"keywords":{}}],["user'",{"_index":550,"title":{"204":{"position":[[0,6]]},"244":{"position":[[7,6]]},"753":{"position":[[0,6]]},"814":{"position":[[7,6]]}},"content":{"31":{"position":[[452,6],[475,6]]},"33":{"position":[[62,6]]},"158":{"position":[[248,6]]},"210":{"position":[[268,6]]},"219":{"position":[[217,6]]},"229":{"position":[[359,6],[1059,6],[1158,6]]},"244":{"position":[[96,6]]},"248":{"position":[[1133,6]]},"623":{"position":[[452,6],[475,6]]},"625":{"position":[[62,6]]},"728":{"position":[[248,6]]},"759":{"position":[[268,6]]},"789":{"position":[[217,6]]},"792":{"position":[[359,6],[1060,6],[1159,6]]},"814":{"position":[[96,6]]},"818":{"position":[[1133,6]]}},"keywords":{}}],["user.a",{"_index":1824,"title":{},"content":{"176":{"position":[[1042,6]]},"746":{"position":[[1045,6]]}},"keywords":{}}],["user.signingkey",{"_index":2584,"title":{},"content":{"339":{"position":[[454,15]]}},"keywords":{}}],["user/team",{"_index":1819,"title":{"240":{"position":[[0,9]]},"803":{"position":[[0,9]]}},"content":{"176":{"position":[[857,9]]},"232":{"position":[[604,10]]},"746":{"position":[[859,9]]},"795":{"position":[[604,10]]}},"keywords":{}}],["user1",{"_index":1470,"title":{},"content":{"151":{"position":[[1443,6]]},"721":{"position":[[1443,6]]}},"keywords":{}}],["user2",{"_index":1471,"title":{},"content":{"151":{"position":[[1553,6]]},"721":{"position":[[1553,6]]}},"keywords":{}}],["user3",{"_index":1472,"title":{},"content":{"151":{"position":[[1655,6]]},"721":{"position":[[1655,6]]}},"keywords":{}}],["user:yarn",{"_index":410,"title":{},"content":{"25":{"position":[[327,9]]},"543":{"position":[[327,9]]},"613":{"position":[[327,9]]},"1069":{"position":[[327,9]]}},"keywords":{}}],["userid",{"_index":864,"title":{},"content":{"93":{"position":[[565,8],[928,8],[1292,8],[1656,8]]},"94":{"position":[[573,8]]}},"keywords":{}}],["usernam",{"_index":163,"title":{},"content":{"9":{"position":[[132,8]]},"32":{"position":[[86,8]]},"121":{"position":[[2,8]]},"122":{"position":[[102,9]]},"334":{"position":[[984,8],[1028,8],[1679,8],[1723,8]]},"598":{"position":[[132,8]]},"624":{"position":[[86,8]]},"689":{"position":[[2,8]]},"690":{"position":[[102,9]]}},"keywords":{}}],["username>{us",{"_index":2560,"title":{},"content":{"336":{"position":[[455,15],[569,15]]}},"keywords":{}}],["users).us",{"_index":1809,"title":{},"content":{"176":{"position":[[270,11]]}},"keywords":{}}],["users/cheng/.gnupg/openpgp",{"_index":2509,"title":{},"content":{"331":{"position":[[2482,28]]}},"keywords":{}}],["users/team",{"_index":4212,"title":{},"content":{"746":{"position":[[889,12]]}},"keywords":{}}],["users/teams.admin",{"_index":1820,"title":{},"content":{"176":{"position":[[887,17]]}},"keywords":{}}],["userset",{"_index":3172,"title":{},"content":{"389":{"position":[[16092,8]]},"916":{"position":[[16092,8]]}},"keywords":{}}],["user’",{"_index":965,"title":{},"content":{"107":{"position":[[1147,6]]}},"keywords":{}}],["usr/bin/bsd",{"_index":3156,"title":{},"content":{"389":{"position":[[15137,12],[30686,12]]},"916":{"position":[[15137,12],[30686,12]]}},"keywords":{}}],["usr/bin/env",{"_index":478,"title":{},"content":{"28":{"position":[[397,14]]},"546":{"position":[[397,14]]},"616":{"position":[[397,14]]},"1072":{"position":[[397,14]]}},"keywords":{}}],["usr/bin/mailx",{"_index":3157,"title":{},"content":{"389":{"position":[[15167,14],[30716,14]]},"916":{"position":[[15167,14],[30716,14]]}},"keywords":{}}],["usr/bin/python",{"_index":2742,"title":{},"content":{"375":{"position":[[803,15]]},"590":{"position":[[496,16],[681,16],[853,16]]},"902":{"position":[[803,15]]},"1116":{"position":[[496,16],[681,16],[853,16]]}},"keywords":{}}],["usr/bin/python2.7",{"_index":2741,"title":{},"content":{"375":{"position":[[784,18]]},"902":{"position":[[784,18]]}},"keywords":{}}],["usr/local/bin",{"_index":3203,"title":{},"content":{"391":{"position":[[519,15]]},"918":{"position":[[519,15]]}},"keywords":{}}],["usr/local/lib/python2.7/dist",{"_index":4057,"title":{},"content":{"572":{"position":[[147,30],[364,30],[529,30],[674,30],[829,30],[969,30],[1090,30],[1253,30],[1517,30],[1677,30],[1837,30],[2000,30]]},"1092":{"position":[[147,30],[364,30],[529,30],[674,30],[829,30],[969,30],[1090,30],[1253,30],[1517,30],[1677,30],[1837,30],[2000,30]]}},"keywords":{}}],["usr/local/matrix/share/hadoop/yarn/${submarine_version}.jar",{"_index":2833,"title":{},"content":{"389":{"position":[[304,60]]},"916":{"position":[[304,60]]}},"keywords":{}}],["usr/share/gridengine/centri",{"_index":3171,"title":{},"content":{"389":{"position":[[16050,28]]},"916":{"position":[[16050,28]]}},"keywords":{}}],["usr/share/gridengine/default",{"_index":3170,"title":{},"content":{"389":{"position":[[15974,29]]},"916":{"position":[[15974,29]]}},"keywords":{}}],["usr/share/gridengine/userset",{"_index":3173,"title":{},"content":{"389":{"position":[[16110,30]]},"916":{"position":[[16110,30]]}},"keywords":{}}],["usual",{"_index":1245,"title":{},"content":{"130":{"position":[[442,8]]},"133":{"position":[[1486,7]]},"148":{"position":[[427,8]]},"165":{"position":[[155,7]]},"281":{"position":[[262,7]]},"355":{"position":[[363,7]]},"698":{"position":[[442,8]]},"735":{"position":[[155,7]]},"852":{"position":[[262,7]]}},"keywords":{}}],["util",{"_index":2497,"title":{},"content":{"331":{"position":[[1616,7],[1872,7]]},"363":{"position":[[7,7]]},"383":{"position":[[1030,4]]},"885":{"position":[[7,7]]},"910":{"position":[[1030,4]]}},"keywords":{}}],["v",{"_index":1199,"title":{},"content":{"121":{"position":[[627,1]]},"196":{"position":[[1118,1],[1120,1],[1122,1],[1124,1]]},"200":{"position":[[341,1],[537,1],[716,1],[811,1],[1614,1],[1813,1],[1893,1],[1979,1],[2299,1]]},"208":{"position":[[269,1],[474,1]]},"230":{"position":[[318,1]]},"553":{"position":[[1461,1],[1567,1]]},"689":{"position":[[627,1]]},"757":{"position":[[269,1],[474,1]]},"779":{"position":[[1123,1],[1125,1],[1127,1],[1129,1]]},"783":{"position":[[341,1],[537,1],[716,1],[811,1],[1614,1],[1813,1],[1893,1],[1979,1],[2299,1]]},"793":{"position":[[318,1]]},"1079":{"position":[[1461,1],[1567,1]]}},"keywords":{}}],["v.",{"_index":1921,"title":{"190":{"position":[[22,4]]},"773":{"position":[[22,4]]}},"content":{"190":{"position":[[91,4]]},"773":{"position":[[91,4]]}},"keywords":{}}],["v0.2.0",{"_index":4171,"title":{},"content":{"580":{"position":[[1491,7]]},"1106":{"position":[[1491,7]]}},"keywords":{}}],["v0.5",{"_index":2800,"title":{},"content":{"384":{"position":[[81,4]]},"911":{"position":[[81,4]]}},"keywords":{}}],["v0.6.0",{"_index":3196,"title":{},"content":{"391":{"position":[[274,7]]},"918":{"position":[[274,7]]}},"keywords":{}}],["v1",{"_index":2085,"title":{},"content":{"217":{"position":[[1858,2]]},"787":{"position":[[1858,2]]}},"keywords":{}}],["v1.15.11",{"_index":52,"title":{},"content":{"5":{"position":[[96,8]]},"594":{"position":[[96,8]]},"869":{"position":[[627,8]]},"937":{"position":[[219,8]]}},"keywords":{}}],["v1.21.2",{"_index":3291,"title":{},"content":{"410":{"position":[[217,7]]}},"keywords":{}}],["v2",{"_index":2662,"title":{"362":{"position":[[21,2]]},"884":{"position":[[21,2]]}},"content":{"591":{"position":[[217,2]]},"869":{"position":[[685,3]]},"1117":{"position":[[217,2]]}},"keywords":{}}],["v2/artifacts/examples/exampl",{"_index":3292,"title":{},"content":{"411":{"position":[[342,29]]}},"keywords":{}}],["v3",{"_index":37,"title":{},"content":{"4":{"position":[[18,2]]},"379":{"position":[[13,3]]},"410":{"position":[[79,2]]},"593":{"position":[[18,2]]},"906":{"position":[[13,3]]},"937":{"position":[[79,2]]}},"keywords":{}}],["v3.1",{"_index":4215,"title":{},"content":{"777":{"position":[[1109,4]]}},"keywords":{}}],["valid",{"_index":1114,"title":{},"content":{"107":{"position":[[8081,6],[8169,5],[8223,8],[8393,6],[8423,5]]},"160":{"position":[[367,11]]},"161":{"position":[[821,11]]},"196":{"position":[[380,8]]},"200":{"position":[[1255,8],[1996,8]]},"314":{"position":[[571,9],[816,9],[1447,9],[1686,9]]},"331":{"position":[[888,6],[1045,5]]},"565":{"position":[[250,11]]},"730":{"position":[[367,11]]},"731":{"position":[[821,11]]},"779":{"position":[[380,8]]},"783":{"position":[[1255,8],[1996,8]]},"1085":{"position":[[250,11]]}},"keywords":{}}],["valid_data",{"_index":1765,"title":{},"content":{"171":{"position":[[1505,13]]},"199":{"position":[[437,13]]},"741":{"position":[[1517,13]]},"782":{"position":[[437,13]]}},"keywords":{}}],["valu",{"_index":251,"title":{"518":{"position":[[30,6]]},"519":{"position":[[31,6]]},"1035":{"position":[[28,6]]},"1037":{"position":[[35,6]]},"1058":{"position":[[30,6]]},"1059":{"position":[[31,6]]}},"content":{"16":{"position":[[744,5],[795,5]]},"86":{"position":[[241,8],[352,8],[465,8]]},"89":{"position":[[238,8],[349,8],[462,8]]},"199":{"position":[[123,5],[200,5]]},"217":{"position":[[743,5]]},"224":{"position":[[245,5]]},"226":{"position":[[155,5]]},"261":{"position":[[419,5]]},"271":{"position":[[49,5]]},"383":{"position":[[196,6]]},"384":{"position":[[183,5],[547,5]]},"389":{"position":[[14843,7],[30392,7]]},"460":{"position":[[543,5],[556,5]]},"461":{"position":[[209,8],[320,8],[433,8]]},"466":{"position":[[214,8],[325,8],[438,8]]},"518":{"position":[[17,5],[46,5],[120,6]]},"519":{"position":[[17,5],[35,5]]},"525":{"position":[[38,7]]},"608":{"position":[[744,5],[795,5]]},"669":{"position":[[241,8],[352,8],[465,8]]},"672":{"position":[[238,8],[349,8],[462,8]]},"782":{"position":[[123,5],[200,5]]},"787":{"position":[[743,5]]},"809":{"position":[[245,5]]},"811":{"position":[[155,5]]},"832":{"position":[[419,5]]},"842":{"position":[[49,5]]},"910":{"position":[[196,6]]},"911":{"position":[[183,5],[547,5]]},"916":{"position":[[14843,7],[30392,7]]},"987":{"position":[[543,5],[556,5]]},"988":{"position":[[209,8],[320,8],[433,8]]},"993":{"position":[[214,8],[325,8],[438,8]]},"1035":{"position":[[86,5]]},"1036":{"position":[[99,5]]},"1037":{"position":[[89,5]]},"1038":{"position":[[100,6]]},"1058":{"position":[[17,5],[46,5],[120,6]]},"1059":{"position":[[17,5],[35,5]]}},"keywords":{}}],["valuabl",{"_index":1373,"title":{},"content":{"141":{"position":[[48,8]]},"165":{"position":[[416,9]]},"735":{"position":[[416,9]]}},"keywords":{}}],["value\":\"0.1",{"_index":3499,"title":{},"content":{"461":{"position":[[1453,13]]},"463":{"position":[[455,13]]},"466":{"position":[[1483,13]]},"469":{"position":[[479,13]]},"988":{"position":[[1453,13]]},"990":{"position":[[455,13]]},"993":{"position":[[1483,13]]},"996":{"position":[[479,13]]}},"keywords":{}}],["value\":\"1",{"_index":3507,"title":{},"content":{"461":{"position":[[1756,11],[1845,11],[2027,11],[2120,11]]},"463":{"position":[[758,11],[847,11],[1029,11],[1122,11]]},"466":{"position":[[1786,11],[1875,11],[2057,11],[2150,11]]},"469":{"position":[[782,11],[871,11],[1053,11],[1146,11]]},"988":{"position":[[1756,11],[1845,11],[2027,11],[2120,11]]},"990":{"position":[[758,11],[847,11],[1029,11],[1122,11]]},"993":{"position":[[1786,11],[1875,11],[2057,11],[2150,11]]},"996":{"position":[[782,11],[871,11],[1053,11],[1146,11]]}},"keywords":{}}],["value\":\"1024m",{"_index":3510,"title":{},"content":{"461":{"position":[[1937,15],[2217,14]]},"463":{"position":[[939,15],[1219,14]]},"466":{"position":[[1967,15],[2246,15]]},"469":{"position":[[963,15],[1242,15]]},"988":{"position":[[1937,15],[2217,14]]},"990":{"position":[[939,15],[1219,14]]},"993":{"position":[[1967,15],[2246,15]]},"996":{"position":[[963,15],[1242,15]]}},"keywords":{}}],["value\":\"150",{"_index":3501,"title":{},"content":{"461":{"position":[[1561,13]]},"463":{"position":[[563,13]]},"466":{"position":[[1591,13]]},"469":{"position":[[587,13]]},"988":{"position":[[1561,13]]},"990":{"position":[[563,13]]},"993":{"position":[[1591,13]]},"996":{"position":[[587,13]]}},"keywords":{}}],["value\":\"tf",{"_index":3504,"title":{},"content":{"461":{"position":[[1666,11]]},"463":{"position":[[668,11]]},"466":{"position":[[1696,11]]},"469":{"position":[[692,11]]},"988":{"position":[[1666,11]]},"990":{"position":[[668,11]]},"993":{"position":[[1696,11]]},"996":{"position":[[692,11]]}},"keywords":{}}],["value.step",{"_index":3672,"title":{},"content":{"519":{"position":[[110,10]]},"1059":{"position":[[110,10]]}},"keywords":{}}],["value>./a",{"_index":4324,"title":{},"content":{"1064":{"position":[[502,10]]}},"keywords":{}}],["value>5000</valu",{"_index":4327,"title":{},"content":{"1064":{"position":[[636,19]]}},"keywords":{}}],["value>a",{"_index":4321,"title":{},"content":{"1064":{"position":[[387,8]]}},"keywords":{}}],["value>com.mysql.jdbc.driver</valu",{"_index":4337,"title":{},"content":{"1064":{"position":[[1199,36]]}},"keywords":{}}],["value>false</valu",{"_index":4335,"title":{},"content":{"1064":{"position":[[1100,20]]}},"keywords":{}}],["value>jdbc:mysql://10.171.161.78/ranger</valu",{"_index":4339,"title":{},"content":{"1064":{"position":[[1311,48]]}},"keywords":{}}],["value>org.apache.ranger.admin.client.rangeradminrestclient</valu",{"_index":4329,"title":{},"content":{"1064":{"position":[[731,67]]}},"keywords":{}}],["value>rang",{"_index":4317,"title":{},"content":{"1064":{"position":[[248,13]]}},"keywords":{}}],["value>rangeradmin</valu",{"_index":4341,"title":{},"content":{"1064":{"position":[[1435,26],[1533,26]]}},"keywords":{}}],["value>true</valu",{"_index":4333,"title":{},"content":{"1064":{"position":[[1014,19]]}},"keywords":{}}],["values.yaml",{"_index":2778,"title":{},"content":{"382":{"position":[[70,14]]},"383":{"position":[[206,11]]},"909":{"position":[[70,14]]},"910":{"position":[[206,11]]}},"keywords":{}}],["var",{"_index":2110,"title":{},"content":{"224":{"position":[[540,4]]},"809":{"position":[[540,4]]}},"keywords":{}}],["var/lib/apt/list",{"_index":2739,"title":{},"content":{"375":{"position":[[752,20]]},"553":{"position":[[633,20]]},"559":{"position":[[690,20]]},"902":{"position":[[752,20]]},"1079":{"position":[[633,20]]},"1094":{"position":[[690,20]]}},"keywords":{}}],["var/lib/gridengin",{"_index":3164,"title":{},"content":{"389":{"position":[[15755,19]]},"916":{"position":[[15755,19]]}},"keywords":{}}],["var/mnist.pi",{"_index":766,"title":{},"content":{"79":{"position":[[1112,13]]},"678":{"position":[[1112,13]]}},"keywords":{}}],["var/spool/gridengine/spooldb",{"_index":3167,"title":{},"content":{"389":{"position":[[15816,29],[15899,31]]},"916":{"position":[[15816,29],[15899,31]]}},"keywords":{}}],["var/tf_dist_mnist/dist_mnist.pi",{"_index":3272,"title":{},"content":{"407":{"position":[[828,32]]},"934":{"position":[[848,32]]}},"keywords":{}}],["var/tf_mnist/mnist_with_summaries.pi",{"_index":726,"title":{},"content":{"77":{"position":[[197,37],[955,37]]},"78":{"position":[[197,37],[1102,37]]},"79":{"position":[[464,37]]},"80":{"position":[[497,37]]},"81":{"position":[[205,37],[808,37]]},"82":{"position":[[500,37]]},"86":{"position":[[596,37]]},"89":{"position":[[593,37]]},"223":{"position":[[276,37]]},"438":{"position":[[163,37],[991,37]]},"441":{"position":[[163,37],[1111,37]]},"443":{"position":[[584,37],[1592,37]]},"446":{"position":[[528,37]]},"449":{"position":[[164,37],[1022,37]]},"452":{"position":[[503,37]]},"461":{"position":[[564,37],[2357,37]]},"463":{"position":[[1359,37]]},"466":{"position":[[569,37],[2387,37]]},"469":{"position":[[1383,37]]},"472":{"position":[[682,37]]},"492":{"position":[[123,37]]},"496":{"position":[[382,37]]},"497":{"position":[[389,37]]},"669":{"position":[[596,37]]},"672":{"position":[[593,37]]},"676":{"position":[[197,37],[955,37]]},"677":{"position":[[197,37],[1102,37]]},"678":{"position":[[464,37]]},"679":{"position":[[497,37]]},"680":{"position":[[205,37],[808,37]]},"681":{"position":[[500,37]]},"808":{"position":[[276,37]]},"965":{"position":[[163,37],[991,37]]},"968":{"position":[[163,37],[1111,37]]},"970":{"position":[[584,37],[1592,37]]},"973":{"position":[[528,37]]},"976":{"position":[[164,37],[1022,37]]},"979":{"position":[[503,37]]},"988":{"position":[[564,37],[2357,37]]},"990":{"position":[[1359,37]]},"993":{"position":[[569,37],[2387,37]]},"996":{"position":[[1383,37]]},"999":{"position":[[682,37]]},"1006":{"position":[[123,37]]},"1023":{"position":[[382,37]]},"1024":{"position":[[389,37]]}},"keywords":{}}],["vari",{"_index":2065,"title":{},"content":{"216":{"position":[[462,6]]},"786":{"position":[[462,6]]}},"keywords":{}}],["variabl",{"_index":234,"title":{"490":{"position":[[36,8]]},"491":{"position":[[12,8]]},"1004":{"position":[[36,8]]},"1005":{"position":[[12,8]]}},"content":{"16":{"position":[[162,9]]},"153":{"position":[[652,9]]},"226":{"position":[[630,9]]},"320":{"position":[[494,9]]},"389":{"position":[[13,9]]},"406":{"position":[[615,9]]},"437":{"position":[[503,10],[1133,10]]},"460":{"position":[[1047,10],[1346,10]]},"478":{"position":[[501,10]]},"516":{"position":[[74,10]]},"517":{"position":[[78,8]]},"566":{"position":[[680,8]]},"569":{"position":[[100,8]]},"580":{"position":[[707,8]]},"608":{"position":[[162,9]]},"723":{"position":[[652,9]]},"811":{"position":[[630,9]]},"877":{"position":[[494,9]]},"916":{"position":[[13,9]]},"933":{"position":[[615,9]]},"964":{"position":[[503,10],[1133,10]]},"987":{"position":[[1047,10],[1346,10]]},"1010":{"position":[[501,10]]},"1034":{"position":[[237,9]]},"1056":{"position":[[74,10]]},"1057":{"position":[[78,8]]},"1086":{"position":[[680,8]]},"1089":{"position":[[100,8]]},"1106":{"position":[[707,8]]}},"keywords":{}}],["variablejava_hom",{"_index":238,"title":{},"content":{"16":{"position":[[230,17]]},"608":{"position":[[230,17]]}},"keywords":{}}],["variables.global_vari",{"_index":4094,"title":{},"content":{"572":{"position":[[1642,29]]},"1092":{"position":[[1642,29]]}},"keywords":{}}],["variablesubmarine.server.addr",{"_index":261,"title":{},"content":{"17":{"position":[[90,29]]},"609":{"position":[[90,29]]}},"keywords":{}}],["variant",{"_index":1940,"title":{},"content":{"194":{"position":[[304,7]]},"777":{"position":[[310,7]]}},"keywords":{}}],["varieti",{"_index":2191,"title":{},"content":{"261":{"position":[[455,7]]},"832":{"position":[[455,7]]}},"keywords":{}}],["variou",{"_index":1130,"title":{},"content":{"107":{"position":[[8634,7]]},"133":{"position":[[1280,7]]},"215":{"position":[[1712,7]]},"229":{"position":[[1355,7]]},"383":{"position":[[22,7]]},"785":{"position":[[1712,7]]},"792":{"position":[[1356,7]]},"910":{"position":[[22,7]]}},"keywords":{}}],["vcore=3",{"_index":1873,"title":{},"content":{"182":{"position":[[480,8],[1149,8],[1244,8]]},"765":{"position":[[480,8],[1149,8],[1244,8]]}},"keywords":{}}],["vendor",{"_index":1663,"title":{},"content":{"162":{"position":[[363,7]]},"732":{"position":[[363,7]]},"869":{"position":[[768,6]]}},"keywords":{}}],["venv",{"_index":1506,"title":{},"content":{"154":{"position":[[60,5]]},"398":{"position":[[480,4]]},"578":{"position":[[408,4],[482,4]]},"583":{"position":[[319,4],[389,4]]},"588":{"position":[[317,4],[385,4]]},"724":{"position":[[60,5]]},"925":{"position":[[480,4]]},"1104":{"position":[[408,4],[482,4]]},"1109":{"position":[[319,4],[389,4]]},"1114":{"position":[[317,4],[385,4]]}},"keywords":{}}],["venv/bin/activ",{"_index":3225,"title":{},"content":{"398":{"position":[[487,17]]},"578":{"position":[[415,17]]},"583":{"position":[[326,17]]},"588":{"position":[[324,17]]},"925":{"position":[[487,17]]},"1104":{"position":[[415,17]]},"1109":{"position":[[326,17]]},"1114":{"position":[[324,17]]}},"keywords":{}}],["verbos",{"_index":387,"title":{},"content":{"23":{"position":[[753,7]]},"389":{"position":[[1520,7]]},"541":{"position":[[753,7]]},"579":{"position":[[388,7]]},"590":{"position":[[962,7]]},"611":{"position":[[753,7]]},"916":{"position":[[1520,7]]},"1067":{"position":[[753,7]]},"1105":{"position":[[388,7]]},"1116":{"position":[[962,7]]}},"keywords":{}}],["veri",{"_index":1655,"title":{},"content":{"161":{"position":[[938,4]]},"213":{"position":[[209,4]]},"731":{"position":[[938,4]]},"762":{"position":[[209,4]]}},"keywords":{}}],["verif",{"_index":2257,"title":{"310":{"position":[[0,12]]}},"content":{"274":{"position":[[346,13]]},"312":{"position":[[10,12]]},"845":{"position":[[346,13]]}},"keywords":{}}],["verifi",{"_index":75,"title":{"7":{"position":[[0,6]]},"309":{"position":[[7,6]]},"312":{"position":[[3,6]]},"371":{"position":[[0,6]]},"381":{"position":[[0,6]]},"596":{"position":[[0,6]]},"898":{"position":[[0,6]]},"908":{"position":[[0,6]]}},"content":{"292":{"position":[[55,8]]},"293":{"position":[[74,8]]},"314":{"position":[[1015,6],[1922,6],[1956,6],[2180,6],[2305,6]]},"315":{"position":[[43,6]]},"317":{"position":[[360,6]]},"320":{"position":[[1291,6]]},"325":{"position":[[458,6]]},"343":{"position":[[13,6],[99,6]]},"352":{"position":[[927,8]]},"371":{"position":[[25,6],[183,6]]},"509":{"position":[[196,6]]},"856":{"position":[[89,8],[111,8]]},"877":{"position":[[1291,6]]},"895":{"position":[[458,6]]},"898":{"position":[[25,6],[183,6]]},"1048":{"position":[[196,6]]}},"keywords":{}}],["version",{"_index":5,"title":{"1":{"position":[[7,7]]},"12":{"position":[[4,8]]},"93":{"position":[[11,8]]},"94":{"position":[[12,7]]},"95":{"position":[[14,7]]},"96":{"position":[[15,7]]},"97":{"position":[[15,7]]},"98":{"position":[[15,7]]},"311":{"position":[[26,7]]},"312":{"position":[[31,7]]},"355":{"position":[[16,7]]},"601":{"position":[[7,7]]},"604":{"position":[[4,8]]},"1040":{"position":[[43,8]]},"1042":{"position":[[45,8]]}},"content":{"1":{"position":[[20,7]]},"5":{"position":[[88,7]]},"12":{"position":[[38,8],[74,7],[183,8]]},"16":{"position":[[691,7]]},"93":{"position":[[201,7],[580,9],[943,9],[1307,9],[1671,9]]},"94":{"position":[[212,7],[588,9]]},"95":{"position":[[20,7],[122,10],[264,7],[360,7]]},"96":{"position":[[220,7]]},"97":{"position":[[266,7]]},"105":{"position":[[80,7]]},"133":{"position":[[1416,7],[2626,8],[2644,7]]},"138":{"position":[[35,7]]},"151":{"position":[[809,8],[966,7]]},"156":{"position":[[524,8],[586,8]]},"170":{"position":[[187,8]]},"173":{"position":[[163,7]]},"211":{"position":[[301,7]]},"212":{"position":[[303,7]]},"216":{"position":[[562,7]]},"217":{"position":[[222,7]]},"219":{"position":[[281,10]]},"223":{"position":[[192,8]]},"224":{"position":[[278,7],[300,7]]},"225":{"position":[[534,7]]},"283":{"position":[[92,8],[218,7]]},"285":{"position":[[11,7]]},"286":{"position":[[5,7]]},"287":{"position":[[4,7]]},"290":{"position":[[0,7]]},"292":{"position":[[3,7]]},"293":{"position":[[7,7]]},"298":{"position":[[182,8],[202,8]]},"314":{"position":[[198,8],[257,7]]},"330":{"position":[[137,7]]},"334":{"position":[[279,8],[412,8],[1135,8]]},"338":{"position":[[329,7]]},"348":{"position":[[33,8]]},"349":{"position":[[75,7],[335,8]]},"389":{"position":[[15302,7],[30851,7]]},"391":{"position":[[188,7],[211,7],[249,7],[566,7]]},"400":{"position":[[81,7],[177,7],[233,7]]},"406":{"position":[[901,7],[977,7]]},"410":{"position":[[209,7]]},"511":{"position":[[1138,7]]},"513":{"position":[[72,7]]},"565":{"position":[[19,7]]},"568":{"position":[[688,7]]},"578":{"position":[[708,7]]},"594":{"position":[[88,7]]},"601":{"position":[[20,7]]},"604":{"position":[[38,8],[74,7],[183,8]]},"608":{"position":[[691,7]]},"710":{"position":[[35,7]]},"721":{"position":[[809,8],[966,7]]},"726":{"position":[[524,8],[586,8]]},"740":{"position":[[187,8]]},"743":{"position":[[164,7]]},"760":{"position":[[301,7]]},"761":{"position":[[303,7]]},"786":{"position":[[562,7]]},"787":{"position":[[222,7]]},"789":{"position":[[281,10]]},"808":{"position":[[192,8]]},"809":{"position":[[278,7],[300,7]]},"810":{"position":[[587,7]]},"853":{"position":[[132,7],[220,7],[322,7],[424,7],[525,7]]},"854":{"position":[[92,8],[218,7]]},"856":{"position":[[11,7]]},"857":{"position":[[5,7]]},"865":{"position":[[185,8],[205,8]]},"869":{"position":[[619,7]]},"916":{"position":[[15302,7],[30851,7]]},"918":{"position":[[188,7],[211,7],[249,7],[566,7]]},"927":{"position":[[81,7],[177,7],[233,7]]},"937":{"position":[[211,7]]},"1050":{"position":[[197,7]]},"1052":{"position":[[72,7]]},"1085":{"position":[[19,7]]},"1088":{"position":[[688,7]]},"1104":{"position":[[708,7]]}},"keywords":{}}],["version/regist",{"_index":850,"title":{},"content":{"93":{"position":[[98,16]]}},"keywords":{}}],["version/register/1",{"_index":872,"title":{},"content":{"94":{"position":[[108,18]]},"96":{"position":[[113,18]]}},"keywords":{}}],["version/tag?name=register&version=2&tag=789",{"_index":877,"title":{},"content":{"97":{"position":[[136,43]]},"98":{"position":[[140,43]]}},"keywords":{}}],["version/tag?name={name}&version={version}&tag={tag",{"_index":876,"title":{},"content":{"97":{"position":[[19,51]]},"98":{"position":[[21,51]]}},"keywords":{}}],["version/{nam",{"_index":848,"title":{},"content":{"93":{"position":[[18,14]]}},"keywords":{}}],["version/{name}/{v",{"_index":871,"title":{},"content":{"94":{"position":[[18,24]]},"96":{"position":[[21,24]]}},"keywords":{}}],["version=\"1.0",{"_index":2552,"title":{},"content":{"336":{"position":[[122,13]]}},"keywords":{}}],["version>.jar",{"_index":4312,"title":{},"content":{"1063":{"position":[[35,13]]}},"keywords":{}}],["versionkubectlhelm",{"_index":3290,"title":{},"content":{"410":{"position":[[54,18]]},"937":{"position":[[54,18]]}},"keywords":{}}],["version,should",{"_index":2466,"title":{},"content":{"330":{"position":[[156,14]]}},"keywords":{}}],["veto",{"_index":1010,"title":{},"content":{"107":{"position":[[2678,6],[6792,5],[6802,6],[6848,4],[6869,6],[7500,4],[8072,6],[8096,4],[8127,4],[8213,5],[8237,5],[8362,4],[8385,4],[8429,5],[8473,4],[8496,5],[8507,4],[8555,6]]}},"keywords":{}}],["vetoes.lazi",{"_index":1107,"title":{},"content":{"107":{"position":[[7772,11]]}},"keywords":{}}],["vgg11",{"_index":4184,"title":{},"content":{"589":{"position":[[493,5],[676,5],[881,5]]},"590":{"position":[[563,5],[748,5],[920,5]]},"1115":{"position":[[493,5],[676,5],[881,5]]},"1116":{"position":[[563,5],[748,5],[920,5]]}},"keywords":{}}],["via",{"_index":237,"title":{"187":{"position":[[7,3]]},"770":{"position":[[7,3]]}},"content":{"16":{"position":[[203,3]]},"143":{"position":[[43,3]]},"171":{"position":[[1972,3],[2289,3]]},"173":{"position":[[498,3]]},"200":{"position":[[2890,3]]},"244":{"position":[[154,3]]},"277":{"position":[[85,3]]},"295":{"position":[[111,3]]},"332":{"position":[[229,3]]},"569":{"position":[[937,3]]},"608":{"position":[[203,3]]},"713":{"position":[[43,3]]},"741":{"position":[[1984,3],[2302,3]]},"743":{"position":[[499,3]]},"783":{"position":[[2890,3]]},"814":{"position":[[154,3]]},"848":{"position":[[85,3]]},"862":{"position":[[111,3]]},"1089":{"position":[[937,3]]}},"keywords":{}}],["vic",{"_index":1053,"title":{},"content":{"107":{"position":[[4915,5]]}},"keywords":{}}],["video",{"_index":2308,"title":{"295":{"position":[[0,5]]},"862":{"position":[[0,5]]}},"content":{"295":{"position":[[10,6]]},"862":{"position":[[10,6]]}},"keywords":{}}],["view",{"_index":631,"title":{},"content":{"35":{"position":[[1651,4],[1908,4],[2116,4],[2202,4],[2323,4],[2441,4],[2566,4],[2696,5],[2824,5]]},"55":{"position":[[959,4]]},"141":{"position":[[505,5]]},"174":{"position":[[98,4]]},"190":{"position":[[552,4]]},"389":{"position":[[14816,4],[30365,4]]},"413":{"position":[[230,4]]},"474":{"position":[[125,4]]},"505":{"position":[[139,4]]},"627":{"position":[[1651,4],[1908,4],[2116,4],[2202,4],[2323,4],[2441,4],[2566,4],[2696,5],[2824,5]]},"647":{"position":[[959,4]]},"744":{"position":[[98,4]]},"773":{"position":[[552,4]]},"869":{"position":[[1354,4]]},"916":{"position":[[14816,4],[30365,4]]},"1001":{"position":[[125,4]]},"1044":{"position":[[139,4]]}},"keywords":{}}],["vim",{"_index":2737,"title":{},"content":{"375":{"position":[[736,3]]},"553":{"position":[[566,3]]},"902":{"position":[[736,3]]},"1079":{"position":[[566,3]]}},"keywords":{}}],["violat",{"_index":2309,"title":{},"content":{"298":{"position":[[37,10]]},"865":{"position":[[37,10]]}},"keywords":{}}],["virtual",{"_index":1509,"title":{"578":{"position":[[18,7]]},"583":{"position":[[18,7]]},"588":{"position":[[18,7]]},"1104":{"position":[[18,7]]},"1109":{"position":[[18,7]]},"1114":{"position":[[18,7]]}},"content":{"154":{"position":[[138,7]]},"398":{"position":[[197,7]]},"577":{"position":[[25,7]]},"578":{"position":[[23,7]]},"582":{"position":[[25,7]]},"583":{"position":[[23,7]]},"587":{"position":[[25,7]]},"588":{"position":[[23,7]]},"724":{"position":[[138,7]]},"925":{"position":[[197,7]]},"1103":{"position":[[25,7]]},"1104":{"position":[[23,7]]},"1108":{"position":[[25,7]]},"1109":{"position":[[23,7]]},"1113":{"position":[[25,7]]},"1114":{"position":[[23,7]]}},"keywords":{}}],["virtualbox/vmwar",{"_index":1448,"title":{},"content":{"151":{"position":[[199,17]]},"721":{"position":[[199,17]]}},"keywords":{}}],["virtualenv",{"_index":1513,"title":{},"content":{"154":{"position":[[267,10]]},"398":{"position":[[109,10],[377,10],[448,10]]},"578":{"position":[[258,10],[376,10]]},"583":{"position":[[255,10],[287,10]]},"588":{"position":[[253,10],[285,10]]},"724":{"position":[[267,10]]},"925":{"position":[[109,10],[377,10],[448,10]]},"1104":{"position":[[258,10],[376,10]]},"1109":{"position":[[255,10],[287,10]]},"1114":{"position":[[253,10],[285,10]]}},"keywords":{}}],["visibl",{"_index":617,"title":{},"content":{"35":{"position":[[1018,10],[1370,11],[1390,10],[2060,10],[2140,10],[2254,10],[2384,10],[2502,10],[2639,10],[2760,10]]},"55":{"position":[[671,11],[910,10],[969,10],[1017,10],[1084,10],[1135,10],[1208,10],[1262,10]]},"627":{"position":[[1018,10],[1370,11],[1390,10],[2060,10],[2140,10],[2254,10],[2384,10],[2502,10],[2639,10],[2760,10]]},"647":{"position":[[671,11],[910,10],[969,10],[1017,10],[1084,10],[1135,10],[1208,10],[1262,10]]}},"keywords":{}}],["vision",{"_index":3752,"title":{},"content":{"553":{"position":[[1544,6]]},"1079":{"position":[[1544,6]]}},"keywords":{}}],["visit",{"_index":1186,"title":{},"content":{"120":{"position":[[0,5]]},"127":{"position":[[0,5]]},"128":{"position":[[0,5]]},"129":{"position":[[0,5]]},"688":{"position":[[0,5]]},"695":{"position":[[0,5]]},"696":{"position":[[0,5]]},"697":{"position":[[0,5]]}},"keywords":{}}],["visual",{"_index":632,"title":{"571":{"position":[[0,11]]},"1091":{"position":[[0,11]]}},"content":{"35":{"position":[[1660,6]]},"159":{"position":[[908,14],[1095,14]]},"215":{"position":[[1338,14]]},"571":{"position":[[35,9],[128,9]]},"627":{"position":[[1660,6]]},"729":{"position":[[908,14],[1095,14]]},"785":{"position":[[1338,14]]},"1091":{"position":[[35,9],[128,9]]}},"keywords":{}}],["vjdvx",{"_index":3310,"title":{},"content":{"412":{"position":[[479,5]]}},"keywords":{}}],["vlfbf7ch",{"_index":1407,"title":{},"content":{"143":{"position":[[145,8]]}},"keywords":{}}],["vm",{"_index":44,"title":{"153":{"position":[[0,2]]},"723":{"position":[[0,2]]}},"content":{"5":{"position":[[19,2]]},"151":{"position":[[180,2],[279,3],[343,2],[370,2],[872,2]]},"152":{"position":[[130,2],[260,2],[312,2],[454,2]]},"153":{"position":[[17,2]]},"154":{"position":[[876,2]]},"172":{"position":[[176,2]]},"179":{"position":[[1582,2]]},"410":{"position":[[156,2]]},"594":{"position":[[19,2]]},"721":{"position":[[180,2],[279,3],[343,2],[370,2],[872,2]]},"722":{"position":[[130,2],[260,2],[312,2],[454,2]]},"723":{"position":[[17,2]]},"724":{"position":[[876,2]]},"742":{"position":[[176,2]]},"749":{"position":[[1587,2]]},"869":{"position":[[589,2]]},"937":{"position":[[158,2]]}},"keywords":{}}],["vnklf",{"_index":3312,"title":{},"content":{"412":{"position":[[536,5]]}},"keywords":{}}],["void",{"_index":1095,"title":{},"content":{"107":{"position":[[6900,5]]}},"keywords":{}}],["volum",{"_index":1690,"title":{"219":{"position":[[11,7]]},"383":{"position":[[0,6]]},"789":{"position":[[11,7]]},"910":{"position":[[0,6]]}},"content":{"163":{"position":[[594,8]]},"204":{"position":[[616,6]]},"210":{"position":[[252,6],[374,8]]},"216":{"position":[[274,8]]},"217":{"position":[[2144,8]]},"219":{"position":[[52,6],[260,6],[497,7]]},"383":{"position":[[30,6]]},"733":{"position":[[594,8]]},"753":{"position":[[616,6]]},"759":{"position":[[252,6],[374,8]]},"786":{"position":[[274,8]]},"787":{"position":[[2144,8]]},"789":{"position":[[52,6],[260,6],[497,7]]},"910":{"position":[[30,6]]}},"keywords":{}}],["volumemount",{"_index":2086,"title":{},"content":{"217":{"position":[[1964,13],[2096,13]]},"787":{"position":[[1964,13],[2096,13]]}},"keywords":{}}],["volunt",{"_index":976,"title":{},"content":{"107":{"position":[[1435,10],[3239,10]]}},"keywords":{}}],["vot",{"_index":940,"title":{"140":{"position":[[7,4]]},"141":{"position":[[4,6]]},"351":{"position":[[9,6]]},"352":{"position":[[0,4]]}},"content":{"107":{"position":[[150,5],[160,6],[1899,5],[2669,5],[3615,5],[5275,5],[5332,4],[5343,7],[5710,6],[5815,6],[5866,5],[5969,6],[6034,5],[6092,7],[6100,5],[6185,6],[6226,4],[6237,6],[6339,4],[6394,5],[6429,4],[6510,6],[6558,4],[6582,5],[6725,5],[6775,4],[6942,4],[7111,7],[7153,5],[7205,5],[7251,5],[7361,5],[7395,6],[7751,5],[7826,5],[7889,4],[7916,5],[7942,5],[8000,5],[8026,5],[8053,5],[8065,6],[8303,5],[8770,5],[9230,4],[9479,4],[10637,6],[10655,5],[10713,6],[10741,5],[10747,5],[10876,4],[10899,6],[10951,5]]},"133":{"position":[[1400,6],[2608,4]]},"141":{"position":[[613,4],[665,4],[712,6],[751,6],[832,5],[850,5],[871,5],[887,5],[904,4],[923,6],[1010,6],[1036,4],[1078,6],[1109,7],[1136,6],[1212,4],[1247,4],[1264,4],[1695,4],[1836,4]]},"145":{"position":[[128,4],[206,6]]},"167":{"position":[[553,5]]},"350":{"position":[[426,6]]},"351":{"position":[[3,4]]},"352":{"position":[[0,6],[88,5],[838,4],[1162,6],[1321,4],[1362,4],[1399,5],[1439,4],[1509,6],[1520,4]]},"355":{"position":[[252,6]]},"715":{"position":[[128,4],[206,6]]},"737":{"position":[[553,5]]}},"keywords":{}}],["votes.lazi",{"_index":1111,"title":{},"content":{"107":{"position":[[7956,10]]}},"keywords":{}}],["vs",{"_index":1512,"title":{},"content":{"154":{"position":[[264,2],[278,2]]},"510":{"position":[[199,2],[265,2]]},"724":{"position":[[264,2],[278,2]]},"1049":{"position":[[199,2],[265,2]]}},"keywords":{}}],["vwds8",{"_index":4248,"title":{},"content":{"939":{"position":[[167,5]]}},"keywords":{}}],["w",{"_index":4345,"title":{},"content":{"1064":{"position":[[1886,2]]}},"keywords":{}}],["w/o",{"_index":2722,"title":{},"content":{"375":{"position":[[364,4]]},"559":{"position":[[351,4]]},"902":{"position":[[364,4]]},"1064":{"position":[[1892,3]]},"1094":{"position":[[351,4]]}},"keywords":{}}],["wait",{"_index":543,"title":{},"content":{"31":{"position":[[280,7]]},"322":{"position":[[93,5],[108,5],[163,6],[203,4]]},"355":{"position":[[389,4]]},"389":{"position":[[17746,4],[32527,4]]},"503":{"position":[[0,5]]},"534":{"position":[[47,5],[57,5],[70,5],[80,5],[123,5]]},"570":{"position":[[14240,7]]},"623":{"position":[[280,7]]},"879":{"position":[[93,5],[108,5],[163,6],[203,4]]},"916":{"position":[[17746,4],[32527,4]]},"1030":{"position":[[0,5]]},"1090":{"position":[[14240,7]]}},"keywords":{}}],["wait.do",{"_index":2446,"title":{},"content":{"322":{"position":[[125,7]]},"879":{"position":[[125,7]]}},"keywords":{}}],["wait_for_finish(id",{"_index":3584,"title":{"503":{"position":[[0,19]]},"1030":{"position":[[0,19]]}},"content":{},"keywords":{}}],["want",{"_index":10,"title":{},"content":{"1":{"position":[[64,4],[246,4]]},"21":{"position":[[630,4]]},"133":{"position":[[2188,4]]},"144":{"position":[[343,4]]},"148":{"position":[[217,7]]},"151":{"position":[[2226,5]]},"156":{"position":[[35,4]]},"167":{"position":[[412,4]]},"189":{"position":[[618,4]]},"194":{"position":[[1124,4]]},"200":{"position":[[2716,4]]},"217":{"position":[[726,4],[879,4]]},"305":{"position":[[7,4]]},"314":{"position":[[1298,4]]},"320":{"position":[[1012,4]]},"331":{"position":[[557,5],[779,5]]},"384":{"position":[[141,4],[517,4],[868,4]]},"386":{"position":[[944,4]]},"395":{"position":[[7,4]]},"406":{"position":[[651,4]]},"569":{"position":[[1801,4]]},"575":{"position":[[41,4]]},"601":{"position":[[64,4],[246,4]]},"621":{"position":[[630,4]]},"714":{"position":[[343,4]]},"718":{"position":[[217,7]]},"721":{"position":[[2226,5]]},"726":{"position":[[35,4]]},"737":{"position":[[412,4]]},"772":{"position":[[618,4]]},"777":{"position":[[1404,4]]},"783":{"position":[[2716,4]]},"787":{"position":[[726,4],[879,4]]},"871":{"position":[[7,4]]},"877":{"position":[[1012,4]]},"911":{"position":[[141,4],[517,4],[868,4]]},"913":{"position":[[944,4]]},"922":{"position":[[7,4]]},"1089":{"position":[[1801,4]]},"1101":{"position":[[41,4]]}},"keywords":{}}],["warehous",{"_index":2459,"title":{},"content":{"328":{"position":[[198,9],[232,10]]}},"keywords":{}}],["warn",{"_index":111,"title":{"572":{"position":[[0,8]]},"1092":{"position":[[0,8]]}},"content":{"7":{"position":[[467,7]]},"12":{"position":[[106,9]]},"26":{"position":[[24,4]]},"322":{"position":[[0,7]]},"350":{"position":[[542,5]]},"386":{"position":[[749,8]]},"389":{"position":[[14620,8],[30169,8]]},"544":{"position":[[24,4]]},"596":{"position":[[467,7]]},"604":{"position":[[106,9]]},"614":{"position":[[24,4]]},"879":{"position":[[0,7]]},"913":{"position":[[749,8]]},"916":{"position":[[14620,8],[30169,8]]},"1070":{"position":[[24,4]]}},"keywords":{}}],["warranti",{"_index":2366,"title":{},"content":{"314":{"position":[[414,9]]},"331":{"position":[[480,9]]}},"keywords":{}}],["watch",{"_index":604,"title":{},"content":{"35":{"position":[[594,6]]},"627":{"position":[[594,6]]}},"keywords":{}}],["watch、star、frok",{"_index":677,"title":{},"content":{"55":{"position":[[317,15]]},"647":{"position":[[317,15]]}},"keywords":{}}],["watch:[todo]star:[todo]fork:[todo]com",{"_index":678,"title":{},"content":{"55":{"position":[[347,54]]},"647":{"position":[[347,54]]}},"keywords":{}}],["watch:[todo]star:[todo]fork:[todo]comment:us",{"_index":608,"title":{},"content":{"35":{"position":[[650,47]]},"627":{"position":[[650,47]]}},"keywords":{}}],["way",{"_index":646,"title":{"165":{"position":[[16,3]]},"735":{"position":[[16,3]]}},"content":{"35":{"position":[[2930,4]]},"107":{"position":[[596,5]]},"133":{"position":[[996,4],[2216,5]]},"143":{"position":[[72,5]]},"198":{"position":[[41,3]]},"213":{"position":[[384,3]]},"217":{"position":[[69,4]]},"222":{"position":[[343,4]]},"568":{"position":[[200,4]]},"627":{"position":[[2930,4]]},"713":{"position":[[72,5]]},"762":{"position":[[384,3]]},"781":{"position":[[41,3]]},"787":{"position":[[69,4]]},"807":{"position":[[343,4]]},"1088":{"position":[[200,4]]}},"keywords":{}}],["wbf8b",{"_index":3314,"title":{},"content":{"412":{"position":[[589,5]]}},"keywords":{}}],["we'r",{"_index":1716,"title":{},"content":{"167":{"position":[[487,5]]},"230":{"position":[[864,5]]},"737":{"position":[[487,5]]},"793":{"position":[[864,5]]}},"keywords":{}}],["we'v",{"_index":1424,"title":{},"content":{"145":{"position":[[191,5]]},"715":{"position":[[191,5]]}},"keywords":{}}],["web",{"_index":299,"title":{"406":{"position":[[10,3]]},"933":{"position":[[10,3]]}},"content":{"17":{"position":[[1287,3]]},"31":{"position":[[115,3]]},"51":{"position":[[59,3]]},"173":{"position":[[375,3],[419,3]]},"229":{"position":[[79,4],[681,3]]},"301":{"position":[[202,3]]},"368":{"position":[[35,3],[165,3],[266,4],[276,3],[344,3]]},"405":{"position":[[19,3]]},"406":{"position":[[34,3]]},"609":{"position":[[1287,3]]},"623":{"position":[[115,3]]},"643":{"position":[[59,3]]},"743":{"position":[[376,3],[420,3]]},"792":{"position":[[79,4],[681,3]]},"868":{"position":[[186,3]]},"891":{"position":[[35,3],[165,3],[266,4],[276,3],[344,3]]},"932":{"position":[[19,3]]},"933":{"position":[[34,3]]}},"keywords":{}}],["webpag",{"_index":3557,"title":{"493":{"position":[[27,7]]},"1007":{"position":[[27,7]]}},"content":{"491":{"position":[[216,8]]},"1005":{"position":[[216,8]]}},"keywords":{}}],["websit",{"_index":1132,"title":{"304":{"position":[[18,7]]},"356":{"position":[[20,7]]},"870":{"position":[[18,7]]}},"content":{"107":{"position":[[8920,7]]},"133":{"position":[[1966,7]]},"135":{"position":[[370,7]]},"304":{"position":[[10,7],[63,7],[99,7],[366,8],[405,8]]},"305":{"position":[[37,8]]},"306":{"position":[[68,7]]},"307":{"position":[[41,7]]},"707":{"position":[[370,7]]},"870":{"position":[[10,7],[63,7],[99,7],[366,8],[405,8]]},"871":{"position":[[37,8]]},"872":{"position":[[68,7]]},"873":{"position":[[41,7]]}},"keywords":{}}],["websites.speak",{"_index":1042,"title":{},"content":{"107":{"position":[[4212,17]]}},"keywords":{}}],["websocket",{"_index":2666,"title":{},"content":{"368":{"position":[[103,9]]},"891":{"position":[[103,9]]}},"keywords":{}}],["week",{"_index":1026,"title":{},"content":{"107":{"position":[[3452,4]]},"331":{"position":[[971,5]]}},"keywords":{}}],["welcom",{"_index":978,"title":{},"content":{"107":{"position":[[1569,7]]},"144":{"position":[[604,8]]},"714":{"position":[[604,8]]}},"keywords":{}}],["well",{"_index":440,"title":{},"content":{"25":{"position":[[2004,4]]},"107":{"position":[[1298,5]]},"144":{"position":[[164,4]]},"171":{"position":[[307,5]]},"212":{"position":[[213,4]]},"543":{"position":[[2004,4]]},"556":{"position":[[290,4]]},"613":{"position":[[2004,4]]},"714":{"position":[[164,4]]},"741":{"position":[[307,5]]},"761":{"position":[[213,4]]},"1069":{"position":[[2004,4]]},"1082":{"position":[[290,4]]}},"keywords":{}}],["wget",{"_index":2730,"title":{},"content":{"375":{"position":[[624,4],[1225,4],[1326,4]]},"386":{"position":[[249,4],[307,4],[363,4]]},"398":{"position":[[233,4]]},"549":{"position":[[603,4],[1118,4],[1171,4],[1352,4]]},"553":{"position":[[617,4],[1697,4],[1750,4]]},"559":{"position":[[1334,4],[1387,4]]},"578":{"position":[[114,4]]},"583":{"position":[[111,4]]},"588":{"position":[[109,4]]},"902":{"position":[[624,4],[1225,4],[1326,4]]},"913":{"position":[[249,4],[307,4],[363,4]]},"925":{"position":[[233,4]]},"1075":{"position":[[603,4],[1118,4],[1171,4],[1352,4]]},"1079":{"position":[[617,4],[1697,4],[1750,4]]},"1094":{"position":[[1334,4],[1387,4]]},"1104":{"position":[[114,4]]},"1109":{"position":[[111,4]]},"1114":{"position":[[109,4]]}},"keywords":{}}],["what'",{"_index":568,"title":{},"content":{"33":{"position":[[356,6]]},"153":{"position":[[405,6]]},"625":{"position":[[356,6]]},"723":{"position":[[405,6]]}},"keywords":{}}],["whatev",{"_index":1539,"title":{},"content":{"156":{"position":[[446,8]]},"159":{"position":[[2482,8]]},"189":{"position":[[154,8]]},"726":{"position":[[446,8]]},"729":{"position":[[2482,8]]},"772":{"position":[[154,8]]}},"keywords":{}}],["what‘",{"_index":675,"title":{},"content":{"53":{"position":[[170,6]]},"645":{"position":[[170,6]]}},"keywords":{}}],["whenev",{"_index":2318,"title":{},"content":{"299":{"position":[[132,8]]},"866":{"position":[[132,8]]}},"keywords":{}}],["where'",{"_index":1750,"title":{"189":{"position":[[27,7]]},"772":{"position":[[27,7]]}},"content":{"171":{"position":[[932,7]]},"741":{"position":[[937,7]]}},"keywords":{}}],["wheth",{"_index":1384,"title":{"312":{"position":[[10,7]]},"333":{"position":[[10,7]]},"343":{"position":[[10,7]]}},"content":{"141":{"position":[[548,7]]},"272":{"position":[[149,7]]},"273":{"position":[[29,7]]},"313":{"position":[[103,7]]},"314":{"position":[[2118,7]]},"315":{"position":[[50,7]]},"316":{"position":[[75,7],[114,7],[192,7]]},"317":{"position":[[142,7],[181,7],[263,7],[367,7]]},"320":{"position":[[861,7]]},"328":{"position":[[146,7]]},"333":{"position":[[50,7]]},"338":{"position":[[113,7]]},"460":{"position":[[459,7]]},"843":{"position":[[149,7]]},"844":{"position":[[29,7]]},"877":{"position":[[861,7]]},"987":{"position":[[459,7]]}},"keywords":{}}],["wid",{"_index":1103,"title":{},"content":{"107":{"position":[[7306,5]]},"161":{"position":[[234,4]]},"731":{"position":[[234,4]]}},"keywords":{}}],["willing",{"_index":1083,"title":{},"content":{"107":{"position":[[6361,11],[6446,11]]}},"keywords":{}}],["window",{"_index":175,"title":{},"content":{"12":{"position":[[147,6]]},"298":{"position":[[376,7]]},"308":{"position":[[69,7]]},"604":{"position":[[147,6]]},"865":{"position":[[379,7]]},"874":{"position":[[69,7]]}},"keywords":{}}],["wish",{"_index":1352,"title":{},"content":{"137":{"position":[[227,6]]},"709":{"position":[[227,6]]}},"keywords":{}}],["with_info=tru",{"_index":3339,"title":{},"content":{"415":{"position":[[663,15]]},"942":{"position":[[681,15]]}},"keywords":{}}],["withdraw",{"_index":1126,"title":{},"content":{"107":{"position":[[8481,8]]}},"keywords":{}}],["withdrawn",{"_index":1127,"title":{},"content":{"107":{"position":[[8519,10]]}},"keywords":{}}],["within",{"_index":958,"title":{},"content":{"107":{"position":[[898,6],[5029,6],[5125,6],[5482,6],[8671,6],[9596,6]]},"136":{"position":[[161,6]]},"147":{"position":[[14,6]]},"167":{"position":[[349,6]]},"168":{"position":[[407,6]]},"384":{"position":[[45,6]]},"415":{"position":[[1883,6]]},"708":{"position":[[161,6]]},"717":{"position":[[14,6]]},"737":{"position":[[349,6]]},"738":{"position":[[407,6]]},"911":{"position":[[45,6]]},"942":{"position":[[1901,6]]}},"keywords":{}}],["without",{"_index":31,"title":{"577":{"position":[[0,7]]},"582":{"position":[[0,7]]},"587":{"position":[[0,7]]},"1103":{"position":[[0,7]]},"1108":{"position":[[0,7]]},"1113":{"position":[[0,7]]}},"content":{"2":{"position":[[86,7]]},"14":{"position":[[387,7]]},"35":{"position":[[3183,7]]},"159":{"position":[[736,7]]},"168":{"position":[[224,7]]},"248":{"position":[[538,7],[1104,7]]},"252":{"position":[[52,7]]},"264":{"position":[[85,7]]},"308":{"position":[[109,7]]},"549":{"position":[[345,8],[722,8]]},"602":{"position":[[86,7]]},"606":{"position":[[387,7]]},"627":{"position":[[3183,7]]},"729":{"position":[[736,7]]},"738":{"position":[[224,7]]},"818":{"position":[[538,7],[1104,7]]},"822":{"position":[[52,7]]},"835":{"position":[[85,7]]},"874":{"position":[[109,7]]},"1075":{"position":[[345,8],[722,8]]}},"keywords":{}}],["won't",{"_index":2384,"title":{},"content":{"314":{"position":[[1138,5]]},"570":{"position":[[16049,5]]},"1090":{"position":[[16049,5]]}},"keywords":{}}],["work",{"_index":563,"title":{"405":{"position":[[0,7]]},"932":{"position":[[0,7]]}},"content":{"33":{"position":[[235,4],[339,4]]},"77":{"position":[[476,9],[1234,9]]},"78":{"position":[[447,9],[1352,9]]},"79":{"position":[[743,9],[1322,9]]},"80":{"position":[[776,9]]},"81":{"position":[[484,9],[1087,9]]},"82":{"position":[[779,9]]},"83":{"position":[[290,6],[495,6]]},"84":{"position":[[1518,6]]},"86":{"position":[[904,9]]},"89":{"position":[[901,9]]},"107":{"position":[[167,6]]},"117":{"position":[[179,5]]},"133":{"position":[[1609,4]]},"144":{"position":[[351,4]]},"148":{"position":[[508,5]]},"156":{"position":[[132,5],[267,5]]},"162":{"position":[[613,4]]},"179":{"position":[[1228,4]]},"182":{"position":[[1165,7]]},"188":{"position":[[654,6]]},"201":{"position":[[654,7],[711,7]]},"223":{"position":[[540,7]]},"226":{"position":[[275,7]]},"248":{"position":[[1072,4],[1122,5]]},"273":{"position":[[98,7]]},"389":{"position":[[17684,6],[17696,6],[17731,7],[29738,6],[29819,6],[29884,6],[32546,6],[32574,6],[32587,7]]},"417":{"position":[[93,8]]},"418":{"position":[[187,7],[212,6]]},"438":{"position":[[442,9],[1456,10]]},"441":{"position":[[413,9],[1548,10]]},"443":{"position":[[1048,10],[2029,10]]},"446":{"position":[[965,10]]},"449":{"position":[[443,9],[1487,10]]},"452":{"position":[[968,10]]},"454":{"position":[[293,6]]},"457":{"position":[[321,6]]},"461":{"position":[[872,9],[2848,10]]},"463":{"position":[[1850,10]]},"466":{"position":[[877,9],[2875,10]]},"469":{"position":[[1871,10]]},"472":{"position":[[1146,10]]},"475":{"position":[[518,8]]},"492":{"position":[[363,9]]},"496":{"position":[[661,9]]},"497":{"position":[[608,9]]},"568":{"position":[[139,8]]},"569":{"position":[[336,7],[439,9],[449,8],[826,7],[869,8],[882,7],[1046,7],[1101,7],[1394,6],[1474,9],[1484,8],[1566,7]]},"570":{"position":[[9678,7],[9698,7],[14266,7],[17360,6],[17376,6]]},"579":{"position":[[1126,6],[1327,6],[1838,6],[1985,6],[2360,6],[2562,6]]},"584":{"position":[[986,6],[1187,6],[1698,6],[1845,6],[2220,6],[2422,6]]},"589":{"position":[[1683,7],[1885,7],[2707,6],[2854,6],[3237,7],[3645,7]]},"625":{"position":[[235,4],[339,4]]},"669":{"position":[[904,9]]},"672":{"position":[[901,9]]},"676":{"position":[[476,9],[1234,9]]},"677":{"position":[[447,9],[1352,9]]},"678":{"position":[[743,9],[1322,9]]},"679":{"position":[[776,9]]},"680":{"position":[[484,9],[1087,9]]},"681":{"position":[[779,9]]},"682":{"position":[[290,6],[495,6]]},"683":{"position":[[1518,6]]},"685":{"position":[[179,5]]},"714":{"position":[[351,4]]},"726":{"position":[[132,5],[267,5]]},"732":{"position":[[613,4]]},"749":{"position":[[1233,4]]},"750":{"position":[[655,7],[712,7]]},"765":{"position":[[1165,7]]},"771":{"position":[[654,6]]},"808":{"position":[[540,7]]},"811":{"position":[[275,7]]},"818":{"position":[[1072,4],[1122,5]]},"844":{"position":[[98,7]]},"916":{"position":[[17684,6],[17696,6],[17731,7],[29738,6],[29819,6],[29884,6],[32546,6],[32574,6],[32587,7]]},"944":{"position":[[93,8]]},"945":{"position":[[158,7],[185,7]]},"965":{"position":[[442,9],[1456,10]]},"968":{"position":[[413,9],[1548,10]]},"970":{"position":[[1048,10],[2029,10]]},"973":{"position":[[965,10]]},"976":{"position":[[443,9],[1487,10]]},"979":{"position":[[968,10]]},"981":{"position":[[293,6]]},"984":{"position":[[321,6]]},"988":{"position":[[872,9],[2848,10]]},"990":{"position":[[1850,10]]},"993":{"position":[[877,9],[2875,10]]},"996":{"position":[[1871,10]]},"999":{"position":[[1146,10]]},"1002":{"position":[[518,8]]},"1006":{"position":[[363,9]]},"1023":{"position":[[661,9]]},"1024":{"position":[[608,9]]},"1034":{"position":[[186,6],[268,6]]},"1088":{"position":[[139,8]]},"1089":{"position":[[336,7],[439,9],[449,8],[826,7],[869,8],[882,7],[1046,7],[1101,7],[1394,6],[1474,9],[1484,8],[1566,7]]},"1090":{"position":[[9678,7],[9698,7],[14266,7],[17360,6],[17376,6]]},"1105":{"position":[[1126,6],[1327,6],[1838,6],[1985,6],[2360,6],[2562,6]]},"1110":{"position":[[986,6],[1187,6],[1698,6],[1845,6],[2220,6],[2422,6]]},"1115":{"position":[[1683,7],[1885,7],[2707,6],[2854,6],[3237,7],[3645,7]]}},"keywords":{}}],["workbench",{"_index":155,"title":{"9":{"position":[[5,9]]},"12":{"position":[[26,9]]},"15":{"position":[[14,9]]},"49":{"position":[[11,9]]},"69":{"position":[[11,9]]},"275":{"position":[[12,9]]},"301":{"position":[[8,9]]},"368":{"position":[[15,9]]},"413":{"position":[[11,9]]},"598":{"position":[[5,9]]},"604":{"position":[[26,9]]},"607":{"position":[[14,9]]},"641":{"position":[[11,9]]},"661":{"position":[[11,9]]},"846":{"position":[[12,9]]},"868":{"position":[[8,9]]},"891":{"position":[[15,9]]},"940":{"position":[[11,9]]}},"content":{"12":{"position":[[205,11]]},"13":{"position":[[40,9],[466,9]]},"14":{"position":[[377,9]]},"15":{"position":[[74,9]]},"16":{"position":[[357,9],[418,9],[586,9]]},"17":{"position":[[1277,9]]},"31":{"position":[[377,10],[601,10]]},"32":{"position":[[58,9]]},"33":{"position":[[17,9],[193,9]]},"35":{"position":[[514,9],[639,10],[1894,9],[2304,9],[2552,9],[2810,9],[2906,9],[2972,9]]},"49":{"position":[[21,9]]},"51":{"position":[[47,9],[132,9],[210,10]]},"52":{"position":[[50,9]]},"53":{"position":[[12,9],[86,9]]},"55":{"position":[[253,9],[303,9],[839,17],[1039,11],[1157,11],[1284,11],[1343,13],[1381,9]]},"69":{"position":[[21,9]]},"174":{"position":[[135,9]]},"231":{"position":[[20,9]]},"248":{"position":[[521,9]]},"259":{"position":[[83,9],[229,9],[732,9]]},"261":{"position":[[23,10]]},"263":{"position":[[251,9]]},"265":{"position":[[186,11]]},"267":{"position":[[26,11],[230,11]]},"271":{"position":[[267,9],[319,9]]},"301":{"position":[[231,9],[438,10]]},"319":{"position":[[109,10]]},"320":{"position":[[293,9],[334,9],[1199,9]]},"352":{"position":[[995,9]]},"368":{"position":[[0,9],[55,9],[155,9],[334,9]]},"413":{"position":[[235,9]]},"417":{"position":[[15,9]]},"493":{"position":[[32,10]]},"505":{"position":[[176,9]]},"604":{"position":[[205,11]]},"605":{"position":[[40,9],[466,9]]},"606":{"position":[[377,9]]},"607":{"position":[[74,9]]},"608":{"position":[[357,9],[418,9],[586,9]]},"609":{"position":[[1277,9]]},"623":{"position":[[377,10],[601,10]]},"624":{"position":[[58,9]]},"625":{"position":[[17,9],[193,9]]},"627":{"position":[[514,9],[639,10],[1894,9],[2304,9],[2552,9],[2810,9],[2906,9],[2972,9]]},"641":{"position":[[21,9]]},"643":{"position":[[47,9],[132,9],[210,10]]},"644":{"position":[[50,9]]},"645":{"position":[[12,9],[86,9]]},"647":{"position":[[253,9],[303,9],[839,17],[1039,11],[1157,11],[1284,11],[1343,13],[1381,9]]},"661":{"position":[[21,9]]},"744":{"position":[[135,9]]},"794":{"position":[[91,9]]},"818":{"position":[[521,9]]},"830":{"position":[[83,9],[229,9],[732,9]]},"832":{"position":[[23,10]]},"834":{"position":[[251,9]]},"836":{"position":[[186,11]]},"838":{"position":[[26,11],[230,11]]},"842":{"position":[[267,9],[319,9]]},"868":{"position":[[215,9],[422,10]]},"869":{"position":[[1359,9]]},"876":{"position":[[109,10]]},"877":{"position":[[293,9],[334,9],[1199,9]]},"891":{"position":[[0,9],[55,9],[155,9],[334,9]]},"944":{"position":[[15,9]]},"945":{"position":[[116,10]]},"1007":{"position":[[32,10]]},"1044":{"position":[[176,9]]}},"keywords":{}}],["workbench'",{"_index":536,"title":{},"content":{"31":{"position":[[103,11]]},"623":{"position":[[103,11]]}},"keywords":{}}],["workbench(angular",{"_index":179,"title":{"13":{"position":[[21,18]]},"605":{"position":[[21,18]]}},"content":{},"keywords":{}}],["workbench.server.addr",{"_index":2212,"title":{},"content":{"268":{"position":[[32,21]]},"269":{"position":[[190,22]]},"270":{"position":[[177,22]]},"839":{"position":[[32,21]]},"840":{"position":[[190,22]]},"841":{"position":[[177,22]]}},"keywords":{}}],["workbench.to",{"_index":3392,"title":{},"content":{"418":{"position":[[150,12]]}},"keywords":{}}],["workbench.web.war",{"_index":298,"title":{},"content":{"17":{"position":[[1249,17]]},"609":{"position":[[1249,17]]}},"keywords":{}}],["workbench/lib",{"_index":222,"title":{},"content":{"15":{"position":[[154,13]]},"607":{"position":[[154,13]]}},"keywords":{}}],["workbench/workbench",{"_index":2325,"title":{},"content":{"301":{"position":[[182,19]]},"868":{"position":[[166,19]]}},"keywords":{}}],["workbench_port",{"_index":2428,"title":{},"content":{"320":{"position":[[396,14]]},"877":{"position":[[396,14]]}},"keywords":{}}],["workbench_port=8080",{"_index":2432,"title":{},"content":{"320":{"position":[[663,19]]},"877":{"position":[[663,19]]}},"keywords":{}}],["workbench_server_host",{"_index":2234,"title":{},"content":{"271":{"position":[[235,21]]},"842":{"position":[[235,21]]}},"keywords":{}}],["workbench_server_port",{"_index":2235,"title":{},"content":{"271":{"position":[[287,21]]},"842":{"position":[[287,21]]}},"keywords":{}}],["workdir",{"_index":3739,"title":{},"content":{"553":{"position":[[1179,7],[1253,7],[1465,7]]},"1079":{"position":[[1179,7],[1253,7],[1465,7]]}},"keywords":{}}],["worker_docker_imag",{"_index":364,"title":{},"content":{"23":{"position":[[232,19]]},"541":{"position":[[232,19]]},"611":{"position":[[232,19]]},"1067":{"position":[[232,19]]}},"keywords":{}}],["worker_i",{"_index":4272,"title":{},"content":{"1034":{"position":[[120,10]]}},"keywords":{}}],["worker_launch_cmd",{"_index":389,"title":{},"content":{"23":{"position":[[783,17]]},"389":{"position":[[1157,17]]},"541":{"position":[[783,17]]},"579":{"position":[[525,17]]},"580":{"position":[[429,17]]},"584":{"position":[[492,17]]},"585":{"position":[[400,17]]},"589":{"position":[[397,17]]},"590":{"position":[[663,17]]},"611":{"position":[[783,17]]},"916":{"position":[[1157,17]]},"1067":{"position":[[783,17]]},"1105":{"position":[[525,17]]},"1106":{"position":[[429,17]]},"1110":{"position":[[492,17]]},"1111":{"position":[[400,17]]},"1115":{"position":[[397,17]]},"1116":{"position":[[663,17]]}},"keywords":{}}],["worker_num",{"_index":2848,"title":{},"content":{"389":{"position":[[1093,11],[1376,11]]},"916":{"position":[[1093,11],[1376,11]]}},"keywords":{}}],["worker_num=2",{"_index":2827,"title":{},"content":{"389":{"position":[[80,12]]},"916":{"position":[[80,12]]}},"keywords":{}}],["worker_resourc",{"_index":385,"title":{},"content":{"23":{"position":[[709,16]]},"389":{"position":[[1109,16]]},"541":{"position":[[709,16]]},"579":{"position":[[436,16]]},"580":{"position":[[389,16]]},"584":{"position":[[403,16]]},"585":{"position":[[360,16]]},"589":{"position":[[357,16]]},"590":{"position":[[623,16]]},"611":{"position":[[709,16]]},"916":{"position":[[1109,16]]},"1067":{"position":[[709,16]]},"1105":{"position":[[436,16]]},"1106":{"position":[[389,16]]},"1110":{"position":[[403,16]]},"1111":{"position":[[360,16]]},"1115":{"position":[[357,16]]},"1116":{"position":[[623,16]]}},"keywords":{}}],["worker_spec",{"_index":3275,"title":{},"content":{"407":{"position":[[908,11],[1270,13]]},"934":{"position":[[928,11],[1290,13]]}},"keywords":{}}],["workers=2",{"_index":3840,"title":{},"content":{"570":{"position":[[566,9]]},"1090":{"position":[[566,9]]}},"keywords":{}}],["workflow",{"_index":1228,"title":{"160":{"position":[[17,9]]},"161":{"position":[[122,9]]},"730":{"position":[[17,9]]},"731":{"position":[[122,9]]}},"content":{"127":{"position":[[101,9]]},"129":{"position":[[97,10]]},"144":{"position":[[710,9]]},"159":{"position":[[2933,8]]},"161":{"position":[[16,8],[266,9]]},"163":{"position":[[157,9]]},"168":{"position":[[106,9]]},"171":{"position":[[128,9]]},"230":{"position":[[132,10]]},"248":{"position":[[238,8]]},"695":{"position":[[101,9]]},"697":{"position":[[97,10]]},"714":{"position":[[710,9]]},"729":{"position":[[2933,8]]},"731":{"position":[[16,8],[266,9]]},"733":{"position":[[157,9]]},"738":{"position":[[106,9]]},"741":{"position":[[128,9]]},"793":{"position":[[132,10]]},"818":{"position":[[238,8]]}},"keywords":{}}],["workflow/step",{"_index":1640,"title":{"161":{"position":[[16,14]]},"731":{"position":[[16,14]]}},"content":{},"keywords":{}}],["working_dir",{"_index":4129,"title":{},"content":{"579":{"position":[[625,11],[748,11]]},"1105":{"position":[[625,11],[748,11]]}},"keywords":{}}],["workload",{"_index":1802,"title":{},"content":{"175":{"position":[[243,9]]},"179":{"position":[[1294,9]]},"197":{"position":[[94,9]]},"215":{"position":[[1508,10]]},"745":{"position":[[243,9]]},"749":{"position":[[1299,9]]},"780":{"position":[[94,9]]},"785":{"position":[[1508,10]]}},"keywords":{}}],["works.submarin",{"_index":2005,"title":{},"content":{"201":{"position":[[453,15],[555,15]]},"750":{"position":[[454,15],[556,15]]}},"keywords":{}}],["workspac",{"_index":574,"title":{"34":{"position":[[0,9]]},"54":{"position":[[0,9]]},"626":{"position":[[0,9]]},"646":{"position":[[0,9]]}},"content":{"34":{"position":[[0,9]]},"35":{"position":[[3734,9]]},"54":{"position":[[0,9]]},"55":{"position":[[1700,9],[1737,9]]},"143":{"position":[[236,10]]},"248":{"position":[[865,9],[891,9],[1093,10],[1140,9]]},"251":{"position":[[125,9]]},"252":{"position":[[363,9]]},"508":{"position":[[233,10]]},"626":{"position":[[0,9]]},"627":{"position":[[3734,9]]},"646":{"position":[[0,9]]},"647":{"position":[[1700,9],[1737,9]]},"818":{"position":[[865,9],[891,9],[1093,10],[1140,9]]},"821":{"position":[[125,9]]},"822":{"position":[[368,9]]},"1047":{"position":[[233,10]]}},"keywords":{}}],["workspace.op",{"_index":666,"title":{},"content":{"35":{"position":[[3686,14]]},"627":{"position":[[3686,14]]}},"keywords":{}}],["world",{"_index":1680,"title":{},"content":{"163":{"position":[[134,5]]},"733":{"position":[[134,5]]}},"keywords":{}}],["worri",{"_index":1749,"title":{},"content":{"171":{"position":[[917,8]]},"741":{"position":[[922,8]]}},"keywords":{}}],["wrap",{"_index":4096,"title":{},"content":{"572":{"position":[[1772,7],[1956,7]]},"1092":{"position":[[1772,7],[1956,7]]}},"keywords":{}}],["wrapp",{"_index":1600,"title":{"283":{"position":[[54,7]]},"854":{"position":[[54,7]]}},"content":{"159":{"position":[[1887,8]]},"283":{"position":[[6,7],[32,7],[115,7],[202,7]]},"729":{"position":[[1887,8]]},"854":{"position":[[6,7],[32,7],[115,7],[202,7]]}},"keywords":{}}],["writ",{"_index":341,"title":{"415":{"position":[[3,5]]},"490":{"position":[[0,5]]},"539":{"position":[[0,5]]},"942":{"position":[[3,5]]},"1004":{"position":[[0,5]]},"1065":{"position":[[0,5]]}},"content":{"21":{"position":[[52,5]]},"133":{"position":[[241,5],[1257,7]]},"153":{"position":[[103,5]]},"163":{"position":[[558,5]]},"269":{"position":[[113,5]]},"270":{"position":[[209,5],[229,5]]},"299":{"position":[[180,5]]},"387":{"position":[[9,5]]},"539":{"position":[[7,5],[61,5],[112,5]]},"621":{"position":[[52,5]]},"723":{"position":[[103,5]]},"733":{"position":[[558,5]]},"840":{"position":[[113,5]]},"841":{"position":[[209,5],[229,5]]},"866":{"position":[[180,5]]},"914":{"position":[[9,5]]},"1065":{"position":[[7,5],[61,5],[112,5]]}},"keywords":{}}],["writabl",{"_index":1355,"title":{},"content":{"138":{"position":[[56,8]]},"710":{"position":[[56,8]]}},"keywords":{}}],["writedockerfilekaldi",{"_index":2714,"title":{"373":{"position":[[0,20]]},"900":{"position":[[0,20]]}},"content":{},"keywords":{}}],["writt",{"_index":2546,"title":{},"content":{"335":{"position":[[84,7]]}},"keywords":{}}],["wrong",{"_index":2425,"title":{},"content":{"317":{"position":[[450,6]]}},"keywords":{}}],["wysiwyg",{"_index":1582,"title":{},"content":{"159":{"position":[[833,9]]},"729":{"position":[[833,9]]}},"keywords":{}}],["x",{"_index":519,"title":{},"content":{"28":{"position":[[1103,2]]},"71":{"position":[[47,1]]},"72":{"position":[[47,1]]},"73":{"position":[[54,1]]},"74":{"position":[[56,1]]},"75":{"position":[[54,1]]},"77":{"position":[[46,1]]},"78":{"position":[[46,1]]},"79":{"position":[[46,1]]},"80":{"position":[[51,1]]},"81":{"position":[[53,1]]},"82":{"position":[[51,1]]},"83":{"position":[[51,1]]},"84":{"position":[[56,1]]},"86":{"position":[[44,1]]},"87":{"position":[[44,1]]},"88":{"position":[[51,1]]},"89":{"position":[[36,1]]},"90":{"position":[[51,1]]},"91":{"position":[[63,1]]},"93":{"position":[[56,1]]},"94":{"position":[[66,1]]},"95":{"position":[[51,1]]},"96":{"position":[[68,1]]},"97":{"position":[[93,1]]},"98":{"position":[[95,1]]},"100":{"position":[[44,1]]},"101":{"position":[[44,1]]},"102":{"position":[[49,1]]},"103":{"position":[[52,1]]},"105":{"position":[[113,1]]},"106":{"position":[[43,1]]},"109":{"position":[[52,1]]},"110":{"position":[[52,1]]},"111":{"position":[[59,1]]},"112":{"position":[[61,1]]},"113":{"position":[[61,1]]},"114":{"position":[[78,1]]},"115":{"position":[[80,1]]},"285":{"position":[[47,1],[85,1]]},"286":{"position":[[40,1]]},"287":{"position":[[27,1],[32,1]]},"292":{"position":[[24,1]]},"293":{"position":[[40,1]]},"391":{"position":[[452,2]]},"423":{"position":[[12,1]]},"425":{"position":[[12,1]]},"428":{"position":[[12,1]]},"431":{"position":[[12,1]]},"434":{"position":[[12,1]]},"438":{"position":[[12,1]]},"441":{"position":[[12,1]]},"443":{"position":[[12,1]]},"446":{"position":[[12,1]]},"449":{"position":[[12,1]]},"452":{"position":[[12,1]]},"454":{"position":[[12,1]]},"457":{"position":[[12,1]]},"461":{"position":[[12,1]]},"463":{"position":[[12,1]]},"466":{"position":[[12,1]]},"469":{"position":[[12,1]]},"472":{"position":[[12,1]]},"479":{"position":[[12,1]]},"482":{"position":[[12,1]]},"485":{"position":[[12,1]]},"488":{"position":[[12,1]]},"546":{"position":[[1103,2]]},"553":{"position":[[765,2]]},"616":{"position":[[1103,2]]},"663":{"position":[[47,1]]},"664":{"position":[[47,1]]},"665":{"position":[[54,1]]},"666":{"position":[[56,1]]},"667":{"position":[[54,1]]},"669":{"position":[[44,1]]},"670":{"position":[[44,1]]},"671":{"position":[[51,1]]},"672":{"position":[[36,1]]},"673":{"position":[[51,1]]},"674":{"position":[[63,1]]},"676":{"position":[[46,1]]},"677":{"position":[[46,1]]},"678":{"position":[[46,1]]},"679":{"position":[[51,1]]},"680":{"position":[[53,1]]},"681":{"position":[[51,1]]},"682":{"position":[[51,1]]},"683":{"position":[[56,1]]},"702":{"position":[[44,1]]},"703":{"position":[[44,1]]},"704":{"position":[[49,1]]},"705":{"position":[[52,1]]},"856":{"position":[[47,1]]},"857":{"position":[[40,1]]},"918":{"position":[[452,2]]},"950":{"position":[[12,1]]},"952":{"position":[[12,1]]},"955":{"position":[[12,1]]},"958":{"position":[[12,1]]},"961":{"position":[[12,1]]},"965":{"position":[[12,1]]},"968":{"position":[[12,1]]},"970":{"position":[[12,1]]},"973":{"position":[[12,1]]},"976":{"position":[[12,1]]},"979":{"position":[[12,1]]},"981":{"position":[[12,1]]},"984":{"position":[[12,1]]},"988":{"position":[[12,1]]},"990":{"position":[[12,1]]},"993":{"position":[[12,1]]},"996":{"position":[[12,1]]},"999":{"position":[[12,1]]},"1011":{"position":[[12,1]]},"1014":{"position":[[12,1]]},"1017":{"position":[[12,1]]},"1020":{"position":[[12,1]]},"1072":{"position":[[1103,2]]},"1079":{"position":[[765,2]]}},"keywords":{}}],["x.y.z",{"_index":2680,"title":{},"content":{"371":{"position":[[205,5]]},"898":{"position":[[205,5]]}},"keywords":{}}],["x86_64.sh",{"_index":3726,"title":{},"content":{"553":{"position":[[744,9]]},"1079":{"position":[[744,9]]}},"keywords":{}}],["xarg",{"_index":493,"title":{},"content":{"28":{"position":[[621,5]]},"546":{"position":[[621,5]]},"616":{"position":[[621,5]]},"1072":{"position":[[621,5]]}},"keywords":{}}],["xauth",{"_index":2893,"title":{},"content":{"389":{"position":[[2418,5],[3310,5],[5117,5],[10161,6],[10241,5],[14028,5],[18260,5],[19134,5],[20941,5],[25879,6],[25959,5],[29577,5]]},"916":{"position":[[2418,5],[3310,5],[5117,5],[10161,6],[10241,5],[14028,5],[18260,5],[19134,5],[20941,5],[25879,6],[25959,5],[29577,5]]}},"keywords":{}}],["xauth_1%3a1.0.9",{"_index":3091,"title":{},"content":{"389":{"position":[[10188,19],[25906,19]]},"916":{"position":[[10188,19],[25906,19]]}},"keywords":{}}],["xd987",{"_index":4254,"title":{},"content":{"939":{"position":[[330,5]]}},"keywords":{}}],["xenial",{"_index":2949,"title":{},"content":{"389":{"position":[[4003,6],[4115,6],[4221,6],[4347,6],[4474,6],[4590,6],[4984,6],[5284,6],[6113,6],[6234,6],[6641,6],[6761,6],[19827,6],[19939,6],[20045,6],[20171,6],[20298,6],[20414,6],[20808,6],[21108,6],[21831,6],[21952,6],[22359,6],[22479,6]]},"916":{"position":[[4003,6],[4115,6],[4221,6],[4347,6],[4474,6],[4590,6],[4984,6],[5284,6],[6113,6],[6234,6],[6641,6],[6761,6],[19827,6],[19939,6],[20045,6],[20171,6],[20298,6],[20414,6],[20808,6],[21108,6],[21831,6],[21952,6],[22359,6],[22479,6]]}},"keywords":{}}],["xenial/main",{"_index":2932,"title":{},"content":{"389":{"position":[[3522,11],[3615,11],[3704,11],[3807,11],[3906,11],[4706,11],[4808,11],[4892,11],[5099,11],[5196,11],[5391,11],[6007,11],[6349,11],[6452,11],[6548,11],[6875,11],[19346,11],[19439,11],[19528,11],[19631,11],[19730,11],[20530,11],[20632,11],[20716,11],[20923,11],[21020,11],[21215,11],[21725,11],[22067,11],[22170,11],[22266,11],[22593,11]]},"916":{"position":[[3522,11],[3615,11],[3704,11],[3807,11],[3906,11],[4706,11],[4808,11],[4892,11],[5099,11],[5196,11],[5391,11],[6007,11],[6349,11],[6452,11],[6548,11],[6875,11],[19346,11],[19439,11],[19528,11],[19631,11],[19730,11],[20530,11],[20632,11],[20716,11],[20923,11],[21020,11],[21215,11],[21725,11],[22067,11],[22170,11],[22266,11],[22593,11]]}},"keywords":{}}],["xenial/univ",{"_index":2998,"title":{},"content":{"389":{"position":[[5497,15],[5600,15],[5706,15],[5798,15],[5901,15],[21321,15],[21424,15],[21530,15],[21622,15]]},"916":{"position":[[5497,15],[5600,15],[5706,15],[5798,15],[5901,15],[21321,15],[21424,15],[21530,15],[21622,15]]}},"keywords":{}}],["xf",{"_index":3223,"title":{},"content":{"398":{"position":[[374,2]]},"578":{"position":[[255,2]]},"583":{"position":[[252,2]]},"588":{"position":[[250,2]]},"925":{"position":[[374,2]]},"1104":{"position":[[255,2]]},"1109":{"position":[[252,2]]},"1114":{"position":[[250,2]]}},"keywords":{}}],["xfatbin",{"_index":3748,"title":{},"content":{"553":{"position":[[1371,7]]},"1079":{"position":[[1371,7]]}},"keywords":{}}],["xgboost",{"_index":1648,"title":{},"content":{"161":{"position":[[442,8]]},"200":{"position":[[1929,7]]},"731":{"position":[[442,8]]},"783":{"position":[[1929,7]]}},"keywords":{}}],["xm8nl",{"_index":3298,"title":{},"content":{"412":{"position":[[217,5]]}},"keywords":{}}],["xml",{"_index":2551,"title":{},"content":{"336":{"position":[[116,5]]}},"keywords":{}}],["xmlns:xsi=\"http://www.w3.org/2001/xmlschema",{"_index":2558,"title":{},"content":{"336":{"position":[[319,43]]}},"keywords":{}}],["xmlns=\"http://maven.apache.org/settings/1.1.0",{"_index":2557,"title":{},"content":{"336":{"position":[[272,46]]}},"keywords":{}}],["xperiment",{"_index":1964,"title":{},"content":{"196":{"position":[[331,10],[923,9]]},"779":{"position":[[331,10],[928,9]]}},"keywords":{}}],["xsi:schemalocation=\"http://maven.apache.org/settings/1.1.0",{"_index":2554,"title":{},"content":{"336":{"position":[[165,58]]}},"keywords":{}}],["xx",{"_index":2650,"title":{},"content":{"352":{"position":[[1379,2],[1419,2]]}},"keywords":{}}],["xxx",{"_index":2379,"title":{},"content":{"314":{"position":[[679,3],[924,3],[1555,3],[1794,3],[2735,4]]},"352":{"position":[[1144,3]]}},"keywords":{}}],["xxxx",{"_index":2625,"title":{},"content":{"350":{"position":[[537,4]]},"357":{"position":[[621,4]]}},"keywords":{}}],["xxxxxx",{"_index":1377,"title":{},"content":{"141":{"position":[[244,6],[740,6],[1195,6],[1488,6],[2111,7]]}},"keywords":{}}],["xxxxxxxxxx",{"_index":2359,"title":{},"content":{"314":{"position":[[223,10]]}},"keywords":{}}],["xyz",{"_index":1991,"title":{},"content":{"200":{"position":[[1507,3],[1515,3],[2198,3],[2206,3]]},"783":{"position":[[1507,3],[1515,3],[2198,3],[2206,3]]}},"keywords":{}}],["xzvf",{"_index":2595,"title":{},"content":{"341":{"position":[[154,4]]},"345":{"position":[[99,4]]}},"keywords":{}}],["y",{"_index":2389,"title":{},"content":{"314":{"position":[[1344,1],[1355,1]]},"331":{"position":[[1127,1],[1137,1]]},"375":{"position":[[507,1],[1209,1]]},"383":{"position":[[989,1]]},"549":{"position":[[588,1],[1102,1]]},"553":{"position":[[499,1],[878,1],[995,1],[1681,1]]},"559":{"position":[[480,1],[1318,1]]},"902":{"position":[[507,1],[1209,1]]},"910":{"position":[[989,1]]},"1075":{"position":[[588,1],[1102,1]]},"1079":{"position":[[499,1],[878,1],[995,1],[1681,1]]},"1094":{"position":[[480,1],[1318,1]]}},"keywords":{}}],["y/n",{"_index":2388,"title":{},"content":{"314":{"position":[[1338,5]]},"331":{"position":[[1121,5]]}},"keywords":{}}],["ya",{"_index":3736,"title":{},"content":{"553":{"position":[[1055,2]]},"1079":{"position":[[1055,2]]}},"keywords":{}}],["yaml",{"_index":342,"title":{},"content":{"21":{"position":[[60,4],[116,5]]},"154":{"position":[[436,4],[451,4]]},"189":{"position":[[1327,4]]},"199":{"position":[[783,4]]},"621":{"position":[[60,4],[116,5]]},"724":{"position":[[436,4],[451,4]]},"772":{"position":[[1327,4]]},"782":{"position":[[783,4]]}},"keywords":{}}],["yarn",{"_index":2,"title":{"0":{"position":[[21,4]]},"2":{"position":[[10,4]]},"374":{"position":[[44,4]]},"375":{"position":[[44,4]]},"549":{"position":[[44,4]]},"553":{"position":[[46,4]]},"559":{"position":[[49,4]]},"573":{"position":[[0,4]]},"591":{"position":[[4,4]]},"600":{"position":[[21,4]]},"602":{"position":[[10,4]]},"824":{"position":[[12,4]]},"901":{"position":[[44,4]]},"902":{"position":[[44,4]]},"1075":{"position":[[44,4]]},"1079":{"position":[[46,4]]},"1094":{"position":[[49,4]]},"1099":{"position":[[0,4]]},"1117":{"position":[[4,4]]}},"content":{"1":{"position":[[83,4],[194,4],[224,4],[366,4],[398,4]]},"2":{"position":[[0,4],[66,5]]},"25":{"position":[[275,4],[376,4],[1751,4],[1856,5],[2015,5]]},"162":{"position":[[565,5],[645,4],[887,4]]},"167":{"position":[[119,5],[222,4],[268,4],[383,5]]},"168":{"position":[[559,5]]},"306":{"position":[[11,4],[76,4]]},"307":{"position":[[81,4]]},"308":{"position":[[147,4]]},"361":{"position":[[70,4]]},"369":{"position":[[406,4],[588,4]]},"375":{"position":[[27,4]]},"386":{"position":[[775,4],[872,4]]},"389":{"position":[[295,4]]},"543":{"position":[[275,4],[376,4],[1751,4],[1856,5],[2015,5]]},"549":{"position":[[27,4]]},"553":{"position":[[29,4]]},"559":{"position":[[32,4]]},"574":{"position":[[35,4]]},"591":{"position":[[40,4],[117,4],[282,4],[413,5]]},"601":{"position":[[83,4],[194,4],[224,4],[366,4],[398,4]]},"602":{"position":[[0,4],[66,5]]},"613":{"position":[[275,4],[376,4],[1751,4],[1856,5],[2015,5]]},"732":{"position":[[565,5],[645,4],[887,4]]},"737":{"position":[[119,5],[222,4],[268,4],[383,5]]},"738":{"position":[[559,5]]},"750":{"position":[[956,4]]},"777":{"position":[[245,5],[842,4],[860,4],[899,4],[954,4],[1074,4]]},"794":{"position":[[320,4],[414,4]]},"810":{"position":[[69,5],[402,4]]},"821":{"position":[[144,4]]},"872":{"position":[[11,4],[76,4]]},"873":{"position":[[81,4]]},"874":{"position":[[147,4]]},"883":{"position":[[70,4]]},"892":{"position":[[406,4],[588,4]]},"902":{"position":[[27,4]]},"913":{"position":[[775,4],[872,4]]},"916":{"position":[[295,4]]},"1069":{"position":[[275,4],[376,4],[1751,4],[1856,5],[2015,5]]},"1075":{"position":[[27,4]]},"1079":{"position":[[29,4]]},"1094":{"position":[[32,4]]},"1100":{"position":[[35,4]]},"1117":{"position":[[40,4],[117,4],[282,4],[413,5]]}},"keywords":{}}],["yarn/k8s.n",{"_index":4216,"title":{},"content":{"780":{"position":[[115,13]]}},"keywords":{}}],["yarn/k8s/contain",{"_index":4211,"title":{},"content":{"741":{"position":[[1114,18]]}},"keywords":{}}],["yarn/k8s/dock",{"_index":4213,"title":{},"content":{"749":{"position":[[785,15]]}},"keywords":{}}],["yarn_container_runtime_docker_container_network=calico",{"_index":362,"title":{},"content":{"23":{"position":[[165,54]]},"389":{"position":[[537,54]]},"541":{"position":[[165,54]]},"611":{"position":[[165,54]]},"916":{"position":[[537,54]]},"1067":{"position":[[165,54]]}},"keywords":{}}],["yarn_container_runtime_docker_mounts=${thchs30_path}/sge/resolv.conf:/etc/resolv.conf",{"_index":2839,"title":{},"content":{"389":{"position":[[664,87]]},"916":{"position":[[664,87]]}},"keywords":{}}],["yarnservic",{"_index":4176,"title":{},"content":{"580":{"position":[[1661,11]]},"777":{"position":[[918,11],[1039,11]]},"810":{"position":[[75,11]]},"1106":{"position":[[1661,11]]}},"keywords":{}}],["ye",{"_index":1080,"title":{},"content":{"107":{"position":[[6269,6]]},"161":{"position":[[538,4]]},"224":{"position":[[447,3],[521,3]]},"225":{"position":[[200,3],[395,3],[476,3]]},"226":{"position":[[434,3],[510,3],[553,3],[610,3]]},"731":{"position":[[538,4]]},"809":{"position":[[447,3],[521,3]]},"810":{"position":[[221,3],[448,3],[529,3]]},"811":{"position":[[434,3],[510,3],[553,3],[610,3]]}},"keywords":{}}],["year",{"_index":1643,"title":{},"content":{"161":{"position":[[214,6]]},"331":{"position":[[1032,5]]},"731":{"position":[[214,6]]}},"keywords":{}}],["you'll",{"_index":147,"title":{},"content":{"8":{"position":[[128,6]]},"413":{"position":[[61,6]]},"568":{"position":[[298,6]]},"571":{"position":[[281,6]]},"597":{"position":[[128,6]]},"869":{"position":[[1173,6]]},"1088":{"position":[[298,6]]},"1091":{"position":[[281,6]]}},"keywords":{}}],["you'r",{"_index":3835,"title":{},"content":{"570":{"position":[[59,6]]},"1090":{"position":[[59,6]]}},"keywords":{}}],["you'v",{"_index":3233,"title":{},"content":{"402":{"position":[[9,6]]},"929":{"position":[[9,6]]}},"keywords":{}}],["your_docker_imag",{"_index":4202,"title":{},"content":{"590":{"position":[[369,19]]},"1116":{"position":[[369,19]]}},"keywords":{}}],["your_nam",{"_index":2540,"title":{},"content":{"334":{"position":[[936,10],[1631,10]]}},"keywords":{}}],["your_name@apache.org",{"_index":2537,"title":{},"content":{"334":{"position":[[623,20],[668,21],[1310,20],[1355,21]]}},"keywords":{}}],["youraccount@apache.org",{"_index":2381,"title":{},"content":{"314":{"position":[[690,24],[935,24],[1566,24],[1805,24],[2747,25]]}},"keywords":{}}],["yourself",{"_index":3617,"title":{},"content":{"509":{"position":[[547,9]]},"1048":{"position":[[547,9]]}},"keywords":{}}],["you’r",{"_index":3253,"title":{},"content":{"406":{"position":[[996,6]]},"933":{"position":[[647,6]]}},"keywords":{}}],["yq",{"_index":3766,"title":{},"content":{"559":{"position":[[791,2]]},"1094":{"position":[[791,2]]}},"keywords":{}}],["yum",{"_index":2796,"title":{},"content":{"383":{"position":[[1014,3]]},"910":{"position":[[1014,3]]}},"keywords":{}}],["yyyyi",{"_index":1376,"title":{},"content":{"141":{"position":[[223,5],[719,5],[1174,5],[2119,5]]}},"keywords":{}}],["yyyzzz",{"_index":2380,"title":{},"content":{"314":{"position":[[683,6],[928,6],[1559,6],[1798,6],[2740,6]]}},"keywords":{}}],["z",{"_index":496,"title":{},"content":{"28":{"position":[[652,1]]},"546":{"position":[[652,1]]},"616":{"position":[[652,1]]},"1072":{"position":[[652,1]]}},"keywords":{}}],["zeppelin",{"_index":660,"title":{},"content":{"35":{"position":[[3481,8]]},"55":{"position":[[1590,8]]},"627":{"position":[[3481,8]]},"647":{"position":[[1590,8]]}},"keywords":{}}],["zeppelin/jupyt",{"_index":1587,"title":{},"content":{"159":{"position":[[1202,17]]},"729":{"position":[[1202,17]]}},"keywords":{}}],["zero",{"_index":2583,"title":{},"content":{"339":{"position":[[333,6]]},"1037":{"position":[[141,4]]},"1038":{"position":[[227,5]]}},"keywords":{}}],["zip",{"_index":3697,"title":{},"content":{"549":{"position":[[608,3]]},"578":{"position":[[43,3],[464,3]]},"583":{"position":[[43,3],[371,3]]},"588":{"position":[[43,3],[367,3]]},"1075":{"position":[[608,3]]},"1104":{"position":[[43,3],[464,3]]},"1109":{"position":[[43,3],[371,3]]},"1114":{"position":[[43,3],[367,3]]}},"keywords":{}}],["zlib1g",{"_index":2735,"title":{},"content":{"375":{"position":[[688,6]]},"902":{"position":[[688,6]]}},"keywords":{}}],["zmlmr",{"_index":3316,"title":{},"content":{"412":{"position":[[639,5]]}},"keywords":{}}],["zookeep",{"_index":2199,"title":{},"content":{"264":{"position":[[132,10]]},"274":{"position":[[96,9]]},"835":{"position":[[132,10]]},"845":{"position":[[96,9]]}},"keywords":{}}],["zoom",{"_index":1409,"title":{},"content":{"143":{"position":[[305,5]]},"713":{"position":[[190,5]]}},"keywords":{}}],["zxf",{"_index":2757,"title":{},"content":{"375":{"position":[[1443,3]]},"549":{"position":[[1470,3]]},"553":{"position":[[1868,3]]},"559":{"position":[[1505,3]]},"902":{"position":[[1443,3]]},"1075":{"position":[[1470,3]]},"1079":{"position":[[1868,3]]},"1094":{"position":[[1505,3]]}},"keywords":{}}]],"pipeline":["stemmer","stemmer-de"]}
\ No newline at end of file
+{"version":"2.3.9","fields":["title","content","keywords"],"fieldVectors":[["title/0",[0,148.613,1,506.125,2,570.807]],["content/0",[]],["keywords/0",[]],["title/1",[3,1131.882]],["content/1",[4,18.941,5,11.353,6,15.918,7,16.446,8,17.081]],["keywords/1",[]],["title/2",[2,570.807,9,594.043,10,430.893]],["content/2",[9,8.516,11,2.794,12,10.487,13,8.458,14,11.009,15,14.554,16,12.255,17,12.039,18,13.335,19,14.554,20,14.086,21,16.762,22,6.837,23,15.116,24,2.609]],["keywords/2",[]],["title/3",[0,148.613,9,594.043,25,472.486]],["content/3",[0,2.577,2,8.877,5,10.899,11,3.38,24,2.831,25,5.611,26,7.368,27,9.371,28,10.345,29,7.865,30,10.789,31,3.984,32,11.669,33,13.886,34,12.522,35,13.886,36,13.886,37,11.669,38,6.652,39,5.075,40,6.074,41,13.886,42,5.435,43,5.949,44,11.669,45,7.666]],["keywords/3",[]],["title/4",[25,550.009,46,842.06]],["content/4",[0,2.081,2,3.745,11,2.953,24,2.549,25,6.617,31,3.408,38,3.675,40,3.355,47,4.855,48,3.608,49,6.257,50,3.675,51,3.721,52,5.831,53,4.913,54,9.622,55,4.423,56,5.715,57,5.715,58,6.917,59,2.394,60,4.913,61,7.67,62,7.67,63,16.897,64,4.931,65,10.613,66,18.737,67,4.166,68,6.353,69,7.67,70,7.67,71,4.552,72,7.67,73,7.67,74,2.282,75,7.67,76,7.67,77,5.105,78,7.67,79,7.67,80,3.505,81,3.338,82,7.67,83,7.67,84,5.715,85,4.04,86,7.67,87,4.383,88,5.038,89,7.67,90,7.67,91,3.87,92,4.397,93,5.332,94,6.789,95,6.917,96,6.263,97,7.239,98,7.67,99,7.67,100,11.881,101,11.881,102,7.67,103,6.263,104,6.263,105,5.608,106,7.239,107,6.167,108,7.67,109,7.67,110,7.67]],["keywords/4",[]],["title/5",[0,148.613,10,430.893,111,602.447]],["content/5",[11,3.83,12,12.286,24,2.026,54,7.649,55,7.507,77,8.664,112,5.724,113,12.286,114,11.302,115,12.734,116,13.871,117,11.302,118,11.302,119,4.588,120,13.447,121,11.302,122,10.939,123,9.698,124,11.739,125,12.285,126,9.896,127,10.356,128,10.628]],["keywords/5",[]],["title/6",[129,674.28,130,528.316,131,871.116]],["content/6",[39,6.198,118,14.723,123,12.633,129,9.779,132,15.292,133,16.957,134,15.292,135,14.723,136,13.49,137,7.537,138,13.49,139,13.49,140,13.057]],["keywords/6",[]],["title/7",[0,172.997,141,1111.244]],["content/7",[0,2.408,5,11.353,11,3.157,24,2.949,107,8.034]],["keywords/7",[]],["title/8",[142,278.011,143,615.771,144,483.846]],["content/8",[]],["keywords/8",[]],["title/9",[142,323.625,145,427.765]],["content/9",[0,1.666,11,4.074,24,2.041,31,5.022,39,4.792,40,3.818,146,7.01,147,6.943,148,3.379,149,3.386,150,3.203,151,3.113,152,4.631,153,4.106,154,3.139,155,4.631,156,4.529,157,5.561,158,8.111,159,9.26,160,7.01,161,8.726,162,7.426,163,7.631,164,8.977,165,8.977,166,9.967,167,11.987,168,9.967,169,9.967,170,7.631,171,5.617,172,10.186,173,10.43,174,6.943,175,3.298,176,4.703,177,2.496,178,4.74,179,3.203,180,6.635,181,6.635,182,4.987]],["keywords/9",[]],["title/10",[112,598.514,142,323.625]],["content/10",[0,1.737,11,4.126,24,2.127,31,5.162,39,4.994,40,4.035,137,4.1,147,7.339,148,3.522,149,3.579,150,3.386,151,3.291,157,5.795,158,8.453,159,6.516,160,7.306,161,6.14,162,7.739,163,7.953,164,9.356,165,6.316,166,7.013,167,9.356,168,7.013,169,7.013,170,7.953,171,3.952,172,7.167,173,7.339,174,7.339,175,3.486,176,4.971,177,2.638,178,5.011,179,3.386,180,10.388,181,7.013,182,7.808,183,9.225,184,9.225,185,9.225]],["keywords/10",[]],["title/11",[142,387.146]],["content/11",[0,2.021,11,4.014,24,2.475,31,4.562,39,4.163,40,4.982,148,4.099,149,4.418,150,4.18,151,4.063,157,6.744,158,7.046,159,8.044,160,6.09,161,7.58,162,6.451,163,6.629,164,7.798,165,7.798,166,8.658,167,10.888,168,8.658,169,8.658,170,6.629,171,4.879,172,8.848,173,9.06,175,4.304,176,6.137,177,3.257,178,6.186,179,4.18,180,8.658,181,8.658,182,6.508,186,8.326,187,8.326]],["keywords/11",[]],["title/12",[142,323.625,188,656.116]],["content/12",[0,1.98,11,4.088,24,2.014,31,5.616,39,4.728,40,3.75,119,2.258,144,3.548,148,3.334,149,3.326,150,3.146,151,3.059,152,4.549,153,4.033,154,3.083,155,4.549,156,4.449,157,6.607,158,9.638,159,9.137,160,8.329,162,8.823,163,9.067,164,8.857,165,8.857,170,9.067,175,3.24,176,4.62,177,2.452,178,4.657,179,3.146,180,6.518,181,6.518,182,7.392,186,6.268,187,6.268,188,6.236,189,10.871,190,4.99,191,4.856,192,3.497,193,4.449,194,3.896]],["keywords/12",[]],["title/13",[107,577.275,142,323.625]],["content/13",[0,2.09,11,4.064,24,2.559,31,4.716,39,4.367,40,5.227,107,5.068,148,4.237,149,4.635,150,4.385,151,4.263,157,6.973,158,7.393,159,8.44,160,6.389,162,6.768,163,6.955,164,8.182,165,8.182,170,6.955,175,4.516,176,6.439,177,3.417,178,6.49,179,4.385,180,9.084,181,9.084,182,6.829,186,8.736,187,8.736,189,10.042]],["keywords/13",[]],["title/14",[143,539.701,144,424.074,195,226.667,196,410.291]],["content/14",[]],["keywords/14",[]],["title/15",[145,367.472,195,258.616,196,468.121]],["content/15",[11,4.014,24,1.226,31,5.434,38,3.774,39,2.879,42,4.747,64,1.988,80,6.757,92,4.488,142,1.873,146,6.485,148,2.031,149,3.056,150,2.891,151,2.81,152,4.18,153,3.706,154,2.833,155,4.18,156,4.088,191,8.375,195,1.742,196,4.856,197,6.267,198,6.835,199,7.864,200,8.88,201,2.856,202,8.566,203,7.73,204,6.121,205,6.401,206,4.924,207,7.676,208,6.121,209,9.22,210,5.76,211,4.874,212,3.244,213,4.149,214,2.891,215,4.03,216,4.502,217,6.267,218,6.267,219,3.871,220,6.696,221,3.798,222,3.308,223,2.94,224,3.774,225,6.485,226,7.059,227,3.07,228,2.547,229,4.586,230,4.088,231,4.118,232,6.267]],["keywords/15",[]],["title/16",[112,514.154,195,258.616,196,468.121]],["content/16",[24,2.874,148,4.759,149,7.161,150,6.775,151,6.586,197,14.687,232,14.687]],["keywords/16",[]],["title/17",[195,301.048,196,544.927]],["content/17",[24,2.769,80,8.127,148,4.584,149,6.899,150,6.527,151,6.345,196,7.121,198,8.22,233,14.946,234,13.521]],["keywords/17",[]],["title/18",[188,656.116,196,544.927]],["content/18",[11,3.977,24,1.14,31,5.511,38,3.508,39,2.677,42,4.485,64,1.848,80,7.298,92,4.241,119,1.929,142,1.741,144,3.031,150,2.688,151,2.613,152,3.886,153,3.445,154,2.634,155,3.886,156,3.801,188,5.524,191,7.997,192,2.987,193,3.801,194,3.328,195,2.535,196,6.394,198,7.382,199,9.155,200,9.269,201,4.155,202,8.094,203,7.38,204,5.69,205,6.111,206,4.653,207,7.253,208,5.69,209,8.712,210,5.354,211,7.09,212,3.016,213,3.857,214,2.688,215,3.747,216,4.185,217,5.826,218,5.826,219,3.598,220,6.327,221,3.53,222,3.075,223,2.733,224,3.508,225,6.128,226,6.671,227,2.853,228,2.368,229,4.263,230,3.801,231,3.828,233,6.154,234,5.567,235,2.828]],["keywords/18",[]],["title/19",[107,577.275,196,544.927]],["content/19",[24,2.735,80,8.029,107,7.452,148,4.529,149,6.816,150,6.449,151,6.268,196,7.035,198,8.121,233,14.765,234,13.358]],["keywords/19",[]],["title/20",[119,269.88,145,322.076,195,226.667,196,410.291]],["content/20",[11,3.85,24,2.225,31,4.101,80,8.468,146,9.908,148,3.684,149,5.545,150,5.246,151,5.099,152,7.585,153,6.725,154,5.14,155,7.585,156,7.418,196,5.723,198,8.565,236,12.891,237,11.106,238,12.891,239,12.891,240,12.891,241,12.891]],["keywords/20",[]],["title/21",[143,615.771,144,483.846,195,258.616]],["content/21",[]],["keywords/21",[]],["title/22",[119,240.206,142,216.874,145,286.663,195,201.744,242,822.532]],["content/22",[11,4.043,24,1.666,31,3.828,38,5.127,39,3.912,40,4.681,42,5.957,80,6.097,92,5.632,142,2.545,146,5.722,148,2.759,149,2.605,150,2.465,151,2.396,152,3.563,153,3.159,154,2.415,155,3.563,156,3.485,175,2.538,176,3.619,177,1.92,178,3.648,179,2.465,198,7.683,212,4.407,213,5.636,214,3.928,215,5.475,216,6.116,219,5.258,220,5.908,221,5.159,222,4.494,223,4.979,224,5.127,225,8.138,226,6.23,227,4.17,228,3.461,229,6.23,230,5.554,231,5.595,243,4.91,244,7.625,245,6.481,246,6.621,247,6.481,248,7.123,249,4.91,250,4.598,251,5.644,252,4.743,253,5.105,254,5.105,255,5.105,256,5.105,257,5.105,258,4.355,259,5.105,260,4.47,261,5.105,262,5.105]],["keywords/22",[]],["title/23",[119,216.411,142,195.391,145,258.266,195,181.759,263,546.964,264,741.051]],["content/23",[0,1.862,11,4.013,24,1.579,31,4.611,38,4.859,39,3.707,40,4.437,42,5.732,80,5.83,92,5.42,93,4.367,94,3.59,142,3.822,143,3.308,144,2.599,146,5.424,148,3.288,149,2.437,150,2.305,151,2.241,152,3.333,153,2.955,154,2.259,155,3.333,156,3.26,157,5.411,175,2.374,176,3.385,177,1.796,178,3.412,179,2.305,198,5.897,212,4.177,213,5.342,214,3.723,215,5.189,216,5.797,219,4.984,220,5.6,221,4.89,222,4.259,223,4.761,224,4.859,225,7.831,226,5.904,227,3.952,243,4.592,244,7.291,245,6.142,246,6.275,247,6.142,248,6.751,249,4.592,250,4.301,251,5.278,252,4.436,253,4.775,254,4.775,255,4.775,256,4.775,257,4.775,258,4.073,259,4.775,260,4.181,261,4.775,262,4.775,265,3.527,266,4.68,267,2.807,268,5.382,269,4.511,270,6.281,271,6.281]],["keywords/23",[]],["title/24",[112,598.514,195,301.048]],["content/24",[11,4.04,24,1.601,31,4.244,38,4.928,39,3.76,40,5.647,42,5.79,67,5.587,80,4.7,92,5.475,142,2.446,148,2.651,149,2.479,150,2.346,151,2.28,175,2.416,176,3.444,177,1.828,178,3.472,179,2.346,198,8.008,212,4.236,213,5.417,214,3.775,215,3.27,216,3.653,219,5.054,220,5.679,221,4.959,222,2.684,223,5.521,224,3.062,225,7.911,226,7.514,227,4.008,228,3.326,229,3.72,230,3.317,231,5.377,243,4.673,244,7.377,245,3.87,246,3.954,247,6.229,248,4.254,249,4.673,250,7.043,252,7.265,253,4.859,254,7.82,255,7.82,256,7.82,257,7.82,258,6.67,259,7.82,260,6.847,261,7.82,262,4.859,272,5.764,273,6.391,274,6.391,275,6.391,276,6.391,277,5.764,278,5.371,279,6.391,280,3.87,281,4.314]],["keywords/24",[]],["title/25",[195,360.137]],["content/25",[11,3.976,24,2.117,31,3.902,38,4.392,39,3.351,40,5.949,42,5.323,80,6.215,92,5.033,142,2.18,148,3.505,149,3.556,150,3.364,151,3.27,175,3.465,176,4.94,177,2.621,178,4.979,179,3.364,198,7.494,212,3.775,213,4.828,214,3.364,215,4.69,216,5.239,219,4.504,220,5.061,221,4.419,222,3.849,223,5.075,224,4.392,225,7.272,226,5.336,227,3.572,228,2.964,229,5.336,230,4.757,231,4.792,244,7.772,245,5.551,246,5.671,247,5.551,248,6.102,250,6.277,252,6.475,253,6.969,254,6.969,255,6.969,256,6.969,257,6.969,258,5.944,259,6.969,260,6.102,261,6.969,262,6.969,272,8.267,282,6.702,283,7.703]],["keywords/25",[]],["title/26",[188,656.116,195,301.048]],["content/26",[11,4.063,24,1.791,31,3.301,38,5.512,39,4.205,40,3.22,42,4.503,80,5.257,92,5.926,137,5.114,142,2.736,148,2.966,149,2.855,150,2.701,151,2.626,152,3.906,153,3.463,154,2.647,155,3.906,156,3.82,175,2.782,176,3.966,177,2.105,178,3.998,179,2.701,188,5.546,190,4.284,191,4.169,198,7.402,212,4.738,213,6.059,214,4.223,215,5.886,216,6.575,219,5.653,220,6.352,221,5.546,222,4.831,223,4.293,224,5.512,225,8.563,226,6.697,227,4.483,228,3.72,229,6.697,230,5.971,231,6.015,244,6.575,245,6.967,246,7.118,247,6.967,248,7.658,282,5.381,283,6.185]],["keywords/26",[]],["title/27",[107,577.275,195,301.048]],["content/27",[11,3.973,24,2.107,31,3.884,38,4.364,39,3.33,40,5.921,42,3.565,80,6.186,92,5.009,107,3.864,137,4.049,142,2.166,148,3.489,149,3.534,150,3.343,151,3.25,175,3.443,176,4.909,177,2.605,178,4.948,179,3.343,198,7.466,212,3.752,213,4.798,214,3.343,215,4.661,216,5.206,219,4.476,220,5.029,221,4.391,222,3.825,223,5.051,224,4.364,225,7.238,226,5.302,227,3.549,228,2.946,229,5.302,230,4.728,231,4.762,244,7.736,245,5.516,246,5.636,247,5.516,248,6.063,250,6.237,251,7.655,252,6.434,253,6.925,254,6.925,255,6.925,256,6.925,257,6.925,258,5.907,259,6.925,260,6.063,261,6.925,262,6.925,282,6.66,283,7.655]],["keywords/27",[]],["title/28",[112,514.154,195,258.616,284,560.149]],["content/28",[11,4.059,24,2.311,40,4.522,65,9.841,67,8.065,148,3.827,149,4.01,150,3.794,151,3.688,175,3.907,176,5.571,177,2.956,178,5.615,179,3.794,190,6.017,198,8.03,227,5.785,250,10.166,278,12.477,280,8.991,281,6.977,285,9.323,286,9.323,287,13.981,288,6.327,289,10.338,290,11.812,291,15.668,292,13.822,293,9.323,294,4.546]],["keywords/28",[]],["title/29",[195,301.048,284,652.056]],["content/29",[11,3.161,24,1.306,40,2.183,42,9.092,65,4.752,67,6.912,119,2.21,148,2.163,149,1.936,150,1.831,151,1.78,175,1.886,176,2.689,177,1.427,178,2.71,179,1.831,190,2.905,198,3.878,227,1.944,228,4.115,250,3.417,278,10.695,280,5.081,281,3.368,287,5.833,288,3.054,290,3.97,291,7.566,292,6.675,293,4.5,294,2.194,295,4.5,296,4.99,297,4.386,298,8.39,299,12.726,300,12.726,301,15.375,302,10.39,303,12.726,304,12.726,305,8.39,306,18.481,307,8.39,308,8.39,309,8.39,310,8.39,311,8.39,312,8.39,313,8.39,314,8.39,315,8.39,316,8.39,317,8.39,318,8.39,319,8.39,320,8.39,321,8.39,322,8.39,323,8.39,324,8.39,325,8.39,326,8.39,327,8.39,328,8.39,329,8.39,330,8.39,331,8.39,332,8.39,333,8.39,334,8.39,335,8.39,336,8.39,337,8.39,338,8.39]],["keywords/29",[]],["title/30",[74,347.86,143,615.771,144,483.846]],["content/30",[]],["keywords/30",[]],["title/31",[22,335.209,112,361.356,339,445.105,340,497.625,341,487.635]],["content/31",[11,4.146,22,5.701,24,1.277,31,3.588,37,14.253,40,2.125,42,1.901,45,6.905,112,2.136,137,2.159,148,2.114,149,1.884,150,1.783,151,1.733,175,1.836,176,2.617,177,1.389,178,2.638,179,1.783,190,2.827,191,2.751,195,2.767,200,6.688,222,5.252,250,8.564,287,11.79,288,2.972,294,2.136,339,1.726,341,7.422,342,4.082,343,5.272,344,4.082,345,5.272,346,2.232,347,11.279,348,18.607,349,14.309,350,11.805,351,8.011,352,16.96,353,12.508,354,11.279,355,12.508,356,6.637,357,12.508,358,4.857,359,7.574,360,12.508,361,5.272,362,5.272,363,2.617,364,8.901,365,5.272,366,3.111]],["keywords/31",[]],["title/32",[22,555.207,339,483.63]],["content/32",[11,4.101,22,5.708,24,2.178,31,2.733,37,11.758,40,4.167,42,3.729,45,5.259,148,3.606,149,3.696,150,3.496,151,3.399,175,3.6,176,5.134,177,2.724,178,5.174,179,3.496,190,5.545,191,5.396,195,2.107,200,5.094,222,4,250,6.523,287,9.727,288,5.83,294,4.189,339,3.385,341,5.653,342,8.006,344,8.006,346,4.378,347,8.591,348,16.48,349,13.205,350,8.991,351,6.102,352,13.992,353,9.527,354,8.591,355,9.527,356,5.055,357,9.527,358,9.527,359,5.769,360,9.527,367,9.527,368,9.527]],["keywords/32",[]],["title/33",[22,476.951,188,563.637,339,415.463]],["content/33",[11,3.963,22,8.116,24,2.489,31,3.293,40,5.021,42,4.492,148,4.121,149,4.453,150,4.213,151,4.095,152,6.091,153,5.4,154,4.128,155,6.091,156,5.957,175,4.338,176,6.185,177,3.282,178,6.235,179,4.213,188,7.707,190,6.681,191,6.501,193,5.957,200,6.137,287,7.979,288,7.025,294,5.047,339,4.079,341,6.811,342,9.646,344,9.646,346,5.275,350,10.833,351,7.352,369,11.478,370,9.372,371,12.458]],["keywords/33",[]],["title/34",[22,476.951,107,495.909,339,415.463]],["content/34",[11,3.963,22,5.456,24,2.762,40,5.851,107,8.443,148,4.573,149,5.189,150,4.909,151,4.772,175,5.055,176,7.208,177,3.825,178,7.265,179,4.909,190,7.786,191,7.576,287,9.298,288,8.186,294,5.882,339,4.753,342,11.24,344,11.24,346,6.147,367,13.376,368,13.376]],["keywords/34",[]],["title/35",[22,418.03,145,322.076,339,364.138,359,620.574]],["content/35",[11,3.956,22,5.407,24,2.745,40,5.797,145,4.166,146,9.429,148,4.545,149,5.141,150,4.864,151,4.728,175,5.009,176,7.142,177,3.79,178,7.199,179,4.864,190,7.715,191,7.507,287,9.214,288,8.111,294,5.828,339,4.71,342,11.138,344,11.138,346,6.091,359,8.026,372,13.254,373,13.254]],["keywords/35",[]],["title/36",[22,418.03,107,434.646,339,364.138,359,620.574]],["content/36",[11,3.17,24,2.96,107,8.065,148,4.901,149,5.772,150,5.461,151,5.308,175,5.623,294,6.543,339,5.287,341,8.829,342,12.503,344,12.503,346,6.838,359,9.01,372,14.878,373,14.878,374,7.172,375,7.172,376,7.172,377,13.417,378,13.417]],["keywords/36",[]],["title/37",[59,364.91,143,615.771,144,483.846]],["content/37",[]],["keywords/37",[]],["title/38",[59,364.91,145,367.472,346,537.333]],["content/38",[11,4.03,24,1.896,31,4.257,38,3.795,39,4.451,43,5.218,59,5.198,92,2.931,142,2.896,145,2.489,146,6.512,148,3.139,149,3.073,150,2.907,151,2.826,152,4.203,153,3.726,154,2.848,155,4.203,156,4.111,157,5.165,160,4.235,161,5.272,162,4.486,175,2.994,179,2.907,212,5.015,219,5.984,223,5.537,294,3.483,346,5.597,374,3.818,375,3.818,376,3.818,379,6.301,380,11.404,381,6.656,382,7.143,383,6.656,384,6.656,385,7.143,386,6.467,387,6.656,388,8.602,389,6.656,390,6.301,391,6.301,392,6.301,393,6.301,394,5.594,395,7.143,396,6.301,397,6.656,398,6.154,399,6.656,400,5.594,401,4.373,402,5.423,403,5.423,404,5.423,405,6.154,406,3.64,407,4.052,408,4.052,409,6.656,410,6.656]],["keywords/38",[]],["title/39",[59,284.664,112,401.088,346,419.17,411,693.415,412,320.29]],["content/39",[11,3.966,24,2.21,31,2.788,39,3.552,40,4.25,59,5.235,64,3.582,142,2.31,148,3.659,149,3.77,150,3.566,151,3.467,157,4.121,160,5.196,161,6.468,162,5.504,175,3.673,179,3.566,212,4.002,219,4.774,223,5.298,294,4.273,346,6.524,374,4.684,375,4.684,376,4.684,379,7.73,380,11.485,387,8.166,388,10.027,389,8.166,390,7.73,391,7.73,392,7.73,393,7.73,394,6.863,397,8.166,398,7.55,399,8.166,400,6.863,401,5.365,402,6.654,403,6.654,404,6.654,405,7.55,406,4.466,407,4.972,408,4.972,409,8.166,410,8.166,413,9.717,414,8.763,415,7.387]],["keywords/39",[]],["title/40",[59,424.783,346,625.496]],["content/40",[11,3.926,24,2.243,31,2.845,39,3.624,59,5.296,64,2.502,142,2.358,148,3.714,149,3.846,150,3.639,151,3.537,157,4.206,160,5.302,161,6.6,162,5.616,175,3.748,179,3.639,212,4.084,219,4.872,223,5.376,294,4.36,346,6.621,374,4.78,375,4.78,376,4.78,380,11.619,387,8.333,388,10.176,389,8.333,390,7.888,391,7.888,392,7.888,393,7.888,394,7.004,396,7.888,397,8.333,398,7.704,399,8.333,400,7.004,401,5.474,402,6.789,403,6.789,404,6.789,405,7.704,406,4.557,407,5.073,408,5.073,409,8.333,410,8.333,416,7.888,417,8.942,418,8.942,419,9.916]],["keywords/40",[]],["title/41",[59,364.91,107,495.909,346,537.333]],["content/41",[11,3.988,24,1.945,31,4.862,38,3.923,39,4.566,40,5.464,43,6.489,59,5.289,92,3.03,107,6.424,142,1.947,148,3.22,149,3.176,150,3.005,151,2.921,157,3.473,158,5.066,160,4.378,161,5.45,162,4.638,175,3.095,176,4.412,177,2.341,178,4.447,179,3.005,190,4.766,191,4.638,200,4.378,212,3.372,219,4.023,223,4.662,228,2.648,252,5.783,260,8.315,287,8.684,288,5.011,294,3.6,346,5.741,380,10.371,383,6.881,384,6.881,390,6.514,391,6.514,392,6.514,393,6.514,398,9.706,402,5.606,405,6.362,406,3.763,415,6.225,416,6.514,417,7.384,420,8.188,421,8.188,422,8.188,423,4.908,424,8.188,425,10.498,426,8.188,427,8.188,428,8.188,429,8.188,430,7.728]],["keywords/41",[]],["title/42",[74,347.86,143,615.771,144,483.846]],["content/42",[]],["keywords/42",[]],["title/43",[74,347.86,145,367.472,339,415.463]],["content/43",[11,3.731,22,5.217,24,2.68,31,3.669,42,5.005,71,7.589,74,3.805,146,9.206,148,4.438,149,4.961,150,4.693,151,4.562,152,6.786,153,6.016,154,4.599,155,6.786,156,6.637,175,4.833,294,5.624,339,4.544,346,5.877,374,6.165,375,6.165,376,6.165,386,10.441,431,12.788,432,5.844,433,6.946,434,12.587,435,12.788,436,12.788,437,12.788,438,13.88]],["keywords/43",[]],["title/44",[74,304.887,107,434.646,222,430.338,339,364.138]],["content/44",[11,3.799,24,2.796,74,4.054,107,7.617,148,4.629,149,5.286,150,5.001,151,4.861,152,7.23,153,6.41,154,4.9,155,7.23,156,7.071,175,5.15,294,5.992,339,4.842,346,6.262,374,6.568,375,6.568,376,6.568,377,12.288,378,12.288,431,13.626,434,9.962,435,13.626,436,13.626,437,13.626]],["keywords/44",[]],["title/45",[74,347.86,143,615.771,144,483.846]],["content/45",[]],["keywords/45",[]],["title/46",[145,367.472,339,415.463,341,693.83]],["content/46",[11,3.741,24,2.696,31,3.701,146,9.261,148,4.464,149,5.005,150,4.735,151,4.603,152,6.846,153,6.069,154,4.64,155,6.846,156,6.696,175,4.876,200,6.899,294,5.673,339,6.947,341,7.656,346,5.929,359,7.813,374,6.219,375,6.219,376,6.219,378,11.635,386,10.534,439,10.534,440,12.176,441,12.176,442,12.176,443,12.176,444,10.534]],["keywords/46",[]],["title/47",[112,514.154,339,415.463,341,693.83]],["content/47",[11,4.132,24,1.904,31,4.271,37,15.986,40,3.484,112,3.502,148,3.152,149,3.089,150,2.923,151,2.841,175,3.01,176,4.292,177,2.277,178,4.326,179,2.923,190,4.636,191,4.511,200,7.961,287,5.536,288,4.874,294,3.502,339,5.29,341,7.257,346,3.66,347,13.426,348,17.863,349,7.516,354,13.426,359,9.016,439,6.502,440,7.516,441,11.542,442,11.542,443,11.542,444,6.502,445,14.037,446,12.23,447,13.273,448,8.644,449,7.516,450,8.644]],["keywords/47",[]],["title/48",[339,483.63,341,807.671]],["content/48",[11,4.08,24,2.435,31,3.192,37,13.147,40,4.867,148,4.033,149,4.317,150,4.084,151,3.97,175,4.206,176,5.996,177,3.182,178,6.044,179,4.084,190,6.477,191,6.303,200,5.95,288,6.81,294,4.893,339,3.954,341,6.603,346,5.114,347,10.035,348,14.108,354,10.035,359,6.739,439,9.085,440,10.502,441,10.502,442,10.502,443,10.502,444,9.085,445,13.147,446,15.645,451,10.502,452,10.502]],["keywords/48",[]],["title/49",[188,563.637,339,415.463,341,693.83]],["content/49",[11,3.995,24,2.574,31,3.456,40,5.27,148,4.261,149,4.674,150,4.422,151,4.298,152,6.393,153,5.668,154,4.333,155,6.393,156,6.252,175,4.553,176,6.492,177,3.445,178,6.544,179,4.422,188,7.97,190,7.013,191,6.824,193,6.252,200,6.442,287,8.375,288,7.373,294,5.298,339,4.281,341,7.149,346,5.537,369,12.048,439,9.837,444,9.837,451,11.371,452,11.371,453,12.048]],["keywords/49",[]],["title/50",[107,495.909,339,415.463,341,693.83]],["content/50",[11,3.963,24,2.762,40,5.851,107,8.443,148,4.573,149,5.189,150,4.909,151,4.772,175,5.055,176,7.208,177,3.825,178,7.265,179,4.909,190,7.786,191,7.576,287,9.298,288,8.186,294,5.882,339,4.753,341,7.937,346,6.147,439,10.92,444,10.92,451,12.624,452,12.624]],["keywords/50",[]],["title/51",[145,322.076,339,364.138,341,608.117,359,620.574]],["content/51",[11,3.17,24,2.96,146,10.167,148,4.901,149,5.772,150,5.461,151,5.308,175,5.623,294,6.543,339,5.287,341,8.829,346,6.838,359,9.01,374,7.172,375,7.172,376,7.172,378,13.417,386,12.147,439,12.147,444,12.147,454,14.878,455,14.878]],["keywords/51",[]],["title/52",[107,434.646,339,364.138,341,608.117,359,620.574]],["content/52",[11,3.956,24,2.745,40,5.797,107,8.405,148,4.545,149,5.141,150,4.864,151,4.728,175,5.009,176,7.142,177,3.79,178,7.199,179,4.864,190,7.715,191,7.507,287,9.214,288,8.111,294,5.828,339,4.71,341,7.865,346,6.091,359,8.026,439,10.821,444,10.821,454,13.254,455,13.254]],["keywords/52",[]],["title/53",[456,1628.212]],["content/53",[0,1.632,7,1.148,11,0.22,13,1.27,31,0.379,42,4.198,43,0.566,45,0.73,51,0.641,56,0.985,64,0.334,65,0.749,68,2.457,85,1.326,87,0.755,91,1.27,92,0.932,94,1.439,96,1.079,97,1.248,104,1.079,111,1.857,112,2.788,119,0.949,129,0.762,145,0.415,148,0.341,149,0.977,153,1.184,154,2.28,171,5.798,175,3.208,177,2.768,190,0.769,192,1.47,194,0.601,205,4.848,227,0.515,235,3.278,258,0.857,265,0.742,267,0.591,268,1.912,288,0.809,297,0.691,340,2.182,356,0.701,363,1.942,370,5.806,406,0.608,412,2.497,415,1.914,432,2.515,456,3.604,457,3.615,458,2.899,459,8.75,460,3.827,461,13.557,462,1.435,463,3.571,464,5.328,465,2.732,466,1.435,467,1.248,468,2.897,469,7.826,470,2.376,471,2.732,472,1.248,473,1.876,474,1.164,475,1.435,476,1.248,477,1.148,478,0.905,479,3.032,480,1.435,481,1.628,482,0.792,483,1.322,484,1.876,485,1.435,486,0.736,487,1.079,488,2.942,489,4.554,490,0.547,491,3.656,492,0.827,493,3.604,494,1.248,495,8.136,496,2.875,497,0.847,498,1.248,499,1.435,500,1.435,501,4.555,502,1.191,503,1.435,504,5.328,505,1.192,506,2.186,507,2.685,508,1.322,509,1.005,510,1.494,511,2.118,512,5.177,513,1.435,514,3.147,515,2.732,516,2.966,517,2.732,518,1.248,519,4.779,520,1.75,521,9.013,522,1.435,523,1.322,524,2.803,525,1.699,526,1.435,527,4.988,528,3.912,529,2.507,530,2.376,531,1.322,532,2.337,533,4.988,534,9.312,535,0.949,536,3.912,537,12.142,538,10.991,539,9.683,540,13.592,541,12.142,542,3.246,543,4.988,544,2.732,545,3.604,546,2.376,547,2.27,548,4.988,549,4.472,550,5.974,551,1.248,552,1.435,553,1.435,554,5.372,555,1.148,556,0.892,557,0.934,558,1.435,559,6.262,560,13.935,561,1.111,562,1.876,563,3.912,564,1.435,565,0.604,566,0.572,567,1.111,568,0.857,569,2.942,570,1.192,571,2.8,572,1.027,573,1.435,574,1.435,575,1.248,576,1.079,577,0.818,578,0.736,579,0.985,580,1.248,581,2.06,582,1.322,583,0.755,584,0.517,585,1.435,586,0.966,587,1.079,588,8.494,589,1.435,590,1.148,591,0.966,592,0.736,593,1.435,594,0.892,595,1.005,596,3.862,597,1.435,598,1.111,599,2.116,600,1.435,601,0.777,602,1.435,603,2.732,604,1.435,605,1.435,606,1.435,607,1.435,608,1.148,609,1.435,610,9.213,611,1.435,612,1.435,613,1.435,614,1.435,615,2.186,616,0.949,617,1.435,618,2.732,619,1.435,620,0.777,621,1.435,622,0.868,623,0.892,624,1.322,625,1.435,626,1.435,627,0.966,628,7.826,629,1.435,630,2.188,631,1.612,632,1.005,633,4.779,634,1.248,635,1.248,636,2.432,637,1.005,638,1.111,639,2.517,640,3.752,641,0.905,642,0.818,643,0.905,644,0.88,645,1.322,646,2.376,647,1.248,648,1.435,649,1.027,650,2.376,651,7.649,652,1.316,653,2.732,654,1.435,655,1.876,656,2.732,657,3.246,658,1.435,659,1.248,660,1.322,661,1.435,662,1.435,663,2.27,664,2.732,665,1.435,666,2.27,667,1.248,668,1.079,669,1.005,670,1.192,671,1.111,672,2.732,673,0.868,674,1.435,675,1.248,676,1.052,677,3.039,678,1.148,679,4.988,680,1.435,681,8.594,682,1.435,683,1.148,684,1.435,685,1.435,686,6.881,687,1.435,688,4.024,689,1.435,690,1.435,691,1.435,692,1.435,693,1.192,694,1.435,695,1.435,696,1.435,697,1.322,698,1.435,699,1.111,700,1.435,701,1.435,702,1.248,703,1.322,704,1.052,705,1.435,706,0.949,707,0.919,708,0.809,709,1.435,710,1.435,711,1.808,712,0.966,713,1.079,714,1.435,715,1.052,716,1.435,717,1.005,718,0.905,719,1.248,720,0.681,721,1.435,722,1.111,723,1.148,724,4.22,725,2.186,726,1.435,727,2.732,728,1.956,729,1.876,730,3.912,731,2.376,732,2.376,733,3.129,734,0.837,735,0.837,736,1.435,737,1.322,738,0.985,739,1.435,740,0.905]],["keywords/53",[]],["title/54",[520,946.169,521,792.248]],["content/54",[0,2.396,11,0.761,13,2.305,22,4.15,40,1.998,43,4.359,45,2.522,87,5.814,88,3,112,5.929,119,2.05,154,1.643,171,5.777,177,2.909,179,1.676,192,1.863,205,1.977,227,1.78,235,1.764,268,2.424,412,2.734,432,2.087,457,8.856,459,8.191,461,5.412,463,3.549,464,3.838,469,7.785,478,5.331,479,3.319,481,2.064,482,2.738,490,1.89,493,10.174,501,11.769,505,4.119,506,3.966,507,5.8,510,9.298,511,2.684,512,9.812,514,8.229,519,3.966,520,7.073,521,9.607,523,4.568,524,2.019,525,3.083,535,7.307,539,6.049,540,3.472,541,3.838,559,2.37,568,2.962,571,6.049,575,4.311,576,3.729,584,1.788,586,3.339,596,6.542,599,3.838,627,3.339,633,3.966,640,3.729,641,3.128,643,3.128,652,2.388,659,9.602,677,2.522,693,7.021,699,3.838,703,4.568,704,3.634,707,3.175,711,5.592,715,9.561,719,4.311,728,6.049,737,4.568,741,5.692,742,4.119,743,3.729,744,9.175,745,4.967,746,3.083,747,5.113,748,6.76,749,7.347,750,7.905,751,4.957,752,3.729,753,4.957,754,3.966,755,4.311,756,2.926,757,6.356,758,4.311,759,4.311,760,4.957,761,4.311,762,3.226,763,4.957,764,3.838,765,3.838,766,4.311,767,4.568,768,4.957,769,4.957,770,4.957,771,3.549,772,4.957,773,4.957,774,6.76,775,3.281,776,4.957,777,3.838,778,3.549,779,2.565,780,3.966,781,4.957,782,4.957,783,4.957,784,4.311,785,4.957,786,4.568,787,4.311,788,3.801,789,4.957,790,4.957,791,4.311,792,3.403,793,2.543,794,4.957,795,4.957,796,1.69,797,4.957,798,4.957,799,4.311,800,2.858,801,4.957,802,4.957,803,2.826,804,4.957,805,4.957]],["keywords/54",[]],["title/55",[0,172.997,501,871.762]],["content/55",[]],["keywords/55",[]],["title/56",[806,1536.682]],["content/56",[0,2.417,171,9.462,177,4.255,227,5.797,267,6.649,457,9.772,463,14.774,464,12.503,501,9.53,511,8.743,562,14.167,650,14.042,673,9.772,807,16.51,808,11.085,809,10.041,810,13.417,811,14.878,812,12.918]],["keywords/56",[]],["title/57",[0,172.997,584,532.699]],["content/57",[177,5.636,584,7.714]],["keywords/57",[]],["title/58",[145,427.765,188,656.116]],["content/58",[0,2.377,11,3.117,339,6.644,490,7.738,813,13.67,814,10.591]],["keywords/58",[]],["title/59",[516,402.911,532,484.841,708,457.578,813,546.637,815,705.652,816,594.813,817,393.767]],["content/59",[145,5.802,532,11.971,813,15.87,818,14.687,819,18.461,820,14.344]],["keywords/59",[]],["title/60",[0,115.932,1,394.825,27,615.572,821,860.829,822,487.704]],["content/60",[0,1.352,11,3.871,24,1.656,26,11.217,27,10.229,28,7.927,29,6.027,31,3.052,48,5.005,138,8.464,281,7.181,412,3.736,423,6.377,474,7.006,788,7.399,817,5.604,823,8.941,824,17.655,825,10.64,826,18.279,827,15.709,828,15.156,829,7.082,830,11.306,831,15.156,832,10.64,833,12.375,834,12.375,835,7.927]],["keywords/60",[]],["title/61",[0,104.448,145,258.266,235,317.373,459,429.581,777,690.566,836,775.554]],["content/61",[0,2.519,87,12.569,94,7.574,138,10.544,145,5.542,235,7.653,267,5.923,459,6.929,514,9.075,725,11.508,777,18.483,796,4.905,837,13.138,838,13.254,839,8.945,840,11.952,841,13.254,842,8.026,843,13.254,844,8.945,845,13.254,846,11.138,847,11.138,848,8.945]],["keywords/61",[]],["title/62",[1,394.825,145,286.663,501,584.203,554,577.275,849,912.103]],["content/62",[0,2.685,1,5.737,11,3.303,24,2.063,26,11.671,29,7.507,87,7.574,145,4.166,148,3.416,235,5.119,281,11.901,432,6.056,554,8.388,826,11.138,834,10.821,846,11.138,850,8.595,851,13.254,852,15.765,853,11.952,854,11.138,855,13.254,856,13.406,857,14.818]],["keywords/62",[]],["title/63",[11,152.042,145,286.663,479,388.809,549,521.239,858,912.103]],["content/63",[0,2.589,11,2.337,24,2.182,26,10.809,148,3.614,177,5.825,193,7.276,288,8.58,497,8.979,501,8.979,549,12.34,554,8.873,565,6.406,788,6.844,846,11.781,856,13.911,859,12.924,860,11.153,861,14.019,862,13.378]],["keywords/63",[]],["title/64",[1,394.825,554,577.275,854,766.496,863,912.103,864,634.066]],["content/64",[0,1.853,1,6.312,11,2.43,24,2.27,26,11.63,119,3.84,145,4.582,267,6.516,432,6.663,549,10.726,554,11.879,711,13.481,814,10.631,826,12.253,834,11.904,853,13.149,854,12.253,856,11.085,865,11.599,866,11.599,867,14.581]],["keywords/64",[]],["title/65",[1,355.713,554,520.09,699,690.566,813,600.787,830,482.901,868,821.749]],["content/65",[0,2.377,24,2.911,26,9.922,830,10.988,833,15.266,856,14.215]],["keywords/65",[]],["title/66",[40,327.051,48,351.736,549,427.278,651,491.088,699,628.323,817,393.767,869,747.683]],["content/66",[145,5.456,149,6.735,235,6.705,432,7.933,433,9.43,549,9.921,583,9.921,814,9.833,818,13.811,870,17.361,871,12.262,872,10.741]],["keywords/66",[]],["title/67",[145,258.266,149,318.774,814,465.443,817,432.774,873,821.749,874,461.405]],["content/67",[11,2.532,145,4.774,148,3.915,149,8.632,196,7.714,568,9.849,757,12.401,813,11.105,814,12.604,818,12.083,820,11.801,875,15.189,876,13.188,877,15.189,878,15.189,879,15.189,880,8.317]],["keywords/67",[]],["title/68",[40,300.01,48,322.654,149,266.062,651,450.485,814,388.477,816,545.633,817,361.21,881,685.864]],["content/68",[149,7.072,432,8.33,433,9.902,814,10.326,818,14.503,871,12.876,872,11.279,882,18.23]],["keywords/68",[]],["title/69",[568,758.192,880,640.221,883,1169.223]],["content/69",[11,1.944,42,4.564,56,8.689,177,3.335,188,5.622,205,5.048,224,5.587,468,5.329,481,7.305,516,6.284,521,10.8,524,5.156,535,8.376,538,11.007,557,8.237,568,12.032,581,6.665,599,9.8,640,13.199,681,11.007,693,10.517,711,14.389,771,9.061,814,6.605,884,13.824,885,11.662,886,11.608,887,14.036,888,12.29,889,18.554,890,11.662,891,7.871,892,10.517,893,10.126,894,11.662,895,11.007]],["keywords/69",[]],["title/70",[115,664.528,568,664.528,884,763.502,896,1024.781]],["content/70",[0,2.083,115,10.625,149,7.836,193,8.503,235,6.328,521,9.537,549,9.363,554,10.37,568,10.625,711,11.768,814,11.442,830,9.628,856,12.456,884,12.207,897,16.385]],["keywords/70",[]],["title/71",[177,389.201,898,1361.063]],["content/71",[119,3.918,177,5.437,474,8.789,490,6.157,497,9.53,578,8.283,743,12.147,860,15.127,899,12.918,900,10.188,901,14.878,902,15.932,903,10.188,904,12.147,905,7.559,906,13.417,907,13.417,908,12.503,909,14.878,910,14.878,911,14.878]],["keywords/71",[]],["title/72",[0,130.254,171,439.064,497,656.373,521,596.505]],["content/72",[]],["keywords/72",[]],["title/73",[235,525.666,521,792.248]],["content/73",[0,1.584,31,3.575,47,7.886,171,5.339,179,4.573,193,6.466,205,5.394,235,7.418,356,6.612,457,8.184,470,11.76,473,9.283,521,12.537,549,7.121,652,8.843,668,10.173,677,6.879,707,8.662,708,10.353,788,6.083,809,8.409,829,8.294,912,12.46,913,12.46,914,11.237,915,9.283,916,12.46,917,7.709,918,15.255,919,12.46,920,12.46,921,9.11,922,12.46,923,12.46,924,12.46,925,12.46]],["keywords/73",[]],["title/74",[568,1055.827]],["content/74",[0,1.372,11,1.8,45,5.961,112,6.735,149,4.189,188,10.76,199,7.002,489,7.755,521,11.904,537,9.074,549,10.171,568,13.261,583,6.171,594,7.287,663,9.737,677,5.961,733,9.375,738,11.411,745,8.689,762,7.626,765,9.074,774,9.375,886,6.755,917,6.68,926,10.798,927,9.737,928,8.209,929,10.798,930,10.798,931,10.798,932,9.737,933,9.737,934,10.191,935,9.737,936,9.074,937,10.798,938,10.798,939,10.798,940,10.798,941,10.798,942,10.798,943,9.074]],["keywords/74",[]],["title/75",[936,1368.285]],["content/75",[188,10.566,235,5.631,501,9.339,514,9.984,521,12.083,568,9.455,608,16.297,668,11.904,708,8.923,757,11.904,936,15.773,944,14.581,945,14.581,946,11.599,947,14.581,948,11.085,949,12.253,950,9.84,951,14.581,952,14.581,953,11.085]],["keywords/75",[]],["title/76",[188,563.637,487,954.615,549,668.175]],["content/76",[0,1.993,22,6.396,26,8.32,51,7.606,60,10.043,119,5.176,177,4.484,356,8.32,622,10.298,711,11.262,748,13.614,949,13.176,954,15.679,955,10.582,956,15.679,957,15.679,958,15.679,959,9.495,960,15.679,961,15.679]],["keywords/76",[]],["title/77",[460,812.808,514,800.595,962,800.595]],["content/77",[87,9.395,107,6.973,459,8.594,460,16.148,474,7.599,514,13.861,520,8.307,521,10.939,596,10.042,713,9.756,792,8.903,839,11.095,847,10.042,859,8.44,884,8.903,891,8.064,917,7.393,963,17.737,964,11.949,965,11.949,966,11.949,967,9.084,968,11.949,969,11.949,970,11.949,971,11.949,972,9.756,973,9.756,974,11.949,975,11.949]],["keywords/77",[]],["title/78",[461,812.808,521,680.582,540,888.887]],["content/78",[]],["keywords/78",[]],["title/79",[0,104.448,461,571.255,520,571.255,521,478.324,540,624.725,880,449.958]],["content/79",[0,2.23,24,0.819,32,7.369,42,4.413,65,2.98,112,3.856,129,3.034,145,1.653,153,2.475,171,5.637,199,3.411,230,4.551,235,2.032,258,5.687,265,2.954,356,2.791,363,2.835,459,6.878,461,15.253,468,2.404,490,2.177,501,5.617,510,3.122,512,10.742,514,3.602,519,12.695,520,3.657,521,5.104,535,10.501,540,8.573,541,9.476,545,5.26,557,11.83,571,13.634,572,4.087,579,3.919,581,3.006,608,4.567,634,4.965,638,7.369,639,5.26,641,3.602,646,4.965,657,3.716,671,4.421,673,3.455,676,4.185,678,9.791,697,5.26,715,4.185,718,3.602,728,4.087,741,6.411,767,5.26,777,4.421,788,2.568,791,8.276,796,5.411,803,3.255,823,9.476,837,14.71,871,6.194,880,2.88,893,7.614,976,5.709,977,4.965,978,5.709,979,5.709,980,14.28,981,15.868,982,5.709,983,9.518,984,5.76,985,5.709,986,5.26,987,5.709,988,3.716,989,5.709,990,3.411,991,7.908,992,5.709,993,4.965,994,5.709,995,3.846,996,8.761,997,5.709,998,5.709,999,3.034,1000,4.965,1001,4.744,1002,5.709,1003,5.709,1004,3.062,1005,4.567,1006,4.965,1007,4.295,1008,5.26,1009,5.709,1010,4.965,1011,4.965,1012,5.26]],["keywords/79",[]],["title/80",[0,148.613,171,500.95,510,693.83]],["content/80",[]],["keywords/80",[]],["title/81",[510,966.2]],["content/81",[0,1.817,162,8.096,265,8.026,478,9.788,479,6.093,490,5.915,496,8.943,510,8.482,541,12.012,581,8.169,596,12.012,850,9.269,864,9.937,1001,16.711,1013,12.891,1014,9.389,1015,17.489,1016,15.514,1017,15.514,1018,15.514,1019,15.514,1020,9.937,1021,10.451,1022,9.937,1023,13.491,1024,14.294,1025,14.294,1026,14.294]],["keywords/81",[]],["title/82",[501,871.762,708,832.963]],["content/82",[0,2.29,13,5.572,43,4.731,44,9.28,51,5.357,87,11.18,91,5.572,94,6.311,149,6.037,188,5.324,227,4.303,235,6.01,302,9.016,459,5.773,501,11.541,509,8.395,514,10.655,518,10.422,520,7.677,537,9.28,566,4.78,616,7.932,631,7.073,657,7.8,677,8.591,711,7.932,728,8.58,745,9.551,748,9.589,793,6.148,814,8.814,817,5.816,872,6.832,955,10.502,1027,7.253,1028,11.043,1029,10.422,1030,8.785,1031,7.562,1032,9.959,1033,11.043,1034,11.043,1035,11.043,1036,11.043]],["keywords/82",[]],["title/83",[520,946.169,521,792.248]],["content/83",[0,1.57,51,5.993,85,6.507,87,7.06,171,7.206,177,3.533,188,5.956,258,8.011,412,4.338,457,8.115,461,11.692,479,5.266,481,5.582,490,5.113,496,7.729,511,9.884,514,11.516,519,10.727,520,11.692,521,11.131,540,12.786,566,5.348,637,9.392,708,7.561,720,6.366,745,6.031,796,4.572,842,7.482,880,6.765,1037,10.382,1038,9.829,1039,12.355,1040,12.355,1041,12.355,1042,7.819,1043,9.829,1044,12.355,1045,12.355]],["keywords/83",[]],["title/84",[549,930.473]],["content/84",[0,2.377,51,9.07,269,13.43,511,10.988,521,10.884,549,10.685]],["keywords/84",[]],["title/85",[510,966.2]],["content/85",[0,2.317,177,5.213,489,13.094,510,12.786,742,16.44,810,16.44,1046,18.23]],["keywords/85",[]],["title/86",[112,598.514,512,1111.244]],["content/86",[0,1.372,11,2.967,24,1.681,112,4.748,115,7.002,119,2.844,148,2.783,171,4.626,188,5.205,227,4.207,235,4.17,288,9.373,412,3.792,459,5.645,490,4.468,494,10.191,501,9.81,511,9,512,12.505,549,6.171,578,9.909,634,10.191,636,7.287,646,10.191,728,8.389,771,8.389,793,6.011,837,11.411,996,8.389,1020,7.506,1021,7.894,1043,8.59,1047,21.241,1048,17.798,1049,17.798,1050,7.092,1051,10.798,1052,10.798,1053,11.719,1054,11.719,1055,10.191,1056,5.564,1057,11.719,1058,9.074,1059,8.59]],["keywords/86",[]],["title/87",[562,1213.081]],["content/87",[0,2.233,51,8.523,171,7.528,177,5.024,340,10.64,356,9.323,562,15.704,565,8.029,566,7.606,807,15.256]],["keywords/87",[]],["title/88",[205,589.167,756,871.762]],["content/88",[]],["keywords/88",[]],["title/89",[1060,1628.212]],["content/89",[59,4.293,92,5.09,140,8.705,153,6.471,192,5.611,339,4.887,411,10.457,412,6.346,481,6.215,524,6.081,529,4.849,581,7.86,601,8.083,623,9.283,744,12.404,984,14.078,1042,8.705,1061,13.754,1062,5.312,1063,13.754,1064,9.155,1065,14.376,1066,13.212,1067,13.754,1068,9.034,1069,12.404,1070,9.155,1071,8.418]],["keywords/89",[]],["title/90",[472,1536.682]],["content/90",[2,1.981,32,3.411,47,2.569,51,1.969,53,2.6,59,2.905,64,1.775,91,2.048,129,8.513,145,1.276,171,1.739,177,1.161,190,2.362,192,1.656,195,2.059,205,1.757,206,1.648,221,4.487,263,2.701,339,3.945,340,2.458,356,8.288,406,3.232,412,1.425,432,1.855,460,2.821,463,5.465,479,1.73,481,5.673,484,3.024,492,2.539,495,3.411,498,3.83,502,1.921,511,2.385,520,4.889,524,5.55,525,7.492,529,1.431,566,1.757,581,5.319,584,5.777,587,5.742,591,2.967,595,5.347,601,4.133,630,1.932,652,2.122,708,2.484,728,3.153,752,7.599,758,3.83,792,5.24,796,1.502,800,2.539,822,9.901,830,2.385,842,2.458,850,2.632,872,2.511,880,2.222,886,2.539,903,4.816,905,2.062,928,7.076,943,5.91,948,3.085,962,2.779,1056,2.091,1062,6.032,1064,2.701,1072,4.059,1073,2.779,1074,11.33,1075,4.059,1076,5.595,1077,9.329,1078,4.059,1079,3.411,1080,3.411,1081,4.059,1082,3.229,1083,4.059,1084,4.059,1085,12.554,1086,6.035,1087,6.281,1088,5.91,1089,4.816,1090,5.052,1091,9.017,1092,5.226,1093,3.229,1094,4.059,1095,4.059,1096,4.059,1097,4.059,1098,6.052,1099,4.351,1100,2.867,1101,3.314,1102,8.081,1103,3.83,1104,2.666,1105,3.229,1106,4.059,1107,2.666,1108,4.059,1109,5.742,1110,3.085,1111,4.62,1112,4.059,1113,7.033,1114,4.059,1115,4.059,1116,3.524,1117,2.821,1118,2.484,1119,6.343,1120,4.059,1121,5.823,1122,4.816,1123,8.44,1124,4.059,1125,2.02,1126,4.059,1127,4.059,1128,4.059,1129,4.059,1130,4.059,1131,4.059,1132,3.085,1133,3.66,1134,3.229,1135,3.153,1136,3.411,1137,3.66,1138,3.66,1139,3.411,1140,2.569,1141,4.561,1142,2.915,1143,4.059,1144,4.059,1145,2.701,1146,4.059,1147,4.059,1148,3.411,1149,3.411,1150,4.059,1151,3.66,1152,3.524,1153,4.059,1154,4.059,1155,2.967,1156,3.411,1157,4.059,1158,3.024,1159,2.666,1160,3.524]],["keywords/90",[]],["title/91",[11,136.981,822,439.392,872,508.398,1074,482.901,1089,562.671,1090,590.221]],["content/91",[2,6.315,11,3.387,24,1.335,42,5.063,43,3.673,74,2.551,137,5.75,175,4.889,192,7.077,201,3.108,206,5.252,284,4.107,339,6.616,356,4.549,363,4.62,366,8.285,473,9.638,474,3.963,524,3.79,525,5.786,630,6.159,643,5.87,688,6.268,724,5.706,984,10.232,1001,7.731,1042,5.426,1062,8.674,1064,8.61,1077,7.205,1099,5.304,1156,13.091,1161,8.573,1162,8.573,1163,8.573,1164,12.936,1165,7.731,1166,8.573,1167,8.573,1168,5.96,1169,7.731,1170,6.518,1171,6.82,1172,8.573,1173,8.091,1174,8.388,1175,7.731,1176,6.82,1177,8.573,1178,8.388,1179,4.449,1180,8.573,1181,7.731,1182,6.661,1183,6.518,1184,7.205,1185,5.088,1186,5.706]],["keywords/91",[]],["title/92",[42,146.943,88,246.597,339,133.408,432,171.561,630,312.924,677,207.274,796,138.938,872,232.28,1062,145.003,1087,253.385,1089,257.076,1123,285.427,1148,315.509,1187,279.721,1188,375.445,1189,220.63,1190,298.682]],["content/92",[42,3.223,43,3.528,67,4.472,88,5.408,129,4.749,137,3.66,148,2.122,171,3.528,195,1.821,205,5.431,206,6.9,222,3.458,235,3.18,339,6.5,356,4.369,370,10.243,432,3.763,473,6.135,474,3.806,524,3.64,525,8.467,547,7.425,583,4.706,584,3.223,599,6.92,630,5.974,633,7.149,636,5.557,649,6.398,675,7.771,677,6.926,688,6.02,752,6.723,796,6.289,830,7.372,872,7.762,874,4.623,928,6.26,962,5.638,1031,5.638,1062,7.444,1073,5.638,1074,4.839,1086,5.339,1087,11.47,1099,5.094,1123,6.26,1137,7.425,1141,8.135,1148,6.92,1156,6.92,1169,7.425,1181,7.425,1186,5.481,1187,6.135,1189,4.839,1190,6.551,1191,8.234,1192,12.546,1193,7.771,1194,8.234,1195,8.234,1196,6.398,1197,10.543,1198,6.92,1199,6.135,1200,9.011,1201,7.425,1202,8.234,1203,8.234,1204,7.771,1205,7.425,1206,7.425,1207,8.234,1208,7.425,1209,6.551]],["keywords/92",[]],["title/93",[92,276.689,137,332.33,406,343.608,529,263.585,1089,511.956,1210,568.417,1211,473.213]],["content/93",[10,4.788,25,3.485,64,4.391,81,5.654,92,5.785,148,2.223,194,3.919,205,6.767,227,3.36,235,3.331,432,5.937,525,5.82,529,4.581,551,8.139,591,6.305,592,4.801,594,8.769,644,8.648,720,4.444,778,6.701,796,3.191,822,9.305,888,6.556,1030,6.861,1062,5.018,1074,10.226,1076,6.861,1077,7.247,1082,6.861,1086,8.426,1091,9.332,1118,9.568,1133,7.777,1138,7.777,1141,5.592,1210,6.556,1211,11.815,1212,8.624,1213,8.624,1214,8.624,1215,7.777,1216,7.777,1217,9.578,1218,7.71,1219,8.139,1220,8.624,1221,8.624,1222,10.337,1223,11.717,1224,12.993,1225,8.173,1226,8.624,1227,7.777,1228,8.624,1229,8.624,1230,8.624,1231,7.041,1232,7.777]],["keywords/93",[]],["title/94",[363,317.154,595,447.432,800,368.216,1062,227.305,1071,360.185,1089,402.989,1099,364.118,1211,372.492,1233,530.746,1234,468.21]],["content/94",[51,5.087,68,5.607,81,6.527,92,3.881,192,6.119,214,3.849,223,3.913,265,5.888,473,7.813,474,4.847,488,12.247,507,7.813,584,4.104,595,7.972,673,6.888,718,7.18,747,6.888,784,9.897,800,6.561,822,5.607,839,7.077,872,6.488,1062,5.793,1064,6.98,1071,6.418,1073,7.18,1074,8.815,1089,7.18,1099,9.28,1110,7.972,1121,6.561,1176,8.343,1210,7.972,1211,6.637,1231,8.562,1233,9.457,1234,8.343,1235,10.487,1236,9.105,1237,10.487,1238,14.717,1239,10.487,1240,10.487,1241,6.888,1242,10.271,1243,9.105,1244,9.457,1245,10.487,1246,5.087,1247,8.813,1248,8.813,1249,8.148,1250,6.98,1251,7.29,1252,8.148,1253,10.487,1254,10.487,1255,9.457]],["keywords/94",[]],["title/95",[205,355.713,366,526.331,1062,317.373,1089,562.671,1256,821.749,1257,821.749]],["content/95",[481,8.671,566,8.307,788,9.369,1258,8.576]],["keywords/95",[]],["title/96",[177,181.148,478,433.764,479,270.041,740,433.764,888,481.601,1089,433.764,1121,396.335,1132,481.601,1259,571.277]],["content/96",[0,1.494,94,6.718,177,3.362,474,8.613,479,7.943,486,9.05,511,6.909,577,7.273,584,4.601,632,8.938,771,9.134,796,6.895,950,7.934,977,11.095,1062,8.429,1099,10.057,1121,10.17,1132,8.938,1141,10.541,1171,9.353,1174,7.623,1186,7.825,1232,10.602,1255,10.602,1259,10.602,1260,10.602,1261,10.602,1262,9.879,1263,11.756,1264,11.756,1265,8.595,1266,9.598,1267,11.756,1268,7.53,1269,11.095,1270,6.101,1271,11.756]],["keywords/96",[]],["title/97",[1272,1150.024]],["content/97",[]],["keywords/97",[]],["title/98",[866,930.165,1273,1169.223,1274,1103.495]],["content/98",[0,1.937,64,2.705,81,6.63,92,3.966,105,7.836,140,6.784,171,6.528,177,3.065,192,4.372,194,4.87,339,3.809,340,6.491,459,5.603,461,7.451,489,7.698,510,9.041,516,5.776,529,5.371,530,10.116,557,10.761,591,7.836,592,10.747,598,9.007,644,7.134,652,5.603,734,6.784,779,6.018,793,5.967,1074,8.953,1086,6.95,1088,9.007,1122,7.339,1134,8.527,1186,7.134,1211,6.784,1217,5.233,1225,10.091,1246,5.199,1275,9.007,1276,14.379,1277,6.491,1278,10.718,1279,9.007,1280,10.718,1281,8.148,1282,10.718,1283,9.666,1284,10.718,1285,7.57,1286,10.718]],["keywords/98",[]],["title/99",[0,206.953]],["content/99",[0,1.947,64,2.725,81,4.698,91,5.448,92,5.668,145,3.394,171,4.626,194,4.906,206,4.384,339,5.442,351,6.916,370,8.816,489,7.755,529,5.399,581,11.068,592,6.011,594,7.287,722,9.074,734,6.834,741,7.894,803,6.68,808,8.045,822,5.774,830,6.345,872,6.68,995,11.198,1062,7.48,1064,7.187,1074,6.345,1099,9.476,1104,7.092,1111,7.092,1141,7.002,1176,8.59,1189,6.345,1199,8.045,1211,12.943,1217,5.271,1225,5.645,1287,7.755,1288,9.737,1289,10.798,1290,9.737,1291,12.871,1292,9.074,1293,4.58]],["keywords/99",[]],["title/100",[45,645.501,205,701.021]],["content/100",[]],["keywords/100",[]],["title/101",[59,508.159]],["content/101",[22,4.437,42,4.258,59,7.099,64,2.745,81,4.733,107,4.614,112,4.784,137,4.835,145,3.419,201,5.582,346,4.999,363,5.862,366,6.968,412,7.201,458,5.729,516,5.862,601,6.393,630,7.331,734,6.885,740,7.449,859,7.683,866,8.654,886,6.806,1042,6.885,1043,8.654,1111,10.113,1179,5.645,1268,6.968,1294,13.885,1295,7.054,1296,10.878,1297,8.654,1298,9.142,1299,8.452,1300,17.871,1301,8.654,1302,7.683,1303,6.217,1304,9.142,1305,10.878,1306,9.142,1307,8.572,1308,8.654]],["keywords/101",[]],["title/102",[195,360.137]],["content/102",[0,0.645,11,3.094,24,0.79,42,1.987,50,4.078,53,5.453,64,3.247,81,4.783,92,3.15,111,2.616,137,2.257,144,2.101,148,1.309,154,3.953,192,5.249,195,4.726,201,3.985,205,4.758,206,5.224,207,3.213,214,1.863,235,1.961,297,2.654,339,3.906,340,3.075,363,4.587,412,4.518,434,3.712,468,3.89,479,2.164,486,7.163,495,4.267,509,3.86,524,3.764,529,1.79,534,4.408,581,2.901,601,2.984,615,4.408,652,2.654,729,3.783,734,3.213,745,2.479,788,2.479,792,6.343,872,3.141,928,3.86,1004,2.955,1014,5.591,1062,1.961,1064,3.379,1091,3.647,1098,7.944,1099,3.141,1111,3.335,1118,3.107,1134,8.745,1139,4.267,1141,7.128,1175,7.677,1176,4.039,1183,6.472,1184,4.267,1205,4.578,1211,5.388,1217,2.479,1242,3.476,1285,3.586,1309,2.495,1310,5.077,1311,4.145,1312,5.077,1313,8.513,1314,5.077,1315,5.077,1316,5.077,1317,9.238,1318,9.596,1319,10.375,1320,4.039,1321,5.077,1322,6.226,1323,6.114,1324,4.578,1325,5.077,1326,4.578,1327,5.077,1328,3.86,1329,5.077,1330,4.039,1331,5.51,1332,5.51,1333,5.077,1334,4.578,1335,5.51,1336,5.077,1337,1.672,1338,5.077,1339,2.803,1340,3.647,1341,3.86,1342,4.578,1343,4.578,1344,4.578,1345,4.578,1346,4.578,1347,4.578,1348,4.578,1349,4.578,1350,2.928,1351,4.578,1352,4.267,1353,4.578,1354,4.578,1355,4.578,1356,4.578,1357,4.578,1358,5.077,1359,4.578,1360,4.408,1361,4.661,1362,5.077,1363,5.51,1364,5.077,1365,5.077,1366,5.077,1367,5.077,1368,5.077,1369,4.267]],["keywords/102",[]],["title/103",[142,323.625,1370,977.584]],["content/103",[14,6.79,25,4.178,59,4.634,64,3.747,119,5.001,142,5.247,195,3.843,228,5.618,412,6.101,458,9.15,468,4.724,474,6.863,524,6.564,586,7.558,594,6.977,601,6.075,630,7.07,720,5.327,822,5.528,829,6.881,891,6.977,999,5.962,1098,8.375,1178,6.704,1211,6.543,1308,8.224,1318,6.396,1337,5.721,1370,10.664,1371,8.44,1372,9.323,1373,9.323,1374,8.688,1375,9.323,1376,6.543,1377,9.397,1378,7.079,1379,6.881,1380,9.323,1381,10.338]],["keywords/103",[]],["title/104",[339,578.557]],["content/104",[22,4.719,74,6.242,145,3.636,195,2.559,339,8.385,359,7.006,412,6.488,529,5.668,556,7.808,570,10.433,581,6.612,642,7.158,652,6.048,959,7.006,1014,7.599,1042,7.322,1068,10.559,1178,11.981,1182,8.989,1183,8.796,1184,9.723,1293,6.819,1322,6.553,1377,7.322,1382,11.57,1383,12.557,1384,11.57,1385,10.85,1386,13.51,1387,11.57,1388,11.57]],["keywords/104",[]],["title/105",[81,445.914,206,416.062,339,364.138,1350,590.981]],["content/105",[0,2.622,130,7.662,144,7.017,479,7.228,502,8.025,734,10.732,788,8.278,874,9.521,988,11.977,1389,8.278,1390,20.053]],["keywords/105",[]],["title/106",[2,794.882]],["content/106",[0,2.368,2,7.936,10,6.867,11,1.96,49,6.191,51,5.703,59,3.669,119,3.096,192,4.796,194,5.342,195,2.6,201,4.262,205,5.089,468,5.372,481,7.345,524,5.197,529,5.731,577,7.273,636,7.934,735,7.441,756,7.53,796,6.895,1118,7.195,1145,7.825,1218,12.522,1223,10.602,1272,8.304,1293,4.986,1307,6.545,1323,8.444,1391,10.602,1392,7.934,1393,11.756,1394,7.623,1395,9.353,1396,8.05,1397,11.756,1398,11.756,1399,10.602]],["keywords/106",[]],["title/107",[11,203.407,60,376.962,111,303.249,412,206.67,529,339.169,1065,468.21,1400,402.989]],["content/107",[0,1.919,10,2.441,11,2.517,26,3.515,39,2.421,45,3.657,59,2.067,60,4.243,68,5.66,92,6.515,111,8.507,119,3.482,140,11.142,142,1.575,145,2.082,171,2.838,179,2.431,192,5.393,193,3.438,195,2.341,235,5.106,339,2.354,366,4.243,411,8.047,412,6.741,460,4.605,468,4.837,474,3.062,511,3.893,524,5.845,529,4.661,601,6.221,630,3.154,635,6.252,720,3.413,724,4.409,725,5.751,746,4.47,796,2.451,822,5.66,847,5.567,955,4.47,984,8.684,1031,4.536,1032,5.973,1062,5.106,1065,12.014,1066,11.041,1098,5.103,1118,4.054,1185,3.931,1285,4.679,1318,4.098,1361,3.627,1400,10.34,1401,4.144,1402,11.111,1403,8.388,1404,6.624,1405,3.389,1406,7.189,1407,6.624,1408,6.624,1409,5.036,1410,5.27,1411,6.624,1412,5.567,1413,5.973,1414,6.624,1415,4.192,1416,7.189,1417,5.567,1418,5.973,1419,7.189,1420,6.624,1421,5.973,1422,5.973,1423,6.624,1424,10.585,1425,6.624,1426,6.624,1427,6.252,1428,6.624,1429,6.624]],["keywords/107",[]],["title/108",[351,1042.871]],["content/108",[11,2.455,111,7.589,119,3.879,171,6.31,206,5.98,265,8.27,351,9.433,359,8.919,412,5.172,496,9.214,601,8.655,616,10.578,630,7.013,796,5.45,1062,5.688,1142,10.578,1185,8.74,1211,9.321,1243,12.788,1285,10.403,1403,7.483,1409,11.197,1410,11.717,1430,12.377,1431,13.282,1432,11.717,1433,10.768]],["keywords/108",[]],["title/109",[756,871.762,1272,961.334]],["content/109",[]],["keywords/109",[]],["title/110",[756,871.762,1434,1082.782]],["content/110",[0,2.415,10,1.996,11,4.222,14,3.558,24,0.843,59,1.691,67,4.881,74,3.987,80,2.475,91,2.733,92,4.959,119,1.427,143,2.853,144,3.718,192,3.665,195,2.547,196,2.169,212,2.231,222,2.275,227,2.111,228,1.752,297,2.832,339,1.925,468,2.475,474,2.504,502,2.564,511,3.183,524,3.972,529,6.262,566,2.345,623,3.656,630,2.579,722,4.552,734,3.428,745,2.645,762,3.826,803,5.559,874,3.042,1062,2.092,1064,3.606,1071,5.499,1140,3.428,1141,3.513,1185,3.214,1218,3.214,1242,3.709,1246,2.628,1293,3.811,1337,1.784,1361,2.966,1389,4.387,1394,8.689,1395,4.309,1399,4.885,1434,4.309,1435,3.766,1436,7.551,1437,5.417,1438,3.016,1439,5.417,1440,5.417,1441,5.417,1442,3.068,1443,5.417,1444,5.417]],["keywords/110",[]],["title/111",[142,323.625,1445,668.753]],["content/111",[]],["keywords/111",[]],["title/112",[1272,1150.024]],["content/112",[11,4.153,14,8.633,22,3.061,24,1.168,25,1.768,39,2.743,51,2.123,59,2.342,64,1.894,85,2.304,119,3.461,142,4.415,148,1.128,154,1.574,157,3.183,192,3.061,195,2.584,214,1.606,222,1.837,228,5.233,265,2.457,267,1.955,346,2.011,406,3.449,412,5.036,458,5.189,468,1.999,474,3.469,524,5.164,586,3.199,587,3.572,594,5.065,601,2.571,630,7.706,720,6.772,793,2.436,822,2.34,829,2.912,891,2.953,999,2.523,1004,2.547,1042,2.769,1098,7.801,1118,4.593,1178,2.837,1198,3.677,1211,2.769,1308,3.481,1318,2.707,1322,2.478,1337,3.846,1339,2.416,1370,5.39,1371,3.572,1372,3.946,1373,3.946,1374,3.677,1375,3.946,1376,2.769,1377,6.236,1378,7.998,1379,2.912,1380,3.946,1396,6.746,1445,2.15,1446,4.376,1447,4.376,1448,3.677,1449,7.504,1450,9.853,1451,4.376,1452,9.853,1453,7.504,1454,9.853,1455,3.4,1456,3.26,1457,3.799,1458,4.376,1459,4.376,1460,4.376,1461,4.376,1462,4.376,1463,4.376,1464,3.946,1465,3.946,1466,4.376,1467,3.946]],["keywords/112",[]],["title/113",[142,278.011,144,483.846,1468,888.887]],["content/113",[11,2.594,14,12.849,24,1.719,31,3.168,64,2.787,81,4.805,93,7.677,119,2.908,142,4.284,144,4.57,145,3.471,157,4.684,200,5.905,206,4.484,228,6.669,235,6.01,268,5.86,412,3.878,458,5.816,468,5.046,577,6.832,796,4.087,822,5.905,827,9.016,829,7.35,886,11.273,984,7.253,1218,6.553,1246,5.357,1337,5.933,1378,12.338,1401,9.736,1403,5.611,1468,8.395,1469,9.959,1470,8.395,1471,8.893,1472,11.043,1473,11.043,1474,9.959,1475,9.28]],["keywords/113",[]],["title/114",[14,673.09,228,477.086,1337,337.436]],["content/114",[11,1.8,14,7.092,39,3.947,49,5.687,51,5.238,59,3.37,88,7.092,140,6.834,142,3.642,148,2.783,195,2.388,228,6.613,235,4.17,412,3.792,415,8.209,457,7.092,459,5.645,468,4.934,581,6.171,668,8.816,747,7.092,765,9.074,766,10.191,796,3.996,829,7.187,959,6.539,1062,4.17,1069,9.737,1090,7.755,1099,6.68,1107,7.092,1123,8.209,1174,7.002,1190,8.59,1252,8.389,1292,9.074,1337,6.377,1378,10.487,1396,7.393,1403,5.486,1468,8.209,1476,13.262,1477,10.798,1478,9.074,1479,10.798,1480,10.798,1481,10.191,1482,8.59,1483,9.737,1484,7.002,1485,6.407]],["keywords/114",[]],["title/115",[1378,931.952,1445,668.753]],["content/115",[0,0.991,11,2.448,14,5.119,24,1.872,31,4.214,39,4.396,47,4.933,59,2.432,74,2.319,91,3.933,119,4.349,142,4.484,157,5.101,161,5.187,162,6.813,164,8.236,165,8.236,166,9.144,167,12.219,168,9.144,169,9.144,192,3.179,194,3.541,195,1.724,214,2.86,228,4.749,235,3.01,406,6.75,412,4.224,458,4.104,468,3.561,481,3.522,524,3.445,565,5.496,566,3.374,598,6.549,630,3.711,666,7.028,717,5.925,720,4.016,724,5.187,762,5.505,788,3.805,886,7.525,1145,8.006,1246,5.835,1307,4.339,1337,3.96,1378,10.057,1401,4.876,1469,10.847,1486,7.794,1487,7.794,1488,6.363,1489,13.333,1490,7.794,1491,5.598,1492,4.992,1493,6.767,1494,7.794,1495,10.847,1496,6.363,1497,7.794,1498,9.569,1499,9.82,1500,7.794,1501,7.794]],["keywords/115",[]],["title/116",[142,323.625,1179,706.347]],["content/116",[0,2.138,39,4.516,71,7.331,142,2.938,162,9.526,228,3.995,267,5.521,268,6.556,406,5.678,434,9.032,481,5.582,535,8.874,565,5.645,566,5.348,644,8.223,735,7.819,927,11.141,1107,8.115,1119,11.141,1125,6.151,1179,8.729,1185,7.331,1295,8.011,1337,5.538,1403,6.277,1433,9.032,1438,10.646,1445,8.264,1489,13.483,1502,12.355,1503,12.355,1504,7.482,1505,9.392,1506,12.355,1507,12.355,1508,12.355]],["keywords/116",[]],["title/117",[0,95.034,119,196.905,142,177.78,412,262.553,432,341.656,1145,497.664,1445,367.371]],["content/117",[0,2.214,11,2.369,22,4.712,24,2.212,25,4.668,50,3.544,51,3.589,59,4.435,64,4.052,74,3.437,81,3.219,119,3.042,142,2.746,192,3.018,195,2.555,201,2.682,206,3.003,207,4.682,214,2.715,223,2.761,227,4.501,412,5.639,432,7.338,433,6.274,468,5.278,481,3.343,490,4.78,539,11.041,566,3.202,583,4.228,615,6.423,720,3.812,740,5.065,775,5.313,793,4.118,796,2.738,829,4.924,955,4.993,1004,4.306,1042,4.682,1043,9.189,1098,3.566,1118,4.527,1149,6.217,1170,5.624,1185,4.39,1186,7.688,1187,8.606,1217,3.612,1246,5.603,1337,4.679,1378,9.73,1379,7.688,1396,5.065,1445,5.675,1456,5.512,1476,7.909,1478,6.217,1483,6.671,1489,9.333,1509,7.398,1510,7.398,1511,7.398,1512,7.398,1513,6.423,1514,9.189,1515,11.551,1516,8.975,1517,7.398,1518,11.551,1519,14.21,1520,5.885,1521,7.398,1522,6.671,1523,6.671]],["keywords/117",[]],["title/118",[85,716.803,1445,668.753]],["content/118",[0,2.551,2,6.639,11,1.528,47,5.802,49,4.828,59,2.861,74,4.046,85,4.828,119,2.414,142,3.234,145,2.881,192,5.548,195,4.238,196,5.445,205,5.887,227,5.299,284,4.392,491,7.293,529,5.716,566,3.968,568,5.944,583,5.239,587,7.484,591,6.702,673,6.021,708,5.61,723,7.959,756,10.385,803,11.853,809,6.187,1179,4.757,1217,4.475,1218,5.44,1287,6.584,1293,5.768,1318,8.414,1350,5.286,1413,8.267,1438,9.986,1442,5.192,1445,7.966,1524,9.167,1525,9.167,1526,9.167,1527,5.286,1528,13.6,1529,13.6,1530,12.264,1531,9.167,1532,13.6,1533,5.944,1534,9.167]],["keywords/118",[]],["title/119",[59,424.783,1445,668.753]],["content/119",[]],["keywords/119",[]],["title/120",[1272,1150.024]],["content/120",[]],["keywords/120",[]],["title/121",[800,851.536,1070,905.936]],["content/121",[0,1.729,11,1.528,13,6.862,52,6.969,59,7.11,64,3.432,65,5.192,92,5.033,112,4.031,142,3.234,177,2.621,192,3.739,195,2.028,267,4.097,268,4.864,346,4.213,411,6.969,412,7.296,425,7.703,481,4.142,524,4.053,557,6.475,566,3.968,844,6.187,874,5.147,953,6.969,1031,6.277,1196,7.122,1246,6.597,1250,6.102,1294,8.267,1295,5.944,1306,11.429,1307,12.136,1370,6.584,1377,12.126,1435,6.372,1445,4.504,1535,11.429,1536,9.167,1537,9.167,1538,7.293,1539,6.969,1540,9.167,1541,8.267,1542,9.167,1543,9.167,1544,9.167,1545,8.651,1546,6.021]],["keywords/121",[]],["title/122",[800,851.536,1547,1227.403]],["content/122",[59,6.135,92,5.802,412,7.54,525,10.582,567,13.176,1065,12.473,1246,9.535,1306,13.176,1307,10.943,1405,10.985,1548,19.656,1549,14.798,1550,15.679]],["keywords/122",[]],["title/123",[1071,832.963,1551,1227.403]],["content/123",[]],["keywords/123",[]],["title/124",[1438,757.728,1527,784.912]],["content/124",[59,5.551,64,4.488,71,10.554,796,6.582,1285,12.562,1295,11.533,1307,9.901,1438,9.901,1527,12.244]],["keywords/124",[]],["title/125",[0,172.997,74,404.935]],["content/125",[0,2.424,11,4.261,24,1.118,47,4.544,59,6.163,74,3.357,119,1.891,143,3.781,144,2.971,235,2.773,346,5.185,412,2.521,529,2.531,835,8.406,874,6.335,1107,4.715,1246,5.473,1295,4.655,1307,7.76,1433,5.249,1527,4.14,1552,6.775,1553,5.711,1554,7.179]],["keywords/125",[]],["title/126",[92,503.678,529,479.824]],["content/126",[0,2.261,55,10.256,59,5.551,64,4.488,92,6.582,119,4.684,235,6.869,529,6.27,1217,8.682,1307,9.901]],["keywords/126",[]],["title/127",[1179,844.988]],["content/127",[0,2.228,1,5.685,48,9.28,59,5.47,74,3.908,142,3.123,154,4.723,177,5.012,192,5.358,205,5.685,267,7.833,268,6.969,524,5.807,630,6.254,632,9.985,796,4.861,953,13.325,1070,8.742,1118,10.727,1179,10.923,1250,11.666,1307,7.312,1445,8.612,1555,11.845,1556,9.786,1557,10.449]],["keywords/127",[]],["title/128",[142,387.146]],["content/128",[0,2.138,22,5.04,48,7.912,59,5.968,64,4.244,74,3.676,85,6.507,119,4.429,140,7.819,142,4.881,192,5.04,195,2.733,228,3.995,267,8.546,339,4.39,412,4.338,432,5.645,468,5.645,481,5.582,484,9.205,490,5.113,584,4.835,627,9.032,1098,8.108,1145,8.223,1301,13.38,1337,4.068,1445,8.264,1489,8.115,1558,12.355,1559,8.588,1560,11.141]],["keywords/128",[]],["title/129",[0,130.254,192,418.03,195,226.667,1389,500.291]],["content/129",[0,2.935,22,4.217,25,6,59,3.226,64,2.609,68,5.528,74,5.169,111,5.327,119,3.91,120,7.079,142,3.53,195,3.284,214,3.794,235,3.993,339,3.673,412,6.101,482,6.196,502,4.893,509,7.859,510,6.135,622,6.79,720,5.327,796,3.826,848,6.977,946,8.224,950,6.977,962,7.079,1066,7.558,1073,7.079,1098,7.157,1100,7.302,1170,7.859,1246,5.015,1307,5.755,1350,5.962,1386,8.688,1389,9.818,1476,7.079,1482,8.224,1489,6.79,1559,7.187,1561,8.224,1562,7.079,1563,10.338,1564,5.755,1565,10.338]],["keywords/129",[]],["title/130",[1400,1114.875]],["content/130",[47,7.886,59,5.28,64,3.144,92,4.611,111,9.896,119,4.455,194,5.662,195,2.756,235,4.812,267,5.568,268,6.612,412,5.94,434,9.11,478,8.532,481,7.644,491,9.913,566,5.394,577,7.709,720,6.42,745,6.083,796,4.611,1062,4.812,1208,11.237,1258,5.568,1307,6.937,1400,8.532,1445,6.122,1566,8.801,1567,12.46,1568,12.46,1569,12.861,1570,10.471,1571,10.471,1572,12.46,1573,12.46,1574,12.46,1575,12.46,1576,12.46]],["keywords/130",[]],["title/131",[1179,706.347,1445,668.753]],["content/131",[]],["keywords/131",[]],["title/132",[735,648.59,1121,641.144,1179,531.827,1401,641.144]],["content/132",[0,1.008,11,4.158,24,0.727,45,2.578,53,2.991,59,4.943,74,4.712,81,2.032,119,2.089,142,2.899,144,1.933,154,1.679,177,2.269,179,1.714,192,4.974,195,3.687,196,1.87,206,1.896,212,6.865,228,2.565,284,3.801,306,3.715,339,6.392,346,2.146,406,4.753,412,1.64,473,3.479,481,2.11,482,4.755,486,2.6,490,1.933,516,2.517,524,6.039,565,2.134,630,2.224,652,2.441,704,3.715,708,4.855,735,6.546,775,3.354,796,4.512,800,4.963,809,3.152,842,8.273,886,2.922,1050,3.067,1068,6.793,1109,3.813,1110,3.55,1118,4.855,1121,6.471,1134,3.715,1160,4.055,1179,4.117,1295,5.145,1307,2.6,1337,2.612,1350,7.032,1395,3.715,1396,3.198,1401,2.922,1403,2.373,1433,3.414,1438,2.6,1492,2.991,1504,2.828,1577,4.67,1578,7.154,1579,4.67,1580,4.055,1581,4.67,1582,4.67,1583,3.028,1584,3.354,1585,4.67,1586,4.408,1587,4.67,1588,4.67,1589,4.67,1590,4.67,1591,4.67,1592,4.67]],["keywords/132",[]],["title/133",[542,644.229,735,577.275,1121,570.648,1401,570.648,1445,448.158]],["content/133",[0,1.109,1,6.816,22,3.56,26,4.631,49,4.596,60,5.59,68,4.667,71,7.78,142,3.117,154,3.139,162,4.943,177,3.749,212,3.594,228,2.822,267,3.9,284,4.181,339,4.659,406,4.011,516,7.065,535,6.268,565,7.999,566,3.778,755,12.373,761,12.373,787,8.237,796,4.852,842,5.285,955,5.89,1027,5.732,1031,5.976,1062,6.081,1068,5.732,1179,10.228,1196,6.781,1218,10.388,1250,5.809,1281,13.309,1337,4.317,1350,7.561,1401,5.46,1433,6.381,1489,5.732,1504,5.285,1538,6.943,1578,7.87,1593,8.727,1594,8.727,1595,11.823,1596,13.11,1597,12.373,1598,8.727,1599,17.506,1600,8.727,1601,8.727,1602,8.727,1603,8.727,1604,8.237,1605,8.727,1606,7.334,1607,8.727,1608,8.727]],["keywords/133",[]],["title/134",[535,977.584,566,589.167]],["content/134",[0,0.966,1,5.741,11,1.661,22,1.812,24,1.183,26,8.647,27,2.998,31,4.434,39,1.624,42,1.739,47,2.812,50,2.128,52,3.377,55,4.384,59,1.386,60,2.845,64,1.918,74,3.946,81,3.308,91,5.953,119,4.07,137,1.974,142,2.369,145,1.396,148,1.96,153,2.09,157,1.884,177,6.291,192,1.812,193,2.305,195,2.934,203,2.322,206,4.046,214,1.63,223,4.403,228,4.997,235,1.716,265,4.269,339,1.578,340,2.69,363,2.394,406,2.042,412,4.657,423,2.663,432,4.554,468,2.03,478,3.042,486,2.473,490,1.838,505,4.006,524,1.964,565,2.03,583,2.539,601,2.61,622,7.749,630,2.115,637,3.377,652,2.322,677,4.197,792,3.31,793,4.232,796,2.813,808,3.31,827,3.627,830,2.61,842,2.69,850,4.93,859,5.37,864,8.202,955,5.131,984,2.918,1005,3.857,1056,2.289,1062,2.936,1091,3.191,1099,2.748,1111,4.993,1118,2.719,1121,2.779,1123,3.377,1142,3.191,1179,5.172,1186,8.828,1217,5.76,1222,3.534,1246,4.834,1249,3.451,1250,2.957,1298,3.733,1299,3.451,1303,2.539,1324,4.006,1337,4.367,1361,2.432,1438,5.548,1470,5.779,1514,3.534,1523,4.006,1527,2.562,1539,3.377,1555,8.986,1557,3.534,1606,3.733,1609,6.856,1610,3.627,1611,4.442,1612,4.442,1613,4.442,1614,4.442,1615,4.442,1616,4.442,1617,4.811,1618,4.193,1619,4.006,1620,4.006,1621,4.006,1622,4.442,1623,11.799,1624,7.602,1625,4.193,1626,4.442,1627,4.442,1628,3.627,1629,4.442,1630,7.602,1631,7.602,1632,4.442,1633,3.377]],["keywords/134",[]],["title/135",[735,648.59,1179,531.827,1403,520.657,1634,924.145]],["content/135",[0,2.055,9,5.925,64,2.943,74,3.47,91,5.885,92,4.316,140,7.381,175,6.11,192,6.594,206,4.735,284,9.598,406,5.359,412,4.095,468,5.329,482,6.99,524,5.156,735,11.743,800,7.296,1050,7.66,1071,7.137,1082,9.278,1121,7.296,1185,6.92,1217,5.693,1246,5.657,1350,6.725,1401,10.114,1403,11.061,1409,8.866,1432,9.278,1484,7.562,1547,10.517,1634,10.517,1635,11.819,1636,11.662,1637,11.662,1638,11.662,1639,8.237]],["keywords/135",[]],["title/136",[953,1034.731,1250,905.936]],["content/136",[0,1.519,11,1.992,22,4.874,59,6.624,64,3.015,87,6.829,119,4.949,153,5.621,194,5.429,195,2.643,205,5.172,412,4.196,486,6.652,542,8.44,565,5.46,577,7.393,738,8.903,750,9.284,792,8.903,796,4.422,848,8.064,953,14.288,1007,9.756,1030,9.506,1070,7.953,1178,7.749,1179,6.201,1234,9.506,1250,12.509,1290,10.776,1317,10.042,1556,8.903,1557,9.506,1640,11.277,1641,11.949,1642,9.084,1643,11.949,1644,11.949,1645,10.042,1646,11.949]],["keywords/136",[]],["title/137",[11,170.825,496,641.144,616,1059.736]],["content/137",[0,2.801,459,11.519,631,12.132]],["keywords/137",[]],["title/138",[195,301.048,1445,668.753]],["content/138",[]],["keywords/138",[]],["title/139",[1272,1150.024]],["content/139",[0,1.299,1,1.99,11,4.161,18,3.657,20,3.863,24,0.716,49,4.122,53,7.729,64,3.045,92,4.466,119,1.21,142,2.43,143,2.421,177,2.923,192,4.923,195,4.178,206,4.15,214,1.687,265,2.581,269,3.301,297,2.403,339,1.633,406,2.112,457,3.019,458,2.421,484,3.425,486,8.75,490,3.239,524,3.46,529,3.603,542,3.247,556,5.282,642,2.844,643,3.147,652,2.403,669,5.95,673,3.019,720,2.368,800,2.876,803,4.842,812,3.991,891,3.102,915,3.425,932,4.145,973,3.753,1004,2.676,1042,2.909,1062,3.948,1068,6.714,1071,4.79,1073,5.359,1098,3.773,1110,3.494,1118,6.255,1141,2.981,1155,3.361,1185,2.728,1238,6.577,1246,4.958,1247,3.863,1302,8.523,1308,3.657,1323,5.622,1339,2.538,1370,3.301,1376,2.909,1405,2.352,1409,3.494,1432,3.657,1434,3.657,1445,2.258,1455,3.571,1456,3.425,1520,3.657,1539,3.494,1647,7.827,1648,4.596,1649,4.596,1650,4.596,1651,4.596,1652,8.495,1653,7.058,1654,4.989,1655,4.596,1656,7.058,1657,3.863,1658,4.989,1659,4.596,1660,3.863,1661,4.989,1662,4.596,1663,3.494,1664,4.596,1665,3.863,1666,4.596]],["keywords/139",[]],["title/140",[144,563.234,195,301.048]],["content/140",[11,1.691,16,4.592,24,1.579,26,5.382,31,4.202,39,5.353,80,4.635,81,4.414,92,2.324,119,3.36,142,3.822,144,2.599,148,2.614,154,4.588,157,4.302,177,4.188,192,2.562,194,2.854,195,4.415,201,3.677,214,3.723,222,2.638,223,3.785,224,3.009,227,2.447,228,2.031,267,2.807,268,3.333,297,6.669,406,2.887,423,6.08,432,2.87,433,3.412,458,6.719,468,2.87,479,2.678,481,2.838,511,3.691,566,2.719,581,5.797,583,3.59,630,6.974,673,4.126,842,3.804,886,3.93,959,6.142,984,9.619,1121,9.163,1142,4.511,1247,5.278,1252,4.88,1303,3.59,1322,3.558,1337,2.068,1339,7.043,1340,4.511,1401,3.93,1468,4.775,1470,9.699,1583,4.073,1617,6.42,1619,11.505,1620,5.664,1621,5.664,1633,7.711,1667,4.997,1668,5.664,1669,5.664,1670,5.664,1671,9.147,1672,7.051,1673,10.143,1674,10.143,1675,12.758,1676,12.758,1677,12.758,1678,10.143,1679,9.147,1680,8.807,1681,9.147,1682,5.278,1683,6.281,1684,6.281,1685,6.281,1686,6.281,1687,4.997]],["keywords/140",[]],["title/141",[142,278.011,195,258.616,529,412.194]],["content/141",[142,4.446,267,8.356,268,9.922,481,8.449,566,8.094,1688,18.698]],["keywords/141",[]],["title/142",[195,258.616,529,412.194,1179,606.788]],["content/142",[142,3.688,154,5.578,177,5.583,195,3.431,267,6.932,268,8.231,284,7.432,406,7.129,468,7.088,481,8.822,524,6.858,529,5.469,566,8.452,630,7.386,1118,9.493,1179,10.132,1350,8.946,1445,7.622]],["keywords/142",[]],["title/143",[195,201.744,263,607.104,458,480.359,529,321.549,1098,439.69]],["content/143",[]],["keywords/143",[]],["title/144",[195,258.616,745,570.807,1155,854.828]],["content/144",[]],["keywords/144",[]],["title/145",[745,500.291,1014,673.09,1155,749.226,1389,500.291]],["content/145",[49,8.629,85,8.629,144,6.78,177,5.777,195,4.468,267,7.322,673,13.268,715,13.035,888,12.456,950,11.058,1189,9.628,1445,8.05,1689,13.769,1690,16.385]],["keywords/145",[]],["title/146",[119,307.919,142,278.011,1322,662.255]],["content/146",[11,3.811,24,1.732,31,3.192,39,4.067,49,5.86,59,3.473,142,5.348,157,6.636,158,6.884,162,6.303,192,4.539,195,2.461,227,4.336,267,4.973,268,5.905,406,7.19,458,5.86,583,6.359,630,5.298,673,7.309,745,5.432,886,6.962,950,7.51,1301,8.852,1377,9.902,1445,5.467,1489,7.309,1691,15.645,1692,11.128,1693,11.128,1694,10.035,1695,11.128,1696,11.128,1697,11.128,1698,11.128,1699,11.128,1700,11.128,1701,11.128,1702,11.128,1703,11.128]],["keywords/146",[]],["title/147",[145,215.559,177,196.126,195,151.703,201,248.65,206,278.462,1322,388.477,1326,618.51,1328,521.42]],["content/147",[11,4.082,24,1.924,31,4.089,39,2.192,53,3.841,59,3.858,64,3.596,81,2.609,119,2.573,142,4.218,154,4.445,177,4.075,195,3.471,196,4.949,201,5.167,206,5.019,207,3.795,214,2.201,263,3.991,266,4.468,458,5.145,565,5.648,738,4.468,793,3.339,796,2.219,962,4.106,1098,4.709,1149,5.039,1159,3.939,1183,7.427,1186,3.991,1246,2.909,1302,4.236,1317,8.21,1322,5.533,1323,4.307,1328,4.559,1340,4.307,1352,5.039,1470,9.397,1474,5.408,1499,4.896,1520,4.771,1617,3.795,1633,4.559,1668,5.408,1669,8.81,1670,5.408,1671,8.81,1672,6.791,1704,5.408,1705,4.169,1706,12.361,1707,12.361,1708,12.361,1709,9.769,1710,9.769,1711,12.361,1712,12.361,1713,6.257,1714,5.997,1715,5.997,1716,5.997,1717,5.997,1718,5.997,1719,5.997,1720,5.997,1721,5.997,1722,5.408]],["keywords/147",[]],["title/148",[59,284.664,195,201.744,993,860.829,1307,507.784,1723,822.532]],["content/148",[0,1.227,1,6.115,11,1.609,53,6.183,59,5.739,64,5.159,91,4.871,142,2.295,144,3.995,177,2.76,192,5.763,195,4.068,212,3.975,228,3.121,284,4.624,339,3.43,486,5.374,577,10.338,601,9.819,620,5.672,630,7.956,706,6.933,800,6.039,817,5.084,866,11.239,874,5.42,988,6.818,1068,6.34,1073,6.609,1111,6.34,1142,6.933,1179,7.332,1183,7.338,1200,6.933,1295,6.259,1298,11.872,1301,7.679,1307,7.865,1337,3.178,1350,5.567,1369,8.112,1564,5.374,1606,8.112,1633,7.338,1713,6.183,1723,8.705,1724,9.653,1725,9.653,1726,9.653,1727,9.653,1728,9.653,1729,9.653,1730,9.653,1731,9.653,1732,9.653,1733,9.653]],["keywords/148",[]],["title/149",[0,104.448,74,244.482,195,181.759,735,520.09,1107,539.736,1442,465.443]],["content/149",[0,2.346,74,5.492,267,8.25,268,9.796,481,8.342,566,7.991,756,11.824]],["keywords/149",[]],["title/150",[195,301.048,529,479.824]],["content/150",[149,6.356,195,4.844,212,6.748,529,5.776,745,7.999,1277,9.922,1295,10.625,1303,9.363,1442,9.28,1516,12.73,1665,13.769,1734,14.226,1735,16.385,1736,13.035,1737,16.385]],["keywords/150",[]],["title/151",[10,430.893,529,412.194,1394,758.192]],["content/151",[0,1.544,1,5.259,10,8.318,64,3.066,104,9.919,111,8.567,119,3.199,145,3.818,175,4.591,194,5.52,195,4.193,235,4.692,258,7.878,491,9.665,524,5.371,529,6.683,580,11.466,581,6.942,642,7.516,712,12.156,720,6.26,796,6.153,1037,10.209,1066,12.156,1142,8.726,1391,10.955,1394,13.218,1430,10.209,1738,9.867,1739,12.148]],["keywords/151",[]],["title/152",[195,301.048,1740,882.593]],["content/152",[0,2.066,9,3.262,10,4.771,31,1.842,39,2.346,64,1.62,68,6.923,74,4.413,80,4.717,81,2.793,87,3.669,91,3.239,92,5.489,119,4.806,142,1.526,145,3.244,192,4.211,194,5.883,195,3.281,196,2.57,205,4.469,222,2.696,235,2.479,263,4.273,297,3.356,340,6.251,406,2.95,412,2.254,458,3.381,502,6.127,524,4.564,529,5.729,630,7.062,642,3.972,644,4.273,745,3.134,775,4.611,793,3.574,891,6.967,900,4.396,902,4.88,959,3.888,962,4.396,1031,4.396,1088,5.395,1092,3.605,1117,4.463,1141,4.163,1185,3.809,1197,5.395,1217,7.241,1218,3.809,1337,4.884,1359,5.789,1361,5.652,1377,4.063,1401,4.016,1403,7.536,1405,3.284,1442,9.205,1445,5.072,1533,4.163,1645,5.395,1704,5.789,1740,12.7,1741,6.42,1742,5.789,1743,6.42,1744,17.113,1745,8.02,1746,6.42,1747,5.107,1748,4.693,1749,6.42,1750,6.42,1751,10.323,1752,7.176,1753,6.42,1754,6.059,1755,6.42,1756,4.693]],["keywords/152",[]],["title/153",[195,301.048,1277,824.216]],["content/153",[10,4.797,64,3.285,92,4.817,190,7.577,195,3.854,529,4.589,630,6.198,652,6.805,741,9.517,796,6.447,842,7.883,1038,10.356,1270,6.755,1277,7.883,1297,10.356,1302,9.194,1303,7.439,1350,10.047,1403,6.613,1405,6.66,1412,10.939,1530,15.712,1740,8.441,1744,11.739,1752,9.049,1757,13.017,1758,13.017,1759,9.194,1760,10.238,1761,10.356,1762,13.017,1763,13.017,1764,13.017,1765,10.939,1766,13.017]],["keywords/153",[]],["title/154",[195,201.744,735,577.275,1071,558.202,1155,666.846,1516,708.667]],["content/154",[10,3.066,11,4.268,24,0.769,40,4.714,47,3.126,71,2.931,81,2.149,94,2.823,119,2.838,142,1.174,145,2.614,192,3.393,193,4.317,195,3.779,196,1.978,212,2.034,223,1.843,235,1.908,412,1.734,481,2.232,529,2.933,566,2.138,579,3.68,581,2.823,630,2.352,688,3.611,745,6.172,788,2.411,822,2.641,835,9.42,1062,1.908,1217,2.411,1258,2.207,1277,6.526,1295,3.203,1299,3.838,1361,2.705,1394,3.203,1401,3.09,1553,8.573,1740,5.394,1767,8.319,1768,4.939,1769,4.939]],["keywords/154",[]],["title/155",[74,271.363,577,564.298,1442,516.621,1475,766.496,1770,822.532]],["content/155",[40,7.531,64,4.344,74,3.805,92,4.732,192,5.217,212,5.267,284,6.127,432,5.844,516,6.891,529,4.508,577,7.912,584,5.005,601,10.117,738,9.528,745,6.243,796,4.732,891,8.631,1062,4.939,1076,10.174,1102,11.104,1111,8.4,1132,9.722,1217,6.243,1261,11.533,1277,10.426,1295,8.293,1395,10.174,1403,6.497,1445,6.284,1475,10.747,1539,9.722,1682,10.747,1770,11.533,1771,13.88,1772,13.88,1773,12.788,1774,12.788,1775,12.788]],["keywords/155",[]],["title/156",[194,465.643,195,226.667,196,410.291,1318,634.01]],["content/156",[88,10.884,195,4.499,196,6.635,201,6.008,412,5.819,478,11.347,516,8.93,1062,6.4,1099,10.252,1178,10.746,1190,13.183,1318,10.252,1776,16.571,1777,12.115,1778,16.571]],["keywords/156",[]],["title/157",[64,207.363,144,340.055,195,277.067,196,329.003,1318,508.398]],["content/157",[11,3.738,24,1.777,31,4.037,39,5.821,53,4.667,64,2.881,80,3.33,81,3.171,112,3.204,119,3.706,148,1.878,154,2.62,191,4.127,195,2.525,196,6.924,199,4.725,200,8.516,201,6.27,203,5.967,205,6.894,206,7.785,207,4.612,297,3.809,363,3.927,366,4.667,502,3.449,556,4.918,623,4.918,754,6.327,756,4.667,903,9.636,1062,2.814,1092,4.091,1139,6.123,1270,5.924,1318,4.508,1320,9.081,1323,5.234,1334,6.571,1341,8.678,1342,6.571,1343,6.571,1344,6.571,1345,6.571,1346,6.571,1347,6.571,1348,6.571,1349,6.571,1350,4.202,1351,6.571,1352,6.123,1353,6.571,1354,6.571,1355,6.571,1356,6.571,1357,6.571,1369,6.123,1405,3.728,1430,6.123,1438,4.057,1499,5.949,1538,5.797,1663,8.678,1779,5.949,1780,4.508,1781,7.287,1782,9.081,1783,7.287,1784,11.415,1785,5.429,1786,7.287,1787,7.287,1788,7.287,1789,7.287,1790,6.571]],["keywords/157",[]],["title/158",[74,244.482,195,181.759,196,329.003,1185,487.635,1318,508.398,1653,741.051]],["content/158",[0,1.449,10,1.096,11,4.251,24,1.383,31,0.853,43,1.274,52,2.26,74,3.393,80,2.442,81,1.294,85,1.566,119,0.783,143,1.566,144,1.23,145,0.934,177,0.85,179,1.091,192,1.213,195,3.631,196,7.673,201,2.638,206,2.954,211,1.84,222,1.249,223,1.11,235,1.148,237,2.31,263,1.979,267,1.329,269,2.136,297,2.793,341,1.764,412,1.044,458,1.566,524,1.314,529,1.048,535,2.136,632,2.26,644,1.979,688,3.907,706,2.136,720,1.532,745,3.552,752,4.363,788,1.452,793,1.655,796,1.1,835,10.476,886,1.86,946,2.365,1014,1.953,1027,1.953,1062,1.148,1101,2.428,1107,3.51,1117,3.715,1141,3.465,1155,2.174,1171,2.365,1185,9.116,1201,2.681,1242,2.036,1258,1.329,1277,1.801,1279,2.499,1318,4.502,1320,2.365,1323,2.136,1341,2.26,1361,1.628,1394,1.928,1431,2.681,1470,2.26,1504,1.801,1516,2.31,1553,2.365,1561,2.365,1660,2.499,1705,2.067,1740,1.928,1748,2.174,1791,2.973,1792,3.236,1793,2.973,1794,2.973,1795,2.973,1796,2.973,1797,2.973,1798,8.884,1799,2.973,1800,2.973,1801,2.973,1802,2.973,1803,2.973,1804,2.582,1805,2.973]],["keywords/158",[]],["title/159",[0,148.613,74,347.86,1445,574.493]],["content/159",[]],["keywords/159",[]],["title/160",[756,871.762,1272,961.334]],["content/160",[0,2.251,2,4.36,10,5.454,11,4.173,24,0.837,42,2.104,49,2.832,51,2.608,59,2.787,60,3.444,64,2.254,74,3.408,81,2.34,91,4.506,119,2.352,137,2.39,140,3.403,192,5.441,195,1.189,205,2.328,212,2.214,228,3.704,277,8.054,346,4.104,412,4.022,458,2.832,468,2.457,524,3.948,529,1.896,556,3.629,576,4.39,581,6.546,616,3.862,637,4.088,642,3.327,704,4.278,756,3.444,800,3.364,814,3.046,830,3.16,1062,2.077,1070,7.624,1105,4.278,1107,3.532,1122,3.682,1179,4.635,1238,4.519,1285,6.308,1293,4.858,1328,4.088,1337,1.771,1340,3.862,1385,6.027,1394,9.596,1402,7.505,1409,4.088,1432,4.278,1434,4.278,1438,4.972,1504,5.408,1505,4.088,1514,4.278,1561,4.278,1806,5.377,1807,5.377,1808,5.377,1809,5.377,1810,5.377,1811,5.377,1812,5.377,1813,5.377,1814,5.377,1815,5.377,1816,5.836,1817,5.377,1818,5.377,1819,5.377,1820,5.836,1821,5.377,1822,5.377,1823,5.377]],["keywords/160",[]],["title/161",[0,148.613,74,347.86,144,483.846]],["content/161",[0,1.981,11,4.113,24,1.091,47,4.434,59,2.187,74,4.637,81,5.97,85,3.69,111,5.703,119,2.915,143,9.949,144,7.023,145,2.202,149,2.718,175,2.648,192,2.858,200,3.746,206,2.845,223,4.13,267,3.131,268,3.718,339,3.933,351,4.488,363,3.776,412,2.46,458,3.69,481,3.166,529,3.902,566,4.791,631,4.488,652,3.663,717,5.326,720,3.61,734,4.434,803,4.335,835,5.22,872,4.335,874,6.215,900,4.797,914,6.318,921,5.122,1021,5.122,1042,4.434,1062,2.706,1071,6.774,1099,4.335,1107,4.602,1159,4.602,1185,4.158,1279,5.888,1283,6.318,1293,2.972,1386,5.888,1389,5.403,1402,5.888,1435,7.694,1467,6.318,1468,8.414,1571,5.888,1609,6.318,1760,4.117,1824,7.006,1825,5.326,1826,6.318,1827,6.318,1828,9.301]],["keywords/161",[]],["title/162",[657,1150.024]],["content/162",[0,1.054,10,3.961,11,4.279,24,0.766,64,1.242,68,2.632,74,3.198,81,5.49,130,2.224,143,5.661,144,2.037,502,2.33,529,1.735,630,2.344,657,3.477,706,3.536,745,4.049,833,4.019,915,3.668,999,2.839,1004,2.865,1042,3.116,1171,3.916,1217,4.049,1277,2.981,1293,2.088,1389,2.403,1435,5.766,1442,4.698,1740,3.192,1752,3.422,1760,2.893,1792,5.023,1827,4.439,1829,4.923,1830,4.923,1831,4.923,1832,4.274,1833,4.923,1834,4.646,1835,4.923,1836,4.923]],["keywords/162",[]],["title/163",[0,148.613,74,347.86,1071,715.558]],["content/163",[0,0.96,10,2.783,11,4.279,24,1.175,59,2.357,74,3.492,142,1.795,195,1.67,339,4.171,351,4.836,746,5.096,1307,4.204,1394,4.897,1417,6.346,1504,4.573,1527,4.355,1553,15.982]],["keywords/163",[]],["title/164",[195,301.048,529,479.824]],["content/164",[1258,8.929]],["keywords/164",[]],["title/165",[59,364.91,529,412.194,1307,650.927]],["content/165",[1258,8.929]],["keywords/165",[]],["title/166",[142,323.625,529,479.824]],["content/166",[1258,8.929]],["keywords/166",[]],["title/167",[339,483.63,1504,824.216]],["content/167",[1258,8.929]],["keywords/167",[]],["title/168",[74,347.86,339,415.463,529,412.194]],["content/168",[1258,8.929]],["keywords/168",[]],["title/169",[10,430.893,529,412.194,1394,758.192]],["content/169",[1258,8.929]],["keywords/169",[]],["title/170",[351,871.762,529,479.824]],["content/170",[1258,8.929]],["keywords/170",[]],["title/171",[529,412.194,746,789.1,1417,982.569]],["content/171",[1258,8.929]],["keywords/171",[]],["title/172",[529,479.824,1527,784.912]],["content/172",[1258,8.929]],["keywords/172",[]],["title/173",[0,115.932,616,655.118,1505,693.415,1561,725.616,1837,912.103]],["content/173",[0,2.059,74,4.82,192,6.609,496,10.137,529,7.073,571,12.589,616,11.637,631,10.378,1062,6.258,1071,9.916,1179,10.412,1185,9.615,1258,7.241,1433,11.846,1505,12.318,1838,14.611]],["keywords/173",[]],["title/174",[1400,931.952,1445,668.753]],["content/174",[]],["keywords/174",[]],["title/175",[1066,854.828,1070,778.245,1185,693.83]],["content/175",[148,3.915,192,6.196,412,5.334,468,6.941,481,6.863,566,6.575,817,7.999,1014,9.976,1066,15.47,1070,10.11,1217,7.415,1258,6.788,1270,7.882,1337,5.001,1421,13.697,1422,13.697,1438,8.456,1504,9.198,1839,14.335,1840,15.189,1841,15.189,1842,12.401]],["keywords/175",[]],["title/176",[195,258.616,223,436.319,652,611.228]],["content/176",[]],["keywords/176",[]],["title/177",[1843,1628.212]],["content/177",[0,2.188,67,6.946,74,3.805,192,5.217,194,5.811,195,4.605,206,6.99,221,9.382,222,5.37,223,4.772,297,6.685,478,8.757,502,6.052,524,5.654,529,4.508,630,9.914,642,7.912,652,6.685,803,7.912,822,9.206,1071,7.826,1074,10.117,1082,10.174,1117,8.89,1187,9.528,1210,9.722,1211,8.094,1262,10.747,1478,10.747,1844,8.757]],["keywords/177",[]],["title/178",[657,1150.024]],["content/178",[0,1.425,22,4.574,24,1.746,31,5.65,38,5.372,67,6.091,92,5.821,137,6.991,154,4.032,192,4.574,198,7.27,213,5.905,214,4.115,215,5.737,216,6.408,219,5.51,220,6.191,221,5.405,222,8.271,223,7.35,224,5.372,225,8.411,227,4.369,228,3.626,229,6.527,230,5.819,231,5.862,245,6.79,246,6.937,247,6.79,486,6.243,524,4.957,542,7.92,556,7.568,581,6.408,657,7.92,1098,5.405,1217,5.474,1740,7.271,1845,11.213,1846,10.112,1847,11.213,1848,10.112,1849,14.185]],["keywords/178",[]],["title/179",[223,507.909,1098,656.116]],["content/179",[22,6.382,31,3.192,49,5.86,67,6.044,119,2.93,154,4.002,157,4.72,194,5.056,203,5.817,213,8.239,219,5.467,221,8.722,222,4.673,223,4.152,228,5.059,486,10.073,524,6.916,631,7.127,649,12.155,816,8.852,822,8.365,1056,8.061,1074,9.194,1098,5.364,1121,6.962,1222,8.852,1292,9.351,1322,10.248,1392,12.211,1405,5.693,1471,6.359,1657,9.351,1760,6.539,1780,6.884,1846,10.035,1850,10.043,1851,11.128,1852,10.035,1853,10.035,1854,11.128]],["keywords/179",[]],["title/180",[223,507.909,1740,882.593]],["content/180",[0,1.978,1,4.78,9,5.611,22,4.505,38,7.455,49,5.816,64,2.787,74,3.286,92,4.087,119,2.908,144,4.57,154,5.596,194,7.071,412,3.878,474,5.104,476,10.422,524,6.88,529,3.893,631,7.073,649,14,1056,8.018,1158,8.228,1217,8.797,1265,11.377,1322,8.814,1361,8.521,1376,6.989,1471,6.311,1628,9.016,1740,11.684,1760,6.49,1850,10.552,1855,11.043,1856,11.043,1857,5.816,1858,9.28,1859,11.043,1860,11.043,1861,9.28,1862,11.043,1863,11.043]],["keywords/180",[]],["title/181",[223,507.909,486,757.728]],["content/181",[24,1.576,31,5.395,49,5.331,50,4.849,64,2.554,92,6.959,119,2.666,137,6.5,142,2.407,154,3.64,195,4.16,203,5.292,213,5.331,219,4.974,222,6.141,224,4.849,225,7.819,227,3.944,228,4.729,432,4.625,477,8.789,486,11.572,524,4.475,567,8.506,631,6.483,649,14.611,745,4.942,850,6.564,1056,7.535,1098,4.88,1270,5.253,1322,8.283,1337,3.333,1471,5.785,1485,6.007,1657,8.506,1760,5.948,1780,6.262,1848,9.128,1849,13.188,1850,9.621,1853,9.128,1864,7.401,1865,10.122,1866,10.122]],["keywords/181",[]],["title/182",[1445,800.015]],["content/182",[0,2.408,51,9.188,481,8.559,1760,11.131,1867,18.941]],["keywords/182",[]],["title/183",[0,172.997,1246,660.251]],["content/183",[]],["keywords/183",[]],["title/184",[1868,1237.828]],["content/184",[0,2.3,2,5.432,64,2.808,68,5.95,92,4.118,142,2.646,194,7.109,205,4.817,339,3.954,502,5.266,507,8.29,559,5.775,584,4.355,636,7.51,683,9.662,713,9.085,950,7.51,1062,4.298,1086,7.216,1122,7.619,1145,7.407,1152,9.662,1210,8.46,1215,14.108,1218,12.729,1288,10.035,1293,4.72,1392,7.51,1394,11.733,1403,7.949,1437,11.128,1465,10.035,1667,8.852,1742,10.035,1756,8.135,1869,10.035,1870,9.662,1871,11.128,1872,11.128,1873,10.035,1874,11.128,1875,7.992,1876,11.128,1877,11.128,1878,11.128,1879,8.135,1880,11.128]],["keywords/184",[]],["title/185",[205,704.809]],["content/185",[]],["keywords/185",[]],["title/186",[1218,693.83,1293,495.909,1869,1054.402]],["content/186",[0,2.257,2,3.764,40,3.373,57,5.745,64,3.01,68,6.379,74,5.283,81,7.145,91,6.019,92,2.854,93,5.36,119,4.324,130,3.484,142,1.833,148,3.075,227,4.648,346,3.544,412,2.708,432,3.524,468,3.524,479,6.219,486,4.293,502,6.905,524,5.274,565,3.524,620,4.531,741,5.638,745,3.764,750,5.991,759,7.278,839,5.204,842,4.67,844,8.051,872,4.771,880,4.222,950,5.204,995,8.722,999,6.879,1022,11.415,1062,2.978,1064,9.711,1070,5.133,1087,5.204,1092,9.971,1098,3.717,1104,7.835,1116,6.695,1174,5,1182,5.991,1206,6.954,1218,4.576,1268,7.641,1291,6.48,1293,5.06,1299,5.991,1303,4.407,1403,6.061,1405,6.103,1635,5.638,1642,9.069,1667,6.134,1713,4.939,1756,8.722,1881,6.954,1882,7.711,1883,9.49,1884,7.711,1885,6.954,1886,6.695,1887,7.711,1888,7.711,1889,7.278,1890,6.695]],["keywords/186",[]],["title/187",[1293,577.275,1891,1143.784]],["content/187",[0,2.677,10,7.76,64,3.793,91,7.585,341,8.92,412,5.279,529,5.299,778,11.679,796,5.563,848,12.917,1200,10.797,1268,9.628,1293,9.71,1405,7.691,1551,13.556,1879,10.99]],["keywords/187",[]],["title/188",[803,1007.339]],["content/188",[]],["keywords/188",[]],["title/189",[1246,789.845]],["content/189",[0,2.498,11,3.752,64,3.957,74,4.665,119,4.129,458,8.257,741,11.463,1022,10.9,1117,13.664,1217,7.654,1246,7.606,1337,5.163,1442,8.881,1448,13.176,1892,14.139,1893,15.679]],["keywords/189",[]],["title/190",[1246,660.251,1337,448.166]],["content/190",[0,2.474,10,7.673,64,4.344,74,5.122,91,6.453,92,4.732,119,3.368,142,3.041,194,5.811,412,6.046,502,6.052,529,4.508,586,9.35,632,9.722,734,8.094,796,4.732,848,8.631,999,7.375,1022,8.89,1031,8.757,1092,7.181,1104,8.4,1217,6.243,1293,5.424,1337,5.669,1403,8.747,1538,10.174,1541,11.533,1713,8.191,1752,8.89,1756,9.35,1873,11.533]],["keywords/190",[]],["title/191",[9,691.511,1246,660.251]],["content/191",[0,2.505,68,10.539]],["keywords/191",[]],["title/192",[1246,660.251,1892,1227.403]],["content/192",[1258,8.929]],["keywords/192",[]],["title/193",[1246,660.251,1894,1361.063]],["content/193",[1258,8.929]],["keywords/193",[]],["title/194",[1246,660.251,1448,1143.784]],["content/194",[1258,8.929]],["keywords/194",[]],["title/195",[10,336.137,74,271.363,803,564.298,1135,708.667,1875,655.118]],["content/195",[]],["keywords/195",[]],["title/196",[49,615.771,94,668.175,657,825.835]],["content/196",[]],["keywords/196",[]],["title/197",[1868,1237.828]],["content/197",[0,2.593,40,4.195,59,2.993,68,5.127,74,6.069,81,7.977,91,4.839,130,7.521,193,4.976,221,4.623,339,5.915,412,3.367,459,5.013,479,5.993,502,7.878,542,6.773,822,5.127,839,6.472,880,5.251,999,5.53,1004,5.582,1062,5.43,1074,5.635,1092,9.346,1135,14.243,1151,12.679,1182,10.924,1270,4.976,1277,5.807,1293,8.278,1403,4.872,1412,8.058,1635,7.011,1642,10.688,1663,7.29,1689,8.058,1756,10.279,1875,11.956,1895,8.648,1896,9.589,1897,6.773,1898,9.589,1899,9.589,1900,9.589]],["keywords/197",[]],["title/198",[205,704.809]],["content/198",[]],["keywords/198",[]],["title/199",[10,430.893,1527,674.28,1879,854.828]],["content/199",[0,1.989,10,5.766,68,5.95,74,4.655,85,5.86,103,9.085,119,2.93,130,5.028,145,3.497,203,5.817,524,4.919,642,9.679,717,8.46,778,8.646,808,8.29,880,8.567,887,9.662,999,6.417,1031,7.619,1062,8.284,1092,8.784,1098,5.364,1179,5.775,1227,10.035,1270,5.775,1275,9.351,1328,8.46,1438,8.71,1527,11.32,1533,10.145,1562,7.619,1861,9.351,1879,11.438,1901,10.035,1902,11.128,1903,9.662,1904,9.662,1905,11.128,1906,11.128,1907,11.128,1908,11.128,1909,11.128]],["keywords/199",[]],["title/200",[1293,577.275,1891,1143.784]],["content/200",[113,8.446,115,8.754,120,9.243,148,3.48,214,4.954,482,12.753,502,6.389,637,10.263,796,4.996,880,12.116,905,6.859,999,7.785,1027,11.724,1145,11.881,1293,9.025,1438,9.937,1527,10.294,1546,8.867,1566,9.535,1879,9.87,1891,11.344,1897,9.535]],["keywords/200",[]],["title/201",[10,501.592,1759,961.334]],["content/201",[0,1.584,10,7.938,60,7.981,68,6.663,74,5.033,130,5.63,148,3.212,194,5.662,214,4.573,487,10.173,510,7.394,529,4.393,572,9.681,644,8.294,706,8.95,775,8.95,880,11.28,991,11.237,996,13.144,1293,7.175,1330,9.913,1405,8.655,1566,8.801,1759,14.551,1897,8.801,1910,12.46,1911,12.46,1912,12.46,1913,12.46,1914,11.237,1915,12.46]],["keywords/201",[]],["title/202",[1291,1368.285]],["content/202",[10,6.107,192,6.76,891,11.184,999,9.556,1092,9.304,1098,7.988,1104,10.884,1285,11.704,1293,7.028,1445,8.142,1533,10.746,1566,11.704,1916,16.571,1917,13.529,1918,14.944,1919,14.944]],["keywords/202",[]],["title/203",[1216,1468.317]],["content/203",[0,1.748,10,5.069,40,6.016,74,6.004,130,6.215,205,5.954,481,8.165,502,6.51,667,12.981,796,5.09,1092,10.147,1293,5.834,1330,10.942,1403,9.181,1533,11.718,1562,9.418,1566,9.715,1875,9.879,1886,11.943,1920,18.071,1921,13.754,1922,12.404,1923,11.943,1924,12.404,1925,12.404,1926,13.754,1927,13.754]],["keywords/203",[]],["title/204",[803,842.06,1403,691.511]],["content/204",[]],["keywords/204",[]],["title/205",[803,842.06,1928,1361.063]],["content/205",[0,2.651,10,7.686,74,5.62,94,8.417,130,8.536,479,6.278,502,6.97,644,9.803,796,5.45,803,9.112,1004,8.573,1101,12.025,1262,12.377,1268,12.1,1293,6.247,1403,7.483,1442,10.7,1566,10.403,1929,14.728]],["keywords/205",[]],["title/206",[1930,1628.212]],["content/206",[0,1.993,10,5.778,74,5.848,112,6.895,120,10.736,643,10.736,788,7.654,880,10.763,999,9.042,1092,8.804,1442,8.881,1533,10.167,1564,8.729,1858,13.176,1931,13.176,1932,13.176,1933,15.679,1934,15.679,1935,15.679]],["keywords/206",[]],["title/207",[1936,1468.317]],["content/207",[0,2.066,10,7.409,50,5.632,64,2.967,68,6.286,74,4.836,119,3.096,145,3.695,529,6.569,579,8.759,643,8.05,720,6.057,747,7.722,778,9.134,809,7.934,999,6.78,1004,6.843,1092,9.128,1098,5.667,1293,8.526,1405,8.317,1442,9.207,1527,9.375,1533,10.541,1564,6.545,1705,8.173,1931,9.879,1932,9.879,1936,10.602,1937,10.602,1938,11.756,1939,9.353,1940,10.602,1941,9.879,1942,11.756,1943,11.756,1944,11.756]],["keywords/207",[]],["title/208",[1945,1468.317]],["content/208",[0,2.773,10,6.254,13,5.003,64,2.502,74,5.541,113,6.204,119,2.611,120,6.789,482,8.635,510,5.884,529,5.982,572,7.704,579,7.388,643,6.789,724,6.6,747,9.463,780,8.609,809,6.692,880,10.833,962,6.789,1004,5.772,1092,5.568,1098,4.78,1405,5.073,1442,8.16,1527,9.786,1533,9.342,1546,6.513,1564,5.52,1705,6.893,1792,11.279,1879,7.249,1897,13.155,1931,8.333,1932,8.333,1937,8.942,1939,11.461,1940,8.942,1941,14.26,1945,8.942,1946,8.333,1947,9.916]],["keywords/208",[]],["title/209",[1948,1628.212]],["content/209",[0,2.904,13,5.98,31,4.69,74,6.002,113,11.708,120,12.813,130,7.386,203,6.196,482,7.104,516,8.809,1270,6.151,1438,6.598,1527,9.427,1861,9.96,1897,14.248,1949,11.852,1950,11.852,1951,11.852,1952,11.852,1953,11.852,1954,11.852,1955,11.852,1956,11.852,1957,11.852,1958,16.347,1959,11.852,1960,11.852,1961,14.742]],["keywords/209",[]],["title/210",[1251,812.808,1962,1103.495,1963,1103.495]],["content/210",[1,6.44,10,5.483,48,6.999,142,3.538,190,8.66,288,9.105,297,7.778,549,8.503,644,9.903,718,10.188,745,7.264,990,9.648,1178,9.648,1251,13.218,1293,6.31,1527,10.966,1689,15.979,1964,14.878,1965,14.878,1966,14.878,1967,13.417,1968,13.417,1969,14.878]],["keywords/210",[]],["title/211",[10,501.592,1277,824.216]],["content/211",[0,2.781,10,7.498,48,5.328,64,3.528,74,6.194,92,5.174,193,3.744,227,2.811,415,5.485,477,6.264,482,4.324,496,4.514,506,6.264,516,6.104,542,5.096,586,5.275,640,5.89,641,4.94,724,4.802,731,14.95,738,5.375,750,5.605,757,5.89,764,6.063,796,2.67,880,11.14,935,6.506,990,4.678,996,10.864,1007,5.89,1050,7.439,1062,4.374,1135,5.605,1234,5.739,1252,5.605,1260,6.506,1277,10.423,1293,6.718,1405,5.795,1442,7.92,1527,4.161,1539,5.485,1679,6.506,1734,6.264,1748,5.275,1838,6.506,1897,12.157,1922,10.214,1924,10.214,1941,6.063,1946,6.063,1961,15.522,1970,11.326,1971,6.264,1972,7.215,1973,11.326,1974,7.215,1975,7.215]],["keywords/211",[]],["title/212",[1092,575.406,1098,494.008,1533,664.528,1939,815.256]],["content/212",[0,2.553,2,6.652,10,6.619,74,5.977,119,4.73,297,10.502,556,9.196,584,5.333,586,9.962,642,8.43,871,9.624,1010,12.86,1037,11.451,1086,8.836,1092,10.084,1132,10.359,1187,10.152,1533,11.646,1713,8.727,1918,12.288,1939,14.288,1976,13.626,1977,13.626,1978,12.288]],["keywords/212",[]],["title/213",[85,615.771,130,528.316,865,930.165]],["content/213",[10,7.147,59,4.79,74,6.326,85,8.083,96,12.531,107,6.51,145,4.824,179,5.633,193,7.965,412,6.81,729,11.435,796,5.68,865,12.211,943,12.898,1199,11.435,1297,12.211,1371,12.531,1713,9.831,1979,13.841]],["keywords/213",[]],["title/214",[85,539.701,112,450.637,193,531.827,1759,723.814]],["content/214",[11,3.001,59,5.619,112,7.917,1268,11.532,1759,12.717,1980,18.005,1981,18.005,1982,18.005,1983,18.005]],["keywords/214",[]],["title/215",[85,539.701,193,531.827,1759,723.814,1914,924.145]],["content/215",[0,2.261,10,6.554,74,5.291,85,9.366,288,10.884,1014,11.681,1293,7.543,1759,12.562,1979,16.038,1984,17.785]],["keywords/215",[]],["title/216",[0,172.997,584,532.699]],["content/216",[]],["keywords/216",[]],["title/217",[3,1131.882]],["content/217",[11,3.592,779,10.236,1337,6.003,1985,14.164,1986,16.44,1987,15.32,1988,15.829]],["keywords/217",[]],["title/218",[13,686.774,1989,1143.784]],["content/218",[]],["keywords/218",[]],["title/219",[0,115.932,228,294.93,584,356.983,1337,300.334,1396,624.539]],["content/219",[0,2.368,24,2.901,39,4.297,71,6.976,74,3.498,85,6.191,111,6.057,228,7.057,265,6.601,432,7.428,433,6.386,502,5.564,559,6.101,578,9.05,584,6.362,677,6.49,771,9.134,796,6.016,830,6.909,1068,7.722,1086,7.623,1125,5.853,1217,5.739,1337,6.135,1482,9.353,1504,7.119,1844,8.05,1904,10.208,1990,11.756,1991,11.756,1992,11.756,1993,8.05,1994,8.595,1995,13.661,1996,10.602,1997,10.602]],["keywords/219",[]],["title/220",[48,550.043,559,606.788,562,871.116]],["content/220",[24,2.911,1844,12.803,1993,12.803,1998,18.698,1999,16.235,2000,18.698]],["keywords/220",[]],["title/221",[11,114.33,177,196.126,297,358.545,356,363.939,584,268.437,1136,576.373,2001,476.792,2002,510.995]],["content/221",[11,3.318,22,7.237,24,2.082,48,6.292,148,3.448,406,6.147,511,7.86,717,10.169,1125,6.659,1136,17.816,1275,11.24,1471,7.644,1484,8.673,1535,11.24,1748,9.779,1844,9.159,1993,12.148,1994,9.779,2002,16.893,2003,13.376,2004,13.376,2005,13.376,2006,19.906]],["keywords/221",[]],["title/222",[0,172.997,406,625.496]],["content/222",[]],["keywords/222",[]],["title/223",[9,827.241]],["content/223",[9,8.927,11,2.929,22,7.167,151,7.52,779,9.866,2007,19.07,2008,15.256,2009,17.57,2010,19.07,2011,19.07]],["keywords/223",[]],["title/224",[1361,891.545]],["content/224",[11,3.987,22,6.684,151,5.845,1361,8.972,2008,14.226,2012,16.385,2013,16.385,2014,16.385,2015,16.385,2016,16.385,2017,16.385,2018,16.385]],["keywords/224",[]],["title/225",[900,1114.875]],["content/225",[11,3.039,22,7.436,151,7.686,1985,14.164,2019,19.786,2020,18.23,2021,18.23]],["keywords/225",[]],["title/226",[2002,1213.081]],["content/226",[11,3.864,779,10.499,1987,15.713,1988,16.235]],["keywords/226",[]],["title/227",[1337,536.132]],["content/227",[779,11.219]],["keywords/227",[]],["title/228",[5,975.916]],["content/228",[22,8.04,363,10.621]],["keywords/228",[]],["title/229",[2022,1767.171]],["content/229",[449,18.602,779,11.067]],["keywords/229",[]],["title/230",[655,1213.081]],["content/230",[11,3.001,22,7.345,46,11.139,151,6.423,655,13.414,779,10.11,2023,19.541,2024,19.541,2025,19.541]],["keywords/230",[]],["title/231",[214,597.571]],["content/231",[11,2.929,22,7.167,46,10.87,151,6.268,214,6.449,779,9.866,2008,15.256,2026,19.07,2027,17.57,2028,19.07,2029,19.07]],["keywords/231",[]],["title/232",[479,580.19,497,871.762]],["content/232",[]],["keywords/232",[]],["title/233",[2030,1468.317]],["content/233",[0,2.317,501,11.676,817,9.601,1014,11.974,1105,14.503,1564,10.149,1804,15.829,2030,16.44]],["keywords/233",[]],["title/234",[74,404.935,479,580.19]],["content/234",[]],["keywords/234",[]],["title/235",[3,1131.882]],["content/235",[11,3.592,779,10.236,1337,6.003,1985,14.164,1986,16.44,1987,15.32,1988,15.829]],["keywords/235",[]],["title/236",[474,473.67,850,664.528,905,520.657,908,861.186]],["content/236",[0,1.584,1,5.394,11,3.434,22,6.901,25,5.035,48,5.862,129,7.186,200,6.663,235,4.812,474,5.759,511,7.322,565,5.694,743,10.173,788,6.083,902,12.861,905,6.331,906,11.237,907,11.237,908,18.667,1087,11.417,1100,8.801,1168,8.662,1303,7.121,1514,13.458,1564,6.937,1925,11.237,2031,12.46,2032,12.46,2033,12.46,2034,12.46,2035,12.46,2036,12.46,2037,10.819]],["keywords/236",[]],["title/237",[43,697.602]],["content/237",[43,9.902,119,4.085,148,3.998,706,11.142,747,10.189,788,7.573,1140,9.818,1405,7.936,1705,13.573,2038,15.17,2039,15.512,2040,15.512,2041,14.64,2042,15.512,2043,15.512,2044,15.512]],["keywords/237",[]],["title/238",[356,722.218,584,532.699]],["content/238",[0,2.132,1,4.206,2,6.931,5,5.824,9,4.937,10,3.581,11,2.796,12,13.242,24,2.611,25,5.737,54,5.71,64,2.452,68,5.196,74,5.489,105,7.104,107,6.021,119,3.739,145,3.054,157,6.021,228,5.424,235,7.125,266,7.24,433,5.278,479,4.142,565,4.44,578,5.41,581,5.553,583,5.553,584,7.22,1100,6.863,1125,4.838,1199,7.24,1337,6.748,1635,10.379,1745,7.55,1993,6.654,1994,7.104,1995,8.166,1996,8.763,2045,9.171,2046,11.294,2047,8.166,2048,7.73]],["keywords/238",[]],["title/239",[130,614.999,479,580.19]],["content/239",[0,2.138,1,5.348,2,8.211,13,6.234,24,2.618,25,6.797,29,6.998,43,5.293,51,5.993,64,4.244,74,3.676,130,7.6,131,12.531,149,4.793,406,5.678,432,5.645,433,6.711,490,5.113,516,6.658,677,6.821,678,10.727,720,6.366,1236,10.727,1385,8.338,1546,8.115,2049,12.355,2050,13.409,2051,12.355,2052,12.355,2053,16.819,2054,9.829,2055,16.819,2056,12.355,2057,12.355,2058,10.382,2059,8.726,2060,12.355]],["keywords/239",[]],["title/240",[71,807.671,479,580.19]],["content/240",[0,1.57,2,6.031,5,10.081,10,4.553,11,3.188,12,13.436,24,2.618,30,9.599,55,7.125,64,3.118,157,7.134,228,5.438,235,4.772,474,5.71,578,6.878,584,7.484,1100,8.726,1199,9.205,1337,7.296,1635,12.297,1883,9.829,1995,10.382,1997,11.141,2046,13.38,2047,10.382,2048,9.829,2061,12.355]],["keywords/240",[]],["title/241",[68,727.764,479,580.19]],["content/241",[48,8.576,267,8.147,479,7.771,496,11.405,497,11.676,566,7.891,817,9.601,2062,14.884]],["keywords/241",[]],["title/242",[0,148.613,479,498.413,707,812.808]],["content/242",[0,2.255,119,3.523,137,5.945,153,6.292,188,6.448,193,6.941,235,5.166,511,7.86,549,7.644,565,6.112,652,9.274,707,15.336,830,7.86,859,9.447,903,9.159,917,8.275,918,12.062,955,9.027,1020,9.298,1086,8.673,1438,7.446,1713,8.567,2063,17.741,2064,12.062,2065,13.376,2066,13.376,2067,13.376,2068,13.376,2069,13.376,2070,13.376]],["keywords/242",[]],["title/243",[235,451.574,788,570.807,917,723.372]],["content/243",[235,6.786,432,8.029,433,9.544,565,8.029,707,12.214,788,10.29,793,9.782,917,10.87,1857,9.253,2071,17.57]],["keywords/243",[]],["title/244",[25,657.965]],["content/244",[24,2.769,25,8.58,119,4.684,406,8.173,529,6.27,707,12.364,1125,8.854,1225,11.099]],["keywords/244",[]],["title/245",[584,637.257]],["content/245",[24,2.703,145,5.456,149,6.735,432,7.933,433,9.43,583,9.921,584,8.19,707,12.069,814,9.833,1059,13.811,1225,9.076]],["keywords/245",[]],["title/246",[1,589.167,479,580.19]],["content/246",[1,6.936,13,10.054,24,2.494,50,7.677,57,11.939,74,5.928,129,9.241,131,11.939,479,6.831,677,8.847,850,10.391,1104,10.525,1225,8.377,2037,13.913,2072,16.024,2073,16.024,2074,16.024]],["keywords/246",[]],["title/247",[46,1007.339]],["content/247",[]],["keywords/247",[]],["title/248",[559,606.788,571,908.438,1978,1054.402]],["content/248",[]],["keywords/248",[]],["title/249",[1,323.652,22,304.996,42,292.631,142,177.78,559,388.023,571,580.919,1617,473.213]],["content/249",[24,2.949,1903,16.446,2075,15.918,2076,20.558,2077,15.069]],["keywords/249",[]],["title/250",[22,335.209,46,508.398,137,365.251,990,532.87,1415,520.09,2078,891.881]],["content/250",[153,8.576,468,8.33,490,7.544,504,15.32,567,15.32,880,9.982,1754,17.205,1978,16.44]],["keywords/250",[]],["title/251",[48,429.085,559,473.351,741,666.846,1125,454.077,2079,860.829]],["content/251",[48,6.532,112,6.106,137,6.172,153,6.532,177,6.152,280,8.409,356,11.416,366,8.894,468,9.831,990,9.004,1125,10.71,1415,11.509,1471,7.935,2001,12.641,2080,19.736,2081,11.047,2082,12.522,2083,15.071]],["keywords/251",[]],["title/252",[48,482.092,2081,815.256,2084,967.173,2085,673.09]],["content/252",[0,1.781,1,1.593,11,2.979,22,2.634,24,1.614,42,4.619,46,7.301,48,4.879,50,1.763,74,1.921,119,2.731,137,1.635,145,4.677,150,1.35,171,6.003,179,1.35,192,1.501,260,10.849,267,1.644,356,1.952,363,1.983,366,2.357,412,2.267,463,5.016,464,3.092,467,3.472,474,1.701,490,2.672,492,5.398,598,3.092,628,3.679,630,1.752,633,3.195,677,2.031,688,7.582,740,5.907,749,16.866,793,2.048,796,1.362,808,2.741,829,2.449,859,2.599,862,2.69,886,2.302,888,2.797,921,2.69,986,3.679,990,2.386,1012,3.679,1050,9.774,1105,2.927,1125,3.214,1270,9.274,1299,2.859,1302,2.599,1377,4.086,1392,4.357,1415,2.329,1559,4.488,1560,3.318,1617,2.329,1625,14.045,1680,3.195,1792,3.91,1842,3.004,1875,2.643,1923,3.195,2001,4.488,2081,10.34,2085,11.432,2086,3.993,2087,3.993,2088,3.679,2089,3.993,2090,3.318,2091,8.142,2092,3.679,2093,3.679,2094,3.679,2095,3.679,2096,3.679,2097,3.679,2098,10.371,2099,11.256,2100,12.921,2101,14.881,2102,14.881,2103,9.788,2104,17.263,2105,11.256,2106,11.256,2107,9.004,2108,11.801,2109,12.809,2110,12.809,2111,3.993,2112,3.993,2113,3.679,2114,3.993,2115,3.993,2116,3.993,2117,3.679,2118,5.136,2119,3.318,2120,2.927,2121,3.472,2122,9.896,2123,3.472,2124,5.016,2125,7.008,2126,6.094,2127,3.679,2128,3.993,2129,3.993,2130,3.993,2131,3.993,2132,3.472,2133,3.993,2134,3.993]],["keywords/252",[]],["title/253",[48,482.092,2082,924.145,2135,924.145,2136,967.173]],["content/253",[0,2.29,1,4.78,11,3.004,24,1.719,46,6.832,48,5.195,74,3.286,171,7.72,280,6.687,556,7.453,581,6.311,796,4.087,921,11.377,990,7.161,1125,7.747,1415,6.989,1792,6.687,2001,10.818,2082,19.296,2085,12.849,2090,9.959,2119,9.959,2120,12.38,2122,12.727,2124,8.58,2126,14.687,2136,14.687,2137,11.043,2138,17.642,2139,19.563,2140,11.986,2141,11.986]],["keywords/253",[]],["title/254",[48,386.579,153,386.579,356,436.043,565,375.501,1125,409.095,2142,741.051]],["content/254",[0,1.782,43,6.006,48,6.595,94,10.457,153,8.608,171,6.006,177,4.009,356,7.439,490,5.801,562,13.633,565,9.308,596,11.781,623,9.461,871,9.902,990,13.209,2122,9.902,2124,10.892,2143,11.781,2144,14.019,2145,18.298,2146,12.172,2147,15.216,2148,10.069,2149,15.216]],["keywords/254",[]],["title/255",[48,351.736,1125,579.83,1415,473.213,2001,809.666,2150,705.652]],["content/255",[0,2.214,2,6.355,43,5.577,46,8.053,48,6.124,64,3.285,74,3.873,94,9.956,142,3.095,153,8.196,171,7.465,370,10.628,490,5.387,562,9.698,565,7.961,655,9.698,990,13.599,1792,7.883,2122,12.306,2124,13.537,2143,10.939,2144,13.017,2145,17.423,2146,11.302,2151,14.128,2152,14.128,2153,14.128,2154,14.128,2155,14.128]],["keywords/255",[]],["title/256",[559,844.988]],["content/256",[]],["keywords/256",[]],["title/257",[65,770.914,806,1284.551]],["content/257",[0,2.283,153,6.41,171,5.838,205,5.898,267,6.089,268,7.23,356,7.23,481,6.157,490,5.639,559,12.06,566,5.898,608,15.594,742,12.288,990,8.836,1021,9.962,1027,8.95,1125,6.783,1269,12.86,1377,8.624,1471,7.787,2001,12.485,2002,10.152,2156,13.626,2157,19.492,2158,14.789]],["keywords/257",[]],["title/258",[42,401.083,788,500.291,1270,531.827,2085,673.09]],["content/258",[11,2.965,268,9.437,459,9.297,529,6.27,559,9.23,708,10.884,796,6.582,1302,12.562,2159,19.303,2160,19.303]],["keywords/258",[]],["title/259",[25,472.486,2085,767.961,2161,1103.495]],["content/259",[11,3.277,22,6.396,24,2.441,25,7.943,48,7.376,142,3.728,268,8.32,457,10.298,490,6.488,566,6.787,1455,12.182,1564,8.729,2085,12.91,2162,14.798,2163,17.017,2164,17.017,2165,17.017,2166,17.017]],["keywords/259",[]],["title/260",[652,535.719,1270,531.827,2085,673.09,2167,967.173]],["content/260",[11,3.61,19,9.102,20,5.499,24,0.582,31,3.419,39,1.365,42,3.417,53,2.393,65,5.937,94,2.135,115,2.423,119,1.723,137,1.661,145,2.057,149,1.449,154,2.353,171,1.601,176,2.013,252,2.639,260,5.811,267,3.902,341,2.217,363,2.013,366,2.393,412,2.298,449,3.526,463,5.084,464,3.139,467,3.526,482,2.239,488,5.342,490,3.613,547,3.369,556,2.521,561,7.337,582,3.736,591,4.784,651,4.298,652,7.385,659,6.176,677,3.613,683,5.682,688,4.784,719,6.176,723,3.244,733,3.244,749,3.526,750,5.084,793,3.643,796,3.879,837,2.783,844,4.416,850,2.423,884,4.875,888,4.975,905,3.325,933,3.369,934,3.526,950,7.075,1000,6.176,1029,6.176,1076,5.206,1090,2.683,1159,9.85,1168,6.069,1193,3.526,1200,2.683,1209,5.206,1231,3.05,1236,3.244,1270,10.23,1274,6.176,1322,2.116,1361,2.046,1392,2.521,1438,2.08,1471,2.135,1535,10.015,1559,2.597,1656,3.369,1667,5.206,1777,12.801,1842,5.342,1870,3.244,2085,7.827,2088,6.544,2090,3.369,2091,8.24,2092,3.736,2093,3.736,2094,3.736,2095,3.736,2096,3.736,2097,3.736,2100,5.682,2101,6.544,2102,13.114,2103,3.526,2104,3.526,2107,3.244,2117,3.736,2118,5.206,2132,9.893,2156,3.736,2168,4.055,2169,4.055,2170,4.055,2171,4.055,2172,4.055,2173,4.055,2174,4.055,2175,4.055,2176,6.544,2177,4.055,2178,3.736,2179,3.736,2180,7.102,2181,3.736,2182,4.055,2183,4.055,2184,4.055,2185,4.055,2186,3.736,2187,8.731,2188,8.731,2189,8.731,2190,4.055,2191,4.055,2192,4.055,2193,4.055,2194,5.682,2195,9.893,2196,7.102,2197,7.102,2198,7.102,2199,5.682,2200,7.102,2201,7.102,2202,7.102,2203,4.055,2204,4.055,2205,7.102,2206,4.055,2207,4.055,2208,4.055,2209,4.055,2210,3.526,2211,4.055,2212,4.055,2213,3.736,2214,6.544,2215,4.055]],["keywords/260",[]],["title/261",[74,244.482,652,429.581,1270,426.461,1392,554.593,1415,520.09,2216,891.881]],["content/261",[11,3.497,24,1.801,112,7.069,252,8.172,260,10.701,581,6.612,723,10.045,848,7.808,865,9.204,905,8.168,996,12.491,1014,7.599,1168,8.043,1270,10.888,1377,7.322,1392,7.808,1405,5.919,2085,10.559,2100,13.959,2103,10.919,2104,10.919,2107,10.045,2187,11.57,2188,11.57,2189,11.57,2213,11.57,2214,16.077,2217,17.449,2218,12.557,2219,21.669,2220,17.449,2221,12.557,2222,12.557,2223,12.557]],["keywords/261",[]],["title/262",[48,386.579,145,258.266,990,532.87,1059,653.736,1270,426.461,2224,775.554]],["content/262",[48,9.004,119,3.959,179,5.517,190,8.75,340,9.103,423,9.01,490,7.92,496,9.405,636,10.145,669,11.428,837,11.199,990,9.748,999,8.669,1023,14.187,1027,9.873,1270,7.801,1311,12.273,1415,9.514,1667,11.959,2136,14.187,2225,16.315,2226,16.315,2227,16.315]],["keywords/262",[]],["title/263",[565,341.656,788,365.014,1270,604.443,1392,504.606,2085,491.088,2228,747.683]],["content/263",[0,2.241,11,3.921,22,4.636,24,1.769,29,5.012,48,4.163,107,2.256,112,3.891,119,2.993,138,10.539,139,10.539,171,3.791,205,2.302,280,11.431,554,8.384,559,9.497,565,6.053,578,9.371,583,5.057,624,5.318,652,4.626,715,4.231,765,7.437,788,7.751,796,3.275,862,6.47,1030,4.231,1080,7.437,1098,4.266,1165,4.796,1189,5.2,1231,7.225,1251,3.697,1270,10.659,1303,3.039,1392,5.972,1498,7.04,1559,6.152,1597,12.502,1777,6.47,1903,7.683,2075,15.863,2085,10.429,2229,8.352,2230,9.604,2231,5.772,2232,5.318,2233,7.98,2234,5.318,2235,5.772,2236,5.318,2237,5.318,2238,5.318,2239,8.849,2240,14.378,2241,8.849,2242,8.352,2243,9.604,2244,5.772]],["keywords/263",[]],["title/264",[817,393.767,823,628.323,1270,388.023,1392,504.606,1415,473.213,2085,491.088,2245,747.683]],["content/264",[119,4.22,534,13.913,655,11.939,788,7.823,817,8.439,823,13.466,962,10.972,1000,15.123,1027,10.525,1270,10.34,2085,13.087,2246,17.392,2247,17.392,2248,17.392,2249,17.392,2250,17.392,2251,17.392]],["keywords/264",[]],["title/265",[137,455.495,474,681.973,2002,763.502]],["content/265",[11,3.307,17,7.171,24,1.554,74,6.35,93,6.94,119,2.629,139,11.518,171,4.277,346,4.588,474,8.636,490,4.131,565,4.562,584,3.907,638,8.39,643,6.836,660,9.984,788,4.874,955,6.738,1159,6.557,1209,7.942,1231,8.151,1370,13.42,1371,8.151,1564,5.558,1779,11.821,2002,7.438,2085,6.557,2252,9.984,2253,10.836,2254,10.836,2255,10.836,2256,10.836,2257,10.836,2258,10.836,2259,10.836,2260,10.836,2261,10.836,2262,10.836,2263,15.714,2264,15.714,2265,15.714,2266,15.714,2267,10.836,2268,10.836,2269,10.836,2270,10.836,2271,10.836,2272,10.836,2273,10.836,2274,10.836,2275,10.836,2276,10.836]],["keywords/265",[]],["title/266",[363,630.071,1125,582.08,2148,839.794]],["content/266",[]],["keywords/266",[]],["title/267",[554,740.008,1174,758.192,2277,1054.402]],["content/267",[11,3.458,22,5.171,24,1.973,43,5.431,48,9.76,171,5.431,177,3.625,190,9.963,192,5.171,193,6.579,235,4.896,468,5.793,554,12.264,559,8.882,584,4.962,677,6.999,814,7.18,844,8.556,990,8.221,1125,6.311,1302,8.954,1844,8.68,1886,11.007,1993,11.719,1999,14.861,2038,9.85,2122,8.954,2148,9.105,2278,13.759,2279,11.964,2280,13.759]],["keywords/267",[]],["title/268",[145,367.472,359,708.043,2281,1169.223]],["content/268",[11,3.305,13,5.747,24,1.773,26,8.438,43,4.879,48,7.48,88,10.444,145,4.997,177,3.257,190,9.256,192,4.646,359,12.008,432,5.204,433,6.186,468,5.204,474,5.264,561,9.571,571,12.354,583,6.508,638,9.571,708,9.731,718,7.798,862,8.326,1043,9.06,1270,8.252,1376,7.208,1842,9.298,1875,8.18,1999,9.888,2038,8.848,2077,9.06,2081,9.06,2085,7.48,2122,8.044,2148,8.18,2282,12.361,2283,9.571,2284,11.389,2285,12.361,2286,10.748,2287,12.361,2288,12.361]],["keywords/268",[]],["title/269",[177,293.04,356,543.777,1125,510.172,1987,861.186]],["content/269",[0,2.775,24,2.247,26,7.66,145,4.537,177,4.128,356,7.66,359,11.293,1059,11.484,1125,9.284,2077,11.484,2122,15.423,2124,11.216,2284,14.436,2289,10.554,2290,13.018,2291,13.018,2292,14.436,2293,15.668,2294,15.668,2295,15.668,2296,15.668]],["keywords/269",[]],["title/270",[1125,734.526,2001,712.396,2297,1112.241]],["content/270",[0,2.687,11,3.39,24,2.359,25,4.3,29,8.585,104,8.687,171,6.494,177,3.043,356,10.791,561,8.941,1080,8.941,1125,10.829,1189,8.907,1777,11.081,1844,7.285,1993,7.285,1994,7.779,2001,7.397,2077,12.058,2122,14.364,2124,8.267,2126,10.042,2143,8.941,2148,12.68,2289,7.779,2291,13.668,2298,11.448,2299,10.64,2300,8.941,2301,11.548,2302,11.548]],["keywords/270",[]],["title/271",[356,483.987,561,766.496,2303,989.946,2304,989.946,2305,989.946]],["content/271",[11,3.792,24,2.293,53,9.433,921,13.812,2081,11.717,2082,17.036,2085,12.408,2119,17.036,2120,15.029,2121,13.9,2137,18.891,2138,13.282,2139,14.728,2239,14.728,2241,14.728,2306,15.985,2307,15.985]],["keywords/271",[]],["title/272",[48,386.579,652,429.581,990,532.87,1559,571.255,2027,821.749,2308,891.881]],["content/272",[11,2.86,24,2.671,46,12.855,148,4.422,490,7.1,921,12.543,1559,11.927,2081,13.649,2085,11.269,2119,15.472,2120,13.649,2121,16.192]],["keywords/272",[]],["title/273",[171,439.064,366,656.373,559,531.827,1174,664.528]],["content/273",[]],["keywords/273",[]],["title/274",[171,320.342,532,484.841,575,705.652,1125,372.223,1745,580.919,2309,811.493,2310,811.493]],["content/274",[0,2.565,2,6.715,11,3.364,13,6.94,24,2.141,29,10.236,171,7.742,356,9.589,559,7.138,1125,8.996,1415,8.705,1777,10.056,1993,9.418,1994,10.056,2077,10.942,2122,14.255,2124,10.687,2143,11.559,2279,12.981,2289,10.056,2291,12.404,2298,8.919,2299,13.754,2311,14.928]],["keywords/274",[]],["title/275",[26,483.987,359,552.34,532,591.461,1415,577.275,2312,989.946]],["content/275",[24,2.911,26,9.922,830,10.988,833,15.266,2077,14.875,2122,13.207]],["keywords/275",[]],["title/276",[280,552.34,565,416.789,1415,577.275,2148,655.118,2313,989.946]],["content/276",[119,4.742,205,7.794,554,11.395,578,10.024,1098,8.679,1189,10.581,2075,17.973,2229,16.993]],["keywords/276",[]],["title/277",[0,115.932,1,394.825,852,725.616,2298,591.461,2314,989.946]],["content/277",[11,2.559,22,6.261,24,2.389,43,6.576,107,6.51,119,4.042,280,9.295,578,8.545,1165,13.841,1189,9.02,1251,10.67,1303,8.771,1415,9.714,1903,13.327,2075,16.298,2229,14.486,2233,13.841,2234,15.349,2236,15.349,2237,15.349,2238,15.349,2315,16.659]],["keywords/277",[]],["title/278",[532,410.79,565,289.474,745,309.264,788,309.264,1270,530.025,1392,427.536,2075,532.358,2316,687.552]],["content/278",[0,1.425,11,3.584,22,6.416,24,2.449,29,6.351,40,8.615,48,7.4,74,3.336,145,3.524,177,3.206,280,6.79,356,5.95,549,6.408,561,9.423,578,6.243,745,5.474,788,7.679,827,9.155,862,8.198,1125,7.831,1159,7.365,1174,7.271,2075,18.939,2077,15.669,2122,14.65,2233,10.112,2290,10.112,2291,10.112,2298,7.271,2300,9.423,2317,12.17]],["keywords/278",[]],["title/279",[171,352.076,532,532.87,2318,891.881,2319,891.881,2320,891.881,2321,713.501]],["content/279",[0,1.448,11,1.898,48,8.619,49,5.998,84,8.485,85,5.998,171,4.879,230,5.91,265,6.395,267,8.862,284,5.456,415,8.658,432,5.204,433,6.186,461,7.917,488,9.298,532,10.311,718,7.798,780,13.806,820,8.848,837,8.485,871,8.044,886,7.125,972,9.298,1020,7.917,1021,13.394,1068,7.48,1080,9.571,1168,7.917,1178,7.385,1209,9.06,1244,10.27,1297,9.06,1415,7.208,1595,10.27,1804,9.888,1864,8.326,1923,9.888,2321,9.888,2322,11.389,2323,12.361,2324,11.389,2325,11.389,2326,12.361,2327,12.361,2328,11.389,2329,11.389]],["keywords/279",[]],["title/280",[461,812.808,740,800.595,1777,854.828]],["content/280",[0,2.377,461,12.998,510,11.096,837,13.931,996,14.528,2330,20.294]],["keywords/280",[]],["title/281",[0,148.613,461,812.808,510,693.83]],["content/281",[0,2.315,11,2.888,12,3.999,13,3.225,24,1.601,25,2.583,26,3.391,42,6.781,43,2.738,45,5.679,46,3.954,56,4.762,59,3.21,64,1.613,65,3.62,130,2.888,137,4.572,142,2.446,143,5.417,144,2.645,145,2.009,153,4.839,171,4.407,179,2.346,194,2.904,195,2.275,196,5.923,228,2.067,356,3.391,359,3.87,363,5.543,461,13.954,479,2.725,490,2.645,507,4.762,510,6.104,511,3.756,529,2.253,532,4.145,534,8.931,540,7.82,559,8.415,571,4.966,584,2.502,732,6.032,733,5.55,780,5.55,812,5.55,814,3.62,871,7.265,874,3.589,995,4.673,1011,6.032,1068,4.198,1158,4.762,1159,9.717,1270,3.317,1337,2.105,1392,4.314,1436,5.371,1875,4.591,2002,4.762,2077,13.783,2108,6.391,2122,12.237,2232,10.286,2321,5.55,2328,6.391,2331,6.937,2332,6.391,2333,6.391,2334,11.641,2335,6.937,2336,6.937,2337,6.391,2338,6.391,2339,6.391,2340,6.391,2341,6.391,2342,6.937,2343,6.937,2344,6.937,2345,6.937,2346,6.937,2347,6.937,2348,6.937,2349,6.937,2350,6.391,2351,6.937,2352,6.937,2353,6.937,2354,11.164,2355,6.937]],["keywords/281",[]],["title/282",[559,606.788,715,930.165,1304,982.569]],["content/282",[]],["keywords/282",[]],["title/283",[281,462.885,554,688.793,559,355.941,677,378.65,711,492.622,1006,647.308,2122,484.434]],["content/283",[]],["keywords/283",[]],["title/284",[22,335.209,171,352.076,532,532.87,559,426.461,1008,821.749,2321,713.501]],["content/284",[0,1.655,48,6.124,171,5.577,265,7.309,267,5.817,284,6.236,356,6.907,432,5.948,433,7.07,461,9.049,496,8.144,532,13.599,559,6.755,636,8.785,645,13.017,764,10.939,771,10.114,820,10.114,865,10.356,892,11.739,893,11.302,1062,5.027,1068,8.55,1168,9.049,1209,10.356,1244,11.739,1322,7.373,1415,8.239,1595,11.739,2321,11.302,2322,13.017,2324,13.017,2325,13.017,2356,14.128,2357,14.128,2358,14.128,2359,10.114]],["keywords/284",[]],["title/285",[193,473.351,707,634.066,715,725.616,1021,666.846,2360,989.946]],["content/285",[]],["keywords/285",[]],["title/286",[837,763.502,996,796.213,2361,1024.781,2362,1112.241]],["content/286",[0,2.47,24,1.693,42,4.258,137,4.835,153,5.118,171,8.326,196,4.355,267,4.862,363,5.862,432,4.971,433,5.909,507,8.105,510,9.137,514,7.449,532,7.054,559,11.05,652,5.687,678,9.445,837,11.471,840,9.81,892,9.81,893,9.445,1011,16.867,1059,8.654,1160,9.445,1204,10.267,1265,7.953,1618,10.267,2122,13.726,2329,10.878,2332,10.878,2333,10.878,2334,9.81,2337,10.878,2338,10.878,2339,10.878,2340,10.878,2350,10.878,2361,15.397,2363,11.807,2364,11.807,2365,11.807,2366,11.807]],["keywords/286",[]],["title/287",[43,439.064,64,258.596,1140,648.59,2058,861.186]],["content/287",[]],["keywords/287",[]],["title/288",[1868,1237.828]],["content/288",[0,2.059,1,7.014,43,9.758,64,4.089,130,7.321,340,9.812,651,10.642,712,14.668,817,8.533,1140,10.255,1559,11.263,1562,11.094,2059,11.444,2298,10.507]],["keywords/288",[]],["title/289",[1,443.6,43,439.064,64,258.596,2059,723.814]],["content/289",[0,2.341,1,4.98,2,3.593,11,3.84,13,3.714,24,2.493,25,2.974,29,4.169,42,2.881,43,6.069,46,4.554,48,3.463,50,3.526,54,4.325,64,5.166,77,4.899,85,3.876,111,3.792,113,10.019,115,4.773,116,8.126,123,5.484,126,5.596,127,5.855,128,6.009,130,6.4,136,9.153,137,3.272,148,1.897,268,6.105,423,6.896,432,3.363,433,3.998,490,3.046,565,5.257,627,5.381,712,10.355,729,13.724,793,4.098,796,2.724,959,6.967,990,4.773,995,5.381,1484,4.773,1485,4.368,1562,5.04,1826,6.638,1844,5.04,1993,7.878,2048,5.855,2059,5.199,2148,5.287,2298,4.773,2367,11.505,2368,7.36,2369,7.36,2370,7.36,2371,7.36,2372,7.36,2373,7.36,2374,7.36,2375,7.36,2376,7.36,2377,11.505,2378,7.36,2379,7.36,2380,7.36,2381,6.391,2382,7.36]],["keywords/289",[]],["title/290",[43,390.788,64,230.163,651,599.082,817,480.359,2059,644.229]],["content/290",[516,9.824,549,10.418,651,11.974,817,9.601,830,10.713,848,12.303,1405,9.327,1610,14.884]],["keywords/290",[]],["title/291",[43,352.076,235,317.373,712,600.787,788,401.173,2058,690.566,2059,580.411]],["content/291",[84,10.973,103,12.025,119,3.879,457,9.674,458,7.756,516,7.937,525,9.94,630,7.013,673,9.674,809,9.94,1200,10.578,1268,9.433,2359,17.094,2383,14.728,2384,18.891,2385,18.891,2386,14.728,2387,14.728,2388,14.728,2389,14.728,2390,14.728,2391,14.728]],["keywords/291",[]],["title/292",[459,711.515,756,871.762]],["content/292",[]],["keywords/292",[]],["title/293",[42,532.699,1868,1034.731]],["content/293",[0,2.181,43,7.351,200,9.174,457,11.269,459,8.969,479,7.313,631,10.989,1405,10.63,1442,11.769,1642,13.043,1765,14.418]],["keywords/293",[]],["title/294",[0,130.254,137,455.495,459,535.719,1765,861.186]],["content/294",[]],["keywords/294",[]],["title/295",[0,148.613,1792,708.043,2079,1103.495]],["content/295",[0,2.261,194,8.081,412,6.245,502,8.417,620,10.451,1117,12.364,1225,9.297,1293,7.543,1435,12.364,2392,17.785]],["keywords/295",[]],["title/296",[0,130.254,1218,608.117,2084,967.173,2393,924.145]],["content/296",[0,2.317,51,8.843,68,9.748,267,8.147,566,7.891,817,9.601,1122,12.483,2062,14.884]],["keywords/296",[]],["title/297",[0,148.613,577,723.372,2135,1054.402]],["content/297",[119,4.742,458,9.482,592,10.024,642,11.139,735,11.395,1125,8.963,1268,11.532,1642,13.688,2199,15.633]],["keywords/297",[]],["title/298",[0,148.613,280,708.043,2142,1054.402]],["content/298",[263,12.774,559,9.959,565,8.769,1438,10.684]],["keywords/298",[]],["title/299",[0,148.613,1389,570.807,2150,1103.495]],["content/299",[0,2.408,214,6.952,412,6.651,502,8.964,1389,9.247]],["keywords/299",[]],["title/300",[0,148.613,74,347.86,2394,1169.223]],["content/300",[74,5.492,143,9.723,144,7.64,468,8.436,915,13.754,1217,9.013,1740,11.971]],["keywords/300",[]],["title/301",[0,148.613,43,500.95,2395,1169.223]],["content/301",[0,2.377,43,8.011,502,8.849,995,15.989,1217,9.128]],["keywords/301",[]],["title/302",[0,148.613,130,528.316,2396,1169.223]],["content/302",[0,1.448,59,3.554,71,6.758,74,5.451,119,2.999,130,8.96,131,8.485,143,8.374,221,5.49,339,4.047,412,6.433,459,8.312,460,7.917,479,4.855,502,7.525,524,5.035,529,6.459,559,5.91,720,8.193,822,6.09,995,8.326,999,6.568,1074,6.693,1092,6.395,1117,12.736,1293,6.744,1385,14.078,1566,8.044,1881,10.27,2397,10.748,2398,11.389,2399,14.34,2400,11.389,2401,11.389,2402,11.389]],["keywords/302",[]],["title/303",[194,531.275,578,650.927,2403,930.165]],["content/303",[0,2.807,2,7.679,25,8.689,43,4.804,119,4.142,142,4.32,192,4.574,195,2.48,205,4.854,228,3.626,479,6.705,502,7.444,524,4.957,623,7.568,1087,7.568,1091,8.054,1225,8.223,1251,7.795,1268,7.182,1293,4.756,1337,5.982,1403,5.697,1436,13.218,1457,9.736,1748,8.198,1752,10.935,1919,10.112,2277,14.185,2404,11.213,2405,11.213,2406,11.213,2407,11.213,2408,14.845,2409,11.213]],["keywords/303",[]],["title/304",[43,439.064,64,258.596,1140,648.59,1217,500.291]],["content/304",[]],["keywords/304",[]],["title/305",[1868,1237.828]],["content/305",[0,2.656,1,5.585,10,4.755,12,8.072,43,9.339,64,4.37,77,8.587,113,8.072,116,9.113,143,6.795,144,5.339,145,4.055,228,4.172,280,7.813,340,7.813,459,6.745,583,7.373,584,5.05,651,8.474,712,9.433,817,6.795,839,8.707,1125,6.423,1140,8.166,1217,6.299,1337,4.248,1361,7.064,1559,8.969,1562,8.834,2148,9.267,2298,11.231,2410,10.842]],["keywords/305",[]],["title/306",[1,443.6,43,439.064,64,258.596,1217,500.291]],["content/306",[0,2.29,1,4.78,10,5.735,12,9.736,24,2.805,25,6.288,43,7.72,46,6.832,50,5.291,54,6.49,55,6.369,74,4.63,77,7.35,113,9.736,115,7.161,116,10.991,119,2.908,126,8.395,127,8.785,356,5.86,406,5.075,490,4.57,497,7.073,532,7.161,584,4.322,779,6.201,857,9.28,915,8.228,999,6.369,1125,5.498,1217,7.597,1303,6.311,1361,6.047,1442,6.255,1484,7.161,1562,7.562,1883,8.785,1993,10.655,1994,8.074,2162,10.422,2403,8.785,2411,11.043,2412,11.043,2413,11.043,2414,10.422,2415,10.422]],["keywords/306",[]],["title/307",[43,390.788,64,230.163,651,599.082,817,480.359,1217,445.283]],["content/307",[177,5.213,516,9.824,651,11.974,745,8.9,817,9.601,848,12.303,1405,9.327,1610,14.884]],["keywords/307",[]],["title/308",[0,148.613,2,570.807,5,700.808]],["content/308",[]],["keywords/308",[]],["title/309",[3,1131.882]],["content/309",[5,10.792,6,15.131,9,9.148,12,11.265,25,7.276,123,13.414,142,4.281,1361,9.859,2416,18.005]],["keywords/309",[]],["title/310",[0,148.613,2,570.807,9,594.043]],["content/310",[0,2.638,2,7.118,5,11.25,24,2.27,25,7.585,26,7.737,27,9.84,28,10.863,29,8.258,30,11.328,39,5.329,50,6.985,228,4.715,516,7.857,636,9.84,708,8.923,814,8.258,816,11.599,1293,6.184,1337,4.801,1672,10.136,1681,13.149,2417,14.581,2418,14.581]],["keywords/310",[]],["title/311",[25,550.009,46,842.06]],["content/311",[24,2.987,54,11.277,1258,8.576,2419,17.306]],["keywords/311",[]],["title/312",[0,172.997,141,1111.244]],["content/312",[0,2.207,5,13.465,11,2.894,24,2.703,48,8.167,105,12.693,141,14.174,2420,16.385,2421,17.361,2422,15.656]],["keywords/312",[]],["title/313",[154,489.461,1250,905.936]],["content/313",[0,0.87,5,10.703,9,3.476,10,2.521,11,1.811,24,2.612,25,5.458,39,3.97,54,4.021,55,3.946,74,5.313,94,3.91,111,3.525,120,10.531,145,4.245,148,2.8,154,4.857,194,3.109,203,3.577,263,4.554,406,3.144,468,3.126,474,8.976,565,3.126,577,4.233,578,3.809,601,4.021,620,4.021,642,4.233,704,5.443,734,4.33,1004,3.982,1050,4.494,1062,2.642,1100,4.832,1145,4.554,1179,8.706,1250,4.554,1251,4.756,1403,3.476,1435,4.756,1438,3.809,1471,3.91,1564,7.52,1687,8.641,1785,5.097,1792,4.143,1825,5.201,1857,5.72,2118,5.443,2199,5.941,2422,6.17,2423,14.516,2424,19.959,2425,12.181,2426,6.842,2427,6.842,2428,10.862,2429,10.862,2430,6.842,2431,9.795,2432,6.842,2433,9.431,2434,6.842,2435,6.842,2436,5.586,2437,6.842,2438,6.842,2439,6.842,2440,6.842,2441,6.842,2442,5.75,2443,6.842,2444,6.842,2445,6.842,2446,6.842,2447,6.842]],["keywords/313",[]],["title/314",[0,148.613,74,347.86,111,602.447]],["content/314",[0,2.219,1,3.219,5,6.951,9,3.778,10,6.434,11,2.684,12,7.255,24,2.507,25,3.005,39,6.382,49,3.916,50,3.562,60,9.131,64,1.876,74,4.791,77,13.669,111,8.297,113,7.255,114,6.456,119,5.088,121,10.069,129,4.288,131,5.54,135,6.456,145,2.337,191,4.211,203,6.062,267,5.183,268,6.154,423,8.545,460,5.169,474,3.437,481,3.36,489,5.341,490,4.799,566,3.219,576,6.071,702,7.017,729,5.54,793,7.937,829,4.949,1027,4.884,1217,5.661,1293,3.154,1361,6.35,1396,5.091,1505,5.653,1564,4.139,1628,6.071,1687,5.915,1782,5.915,1785,5.54,1825,5.653,1917,6.071,2054,5.915,2410,6.248,2425,6.705,2448,7.435,2449,11.597,2450,7.435,2451,7.435,2452,7.435,2453,7.435,2454,10.945,2455,7.017,2456,7.017,2457,7.017,2458,7.017]],["keywords/314",[]],["title/315",[9,463.409,10,336.137,119,240.206,1361,499.432,1484,591.461]],["content/315",[]],["keywords/315",[]],["title/316",[9,520.657,10,377.662,145,322.076,1361,561.13]],["content/316",[0,1.333,1,4.539,9,8.898,10,6.454,11,3.371,12,6.561,22,7.797,24,1.632,50,5.024,64,2.646,145,4.714,150,3.849,151,3.741,228,3.391,412,3.682,432,4.792,479,4.47,490,4.34,591,7.667,622,6.888,627,10.967,822,5.607,1159,6.888,1303,8.572,1322,5.94,1361,11.86,1471,5.993,1484,6.8,1498,11.933,1617,6.637,1857,5.523,2001,10.428,2459,10.487,2460,10.487,2461,10.487,2462,10.487,2463,10.487,2464,9.897,2465,8.148,2466,8.562,2467,9.457,2468,10.487,2469,10.487,2470,10.487,2471,10.487]],["keywords/316",[]],["title/317",[9,594.043,1471,668.175,1639,825.835]],["content/317",[]],["keywords/317",[]],["title/318",[2,794.882]],["content/318",[2,8.578,24,2.735,50,8.418,54,10.325,490,7.271,676,13.978,1303,10.041,1639,12.41,2436,14.345,2472,17.57,2473,17.57]],["keywords/318",[]],["title/319",[145,427.765,2474,1361.063]],["content/319",[10,5.483,24,2.316,50,7.128,54,11.174,64,3.754,111,7.666,140,13.977,145,5.976,490,6.157,555,12.918,746,10.041,1639,14.802,2475,14.878,2476,18.899,2477,14.878,2478,14.878,2479,14.878]],["keywords/319",[]],["title/320",[111,602.447,1471,668.175,1570,982.569]],["content/320",[11,2.406,24,2.247,50,6.916,54,10.959,64,3.643,119,3.802,140,11.803,484,10.755,490,5.974,631,11.945,793,8.037,967,10.975,1168,10.035,1270,7.492,1570,17.361,1639,14.592,1842,16.867,2476,16.818,2480,14.436]],["keywords/320",[]],["title/321",[13,589.974,1293,495.909,1639,825.835]],["content/321",[24,2.735,54,10.325,111,9.053,1158,13.091,1639,14.888,2054,13.978,2419,15.845,2481,17.57,2482,17.57,2483,17.57]],["keywords/321",[]],["title/322",[0,148.613,171,500.95,1617,740.008]],["content/322",[]],["keywords/322",[]],["title/323",[46,723.372,565,534.281,1140,740.008]],["content/323",[0,1.931,24,2.364,46,11.919,119,4,280,9.198,492,9.503,565,8.804,670,13.697,1140,9.613,1270,9.998,1617,9.613,2081,15.327,2085,12.654,2123,14.335,2484,13.697,2485,15.189,2486,15.189,2487,15.189,2488,15.189]],["keywords/323",[]],["title/324",[559,706.347,1832,1181.771]],["content/324",[0,2.558,25,2.606,26,6.89,34,5.815,59,3.233,71,3.826,74,1.918,85,6.839,137,2.866,171,7.453,172,5.01,228,2.085,260,8.643,280,10.533,359,7.864,405,11.553,430,6.086,445,5.419,497,6.635,559,9.864,590,8.995,592,8.278,814,8.422,1125,7.403,1304,8.706,1337,4.896,1379,4.292,1389,3.148,1436,5.419,1492,4.13,2001,11.323,2021,6.448,2100,5.599,2124,12.655,2161,6.086,2224,6.086,2341,6.448,2489,6.998,2490,6.998,2491,12.985,2492,6.998,2493,10.36,2494,11.244,2495,6.998,2496,6.998,2497,6.998,2498,14.094,2499,6.448,2500,6.448,2501,5.01,2502,11.275,2503,10.36,2504,12.985,2505,10.36,2506,10.36,2507,10.36,2508,10.36,2509,12.985,2510,6.448,2511,6.086,2512,12.985,2513,6.448,2514,6.448,2515,6.448,2516,10.36,2517,6.448,2518,10.36,2519,6.448,2520,6.448,2521,6.448,2522,6.448,2523,6.448]],["keywords/324",[]],["title/325",[59,424.783,1379,905.936]],["content/325",[]],["keywords/325",[]],["title/326",[59,424.783,227,530.33]],["content/326",[59,5.836,119,4.924,529,6.592,622,12.281,874,10.499,1385,12.619]],["keywords/326",[]],["title/327",[59,364.91,874,656.509,1385,789.1]],["content/327",[3,5.304,9,3.877,11,3.251,13,5.97,22,4.827,25,3.083,31,4.158,39,2.789,49,6.231,51,5.74,59,6.995,64,1.925,74,5.258,91,3.85,112,3.355,119,2.009,142,4.202,145,2.398,157,5.018,235,6.825,267,3.41,433,4.144,458,4.018,474,5.469,490,3.158,504,6.412,529,2.69,566,3.303,631,4.887,743,6.23,793,4.248,796,2.824,850,4.948,874,4.284,902,8.995,972,6.23,973,6.23,1020,10.075,1098,3.678,1337,3.896,1339,6.532,1377,4.829,1385,5.15,1457,6.625,1471,4.36,1485,4.528,1546,5.012,1564,4.248,1777,5.579,1852,6.881,1870,10.274,2408,13.678,2524,7.63,2525,7.63,2526,7.63,2527,7.63,2528,11.832,2529,7.63,2530,7.63,2531,7.63,2532,7.63,2533,7.63,2534,7.63,2535,8.281,2536,9.413,2537,8.281,2538,8.281,2539,8.281,2540,8.281,2541,7.63]],["keywords/327",[]],["title/328",[59,424.783,195,301.048]],["content/328",[0,2.257,11,3.654,24,1.2,43,3.304,49,4.061,59,5.125,64,1.946,74,3.549,81,3.355,129,4.447,142,2.836,145,5.161,148,1.988,157,3.271,177,2.205,182,4.407,195,4.153,198,3.564,211,4.771,214,2.83,220,4.257,222,3.238,223,2.878,231,4.031,235,2.978,265,4.33,280,7.224,458,4.061,468,3.524,492,12.25,496,4.824,745,3.764,874,4.33,948,5.862,1027,7.835,1055,7.278,1073,5.28,1107,5.065,1246,3.741,1307,4.293,1389,3.764,1792,4.67,2542,7.711,2543,7.711,2544,8.369,2545,8.369,2546,8.369,2547,6.134,2548,8.369,2549,6.134,2550,8.369,2551,6.134,2552,7.711,2553,7.711,2554,7.711,2555,7.711,2556,7.711,2557,7.711,2558,7.711,2559,7.711,2560,7.711,2561,7.711,2562,7.711,2563,11.929,2564,11.929,2565,11.929,2566,7.711,2567,7.711,2568,7.711,2569,7.711,2570,6.134,2571,7.711,2572,7.711,2573,7.711,2574,7.711,2575,7.711,2576,7.711,2577,7.711]],["keywords/328",[]],["title/329",[0,148.613,214,429.117,1389,570.807]],["content/329",[]],["keywords/329",[]],["title/330",[0,104.448,64,207.363,142,195.391,214,301.591,1174,532.87,1389,401.173]],["content/330",[0,1.57,11,2.804,24,1.923,25,4.992,94,7.06,119,4.429,142,3.999,145,3.883,157,5.24,205,5.348,214,7.882,235,4.772,363,6.658,432,5.645,433,6.711,948,9.392,950,8.338,1170,9.392,1265,9.032,1389,6.031,1484,8.011,1488,10.087,1491,8.874,1496,15.613,1748,9.032,2289,9.032,2578,12.355,2579,12.355,2580,12.355,2581,9.392,2582,10.727,2583,14.603,2584,10.727,2585,10.727,2586,10.727,2587,10.727]],["keywords/330",[]],["title/331",[0,148.613,25,472.486,1389,570.807]],["content/331",[]],["keywords/331",[]],["title/332",[25,414.117,622,673.09,1389,500.291,2588,1024.781]],["content/332",[0,2.577,11,3.031,13,7.006,22,8.271,24,2.162,25,8.694,171,7.791,214,5.096,267,6.205,481,6.274,502,6.572,566,6.011,627,10.152,677,7.666,779,7.797,796,5.139,799,13.105,1389,6.779,1482,11.047,1492,11.647,2502,12.056,2589,13.886,2590,13.886]],["keywords/332",[]],["title/333",[25,414.117,177,293.04,356,543.777,1389,500.291]],["content/333",[11,3.05,24,2.182,25,5.665,26,9.709,27,12.349,28,10.445,29,7.941,177,5.232,267,6.265,356,7.439,554,8.873,559,10.572,627,10.25,655,10.445,708,8.58,817,7.383,852,11.153,1471,8.012,1492,8.979,1559,9.746,1617,8.873,2381,12.172,2591,14.019,2592,14.019,2593,14.019,2594,11.153]],["keywords/333",[]],["title/334",[0,148.613,195,258.616,529,412.194]],["content/334",[0,2.433,25,7.734,59,4.691,64,3.793,77,10.005,116,10.617,129,8.669,148,3.875,195,4.233,214,5.517,266,11.199,490,6.22,1087,10.145,1158,11.199,1217,7.338,1293,6.376,1309,7.386,1379,10.005,1389,9.344,2595,15.032,2596,13.556]],["keywords/334",[]],["title/335",[206,474.706,339,415.463,1341,888.887]],["content/335",[0,1.748,1,5.954,9,6.988,119,3.622,148,3.545,177,3.933,194,6.25,206,7.337,297,7.19,339,7.616,412,4.83,490,5.692,524,6.081,565,6.285,592,7.657,641,9.418,775,9.879,796,5.09,839,9.283,928,10.457,948,10.457,1091,9.879,1320,10.942,1341,10.457,1389,6.715,1403,6.988,1564,7.657,2597,13.754,2598,13.754,2599,13.754]],["keywords/335",[]],["title/336",[2600,1413.729]],["content/336",[]],["keywords/336",[]],["title/337",[25,657.965]],["content/337",[]],["keywords/337",[]],["title/338",[9,594.043,10,430.893,1174,758.192]],["content/338",[3,10.45,5,9.01,6,12.632,7,13.052,8,13.556,9,7.637,10,5.54,12,11.974,13,9.658,14,9.873,15,13.052,16,10.99,17,10.797,18,11.959,19,13.052,22,6.132,24,2.34,48,7.072,406,6.908,917,9.3,2601,13.052,2602,15.032,2603,16.315]],["keywords/338",[]],["title/339",[0,148.613,10,430.893,1246,567.189]],["content/339",[0,2.875,5,11.877,24,3.085,25,7.126,26,7.033,27,11.901,28,9.875,29,7.507,30,10.298,54,7.789,68,9.429,71,7.865,74,3.943,92,4.905,105,9.69,145,5.542,192,5.407,406,6.091,459,6.929,676,10.544,1218,7.865,1396,9.075,2436,10.821,2604,14.385,2605,13.254]],["keywords/339",[]],["title/340",[0,148.613,56,871.116,1562,800.595]],["content/340",[0,2.568,2,4.113,24,1.987,31,2.417,40,5.584,42,3.297,54,7.502,55,8.888,56,6.277,57,6.277,58,7.597,59,2.629,60,5.396,63,19.586,64,5.569,65,11.785,67,4.576,68,8.241,71,4.999,74,2.506,77,5.607,80,3.85,81,3.666,119,2.219,137,3.745,432,3.85,433,4.576,1311,6.878,1405,4.31,1583,5.463,1584,6.051,2606,8.425,2607,9.144,2608,20.056,2609,8.425,2610,9.144,2611,9.144,2612,9.144,2613,20.056,2614,7.597,2615,9.144,2616,9.144,2617,9.144,2618,9.144,2619,9.144,2620,9.144,2621,9.144,2622,9.144,2623,9.144,2624,9.144,2625,8.425,2626,9.144,2627,8.425,2628,9.144]],["keywords/340",[]],["title/341",[130,614.999,1546,893.965]],["content/341",[11,3.174,12,11.912,24,1.907,42,6.545,54,7.199,77,8.154,113,10.462,115,10.844,116,11.811,119,5.387,120,13.037,122,10.295,123,9.127,124,11.048,126,9.313,127,9.746,128,10.002,130,5.535,132,11.048,134,11.048,136,16.274,137,7.433,148,3.158,655,12.459,988,8.653,1293,5.196,1825,9.313,2629,12.251,2630,12.251]],["keywords/341",[]],["title/342",[148,349.247,198,421.589,297,476.815,745,445.283]],["content/342",[148,4.475,177,4.964,206,7.049,228,5.614,584,6.795,959,12.673,1159,11.403,1337,5.717,1520,13.811,1864,12.693,2631,17.361]],["keywords/342",[]],["title/343",[42,321.62,206,333.631,214,301.591,297,429.581,747,539.736,959,497.625]],["content/343",[0,0.788,11,3.802,24,0.965,42,3.929,65,5.686,80,2.834,137,4.462,148,1.598,198,4.64,207,3.925,222,4.215,228,4.089,268,3.29,297,3.242,302,8.196,306,7.986,339,5.165,351,3.972,363,9.208,366,3.972,434,4.534,489,4.454,492,9.094,578,3.452,636,4.185,796,2.295,959,3.755,1062,2.395,1197,5.211,1277,3.755,1302,7.09,1374,5.211,1377,3.925,1471,3.544,1580,5.384,1705,4.311,1738,7.505,1971,8.716,2632,6.201,2633,6.201,2634,6.201,2635,6.201,2636,6.201,2637,6.201,2638,6.201,2639,6.201,2640,6.201,2641,15.967,2642,6.201,2643,6.201,2644,5.852,2645,10.038,2646,6.201,2647,6.201,2648,6.201,2649,6.201,2650,6.201,2651,6.201,2652,6.201,2653,6.201,2654,10.038,2655,6.201,2656,6.201,2657,6.201,2658,14.536,2659,6.201,2660,6.201,2661,10.038,2662,10.038,2663,6.201,2664,6.201,2665,6.201,2666,6.201,2667,6.201,2668,6.201,2669,6.201,2670,6.201,2671,6.201,2672,6.201,2673,10.038,2674,6.201,2675,10.038,2676,10.038,2677,6.201,2678,6.201,2679,6.201,2680,6.201,2681,6.201,2682,6.201,2683,6.201,2684,6.201,2685,6.201,2686,6.201,2687,9.474,2688,6.201,2689,6.73,2690,6.201,2691,6.201,2692,6.201,2693,6.201,2694,6.201,2695,6.201,2696,5.592,2697,5.592]],["keywords/343",[]],["title/344",[137,405.411,142,216.874,206,370.315,1174,591.461,2601,791.953]],["content/344",[12,10.734,24,2.671,142,4.079,157,7.277,205,7.427,228,5.548,578,9.551,584,6.715,1337,6.842,2046,13.649,2698,17.157,2699,17.157]],["keywords/344",[]],["title/345",[195,258.616,363,630.071,745,570.807]],["content/345",[0,1.993,11,2.614,129,9.042,130,7.085,195,4.348,227,6.109,235,6.056,363,8.449,474,7.247,504,13.176,745,7.654,1020,10.9,1059,12.473,1159,10.298,1189,9.214,1266,12.801,2700,15.679,2701,15.679,2702,15.679,2703,15.679]],["keywords/345",[]],["title/346",[366,748.888,880,640.221,1277,708.043]],["content/346",[0,2.449,31,4.357,51,9.346,112,6.679,119,4,177,4.343,179,5.574,195,3.36,227,7.507,594,10.251,706,10.909,973,12.401,1020,10.559,1038,12.083,1168,10.559,1350,11.111,1389,7.415,1405,7.771,2600,13.188,2704,16.485]],["keywords/346",[]],["title/347",[74,304.887,339,364.138,479,436.841,740,701.692]],["content/347",[]],["keywords/347",[]],["title/348",[142,278.011,143,615.771,144,483.846]],["content/348",[]],["keywords/348",[]],["title/349",[142,323.625,145,427.765]],["content/349",[24,3.027,146,10.398,147,15.471]],["keywords/349",[]],["title/350",[201,590.284]],["content/350",[31,6.309,112,7.27,142,4.488,149,4.674,154,5.945,158,7.454,160,10.092,162,9.364,163,7.013,170,7.013,182,9.448,200,8.84,223,4.496,228,3.896,406,7.598,1056,8.519,1337,3.967,1378,12.924,1489,7.913,1492,7.717,1780,10.228,1850,10.393,1864,8.808,2705,8.019,2706,18.875]],["keywords/350",[]],["title/351",[148,350.825,177,389.201]],["content/351",[0,1.778,11,3.977,24,2.178,31,4.014,39,3.482,146,5.094,150,3.496,151,3.399,152,5.055,153,4.482,154,3.426,155,5.055,156,4.944,157,5.934,158,5.894,159,6.729,160,7.481,161,6.341,162,5.396,163,8.144,164,6.523,165,6.523,166,7.242,167,12.513,168,7.242,169,7.242,170,8.144,171,5.995,172,7.402,173,7.579,174,7.579,175,3.6,179,3.496,182,5.444,294,4.189,374,4.592,375,4.592,376,4.592,407,4.874,408,4.874,1309,4.681,2707,5.259,2708,7.579,2709,5.894,2710,7.242,2711,7.579,2712,6.341,2713,7.242,2714,7.242,2715,7.579,2716,7.579,2717,7.579,2718,7.579,2719,7.579]],["keywords/351",[]],["title/352",[112,598.514,142,323.625]],["content/352",[24,3.068,147,15.68]],["keywords/352",[]],["title/353",[148,350.825,177,389.201]],["content/353",[0,1.195,11,3.92,24,2.157,59,4.325,150,3.451,151,3.355,157,6.98,160,8.8,163,9.58,167,9.489,170,9.58,171,4.029,174,7.481,175,3.554,179,3.451,182,9.405,294,4.135,374,4.533,375,4.533,376,4.533,403,9.489,404,9.489,407,8.42,408,8.42,1309,4.62,1339,7.651,2707,5.191,2708,7.481,2709,5.818,2710,7.149,2711,7.481,2712,10.954,2713,7.149,2714,7.149,2715,7.481,2716,7.481,2717,7.481,2718,7.481,2719,7.481,2720,9.404,2721,10.325,2722,9.789,2723,10.536,2724,9.404]],["keywords/353",[]],["title/354",[142,387.146]],["content/354",[24,3.068,186,14.41]],["keywords/354",[]],["title/355",[201,590.284]],["content/355",[31,6.181,142,4.335,154,6.556,1056,9.393,1780,11.279,1850,9.327,1857,9.601]],["keywords/355",[]],["title/356",[148,350.825,177,389.201]],["content/356",[0,2.175,11,3.612,24,2.664,150,4.653,151,4.523,157,7.259,160,6.778,163,7.379,167,11.719,170,7.379,171,5.431,175,4.791,179,4.653,182,7.245,187,9.268,294,5.575,374,6.111,375,6.111,376,6.111,407,6.486,408,6.486,1309,6.229,2707,6.999,2708,10.085,2709,7.843,2710,9.638,2711,10.085,2712,8.438,2713,9.638,2714,9.638,2715,10.085,2716,10.085,2717,10.085,2718,10.085,2719,10.085]],["keywords/356",[]],["title/357",[142,323.625,188,656.116]],["content/357",[24,3.027,186,14.218,188,9.375]],["keywords/357",[]],["title/358",[201,590.284]],["content/358",[31,5.983,142,4.959,154,5.296,158,9.112,160,10.101,200,10.101,223,5.496,228,4.762,1056,9.734,1337,4.85,1471,8.417,1780,9.112,1850,10.671,1857,7.756,2705,14.644]],["keywords/358",[]],["title/359",[148,350.825,177,389.201]],["content/359",[0,2.217,11,4.046,24,2.323,31,4.281,39,3.806,150,3.821,151,3.714,152,5.525,153,4.898,154,3.744,155,5.525,156,5.403,157,7.398,158,6.442,159,7.354,160,7.98,162,5.897,163,8.687,164,7.129,165,7.129,170,8.687,175,3.935,179,3.821,182,5.95,187,7.612,188,5.019,189,8.75,294,4.578,374,5.019,375,5.019,376,5.019,407,5.327,408,5.327,1309,5.116,2707,5.748,2709,6.442,2710,7.915,2712,6.93,2713,7.915,2714,7.915,2725,10.412,2726,10.412]],["keywords/359",[]],["title/360",[107,577.275,142,323.625]],["content/360",[24,3.027,107,8.248,186,14.218]],["keywords/360",[]],["title/361",[201,590.284]],["content/361",[31,6.181,142,4.335,154,6.556,1056,9.393,1780,11.279,1850,9.327,1857,9.601]],["keywords/361",[]],["title/362",[148,350.825,177,389.201]],["content/362",[0,2.175,11,3.458,24,2.664,107,5.377,150,4.653,151,4.523,157,7.259,160,6.778,163,7.379,167,11.719,170,7.379,171,5.431,175,4.791,179,4.653,182,7.245,187,9.268,294,5.575,374,6.111,375,6.111,376,6.111,407,6.486,408,6.486,1309,6.229,2707,6.999,2708,10.085,2709,7.843,2710,9.638,2711,10.085,2712,8.438,2713,9.638,2714,9.638,2715,10.085,2716,10.085,2717,10.085,2718,10.085,2719,10.085]],["keywords/362",[]],["title/363",[143,615.771,144,483.846,195,258.616]],["content/363",[]],["keywords/363",[]],["title/364",[119,240.206,142,216.874,145,286.663,195,201.744,242,822.532]],["content/364",[24,3.027,146,10.398,243,14.218]],["keywords/364",[]],["title/365",[201,590.284]],["content/365",[31,5.774,38,5.282,50,5.282,51,3.382,55,4.021,91,5.564,94,3.985,142,4.785,144,2.885,149,2.705,154,6.089,158,6.822,177,3.911,182,6.301,194,3.168,195,3.745,196,4.415,211,6.822,212,2.872,213,5.807,219,5.418,221,5.315,223,6.718,225,3.728,228,3.565,423,6.609,468,3.186,479,2.972,481,3.151,486,6.138,566,3.018,620,4.098,814,3.949,817,3.672,844,4.706,864,4.847,1004,4.059,1056,8.009,1062,2.693,1086,7.15,1281,5.301,1318,4.314,1322,6.245,1337,2.296,1485,6.543,1633,5.301,1713,4.466,1780,4.314,1850,10.942,1864,5.098,2424,6.288,2547,8.772,2549,8.772,2551,10.88,2705,4.641,2727,5.86,2728,10.397,2729,6.973,2730,8.772,2731,11.026,2732,6.973,2733,6.973,2734,6.288,2735,5.693,2736,5.86,2737,6.288,2738,6.288,2739,6.973]],["keywords/365",[]],["title/366",[148,350.825,177,389.201]],["content/366",[11,3.956,24,1.73,31,2.02,38,3.373,39,2.573,42,4.348,80,3.217,92,4.112,142,2.642,146,3.764,150,2.584,151,2.512,152,3.736,153,3.312,154,2.532,155,3.736,156,3.654,175,2.661,179,2.584,198,7.863,212,4.576,213,3.708,214,2.584,215,5.684,216,4.023,219,3.459,220,3.887,221,3.394,222,2.956,223,5.136,224,5.323,225,5.941,226,4.098,227,4.329,228,2.276,229,4.098,230,5.766,231,5.808,244,7.865,245,4.263,246,4.356,247,4.263,248,4.686,249,5.147,294,3.096,374,3.394,375,3.394,376,3.394,401,3.887,407,3.602,408,5.684,1309,3.459,2707,3.887,2740,7.04,2741,8.123,2742,7.04,2743,7.04,2744,7.04,2745,7.04,2746,7.04,2747,5.147,2748,5.147,2749,4.509,2750,7.04,2751,4.973,2752,4.973,2753,4.973,2754,4.456,2755,4.456,2756,4.456,2757,4.973,2758,4.973,2759,5.147,2760,8.71,2761,4.456,2762,4.456,2763,4.686,2764,7.032,2765,4.456,2766,7.032,2767,7.032,2768,4.686,2769,5.147,2770,5.147,2771,4.456]],["keywords/366",[]],["title/367",[119,216.411,142,195.391,145,258.266,195,181.759,263,546.964,264,741.051]],["content/367",[24,3.027,146,10.398,243,14.218]],["keywords/367",[]],["title/368",[201,590.284]],["content/368",[149,7.445,211,11.873,1864,14.031,2705,12.774]],["keywords/368",[]],["title/369",[148,350.825,177,389.201]],["content/369",[0,1.91,11,3.918,24,1.636,31,3.015,38,3.145,39,2.399,42,4.113,80,3,92,3.889,93,4.563,94,3.751,142,3.908,143,3.457,144,4.349,146,3.51,148,1.692,150,2.409,151,2.342,152,3.483,153,3.088,154,2.361,155,3.483,156,3.407,157,5.574,175,2.481,179,2.409,198,6.074,212,4.328,213,3.457,214,2.409,215,5.377,216,3.751,219,3.225,220,3.624,221,3.164,222,2.757,223,4.904,224,5.035,225,5.619,226,3.821,227,4.095,244,7.51,245,3.975,246,4.061,247,3.975,248,4.369,249,4.799,265,3.686,266,4.891,267,2.934,268,5.576,269,4.715,294,2.887,374,3.164,375,3.164,376,3.164,401,3.624,407,3.358,408,6.724,1309,3.225,2707,3.624,2709,4.061,2741,7.683,2747,4.799,2748,4.799,2749,4.204,2751,4.636,2752,4.636,2753,4.636,2754,4.155,2755,4.155,2756,4.155,2757,4.636,2758,4.636,2759,4.799,2760,6.651,2761,4.155,2762,4.155,2764,6.651,2765,4.155,2766,6.651,2767,6.651,2768,4.369,2769,4.799,2770,4.799,2771,4.155,2772,4.99,2773,4.99,2774,4.99,2775,4.99,2776,4.99,2777,4.99,2778,5.222]],["keywords/369",[]],["title/370",[112,598.514,195,301.048]],["content/370",[24,3.068,243,14.41]],["keywords/370",[]],["title/371",[148,350.825,177,389.201]],["content/371",[0,0.858,11,3.78,24,1.672,142,2.554,150,2.476,151,2.407,157,2.862,175,2.55,179,2.476,198,6.186,212,4.424,215,5.496,223,5.694,224,5.146,227,4.185,230,3.501,231,3.527,244,6.139,249,4.933,294,2.967,374,3.252,375,3.252,376,3.252,401,5.93,407,5.496,408,8.524,1309,3.315,2707,3.725,2709,4.174,2741,7.853,2747,4.933,2748,7.853,2749,10.671,2751,4.765,2752,4.765,2753,4.765,2754,6.798,2755,6.798,2756,6.798,2757,7.587,2758,7.587,2759,4.933,2760,10.545,2761,6.798,2762,6.798,2763,4.491,2764,9.658,2765,8.47,2766,9.658,2767,9.658,2768,8.908,2769,4.933,2770,4.933,2771,6.798,2772,5.129,2773,5.129,2774,5.129,2775,5.129,2776,5.129,2777,5.129,2778,5.367,2779,5.367,2780,9.687,2781,6.084,2782,6.084,2783,6.084,2784,6.084,2785,6.084,2786,6.747,2787,9.687,2788,5.129,2789,6.747,2790,6.747,2791,6.747,2792,6.747,2793,4.933]],["keywords/371",[]],["title/372",[195,360.137]],["content/372",[24,3.068,282,14.41]],["keywords/372",[]],["title/373",[201,590.284]],["content/373",[31,5.23,154,6.556,195,4.032,905,9.262,1056,9.393,1850,9.327,1857,9.601,2794,12.876]],["keywords/373",[]],["title/374",[148,350.825,177,389.201]],["content/374",[0,1.243,11,3.695,24,2.221,142,2.326,150,3.59,151,3.49,157,4.149,175,3.697,179,3.59,198,6.594,212,4.029,215,5.005,223,5.324,224,4.687,227,3.812,244,8.152,294,4.302,374,4.716,375,4.716,376,4.716,401,5.401,407,5.005,408,8.615,1309,4.807,2707,5.401,2709,6.052,2741,10.43,2747,7.152,2748,7.152,2749,6.266,2751,6.909,2752,6.909,2753,6.909,2754,6.191,2755,6.191,2756,6.191,2757,6.909,2758,6.909,2759,7.152,2760,9.029,2761,6.191,2762,6.191,2764,9.029,2765,6.191,2766,9.029,2767,9.029,2768,6.511,2769,7.152,2770,7.152,2771,6.191,2772,7.437,2773,7.437,2774,7.437,2775,7.437,2776,7.437,2777,7.437,2778,7.782,2795,8.221]],["keywords/374",[]],["title/375",[188,656.116,195,301.048]],["content/375",[24,3.027,188,9.375,282,14.218]],["keywords/375",[]],["title/376",[201,590.284]],["content/376",[31,4.061,55,8.163,142,4.378,154,5.091,177,4.048,182,8.089,195,4.527,196,7.372,212,7.583,223,6.871,905,7.192,1056,7.294,1062,5.467,1258,6.326,1850,7.242,1857,7.455,2547,11.261,2549,11.261,2551,11.261,2705,14.426,2728,10.761,2794,9.998]],["keywords/376",[]],["title/377",[148,350.825,177,389.201]],["content/377",[11,3.956,24,1.73,31,2.02,38,3.373,39,2.573,42,2.755,80,3.217,92,4.112,137,3.129,142,2.642,150,2.584,151,2.512,152,3.736,153,3.312,154,2.532,155,3.736,156,3.654,175,2.661,179,2.584,188,3.394,198,7.863,212,4.576,213,3.708,214,2.584,215,5.684,216,4.023,219,3.459,220,3.887,221,3.394,222,2.956,223,5.136,224,5.323,225,5.941,226,4.098,227,4.329,228,2.276,229,4.098,230,5.766,231,5.808,244,7.865,245,4.263,246,4.356,247,4.263,248,4.686,294,3.096,374,3.394,375,3.394,376,3.394,401,3.887,407,3.602,408,5.684,1309,3.459,2707,3.887,2741,8.123,2747,5.147,2748,5.147,2749,4.509,2751,4.973,2752,4.973,2753,4.973,2754,4.456,2755,4.456,2756,4.456,2757,4.973,2758,4.973,2759,5.147,2760,8.71,2761,4.456,2762,4.456,2763,4.686,2764,4.456,2765,4.456,2766,7.032,2767,7.032,2768,4.686,2769,5.147,2770,5.147,2771,4.456,2772,5.352,2773,5.352,2774,5.352,2775,5.352,2776,5.352,2777,5.352,2778,5.601,2795,5.916,2796,6.349]],["keywords/377",[]],["title/378",[107,577.275,195,301.048]],["content/378",[24,3.027,107,8.248,282,14.218]],["keywords/378",[]],["title/379",[201,590.284]],["content/379",[31,5.23,154,6.556,195,4.032,905,9.262,1056,9.393,1850,9.327,1857,9.601,2794,12.876]],["keywords/379",[]],["title/380",[148,350.825,177,389.201]],["content/380",[11,3.695,24,2.221,107,4.149,142,2.326,150,3.59,151,3.49,175,3.697,179,3.59,198,7.783,212,4.029,215,5.005,223,5.324,224,4.687,227,3.812,230,5.077,231,5.114,244,8.152,294,4.302,374,4.716,375,4.716,376,4.716,401,5.401,407,5.005,408,7.299,1309,4.807,2707,5.401,2741,10.43,2751,6.909,2752,6.909,2753,6.909,2754,6.191,2755,6.191,2756,6.191,2757,6.909,2758,6.909,2759,7.152,2760,10.657,2761,6.191,2762,6.191,2763,6.511,2764,6.191,2765,6.191,2766,9.029,2767,9.029,2768,6.511,2769,7.152,2770,7.152,2771,6.191,2772,7.437,2773,7.437,2774,7.437,2775,7.437,2776,7.437,2777,7.437,2795,8.221,2796,8.822,2797,9.782,2798,9.782]],["keywords/380",[]],["title/381",[112,514.154,195,258.616,284,560.149]],["content/381",[24,3.068,285,17.775]],["keywords/381",[]],["title/382",[148,350.825,177,389.201]],["content/382",[11,3.964,24,2.866,65,10.43,150,5.195,151,5.05,175,5.35,179,5.195,224,6.782,227,5.516,286,12.765,290,11.261,292,14.649,294,6.225,374,6.824,375,6.824,376,6.824,1309,6.955,2707,7.815,2779,11.261,2799,16.605]],["keywords/382",[]],["title/383",[195,301.048,284,652.056]],["content/383",[24,3.068,295,17.775]],["keywords/383",[]],["title/384",[201,590.284]],["content/384",[31,5.23,154,6.556,195,4.032,905,9.262,1056,9.393,1850,9.327,1857,9.601,2794,12.876]],["keywords/384",[]],["title/385",[148,350.825,177,389.201]],["content/385",[11,3.918,24,2.885,65,10.496,150,5.246,151,5.099,175,5.402,179,5.246,224,6.848,227,5.57,290,11.372,292,14.742,294,6.286,374,6.891,375,6.891,376,6.891,1309,7.023,2707,7.892,2779,11.372,2799,16.711,2800,14.294]],["keywords/385",[]],["title/386",[59,364.91,143,615.771,144,483.846]],["content/386",[]],["keywords/386",[]],["title/387",[59,364.91,145,367.472,346,537.333]],["content/387",[24,3.027,146,10.398,379,15.471]],["keywords/387",[]],["title/388",[201,590.284]],["content/388",[31,5.67,38,7.576,51,5.482,55,9.12,59,6.168,92,4.182,142,4.338,144,4.676,149,4.384,154,6.561,182,9.038,195,2.499,196,4.524,212,4.654,223,5.902,381,9.496,412,3.968,481,5.106,566,4.892,905,5.741,1056,9.4,1062,4.364,1485,6.706,1780,6.991,1850,10.642,2705,7.522,2727,9.496,2728,8.591,2730,8.99,2736,9.496,2801,15.815,2802,15.815,2803,15.815,2804,11.3]],["keywords/388",[]],["title/389",[148,350.825,177,389.201]],["content/389",[11,3.968,24,1.987,31,3.662,38,4.036,39,3.079,43,5.469,59,5.367,92,3.118,142,3.035,145,2.648,146,4.505,150,3.092,151,3.005,152,4.47,153,3.963,154,3.03,155,4.47,156,4.372,157,5.414,160,4.505,163,4.904,170,4.904,175,3.184,179,3.092,212,5.257,219,4.139,223,5.752,294,3.705,346,5.867,374,4.061,375,4.061,376,4.061,380,10.554,381,7.08,382,7.597,383,7.08,384,7.08,385,7.597,386,6.878,388,9.016,394,5.95,395,7.597,396,6.702,400,5.95,401,4.651,402,5.768,403,5.768,404,5.768,407,4.31,408,4.31,1309,4.139,2712,5.607,2721,6.277,2722,5.95,2723,6.405,2749,5.396,2788,6.405,2805,6.702,2806,6.702,2807,6.702,2808,6.702,2809,6.702,2810,6.702,2811,6.702,2812,6.702,2813,6.702,2814,6.702]],["keywords/389",[]],["title/390",[59,284.664,112,401.088,346,419.17,411,693.415,412,320.29]],["content/390",[24,3.068,379,15.68]],["keywords/390",[]],["title/391",[201,590.284]],["content/391",[31,5.23,154,6.556,412,6.402,905,9.262,1056,9.393,1311,14.884,1850,9.327,2794,12.876]],["keywords/391",[]],["title/392",[148,350.825,177,389.201]],["content/392",[11,3.785,24,2.384,59,4.78,142,2.567,150,3.963,151,3.852,157,4.58,160,5.774,163,6.285,170,6.285,175,4.081,179,3.963,212,4.447,223,5.715,294,4.748,346,4.962,374,5.205,375,5.205,376,5.205,380,10.487,388,10.818,394,7.626,400,7.626,401,5.961,402,7.393,403,7.393,404,7.393,407,5.524,408,5.524,414,9.737,1309,5.305,2712,7.187,2721,8.045,2722,7.626,2723,8.209,2749,6.916,2788,8.209,2805,8.59,2806,8.59,2807,8.59,2808,8.59,2809,8.59,2810,8.59,2811,8.59,2812,8.59,2813,8.59,2814,8.59,2815,10.798,2816,9.737,2817,9.737]],["keywords/392",[]],["title/393",[59,424.783,346,625.496]],["content/393",[24,3.068,416,15.68]],["keywords/393",[]],["title/394",[201,590.284]],["content/394",[31,5.23,59,5.69,154,6.556,905,9.262,1056,9.393,1850,9.327,1857,9.601,2794,12.876]],["keywords/394",[]],["title/395",[148,350.825,177,389.201]],["content/395",[11,3.728,24,2.397,59,4.805,142,2.587,150,3.992,151,3.881,157,4.614,160,5.817,163,6.332,170,6.332,175,4.111,179,3.992,212,4.48,223,5.746,294,4.784,346,4.999,374,5.244,375,5.244,376,5.244,380,10.543,388,10.875,394,7.683,400,7.683,401,6.006,402,7.449,403,7.449,404,7.449,407,5.566,408,5.566,418,9.81,1309,5.345,2712,7.241,2721,8.105,2722,7.683,2723,8.27,2749,6.968,2788,8.27,2805,8.654,2806,8.654,2807,8.654,2808,8.654,2809,8.654,2810,8.654,2811,8.654,2812,8.654,2813,8.654,2814,8.654,2816,9.81,2817,9.81,2818,9.81]],["keywords/395",[]],["title/396",[59,364.91,107,495.909,346,537.333]],["content/396",[24,3.027,107,8.248,416,15.471]],["keywords/396",[]],["title/397",[201,590.284]],["content/397",[31,5.23,59,5.69,154,6.556,905,9.262,1056,9.393,1850,9.327,1857,9.601,2794,12.876]],["keywords/397",[]],["title/398",[148,350.825,177,389.201]],["content/398",[11,3.699,24,2.347,59,5.488,107,4.48,142,2.512,150,3.877,151,3.768,157,4.48,160,5.648,163,6.148,170,6.148,175,3.992,179,3.877,212,4.35,223,5.627,294,4.645,346,6.929,374,5.092,375,5.092,376,5.092,377,9.525,380,10.324,388,10.65,394,7.461,396,8.403,400,7.461,401,5.831,402,7.233,403,7.233,404,7.233,407,5.404,408,5.404,425,8.877,1309,5.19,2712,7.031,2721,7.87,2722,7.461,2723,8.03,2749,6.765,2788,8.03,2805,8.403,2806,8.403,2807,8.403,2808,8.403,2809,8.403,2810,8.403,2811,8.403,2812,8.403,2813,8.403,2814,8.403,2818,9.525,2819,10.563]],["keywords/398",[]],["title/399",[874,764.225,1584,977.584]],["content/399",[]],["keywords/399",[]],["title/400",[1050,1069.432]],["content/400",[49,8.347,119,4.174,144,6.559,148,4.085,179,7.263,195,3.506,669,12.05,842,9.598,874,12.116,988,11.195,1050,10.41,1584,15.498,2820,14.293,2821,14.293,2822,11.384]],["keywords/400",[]],["title/401",[148,419.684]],["content/401",[0,1.625,10,4.713,11,3.244,24,1.991,51,6.204,64,4.344,177,3.657,179,4.693,206,5.192,227,4.983,490,5.292,492,12.177,516,6.891,630,6.089,874,7.181,876,11.104,917,7.912,1200,9.185,1584,9.185,2195,12.069,2696,11.533,2697,11.533,2820,11.533,2821,11.533,2822,9.185,2823,13.089,2824,10.441,2825,12.069,2826,19.463,2827,12.788,2828,12.788,2829,12.069,2830,11.533,2831,12.788]],["keywords/401",[]],["title/402",[1583,1055.827]],["content/402",[]],["keywords/402",[]],["title/403",[142,243.666,747,673.09,1485,608.117,2832,1024.781]],["content/403",[]],["keywords/403",[]],["title/404",[142,323.625,1485,807.671]],["content/404",[11,3.415,91,8.458,94,9.579,195,3.707,284,8.03,796,6.203,880,9.178,1058,14.086,1583,10.869,2146,14.554,2833,20.485,2834,15.116,2835,15.116]],["keywords/404",[]],["title/405",[148,419.684]],["content/405",[11,4.023,24,1.956,31,3.606,38,6.021,39,4.594,42,4.919,92,4.651,142,2.988,198,7.865,212,5.176,213,6.619,214,4.612,215,6.43,219,6.175,220,6.938,221,6.058,222,7.145,223,4.69,225,6.72,227,4.897,228,4.064,229,7.315,230,6.522,231,6.57,245,7.611,247,7.611,280,7.611,1583,8.15,2836,12.568,2837,12.568,2838,12.568]],["keywords/405",[]],["title/406",[1546,767.961,1583,758.192,2835,1054.402]],["content/406",[129,10.133,130,7.939,195,3.886,820,13.651,880,9.621,917,13.041,1020,12.214,1583,13.668,2834,15.845]],["keywords/406",[]],["title/407",[143,539.701,144,424.074,195,226.667,196,410.291]],["content/407",[]],["keywords/407",[]],["title/408",[145,367.472,195,258.616,196,468.121]],["content/408",[24,3.027,146,10.398,197,15.471]],["keywords/408",[]],["title/409",[201,590.284]],["content/409",[11,1.075,31,6.107,38,4.963,50,4.963,51,3.128,55,3.719,142,3.088,144,2.668,154,6.255,177,3.713,182,5.92,191,3.652,195,4.452,196,6.964,199,6.718,200,7.951,201,6.306,203,5.416,205,5.621,211,8.034,212,2.655,213,5.456,219,5.09,221,4.994,223,6.078,225,3.448,228,3.35,423,6.209,481,2.914,486,5.767,566,2.791,844,4.352,864,4.482,990,4.181,1056,8.962,1062,2.49,1485,6.148,1713,4.13,1780,8.034,1782,5.13,1850,11.503,2547,8.242,2549,8.242,2551,10.33,2705,10.842,2727,5.419,2728,9.872,2730,8.242,2734,5.815,2735,5.265,2736,5.419,2737,5.815,2738,5.815,2839,5.815,2840,6.448,2841,6.448]],["keywords/409",[]],["title/410",[148,350.825,177,389.201]],["content/410",[11,4.043,24,1.205,31,4.481,38,2.175,39,1.659,42,3.031,64,1.954,80,6.139,92,2.866,142,1.841,146,2.427,150,1.666,151,1.619,152,2.409,153,2.135,154,1.632,155,2.409,156,2.356,175,1.716,179,1.666,191,5.736,195,1.713,196,4.792,198,6.762,199,5.021,200,9.514,201,2.807,202,7.153,203,5.294,204,3.527,205,4.384,206,4.859,207,6.409,208,3.527,209,5.887,210,5.661,211,4.791,212,3.189,213,2.391,214,1.666,215,3.962,216,2.594,217,3.611,218,3.611,219,2.23,220,4.275,221,2.188,222,1.906,223,2.89,224,3.71,225,4.141,226,4.507,227,3.017,228,1.468,229,2.642,230,4.019,231,4.048,232,3.611,294,1.996,374,2.188,375,2.188,376,2.188,401,2.506,407,2.322,408,3.962,1309,2.23,2707,2.506,2709,2.808,2754,2.873,2755,2.873,2756,2.873,2760,6.409,2761,2.873,2762,2.873,2763,3.021,2764,4.901,2765,4.901,2766,4.901,2767,4.901,2771,2.873,2793,3.319,2842,3.611,2843,4.093,2844,3.611,2845,3.611,2846,3.611,2847,8.056,2848,3.611,2849,8.056,2850,3.611,2851,3.611,2852,3.611,2853,3.611,2854,3.611,2855,3.611,2856,3.611,2857,11.638,2858,9.521,2859,3.611,2860,3.611,2861,6.16,2862,3.611,2863,3.611,2864,3.611,2865,3.611,2866,3.611,2867,3.611,2868,6.983,2869,6.983,2870,6.983]],["keywords/410",[]],["title/411",[112,514.154,195,258.616,196,468.121]],["content/411",[24,3.068,197,15.68]],["keywords/411",[]],["title/412",[148,350.825,177,389.201]],["content/412",[11,4.023,24,1.666,31,1.927,64,1.695,80,4.89,142,1.597,150,2.465,151,2.396,175,2.538,179,2.465,195,1.485,196,4.285,198,6.167,200,9.47,201,2.435,202,4.743,206,4.345,207,4.25,210,4.91,211,4.155,212,2.766,215,3.436,223,2.506,224,3.217,227,2.617,230,3.485,231,3.511,232,5.343,294,2.953,374,3.237,375,3.237,376,3.237,401,3.708,407,3.436,408,5.475,1309,3.3,2707,3.708,2709,4.155,2754,4.25,2755,4.25,2756,4.25,2760,8.444,2761,4.25,2762,4.25,2763,4.47,2764,6.773,2765,6.773,2766,6.773,2767,6.773,2771,4.25,2793,4.91,2842,5.343,2843,6.056,2844,5.343,2845,5.343,2846,5.343,2847,10.614,2848,5.343,2849,10.614,2850,5.343,2851,5.343,2852,5.343,2853,5.343,2854,5.343,2855,5.343,2856,5.343,2857,14.09,2858,12.108,2859,5.343,2860,5.343,2861,8.514,2862,5.343,2863,5.343,2864,5.343,2865,5.343,2866,5.343,2867,5.343,2868,9.651,2869,9.651,2870,9.651]],["keywords/412",[]],["title/413",[188,563.637,195,258.616,196,468.121]],["content/413",[24,3.027,188,9.375,2871,17.537]],["keywords/413",[]],["title/414",[201,590.284]],["content/414",[31,5.79,154,4.946,195,4.741,196,8.582,199,11.718,200,9.663,201,6.551,205,5.954,211,11.18,223,5.133,1056,7.087,1780,8.51,1850,10.326,1857,7.244,2705,14.818,2839,12.404]],["keywords/414",[]],["title/415",[148,350.825,177,389.201]],["content/415",[11,4.033,24,1.209,31,4.488,38,2.181,39,1.664,42,3.039,64,1.959,80,6.696,92,2.873,142,1.846,150,1.671,151,1.624,152,2.416,153,2.142,154,1.637,155,2.416,156,2.363,175,1.721,179,1.671,188,2.195,191,5.749,195,1.717,196,5.389,198,7.231,199,5.035,200,9.525,201,2.815,202,7.169,203,5.306,204,3.538,205,4.394,206,4.869,207,6.424,208,3.538,209,5.903,210,5.677,211,4.804,212,3.198,213,2.398,214,1.671,215,3.972,216,2.602,217,3.622,218,3.622,219,2.237,220,4.286,221,2.195,222,1.912,223,2.897,224,3.72,225,4.152,226,4.519,227,3.025,228,1.472,229,2.65,230,4.029,231,4.059,234,3.462,235,2.999,294,2.002,374,2.195,375,2.195,376,2.195,401,2.514,407,2.33,408,3.972,1309,2.237,2707,2.514,2709,2.817,2754,2.882,2755,2.882,2756,2.882,2760,6.424,2761,2.882,2762,2.882,2763,3.031,2764,4.914,2765,4.914,2766,4.914,2767,4.914,2768,5.168,2771,2.882,2793,3.329,2842,3.622,2844,3.622,2845,3.622,2846,3.622,2847,8.075,2848,3.622,2849,8.075,2850,3.622,2851,3.622,2852,3.622,2853,3.622,2854,3.622,2855,3.622,2856,3.622,2857,11.657,2858,9.541,2859,3.622,2860,3.622,2861,6.177,2862,3.622,2863,3.622,2864,3.622,2865,3.622,2866,3.622,2867,3.622,2872,4.106]],["keywords/415",[]],["title/416",[107,495.909,195,258.616,196,468.121]],["content/416",[24,3.027,107,8.248,2871,17.537]],["keywords/416",[]],["title/417",[201,590.284]],["content/417",[31,6.091,154,6.396,195,3.934,196,7.121,205,7.699,1056,9.164,1780,11.003,1850,9.099,1857,9.366]],["keywords/417",[]],["title/418",[148,350.825,177,389.201]],["content/418",[11,3.993,24,1.678,31,1.945,64,1.71,80,6.134,107,2.875,142,1.612,150,2.488,151,2.418,179,2.488,195,1.499,196,5.375,198,7.072,200,9.509,201,2.457,202,4.787,206,4.377,207,4.29,210,4.956,211,4.193,212,2.791,215,3.468,223,2.529,224,3.247,227,2.641,230,3.518,231,3.543,234,5.153,235,2.618,294,2.981,374,3.267,375,3.267,376,3.267,401,3.742,407,3.468,408,5.516,1309,3.33,2707,3.742,2709,4.193,2754,4.29,2755,4.29,2756,4.29,2760,8.496,2761,4.29,2762,4.29,2763,4.512,2764,6.824,2765,6.824,2766,6.824,2767,6.824,2768,7.176,2771,4.29,2793,4.956,2842,5.392,2844,5.392,2845,5.392,2846,5.392,2847,10.68,2848,5.392,2849,10.68,2850,5.392,2851,5.392,2852,5.392,2853,5.392,2854,5.392,2855,5.392,2856,5.392,2857,14.148,2858,12.171,2859,5.392,2860,5.392,2861,8.577,2862,5.392,2863,5.392,2864,5.392,2865,5.392,2866,5.392,2867,5.392,2872,6.112,2873,6.778]],["keywords/418",[]],["title/419",[119,269.88,145,322.076,195,226.667,196,410.291]],["content/419",[24,3.027,146,10.398,236,17.537]],["keywords/419",[]],["title/420",[201,590.284]],["content/420",[31,6.409,154,5.52,195,4.703,196,7.765,201,5.564,209,11.669,237,11.925,468,7.014,1056,7.908,1850,10.878,1857,8.083,2705,12.909,2728,11.669,2874,15.349]],["keywords/420",[]],["title/421",[148,350.825,177,389.201]],["content/421",[11,3.865,24,2.032,31,2.489,80,5.964,142,2.063,146,4.639,150,3.184,151,3.095,152,4.603,153,4.081,154,3.12,155,4.603,156,4.502,175,3.279,179,3.184,196,3.473,198,7.252,212,3.573,215,4.439,223,4.87,224,4.156,227,3.38,230,4.502,231,4.535,237,6.74,238,7.823,239,7.823,240,7.823,241,7.823,294,3.815,374,4.182,375,4.182,376,4.182,401,4.79,407,4.439,408,6.677,1309,4.263,2707,4.79,2747,6.343,2748,6.343,2749,5.557,2751,6.128,2752,6.128,2753,6.128,2754,5.491,2755,5.491,2756,5.491,2757,6.128,2758,6.128,2760,9.93,2761,5.491,2762,5.491,2763,5.774,2764,8.26,2765,8.26,2766,8.26,2767,8.26,2768,8.687,2771,5.491,2779,6.902,2780,11.77,2781,7.823,2782,7.823,2783,7.823,2784,7.823,2785,7.823,2787,7.823,2793,6.343]],["keywords/421",[]],["title/422",[195,301.048,1792,824.216]],["content/422",[]],["keywords/422",[]],["title/423",[1705,946.169,2875,1227.403]],["content/423",[0,2.346,74,5.492,145,5.802,195,4.083,284,8.844,529,6.508,1792,11.179]],["keywords/423",[]],["title/424",[11,170.825,244,585.631,2876,1024.781,2877,736.049]],["content/424",[0,2.157,11,3.954,24,1.544,31,2.845,38,4.75,39,3.624,42,5.639,80,4.531,92,5.331,142,2.358,144,4.103,145,3.116,148,2.556,195,4.12,198,6.659,201,3.595,212,4.084,213,5.222,214,3.639,215,5.073,216,5.666,219,4.872,220,5.474,221,4.78,222,4.164,223,5.376,224,4.75,225,7.703,226,8.386,227,3.864,228,3.206,229,5.772,230,5.146,231,5.184,244,5.666,245,6.005,246,6.135,247,6.005,481,4.48,482,5.943,492,6.204,566,6.236,762,7.004,1738,5.884,1760,5.827,1792,6.005,2570,7.888,2875,8.942,2878,9.916]],["keywords/424",[]],["title/425",[11,136.981,244,469.604,2570,653.736,2877,590.221,2879,821.749,2880,526.331]],["content/425",[0,2.226,11,3.899,24,1.632,31,3.009,38,5.024,39,3.833,80,4.792,92,3.881,137,4.661,142,2.493,144,4.34,148,2.703,188,5.055,195,4.473,198,6.933,201,3.802,212,4.319,213,5.523,214,3.849,215,5.365,216,5.993,219,5.153,220,5.789,221,5.055,222,4.404,223,5.598,225,5.607,226,6.104,227,4.086,228,3.391,229,6.104,230,5.442,231,5.482,244,5.993,245,6.35,246,6.488,247,6.35,481,4.738,482,6.286,566,6.493,762,7.407,905,7.621,1738,6.223,1760,6.163,2570,8.343,2881,10.487]],["keywords/425",[]],["title/426",[11,170.825,2877,736.049,2880,656.373,2882,1024.781]],["content/426",[0,2.533,11,2.671,24,2.494,148,4.13,195,4.796,201,5.809,566,8.625,905,11.017,1665,13.466,1738,9.509,1760,11.709,2883,16.024]],["keywords/426",[]],["title/427",[11,170.825,2884,1024.781,2885,1024.781,2886,924.145]],["content/427",[0,2.037,11,2.671,24,2.494,40,7.009,64,4.044,107,6.796,112,8.762,145,5.036,148,4.13,195,4.796,201,5.809,258,10.391,412,5.627,1738,9.509,2887,13.913,2888,16.024]],["keywords/427",[]],["title/428",[11,170.825,2877,736.049,2880,656.373,2889,1024.781]],["content/428",[0,2.784,24,2.551,107,8.568,148,4.223,195,4.844,201,5.94,566,7.092,905,10.264,1738,9.723,1760,9.628,2890,16.385]],["keywords/428",[]],["title/429",[11,136.981,45,453.668,2880,526.331,2891,821.749,2892,821.749,2893,821.749]],["content/429",[0,1.817,24,2.225,39,6.773,55,12.546,67,7.764,148,3.684,195,4.099,201,5.182,206,5.804,222,6.003,281,12.506,284,10.422,468,6.532,905,7.262,1738,8.482,1760,8.4,2138,16.711,2894,14.294,2895,14.294,2896,14.294]],["keywords/429",[]],["title/430",[11,170.825,2880,656.373,2886,924.145,2897,1024.781]],["content/430",[0,2.015,11,2.642,24,2.467,40,6.933,64,4,107,6.722,112,8.702,145,4.981,148,4.085,195,4.377,201,5.746,258,10.278,284,10.337,1738,9.405,2887,13.762,2898,15.85]],["keywords/430",[]],["title/431",[11,136.981,2877,590.221,2880,526.331,2899,821.749,2900,821.749,2901,821.749]],["content/431",[0,2.401,11,2.455,24,2.293,40,6.442,148,3.796,195,4.866,201,5.339,284,9.05,525,9.94,718,10.085,740,10.085,905,7.483,1004,8.573,1200,10.578,1287,10.578,1738,8.74,2359,11.443,2902,14.728,2903,14.728,2904,14.728,2905,14.728,2906,14.728]],["keywords/431",[]],["title/432",[0,172.997,1389,664.462]],["content/432",[]],["keywords/432",[]],["title/433",[230,844.988]],["content/433",[0,2.037,130,7.241,144,6.631,194,9.054,214,5.881,479,8.494,734,10.142,788,7.823,874,8.997,988,11.318,1092,8.997,1241,10.525,1390,19.555,1493,13.913,2907,15.123]],["keywords/433",[]],["title/434",[214,429.117,479,498.413,1389,570.807]],["content/434",[]],["keywords/434",[]],["title/435",[3,1131.882]],["content/435",[0,2.398,11,3.334,24,1.587,25,8.884,31,2.924,43,6.297,64,2.572,142,2.424,145,3.204,205,4.412,479,4.345,490,4.218,539,7.92,578,10.503,620,11.087,622,6.695,677,5.627,852,15.009,903,6.98,904,8.322,1241,11.321,1360,8.85,1489,11.321,1492,12.084,2107,8.85,2501,11.419,2594,8.109,2908,10.193,2909,13.254,2910,11.063,2911,15.855,2912,9.192,2913,11.063,2914,10.193,2915,11.063]],["keywords/435",[]],["title/436",[1337,448.166,2501,1057.49]],["content/436",[0,1.748,13,6.94,24,2.141,64,4.56,119,3.622,142,3.27,214,5.048,412,6.346,474,6.358,479,5.863,490,5.692,502,6.51,584,5.383,652,7.19,800,8.605,959,8.329,1005,11.943,1022,9.562,1042,8.705,1111,9.034,1337,4.529,1389,6.715,1828,11.559,2242,12.981,2298,8.919,2501,14.04,2916,18.071,2917,11.559,2918,13.754,2919,13.754]],["keywords/436",[]],["title/437",[177,389.201,860,1082.782]],["content/437",[0,1.425,11,2.622,24,2.828,46,6.937,48,5.275,64,2.83,119,5.187,136,8.921,149,4.35,154,4.032,177,3.206,214,5.773,490,4.64,492,7.015,578,8.757,583,6.408,745,5.474,814,6.351,860,8.921,871,7.92,903,13.486,904,12.842,1564,8.757,2064,10.112,2909,14.185,2912,10.112,2920,11.213,2921,11.213,2922,11.213,2923,11.213,2924,11.213,2925,11.213,2926,11.213,2927,11.213,2928,11.213,2929,11.213,2930,11.213,2931,11.213,2932,11.213,2933,14.185,2934,15.729,2935,11.213]],["keywords/437",[]],["title/438",[43,583.143,2038,1057.49]],["content/438",[0,2.163,1,5.44,24,3.003,29,7.118,43,8.858,44,10.561,49,6.619,50,6.021,51,6.097,64,5.451,74,3.739,119,3.31,432,5.743,433,6.826,459,6.57,479,5.357,583,7.182,584,4.919,862,12.44,1140,7.954,1495,15.345,2038,14.989,2059,12.018,2594,9.998,2936,19.291,2937,17.016]],["keywords/438",[]],["title/439",[214,376.105,652,535.719,1389,500.291,1828,861.186]],["content/439",[0,1.012,11,3.302,13,4.019,22,3.249,24,2.6,25,3.218,42,3.117,64,2.01,74,3.639,119,3.221,123,5.933,129,4.593,144,6.912,177,3.497,193,4.133,205,3.447,214,2.923,223,2.972,235,3.076,267,7.465,458,4.194,468,3.639,492,7.651,510,4.726,578,4.434,583,4.551,630,3.792,641,5.453,652,7.783,677,6.752,750,11.567,779,4.472,900,5.453,904,6.502,959,4.823,1050,5.231,1071,4.874,1125,3.965,1189,4.68,1303,4.551,1389,5.97,1792,4.823,1857,4.194,1901,11.029,2146,6.915,2252,7.964,2381,6.915,2501,6.188,2721,5.933,2722,5.625,2911,6.693,2938,7.964,2939,8.644,2940,13.273,2941,13.273,2942,13.273,2943,13.273,2944,8.644,2945,8.644,2946,8.644,2947,13.273,2948,8.644,2949,8.644,2950,8.644,2951,8.644,2952,8.644,2953,18.128,2954,8.644,2955,8.644,2956,8.644,2957,7.964,2958,8.644,2959,8.644,2960,8.644,2961,8.644,2962,8.644,2963,8.644]],["keywords/439",[]],["title/440",[339,524.272,479,436.841,529,361.273]],["content/440",[0,1.782,1,7.921,2,6.844,10,5.166,24,2.182,25,5.665,55,8.085,71,8.319,74,4.171,111,7.223,235,5.414,479,8.683,490,5.801,496,8.771,578,7.805,1013,12.642,1145,9.331,1293,5.946,1389,6.844,1946,11.781,2054,14.557,2334,12.642,2614,12.642,2964,20.37,2965,14.019,2966,14.019]],["keywords/440",[]],["title/441",[1125,582.08,1415,740.008,2967,1054.402]],["content/441",[0,1.957,1,4.709,22,4.437,24,3.025,25,4.396,29,6.162,43,4.661,145,3.419,171,4.661,214,7.815,235,4.201,280,10.822,423,6.52,521,6.332,532,9.984,540,8.27,559,5.645,584,4.258,677,6.006,817,5.729,862,11.257,1125,9.674,1241,7.145,1415,12.299,1492,6.968,2148,7.813,2298,7.054,2594,8.654,2722,7.683,2911,9.142,2967,9.81,2968,15.397,2969,10.878,2970,10.878,2971,10.878,2972,10.878,2973,10.878,2974,15.397,2975,15.397,2976,10.878]],["keywords/441",[]],["title/442",[0,172.997,1435,946.169]],["content/442",[]],["keywords/442",[]],["title/443",[1376,1030.504]],["content/443",[50,9.194,474,10.262,1435,13.341]],["keywords/443",[]],["title/444",[2977,1413.729]],["content/444",[0,2.604,24,3.189,39,6.126,557,11.839,1376,14.002,1435,14.241,1738,9.947,2977,14.554,2978,16.762,2979,18.192]],["keywords/444",[]],["title/445",[620,687.094,669,888.887,1376,740.008]],["content/445",[0,1.765,11,4.202,24,2.831,112,6.106,113,8.687,114,12.056,148,3.579,1376,8.788,1546,9.12,1738,8.24,2596,12.522,2980,15.071,2981,15.071]],["keywords/445",[]],["title/446",[474,629.105,1376,861.424]],["content/446",[0,2.568,24,3.145,113,10.251,148,4.223,203,8.565,474,10.123,1376,12.785,1546,10.762,2410,16.976,2982,16.385,2983,16.385]],["keywords/446",[]],["title/447",[1376,1030.504]],["content/447",[0,2.66,24,3.497,148,4.475,1376,13.245,1738,10.302,2982,17.361,2983,17.361,2984,18.843]],["keywords/447",[]],["title/448",[59,508.159]],["content/448",[]],["keywords/448",[]],["title/449",[59,424.783,112,598.514]],["content/449",[0,2.439,24,2.987,59,5.989,112,8.439]],["keywords/449",[]],["title/450",[59,508.159]],["content/450",[0,2.261,24,2.769,50,8.52,59,7.084,112,7.821,119,4.684,905,10.787]],["keywords/450",[]],["title/451",[59,424.783,107,577.275]],["content/451",[0,2.377,24,2.911,59,6.825,107,7.931,905,9.5]],["keywords/451",[]],["title/452",[195,360.137]],["content/452",[]],["keywords/452",[]],["title/453",[112,598.514,195,301.048]],["content/453",[0,2.439,24,2.987,112,8.439,195,4.245]],["keywords/453",[]],["title/454",[195,360.137]],["content/454",[0,2.261,24,2.769,50,8.52,112,7.821,119,4.684,195,5.021,905,10.787]],["keywords/454",[]],["title/455",[107,577.275,195,301.048]],["content/455",[0,2.106,11,2.762,24,2.58,39,6.057,45,9.148,107,7.028,195,4.499,905,8.419,1102,17.663,2359,18.305]],["keywords/455",[]],["title/456",[142,387.146]],["content/456",[]],["keywords/456",[]],["title/457",[112,598.514,142,323.625]],["content/457",[0,2.439,24,2.987,112,8.439,142,4.563]],["keywords/457",[]],["title/458",[142,387.146]],["content/458",[0,2.408,24,2.949,31,5.434,142,5.239]],["keywords/458",[]],["title/459",[107,577.275,142,323.625]],["content/459",[0,2.377,24,2.911,31,5.364,107,7.931,142,4.446,195,4.136]],["keywords/459",[]],["title/460",[0,148.613,1,506.125,2,570.807]],["content/460",[]],["keywords/460",[]],["title/461",[3,1131.882]],["content/461",[4,18.941,5,11.353,6,15.918,7,16.446,8,17.081]],["keywords/461",[]],["title/462",[2,570.807,9,594.043,10,430.893]],["content/462",[9,8.516,11,2.794,12,10.487,13,8.458,14,11.009,15,14.554,16,12.255,17,12.039,18,13.335,19,14.554,20,14.086,21,16.762,22,6.837,23,15.116,24,2.609]],["keywords/462",[]],["title/463",[0,148.613,9,594.043,25,472.486]],["content/463",[0,2.577,2,8.877,5,10.899,11,3.38,24,2.831,25,5.611,26,7.368,27,9.371,28,10.345,29,7.865,30,10.789,31,3.984,32,11.669,33,13.886,34,12.522,35,13.886,36,13.886,37,11.669,38,6.652,39,5.075,40,6.074,41,13.886,42,5.435,43,5.949,44,11.669,45,7.666]],["keywords/463",[]],["title/464",[25,550.009,46,842.06]],["content/464",[0,2.081,2,3.745,11,2.953,24,2.549,25,6.617,31,3.408,38,3.675,40,3.355,47,4.855,48,3.608,49,6.257,50,3.675,51,3.721,52,5.831,53,4.913,54,9.622,55,4.423,56,5.715,57,5.715,58,6.917,59,2.394,60,4.913,61,7.67,62,7.67,63,16.897,64,4.931,65,10.613,66,18.737,67,4.166,68,6.353,69,7.67,70,7.67,71,4.552,72,7.67,73,7.67,74,2.282,75,7.67,76,7.67,77,5.105,78,7.67,79,7.67,80,3.505,81,3.338,82,7.67,83,7.67,84,5.715,85,4.04,86,7.67,87,4.383,88,5.038,89,7.67,90,7.67,91,3.87,92,4.397,93,5.332,94,6.789,95,6.917,96,6.263,97,7.239,98,7.67,99,7.67,100,11.881,101,11.881,102,7.67,103,6.263,104,6.263,105,5.608,106,7.239,107,6.167,108,7.67,109,7.67,110,7.67]],["keywords/464",[]],["title/465",[0,148.613,10,430.893,111,602.447]],["content/465",[11,3.83,12,12.286,24,2.026,54,7.649,55,7.507,77,8.664,112,5.724,113,12.286,114,11.302,115,12.734,116,13.871,117,11.302,118,11.302,119,4.588,120,13.447,121,11.302,122,10.939,123,9.698,124,11.739,125,12.285,126,9.896,127,10.356,128,10.628]],["keywords/465",[]],["title/466",[129,674.28,130,528.316,131,871.116]],["content/466",[39,6.198,118,14.723,123,12.633,129,9.779,132,15.292,133,16.957,134,15.292,135,14.723,136,13.49,137,7.537,138,13.49,139,13.49,140,13.057]],["keywords/466",[]],["title/467",[0,172.997,141,1111.244]],["content/467",[0,2.408,5,11.353,11,3.157,24,2.949,107,8.034]],["keywords/467",[]],["title/468",[842,985.992]],["content/468",[]],["keywords/468",[]],["title/469",[1268,1042.871]],["content/469",[]],["keywords/469",[]],["title/470",[11,194.903,2880,748.888,2985,1169.223]],["content/470",[0,2.059,39,5.922,45,11.076,48,7.622,423,9.711,671,13.616,842,12.149,1322,9.177,1485,9.615,1738,11.905,2730,12.89,2986,19.653,2987,14.611]],["keywords/470",[]],["title/471",[11,170.825,45,565.758,2880,656.373,2988,1024.781]],["content/471",[0,2.283,11,2.271,39,4.98,71,10.657,74,4.054,142,3.24,201,4.94,269,9.787,423,8.167,474,8.301,481,6.157,566,5.898,754,11.831,842,8.251,903,9.33,1027,8.95,1038,10.84,1062,5.263,1265,9.962,1485,8.086,1546,8.95,1736,10.84,1850,6.971,2986,19.259,2989,13.626,2990,13.626,2991,13.626,2992,13.626,2993,13.626]],["keywords/471",[]],["title/472",[11,136.981,45,453.668,203,429.581,2880,802.318,2994,821.749]],["content/472",[201,8.355,203,11.565,284,8.03,623,11.312,775,12.039,1270,11.481,1850,8.576,2995,15.116]],["keywords/472",[]],["title/473",[11,124.634,45,412.778,203,390.862,2880,478.892,2996,747.683,2997,747.683,2998,747.683]],["content/473",[39,5.61,65,8.694,201,5.564,203,10.139,284,9.291,623,13.089,844,10.359,946,12.211,1189,9.02,1265,11.222,1270,10.065,1322,8.694,1350,12.882,2735,12.531,2995,13.841,2999,15.349]],["keywords/473",[]],["title/474",[11,169.958,45,562.887,112,277.985,339,127.631,2880,542.265,3000,389.843,3001,359.188,3002,389.843,3003,389.843,3004,389.843]],["content/474",[45,8.131,53,9.433,55,8.493,67,8,154,5.296,194,6.692,201,5.339,339,8.411,341,8.74,1178,9.55,1323,10.578,1504,8.919,2614,13.282,3005,14.728,3006,15.985,3007,15.985,3008,15.985,3009,15.985,3010,20.504,3011,15.985]],["keywords/474",[]],["title/475",[0,148.613,64,295.045,1225,611.228]],["content/475",[]],["keywords/475",[]],["title/476",[22,555.207,592,757.728]],["content/476",[0,1.557,22,4.997,64,3.091,81,5.331,91,6.181,119,3.226,171,5.249,206,4.974,235,4.731,267,7.473,432,7.641,433,9.083,490,6.92,507,12.459,592,10.599,793,9.31,1225,11.194,1337,6.269,1339,10.511,1471,7.001,1687,16.274,3012,13.296,3013,18.15,3014,11.562,3015,13.296,3016,18.15]],["keywords/476",[]],["title/477",[0,130.254,497,656.373,1225,535.719,1752,712.396]],["content/477",[0,2.181,11,2.86,64,4.329,81,7.465,119,4.518,497,10.989,1073,11.747,1104,11.269,1225,10.862,1337,6.842,1752,11.927]],["keywords/477",[]],["title/478",[43,583.143,1110,1034.731]],["content/478",[]],["keywords/478",[]],["title/479",[43,500.95,81,508.765,222,490.994]],["content/479",[11,3.921,24,1.351,31,2.489,42,3.395,64,2.189,65,4.914,80,7.169,81,6.827,157,6.655,206,5.299,214,4.79,297,8.202,620,5.098,864,6.031,1062,7.228,1251,6.031,1309,4.263,1339,7.205,1663,9.922,1672,13.011,2046,6.902,3017,7.823,3018,8.675,3019,7.823,3020,8.188,3021,8.675,3022,10.14,3023,7.533,3024,8.675,3025,7.533,3026,6.902,3027,8.675,3028,8.675,3029,8.675,3030,7.823,3031,7.291,3032,7.291,3033,8.675,3034,7.291,3035,13.052,3036,17.453,3037,13.052,3038,10.968,3039,7.823,3040,6.74,3041,8.675,3042,7.533,3043,6.74,3044,6.74,3045,8.675,3046,12.318,3047,8.675]],["keywords/479",[]],["title/480",[87,930.473]],["content/480",[]],["keywords/480",[]],["title/481",[13,377.27,42,292.631,87,427.278,718,511.956,1403,379.873,3048,674.258,3049,747.683]],["content/481",[24,2.591,88,6.298,92,3.549,111,7.244,145,3.014,412,3.367,509,7.29,555,8.326,579,7.144,718,9.627,796,3.549,1225,10.204,1241,12.041,1249,10.924,1293,4.067,1339,5.294,1557,7.629,1564,5.338,1569,7.29,1760,5.635,2466,11.479,2536,7.629,2933,8.648,2977,8.326,3017,15.011,3048,8.648,3050,12.679,3051,12.679,3052,12.679,3053,9.589,3054,9.589,3055,9.589,3056,9.589,3057,9.589,3058,9.589,3059,9.589,3060,9.589,3061,9.589,3062,9.589,3063,9.589,3064,9.589,3065,9.589,3066,9.589,3067,9.589,3068,9.589,3069,9.589,3070,9.589,3071,9.589,3072,9.589,3073,9.589,3074,16.646,3075,9.589,3076,9.05,3077,14.059,3078,14.059,3079,9.589,3080,14.059]],["keywords/481",[]],["title/482",[87,469.604,91,414.643,137,365.251,746,554.593,3081,741.051,3082,713.501]],["content/482",[24,2.204,50,6.782,64,3.572,84,10.546,746,12.427,1303,8.089,1330,11.261,1569,10.761,2465,14.307,3050,12.765,3051,12.765,3081,16.605,3082,12.291,3083,14.155,3084,14.155,3085,14.155,3086,14.155,3087,14.155,3088,18.414,3089,18.414,3090,14.155,3091,14.155,3092,14.155,3093,14.155,3094,14.155,3095,14.155]],["keywords/482",[]],["title/483",[87,521.239,284,436.969,1293,386.855,1337,300.334,3096,912.103]],["content/483",[24,2.803,50,8.626,284,8.626,490,7.451,1337,7.042,1569,13.688,2048,14.324,3097,18.005]],["keywords/483",[]],["title/484",[87,362.018,88,416.083,91,319.649,92,234.43,724,421.655,1079,532.358,2536,503.965,3098,633.487,3099,571.277]],["content/484",[11,3.938,24,2.015,31,3.714,38,3.075,42,4.04,65,5.847,88,4.216,92,3.82,95,5.789,96,5.241,151,2.29,156,5.357,175,2.426,434,4.693,482,3.848,569,5.241,641,7.068,724,6.871,762,7.291,788,3.134,809,4.333,880,5.652,905,5.245,921,4.693,959,7.84,1007,5.241,1027,9.742,1050,4.216,1079,13.657,1090,4.611,1249,11.524,1309,3.154,1337,2.114,1569,4.88,1635,4.693,1968,9.309,2047,8.675,2120,10.3,2194,5.574,2466,5.241,2536,10.3,2917,5.395,3100,6.42,3101,6.42,3102,6.42,3103,6.42,3104,12.947,3105,6.42,3106,18.977,3107,6.42,3108,6.42,3109,9.743,3110,6.42,3111,6.42,3112,6.42,3113,6.42,3114,6.059,3115,6.42,3116,6.42,3117,10.323,3118,6.42,3119,6.42,3120,10.323,3121,6.42,3122,6.42,3123,6.059,3124,14.832,3125,6.42,3126,6.059,3127,6.42,3128,6.42,3129,6.42,3130,6.42,3131,10.323,3132,10.323,3133,6.42,3134,10.323,3135,6.42,3136,6.42,3137,6.42]],["keywords/484",[]],["title/485",[13,460.235,87,521.239,91,460.235,718,624.539,3138,912.103]],["content/485",[10,6.475,91,8.866,145,5.522,205,7.606,844,14.226,1122,12.031,1196,13.651,1339,11.637,3099,15.845]],["keywords/485",[]],["title/486",[3139,1767.171]],["content/486",[]],["keywords/486",[]],["title/487",[0,130.254,22,418.03,130,463.049,1004,596.505]],["content/487",[0,2.037,22,8.846,57,11.939,84,11.939,130,7.241,235,6.189,267,7.161,630,7.63,717,12.182,1199,11.939,1645,13.466,1832,13.913,2037,13.913,3140,21.625,3141,17.392,3142,17.392]],["keywords/487",[]],["title/488",[0,148.613,1246,567.189,3143,1269.01]],["content/488",[0,2.823,24,1.94,31,4.853,64,4.847,71,12.225,74,3.707,85,6.562,91,6.287,130,7.644,156,8.779,406,5.726,708,7.626,796,4.611,917,7.709,967,9.473,1337,6.324,1834,11.76,2107,10.819,2499,12.46,2500,12.46,3144,15.966,3145,13.524,3146,13.524,3147,18.36,3148,13.524,3149,13.524,3150,13.524,3151,13.524]],["keywords/488",[]],["title/489",[0,130.254,48,482.092,71,608.117,1062,395.788]],["content/489",[0,2.379,11,3.528,24,2.913,64,2.991,71,12.984,91,5.98,112,8.871,119,3.121,130,5.355,669,12.428,815,11.186,821,11.186,836,11.186,1062,6.314,1104,7.784,1168,8.239,1173,19.039,1337,5.383,1377,7.501,1736,13.005,1777,11.952,2917,9.96,3152,11.186,3153,12.863,3154,12.863,3155,12.863,3156,12.863]],["keywords/489",[]],["title/490",[0,148.613,64,295.045,130,528.316]],["content/490",[0,2.326,13,9.233,24,2.848,29,10.364,74,4.171,130,6.335,201,5.082,516,7.555,708,8.58,788,6.844,796,5.188,848,9.461,1617,8.873,1736,14.557,1745,14.217,1857,7.383,1864,10.25,2987,12.642,3157,19.86,3158,18.298,3159,15.216,3160,15.216,3161,19.86]],["keywords/490",[]],["title/491",[0,172.997,3162,1361.063]],["content/491",[0,2.696,13,7.198,18,7.782,22,3.99,31,2.806,39,6.154,119,2.576,130,7.608,142,2.326,201,5.172,203,7.458,423,5.863,474,9.095,516,5.272,652,5.114,796,3.62,848,6.602,880,10.134,900,12.672,959,8.639,1014,6.425,1116,8.494,1265,7.152,1303,8.152,1396,6.698,1405,5.005,1485,5.805,1556,7.288,1617,9.029,1736,11.349,1745,11.084,1857,5.152,2041,9.233,2987,12.865,3158,14.266,3162,14.266,3163,10.617,3164,10.617,3165,10.617,3166,10.617,3167,10.617,3168,10.617,3169,10.617,3170,10.617,3171,10.617,3172,10.617]],["keywords/491",[]],["title/492",[0,172.997,1858,1143.784]],["content/492",[0,2.594,31,2.272,39,7.458,64,1.999,74,4.955,113,7.619,115,5.136,119,3.907,126,6.022,130,3.579,139,15.728,154,4.38,191,4.486,474,3.661,529,2.792,565,5.565,683,10.574,891,8.219,903,8.339,991,7.143,1030,9.689,1087,8.219,1111,5.202,1270,4.111,1385,5.346,1403,4.024,1546,5.202,1564,8.26,1571,6.656,1779,6.467,1782,6.301,1792,4.796,1857,8.771,1858,6.656,2298,7.897,2397,11.494,2410,6.656,3173,8.597,3174,8.597,3175,8.597,3176,16.655,3177,8.597,3178,8.597,3179,8.597,3180,8.597,3181,21.457,3182,8.597,3183,13.218,3184,13.218,3185,8.597,3186,16.104,3187,8.597,3188,8.597,3189,16.104,3190,8.597,3191,8.597,3192,8.597]],["keywords/492",[]],["title/493",[1379,905.936,1484,882.593]],["content/493",[]],["keywords/493",[]],["title/494",[142,323.625,195,301.048]],["content/494",[]],["keywords/494",[]],["title/495",[9,691.511,1484,882.593]],["content/495",[0,1.63,1,3.668,9,4.305,10,5.7,11,2.578,24,1.996,31,2.431,38,4.06,50,4.06,54,4.979,60,5.427,64,2.138,113,9.677,116,5.985,117,11.133,119,4.542,121,7.357,145,4.861,148,2.184,228,2.74,267,3.787,268,4.496,460,5.891,481,3.829,490,5.306,565,5.859,566,3.668,576,6.918,622,5.566,788,4.137,796,3.136,822,4.531,839,5.719,1217,4.137,1249,12.018,1293,3.594,1361,11.413,1376,9.789,1418,7.641,1484,5.495,1628,6.918,1785,12.85,1825,6.442,1857,6.753,1890,11.133,2233,11.563,2423,7.997,2433,11.133,2454,7.997,2455,7.997,2456,7.997,2457,12.101,2458,12.101,3193,9.197,3194,9.197,3195,9.197,3196,9.197,3197,13.916,3198,13.916,3199,9.197,3200,9.197,3201,9.197]],["keywords/495",[]],["title/496",[2,570.807,59,364.91,1379,778.245]],["content/496",[0,1.323,1,4.507,2,5.083,9,5.29,10,3.837,11,1.736,24,2.715,31,2.987,38,4.988,47,9.445,54,8.77,55,6.004,57,7.757,59,6.9,64,4.402,74,5.19,111,5.365,119,4.594,131,7.757,139,13.877,148,2.684,235,4.021,432,4.758,565,4.758,623,7.027,676,8.283,747,6.839,793,5.796,822,5.567,967,7.915,1361,5.701,1379,13.423,1438,5.796,1499,12.184,1777,7.612,1785,7.757,2436,8.501,3152,9.826,3202,11.3,3203,11.3,3204,11.3,3205,11.3,3206,11.3,3207,11.3]],["keywords/496",[]],["title/497",[2062,1329.358]],["content/497",[]],["keywords/497",[]],["title/498",[341,966.2]],["content/498",[0,2.47,31,3.121,40,7.817,68,5.817,92,4.026,115,7.054,119,2.865,130,6.957,139,8.654,149,4.22,199,7.054,284,7.376,341,6.455,412,7.687,474,8.26,479,4.637,516,5.862,537,9.142,572,8.452,630,7.331,746,7.342,791,10.267,796,5.698,822,5.817,837,8.105,871,7.683,963,10.267,1020,7.562,1021,7.953,1070,10.248,1074,6.393,1092,6.108,1266,8.882,1385,7.342,1427,10.267,1734,9.445,2359,8.452,3208,11.807,3209,16.711,3210,16.711,3211,11.807,3212,10.878]],["keywords/498",[]],["title/499",[967,1237.828]],["content/499",[0,2.641,130,7.752,138,13.649,139,13.649,284,8.219,412,6.025,917,12.855,967,13.043,1405,8.778,1556,12.782,1777,12.543]],["keywords/499",[]],["title/500",[1556,1213.081]],["content/500",[0,2.358,13,5.885,92,4.316,105,8.526,112,8.159,119,4.257,129,6.725,130,7.305,227,6.299,235,4.504,412,5.677,459,8.451,479,4.971,482,6.99,486,6.493,507,12.044,511,6.853,559,6.052,594,7.871,595,8.866,643,7.985,647,11.007,669,8.866,673,7.66,764,13.585,779,9.077,917,7.215,999,6.725,1021,8.526,1050,7.66,1070,7.762,1303,6.665,1481,11.007,1556,8.689,1889,11.007,1989,9.8,3213,16.166,3214,16.166,3215,12.657]],["keywords/500",[]],["title/501",[1022,1131.882]],["content/501",[556,11.579,643,11.747,840,15.472,844,11.579,917,10.614,972,16.964,1022,11.927,1405,8.778,1895,15.472,3216,18.621,3217,18.621,3218,18.621]],["keywords/501",[]],["title/502",[459,851.171]],["content/502",[1,1.527,26,1.872,31,2.395,39,1.289,42,1.381,59,4.992,67,1.916,68,1.886,111,3.206,129,3.588,130,6.581,137,1.568,145,2.623,154,1.269,179,1.295,194,1.603,195,0.78,196,3.342,200,1.886,214,1.295,221,2.999,222,1.481,235,3.224,359,3.768,412,2.931,459,12.038,468,3.814,474,8.506,478,2.416,479,3.558,482,3.729,484,2.628,487,2.88,488,5.08,490,1.46,491,2.806,497,2.26,502,1.67,506,3.063,524,1.56,532,2.288,541,11.505,546,3.329,556,2.381,557,8.112,565,8.037,572,2.741,595,4.73,620,2.073,630,2.963,632,2.682,638,5.229,643,2.416,647,3.329,706,2.534,713,2.88,720,1.818,746,4.199,774,3.063,779,1.981,788,4.075,813,4.549,820,2.741,822,1.886,823,2.965,859,8.954,884,4.636,887,3.063,903,4.26,917,5.164,955,2.381,984,10.895,988,10.825,999,2.034,1020,6.998,1022,2.452,1023,5.872,1074,2.073,1086,2.288,1091,2.534,1092,4.687,1093,2.806,1100,2.492,1104,2.317,1109,2.88,1117,2.452,1125,1.756,1140,2.233,1168,4.325,1178,5.413,1189,7.449,1241,2.317,1266,2.88,1303,6.563,1370,2.534,1377,2.233,1379,2.348,1392,7.751,1403,1.792,1405,4.271,1415,3.938,1493,5.402,1545,3.329,1617,3.938,1640,3.329,1656,3.181,1825,2.682,1904,3.063,1917,5.08,1923,3.063,2178,6.222,2186,3.528,2601,3.063,2907,3.329,3213,8.347,3214,3.528,3219,3.829,3220,3.829,3221,3.829,3222,3.829,3223,3.829,3224,3.829,3225,6.222,3226,3.829,3227,3.829,3228,3.829,3229,3.829,3230,3.829,3231,3.829,3232,3.829,3233,15.995,3234,3.829,3235,3.829,3236,3.829,3237,3.829,3238,16.634,3239,3.829,3240,3.829,3241,3.528,3242,3.528,3243,3.829,3244,3.829]],["keywords/502",[]],["title/503",[559,844.988]],["content/503",[1258,8.929]],["keywords/503",[]],["title/504",[206,661.056]],["content/504",[1258,8.929]],["keywords/504",[]],["title/505",[984,1069.432]],["content/505",[1258,8.929]],["keywords/505",[]],["title/506",[601,956.818]],["content/506",[1258,8.929]],["keywords/506",[]],["title/507",[1897,1150.024]],["content/507",[1258,8.929]],["keywords/507",[]],["title/508",[81,708.485]],["content/508",[1258,8.929]],["keywords/508",[]],["title/509",[1062,628.843]],["content/509",[1258,8.929]],["keywords/509",[]],["title/510",[339,578.557]],["content/510",[1258,8.929]],["keywords/510",[]],["title/511",[529,574.004]],["content/511",[]],["keywords/511",[]],["title/512",[412,571.756]],["content/512",[1258,8.929]],["keywords/512",[]],["title/513",[984,1069.432]],["content/513",[1258,8.929]],["keywords/513",[]],["title/514",[1062,525.666,2877,977.584]],["content/514",[1258,8.929]],["keywords/514",[]],["title/515",[2399,1468.317]],["content/515",[1258,8.929]],["keywords/515",[]],["title/516",[64,343.455,130,614.999]],["content/516",[0,2.439,64,4.843,130,8.671,497,12.292]],["keywords/516",[]],["title/517",[3245,1477.222,3246,1477.222]],["content/517",[]],["keywords/517",[]],["title/518",[341,966.2]],["content/518",[0,2.895,11,4.132,130,9.847,1385,10.935]],["keywords/518",[]],["title/519",[967,1237.828]],["content/519",[0,2.718,11,3.935,130,8.135,967,13.688,1556,13.414]],["keywords/519",[]],["title/520",[1556,1213.081]],["content/520",[0,2.689,11,4.137,13,7.664,129,8.759,130,8.705,235,5.866,764,12.764,1556,11.316,1989,12.764,3247,16.485]],["keywords/520",[]],["title/521",[1022,1131.882]],["content/521",[11,3.864,972,17.855,1022,12.998]],["keywords/521",[]],["title/522",[459,851.171]],["content/522",[0,1.345,11,4.186,26,3.515,59,6.334,67,3.598,129,3.82,130,8.674,196,2.652,235,4.088,359,6.41,459,10.61,482,3.97,557,4.679,638,5.567,720,3.413,746,4.47,788,5.168,813,4.843,859,9.338,884,4.935,955,4.47,984,10.844,988,4.679,1022,7.359,1178,4.295,1303,3.785,1379,4.409,1392,11.142,1415,4.192,1617,6.7,3225,13.221,3233,19.196,3241,6.624,3242,6.624,3248,7.189,3249,7.189,3250,7.189,3251,7.189]],["keywords/522",[]],["title/523",[559,844.988]],["content/523",[1258,8.929]],["keywords/523",[]],["title/524",[206,661.056]],["content/524",[1258,8.929]],["keywords/524",[]],["title/525",[984,1069.432]],["content/525",[1258,8.929]],["keywords/525",[]],["title/526",[601,956.818]],["content/526",[1258,8.929]],["keywords/526",[]],["title/527",[1897,1150.024]],["content/527",[1258,8.929]],["keywords/527",[]],["title/528",[81,708.485]],["content/528",[1258,8.929]],["keywords/528",[]],["title/529",[1062,628.843]],["content/529",[1258,8.929]],["keywords/529",[]],["title/530",[339,578.557]],["content/530",[1258,8.929]],["keywords/530",[]],["title/531",[529,574.004]],["content/531",[]],["keywords/531",[]],["title/532",[412,571.756]],["content/532",[1258,8.929]],["keywords/532",[]],["title/533",[984,1069.432]],["content/533",[1258,8.929]],["keywords/533",[]],["title/534",[1062,525.666,2877,977.584]],["content/534",[1258,8.929]],["keywords/534",[]],["title/535",[2399,1468.317]],["content/535",[1258,8.929]],["keywords/535",[]],["title/536",[64,343.455,130,614.999]],["content/536",[0,2.439,64,4.843,130,8.671,497,12.292]],["keywords/536",[]],["title/537",[142,278.011,143,615.771,144,483.846]],["content/537",[]],["keywords/537",[]],["title/538",[142,323.625,145,427.765]],["content/538",[0,1.666,11,4.074,24,2.041,31,5.022,39,4.792,40,3.818,146,7.01,147,6.943,148,3.379,149,3.386,150,3.203,151,3.113,152,4.631,153,4.106,154,3.139,155,4.631,156,4.529,157,5.561,158,8.111,159,9.26,160,7.01,161,8.726,162,7.426,163,7.631,164,8.977,165,8.977,166,9.967,167,11.987,168,9.967,169,9.967,170,7.631,171,5.617,172,10.186,173,10.43,174,6.943,175,3.298,176,4.703,177,2.496,178,4.74,179,3.203,180,6.635,181,6.635,182,4.987]],["keywords/538",[]],["title/539",[112,598.514,142,323.625]],["content/539",[0,1.737,11,4.126,24,2.127,31,5.162,39,4.994,40,4.035,137,4.1,147,7.339,148,3.522,149,3.579,150,3.386,151,3.291,157,5.795,158,8.453,159,6.516,160,7.306,161,6.14,162,7.739,163,7.953,164,9.356,165,6.316,166,7.013,167,9.356,168,7.013,169,7.013,170,7.953,171,3.952,172,7.167,173,7.339,174,7.339,175,3.486,176,4.971,177,2.638,178,5.011,179,3.386,180,10.388,181,7.013,182,7.808,183,9.225,184,9.225,185,9.225]],["keywords/539",[]],["title/540",[142,387.146]],["content/540",[0,2.021,11,4.014,24,2.475,31,4.562,39,4.163,40,4.982,148,4.099,149,4.418,150,4.18,151,4.063,157,6.744,158,7.046,159,8.044,160,6.09,161,7.58,162,6.451,163,6.629,164,7.798,165,7.798,166,8.658,167,10.888,168,8.658,169,8.658,170,6.629,171,4.879,172,8.848,173,9.06,175,4.304,176,6.137,177,3.257,178,6.186,179,4.18,180,8.658,181,8.658,182,6.508,186,8.326,187,8.326]],["keywords/540",[]],["title/541",[142,323.625,188,656.116]],["content/541",[0,1.98,11,4.088,24,2.014,31,5.616,39,4.728,40,3.75,119,2.258,144,3.548,148,3.334,149,3.326,150,3.146,151,3.059,152,4.549,153,4.033,154,3.083,155,4.549,156,4.449,157,6.607,158,9.638,159,9.137,160,8.329,162,8.823,163,9.067,164,8.857,165,8.857,170,9.067,175,3.24,176,4.62,177,2.452,178,4.657,179,3.146,180,6.518,181,6.518,182,7.392,186,6.268,187,6.268,188,6.236,189,10.871,190,4.99,191,4.856,192,3.497,193,4.449,194,3.896]],["keywords/541",[]],["title/542",[107,577.275,142,323.625]],["content/542",[0,2.09,11,4.064,24,2.559,31,4.716,39,4.367,40,5.227,107,5.068,148,4.237,149,4.635,150,4.385,151,4.263,157,6.973,158,7.393,159,8.44,160,6.389,162,6.768,163,6.955,164,8.182,165,8.182,170,6.955,175,4.516,176,6.439,177,3.417,178,6.49,179,4.385,180,9.084,181,9.084,182,6.829,186,8.736,187,8.736,189,10.042]],["keywords/542",[]],["title/543",[143,539.701,144,424.074,195,226.667,196,410.291]],["content/543",[]],["keywords/543",[]],["title/544",[145,367.472,195,258.616,196,468.121]],["content/544",[11,4.014,24,1.226,31,5.434,38,3.774,39,2.879,42,4.747,64,1.988,80,6.757,92,4.488,142,1.873,146,6.485,148,2.031,149,3.056,150,2.891,151,2.81,152,4.18,153,3.706,154,2.833,155,4.18,156,4.088,191,8.375,195,1.742,196,4.856,197,6.267,198,6.835,199,7.864,200,8.88,201,2.856,202,8.566,203,7.73,204,6.121,205,6.401,206,4.924,207,7.676,208,6.121,209,9.22,210,5.76,211,4.874,212,3.244,213,4.149,214,2.891,215,4.03,216,4.502,217,6.267,218,6.267,219,3.871,220,6.696,221,3.798,222,3.308,223,2.94,224,3.774,225,6.485,226,7.059,227,3.07,228,2.547,229,4.586,230,4.088,231,4.118,232,6.267]],["keywords/544",[]],["title/545",[112,514.154,195,258.616,196,468.121]],["content/545",[24,2.874,148,4.759,149,7.161,150,6.775,151,6.586,197,14.687,232,14.687]],["keywords/545",[]],["title/546",[195,301.048,196,544.927]],["content/546",[24,2.769,80,8.127,148,4.584,149,6.899,150,6.527,151,6.345,196,7.121,198,8.22,233,14.946,234,13.521]],["keywords/546",[]],["title/547",[188,656.116,196,544.927]],["content/547",[11,3.977,24,1.14,31,5.511,38,3.508,39,2.677,42,4.485,64,1.848,80,7.298,92,4.241,119,1.929,142,1.741,144,3.031,150,2.688,151,2.613,152,3.886,153,3.445,154,2.634,155,3.886,156,3.801,188,5.524,191,7.997,192,2.987,193,3.801,194,3.328,195,2.535,196,6.394,198,7.382,199,9.155,200,9.269,201,4.155,202,8.094,203,7.38,204,5.69,205,6.111,206,4.653,207,7.253,208,5.69,209,8.712,210,5.354,211,7.09,212,3.016,213,3.857,214,2.688,215,3.747,216,4.185,217,5.826,218,5.826,219,3.598,220,6.327,221,3.53,222,3.075,223,2.733,224,3.508,225,6.128,226,6.671,227,2.853,228,2.368,229,4.263,230,3.801,231,3.828,233,6.154,234,5.567,235,2.828]],["keywords/547",[]],["title/548",[107,577.275,196,544.927]],["content/548",[24,2.735,80,8.029,107,7.452,148,4.529,149,6.816,150,6.449,151,6.268,196,7.035,198,8.121,233,14.765,234,13.358]],["keywords/548",[]],["title/549",[119,269.88,145,322.076,195,226.667,196,410.291]],["content/549",[11,3.85,24,2.225,31,4.101,80,8.468,146,9.908,148,3.684,149,5.545,150,5.246,151,5.099,152,7.585,153,6.725,154,5.14,155,7.585,156,7.418,196,5.723,198,8.565,236,12.891,237,11.106,238,12.891,239,12.891,240,12.891,241,12.891]],["keywords/549",[]],["title/550",[143,615.771,144,483.846,195,258.616]],["content/550",[]],["keywords/550",[]],["title/551",[119,240.206,142,216.874,145,286.663,195,201.744,242,822.532]],["content/551",[11,4.043,24,1.666,31,3.828,38,5.127,39,3.912,40,4.681,42,5.957,80,6.097,92,5.632,142,2.545,146,5.722,148,2.759,149,2.605,150,2.465,151,2.396,152,3.563,153,3.159,154,2.415,155,3.563,156,3.485,175,2.538,176,3.619,177,1.92,178,3.648,179,2.465,198,7.683,212,4.407,213,5.636,214,3.928,215,5.475,216,6.116,219,5.258,220,5.908,221,5.159,222,4.494,223,4.979,224,5.127,225,8.138,226,6.23,227,4.17,228,3.461,229,6.23,230,5.554,231,5.595,243,4.91,244,7.625,245,6.481,246,6.621,247,6.481,248,7.123,249,4.91,250,4.598,251,5.644,252,4.743,253,5.105,254,5.105,255,5.105,256,5.105,257,5.105,258,4.355,259,5.105,260,4.47,261,5.105,262,5.105]],["keywords/551",[]],["title/552",[119,216.411,142,195.391,145,258.266,195,181.759,263,546.964,264,741.051]],["content/552",[0,1.862,11,4.013,24,1.579,31,4.611,38,4.859,39,3.707,40,4.437,42,5.732,80,5.83,92,5.42,93,4.367,94,3.59,142,3.822,143,3.308,144,2.599,146,5.424,148,3.288,149,2.437,150,2.305,151,2.241,152,3.333,153,2.955,154,2.259,155,3.333,156,3.26,157,5.411,175,2.374,176,3.385,177,1.796,178,3.412,179,2.305,198,5.897,212,4.177,213,5.342,214,3.723,215,5.189,216,5.797,219,4.984,220,5.6,221,4.89,222,4.259,223,4.761,224,4.859,225,7.831,226,5.904,227,3.952,243,4.592,244,7.291,245,6.142,246,6.275,247,6.142,248,6.751,249,4.592,250,4.301,251,5.278,252,4.436,253,4.775,254,4.775,255,4.775,256,4.775,257,4.775,258,4.073,259,4.775,260,4.181,261,4.775,262,4.775,265,3.527,266,4.68,267,2.807,268,5.382,269,4.511,270,6.281,271,6.281]],["keywords/552",[]],["title/553",[112,598.514,195,301.048]],["content/553",[11,4.04,24,1.601,31,4.244,38,4.928,39,3.76,40,5.647,42,5.79,67,5.587,80,4.7,92,5.475,142,2.446,148,2.651,149,2.479,150,2.346,151,2.28,175,2.416,176,3.444,177,1.828,178,3.472,179,2.346,198,8.008,212,4.236,213,5.417,214,3.775,215,3.27,216,3.653,219,5.054,220,5.679,221,4.959,222,2.684,223,5.521,224,3.062,225,7.911,226,7.514,227,4.008,228,3.326,229,3.72,230,3.317,231,5.377,243,4.673,244,7.377,245,3.87,246,3.954,247,6.229,248,4.254,249,4.673,250,7.043,252,7.265,253,4.859,254,7.82,255,7.82,256,7.82,257,7.82,258,6.67,259,7.82,260,6.847,261,7.82,262,4.859,272,5.764,273,6.391,274,6.391,275,6.391,276,6.391,277,5.764,278,5.371,279,6.391,280,3.87,281,4.314]],["keywords/553",[]],["title/554",[195,360.137]],["content/554",[11,3.976,24,2.117,31,3.902,38,4.392,39,3.351,40,5.949,42,5.323,80,6.215,92,5.033,142,2.18,148,3.505,149,3.556,150,3.364,151,3.27,175,3.465,176,4.94,177,2.621,178,4.979,179,3.364,198,7.494,212,3.775,213,4.828,214,3.364,215,4.69,216,5.239,219,4.504,220,5.061,221,4.419,222,3.849,223,5.075,224,4.392,225,7.272,226,5.336,227,3.572,228,2.964,229,5.336,230,4.757,231,4.792,244,7.772,245,5.551,246,5.671,247,5.551,248,6.102,250,6.277,252,6.475,253,6.969,254,6.969,255,6.969,256,6.969,257,6.969,258,5.944,259,6.969,260,6.102,261,6.969,262,6.969,272,8.267,282,6.702,283,7.703]],["keywords/554",[]],["title/555",[188,656.116,195,301.048]],["content/555",[11,4.063,24,1.791,31,3.301,38,5.512,39,4.205,40,3.22,42,4.503,80,5.257,92,5.926,137,5.114,142,2.736,148,2.966,149,2.855,150,2.701,151,2.626,152,3.906,153,3.463,154,2.647,155,3.906,156,3.82,175,2.782,176,3.966,177,2.105,178,3.998,179,2.701,188,5.546,190,4.284,191,4.169,198,7.402,212,4.738,213,6.059,214,4.223,215,5.886,216,6.575,219,5.653,220,6.352,221,5.546,222,4.831,223,4.293,224,5.512,225,8.563,226,6.697,227,4.483,228,3.72,229,6.697,230,5.971,231,6.015,244,6.575,245,6.967,246,7.118,247,6.967,248,7.658,282,5.381,283,6.185]],["keywords/555",[]],["title/556",[107,577.275,195,301.048]],["content/556",[11,3.973,24,2.107,31,3.884,38,4.364,39,3.33,40,5.921,42,3.565,80,6.186,92,5.009,107,3.864,137,4.049,142,2.166,148,3.489,149,3.534,150,3.343,151,3.25,175,3.443,176,4.909,177,2.605,178,4.948,179,3.343,198,7.466,212,3.752,213,4.798,214,3.343,215,4.661,216,5.206,219,4.476,220,5.029,221,4.391,222,3.825,223,5.051,224,4.364,225,7.238,226,5.302,227,3.549,228,2.946,229,5.302,230,4.728,231,4.762,244,7.736,245,5.516,246,5.636,247,5.516,248,6.063,250,6.237,251,7.655,252,6.434,253,6.925,254,6.925,255,6.925,256,6.925,257,6.925,258,5.907,259,6.925,260,6.063,261,6.925,262,6.925,282,6.66,283,7.655]],["keywords/556",[]],["title/557",[112,514.154,195,258.616,284,560.149]],["content/557",[11,4.059,24,2.311,40,4.522,65,9.841,67,8.065,148,3.827,149,4.01,150,3.794,151,3.688,175,3.907,176,5.571,177,2.956,178,5.615,179,3.794,190,6.017,198,8.03,227,5.785,250,10.166,278,12.477,280,8.991,281,6.977,285,9.323,286,9.323,287,13.981,288,6.327,289,10.338,290,11.812,291,15.668,292,13.822,293,9.323,294,4.546]],["keywords/557",[]],["title/558",[195,301.048,284,652.056]],["content/558",[11,3.161,24,1.306,40,2.183,42,9.092,65,4.752,67,6.912,119,2.21,148,2.163,149,1.936,150,1.831,151,1.78,175,1.886,176,2.689,177,1.427,178,2.71,179,1.831,190,2.905,198,3.878,227,1.944,228,4.115,250,3.417,278,10.695,280,5.081,281,3.368,287,5.833,288,3.054,290,3.97,291,7.566,292,6.675,293,4.5,294,2.194,295,4.5,296,4.99,297,4.386,298,8.39,299,12.726,300,12.726,301,15.375,302,10.39,303,12.726,304,12.726,305,8.39,306,18.481,307,8.39,308,8.39,309,8.39,310,8.39,311,8.39,312,8.39,313,8.39,314,8.39,315,8.39,316,8.39,317,8.39,318,8.39,319,8.39,320,8.39,321,8.39,322,8.39,323,8.39,324,8.39,325,8.39,326,8.39,327,8.39,328,8.39,329,8.39,330,8.39,331,8.39,332,8.39,333,8.39,334,8.39,335,8.39,336,8.39,337,8.39,338,8.39]],["keywords/558",[]],["title/559",[59,364.91,143,615.771,144,483.846]],["content/559",[]],["keywords/559",[]],["title/560",[59,364.91,145,367.472,346,537.333]],["content/560",[11,4.03,24,1.896,31,4.257,38,3.795,39,4.451,43,5.218,59,5.198,92,2.931,142,2.896,145,2.489,146,6.512,148,3.139,149,3.073,150,2.907,151,2.826,152,4.203,153,3.726,154,2.848,155,4.203,156,4.111,157,5.165,160,4.235,161,5.272,162,4.486,175,2.994,179,2.907,212,5.015,219,5.984,223,5.537,294,3.483,346,5.597,374,3.818,375,3.818,376,3.818,379,6.301,380,11.404,381,6.656,382,7.143,383,6.656,384,6.656,385,7.143,386,6.467,387,6.656,388,8.602,389,6.656,390,6.301,391,6.301,392,6.301,393,6.301,394,5.594,395,7.143,396,6.301,397,6.656,398,6.154,399,6.656,400,5.594,401,4.373,402,5.423,403,5.423,404,5.423,405,6.154,406,3.64,407,4.052,408,4.052,409,6.656,410,6.656]],["keywords/560",[]],["title/561",[59,284.664,112,401.088,346,419.17,411,693.415,412,320.29]],["content/561",[11,3.966,24,2.21,31,2.788,39,3.552,40,4.25,59,5.235,64,3.582,142,2.31,148,3.659,149,3.77,150,3.566,151,3.467,157,4.121,160,5.196,161,6.468,162,5.504,175,3.673,179,3.566,212,4.002,219,4.774,223,5.298,294,4.273,346,6.524,374,4.684,375,4.684,376,4.684,379,7.73,380,11.485,387,8.166,388,10.027,389,8.166,390,7.73,391,7.73,392,7.73,393,7.73,394,6.863,397,8.166,398,7.55,399,8.166,400,6.863,401,5.365,402,6.654,403,6.654,404,6.654,405,7.55,406,4.466,407,4.972,408,4.972,409,8.166,410,8.166,413,9.717,414,8.763,415,7.387]],["keywords/561",[]],["title/562",[59,424.783,346,625.496]],["content/562",[11,3.926,24,2.243,31,2.845,39,3.624,59,5.296,64,2.502,142,2.358,148,3.714,149,3.846,150,3.639,151,3.537,157,4.206,160,5.302,161,6.6,162,5.616,175,3.748,179,3.639,212,4.084,219,4.872,223,5.376,294,4.36,346,6.621,374,4.78,375,4.78,376,4.78,380,11.619,387,8.333,388,10.176,389,8.333,390,7.888,391,7.888,392,7.888,393,7.888,394,7.004,396,7.888,397,8.333,398,7.704,399,8.333,400,7.004,401,5.474,402,6.789,403,6.789,404,6.789,405,7.704,406,4.557,407,5.073,408,5.073,409,8.333,410,8.333,416,7.888,417,8.942,418,8.942,419,9.916]],["keywords/562",[]],["title/563",[59,364.91,107,495.909,346,537.333]],["content/563",[11,3.988,24,1.945,31,4.862,38,3.923,39,4.566,40,5.464,43,6.489,59,5.289,92,3.03,107,6.424,142,1.947,148,3.22,149,3.176,150,3.005,151,2.921,157,3.473,158,5.066,160,4.378,161,5.45,162,4.638,175,3.095,176,4.412,177,2.341,178,4.447,179,3.005,190,4.766,191,4.638,200,4.378,212,3.372,219,4.023,223,4.662,228,2.648,252,5.783,260,8.315,287,8.684,288,5.011,294,3.6,346,5.741,380,10.371,383,6.881,384,6.881,390,6.514,391,6.514,392,6.514,393,6.514,398,9.706,402,5.606,405,6.362,406,3.763,415,6.225,416,6.514,417,7.384,420,8.188,421,8.188,422,8.188,423,4.908,424,8.188,425,10.498,426,8.188,427,8.188,428,8.188,429,8.188,430,7.728]],["keywords/563",[]],["title/564",[0,172.997,501,871.762]],["content/564",[]],["keywords/564",[]],["title/565",[806,1536.682]],["content/565",[0,2.417,171,9.462,177,4.255,227,5.797,267,6.649,457,9.772,463,14.774,464,12.503,501,9.53,511,8.743,562,14.167,650,14.042,673,9.772,807,16.51,808,11.085,809,10.041,810,13.417,811,14.878,812,12.918]],["keywords/565",[]],["title/566",[0,172.997,584,532.699]],["content/566",[177,5.636,584,7.714]],["keywords/566",[]],["title/567",[145,427.765,188,656.116]],["content/567",[0,2.377,11,3.117,339,6.644,490,7.738,813,13.67,814,10.591]],["keywords/567",[]],["title/568",[516,402.911,532,484.841,708,457.578,813,546.637,815,705.652,816,594.813,817,393.767]],["content/568",[145,5.802,532,11.971,813,15.87,818,14.687,819,18.461,820,14.344]],["keywords/568",[]],["title/569",[0,115.932,1,394.825,27,615.572,821,860.829,822,487.704]],["content/569",[0,1.352,11,3.871,24,1.656,26,11.217,27,10.229,28,7.927,29,6.027,31,3.052,48,5.005,138,8.464,281,7.181,412,3.736,423,6.377,474,7.006,788,7.399,817,5.604,823,8.941,824,17.655,825,10.64,826,18.279,827,15.709,828,15.156,829,7.082,830,11.306,831,15.156,832,10.64,833,12.375,834,12.375,835,7.927]],["keywords/569",[]],["title/570",[0,104.448,145,258.266,235,317.373,459,429.581,777,690.566,836,775.554]],["content/570",[0,2.519,87,12.569,94,7.574,138,10.544,145,5.542,235,7.653,267,5.923,459,6.929,514,9.075,725,11.508,777,18.483,796,4.905,837,13.138,838,13.254,839,8.945,840,11.952,841,13.254,842,8.026,843,13.254,844,8.945,845,13.254,846,11.138,847,11.138,848,8.945]],["keywords/570",[]],["title/571",[1,394.825,145,286.663,501,584.203,554,577.275,849,912.103]],["content/571",[0,2.685,1,5.737,11,3.303,24,2.063,26,11.671,29,7.507,87,7.574,145,4.166,148,3.416,235,5.119,281,11.901,432,6.056,554,8.388,826,11.138,834,10.821,846,11.138,850,8.595,851,13.254,852,15.765,853,11.952,854,11.138,855,13.254,856,13.406,857,14.818]],["keywords/571",[]],["title/572",[11,152.042,145,286.663,479,388.809,549,521.239,858,912.103]],["content/572",[0,2.589,11,2.337,24,2.182,26,10.809,148,3.614,177,5.825,193,7.276,288,8.58,497,8.979,501,8.979,549,12.34,554,8.873,565,6.406,788,6.844,846,11.781,856,13.911,859,12.924,860,11.153,861,14.019,862,13.378]],["keywords/572",[]],["title/573",[1,394.825,554,577.275,854,766.496,863,912.103,864,634.066]],["content/573",[0,1.853,1,6.312,11,2.43,24,2.27,26,11.63,119,3.84,145,4.582,267,6.516,432,6.663,549,10.726,554,11.879,711,13.481,814,10.631,826,12.253,834,11.904,853,13.149,854,12.253,856,11.085,865,11.599,866,11.599,867,14.581]],["keywords/573",[]],["title/574",[1,355.713,554,520.09,699,690.566,813,600.787,830,482.901,868,821.749]],["content/574",[0,2.377,24,2.911,26,9.922,830,10.988,833,15.266,856,14.215]],["keywords/574",[]],["title/575",[40,327.051,48,351.736,549,427.278,651,491.088,699,628.323,817,393.767,869,747.683]],["content/575",[145,5.456,149,6.735,235,6.705,432,7.933,433,9.43,549,9.921,583,9.921,814,9.833,818,13.811,870,17.361,871,12.262,872,10.741]],["keywords/575",[]],["title/576",[145,258.266,149,318.774,814,465.443,817,432.774,873,821.749,874,461.405]],["content/576",[11,2.532,145,4.774,148,3.915,149,8.632,196,7.714,568,9.849,757,12.401,813,11.105,814,12.604,818,12.083,820,11.801,875,15.189,876,13.188,877,15.189,878,15.189,879,15.189,880,8.317]],["keywords/576",[]],["title/577",[40,300.01,48,322.654,149,266.062,651,450.485,814,388.477,816,545.633,817,361.21,881,685.864]],["content/577",[149,7.072,432,8.33,433,9.902,814,10.326,818,14.503,871,12.876,872,11.279,882,18.23]],["keywords/577",[]],["title/578",[568,758.192,880,640.221,883,1169.223]],["content/578",[11,1.944,42,4.564,56,8.689,177,3.335,188,5.622,205,5.048,224,5.587,468,5.329,481,7.305,516,6.284,521,10.8,524,5.156,535,8.376,538,11.007,557,8.237,568,12.032,581,6.665,599,9.8,640,13.199,681,11.007,693,10.517,711,14.389,771,9.061,814,6.605,884,13.824,885,11.662,886,11.608,887,14.036,888,12.29,889,18.554,890,11.662,891,7.871,892,10.517,893,10.126,894,11.662,895,11.007]],["keywords/578",[]],["title/579",[115,664.528,568,664.528,884,763.502,896,1024.781]],["content/579",[0,2.083,115,10.625,149,7.836,193,8.503,235,6.328,521,9.537,549,9.363,554,10.37,568,10.625,711,11.768,814,11.442,830,9.628,856,12.456,884,12.207,897,16.385]],["keywords/579",[]],["title/580",[177,389.201,898,1361.063]],["content/580",[119,3.918,177,5.437,474,8.789,490,6.157,497,9.53,578,8.283,743,12.147,860,15.127,899,12.918,900,10.188,901,14.878,902,15.932,903,10.188,904,12.147,905,7.559,906,13.417,907,13.417,908,12.503,909,14.878,910,14.878,911,14.878]],["keywords/580",[]],["title/581",[0,130.254,171,439.064,497,656.373,521,596.505]],["content/581",[]],["keywords/581",[]],["title/582",[235,525.666,521,792.248]],["content/582",[0,1.584,31,3.575,47,7.886,171,5.339,179,4.573,193,6.466,205,5.394,235,7.418,356,6.612,457,8.184,470,11.76,473,9.283,521,12.537,549,7.121,652,8.843,668,10.173,677,6.879,707,8.662,708,10.353,788,6.083,809,8.409,829,8.294,912,12.46,913,12.46,914,11.237,915,9.283,916,12.46,917,7.709,918,15.255,919,12.46,920,12.46,921,9.11,922,12.46,923,12.46,924,12.46,925,12.46]],["keywords/582",[]],["title/583",[568,1055.827]],["content/583",[0,1.372,11,1.8,45,5.961,112,6.735,149,4.189,188,10.76,199,7.002,489,7.755,521,11.904,537,9.074,549,10.171,568,13.261,583,6.171,594,7.287,663,9.737,677,5.961,733,9.375,738,11.411,745,8.689,762,7.626,765,9.074,774,9.375,886,6.755,917,6.68,926,10.798,927,9.737,928,8.209,929,10.798,930,10.798,931,10.798,932,9.737,933,9.737,934,10.191,935,9.737,936,9.074,937,10.798,938,10.798,939,10.798,940,10.798,941,10.798,942,10.798,943,9.074]],["keywords/583",[]],["title/584",[936,1368.285]],["content/584",[188,10.566,235,5.631,501,9.339,514,9.984,521,12.083,568,9.455,608,16.297,668,11.904,708,8.923,757,11.904,936,15.773,944,14.581,945,14.581,946,11.599,947,14.581,948,11.085,949,12.253,950,9.84,951,14.581,952,14.581,953,11.085]],["keywords/584",[]],["title/585",[188,563.637,487,954.615,549,668.175]],["content/585",[0,1.993,22,6.396,26,8.32,51,7.606,60,10.043,119,5.176,177,4.484,356,8.32,622,10.298,711,11.262,748,13.614,949,13.176,954,15.679,955,10.582,956,15.679,957,15.679,958,15.679,959,9.495,960,15.679,961,15.679]],["keywords/585",[]],["title/586",[460,812.808,514,800.595,962,800.595]],["content/586",[87,9.395,107,6.973,459,8.594,460,16.148,474,7.599,514,13.861,520,8.307,521,10.939,596,10.042,713,9.756,792,8.903,839,11.095,847,10.042,859,8.44,884,8.903,891,8.064,917,7.393,963,17.737,964,11.949,965,11.949,966,11.949,967,9.084,968,11.949,969,11.949,970,11.949,971,11.949,972,9.756,973,9.756,974,11.949,975,11.949]],["keywords/586",[]],["title/587",[0,148.613,171,500.95,510,693.83]],["content/587",[]],["keywords/587",[]],["title/588",[510,966.2]],["content/588",[412,6.81,478,10.51,479,6.543,490,6.352,496,9.603,510,9.108,541,12.898,578,8.545,581,8.771,850,9.953,864,10.67,1013,13.841,1014,10.081,1015,18.304,1024,15.349,1025,15.349,1026,15.349,3252,21.05,3253,21.05]],["keywords/588",[]],["title/589",[501,871.762,708,832.963]],["content/589",[0,2.29,13,5.572,43,4.731,44,9.28,51,5.357,87,11.18,91,5.572,94,6.311,149,6.037,188,5.324,227,4.303,235,6.01,302,9.016,459,5.773,501,11.541,509,8.395,514,10.655,518,10.422,520,7.677,537,9.28,566,4.78,616,7.932,631,7.073,657,7.8,677,8.591,711,7.932,728,8.58,745,9.551,748,9.589,793,6.148,814,8.814,817,5.816,872,6.832,955,10.502,1027,7.253,1028,11.043,1029,10.422,1030,8.785,1031,7.562,1032,9.959,1033,11.043,1034,11.043,1035,11.043,1036,11.043]],["keywords/589",[]],["title/590",[520,946.169,521,792.248]],["content/590",[85,6.855,87,7.439,171,5.577,177,3.722,188,6.275,258,8.441,412,6.118,457,8.55,461,12.112,479,5.549,490,5.387,496,8.144,511,10.238,514,11.93,519,11.302,520,9.049,521,10.141,540,9.896,637,9.896,708,7.966,720,6.707,745,6.355,796,4.817,842,7.883,880,7.128,1015,12.285,1037,10.939,1038,10.356,1039,13.017,1040,13.017,1041,13.017,1042,8.239,1043,10.356,1044,13.017,1045,13.017]],["keywords/590",[]],["title/591",[549,930.473]],["content/591",[0,2.377,51,9.07,269,13.43,511,10.988,521,10.884,549,10.685]],["keywords/591",[]],["title/592",[510,966.2]],["content/592",[0,2.317,177,5.213,489,13.094,510,12.786,742,16.44,810,16.44,1046,18.23]],["keywords/592",[]],["title/593",[112,598.514,512,1111.244]],["content/593",[0,1.782,11,3.396,112,6.165,119,3.692,171,6.006,188,6.758,288,8.58,412,4.923,459,7.329,494,13.231,501,11.72,511,10.753,512,11.446,549,8.012,728,10.892,793,7.805,1047,20.37,1048,20.37,1049,20.37,1050,9.208,1051,14.019,1052,14.019]],["keywords/593",[]],["title/594",[562,1213.081]],["content/594",[0,2.233,51,8.523,171,7.528,177,5.024,340,10.64,356,9.323,562,15.704,565,8.029,566,7.606,807,15.256]],["keywords/594",[]],["title/595",[142,323.625,1445,668.753]],["content/595",[]],["keywords/595",[]],["title/596",[1272,1150.024]],["content/596",[11,4.153,14,8.633,22,3.061,24,1.168,25,1.768,39,2.743,51,2.123,59,2.342,64,1.894,85,2.304,119,3.461,142,4.415,148,1.128,154,1.574,157,3.183,192,3.061,195,2.584,214,1.606,222,1.837,228,5.233,265,2.457,267,1.955,346,2.011,406,3.449,412,5.036,458,5.189,468,1.999,474,3.469,524,5.164,586,3.199,587,3.572,594,5.065,601,2.571,630,7.706,720,6.772,793,2.436,822,2.34,829,2.912,891,2.953,999,2.523,1004,2.547,1042,2.769,1098,7.801,1118,4.593,1178,2.837,1198,3.677,1211,2.769,1308,3.481,1318,2.707,1322,2.478,1337,3.846,1339,2.416,1370,5.39,1371,3.572,1372,3.946,1373,3.946,1374,3.677,1375,3.946,1376,2.769,1377,6.236,1378,7.998,1379,2.912,1380,3.946,1396,6.746,1445,2.15,1446,4.376,1447,4.376,1448,3.677,1449,7.504,1450,9.853,1451,4.376,1452,9.853,1453,7.504,1454,9.853,1455,3.4,1456,3.26,1457,3.799,1458,4.376,1459,4.376,1460,4.376,1461,4.376,1462,4.376,1463,4.376,1464,3.946,1465,3.946,1466,4.376,1467,3.946]],["keywords/596",[]],["title/597",[142,278.011,144,483.846,1468,888.887]],["content/597",[11,2.594,14,12.849,24,1.719,31,3.168,64,2.787,81,4.805,93,7.677,119,2.908,142,4.284,144,4.57,145,3.471,157,4.684,200,5.905,206,4.484,228,6.669,235,6.01,268,5.86,412,3.878,458,5.816,468,5.046,577,6.832,796,4.087,822,5.905,827,9.016,829,7.35,886,11.273,984,7.253,1218,6.553,1246,5.357,1337,5.933,1378,12.338,1401,9.736,1403,5.611,1468,8.395,1469,9.959,1470,8.395,1471,8.893,1472,11.043,1473,11.043,1474,9.959,1475,9.28]],["keywords/597",[]],["title/598",[14,673.09,228,477.086,1337,337.436]],["content/598",[11,1.8,14,7.092,39,3.947,49,5.687,51,5.238,59,3.37,88,7.092,140,6.834,142,3.642,148,2.783,195,2.388,228,6.613,235,4.17,412,3.792,415,8.209,457,7.092,459,5.645,468,4.934,581,6.171,668,8.816,747,7.092,765,9.074,766,10.191,796,3.996,829,7.187,959,6.539,1062,4.17,1069,9.737,1090,7.755,1099,6.68,1107,7.092,1123,8.209,1174,7.002,1190,8.59,1252,8.389,1292,9.074,1337,6.377,1378,10.487,1396,7.393,1403,5.486,1468,8.209,1476,13.262,1477,10.798,1478,9.074,1479,10.798,1480,10.798,1481,10.191,1482,8.59,1483,9.737,1484,7.002,1485,6.407]],["keywords/598",[]],["title/599",[1378,931.952,1445,668.753]],["content/599",[0,0.991,11,2.448,14,5.119,24,1.872,31,4.214,39,4.396,47,4.933,59,2.432,74,2.319,91,3.933,119,4.349,142,4.484,157,5.101,161,5.187,162,6.813,164,8.236,165,8.236,166,9.144,167,12.219,168,9.144,169,9.144,192,3.179,194,3.541,195,1.724,214,2.86,228,4.749,235,3.01,406,6.75,412,4.224,458,4.104,468,3.561,481,3.522,524,3.445,565,5.496,566,3.374,598,6.549,630,3.711,666,7.028,717,5.925,720,4.016,724,5.187,762,5.505,788,3.805,886,7.525,1145,8.006,1246,5.835,1307,4.339,1337,3.96,1378,10.057,1401,4.876,1469,10.847,1486,7.794,1487,7.794,1488,6.363,1489,13.333,1490,7.794,1491,5.598,1492,4.992,1493,6.767,1494,7.794,1495,10.847,1496,6.363,1497,7.794,1498,9.569,1499,9.82,1500,7.794,1501,7.794]],["keywords/599",[]],["title/600",[142,323.625,1179,706.347]],["content/600",[0,2.138,39,4.516,71,7.331,142,2.938,162,9.526,228,3.995,267,5.521,268,6.556,406,5.678,434,9.032,481,5.582,535,8.874,565,5.645,566,5.348,644,8.223,735,7.819,927,11.141,1107,8.115,1119,11.141,1125,6.151,1179,8.729,1185,7.331,1295,8.011,1337,5.538,1403,6.277,1433,9.032,1438,10.646,1445,8.264,1489,13.483,1502,12.355,1503,12.355,1504,7.482,1505,9.392,1506,12.355,1507,12.355,1508,12.355]],["keywords/600",[]],["title/601",[0,95.034,119,196.905,142,177.78,412,262.553,432,341.656,1145,497.664,1445,367.371]],["content/601",[0,2.214,11,2.369,22,4.712,24,2.212,25,4.668,50,3.544,51,3.589,59,4.435,64,4.052,74,3.437,81,3.219,119,3.042,142,2.746,192,3.018,195,2.555,201,2.682,206,3.003,207,4.682,214,2.715,223,2.761,227,4.501,412,5.639,432,7.338,433,6.274,468,5.278,481,3.343,490,4.78,539,11.041,566,3.202,583,4.228,615,6.423,720,3.812,740,5.065,775,5.313,793,4.118,796,2.738,829,4.924,955,4.993,1004,4.306,1042,4.682,1043,9.189,1098,3.566,1118,4.527,1149,6.217,1170,5.624,1185,4.39,1186,7.688,1187,8.606,1217,3.612,1246,5.603,1337,4.679,1378,9.73,1379,7.688,1396,5.065,1445,5.675,1456,5.512,1476,7.909,1478,6.217,1483,6.671,1489,9.333,1509,7.398,1510,7.398,1511,7.398,1512,7.398,1513,6.423,1514,9.189,1515,11.551,1516,8.975,1517,7.398,1518,11.551,1519,14.21,1520,5.885,1521,7.398,1522,6.671,1523,6.671]],["keywords/601",[]],["title/602",[205,589.167,756,871.762]],["content/602",[]],["keywords/602",[]],["title/603",[1060,1628.212]],["content/603",[59,4.293,92,5.09,140,8.705,153,6.471,192,5.611,339,4.887,411,10.457,412,6.346,481,6.215,524,6.081,529,4.849,581,7.86,601,8.083,623,9.283,744,12.404,984,14.078,1042,8.705,1061,13.754,1062,5.312,1063,13.754,1064,9.155,1065,14.376,1066,13.212,1067,13.754,1068,9.034,1069,12.404,1070,9.155,1071,8.418]],["keywords/603",[]],["title/604",[472,1536.682]],["content/604",[2,1.981,32,3.411,47,2.569,51,1.969,53,2.6,59,2.905,64,1.775,91,2.048,129,8.513,145,1.276,171,1.739,177,1.161,190,2.362,192,1.656,195,2.059,205,1.757,206,1.648,221,4.487,263,2.701,339,3.945,340,2.458,356,8.288,406,3.232,412,1.425,432,1.855,460,2.821,463,5.465,479,1.73,481,5.673,484,3.024,492,2.539,495,3.411,498,3.83,502,1.921,511,2.385,520,4.889,524,5.55,525,7.492,529,1.431,566,1.757,581,5.319,584,5.777,587,5.742,591,2.967,595,5.347,601,4.133,630,1.932,652,2.122,708,2.484,728,3.153,752,7.599,758,3.83,792,5.24,796,1.502,800,2.539,822,9.901,830,2.385,842,2.458,850,2.632,872,2.511,880,2.222,886,2.539,903,4.816,905,2.062,928,7.076,943,5.91,948,3.085,962,2.779,1056,2.091,1062,6.032,1064,2.701,1072,4.059,1073,2.779,1074,11.33,1075,4.059,1076,5.595,1077,9.329,1078,4.059,1079,3.411,1080,3.411,1081,4.059,1082,3.229,1083,4.059,1084,4.059,1085,12.554,1086,6.035,1087,6.281,1088,5.91,1089,4.816,1090,5.052,1091,9.017,1092,5.226,1093,3.229,1094,4.059,1095,4.059,1096,4.059,1097,4.059,1098,6.052,1099,4.351,1100,2.867,1101,3.314,1102,8.081,1103,3.83,1104,2.666,1105,3.229,1106,4.059,1107,2.666,1108,4.059,1109,5.742,1110,3.085,1111,4.62,1112,4.059,1113,7.033,1114,4.059,1115,4.059,1116,3.524,1117,2.821,1118,2.484,1119,6.343,1120,4.059,1121,5.823,1122,4.816,1123,8.44,1124,4.059,1125,2.02,1126,4.059,1127,4.059,1128,4.059,1129,4.059,1130,4.059,1131,4.059,1132,3.085,1133,3.66,1134,3.229,1135,3.153,1136,3.411,1137,3.66,1138,3.66,1139,3.411,1140,2.569,1141,4.561,1142,2.915,1143,4.059,1144,4.059,1145,2.701,1146,4.059,1147,4.059,1148,3.411,1149,3.411,1150,4.059,1151,3.66,1152,3.524,1153,4.059,1154,4.059,1155,2.967,1156,3.411,1157,4.059,1158,3.024,1159,2.666,1160,3.524]],["keywords/604",[]],["title/605",[11,136.981,822,439.392,872,508.398,1074,482.901,1089,562.671,1090,590.221]],["content/605",[2,6.315,11,3.387,24,1.335,42,5.063,43,3.673,74,2.551,137,5.75,175,4.889,192,7.077,201,3.108,206,5.252,284,4.107,339,6.616,356,4.549,363,4.62,366,8.285,473,9.638,474,3.963,524,3.79,525,5.786,630,6.159,643,5.87,688,6.268,724,5.706,984,10.232,1001,7.731,1042,5.426,1062,8.674,1064,8.61,1077,7.205,1099,5.304,1156,13.091,1161,8.573,1162,8.573,1163,8.573,1164,12.936,1165,7.731,1166,8.573,1167,8.573,1168,5.96,1169,7.731,1170,6.518,1171,6.82,1172,8.573,1173,8.091,1174,8.388,1175,7.731,1176,6.82,1177,8.573,1178,8.388,1179,4.449,1180,8.573,1181,7.731,1182,6.661,1183,6.518,1184,7.205,1185,5.088,1186,5.706]],["keywords/605",[]],["title/606",[42,146.943,88,246.597,339,133.408,432,171.561,630,312.924,677,207.274,796,138.938,872,232.28,1062,145.003,1087,253.385,1089,257.076,1123,285.427,1148,315.509,1187,279.721,1188,375.445,1189,220.63,1190,298.682]],["content/606",[42,3.223,43,3.528,67,4.472,88,5.408,129,4.749,137,3.66,148,2.122,171,3.528,195,1.821,205,5.431,206,6.9,222,3.458,235,3.18,339,6.5,356,4.369,370,10.243,432,3.763,473,6.135,474,3.806,524,3.64,525,8.467,547,7.425,583,4.706,584,3.223,599,6.92,630,5.974,633,7.149,636,5.557,649,6.398,675,7.771,677,6.926,688,6.02,752,6.723,796,6.289,830,7.372,872,7.762,874,4.623,928,6.26,962,5.638,1031,5.638,1062,7.444,1073,5.638,1074,4.839,1086,5.339,1087,11.47,1099,5.094,1123,6.26,1137,7.425,1141,8.135,1148,6.92,1156,6.92,1169,7.425,1181,7.425,1186,5.481,1187,6.135,1189,4.839,1190,6.551,1191,8.234,1192,12.546,1193,7.771,1194,8.234,1195,8.234,1196,6.398,1197,10.543,1198,6.92,1199,6.135,1200,9.011,1201,7.425,1202,8.234,1203,8.234,1204,7.771,1205,7.425,1206,7.425,1207,8.234,1208,7.425,1209,6.551]],["keywords/606",[]],["title/607",[92,276.689,137,332.33,406,343.608,529,263.585,1089,511.956,1210,568.417,1211,473.213]],["content/607",[10,4.788,25,3.485,64,4.391,81,5.654,92,5.785,148,2.223,194,3.919,205,6.767,227,3.36,235,3.331,432,5.937,525,5.82,529,4.581,551,8.139,591,6.305,592,4.801,594,8.769,644,8.648,720,4.444,778,6.701,796,3.191,822,9.305,888,6.556,1030,6.861,1062,5.018,1074,10.226,1076,6.861,1077,7.247,1082,6.861,1086,8.426,1091,9.332,1118,9.568,1133,7.777,1138,7.777,1141,5.592,1210,6.556,1211,11.815,1212,8.624,1213,8.624,1214,8.624,1215,7.777,1216,7.777,1217,9.578,1218,7.71,1219,8.139,1220,8.624,1221,8.624,1222,10.337,1223,11.717,1224,12.993,1225,8.173,1226,8.624,1227,7.777,1228,8.624,1229,8.624,1230,8.624,1231,7.041,1232,7.777]],["keywords/607",[]],["title/608",[363,317.154,595,447.432,800,368.216,1062,227.305,1071,360.185,1089,402.989,1099,364.118,1211,372.492,1233,530.746,1234,468.21]],["content/608",[51,5.087,68,5.607,81,6.527,92,3.881,192,6.119,214,3.849,223,3.913,265,5.888,473,7.813,474,4.847,488,12.247,507,7.813,584,4.104,595,7.972,673,6.888,718,7.18,747,6.888,784,9.897,800,6.561,822,5.607,839,7.077,872,6.488,1062,5.793,1064,6.98,1071,6.418,1073,7.18,1074,8.815,1089,7.18,1099,9.28,1110,7.972,1121,6.561,1176,8.343,1210,7.972,1211,6.637,1231,8.562,1233,9.457,1234,8.343,1235,10.487,1236,9.105,1237,10.487,1238,14.717,1239,10.487,1240,10.487,1241,6.888,1242,10.271,1243,9.105,1244,9.457,1245,10.487,1246,5.087,1247,8.813,1248,8.813,1249,8.148,1250,6.98,1251,7.29,1252,8.148,1253,10.487,1254,10.487,1255,9.457]],["keywords/608",[]],["title/609",[205,355.713,366,526.331,1062,317.373,1089,562.671,1256,821.749,1257,821.749]],["content/609",[481,8.671,566,8.307,788,9.369,1258,8.576]],["keywords/609",[]],["title/610",[177,181.148,478,433.764,479,270.041,740,433.764,888,481.601,1089,433.764,1121,396.335,1132,481.601,1259,571.277]],["content/610",[0,1.494,94,6.718,177,3.362,474,8.613,479,7.943,486,9.05,511,6.909,577,7.273,584,4.601,632,8.938,771,9.134,796,6.895,950,7.934,977,11.095,1062,8.429,1099,10.057,1121,10.17,1132,8.938,1141,10.541,1171,9.353,1174,7.623,1186,7.825,1232,10.602,1255,10.602,1259,10.602,1260,10.602,1261,10.602,1262,9.879,1263,11.756,1264,11.756,1265,8.595,1266,9.598,1267,11.756,1268,7.53,1269,11.095,1270,6.101,1271,11.756]],["keywords/610",[]],["title/611",[1272,1150.024]],["content/611",[]],["keywords/611",[]],["title/612",[866,930.165,1273,1169.223,1274,1103.495]],["content/612",[0,1.937,64,2.705,81,6.63,92,3.966,105,7.836,140,6.784,171,6.528,177,3.065,192,4.372,194,4.87,339,3.809,340,6.491,459,5.603,461,7.451,489,7.698,510,9.041,516,5.776,529,5.371,530,10.116,557,10.761,591,7.836,592,10.747,598,9.007,644,7.134,652,5.603,734,6.784,779,6.018,793,5.967,1074,8.953,1086,6.95,1088,9.007,1122,7.339,1134,8.527,1186,7.134,1211,6.784,1217,5.233,1225,10.091,1246,5.199,1275,9.007,1276,14.379,1277,6.491,1278,10.718,1279,9.007,1280,10.718,1281,8.148,1282,10.718,1283,9.666,1284,10.718,1285,7.57,1286,10.718]],["keywords/612",[]],["title/613",[0,206.953]],["content/613",[0,1.947,64,2.725,81,4.698,91,5.448,92,5.668,145,3.394,171,4.626,194,4.906,206,4.384,339,5.442,351,6.916,370,8.816,489,7.755,529,5.399,581,11.068,592,6.011,594,7.287,722,9.074,734,6.834,741,7.894,803,6.68,808,8.045,822,5.774,830,6.345,872,6.68,995,11.198,1062,7.48,1064,7.187,1074,6.345,1099,9.476,1104,7.092,1111,7.092,1141,7.002,1176,8.59,1189,6.345,1199,8.045,1211,12.943,1217,5.271,1225,5.645,1287,7.755,1288,9.737,1289,10.798,1290,9.737,1291,12.871,1292,9.074,1293,4.58]],["keywords/613",[]],["title/614",[45,645.501,205,701.021]],["content/614",[]],["keywords/614",[]],["title/615",[59,508.159]],["content/615",[22,4.437,42,4.258,59,7.099,64,2.745,81,4.733,107,4.614,112,4.784,137,4.835,145,3.419,201,5.582,346,4.999,363,5.862,366,6.968,412,7.201,458,5.729,516,5.862,601,6.393,630,7.331,734,6.885,740,7.449,859,7.683,866,8.654,886,6.806,1042,6.885,1043,8.654,1111,10.113,1179,5.645,1268,6.968,1294,13.885,1295,7.054,1296,10.878,1297,8.654,1298,9.142,1299,8.452,1300,17.871,1301,8.654,1302,7.683,1303,6.217,1304,9.142,1305,10.878,1306,9.142,1307,8.572,1308,8.654]],["keywords/615",[]],["title/616",[195,360.137]],["content/616",[0,0.641,11,3.087,24,0.785,42,1.973,50,4.055,53,5.421,64,3.233,81,4.759,92,3.132,111,2.598,137,2.241,144,2.086,148,1.3,154,3.933,192,5.824,194,2.291,195,4.766,201,3.965,205,4.735,206,5.201,207,3.191,214,1.85,235,1.947,297,2.636,339,3.887,340,3.053,363,4.561,412,4.498,434,3.686,468,3.867,479,2.149,486,7.132,495,4.237,509,3.833,524,3.742,529,1.777,534,4.378,581,2.881,601,2.963,615,4.378,652,2.636,729,3.756,734,5.357,745,2.461,788,2.461,792,6.306,872,3.119,928,3.833,1004,2.935,1014,5.559,1062,1.947,1064,3.356,1091,3.621,1098,7.918,1099,3.119,1111,3.312,1118,3.086,1134,8.701,1139,4.237,1141,7.093,1175,7.632,1176,4.011,1183,6.434,1184,4.237,1205,4.547,1211,5.357,1218,2.992,1242,3.452,1248,4.237,1285,3.561,1309,2.477,1310,5.042,1311,4.117,1312,5.042,1313,8.464,1314,5.042,1315,5.042,1316,5.042,1317,9.192,1318,9.562,1319,10.323,1320,4.011,1321,5.042,1322,6.195,1323,6.079,1324,4.547,1325,5.042,1326,4.547,1327,5.042,1328,3.833,1329,5.042,1330,4.011,1333,5.042,1334,4.547,1336,5.042,1337,1.66,1338,5.042,1339,2.784,1340,3.621,1341,3.833,1342,4.547,1343,4.547,1344,4.547,1345,4.547,1346,4.547,1347,4.547,1348,4.547,1349,4.547,1350,2.908,1351,4.547,1352,4.237,1353,4.547,1354,4.547,1355,4.547,1356,4.547,1357,4.547,1358,5.042,1359,4.547,1360,4.378,1361,4.634,1362,5.042,1364,5.042,1365,5.042,1366,5.042,1367,5.042,1368,5.042,1369,4.237,3254,5.472]],["keywords/616",[]],["title/617",[142,323.625,1370,977.584]],["content/617",[14,6.79,25,4.178,59,4.634,64,3.747,119,5.001,142,5.247,195,3.843,228,5.618,412,6.101,458,9.15,468,4.724,474,6.863,524,6.564,586,7.558,594,6.977,601,6.075,630,7.07,720,5.327,822,5.528,829,6.881,891,6.977,999,5.962,1098,8.375,1178,6.704,1211,6.543,1308,8.224,1318,6.396,1337,5.721,1370,10.664,1371,8.44,1372,9.323,1373,9.323,1374,8.688,1375,9.323,1376,6.543,1377,9.397,1378,7.079,1379,6.881,1380,9.323,1381,10.338]],["keywords/617",[]],["title/618",[339,578.557]],["content/618",[22,4.682,74,6.224,145,3.607,195,2.539,339,8.373,359,6.951,412,6.987,529,5.636,556,7.747,565,5.245,570,10.351,581,6.56,642,7.101,652,6,959,6.951,1014,7.539,1042,7.265,1068,10.501,1178,11.93,1182,8.918,1183,8.726,1184,9.646,1293,6.781,1322,6.501,1377,7.265,1382,11.478,1384,11.478,1385,10.79,1386,13.436,1387,11.478,1388,11.478]],["keywords/618",[]],["title/619",[81,445.914,206,416.062,339,364.138,1350,590.981]],["content/619",[0,2.622,130,7.662,144,7.017,479,7.228,502,8.025,734,10.732,788,8.278,874,9.521,988,11.977,1389,8.278,1390,20.053]],["keywords/619",[]],["title/620",[2,794.882]],["content/620",[0,2.368,2,7.936,10,6.867,11,1.96,49,6.191,51,5.703,59,3.669,119,3.096,192,4.796,194,5.342,195,2.6,201,4.262,205,5.089,468,5.372,481,7.345,524,5.197,529,5.731,577,7.273,636,7.934,735,7.441,756,7.53,796,6.895,1118,7.195,1145,7.825,1218,12.522,1223,10.602,1272,8.304,1293,4.986,1307,6.545,1323,8.444,1391,10.602,1392,7.934,1393,11.756,1394,7.623,1395,9.353,1396,8.05,1397,11.756,1398,11.756,1399,10.602]],["keywords/620",[]],["title/621",[11,203.407,60,376.962,111,303.249,412,206.67,529,339.169,1065,468.21,1400,402.989]],["content/621",[0,1.905,10,2.408,11,2.498,26,3.468,39,2.389,45,3.608,59,2.039,60,4.186,68,5.599,92,6.476,111,8.449,119,3.451,140,12.089,142,1.554,145,2.054,171,2.8,179,2.398,192,6.113,193,3.391,195,2.316,235,5.06,339,2.322,366,4.186,411,7.961,412,7.097,460,4.543,468,4.785,474,3.021,511,3.84,524,5.792,529,4.619,601,6.153,630,3.112,635,6.167,720,3.367,724,4.35,725,5.674,746,4.41,796,2.418,822,5.599,847,5.492,955,4.41,984,8.606,1031,4.475,1032,5.893,1062,5.06,1065,11.921,1066,10.955,1098,5.048,1118,3.999,1185,3.878,1285,4.616,1318,4.043,1361,3.578,1400,10.26,1401,4.088,1402,11.011,1403,8.331,1404,6.535,1405,3.343,1407,6.535,1408,6.535,1409,4.968,1410,5.199,1411,6.535,1412,5.492,1413,5.893,1414,6.535,1415,4.136,1417,5.492,1418,5.893,1420,6.535,1421,5.893,1422,5.893,1423,6.535,1424,10.471,1425,6.535,1426,6.535,1427,6.167,1428,6.535,1429,6.535,3255,7.093]],["keywords/621",[]],["title/622",[351,1042.871]],["content/622",[11,2.455,111,7.589,119,3.879,171,6.31,206,5.98,265,8.27,351,9.433,359,8.919,412,5.172,496,9.214,601,8.655,616,10.578,630,7.013,796,5.45,1062,5.688,1142,10.578,1185,8.74,1211,9.321,1243,12.788,1285,10.403,1403,7.483,1409,11.197,1410,11.717,1430,12.377,1431,13.282,1432,11.717,1433,10.768]],["keywords/622",[]],["title/623",[756,871.762,1272,961.334]],["content/623",[]],["keywords/623",[]],["title/624",[756,871.762,1434,1082.782]],["content/624",[0,2.415,10,1.996,11,4.222,14,3.558,24,0.843,59,1.691,67,4.881,74,3.987,80,2.475,91,2.733,92,4.959,119,1.427,143,2.853,144,3.718,192,3.665,195,2.547,196,2.169,212,2.231,222,2.275,227,2.111,228,1.752,297,2.832,339,1.925,468,2.475,474,2.504,502,2.564,511,3.183,524,3.972,529,6.262,566,2.345,623,3.656,630,2.579,722,4.552,734,3.428,745,2.645,762,3.826,803,5.559,874,3.042,1062,2.092,1064,3.606,1071,5.499,1140,3.428,1141,3.513,1185,3.214,1218,3.214,1242,3.709,1246,2.628,1293,3.811,1337,1.784,1361,2.966,1389,4.387,1394,8.689,1395,4.309,1399,4.885,1434,4.309,1435,3.766,1436,7.551,1438,3.016,1439,5.417,1440,5.417,1441,5.417,1442,3.068,1443,5.417,1444,5.417,3256,5.879]],["keywords/624",[]],["title/625",[85,716.803,1445,668.753]],["content/625",[0,2.702,2,6.578,11,1.509,47,5.73,49,4.768,59,2.825,74,4.009,85,4.768,119,2.384,142,3.204,145,2.845,192,5.496,195,4.216,196,5.395,205,5.833,227,5.25,284,4.337,491,7.202,529,5.674,566,3.919,568,5.87,583,5.173,587,7.391,591,6.619,673,5.946,708,5.54,723,7.86,756,10.308,803,11.791,809,6.11,1179,4.698,1217,4.42,1218,5.372,1225,4.733,1287,6.502,1293,5.715,1318,8.336,1350,5.221,1413,8.164,1438,9.925,1442,5.128,1445,7.908,1524,9.053,1525,9.053,1526,9.053,1527,5.221,1528,9.053,1529,13.474,1530,12.151,1531,9.053,1532,13.474,1533,5.87,1534,9.053]],["keywords/625",[]],["title/626",[59,424.783,1445,668.753]],["content/626",[]],["keywords/626",[]],["title/627",[1272,1150.024]],["content/627",[]],["keywords/627",[]],["title/628",[800,851.536,1070,905.936]],["content/628",[0,1.729,11,1.528,13,6.862,52,6.969,59,7.11,64,3.432,65,5.192,92,5.033,112,4.031,142,3.234,177,2.621,192,3.739,195,2.028,267,4.097,268,4.864,346,4.213,411,6.969,412,7.296,425,7.703,481,4.142,524,4.053,557,6.475,566,3.968,844,6.187,874,5.147,953,6.969,1031,6.277,1196,7.122,1246,6.597,1250,6.102,1294,8.267,1295,5.944,1306,11.429,1307,12.136,1370,6.584,1377,12.126,1435,6.372,1445,4.504,1535,11.429,1536,9.167,1537,9.167,1538,7.293,1539,6.969,1540,9.167,1541,8.267,1542,9.167,1543,9.167,1544,9.167,1545,8.651,1546,6.021]],["keywords/628",[]],["title/629",[800,851.536,1547,1227.403]],["content/629",[59,6.135,92,5.802,412,7.54,525,10.582,567,13.176,1065,12.473,1246,9.535,1306,13.176,1307,10.943,1405,10.985,1548,19.656,1549,14.798,1550,15.679]],["keywords/629",[]],["title/630",[1071,832.963,1551,1227.403]],["content/630",[]],["keywords/630",[]],["title/631",[1438,757.728,1527,784.912]],["content/631",[59,5.551,64,4.488,71,10.554,796,6.582,1285,12.562,1295,11.533,1307,9.901,1438,9.901,1527,12.244]],["keywords/631",[]],["title/632",[0,172.997,74,404.935]],["content/632",[0,2.424,11,4.261,24,1.118,47,4.544,59,6.163,74,3.357,119,1.891,143,3.781,144,2.971,235,2.773,346,5.185,412,2.521,529,2.531,835,8.406,874,6.335,1107,4.715,1246,5.473,1295,4.655,1307,7.76,1433,5.249,1527,4.14,1552,6.775,1553,5.711,1554,7.179]],["keywords/632",[]],["title/633",[92,503.678,529,479.824]],["content/633",[0,2.261,55,10.256,59,5.551,64,4.488,92,6.582,119,4.684,235,6.869,529,6.27,1217,8.682,1307,9.901]],["keywords/633",[]],["title/634",[1179,844.988]],["content/634",[0,2.228,1,5.685,48,9.28,59,5.47,74,3.908,142,3.123,154,4.723,177,5.012,192,5.358,205,5.685,267,7.833,268,6.969,524,5.807,630,6.254,632,9.985,796,4.861,953,13.325,1070,8.742,1118,10.727,1179,10.923,1250,11.666,1307,7.312,1445,8.612,1555,11.845,1556,9.786,1557,10.449]],["keywords/634",[]],["title/635",[142,387.146]],["content/635",[0,2.138,22,5.04,48,7.912,59,5.968,64,4.244,74,3.676,85,6.507,119,4.429,140,7.819,142,4.881,192,5.04,195,2.733,228,3.995,267,8.546,339,4.39,412,4.338,432,5.645,468,5.645,481,5.582,484,9.205,490,5.113,584,4.835,627,9.032,1098,8.108,1145,8.223,1301,13.38,1337,4.068,1445,8.264,1489,8.115,1558,12.355,1559,8.588,1560,11.141]],["keywords/635",[]],["title/636",[0,130.254,192,418.03,195,226.667,1389,500.291]],["content/636",[0,2.935,22,4.217,25,6,59,3.226,64,2.609,68,5.528,74,5.169,111,5.327,119,3.91,120,7.079,142,3.53,195,3.284,214,3.794,235,3.993,339,3.673,412,6.101,482,6.196,502,4.893,509,7.859,510,6.135,622,6.79,720,5.327,796,3.826,848,6.977,946,8.224,950,6.977,962,7.079,1066,7.558,1073,7.079,1098,7.157,1100,7.302,1170,7.859,1246,5.015,1307,5.755,1350,5.962,1386,8.688,1389,9.818,1476,7.079,1482,8.224,1489,6.79,1559,7.187,1561,8.224,1562,7.079,1563,10.338,1564,5.755,1565,10.338]],["keywords/636",[]],["title/637",[1400,1114.875]],["content/637",[47,7.886,59,5.28,64,3.144,92,4.611,111,9.896,119,4.455,194,5.662,195,2.756,235,4.812,267,5.568,268,6.612,412,5.94,434,9.11,478,8.532,481,7.644,491,9.913,566,5.394,577,7.709,720,6.42,745,6.083,796,4.611,1062,4.812,1208,11.237,1258,5.568,1307,6.937,1400,8.532,1445,6.122,1566,8.801,1567,12.46,1568,12.46,1569,12.861,1570,10.471,1571,10.471,1572,12.46,1573,12.46,1574,12.46,1575,12.46,1576,12.46]],["keywords/637",[]],["title/638",[195,301.048,1445,668.753]],["content/638",[]],["keywords/638",[]],["title/639",[1272,1150.024]],["content/639",[0,1.296,1,1.983,11,4.16,18,3.645,20,3.851,24,0.713,49,4.111,53,7.713,64,3.039,92,4.456,119,1.207,142,2.425,143,2.413,177,3.444,192,4.912,195,4.267,206,4.14,214,1.682,265,2.573,269,3.291,297,2.395,339,1.628,406,2.106,457,3.01,458,2.413,484,3.414,486,8.736,490,3.23,524,3.451,529,3.595,542,3.236,556,5.268,642,2.835,643,3.137,652,2.395,669,5.934,673,3.01,720,2.361,800,2.867,803,4.829,812,3.978,891,3.092,915,3.414,932,4.132,973,3.741,1004,2.667,1042,2.9,1062,3.938,1068,6.698,1071,4.777,1073,5.345,1090,3.291,1098,3.763,1110,3.483,1118,6.241,1141,2.971,1155,3.35,1185,2.719,1238,6.56,1246,4.947,1247,3.851,1302,8.506,1308,3.645,1323,5.607,1339,2.53,1370,3.291,1376,4.94,1405,2.344,1409,3.483,1432,3.645,1434,3.645,1445,2.251,1455,3.56,1456,3.414,1520,3.645,1539,3.483,1647,7.806,1648,4.582,1649,4.582,1650,4.582,1651,4.582,1653,7.039,1655,4.582,1656,7.039,1657,3.851,1659,4.582,1660,3.851,1662,4.582,1663,3.483,1664,4.582,1665,3.851,1666,4.582,3257,8.472]],["keywords/639",[]],["title/640",[144,563.234,195,301.048]],["content/640",[11,1.691,16,4.592,24,1.579,26,5.382,31,4.202,39,5.353,80,4.635,81,4.414,92,2.324,119,3.36,142,3.822,144,2.599,148,2.614,154,4.588,157,4.302,177,4.188,192,2.562,194,2.854,195,4.415,201,3.677,214,3.723,222,2.638,223,3.785,224,3.009,227,2.447,228,2.031,267,2.807,268,3.333,297,6.669,406,2.887,423,6.08,432,2.87,433,3.412,458,6.719,468,2.87,479,2.678,481,2.838,511,3.691,566,2.719,581,5.797,583,3.59,630,6.974,673,4.126,842,3.804,886,3.93,959,6.142,984,9.619,1121,9.163,1142,4.511,1247,5.278,1252,4.88,1303,3.59,1322,3.558,1337,2.068,1339,7.043,1340,4.511,1401,3.93,1468,4.775,1470,9.699,1583,4.073,1617,6.42,1619,11.505,1620,5.664,1621,5.664,1633,7.711,1667,4.997,1668,5.664,1669,5.664,1670,5.664,1671,9.147,1672,7.051,1673,10.143,1674,10.143,1675,12.758,1676,12.758,1677,12.758,1678,10.143,1679,9.147,1680,8.807,1681,9.147,1682,5.278,1683,6.281,1684,6.281,1685,6.281,1686,6.281,1687,4.997]],["keywords/640",[]],["title/641",[142,278.011,195,258.616,529,412.194]],["content/641",[142,4.446,267,8.356,268,9.922,481,8.449,566,8.094,1688,18.698]],["keywords/641",[]],["title/642",[195,258.616,529,412.194,1179,606.788]],["content/642",[142,3.688,154,5.578,177,5.583,195,3.431,267,6.932,268,8.231,284,7.432,406,7.129,468,7.088,481,8.822,524,6.858,529,5.469,566,8.452,630,7.386,1118,9.493,1179,10.132,1350,8.946,1445,7.622]],["keywords/642",[]],["title/643",[195,201.744,263,607.104,458,480.359,529,321.549,1098,439.69]],["content/643",[]],["keywords/643",[]],["title/644",[195,258.616,745,570.807,1155,854.828]],["content/644",[]],["keywords/644",[]],["title/645",[745,500.291,1014,673.09,1155,749.226,1389,500.291]],["content/645",[49,8.629,85,8.629,144,6.78,177,5.777,195,4.468,267,7.322,673,13.268,715,13.035,888,12.456,950,11.058,1189,9.628,1445,8.05,1689,13.769,1690,16.385]],["keywords/645",[]],["title/646",[119,307.919,142,278.011,1322,662.255]],["content/646",[11,3.811,24,1.732,31,3.192,39,4.067,49,5.86,59,3.473,142,5.348,157,6.636,158,6.884,162,6.303,192,4.539,195,2.461,227,4.336,267,4.973,268,5.905,406,7.19,458,5.86,583,6.359,630,5.298,673,7.309,745,5.432,886,6.962,950,7.51,1301,8.852,1377,9.902,1445,5.467,1489,7.309,1691,15.645,1692,11.128,1693,11.128,1694,10.035,1695,11.128,1696,11.128,1697,11.128,1698,11.128,1699,11.128,1700,11.128,1701,11.128,1702,11.128,1703,11.128]],["keywords/646",[]],["title/647",[145,215.559,177,196.126,195,151.703,201,248.65,206,278.462,1322,388.477,1326,618.51,1328,521.42]],["content/647",[11,4.082,24,1.924,31,4.089,39,2.192,53,3.841,59,3.858,64,3.596,81,2.609,119,2.573,142,4.218,154,4.445,177,4.075,195,3.471,196,4.949,201,5.167,206,5.019,207,3.795,214,2.201,263,3.991,266,4.468,458,5.145,565,5.648,738,4.468,793,3.339,796,2.219,962,4.106,1098,4.709,1149,5.039,1159,3.939,1183,7.427,1186,3.991,1246,2.909,1302,4.236,1317,8.21,1322,5.533,1323,4.307,1328,4.559,1340,4.307,1352,5.039,1470,9.397,1474,5.408,1499,4.896,1520,4.771,1617,3.795,1633,4.559,1668,5.408,1669,8.81,1670,5.408,1671,8.81,1672,6.791,1704,5.408,1705,4.169,1706,12.361,1707,12.361,1708,12.361,1709,9.769,1710,9.769,1711,12.361,1712,12.361,1713,6.257,1714,5.997,1715,5.997,1716,5.997,1717,5.997,1718,5.997,1719,5.997,1720,5.997,1721,5.997,1722,5.408]],["keywords/647",[]],["title/648",[59,284.664,195,201.744,993,860.829,1307,507.784,1723,822.532]],["content/648",[0,1.227,1,6.115,11,1.609,53,6.183,59,5.739,64,5.159,91,4.871,142,2.295,144,3.995,177,2.76,192,5.763,195,4.068,212,3.975,228,3.121,284,4.624,339,3.43,486,5.374,577,10.338,601,9.819,620,5.672,630,7.956,706,6.933,800,6.039,817,5.084,866,11.239,874,5.42,988,6.818,1068,6.34,1073,6.609,1111,6.34,1142,6.933,1179,7.332,1183,7.338,1200,6.933,1295,6.259,1298,11.872,1301,7.679,1307,7.865,1337,3.178,1350,5.567,1369,8.112,1564,5.374,1606,8.112,1633,7.338,1713,6.183,1723,8.705,1724,9.653,1725,9.653,1726,9.653,1727,9.653,1728,9.653,1729,9.653,1730,9.653,1731,9.653,1732,9.653,1733,9.653]],["keywords/648",[]],["title/649",[0,104.448,74,244.482,195,181.759,735,520.09,1107,539.736,1442,465.443]],["content/649",[0,2.346,74,5.492,267,8.25,268,9.796,481,8.342,566,7.991,756,11.824]],["keywords/649",[]],["title/650",[195,301.048,529,479.824]],["content/650",[149,6.356,195,4.844,212,6.748,529,5.776,745,7.999,1277,9.922,1295,10.625,1303,9.363,1442,9.28,1516,12.73,1665,13.769,1734,14.226,1735,16.385,1736,13.035,1737,16.385]],["keywords/650",[]],["title/651",[10,430.893,529,412.194,1394,758.192]],["content/651",[0,1.544,1,5.259,10,8.318,64,3.066,104,9.919,111,8.567,119,3.199,145,3.818,175,4.591,194,5.52,195,4.193,235,4.692,258,7.878,491,9.665,524,5.371,529,6.683,580,11.466,581,6.942,642,7.516,712,12.156,720,6.26,796,6.153,1037,10.209,1066,12.156,1142,8.726,1391,10.955,1394,13.218,1430,10.209,1738,9.867,1739,12.148]],["keywords/651",[]],["title/652",[195,301.048,1740,882.593]],["content/652",[0,1.936,9,2.881,10,5.078,31,1.627,39,2.072,64,2.355,68,6.358,74,4.1,80,4.264,81,4.06,87,3.24,91,2.861,92,5.099,119,4.936,142,1.348,145,2.933,192,3.806,194,6.261,195,3.048,196,2.27,205,4.039,206,2.302,222,2.381,235,2.19,263,3.774,265,3.184,297,2.964,340,5.651,406,2.606,412,1.991,458,2.986,502,6.522,524,4.125,529,5.37,592,3.157,630,6.561,642,3.508,644,3.774,745,2.768,775,4.072,793,3.157,891,6.297,900,3.882,902,4.311,959,3.434,962,3.882,1031,3.882,1058,4.765,1088,4.765,1092,3.184,1117,3.942,1141,3.677,1185,3.365,1197,4.765,1217,6.727,1218,3.365,1225,8.565,1293,2.405,1337,4.537,1359,5.113,1361,5.109,1377,3.589,1401,3.547,1403,7.001,1405,2.901,1442,8.628,1445,4.585,1533,3.677,1645,4.765,1704,5.113,1740,13.338,1741,5.67,1742,5.113,1743,5.67,1744,17.839,1745,7.25,1746,5.67,1747,4.511,1748,4.145,1749,5.67,1750,5.67,1751,9.331,1752,8.266,1753,5.67,1754,5.351,1755,5.67,1756,4.145,3258,8.806,3259,4.765,3260,6.154]],["keywords/652",[]],["title/653",[195,301.048,1277,824.216]],["content/653",[10,4.797,64,3.285,92,4.817,190,7.577,195,3.854,529,4.589,630,6.198,652,6.805,741,9.517,796,6.447,842,7.883,1038,10.356,1270,6.755,1277,7.883,1297,10.356,1302,9.194,1303,7.439,1350,10.047,1403,6.613,1405,6.66,1412,10.939,1530,15.712,1740,8.441,1744,11.739,1752,9.049,1757,13.017,1758,13.017,1759,9.194,1760,10.238,1761,10.356,1762,13.017,1763,13.017,1764,13.017,1765,10.939,1766,13.017]],["keywords/653",[]],["title/654",[195,201.744,735,577.275,1071,558.202,1155,666.846,1516,708.667]],["content/654",[10,3.066,11,4.268,24,0.769,40,4.714,47,3.126,71,2.931,81,2.149,94,2.823,119,2.838,142,1.174,145,2.614,192,3.393,193,4.317,195,3.779,196,1.978,212,2.034,223,1.843,235,1.908,412,1.734,481,2.232,529,2.933,566,2.138,579,3.68,581,2.823,630,2.352,688,3.611,745,6.172,788,2.411,822,2.641,835,9.42,1062,1.908,1248,4.151,1258,2.207,1277,6.526,1295,3.203,1299,3.838,1361,2.705,1394,3.203,1401,3.09,1553,8.573,1740,5.394,1767,8.319,1768,4.939,1769,4.939]],["keywords/654",[]],["title/655",[74,271.363,577,564.298,1442,516.621,1475,766.496,1770,822.532]],["content/655",[40,7.487,64,4.319,74,3.772,92,4.691,192,5.171,212,5.221,284,6.073,432,5.793,516,6.831,529,4.469,577,7.843,584,4.962,601,10.058,738,9.445,745,6.189,796,6.334,891,8.556,1062,4.896,1076,10.085,1102,11.007,1111,8.326,1132,9.638,1217,6.189,1261,11.432,1277,10.365,1295,8.221,1395,10.085,1403,6.441,1445,6.229,1475,10.653,1539,9.638,1552,11.964,1682,10.653,1770,11.432,1773,12.677,1774,12.677,1775,12.677,3261,13.759]],["keywords/655",[]],["title/656",[194,465.643,195,226.667,196,410.291,1318,634.01]],["content/656",[88,10.884,195,4.499,196,6.635,201,6.008,412,5.819,478,11.347,516,8.93,1062,6.4,1099,10.252,1178,10.746,1190,13.183,1318,10.252,1776,16.571,1777,12.115,1778,16.571]],["keywords/656",[]],["title/657",[64,207.363,144,340.055,195,277.067,196,329.003,1318,508.398]],["content/657",[11,3.738,24,1.777,31,4.037,39,5.821,53,4.667,64,2.881,80,3.33,81,3.171,112,3.204,119,3.706,148,1.878,154,2.62,191,4.127,195,2.525,196,6.924,199,4.725,200,8.516,201,6.27,203,5.967,205,6.894,206,7.785,207,4.612,297,3.809,363,3.927,366,4.667,502,3.449,556,4.918,623,4.918,754,6.327,756,4.667,903,9.636,1062,2.814,1092,4.091,1139,6.123,1270,5.924,1318,4.508,1320,9.081,1323,5.234,1334,6.571,1341,8.678,1342,6.571,1343,6.571,1344,6.571,1345,6.571,1346,6.571,1347,6.571,1348,6.571,1349,6.571,1350,4.202,1351,6.571,1352,6.123,1353,6.571,1354,6.571,1355,6.571,1356,6.571,1357,6.571,1369,6.123,1405,3.728,1430,6.123,1438,4.057,1499,5.949,1538,5.797,1663,8.678,1779,5.949,1780,4.508,1781,7.287,1782,9.081,1783,7.287,1784,11.415,1785,5.429,1786,7.287,1787,7.287,1788,7.287,1789,7.287,1790,6.571]],["keywords/657",[]],["title/658",[74,244.482,195,181.759,196,329.003,1185,487.635,1318,508.398,1653,741.051]],["content/658",[0,1.449,10,1.096,11,4.251,24,1.383,31,0.853,43,1.274,52,2.26,74,3.393,80,2.442,81,1.294,85,1.566,119,0.783,143,1.566,144,1.23,145,0.934,177,0.85,179,1.091,192,1.213,195,3.631,196,7.673,201,2.638,206,2.954,211,1.84,222,1.249,223,1.11,235,1.148,237,2.31,263,1.979,267,1.329,269,2.136,297,2.793,341,1.764,412,1.044,458,1.566,524,1.314,529,1.048,535,2.136,632,2.26,644,1.979,688,3.907,706,2.136,720,1.532,745,3.552,752,4.363,788,1.452,793,1.655,796,1.1,835,10.476,886,1.86,946,2.365,1014,1.953,1027,1.953,1062,1.148,1101,2.428,1107,3.51,1117,3.715,1141,3.465,1155,2.174,1171,2.365,1185,9.116,1201,2.681,1242,2.036,1258,1.329,1277,1.801,1279,2.499,1318,4.502,1320,2.365,1323,2.136,1341,2.26,1361,1.628,1394,1.928,1431,2.681,1470,2.26,1504,1.801,1516,2.31,1553,2.365,1561,2.365,1660,2.499,1705,2.067,1740,1.928,1748,2.174,1791,2.973,1792,3.236,1793,2.973,1794,2.973,1795,2.973,1796,2.973,1797,2.973,1798,8.884,1799,2.973,1800,2.973,1801,2.973,1802,2.973,1803,2.973,1804,2.582,1805,2.973]],["keywords/658",[]],["title/659",[1179,706.347,1445,668.753]],["content/659",[]],["keywords/659",[]],["title/660",[735,648.59,1121,641.144,1179,531.827,1401,641.144]],["content/660",[0,1.008,11,4.158,24,0.727,45,2.578,53,2.991,59,4.943,74,4.712,81,2.032,119,2.089,142,2.899,144,1.933,154,1.679,177,2.269,179,1.714,192,4.974,195,3.687,196,1.87,206,1.896,212,6.865,228,2.565,284,3.801,306,3.715,339,6.392,346,2.146,406,4.753,412,1.64,473,3.479,481,2.11,482,4.755,486,2.6,490,1.933,516,2.517,524,6.039,565,2.134,630,2.224,652,2.441,704,3.715,708,4.855,735,6.546,775,3.354,796,4.512,800,4.963,809,3.152,842,8.273,886,2.922,1050,3.067,1068,6.793,1109,3.813,1110,3.55,1118,4.855,1121,6.471,1134,3.715,1160,4.055,1179,4.117,1295,5.145,1307,2.6,1337,2.612,1350,7.032,1395,3.715,1396,3.198,1401,2.922,1403,2.373,1433,3.414,1438,2.6,1492,2.991,1504,2.828,1577,4.67,1578,7.154,1579,4.67,1580,4.055,1581,4.67,1582,4.67,1583,3.028,1584,3.354,1585,4.67,1586,4.408,1587,4.67,1588,4.67,1589,4.67,1590,4.67,1591,4.67,1592,4.67]],["keywords/660",[]],["title/661",[542,644.229,735,577.275,1121,570.648,1401,570.648,1445,448.158]],["content/661",[0,1.109,1,6.816,22,3.56,26,4.631,49,4.596,60,5.59,68,4.667,71,7.78,142,3.117,154,3.139,162,4.943,177,3.749,212,3.594,228,2.822,267,3.9,284,4.181,339,4.659,406,4.011,516,7.065,535,6.268,565,7.999,566,3.778,755,12.373,761,12.373,787,8.237,796,4.852,842,5.285,955,5.89,1027,5.732,1031,5.976,1062,6.081,1068,5.732,1179,10.228,1196,6.781,1218,10.388,1250,5.809,1281,13.309,1337,4.317,1350,7.561,1401,5.46,1433,6.381,1489,5.732,1504,5.285,1538,6.943,1578,7.87,1593,8.727,1594,8.727,1595,11.823,1596,13.11,1597,12.373,1598,8.727,1599,17.506,1600,8.727,1601,8.727,1602,8.727,1603,8.727,1604,8.237,1605,8.727,1606,7.334,1607,8.727,1608,8.727]],["keywords/661",[]],["title/662",[535,977.584,566,589.167]],["content/662",[0,0.966,1,5.741,11,1.661,22,1.812,24,1.183,26,8.647,27,2.998,31,4.434,39,1.624,42,1.739,47,2.812,50,2.128,52,3.377,55,4.384,59,1.386,60,2.845,64,1.918,74,3.946,81,3.308,91,5.953,119,4.07,137,1.974,142,2.369,145,1.396,148,1.96,153,2.09,157,1.884,177,6.291,192,1.812,193,2.305,195,2.934,203,2.322,206,4.046,214,1.63,223,4.403,228,4.997,235,1.716,265,4.269,339,1.578,340,2.69,363,2.394,406,2.042,412,4.657,423,2.663,432,4.554,468,2.03,478,3.042,486,2.473,490,1.838,505,4.006,524,1.964,565,2.03,583,2.539,601,2.61,622,7.749,630,2.115,637,3.377,652,2.322,677,4.197,792,3.31,793,4.232,796,2.813,808,3.31,827,3.627,830,2.61,842,2.69,850,4.93,859,5.37,864,8.202,955,5.131,984,2.918,1005,3.857,1056,2.289,1062,2.936,1091,3.191,1099,2.748,1111,4.993,1118,2.719,1121,2.779,1123,3.377,1142,3.191,1179,5.172,1186,8.828,1217,5.76,1222,3.534,1246,4.834,1249,3.451,1250,2.957,1298,3.733,1299,3.451,1303,2.539,1324,4.006,1337,4.367,1361,2.432,1438,5.548,1470,5.779,1514,3.534,1523,4.006,1527,2.562,1539,3.377,1555,8.986,1557,3.534,1606,3.733,1609,6.856,1610,3.627,1611,4.442,1612,4.442,1613,4.442,1614,4.442,1615,4.442,1616,4.442,1617,4.811,1618,4.193,1619,4.006,1620,4.006,1621,4.006,1622,4.442,1623,11.799,1624,7.602,1625,4.193,1626,4.442,1627,4.442,1628,3.627,1629,4.442,1630,7.602,1631,7.602,1632,4.442,1633,3.377]],["keywords/662",[]],["title/663",[735,648.59,1179,531.827,1403,520.657,1634,924.145]],["content/663",[0,2.055,9,5.925,64,2.943,74,3.47,91,5.885,92,4.316,140,7.381,175,6.11,192,6.594,206,4.735,284,9.598,406,5.359,412,4.095,468,5.329,482,6.99,524,5.156,735,11.743,800,7.296,1050,7.66,1071,7.137,1082,9.278,1121,7.296,1185,6.92,1217,5.693,1246,5.657,1350,6.725,1401,10.114,1403,11.061,1409,8.866,1432,9.278,1484,7.562,1547,10.517,1634,10.517,1635,11.819,1636,11.662,1637,11.662,1638,11.662,1639,8.237]],["keywords/663",[]],["title/664",[953,1034.731,1250,905.936]],["content/664",[0,1.519,11,1.992,22,4.874,59,6.624,64,3.015,87,6.829,119,4.949,153,5.621,194,5.429,195,2.643,205,5.172,412,4.196,486,6.652,542,8.44,565,5.46,577,7.393,738,8.903,750,9.284,792,8.903,796,4.422,848,8.064,953,14.288,1007,9.756,1030,9.506,1070,7.953,1178,7.749,1179,6.201,1234,9.506,1250,12.509,1290,10.776,1317,10.042,1556,8.903,1557,9.506,1640,11.277,1641,11.949,1642,9.084,1643,11.949,1644,11.949,1645,10.042,1646,11.949]],["keywords/664",[]],["title/665",[11,170.825,496,641.144,616,1059.736]],["content/665",[0,2.801,459,11.519,631,12.132]],["keywords/665",[]],["title/666",[0,148.613,74,347.86,1445,574.493]],["content/666",[]],["keywords/666",[]],["title/667",[756,871.762,1272,961.334]],["content/667",[0,2.244,2,4.333,10,5.862,11,4.171,24,0.831,42,2.089,49,2.811,51,2.589,59,2.77,60,3.419,64,2.24,74,3.39,81,2.323,91,4.479,119,2.338,137,2.372,140,3.378,192,5.416,195,1.181,205,2.31,212,2.198,228,3.684,277,8.004,346,4.079,412,4.662,458,2.811,468,2.439,524,3.924,529,1.882,556,3.602,576,4.358,581,6.511,616,3.834,637,4.058,642,3.302,704,4.246,756,3.419,800,3.339,814,3.023,830,3.137,1062,2.061,1070,7.584,1105,4.246,1107,3.506,1118,3.267,1122,3.655,1179,4.606,1238,4.485,1285,6.269,1293,4.833,1328,4.058,1337,1.758,1340,3.834,1385,5.99,1394,9.558,1402,7.459,1409,4.058,1432,4.246,1434,4.246,1438,4.942,1504,5.375,1505,4.058,1514,4.246,1561,4.246,1806,5.338,1807,5.338,1808,5.338,1809,5.338,1810,5.338,1811,8.876,1812,5.338,1813,5.338,1814,5.338,1815,5.338,1817,5.338,1818,5.338,1819,5.338,1821,5.338,1822,5.338,1823,5.338]],["keywords/667",[]],["title/668",[0,148.613,74,347.86,144,483.846]],["content/668",[0,1.981,11,4.113,24,1.091,47,4.434,59,2.187,74,4.637,81,5.97,85,3.69,111,5.703,119,2.915,143,9.949,144,7.023,145,2.202,149,2.718,175,2.648,192,2.858,200,3.746,206,2.845,223,4.13,267,3.131,268,3.718,339,3.933,351,4.488,363,3.776,412,2.46,458,3.69,481,3.166,529,3.902,566,4.791,631,4.488,652,3.663,717,5.326,720,3.61,734,4.434,803,4.335,835,5.22,872,4.335,874,6.215,900,4.797,914,6.318,921,5.122,1021,5.122,1042,4.434,1062,2.706,1071,6.774,1099,4.335,1107,4.602,1159,4.602,1185,4.158,1279,5.888,1283,6.318,1293,2.972,1386,5.888,1389,5.403,1402,5.888,1435,7.694,1467,6.318,1468,8.414,1571,5.888,1609,6.318,1760,4.117,1824,7.006,1825,5.326,1826,6.318,1827,6.318,1828,9.301]],["keywords/668",[]],["title/669",[657,1150.024]],["content/669",[0,0.905,10,4.131,11,4.284,24,0.641,64,1.039,68,2.201,74,2.799,81,4.877,130,1.86,143,4.954,144,1.703,502,1.948,529,1.451,630,1.96,657,2.907,706,2.956,745,3.476,833,3.36,915,3.067,999,2.374,1004,2.396,1042,2.605,1171,3.274,1217,3.476,1225,3.722,1277,2.492,1293,1.746,1389,2.009,1435,4.949,1442,4.032,1740,2.669,1752,2.861,1760,2.419,1792,4.311,1827,3.712,1829,7.119,1830,7.119,1831,4.116,1832,3.574,1833,4.116,1834,3.885,1835,4.116,1836,4.116,3262,4.467,3263,4.467]],["keywords/669",[]],["title/670",[0,148.613,74,347.86,1071,715.558]],["content/670",[0,0.96,10,2.783,11,4.279,24,1.175,59,2.357,74,3.492,142,1.795,195,1.67,339,4.171,351,4.836,746,5.096,1307,4.204,1394,4.897,1417,6.346,1504,4.573,1527,4.355,1553,15.982]],["keywords/670",[]],["title/671",[195,301.048,529,479.824]],["content/671",[1258,8.929]],["keywords/671",[]],["title/672",[59,364.91,529,412.194,1307,650.927]],["content/672",[1258,8.929]],["keywords/672",[]],["title/673",[142,323.625,529,479.824]],["content/673",[1258,8.929]],["keywords/673",[]],["title/674",[339,483.63,1504,824.216]],["content/674",[1258,8.929]],["keywords/674",[]],["title/675",[74,347.86,339,415.463,529,412.194]],["content/675",[1258,8.929]],["keywords/675",[]],["title/676",[10,430.893,529,412.194,1394,758.192]],["content/676",[1258,8.929]],["keywords/676",[]],["title/677",[351,871.762,529,479.824]],["content/677",[1258,8.929]],["keywords/677",[]],["title/678",[529,412.194,746,789.1,1417,982.569]],["content/678",[1258,8.929]],["keywords/678",[]],["title/679",[529,479.824,1527,784.912]],["content/679",[1258,8.929]],["keywords/679",[]],["title/680",[0,115.932,616,655.118,1505,693.415,1561,725.616,1837,912.103]],["content/680",[0,2.059,74,4.82,192,6.609,496,10.137,529,7.073,571,12.589,616,11.637,631,10.378,1062,6.258,1071,9.916,1179,10.412,1185,9.615,1258,7.241,1433,11.846,1505,12.318,1838,14.611]],["keywords/680",[]],["title/681",[1400,931.952,1445,668.753]],["content/681",[]],["keywords/681",[]],["title/682",[1066,854.828,1070,778.245,1185,693.83]],["content/682",[148,3.915,192,6.196,412,5.334,468,6.941,481,6.863,566,6.575,817,7.999,1014,9.976,1066,15.47,1070,10.11,1217,7.415,1258,6.788,1270,7.882,1337,5.001,1421,13.697,1422,13.697,1438,8.456,1504,9.198,1839,14.335,1840,15.189,1841,15.189,1842,12.401]],["keywords/682",[]],["title/683",[223,436.319,652,611.228,3264,1269.01]],["content/683",[]],["keywords/683",[]],["title/684",[1843,1628.212]],["content/684",[0,2.188,67,6.946,74,3.805,192,5.217,194,5.811,195,4.605,206,6.99,221,9.382,222,5.37,223,4.772,297,6.685,478,8.757,502,6.052,524,5.654,529,4.508,630,9.914,642,7.912,652,6.685,803,7.912,822,9.206,1071,7.826,1074,10.117,1082,10.174,1117,8.89,1187,9.528,1210,9.722,1211,8.094,1262,10.747,1478,10.747,1844,8.757]],["keywords/684",[]],["title/685",[657,1150.024]],["content/685",[0,1.425,22,4.574,24,1.746,31,5.65,38,5.372,67,6.091,92,5.821,137,6.991,154,4.032,192,4.574,198,7.27,213,5.905,214,4.115,215,5.737,216,6.408,219,5.51,220,6.191,221,5.405,222,8.271,223,7.35,224,5.372,225,8.411,227,4.369,228,3.626,229,6.527,230,5.819,231,5.862,245,6.79,246,6.937,247,6.79,486,6.243,524,4.957,542,7.92,556,7.568,581,6.408,657,7.92,1098,5.405,1217,5.474,1740,7.271,1845,11.213,1846,10.112,1847,11.213,1848,10.112,1849,14.185]],["keywords/685",[]],["title/686",[223,507.909,1098,656.116]],["content/686",[22,6.382,31,3.192,49,5.86,67,6.044,119,2.93,154,4.002,157,4.72,194,5.056,203,5.817,213,8.239,219,5.467,221,8.722,222,4.673,223,4.152,228,5.059,486,10.073,524,6.916,631,7.127,649,12.155,816,8.852,822,8.365,1056,8.061,1074,9.194,1098,5.364,1121,6.962,1222,8.852,1292,9.351,1322,10.248,1392,12.211,1405,5.693,1471,6.359,1657,9.351,1760,6.539,1780,6.884,1846,10.035,1850,10.043,1851,11.128,1852,10.035,1853,10.035,1854,11.128]],["keywords/686",[]],["title/687",[223,507.909,1740,882.593]],["content/687",[0,1.916,1,4.572,9,5.367,22,4.309,38,7.224,49,5.563,64,2.665,74,3.143,92,3.909,119,2.782,144,4.371,154,5.422,171,4.526,194,6.851,412,3.709,474,4.882,476,9.969,524,6.666,529,3.724,592,5.88,631,6.765,649,13.662,1056,7.769,1158,7.87,1217,8.584,1225,7.882,1265,11.024,1322,8.54,1361,8.256,1376,6.685,1471,6.036,1628,8.624,1740,11.402,1760,6.207,1850,10.375,1855,10.563,1856,10.563,1857,5.563,1858,8.877,1859,10.563,1860,10.563,1861,8.877,1862,10.563,1863,10.563,1967,9.525,3258,9.969]],["keywords/687",[]],["title/688",[223,507.909,486,757.728]],["content/688",[24,1.576,31,5.395,49,5.331,50,4.849,64,2.554,92,6.959,119,2.666,137,6.5,142,2.407,154,3.64,195,4.16,203,5.292,213,5.331,219,4.974,222,6.141,224,4.849,225,7.819,227,3.944,228,4.729,432,4.625,477,8.789,486,11.572,524,4.475,567,8.506,631,6.483,649,14.611,745,4.942,850,6.564,1056,7.535,1098,4.88,1270,5.253,1322,8.283,1337,3.333,1471,5.785,1485,6.007,1657,8.506,1760,5.948,1780,6.262,1848,9.128,1849,13.188,1850,9.621,1853,9.128,1864,7.401,1865,10.122,1866,10.122]],["keywords/688",[]],["title/689",[1445,800.015]],["content/689",[0,2.408,51,9.188,481,8.559,1760,11.131,1867,18.941]],["keywords/689",[]],["title/690",[10,336.137,74,271.363,803,564.298,1135,708.667,1875,655.118]],["content/690",[]],["keywords/690",[]],["title/691",[49,615.771,94,668.175,657,825.835]],["content/691",[]],["keywords/691",[]],["title/692",[1868,1237.828]],["content/692",[0,2.593,40,4.195,59,2.993,68,5.127,74,6.069,81,7.977,91,4.839,130,7.521,193,4.976,221,4.623,339,5.915,412,3.367,459,5.013,479,5.993,502,7.878,542,6.773,822,5.127,839,6.472,880,5.251,999,5.53,1004,5.582,1062,5.43,1074,5.635,1092,9.346,1135,14.243,1151,12.679,1182,10.924,1270,4.976,1277,5.807,1293,8.278,1403,4.872,1412,8.058,1635,7.011,1642,10.688,1663,7.29,1689,8.058,1756,10.279,1875,11.956,1895,8.648,1896,9.589,1897,6.773,1898,9.589,1899,9.589,1900,9.589]],["keywords/692",[]],["title/693",[205,704.809]],["content/693",[]],["keywords/693",[]],["title/694",[10,430.893,1527,674.28,1879,854.828]],["content/694",[0,1.989,10,5.766,68,5.95,74,4.655,85,5.86,103,9.085,119,2.93,130,5.028,145,3.497,203,5.817,524,4.919,642,9.679,717,8.46,778,8.646,808,8.29,880,8.567,887,9.662,999,6.417,1031,7.619,1062,8.284,1092,8.784,1098,5.364,1179,5.775,1227,10.035,1270,5.775,1275,9.351,1328,8.46,1438,8.71,1527,11.32,1533,10.145,1562,7.619,1861,9.351,1879,11.438,1901,10.035,1902,11.128,1903,9.662,1904,9.662,1905,11.128,1906,11.128,1907,11.128,1908,11.128,1909,11.128]],["keywords/694",[]],["title/695",[1293,577.275,1891,1143.784]],["content/695",[113,8.446,115,8.754,120,9.243,148,3.48,214,4.954,482,12.753,502,6.389,637,10.263,796,4.996,880,12.116,905,6.859,999,7.785,1027,11.724,1145,11.881,1293,9.025,1438,9.937,1527,10.294,1546,8.867,1566,9.535,1879,9.87,1891,11.344,1897,9.535]],["keywords/695",[]],["title/696",[10,501.592,1759,961.334]],["content/696",[0,1.584,10,7.938,60,7.981,68,6.663,74,5.033,130,5.63,148,3.212,194,5.662,214,4.573,487,10.173,510,7.394,529,4.393,572,9.681,644,8.294,706,8.95,775,8.95,880,11.28,991,11.237,996,13.144,1293,7.175,1330,9.913,1405,8.655,1566,8.801,1759,14.551,1897,8.801,1910,12.46,1911,12.46,1912,12.46,1913,12.46,1914,11.237,1915,12.46]],["keywords/696",[]],["title/697",[1291,1368.285]],["content/697",[10,6.107,192,6.76,891,11.184,999,9.556,1092,9.304,1098,7.988,1104,10.884,1285,11.704,1293,7.028,1445,8.142,1533,10.746,1566,11.704,1916,16.571,1917,13.529,1918,14.944,1919,14.944]],["keywords/697",[]],["title/698",[1216,1468.317]],["content/698",[0,1.748,10,5.069,40,6.016,74,6.004,130,6.215,205,5.954,481,8.165,502,6.51,667,12.981,796,5.09,1092,10.147,1293,5.834,1330,10.942,1403,9.181,1533,11.718,1562,9.418,1566,9.715,1875,9.879,1886,11.943,1920,18.071,1921,13.754,1922,12.404,1923,11.943,1924,12.404,1925,12.404,1926,13.754,1927,13.754]],["keywords/698",[]],["title/699",[803,842.06,1403,691.511]],["content/699",[]],["keywords/699",[]],["title/700",[803,842.06,1928,1361.063]],["content/700",[0,2.651,10,7.686,74,5.62,94,8.417,130,8.536,479,6.278,502,6.97,644,9.803,796,5.45,803,9.112,1004,8.573,1101,12.025,1262,12.377,1268,12.1,1293,6.247,1403,7.483,1442,10.7,1566,10.403,1929,14.728]],["keywords/700",[]],["title/701",[1930,1628.212]],["content/701",[0,1.993,10,5.778,74,5.848,112,6.895,120,10.736,643,10.736,788,7.654,880,10.763,999,9.042,1092,8.804,1442,8.881,1533,10.167,1564,8.729,1858,13.176,1931,13.176,1932,13.176,1933,15.679,1934,15.679,1935,15.679]],["keywords/701",[]],["title/702",[1936,1468.317]],["content/702",[0,2.066,10,7.409,50,5.632,64,2.967,68,6.286,74,4.836,119,3.096,145,3.695,529,6.569,579,8.759,643,8.05,720,6.057,747,7.722,778,9.134,809,7.934,999,6.78,1004,6.843,1092,9.128,1098,5.667,1293,8.526,1405,8.317,1442,9.207,1527,9.375,1533,10.541,1564,6.545,1705,8.173,1931,9.879,1932,9.879,1936,10.602,1937,10.602,1938,11.756,1939,9.353,1940,10.602,1941,9.879,1942,11.756,1943,11.756,1944,11.756]],["keywords/702",[]],["title/703",[1945,1468.317]],["content/703",[0,2.773,10,6.254,13,5.003,64,2.502,74,5.541,113,6.204,119,2.611,120,6.789,482,8.635,510,5.884,529,5.982,572,7.704,579,7.388,643,6.789,724,6.6,747,9.463,780,8.609,809,6.692,880,10.833,962,6.789,1004,5.772,1092,5.568,1098,4.78,1405,5.073,1442,8.16,1527,9.786,1533,9.342,1546,6.513,1564,5.52,1705,6.893,1792,11.279,1879,7.249,1897,13.155,1931,8.333,1932,8.333,1937,8.942,1939,11.461,1940,8.942,1941,14.26,1945,8.942,1946,8.333,1947,9.916]],["keywords/703",[]],["title/704",[1948,1628.212]],["content/704",[0,2.904,13,5.98,31,4.69,74,6.002,113,11.708,120,12.813,130,7.386,203,6.196,482,7.104,516,8.809,1270,6.151,1438,6.598,1527,9.427,1861,9.96,1897,14.248,1949,11.852,1950,11.852,1951,11.852,1952,11.852,1953,11.852,1954,11.852,1955,11.852,1956,11.852,1957,11.852,1958,16.347,1959,11.852,1960,11.852,1961,14.742]],["keywords/704",[]],["title/705",[1251,812.808,1962,1103.495,1963,1103.495]],["content/705",[1,6.44,10,5.483,48,6.999,142,3.538,190,8.66,288,9.105,297,7.778,549,8.503,644,9.903,718,10.188,745,7.264,990,9.648,1178,9.648,1251,13.218,1293,6.31,1527,10.966,1689,15.979,1964,14.878,1965,14.878,1966,14.878,1967,13.417,1968,13.417,1969,14.878]],["keywords/705",[]],["title/706",[10,501.592,1277,824.216]],["content/706",[0,2.781,10,7.498,48,5.328,64,3.528,74,6.194,92,5.174,193,3.744,227,2.811,415,5.485,477,6.264,482,4.324,496,4.514,506,6.264,516,6.104,542,5.096,586,5.275,640,5.89,641,4.94,724,4.802,731,14.95,738,5.375,750,5.605,757,5.89,764,6.063,796,2.67,880,11.14,935,6.506,990,4.678,996,10.864,1007,5.89,1050,7.439,1062,4.374,1135,5.605,1234,5.739,1252,5.605,1260,6.506,1277,10.423,1293,6.718,1405,5.795,1442,7.92,1527,4.161,1539,5.485,1679,6.506,1734,6.264,1748,5.275,1838,6.506,1897,12.157,1922,10.214,1924,10.214,1941,6.063,1946,6.063,1961,15.522,1970,11.326,1971,6.264,1972,7.215,1973,11.326,1974,7.215,1975,7.215]],["keywords/706",[]],["title/707",[1092,575.406,1098,494.008,1533,664.528,1939,815.256]],["content/707",[0,2.553,2,6.652,10,6.619,74,5.977,119,4.73,297,10.502,556,9.196,584,5.333,586,9.962,642,8.43,871,9.624,1010,12.86,1037,11.451,1086,8.836,1092,10.084,1132,10.359,1187,10.152,1533,11.646,1713,8.727,1918,12.288,1939,14.288,1976,13.626,1977,13.626,1978,12.288]],["keywords/707",[]],["title/708",[85,615.771,130,528.316,865,930.165]],["content/708",[10,7.147,59,4.79,74,6.326,85,8.083,96,12.531,107,6.51,145,4.824,179,5.633,193,7.965,412,6.81,729,11.435,796,5.68,865,12.211,943,12.898,1199,11.435,1297,12.211,1371,12.531,1713,9.831,1979,13.841]],["keywords/708",[]],["title/709",[85,539.701,112,450.637,193,531.827,1759,723.814]],["content/709",[11,3.001,59,5.619,112,7.917,1268,11.532,1759,12.717,1980,18.005,1981,18.005,1982,18.005,1983,18.005]],["keywords/709",[]],["title/710",[85,539.701,193,531.827,1759,723.814,1914,924.145]],["content/710",[0,2.261,10,6.554,74,5.291,85,9.366,288,10.884,1014,11.681,1293,7.543,1759,12.562,1979,16.038,1984,17.785]],["keywords/710",[]],["title/711",[0,172.997,1246,660.251]],["content/711",[]],["keywords/711",[]],["title/712",[1868,1237.828]],["content/712",[0,2.3,2,5.432,64,2.808,68,5.95,92,4.118,142,2.646,194,7.109,205,4.817,339,3.954,502,5.266,507,8.29,559,5.775,584,4.355,636,7.51,683,9.662,713,9.085,950,7.51,1062,4.298,1086,7.216,1122,7.619,1145,7.407,1152,9.662,1210,8.46,1215,14.108,1218,12.729,1288,10.035,1293,4.72,1392,7.51,1394,11.733,1403,7.949,1465,10.035,1667,8.852,1742,10.035,1756,8.135,1869,10.035,1870,9.662,1871,11.128,1872,11.128,1873,10.035,1874,11.128,1875,7.992,1876,11.128,1877,11.128,1878,11.128,1879,8.135,1880,11.128,3265,12.077]],["keywords/712",[]],["title/713",[205,704.809]],["content/713",[]],["keywords/713",[]],["title/714",[1218,693.83,1293,495.909,1869,1054.402]],["content/714",[0,2.257,2,3.764,40,3.373,57,5.745,64,3.01,68,6.379,74,5.283,81,7.145,91,6.019,92,2.854,93,5.36,119,4.324,130,3.484,142,1.833,148,3.075,227,4.648,346,3.544,412,2.708,432,3.524,468,3.524,479,6.219,486,4.293,502,6.905,524,5.274,565,3.524,620,4.531,741,5.638,745,3.764,750,5.991,759,7.278,839,5.204,842,4.67,844,8.051,872,4.771,880,4.222,950,5.204,995,8.722,999,6.879,1022,11.415,1062,2.978,1064,9.711,1070,5.133,1087,5.204,1092,9.971,1098,3.717,1104,7.835,1116,6.695,1174,5,1182,5.991,1206,6.954,1218,4.576,1268,7.641,1291,6.48,1293,5.06,1299,5.991,1303,4.407,1403,6.061,1405,6.103,1635,5.638,1642,9.069,1667,6.134,1713,4.939,1756,8.722,1881,6.954,1882,7.711,1883,9.49,1884,7.711,1885,6.954,1886,6.695,1887,7.711,1888,7.711,1889,7.278,1890,6.695]],["keywords/714",[]],["title/715",[1293,577.275,1891,1143.784]],["content/715",[0,2.677,10,7.76,64,3.793,91,7.585,341,8.92,412,5.279,529,5.299,778,11.679,796,5.563,848,12.917,1200,10.797,1268,9.628,1293,9.71,1405,7.691,1551,13.556,1879,10.99]],["keywords/715",[]],["title/716",[803,1007.339]],["content/716",[]],["keywords/716",[]],["title/717",[1246,789.845]],["content/717",[0,2.465,11,3.84,64,3.873,74,4.566,119,4.042,458,8.083,741,11.222,1022,10.67,1117,13.482,1217,7.493,1225,8.024,1246,7.446,1337,5.054,1442,8.694,1448,12.898,1892,13.841,1893,15.349]],["keywords/717",[]],["title/718",[1246,660.251,1337,448.166]],["content/718",[0,2.474,10,7.673,64,4.344,74,5.122,91,6.453,92,4.732,119,3.368,142,3.041,194,5.811,412,6.046,502,6.052,529,4.508,586,9.35,632,9.722,734,8.094,796,4.732,848,8.631,999,7.375,1022,8.89,1031,8.757,1092,7.181,1104,8.4,1248,10.747,1293,5.424,1337,5.669,1403,8.747,1538,10.174,1541,11.533,1713,8.191,1752,8.89,1756,9.35,1873,11.533]],["keywords/718",[]],["title/719",[9,691.511,1246,660.251]],["content/719",[0,2.505,68,10.539]],["keywords/719",[]],["title/720",[1225,711.515,1246,660.251]],["content/720",[1258,8.929]],["keywords/720",[]],["title/721",[1246,660.251,1892,1227.403]],["content/721",[1258,8.929]],["keywords/721",[]],["title/722",[1246,660.251,1894,1361.063]],["content/722",[1258,8.929]],["keywords/722",[]],["title/723",[1246,660.251,1448,1143.784]],["content/723",[1258,8.929]],["keywords/723",[]],["title/724",[0,172.997,406,625.496]],["content/724",[]],["keywords/724",[]],["title/725",[9,827.241]],["content/725",[9,8.516,11,3.688,22,6.837,46,12.674,151,5.98,2008,14.554,2009,16.762,3266,18.192,3267,18.192,3268,18.192,3269,18.192,3270,18.192]],["keywords/725",[]],["title/726",[1361,891.545]],["content/726",[11,3.987,22,6.684,151,5.845,1361,8.972,2008,14.226,2012,16.385,2013,16.385,2014,16.385,2015,16.385,2016,16.385,2017,16.385,2018,16.385]],["keywords/726",[]],["title/727",[900,1114.875]],["content/727",[1258,8.929]],["keywords/727",[]],["title/728",[2002,1213.081]],["content/728",[1258,8.929]],["keywords/728",[]],["title/729",[1337,536.132]],["content/729",[1258,8.929]],["keywords/729",[]],["title/730",[0,172.997,584,532.699]],["content/730",[]],["keywords/730",[]],["title/731",[3,1131.882]],["content/731",[11,3.592,779,10.236,1337,6.003,1985,14.164,1986,16.44,1987,15.32,1988,15.829]],["keywords/731",[]],["title/732",[13,686.774,1989,1143.784]],["content/732",[]],["keywords/732",[]],["title/733",[0,115.932,228,294.93,584,356.983,1337,300.334,1396,624.539]],["content/733",[0,2.368,24,2.901,39,4.297,71,6.976,74,3.498,85,6.191,111,6.057,228,7.057,265,6.601,432,7.428,433,6.386,502,5.564,559,6.101,578,9.05,584,6.362,677,6.49,771,9.134,796,6.016,830,6.909,1068,7.722,1086,7.623,1125,5.853,1217,5.739,1337,6.135,1482,9.353,1504,7.119,1844,8.05,1904,10.208,1990,11.756,1991,11.756,1992,11.756,1993,8.05,1994,8.595,1995,13.661,1996,10.602,1997,10.602]],["keywords/733",[]],["title/734",[11,136.981,177,234.982,297,429.581,356,436.043,584,321.62,2001,571.255]],["content/734",[22,7.92,24,3.268,39,3.459,48,4.452,145,6.381,177,2.706,297,10.614,356,5.022,559,4.912,562,7.052,592,10.808,1125,10.108,1844,14.373,1993,14.373,1994,14.844,1998,9.465,1999,8.218,2000,9.465,2001,13.496,2277,8.535,2281,9.465,2403,7.529,2415,17.193,3271,10.272,3272,10.272,3273,9.465,3274,10.272,3275,10.272,3276,10.272]],["keywords/734",[]],["title/735",[11,114.33,177,196.126,297,358.545,356,363.939,584,268.437,1136,576.373,2001,476.792,2002,510.995]],["content/735",[11,3.318,22,7.237,24,2.082,48,6.292,148,3.448,406,6.147,511,7.86,717,10.169,1125,6.659,1136,17.816,1275,11.24,1471,7.644,1484,8.673,1535,11.24,1748,9.779,1844,9.159,1993,12.148,1994,9.779,2002,16.893,2003,13.376,2004,13.376,2005,13.376,2006,19.906]],["keywords/735",[]],["title/736",[479,580.19,497,871.762]],["content/736",[]],["keywords/736",[]],["title/737",[2030,1468.317]],["content/737",[0,2.317,501,11.676,817,9.601,1014,11.974,1105,14.503,1564,10.149,1804,15.829,2030,16.44]],["keywords/737",[]],["title/738",[74,404.935,479,580.19]],["content/738",[]],["keywords/738",[]],["title/739",[3,1131.882]],["content/739",[11,3.592,779,10.236,1337,6.003,1985,14.164,1986,16.44,1987,15.32,1988,15.829]],["keywords/739",[]],["title/740",[474,473.67,850,664.528,905,520.657,908,861.186]],["content/740",[0,1.57,1,5.348,11,3.58,22,6.861,25,4.992,48,5.812,129,7.125,200,6.606,235,4.772,474,5.71,511,7.26,565,5.645,743,10.087,788,6.031,902,12.786,905,6.277,906,11.141,907,11.141,908,18.62,1087,11.351,1100,8.726,1168,8.588,1303,7.06,1514,13.38,1564,6.878,1925,11.141,2031,12.355,2032,12.355,2033,12.355,2034,12.355,2035,12.355,2036,12.355,2037,10.727]],["keywords/740",[]],["title/741",[43,697.602]],["content/741",[43,9.902,119,4.085,148,3.998,706,11.142,747,10.189,788,7.573,1140,9.818,1405,7.936,1705,13.573,2038,15.17,2039,15.512,2040,15.512,2041,14.64,2042,15.512,2043,15.512,2044,15.512]],["keywords/741",[]],["title/742",[356,722.218,584,532.699]],["content/742",[0,2.092,1,4.071,5,9.864,9,4.778,10,3.465,11,2.743,12,13.106,24,2.562,25,3.8,30,7.306,55,7.992,64,2.373,74,5.403,105,6.875,119,2.476,157,5.878,191,5.326,193,4.88,228,5.322,235,6.356,266,7.006,433,5.108,474,6.406,479,4.009,565,4.297,578,5.235,583,5.374,584,7.108,1100,6.642,1125,6.899,1199,7.006,1246,4.562,1337,6.898,1635,10.132,1687,7.481,1745,7.306,1883,7.481,1993,6.439,1994,6.875,1995,7.902,1996,8.48,2045,8.875,2046,11.025,2047,7.902,2048,7.481,3277,10.206,3278,10.206]],["keywords/742",[]],["title/743",[130,614.999,479,580.19]],["content/743",[0,2.163,2,6.135,13,6.341,24,2.649,25,6.876,29,7.118,43,5.385,51,6.097,64,4.294,74,3.739,130,7.688,131,12.677,149,4.875,406,5.776,432,5.743,433,6.826,490,5.201,516,6.772,677,6.938,678,10.912,720,6.476,1236,10.912,1385,8.482,1546,8.255,2049,12.568,2051,12.568,2052,12.568,2053,17.016,2054,9.998,2055,17.016,2056,12.568,2057,12.568,2058,10.561,2059,8.877,2060,12.568,3279,13.64]],["keywords/743",[]],["title/744",[71,807.671,479,580.19]],["content/744",[0,2.567,1,2.168,2,4.108,5,10.714,9,4.275,10,4.7,11,2.567,12,11.878,13,4.246,14,3.289,15,4.348,22,2.043,23,4.516,24,2.783,25,4.398,29,2.836,30,8.456,42,1.96,43,5.464,48,2.356,54,8.357,55,2.888,64,2.123,68,9.558,105,6.152,107,4.616,113,5.265,115,5.457,116,5.943,118,4.348,119,3.745,120,7.452,122,4.208,123,6.269,124,4.516,125,4.726,126,3.807,128,4.088,130,2.263,132,4.516,134,4.516,135,4.348,136,6.694,137,2.226,141,4.088,145,1.574,148,1.291,157,3.569,228,2.721,235,1.934,266,3.731,267,4.864,406,3.867,412,4.479,432,2.288,433,2.72,474,3.889,479,4.639,496,5.265,497,3.207,566,2.168,578,2.788,583,2.861,584,4.992,655,8.108,676,6.694,740,5.762,817,2.637,988,3.537,1100,3.537,1189,4.945,1199,3.731,1218,2.971,1219,4.726,1241,3.289,1293,2.124,1337,5.071,1535,9.146,1635,6.152,1713,3.207,1825,3.807,1883,3.983,1995,4.208,1997,4.516,2045,4.726,2046,6.694,2047,4.208,2048,3.983,2061,5.007,2062,4.088,2300,4.208,2393,4.516,2436,6.87,2605,5.007,2629,5.007,3280,5.435,3281,5.435,3282,5.435,3283,5.435,3284,5.435,3285,5.435,3286,7.942,3287,5.435,3288,5.435]],["keywords/744",[]],["title/745",[0,148.613,479,498.413,707,812.808]],["content/745",[0,2.255,119,3.523,137,5.945,153,6.292,188,6.448,193,6.941,235,5.166,511,7.86,549,7.644,565,6.112,652,9.274,707,15.336,830,7.86,859,9.447,903,9.159,917,8.275,918,12.062,955,9.027,1020,9.298,1086,8.673,1438,7.446,1713,8.567,2063,17.741,2064,12.062,2065,13.376,2066,13.376,2067,13.376,2068,13.376,2069,13.376,2070,13.376]],["keywords/745",[]],["title/746",[235,451.574,788,570.807,917,723.372]],["content/746",[235,6.786,432,8.029,433,9.544,565,8.029,707,12.214,788,10.29,793,9.782,917,10.87,1857,9.253,2071,17.57]],["keywords/746",[]],["title/747",[25,657.965]],["content/747",[24,2.769,25,8.58,119,4.684,406,8.173,529,6.27,707,12.364,1125,8.854,1225,11.099]],["keywords/747",[]],["title/748",[584,637.257]],["content/748",[24,2.703,145,5.456,149,6.735,432,7.933,433,9.43,583,9.921,584,8.19,707,12.069,814,9.833,1059,13.811,1225,9.076]],["keywords/748",[]],["title/749",[1,589.167,479,580.19]],["content/749",[1,6.936,13,10.054,24,2.494,50,7.677,57,11.939,74,5.928,129,9.241,131,11.939,479,6.831,677,8.847,850,10.391,1104,10.525,1225,8.377,2037,13.913,2072,16.024,2073,16.024,2074,16.024]],["keywords/749",[]],["title/750",[43,439.064,64,258.596,1140,648.59,2058,861.186]],["content/750",[]],["keywords/750",[]],["title/751",[1868,1237.828]],["content/751",[0,2.059,1,7.014,43,9.758,64,4.089,130,7.321,340,9.812,651,10.642,712,14.668,817,8.533,1140,10.255,1559,11.263,1562,11.094,2059,11.444,2298,10.507]],["keywords/751",[]],["title/752",[1,443.6,43,439.064,64,258.596,2059,723.814]],["content/752",[0,2.341,1,4.98,2,3.593,11,3.84,13,3.714,24,2.493,25,2.974,29,4.169,42,2.881,43,6.069,46,4.554,48,3.463,50,3.526,54,4.325,64,5.166,77,4.899,85,3.876,111,3.792,113,10.019,115,4.773,116,8.126,123,5.484,126,5.596,127,5.855,128,6.009,130,6.4,136,9.153,137,3.272,148,1.897,268,6.105,423,6.896,432,3.363,433,3.998,490,3.046,565,5.257,627,5.381,712,10.355,729,13.724,793,4.098,796,2.724,959,6.967,990,4.773,995,5.381,1484,4.773,1485,4.368,1562,5.04,1826,6.638,1844,5.04,1993,7.878,2048,5.855,2059,5.199,2148,5.287,2298,4.773,2367,11.505,2368,7.36,2369,7.36,2370,7.36,2371,7.36,2372,7.36,2373,7.36,2374,7.36,2375,7.36,2376,7.36,2377,11.505,2378,7.36,2379,7.36,2380,7.36,2381,6.391,2382,7.36]],["keywords/752",[]],["title/753",[43,390.788,64,230.163,651,599.082,817,480.359,2059,644.229]],["content/753",[516,9.824,549,10.418,651,11.974,817,9.601,830,10.713,848,12.303,1405,9.327,1610,14.884]],["keywords/753",[]],["title/754",[43,352.076,235,317.373,712,600.787,788,401.173,2058,690.566,2059,580.411]],["content/754",[84,10.973,103,12.025,119,3.879,457,9.674,458,7.756,516,7.937,525,9.94,630,7.013,673,9.674,809,9.94,1200,10.578,1268,9.433,2359,17.094,2383,14.728,2384,18.891,2385,18.891,2386,14.728,2387,14.728,2388,14.728,2389,14.728,2390,14.728,2391,14.728]],["keywords/754",[]],["title/755",[43,439.064,64,258.596,1140,648.59,1217,500.291]],["content/755",[]],["keywords/755",[]],["title/756",[1868,1237.828]],["content/756",[0,2.656,1,5.585,10,4.755,12,8.072,43,9.339,64,4.37,77,8.587,113,8.072,116,9.113,143,6.795,144,5.339,145,4.055,228,4.172,280,7.813,340,7.813,459,6.745,583,7.373,584,5.05,651,8.474,712,9.433,817,6.795,839,8.707,1125,6.423,1140,8.166,1217,6.299,1337,4.248,1361,7.064,1559,8.969,1562,8.834,2148,9.267,2298,11.231,2410,10.842]],["keywords/756",[]],["title/757",[1,443.6,43,439.064,64,258.596,1217,500.291]],["content/757",[0,2.29,1,4.78,10,5.735,12,9.736,24,2.805,25,6.288,43,7.72,46,6.832,50,5.291,54,6.49,55,6.369,74,4.63,77,7.35,113,9.736,115,7.161,116,10.991,119,2.908,126,8.395,127,8.785,356,5.86,406,5.075,490,4.57,497,7.073,532,7.161,584,4.322,779,6.201,857,9.28,915,8.228,999,6.369,1125,5.498,1217,7.597,1303,6.311,1361,6.047,1442,6.255,1484,7.161,1562,7.562,1883,8.785,1993,10.655,1994,8.074,2162,10.422,2403,8.785,2411,11.043,2412,11.043,2413,11.043,2414,10.422,2415,10.422]],["keywords/757",[]],["title/758",[43,390.788,64,230.163,651,599.082,817,480.359,1217,445.283]],["content/758",[177,5.213,516,9.824,651,11.974,745,8.9,817,9.601,848,12.303,1405,9.327,1610,14.884]],["keywords/758",[]],["title/759",[459,711.515,756,871.762]],["content/759",[]],["keywords/759",[]],["title/760",[42,532.699,1868,1034.731]],["content/760",[0,2.181,43,7.351,200,9.174,457,11.269,459,8.969,479,7.313,631,10.989,1405,10.63,1442,11.769,1642,13.043,1765,14.418]],["keywords/760",[]],["title/761",[0,130.254,137,455.495,459,535.719,1765,861.186]],["content/761",[]],["keywords/761",[]],["title/762",[0,148.613,1792,708.043,2079,1103.495]],["content/762",[0,2.288,194,8.181,412,6.322,502,8.521,620,10.581,1117,12.516,1225,9.412,1293,7.636,1435,12.516]],["keywords/762",[]],["title/763",[0,130.254,1218,608.117,2084,967.173,2393,924.145]],["content/763",[0,2.317,51,8.843,68,9.748,267,8.147,566,7.891,817,9.601,1122,12.483,2062,14.884]],["keywords/763",[]],["title/764",[0,148.613,577,723.372,2135,1054.402]],["content/764",[119,4.742,458,9.482,592,10.024,642,11.139,735,11.395,1125,8.963,1268,11.532,1642,13.688,2199,15.633]],["keywords/764",[]],["title/765",[0,148.613,280,708.043,2142,1054.402]],["content/765",[263,12.774,559,9.959,565,8.769,1438,10.684]],["keywords/765",[]],["title/766",[0,148.613,1389,570.807,2150,1103.495]],["content/766",[0,2.408,214,6.952,412,6.651,502,8.964,1389,9.247]],["keywords/766",[]],["title/767",[0,148.613,1400,800.595,2394,1169.223]],["content/767",[140,11.684,171,7.91,199,11.971,502,8.737,1073,12.641,1242,12.641,1410,14.687]],["keywords/767",[]],["title/768",[0,148.613,74,347.86,2395,1169.223]],["content/768",[74,5.492,143,9.723,144,7.64,468,8.436,915,13.754,1248,15.514,1740,11.971]],["keywords/768",[]],["title/769",[0,148.613,43,500.95,2396,1169.223]],["content/769",[0,2.377,43,8.011,502,8.849,995,15.989,1217,9.128]],["keywords/769",[]],["title/770",[0,148.613,130,528.316,2403,930.165]],["content/770",[0,1.448,59,3.554,71,6.758,74,5.451,119,2.999,130,8.96,131,8.485,143,8.374,221,5.49,339,4.047,412,6.433,459,8.312,460,7.917,479,4.855,502,7.525,524,5.035,529,6.459,559,5.91,720,8.193,822,6.09,995,8.326,999,6.568,1074,6.693,1092,6.395,1117,12.736,1293,6.744,1385,14.078,1566,8.044,1881,10.27,2397,10.748,2398,11.389,2399,14.34,2400,11.389,2401,11.389,2402,11.389]],["keywords/770",[]],["title/771",[194,531.275,578,650.927,3273,1169.223]],["content/771",[0,2.807,2,7.679,25,8.689,43,4.804,119,4.142,142,4.32,192,4.574,195,2.48,205,4.854,228,3.626,479,6.705,502,7.444,524,4.957,623,7.568,1087,7.568,1091,8.054,1225,8.223,1251,7.795,1268,7.182,1293,4.756,1337,5.982,1403,5.697,1436,13.218,1457,9.736,1748,8.198,1752,10.935,1919,10.112,2277,14.185,2404,11.213,2405,11.213,2406,11.213,2407,11.213,2408,14.845,2409,11.213]],["keywords/771",[]],["title/772",[0,148.613,171,500.95,1617,740.008]],["content/772",[]],["keywords/772",[]],["title/773",[46,723.372,565,534.281,1140,740.008]],["content/773",[0,1.931,24,2.364,46,11.919,119,4,280,9.198,492,9.503,565,8.804,670,13.697,1140,9.613,1270,9.998,1617,9.613,2081,15.327,2085,12.654,2123,14.335,2484,13.697,2485,15.189,2486,15.189,2487,15.189,2488,15.189]],["keywords/773",[]],["title/774",[559,706.347,1832,1181.771]],["content/774",[0,2.668,26,6.926,34,7.823,85,6.874,137,3.856,171,7.478,260,8.687,280,10.569,359,7.904,445,7.291,497,8.36,559,10.205,590,11.332,592,8.735,1125,8.689,1304,10.968,2001,12.133,2100,7.533,2124,13.561,2161,8.188,2224,8.188,2491,13.052,2502,13.623,2503,13.052,2504,15.69,2505,13.052,2506,13.052,2507,13.052,2508,13.052,2509,15.69,2510,8.675,2511,8.188,2512,15.69,2513,8.675,2514,8.675,2515,8.675,2516,13.052,2517,8.675,2518,13.052,2519,8.675,2520,8.675,2521,8.675,2522,8.675,2523,8.675]],["keywords/774",[]],["title/775",[3289,1767.171]],["content/775",[]],["keywords/775",[]],["title/776",[64,207.363,145,258.266,228,265.714,1225,429.581,1337,270.583,3290,653.736]],["content/776",[]],["keywords/776",[]],["title/777",[64,207.363,145,258.266,228,265.714,1225,429.581,1337,270.583,3290,653.736]],["content/777",[11,4.044,17,7.359,24,1.222,25,5.961,26,4.164,27,3.112,29,5.803,42,4.01,64,3.422,111,4.044,119,2.067,137,3.488,148,2.641,157,3.329,188,2.223,192,1.881,193,4.073,194,3.566,214,1.692,228,3.313,265,2.589,363,2.485,406,4.708,432,6.196,531,4.611,565,2.107,569,6.407,578,2.567,584,3.072,592,8.213,594,3.112,601,2.71,620,2.71,622,3.029,720,5.279,788,2.251,796,2.904,830,4.612,895,4.352,1004,2.684,1098,4.939,1125,3.907,1186,3.069,1189,2.71,1225,2.41,1281,5.966,1287,3.312,1337,3.374,1339,4.333,1340,3.312,1455,3.583,1456,5.847,1476,3.157,1504,2.792,1564,2.567,1694,4.158,1844,3.157,1985,7.96,2118,6.243,2143,3.875,2148,3.312,2210,4.352,2283,6.595,2289,3.371,2442,11.395,2465,3.583,2467,4.158,2581,7.789,2585,4.004,3290,10.787,3291,7.848,3292,7.848,3293,7.848,3294,7.848,3295,8.518,3296,4.158,3297,4.352,3298,8.365,3299,5.005,3300,5.005,3301,5.005,3302,5.005,3303,5.005,3304,5.005,3305,5.005,3306,5.005,3307,5.005,3308,4.611,3309,4.352,3310,4.352,3311,7.077,3312,5.005,3313,4.611,3314,5.005,3315,5.005,3316,5.005,3317,8.518,3318,5.005,3319,5.005,3320,11.12,3321,11.12,3322,5.005,3323,5.005,3324,4.158,3325,4.611,3326,4.158,3327,9.239,3328,4.158,3329,4.158]],["keywords/777",[]],["title/778",[119,216.411,148,211.812,228,265.714,584,321.62,1337,270.583,3290,653.736]],["content/778",[148,4.176,194,7.362,228,5.239,339,5.757,490,6.705,502,7.668,584,6.341,779,11.265,1337,5.335,1339,8.945,3290,17.337,3330,17.585,3331,17.585,3332,12.318,3333,14.611]],["keywords/778",[]],["title/779",[228,378.07,584,457.616,1337,384.998]],["content/779",[25,4.751,64,2.967,119,4.281,228,7.057,339,4.177,340,7.119,468,7.428,490,4.865,584,8.259,592,6.545,720,8.376,729,8.759,746,7.934,779,9.128,1093,9.353,1098,5.667,1337,6.948,1339,10.287,3290,12.932,3332,12.358,3334,12.76,3335,12.76,3336,14.66,3337,13.272,3338,11.095,3339,11.095,3340,11.095,3341,12.76,3342,11.095]],["keywords/779",[]],["title/780",[0,148.613,2,570.807,5,700.808]],["content/780",[]],["keywords/780",[]],["title/781",[3,1131.882]],["content/781",[5,10.792,6,15.131,9,9.148,12,11.265,25,7.276,123,13.414,142,4.281,1361,9.859,2416,18.005]],["keywords/781",[]],["title/782",[0,148.613,2,570.807,9,594.043]],["content/782",[0,2.638,2,7.118,5,11.25,24,2.27,25,7.585,26,7.737,27,9.84,28,10.863,29,8.258,30,11.328,39,5.329,50,6.985,228,4.715,516,7.857,636,9.84,708,8.923,814,8.258,816,11.599,1293,6.184,1337,4.801,1672,10.136,1681,13.149,2417,14.581,2418,14.581]],["keywords/782",[]],["title/783",[25,550.009,46,842.06]],["content/783",[24,2.987,54,11.277,1258,8.576,2419,17.306]],["keywords/783",[]],["title/784",[0,172.997,141,1111.244]],["content/784",[0,2.207,5,13.465,11,2.894,24,2.703,48,8.167,105,12.693,141,14.174,2420,16.385,2421,17.361,2422,15.656]],["keywords/784",[]],["title/785",[154,489.461,1250,905.936]],["content/785",[0,0.87,5,10.703,9,3.476,10,2.521,11,1.811,24,2.612,25,5.458,39,3.97,54,4.021,55,3.946,74,5.313,94,3.91,111,3.525,120,10.531,145,4.245,148,2.8,154,4.857,194,3.109,203,3.577,263,4.554,406,3.144,468,3.126,474,8.976,565,3.126,577,4.233,578,3.809,601,4.021,620,4.021,642,4.233,704,5.443,734,4.33,1004,3.982,1050,4.494,1062,2.642,1100,4.832,1145,4.554,1179,8.706,1250,4.554,1251,4.756,1403,3.476,1435,4.756,1438,3.809,1471,3.91,1564,7.52,1687,8.641,1785,5.097,1792,4.143,1825,5.201,1857,5.72,2118,5.443,2199,5.941,2422,6.17,2423,14.516,2424,19.959,2425,12.181,2426,6.842,2427,6.842,2428,10.862,2429,10.862,2430,6.842,2431,9.795,2432,6.842,2433,9.431,2434,6.842,2435,6.842,2436,5.586,2437,6.842,2438,6.842,2439,6.842,2440,6.842,2441,6.842,2442,5.75,2443,6.842,2444,6.842,2445,6.842,2446,6.842,2447,6.842]],["keywords/785",[]],["title/786",[0,148.613,74,347.86,111,602.447]],["content/786",[0,2.219,1,3.219,5,6.951,9,3.778,10,6.434,11,2.684,12,7.255,24,2.507,25,3.005,39,6.382,49,3.916,50,3.562,60,9.131,64,1.876,74,4.791,77,13.669,111,8.297,113,7.255,114,6.456,119,5.088,121,10.069,129,4.288,131,5.54,135,6.456,145,2.337,191,4.211,203,6.062,267,5.183,268,6.154,423,8.545,460,5.169,474,3.437,481,3.36,489,5.341,490,4.799,566,3.219,576,6.071,702,7.017,729,5.54,793,7.937,829,4.949,1027,4.884,1217,5.661,1293,3.154,1361,6.35,1396,5.091,1505,5.653,1564,4.139,1628,6.071,1687,5.915,1782,5.915,1785,5.54,1825,5.653,1917,6.071,2054,5.915,2410,6.248,2425,6.705,2448,7.435,2449,11.597,2450,7.435,2451,7.435,2452,7.435,2453,7.435,2454,10.945,2455,7.017,2456,7.017,2457,7.017,2458,7.017]],["keywords/786",[]],["title/787",[3343,1767.171]],["content/787",[]],["keywords/787",[]],["title/788",[206,474.706,1062,451.574,1174,758.192]],["content/788",[11,1.538,24,2.99,26,4.895,27,6.226,28,10.18,29,5.225,31,4.669,39,3.372,42,3.61,49,4.858,50,4.419,64,2.328,84,6.873,85,4.858,107,3.913,119,2.429,137,4.1,148,2.378,267,6.106,351,5.909,363,4.971,366,5.909,490,3.817,565,4.215,577,5.707,642,5.707,655,6.873,720,4.753,734,5.838,786,9.225,793,5.136,822,4.933,852,7.339,1062,3.563,1074,5.421,1101,7.532,1111,8.974,1122,6.316,1222,7.339,1225,7.143,1241,6.059,1293,8.147,1498,7.339,1617,5.838,1967,8.319,2290,8.319,2300,7.752,2581,12.372,3126,8.706,3338,12.896,3344,10.012,3345,10.012,3346,10.012,3347,9.225,3348,14.83,3349,10.012,3350,10.012,3351,10.012,3352,10.012,3353,10.012,3354,10.012,3355,10.012,3356,10.012,3357,10.012,3358,10.012,3359,10.012,3360,10.012,3361,10.012]],["keywords/788",[]],["title/789",[228,378.07,1174,758.192,1337,384.998]],["content/789",[119,4.518,228,5.548,268,9.104,581,9.804,584,6.715,747,11.269,779,9.633,1337,5.649,1339,9.472,1476,11.747,3332,13.043,3337,14.007,3342,16.192]],["keywords/789",[]],["title/790",[64,295.045,81,508.765,3290,930.165]],["content/790",[]],["keywords/790",[]],["title/791",[64,295.045,206,474.706,297,611.228]],["content/791",[10,0.289,11,3.599,13,1.122,17,0.286,20,0.66,22,0.32,24,0.293,25,1.418,29,0.445,31,0.114,39,0.424,42,1.001,51,0.563,53,0.977,57,0.585,64,0.474,65,2.323,68,0.42,71,6.473,74,2.298,81,0.173,84,0.585,92,1.623,94,0.872,112,0.671,117,0.682,119,0.759,137,2.537,145,1.634,149,1.591,157,0.943,193,1.154,201,0.681,203,0.411,205,0.173,206,0.162,227,1.247,228,0.129,235,0.589,267,0.351,269,1.096,281,2.57,297,0.607,363,1.198,406,0.864,412,0.276,432,0.359,433,0.427,474,7.032,482,0.914,487,0.325,490,0.778,492,2.918,502,1.052,508,0.785,516,1.554,525,0.269,529,0.277,546,3.87,557,1.571,565,0.697,572,0.31,577,4.652,579,1.136,584,0.597,620,1.881,636,1.946,640,0.325,644,0.265,663,0.36,666,2.005,677,1.038,712,0.291,720,0.598,722,0.335,724,1.015,729,0.585,740,3.193,741,0.291,744,3.698,774,0.682,779,0.224,788,0.195,796,1.067,808,0.297,809,7.895,829,0.265,834,0.641,839,1.029,850,8.664,857,1.282,859,0.555,880,1.579,905,2.084,917,0.247,921,0.291,962,0.273,988,0.555,1125,7.021,1158,0.585,1159,0.262,1168,9.15,1170,0.882,1174,8.535,1187,0.297,1222,0.317,1225,0.208,1241,0.262,1251,0.277,1266,0.325,1270,1.497,1287,0.564,1297,0.317,1303,1.462,1322,0.226,1337,0.131,1339,0.22,1360,1.931,1376,0.497,1418,0.708,1442,0.445,1485,0.237,1516,3.623,1549,2.414,1564,1.238,1571,0.335,1604,12.228,1610,2.354,1672,0.546,1680,1.931,1713,1.424,1736,0.625,1745,0.31,1785,0.297,1790,0.36,1792,5.681,1839,5.386,1883,2.294,2120,0.317,2132,1.44,2176,1.525,2179,0.785,2181,0.785,2228,2.224,2290,0.36,2292,0.785,2298,0.753,2300,0.335,2359,0.61,2431,0.708,2465,12.857,2467,0.708,2493,1.525,2585,12.467,2596,0.708,2600,0.346,2722,0.282,2830,0.708,2917,0.335,3014,2.099,3020,0.376,3022,1.728,3026,0.317,3040,0.31,3042,0.346,3043,0.61,3044,0.31,3052,0.708,3076,0.741,3082,2.221,3109,0.376,3114,0.376,3123,0.376,3144,0.376,3152,3.311,3176,4.663,3290,0.317,3298,0.325,3337,0.325,3338,0.376,3342,0.376,3347,0.399,3362,0.433,3363,0.433,3364,0.433,3365,0.433,3366,0.433,3367,0.433,3368,0.433,3369,0.433,3370,0.376,3371,0.433,3372,0.433,3373,0.433,3374,0.433,3375,0.433,3376,0.433,3377,0.433,3378,0.433,3379,0.433,3380,0.433,3381,1.656,3382,0.433,3383,0.36,3384,0.852,3385,0.433,3386,1.26,3387,0.433,3388,0.433,3389,0.433,3390,0.433,3391,0.433,3392,0.433,3393,0.433,3394,0.433,3395,0.433,3396,0.433,3397,0.433,3398,0.433,3399,1.656,3400,5.061,3401,5.642,3402,4.451,3403,11.839,3404,4.451,3405,5.061,3406,9.02,3407,9.02,3408,2.413,3409,5.061,3410,4.451,3411,5.061,3412,4.451,3413,5.061,3414,2.413,3415,2.413,3416,2.413,3417,2.413,3418,5.061,3419,4.451,3420,11.213,3421,5.061,3422,8.6,3423,4.451,3424,4.663,3425,4.451,3426,4.451,3427,4.451,3428,4.451,3429,0.852,3430,0.852,3431,0.852,3432,0.852,3433,0.852,3434,0.852,3435,0.852,3436,0.852,3437,0.852,3438,0.852,3439,0.785,3440,0.852,3441,0.852,3442,0.852,3443,0.852,3444,0.852,3445,0.852,3446,0.852,3447,0.852,3448,0.852,3449,0.852,3450,0.852,3451,0.852,3452,0.852,3453,0.852,3454,0.852,3455,0.852,3456,0.852,3457,1.656,3458,0.852,3459,0.852,3460,0.433,3461,1.656,3462,0.852,3463,0.433,3464,0.852,3465,0.852,3466,14.285,3467,9.424,3468,2.413,3469,0.852,3470,0.852,3471,2.413,3472,0.852,3473,0.852,3474,4.451,3475,4.451,3476,0.852,3477,0.852,3478,0.852,3479,0.852,3480,2.413,3481,2.413,3482,0.852,3483,0.852,3484,7.702,3485,7.702,3486,2.413,3487,2.413,3488,0.852,3489,0.852,3490,2.413,3491,0.852,3492,0.852,3493,4.451,3494,4.451,3495,0.852,3496,0.852,3497,0.852,3498,0.852,3499,4.451,3500,4.451,3501,0.852,3502,0.852,3503,0.852,3504,0.852,3505,2.413,3506,2.413,3507,0.852,3508,0.852,3509,2.413,3510,0.852,3511,0.852,3512,2.413,3513,0.852,3514,0.852,3515,6.194,3516,6.194,3517,0.852,3518,0.852,3519,2.413,3520,2.413,3521,0.852,3522,0.852,3523,2.413,3524,0.852,3525,0.852,3526,2.413,3527,0.852,3528,0.852,3529,2.413,3530,3.13,3531,0.852,3532,0.852,3533,3.473,3534,6.975,3535,6.975,3536,0.852,3537,0.852,3538,0.852,3539,0.852,3540,2.413,3541,0.852,3542,0.852,3543,0.852,3544,0.852,3545,0.433,3546,0.852,3547,2.413,3548,2.413,3549,0.852,3550,0.852,3551,0.852,3552,0.852,3553,0.852,3554,0.852,3555,2.413,3556,0.852,3557,0.852,3558,2.413,3559,0.852,3560,0.852,3561,2.413,3562,0.852,3563,0.852,3564,2.413,3565,0.852,3566,0.852,3567,2.413,3568,2.413,3569,0.852,3570,0.433,3571,2.413,3572,2.413,3573,0.852,3574,0.433,3575,0.433,3576,0.433,3577,14.285,3578,14.285,3579,2.413,3580,0.852,3581,0.852,3582,0.852,3583,0.785,3584,0.852,3585,0.785,3586,0.852,3587,0.785,3588,0.852,3589,0.785,3590,0.852,3591,0.852,3592,0.785,3593,0.852,3594,0.852,3595,19.05,3596,0.852,3597,0.852,3598,2.413,3599,0.852,3600,1.656,3601,0.852,3602,1.656,3603,2.413,3604,0.852,3605,0.852,3606,0.852,3607,0.852,3608,0.852,3609,0.852,3610,0.852,3611,1.656,3612,0.852,3613,0.852,3614,1.656,3615,0.852,3616,2.413,3617,0.852,3618,0.852,3619,0.852,3620,2.413,3621,0.852,3622,1.656,3623,0.852,3624,2.413,3625,0.852,3626,0.852,3627,0.852,3628,0.852,3629,0.852,3630,0.852,3631,0.852,3632,0.852,3633,0.852,3634,2.04,3635,0.852,3636,0.852,3637,0.433,3638,0.852,3639,0.852,3640,1.656,3641,0.852,3642,0.852,3643,0.852,3644,0.852,3645,0.852,3646,0.852,3647,0.852,3648,0.852,3649,0.852,3650,0.852,3651,0.852,3652,0.852,3653,1.656,3654,1.656,3655,1.656,3656,1.656,3657,1.656,3658,1.656,3659,1.656,3660,0.852,3661,0.852,3662,0.852,3663,0.852,3664,1.656,3665,5.642,3666,2.413,3667,0.852,3668,0.852,3669,0.852,3670,0.852,3671,0.852,3672,0.852,3673,0.852,3674,0.852,3675,0.852,3676,0.852,3677,0.852,3678,0.852,3679,1.656,3680,0.852,3681,0.852,3682,0.852,3683,0.852,3684,0.852,3685,0.852,3686,6.975,3687,2.777,3688,2.777,3689,0.852,3690,0.852,3691,0.852,3692,0.852,3693,0.852,3694,0.852,3695,0.433,3696,0.433,3697,0.433,3698,0.433,3699,0.852,3700,0.852,3701,0.852,3702,0.399,3703,0.433,3704,0.433,3705,0.433,3706,0.433,3707,3.13,3708,0.433,3709,1.656,3710,0.433,3711,1.656,3712,1.656,3713,0.433,3714,1.656,3715,0.433,3716,0.852,3717,0.852,3718,0.852,3719,0.433,3720,0.433,3721,0.433,3722,0.433,3723,0.433,3724,1.656,3725,0.433,3726,0.433,3727,0.433,3728,0.852]],["keywords/791",[]],["title/792",[9,463.409,10,336.137,119,240.206,1361,499.432,1484,591.461]],["content/792",[]],["keywords/792",[]],["title/793",[9,520.657,10,377.662,145,322.076,1361,561.13]],["content/793",[0,1.333,1,4.539,9,8.898,10,6.454,11,3.371,12,6.561,22,7.797,24,1.632,50,5.024,64,2.646,145,4.714,150,3.849,151,3.741,228,3.391,412,3.682,432,4.792,479,4.47,490,4.34,591,7.667,622,6.888,627,10.967,822,5.607,1159,6.888,1303,8.572,1322,5.94,1361,11.86,1471,5.993,1484,6.8,1498,11.933,1617,6.637,1857,5.523,2001,10.428,2459,10.487,2460,10.487,2461,10.487,2462,10.487,2463,10.487,2464,9.897,2465,8.148,2466,8.562,2467,9.457,2468,10.487,2469,10.487,2470,10.487,2471,10.487]],["keywords/793",[]],["title/794",[9,594.043,1471,668.175,1639,825.835]],["content/794",[]],["keywords/794",[]],["title/795",[2,794.882]],["content/795",[2,8.578,24,2.735,50,8.418,54,10.325,490,7.271,676,13.978,1303,10.041,1639,12.41,2436,14.345,2472,17.57,2473,17.57]],["keywords/795",[]],["title/796",[145,427.765,2474,1361.063]],["content/796",[10,5.483,24,2.316,50,7.128,54,11.174,64,3.754,111,7.666,140,13.977,145,5.976,490,6.157,555,12.918,746,10.041,1639,14.802,2475,14.878,2476,18.899,2477,14.878,2478,14.878,2479,14.878]],["keywords/796",[]],["title/797",[111,602.447,1471,668.175,1570,982.569]],["content/797",[11,2.406,24,2.247,50,6.916,54,10.959,64,3.643,119,3.802,140,11.803,484,10.755,490,5.974,631,11.945,793,8.037,967,10.975,1168,10.035,1270,7.492,1570,17.361,1639,14.592,1842,16.867,2476,16.818,2480,14.436]],["keywords/797",[]],["title/798",[13,589.974,1293,495.909,1639,825.835]],["content/798",[24,2.735,54,10.325,111,9.053,1158,13.091,1639,14.888,2054,13.978,2419,15.845,2481,17.57,2482,17.57,2483,17.57]],["keywords/798",[]],["title/799",[0,148.613,214,429.117,1389,570.807]],["content/799",[]],["keywords/799",[]],["title/800",[0,104.448,64,207.363,142,195.391,214,301.591,1174,532.87,1389,401.173]],["content/800",[0,1.57,11,2.804,24,1.923,25,4.992,94,7.06,119,4.429,142,3.999,145,3.883,157,5.24,205,5.348,214,7.882,235,4.772,363,6.658,432,5.645,433,6.711,948,9.392,950,8.338,1170,9.392,1265,9.032,1389,6.031,1484,8.011,1488,10.087,1491,8.874,1496,15.613,1748,9.032,2289,9.032,2578,12.355,2579,12.355,2580,12.355,2581,9.392,2582,10.727,2583,14.603,2584,10.727,2585,10.727,2586,10.727,2587,10.727]],["keywords/800",[]],["title/801",[0,148.613,25,472.486,1389,570.807]],["content/801",[]],["keywords/801",[]],["title/802",[25,414.117,622,673.09,1389,500.291,2588,1024.781]],["content/802",[0,2.577,11,3.031,13,7.006,22,8.271,24,2.162,25,8.694,171,7.791,214,5.096,267,6.205,481,6.274,502,6.572,566,6.011,627,10.152,677,7.666,779,7.797,796,5.139,799,13.105,1389,6.779,1482,11.047,1492,11.647,2502,12.056,2589,13.886,2590,13.886]],["keywords/802",[]],["title/803",[25,414.117,177,293.04,356,543.777,1389,500.291]],["content/803",[11,3.05,24,2.182,25,5.665,26,9.709,27,12.349,28,10.445,29,7.941,177,5.232,267,6.265,356,7.439,554,8.873,559,10.572,627,10.25,655,10.445,708,8.58,817,7.383,852,11.153,1471,8.012,1492,8.979,1559,9.746,1617,8.873,2381,12.172,2591,14.019,2592,14.019,2593,14.019,2594,11.153]],["keywords/803",[]],["title/804",[0,148.613,195,258.616,529,412.194]],["content/804",[0,2.433,25,7.734,59,4.691,64,3.793,77,10.005,116,10.617,129,8.669,148,3.875,195,4.233,214,5.517,266,11.199,490,6.22,1087,10.145,1158,11.199,1217,7.338,1293,6.376,1309,7.386,1379,10.005,1389,9.344,2595,15.032,2596,13.556]],["keywords/804",[]],["title/805",[206,474.706,339,415.463,1341,888.887]],["content/805",[0,1.748,1,5.954,9,6.988,119,3.622,148,3.545,177,3.933,194,6.25,206,7.337,297,7.19,339,7.616,412,4.83,490,5.692,524,6.081,565,6.285,592,7.657,641,9.418,775,9.879,796,5.09,839,9.283,928,10.457,948,10.457,1091,9.879,1320,10.942,1341,10.457,1389,6.715,1403,6.988,1564,7.657,2597,13.754,2598,13.754,2599,13.754]],["keywords/805",[]],["title/806",[59,424.783,1379,905.936]],["content/806",[]],["keywords/806",[]],["title/807",[59,424.783,227,530.33]],["content/807",[59,5.836,119,4.924,529,6.592,622,12.281,874,10.499,1385,12.619]],["keywords/807",[]],["title/808",[59,364.91,874,656.509,1385,789.1]],["content/808",[11,3.037,13,7.026,31,4.739,49,4.985,51,6.755,59,7.228,74,5.776,91,4.776,142,4.332,145,2.975,157,4.014,235,7.498,267,4.23,433,5.141,458,4.985,474,4.375,490,3.917,504,7.954,529,3.337,566,4.097,743,7.727,796,3.502,874,5.314,972,7.727,973,7.727,1020,11.484,1098,4.563,1337,3.116,1377,5.99,1385,6.388,1471,5.409,1485,5.616,1546,6.216,1777,6.92,1852,8.535,1870,12.091,2524,9.465,2525,9.465,2526,9.465,2527,9.465,2528,13.925,2529,9.465,2530,9.465,2531,9.465,2532,9.465,2533,9.465,2534,9.465,2541,9.465]],["keywords/808",[]],["title/809",[59,424.783,195,301.048]],["content/809",[0,2.257,11,3.654,24,1.2,43,3.304,49,4.061,59,5.125,64,1.946,74,3.549,81,3.355,129,4.447,142,2.836,145,5.161,148,1.988,157,3.271,177,2.205,182,4.407,195,4.153,198,3.564,211,4.771,214,2.83,220,4.257,222,3.238,223,2.878,231,4.031,235,2.978,265,4.33,280,7.224,458,4.061,468,3.524,492,12.25,496,4.824,745,3.764,874,4.33,948,5.862,1027,7.835,1055,7.278,1073,5.28,1107,5.065,1246,3.741,1307,4.293,1389,3.764,1792,4.67,2542,7.711,2543,7.711,2547,6.134,2549,6.134,2551,6.134,2552,7.711,2553,7.711,2554,7.711,2555,7.711,2556,7.711,2557,7.711,2558,7.711,2559,7.711,2560,7.711,2561,7.711,2562,7.711,2563,11.929,2564,11.929,2565,11.929,2566,7.711,2567,7.711,2568,7.711,2569,7.711,2570,6.134,2571,7.711,2572,7.711,2573,7.711,2574,7.711,2575,7.711,2576,7.711,2577,7.711,3729,8.369,3730,8.369,3731,8.369,3732,8.369,3733,8.369]],["keywords/809",[]],["title/810",[2600,1413.729]],["content/810",[]],["keywords/810",[]],["title/811",[25,657.965]],["content/811",[]],["keywords/811",[]],["title/812",[9,594.043,10,430.893,1174,758.192]],["content/812",[3,10.343,5,8.918,6,12.503,7,12.918,8,13.417,9,7.559,10,5.483,11,2.48,12,11.896,13,9.594,14,9.772,15,12.918,16,10.878,17,10.686,18,11.836,19,12.918,22,6.069,23,13.417,24,2.316,48,6.999,406,6.838,917,9.205,2601,12.918,2602,14.878]],["keywords/812",[]],["title/813",[0,148.613,10,430.893,1246,567.189]],["content/813",[0,2.498,5,12.87,11,3.579,24,3.06,25,7.943,26,8.32,27,13.266,28,11.682,29,8.881,30,12.182,92,5.802,105,11.463,459,8.196]],["keywords/813",[]],["title/814",[0,148.613,56,871.116,1562,800.595]],["content/814",[0,2.511,2,4.286,11,1.464,24,2.05,31,2.519,40,5.761,54,7.739,55,9.113,56,6.541,57,6.541,58,7.918,59,2.74,60,5.624,63,19.432,64,5.538,65,12.205,67,4.769,68,7.042,71,5.21,74,2.612,77,5.844,80,4.012,81,3.82,119,2.312,432,4.012,433,4.769,1311,7.168,1405,4.492,1583,5.693,1584,6.306,2606,8.78,2609,8.78,2614,7.918,2625,8.78,2627,8.78,3734,9.529,3735,23.388,3736,9.529,3737,9.529,3738,9.529,3739,9.529,3740,9.529,3741,9.529,3742,9.529,3743,9.529,3744,9.529,3745,9.529,3746,9.529,3747,9.529,3748,9.529]],["keywords/814",[]],["title/815",[130,614.999,1546,893.965]],["content/815",[11,3.344,24,2.522,54,9.521,77,10.784,113,13.634,115,10.507,116,15.392,119,4.267,126,12.318,127,12.89,128,13.228,129,9.344,2630,16.202]],["keywords/815",[]],["title/816",[148,349.247,198,421.589,297,476.815,745,445.283]],["content/816",[148,4.475,177,4.964,206,7.049,228,5.614,584,6.795,959,12.673,1159,11.403,1337,5.717,1520,13.811,1864,12.693,2631,17.361]],["keywords/816",[]],["title/817",[42,321.62,206,333.631,214,301.591,297,429.581,747,539.736,959,497.625]],["content/817",[0,0.769,11,3.809,24,0.941,42,3.849,64,1.526,65,5.571,80,2.763,137,4.371,148,1.559,198,4.546,207,3.827,222,4.13,228,4.02,268,3.208,297,3.161,302,8.03,306,7.824,339,5.089,351,3.873,363,9.102,366,3.873,434,4.421,489,4.343,492,8.96,578,3.366,636,4.081,796,2.238,959,3.662,1062,2.335,1197,5.081,1277,3.662,1302,6.947,1374,5.081,1377,3.827,1471,3.455,1580,5.25,1705,4.203,1738,7.377,1971,8.539,2632,6.047,2633,6.047,2634,6.047,2635,6.047,2636,6.047,2637,6.047,2638,6.047,2639,6.047,2640,6.047,2641,15.76,2642,6.047,2643,6.047,2644,5.707,2645,9.835,2646,6.047,2647,6.047,2648,6.047,2649,6.047,2650,6.047,2651,6.047,2652,6.047,2653,6.047,2654,9.835,2655,6.047,2656,6.047,2657,6.047,2658,14.322,2659,6.047,2660,6.047,2661,9.835,2662,9.835,2663,6.047,2664,6.047,2665,6.047,2666,6.047,2667,6.047,2668,6.047,2669,6.047,2670,6.047,2671,6.047,2672,6.047,2673,9.835,2674,6.047,2675,9.835,2676,9.835,2677,6.047,2678,6.047,2679,6.047,2680,6.047,2681,6.047,2682,6.047,2683,6.047,2684,6.047,2685,6.047,2686,6.047,2687,9.282,2688,6.047,2690,6.047,2691,6.047,2692,6.047,2693,6.047,2694,6.047,2695,6.047,2696,5.453,2697,5.453,2822,4.343,2823,7.477,2824,4.937,3749,6.563]],["keywords/817",[]],["title/818",[137,405.411,142,216.874,206,370.315,1174,591.461,2601,791.953]],["content/818",[11,2.965,24,2.769,142,4.229,205,7.699,228,5.751,578,9.901,584,6.961,1337,5.856,2698,17.785,2699,17.785]],["keywords/818",[]],["title/819",[195,258.616,363,630.071,745,570.807]],["content/819",[0,1.993,11,2.614,129,9.042,130,7.085,195,4.348,227,6.109,235,6.056,363,8.449,474,7.247,504,13.176,745,7.654,1020,10.9,1059,12.473,1159,10.298,1189,9.214,1266,12.801,2700,15.679,2701,15.679,2702,15.679,2703,15.679]],["keywords/819",[]],["title/820",[366,656.373,880,561.13,1277,620.574,2822,736.049]],["content/820",[0,1.993,51,7.606,119,4.129,130,7.085,177,4.484,179,5.754,227,7.659,874,8.804,876,17.067,1020,13.664,1038,12.473,1168,10.9,1350,11.335,1389,7.654,1405,8.022,1584,11.262,2822,11.262]],["keywords/820",[]],["title/821",[74,304.887,339,364.138,479,436.841,740,701.692]],["content/821",[]],["keywords/821",[]],["title/822",[142,278.011,143,615.771,144,483.846]],["content/822",[]],["keywords/822",[]],["title/823",[142,323.625,145,427.765]],["content/823",[24,3.027,146,10.398,147,15.471]],["keywords/823",[]],["title/824",[201,590.284]],["content/824",[31,6.309,112,7.27,142,4.488,149,4.674,154,5.945,158,7.454,160,10.092,162,9.364,163,7.013,170,7.013,182,9.448,200,8.84,223,4.496,228,3.896,406,7.598,1056,8.519,1337,3.967,1378,12.924,1489,7.913,1492,7.717,1780,10.228,1850,10.393,1864,8.808,2705,8.019,2706,18.875]],["keywords/824",[]],["title/825",[148,350.825,177,389.201]],["content/825",[0,1.778,11,3.977,24,2.178,31,4.014,39,3.482,146,5.094,150,3.496,151,3.399,152,5.055,153,4.482,154,3.426,155,5.055,156,4.944,157,5.934,158,5.894,159,6.729,160,7.481,161,6.341,162,5.396,163,8.144,164,6.523,165,6.523,166,7.242,167,12.513,168,7.242,169,7.242,170,8.144,171,5.995,172,7.402,173,7.579,174,7.579,175,3.6,179,3.496,182,5.444,294,4.189,374,4.592,375,4.592,376,4.592,407,4.874,408,4.874,1309,4.681,2707,5.259,2708,7.579,2709,5.894,2710,7.242,2711,7.579,2712,6.341,2713,7.242,2714,7.242,2715,7.579,2716,7.579,2717,7.579,2718,7.579,2719,7.579]],["keywords/825",[]],["title/826",[112,598.514,142,323.625]],["content/826",[24,3.068,147,15.68]],["keywords/826",[]],["title/827",[148,350.825,177,389.201]],["content/827",[0,1.195,11,3.92,24,2.157,59,4.325,150,3.451,151,3.355,157,6.98,160,8.8,163,9.58,167,9.489,170,9.58,171,4.029,174,7.481,175,3.554,179,3.451,182,9.405,294,4.135,374,4.533,375,4.533,376,4.533,403,9.489,404,9.489,407,8.42,408,8.42,1309,4.62,1339,7.651,2707,5.191,2708,7.481,2709,5.818,2710,7.149,2711,7.481,2712,10.954,2713,7.149,2714,7.149,2715,7.481,2716,7.481,2717,7.481,2718,7.481,2719,7.481,2720,9.404,2721,10.325,2722,9.789,2723,10.536,2724,9.404]],["keywords/827",[]],["title/828",[142,387.146]],["content/828",[24,3.068,186,14.41]],["keywords/828",[]],["title/829",[201,590.284]],["content/829",[31,6.181,142,4.335,154,6.556,1056,9.393,1780,11.279,1850,9.327,1857,9.601]],["keywords/829",[]],["title/830",[148,350.825,177,389.201]],["content/830",[0,2.175,11,3.612,24,2.664,150,4.653,151,4.523,157,7.259,160,6.778,163,7.379,167,11.719,170,7.379,171,5.431,175,4.791,179,4.653,182,7.245,187,9.268,294,5.575,374,6.111,375,6.111,376,6.111,407,6.486,408,6.486,1309,6.229,2707,6.999,2708,10.085,2709,7.843,2710,9.638,2711,10.085,2712,8.438,2713,9.638,2714,9.638,2715,10.085,2716,10.085,2717,10.085,2718,10.085,2719,10.085]],["keywords/830",[]],["title/831",[142,323.625,188,656.116]],["content/831",[24,3.027,186,14.218,188,9.375]],["keywords/831",[]],["title/832",[201,590.284]],["content/832",[31,5.983,142,4.959,154,5.296,158,9.112,160,10.101,200,10.101,223,5.496,228,4.762,1056,9.734,1337,4.85,1471,8.417,1780,9.112,1850,10.671,1857,7.756,2705,14.644]],["keywords/832",[]],["title/833",[148,350.825,177,389.201]],["content/833",[0,2.217,11,4.046,24,2.323,31,4.281,39,3.806,150,3.821,151,3.714,152,5.525,153,4.898,154,3.744,155,5.525,156,5.403,157,7.398,158,6.442,159,7.354,160,7.98,162,5.897,163,8.687,164,7.129,165,7.129,170,8.687,175,3.935,179,3.821,182,5.95,187,7.612,188,5.019,189,8.75,294,4.578,374,5.019,375,5.019,376,5.019,407,5.327,408,5.327,1309,5.116,2707,5.748,2709,6.442,2710,7.915,2712,6.93,2713,7.915,2714,7.915,2725,10.412,2726,10.412]],["keywords/833",[]],["title/834",[107,577.275,142,323.625]],["content/834",[24,3.027,107,8.248,186,14.218]],["keywords/834",[]],["title/835",[201,590.284]],["content/835",[31,6.181,142,4.335,154,6.556,1056,9.393,1780,11.279,1850,9.327,1857,9.601]],["keywords/835",[]],["title/836",[148,350.825,177,389.201]],["content/836",[0,2.175,11,3.458,24,2.664,107,5.377,150,4.653,151,4.523,157,7.259,160,6.778,163,7.379,167,11.719,170,7.379,171,5.431,175,4.791,179,4.653,182,7.245,187,9.268,294,5.575,374,6.111,375,6.111,376,6.111,407,6.486,408,6.486,1309,6.229,2707,6.999,2708,10.085,2709,7.843,2710,9.638,2711,10.085,2712,8.438,2713,9.638,2714,9.638,2715,10.085,2716,10.085,2717,10.085,2718,10.085,2719,10.085]],["keywords/836",[]],["title/837",[143,615.771,144,483.846,195,258.616]],["content/837",[]],["keywords/837",[]],["title/838",[119,240.206,142,216.874,145,286.663,195,201.744,242,822.532]],["content/838",[24,3.027,146,10.398,243,14.218]],["keywords/838",[]],["title/839",[201,590.284]],["content/839",[31,5.774,38,5.282,50,5.282,51,3.382,55,4.021,91,5.564,94,3.985,142,4.785,144,2.885,149,2.705,154,6.089,158,6.822,177,3.911,182,6.301,194,3.168,195,3.745,196,4.415,211,6.822,212,2.872,213,5.807,219,5.418,221,5.315,223,6.718,225,3.728,228,3.565,423,6.609,468,3.186,479,2.972,481,3.151,486,6.138,566,3.018,620,4.098,814,3.949,817,3.672,844,4.706,864,4.847,1004,4.059,1056,8.009,1062,2.693,1086,7.15,1281,5.301,1318,4.314,1322,6.245,1337,2.296,1485,6.543,1633,5.301,1713,4.466,1780,4.314,1850,10.942,1864,5.098,2424,6.288,2547,8.772,2549,8.772,2551,10.88,2705,4.641,2727,5.86,2728,10.397,2729,6.973,2730,8.772,2731,11.026,2732,6.973,2733,6.973,2734,6.288,2735,5.693,2736,5.86,2737,6.288,2738,6.288,2739,6.973]],["keywords/839",[]],["title/840",[148,350.825,177,389.201]],["content/840",[11,3.956,24,1.73,31,2.02,38,3.373,39,2.573,42,4.348,80,3.217,92,4.112,142,2.642,146,3.764,150,2.584,151,2.512,152,3.736,153,3.312,154,2.532,155,3.736,156,3.654,175,2.661,179,2.584,198,7.863,212,4.576,213,3.708,214,2.584,215,5.684,216,4.023,219,3.459,220,3.887,221,3.394,222,2.956,223,5.136,224,5.323,225,5.941,226,4.098,227,4.329,228,2.276,229,4.098,230,5.766,231,5.808,244,7.865,245,4.263,246,4.356,247,4.263,248,4.686,249,5.147,294,3.096,374,3.394,375,3.394,376,3.394,401,3.887,407,3.602,408,5.684,1309,3.459,2707,3.887,2740,7.04,2741,8.123,2742,7.04,2743,7.04,2744,7.04,2745,7.04,2746,7.04,2747,5.147,2748,5.147,2749,4.509,2750,7.04,2751,4.973,2752,4.973,2753,4.973,2754,4.456,2755,4.456,2756,4.456,2757,4.973,2758,4.973,2759,5.147,2760,8.71,2761,4.456,2762,4.456,2763,4.686,2764,7.032,2765,4.456,2766,7.032,2767,7.032,2768,4.686,2769,5.147,2770,5.147,2771,4.456]],["keywords/840",[]],["title/841",[119,216.411,142,195.391,145,258.266,195,181.759,263,546.964,264,741.051]],["content/841",[24,3.027,146,10.398,243,14.218]],["keywords/841",[]],["title/842",[201,590.284]],["content/842",[149,7.445,211,11.873,1864,14.031,2705,12.774]],["keywords/842",[]],["title/843",[148,350.825,177,389.201]],["content/843",[0,1.91,11,3.918,24,1.636,31,3.015,38,3.145,39,2.399,42,4.113,80,3,92,3.889,93,4.563,94,3.751,142,3.908,143,3.457,144,4.349,146,3.51,148,1.692,150,2.409,151,2.342,152,3.483,153,3.088,154,2.361,155,3.483,156,3.407,157,5.574,175,2.481,179,2.409,198,6.074,212,4.328,213,3.457,214,2.409,215,5.377,216,3.751,219,3.225,220,3.624,221,3.164,222,2.757,223,4.904,224,5.035,225,5.619,226,3.821,227,4.095,244,7.51,245,3.975,246,4.061,247,3.975,248,4.369,249,4.799,265,3.686,266,4.891,267,2.934,268,5.576,269,4.715,294,2.887,374,3.164,375,3.164,376,3.164,401,3.624,407,3.358,408,6.724,1309,3.225,2707,3.624,2709,4.061,2741,7.683,2747,4.799,2748,4.799,2749,4.204,2751,4.636,2752,4.636,2753,4.636,2754,4.155,2755,4.155,2756,4.155,2757,4.636,2758,4.636,2759,4.799,2760,6.651,2761,4.155,2762,4.155,2764,6.651,2765,4.155,2766,6.651,2767,6.651,2768,4.369,2769,4.799,2770,4.799,2771,4.155,2772,4.99,2773,4.99,2774,4.99,2775,4.99,2776,4.99,2777,4.99,2778,5.222]],["keywords/843",[]],["title/844",[112,598.514,195,301.048]],["content/844",[24,3.068,243,14.41]],["keywords/844",[]],["title/845",[148,350.825,177,389.201]],["content/845",[0,0.858,11,3.78,24,1.672,142,2.554,150,2.476,151,2.407,157,2.862,175,2.55,179,2.476,198,6.186,212,4.424,215,5.496,223,5.694,224,5.146,227,4.185,230,3.501,231,3.527,244,6.139,249,4.933,294,2.967,374,3.252,375,3.252,376,3.252,401,5.93,407,5.496,408,8.524,1309,3.315,2707,3.725,2709,4.174,2741,7.853,2747,4.933,2748,7.853,2749,10.671,2751,4.765,2752,4.765,2753,4.765,2754,6.798,2755,6.798,2756,6.798,2757,7.587,2758,7.587,2759,4.933,2760,10.545,2761,6.798,2762,6.798,2763,4.491,2764,9.658,2765,8.47,2766,9.658,2767,9.658,2768,8.908,2769,4.933,2770,4.933,2771,6.798,2772,5.129,2773,5.129,2774,5.129,2775,5.129,2776,5.129,2777,5.129,2778,5.367,2779,5.367,2780,9.687,2781,6.084,2782,6.084,2783,6.084,2784,6.084,2785,6.084,2786,6.747,2787,9.687,2788,5.129,2789,6.747,2790,6.747,2791,6.747,2792,6.747,2793,4.933]],["keywords/845",[]],["title/846",[195,360.137]],["content/846",[24,3.068,282,14.41]],["keywords/846",[]],["title/847",[201,590.284]],["content/847",[31,5.23,154,6.556,195,4.032,905,9.262,1056,9.393,1850,9.327,1857,9.601,2794,12.876]],["keywords/847",[]],["title/848",[148,350.825,177,389.201]],["content/848",[0,1.243,11,3.695,24,2.221,142,2.326,150,3.59,151,3.49,157,4.149,175,3.697,179,3.59,198,6.594,212,4.029,215,5.005,223,5.324,224,4.687,227,3.812,244,8.152,294,4.302,374,4.716,375,4.716,376,4.716,401,5.401,407,5.005,408,8.615,1309,4.807,2707,5.401,2709,6.052,2741,10.43,2747,7.152,2748,7.152,2749,6.266,2751,6.909,2752,6.909,2753,6.909,2754,6.191,2755,6.191,2756,6.191,2757,6.909,2758,6.909,2759,7.152,2760,9.029,2761,6.191,2762,6.191,2764,9.029,2765,6.191,2766,9.029,2767,9.029,2768,6.511,2769,7.152,2770,7.152,2771,6.191,2772,7.437,2773,7.437,2774,7.437,2775,7.437,2776,7.437,2777,7.437,2778,7.782,2795,8.221]],["keywords/848",[]],["title/849",[188,656.116,195,301.048]],["content/849",[24,3.027,188,9.375,282,14.218]],["keywords/849",[]],["title/850",[201,590.284]],["content/850",[31,4.061,55,8.163,142,4.378,154,5.091,177,4.048,182,8.089,195,4.527,196,7.372,212,7.583,223,6.871,905,7.192,1056,7.294,1062,5.467,1258,6.326,1850,7.242,1857,7.455,2547,11.261,2549,11.261,2551,11.261,2705,14.426,2728,10.761,2794,9.998]],["keywords/850",[]],["title/851",[148,350.825,177,389.201]],["content/851",[11,3.956,24,1.73,31,2.02,38,3.373,39,2.573,42,2.755,80,3.217,92,4.112,137,3.129,142,2.642,150,2.584,151,2.512,152,3.736,153,3.312,154,2.532,155,3.736,156,3.654,175,2.661,179,2.584,188,3.394,198,7.863,212,4.576,213,3.708,214,2.584,215,5.684,216,4.023,219,3.459,220,3.887,221,3.394,222,2.956,223,5.136,224,5.323,225,5.941,226,4.098,227,4.329,228,2.276,229,4.098,230,5.766,231,5.808,244,7.865,245,4.263,246,4.356,247,4.263,248,4.686,294,3.096,374,3.394,375,3.394,376,3.394,401,3.887,407,3.602,408,5.684,1309,3.459,2707,3.887,2741,8.123,2747,5.147,2748,5.147,2749,4.509,2751,4.973,2752,4.973,2753,4.973,2754,4.456,2755,4.456,2756,4.456,2757,4.973,2758,4.973,2759,5.147,2760,8.71,2761,4.456,2762,4.456,2763,4.686,2764,4.456,2765,4.456,2766,7.032,2767,7.032,2768,4.686,2769,5.147,2770,5.147,2771,4.456,2772,5.352,2773,5.352,2774,5.352,2775,5.352,2776,5.352,2777,5.352,2778,5.601,2795,5.916,2796,6.349]],["keywords/851",[]],["title/852",[107,577.275,195,301.048]],["content/852",[24,3.027,107,8.248,282,14.218]],["keywords/852",[]],["title/853",[201,590.284]],["content/853",[31,5.23,154,6.556,195,4.032,905,9.262,1056,9.393,1850,9.327,1857,9.601,2794,12.876]],["keywords/853",[]],["title/854",[148,350.825,177,389.201]],["content/854",[11,3.695,24,2.221,107,4.149,142,2.326,150,3.59,151,3.49,175,3.697,179,3.59,198,7.783,212,4.029,215,5.005,223,5.324,224,4.687,227,3.812,230,5.077,231,5.114,244,8.152,294,4.302,374,4.716,375,4.716,376,4.716,401,5.401,407,5.005,408,7.299,1309,4.807,2707,5.401,2741,10.43,2751,6.909,2752,6.909,2753,6.909,2754,6.191,2755,6.191,2756,6.191,2757,6.909,2758,6.909,2759,7.152,2760,10.657,2761,6.191,2762,6.191,2763,6.511,2764,6.191,2765,6.191,2766,9.029,2767,9.029,2768,6.511,2769,7.152,2770,7.152,2771,6.191,2772,7.437,2773,7.437,2774,7.437,2775,7.437,2776,7.437,2777,7.437,2795,8.221,2796,8.822,2797,9.782,2798,9.782]],["keywords/854",[]],["title/855",[112,514.154,195,258.616,284,560.149]],["content/855",[24,3.068,285,17.775]],["keywords/855",[]],["title/856",[148,350.825,177,389.201]],["content/856",[11,3.964,24,2.866,65,10.43,150,5.195,151,5.05,175,5.35,179,5.195,224,6.782,227,5.516,286,12.765,290,11.261,292,14.649,294,6.225,374,6.824,375,6.824,376,6.824,1309,6.955,2707,7.815,2779,11.261,2799,16.605]],["keywords/856",[]],["title/857",[195,301.048,284,652.056]],["content/857",[24,3.068,295,17.775]],["keywords/857",[]],["title/858",[201,590.284]],["content/858",[31,5.23,154,6.556,195,4.032,905,9.262,1056,9.393,1850,9.327,1857,9.601,2794,12.876]],["keywords/858",[]],["title/859",[148,350.825,177,389.201]],["content/859",[11,3.918,24,2.885,65,10.496,150,5.246,151,5.099,175,5.402,179,5.246,224,6.848,227,5.57,290,11.372,292,14.742,294,6.286,374,6.891,375,6.891,376,6.891,1309,7.023,2707,7.892,2779,11.372,2799,16.711,2800,14.294]],["keywords/859",[]],["title/860",[143,539.701,144,424.074,195,226.667,196,410.291]],["content/860",[]],["keywords/860",[]],["title/861",[145,367.472,195,258.616,196,468.121]],["content/861",[24,3.027,146,10.398,197,15.471]],["keywords/861",[]],["title/862",[201,590.284]],["content/862",[11,1.075,31,6.107,38,4.963,50,4.963,51,3.128,55,3.719,142,3.088,144,2.668,154,6.255,177,3.713,182,5.92,191,3.652,195,4.452,196,6.964,199,6.718,200,7.951,201,6.306,203,5.416,205,5.621,211,8.034,212,2.655,213,5.456,219,5.09,221,4.994,223,6.078,225,3.448,228,3.35,423,6.209,481,2.914,486,5.767,566,2.791,844,4.352,864,4.482,990,4.181,1056,8.962,1062,2.49,1485,6.148,1713,4.13,1780,8.034,1782,5.13,1850,11.503,2547,8.242,2549,8.242,2551,10.33,2705,10.842,2727,5.419,2728,9.872,2730,8.242,2734,5.815,2735,5.265,2736,5.419,2737,5.815,2738,5.815,2839,5.815,2840,6.448,2841,6.448]],["keywords/862",[]],["title/863",[148,350.825,177,389.201]],["content/863",[11,4.043,24,1.205,31,4.481,38,2.175,39,1.659,42,3.031,64,1.954,80,6.139,92,2.866,142,1.841,146,2.427,150,1.666,151,1.619,152,2.409,153,2.135,154,1.632,155,2.409,156,2.356,175,1.716,179,1.666,191,5.736,195,1.713,196,4.792,198,6.762,199,5.021,200,9.514,201,2.807,202,7.153,203,5.294,204,3.527,205,4.384,206,4.859,207,6.409,208,3.527,209,5.887,210,5.661,211,4.791,212,3.189,213,2.391,214,1.666,215,3.962,216,2.594,217,3.611,218,3.611,219,2.23,220,4.275,221,2.188,222,1.906,223,2.89,224,3.71,225,4.141,226,4.507,227,3.017,228,1.468,229,2.642,230,4.019,231,4.048,232,3.611,294,1.996,374,2.188,375,2.188,376,2.188,401,2.506,407,2.322,408,3.962,1309,2.23,2707,2.506,2709,2.808,2754,2.873,2755,2.873,2756,2.873,2760,6.409,2761,2.873,2762,2.873,2763,3.021,2764,4.901,2765,4.901,2766,4.901,2767,4.901,2771,2.873,2793,3.319,2842,3.611,2843,4.093,2844,3.611,2845,3.611,2846,3.611,2847,8.056,2848,3.611,2849,8.056,2850,3.611,2851,3.611,2852,3.611,2853,3.611,2854,3.611,2855,3.611,2856,3.611,2857,11.638,2858,9.521,2859,3.611,2860,3.611,2861,6.16,2862,3.611,2863,3.611,2864,3.611,2865,3.611,2866,3.611,2867,3.611,2868,6.983,2869,6.983,2870,6.983]],["keywords/863",[]],["title/864",[112,514.154,195,258.616,196,468.121]],["content/864",[24,3.068,197,15.68]],["keywords/864",[]],["title/865",[148,350.825,177,389.201]],["content/865",[11,4.023,24,1.666,31,1.927,64,1.695,80,4.89,142,1.597,150,2.465,151,2.396,175,2.538,179,2.465,195,1.485,196,4.285,198,6.167,200,9.47,201,2.435,202,4.743,206,4.345,207,4.25,210,4.91,211,4.155,212,2.766,215,3.436,223,2.506,224,3.217,227,2.617,230,3.485,231,3.511,232,5.343,294,2.953,374,3.237,375,3.237,376,3.237,401,3.708,407,3.436,408,5.475,1309,3.3,2707,3.708,2709,4.155,2754,4.25,2755,4.25,2756,4.25,2760,8.444,2761,4.25,2762,4.25,2763,4.47,2764,6.773,2765,6.773,2766,6.773,2767,6.773,2771,4.25,2793,4.91,2842,5.343,2843,6.056,2844,5.343,2845,5.343,2846,5.343,2847,10.614,2848,5.343,2849,10.614,2850,5.343,2851,5.343,2852,5.343,2853,5.343,2854,5.343,2855,5.343,2856,5.343,2857,14.09,2858,12.108,2859,5.343,2860,5.343,2861,8.514,2862,5.343,2863,5.343,2864,5.343,2865,5.343,2866,5.343,2867,5.343,2868,9.651,2869,9.651,2870,9.651]],["keywords/865",[]],["title/866",[188,563.637,195,258.616,196,468.121]],["content/866",[24,3.027,188,9.375,2871,17.537]],["keywords/866",[]],["title/867",[201,590.284]],["content/867",[31,5.79,154,4.946,195,4.741,196,8.582,199,11.718,200,9.663,201,6.551,205,5.954,211,11.18,223,5.133,1056,7.087,1780,8.51,1850,10.326,1857,7.244,2705,14.818,2839,12.404]],["keywords/867",[]],["title/868",[148,350.825,177,389.201]],["content/868",[11,4.033,24,1.209,31,4.488,38,2.181,39,1.664,42,3.039,64,1.959,80,6.696,92,2.873,142,1.846,150,1.671,151,1.624,152,2.416,153,2.142,154,1.637,155,2.416,156,2.363,175,1.721,179,1.671,188,2.195,191,5.749,195,1.717,196,5.389,198,7.231,199,5.035,200,9.525,201,2.815,202,7.169,203,5.306,204,3.538,205,4.394,206,4.869,207,6.424,208,3.538,209,5.903,210,5.677,211,4.804,212,3.198,213,2.398,214,1.671,215,3.972,216,2.602,217,3.622,218,3.622,219,2.237,220,4.286,221,2.195,222,1.912,223,2.897,224,3.72,225,4.152,226,4.519,227,3.025,228,1.472,229,2.65,230,4.029,231,4.059,234,3.462,235,2.999,294,2.002,374,2.195,375,2.195,376,2.195,401,2.514,407,2.33,408,3.972,1309,2.237,2707,2.514,2709,2.817,2754,2.882,2755,2.882,2756,2.882,2760,6.424,2761,2.882,2762,2.882,2763,3.031,2764,4.914,2765,4.914,2766,4.914,2767,4.914,2768,5.168,2771,2.882,2793,3.329,2842,3.622,2844,3.622,2845,3.622,2846,3.622,2847,8.075,2848,3.622,2849,8.075,2850,3.622,2851,3.622,2852,3.622,2853,3.622,2854,3.622,2855,3.622,2856,3.622,2857,11.657,2858,9.541,2859,3.622,2860,3.622,2861,6.177,2862,3.622,2863,3.622,2864,3.622,2865,3.622,2866,3.622,2867,3.622,2872,4.106]],["keywords/868",[]],["title/869",[107,495.909,195,258.616,196,468.121]],["content/869",[24,3.027,107,8.248,2871,17.537]],["keywords/869",[]],["title/870",[201,590.284]],["content/870",[31,6.091,154,6.396,195,3.934,196,7.121,205,7.699,1056,9.164,1780,11.003,1850,9.099,1857,9.366]],["keywords/870",[]],["title/871",[148,350.825,177,389.201]],["content/871",[11,3.993,24,1.678,31,1.945,64,1.71,80,6.134,107,2.875,142,1.612,150,2.488,151,2.418,179,2.488,195,1.499,196,5.375,198,7.072,200,9.509,201,2.457,202,4.787,206,4.377,207,4.29,210,4.956,211,4.193,212,2.791,215,3.468,223,2.529,224,3.247,227,2.641,230,3.518,231,3.543,234,5.153,235,2.618,294,2.981,374,3.267,375,3.267,376,3.267,401,3.742,407,3.468,408,5.516,1309,3.33,2707,3.742,2709,4.193,2754,4.29,2755,4.29,2756,4.29,2760,8.496,2761,4.29,2762,4.29,2763,4.512,2764,6.824,2765,6.824,2766,6.824,2767,6.824,2768,7.176,2771,4.29,2793,4.956,2842,5.392,2844,5.392,2845,5.392,2846,5.392,2847,10.68,2848,5.392,2849,10.68,2850,5.392,2851,5.392,2852,5.392,2853,5.392,2854,5.392,2855,5.392,2856,5.392,2857,14.148,2858,12.171,2859,5.392,2860,5.392,2861,8.577,2862,5.392,2863,5.392,2864,5.392,2865,5.392,2866,5.392,2867,5.392,2872,6.112,2873,6.778]],["keywords/871",[]],["title/872",[119,269.88,145,322.076,195,226.667,196,410.291]],["content/872",[24,3.027,146,10.398,236,17.537]],["keywords/872",[]],["title/873",[201,590.284]],["content/873",[31,6.409,154,5.52,195,4.703,196,7.765,201,5.564,209,11.669,237,11.925,468,7.014,1056,7.908,1850,10.878,1857,8.083,2705,12.909,2728,11.669,2874,15.349]],["keywords/873",[]],["title/874",[148,350.825,177,389.201]],["content/874",[11,3.865,24,2.032,31,2.489,80,5.964,142,2.063,146,4.639,150,3.184,151,3.095,152,4.603,153,4.081,154,3.12,155,4.603,156,4.502,175,3.279,179,3.184,196,3.473,198,7.252,212,3.573,215,4.439,223,4.87,224,4.156,227,3.38,230,4.502,231,4.535,237,6.74,238,7.823,239,7.823,240,7.823,241,7.823,294,3.815,374,4.182,375,4.182,376,4.182,401,4.79,407,4.439,408,6.677,1309,4.263,2707,4.79,2747,6.343,2748,6.343,2749,5.557,2751,6.128,2752,6.128,2753,6.128,2754,5.491,2755,5.491,2756,5.491,2757,6.128,2758,6.128,2760,9.93,2761,5.491,2762,5.491,2763,5.774,2764,8.26,2765,8.26,2766,8.26,2767,8.26,2768,8.687,2771,5.491,2779,6.902,2780,11.77,2781,7.823,2782,7.823,2783,7.823,2784,7.823,2785,7.823,2787,7.823,2793,6.343]],["keywords/874",[]],["title/875",[59,364.91,143,615.771,144,483.846]],["content/875",[]],["keywords/875",[]],["title/876",[59,364.91,145,367.472,346,537.333]],["content/876",[24,3.027,146,10.398,379,15.471]],["keywords/876",[]],["title/877",[201,590.284]],["content/877",[31,5.67,38,7.576,51,5.482,55,9.12,59,6.168,92,4.182,142,4.338,144,4.676,149,4.384,154,6.561,182,9.038,195,2.499,196,4.524,212,4.654,223,5.902,381,9.496,412,3.968,481,5.106,566,4.892,905,5.741,1056,9.4,1062,4.364,1485,6.706,1780,6.991,1850,10.642,2705,7.522,2727,9.496,2728,8.591,2730,8.99,2736,9.496,2801,15.815,2802,15.815,2803,15.815,2804,11.3]],["keywords/877",[]],["title/878",[148,350.825,177,389.201]],["content/878",[11,3.968,24,1.987,31,3.662,38,4.036,39,3.079,43,5.469,59,5.367,92,3.118,142,3.035,145,2.648,146,4.505,150,3.092,151,3.005,152,4.47,153,3.963,154,3.03,155,4.47,156,4.372,157,5.414,160,4.505,163,4.904,170,4.904,175,3.184,179,3.092,212,5.257,219,4.139,223,5.752,294,3.705,346,5.867,374,4.061,375,4.061,376,4.061,380,10.554,381,7.08,382,7.597,383,7.08,384,7.08,385,7.597,386,6.878,388,9.016,394,5.95,395,7.597,396,6.702,400,5.95,401,4.651,402,5.768,403,5.768,404,5.768,407,4.31,408,4.31,1309,4.139,2712,5.607,2721,6.277,2722,5.95,2723,6.405,2749,5.396,2788,6.405,2805,6.702,2806,6.702,2807,6.702,2808,6.702,2809,6.702,2810,6.702,2811,6.702,2812,6.702,2813,6.702,2814,6.702]],["keywords/878",[]],["title/879",[59,284.664,112,401.088,346,419.17,411,693.415,412,320.29]],["content/879",[24,3.068,379,15.68]],["keywords/879",[]],["title/880",[201,590.284]],["content/880",[31,5.23,154,6.556,412,6.402,905,9.262,1056,9.393,1311,14.884,1850,9.327,2794,12.876]],["keywords/880",[]],["title/881",[148,350.825,177,389.201]],["content/881",[11,3.785,24,2.384,59,4.78,142,2.567,150,3.963,151,3.852,157,4.58,160,5.774,163,6.285,170,6.285,175,4.081,179,3.963,212,4.447,223,5.715,294,4.748,346,4.962,374,5.205,375,5.205,376,5.205,380,10.487,388,10.818,394,7.626,400,7.626,401,5.961,402,7.393,403,7.393,404,7.393,407,5.524,408,5.524,414,9.737,1309,5.305,2712,7.187,2721,8.045,2722,7.626,2723,8.209,2749,6.916,2788,8.209,2805,8.59,2806,8.59,2807,8.59,2808,8.59,2809,8.59,2810,8.59,2811,8.59,2812,8.59,2813,8.59,2814,8.59,2815,10.798,2816,9.737,2817,9.737]],["keywords/881",[]],["title/882",[59,424.783,346,625.496]],["content/882",[24,3.068,416,15.68]],["keywords/882",[]],["title/883",[201,590.284]],["content/883",[31,5.23,59,5.69,154,6.556,905,9.262,1056,9.393,1850,9.327,1857,9.601,2794,12.876]],["keywords/883",[]],["title/884",[148,350.825,177,389.201]],["content/884",[11,3.728,24,2.397,59,4.805,142,2.587,150,3.992,151,3.881,157,4.614,160,5.817,163,6.332,170,6.332,175,4.111,179,3.992,212,4.48,223,5.746,294,4.784,346,4.999,374,5.244,375,5.244,376,5.244,380,10.543,388,10.875,394,7.683,400,7.683,401,6.006,402,7.449,403,7.449,404,7.449,407,5.566,408,5.566,418,9.81,1309,5.345,2712,7.241,2721,8.105,2722,7.683,2723,8.27,2749,6.968,2788,8.27,2805,8.654,2806,8.654,2807,8.654,2808,8.654,2809,8.654,2810,8.654,2811,8.654,2812,8.654,2813,8.654,2814,8.654,2816,9.81,2817,9.81,2818,9.81]],["keywords/884",[]],["title/885",[59,364.91,107,495.909,346,537.333]],["content/885",[24,3.027,107,8.248,416,15.471]],["keywords/885",[]],["title/886",[201,590.284]],["content/886",[31,5.23,59,5.69,154,6.556,905,9.262,1056,9.393,1850,9.327,1857,9.601,2794,12.876]],["keywords/886",[]],["title/887",[148,350.825,177,389.201]],["content/887",[11,3.699,24,2.347,59,5.488,107,4.48,142,2.512,150,3.877,151,3.768,157,4.48,160,5.648,163,6.148,170,6.148,175,3.992,179,3.877,212,4.35,223,5.627,294,4.645,346,6.929,374,5.092,375,5.092,376,5.092,377,9.525,380,10.324,388,10.65,394,7.461,396,8.403,400,7.461,401,5.831,402,7.233,403,7.233,404,7.233,407,5.404,408,5.404,425,8.877,1309,5.19,2712,7.031,2721,7.87,2722,7.461,2723,8.03,2749,6.765,2788,8.03,2805,8.403,2806,8.403,2807,8.403,2808,8.403,2809,8.403,2810,8.403,2811,8.403,2812,8.403,2813,8.403,2814,8.403,2818,9.525,2819,10.563]],["keywords/887",[]],["title/888",[874,764.225,1584,977.584]],["content/888",[]],["keywords/888",[]],["title/889",[1050,1069.432]],["content/889",[49,8.347,119,4.174,144,6.559,148,4.085,179,7.263,195,3.506,669,12.05,842,9.598,874,12.116,988,11.195,1050,10.41,1584,15.498,2820,14.293,2821,14.293,2822,11.384]],["keywords/889",[]],["title/890",[148,419.684]],["content/890",[0,1.625,10,4.713,11,3.244,24,1.991,51,6.204,64,4.344,177,3.657,179,4.693,206,5.192,227,4.983,490,5.292,492,12.177,516,6.891,630,6.089,874,7.181,876,11.104,917,7.912,1200,9.185,1584,9.185,2195,12.069,2696,11.533,2697,11.533,2820,11.533,2821,11.533,2822,9.185,2823,13.089,2824,10.441,2825,12.069,2826,19.463,2827,12.788,2828,12.788,2829,12.069,2830,11.533,2831,12.788]],["keywords/890",[]],["title/891",[1583,1055.827]],["content/891",[]],["keywords/891",[]],["title/892",[142,243.666,747,673.09,1485,608.117,2832,1024.781]],["content/892",[]],["keywords/892",[]],["title/893",[142,323.625,1485,807.671]],["content/893",[11,3.415,91,8.458,94,9.579,195,3.707,284,8.03,796,6.203,880,9.178,1058,14.086,1583,10.869,2146,14.554,2833,20.485,2834,15.116,2835,15.116]],["keywords/893",[]],["title/894",[148,419.684]],["content/894",[11,4.023,24,1.956,31,3.606,38,6.021,39,4.594,42,4.919,92,4.651,142,2.988,198,7.865,212,5.176,213,6.619,214,4.612,215,6.43,219,6.175,220,6.938,221,6.058,222,7.145,223,4.69,225,6.72,227,4.897,228,4.064,229,7.315,230,6.522,231,6.57,245,7.611,247,7.611,280,7.611,1583,8.15,2836,12.568,2837,12.568,2838,12.568]],["keywords/894",[]],["title/895",[1546,767.961,1583,758.192,2835,1054.402]],["content/895",[129,10.133,130,7.939,195,3.886,820,13.651,880,9.621,917,13.041,1020,12.214,1583,13.668,2834,15.845]],["keywords/895",[]],["title/896",[195,301.048,1792,824.216]],["content/896",[]],["keywords/896",[]],["title/897",[1705,946.169,2875,1227.403]],["content/897",[0,2.346,74,5.492,145,5.802,195,4.083,284,8.844,529,6.508,1792,11.179]],["keywords/897",[]],["title/898",[11,170.825,244,585.631,2876,1024.781,2877,736.049]],["content/898",[0,2.157,11,3.954,24,1.544,31,2.845,38,4.75,39,3.624,42,5.639,80,4.531,92,5.331,142,2.358,144,4.103,145,3.116,148,2.556,195,4.12,198,6.659,201,3.595,212,4.084,213,5.222,214,3.639,215,5.073,216,5.666,219,4.872,220,5.474,221,4.78,222,4.164,223,5.376,224,4.75,225,7.703,226,8.386,227,3.864,228,3.206,229,5.772,230,5.146,231,5.184,244,5.666,245,6.005,246,6.135,247,6.005,481,4.48,482,5.943,492,6.204,566,6.236,762,7.004,1738,5.884,1760,5.827,1792,6.005,2570,7.888,2875,8.942,2878,9.916]],["keywords/898",[]],["title/899",[11,136.981,244,469.604,2570,653.736,2877,590.221,2879,821.749,2880,526.331]],["content/899",[0,2.226,11,3.899,24,1.632,31,3.009,38,5.024,39,3.833,80,4.792,92,3.881,137,4.661,142,2.493,144,4.34,148,2.703,188,5.055,195,4.473,198,6.933,201,3.802,212,4.319,213,5.523,214,3.849,215,5.365,216,5.993,219,5.153,220,5.789,221,5.055,222,4.404,223,5.598,225,5.607,226,6.104,227,4.086,228,3.391,229,6.104,230,5.442,231,5.482,244,5.993,245,6.35,246,6.488,247,6.35,481,4.738,482,6.286,566,6.493,762,7.407,905,7.621,1738,6.223,1760,6.163,2570,8.343,2881,10.487]],["keywords/899",[]],["title/900",[11,170.825,2877,736.049,2880,656.373,2882,1024.781]],["content/900",[0,2.533,11,2.671,24,2.494,148,4.13,195,4.796,201,5.809,566,8.625,905,11.017,1665,13.466,1738,9.509,1760,11.709,2883,16.024]],["keywords/900",[]],["title/901",[11,170.825,2884,1024.781,2885,1024.781,2886,924.145]],["content/901",[0,2.037,11,2.671,24,2.494,40,7.009,64,4.044,107,6.796,112,8.762,145,5.036,148,4.13,195,4.796,201,5.809,258,10.391,412,5.627,1738,9.509,2887,13.913,2888,16.024]],["keywords/901",[]],["title/902",[11,170.825,2877,736.049,2880,656.373,2889,1024.781]],["content/902",[0,2.784,24,2.551,107,8.568,148,4.223,195,4.844,201,5.94,566,7.092,905,10.264,1738,9.723,1760,9.628,2890,16.385]],["keywords/902",[]],["title/903",[11,136.981,45,453.668,2880,526.331,2891,821.749,2892,821.749,2893,821.749]],["content/903",[0,1.817,24,2.225,39,6.773,55,12.546,67,7.764,148,3.684,195,4.099,201,5.182,206,5.804,222,6.003,281,12.506,284,10.422,468,6.532,905,7.262,1738,8.482,1760,8.4,2138,16.711,2894,14.294,2895,14.294,2896,14.294]],["keywords/903",[]],["title/904",[11,170.825,2880,656.373,2886,924.145,2897,1024.781]],["content/904",[0,2.015,11,2.642,24,2.467,40,6.933,64,4,107,6.722,112,8.702,145,4.981,148,4.085,195,4.377,201,5.746,258,10.278,284,10.337,1738,9.405,2887,13.762,2898,15.85]],["keywords/904",[]],["title/905",[11,136.981,2877,590.221,2880,526.331,2899,821.749,2900,821.749,2901,821.749]],["content/905",[0,2.401,11,2.455,24,2.293,40,6.442,148,3.796,195,4.866,201,5.339,284,9.05,525,9.94,718,10.085,740,10.085,905,7.483,1004,8.573,1200,10.578,1287,10.578,1738,8.74,2359,11.443,2902,14.728,2903,14.728,2904,14.728,2905,14.728,2906,14.728]],["keywords/905",[]],["title/906",[339,483.63,1792,824.216]],["content/906",[]],["keywords/906",[]],["title/907",[1705,946.169,2822,977.584]],["content/907",[0,2.207,11,2.894,144,7.184,201,6.294,284,8.317,339,6.169,502,8.216,529,6.12,595,13.198,1135,13.489,1350,10.012,2823,13.198]],["keywords/907",[]],["title/908",[2823,888.887,3750,1269.01,3751,1269.01]],["content/908",[0,2.577,11,2.315,24,2.162,64,4.589,148,3.579,201,5.034,346,8.357,492,8.687,557,9.808,796,6.729,933,16.398,1322,12.185,1738,8.24,1917,14.846,2822,9.973,2823,15.414,3752,15.071,3753,15.071,3754,15.071,3755,15.071,3756,15.071]],["keywords/908",[]],["title/909",[64,295.045,539,908.438,3757,1269.01]],["content/909",[1,5.954,13,6.94,31,3.946,64,5.409,81,7.863,142,3.27,195,3.042,206,5.584,227,7.041,235,5.312,284,6.589,297,7.19,340,8.329,539,14.04,566,5.954,652,7.19,905,9.181,1058,11.559,1068,9.034,1485,8.162,1527,7.932,1584,9.879,1738,8.162,3758,14.928,3759,14.928,3760,14.928,3761,14.928]],["keywords/909",[]],["title/910",[45,645.501,203,611.228,3762,1269.01]],["content/910",[0,1.911,11,3.51,24,2.34,64,4.83,148,3.875,201,8.037,203,7.858,284,7.201,340,9.103,492,9.405,620,8.834,1270,7.801,1722,13.556,2822,10.797,2823,14.551,2824,12.273,2825,14.187,3763,16.315]],["keywords/910",[]],["title/911",[45,751.411,3764,1477.222]],["content/911",[0,1.817,11,3.626,24,2.225,64,4.676,148,3.684,201,5.182,202,10.096,203,7.473,237,15.976,284,6.848,492,8.943,620,8.4,1663,10.867,1672,9.937,1722,12.891,1850,7.313,2822,10.267,2823,14.088,2824,11.671,3765,13.491,3766,15.514,3767,15.514,3768,15.514]],["keywords/911",[]],["title/912",[45,503.551,203,476.815,1270,473.351,3769,989.946,3770,912.103]],["content/912",[0,1.748,11,3.573,24,2.141,31,3.946,39,5.027,64,4.56,148,3.545,201,4.986,203,7.19,284,6.589,340,8.329,492,8.605,620,8.083,1189,8.083,1270,7.138,1350,12.361,1901,12.404,2286,12.981,2822,9.879,2823,13.738,2824,11.23,2829,12.981,3771,14.928,3772,14.928,3773,13.754,3774,13.754]],["keywords/912",[]],["title/913",[45,565.758,1350,590.981,3770,1024.781,3775,1112.241]],["content/913",[0,1.597,11,3.601,24,1.956,64,4.294,148,3.239,201,4.556,203,6.57,284,9.242,492,7.863,620,7.385,623,8.482,642,7.775,1189,9.999,1322,7.118,1350,12.458,1405,6.43,1850,6.43,2286,11.861,2735,10.261,2822,9.027,2823,12.936,2824,10.261,3765,11.861,3773,12.568,3774,12.568,3776,13.64,3777,13.64,3778,13.64,3779,13.64,3780,13.64,3781,13.64]],["keywords/913",[]],["title/914",[339,291.994,3001,821.749,3005,821.749,3782,741.051,3783,891.881,3784,891.881]],["content/914",[339,7.889,1178,12.444,1504,11.621]],["keywords/914",[]],["title/915",[22,372.067,31,261.671,3782,822.532,3785,989.946,3786,989.946]],["content/915",[339,7.889,1504,11.621,1586,18.112]],["keywords/915",[]],["title/916",[31,261.671,45,503.551,453,912.103,3782,822.532,3787,989.946]],["content/916",[31,5.506,193,9.959,235,7.412,339,6.819]],["keywords/916",[]],["title/917",[22,372.067,31,261.671,45,503.551,3782,822.532,3788,989.946]],["content/917",[107,8.14,339,7.889,1504,11.621]],["keywords/917",[]],["title/918",[214,429.117,479,498.413,1389,570.807]],["content/918",[]],["keywords/918",[]],["title/919",[3,1131.882]],["content/919",[0,2.398,11,3.334,24,1.587,25,8.884,31,2.924,43,7.385,64,2.572,142,2.424,145,3.204,205,4.412,479,4.345,490,4.218,539,7.92,578,10.503,620,5.99,622,6.695,651,6.695,677,5.627,852,8.109,903,6.98,904,14.073,1241,11.321,1360,8.85,1489,11.321,1492,12.084,2501,11.419,2594,8.109,2908,10.193,2909,13.254,2911,17.51,2912,15.544,2914,10.193,3789,15.952]],["keywords/919",[]],["title/920",[1337,448.166,2501,1057.49]],["content/920",[0,1.748,13,6.94,24,2.141,64,4.56,119,3.622,142,3.27,214,5.048,412,6.346,474,6.358,479,5.863,490,5.692,502,6.51,584,5.383,652,7.19,800,8.605,959,8.329,1005,11.943,1022,9.562,1042,8.705,1111,9.034,1337,4.529,1389,6.715,1828,11.559,2242,12.981,2298,8.919,2501,14.04,2916,18.071,2917,11.559,2918,13.754,2919,13.754]],["keywords/920",[]],["title/921",[177,389.201,860,1082.782]],["content/921",[0,1.425,11,2.622,24,2.828,46,6.937,48,5.275,64,2.83,119,5.187,136,8.921,149,4.35,154,4.032,177,3.206,214,5.773,490,4.64,492,7.015,578,8.757,583,6.408,745,5.474,814,6.351,860,8.921,871,7.92,903,13.486,904,12.842,1564,8.757,2064,10.112,2909,14.185,2912,10.112,2920,11.213,2921,11.213,2922,11.213,2923,11.213,2924,11.213,2925,11.213,2926,11.213,2927,11.213,2928,11.213,2929,11.213,2930,11.213,2931,11.213,2932,11.213,2933,14.185,2934,15.729,2935,11.213]],["keywords/921",[]],["title/922",[43,583.143,2038,1057.49]],["content/922",[0,2.163,1,5.44,24,3.003,29,7.118,43,8.858,44,10.561,49,6.619,50,6.021,51,6.097,64,5.451,74,3.739,119,3.31,432,5.743,433,6.826,459,6.57,479,5.357,583,7.182,584,4.919,862,12.44,1140,7.954,1495,15.345,2038,14.989,2059,12.018,2594,9.998,2936,19.291,2937,17.016]],["keywords/922",[]],["title/923",[214,376.105,652,535.719,1389,500.291,1828,861.186]],["content/923",[0,1.911,22,6.132,49,7.917,64,3.793,74,4.472,119,5.04,129,8.669,144,7.92,267,6.718,510,8.92,565,6.869,578,8.369,652,10.005,677,8.299,779,8.44,1389,7.338,1792,9.103,2501,11.679,2938,15.032,2957,15.032,3790,16.315,3791,16.315]],["keywords/923",[]],["title/924",[339,524.272,479,436.841,529,361.273]],["content/924",[0,1.799,1,7.971,2,6.911,10,5.217,24,2.204,25,5.72,55,8.163,74,4.211,111,7.294,235,5.467,479,8.724,490,5.858,496,8.856,578,7.881,1013,12.765,1145,9.422,1293,6.004,1389,6.911,1584,10.167,1946,11.896,2054,14.649,2334,12.765,2964,20.466,2965,14.155,2966,14.155]],["keywords/924",[]],["title/925",[1125,582.08,1415,740.008,2967,1054.402]],["content/925",[0,1.957,1,4.709,22,4.437,24,3.025,25,4.396,29,6.162,43,4.661,145,3.419,171,4.661,214,7.815,235,4.201,280,10.822,423,6.52,521,6.332,532,9.984,540,8.27,559,5.645,584,4.258,677,6.006,817,5.729,862,11.257,1125,9.674,1241,7.145,1415,12.299,1492,6.968,2148,7.813,2298,7.054,2594,8.654,2722,7.683,2911,9.142,2967,9.81,2968,15.397,2969,10.878,2970,10.878,2971,10.878,2972,10.878,2973,10.878,2974,15.397,2975,15.397,2976,10.878]],["keywords/925",[]],["title/926",[0,172.997,1389,664.462]],["content/926",[]],["keywords/926",[]],["title/927",[230,844.988]],["content/927",[0,2.037,130,7.241,144,6.631,194,9.054,214,5.881,479,8.494,734,10.142,788,7.823,874,8.997,988,11.318,1092,8.997,1241,10.525,1390,19.555,1493,13.913,2907,15.123]],["keywords/927",[]],["title/928",[842,985.992]],["content/928",[]],["keywords/928",[]],["title/929",[1268,1042.871]],["content/929",[]],["keywords/929",[]],["title/930",[11,194.903,2880,748.888,2985,1169.223]],["content/930",[0,2.059,39,5.922,45,11.076,48,7.622,423,9.711,671,13.616,842,12.149,1322,9.177,1485,9.615,1738,11.905,2730,12.89,2986,19.653,2987,14.611]],["keywords/930",[]],["title/931",[11,170.825,45,565.758,2880,656.373,2988,1024.781]],["content/931",[0,2.283,11,2.271,39,4.98,71,10.657,74,4.054,142,3.24,201,4.94,269,9.787,423,8.167,474,8.301,481,6.157,566,5.898,754,11.831,842,8.251,903,9.33,1027,8.95,1038,10.84,1062,5.263,1265,9.962,1485,8.086,1546,8.95,1736,10.84,1850,6.971,2986,19.259,2989,13.626,2990,13.626,2991,13.626,2992,13.626,2993,13.626]],["keywords/931",[]],["title/932",[11,136.981,45,453.668,203,429.581,2880,802.318,2994,821.749]],["content/932",[201,8.355,203,11.565,284,8.03,623,11.312,775,12.039,1270,11.481,1850,8.576,2995,15.116]],["keywords/932",[]],["title/933",[11,124.634,45,412.778,203,390.862,2880,478.892,2996,747.683,2997,747.683,2998,747.683]],["content/933",[39,5.61,65,8.694,201,5.564,203,10.139,284,9.291,623,13.089,844,10.359,946,12.211,1189,9.02,1265,11.222,1270,10.065,1322,8.694,1350,12.882,2735,12.531,2995,13.841,2999,15.349]],["keywords/933",[]],["title/934",[0,115.932,584,356.983,902,693.415,1242,624.539,1400,624.539]],["content/934",[0,2.495,24,1.732,29,6.303,39,4.067,64,2.808,119,2.93,171,8.861,459,5.817,559,5.775,584,4.355,620,6.539,670,10.035,807,9.662,902,11.894,1058,9.351,1086,10.145,1125,5.54,1242,14.687,1370,7.992,1400,12.389,1410,14.394,1844,7.619,1875,7.992,1993,7.619,1994,8.135,2002,8.29,2135,10.035,2142,10.035,2167,10.502,2279,10.502,2414,10.502,2431,10.035,3792,12.077,3793,12.077,3794,12.077,3795,19.637,3796,12.077,3797,16.98]],["keywords/934",[]],["title/935",[0,130.254,902,779.077,1242,701.692,1400,701.692]],["content/935",[]],["keywords/935",[]],["title/936",[584,637.257]],["content/936",[0,2.288,267,8.046,268,9.554,457,11.826,584,7.047,1182,13.989,1242,12.328,1400,12.328,3798,19.541]],["keywords/936",[]],["title/937",[13,686.774,1989,1143.784]],["content/937",[171,9.3,713,15.073,1140,11.684,1189,10.849,1242,12.641,1410,14.687]],["keywords/937",[]],["title/938",[25,657.965]],["content/938",[0,2.377,637,14.215,1242,12.803,1400,12.803,3799,20.294,3800,20.294]],["keywords/938",[]],["title/939",[1564,906.454]],["content/939",[11,3.097,24,1.82,74,2.235,115,4.871,140,7.399,145,3.674,148,1.936,171,6.148,199,7.58,474,6.633,484,5.597,490,5.938,502,3.555,620,4.415,788,5.707,1062,2.901,1090,5.396,1242,9.826,1243,10.15,1268,4.812,1293,4.958,1377,4.754,1410,14.779,1471,6.68,1564,10.797,1779,19.303,1890,6.523,1917,6.133,3212,7.512,3297,7.09,3801,8.153,3802,12.688,3803,8.153,3804,8.153,3805,8.153,3806,8.153,3807,8.153,3808,8.153,3809,8.153,3810,8.153,3811,8.153,3812,8.153,3813,8.153,3814,8.153,3815,8.153,3816,8.153,3817,8.153,3818,8.153,3819,8.153,3820,8.153,3821,8.153,3822,8.153,3823,8.153,3824,8.153,3825,8.153,3826,8.153,3827,8.153,3828,12.688,3829,8.153,3830,12.688,3831,8.153,3832,8.153,3833,8.153,3834,8.153,3835,8.153,3836,8.153]],["keywords/939",[]],["title/940",[0,148.613,747,767.961,1476,800.595]],["content/940",[0,2.812,67,9.104,81,9.627,222,7.039,747,14.531,1476,15.149,3837,12.039]],["keywords/940",[]],["title/941",[43,583.143,1110,1034.731]],["content/941",[]],["keywords/941",[]],["title/942",[43,500.95,81,508.765,222,490.994]],["content/942",[11,3.921,24,1.351,31,2.489,42,3.395,64,2.189,65,4.914,80,7.169,81,6.827,157,6.655,206,5.299,214,4.79,297,8.202,620,5.098,864,6.031,1062,7.228,1251,6.031,1309,4.263,1339,7.205,1663,9.922,1672,13.011,2046,6.902,3017,7.823,3018,8.675,3019,7.823,3020,8.188,3021,8.675,3022,10.14,3023,7.533,3024,8.675,3025,7.533,3026,6.902,3027,8.675,3028,8.675,3029,8.675,3030,7.823,3031,7.291,3032,7.291,3033,8.675,3034,7.291,3035,13.052,3036,17.453,3037,13.052,3038,10.968,3039,7.823,3040,6.74,3041,8.675,3042,7.533,3043,6.74,3044,6.74,3045,8.675,3046,12.318,3047,8.675]],["keywords/942",[]],["title/943",[87,930.473]],["content/943",[]],["keywords/943",[]],["title/944",[13,377.27,42,292.631,87,427.278,718,511.956,1403,379.873,3048,674.258,3049,747.683]],["content/944",[24,2.591,88,6.298,92,3.549,111,7.244,145,3.014,412,3.367,509,7.29,555,8.326,579,7.144,718,9.627,796,3.549,1225,10.204,1241,12.041,1249,10.924,1293,4.067,1339,5.294,1557,7.629,1564,5.338,1569,7.29,1760,5.635,2466,11.479,2536,7.629,2933,8.648,2977,8.326,3017,15.011,3048,8.648,3050,12.679,3051,12.679,3052,12.679,3053,9.589,3054,9.589,3055,9.589,3056,9.589,3057,9.589,3058,9.589,3059,9.589,3060,9.589,3061,9.589,3062,9.589,3063,9.589,3064,9.589,3065,9.589,3066,9.589,3067,9.589,3068,9.589,3069,9.589,3070,9.589,3071,9.589,3072,9.589,3073,9.589,3074,16.646,3075,9.589,3076,9.05,3077,14.059,3078,14.059,3079,9.589,3080,14.059]],["keywords/944",[]],["title/945",[87,469.604,91,414.643,137,365.251,746,554.593,3081,741.051,3082,713.501]],["content/945",[24,2.204,50,6.782,64,3.572,84,10.546,746,12.427,1303,8.089,1330,11.261,1569,10.761,2465,14.307,3050,12.765,3051,12.765,3081,16.605,3082,12.291,3083,14.155,3084,14.155,3085,14.155,3086,14.155,3087,14.155,3088,18.414,3089,18.414,3090,14.155,3091,14.155,3092,14.155,3093,14.155,3094,14.155,3095,14.155]],["keywords/945",[]],["title/946",[87,521.239,284,436.969,1293,386.855,1337,300.334,3096,912.103]],["content/946",[24,2.803,50,8.626,284,8.626,490,7.451,1337,7.042,1569,13.688,2048,14.324,3097,18.005]],["keywords/946",[]],["title/947",[87,362.018,88,416.083,91,319.649,92,234.43,724,421.655,1079,532.358,2536,503.965,3098,633.487,3099,571.277]],["content/947",[11,3.938,24,2.015,31,3.714,38,3.075,42,4.04,65,5.847,88,4.216,92,3.82,95,5.789,96,5.241,151,2.29,156,5.357,175,2.426,434,4.693,482,3.848,569,5.241,641,7.068,724,6.871,762,7.291,788,3.134,809,4.333,880,5.652,905,5.245,921,4.693,959,7.84,1007,5.241,1027,9.742,1050,4.216,1079,13.657,1090,4.611,1249,11.524,1309,3.154,1337,2.114,1569,4.88,1635,4.693,1968,9.309,2047,8.675,2120,10.3,2194,5.574,2466,5.241,2536,10.3,2917,5.395,3100,6.42,3101,6.42,3102,6.42,3103,6.42,3104,12.947,3105,6.42,3106,18.977,3107,6.42,3108,6.42,3109,9.743,3110,6.42,3111,6.42,3112,6.42,3113,6.42,3114,6.059,3115,6.42,3116,6.42,3117,10.323,3118,6.42,3119,6.42,3120,10.323,3121,6.42,3122,6.42,3123,6.059,3124,14.832,3125,6.42,3126,6.059,3127,6.42,3128,6.42,3129,6.42,3130,6.42,3131,10.323,3132,10.323,3133,6.42,3134,10.323,3135,6.42,3136,6.42,3137,6.42]],["keywords/947",[]],["title/948",[13,460.235,87,521.239,91,460.235,718,624.539,3138,912.103]],["content/948",[10,6.475,91,8.866,145,5.522,205,7.606,844,14.226,1122,12.031,1196,13.651,1339,11.637,3099,15.845]],["keywords/948",[]],["title/949",[228,378.07,1337,384.998,3837,839.794]],["content/949",[]],["keywords/949",[]],["title/950",[64,207.363,145,258.266,228,265.714,1225,429.581,1337,270.583,3837,590.221]],["content/950",[11,3.514,17,6.318,24,1.369,25,7.608,26,2.801,32,4.437,42,3.443,50,2.529,64,4.751,111,4.532,119,2.977,137,3.91,148,2.914,157,3.731,192,2.154,193,4.565,194,5.992,214,3.228,228,3.656,265,2.964,363,2.845,406,4.042,412,1.854,479,2.251,490,2.185,559,2.74,565,2.412,569,4.31,578,4.897,584,3.443,592,8.807,594,3.563,620,3.102,655,3.933,720,5.825,735,3.341,779,2.964,788,2.577,796,3.255,830,5.169,862,3.86,1004,3.073,1087,3.563,1098,5.45,1104,5.777,1125,7.293,1186,3.514,1189,3.102,1198,4.437,1225,2.76,1281,6.687,1287,3.792,1337,3.723,1339,6.242,1340,3.792,1379,3.514,1455,4.102,1456,3.933,1476,3.615,1492,5.634,1504,3.197,1513,7.637,1985,6.834,2118,6.997,2120,4.2,2245,5.28,2283,4.437,2289,3.86,2442,11.082,2465,4.102,2581,10.025,2585,11.45,3296,4.761,3298,7.181,3311,4.761,3324,4.761,3325,5.28,3326,7.932,3327,11.892,3328,4.761,3329,4.761,3837,13.107,3838,8.301,3839,5.73,3840,5.28,3841,5.73,3842,4.761,3843,5.73,3844,5.73,3845,5.73,3846,5.73,3847,9.546,3848,5.73,3849,5.28,3850,5.28,3851,4.983,3852,5.28,3853,5.28,3854,5.73,3855,5.73,3856,5.73,3857,4.983]],["keywords/950",[]],["title/951",[119,216.411,148,211.812,228,265.714,584,321.62,1337,270.583,3837,590.221]],["content/951",[148,3.875,194,8.697,228,6.189,502,7.114,584,7.491,779,11.824,1337,6.302,1339,8.299,1476,10.293,3332,11.428,3333,13.556,3837,15.922,3858,16.315,3859,16.315,3860,16.315,3861,16.315]],["keywords/951",[]],["title/952",[228,331.364,584,401.083,1093,815.256,1337,337.436]],["content/952",[16,9.87,50,6.467,64,3.407,228,6.88,340,8.175,468,8.156,490,5.586,584,7.827,592,9.937,720,10.304,779,10.022,1098,6.508,1337,7.006,1339,9.854,2298,8.754,3336,12.174,3337,14.573,3837,12.82,3862,14.652,3863,14.652]],["keywords/952",[]],["title/953",[67,635.08,228,378.07,1337,384.998]],["content/953",[]],["keywords/953",[]],["title/954",[64,207.363,67,446.345,145,258.266,228,265.714,1225,429.581,1337,270.583]],["content/954",[11,3.825,17,3.143,24,1.168,25,7.308,26,6.198,27,5.065,29,2.478,42,2.937,64,4.795,67,8.331,111,3.867,119,1.152,137,3.336,148,2.54,150,2.754,151,1.561,154,1.574,157,3.183,192,1.785,193,5.113,194,3.41,214,1.606,228,3.186,265,2.457,363,2.358,406,3.449,468,1.999,565,1.999,569,8.044,578,4.178,583,2.5,584,3.856,592,7.984,594,2.953,620,2.571,622,2.874,720,5.077,779,2.457,788,2.136,796,2.777,830,4.41,835,5.591,857,3.677,921,3.199,1004,2.547,1006,4.13,1098,4.75,1125,4.905,1186,2.912,1189,2.571,1225,2.287,1281,5.705,1287,3.143,1337,3.244,1339,4.143,1340,3.143,1455,3.4,1456,3.26,1476,2.996,1489,2.874,1492,7.481,1504,2.65,1513,3.799,1694,3.946,1844,2.996,1857,2.304,1875,3.143,1985,5.831,2090,3.946,2118,9.292,2194,6.516,2210,4.13,2283,3.677,2289,3.199,2442,9.816,2464,4.13,2466,3.572,2484,3.946,2581,7.49,2911,3.677,2977,3.799,3144,4.13,3291,4.376,3292,4.376,3293,4.376,3294,4.376,3296,3.946,3298,3.572,3308,4.376,3309,4.13,3310,4.13,3311,3.946,3326,3.946,3327,8.885,3328,3.946,3329,3.946,3838,7.082,3851,4.13,3857,4.13,3864,4.749,3865,4.749,3866,4.749,3867,4.749,3868,4.376,3869,12.677,3870,4.749,3871,4.749,3872,4.749,3873,10.694,3874,4.749,3875,4.749,3876,4.749,3877,8.145,3878,4.749,3879,4.749,3880,4.749,3881,4.749,3882,4.749,3883,4.749,3884,10.694,3885,8.145,3886,4.749,3887,4.376,3888,4.749,3889,4.749,3890,4.749,3891,4.749,3892,4.749,3893,4.749,3894,4.749,3895,4.749,3896,4.749,3897,4.749,3898,4.376]],["keywords/954",[]],["title/955",[67,446.345,119,216.411,148,211.812,228,265.714,584,321.62,1337,270.583]],["content/955",[67,11.995,148,3.835,194,6.76,228,4.811,339,5.287,502,7.041,584,5.823,779,11.767,1337,4.899,1339,10.497,1476,10.188,3332,14.456,3333,13.417,3899,16.148,3900,20.637,3901,16.148,3902,12.503,3903,14.878]],["keywords/955",[]],["title/956",[228,378.07,584,457.616,1337,384.998]],["content/956",[]],["keywords/956",[]],["title/957",[228,331.364,584,401.083,1093,815.256,1337,337.436]],["content/957",[50,6.652,64,3.504,67,9.877,228,6.556,339,4.934,340,8.409,468,8.309,490,5.746,509,10.556,584,7.936,592,7.73,720,9.369,779,10.21,1337,6.676,1339,10.039,2298,9.004,3023,12.056,3336,12.522,3337,11.337,3902,11.669,3904,15.071,3905,15.071]],["keywords/957",[]],["title/958",[119,307.919,228,378.07,3332,888.887]],["content/958",[119,4.742,228,5.822,779,10.11,1339,9.94,3332,13.688,3337,14.7,3339,16.993,3340,16.993,3906,19.541]],["keywords/958",[]],["title/959",[2062,1329.358]],["content/959",[]],["keywords/959",[]],["title/960",[3,1131.882]],["content/960",[22,4.915,24,1.876,25,4.869,49,6.345,50,7.92,51,5.844,64,3.04,119,3.173,206,4.891,214,4.422,222,5.059,265,6.765,351,12.089,483,12.048,490,4.986,502,5.702,565,7.555,652,8.643,688,8.808,779,6.765,959,10.012,1062,7.845,1241,7.913,1617,10.464,1672,14.121,1761,9.585,2420,11.371,3907,13.076,3908,20.486,3909,17.944,3910,13.076,3911,12.048,3912,13.076]],["keywords/960",[]],["title/961",[16,666.846,206,370.315,623,615.572,822,487.704,1339,503.551]],["content/961",[1,3.733,11,3.642,16,9.5,24,2.434,50,4.132,64,5.138,74,3.866,81,6.803,119,3.422,137,5.775,195,1.908,201,4.711,206,7.966,214,5.738,339,4.617,474,3.986,481,3.897,488,7.041,511,5.068,516,4.647,566,3.733,641,5.905,808,6.425,1062,7.578,1152,7.488,1339,9.607,1485,5.118,1660,7.247,1672,10.868,1682,7.247,1761,12.437,1971,7.488,3038,13.138,3039,7.777,3286,8.139,3911,15.633,3913,15.693,3914,16.968,3915,12.993,3916,14.102,3917,9.36,3918,9.36]],["keywords/961",[]],["title/962",[64,295.045,206,474.706,297,611.228]],["content/962",[]],["keywords/962",[]],["title/963",[64,188.672,822,399.788,899,649.191,1064,497.664,1074,439.376,1218,443.684,1471,427.278]],["content/963",[11,3.551,22,3.437,24,1.987,25,3.404,31,3.662,50,6.116,51,4.087,64,4.339,74,2.506,81,5.555,122,7.08,142,2.003,148,2.171,201,3.054,206,5.183,227,3.283,265,4.73,281,5.686,459,4.404,474,3.894,478,5.768,490,5.283,532,5.463,636,5.686,641,5.768,745,4.113,796,3.118,822,4.505,850,5.463,899,11.084,949,7.08,1062,6.641,1064,10.259,1074,4.951,1087,5.686,1121,7.987,1125,4.194,1159,5.533,1179,4.372,1218,7.575,1241,5.533,1376,5.332,1442,4.772,1564,4.69,1672,8.874,1752,5.856,1857,4.437,1962,7.951,1963,7.951,2062,6.878,2167,7.951,2298,8.278,2300,7.08,2600,7.315,3038,7.08,3915,8.425,3919,9.144,3920,9.144,3921,13.855,3922,9.144,3923,9.144,3924,9.144,3925,9.144,3926,9.144,3927,9.144,3928,9.144,3929,9.144,3930,9.144,3931,9.144,3932,9.144,3933,9.144,3934,9.144,3935,8.425]],["keywords/963",[]],["title/964",[474,629.105,3936,1284.551]],["content/964",[1,2.426,10,7.556,11,2.716,24,1.439,39,2.048,42,4.616,48,2.637,65,6.68,93,3.896,94,3.203,119,2.434,142,3.874,148,3.04,154,3.324,194,2.547,201,4.276,206,3.752,223,4.401,224,9.21,227,7.844,281,12.975,297,4.831,339,3.284,458,4.867,460,3.896,474,5.451,481,2.532,486,9.593,542,3.959,565,4.223,601,3.293,620,3.293,630,2.669,631,3.59,642,3.467,677,3.094,793,3.12,796,3.42,850,5.993,899,4.866,949,4.71,1014,3.681,1093,4.459,1105,4.459,1159,3.681,1178,7.648,1179,2.909,1196,4.354,1218,6.999,1319,5.289,1340,4.025,1403,2.847,1405,6.034,1438,3.12,1464,5.054,1485,3.326,1564,3.12,1583,3.634,1660,7.767,1761,4.459,1785,8.787,1857,2.952,2433,13.143,2978,5.605,3030,8.335,3765,5.289,3936,14.286,3937,6.083,3938,6.083,3939,6.083,3940,16.292,3941,10.031,3942,10.636,3943,11.131,3944,10.031,3945,6.083,3946,6.083,3947,6.083,3948,6.083,3949,6.083]],["keywords/964",[]],["title/965",[64,343.455,959,824.216]],["content/965",[11,3.781,13,2.04,16,1.303,17,12.016,18,4.713,24,0.733,31,2.292,42,4.334,45,2.599,47,0.584,53,1.656,56,0.687,64,1.495,65,4.255,74,1.203,81,2.049,117,0.801,119,0.681,137,0.41,145,1.862,175,0.348,191,2.667,193,0.478,195,0.394,201,1.21,202,1.826,204,0.716,206,1.642,208,0.716,214,0.949,222,2.488,224,1.599,227,1.576,231,1.351,281,3.177,297,0.482,363,2.179,366,1.656,398,7.806,432,0.814,433,0.968,445,17.029,458,0.938,474,0.426,495,2.805,516,0.96,557,1.826,671,0.775,732,3.816,740,2.285,762,2.357,864,2.32,905,3.01,1062,1.289,1074,0.542,1111,1.17,1189,7.203,1209,1.417,1252,0.716,1303,0.527,1304,0.775,1307,0.992,1339,0.984,1376,2.559,1401,1.617,1405,0.472,1522,1.607,1560,0.831,1564,0.513,1580,0.801,1672,1.797,1680,0.801,1682,1.497,1713,1.141,1761,2.655,1779,2.725,1782,1.417,1790,17.428,1885,0.831,1895,3.01,1999,0.801,2020,2.585,2038,15.451,2091,3.15,2098,2.585,2113,0.922,2359,0.716,2433,0.801,2511,9.482,2536,8.81,2644,2.44,2687,0.87,2749,3.015,2830,3.01,2877,0.662,3030,0.831,3038,2.172,3043,0.716,3052,0.831,3583,0.922,3585,0.922,3587,0.922,3589,0.922,3592,0.922,3702,0.922,3913,2.331,3935,1.782,3936,4.443,3940,3.337,3943,3.816,3950,1.001,3951,1.934,3952,1.934,3953,2.806,3954,1.934,3955,1.001,3956,5.11,3957,4.389,3958,2.806,3959,2.806,3960,2.806,3961,2.806,3962,2.806,3963,1.001,3964,2.806,3965,2.806,3966,2.806,3967,1.001,3968,2.806,3969,2.806,3970,2.806,3971,2.806,3972,4.389,3973,6.43,3974,4.389,3975,2.806,3976,2.806,3977,2.806,3978,2.806,3979,2.806,3980,2.806,3981,2.806,3982,4.389,3983,1.934,3984,1.934,3985,1.934,3986,13.002,3987,1.934,3988,3.622,3989,8.669,3990,8.669,3991,3.622,3992,3.622,3993,3.622,3994,3.622,3995,3.622,3996,2.806,3997,3.622,3998,1.934,3999,1.934,4000,2.806,4001,1.934,4002,1.934,4003,2.806,4004,2.806,4005,2.806,4006,21.584,4007,2.806,4008,2.806,4009,2.806,4010,2.806,4011,2.806,4012,2.806,4013,2.806,4014,2.806,4015,4.389,4016,4.389,4017,4.389,4018,4.389,4019,4.389,4020,2.806,4021,2.806,4022,2.806,4023,2.806,4024,13.304,4025,2.806,4026,2.806,4027,2.806,4028,2.806,4029,2.806,4030,2.806,4031,2.806,4032,2.806,4033,2.806,4034,1.001,4035,1.001,4036,1.934,4037,1.934,4038,1.934,4039,2.806,4040,1.001,4041,1.934,4042,1.001,4043,1.934,4044,5.789,4045,1.934,4046,1.934,4047,1.934,4048,1.001,4049,1.001,4050,1.001,4051,6.43,4052,1.001,4053,6.43,4054,6.43,4055,1.001,4056,1.001,4057,1.001,4058,1.001,4059,1.001,4060,1.001,4061,1.001,4062,1.001,4063,1.001,4064,1.001,4065,1.001,4066,1.001,4067,1.001,4068,1.001,4069,1.001,4070,1.001,4071,1.001,4072,1.001,4073,1.001,4074,1.001,4075,1.001,4076,9.628,4077,1.001,4078,1.001,4079,1.001,4080,1.001,4081,1.001,4082,1.001,4083,1.001,4084,1.001,4085,1.001,4086,1.001,4087,1.001,4088,1.001,4089,1.001,4090,1.001,4091,1.001,4092,1.001,4093,1.001,4094,1.001,4095,1.001,4096,1.001,4097,1.001,4098,1.001,4099,5.11,4100,1.001,4101,1.001,4102,1.001,4103,1.001,4104,1.001,4105,1.001,4106,1.934,4107,1.934,4108,10.904,4109,10.904,4110,1.934,4111,1.001,4112,1.001,4113,1.001,4114,1.001,4115,1.001,4116,1.001,4117,1.001,4118,1.001,4119,1.001,4120,1.001,4121,1.001,4122,1.001,4123,1.934,4124,1.001,4125,1.934,4126,1.001,4127,1.001,4128,1.001,4129,1.001,4130,1.001,4131,1.001,4132,1.001,4133,1.001,4134,1.001,4135,1.001,4136,1.001,4137,1.001,4138,1.001,4139,1.001,4140,1.001,4141,1.001,4142,1.001,4143,1.001,4144,1.001,4145,1.001,4146,1.001,4147,1.001,4148,1.001,4149,1.001,4150,1.001,4151,0.922,4152,1.001,4153,1.001,4154,1.001,4155,1.001,4156,1.001,4157,1.001,4158,2.806,4159,2.806,4160,1.001,4161,1.001,4162,1.001,4163,1.001]],["keywords/965",[]],["title/966",[179,429.117,1109,954.615,1583,758.192]],["content/966",[24,1.876,48,5.668,51,5.844,52,9.159,104,9.837,119,4.971,122,10.125,177,3.445,201,4.368,206,6.712,222,5.059,228,3.896,284,5.772,339,4.281,669,9.159,677,6.651,839,8.131,871,8.51,999,6.948,1062,6.385,1090,11.875,1109,13.498,1189,7.08,1209,9.585,1303,6.885,1350,6.948,1464,14.909,1583,14.259,1761,9.585,2127,12.048,3943,11.371,4164,13.076,4165,13.076,4166,13.076,4167,13.076,4168,13.076,4169,13.076]],["keywords/966",[]],["title/967",[84,1213.081]],["content/967",[11,2.301,24,1.101,51,3.432,52,5.378,64,3.484,88,4.647,106,6.677,206,2.872,302,5.776,486,3.938,507,5.271,559,3.671,565,10.185,641,15.262,864,4.918,1080,5.945,1103,6.677,1302,4.997,1442,4.007,1522,6.38,1738,8.193,1756,5.172,1761,5.628,1885,6.38,2283,5.945,3913,14.131,4151,7.074,4170,7.678,4171,7.678,4172,23.298,4173,7.678,4174,7.678,4175,7.678,4176,7.678,4177,7.678,4178,7.678,4179,12.105,4180,7.678,4181,7.678,4182,7.678,4183,7.678,4184,12.105,4185,7.678,4186,7.678,4187,7.678,4188,7.678,4189,7.678,4190,7.678,4191,14.984,4192,7.678,4193,7.678,4194,7.678,4195,7.678,4196,7.678,4197,7.678,4198,7.678,4199,7.678,4200,7.678,4201,12.105,4202,7.678,4203,7.678,4204,7.678,4205,7.678,4206,7.678,4207,7.678,4208,7.678,4209,7.678,4210,14.984,4211,12.105,4212,7.678,4213,7.678,4214,7.678,4215,7.678,4216,7.678,4217,7.678,4218,7.678,4219,7.678,4220,7.678]],["keywords/967",[]],["title/968",[222,490.994,228,378.07,1337,384.998]],["content/968",[]],["keywords/968",[]],["title/969",[64,207.363,145,258.266,222,345.079,228,265.714,1225,429.581,1337,270.583]],["content/969",[11,3.963,17,3.42,24,1.256,25,7.079,42,3.157,45,2.629,64,4.707,80,2.176,111,4.156,119,1.254,137,3.585,148,2.704,150,2.96,157,2.02,192,1.942,193,5.445,194,3.665,214,5.071,222,5.802,228,3.392,265,2.674,363,2.566,406,4.821,412,1.672,463,3.7,565,2.176,569,8.566,577,2.946,578,6.875,584,4.106,592,8.354,594,3.214,620,2.798,622,3.128,720,5.406,788,2.325,796,2.985,830,4.74,850,3.088,862,3.481,1004,2.772,1098,5.057,1125,5.223,1186,3.169,1189,2.798,1198,4.002,1225,2.489,1281,6.131,1287,3.42,1337,3.455,1339,4.453,1340,3.42,1376,3.014,1379,3.169,1455,3.7,1456,3.548,1476,3.26,1492,5.166,1498,3.788,1504,2.884,1513,7.003,1779,3.888,1844,5.522,1985,6.266,2118,6.416,2143,4.002,2194,4.134,2283,4.002,2289,3.481,2442,14.13,2484,4.294,2581,6.131,3022,3.7,3296,4.294,3297,4.494,3298,3.888,3309,4.494,3310,4.494,3311,4.294,3326,4.294,3327,9.461,3328,4.294,3329,4.294,3424,4.762,3439,4.762,3838,7.612,3840,4.762,3849,4.762,3850,4.762,3851,4.494,3852,4.762,3853,4.762,3857,4.494,3868,4.762,3898,4.762,4221,5.168,4222,5.168,4223,5.168,4224,5.168,4225,5.168,4226,8.754,4227,5.168,4228,11.387,4229,8.754,4230,5.168,4231,5.168,4232,5.168,4233,5.168,4234,5.168]],["keywords/969",[]],["title/970",[119,216.411,148,211.812,222,345.079,228,265.714,584,321.62,1337,270.583]],["content/970",[16,12.368,148,3.212,194,9.361,222,9.328,228,4.029,339,4.428,468,5.694,490,5.156,502,5.897,584,4.877,1337,4.103,1339,9.339,1456,9.283,3022,16.735,3332,12.861,3333,11.237,3902,14.216,3903,16.917,4235,13.524,4236,13.524,4237,13.524,4238,18.36,4239,13.524,4240,13.524,4241,18.36,4242,13.524]],["keywords/970",[]],["title/971",[228,378.07,584,457.616,1337,384.998]],["content/971",[]],["keywords/971",[]],["title/972",[228,331.364,584,401.083,1093,815.256,1337,337.436]],["content/972",[16,9.11,64,3.144,80,5.694,222,5.232,228,6.661,339,4.428,340,7.545,468,8.776,490,5.156,584,7.517,592,9.418,720,9.896,1337,6.783,1339,10.603,2298,8.08,3022,16.006,3023,10.819,3025,10.819,3336,11.237,3337,13.812,3902,14.216,4243,13.524,4244,13.524,4245,13.524,4246,13.524]],["keywords/972",[]],["title/973",[119,307.919,228,378.07,3332,888.887]],["content/973",[119,4.684,228,5.751,3022,16.496,3025,15.442,3332,13.521,3339,16.785,3340,16.785,4247,17.785,4248,19.303]],["keywords/973",[]],["title/974",[13,460.235,497,584.203,1225,476.815,1752,634.066,1989,766.496]],["content/974",[]],["keywords/974",[]],["title/975",[3,1131.882]],["content/975",[0,2.408,48,8.911,64,4.78,496,11.85,1225,9.902]],["keywords/975",[]],["title/976",[228,378.07,584,457.616,1337,384.998]],["content/976",[48,7.796,49,8.727,228,6.578,267,7.406,457,10.884,481,7.488,490,6.857,496,10.367,566,7.173,584,7.962,793,9.225,1337,6.698,4249,17.985]],["keywords/976",[]],["title/977",[222,490.994,1122,800.595,1246,567.189]],["content/977",[]],["keywords/977",[]],["title/978",[1104,893.965,1337,448.166]],["content/978",[10,6.398,142,4.128,214,6.372,222,7.29,265,9.748,584,6.795,592,9.665,796,6.425,1491,12.47,2403,13.811,3022,13.489,4250,16.385]],["keywords/978",[]],["title/979",[142,216.874,214,334.751,222,383.021,584,356.983,1491,655.118]],["content/979",[11,2.438,22,4.129,24,2.276,25,6.938,49,5.331,50,4.849,64,2.554,81,4.405,85,5.331,87,5.785,93,7.037,119,4.522,142,2.407,148,2.609,205,6.33,214,7.32,222,7.21,265,5.684,363,7.881,432,4.625,433,5.498,502,4.791,570,9.128,636,6.831,796,6.354,886,6.333,1068,6.648,1098,4.88,1142,7.27,1241,6.648,1337,3.333,1488,11.94,1491,7.27,1492,6.483,1496,11.94,1583,6.564,1785,7.542,2289,7.401,2581,7.695,2582,8.789,2583,12.698,2584,8.789,2586,8.789,2587,8.789,3022,7.865,3259,8.506,3842,13.188,4251,10.986,4252,13.802,4253,9.553,4254,10.986]],["keywords/979",[]],["title/980",[148,350.825,206,552.593]],["content/980",[11,3.276,24,1.277,31,4.63,40,8.596,42,4.895,50,2.327,51,2.356,64,3.156,65,8.587,80,2.219,81,4.632,137,4.731,193,7.868,221,2.341,222,3.444,224,5.1,227,5.908,284,5.1,423,9.087,486,8.441,590,15.333,592,4.566,641,3.326,900,3.326,1021,3.551,1189,4.82,1287,7.646,1747,3.864,1760,10.377,3026,3.864,3031,4.082,3032,4.082,3034,4.082,3040,3.774,3042,4.217,3043,3.774,3044,3.774,3942,13.672,4255,10.645,4256,4.857,4257,4.857,4258,4.082,4259,4.082,4260,4.082,4261,4.082,4262,6.892,4263,6.892,4264,6.892,4265,4.082,4266,4.082,4267,7.74,4268,7.74,4269,8.901,4270,8.901,4271,8.901,4272,8.901,4273,4.38,4274,4.082,4275,4.082,4276,4.584,4277,5.272,4278,16.666,4279,17.659,4280,4.857,4281,16.666,4282,14.309,4283,16.666,4284,10.645,4285,13.975,4286,10.645,4287,10.645,4288,8.201,4289,4.857]],["keywords/980",[]],["title/981",[1337,536.132]],["content/981",[0,2.202,11,3.709,17,7.388,24,0.995,29,3.62,31,1.834,42,2.502,64,1.613,80,2.921,81,5.617,85,3.366,119,1.683,137,2.841,157,8.036,206,4.176,214,2.346,221,3.081,222,2.684,228,3.326,406,2.937,559,3.317,592,7.187,676,5.085,677,3.529,724,4.254,864,4.443,900,4.376,915,4.762,1062,3.973,1090,7.388,1100,4.514,1107,6.756,1337,3.387,1485,3.793,1498,5.085,1663,7.82,1672,4.443,1745,4.966,1747,8.183,1752,7.151,2046,5.085,2465,7.992,3014,15.304,3019,5.764,3025,5.55,3026,5.085,3038,5.371,3039,5.764,3040,4.966,3044,4.966,3046,9.708,3258,6.032,3259,10.848,3298,8.398,3324,5.764,3370,6.032,3383,5.764,3887,6.391,3913,5.764,4247,6.391,4258,5.371,4259,5.371,4260,5.371,4261,5.371,4262,8.644,4263,10.848,4264,8.644,4265,5.371,4266,5.371,4274,5.371,4275,5.371,4290,6.937,4291,6.937,4292,6.937,4293,5.764,4294,6.937,4295,6.937,4296,6.937,4297,6.937,4298,6.937,4299,6.937,4300,6.937,4301,6.937,4302,6.391,4303,6.391,4304,6.391,4305,6.391,4306,6.391,4307,6.937,4308,6.937,4309,6.937,4310,6.937,4311,6.937,4312,6.937,4313,6.937,4314,6.937,4315,6.937,4316,6.937,4317,14.01]],["keywords/981",[]],["title/982",[67,635.08,1122,800.595,1246,567.189]],["content/982",[]],["keywords/982",[]],["title/983",[1104,893.965,1337,448.166]],["content/983",[10,6.398,67,9.43,142,4.128,214,6.372,265,9.748,584,6.795,592,9.665,796,6.425,1491,12.47,2403,13.811,2502,15.074,4250,16.385]],["keywords/983",[]],["title/984",[67,495.422,142,216.874,214,334.751,584,356.983,1491,655.118]],["content/984",[11,2.293,24,2.141,25,7.303,67,7.471,93,9.562,142,3.27,205,5.954,214,7.407,796,5.09,1098,6.63,1241,9.034,1488,14.754,1491,9.879,1492,8.81,1496,14.754,2289,10.056,2581,10.457,2582,11.943,2583,15.691,2584,11.943,2586,11.943,2587,11.943,3259,11.559,3842,16.296,4252,12.981,4253,12.981,4318,14.928]],["keywords/984",[]],["title/985",[148,350.825,206,552.593]],["content/985",[11,3.106,24,1.337,31,4.751,40,8.741,42,4.335,50,2.458,51,2.489,64,3.269,65,8.833,67,6.016,81,4.82,137,3.817,193,8.093,221,2.473,224,5.306,227,6.076,284,5.306,423,9.347,486,8.682,590,15.671,592,4.781,641,3.513,900,3.513,1021,3.751,1287,7.956,1747,4.082,1760,10.606,1857,2.702,3031,4.312,3032,4.312,3034,4.312,3040,3.986,3043,3.986,3044,3.986,3942,14.063,4255,11.076,4256,5.131,4257,5.131,4258,4.312,4259,4.312,4260,4.312,4261,4.312,4262,7.217,4263,7.217,4264,7.217,4265,4.312,4266,4.312,4268,8.106,4273,4.627,4274,4.312,4275,4.312,4276,4.842,4278,17.033,4279,18.048,4280,5.131,4281,17.033,4282,14.718,4283,17.033,4284,11.076,4285,14.418,4286,11.076,4287,11.076,4288,8.588,4289,5.131,4293,7.745,4319,5.569]],["keywords/985",[]],["title/986",[1337,536.132]],["content/986",[11,3.962,17,9.86,24,1.445,29,5.258,31,2.663,42,3.633,43,3.978,64,2.343,67,8.872,81,5.973,157,9.084,214,3.407,221,4.475,592,7.643,779,5.213,900,6.357,1747,7.386,2465,10.666,3019,8.372,3023,8.061,3026,7.386,3040,7.213,3043,7.213,3044,7.213,3298,11.208,3324,8.372,3370,8.762,3383,8.372,4258,7.802,4259,7.802,4260,7.802,4261,7.802,4262,11.537,4263,11.537,4264,11.537,4265,7.802,4266,7.802,4274,7.802,4275,7.802,4293,8.372,4302,9.284,4303,9.284,4304,9.284,4305,9.284,4306,9.284,4320,10.076,4321,20.904,4322,10.076]],["keywords/986",[]],["title/987",[1122,800.595,1246,567.189,3837,839.794]],["content/987",[]],["keywords/987",[]],["title/988",[1104,893.965,1337,448.166]],["content/988",[10,6.475,142,4.178,214,6.449,265,9.866,584,6.877,592,9.782,796,6.502,1491,12.62,2403,13.978,3837,12.62,4250,16.583]],["keywords/988",[]],["title/989",[142,216.874,214,334.751,584,356.983,1491,655.118,3837,655.118]],["content/989",[11,2.293,24,2.141,25,7.303,93,9.562,142,3.27,205,5.954,214,7.407,796,5.09,1098,6.63,1241,9.034,1488,14.754,1491,9.879,1492,8.81,1496,14.754,2289,10.056,2581,10.457,2582,11.943,2583,15.691,2584,11.943,2586,11.943,2587,11.943,3259,11.559,3837,9.879,3842,16.296,4252,12.981,4253,12.981,4323,14.928]],["keywords/989",[]],["title/990",[148,350.825,206,552.593]],["content/990",[11,3.063,24,0.964,31,4.749,40,8.797,42,5.984,50,1.682,51,1.703,64,3.19,65,8.661,74,3.761,81,3.618,137,2.754,193,8.283,221,1.692,227,4.925,260,12.229,284,5.485,306,6.615,339,2.955,351,5.326,423,9.566,445,15.44,486,8.885,592,3.449,641,2.404,900,2.404,1021,4.53,1747,2.793,1756,6.079,1760,10.797,1857,1.849,2887,9.941,3026,2.793,3031,2.95,3032,2.95,3034,2.95,3040,2.728,3043,2.728,3044,2.728,3837,4.45,3902,6.988,3942,14.392,4258,2.95,4259,2.95,4260,2.95,4261,2.95,4262,5.207,4263,5.207,4264,5.207,4265,2.95,4266,2.95,4267,3.313,4268,5.847,4273,3.166,4274,2.95,4275,2.95,4276,3.313,4278,17.34,4281,17.34,4282,15.063,4283,17.34,4293,5.587,4324,10.031,4325,8.315,4326,8.315,4327,8.315,4328,3.81,4329,3.511,4330,3.81,4331,3.81,4332,12.426,4333,9.025,4334,9.025,4335,9.025,4336,9.025,4337,9.025,4338,6.724,4339,9.025,4340,3.81,4341,3.81,4342,9.025]],["keywords/990",[]],["title/991",[1337,536.132]],["content/991",[11,3.883,24,1.327,31,2.445,42,6.77,64,2.151,81,5.604,137,5.724,221,4.109,228,2.756,268,4.523,306,12.349,339,5.516,351,9.942,584,3.336,592,7.17,900,5.836,1170,6.48,1337,2.806,1476,5.836,1747,6.781,3026,6.781,3031,7.163,3032,7.163,3034,7.163,3040,6.622,3042,7.4,3043,6.622,3044,6.622,3313,15.522,3383,7.686,3837,9.25,3902,13.044,4258,7.163,4259,7.163,4260,7.163,4261,7.163,4262,10.823,4263,10.823,4264,10.823,4265,7.163,4266,7.163,4267,8.044,4273,7.686,4274,7.163,4275,7.163,4324,15.522,4325,15.522,4326,15.522,4327,15.522,4329,8.523,4343,9.251,4344,9.251,4345,9.251,4346,13.978,4347,9.251]],["keywords/991",[]],["title/992",[0,104.448,64,207.363,119,216.411,1225,429.581,1293,348.533,2392,821.749]],["content/992",[0,2.452,64,3.171,81,5.469,87,7.182,103,10.261,119,5.445,177,3.594,194,8.766,406,5.776,479,5.357,510,7.458,524,5.556,539,9.765,559,6.522,671,10.561,724,8.365,745,6.135,1074,7.385,1076,9.998,1158,12.677,1225,10.808,1276,11.861,1293,8.182,1484,8.15,1645,10.561,1890,10.912,2393,11.334,3259,10.561,3286,11.861,4348,13.64,4349,13.64]],["keywords/992",[]]],"invertedIndex":[["",{"_index":11,"title":{"63":{"position":[[15,1]]},"91":{"position":[[27,1]]},"107":{"position":[[9,1],[26,1],[44,1]]},"137":{"position":[[9,1]]},"221":{"position":[[21,1]]},"424":{"position":[[42,1]]},"425":{"position":[[50,1]]},"426":{"position":[[25,1]]},"427":{"position":[[46,1]]},"428":{"position":[[28,1]]},"429":{"position":[[52,1]]},"430":{"position":[[23,1]]},"431":{"position":[[62,1]]},"470":{"position":[[30,1]]},"471":{"position":[[38,1]]},"472":{"position":[[43,1]]},"473":{"position":[[54,1]]},"474":{"position":[[92,1],[116,1],[141,1],[151,1]]},"572":{"position":[[15,1]]},"605":{"position":[[27,1]]},"621":{"position":[[9,1],[26,1],[44,1]]},"665":{"position":[[9,1]]},"734":{"position":[[21,1]]},"735":{"position":[[21,1]]},"898":{"position":[[42,1]]},"899":{"position":[[50,1]]},"900":{"position":[[25,1]]},"901":{"position":[[46,1]]},"902":{"position":[[28,1]]},"903":{"position":[[52,1]]},"904":{"position":[[23,1]]},"905":{"position":[[62,1]]},"930":{"position":[[30,1]]},"931":{"position":[[38,1]]},"932":{"position":[[43,1]]},"933":{"position":[[54,1]]}},"content":{"2":{"position":[[0,1]]},"3":{"position":[[0,1],[52,1],[67,1]]},"4":{"position":[[89,1],[671,1],[951,1],[992,2],[1052,2]]},"5":{"position":[[0,1],[70,1],[101,1],[112,1],[126,1],[184,1],[219,1]]},"7":{"position":[[0,1]]},"9":{"position":[[93,1],[95,1],[139,1],[179,1],[181,1],[190,1],[230,1],[266,1],[449,1],[498,1],[500,1],[502,1],[569,1],[610,1],[682,1],[726,1],[766,1],[768,1],[777,1],[817,1],[853,1],[1036,1],[1085,1],[1087,1],[1089,1],[1091,1]]},"10":{"position":[[118,1],[159,1],[161,1],[233,1],[277,1],[317,1],[319,1],[328,1],[368,1],[404,1],[587,1],[636,1],[638,1],[640,2],[643,1],[715,1],[761,1],[801,1],[803,1],[812,1],[854,1],[890,1],[951,1],[953,3],[957,1],[959,1],[961,1],[963,1],[965,1]]},"11":{"position":[[142,1],[183,1],[255,1],[299,1],[339,1],[341,1],[350,1],[390,1],[426,1],[609,1],[658,1],[660,1],[662,1],[664,1]]},"12":{"position":[[103,1],[105,1],[149,1],[189,1],[191,1],[200,1],[248,1],[284,1],[372,1],[374,2],[377,1],[379,1],[381,1],[465,1],[523,1],[595,1],[639,1],[679,1],[681,1],[690,1],[738,1],[774,1],[862,1],[864,2],[867,1],[869,1],[871,1],[873,1]]},"13":{"position":[[145,1],[186,1],[258,1],[302,1],[342,1],[344,1],[353,1],[401,1],[437,1],[525,1],[527,2],[530,1],[532,1],[534,1],[536,1]]},"15":{"position":[[90,1],[92,1],[213,2],[325,2],[328,1],[433,2],[436,1],[546,1],[548,2],[569,1],[579,1],[761,1],[778,2],[831,2],[842,1],[850,1],[901,2],[914,1],[965,1],[967,2],[985,1],[1043,1],[1045,1],[1047,1],[1049,1]]},"18":{"position":[[83,1],[85,1],[210,2],[322,2],[325,1],[430,2],[433,1],[543,1],[545,2],[566,1],[576,1],[758,1],[775,2],[828,2],[839,1],[847,1],[898,2],[911,1],[962,1],[964,2],[982,1],[1040,1],[1042,1],[1044,1],[1046,1]]},"20":{"position":[[109,1],[111,1],[143,1],[224,1],[226,1],[228,1]]},"22":{"position":[[92,1],[94,1],[104,1],[307,1],[325,1],[327,2],[345,1],[403,2],[414,1],[422,1],[473,2],[486,1],[537,1],[539,1],[541,1],[543,1],[609,1],[650,1],[852,1],[862,1],[1065,1],[1083,1],[1085,2],[1103,1],[1161,2],[1172,1],[1180,1],[1231,2],[1244,1],[1295,1],[1297,1],[1299,1],[1301,1],[1303,1]]},"23":{"position":[[92,1],[94,1],[104,1],[307,1],[325,1],[327,2],[345,1],[374,2],[385,1],[393,1],[444,2],[457,1],[508,1],[510,1],[512,1],[514,1],[756,1],[797,1],[999,1],[1009,1],[1212,1],[1230,1],[1232,2],[1250,1],[1279,2],[1290,1],[1298,1],[1349,2],[1362,1],[1413,1],[1415,1],[1417,1],[1419,1],[1421,1]]},"24":{"position":[[116,1],[157,1],[159,1],[361,1],[371,1],[574,1],[592,1],[594,2],[612,1],[670,2],[681,1],[689,1],[740,2],[753,1],[804,1],[806,1],[808,1],[810,2],[813,1],[1007,1],[1017,1],[1154,1],[1172,1],[1174,2],[1192,1],[1245,2],[1256,1],[1268,1],[1319,2],[1332,1],[1383,1],[1385,1],[1387,1],[1389,1],[1391,1],[1393,1]]},"25":{"position":[[151,1],[192,1],[394,1],[404,1],[607,1],[625,1],[627,2],[645,1],[703,2],[714,1],[722,1],[773,2],[786,1],[837,1],[839,1],[841,1],[843,1],[845,1]]},"26":{"position":[[100,1],[102,1],[112,1],[315,1],[333,1],[335,2],[353,1],[411,2],[422,1],[430,1],[481,2],[494,1],[545,1],[547,1],[549,1],[551,1],[647,1],[705,1],[715,1],[918,1],[936,1],[938,2],[956,1],[1014,2],[1025,1],[1033,1],[1084,2],[1097,1],[1148,1],[1150,1],[1152,1],[1154,1]]},"27":{"position":[[154,1],[195,1],[397,1],[407,1],[610,1],[628,1],[630,2],[648,1],[706,2],[717,1],[725,1],[776,2],[789,1],[840,1],[842,1],[844,1],[846,1],[848,1]]},"28":{"position":[[126,1],[201,1],[203,1],[268,1],[270,1],[316,1],[318,1],[320,2],[323,1],[388,1],[390,1],[454,2],[457,1],[521,1],[523,1],[525,1],[527,2],[544,2],[547,1]]},"29":{"position":[[161,1],[236,1],[301,1],[303,1],[1477,2],[1480,1],[2654,1],[2656,1],[2658,2],[2675,2],[2678,1]]},"31":{"position":[[138,1],[153,1],[155,3],[166,1],[183,1],[230,1],[232,1],[234,1],[251,1],[291,1],[311,1],[333,1],[356,1],[409,1],[446,1],[469,1],[492,1],[559,1],[561,3],[574,1],[576,3],[590,1],[594,2],[597,1],[614,1],[654,1],[674,1],[696,1],[719,1],[772,1],[809,1],[832,1],[855,1],[922,1],[924,3],[937,1],[939,3],[953,1],[957,2],[960,1],[977,1],[1017,1],[1037,1],[1059,1],[1082,1],[1135,1],[1172,1],[1195,1],[1218,1],[1286,1],[1288,3],[1301,1],[1303,3],[1317,1],[1321,2],[1324,1],[1341,1],[1381,1],[1401,1],[1423,1],[1446,1],[1499,1],[1536,1],[1559,1],[1582,1],[1650,1],[1652,3],[1665,1],[1667,3],[1681,1],[1685,2],[1688,2],[1700,1],[1718,1],[1725,1]]},"32":{"position":[[150,1],[165,1],[167,3],[178,1],[195,1],[240,1],[242,1],[259,1],[299,1],[319,1],[341,1],[364,1],[417,1],[454,1],[477,1],[500,1],[567,1],[569,3],[582,1],[584,3],[598,1],[602,2],[614,1],[632,1],[639,1]]},"33":{"position":[[98,1],[100,1],[225,2],[295,1],[310,1],[312,3],[323,1],[340,1],[388,1],[405,1],[423,1],[430,1]]},"34":{"position":[[155,1],[170,1],[172,3],[183,1],[200,1],[248,1],[265,1],[283,1],[290,1]]},"35":{"position":[[203,1],[218,1],[220,3],[231,1],[248,1],[298,1],[315,1],[333,1],[340,1]]},"36":{"position":[[207,1],[335,1]]},"38":{"position":[[90,1],[92,1],[102,1],[193,2],[211,1],[236,2],[247,1],[260,1],[281,2],[318,1],[320,1],[322,1],[386,1],[864,2],[1025,1],[1038,2],[1057,1],[1059,2],[1062,1],[1064,2],[1100,2],[1142,2],[1178,1],[1180,1],[1182,2],[1201,1]]},"39":{"position":[[125,1],[222,1],[606,2],[767,1],[780,2],[799,1],[801,2],[804,1],[806,2],[842,2],[884,2],[920,1],[922,1],[924,1],[926,2],[945,1]]},"40":{"position":[[122,1],[597,2],[758,1],[771,2],[790,1],[792,2],[795,1],[797,2],[833,2],[875,2],[911,1],[913,1],[915,2],[934,1]]},"41":{"position":[[128,1],[229,1],[553,1],[563,1],[653,2],[671,1],[769,1],[818,1],[831,2],[850,1],[852,2],[855,1],[857,2],[895,2],[906,1],[919,1],[940,2],[977,1],[979,1],[981,2],[998,2],[1001,1]]},"43":{"position":[[159,1],[161,1],[204,1],[206,1],[267,1],[388,1]]},"44":{"position":[[91,1],[93,1],[136,1],[138,1],[199,1],[320,1]]},"46":{"position":[[98,1],[100,1],[187,1],[189,1],[261,1],[385,1]]},"47":{"position":[[128,1],[143,1],[145,3],[156,1],[173,1],[223,1],[225,1],[227,1],[244,1],[283,1],[326,1],[358,1],[383,1],[385,1],[400,1],[402,2],[405,1],[422,1],[461,1],[504,1],[536,1],[562,1],[564,1],[579,1],[581,2],[584,1],[601,1],[640,1],[666,1],[698,1],[719,1],[721,2],[724,1],[726,2],[738,1],[756,1],[763,1]]},"48":{"position":[[148,1],[163,1],[165,3],[176,1],[193,1],[241,1],[243,1],[260,1],[299,1],[342,1],[374,1],[399,1],[401,1],[416,1],[418,2],[430,1],[448,1],[455,1]]},"49":{"position":[[108,1],[110,1],[165,2],[251,1],[266,1],[268,3],[279,1],[296,1],[347,1],[364,1],[382,1],[389,1]]},"50":{"position":[[153,1],[168,1],[170,3],[181,1],[198,1],[249,1],[266,1],[284,1],[291,1]]},"51":{"position":[[185,1],[313,1]]},"52":{"position":[[189,1],[204,1],[206,3],[217,1],[234,1],[287,1],[304,1],[322,1],[329,1]]},"53":{"position":[[7505,1]]},"54":{"position":[[2068,6]]},"58":{"position":[[23,1]]},"60":{"position":[[0,1],[11,1],[95,1],[169,1],[244,1],[314,1],[394,1],[419,1],[477,1],[534,1],[589,1]]},"62":{"position":[[13,1],[115,1],[213,1]]},"63":{"position":[[192,1]]},"64":{"position":[[0,1]]},"67":{"position":[[77,1]]},"69":{"position":[[182,1]]},"74":{"position":[[674,1]]},"86":{"position":[[89,1],[172,1],[262,1]]},"91":{"position":[[69,2],[131,2],[264,2],[318,2],[384,2],[434,2],[484,2]]},"102":{"position":[[1435,1],[1446,1],[1635,2],[1648,1],[1717,2],[1732,1],[1747,1],[1813,3],[1817,1],[1819,1]]},"106":{"position":[[87,1]]},"107":{"position":[[378,1],[397,1],[621,1],[1437,2]]},"108":{"position":[[219,1]]},"110":{"position":[[1,1],[67,1],[69,1],[84,1],[90,1],[101,1],[107,1],[109,1],[126,1],[128,1],[194,1],[196,1],[262,1],[264,1],[266,1],[276,1],[278,1],[288,1],[290,1],[301,1],[303,1],[314,1],[316,1],[329,2],[332,1],[344,1],[379,1],[391,2],[394,1],[396,1],[406,1],[408,1],[418,1],[420,1],[431,1],[433,1],[444,1],[446,1],[459,2],[462,1],[528,1],[530,1],[532,1],[534,1],[536,1],[554,1],[556,1],[574,1],[576,1],[598,1],[600,1],[602,1],[616,1],[636,1],[656,1],[658,1],[660,1],[671,1],[673,1],[683,1],[695,1],[697,1],[699,1],[701,1],[719,1],[721,1],[739,1],[741,1],[763,1],[765,1],[767,1],[796,1],[798,1],[822,1],[824,1],[826,1],[828,1],[830,1],[848,1],[850,1],[852,1],[870,1],[872,1],[874,1],[876,1],[884,1],[886,1],[888,1],[890,1],[908,1],[910,1],[912,1],[914,1],[916,1],[982,1],[1190,1],[1337,1]]},"112":{"position":[[514,1],[534,1],[536,2],[555,2],[558,2],[572,2],[575,2],[593,2],[596,2],[618,2],[637,2],[657,2],[672,2],[694,2],[697,2],[716,2],[719,1],[739,1],[881,1],[1367,1],[1387,1],[1389,2],[1408,2],[1411,1],[1424,1],[1426,2],[1440,2],[1450,1],[1452,2],[1470,2],[1473,1],[1486,1],[1488,2],[1507,2],[1510,1],[1523,1],[1525,2],[1544,3],[1551,1],[1560,1],[1579,2],[1582,1],[1584,1],[1597,1],[1611,2],[1614,1],[1616,1],[1629,1],[1650,2],[1653,1],[1662,1],[1664,2],[1683,2],[1686,1],[1688,1],[1701,1],[1703,1],[1723,1],[1725,1],[1727,1],[1729,1],[1731,1],[1751,1],[1753,1],[1755,2],[1774,2],[1777,1],[1779,2],[1793,2],[1796,1],[1798,2],[1816,2],[1819,1],[1821,2],[1840,2],[1843,1],[1845,2],[1864,2],[1867,1],[1886,2],[1889,1],[1903,3],[1910,1],[1931,2],[1934,2],[1953,2],[1956,1],[1976,1]]},"113":{"position":[[140,6],[161,6]]},"114":{"position":[[61,1]]},"115":{"position":[[886,6],[907,6],[1177,1]]},"117":{"position":[[609,1],[1025,4],[1185,4]]},"118":{"position":[[783,1]]},"121":{"position":[[21,2]]},"125":{"position":[[1,1],[16,1],[18,1],[63,1],[79,1],[81,1],[83,1],[103,1],[105,1],[107,1],[109,2],[114,1],[126,1],[128,1],[130,1],[141,1],[143,1],[145,1],[166,1],[168,1],[183,1],[185,1],[187,1],[189,1],[191,1],[193,1],[195,1],[204,1],[215,1],[217,1],[232,1],[234,1],[236,1],[238,1],[240,1],[254,1],[256,1],[258,1],[260,1],[280,1],[282,1],[288,1],[290,1],[292,1],[294,1],[306,1],[309,1],[311,1],[326,1],[328,1],[330,1],[332,1],[347,1],[349,1],[351,1],[353,1],[355,1],[357,1],[359,1],[361,1],[363,1],[365,1],[367,1],[369,1],[378,1],[389,1],[391,1],[393,1],[395,1],[397,1],[399,1],[410,1],[444,1],[446,1],[448,1],[463,1],[465,1],[484,1],[486,1],[505,1],[507,1],[509,1],[511,1],[522,1],[524,1],[526,1],[528,1],[547,1]]},"132":{"position":[[101,1],[111,1],[113,1],[126,1],[134,2],[149,1],[151,1],[162,1],[164,1],[174,1],[176,1],[189,1],[191,1],[208,1],[221,1],[223,1],[238,2],[261,1],[263,1],[274,1],[276,1],[294,1],[296,1],[309,1],[311,1],[328,1],[330,1],[341,2],[379,1],[392,1],[394,1],[412,1],[414,1],[427,1],[429,1],[440,1],[442,1],[444,1],[462,1],[464,1],[466,1],[481,1],[483,1],[506,1],[508,1],[510,1],[512,1],[530,1],[532,1],[554,1],[556,1],[571,1],[579,1],[581,1],[604,1],[606,1],[608,1],[610,1],[628,1],[647,1],[649,1],[665,1],[667,1],[690,1],[692,1],[710,1],[730,1],[732,1],[755,1],[777,1],[779,1],[802,1],[819,1],[821,1],[844,1],[868,1],[870,1],[893,1],[914,1],[916,1],[939,1],[986,1],[1000,1]]},"134":{"position":[[1460,3],[2085,2],[2180,2]]},"136":{"position":[[80,1]]},"139":{"position":[[210,1],[250,1],[252,1],[263,1],[265,1],[284,1],[291,1],[293,1],[295,1],[306,1],[308,1],[310,1],[345,1],[347,1],[349,1],[360,1],[362,1],[364,1],[391,1],[393,1],[395,1],[413,1],[415,1],[426,1],[428,1],[430,1],[432,1],[434,1],[454,1],[469,1],[471,1],[493,1],[495,1],[513,1],[515,1],[517,1],[519,1],[521,1],[556,1],[558,1],[560,1],[578,1],[580,1],[582,1],[584,1],[586,1],[621,1],[623,1],[625,1],[636,1],[638,1],[640,1],[672,1],[674,1],[676,1],[690,1],[692,1],[694,1],[729,1],[731,1],[747,1],[749,1],[751,1],[786,1],[788,1],[790,1],[792,1],[794,1],[796,1],[828,1],[830,1],[832,1],[846,1],[848,1],[850,1],[885,1],[887,1],[889,1],[929,1],[931,1],[933,1],[964,1],[966,1],[1000,1],[1033,1],[1067,1]]},"140":{"position":[[356,1],[1332,1]]},"146":{"position":[[191,1],[193,3],[439,3],[443,1],[523,1],[544,1],[558,1],[590,1],[610,1]]},"147":{"position":[[230,1],[250,1],[264,1],[296,1],[298,1],[305,1],[335,1],[337,1],[373,2],[381,1],[400,1],[493,1],[495,1],[728,1],[748,1],[762,1],[794,1],[796,1],[803,1],[833,1],[835,1],[877,2],[885,1],[904,1],[1000,1],[1002,1],[1119,1],[1139,1],[1141,1],[1203,1],[1235,1],[1237,1],[1244,1],[1263,1],[1272,1],[1309,1],[1325,1],[1400,1],[1402,1],[1465,1],[1502,3],[1506,1],[1508,1],[1510,1],[1512,1]]},"148":{"position":[[756,1]]},"154":{"position":[[1,1],[19,1],[21,1],[38,1],[40,1],[57,1],[59,1],[77,1],[92,1],[111,1],[125,1],[127,1],[140,1],[147,1],[154,1],[167,1],[169,1],[179,1],[181,1],[199,1],[201,1],[218,1],[220,1],[237,1],[239,1],[257,1],[259,1],[261,1],[263,1],[265,1],[272,1],[274,1],[276,1],[278,1],[287,2],[326,2],[329,1],[371,1],[373,1],[375,1],[405,1],[407,1],[409,1],[437,1],[439,1],[441,1],[453,1],[455,1],[457,1],[459,1],[461,1],[463,1],[493,1],[495,1],[497,1],[530,1],[532,1],[534,1],[536,1],[538,1],[540,1],[542,1],[544,1],[546,1],[548,2],[567,1],[569,1],[571,1],[573,1],[575,1],[597,1],[599,1],[601,1],[622,1],[624,1],[626,1],[663,2],[666,1],[668,1],[682,1],[698,1],[700,1],[702,1],[733,2],[750,1],[752,1],[754,1],[756,1],[774,1],[788,1],[790,1],[792,1],[809,1],[826,2],[832,1],[834,1],[836,1],[866,1],[868,1],[870,1],[872,1],[874,1],[891,1],[893,1],[895,1],[897,1],[899,1],[901,1],[903,1],[913,1],[915,1],[917,1],[919,1],[921,1],[933,1],[935,1],[937,1],[939,1],[941,1],[950,1],[952,1],[954,1],[956,1],[958,1],[960,2],[1018,2],[1021,1],[1023,1],[1025,1],[1027,1],[1029,1],[1031,1],[1033,1],[1068,1],[1070,1],[1072,1],[1074,1],[1084,1],[1086,2],[1092,1],[1094,1],[1096,1],[1098,1],[1100,1],[1102,1],[1104,1],[1106,1],[1108,1],[1110,1],[1112,1],[1114,1],[1116,1]]},"157":{"position":[[181,1],[367,1],[378,1],[567,2],[580,1],[649,2],[664,1],[679,1],[745,3],[749,1],[751,1],[797,1],[857,1],[1098,1],[1167,3]]},"158":{"position":[[130,1],[183,1],[185,1],[200,1],[202,1],[204,1],[222,1],[224,1],[234,2],[261,1],[263,1],[265,1],[267,1],[269,1],[271,1],[273,1],[275,1],[277,1],[292,1],[294,1],[296,1],[314,1],[316,1],[318,1],[320,1],[322,1],[331,1],[333,1],[351,1],[377,1],[388,1],[402,2],[430,1],[443,1],[475,1],[490,1],[492,1],[500,1],[510,1],[512,1],[521,1],[523,1],[525,1],[527,1],[529,1],[547,1],[549,1],[567,1],[569,1],[571,1],[591,1],[606,1],[608,1],[610,1],[625,1],[645,1],[647,1],[649,1],[651,1],[669,1],[671,1],[680,1],[689,1],[691,1],[693,1],[695,1],[697,1],[699,1],[701,1],[703,1],[705,1],[707,1],[725,1],[727,1],[729,1],[743,1],[745,1],[747,1],[760,1],[762,1],[764,1],[766,1],[775,1],[784,1],[786,1],[788,1],[790,1],[792,1],[794,1],[796,1],[798,1],[800,1],[802,1],[820,1],[822,1],[824,1],[826,1],[828,1],[830,1],[832,1],[834,1],[836,6],[843,1],[845,1],[847,1],[849,1],[867,1],[869,1],[871,1],[873,1],[875,1],[928,1],[1456,1],[1474,1],[1476,1],[1495,1],[1511,1],[1513,1],[1528,1],[1530,1],[1532,2],[1549,1],[1551,1],[1561,1],[1563,1],[1581,1],[1583,1],[1602,1],[1604,1],[1606,1],[1608,1],[1610,1],[1612,1],[1616,1],[1637,1],[1639,1],[1658,1],[1660,1],[1662,1],[1680,2],[1683,1],[1696,1],[1698,1],[1700,1],[1715,3],[1722,2],[1734,1],[1736,1],[1738,1],[1750,2],[1753,1],[1772,1],[1774,1],[1776,1],[1784,1],[1794,2],[1797,1],[1799,1],[1801,1],[1803,1],[1805,1],[1823,2],[1826,1],[1828,1],[1844,2],[1847,1],[1849,1],[1851,2],[1854,1],[1856,1],[1864,1],[1874,2],[1877,1],[1879,1],[1881,1],[1883,1],[1885,1],[1903,2],[1906,1],[1908,1],[1922,2],[1925,1],[1927,1],[1937,2],[1940,1],[1942,1],[1950,1],[1960,2],[1963,1],[1965,1],[1967,1],[1969,1],[1971,1],[1989,2],[1992,1],[1994,1],[2011,2],[2014,1],[2016,1],[2026,2],[2029,1],[2031,1],[2049,2],[2052,1],[2054,1],[2056,1],[2077,1],[2147,1],[2165,1],[2167,1],[2186,1],[2202,1],[2204,1],[2219,1],[2221,1],[2223,2],[2240,1],[2242,1],[2252,1],[2254,1],[2272,1],[2274,1],[2293,1],[2295,1],[2297,1],[2301,1],[2320,1],[2322,1],[2341,1],[2356,1],[2358,1],[2373,1],[2390,2],[2396,2],[2407,1],[2409,1],[2428,1],[2430,1],[2449,1],[2593,1],[2664,1]]},"160":{"position":[[1,1],[37,1],[39,1],[41,1],[43,1],[45,1],[58,1],[60,1],[73,1],[75,1],[77,1],[107,1],[109,1],[111,1],[130,1],[132,1],[134,1],[147,1],[149,1],[162,1],[164,1],[184,1],[186,1],[188,1],[190,1],[192,1],[209,1],[211,1],[215,1],[225,1],[247,1],[268,1],[270,1],[272,1],[274,1],[293,1],[295,1],[297,1],[299,1],[301,1],[304,1],[326,1],[328,1],[347,1],[349,1],[351,1],[353,1],[355,1],[357,1],[373,1],[380,1],[382,1],[384,1],[386,1],[388,1],[390,1],[398,1],[423,1],[425,1],[444,1],[446,1],[464,1],[466,1],[491,1],[493,1],[512,1],[514,1],[530,1],[532,1],[557,1],[559,1],[561,1],[563,1],[582,1],[584,3]]},"161":{"position":[[230,1],[279,1],[290,1],[292,1],[298,2],[303,1],[305,1],[316,1],[320,1],[337,1],[339,1],[354,1],[356,1],[368,1],[370,1],[381,1],[383,1],[394,1],[396,1],[398,1],[400,1],[406,4],[411,3],[422,1],[424,1],[435,1],[437,1],[452,1],[454,1],[456,1],[458,1],[460,1],[477,1],[479,1],[490,1],[492,1],[494,1],[499,2],[504,1],[506,1],[517,1]]},"162":{"position":[[0,1],[12,1],[14,1],[16,1],[18,1],[30,1],[34,1],[36,1],[71,1],[73,1],[75,1],[77,1],[79,1],[81,1],[88,1],[90,1],[112,1],[114,1],[116,1],[128,1],[130,1],[132,1],[134,1],[136,1],[138,1],[140,1],[148,1],[150,1],[152,1],[154,1],[176,1],[178,1],[180,1],[182,1],[184,1],[186,1],[188,1],[194,1],[196,1],[198,1],[200,1],[202,1],[211,1],[213,1],[218,1],[220,1],[222,1],[234,1],[236,1],[238,1],[240,1],[242,1],[244,1],[246,1],[254,1],[256,1],[258,1],[260,1],[262,1],[264,1],[275,1],[277,1],[279,1],[281,1],[283,1],[285,1],[287,1],[289,1],[301,1],[303,1],[305,1],[307,1],[309,1],[311,1],[316,1],[318,1],[320,1],[326,1],[333,2],[336,1],[343,1],[345,1],[367,1],[369,1],[374,2],[388,1],[393,1],[395,1],[397,1],[399,1],[401,1],[403,1],[405,1],[407,1],[409,1],[431,1],[433,1],[435,1],[437,1],[439,1],[450,1],[452,1],[464,1],[466,1],[468,1],[470,1],[472,1],[474,1],[476,1],[484,1],[486,1],[494,1],[496,1],[498,1],[500,1],[502,1],[511,1],[513,1],[518,1],[520,1],[522,1],[524,1],[526,1],[528,1],[530,1],[552,1],[554,1],[556,1],[570,1],[572,1],[584,1],[586,1],[588,1],[590,1],[592,1],[594,1],[596,1],[604,1],[606,1],[614,1],[616,1],[618,1],[620,1],[642,1],[644,1],[646,1],[648,1],[650,1],[652,1],[654,1],[656,1],[669,1],[671,1],[673,1],[679,1],[683,1],[685,1],[687,1],[694,1],[696,1],[718,1],[720,1],[722,1],[724,1],[726,1],[761,1],[763,1],[775,1]]},"163":{"position":[[1,1],[72,1],[74,1],[76,1],[94,1],[96,1],[115,1],[117,1],[138,1],[140,1],[142,1],[144,1],[157,1],[177,1],[196,1],[198,1],[200,1],[202,1],[208,1],[215,1],[217,1],[219,1],[221,1],[223,1],[225,1],[243,1],[245,1],[264,1],[266,1],[287,1],[289,1],[291,1],[293,1],[295,1],[297,1],[315,1],[317,1],[336,1],[338,1],[359,1],[361,1],[363,1],[365,1],[382,1],[403,1],[426,1],[428,1],[430,1],[432,1],[434,1],[436,1],[438,1],[440,1],[442,1],[444,1],[446,1],[448,1],[466,1],[468,1],[487,1],[489,1],[510,1],[512,1],[514,1],[516,1],[518,1],[520,1],[538,1],[540,1],[559,1],[561,1],[582,1],[584,1],[586,1],[588,1],[602,1],[615,1],[631,1],[633,1],[635,1],[637,1],[639,1],[657,1],[659,1],[661,1],[663,1],[665,1],[667,1],[685,1],[687,1],[706,1],[708,1],[729,1],[731,1],[733,1],[804,1]]},"189":{"position":[[142,1],[151,1],[157,1],[163,1]]},"214":{"position":[[56,3]]},"217":{"position":[[26,1],[28,1]]},"221":{"position":[[101,1],[188,1],[226,1]]},"223":{"position":[[65,1]]},"224":{"position":[[48,1],[56,1],[64,1],[72,1],[81,1],[90,1]]},"225":{"position":[[22,1]]},"226":{"position":[[13,1],[15,1],[23,1]]},"230":{"position":[[31,1]]},"231":{"position":[[51,1]]},"235":{"position":[[26,1],[28,1]]},"236":{"position":[[119,1],[145,1],[154,1],[219,3]]},"238":{"position":[[277,1],[376,1],[442,1]]},"240":{"position":[[23,1],[122,1],[187,1]]},"252":{"position":[[81,1],[88,1],[122,1],[234,1],[1120,1],[1150,1],[1169,1],[1192,1],[1210,1],[1233,1],[1346,1],[1939,1],[2061,1]]},"253":{"position":[[232,1],[480,1],[482,2]]},"258":{"position":[[70,1]]},"259":{"position":[[110,1],[129,1]]},"260":{"position":[[308,1],[310,1],[695,1],[797,1],[897,1],[923,1],[952,1],[982,1],[1013,1],[1062,1],[1129,1],[1226,1],[1283,1],[1318,1],[1999,1],[2069,56],[2126,1],[2157,1],[2159,1],[2161,1],[2163,1],[2209,1],[2211,1],[2213,1],[2215,1],[2231,1],[2233,56],[2290,1]]},"261":{"position":[[0,1],[2,1],[198,1],[240,1],[294,1]]},"263":{"position":[[288,1],[290,1],[372,1],[557,1],[559,1],[583,1],[604,1],[644,2],[690,2],[698,1],[801,1],[822,1],[832,1],[834,1],[886,1],[907,1],[947,1],[1144,1],[1146,1],[1236,1],[1238,1],[1266,1],[1291,1],[1331,2],[1377,2],[1385,1],[1488,1],[1513,1],[1523,1],[1525,1],[1577,1],[1602,1],[1642,1]]},"265":{"position":[[384,2],[412,1],[778,1],[780,2],[856,1]]},"267":{"position":[[218,1],[232,1],[278,1],[290,1]]},"268":{"position":[[189,1],[232,1],[340,1],[441,1]]},"270":{"position":[[112,1],[206,1],[273,1],[349,1],[498,1]]},"271":{"position":[[56,1],[68,1],[75,1],[169,1],[176,1]]},"272":{"position":[[116,1]]},"274":{"position":[[58,1],[151,1],[283,1]]},"277":{"position":[[0,1]]},"278":{"position":[[66,1],[93,1],[261,1],[322,1],[355,1],[436,1]]},"279":{"position":[[77,1]]},"281":{"position":[[1020,1],[1031,1],[1042,1],[1071,1],[1082,1],[1093,1]]},"289":{"position":[[420,1],[469,3],[473,1],[475,7],[504,7],[512,1],[514,1],[549,1],[683,3],[737,1],[739,36],[776,1],[778,3],[925,1],[987,1],[1173,1],[1275,1],[1298,1]]},"312":{"position":[[25,1]]},"313":{"position":[[498,1],[1223,1]]},"314":{"position":[[238,1],[889,1],[947,1],[1142,1]]},"316":{"position":[[225,1],[271,2],[417,1],[462,1],[535,1]]},"320":{"position":[[112,1]]},"327":{"position":[[266,1],[411,1],[498,1],[593,1],[878,2],[909,1],[985,2]]},"328":{"position":[[530,1],[573,1],[604,1],[652,1],[735,1],[920,1],[993,1],[1068,1],[1159,1],[1250,1],[1284,1],[1315,1]]},"330":{"position":[[402,1],[485,1]]},"332":{"position":[[153,1],[214,1]]},"333":{"position":[[171,1],[313,1]]},"341":{"position":[[17,1],[59,1],[117,1]]},"343":{"position":[[120,3],[310,3],[477,1],[485,1],[563,1],[598,2],[637,1],[805,1],[1368,1],[1520,1],[1535,1],[1560,1],[1624,1],[1687,1],[1757,1],[1759,1],[1812,1],[1845,1],[1929,1],[2050,1],[2279,2]]},"345":{"position":[[35,1]]},"351":{"position":[[58,1],[60,1],[104,1],[144,1],[146,1],[155,1],[195,1],[231,1],[414,1],[463,1],[465,1],[467,1],[525,1],[1127,2],[1163,1],[1165,2],[1184,1]]},"353":{"position":[[74,1],[146,1],[432,2],[468,1],[470,2],[473,1],[1005,2],[1041,1],[1043,2],[1046,1],[1324,2],[1360,1],[1362,1],[1364,2],[1383,1]]},"356":{"position":[[91,1],[693,2],[729,1],[731,2],[750,1]]},"359":{"position":[[59,1],[61,1],[105,1],[145,1],[147,1],[156,1],[204,1],[240,1],[328,1],[330,2],[333,1],[335,1],[337,1],[412,1],[832,2],[868,1],[870,2],[889,1]]},"362":{"position":[[94,1],[696,2],[732,1],[752,1]]},"366":{"position":[[58,1],[60,1],[70,1],[273,1],[291,1],[293,2],[311,1],[369,2],[380,1],[388,1],[439,2],[452,1],[503,1],[505,1],[507,1],[509,1],[566,1],[1132,2],[1278,2],[1453,2],[1623,1],[1625,2],[1640,1],[1642,2],[1661,1]]},"369":{"position":[[58,1],[60,1],[70,1],[273,1],[291,1],[293,2],[311,1],[340,2],[351,1],[359,1],[410,2],[423,1],[474,1],[476,1],[478,1],[480,1],[686,1],[1252,2],[1370,2],[1545,2],[1715,1],[1717,2],[1732,1],[1734,2],[1753,1]]},"371":{"position":[[73,1],[144,2],[724,2],[870,2],[1045,2],[1215,1],[1217,2],[1232,1],[1234,2],[1237,1],[1733,2],[1851,2],[2026,2],[2196,1],[2198,2],[2213,1],[2215,3],[2235,1]]},"374":{"position":[[103,1],[669,2],[787,2],[962,2],[1132,1],[1134,2],[1149,1],[1151,2],[1170,1]]},"377":{"position":[[59,1],[61,1],[71,1],[274,1],[292,1],[294,2],[312,1],[370,2],[381,1],[389,1],[440,2],[453,1],[504,1],[506,1],[508,1],[510,1],[597,1],[1163,2],[1309,2],[1484,2],[1654,1],[1656,2],[1671,1],[1673,2],[1692,1]]},"380":{"position":[[106,1],[644,2],[790,2],[965,2],[1135,1],[1137,2],[1152,1],[1154,2],[1173,1]]},"382":{"position":[[78,1],[149,2],[214,2],[262,2],[265,1],[316,2],[319,3],[339,1]]},"385":{"position":[[108,1],[242,2],[290,2],[293,1],[344,2],[347,2],[366,1]]},"389":{"position":[[58,1],[60,1],[70,1],[161,2],[179,1],[204,2],[215,1],[228,1],[249,2],[286,1],[288,1],[290,1],[346,1],[827,2],[1052,2],[1088,2],[1174,1],[1176,1],[1178,2],[1197,1]]},"392":{"position":[[107,1],[203,2],[574,2],[799,2],[835,2],[921,1],[923,1],[925,3],[945,1]]},"395":{"position":[[99,1],[562,2],[787,2],[823,2],[909,1],[911,1],[913,2],[932,1]]},"398":{"position":[[103,1],[592,2],[817,2],[853,2],[939,1],[941,1],[943,2],[962,1]]},"401":{"position":[[111,2],[138,1],[325,1]]},"404":{"position":[[153,2],[160,4]]},"405":{"position":[[0,1],[10,1],[254,1],[272,1],[274,2],[292,1],[350,2],[361,1],[373,1],[423,1],[425,1],[427,1]]},"409":{"position":[[450,1]]},"410":{"position":[[58,1],[60,1],[181,2],[293,2],[296,1],[401,2],[404,1],[514,1],[516,2],[537,1],[547,1],[729,1],[746,2],[799,2],[810,1],[818,1],[869,2],[882,1],[933,1],[935,2],[953,1],[1011,1],[1013,1],[1015,1],[1017,1],[1072,1],[1209,2],[1355,2],[1467,2],[1470,1],[1575,2],[1578,1],[1686,2],[1689,1],[1768,2],[1771,1],[1857,2],[1860,1],[1953,2],[1956,1],[2039,2],[2042,1],[2132,2],[2135,1],[2232,3],[2521,2],[2667,2],[2843,1],[2845,2],[3016,1],[3018,1],[3020,2],[3035,1],[3037,1],[3039,2],[3058,1]]},"412":{"position":[[71,1],[143,2],[211,2],[357,2],[469,2],[472,1],[577,2],[580,1],[688,2],[691,1],[770,2],[773,1],[859,2],[862,1],[955,2],[958,1],[1041,2],[1044,1],[1134,2],[1137,1],[1234,3],[1523,2],[1669,2],[1845,1],[1847,2],[2018,1],[2020,1],[2022,2],[2037,1],[2039,1],[2041,3],[2061,1]]},"415":{"position":[[59,1],[61,1],[186,2],[298,2],[301,1],[406,2],[409,1],[519,1],[521,2],[542,1],[552,1],[734,1],[751,2],[804,2],[815,1],[823,1],[874,2],[887,1],[938,1],[940,2],[958,1],[1016,1],[1018,1],[1020,1],[1022,1],[1098,1],[1235,2],[1385,2],[1497,2],[1500,1],[1605,2],[1608,1],[1716,2],[1719,1],[1798,2],[1801,1],[1887,2],[1890,1],[1983,2],[1986,1],[2069,2],[2072,1],[2162,2],[2165,1],[2262,3],[2551,2],[2697,2],[2872,2],[3042,1],[3044,2],[3059,1],[3061,1],[3063,2],[3082,1]]},"418":{"position":[[94,1],[231,2],[381,2],[493,2],[496,1],[601,2],[604,1],[712,2],[715,1],[794,2],[797,1],[883,2],[886,1],[979,2],[982,1],[1065,2],[1068,1],[1158,2],[1161,1],[1258,3],[1547,2],[1693,2],[1868,2],[2038,1],[2040,2],[2055,1],[2057,1],[2059,2],[2078,1]]},"421":{"position":[[58,1],[60,1],[92,1],[173,1],[175,1],[177,1],[255,1],[822,2],[968,2],[1143,2],[1313,1],[1315,2],[1330,1],[1332,2],[1351,1]]},"424":{"position":[[224,1],[233,1],[289,1],[492,1],[510,1],[512,2],[530,1],[588,2],[599,1],[607,1],[658,2],[671,1],[722,1],[724,1],[726,2]]},"425":{"position":[[286,1],[296,1],[499,1],[517,1],[519,2],[537,1],[595,2],[606,1],[618,1],[669,1],[671,1],[673,2]]},"426":{"position":[[159,1]]},"427":{"position":[[160,1]]},"430":{"position":[[144,1]]},"431":{"position":[[224,1]]},"435":{"position":[[32,1],[215,1],[339,1],[446,1],[572,1]]},"437":{"position":[[504,1],[557,1]]},"439":{"position":[[234,1],[328,1],[924,1],[940,1],[976,1],[1033,1],[1359,1]]},"445":{"position":[[39,1],[48,21],[89,22],[112,1],[114,1],[116,1],[118,1],[134,1],[136,1],[138,1],[165,1],[167,1],[183,1],[185,1],[187,1],[189,1],[191,1],[193,1],[195,1],[197,63]]},"455":{"position":[[44,1]]},"462":{"position":[[0,1]]},"463":{"position":[[0,1],[52,1],[67,1]]},"464":{"position":[[89,1],[671,1],[951,1],[992,2],[1052,2]]},"465":{"position":[[0,1],[70,1],[101,1],[112,1],[126,1],[184,1],[219,1]]},"467":{"position":[[0,1]]},"471":{"position":[[440,1]]},"477":{"position":[[84,1]]},"479":{"position":[[18,1],[24,1],[34,3],[38,1],[48,1],[83,1],[157,1],[228,1],[272,1],[312,1],[372,1],[457,1],[470,1],[512,1],[705,1],[761,1],[779,1]]},"484":{"position":[[0,1],[417,1],[492,1],[515,1],[517,2],[619,1],[649,1],[664,1],[666,2],[690,2],[745,1],[783,1],[792,3],[800,1],[809,3],[818,1],[851,1],[860,2],[870,1],[872,2],[875,1],[884,2],[901,2],[1095,1],[1206,1],[1223,1],[1252,1]]},"489":{"position":[[182,2],[220,2],[265,2],[297,2],[334,1]]},"495":{"position":[[318,1],[411,1],[605,1]]},"496":{"position":[[653,1]]},"518":{"position":[[0,6],[17,19],[57,1],[63,44],[108,4],[113,3],[117,4],[142,42],[185,4],[190,9]]},"519":{"position":[[0,2],[13,4],[24,15],[60,3]]},"520":{"position":[[0,1],[22,1],[29,34],[64,1],[78,7],[96,25],[122,1],[136,31],[168,1],[182,7],[200,22],[233,8]]},"521":{"position":[[10,5],[20,6],[31,16]]},"522":{"position":[[0,1],[10,22],[43,2],[54,12],[75,5],[91,2],[129,1],[205,5],[263,1],[279,10],[298,4],[313,3],[333,1],[343,3],[425,6],[568,8],[593,37],[631,5],[654,15],[683,11],[704,33],[857,21],[891,18],[921,3],[930,1],[939,15],[964,4],[980,3],[989,22],[1012,4],[1028,3],[1051,18],[1079,4],[1095,3],[1104,25],[1130,4],[1146,3],[1169,21],[1203,4],[1219,3],[1228,28],[1257,4],[1273,3],[1296,24],[1321,5],[1357,13],[1391,54],[1455,18],[1510,10],[1529,4],[1566,4],[1588,1],[1608,5],[1624,3],[1642,3],[1651,17],[1669,16],[1693,6],[1730,6],[1747,4],[1761,5]]},"538":{"position":[[93,1],[95,1],[139,1],[179,1],[181,1],[190,1],[230,1],[266,1],[449,1],[498,1],[500,1],[502,1],[569,1],[610,1],[682,1],[726,1],[766,1],[768,1],[777,1],[817,1],[853,1],[1036,1],[1085,1],[1087,1],[1089,1],[1091,1]]},"539":{"position":[[118,1],[159,1],[161,1],[233,1],[277,1],[317,1],[319,1],[328,1],[368,1],[404,1],[587,1],[636,1],[638,1],[640,2],[643,1],[715,1],[761,1],[801,1],[803,1],[812,1],[854,1],[890,1],[951,1],[953,3],[957,1],[959,1],[961,1],[963,1],[965,1]]},"540":{"position":[[142,1],[183,1],[255,1],[299,1],[339,1],[341,1],[350,1],[390,1],[426,1],[609,1],[658,1],[660,1],[662,1],[664,1]]},"541":{"position":[[103,1],[105,1],[149,1],[189,1],[191,1],[200,1],[248,1],[284,1],[372,1],[374,2],[377,1],[379,1],[381,1],[465,1],[523,1],[595,1],[639,1],[679,1],[681,1],[690,1],[738,1],[774,1],[862,1],[864,2],[867,1],[869,1],[871,1],[873,1]]},"542":{"position":[[145,1],[186,1],[258,1],[302,1],[342,1],[344,1],[353,1],[401,1],[437,1],[525,1],[527,2],[530,1],[532,1],[534,1],[536,1]]},"544":{"position":[[90,1],[92,1],[213,2],[325,2],[328,1],[433,2],[436,1],[546,1],[548,2],[569,1],[579,1],[761,1],[778,2],[831,2],[842,1],[850,1],[901,2],[914,1],[965,1],[967,2],[985,1],[1043,1],[1045,1],[1047,1],[1049,1]]},"547":{"position":[[83,1],[85,1],[210,2],[322,2],[325,1],[430,2],[433,1],[543,1],[545,2],[566,1],[576,1],[758,1],[775,2],[828,2],[839,1],[847,1],[898,2],[911,1],[962,1],[964,2],[982,1],[1040,1],[1042,1],[1044,1],[1046,1]]},"549":{"position":[[109,1],[111,1],[143,1],[224,1],[226,1],[228,1]]},"551":{"position":[[92,1],[94,1],[104,1],[307,1],[325,1],[327,2],[345,1],[403,2],[414,1],[422,1],[473,2],[486,1],[537,1],[539,1],[541,1],[543,1],[609,1],[650,1],[852,1],[862,1],[1065,1],[1083,1],[1085,2],[1103,1],[1161,2],[1172,1],[1180,1],[1231,2],[1244,1],[1295,1],[1297,1],[1299,1],[1301,1],[1303,1]]},"552":{"position":[[92,1],[94,1],[104,1],[307,1],[325,1],[327,2],[345,1],[374,2],[385,1],[393,1],[444,2],[457,1],[508,1],[510,1],[512,1],[514,1],[756,1],[797,1],[999,1],[1009,1],[1212,1],[1230,1],[1232,2],[1250,1],[1279,2],[1290,1],[1298,1],[1349,2],[1362,1],[1413,1],[1415,1],[1417,1],[1419,1],[1421,1]]},"553":{"position":[[116,1],[157,1],[159,1],[361,1],[371,1],[574,1],[592,1],[594,2],[612,1],[670,2],[681,1],[689,1],[740,2],[753,1],[804,1],[806,1],[808,1],[810,2],[813,1],[1007,1],[1017,1],[1154,1],[1172,1],[1174,2],[1192,1],[1245,2],[1256,1],[1268,1],[1319,2],[1332,1],[1383,1],[1385,1],[1387,1],[1389,1],[1391,1],[1393,1]]},"554":{"position":[[151,1],[192,1],[394,1],[404,1],[607,1],[625,1],[627,2],[645,1],[703,2],[714,1],[722,1],[773,2],[786,1],[837,1],[839,1],[841,1],[843,1],[845,1]]},"555":{"position":[[100,1],[102,1],[112,1],[315,1],[333,1],[335,2],[353,1],[411,2],[422,1],[430,1],[481,2],[494,1],[545,1],[547,1],[549,1],[551,1],[647,1],[705,1],[715,1],[918,1],[936,1],[938,2],[956,1],[1014,2],[1025,1],[1033,1],[1084,2],[1097,1],[1148,1],[1150,1],[1152,1],[1154,1]]},"556":{"position":[[154,1],[195,1],[397,1],[407,1],[610,1],[628,1],[630,2],[648,1],[706,2],[717,1],[725,1],[776,2],[789,1],[840,1],[842,1],[844,1],[846,1],[848,1]]},"557":{"position":[[126,1],[201,1],[203,1],[268,1],[270,1],[316,1],[318,1],[320,2],[323,1],[388,1],[390,1],[454,2],[457,1],[521,1],[523,1],[525,1],[527,2],[544,2],[547,1]]},"558":{"position":[[161,1],[236,1],[301,1],[303,1],[1477,2],[1480,1],[2654,1],[2656,1],[2658,2],[2675,2],[2678,1]]},"560":{"position":[[90,1],[92,1],[102,1],[193,2],[211,1],[236,2],[247,1],[260,1],[281,2],[318,1],[320,1],[322,1],[386,1],[864,2],[1025,1],[1038,2],[1057,1],[1059,2],[1062,1],[1064,2],[1100,2],[1142,2],[1178,1],[1180,1],[1182,2],[1201,1]]},"561":{"position":[[125,1],[222,1],[606,2],[767,1],[780,2],[799,1],[801,2],[804,1],[806,2],[842,2],[884,2],[920,1],[922,1],[924,1],[926,2],[945,1]]},"562":{"position":[[122,1],[597,2],[758,1],[771,2],[790,1],[792,2],[795,1],[797,2],[833,2],[875,2],[911,1],[913,1],[915,2],[934,1]]},"563":{"position":[[128,1],[229,1],[553,1],[563,1],[653,2],[671,1],[769,1],[818,1],[831,2],[850,1],[852,2],[855,1],[857,2],[895,2],[906,1],[919,1],[940,2],[977,1],[979,1],[981,2],[998,2],[1001,1]]},"567":{"position":[[23,1]]},"569":{"position":[[0,1],[11,1],[95,1],[169,1],[244,1],[314,1],[394,1],[419,1],[477,1],[534,1],[589,1]]},"571":{"position":[[13,1],[115,1],[213,1]]},"572":{"position":[[192,1]]},"573":{"position":[[0,1]]},"576":{"position":[[77,1]]},"578":{"position":[[182,1]]},"583":{"position":[[674,1]]},"593":{"position":[[89,1],[172,1],[262,1]]},"596":{"position":[[514,1],[534,1],[536,2],[555,2],[558,2],[572,2],[575,2],[593,2],[596,2],[618,2],[637,2],[657,2],[672,2],[694,2],[697,2],[716,2],[719,1],[739,1],[881,1],[1367,1],[1387,1],[1389,2],[1408,2],[1411,1],[1424,1],[1426,2],[1440,2],[1450,1],[1452,2],[1470,2],[1473,1],[1486,1],[1488,2],[1507,2],[1510,1],[1523,1],[1525,2],[1544,3],[1551,1],[1560,1],[1579,2],[1582,1],[1584,1],[1597,1],[1611,2],[1614,1],[1616,1],[1629,1],[1650,2],[1653,1],[1662,1],[1664,2],[1683,2],[1686,1],[1688,1],[1701,1],[1703,1],[1723,1],[1725,1],[1727,1],[1729,1],[1731,1],[1751,1],[1753,1],[1755,2],[1774,2],[1777,1],[1779,2],[1793,2],[1796,1],[1798,2],[1816,2],[1819,1],[1821,2],[1840,2],[1843,1],[1845,2],[1864,2],[1867,1],[1886,2],[1889,1],[1903,3],[1910,1],[1931,2],[1934,2],[1953,2],[1956,1],[1976,1]]},"597":{"position":[[140,6],[161,6]]},"598":{"position":[[61,1]]},"599":{"position":[[886,6],[907,6],[1177,1]]},"601":{"position":[[609,1],[1025,4],[1185,4]]},"605":{"position":[[69,2],[131,2],[264,2],[318,2],[384,2],[434,2],[484,2]]},"616":{"position":[[1447,1],[1458,1],[1647,2],[1660,1],[1729,2],[1744,1],[1759,1],[1825,3],[1829,1],[1831,1]]},"620":{"position":[[87,1]]},"621":{"position":[[379,1],[398,1],[622,1],[1440,2]]},"622":{"position":[[219,1]]},"624":{"position":[[1,1],[67,1],[69,1],[84,1],[90,1],[101,1],[107,1],[109,1],[126,1],[128,1],[194,1],[196,1],[262,1],[264,1],[266,1],[276,1],[278,1],[288,1],[290,1],[301,1],[303,1],[314,1],[316,1],[329,2],[332,1],[344,1],[379,1],[391,2],[394,1],[396,1],[406,1],[408,1],[418,1],[420,1],[431,1],[433,1],[444,1],[446,1],[459,2],[462,1],[528,1],[530,1],[532,1],[534,1],[536,1],[554,1],[556,1],[574,1],[576,1],[598,1],[600,1],[602,1],[616,1],[636,1],[656,1],[658,1],[660,1],[671,1],[673,1],[683,1],[695,1],[697,1],[699,1],[701,1],[719,1],[721,1],[739,1],[741,1],[763,1],[765,1],[767,1],[801,1],[803,1],[827,1],[829,1],[831,1],[833,1],[835,1],[853,1],[855,1],[857,1],[875,1],[877,1],[879,1],[881,1],[889,1],[891,1],[893,1],[895,1],[913,1],[915,1],[917,1],[919,1],[921,1],[987,1],[1195,1],[1342,1]]},"625":{"position":[[784,1]]},"628":{"position":[[21,2]]},"632":{"position":[[1,1],[16,1],[18,1],[63,1],[79,1],[81,1],[83,1],[103,1],[105,1],[107,1],[109,2],[114,1],[126,1],[128,1],[130,1],[141,1],[143,1],[145,1],[166,1],[168,1],[183,1],[185,1],[187,1],[189,1],[191,1],[193,1],[195,1],[204,1],[215,1],[217,1],[232,1],[234,1],[236,1],[238,1],[240,1],[254,1],[256,1],[258,1],[260,1],[280,1],[282,1],[288,1],[290,1],[292,1],[294,1],[306,1],[309,1],[311,1],[326,1],[328,1],[330,1],[332,1],[347,1],[349,1],[351,1],[353,1],[355,1],[357,1],[359,1],[361,1],[363,1],[365,1],[367,1],[369,1],[378,1],[389,1],[391,1],[393,1],[395,1],[397,1],[399,1],[410,1],[444,1],[446,1],[448,1],[463,1],[465,1],[484,1],[486,1],[505,1],[507,1],[509,1],[511,1],[522,1],[524,1],[526,1],[528,1],[547,1]]},"639":{"position":[[210,1],[250,1],[252,1],[263,1],[265,1],[284,1],[291,1],[293,1],[295,1],[306,1],[308,1],[310,1],[345,1],[347,1],[349,1],[360,1],[362,1],[364,1],[391,1],[393,1],[395,1],[413,1],[415,1],[426,1],[428,1],[430,1],[432,1],[434,1],[454,1],[469,1],[471,1],[493,1],[495,1],[513,1],[515,1],[517,1],[519,1],[521,1],[556,1],[558,1],[560,1],[578,1],[580,1],[582,1],[584,1],[586,1],[621,1],[623,1],[625,1],[636,1],[638,1],[640,1],[672,1],[674,1],[676,1],[690,1],[692,1],[694,1],[729,1],[731,1],[747,1],[749,1],[751,1],[786,1],[788,1],[790,1],[792,1],[794,1],[796,1],[828,1],[830,1],[832,1],[846,1],[848,1],[850,1],[885,1],[887,1],[889,1],[929,1],[931,1],[933,1],[964,1],[966,1],[1000,1],[1038,1],[1072,1]]},"640":{"position":[[356,1],[1332,1]]},"646":{"position":[[191,1],[193,3],[439,3],[443,1],[523,1],[544,1],[558,1],[590,1],[610,1]]},"647":{"position":[[230,1],[250,1],[264,1],[296,1],[298,1],[305,1],[335,1],[337,1],[373,2],[381,1],[400,1],[493,1],[495,1],[728,1],[748,1],[762,1],[794,1],[796,1],[803,1],[833,1],[835,1],[877,2],[885,1],[904,1],[1000,1],[1002,1],[1119,1],[1139,1],[1141,1],[1203,1],[1235,1],[1237,1],[1244,1],[1263,1],[1272,1],[1309,1],[1325,1],[1400,1],[1402,1],[1465,1],[1502,3],[1506,1],[1508,1],[1510,1],[1512,1]]},"648":{"position":[[756,1]]},"654":{"position":[[1,1],[19,1],[21,1],[38,1],[40,1],[57,1],[59,1],[77,1],[92,1],[111,1],[125,1],[127,1],[140,1],[147,1],[154,1],[167,1],[169,1],[179,1],[181,1],[199,1],[201,1],[218,1],[220,1],[237,1],[239,1],[257,1],[259,1],[261,1],[263,1],[265,1],[272,1],[274,1],[276,1],[278,1],[287,2],[326,2],[329,1],[371,1],[373,1],[375,1],[405,1],[407,1],[409,1],[437,1],[439,1],[441,1],[453,1],[455,1],[457,1],[459,1],[461,1],[463,1],[493,1],[495,1],[497,1],[530,1],[532,1],[534,1],[536,1],[538,1],[540,1],[542,1],[544,1],[546,1],[548,2],[567,1],[569,1],[571,1],[573,1],[575,1],[597,1],[599,1],[601,1],[622,1],[624,1],[626,1],[663,2],[666,1],[668,1],[682,1],[698,1],[700,1],[702,1],[733,2],[750,1],[752,1],[754,1],[756,1],[774,1],[788,1],[790,1],[792,1],[809,1],[826,2],[832,1],[834,1],[836,1],[871,1],[873,1],[875,1],[877,1],[879,1],[896,1],[898,1],[900,1],[902,1],[904,1],[906,1],[908,1],[918,1],[920,1],[922,1],[924,1],[926,1],[938,1],[940,1],[942,1],[944,1],[946,1],[955,1],[957,1],[959,1],[961,1],[963,1],[965,2],[1023,2],[1026,1],[1028,1],[1030,1],[1032,1],[1034,1],[1036,1],[1038,1],[1073,1],[1075,1],[1077,1],[1079,1],[1089,1],[1091,2],[1097,1],[1099,1],[1101,1],[1103,1],[1105,1],[1107,1],[1109,1],[1111,1],[1113,1],[1115,1],[1117,1],[1119,1],[1121,1]]},"657":{"position":[[181,1],[367,1],[378,1],[567,2],[580,1],[649,2],[664,1],[679,1],[745,3],[749,1],[751,1],[797,1],[857,1],[1098,1],[1167,3]]},"658":{"position":[[130,1],[183,1],[185,1],[200,1],[202,1],[204,1],[222,1],[224,1],[234,2],[261,1],[263,1],[265,1],[267,1],[269,1],[271,1],[273,1],[275,1],[277,1],[292,1],[294,1],[296,1],[314,1],[316,1],[318,1],[320,1],[322,1],[331,1],[333,1],[351,1],[377,1],[388,1],[402,2],[430,1],[443,1],[475,1],[490,1],[492,1],[500,1],[510,1],[512,1],[521,1],[523,1],[525,1],[527,1],[529,1],[547,1],[549,1],[567,1],[569,1],[571,1],[591,1],[606,1],[608,1],[610,1],[625,1],[645,1],[647,1],[649,1],[651,1],[669,1],[671,1],[680,1],[689,1],[691,1],[693,1],[695,1],[697,1],[699,1],[701,1],[703,1],[705,1],[707,1],[725,1],[727,1],[729,1],[743,1],[745,1],[747,1],[760,1],[762,1],[764,1],[766,1],[775,1],[784,1],[786,1],[788,1],[790,1],[792,1],[794,1],[796,1],[798,1],[800,1],[802,1],[820,1],[822,1],[824,1],[826,1],[828,1],[830,1],[832,1],[834,1],[836,6],[843,1],[845,1],[847,1],[849,1],[867,1],[869,1],[871,1],[873,1],[875,1],[928,1],[1456,1],[1474,1],[1476,1],[1495,1],[1511,1],[1513,1],[1528,1],[1530,1],[1532,2],[1549,1],[1551,1],[1561,1],[1563,1],[1581,1],[1583,1],[1602,1],[1604,1],[1606,1],[1608,1],[1610,1],[1612,1],[1616,1],[1637,1],[1639,1],[1658,1],[1660,1],[1662,1],[1680,2],[1683,1],[1696,1],[1698,1],[1700,1],[1715,3],[1722,2],[1734,1],[1736,1],[1738,1],[1750,2],[1753,1],[1772,1],[1774,1],[1776,1],[1784,1],[1794,2],[1797,1],[1799,1],[1801,1],[1803,1],[1805,1],[1823,2],[1826,1],[1828,1],[1844,2],[1847,1],[1849,1],[1851,2],[1854,1],[1856,1],[1864,1],[1874,2],[1877,1],[1879,1],[1881,1],[1883,1],[1885,1],[1903,2],[1906,1],[1908,1],[1922,2],[1925,1],[1927,1],[1937,2],[1940,1],[1942,1],[1950,1],[1960,2],[1963,1],[1965,1],[1967,1],[1969,1],[1971,1],[1989,2],[1992,1],[1994,1],[2011,2],[2014,1],[2016,1],[2026,2],[2029,1],[2031,1],[2049,2],[2052,1],[2054,1],[2056,1],[2077,1],[2147,1],[2165,1],[2167,1],[2186,1],[2202,1],[2204,1],[2219,1],[2221,1],[2223,2],[2240,1],[2242,1],[2252,1],[2254,1],[2272,1],[2274,1],[2293,1],[2295,1],[2297,1],[2301,1],[2320,1],[2322,1],[2341,1],[2356,1],[2358,1],[2373,1],[2390,2],[2396,2],[2407,1],[2409,1],[2428,1],[2430,1],[2449,1],[2593,1],[2664,1]]},"660":{"position":[[101,1],[111,1],[113,1],[126,1],[134,2],[149,1],[151,1],[162,1],[164,1],[174,1],[176,1],[189,1],[191,1],[208,1],[221,1],[223,1],[238,2],[261,1],[263,1],[274,1],[276,1],[294,1],[296,1],[309,1],[311,1],[328,1],[330,1],[341,2],[379,1],[392,1],[394,1],[412,1],[414,1],[427,1],[429,1],[440,1],[442,1],[444,1],[462,1],[464,1],[466,1],[481,1],[483,1],[506,1],[508,1],[510,1],[512,1],[530,1],[532,1],[554,1],[556,1],[571,1],[579,1],[581,1],[604,1],[606,1],[608,1],[610,1],[628,1],[647,1],[649,1],[665,1],[667,1],[690,1],[692,1],[710,1],[730,1],[732,1],[755,1],[777,1],[779,1],[802,1],[819,1],[821,1],[844,1],[868,1],[870,1],[893,1],[914,1],[916,1],[939,1],[986,1],[1000,1]]},"662":{"position":[[1460,3],[2085,2],[2180,2]]},"664":{"position":[[80,1]]},"667":{"position":[[1,1],[37,1],[39,1],[41,1],[43,1],[45,1],[58,1],[60,1],[73,1],[75,1],[77,1],[107,1],[109,1],[111,1],[130,1],[132,1],[134,1],[147,1],[149,1],[162,1],[164,1],[184,1],[186,1],[188,1],[190,1],[192,1],[209,1],[211,1],[215,1],[225,1],[247,1],[268,1],[270,1],[272,1],[274,1],[293,1],[295,1],[297,1],[299,1],[301,1],[304,1],[326,1],[328,1],[347,1],[349,1],[351,1],[353,1],[355,1],[357,1],[373,1],[380,1],[382,1],[384,1],[386,1],[388,1],[390,1],[398,1],[423,1],[425,1],[444,1],[446,1],[464,1],[466,1],[491,1],[493,1],[512,1],[514,1],[530,1],[532,1],[557,1],[559,1],[561,1],[563,1],[582,1],[584,3]]},"668":{"position":[[230,1],[279,1],[290,1],[292,1],[298,2],[303,1],[305,1],[316,1],[320,1],[337,1],[339,1],[354,1],[356,1],[368,1],[370,1],[381,1],[383,1],[394,1],[396,1],[398,1],[400,1],[406,4],[411,3],[422,1],[424,1],[435,1],[437,1],[452,1],[454,1],[456,1],[458,1],[460,1],[477,1],[479,1],[490,1],[492,1],[494,1],[499,2],[504,1],[506,1],[517,1]]},"669":{"position":[[1,1],[23,1],[25,1],[37,1],[39,1],[41,1],[50,1],[52,1],[57,1],[59,1],[61,1],[63,1],[65,1],[87,1],[89,1],[101,1],[105,1],[107,1],[142,1],[144,1],[146,1],[155,1],[157,1],[162,1],[164,1],[166,1],[168,1],[170,1],[172,1],[174,1],[181,1],[183,1],[205,1],[207,1],[209,1],[212,2],[215,1],[224,1],[226,1],[231,1],[233,1],[235,1],[247,1],[249,1],[251,1],[253,1],[255,1],[257,1],[259,1],[266,1],[268,1],[276,1],[278,1],[280,1],[282,1],[284,1],[306,1],[308,1],[310,1],[312,1],[314,1],[316,1],[318,1],[325,1],[327,1],[333,1],[335,1],[337,1],[339,1],[341,1],[343,1],[352,1],[354,1],[359,1],[361,1],[363,1],[375,1],[377,1],[379,1],[381,1],[383,1],[385,1],[387,1],[394,1],[396,1],[404,1],[406,1],[408,1],[410,1],[412,1],[427,1],[429,1],[431,1],[433,1],[435,1],[437,1],[439,1],[441,1],[453,1],[455,1],[457,1],[459,1],[481,1],[483,1],[489,1],[496,2],[499,1],[506,1],[508,1],[530,1],[532,1],[536,1],[538,1],[540,1],[542,1],[544,1],[546,1],[548,1],[550,1],[572,1],[574,1],[576,1],[578,1],[600,1],[602,1],[614,1],[616,1],[618,1],[620,1],[622,1],[624,1],[626,1],[634,1],[636,1],[644,1],[646,1],[648,1],[650,1],[652,1],[654,1],[663,1],[665,1],[670,1],[672,1],[674,1],[676,1],[678,1],[680,1],[682,1],[704,1],[706,1],[708,1],[710,1],[712,1],[714,1],[725,1],[727,1],[739,1],[741,1],[743,1],[745,1],[747,1],[749,1],[751,1],[759,1],[761,1],[769,1],[771,1],[773,1],[775,1],[777,1],[779,1],[781,1],[783,1],[788,1],[790,1],[792,1],[794,1],[796,1],[798,1],[800,1],[802,1],[804,1],[817,1],[819,1],[821,1],[824,2],[838,1],[843,1],[845,1],[847,1],[853,1],[857,1],[859,1],[861,1],[868,1],[870,1],[892,1],[894,1],[896,1],[898,1],[900,1],[911,1],[913,1],[915,1],[917,1],[952,1],[954,1],[956,1],[965,1],[967,1],[972,1],[974,1],[976,1],[988,1],[990,1],[1004,1],[1020,1],[1042,1]]},"670":{"position":[[1,1],[72,1],[74,1],[76,1],[94,1],[96,1],[115,1],[117,1],[138,1],[140,1],[142,1],[144,1],[157,1],[177,1],[196,1],[198,1],[200,1],[202,1],[208,1],[215,1],[217,1],[219,1],[221,1],[223,1],[225,1],[243,1],[245,1],[264,1],[266,1],[287,1],[289,1],[291,1],[293,1],[295,1],[297,1],[315,1],[317,1],[336,1],[338,1],[359,1],[361,1],[363,1],[365,1],[382,1],[403,1],[426,1],[428,1],[430,1],[432,1],[434,1],[436,1],[438,1],[440,1],[442,1],[444,1],[446,1],[448,1],[466,1],[468,1],[487,1],[489,1],[510,1],[512,1],[514,1],[516,1],[518,1],[520,1],[538,1],[540,1],[559,1],[561,1],[582,1],[584,1],[586,1],[588,1],[602,1],[615,1],[631,1],[633,1],[635,1],[637,1],[639,1],[657,1],[659,1],[661,1],[663,1],[665,1],[667,1],[685,1],[687,1],[706,1],[708,1],[729,1],[731,1],[733,1],[804,1]]},"709":{"position":[[56,3]]},"717":{"position":[[142,1],[149,1],[158,1],[164,1],[170,1]]},"725":{"position":[[56,1],[65,1],[74,1]]},"726":{"position":[[48,1],[56,1],[64,1],[72,1],[81,1],[90,1]]},"731":{"position":[[26,1],[28,1]]},"735":{"position":[[101,1],[188,1],[226,1]]},"739":{"position":[[26,1],[28,1]]},"740":{"position":[[119,1],[145,1],[154,1],[168,1],[222,3]]},"742":{"position":[[277,1],[376,1],[442,1]]},"744":{"position":[[23,1],[122,1],[187,1],[1130,1],[1171,1],[1229,1]]},"752":{"position":[[420,1],[469,3],[473,1],[475,7],[504,7],[512,1],[514,1],[549,1],[683,3],[737,1],[739,36],[776,1],[778,3],[925,1],[987,1],[1173,1],[1275,1],[1298,1]]},"777":{"position":[[465,2],[468,1],[485,2],[488,1],[533,1],[540,1],[556,1],[571,1],[577,1],[584,1],[595,1],[606,1],[614,1],[622,1],[629,1],[635,1],[645,1],[651,1],[664,1],[676,1],[686,1],[699,1],[717,1],[725,1],[734,1],[740,2],[743,1],[773,2],[776,1],[893,2],[896,1],[912,2],[915,1],[937,2],[940,1],[966,2],[969,1],[988,2],[991,1],[1011,2],[1014,1],[1048,2],[1051,1],[1077,2],[1080,1],[1189,2],[1230,1],[1434,2],[1437,1],[1479,2],[1482,1],[1530,2],[1533,1],[1636,3],[1656,3]]},"784":{"position":[[25,1]]},"785":{"position":[[498,1],[1223,1]]},"786":{"position":[[238,1],[889,1],[947,1],[1142,1]]},"788":{"position":[[224,2]]},"791":{"position":[[0,1],[213,1],[258,1],[365,1],[408,1],[472,1],[529,1],[600,1],[629,1],[656,1],[973,1],[1016,1],[1077,1],[1105,1],[1153,1],[1220,2],[1223,1],[1294,2],[1297,1],[1344,2],[1347,1],[1357,2],[1402,2],[1405,1],[1410,1],[1445,2],[1448,1],[1464,2],[1500,2],[1516,1],[1612,1],[1624,1],[1905,3],[7041,3],[7063,3],[7088,3],[7114,3],[7140,3],[7166,3],[7192,3],[7218,3],[7244,3],[7270,3],[7296,3],[7322,3],[7348,3],[7374,3],[7400,3],[7426,3],[7452,3],[7478,3],[7504,3],[7530,3],[7556,3],[7583,3],[7693,3],[7735,3],[7844,3],[7882,3],[8007,3],[8053,3],[8178,3],[8227,3],[8335,3],[8375,3],[8495,3],[8543,3],[8656,3],[8697,3],[8841,3],[8903,3],[9047,3],[9109,3],[9239,3],[9290,3],[9420,3],[9471,3],[9597,3],[9647,3],[9753,3],[9781,3],[9896,3],[9937,3],[10067,3],[10117,3],[10227,3],[10266,3],[10368,3],[10400,3],[10512,3],[10553,3],[10674,3],[10722,3],[10845,3],[10889,3],[11014,3],[11058,3],[11157,3],[11188,3],[11309,3],[11351,3],[11476,3],[11520,3],[11645,3],[11696,3],[11836,3],[11891,3],[12021,3],[12071,3],[12201,3],[12248,3],[12365,3],[12405,3],[12515,3],[12552,3],[12685,3],[12741,3],[12869,3],[12919,3],[13037,3],[13080,3],[13135,3],[13189,3],[13232,3],[13271,3],[13318,3],[13368,3],[13409,3],[13534,3],[13576,3],[13673,3],[13736,3],[13788,3],[13840,3],[13891,3],[13920,3],[13962,3],[14013,3],[14053,3],[14086,3],[14128,3],[14364,1],[14519,1],[15106,3],[15244,3],[15351,3],[15383,3],[15502,3],[15649,3],[15742,2],[15775,2],[15796,2],[15846,2],[16351,3],[16407,3],[16458,3],[16509,3],[16640,3],[16773,3],[16909,3],[17142,3],[17183,3],[17221,3],[17278,3],[17329,3],[17373,3],[17427,3],[17482,3],[22759,3],[22781,3],[22806,3],[22832,3],[22858,3],[22884,3],[22910,3],[22936,3],[22962,3],[22988,3],[23014,3],[23040,3],[23066,3],[23092,3],[23118,3],[23144,3],[23170,3],[23196,3],[23222,3],[23248,3],[23274,3],[23301,3],[23411,3],[23453,3],[23562,3],[23600,3],[23725,3],[23771,3],[23896,3],[23945,3],[24053,3],[24093,3],[24213,3],[24261,3],[24374,3],[24415,3],[24559,3],[24621,3],[24765,3],[24827,3],[24957,3],[25008,3],[25138,3],[25189,3],[25315,3],[25365,3],[25471,3],[25499,3],[25614,3],[25655,3],[25785,3],[25835,3],[25945,3],[25984,3],[26086,3],[26118,3],[26230,3],[26271,3],[26392,3],[26440,3],[26563,3],[26607,3],[26732,3],[26776,3],[26875,3],[26906,3],[27027,3],[27069,3],[27194,3],[27245,3],[27385,3],[27440,3],[27570,3],[27620,3],[27750,3],[27797,3],[27914,3],[27954,3],[28064,3],[28101,3],[28234,3],[28290,3],[28418,3],[28468,3],[28586,3],[28629,3],[28684,3],[28738,3],[28781,3],[28820,3],[28867,3],[28917,3],[28958,3],[29083,3],[29125,3],[29222,3],[29285,3],[29337,3],[29389,3],[29440,3],[29469,3],[29511,3],[29562,3],[29602,3],[29635,3],[29677,3],[29913,1],[30068,1],[30655,3],[30793,3],[30900,3],[30932,3],[31051,3],[31205,3],[31261,3],[31312,3],[31363,3],[31494,3],[31627,3],[31763,3],[31996,3],[32037,3],[32075,3],[32132,3],[32183,3],[32227,3],[32281,3],[32336,3]]},"793":{"position":[[225,1],[271,2],[417,1],[462,1],[535,1]]},"797":{"position":[[112,1]]},"800":{"position":[[402,1],[485,1]]},"802":{"position":[[153,1],[214,1]]},"803":{"position":[[171,1],[313,1]]},"808":{"position":[[266,1],[411,1],[498,1],[593,1]]},"809":{"position":[[550,1],[593,1],[624,1],[672,1],[755,1],[940,1],[1013,1],[1088,1],[1179,1],[1270,1],[1304,1],[1335,1]]},"812":{"position":[[139,1]]},"813":{"position":[[18,1],[111,1],[126,1]]},"814":{"position":[[40,1]]},"815":{"position":[[16,1],[40,1]]},"817":{"position":[[120,3],[310,3],[495,1],[503,1],[581,1],[616,2],[655,1],[823,1],[1386,1],[1538,1],[1553,1],[1578,1],[1642,1],[1705,1],[1775,1],[1777,1],[1830,1],[1863,1],[1947,1],[2068,1],[2332,2],[2359,1]]},"818":{"position":[[71,1]]},"819":{"position":[[35,1]]},"825":{"position":[[58,1],[60,1],[104,1],[144,1],[146,1],[155,1],[195,1],[231,1],[414,1],[463,1],[465,1],[467,1],[525,1],[1127,2],[1163,1],[1165,2],[1184,1]]},"827":{"position":[[74,1],[146,1],[432,2],[468,1],[470,2],[473,1],[1005,2],[1041,1],[1043,2],[1046,1],[1324,2],[1360,1],[1362,1],[1364,2],[1383,1]]},"830":{"position":[[91,1],[693,2],[729,1],[731,2],[750,1]]},"833":{"position":[[59,1],[61,1],[105,1],[145,1],[147,1],[156,1],[204,1],[240,1],[328,1],[330,2],[333,1],[335,1],[337,1],[412,1],[832,2],[868,1],[870,2],[889,1]]},"836":{"position":[[94,1],[696,2],[732,1],[752,1]]},"840":{"position":[[58,1],[60,1],[70,1],[273,1],[291,1],[293,2],[311,1],[369,2],[380,1],[388,1],[439,2],[452,1],[503,1],[505,1],[507,1],[509,1],[566,1],[1132,2],[1278,2],[1453,2],[1623,1],[1625,2],[1640,1],[1642,2],[1661,1]]},"843":{"position":[[58,1],[60,1],[70,1],[273,1],[291,1],[293,2],[311,1],[340,2],[351,1],[359,1],[410,2],[423,1],[474,1],[476,1],[478,1],[480,1],[686,1],[1252,2],[1370,2],[1545,2],[1715,1],[1717,2],[1732,1],[1734,2],[1753,1]]},"845":{"position":[[73,1],[144,2],[724,2],[870,2],[1045,2],[1215,1],[1217,2],[1232,1],[1234,2],[1237,1],[1733,2],[1851,2],[2026,2],[2196,1],[2198,2],[2213,1],[2215,3],[2235,1]]},"848":{"position":[[103,1],[669,2],[787,2],[962,2],[1132,1],[1134,2],[1149,1],[1151,2],[1170,1]]},"851":{"position":[[59,1],[61,1],[71,1],[274,1],[292,1],[294,2],[312,1],[370,2],[381,1],[389,1],[440,2],[453,1],[504,1],[506,1],[508,1],[510,1],[597,1],[1163,2],[1309,2],[1484,2],[1654,1],[1656,2],[1671,1],[1673,2],[1692,1]]},"854":{"position":[[106,1],[644,2],[790,2],[965,2],[1135,1],[1137,2],[1152,1],[1154,2],[1173,1]]},"856":{"position":[[78,1],[149,2],[214,2],[262,2],[265,1],[316,2],[319,3],[339,1]]},"859":{"position":[[108,1],[242,2],[290,2],[293,1],[344,2],[347,2],[366,1]]},"862":{"position":[[450,1]]},"863":{"position":[[58,1],[60,1],[181,2],[293,2],[296,1],[401,2],[404,1],[514,1],[516,2],[537,1],[547,1],[729,1],[746,2],[799,2],[810,1],[818,1],[869,2],[882,1],[933,1],[935,2],[953,1],[1011,1],[1013,1],[1015,1],[1017,1],[1072,1],[1209,2],[1355,2],[1467,2],[1470,1],[1575,2],[1578,1],[1686,2],[1689,1],[1768,2],[1771,1],[1857,2],[1860,1],[1953,2],[1956,1],[2039,2],[2042,1],[2132,2],[2135,1],[2232,3],[2521,2],[2667,2],[2843,1],[2845,2],[3016,1],[3018,1],[3020,2],[3035,1],[3037,1],[3039,2],[3058,1]]},"865":{"position":[[71,1],[143,2],[211,2],[357,2],[469,2],[472,1],[577,2],[580,1],[688,2],[691,1],[770,2],[773,1],[859,2],[862,1],[955,2],[958,1],[1041,2],[1044,1],[1134,2],[1137,1],[1234,3],[1523,2],[1669,2],[1845,1],[1847,2],[2018,1],[2020,1],[2022,2],[2037,1],[2039,1],[2041,3],[2061,1]]},"868":{"position":[[59,1],[61,1],[186,2],[298,2],[301,1],[406,2],[409,1],[519,1],[521,2],[542,1],[552,1],[734,1],[751,2],[804,2],[815,1],[823,1],[874,2],[887,1],[938,1],[940,2],[958,1],[1016,1],[1018,1],[1020,1],[1022,1],[1098,1],[1235,2],[1385,2],[1497,2],[1500,1],[1605,2],[1608,1],[1716,2],[1719,1],[1798,2],[1801,1],[1887,2],[1890,1],[1983,2],[1986,1],[2069,2],[2072,1],[2162,2],[2165,1],[2262,3],[2551,2],[2697,2],[2872,2],[3042,1],[3044,2],[3059,1],[3061,1],[3063,2],[3082,1]]},"871":{"position":[[94,1],[231,2],[381,2],[493,2],[496,1],[601,2],[604,1],[712,2],[715,1],[794,2],[797,1],[883,2],[886,1],[979,2],[982,1],[1065,2],[1068,1],[1158,2],[1161,1],[1258,3],[1547,2],[1693,2],[1868,2],[2038,1],[2040,2],[2055,1],[2057,1],[2059,2],[2078,1]]},"874":{"position":[[58,1],[60,1],[92,1],[173,1],[175,1],[177,1],[255,1],[822,2],[968,2],[1143,2],[1313,1],[1315,2],[1330,1],[1332,2],[1351,1]]},"878":{"position":[[58,1],[60,1],[70,1],[161,2],[179,1],[204,2],[215,1],[228,1],[249,2],[286,1],[288,1],[290,1],[346,1],[827,2],[1052,2],[1088,2],[1174,1],[1176,1],[1178,2],[1197,1]]},"881":{"position":[[107,1],[203,2],[574,2],[799,2],[835,2],[921,1],[923,1],[925,3],[945,1]]},"884":{"position":[[99,1],[562,2],[787,2],[823,2],[909,1],[911,1],[913,2],[932,1]]},"887":{"position":[[103,1],[592,2],[817,2],[853,2],[939,1],[941,1],[943,2],[962,1]]},"890":{"position":[[111,2],[138,1],[325,1]]},"893":{"position":[[153,2],[160,4]]},"894":{"position":[[0,1],[10,1],[254,1],[272,1],[274,2],[292,1],[350,2],[361,1],[373,1],[423,1],[425,1],[427,1]]},"898":{"position":[[224,1],[233,1],[289,1],[492,1],[510,1],[512,2],[530,1],[588,2],[599,1],[607,1],[658,2],[671,1],[722,1],[724,1],[726,2]]},"899":{"position":[[286,1],[296,1],[499,1],[517,1],[519,2],[537,1],[595,2],[606,1],[618,1],[669,1],[671,1],[673,2]]},"900":{"position":[[159,1]]},"901":{"position":[[160,1]]},"904":{"position":[[144,1]]},"905":{"position":[[224,1]]},"907":{"position":[[73,1]]},"908":{"position":[[355,1]]},"910":{"position":[[52,1],[74,1],[147,1]]},"911":{"position":[[61,1],[97,1],[155,1],[213,1]]},"912":{"position":[[51,1],[80,1],[108,1],[217,1]]},"913":{"position":[[61,1],[98,1],[118,1],[284,1],[330,1]]},"919":{"position":[[32,1],[215,1],[347,1],[462,1],[572,1]]},"921":{"position":[[504,1],[557,1]]},"931":{"position":[[440,1]]},"939":{"position":[[2026,1],[2028,1],[2030,1],[2096,1],[2098,1],[2100,1]]},"942":{"position":[[18,1],[24,1],[34,3],[38,1],[48,1],[83,1],[157,1],[228,1],[272,1],[312,1],[372,1],[457,1],[470,1],[512,1],[705,1],[761,1],[779,1]]},"947":{"position":[[0,1],[417,1],[492,1],[515,1],[517,2],[619,1],[649,1],[664,1],[666,2],[690,2],[745,1],[783,1],[792,3],[800,1],[809,3],[818,1],[851,1],[860,2],[870,1],[872,2],[875,1],[884,2],[901,2],[1095,1],[1206,1],[1223,1],[1252,1]]},"950":{"position":[[173,1],[403,1],[449,1],[537,2],[601,1],[689,1],[810,2],[813,1],[907,2],[910,1],[1082,2],[1123,1],[1279,1],[1346,1],[1661,3],[1681,3]]},"954":{"position":[[479,2],[525,1],[543,1],[551,1],[557,1],[564,1],[570,1],[588,1],[602,1],[615,1],[622,3],[754,2],[757,1],[783,2],[786,1],[820,2],[823,1],[843,2],[846,1],[960,2],[963,1],[1022,2],[1025,1],[1110,1],[1394,1],[1446,1],[1463,1],[1538,2],[1551,2],[1569,1],[1661,2],[1702,1],[2059,3],[2079,3]]},"961":{"position":[[125,1],[150,1],[165,1],[341,1],[366,1],[381,1],[651,1],[676,1],[702,1],[717,1]]},"963":{"position":[[676,1],[700,1],[748,1],[794,1],[830,1],[877,1],[882,1],[920,1],[935,1]]},"964":{"position":[[384,1],[479,1],[621,2],[1419,1],[1514,1],[1656,2]]},"965":{"position":[[479,1],[512,1],[527,1],[549,1],[558,1],[1082,1],[1084,1],[1113,1],[1262,1],[1301,1],[1303,1],[1327,3],[1368,3],[1864,3],[2080,3],[2166,3],[2252,3],[2338,3],[2424,3],[2510,3],[2596,3],[2691,3],[2777,3],[2865,3],[2953,3],[3041,3],[3129,3],[3215,3],[3303,3],[3391,3],[3479,3],[3567,3],[3655,3],[3743,3],[3838,3],[3922,3],[4008,3],[4094,3],[4180,3],[4266,3],[4352,3],[4438,3],[4518,3],[4592,3],[4981,1],[5018,1],[5146,1],[5162,1],[5187,1],[5212,1],[5286,3],[5372,3],[5458,3],[5544,3],[5630,3],[5716,3],[5802,3],[5897,3],[5983,3],[6071,3],[6159,3],[6247,3],[6335,3],[6423,3],[6511,3],[6606,3],[6690,3],[6776,3],[6862,3],[6948,3],[7034,3],[7120,3],[7206,3],[7286,3],[7360,3],[7627,1],[7806,1],[7985,1],[8164,1],[8343,1],[8522,1],[8701,1],[8880,1],[9475,3],[9631,1],[9653,1],[9663,1],[9976,1],[10009,1],[10024,1],[10046,1],[10564,1],[10566,1],[10595,1],[10744,1],[10783,1],[10785,3],[11281,3],[11497,3],[11583,3],[11669,3],[11755,3],[11841,3],[11927,3],[12013,3],[12108,3],[12194,3],[12282,3],[12370,3],[12458,3],[12546,3],[12632,3],[12720,3],[12808,3],[12896,3],[12984,3],[13072,3],[13160,3],[13255,3],[13339,3],[13425,3],[13511,3],[13597,3],[13683,3],[13769,3],[13855,3],[13935,3],[14009,3],[14487,1],[14524,1],[14574,1],[14590,1],[14615,1],[14640,1],[14708,1],[14775,1],[14841,1],[14908,1],[14975,1],[15042,1],[15109,1],[15135,1],[15151,1],[15190,1],[15215,1],[15296,1],[15363,1],[15430,1],[15497,1],[15565,1],[15633,1],[15701,1],[15769,1],[15837,1],[15905,1],[15932,1],[15948,1],[15967,3],[16633,1],[16635,1],[16664,1],[16813,1],[16852,1],[16854,1],[16878,3],[17054,1],[17060,1],[17209,1],[17215,1],[17368,1],[17374,1]]},"967":{"position":[[268,1],[1964,1],[2109,1]]},"969":{"position":[[410,1],[460,2],[506,1],[524,1],[531,1],[550,1],[563,1],[577,1],[590,1],[599,1],[612,1],[620,1],[649,1],[657,1],[659,2],[662,1],[678,2],[681,1],[753,2],[771,2],[816,2],[882,2],[885,1],[905,2],[908,1],[955,1],[964,1],[971,1],[983,1],[993,1],[1006,1],[1014,1],[1023,1],[1031,1],[1041,1],[1043,2],[1046,1],[1110,1],[1298,2],[1339,1],[1696,3],[1716,3]]},"979":{"position":[[283,1],[413,1]]},"980":{"position":[[290,1],[359,1],[384,1],[396,1],[411,2],[414,1],[432,1],[472,1],[485,1],[521,1],[648,1],[771,1],[784,1]]},"981":{"position":[[184,1],[253,1],[278,1],[330,1],[385,1],[425,1],[511,2],[564,2],[750,1],[802,1],[848,1],[907,1],[941,1],[980,1],[1021,1],[1060,1],[1109,1]]},"984":{"position":[[324,1]]},"985":{"position":[[287,1],[361,1],[399,1],[439,1],[452,1],[488,1],[560,1],[628,1],[641,1],[733,1]]},"986":{"position":[[184,1],[258,1],[320,1],[335,2],[338,1],[356,1],[396,1],[429,2],[460,1],[512,1],[558,1],[617,1],[651,1],[690,1],[731,1],[770,1],[819,1]]},"989":{"position":[[322,1]]},"990":{"position":[[227,1],[299,1],[332,2],[335,1],[353,1],[393,1],[531,1],[544,1],[580,1],[714,1],[735,1],[778,1],[919,1],[932,1],[1027,1]]},"991":{"position":[[262,1],[334,1],[389,1],[404,2],[407,1],[428,1],[471,1],[601,1],[619,1],[659,1],[786,1],[799,1],[835,1],[958,1],[970,1],[983,1]]}},"keywords":{}}],["0",{"_index":65,"title":{"257":{"position":[[0,2]]}},"content":{"4":{"position":[[204,1],[255,1],[307,1],[357,1],[408,1],[457,1]]},"28":{"position":[[297,3],[435,3],[502,3]]},"29":{"position":[[348,3],[1525,3]]},"53":{"position":[[6551,1]]},"79":{"position":[[869,1]]},"121":{"position":[[24,2]]},"260":{"position":[[895,1],[1056,3],[1060,1],[1070,1]]},"281":{"position":[[1501,1]]},"340":{"position":[[183,1],[289,1],[340,1],[392,1],[446,1],[497,1],[554,1],[607,1]]},"343":{"position":[[511,3],[523,4]]},"382":{"position":[[246,3],[300,3]]},"385":{"position":[[274,3],[328,3]]},"464":{"position":[[204,1],[255,1],[307,1],[357,1],[408,1],[457,1]]},"473":{"position":[[200,2]]},"479":{"position":[[468,1]]},"484":{"position":[[546,2],[698,1]]},"557":{"position":[[297,3],[435,3],[502,3]]},"558":{"position":[[348,3],[1525,3]]},"628":{"position":[[24,2]]},"791":{"position":[[3316,1],[3348,1],[14488,1],[17568,1],[17580,1],[17599,1],[19140,1],[19172,1],[30037,1],[32422,1],[32434,1],[32453,1]]},"814":{"position":[[185,1],[239,1],[295,1],[348,1],[401,1],[455,1],[514,1],[569,1],[621,1]]},"817":{"position":[[529,3],[541,4]]},"856":{"position":[[246,3],[300,3]]},"859":{"position":[[274,3],[328,3]]},"933":{"position":[[200,2]]},"942":{"position":[[468,1]]},"947":{"position":[[546,2],[698,1]]},"964":{"position":[[548,3],[1295,1],[1583,3]]},"965":{"position":[[1205,2],[1469,1],[4795,1],[7638,2],[10687,2],[10886,1],[14592,1],[16756,2],[17056,2],[17211,2],[17370,2]]},"980":{"position":[[1140,1],[1538,1],[1698,1],[1845,1],[2172,1],[2374,1]]},"985":{"position":[[1000,1],[1398,1],[1558,1],[1705,1],[2032,1],[2234,1]]},"990":{"position":[[1496,2],[1900,2],[2105,2],[2273,1],[2420,1],[2714,1],[3048,2],[3252,2],[3864,2]]}},"keywords":{}}],["0%)]\\tloss=2.3000\\ntrain",{"_index":308,"title":{},"content":{"29":{"position":[[744,25],[1921,25]]},"558":{"position":[[744,25],[1921,25]]}},"keywords":{}}],["0.0.0.0",{"_index":126,"title":{},"content":{"5":{"position":[[252,7]]},"289":{"position":[[142,7]]},"306":{"position":[[228,7]]},"341":{"position":[[182,7]]},"465":{"position":[[252,7]]},"492":{"position":[[157,7]]},"744":{"position":[[1293,7]]},"752":{"position":[[142,7]]},"757":{"position":[[228,7]]},"815":{"position":[[73,7]]}},"keywords":{}}],["0.01",{"_index":1722,"title":{},"content":{"147":{"position":[[1496,5]]},"647":{"position":[[1496,5]]},"910":{"position":[[236,5]]},"911":{"position":[[175,5]]}},"keywords":{}}],["0.0994",{"_index":4093,"title":{},"content":{"965":{"position":[[9633,7]]}},"keywords":{}}],["0.1",{"_index":204,"title":{},"content":{"15":{"position":[[250,4]]},"18":{"position":[[247,4]]},"410":{"position":[[218,4]]},"415":{"position":[[223,4]]},"544":{"position":[[250,4]]},"547":{"position":[[247,4]]},"863":{"position":[[218,4]]},"868":{"position":[[223,4]]},"965":{"position":[[5214,3]]}},"keywords":{}}],["0.1.0",{"_index":2519,"title":{},"content":{"324":{"position":[[1323,5]]},"774":{"position":[[776,5]]}},"keywords":{}}],["0.10.x",{"_index":2017,"title":{},"content":{"224":{"position":[[74,6]]},"726":{"position":[[74,6]]}},"keywords":{}}],["0.11.x",{"_index":2018,"title":{},"content":{"224":{"position":[[83,6]]},"726":{"position":[[83,6]]}},"keywords":{}}],["0.2.0",{"_index":2512,"title":{},"content":{"324":{"position":[[1106,5],[1261,5],[1394,5]]},"774":{"position":[[559,5],[714,5],[847,5]]}},"keywords":{}}],["0.2.0.tar.gz",{"_index":2514,"title":{},"content":{"324":{"position":[[1183,12]]},"774":{"position":[[636,12]]}},"keywords":{}}],["0.20160123cv",{"_index":3530,"title":{},"content":{"791":{"position":[[5431,13],[10648,13],[10705,13],[15089,13],[21255,13],[26366,13],[26423,13],[30638,13]]}},"keywords":{}}],["0.3.0",{"_index":2509,"title":{},"content":{"324":{"position":[[835,5],[937,5],[1010,5]]},"774":{"position":[[288,5],[390,5],[463,5]]}},"keywords":{}}],["0.4.0",{"_index":2502,"title":{},"content":{"324":{"position":[[564,5],[666,5],[739,5]]},"332":{"position":[[14,6]]},"774":{"position":[[17,5],[119,5],[192,5]]},"802":{"position":[[14,6]]},"983":{"position":[[58,6]]}},"keywords":{}}],["0.5.0",{"_index":405,"title":{},"content":{"38":{"position":[[955,7]]},"39":{"position":[[697,7]]},"40":{"position":[[688,7]]},"41":{"position":[[747,7]]},"324":{"position":[[17,5],[104,5],[179,5],[488,5]]},"560":{"position":[[955,7]]},"561":{"position":[[697,7]]},"562":{"position":[[688,7]]},"563":{"position":[[747,7]]}},"keywords":{}}],["0.5.0submarin",{"_index":2498,"title":{},"content":{"324":{"position":[[290,14],[348,14],[410,14]]}},"keywords":{}}],["0.6.x",{"_index":2013,"title":{},"content":{"224":{"position":[[42,5]]},"726":{"position":[[42,5]]}},"keywords":{}}],["0.7.0",{"_index":2721,"title":{},"content":{"353":{"position":[[298,5],[1190,5]]},"389":{"position":[[918,5]]},"392":{"position":[[665,5]]},"395":{"position":[[653,5]]},"398":{"position":[[683,5]]},"439":{"position":[[1016,6]]},"827":{"position":[[298,5],[1190,5]]},"878":{"position":[[918,5]]},"881":{"position":[[665,5]]},"884":{"position":[[653,5]]},"887":{"position":[[683,5]]}},"keywords":{}}],["0.7.x",{"_index":2014,"title":{},"content":{"224":{"position":[[50,5]]},"726":{"position":[[50,5]]}},"keywords":{}}],["0.8",{"_index":4107,"title":{},"content":{"965":{"position":[[14642,3],[15217,3]]}},"keywords":{}}],["0.8.10ubuntu1.4",{"_index":3490,"title":{},"content":{"791":{"position":[[4156,15],[8679,17],[13558,17],[19980,15],[24397,17],[29107,17]]}},"keywords":{}}],["0.8.x",{"_index":2015,"title":{},"content":{"224":{"position":[[58,5]]},"726":{"position":[[58,5]]}},"keywords":{}}],["0.8235",{"_index":3994,"title":{},"content":{"965":{"position":[[1544,6],[1790,6],[10961,6],[11207,6]]}},"keywords":{}}],["0.9.x",{"_index":2016,"title":{},"content":{"224":{"position":[[66,5]]},"726":{"position":[[66,5]]}},"keywords":{}}],["0.x.x",{"_index":2968,"title":{},"content":{"441":{"position":[[85,5],[103,5]]},"925":{"position":[[85,5],[103,5]]}},"keywords":{}}],["0.xxx",{"_index":3665,"title":{},"content":{"791":{"position":[[14196,5],[14277,5],[14342,6],[16581,5],[16712,5],[16844,5],[16980,5],[17703,5],[29745,5],[29826,5],[29891,6],[31435,5],[31566,5],[31698,5],[31834,5],[32581,5]]}},"keywords":{}}],["0/60000",{"_index":307,"title":{},"content":{"29":{"position":[[735,8],[1912,8]]},"558":{"position":[[735,8],[1912,8]]}},"keywords":{}}],["0000:00:04.0",{"_index":3996,"title":{},"content":{"965":{"position":[[1560,12],[7670,13],[10977,12]]}},"keywords":{}}],["0000:00:05.0",{"_index":4000,"title":{},"content":{"965":{"position":[[1806,12],[7849,13],[11223,12]]}},"keywords":{}}],["0000:00:06.0",{"_index":4059,"title":{},"content":{"965":{"position":[[8028,13]]}},"keywords":{}}],["0000:00:07.0",{"_index":4062,"title":{},"content":{"965":{"position":[[8207,13]]}},"keywords":{}}],["0000:00:08.0",{"_index":4065,"title":{},"content":{"965":{"position":[[8386,13]]}},"keywords":{}}],["0000:00:09.0",{"_index":4068,"title":{},"content":{"965":{"position":[[8565,13]]}},"keywords":{}}],["0000:00:0a.0",{"_index":4071,"title":{},"content":{"965":{"position":[[8744,13]]}},"keywords":{}}],["0000:00:0b.0",{"_index":4074,"title":{},"content":{"965":{"position":[[8923,13]]}},"keywords":{}}],["0001",{"_index":353,"title":{},"content":{"31":{"position":[[384,6],[747,6],[1110,6],[1474,6]]},"32":{"position":[[392,6]]}},"keywords":{}}],["0001/example/1",{"_index":358,"title":{},"content":{"31":{"position":[[535,16]]},"32":{"position":[[543,16]]}},"keywords":{}}],["0001/example/2",{"_index":361,"title":{},"content":{"31":{"position":[[898,16]]}},"keywords":{}}],["0001/example1/1",{"_index":362,"title":{},"content":{"31":{"position":[[1261,17]]}},"keywords":{}}],["0001/example2/1",{"_index":365,"title":{},"content":{"31":{"position":[[1625,17]]}},"keywords":{}}],["001",{"_index":4266,"title":{},"content":{"980":{"position":[[355,3]]},"981":{"position":[[249,3]]},"985":{"position":[[357,3]]},"986":{"position":[[254,3]]},"990":{"position":[[295,3]]},"991":{"position":[[330,3]]}},"keywords":{}}],["01",{"_index":2511,"title":{},"content":{"324":{"position":[[857,3]]},"774":{"position":[[310,3]]},"965":{"position":[[1380,2],[1626,2],[1876,2],[4805,2],[7493,2],[7513,2],[7692,2],[7871,2],[8050,2],[8229,2],[8408,2],[8587,2],[8766,2],[9563,2],[10797,2],[11043,2],[11293,2]]}},"keywords":{}}],["0242ac110003",{"_index":257,"title":{},"content":{"22":{"position":[[758,14]]},"23":{"position":[[905,14]]},"24":{"position":[[267,14],[913,14]]},"25":{"position":[[300,14]]},"27":{"position":[[303,14]]},"551":{"position":[[758,14]]},"552":{"position":[[905,14]]},"553":{"position":[[267,14],[913,14]]},"554":{"position":[[300,14]]},"556":{"position":[[303,14]]}},"keywords":{}}],["02:27:05",{"_index":349,"title":{},"content":{"31":{"position":[[265,10],[423,10],[628,10],[786,10],[991,10],[1149,10]]},"32":{"position":[[273,10],[431,10]]},"47":{"position":[[615,10]]}},"keywords":{}}],["02:27:06",{"_index":364,"title":{},"content":{"31":{"position":[[1355,10],[1513,10]]}},"keywords":{}}],["039f6804ed36",{"_index":2746,"title":{},"content":{"366":{"position":[[741,14]]},"840":{"position":[[741,14]]}},"keywords":{}}],["04",{"_index":4278,"title":{},"content":{"980":{"position":[[1046,2],[1247,2],[1448,2],[1645,2],[1788,2],[1935,2],[2082,2],[2280,2],[2482,2]]},"985":{"position":[[906,2],[1107,2],[1308,2],[1505,2],[1648,2],[1795,2],[1942,2],[2140,2],[2342,2]]},"990":{"position":[[1200,2],[1402,2],[1604,2],[1806,2],[2008,2],[2213,2],[2363,2],[2510,2],[2657,2],[2804,2],[2951,2],[3158,2],[3362,2],[3566,2],[3770,2]]}},"keywords":{}}],["05",{"_index":2100,"title":{},"content":{"252":{"position":[[524,2],[633,2],[769,2],[878,2],[1400,2],[1509,2],[1639,2],[1748,2]]},"260":{"position":[[2625,2],[2733,2]]},"261":{"position":[[69,2],[188,2]]},"324":{"position":[[586,3]]},"774":{"position":[[39,3]]}},"keywords":{}}],["05:35:36",{"_index":36,"title":{},"content":{"3":{"position":[[163,8]]},"463":{"position":[[163,8]]}},"keywords":{}}],["06",{"_index":261,"title":{},"content":{"22":{"position":[[817,2]]},"23":{"position":[[964,2]]},"24":{"position":[[326,2],[972,2]]},"25":{"position":[[359,2]]},"27":{"position":[[362,2]]},"551":{"position":[[817,2]]},"552":{"position":[[964,2]]},"553":{"position":[[326,2],[972,2]]},"554":{"position":[[359,2]]},"556":{"position":[[362,2]]}},"keywords":{}}],["07",{"_index":2749,"title":{},"content":{"366":{"position":[[798,2]]},"369":{"position":[[918,2]]},"371":{"position":[[309,2],[356,2],[403,2],[451,2],[1399,2]]},"374":{"position":[[335,2]]},"377":{"position":[[829,2]]},"389":{"position":[[676,2]]},"392":{"position":[[423,2]]},"395":{"position":[[411,2]]},"398":{"position":[[441,2]]},"421":{"position":[[488,2]]},"840":{"position":[[798,2]]},"843":{"position":[[918,2]]},"845":{"position":[[309,2],[356,2],[403,2],[451,2],[1399,2]]},"848":{"position":[[335,2]]},"851":{"position":[[829,2]]},"874":{"position":[[488,2]]},"878":{"position":[[676,2]]},"881":{"position":[[423,2]]},"884":{"position":[[411,2]]},"887":{"position":[[441,2]]},"965":{"position":[[14144,2],[14308,2],[16924,2],[17083,2],[17238,2],[17397,2]]}},"keywords":{}}],["08",{"_index":398,"title":{},"content":{"38":{"position":[[713,2]]},"39":{"position":[[455,2]]},"40":{"position":[[446,2]]},"41":{"position":[[475,2],[523,2]]},"560":{"position":[[713,2]]},"561":{"position":[[455,2]]},"562":{"position":[[446,2]]},"563":{"position":[[475,2],[523,2]]},"965":{"position":[[1377,2],[1623,2],[1873,2],[4802,2],[7490,2],[7510,2],[7689,2],[7868,2],[8047,2],[8226,2],[8405,2],[8584,2],[8763,2],[9560,2],[10794,2],[11040,2],[11290,2]]}},"keywords":{}}],["09",{"_index":3051,"title":{},"content":{"481":{"position":[[5,2],[1615,2]]},"482":{"position":[[5,2]]},"944":{"position":[[5,2],[1615,2]]},"945":{"position":[[5,2]]}},"keywords":{}}],["09:36:26,102",{"_index":3084,"title":{},"content":{"482":{"position":[[11,12]]},"945":{"position":[[11,12]]}},"keywords":{}}],["0bfafa146431",{"_index":3100,"title":{},"content":{"484":{"position":[[12,12]]},"947":{"position":[[12,12]]}},"keywords":{}}],["0bfafa146431771f6024dcb9775ef47f170edb2f152f71916ba44209ca6120a",{"_index":3133,"title":{},"content":{"484":{"position":[[1142,63]]},"947":{"position":[[1142,63]]}},"keywords":{}}],["0bfafa146431771f6024dcb9775ef47f170edb2f1852f71916ba44209ca6120a",{"_index":3102,"title":{},"content":{"484":{"position":[[85,65]]},"947":{"position":[[85,65]]}},"keywords":{}}],["0f21",{"_index":2774,"title":{},"content":{"369":{"position":[[846,4]]},"371":{"position":[[1327,4]]},"374":{"position":[[263,4]]},"377":{"position":[[757,4]]},"380":{"position":[[266,4]]},"843":{"position":[[846,4]]},"845":{"position":[[1327,4]]},"848":{"position":[[263,4]]},"851":{"position":[[757,4]]},"854":{"position":[[266,4]]}},"keywords":{}}],["0s",{"_index":3574,"title":{},"content":{"791":{"position":[[6953,2]]}},"keywords":{}}],["0ubuntu1",{"_index":3572,"title":{},"content":{"791":{"position":[[6915,8],[13070,9],[17363,9],[22633,8],[28619,9],[32217,9]]}},"keywords":{}}],["0ubuntu11",{"_index":3658,"title":{},"content":{"791":{"position":[[13178,10],[17416,10],[28727,10],[32270,10]]}},"keywords":{}}],["0ubuntu1_all.deb",{"_index":3652,"title":{},"content":{"791":{"position":[[13020,16],[28569,16]]}},"keywords":{}}],["0x7f48f1addf90",{"_index":4156,"title":{},"content":{"965":{"position":[[16441,16]]}},"keywords":{}}],["0x7f6918438e10",{"_index":4097,"title":{},"content":{"965":{"position":[[10370,16]]}},"keywords":{}}],["0x7fd16fb2be10",{"_index":3967,"title":{},"content":{"965":{"position":[[890,16]]}},"keywords":{}}],["1",{"_index":42,"title":{"92":{"position":[[5,2]]},"249":{"position":[[0,2]]},"258":{"position":[[0,2]]},"293":{"position":[[0,2]]},"343":{"position":[[0,2]]},"481":{"position":[[6,2]]},"606":{"position":[[5,2]]},"760":{"position":[[0,2]]},"817":{"position":[[0,2]]},"944":{"position":[[6,2]]}},"content":{"3":{"position":[[223,1]]},"15":{"position":[[864,2],[928,2]]},"18":{"position":[[861,2],[925,2]]},"22":{"position":[[436,2],[500,2],[1194,2],[1258,2]]},"23":{"position":[[407,2],[471,2],[1312,2],[1376,2]]},"24":{"position":[[703,2],[767,2],[1282,2],[1346,2]]},"25":{"position":[[736,2],[800,2]]},"26":{"position":[[444,2],[1047,2]]},"27":{"position":[[739,2]]},"29":{"position":[[733,1],[777,1],[823,1],[870,1],[917,1],[964,1],[1011,1],[1058,1],[1105,1],[1152,1],[1200,1],[1248,1],[1296,1],[1344,1],[1392,1],[1440,1],[1910,1],[1954,1],[2000,1],[2047,1],[2094,1],[2141,1],[2188,1],[2235,1],[2282,1],[2329,1],[2377,1],[2425,1],[2473,1],[2521,1],[2569,1],[2617,1]]},"31":{"position":[[592,1]]},"32":{"position":[[600,1]]},"33":{"position":[[133,2]]},"43":{"position":[[88,1]]},"53":{"position":[[6266,2],[6704,1],[6940,1],[7507,2],[7748,2],[7824,1],[7913,2],[7939,2],[7954,1],[8050,2],[8063,1],[9009,3],[9055,3]]},"69":{"position":[[166,5]]},"79":{"position":[[829,2],[885,1],[931,2]]},"91":{"position":[[0,2],[600,2]]},"92":{"position":[[210,1]]},"101":{"position":[[0,2]]},"102":{"position":[[346,2]]},"134":{"position":[[98,2]]},"160":{"position":[[322,1]]},"252":{"position":[[674,4],[919,4],[1118,1],[1550,4],[1789,4]]},"260":{"position":[[563,3],[693,1],[703,1]]},"281":{"position":[[280,2],[940,2],[1119,2],[1382,3],[1422,3],[1507,1]]},"286":{"position":[[392,2]]},"289":{"position":[[1284,2]]},"340":{"position":[[657,1]]},"341":{"position":[[26,1],[263,2]]},"343":{"position":[[528,3],[904,4]]},"366":{"position":[[402,2],[466,2]]},"369":{"position":[[373,2],[437,2]]},"377":{"position":[[403,2]]},"405":{"position":[[387,2]]},"410":{"position":[[832,2],[896,2]]},"415":{"position":[[837,2],[901,2]]},"424":{"position":[[621,2],[685,2]]},"439":{"position":[[294,2]]},"463":{"position":[[223,1]]},"479":{"position":[[777,1]]},"484":{"position":[[524,1],[580,1]]},"502":{"position":[[1287,2]]},"544":{"position":[[864,2],[928,2]]},"547":{"position":[[861,2],[925,2]]},"551":{"position":[[436,2],[500,2],[1194,2],[1258,2]]},"552":{"position":[[407,2],[471,2],[1312,2],[1376,2]]},"553":{"position":[[703,2],[767,2],[1282,2],[1346,2]]},"554":{"position":[[736,2],[800,2]]},"555":{"position":[[444,2],[1047,2]]},"556":{"position":[[739,2]]},"558":{"position":[[733,1],[777,1],[823,1],[870,1],[917,1],[964,1],[1011,1],[1058,1],[1105,1],[1152,1],[1200,1],[1248,1],[1296,1],[1344,1],[1392,1],[1440,1],[1910,1],[1954,1],[2000,1],[2047,1],[2094,1],[2141,1],[2188,1],[2235,1],[2282,1],[2329,1],[2377,1],[2425,1],[2473,1],[2521,1],[2569,1],[2617,1]]},"578":{"position":[[166,5]]},"605":{"position":[[0,2],[600,2]]},"606":{"position":[[210,1]]},"615":{"position":[[0,2]]},"616":{"position":[[346,2]]},"662":{"position":[[98,2]]},"667":{"position":[[322,1]]},"744":{"position":[[1387,1]]},"752":{"position":[[1284,2]]},"777":{"position":[[85,2],[313,2],[841,1]]},"788":{"position":[[126,2]]},"791":{"position":[[1547,2],[6400,1],[12245,2],[17139,2],[22118,1],[27794,2],[31993,2]]},"817":{"position":[[546,3],[922,4]]},"840":{"position":[[402,2],[466,2]]},"843":{"position":[[373,2],[437,2]]},"851":{"position":[[403,2]]},"863":{"position":[[832,2],[896,2]]},"868":{"position":[[837,2],[901,2]]},"894":{"position":[[387,2]]},"898":{"position":[[621,2],[685,2]]},"942":{"position":[[777,1]]},"947":{"position":[[524,1],[580,1]]},"950":{"position":[[87,2],[294,2]]},"954":{"position":[[91,2],[300,2]]},"964":{"position":[[805,1],[815,1],[824,1]]},"965":{"position":[[738,2],[1068,1],[1190,2],[1715,1],[4967,1],[5016,1],[5086,1],[5164,1],[7817,2],[9619,2],[9655,2],[10217,2],[10550,1],[10672,2],[11132,1],[14473,1],[14522,1],[16292,2],[16619,1],[16741,2]]},"969":{"position":[[95,2],[300,2]]},"980":{"position":[[483,1],[1341,1],[1992,1],[2576,1]]},"981":{"position":[[1239,2]]},"985":{"position":[[1201,1],[1852,1],[2436,1]]},"986":{"position":[[354,1]]},"990":{"position":[[508,1],[691,1],[896,1],[1294,2],[1698,2],[2567,1],[2861,1],[3456,2],[3660,2]]},"991":{"position":[[426,1],[578,1],[763,1],[935,1]]}},"keywords":{}}],["1%)]\\tloss=2.2135\\ntrain",{"_index":310,"title":{},"content":{"29":{"position":[[790,25],[1967,25]]},"558":{"position":[[790,25],[1967,25]]}},"keywords":{}}],["1.0",{"_index":231,"title":{},"content":{"15":{"position":[[1038,4]]},"18":{"position":[[1035,4]]},"22":{"position":[[398,4],[1156,4]]},"24":{"position":[[665,4],[1240,4]]},"25":{"position":[[698,4]]},"26":{"position":[[406,4],[1009,4]]},"27":{"position":[[701,4]]},"178":{"position":[[258,4]]},"328":{"position":[[713,5]]},"366":{"position":[[364,4],[1273,4]]},"371":{"position":[[865,4]]},"377":{"position":[[365,4],[1304,4]]},"380":{"position":[[785,4]]},"405":{"position":[[345,4]]},"410":{"position":[[1006,4],[2662,4]]},"412":{"position":[[1664,4]]},"415":{"position":[[1011,4],[2692,4]]},"418":{"position":[[1688,4]]},"421":{"position":[[963,4]]},"424":{"position":[[583,4]]},"425":{"position":[[590,4]]},"544":{"position":[[1038,4]]},"547":{"position":[[1035,4]]},"551":{"position":[[398,4],[1156,4]]},"553":{"position":[[665,4],[1240,4]]},"554":{"position":[[698,4]]},"555":{"position":[[406,4],[1009,4]]},"556":{"position":[[701,4]]},"685":{"position":[[258,4]]},"809":{"position":[[733,5]]},"840":{"position":[[364,4],[1273,4]]},"845":{"position":[[865,4]]},"851":{"position":[[365,4],[1304,4]]},"854":{"position":[[785,4]]},"863":{"position":[[1006,4],[2662,4]]},"865":{"position":[[1664,4]]},"868":{"position":[[1011,4],[2692,4]]},"871":{"position":[[1688,4]]},"874":{"position":[[963,4]]},"894":{"position":[[345,4]]},"898":{"position":[[583,4]]},"899":{"position":[[590,4]]},"965":{"position":[[1297,3],[10779,3],[16848,3]]}},"keywords":{}}],["1.0.3",{"_index":3471,"title":{},"content":{"791":{"position":[[3647,5],[7872,6],[13261,6],[19471,5],[23590,6],[28810,6]]}},"keywords":{}}],["1.0.37",{"_index":3523,"title":{},"content":{"791":{"position":[[5227,6],[10391,8],[14077,8],[21051,6],[26109,8],[29626,8]]}},"keywords":{}}],["1.09",{"_index":3474,"title":{},"content":{"791":{"position":[[3744,4],[3844,4],[8037,5],[8211,5],[13302,5],[13352,5],[19568,4],[19668,4],[23755,5],[23929,5],[28851,5],[28901,5]]}},"keywords":{}}],["1.1",{"_index":2161,"title":{"259":{"position":[[0,3]]}},"content":{"324":{"position":[[1493,4]]},"774":{"position":[[946,4]]}},"keywords":{}}],["1.1.0",{"_index":3793,"title":{},"content":{"934":{"position":[[315,6]]}},"keywords":{}}],["1.1.0.xsd",{"_index":2259,"title":{},"content":{"265":{"position":[[261,10]]}},"keywords":{}}],["1.10",{"_index":2540,"title":{},"content":{"327":{"position":[[988,4]]}},"keywords":{}}],["1.10.0",{"_index":3561,"title":{},"content":{"791":{"position":[[6582,6],[12541,7],[17210,7],[22300,6],[28090,7],[32064,7]]}},"keywords":{}}],["1.13.1",{"_index":3022,"title":{},"content":{"479":{"position":[[255,6],[295,6]]},"791":{"position":[[6687,6],[12715,7],[17252,7],[22405,6],[28264,7],[32106,7]]},"942":{"position":[[255,6],[295,6]]},"969":{"position":[[1174,6]]},"970":{"position":[[89,6],[196,6],[309,6],[427,6],[564,6]]},"972":{"position":[[101,6],[202,6],[283,6],[331,6]]},"973":{"position":[[84,6],[119,6]]},"978":{"position":[[61,6]]},"979":{"position":[[755,7]]}},"keywords":{}}],["1.14.x",{"_index":3267,"title":{},"content":{"725":{"position":[[49,6]]}},"keywords":{}}],["1.15.x",{"_index":2009,"title":{},"content":{"223":{"position":[[49,6]]},"725":{"position":[[58,6]]}},"keywords":{}}],["1.16",{"_index":2024,"title":{},"content":{"230":{"position":[[26,4]]}},"keywords":{}}],["1.16.x",{"_index":3268,"title":{},"content":{"725":{"position":[[67,6]]}},"keywords":{}}],["1.17",{"_index":2025,"title":{},"content":{"230":{"position":[[33,4]]}},"keywords":{}}],["1.17.x",{"_index":3269,"title":{},"content":{"725":{"position":[[76,6]]}},"keywords":{}}],["1.18.x",{"_index":3270,"title":{},"content":{"725":{"position":[[98,6]]}},"keywords":{}}],["1.2",{"_index":2167,"title":{"260":{"position":[[0,3]]}},"content":{"934":{"position":[[496,4]]},"963":{"position":[[696,3]]}},"keywords":{}}],["1.2.1",{"_index":3907,"title":{},"content":{"960":{"position":[[27,5]]}},"keywords":{}}],["1.20682",{"_index":4045,"title":{},"content":{"965":{"position":[[5148,8],[5189,8]]}},"keywords":{}}],["1.21.x",{"_index":2010,"title":{},"content":{"223":{"position":[[58,6]]}},"keywords":{}}],["1.22.x",{"_index":2011,"title":{},"content":{"223":{"position":[[67,6]]}},"keywords":{}}],["1.3",{"_index":2216,"title":{"261":{"position":[[0,3]]}},"content":{},"keywords":{}}],["1.4",{"_index":2224,"title":{"262":{"position":[[0,3]]}},"content":{"324":{"position":[[1278,4]]},"774":{"position":[[731,4]]}},"keywords":{}}],["1.5",{"_index":2228,"title":{"263":{"position":[[0,3]]}},"content":{"791":{"position":[[3562,3],[7730,4],[13227,4],[19386,3],[23448,4],[28776,4]]}},"keywords":{}}],["1.5.1",{"_index":2231,"title":{},"content":{"263":{"position":[[210,5]]}},"keywords":{}}],["1.5.2",{"_index":2244,"title":{},"content":{"263":{"position":[[1056,5]]}},"keywords":{}}],["1.5_amd64.deb",{"_index":3597,"title":{},"content":{"791":{"position":[[7679,13],[23397,13]]}},"keywords":{}}],["1.6",{"_index":2245,"title":{"264":{"position":[[0,3]]}},"content":{"950":{"position":[[457,3]]}},"keywords":{}}],["1.6.0",{"_index":3505,"title":{},"content":{"791":{"position":[[4743,5],[9630,6],[13874,6],[20567,5],[25348,6],[29423,6]]}},"keywords":{}}],["1.8.0",{"_index":4290,"title":{},"content":{"981":{"position":[[314,5]]}},"keywords":{}}],["1.8mav",{"_index":1986,"title":{},"content":{"217":{"position":[[4,8]]},"235":{"position":[[4,8]]},"731":{"position":[[4,8]]},"739":{"position":[[4,8]]}},"keywords":{}}],["1/1",{"_index":63,"title":{},"content":{"4":{"position":[[192,3],[243,3],[295,3],[345,3],[396,3],[445,3]]},"340":{"position":[[171,3],[223,3],[277,3],[328,3],[380,3],[434,3],[485,3],[542,3],[595,3],[645,3]]},"464":{"position":[[192,3],[243,3],[295,3],[345,3],[396,3],[445,3]]},"814":{"position":[[173,3],[227,3],[283,3],[336,3],[389,3],[443,3],[502,3],[557,3],[609,3]]}},"keywords":{}}],["1/100",{"_index":4077,"title":{},"content":{"965":{"position":[[9043,7]]}},"keywords":{}}],["10",{"_index":1672,"title":{},"content":{"140":{"position":[[389,2],[1384,2]]},"147":{"position":[[434,2],[941,2]]},"310":{"position":[[246,2]]},"479":{"position":[[364,2],[626,2],[681,2],[897,2],[952,2]]},"640":{"position":[[389,2],[1384,2]]},"647":{"position":[[434,2],[941,2]]},"782":{"position":[[246,2]]},"791":{"position":[[7092,3],[22810,3]]},"911":{"position":[[197,3]]},"942":{"position":[[364,2],[626,2],[681,2],[897,2],[952,2]]},"960":{"position":[[62,2],[192,2],[348,2],[460,2]]},"961":{"position":[[117,2],[333,2],[643,2]]},"963":{"position":[[475,2],[912,2]]},"965":{"position":[[471,2],[9968,2],[14710,2]]},"981":{"position":[[377,2]]}},"keywords":{}}],["10%)]\\tloss=0.4860\\ntrain",{"_index":326,"title":{},"content":{"29":{"position":[[1166,26],[2343,26]]},"558":{"position":[[1166,26],[2343,26]]}},"keywords":{}}],["10.2",{"_index":3573,"title":{},"content":{"791":{"position":[[6924,5],[22642,5]]}},"keywords":{}}],["10.8",{"_index":3476,"title":{},"content":{"791":{"position":[[3758,5],[19582,5]]}},"keywords":{}}],["10.96.0.2",{"_index":2447,"title":{},"content":{"313":{"position":[[1289,9]]},"785":{"position":[[1289,9]]}},"keywords":{}}],["10.96.0.2us",{"_index":2440,"title":{},"content":{"313":{"position":[[893,12]]},"785":{"position":[[893,12]]}},"keywords":{}}],["10.x",{"_index":4236,"title":{},"content":{"970":{"position":[[117,5]]}},"keywords":{}}],["10/100",{"_index":4086,"title":{},"content":{"965":{"position":[[9358,8]]}},"keywords":{}}],["100",{"_index":2830,"title":{},"content":{"401":{"position":[[327,4]]},"791":{"position":[[7560,4],[23278,4]]},"890":{"position":[[327,4]]},"965":{"position":[[1231,4],[10713,4],[15432,3],[16782,4]]}},"keywords":{}}],["100/100",{"_index":4090,"title":{},"content":{"965":{"position":[[9506,9]]}},"keywords":{}}],["10000",{"_index":2644,"title":{},"content":{"343":{"position":[[479,5]]},"817":{"position":[[497,5]]},"965":{"position":[[1012,6],[10494,6],[16563,6]]}},"keywords":{}}],["10023",{"_index":4075,"title":{},"content":{"965":{"position":[[9010,5]]}},"keywords":{}}],["1024",{"_index":2179,"title":{},"content":{"260":{"position":[[734,4]]},"791":{"position":[[16644,4],[31498,4]]}},"keywords":{}}],["1030",{"_index":2344,"title":{},"content":{"281":{"position":[[746,4]]}},"keywords":{}}],["105",{"_index":3503,"title":{},"content":{"791":{"position":[[4657,4],[20481,4]]}},"keywords":{}}],["10:14:06",{"_index":446,"title":{},"content":{"47":{"position":[[258,10],[340,10]]},"48":{"position":[[274,10],[356,10]]}},"keywords":{}}],["10:16:25",{"_index":447,"title":{},"content":{"47":{"position":[[436,10],[518,10]]}},"keywords":{}}],["11",{"_index":2020,"title":{},"content":{"225":{"position":[[24,2]]},"965":{"position":[[4596,3],[7364,3],[14013,3]]}},"keywords":{}}],["11%)]\\tloss=0.4389\\ntrain",{"_index":328,"title":{},"content":{"29":{"position":[[1214,26],[2391,26]]},"558":{"position":[[1214,26],[2391,26]]}},"keywords":{}}],["11.0",{"_index":3562,"title":{},"content":{"791":{"position":[[6591,5],[22309,5]]}},"keywords":{}}],["11.09gib",{"_index":3998,"title":{},"content":{"965":{"position":[[1609,8],[11026,8]]}},"keywords":{}}],["11.10gib",{"_index":4001,"title":{},"content":{"965":{"position":[[1855,8],[11272,8]]}},"keywords":{}}],["11.17gib",{"_index":3997,"title":{},"content":{"965":{"position":[[1587,8],[1833,8],[11004,8],[11250,8]]}},"keywords":{}}],["11/100",{"_index":4087,"title":{},"content":{"965":{"position":[[9394,8]]}},"keywords":{}}],["110",{"_index":4134,"title":{},"content":{"965":{"position":[[15499,3]]}},"keywords":{}}],["111",{"_index":2515,"title":{},"content":{"324":{"position":[[1196,4]]},"774":{"position":[[649,4]]}},"keywords":{}}],["1116.92",{"_index":4110,"title":{},"content":{"965":{"position":[[14684,7],[14692,10]]}},"keywords":{}}],["1152",{"_index":3527,"title":{},"content":{"791":{"position":[[5341,5],[21165,5]]}},"keywords":{}}],["117581",{"_index":1357,"title":{},"content":{"102":{"position":[[1805,7]]},"157":{"position":[[737,7]]},"616":{"position":[[1817,7]]},"657":{"position":[[737,7]]}},"keywords":{}}],["11:45:01",{"_index":2130,"title":{},"content":{"252":{"position":[[2632,8]]}},"keywords":{}}],["11:59",{"_index":2347,"title":{},"content":{"281":{"position":[[888,5]]}},"keywords":{}}],["11ea",{"_index":255,"title":{},"content":{"22":{"position":[[748,4]]},"23":{"position":[[895,4]]},"24":{"position":[[257,4],[903,4]]},"25":{"position":[[290,4]]},"27":{"position":[[293,4]]},"551":{"position":[[748,4]]},"552":{"position":[[895,4]]},"553":{"position":[[257,4],[903,4]]},"554":{"position":[[290,4]]},"556":{"position":[[293,4]]}},"keywords":{}}],["11m",{"_index":2613,"title":{},"content":{"340":{"position":[[291,3],[342,3],[394,3],[499,3],[556,3]]}},"keywords":{}}],["12",{"_index":348,"title":{},"content":{"31":{"position":[[259,2],[262,2],[417,2],[420,2],[622,2],[625,2],[780,2],[783,2],[985,2],[988,2],[1143,2],[1146,2],[1349,2],[1352,2],[1507,2],[1510,2]]},"32":{"position":[[267,2],[270,2],[425,2],[428,2]]},"47":{"position":[[252,2],[334,2],[430,2],[512,2],[609,2],[612,2],[674,2]]},"48":{"position":[[268,2],[350,2]]}},"keywords":{}}],["12%)]\\tloss=0.4084\\ntrain",{"_index":330,"title":{},"content":{"29":{"position":[[1262,26],[2439,26]]},"558":{"position":[[1262,26],[2439,26]]}},"keywords":{}}],["12.0",{"_index":3472,"title":{},"content":{"791":{"position":[[3655,5],[19479,5]]}},"keywords":{}}],["12.1",{"_index":3462,"title":{},"content":{"791":{"position":[[3393,4],[6942,4]]}},"keywords":{}}],["12.9",{"_index":3510,"title":{},"content":{"791":{"position":[[4842,5],[20666,5]]}},"keywords":{}}],["12/100",{"_index":4088,"title":{},"content":{"965":{"position":[[9430,8]]}},"keywords":{}}],["120",{"_index":4137,"title":{},"content":{"965":{"position":[[15567,3]]}},"keywords":{}}],["123",{"_index":442,"title":{},"content":{"46":{"position":[[172,7]]},"47":{"position":[[387,6],[566,6]]},"48":{"position":[[403,6]]}},"keywords":{}}],["123.ipynb",{"_index":1715,"title":{},"content":{"147":{"position":[[866,10]]},"647":{"position":[[866,10]]}},"keywords":{}}],["1233.73",{"_index":4111,"title":{},"content":{"965":{"position":[[14751,7]]}},"keywords":{}}],["127.0.0.0/8",{"_index":3672,"title":{},"content":{"791":{"position":[[14415,11],[29964,11]]}},"keywords":{}}],["127.0.0.1:4200",{"_index":2368,"title":{},"content":{"289":{"position":[[358,15]]},"752":{"position":[[358,15]]}},"keywords":{}}],["127.0.0.1:8080",{"_index":2380,"title":{},"content":{"289":{"position":[[1223,14]]},"752":{"position":[[1223,14]]}},"keywords":{}}],["1280/60000",{"_index":311,"title":{},"content":{"29":{"position":[[825,11],[2002,11]]},"558":{"position":[[825,11],[2002,11]]}},"keywords":{}}],["12:49:33",{"_index":450,"title":{},"content":{"47":{"position":[[680,10]]}},"keywords":{}}],["13%)]\\tloss=0.4602\\ntrain",{"_index":332,"title":{},"content":{"29":{"position":[[1310,26],[2487,26]]},"558":{"position":[[1310,26],[2487,26]]}},"keywords":{}}],["13/100",{"_index":4089,"title":{},"content":{"965":{"position":[[9466,8]]}},"keywords":{}}],["130",{"_index":4140,"title":{},"content":{"965":{"position":[[15635,3]]}},"keywords":{}}],["1377.83",{"_index":4112,"title":{},"content":{"965":{"position":[[14759,10]]}},"keywords":{}}],["139",{"_index":4213,"title":{},"content":{"967":{"position":[[1924,4]]}},"keywords":{}}],["13t16:21:31.000+08:00",{"_index":2787,"title":{},"content":{"371":{"position":[[312,23],[359,23]]},"421":{"position":[[491,23]]},"845":{"position":[[312,23],[359,23]]},"874":{"position":[[491,23]]}},"keywords":{}}],["13t16:21:46.000+08:00",{"_index":2790,"title":{},"content":{"371":{"position":[[406,23]]},"845":{"position":[[406,23]]}},"keywords":{}}],["13t16:23:38.000+08:00",{"_index":2812,"title":{},"content":{"389":{"position":[[679,23]]},"392":{"position":[[426,23]]},"395":{"position":[[414,23]]},"398":{"position":[[444,23]]},"878":{"position":[[679,23]]},"881":{"position":[[426,23]]},"884":{"position":[[414,23]]},"887":{"position":[[444,23]]}},"keywords":{}}],["13t16:26:54.000+08:00",{"_index":2792,"title":{},"content":{"371":{"position":[[454,23]]},"845":{"position":[[454,23]]}},"keywords":{}}],["13t16:47:51.000+08:00",{"_index":2750,"title":{},"content":{"366":{"position":[[801,23]]},"840":{"position":[[801,23]]}},"keywords":{}}],["13t16:57:27.000+08:00",{"_index":2778,"title":{},"content":{"369":{"position":[[921,23]]},"371":{"position":[[1402,23]]},"374":{"position":[[338,23]]},"377":{"position":[[832,23]]},"843":{"position":[[921,23]]},"845":{"position":[[1402,23]]},"848":{"position":[[338,23]]},"851":{"position":[[832,23]]}},"keywords":{}}],["13t22:19:29.000+08:00",{"_index":275,"title":{},"content":{"24":{"position":[[975,23]]},"553":{"position":[[975,23]]}},"keywords":{}}],["13t22:59:29.000+08:00",{"_index":262,"title":{},"content":{"22":{"position":[[820,23]]},"23":{"position":[[967,23]]},"24":{"position":[[329,23]]},"25":{"position":[[362,23]]},"27":{"position":[[365,23]]},"551":{"position":[[820,23]]},"552":{"position":[[967,23]]},"553":{"position":[[329,23]]},"554":{"position":[[362,23]]},"556":{"position":[[365,23]]}},"keywords":{}}],["14",{"_index":449,"title":{},"content":{"47":{"position":[[677,2]]},"229":{"position":[[0,2]]},"260":{"position":[[649,4]]}},"keywords":{}}],["14%)]\\tloss=0.4289\\ntrain",{"_index":334,"title":{},"content":{"29":{"position":[[1358,26],[2535,26]]},"558":{"position":[[1358,26],[2535,26]]}},"keywords":{}}],["140",{"_index":4143,"title":{},"content":{"965":{"position":[[15703,3]]}},"keywords":{}}],["1485.43",{"_index":4113,"title":{},"content":{"965":{"position":[[14818,7]]}},"keywords":{}}],["15",{"_index":3580,"title":{},"content":{"791":{"position":[[7118,3],[22836,3]]}},"keywords":{}}],["15%)]\\tloss=0.3990\\ntrain",{"_index":336,"title":{},"content":{"29":{"position":[[1406,26],[2583,26]]},"558":{"position":[[1406,26],[2583,26]]}},"keywords":{}}],["15.0",{"_index":3575,"title":{},"content":{"791":{"position":[[6956,5]]}},"keywords":{}}],["150",{"_index":208,"title":{},"content":{"15":{"position":[[361,4]]},"18":{"position":[[358,4]]},"410":{"position":[[329,4]]},"415":{"position":[[334,4]]},"544":{"position":[[361,4]]},"547":{"position":[[358,4]]},"863":{"position":[[329,4]]},"868":{"position":[[334,4]]},"965":{"position":[[15771,3]]}},"keywords":{}}],["153",{"_index":3495,"title":{},"content":{"791":{"position":[[4299,4],[20123,4]]}},"keywords":{}}],["156",{"_index":3536,"title":{},"content":{"791":{"position":[[5551,4],[21375,4]]}},"keywords":{}}],["156fcb55fe6648d6",{"_index":4042,"title":{},"content":{"965":{"position":[[4907,16]]}},"keywords":{}}],["16",{"_index":445,"title":{},"content":{"47":{"position":[[255,2],[337,2],[433,2],[515,2]]},"48":{"position":[[271,2],[353,2]]},"324":{"position":[[1345,3]]},"774":{"position":[[798,3]]},"965":{"position":[[2084,3],[2170,3],[2256,3],[2342,3],[2428,3],[2514,3],[2600,3],[2695,3],[2699,3],[2703,3],[2785,3],[2789,3],[2873,3],[2877,3],[2961,3],[2965,3],[3049,3],[3053,3],[3137,3],[3141,3],[3223,3],[3227,3],[3311,3],[3315,3],[3399,3],[3403,3],[3487,3],[3491,3],[3575,3],[3579,3],[3663,3],[3667,3],[3751,3],[3755,3],[5290,3],[5376,3],[5462,3],[5548,3],[5634,3],[5720,3],[5806,3],[5901,3],[5905,3],[5909,3],[5991,3],[5995,3],[6079,3],[6083,3],[6167,3],[6171,3],[6255,3],[6259,3],[6343,3],[6347,3],[6431,3],[6435,3],[6519,3],[6523,3],[11501,3],[11587,3],[11673,3],[11759,3],[11845,3],[11931,3],[12017,3],[12112,3],[12116,3],[12120,3],[12202,3],[12206,3],[12290,3],[12294,3],[12378,3],[12382,3],[12466,3],[12470,3],[12554,3],[12558,3],[12640,3],[12644,3],[12728,3],[12732,3],[12816,3],[12820,3],[12904,3],[12908,3],[12992,3],[12996,3],[13080,3],[13084,3],[13168,3],[13172,3]]},"990":{"position":[[1203,2],[1405,2],[1607,2],[1809,2],[2011,2],[2216,2],[2366,2],[2513,2],[2660,2],[2807,2],[2954,2],[3161,2],[3365,2],[3569,2],[3773,2]]}},"keywords":{}}],["16%)]\\tloss=0.3852\\n",{"_index":338,"title":{},"content":{"29":{"position":[[1454,22],[2631,22]]},"558":{"position":[[1454,22],[2631,22]]}},"keywords":{}}],["16.0.0.tar.gz",{"_index":2583,"title":{},"content":{"330":{"position":[[356,13],[388,13]]},"800":{"position":[[356,13],[388,13]]},"979":{"position":[[237,13],[269,13]]},"984":{"position":[[234,13],[266,13]]},"989":{"position":[[232,13],[264,13]]}},"keywords":{}}],["16.0.0/virtualenv.pi",{"_index":2586,"title":{},"content":{"330":{"position":[[459,20]]},"800":{"position":[[459,20]]},"979":{"position":[[387,20]]},"984":{"position":[[298,20]]},"989":{"position":[[296,20]]}},"keywords":{}}],["16.9",{"_index":3524,"title":{},"content":{"791":{"position":[[5234,5],[21058,5]]}},"keywords":{}}],["160",{"_index":4148,"title":{},"content":{"965":{"position":[[15839,3]]}},"keywords":{}}],["1639276018590",{"_index":352,"title":{},"content":{"31":{"position":[[370,13],[521,13],[733,13],[884,13],[1096,13],[1247,13],[1460,13],[1611,13]]},"32":{"position":[[378,13],[529,13]]}},"keywords":{}}],["1680.27",{"_index":4115,"title":{},"content":{"965":{"position":[[14884,7]]}},"keywords":{}}],["17",{"_index":2021,"title":{},"content":{"225":{"position":[[29,2]]},"324":{"position":[[39,3]]}},"keywords":{}}],["170",{"_index":4151,"title":{},"content":{"965":{"position":[[15907,3]]},"967":{"position":[[1764,4]]}},"keywords":{}}],["179",{"_index":4153,"title":{},"content":{"965":{"position":[[15950,3]]}},"keywords":{}}],["18",{"_index":2217,"title":{},"content":{"261":{"position":[[72,2],[191,2]]}},"keywords":{}}],["18.04/dockerfile.cpu.mxnet_lat",{"_index":3859,"title":{},"content":{"951":{"position":[[126,34]]}},"keywords":{}}],["18.04/dockerfile.cpu.tf_1.13.1",{"_index":4238,"title":{},"content":{"970":{"position":[[153,31],[266,31]]}},"keywords":{}}],["18.04/dockerfile.gpu.kaldi_lat",{"_index":3331,"title":{},"content":{"778":{"position":[[99,34]]}},"keywords":{}}],["18.04/dockerfile.gpu.mxnet_lat",{"_index":3861,"title":{},"content":{"951":{"position":[[216,34]]}},"keywords":{}}],["18.04/dockerfile.gpu.pytorch_lat",{"_index":3900,"title":{},"content":{"955":{"position":[[132,36],[273,36]]}},"keywords":{}}],["18.04/dockerfile.gpu.tf_1.13.1",{"_index":4241,"title":{},"content":{"970":{"position":[[384,31],[521,31]]}},"keywords":{}}],["18.893",{"_index":4154,"title":{},"content":{"965":{"position":[[15954,7]]}},"keywords":{}}],["1825.38",{"_index":4117,"title":{},"content":{"965":{"position":[[14951,7]]}},"keywords":{}}],["18:54:39,785",{"_index":3053,"title":{},"content":{"481":{"position":[[11,12]]},"944":{"position":[[11,12]]}},"keywords":{}}],["18:54:39,789",{"_index":3072,"title":{},"content":{"481":{"position":[[1621,12]]},"944":{"position":[[1621,12]]}},"keywords":{}}],["19",{"_index":2101,"title":{},"content":{"252":{"position":[[527,2],[636,2],[772,2],[881,2],[1403,2],[1512,2],[1642,2],[1751,2]]},"260":{"position":[[2628,2],[2736,2]]}},"keywords":{}}],["19.554",{"_index":4125,"title":{},"content":{"965":{"position":[[15156,7],[15221,7]]}},"keywords":{}}],["192.168.49.2",{"_index":124,"title":{},"content":{"5":{"position":[[171,12]]},"341":{"position":[[104,12]]},"465":{"position":[[171,12]]},"744":{"position":[[1216,12]]}},"keywords":{}}],["1920/60000",{"_index":313,"title":{},"content":{"29":{"position":[[872,11],[2049,11]]},"558":{"position":[[872,11],[2049,11]]}},"keywords":{}}],["1929.32",{"_index":4119,"title":{},"content":{"965":{"position":[[15018,7]]}},"keywords":{}}],["19:59:26.496208",{"_index":3987,"title":{},"content":{"965":{"position":[[1383,16],[10800,16]]}},"keywords":{}}],["19:59:26.775660",{"_index":3999,"title":{},"content":{"965":{"position":[[1629,16],[11046,16]]}},"keywords":{}}],["19:59:29.675171",{"_index":4002,"title":{},"content":{"965":{"position":[[1879,16],[11296,16]]}},"keywords":{}}],["19:59:37.560775",{"_index":4040,"title":{},"content":{"965":{"position":[[4808,16]]}},"keywords":{}}],["1:1.0.9",{"_index":3519,"title":{},"content":{"791":{"position":[[5129,7],[10247,8],[14034,8],[20953,7],[25965,8],[29583,8]]}},"keywords":{}}],["1:2.5.1",{"_index":3468,"title":{},"content":{"791":{"position":[[3554,7],[7721,8],[13218,8],[19378,7],[23439,8],[28767,8]]}},"keywords":{}}],["1:7.2p2",{"_index":3515,"title":{},"content":{"791":{"position":[[5031,7],[6165,7],[6281,7],[10096,8],[11870,8],[12050,8],[13992,8],[16386,8],[16437,8],[20855,7],[21883,7],[21999,7],[25814,8],[27419,8],[27599,8],[29541,8],[31240,8],[31291,8]]}},"keywords":{}}],["1:9.10.3.dfsg.p4",{"_index":3493,"title":{},"content":{"791":{"position":[[4270,16],[4396,16],[8872,17],[9078,17],[13642,17],[13705,17],[20094,16],[20220,16],[24590,17],[24796,17],[29191,17],[29254,17]]}},"keywords":{}}],["1]/128",{"_index":3674,"title":{},"content":{"791":{"position":[[14450,9],[29999,9]]}},"keywords":{}}],["1_all.deb",{"_index":3642,"title":{},"content":{"791":{"position":[[12191,9],[27740,9]]}},"keywords":{}}],["1s",{"_index":714,"title":{},"content":{"53":{"position":[[9136,3]]}},"keywords":{}}],["1step",{"_index":2701,"title":{},"content":{"345":{"position":[[107,5]]},"819":{"position":[[107,5]]}},"keywords":{}}],["1ubuntu1",{"_index":3548,"title":{},"content":{"791":{"position":[[6055,8],[11686,9],[16341,9],[21773,8],[27235,9],[31195,9]]}},"keywords":{}}],["1ubuntu1_all.deb",{"_index":3639,"title":{},"content":{"791":{"position":[[11628,16],[27177,16]]}},"keywords":{}}],["1ubuntu2",{"_index":3520,"title":{},"content":{"791":{"position":[[5137,8],[10256,9],[14043,9],[20961,8],[25974,9],[29592,9]]}},"keywords":{}}],["1ubuntu2_amd64.deb",{"_index":3626,"title":{},"content":{"791":{"position":[[10208,18],[25926,18]]}},"keywords":{}}],["1ubuntu3.16.04.5",{"_index":3487,"title":{},"content":{"791":{"position":[[4050,16],[8525,17],[13516,17],[19874,16],[24243,17],[29065,17]]}},"keywords":{}}],["1ubuntu3.16.04.5_amd64.deb",{"_index":3608,"title":{},"content":{"791":{"position":[[8468,26],[24186,26]]}},"keywords":{}}],["2",{"_index":137,"title":{"93":{"position":[[5,2]]},"250":{"position":[[0,2]]},"265":{"position":[[0,2]]},"294":{"position":[[0,2]]},"344":{"position":[[0,2]]},"482":{"position":[[6,2]]},"607":{"position":[[5,2]]},"761":{"position":[[0,2]]},"818":{"position":[[0,2]]},"945":{"position":[[6,2]]}},"content":{"6":{"position":[[116,3]]},"10":{"position":[[743,3]]},"26":{"position":[[508,2],[1111,2]]},"27":{"position":[[803,2]]},"31":{"position":[[955,1]]},"91":{"position":[[91,2],[593,2]]},"92":{"position":[[212,1]]},"101":{"position":[[65,2]]},"102":{"position":[[395,2]]},"134":{"position":[[345,2]]},"160":{"position":[[553,1]]},"178":{"position":[[489,1],[575,1]]},"181":{"position":[[224,1],[310,1]]},"242":{"position":[[44,2]]},"251":{"position":[[335,3]]},"252":{"position":[[1148,1]]},"260":{"position":[[589,3]]},"281":{"position":[[287,2],[992,2]]},"286":{"position":[[399,2]]},"289":{"position":[[1307,2]]},"324":{"position":[[1128,2]]},"340":{"position":[[235,1]]},"341":{"position":[[126,1],[358,2]]},"343":{"position":[[943,4],[1038,4]]},"377":{"position":[[467,2]]},"425":{"position":[[632,2]]},"466":{"position":[[116,3]]},"502":{"position":[[2874,2]]},"539":{"position":[[743,3]]},"555":{"position":[[508,2],[1111,2]]},"556":{"position":[[803,2]]},"605":{"position":[[91,2],[593,2]]},"606":{"position":[[212,1]]},"615":{"position":[[65,2]]},"616":{"position":[[395,2]]},"662":{"position":[[345,2]]},"667":{"position":[[553,1]]},"685":{"position":[[489,1],[575,1]]},"688":{"position":[[224,1],[310,1]]},"744":{"position":[[1489,1]]},"745":{"position":[[44,2]]},"752":{"position":[[1307,2]]},"774":{"position":[[581,2]]},"777":{"position":[[157,2],[320,2]]},"788":{"position":[[422,2]]},"791":{"position":[[4933,1],[5445,1],[6496,1],[9934,2],[10719,2],[12402,2],[13959,2],[15103,2],[17180,2],[20757,1],[21269,1],[22214,1],[25652,2],[26437,2],[27951,2],[29508,2],[30652,2],[32034,2]]},"817":{"position":[[961,4],[1056,4]]},"851":{"position":[[467,2]]},"899":{"position":[[632,2]]},"950":{"position":[[130,2],[301,2]]},"954":{"position":[[134,2],[307,2]]},"961":{"position":[[208,1],[424,1]]},"965":{"position":[[7996,2]]},"969":{"position":[[138,2],[307,2]]},"980":{"position":[[430,1],[600,1],[723,1]]},"981":{"position":[[1300,2]]},"985":{"position":[[397,1],[450,1]]},"990":{"position":[[351,1],[542,1]]},"991":{"position":[[617,1],[797,1]]}},"keywords":{}}],["2%)]\\tloss=2.1704\\ntrain",{"_index":312,"title":{},"content":{"29":{"position":[[837,25],[2014,25]]},"558":{"position":[[837,25],[2014,25]]}},"keywords":{}}],["2.0",{"_index":807,"title":{},"content":{"56":{"position":[[30,3],[108,3]]},"87":{"position":[[42,3]]},"565":{"position":[[30,3],[108,3]]},"594":{"position":[[42,3]]},"934":{"position":[[510,3]]}},"keywords":{}}],["2.0dock",{"_index":2538,"title":{},"content":{"327":{"position":[[911,9]]}},"keywords":{}}],["2.1",{"_index":2079,"title":{"251":{"position":[[0,3]]},"295":{"position":[[0,4]]},"762":{"position":[[0,4]]}},"content":{},"keywords":{}}],["2.1.0",{"_index":1846,"title":{},"content":{"178":{"position":[[201,7]]},"179":{"position":[[334,5]]},"685":{"position":[[201,7]]},"686":{"position":[[334,5]]}},"keywords":{}}],["2.10",{"_index":3273,"title":{"771":{"position":[[0,4]]}},"content":{"734":{"position":[[369,4]]}},"keywords":{}}],["2.10.0",{"_index":3013,"title":{},"content":{"476":{"position":[[148,7],[199,7]]}},"keywords":{}}],["2.10.x",{"_index":3272,"title":{},"content":{"734":{"position":[[315,6]]}},"keywords":{}}],["2.11+dfsg",{"_index":3480,"title":{},"content":{"791":{"position":[[3935,9],[8354,10],[13388,10],[19759,9],[24072,10],[28937,10]]}},"keywords":{}}],["2.2",{"_index":2084,"title":{"252":{"position":[[0,3]]},"296":{"position":[[0,4]]},"763":{"position":[[0,4]]}},"content":{},"keywords":{}}],["2.2.20",{"_index":2175,"title":{},"content":{"260":{"position":[[343,7]]}},"keywords":{}}],["2.2.21",{"_index":2089,"title":{},"content":{"252":{"position":[[277,7]]}},"keywords":{}}],["2.23",{"_index":3657,"title":{},"content":{"791":{"position":[[13172,5],[17410,5],[28721,5],[32264,5]]}},"keywords":{}}],["2.3",{"_index":2135,"title":{"253":{"position":[[0,3]]},"297":{"position":[[0,4]]},"764":{"position":[[0,4]]}},"content":{"934":{"position":[[449,4]]}},"keywords":{}}],["2.3.0",{"_index":3558,"title":{},"content":{"791":{"position":[[6490,5],[12395,6],[17173,6],[22208,5],[27944,6],[32027,6]]}},"keywords":{}}],["2.3.x",{"_index":3792,"title":{},"content":{"934":{"position":[[291,5]]}},"keywords":{}}],["2.4",{"_index":2142,"title":{"254":{"position":[[0,4]]},"298":{"position":[[0,4]]},"765":{"position":[[0,4]]}},"content":{"934":{"position":[[462,4]]}},"keywords":{}}],["2.5",{"_index":2150,"title":{"255":{"position":[[0,3]]},"299":{"position":[[0,4]]},"766":{"position":[[0,4]]}},"content":{},"keywords":{}}],["2.6",{"_index":2394,"title":{"300":{"position":[[0,4]]},"767":{"position":[[0,4]]}},"content":{},"keywords":{}}],["2.7",{"_index":2395,"title":{"301":{"position":[[0,4]]},"768":{"position":[[0,4]]}},"content":{},"keywords":{}}],["2.7.3",{"_index":3012,"title":{},"content":{"476":{"position":[[39,5]]}},"keywords":{}}],["2.8",{"_index":2396,"title":{"302":{"position":[[0,4]]},"769":{"position":[[0,4]]}},"content":{},"keywords":{}}],["2.8.2",{"_index":3016,"title":{},"content":{"476":{"position":[[331,6],[371,6]]}},"keywords":{}}],["2.9",{"_index":2403,"title":{"303":{"position":[[0,3]]},"770":{"position":[[0,4]]}},"content":{"306":{"position":[[508,3]]},"734":{"position":[[267,3]]},"757":{"position":[[508,3]]},"978":{"position":[[99,3]]},"983":{"position":[[96,3]]},"988":{"position":[[87,3]]}},"keywords":{}}],["2.9.1",{"_index":3567,"title":{},"content":{"791":{"position":[[6808,5],[12900,6],[17310,6],[22526,5],[28449,6],[32164,6]]}},"keywords":{}}],["2.9.tar.gz",{"_index":2491,"title":{},"content":{"324":{"position":[[117,10],[679,10],[950,10]]},"774":{"position":[[132,10],[403,10]]}},"keywords":{}}],["2.9.x",{"_index":3271,"title":{},"content":{"734":{"position":[[214,5]]}},"keywords":{}}],["2.x",{"_index":2166,"title":{},"content":{"259":{"position":[[174,3]]}},"keywords":{}}],["2/100",{"_index":4078,"title":{},"content":{"965":{"position":[[9078,7]]}},"keywords":{}}],["20",{"_index":3052,"title":{},"content":{"481":{"position":[[8,2],[1618,2]]},"791":{"position":[[7144,3],[22862,3]]},"944":{"position":[[8,2],[1618,2]]},"965":{"position":[[14777,2]]}},"keywords":{}}],["20.7.0",{"_index":3555,"title":{},"content":{"791":{"position":[[6393,6],[12237,7],[17131,7],[22111,6],[27786,7],[31985,7]]}},"keywords":{}}],["200",{"_index":178,"title":{},"content":{"9":{"position":[[595,4]]},"10":{"position":[[144,4]]},"11":{"position":[[168,4]]},"12":{"position":[[491,4]]},"13":{"position":[[171,4]]},"22":{"position":[[635,4]]},"23":{"position":[[782,4]]},"24":{"position":[[142,4]]},"25":{"position":[[177,4]]},"26":{"position":[[673,4]]},"27":{"position":[[180,4]]},"28":{"position":[[152,4]]},"29":{"position":[[187,4]]},"31":{"position":[[168,4]]},"32":{"position":[[180,4]]},"33":{"position":[[325,4]]},"34":{"position":[[185,4]]},"35":{"position":[[233,4]]},"41":{"position":[[154,4]]},"47":{"position":[[158,4]]},"48":{"position":[[178,4]]},"49":{"position":[[281,4]]},"50":{"position":[[183,4]]},"52":{"position":[[219,4]]},"538":{"position":[[595,4]]},"539":{"position":[[144,4]]},"540":{"position":[[168,4]]},"541":{"position":[[491,4]]},"542":{"position":[[171,4]]},"551":{"position":[[635,4]]},"552":{"position":[[782,4]]},"553":{"position":[[142,4]]},"554":{"position":[[177,4]]},"555":{"position":[[673,4]]},"556":{"position":[[180,4]]},"557":{"position":[[152,4]]},"558":{"position":[[187,4]]},"563":{"position":[[154,4]]}},"keywords":{}}],["2015.17",{"_index":4121,"title":{},"content":{"965":{"position":[[15085,7]]}},"keywords":{}}],["2017",{"_index":3986,"title":{},"content":{"965":{"position":[[1372,4],[1618,4],[1868,4],[4797,4],[7485,4],[7505,4],[7684,4],[7863,4],[8042,4],[8221,4],[8400,4],[8579,4],[8758,4],[9555,4],[10789,4],[11035,4],[11285,4],[14139,4],[14303,4],[16919,4],[17078,4],[17233,4],[17392,4]]}},"keywords":{}}],["2018",{"_index":3050,"title":{},"content":{"481":{"position":[[0,4],[1610,4]]},"482":{"position":[[0,4]]},"944":{"position":[[0,4],[1610,4]]},"945":{"position":[[0,4]]}},"keywords":{}}],["2019",{"_index":590,"title":{},"content":{"53":{"position":[[3753,4]]},"324":{"position":[[1131,4],[1349,4]]},"774":{"position":[[584,4],[802,4]]},"980":{"position":[[1041,4],[1242,4],[1443,4],[1640,4],[1783,4],[1930,4],[2077,4],[2275,4],[2477,4]]},"985":{"position":[[901,4],[1102,4],[1303,4],[1500,4],[1643,4],[1790,4],[1937,4],[2135,4],[2337,4]]}},"keywords":{}}],["2020",{"_index":260,"title":{},"content":{"22":{"position":[[811,5]]},"23":{"position":[[958,5]]},"24":{"position":[[320,5],[966,5]]},"25":{"position":[[353,5]]},"27":{"position":[[356,5]]},"41":{"position":[[469,5],[517,5]]},"252":{"position":[[299,4],[519,4],[628,4],[764,4],[873,4],[1395,4],[1504,4],[1634,4],[1743,4],[2641,4]]},"260":{"position":[[365,4],[2620,4],[2728,4]]},"261":{"position":[[64,4],[183,4]]},"324":{"position":[[43,4],[590,4],[861,4]]},"551":{"position":[[811,5]]},"552":{"position":[[958,5]]},"553":{"position":[[320,5],[966,5]]},"554":{"position":[[353,5]]},"556":{"position":[[356,5]]},"563":{"position":[[469,5],[517,5]]},"774":{"position":[[43,4],[314,4]]},"990":{"position":[[1195,4],[1397,4],[1599,4],[1801,4],[2003,4],[2208,4],[2358,4],[2505,4],[2652,4],[2799,4],[2946,4],[3153,4],[3357,4],[3561,4],[3765,4]]}},"keywords":{}}],["2021",{"_index":37,"title":{},"content":{"3":{"position":[[172,4]]},"31":{"position":[[253,5],[411,5],[616,5],[774,5],[979,5],[1137,5],[1343,5],[1501,5]]},"32":{"position":[[261,5],[419,5]]},"47":{"position":[[246,5],[328,5],[424,5],[506,5],[603,5],[668,5]]},"48":{"position":[[262,5],[344,5]]},"463":{"position":[[172,4]]}},"keywords":{}}],["2048",{"_index":2181,"title":{},"content":{"260":{"position":[[785,6]]},"791":{"position":[[16513,4],[31367,4]]}},"keywords":{}}],["2074.92",{"_index":4126,"title":{},"content":{"965":{"position":[[15272,7]]}},"keywords":{}}],["20:00:14",{"_index":4049,"title":{},"content":{"965":{"position":[[7496,8]]}},"keywords":{}}],["20:00:15.745881",{"_index":4050,"title":{},"content":{"965":{"position":[[7516,16]]}},"keywords":{}}],["20:00:15.745949",{"_index":4055,"title":{},"content":{"965":{"position":[[7695,16]]}},"keywords":{}}],["20:00:15.745958",{"_index":4057,"title":{},"content":{"965":{"position":[[7874,16]]}},"keywords":{}}],["20:00:15.745964",{"_index":4060,"title":{},"content":{"965":{"position":[[8053,16]]}},"keywords":{}}],["20:00:15.745969",{"_index":4063,"title":{},"content":{"965":{"position":[[8232,16]]}},"keywords":{}}],["20:00:15.745975",{"_index":4066,"title":{},"content":{"965":{"position":[[8411,16]]}},"keywords":{}}],["20:00:15.745987",{"_index":4069,"title":{},"content":{"965":{"position":[[8590,16]]}},"keywords":{}}],["20:00:15.745997",{"_index":4072,"title":{},"content":{"965":{"position":[[8769,16]]}},"keywords":{}}],["20:00:31",{"_index":4092,"title":{},"content":{"965":{"position":[[9566,8]]}},"keywords":{}}],["20:23:43,834",{"_index":4332,"title":{},"content":{"990":{"position":[[1206,12],[1408,12],[1610,12],[1812,12],[2014,12]]}},"keywords":{}}],["20:23:43,839",{"_index":4338,"title":{},"content":{"990":{"position":[[2219,12],[2369,12]]}},"keywords":{}}],["20:23:43,840",{"_index":4339,"title":{},"content":{"990":{"position":[[2516,12],[2663,12],[2810,12]]}},"keywords":{}}],["20:30:42,611",{"_index":4280,"title":{},"content":{"980":{"position":[[1052,12]]},"985":{"position":[[912,12]]}},"keywords":{}}],["20:30:42,612",{"_index":4285,"title":{},"content":{"980":{"position":[[1253,12],[1454,12],[1651,12],[1794,12],[1941,12]]},"985":{"position":[[1113,12],[1314,12],[1511,12],[1654,12],[1801,12]]}},"keywords":{}}],["20:30:44,625",{"_index":4288,"title":{},"content":{"980":{"position":[[2088,12],[2286,12]]},"985":{"position":[[1948,12],[2146,12]]}},"keywords":{}}],["20:30:44,626",{"_index":4289,"title":{},"content":{"980":{"position":[[2488,12]]},"985":{"position":[[2348,12]]}},"keywords":{}}],["20t21:58:27.000+08:00",{"_index":399,"title":{},"content":{"38":{"position":[[716,23]]},"39":{"position":[[458,23]]},"40":{"position":[[449,23]]},"560":{"position":[[716,23]]},"561":{"position":[[458,23]]},"562":{"position":[[449,23]]}},"keywords":{}}],["21",{"_index":3083,"title":{},"content":{"482":{"position":[[8,2]]},"945":{"position":[[8,2]]}},"keywords":{}}],["210",{"_index":4180,"title":{},"content":{"967":{"position":[[465,4]]}},"keywords":{}}],["2132.71",{"_index":4128,"title":{},"content":{"965":{"position":[[15339,7]]}},"keywords":{}}],["21398",{"_index":3594,"title":{},"content":{"791":{"position":[[7587,5],[23305,5]]}},"keywords":{}}],["2183.38",{"_index":4130,"title":{},"content":{"965":{"position":[[15406,7]]}},"keywords":{}}],["21:02:09,723",{"_index":4340,"title":{},"content":{"990":{"position":[[2957,12]]}},"keywords":{}}],["21:02:09,736",{"_index":4341,"title":{},"content":{"990":{"position":[[3164,12]]}},"keywords":{}}],["21:02:09,737",{"_index":4342,"title":{},"content":{"990":{"position":[[3368,12],[3572,12],[3776,12]]}},"keywords":{}}],["22",{"_index":4279,"title":{},"content":{"980":{"position":[[1049,2],[1250,2],[1451,2],[1648,2],[1791,2],[1938,2],[2085,2],[2283,2],[2485,2]]},"985":{"position":[[909,2],[1110,2],[1311,2],[1508,2],[1651,2],[1798,2],[1945,2],[2143,2],[2345,2]]}},"keywords":{}}],["22.7",{"_index":3521,"title":{},"content":{"791":{"position":[[5146,5],[20970,5]]}},"keywords":{}}],["2224.4",{"_index":4132,"title":{},"content":{"965":{"position":[[15474,6]]}},"keywords":{}}],["224",{"_index":3501,"title":{},"content":{"791":{"position":[[4541,4],[20365,4]]}},"keywords":{}}],["2240.28",{"_index":4135,"title":{},"content":{"965":{"position":[[15541,7]]}},"keywords":{}}],["2272.12",{"_index":4138,"title":{},"content":{"965":{"position":[[15609,7]]}},"keywords":{}}],["229",{"_index":3654,"title":{},"content":{"791":{"position":[[13116,4],[17463,4],[28665,4],[32317,4]]}},"keywords":{}}],["22:38:04.629150",{"_index":4100,"title":{},"content":{"965":{"position":[[14150,16]]}},"keywords":{}}],["22:38:09.263492",{"_index":4104,"title":{},"content":{"965":{"position":[[14314,16]]}},"keywords":{}}],["22:54:58.928088",{"_index":4157,"title":{},"content":{"965":{"position":[[16930,16]]}},"keywords":{}}],["22:54:58.928153",{"_index":4160,"title":{},"content":{"965":{"position":[[17089,16]]}},"keywords":{}}],["22:54:58.928160",{"_index":4162,"title":{},"content":{"965":{"position":[[17244,16]]}},"keywords":{}}],["22:54:58.929873",{"_index":4163,"title":{},"content":{"965":{"position":[[17403,16]]}},"keywords":{}}],["22t14:03:19.000+08:00",{"_index":427,"title":{},"content":{"41":{"position":[[478,23]]},"563":{"position":[[478,23]]}},"keywords":{}}],["22t14:46:28+0800",{"_index":429,"title":{},"content":{"41":{"position":[[526,18]]},"563":{"position":[[526,18]]}},"keywords":{}}],["2300.68",{"_index":4141,"title":{},"content":{"965":{"position":[[15677,7]]}},"keywords":{}}],["2325.81",{"_index":4144,"title":{},"content":{"965":{"position":[[15745,7]]}},"keywords":{}}],["2347.14",{"_index":4146,"title":{},"content":{"965":{"position":[[15813,7]]}},"keywords":{}}],["2367.74",{"_index":4149,"title":{},"content":{"965":{"position":[[15881,7]]}},"keywords":{}}],["24",{"_index":892,"title":{},"content":{"69":{"position":[[451,2]]},"284":{"position":[[377,2]]},"286":{"position":[[104,2]]},"578":{"position":[[451,2]]}},"keywords":{}}],["24.2",{"_index":3469,"title":{},"content":{"791":{"position":[[3566,5],[19390,5]]}},"keywords":{}}],["2429",{"_index":3545,"title":{},"content":{"791":{"position":[[5957,5]]}},"keywords":{}}],["2431.26",{"_index":4136,"title":{},"content":{"965":{"position":[[15549,10]]}},"keywords":{}}],["249",{"_index":3549,"title":{},"content":{"791":{"position":[[6064,4],[21782,4]]}},"keywords":{}}],["25",{"_index":3581,"title":{},"content":{"791":{"position":[[7170,3],[22888,3]]}},"keywords":{}}],["2500.00",{"_index":3774,"title":{},"content":{"912":{"position":[[297,8]]},"913":{"position":[[294,8]]}},"keywords":{}}],["2509.3",{"_index":4114,"title":{},"content":{"965":{"position":[[14826,9]]}},"keywords":{}}],["252",{"_index":4207,"title":{},"content":{"967":{"position":[[1618,4]]}},"keywords":{}}],["255",{"_index":2645,"title":{},"content":{"343":{"position":[[515,4],[601,3]]},"817":{"position":[[533,4],[619,3]]}},"keywords":{}}],["256",{"_index":3712,"title":{},"content":{"791":{"position":[[16777,3],[16913,3],[31631,3],[31767,3]]}},"keywords":{}}],["2560/60000",{"_index":315,"title":{},"content":{"29":{"position":[[919,11],[2096,11]]},"558":{"position":[[919,11],[2096,11]]}},"keywords":{}}],["2618.36",{"_index":4127,"title":{},"content":{"965":{"position":[[15280,10]]}},"keywords":{}}],["2697.27",{"_index":4120,"title":{},"content":{"965":{"position":[[15026,10]]}},"keywords":{}}],["27.2",{"_index":3507,"title":{},"content":{"791":{"position":[[4758,5],[20582,5]]}},"keywords":{}}],["27.8453",{"_index":4152,"title":{},"content":{"965":{"position":[[15934,8]]}},"keywords":{}}],["2721.53",{"_index":4147,"title":{},"content":{"965":{"position":[[15821,10]]}},"keywords":{}}],["2739.03",{"_index":4133,"title":{},"content":{"965":{"position":[[15481,10]]}},"keywords":{}}],["2739.32",{"_index":4139,"title":{},"content":{"965":{"position":[[15617,10]]}},"keywords":{}}],["2744.13",{"_index":4129,"title":{},"content":{"965":{"position":[[15347,10]]}},"keywords":{}}],["2745.63",{"_index":4145,"title":{},"content":{"965":{"position":[[15753,10]]}},"keywords":{}}],["2749.05",{"_index":4122,"title":{},"content":{"965":{"position":[[15093,10]]}},"keywords":{}}],["2750.03",{"_index":4142,"title":{},"content":{"965":{"position":[[15685,10]]}},"keywords":{}}],["2754.54",{"_index":4150,"title":{},"content":{"965":{"position":[[15889,10]]}},"keywords":{}}],["2770.39",{"_index":4116,"title":{},"content":{"965":{"position":[[14892,10]]}},"keywords":{}}],["2777.21",{"_index":4131,"title":{},"content":{"965":{"position":[[15414,10]]}},"keywords":{}}],["2788.78",{"_index":4118,"title":{},"content":{"965":{"position":[[14959,10]]}},"keywords":{}}],["28",{"_index":2660,"title":{},"content":{"343":{"position":[[900,3]]},"817":{"position":[[918,3]]}},"keywords":{}}],["28e39dcd",{"_index":253,"title":{},"content":{"22":{"position":[[733,9]]},"23":{"position":[[880,9]]},"24":{"position":[[242,9]]},"25":{"position":[[275,9]]},"27":{"position":[[278,9]]},"551":{"position":[[733,9]]},"552":{"position":[[880,9]]},"553":{"position":[[242,9]]},"554":{"position":[[275,9]]},"556":{"position":[[278,9]]}},"keywords":{}}],["29",{"_index":35,"title":{},"content":{"3":{"position":[[160,2]]},"463":{"position":[[160,2]]}},"keywords":{}}],["292",{"_index":4192,"title":{},"content":{"967":{"position":[[1057,4]]}},"keywords":{}}],["2:1.1.2",{"_index":3512,"title":{},"content":{"791":{"position":[[4925,7],[9925,8],[13950,8],[20749,7],[25643,8],[29499,8]]}},"keywords":{}}],["2>/dev/nul",{"_index":3115,"title":{},"content":{"484":{"position":[[636,12]]},"947":{"position":[[636,12]]}},"keywords":{}}],["2_all.deb",{"_index":3644,"title":{},"content":{"791":{"position":[[12355,9],[27904,9]]}},"keywords":{}}],["2_amd64.deb",{"_index":3622,"title":{},"content":{"791":{"position":[[9884,11],[10662,11],[25602,11],[26380,11]]}},"keywords":{}}],["2dd587e7b10f3b1f",{"_index":2207,"title":{},"content":{"260":{"position":[[2398,16]]}},"keywords":{}}],["2ff820bb4d93",{"_index":2777,"title":{},"content":{"369":{"position":[[861,14]]},"371":{"position":[[1342,14]]},"374":{"position":[[278,14]]},"377":{"position":[[772,14]]},"380":{"position":[[281,14]]},"843":{"position":[[861,14]]},"845":{"position":[[1342,14]]},"848":{"position":[[278,14]]},"851":{"position":[[772,14]]},"854":{"position":[[281,14]]}},"keywords":{}}],["2m",{"_index":3395,"title":{},"content":{"791":{"position":[[1461,2]]}},"keywords":{}}],["2s",{"_index":3720,"title":{},"content":{"791":{"position":[[22671,2]]}},"keywords":{}}],["2step",{"_index":2702,"title":{},"content":{"345":{"position":[[113,5]]},"819":{"position":[[113,5]]}},"keywords":{}}],["2ubuntu0.16.04.3",{"_index":3564,"title":{},"content":{"791":{"position":[[6694,16],[12723,17],[17260,17],[22412,16],[28272,17],[32114,17]]}},"keywords":{}}],["2ubuntu0.16.04.3_all.deb",{"_index":3648,"title":{},"content":{"791":{"position":[[12660,24],[28209,24]]}},"keywords":{}}],["2ubuntu3",{"_index":3506,"title":{},"content":{"791":{"position":[[4749,8],[9637,9],[13881,9],[20573,8],[25355,9],[29430,9]]}},"keywords":{}}],["2ubuntu3_amd64.deb",{"_index":3618,"title":{},"content":{"791":{"position":[[9578,18],[25296,18]]}},"keywords":{}}],["2⁄3",{"_index":686,"title":{},"content":{"53":{"position":[[7967,3],[7987,3],[9620,3],[10074,3],[10252,3],[10489,3]]}},"keywords":{}}],["3",{"_index":363,"title":{"94":{"position":[[5,2]]},"266":{"position":[[0,2]]},"345":{"position":[[0,2]]},"608":{"position":[[5,2]]},"819":{"position":[[0,2]]}},"content":{"31":{"position":[[1319,1]]},"53":{"position":[[7738,1],[7903,1],[8024,1]]},"79":{"position":[[827,1]]},"91":{"position":[[295,2]]},"101":{"position":[[152,2]]},"102":{"position":[[452,2],[1786,2]]},"134":{"position":[[837,2]]},"157":{"position":[[718,2]]},"161":{"position":[[559,1]]},"228":{"position":[[8,1]]},"252":{"position":[[1167,1]]},"260":{"position":[[609,3]]},"281":{"position":[[294,2],[1057,2]]},"286":{"position":[[406,2]]},"330":{"position":[[438,1]]},"343":{"position":[[856,3],[860,3],[976,3],[980,3],[1071,3],[1075,3]]},"345":{"position":[[91,1]]},"605":{"position":[[295,2]]},"615":{"position":[[152,2]]},"616":{"position":[[452,2],[1798,2]]},"657":{"position":[[718,2]]},"662":{"position":[[837,2]]},"668":{"position":[[559,1]]},"777":{"position":[[270,2]]},"788":{"position":[[530,2]]},"791":{"position":[[6589,1],[12549,2],[17218,2],[22307,1],[28098,2],[32072,2]]},"800":{"position":[[438,1]]},"817":{"position":[[874,3],[878,3],[994,3],[998,3],[1089,3],[1093,3]]},"819":{"position":[[91,1]]},"950":{"position":[[251,2]]},"954":{"position":[[255,2]]},"965":{"position":[[1511,1],[1757,1],[8175,2],[10928,1],[11174,1]]},"969":{"position":[[252,2]]},"979":{"position":[[319,2],[357,1]]}},"keywords":{}}],["3%)]\\tloss=2.0766\\ntrain",{"_index":314,"title":{},"content":{"29":{"position":[[884,25],[2061,25]]},"558":{"position":[[884,25],[2061,25]]}},"keywords":{}}],["3.0",{"_index":3796,"title":{},"content":{"934":{"position":[[475,3]]}},"keywords":{}}],["3.1",{"_index":2277,"title":{"267":{"position":[[0,3]]}},"content":{"303":{"position":[[411,4],[593,5]]},"734":{"position":[[471,3]]},"771":{"position":[[411,4],[593,5]]}},"keywords":{}}],["3.1.0",{"_index":3014,"title":{},"content":{"476":{"position":[[160,8]]},"791":{"position":[[5324,5],[10534,6],[14109,6],[21148,5],[26252,6],[29658,6]]},"981":{"position":[[842,5],[935,5],[974,5],[1015,5],[1054,5]]}},"keywords":{}}],["3.1.0/bin/hadoop",{"_index":4295,"title":{},"content":{"981":{"position":[[476,16]]}},"keywords":{}}],["3.1.0/etc/hadoop",{"_index":4307,"title":{},"content":{"981":{"position":[[1092,16]]}},"keywords":{}}],["3.1.2",{"_index":4321,"title":{},"content":{"986":{"position":[[552,5],[645,5],[684,5],[725,5],[764,5]]}},"keywords":{}}],["3.1.2/etc/hadoop",{"_index":4322,"title":{},"content":{"986":{"position":[[802,16]]}},"keywords":{}}],["3.1.x",{"_index":3274,"title":{},"content":{"734":{"position":[[418,5]]}},"keywords":{}}],["3.2",{"_index":2281,"title":{"268":{"position":[[0,3]]}},"content":{"734":{"position":[[572,3]]}},"keywords":{}}],["3.2.0",{"_index":2523,"title":{},"content":{"324":{"position":[[1476,5]]},"774":{"position":[[929,5]]}},"keywords":{}}],["3.2.x",{"_index":3275,"title":{},"content":{"734":{"position":[[519,5]]}},"keywords":{}}],["3.3",{"_index":1987,"title":{"269":{"position":[[0,3]]}},"content":{"217":{"position":[[13,3]]},"226":{"position":[[0,3]]},"235":{"position":[[13,3]]},"731":{"position":[[13,3]]},"739":{"position":[[13,3]]}},"keywords":{}}],["3.4",{"_index":2297,"title":{"270":{"position":[[0,3]]}},"content":{},"keywords":{}}],["3.5",{"_index":2303,"title":{"271":{"position":[[0,3]]}},"content":{},"keywords":{}}],["3.6",{"_index":2027,"title":{"272":{"position":[[0,3]]}},"content":{"231":{"position":[[42,4]]}},"keywords":{}}],["3.6.1",{"_index":2003,"title":{},"content":{"221":{"position":[[130,6]]},"735":{"position":[[130,6]]}},"keywords":{}}],["3.7",{"_index":2028,"title":{},"content":{"231":{"position":[[47,3]]}},"keywords":{}}],["3.8",{"_index":2029,"title":{},"content":{"231":{"position":[[53,3]]}},"keywords":{}}],["3.8.1",{"_index":1988,"title":{},"content":{"217":{"position":[[30,5]]},"226":{"position":[[17,5]]},"235":{"position":[[30,5]]},"731":{"position":[[30,5]]},"739":{"position":[[30,5]]}},"keywords":{}}],["3/100",{"_index":4079,"title":{},"content":{"965":{"position":[[9113,7]]}},"keywords":{}}],["30",{"_index":1680,"title":{},"content":{"140":{"position":[[505,3],[1469,3]]},"252":{"position":[[2629,2]]},"640":{"position":[[505,3],[1469,3]]},"791":{"position":[[3364,2],[7196,3],[17615,2],[19188,2],[22914,3],[32469,2]]},"965":{"position":[[14843,2]]}},"keywords":{}}],["30070",{"_index":3199,"title":{},"content":{"495":{"position":[[683,5]]}},"keywords":{}}],["31",{"_index":4099,"title":{},"content":{"965":{"position":[[14147,2],[14311,2],[16927,2],[17086,2],[17241,2],[17400,2]]}},"keywords":{}}],["32",{"_index":1790,"title":{},"content":{"157":{"position":[[1224,2]]},"657":{"position":[[1224,2]]},"791":{"position":[[19152,2]]},"965":{"position":[[2088,3],[2092,3],[2174,3],[2178,3],[2260,3],[2264,3],[2346,3],[2350,3],[2432,3],[2436,3],[2518,3],[2522,3],[2604,3],[2608,3],[2781,3],[2869,3],[2957,3],[3045,3],[3133,3],[3219,3],[3307,3],[3395,3],[3483,3],[3571,3],[3659,3],[3747,3],[3842,3],[5294,3],[5298,3],[5380,3],[5384,3],[5466,3],[5470,3],[5552,3],[5556,3],[5638,3],[5642,3],[5724,3],[5728,3],[5810,3],[5814,3],[5987,3],[6075,3],[6163,3],[6251,3],[6339,3],[6427,3],[6515,3],[6610,3],[11505,3],[11509,3],[11591,3],[11595,3],[11677,3],[11681,3],[11763,3],[11767,3],[11849,3],[11853,3],[11935,3],[11939,3],[12021,3],[12025,3],[12198,3],[12286,3],[12374,3],[12462,3],[12550,3],[12636,3],[12724,3],[12812,3],[12900,3],[12988,3],[13076,3],[13164,3],[13259,3]]}},"keywords":{}}],["3200/60000",{"_index":317,"title":{},"content":{"29":{"position":[[966,11],[2143,11]]},"558":{"position":[[966,11],[2143,11]]}},"keywords":{}}],["32080",{"_index":114,"title":{},"content":{"5":{"position":[[18,5]]},"314":{"position":[[838,5]]},"445":{"position":[[177,5]]},"465":{"position":[[18,5]]},"786":{"position":[[838,5]]}},"keywords":{}}],["32080:80",{"_index":128,"title":{},"content":{"5":{"position":[[286,8]]},"289":{"position":[[176,8]]},"341":{"position":[[216,8]]},"465":{"position":[[286,8]]},"744":{"position":[[1340,8]]},"752":{"position":[[176,8]]},"815":{"position":[[107,8]]}},"keywords":{}}],["321",{"_index":1867,"title":{},"content":{"182":{"position":[[28,3]]},"689":{"position":[[28,3]]}},"keywords":{}}],["33",{"_index":3460,"title":{},"content":{"791":{"position":[[3328,2]]}},"keywords":{}}],["3306:3306",{"_index":3145,"title":{},"content":{"488":{"position":[[176,9]]}},"keywords":{}}],["331",{"_index":4202,"title":{},"content":{"967":{"position":[[1437,4]]}},"keywords":{}}],["335",{"_index":3553,"title":{},"content":{"791":{"position":[[6300,4],[22018,4]]}},"keywords":{}}],["3394",{"_index":3538,"title":{},"content":{"791":{"position":[[5656,5],[21480,5]]}},"keywords":{}}],["35",{"_index":3582,"title":{},"content":{"791":{"position":[[7222,3],[22940,3]]}},"keywords":{}}],["37.6272",{"_index":4123,"title":{},"content":{"965":{"position":[[15137,8],[15192,8]]}},"keywords":{}}],["371",{"_index":4312,"title":{},"content":{"981":{"position":[[1426,3]]}},"keywords":{}}],["38.9",{"_index":3551,"title":{},"content":{"791":{"position":[[6184,5],[21902,5]]}},"keywords":{}}],["384.81nvidia",{"_index":2537,"title":{},"content":{"327":{"position":[[881,12]]}},"keywords":{}}],["3840/60000",{"_index":319,"title":{},"content":{"29":{"position":[[1013,11],[2190,11]]},"558":{"position":[[1013,11],[2190,11]]}},"keywords":{}}],["38e39dcd",{"_index":274,"title":{},"content":{"24":{"position":[[888,9]]},"553":{"position":[[888,9]]}},"keywords":{}}],["39",{"_index":1354,"title":{},"content":{"102":{"position":[[1768,3]]},"157":{"position":[[700,3]]},"616":{"position":[[1780,3]]},"657":{"position":[[700,3]]}},"keywords":{}}],["3_all.deb",{"_index":3646,"title":{},"content":{"791":{"position":[[12505,9],[28054,9]]}},"keywords":{}}],["3dde3f6869",{"_index":1497,"title":{},"content":{"115":{"position":[[299,12]]},"599":{"position":[[299,12]]}},"keywords":{}}],["3h33m",{"_index":3735,"title":{},"content":{"814":{"position":[[187,5],[241,5],[297,5],[350,5],[403,5],[457,5],[516,5],[571,5],[623,5]]}},"keywords":{}}],["3rd",{"_index":1409,"title":{},"content":{"107":{"position":[[439,3]]},"108":{"position":[[183,3]]},"135":{"position":[[334,3]]},"139":{"position":[[172,3]]},"160":{"position":[[1647,3]]},"621":{"position":[[440,3]]},"622":{"position":[[183,3]]},"639":{"position":[[172,3]]},"663":{"position":[[334,3]]},"667":{"position":[[1649,3]]}},"keywords":{}}],["3the",{"_index":2703,"title":{},"content":{"345":{"position":[[119,4]]},"819":{"position":[[119,4]]}},"keywords":{}}],["3ubuntu0.1",{"_index":3568,"title":{},"content":{"791":{"position":[[6814,10],[12907,11],[17317,11],[22532,10],[28456,11],[32171,11]]}},"keywords":{}}],["3ubuntu0.1_all.deb",{"_index":3650,"title":{},"content":{"791":{"position":[[12850,18],[28399,18]]}},"keywords":{}}],["3ubuntu0.3",{"_index":3526,"title":{},"content":{"791":{"position":[[5330,10],[10541,11],[14116,11],[21154,10],[26259,11],[29665,11]]}},"keywords":{}}],["3ubuntu0.3_amd64.deb",{"_index":3629,"title":{},"content":{"791":{"position":[[10491,20],[26209,20]]}},"keywords":{}}],["3:how",{"_index":3096,"title":{"483":{"position":[[6,5]]},"946":{"position":[[6,5]]}},"content":{},"keywords":{}}],["3:preview",{"_index":3243,"title":{},"content":{"502":{"position":[[3615,9]]}},"keywords":{}}],["4",{"_index":366,"title":{"95":{"position":[[5,2]]},"273":{"position":[[0,2]]},"346":{"position":[[0,2]]},"609":{"position":[[5,2]]},"820":{"position":[[0,2]]}},"content":{"31":{"position":[[1683,1]]},"91":{"position":[[412,2],[596,3]]},"101":{"position":[[216,2]]},"107":{"position":[[9,1]]},"157":{"position":[[88,1]]},"251":{"position":[[339,4]]},"252":{"position":[[1190,1]]},"260":{"position":[[629,3]]},"343":{"position":[[1522,1]]},"605":{"position":[[412,2],[596,3]]},"615":{"position":[[216,2]]},"621":{"position":[[9,1]]},"657":{"position":[[88,1]]},"788":{"position":[[608,2]]},"817":{"position":[[1540,1]]},"965":{"position":[[167,1],[8354,2],[9741,1]]}},"keywords":{}}],["4%)]\\tloss=1.8679\\ntrain",{"_index":316,"title":{},"content":{"29":{"position":[[931,25],[2108,25]]},"558":{"position":[[931,25],[2108,25]]}},"keywords":{}}],["4.1",{"_index":2309,"title":{"274":{"position":[[0,3]]}},"content":{},"keywords":{}}],["4.2",{"_index":2312,"title":{"275":{"position":[[0,3]]}},"content":{},"keywords":{}}],["4.3",{"_index":2313,"title":{"276":{"position":[[0,3]]}},"content":{},"keywords":{}}],["4.3.0",{"_index":3486,"title":{},"content":{"791":{"position":[[4044,5],[8518,6],[13509,6],[19868,5],[24236,6],[29058,6]]}},"keywords":{}}],["4.3.1",{"_index":2314,"title":{"277":{"position":[[0,5]]}},"content":{},"keywords":{}}],["4.3.2",{"_index":2316,"title":{"278":{"position":[[0,5]]}},"content":{},"keywords":{}}],["4.3.3",{"_index":3499,"title":{},"content":{"791":{"position":[[4522,5],[4638,5],[9269,6],[9450,6],[13767,6],[13819,6],[20346,5],[20462,5],[24987,6],[25168,6],[29316,6],[29368,6]]}},"keywords":{}}],["4.4",{"_index":2318,"title":{"279":{"position":[[0,3]]}},"content":{},"keywords":{}}],["4/100",{"_index":4080,"title":{},"content":{"965":{"position":[[9148,7]]}},"keywords":{}}],["40",{"_index":3583,"title":{},"content":{"791":{"position":[[7248,3],[22966,3]]},"965":{"position":[[14910,2]]}},"keywords":{}}],["40000",{"_index":3951,"title":{},"content":{"965":{"position":[[208,5],[9782,5]]}},"keywords":{}}],["4096",{"_index":19,"title":{},"content":{"2":{"position":[[54,4]]},"260":{"position":[[743,4],[792,4],[805,4],[836,4]]},"338":{"position":[[191,4]]},"462":{"position":[[54,4]]},"812":{"position":[[193,4]]}},"keywords":{}}],["40d0",{"_index":2808,"title":{},"content":{"389":{"position":[[525,4]]},"392":{"position":[[289,4]]},"395":{"position":[[277,4]]},"398":{"position":[[284,4]]},"878":{"position":[[525,4]]},"881":{"position":[[289,4]]},"884":{"position":[[277,4]]},"887":{"position":[[284,4]]}},"keywords":{}}],["410",{"_index":3541,"title":{},"content":{"791":{"position":[[5749,4],[21573,4]]}},"keywords":{}}],["411c",{"_index":2782,"title":{},"content":{"371":{"position":[[236,4]]},"421":{"position":[[416,4]]},"845":{"position":[[236,4]]},"874":{"position":[[416,4]]}},"keywords":{}}],["41936314e25f402d5f7d73152dd587e7b10f3b1f",{"_index":2215,"title":{},"content":{"260":{"position":[[2636,40]]}},"keywords":{}}],["4200",{"_index":2370,"title":{},"content":{"289":{"position":[[414,5]]},"752":{"position":[[414,5]]}},"keywords":{}}],["4222",{"_index":391,"title":{},"content":{"38":{"position":[[565,4]]},"39":{"position":[[307,4]]},"40":{"position":[[300,4]]},"41":{"position":[[317,4]]},"560":{"position":[[565,4]]},"561":{"position":[[307,4]]},"562":{"position":[[300,4]]},"563":{"position":[[317,4]]}},"keywords":{}}],["43d4",{"_index":2744,"title":{},"content":{"366":{"position":[[731,4]]},"840":{"position":[[731,4]]}},"keywords":{}}],["4480/60000",{"_index":321,"title":{},"content":{"29":{"position":[[1060,11],[2237,11]]},"558":{"position":[[1060,11],[2237,11]]}},"keywords":{}}],["4496",{"_index":3721,"title":{},"content":{"791":{"position":[[22674,5]]}},"keywords":{}}],["45",{"_index":3584,"title":{},"content":{"791":{"position":[[7274,3],[22992,3]]}},"keywords":{}}],["456",{"_index":443,"title":{},"content":{"46":{"position":[[180,6]]},"47":{"position":[[394,5],[573,5]]},"48":{"position":[[410,5]]}},"keywords":{}}],["45fdc0bb15f5",{"_index":2810,"title":{},"content":{"389":{"position":[[535,14]]},"392":{"position":[[299,14]]},"395":{"position":[[287,14]]},"398":{"position":[[294,14]]},"878":{"position":[[535,14]]},"881":{"position":[[299,14]]},"884":{"position":[[287,14]]},"887":{"position":[[294,14]]}},"keywords":{}}],["47",{"_index":4182,"title":{},"content":{"967":{"position":[[630,3]]}},"keywords":{}}],["48",{"_index":4174,"title":{},"content":{"967":{"position":[[228,3]]}},"keywords":{}}],["49e5",{"_index":2775,"title":{},"content":{"369":{"position":[[851,4]]},"371":{"position":[[1332,4]]},"374":{"position":[[268,4]]},"377":{"position":[[762,4]]},"380":{"position":[[271,4]]},"843":{"position":[[851,4]]},"845":{"position":[[1332,4]]},"848":{"position":[[268,4]]},"851":{"position":[[762,4]]},"854":{"position":[[271,4]]}},"keywords":{}}],["4bczn",{"_index":3747,"title":{},"content":{"814":{"position":[[551,5]]}},"keywords":{}}],["4e89",{"_index":2783,"title":{},"content":{"371":{"position":[[241,4]]},"421":{"position":[[421,4]]},"845":{"position":[[241,4]]},"874":{"position":[[421,4]]}},"keywords":{}}],["4ubuntu2.8",{"_index":3516,"title":{},"content":{"791":{"position":[[5039,10],[6173,10],[6289,10],[10105,11],[11879,11],[12059,11],[14001,11],[16395,11],[16446,11],[20863,10],[21891,10],[22007,10],[25823,11],[27428,11],[27608,11],[29550,11],[31249,11],[31300,11]]}},"keywords":{}}],["4ubuntu2.8_amd64.deb",{"_index":3624,"title":{},"content":{"791":{"position":[[10046,20],[11815,20],[12000,20],[25764,20],[27364,20],[27549,20]]}},"keywords":{}}],["4ubuntu21.22",{"_index":3655,"title":{},"content":{"791":{"position":[[13121,13],[17468,13],[28670,13],[32322,13]]}},"keywords":{}}],["4:dock",{"_index":3098,"title":{"484":{"position":[[6,8]]},"947":{"position":[[6,8]]}},"content":{},"keywords":{}}],["5",{"_index":740,"title":{"96":{"position":[[5,2]]},"280":{"position":[[0,2]]},"347":{"position":[[0,2]]},"610":{"position":[[5,2]]},"821":{"position":[[0,2]]}},"content":{"53":{"position":[[10933,1]]},"101":{"position":[[270,2]]},"117":{"position":[[1059,1]]},"252":{"position":[[1208,1],[1272,1],[1282,1]]},"431":{"position":[[282,2]]},"601":{"position":[[1059,1]]},"615":{"position":[[270,2]]},"744":{"position":[[1397,2],[1499,2]]},"791":{"position":[[3653,1],[5747,1],[7067,2],[7879,2],[11185,2],[13268,2],[15380,2],[19477,1],[21571,1],[22785,2],[23597,2],[26903,2],[28817,2],[30929,2]]},"905":{"position":[[282,2]]},"965":{"position":[[765,2],[8533,2],[10244,2],[16319,2]]}},"keywords":{}}],["5%)]\\tloss=1.4135\\ntrain",{"_index":318,"title":{},"content":{"29":{"position":[[978,25],[2155,25]]},"558":{"position":[[978,25],[2155,25]]}},"keywords":{}}],["5.0",{"_index":2496,"title":{},"content":{"324":{"position":[[196,4]]}},"keywords":{}}],["5.1.39",{"_index":3171,"title":{},"content":{"491":{"position":[[753,7]]}},"keywords":{}}],["5.2",{"_index":3889,"title":{},"content":{"954":{"position":[[1331,3]]}},"keywords":{}}],["5.3",{"_index":3509,"title":{},"content":{"791":{"position":[[4838,3],[9775,5],[13914,5],[20662,3],[25493,5],[29463,5]]}},"keywords":{}}],["5.5",{"_index":3571,"title":{},"content":{"791":{"position":[[6911,3],[13065,4],[17358,4],[22629,3],[28614,4],[32212,4]]}},"keywords":{}}],["5.82382",{"_index":4106,"title":{},"content":{"965":{"position":[[14576,8],[14617,8]]}},"keywords":{}}],["5/100",{"_index":4081,"title":{},"content":{"965":{"position":[[9183,7]]}},"keywords":{}}],["50",{"_index":3585,"title":{},"content":{"791":{"position":[[7300,3],[23018,3]]},"965":{"position":[[14977,2]]}},"keywords":{}}],["50.00",{"_index":3780,"title":{},"content":{"913":{"position":[[311,6]]}},"keywords":{}}],["5007",{"_index":3134,"title":{},"content":{"484":{"position":[[1225,4],[1262,4]]},"947":{"position":[[1225,4],[1262,4]]}},"keywords":{}}],["501",{"_index":4185,"title":{},"content":{"967":{"position":[[773,4]]}},"keywords":{}}],["505",{"_index":2492,"title":{},"content":{"324":{"position":[[128,4]]}},"keywords":{}}],["51.2",{"_index":3719,"title":{},"content":{"791":{"position":[[19260,4]]}},"keywords":{}}],["512",{"_index":1352,"title":{},"content":{"102":{"position":[[1749,4]]},"147":{"position":[[1481,4]]},"157":{"position":[[681,4]]},"616":{"position":[[1761,4]]},"647":{"position":[[1481,4]]},"657":{"position":[[681,4]]}},"keywords":{}}],["5120/60000",{"_index":323,"title":{},"content":{"29":{"position":[[1107,11],[2284,11]]},"558":{"position":[[1107,11],[2284,11]]}},"keywords":{}}],["518",{"_index":4177,"title":{},"content":{"967":{"position":[[319,4]]}},"keywords":{}}],["523",{"_index":3488,"title":{},"content":{"791":{"position":[[4067,4],[19891,4]]}},"keywords":{}}],["538",{"_index":4170,"title":{},"content":{"967":{"position":[[112,4]]}},"keywords":{}}],["54.9",{"_index":3491,"title":{},"content":{"791":{"position":[[4172,5],[19996,5]]}},"keywords":{}}],["545",{"_index":4197,"title":{},"content":{"967":{"position":[[1341,4]]}},"keywords":{}}],["55",{"_index":3586,"title":{},"content":{"791":{"position":[[7326,3],[23044,3]]}},"keywords":{}}],["55.8",{"_index":3569,"title":{},"content":{"791":{"position":[[6825,5],[22543,5]]}},"keywords":{}}],["550",{"_index":2505,"title":{},"content":{"324":{"position":[[690,4],[961,4]]},"774":{"position":[[143,4],[414,4]]}},"keywords":{}}],["5760/60000",{"_index":325,"title":{},"content":{"29":{"position":[[1154,11],[2331,11]]},"558":{"position":[[1154,11],[2331,11]]}},"keywords":{}}],["58.5",{"_index":3565,"title":{},"content":{"791":{"position":[[6711,5],[22429,5]]}},"keywords":{}}],["590",{"_index":3517,"title":{},"content":{"791":{"position":[[5050,4],[20874,4]]}},"keywords":{}}],["5931f8cfd04b37a325e4465d8c0d31c4149b3a87",{"_index":2218,"title":{},"content":{"261":{"position":[[80,40]]}},"keywords":{}}],["5_amd64.deb",{"_index":3600,"title":{},"content":{"791":{"position":[[7832,11],[11145,11],[23550,11],[26863,11]]}},"keywords":{}}],["5a94c01d",{"_index":422,"title":{},"content":{"41":{"position":[[302,9]]},"563":{"position":[[302,9]]}},"keywords":{}}],["5d4f5f874c",{"_index":2606,"title":{},"content":{"340":{"position":[[154,10]]},"814":{"position":[[156,10]]}},"keywords":{}}],["5db8b6cbf7",{"_index":61,"title":{},"content":{"4":{"position":[[175,10]]},"464":{"position":[[175,10]]}},"keywords":{}}],["5dd79cdf86",{"_index":2619,"title":{},"content":{"340":{"position":[[417,10]]}},"keywords":{}}],["5df8499fd4",{"_index":2623,"title":{},"content":{"340":{"position":[[525,10]]}},"keywords":{}}],["5fdd957785",{"_index":3739,"title":{},"content":{"814":{"position":[[319,10]]}},"keywords":{}}],["5s",{"_index":66,"title":{},"content":{"4":{"position":[[206,2],[257,2],[309,2],[359,2],[410,2],[459,2]]},"464":{"position":[[206,2],[257,2],[309,2],[359,2],[410,2],[459,2]]}},"keywords":{}}],["5ubuntu1",{"_index":3481,"title":{},"content":{"791":{"position":[[3945,8],[8365,9],[13399,9],[19769,8],[24083,9],[28948,9]]}},"keywords":{}}],["5ubuntu12.10",{"_index":3500,"title":{},"content":{"791":{"position":[[4528,12],[4644,12],[9276,13],[9457,13],[13774,13],[13826,13],[20352,12],[20468,12],[24994,13],[25175,13],[29323,13],[29375,13]]}},"keywords":{}}],["5ubuntu12.10_amd64.deb",{"_index":3614,"title":{},"content":{"791":{"position":[[9216,22],[9397,22],[24934,22],[25115,22]]}},"keywords":{}}],["5ubuntu1_amd64.deb",{"_index":3606,"title":{},"content":{"791":{"position":[[8316,18],[24034,18]]}},"keywords":{}}],["5:yarn",{"_index":3138,"title":{"485":{"position":[[6,6]]},"948":{"position":[[6,6]]}},"content":{},"keywords":{}}],["6",{"_index":1304,"title":{"282":{"position":[[0,2]]}},"content":{"101":{"position":[[428,2]]},"324":{"position":[[756,2],[1027,2]]},"615":{"position":[[428,2]]},"774":{"position":[[209,2],[480,2]]},"965":{"position":[[8712,2]]}},"keywords":{}}],["6%)]\\tloss=1.0003\\ntrain",{"_index":320,"title":{},"content":{"29":{"position":[[1025,25],[2202,25]]},"558":{"position":[[1025,25],[2202,25]]}},"keywords":{}}],["6.0",{"_index":3890,"title":{},"content":{"954":{"position":[[1335,3]]}},"keywords":{}}],["6.0+20160213",{"_index":3547,"title":{},"content":{"791":{"position":[[6042,12],[11672,13],[16327,13],[21760,12],[27221,13],[31181,13]]}},"keywords":{}}],["6.1",{"_index":1006,"title":{"283":{"position":[[0,3]]}},"content":{"79":{"position":[[1895,3]]},"954":{"position":[[1339,3]]}},"keywords":{}}],["6.18.01",{"_index":3540,"title":{},"content":{"791":{"position":[[5739,7],[11176,8],[15371,8],[21563,7],[26894,8],[30920,8]]}},"keywords":{}}],["6.2",{"_index":1008,"title":{"284":{"position":[[0,3]]}},"content":{"79":{"position":[[2022,3]]}},"keywords":{}}],["6.2u5",{"_index":3534,"title":{},"content":{"791":{"position":[[5541,5],[5646,5],[5842,5],[5947,5],[10877,6],[11046,6],[11339,6],[11508,6],[15232,6],[15339,6],[15490,6],[15637,6],[21365,5],[21470,5],[21666,5],[26595,6],[26764,6],[27057,6],[30781,6],[30888,6],[31039,6]]}},"keywords":{}}],["6.3",{"_index":2360,"title":{"285":{"position":[[0,3]]}},"content":{},"keywords":{}}],["6.4",{"_index":2361,"title":{"286":{"position":[[0,4]]}},"content":{"286":{"position":[[40,3],[119,3]]}},"keywords":{}}],["6/100",{"_index":4082,"title":{},"content":{"965":{"position":[[9218,7]]}},"keywords":{}}],["60",{"_index":3587,"title":{},"content":{"791":{"position":[[7352,3],[23070,3]]},"965":{"position":[[15044,2]]}},"keywords":{}}],["600",{"_index":3959,"title":{},"content":{"965":{"position":[[713,4],[10192,4],[16267,4]]}},"keywords":{}}],["6050",{"_index":3095,"title":{},"content":{"482":{"position":[[626,4]]},"945":{"position":[[626,4]]}},"keywords":{}}],["61m",{"_index":2608,"title":{},"content":{"340":{"position":[[185,3],[237,3],[448,3],[609,3],[659,3]]}},"keywords":{}}],["63",{"_index":2526,"title":{},"content":{"327":{"position":[[347,2]]},"808":{"position":[[347,2]]}},"keywords":{}}],["63.7",{"_index":3531,"title":{},"content":{"791":{"position":[[5447,5],[21271,5]]}},"keywords":{}}],["630.425",{"_index":4095,"title":{},"content":{"965":{"position":[[9665,7]]}},"keywords":{}}],["638",{"_index":4194,"title":{},"content":{"967":{"position":[[1178,4]]}},"keywords":{}}],["64",{"_index":4024,"title":{},"content":{"965":{"position":[[3926,3],[4012,3],[4098,3],[4184,3],[4270,3],[4356,3],[4442,3],[4522,3],[6694,3],[6780,3],[6866,3],[6952,3],[7038,3],[7124,3],[7210,3],[7290,3],[13343,3],[13429,3],[13515,3],[13601,3],[13687,3],[13773,3],[13859,3],[13939,3]]}},"keywords":{}}],["64/contain",{"_index":3089,"title":{},"content":{"482":{"position":[[233,12],[594,12]]},"945":{"position":[[233,12],[594,12]]}},"keywords":{}}],["640/60000",{"_index":309,"title":{},"content":{"29":{"position":[[779,10],[1956,10]]},"558":{"position":[[779,10],[1956,10]]}},"keywords":{}}],["6400/60000",{"_index":327,"title":{},"content":{"29":{"position":[[1202,11],[2379,11]]},"558":{"position":[[1202,11],[2379,11]]}},"keywords":{}}],["65",{"_index":3588,"title":{},"content":{"791":{"position":[[7378,3],[23096,3]]}},"keywords":{}}],["65.8",{"_index":3463,"title":{},"content":{"791":{"position":[[3436,4]]}},"keywords":{}}],["665",{"_index":3497,"title":{},"content":{"791":{"position":[[4425,4],[20249,4]]}},"keywords":{}}],["66f7b8658b",{"_index":3743,"title":{},"content":{"814":{"position":[[426,10]]}},"keywords":{}}],["66sx6",{"_index":79,"title":{},"content":{"4":{"position":[[390,5]]},"464":{"position":[[390,5]]}},"keywords":{}}],["674987ff7d",{"_index":3737,"title":{},"content":{"814":{"position":[[266,10]]}},"keywords":{}}],["681",{"_index":4188,"title":{},"content":{"967":{"position":[[928,4]]}},"keywords":{}}],["68985b767",{"_index":2621,"title":{},"content":{"340":{"position":[[469,9]]}},"keywords":{}}],["6a92",{"_index":390,"title":{},"content":{"38":{"position":[[560,4]]},"39":{"position":[[302,4]]},"40":{"position":[[295,4]]},"41":{"position":[[312,4]]},"560":{"position":[[560,4]]},"561":{"position":[[302,4]]},"562":{"position":[[295,4]]},"563":{"position":[[312,4]]}},"keywords":{}}],["6bb69fd44",{"_index":2627,"title":{},"content":{"340":{"position":[[629,9]]},"814":{"position":[[593,9]]}},"keywords":{}}],["6c44944dfb",{"_index":3745,"title":{},"content":{"814":{"position":[[485,10]]}},"keywords":{}}],["6c90",{"_index":2743,"title":{},"content":{"366":{"position":[[726,4]]},"840":{"position":[[726,4]]}},"keywords":{}}],["6nhkx",{"_index":2480,"title":{},"content":{"320":{"position":[[228,5]]},"797":{"position":[[228,5]]}},"keywords":{}}],["6ubuntu1",{"_index":3475,"title":{},"content":{"791":{"position":[[3749,8],[3849,8],[8043,9],[8217,9],[13308,9],[13358,9],[19573,8],[19673,8],[23761,9],[23935,9],[28857,9],[28907,9]]}},"keywords":{}}],["6ubuntu1_amd64.deb",{"_index":3602,"title":{},"content":{"791":{"position":[[7988,18],[8159,18],[23706,18],[23877,18]]}},"keywords":{}}],["7",{"_index":732,"title":{},"content":{"53":{"position":[[10686,1],[10995,1]]},"281":{"position":[[856,1]]},"965":{"position":[[1520,1],[1766,1],[8891,2],[10937,1],[11183,1]]}},"keywords":{}}],["7%)]\\tloss=0.7762\\ntrain",{"_index":322,"title":{},"content":{"29":{"position":[[1072,25],[2249,25]]},"558":{"position":[[1072,25],[2249,25]]}},"keywords":{}}],["7.0+ptx",{"_index":3891,"title":{},"content":{"954":{"position":[[1343,8]]}},"keywords":{}}],["7.4",{"_index":3535,"title":{},"content":{"791":{"position":[[5547,3],[5652,3],[5848,3],[5953,3],[10884,4],[11053,4],[11346,4],[11515,4],[15239,4],[15346,4],[15497,4],[15644,4],[21371,3],[21476,3],[21672,3],[26602,4],[26771,4],[27064,4],[30788,4],[30895,4],[31046,4]]}},"keywords":{}}],["7.4_all.deb",{"_index":3632,"title":{},"content":{"791":{"position":[[10833,11],[26551,11]]}},"keywords":{}}],["7.4_amd64.deb",{"_index":3634,"title":{},"content":{"791":{"position":[[11000,13],[11295,13],[11462,13],[26718,13],[27013,13]]}},"keywords":{}}],["7/100",{"_index":4083,"title":{},"content":{"965":{"position":[[9253,7]]}},"keywords":{}}],["70",{"_index":3589,"title":{},"content":{"791":{"position":[[7404,3],[23122,3]]},"965":{"position":[[15111,2]]}},"keywords":{}}],["7040/60000",{"_index":329,"title":{},"content":{"29":{"position":[[1250,11],[2427,11]]},"558":{"position":[[1250,11],[2427,11]]}},"keywords":{}}],["72",{"_index":983,"title":{},"content":{"79":{"position":[[417,2],[788,2]]}},"keywords":{}}],["72hr",{"_index":2353,"title":{},"content":{"281":{"position":[[1340,4]]}},"keywords":{}}],["74",{"_index":2960,"title":{},"content":{"439":{"position":[[1308,2]]}},"keywords":{}}],["74.8",{"_index":3482,"title":{},"content":{"791":{"position":[[3954,5],[19778,5]]}},"keywords":{}}],["748",{"_index":846,"title":{},"content":{"61":{"position":[[328,4]]},"62":{"position":[[250,3]]},"63":{"position":[[228,4]]},"570":{"position":[[328,4]]},"571":{"position":[[250,3]]},"572":{"position":[[228,4]]}},"keywords":{}}],["75",{"_index":3590,"title":{},"content":{"791":{"position":[[7430,3],[23148,3]]}},"keywords":{}}],["75f86d8f4d",{"_index":2617,"title":{},"content":{"340":{"position":[[363,10]]}},"keywords":{}}],["76465444f6",{"_index":2615,"title":{},"content":{"340":{"position":[[311,10]]}},"keywords":{}}],["7680/60000",{"_index":331,"title":{},"content":{"29":{"position":[[1298,11],[2475,11]]},"558":{"position":[[1298,11],[2475,11]]}},"keywords":{}}],["76bbf5c7b",{"_index":3741,"title":{},"content":{"814":{"position":[[373,9]]}},"keywords":{}}],["77d4",{"_index":254,"title":{},"content":{"22":{"position":[[743,4]]},"23":{"position":[[890,4]]},"24":{"position":[[252,4],[898,4]]},"25":{"position":[[285,4]]},"27":{"position":[[288,4]]},"551":{"position":[[743,4]]},"552":{"position":[[890,4]]},"553":{"position":[[252,4],[898,4]]},"554":{"position":[[285,4]]},"556":{"position":[[288,4]]}},"keywords":{}}],["7844656dd",{"_index":82,"title":{},"content":{"4":{"position":[[429,9]]},"464":{"position":[[429,9]]}},"keywords":{}}],["79",{"_index":4124,"title":{},"content":{"965":{"position":[[15153,2]]}},"keywords":{}}],["79.0",{"_index":3556,"title":{},"content":{"791":{"position":[[6402,5],[22120,5]]}},"keywords":{}}],["7bvr7",{"_index":76,"title":{},"content":{"4":{"position":[[339,5]]},"464":{"position":[[339,5]]}},"keywords":{}}],["7cbcfd4bd9",{"_index":2625,"title":{},"content":{"340":{"position":[[578,10]]},"814":{"position":[[540,10]]}},"keywords":{}}],["7ff5d96d59",{"_index":69,"title":{},"content":{"4":{"position":[[226,10]]},"464":{"position":[[226,10]]}},"keywords":{}}],["8",{"_index":17,"title":{},"content":{"2":{"position":[[43,1]]},"265":{"position":[[150,4]]},"338":{"position":[[180,1]]},"462":{"position":[[43,1]]},"777":{"position":[[550,1],[1219,1],[1306,1]]},"791":{"position":[[451,1]]},"812":{"position":[[182,1]]},"950":{"position":[[1047,1],[1112,1]]},"954":{"position":[[1691,1]]},"965":{"position":[[3846,2],[3849,2],[3930,2],[3933,2],[4016,2],[4019,2],[4102,2],[4105,2],[4188,2],[4191,2],[4274,2],[4277,2],[4360,2],[4363,2],[4446,2],[4449,2],[6614,2],[6617,2],[6698,2],[6701,2],[6784,2],[6787,2],[6870,2],[6873,2],[6956,2],[6959,2],[7042,2],[7045,2],[7128,2],[7131,2],[7214,2],[7217,2],[13263,2],[13266,2],[13347,2],[13350,2],[13433,2],[13436,2],[13519,2],[13522,2],[13605,2],[13608,2],[13691,2],[13694,2],[13777,2],[13780,2],[13863,2],[13866,2]]},"969":{"position":[[1328,1]]},"981":{"position":[[786,1],[891,1]]},"986":{"position":[[496,1],[601,1]]}},"keywords":{}}],["8.0",{"_index":2034,"title":{},"content":{"236":{"position":[[211,3]]},"740":{"position":[[214,3]]}},"keywords":{}}],["8.1.2",{"_index":3529,"title":{},"content":{"791":{"position":[[5425,5],[10698,6],[15082,6],[21249,5],[26416,6],[30631,6]]}},"keywords":{}}],["8/100",{"_index":4084,"title":{},"content":{"965":{"position":[[9288,7]]}},"keywords":{}}],["80",{"_index":117,"title":{},"content":{"5":{"position":[[56,2]]},"465":{"position":[[56,2]]},"495":{"position":[[575,2],[588,2]]},"791":{"position":[[7456,3],[23174,3]]},"965":{"position":[[15298,2]]}},"keywords":{}}],["8056",{"_index":3478,"title":{},"content":{"791":{"position":[[3858,5],[19682,5]]}},"keywords":{}}],["8080",{"_index":2410,"title":{},"content":{"305":{"position":[[376,4]]},"314":{"position":[[35,4]]},"446":{"position":[[87,5],[130,4]]},"492":{"position":[[218,4]]},"756":{"position":[[376,4]]},"786":{"position":[[35,4]]}},"keywords":{}}],["8080:80",{"_index":2412,"title":{},"content":{"306":{"position":[[262,7]]},"757":{"position":[[262,7]]}},"keywords":{}}],["8080:8080",{"_index":3148,"title":{},"content":{"488":{"position":[[309,9]]}},"keywords":{}}],["826a",{"_index":2776,"title":{},"content":{"369":{"position":[[856,4]]},"371":{"position":[[1337,4]]},"374":{"position":[[273,4]]},"377":{"position":[[767,4]]},"380":{"position":[[276,4]]},"843":{"position":[[856,4]]},"845":{"position":[[1337,4]]},"848":{"position":[[273,4]]},"851":{"position":[[767,4]]},"854":{"position":[[276,4]]}},"keywords":{}}],["8320/60000",{"_index":333,"title":{},"content":{"29":{"position":[[1346,11],[2523,11]]},"558":{"position":[[1346,11],[2523,11]]}},"keywords":{}}],["844c866d54",{"_index":2609,"title":{},"content":{"340":{"position":[[206,10]]},"814":{"position":[[210,10]]}},"keywords":{}}],["844f",{"_index":2745,"title":{},"content":{"366":{"position":[[736,4]]},"840":{"position":[[736,4]]}},"keywords":{}}],["8483",{"_index":3178,"title":{},"content":{"492":{"position":[[389,4]]}},"keywords":{}}],["85",{"_index":3591,"title":{},"content":{"791":{"position":[[7482,3],[23200,3]]}},"keywords":{}}],["85bd68dbc5",{"_index":2611,"title":{},"content":{"340":{"position":[[260,10]]}},"keywords":{}}],["8888",{"_index":3200,"title":{},"content":{"495":{"position":[[699,4]]}},"keywords":{}}],["8960/60000",{"_index":335,"title":{},"content":{"29":{"position":[[1394,11],[2571,11]]},"558":{"position":[[1394,11],[2571,11]]}},"keywords":{}}],["8d95d74f7",{"_index":72,"title":{},"content":{"4":{"position":[[279,9]]},"464":{"position":[[279,9]]}},"keywords":{}}],["8dbb",{"_index":256,"title":{},"content":{"22":{"position":[[753,4]]},"23":{"position":[[900,4]]},"24":{"position":[[262,4],[908,4]]},"25":{"position":[[295,4]]},"27":{"position":[[298,4]]},"551":{"position":[[753,4]]},"552":{"position":[[900,4]]},"553":{"position":[[262,4],[908,4]]},"554":{"position":[[295,4]]},"556":{"position":[[298,4]]}},"keywords":{}}],["8ubuntu1.15",{"_index":3494,"title":{},"content":{"791":{"position":[[4287,11],[4413,11],[8890,12],[9096,12],[13660,12],[13723,12],[20111,11],[20237,11],[24608,12],[24814,12],[29209,12],[29272,12]]}},"keywords":{}}],["8ubuntu1.15_amd64.deb",{"_index":3611,"title":{},"content":{"791":{"position":[[8819,21],[9025,21],[24537,21],[24743,21]]}},"keywords":{}}],["9",{"_index":3137,"title":{},"content":{"484":{"position":[[1260,1]]},"947":{"position":[[1260,1]]}},"keywords":{}}],["9%)]\\tloss=0.4598\\ntrain",{"_index":324,"title":{},"content":{"29":{"position":[[1119,25],[2296,25]]},"558":{"position":[[1119,25],[2296,25]]}},"keywords":{}}],["9/100",{"_index":4085,"title":{},"content":{"965":{"position":[[9323,7]]}},"keywords":{}}],["90",{"_index":3592,"title":{},"content":{"791":{"position":[[7508,3],[23226,3]]},"965":{"position":[[15365,2]]}},"keywords":{}}],["90e0",{"_index":2784,"title":{},"content":{"371":{"position":[[246,4]]},"421":{"position":[[426,4]]},"845":{"position":[[246,4]]},"874":{"position":[[426,4]]}},"keywords":{}}],["95",{"_index":3593,"title":{},"content":{"791":{"position":[[7534,3],[23252,3]]}},"keywords":{}}],["96",{"_index":4216,"title":{},"content":{"967":{"position":[[2087,3]]}},"keywords":{}}],["96.2",{"_index":3559,"title":{},"content":{"791":{"position":[[6498,5],[22216,5]]}},"keywords":{}}],["9600/60000",{"_index":337,"title":{},"content":{"29":{"position":[[1442,11],[2619,11]]},"558":{"position":[[1442,11],[2619,11]]}},"keywords":{}}],["9633",{"_index":3718,"title":{},"content":{"791":{"position":[[19217,4],[22660,4]]}},"keywords":{}}],["9674",{"_index":3513,"title":{},"content":{"791":{"position":[[4935,5],[20759,5]]}},"keywords":{}}],["97",{"_index":2521,"title":{},"content":{"324":{"position":[[1412,3]]},"774":{"position":[[865,3]]}},"keywords":{}}],["990",{"_index":3543,"title":{},"content":{"791":{"position":[[5852,4],[21676,4]]}},"keywords":{}}],["9b12c2228bdff4f4cfe849445ef3a66d57ec647a",{"_index":2133,"title":{},"content":{"252":{"position":[[2669,40]]}},"keywords":{}}],["9bb6f8577",{"_index":78,"title":{},"content":{"4":{"position":[[380,9]]},"464":{"position":[[380,9]]}},"keywords":{}}],["_",{"_index":2649,"title":{},"content":{"343":{"position":[[635,1]]},"817":{"position":[[653,1]]}},"keywords":{}}],["_______________________________",{"_index":2206,"title":{},"content":{"260":{"position":[[2177,31]]}},"keywords":{}}],["__future__",{"_index":2542,"title":{},"content":{"328":{"position":[[146,10]]},"809":{"position":[[146,10]]}},"keywords":{}}],["__init__",{"_index":4217,"title":{},"content":{"967":{"position":[[2094,8]]}},"keywords":{}}],["__main__",{"_index":2697,"title":{},"content":{"343":{"position":[[2282,11]]},"401":{"position":[[114,11]]},"817":{"position":[[2335,11]]},"890":{"position":[[114,11]]}},"keywords":{}}],["__name__",{"_index":2696,"title":{},"content":{"343":{"position":[[2270,8]]},"401":{"position":[[102,8]]},"817":{"position":[[2323,8]]},"890":{"position":[[102,8]]}},"keywords":{}}],["_add_should_use_warn",{"_index":4214,"title":{},"content":{"967":{"position":[[1932,23]]}},"keywords":{}}],["_add_should_use_warning(fn(*arg",{"_index":4212,"title":{},"content":{"967":{"position":[[1787,33]]}},"keywords":{}}],["_call_evalu",{"_index":4189,"title":{},"content":{"967":{"position":[[936,14]]}},"keywords":{}}],["_call_model_fn",{"_index":4198,"title":{},"content":{"967":{"position":[[1349,14]]}},"keywords":{}}],["_cluster_spec",{"_index":3965,"title":{},"content":{"965":{"position":[[812,16],[10292,16],[16363,16]]}},"keywords":{}}],["_environ",{"_index":3976,"title":{},"content":{"965":{"position":[[1140,15],[10622,15],[16691,15]]}},"keywords":{}}],["_evaluate_model",{"_index":4195,"title":{},"content":{"967":{"position":[[1186,15]]}},"keywords":{}}],["_evaluation_mast",{"_index":3983,"title":{},"content":{"965":{"position":[[1305,21],[16856,21]]}},"keywords":{}}],["_execute_schedul",{"_index":4183,"title":{},"content":{"967":{"position":[[637,17]]}},"keywords":{}}],["_execute_schedule(experi",{"_index":4181,"title":{},"content":{"967":{"position":[[484,29]]}},"keywords":{}}],["_ipyw_jlab_nb_ext_conf=0.1.0=py37_0",{"_index":164,"title":{},"content":{"9":{"position":[[268,39],[855,39]]},"10":{"position":[[406,39],[892,40]]},"11":{"position":[[428,39]]},"12":{"position":[[286,39],[776,39]]},"13":{"position":[[439,39]]},"115":{"position":[[568,35],[989,35]]},"351":{"position":[[233,39]]},"359":{"position":[[242,39]]},"538":{"position":[[268,39],[855,39]]},"539":{"position":[[406,39],[892,40]]},"540":{"position":[[428,39]]},"541":{"position":[[286,39],[776,39]]},"542":{"position":[[439,39]]},"599":{"position":[[568,35],[989,35]]},"825":{"position":[[233,39]]},"833":{"position":[[242,39]]}},"keywords":{}}],["_ipyw_jlab_nb_ext_conf\\u003d0.1.0\\u003dpy37_0",{"_index":2713,"title":{},"content":{"351":{"position":[[828,49]]},"353":{"position":[[706,49]]},"356":{"position":[[394,49]]},"359":{"position":[[723,49]]},"362":{"position":[[397,49]]},"825":{"position":[[828,49]]},"827":{"position":[[706,49]]},"830":{"position":[[394,49]]},"833":{"position":[[723,49]]},"836":{"position":[[397,49]]}},"keywords":{}}],["_is_chief",{"_index":3964,"title":{},"content":{"965":{"position":[[793,12],[10272,12],[16343,12]]}},"keywords":{}}],["_keep_checkpoint_every_n_hour",{"_index":3970,"title":{},"content":{"965":{"position":[[978,33],[10460,33],[16529,33]]}},"keywords":{}}],["_keep_checkpoint_max",{"_index":3961,"title":{},"content":{"965":{"position":[[741,23],[10220,23],[16295,23]]}},"keywords":{}}],["_mast",{"_index":3984,"title":{},"content":{"965":{"position":[[1331,10],[16882,10]]}},"keywords":{}}],["_model_dir",{"_index":3968,"title":{},"content":{"965":{"position":[[907,13],[10387,13],[16458,13]]}},"keywords":{}}],["_num_ps_replica",{"_index":3960,"title":{},"content":{"965":{"position":[[718,19],[10197,19],[16272,19]]}},"keywords":{}}],["_num_worker_replica",{"_index":3978,"title":{},"content":{"965":{"position":[[1166,23],[10648,23],[16717,23]]}},"keywords":{}}],["_resnet_model_fn",{"_index":4203,"title":{},"content":{"967":{"position":[[1445,16]]}},"keywords":{}}],["_save_checkpoints_sec",{"_index":3958,"title":{},"content":{"965":{"position":[[686,26],[10165,26],[16240,26]]}},"keywords":{}}],["_save_checkpoints_step",{"_index":3969,"title":{},"content":{"965":{"position":[[945,26],[10427,26],[16496,26]]}},"keywords":{}}],["_save_summary_step",{"_index":3980,"title":{},"content":{"965":{"position":[[1208,22],[10690,22],[16759,22]]}},"keywords":{}}],["_session_conf",{"_index":3971,"title":{},"content":{"965":{"position":[[1019,18],[10501,18],[16570,18]]}},"keywords":{}}],["_sys.exit(main(_sys.argv[:1",{"_index":4175,"title":{},"content":{"967":{"position":[[239,28]]}},"keywords":{}}],["_task_id",{"_index":3979,"title":{},"content":{"965":{"position":[[1193,11],[10675,11],[16744,11]]}},"keywords":{}}],["_task_typ",{"_index":3962,"title":{},"content":{"965":{"position":[[768,13],[10247,13],[16322,13]]}},"keywords":{}}],["_tf_config",{"_index":3981,"title":{},"content":{"965":{"position":[[1236,13],[10718,13],[16787,13]]}},"keywords":{}}],["_tf_random_s",{"_index":3975,"title":{},"content":{"965":{"position":[[1115,18],[10597,18],[16666,18]]}},"keywords":{}}],["a.k.a",{"_index":1726,"title":{},"content":{"148":{"position":[[270,6]]},"648":{"position":[[270,6]]}},"keywords":{}}],["a/b",{"_index":1181,"title":{},"content":{"91":{"position":[[466,3]]},"92":{"position":[[833,3]]},"605":{"position":[[466,3]]},"606":{"position":[[833,3]]}},"keywords":{}}],["aaa",{"_index":2338,"title":{},"content":{"281":{"position":[[283,3]]},"286":{"position":[[395,3]]}},"keywords":{}}],["abc",{"_index":1470,"title":{},"content":{"113":{"position":[[250,4]]},"134":{"position":[[1418,6],[1898,3]]},"140":{"position":[[228,6],[573,6],[1028,4]]},"147":{"position":[[383,6],[887,6],[1265,6]]},"158":{"position":[[2360,3]]},"597":{"position":[[250,4]]},"640":{"position":[[228,6],[573,6],[1028,4]]},"647":{"position":[[383,6],[887,6],[1265,6]]},"658":{"position":[[2360,3]]},"662":{"position":[[1418,6],[1898,3]]}},"keywords":{}}],["abfs/hdf",{"_index":1683,"title":{},"content":{"140":{"position":[[875,11]]},"640":{"position":[[875,11]]}},"keywords":{}}],["abid",{"_index":1046,"title":{},"content":{"85":{"position":[[45,6]]},"592":{"position":[[45,6]]}},"keywords":{}}],["abil",{"_index":1882,"title":{},"content":{"186":{"position":[[409,7]]},"714":{"position":[[409,7]]}},"keywords":{}}],["abnorm",{"_index":1924,"title":{},"content":{"203":{"position":[[283,9]]},"211":{"position":[[847,8],[1397,10]]},"698":{"position":[[283,9]]},"706":{"position":[[847,8],[1397,10]]}},"keywords":{}}],["abov",{"_index":265,"title":{},"content":{"23":{"position":[[562,5]]},"53":{"position":[[10976,5]]},"79":{"position":[[1804,5]]},"81":{"position":[[200,6]]},"94":{"position":[[19,5]]},"108":{"position":[[131,6]]},"112":{"position":[[2016,5]]},"134":{"position":[[1364,7],[2192,5]]},"139":{"position":[[1092,5]]},"219":{"position":[[233,5]]},"279":{"position":[[241,6]]},"284":{"position":[[290,6]]},"328":{"position":[[1431,5]]},"369":{"position":[[528,5]]},"552":{"position":[[562,5]]},"596":{"position":[[2016,5]]},"608":{"position":[[19,5]]},"622":{"position":[[131,6]]},"639":{"position":[[1097,5]]},"652":{"position":[[1114,6]]},"662":{"position":[[1364,7],[2192,5]]},"733":{"position":[[233,5]]},"777":{"position":[[1114,5]]},"809":{"position":[[1451,5]]},"843":{"position":[[528,5]]},"950":{"position":[[959,5]]},"954":{"position":[[1586,5]]},"960":{"position":[[387,6]]},"963":{"position":[[392,6]]},"969":{"position":[[1223,5]]},"978":{"position":[[106,6]]},"979":{"position":[[507,5]]},"983":{"position":[[103,6]]},"988":{"position":[[94,6]]}},"keywords":{}}],["above.bi",{"_index":2406,"title":{},"content":{"303":{"position":[[420,8]]},"771":{"position":[[420,8]]}},"keywords":{}}],["abstract",{"_index":1262,"title":{},"content":{"96":{"position":[[324,11]]},"177":{"position":[[273,8]]},"205":{"position":[[143,8]]},"610":{"position":[[324,11]]},"684":{"position":[[273,8]]},"700":{"position":[[143,8]]}},"keywords":{}}],["abstractsubmarineit.java",{"_index":2391,"title":{},"content":{"291":{"position":[[250,25]]},"754":{"position":[[250,25]]}},"keywords":{}}],["accept",{"_index":258,"title":{},"content":{"22":{"position":[[783,11]]},"23":{"position":[[930,11]]},"24":{"position":[[292,11],[938,11]]},"25":{"position":[[325,11]]},"27":{"position":[[328,11]]},"53":{"position":[[9250,6]]},"79":{"position":[[1384,6],[1611,7]]},"83":{"position":[[239,7]]},"151":{"position":[[17,8]]},"427":{"position":[[53,9]]},"430":{"position":[[40,9]]},"551":{"position":[[783,11]]},"552":{"position":[[930,11]]},"553":{"position":[[292,11],[938,11]]},"554":{"position":[[325,11]]},"556":{"position":[[328,11]]},"590":{"position":[[239,7]]},"651":{"position":[[17,8]]},"901":{"position":[[53,9]]},"904":{"position":[[40,9]]}},"keywords":{}}],["acceptedtim",{"_index":259,"title":{},"content":{"22":{"position":[[795,15]]},"23":{"position":[[942,15]]},"24":{"position":[[304,15],[950,15]]},"25":{"position":[[337,15]]},"27":{"position":[[340,15]]},"551":{"position":[[795,15]]},"552":{"position":[[942,15]]},"553":{"position":[[304,15],[950,15]]},"554":{"position":[[337,15]]},"556":{"position":[[340,15]]}},"keywords":{}}],["acceptedtime\":\"2021",{"_index":2748,"title":{},"content":{"366":{"position":[[777,20]]},"369":{"position":[[897,20]]},"371":{"position":[[288,20],[1378,20]]},"374":{"position":[[314,20]]},"377":{"position":[[808,20]]},"421":{"position":[[467,20]]},"840":{"position":[[777,20]]},"843":{"position":[[897,20]]},"845":{"position":[[288,20],[1378,20]]},"848":{"position":[[314,20]]},"851":{"position":[[808,20]]},"874":{"position":[[467,20]]}},"keywords":{}}],["acceptedtime\":nul",{"_index":2798,"title":{},"content":{"380":{"position":[[316,20]]},"854":{"position":[[316,20]]}},"keywords":{}}],["access",{"_index":111,"title":{"5":{"position":[[0,6]]},"107":{"position":[[11,6]]},"314":{"position":[[0,6]]},"320":{"position":[[4,6]]},"465":{"position":[[0,6]]},"621":{"position":[[11,6]]},"786":{"position":[[0,6]]},"797":{"position":[[4,6]]}},"content":{"53":{"position":[[1821,6],[1969,6],[2257,6]]},"102":{"position":[[1145,6]]},"107":{"position":[[33,6],[253,8],[343,7],[650,6],[1099,7]]},"108":{"position":[[138,6]]},"129":{"position":[[30,6]]},"130":{"position":[[50,8],[108,6],[183,6]]},"151":{"position":[[254,6],[484,6]]},"161":{"position":[[57,6],[143,6]]},"219":{"position":[[246,8]]},"289":{"position":[[885,8]]},"313":{"position":[[643,6]]},"314":{"position":[[294,6],[401,8],[876,7],[952,6]]},"319":{"position":[[48,6]]},"321":{"position":[[23,6]]},"440":{"position":[[30,6]]},"481":{"position":[[1760,6],[1960,6]]},"496":{"position":[[304,6]]},"502":{"position":[[1798,6],[1971,6]]},"616":{"position":[[1156,6]]},"621":{"position":[[33,6],[253,8],[344,7],[651,6],[1102,7]]},"622":{"position":[[138,6]]},"636":{"position":[[30,6]]},"637":{"position":[[50,8],[108,6],[183,6]]},"651":{"position":[[254,6],[484,6]]},"668":{"position":[[57,6],[143,6]]},"733":{"position":[[246,8]]},"752":{"position":[[885,8]]},"777":{"position":[[301,6],[1158,6]]},"785":{"position":[[643,6]]},"786":{"position":[[294,6],[401,8],[876,7],[952,6]]},"796":{"position":[[48,6]]},"798":{"position":[[23,6]]},"924":{"position":[[30,6]]},"944":{"position":[[1760,6],[1960,6]]},"950":{"position":[[282,6],[1003,6]]},"954":{"position":[[288,6],[1630,6]]},"969":{"position":[[288,6],[1267,6]]}},"keywords":{}}],["accompani",{"_index":690,"title":{},"content":{"53":{"position":[[8152,11]]}},"keywords":{}}],["accord",{"_index":572,"title":{},"content":{"53":{"position":[[3281,9]]},"79":{"position":[[1768,9]]},"201":{"position":[[201,9]]},"208":{"position":[[111,9]]},"498":{"position":[[435,9]]},"502":{"position":[[1817,9]]},"696":{"position":[[201,9]]},"703":{"position":[[111,9]]},"791":{"position":[[23,9]]}},"keywords":{}}],["accordingli",{"_index":2700,"title":{},"content":{"345":{"position":[[66,12]]},"819":{"position":[[66,12]]}},"keywords":{}}],["account",{"_index":823,"title":{"264":{"position":[[36,7]]}},"content":{"60":{"position":[[30,7]]},"79":{"position":[[1682,8],[1760,7],[1979,8]]},"264":{"position":[[187,7]]},"502":{"position":[[3601,8]]},"569":{"position":[[30,7]]}},"keywords":{}}],["account.click",{"_index":2356,"title":{},"content":{"284":{"position":[[97,13]]}},"keywords":{}}],["accountclick",{"_index":2323,"title":{},"content":{"279":{"position":[[91,12]]}},"keywords":{}}],["accuraci",{"_index":2687,"title":{},"content":{"343":{"position":[[2073,8],[2139,11]]},"817":{"position":[[2091,8],[2159,11]]},"965":{"position":[[9622,8]]}},"keywords":{}}],["achiev",{"_index":587,"title":{},"content":{"53":{"position":[[3578,7]]},"90":{"position":[[282,11],[825,7]]},"112":{"position":[[847,8]]},"118":{"position":[[850,9]]},"596":{"position":[[847,8]]},"604":{"position":[[282,11],[825,7]]},"625":{"position":[[851,9]]}},"keywords":{}}],["acl",{"_index":1067,"title":{},"content":{"89":{"position":[[148,4]]},"603":{"position":[[148,4]]}},"keywords":{}}],["act",{"_index":914,"title":{},"content":{"73":{"position":[[143,3]]},"161":{"position":[[671,4]]},"582":{"position":[[143,3]]},"668":{"position":[[671,4]]}},"keywords":{}}],["action",{"_index":651,"title":{"66":{"position":[[20,7]]},"68":{"position":[[21,7]]},"290":{"position":[[23,7]]},"307":{"position":[[23,7]]},"575":{"position":[[20,7]]},"577":{"position":[[21,7]]},"753":{"position":[[23,7]]},"758":{"position":[[23,7]]}},"content":{"53":{"position":[[6293,6],[6466,6],[6634,6],[6684,6],[6983,7],[7101,6],[7292,6],[7644,7],[8534,6],[8599,7],[8642,7],[8736,6],[8785,7],[10183,7],[10419,7]]},"260":{"position":[[1570,6],[1826,6]]},"288":{"position":[[176,8]]},"290":{"position":[[37,7]]},"305":{"position":[[174,8]]},"307":{"position":[[38,7]]},"751":{"position":[[176,8]]},"753":{"position":[[37,7]]},"756":{"position":[[174,8]]},"758":{"position":[[38,7]]},"919":{"position":[[527,7]]}},"keywords":{}}],["actions/pypi",{"_index":2970,"title":{},"content":{"441":{"position":[[195,12]]},"925":{"position":[[195,12]]}},"keywords":{}}],["actions/t",{"_index":2915,"title":{},"content":{"435":{"position":[[542,12]]}},"keywords":{}}],["activ",{"_index":539,"title":{"909":{"position":[[21,8]]}},"content":{"53":{"position":[[2048,6],[2333,6],[2550,7],[2630,6],[4509,6],[4779,6],[7162,6],[8964,6],[9325,6],[9735,6],[9839,6],[9936,6],[10090,6],[10268,6],[10505,6],[10618,6],[10706,6]]},"54":{"position":[[695,6],[2775,6]]},"117":{"position":[[300,6],[320,6],[1315,6]]},"435":{"position":[[192,8]]},"601":{"position":[[300,6],[320,6],[1315,6]]},"909":{"position":[[15,6],[313,6]]},"919":{"position":[[192,8]]},"992":{"position":[[137,8]]}},"keywords":{}}],["activation='relu",{"_index":2658,"title":{},"content":{"343":{"position":[[864,18],[984,19],[1079,19],[1154,19]]},"817":{"position":[[882,18],[1002,19],[1097,19],[1172,19]]}},"keywords":{}}],["activation='softmax",{"_index":2666,"title":{},"content":{"343":{"position":[[1201,22]]},"817":{"position":[[1219,22]]}},"keywords":{}}],["actual",{"_index":1431,"title":{},"content":{"108":{"position":[[152,6]]},"158":{"position":[[1158,6]]},"622":{"position":[[152,6]]},"658":{"position":[[1158,6]]}},"keywords":{}}],["ad",{"_index":962,"title":{"77":{"position":[[0,6]]},"586":{"position":[[0,6]]}},"content":{"90":{"position":[[1007,5]]},"92":{"position":[[716,6]]},"129":{"position":[[626,5]]},"147":{"position":[[4,2]]},"152":{"position":[[73,2]]},"208":{"position":[[744,5]]},"264":{"position":[[112,6]]},"604":{"position":[[1007,5]]},"606":{"position":[[716,6]]},"636":{"position":[[626,5]]},"647":{"position":[[4,2]]},"652":{"position":[[73,2]]},"703":{"position":[[744,5]]},"791":{"position":[[16141,6]]}},"keywords":{}}],["adapt",{"_index":1764,"title":{},"content":{"153":{"position":[[238,5]]},"653":{"position":[[238,5]]}},"keywords":{}}],["add",{"_index":788,"title":{"243":{"position":[[0,3]]},"258":{"position":[[3,3]]},"263":{"position":[[4,3]]},"278":{"position":[[6,3]]},"291":{"position":[[0,3]]},"746":{"position":[[0,3]]},"754":{"position":[[0,3]]}},"content":{"54":{"position":[[1940,3],[2243,3]]},"60":{"position":[[195,3],[261,3]]},"63":{"position":[[112,3]]},"73":{"position":[[187,3]]},"79":{"position":[[1930,3]]},"95":{"position":[[6,3]]},"102":{"position":[[1922,3]]},"105":{"position":[[73,3]]},"115":{"position":[[346,4]]},"154":{"position":[[1137,3]]},"158":{"position":[[2724,3]]},"206":{"position":[[0,3]]},"236":{"position":[[215,3]]},"237":{"position":[[145,3]]},"243":{"position":[[15,3],[59,3]]},"263":{"position":[[216,3],[828,3],[919,4],[1062,3],[1519,3],[1614,4]]},"264":{"position":[[43,3]]},"265":{"position":[[84,3]]},"278":{"position":[[285,3],[324,3]]},"433":{"position":[[114,3]]},"484":{"position":[[354,3]]},"490":{"position":[[199,3]]},"495":{"position":[[413,3]]},"502":{"position":[[1101,3],[1131,3],[3326,3]]},"522":{"position":[[551,3],[577,3]]},"569":{"position":[[195,3],[261,3]]},"572":{"position":[[112,3]]},"582":{"position":[[187,3]]},"599":{"position":[[346,4]]},"609":{"position":[[6,3]]},"616":{"position":[[1934,3]]},"619":{"position":[[73,3]]},"654":{"position":[[1142,3]]},"658":{"position":[[2724,3]]},"701":{"position":[[0,3]]},"740":{"position":[[218,3]]},"741":{"position":[[145,3]]},"746":{"position":[[15,3],[59,3]]},"777":{"position":[[1127,3]]},"791":{"position":[[17680,3]]},"927":{"position":[[114,3]]},"939":{"position":[[85,3],[887,3]]},"947":{"position":[[354,3]]},"950":{"position":[[972,3]]},"954":{"position":[[1599,3]]},"969":{"position":[[1236,3]]}},"keywords":{}}],["add/stop",{"_index":1387,"title":{},"content":{"104":{"position":[[463,10]]},"618":{"position":[[464,10]]}},"keywords":{}}],["added/listed/deleted/select",{"_index":1380,"title":{},"content":{"103":{"position":[[697,29]]},"112":{"position":[[2252,29]]},"596":{"position":[[2252,29]]},"617":{"position":[[697,29]]}},"keywords":{}}],["addit",{"_index":839,"title":{},"content":{"61":{"position":[[115,9]]},"77":{"position":[[233,8],[361,8]]},"94":{"position":[[3,8]]},"186":{"position":[[792,9]]},"197":{"position":[[607,8]]},"305":{"position":[[362,9]]},"335":{"position":[[179,9]]},"495":{"position":[[616,10]]},"570":{"position":[[115,9]]},"586":{"position":[[233,8],[361,8]]},"608":{"position":[[3,8]]},"692":{"position":[[607,8]]},"714":{"position":[[792,9]]},"756":{"position":[[362,9]]},"791":{"position":[[2005,10],[3447,10],[17847,10],[19271,10]]},"805":{"position":[[179,9]]},"966":{"position":[[231,10]]}},"keywords":{}}],["address",{"_index":115,"title":{"70":{"position":[[8,7]]},"579":{"position":[[8,7]]}},"content":{"5":{"position":[[31,10],[146,7],[244,7]]},"70":{"position":[[106,7]]},"86":{"position":[[530,7]]},"200":{"position":[[180,7]]},"260":{"position":[[1255,8]]},"289":{"position":[[134,7]]},"306":{"position":[[220,7]]},"341":{"position":[[79,7],[174,7]]},"465":{"position":[[31,10],[146,7],[244,7]]},"492":{"position":[[137,8]]},"498":{"position":[[204,7]]},"579":{"position":[[106,7]]},"695":{"position":[[180,7]]},"744":{"position":[[1191,7],[1285,7]]},"752":{"position":[[134,7]]},"757":{"position":[[220,7]]},"815":{"position":[[65,7]]},"939":{"position":[[268,7]]}},"keywords":{}}],["adh",{"_index":944,"title":{},"content":{"75":{"position":[[40,6]]},"584":{"position":[[40,6]]}},"keywords":{}}],["adhoc",{"_index":1317,"title":{},"content":{"102":{"position":[[648,5],[978,5],[1020,5]]},"136":{"position":[[325,5]]},"147":{"position":[[307,8],[805,8]]},"616":{"position":[[653,5],[983,5],[1025,5]]},"647":{"position":[[307,8],[805,8]]},"664":{"position":[[325,5]]}},"keywords":{}}],["adjust",{"_index":1887,"title":{},"content":{"186":{"position":[[767,8]]},"714":{"position":[[767,8]]}},"keywords":{}}],["admin",{"_index":140,"title":{},"content":{"6":{"position":[[157,5],[167,5]]},"89":{"position":[[213,5]]},"98":{"position":[[132,5]]},"107":{"position":[[598,5],[692,6],[699,5],[1070,5],[1093,5],[1270,5]]},"114":{"position":[[55,5]]},"128":{"position":[[336,5]]},"135":{"position":[[397,6]]},"160":{"position":[[392,5]]},"319":{"position":[[120,5],[173,5],[204,5],[245,5]]},"320":{"position":[[141,5],[213,5]]},"466":{"position":[[157,5],[167,5]]},"598":{"position":[[55,5]]},"603":{"position":[[213,5]]},"612":{"position":[[132,5]]},"621":{"position":[[599,5],[693,6],[700,5],[812,6],[902,5],[1073,5],[1096,5],[1273,5]]},"635":{"position":[[336,5]]},"663":{"position":[[397,6]]},"667":{"position":[[392,5]]},"767":{"position":[[60,6]]},"796":{"position":[[120,5],[173,5],[204,5],[245,5]]},"797":{"position":[[141,5],[213,5]]},"939":{"position":[[158,5],[262,5]]}},"keywords":{}}],["admin'",{"_index":1547,"title":{"122":{"position":[[0,7]]},"629":{"position":[[0,7]]}},"content":{"135":{"position":[[549,7]]},"663":{"position":[[549,7]]}},"keywords":{}}],["admin.org:6080</valu",{"_index":3806,"title":{},"content":{"939":{"position":[[295,22]]}},"keywords":{}}],["administr",{"_index":963,"title":{},"content":{"77":{"position":[[22,16],[283,14],[506,16]]},"498":{"position":[[392,13]]},"586":{"position":[[22,16],[283,14],[506,16]]}},"keywords":{}}],["administrators/committers/contributor",{"_index":975,"title":{},"content":{"77":{"position":[[558,38]]},"586":{"position":[[558,38]]}},"keywords":{}}],["adopt",{"_index":716,"title":{},"content":{"53":{"position":[[9344,8]]}},"keywords":{}}],["advanc",{"_index":2226,"title":{},"content":{"262":{"position":[[185,7]]}},"keywords":{}}],["advantag",{"_index":1215,"title":{},"content":{"93":{"position":[[211,10]]},"184":{"position":[[51,9],[116,10]]},"607":{"position":[[211,10]]},"712":{"position":[[51,9],[116,10]]}},"keywords":{}}],["ae2",{"_index":2809,"title":{},"content":{"389":{"position":[[530,4]]},"392":{"position":[[294,4]]},"395":{"position":[[282,4]]},"398":{"position":[[289,4]]},"878":{"position":[[530,4]]},"881":{"position":[[294,4]]},"884":{"position":[[282,4]]},"887":{"position":[[289,4]]}},"keywords":{}}],["affect",{"_index":1885,"title":{},"content":{"186":{"position":[[546,9]]},"714":{"position":[[546,9]]},"965":{"position":[[16055,6]]},"967":{"position":[[2178,6]]}},"keywords":{}}],["ag",{"_index":58,"title":{},"content":{"4":{"position":[[140,3]]},"340":{"position":[[119,3]]},"464":{"position":[[140,3]]},"814":{"position":[[121,3]]}},"keywords":{}}],["again",{"_index":670,"title":{},"content":{"53":{"position":[[7080,7]]},"323":{"position":[[136,7]]},"773":{"position":[[136,7]]},"934":{"position":[[270,7]]}},"keywords":{}}],["agent",{"_index":2273,"title":{},"content":{"265":{"position":[[792,6]]}},"keywords":{}}],["agentlib:jdwp=transport=dt_socket",{"_index":3166,"title":{},"content":{"491":{"position":[[456,34]]}},"keywords":{}}],["aggreg",{"_index":1601,"title":{},"content":{"133":{"position":[[342,13]]},"661":{"position":[[342,13]]}},"keywords":{}}],["agr",{"_index":650,"title":{},"content":{"53":{"position":[[6276,8],[6610,5]]},"56":{"position":[[88,5]]},"565":{"position":[[88,5]]}},"keywords":{}}],["agreement",{"_index":563,"title":{},"content":{"53":{"position":[[2773,9],[7062,9],[8343,9]]}},"keywords":{}}],["ahead",{"_index":656,"title":{},"content":{"53":{"position":[[6499,6],[6697,6]]}},"keywords":{}}],["airflow",{"_index":1202,"title":{},"content":{"92":{"position":[[520,7]]},"606":{"position":[[520,7]]}},"keywords":{}}],["alabaster=0.7.12=py37_0",{"_index":165,"title":{},"content":{"9":{"position":[[308,26],[895,26]]},"10":{"position":[[446,26]]},"11":{"position":[[468,26]]},"12":{"position":[[326,27],[816,27]]},"13":{"position":[[479,27]]},"115":{"position":[[606,23],[1027,23]]},"351":{"position":[[273,26]]},"359":{"position":[[282,27]]},"538":{"position":[[308,26],[895,26]]},"539":{"position":[[446,26]]},"540":{"position":[[468,26]]},"541":{"position":[[326,27],[816,27]]},"542":{"position":[[479,27]]},"599":{"position":[[606,23],[1027,23]]},"825":{"position":[[273,26]]},"833":{"position":[[282,27]]}},"keywords":{}}],["alabaster\\u003d0.7.12\\u003dpy37_0",{"_index":2714,"title":{},"content":{"351":{"position":[[878,36]]},"353":{"position":[[756,36]]},"356":{"position":[[444,36]]},"359":{"position":[[773,37]]},"362":{"position":[[447,36]]},"825":{"position":[[878,36]]},"827":{"position":[[756,36]]},"830":{"position":[[444,36]]},"833":{"position":[[773,37]]},"836":{"position":[[447,36]]}},"keywords":{}}],["algorithm",{"_index":1092,"title":{"212":{"position":[[12,9]]},"707":{"position":[[12,9]]}},"content":{"90":{"position":[[458,10],[590,9],[783,10]]},"152":{"position":[[1250,9]]},"157":{"position":[[911,10]]},"186":{"position":[[107,9],[173,9],[196,9],[989,9],[1048,9]]},"190":{"position":[[418,11]]},"197":{"position":[[260,9],[287,9],[504,9]]},"199":{"position":[[95,9],[213,9]]},"202":{"position":[[66,9]]},"203":{"position":[[17,9],[112,10]]},"206":{"position":[[164,9]]},"207":{"position":[[47,9],[377,9]]},"208":{"position":[[47,9]]},"212":{"position":[[225,9],[265,9]]},"302":{"position":[[482,11]]},"433":{"position":[[38,9]]},"498":{"position":[[57,9]]},"502":{"position":[[220,9],[779,9],[3049,9]]},"604":{"position":[[458,10],[590,9],[783,10]]},"652":{"position":[[1530,9]]},"657":{"position":[[911,10]]},"692":{"position":[[260,9],[287,9],[504,9]]},"694":{"position":[[95,9],[213,9]]},"697":{"position":[[66,9]]},"698":{"position":[[17,9],[112,10]]},"701":{"position":[[164,9]]},"702":{"position":[[47,9],[377,9]]},"703":{"position":[[47,9]]},"707":{"position":[[225,9],[265,9]]},"714":{"position":[[107,9],[173,9],[196,9],[989,9],[1048,9]]},"718":{"position":[[423,11]]},"770":{"position":[[482,11]]},"927":{"position":[[38,9]]}},"keywords":{}}],["algorithms/librari",{"_index":1240,"title":{},"content":{"94":{"position":[[237,21]]},"608":{"position":[[237,21]]}},"keywords":{}}],["algorithms:answ",{"_index":1097,"title":{},"content":{"90":{"position":[[529,17]]},"604":{"position":[[529,17]]}},"keywords":{}}],["alia",{"_index":3666,"title":{},"content":{"791":{"position":[[14210,5],[14229,5],[14675,6],[29759,5],[29778,5],[30224,6]]}},"keywords":{}}],["all.q",{"_index":3360,"title":{},"content":{"788":{"position":[[737,6]]}},"keywords":{}}],["all.sh",{"_index":3336,"title":{},"content":{"779":{"position":[[96,6],[147,6]]},"952":{"position":[[40,6]]},"957":{"position":[[42,6]]},"972":{"position":[[35,6]]}},"keywords":{}}],["all.tgz",{"_index":2520,"title":{},"content":{"324":{"position":[[1404,7]]},"774":{"position":[[857,7]]}},"keywords":{}}],["alloc",{"_index":3211,"title":{},"content":{"498":{"position":[[499,9]]}},"keywords":{}}],["allow",{"_index":734,"title":{},"content":{"53":{"position":[[10696,5]]},"98":{"position":[[125,6]]},"99":{"position":[[46,5]]},"101":{"position":[[384,5]]},"102":{"position":[[1010,5]]},"105":{"position":[[52,6]]},"110":{"position":[[1400,5]]},"161":{"position":[[32,5]]},"190":{"position":[[12,5]]},"313":{"position":[[616,6]]},"433":{"position":[[96,6]]},"612":{"position":[[125,6]]},"613":{"position":[[46,5]]},"615":{"position":[[384,5]]},"616":{"position":[[1015,5],[1140,5]]},"619":{"position":[[52,6]]},"624":{"position":[[1405,5]]},"668":{"position":[[32,5]]},"718":{"position":[[12,5]]},"785":{"position":[[616,6]]},"788":{"position":[[796,5]]},"927":{"position":[[96,6]]}},"keywords":{}}],["allow_soft_plac",{"_index":3974,"title":{},"content":{"965":{"position":[[1086,21],[5020,21],[10568,21],[14526,21],[16637,21]]}},"keywords":{}}],["alon",{"_index":739,"title":{},"content":{"53":{"position":[[10906,6]]}},"keywords":{}}],["alphabet",{"_index":2529,"title":{},"content":{"327":{"position":[[429,10]]},"808":{"position":[[429,10]]}},"keywords":{}}],["alphanum",{"_index":2528,"title":{},"content":{"327":{"position":[[384,12],[462,12]]},"808":{"position":[[384,12],[462,12]]}},"keywords":{}}],["alreadi",{"_index":93,"title":{},"content":{"4":{"position":[[583,7]]},"23":{"position":[[614,7]]},"113":{"position":[[434,7]]},"186":{"position":[[915,7]]},"265":{"position":[[15,7]]},"369":{"position":[[580,7]]},"464":{"position":[[583,7]]},"552":{"position":[[614,7]]},"597":{"position":[[434,7]]},"714":{"position":[[915,7]]},"843":{"position":[[580,7]]},"964":{"position":[[21,7]]},"979":{"position":[[95,7]]},"984":{"position":[[92,7]]},"989":{"position":[[90,7]]}},"keywords":{}}],["alt",{"_index":666,"title":{},"content":{"53":{"position":[[6961,11],[9447,11]]},"115":{"position":[[30,12]]},"599":{"position":[[30,12]]},"791":{"position":[[13420,13],[15117,13],[15394,13],[28969,13],[30666,13],[30943,13]]}},"keywords":{}}],["alway",{"_index":946,"title":{},"content":{"75":{"position":[[110,6]]},"129":{"position":[[281,6]]},"158":{"position":[[75,6]]},"473":{"position":[[46,6]]},"584":{"position":[[110,6]]},"636":{"position":[[281,6]]},"658":{"position":[[75,6]]},"933":{"position":[[46,6]]}},"keywords":{}}],["amazon",{"_index":1373,"title":{},"content":{"103":{"position":[[199,6]]},"112":{"position":[[225,6]]},"596":{"position":[[225,6]]},"617":{"position":[[199,6]]}},"keywords":{}}],["amd64",{"_index":2465,"title":{},"content":{"316":{"position":[[411,5]]},"482":{"position":[[227,5],[588,5]]},"777":{"position":[[1316,5]]},"791":{"position":[[3534,5],[3548,5],[3627,5],[3641,5],[3716,5],[3738,5],[3819,5],[3838,5],[3918,5],[3929,5],[4023,5],[4038,5],[4135,5],[4150,5],[4241,5],[4264,5],[4367,5],[4390,5],[4494,5],[4516,5],[4610,5],[4632,5],[4718,5],[4737,5],[4820,5],[4904,5],[4919,5],[5004,5],[5025,5],[5111,5],[5123,5],[5208,5],[5304,5],[5318,5],[5403,5],[5419,5],[5513,5],[5616,5],[5640,5],[5722,5],[5733,5],[5814,5],[5836,5],[5917,5],[5941,5],[6019,5],[6133,5],[6159,5],[6254,5],[6275,5],[6361,5],[6464,5],[6560,5],[6661,5],[6781,5],[6887,5],[19358,5],[19372,5],[19451,5],[19465,5],[19540,5],[19562,5],[19643,5],[19662,5],[19742,5],[19753,5],[19847,5],[19862,5],[19959,5],[19974,5],[20065,5],[20088,5],[20191,5],[20214,5],[20318,5],[20340,5],[20434,5],[20456,5],[20542,5],[20561,5],[20644,5],[20728,5],[20743,5],[20828,5],[20849,5],[20935,5],[20947,5],[21032,5],[21128,5],[21142,5],[21227,5],[21243,5],[21337,5],[21440,5],[21464,5],[21546,5],[21557,5],[21638,5],[21660,5],[21737,5],[21851,5],[21877,5],[21972,5],[21993,5],[22079,5],[22182,5],[22278,5],[22379,5],[22499,5],[22605,5]]},"793":{"position":[[411,5]]},"945":{"position":[[227,5],[588,5]]},"950":{"position":[[1057,5]]},"981":{"position":[[796,5],[901,5]]},"986":{"position":[[506,5],[611,5]]}},"keywords":{}}],["amd64/jr",{"_index":3371,"title":{},"content":{"791":{"position":[[461,10]]}},"keywords":{}}],["ami",{"_index":1372,"title":{},"content":{"103":{"position":[[194,4]]},"112":{"position":[[249,4]]},"596":{"position":[[249,4]]},"617":{"position":[[194,4]]}},"keywords":{}}],["amount",{"_index":1227,"title":{},"content":{"93":{"position":[[603,6]]},"199":{"position":[[544,7]]},"607":{"position":[[603,6]]},"694":{"position":[[544,7]]}},"keywords":{}}],["anaconda",{"_index":167,"title":{},"content":{"9":{"position":[[362,9],[394,9],[949,9],[981,9]]},"10":{"position":[[500,9],[532,9]]},"11":{"position":[[522,9],[554,9]]},"115":{"position":[[658,8],[689,8],[724,8],[1079,8],[1110,8]]},"351":{"position":[[327,9],[359,9],[952,9],[994,9]]},"353":{"position":[[830,9],[872,9]]},"356":{"position":[[518,9],[560,9]]},"362":{"position":[[521,9],[563,9]]},"538":{"position":[[362,9],[394,9],[949,9],[981,9]]},"539":{"position":[[500,9],[532,9]]},"540":{"position":[[522,9],[554,9]]},"599":{"position":[[658,8],[689,8],[724,8],[1079,8],[1110,8]]},"825":{"position":[[327,9],[359,9],[952,9],[994,9]]},"827":{"position":[[830,9],[872,9]]},"830":{"position":[[518,9],[560,9]]},"836":{"position":[[521,9],[563,9]]}},"keywords":{}}],["anaconda=2020.02=py37_0",{"_index":166,"title":{},"content":{"9":{"position":[[335,26],[922,26]]},"10":{"position":[[473,26]]},"11":{"position":[[495,26]]},"115":{"position":[[632,23],[1053,23]]},"351":{"position":[[300,26]]},"538":{"position":[[335,26],[922,26]]},"539":{"position":[[473,26]]},"540":{"position":[[495,26]]},"599":{"position":[[632,23],[1053,23]]},"825":{"position":[[300,26]]}},"keywords":{}}],["anaconda\\u003d2020.02\\u003dpy37_0",{"_index":2715,"title":{},"content":{"351":{"position":[[915,36]]},"353":{"position":[[793,36]]},"356":{"position":[[481,36]]},"362":{"position":[[484,36]]},"825":{"position":[[915,36]]},"827":{"position":[[793,36]]},"830":{"position":[[481,36]]},"836":{"position":[[484,36]]}},"keywords":{}}],["analyz",{"_index":767,"title":{},"content":{"54":{"position":[[1318,7]]},"79":{"position":[[368,8]]}},"keywords":{}}],["and/or",{"_index":1446,"title":{},"content":{"112":{"position":[[173,6]]},"596":{"position":[[173,6]]}},"keywords":{}}],["angular",{"_index":3140,"title":{},"content":{"487":{"position":[[0,7],[82,7]]}},"keywords":{}}],["angular.j",{"_index":2401,"title":{},"content":{"302":{"position":[[307,10]]},"770":{"position":[[307,10]]}},"keywords":{}}],["announc",{"_index":1011,"title":{},"content":{"79":{"position":[[2096,10]]},"281":{"position":[[1153,8]]},"286":{"position":[[123,8],[163,10],[267,8]]}},"keywords":{}}],["announcements.dev",{"_index":1051,"title":{},"content":{"86":{"position":[[154,17]]},"593":{"position":[[154,17]]}},"keywords":{}}],["annual",{"_index":619,"title":{},"content":{"53":{"position":[[5187,9]]}},"keywords":{}}],["anoconda",{"_index":2579,"title":{},"content":{"330":{"position":[[90,8]]},"800":{"position":[[90,8]]}},"keywords":{}}],["anomali",{"_index":1964,"title":{},"content":{"210":{"position":[[51,10]]},"705":{"position":[[51,10]]}},"keywords":{}}],["anonym",{"_index":2731,"title":{},"content":{"365":{"position":[[567,9],[593,9]]},"839":{"position":[[567,9],[593,9]]}},"keywords":{}}],["anonymous/embed",{"_index":242,"title":{"22":{"position":[[25,18]]},"364":{"position":[[25,18]]},"551":{"position":[[25,18]]},"838":{"position":[[25,18]]}},"content":{},"keywords":{}}],["anoth",{"_index":943,"title":{},"content":{"74":{"position":[[646,7]]},"90":{"position":[[1320,7],[1653,7]]},"213":{"position":[[273,7]]},"583":{"position":[[646,7]]},"604":{"position":[[1320,7],[1653,7]]},"708":{"position":[[273,7]]}},"keywords":{}}],["answ",{"_index":758,"title":{},"content":{"54":{"position":[[964,6]]},"90":{"position":[[2880,6]]},"604":{"position":[[2880,6]]}},"keywords":{}}],["anti",{"_index":1611,"title":{},"content":{"134":{"position":[[389,4]]},"662":{"position":[[389,4]]}},"keywords":{}}],["anyon",{"_index":693,"title":{},"content":{"53":{"position":[[8278,6]]},"54":{"position":[[288,6],[423,6]]},"69":{"position":[[0,6]]},"578":{"position":[[0,6]]}},"keywords":{}}],["anyth",{"_index":1523,"title":{},"content":{"117":{"position":[[1342,8]]},"134":{"position":[[479,9]]},"601":{"position":[[1342,8]]},"662":{"position":[[479,9]]}},"keywords":{}}],["anywh",{"_index":1126,"title":{},"content":{"90":{"position":[[1510,10]]},"604":{"position":[[1510,10]]}},"keywords":{}}],["apach",{"_index":171,"title":{"72":{"position":[[10,6]]},"80":{"position":[[0,6]]},"273":{"position":[[15,6]]},"274":{"position":[[35,6]]},"279":{"position":[[18,6]]},"284":{"position":[[31,6]]},"322":{"position":[[9,6]]},"581":{"position":[[10,6]]},"587":{"position":[[0,6]]},"772":{"position":[[9,6]]}},"content":{"9":{"position":[[451,8],[1038,8]]},"10":{"position":[[589,8]]},"11":{"position":[[611,8]]},"53":{"position":[[49,6],[237,6],[341,6],[499,6],[588,7],[620,6],[706,6],[759,6],[1191,6],[1329,6],[2705,6],[2806,6],[3693,6],[3729,6],[3827,7],[3923,6],[4038,6],[4888,6],[4932,6],[5451,6]]},"54":{"position":[[0,6],[73,6],[112,7],[196,6],[384,6]]},"56":{"position":[[0,6],[23,6],[101,6],[209,6]]},"73":{"position":[[86,6]]},"79":{"position":[[1466,6],[1669,6],[1753,6],[2005,6]]},"83":{"position":[[110,6],[484,6]]},"86":{"position":[[15,6]]},"87":{"position":[[35,6]]},"90":{"position":[[1195,6]]},"92":{"position":[[513,6]]},"98":{"position":[[105,6],[612,6]]},"99":{"position":[[545,6]]},"107":{"position":[[461,6]]},"108":{"position":[[205,6]]},"252":{"position":[[1963,6],[2014,6],[2187,6],[2245,6],[2312,6],[2370,6],[2554,6]]},"253":{"position":[[185,6],[350,6],[426,6]]},"254":{"position":[[6,6]]},"255":{"position":[[6,6],[64,6]]},"257":{"position":[[191,6]]},"260":{"position":[[168,6]]},"263":{"position":[[1021,6],[1716,6]]},"265":{"position":[[389,6]]},"267":{"position":[[296,6]]},"270":{"position":[[159,6],[237,6]]},"274":{"position":[[104,6],[181,6]]},"279":{"position":[[84,6]]},"281":{"position":[[1216,6],[1281,6]]},"284":{"position":[[90,6]]},"286":{"position":[[174,6],[285,6],[325,6],[484,7]]},"324":{"position":[[0,6],[523,6],[547,6],[818,6],[1089,6],[1306,6]]},"332":{"position":[[197,6],[253,6]]},"351":{"position":[[416,8],[1060,8]]},"353":{"position":[[938,8]]},"356":{"position":[[626,8]]},"362":{"position":[[629,8]]},"441":{"position":[[4,6]]},"476":{"position":[[6,6]]},"538":{"position":[[451,8],[1038,8]]},"539":{"position":[[589,8]]},"540":{"position":[[611,8]]},"565":{"position":[[0,6],[23,6],[101,6],[209,6]]},"582":{"position":[[86,6]]},"590":{"position":[[110,6]]},"593":{"position":[[15,6]]},"594":{"position":[[35,6]]},"604":{"position":[[1195,6]]},"606":{"position":[[513,6]]},"612":{"position":[[105,6],[612,6]]},"613":{"position":[[545,6]]},"621":{"position":[[462,6]]},"622":{"position":[[205,6]]},"687":{"position":[[388,6]]},"767":{"position":[[26,6]]},"774":{"position":[[0,6],[271,6],[542,6],[759,6]]},"802":{"position":[[197,6],[253,6]]},"825":{"position":[[416,8],[1060,8]]},"827":{"position":[[938,8]]},"830":{"position":[[626,8]]},"836":{"position":[[629,8]]},"925":{"position":[[4,6]]},"934":{"position":[[47,6],[278,6],[301,6],[359,6],[375,6]]},"937":{"position":[[25,6],[42,6]]},"939":{"position":[[13,6],[144,6],[1607,6]]}},"keywords":{}}],["apache'",{"_index":912,"title":{},"content":{"73":{"position":[[44,8]]},"582":{"position":[[44,8]]}},"keywords":{}}],["apache/submarin",{"_index":816,"title":{"59":{"position":[[12,16]]},"68":{"position":[[60,16]]},"568":{"position":[[12,16]]},"577":{"position":[[60,16]]}},"content":{"179":{"position":[[419,16]]},"310":{"position":[[296,16]]},"686":{"position":[[419,16]]},"782":{"position":[[296,16]]}},"keywords":{}}],["apache/submarine:databas",{"_index":2500,"title":{},"content":{"324":{"position":[[384,25]]},"488":{"position":[[247,25]]}},"keywords":{}}],["apache/submarine:jupyt",{"_index":430,"title":{},"content":{"41":{"position":[[712,25]]},"324":{"position":[[454,24]]},"563":{"position":[[712,25]]}},"keywords":{}}],["apache/submarine:mini",{"_index":2341,"title":{},"content":{"281":{"position":[[347,21]]},"324":{"position":[[268,21]]}},"keywords":{}}],["apache/submarine:pytorch",{"_index":279,"title":{},"content":{"24":{"position":[[1203,25]]},"553":{"position":[[1203,25]]}},"keywords":{}}],["apache/submarine:serv",{"_index":2499,"title":{},"content":{"324":{"position":[[324,23]]},"488":{"position":[[391,23]]}},"keywords":{}}],["apache/submarine:tf",{"_index":229,"title":{},"content":{"15":{"position":[[996,20]]},"18":{"position":[[993,20]]},"22":{"position":[[356,20],[1114,20]]},"24":{"position":[[623,20]]},"25":{"position":[[656,20]]},"26":{"position":[[364,20],[967,20]]},"27":{"position":[[659,20]]},"178":{"position":[[216,20]]},"366":{"position":[[322,20]]},"377":{"position":[[323,20]]},"405":{"position":[[303,20]]},"410":{"position":[[964,20]]},"415":{"position":[[969,20]]},"424":{"position":[[541,20]]},"425":{"position":[[548,20]]},"544":{"position":[[996,20]]},"547":{"position":[[993,20]]},"551":{"position":[[356,20],[1114,20]]},"553":{"position":[[623,20]]},"554":{"position":[[656,20]]},"555":{"position":[[364,20],[967,20]]},"556":{"position":[[659,20]]},"685":{"position":[[216,20]]},"840":{"position":[[322,20]]},"851":{"position":[[323,20]]},"863":{"position":[[964,20]]},"868":{"position":[[969,20]]},"894":{"position":[[303,20]]},"898":{"position":[[541,20]]},"899":{"position":[[548,20]]}},"keywords":{}}],["apacheth",{"_index":2169,"title":{},"content":{"260":{"position":[[135,9]]}},"keywords":{}}],["apache’",{"_index":742,"title":{},"content":{"54":{"position":[[57,8]]},"85":{"position":[[55,8]]},"257":{"position":[[31,8]]},"592":{"position":[[55,8]]}},"keywords":{}}],["api",{"_index":144,"title":{"8":{"position":[[17,3]]},"14":{"position":[[25,3]]},"21":{"position":[[16,3]]},"30":{"position":[[11,3]]},"37":{"position":[[14,3]]},"42":{"position":[[11,3]]},"45":{"position":[[11,3]]},"113":{"position":[[12,3]]},"140":{"position":[[0,3]]},"157":{"position":[[31,3]]},"161":{"position":[[25,4]]},"348":{"position":[[17,3]]},"363":{"position":[[16,3]]},"386":{"position":[[14,3]]},"407":{"position":[[25,3]]},"537":{"position":[[17,3]]},"543":{"position":[[25,3]]},"550":{"position":[[16,3]]},"559":{"position":[[14,3]]},"597":{"position":[[12,3]]},"640":{"position":[[0,3]]},"657":{"position":[[31,3]]},"668":{"position":[[25,4]]},"822":{"position":[[17,3]]},"837":{"position":[[16,3]]},"860":{"position":[[25,3]]},"875":{"position":[[14,3]]}},"content":{"12":{"position":[[998,4]]},"18":{"position":[[1199,4]]},"23":{"position":[[668,3]]},"102":{"position":[[1984,4]]},"105":{"position":[[40,5]]},"110":{"position":[[97,3],[1393,3]]},"113":{"position":[[72,3]]},"125":{"position":[[161,4]]},"132":{"position":[[1394,4]]},"140":{"position":[[94,4]]},"145":{"position":[[184,5]]},"148":{"position":[[491,4]]},"158":{"position":[[2918,4]]},"161":{"position":[[202,4],[390,3],[529,3],[595,3],[928,3]]},"162":{"position":[[945,4]]},"180":{"position":[[530,3]]},"281":{"position":[[1112,3]]},"300":{"position":[[29,4]]},"305":{"position":[[117,4]]},"365":{"position":[[894,4]]},"369":{"position":[[634,3],[672,4]]},"388":{"position":[[410,4]]},"400":{"position":[[111,4]]},"409":{"position":[[1107,4]]},"424":{"position":[[130,4]]},"425":{"position":[[158,4]]},"433":{"position":[[85,4]]},"439":{"position":[[12,3],[56,3],[130,3],[768,3]]},"541":{"position":[[998,4]]},"547":{"position":[[1199,4]]},"552":{"position":[[668,3]]},"597":{"position":[[72,3]]},"616":{"position":[[1996,4]]},"619":{"position":[[40,5]]},"624":{"position":[[97,3],[1398,3]]},"632":{"position":[[161,4]]},"640":{"position":[[94,4]]},"645":{"position":[[184,5]]},"648":{"position":[[491,4]]},"658":{"position":[[2918,4]]},"660":{"position":[[1394,4]]},"668":{"position":[[202,4],[390,3],[529,3],[595,3],[928,3]]},"669":{"position":[[1198,4]]},"687":{"position":[[583,3]]},"756":{"position":[[117,4]]},"768":{"position":[[29,4]]},"839":{"position":[[894,4]]},"843":{"position":[[634,3],[672,4]]},"862":{"position":[[1107,4]]},"877":{"position":[[410,4]]},"889":{"position":[[111,4]]},"898":{"position":[[130,4]]},"899":{"position":[[158,4]]},"907":{"position":[[49,3]]},"923":{"position":[[12,3],[56,3]]},"927":{"position":[[85,4]]}},"keywords":{}}],["api'",{"_index":271,"title":{},"content":{"23":{"position":[[732,5]]},"552":{"position":[[732,5]]}},"keywords":{}}],["api/multi_worker_strategi",{"_index":2636,"title":{},"content":{"343":{"position":[[270,25]]},"817":{"position":[[270,25]]}},"keywords":{}}],["api/v1/environ",{"_index":147,"title":{},"content":{"9":{"position":[[5,19]]},"10":{"position":[[4,19]]},"349":{"position":[[5,19]]},"352":{"position":[[4,19]]},"538":{"position":[[5,19]]},"539":{"position":[[4,19]]},"823":{"position":[[5,19]]},"826":{"position":[[4,19]]}},"keywords":{}}],["api/v1/environment/{nam",{"_index":186,"title":{},"content":{"11":{"position":[[4,26]]},"12":{"position":[[6,26]]},"13":{"position":[[4,26]]},"354":{"position":[[4,26]]},"357":{"position":[[6,26]]},"360":{"position":[[7,26]]},"540":{"position":[[4,26]]},"541":{"position":[[6,26]]},"542":{"position":[[4,26]]},"828":{"position":[[4,26]]},"831":{"position":[[6,26]]},"834":{"position":[[7,26]]}},"keywords":{}}],["api/v1/experi",{"_index":243,"title":{},"content":{"22":{"position":[[5,18]]},"23":{"position":[[5,18]]},"24":{"position":[[4,18]]},"364":{"position":[[5,18]]},"367":{"position":[[5,18]]},"370":{"position":[[4,18]]},"551":{"position":[[5,18]]},"552":{"position":[[5,18]]},"553":{"position":[[4,18]]},"838":{"position":[[5,18]]},"841":{"position":[[5,18]]},"844":{"position":[[4,18]]}},"keywords":{}}],["api/v1/experiment/log",{"_index":285,"title":{},"content":{"28":{"position":[[4,23]]},"381":{"position":[[4,23]]},"557":{"position":[[4,23]]},"855":{"position":[[4,23]]}},"keywords":{}}],["api/v1/experiment/logs/{id",{"_index":295,"title":{},"content":{"29":{"position":[[4,28]]},"383":{"position":[[4,28]]},"558":{"position":[[4,28]]},"857":{"position":[[4,28]]}},"keywords":{}}],["api/v1/experiment/{id",{"_index":282,"title":{},"content":{"25":{"position":[[4,23]]},"26":{"position":[[6,23]]},"27":{"position":[[4,23]]},"372":{"position":[[4,23]]},"375":{"position":[[6,23]]},"378":{"position":[[7,23]]},"554":{"position":[[4,23]]},"555":{"position":[[6,23]]},"556":{"position":[[4,23]]},"846":{"position":[[4,23]]},"849":{"position":[[6,23]]},"852":{"position":[[7,23]]}},"keywords":{}}],["api/v1/experiment/{template_nam",{"_index":236,"title":{},"content":{"20":{"position":[[5,34]]},"419":{"position":[[5,34]]},"549":{"position":[[5,34]]},"872":{"position":[[5,34]]}},"keywords":{}}],["api/v1/model",{"_index":342,"title":{},"content":{"31":{"position":[[4,13]]},"32":{"position":[[4,13]]},"33":{"position":[[6,13]]},"34":{"position":[[7,13]]},"35":{"position":[[5,13]]},"36":{"position":[[7,13]]}},"keywords":{}}],["api/v1/notebook",{"_index":379,"title":{},"content":{"38":{"position":[[5,16]]},"39":{"position":[[4,16]]},"387":{"position":[[5,16]]},"390":{"position":[[4,16]]},"560":{"position":[[5,16]]},"561":{"position":[[4,16]]},"876":{"position":[[5,16]]},"879":{"position":[[4,16]]}},"keywords":{}}],["api/v1/notebook/{id",{"_index":416,"title":{},"content":{"40":{"position":[[4,21]]},"41":{"position":[[7,21]]},"393":{"position":[[4,21]]},"396":{"position":[[7,21]]},"562":{"position":[[4,21]]},"563":{"position":[[7,21]]},"882":{"position":[[4,21]]},"885":{"position":[[7,21]]}},"keywords":{}}],["api/v1/regist",{"_index":439,"title":{},"content":{"46":{"position":[[5,18]]},"47":{"position":[[4,18]]},"48":{"position":[[4,18]]},"49":{"position":[[6,18]]},"50":{"position":[[7,18]]},"51":{"position":[[5,18]]},"52":{"position":[[7,18]]}},"keywords":{}}],["api/v1/serv",{"_index":431,"title":{},"content":{"43":{"position":[[5,13]]},"44":{"position":[[7,13]]}},"keywords":{}}],["api/v1/templ",{"_index":197,"title":{},"content":{"15":{"position":[[5,16]]},"16":{"position":[[4,16]]},"408":{"position":[[5,16]]},"411":{"position":[[4,16]]},"544":{"position":[[5,16]]},"545":{"position":[[4,16]]},"861":{"position":[[5,16]]},"864":{"position":[[4,16]]}},"keywords":{}}],["api/v1/template/{nam",{"_index":233,"title":{},"content":{"17":{"position":[[4,23]]},"18":{"position":[[6,23]]},"19":{"position":[[4,23]]},"546":{"position":[[4,23]]},"547":{"position":[[6,23]]},"548":{"position":[[4,23]]}},"keywords":{}}],["api/v1/template{nam",{"_index":2871,"title":{},"content":{"413":{"position":[[6,22]]},"416":{"position":[[7,22]]},"866":{"position":[[6,22]]},"869":{"position":[[7,22]]}},"keywords":{}}],["apiextensions.k8s.io/v1beta1",{"_index":100,"title":{},"content":{"4":{"position":[[733,29],[804,29]]},"464":{"position":[[733,29],[804,29]]}},"keywords":{}}],["apiv",{"_index":1628,"title":{},"content":{"134":{"position":[[1846,11]]},"180":{"position":[[458,10]]},"314":{"position":[[738,11]]},"495":{"position":[[334,11]]},"662":{"position":[[1846,11]]},"687":{"position":[[511,10]]},"786":{"position":[[738,11]]}},"keywords":{}}],["app/docker/containers/0bfafa146431771f6024dcb9775ef47f170edb2f152f71916ba44209ca6120a/shm",{"_index":3103,"title":{},"content":{"484":{"position":[[158,91]]},"947":{"position":[[158,91]]}},"keywords":{}}],["apparmor",{"_index":3437,"title":{},"content":{"791":{"position":[[2542,8],[18384,8]]}},"keywords":{}}],["appear",{"_index":1923,"title":{},"content":{"203":{"position":[[276,6]]},"252":{"position":[[2478,8]]},"279":{"position":[[348,6]]},"502":{"position":[[2039,6]]},"698":{"position":[[276,6]]}},"keywords":{}}],["append",{"_index":1597,"title":{},"content":{"133":{"position":[[88,10],[202,10]]},"263":{"position":[[700,6],[790,10],[1387,6],[1477,10]]},"661":{"position":[[88,10],[202,10]]}},"keywords":{}}],["applaunchservices=0.2.1=py_0",{"_index":1501,"title":{},"content":{"115":{"position":[[754,28]]},"599":{"position":[[754,28]]}},"keywords":{}}],["appli",{"_index":676,"title":{},"content":{"53":{"position":[[7414,7]]},"79":{"position":[[1899,5]]},"318":{"position":[[60,5]]},"339":{"position":[[317,5]]},"496":{"position":[[213,5]]},"744":{"position":[[951,5],[1034,5]]},"795":{"position":[[60,5]]},"981":{"position":[[1407,8]]}},"keywords":{}}],["applic",{"_index":1122,"title":{"977":{"position":[[18,12]]},"982":{"position":[[15,12]]},"987":{"position":[[13,12]]}},"content":{"90":{"position":[[1263,12],[1952,11]]},"98":{"position":[[273,13]]},"160":{"position":[[1657,13]]},"184":{"position":[[153,12]]},"296":{"position":[[27,12]]},"485":{"position":[[34,12]]},"604":{"position":[[1263,12],[1952,11]]},"612":{"position":[[273,13]]},"667":{"position":[[1659,13]]},"712":{"position":[[153,12]]},"763":{"position":[[27,12]]},"788":{"position":[[877,11]]},"948":{"position":[[34,12]]}},"keywords":{}}],["application/json",{"_index":155,"title":{},"content":{"9":{"position":[[72,17]]},"12":{"position":[[82,17]]},"15":{"position":[[69,17]]},"18":{"position":[[62,17]]},"20":{"position":[[88,17]]},"22":{"position":[[71,17]]},"23":{"position":[[71,17]]},"26":{"position":[[79,17]]},"33":{"position":[[77,17]]},"38":{"position":[[69,17]]},"43":{"position":[[138,17]]},"44":{"position":[[70,17]]},"46":{"position":[[77,17]]},"49":{"position":[[87,17]]},"351":{"position":[[37,17]]},"359":{"position":[[38,17]]},"366":{"position":[[37,17]]},"369":{"position":[[37,17]]},"377":{"position":[[38,17]]},"389":{"position":[[37,17]]},"410":{"position":[[37,17]]},"415":{"position":[[38,17]]},"421":{"position":[[37,17]]},"538":{"position":[[72,17]]},"541":{"position":[[82,17]]},"544":{"position":[[69,17]]},"547":{"position":[[62,17]]},"549":{"position":[[88,17]]},"551":{"position":[[71,17]]},"552":{"position":[[71,17]]},"555":{"position":[[79,17]]},"560":{"position":[[69,17]]},"825":{"position":[[37,17]]},"833":{"position":[[38,17]]},"840":{"position":[[37,17]]},"843":{"position":[[37,17]]},"851":{"position":[[38,17]]},"863":{"position":[[37,17]]},"868":{"position":[[38,17]]},"874":{"position":[[37,17]]},"878":{"position":[[37,17]]}},"keywords":{}}],["applications.answ",{"_index":1150,"title":{},"content":{"90":{"position":[[2506,19]]},"604":{"position":[[2506,19]]}},"keywords":{}}],["apply_gradi",{"_index":4208,"title":{},"content":{"967":{"position":[[1626,15]]}},"keywords":{}}],["appoint",{"_index":611,"title":{},"content":{"53":{"position":[[4823,9]]}},"keywords":{}}],["appreci",{"_index":1036,"title":{},"content":{"82":{"position":[[625,12]]},"589":{"position":[[625,12]]}},"keywords":{}}],["approach",{"_index":1609,"title":{},"content":{"134":{"position":[[165,9],[2438,8]]},"161":{"position":[[561,11]]},"662":{"position":[[165,9],[2438,8]]},"668":{"position":[[561,11]]}},"keywords":{}}],["appropri",{"_index":664,"title":{},"content":{"53":{"position":[[6856,12],[6921,11]]}},"keywords":{}}],["approv",{"_index":537,"title":{},"content":{"53":{"position":[[2010,8],[2032,8],[2321,8],[4099,8],[4473,8],[4497,8],[4763,8],[5568,9],[5665,9],[5675,9],[5744,10],[5805,9],[6137,8],[7571,9],[7604,9],[7679,9],[7699,8],[7720,8],[8709,8],[8952,8],[9498,9],[9827,8],[9924,8]]},"74":{"position":[[676,7]]},"82":{"position":[[274,8]]},"498":{"position":[[292,8]]},"583":{"position":[[676,7]]},"589":{"position":[[274,8]]}},"keywords":{}}],["apt",{"_index":2442,"title":{},"content":{"313":{"position":[[972,3]]},"777":{"position":[[451,3],[470,3],[490,3],[1174,3],[1192,3]]},"785":{"position":[[972,3]]},"950":{"position":[[522,3],[571,3],[1067,3],[1085,3]]},"954":{"position":[[464,3],[482,3],[1646,3],[1664,3]]},"969":{"position":[[445,3],[463,3],[664,3],[756,3],[774,3],[819,3],[1283,3],[1301,3]]}},"keywords":{}}],["arbitrari",{"_index":965,"title":{},"content":{"77":{"position":[[214,9]]},"586":{"position":[[214,9]]}},"keywords":{}}],["architectur",{"_index":756,"title":{"88":{"position":[[0,12]]},"109":{"position":[[0,12]]},"110":{"position":[[0,12]]},"160":{"position":[[0,12]]},"292":{"position":[[8,12]]},"602":{"position":[[0,12]]},"623":{"position":[[0,12]]},"624":{"position":[[0,12]]},"667":{"position":[[0,12]]},"759":{"position":[[8,12]]}},"content":{"54":{"position":[[759,13]]},"106":{"position":[[24,12]]},"118":{"position":[[64,12],[139,13],[613,13]]},"149":{"position":[[17,12]]},"157":{"position":[[334,12]]},"160":{"position":[[851,12]]},"620":{"position":[[24,12]]},"625":{"position":[[64,12],[139,13],[614,13]]},"649":{"position":[[17,12]]},"657":{"position":[[334,12]]},"667":{"position":[[851,12]]}},"keywords":{}}],["archiv",{"_index":2292,"title":{},"content":{"269":{"position":[[163,7]]},"791":{"position":[[3404,9],[19228,9]]}},"keywords":{}}],["archives/netbase_5.3_all.deb",{"_index":3619,"title":{},"content":{"791":{"position":[[9720,32],[25438,32]]}},"keywords":{}}],["archivesfor",{"_index":1049,"title":{},"content":{"86":{"position":[[115,11],[198,11],[288,11]]},"593":{"position":[[115,11],[198,11],[288,11]]}},"keywords":{}}],["arg",{"_index":3864,"title":{},"content":{"954":{"position":[[437,3]]}},"keywords":{}}],["argument",{"_index":1522,"title":{},"content":{"117":{"position":[[1282,8]]},"601":{"position":[[1282,8]]},"965":{"position":[[295,8],[16039,9]]},"967":{"position":[[41,8]]}},"keywords":{}}],["armor",{"_index":2241,"title":{},"content":{"263":{"position":[[662,5],[1349,5]]},"271":{"position":[[131,5]]}},"keywords":{}}],["around",{"_index":585,"title":{},"content":{"53":{"position":[[3521,6]]}},"keywords":{}}],["artifact",{"_index":1068,"title":{},"content":{"89":{"position":[[157,9]]},"104":{"position":[[24,9],[95,9]]},"132":{"position":[[251,9],[1572,9],[1668,9]]},"133":{"position":[[447,9]]},"139":{"position":[[444,9],[1871,9],[1914,10]]},"148":{"position":[[260,9]]},"219":{"position":[[55,10]]},"279":{"position":[[21,9]]},"281":{"position":[[534,9]]},"284":{"position":[[21,9]]},"603":{"position":[[157,9]]},"618":{"position":[[24,9],[95,9]]},"639":{"position":[[444,9],[1884,9],[1927,10]]},"648":{"position":[[260,9]]},"660":{"position":[[251,9],[1572,9],[1668,9]]},"661":{"position":[[447,9]]},"733":{"position":[[55,10]]},"909":{"position":[[80,9]]},"979":{"position":[[359,9]]}},"keywords":{}}],["artifact.artifact_path",{"_index":3007,"title":{},"content":{"474":{"position":[[126,22]]}},"keywords":{}}],["artifact_path",{"_index":3001,"title":{"474":{"position":[[45,14]]},"914":{"position":[[56,14]]}},"content":{},"keywords":{}}],["artifacts/examples/crd.yaml",{"_index":3282,"title":{},"content":{"744":{"position":[[960,27]]}},"keywords":{}}],["artifacts/examples/exampl",{"_index":3284,"title":{},"content":{"744":{"position":[[1066,26]]}},"keywords":{}}],["as_supervised=tru",{"_index":2652,"title":{},"content":{"343":{"position":[[679,19]]},"817":{"position":[[697,19]]}},"keywords":{}}],["asdock",{"_index":2407,"title":{},"content":{"303":{"position":[[510,9]]},"771":{"position":[[510,9]]}},"keywords":{}}],["asf",{"_index":596,"title":{},"content":{"53":{"position":[[3879,3],[4840,3],[10220,3],[10456,3]]},"54":{"position":[[108,3],[2094,3]]},"77":{"position":[[416,3]]},"81":{"position":[[226,3]]},"254":{"position":[[246,3]]},"586":{"position":[[416,3]]}},"keywords":{}}],["asf.slack.com/submarin",{"_index":3253,"title":{},"content":{"588":{"position":[[107,23],[160,23]]}},"keywords":{}}],["asf/shared_invite/zt",{"_index":1017,"title":{},"content":{"81":{"position":[[124,20]]}},"keywords":{}}],["ask",{"_index":1231,"title":{},"content":{"93":{"position":[[854,6]]},"94":{"position":[[385,5]]},"260":{"position":[[2027,6]]},"263":{"position":[[967,5],[1662,5]]},"265":{"position":[[814,5]]},"607":{"position":[[854,6]]},"608":{"position":[[385,5]]}},"keywords":{}}],["askpass",{"_index":3438,"title":{},"content":{"791":{"position":[[2555,7],[18397,7]]}},"keywords":{}}],["asn1crypto=1.3.0=py37_0",{"_index":1692,"title":{},"content":{"146":{"position":[[250,23]]},"646":{"position":[[250,23]]}},"keywords":{}}],["asr/kaldi.git",{"_index":3316,"title":{},"content":{"777":{"position":[[868,13]]}},"keywords":{}}],["assent’).lazi",{"_index":684,"title":{},"content":{"53":{"position":[[7848,13]]}},"keywords":{}}],["asset",{"_index":1402,"title":{},"content":{"107":{"position":[[49,6],[492,6],[669,7]]},"160":{"position":[[124,5],[1208,5]]},"161":{"position":[[246,6]]},"621":{"position":[[49,6],[493,6],[670,7]]},"667":{"position":[[124,5],[1209,5]]},"668":{"position":[[246,6]]}},"keywords":{}}],["assign",{"_index":847,"title":{},"content":{"61":{"position":[[341,8]]},"77":{"position":[[132,8]]},"107":{"position":[[782,6]]},"570":{"position":[[341,8]]},"586":{"position":[[132,8]]},"621":{"position":[[783,6]]}},"keywords":{}}],["assist",{"_index":1003,"title":{},"content":{"79":{"position":[[1719,6]]}},"keywords":{}}],["associ",{"_index":483,"title":{},"content":{"53":{"position":[[802,10]]},"960":{"position":[[143,10]]}},"keywords":{}}],["assum",{"_index":266,"title":{},"content":{"23":{"position":[[576,6]]},"147":{"position":[[44,6]]},"238":{"position":[[19,6]]},"334":{"position":[[0,8]]},"369":{"position":[[542,6]]},"552":{"position":[[576,6]]},"647":{"position":[[44,6]]},"742":{"position":[[19,6]]},"744":{"position":[[407,6]]},"804":{"position":[[0,8]]},"843":{"position":[[542,6]]}},"keywords":{}}],["assur",{"_index":1180,"title":{},"content":{"91":{"position":[[443,10]]},"605":{"position":[[443,10]]}},"keywords":{}}],["at",{"_index":1795,"title":{},"content":{"158":{"position":[[612,4]]},"658":{"position":[[612,4]]}},"keywords":{}}],["atf_conf",{"_index":3937,"title":{},"content":{"964":{"position":[[77,10]]}},"keywords":{}}],["athttps://github.com/apache/submarine/tree/master/dev",{"_index":960,"title":{},"content":{"76":{"position":[[216,53]]},"585":{"position":[[216,53]]}},"keywords":{}}],["atomix",{"_index":1939,"title":{"212":{"position":[[0,6]]},"707":{"position":[[0,6]]}},"content":{"207":{"position":[[341,6]]},"208":{"position":[[579,6],[641,6]]},"212":{"position":[[290,6],[304,6]]},"702":{"position":[[341,6]]},"703":{"position":[[579,6],[641,6]]},"707":{"position":[[290,6],[304,6]]}},"keywords":{}}],["attach",{"_index":953,"title":{"136":{"position":[[0,10]]},"664":{"position":[[0,10]]}},"content":{"75":{"position":[[328,8]]},"121":{"position":[[596,6]]},"127":{"position":[[245,6],[362,11]]},"136":{"position":[[41,10],[249,10],[486,10]]},"584":{"position":[[328,8]]},"628":{"position":[[596,6]]},"634":{"position":[[245,6],[362,11]]},"664":{"position":[[41,10],[249,10],[486,10]]}},"keywords":{}}],["attempt",{"_index":926,"title":{},"content":{"74":{"position":[[51,7]]},"583":{"position":[[51,7]]}},"keywords":{}}],["attent",{"_index":2156,"title":{},"content":{"257":{"position":[[40,9]]},"260":{"position":[[12,9]]}},"keywords":{}}],["attribut",{"_index":294,"title":{},"content":{"28":{"position":[[530,13]]},"29":{"position":[[2661,13]]},"31":{"position":[[140,12]]},"32":{"position":[[152,12]]},"33":{"position":[[297,12]]},"34":{"position":[[157,12]]},"35":{"position":[[205,12]]},"36":{"position":[[319,15]]},"38":{"position":[[1185,15]]},"39":{"position":[[929,15]]},"40":{"position":[[918,15]]},"41":{"position":[[984,13]]},"43":{"position":[[372,15]]},"44":{"position":[[304,15]]},"46":{"position":[[369,15]]},"47":{"position":[[130,12]]},"48":{"position":[[150,12]]},"49":{"position":[[253,12]]},"50":{"position":[[155,12]]},"51":{"position":[[297,15]]},"52":{"position":[[191,12]]},"351":{"position":[[1168,15]]},"353":{"position":[[1367,15]]},"356":{"position":[[734,15]]},"359":{"position":[[873,15]]},"362":{"position":[[734,17]]},"366":{"position":[[1645,15]]},"369":{"position":[[1737,15]]},"371":{"position":[[2219,15]]},"374":{"position":[[1154,15]]},"377":{"position":[[1676,15]]},"380":{"position":[[1157,15]]},"382":{"position":[[323,15]]},"385":{"position":[[350,15]]},"389":{"position":[[1181,15]]},"392":{"position":[[929,15]]},"395":{"position":[[916,15]]},"398":{"position":[[946,15]]},"410":{"position":[[3042,15]]},"412":{"position":[[2045,15]]},"415":{"position":[[3066,15]]},"418":{"position":[[2062,15]]},"421":{"position":[[1335,15]]},"557":{"position":[[530,13]]},"558":{"position":[[2661,13]]},"560":{"position":[[1185,15]]},"561":{"position":[[929,15]]},"562":{"position":[[918,15]]},"563":{"position":[[984,13]]},"825":{"position":[[1168,15]]},"827":{"position":[[1367,15]]},"830":{"position":[[734,15]]},"833":{"position":[[873,15]]},"836":{"position":[[734,17]]},"840":{"position":[[1645,15]]},"843":{"position":[[1737,15]]},"845":{"position":[[2219,15]]},"848":{"position":[[1154,15]]},"851":{"position":[[1676,15]]},"854":{"position":[[1157,15]]},"856":{"position":[[323,15]]},"859":{"position":[[350,15]]},"863":{"position":[[3042,15]]},"865":{"position":[[2045,15]]},"868":{"position":[[3066,15]]},"871":{"position":[[2062,15]]},"874":{"position":[[1335,15]]},"878":{"position":[[1181,15]]},"881":{"position":[[929,15]]},"884":{"position":[[916,15]]},"887":{"position":[[946,15]]}},"keywords":{}}],["auc",{"_index":1351,"title":{},"content":{"102":{"position":[[1711,5]]},"157":{"position":[[643,5]]},"616":{"position":[[1723,5]]},"657":{"position":[[643,5]]}},"keywords":{}}],["audit",{"_index":3212,"title":{},"content":{"498":{"position":[[557,6]]},"939":{"position":[[938,9]]}},"keywords":{}}],["audit.xml",{"_index":3817,"title":{},"content":{"939":{"position":[[853,9]]}},"keywords":{}}],["authent",{"_index":1571,"title":{},"content":{"130":{"position":[[290,14]]},"161":{"position":[[652,15]]},"492":{"position":[[434,14]]},"637":{"position":[[290,14]]},"668":{"position":[[652,15]]},"791":{"position":[[15657,14]]}},"keywords":{}}],["author",{"_index":199,"title":{},"content":{"15":{"position":[[126,9],[136,9]]},"18":{"position":[[119,9],[129,7],[1160,8]]},"74":{"position":[[223,9]]},"79":{"position":[[1969,9]]},"157":{"position":[[836,7]]},"409":{"position":[[91,6],[110,6]]},"410":{"position":[[94,9],[104,9]]},"414":{"position":[[100,6],[119,6]]},"415":{"position":[[95,9],[105,7]]},"498":{"position":[[425,9]]},"544":{"position":[[126,9],[136,9]]},"547":{"position":[[119,9],[129,7],[1160,8]]},"583":{"position":[[223,9]]},"657":{"position":[[836,7]]},"767":{"position":[[8,13]]},"862":{"position":[[91,6],[110,6]]},"863":{"position":[[94,9],[104,9]]},"867":{"position":[[100,6],[119,6]]},"868":{"position":[[95,9],[105,7]]},"939":{"position":[[1872,13],[1920,13]]}},"keywords":{}}],["author\":\"author",{"_index":2846,"title":{},"content":{"410":{"position":[[1270,18]]},"412":{"position":[[272,18]]},"415":{"position":[[1296,16]]},"418":{"position":[[292,16]]},"863":{"position":[[1270,18]]},"865":{"position":[[272,18]]},"868":{"position":[[1296,16]]},"871":{"position":[[292,16]]}},"keywords":{}}],["auto",{"_index":1360,"title":{},"content":{"102":{"position":[[2016,4]]},"435":{"position":[[225,4]]},"616":{"position":[[2028,4]]},"791":{"position":[[13479,4],[15193,4],[15453,4],[29028,4],[30742,4],[31002,4]]},"919":{"position":[[225,4]]}},"keywords":{}}],["autoconf",{"_index":3301,"title":{},"content":{"777":{"position":[[597,8]]}},"keywords":{}}],["autoformat",{"_index":2925,"title":{},"content":{"437":{"position":[[113,10]]},"921":{"position":[[113,10]]}},"keywords":{}}],["autoipd",{"_index":3435,"title":{},"content":{"791":{"position":[[2513,7],[18355,7]]}},"keywords":{}}],["automak",{"_index":3300,"title":{},"content":{"777":{"position":[[586,8]]}},"keywords":{}}],["automat",{"_index":848,"title":{},"content":{"61":{"position":[[363,14]]},"129":{"position":[[587,13]]},"136":{"position":[[174,13]]},"187":{"position":[[101,13],[203,13]]},"190":{"position":[[239,13]]},"261":{"position":[[430,13]]},"290":{"position":[[63,14]]},"307":{"position":[[59,14]]},"490":{"position":[[244,14]]},"491":{"position":[[20,13]]},"570":{"position":[[363,14]]},"636":{"position":[[587,13]]},"664":{"position":[[174,13]]},"715":{"position":[[101,13],[203,13]]},"718":{"position":[[244,13]]},"753":{"position":[[63,14]]},"758":{"position":[[59,14]]}},"keywords":{}}],["automatically.aft",{"_index":897,"title":{},"content":{"70":{"position":[[82,19]]},"579":{"position":[[82,19]]}},"keywords":{}}],["automl",{"_index":1359,"title":{},"content":{"102":{"position":[[2008,7]]},"152":{"position":[[142,7]]},"616":{"position":[[2020,7]]},"652":{"position":[[142,7]]}},"keywords":{}}],["avahi",{"_index":3434,"title":{},"content":{"791":{"position":[[2507,5],[18349,5]]}},"keywords":{}}],["avail",{"_index":1875,"title":{"195":{"position":[[29,12]]},"690":{"position":[[29,12]]}},"content":{"184":{"position":[[408,13]]},"197":{"position":[[436,12],[628,12],[695,12]]},"203":{"position":[[66,9]]},"252":{"position":[[470,10]]},"268":{"position":[[403,10]]},"281":{"position":[[548,9]]},"692":{"position":[[436,12],[628,12],[695,12]]},"698":{"position":[[66,9]]},"712":{"position":[[408,13]]},"934":{"position":[[410,9]]},"954":{"position":[[1169,9]]}},"keywords":{}}],["averag",{"_index":1974,"title":{},"content":{"211":{"position":[[1023,7]]},"706":{"position":[[1023,7]]}},"keywords":{}}],["avoid",{"_index":1748,"title":{},"content":{"152":{"position":[[479,5]]},"158":{"position":[[2681,5]]},"211":{"position":[[921,5]]},"221":{"position":[[53,5]]},"303":{"position":[[237,5]]},"330":{"position":[[135,5]]},"652":{"position":[[485,5]]},"658":{"position":[[2681,5]]},"706":{"position":[[921,5]]},"735":{"position":[[53,5]]},"771":{"position":[[237,5]]},"800":{"position":[[135,5]]}},"keywords":{}}],["aw",{"_index":1892,"title":{"192":{"position":[[12,3]]},"721":{"position":[[12,3]]}},"content":{"189":{"position":[[153,3]]},"717":{"position":[[160,3]]}},"keywords":{}}],["aw:8042/node/containerlogs/container_1555916523933_0030_01_000002/pi",{"_index":4287,"title":{},"content":{"980":{"position":[[1555,68],[1714,68],[2189,68]]},"985":{"position":[[1415,68],[1574,68],[2049,68]]}},"keywords":{}}],["aw:8042/node/containerlogs/container_1555916523933_0030_01_000003/pi",{"_index":4284,"title":{},"content":{"980":{"position":[[1157,68],[1861,68],[2391,68]]},"985":{"position":[[1017,68],[1721,68],[2251,68]]}},"keywords":{}}],["aw:8042/node/containerlogs/container_1555916523933_0030_01_000004/pi",{"_index":4286,"title":{},"content":{"980":{"position":[[1358,68],[2008,68],[2593,68]]},"985":{"position":[[1218,68],[1868,68],[2453,68]]}},"keywords":{}}],["aw:8042/node/containerlogs/container_1587037749540_0005_01_000002/pi",{"_index":4337,"title":{},"content":{"990":{"position":[[2123,68],[2289,68],[3066,68]]}},"keywords":{}}],["aw:8042/node/containerlogs/container_1587037749540_0005_01_000003/pi",{"_index":4334,"title":{},"content":{"990":{"position":[[1514,68],[2436,68],[3882,68]]}},"keywords":{}}],["aw:8042/node/containerlogs/container_1587037749540_0005_01_000004/pi",{"_index":4333,"title":{},"content":{"990":{"position":[[1312,68],[2583,68],[3474,68]]}},"keywords":{}}],["aw:8042/node/containerlogs/container_1587037749540_0005_01_000005/pi",{"_index":4336,"title":{},"content":{"990":{"position":[[1918,68],[2730,68],[3270,68]]}},"keywords":{}}],["aw:8042/node/containerlogs/container_1587037749540_0005_01_000006/pi",{"_index":4335,"title":{},"content":{"990":{"position":[[1716,68],[2877,68],[3678,68]]}},"keywords":{}}],["aw:9000/dataset/cifar",{"_index":4292,"title":{},"content":{"981":{"position":[[355,21]]}},"keywords":{}}],["azur",{"_index":1448,"title":{"194":{"position":[[12,5]]},"723":{"position":[[12,5]]}},"content":{"112":{"position":[[273,5]]},"189":{"position":[[165,6]]},"596":{"position":[[273,5]]},"717":{"position":[[172,6]]}},"keywords":{}}],["b",{"_index":857,"title":{},"content":{"62":{"position":[[186,1],[238,1]]},"306":{"position":[[513,1]]},"571":{"position":[[186,1],[238,1]]},"757":{"position":[[513,1]]},"791":{"position":[[3864,2],[4941,2],[19688,2],[20765,2]]},"954":{"position":[[804,1]]}},"keywords":{}}],["b6cd4787b",{"_index":75,"title":{},"content":{"4":{"position":[[329,9]]},"464":{"position":[[329,9]]}},"keywords":{}}],["back",{"_index":1299,"title":{},"content":{"101":{"position":[[171,4]]},"134":{"position":[[302,4]]},"154":{"position":[[1049,4]]},"186":{"position":[[301,4]]},"252":{"position":[[1235,4]]},"615":{"position":[[171,4]]},"654":{"position":[[1054,4]]},"662":{"position":[[302,4]]},"714":{"position":[[301,4]]}},"keywords":{}}],["back.w",{"_index":1587,"title":{},"content":{"132":{"position":[[1884,7]]},"660":{"position":[[1884,7]]}},"keywords":{}}],["backend",{"_index":277,"title":{},"content":{"24":{"position":[[1128,7]]},"160":{"position":[[94,8],[704,7]]},"553":{"position":[[1128,7]]},"667":{"position":[[94,8],[704,7]]}},"keywords":{}}],["backend\\ndownload",{"_index":298,"title":{},"content":{"29":{"position":[[399,20],[1576,20]]},"558":{"position":[[399,20],[1576,20]]}},"keywords":{}}],["background",{"_index":472,"title":{"90":{"position":[[0,10]]},"604":{"position":[[0,10]]}},"content":{"53":{"position":[[445,10]]}},"keywords":{}}],["bad",{"_index":1778,"title":{},"content":{"156":{"position":[[161,4]]},"656":{"position":[[161,4]]}},"keywords":{}}],["bas",{"_index":720,"title":{},"content":{"53":{"position":[[9526,4]]},"83":{"position":[[61,5]]},"93":{"position":[[720,5]]},"103":{"position":[[234,4]]},"107":{"position":[[1440,5]]},"112":{"position":[[295,4],[702,4],[771,4],[1669,4],[1939,4]]},"115":{"position":[[526,4]]},"117":{"position":[[455,4]]},"129":{"position":[[503,4]]},"130":{"position":[[284,5]]},"139":{"position":[[802,4]]},"151":{"position":[[49,5]]},"158":{"position":[[1082,5]]},"161":{"position":[[917,5]]},"207":{"position":[[128,5]]},"239":{"position":[[241,5]]},"302":{"position":[[29,5],[298,5]]},"502":{"position":[[1346,4]]},"522":{"position":[[637,4]]},"590":{"position":[[61,5]]},"596":{"position":[[295,4],[702,4],[771,4],[1669,4],[1939,4]]},"599":{"position":[[526,4]]},"601":{"position":[[455,4]]},"607":{"position":[[720,5]]},"617":{"position":[[234,4]]},"621":{"position":[[1443,5]]},"636":{"position":[[503,4]]},"637":{"position":[[284,5]]},"639":{"position":[[802,4]]},"651":{"position":[[49,5]]},"658":{"position":[[1082,5]]},"668":{"position":[[917,5]]},"702":{"position":[[128,5]]},"743":{"position":[[225,5]]},"770":{"position":[[29,5],[298,5]]},"777":{"position":[[47,4],[91,4],[353,4]]},"779":{"position":[[242,4],[294,4]]},"788":{"position":[[100,5]]},"791":{"position":[[15965,5],[16041,5],[16101,5]]},"950":{"position":[[49,4],[93,4],[334,4]]},"952":{"position":[[160,4],[238,4],[290,4]]},"954":{"position":[[51,4],[97,4],[340,4]]},"957":{"position":[[164,4],[218,4]]},"969":{"position":[[52,4],[101,4],[340,4]]},"972":{"position":[[127,4],[184,4],[228,4]]}},"keywords":{}}],["base/ubuntu",{"_index":3330,"title":{},"content":{"778":{"position":[[86,12]]}},"keywords":{}}],["base:0.0.1",{"_index":3337,"title":{},"content":{"779":{"position":[[227,10],[477,10]]},"789":{"position":[[104,10]]},"791":{"position":[[1066,10]]},"952":{"position":[[145,10],[223,10]]},"957":{"position":[[149,10]]},"958":{"position":[[100,10]]},"972":{"position":[[112,10],[213,10]]}},"keywords":{}}],["bash",{"_index":2917,"title":{},"content":{"436":{"position":[[192,4]]},"484":{"position":[[412,4]]},"489":{"position":[[81,4]]},"791":{"position":[[1360,4]]},"920":{"position":[[192,4]]},"947":{"position":[[412,4]]}},"keywords":{}}],["basic",{"_index":1660,"title":{},"content":{"139":{"position":[[1575,5]]},"158":{"position":[[935,10]]},"639":{"position":[[1582,5]]},"658":{"position":[[935,10]]},"961":{"position":[[513,9]]},"964":{"position":[[662,9],[1081,9]]}},"keywords":{}}],["batch",{"_index":1663,"title":{},"content":{"139":{"position":[[2014,5]]},"157":{"position":[[1248,5],[1280,5]]},"197":{"position":[[572,6]]},"479":{"position":[[987,5],[1009,5]]},"639":{"position":[[2027,5]]},"657":{"position":[[1248,5],[1280,5]]},"692":{"position":[[572,6]]},"911":{"position":[[6,5]]},"942":{"position":[[987,5],[1009,5]]},"981":{"position":[[669,5],[691,5]]}},"keywords":{}}],["batch_siz",{"_index":207,"title":{},"content":{"15":{"position":[[338,13],[408,10]]},"18":{"position":[[335,13],[405,10]]},"102":{"position":[[1734,12]]},"117":{"position":[[1048,10]]},"147":{"position":[[1467,13]]},"157":{"position":[[666,12]]},"343":{"position":[[1524,10]]},"410":{"position":[[306,13],[376,10],[1535,10]]},"412":{"position":[[537,10]]},"415":{"position":[[311,13],[381,10],[1565,10]]},"418":{"position":[[561,10]]},"544":{"position":[[338,13],[408,10]]},"547":{"position":[[335,13],[405,10]]},"601":{"position":[[1048,10]]},"616":{"position":[[1746,12]]},"647":{"position":[[1467,13]]},"657":{"position":[[666,12]]},"817":{"position":[[1542,10]]},"863":{"position":[[306,13],[376,10],[1535,10]]},"865":{"position":[[537,10]]},"868":{"position":[[311,13],[381,10],[1565,10]]},"871":{"position":[[561,10]]}},"keywords":{}}],["batch_size\":\"150",{"_index":239,"title":{},"content":{"20":{"position":[[169,19]]},"421":{"position":[[118,19]]},"549":{"position":[[169,19]]},"874":{"position":[[118,19]]}},"keywords":{}}],["batch_size=150",{"_index":246,"title":{},"content":{"22":{"position":[[279,16],[1037,16]]},"23":{"position":[[279,16],[1184,16]]},"24":{"position":[[546,16]]},"25":{"position":[[579,16]]},"26":{"position":[[287,16],[890,16]]},"27":{"position":[[582,16]]},"178":{"position":[[358,15]]},"366":{"position":[[245,16]]},"369":{"position":[[245,16]]},"377":{"position":[[246,16]]},"424":{"position":[[464,16]]},"425":{"position":[[471,16]]},"551":{"position":[[279,16],[1037,16]]},"552":{"position":[[279,16],[1184,16]]},"553":{"position":[[546,16]]},"554":{"position":[[579,16]]},"555":{"position":[[287,16],[890,16]]},"556":{"position":[[582,16]]},"685":{"position":[[358,15]]},"840":{"position":[[245,16]]},"843":{"position":[[245,16]]},"851":{"position":[[246,16]]},"898":{"position":[[464,16]]},"899":{"position":[[471,16]]}},"keywords":{}}],["batch_size=20",{"_index":2837,"title":{},"content":{"405":{"position":[[227,15]]},"894":{"position":[[227,15]]}},"keywords":{}}],["batch_size={{batch_s",{"_index":218,"title":{},"content":{"15":{"position":[[691,27]]},"18":{"position":[[688,27]]},"410":{"position":[[659,27]]},"415":{"position":[[664,27]]},"544":{"position":[[691,27]]},"547":{"position":[[688,27]]},"863":{"position":[[659,27]]},"868":{"position":[[664,27]]}},"keywords":{}}],["batch_size\\u003d150",{"_index":2758,"title":{},"content":{"366":{"position":[[1083,21]]},"369":{"position":[[1203,21]]},"371":{"position":[[676,21],[1684,21]]},"374":{"position":[[620,21]]},"377":{"position":[[1114,21]]},"380":{"position":[[595,21]]},"421":{"position":[[774,21]]},"840":{"position":[[1083,21]]},"843":{"position":[[1203,21]]},"845":{"position":[[676,21],[1684,21]]},"848":{"position":[[620,21]]},"851":{"position":[[1114,21]]},"854":{"position":[[595,21]]},"874":{"position":[[774,21]]}},"keywords":{}}],["batch_size\\u003d{{batch_s",{"_index":2867,"title":{},"content":{"410":{"position":[[2462,32]]},"412":{"position":[[1464,32]]},"415":{"position":[[2492,32]]},"418":{"position":[[1488,32]]},"863":{"position":[[2462,32]]},"865":{"position":[[1464,32]]},"868":{"position":[[2492,32]]},"871":{"position":[[1488,32]]}},"keywords":{}}],["batch_size_per_replica",{"_index":2673,"title":{},"content":{"343":{"position":[[1497,22],[1537,22]]},"817":{"position":[[1515,22],[1555,22]]}},"keywords":{}}],["bbb",{"_index":2339,"title":{},"content":{"281":{"position":[[290,3]]},"286":{"position":[[402,3]]}},"keywords":{}}],["bc66",{"_index":392,"title":{},"content":{"38":{"position":[[570,4]]},"39":{"position":[[312,4]]},"40":{"position":[[305,4]]},"41":{"position":[[322,4]]},"560":{"position":[[570,4]]},"561":{"position":[[312,4]]},"562":{"position":[[305,4]]},"563":{"position":[[322,4]]}},"keywords":{}}],["bdist_wheel",{"_index":2973,"title":{},"content":{"441":{"position":[[341,11]]},"925":{"position":[[341,11]]}},"keywords":{}}],["be",{"_index":1371,"title":{},"content":{"103":{"position":[[94,5]]},"112":{"position":[[94,5]]},"213":{"position":[[231,5]]},"265":{"position":[[808,5]]},"596":{"position":[[94,5]]},"617":{"position":[[94,5]]},"708":{"position":[[231,5]]}},"keywords":{}}],["becam",{"_index":593,"title":{},"content":{"53":{"position":[[3797,6]]}},"keywords":{}}],["becom",{"_index":520,"title":{"54":{"position":[[7,6]]},"79":{"position":[[22,8]]},"83":{"position":[[9,6]]},"590":{"position":[[9,6]]}},"content":{"53":{"position":[[1624,6],[3002,6]]},"54":{"position":[[374,6],[716,8],[2383,6]]},"77":{"position":[[125,6]]},"79":{"position":[[2196,7]]},"82":{"position":[[304,6]]},"83":{"position":[[299,8],[474,6]]},"90":{"position":[[260,7],[1415,7]]},"586":{"position":[[125,6]]},"589":{"position":[[304,6]]},"590":{"position":[[299,8]]},"604":{"position":[[260,7],[1415,7]]}},"keywords":{}}],["befor",{"_index":583,"title":{},"content":{"53":{"position":[[3457,6]]},"66":{"position":[[111,6]]},"74":{"position":[[701,6]]},"92":{"position":[[845,6]]},"117":{"position":[[1335,6]]},"118":{"position":[[0,6]]},"134":{"position":[[1025,6]]},"140":{"position":[[740,6]]},"146":{"position":[[0,6]]},"238":{"position":[[0,6]]},"245":{"position":[[49,6]]},"263":{"position":[[860,7],[1551,7]]},"268":{"position":[[0,6]]},"305":{"position":[[183,6]]},"437":{"position":[[351,6]]},"438":{"position":[[282,6]]},"439":{"position":[[1194,6]]},"575":{"position":[[111,6]]},"583":{"position":[[701,6]]},"601":{"position":[[1335,6]]},"606":{"position":[[845,6]]},"625":{"position":[[0,6]]},"640":{"position":[[740,6]]},"646":{"position":[[0,6]]},"662":{"position":[[1025,6]]},"742":{"position":[[0,6]]},"744":{"position":[[388,6]]},"748":{"position":[[49,6]]},"756":{"position":[[183,6]]},"921":{"position":[[351,6]]},"922":{"position":[[282,6]]},"954":{"position":[[1130,6]]}},"keywords":{}}],["begin",{"_index":1754,"title":{},"content":{"152":{"position":[[1057,10]]},"250":{"position":[[0,5]]},"652":{"position":[[1337,10]]}},"keywords":{}}],["behalf",{"_index":603,"title":{},"content":{"53":{"position":[[4233,6],[6380,6]]}},"keywords":{}}],["believ",{"_index":930,"title":{},"content":{"74":{"position":[[237,7]]},"583":{"position":[[237,7]]}},"keywords":{}}],["belong",{"_index":411,"title":{"39":{"position":[[30,6]]},"390":{"position":[[30,6]]},"561":{"position":[[30,6]]},"879":{"position":[[30,6]]}},"content":{"89":{"position":[[107,7]]},"107":{"position":[[56,6],[499,6]]},"121":{"position":[[693,7]]},"603":{"position":[[107,7]]},"621":{"position":[[56,6],[500,6]]},"628":{"position":[[693,7]]}},"keywords":{}}],["below",{"_index":49,"title":{"196":{"position":[[0,5]]},"691":{"position":[[0,5]]}},"content":{"4":{"position":[[38,5],[502,5]]},"106":{"position":[[46,6]]},"114":{"position":[[623,6]]},"118":{"position":[[683,5]]},"133":{"position":[[613,5]]},"139":{"position":[[202,6],[1430,6]]},"145":{"position":[[139,5]]},"146":{"position":[[166,6]]},"160":{"position":[[921,6]]},"179":{"position":[[88,6]]},"180":{"position":[[92,6]]},"181":{"position":[[384,6]]},"279":{"position":[[374,6]]},"314":{"position":[[177,5]]},"327":{"position":[[324,6],[857,5]]},"328":{"position":[[134,6]]},"400":{"position":[[155,5]]},"438":{"position":[[84,6]]},"464":{"position":[[38,5],[502,5]]},"598":{"position":[[623,6]]},"620":{"position":[[46,6]]},"625":{"position":[[684,5]]},"639":{"position":[[202,6],[1437,6]]},"645":{"position":[[139,5]]},"646":{"position":[[166,6]]},"661":{"position":[[613,5]]},"667":{"position":[[921,6]]},"686":{"position":[[88,6]]},"687":{"position":[[113,6]]},"688":{"position":[[384,6]]},"786":{"position":[[177,5]]},"788":{"position":[[83,5]]},"808":{"position":[[324,6]]},"809":{"position":[[134,6]]},"889":{"position":[[155,5]]},"922":{"position":[[84,6]]},"923":{"position":[[118,5]]},"960":{"position":[[162,5]]},"976":{"position":[[30,6]]},"979":{"position":[[572,5]]}},"keywords":{}}],["benchmark",{"_index":3344,"title":{},"content":{"788":{"position":[[20,9]]}},"keywords":{}}],["benefici",{"_index":790,"title":{},"content":{"54":{"position":[[2011,10]]}},"keywords":{}}],["bert",{"_index":1321,"title":{},"content":{"102":{"position":[[797,5]]},"616":{"position":[[802,5]]}},"keywords":{}}],["best",{"_index":765,"title":{},"content":{"54":{"position":[[1238,4]]},"74":{"position":[[634,4]]},"114":{"position":[[416,4]]},"263":{"position":[[753,4],[1440,4]]},"583":{"position":[[634,4]]},"598":{"position":[[416,4]]}},"keywords":{}}],["beta",{"_index":3782,"title":{"914":{"position":[[0,6]]},"915":{"position":[[0,6]]},"916":{"position":[[0,6]]},"917":{"position":[[0,6]]}},"content":{},"keywords":{}}],["beta8/aio/deploy/recommended.yaml",{"_index":2473,"title":{},"content":{"318":{"position":[[131,33]]},"795":{"position":[[131,33]]}},"keywords":{}}],["bett",{"_index":950,"title":{},"content":{"75":{"position":[[196,6]]},"96":{"position":[[431,6]]},"129":{"position":[[249,6]]},"145":{"position":[[3,6]]},"146":{"position":[[620,6]]},"184":{"position":[[451,6]]},"186":{"position":[[445,6]]},"260":{"position":[[78,6],[187,6],[1705,6],[1961,6]]},"330":{"position":[[40,6]]},"584":{"position":[[196,6]]},"610":{"position":[[431,6]]},"636":{"position":[[249,6]]},"645":{"position":[[3,6]]},"646":{"position":[[620,6]]},"712":{"position":[[451,6]]},"714":{"position":[[445,6]]},"800":{"position":[[40,6]]}},"keywords":{}}],["betwe",{"_index":1200,"title":{},"content":{"92":{"position":[[434,7],[904,7]]},"148":{"position":[[64,7]]},"187":{"position":[[243,7]]},"260":{"position":[[726,7]]},"291":{"position":[[76,7]]},"401":{"position":[[500,7]]},"431":{"position":[[124,7]]},"606":{"position":[[434,7],[904,7]]},"648":{"position":[[64,7]]},"715":{"position":[[243,7]]},"754":{"position":[[76,7]]},"890":{"position":[[500,7]]},"905":{"position":[[124,7]]}},"keywords":{}}],["big",{"_index":1151,"title":{},"content":{"90":{"position":[[2547,3]]},"197":{"position":[[483,3],[644,3]]},"604":{"position":[[2547,3]]},"692":{"position":[[483,3],[644,3]]}},"keywords":{}}],["bigg",{"_index":804,"title":{},"content":{"54":{"position":[[2800,6]]}},"keywords":{}}],["bill",{"_index":3920,"title":{},"content":{"963":{"position":[[264,8]]}},"keywords":{}}],["bin.tar.gz",{"_index":2126,"title":{},"content":{"252":{"position":[[2288,10],[2413,10]]},"253":{"position":[[393,10],[469,10]]},"270":{"position":[[431,10]]}},"keywords":{}}],["bin.tar.gz.asc",{"_index":2125,"title":{},"content":{"252":{"position":[[2230,14],[2355,14]]}},"keywords":{}}],["bin/csh",{"_index":3693,"title":{},"content":{"791":{"position":[[15435,8],[30984,8]]}},"keywords":{}}],["bin/mt",{"_index":3659,"title":{},"content":{"791":{"position":[[13440,7],[13463,7],[28989,7],[29012,7]]}},"keywords":{}}],["bin/submarin",{"_index":3157,"title":{},"content":{"490":{"position":[[13,15],[272,15]]}},"keywords":{}}],["bin/tcsh",{"_index":3692,"title":{},"content":{"791":{"position":[[15414,9],[30963,9]]}},"keywords":{}}],["bin_1.09",{"_index":3601,"title":{},"content":{"791":{"position":[[7979,8],[23697,8]]}},"keywords":{}}],["binari",{"_index":2001,"title":{"221":{"position":[[23,6]]},"255":{"position":[[14,6],[37,6]]},"270":{"position":[[13,6]]},"734":{"position":[[23,6]]},"735":{"position":[[23,6]]}},"content":{"251":{"position":[[75,6],[273,6]]},"252":{"position":[[2079,6],[2147,6]]},"253":{"position":[[250,6],[312,6]]},"257":{"position":[[97,6],[169,6]]},"270":{"position":[[509,6]]},"316":{"position":[[428,6],[473,6]]},"324":{"position":[[74,6],[621,6],[892,6],[1136,6],[1354,6]]},"734":{"position":[[92,6],[182,6],[283,6],[386,6],[487,6]]},"774":{"position":[[74,6],[345,6],[589,6],[807,6]]},"793":{"position":[[428,6],[473,6]]}},"keywords":{}}],["bind",{"_index":534,"title":{},"content":{"53":{"position":[[1891,7],[2661,7],[7184,8],[7197,7],[7243,7],[7386,8],[7740,7],[7764,7],[7905,7],[7931,7],[8088,7],[8295,7],[8762,7]]},"102":{"position":[[478,4]]},"264":{"position":[[135,4]]},"281":{"position":[[1390,8],[1430,8]]},"616":{"position":[[478,4]]}},"keywords":{}}],["bit",{"_index":1274,"title":{"98":{"position":[[9,3]]},"612":{"position":[[9,3]]}},"content":{"260":{"position":[[748,4],[841,4]]}},"keywords":{}}],["black",{"_index":2922,"title":{},"content":{"437":{"position":[[41,5]]},"921":{"position":[[41,5]]}},"keywords":{}}],["blacklist",{"_index":3459,"title":{},"content":{"791":{"position":[[2828,9],[18670,9]]}},"keywords":{}}],["blank",{"_index":3241,"title":{},"content":{"502":{"position":[[3285,5]]},"522":{"position":[[1474,26]]}},"keywords":{}}],["blank:creat",{"_index":3240,"title":{},"content":{"502":{"position":[[3270,12]]}},"keywords":{}}],["blas=1.0=mkl",{"_index":1693,"title":{},"content":{"146":{"position":[[276,12]]},"646":{"position":[[276,12]]}},"keywords":{}}],["blob",{"_index":1599,"title":{},"content":{"133":{"position":[[130,4],[240,4],[362,4],[539,4]]},"661":{"position":[[130,4],[240,4],[362,4],[539,4]]}},"keywords":{}}],["block",{"_index":1102,"title":{},"content":{"90":{"position":[[704,6],[1996,7],[2642,6]]},"155":{"position":[[320,6]]},"455":{"position":[[86,8],[102,8]]},"604":{"position":[[704,6],[1996,7],[2642,6]]},"655":{"position":[[327,6]]}},"keywords":{}}],["blog",{"_index":787,"title":{},"content":{"54":{"position":[[1913,5]]},"133":{"position":[[676,4]]},"661":{"position":[[676,4]]}},"keywords":{}}],["board",{"_index":588,"title":{},"content":{"53":{"position":[[3736,5],[3865,5],[4844,6],[4988,5],[5093,5],[5458,6],[10224,5],[10460,5]]}},"keywords":{}}],["bodi",{"_index":2705,"title":{},"content":{"350":{"position":[[31,5]]},"358":{"position":[[51,4],[93,4],[139,4],[181,4]]},"365":{"position":[[30,5]]},"368":{"position":[[30,5]]},"376":{"position":[[80,4],[151,4],[233,4],[266,4]]},"388":{"position":[[24,5]]},"409":{"position":[[42,4],[105,4],[142,4],[232,4],[306,4]]},"414":{"position":[[51,4],[114,4],[151,4],[241,4],[315,4]]},"420":{"position":[[94,4],[152,4]]},"824":{"position":[[31,5]]},"832":{"position":[[51,4],[93,4],[139,4],[181,4]]},"839":{"position":[[30,5]]},"842":{"position":[[30,5]]},"850":{"position":[[80,4],[151,4],[233,4],[266,4]]},"862":{"position":[[42,4],[105,4],[142,4],[232,4],[306,4]]},"867":{"position":[[51,4],[114,4],[151,4],[241,4],[315,4]]},"873":{"position":[[94,4],[152,4]]},"877":{"position":[[24,5]]}},"keywords":{}}],["boolean",{"_index":2841,"title":{},"content":{"409":{"position":[[437,7]]},"862":{"position":[[437,7]]}},"keywords":{}}],["boost",{"_index":1264,"title":{},"content":{"96":{"position":[[377,5]]},"610":{"position":[[377,5]]}},"keywords":{}}],["bootstrap",{"_index":3055,"title":{},"content":{"481":{"position":[[106,9]]},"944":{"position":[[106,9]]}},"keywords":{}}],["bootstrap.java",{"_index":2939,"title":{},"content":{"439":{"position":[[171,15]]}},"keywords":{}}],["bootstrap.javaexperimentrestapi.java",{"_index":3791,"title":{},"content":{"923":{"position":[[213,36]]}},"keywords":{}}],["bootstrap.sh",{"_index":1515,"title":{},"content":{"117":{"position":[[715,14],[1217,12]]},"601":{"position":[[715,14],[1217,12]]}},"keywords":{}}],["both",{"_index":775,"title":{},"content":{"54":{"position":[[1624,5]]},"117":{"position":[[233,4]]},"132":{"position":[[1616,4]]},"152":{"position":[[571,5]]},"201":{"position":[[460,4]]},"335":{"position":[[217,4]]},"472":{"position":[[56,4]]},"601":{"position":[[233,4]]},"652":{"position":[[577,5]]},"660":{"position":[[1616,4]]},"696":{"position":[[460,4]]},"805":{"position":[[217,4]]},"932":{"position":[[56,4]]}},"keywords":{}}],["bottom",{"_index":939,"title":{},"content":{"74":{"position":[[519,7]]},"583":{"position":[[519,7]]}},"keywords":{}}],["box",{"_index":1656,"title":{},"content":{"139":{"position":[[1229,4],[1424,5]]},"260":{"position":[[2010,3]]},"502":{"position":[[1759,4]]},"639":{"position":[[1235,4],[1431,5]]}},"keywords":{}}],["br",{"_index":2350,"title":{},"content":{"281":{"position":[[1140,3]]},"286":{"position":[[617,3]]}},"keywords":{}}],["branch",{"_index":554,"title":{"62":{"position":[[22,6]]},"64":{"position":[[26,6]]},"65":{"position":[[23,6]]},"267":{"position":[[14,6]]},"283":{"position":[[58,6],[79,6]]},"571":{"position":[[22,6]]},"573":{"position":[[26,6]]},"574":{"position":[[23,6]]}},"content":{"53":{"position":[[2422,6],[2487,6],[2558,6],[3380,6],[9108,7],[9652,6],[9676,6],[9955,6],[10036,6]]},"62":{"position":[[130,6]]},"63":{"position":[[54,7]]},"64":{"position":[[30,6],[141,7]]},"70":{"position":[[45,7]]},"263":{"position":[[57,6],[147,6],[254,6],[1104,6]]},"267":{"position":[[13,6],[34,6],[54,7]]},"276":{"position":[[62,6]]},"333":{"position":[[202,6]]},"571":{"position":[[130,6]]},"572":{"position":[[54,7]]},"573":{"position":[[30,6],[141,7]]},"579":{"position":[[45,7]]},"803":{"position":[[202,6]]}},"keywords":{}}],["break",{"_index":1749,"title":{},"content":{"152":{"position":[[518,5]]},"652":{"position":[[524,5]]}},"keywords":{}}],["brew",{"_index":2164,"title":{},"content":{"259":{"position":[[112,4]]}},"keywords":{}}],["bring",{"_index":1458,"title":{},"content":{"112":{"position":[[922,5]]},"596":{"position":[[922,5]]}},"keywords":{}}],["broadcast",{"_index":1914,"title":{"215":{"position":[[0,9]]},"710":{"position":[[0,9]]}},"content":{"201":{"position":[[465,9]]},"696":{"position":[[465,9]]}},"keywords":{}}],["brok",{"_index":2315,"title":{},"content":{"277":{"position":[[76,7]]}},"keywords":{}}],["brought",{"_index":1115,"title":{},"content":{"90":{"position":[[1039,7]]},"604":{"position":[[1039,7]]}},"keywords":{}}],["brows",{"_index":131,"title":{"6":{"position":[[22,8]]},"466":{"position":[[22,8]]}},"content":{"239":{"position":[[135,8],[399,7]]},"246":{"position":[[61,7]]},"302":{"position":[[415,8]]},"314":{"position":[[1012,8]]},"496":{"position":[[340,7]]},"743":{"position":[[119,8],[383,7]]},"749":{"position":[[61,7]]},"770":{"position":[[415,8]]},"786":{"position":[[1012,8]]}},"keywords":{}}],["bsd",{"_index":3400,"title":{},"content":{"791":{"position":[[2044,3],[2884,3],[5409,3],[10597,3],[10628,7],[10688,3],[15072,3],[17886,3],[18726,3],[21233,3],[26315,3],[26346,7],[26406,3],[30621,3]]}},"keywords":{}}],["bu",{"_index":4054,"title":{},"content":{"965":{"position":[[7662,3],[7841,3],[8020,3],[8199,3],[8378,3],[8557,3],[8736,3],[8915,3]]}},"keywords":{}}],["bucket",{"_index":3921,"title":{},"content":{"963":{"position":[[338,6],[436,6]]}},"keywords":{}}],["budget",{"_index":1429,"title":{},"content":{"107":{"position":[[1446,8]]},"621":{"position":[[1449,8]]}},"keywords":{}}],["buffer_s",{"_index":2643,"title":{},"content":{"343":{"position":[[465,11]]},"817":{"position":[[483,11]]}},"keywords":{}}],["bug",{"_index":505,"title":{},"content":{"53":{"position":[[1258,3]]},"54":{"position":[[1098,5]]},"134":{"position":[[335,4]]},"662":{"position":[[335,4]]}},"keywords":{}}],["build",{"_index":584,"title":{"57":{"position":[[0,5]]},"216":{"position":[[7,5]]},"219":{"position":[[0,5]]},"221":{"position":[[0,8]]},"238":{"position":[[0,5]]},"245":{"position":[[0,5]]},"566":{"position":[[0,5]]},"730":{"position":[[7,5]]},"733":{"position":[[0,5]]},"734":{"position":[[0,8]]},"735":{"position":[[0,8]]},"742":{"position":[[0,5]]},"748":{"position":[[0,5]]},"778":{"position":[[16,5]]},"779":{"position":[[0,5]]},"934":{"position":[[0,8]]},"936":{"position":[[0,5]]},"951":{"position":[[16,5]]},"952":{"position":[[9,5]]},"955":{"position":[[16,5]]},"956":{"position":[[0,5]]},"957":{"position":[[9,5]]},"970":{"position":[[16,5]]},"971":{"position":[[0,5]]},"972":{"position":[[9,5]]},"976":{"position":[[0,5]]},"979":{"position":[[0,8]]},"984":{"position":[[0,8]]},"989":{"position":[[0,8]]}},"content":{"53":{"position":[[3502,8]]},"54":{"position":[[17,6]]},"57":{"position":[[0,5]]},"90":{"position":[[435,5],[695,8],[1493,6],[1987,8],[2339,5],[2408,5],[2633,8]]},"92":{"position":[[479,8]]},"94":{"position":[[121,5]]},"96":{"position":[[84,5]]},"128":{"position":[[372,5]]},"155":{"position":[[311,8]]},"184":{"position":[[206,6]]},"212":{"position":[[109,5]]},"219":{"position":[[364,5],[446,5]]},"238":{"position":[[7,8],[231,5],[315,5],[389,5]]},"240":{"position":[[0,5],[61,5],[135,5]]},"245":{"position":[[31,5],[86,5]]},"265":{"position":[[848,5]]},"267":{"position":[[220,5]]},"281":{"position":[[943,5]]},"305":{"position":[[334,8]]},"306":{"position":[[106,5]]},"342":{"position":[[101,5]]},"344":{"position":[[0,5]]},"436":{"position":[[30,5]]},"438":{"position":[[58,8]]},"441":{"position":[[268,6]]},"566":{"position":[[0,5]]},"604":{"position":[[435,5],[695,8],[1493,6],[1987,8],[2339,5],[2408,5],[2633,8]]},"606":{"position":[[479,8]]},"608":{"position":[[121,5]]},"610":{"position":[[84,5]]},"635":{"position":[[372,5]]},"655":{"position":[[318,8]]},"707":{"position":[[109,5]]},"712":{"position":[[206,6]]},"733":{"position":[[364,5],[446,5]]},"742":{"position":[[7,8],[231,5],[315,5],[389,5]]},"744":{"position":[[0,5],[61,5],[135,5],[395,8]]},"748":{"position":[[31,5],[86,5]]},"756":{"position":[[334,8]]},"757":{"position":[[106,5]]},"777":{"position":[[1575,5],[1630,5]]},"778":{"position":[[42,5]]},"779":{"position":[[9,5],[90,5],[141,5],[157,5],[186,5]]},"789":{"position":[[29,5]]},"791":{"position":[[1934,8],[17511,8],[17776,8],[32365,8]]},"816":{"position":[[101,5]]},"818":{"position":[[0,5]]},"920":{"position":[[30,5]]},"922":{"position":[[58,8]]},"925":{"position":[[268,6]]},"934":{"position":[[64,5]]},"936":{"position":[[43,8]]},"950":{"position":[[1600,5],[1655,5]]},"951":{"position":[[48,5],[312,5]]},"952":{"position":[[34,5],[50,5],[93,5]]},"954":{"position":[[527,5],[1998,5],[2053,5]]},"955":{"position":[[48,5]]},"957":{"position":[[36,5],[52,5],[95,5]]},"969":{"position":[[508,5],[1635,5],[1690,5]]},"970":{"position":[[42,5]]},"972":{"position":[[29,5],[45,5],[74,5]]},"976":{"position":[[49,5],[124,5]]},"978":{"position":[[10,5]]},"983":{"position":[[10,5]]},"988":{"position":[[10,5]]},"991":{"position":[[46,8]]}},"keywords":{}}],["build.sh",{"_index":2631,"title":{},"content":{"342":{"position":[[75,8]]},"816":{"position":[[75,8]]}},"keywords":{}}],["build/push/manag",{"_index":1480,"title":{},"content":{"114":{"position":[[337,17]]},"598":{"position":[[337,17]]}},"keywords":{}}],["build_and_compile_cnn_model",{"_index":2654,"title":{},"content":{"343":{"position":[[768,30],[1931,29]]},"817":{"position":[[786,30],[1949,29]]}},"keywords":{}}],["building/compil",{"_index":2682,"title":{},"content":{"343":{"position":[[1853,18]]},"817":{"position":[[1871,18]]}},"keywords":{}}],["built",{"_index":1086,"title":{},"content":{"90":{"position":[[340,5],[2022,5],[2180,5]]},"92":{"position":[[591,5]]},"93":{"position":[[294,5],[802,5]]},"98":{"position":[[24,5]]},"184":{"position":[[13,5]]},"212":{"position":[[175,5]]},"219":{"position":[[227,5]]},"242":{"position":[[21,5]]},"365":{"position":[[684,5],[788,5]]},"502":{"position":[[3074,5]]},"604":{"position":[[340,5],[2022,5],[2180,5]]},"606":{"position":[[591,5]]},"607":{"position":[[294,5],[802,5]]},"612":{"position":[[24,5]]},"707":{"position":[[175,5]]},"712":{"position":[[13,5]]},"733":{"position":[[227,5]]},"745":{"position":[[21,5]]},"839":{"position":[[684,5],[788,5]]},"934":{"position":[[35,5],[264,5]]}},"keywords":{}}],["busi",{"_index":1079,"title":{"484":{"position":[[75,4]]},"947":{"position":[[75,4]]}},"content":{"90":{"position":[[120,8]]},"484":{"position":[[269,4],[341,5],[385,4],[1111,4],[1130,4]]},"604":{"position":[[120,8]]},"947":{"position":[[269,4],[341,5],[385,4],[1111,4],[1130,4]]}},"keywords":{}}],["button",{"_index":820,"title":{},"content":{"59":{"position":[[56,6]]},"67":{"position":[[92,6]]},"279":{"position":[[234,6]]},"284":{"position":[[283,6]]},"406":{"position":[[69,7]]},"502":{"position":[[1147,6]]},"568":{"position":[[56,6]]},"576":{"position":[[92,6]]},"895":{"position":[[69,7]]}},"keywords":{}}],["button.download:th",{"_index":3231,"title":{},"content":{"502":{"position":[[859,19]]}},"keywords":{}}],["button.setting:edit",{"_index":3232,"title":{},"content":{"502":{"position":[[947,19]]}},"keywords":{}}],["bylaw",{"_index":456,"title":{"53":{"position":[[0,6]]}},"content":{"53":{"position":[[26,6],[4374,6],[10569,6]]}},"keywords":{}}],["byt",{"_index":2196,"title":{},"content":{"260":{"position":[[1523,6],[1779,6]]}},"keywords":{}}],["bzip2",{"_index":3302,"title":{},"content":{"777":{"position":[[608,5]]}},"keywords":{}}],["c",{"_index":2090,"title":{},"content":{"252":{"position":[[295,3]]},"253":{"position":[[534,1]]},"260":{"position":[[361,3]]},"954":{"position":[[998,1]]}},"keywords":{}}],["c)omment",{"_index":2191,"title":{},"content":{"260":{"position":[[1434,10]]}},"keywords":{}}],["c60a2a8a4235",{"_index":2785,"title":{},"content":{"371":{"position":[[251,14]]},"421":{"position":[[431,14]]},"845":{"position":[[251,14]]},"874":{"position":[[431,14]]}},"keywords":{}}],["c610c277546d",{"_index":393,"title":{},"content":{"38":{"position":[[575,14]]},"39":{"position":[[317,14]]},"40":{"position":[[310,14]]},"41":{"position":[[327,14]]},"560":{"position":[[575,14]]},"561":{"position":[[317,14]]},"562":{"position":[[310,14]]},"563":{"position":[[327,14]]}},"keywords":{}}],["ca",{"_index":1694,"title":{},"content":{"146":{"position":[[291,2]]},"646":{"position":[[291,2]]},"777":{"position":[[701,2]]},"954":{"position":[[572,2]]}},"keywords":{}}],["cach",{"_index":4229,"title":{},"content":{"969":{"position":[[937,5],[1092,5]]}},"keywords":{}}],["calcul",{"_index":2137,"title":{},"content":{"253":{"position":[[6,11]]},"271":{"position":[[77,9],[178,9]]}},"keywords":{}}],["calico",{"_index":2409,"title":{},"content":{"303":{"position":[[556,6]]},"771":{"position":[[556,6]]}},"keywords":{}}],["call",{"_index":1042,"title":{},"content":{"83":{"position":[[197,6]]},"89":{"position":[[224,6]]},"91":{"position":[[641,7]]},"101":{"position":[[538,6]]},"104":{"position":[[410,4]]},"112":{"position":[[474,4]]},"117":{"position":[[289,4]]},"139":{"position":[[1486,6]]},"161":{"position":[[683,6]]},"162":{"position":[[930,5]]},"436":{"position":[[299,5]]},"590":{"position":[[197,6]]},"596":{"position":[[474,4]]},"601":{"position":[[289,4]]},"603":{"position":[[224,6]]},"605":{"position":[[641,7]]},"615":{"position":[[538,6]]},"618":{"position":[[411,4]]},"639":{"position":[[1493,6]]},"668":{"position":[[683,6]]},"669":{"position":[[1183,5]]},"920":{"position":[[299,5]]}},"keywords":{}}],["callabl",{"_index":1801,"title":{},"content":{"158":{"position":[[2478,8]]},"658":{"position":[[2478,8]]}},"keywords":{}}],["callback",{"_index":1267,"title":{},"content":{"96":{"position":[[476,8]]},"610":{"position":[[476,8]]}},"keywords":{}}],["callbacks=[mycallback",{"_index":2695,"title":{},"content":{"343":{"position":[[2241,25]]},"817":{"position":[[2294,25]]}},"keywords":{}}],["can't",{"_index":3099,"title":{"484":{"position":[[15,5]]},"947":{"position":[[15,5]]}},"content":{"485":{"position":[[128,5]]},"948":{"position":[[128,5]]}},"keywords":{}}],["cancel",{"_index":934,"title":{},"content":{"74":{"position":[[339,9]]},"260":{"position":[[2222,8]]},"583":{"position":[[339,9]]}},"keywords":{}}],["candid",{"_index":571,"title":{"248":{"position":[[28,9]]},"249":{"position":[[16,9]]}},"content":{"53":{"position":[[3271,9],[3428,10],[3555,10]]},"54":{"position":[[660,10],[2616,9]]},"79":{"position":[[133,10],[1316,10],[1362,9],[1527,10],[1601,9],[1642,9],[1730,9],[2175,9]]},"173":{"position":[[118,10]]},"268":{"position":[[302,9],[312,11]]},"281":{"position":[[179,9]]},"680":{"position":[[118,10]]}},"keywords":{}}],["candidate’",{"_index":982,"title":{},"content":{"79":{"position":[[283,11]]}},"keywords":{}}],["capabl",{"_index":1566,"title":{},"content":{"130":{"position":[[142,10]]},"200":{"position":[[398,13]]},"201":{"position":[[497,13]]},"202":{"position":[[36,12]]},"203":{"position":[[160,12]]},"205":{"position":[[123,13]]},"302":{"position":[[185,12]]},"637":{"position":[[142,10]]},"695":{"position":[[398,13]]},"696":{"position":[[497,13]]},"697":{"position":[[36,12]]},"698":{"position":[[160,12]]},"700":{"position":[[123,13]]},"770":{"position":[[185,12]]}},"keywords":{}}],["car",{"_index":3919,"title":{},"content":{"963":{"position":[[123,4]]}},"keywords":{}}],["card",{"_index":2178,"title":{},"content":{"260":{"position":[[672,4]]},"502":{"position":[[86,6],[107,4]]}},"keywords":{}}],["card.project",{"_index":3221,"title":{},"content":{"502":{"position":[[380,12]]}},"keywords":{}}],["carefulli",{"_index":2383,"title":{},"content":{"291":{"position":[[35,10]]},"754":{"position":[[35,10]]}},"keywords":{}}],["carefully.th",{"_index":811,"title":{},"content":{"56":{"position":[[149,13]]},"565":{"position":[[149,13]]}},"keywords":{}}],["carri",{"_index":645,"title":{},"content":{"53":{"position":[[6195,7]]},"284":{"position":[[328,7]]}},"keywords":{}}],["cas",{"_index":712,"title":{"291":{"position":[[28,4]]},"754":{"position":[[28,4]]}},"content":{"53":{"position":[[9125,4]]},"151":{"position":[[381,6],[432,6]]},"288":{"position":[[9,5],[131,5]]},"289":{"position":[[832,5],[919,5],[1072,5]]},"305":{"position":[[9,5]]},"651":{"position":[[381,6],[432,6]]},"751":{"position":[[9,5],[131,5]]},"752":{"position":[[832,5],[919,5],[1072,5]]},"756":{"position":[[9,5]]},"791":{"position":[[1697,6]]}},"keywords":{}}],["cast",{"_index":533,"title":{},"content":{"53":{"position":[[1886,4],[2656,4],[8135,5],[8461,7]]}},"keywords":{}}],["cat",{"_index":3716,"title":{},"content":{"791":{"position":[[17637,3],[32491,3]]}},"keywords":{}}],["caus",{"_index":103,"title":{},"content":{"4":{"position":[[881,6]]},"199":{"position":[[315,5]]},"291":{"position":[[183,5]]},"464":{"position":[[881,6]]},"694":{"position":[[315,5]]},"754":{"position":[[183,5]]},"992":{"position":[[220,6]]}},"keywords":{}}],["cc58f93b1e259b0c",{"_index":4105,"title":{},"content":{"965":{"position":[[14413,16]]}},"keywords":{}}],["ccc",{"_index":2340,"title":{},"content":{"281":{"position":[[297,3]]},"286":{"position":[[409,3]]}},"keywords":{}}],["cd",{"_index":29,"title":{},"content":{"3":{"position":[[54,2]]},"60":{"position":[[156,2]]},"62":{"position":[[0,2]]},"239":{"position":[[169,2]]},"263":{"position":[[561,2],[1240,2]]},"270":{"position":[[54,2],[234,2]]},"274":{"position":[[0,2],[178,2]]},"278":{"position":[[0,2]]},"289":{"position":[[1238,2]]},"310":{"position":[[50,2]]},"333":{"position":[[262,2]]},"339":{"position":[[135,2]]},"438":{"position":[[127,2]]},"441":{"position":[[144,2]]},"463":{"position":[[54,2]]},"490":{"position":[[0,2],[259,2]]},"569":{"position":[[156,2]]},"571":{"position":[[0,2]]},"743":{"position":[[153,2]]},"744":{"position":[[666,2]]},"752":{"position":[[1238,2]]},"777":{"position":[[898,2],[917,2],[993,2]]},"782":{"position":[[50,2]]},"788":{"position":[[227,2]]},"791":{"position":[[1349,2],[1467,2]]},"803":{"position":[[262,2]]},"813":{"position":[[113,2]]},"922":{"position":[[127,2]]},"925":{"position":[[144,2]]},"934":{"position":[[74,2]]},"954":{"position":[[1541,2]]},"981":{"position":[[514,2]]},"986":{"position":[[418,3]]}},"keywords":{}}],["cdb",{"_index":3453,"title":{},"content":{"791":{"position":[[2730,3],[18572,3]]}},"keywords":{}}],["cent",{"_index":1879,"title":{"199":{"position":[[17,6]]},"694":{"position":[[17,6]]}},"content":{"184":{"position":[[490,7]]},"187":{"position":[[161,7]]},"199":{"position":[[158,7],[384,6]]},"200":{"position":[[69,7]]},"208":{"position":[[314,7]]},"694":{"position":[[158,7],[384,6]]},"695":{"position":[[69,7]]},"703":{"position":[[314,7]]},"712":{"position":[[490,7]]},"715":{"position":[[161,7]]}},"keywords":{}}],["cento",{"_index":2443,"title":{},"content":{"313":{"position":[[1007,6]]},"785":{"position":[[1007,6]]}},"keywords":{}}],["central",{"_index":2158,"title":{},"content":{"257":{"position":[[224,7]]}},"keywords":{}}],["cert",{"_index":3426,"title":{},"content":{"791":{"position":[[2408,4],[3300,4],[5218,4],[10314,5],[10386,4],[14072,4],[18250,4],[19124,4],[21042,4],[26032,5],[26104,4],[29621,4]]}},"keywords":{}}],["cert_1.0.37_all.deb",{"_index":3627,"title":{},"content":{"791":{"position":[[10348,19],[26066,19]]}},"keywords":{}}],["certif",{"_index":2210,"title":{},"content":{"260":{"position":[[2460,11]]},"777":{"position":[[704,12]]},"954":{"position":[[575,12]]}},"keywords":{}}],["certifi=2020.4.5.1=py37_0",{"_index":1696,"title":{},"content":{"146":{"position":[[320,25]]},"646":{"position":[[320,25]]}},"keywords":{}}],["certificates=2020.1.1=0",{"_index":1695,"title":{},"content":{"146":{"position":[[294,23]]},"646":{"position":[[294,23]]}},"keywords":{}}],["cffi=1.14.0=py37hb5b8e2f_0",{"_index":1697,"title":{},"content":{"146":{"position":[[348,26]]},"646":{"position":[[348,26]]}},"keywords":{}}],["cfg",{"_index":3390,"title":{},"content":{"791":{"position":[[1352,4]]}},"keywords":{}}],["cgroup",{"_index":3017,"title":{},"content":{"479":{"position":[[26,6]]},"481":{"position":[[280,6],[1824,6],[1970,6]]},"942":{"position":[[26,6]]},"944":{"position":[[280,6],[1824,6],[1970,6]]}},"keywords":{}}],["chackout",{"_index":2592,"title":{},"content":{"333":{"position":[[184,8]]},"803":{"position":[[184,8]]}},"keywords":{}}],["chain",{"_index":1800,"title":{},"content":{"158":{"position":[[2105,7]]},"658":{"position":[[2105,7]]}},"keywords":{}}],["chair",{"_index":610,"title":{},"content":{"53":{"position":[[4803,5],[4855,5],[5072,5],[5159,5],[5206,5],[5241,5],[5300,5],[10241,5],[10477,6]]}},"keywords":{}}],["challeng",{"_index":691,"title":{},"content":{"53":{"position":[[8246,11]]}},"keywords":{}}],["chanc",{"_index":2201,"title":{},"content":{"260":{"position":[[1712,6],[1968,6]]}},"keywords":{}}],["chang",{"_index":677,"title":{"92":{"position":[[111,7]]},"283":{"position":[[14,7]]},"606":{"position":[[111,7]]}},"content":{"53":{"position":[[7425,7],[8798,6],[8807,6],[9075,6],[10770,7]]},"54":{"position":[[1786,8]]},"73":{"position":[[237,8]]},"74":{"position":[[619,8]]},"82":{"position":[[438,6],[578,7]]},"92":{"position":[[638,7],[956,8]]},"134":{"position":[[243,6],[312,6]]},"219":{"position":[[175,8]]},"239":{"position":[[428,6]]},"246":{"position":[[82,7]]},"252":{"position":[[374,6]]},"260":{"position":[[440,6],[1419,6]]},"267":{"position":[[318,6]]},"332":{"position":[[59,6]]},"435":{"position":[[42,8]]},"439":{"position":[[152,6],[1318,6]]},"441":{"position":[[61,6]]},"582":{"position":[[237,8]]},"583":{"position":[[619,8]]},"589":{"position":[[438,6],[578,7]]},"606":{"position":[[638,7],[956,8]]},"662":{"position":[[243,6],[312,6]]},"733":{"position":[[175,8]]},"743":{"position":[[412,6]]},"749":{"position":[[82,7]]},"791":{"position":[[2,6],[14244,8],[14754,8],[29793,8],[30303,8]]},"802":{"position":[[59,6]]},"919":{"position":[[42,8]]},"923":{"position":[[111,6]]},"925":{"position":[[61,6]]},"964":{"position":[[1964,6]]},"966":{"position":[[79,7]]},"981":{"position":[[1434,7]]}},"keywords":{}}],["changes.md",{"_index":2278,"title":{},"content":{"267":{"position":[[96,10]]}},"keywords":{}}],["channel",{"_index":162,"title":{},"content":{"9":{"position":[[219,10],[806,10]]},"10":{"position":[[357,10],[843,10]]},"11":{"position":[[379,10]]},"12":{"position":[[237,10],[727,10],[917,11]]},"13":{"position":[[390,10]]},"38":{"position":[[1013,11]]},"39":{"position":[[755,11]]},"40":{"position":[[746,11]]},"41":{"position":[[806,11]]},"81":{"position":[[284,7]]},"115":{"position":[[531,9],[952,9]]},"116":{"position":[[271,7],[376,8]]},"133":{"position":[[782,9]]},"146":{"position":[[213,9]]},"350":{"position":[[300,8],[335,9]]},"351":{"position":[[184,10]]},"359":{"position":[[193,10]]},"538":{"position":[[219,10],[806,10]]},"539":{"position":[[357,10],[843,10]]},"540":{"position":[[379,10]]},"541":{"position":[[237,10],[727,10],[917,11]]},"542":{"position":[[390,10]]},"560":{"position":[[1013,11]]},"561":{"position":[[755,11]]},"562":{"position":[[746,11]]},"563":{"position":[[806,11]]},"599":{"position":[[531,9],[952,9]]},"600":{"position":[[271,7],[376,8]]},"646":{"position":[[213,9]]},"661":{"position":[[782,9]]},"824":{"position":[[300,8],[335,9]]},"825":{"position":[[184,10]]},"833":{"position":[[193,10]]}},"keywords":{}}],["channels\":[\"default",{"_index":2712,"title":{},"content":{"351":{"position":[[782,24]]},"353":{"position":[[362,24],[660,24],[1254,24]]},"356":{"position":[[348,24]]},"359":{"position":[[677,24]]},"362":{"position":[[351,24]]},"389":{"position":[[982,24]]},"392":{"position":[[729,24]]},"395":{"position":[[717,24]]},"398":{"position":[[747,24]]},"825":{"position":[[782,24]]},"827":{"position":[[362,24],[660,24],[1254,24]]},"830":{"position":[[348,24]]},"833":{"position":[[677,24]]},"836":{"position":[[351,24]]},"878":{"position":[[982,24]]},"881":{"position":[[729,24]]},"884":{"position":[[717,24]]},"887":{"position":[[747,24]]}},"keywords":{}}],["chapt",{"_index":2160,"title":{},"content":{"258":{"position":[[77,7]]}},"keywords":{}}],["chapter:https://infra.apache.org/openpgp.html",{"_index":2159,"title":{},"content":{"258":{"position":[[24,45]]}},"keywords":{}}],["charact",{"_index":1870,"title":{},"content":{"184":{"position":[[170,13]]},"260":{"position":[[265,10]]},"327":{"position":[[397,10],[475,10]]},"712":{"position":[[170,13]]},"808":{"position":[[397,10],[475,10]]}},"keywords":{}}],["character.",{"_index":2530,"title":{},"content":{"327":{"position":[[440,13]]},"808":{"position":[[440,13]]}},"keywords":{}}],["characterist",{"_index":1593,"title":{},"content":{"133":{"position":[[12,15]]},"661":{"position":[[12,15]]}},"keywords":{}}],["characters.contain",{"_index":2527,"title":{},"content":{"327":{"position":[[350,18]]},"808":{"position":[[350,18]]}},"keywords":{}}],["chardet",{"_index":3423,"title":{},"content":{"791":{"position":[[2315,7],[3207,7],[6478,7],[12300,8],[12387,7],[17165,7],[18157,7],[19031,7],[22196,7],[27849,8],[27936,7],[32019,7]]}},"keywords":{}}],["chardet=3.0.4=py37_1003",{"_index":1698,"title":{},"content":{"146":{"position":[[377,23]]},"646":{"position":[[377,23]]}},"keywords":{}}],["chardet_2.3.0",{"_index":3643,"title":{},"content":{"791":{"position":[[12341,13],[27890,13]]}},"keywords":{}}],["chart",{"_index":105,"title":{},"content":{"4":{"position":[[924,7]]},"98":{"position":[[519,8]]},"238":{"position":[[131,5]]},"312":{"position":[[51,5]]},"339":{"position":[[129,5]]},"464":{"position":[[924,7]]},"500":{"position":[[116,7]]},"612":{"position":[[519,8]]},"742":{"position":[[131,5]]},"744":{"position":[[523,5],[1694,5]]},"784":{"position":[[51,5]]},"813":{"position":[[105,5]]}},"keywords":{}}],["charts/submarin",{"_index":30,"title":{},"content":{"3":{"position":[[99,16]]},"240":{"position":[[348,16]]},"310":{"position":[[93,16]]},"339":{"position":[[178,16]]},"463":{"position":[[99,16]]},"742":{"position":[[588,16]]},"744":{"position":[[348,16],[734,16],[829,16]]},"782":{"position":[[93,16]]},"813":{"position":[[158,16]]}},"keywords":{}}],["charts/submarine/chart",{"_index":3280,"title":{},"content":{"744":{"position":[[703,23]]}},"keywords":{}}],["charts/submarine/charts/traefik/values.yaml",{"_index":2450,"title":{},"content":{"314":{"position":[[433,43]]},"786":{"position":[[433,43]]}},"keywords":{}}],["charts/submarine/values.yaml",{"_index":2425,"title":{},"content":{"313":{"position":[[134,29],[507,28],[1232,28]]},"314":{"position":[[208,29]]},"785":{"position":[[134,29],[507,28],[1232,28]]},"786":{"position":[[208,29]]}},"keywords":{}}],["charts/submarine/values.yaml.to",{"_index":2428,"title":{},"content":{"313":{"position":[[330,31],[1075,31]]},"785":{"position":[[330,31],[1075,31]]}},"keywords":{}}],["check",{"_index":48,"title":{"66":{"position":[[7,5]]},"68":{"position":[[8,5]]},"220":{"position":[[0,8]]},"251":{"position":[[4,5]]},"252":{"position":[[4,5]]},"253":{"position":[[4,5]]},"254":{"position":[[5,5]]},"255":{"position":[[4,5]]},"262":{"position":[[4,5]]},"272":{"position":[[4,5]]},"489":{"position":[[0,5]]},"575":{"position":[[7,5]]},"577":{"position":[[8,5]]}},"content":{"4":{"position":[[27,5]]},"60":{"position":[[396,5]]},"127":{"position":[[158,5],[326,5],[356,5]]},"128":{"position":[[94,5],[163,5]]},"210":{"position":[[143,5]]},"211":{"position":[[313,6],[1250,6]]},"221":{"position":[[190,5]]},"236":{"position":[[426,5]]},"241":{"position":[[20,5]]},"251":{"position":[[306,5]]},"252":{"position":[[1066,8],[1864,5],[2112,5],[2429,5]]},"253":{"position":[[283,5]]},"254":{"position":[[57,5]]},"255":{"position":[[124,5]]},"259":{"position":[[145,6]]},"262":{"position":[[44,5],[148,5]]},"263":{"position":[[761,5],[1448,5]]},"267":{"position":[[107,5],[206,6],[226,5],[284,5]]},"268":{"position":[[58,7],[148,7]]},"278":{"position":[[263,5],[357,5]]},"279":{"position":[[264,6],[319,5],[597,5]]},"284":{"position":[[313,6]]},"289":{"position":[[855,5]]},"312":{"position":[[27,5]]},"338":{"position":[[13,5]]},"437":{"position":[[271,5]]},"464":{"position":[[27,5]]},"470":{"position":[[50,5]]},"569":{"position":[[396,5]]},"634":{"position":[[158,5],[326,5],[356,5]]},"635":{"position":[[94,5],[163,5]]},"705":{"position":[[143,5]]},"706":{"position":[[313,6],[1250,6]]},"734":{"position":[[0,8]]},"735":{"position":[[190,5]]},"740":{"position":[[429,5]]},"744":{"position":[[1775,5]]},"752":{"position":[[855,5]]},"784":{"position":[[27,5]]},"812":{"position":[[13,5]]},"921":{"position":[[271,5]]},"930":{"position":[[50,5]]},"964":{"position":[[160,5]]},"966":{"position":[[411,5]]},"975":{"position":[[0,5]]},"976":{"position":[[114,5]]}},"keywords":{}}],["check/python",{"_index":3789,"title":{},"content":{"919":{"position":[[296,13],[411,13]]}},"keywords":{}}],["check/python/auto",{"_index":2926,"title":{},"content":{"437":{"position":[[149,17]]},"921":{"position":[[149,17]]}},"keywords":{}}],["check/python/lint",{"_index":2910,"title":{},"content":{"435":{"position":[[304,17]]}},"keywords":{}}],["check/python/lint.sh",{"_index":2931,"title":{},"content":{"437":{"position":[[416,20]]},"921":{"position":[[416,20]]}},"keywords":{}}],["check/python/mypi",{"_index":2913,"title":{},"content":{"435":{"position":[[411,17]]}},"keywords":{}}],["checkout",{"_index":852,"title":{"277":{"position":[[6,8]]}},"content":{"62":{"position":[[53,8],[176,8],[228,8]]},"333":{"position":[[224,8]]},"435":{"position":[[260,8],[367,8],[483,8],[608,8]]},"571":{"position":[[53,8],[176,8],[228,8]]},"788":{"position":[[425,8]]},"803":{"position":[[224,8]]},"919":{"position":[[608,8]]}},"keywords":{}}],["checkpoint",{"_index":3030,"title":{},"content":{"479":{"position":[[446,10]]},"942":{"position":[[446,10]]},"964":{"position":[[1155,11],[1722,12]]},"965":{"position":[[5070,11]]}},"keywords":{}}],["checkpoint_path",{"_index":3028,"title":{},"content":{"479":{"position":[[376,15]]},"942":{"position":[[376,15]]}},"keywords":{}}],["checkpointsaverhook",{"_index":4037,"title":{},"content":{"965":{"position":[[4701,20],[14118,20]]}},"keywords":{}}],["checkstyl",{"_index":908,"title":{"236":{"position":[[11,10]]},"740":{"position":[[11,10]]}},"content":{"71":{"position":[[169,10]]},"236":{"position":[[0,10],[156,10],[171,10],[191,10],[282,10],[360,10]]},"580":{"position":[[169,10]]},"740":{"position":[[0,10],[156,10],[174,10],[194,10],[285,10],[363,10]]}},"keywords":{}}],["checkstyle+idea",{"_index":2032,"title":{},"content":{"236":{"position":[[79,15]]},"740":{"position":[[79,15]]}},"keywords":{}}],["checksum",{"_index":2494,"title":{},"content":{"324":{"position":[[137,9],[205,9]]}},"keywords":{}}],["cheng",{"_index":2188,"title":{},"content":{"260":{"position":[[1220,5],[1391,5],[2689,5]]},"261":{"position":[[144,5]]}},"keywords":{}}],["child",{"_index":1910,"title":{},"content":{"201":{"position":[[87,5]]},"696":{"position":[[87,5]]}},"keywords":{}}],["china",{"_index":3856,"title":{},"content":{"950":{"position":[[1304,6]]}},"keywords":{}}],["chmod",{"_index":2466,"title":{},"content":{"316":{"position":[[446,5]]},"481":{"position":[[1892,5],[2047,5]]},"484":{"position":[[1097,5]]},"793":{"position":[[446,5]]},"944":{"position":[[1892,5],[2047,5]]},"947":{"position":[[1097,5]]},"954":{"position":[[759,5]]}},"keywords":{}}],["choic",{"_index":1213,"title":{},"content":{"93":{"position":[[147,7]]},"607":{"position":[[147,7]]}},"keywords":{}}],["choos",{"_index":1377,"title":{},"content":{"103":{"position":[[499,8],[644,6]]},"104":{"position":[[142,6]]},"112":{"position":[[1188,8],[1333,6],[2162,6]]},"121":{"position":[[226,6],[373,6],[501,6],[586,6],[758,6]]},"146":{"position":[[43,6],[70,7]]},"152":{"position":[[359,6]]},"252":{"position":[[1274,7],[1348,6]]},"257":{"position":[[139,6]]},"261":{"position":[[482,6]]},"327":{"position":[[1047,6]]},"343":{"position":[[56,6]]},"489":{"position":[[223,6]]},"502":{"position":[[3092,6]]},"596":{"position":[[1188,8],[1333,6],[2162,6]]},"617":{"position":[[499,8],[644,6]]},"618":{"position":[[143,6]]},"628":{"position":[[226,6],[373,6],[501,6],[586,6],[758,6]]},"646":{"position":[[43,6],[70,7]]},"652":{"position":[[365,6]]},"808":{"position":[[698,6]]},"817":{"position":[[56,6]]},"939":{"position":[[1865,6]]}},"keywords":{}}],["chos",{"_index":4168,"title":{},"content":{"966":{"position":[[502,5]]}},"keywords":{}}],["chown",{"_index":3077,"title":{},"content":{"481":{"position":[[1850,5],[2009,5]]},"944":{"position":[[1850,5],[2009,5]]}},"keywords":{}}],["ci",{"_index":2242,"title":{},"content":{"263":{"position":[[913,2],[1608,2]]},"436":{"position":[[53,3]]},"920":{"position":[[53,3]]}},"keywords":{}}],["ci.sh",{"_index":2916,"title":{},"content":{"436":{"position":[[122,5],[325,5]]},"920":{"position":[[122,5],[325,5]]}},"keywords":{}}],["cicd",{"_index":958,"title":{},"content":{"76":{"position":[[165,4]]},"585":{"position":[[165,4]]}},"keywords":{}}],["cifar",{"_index":3908,"title":{},"content":{"960":{"position":[[56,5],[186,5],[454,5]]}},"keywords":{}}],["cifar10",{"_index":3902,"title":{},"content":{"955":{"position":[[251,7]]},"957":{"position":[[273,7]]},"970":{"position":[[244,7],[499,7]]},"972":{"position":[[315,7],[362,7]]},"990":{"position":[[477,7],[660,7],[865,7]]},"991":{"position":[[547,7],[732,7],[904,7]]}},"keywords":{}}],["cifar10_estim",{"_index":3932,"title":{},"content":{"963":{"position":[[811,18]]}},"keywords":{}}],["cifar10_estimator.cifar10_main",{"_index":3933,"title":{},"content":{"963":{"position":[[846,30]]}},"keywords":{}}],["cifar10_estimator/cmle_config.yaml",{"_index":3931,"title":{},"content":{"963":{"position":[[759,34]]}},"keywords":{}}],["cifar10_main.pi",{"_index":3913,"title":{},"content":{"961":{"position":[[77,15],[293,15],[603,15],[782,15]]},"965":{"position":[[428,15],[9925,15],[16083,15]]},"967":{"position":[[13,15],[88,18],[295,18],[1413,18]]},"981":{"position":[[574,15]]}},"keywords":{}}],["cifar10_tutorial.pi",{"_index":4320,"title":{},"content":{"986":{"position":[[439,20]]}},"keywords":{}}],["cifarmultigpu",{"_index":3929,"title":{},"content":{"963":{"position":[[662,13]]}},"keywords":{}}],["cla",{"_index":564,"title":{},"content":{"53":{"position":[[2783,5]]}},"keywords":{}}],["clarifi",{"_index":992,"title":{},"content":{"79":{"position":[[946,7]]}},"keywords":{}}],["class",{"_index":1705,"title":{"423":{"position":[[0,5]]},"897":{"position":[[0,5]]},"907":{"position":[[0,5]]}},"content":{"147":{"position":[[109,5]]},"158":{"position":[[2487,5]]},"207":{"position":[[359,5]]},"208":{"position":[[597,5]]},"237":{"position":[[19,6],[162,8]]},"343":{"position":[[1961,5]]},"647":{"position":[[109,5]]},"658":{"position":[[2487,5]]},"702":{"position":[[359,5]]},"703":{"position":[[597,5]]},"741":{"position":[[19,6],[162,8]]},"817":{"position":[[1979,5]]}},"keywords":{}}],["classload",{"_index":1751,"title":{},"content":{"152":{"position":[[644,11],[690,12]]},"652":{"position":[[650,11],[696,12]]}},"keywords":{}}],["classpath",{"_index":1747,"title":{},"content":{"152":{"position":[[464,11]]},"652":{"position":[[470,11]]},"980":{"position":[[190,9]]},"981":{"position":[[84,9],[493,9]]},"985":{"position":[[187,9]]},"986":{"position":[[84,9]]},"990":{"position":[[127,9]]},"991":{"position":[[162,9]]}},"keywords":{}}],["classpath=$(hadoop",{"_index":4260,"title":{},"content":{"980":{"position":[[171,18]]},"981":{"position":[[65,18]]},"985":{"position":[[168,18]]},"986":{"position":[[65,18]]},"990":{"position":[[108,18]]},"991":{"position":[[143,18]]}},"keywords":{}}],["classpath=\\$(/hadoop",{"_index":4294,"title":{},"content":{"981":{"position":[[455,20]]}},"keywords":{}}],["clean",{"_index":1844,"title":{},"content":{"177":{"position":[[448,7]]},"219":{"position":[[333,5]]},"220":{"position":[[4,5]]},"221":{"position":[[271,5]]},"267":{"position":[[238,5]]},"270":{"position":[[315,5]]},"289":{"position":[[1314,5]]},"684":{"position":[[448,7]]},"733":{"position":[[333,5]]},"734":{"position":[[35,5],[144,5],[232,5],[334,5],[436,5],[537,5],[617,5]]},"735":{"position":[[271,5]]},"752":{"position":[[1314,5]]},"777":{"position":[[459,5]]},"934":{"position":[[130,5]]},"954":{"position":[[1048,5]]},"969":{"position":[[672,5],[827,5]]}},"keywords":{}}],["cleanup",{"_index":1165,"title":{},"content":{"91":{"position":[[156,8]]},"263":{"position":[[477,7]]},"277":{"position":[[92,7]]},"605":{"position":[[156,8]]}},"keywords":{}}],["clear",{"_index":935,"title":{},"content":{"74":{"position":[[356,5]]},"211":{"position":[[398,5]]},"583":{"position":[[356,5]]},"706":{"position":[[398,5]]}},"keywords":{}}],["clearli",{"_index":639,"title":{},"content":{"53":{"position":[[6044,7],[6166,7]]},"79":{"position":[[319,7]]}},"keywords":{}}],["cli",{"_index":1435,"title":{"442":{"position":[[10,3]]}},"content":{"110":{"position":[[86,3]]},"121":{"position":[[176,3]]},"161":{"position":[[226,3],[294,3]]},"162":{"position":[[322,3],[877,3]]},"295":{"position":[[12,3]]},"313":{"position":[[226,4]]},"443":{"position":[[17,3]]},"444":{"position":[[44,3],[80,3]]},"624":{"position":[[86,3]]},"628":{"position":[[176,3]]},"668":{"position":[[226,3],[294,3]]},"669":{"position":[[485,3],[1130,3]]},"762":{"position":[[12,3]]},"785":{"position":[[226,4]]}},"keywords":{}}],["cli/api/ui",{"_index":1388,"title":{},"content":{"104":{"position":[[502,11]]},"618":{"position":[[503,11]]}},"keywords":{}}],["cli/sdk",{"_index":1381,"title":{},"content":{"103":{"position":[[735,8]]},"617":{"position":[[735,8]]}},"keywords":{}}],["cli/sdk/ui",{"_index":1467,"title":{},"content":{"112":{"position":[[2290,11]]},"161":{"position":[[573,12]]},"596":{"position":[[2290,11]]},"668":{"position":[[573,12]]}},"keywords":{}}],["click",{"_index":1020,"title":{},"content":{"81":{"position":[[182,8]]},"86":{"position":[[463,5]]},"242":{"position":[[375,5]]},"279":{"position":[[565,8]]},"327":{"position":[[50,5],[158,5],[1149,5]]},"345":{"position":[[29,5]]},"346":{"position":[[91,5]]},"406":{"position":[[47,5]]},"498":{"position":[[146,5]]},"502":{"position":[[811,8],[841,8],[925,8],[1118,8]]},"745":{"position":[[375,5]]},"808":{"position":[[50,5],[158,5],[800,5]]},"819":{"position":[[29,5]]},"820":{"position":[[93,5],[202,5]]},"895":{"position":[[47,5]]}},"keywords":{}}],["clickstream",{"_index":1162,"title":{},"content":{"91":{"position":[[45,12]]},"605":{"position":[[45,12]]}},"keywords":{}}],["client",{"_index":1792,"title":{"295":{"position":[[15,6]]},"422":{"position":[[11,6]]},"762":{"position":[[15,6]]},"896":{"position":[[11,6]]},"906":{"position":[[6,6]]}},"content":{"158":{"position":[[226,7],[951,7]]},"162":{"position":[[777,6],[923,6]]},"208":{"position":[[57,6],[270,6],[345,6],[440,6]]},"252":{"position":[[2329,6],[2387,6]]},"253":{"position":[[443,6]]},"255":{"position":[[23,6]]},"313":{"position":[[632,7]]},"328":{"position":[[549,6]]},"423":{"position":[[0,6]]},"424":{"position":[[226,6]]},"439":{"position":[[49,6]]},"492":{"position":[[427,6]]},"658":{"position":[[226,7],[951,7]]},"669":{"position":[[1006,6],[1176,6]]},"703":{"position":[[57,6],[270,6],[345,6],[440,6]]},"785":{"position":[[632,7]]},"791":{"position":[[2104,6],[2257,6],[2530,6],[2910,6],[2996,6],[3149,6],[4509,6],[5018,6],[5633,6],[9162,7],[9262,6],[9989,7],[10089,6],[10944,7],[11039,6],[13760,6],[13985,6],[15332,6],[17946,6],[18099,6],[18372,6],[18752,6],[18820,6],[18973,6],[20333,6],[20842,6],[21457,6],[24880,7],[24980,6],[25707,7],[25807,6],[26662,7],[26757,6],[29309,6],[29534,6],[30881,6]]},"809":{"position":[[569,6]]},"897":{"position":[[0,6]]},"898":{"position":[[226,6]]},"923":{"position":[[49,6]]}},"keywords":{}}],["client.create_experi",{"_index":2878,"title":{},"content":{"424":{"position":[[254,26]]},"898":{"position":[[254,26]]}},"keywords":{}}],["client.delete_experiment(\"experiment_1626160071451_0008",{"_index":2890,"title":{},"content":{"428":{"position":[[147,57]]},"902":{"position":[[147,57]]}},"keywords":{}}],["client.get_experiment(\"experiment_1626160071451_0008",{"_index":2883,"title":{},"content":{"426":{"position":[[161,54]]},"900":{"position":[[161,54]]}},"keywords":{}}],["client.get_log(\"experiment_1626160071451_0009",{"_index":2896,"title":{},"content":{"429":{"position":[[268,47]]},"903":{"position":[[268,47]]}},"keywords":{}}],["client.list_experi",{"_index":2888,"title":{},"content":{"427":{"position":[[162,25]]},"901":{"position":[[162,25]]}},"keywords":{}}],["client.list_log(\"succeed",{"_index":2898,"title":{},"content":{"430":{"position":[[146,28]]},"904":{"position":[[146,28]]}},"keywords":{}}],["client.patch_experiment(\"experiment_1626160071451_0008",{"_index":2881,"title":{},"content":{"425":{"position":[[229,56]]},"899":{"position":[[229,56]]}},"keywords":{}}],["client.wait_for_finish(\"experiment_1626160071451_0009",{"_index":2906,"title":{},"content":{"431":{"position":[[226,55]]},"905":{"position":[[226,55]]}},"keywords":{}}],["client=1.7.2=py37_0",{"_index":168,"title":{},"content":{"9":{"position":[[372,21],[959,21]]},"10":{"position":[[510,21]]},"11":{"position":[[532,21]]},"115":{"position":[[667,19],[1088,19]]},"351":{"position":[[337,21]]},"538":{"position":[[372,21],[959,21]]},"539":{"position":[[510,21]]},"540":{"position":[[532,21]]},"599":{"position":[[667,19],[1088,19]]},"825":{"position":[[337,21]]}},"keywords":{}}],["client\\u003d1.7.2\\u003dpy37_0",{"_index":2716,"title":{},"content":{"351":{"position":[[962,31]]},"353":{"position":[[840,31]]},"356":{"position":[[528,31]]},"362":{"position":[[531,31]]},"825":{"position":[[962,31]]},"827":{"position":[[840,31]]},"830":{"position":[[528,31]]},"836":{"position":[[531,31]]}},"keywords":{}}],["client_1%3a7.2p2",{"_index":3623,"title":{},"content":{"791":{"position":[[10029,16],[25747,16]]}},"keywords":{}}],["client_4.3.3",{"_index":3613,"title":{},"content":{"791":{"position":[[9203,12],[24921,12]]}},"keywords":{}}],["client_6.2u5",{"_index":3633,"title":{},"content":{"791":{"position":[[10987,12],[26705,12]]}},"keywords":{}}],["clon",{"_index":27,"title":{"60":{"position":[[7,5]]},"569":{"position":[[7,5]]}},"content":{"3":{"position":[[6,5]]},"60":{"position":[[48,5],[105,5]]},"134":{"position":[[2079,5]]},"310":{"position":[[4,5]]},"333":{"position":[[13,5],[125,5]]},"339":{"position":[[0,5],[22,5]]},"463":{"position":[[6,5]]},"569":{"position":[[48,5],[105,5]]},"662":{"position":[[2079,5]]},"777":{"position":[[827,5]]},"782":{"position":[[4,5]]},"788":{"position":[[479,5]]},"803":{"position":[[13,5],[125,5]]},"813":{"position":[[0,5],[24,5]]},"954":{"position":[[1208,5],[1494,5]]}},"keywords":{}}],["clos",{"_index":780,"title":{},"content":{"54":{"position":[[1761,7]]},"208":{"position":[[888,7]]},"279":{"position":[[228,5],[574,5]]},"281":{"position":[[1326,6]]},"703":{"position":[[888,7]]}},"keywords":{}}],["cloud",{"_index":1218,"title":{"186":{"position":[[0,5]]},"296":{"position":[[15,5]]},"714":{"position":[[0,5]]},"763":{"position":[[15,5]]},"963":{"position":[[29,5]]}},"content":{"93":{"position":[[357,5],[818,5]]},"106":{"position":[[92,6],[135,5],[184,6],[302,5],[501,5]]},"110":{"position":[[1138,6]]},"113":{"position":[[349,5]]},"118":{"position":[[957,6]]},"133":{"position":[[124,5],[234,5],[356,5],[533,5]]},"152":{"position":[[255,6]]},"184":{"position":[[30,5],[68,5],[130,5],[268,5],[580,5],[627,5]]},"186":{"position":[[1176,5]]},"339":{"position":[[336,5]]},"597":{"position":[[349,5]]},"607":{"position":[[357,5],[818,5]]},"616":{"position":[[1133,6]]},"620":{"position":[[92,6],[135,5],[184,6],[302,5],[501,5]]},"624":{"position":[[1143,6]]},"625":{"position":[[964,6]]},"652":{"position":[[261,6]]},"661":{"position":[[124,5],[234,5],[356,5],[533,5]]},"712":{"position":[[30,5],[68,5],[130,5],[268,5],[585,5],[632,5]]},"714":{"position":[[1176,5]]},"744":{"position":[[679,5]]},"963":{"position":[[34,5],[324,5]]},"964":{"position":[[613,7],[1648,7],[1977,6]]}},"keywords":{}}],["cloud.allow",{"_index":1332,"title":{},"content":{"102":{"position":[[1123,11]]}},"keywords":{}}],["clust",{"_index":10,"title":{"2":{"position":[[18,7]]},"5":{"position":[[22,7]]},"151":{"position":[[8,7]]},"169":{"position":[[8,7]]},"195":{"position":[[0,7]]},"199":{"position":[[0,7]]},"201":{"position":[[0,7]]},"211":{"position":[[0,7]]},"315":{"position":[[19,7]]},"316":{"position":[[18,7]]},"338":{"position":[[21,7]]},"339":{"position":[[24,7]]},"462":{"position":[[18,7]]},"465":{"position":[[22,7]]},"651":{"position":[[8,7]]},"676":{"position":[[8,7]]},"690":{"position":[[0,7]]},"694":{"position":[[0,7]]},"696":{"position":[[0,7]]},"706":{"position":[[0,7]]},"792":{"position":[[19,7]]},"793":{"position":[[18,7]]},"812":{"position":[[21,7]]},"813":{"position":[[24,7]]}},"content":{"93":{"position":[[685,7],[892,7]]},"106":{"position":[[316,9],[421,8],[507,9]]},"107":{"position":[[1160,7]]},"110":{"position":[[1173,7]]},"151":{"position":[[64,7],[191,10],[210,7],[273,8],[334,7],[405,7],[497,7]]},"152":{"position":[[907,7],[1217,7],[1279,7]]},"153":{"position":[[258,7]]},"154":{"position":[[103,7],[670,8]]},"158":{"position":[[1289,7]]},"160":{"position":[[314,7],[545,7],[906,9],[1005,8],[1146,8]]},"162":{"position":[[562,7],[1073,8],[1111,8]]},"163":{"position":[[414,7]]},"187":{"position":[[9,7],[153,7],[179,7]]},"190":{"position":[[253,7],[280,9],[331,8],[391,7]]},"199":{"position":[[70,7],[118,7]]},"201":{"position":[[24,8],[111,7],[218,7],[428,8],[437,7]]},"202":{"position":[[25,10]]},"203":{"position":[[149,10]]},"205":{"position":[[112,10],[156,7],[263,7]]},"206":{"position":[[207,7]]},"207":{"position":[[92,7],[217,7],[279,7],[320,7]]},"208":{"position":[[103,7],[326,7],[421,7]]},"210":{"position":[[134,8]]},"211":{"position":[[4,7],[240,7],[444,7],[604,8],[622,7],[742,7],[987,7],[1191,7],[1444,8]]},"212":{"position":[[129,8],[198,8]]},"213":{"position":[[3,7],[139,7]]},"215":{"position":[[77,7]]},"238":{"position":[[144,8]]},"240":{"position":[[276,7]]},"305":{"position":[[229,7]]},"306":{"position":[[31,7],[51,8]]},"313":{"position":[[856,8]]},"314":{"position":[[56,8],[332,8],[613,8],[715,8],[730,7]]},"316":{"position":[[109,7],[544,7],[629,7]]},"319":{"position":[[40,7]]},"338":{"position":[[131,7]]},"401":{"position":[[30,7]]},"440":{"position":[[327,8]]},"485":{"position":[[88,8]]},"495":{"position":[[46,7],[326,7],[766,7]]},"496":{"position":[[35,8]]},"607":{"position":[[685,7],[892,7]]},"620":{"position":[[316,9],[421,8],[507,9]]},"621":{"position":[[1163,7]]},"624":{"position":[[1178,7]]},"651":{"position":[[64,7],[191,10],[210,7],[273,8],[334,7],[405,7],[497,7]]},"652":{"position":[[865,8],[1187,7],[1497,7],[1559,7]]},"653":{"position":[[258,7]]},"654":{"position":[[103,7],[670,8]]},"658":{"position":[[1289,7]]},"667":{"position":[[314,7],[545,7],[906,9],[970,9],[1006,8],[1147,8]]},"669":{"position":[[419,7],[996,7],[1326,8],[1364,8]]},"670":{"position":[[414,7]]},"694":{"position":[[70,7],[118,7]]},"696":{"position":[[24,8],[111,7],[218,7],[428,8],[437,7]]},"697":{"position":[[25,10]]},"698":{"position":[[149,10]]},"700":{"position":[[112,10],[156,7],[263,7]]},"701":{"position":[[207,7]]},"702":{"position":[[92,7],[217,7],[279,7],[320,7]]},"703":{"position":[[103,7],[326,7],[421,7]]},"705":{"position":[[134,8]]},"706":{"position":[[4,7],[240,7],[444,7],[604,8],[622,7],[742,7],[987,7],[1191,7],[1444,8]]},"707":{"position":[[129,8],[198,8]]},"708":{"position":[[3,7],[139,7]]},"710":{"position":[[77,7]]},"715":{"position":[[9,7],[153,7],[179,7]]},"718":{"position":[[258,7],[285,9],[336,8],[396,7]]},"742":{"position":[[144,8]]},"744":{"position":[[276,7],[536,8],[564,7],[885,7]]},"756":{"position":[[229,7]]},"757":{"position":[[31,7],[51,8]]},"785":{"position":[[856,8]]},"786":{"position":[[56,8],[332,8],[613,8],[715,8],[730,7]]},"791":{"position":[[15703,7],[16175,7]]},"793":{"position":[[109,7],[544,7],[629,7]]},"796":{"position":[[40,7]]},"812":{"position":[[131,7]]},"890":{"position":[[30,7]]},"924":{"position":[[315,8]]},"948":{"position":[[88,8]]},"964":{"position":[[226,8],[376,7],[493,11],[505,8],[629,7],[639,7],[724,8],[761,7],[792,7],[1304,7],[1411,7],[1528,11],[1540,8]]},"978":{"position":[[79,7]]},"983":{"position":[[76,7]]},"988":{"position":[[67,7]]}},"keywords":{}}],["cluster'",{"_index":1946,"title":{},"content":{"208":{"position":[[295,9]]},"211":{"position":[[704,9]]},"440":{"position":[[37,9]]},"703":{"position":[[295,9]]},"706":{"position":[[704,9]]},"924":{"position":[[37,9]]}},"keywords":{}}],["cluster).there'r",{"_index":1816,"title":{},"content":{"160":{"position":[[970,17]]}},"keywords":{}}],["cluster.mak",{"_index":2045,"title":{},"content":{"238":{"position":[[75,12]]},"742":{"position":[[75,12]]},"744":{"position":[[463,12]]}},"keywords":{}}],["cluster_nam",{"_index":3335,"title":{},"content":{"779":{"position":[[58,12]]}},"keywords":{}}],["cluster_user=`whoami",{"_index":3388,"title":{},"content":{"791":{"position":[[1299,21]]}},"keywords":{}}],["clustercli",{"_index":1945,"title":{"208":{"position":[[0,13]]},"703":{"position":[[0,13]]}},"content":{"208":{"position":[[4,13]]},"703":{"position":[[4,13]]}},"keywords":{}}],["clusterconfigur",{"_index":1930,"title":{"206":{"position":[[0,16]]},"701":{"position":[[0,16]]}},"content":{},"keywords":{}}],["clustermetadata",{"_index":1948,"title":{"209":{"position":[[0,15]]},"704":{"position":[[0,15]]}},"content":{},"keywords":{}}],["clusterrole=clust",{"_index":2478,"title":{},"content":{"319":{"position":[[184,19]]},"796":{"position":[[184,19]]}},"keywords":{}}],["clusterrolebind",{"_index":2477,"title":{},"content":{"319":{"position":[[144,18]]},"796":{"position":[[144,18]]}},"keywords":{}}],["clusterserv",{"_index":1936,"title":{"207":{"position":[[0,13]]},"702":{"position":[[0,13]]}},"content":{"207":{"position":[[4,13]]},"702":{"position":[[4,13]]}},"keywords":{}}],["clusterstatemachin",{"_index":1941,"title":{},"content":{"207":{"position":[[410,20]]},"208":{"position":[[546,19],[757,19],[802,19]]},"211":{"position":[[714,20]]},"702":{"position":[[410,20]]},"703":{"position":[[546,19],[757,19],[802,19]]},"706":{"position":[[714,20]]}},"keywords":{}}],["cmak",{"_index":3866,"title":{},"content":{"954":{"position":[[545,5]]}},"keywords":{}}],["cmake_prefix_path=\"$(dirnam",{"_index":3895,"title":{},"content":{"954":{"position":[[1396,28]]}},"keywords":{}}],["cmd",{"_index":213,"title":{},"content":{"15":{"position":[[581,6]]},"18":{"position":[[578,6]]},"22":{"position":[[182,6],[940,6]]},"23":{"position":[[182,6],[1087,6]]},"24":{"position":[[449,6],[1097,6]]},"25":{"position":[[482,6]]},"26":{"position":[[190,6],[793,6]]},"27":{"position":[[485,6]]},"178":{"position":[[263,4]]},"179":{"position":[[436,3],[468,3]]},"181":{"position":[[542,3]]},"365":{"position":[[441,3],[1071,3]]},"366":{"position":[[148,6]]},"369":{"position":[[148,6]]},"377":{"position":[[149,6]]},"405":{"position":[[108,6]]},"409":{"position":[[985,3],[1284,3]]},"410":{"position":[[549,6]]},"415":{"position":[[554,6]]},"424":{"position":[[367,6]]},"425":{"position":[[374,6]]},"544":{"position":[[581,6]]},"547":{"position":[[578,6]]},"551":{"position":[[182,6],[940,6]]},"552":{"position":[[182,6],[1087,6]]},"553":{"position":[[449,6],[1097,6]]},"554":{"position":[[482,6]]},"555":{"position":[[190,6],[793,6]]},"556":{"position":[[485,6]]},"685":{"position":[[263,4]]},"686":{"position":[[436,3],[468,3]]},"688":{"position":[[542,3]]},"839":{"position":[[441,3],[1071,3]]},"840":{"position":[[148,6]]},"843":{"position":[[148,6]]},"851":{"position":[[149,6]]},"862":{"position":[[985,3],[1284,3]]},"863":{"position":[[549,6]]},"868":{"position":[[554,6]]},"894":{"position":[[108,6]]},"898":{"position":[[367,6]]},"899":{"position":[[374,6]]}},"keywords":{}}],["cmd\":\"python",{"_index":2755,"title":{},"content":{"366":{"position":[[977,13]]},"369":{"position":[[1097,13]]},"371":{"position":[[570,13],[1578,13]]},"374":{"position":[[514,13]]},"377":{"position":[[1008,13]]},"380":{"position":[[489,13]]},"410":{"position":[[2343,13]]},"412":{"position":[[1345,13]]},"415":{"position":[[2373,13]]},"418":{"position":[[1369,13]]},"421":{"position":[[668,13]]},"840":{"position":[[977,13]]},"843":{"position":[[1097,13]]},"845":{"position":[[570,13],[1578,13]]},"848":{"position":[[514,13]]},"851":{"position":[[1008,13]]},"854":{"position":[[489,13]]},"863":{"position":[[2343,13]]},"865":{"position":[[1345,13]]},"868":{"position":[[2373,13]]},"871":{"position":[[1369,13]]},"874":{"position":[[668,13]]}},"keywords":{}}],["cmd\":null",{"_index":2766,"title":{},"content":{"366":{"position":[[1382,11],[1552,11]]},"369":{"position":[[1474,11],[1644,11]]},"371":{"position":[[974,11],[1144,11],[1955,11],[2125,11]]},"374":{"position":[[891,11],[1061,11]]},"377":{"position":[[1413,11],[1583,11]]},"380":{"position":[[894,11],[1064,11]]},"410":{"position":[[2771,11],[2944,11]]},"412":{"position":[[1773,11],[1946,11]]},"415":{"position":[[2801,11],[2971,11]]},"418":{"position":[[1797,11],[1967,11]]},"421":{"position":[[1072,11],[1242,11]]},"840":{"position":[[1382,11],[1552,11]]},"843":{"position":[[1474,11],[1644,11]]},"845":{"position":[[974,11],[1144,11],[1955,11],[2125,11]]},"848":{"position":[[891,11],[1061,11]]},"851":{"position":[[1413,11],[1583,11]]},"854":{"position":[[894,11],[1064,11]]},"863":{"position":[[2771,11],[2944,11]]},"865":{"position":[[1773,11],[1946,11]]},"868":{"position":[[2801,11],[2971,11]]},"871":{"position":[[1797,11],[1967,11]]},"874":{"position":[[1072,11],[1242,11]]}},"keywords":{}}],["cmd='python",{"_index":2559,"title":{},"content":{"328":{"position":[[816,11]]},"809":{"position":[[836,11]]}},"keywords":{}}],["cn",{"_index":3246,"title":{"517":{"position":[[10,2]]}},"content":{},"keywords":{}}],["co",{"_index":1903,"title":{},"content":{"199":{"position":[[274,2]]},"249":{"position":[[4,2]]},"263":{"position":[[296,2],[1152,2]]},"277":{"position":[[174,2]]},"694":{"position":[[274,2]]}},"keywords":{}}],["cod",{"_index":177,"title":{"71":{"position":[[0,4]]},"96":{"position":[[41,4]]},"147":{"position":[[44,4]]},"221":{"position":[[16,4]]},"269":{"position":[[23,4]]},"333":{"position":[[24,4]]},"351":{"position":[[0,4]]},"353":{"position":[[0,4]]},"356":{"position":[[0,4]]},"359":{"position":[[0,4]]},"362":{"position":[[0,4]]},"366":{"position":[[0,4]]},"369":{"position":[[0,4]]},"371":{"position":[[0,4]]},"374":{"position":[[0,4]]},"377":{"position":[[0,4]]},"380":{"position":[[0,4]]},"382":{"position":[[0,4]]},"385":{"position":[[0,4]]},"389":{"position":[[0,4]]},"392":{"position":[[0,4]]},"395":{"position":[[0,4]]},"398":{"position":[[0,4]]},"410":{"position":[[0,4]]},"412":{"position":[[0,4]]},"415":{"position":[[0,4]]},"418":{"position":[[0,4]]},"421":{"position":[[0,4]]},"437":{"position":[[0,6]]},"580":{"position":[[0,4]]},"610":{"position":[[41,4]]},"647":{"position":[[44,4]]},"734":{"position":[[16,4]]},"735":{"position":[[16,4]]},"803":{"position":[[24,4]]},"825":{"position":[[0,4]]},"827":{"position":[[0,4]]},"830":{"position":[[0,4]]},"833":{"position":[[0,4]]},"836":{"position":[[0,4]]},"840":{"position":[[0,4]]},"843":{"position":[[0,4]]},"845":{"position":[[0,4]]},"848":{"position":[[0,4]]},"851":{"position":[[0,4]]},"854":{"position":[[0,4]]},"856":{"position":[[0,4]]},"859":{"position":[[0,4]]},"863":{"position":[[0,4]]},"865":{"position":[[0,4]]},"868":{"position":[[0,4]]},"871":{"position":[[0,4]]},"874":{"position":[[0,4]]},"878":{"position":[[0,4]]},"881":{"position":[[0,4]]},"884":{"position":[[0,4]]},"887":{"position":[[0,4]]},"921":{"position":[[0,6]]}},"content":{"9":{"position":[[587,7]]},"10":{"position":[[136,7]]},"11":{"position":[[160,7]]},"12":{"position":[[483,7]]},"13":{"position":[[163,7]]},"22":{"position":[[627,7]]},"23":{"position":[[774,7]]},"24":{"position":[[134,7]]},"25":{"position":[[169,7]]},"26":{"position":[[665,7]]},"27":{"position":[[172,7]]},"28":{"position":[[144,7]]},"29":{"position":[[179,7]]},"31":{"position":[[159,6]]},"32":{"position":[[171,6]]},"33":{"position":[[316,6]]},"34":{"position":[[176,6]]},"35":{"position":[[224,6]]},"41":{"position":[[146,7]]},"47":{"position":[[149,6]]},"48":{"position":[[169,6]]},"49":{"position":[[272,6]]},"50":{"position":[[174,6]]},"52":{"position":[[210,6]]},"53":{"position":[[348,4],[367,4],[1473,5],[3073,5],[3099,4],[8793,4],[8899,5],[9017,4],[9070,4],[9521,4],[10765,4]]},"54":{"position":[[820,4],[1630,4],[1643,5]]},"56":{"position":[[133,4]]},"57":{"position":[[11,4]]},"63":{"position":[[17,4],[62,7],[77,4]]},"69":{"position":[[399,4]]},"71":{"position":[[24,4],[102,4]]},"76":{"position":[[30,4]]},"83":{"position":[[117,5]]},"85":{"position":[[64,4]]},"87":{"position":[[17,4]]},"90":{"position":[[1078,7]]},"96":{"position":[[266,5]]},"98":{"position":[[242,4]]},"121":{"position":[[513,4]]},"127":{"position":[[85,5],[215,6]]},"132":{"position":[[573,5],[1902,4]]},"133":{"position":[[552,4],[623,4]]},"134":{"position":[[6,4],[92,5],[101,4],[180,4],[348,4],[512,4],[662,4],[713,4],[840,4],[908,4],[974,4],[1044,5],[1100,5],[1189,4],[1255,5],[1479,5],[1596,5],[1986,4],[2006,5],[2088,7],[2118,4],[2138,5],[2161,4],[2216,4],[2241,5]]},"139":{"position":[[386,4],[1359,5],[2192,5]]},"140":{"position":[[286,5],[766,4],[800,4],[1260,5]]},"142":{"position":[[198,4],[218,5]]},"145":{"position":[[145,4],[165,5]]},"147":{"position":[[22,5],[60,4],[682,4],[712,4]]},"148":{"position":[[620,4]]},"158":{"position":[[2699,6]]},"251":{"position":[[53,4],[134,4],[195,4],[253,4]]},"254":{"position":[[284,4]]},"267":{"position":[[125,4]]},"268":{"position":[[44,4]]},"269":{"position":[[54,4]]},"270":{"position":[[19,4]]},"278":{"position":[[111,4]]},"307":{"position":[[12,4]]},"328":{"position":[[1437,4]]},"333":{"position":[[19,4],[115,5]]},"335":{"position":[[88,4]]},"342":{"position":[[11,4]]},"346":{"position":[[7,5]]},"365":{"position":[[256,4],[1308,4],[1337,4]]},"376":{"position":[[252,4]]},"401":{"position":[[18,4]]},"409":{"position":[[800,4],[1423,4],[1452,4]]},"437":{"position":[[124,4]]},"439":{"position":[[163,4],[209,4]]},"538":{"position":[[587,7]]},"539":{"position":[[136,7]]},"540":{"position":[[160,7]]},"541":{"position":[[483,7]]},"542":{"position":[[163,7]]},"551":{"position":[[627,7]]},"552":{"position":[[774,7]]},"553":{"position":[[134,7]]},"554":{"position":[[169,7]]},"555":{"position":[[665,7]]},"556":{"position":[[172,7]]},"557":{"position":[[144,7]]},"558":{"position":[[179,7]]},"563":{"position":[[146,7]]},"565":{"position":[[133,4]]},"566":{"position":[[11,4]]},"572":{"position":[[17,4],[62,7],[77,4]]},"578":{"position":[[399,4]]},"580":{"position":[[24,4],[102,4]]},"585":{"position":[[30,4]]},"590":{"position":[[117,5]]},"592":{"position":[[64,4]]},"594":{"position":[[17,4]]},"604":{"position":[[1078,7]]},"610":{"position":[[266,5]]},"612":{"position":[[242,4]]},"628":{"position":[[513,4]]},"634":{"position":[[85,5],[215,6]]},"639":{"position":[[386,4],[1365,5],[1625,5],[2205,5]]},"640":{"position":[[286,5],[766,4],[800,4],[1260,5]]},"642":{"position":[[198,4],[218,5]]},"645":{"position":[[145,4],[165,5]]},"647":{"position":[[22,5],[60,4],[682,4],[712,4]]},"648":{"position":[[620,4]]},"658":{"position":[[2699,6]]},"660":{"position":[[573,5],[1902,4]]},"661":{"position":[[552,4],[623,4]]},"662":{"position":[[6,4],[92,5],[101,4],[180,4],[348,4],[512,4],[662,4],[713,4],[840,4],[908,4],[974,4],[1044,5],[1100,5],[1189,4],[1255,5],[1479,5],[1596,5],[1986,4],[2006,5],[2088,7],[2118,4],[2138,5],[2161,4],[2216,4],[2241,5]]},"734":{"position":[[595,4]]},"758":{"position":[[12,4]]},"803":{"position":[[19,4],[115,5]]},"805":{"position":[[88,4]]},"809":{"position":[[1457,4]]},"816":{"position":[[11,4]]},"820":{"position":[[7,5]]},"839":{"position":[[256,4],[1308,4],[1337,4]]},"850":{"position":[[252,4]]},"862":{"position":[[800,4],[1423,4],[1452,4]]},"890":{"position":[[18,4]]},"921":{"position":[[124,4]]},"966":{"position":[[95,5]]},"992":{"position":[[317,4]]}},"keywords":{}}],["code\":200",{"_index":375,"title":{},"content":{"36":{"position":[[224,11]]},"38":{"position":[[403,11]]},"39":{"position":[[142,11]]},"40":{"position":[[139,11]]},"43":{"position":[[284,11]]},"44":{"position":[[216,11]]},"46":{"position":[[278,11]]},"51":{"position":[[202,11]]},"351":{"position":[[542,11]]},"353":{"position":[[91,11]]},"356":{"position":[[108,11]]},"359":{"position":[[429,11]]},"362":{"position":[[111,11]]},"366":{"position":[[583,11]]},"369":{"position":[[703,11]]},"371":{"position":[[90,11]]},"374":{"position":[[120,11]]},"377":{"position":[[614,11]]},"380":{"position":[[123,11]]},"382":{"position":[[95,11]]},"385":{"position":[[125,11]]},"389":{"position":[[363,11]]},"392":{"position":[[124,11]]},"395":{"position":[[116,11]]},"398":{"position":[[120,11]]},"410":{"position":[[1089,11]]},"412":{"position":[[88,11]]},"415":{"position":[[1115,11]]},"418":{"position":[[111,11]]},"421":{"position":[[272,11]]},"560":{"position":[[403,11]]},"561":{"position":[[142,11]]},"562":{"position":[[139,11]]},"825":{"position":[[542,11]]},"827":{"position":[[91,11]]},"830":{"position":[[108,11]]},"833":{"position":[[429,11]]},"836":{"position":[[111,11]]},"840":{"position":[[583,11]]},"843":{"position":[[703,11]]},"845":{"position":[[90,11]]},"848":{"position":[[120,11]]},"851":{"position":[[614,11]]},"854":{"position":[[123,11]]},"856":{"position":[[95,11]]},"859":{"position":[[125,11]]},"863":{"position":[[1089,11]]},"865":{"position":[[88,11]]},"868":{"position":[[1115,11]]},"871":{"position":[[111,11]]},"874":{"position":[[272,11]]},"878":{"position":[[363,11]]},"881":{"position":[[124,11]]},"884":{"position":[[116,11]]},"887":{"position":[[120,11]]}},"keywords":{}}],["code\":nul",{"_index":2771,"title":{},"content":{"366":{"position":[[1628,11]]},"369":{"position":[[1720,11]]},"371":{"position":[[1220,11],[2201,11]]},"374":{"position":[[1137,11]]},"377":{"position":[[1659,11]]},"380":{"position":[[1140,11]]},"410":{"position":[[3023,11]]},"412":{"position":[[2025,11]]},"415":{"position":[[3047,11]]},"418":{"position":[[2043,11]]},"421":{"position":[[1318,11]]},"840":{"position":[[1628,11]]},"843":{"position":[[1720,11]]},"845":{"position":[[1220,11],[2201,11]]},"848":{"position":[[1137,11]]},"851":{"position":[[1659,11]]},"854":{"position":[[1140,11]]},"863":{"position":[[3023,11]]},"865":{"position":[[2025,11]]},"868":{"position":[[3047,11]]},"871":{"position":[[2043,11]]},"874":{"position":[[1318,11]]}},"keywords":{}}],["code.experi",{"_index":1661,"title":{},"content":{"139":{"position":[[1618,15]]}},"keywords":{}}],["code/train",{"_index":1685,"title":{},"content":{"140":{"position":[[1341,14]]},"640":{"position":[[1341,14]]}},"keywords":{}}],["code=code_spec",{"_index":2573,"title":{},"content":{"328":{"position":[[1223,15]]},"809":{"position":[[1243,15]]}},"keywords":{}}],["code_spec",{"_index":2567,"title":{},"content":{"328":{"position":[[1058,9]]},"809":{"position":[[1078,9]]}},"keywords":{}}],["codebas",{"_index":469,"title":{},"content":{"53":{"position":[[389,9],[3940,9],[4176,8],[7455,9],[8824,8],[9360,8],[9378,8],[9459,9]]},"54":{"position":[[261,8],[859,9]]}},"keywords":{}}],["codeboth",{"_index":2923,"title":{},"content":{"437":{"position":[[64,8]]},"921":{"position":[[64,8]]}},"keywords":{}}],["codespec",{"_index":2551,"title":{},"content":{"328":{"position":[[521,8]]},"365":{"position":[[261,8],[281,9],[1144,9]]},"376":{"position":[[257,8]]},"409":{"position":[[805,8],[825,9],[1357,9]]},"809":{"position":[[541,8]]},"839":{"position":[[261,8],[281,9],[1144,9]]},"850":{"position":[[257,8]]},"862":{"position":[[805,8],[825,9],[1357,9]]}},"keywords":{}}],["codespec(sync_mode='git",{"_index":2568,"title":{},"content":{"328":{"position":[[1070,25]]},"809":{"position":[[1090,25]]}},"keywords":{}}],["collabor",{"_index":1305,"title":{},"content":{"101":{"position":[[451,11]]},"615":{"position":[[451,11]]}},"keywords":{}}],["collect",{"_index":477,"title":{},"content":{"53":{"position":[[568,12]]},"181":{"position":[[161,11]]},"211":{"position":[[1011,7]]},"688":{"position":[[161,11]]},"706":{"position":[[1011,7]]}},"keywords":{}}],["collect(collectors.toset",{"_index":2947,"title":{},"content":{"439":{"position":[[435,29],[653,30]]}},"keywords":{}}],["column",{"_index":1169,"title":{},"content":{"91":{"position":[[201,8]]},"92":{"position":[[729,7]]},"605":{"position":[[201,8]]},"606":{"position":[[729,7]]}},"keywords":{}}],["com",{"_index":1083,"title":{},"content":{"90":{"position":[[221,6]]},"604":{"position":[[221,6]]}},"keywords":{}}],["combin",{"_index":1465,"title":{},"content":{"112":{"position":[[2089,12]]},"184":{"position":[[238,8]]},"596":{"position":[[2089,12]]},"712":{"position":[[238,8]]}},"keywords":{}}],["comm",{"_index":3127,"title":{},"content":{"484":{"position":[[941,6]]},"947":{"position":[[941,6]]}},"keywords":{}}],["command",{"_index":50,"title":{},"content":{"4":{"position":[[44,8]]},"102":{"position":[[65,8],[83,8]]},"117":{"position":[[909,7]]},"134":{"position":[[2065,8]]},"181":{"position":[[567,7]]},"207":{"position":[[557,9]]},"246":{"position":[[5,7]]},"252":{"position":[[1853,7]]},"289":{"position":[[1088,8]]},"306":{"position":[[446,7]]},"310":{"position":[[126,9]]},"314":{"position":[[1093,7]]},"316":{"position":[[158,8]]},"318":{"position":[[43,8]]},"319":{"position":[[18,8]]},"320":{"position":[[71,8]]},"365":{"position":[[452,8],[1082,8]]},"409":{"position":[[996,8],[1295,8]]},"438":{"position":[[298,7]]},"443":{"position":[[38,7]]},"450":{"position":[[80,7]]},"454":{"position":[[86,7]]},"464":{"position":[[44,8]]},"482":{"position":[[156,8]]},"483":{"position":[[51,7]]},"495":{"position":[[745,8]]},"601":{"position":[[909,7]]},"616":{"position":[[65,8],[83,8]]},"662":{"position":[[2065,8]]},"688":{"position":[[567,7]]},"702":{"position":[[557,9]]},"749":{"position":[[5,7]]},"752":{"position":[[1088,8]]},"757":{"position":[[446,7]]},"782":{"position":[[126,9]]},"786":{"position":[[1093,7]]},"788":{"position":[[864,7]]},"793":{"position":[[158,8]]},"795":{"position":[[43,8]]},"796":{"position":[[18,8]]},"797":{"position":[[71,8]]},"839":{"position":[[452,8],[1082,8]]},"862":{"position":[[996,8],[1295,8]]},"922":{"position":[[298,7]]},"945":{"position":[[156,8]]},"946":{"position":[[51,7]]},"950":{"position":[[1337,8]]},"952":{"position":[[80,7]]},"957":{"position":[[82,7]]},"960":{"position":[[154,7],[379,7]]},"961":{"position":[[739,7]]},"963":{"position":[[220,7],[523,7]]},"979":{"position":[[513,8]]},"980":{"position":[[1027,7]]},"985":{"position":[[887,7]]},"990":{"position":[[1181,7]]}},"keywords":{}}],["commandlin",{"_index":1563,"title":{},"content":{"129":{"position":[[393,12]]},"636":{"position":[[393,12]]}},"keywords":{}}],["comment",{"_index":884,"title":{"70":{"position":[[23,8]]},"579":{"position":[[23,8]]}},"content":{"69":{"position":[[29,7],[127,7],[548,10]]},"70":{"position":[[125,9]]},"77":{"position":[[326,9]]},"260":{"position":[[1309,8],[1331,7]]},"502":{"position":[[617,7],[702,7]]},"522":{"position":[[335,7]]},"578":{"position":[[29,7],[127,7],[548,10]]},"579":{"position":[[125,9]]},"586":{"position":[[326,9]]}},"keywords":{}}],["commit",{"_index":549,"title":{"63":{"position":[[24,7]]},"66":{"position":[[52,6]]},"76":{"position":[[0,6]]},"84":{"position":[[7,6]]},"572":{"position":[[24,7]]},"575":{"position":[[52,6]]},"585":{"position":[[0,6]]},"591":{"position":[[7,6]]}},"content":{"53":{"position":[[2250,6],[2466,6],[7526,6],[7555,6],[8852,9],[9029,9],[9996,6],[10143,6]]},"63":{"position":[[100,7],[136,6],[173,8],[207,6]]},"64":{"position":[[196,8],[221,6]]},"66":{"position":[[80,7]]},"70":{"position":[[9,7]]},"73":{"position":[[452,6]]},"74":{"position":[[291,6],[595,7],[708,7]]},"84":{"position":[[11,6]]},"86":{"position":[[300,6]]},"210":{"position":[[272,6]]},"242":{"position":[[170,10]]},"278":{"position":[[379,6]]},"290":{"position":[[12,6]]},"572":{"position":[[100,7],[136,6],[173,8],[207,6]]},"573":{"position":[[196,8],[221,6]]},"575":{"position":[[80,7]]},"579":{"position":[[9,7]]},"582":{"position":[[452,6]]},"583":{"position":[[291,6],[595,7],[708,7]]},"591":{"position":[[11,6]]},"593":{"position":[[300,6]]},"705":{"position":[[272,6]]},"745":{"position":[[170,10]]},"753":{"position":[[12,6]]}},"keywords":{}}],["committ",{"_index":521,"title":{"54":{"position":[[16,9]]},"72":{"position":[[27,10]]},"73":{"position":[[4,10]]},"78":{"position":[[14,9]]},"79":{"position":[[43,9]]},"83":{"position":[[18,10]]},"581":{"position":[[27,10]]},"582":{"position":[[4,10]]},"590":{"position":[[18,10]]}},"content":{"53":{"position":[[1633,10],[1713,10],[1738,10],[1805,10],[1871,10],[1959,9],[2070,9],[2211,9],[2565,10],[2712,10],[2845,9],[2911,10],[2924,9],[3225,9],[3640,9],[3673,9],[7169,10],[8867,10],[8971,11],[9659,9],[9683,9],[9758,9],[9779,9],[9880,9],[9962,9],[10109,9],[10302,9]]},"54":{"position":[[80,9],[213,9],[401,10],[599,10],[650,9],[725,9],[2390,9],[2533,9]]},"69":{"position":[[261,9],[299,9],[533,11]]},"70":{"position":[[135,10]]},"73":{"position":[[4,10],[61,9],[97,9],[119,9],[161,9]]},"74":{"position":[[10,10],[151,9],[185,9],[475,10],[654,9]]},"75":{"position":[[92,10],[217,9],[344,9]]},"77":{"position":[[39,11],[190,10],[373,10]]},"79":{"position":[[648,9],[2208,9]]},"83":{"position":[[174,9],[310,9],[501,9]]},"84":{"position":[[47,11]]},"441":{"position":[[21,9]]},"578":{"position":[[261,9],[299,9],[533,11]]},"579":{"position":[[135,10]]},"582":{"position":[[4,10],[61,9],[97,9],[119,9],[161,9]]},"583":{"position":[[10,10],[151,9],[185,9],[475,10],[654,9]]},"584":{"position":[[92,10],[217,9],[344,9]]},"586":{"position":[[39,11],[190,10],[373,10]]},"590":{"position":[[174,9],[310,9]]},"591":{"position":[[47,11]]},"925":{"position":[[21,9]]}},"keywords":{}}],["committership",{"_index":1040,"title":{},"content":{"83":{"position":[[136,14]]},"590":{"position":[[136,14]]}},"keywords":{}}],["committersmaintain",{"_index":607,"title":{},"content":{"53":{"position":[[4346,21]]}},"keywords":{}}],["common",{"_index":577,"title":{"155":{"position":[[0,6]]},"297":{"position":[[15,7]]},"655":{"position":[[0,6]]},"764":{"position":[[15,7]]}},"content":{"53":{"position":[[3351,6]]},"96":{"position":[[241,6]]},"106":{"position":[[454,6]]},"113":{"position":[[226,6]]},"130":{"position":[[377,6]]},"136":{"position":[[439,6]]},"148":{"position":[[10,6],[169,14],[730,13]]},"155":{"position":[[57,14]]},"313":{"position":[[995,6]]},"597":{"position":[[226,6]]},"610":{"position":[[241,6]]},"620":{"position":[[454,6]]},"637":{"position":[[377,6]]},"648":{"position":[[10,6],[169,14],[730,13]]},"655":{"position":[[57,14]]},"664":{"position":[[439,6]]},"785":{"position":[[995,6]]},"788":{"position":[[13,6]]},"791":{"position":[[2070,6],[2120,6],[2715,6],[2928,6],[3012,6],[4625,6],[5530,6],[9343,7],[9443,6],[10777,7],[10870,6],[13812,6],[15225,6],[17912,6],[17962,6],[18557,6],[18770,6],[18836,6],[20449,6],[21354,6],[25061,7],[25161,6],[26495,7],[26588,6],[29361,6],[30774,6]]},"969":{"position":[[642,6]]}},"keywords":{}}],["common_4.3.3",{"_index":3615,"title":{},"content":{"791":{"position":[[9384,12],[25102,12]]}},"keywords":{}}],["common_6.2u5",{"_index":3631,"title":{},"content":{"791":{"position":[[10820,12],[26538,12]]}},"keywords":{}}],["commonli",{"_index":1889,"title":{},"content":{"186":{"position":[[972,8]]},"500":{"position":[[158,8]]},"714":{"position":[[972,8]]}},"keywords":{}}],["commun",{"_index":510,"title":{"80":{"position":[[17,9]]},"81":{"position":[[0,13]]},"85":{"position":[[0,13]]},"281":{"position":[[22,9]]},"587":{"position":[[17,9]]},"588":{"position":[[0,13]]},"592":{"position":[[0,13]]}},"content":{"53":{"position":[[1336,9],[7322,10]]},"54":{"position":[[26,9],[336,9],[1878,9],[2058,9],[2464,10],[2522,10],[2827,10]]},"79":{"position":[[80,9]]},"81":{"position":[[25,9]]},"85":{"position":[[0,13],[35,9]]},"98":{"position":[[298,9],[543,9]]},"129":{"position":[[423,9]]},"201":{"position":[[49,11]]},"208":{"position":[[82,11]]},"280":{"position":[[25,10]]},"281":{"position":[[1306,10],[1475,10]]},"286":{"position":[[302,9],[452,10]]},"439":{"position":[[73,11]]},"588":{"position":[[25,9]]},"592":{"position":[[0,13],[35,9]]},"612":{"position":[[298,9],[543,9]]},"636":{"position":[[423,9]]},"696":{"position":[[49,11]]},"703":{"position":[[82,11]]},"923":{"position":[[73,11]]},"992":{"position":[[159,10]]}},"keywords":{}}],["communication=tf.distribute.experimental.collectivecommunication.auto",{"_index":2672,"title":{},"content":{"343":{"position":[[1426,70]]},"817":{"position":[[1444,70]]}},"keywords":{}}],["compani",{"_index":1077,"title":{},"content":{"90":{"position":[[58,9],[211,9],[1613,7],[2809,9]]},"91":{"position":[[679,10]]},"93":{"position":[[525,7]]},"604":{"position":[[58,9],[211,9],[1613,7],[2809,9]]},"605":{"position":[[679,10]]},"607":{"position":[[525,7]]}},"keywords":{}}],["company'",{"_index":1228,"title":{},"content":{"93":{"position":[[766,9]]},"607":{"position":[[766,9]]}},"keywords":{}}],["company.answ",{"_index":1130,"title":{},"content":{"90":{"position":[[1661,14]]},"604":{"position":[[1661,14]]}},"keywords":{}}],["compar",{"_index":876,"title":{},"content":{"67":{"position":[[69,7]]},"401":{"position":[[479,7]]},"576":{"position":[[69,7]]},"820":{"position":[[130,7],[208,7]]},"890":{"position":[[479,7]]}},"keywords":{}}],["compat",{"_index":2601,"title":{"344":{"position":[[26,10]]},"818":{"position":[[26,10]]}},"content":{"338":{"position":[[43,10]]},"502":{"position":[[3440,10]]},"812":{"position":[[43,10]]}},"keywords":{}}],["compil",{"_index":2148,"title":{"266":{"position":[[3,7]]},"276":{"position":[[15,8]]}},"content":{"254":{"position":[[296,8]]},"267":{"position":[[162,12]]},"268":{"position":[[100,12]]},"270":{"position":[[0,7],[307,7],[351,8]]},"289":{"position":[[1102,7]]},"305":{"position":[[260,7]]},"441":{"position":[[230,9]]},"752":{"position":[[1102,7]]},"756":{"position":[[260,7]]},"777":{"position":[[279,8]]},"925":{"position":[[230,9]]}},"keywords":{}}],["complet",{"_index":741,"title":{"251":{"position":[[36,8]]}},"content":{"54":{"position":[[36,10],[2134,8]]},"79":{"position":[[1821,10],[2155,10]]},"99":{"position":[[397,9]]},"153":{"position":[[383,8]]},"186":{"position":[[842,10]]},"189":{"position":[[42,8]]},"613":{"position":[[397,9]]},"653":{"position":[[383,8]]},"714":{"position":[[842,10]]},"717":{"position":[[42,8]]},"791":{"position":[[16192,8]]}},"keywords":{}}],["complex",{"_index":1187,"title":{"92":{"position":[[8,7]]},"606":{"position":[[8,7]]}},"content":{"92":{"position":[[8,7]]},"117":{"position":[[48,12],[146,13]]},"177":{"position":[[382,10]]},"212":{"position":[[34,10]]},"601":{"position":[[48,12],[146,13]]},"606":{"position":[[8,7]]},"684":{"position":[[382,10]]},"707":{"position":[[34,10]]},"791":{"position":[[16031,9]]}},"keywords":{}}],["compli",{"_index":1256,"title":{"95":{"position":[[8,6]]},"609":{"position":[[8,6]]}},"content":{},"keywords":{}}],["compliant",{"_index":2078,"title":{"250":{"position":[[42,9]]}},"content":{},"keywords":{}}],["compon",{"_index":1071,"title":{"94":{"position":[[72,10]]},"123":{"position":[[24,10]]},"154":{"position":[[35,10]]},"163":{"position":[[17,10]]},"608":{"position":[[72,10]]},"630":{"position":[[24,10]]},"654":{"position":[[35,10]]},"670":{"position":[[17,10]]}},"content":{"89":{"position":[[292,11]]},"94":{"position":[[427,10]]},"110":{"position":[[1500,9],[1534,10]]},"135":{"position":[[145,10]]},"139":{"position":[[122,11],[182,11]]},"161":{"position":[[709,10],[729,9]]},"173":{"position":[[41,11]]},"177":{"position":[[184,10]]},"439":{"position":[[134,10]]},"603":{"position":[[292,11]]},"608":{"position":[[427,10]]},"624":{"position":[[1505,9],[1539,10]]},"639":{"position":[[122,11],[182,11]]},"663":{"position":[[145,10]]},"668":{"position":[[709,10],[729,9]]},"680":{"position":[[41,11]]},"684":{"position":[[184,10]]}},"keywords":{}}],["components/servic",{"_index":1837,"title":{"173":{"position":[[0,19]]},"680":{"position":[[0,19]]}},"content":{},"keywords":{}}],["compress",{"_index":3894,"title":{},"content":{"954":{"position":[[1380,8]]}},"keywords":{}}],["comput",{"_index":1394,"title":{"151":{"position":[[0,7]]},"169":{"position":[[0,7]]},"651":{"position":[[0,7]]},"676":{"position":[[0,7]]}},"content":{"106":{"position":[[227,7]]},"110":{"position":[[618,8],[1068,7],[1109,7],[1238,8]]},"151":{"position":[[183,7],[202,7],[265,7],[326,7]]},"154":{"position":[[94,8]]},"158":{"position":[[1281,7]]},"160":{"position":[[306,7],[537,7],[898,7],[997,7],[1138,7]]},"163":{"position":[[405,8]]},"184":{"position":[[74,9],[136,10],[274,10]]},"620":{"position":[[227,7]]},"624":{"position":[[618,8],[1073,7],[1114,7],[1243,8]]},"651":{"position":[[183,7],[202,7],[265,7],[326,7]]},"654":{"position":[[94,8]]},"658":{"position":[[1281,7]]},"667":{"position":[[306,7],[537,7],[898,7],[998,7],[1139,7]]},"670":{"position":[[405,8]]},"712":{"position":[[74,9],[136,10],[274,10]]}},"keywords":{}}],["compute/storag",{"_index":1393,"title":{},"content":{"106":{"position":[[154,15]]},"620":{"position":[[154,15]]}},"keywords":{}}],["computeclust",{"_index":1769,"title":{},"content":{"154":{"position":[[606,15]]},"654":{"position":[[606,15]]}},"keywords":{}}],["computeclustermanag",{"_index":1739,"title":{},"content":{"151":{"position":[[439,21]]},"651":{"position":[[439,21]]}},"keywords":{}}],["conc",{"_index":658,"title":{},"content":{"53":{"position":[[6652,9]]}},"keywords":{}}],["concept",{"_index":1113,"title":{},"content":{"90":{"position":[[995,7],[1787,9]]},"604":{"position":[[995,7],[1787,9]]}},"keywords":{}}],["concurr",{"_index":1548,"title":{},"content":{"122":{"position":[[9,10],[132,10]]},"629":{"position":[[9,10],[132,10]]}},"keywords":{}}],["conda",{"_index":1489,"title":{},"content":{"115":{"position":[[91,5],[281,5],[322,6],[374,5],[464,5],[491,5],[798,5],[1276,5]]},"116":{"position":[[232,5],[265,5],[370,5],[401,5]]},"117":{"position":[[294,5],[498,5],[1309,5]]},"128":{"position":[[400,5]]},"129":{"position":[[466,5]]},"133":{"position":[[776,5]]},"146":{"position":[[203,5]]},"350":{"position":[[391,5]]},"435":{"position":[[98,5],[141,5],[186,5]]},"599":{"position":[[91,5],[281,5],[322,6],[374,5],[464,5],[491,5],[798,5],[1276,5]]},"600":{"position":[[232,5],[265,5],[370,5],[401,5]]},"601":{"position":[[294,5],[498,5],[1309,5]]},"635":{"position":[[400,5]]},"636":{"position":[[466,5]]},"646":{"position":[[203,5]]},"661":{"position":[[776,5]]},"824":{"position":[[391,5]]},"919":{"position":[[98,5],[141,5],[186,5]]},"954":{"position":[[1433,12]]}},"keywords":{}}],["conda_environ",{"_index":1691,"title":{},"content":{"146":{"position":[[173,17],[592,17]]},"646":{"position":[[173,17],[592,17]]}},"keywords":{}}],["condadep",{"_index":163,"title":{},"content":{"9":{"position":[[246,19],[833,19]]},"10":{"position":[[384,19],[870,19]]},"11":{"position":[[406,19]]},"12":{"position":[[264,19],[754,19],[929,20]]},"13":{"position":[[417,19]]},"350":{"position":[[345,17]]},"351":{"position":[[211,19],[807,20]]},"353":{"position":[[387,23],[685,20],[1279,23]]},"356":{"position":[[373,20]]},"359":{"position":[[220,19],[702,20]]},"362":{"position":[[376,20]]},"389":{"position":[[1007,23]]},"392":{"position":[[754,23]]},"395":{"position":[[742,23]]},"398":{"position":[[772,23]]},"538":{"position":[[246,19],[833,19]]},"539":{"position":[[384,19],[870,19]]},"540":{"position":[[406,19]]},"541":{"position":[[264,19],[754,19],[929,20]]},"542":{"position":[[417,19]]},"824":{"position":[[345,17]]},"825":{"position":[[211,19],[807,20]]},"827":{"position":[[387,23],[685,20],[1279,23]]},"830":{"position":[[373,20]]},"833":{"position":[[220,19],[702,20]]},"836":{"position":[[376,20]]},"878":{"position":[[1007,23]]},"881":{"position":[[754,23]]},"884":{"position":[[742,23]]},"887":{"position":[[772,23]]}},"keywords":{}}],["condaenviron",{"_index":1703,"title":{},"content":{"146":{"position":[[573,16]]},"646":{"position":[[573,16]]}},"keywords":{}}],["conduct",{"_index":810,"title":{},"content":{"56":{"position":[[141,7]]},"85":{"position":[[72,8]]},"565":{"position":[[141,7]]},"592":{"position":[[72,8]]}},"keywords":{}}],["conf",{"_index":4274,"title":{},"content":{"980":{"position":[[788,4]]},"981":{"position":[[1113,4]]},"985":{"position":[[645,4]]},"986":{"position":[[823,4]]},"990":{"position":[[936,4]]},"991":{"position":[[987,4]]}},"keywords":{}}],["config",{"_index":1376,"title":{"443":{"position":[[0,6]]},"445":{"position":[[13,6]]},"446":{"position":[[4,6]]},"447":{"position":[[4,6]]}},"content":{"103":{"position":[[385,7]]},"112":{"position":[[1074,7]]},"139":{"position":[[297,8]]},"180":{"position":[[208,6]]},"268":{"position":[[447,6]]},"444":{"position":[[10,6],[48,6],[84,6]]},"445":{"position":[[10,6]]},"446":{"position":[[10,6],[103,6]]},"447":{"position":[[10,6],[66,6]]},"495":{"position":[[277,6],[805,6],[826,7]]},"596":{"position":[[1074,7]]},"617":{"position":[[385,7]]},"639":{"position":[[297,8],[1212,8]]},"687":{"position":[[229,6]]},"791":{"position":[[15257,6],[30806,6]]},"963":{"position":[[752,6]]},"965":{"position":[[678,7],[4929,7],[10157,7],[14435,7],[16232,7]]},"969":{"position":[[583,6]]}},"keywords":{}}],["config/checkstyle.xml",{"_index":907,"title":{},"content":{"71":{"position":[[137,21]]},"236":{"position":[[329,21]]},"580":{"position":[[137,21]]},"740":{"position":[[332,21]]}},"keywords":{}}],["configpath",{"_index":1856,"title":{},"content":{"180":{"position":[[182,10]]},"687":{"position":[[203,10]]}},"keywords":{}}],["configs.in",{"_index":1654,"title":{},"content":{"139":{"position":[[1207,10]]}},"keywords":{}}],["configs.support",{"_index":1336,"title":{},"content":{"102":{"position":[[1240,15]]},"616":{"position":[[1252,15]]}},"keywords":{}}],["configu",{"_index":2421,"title":{},"content":{"312":{"position":[[57,12]]},"784":{"position":[[57,12]]}},"keywords":{}}],["configur",{"_index":1564,"title":{"939":{"position":[[0,14]]}},"content":{"129":{"position":[[576,10]]},"148":{"position":[[822,13]]},"206":{"position":[[54,13]]},"207":{"position":[[145,13]]},"208":{"position":[[132,13]]},"233":{"position":[[52,13]]},"236":{"position":[[229,13]]},"259":{"position":[[71,13]]},"265":{"position":[[45,13]]},"313":{"position":[[109,10],[302,9],[1047,9]]},"314":{"position":[[659,13]]},"327":{"position":[[921,10]]},"335":{"position":[[99,13]]},"437":{"position":[[82,10],[220,9]]},"481":{"position":[[116,10]]},"492":{"position":[[26,13],[545,13],[925,13]]},"636":{"position":[[576,10]]},"648":{"position":[[822,13]]},"701":{"position":[[54,13]]},"702":{"position":[[145,13]]},"703":{"position":[[132,13]]},"737":{"position":[[52,13]]},"740":{"position":[[232,13]]},"777":{"position":[[1016,11]]},"785":{"position":[[109,10],[302,9],[1047,9]]},"786":{"position":[[659,13]]},"791":{"position":[[14719,14],[14829,13],[15951,13],[16004,13],[30268,14],[30378,13]]},"805":{"position":[[99,13]]},"921":{"position":[[82,10],[220,9]]},"939":{"position":[[103,14],[172,15],[811,16],[905,14],[948,15],[1572,16],[1629,9]]},"944":{"position":[[116,10]]},"963":{"position":[[88,9]]},"964":{"position":[[49,11]]},"965":{"position":[[26,10]]}},"keywords":{}}],["configurationfor",{"_index":3193,"title":{},"content":{"495":{"position":[[220,16]]}},"keywords":{}}],["confirm",{"_index":692,"title":{},"content":{"53":{"position":[[8265,9]]}},"keywords":{}}],["conflict",{"_index":97,"title":{},"content":{"4":{"position":[[650,9]]},"53":{"position":[[178,9]]},"464":{"position":[[650,9]]}},"keywords":{}}],["connect",{"_index":1546,"title":{"341":{"position":[[0,7]]},"406":{"position":[[0,7]]},"815":{"position":[[0,7]]},"895":{"position":[[0,7]]}},"content":{"121":{"position":[[720,7]]},"200":{"position":[[361,7]]},"208":{"position":[[626,7]]},"239":{"position":[[94,7]]},"327":{"position":[[1191,7]]},"445":{"position":[[120,13]]},"446":{"position":[[68,10]]},"471":{"position":[[155,10]]},"492":{"position":[[465,12]]},"628":{"position":[[720,7]]},"695":{"position":[[361,7]]},"703":{"position":[[626,7]]},"743":{"position":[[78,7]]},"808":{"position":[[842,7]]},"931":{"position":[[155,10]]}},"keywords":{}}],["connection.port",{"_index":2983,"title":{},"content":{"446":{"position":[[114,15]]},"447":{"position":[[77,15]]}},"keywords":{}}],["connection.port=8080",{"_index":2984,"title":{},"content":{"447":{"position":[[105,20]]}},"keywords":{}}],["consensu",{"_index":538,"title":{},"content":{"53":{"position":[[2022,9],[2311,9],[3511,9],[4487,9],[4753,9],[5654,10],[6747,9],[7689,9],[7710,9],[7784,9],[7801,9],[8942,9],[9722,9],[9817,9],[9914,9]]},"69":{"position":[[332,9]]},"578":{"position":[[332,9]]}},"keywords":{}}],["consent",{"_index":979,"title":{},"content":{"79":{"position":[[118,7]]}},"keywords":{}}],["consid",{"_index":542,"title":{"133":{"position":[[15,14]]},"661":{"position":[[15,14]]}},"content":{"53":{"position":[[2083,10],[4545,10],[6479,13],[10728,8]]},"136":{"position":[[466,8]]},"139":{"position":[[73,15]]},"178":{"position":[[0,11]]},"197":{"position":[[765,14]]},"211":{"position":[[1356,9]]},"639":{"position":[[73,15]]},"664":{"position":[[466,8]]},"685":{"position":[[0,11]]},"692":{"position":[[765,14]]},"706":{"position":[[1356,9]]},"964":{"position":[[0,11]]}},"keywords":{}}],["consist",{"_index":556,"title":{},"content":{"53":{"position":[[2501,10]]},"104":{"position":[[83,8]]},"139":{"position":[[100,8],[1128,8]]},"157":{"position":[[31,8]]},"160":{"position":[[669,8]]},"178":{"position":[[76,8]]},"212":{"position":[[334,11]]},"253":{"position":[[64,10]]},"260":{"position":[[91,10]]},"501":{"position":[[10,8]]},"502":{"position":[[112,8]]},"618":{"position":[[83,8]]},"639":{"position":[[100,8],[1133,8]]},"657":{"position":[[31,8]]},"667":{"position":[[669,8]]},"685":{"position":[[76,8]]},"707":{"position":[[334,11]]}},"keywords":{}}],["constraint",{"_index":1247,"title":{},"content":{"94":{"position":[[542,12]]},"139":{"position":[[1737,11]]},"140":{"position":[[1615,11]]},"608":{"position":[[542,12]]},"639":{"position":[[1750,11]]},"640":{"position":[[1615,11]]}},"keywords":{}}],["construct",{"_index":2185,"title":{},"content":{"260":{"position":[[1159,9]]}},"keywords":{}}],["consumpt",{"_index":2152,"title":{},"content":{"255":{"position":[[390,11]]}},"keywords":{}}],["contain",{"_index":91,"title":{"482":{"position":[[9,9]]},"484":{"position":[[28,10]]},"485":{"position":[[29,10]]},"945":{"position":[[9,9]]},"947":{"position":[[28,10]]},"948":{"position":[[29,10]]}},"content":{"4":{"position":[[559,7]]},"53":{"position":[[6110,7],[6814,7]]},"82":{"position":[[558,10]]},"90":{"position":[[1398,16]]},"99":{"position":[[580,9]]},"110":{"position":[[1566,9]]},"115":{"position":[[1302,10]]},"134":{"position":[[1015,9],[1221,9],[1908,11],[2259,11]]},"135":{"position":[[271,11]]},"148":{"position":[[358,10]]},"152":{"position":[[245,9]]},"160":{"position":[[1404,9],[1531,9]]},"186":{"position":[[875,10],[901,9]]},"187":{"position":[[78,10]]},"190":{"position":[[373,9]]},"197":{"position":[[21,8]]},"327":{"position":[[331,7]]},"365":{"position":[[666,9],[770,9]]},"404":{"position":[[57,10]]},"464":{"position":[[559,7]]},"476":{"position":[[284,10]]},"485":{"position":[[117,10]]},"488":{"position":[[115,9]]},"489":{"position":[[36,9]]},"589":{"position":[[558,10]]},"599":{"position":[[1302,10]]},"604":{"position":[[1398,16]]},"613":{"position":[[580,9]]},"624":{"position":[[1571,9]]},"648":{"position":[[358,10]]},"652":{"position":[[251,9]]},"662":{"position":[[1015,9],[1221,9],[1908,11],[2259,11]]},"663":{"position":[[271,11]]},"667":{"position":[[1406,9],[1533,9]]},"692":{"position":[[21,8]]},"714":{"position":[[875,10],[901,9]]},"715":{"position":[[78,10]]},"718":{"position":[[378,9]]},"808":{"position":[[331,7]]},"839":{"position":[[666,9],[770,9]]},"893":{"position":[[57,10]]},"948":{"position":[[117,10]]}},"keywords":{}}],["container,thi",{"_index":3358,"title":{},"content":{"788":{"position":[[667,14]]}},"keywords":{}}],["containerpath",{"_index":3196,"title":{},"content":{"495":{"position":[[509,14]]}},"keywords":{}}],["containerport",{"_index":2457,"title":{},"content":{"314":{"position":[[823,14]]},"495":{"position":[[560,14],[668,14]]},"786":{"position":[[823,14]]}},"keywords":{}}],["content",{"_index":153,"title":{"254":{"position":[[20,7]]}},"content":{"9":{"position":[[57,8]]},"12":{"position":[[67,8]]},"15":{"position":[[54,8]]},"18":{"position":[[47,8]]},"20":{"position":[[73,8]]},"22":{"position":[[56,8]]},"23":{"position":[[56,8]]},"26":{"position":[[64,8]]},"33":{"position":[[62,8]]},"38":{"position":[[54,8]]},"43":{"position":[[123,8]]},"44":{"position":[[55,8]]},"46":{"position":[[62,8]]},"49":{"position":[[72,8]]},"53":{"position":[[3532,7],[8928,8]]},"79":{"position":[[1810,7]]},"89":{"position":[[192,8]]},"134":{"position":[[2459,9]]},"136":{"position":[[146,8]]},"242":{"position":[[107,7]]},"250":{"position":[[83,7]]},"251":{"position":[[316,8]]},"254":{"position":[[126,7],[204,7]]},"255":{"position":[[193,7],[275,7]]},"257":{"position":[[76,7]]},"281":{"position":[[94,8],[1266,8]]},"286":{"position":[[219,8]]},"351":{"position":[[22,8]]},"359":{"position":[[23,8]]},"366":{"position":[[22,8]]},"369":{"position":[[22,8]]},"377":{"position":[[23,8]]},"389":{"position":[[22,8]]},"410":{"position":[[22,8]]},"415":{"position":[[23,8]]},"421":{"position":[[22,8]]},"538":{"position":[[57,8]]},"541":{"position":[[67,8]]},"544":{"position":[[54,8]]},"547":{"position":[[47,8]]},"549":{"position":[[73,8]]},"551":{"position":[[56,8]]},"552":{"position":[[56,8]]},"555":{"position":[[64,8]]},"560":{"position":[[54,8]]},"603":{"position":[[192,8]]},"662":{"position":[[2459,9]]},"664":{"position":[[146,8]]},"745":{"position":[[107,7]]},"825":{"position":[[22,8]]},"833":{"position":[[23,8]]},"840":{"position":[[22,8]]},"843":{"position":[[22,8]]},"851":{"position":[[23,8]]},"863":{"position":[[22,8]]},"868":{"position":[[23,8]]},"874":{"position":[[22,8]]},"878":{"position":[[22,8]]}},"keywords":{}}],["context",{"_index":1312,"title":{},"content":{"102":{"position":[[192,7]]},"616":{"position":[[192,7]]}},"keywords":{}}],["continu",{"_index":96,"title":{},"content":{"4":{"position":[[609,8]]},"53":{"position":[[9536,9]]},"213":{"position":[[245,8]]},"464":{"position":[[609,8]]},"484":{"position":[[909,8]]},"708":{"position":[[245,8]]},"947":{"position":[[909,8]]}},"keywords":{}}],["continuumio/anaconda3",{"_index":159,"title":{},"content":{"9":{"position":[[141,24],[728,24]]},"10":{"position":[[279,24]]},"11":{"position":[[301,24]]},"12":{"position":[[151,24],[641,24]]},"13":{"position":[[304,24]]},"351":{"position":[[106,24]]},"359":{"position":[[107,24]]},"538":{"position":[[141,24],[728,24]]},"539":{"position":[[279,24]]},"540":{"position":[[301,24]]},"541":{"position":[[151,24],[641,24]]},"542":{"position":[[304,24]]},"825":{"position":[[106,24]]},"833":{"position":[[107,24]]}},"keywords":{}}],["continuumio/miniconda",{"_index":184,"title":{},"content":{"10":{"position":[[763,24]]},"539":{"position":[[763,24]]}},"keywords":{}}],["contrast",{"_index":1581,"title":{},"content":{"132":{"position":[[1176,8]]},"660":{"position":[[1176,8]]}},"keywords":{}}],["contribut",{"_index":501,"title":{"55":{"position":[[7,10]]},"62":{"position":[[38,12]]},"82":{"position":[[11,12]]},"564":{"position":[[7,10]]},"571":{"position":[[38,12]]},"589":{"position":[[11,12]]}},"content":{"53":{"position":[[1173,10],[1454,12],[1577,13],[2138,12],[2956,12],[3042,12],[4602,12]]},"54":{"position":[[315,13],[430,11],[785,13],[825,13],[839,12],[869,12],[1047,13],[1990,12],[2196,10],[2747,14],[2807,12]]},"56":{"position":[[52,12]]},"63":{"position":[[240,12]]},"75":{"position":[[185,10]]},"79":{"position":[[57,13],[295,13]]},"82":{"position":[[586,13],[642,12],[697,12]]},"86":{"position":[[35,10],[228,10]]},"233":{"position":[[94,10]]},"565":{"position":[[52,12]]},"572":{"position":[[240,12]]},"584":{"position":[[185,10]]},"589":{"position":[[586,13],[642,12],[697,12]]},"593":{"position":[[35,10],[228,10]]},"737":{"position":[[94,10]]}},"keywords":{}}],["contributor",{"_index":514,"title":{"77":{"position":[[7,12]]},"586":{"position":[[7,12]]}},"content":{"53":{"position":[[1411,12],[1535,11],[2512,13],[2753,11]]},"54":{"position":[[502,11],[584,11],[702,13],[1840,12]]},"61":{"position":[[4,12]]},"75":{"position":[[130,12]]},"77":{"position":[[51,13],[81,12],[103,12],[245,12]]},"79":{"position":[[90,12]]},"82":{"position":[[184,13],[323,12]]},"83":{"position":[[48,12],[93,12]]},"286":{"position":[[435,12]]},"570":{"position":[[4,12]]},"584":{"position":[[130,12]]},"586":{"position":[[51,13],[81,12],[103,12],[245,12]]},"589":{"position":[[184,13],[323,12]]},"590":{"position":[[48,12],[93,12]]}},"keywords":{}}],["contributor]\".check",{"_index":841,"title":{},"content":{"61":{"position":[[167,19]]},"570":{"position":[[167,19]]}},"keywords":{}}],["control",{"_index":60,"title":{"107":{"position":[[18,7]]},"621":{"position":[[18,7]]}},"content":{"4":{"position":[[153,10]]},"76":{"position":[[43,8]]},"107":{"position":[[40,8]]},"133":{"position":[[570,8]]},"134":{"position":[[230,8]]},"160":{"position":[[735,8]]},"201":{"position":[[346,8]]},"314":{"position":[[364,10],[788,7],[924,10]]},"340":{"position":[[132,10]]},"464":{"position":[[153,10]]},"495":{"position":[[384,7]]},"585":{"position":[[43,8]]},"621":{"position":[[40,8]]},"661":{"position":[[570,8]]},"662":{"position":[[230,8]]},"667":{"position":[[735,8]]},"696":{"position":[[346,8]]},"786":{"position":[[364,10],[788,7],[924,10]]},"814":{"position":[[134,10]]}},"keywords":{}}],["conv",{"_index":1791,"title":{},"content":{"158":{"position":[[22,10]]},"658":{"position":[[22,10]]}},"keywords":{}}],["conveni",{"_index":3340,"title":{},"content":{"779":{"position":[[413,11]]},"958":{"position":[[52,12]]},"973":{"position":[[52,12]]}},"keywords":{}}],["convent",{"_index":898,"title":{"71":{"position":[[5,10]]},"580":{"position":[[5,10]]}},"content":{},"keywords":{}}],["convention)cr",{"_index":861,"title":{},"content":{"63":{"position":[[82,17]]},"572":{"position":[[82,17]]}},"keywords":{}}],["convert",{"_index":1279,"title":{},"content":{"98":{"position":[[319,7]]},"158":{"position":[[1126,8]]},"161":{"position":[[870,10]]},"612":{"position":[[319,7]]},"658":{"position":[[1126,8]]},"668":{"position":[[870,10]]}},"keywords":{}}],["copi",{"_index":24,"title":{},"content":{"2":{"position":[[105,4]]},"3":{"position":[[116,4],[242,4]]},"4":{"position":[[108,4],[462,4],[864,4],[1099,4]]},"5":{"position":[[295,4]]},"7":{"position":[[24,4]]},"9":{"position":[[546,4],[1093,4]]},"10":{"position":[[95,4],[967,4]]},"11":{"position":[[119,4],[666,4]]},"12":{"position":[[442,4],[875,4]]},"13":{"position":[[122,4],[538,4]]},"15":{"position":[[1090,4]]},"16":{"position":[[89,4]]},"17":{"position":[[117,4]]},"18":{"position":[[1108,4]]},"19":{"position":[[120,4]]},"20":{"position":[[292,4]]},"22":{"position":[[586,4],[1305,4]]},"23":{"position":[[557,4],[1423,4]]},"24":{"position":[[93,4],[1395,4]]},"25":{"position":[[128,4],[847,4]]},"26":{"position":[[624,4],[1156,4]]},"27":{"position":[[131,4],[850,4]]},"28":{"position":[[103,4],[549,4]]},"29":{"position":[[138,4],[2680,4]]},"31":{"position":[[115,4],[1727,4]]},"32":{"position":[[127,4],[641,4]]},"33":{"position":[[272,4],[432,4]]},"34":{"position":[[132,4],[292,4]]},"35":{"position":[[180,4],[342,4]]},"36":{"position":[[184,4],[337,4]]},"38":{"position":[[363,4],[1203,4]]},"39":{"position":[[102,4],[947,4]]},"40":{"position":[[99,4],[936,4]]},"41":{"position":[[105,4],[1003,4]]},"43":{"position":[[244,4],[390,4]]},"44":{"position":[[176,4],[322,4]]},"46":{"position":[[238,4],[387,4]]},"47":{"position":[[105,4],[765,4]]},"48":{"position":[[125,4],[457,4]]},"49":{"position":[[228,4],[391,4]]},"50":{"position":[[130,4],[293,4]]},"51":{"position":[[162,4],[315,4]]},"52":{"position":[[166,4],[331,4]]},"60":{"position":[[629,4]]},"62":{"position":[[254,4]]},"63":{"position":[[260,4]]},"64":{"position":[[83,4]]},"65":{"position":[[41,4]]},"79":{"position":[[1546,4]]},"86":{"position":[[521,4]]},"91":{"position":[[541,4]]},"102":{"position":[[1821,4]]},"110":{"position":[[1063,4]]},"112":{"position":[[741,4],[1978,4]]},"113":{"position":[[255,4]]},"115":{"position":[[783,4],[1143,4]]},"117":{"position":[[730,4],[1084,4],[1198,4]]},"125":{"position":[[549,4]]},"132":{"position":[[941,4]]},"134":{"position":[[1540,4],[2183,4]]},"139":{"position":[[1069,4]]},"140":{"position":[[515,4],[1479,4]]},"146":{"position":[[612,4]]},"147":{"position":[[560,4],[1067,4],[1577,4]]},"154":{"position":[[1126,4]]},"157":{"position":[[753,4],[1271,4]]},"158":{"position":[[930,4],[2079,4],[2451,4],[2666,4]]},"160":{"position":[[588,4]]},"161":{"position":[[519,4]]},"162":{"position":[[791,4]]},"163":{"position":[[806,4]]},"178":{"position":[[626,4]]},"181":{"position":[[361,4]]},"219":{"position":[[359,4],[441,4],[524,4]]},"220":{"position":[[49,4]]},"221":{"position":[[297,4]]},"238":{"position":[[226,4],[503,4],[639,4]]},"239":{"position":[[218,4],[277,4]]},"240":{"position":[[248,4],[365,4]]},"244":{"position":[[89,4]]},"245":{"position":[[92,4]]},"246":{"position":[[158,4]]},"249":{"position":[[90,4]]},"252":{"position":[[145,4],[1830,4],[2424,4],[2790,4]]},"253":{"position":[[545,4]]},"259":{"position":[[178,4]]},"260":{"position":[[2743,4]]},"261":{"position":[[498,4]]},"263":{"position":[[429,7],[1051,4],[1746,4]]},"265":{"position":[[1007,4]]},"267":{"position":[[313,4]]},"268":{"position":[[480,4]]},"269":{"position":[[357,4]]},"270":{"position":[[500,4],[608,4]]},"271":{"position":[[202,4]]},"272":{"position":[[123,4]]},"274":{"position":[[298,4]]},"275":{"position":[[49,4]]},"277":{"position":[[250,4]]},"278":{"position":[[95,4],[467,4]]},"281":{"position":[[1148,4],[1611,4]]},"286":{"position":[[626,4]]},"289":{"position":[[185,4],[782,4],[1054,4],[1331,4]]},"306":{"position":[[270,4],[424,4],[515,4]]},"310":{"position":[[110,4]]},"311":{"position":[[16,4]]},"312":{"position":[[41,4]]},"313":{"position":[[573,4],[805,4],[1002,4],[1035,4],[1299,4]]},"314":{"position":[[286,4],[884,4],[1044,4],[1185,4]]},"316":{"position":[[674,4]]},"318":{"position":[[165,4]]},"319":{"position":[[254,4]]},"320":{"position":[[234,4]]},"321":{"position":[[14,4]]},"323":{"position":[[226,4]]},"328":{"position":[[1385,4]]},"330":{"position":[[505,4]]},"332":{"position":[[289,4]]},"333":{"position":[[315,4]]},"338":{"position":[[225,4]]},"339":{"position":[[68,4],[195,4],[387,4]]},"340":{"position":[[57,4],[663,4]]},"341":{"position":[[225,4]]},"343":{"position":[[2301,4]]},"344":{"position":[[142,4]]},"349":{"position":[[25,4]]},"351":{"position":[[511,4],[1186,4]]},"352":{"position":[[24,4]]},"353":{"position":[[60,4],[1385,4]]},"354":{"position":[[31,4]]},"356":{"position":[[77,4],[752,4]]},"357":{"position":[[33,4]]},"359":{"position":[[398,4],[891,4]]},"360":{"position":[[34,4]]},"362":{"position":[[80,4],[754,4]]},"364":{"position":[[24,4]]},"366":{"position":[[552,4],[1663,4]]},"367":{"position":[[24,4]]},"369":{"position":[[523,4],[1755,4]]},"370":{"position":[[23,4]]},"371":{"position":[[59,4],[2237,4]]},"372":{"position":[[28,4]]},"374":{"position":[[89,4],[1172,4]]},"375":{"position":[[30,4]]},"377":{"position":[[583,4],[1694,4]]},"378":{"position":[[31,4]]},"380":{"position":[[92,4],[1175,4]]},"381":{"position":[[28,4]]},"382":{"position":[[64,4],[341,4]]},"383":{"position":[[33,4]]},"385":{"position":[[94,4],[368,4]]},"387":{"position":[[22,4]]},"389":{"position":[[331,4],[1199,4]]},"390":{"position":[[21,4]]},"392":{"position":[[93,4],[947,4]]},"393":{"position":[[26,4]]},"395":{"position":[[85,4],[934,4]]},"396":{"position":[[29,4]]},"398":{"position":[[88,4],[964,4]]},"401":{"position":[[385,4]]},"405":{"position":[[429,4]]},"408":{"position":[[22,4]]},"410":{"position":[[1058,4],[3060,4]]},"411":{"position":[[21,4]]},"412":{"position":[[57,4],[2063,4]]},"413":{"position":[[29,4]]},"415":{"position":[[1084,4],[3084,4]]},"416":{"position":[[30,4]]},"418":{"position":[[81,4],[2080,4]]},"419":{"position":[[40,4]]},"421":{"position":[[241,4],[1353,4]]},"424":{"position":[[729,4]]},"425":{"position":[[676,4]]},"426":{"position":[[216,4]]},"427":{"position":[[188,4]]},"428":{"position":[[205,4]]},"429":{"position":[[316,4]]},"430":{"position":[[175,4]]},"431":{"position":[[285,4]]},"435":{"position":[[660,4]]},"436":{"position":[[128,4]]},"437":{"position":[[177,4],[437,4],[567,4]]},"438":{"position":[[156,4],[215,4],[277,4]]},"439":{"position":[[684,4],[1035,4],[1372,4],[1393,4]]},"440":{"position":[[293,4]]},"441":{"position":[[225,4],[353,4],[456,4],[570,4]]},"444":{"position":[[22,4],[67,4]]},"445":{"position":[[22,4],[261,4]]},"446":{"position":[[46,4],[135,4]]},"447":{"position":[[38,4],[93,4],[126,4]]},"449":{"position":[[24,4]]},"450":{"position":[[37,4]]},"451":{"position":[[40,4]]},"453":{"position":[[26,4]]},"454":{"position":[[41,4]]},"455":{"position":[[63,4]]},"457":{"position":[[27,4]]},"458":{"position":[[45,4]]},"459":{"position":[[47,4]]},"462":{"position":[[105,4]]},"463":{"position":[[116,4],[242,4]]},"464":{"position":[[108,4],[462,4],[864,4],[1099,4]]},"465":{"position":[[295,4]]},"467":{"position":[[24,4]]},"479":{"position":[[1044,4]]},"481":{"position":[[1725,4],[1934,4],[2085,4]]},"482":{"position":[[534,4]]},"483":{"position":[[80,4]]},"484":{"position":[[274,4],[1036,4],[1267,4]]},"488":{"position":[[433,4]]},"489":{"position":[[86,4],[143,4],[358,4]]},"490":{"position":[[60,4],[316,4]]},"495":{"position":[[718,4],[890,4]]},"496":{"position":[[257,4],[525,4],[681,4]]},"538":{"position":[[546,4],[1093,4]]},"539":{"position":[[95,4],[967,4]]},"540":{"position":[[119,4],[666,4]]},"541":{"position":[[442,4],[875,4]]},"542":{"position":[[122,4],[538,4]]},"544":{"position":[[1090,4]]},"545":{"position":[[89,4]]},"546":{"position":[[117,4]]},"547":{"position":[[1108,4]]},"548":{"position":[[120,4]]},"549":{"position":[[292,4]]},"551":{"position":[[586,4],[1305,4]]},"552":{"position":[[557,4],[1423,4]]},"553":{"position":[[93,4],[1395,4]]},"554":{"position":[[128,4],[847,4]]},"555":{"position":[[624,4],[1156,4]]},"556":{"position":[[131,4],[850,4]]},"557":{"position":[[103,4],[549,4]]},"558":{"position":[[138,4],[2680,4]]},"560":{"position":[[363,4],[1203,4]]},"561":{"position":[[102,4],[947,4]]},"562":{"position":[[99,4],[936,4]]},"563":{"position":[[105,4],[1003,4]]},"569":{"position":[[629,4]]},"571":{"position":[[254,4]]},"572":{"position":[[260,4]]},"573":{"position":[[83,4]]},"574":{"position":[[41,4]]},"596":{"position":[[741,4],[1978,4]]},"597":{"position":[[255,4]]},"599":{"position":[[783,4],[1143,4]]},"601":{"position":[[730,4],[1084,4],[1198,4]]},"605":{"position":[[541,4]]},"616":{"position":[[1833,4]]},"624":{"position":[[1068,4]]},"632":{"position":[[549,4]]},"639":{"position":[[1074,4]]},"640":{"position":[[515,4],[1479,4]]},"646":{"position":[[612,4]]},"647":{"position":[[560,4],[1067,4],[1577,4]]},"654":{"position":[[1131,4]]},"657":{"position":[[753,4],[1271,4]]},"658":{"position":[[930,4],[2079,4],[2451,4],[2666,4]]},"660":{"position":[[941,4]]},"662":{"position":[[1540,4],[2183,4]]},"667":{"position":[[588,4]]},"668":{"position":[[519,4]]},"669":{"position":[[1044,4]]},"670":{"position":[[806,4]]},"685":{"position":[[626,4]]},"688":{"position":[[361,4]]},"733":{"position":[[359,4],[441,4],[524,4]]},"734":{"position":[[80,4],[170,4],[271,4],[374,4],[475,4],[576,4],[649,4]]},"735":{"position":[[297,4]]},"742":{"position":[[226,4],[503,4],[605,4]]},"743":{"position":[[202,4],[261,4]]},"744":{"position":[[248,4],[365,4],[636,4],[856,4],[919,4],[1108,4],[1349,4],[1621,4],[1744,4]]},"747":{"position":[[89,4]]},"748":{"position":[[92,4]]},"749":{"position":[[158,4]]},"752":{"position":[[185,4],[782,4],[1054,4],[1331,4]]},"757":{"position":[[270,4],[424,4],[515,4]]},"773":{"position":[[226,4]]},"777":{"position":[[1099,4],[1570,4]]},"782":{"position":[[110,4]]},"783":{"position":[[16,4]]},"784":{"position":[[41,4]]},"785":{"position":[[573,4],[805,4],[1002,4],[1035,4],[1299,4]]},"786":{"position":[[286,4],[884,4],[1044,4],[1185,4]]},"788":{"position":[[417,4],[525,4],[603,4],[744,4],[913,4]]},"791":{"position":[[1528,4],[17632,4],[17709,4],[32486,4],[32595,4]]},"793":{"position":[[674,4]]},"795":{"position":[[165,4]]},"796":{"position":[[254,4]]},"797":{"position":[[234,4]]},"798":{"position":[[14,4]]},"800":{"position":[[505,4]]},"802":{"position":[[289,4]]},"803":{"position":[[315,4]]},"809":{"position":[[1405,4]]},"812":{"position":[[228,4]]},"813":{"position":[[70,4],[175,4]]},"814":{"position":[[59,4],[629,4]]},"815":{"position":[[116,4]]},"817":{"position":[[2383,4]]},"818":{"position":[[116,4]]},"823":{"position":[[25,4]]},"825":{"position":[[511,4],[1186,4]]},"826":{"position":[[24,4]]},"827":{"position":[[60,4],[1385,4]]},"828":{"position":[[31,4]]},"830":{"position":[[77,4],[752,4]]},"831":{"position":[[33,4]]},"833":{"position":[[398,4],[891,4]]},"834":{"position":[[34,4]]},"836":{"position":[[80,4],[754,4]]},"838":{"position":[[24,4]]},"840":{"position":[[552,4],[1663,4]]},"841":{"position":[[24,4]]},"843":{"position":[[523,4],[1755,4]]},"844":{"position":[[23,4]]},"845":{"position":[[59,4],[2237,4]]},"846":{"position":[[28,4]]},"848":{"position":[[89,4],[1172,4]]},"849":{"position":[[30,4]]},"851":{"position":[[583,4],[1694,4]]},"852":{"position":[[31,4]]},"854":{"position":[[92,4],[1175,4]]},"855":{"position":[[28,4]]},"856":{"position":[[64,4],[341,4]]},"857":{"position":[[33,4]]},"859":{"position":[[94,4],[368,4]]},"861":{"position":[[22,4]]},"863":{"position":[[1058,4],[3060,4]]},"864":{"position":[[21,4]]},"865":{"position":[[57,4],[2063,4]]},"866":{"position":[[29,4]]},"868":{"position":[[1084,4],[3084,4]]},"869":{"position":[[30,4]]},"871":{"position":[[81,4],[2080,4]]},"872":{"position":[[40,4]]},"874":{"position":[[241,4],[1353,4]]},"876":{"position":[[22,4]]},"878":{"position":[[331,4],[1199,4]]},"879":{"position":[[21,4]]},"881":{"position":[[93,4],[947,4]]},"882":{"position":[[26,4]]},"884":{"position":[[85,4],[934,4]]},"885":{"position":[[29,4]]},"887":{"position":[[88,4],[964,4]]},"890":{"position":[[385,4]]},"894":{"position":[[429,4]]},"898":{"position":[[729,4]]},"899":{"position":[[676,4]]},"900":{"position":[[216,4]]},"901":{"position":[[188,4]]},"902":{"position":[[205,4]]},"903":{"position":[[316,4]]},"904":{"position":[[175,4]]},"905":{"position":[[285,4]]},"908":{"position":[[428,4]]},"910":{"position":[[242,4]]},"911":{"position":[[294,4]]},"912":{"position":[[306,4]]},"913":{"position":[[413,4]]},"919":{"position":[[657,4]]},"920":{"position":[[128,4]]},"921":{"position":[[177,4],[437,4],[567,4]]},"922":{"position":[[156,4],[215,4],[277,4]]},"924":{"position":[[281,4]]},"925":{"position":[[225,4],[353,4],[456,4],[570,4]]},"934":{"position":[[212,4]]},"939":{"position":[[828,4],[1589,4]]},"942":{"position":[[1044,4]]},"944":{"position":[[1725,4],[1934,4],[2085,4]]},"945":{"position":[[534,4]]},"946":{"position":[[80,4]]},"947":{"position":[[274,4],[1036,4],[1267,4]]},"950":{"position":[[944,4],[1595,4]]},"954":{"position":[[1571,4],[1993,4]]},"960":{"position":[[356,4]]},"961":{"position":[[186,4],[402,4],[719,4]]},"963":{"position":[[495,4],[956,4]]},"964":{"position":[[624,4],[1659,4]]},"965":{"position":[[576,4],[9673,4],[10055,4],[15971,4],[16130,4],[17536,4]]},"966":{"position":[[564,4]]},"967":{"position":[[2157,4]]},"969":{"position":[[1208,4],[1630,4]]},"979":{"position":[[498,4],[606,4]]},"980":{"position":[[957,4],[2679,4]]},"981":{"position":[[1226,4]]},"984":{"position":[[405,4]]},"985":{"position":[[817,4],[2539,4]]},"986":{"position":[[936,4]]},"989":{"position":[[401,4]]},"990":{"position":[[1111,4],[3969,4]]},"991":{"position":[[1132,4]]}},"keywords":{}}],["copyright",{"_index":467,"title":{},"content":{"53":{"position":[[328,9]]},"252":{"position":[[285,9]]},"260":{"position":[[351,9]]}},"keywords":{}}],["cor",{"_index":915,"title":{},"content":{"73":{"position":[[156,4]]},"139":{"position":[[1799,6]]},"162":{"position":[[829,4]]},"300":{"position":[[8,4]]},"306":{"position":[[320,5]]},"582":{"position":[[156,4]]},"639":{"position":[[1812,6]]},"669":{"position":[[1082,4]]},"757":{"position":[[320,5]]},"768":{"position":[[8,4]]},"981":{"position":[[1620,4]]}},"keywords":{}}],["correct",{"_index":1559,"title":{"272":{"position":[[52,7]]}},"content":{"128":{"position":[[378,7]]},"129":{"position":[[495,7]]},"252":{"position":[[2165,8],[2518,8]]},"260":{"position":[[1112,8]]},"263":{"position":[[776,7],[1463,7]]},"272":{"position":[[42,7]]},"288":{"position":[[80,11]]},"305":{"position":[[80,11]]},"333":{"position":[[233,8]]},"635":{"position":[[378,7]]},"636":{"position":[[495,7]]},"751":{"position":[[80,11]]},"756":{"position":[[80,11]]},"803":{"position":[[233,8]]}},"keywords":{}}],["correct.wheth",{"_index":2145,"title":{},"content":{"254":{"position":[[137,15],[215,15]]},"255":{"position":[[204,15],[286,15]]}},"keywords":{}}],["correctli",{"_index":1560,"title":{},"content":{"128":{"position":[[419,9]]},"252":{"position":[[1005,9]]},"635":{"position":[[419,9]]},"965":{"position":[[345,10]]}},"keywords":{}}],["correspond",{"_index":706,"title":{},"content":{"53":{"position":[[8695,13]]},"148":{"position":[[477,13]]},"158":{"position":[[1051,13]]},"162":{"position":[[1132,13]]},"201":{"position":[[178,13]]},"237":{"position":[[37,13]]},"346":{"position":[[97,13]]},"502":{"position":[[345,13]]},"648":{"position":[[477,13]]},"658":{"position":[[1051,13]]},"669":{"position":[[1385,13]]},"696":{"position":[[178,13]]},"741":{"position":[[37,13]]}},"keywords":{}}],["count",{"_index":662,"title":{},"content":{"53":{"position":[[6780,6]]}},"keywords":{}}],["coupl",{"_index":1682,"title":{},"content":{"140":{"position":[[843,6]]},"155":{"position":[[269,8]]},"640":{"position":[[843,6]]},"655":{"position":[[276,8]]},"961":{"position":[[557,6]]},"965":{"position":[[246,6],[9820,6]]}},"keywords":{}}],["cour",{"_index":667,"title":{},"content":{"53":{"position":[[6973,6]]},"203":{"position":[[296,7]]},"698":{"position":[[296,7]]}},"keywords":{}}],["cov",{"_index":721,"title":{},"content":{"53":{"position":[[9556,6]]}},"keywords":{}}],["cov=submarin",{"_index":2937,"title":{},"content":{"438":{"position":[[184,13],[250,13]]},"922":{"position":[[184,13],[250,13]]}},"keywords":{}}],["coverag",{"_index":1906,"title":{},"content":{"199":{"position":[[345,8]]},"694":{"position":[[345,8]]}},"keywords":{}}],["cp",{"_index":2300,"title":{},"content":{"270":{"position":[[360,2]]},"278":{"position":[[149,2]]},"744":{"position":[[689,2]]},"788":{"position":[[567,2]]},"791":{"position":[[1230,2]]},"963":{"position":[[456,2]]}},"keywords":{}}],["cp27",{"_index":4233,"title":{},"content":{"969":{"position":[[1181,4]]}},"keywords":{}}],["cpio",{"_index":3402,"title":{},"content":{"791":{"position":[[2054,4],[2894,4],[3924,4],[8271,5],[8349,4],[13383,4],[17896,4],[18736,4],[19748,4],[23989,5],[24067,4],[28932,4]]}},"keywords":{}}],["cpio_2.11+dfsg",{"_index":3605,"title":{},"content":{"791":{"position":[[8297,18],[24015,18]]}},"keywords":{}}],["cpu",{"_index":16,"title":{"961":{"position":[[42,3]]}},"content":{"2":{"position":[[38,4]]},"140":{"position":[[1108,4]]},"338":{"position":[[175,4]]},"462":{"position":[[38,4]]},"640":{"position":[[1108,4]]},"812":{"position":[[177,4]]},"952":{"position":[[141,3]]},"961":{"position":[[20,3],[221,3]]},"965":{"position":[[180,3],[9754,3]]},"970":{"position":[[212,3],[325,3]]},"972":{"position":[[376,4]]}},"keywords":{}}],["cpu\":\"1",{"_index":2870,"title":{},"content":{"410":{"position":[[2833,9],[3006,9]]},"412":{"position":[[1835,9],[2008,9]]},"863":{"position":[[2833,9],[3006,9]]},"865":{"position":[[1835,9],[2008,9]]}},"keywords":{}}],["cpu/memori",{"_index":1582,"title":{},"content":{"132":{"position":[[1211,10]]},"660":{"position":[[1211,10]]}},"keywords":{}}],["cpu/memory/disk",{"_index":1428,"title":{},"content":{"107":{"position":[[1368,16]]},"621":{"position":[[1371,16]]}},"keywords":{}}],["cpu:0.0.1",{"_index":3025,"title":{},"content":{"479":{"position":[[302,9]]},"942":{"position":[[302,9]]},"972":{"position":[[338,9]]},"973":{"position":[[126,9]]},"981":{"position":[[320,9]]}},"keywords":{}}],["cpu=%s,memory=%s,nvidia.com/gpu=%",{"_index":1866,"title":{},"content":{"181":{"position":[[717,34]]},"688":{"position":[[717,34]]}},"keywords":{}}],["cpu=1,memory=1.0gi",{"_index":384,"title":{},"content":{"38":{"position":[[297,20]]},"41":{"position":[[956,20]]},"389":{"position":[[265,20]]},"560":{"position":[[297,20]]},"563":{"position":[[956,20]]},"878":{"position":[[265,20]]}},"keywords":{}}],["cpu=1,memory=1024m",{"_index":226,"title":{},"content":{"15":{"position":[[880,20],[944,20]]},"18":{"position":[[877,20],[941,20]]},"22":{"position":[[452,20],[1210,20]]},"23":{"position":[[423,20],[1328,20]]},"24":{"position":[[719,20],[1298,20],[1362,20]]},"25":{"position":[[752,20]]},"26":{"position":[[460,20],[1063,20]]},"27":{"position":[[755,20]]},"366":{"position":[[418,20]]},"369":{"position":[[389,20]]},"377":{"position":[[419,20]]},"410":{"position":[[848,20],[912,20]]},"415":{"position":[[853,20],[917,20]]},"424":{"position":[[637,20],[701,20]]},"425":{"position":[[648,20]]},"544":{"position":[[880,20],[944,20]]},"547":{"position":[[877,20],[941,20]]},"551":{"position":[[452,20],[1210,20]]},"552":{"position":[[423,20],[1328,20]]},"553":{"position":[[719,20],[1298,20],[1362,20]]},"554":{"position":[[752,20]]},"555":{"position":[[460,20],[1063,20]]},"556":{"position":[[755,20]]},"840":{"position":[[418,20]]},"843":{"position":[[389,20]]},"851":{"position":[[419,20]]},"863":{"position":[[848,20],[912,20]]},"868":{"position":[[853,20],[917,20]]},"898":{"position":[[637,20],[701,20]]},"899":{"position":[[648,20]]}},"keywords":{}}],["cpu=1,memory=2048m",{"_index":248,"title":{},"content":{"22":{"position":[[516,20],[1274,20]]},"23":{"position":[[487,20],[1392,20]]},"24":{"position":[[783,20]]},"25":{"position":[[816,20]]},"26":{"position":[[524,20],[1127,20]]},"27":{"position":[[819,20]]},"366":{"position":[[482,20]]},"369":{"position":[[453,20]]},"377":{"position":[[483,20]]},"551":{"position":[[516,20],[1274,20]]},"552":{"position":[[487,20],[1392,20]]},"553":{"position":[[783,20]]},"554":{"position":[[816,20]]},"555":{"position":[[524,20],[1127,20]]},"556":{"position":[[819,20]]},"840":{"position":[[482,20]]},"843":{"position":[[453,20]]},"851":{"position":[[483,20]]}},"keywords":{}}],["cpu=1,memory=512m",{"_index":2838,"title":{},"content":{"405":{"position":[[403,19]]},"894":{"position":[[403,19]]}},"keywords":{}}],["cpu=4,memory=2048m,nvidia.com/gpu=1",{"_index":1849,"title":{},"content":{"178":{"position":[[502,37],[588,37]]},"181":{"position":[[237,37],[323,37]]},"685":{"position":[[502,37],[588,37]]},"688":{"position":[[237,37],[323,37]]}},"keywords":{}}],["cpudocker/mxnet/base/ubuntu",{"_index":3860,"title":{},"content":{"951":{"position":[[188,27]]}},"keywords":{}}],["crd",{"_index":1753,"title":{},"content":{"152":{"position":[[1006,3]]},"652":{"position":[[1286,3]]}},"keywords":{}}],["crd/podgroups.scheduling.incubator.k8s.io",{"_index":109,"title":{},"content":{"4":{"position":[[1010,41]]},"464":{"position":[[1010,41]]}},"keywords":{}}],["crd/pytorchjobs.kubeflow.org",{"_index":110,"title":{},"content":{"4":{"position":[[1070,28]]},"464":{"position":[[1070,28]]}},"keywords":{}}],["crd/tfjobs.kubeflow.org",{"_index":108,"title":{},"content":{"4":{"position":[[968,23]]},"464":{"position":[[968,23]]}},"keywords":{}}],["creat",{"_index":145,"title":{"9":{"position":[[0,6]]},"15":{"position":[[0,6]]},"20":{"position":[[16,6]]},"22":{"position":[[0,6]]},"23":{"position":[[0,6]]},"35":{"position":[[0,6]]},"38":{"position":[[0,6]]},"43":{"position":[[0,6]]},"46":{"position":[[0,6]]},"51":{"position":[[0,6]]},"58":{"position":[[0,8]]},"61":{"position":[[7,6]]},"62":{"position":[[7,6]]},"63":{"position":[[17,6]]},"67":{"position":[[7,6]]},"147":{"position":[[0,6]]},"262":{"position":[[29,7]]},"268":{"position":[[4,6]]},"316":{"position":[[0,6]]},"319":{"position":[[0,6]]},"349":{"position":[[0,6]]},"364":{"position":[[0,6]]},"367":{"position":[[0,6]]},"387":{"position":[[0,6]]},"408":{"position":[[0,6]]},"419":{"position":[[16,6]]},"538":{"position":[[0,6]]},"544":{"position":[[0,6]]},"549":{"position":[[16,6]]},"551":{"position":[[0,6]]},"552":{"position":[[0,6]]},"560":{"position":[[0,6]]},"567":{"position":[[0,8]]},"570":{"position":[[7,6]]},"571":{"position":[[7,6]]},"572":{"position":[[17,6]]},"576":{"position":[[7,6]]},"647":{"position":[[0,6]]},"776":{"position":[[0,8]]},"777":{"position":[[7,6]]},"793":{"position":[[0,6]]},"796":{"position":[[0,6]]},"823":{"position":[[0,6]]},"838":{"position":[[0,6]]},"841":{"position":[[0,6]]},"861":{"position":[[0,6]]},"872":{"position":[[16,6]]},"876":{"position":[[0,6]]},"950":{"position":[[7,6]]},"954":{"position":[[7,6]]},"969":{"position":[[7,6]]}},"content":{"35":{"position":[[250,7]]},"38":{"position":[[682,10]]},"53":{"position":[[3714,7]]},"59":{"position":[[66,6]]},"61":{"position":[[35,6],[290,8]]},"62":{"position":[[117,6]]},"64":{"position":[[182,6]]},"66":{"position":[[118,8]]},"67":{"position":[[102,6]]},"79":{"position":[[1743,6]]},"90":{"position":[[1923,6]]},"99":{"position":[[71,6]]},"101":{"position":[[27,7]]},"104":{"position":[[366,6]]},"107":{"position":[[821,6]]},"113":{"position":[[565,6]]},"118":{"position":[[317,8]]},"134":{"position":[[2207,6]]},"151":{"position":[[313,6]]},"152":{"position":[[1263,6],[1434,6]]},"154":{"position":[[398,6],[704,6]]},"158":{"position":[[1400,6]]},"161":{"position":[[110,6]]},"199":{"position":[[51,6]]},"207":{"position":[[75,6]]},"213":{"position":[[26,8]]},"238":{"position":[[559,6]]},"245":{"position":[[56,8]]},"252":{"position":[[510,8],[619,8],[755,8],[864,8],[1386,8],[1495,8],[1625,8],[1734,8]]},"260":{"position":[[2334,8],[2588,7]]},"268":{"position":[[7,8],[161,6]]},"269":{"position":[[30,8]]},"278":{"position":[[68,6]]},"281":{"position":[[161,7]]},"305":{"position":[[245,8]]},"313":{"position":[[728,6],[754,6],[818,6]]},"314":{"position":[[698,8]]},"316":{"position":[[537,6],[622,6]]},"319":{"position":[[88,6],[137,6]]},"327":{"position":[[128,6]]},"328":{"position":[[99,6],[532,6],[1286,6],[1398,6]]},"330":{"position":[[79,7]]},"339":{"position":[[200,6],[257,6]]},"389":{"position":[[645,10]]},"423":{"position":[[34,7]]},"424":{"position":[[0,6]]},"427":{"position":[[63,8]]},"430":{"position":[[50,8]]},"435":{"position":[[147,6]]},"441":{"position":[[261,6]]},"481":{"position":[[268,6]]},"485":{"position":[[137,8]]},"495":{"position":[[263,6],[759,6],[863,6]]},"502":{"position":[[38,7],[1206,8],[1240,6]]},"560":{"position":[[682,10]]},"568":{"position":[[66,6]]},"570":{"position":[[35,6],[290,8]]},"571":{"position":[[117,6]]},"573":{"position":[[182,6]]},"575":{"position":[[118,8]]},"576":{"position":[[102,6]]},"597":{"position":[[565,6]]},"604":{"position":[[1923,6]]},"613":{"position":[[71,6]]},"615":{"position":[[27,7]]},"618":{"position":[[367,6]]},"621":{"position":[[823,6]]},"625":{"position":[[317,8]]},"651":{"position":[[313,6]]},"652":{"position":[[1543,6],[1714,6]]},"654":{"position":[[398,6],[704,6]]},"658":{"position":[[1400,6]]},"662":{"position":[[2207,6]]},"668":{"position":[[110,6]]},"694":{"position":[[51,6]]},"702":{"position":[[75,6]]},"708":{"position":[[26,8]]},"734":{"position":[[85,6],[175,6],[276,6],[379,6],[480,6],[581,6]]},"744":{"position":[[996,6]]},"748":{"position":[[56,8]]},"756":{"position":[[245,8]]},"785":{"position":[[728,6],[754,6],[818,6]]},"786":{"position":[[698,8]]},"791":{"position":[[13580,8],[14132,8],[14607,8],[15248,8],[16462,8],[16593,8],[16724,8],[16858,8],[29129,8],[29681,8],[30156,8],[30797,8],[31316,8],[31447,8],[31578,8],[31712,8]]},"793":{"position":[[537,6],[622,6]]},"796":{"position":[[88,6],[137,6]]},"800":{"position":[[79,7]]},"808":{"position":[[128,6]]},"809":{"position":[[99,6],[552,6],[1306,6],[1418,6]]},"878":{"position":[[645,10]]},"897":{"position":[[34,7]]},"898":{"position":[[0,6]]},"901":{"position":[[63,8]]},"904":{"position":[[50,8]]},"919":{"position":[[147,6]]},"925":{"position":[[261,6]]},"939":{"position":[[28,6],[833,6]]},"944":{"position":[[268,6]]},"948":{"position":[[137,8]]},"965":{"position":[[7590,8],[7769,8],[7948,8],[8127,8],[8306,8],[8485,8],[8664,8],[8843,8]]}},"keywords":{}}],["create/manag",{"_index":1397,"title":{},"content":{"106":{"position":[[407,13]]},"620":{"position":[[407,13]]}},"keywords":{}}],["create/update/delete/list",{"_index":270,"title":{},"content":{"23":{"position":[[689,25]]},"552":{"position":[[689,25]]}},"keywords":{}}],["create_environ",{"_index":1701,"title":{},"content":{"146":{"position":[[525,18]]},"646":{"position":[[525,18]]}},"keywords":{}}],["create_experi",{"_index":1707,"title":{},"content":{"147":{"position":[[232,17],[730,17],[1121,17]]},"647":{"position":[[232,17],[730,17],[1121,17]]}},"keywords":{}}],["create_experiment(experiment_spec",{"_index":2876,"title":{"424":{"position":[[0,34]]},"898":{"position":[[0,34]]}},"content":{},"keywords":{}}],["created/submit",{"_index":1368,"title":{},"content":{"102":{"position":[[2271,17]]},"616":{"position":[[2284,17]]}},"keywords":{}}],["createdtim",{"_index":426,"title":{},"content":{"41":{"position":[[454,14]]},"563":{"position":[[454,14]]}},"keywords":{}}],["createdtime\":\"2020",{"_index":397,"title":{},"content":{"38":{"position":[[693,19]]},"39":{"position":[[435,19]]},"40":{"position":[[426,19]]},"560":{"position":[[693,19]]},"561":{"position":[[435,19]]},"562":{"position":[[426,19]]}},"keywords":{}}],["createdtime\":\"2021",{"_index":2788,"title":{},"content":{"371":{"position":[[336,19]]},"389":{"position":[[656,19]]},"392":{"position":[[403,19]]},"395":{"position":[[391,19]]},"398":{"position":[[421,19]]},"845":{"position":[[336,19]]},"878":{"position":[[656,19]]},"881":{"position":[[403,19]]},"884":{"position":[[391,19]]},"887":{"position":[[421,19]]}},"keywords":{}}],["createdtime\":nul",{"_index":2751,"title":{},"content":{"366":{"position":[[825,19]]},"369":{"position":[[945,19]]},"371":{"position":[[1426,19]]},"374":{"position":[[362,19]]},"377":{"position":[[856,19]]},"380":{"position":[[337,19]]},"421":{"position":[[515,19]]},"840":{"position":[[825,19]]},"843":{"position":[[945,19]]},"845":{"position":[[1426,19]]},"848":{"position":[[362,19]]},"851":{"position":[[856,19]]},"854":{"position":[[337,19]]},"874":{"position":[[515,19]]}},"keywords":{}}],["createexperiment(templatedexperimentparamet",{"_index":1803,"title":{},"content":{"158":{"position":[[2610,46]]},"658":{"position":[[2610,46]]}},"keywords":{}}],["createsess",{"_index":4102,"title":{},"content":{"965":{"position":[[14220,13]]}},"keywords":{}}],["creation",{"_index":722,"title":{},"content":{"53":{"position":[[9567,8]]},"99":{"position":[[306,9]]},"110":{"position":[[1181,8]]},"613":{"position":[[306,9]]},"624":{"position":[[1186,8]]},"791":{"position":[[16183,8]]}},"keywords":{}}],["creationtim",{"_index":347,"title":{},"content":{"31":{"position":[[236,14],[599,14],[962,14],[1326,14]]},"32":{"position":[[244,14]]},"47":{"position":[[229,14],[407,14],[586,14]]},"48":{"position":[[245,14]]}},"keywords":{}}],["credenti",{"_index":1066,"title":{"175":{"position":[[14,10]]},"682":{"position":[[14,10]]}},"content":{"89":{"position":[[85,11],[263,12]]},"107":{"position":[[282,12],[385,11],[769,12],[1002,11]]},"129":{"position":[[226,12]]},"151":{"position":[[239,11],[469,11]]},"175":{"position":[[6,10],[61,12],[103,10]]},"603":{"position":[[85,11],[263,12]]},"621":{"position":[[283,12],[386,11],[770,12],[1005,11]]},"636":{"position":[[226,12]]},"651":{"position":[[239,11],[469,11]]},"682":{"position":[[6,10],[61,12],[103,10]]}},"keywords":{}}],["credit",{"_index":916,"title":{},"content":{"73":{"position":[[209,7]]},"582":{"position":[[209,7]]}},"keywords":{}}],["cross",{"_index":1177,"title":{},"content":{"91":{"position":[[361,5]]},"605":{"position":[[361,5]]}},"keywords":{}}],["crud",{"_index":1602,"title":{},"content":{"133":{"position":[[395,4]]},"661":{"position":[[395,4]]}},"keywords":{}}],["csh",{"_index":3694,"title":{},"content":{"791":{"position":[[15444,5],[30993,5]]}},"keywords":{}}],["cst",{"_index":2131,"title":{},"content":{"252":{"position":[[2646,3]]}},"keywords":{}}],["ctr",{"_index":1320,"title":{},"content":{"102":{"position":[[792,4]]},"157":{"position":[[293,3],[885,3]]},"158":{"position":[[581,3]]},"335":{"position":[[58,3]]},"616":{"position":[[797,4]]},"657":{"position":[[293,3],[885,3]]},"658":{"position":[[581,3]]},"805":{"position":[[58,3]]}},"keywords":{}}],["ctrl+c",{"_index":3288,"title":{},"content":{"744":{"position":[[1650,6]]}},"keywords":{}}],["cuda",{"_index":1456,"title":{},"content":{"112":{"position":[[804,4]]},"117":{"position":[[475,5]]},"139":{"position":[[822,5]]},"596":{"position":[[804,4]]},"601":{"position":[[475,5]]},"639":{"position":[[822,5]]},"777":{"position":[[252,5],[1043,4]]},"950":{"position":[[233,5]]},"954":{"position":[[237,5]]},"969":{"position":[[234,5]]},"970":{"position":[[112,4]]}},"keywords":{}}],["cuda10",{"_index":3333,"title":{},"content":{"778":{"position":[[187,7]]},"951":{"position":[[304,7]]},"955":{"position":[[356,7]]},"970":{"position":[[606,7]]}},"keywords":{}}],["cuda10.docker/pytorch/with",{"_index":3901,"title":{},"content":{"955":{"position":[[224,26]]}},"keywords":{}}],["cuda10.docker/tensorflow/with",{"_index":4242,"title":{},"content":{"970":{"position":[[469,29]]}},"keywords":{}}],["cuda100",{"_index":3880,"title":{},"content":{"954":{"position":[[1014,7]]}},"keywords":{}}],["cuda=10.2",{"_index":1453,"title":{},"content":{"112":{"position":[[660,11],[1599,11]]},"596":{"position":[[660,11],[1599,11]]}},"keywords":{}}],["cuda=10.3",{"_index":1463,"title":{},"content":{"112":{"position":[[1891,11]]},"596":{"position":[[1891,11]]}},"keywords":{}}],["cudnn",{"_index":3296,"title":{},"content":{"777":{"position":[[258,6]]},"950":{"position":[[239,6]]},"954":{"position":[[243,6]]},"969":{"position":[[240,6]]}},"keywords":{}}],["cudnn7",{"_index":3292,"title":{},"content":{"777":{"position":[[132,6],[422,6]]},"954":{"position":[[412,6]]}},"keywords":{}}],["curl",{"_index":150,"title":{},"content":{"9":{"position":[[41,4]]},"10":{"position":[[41,4]]},"11":{"position":[[48,4]]},"12":{"position":[[50,4]]},"13":{"position":[[48,4]]},"15":{"position":[[38,4]]},"16":{"position":[[38,4]]},"17":{"position":[[45,4]]},"18":{"position":[[30,4]]},"19":{"position":[[45,4]]},"20":{"position":[[57,4]]},"22":{"position":[[40,4]]},"23":{"position":[[40,4]]},"24":{"position":[[40,4]]},"25":{"position":[[45,4]]},"26":{"position":[[47,4]]},"27":{"position":[[45,4]]},"28":{"position":[[45,4]]},"29":{"position":[[50,4]]},"31":{"position":[[50,4]]},"32":{"position":[[60,4]]},"33":{"position":[[45,4]]},"34":{"position":[[62,4]]},"35":{"position":[[87,4]]},"36":{"position":[[89,4]]},"38":{"position":[[38,4]]},"39":{"position":[[38,4]]},"40":{"position":[[43,4]]},"41":{"position":[[46,4]]},"43":{"position":[[107,4]]},"44":{"position":[[37,4]]},"46":{"position":[[46,4]]},"47":{"position":[[46,4]]},"48":{"position":[[53,4]]},"49":{"position":[[55,4]]},"50":{"position":[[55,4]]},"51":{"position":[[72,4]]},"52":{"position":[[74,4]]},"252":{"position":[[22,4]]},"316":{"position":[[310,4]]},"351":{"position":[[6,4]]},"353":{"position":[[6,4]]},"356":{"position":[[6,4]]},"359":{"position":[[6,4]]},"362":{"position":[[6,4]]},"366":{"position":[[6,4]]},"369":{"position":[[6,4]]},"371":{"position":[[6,4]]},"374":{"position":[[6,4]]},"377":{"position":[[6,4]]},"380":{"position":[[6,4]]},"382":{"position":[[6,4]]},"385":{"position":[[6,4]]},"389":{"position":[[6,4]]},"392":{"position":[[6,4]]},"395":{"position":[[6,4]]},"398":{"position":[[6,4]]},"410":{"position":[[6,4]]},"412":{"position":[[6,4]]},"415":{"position":[[6,4]]},"418":{"position":[[6,4]]},"421":{"position":[[6,4]]},"538":{"position":[[41,4]]},"539":{"position":[[41,4]]},"540":{"position":[[48,4]]},"541":{"position":[[50,4]]},"542":{"position":[[48,4]]},"544":{"position":[[38,4]]},"545":{"position":[[38,4]]},"546":{"position":[[45,4]]},"547":{"position":[[30,4]]},"548":{"position":[[45,4]]},"549":{"position":[[57,4]]},"551":{"position":[[40,4]]},"552":{"position":[[40,4]]},"553":{"position":[[40,4]]},"554":{"position":[[45,4]]},"555":{"position":[[47,4]]},"556":{"position":[[45,4]]},"557":{"position":[[45,4]]},"558":{"position":[[50,4]]},"560":{"position":[[38,4]]},"561":{"position":[[38,4]]},"562":{"position":[[43,4]]},"563":{"position":[[46,4]]},"793":{"position":[[310,4]]},"825":{"position":[[6,4]]},"827":{"position":[[6,4]]},"830":{"position":[[6,4]]},"833":{"position":[[6,4]]},"836":{"position":[[6,4]]},"840":{"position":[[6,4]]},"843":{"position":[[6,4]]},"845":{"position":[[6,4]]},"848":{"position":[[6,4]]},"851":{"position":[[6,4]]},"854":{"position":[[6,4]]},"856":{"position":[[6,4]]},"859":{"position":[[6,4]]},"863":{"position":[[6,4]]},"865":{"position":[[6,4]]},"868":{"position":[[6,4]]},"871":{"position":[[6,4]]},"874":{"position":[[6,4]]},"878":{"position":[[6,4]]},"881":{"position":[[6,4]]},"884":{"position":[[6,4]]},"887":{"position":[[6,4]]},"954":{"position":[[559,4],[658,4]]},"969":{"position":[[526,4],[837,4]]}},"keywords":{}}],["current",{"_index":620,"title":{"445":{"position":[[5,7]]}},"content":{"53":{"position":[[5233,7]]},"148":{"position":[[561,7]]},"186":{"position":[[676,7]]},"295":{"position":[[46,10]]},"313":{"position":[[44,9]]},"365":{"position":[[1154,9]]},"435":{"position":[[252,7],[359,7],[475,7],[600,7]]},"479":{"position":[[123,7]]},"502":{"position":[[171,9]]},"648":{"position":[[561,7]]},"714":{"position":[[676,7]]},"762":{"position":[[46,10]]},"777":{"position":[[1522,7]]},"785":{"position":[[44,9]]},"791":{"position":[[7615,9],[14990,7],[15539,7],[16234,7],[17029,7],[23333,9],[30539,7],[31088,7],[31883,7]]},"839":{"position":[[1154,9]]},"910":{"position":[[24,7]]},"911":{"position":[[30,7]]},"912":{"position":[[23,7]]},"913":{"position":[[29,7]]},"919":{"position":[[600,7]]},"934":{"position":[[399,10]]},"939":{"position":[[1793,10]]},"942":{"position":[[123,7]]},"950":{"position":[[1548,7]]},"954":{"position":[[1946,7]]},"964":{"position":[[1232,7]]},"969":{"position":[[1583,7]]}},"keywords":{}}],["currentstag",{"_index":350,"title":{},"content":{"31":{"position":[[276,14],[639,14],[1002,14],[1366,14]]},"32":{"position":[[284,14]]},"33":{"position":[[170,15]]}},"keywords":{}}],["custom",{"_index":1396,"title":{"219":{"position":[[11,6]]},"733":{"position":[[11,6]]}},"content":{"106":{"position":[[393,9]]},"112":{"position":[[257,6],[1965,10],[2051,12]]},"114":{"position":[[263,9]]},"117":{"position":[[666,14]]},"132":{"position":[[1461,10]]},"314":{"position":[[525,9]]},"339":{"position":[[219,6]]},"491":{"position":[[630,10]]},"596":{"position":[[257,6],[1965,10],[2051,12]]},"598":{"position":[[263,9]]},"601":{"position":[[666,14]]},"620":{"position":[[393,9]]},"660":{"position":[[1461,10]]},"786":{"position":[[525,9]]}},"keywords":{}}],["cut",{"_index":3120,"title":{},"content":{"484":{"position":[[785,3],[802,3]]},"947":{"position":[[785,3],[802,3]]}},"keywords":{}}],["cycl",{"_index":1758,"title":{},"content":{"153":{"position":[[39,5]]},"653":{"position":[[39,5]]}},"keywords":{}}],["cython",{"_index":3878,"title":{},"content":{"954":{"position":[[946,6]]}},"keywords":{}}],["d",{"_index":156,"title":{},"content":{"9":{"position":[[91,1]]},"12":{"position":[[101,1]]},"15":{"position":[[88,1]]},"18":{"position":[[81,1]]},"20":{"position":[[107,1]]},"22":{"position":[[90,1]]},"23":{"position":[[90,1]]},"26":{"position":[[98,1]]},"33":{"position":[[96,1]]},"38":{"position":[[88,1]]},"43":{"position":[[157,1]]},"44":{"position":[[89,1]]},"46":{"position":[[96,1]]},"49":{"position":[[106,1]]},"351":{"position":[[56,1]]},"359":{"position":[[57,1]]},"366":{"position":[[56,1]]},"369":{"position":[[56,1]]},"377":{"position":[[57,1]]},"389":{"position":[[56,1]]},"410":{"position":[[56,1]]},"415":{"position":[[57,1]]},"421":{"position":[[56,1]]},"484":{"position":[[790,1],[807,1]]},"488":{"position":[[187,1],[320,1]]},"538":{"position":[[91,1]]},"541":{"position":[[101,1]]},"544":{"position":[[88,1]]},"547":{"position":[[81,1]]},"549":{"position":[[107,1]]},"551":{"position":[[90,1]]},"552":{"position":[[90,1]]},"555":{"position":[[98,1]]},"560":{"position":[[88,1]]},"825":{"position":[[56,1]]},"833":{"position":[[57,1]]},"840":{"position":[[56,1]]},"843":{"position":[[56,1]]},"851":{"position":[[57,1]]},"863":{"position":[[56,1]]},"868":{"position":[[57,1]]},"874":{"position":[[56,1]]},"878":{"position":[[56,1]]},"947":{"position":[[790,1],[807,1]]}},"keywords":{}}],["daemon",{"_index":1635,"title":{},"content":{"135":{"position":[[74,6],[244,8]]},"186":{"position":[[55,6]]},"197":{"position":[[45,6]]},"238":{"position":[[305,6],[465,6]]},"240":{"position":[[51,6],[210,6]]},"484":{"position":[[45,7]]},"663":{"position":[[74,6],[244,8]]},"692":{"position":[[45,6]]},"714":{"position":[[55,6]]},"742":{"position":[[305,6],[465,6]]},"744":{"position":[[51,6],[210,6]]},"947":{"position":[[45,7]]}},"keywords":{}}],["daemon.sh",{"_index":3158,"title":{},"content":{"490":{"position":[[29,9],[288,9]]},"491":{"position":[[67,9],[125,9]]}},"keywords":{}}],["dag",{"_index":1362,"title":{},"content":{"102":{"position":[[2146,3]]},"616":{"position":[[2158,3]]}},"keywords":{}}],["dang",{"_index":1567,"title":{},"content":{"130":{"position":[[214,9]]},"637":{"position":[[214,9]]}},"keywords":{}}],["dashboard",{"_index":1639,"title":{"317":{"position":[[11,9]]},"321":{"position":[[6,9]]},"794":{"position":[[11,9]]},"798":{"position":[[6,9]]}},"content":{"135":{"position":[[452,10]]},"318":{"position":[[10,10]]},"319":{"position":[[69,10],[110,9],[163,9]]},"320":{"position":[[42,10],[131,9],[203,9]]},"321":{"position":[[30,9],[149,9]]},"663":{"position":[[452,10]]},"795":{"position":[[10,10]]},"796":{"position":[[69,10],[110,9],[163,9]]},"797":{"position":[[42,10],[131,9],[203,9]]},"798":{"position":[[30,9],[149,9]]}},"keywords":{}}],["dashboard/services/https:kubernet",{"_index":2482,"title":{},"content":{"321":{"position":[[95,35]]},"798":{"position":[[95,35]]}},"keywords":{}}],["dashboard:/proxi",{"_index":2483,"title":{},"content":{"321":{"position":[[131,17]]},"798":{"position":[[131,17]]}},"keywords":{}}],["dat",{"_index":851,"title":{},"content":{"62":{"position":[[44,4]]},"571":{"position":[[44,4]]}},"keywords":{}}],["data",{"_index":1062,"title":{"92":{"position":[[40,4]]},"94":{"position":[[8,4]]},"95":{"position":[[20,4]]},"489":{"position":[[10,4]]},"509":{"position":[[0,4]]},"514":{"position":[[0,4]]},"529":{"position":[[0,4]]},"534":{"position":[[0,4]]},"606":{"position":[[40,4]]},"608":{"position":[[8,4]]},"609":{"position":[[20,4]]},"788":{"position":[[8,4]]}},"content":{"89":{"position":[[30,4]]},"90":{"position":[[654,4],[731,4],[1797,4],[2416,4],[2451,4],[2467,4],[2551,4],[2653,4]]},"91":{"position":[[18,4],[80,4],[99,4],[110,4],[134,4],[237,4],[267,4],[312,5],[556,4],[649,4],[695,4],[746,4]]},"92":{"position":[[34,4],[89,4],[289,4],[490,4],[691,4],[753,4]]},"93":{"position":[[726,4],[776,4]]},"94":{"position":[[41,4],[183,4]]},"96":{"position":[[10,4],[32,4],[142,4],[184,4],[212,4],[304,4]]},"99":{"position":[[52,4],[147,4],[167,4],[292,4]]},"102":{"position":[[1056,4]]},"107":{"position":[[226,5],[241,4],[364,4]]},"108":{"position":[[159,4]]},"110":{"position":[[334,5]]},"114":{"position":[[84,4]]},"130":{"position":[[190,5]]},"133":{"position":[[73,4],[187,4],[426,5]]},"134":{"position":[[543,5],[1828,4]]},"139":{"position":[[463,5],[1194,4],[1998,4]]},"154":{"position":[[512,4]]},"155":{"position":[[137,4]]},"156":{"position":[[53,4]]},"157":{"position":[[1106,4]]},"158":{"position":[[1745,4]]},"160":{"position":[[495,4]]},"161":{"position":[[38,4]]},"173":{"position":[[155,4]]},"184":{"position":[[485,4]]},"186":{"position":[[217,4]]},"197":{"position":[[487,4],[648,4]]},"199":{"position":[[288,4],[364,5],[398,4],[466,5],[555,4],[590,4]]},"211":{"position":[[566,4],[1271,4]]},"284":{"position":[[437,4]]},"313":{"position":[[268,4]]},"343":{"position":[[501,4]]},"365":{"position":[[104,4]]},"376":{"position":[[90,4]]},"388":{"position":[[94,4]]},"409":{"position":[[648,4]]},"471":{"position":[[208,4]]},"479":{"position":[[367,4],[580,4],[629,4],[851,4],[900,4]]},"489":{"position":[[164,4],[309,4]]},"598":{"position":[[84,4]]},"603":{"position":[[30,4]]},"604":{"position":[[654,4],[731,4],[1797,4],[2416,4],[2451,4],[2467,4],[2551,4],[2653,4]]},"605":{"position":[[18,4],[80,4],[99,4],[110,4],[134,4],[237,4],[267,4],[312,5],[556,4],[649,4],[695,4],[746,4]]},"606":{"position":[[34,4],[89,4],[289,4],[490,4],[691,4],[753,4]]},"607":{"position":[[726,4],[776,4]]},"608":{"position":[[41,4],[183,4]]},"610":{"position":[[10,4],[32,4],[142,4],[184,4],[212,4],[304,4]]},"613":{"position":[[52,4],[147,4],[167,4],[292,4]]},"616":{"position":[[1061,4]]},"621":{"position":[[226,5],[241,4],[365,4]]},"622":{"position":[[159,4]]},"624":{"position":[[334,5]]},"637":{"position":[[190,5]]},"639":{"position":[[463,5],[1199,4],[2011,4]]},"654":{"position":[[512,4]]},"655":{"position":[[142,4]]},"656":{"position":[[53,4]]},"657":{"position":[[1106,4]]},"658":{"position":[[1745,4]]},"661":{"position":[[73,4],[187,4],[426,5]]},"662":{"position":[[543,5],[1828,4]]},"667":{"position":[[495,4]]},"668":{"position":[[38,4]]},"680":{"position":[[155,4]]},"692":{"position":[[487,4],[648,4]]},"694":{"position":[[288,4],[364,5],[398,4],[466,5],[555,4],[590,4]]},"706":{"position":[[566,4],[1271,4]]},"712":{"position":[[485,4]]},"714":{"position":[[217,4]]},"785":{"position":[[268,4]]},"788":{"position":[[61,4]]},"817":{"position":[[519,4]]},"839":{"position":[[104,4]]},"850":{"position":[[90,4]]},"862":{"position":[[648,4]]},"877":{"position":[[94,4]]},"931":{"position":[[208,4]]},"939":{"position":[[1948,4]]},"942":{"position":[[367,4],[580,4],[629,4],[851,4],[900,4]]},"960":{"position":[[326,4],[351,4],[438,4],[463,6]]},"961":{"position":[[95,4],[120,4],[311,4],[336,4],[621,4],[646,4]]},"963":{"position":[[353,5],[478,4],[886,4],[915,4]]},"965":{"position":[[446,4],[474,4],[9943,4],[9971,4]]},"966":{"position":[[50,4],[242,4]]},"981":{"position":[[380,4],[592,4]]}},"keywords":{}}],["data/model",{"_index":1333,"title":{},"content":{"102":{"position":[[1152,11]]},"616":{"position":[[1163,11]]}},"keywords":{}}],["data_dir",{"_index":4269,"title":{},"content":{"980":{"position":[[604,8],[727,8]]}},"keywords":{}}],["databas",{"_index":71,"title":{"240":{"position":[[8,8]]},"489":{"position":[[32,8]]},"744":{"position":[[8,8]]}},"content":{"4":{"position":[[270,8]]},"43":{"position":[[97,9]]},"116":{"position":[[120,9]]},"124":{"position":[[84,11]]},"133":{"position":[[254,8],[432,8]]},"154":{"position":[[520,9]]},"219":{"position":[[462,8]]},"302":{"position":[[202,9]]},"324":{"position":[[363,8]]},"339":{"position":[[286,9]]},"340":{"position":[[251,8]]},"440":{"position":[[153,8]]},"464":{"position":[[270,8]]},"471":{"position":[[146,8],[234,8]]},"488":{"position":[[75,9],[142,8],[206,8],[358,8]]},"489":{"position":[[27,8],[72,8],[110,8],[194,9],[209,10],[232,8]]},"600":{"position":[[120,9]]},"631":{"position":[[84,11]]},"654":{"position":[[520,9]]},"661":{"position":[[254,8],[432,8]]},"733":{"position":[[462,8]]},"770":{"position":[[202,9]]},"791":{"position":[[7032,8],[7054,8],[7079,8],[7105,8],[7131,8],[7157,8],[7183,8],[7209,8],[7235,8],[7261,8],[7287,8],[7313,8],[7339,8],[7365,8],[7391,8],[7417,8],[7443,8],[7469,8],[7495,8],[7521,8],[7547,8],[7574,8],[14235,8],[22750,8],[22772,8],[22797,8],[22823,8],[22849,8],[22875,8],[22901,8],[22927,8],[22953,8],[22979,8],[23005,8],[23031,8],[23057,8],[23083,8],[23109,8],[23135,8],[23161,8],[23187,8],[23213,8],[23239,8],[23265,8],[23292,8],[29784,8]]},"814":{"position":[[257,8]]},"931":{"position":[[146,8],[234,8]]}},"keywords":{}}],["database(e.g",{"_index":1735,"title":{},"content":{"150":{"position":[[94,13]]},"650":{"position":[[94,13]]}},"keywords":{}}],["database.dataset",{"_index":1819,"title":{},"content":{"160":{"position":[[1320,17]]},"667":{"position":[[1321,17]]}},"keywords":{}}],["database:3306/submarin",{"_index":2992,"title":{},"content":{"471":{"position":[[403,24]]},"931":{"position":[[403,24]]}},"keywords":{}}],["database:submarin",{"_index":3150,"title":{},"content":{"488":{"position":[[339,18]]}},"keywords":{}}],["dataset",{"_index":351,"title":{"108":{"position":[[0,7]]},"170":{"position":[[0,7]]},"622":{"position":[[0,7]]},"677":{"position":[[0,7]]}},"content":{"31":{"position":[[301,9],[664,9],[1027,9],[1391,9]]},"32":{"position":[[309,9]]},"33":{"position":[[200,10]]},"99":{"position":[[274,7]]},"108":{"position":[[25,7]]},"161":{"position":[[150,9]]},"163":{"position":[[590,7]]},"343":{"position":[[625,9]]},"613":{"position":[[274,7]]},"622":{"position":[[25,7]]},"668":{"position":[[150,9]]},"670":{"position":[[590,7]]},"788":{"position":[[117,8]]},"817":{"position":[[643,9]]},"960":{"position":[[65,7],[195,7],[277,9]]},"990":{"position":[[469,7],[652,7],[857,7]]},"991":{"position":[[539,7],[724,7],[896,7]]}},"keywords":{}}],["datasets['train'].map(scale).cache().shuffle(buffer_s",{"_index":2653,"title":{},"content":{"343":{"position":[[706,57]]},"817":{"position":[[724,57]]}},"keywords":{}}],["day",{"_index":733,"title":{},"content":{"53":{"position":[[10688,4],[10935,5],[10997,5]]},"74":{"position":[[174,5]]},"260":{"position":[[942,4]]},"281":{"position":[[858,5]]},"583":{"position":[[174,5]]}},"keywords":{}}],["db",{"_index":1552,"title":{},"content":{"125":{"position":[[284,3]]},"632":{"position":[[284,3]]},"655":{"position":[[150,3]]}},"keywords":{}}],["db.need",{"_index":1772,"title":{},"content":{"155":{"position":[[145,7]]}},"keywords":{}}],["dddd/ee/ff",{"_index":2346,"title":{},"content":{"281":{"position":[[874,10]]}},"keywords":{}}],["ddn",{"_index":3436,"title":{},"content":{"791":{"position":[[2537,4],[18379,4]]}},"keywords":{}}],["de/d",{"_index":1424,"title":{},"content":{"107":{"position":[[1049,5],[1083,5]]},"621":{"position":[[1052,5],[1086,5]]}},"keywords":{}}],["deactiv",{"_index":4253,"title":{},"content":{"979":{"position":[[487,10]]},"984":{"position":[[394,10]]},"989":{"position":[[390,10]]}},"keywords":{}}],["deal",{"_index":1804,"title":{},"content":{"158":{"position":[[2794,4]]},"233":{"position":[[38,4]]},"279":{"position":[[634,4]]},"658":{"position":[[2794,4]]},"737":{"position":[[38,4]]}},"keywords":{}}],["debian_frontend=noninteract",{"_index":3840,"title":{},"content":{"950":{"position":[[540,30]]},"969":{"position":[[722,30]]}},"keywords":{}}],["debug",{"_index":1116,"title":{},"content":{"90":{"position":[[1110,9]]},"186":{"position":[[206,10]]},"491":{"position":[[398,5]]},"604":{"position":[[1110,9]]},"714":{"position":[[206,10]]}},"keywords":{}}],["dec",{"_index":2489,"title":{},"content":{"324":{"position":[[35,3]]}},"keywords":{}}],["decad",{"_index":1084,"title":{},"content":{"90":{"position":[[306,7]]},"604":{"position":[[306,7]]}},"keywords":{}}],["decid",{"_index":598,"title":{},"content":{"53":{"position":[[3990,8]]},"98":{"position":[[308,7]]},"115":{"position":[[76,7]]},"252":{"position":[[967,6]]},"599":{"position":[[76,7]]},"612":{"position":[[308,7]]}},"keywords":{}}],["decis",{"_index":628,"title":{},"content":{"53":{"position":[[5418,8],[5465,8],[5531,9],[5630,9],[5774,8],[5822,9],[7133,10],[7341,10]]},"252":{"position":[[1262,9]]}},"keywords":{}}],["declar",{"_index":544,"title":{},"content":{"53":{"position":[[2116,11],[4580,11]]}},"keywords":{}}],["declin",{"_index":998,"title":{},"content":{"79":{"position":[[1394,7]]}},"keywords":{}}],["decoupl",{"_index":1872,"title":{},"content":{"184":{"position":[[294,9]]},"712":{"position":[[294,9]]}},"keywords":{}}],["dedic",{"_index":795,"title":{},"content":{"54":{"position":[[2287,10]]}},"keywords":{}}],["deep",{"_index":1276,"title":{},"content":{"98":{"position":[[59,4],[158,4]]},"612":{"position":[[59,4],[158,4]]},"992":{"position":[[63,4]]}},"keywords":{}}],["deepfm",{"_index":1341,"title":{"335":{"position":[[11,6]]},"805":{"position":[[11,6]]}},"content":{"102":{"position":[[1421,6]]},"157":{"position":[[286,6],[904,6]]},"158":{"position":[[573,7]]},"335":{"position":[[293,6]]},"616":{"position":[[1433,6]]},"657":{"position":[[286,6],[904,6]]},"658":{"position":[[573,7]]},"805":{"position":[[293,6]]}},"keywords":{}}],["deepfm.ctr",{"_index":1784,"title":{},"content":{"157":{"position":[[799,10],[825,10]]},"657":{"position":[[799,10],[825,10]]}},"keywords":{}}],["deepfm_ctr",{"_index":1718,"title":{},"content":{"147":{"position":[[1311,13]]},"647":{"position":[[1311,13]]}},"keywords":{}}],["def",{"_index":2641,"title":{},"content":{"343":{"position":[[434,3],[532,3],[764,3],[1347,3],[2008,3]]},"817":{"position":[[452,3],[550,3],[782,3],[1365,3],[2026,3]]}},"keywords":{}}],["default",{"_index":39,"title":{},"content":{"3":{"position":[[188,7]]},"6":{"position":[[124,7]]},"9":{"position":[[232,13],[819,13]]},"10":{"position":[[370,13],[856,13]]},"11":{"position":[[392,13]]},"12":{"position":[[250,13],[740,13]]},"13":{"position":[[403,13]]},"15":{"position":[[821,9]]},"18":{"position":[[818,9]]},"22":{"position":[[144,10],[902,10]]},"23":{"position":[[144,10],[1049,10]]},"24":{"position":[[411,10],[1062,10]]},"25":{"position":[[444,10]]},"26":{"position":[[152,10],[755,10]]},"27":{"position":[[447,10]]},"38":{"position":[[136,10],[1027,10]]},"39":{"position":[[769,10]]},"40":{"position":[[760,10]]},"41":{"position":[[597,10],[820,10]]},"107":{"position":[[955,9]]},"112":{"position":[[1709,7],[2029,8]]},"114":{"position":[[534,7]]},"115":{"position":[[543,8],[964,8]]},"116":{"position":[[389,7]]},"134":{"position":[[1444,7]]},"140":{"position":[[270,7],[652,7],[1097,7],[1192,7]]},"146":{"position":[[225,8]]},"147":{"position":[[1160,7]]},"152":{"position":[[801,7]]},"157":{"position":[[115,7],[192,7],[925,7],[1215,8]]},"219":{"position":[[19,7]]},"260":{"position":[[579,9]]},"310":{"position":[[182,9]]},"313":{"position":[[73,9],[188,7]]},"314":{"position":[[20,7],[119,8],[255,7],[539,7],[938,8]]},"327":{"position":[[951,7]]},"351":{"position":[[197,13]]},"359":{"position":[[206,13]]},"366":{"position":[[110,10]]},"369":{"position":[[110,10]]},"377":{"position":[[111,10]]},"389":{"position":[[104,10]]},"405":{"position":[[70,10]]},"410":{"position":[[789,9]]},"415":{"position":[[794,9]]},"424":{"position":[[329,10]]},"425":{"position":[[336,10]]},"429":{"position":[[53,7],[142,7]]},"444":{"position":[[94,7]]},"455":{"position":[[111,8]]},"463":{"position":[[188,7]]},"466":{"position":[[124,7]]},"470":{"position":[[118,7]]},"471":{"position":[[345,7]]},"473":{"position":[[187,7]]},"491":{"position":[[273,7],[736,7],[787,7]]},"492":{"position":[[146,7],[210,7],[283,7],[381,7],[804,8],[950,8],[1067,8],[1215,8]]},"502":{"position":[[1439,9]]},"538":{"position":[[232,13],[819,13]]},"539":{"position":[[370,13],[856,13]]},"540":{"position":[[392,13]]},"541":{"position":[[250,13],[740,13]]},"542":{"position":[[403,13]]},"544":{"position":[[821,9]]},"547":{"position":[[818,9]]},"551":{"position":[[144,10],[902,10]]},"552":{"position":[[144,10],[1049,10]]},"553":{"position":[[411,10],[1062,10]]},"554":{"position":[[444,10]]},"555":{"position":[[152,10],[755,10]]},"556":{"position":[[447,10]]},"560":{"position":[[136,10],[1027,10]]},"561":{"position":[[769,10]]},"562":{"position":[[760,10]]},"563":{"position":[[597,10],[820,10]]},"596":{"position":[[1709,7],[2029,8]]},"598":{"position":[[534,7]]},"599":{"position":[[543,8],[964,8]]},"600":{"position":[[389,7]]},"621":{"position":[[958,9]]},"640":{"position":[[270,7],[652,7],[1097,7],[1192,7]]},"646":{"position":[[225,8]]},"647":{"position":[[1160,7]]},"652":{"position":[[807,7]]},"657":{"position":[[115,7],[192,7],[925,7],[1215,8]]},"662":{"position":[[1444,7]]},"733":{"position":[[19,7]]},"734":{"position":[[117,7]]},"782":{"position":[[182,9]]},"785":{"position":[[73,9],[188,7]]},"786":{"position":[[20,7],[119,8],[255,7],[539,7],[938,8]]},"788":{"position":[[699,7]]},"791":{"position":[[14711,7],[15788,7],[30260,7]]},"825":{"position":[[197,13]]},"833":{"position":[[206,13]]},"840":{"position":[[110,10]]},"843":{"position":[[110,10]]},"851":{"position":[[111,10]]},"863":{"position":[[789,9]]},"868":{"position":[[794,9]]},"878":{"position":[[104,10]]},"894":{"position":[[70,10]]},"898":{"position":[[329,10]]},"899":{"position":[[336,10]]},"903":{"position":[[53,7],[142,7]]},"912":{"position":[[129,8]]},"930":{"position":[[118,7]]},"931":{"position":[[345,7]]},"933":{"position":[[187,7]]},"934":{"position":[[220,8]]},"964":{"position":[[1897,7]]}},"keywords":{}}],["default)vu",{"_index":3141,"title":{},"content":{"487":{"position":[[8,12]]}},"keywords":{}}],["defin",{"_index":458,"title":{"143":{"position":[[11,7]]},"643":{"position":[[11,7]]}},"content":{"53":{"position":[[14,7],[87,7],[775,6],[932,7],[5698,7]]},"101":{"position":[[283,6]]},"103":{"position":[[48,7],[222,7],[291,6]]},"112":{"position":[[48,7],[283,7],[414,6]]},"113":{"position":[[49,6]]},"115":{"position":[[1250,7]]},"139":{"position":[[1555,7]]},"140":{"position":[[525,7],[668,7],[771,7]]},"146":{"position":[[90,7]]},"147":{"position":[[1080,7],[1337,7]]},"152":{"position":[[113,7]]},"158":{"position":[[2543,7]]},"160":{"position":[[1179,7]]},"161":{"position":[[739,7]]},"189":{"position":[[30,7]]},"291":{"position":[[218,6]]},"297":{"position":[[0,6]]},"327":{"position":[[503,7]]},"328":{"position":[[606,6]]},"439":{"position":[[860,7]]},"596":{"position":[[48,7],[283,7],[414,6]]},"597":{"position":[[49,6]]},"599":{"position":[[1250,7]]},"615":{"position":[[283,6]]},"617":{"position":[[48,7],[222,7],[291,6]]},"639":{"position":[[1562,7]]},"640":{"position":[[525,7],[668,7],[771,7]]},"646":{"position":[[90,7]]},"647":{"position":[[1080,7],[1337,7]]},"652":{"position":[[113,7]]},"658":{"position":[[2543,7]]},"667":{"position":[[1180,7]]},"668":{"position":[[739,7]]},"717":{"position":[[30,7]]},"754":{"position":[[218,6]]},"764":{"position":[[0,6]]},"808":{"position":[[503,7]]},"809":{"position":[[626,6]]},"964":{"position":[[781,8],[1200,7]]},"965":{"position":[[395,7],[9892,7]]}},"keywords":{}}],["defined/stor",{"_index":264,"title":{"23":{"position":[[29,14]]},"367":{"position":[[29,14]]},"552":{"position":[[29,14]]},"841":{"position":[[29,14]]}},"content":{},"keywords":{}}],["definit",{"_index":1468,"title":{"113":{"position":[[16,10]]},"597":{"position":[[16,10]]}},"content":{"113":{"position":[[24,10]]},"114":{"position":[[502,10]]},"140":{"position":[[19,10]]},"161":{"position":[[943,11],[1014,10]]},"597":{"position":[[24,10]]},"598":{"position":[[502,10]]},"640":{"position":[[19,10]]},"668":{"position":[[943,11],[1014,10]]}},"keywords":{}}],["del_not",{"_index":1981,"title":{},"content":{"214":{"position":[[25,9]]},"709":{"position":[[25,9]]}},"keywords":{}}],["delay",{"_index":1965,"title":{},"content":{"210":{"position":[[70,7]]},"705":{"position":[[70,7]]}},"keywords":{}}],["deleg",{"_index":1408,"title":{},"content":{"107":{"position":[[426,9]]},"621":{"position":[[427,9]]}},"keywords":{}}],["delet",{"_index":107,"title":{"13":{"position":[[0,6]]},"19":{"position":[[0,6]]},"27":{"position":[[0,6]]},"34":{"position":[[0,6]]},"36":{"position":[[0,6]]},"41":{"position":[[0,6]]},"44":{"position":[[0,6]]},"50":{"position":[[0,6]]},"52":{"position":[[0,6]]},"360":{"position":[[0,6]]},"378":{"position":[[0,6]]},"396":{"position":[[0,6]]},"416":{"position":[[0,6]]},"451":{"position":[[0,6]]},"455":{"position":[[0,6]]},"459":{"position":[[0,6]]},"542":{"position":[[0,6]]},"548":{"position":[[0,6]]},"556":{"position":[[0,6]]},"563":{"position":[[0,6]]},"834":{"position":[[0,6]]},"852":{"position":[[0,6]]},"869":{"position":[[0,6]]},"885":{"position":[[0,6]]}},"content":{"4":{"position":[[961,6],[1003,6],[1063,6]]},"7":{"position":[[7,6]]},"13":{"position":[[56,6]]},"19":{"position":[[53,6]]},"27":{"position":[[53,6]]},"34":{"position":[[0,6],[70,6],[202,7]]},"36":{"position":[[0,6],[97,6]]},"41":{"position":[[0,6],[54,6],[187,7]]},"44":{"position":[[0,6],[45,6]]},"50":{"position":[[0,6],[63,6],[200,7]]},"52":{"position":[[0,6],[82,6],[236,7]]},"77":{"position":[[315,6],[344,6]]},"101":{"position":[[41,6]]},"213":{"position":[[49,7]]},"238":{"position":[[508,6],[604,6]]},"263":{"position":[[488,6]]},"277":{"position":[[103,6]]},"360":{"position":[[0,6]]},"362":{"position":[[14,6]]},"378":{"position":[[0,6]]},"380":{"position":[[14,6]]},"396":{"position":[[0,6]]},"398":{"position":[[14,6]]},"416":{"position":[[0,6]]},"418":{"position":[[14,6]]},"427":{"position":[[92,8]]},"428":{"position":[[0,6],[109,7]]},"430":{"position":[[79,8]]},"451":{"position":[[10,6]]},"455":{"position":[[10,6]]},"459":{"position":[[10,6]]},"464":{"position":[[961,6],[1003,6],[1063,6]]},"467":{"position":[[7,6]]},"542":{"position":[[56,6]]},"548":{"position":[[53,6]]},"556":{"position":[[53,6]]},"563":{"position":[[0,6],[54,6],[187,7]]},"586":{"position":[[315,6],[344,6]]},"615":{"position":[[41,6]]},"708":{"position":[[49,7]]},"744":{"position":[[1538,6],[1563,6],[1718,6]]},"788":{"position":[[921,6]]},"834":{"position":[[0,6]]},"836":{"position":[[14,6]]},"852":{"position":[[0,6]]},"854":{"position":[[14,6]]},"869":{"position":[[0,6]]},"871":{"position":[[14,6]]},"885":{"position":[[0,6]]},"887":{"position":[[14,6]]},"901":{"position":[[92,8]]},"902":{"position":[[0,6],[109,7]]},"904":{"position":[[79,8]]},"917":{"position":[[0,6]]}},"keywords":{}}],["delete_experiment(id",{"_index":2889,"title":{"428":{"position":[[0,21]]},"902":{"position":[[0,21]]}},"content":{},"keywords":{}}],["deletecommand",{"_index":1944,"title":{},"content":{"207":{"position":[[533,13]]},"702":{"position":[[533,13]]}},"keywords":{}}],["deletedtim",{"_index":428,"title":{},"content":{"41":{"position":[[502,14]]},"563":{"position":[[502,14]]}},"keywords":{}}],["deletedtime\":nul",{"_index":400,"title":{},"content":{"38":{"position":[[740,19]]},"39":{"position":[[482,19]]},"40":{"position":[[473,19]]},"389":{"position":[[703,19]]},"392":{"position":[[450,19]]},"395":{"position":[[438,19]]},"398":{"position":[[468,19]]},"560":{"position":[[740,19]]},"561":{"position":[[482,19]]},"562":{"position":[[473,19]]},"878":{"position":[[703,19]]},"881":{"position":[[450,19]]},"884":{"position":[[438,19]]},"887":{"position":[[468,19]]}},"keywords":{}}],["deliveri",{"_index":1915,"title":{},"content":{"201":{"position":[[488,8]]},"696":{"position":[[488,8]]}},"keywords":{}}],["deni",{"_index":3082,"title":{"482":{"position":[[39,6]]},"945":{"position":[[39,6]]}},"content":{"482":{"position":[[278,6]]},"791":{"position":[[15032,6],[15581,6],[16276,6],[17071,6],[30581,6],[31130,6],[31925,6]]},"945":{"position":[[278,6]]}},"keywords":{}}],["dep",{"_index":1649,"title":{},"content":{"139":{"position":[[653,4]]},"639":{"position":[[653,4]]}},"keywords":{}}],["depart",{"_index":2399,"title":{"515":{"position":[[0,10]]},"535":{"position":[[0,10]]}},"content":{"302":{"position":[[229,11],[384,11]]},"770":{"position":[[229,11],[384,11]]}},"keywords":{}}],["depend",{"_index":406,"title":{"93":{"position":[[8,12]]},"222":{"position":[[0,12]]},"607":{"position":[[8,12]]},"724":{"position":[[0,12]]}},"content":{"38":{"position":[[1041,15]]},"39":{"position":[[783,15]]},"40":{"position":[[774,15]]},"41":{"position":[[834,15]]},"53":{"position":[[1688,7]]},"90":{"position":[[1246,13],[1459,12]]},"112":{"position":[[605,12],[934,13]]},"115":{"position":[[358,10],[552,13],[973,13]]},"116":{"position":[[238,12]]},"132":{"position":[[558,12],[2037,6],[2060,13]]},"133":{"position":[[709,14]]},"134":{"position":[[494,13]]},"135":{"position":[[134,10]]},"139":{"position":[[1448,12]]},"140":{"position":[[689,12]]},"142":{"position":[[60,12]]},"146":{"position":[[98,13],[234,13]]},"152":{"position":[[494,12]]},"221":{"position":[[59,12]]},"239":{"position":[[156,12]]},"244":{"position":[[47,12]]},"306":{"position":[[366,10]]},"313":{"position":[[938,12]]},"338":{"position":[[19,10]]},"339":{"position":[[108,12]]},"350":{"position":[[397,13],[459,13]]},"488":{"position":[[50,7]]},"560":{"position":[[1041,15]]},"561":{"position":[[783,15]]},"562":{"position":[[774,15]]},"563":{"position":[[834,15]]},"596":{"position":[[605,12],[934,13]]},"599":{"position":[[358,10],[552,13],[973,13]]},"600":{"position":[[238,12]]},"604":{"position":[[1246,13],[1459,12]]},"639":{"position":[[1455,12]]},"640":{"position":[[689,12]]},"642":{"position":[[60,12]]},"646":{"position":[[98,13],[234,13]]},"652":{"position":[[500,12]]},"660":{"position":[[558,12],[2037,6],[2060,13]]},"661":{"position":[[709,14]]},"662":{"position":[[494,13]]},"663":{"position":[[134,10]]},"735":{"position":[[59,12]]},"743":{"position":[[140,12]]},"744":{"position":[[653,12],[1700,12]]},"747":{"position":[[47,12]]},"757":{"position":[[366,10]]},"777":{"position":[[74,7],[166,8],[1058,6]]},"785":{"position":[[938,12]]},"791":{"position":[[215,9],[1943,10],[17520,10],[17785,10],[32374,10]]},"812":{"position":[[19,10]]},"824":{"position":[[397,13],[459,13]]},"950":{"position":[[76,7],[139,9]]},"954":{"position":[[80,7],[145,9]]},"969":{"position":[[84,7],[152,8],[428,12]]},"981":{"position":[[1454,10]]},"992":{"position":[[180,12]]}},"keywords":{}}],["dependencies.answ",{"_index":1124,"title":{},"content":{"90":{"position":[[1369,19]]},"604":{"position":[[1369,19]]}},"keywords":{}}],["deploy",{"_index":2,"title":{"0":{"position":[[16,10]]},"2":{"position":[[0,6]]},"106":{"position":[[0,10]]},"308":{"position":[[0,6]]},"310":{"position":[[0,6]]},"318":{"position":[[0,6]]},"460":{"position":[[16,10]]},"462":{"position":[[0,6]]},"496":{"position":[[0,6]]},"620":{"position":[[0,10]]},"780":{"position":[[0,6]]},"782":{"position":[[0,6]]},"795":{"position":[[0,6]]}},"content":{"3":{"position":[[142,9],[204,8]]},"4":{"position":[[164,10]]},"90":{"position":[[1310,6]]},"91":{"position":[[454,11],[493,8]]},"106":{"position":[[63,8],[210,6]]},"118":{"position":[[895,10],[921,6]]},"160":{"position":[[640,11],[875,8]]},"184":{"position":[[226,11]]},"186":{"position":[[923,8]]},"212":{"position":[[23,10]]},"238":{"position":[[526,10],[611,10]]},"239":{"position":[[0,6],[60,11]]},"240":{"position":[[253,6]]},"255":{"position":[[306,10]]},"274":{"position":[[233,6]]},"289":{"position":[[86,11]]},"303":{"position":[[272,9],[482,6]]},"310":{"position":[[166,8]]},"318":{"position":[[3,6]]},"340":{"position":[[143,10]]},"440":{"position":[[268,10]]},"463":{"position":[[142,9],[204,8]]},"464":{"position":[[164,10]]},"496":{"position":[[73,6]]},"604":{"position":[[1310,6]]},"605":{"position":[[454,11],[493,8]]},"620":{"position":[[63,8],[210,6]]},"625":{"position":[[896,10],[922,6]]},"667":{"position":[[640,11],[875,8]]},"707":{"position":[[23,10]]},"712":{"position":[[226,11]]},"714":{"position":[[923,8]]},"743":{"position":[[0,6]]},"744":{"position":[[253,6],[924,6]]},"752":{"position":[[86,11]]},"771":{"position":[[272,9],[482,6]]},"782":{"position":[[166,8]]},"795":{"position":[[3,6]]},"814":{"position":[[145,10]]},"924":{"position":[[256,10]]}},"keywords":{}}],["deprec",{"_index":2392,"title":{"992":{"position":[[35,10]]}},"content":{"295":{"position":[[83,13]]}},"keywords":{}}],["depth",{"_index":3314,"title":{},"content":{"777":{"position":[[835,5]]}},"keywords":{}}],["describ",{"_index":631,"title":{},"content":{"53":{"position":[[5612,9],[8620,9]]},"82":{"position":[[413,10]]},"137":{"position":[[0,8]]},"161":{"position":[[774,9]]},"173":{"position":[[6,8]]},"179":{"position":[[17,9]]},"180":{"position":[[3,9]]},"181":{"position":[[3,9]]},"293":{"position":[[21,9]]},"320":{"position":[[159,8],[187,8]]},"327":{"position":[[847,9]]},"589":{"position":[[413,10]]},"665":{"position":[[0,8]]},"668":{"position":[[774,9]]},"680":{"position":[[6,8]]},"686":{"position":[[17,9]]},"687":{"position":[[3,9]]},"688":{"position":[[3,9]]},"760":{"position":[[21,9]]},"797":{"position":[[159,8],[187,8]]},"964":{"position":[[690,9]]}},"keywords":{}}],["describedhere(tldr",{"_index":922,"title":{},"content":{"73":{"position":[[381,19]]},"582":{"position":[[381,19]]}},"keywords":{}}],["descript",{"_index":200,"title":{},"content":{"15":{"position":[[146,14],[273,14],[384,14],[505,14]]},"18":{"position":[[143,14],[270,14],[381,14],[502,14],[1113,14]]},"31":{"position":[[319,13],[682,13],[1045,13],[1409,13]]},"32":{"position":[[327,13]]},"33":{"position":[[136,14]]},"41":{"position":[[860,14]]},"46":{"position":[[126,14]]},"47":{"position":[[269,13],[447,13],[626,13]]},"48":{"position":[[285,13]]},"49":{"position":[[132,14]]},"113":{"position":[[195,12]]},"157":{"position":[[238,11],[844,12],[1085,12],[1227,12]]},"161":{"position":[[895,11]]},"236":{"position":[[248,12]]},"293":{"position":[[111,11]]},"350":{"position":[[189,11],[208,11]]},"358":{"position":[[162,11],[186,11]]},"409":{"position":[[123,11],[147,11],[494,11],[513,11]]},"410":{"position":[[114,14],[241,14],[352,14],[473,14],[1738,17],[1827,17],[1919,17],[2009,17],[2102,17],[2198,18]]},"412":{"position":[[740,17],[829,17],[921,17],[1011,17],[1104,17],[1200,18]]},"414":{"position":[[132,11],[156,11]]},"415":{"position":[[119,14],[246,14],[357,14],[478,14],[1768,17],[1857,17],[1949,17],[2039,17],[2132,17],[2228,17]]},"418":{"position":[[764,17],[853,17],[945,17],[1035,17],[1128,17],[1224,17]]},"502":{"position":[[1327,11]]},"544":{"position":[[146,14],[273,14],[384,14],[505,14]]},"547":{"position":[[143,14],[270,14],[381,14],[502,14],[1113,14]]},"563":{"position":[[860,14]]},"597":{"position":[[195,12]]},"657":{"position":[[238,11],[844,12],[1085,12],[1227,12]]},"668":{"position":[[895,11]]},"740":{"position":[[251,12]]},"760":{"position":[[111,11]]},"824":{"position":[[189,11],[208,11]]},"832":{"position":[[162,11],[186,11]]},"862":{"position":[[123,11],[147,11],[494,11],[513,11]]},"863":{"position":[[114,14],[241,14],[352,14],[473,14],[1738,17],[1827,17],[1919,17],[2009,17],[2102,17],[2198,18]]},"865":{"position":[[740,17],[829,17],[921,17],[1011,17],[1104,17],[1200,18]]},"867":{"position":[[132,11],[156,11]]},"868":{"position":[[119,14],[246,14],[357,14],[478,14],[1768,17],[1857,17],[1949,17],[2039,17],[2132,17],[2228,17]]},"871":{"position":[[764,17],[853,17],[945,17],[1035,17],[1128,17],[1224,17]]}},"keywords":{}}],["description\":\"th",{"_index":2854,"title":{},"content":{"410":{"position":[[1625,18]]},"412":{"position":[[627,18]]},"415":{"position":[[1655,18]]},"418":{"position":[[651,18]]},"863":{"position":[[1625,18]]},"865":{"position":[[627,18]]},"868":{"position":[[1655,18]]},"871":{"position":[[651,18]]}},"keywords":{}}],["description\":\"thi",{"_index":2847,"title":{},"content":{"410":{"position":[[1289,19],[1401,19],[1512,19]]},"412":{"position":[[291,19],[403,19],[514,19]]},"415":{"position":[[1319,19],[1431,19],[1542,19]]},"418":{"position":[[315,19],[427,19],[538,19]]},"863":{"position":[[1289,19],[1401,19],[1512,19]]},"865":{"position":[[291,19],[403,19],[514,19]]},"868":{"position":[[1319,19],[1431,19],[1542,19]]},"871":{"position":[[315,19],[427,19],[538,19]]}},"keywords":{}}],["description\":nul",{"_index":407,"title":{},"content":{"38":{"position":[[1067,19]]},"39":{"position":[[809,19]]},"40":{"position":[[800,19]]},"351":{"position":[[1130,19]]},"353":{"position":[[435,19],[1008,19],[1327,19]]},"356":{"position":[[696,19]]},"359":{"position":[[835,19]]},"362":{"position":[[699,19]]},"366":{"position":[[1203,19]]},"369":{"position":[[1337,19]]},"371":{"position":[[795,19],[1818,19]]},"374":{"position":[[754,19]]},"377":{"position":[[1234,19]]},"380":{"position":[[715,19]]},"389":{"position":[[1055,19]]},"392":{"position":[[802,19]]},"395":{"position":[[790,19]]},"398":{"position":[[820,19]]},"410":{"position":[[2592,19]]},"412":{"position":[[1594,19]]},"415":{"position":[[2622,19]]},"418":{"position":[[1618,19]]},"421":{"position":[[893,19]]},"560":{"position":[[1067,19]]},"561":{"position":[[809,19]]},"562":{"position":[[800,19]]},"825":{"position":[[1130,19]]},"827":{"position":[[435,19],[1008,19],[1327,19]]},"830":{"position":[[696,19]]},"833":{"position":[[835,19]]},"836":{"position":[[699,19]]},"840":{"position":[[1203,19]]},"843":{"position":[[1337,19]]},"845":{"position":[[795,19],[1818,19]]},"848":{"position":[[754,19]]},"851":{"position":[[1234,19]]},"854":{"position":[[715,19]]},"863":{"position":[[2592,19]]},"865":{"position":[[1594,19]]},"868":{"position":[[2622,19]]},"871":{"position":[[1618,19]]},"874":{"position":[[893,19]]},"878":{"position":[[1055,19]]},"881":{"position":[[802,19]]},"884":{"position":[[790,19]]},"887":{"position":[[820,19]]}},"keywords":{}}],["descriptionenvvar",{"_index":2804,"title":{},"content":{"388":{"position":[[448,18]]},"877":{"position":[[448,18]]}},"keywords":{}}],["descriptionid",{"_index":2794,"title":{},"content":{"373":{"position":[[19,13]]},"376":{"position":[[19,13]]},"379":{"position":[[19,13]]},"384":{"position":[[19,13]]},"391":{"position":[[19,13]]},"394":{"position":[[19,13]]},"397":{"position":[[19,13]]},"847":{"position":[[19,13]]},"850":{"position":[[19,13]]},"853":{"position":[[19,13]]},"858":{"position":[[19,13]]},"880":{"position":[[19,13]]},"883":{"position":[[19,13]]},"886":{"position":[[19,13]]}},"keywords":{}}],["descriptionintp_tserver_host",{"_index":1957,"title":{},"content":{"209":{"position":[[419,28]]},"704":{"position":[[419,28]]}},"keywords":{}}],["descriptionmeta",{"_index":2727,"title":{},"content":{"365":{"position":[[68,15]]},"388":{"position":[[60,15]]},"409":{"position":[[612,15]]},"839":{"position":[[68,15]]},"862":{"position":[[612,15]]},"877":{"position":[[60,15]]}},"keywords":{}}],["descriptionnam",{"_index":1780,"title":{},"content":{"157":{"position":[[129,15]]},"179":{"position":[[115,15]]},"181":{"position":[[411,15]]},"350":{"position":[[70,15],[264,15]]},"355":{"position":[[19,15]]},"358":{"position":[[19,15]]},"361":{"position":[[19,15]]},"365":{"position":[[323,15]]},"388":{"position":[[262,15]]},"409":{"position":[[19,15],[389,15],[867,15]]},"414":{"position":[[19,15]]},"417":{"position":[[19,15]]},"657":{"position":[[129,15]]},"686":{"position":[[115,15]]},"688":{"position":[[411,15]]},"824":{"position":[[70,15],[264,15]]},"829":{"position":[[19,15]]},"832":{"position":[[19,15]]},"835":{"position":[[19,15]]},"839":{"position":[[323,15]]},"862":{"position":[[19,15],[389,15],[867,15]]},"867":{"position":[[19,15]]},"870":{"position":[[19,15]]},"877":{"position":[[262,15]]}},"keywords":{}}],["descriptionreplica",{"_index":2734,"title":{},"content":{"365":{"position":[[935,19]]},"409":{"position":[[1148,19]]},"839":{"position":[[935,19]]},"862":{"position":[[1148,19]]}},"keywords":{}}],["descriptionsubmarine_server_host",{"_index":1952,"title":{},"content":{"209":{"position":[[138,32]]},"704":{"position":[[138,32]]}},"keywords":{}}],["descriptionsyncmod",{"_index":2738,"title":{},"content":{"365":{"position":[[1250,19]]},"409":{"position":[[1383,19]]},"839":{"position":[[1250,19]]},"862":{"position":[[1383,19]]}},"keywords":{}}],["descriptiontemplate_nam",{"_index":2874,"title":{},"content":{"420":{"position":[[19,24]]},"873":{"position":[[19,24]]}},"keywords":{}}],["descriptiontyp",{"_index":1855,"title":{},"content":{"180":{"position":[[119,15]]},"687":{"position":[[140,15]]}},"keywords":{}}],["descriptionus",{"_index":1061,"title":{},"content":{"89":{"position":[[5,15]]},"603":{"position":[[5,15]]}},"keywords":{}}],["design",{"_index":803,"title":{"188":{"position":[[0,6]]},"195":{"position":[[15,6]]},"204":{"position":[[7,6]]},"205":{"position":[[10,6]]},"690":{"position":[[15,6]]},"699":{"position":[[7,6]]},"700":{"position":[[10,6]]},"716":{"position":[[0,6]]}},"content":{"54":{"position":[[2706,6]]},"79":{"position":[[1414,10]]},"99":{"position":[[475,8]]},"110":{"position":[[1621,6],[1661,7]]},"118":{"position":[[603,9],[674,8],[693,7],[776,6],[818,7]]},"139":{"position":[[66,6],[2134,6]]},"161":{"position":[[20,8]]},"177":{"position":[[235,8]]},"205":{"position":[[8,7]]},"613":{"position":[[475,8]]},"624":{"position":[[1626,6],[1666,7]]},"625":{"position":[[604,9],[675,8],[694,7],[777,6],[819,7]]},"639":{"position":[[66,6],[2147,6]]},"668":{"position":[[20,8]]},"684":{"position":[[235,8]]},"700":{"position":[[8,7]]}},"keywords":{}}],["destin",{"_index":3076,"title":{},"content":{"481":{"position":[[1837,12]]},"791":{"position":[[14308,13],[29857,13]]},"944":{"position":[[1837,12]]}},"keywords":{}}],["destroy",{"_index":3361,"title":{},"content":{"788":{"position":[[890,7]]}},"keywords":{}}],["detach",{"_index":2307,"title":{},"content":{"271":{"position":[[155,6]]}},"keywords":{}}],["detail",{"_index":566,"title":{"134":{"position":[[0,8]]},"662":{"position":[[0,8]]}},"content":{"53":{"position":[[2879,7]]},"82":{"position":[[659,7]]},"83":{"position":[[528,8]]},"87":{"position":[[80,8]]},"90":{"position":[[762,7]]},"95":{"position":[[15,8]]},"110":{"position":[[1593,7]]},"115":{"position":[[199,7]]},"116":{"position":[[423,8]]},"117":{"position":[[781,6]]},"118":{"position":[[20,7]]},"121":{"position":[[414,7]]},"130":{"position":[[470,8]]},"133":{"position":[[592,8]]},"140":{"position":[[54,8]]},"141":{"position":[[55,7]]},"142":{"position":[[98,8],[156,8]]},"149":{"position":[[59,8]]},"154":{"position":[[1146,7]]},"161":{"position":[[788,8],[822,8]]},"175":{"position":[[189,7]]},"241":{"position":[[4,8]]},"257":{"position":[[291,7]]},"259":{"position":[[0,8]]},"296":{"position":[[44,8]]},"314":{"position":[[502,7]]},"327":{"position":[[215,7]]},"332":{"position":[[102,7]]},"365":{"position":[[871,7]]},"388":{"position":[[387,7]]},"409":{"position":[[1084,7]]},"424":{"position":[[82,8],[148,8]]},"425":{"position":[[110,8],[175,8]]},"426":{"position":[[21,8],[94,8]]},"428":{"position":[[85,8]]},"471":{"position":[[433,6]]},"495":{"position":[[242,8]]},"589":{"position":[[659,7]]},"594":{"position":[[80,8]]},"599":{"position":[[199,7]]},"600":{"position":[[423,8]]},"601":{"position":[[781,6]]},"604":{"position":[[762,7]]},"609":{"position":[[15,8]]},"624":{"position":[[1598,7]]},"625":{"position":[[20,7]]},"628":{"position":[[414,7]]},"637":{"position":[[470,8]]},"640":{"position":[[54,8]]},"641":{"position":[[55,7]]},"642":{"position":[[98,8],[156,8]]},"649":{"position":[[59,8]]},"654":{"position":[[1151,7]]},"661":{"position":[[592,8]]},"668":{"position":[[788,8],[822,8]]},"682":{"position":[[189,7]]},"744":{"position":[[1759,8]]},"763":{"position":[[44,8]]},"786":{"position":[[502,7]]},"802":{"position":[[102,7]]},"808":{"position":[[215,7]]},"839":{"position":[[871,7]]},"862":{"position":[[1084,7]]},"877":{"position":[[387,7]]},"898":{"position":[[82,8],[148,8]]},"899":{"position":[[110,8],[175,8]]},"900":{"position":[[21,8],[94,8]]},"902":{"position":[[85,8]]},"909":{"position":[[4,7]]},"931":{"position":[[433,6]]},"961":{"position":[[809,8]]},"976":{"position":[[157,8]]}},"keywords":{}}],["detect",{"_index":1925,"title":{},"content":{"203":{"position":[[312,8]]},"236":{"position":[[30,6]]},"698":{"position":[[312,8]]},"740":{"position":[[30,6]]}},"keywords":{}}],["determin",{"_index":1549,"title":{},"content":{"122":{"position":[[70,10]]},"629":{"position":[[70,10]]},"791":{"position":[[14980,9],[15529,9],[16224,9],[17019,9],[30529,9],[31078,9],[31873,9]]}},"keywords":{}}],["dev",{"_index":578,"title":{"303":{"position":[[4,3]]},"771":{"position":[[5,3]]}},"content":{"53":{"position":[[3358,4]]},"71":{"position":[[119,3]]},"86":{"position":[[344,3],[391,3],[629,3]]},"219":{"position":[[394,5],[478,5]]},"238":{"position":[[395,5]]},"240":{"position":[[141,5]]},"263":{"position":[[53,3],[250,3],[368,3],[579,3],[600,3],[818,3],[903,3]]},"276":{"position":[[58,3]]},"277":{"position":[[246,3]]},"278":{"position":[[23,3]]},"313":{"position":[[764,5]]},"343":{"position":[[124,5]]},"344":{"position":[[99,5]]},"435":{"position":[[171,3],[211,3],[284,5],[391,5]]},"437":{"position":[[129,5],[396,5]]},"439":{"position":[[1082,5]]},"440":{"position":[[289,3]]},"580":{"position":[[119,3]]},"588":{"position":[[131,4]]},"733":{"position":[[394,5],[478,5]]},"742":{"position":[[395,5]]},"744":{"position":[[141,5]]},"777":{"position":[[695,3]]},"785":{"position":[[764,5]]},"817":{"position":[[124,5]]},"818":{"position":[[73,5]]},"919":{"position":[[171,3],[211,3],[276,5],[391,5]]},"921":{"position":[[129,5],[396,5]]},"923":{"position":[[142,5]]},"924":{"position":[[277,3]]},"950":{"position":[[671,3],[685,3]]},"954":{"position":[[598,3],[611,3]]},"969":{"position":[[546,3],[559,3],[573,3],[608,3]]}},"keywords":{}}],["dev=tru",{"_index":3281,"title":{},"content":{"744":{"position":[[794,8]]}},"keywords":{}}],["dev@submarine.apache.org",{"_index":634,"title":{},"content":{"53":{"position":[[5920,27]]},"79":{"position":[[2059,24]]},"86":{"position":[[728,24]]}},"keywords":{}}],["devel",{"_index":3293,"title":{},"content":{"777":{"position":[[139,5],[429,5]]},"954":{"position":[[419,5]]}},"keywords":{}}],["develop",{"_index":479,"title":{"63":{"position":[[7,7]]},"96":{"position":[[46,11]]},"232":{"position":[[0,11]]},"234":{"position":[[0,7]]},"239":{"position":[[0,7]]},"240":{"position":[[0,7]]},"241":{"position":[[0,7]]},"242":{"position":[[0,7]]},"246":{"position":[[6,11]]},"347":{"position":[[23,12]]},"434":{"position":[[11,11]]},"440":{"position":[[23,11]]},"572":{"position":[[7,7]]},"610":{"position":[[46,11]]},"736":{"position":[[0,11]]},"738":{"position":[[0,7]]},"743":{"position":[[0,7]]},"744":{"position":[[0,7]]},"745":{"position":[[0,7]]},"749":{"position":[[6,11]]},"821":{"position":[[23,12]]},"918":{"position":[[11,11]]},"924":{"position":[[23,11]]}},"content":{"53":{"position":[[627,12],[1072,10],[1118,11],[1232,10],[2395,9],[5112,12],[5895,11]]},"54":{"position":[[1568,10],[2029,11]]},"81":{"position":[[84,10]]},"83":{"position":[[398,11]]},"90":{"position":[[175,11]]},"96":{"position":[[364,9],[395,11],[447,9]]},"102":{"position":[[764,9]]},"105":{"position":[[59,10]]},"140":{"position":[[154,9]]},"186":{"position":[[183,12],[684,10],[936,11]]},"197":{"position":[[297,12],[514,12]]},"205":{"position":[[200,11]]},"238":{"position":[[30,9]]},"241":{"position":[[45,9]]},"246":{"position":[[28,11]]},"281":{"position":[[1465,9]]},"293":{"position":[[90,11]]},"302":{"position":[[457,7]]},"303":{"position":[[182,10],[200,11]]},"316":{"position":[[19,10]]},"365":{"position":[[1222,11]]},"433":{"position":[[48,11],[103,10]]},"435":{"position":[[21,10]]},"436":{"position":[[57,12]]},"438":{"position":[[23,7]]},"440":{"position":[[10,12],[107,7],[306,7]]},"498":{"position":[[67,11]]},"500":{"position":[[503,12]]},"502":{"position":[[245,11],[789,11],[3023,11]]},"588":{"position":[[84,10]]},"590":{"position":[[398,11]]},"604":{"position":[[175,11]]},"610":{"position":[[364,9],[395,11],[447,9]]},"616":{"position":[[769,9]]},"619":{"position":[[59,10]]},"640":{"position":[[154,9]]},"692":{"position":[[297,12],[514,12]]},"700":{"position":[[200,11]]},"714":{"position":[[183,12],[684,10],[936,11]]},"742":{"position":[[30,9]]},"744":{"position":[[370,7],[418,9],[1800,9]]},"749":{"position":[[28,11]]},"760":{"position":[[90,11]]},"770":{"position":[[457,7]]},"771":{"position":[[182,10],[200,11]]},"793":{"position":[[19,10]]},"839":{"position":[[1222,11]]},"919":{"position":[[21,10]]},"920":{"position":[[57,12]]},"922":{"position":[[23,7]]},"924":{"position":[[10,12],[107,7],[294,7]]},"927":{"position":[[48,11],[103,10]]},"950":{"position":[[418,11]]},"992":{"position":[[146,9]]}},"keywords":{}}],["devic",{"_index":2536,"title":{"484":{"position":[[56,6]]},"947":{"position":[[56,6]]}},"content":{"327":{"position":[[766,6],[830,6]]},"481":{"position":[[1977,7]]},"484":{"position":[[250,6],[322,6],[563,6]]},"944":{"position":[[1977,7]]},"947":{"position":[[250,6],[322,6],[563,6]]},"965":{"position":[[1462,6],[1708,6],[7610,6],[7629,8],[7789,6],[7808,8],[7968,6],[7987,8],[8147,6],[8166,8],[8326,6],[8345,8],[8505,6],[8524,8],[8684,6],[8703,8],[8863,6],[8882,8],[10879,6],[11125,6]]}},"keywords":{}}],["devicemapp",{"_index":3108,"title":{},"content":{"484":{"position":[[549,13]]},"947":{"position":[[549,13]]}},"keywords":{}}],["df",{"_index":3949,"title":{},"content":{"964":{"position":[[1859,3]]}},"keywords":{}}],["dhcp",{"_index":3407,"title":{},"content":{"791":{"position":[[2099,4],[2115,4],[2525,4],[2991,4],[3007,4],[4504,4],[4620,4],[9157,4],[9198,4],[9257,4],[9338,4],[9379,4],[9438,4],[13755,4],[13807,4],[17941,4],[17957,4],[18367,4],[18815,4],[18831,4],[20328,4],[20444,4],[24875,4],[24916,4],[24975,4],[25056,4],[25097,4],[25156,4],[29304,4],[29356,4]]}},"keywords":{}}],["diagram",{"_index":1434,"title":{"110":{"position":[[13,7]]},"624":{"position":[[13,7]]}},"content":{"110":{"position":[[1053,9]]},"139":{"position":[[1098,8]]},"160":{"position":[[602,7]]},"624":{"position":[[1058,9]]},"639":{"position":[[1103,8]]},"667":{"position":[[602,7]]}},"keywords":{}}],["dialect>+<driver>://<username>:<password>@<host>:<port>/<databas",{"_index":2990,"title":{},"content":{"471":{"position":[[273,68]]},"931":{"position":[[273,68]]}},"keywords":{}}],["dialog",{"_index":2203,"title":{},"content":{"260":{"position":[[2003,6]]}},"keywords":{}}],["dict",{"_index":2877,"title":{"424":{"position":[[44,4]]},"425":{"position":[[52,4]]},"426":{"position":[[27,4]]},"428":{"position":[[30,4]]},"431":{"position":[[64,4]]},"514":{"position":[[5,4]]},"534":{"position":[[5,4]]},"898":{"position":[[44,4]]},"899":{"position":[[52,4]]},"900":{"position":[[27,4]]},"902":{"position":[[30,4]]},"905":{"position":[[64,4]]}},"content":{"965":{"position":[[9598,4]]}},"keywords":{}}],["dictionari",{"_index":3765,"title":{},"content":{"911":{"position":[[63,10]]},"913":{"position":[[63,10]]},"964":{"position":[[674,10]]}},"keywords":{}}],["diff",{"_index":630,"title":{"92":{"position":[[55,9],[81,9]]},"606":{"position":[[55,9],[81,9]]}},"content":{"53":{"position":[[5512,9],[5549,9],[7634,9],[7660,9]]},"90":{"position":[[1765,9]]},"91":{"position":[[8,9],[626,9]]},"92":{"position":[[79,9],[912,9]]},"101":{"position":[[248,9],[431,9]]},"103":{"position":[[363,9],[508,9]]},"107":{"position":[[933,9]]},"108":{"position":[[99,9]]},"110":{"position":[[1275,9]]},"112":{"position":[[355,9],[956,9],[1052,9],[1197,9],[2079,9],[2119,9],[2169,9],[2196,9]]},"115":{"position":[[20,9]]},"127":{"position":[[17,9]]},"132":{"position":[[1244,9]]},"134":{"position":[[1149,9]]},"140":{"position":[[897,9],[938,9],[1498,9],[1580,9]]},"142":{"position":[[9,9]]},"146":{"position":[[469,9]]},"148":{"position":[[52,11],[153,11],[184,11]]},"152":{"position":[[29,9],[196,9],[400,9],[664,9]]},"153":{"position":[[248,9]]},"154":{"position":[[758,9]]},"162":{"position":[[1101,9]]},"177":{"position":[[138,9],[162,9],[313,9],[422,11]]},"252":{"position":[[1093,9]]},"291":{"position":[[65,10]]},"401":{"position":[[508,9]]},"439":{"position":[[120,9]]},"487":{"position":[[173,9]]},"498":{"position":[[612,9],[633,9]]},"502":{"position":[[430,9],[3013,9]]},"596":{"position":[[355,9],[956,9],[1052,9],[1197,9],[2079,9],[2119,9],[2169,9],[2196,9]]},"599":{"position":[[20,9]]},"604":{"position":[[1765,9]]},"605":{"position":[[8,9],[626,9]]},"606":{"position":[[79,9],[912,9]]},"615":{"position":[[248,9],[431,9]]},"617":{"position":[[363,9],[508,9]]},"621":{"position":[[936,9]]},"622":{"position":[[99,9]]},"624":{"position":[[1280,9]]},"634":{"position":[[17,9]]},"640":{"position":[[897,9],[938,9],[1498,9],[1580,9]]},"642":{"position":[[9,9]]},"646":{"position":[[469,9]]},"648":{"position":[[52,11],[153,11],[184,11]]},"652":{"position":[[29,9],[196,9],[406,9],[670,9]]},"653":{"position":[[248,9]]},"654":{"position":[[758,9]]},"660":{"position":[[1244,9]]},"662":{"position":[[1149,9]]},"669":{"position":[[1354,9]]},"684":{"position":[[138,9],[162,9],[313,9],[422,11]]},"754":{"position":[[65,10]]},"890":{"position":[[508,9]]},"964":{"position":[[1335,9]]}},"keywords":{}}],["dig",{"_index":1524,"title":{},"content":{"118":{"position":[[7,7]]},"625":{"position":[[7,7]]}},"keywords":{}}],["dim",{"_index":3010,"title":{},"content":{"474":{"position":[[295,9],[342,9]]}},"keywords":{}}],["dir=\"<job",{"_index":4169,"title":{},"content":{"966":{"position":[[548,9]]}},"keywords":{}}],["dir=$my_bucket/cifar",{"_index":3934,"title":{},"content":{"963":{"position":[[891,20]]}},"keywords":{}}],["dir=$my_bucket/model_dirs/cifarmultigpu",{"_index":3930,"title":{},"content":{"963":{"position":[[708,39]]}},"keywords":{}}],["dir=${pwd}/cifar",{"_index":3911,"title":{},"content":{"960":{"position":[[331,16]]},"961":{"position":[[100,16],[316,16],[626,16]]}},"keywords":{}}],["dir=%checkpoint_path",{"_index":4299,"title":{},"content":{"981":{"position":[[620,21]]}},"keywords":{}}],["dir=%input_path",{"_index":4298,"title":{},"content":{"981":{"position":[[597,16]]}},"keywords":{}}],["dir=/tmp/cifar10",{"_index":3914,"title":{},"content":{"961":{"position":[[133,16],[349,16],[659,16]]}},"keywords":{}}],["dir=gs://path/cifar",{"_index":3952,"title":{},"content":{"965":{"position":[[451,19],[9948,19]]}},"keywords":{}}],["dir=gs://path/model_dir",{"_index":3953,"title":{},"content":{"965":{"position":[[487,24],[9984,24],[16105,24]]}},"keywords":{}}],["dir=hdfs://${dfs_name_service}/tmp/cifar",{"_index":3036,"title":{},"content":{"479":{"position":[[585,40],[640,40],[856,40],[911,40]]},"942":{"position":[[585,40],[640,40],[856,40],[911,40]]}},"keywords":{}}],["direct",{"_index":1058,"title":{},"content":{"86":{"position":[[671,10]]},"404":{"position":[[85,6]]},"652":{"position":[[1059,6]]},"893":{"position":[[85,6]]},"909":{"position":[[54,6]]},"934":{"position":[[89,6]]}},"keywords":{}}],["directli",{"_index":1100,"title":{},"content":{"90":{"position":[[674,8]]},"129":{"position":[[379,8]]},"236":{"position":[[48,8]]},"238":{"position":[[327,8]]},"240":{"position":[[73,8]]},"313":{"position":[[273,8]]},"502":{"position":[[3162,8]]},"604":{"position":[[674,8]]},"636":{"position":[[379,8]]},"740":{"position":[[48,8]]},"742":{"position":[[327,8]]},"744":{"position":[[73,8]]},"785":{"position":[[273,8]]},"981":{"position":[[1465,9]]}},"keywords":{}}],["directori",{"_index":2298,"title":{"277":{"position":[[36,9]]}},"content":{"270":{"position":[[139,10],[292,10],[546,9]]},"274":{"position":[[85,9]]},"278":{"position":[[83,9]]},"288":{"position":[[25,9]]},"289":{"position":[[1162,10]]},"305":{"position":[[25,9],[320,9]]},"436":{"position":[[220,9]]},"441":{"position":[[315,9]]},"492":{"position":[[559,9],[939,10]]},"751":{"position":[[25,9]]},"752":{"position":[[1162,10]]},"756":{"position":[[25,9],[320,9]]},"791":{"position":[[7603,11],[15805,10],[23321,11]]},"920":{"position":[[220,9]]},"925":{"position":[[315,9]]},"952":{"position":[[19,10]]},"957":{"position":[[21,10]]},"963":{"position":[[556,9],[597,9]]},"972":{"position":[[14,10]]}},"keywords":{}}],["directory,th",{"_index":3334,"title":{},"content":{"779":{"position":[[44,13]]}},"keywords":{}}],["dirti",{"_index":1907,"title":{},"content":{"199":{"position":[[358,5]]},"694":{"position":[[358,5]]}},"keywords":{}}],["disadvantag",{"_index":1216,"title":{"203":{"position":[[0,13]]},"698":{"position":[[0,13]]}},"content":{"93":{"position":[[226,14]]},"607":{"position":[[226,14]]}},"keywords":{}}],["disagr",{"_index":697,"title":{},"content":{"53":{"position":[[8407,8]]},"79":{"position":[[567,13]]}},"keywords":{}}],["disclaim",{"_index":2144,"title":{},"content":{"254":{"position":[[87,10]]},"255":{"position":[[154,10]]}},"keywords":{}}],["disconnect",{"_index":2235,"title":{},"content":{"263":{"position":[[455,13]]}},"keywords":{}}],["discov",{"_index":976,"title":{},"content":{"79":{"position":[[35,8]]}},"keywords":{}}],["discoveri",{"_index":1891,"title":{"187":{"position":[[8,9]]},"200":{"position":[[8,9]]},"695":{"position":[[8,9]]},"715":{"position":[[8,9]]}},"content":{"200":{"position":[[388,9]]},"695":{"position":[[388,9]]}},"keywords":{}}],["discuss",{"_index":535,"title":{"134":{"position":[[9,11]]},"662":{"position":[[9,11]]}},"content":{"53":{"position":[[1922,10]]},"54":{"position":[[921,10],[1454,10],[2684,10]]},"69":{"position":[[370,12]]},"79":{"position":[[160,10],[213,9],[356,7],[381,10],[591,10]]},"116":{"position":[[432,10]]},"133":{"position":[[601,11]]},"158":{"position":[[2940,9]]},"578":{"position":[[370,12]]},"600":{"position":[[432,10]]},"658":{"position":[[2940,9]]},"661":{"position":[[601,11]]}},"keywords":{}}],["discuss]answ",{"_index":772,"title":{},"content":{"54":{"position":[[1528,15]]}},"keywords":{}}],["disk",{"_index":20,"title":{},"content":{"2":{"position":[[61,4]]},"139":{"position":[[1811,4]]},"260":{"position":[[1628,6],[1884,6]]},"462":{"position":[[61,4]]},"639":{"position":[[1824,4]]},"791":{"position":[[3458,4],[19282,4]]}},"keywords":{}}],["display",{"_index":3213,"title":{},"content":{"500":{"position":[[207,9],[459,9]]},"502":{"position":[[73,9],[1179,7],[1532,10]]}},"keywords":{}}],["disput",{"_index":605,"title":{},"content":{"53":{"position":[[4273,8]]}},"keywords":{}}],["dist",{"_index":280,"title":{"276":{"position":[[32,4]]},"298":{"position":[[15,4]]},"765":{"position":[[15,4]]}},"content":{"24":{"position":[[1229,4]]},"28":{"position":[[412,4],[479,4]]},"29":{"position":[[325,4],[1502,4]]},"251":{"position":[[24,4]]},"253":{"position":[[91,5]]},"263":{"position":[[363,4],[574,4],[595,4],[813,4],[898,4],[1223,4],[1253,4],[1278,4],[1500,4],[1589,4]]},"277":{"position":[[241,4]]},"278":{"position":[[18,4]]},"305":{"position":[[315,4]]},"323":{"position":[[200,4]]},"324":{"position":[[99,4],[174,4],[661,4],[734,4],[932,4],[1005,4]]},"328":{"position":[[697,4],[764,6]]},"405":{"position":[[44,4]]},"441":{"position":[[275,5],[449,6],[563,6]]},"553":{"position":[[1229,4]]},"557":{"position":[[412,4],[479,4]]},"558":{"position":[[325,4],[1502,4]]},"756":{"position":[[315,4]]},"773":{"position":[[200,4]]},"774":{"position":[[114,4],[187,4],[385,4],[458,4]]},"809":{"position":[[717,4],[784,6]]},"894":{"position":[[44,4]]},"925":{"position":[[275,5],[449,6],[563,6]]}},"keywords":{}}],["dist_sync",{"_index":4327,"title":{},"content":{"990":{"position":[[520,10],[703,10],[908,10]]},"991":{"position":[[590,10],[775,10],[947,10]]}},"keywords":{}}],["distinct",{"_index":1214,"title":{},"content":{"93":{"position":[[202,8]]},"607":{"position":[[202,8]]}},"keywords":{}}],["distribut",{"_index":297,"title":{"221":{"position":[[30,12]]},"342":{"position":[[24,11]]},"343":{"position":[[29,11]]},"734":{"position":[[30,12]]},"735":{"position":[[30,12]]},"791":{"position":[[4,11]]},"816":{"position":[[24,11]]},"817":{"position":[[29,11]]},"962":{"position":[[4,11]]}},"content":{"29":{"position":[[369,11],[1546,11]]},"53":{"position":[[4007,11]]},"102":{"position":[[1192,11]]},"110":{"position":[[1312,13]]},"139":{"position":[[1299,11]]},"140":{"position":[[967,11],[1033,11],[1056,12]]},"152":{"position":[[88,11]]},"157":{"position":[[1011,11]]},"158":{"position":[[1187,11],[2343,12]]},"177":{"position":[[172,11]]},"210":{"position":[[5,11]]},"212":{"position":[[48,11],[117,11],[186,11]]},"335":{"position":[[231,11]]},"343":{"position":[[98,11]]},"479":{"position":[[0,11],[138,11],[434,11]]},"558":{"position":[[369,11],[1546,11]]},"616":{"position":[[1204,11]]},"624":{"position":[[1317,13]]},"639":{"position":[[1305,11]]},"640":{"position":[[967,11],[1033,11],[1056,12]]},"652":{"position":[[88,11]]},"657":{"position":[[1011,11]]},"658":{"position":[[1187,11],[2343,12]]},"684":{"position":[[172,11]]},"705":{"position":[[5,11]]},"707":{"position":[[48,11],[117,11],[186,11]]},"734":{"position":[[99,12],[189,12],[290,12],[393,12],[494,12],[600,12]]},"791":{"position":[[396,11],[1580,11],[1859,11]]},"805":{"position":[[231,11]]},"817":{"position":[[98,11]]},"909":{"position":[[164,11]]},"942":{"position":[[0,11],[138,11],[434,11]]},"964":{"position":[[1815,11],[1933,11]]},"965":{"position":[[82,11]]}},"keywords":{}}],["distribution/target/apach",{"_index":2301,"title":{},"content":{"270":{"position":[[375,26]]}},"keywords":{}}],["distutil",{"_index":3843,"title":{},"content":{"950":{"position":[[640,9]]}},"keywords":{}}],["dmaven.javadoc.skip=tru",{"_index":2279,"title":{},"content":{"267":{"position":[[253,24]]},"274":{"position":[[258,24]]},"934":{"position":[[145,24]]}},"keywords":{}}],["dmaven=3.6.1",{"_index":2005,"title":{},"content":{"221":{"position":[[175,12]]},"735":{"position":[[175,12]]}},"keywords":{}}],["do",{"_index":2389,"title":{},"content":{"291":{"position":[[170,5]]},"754":{"position":[[170,5]]}},"keywords":{}}],["doc",{"_index":269,"title":{},"content":{"23":{"position":[[682,3]]},"84":{"position":[[29,3]]},"139":{"position":[[2141,4]]},"158":{"position":[[2968,4]]},"369":{"position":[[648,3]]},"471":{"position":[[453,4]]},"552":{"position":[[682,3]]},"591":{"position":[[29,3]]},"639":{"position":[[2154,4]]},"658":{"position":[[2968,4]]},"791":{"position":[[2492,3],[2742,3],[18334,3],[18584,3]]},"843":{"position":[[648,3]]},"931":{"position":[[453,4]]}},"keywords":{}}],["dock",{"_index":1337,"title":{"114":{"position":[[13,6]]},"190":{"position":[[12,6]]},"219":{"position":[[28,6]]},"227":{"position":[[0,6]]},"436":{"position":[[12,6]]},"483":{"position":[[19,6]]},"598":{"position":[[13,6]]},"718":{"position":[[12,6]]},"729":{"position":[[0,6]]},"733":{"position":[[28,6]]},"776":{"position":[[9,6]]},"777":{"position":[[14,6]]},"778":{"position":[[37,6]]},"779":{"position":[[6,6]]},"789":{"position":[[8,6]]},"920":{"position":[[12,6]]},"946":{"position":[[19,6]]},"949":{"position":[[0,6]]},"950":{"position":[[14,6]]},"951":{"position":[[37,6]]},"952":{"position":[[15,6]]},"953":{"position":[[0,6]]},"954":{"position":[[14,6]]},"955":{"position":[[39,6]]},"956":{"position":[[6,6]]},"957":{"position":[[15,6]]},"968":{"position":[[0,6]]},"969":{"position":[[14,6]]},"970":{"position":[[42,6]]},"971":{"position":[[6,6]]},"972":{"position":[[15,6]]},"976":{"position":[[15,6]]},"978":{"position":[[8,6]]},"981":{"position":[[5,6]]},"983":{"position":[[8,6]]},"986":{"position":[[5,6]]},"988":{"position":[[8,6]]},"991":{"position":[[5,6]]}},"content":{"102":{"position":[[1275,6]]},"103":{"position":[[84,6],[108,6],[166,6]]},"110":{"position":[[1559,6]]},"112":{"position":[[84,6],[108,6],[166,6],[883,6]]},"113":{"position":[[147,6],[372,6],[466,6]]},"114":{"position":[[0,6],[152,6],[201,6],[359,6]]},"115":{"position":[[893,6],[1258,6]]},"116":{"position":[[130,6],[170,6]]},"117":{"position":[[898,6],[963,6],[1123,6]]},"128":{"position":[[386,6]]},"132":{"position":[[651,6],[2091,6]]},"133":{"position":[[724,6],[792,6]]},"134":{"position":[[364,6],[443,6],[609,6],[681,6],[800,6]]},"140":{"position":[[1508,6]]},"148":{"position":[[630,6]]},"152":{"position":[[1210,6],[1272,6],[1294,6],[1478,6]]},"160":{"position":[[1423,7]]},"175":{"position":[[45,6]]},"181":{"position":[[529,6]]},"189":{"position":[[144,6]]},"190":{"position":[[125,6],[186,6]]},"217":{"position":[[36,7]]},"219":{"position":[[27,6],[147,6],[312,6]]},"235":{"position":[[36,7]]},"238":{"position":[[252,6],[298,6],[364,6],[382,6],[458,6],[488,6]]},"240":{"position":[[10,6],[44,6],[110,6],[128,6],[203,6],[233,6]]},"281":{"position":[[335,6]]},"303":{"position":[[29,6],[127,6],[527,7]]},"305":{"position":[[345,6]]},"310":{"position":[[266,6]]},"324":{"position":[[256,6],[312,6],[372,6],[442,6]]},"327":{"position":[[534,6],[894,6]]},"342":{"position":[[109,6]]},"344":{"position":[[8,6],[87,6]]},"350":{"position":[[130,6]]},"358":{"position":[[98,6]]},"365":{"position":[[697,6]]},"436":{"position":[[12,6]]},"476":{"position":[[277,6],[356,6],[388,6]]},"477":{"position":[[77,6],[94,7]]},"483":{"position":[[21,6],[73,6]]},"484":{"position":[[2,6]]},"488":{"position":[[108,6],[158,6],[291,6]]},"489":{"position":[[46,6],[395,7]]},"596":{"position":[[84,6],[108,6],[166,6],[883,6]]},"597":{"position":[[147,6],[372,6],[466,6]]},"598":{"position":[[0,6],[152,6],[201,6],[359,6]]},"599":{"position":[[893,6],[1258,6]]},"600":{"position":[[130,6],[170,6]]},"601":{"position":[[898,6],[963,6],[1123,6]]},"616":{"position":[[1287,6]]},"617":{"position":[[84,6],[108,6],[166,6]]},"624":{"position":[[1564,6]]},"635":{"position":[[386,6]]},"640":{"position":[[1508,6]]},"648":{"position":[[630,6]]},"652":{"position":[[1490,6],[1552,6],[1574,6],[1758,6]]},"660":{"position":[[651,6],[2091,6]]},"661":{"position":[[724,6],[792,6]]},"662":{"position":[[364,6],[443,6],[609,6],[681,6],[800,6]]},"667":{"position":[[1425,7]]},"682":{"position":[[45,6]]},"688":{"position":[[529,6]]},"717":{"position":[[151,6]]},"718":{"position":[[130,6],[191,6]]},"731":{"position":[[36,7]]},"733":{"position":[[27,6],[147,6],[312,6]]},"739":{"position":[[36,7]]},"742":{"position":[[252,6],[298,6],[364,6],[382,6],[458,6],[488,6],[696,6]]},"744":{"position":[[10,6],[44,6],[110,6],[128,6],[203,6],[233,6]]},"756":{"position":[[345,6]]},"771":{"position":[[29,6],[127,6],[527,7]]},"777":{"position":[[1602,6],[1623,6],[1644,6]]},"778":{"position":[[54,6]]},"779":{"position":[[15,6],[36,7],[163,6],[247,6],[432,6]]},"782":{"position":[[266,6]]},"789":{"position":[[37,6]]},"791":{"position":[[1626,6]]},"808":{"position":[[534,6]]},"816":{"position":[[109,6]]},"818":{"position":[[8,6]]},"824":{"position":[[130,6]]},"832":{"position":[[98,6]]},"839":{"position":[[697,6]]},"920":{"position":[[12,6]]},"946":{"position":[[21,6],[73,6]]},"947":{"position":[[2,6]]},"950":{"position":[[1627,6],[1648,6],[1669,6]]},"951":{"position":[[69,6],[318,6]]},"952":{"position":[[60,6],[113,6],[165,6],[243,6]]},"954":{"position":[[2025,6],[2046,6],[2067,6]]},"955":{"position":[[71,6]]},"957":{"position":[[62,6],[115,6],[169,6]]},"969":{"position":[[1662,6],[1683,6],[1704,6]]},"970":{"position":[[59,6]]},"972":{"position":[[6,7],[51,6],[132,6],[233,6]]},"976":{"position":[[64,6],[135,6]]},"979":{"position":[[662,6]]},"981":{"position":[[1286,6],[1361,6]]},"991":{"position":[[64,6]]}},"keywords":{}}],["docker/mxnet",{"_index":3862,"title":{},"content":{"952":{"position":[[6,12]]}},"keywords":{}}],["docker/mxnet/base/ubuntu",{"_index":3858,"title":{},"content":{"951":{"position":[[101,24]]}},"keywords":{}}],["docker/pytorch",{"_index":3904,"title":{},"content":{"957":{"position":[[6,14]]}},"keywords":{}}],["docker/pytorch/base/ubuntu",{"_index":3899,"title":{},"content":{"955":{"position":[[105,26]]}},"keywords":{}}],["docker/tensorflow/base/ubuntu",{"_index":4237,"title":{},"content":{"970":{"position":[[123,29]]}},"keywords":{}}],["docker_hadoop_hdfs_hom",{"_index":4310,"title":{},"content":{"981":{"position":[[1303,23]]}},"keywords":{}}],["docker_hadoop_hdfs_home=$docker_hadoop_hdfs_hom",{"_index":3372,"title":{},"content":{"791":{"position":[[480,48]]}},"keywords":{}}],["docker_hadoop_hdfs_home=/app/${submarine_v",{"_index":3365,"title":{},"content":{"791":{"position":[[163,49]]}},"keywords":{}}],["docker_hadoop_hdfs_home=/hadoop",{"_index":3019,"title":{},"content":{"479":{"position":[[91,31]]},"942":{"position":[[91,31]]},"981":{"position":[[810,31]]},"986":{"position":[[520,31]]}},"keywords":{}}],["docker_imag",{"_index":3383,"title":{},"content":{"791":{"position":[[1020,12]]},"981":{"position":[[282,12]]},"986":{"position":[[282,12]]},"991":{"position":[[356,12]]}},"keywords":{}}],["docker_java_hom",{"_index":4308,"title":{},"content":{"981":{"position":[[1242,16]]}},"keywords":{}}],["docker_java_home=/opt/java",{"_index":3018,"title":{},"content":{"479":{"position":[[56,26]]},"942":{"position":[[56,26]]}},"keywords":{}}],["docker_java_home=/usr/lib/jvm/java",{"_index":3370,"title":{},"content":{"791":{"position":[[416,34]]},"981":{"position":[[856,34]]},"986":{"position":[[566,34]]}},"keywords":{}}],["dockerfil",{"_index":1476,"title":{"940":{"position":[[6,11]]}},"content":{"114":{"position":[[124,11],[322,10],[445,12],[458,10]]},"117":{"position":[[408,10],[636,11]]},"129":{"position":[[452,10]]},"598":{"position":[[124,11],[322,10],[445,12],[458,10]]},"601":{"position":[[408,10],[636,11]]},"636":{"position":[[452,10]]},"777":{"position":[[0,10]]},"789":{"position":[[15,10]]},"940":{"position":[[13,10],[67,10],[118,10]]},"950":{"position":[[0,10]]},"951":{"position":[[25,11]]},"954":{"position":[[0,10]]},"955":{"position":[[25,11]]},"969":{"position":[[0,10]]},"991":{"position":[[31,10]]}},"keywords":{}}],["dockerhub",{"_index":2418,"title":{},"content":{"310":{"position":[[316,10]]},"782":{"position":[[316,10]]}},"keywords":{}}],["dockerimag",{"_index":158,"title":{},"content":{"9":{"position":[[125,13],[712,13]]},"10":{"position":[[263,13],[747,13]]},"11":{"position":[[285,13]]},"12":{"position":[[135,13],[625,13],[880,12]]},"13":{"position":[[288,13]]},"41":{"position":[[697,14]]},"146":{"position":[[546,11]]},"350":{"position":[[111,11]]},"351":{"position":[[90,13]]},"358":{"position":[[74,11]]},"359":{"position":[[91,13]]},"365":{"position":[[629,11],[833,11]]},"538":{"position":[[125,13],[712,13]]},"539":{"position":[[263,13],[747,13]]},"540":{"position":[[285,13]]},"541":{"position":[[135,13],[625,13],[880,12]]},"542":{"position":[[288,13]]},"563":{"position":[[697,14]]},"646":{"position":[[546,11]]},"824":{"position":[[111,11]]},"825":{"position":[[90,13]]},"832":{"position":[[74,11]]},"833":{"position":[[91,13]]},"839":{"position":[[629,11],[833,11]]}},"keywords":{}}],["dockerimage\":\"apache/submarine:jupyt",{"_index":404,"title":{},"content":{"38":{"position":[[906,39]]},"39":{"position":[[648,39]]},"40":{"position":[[639,39]]},"353":{"position":[[245,39],[1141,39]]},"389":{"position":[[869,39]]},"392":{"position":[[616,39]]},"395":{"position":[[604,39]]},"398":{"position":[[634,39]]},"560":{"position":[[906,39]]},"561":{"position":[[648,39]]},"562":{"position":[[639,39]]},"827":{"position":[[245,39],[1141,39]]},"878":{"position":[[869,39]]},"881":{"position":[[616,39]]},"884":{"position":[[604,39]]},"887":{"position":[[634,39]]}},"keywords":{}}],["dockerimage\":\"continuumio/anaconda3",{"_index":2710,"title":{},"content":{"351":{"position":[[694,38]]},"353":{"position":[[572,38]]},"356":{"position":[[260,38]]},"359":{"position":[[581,38]]},"362":{"position":[[263,38]]},"825":{"position":[[694,38]]},"827":{"position":[[572,38]]},"830":{"position":[[260,38]]},"833":{"position":[[581,38]]},"836":{"position":[[263,38]]}},"keywords":{}}],["dockerimage\":nul",{"_index":2761,"title":{},"content":{"366":{"position":[[1164,19]]},"369":{"position":[[1298,19]]},"371":{"position":[[756,19],[1779,19]]},"374":{"position":[[715,19]]},"377":{"position":[[1195,19]]},"380":{"position":[[676,19]]},"410":{"position":[[2553,19]]},"412":{"position":[[1555,19]]},"415":{"position":[[2583,19]]},"418":{"position":[[1579,19]]},"421":{"position":[[854,19]]},"840":{"position":[[1164,19]]},"843":{"position":[[1298,19]]},"845":{"position":[[756,19],[1779,19]]},"848":{"position":[[715,19]]},"851":{"position":[[1195,19]]},"854":{"position":[[676,19]]},"863":{"position":[[2553,19]]},"865":{"position":[[1555,19]]},"868":{"position":[[2583,19]]},"871":{"position":[[1579,19]]},"874":{"position":[[854,19]]}},"keywords":{}}],["docsand",{"_index":2453,"title":{},"content":{"314":{"position":[[643,7]]},"786":{"position":[[643,7]]}},"keywords":{}}],["docsfor",{"_index":2451,"title":{},"content":{"314":{"position":[[489,7]]},"786":{"position":[[489,7]]}},"keywords":{}}],["document",{"_index":457,"title":{},"content":{"53":{"position":[[5,8],[1479,14],[3152,14],[8905,14],[10591,9]]},"54":{"position":[[889,10],[1173,9],[1203,9],[1295,9],[2107,9]]},"56":{"position":[[163,8]]},"73":{"position":[[71,14]]},"83":{"position":[[433,13]]},"114":{"position":[[396,8]]},"139":{"position":[[5,8]]},"259":{"position":[[22,9]]},"291":{"position":[[26,8]]},"293":{"position":[[5,8]]},"565":{"position":[[163,8]]},"582":{"position":[[71,14]]},"590":{"position":[[444,13]]},"598":{"position":[[396,8]]},"639":{"position":[[5,8]]},"754":{"position":[[26,8]]},"760":{"position":[[5,8]]},"936":{"position":[[27,13]]},"976":{"position":[[20,9]]}},"keywords":{}}],["docusauru",{"_index":2063,"title":{},"content":{"242":{"position":[[33,10],[216,10]]},"745":{"position":[[33,10],[216,10]]}},"keywords":{}}],["doesn't",{"_index":1222,"title":{},"content":{"93":{"position":[[459,7],[939,7]]},"134":{"position":[[558,7]]},"179":{"position":[[223,7]]},"607":{"position":[[459,7],[939,7]]},"662":{"position":[[558,7]]},"686":{"position":[[223,7]]},"788":{"position":[[788,7]]},"791":{"position":[[1721,7]]}},"keywords":{}}],["domain_suffix=\"ml.com",{"_index":3389,"title":{},"content":{"791":{"position":[[1321,22]]}},"keywords":{}}],["domin",{"_index":1131,"title":{},"content":{"90":{"position":[[1691,8]]},"604":{"position":[[1691,8]]}},"keywords":{}}],["don",{"_index":921,"title":{},"content":{"73":{"position":[[343,5]]},"161":{"position":[[968,5]]},"252":{"position":[[1941,4]]},"253":{"position":[[154,4],[540,4]]},"271":{"position":[[70,4],[171,4]]},"272":{"position":[[118,4]]},"484":{"position":[[1031,4]]},"582":{"position":[[343,5]]},"668":{"position":[[968,5]]},"791":{"position":[[32565,4]]},"947":{"position":[[1031,4]]},"954":{"position":[[1125,4]]}},"keywords":{}}],["don't",{"_index":829,"title":{},"content":{"60":{"position":[[316,5]]},"73":{"position":[[401,5]]},"103":{"position":[[630,5]]},"112":{"position":[[1319,5]]},"113":{"position":[[287,5]]},"114":{"position":[[302,5]]},"117":{"position":[[29,5]]},"252":{"position":[[1124,5]]},"314":{"position":[[135,5]]},"569":{"position":[[316,5]]},"582":{"position":[[401,5]]},"596":{"position":[[1319,5]]},"597":{"position":[[287,5]]},"598":{"position":[[302,5]]},"601":{"position":[[29,5]]},"617":{"position":[[630,5]]},"786":{"position":[[135,5]]},"791":{"position":[[1744,5]]}},"keywords":{}}],["don’t",{"_index":2597,"title":{},"content":{"335":{"position":[[127,5]]},"805":{"position":[[127,5]]}},"keywords":{}}],["doubl",{"_index":3230,"title":{},"content":{"502":{"position":[[804,6]]}},"keywords":{}}],["dovecot",{"_index":3452,"title":{},"content":{"791":{"position":[[2707,7],[18549,7]]}},"keywords":{}}],["down",{"_index":2320,"title":{"279":{"position":[[9,4]]}},"content":{},"keywords":{}}],["downgrad",{"_index":1926,"title":{},"content":{"203":{"position":[[341,11]]},"698":{"position":[[341,11]]}},"keywords":{}}],["download",{"_index":1617,"title":{"249":{"position":[[3,8]]},"322":{"position":[[0,8]]},"772":{"position":[[0,8]]}},"content":{"134":{"position":[[965,8],[2450,8]]},"140":{"position":[[720,10],[813,11]]},"147":{"position":[[207,11]]},"252":{"position":[[90,8]]},"316":{"position":[[227,8]]},"323":{"position":[[53,10]]},"333":{"position":[[90,8]]},"490":{"position":[[104,8]]},"491":{"position":[[648,8],[720,11]]},"502":{"position":[[884,9],[938,8]]},"522":{"position":[[441,31],[473,8]]},"640":{"position":[[720,10],[813,11]]},"647":{"position":[[207,11]]},"662":{"position":[[965,8],[2450,8]]},"773":{"position":[[53,10]]},"788":{"position":[[129,8]]},"793":{"position":[[227,8]]},"803":{"position":[[90,8]]},"960":{"position":[[43,8],[173,8]]}},"keywords":{}}],["downsid",{"_index":1641,"title":{},"content":{"136":{"position":[[237,8]]},"664":{"position":[[237,8]]}},"keywords":{}}],["draw",{"_index":1441,"title":{},"content":{"110":{"position":[[1043,4]]},"624":{"position":[[1048,4]]}},"keywords":{}}],["driv",{"_index":1457,"title":{},"content":{"112":{"position":[[822,7]]},"303":{"position":[[542,7]]},"327":{"position":[[870,7]]},"596":{"position":[[822,7]]},"771":{"position":[[542,7]]}},"keywords":{}}],["driver=dock",{"_index":15,"title":{},"content":{"2":{"position":[[22,13]]},"338":{"position":[[159,13]]},"462":{"position":[[22,13]]},"744":{"position":[[592,13]]},"812":{"position":[[161,13]]}},"keywords":{}}],["ds",{"_index":1444,"title":{},"content":{"110":{"position":[[1406,2]]},"624":{"position":[[1411,2]]}},"keywords":{}}],["ds_train",{"_index":2676,"title":{},"content":{"343":{"position":[[1615,8],[1803,8]]},"817":{"position":[[1633,8],[1821,8]]}},"keywords":{}}],["ds_train.with_options(opt",{"_index":2681,"title":{},"content":{"343":{"position":[[1814,30]]},"817":{"position":[[1832,30]]}},"keywords":{}}],["dsa",{"_index":2176,"title":{},"content":{"260":{"position":[[593,3],[613,3]]},"791":{"position":[[16607,3],[16718,5],[31461,3],[31572,5]]}},"keywords":{}}],["dskiprat",{"_index":2413,"title":{},"content":{"306":{"position":[[466,8]]},"757":{"position":[[466,8]]}},"keywords":{}}],["dskipt",{"_index":1994,"title":{},"content":{"219":{"position":[[348,10]]},"221":{"position":[[286,10]]},"238":{"position":[[215,10]]},"270":{"position":[[338,10]]},"274":{"position":[[222,10]]},"306":{"position":[[413,10]]},"733":{"position":[[348,10]]},"734":{"position":[[159,10],[247,10],[349,10],[451,10],[552,10],[632,10]]},"735":{"position":[[286,10]]},"742":{"position":[[215,10]]},"757":{"position":[[413,10]]},"934":{"position":[[171,10]]}},"keywords":{}}],["due",{"_index":1763,"title":{},"content":{"153":{"position":[[231,3]]},"653":{"position":[[231,3]]}},"keywords":{}}],["duplic",{"_index":1261,"title":{},"content":{"96":{"position":[[248,9]]},"155":{"position":[[419,13]]},"610":{"position":[[248,9]]},"655":{"position":[[426,13]]}},"keywords":{}}],["dur",{"_index":1209,"title":{},"content":{"92":{"position":[[991,6]]},"260":{"position":[[1635,6],[1891,6]]},"265":{"position":[[837,6]]},"279":{"position":[[289,6]]},"284":{"position":[[340,6]]},"606":{"position":[[991,6]]},"965":{"position":[[262,6],[9836,6]]},"966":{"position":[[429,6]]}},"keywords":{}}],["dynam",{"_index":1888,"title":{},"content":{"186":{"position":[[776,12]]},"714":{"position":[[776,12]]}},"keywords":{}}],["e",{"_index":2107,"title":{},"content":{"252":{"position":[[661,1],[906,1],[1537,1],[1776,1]]},"260":{"position":[[2739,3]]},"261":{"position":[[194,3]]},"435":{"position":[[630,1]]},"488":{"position":[[216,1]]}},"keywords":{}}],["e)mail",{"_index":2192,"title":{},"content":{"260":{"position":[[1445,7]]}},"keywords":{}}],["e.g",{"_index":891,"title":{},"content":{"69":{"position":[[240,5]]},"77":{"position":[[447,5]]},"103":{"position":[[490,5]]},"112":{"position":[[1179,5]]},"139":{"position":[[1776,5]]},"152":{"position":[[67,5],[234,5]]},"155":{"position":[[347,5]]},"202":{"position":[[126,5]]},"492":{"position":[[630,5],[1045,5]]},"578":{"position":[[240,5]]},"586":{"position":[[447,5]]},"596":{"position":[[1179,5]]},"617":{"position":[[490,5]]},"639":{"position":[[1789,5]]},"652":{"position":[[67,5],[234,5]]},"655":{"position":[[354,5]]},"697":{"position":[[126,5]]}},"keywords":{}}],["e2",{"_index":2059,"title":{"289":{"position":[[4,3]]},"290":{"position":[[4,3]]},"291":{"position":[[19,3]]},"752":{"position":[[4,3]]},"753":{"position":[[4,3]]},"754":{"position":[[19,3]]}},"content":{"239":{"position":[[458,3]]},"288":{"position":[[40,3]]},"289":{"position":[[1271,3]]},"438":{"position":[[210,4],[271,5]]},"743":{"position":[[442,3]]},"751":{"position":[[40,3]]},"752":{"position":[[1271,3]]},"922":{"position":[[210,4],[271,5]]}},"keywords":{}}],["e9ca23d68d884d4ebb19d07889727da",{"_index":382,"title":{},"content":{"38":{"position":[[158,34]]},"389":{"position":[[126,34]]},"560":{"position":[[158,34]]},"878":{"position":[[126,34]]}},"keywords":{}}],["each",{"_index":1405,"title":{},"content":{"107":{"position":[[265,4]]},"122":{"position":[[57,4],[109,4],[180,4]]},"139":{"position":[[1753,4]]},"152":{"position":[[723,4]]},"153":{"position":[[341,4]]},"157":{"position":[[62,4]]},"179":{"position":[[382,4]]},"186":{"position":[[825,4],[1128,4]]},"187":{"position":[[40,4]]},"201":{"position":[[66,4],[129,4]]},"207":{"position":[[252,4],[473,4]]},"208":{"position":[[360,4]]},"211":{"position":[[478,4],[1279,4]]},"237":{"position":[[14,4]]},"261":{"position":[[462,4]]},"290":{"position":[[0,4]]},"293":{"position":[[48,4],[126,4]]},"307":{"position":[[0,4]]},"340":{"position":[[72,4]]},"346":{"position":[[182,4]]},"491":{"position":[[43,4]]},"499":{"position":[[0,4]]},"501":{"position":[[82,4]]},"502":{"position":[[94,4],[412,4],[569,4]]},"621":{"position":[[265,4]]},"629":{"position":[[57,4],[109,4],[180,4]]},"639":{"position":[[1766,4]]},"652":{"position":[[729,4]]},"653":{"position":[[341,4]]},"657":{"position":[[62,4]]},"686":{"position":[[382,4]]},"696":{"position":[[66,4],[129,4]]},"702":{"position":[[252,4],[473,4]]},"703":{"position":[[360,4]]},"706":{"position":[[478,4],[1279,4]]},"714":{"position":[[825,4],[1128,4]]},"715":{"position":[[40,4]]},"741":{"position":[[14,4]]},"753":{"position":[[0,4]]},"758":{"position":[[0,4]]},"760":{"position":[[48,4],[126,4]]},"814":{"position":[[74,4]]},"820":{"position":[[153,4]]},"913":{"position":[[197,4]]},"964":{"position":[[112,4],[1019,5],[1349,4]]},"965":{"position":[[49,4]]}},"keywords":{}}],["earli",{"_index":2008,"title":{},"content":{"223":{"position":[[38,8]]},"224":{"position":[[31,8]]},"231":{"position":[[31,8]]},"725":{"position":[[38,8]]},"726":{"position":[[31,8]]}},"keywords":{}}],["easi",{"_index":1091,"title":{},"content":{"90":{"position":[[427,4],[817,4],[888,4],[1231,4],[1483,6]]},"93":{"position":[[332,4],[371,4]]},"102":{"position":[[1140,4]]},"134":{"position":[[276,6]]},"303":{"position":[[462,4]]},"335":{"position":[[46,4]]},"502":{"position":[[449,4]]},"604":{"position":[[427,4],[817,4],[888,4],[1231,4],[1483,6]]},"607":{"position":[[332,4],[371,4]]},"616":{"position":[[1151,4]]},"662":{"position":[[276,6]]},"771":{"position":[[462,4]]},"805":{"position":[[46,4]]}},"keywords":{}}],["easili",{"_index":1145,"title":{"117":{"position":[[34,6]]},"601":{"position":[[34,6]]}},"content":{"90":{"position":[[2302,6]]},"106":{"position":[[72,6]]},"115":{"position":[[339,6],[407,6]]},"128":{"position":[[204,6]]},"184":{"position":[[363,6]]},"200":{"position":[[84,6],[305,6]]},"313":{"position":[[102,6]]},"440":{"position":[[55,6]]},"599":{"position":[[339,6],[407,6]]},"604":{"position":[[2302,6]]},"620":{"position":[[72,6]]},"635":{"position":[[204,6]]},"695":{"position":[[84,6],[305,6]]},"712":{"position":[[363,6]]},"785":{"position":[[102,6]]},"924":{"position":[[55,6]]}},"keywords":{}}],["ecdsa",{"_index":3711,"title":{},"content":{"791":{"position":[[16738,5],[16850,7],[31592,5],[31704,7]]}},"keywords":{}}],["echo",{"_index":2120,"title":{},"content":{"252":{"position":[[1907,4]]},"253":{"position":[[119,4],[514,4]]},"271":{"position":[[22,4],[116,4]]},"272":{"position":[[84,4]]},"484":{"position":[[533,4],[669,4],[730,4]]},"791":{"position":[[1412,6]]},"947":{"position":[[533,4],[669,4],[730,4]]},"950":{"position":[[771,4]]}},"keywords":{}}],["eclips",{"_index":911,"title":{},"content":{"71":{"position":[[237,7]]},"580":{"position":[[237,7]]}},"keywords":{}}],["economi",{"_index":1877,"title":{},"content":{"184":{"position":[[458,8]]},"712":{"position":[[458,8]]}},"keywords":{}}],["ed25519",{"_index":3714,"title":{},"content":{"791":{"position":[[16872,7],[16986,9],[31726,7],[31840,9]]}},"keywords":{}}],["edg",{"_index":1161,"title":{},"content":{"91":{"position":[[39,5]]},"605":{"position":[[39,5]]}},"keywords":{}}],["edit",{"_index":859,"title":{},"content":{"63":{"position":[[8,4],[116,8]]},"77":{"position":[[307,4]]},"101":{"position":[[35,5]]},"134":{"position":[[708,4],[1788,4]]},"242":{"position":[[381,5]]},"252":{"position":[[214,4]]},"502":{"position":[[854,4],[2360,4],[2450,4],[2575,4],[2702,5],[2830,5]]},"522":{"position":[[402,17],[420,4],[1074,4]]},"572":{"position":[[8,4],[116,8]]},"586":{"position":[[307,4]]},"615":{"position":[[35,5]]},"662":{"position":[[708,4],[1788,4]]},"745":{"position":[[381,5]]},"791":{"position":[[14763,4],[30312,4]]}},"keywords":{}}],["edit:us",{"_index":3229,"title":{},"content":{"502":{"position":[[726,10]]}},"keywords":{}}],["effect",{"_index":1975,"title":{},"content":{"211":{"position":[[1123,13]]},"706":{"position":[[1123,13]]}},"keywords":{}}],["effici",{"_index":1255,"title":{},"content":{"94":{"position":[[702,12]]},"96":{"position":[[290,10]]},"608":{"position":[[702,12]]},"610":{"position":[[290,10]]}},"keywords":{}}],["effort",{"_index":498,"title":{},"content":{"53":{"position":[[1130,7]]},"90":{"position":[[2328,7]]},"604":{"position":[[2328,7]]}},"keywords":{}}],["eg",{"_index":845,"title":{},"content":{"61":{"position":[[313,4]]},"570":{"position":[[313,4]]}},"keywords":{}}],["elabor",{"_index":2965,"title":{},"content":{"440":{"position":[[89,10]]},"924":{"position":[[89,10]]}},"keywords":{}}],["elgam",{"_index":2177,"title":{},"content":{"260":{"position":[[601,7]]}},"keywords":{}}],["email",{"_index":837,"title":{"286":{"position":[[13,5]]}},"content":{"61":{"position":[[62,5],[129,5]]},"79":{"position":[[258,6],[392,5],[527,6],[602,6],[1017,5],[1151,6],[1225,5],[1303,5],[1346,5],[1499,5],[1676,5],[2046,5]]},"86":{"position":[[382,5],[618,5]]},"260":{"position":[[1249,5]]},"262":{"position":[[35,5]]},"279":{"position":[[433,6]]},"280":{"position":[[44,5]]},"286":{"position":[[90,5],[140,5]]},"498":{"position":[[198,5]]},"570":{"position":[[62,5],[129,5]]}},"keywords":{}}],["email.click",{"_index":2357,"title":{},"content":{"284":{"position":[[259,11]]}},"keywords":{}}],["emeritu",{"_index":543,"title":{},"content":{"53":{"position":[[2094,8],[2202,8],[4556,10],[4666,8]]}},"keywords":{}}],["emptydir",{"_index":1624,"title":{},"content":{"134":{"position":[[1673,8],[2170,9]]},"662":{"position":[[1673,8],[2170,9]]}},"keywords":{}}],["enabl",{"_index":1687,"title":{},"content":{"140":{"position":[[1452,7]]},"313":{"position":[[362,6],[1107,6]]},"314":{"position":[[272,8]]},"476":{"position":[[180,6],[210,6],[349,6],[381,6]]},"640":{"position":[[1452,7]]},"742":{"position":[[644,8]]},"785":{"position":[[362,6],[1107,6]]},"786":{"position":[[272,8]]}},"keywords":{}}],["enable/dis",{"_index":3818,"title":{},"content":{"939":{"position":[[923,14]]}},"keywords":{}}],["encapsul",{"_index":1937,"title":{},"content":{"207":{"position":[[25,12]]},"208":{"position":[[25,12]]},"702":{"position":[[25,12]]},"703":{"position":[[25,12]]}},"keywords":{}}],["encoding=\"utf",{"_index":2256,"title":{},"content":{"265":{"position":[[136,13]]}},"keywords":{}}],["encount",{"_index":86,"title":{},"content":{"4":{"position":[[492,9]]},"464":{"position":[[492,9]]}},"keywords":{}}],["encourag",{"_index":668,"title":{},"content":{"53":{"position":[[7037,10]]},"73":{"position":[[19,10]]},"75":{"position":[[167,9]]},"114":{"position":[[244,9]]},"582":{"position":[[19,10]]},"584":{"position":[[167,9]]},"598":{"position":[[244,9]]}},"keywords":{}}],["encout",{"_index":2932,"title":{},"content":{"437":{"position":[[449,8]]},"921":{"position":[[449,8]]}},"keywords":{}}],["end",{"_index":995,"title":{},"content":{"79":{"position":[[1102,3]]},"99":{"position":[[78,3],[85,3]]},"186":{"position":[[151,3],[306,3]]},"281":{"position":[[864,6]]},"289":{"position":[[1138,6]]},"301":{"position":[[8,3],[15,3]]},"302":{"position":[[286,3]]},"613":{"position":[[78,3],[85,3]]},"714":{"position":[[151,3],[306,3]]},"752":{"position":[[1138,6]]},"769":{"position":[[8,3],[15,3]]},"770":{"position":[[286,3]]}},"keywords":{}}],["endpoint",{"_index":1386,"title":{},"content":{"104":{"position":[[434,11],[488,9]]},"129":{"position":[[201,8]]},"161":{"position":[[886,8]]},"618":{"position":[[435,11],[489,9]]},"636":{"position":[[201,8]]},"668":{"position":[[886,8]]}},"keywords":{}}],["engin",{"_index":1064,"title":{"963":{"position":[[52,6]]}},"content":{"89":{"position":[[50,9]]},"90":{"position":[[1566,9]]},"91":{"position":[[654,11],[700,11]]},"94":{"position":[[267,12]]},"99":{"position":[[172,9]]},"102":{"position":[[1046,9]]},"110":{"position":[[1418,9]]},"186":{"position":[[117,9],[999,9],[1058,9]]},"603":{"position":[[50,9]]},"604":{"position":[[1566,9]]},"605":{"position":[[654,11],[700,11]]},"608":{"position":[[267,12]]},"613":{"position":[[172,9]]},"616":{"position":[[1051,9]]},"624":{"position":[[1423,9]]},"714":{"position":[[117,9],[999,9],[1058,9]]},"963":{"position":[[57,6],[68,8],[634,6]]}},"keywords":{}}],["english",{"_index":2172,"title":{},"content":{"260":{"position":[[211,7]]}},"keywords":{}}],["enough",{"_index":659,"title":{},"content":{"53":{"position":[[6662,6]]},"54":{"position":[[308,6],[357,6],[2782,6]]},"260":{"position":[[1727,6],[1983,6]]}},"keywords":{}}],["ensur",{"_index":1562,"title":{"340":{"position":[[0,6]]},"814":{"position":[[0,6]]}},"content":{"129":{"position":[[242,6]]},"199":{"position":[[223,7]]},"203":{"position":[[79,6]]},"288":{"position":[[69,6]]},"289":{"position":[[0,6]]},"305":{"position":[[69,6]]},"306":{"position":[[0,6]]},"636":{"position":[[242,6]]},"694":{"position":[[223,7]]},"698":{"position":[[79,6]]},"751":{"position":[[69,6]]},"752":{"position":[[0,6]]},"756":{"position":[[69,6]]},"757":{"position":[[0,6]]}},"keywords":{}}],["ent",{"_index":1777,"title":{"280":{"position":[[3,5]]}},"content":{"156":{"position":[[88,8]]},"260":{"position":[[53,8],[697,5],[799,5],[1064,5],[1131,5],[1228,5],[1285,5],[1320,5],[1473,6],[2041,5],[2135,5],[2298,8]]},"263":{"position":[[976,5],[1671,5]]},"270":{"position":[[114,5],[275,5]]},"274":{"position":[[60,5]]},"327":{"position":[[206,8]]},"489":{"position":[[7,5],[98,5]]},"496":{"position":[[402,5]]},"499":{"position":[[71,8]]},"656":{"position":[[88,8]]},"808":{"position":[[206,8]]}},"keywords":{}}],["enterpris",{"_index":1878,"title":{},"content":{"184":{"position":[[474,10]]},"712":{"position":[[474,10]]}},"keywords":{}}],["entir",{"_index":991,"title":{},"content":{"79":{"position":[[897,6],[2137,6]]},"201":{"position":[[7,6]]},"492":{"position":[[53,6]]},"696":{"position":[[7,6]]}},"keywords":{}}],["entri",{"_index":1657,"title":{},"content":{"139":{"position":[[1404,5]]},"179":{"position":[[462,5]]},"181":{"position":[[561,5]]},"639":{"position":[[1410,5]]},"686":{"position":[[462,5]]},"688":{"position":[[561,5]]}},"keywords":{}}],["entropi",{"_index":2202,"title":{},"content":{"260":{"position":[[1734,8],[1990,8]]}},"keywords":{}}],["entrypoint",{"_index":1483,"title":{},"content":{"114":{"position":[[491,10]]},"117":{"position":[[691,10]]},"598":{"position":[[491,10]]},"601":{"position":[[691,10]]}},"keywords":{}}],["env",{"_index":157,"title":{},"content":{"9":{"position":[[119,5],[706,5]]},"10":{"position":[[257,5],[739,3]]},"11":{"position":[[115,3],[279,5]]},"12":{"position":[[129,5],[438,3],[619,5]]},"13":{"position":[[118,3],[282,5]]},"23":{"position":[[369,4],[609,4],[1274,4]]},"38":{"position":[[231,4],[900,5]]},"39":{"position":[[642,5]]},"40":{"position":[[633,5]]},"41":{"position":[[691,5]]},"112":{"position":[[1717,3],[2038,4]]},"113":{"position":[[233,3]]},"115":{"position":[[146,4],[497,3]]},"134":{"position":[[1455,4]]},"140":{"position":[[281,4],[663,4]]},"146":{"position":[[209,3],[435,3]]},"179":{"position":[[536,3]]},"238":{"position":[[371,4],[495,3]]},"240":{"position":[[117,4],[240,3]]},"327":{"position":[[676,4],[1080,4]]},"328":{"position":[[26,4]]},"330":{"position":[[205,3]]},"344":{"position":[[94,4]]},"351":{"position":[[84,5],[688,5]]},"353":{"position":[[239,5],[566,5],[1135,5]]},"356":{"position":[[73,3],[254,5]]},"359":{"position":[[85,5],[394,3],[575,5]]},"362":{"position":[[76,3],[257,5]]},"369":{"position":[[335,4],[575,4],[1292,5]]},"371":{"position":[[1773,5]]},"374":{"position":[[709,5]]},"389":{"position":[[199,4],[863,5]]},"392":{"position":[[610,5]]},"395":{"position":[[598,5]]},"398":{"position":[[628,5]]},"479":{"position":[[52,3],[87,3],[161,3]]},"538":{"position":[[119,5],[706,5]]},"539":{"position":[[257,5],[739,3]]},"540":{"position":[[115,3],[279,5]]},"541":{"position":[[129,5],[438,3],[619,5]]},"542":{"position":[[118,3],[282,5]]},"552":{"position":[[369,4],[609,4],[1274,4]]},"560":{"position":[[231,4],[900,5]]},"561":{"position":[[642,5]]},"562":{"position":[[633,5]]},"563":{"position":[[691,5]]},"596":{"position":[[1717,3],[2038,4]]},"597":{"position":[[233,3]]},"599":{"position":[[146,4],[497,3]]},"640":{"position":[[281,4],[663,4]]},"646":{"position":[[209,3],[435,3]]},"662":{"position":[[1455,4]]},"686":{"position":[[536,3]]},"742":{"position":[[371,4],[495,3]]},"744":{"position":[[117,4],[240,3]]},"777":{"position":[[1247,3],[1274,3]]},"791":{"position":[[412,3],[476,3],[533,3],[604,3],[633,3],[660,3]]},"800":{"position":[[205,3]]},"808":{"position":[[731,4]]},"809":{"position":[[26,4]]},"825":{"position":[[84,5],[688,5]]},"827":{"position":[[239,5],[566,5],[1135,5]]},"830":{"position":[[73,3],[254,5]]},"833":{"position":[[85,5],[394,3],[575,5]]},"836":{"position":[[76,3],[257,5]]},"843":{"position":[[335,4],[575,4],[1292,5]]},"845":{"position":[[1773,5]]},"848":{"position":[[709,5]]},"878":{"position":[[199,4],[863,5]]},"881":{"position":[[610,5]]},"884":{"position":[[598,5]]},"887":{"position":[[628,5]]},"942":{"position":[[52,3],[87,3],[161,3]]},"950":{"position":[[1015,3],[1140,3]]},"954":{"position":[[1058,3],[1719,3]]},"969":{"position":[[1356,3]]},"981":{"position":[[754,3],[806,3],[852,3],[911,3],[945,3],[984,3],[1025,3],[1064,3]]},"986":{"position":[[464,3],[516,3],[562,3],[621,3],[655,3],[694,3],[735,3],[774,3]]}},"keywords":{}}],["env.sh",{"_index":3162,"title":{"491":{"position":[[10,6]]}},"content":{"491":{"position":[[10,6],[217,7]]}},"keywords":{}}],["env1",{"_index":220,"title":{},"content":{"15":{"position":[[763,7],[771,6]]},"18":{"position":[[760,7],[768,6]]},"22":{"position":[[318,6],[1076,6]]},"23":{"position":[[318,6],[1223,6]]},"24":{"position":[[585,6],[1165,6]]},"25":{"position":[[618,6]]},"26":{"position":[[326,6],[929,6]]},"27":{"position":[[621,6]]},"178":{"position":[[390,6]]},"328":{"position":[[899,8]]},"366":{"position":[[284,6]]},"369":{"position":[[284,6]]},"377":{"position":[[285,6]]},"405":{"position":[[265,6]]},"410":{"position":[[731,7],[739,6]]},"415":{"position":[[736,7],[744,6]]},"424":{"position":[[503,6]]},"425":{"position":[[510,6]]},"544":{"position":[[763,7],[771,6]]},"547":{"position":[[760,7],[768,6]]},"551":{"position":[[318,6],[1076,6]]},"552":{"position":[[318,6],[1223,6]]},"553":{"position":[[585,6],[1165,6]]},"554":{"position":[[618,6]]},"555":{"position":[[326,6],[929,6]]},"556":{"position":[[621,6]]},"685":{"position":[[390,6]]},"809":{"position":[[919,8]]},"840":{"position":[[284,6]]},"843":{"position":[[284,6]]},"851":{"position":[[285,6]]},"863":{"position":[[731,7],[739,6]]},"868":{"position":[[736,7],[744,6]]},"894":{"position":[[265,6]]},"898":{"position":[[503,6]]},"899":{"position":[[510,6]]}},"keywords":{}}],["env_1",{"_index":247,"title":{},"content":{"22":{"position":[[309,8],[1067,8]]},"23":{"position":[[309,8],[1214,8]]},"24":{"position":[[576,8],[1156,8]]},"25":{"position":[[609,8]]},"26":{"position":[[317,8],[920,8]]},"27":{"position":[[612,8]]},"178":{"position":[[383,6]]},"366":{"position":[[275,8]]},"369":{"position":[[275,8]]},"377":{"position":[[276,8]]},"405":{"position":[[256,8]]},"424":{"position":[[494,8]]},"425":{"position":[[501,8]]},"551":{"position":[[309,8],[1067,8]]},"552":{"position":[[309,8],[1214,8]]},"553":{"position":[[576,8],[1156,8]]},"554":{"position":[[609,8]]},"555":{"position":[[317,8],[920,8]]},"556":{"position":[[612,8]]},"685":{"position":[[383,6]]},"840":{"position":[[275,8]]},"843":{"position":[[275,8]]},"851":{"position":[[276,8]]},"894":{"position":[[256,8]]},"898":{"position":[[494,8]]},"899":{"position":[[501,8]]}},"keywords":{}}],["env_nam",{"_index":1512,"title":{},"content":{"117":{"position":[[307,9]]},"601":{"position":[[307,9]]}},"keywords":{}}],["env_vars={'env1",{"_index":2562,"title":{},"content":{"328":{"position":[[881,17]]},"809":{"position":[[901,17]]}},"keywords":{}}],["envar",{"_index":1565,"title":{},"content":{"129":{"position":[[638,5]]},"636":{"position":[[638,5]]}},"keywords":{}}],["environ",{"_index":142,"title":{"8":{"position":[[0,11]]},"9":{"position":[[7,11]]},"10":{"position":[[5,11]]},"11":{"position":[[4,11]]},"12":{"position":[[6,11]]},"13":{"position":[[7,11]]},"22":{"position":[[44,12]]},"23":{"position":[[44,12]]},"103":{"position":[[0,11]]},"111":{"position":[[0,12]]},"113":{"position":[[0,11]]},"116":{"position":[[11,11]]},"117":{"position":[[55,13]]},"128":{"position":[[0,11]]},"141":{"position":[[7,12]]},"146":{"position":[[13,11]]},"166":{"position":[[0,11]]},"249":{"position":[[62,11]]},"330":{"position":[[15,11]]},"344":{"position":[[14,11]]},"348":{"position":[[0,11]]},"349":{"position":[[7,11]]},"352":{"position":[[5,11]]},"354":{"position":[[4,11]]},"357":{"position":[[6,11]]},"360":{"position":[[7,11]]},"364":{"position":[[44,12]]},"367":{"position":[[44,12]]},"403":{"position":[[24,11]]},"404":{"position":[[0,11]]},"456":{"position":[[0,12]]},"457":{"position":[[5,12]]},"458":{"position":[[4,12]]},"459":{"position":[[7,12]]},"494":{"position":[[11,11]]},"537":{"position":[[0,11]]},"538":{"position":[[7,11]]},"539":{"position":[[5,11]]},"540":{"position":[[4,11]]},"541":{"position":[[6,11]]},"542":{"position":[[7,11]]},"551":{"position":[[44,12]]},"552":{"position":[[44,12]]},"595":{"position":[[0,12]]},"597":{"position":[[0,11]]},"600":{"position":[[11,11]]},"601":{"position":[[55,13]]},"617":{"position":[[0,11]]},"635":{"position":[[0,11]]},"641":{"position":[[7,12]]},"646":{"position":[[13,11]]},"673":{"position":[[0,11]]},"800":{"position":[[15,11]]},"818":{"position":[[14,11]]},"822":{"position":[[0,11]]},"823":{"position":[[7,11]]},"826":{"position":[[5,11]]},"828":{"position":[[4,11]]},"831":{"position":[[6,11]]},"834":{"position":[[7,11]]},"838":{"position":[[44,12]]},"841":{"position":[[44,12]]},"892":{"position":[[24,11]]},"893":{"position":[[0,11]]},"979":{"position":[[26,11]]},"984":{"position":[[26,11]]},"989":{"position":[[26,11]]}},"content":{"15":{"position":[[970,14]]},"18":{"position":[[967,14]]},"22":{"position":[[330,14],[1088,14]]},"23":{"position":[[330,14],[583,11],[656,11],[715,11],[1235,14]]},"24":{"position":[[597,14],[1177,14]]},"25":{"position":[[630,14]]},"26":{"position":[[338,14],[941,14]]},"27":{"position":[[633,14]]},"38":{"position":[[196,14],[867,15]]},"39":{"position":[[609,15]]},"40":{"position":[[600,15]]},"41":{"position":[[656,14]]},"103":{"position":[[0,11],[25,11],[252,12],[373,11],[439,11],[602,11],[657,11],[677,12]]},"107":{"position":[[175,11]]},"112":{"position":[[0,11],[25,11],[313,12],[501,11],[1024,12],[1062,11],[1128,11],[1291,11],[1346,11],[1996,12],[2179,12],[2232,12]]},"113":{"position":[[59,12],[79,11],[491,11]]},"114":{"position":[[221,14],[640,11]]},"115":{"position":[[97,11],[287,11],[380,12],[421,11],[470,11],[816,11]]},"116":{"position":[[0,11]]},"117":{"position":[[189,13],[327,13]]},"118":{"position":[[287,12],[304,12]]},"121":{"position":[[383,11],[438,11]]},"127":{"position":[[91,12]]},"128":{"position":[[21,11],[100,11],[225,14],[268,11]]},"129":{"position":[[333,11],[472,11]]},"132":{"position":[[468,12],[895,13],[1819,12],[2047,12]]},"133":{"position":[[697,11],[753,11]]},"134":{"position":[[1159,12],[1425,12],[1625,12]]},"139":{"position":[[1503,11],[1526,11],[2179,12]]},"140":{"position":[[251,12],[634,11],[1078,12],[1173,12],[1590,11]]},"141":{"position":[[16,11]]},"142":{"position":[[73,15]]},"146":{"position":[[18,12],[55,11],[78,11],[450,11],[499,11],[511,11],[642,11],[677,11]]},"147":{"position":[[252,11],[266,12],[750,11],[764,12],[1168,11],[1191,11],[1205,12]]},"148":{"position":[[810,11]]},"152":{"position":[[1309,11]]},"154":{"position":[[1170,12]]},"163":{"position":[[179,12]]},"181":{"position":[[618,11]]},"184":{"position":[[586,12]]},"186":{"position":[[1035,12]]},"190":{"position":[[201,12]]},"210":{"position":[[17,12]]},"255":{"position":[[345,11]]},"259":{"position":[[59,11]]},"281":{"position":[[1044,12],[1095,11]]},"303":{"position":[[134,12],[224,12],[372,11]]},"309":{"position":[[66,11]]},"327":{"position":[[486,11],[603,11],[707,11],[1018,11],[1058,11]]},"328":{"position":[[4,11],[640,11]]},"330":{"position":[[67,11],[168,12]]},"344":{"position":[[58,12]]},"350":{"position":[[93,11],[171,11],[223,12]]},"355":{"position":[[47,11]]},"358":{"position":[[56,11],[144,11],[201,12]]},"361":{"position":[[47,11]]},"365":{"position":[[137,11],[165,11],[554,12],[603,12],[644,11],[719,12],[748,11],[810,11],[882,11]]},"366":{"position":[[296,14],[1135,15]]},"369":{"position":[[296,14],[549,11],[622,11],[655,11],[1255,15]]},"371":{"position":[[727,15],[1736,15]]},"374":{"position":[[672,15]]},"376":{"position":[[123,11],[156,11]]},"377":{"position":[[297,14],[1166,15]]},"380":{"position":[[647,15]]},"388":{"position":[[116,11],[144,11],[398,11]]},"389":{"position":[[164,14],[830,15]]},"392":{"position":[[577,15]]},"395":{"position":[[565,15]]},"398":{"position":[[595,15]]},"405":{"position":[[277,14]]},"409":{"position":[[681,11],[709,11],[1095,11]]},"410":{"position":[[938,14],[2524,15]]},"412":{"position":[[1526,15]]},"415":{"position":[[943,14],[2554,15]]},"418":{"position":[[1550,15]]},"421":{"position":[[825,15]]},"424":{"position":[[515,14]]},"425":{"position":[[522,14]]},"435":{"position":[[104,11]]},"436":{"position":[[36,12]]},"457":{"position":[[15,11]]},"458":{"position":[[14,11],[26,12]]},"459":{"position":[[28,12]]},"471":{"position":[[66,11]]},"491":{"position":[[150,11]]},"544":{"position":[[970,14]]},"547":{"position":[[967,14]]},"551":{"position":[[330,14],[1088,14]]},"552":{"position":[[330,14],[583,11],[656,11],[715,11],[1235,14]]},"553":{"position":[[597,14],[1177,14]]},"554":{"position":[[630,14]]},"555":{"position":[[338,14],[941,14]]},"556":{"position":[[633,14]]},"560":{"position":[[196,14],[867,15]]},"561":{"position":[[609,15]]},"562":{"position":[[600,15]]},"563":{"position":[[656,14]]},"596":{"position":[[0,11],[25,11],[313,12],[501,11],[1024,12],[1062,11],[1128,11],[1291,11],[1346,11],[1996,12],[2179,12],[2232,12]]},"597":{"position":[[59,12],[79,11],[491,11]]},"598":{"position":[[221,14],[640,11]]},"599":{"position":[[97,11],[287,11],[380,12],[421,11],[470,11],[816,11]]},"600":{"position":[[0,11]]},"601":{"position":[[189,13],[327,13]]},"617":{"position":[[0,11],[25,11],[252,12],[373,11],[439,11],[602,11],[657,11],[677,12]]},"621":{"position":[[175,11]]},"625":{"position":[[287,12],[304,12]]},"628":{"position":[[383,11],[438,11]]},"634":{"position":[[91,12]]},"635":{"position":[[21,11],[100,11],[225,14],[268,11]]},"636":{"position":[[333,11],[472,11]]},"639":{"position":[[1510,11],[1533,11],[2192,12]]},"640":{"position":[[251,12],[634,11],[1078,12],[1173,12],[1590,11]]},"641":{"position":[[16,11]]},"642":{"position":[[73,15]]},"646":{"position":[[18,12],[55,11],[78,11],[450,11],[499,11],[511,11],[642,11],[677,11]]},"647":{"position":[[252,11],[266,12],[750,11],[764,12],[1168,11],[1191,11],[1205,12]]},"648":{"position":[[810,11]]},"652":{"position":[[1589,11]]},"654":{"position":[[1175,12]]},"660":{"position":[[468,12],[895,13],[1819,12],[2047,12]]},"661":{"position":[[697,11],[753,11]]},"662":{"position":[[1159,12],[1425,12],[1625,12]]},"670":{"position":[[179,12]]},"688":{"position":[[618,11]]},"705":{"position":[[17,12]]},"712":{"position":[[591,12]]},"714":{"position":[[1035,12]]},"718":{"position":[[206,12]]},"771":{"position":[[134,12],[224,12],[372,11]]},"781":{"position":[[66,11]]},"800":{"position":[[67,11],[168,12]]},"808":{"position":[[486,11],[603,11],[669,11],[709,11]]},"809":{"position":[[4,11],[660,11]]},"818":{"position":[[58,12]]},"824":{"position":[[93,11],[171,11],[223,12]]},"829":{"position":[[47,11]]},"832":{"position":[[56,11],[144,11],[201,12]]},"835":{"position":[[47,11]]},"839":{"position":[[137,11],[165,11],[554,12],[603,12],[644,11],[719,12],[748,11],[810,11],[882,11]]},"840":{"position":[[296,14],[1135,15]]},"843":{"position":[[296,14],[549,11],[622,11],[655,11],[1255,15]]},"845":{"position":[[727,15],[1736,15]]},"848":{"position":[[672,15]]},"850":{"position":[[123,11],[156,11]]},"851":{"position":[[297,14],[1166,15]]},"854":{"position":[[647,15]]},"862":{"position":[[681,11],[709,11],[1095,11]]},"863":{"position":[[938,14],[2524,15]]},"865":{"position":[[1526,15]]},"868":{"position":[[943,14],[2554,15]]},"871":{"position":[[1550,15]]},"874":{"position":[[825,15]]},"877":{"position":[[116,11],[144,11],[398,11]]},"878":{"position":[[164,14],[830,15]]},"881":{"position":[[577,15]]},"884":{"position":[[565,15]]},"887":{"position":[[595,15]]},"894":{"position":[[277,14]]},"898":{"position":[[515,14]]},"899":{"position":[[522,14]]},"909":{"position":[[225,11]]},"919":{"position":[[104,11]]},"920":{"position":[[36,12]]},"931":{"position":[[66,11]]},"963":{"position":[[102,11]]},"964":{"position":[[88,11],[598,14],[1633,14],[1781,11],[1878,11],[1905,11]]},"978":{"position":[[33,11]]},"979":{"position":[[31,11]]},"983":{"position":[[33,11]]},"984":{"position":[[31,11]]},"988":{"position":[[33,11]]},"989":{"position":[[31,11]]}},"keywords":{}}],["environment",{"_index":2730,"title":{},"content":{"365":{"position":[[489,13],[1119,13]]},"388":{"position":[[487,13]]},"409":{"position":[[1033,13],[1332,13]]},"470":{"position":[[60,13]]},"839":{"position":[[489,13],[1119,13]]},"862":{"position":[[1033,13],[1332,13]]},"877":{"position":[[487,13]]},"930":{"position":[[60,13]]}},"keywords":{}}],["environment.submarin",{"_index":2405,"title":{},"content":{"303":{"position":[[294,21]]},"771":{"position":[[294,21]]}},"keywords":{}}],["environment=environ",{"_index":2572,"title":{},"content":{"328":{"position":[[1198,24]]},"809":{"position":[[1218,24]]}},"keywords":{}}],["environment_1586156073228_0001",{"_index":181,"title":{},"content":{"9":{"position":[[629,33]]},"10":{"position":[[180,33]]},"11":{"position":[[202,33]]},"12":{"position":[[542,33]]},"13":{"position":[[205,33]]},"538":{"position":[[629,33]]},"539":{"position":[[180,33]]},"540":{"position":[[202,33]]},"541":{"position":[[542,33]]},"542":{"position":[[205,33]]}},"keywords":{}}],["environment_1586156073228_0002",{"_index":183,"title":{},"content":{"10":{"position":[[662,33]]},"539":{"position":[[662,33]]}},"keywords":{}}],["environmentid",{"_index":180,"title":{},"content":{"9":{"position":[[612,16]]},"10":{"position":[[163,16],[645,16]]},"11":{"position":[[185,16]]},"12":{"position":[[525,16]]},"13":{"position":[[188,16]]},"538":{"position":[[612,16]]},"539":{"position":[[163,16],[645,16]]},"540":{"position":[[185,16]]},"541":{"position":[[525,16]]},"542":{"position":[[188,16]]}},"keywords":{}}],["environmentid\":\"environment_1600862964725_0001",{"_index":2724,"title":{},"content":{"353":{"position":[[1048,49]]},"827":{"position":[[1048,49]]}},"keywords":{}}],["environmentid\":\"environment_1600862964725_0002",{"_index":2720,"title":{},"content":{"353":{"position":[[148,49]]},"827":{"position":[[148,49]]}},"keywords":{}}],["environmentid\":\"environment_1626160071451_0001",{"_index":2708,"title":{},"content":{"351":{"position":[[597,49]]},"353":{"position":[[475,49]]},"356":{"position":[[163,49]]},"362":{"position":[[166,49]]},"825":{"position":[[597,49]]},"827":{"position":[[475,49]]},"830":{"position":[[163,49]]},"836":{"position":[[166,49]]}},"keywords":{}}],["environmentid\":\"environment_1626160071451_0003",{"_index":2725,"title":{},"content":{"359":{"position":[[484,49]]},"833":{"position":[[484,49]]}},"keywords":{}}],["environmentrestapi",{"_index":2942,"title":{},"content":{"439":{"position":[[257,19],[821,18]]}},"keywords":{}}],["environmentspec",{"_index":182,"title":{},"content":{"9":{"position":[[663,18]]},"10":{"position":[[214,18],[696,18]]},"11":{"position":[[236,18]]},"12":{"position":[[576,18],[1013,15]]},"13":{"position":[[239,18]]},"328":{"position":[[249,15]]},"350":{"position":[[4,15],[37,16]]},"351":{"position":[[647,19]]},"353":{"position":[[198,19],[525,19],[1098,19]]},"356":{"position":[[213,19]]},"359":{"position":[[534,19]]},"362":{"position":[[216,19]]},"365":{"position":[[149,15],[514,16]]},"376":{"position":[[135,15]]},"388":{"position":[[128,15],[361,16]]},"409":{"position":[[693,15],[1058,16]]},"538":{"position":[[663,18]]},"539":{"position":[[214,18],[696,18]]},"540":{"position":[[236,18]]},"541":{"position":[[576,18],[1013,15]]},"542":{"position":[[239,18]]},"809":{"position":[[253,15]]},"824":{"position":[[4,15],[37,16]]},"825":{"position":[[647,19]]},"827":{"position":[[198,19],[525,19],[1098,19]]},"830":{"position":[[213,19]]},"833":{"position":[[534,19]]},"836":{"position":[[216,19]]},"839":{"position":[[149,15],[514,16]]},"850":{"position":[[135,15]]},"862":{"position":[[693,15],[1058,16]]},"877":{"position":[[128,15],[361,16]]}},"keywords":{}}],["environmentspec(image='apache/submarine:tf",{"_index":2554,"title":{},"content":{"328":{"position":[[654,42]]},"809":{"position":[[674,42]]}},"keywords":{}}],["envvar",{"_index":219,"title":{},"content":{"15":{"position":[[750,10]]},"18":{"position":[[747,10]]},"22":{"position":[[296,10],[1054,10]]},"23":{"position":[[296,10],[1201,10]]},"24":{"position":[[563,10],[1143,10]]},"25":{"position":[[596,10]]},"26":{"position":[[304,10],[907,10]]},"27":{"position":[[599,10]]},"38":{"position":[[249,10],[1112,11]]},"39":{"position":[[854,11]]},"40":{"position":[[845,11]]},"41":{"position":[[908,10]]},"178":{"position":[[374,8]]},"179":{"position":[[503,7]]},"181":{"position":[[592,7]]},"365":{"position":[[461,7],[1091,7]]},"366":{"position":[[262,10]]},"369":{"position":[[262,10]]},"377":{"position":[[263,10]]},"389":{"position":[[217,10]]},"405":{"position":[[243,10]]},"409":{"position":[[1005,7],[1304,7]]},"410":{"position":[[718,10]]},"415":{"position":[[723,10]]},"424":{"position":[[481,10]]},"425":{"position":[[488,10]]},"544":{"position":[[750,10]]},"547":{"position":[[747,10]]},"551":{"position":[[296,10],[1054,10]]},"552":{"position":[[296,10],[1201,10]]},"553":{"position":[[563,10],[1143,10]]},"554":{"position":[[596,10]]},"555":{"position":[[304,10],[907,10]]},"556":{"position":[[599,10]]},"560":{"position":[[249,10],[1112,11]]},"561":{"position":[[854,11]]},"562":{"position":[[845,11]]},"563":{"position":[[908,10]]},"685":{"position":[[374,8]]},"686":{"position":[[503,7]]},"688":{"position":[[592,7]]},"839":{"position":[[461,7],[1091,7]]},"840":{"position":[[262,10]]},"843":{"position":[[262,10]]},"851":{"position":[[263,10]]},"862":{"position":[[1005,7],[1304,7]]},"863":{"position":[[718,10]]},"868":{"position":[[723,10]]},"878":{"position":[[217,10]]},"894":{"position":[[243,10]]},"898":{"position":[[481,10]]},"899":{"position":[[488,10]]}},"keywords":{}}],["envvars\":nul",{"_index":2767,"title":{},"content":{"366":{"position":[[1394,15],[1564,15]]},"369":{"position":[[1486,15],[1656,15]]},"371":{"position":[[986,15],[1156,15],[1967,15],[2137,15]]},"374":{"position":[[903,15],[1073,15]]},"377":{"position":[[1425,15],[1595,15]]},"380":{"position":[[906,15],[1076,15]]},"410":{"position":[[2783,15],[2956,15]]},"412":{"position":[[1785,15],[1958,15]]},"415":{"position":[[2813,15],[2983,15]]},"418":{"position":[[1809,15],[1979,15]]},"421":{"position":[[1084,15],[1254,15]]},"840":{"position":[[1394,15],[1564,15]]},"843":{"position":[[1486,15],[1656,15]]},"845":{"position":[[986,15],[1156,15],[1967,15],[2137,15]]},"848":{"position":[[903,15],[1073,15]]},"851":{"position":[[1425,15],[1595,15]]},"854":{"position":[[906,15],[1076,15]]},"863":{"position":[[2783,15],[2956,15]]},"865":{"position":[[1785,15],[1958,15]]},"868":{"position":[[2813,15],[2983,15]]},"871":{"position":[[1809,15],[1979,15]]},"874":{"position":[[1084,15],[1254,15]]}},"keywords":{}}],["envvars\":{\"env1\":\"env1",{"_index":2793,"title":{},"content":{"371":{"position":[[698,25]]},"410":{"position":[[2495,25]]},"412":{"position":[[1497,25]]},"415":{"position":[[2525,25]]},"418":{"position":[[1521,25]]},"421":{"position":[[796,25]]},"845":{"position":[[698,25]]},"863":{"position":[[2495,25]]},"865":{"position":[[1497,25]]},"868":{"position":[[2525,25]]},"871":{"position":[[1521,25]]},"874":{"position":[[796,25]]}},"keywords":{}}],["envvars\":{\"env_1\":\"env1",{"_index":2759,"title":{},"content":{"366":{"position":[[1105,26]]},"369":{"position":[[1225,26]]},"371":{"position":[[1706,26]]},"374":{"position":[[642,26]]},"377":{"position":[[1136,26]]},"380":{"position":[[617,26]]},"840":{"position":[[1105,26]]},"843":{"position":[[1225,26]]},"845":{"position":[[1706,26]]},"848":{"position":[[642,26]]},"851":{"position":[[1136,26]]},"854":{"position":[[617,26]]}},"keywords":{}}],["envvars\":{\"test_env\":\"t",{"_index":2813,"title":{},"content":{"389":{"position":[[1100,30]]},"392":{"position":[[847,30]]},"395":{"position":[[835,30]]},"398":{"position":[[865,30]]},"878":{"position":[[1100,30]]},"881":{"position":[[847,30]]},"884":{"position":[[835,30]]},"887":{"position":[[865,30]]}},"keywords":{}}],["ephem",{"_index":1728,"title":{},"content":{"148":{"position":[[378,9]]},"648":{"position":[[378,9]]}},"keywords":{}}],["epoch",{"_index":306,"title":{},"content":{"29":{"position":[[726,6],[770,6],[816,6],[863,6],[910,6],[957,6],[1004,6],[1051,6],[1098,6],[1145,6],[1193,6],[1241,6],[1289,6],[1337,6],[1385,6],[1433,6],[1903,6],[1947,6],[1993,6],[2040,6],[2087,6],[2134,6],[2181,6],[2228,6],[2275,6],[2322,6],[2370,6],[2418,6],[2466,6],[2514,6],[2562,6],[2610,6]]},"132":{"position":[[1160,6]]},"343":{"position":[[2031,6],[2170,6]]},"558":{"position":[[726,6],[770,6],[816,6],[863,6],[910,6],[957,6],[1004,6],[1051,6],[1098,6],[1145,6],[1193,6],[1241,6],[1289,6],[1337,6],[1385,6],[1433,6],[1903,6],[1947,6],[1993,6],[2040,6],[2087,6],[2134,6],[2181,6],[2228,6],[2275,6],[2322,6],[2370,6],[2418,6],[2466,6],[2514,6],[2562,6],[2610,6]]},"660":{"position":[[1160,6]]},"817":{"position":[[2049,6],[2190,6]]},"990":{"position":[[501,6],[684,6],[889,6]]},"991":{"position":[[571,6],[756,6],[928,6]]}},"keywords":{}}],["epochs=10",{"_index":2693,"title":{},"content":{"343":{"position":[[2210,10]]},"817":{"position":[[2263,10]]}},"keywords":{}}],["equip",{"_index":2698,"title":{},"content":{"344":{"position":[[21,8]]},"818":{"position":[[21,8]]}},"keywords":{}}],["equvil",{"_index":1517,"title":{},"content":{"117":{"position":[[931,9]]},"601":{"position":[[931,9]]}},"keywords":{}}],["error",{"_index":88,"title":{"92":{"position":[[140,5]]},"484":{"position":[[44,6]]},"606":{"position":[[140,5]]},"947":{"position":[[44,6]]}},"content":{"4":{"position":[[533,6]]},"54":{"position":[[1807,5]]},"92":{"position":[[979,5]]},"114":{"position":[[112,5]]},"156":{"position":[[121,5]]},"268":{"position":[[70,7],[347,5]]},"464":{"position":[[533,6]]},"481":{"position":[[24,5]]},"484":{"position":[[25,5]]},"598":{"position":[[112,5]]},"606":{"position":[[979,5]]},"656":{"position":[[121,5]]},"944":{"position":[[24,5]]},"947":{"position":[[25,5]]},"967":{"position":[[65,5]]}},"keywords":{}}],["error=13",{"_index":3090,"title":{},"content":{"482":{"position":[[257,9]]},"945":{"position":[[257,9]]}},"keywords":{}}],["especi",{"_index":1640,"title":{},"content":{"136":{"position":[[100,10]]},"502":{"position":[[3215,10]]},"664":{"position":[[100,10]]}},"keywords":{}}],["essenti",{"_index":2484,"title":{},"content":{"323":{"position":[[6,9]]},"773":{"position":[[6,9]]},"954":{"position":[[533,9]]},"969":{"position":[[514,9]]}},"keywords":{}}],["establish",{"_index":1938,"title":{},"content":{"207":{"position":[[306,11]]},"702":{"position":[[306,11]]}},"keywords":{}}],["estim",{"_index":4164,"title":{},"content":{"966":{"position":[[11,10]]}},"keywords":{}}],["etc",{"_index":192,"title":{"129":{"position":[[31,5]]},"636":{"position":[[31,5]]}},"content":{"12":{"position":[[968,3]]},"18":{"position":[[1169,3]]},"53":{"position":[[202,4],[3176,4],[8937,4]]},"54":{"position":[[982,5]]},"89":{"position":[[208,4]]},"90":{"position":[[2682,4]]},"91":{"position":[[64,4],[259,4],[379,4],[479,4]]},"94":{"position":[[280,4],[369,4]]},"98":{"position":[[395,5]]},"102":{"position":[[242,4],[679,4],[803,4],[901,4]]},"106":{"position":[[293,5]]},"107":{"position":[[351,4],[487,4],[1385,4]]},"110":{"position":[[1204,4],[1348,4]]},"112":{"position":[[830,4],[1005,4]]},"115":{"position":[[66,6]]},"117":{"position":[[481,5]]},"118":{"position":[[259,4],[649,4]]},"121":{"position":[[349,6]]},"127":{"position":[[104,4]]},"128":{"position":[[82,4]]},"132":{"position":[[1167,4],[1229,5],[1445,5],[1832,4]]},"134":{"position":[[340,4]]},"135":{"position":[[283,6],[381,4]]},"139":{"position":[[507,5],[1331,4],[1816,4],[2222,4]]},"140":{"position":[[892,4]]},"146":{"position":[[112,4]]},"148":{"position":[[602,4],[690,5]]},"152":{"position":[[150,6],[262,5]]},"154":{"position":[[846,4],[1183,4]]},"155":{"position":[[403,5]]},"158":{"position":[[1306,4]]},"160":{"position":[[525,4],[1099,4],[1278,4],[1577,4]]},"161":{"position":[[160,4]]},"173":{"position":[[188,4]]},"175":{"position":[[91,4]]},"177":{"position":[[129,4]]},"178":{"position":[[132,4]]},"202":{"position":[[149,5]]},"252":{"position":[[1112,5]]},"267":{"position":[[213,4]]},"268":{"position":[[156,4]]},"303":{"position":[[571,4]]},"339":{"position":[[296,4]]},"541":{"position":[[968,3]]},"547":{"position":[[1169,3]]},"596":{"position":[[830,4],[1005,4]]},"599":{"position":[[66,6]]},"601":{"position":[[481,5]]},"603":{"position":[[208,4]]},"604":{"position":[[2682,4]]},"605":{"position":[[64,4],[259,4],[379,4],[479,4]]},"608":{"position":[[280,4],[369,4]]},"612":{"position":[[395,5]]},"616":{"position":[[242,4],[684,4],[808,4],[906,4],[1187,4]]},"620":{"position":[[293,5]]},"621":{"position":[[352,4],[488,4],[807,4],[1388,4]]},"624":{"position":[[1209,4],[1353,4]]},"625":{"position":[[259,4],[650,4]]},"628":{"position":[[349,6]]},"634":{"position":[[104,4]]},"635":{"position":[[82,4]]},"639":{"position":[[507,5],[1337,4],[1829,4],[2235,4]]},"640":{"position":[[892,4]]},"646":{"position":[[112,4]]},"648":{"position":[[602,4],[690,5]]},"652":{"position":[[150,6],[268,5]]},"654":{"position":[[851,4],[1188,4]]},"655":{"position":[[410,5]]},"658":{"position":[[1306,4]]},"660":{"position":[[1167,4],[1229,5],[1445,5],[1832,4]]},"662":{"position":[[340,4]]},"663":{"position":[[283,6],[381,4]]},"667":{"position":[[525,4],[1100,4],[1279,4],[1579,4]]},"668":{"position":[[160,4]]},"680":{"position":[[188,4]]},"682":{"position":[[91,4]]},"684":{"position":[[129,4]]},"685":{"position":[[132,4]]},"697":{"position":[[149,5]]},"771":{"position":[[571,4]]},"777":{"position":[[265,4]]},"950":{"position":[[246,4]]},"954":{"position":[[250,4]]},"969":{"position":[[247,4]]}},"keywords":{}}],["etc.admin",{"_index":1416,"title":{},"content":{"107":{"position":[[806,10]]}},"keywords":{}}],["etc.guid",{"_index":783,"title":{},"content":{"54":{"position":[[1826,9]]}},"keywords":{}}],["etc.submarin",{"_index":1534,"title":{},"content":{"118":{"position":[[872,13]]},"625":{"position":[[873,13]]}},"keywords":{}}],["etc.support",{"_index":1335,"title":{},"content":{"102":{"position":[[1176,11]]}},"keywords":{}}],["etc/alias",{"_index":3679,"title":{},"content":{"791":{"position":[[14578,12],[14629,12],[30127,12],[30178,12]]}},"keywords":{}}],["etc/default/gridengin",{"_index":3691,"title":{},"content":{"791":{"position":[[15269,23],[30818,23]]}},"keywords":{}}],["etc/init.d/postfix",{"_index":3683,"title":{},"content":{"791":{"position":[[14908,20],[30457,20]]}},"keywords":{}}],["etc/mailnam",{"_index":3667,"title":{},"content":{"791":{"position":[[14253,13],[29802,13]]}},"keywords":{}}],["etc/network/interfac",{"_index":3662,"title":{},"content":{"791":{"position":[[13589,24],[29138,24]]}},"keywords":{}}],["etc/postfix/dynamicmaps.cf",{"_index":3663,"title":{},"content":{"791":{"position":[[14141,27],[29690,27]]}},"keywords":{}}],["etc/postfix/main.cf",{"_index":3680,"title":{},"content":{"791":{"position":[[14768,20],[30317,20]]}},"keywords":{}}],["etc/yarn/sbin/linux",{"_index":3088,"title":{},"content":{"482":{"position":[[205,21],[567,20]]},"945":{"position":[[205,21],[567,20]]}},"keywords":{}}],["etcd",{"_index":1919,"title":{},"content":{"202":{"position":[[143,5]]},"303":{"position":[[550,5]]},"697":{"position":[[143,5]]},"771":{"position":[[550,5]]}},"keywords":{}}],["etl",{"_index":1799,"title":{},"content":{"158":{"position":[[1840,3]]},"658":{"position":[[1840,3]]}},"keywords":{}}],["eval",{"_index":2046,"title":{},"content":{"238":{"position":[[348,4],[472,4]]},"240":{"position":[[94,4],[217,4]]},"344":{"position":[[71,4]]},"479":{"position":[[982,4]]},"742":{"position":[[348,4],[472,4]]},"744":{"position":[[94,4],[217,4]]},"942":{"position":[[982,4]]},"981":{"position":[[664,4]]}},"keywords":{}}],["evalu",{"_index":1761,"title":{},"content":{"153":{"position":[[159,10]]},"653":{"position":[[159,10]]},"960":{"position":[[266,10]]},"961":{"position":[[58,11],[274,11],[584,11]]},"964":{"position":[[1174,11]]},"965":{"position":[[233,10],[7471,10],[9541,10],[9807,10]]},"966":{"position":[[390,8]]},"967":{"position":[[1065,8]]}},"keywords":{}}],["even",{"_index":792,"title":{},"content":{"54":{"position":[[2151,4]]},"77":{"position":[[339,4]]},"90":{"position":[[622,4],[2348,4]]},"102":{"position":[[121,4],[640,4]]},"134":{"position":[[538,4]]},"136":{"position":[[292,4]]},"586":{"position":[[339,4]]},"604":{"position":[[622,4],[2348,4]]},"616":{"position":[[121,4],[645,4]]},"662":{"position":[[538,4]]},"664":{"position":[[292,4]]}},"keywords":{}}],["event",{"_index":1759,"title":{"201":{"position":[[8,5]]},"214":{"position":[[23,6]]},"215":{"position":[[22,5]]},"696":{"position":[[8,5]]},"709":{"position":[[23,6]]},"710":{"position":[[22,5]]}},"content":{"153":{"position":[[66,6]]},"201":{"position":[[119,6],[226,7],[335,5],[445,6]]},"214":{"position":[[60,5]]},"215":{"position":[[39,5]]},"653":{"position":[[66,6]]},"696":{"position":[[119,6],[226,7],[335,5],[445,6]]},"709":{"position":[[60,5]]},"710":{"position":[[39,5]]}},"keywords":{}}],["everybodi",{"_index":1072,"title":{},"content":{"90":{"position":[[0,9]]},"604":{"position":[[0,9]]}},"keywords":{}}],["everyon",{"_index":791,"title":{},"content":{"54":{"position":[[2121,8]]},"79":{"position":[[343,8],[975,8]]},"498":{"position":[[0,8]]}},"keywords":{}}],["everyone'",{"_index":2335,"title":{},"content":{"281":{"position":[[123,10]]}},"keywords":{}}],["ex",{"_index":123,"title":{},"content":{"5":{"position":[[167,3]]},"6":{"position":[[47,3]]},"289":{"position":[[1025,3]]},"309":{"position":[[78,4]]},"341":{"position":[[100,3]]},"439":{"position":[[899,3]]},"465":{"position":[[167,3]]},"466":{"position":[[47,3]]},"744":{"position":[[1212,3],[1441,3]]},"752":{"position":[[1025,3]]},"781":{"position":[[78,4]]}},"keywords":{}}],["exact",{"_index":523,"title":{},"content":{"53":{"position":[[1655,5]]},"54":{"position":[[552,5]]}},"keywords":{}}],["exampl",{"_index":148,"title":{"342":{"position":[[0,8],[36,7]]},"351":{"position":[[5,7]]},"353":{"position":[[5,7]]},"356":{"position":[[5,7]]},"359":{"position":[[5,7]]},"362":{"position":[[5,7]]},"366":{"position":[[5,7]]},"369":{"position":[[5,7]]},"371":{"position":[[5,7]]},"374":{"position":[[5,7]]},"377":{"position":[[5,7]]},"380":{"position":[[5,7]]},"382":{"position":[[5,7]]},"385":{"position":[[5,7]]},"389":{"position":[[5,7]]},"392":{"position":[[5,7]]},"395":{"position":[[5,7]]},"398":{"position":[[5,7]]},"401":{"position":[[0,7]]},"405":{"position":[[0,7]]},"410":{"position":[[5,7]]},"412":{"position":[[5,7]]},"415":{"position":[[5,7]]},"418":{"position":[[5,7]]},"421":{"position":[[5,7]]},"778":{"position":[[4,8]]},"816":{"position":[[0,8],[36,7]]},"825":{"position":[[5,7]]},"827":{"position":[[5,7]]},"830":{"position":[[5,7]]},"833":{"position":[[5,7]]},"836":{"position":[[5,7]]},"840":{"position":[[5,7]]},"843":{"position":[[5,7]]},"845":{"position":[[5,7]]},"848":{"position":[[5,7]]},"851":{"position":[[5,7]]},"854":{"position":[[5,7]]},"856":{"position":[[5,7]]},"859":{"position":[[5,7]]},"863":{"position":[[5,7]]},"865":{"position":[[5,7]]},"868":{"position":[[5,7]]},"871":{"position":[[5,7]]},"874":{"position":[[5,7]]},"878":{"position":[[5,7]]},"881":{"position":[[5,7]]},"884":{"position":[[5,7]]},"887":{"position":[[5,7]]},"890":{"position":[[0,7]]},"894":{"position":[[0,7]]},"951":{"position":[[4,8]]},"955":{"position":[[4,8]]},"970":{"position":[[4,8]]},"980":{"position":[[17,8]]},"985":{"position":[[17,8]]},"990":{"position":[[17,8]]}},"content":{"9":{"position":[[25,7],[551,7]]},"10":{"position":[[24,7],[100,7]]},"11":{"position":[[31,7],[124,7]]},"12":{"position":[[33,7],[447,7]]},"13":{"position":[[31,7],[127,7]]},"15":{"position":[[22,7]]},"16":{"position":[[21,7]]},"17":{"position":[[28,7]]},"19":{"position":[[28,7]]},"20":{"position":[[40,7]]},"22":{"position":[[24,7],[591,7]]},"23":{"position":[[24,7],[568,7],[738,7]]},"24":{"position":[[23,7],[98,7]]},"25":{"position":[[28,7],[133,7]]},"26":{"position":[[30,7],[629,7]]},"27":{"position":[[28,7],[136,7]]},"28":{"position":[[28,7],[108,7]]},"29":{"position":[[33,7],[143,7]]},"31":{"position":[[33,7],[120,7]]},"32":{"position":[[43,7],[132,7]]},"33":{"position":[[28,7],[277,7]]},"34":{"position":[[46,7],[137,7]]},"35":{"position":[[71,7],[185,7]]},"36":{"position":[[73,7],[189,7]]},"38":{"position":[[22,7],[368,7]]},"39":{"position":[[21,7],[107,7]]},"40":{"position":[[26,7],[104,7]]},"41":{"position":[[29,7],[110,7]]},"43":{"position":[[19,7],[249,7]]},"44":{"position":[[21,7],[181,7]]},"46":{"position":[[30,7],[243,7]]},"47":{"position":[[29,7],[110,7]]},"48":{"position":[[36,7],[130,7]]},"49":{"position":[[38,7],[233,7]]},"50":{"position":[[39,7],[135,7]]},"51":{"position":[[56,7],[167,7]]},"52":{"position":[[58,7],[171,7]]},"53":{"position":[[5582,8]]},"62":{"position":[[215,8]]},"63":{"position":[[194,8]]},"67":{"position":[[244,8]]},"86":{"position":[[354,8]]},"92":{"position":[[280,8]]},"93":{"position":[[245,8]]},"102":{"position":[[1371,7]]},"112":{"position":[[490,7]]},"114":{"position":[[434,7]]},"134":{"position":[[1265,8],[1355,8]]},"140":{"position":[[114,7],[959,7]]},"157":{"position":[[275,7]]},"175":{"position":[[145,8]]},"186":{"position":[[482,8],[648,8]]},"200":{"position":[[164,8]]},"201":{"position":[[238,8]]},"221":{"position":[[255,8]]},"237":{"position":[[66,8]]},"272":{"position":[[4,8]]},"289":{"position":[[307,8]]},"313":{"position":[[489,8],[1214,8]]},"328":{"position":[[126,7]]},"334":{"position":[[204,7]]},"335":{"position":[[300,7]]},"341":{"position":[[304,8]]},"342":{"position":[[24,7]]},"343":{"position":[[44,8]]},"369":{"position":[[534,7]]},"400":{"position":[[168,7]]},"424":{"position":[[194,7]]},"425":{"position":[[221,7]]},"426":{"position":[[140,7]]},"427":{"position":[[140,7]]},"428":{"position":[[139,7]]},"429":{"position":[[260,7]]},"430":{"position":[[131,7]]},"431":{"position":[[211,7]]},"445":{"position":[[31,7]]},"446":{"position":[[55,8]]},"447":{"position":[[47,8]]},"495":{"position":[[310,7]]},"496":{"position":[[108,7]]},"538":{"position":[[25,7],[551,7]]},"539":{"position":[[24,7],[100,7]]},"540":{"position":[[31,7],[124,7]]},"541":{"position":[[33,7],[447,7]]},"542":{"position":[[31,7],[127,7]]},"544":{"position":[[22,7]]},"545":{"position":[[21,7]]},"546":{"position":[[28,7]]},"548":{"position":[[28,7]]},"549":{"position":[[40,7]]},"551":{"position":[[24,7],[591,7]]},"552":{"position":[[24,7],[568,7],[738,7]]},"553":{"position":[[23,7],[98,7]]},"554":{"position":[[28,7],[133,7]]},"555":{"position":[[30,7],[629,7]]},"556":{"position":[[28,7],[136,7]]},"557":{"position":[[28,7],[108,7]]},"558":{"position":[[33,7],[143,7]]},"560":{"position":[[22,7],[368,7]]},"561":{"position":[[21,7],[107,7]]},"562":{"position":[[26,7],[104,7]]},"563":{"position":[[29,7],[110,7]]},"571":{"position":[[215,8]]},"572":{"position":[[194,8]]},"576":{"position":[[244,8]]},"596":{"position":[[490,7]]},"598":{"position":[[434,7]]},"606":{"position":[[280,8]]},"607":{"position":[[245,8]]},"616":{"position":[[1383,7]]},"640":{"position":[[114,7],[959,7]]},"657":{"position":[[275,7]]},"662":{"position":[[1265,8],[1355,8]]},"682":{"position":[[145,8]]},"695":{"position":[[164,8]]},"696":{"position":[[238,8]]},"714":{"position":[[482,8],[648,8]]},"735":{"position":[[255,8]]},"741":{"position":[[66,8]]},"744":{"position":[[1580,7]]},"752":{"position":[[307,8]]},"777":{"position":[[107,7],[203,7],[340,7]]},"778":{"position":[[22,8]]},"785":{"position":[[489,8],[1214,8]]},"788":{"position":[[89,7]]},"804":{"position":[[204,7]]},"805":{"position":[[300,7]]},"809":{"position":[[126,7]]},"816":{"position":[[24,7]]},"817":{"position":[[44,8]]},"843":{"position":[[534,7]]},"889":{"position":[[168,7]]},"898":{"position":[[194,7]]},"899":{"position":[[221,7]]},"900":{"position":[[140,7]]},"901":{"position":[[140,7]]},"902":{"position":[[139,7]]},"903":{"position":[[260,7]]},"904":{"position":[[131,7]]},"905":{"position":[[211,7]]},"908":{"position":[[300,7]]},"910":{"position":[[92,7]]},"911":{"position":[[105,7]]},"912":{"position":[[162,7]]},"913":{"position":[[233,7]]},"939":{"position":[[1697,8]]},"950":{"position":[[109,7],[179,7],[321,7]]},"951":{"position":[[17,7]]},"954":{"position":[[113,7],[183,7],[327,7]]},"955":{"position":[[17,7]]},"963":{"position":[[5,7]]},"964":{"position":[[354,7],[1255,7],[1363,7]]},"969":{"position":[[117,7],[189,7],[327,7]]},"970":{"position":[[22,8]]},"979":{"position":[[578,8]]}},"keywords":{}}],["example_descript",{"_index":441,"title":{},"content":{"46":{"position":[[141,22]]},"47":{"position":[[285,22],[463,22]]},"48":{"position":[[301,22]]}},"keywords":{}}],["example_nam",{"_index":440,"title":{},"content":{"46":{"position":[[110,15]]},"47":{"position":[[360,15]]},"48":{"position":[[376,15]]}},"keywords":{}}],["example_name1",{"_index":448,"title":{},"content":{"47":{"position":[[538,16]]}},"keywords":{}}],["examples/mnist",{"_index":4257,"title":{},"content":{"980":{"position":[[80,14]]},"985":{"position":[[80,14]]}},"keywords":{}}],["examples/sec",{"_index":4109,"title":{},"content":{"965":{"position":[[14670,13],[14737,13],[14804,13],[14870,13],[14937,13],[15004,13],[15071,13],[15258,13],[15325,13],[15392,13],[15460,13],[15527,13],[15595,13],[15663,13],[15731,13],[15799,13],[15867,13]]}},"keywords":{}}],["except",{"_index":1966,"title":{},"content":{"210":{"position":[[89,11]]},"705":{"position":[[89,11]]}},"keywords":{}}],["exclud",{"_index":727,"title":{},"content":{"53":{"position":[[10287,10],[10524,10]]}},"keywords":{}}],["exclus",{"_index":1425,"title":{},"content":{"107":{"position":[[1171,11]]},"621":{"position":[[1174,11]]}},"keywords":{}}],["exec",{"_index":3152,"title":{},"content":{"489":{"position":[[53,4]]},"496":{"position":[[468,4]]},"791":{"position":[[2946,4],[5831,4],[11243,5],[11334,4],[15485,4],[18788,4],[21655,4],[26961,5],[27052,4],[31034,4]]}},"keywords":{}}],["exec_6.2u5",{"_index":3636,"title":{},"content":{"791":{"position":[[11284,10],[27002,10]]}},"keywords":{}}],["execut",{"_index":1303,"title":{},"content":{"101":{"position":[[390,9]]},"134":{"position":[[526,8]]},"140":{"position":[[747,9]]},"150":{"position":[[187,10]]},"153":{"position":[[211,9]]},"186":{"position":[[343,9]]},"236":{"position":[[414,7]]},"263":{"position":[[511,7]]},"277":{"position":[[126,7]]},"306":{"position":[[429,7]]},"316":{"position":[[435,10],[488,10]]},"318":{"position":[[21,7]]},"439":{"position":[[1074,7]]},"482":{"position":[[146,9]]},"491":{"position":[[34,8],[87,9]]},"500":{"position":[[93,9]]},"502":{"position":[[1551,9],[2612,7],[2712,7],[2840,7],[3151,7]]},"522":{"position":[[1195,7]]},"615":{"position":[[390,9]]},"640":{"position":[[747,9]]},"650":{"position":[[187,10]]},"653":{"position":[[211,9]]},"662":{"position":[[526,8]]},"714":{"position":[[343,9]]},"740":{"position":[[417,7]]},"757":{"position":[[429,7]]},"791":{"position":[[15039,9],[15588,9],[16283,9],[17078,9],[30588,9],[31137,9],[31932,9]]},"793":{"position":[[435,10],[488,10]]},"795":{"position":[[21,7]]},"945":{"position":[[146,9]]},"965":{"position":[[16066,9]]},"966":{"position":[[197,9]]}},"keywords":{}}],["executor",{"_index":3081,"title":{"482":{"position":[[19,8]]},"945":{"position":[[19,8]]}},"content":{"482":{"position":[[246,10],[607,8]]},"945":{"position":[[246,10],[607,8]]}},"keywords":{}}],["exist",{"_index":94,"title":{"196":{"position":[[9,8]]},"691":{"position":[[9,8]]}},"content":{"4":{"position":[[591,7],[632,8]]},"23":{"position":[[622,6]]},"53":{"position":[[9394,9],[9512,8]]},"61":{"position":[[210,8]]},"82":{"position":[[28,8]]},"96":{"position":[[129,8]]},"154":{"position":[[637,10]]},"205":{"position":[[45,6]]},"254":{"position":[[103,6],[181,6]]},"255":{"position":[[170,6],[252,6]]},"260":{"position":[[654,8]]},"313":{"position":[[685,8]]},"330":{"position":[[152,8]]},"365":{"position":[[801,8]]},"369":{"position":[[588,6]]},"404":{"position":[[31,5]]},"464":{"position":[[591,7],[632,8]]},"552":{"position":[[622,6]]},"570":{"position":[[210,8]]},"589":{"position":[[28,8]]},"610":{"position":[[129,8]]},"654":{"position":[[637,10]]},"700":{"position":[[45,6]]},"785":{"position":[[685,8]]},"791":{"position":[[14600,6],[14642,7],[30149,6],[30191,7]]},"800":{"position":[[152,8]]},"839":{"position":[[801,8]]},"843":{"position":[[588,6]]},"893":{"position":[[31,5]]},"964":{"position":[[291,8]]}},"keywords":{}}],["existing_kind",{"_index":99,"title":{},"content":{"4":{"position":[[718,14]]},"464":{"position":[[718,14]]}},"keywords":{}}],["exit",{"_index":2047,"title":{},"content":{"238":{"position":[[444,4]]},"240":{"position":[[189,4]]},"484":{"position":[[575,4],[693,4]]},"742":{"position":[[444,4]]},"744":{"position":[[189,4]]},"947":{"position":[[575,4],[693,4]]}},"keywords":{}}],["exp",{"_index":1451,"title":{},"content":{"112":{"position":[[601,3]]},"596":{"position":[[601,3]]}},"keywords":{}}],["expand",{"_index":1576,"title":{},"content":{"130":{"position":[[442,6]]},"637":{"position":[[442,6]]}},"keywords":{}}],["expect",{"_index":754,"title":{},"content":{"54":{"position":[[626,8]]},"157":{"position":[[1114,8]]},"471":{"position":[[250,8]]},"657":{"position":[[1114,8]]},"931":{"position":[[250,8]]}},"keywords":{}}],["expeiment",{"_index":3264,"title":{"683":{"position":[[8,9]]}},"content":{},"keywords":{}}],["experi",{"_index":195,"title":{"14":{"position":[[0,10]]},"15":{"position":[[7,10]]},"16":{"position":[[5,10]]},"17":{"position":[[4,10]]},"20":{"position":[[25,10]]},"21":{"position":[[0,10]]},"22":{"position":[[7,10]]},"23":{"position":[[7,10]]},"24":{"position":[[5,10]]},"25":{"position":[[4,10]]},"26":{"position":[[6,10]]},"27":{"position":[[7,10]]},"28":{"position":[[5,10]]},"29":{"position":[[4,10]]},"102":{"position":[[0,10]]},"129":{"position":[[19,11]]},"138":{"position":[[0,10]]},"140":{"position":[[7,10]]},"141":{"position":[[24,10]]},"142":{"position":[[20,10]]},"143":{"position":[[19,10]]},"144":{"position":[[16,10]]},"147":{"position":[[7,11]]},"148":{"position":[[11,10]]},"149":{"position":[[0,10]]},"150":{"position":[[0,10]]},"152":{"position":[[0,10]]},"153":{"position":[[0,10]]},"154":{"position":[[16,10]]},"156":{"position":[[19,10]]},"157":{"position":[[11,10],[42,10]]},"158":{"position":[[18,10]]},"164":{"position":[[0,10]]},"176":{"position":[[8,10]]},"328":{"position":[[0,10]]},"334":{"position":[[17,10]]},"345":{"position":[[14,10]]},"363":{"position":[[0,10]]},"364":{"position":[[7,10]]},"367":{"position":[[7,10]]},"370":{"position":[[5,10]]},"372":{"position":[[4,10]]},"375":{"position":[[6,10]]},"378":{"position":[[7,10]]},"381":{"position":[[5,10]]},"383":{"position":[[4,10]]},"407":{"position":[[0,10]]},"408":{"position":[[7,10]]},"411":{"position":[[5,10]]},"413":{"position":[[6,10]]},"416":{"position":[[7,10]]},"419":{"position":[[25,10]]},"422":{"position":[[0,10]]},"452":{"position":[[0,11]]},"453":{"position":[[5,11]]},"454":{"position":[[4,10]]},"455":{"position":[[7,10]]},"494":{"position":[[0,10]]},"543":{"position":[[0,10]]},"544":{"position":[[7,10]]},"545":{"position":[[5,10]]},"546":{"position":[[4,10]]},"549":{"position":[[25,10]]},"550":{"position":[[0,10]]},"551":{"position":[[7,10]]},"552":{"position":[[7,10]]},"553":{"position":[[5,10]]},"554":{"position":[[4,10]]},"555":{"position":[[6,10]]},"556":{"position":[[7,10]]},"557":{"position":[[5,10]]},"558":{"position":[[4,10]]},"616":{"position":[[0,10]]},"636":{"position":[[19,11]]},"638":{"position":[[0,10]]},"640":{"position":[[7,10]]},"641":{"position":[[24,10]]},"642":{"position":[[20,10]]},"643":{"position":[[19,10]]},"644":{"position":[[16,10]]},"647":{"position":[[7,11]]},"648":{"position":[[11,10]]},"649":{"position":[[0,10]]},"650":{"position":[[0,10]]},"652":{"position":[[0,10]]},"653":{"position":[[0,10]]},"654":{"position":[[16,10]]},"656":{"position":[[19,10]]},"657":{"position":[[11,10],[42,10]]},"658":{"position":[[18,10]]},"671":{"position":[[0,10]]},"804":{"position":[[17,10]]},"809":{"position":[[0,10]]},"819":{"position":[[14,10]]},"837":{"position":[[0,10]]},"838":{"position":[[7,10]]},"841":{"position":[[7,10]]},"844":{"position":[[5,10]]},"846":{"position":[[4,10]]},"849":{"position":[[6,10]]},"852":{"position":[[7,10]]},"855":{"position":[[5,10]]},"857":{"position":[[4,10]]},"860":{"position":[[0,10]]},"861":{"position":[[7,10]]},"864":{"position":[[5,10]]},"866":{"position":[[6,10]]},"869":{"position":[[7,10]]},"872":{"position":[[25,10]]},"896":{"position":[[0,10]]}},"content":{"15":{"position":[[533,12]]},"18":{"position":[[530,12],[1214,10]]},"31":{"position":[[358,11],[721,11],[1084,11],[1448,11]]},"32":{"position":[[366,11]]},"90":{"position":[[939,11],[1051,11],[1586,11]]},"92":{"position":[[762,12]]},"102":{"position":[[0,11],[162,11],[256,10],[334,11],[349,11],[398,11],[455,11],[534,12],[588,12],[695,10],[735,12],[984,11],[1341,10],[1393,10],[1837,10],[1953,10],[2058,10],[2118,11]]},"103":{"position":[[140,10],[546,11],[569,10]]},"104":{"position":[[51,11]]},"106":{"position":[[280,12]]},"107":{"position":[[109,11],[153,10]]},"110":{"position":[[358,12],[604,11],[1209,10]]},"112":{"position":[[140,10],[1235,11],[1258,10],[2206,11]]},"114":{"position":[[585,11]]},"115":{"position":[[1166,10]]},"117":{"position":[[203,11],[848,11]]},"118":{"position":[[365,11],[381,11],[433,10],[483,11],[535,10]]},"121":{"position":[[548,11]]},"128":{"position":[[55,11]]},"129":{"position":[[18,11],[256,11]]},"130":{"position":[[167,11]]},"132":{"position":[[225,12],[630,11],[846,11],[988,11],[1536,10],[1749,10],[1807,11],[1911,10]]},"134":{"position":[[81,10],[1119,11],[1372,11],[1887,10],[1928,10]]},"136":{"position":[[69,10]]},"139":{"position":[[44,11],[89,10],[267,10],[366,10],[642,10],[1117,10],[1242,10],[1437,10],[1607,10],[1758,10],[1894,12],[1954,11]]},"140":{"position":[[33,11],[83,10],[125,10],[198,11],[210,11],[544,11],[614,11],[789,10],[916,11],[1010,11]]},"142":{"position":[[207,10]]},"145":{"position":[[21,10],[99,10]]},"146":{"position":[[123,10]]},"147":{"position":[[11,10],[219,10],[717,10],[1088,10],[1108,10]]},"148":{"position":[[80,10],[197,10],[459,10],[745,10]]},"150":{"position":[[4,10],[36,10],[72,10]]},"151":{"position":[[6,10],[29,10],[76,10]]},"152":{"position":[[0,10],[48,11],[166,11],[321,11]]},"153":{"position":[[23,10],[105,10]]},"154":{"position":[[79,12],[113,11],[129,10],[411,10],[469,10],[584,12],[797,11],[1057,10]]},"156":{"position":[[11,10],[142,10]]},"157":{"position":[[11,10],[306,10]]},"158":{"position":[[47,10],[357,10],[390,11],[593,11],[731,11],[1165,11],[1202,11],[1264,10],[1322,10],[1369,10],[1419,11],[2379,10],[2835,10]]},"160":{"position":[[448,10]]},"163":{"position":[[146,10]]},"177":{"position":[[212,11],[254,10],[295,10],[477,11]]},"181":{"position":[[50,11],[102,11],[442,10],[518,10]]},"281":{"position":[[1008,11],[1060,10]]},"303":{"position":[[73,10]]},"328":{"position":[[106,12],[624,10],[1293,10],[1304,10],[1588,10],[1647,10]]},"334":{"position":[[193,10],[222,11]]},"345":{"position":[[41,10],[124,10]]},"346":{"position":[[111,10]]},"365":{"position":[[116,10],[184,10],[270,10],[346,10],[380,10]]},"373":{"position":[[45,10]]},"376":{"position":[[45,10],[102,10],[175,10]]},"379":{"position":[[45,10]]},"384":{"position":[[45,10]]},"388":{"position":[[163,10]]},"400":{"position":[[43,12]]},"404":{"position":[[46,10]]},"406":{"position":[[9,10]]},"409":{"position":[[47,10],[166,10],[255,10],[323,10],[660,10],[728,10],[814,10],[890,10],[924,10],[963,10]]},"410":{"position":[[501,12],[1652,13]]},"412":{"position":[[654,13]]},"414":{"position":[[56,10],[175,10],[264,10],[332,10]]},"415":{"position":[[506,12],[1682,13]]},"417":{"position":[[47,10]]},"418":{"position":[[678,13]]},"420":{"position":[[56,10],[99,10],[175,10]]},"423":{"position":[[54,10]]},"424":{"position":[[10,11],[60,10],[119,10],[182,11]]},"425":{"position":[[9,11],[46,10],[88,10],[147,10],[209,11]]},"426":{"position":[[67,10],[128,11],[148,10]]},"427":{"position":[[9,10],[127,12],[148,11]]},"428":{"position":[[21,11],[58,10],[127,11]]},"429":{"position":[[38,11],[113,10]]},"430":{"position":[[5,10],[114,10]]},"431":{"position":[[16,10],[75,10],[164,11],[194,10]]},"453":{"position":[[15,10]]},"454":{"position":[[14,10],[25,11],[58,10]]},"455":{"position":[[17,10],[28,11]]},"459":{"position":[[17,10]]},"502":{"position":[[3250,10]]},"544":{"position":[[533,12]]},"547":{"position":[[530,12],[1214,10]]},"596":{"position":[[140,10],[1235,11],[1258,10],[2206,11]]},"598":{"position":[[585,11]]},"599":{"position":[[1166,10]]},"601":{"position":[[203,11],[848,11]]},"604":{"position":[[939,11],[1051,11],[1586,11]]},"606":{"position":[[762,12]]},"616":{"position":[[0,11],[162,11],[256,10],[334,11],[349,11],[398,11],[455,11],[539,12],[593,12],[700,10],[740,12],[989,11],[1353,10],[1405,10],[1849,10],[1965,10],[2070,10],[2130,11],[2165,12]]},"617":{"position":[[140,10],[546,11],[569,10]]},"618":{"position":[[51,11]]},"620":{"position":[[280,12]]},"621":{"position":[[109,11],[153,10]]},"624":{"position":[[358,12],[604,11],[1214,10]]},"625":{"position":[[366,11],[382,11],[434,10],[484,11],[536,10]]},"628":{"position":[[548,11]]},"635":{"position":[[55,11]]},"636":{"position":[[18,11],[256,11]]},"637":{"position":[[167,11]]},"639":{"position":[[44,11],[89,10],[267,10],[366,10],[642,10],[1122,10],[1248,10],[1444,10],[1614,10],[1631,10],[1771,10],[1907,12],[1967,11]]},"640":{"position":[[33,11],[83,10],[125,10],[198,11],[210,11],[544,11],[614,11],[789,10],[916,11],[1010,11]]},"642":{"position":[[207,10]]},"645":{"position":[[21,10],[99,10]]},"646":{"position":[[123,10]]},"647":{"position":[[11,10],[219,10],[717,10],[1088,10],[1108,10]]},"648":{"position":[[80,10],[197,10],[459,10],[745,10]]},"650":{"position":[[4,10],[36,10],[72,10]]},"651":{"position":[[6,10],[29,10],[76,10]]},"652":{"position":[[0,10],[48,11],[166,11],[327,11]]},"653":{"position":[[23,10],[105,10]]},"654":{"position":[[79,12],[113,11],[129,10],[411,10],[469,10],[584,12],[797,11],[1062,10]]},"656":{"position":[[11,10],[142,10]]},"657":{"position":[[11,10],[306,10]]},"658":{"position":[[47,10],[357,10],[390,11],[593,11],[731,11],[1165,11],[1202,11],[1264,10],[1322,10],[1369,10],[1419,11],[2379,10],[2835,10]]},"660":{"position":[[225,12],[630,11],[846,11],[988,11],[1536,10],[1749,10],[1807,11],[1911,10]]},"662":{"position":[[81,10],[1119,11],[1372,11],[1887,10],[1928,10]]},"664":{"position":[[69,10]]},"667":{"position":[[448,10]]},"670":{"position":[[146,10]]},"684":{"position":[[212,11],[254,10],[295,10],[477,11]]},"688":{"position":[[50,11],[102,11],[442,10],[518,10]]},"771":{"position":[[73,10]]},"804":{"position":[[193,10],[222,11]]},"809":{"position":[[106,12],[644,10],[1313,10],[1324,10],[1608,10],[1667,10]]},"819":{"position":[[41,10],[124,10]]},"839":{"position":[[116,10],[184,10],[270,10],[346,10],[380,10]]},"847":{"position":[[45,10]]},"850":{"position":[[45,10],[102,10],[175,10]]},"853":{"position":[[45,10]]},"858":{"position":[[45,10]]},"862":{"position":[[47,10],[166,10],[255,10],[323,10],[660,10],[728,10],[814,10],[890,10],[924,10],[963,10]]},"863":{"position":[[501,12],[1652,13]]},"865":{"position":[[654,13]]},"867":{"position":[[56,10],[175,10],[264,10],[332,10]]},"868":{"position":[[506,12],[1682,13]]},"870":{"position":[[47,10]]},"871":{"position":[[678,13]]},"873":{"position":[[56,10],[99,10],[175,10]]},"877":{"position":[[163,10]]},"889":{"position":[[43,12]]},"893":{"position":[[46,10]]},"895":{"position":[[9,10]]},"897":{"position":[[54,10]]},"898":{"position":[[10,11],[60,10],[119,10],[182,11]]},"899":{"position":[[9,11],[46,10],[88,10],[147,10],[209,11]]},"900":{"position":[[67,10],[128,11],[148,10]]},"901":{"position":[[9,10],[127,12],[148,11]]},"902":{"position":[[21,11],[58,10],[127,11]]},"903":{"position":[[38,11],[113,10]]},"904":{"position":[[5,10],[114,10]]},"905":{"position":[[16,10],[75,10],[164,11],[194,10]]},"909":{"position":[[137,10]]},"961":{"position":[[477,11]]},"965":{"position":[[140,10],[9714,10]]}},"keywords":{}}],["experiemnt",{"_index":2729,"title":{},"content":{"365":{"position":[[419,10]]},"839":{"position":[[419,10]]}},"keywords":{}}],["experim",{"_index":1793,"title":{},"content":{"158":{"position":[[243,13]]},"658":{"position":[[243,13]]}},"keywords":{}}],["experiment'",{"_index":1665,"title":{},"content":{"139":{"position":[[2092,12]]},"150":{"position":[[174,12]]},"426":{"position":[[8,12]]},"639":{"position":[[2105,12]]},"650":{"position":[[174,12]]},"900":{"position":[[8,12]]}},"keywords":{}}],["experiment.run",{"_index":1711,"title":{},"content":{"147":{"position":[[497,16],[1004,16],[1514,16]]},"647":{"position":[[497,16],[1004,16],[1514,16]]}},"keywords":{}}],["experiment.us",{"_index":1365,"title":{},"content":{"102":{"position":[[2206,16]]},"616":{"position":[[2219,16]]}},"keywords":{}}],["experiment.wait_for_finish(print_output=tru",{"_index":1712,"title":{},"content":{"147":{"position":[[514,45],[1021,45],[1531,45]]},"647":{"position":[[514,45],[1021,45],[1531,45]]}},"keywords":{}}],["experiment/notebook",{"_index":1475,"title":{"155":{"position":[[18,19]]},"655":{"position":[[18,19]]}},"content":{"113":{"position":[[578,20]]},"155":{"position":[[0,19]]},"597":{"position":[[578,20]]},"655":{"position":[[0,19]]}},"keywords":{}}],["experiment/notebook/model",{"_index":1555,"title":{},"content":{"127":{"position":[[181,25]]},"134":{"position":[[15,25],[1066,25],[1321,25]]},"634":{"position":[[181,25]]},"662":{"position":[[15,25],[1066,25],[1321,25]]}},"keywords":{}}],["experiment_1586156073228_0001",{"_index":251,"title":{},"content":{"22":{"position":[[668,32]]},"23":{"position":[[815,32]]},"27":{"position":[[213,32]]},"551":{"position":[[668,32]]},"552":{"position":[[815,32]]},"556":{"position":[[213,32]]}},"keywords":{}}],["experiment_1589199154923_0001",{"_index":289,"title":{},"content":{"28":{"position":[[221,32]]},"557":{"position":[[221,32]]}},"keywords":{}}],["experiment_1589199154923_0002",{"_index":293,"title":{},"content":{"28":{"position":[[341,32]]},"29":{"position":[[254,32]]},"557":{"position":[[341,32]]},"558":{"position":[[254,32]]}},"keywords":{}}],["experiment_1592057447228_0001",{"_index":272,"title":{},"content":{"24":{"position":[[177,32]]},"25":{"position":[[210,32]]},"553":{"position":[[177,32]]},"554":{"position":[[210,32]]}},"keywords":{}}],["experiment_1592057447228_0002",{"_index":273,"title":{},"content":{"24":{"position":[[831,32]]},"553":{"position":[[831,32]]}},"keywords":{}}],["experiment_meta",{"_index":2555,"title":{},"content":{"328":{"position":[[719,15]]},"809":{"position":[[739,15]]}},"keywords":{}}],["experiment_nam",{"_index":209,"title":{},"content":{"15":{"position":[[446,18],[727,22]]},"18":{"position":[[443,18],[724,22]]},"410":{"position":[[414,18],[695,22]]},"415":{"position":[[419,18],[700,22]]},"420":{"position":[[196,16]]},"544":{"position":[[446,18],[727,22]]},"547":{"position":[[443,18],[724,22]]},"863":{"position":[[414,18],[695,22]]},"868":{"position":[[419,18],[700,22]]},"873":{"position":[[196,16]]}},"keywords":{}}],["experiment_name\":\"newexperiment1",{"_index":240,"title":{},"content":{"20":{"position":[[189,34]]},"421":{"position":[[138,34]]},"549":{"position":[[189,34]]},"874":{"position":[[138,34]]}},"keywords":{}}],["experiment_spec",{"_index":2570,"title":{"425":{"position":[[26,16]]},"899":{"position":[[26,16]]}},"content":{"328":{"position":[[1143,15]]},"424":{"position":[[33,16]]},"425":{"position":[[61,16]]},"809":{"position":[[1163,15]]},"898":{"position":[[33,16]]},"899":{"position":[[61,16]]}},"keywords":{}}],["experimentcli",{"_index":2875,"title":{"423":{"position":[[6,18]]},"897":{"position":[[6,18]]}},"content":{"424":{"position":[[235,18]]},"898":{"position":[[235,18]]}},"keywords":{}}],["experimentconf",{"_index":1708,"title":{},"content":{"147":{"position":[[279,16],[777,16],[1218,16]]},"647":{"position":[[279,16],[777,16],[1218,16]]}},"keywords":{}}],["experimentid",{"_index":250,"title":{},"content":{"22":{"position":[[652,15]]},"23":{"position":[[799,15]]},"24":{"position":[[161,15],[815,15]]},"25":{"position":[[194,15]]},"27":{"position":[[197,15]]},"28":{"position":[[205,15],[325,15]]},"29":{"position":[[238,15]]},"31":{"position":[[341,14],[704,14],[1067,14],[1431,14]]},"32":{"position":[[349,14]]},"551":{"position":[[652,15]]},"552":{"position":[[799,15]]},"553":{"position":[[161,15],[815,15]]},"554":{"position":[[194,15]]},"556":{"position":[[197,15]]},"557":{"position":[[205,15],[325,15]]},"558":{"position":[[238,15]]}},"keywords":{}}],["experimentid\":\"experiment_1626160071451_0001",{"_index":2779,"title":{},"content":{"371":{"position":[[147,47]]},"382":{"position":[[152,47]]},"385":{"position":[[180,47]]},"421":{"position":[[327,47]]},"845":{"position":[[147,47]]},"856":{"position":[[152,47]]},"859":{"position":[[180,47]]},"874":{"position":[[327,47]]}},"keywords":{}}],["experimentid\":\"experiment_1626160071451_0002",{"_index":2740,"title":{},"content":{"366":{"position":[[638,47]]},"840":{"position":[[638,47]]}},"keywords":{}}],["experimentid\":\"experiment_1626160071451_0005",{"_index":2772,"title":{},"content":{"369":{"position":[[758,47]]},"371":{"position":[[1239,47]]},"374":{"position":[[175,47]]},"377":{"position":[[669,47]]},"380":{"position":[[178,47]]},"843":{"position":[[758,47]]},"845":{"position":[[1239,47]]},"848":{"position":[[175,47]]},"851":{"position":[[669,47]]},"854":{"position":[[178,47]]}},"keywords":{}}],["experimentit",{"_index":2379,"title":{},"content":{"289":{"position":[[1038,15]]},"752":{"position":[[1038,15]]}},"keywords":{}}],["experimentmeta",{"_index":2549,"title":{},"content":{"328":{"position":[[460,14]]},"365":{"position":[[84,14],[291,15]]},"376":{"position":[[65,14]]},"409":{"position":[[628,14],[835,15]]},"809":{"position":[[476,14]]},"839":{"position":[[84,14],[291,15]]},"850":{"position":[[65,14]]},"862":{"position":[[628,14],[835,15]]}},"keywords":{}}],["experimentmeta(name='mnist",{"_index":2556,"title":{},"content":{"328":{"position":[[737,26]]},"809":{"position":[[757,26]]}},"keywords":{}}],["experimentmodel",{"_index":1577,"title":{},"content":{"132":{"position":[[75,15]]},"660":{"position":[[75,15]]}},"keywords":{}}],["experimentrestapi",{"_index":2941,"title":{},"content":{"439":{"position":[[236,17],[799,17]]}},"keywords":{}}],["experiments.can",{"_index":1363,"title":{},"content":{"102":{"position":[[2153,15]]}},"keywords":{}}],["experiments/notebook",{"_index":1466,"title":{},"content":{"112":{"position":[[2129,22]]},"596":{"position":[[2129,22]]}},"keywords":{}}],["experiments:adhoc",{"_index":1315,"title":{},"content":{"102":{"position":[[570,17]]},"616":{"position":[[575,17]]}},"keywords":{}}],["experimentspec",{"_index":211,"title":{},"content":{"15":{"position":[[551,17]]},"18":{"position":[[548,17],[1142,17]]},"158":{"position":[[2595,14]]},"328":{"position":[[317,14]]},"365":{"position":[[4,14],[36,15]]},"368":{"position":[[4,14]]},"409":{"position":[[276,14],[291,14],[580,15]]},"410":{"position":[[519,17],[2236,18]]},"412":{"position":[[1238,18]]},"414":{"position":[[285,14],[300,14]]},"415":{"position":[[524,17],[2266,18]]},"418":{"position":[[1262,18]]},"544":{"position":[[551,17]]},"547":{"position":[[548,17],[1142,17]]},"658":{"position":[[2595,14]]},"809":{"position":[[325,14]]},"839":{"position":[[4,14],[36,15]]},"842":{"position":[[4,14]]},"862":{"position":[[276,14],[291,14],[580,15]]},"863":{"position":[[519,17],[2236,18]]},"865":{"position":[[1238,18]]},"867":{"position":[[285,14],[300,14]]},"868":{"position":[[524,17],[2266,18]]},"871":{"position":[[1262,18]]}},"keywords":{}}],["experimentspec(meta=experiment_meta",{"_index":2571,"title":{},"content":{"328":{"position":[[1161,36]]},"809":{"position":[[1181,36]]}},"keywords":{}}],["experimenttaskspec",{"_index":2547,"title":{},"content":{"328":{"position":[[389,18]]},"365":{"position":[[222,19],[899,19]]},"376":{"position":[[213,19]]},"409":{"position":[[766,19],[1112,19]]},"809":{"position":[[401,18]]},"839":{"position":[[222,19],[899,19]]},"850":{"position":[[213,19]]},"862":{"position":[[766,19],[1112,19]]}},"keywords":{}}],["experimenttaskspec(resources='cpu=1,memory=1024m",{"_index":2564,"title":{},"content":{"328":{"position":[[922,50],[995,50]]},"809":{"position":[[942,50],[1015,50]]}},"keywords":{}}],["experimenttemplatehandl",{"_index":1802,"title":{},"content":{"158":{"position":[[2567,25]]},"658":{"position":[[2567,25]]}},"keywords":{}}],["experimenttemplateid",{"_index":2842,"title":{},"content":{"410":{"position":[[1144,24]]},"412":{"position":[[146,24]]},"415":{"position":[[1170,24]]},"418":{"position":[[166,24]]},"863":{"position":[[1144,24]]},"865":{"position":[[146,24]]},"868":{"position":[[1170,24]]},"871":{"position":[[166,24]]}},"keywords":{}}],["experimenttemplateparamspec",{"_index":2840,"title":{},"content":{"409":{"position":[[344,28]]},"862":{"position":[[344,28]]}},"keywords":{}}],["experimenttemplatespec",{"_index":2845,"title":{},"content":{"410":{"position":[[1212,26]]},"412":{"position":[[214,26]]},"415":{"position":[[1238,26]]},"418":{"position":[[234,26]]},"863":{"position":[[1212,26]]},"865":{"position":[[214,26]]},"868":{"position":[[1238,26]]},"871":{"position":[[234,26]]}},"keywords":{}}],["expert",{"_index":1239,"title":{},"content":{"94":{"position":[[223,7]]},"608":{"position":[[223,7]]}},"keywords":{}}],["expir",{"_index":2102,"title":{},"content":{"252":{"position":[[530,8],[639,8],[775,8],[884,8],[1406,8],[1515,8],[1645,8],[1754,8]]},"260":{"position":[[912,6],[929,7],[958,7],[988,7],[1019,7],[1090,6]]}},"keywords":{}}],["explain",{"_index":471,"title":{},"content":{"53":{"position":[[418,8],[8182,10]]}},"keywords":{}}],["explan",{"_index":663,"title":{},"content":{"53":{"position":[[6825,11],[6884,11]]},"74":{"position":[[362,11]]},"583":{"position":[[362,11]]},"791":{"position":[[1533,13]]}},"keywords":{}}],["explicit",{"_index":2384,"title":{},"content":{"291":{"position":[[84,8],[154,8]]},"754":{"position":[[84,8],[154,8]]}},"keywords":{}}],["explictili",{"_index":1511,"title":{},"content":{"117":{"position":[[278,10]]},"601":{"position":[[278,10]]}},"keywords":{}}],["explor",{"_index":1290,"title":{},"content":{"99":{"position":[[282,9]]},"136":{"position":[[331,9]]},"613":{"position":[[282,9]]},"664":{"position":[[331,9]]}},"keywords":{}}],["export",{"_index":1498,"title":{},"content":{"115":{"position":[[414,6],[501,6]]},"263":{"position":[[653,6],[1340,6]]},"316":{"position":[[282,6],[588,6]]},"599":{"position":[[414,6],[501,6]]},"788":{"position":[[707,6]]},"793":{"position":[[282,6],[588,6]]},"969":{"position":[[715,6]]},"981":{"position":[[447,7]]}},"keywords":{}}],["export160",{"_index":3412,"title":{},"content":{"791":{"position":[[2159,9],[3051,9],[4254,9],[8748,10],[8862,9],[13632,9],[18001,9],[18875,9],[20078,9],[24466,10],[24580,9],[29181,9]]}},"keywords":{}}],["export160_1%3a9.10.3.dfsg.p4",{"_index":3610,"title":{},"content":{"791":{"position":[[8790,28],[24508,28]]}},"keywords":{}}],["export162",{"_index":3410,"title":{},"content":{"791":{"position":[[2142,9],[3034,9],[4380,9],[8954,10],[9068,9],[13695,9],[17984,9],[18858,9],[20204,9],[24672,10],[24786,9],[29244,9]]}},"keywords":{}}],["export162_1%3a9.10.3.dfsg.p4",{"_index":3612,"title":{},"content":{"791":{"position":[[8996,28],[24714,28]]}},"keywords":{}}],["expos",{"_index":1825,"title":{},"content":{"161":{"position":[[182,7]]},"313":{"position":[[869,6]]},"314":{"position":[[28,6]]},"341":{"position":[[0,8]]},"495":{"position":[[607,8]]},"502":{"position":[[1611,7]]},"668":{"position":[[182,7]]},"744":{"position":[[1113,8]]},"785":{"position":[[869,6]]},"786":{"position":[[28,6]]}},"keywords":{}}],["express",{"_index":987,"title":{},"content":{"79":{"position":[[491,7]]}},"keywords":{}}],["ext",{"_index":1917,"title":{},"content":{"202":{"position":[[108,8]]},"314":{"position":[[392,8]]},"502":{"position":[[1419,10],[1962,8]]},"697":{"position":[[108,8]]},"786":{"position":[[392,8]]},"908":{"position":[[136,8],[247,8]]},"939":{"position":[[1669,10]]}},"keywords":{}}],["extent",{"_index":2095,"title":{},"content":{"252":{"position":[[431,6]]},"260":{"position":[[497,6]]}},"keywords":{}}],["extr",{"_index":3946,"title":{},"content":{"964":{"position":[[964,9]]}},"keywords":{}}],["extra",{"_index":1890,"title":{},"content":{"186":{"position":[[1116,5]]},"495":{"position":[[86,5],[144,5]]},"714":{"position":[[1116,5]]},"939":{"position":[[1896,5]]},"992":{"position":[[174,5]]}},"keywords":{}}],["extramount",{"_index":3194,"title":{},"content":{"495":{"position":[[398,12]]}},"keywords":{}}],["extraportmap",{"_index":2454,"title":{},"content":{"314":{"position":[[673,19],[802,18]]},"495":{"position":[[539,18]]},"786":{"position":[[673,19],[802,18]]}},"keywords":{}}],["extras/install_mkl.sh",{"_index":3319,"title":{},"content":{"777":{"position":[[942,23]]}},"keywords":{}}],["f",{"_index":2436,"title":{},"content":{"313":{"position":[[762,1]]},"318":{"position":[[67,1]]},"339":{"position":[[324,1]]},"496":{"position":[[220,1]]},"744":{"position":[[958,1],[1064,1]]},"785":{"position":[[762,1]]},"795":{"position":[[67,1]]}},"keywords":{}}],["f1",{"_index":3121,"title":{},"content":{"484":{"position":[[797,2]]},"947":{"position":[[797,2]]}},"keywords":{}}],["f2a3",{"_index":2807,"title":{},"content":{"389":{"position":[[520,4]]},"392":{"position":[[284,4]]},"395":{"position":[[272,4]]},"398":{"position":[[279,4]]},"878":{"position":[[520,4]]},"881":{"position":[[284,4]]},"884":{"position":[[272,4]]},"887":{"position":[[279,4]]}},"keywords":{}}],["f3",{"_index":3122,"title":{},"content":{"484":{"position":[[814,3]]},"947":{"position":[[814,3]]}},"keywords":{}}],["f821",{"_index":2963,"title":{},"content":{"439":{"position":[[1367,4]]}},"keywords":{}}],["facilit",{"_index":2302,"title":{},"content":{"270":{"position":[[559,10]]}},"keywords":{}}],["factor",{"_index":526,"title":{},"content":{"53":{"position":[[1704,8]]}},"keywords":{}}],["fail",{"_index":718,"title":{"481":{"position":[[9,4]]},"485":{"position":[[13,6]]},"944":{"position":[[9,4]]},"948":{"position":[[13,6]]}},"content":{"53":{"position":[[9484,5]]},"79":{"position":[[914,5]]},"94":{"position":[[505,6]]},"210":{"position":[[208,6]]},"268":{"position":[[380,7]]},"279":{"position":[[584,5]]},"431":{"position":[[42,7]]},"481":{"position":[[96,6],[1702,6]]},"608":{"position":[[505,6]]},"705":{"position":[[208,6]]},"905":{"position":[[42,7]]},"944":{"position":[[96,6],[1702,6]]}},"keywords":{}}],["failur",{"_index":1297,"title":{},"content":{"101":{"position":[[130,7]]},"153":{"position":[[196,7]]},"213":{"position":[[186,7]]},"279":{"position":[[622,7]]},"615":{"position":[[130,7]]},"653":{"position":[[196,7]]},"708":{"position":[[186,7]]},"791":{"position":[[15672,7]]}},"keywords":{}}],["fal",{"_index":1782,"title":{},"content":{"157":{"position":[[183,6],[1209,5]]},"314":{"position":[[192,5]]},"409":{"position":[[452,6]]},"492":{"position":[[291,5]]},"657":{"position":[[183,6],[1209,5]]},"786":{"position":[[192,5]]},"862":{"position":[[452,6]]},"965":{"position":[[10285,6],[16356,6]]}},"keywords":{}}],["familiar",{"_index":784,"title":{},"content":{"54":{"position":[[1860,8]]},"94":{"position":[[303,8]]},"608":{"position":[[303,8]]}},"keywords":{}}],["faq",{"_index":470,"title":{},"content":{"53":{"position":[[414,3],[2855,3]]},"73":{"position":[[129,3]]},"582":{"position":[[129,3]]}},"keywords":{}}],["far",{"_index":1012,"title":{},"content":{"79":{"position":[[2128,4]]},"252":{"position":[[978,3]]}},"keywords":{}}],["fault",{"_index":1962,"title":{"210":{"position":[[8,5]]},"705":{"position":[[8,5]]}},"content":{"963":{"position":[[185,5]]}},"keywords":{}}],["featur",{"_index":507,"title":{},"content":{"53":{"position":[[1274,7],[2376,8],[2614,7]]},"54":{"position":[[1104,9],[2698,7]]},"94":{"position":[[259,7]]},"184":{"position":[[256,8]]},"281":{"position":[[255,8]]},"286":{"position":[[378,8]]},"476":{"position":[[88,7],[403,8]]},"500":{"position":[[172,7],[400,8]]},"608":{"position":[[259,7]]},"712":{"position":[[256,8]]},"967":{"position":[[1202,9]]}},"keywords":{}}],["feature.wh",{"_index":3015,"title":{},"content":{"476":{"position":[[229,12]]}},"keywords":{}}],["feature_s",{"_index":1356,"title":{},"content":{"102":{"position":[[1789,15]]},"157":{"position":[[721,15]]},"616":{"position":[[1801,15]]},"657":{"position":[[721,15]]}},"keywords":{}}],["features.perform",{"_index":768,"title":{},"content":{"54":{"position":[[1330,16]]}},"keywords":{}}],["features=featur",{"_index":4199,"title":{},"content":{"967":{"position":[[1364,18]]}},"keywords":{}}],["feb",{"_index":2510,"title":{},"content":{"324":{"position":[[853,3]]},"774":{"position":[[306,3]]}},"keywords":{}}],["feedback",{"_index":503,"title":{},"content":{"53":{"position":[[1220,8]]}},"keywords":{}}],["feel",{"_index":940,"title":{},"content":{"74":{"position":[[557,4]]},"583":{"position":[[557,4]]}},"keywords":{}}],["fetch",{"_index":834,"title":{},"content":{"60":{"position":[[469,7],[581,7]]},"62":{"position":[[73,5]]},"64":{"position":[[41,5]]},"569":{"position":[[469,7],[581,7]]},"571":{"position":[[73,5]]},"573":{"position":[[41,5]]},"791":{"position":[[6934,7],[22652,7]]}},"keywords":{}}],["few",{"_index":928,"title":{},"content":{"74":{"position":[[170,3]]},"90":{"position":[[1687,3],[1824,3],[1872,3]]},"92":{"position":[[725,3]]},"102":{"position":[[845,3]]},"335":{"position":[[75,3]]},"583":{"position":[[170,3]]},"604":{"position":[[1687,3],[1824,3],[1872,3]]},"606":{"position":[[725,3]]},"616":{"position":[[850,3]]},"805":{"position":[[75,3]]}},"keywords":{}}],["ffff:127.0.0.0]/104",{"_index":3673,"title":{},"content":{"791":{"position":[[14427,22],[29976,22]]}},"keywords":{}}],["ffmpeg",{"_index":3307,"title":{},"content":{"777":{"position":[[727,6]]}},"keywords":{}}],["fi",{"_index":3109,"title":{},"content":{"484":{"position":[[582,2],[918,2]]},"791":{"position":[[1512,3]]},"947":{"position":[[582,2],[918,2]]}},"keywords":{}}],["field",{"_index":1056,"title":{},"content":{"86":{"position":[[566,5]]},"90":{"position":[[236,6]]},"134":{"position":[[1471,7]]},"179":{"position":[[78,6],[95,5]]},"180":{"position":[[82,6],[99,5]]},"181":{"position":[[374,6],[391,5]]},"350":{"position":[[54,5],[248,5]]},"355":{"position":[[0,5]]},"358":{"position":[[0,5],[219,5]]},"361":{"position":[[0,5]]},"365":{"position":[[52,5],[307,5],[919,5],[1234,5]]},"373":{"position":[[0,5]]},"376":{"position":[[0,5]]},"379":{"position":[[0,5]]},"384":{"position":[[0,5]]},"388":{"position":[[44,5],[246,5],[432,5]]},"391":{"position":[[0,5]]},"394":{"position":[[0,5]]},"397":{"position":[[0,5]]},"409":{"position":[[0,5],[373,5],[596,5],[851,5],[1132,5],[1367,5]]},"414":{"position":[[0,5]]},"417":{"position":[[0,5]]},"420":{"position":[[0,5]]},"604":{"position":[[236,6]]},"662":{"position":[[1471,7]]},"686":{"position":[[78,6],[95,5]]},"687":{"position":[[103,6],[120,5]]},"688":{"position":[[374,6],[391,5]]},"824":{"position":[[54,5],[248,5]]},"829":{"position":[[0,5]]},"832":{"position":[[0,5],[219,5]]},"835":{"position":[[0,5]]},"839":{"position":[[52,5],[307,5],[919,5],[1234,5]]},"847":{"position":[[0,5]]},"850":{"position":[[0,5]]},"853":{"position":[[0,5]]},"858":{"position":[[0,5]]},"862":{"position":[[0,5],[373,5],[596,5],[851,5],[1132,5],[1367,5]]},"867":{"position":[[0,5]]},"870":{"position":[[0,5]]},"873":{"position":[[0,5]]},"877":{"position":[[44,5],[246,5],[432,5]]},"880":{"position":[[0,5]]},"883":{"position":[[0,5]]},"886":{"position":[[0,5]]}},"keywords":{}}],["field_siz",{"_index":1353,"title":{},"content":{"102":{"position":[[1754,13]]},"157":{"position":[[686,13]]},"616":{"position":[[1766,13]]},"657":{"position":[[686,13]]}},"keywords":{}}],["fig",{"_index":1835,"title":{},"content":{"162":{"position":[[904,4]]},"669":{"position":[[1157,4]]}},"keywords":{}}],["fight",{"_index":2365,"title":{},"content":{"286":{"position":[[474,9]]}},"keywords":{}}],["fil",{"_index":565,"title":{"254":{"position":[[15,4]]},"263":{"position":[[40,4]]},"276":{"position":[[24,4]]},"278":{"position":[[37,4]]},"323":{"position":[[28,5]]},"773":{"position":[[28,5]]}},"content":{"53":{"position":[[2792,4]]},"63":{"position":[[125,6]]},"87":{"position":[[71,4]]},"115":{"position":[[441,5],[456,4]]},"116":{"position":[[47,5]]},"132":{"position":[[1582,7]]},"133":{"position":[[102,4],[216,4],[283,6],[498,6]]},"134":{"position":[[764,5]]},"136":{"position":[[372,4]]},"147":{"position":[[578,4],[641,4],[1332,4]]},"186":{"position":[[966,5]]},"236":{"position":[[243,4]]},"238":{"position":[[197,4]]},"242":{"position":[[273,5]]},"243":{"position":[[67,4]]},"254":{"position":[[98,4],[176,4],[235,5]]},"255":{"position":[[165,4],[247,4]]},"263":{"position":[[736,4],[855,4],[1423,4],[1546,4]]},"265":{"position":[[59,4]]},"289":{"position":[[1114,5],[1132,5]]},"298":{"position":[[22,6]]},"313":{"position":[[591,4]]},"323":{"position":[[64,5],[153,5]]},"335":{"position":[[113,5]]},"492":{"position":[[40,4],[1295,4]]},"495":{"position":[[284,5],[463,6]]},"496":{"position":[[65,4]]},"502":{"position":[[1094,6],[1485,5],[2211,5],[2332,5],[2459,5],[2584,5],[2734,6],[2862,6],[3344,4],[3408,4],[3499,4],[3530,4],[3638,5]]},"572":{"position":[[125,6]]},"594":{"position":[[71,4]]},"599":{"position":[[441,5],[456,4]]},"600":{"position":[[47,5]]},"618":{"position":[[126,6]]},"647":{"position":[[578,4],[641,4],[1332,4]]},"660":{"position":[[1582,7]]},"661":{"position":[[102,4],[216,4],[283,6],[498,6]]},"662":{"position":[[764,5]]},"664":{"position":[[372,4]]},"714":{"position":[[966,5]]},"740":{"position":[[246,4]]},"742":{"position":[[197,4]]},"745":{"position":[[273,5]]},"746":{"position":[[67,4]]},"752":{"position":[[1114,5],[1132,5]]},"765":{"position":[[22,6]]},"773":{"position":[[64,5],[153,5]]},"777":{"position":[[1131,6]]},"785":{"position":[[591,4]]},"788":{"position":[[141,5]]},"791":{"position":[[7593,5],[15264,4],[23311,5],[30813,4]]},"805":{"position":[[113,5]]},"923":{"position":[[124,6]]},"950":{"position":[[976,6]]},"954":{"position":[[1603,6]]},"960":{"position":[[95,5],[423,5]]},"964":{"position":[[1757,6],[1827,4]]},"967":{"position":[[83,4],[142,4],[290,4],[359,4],[524,4],[669,4],[824,4],[964,4],[1085,4],[1248,4],[1408,4],[1512,4],[1672,4],[1832,4],[1995,4]]},"969":{"position":[[1240,6]]}},"keywords":{}}],["files.us",{"_index":1383,"title":{},"content":{"104":{"position":[[126,11]]}},"keywords":{}}],["filesyst",{"_index":3101,"title":{},"content":{"484":{"position":[[70,10]]},"947":{"position":[[70,10]]}},"keywords":{}}],["fill",{"_index":1266,"title":{},"content":{"96":{"position":[[471,4]]},"345":{"position":[[52,4]]},"498":{"position":[[175,4]]},"502":{"position":[[1290,4]]},"610":{"position":[[471,4]]},"791":{"position":[[250,4]]},"819":{"position":[[52,4]]}},"keywords":{}}],["filt",{"_index":3834,"title":{},"content":{"939":{"position":[[1938,9]]}},"keywords":{}}],["fin",{"_index":1244,"title":{},"content":{"94":{"position":[[443,4]]},"279":{"position":[[35,5]]},"284":{"position":[[35,5]]},"608":{"position":[[443,4]]}},"keywords":{}}],["final",{"_index":1282,"title":{},"content":{"98":{"position":[[478,8]]},"612":{"position":[[478,8]]}},"keywords":{}}],["find",{"_index":1027,"title":{},"content":{"82":{"position":[[17,7]]},"133":{"position":[[587,4]]},"158":{"position":[[1041,5]]},"200":{"position":[[91,4],[312,4]]},"257":{"position":[[281,4]]},"262":{"position":[[122,4]]},"264":{"position":[[63,4]]},"314":{"position":[[1104,4]]},"328":{"position":[[1466,4],[1638,4]]},"471":{"position":[[105,4]]},"484":{"position":[[292,4],[380,4],[1106,4],[1123,6]]},"589":{"position":[[17,7]]},"658":{"position":[[1041,5]]},"661":{"position":[[587,4]]},"695":{"position":[[91,4],[312,4]]},"786":{"position":[[1104,4]]},"809":{"position":[[1486,4],[1658,4]]},"931":{"position":[[105,4]]},"947":{"position":[[292,4],[380,4],[1106,4],[1123,6]]}},"keywords":{}}],["fingerprint",{"_index":2112,"title":{},"content":{"252":{"position":[[1075,12]]}},"keywords":{}}],["finish",{"_index":1287,"title":{},"content":{"99":{"position":[[185,6]]},"118":{"position":[[795,9]]},"431":{"position":[[30,8]]},"613":{"position":[[185,6]]},"625":{"position":[[796,9]]},"777":{"position":[[1663,6]]},"791":{"position":[[17666,6],[32556,8]]},"905":{"position":[[30,8]]},"950":{"position":[[1688,6]]},"954":{"position":[[2086,6]]},"969":{"position":[[1723,6]]},"980":{"position":[[2266,8],[2468,8],[2670,8]]},"985":{"position":[[2126,8],[2328,8],[2530,8]]}},"keywords":{}}],["finishedtime\":\"2021",{"_index":2791,"title":{},"content":{"371":{"position":[[430,20]]},"845":{"position":[[430,20]]}},"keywords":{}}],["finishedtime\":nul",{"_index":2753,"title":{},"content":{"366":{"position":[[865,20]]},"369":{"position":[[985,20]]},"371":{"position":[[1466,20]]},"374":{"position":[[402,20]]},"377":{"position":[[896,20]]},"380":{"position":[[377,20]]},"421":{"position":[[555,20]]},"840":{"position":[[865,20]]},"843":{"position":[[985,20]]},"845":{"position":[[1466,20]]},"848":{"position":[[402,20]]},"851":{"position":[[896,20]]},"854":{"position":[[377,20]]},"874":{"position":[[555,20]]}},"keywords":{}}],["first",{"_index":708,"title":{"59":{"position":[[47,6]]},"82":{"position":[[5,5]]},"568":{"position":[[47,6]]},"589":{"position":[[5,5]]}},"content":{"53":{"position":[[9049,5]]},"73":{"position":[[33,5],[137,5]]},"75":{"position":[[283,5]]},"83":{"position":[[0,5]]},"90":{"position":[[2942,6]]},"118":{"position":[[94,5]]},"132":{"position":[[0,5],[946,5]]},"258":{"position":[[108,5]]},"268":{"position":[[289,5],[434,6]]},"310":{"position":[[206,5]]},"333":{"position":[[7,5]]},"488":{"position":[[151,6]]},"490":{"position":[[176,5]]},"582":{"position":[[33,5],[137,5]]},"584":{"position":[[283,5]]},"590":{"position":[[0,5]]},"604":{"position":[[2942,6]]},"625":{"position":[[94,5]]},"660":{"position":[[0,5],[946,5]]},"782":{"position":[[206,5]]},"803":{"position":[[7,5]]}},"keywords":{}}],["fiv",{"_index":3217,"title":{},"content":{"501":{"position":[[32,4]]}},"keywords":{}}],["fix",{"_index":106,"title":{},"content":{"4":{"position":[[932,3]]},"464":{"position":[[932,3]]},"967":{"position":[[2214,5]]}},"keywords":{}}],["flag",{"_index":3917,"title":{},"content":{"961":{"position":[[752,5]]}},"keywords":{}}],["flags_passthrough",{"_index":4176,"title":{},"content":{"967":{"position":[[270,19]]}},"keywords":{}}],["flake8",{"_index":2928,"title":{},"content":{"437":{"position":[[186,6]]},"921":{"position":[[186,6]]}},"keywords":{}}],["flake8.also",{"_index":2929,"title":{},"content":{"437":{"position":[[236,13]]},"921":{"position":[[236,13]]}},"keywords":{}}],["flavor",{"_index":648,"title":{},"content":{"53":{"position":[[6258,7]]}},"keywords":{}}],["float",{"_index":2997,"title":{"473":{"position":[[38,6]]},"933":{"position":[[38,6]]}},"content":{},"keywords":{}}],["float).step",{"_index":3772,"title":{},"content":{"912":{"position":[[95,12]]}},"keywords":{}}],["float.step",{"_index":3777,"title":{},"content":{"913":{"position":[[107,10]]}},"keywords":{}}],["flow",{"_index":1155,"title":{"144":{"position":[[0,5]]},"145":{"position":[[15,6]]},"154":{"position":[[7,5]]},"644":{"position":[[0,5]]},"645":{"position":[[15,6]]},"654":{"position":[[7,5]]}},"content":{"90":{"position":[[2658,6]]},"139":{"position":[[56,5]]},"158":{"position":[[112,4]]},"604":{"position":[[2658,6]]},"639":{"position":[[56,5]]},"658":{"position":[[112,4]]}},"keywords":{}}],["flow.appspot.com/#draw",{"_index":1440,"title":{},"content":{"110":{"position":[[1017,22]]},"624":{"position":[[1022,22]]}},"keywords":{}}],["flows/transform",{"_index":1147,"title":{},"content":{"90":{"position":[[2435,15]]},"604":{"position":[[2435,15]]}},"keywords":{}}],["fluent",{"_index":2386,"title":{},"content":{"291":{"position":[[118,6]]},"754":{"position":[[118,6]]}},"keywords":{}}],["fmt",{"_index":2934,"title":{},"content":{"437":{"position":[[506,4],[559,4]]},"921":{"position":[[506,4],[559,4]]}},"keywords":{}}],["focu",{"_index":1269,"title":{},"content":{"96":{"position":[[497,5]]},"257":{"position":[[22,5]]},"610":{"position":[[497,5]]}},"keywords":{}}],["fold",{"_index":1557,"title":{},"content":{"127":{"position":[[280,7]]},"134":{"position":[[1204,6]]},"136":{"position":[[229,7]]},"481":{"position":[[1985,6]]},"634":{"position":[[280,7]]},"662":{"position":[[1204,6]]},"664":{"position":[[229,7]]},"944":{"position":[[1985,6]]}},"keywords":{}}],["folk",{"_index":2333,"title":{},"content":{"281":{"position":[[106,6]]},"286":{"position":[[231,6]]}},"keywords":{}}],["follow",{"_index":490,"title":{},"content":{"53":{"position":[[947,9]]},"54":{"position":[[47,9]]},"58":{"position":[[10,7]]},"71":{"position":[[7,9]]},"79":{"position":[[1873,9]]},"81":{"position":[[62,9]]},"83":{"position":[[251,9]]},"86":{"position":[[660,6]]},"117":{"position":[[389,9],[888,9]]},"128":{"position":[[349,6]]},"132":{"position":[[1058,9]]},"134":{"position":[[59,9]]},"139":{"position":[[112,9],[1144,9]]},"239":{"position":[[21,6]]},"250":{"position":[[73,9]]},"252":{"position":[[1843,9],[2468,9]]},"254":{"position":[[66,8]]},"255":{"position":[[133,8]]},"257":{"position":[[263,9]]},"259":{"position":[[101,8]]},"260":{"position":[[29,9],[276,6],[2366,9]]},"262":{"position":[[12,9],[244,8]]},"265":{"position":[[92,9]]},"272":{"position":[[53,8]]},"281":{"position":[[271,8]]},"289":{"position":[[1078,9]]},"306":{"position":[[76,6]]},"314":{"position":[[990,9],[1083,9]]},"316":{"position":[[148,9]]},"318":{"position":[[33,9]]},"319":{"position":[[8,9]]},"320":{"position":[[61,9]]},"327":{"position":[[307,6]]},"334":{"position":[[182,6]]},"335":{"position":[[282,6]]},"401":{"position":[[8,9]]},"435":{"position":[[131,9]]},"436":{"position":[[153,9]]},"437":{"position":[[487,9]]},"440":{"position":[[210,6]]},"476":{"position":[[173,6],[342,6]]},"483":{"position":[[41,9]]},"495":{"position":[[294,9],[735,9]]},"502":{"position":[[128,9]]},"567":{"position":[[10,7]]},"580":{"position":[[7,9]]},"588":{"position":[[62,9]]},"590":{"position":[[251,9]]},"601":{"position":[[389,9],[888,9]]},"635":{"position":[[349,6]]},"639":{"position":[[112,9],[1149,9]]},"660":{"position":[[1058,9]]},"662":{"position":[[59,9]]},"743":{"position":[[21,6]]},"752":{"position":[[1078,9]]},"757":{"position":[[76,6]]},"778":{"position":[[12,9]]},"779":{"position":[[192,9]]},"786":{"position":[[990,9],[1083,9]]},"788":{"position":[[854,9]]},"791":{"position":[[1995,9],[2842,9],[15720,9],[17837,9],[18684,9]]},"793":{"position":[[148,9]]},"795":{"position":[[33,9]]},"796":{"position":[[8,9]]},"797":{"position":[[61,9]]},"804":{"position":[[182,6]]},"805":{"position":[[282,6]]},"808":{"position":[[307,6]]},"890":{"position":[[8,9]]},"919":{"position":[[131,9]]},"920":{"position":[[153,9]]},"921":{"position":[[487,9]]},"924":{"position":[[198,6]]},"939":{"position":[[93,9],[895,9],[1820,9]]},"946":{"position":[[41,9]]},"950":{"position":[[1327,9]]},"952":{"position":[[103,9]]},"957":{"position":[[105,9]]},"960":{"position":[[413,9]]},"963":{"position":[[366,8],[513,9]]},"970":{"position":[[12,9]]},"972":{"position":[[80,9]]},"976":{"position":[[9,6]]}},"keywords":{}}],["forc",{"_index":1233,"title":{"94":{"position":[[27,6]]},"608":{"position":[[27,6]]}},"content":{"94":{"position":[[61,6]]},"608":{"position":[[61,6]]}},"keywords":{}}],["forg",{"_index":1508,"title":{},"content":{"116":{"position":[[407,6]]},"600":{"position":[[407,6]]}},"keywords":{}}],["forget",{"_index":923,"title":{},"content":{"73":{"position":[[407,6]]},"582":{"position":[[407,6]]}},"keywords":{}}],["fork",{"_index":813,"title":{"59":{"position":[[7,4]]},"65":{"position":[[47,4]]},"568":{"position":[[7,4]]},"574":{"position":[[47,4]]}},"content":{"58":{"position":[[18,4]]},"59":{"position":[[51,4],[75,4]]},"67":{"position":[[11,4]]},"502":{"position":[[607,5],[3523,4]]},"522":{"position":[[1646,4]]},"567":{"position":[[18,4]]},"568":{"position":[[51,4],[75,4]]},"576":{"position":[[11,4]]}},"keywords":{}}],["form",{"_index":504,"title":{},"content":{"53":{"position":[[1250,4],[2158,4],[3034,4],[4622,4],[5559,5],[7490,4]]},"250":{"position":[[95,6]]},"327":{"position":[[197,4]]},"345":{"position":[[61,4]]},"808":{"position":[[197,4]]},"819":{"position":[[61,4]]}},"keywords":{}}],["format",{"_index":903,"title":{},"content":{"71":{"position":[[84,7]]},"90":{"position":[[2288,6],[2372,6]]},"157":{"position":[[788,8],[1130,7],[1286,6]]},"242":{"position":[[127,6]]},"435":{"position":[[230,6]]},"437":{"position":[[50,6],[471,7],[527,7],[535,8]]},"471":{"position":[[266,6]]},"492":{"position":[[601,6],[1014,6]]},"502":{"position":[[3425,6],[3504,8]]},"580":{"position":[[84,7]]},"604":{"position":[[2288,6],[2372,6]]},"657":{"position":[[788,8],[1130,7],[1286,6]]},"745":{"position":[[127,6]]},"919":{"position":[[230,6]]},"921":{"position":[[50,6],[471,7],[527,7],[535,8]]},"931":{"position":[[266,6]]}},"keywords":{}}],["format.answ",{"_index":1143,"title":{},"content":{"90":{"position":[[2144,13]]},"604":{"position":[[2144,13]]}},"keywords":{}}],["format.sh",{"_index":2927,"title":{},"content":{"437":{"position":[[167,9]]},"921":{"position":[[167,9]]}},"keywords":{}}],["format=tar.gz",{"_index":2293,"title":{},"content":{"269":{"position":[[173,13]]}},"keywords":{}}],["formatt",{"_index":1865,"title":{},"content":{"181":{"position":[[706,10]]},"688":{"position":[[706,10]]}},"keywords":{}}],["forum",{"_index":513,"title":{},"content":{"53":{"position":[[1403,7]]}},"keywords":{}}],["forward",{"_index":116,"title":{},"content":{"5":{"position":[[42,10],[208,10],[234,7]]},"289":{"position":[[98,7],[124,7]]},"305":{"position":[[417,10]]},"306":{"position":[[184,7],[210,7]]},"334":{"position":[[47,7]]},"341":{"position":[[140,10],[164,7]]},"465":{"position":[[42,10],[208,10],[234,7]]},"495":{"position":[[172,7]]},"744":{"position":[[1251,10],[1275,7]]},"752":{"position":[[98,7],[124,7]]},"756":{"position":[[417,10]]},"757":{"position":[[184,7],[210,7]]},"804":{"position":[[47,7]]},"815":{"position":[[5,10],[29,10],[55,7]]}},"keywords":{}}],["found",{"_index":762,"title":{},"content":{"54":{"position":[[1135,5]]},"74":{"position":[[436,5]]},"110":{"position":[[1635,5]]},"115":{"position":[[214,5]]},"424":{"position":[[110,5]]},"425":{"position":[[138,5]]},"484":{"position":[[683,6],[1075,5]]},"583":{"position":[[436,5]]},"599":{"position":[[214,5]]},"624":{"position":[[1640,5]]},"898":{"position":[[110,5]]},"899":{"position":[[138,5]]},"947":{"position":[[683,6],[1075,5]]},"965":{"position":[[1456,5],[1702,5],[10873,5],[11119,5]]}},"keywords":{}}],["foundat",{"_index":464,"title":{},"content":{"53":{"position":[[253,11],[269,10],[403,10],[463,11],[2822,11],[4904,10]]},"54":{"position":[[129,11]]},"56":{"position":[[225,10]]},"252":{"position":[[318,11]]},"260":{"position":[[384,11]]},"565":{"position":[[225,10]]}},"keywords":{}}],["four",{"_index":647,"title":{},"content":{"53":{"position":[[6253,4]]},"500":{"position":[[111,4]]},"502":{"position":[[2925,4]]}},"keywords":{}}],["fragment",{"_index":1127,"title":{},"content":{"90":{"position":[[1521,10]]},"604":{"position":[[1521,10]]}},"keywords":{}}],["framework",{"_index":221,"title":{},"content":{"15":{"position":[[781,12]]},"18":{"position":[[778,12]]},"22":{"position":[[155,12],[913,12]]},"23":{"position":[[155,12],[1060,12]]},"24":{"position":[[422,12],[1073,12]]},"25":{"position":[[455,12]]},"26":{"position":[[163,12],[766,12]]},"27":{"position":[[458,12]]},"90":{"position":[[1712,10],[1775,11],[2235,10]]},"177":{"position":[[89,11],[148,9],[323,11]]},"178":{"position":[[39,10]]},"179":{"position":[[59,10],[158,9],[314,10]]},"197":{"position":[[674,11]]},"302":{"position":[[318,10]]},"365":{"position":[[402,9],[430,10]]},"366":{"position":[[121,12]]},"369":{"position":[[121,12]]},"377":{"position":[[122,12]]},"405":{"position":[[81,12]]},"409":{"position":[[946,9],[974,10]]},"410":{"position":[[749,12]]},"415":{"position":[[754,12]]},"424":{"position":[[340,12]]},"425":{"position":[[347,12]]},"502":{"position":[[230,10],[3059,10]]},"544":{"position":[[781,12]]},"547":{"position":[[778,12]]},"551":{"position":[[155,12],[913,12]]},"552":{"position":[[155,12],[1060,12]]},"553":{"position":[[422,12],[1073,12]]},"554":{"position":[[455,12]]},"555":{"position":[[163,12],[766,12]]},"556":{"position":[[458,12]]},"604":{"position":[[1712,10],[1775,11],[2235,10]]},"684":{"position":[[89,11],[148,9],[323,11]]},"685":{"position":[[39,10]]},"686":{"position":[[59,10],[158,9],[314,10]]},"692":{"position":[[674,11]]},"770":{"position":[[318,10]]},"839":{"position":[[402,9],[430,10]]},"840":{"position":[[121,12]]},"843":{"position":[[121,12]]},"851":{"position":[[122,12]]},"862":{"position":[[946,9],[974,10]]},"863":{"position":[[749,12]]},"868":{"position":[[754,12]]},"894":{"position":[[81,12]]},"898":{"position":[[340,12]]},"899":{"position":[[347,12]]},"980":{"position":[[363,9]]},"981":{"position":[[257,9]]},"985":{"position":[[365,9]]},"986":{"position":[[262,9]]},"990":{"position":[[303,9]]},"991":{"position":[[338,9]]}},"keywords":{}}],["framework\":\"tensorflow",{"_index":2754,"title":{},"content":{"366":{"position":[[951,25]]},"369":{"position":[[1071,25]]},"371":{"position":[[544,25],[1552,25]]},"374":{"position":[[488,25]]},"377":{"position":[[982,25]]},"380":{"position":[[463,25]]},"410":{"position":[[2317,25]]},"412":{"position":[[1319,25]]},"415":{"position":[[2347,25]]},"418":{"position":[[1343,25]]},"421":{"position":[[642,25]]},"840":{"position":[[951,25]]},"843":{"position":[[1071,25]]},"845":{"position":[[544,25],[1552,25]]},"848":{"position":[[488,25]]},"851":{"position":[[982,25]]},"854":{"position":[[463,25]]},"863":{"position":[[2317,25]]},"865":{"position":[[1319,25]]},"868":{"position":[[2347,25]]},"871":{"position":[[1343,25]]},"874":{"position":[[642,25]]}},"keywords":{}}],["framework='tensorflow",{"_index":2558,"title":{},"content":{"328":{"position":[[792,23]]},"809":{"position":[[812,23]]}},"keywords":{}}],["free",{"_index":2091,"title":{},"content":{"252":{"position":[[304,4],[343,4],[366,4]]},"260":{"position":[[370,4],[409,4],[432,4]]},"965":{"position":[[1596,4],[1842,4],[11013,4],[11259,4]]}},"keywords":{}}],["frequent",{"_index":1288,"title":{},"content":{"99":{"position":[[232,10]]},"184":{"position":[[197,8]]},"613":{"position":[[232,10]]},"712":{"position":[[197,8]]}},"keywords":{}}],["fri",{"_index":33,"title":{},"content":{"3":{"position":[[152,3]]},"463":{"position":[[152,3]]}},"keywords":{}}],["fro",{"_index":855,"title":{},"content":{"62":{"position":[[137,3]]},"571":{"position":[[137,3]]}},"keywords":{}}],["front",{"_index":1881,"title":{},"content":{"186":{"position":[[145,5]]},"302":{"position":[[280,5]]},"714":{"position":[[145,5]]},"770":{"position":[[280,5]]}},"keywords":{}}],["frontend",{"_index":2058,"title":{"287":{"position":[[11,8]]},"291":{"position":[[10,8]]},"750":{"position":[[11,8]]},"754":{"position":[[10,8]]}},"content":{"239":{"position":[[449,8]]},"743":{"position":[[433,8]]}},"keywords":{}}],["full",{"_index":1667,"title":{},"content":{"140":{"position":[[14,4]]},"184":{"position":[[99,4]]},"186":{"position":[[614,4]]},"260":{"position":[[111,4],[318,4]]},"262":{"position":[[163,4]]},"640":{"position":[[14,4]]},"712":{"position":[[99,4]]},"714":{"position":[[614,4]]}},"keywords":{}}],["fulli",{"_index":986,"title":{},"content":{"79":{"position":[[485,5]]},"252":{"position":[[1202,5]]}},"keywords":{}}],["function",{"_index":1268,"title":{"469":{"position":[[0,9]]},"929":{"position":[[0,9]]}},"content":{"96":{"position":[[485,8]]},"101":{"position":[[371,9]]},"186":{"position":[[155,9],[310,9]]},"187":{"position":[[17,8]]},"205":{"position":[[164,8],[271,8]]},"214":{"position":[[116,9]]},"291":{"position":[[237,9]]},"297":{"position":[[15,8]]},"303":{"position":[[92,9]]},"610":{"position":[[485,8]]},"615":{"position":[[371,9]]},"700":{"position":[[164,8],[271,8]]},"709":{"position":[[116,9]]},"714":{"position":[[155,9],[310,9]]},"715":{"position":[[17,8]]},"754":{"position":[[237,9]]},"764":{"position":[[15,8]]},"771":{"position":[[92,9]]},"939":{"position":[[1902,10]]}},"keywords":{}}],["funtion",{"_index":2043,"title":{},"content":{"237":{"position":[[151,7]]},"741":{"position":[[151,7]]}},"keywords":{}}],["furth",{"_index":812,"title":{},"content":{"56":{"position":[[236,8]]},"139":{"position":[[2048,7]]},"281":{"position":[[1493,7]]},"565":{"position":[[236,8]]},"639":{"position":[[2061,7]]}},"keywords":{}}],["futur",{"_index":1645,"title":{},"content":{"136":{"position":[[415,7]]},"152":{"position":[[1184,7]]},"487":{"position":[[97,8]]},"652":{"position":[[1464,7]]},"664":{"position":[[415,7]]},"992":{"position":[[345,6]]}},"keywords":{}}],["g",{"_index":3295,"title":{},"content":{"777":{"position":[[219,4],[573,3]]}},"keywords":{}}],["g+rwx",{"_index":3078,"title":{},"content":{"481":{"position":[[1898,5],[2053,5]]},"944":{"position":[[1898,5],[2053,5]]}},"keywords":{}}],["g2ntd",{"_index":3742,"title":{},"content":{"814":{"position":[[383,5]]}},"keywords":{}}],["gain",{"_index":719,"title":{},"content":{"53":{"position":[[9493,4]]},"54":{"position":[[350,6]]},"260":{"position":[[1722,4],[1978,4]]}},"keywords":{}}],["gap",{"_index":1226,"title":{},"content":{"93":{"position":[[580,4]]},"607":{"position":[[580,4]]}},"keywords":{}}],["garbl",{"_index":2173,"title":{},"content":{"260":{"position":[[257,7]]}},"keywords":{}}],["gb",{"_index":1605,"title":{},"content":{"133":{"position":[[492,5]]},"661":{"position":[[492,5]]}},"keywords":{}}],["gbdt",{"_index":1096,"title":{},"content":{"90":{"position":[[508,5]]},"604":{"position":[[508,5]]}},"keywords":{}}],["gce",{"_index":1893,"title":{},"content":{"189":{"position":[[159,3]]},"717":{"position":[[166,3]]}},"keywords":{}}],["gce/aws/azur",{"_index":1880,"title":{},"content":{"184":{"position":[[645,14]]},"712":{"position":[[650,14]]}},"keywords":{}}],["gcloud",{"_index":3928,"title":{},"content":{"963":{"position":[[624,6]]}},"keywords":{}}],["gcp",{"_index":1894,"title":{"193":{"position":[[12,3]]},"722":{"position":[[12,3]]}},"content":{},"keywords":{}}],["gen",{"_index":652,"title":{"176":{"position":[[0,7]]},"260":{"position":[[4,8]]},"261":{"position":[[15,9]]},"272":{"position":[[22,9]]},"439":{"position":[[0,8]]},"683":{"position":[[0,7]]},"923":{"position":[[0,8]]}},"content":{"53":{"position":[[6325,8],[6601,8]]},"54":{"position":[[675,9]]},"73":{"position":[[53,7],[463,9]]},"90":{"position":[[2358,7]]},"98":{"position":[[189,9]]},"102":{"position":[[274,11]]},"104":{"position":[[38,9]]},"132":{"position":[[1557,8]]},"134":{"position":[[1722,10]]},"139":{"position":[[1881,9]]},"153":{"position":[[307,7]]},"161":{"position":[[751,7]]},"177":{"position":[[246,7]]},"242":{"position":[[71,10],[240,8]]},"260":{"position":[[323,3],[1498,8],[1652,11],[1693,9],[1754,8],[1908,11],[1949,9]]},"263":{"position":[[719,9],[1406,9]]},"286":{"position":[[76,9]]},"436":{"position":[[70,8]]},"439":{"position":[[28,8],[111,8],[1122,8]]},"491":{"position":[[774,8]]},"582":{"position":[[53,7],[463,9]]},"604":{"position":[[2358,7]]},"612":{"position":[[189,9]]},"616":{"position":[[274,11]]},"618":{"position":[[38,9]]},"639":{"position":[[1894,9]]},"653":{"position":[[307,7]]},"660":{"position":[[1557,8]]},"662":{"position":[[1722,10]]},"668":{"position":[[751,7]]},"684":{"position":[[246,7]]},"745":{"position":[[71,10],[240,8]]},"909":{"position":[[294,10]]},"920":{"position":[[70,8]]},"923":{"position":[[28,8],[181,8]]},"960":{"position":[[77,8],[212,8]]}},"keywords":{}}],["generate_cifar10_tfrecords.pi",{"_index":3910,"title":{},"content":{"960":{"position":[[294,29]]}},"keywords":{}}],["generatorto",{"_index":2938,"title":{},"content":{"439":{"position":[[16,11]]},"923":{"position":[[16,11]]}},"keywords":{}}],["get",{"_index":2049,"title":{},"content":{"239":{"position":[[28,7]]},"743":{"position":[[28,7]]}},"keywords":{}}],["get:1",{"_index":3465,"title":{},"content":{"791":{"position":[[3483,5],[19307,5]]}},"keywords":{}}],["get:10",{"_index":3498,"title":{},"content":{"791":{"position":[[4434,6],[20258,6]]}},"keywords":{}}],["get:11",{"_index":3502,"title":{},"content":{"791":{"position":[[4550,6],[20374,6]]}},"keywords":{}}],["get:12",{"_index":3504,"title":{},"content":{"791":{"position":[[4666,6],[20490,6]]}},"keywords":{}}],["get:13",{"_index":3508,"title":{},"content":{"791":{"position":[[4768,6],[20592,6]]}},"keywords":{}}],["get:14",{"_index":3511,"title":{},"content":{"791":{"position":[[4852,6],[20676,6]]}},"keywords":{}}],["get:15",{"_index":3514,"title":{},"content":{"791":{"position":[[4944,6],[20768,6]]}},"keywords":{}}],["get:16",{"_index":3518,"title":{},"content":{"791":{"position":[[5059,6],[20883,6]]}},"keywords":{}}],["get:17",{"_index":3522,"title":{},"content":{"791":{"position":[[5156,6],[20980,6]]}},"keywords":{}}],["get:18",{"_index":3525,"title":{},"content":{"791":{"position":[[5244,6],[21068,6]]}},"keywords":{}}],["get:19",{"_index":3528,"title":{},"content":{"791":{"position":[[5351,6],[21175,6]]}},"keywords":{}}],["get:2",{"_index":3470,"title":{},"content":{"791":{"position":[[3576,5],[19400,5]]}},"keywords":{}}],["get:20",{"_index":3532,"title":{},"content":{"791":{"position":[[5457,6],[21281,6]]}},"keywords":{}}],["get:21",{"_index":3537,"title":{},"content":{"791":{"position":[[5560,6],[21384,6]]}},"keywords":{}}],["get:22",{"_index":3539,"title":{},"content":{"791":{"position":[[5666,6],[21490,6]]}},"keywords":{}}],["get:23",{"_index":3542,"title":{},"content":{"791":{"position":[[5758,6],[21582,6]]}},"keywords":{}}],["get:24",{"_index":3544,"title":{},"content":{"791":{"position":[[5861,6],[21685,6]]}},"keywords":{}}],["get:25",{"_index":3546,"title":{},"content":{"791":{"position":[[5967,6],[21791,6]]}},"keywords":{}}],["get:26",{"_index":3550,"title":{},"content":{"791":{"position":[[6073,6],[21912,6]]}},"keywords":{}}],["get:27",{"_index":3552,"title":{},"content":{"791":{"position":[[6194,6],[22027,6]]}},"keywords":{}}],["get:28",{"_index":3554,"title":{},"content":{"791":{"position":[[6309,6],[22130,6]]}},"keywords":{}}],["get:29",{"_index":3557,"title":{},"content":{"791":{"position":[[6412,6],[22226,6]]}},"keywords":{}}],["get:3",{"_index":3473,"title":{},"content":{"791":{"position":[[3665,5],[19489,5]]}},"keywords":{}}],["get:30",{"_index":3560,"title":{},"content":{"791":{"position":[[6508,6],[22319,6]]}},"keywords":{}}],["get:31",{"_index":3563,"title":{},"content":{"791":{"position":[[6601,6],[22439,6]]}},"keywords":{}}],["get:32",{"_index":3566,"title":{},"content":{"791":{"position":[[6721,6],[22553,6]]}},"keywords":{}}],["get:33",{"_index":3570,"title":{},"content":{"791":{"position":[[6835,6]]}},"keywords":{}}],["get:4",{"_index":3477,"title":{},"content":{"791":{"position":[[3768,5],[19592,5]]}},"keywords":{}}],["get:5",{"_index":3479,"title":{},"content":{"791":{"position":[[3867,5],[19691,5]]}},"keywords":{}}],["get:6",{"_index":3483,"title":{},"content":{"791":{"position":[[3964,5],[19788,5]]}},"keywords":{}}],["get:7",{"_index":3489,"title":{},"content":{"791":{"position":[[4076,5],[19900,5]]}},"keywords":{}}],["get:8",{"_index":3492,"title":{},"content":{"791":{"position":[[4182,5],[20006,5]]}},"keywords":{}}],["get:9",{"_index":3496,"title":{},"content":{"791":{"position":[[4308,5],[20132,5]]}},"keywords":{}}],["get_experiment(id",{"_index":2882,"title":{"426":{"position":[[0,18]]},"900":{"position":[[0,18]]}},"content":{},"keywords":{}}],["get_log(id",{"_index":2891,"title":{"429":{"position":[[0,11]]},"903":{"position":[[0,11]]}},"content":{},"keywords":{}}],["getmysqljar",{"_index":3161,"title":{},"content":{"490":{"position":[[214,12],[304,11]]}},"keywords":{}}],["getqueri",{"_index":1943,"title":{},"content":{"207":{"position":[[519,9]]},"702":{"position":[[519,9]]}},"keywords":{}}],["ghz",{"_index":3993,"title":{},"content":{"965":{"position":[[1538,5],[1784,5],[10955,5],[11201,5]]}},"keywords":{}}],["git",{"_index":26,"title":{"275":{"position":[[22,3]]}},"content":{"3":{"position":[[2,3]]},"60":{"position":[[44,3],[101,3],[184,3],[250,3],[351,3],[615,3]]},"62":{"position":[[49,3],[69,3],[88,3],[172,3],[224,3]]},"63":{"position":[[108,3],[132,3],[203,3]]},"64":{"position":[[37,3],[56,3],[106,3],[157,3]]},"65":{"position":[[0,3]]},"76":{"position":[[15,3]]},"107":{"position":[[334,3]]},"133":{"position":[[693,3]]},"134":{"position":[[117,3],[196,4],[1284,3],[1496,3],[2036,3],[2056,3],[2074,4],[2289,3]]},"140":{"position":[[887,4],[1277,3]]},"268":{"position":[[234,3],[443,3]]},"269":{"position":[[159,3]]},"275":{"position":[[0,3]]},"281":{"position":[[416,3]]},"310":{"position":[[0,3]]},"324":{"position":[[64,4],[611,4],[882,4]]},"333":{"position":[[121,3],[220,3]]},"339":{"position":[[18,3]]},"463":{"position":[[2,3]]},"502":{"position":[[3513,3]]},"522":{"position":[[1614,3]]},"569":{"position":[[44,3],[101,3],[184,3],[250,3],[351,3],[615,3]]},"571":{"position":[[49,3],[69,3],[88,3],[172,3],[224,3]]},"572":{"position":[[108,3],[132,3],[203,3]]},"573":{"position":[[37,3],[56,3],[106,3],[157,3]]},"574":{"position":[[0,3]]},"585":{"position":[[15,3]]},"621":{"position":[[335,3]]},"640":{"position":[[887,4],[1277,3]]},"661":{"position":[[693,3]]},"662":{"position":[[117,3],[196,4],[1284,3],[1496,3],[2036,3],[2056,3],[2074,4],[2289,3]]},"774":{"position":[[64,4],[335,4]]},"777":{"position":[[647,3],[823,3]]},"782":{"position":[[0,3]]},"788":{"position":[[475,3]]},"803":{"position":[[121,3],[220,3]]},"813":{"position":[[20,3]]},"950":{"position":[[597,3]]},"954":{"position":[[553,3],[1204,3],[1273,3],[1490,3]]}},"keywords":{}}],["git@github.com:${username}/submarine.git",{"_index":824,"title":{},"content":{"60":{"position":[[54,40],[428,40],[486,40]]},"569":{"position":[[54,40],[428,40],[486,40]]}},"keywords":{}}],["git@github.com:apache/submarine.git",{"_index":828,"title":{},"content":{"60":{"position":[[208,35],[545,35]]},"569":{"position":[[208,35],[545,35]]}},"keywords":{}}],["git_tag",{"_index":2284,"title":{},"content":{"268":{"position":[[245,8]]},"269":{"position":[[348,8]]}},"keywords":{}}],["git_tag=${release_v",{"_index":2282,"title":{},"content":{"268":{"position":[[191,26]]}},"keywords":{}}],["github",{"_index":817,"title":{"59":{"position":[[29,6]]},"66":{"position":[[13,6]]},"67":{"position":[[32,6]]},"68":{"position":[[14,6]]},"264":{"position":[[29,6]]},"290":{"position":[[16,6]]},"307":{"position":[[16,6]]},"568":{"position":[[29,6]]},"575":{"position":[[13,6]]},"576":{"position":[[32,6]]},"577":{"position":[[14,6]]},"753":{"position":[[16,6]]},"758":{"position":[[16,6]]}},"content":{"60":{"position":[[18,6]]},"82":{"position":[[248,6]]},"148":{"position":[[682,7]]},"175":{"position":[[74,6]]},"233":{"position":[[115,7]]},"241":{"position":[[64,7]]},"264":{"position":[[180,6]]},"288":{"position":[[169,6]]},"290":{"position":[[30,6]]},"296":{"position":[[78,7]]},"305":{"position":[[167,6]]},"307":{"position":[[31,6]]},"333":{"position":[[29,6]]},"365":{"position":[[1190,7]]},"441":{"position":[[188,6]]},"569":{"position":[[18,6]]},"589":{"position":[[248,6]]},"648":{"position":[[682,7]]},"682":{"position":[[74,6]]},"737":{"position":[[115,7]]},"744":{"position":[[1819,7]]},"751":{"position":[[169,6]]},"753":{"position":[[30,6]]},"756":{"position":[[167,6]]},"758":{"position":[[31,6]]},"763":{"position":[[78,7]]},"803":{"position":[[29,6]]},"839":{"position":[[1190,7]]},"925":{"position":[[188,6]]}},"keywords":{}}],["github/gitlab",{"_index":3225,"title":{},"content":{"502":{"position":[[550,14],[3587,13]]},"522":{"position":[[215,24],[265,13],[1628,13]]}},"keywords":{}}],["githubpul",{"_index":937,"title":{},"content":{"74":{"position":[[449,10]]},"583":{"position":[[449,10]]}},"keywords":{}}],["git|hdfs|nfs|s3",{"_index":2739,"title":{},"content":{"365":{"position":[[1277,17]]},"839":{"position":[[1277,17]]}},"keywords":{}}],["giv",{"_index":683,"title":{},"content":{"53":{"position":[[7842,5]]},"184":{"position":[[94,4]]},"260":{"position":[[1669,5],[1925,5]]},"492":{"position":[[615,5],[1028,5]]},"712":{"position":[[94,4]]}},"keywords":{}}],["glob",{"_index":4296,"title":{},"content":{"981":{"position":[[505,5]]}},"keywords":{}}],["glob):path",{"_index":4261,"title":{},"content":{"980":{"position":[[202,10]]},"981":{"position":[[96,10]]},"985":{"position":[[199,10]]},"986":{"position":[[96,10]]},"990":{"position":[[139,10]]},"991":{"position":[[174,10]]}},"keywords":{}}],["global",{"_index":3702,"title":{},"content":{"791":{"position":[[15944,6]]},"965":{"position":[[9607,6]]}},"keywords":{}}],["global_step",{"_index":4094,"title":{},"content":{"965":{"position":[[9641,11]]}},"keywords":{}}],["global_step=tf.train.get_global_step",{"_index":4205,"title":{},"content":{"967":{"position":[[1472,39]]}},"keywords":{}}],["gloo",{"_index":278,"title":{},"content":{"24":{"position":[[1136,6]]},"28":{"position":[[423,4],[490,4]]},"29":{"position":[[336,4],[394,4],[1513,4],[1571,4]]},"553":{"position":[[1136,6]]},"557":{"position":[[423,4],[490,4]]},"558":{"position":[[336,4],[394,4],[1513,4],[1571,4]]}},"keywords":{}}],["gnu",{"_index":3660,"title":{},"content":{"791":{"position":[[13448,3],[28997,3]]}},"keywords":{}}],["gnupg",{"_index":2088,"title":{},"content":{"252":{"position":[[269,7]]},"260":{"position":[[335,7],[1144,5]]}},"keywords":{}}],["go",{"_index":655,"title":{"230":{"position":[[0,2]]}},"content":{"53":{"position":[[6496,2],[6691,5]]},"230":{"position":[[0,2]]},"255":{"position":[[447,2]]},"264":{"position":[[0,2]]},"333":{"position":[[39,2]]},"341":{"position":[[266,2],[361,2]]},"744":{"position":[[761,2],[1407,2],[1509,2]]},"788":{"position":[[533,2]]},"803":{"position":[[39,2]]},"950":{"position":[[464,5]]}},"keywords":{}}],["goal",{"_index":1898,"title":{},"content":{"197":{"position":[[387,4]]},"692":{"position":[[387,4]]}},"keywords":{}}],["goe",{"_index":1796,"title":{},"content":{"158":{"position":[[1229,4]]},"658":{"position":[[1229,4]]}},"keywords":{}}],["good",{"_index":888,"title":{"96":{"position":[[11,4]]},"610":{"position":[[11,4]]}},"content":{"69":{"position":[[151,6],[190,4]]},"93":{"position":[[473,4]]},"145":{"position":[[59,4]]},"252":{"position":[[2715,4]]},"260":{"position":[[1538,4],[1794,4]]},"578":{"position":[[151,6],[190,4]]},"607":{"position":[[473,4]]},"645":{"position":[[59,4]]}},"keywords":{}}],["googl",{"_index":899,"title":{"963":{"position":[[22,6]]}},"content":{"71":{"position":[[17,6]]},"580":{"position":[[17,6]]},"963":{"position":[[27,6],[317,6]]},"964":{"position":[[1840,6]]}},"keywords":{}}],["gov",{"_index":485,"title":{},"content":{"53":{"position":[[854,6]]}},"keywords":{}}],["gpg",{"_index":2085,"title":{"252":{"position":[[10,3]]},"258":{"position":[[7,3]]},"259":{"position":[[12,3]]},"260":{"position":[[13,3]]},"263":{"position":[[13,3]]},"264":{"position":[[11,3]]}},"content":{"252":{"position":[[104,3],[208,3],[265,3],[715,4],[1591,4],[1916,3],[1950,3],[2174,3],[2299,3],[2601,4],[2650,4],[2710,4]]},"253":{"position":[[128,3],[163,3],[328,3],[404,3]]},"259":{"position":[[125,3],[131,3]]},"260":{"position":[[312,3],[331,3],[2064,4],[2389,4],[2444,4]]},"261":{"position":[[4,3],[242,3]]},"263":{"position":[[606,4],[647,3],[924,3],[1293,4],[1334,3],[1619,3]]},"264":{"position":[[47,3],[164,3]]},"265":{"position":[[759,3]]},"268":{"position":[[367,4]]},"271":{"position":[[31,3],[125,3]]},"272":{"position":[[93,3]]},"323":{"position":[[159,3],[177,3]]},"773":{"position":[[159,3],[177,3]]}},"keywords":{}}],["gpg.keyname>your",{"_index":2270,"title":{},"content":{"265":{"position":[[712,17]]}},"keywords":{}}],["gpg.passphrase>your",{"_index":2275,"title":{},"content":{"265":{"position":[[892,20]]}},"keywords":{}}],["gpg.useagent>true</gpg.useag",{"_index":2274,"title":{},"content":{"265":{"position":[[858,33]]}},"keywords":{}}],["gpm2p",{"_index":2620,"title":{},"content":{"340":{"position":[[428,5]]}},"keywords":{}}],["gpu",{"_index":1339,"title":{"961":{"position":[[34,4]]}},"content":{"102":{"position":[[1305,3]]},"112":{"position":[[818,3]]},"139":{"position":[[1806,4]]},"140":{"position":[[1203,4],[1535,3],[1560,4]]},"327":{"position":[[672,3],[703,3]]},"353":{"position":[[235,3],[294,3]]},"476":{"position":[[76,3],[187,3],[217,3]]},"479":{"position":[[20,3],[153,3]]},"481":{"position":[[1942,4]]},"485":{"position":[[17,4],[76,4]]},"596":{"position":[[818,3]]},"616":{"position":[[1317,3]]},"639":{"position":[[1819,4]]},"640":{"position":[[1203,4],[1535,3],[1560,4]]},"777":{"position":[[234,3],[369,3]]},"778":{"position":[[161,4]]},"779":{"position":[[223,3],[290,3],[473,3]]},"789":{"position":[[100,3]]},"791":{"position":[[1062,3]]},"827":{"position":[[235,3],[294,3]]},"942":{"position":[[20,3],[153,3]]},"944":{"position":[[1942,4]]},"948":{"position":[[17,4],[76,4]]},"950":{"position":[[206,3],[354,3],[731,3]]},"951":{"position":[[278,4]]},"952":{"position":[[219,3],[286,3]]},"954":{"position":[[210,3],[357,3]]},"955":{"position":[[198,4],[330,4]]},"957":{"position":[[145,3],[214,3]]},"958":{"position":[[96,3]]},"961":{"position":[[210,4],[426,4],[437,3],[698,3]]},"965":{"position":[[169,4],[9743,4]]},"969":{"position":[[216,3],[356,3]]},"970":{"position":[[443,4],[580,4]]},"972":{"position":[[108,3],[180,3],[209,3]]}},"keywords":{}}],["gpu.w",{"_index":3398,"title":{},"content":{"791":{"position":[[1737,6]]}},"keywords":{}}],["gpu:0",{"_index":4052,"title":{},"content":{"965":{"position":[[7617,8]]}},"keywords":{}}],["gpu:0.0.1",{"_index":3023,"title":{},"content":{"479":{"position":[[262,9]]},"942":{"position":[[262,9]]},"957":{"position":[[248,9]]},"972":{"position":[[290,9]]},"986":{"position":[[310,9]]}},"keywords":{}}],["gpu:0.0.1hadoopsubmarine/tf",{"_index":4248,"title":{},"content":{"973":{"position":[[91,27]]}},"keywords":{}}],["gpu:1",{"_index":4056,"title":{},"content":{"965":{"position":[[7796,8]]}},"keywords":{}}],["gpu:2",{"_index":4058,"title":{},"content":{"965":{"position":[[7975,8]]}},"keywords":{}}],["gpu:3",{"_index":4061,"title":{},"content":{"965":{"position":[[8154,8]]}},"keywords":{}}],["gpu:4",{"_index":4064,"title":{},"content":{"965":{"position":[[8333,8]]}},"keywords":{}}],["gpu:5",{"_index":4067,"title":{},"content":{"965":{"position":[[8512,8]]}},"keywords":{}}],["gpu:6",{"_index":4070,"title":{},"content":{"965":{"position":[[8691,8]]}},"keywords":{}}],["gpu:7",{"_index":4073,"title":{},"content":{"965":{"position":[[8870,8]]}},"keywords":{}}],["gpu=0",{"_index":1684,"title":{},"content":{"140":{"position":[[1158,6]]},"640":{"position":[[1158,6]]}},"keywords":{}}],["gpu=2",{"_index":1678,"title":{},"content":{"140":{"position":[[489,6],[1253,6]]},"640":{"position":[[489,6],[1253,6]]}},"keywords":{}}],["gpu_driver=375",{"_index":1454,"title":{},"content":{"112":{"position":[[675,18],[1631,18],[1912,18]]},"596":{"position":[[675,18],[1631,18],[1912,18]]}},"keywords":{}}],["gpu_opt",{"_index":3973,"title":{},"content":{"965":{"position":[[1070,11],[1250,11],[4969,11],[10552,11],[10732,11],[14475,11],[16621,11],[16801,11]]}},"keywords":{}}],["gpus=0",{"_index":3039,"title":{},"content":{"479":{"position":[[697,7]]},"942":{"position":[[697,7]]},"961":{"position":[[158,6]]},"981":{"position":[[735,6]]}},"keywords":{}}],["gpus=1",{"_index":3047,"title":{},"content":{"479":{"position":[[1036,7]]},"942":{"position":[[1036,7]]}},"keywords":{}}],["gpus=2",{"_index":3916,"title":{},"content":{"961":{"position":[[374,6],[710,6]]}},"keywords":{}}],["gpus=4",{"_index":3935,"title":{},"content":{"963":{"position":[[928,6]]},"965":{"position":[[520,6],[10017,6]]}},"keywords":{}}],["gradvar",{"_index":4204,"title":{},"content":{"967":{"position":[[1462,9]]}},"keywords":{}}],["grafana",{"_index":1637,"title":{},"content":{"135":{"position":[[360,8]]},"663":{"position":[[360,8]]}},"keywords":{}}],["grant",{"_index":555,"title":{},"content":{"53":{"position":[[2460,5]]},"319":{"position":[[30,5]]},"481":{"position":[[1740,5]]},"796":{"position":[[30,5]]},"944":{"position":[[1740,5]]}},"keywords":{}}],["graph",{"_index":1464,"title":{},"content":{"112":{"position":[[2022,6]]},"596":{"position":[[2022,6]]},"964":{"position":[[1735,5]]},"966":{"position":[[154,6],[215,6]]}},"keywords":{}}],["graphviz==0.8.4",{"_index":3848,"title":{},"content":{"950":{"position":[[835,15]]}},"keywords":{}}],["great",{"_index":1204,"title":{},"content":{"92":{"position":[[553,6]]},"286":{"position":[[245,5]]},"606":{"position":[[553,6]]}},"keywords":{}}],["greatli",{"_index":1035,"title":{},"content":{"82":{"position":[[617,7]]},"589":{"position":[[617,7]]}},"keywords":{}}],["grep",{"_index":3114,"title":{},"content":{"484":{"position":[[627,4]]},"791":{"position":[[1430,5]]},"947":{"position":[[627,4]]}},"keywords":{}}],["gridengin",{"_index":3403,"title":{},"content":{"791":{"position":[[2059,10],[2456,10],[2899,10],[2917,10],[2935,10],[2951,10],[5519,10],[5622,10],[5820,10],[5923,10],[10766,10],[10805,14],[10859,10],[10933,10],[10972,14],[11028,10],[11232,10],[11269,14],[11323,10],[11395,10],[11434,14],[11490,10],[15214,10],[15321,10],[15474,10],[15619,10],[17901,10],[18298,10],[18741,10],[18759,10],[18777,10],[21343,10],[21446,10],[21644,10],[26484,10],[26523,14],[26577,10],[26651,10],[26690,14],[26746,10],[26950,10],[26987,14],[27041,10],[30763,10],[30870,10],[31023,10]]}},"keywords":{}}],["group",{"_index":1010,"title":{},"content":{"79":{"position":[[2089,6]]},"212":{"position":[[164,6]]},"707":{"position":[[164,6]]}},"keywords":{}}],["grow",{"_index":753,"title":{},"content":{"54":{"position":[[571,7]]}},"keywords":{}}],["grpc://localhost:8000",{"_index":4005,"title":{},"content":{"965":{"position":[[1990,21],[11407,21],[17514,21]]}},"keywords":{}}],["grpcchannelcach",{"_index":4159,"title":{},"content":{"965":{"position":[[17021,16],[17180,16],[17335,16]]}},"keywords":{}}],["gs://<bucket_path>/<dir_path",{"_index":3944,"title":{},"content":{"964":{"position":[[565,32],[1600,32]]}},"keywords":{}}],["gs://<path>/model_dir",{"_index":4098,"title":{},"content":{"965":{"position":[[10401,25]]}},"keywords":{}}],["gs://path/model_dir",{"_index":3957,"title":{},"content":{"965":{"position":[[635,20],[921,23],[10114,20],[16189,20],[16472,23]]}},"keywords":{}}],["gs://path/model_dir/model.ckpt",{"_index":4039,"title":{},"content":{"965":{"position":[[4764,30],[5093,31],[8979,30]]}},"keywords":{}}],["gsutil",{"_index":3923,"title":{},"content":{"963":{"position":[[449,6]]}},"keywords":{}}],["guangxu",{"_index":2187,"title":{},"content":{"260":{"position":[[1212,7],[1382,8],[2681,7]]},"261":{"position":[[136,7]]}},"keywords":{}}],["guard",{"_index":3444,"title":{},"content":{"791":{"position":[[2607,5],[18449,5]]}},"keywords":{}}],["guid",{"_index":497,"title":{"72":{"position":[[0,5]]},"232":{"position":[[12,5]]},"477":{"position":[[23,5]]},"581":{"position":[[0,5]]},"736":{"position":[[12,5]]},"974":{"position":[[25,5]]}},"content":{"53":{"position":[[1106,5]]},"63":{"position":[[253,6]]},"71":{"position":[[254,6]]},"241":{"position":[[55,5]]},"306":{"position":[[178,5]]},"324":{"position":[[810,7],[1081,7]]},"477":{"position":[[13,5]]},"502":{"position":[[1191,5]]},"516":{"position":[[31,5]]},"536":{"position":[[31,5]]},"572":{"position":[[253,6]]},"580":{"position":[[254,6]]},"744":{"position":[[1810,5]]},"757":{"position":[[178,5]]},"774":{"position":[[263,7],[534,7]]}},"keywords":{}}],["guidanc",{"_index":1558,"title":{},"content":{"128":{"position":[[360,8]]},"635":{"position":[[360,8]]}},"keywords":{}}],["guide)checkstyl",{"_index":910,"title":{},"content":{"71":{"position":[[209,16]]},"580":{"position":[[209,16]]}},"keywords":{}}],["guideapach",{"_index":913,"title":{},"content":{"73":{"position":[[107,11]]},"582":{"position":[[107,11]]}},"keywords":{}}],["guidelin",{"_index":608,"title":{},"content":{"53":{"position":[[4391,10]]},"75":{"position":[[54,10],[80,11]]},"79":{"position":[[1785,11]]},"257":{"position":[[313,11],[358,10]]},"584":{"position":[[54,10],[80,11]]}},"keywords":{}}],["gx7f5",{"_index":70,"title":{},"content":{"4":{"position":[[237,5]]},"464":{"position":[[237,5]]}},"keywords":{}}],["gxcheng@apache.org",{"_index":2189,"title":{},"content":{"260":{"position":[[1264,18],[1397,21],[2695,20]]},"261":{"position":[[150,20]]}},"keywords":{}}],["gz",{"_index":3346,"title":{},"content":{"788":{"position":[[138,2]]}},"keywords":{}}],["h",{"_index":152,"title":{},"content":{"9":{"position":[[55,1]]},"12":{"position":[[65,1]]},"15":{"position":[[52,1]]},"18":{"position":[[45,1]]},"20":{"position":[[71,1]]},"22":{"position":[[54,1]]},"23":{"position":[[54,1]]},"26":{"position":[[62,1]]},"33":{"position":[[60,1]]},"38":{"position":[[52,1]]},"43":{"position":[[121,1]]},"44":{"position":[[53,1]]},"46":{"position":[[60,1]]},"49":{"position":[[70,1]]},"351":{"position":[[20,1]]},"359":{"position":[[21,1]]},"366":{"position":[[20,1]]},"369":{"position":[[20,1]]},"377":{"position":[[21,1]]},"389":{"position":[[20,1]]},"410":{"position":[[20,1]]},"415":{"position":[[21,1]]},"421":{"position":[[20,1]]},"538":{"position":[[55,1]]},"541":{"position":[[65,1]]},"544":{"position":[[52,1]]},"547":{"position":[[45,1]]},"549":{"position":[[71,1]]},"551":{"position":[[54,1]]},"552":{"position":[[54,1]]},"555":{"position":[[62,1]]},"560":{"position":[[52,1]]},"825":{"position":[[20,1]]},"833":{"position":[[21,1]]},"840":{"position":[[20,1]]},"843":{"position":[[20,1]]},"851":{"position":[[21,1]]},"863":{"position":[[20,1]]},"868":{"position":[[21,1]]},"874":{"position":[[20,1]]},"878":{"position":[[20,1]]}},"keywords":{}}],["h5pi",{"_index":4231,"title":{},"content":{"969":{"position":[[966,4]]}},"keywords":{}}],["ha",{"_index":1532,"title":{},"content":{"118":{"position":[[815,2],[840,2]]},"625":{"position":[[816,2],[841,2]]}},"keywords":{}}],["hadoop",{"_index":592,"title":{"476":{"position":[[0,6]]}},"content":{"53":{"position":[[3786,6]]},"93":{"position":[[713,6]]},"98":{"position":[[112,6],[261,6],[356,6],[536,6]]},"99":{"position":[[552,6]]},"297":{"position":[[69,7]]},"324":{"position":[[110,6],[672,6],[943,6],[1469,6]]},"335":{"position":[[260,6]]},"476":{"position":[[13,6],[129,6],[312,6]]},"607":{"position":[[713,6]]},"612":{"position":[[112,6],[261,6],[356,6],[536,6]]},"613":{"position":[[552,6]]},"652":{"position":[[1102,6]]},"687":{"position":[[395,6]]},"734":{"position":[[125,6],[207,6],[308,6],[411,6],[512,6]]},"764":{"position":[[69,7]]},"774":{"position":[[125,6],[396,6],[922,6]]},"777":{"position":[[323,6],[1240,6],[1447,6],[1490,6],[1515,6],[1538,6]]},"779":{"position":[[275,7]]},"805":{"position":[[260,6]]},"950":{"position":[[304,6],[1133,6],[1474,6],[1516,6],[1541,6],[1563,6]]},"952":{"position":[[193,7],[271,7]]},"954":{"position":[[310,6],[1712,6],[1872,6],[1914,6],[1939,6],[1961,6]]},"957":{"position":[[197,7]]},"969":{"position":[[310,6],[1349,6],[1509,6],[1551,6],[1576,6],[1598,6]]},"972":{"position":[[160,7],[261,7]]},"978":{"position":[[92,6]]},"980":{"position":[[251,6],[918,6]]},"981":{"position":[[145,6],[1187,6],[1554,6]]},"983":{"position":[[89,6]]},"985":{"position":[[248,6],[778,6]]},"986":{"position":[[145,6],[897,6]]},"988":{"position":[[80,6]]},"990":{"position":[[188,6],[1072,6]]},"991":{"position":[[223,6],[1093,6]]}},"keywords":{}}],["hadoop_common_home=/hadoop",{"_index":4304,"title":{},"content":{"981":{"position":[[988,26]]},"986":{"position":[[698,26]]}},"keywords":{}}],["hadoop_conf_dir=/hadoop",{"_index":4306,"title":{},"content":{"981":{"position":[[1068,23]]},"986":{"position":[[778,23]]}},"keywords":{}}],["hadoop_hdfs_hom",{"_index":4311,"title":{},"content":{"981":{"position":[[1337,16]]}},"keywords":{}}],["hadoop_hdfs_home=/hadoop",{"_index":4305,"title":{},"content":{"981":{"position":[[1029,24]]},"986":{"position":[[739,24]]}},"keywords":{}}],["hadoop_home=/hadoop",{"_index":4302,"title":{},"content":{"981":{"position":[[915,19]]},"986":{"position":[[625,19]]}},"keywords":{}}],["hadoop_v",{"_index":3329,"title":{},"content":{"777":{"position":[[1497,17]]},"950":{"position":[[1523,17]]},"954":{"position":[[1921,17]]},"969":{"position":[[1558,17]]}},"keywords":{}}],["hadoop_version=\"2.9.2",{"_index":3898,"title":{},"content":{"954":{"position":[[1723,22]]},"969":{"position":[[1360,22]]}},"keywords":{}}],["hadoop_version=\"3.1.2",{"_index":3854,"title":{},"content":{"950":{"position":[[1144,22]]}},"keywords":{}}],["hadoop_version=\"3.2.1",{"_index":3323,"title":{},"content":{"777":{"position":[[1251,22]]}},"keywords":{}}],["hadoop_version}.jar",{"_index":4315,"title":{},"content":{"981":{"position":[[1561,21]]}},"keywords":{}}],["hadoop_version}.tar.gz",{"_index":3327,"title":{},"content":{"777":{"position":[[1409,24],[1454,24],[1545,24]]},"950":{"position":[[1254,24],[1437,24],[1481,24],[1570,24]]},"954":{"position":[[1835,24],[1879,24],[1968,24]]},"969":{"position":[[1472,24],[1516,24],[1605,24]]}},"keywords":{}}],["hadoop_version}/hadoop",{"_index":3326,"title":{},"content":{"777":{"position":[[1384,24]]},"950":{"position":[[1229,24],[1412,24]]},"954":{"position":[[1810,24]]},"969":{"position":[[1447,24]]}},"keywords":{}}],["hadoop_yarn_home=/hadoop",{"_index":4303,"title":{},"content":{"981":{"position":[[949,24]]},"986":{"position":[[659,24]]}},"keywords":{}}],["hadoopsubmarine/kaldi",{"_index":3342,"title":{},"content":{"779":{"position":[[444,21]]},"789":{"position":[[71,21]]},"791":{"position":[[1033,21]]}},"keywords":{}}],["hadoopsubmarine/pytorch",{"_index":3906,"title":{},"content":{"958":{"position":[[65,23]]}},"keywords":{}}],["hadoopsubmarine/tf",{"_index":4247,"title":{},"content":{"973":{"position":[[65,18]]},"981":{"position":[[295,18]]}},"keywords":{}}],["half",{"_index":1920,"title":{},"content":{"203":{"position":[[46,4],[221,4]]},"698":{"position":[[46,4],[221,4]]}},"keywords":{}}],["hand",{"_index":2524,"title":{},"content":{"327":{"position":[[87,4]]},"808":{"position":[[87,4]]}},"keywords":{}}],["handl",{"_index":1185,"title":{"158":{"position":[[0,6]]},"175":{"position":[[0,6]]},"658":{"position":[[0,6]]},"682":{"position":[[0,6]]}},"content":{"91":{"position":[[613,7]]},"107":{"position":[[534,7]]},"108":{"position":[[172,7]]},"110":{"position":[[1166,6]]},"116":{"position":[[201,7]]},"117":{"position":[[1266,6]]},"135":{"position":[[323,7]]},"139":{"position":[[2172,6]]},"152":{"position":[[21,7]]},"158":{"position":[[82,7],[617,7],[1074,7],[1118,7],[1553,7],[2137,8],[2244,7],[2399,7],[2465,7],[2783,7],[2825,9]]},"161":{"position":[[607,7]]},"173":{"position":[[69,7]]},"600":{"position":[[201,7]]},"601":{"position":[[1266,6]]},"605":{"position":[[613,7]]},"621":{"position":[[535,7]]},"622":{"position":[[172,7]]},"624":{"position":[[1171,6]]},"639":{"position":[[2185,6]]},"652":{"position":[[21,7]]},"658":{"position":[[82,7],[617,7],[1074,7],[1118,7],[1553,7],[2137,8],[2244,7],[2399,7],[2465,7],[2783,7],[2825,9]]},"663":{"position":[[323,7]]},"668":{"position":[[607,7]]},"680":{"position":[[69,7]]}},"keywords":{}}],["handled/setup",{"_index":1507,"title":{},"content":{"116":{"position":[[333,15]]},"600":{"position":[[333,15]]}},"keywords":{}}],["happ",{"_index":1043,"title":{},"content":{"83":{"position":[[223,8]]},"86":{"position":[[441,7]]},"101":{"position":[[138,8]]},"117":{"position":[[105,7],[352,7]]},"268":{"position":[[353,8]]},"590":{"position":[[223,8]]},"601":{"position":[[105,7],[352,7]]},"615":{"position":[[138,8]]}},"keywords":{}}],["happen”+0",{"_index":654,"title":{},"content":{"53":{"position":[[6414,9]]}},"keywords":{}}],["hard",{"_index":1123,"title":{"92":{"position":[[98,4]]},"606":{"position":[[98,4]]}},"content":{"90":{"position":[[1302,4],[1554,4],[2065,4],[2400,4]]},"92":{"position":[[943,4]]},"114":{"position":[[75,4]]},"134":{"position":[[700,4]]},"598":{"position":[[75,4]]},"604":{"position":[[1302,4],[1554,4],[2065,4],[2400,4]]},"606":{"position":[[943,4]]},"662":{"position":[[700,4]]}},"keywords":{}}],["hardwar",{"_index":1873,"title":{},"content":{"184":{"position":[[324,8]]},"190":{"position":[[305,8]]},"712":{"position":[[324,8]]},"718":{"position":[[310,8]]}},"keywords":{}}],["hash",{"_index":2136,"title":{"253":{"position":[[17,4]]}},"content":{"253":{"position":[[29,4],[300,4]]},"262":{"position":[[172,6]]}},"keywords":{}}],["hassl",{"_index":2404,"title":{},"content":{"303":{"position":[[247,6]]},"771":{"position":[[247,6]]}},"keywords":{}}],["hav",{"_index":2074,"title":{},"content":{"246":{"position":[[117,6]]},"749":{"position":[[117,6]]}},"keywords":{}}],["haven't",{"_index":2411,"title":{},"content":{"306":{"position":[[67,8]]},"757":{"position":[[67,8]]}},"keywords":{}}],["hdf",{"_index":1281,"title":{},"content":{"98":{"position":[[389,5]]},"133":{"position":[[118,5],[228,5],[331,4],[527,5]]},"365":{"position":[[1198,5]]},"612":{"position":[[389,5]]},"661":{"position":[[118,5],[228,5],[331,4],[527,5]]},"777":{"position":[[308,4],[1165,4]]},"839":{"position":[[1198,5]]},"950":{"position":[[289,4],[1010,4]]},"954":{"position":[[295,4],[1637,4]]},"969":{"position":[[295,4],[1274,4]]}},"keywords":{}}],["hdfs/cloud",{"_index":1607,"title":{},"content":{"133":{"position":[[665,10]]},"661":{"position":[[665,10]]}},"keywords":{}}],["hdfs/s3",{"_index":1334,"title":{},"content":{"102":{"position":[[1167,8]]},"157":{"position":[[1159,7]]},"616":{"position":[[1178,8]]},"657":{"position":[[1159,7]]}},"keywords":{}}],["hdfs://${dfs_name_service}/tmp/cifar",{"_index":3027,"title":{},"content":{"479":{"position":[[327,36]]},"942":{"position":[[327,36]]}},"keywords":{}}],["hdfs://${dfs_name_service}/user/hadoop/tf",{"_index":3029,"title":{},"content":{"479":{"position":[[392,41]]},"942":{"position":[[392,41]]}},"keywords":{}}],["hdfs:///user/submarine/data/te.libsvm",{"_index":1347,"title":{},"content":{"102":{"position":[[1575,42]]},"157":{"position":[[507,42]]},"616":{"position":[[1587,42]]},"657":{"position":[[507,42]]}},"keywords":{}}],["hdfs:///user/submarine/data/tr.libsvm",{"_index":1343,"title":{},"content":{"102":{"position":[[1462,42]]},"157":{"position":[[394,42]]},"616":{"position":[[1474,42]]},"657":{"position":[[394,42]]}},"keywords":{}}],["hdfs:///user/submarine/data/va.libsvm",{"_index":1345,"title":{},"content":{"102":{"position":[[1519,42]]},"157":{"position":[[451,42]]},"616":{"position":[[1531,42]]},"657":{"position":[[451,42]]}},"keywords":{}}],["hdfs:///user/submarine/deepfm",{"_index":1349,"title":{},"content":{"102":{"position":[[1668,32]]},"157":{"position":[[600,32]]},"616":{"position":[[1680,32]]},"657":{"position":[[600,32]]}},"keywords":{}}],["hdfs://pi",{"_index":4291,"title":{},"content":{"981":{"position":[[345,9]]}},"keywords":{}}],["hdgdp",{"_index":2616,"title":{},"content":{"340":{"position":[[322,5]]}},"keywords":{}}],["head",{"_index":1254,"title":{},"content":{"94":{"position":[[650,5]]},"608":{"position":[[650,5]]}},"keywords":{}}],["header.wheth",{"_index":2147,"title":{},"content":{"254":{"position":[[258,14]]}},"keywords":{}}],["heartbeat",{"_index":1961,"title":{},"content":{"209":{"position":[[581,9],[613,9]]},"211":{"position":[[191,10],[556,9],[687,9],[767,9],[1261,9]]},"704":{"position":[[581,9],[613,9]]},"706":{"position":[[191,10],[556,9],[687,9],[767,9],[1261,9]]}},"keywords":{}}],["hello",{"_index":2352,"title":{},"content":{"281":{"position":[[1275,5]]}},"keywords":{}}],["helm",{"_index":5,"title":{"228":{"position":[[0,4]]},"308":{"position":[[22,4]]},"780":{"position":[[22,4]]}},"content":{"1":{"position":[[12,5]]},"3":{"position":[[69,4],[92,6]]},"7":{"position":[[2,4]]},"238":{"position":[[126,4]]},"240":{"position":[[284,4],[341,6]]},"309":{"position":[[8,4]]},"310":{"position":[[63,4],[86,6]]},"312":{"position":[[0,4],[33,4],[46,4]]},"313":{"position":[[127,6],[221,4],[323,6],[500,6],[1068,6],[1225,6]]},"314":{"position":[[201,6],[426,6]]},"338":{"position":[[73,5]]},"339":{"position":[[124,4],[148,4],[171,6]]},"461":{"position":[[12,5]]},"463":{"position":[[69,4],[92,6]]},"467":{"position":[[2,4]]},"742":{"position":[[126,4],[526,4],[581,6]]},"744":{"position":[[284,4],[341,6],[518,4],[695,7],[727,6],[775,4],[822,6],[1689,4],[1713,4]]},"781":{"position":[[8,4]]},"782":{"position":[[63,4],[86,6]]},"784":{"position":[[0,4],[33,4],[46,4]]},"785":{"position":[[127,6],[221,4],[323,6],[500,6],[1068,6],[1225,6]]},"786":{"position":[[201,6],[426,6]]},"812":{"position":[[73,5]]},"813":{"position":[[100,4],[128,4],[151,6]]}},"keywords":{}}],["help",{"_index":511,"title":{},"content":{"53":{"position":[[1349,7],[3112,7],[6545,5]]},"54":{"position":[[953,7]]},"56":{"position":[[189,4]]},"83":{"position":[[379,7],[420,7]]},"84":{"position":[[22,6]]},"86":{"position":[[4,4],[144,5]]},"90":{"position":[[2866,4]]},"96":{"position":[[355,4]]},"107":{"position":[[1264,5]]},"110":{"position":[[1093,5]]},"140":{"position":[[149,4]]},"221":{"position":[[44,4]]},"236":{"position":[[22,4]]},"242":{"position":[[232,4]]},"281":{"position":[[134,4]]},"500":{"position":[[472,4]]},"565":{"position":[[189,4]]},"590":{"position":[[379,7],[431,7]]},"591":{"position":[[22,6]]},"593":{"position":[[4,4],[144,5]]},"604":{"position":[[2866,4]]},"610":{"position":[[355,4]]},"621":{"position":[[1267,5]]},"624":{"position":[[1098,5]]},"640":{"position":[[149,4]]},"735":{"position":[[44,4]]},"740":{"position":[[22,4]]},"745":{"position":[[232,4]]},"961":{"position":[[800,4]]}},"keywords":{}}],["help@submarine.apache.org",{"_index":1057,"title":{},"content":{"86":{"position":[[633,26]]}},"keywords":{}}],["her",{"_index":1159,"title":{},"content":{"90":{"position":[[2871,5]]},"147":{"position":[[1143,4]]},"161":{"position":[[840,5]]},"260":{"position":[[705,4],[810,4],[1072,4],[1139,4],[1244,4],[1304,4],[1339,4],[1482,4]]},"265":{"position":[[771,4]]},"278":{"position":[[143,5]]},"281":{"position":[[329,5],[423,5],[670,5],[768,5]]},"316":{"position":[[219,5]]},"342":{"position":[[32,5]]},"345":{"position":[[79,4]]},"604":{"position":[[2871,5]]},"647":{"position":[[1143,4]]},"668":{"position":[[840,5]]},"791":{"position":[[1772,4]]},"793":{"position":[[219,5]]},"816":{"position":[[32,5]]},"819":{"position":[[79,4]]},"963":{"position":[[292,5]]},"964":{"position":[[747,5]]}},"keywords":{}}],["here'",{"_index":1340,"title":{},"content":{"102":{"position":[[1361,6]]},"140":{"position":[[99,6]]},"147":{"position":[[675,6]]},"160":{"position":[[593,6]]},"616":{"position":[[1373,6]]},"640":{"position":[[99,6]]},"647":{"position":[[675,6]]},"667":{"position":[[593,6]]},"777":{"position":[[330,6]]},"950":{"position":[[311,6]]},"954":{"position":[[317,6]]},"964":{"position":[[344,6]]},"969":{"position":[[317,6]]}},"keywords":{}}],["here'r",{"_index":1413,"title":{},"content":{"107":{"position":[[563,7]]},"118":{"position":[[153,7]]},"621":{"position":[[564,7]]},"625":{"position":[[153,7]]}},"keywords":{}}],["hi",{"_index":2332,"title":{},"content":{"281":{"position":[[103,2]]},"286":{"position":[[228,2]]}},"keywords":{}}],["hid",{"_index":1478,"title":{},"content":{"114":{"position":[[196,4]]},"117":{"position":[[141,4]]},"177":{"position":[[373,4]]},"598":{"position":[[196,4]]},"601":{"position":[[141,4]]},"684":{"position":[[373,4]]}},"keywords":{}}],["high",{"_index":1135,"title":{"195":{"position":[[24,4]]},"690":{"position":[[24,4]]}},"content":{"90":{"position":[[1876,4]]},"197":{"position":[[431,4],[453,4],[623,4],[690,4]]},"211":{"position":[[945,4]]},"604":{"position":[[1876,4]]},"692":{"position":[[431,4],[453,4],[623,4],[690,4]]},"706":{"position":[[945,4]]},"907":{"position":[[38,4]]}},"keywords":{}}],["highlight",{"_index":2337,"title":{},"content":{"281":{"position":[[243,11]]},"286":{"position":[[366,11]]}},"keywords":{}}],["hint,g",{"_index":2174,"title":{},"content":{"260":{"position":[[287,13]]}},"keywords":{}}],["histor",{"_index":4348,"title":{},"content":{"992":{"position":[[0,13]]}},"keywords":{}}],["histori",{"_index":866,"title":{"98":{"position":[[13,7]]},"612":{"position":[[13,7]]}},"content":{"64":{"position":[[228,7]]},"101":{"position":[[179,7]]},"148":{"position":[[392,7],[503,7]]},"573":{"position":[[228,7]]},"615":{"position":[[179,7]]},"648":{"position":[[392,7],[503,7]]}},"keywords":{}}],["hit",{"_index":970,"title":{},"content":{"77":{"position":[[501,4]]},"586":{"position":[[501,4]]}},"keywords":{}}],["hiv",{"_index":1243,"title":{},"content":{"94":{"position":[[363,5]]},"108":{"position":[[221,4]]},"608":{"position":[[363,5]]},"622":{"position":[[221,4]]},"939":{"position":[[403,4],[520,4]]}},"keywords":{}}],["hkbnhiu_udlch_rvahv9gqaft",{"_index":1019,"title":{},"content":{"81":{"position":[[154,27]]}},"keywords":{}}],["hoc",{"_index":1704,"title":{},"content":{"147":{"position":[[7,3]]},"152":{"position":[[76,3]]},"647":{"position":[[7,3]]},"652":{"position":[[76,3]]}},"keywords":{}}],["hold",{"_index":465,"title":{},"content":{"53":{"position":[[280,5],[4874,6]]}},"keywords":{}}],["hom",{"_index":1556,"title":{"500":{"position":[[0,4]]},"520":{"position":[[0,4]]}},"content":{"127":{"position":[[275,4]]},"136":{"position":[[224,4]]},"491":{"position":[[262,4]]},"499":{"position":[[35,4]]},"500":{"position":[[27,4]]},"519":{"position":[[64,5]]},"520":{"position":[[24,4]]},"634":{"position":[[275,4]]},"664":{"position":[[224,4]]}},"keywords":{}}],["homepag",{"_index":3209,"title":{},"content":{"498":{"position":[[119,9],[136,9]]}},"keywords":{}}],["homeswitch",{"_index":2919,"title":{},"content":{"436":{"position":[[258,10]]},"920":{"position":[[258,10]]}},"keywords":{}}],["honor",{"_index":2363,"title":{},"content":{"286":{"position":[[251,5]]}},"keywords":{}}],["hook",{"_index":1103,"title":{},"content":{"90":{"position":[[714,4]]},"604":{"position":[[714,4]]},"967":{"position":[[332,7]]}},"keywords":{}}],["hooks=hook",{"_index":4190,"title":{},"content":{"967":{"position":[[951,12]]}},"keywords":{}}],["hooks=self._eval_hook",{"_index":4187,"title":{},"content":{"967":{"position":[[800,23]]}},"keywords":{}}],["host",{"_index":2433,"title":{},"content":{"313":{"position":[[551,4],[556,5]]},"495":{"position":[[113,4],[455,4]]},"785":{"position":[[551,4],[556,5]]},"964":{"position":[[43,5],[117,5],[142,5],[300,5],[1776,4]]},"965":{"position":[[54,4]]}},"keywords":{}}],["host.to",{"_index":2430,"title":{},"content":{"313":{"position":[[408,7]]},"785":{"position":[[408,7]]}},"keywords":{}}],["host_nam",{"_index":3393,"title":{},"content":{"791":{"position":[[1419,10]]}},"keywords":{}}],["hostnam",{"_index":2981,"title":{},"content":{"445":{"position":[[140,11]]}},"keywords":{}}],["hostname=localhost,port=32080",{"_index":2979,"title":{},"content":{"444":{"position":[[102,31]]}},"keywords":{}}],["hostpath",{"_index":2423,"title":{},"content":{"313":{"position":[[64,8],[231,9],[244,9],[369,8]]},"495":{"position":[[484,9]]},"785":{"position":[[64,8],[231,9],[244,9],[369,8]]}},"keywords":{}}],["hostport",{"_index":2458,"title":{},"content":{"314":{"position":[[844,9]]},"495":{"position":[[578,9],[689,9]]},"786":{"position":[[844,9]]}},"keywords":{}}],["hour",{"_index":893,"title":{},"content":{"69":{"position":[[454,6]]},"79":{"position":[[420,6],[791,6]]},"284":{"position":[[380,5]]},"286":{"position":[[107,5]]},"578":{"position":[[454,6]]}},"keywords":{}}],["howtoreleas",{"_index":573,"title":{},"content":{"53":{"position":[[3294,13]]}},"keywords":{}}],["howtorun",{"_index":3139,"title":{"486":{"position":[[0,8]]}},"content":{},"keywords":{}}],["html",{"_index":2067,"title":{},"content":{"242":{"position":[[253,4]]},"745":{"position":[[253,4]]}},"keywords":{}}],["http",{"_index":1826,"title":{},"content":{"161":{"position":[[615,4]]},"289":{"position":[[542,6]]},"668":{"position":[[615,4]]},"752":{"position":[[542,6]]}},"keywords":{}}],["http://0.0.0.0:32080",{"_index":2630,"title":{},"content":{"341":{"position":[[367,21]]},"815":{"position":[[126,20]]}},"keywords":{}}],["http://127.0.0.1:32080",{"_index":135,"title":{},"content":{"6":{"position":[[80,22]]},"314":{"position":[[1021,22]]},"466":{"position":[[80,22]]},"744":{"position":[[1515,22]]},"786":{"position":[[1021,22]]}},"keywords":{}}],["http://127.0.0.1:32080/api/v1/environ",{"_index":174,"title":{},"content":{"9":{"position":[[504,41]]},"10":{"position":[[53,41]]},"351":{"position":[[469,41]]},"353":{"position":[[18,41]]},"538":{"position":[[504,41]]},"539":{"position":[[53,41]]},"825":{"position":[[469,41]]},"827":{"position":[[18,41]]}},"keywords":{}}],["http://127.0.0.1:32080/api/v1/environment/mi",{"_index":187,"title":{},"content":{"11":{"position":[[60,44]]},"12":{"position":[[383,44]]},"13":{"position":[[63,44]]},"356":{"position":[[18,44]]},"359":{"position":[[339,44]]},"362":{"position":[[21,44]]},"540":{"position":[[60,44]]},"541":{"position":[[383,44]]},"542":{"position":[[63,44]]},"830":{"position":[[18,44]]},"833":{"position":[[339,44]]},"836":{"position":[[21,44]]}},"keywords":{}}],["http://127.0.0.1:32080/api/v1/experi",{"_index":249,"title":{},"content":{"22":{"position":[[545,40]]},"23":{"position":[[516,40]]},"24":{"position":[[52,40]]},"366":{"position":[[511,40]]},"369":{"position":[[482,40]]},"371":{"position":[[18,40]]},"551":{"position":[[545,40]]},"552":{"position":[[516,40]]},"553":{"position":[[52,40]]},"840":{"position":[[511,40]]},"843":{"position":[[482,40]]},"845":{"position":[[18,40]]}},"keywords":{}}],["http://127.0.0.1:32080/api/v1/experiment/experiment_1592057447228_0001",{"_index":283,"title":{},"content":{"25":{"position":[[57,70]]},"26":{"position":[[553,70]]},"27":{"position":[[60,70]]},"554":{"position":[[57,70]]},"555":{"position":[[553,70]]},"556":{"position":[[60,70]]}},"keywords":{}}],["http://127.0.0.1:32080/api/v1/experiment/experiment_1626160071451_0005",{"_index":2795,"title":{},"content":{"374":{"position":[[18,70]]},"377":{"position":[[512,70]]},"380":{"position":[[21,70]]},"848":{"position":[[18,70]]},"851":{"position":[[512,70]]},"854":{"position":[[21,70]]}},"keywords":{}}],["http://127.0.0.1:32080/api/v1/experiment/log",{"_index":286,"title":{},"content":{"28":{"position":[[57,45]]},"382":{"position":[[18,45]]},"557":{"position":[[57,45]]},"856":{"position":[[18,45]]}},"keywords":{}}],["http://127.0.0.1:32080/api/v1/experiment/logs/experiment_1589199154923_0002",{"_index":296,"title":{},"content":{"29":{"position":[[62,75]]},"558":{"position":[[62,75]]}},"keywords":{}}],["http://127.0.0.1:32080/api/v1/experiment/logs/experiment_1626160071451_0001",{"_index":2800,"title":{},"content":{"385":{"position":[[18,75]]},"859":{"position":[[18,75]]}},"keywords":{}}],["http://127.0.0.1:32080/api/v1/experiment/mi",{"_index":241,"title":{},"content":{"20":{"position":[[230,43]]},"421":{"position":[[179,43]]},"549":{"position":[[230,43]]},"874":{"position":[[179,43]]}},"keywords":{}}],["http://127.0.0.1:32080/api/v1/model",{"_index":344,"title":{},"content":{"31":{"position":[[62,35]]},"32":{"position":[[72,35]]},"33":{"position":[[228,35]]},"34":{"position":[[77,35]]},"35":{"position":[[100,35]]},"36":{"position":[[104,35]]}},"keywords":{}}],["http://127.0.0.1:32080/api/v1/notebook",{"_index":385,"title":{},"content":{"38":{"position":[[324,38]]},"389":{"position":[[292,38]]},"560":{"position":[[324,38]]},"878":{"position":[[292,38]]}},"keywords":{}}],["http://127.0.0.1:32080/api/v1/notebook/notebook_1626160071451_0001",{"_index":2818,"title":{},"content":{"395":{"position":[[18,66]]},"398":{"position":[[21,66]]},"884":{"position":[[18,66]]},"887":{"position":[[21,66]]}},"keywords":{}}],["http://127.0.0.1:32080/api/v1/notebook/{id",{"_index":417,"title":{},"content":{"40":{"position":[[55,43]]},"41":{"position":[[61,43]]},"562":{"position":[[55,43]]},"563":{"position":[[61,43]]}},"keywords":{}}],["http://127.0.0.1:32080/api/v1/notebook?id=e9ca23d68d884d4ebb19d07889727da",{"_index":2815,"title":{},"content":{"392":{"position":[[18,74]]},"881":{"position":[[18,74]]}},"keywords":{}}],["http://127.0.0.1:32080/api/v1/notebook?id={user_id",{"_index":413,"title":{},"content":{"39":{"position":[[50,51]]},"561":{"position":[[50,51]]}},"keywords":{}}],["http://127.0.0.1:32080/api/v1/regist",{"_index":444,"title":{},"content":{"46":{"position":[[191,40]]},"47":{"position":[[58,40]]},"48":{"position":[[65,40]]},"49":{"position":[[168,40]]},"50":{"position":[[70,40]]},"51":{"position":[[85,40]]},"52":{"position":[[89,40]]}},"keywords":{}}],["http://127.0.0.1:32080/api/v1/serv",{"_index":437,"title":{},"content":{"43":{"position":[[208,35]]},"44":{"position":[[140,35]]}},"keywords":{}}],["http://127.0.0.1:32080/api/v1/templ",{"_index":232,"title":{},"content":{"15":{"position":[[1051,38]]},"16":{"position":[[50,38]]},"410":{"position":[[1019,38]]},"412":{"position":[[18,38]]},"544":{"position":[[1051,38]]},"545":{"position":[[50,38]]},"863":{"position":[[1019,38]]},"865":{"position":[[18,38]]}},"keywords":{}}],["http://127.0.0.1:32080/api/v1/template/mi",{"_index":234,"title":{},"content":{"17":{"position":[[57,41]]},"18":{"position":[[1048,41]]},"19":{"position":[[60,41]]},"415":{"position":[[1024,41]]},"418":{"position":[[21,41]]},"546":{"position":[[57,41]]},"547":{"position":[[1048,41]]},"548":{"position":[[60,41]]},"868":{"position":[[1024,41]]},"871":{"position":[[21,41]]}},"keywords":{}}],["http://127.0.0.1:8080",{"_index":3151,"title":{},"content":{"488":{"position":[[493,22]]}},"keywords":{}}],["http://192.168.49.2:32080",{"_index":134,"title":{},"content":{"6":{"position":[[51,25]]},"341":{"position":[[313,26]]},"466":{"position":[[51,25]]},"744":{"position":[[1445,25]]}},"keywords":{}}],["http://archive.ubuntu.com/ubuntu",{"_index":3466,"title":{},"content":{"791":{"position":[[3489,32],[3582,32],[3671,32],[3774,32],[3873,32],[3970,32],[4082,32],[4188,32],[4314,32],[4441,32],[4557,32],[4673,32],[4775,32],[4859,32],[4951,32],[5066,32],[5163,32],[5251,32],[5358,32],[5464,32],[5567,32],[5673,32],[5765,32],[5868,32],[5974,32],[6080,32],[6201,32],[6316,32],[6419,32],[6515,32],[6608,32],[6728,32],[6842,32],[19313,32],[19406,32],[19495,32],[19598,32],[19697,32],[19794,32],[19906,32],[20012,32],[20138,32],[20265,32],[20381,32],[20497,32],[20599,32],[20683,32],[20775,32],[20890,32],[20987,32],[21075,32],[21182,32],[21288,32],[21391,32],[21497,32],[21589,32],[21692,32],[21798,32],[21919,32],[22034,32],[22137,32],[22233,32],[22326,32],[22446,32],[22560,32]]}},"keywords":{}}],["http://home.apache.org/~pingsutw/submarin",{"_index":2343,"title":{},"content":{"281":{"position":[[562,42]]}},"keywords":{}}],["http://keys.gnupg.net",{"_index":2227,"title":{},"content":{"262":{"position":[[196,22]]}},"keywords":{}}],["http://localhost:32080",{"_index":2051,"title":{},"content":{"239":{"position":[[105,22]]},"743":{"position":[[89,22]]}},"keywords":{}}],["http://localhost:32080.op",{"_index":2057,"title":{},"content":{"239":{"position":[[346,27]]},"743":{"position":[[330,27]]}},"keywords":{}}],["http://localhost:4200",{"_index":2055,"title":{},"content":{"239":{"position":[[302,21],[374,21]]},"743":{"position":[[286,21],[358,21]]}},"keywords":{}}],["http://localhost:8001/api/v1/namespaces/kubernet",{"_index":2481,"title":{},"content":{"321":{"position":[[44,50]]},"798":{"position":[[44,50]]}},"keywords":{}}],["http://localhost:8080/v1/openapi.json",{"_index":2951,"title":{},"content":{"439":{"position":[[716,37]]}},"keywords":{}}],["http://localhost:8888",{"_index":3205,"title":{},"content":{"496":{"position":[[354,21]]}},"keywords":{}}],["http://localhost:8888/lab",{"_index":3207,"title":{},"content":{"496":{"position":[[655,25]]}},"keywords":{}}],["http://maven.apache.org/xsd/set",{"_index":2258,"title":{},"content":{"265":{"position":[[224,36]]}},"keywords":{}}],["http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop",{"_index":3857,"title":{},"content":{"950":{"position":[[1357,54]]},"954":{"position":[[1755,54]]},"969":{"position":[[1392,54]]}},"keywords":{}}],["http://pi",{"_index":4283,"title":{},"content":{"980":{"position":[[1147,9],[1348,9],[1545,9],[1704,9],[1851,9],[1998,9],[2179,9],[2381,9],[2583,9]]},"985":{"position":[[1007,9],[1208,9],[1405,9],[1564,9],[1711,9],[1858,9],[2039,9],[2241,9],[2443,9]]},"990":{"position":[[1302,9],[1504,9],[1706,9],[1908,9],[2113,9],[2279,9],[2426,9],[2573,9],[2720,9],[2867,9],[3056,9],[3260,9],[3464,9],[3668,9],[3872,9]]}},"keywords":{}}],["http://rang",{"_index":3805,"title":{},"content":{"939":{"position":[[281,13]]}},"keywords":{}}],["http://repository.apache.org",{"_index":2322,"title":{},"content":{"279":{"position":[[48,28]]},"284":{"position":[[51,28]]}},"keywords":{}}],["http://stable.ascii",{"_index":1439,"title":{},"content":{"110":{"position":[[997,19]]},"624":{"position":[[1002,19]]}},"keywords":{}}],["http://storage.googleapis.com/tensorflow/linux/cpu/tensorflow",{"_index":4232,"title":{},"content":{"969":{"position":[[1112,61]]}},"keywords":{}}],["http://submarine.apache.org/download.html",{"_index":2591,"title":{},"content":{"333":{"position":[[45,41]]},"803":{"position":[[45,41]]}},"keywords":{}}],["http://www.openslr.org/resources/18/data_thchs30.tgz",{"_index":3349,"title":{},"content":{"788":{"position":[[254,52]]}},"keywords":{}}],["http://www.openslr.org/resources/18/resource.tgz",{"_index":3352,"title":{},"content":{"788":{"position":[[368,48]]}},"keywords":{}}],["http://www.openslr.org/resources/18/t",{"_index":3350,"title":{},"content":{"788":{"position":[[312,40]]}},"keywords":{}}],["http://yann.lecun.com/exdb/mnist/t10k",{"_index":304,"title":{},"content":{"29":{"position":[[566,37],[638,37],[1743,37],[1815,37]]},"558":{"position":[[566,37],[638,37],[1743,37],[1815,37]]}},"keywords":{}}],["http://yann.lecun.com/exdb/mnist/train",{"_index":299,"title":{},"content":{"29":{"position":[[420,38],[493,38],[1597,38],[1670,38]]},"558":{"position":[[420,38],[493,38],[1597,38],[1670,38]]}},"keywords":{}}],["http://{minikub",{"_index":132,"title":{},"content":{"6":{"position":[[5,16]]},"341":{"position":[[272,16]]},"466":{"position":[[5,16]]},"744":{"position":[[1413,16]]}},"keywords":{}}],["https://archive.apache.org/dist/hadoop/common/hadoop",{"_index":3325,"title":{},"content":{"777":{"position":[[1331,52]]},"950":{"position":[[1176,52]]}},"keywords":{}}],["https://bootstrap.pypa.io/get",{"_index":4227,"title":{},"content":{"969":{"position":[[845,29]]}},"keywords":{}}],["https://cloudera.zoom.us/j/880548968",{"_index":1025,"title":{},"content":{"81":{"position":[[311,36]]},"588":{"position":[[196,36]]}},"keywords":{}}],["https://dist.apache.org/repos/dist/dev/submarin",{"_index":2229,"title":{},"content":{"263":{"position":[[67,48],[299,48]]},"276":{"position":[[72,48]]},"277":{"position":[[177,48]]}},"keywords":{}}],["https://dist.apache.org/repos/dist/dev/submarine/${release_v",{"_index":2076,"title":{},"content":{"249":{"position":[[7,67]]}},"keywords":{}}],["https://dist.apache.org/repos/dist/dev/submarine/key",{"_index":2086,"title":{},"content":{"252":{"position":[[27,53]]}},"keywords":{}}],["https://dist.apache.org/repos/dist/release/submarin",{"_index":2230,"title":{},"content":{"263":{"position":[[157,52],[1155,52]]}},"keywords":{}}],["https://dist.apache.org/repos/dist/release/submarine/key",{"_index":2345,"title":{},"content":{"281":{"position":[[774,57]]}},"keywords":{}}],["https://docs.google.com/document/d/16puo3tp4sxseldug817ghvajtiph9hyprho_jgdudvw/edit",{"_index":1026,"title":{},"content":{"81":{"position":[[357,84]]},"588":{"position":[[242,84]]}},"keywords":{}}],["https://files.pythonhosted.org/packages/33/bc/fa0b5347139cd9564f0d44ebd2b147ac97c36b2403943dbee8a25fd74012/virtualenv",{"_index":2582,"title":{},"content":{"330":{"position":[[238,117]]},"800":{"position":[[238,117]]},"979":{"position":[[119,117]]},"984":{"position":[[116,117]]},"989":{"position":[[114,117]]}},"keywords":{}}],["https://foo.com/train",{"_index":1620,"title":{},"content":{"134":{"position":[[1505,25]]},"140":{"position":[[1286,25]]},"640":{"position":[[1286,25]]},"662":{"position":[[1505,25]]}},"keywords":{}}],["https://gitbox.apache.org/repos/asf/submarine.git",{"_index":956,"title":{},"content":{"76":{"position":[[77,49]]},"585":{"position":[[77,49]]}},"keywords":{}}],["https://github.com/${username}/submarine.git",{"_index":825,"title":{},"content":{"60":{"position":[[111,44]]},"569":{"position":[[111,44]]}},"keywords":{}}],["https://github.com/${username}/submarine.gitclick",{"_index":875,"title":{},"content":{"67":{"position":[[19,49]]},"576":{"position":[[19,49]]}},"keywords":{}}],["https://github.com/${username}/submarine/actionspleas",{"_index":870,"title":{},"content":{"66":{"position":[[6,54]]},"575":{"position":[[6,54]]}},"keywords":{}}],["https://github.com/apache/submarin",{"_index":2069,"title":{},"content":{"242":{"position":[[296,35]]},"745":{"position":[[296,35]]}},"keywords":{}}],["https://github.com/apache/submarine.git",{"_index":28,"title":{},"content":{"3":{"position":[[12,39]]},"60":{"position":[[274,39]]},"310":{"position":[[10,39]]},"333":{"position":[[131,39]]},"339":{"position":[[28,39]]},"463":{"position":[[12,39]]},"569":{"position":[[274,39]]},"782":{"position":[[10,39]]},"788":{"position":[[434,40],[485,39]]},"803":{"position":[[131,39]]},"813":{"position":[[30,39]]}},"keywords":{}}],["https://github.com/apache/submarine/actionspleas",{"_index":882,"title":{},"content":{"68":{"position":[[6,49]]},"577":{"position":[[6,49]]}},"keywords":{}}],["https://github.com/apache/submarine/releases/tag/releas",{"_index":2342,"title":{},"content":{"281":{"position":[[429,56]]}},"keywords":{}}],["https://github.com/apache/submarineclick",{"_index":819,"title":{},"content":{"59":{"position":[[6,40]]},"568":{"position":[[6,40]]}},"keywords":{}}],["https://github.com/kaldi",{"_index":3315,"title":{},"content":{"777":{"position":[[843,24]]}},"keywords":{}}],["https://github.com/kubeflow/tf",{"_index":2634,"title":{},"content":{"343":{"position":[[178,30]]},"817":{"position":[[178,30]]}},"keywords":{}}],["https://github.com/kubernet",{"_index":2462,"title":{},"content":{"316":{"position":[[326,29]]},"793":{"position":[[326,29]]}},"keywords":{}}],["https://github.com/kubernetes/git",{"_index":1632,"title":{},"content":{"134":{"position":[[2307,33]]},"662":{"position":[[2307,33]]}},"keywords":{}}],["https://github.com/linkedin/tony/tree/master/toni",{"_index":4256,"title":{},"content":{"980":{"position":[[30,49]]},"985":{"position":[[30,49]]}},"keywords":{}}],["https://github.com/pytorch/pytorch.git",{"_index":3886,"title":{},"content":{"954":{"position":[[1214,38]]}},"keywords":{}}],["https://github.com/pytorch/vision.git",{"_index":3896,"title":{},"content":{"954":{"position":[[1500,37]]}},"keywords":{}}],["https://github.com/settings/email",{"_index":2251,"title":{},"content":{"264":{"position":[[195,37]]}},"keywords":{}}],["https://github.com/settings/key",{"_index":2246,"title":{},"content":{"264":{"position":[[6,32]]}},"keywords":{}}],["https://helm.sh/docs/intro/instal",{"_index":2416,"title":{},"content":{"309":{"position":[[17,35]]},"781":{"position":[[17,35]]}},"keywords":{}}],["https://issues.apache.org/jira/browse/submarin",{"_index":969,"title":{},"content":{"77":{"position":[[453,47]]},"586":{"position":[[453,47]]}},"keywords":{}}],["https://issues.apache.org/jira/projects/submarine/issues/submarine?filter=allopenissu",{"_index":1028,"title":{},"content":{"82":{"position":[[52,87]]},"589":{"position":[[52,87]]}},"keywords":{}}],["https://join.slack.com/t/th",{"_index":1016,"title":{},"content":{"81":{"position":[[95,28]]}},"keywords":{}}],["https://jupyt",{"_index":1572,"title":{},"content":{"130":{"position":[[305,15]]},"637":{"position":[[305,15]]}},"keywords":{}}],["https://medium.com/@krishnaregmi/pipenv",{"_index":1494,"title":{},"content":{"115":{"position":[[224,39]]},"599":{"position":[[224,39]]}},"keywords":{}}],["https://pypi.org/project/apach",{"_index":2589,"title":{},"content":{"332":{"position":[[110,31]]},"802":{"position":[[110,31]]}},"keywords":{}}],["https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0",{"_index":2472,"title":{},"content":{"318":{"position":[[69,61]]},"795":{"position":[[69,61]]}},"keywords":{}}],["https://repo.continuum.io/miniconda/miniconda3",{"_index":3870,"title":{},"content":{"954":{"position":[[684,46]]}},"keywords":{}}],["https://repository.apache.org/content/repositories/orgapachesubmarin",{"_index":2328,"title":{},"content":{"279":{"position":[[467,69]]},"281":{"position":[[676,69]]}},"keywords":{}}],["https://sk",{"_index":2222,"title":{},"content":{"261":{"position":[[385,11]]}},"keywords":{}}],["https://submarine.apache.org/docs/next/releases/submarin",{"_index":2366,"title":{},"content":{"286":{"position":[[532,57]]}},"keywords":{}}],["https://the",{"_index":3252,"title":{},"content":{"588":{"position":[[95,11],[148,11]]}},"keywords":{}}],["https://upload.pypi.org/legaci",{"_index":2976,"title":{},"content":{"441":{"position":[[531,31]]},"925":{"position":[[531,31]]}},"keywords":{}}],["https://wiki.apache.org/general/boardvot",{"_index":626,"title":{},"content":{"53":{"position":[[5355,43]]}},"keywords":{}}],["https://www.selenium.dev/selenium/docs/api/java/org/openqa/selenium/webdriver.html#get(java.lang.str",{"_index":2372,"title":{},"content":{"289":{"position":[[557,105]]},"752":{"position":[[557,105]]}},"keywords":{}}],["httpsclient",{"_index":3456,"title":{},"content":{"791":{"position":[[2777,11],[18619,11]]}},"keywords":{}}],["hub",{"_index":3341,"title":{},"content":{"779":{"position":[[439,4]]}},"keywords":{}}],["hug",{"_index":755,"title":{},"content":{"54":{"position":[[754,4]]},"133":{"position":[[306,5],[521,5]]},"661":{"position":[[306,5],[521,5]]}},"keywords":{}}],["hugo",{"_index":925,"title":{},"content":{"73":{"position":[[442,5]]},"582":{"position":[[442,5]]}},"keywords":{}}],["hybrid",{"_index":1398,"title":{},"content":{"106":{"position":[[480,6]]},"620":{"position":[[480,6]]}},"keywords":{}}],["hyp",{"_index":1175,"title":{},"content":{"91":{"position":[[337,5]]},"102":{"position":[[883,5],[2021,5]]},"605":{"position":[[337,5]]},"616":{"position":[[888,5],[2033,5]]}},"keywords":{}}],["i'v",{"_index":2336,"title":{},"content":{"281":{"position":[[156,4]]}},"keywords":{}}],["i.asc",{"_index":2121,"title":{},"content":{"252":{"position":[[1929,6]]},"271":{"position":[[146,6]]},"272":{"position":[[106,6]]}},"keywords":{}}],["i.sha512",{"_index":2306,"title":{},"content":{"271":{"position":[[58,9]]}},"keywords":{}}],["iam",{"_index":1411,"title":{},"content":{"107":{"position":[[476,3]]},"621":{"position":[[477,3]]}},"keywords":{}}],["icon",{"_index":3220,"title":{},"content":{"502":{"position":[[359,5]]}},"keywords":{}}],["id",{"_index":905,"title":{"236":{"position":[[25,3]]},"740":{"position":[[25,3]]}},"content":{"71":{"position":[[110,3]]},"90":{"position":[[878,5]]},"200":{"position":[[353,3]]},"236":{"position":[[66,4]]},"260":{"position":[[1176,2],[1378,3]]},"261":{"position":[[237,2],[290,3]]},"373":{"position":[[56,3]]},"376":{"position":[[56,3]]},"379":{"position":[[56,3]]},"384":{"position":[[56,3]]},"388":{"position":[[357,3]]},"391":{"position":[[51,3]]},"394":{"position":[[54,3]]},"397":{"position":[[54,3]]},"425":{"position":[[32,3],[57,3]]},"426":{"position":[[38,3],[53,3],[78,3]]},"428":{"position":[[44,3],[69,3]]},"429":{"position":[[99,3]]},"431":{"position":[[61,3]]},"450":{"position":[[33,3],[63,2]]},"451":{"position":[[36,3]]},"454":{"position":[[37,3],[69,2]]},"455":{"position":[[40,3]]},"484":{"position":[[570,4],[632,3]]},"580":{"position":[[110,3]]},"604":{"position":[[878,5]]},"695":{"position":[[353,3]]},"740":{"position":[[66,4]]},"791":{"position":[[2401,2],[3293,2],[6904,2],[12974,3],[13062,2],[17355,2],[18243,2],[19117,2],[22622,2],[28523,3],[28611,2],[32209,2]]},"847":{"position":[[56,3]]},"850":{"position":[[56,3]]},"853":{"position":[[56,3]]},"858":{"position":[[56,3]]},"877":{"position":[[357,3]]},"880":{"position":[[51,3]]},"883":{"position":[[54,3]]},"886":{"position":[[54,3]]},"899":{"position":[[32,3],[57,3]]},"900":{"position":[[38,3],[53,3],[78,3]]},"902":{"position":[[44,3],[69,3]]},"903":{"position":[[99,3]]},"905":{"position":[[61,3]]},"909":{"position":[[201,2],[283,2]]},"947":{"position":[[570,4],[632,3]]},"965":{"position":[[7666,3],[7845,3],[8024,3],[8203,3],[8382,3],[8561,3],[8740,3],[8919,3]]}},"keywords":{}}],["id\":1",{"_index":2843,"title":{},"content":{"410":{"position":[[1169,7]]},"412":{"position":[[171,7]]},"863":{"position":[[1169,7]]},"865":{"position":[[171,7]]}},"keywords":{}}],["id\":2",{"_index":2872,"title":{},"content":{"415":{"position":[[1195,7]]},"418":{"position":[[191,7]]},"868":{"position":[[1195,7]]},"871":{"position":[[191,7]]}},"keywords":{}}],["id.onlymast",{"_index":2894,"title":{},"content":{"429":{"position":[[124,14]]},"903":{"position":[[124,14]]}},"keywords":{}}],["id.polling_interv",{"_index":2903,"title":{},"content":{"431":{"position":[[86,20]]},"905":{"position":[[86,20]]}},"keywords":{}}],["id=$1",{"_index":3110,"title":{},"content":{"484":{"position":[[585,5]]},"947":{"position":[[585,5]]}},"keywords":{}}],["id>apach",{"_index":2268,"title":{},"content":{"265":{"position":[[675,10]]}},"keywords":{}}],["id>apache.releases.https</id",{"_index":2267,"title":{},"content":{"265":{"position":[[538,30]]}},"keywords":{}}],["id>apache.snapshots.https</id",{"_index":2262,"title":{},"content":{"265":{"position":[[423,31]]}},"keywords":{}}],["id_5.5",{"_index":3651,"title":{},"content":{"791":{"position":[[13013,6],[28562,6]]}},"keywords":{}}],["idea",{"_index":1029,"title":{},"content":{"82":{"position":[[365,4]]},"260":{"position":[[1543,4],[1799,4]]},"589":{"position":[[365,4]]}},"keywords":{}}],["ideal",{"_index":927,"title":{},"content":{"74":{"position":[[98,7]]},"116":{"position":[[110,7]]},"583":{"position":[[98,7]]},"600":{"position":[[110,7]]}},"keywords":{}}],["ident",{"_index":1838,"title":{},"content":{"173":{"position":[[134,8]]},"211":{"position":[[291,8]]},"680":{"position":[[134,8]]},"706":{"position":[[291,8]]}},"keywords":{}}],["identifi",{"_index":2186,"title":{},"content":{"260":{"position":[[1182,8]]},"502":{"position":[[331,10]]}},"keywords":{}}],["idx1",{"_index":303,"title":{},"content":{"29":{"position":[[539,4],[683,4],[1716,4],[1860,4]]},"558":{"position":[[539,4],[683,4],[1716,4],[1860,4]]}},"keywords":{}}],["idx3",{"_index":300,"title":{},"content":{"29":{"position":[[466,4],[611,4],[1643,4],[1788,4]]},"558":{"position":[[466,4],[611,4],[1643,4],[1788,4]]}},"keywords":{}}],["id}</usernam",{"_index":2264,"title":{},"content":{"265":{"position":[[471,14],[585,14]]}},"keywords":{}}],["ifupdown",{"_index":3404,"title":{},"content":{"791":{"position":[[2077,8],[2969,8],[4141,8],[8587,9],[8670,8],[13549,8],[17919,8],[18793,8],[19965,8],[24305,9],[24388,8],[29098,8]]}},"keywords":{}}],["ifupdown_0.8.10ubuntu1.4_amd64.deb",{"_index":3609,"title":{},"content":{"791":{"position":[[8617,38],[24335,38]]}},"keywords":{}}],["ignor",{"_index":3123,"title":{},"content":{"484":{"position":[[820,6]]},"791":{"position":[[15680,9]]},"947":{"position":[[820,6]]}},"keywords":{}}],["illustr",{"_index":1812,"title":{},"content":{"160":{"position":[[613,10]]},"667":{"position":[[613,10]]}},"keywords":{}}],["imag",{"_index":228,"title":{"114":{"position":[[3,5],[20,5]]},"219":{"position":[[35,6]]},"598":{"position":[[3,5],[20,5]]},"733":{"position":[[35,6]]},"776":{"position":[[16,6]]},"777":{"position":[[21,6]]},"778":{"position":[[44,6]]},"779":{"position":[[13,6]]},"789":{"position":[[15,6]]},"949":{"position":[[7,6]]},"950":{"position":[[21,6]]},"951":{"position":[[44,6]]},"952":{"position":[[22,6]]},"953":{"position":[[7,6]]},"954":{"position":[[21,6]]},"955":{"position":[[46,6]]},"956":{"position":[[13,6]]},"957":{"position":[[22,6]]},"958":{"position":[[13,6]]},"968":{"position":[[7,6]]},"969":{"position":[[21,6]]},"970":{"position":[[49,6]]},"971":{"position":[[13,6]]},"972":{"position":[[22,6]]},"973":{"position":[[13,6]]},"976":{"position":[[22,5]]}},"content":{"15":{"position":[[987,8]]},"18":{"position":[[984,8]]},"22":{"position":[[347,8],[1105,8]]},"24":{"position":[[614,8],[1194,8]]},"25":{"position":[[647,8]]},"26":{"position":[[355,8],[958,8]]},"27":{"position":[[650,8]]},"29":{"position":[[459,6],[604,6],[1636,6],[1781,6]]},"41":{"position":[[881,8]]},"103":{"position":[[115,5],[179,5],[214,7]]},"110":{"position":[[1585,7]]},"112":{"position":[[115,5],[183,5],[217,7],[240,6],[264,5],[346,5],[875,5],[890,6]]},"113":{"position":[[133,6],[154,6],[263,5],[379,5],[457,5]]},"114":{"position":[[7,5],[20,5],[159,7],[208,5],[366,7]]},"115":{"position":[[879,6],[900,6],[1265,6]]},"116":{"position":[[137,5]]},"128":{"position":[[393,6]]},"132":{"position":[[658,6],[2098,8]]},"133":{"position":[[731,6]]},"134":{"position":[[371,6],[450,5],[616,5],[688,5],[807,6],[1944,6],[2049,6]]},"140":{"position":[[1515,6]]},"148":{"position":[[637,5]]},"160":{"position":[[331,5],[366,6],[1431,6]]},"178":{"position":[[209,6]]},"179":{"position":[[340,5],[367,5]]},"181":{"position":[[497,5],[536,5]]},"219":{"position":[[34,5],[123,7],[154,5],[220,6],[387,6],[471,6]]},"238":{"position":[[259,5],[321,5],[590,5]]},"240":{"position":[[17,5],[67,5]]},"281":{"position":[[320,5]]},"303":{"position":[[36,5]]},"305":{"position":[[352,6]]},"310":{"position":[[273,6]]},"316":{"position":[[639,5]]},"324":{"position":[[233,7]]},"342":{"position":[[116,6]]},"343":{"position":[[557,5],[592,5],[612,6]]},"344":{"position":[[15,5]]},"350":{"position":[[137,5]]},"358":{"position":[[105,5]]},"365":{"position":[[1046,5],[1059,5]]},"366":{"position":[[313,8]]},"377":{"position":[[314,8]]},"405":{"position":[[294,8]]},"409":{"position":[[1259,5],[1272,5]]},"410":{"position":[[955,8]]},"415":{"position":[[960,8]]},"424":{"position":[[532,8]]},"425":{"position":[[539,8]]},"495":{"position":[[776,5]]},"544":{"position":[[987,8]]},"547":{"position":[[984,8]]},"551":{"position":[[347,8],[1105,8]]},"553":{"position":[[614,8],[1194,8]]},"554":{"position":[[647,8]]},"555":{"position":[[355,8],[958,8]]},"556":{"position":[[650,8]]},"558":{"position":[[459,6],[604,6],[1636,6],[1781,6]]},"563":{"position":[[881,8]]},"596":{"position":[[115,5],[183,5],[217,7],[240,6],[264,5],[346,5],[875,5],[890,6]]},"597":{"position":[[133,6],[154,6],[263,5],[379,5],[457,5]]},"598":{"position":[[7,5],[20,5],[159,7],[208,5],[366,7]]},"599":{"position":[[879,6],[900,6],[1265,6]]},"600":{"position":[[137,5]]},"617":{"position":[[115,5],[179,5],[214,7]]},"624":{"position":[[1590,7]]},"635":{"position":[[393,6]]},"640":{"position":[[1515,6]]},"648":{"position":[[637,5]]},"660":{"position":[[658,6],[2098,8]]},"661":{"position":[[731,6]]},"662":{"position":[[371,6],[450,5],[616,5],[688,5],[807,6],[1944,6],[2049,6]]},"667":{"position":[[331,5],[366,6],[1433,6]]},"685":{"position":[[209,6]]},"686":{"position":[[340,5],[367,5]]},"688":{"position":[[497,5],[536,5]]},"733":{"position":[[34,5],[123,7],[154,5],[220,6],[387,6],[471,6]]},"742":{"position":[[259,5],[321,5],[703,6]]},"744":{"position":[[17,5],[67,5]]},"756":{"position":[[352,6]]},"771":{"position":[[36,5]]},"777":{"position":[[96,6],[358,5],[1120,6]]},"778":{"position":[[61,7]]},"779":{"position":[[22,7],[170,7],[202,7],[254,5],[353,7],[402,6]]},"782":{"position":[[273,6]]},"789":{"position":[[44,5]]},"791":{"position":[[1633,5]]},"793":{"position":[[639,5]]},"816":{"position":[[116,6]]},"817":{"position":[[575,5],[610,5],[630,6]]},"818":{"position":[[15,5]]},"824":{"position":[[137,5]]},"832":{"position":[[105,5]]},"839":{"position":[[1046,5],[1059,5]]},"840":{"position":[[313,8]]},"851":{"position":[[314,8]]},"862":{"position":[[1259,5],[1272,5]]},"863":{"position":[[955,8]]},"868":{"position":[[960,8]]},"894":{"position":[[294,8]]},"898":{"position":[[532,8]]},"899":{"position":[[539,8]]},"950":{"position":[[98,6],[339,5],[965,6]]},"951":{"position":[[76,7],[325,7]]},"952":{"position":[[67,7],[120,7],[172,5],[250,5]]},"954":{"position":[[102,6],[345,5],[1592,6]]},"955":{"position":[[78,7]]},"957":{"position":[[69,7],[122,7],[176,5]]},"958":{"position":[[41,6]]},"966":{"position":[[252,6]]},"969":{"position":[[106,6],[345,5],[1229,6]]},"970":{"position":[[66,7]]},"972":{"position":[[58,7],[90,7],[139,5],[240,5]]},"973":{"position":[[41,6]]},"976":{"position":[[71,5],[142,5]]},"981":{"position":[[1293,6],[1368,6]]},"991":{"position":[[71,6]]}},"keywords":{}}],["image\":\"apache/submarine:tf",{"_index":2763,"title":{},"content":{"366":{"position":[[1223,28]]},"371":{"position":[[815,28]]},"377":{"position":[[1254,28]]},"380":{"position":[[735,28]]},"410":{"position":[[2612,28]]},"412":{"position":[[1614,28]]},"415":{"position":[[2642,28]]},"418":{"position":[[1638,28]]},"421":{"position":[[913,28]]},"840":{"position":[[1223,28]]},"845":{"position":[[815,28]]},"851":{"position":[[1254,28]]},"854":{"position":[[735,28]]},"863":{"position":[[2612,28]]},"865":{"position":[[1614,28]]},"868":{"position":[[2642,28]]},"871":{"position":[[1638,28]]},"874":{"position":[[913,28]]}},"keywords":{}}],["image\":nul",{"_index":408,"title":{},"content":{"38":{"position":[[1087,12]]},"39":{"position":[[829,12]]},"40":{"position":[[820,12]]},"351":{"position":[[1150,12]]},"353":{"position":[[455,12],[1028,12],[1347,12]]},"356":{"position":[[716,12]]},"359":{"position":[[855,12]]},"362":{"position":[[719,12]]},"366":{"position":[[1368,13],[1538,13]]},"369":{"position":[[1357,12],[1460,13],[1630,13]]},"371":{"position":[[960,13],[1130,13],[1838,12],[1941,13],[2111,13]]},"374":{"position":[[774,12],[877,13],[1047,13]]},"377":{"position":[[1399,13],[1569,13]]},"380":{"position":[[880,13],[1050,13]]},"389":{"position":[[1075,12]]},"392":{"position":[[822,12]]},"395":{"position":[[810,12]]},"398":{"position":[[840,12]]},"410":{"position":[[2757,13],[2930,13]]},"412":{"position":[[1759,13],[1932,13]]},"415":{"position":[[2787,13],[2957,13]]},"418":{"position":[[1783,13],[1953,13]]},"421":{"position":[[1058,13],[1228,13]]},"560":{"position":[[1087,12]]},"561":{"position":[[829,12]]},"562":{"position":[[820,12]]},"825":{"position":[[1150,12]]},"827":{"position":[[455,12],[1028,12],[1347,12]]},"830":{"position":[[716,12]]},"833":{"position":[[855,12]]},"836":{"position":[[719,12]]},"840":{"position":[[1368,13],[1538,13]]},"843":{"position":[[1357,12],[1460,13],[1630,13]]},"845":{"position":[[960,13],[1130,13],[1838,12],[1941,13],[2111,13]]},"848":{"position":[[774,12],[877,13],[1047,13]]},"851":{"position":[[1399,13],[1569,13]]},"854":{"position":[[880,13],[1050,13]]},"863":{"position":[[2757,13],[2930,13]]},"865":{"position":[[1759,13],[1932,13]]},"868":{"position":[[2787,13],[2957,13]]},"871":{"position":[[1783,13],[1953,13]]},"874":{"position":[[1058,13],[1228,13]]},"878":{"position":[[1075,12]]},"881":{"position":[[822,12]]},"884":{"position":[[810,12]]},"887":{"position":[[840,12]]}},"keywords":{}}],["image.cpu",{"_index":2531,"title":{},"content":{"327":{"position":[[541,9]]},"808":{"position":[[541,9]]}},"keywords":{}}],["image.embed",{"_index":2732,"title":{},"content":{"365":{"position":[[704,14]]},"839":{"position":[[704,14]]}},"keywords":{}}],["image.nam",{"_index":1473,"title":{},"content":{"113":{"position":[[473,10]]},"597":{"position":[[473,10]]}},"keywords":{}}],["image_classification.pi",{"_index":4324,"title":{},"content":{"990":{"position":[[4,23],[443,23],[626,23],[831,23]]},"991":{"position":[[513,23],[698,23],[870,23]]}},"keywords":{}}],["images.imag",{"_index":1822,"title":{},"content":{"160":{"position":[[1541,12]]},"667":{"position":[[1543,12]]}},"keywords":{}}],["images.support",{"_index":1338,"title":{},"content":{"102":{"position":[[1282,14]]},"616":{"position":[[1294,14]]}},"keywords":{}}],["images/database/build.sh",{"_index":1997,"title":{},"content":{"219":{"position":[[499,24]]},"240":{"position":[[162,24]]},"733":{"position":[[499,24]]},"744":{"position":[[162,24]]}},"keywords":{}}],["images/submarine/build.sh",{"_index":1996,"title":{},"content":{"219":{"position":[[415,25]]},"238":{"position":[[416,25]]},"733":{"position":[[415,25]]},"742":{"position":[[416,25]]}},"keywords":{}}],["images:mini",{"_index":2508,"title":{},"content":{"324":{"position":[[788,11],[1059,11]]},"774":{"position":[[241,11],[512,11]]}},"keywords":{}}],["impact",{"_index":798,"title":{},"content":{"54":{"position":[[2334,6]]}},"keywords":{}}],["implement",{"_index":1445,"title":{"111":{"position":[[13,14]]},"115":{"position":[[7,14]]},"117":{"position":[[7,9]]},"118":{"position":[[0,14]]},"119":{"position":[[9,14]]},"131":{"position":[[8,14]]},"133":{"position":[[0,14]]},"138":{"position":[[11,14]]},"159":{"position":[[17,14]]},"174":{"position":[[9,14]]},"182":{"position":[[0,10]]},"595":{"position":[[13,14]]},"599":{"position":[[7,14]]},"601":{"position":[[7,9]]},"625":{"position":[[0,14]]},"626":{"position":[[9,14]]},"638":{"position":[[11,14]]},"659":{"position":[[8,14]]},"661":{"position":[[0,14]]},"666":{"position":[[17,14]]},"681":{"position":[[9,14]]},"689":{"position":[[0,10]]}},"content":{"112":{"position":[[2302,15]]},"116":{"position":[[465,16],[506,15]]},"117":{"position":[[64,15],[766,14]]},"118":{"position":[[31,16],[185,16],[627,14]]},"121":{"position":[[450,14]]},"127":{"position":[[142,15],[340,15]]},"128":{"position":[[112,15],[177,9]]},"130":{"position":[[25,14]]},"139":{"position":[[26,14]]},"142":{"position":[[131,15]]},"145":{"position":[[32,15]]},"146":{"position":[[689,15]]},"152":{"position":[[809,11],[978,10]]},"155":{"position":[[244,14]]},"202":{"position":[[3,9]]},"596":{"position":[[2302,15]]},"600":{"position":[[465,16],[506,15]]},"601":{"position":[[64,15],[766,14]]},"625":{"position":[[31,16],[185,16],[628,14]]},"628":{"position":[[450,14]]},"634":{"position":[[142,15],[340,15]]},"635":{"position":[[112,15],[177,9]]},"637":{"position":[[25,14]]},"639":{"position":[[26,14]]},"642":{"position":[[131,15]]},"645":{"position":[[32,15]]},"646":{"position":[[689,15]]},"652":{"position":[[815,11],[1258,10]]},"655":{"position":[[251,14]]},"697":{"position":[[3,9]]}},"keywords":{}}],["implementation.md",{"_index":1688,"title":{},"content":{"141":{"position":[[28,17]]},"641":{"position":[[28,17]]}},"keywords":{}}],["implicit",{"_index":2385,"title":{},"content":{"291":{"position":[[99,8],[141,8]]},"754":{"position":[[99,8],[141,8]]}},"keywords":{}}],["import",{"_index":492,"title":{},"content":{"53":{"position":[[981,9]]},"90":{"position":[[2574,9]]},"252":{"position":[[0,6],[110,6],[124,6]]},"323":{"position":[[165,6]]},"328":{"position":[[157,6],[179,6],[242,6],[310,6],[382,6],[453,6],[514,6]]},"343":{"position":[[314,6],[349,6],[395,6],[417,6]]},"401":{"position":[[53,6],[73,6],[87,6]]},"424":{"position":[[217,6]]},"437":{"position":[[29,7]]},"439":{"position":[[872,6],[1047,6]]},"604":{"position":[[2574,9]]},"773":{"position":[[165,6]]},"791":{"position":[[2394,6],[3286,6],[6897,6],[12967,6],[13006,6],[13055,6],[17348,6],[18236,6],[19110,6],[22615,6],[28516,6],[28555,6],[28604,6],[32202,6]]},"809":{"position":[[157,6],[179,6],[246,6],[318,6],[394,6],[469,6],[534,6]]},"817":{"position":[[314,6],[349,6],[395,6],[432,6]]},"890":{"position":[[53,6],[73,6],[87,6]]},"898":{"position":[[217,6]]},"908":{"position":[[323,6]]},"910":{"position":[[115,6]]},"911":{"position":[[128,6]]},"912":{"position":[[185,6]]},"913":{"position":[[256,6]]},"921":{"position":[[29,7]]}},"keywords":{}}],["improv",{"_index":757,"title":{},"content":{"54":{"position":[[773,11],[1118,12]]},"67":{"position":[[203,7]]},"75":{"position":[[237,7]]},"211":{"position":[[1091,7]]},"576":{"position":[[203,7]]},"584":{"position":[[237,7]]},"706":{"position":[[1091,7]]}},"keywords":{}}],["inc",{"_index":2092,"title":{},"content":{"252":{"position":[[330,4]]},"260":{"position":[[396,4]]}},"keywords":{}}],["inclu",{"_index":4246,"title":{},"content":{"972":{"position":[[354,7]]}},"keywords":{}}],["includ",{"_index":468,"title":{},"content":{"53":{"position":[[353,9],[3091,7],[3982,7],[4162,9],[6950,7],[8883,8]]},"69":{"position":[[522,10]]},"79":{"position":[[457,9]]},"102":{"position":[[607,8],[754,9]]},"103":{"position":[[588,8]]},"106":{"position":[[336,7]]},"107":{"position":[[90,8],[1402,7]]},"110":{"position":[[1474,8]]},"112":{"position":[[1277,8]]},"113":{"position":[[442,8]]},"114":{"position":[[476,7]]},"115":{"position":[[788,9]]},"117":{"position":[[381,7],[437,8]]},"128":{"position":[[287,7]]},"134":{"position":[[471,7]]},"135":{"position":[[63,10]]},"140":{"position":[[183,8]]},"142":{"position":[[175,8]]},"160":{"position":[[1214,8]]},"175":{"position":[[17,8]]},"186":{"position":[[1009,9]]},"250":{"position":[[38,8]]},"251":{"position":[[34,7],[114,8],[158,8],[219,8]]},"267":{"position":[[141,9]]},"268":{"position":[[78,10]]},"300":{"position":[[0,7]]},"313":{"position":[[54,9]]},"328":{"position":[[31,8]]},"365":{"position":[[822,10]]},"420":{"position":[[186,9]]},"429":{"position":[[150,7]]},"439":{"position":[[759,8]]},"502":{"position":[[1085,8],[1491,8],[3629,8]]},"578":{"position":[[522,10]]},"596":{"position":[[1277,8]]},"597":{"position":[[442,8]]},"598":{"position":[[476,7]]},"599":{"position":[[788,9]]},"601":{"position":[[381,7],[437,8]]},"616":{"position":[[612,8],[759,9]]},"617":{"position":[[588,8]]},"620":{"position":[[336,7]]},"621":{"position":[[90,8],[1405,7]]},"624":{"position":[[1479,8]]},"635":{"position":[[287,7]]},"640":{"position":[[183,8]]},"642":{"position":[[175,8]]},"662":{"position":[[471,7]]},"663":{"position":[[63,10]]},"667":{"position":[[1215,8]]},"682":{"position":[[17,8]]},"714":{"position":[[1009,9]]},"768":{"position":[[0,7]]},"779":{"position":[[266,8],[316,8]]},"785":{"position":[[54,9]]},"809":{"position":[[31,8]]},"839":{"position":[[822,10]]},"873":{"position":[[186,9]]},"903":{"position":[[150,7]]},"952":{"position":[[184,8],[262,8]]},"954":{"position":[[938,7]]},"957":{"position":[[188,8],[264,8]]},"970":{"position":[[339,8]]},"972":{"position":[[151,8],[252,8],[306,8]]}},"keywords":{}}],["incognito",{"_index":3142,"title":{},"content":{"487":{"position":[[137,9]]}},"keywords":{}}],["incompat",{"_index":3794,"title":{},"content":{"934":{"position":[[335,12]]}},"keywords":{}}],["incontribut",{"_index":945,"title":{},"content":{"75":{"position":[[65,14]]},"584":{"position":[[65,14]]}},"keywords":{}}],["increas",{"_index":759,"title":{},"content":{"54":{"position":[[1004,8]]},"186":{"position":[[708,10]]},"714":{"position":[[708,10]]}},"keywords":{}}],["increment",{"_index":1900,"title":{},"content":{"197":{"position":[[583,11]]},"692":{"position":[[583,11]]}},"keywords":{}}],["incub",{"_index":480,"title":{},"content":{"53":{"position":[[660,9]]}},"keywords":{}}],["indep",{"_index":1291,"title":{"202":{"position":[[0,12]]},"697":{"position":[[0,12]]}},"content":{"99":{"position":[[452,11],[510,12]]},"186":{"position":[[853,11]]},"613":{"position":[[452,11],[510,12]]},"714":{"position":[[853,11]]}},"keywords":{}}],["index",{"_index":3942,"title":{},"content":{"964":{"position":[[539,8],[1289,5],[1574,8]]},"980":{"position":[[1133,6],[1334,6],[1531,6],[2165,6],[2367,6],[2569,6]]},"985":{"position":[[993,6],[1194,6],[1391,6],[2025,6],[2227,6],[2429,6]]},"990":{"position":[[1287,6],[1489,6],[1691,6],[1893,6],[2098,6],[3041,6],[3245,6],[3449,6],[3653,6],[3857,6]]}},"keywords":{}}],["indic",{"_index":640,"title":{},"content":{"53":{"position":[[6052,9],[6349,9],[6434,9],[6563,9]]},"54":{"position":[[144,8]]},"69":{"position":[[71,8],[214,10]]},"211":{"position":[[806,9]]},"578":{"position":[[71,8],[214,10]]},"706":{"position":[[806,9]]},"791":{"position":[[1562,9]]}},"keywords":{}}],["individu",{"_index":487,"title":{"76":{"position":[[7,10]]},"585":{"position":[[7,10]]}},"content":{"53":{"position":[[875,10]]},"201":{"position":[[389,10]]},"502":{"position":[[1590,12]]},"696":{"position":[[389,10]]},"791":{"position":[[1800,10]]}},"keywords":{}}],["industri",{"_index":1085,"title":{},"content":{"90":{"position":[[327,8],[556,10],[2167,8],[2556,8],[2708,8]]},"604":{"position":[[327,8],[556,10],[2167,8],[2556,8],[2708,8]]}},"keywords":{}}],["inet_interfac",{"_index":3677,"title":{},"content":{"791":{"position":[[14529,16],[30078,16]]}},"keywords":{}}],["inet_protocol",{"_index":3678,"title":{},"content":{"791":{"position":[[14558,15],[30107,15]]}},"keywords":{}}],["influenc",{"_index":760,"title":{},"content":{"54":{"position":[[1018,10]]}},"keywords":{}}],["info",{"_index":1760,"title":{},"content":{"153":{"position":[[81,4],[322,4]]},"161":{"position":[[797,4]]},"162":{"position":[[981,5]]},"179":{"position":[[31,4]]},"180":{"position":[[17,4]]},"181":{"position":[[22,5]]},"182":{"position":[[9,4]]},"424":{"position":[[157,4]]},"425":{"position":[[184,4]]},"426":{"position":[[30,4],[103,4]]},"428":{"position":[[94,4]]},"429":{"position":[[243,4]]},"481":{"position":[[1634,4]]},"653":{"position":[[81,4],[322,4]]},"668":{"position":[[797,4]]},"669":{"position":[[1234,5]]},"686":{"position":[[31,4]]},"687":{"position":[[17,4]]},"688":{"position":[[22,5]]},"689":{"position":[[9,4]]},"898":{"position":[[157,4]]},"899":{"position":[[184,4]]},"900":{"position":[[30,4],[103,4]]},"902":{"position":[[94,4]]},"903":{"position":[[243,4]]},"944":{"position":[[1634,4]]},"980":{"position":[[1065,4],[1266,4],[1467,4],[1664,4],[1807,4],[1954,4],[2101,4],[2299,4],[2501,4]]},"985":{"position":[[925,4],[1126,4],[1327,4],[1524,4],[1667,4],[1814,4],[1961,4],[2159,4],[2361,4]]},"990":{"position":[[1219,4],[1421,4],[1623,4],[1825,4],[2027,4],[2232,4],[2382,4],[2529,4],[2676,4],[2823,4],[2970,4],[3177,4],[3381,4],[3585,4],[3789,4]]}},"keywords":{}}],["info:tensorflow:averag",{"_index":4108,"title":{},"content":{"965":{"position":[[14646,23],[14713,23],[14780,23],[14846,23],[14913,23],[14980,23],[15047,23],[15234,23],[15301,23],[15368,23],[15436,23],[15503,23],[15571,23],[15639,23],[15707,23],[15775,23],[15843,23]]}},"keywords":{}}],["info:tensorflow:cr",{"_index":4036,"title":{},"content":{"965":{"position":[[4678,22],[14095,22]]}},"keywords":{}}],["info:tensorflow:evalu",{"_index":4076,"title":{},"content":{"965":{"position":[[9016,26],[9051,26],[9086,26],[9121,26],[9156,26],[9191,26],[9226,26],[9261,26],[9296,26],[9331,26],[9367,26],[9403,26],[9439,26],[9479,26]]}},"keywords":{}}],["info:tensorflow:finish",{"_index":4091,"title":{},"content":{"965":{"position":[[9516,24]]}},"keywords":{}}],["info:tensorflow:imag",{"_index":4006,"title":{},"content":{"965":{"position":[[2012,21],[2096,21],[2182,21],[2268,21],[2354,21],[2440,21],[2526,21],[2612,21],[2707,21],[2793,21],[2881,21],[2969,21],[3057,21],[3145,21],[3231,21],[3319,21],[3407,21],[3495,21],[3583,21],[3671,21],[3759,21],[3852,21],[3936,21],[4022,21],[4108,21],[4194,21],[4280,21],[4366,21],[4452,21],[4526,21],[5218,21],[5302,21],[5388,21],[5474,21],[5560,21],[5646,21],[5732,21],[5818,21],[5913,21],[5999,21],[6087,21],[6175,21],[6263,21],[6351,21],[6439,21],[6527,21],[6620,21],[6704,21],[6790,21],[6876,21],[6962,21],[7048,21],[7134,21],[7220,21],[7294,21],[11429,21],[11513,21],[11599,21],[11685,21],[11771,21],[11857,21],[11943,21],[12029,21],[12124,21],[12210,21],[12298,21],[12386,21],[12474,21],[12562,21],[12648,21],[12736,21],[12824,21],[12912,21],[13000,21],[13088,21],[13176,21],[13269,21],[13353,21],[13439,21],[13525,21],[13611,21],[13697,21],[13783,21],[13869,21],[13943,21]]}},"keywords":{}}],["info:tensorflow:loss",{"_index":4044,"title":{},"content":{"965":{"position":[[5125,20],[5166,20],[14553,20],[14594,20],[15114,20],[15169,20],[15911,20]]}},"keywords":{}}],["info:tensorflow:restor",{"_index":4038,"title":{},"content":{"965":{"position":[[4722,25],[8937,25]]}},"keywords":{}}],["info:tensorflow:sav",{"_index":4043,"title":{},"content":{"965":{"position":[[5047,22],[9575,22]]}},"keywords":{}}],["info:tensorflow:start",{"_index":4048,"title":{},"content":{"965":{"position":[[7446,24]]}},"keywords":{}}],["info:tensorflow:syncreplicasv2",{"_index":4033,"title":{},"content":{"965":{"position":[[4600,31],[7368,31],[14017,31]]}},"keywords":{}}],["info:tensorflow:us",{"_index":3956,"title":{},"content":{"965":{"position":[[589,21],[656,21],[10068,21],[10135,21],[16143,21],[16210,21]]}},"keywords":{}}],["inform",{"_index":482,"title":{},"content":{"53":{"position":[[687,11]]},"54":{"position":[[1813,12]]},"129":{"position":[[45,12]]},"132":{"position":[[1728,12],[1872,11]]},"135":{"position":[[301,11]]},"200":{"position":[[15,11],[100,11],[247,11],[325,11]]},"208":{"position":[[251,11],[526,12]]},"209":{"position":[[25,11]]},"211":{"position":[[777,11]]},"260":{"position":[[2376,12]]},"424":{"position":[[91,11]]},"425":{"position":[[119,11]]},"484":{"position":[[442,11]]},"500":{"position":[[421,11]]},"502":{"position":[[975,11],[1351,11]]},"522":{"position":[[642,11]]},"636":{"position":[[45,12]]},"660":{"position":[[1728,12],[1872,11]]},"663":{"position":[[301,11]]},"695":{"position":[[15,11],[100,11],[247,11],[325,11]]},"703":{"position":[[251,11],[526,12]]},"704":{"position":[[25,11]]},"706":{"position":[[777,11]]},"791":{"position":[[1976,14],[17553,14],[17818,14],[32407,14]]},"898":{"position":[[91,11]]},"899":{"position":[[119,11]]},"947":{"position":[[442,11]]}},"keywords":{}}],["infrastructur",{"_index":1082,"title":{},"content":{"90":{"position":[[187,14]]},"93":{"position":[[731,15]]},"135":{"position":[[435,16]]},"177":{"position":[[407,14]]},"604":{"position":[[187,14]]},"607":{"position":[[731,15]]},"663":{"position":[[435,16]]},"684":{"position":[[407,14]]}},"keywords":{}}],["ingress",{"_index":2449,"title":{},"content":{"314":{"position":[[356,7],[916,7]]},"786":{"position":[[356,7],[916,7]]}},"keywords":{}}],["inherit",{"_index":1766,"title":{},"content":{"153":{"position":[[371,7]]},"653":{"position":[[371,7]]}},"keywords":{}}],["inhttps://github.com/apache/submarin",{"_index":919,"title":{},"content":{"73":{"position":[[262,37]]},"582":{"position":[[262,37]]}},"keywords":{}}],["init",{"_index":2977,"title":{"444":{"position":[[0,4]]}},"content":{"444":{"position":[[17,4]]},"481":{"position":[[1718,6]]},"944":{"position":[[1718,6]]},"954":{"position":[[1296,4]]}},"keywords":{}}],["initcontain",{"_index":1623,"title":{},"content":{"134":{"position":[[1655,13],[2012,15],[2275,13],[2424,13]]},"662":{"position":[[1655,13],[2012,15],[2275,13],[2424,13]]}},"keywords":{}}],["initi",{"_index":557,"title":{},"content":{"53":{"position":[[2536,10]]},"69":{"position":[[318,8]]},"79":{"position":[[149,8],[618,9],[637,8],[1041,9],[1269,9],[1700,9],[1841,9]]},"98":{"position":[[0,10],[227,10]]},"121":{"position":[[524,12]]},"444":{"position":[[55,11]]},"502":{"position":[[2884,7],[2938,10],[3115,10],[3369,10],[3556,10]]},"522":{"position":[[1327,7]]},"578":{"position":[[318,8]]},"612":{"position":[[0,10],[227,10]]},"628":{"position":[[524,12]]},"791":{"position":[[15690,12],[15849,7],[15880,12],[15931,12],[16018,12],[16079,12]]},"908":{"position":[[0,10]]},"965":{"position":[[17010,10],[17169,10],[17324,10]]}},"keywords":{}}],["inject",{"_index":2534,"title":{},"content":{"327":{"position":[[595,7]]},"808":{"position":[[595,7]]}},"keywords":{}}],["input",{"_index":1323,"title":{},"content":{"102":{"position":[[868,6],[1437,8]]},"106":{"position":[[371,5]]},"139":{"position":[[456,6],[1188,5]]},"147":{"position":[[1404,6]]},"157":{"position":[[369,8]]},"158":{"position":[[1135,5]]},"474":{"position":[[289,5]]},"616":{"position":[[873,6],[1449,8]]},"620":{"position":[[371,5]]},"639":{"position":[[456,6],[1193,5]]},"647":{"position":[[1404,6]]},"657":{"position":[[369,8]]},"658":{"position":[[1135,5]]}},"keywords":{}}],["input.train_data",{"_index":1787,"title":{},"content":{"157":{"position":[[1053,16]]},"657":{"position":[[1053,16]]}},"keywords":{}}],["input=\"s3://bucket/input",{"_index":1709,"title":{},"content":{"147":{"position":[[439,24],[946,24]]},"647":{"position":[[439,24],[946,24]]}},"keywords":{}}],["input=s3://bucket/input",{"_index":1673,"title":{},"content":{"140":{"position":[[394,23],[1389,23]]},"640":{"position":[[394,23],[1389,23]]}},"keywords":{}}],["input_dim",{"_index":3003,"title":{"474":{"position":[[100,10]]}},"content":{},"keywords":{}}],["input_path",{"_index":3026,"title":{},"content":{"479":{"position":[[316,10]]},"791":{"position":[[977,10]]},"942":{"position":[[316,10]]},"980":{"position":[[400,10]]},"981":{"position":[[334,10]]},"986":{"position":[[324,10]]},"990":{"position":[[321,10]]},"991":{"position":[[393,10]]}},"keywords":{}}],["input_shape=(28",{"_index":2659,"title":{},"content":{"343":{"position":[[883,16]]},"817":{"position":[[901,16]]}},"keywords":{}}],["insecur",{"_index":4273,"title":{},"content":{"980":{"position":[[775,8]]},"985":{"position":[[632,8]]},"990":{"position":[[923,8]]},"991":{"position":[[974,8]]}},"keywords":{}}],["insid",{"_index":1107,"title":{"149":{"position":[[27,6]]},"649":{"position":[[27,6]]}},"content":{"90":{"position":[[770,6]]},"114":{"position":[[214,6]]},"116":{"position":[[153,6]]},"125":{"position":[[638,6]]},"158":{"position":[[1013,6],[2493,6]]},"160":{"position":[[1297,6]]},"161":{"position":[[253,6]]},"328":{"position":[[1515,6]]},"598":{"position":[[214,6]]},"600":{"position":[[153,6]]},"604":{"position":[[770,6]]},"632":{"position":[[638,6]]},"658":{"position":[[1013,6],[2493,6]]},"667":{"position":[[1298,6]]},"668":{"position":[[253,6]]},"809":{"position":[[1535,6]]},"981":{"position":[[1279,6],[1354,6]]}},"keywords":{}}],["inspect",{"_index":2834,"title":{},"content":{"404":{"position":[[177,7]]},"406":{"position":[[78,7]]},"893":{"position":[[177,7]]},"895":{"position":[[78,7]]}},"keywords":{}}],["instal",{"_index":25,"title":{"3":{"position":[[0,7]]},"4":{"position":[[7,12]]},"244":{"position":[[0,12]]},"259":{"position":[[4,7]]},"311":{"position":[[7,12]]},"331":{"position":[[0,7]]},"332":{"position":[[0,7]]},"333":{"position":[[0,7]]},"337":{"position":[[0,12]]},"463":{"position":[[0,7]]},"464":{"position":[[7,12]]},"747":{"position":[[0,12]]},"783":{"position":[[7,12]]},"801":{"position":[[0,7]]},"802":{"position":[[0,7]]},"803":{"position":[[0,7]]},"811":{"position":[[0,12]]},"938":{"position":[[0,12]]}},"content":{"3":{"position":[[74,7]]},"4":{"position":[[16,10],[519,13],[623,8],[904,9]]},"93":{"position":[[868,7]]},"103":{"position":[[339,8]]},"112":{"position":[[462,8]]},"117":{"position":[[536,10],[598,10]]},"129":{"position":[[288,7],[518,9]]},"236":{"position":[[71,7]]},"238":{"position":[[102,9],[206,7]]},"239":{"position":[[144,7],[210,7]]},"244":{"position":[[35,7],[81,7]]},"259":{"position":[[9,12],[117,7]]},"270":{"position":[[321,7]]},"281":{"position":[[962,7]]},"289":{"position":[[1320,7]]},"303":{"position":[[257,10],[316,10],[337,9],[384,12],[445,10],[470,7]]},"306":{"position":[[275,7],[404,7]]},"309":{"position":[[0,7]]},"310":{"position":[[68,7],[217,12]]},"313":{"position":[[926,7],[980,7],[1018,7]]},"314":{"position":[[1064,10]]},"324":{"position":[[515,7]]},"327":{"position":[[747,7]]},"330":{"position":[[417,7]]},"332":{"position":[[155,7],[189,7],[216,7],[245,7]]},"333":{"position":[[305,7]]},"334":{"position":[[16,9],[171,10]]},"339":{"position":[[73,7],[153,7]]},"435":{"position":[[64,10],[217,7],[273,7],[341,7],[380,7],[496,7],[574,8],[621,7]]},"439":{"position":[[1169,7]]},"440":{"position":[[189,7]]},"441":{"position":[[177,7]]},"463":{"position":[[74,7]]},"464":{"position":[[16,10],[519,13],[623,8],[904,9]]},"596":{"position":[[462,8]]},"601":{"position":[[536,10],[598,10]]},"607":{"position":[[868,7]]},"617":{"position":[[339,8]]},"636":{"position":[[288,7],[518,9]]},"740":{"position":[[71,7]]},"742":{"position":[[102,9]]},"743":{"position":[[128,7],[194,7]]},"744":{"position":[[494,9],[641,7],[780,7]]},"747":{"position":[[35,7],[81,7]]},"752":{"position":[[1320,7]]},"757":{"position":[[275,7],[404,7]]},"771":{"position":[[257,10],[316,10],[337,9],[384,12],[445,10],[470,7]]},"777":{"position":[[385,7],[498,7],[514,7],[1138,7],[1200,7],[1232,7]]},"779":{"position":[[111,12]]},"781":{"position":[[0,7]]},"782":{"position":[[68,7],[217,12]]},"785":{"position":[[926,7],[980,7],[1018,7]]},"786":{"position":[[1064,10]]},"791":{"position":[[2033,10],[2873,10],[3337,10],[7625,11],[17588,10],[17875,10],[18715,10],[19161,10],[23343,11],[32442,10]]},"800":{"position":[[417,7]]},"802":{"position":[[155,7],[189,7],[216,7],[245,7]]},"803":{"position":[[305,7]]},"804":{"position":[[16,9],[171,10]]},"813":{"position":[[75,7],[133,7]]},"919":{"position":[[64,10],[217,7],[314,7],[349,7],[429,7],[539,7],[574,8],[621,7]]},"924":{"position":[[177,7]]},"925":{"position":[[177,7]]},"950":{"position":[[370,7],[405,7],[579,7],[691,7],[753,7],[776,8],[820,7],[983,7],[1093,7],[1125,7]]},"954":{"position":[[373,7],[490,7],[506,7],[869,7],[986,7],[1096,7],[1452,7],[1558,7],[1610,7],[1672,7],[1704,7]]},"960":{"position":[[0,7]]},"963":{"position":[[208,7]]},"969":{"position":[[372,7],[471,7],[487,7],[782,7],[947,7],[1102,7],[1247,7],[1309,7],[1341,7]]},"979":{"position":[[103,10],[298,7],[437,7]]},"984":{"position":[[100,10],[348,7]]},"989":{"position":[[98,10],[346,7]]}},"keywords":{}}],["installeda",{"_index":4250,"title":{},"content":{"978":{"position":[[68,10]]},"983":{"position":[[65,10]]},"988":{"position":[[56,10]]}},"keywords":{}}],["instanc",{"_index":346,"title":{"38":{"position":[[18,8]]},"39":{"position":[[14,9]]},"40":{"position":[[17,8]]},"41":{"position":[[20,8]]},"387":{"position":[[18,8]]},"390":{"position":[[14,9]]},"393":{"position":[[17,8]]},"396":{"position":[[20,8]]},"560":{"position":[[18,8]]},"561":{"position":[[14,9]]},"562":{"position":[[17,8]]},"563":{"position":[[20,8]]},"876":{"position":[[18,8]]},"879":{"position":[[14,9]]},"882":{"position":[[17,8]]},"885":{"position":[[20,8]]}},"content":{"31":{"position":[[209,11]]},"32":{"position":[[220,10]]},"33":{"position":[[368,10]]},"34":{"position":[[228,10]]},"35":{"position":[[278,10]]},"36":{"position":[[293,10]]},"38":{"position":[[460,10],[670,8]]},"39":{"position":[[199,11],[413,8]]},"40":{"position":[[195,10],[404,8]]},"41":{"position":[[208,10],[428,8]]},"43":{"position":[[338,10]]},"44":{"position":[[278,10]]},"46":{"position":[[343,10]]},"47":{"position":[[202,11]]},"48":{"position":[[221,10]]},"49":{"position":[[327,10]]},"50":{"position":[[229,10]]},"51":{"position":[[271,10]]},"52":{"position":[[267,10]]},"101":{"position":[[526,8]]},"112":{"position":[[373,8]]},"121":{"position":[[97,9]]},"125":{"position":[[513,8],[741,9]]},"132":{"position":[[1016,10]]},"160":{"position":[[414,8],[1083,9]]},"186":{"position":[[750,9]]},"265":{"position":[[363,10]]},"389":{"position":[[420,10],[633,8]]},"392":{"position":[[181,11]]},"395":{"position":[[172,10]]},"398":{"position":[[179,10],[395,8]]},"560":{"position":[[460,10],[670,8]]},"561":{"position":[[199,11],[413,8]]},"562":{"position":[[195,10],[404,8]]},"563":{"position":[[208,10],[428,8]]},"596":{"position":[[373,8]]},"615":{"position":[[526,8]]},"628":{"position":[[97,9]]},"632":{"position":[[513,8],[741,9]]},"660":{"position":[[1016,10]]},"667":{"position":[[414,8],[1084,9]]},"714":{"position":[[750,9]]},"878":{"position":[[420,10],[633,8]]},"881":{"position":[[181,11]]},"884":{"position":[[172,10]]},"887":{"position":[[179,10],[395,8]]},"908":{"position":[[26,9],[291,8]]}},"keywords":{}}],["instantan",{"_index":1972,"title":{},"content":{"211":{"position":[[931,13]]},"706":{"position":[[931,13]]}},"keywords":{}}],["instanti",{"_index":1750,"title":{},"content":{"152":{"position":[[605,11]]},"652":{"position":[[611,11]]}},"keywords":{}}],["instead",{"_index":1324,"title":{},"content":{"102":{"position":[[906,7]]},"134":{"position":[[1753,7]]},"616":{"position":[[911,7]]},"662":{"position":[[1753,7]]}},"keywords":{}}],["instruct",{"_index":949,"title":{},"content":{"75":{"position":[[154,8]]},"76":{"position":[[203,12]]},"584":{"position":[[154,8]]},"585":{"position":[[203,12]]},"963":{"position":[[379,12]]},"964":{"position":[[191,12]]}},"keywords":{}}],["instruction.start",{"_index":2966,"title":{},"content":{"440":{"position":[[221,17]]},"924":{"position":[[209,17]]}},"keywords":{}}],["int",{"_index":1901,"title":{},"content":{"199":{"position":[[126,10]]},"439":{"position":[[1333,3],[1388,4]]},"694":{"position":[[126,10]]},"912":{"position":[[122,6]]}},"keywords":{}}],["integ",{"_index":2735,"title":{},"content":{"365":{"position":[[955,7]]},"409":{"position":[[1168,7]]},"473":{"position":[[132,7]]},"839":{"position":[[955,7]]},"862":{"position":[[1168,7]]},"913":{"position":[[129,7]]},"933":{"position":[[132,7]]}},"keywords":{}}],["integr",{"_index":1140,"title":{"287":{"position":[[20,11]]},"304":{"position":[[11,11]]},"323":{"position":[[11,9]]},"750":{"position":[[20,11]]},"755":{"position":[[11,11]]},"773":{"position":[[11,9]]}},"content":{"90":{"position":[[2076,10]]},"110":{"position":[[1431,9]]},"237":{"position":[[210,11]]},"288":{"position":[[48,11]]},"305":{"position":[[48,11]]},"323":{"position":[[36,9]]},"438":{"position":[[224,11]]},"502":{"position":[[534,10]]},"604":{"position":[[2076,10]]},"624":{"position":[[1436,9]]},"741":{"position":[[210,11]]},"751":{"position":[[48,11]]},"756":{"position":[[48,11]]},"773":{"position":[[36,9]]},"922":{"position":[[224,11]]},"937":{"position":[[15,9]]}},"keywords":{}}],["integrated:submarin",{"_index":3224,"title":{},"content":{"502":{"position":[[493,20]]}},"keywords":{}}],["integrationteste2e.md",{"_index":2060,"title":{},"content":{"239":{"position":[[468,21]]},"743":{"position":[[452,21]]}},"keywords":{}}],["integrationtestk8s.md",{"_index":2044,"title":{},"content":{"237":{"position":[[228,21]]},"741":{"position":[[228,21]]}},"keywords":{}}],["intellij",{"_index":909,"title":{},"content":{"71":{"position":[[191,8]]},"580":{"position":[[191,8]]}},"keywords":{}}],["intend",{"_index":580,"title":{},"content":{"53":{"position":[[3403,6]]},"151":{"position":[[87,8]]},"651":{"position":[[87,8]]}},"keywords":{}}],["interact",{"_index":800,"title":{"94":{"position":[[37,8]]},"121":{"position":[[7,11]]},"122":{"position":[[8,11]]},"608":{"position":[[37,8]]},"628":{"position":[[7,11]]},"629":{"position":[[8,11]]}},"content":{"54":{"position":[[2443,11]]},"90":{"position":[[1066,11]]},"94":{"position":[[397,12]]},"132":{"position":[[35,8],[1044,8]]},"135":{"position":[[493,8]]},"139":{"position":[[139,8]]},"148":{"position":[[241,11]]},"160":{"position":[[781,8]]},"436":{"position":[[180,11]]},"604":{"position":[[1066,11]]},"608":{"position":[[397,12]]},"639":{"position":[[139,8]]},"648":{"position":[[241,11]]},"660":{"position":[[35,8],[1044,8]]},"663":{"position":[[493,8]]},"667":{"position":[[781,8]]},"920":{"position":[[180,11]]}},"keywords":{}}],["interfac",{"_index":1117,"title":{},"content":{"90":{"position":[[1140,10]]},"152":{"position":[[1039,10]]},"158":{"position":[[2533,9],[2557,9]]},"177":{"position":[[456,9]]},"189":{"position":[[51,10],[76,10]]},"295":{"position":[[16,9]]},"302":{"position":[[89,9],[113,10],[136,9]]},"502":{"position":[[2024,9]]},"604":{"position":[[1140,10]]},"652":{"position":[[1319,10]]},"658":{"position":[[2533,9],[2557,9]]},"684":{"position":[[456,9]]},"717":{"position":[[51,10],[76,10]]},"762":{"position":[[16,9]]},"770":{"position":[[89,9],[113,10],[136,9]]}},"keywords":{}}],["interpret",{"_index":1897,"title":{"507":{"position":[[0,12]]},"527":{"position":[[0,12]]}},"content":{"197":{"position":[[323,11]]},"200":{"position":[[214,11]]},"201":{"position":[[298,11]]},"208":{"position":[[396,11],[490,11],[700,11],[862,11]]},"209":{"position":[[458,11],[508,11],[558,11],[601,11]]},"211":{"position":[[72,11],[151,11],[373,11],[514,11],[1315,11]]},"692":{"position":[[323,11]]},"695":{"position":[[214,11]]},"696":{"position":[[298,11]]},"703":{"position":[[396,11],[490,11],[700,11],[862,11]]},"704":{"position":[[458,11],[508,11],[558,11],[601,11]]},"706":{"position":[[72,11],[151,11],[373,11],[514,11],[1315,11]]}},"keywords":{}}],["interpretermeta:key=interpretergroupid,value={intp_tserver_host",{"_index":1956,"title":{},"content":{"209":{"position":[[341,72]]},"704":{"position":[[341,72]]}},"keywords":{}}],["intp_start_tim",{"_index":1960,"title":{},"content":{"209":{"position":[[532,15]]},"704":{"position":[[532,15]]}},"keywords":{}}],["intp_tserver_port",{"_index":1959,"title":{},"content":{"209":{"position":[[480,17]]},"704":{"position":[[480,17]]}},"keywords":{}}],["intra_op_parallelism_thread",{"_index":3972,"title":{},"content":{"965":{"position":[[1038,29],[4937,29],[10520,29],[14443,29],[16589,29]]}},"keywords":{}}],["intric",{"_index":1106,"title":{},"content":{"90":{"position":[[752,9]]},"604":{"position":[[752,9]]}},"keywords":{}}],["introduct",{"_index":1868,"title":{"184":{"position":[[0,12]]},"197":{"position":[[0,12]]},"288":{"position":[[0,12]]},"293":{"position":[[3,12]]},"305":{"position":[[0,12]]},"692":{"position":[[0,12]]},"712":{"position":[[0,12]]},"751":{"position":[[0,12]]},"756":{"position":[[0,12]]},"760":{"position":[[3,12]]}},"content":{},"keywords":{}}],["invalid",{"_index":1166,"title":{},"content":{"91":{"position":[[172,7]]},"605":{"position":[[172,7]]}},"keywords":{}}],["invest",{"_index":1486,"title":{},"content":{"115":{"position":[[6,13]]},"599":{"position":[[6,13]]}},"keywords":{}}],["invit",{"_index":519,"title":{},"content":{"53":{"position":[[1613,7],[1676,11],[1982,10],[2991,7],[4445,10]]},"54":{"position":[[2367,8]]},"79":{"position":[[1292,10],[1335,10],[1434,12],[1447,10],[1623,11]]},"83":{"position":[[155,6]]},"590":{"position":[[155,6]]}},"keywords":{}}],["invok",{"_index":1516,"title":{"154":{"position":[[0,6]]},"654":{"position":[[0,6]]}},"content":{"117":{"position":[[881,6],[1302,6]]},"150":{"position":[[121,6]]},"158":{"position":[[105,6]]},"601":{"position":[[881,6],[1302,6]]},"650":{"position":[[121,6]]},"658":{"position":[[105,6]]},"791":{"position":[[14957,6],[15007,6],[15506,6],[15556,6],[16201,6],[16251,6],[16996,6],[17046,6],[30506,6],[30556,6],[31055,6],[31105,6],[31850,6],[31900,6]]}},"keywords":{}}],["involv",{"_index":1037,"title":{},"content":{"83":{"position":[[30,8]]},"151":{"position":[[413,9]]},"212":{"position":[[278,8]]},"590":{"position":[[30,8]]},"651":{"position":[[413,9]]},"707":{"position":[[278,8]]}},"keywords":{}}],["io.takari:maven:0.7.7:wrapp",{"_index":2004,"title":{},"content":{"221":{"position":[[144,29]]},"735":{"position":[[144,29]]}},"keywords":{}}],["ioexcept",{"_index":3086,"title":{},"content":{"482":{"position":[[134,11]]},"945":{"position":[[134,11]]}},"keywords":{}}],["ip",{"_index":120,"title":{},"content":{"5":{"position":[[98,2],[123,2],[143,2]]},"129":{"position":[[565,2]]},"200":{"position":[[177,2]]},"206":{"position":[[146,2]]},"208":{"position":[[239,2]]},"209":{"position":[[188,2],[284,2],[477,2]]},"313":{"position":[[887,2],[1163,2],[1210,3],[1285,3]]},"341":{"position":[[44,2],[56,2],[76,2]]},"465":{"position":[[98,2],[123,2],[143,2]]},"636":{"position":[[565,2]]},"695":{"position":[[177,2]]},"701":{"position":[[146,2]]},"703":{"position":[[239,2]]},"704":{"position":[[188,2],[284,2],[477,2]]},"744":{"position":[[1156,2],[1168,2],[1188,2]]},"785":{"position":[[887,2],[1163,2],[1210,3],[1285,3]]}},"keywords":{}}],["ip2",{"_index":1934,"title":{},"content":{"206":{"position":[[124,4]]},"701":{"position":[[124,4]]}},"keywords":{}}],["ip3",{"_index":1935,"title":{},"content":{"206":{"position":[[129,4]]},"701":{"position":[[129,4]]}},"keywords":{}}],["ip:8000",{"_index":3940,"title":{},"content":{"964":{"position":[[406,10],[428,10],[458,10],[1441,10],[1463,10],[1493,10]]},"965":{"position":[[1358,9],[16909,9],[17069,8],[17383,8]]}},"keywords":{}}],["iproute2",{"_index":3405,"title":{},"content":{"791":{"position":[[2086,8],[2483,8],[2978,8],[4029,8],[8419,9],[8509,8],[13500,8],[17928,8],[18325,8],[18802,8],[19853,8],[24137,9],[24227,8],[29049,8]]}},"keywords":{}}],["iproute2_4.3.0",{"_index":3607,"title":{},"content":{"791":{"position":[[8449,18],[24167,18]]}},"keywords":{}}],["iputil",{"_index":3299,"title":{},"content":{"777":{"position":[[558,7]]}},"keywords":{}}],["ipykernel",{"_index":3849,"title":{},"content":{"950":{"position":[[851,9]]},"969":{"position":[[973,9]]}},"keywords":{}}],["ipykernel.kernelspec",{"_index":3853,"title":{},"content":{"950":{"position":[[923,20]]},"969":{"position":[[1058,20]]}},"keywords":{}}],["ipynb",{"_index":1590,"title":{},"content":{"132":{"position":[[1965,8]]},"660":{"position":[[1965,8]]}},"keywords":{}}],["ipython",{"_index":3876,"title":{},"content":{"954":{"position":[[922,7]]}},"keywords":{}}],["ip}:32080",{"_index":2629,"title":{},"content":{"341":{"position":[[289,10]]},"744":{"position":[[1430,10]]}},"keywords":{}}],["ip}:32080(from",{"_index":133,"title":{},"content":{"6":{"position":[[22,14]]},"466":{"position":[[22,14]]}},"keywords":{}}],["isc",{"_index":3406,"title":{},"content":{"791":{"position":[[2095,3],[2111,3],[2521,3],[2987,3],[3003,3],[4500,3],[4616,3],[9153,3],[9190,7],[9253,3],[9334,3],[9371,7],[9434,3],[13751,3],[13803,3],[17937,3],[17953,3],[18363,3],[18811,3],[18827,3],[20324,3],[20440,3],[24871,3],[24908,7],[24971,3],[25052,3],[25089,7],[25152,3],[29300,3],[29352,3]]}},"keywords":{}}],["isort",{"_index":2920,"title":{},"content":{"437":{"position":[[4,5]]},"921":{"position":[[4,5]]}},"keywords":{}}],["issu",{"_index":87,"title":{"480":{"position":[[0,7]]},"481":{"position":[[0,5]]},"482":{"position":[[0,5]]},"483":{"position":[[0,5]]},"484":{"position":[[0,5]]},"485":{"position":[[0,5]]},"943":{"position":[[0,7]]},"944":{"position":[[0,5]]},"945":{"position":[[0,5]]},"946":{"position":[[0,5]]},"947":{"position":[[0,5]]},"948":{"position":[[0,5]]}},"content":{"4":{"position":[[508,5]]},"53":{"position":[[6734,6]]},"54":{"position":[[1692,6],[1745,7],[1778,7]]},"61":{"position":[[47,7],[192,5],[244,5],[281,5],[357,5]]},"62":{"position":[[141,5]]},"77":{"position":[[148,6],[351,6]]},"82":{"position":[[37,5],[153,6],[407,5],[507,5]]},"83":{"position":[[455,7]]},"136":{"position":[[401,6]]},"152":{"position":[[591,6]]},"464":{"position":[[508,5]]},"570":{"position":[[47,7],[192,5],[244,5],[281,5],[357,5]]},"571":{"position":[[141,5]]},"586":{"position":[[148,6],[351,6]]},"589":{"position":[[37,5],[153,6],[407,5],[507,5]]},"590":{"position":[[466,7]]},"652":{"position":[[597,6]]},"664":{"position":[[401,6]]},"979":{"position":[[783,6]]},"992":{"position":[[235,6]]}},"keywords":{}}],["issues.cr",{"_index":843,"title":{},"content":{"61":{"position":[[219,13]]},"570":{"position":[[219,13]]}},"keywords":{}}],["issueupd",{"_index":763,"title":{},"content":{"54":{"position":[[1148,11]]}},"keywords":{}}],["issue’",{"_index":782,"title":{},"content":{"54":{"position":[[1799,7]]}},"keywords":{}}],["it'",{"_index":1265,"title":{},"content":{"96":{"position":[[426,4]]},"180":{"position":[[344,4],[399,4]]},"286":{"position":[[238,4]]},"330":{"position":[[35,4]]},"471":{"position":[[353,4]]},"473":{"position":[[195,4]]},"491":{"position":[[761,4]]},"610":{"position":[[426,4]]},"687":{"position":[[365,4],[452,4]]},"800":{"position":[[35,4]]},"931":{"position":[[353,4]]},"933":{"position":[[195,4]]}},"keywords":{}}],["item",{"_index":643,"title":{},"content":{"53":{"position":[[6127,5]]},"54":{"position":[[2161,5]]},"91":{"position":[[588,4]]},"139":{"position":[[1154,6]]},"206":{"position":[[68,5]]},"207":{"position":[[159,5]]},"208":{"position":[[146,5]]},"265":{"position":[[111,4]]},"500":{"position":[[289,5]]},"501":{"position":[[73,5]]},"502":{"position":[[1414,4]]},"605":{"position":[[588,4]]},"639":{"position":[[1159,6]]},"701":{"position":[[68,5]]},"702":{"position":[[159,5]]},"703":{"position":[[146,5]]}},"keywords":{}}],["iter",{"_index":1671,"title":{},"content":{"140":{"position":[[379,9],[1374,9]]},"147":{"position":[[424,9],[931,9]]},"640":{"position":[[379,9],[1374,9]]},"647":{"position":[[424,9],[931,9]]}},"keywords":{}}],["itself",{"_index":1412,"title":{},"content":{"107":{"position":[[555,7]]},"153":{"position":[[398,7]]},"197":{"position":[[749,6]]},"621":{"position":[[556,7]]},"653":{"position":[[398,7]]},"692":{"position":[[749,6]]}},"keywords":{}}],["it‘",{"_index":1045,"title":{},"content":{"83":{"position":[[363,4]]},"590":{"position":[[363,4]]}},"keywords":{}}],["j",{"_index":3320,"title":{},"content":{"777":{"position":[[977,1],[1066,1],[1088,1]]}},"keywords":{}}],["jan",{"_index":34,"title":{},"content":{"3":{"position":[[156,3]]},"324":{"position":[[1341,3]]},"463":{"position":[[156,3]]},"774":{"position":[[794,3]]}},"keywords":{}}],["jar",{"_index":1745,"title":{"274":{"position":[[16,3]]}},"content":{"152":{"position":[[437,4],[485,4]]},"238":{"position":[[193,3]]},"490":{"position":[[124,3],[240,3]]},"491":{"position":[[668,4],[713,3]]},"652":{"position":[[443,4],[491,4]]},"742":{"position":[[193,3]]},"791":{"position":[[300,3]]},"981":{"position":[[1515,3]]}},"keywords":{}}],["java",{"_index":900,"title":{"225":{"position":[[0,4]]},"727":{"position":[[0,4]]}},"content":{"71":{"position":[[36,4]]},"152":{"position":[[1034,4]]},"161":{"position":[[912,4]]},"439":{"position":[[204,4]]},"491":{"position":[[257,4],[284,5],[318,4],[545,4]]},"580":{"position":[[36,4]]},"652":{"position":[[1314,4]]},"668":{"position":[[912,4]]},"980":{"position":[[292,4]]},"981":{"position":[[186,4]]},"985":{"position":[[289,4]]},"986":{"position":[[186,4]]},"990":{"position":[[229,4]]},"991":{"position":[[264,4]]}},"keywords":{}}],["java.io.ioexcept",{"_index":3087,"title":{},"content":{"482":{"position":[[165,20]]},"945":{"position":[[165,20]]}},"keywords":{}}],["java.lang.processbuilder.start(processbuilder.java:1048",{"_index":3091,"title":{},"content":{"482":{"position":[[288,56]]},"945":{"position":[[288,56]]}},"keywords":{}}],["java/python/r",{"_index":1443,"title":{},"content":{"110":{"position":[[1376,16]]},"624":{"position":[[1381,16]]}},"keywords":{}}],["java_hom",{"_index":4309,"title":{},"content":{"981":{"position":[[1269,9]]}},"keywords":{}}],["java_home=/usr/lib/jvm/java",{"_index":3324,"title":{},"content":{"777":{"position":[[1278,27]]},"950":{"position":[[1019,27]]},"981":{"position":[[758,27]]},"986":{"position":[[468,27]]}},"keywords":{}}],["javascript",{"_index":2068,"title":{},"content":{"242":{"position":[[262,10]]},"745":{"position":[[262,10]]}},"keywords":{}}],["jdbc",{"_index":2987,"title":{},"content":{"470":{"position":[[136,4]]},"490":{"position":[[119,4]]},"491":{"position":[[663,4],[708,4]]},"930":{"position":[[136,4]]}},"keywords":{}}],["jdk",{"_index":1985,"title":{},"content":{"217":{"position":[[0,3]]},"225":{"position":[[0,3]]},"235":{"position":[[0,3]]},"731":{"position":[[0,3]]},"739":{"position":[[0,3]]},"777":{"position":[[316,3],[552,3],[1221,3]]},"950":{"position":[[297,3],[1114,3]]},"954":{"position":[[303,3],[1693,3]]},"969":{"position":[[303,3],[1330,3]]}},"keywords":{}}],["jeps",{"_index":1977,"title":{},"content":{"212":{"position":[[327,6]]},"707":{"position":[[327,6]]}},"keywords":{}}],["jetti",{"_index":2397,"title":{},"content":{"302":{"position":[[23,5]]},"492":{"position":[[727,5],[1194,5]]},"770":{"position":[[23,5]]}},"keywords":{}}],["jira",{"_index":777,"title":{"61":{"position":[[20,4]]},"570":{"position":[[20,4]]}},"content":{"54":{"position":[[1702,4]]},"61":{"position":[[42,4],[97,4],[187,4],[239,4],[301,4]]},"79":{"position":[[1996,4]]},"570":{"position":[[42,4],[97,4],[187,4],[239,4],[301,4]]}},"keywords":{}}],["jira_numb",{"_index":856,"title":{},"content":{"62":{"position":[[157,14],[198,14]]},"63":{"position":[[39,14],[157,15]]},"64":{"position":[[15,14]]},"65":{"position":[[26,14]]},"70":{"position":[[30,14]]},"571":{"position":[[157,14],[198,14]]},"572":{"position":[[39,14],[157,15]]},"573":{"position":[[15,14]]},"574":{"position":[[26,14]]},"579":{"position":[[30,14]]}},"keywords":{}}],["jirago",{"_index":968,"title":{},"content":{"77":{"position":[[420,6]]},"586":{"position":[[420,6]]}},"keywords":{}}],["jk",{"_index":3183,"title":{},"content":{"492":{"position":[[636,3],[1051,3]]}},"keywords":{}}],["job",{"_index":81,"title":{"105":{"position":[[21,3]]},"479":{"position":[[23,3]]},"508":{"position":[[0,3]]},"528":{"position":[[0,3]]},"619":{"position":[[21,3]]},"790":{"position":[[10,4]]},"942":{"position":[[23,3]]}},"content":{"4":{"position":[[416,3]]},"93":{"position":[[486,4],[635,4]]},"94":{"position":[[501,3],[575,3]]},"98":{"position":[[73,4],[172,5]]},"99":{"position":[[198,4]]},"101":{"position":[[418,4]]},"102":{"position":[[100,4],[1135,4],[1223,4]]},"113":{"position":[[340,3]]},"117":{"position":[[1380,5]]},"132":{"position":[[1528,4]]},"134":{"position":[[1570,4],[1960,3]]},"140":{"position":[[709,3],[761,4]]},"147":{"position":[[137,3]]},"152":{"position":[[889,3]]},"154":{"position":[[781,3]]},"157":{"position":[[956,4]]},"158":{"position":[[1836,3]]},"160":{"position":[[1093,5]]},"161":{"position":[[89,5],[759,3],[808,4]]},"162":{"position":[[977,3],[1035,3],[1066,3],[1094,3]]},"186":{"position":[[356,5],[374,3],[590,5],[698,3]]},"197":{"position":[[134,3],[150,3],[166,3],[527,3]]},"328":{"position":[[1658,4]]},"340":{"position":[[616,3]]},"464":{"position":[[416,3]]},"476":{"position":[[267,4]]},"477":{"position":[[58,4]]},"479":{"position":[[40,3],[636,3],[907,3]]},"597":{"position":[[340,3]]},"601":{"position":[[1380,5]]},"607":{"position":[[486,4],[635,4]]},"608":{"position":[[501,3],[575,3]]},"612":{"position":[[73,4],[172,5]]},"613":{"position":[[198,4]]},"615":{"position":[[418,4]]},"616":{"position":[[100,4],[1146,4],[1235,4]]},"640":{"position":[[709,3],[761,4]]},"647":{"position":[[137,3]]},"652":{"position":[[1016,4],[1169,3]]},"654":{"position":[[781,3]]},"657":{"position":[[956,4]]},"658":{"position":[[1836,3]]},"660":{"position":[[1528,4]]},"662":{"position":[[1570,4],[1960,3]]},"667":{"position":[[1094,5]]},"668":{"position":[[89,5],[759,3],[808,4]]},"669":{"position":[[1230,3],[1288,3],[1319,3],[1347,3]]},"692":{"position":[[134,3],[150,3],[166,3],[527,3]]},"714":{"position":[[356,5],[374,3],[590,5],[698,3]]},"791":{"position":[[367,3]]},"809":{"position":[[1678,4]]},"814":{"position":[[580,3]]},"909":{"position":[[197,3],[279,3]]},"940":{"position":[[49,4],[100,4],[149,4]]},"942":{"position":[[40,3],[636,3],[907,3]]},"961":{"position":[[129,3],[345,3],[655,3]]},"963":{"position":[[641,4],[704,3]]},"965":{"position":[[483,3],[9980,3],[16101,3],[17042,3],[17201,3],[17356,3]]},"979":{"position":[[680,4]]},"980":{"position":[[333,3],[351,3],[1017,4]]},"981":{"position":[[227,3],[245,3],[616,3]]},"985":{"position":[[330,3],[353,3],[877,4]]},"986":{"position":[[227,3],[250,3]]},"990":{"position":[[270,3],[291,3],[1171,4]]},"991":{"position":[[305,3],[326,3]]},"992":{"position":[[77,5]]}},"keywords":{}}],["job'",{"_index":1245,"title":{},"content":{"94":{"position":[[463,5]]},"608":{"position":[[463,5]]}},"keywords":{}}],["job.git",{"_index":1621,"title":{},"content":{"134":{"position":[[1531,8]]},"140":{"position":[[1312,8]]},"640":{"position":[[1312,8]]},"662":{"position":[[1531,8]]}},"keywords":{}}],["job.pi",{"_index":1648,"title":{},"content":{"139":{"position":[[485,7]]},"639":{"position":[[485,7]]}},"keywords":{}}],["job.tar.gz",{"_index":1669,"title":{},"content":{"140":{"position":[[333,11]]},"147":{"position":[[89,10],[361,11]]},"640":{"position":[[333,11]]},"647":{"position":[[89,10],[361,11]]}},"keywords":{}}],["job/training.pi",{"_index":1686,"title":{},"content":{"140":{"position":[[1356,15]]},"640":{"position":[[1356,15]]}},"keywords":{}}],["job1",{"_index":1829,"title":{},"content":{"162":{"position":[[267,7]]},"669":{"position":[[79,7],[717,7]]}},"keywords":{}}],["job2",{"_index":1830,"title":{},"content":{"162":{"position":[[442,7]]},"669":{"position":[[298,7],[903,7]]}},"keywords":{}}],["job:master/replica:0/task:0",{"_index":4103,"title":{},"content":{"965":{"position":[[14274,28]]}},"keywords":{}}],["job_id",{"_index":3759,"title":{},"content":{"909":{"position":[[148,9]]}},"keywords":{}}],["jobdir",{"_index":3037,"title":{},"content":{"479":{"position":[[684,6],[955,6]]},"942":{"position":[[684,6],[955,6]]}},"keywords":{}}],["jobmanag",{"_index":1827,"title":{},"content":{"161":{"position":[[698,10]]},"162":{"position":[[658,10]]},"668":{"position":[[698,10]]},"669":{"position":[[806,10]]}},"keywords":{}}],["jobs/servic",{"_index":1212,"title":{},"content":{"93":{"position":[[8,13]]},"607":{"position":[[8,13]]}},"keywords":{}}],["join",{"_index":1001,"title":{},"content":{"79":{"position":[[1461,4]]},"81":{"position":[[217,4],[296,4]]},"91":{"position":[[247,4]]},"605":{"position":[[247,4]]}},"keywords":{}}],["journalctl",{"_index":3097,"title":{},"content":{"483":{"position":[[59,10]]},"946":{"position":[[59,10]]}},"keywords":{}}],["json",{"_index":244,"title":{"424":{"position":[[35,5]]},"425":{"position":[[43,5]]},"898":{"position":[[35,5]]},"899":{"position":[[43,5]]}},"content":{"22":{"position":[[124,6],[719,6],[882,6]]},"23":{"position":[[124,6],[866,6],[1029,6]]},"24":{"position":[[228,6],[391,6],[1042,6]]},"25":{"position":[[261,6],[424,6]]},"26":{"position":[[132,6],[735,6]]},"27":{"position":[[264,6],[427,6]]},"366":{"position":[[90,6],[703,6],[921,6]]},"369":{"position":[[90,6],[823,6],[1041,6]]},"371":{"position":[[1304,6],[1522,6]]},"374":{"position":[[240,6],[458,6]]},"377":{"position":[[91,6],[734,6],[952,6]]},"380":{"position":[[243,6],[433,6]]},"424":{"position":[[309,6]]},"425":{"position":[[316,6]]},"551":{"position":[[124,6],[719,6],[882,6]]},"552":{"position":[[124,6],[866,6],[1029,6]]},"553":{"position":[[228,6],[391,6],[1042,6]]},"554":{"position":[[261,6],[424,6]]},"555":{"position":[[132,6],[735,6]]},"556":{"position":[[264,6],[427,6]]},"840":{"position":[[90,6],[703,6],[921,6]]},"843":{"position":[[90,6],[823,6],[1041,6]]},"845":{"position":[[1304,6],[1522,6]]},"848":{"position":[[240,6],[458,6]]},"851":{"position":[[91,6],[734,6],[952,6]]},"854":{"position":[[243,6],[433,6]]},"898":{"position":[[309,6]]},"899":{"position":[[316,6]]}},"keywords":{}}],["json.dump",{"_index":3941,"title":{},"content":{"964":{"position":[[481,11],[1516,11]]}},"keywords":{}}],["jul",{"_index":2503,"title":{},"content":{"324":{"position":[[582,3],[1124,3]]},"774":{"position":[[35,3],[577,3]]}},"keywords":{}}],["jump",{"_index":1207,"title":{},"content":{"92":{"position":[[896,7]]},"606":{"position":[[896,7]]}},"keywords":{}}],["jupyt",{"_index":1379,"title":{"325":{"position":[[0,7]]},"493":{"position":[[6,7]]},"496":{"position":[[7,7]]},"806":{"position":[[0,7]]}},"content":{"103":{"position":[[530,9]]},"112":{"position":[[1219,9]]},"117":{"position":[[558,7],[1190,7]]},"324":{"position":[[425,7]]},"334":{"position":[[122,7]]},"496":{"position":[[82,7],[267,7],[477,8],[499,7],[582,7]]},"502":{"position":[[3460,7]]},"522":{"position":[[1571,7]]},"596":{"position":[[1219,9]]},"601":{"position":[[558,7],[1190,7]]},"617":{"position":[[530,9]]},"804":{"position":[[122,7]]},"950":{"position":[[861,7]]},"969":{"position":[[985,7]]}},"keywords":{}}],["jupyter.yaml",{"_index":3204,"title":{},"content":{"496":{"position":[[222,12]]}},"keywords":{}}],["jupyter/minim",{"_index":3202,"title":{},"content":{"496":{"position":[[129,15]]}},"keywords":{}}],["jupyterlab",{"_index":3206,"title":{},"content":{"496":{"position":[[642,10]]}},"keywords":{}}],["k/v",{"_index":1596,"title":{},"content":{"133":{"position":[[83,4],[197,4]]},"661":{"position":[[83,4],[197,4]]}},"keywords":{}}],["k65jm",{"_index":62,"title":{},"content":{"4":{"position":[[186,5]]},"464":{"position":[[186,5]]}},"keywords":{}}],["k8",{"_index":1217,"title":{"304":{"position":[[23,3]]},"306":{"position":[[4,3]]},"307":{"position":[[4,3]]},"755":{"position":[[23,3]]},"757":{"position":[[4,3]]},"758":{"position":[[4,3]]}},"content":{"93":{"position":[[310,4],[346,3],[441,4],[455,3],[653,4],[681,3]]},"98":{"position":[[469,4]]},"99":{"position":[[565,4]]},"102":{"position":[[519,6]]},"117":{"position":[[952,3]]},"118":{"position":[[950,3]]},"126":{"position":[[11,3]]},"134":{"position":[[1621,3],[1709,3],[1793,3],[2198,3]]},"135":{"position":[[194,5]]},"152":{"position":[[240,4],[836,4],[855,3],[966,3]]},"154":{"position":[[841,4]]},"155":{"position":[[372,4]]},"162":{"position":[[190,3],[558,3]]},"175":{"position":[[170,3]]},"178":{"position":[[418,5]]},"180":{"position":[[69,4],[174,3],[413,3]]},"189":{"position":[[138,3]]},"190":{"position":[[60,3]]},"219":{"position":[[258,3]]},"300":{"position":[[38,3]]},"301":{"position":[[23,3]]},"305":{"position":[[40,3]]},"306":{"position":[[396,3],[495,3]]},"314":{"position":[[52,3],[711,3]]},"334":{"position":[[39,3]]},"495":{"position":[[841,3]]},"601":{"position":[[952,3]]},"607":{"position":[[310,4],[346,3],[441,4],[455,3],[653,4],[681,3]]},"612":{"position":[[469,4]]},"613":{"position":[[565,4]]},"625":{"position":[[951,4]]},"633":{"position":[[11,3]]},"652":{"position":[[240,4],[851,4],[1135,3],[1246,3]]},"655":{"position":[[379,4]]},"662":{"position":[[1621,3],[1709,3],[1793,3],[2198,3]]},"663":{"position":[[194,5]]},"669":{"position":[[329,3],[992,3]]},"682":{"position":[[170,3]]},"685":{"position":[[418,5]]},"687":{"position":[[90,4],[195,3],[466,3]]},"717":{"position":[[138,3]]},"733":{"position":[[258,3]]},"756":{"position":[[40,3]]},"757":{"position":[[396,3],[495,3]]},"769":{"position":[[23,3]]},"786":{"position":[[52,3],[711,3]]},"804":{"position":[[39,3]]}},"keywords":{}}],["k80",{"_index":3990,"title":{},"content":{"965":{"position":[[1500,3],[1746,3],[7653,4],[7832,4],[8011,4],[8190,4],[8369,4],[8548,4],[8727,4],[8906,4],[10917,3],[11163,3]]}},"keywords":{}}],["k8s'",{"_index":1622,"title":{},"content":{"134":{"position":[[1649,5]]},"662":{"position":[[1649,5]]}},"keywords":{}}],["k8s.io/v1alpha4",{"_index":2456,"title":{},"content":{"314":{"position":[[757,15]]},"495":{"position":[[353,15]]},"786":{"position":[[757,15]]}},"keywords":{}}],["k8s.need",{"_index":1771,"title":{},"content":{"155":{"position":[[115,8]]}},"keywords":{}}],["k8s/cloud",{"_index":1652,"title":{},"content":{"139":{"position":[[1020,12],[1682,9]]}},"keywords":{}}],["k8s/contain",{"_index":1331,"title":{},"content":{"102":{"position":[[1109,13]]}},"keywords":{}}],["k8s/dock",{"_index":1437,"title":{},"content":{"110":{"position":[[785,10]]},"184":{"position":[[520,10]]}},"keywords":{}}],["k8s/yarn",{"_index":1248,"title":{},"content":{"94":{"position":[[566,8]]},"608":{"position":[[566,8]]},"616":{"position":[[519,11]]},"654":{"position":[[841,9]]},"718":{"position":[[60,8]]},"768":{"position":[[38,8]]}},"keywords":{}}],["k8s/yarn/cloud",{"_index":3257,"title":{},"content":{"639":{"position":[[1020,17],[1690,14]]}},"keywords":{}}],["k8s/yarn/dock",{"_index":3265,"title":{},"content":{"712":{"position":[[520,15]]}},"keywords":{}}],["kaihsun@apache.org",{"_index":838,"title":{},"content":{"61":{"position":[[68,18]]},"570":{"position":[[68,18]]}},"keywords":{}}],["kaldi",{"_index":3290,"title":{"776":{"position":[[35,5]]},"777":{"position":[[35,5]]},"778":{"position":[[31,5]]},"790":{"position":[[4,5]]}},"content":{"777":{"position":[[18,5],[68,5],[160,5],[273,5],[393,6]]},"778":{"position":[[48,5],[80,5],[141,5]]},"779":{"position":[[210,5],[283,6]]},"791":{"position":[[382,5]]}},"keywords":{}}],["kaldi/sg",{"_index":3354,"title":{},"content":{"788":{"position":[[573,11]]}},"keywords":{}}],["kb",{"_index":1604,"title":{},"content":{"133":{"position":[[485,3]]},"661":{"position":[[485,3]]},"791":{"position":[[3572,3],[3661,3],[3764,3],[3960,3],[4072,3],[4178,3],[4304,3],[4430,3],[4546,3],[4662,3],[4764,3],[4848,3],[5055,3],[5152,3],[5240,3],[5347,3],[5453,3],[5556,3],[5662,3],[5754,3],[5857,3],[5963,3],[6069,3],[6190,3],[6305,3],[6408,3],[6504,3],[6597,3],[6717,3],[6831,3],[6930,3],[19222,2],[19396,3],[19485,3],[19588,3],[19784,3],[19896,3],[20002,3],[20128,3],[20254,3],[20370,3],[20486,3],[20588,3],[20672,3],[20879,3],[20976,3],[21064,3],[21171,3],[21277,3],[21380,3],[21486,3],[21578,3],[21681,3],[21787,3],[21908,3],[22023,3],[22126,3],[22222,3],[22315,3],[22435,3],[22549,3],[22648,3],[22665,2]]}},"keywords":{}}],["kb/",{"_index":3722,"title":{},"content":{"791":{"position":[[22680,5]]}},"keywords":{}}],["keep",{"_index":1618,"title":{},"content":{"134":{"position":[[1131,5]]},"286":{"position":[[469,4]]},"662":{"position":[[1131,5]]}},"keywords":{}}],["kera",{"_index":1137,"title":{},"content":{"90":{"position":[[1901,5]]},"92":{"position":[[463,6]]},"604":{"position":[[1901,5]]},"606":{"position":[[463,6]]}},"keywords":{}}],["keras.pi",{"_index":2637,"title":{},"content":{"343":{"position":[[301,8]]},"817":{"position":[[301,8]]}},"keywords":{}}],["kerbero",{"_index":1421,"title":{},"content":{"107":{"position":[[1020,8]]},"175":{"position":[[26,9]]},"621":{"position":[[1023,8]]},"682":{"position":[[26,9]]}},"keywords":{}}],["kernalspec",{"_index":2733,"title":{},"content":{"365":{"position":[[849,12]]},"839":{"position":[[849,12]]}},"keywords":{}}],["kernel",{"_index":1378,"title":{"115":{"position":[[0,6]]},"599":{"position":[[0,6]]}},"content":{"103":{"position":[[518,6]]},"112":{"position":[[482,7],[1207,6],[1493,6],[1826,6]]},"113":{"position":[[168,7],[187,7],[424,6]]},"114":{"position":[[279,7],[611,6]]},"115":{"position":[[804,7],[914,7],[1282,6]]},"117":{"position":[[1001,6],[1161,6],[1275,6]]},"350":{"position":[[287,6],[384,6],[448,6]]},"596":{"position":[[482,7],[1207,6],[1493,6],[1826,6]]},"597":{"position":[[168,7],[187,7],[424,6]]},"598":{"position":[[279,7],[611,6]]},"599":{"position":[[804,7],[914,7],[1282,6]]},"601":{"position":[[1001,6],[1161,6],[1275,6]]},"617":{"position":[[518,6]]},"824":{"position":[[287,6],[384,6],[448,6]]}},"keywords":{}}],["kernel_nam",{"_index":1519,"title":{},"content":{"117":{"position":[[1008,13],[1168,13],[1322,12]]},"601":{"position":[[1008,13],[1168,13],[1322,12]]}},"keywords":{}}],["kernelspec",{"_index":160,"title":{},"content":{"9":{"position":[[166,12],[753,12]]},"10":{"position":[[304,12],[788,12]]},"11":{"position":[[326,12]]},"12":{"position":[[176,12],[666,12],[904,12]]},"13":{"position":[[329,12]]},"38":{"position":[[963,14]]},"39":{"position":[[705,14]]},"40":{"position":[[696,14]]},"41":{"position":[[755,13]]},"350":{"position":[[149,10],[160,10],[236,11]]},"351":{"position":[[131,12],[733,14]]},"353":{"position":[[315,14],[611,14],[1207,14]]},"356":{"position":[[299,14]]},"358":{"position":[[117,10],[128,10]]},"359":{"position":[[132,12],[620,14]]},"362":{"position":[[302,14]]},"389":{"position":[[935,14]]},"392":{"position":[[682,14]]},"395":{"position":[[670,14]]},"398":{"position":[[700,14]]},"538":{"position":[[166,12],[753,12]]},"539":{"position":[[304,12],[788,12]]},"540":{"position":[[326,12]]},"541":{"position":[[176,12],[666,12],[904,12]]},"542":{"position":[[329,12]]},"560":{"position":[[963,14]]},"561":{"position":[[705,14]]},"562":{"position":[[696,14]]},"563":{"position":[[755,13]]},"824":{"position":[[149,10],[160,10],[236,11]]},"825":{"position":[[131,12],[733,14]]},"827":{"position":[[315,14],[611,14],[1207,14]]},"830":{"position":[[299,14]]},"832":{"position":[[117,10],[128,10]]},"833":{"position":[[132,12],[620,14]]},"836":{"position":[[302,14]]},"878":{"position":[[935,14]]},"881":{"position":[[682,14]]},"884":{"position":[[670,14]]},"887":{"position":[[700,14]]}},"keywords":{}}],["kernelspec\":nul",{"_index":2762,"title":{},"content":{"366":{"position":[[1184,18]]},"369":{"position":[[1318,18]]},"371":{"position":[[776,18],[1799,18]]},"374":{"position":[[735,18]]},"377":{"position":[[1215,18]]},"380":{"position":[[696,18]]},"410":{"position":[[2573,18]]},"412":{"position":[[1575,18]]},"415":{"position":[[2603,18]]},"418":{"position":[[1599,18]]},"421":{"position":[[874,18]]},"840":{"position":[[1184,18]]},"843":{"position":[[1318,18]]},"845":{"position":[[776,18],[1799,18]]},"848":{"position":[[735,18]]},"851":{"position":[[1215,18]]},"854":{"position":[[696,18]]},"863":{"position":[[2573,18]]},"865":{"position":[[1575,18]]},"868":{"position":[[2603,18]]},"871":{"position":[[1599,18]]},"874":{"position":[[874,18]]}},"keywords":{}}],["key",{"_index":1270,"title":{"258":{"position":[[11,3]]},"260":{"position":[[17,3]]},"261":{"position":[[25,3]]},"262":{"position":[[22,3]]},"263":{"position":[[24,3],[35,4]]},"264":{"position":[[22,3]]},"278":{"position":[[21,3],[32,4]]},"912":{"position":[[30,4]]}},"content":{"96":{"position":[[512,3]]},"153":{"position":[[77,3]]},"157":{"position":[[102,3],[152,3]]},"175":{"position":[[85,5]]},"181":{"position":[[151,3]]},"197":{"position":[[761,3]]},"199":{"position":[[415,3]]},"209":{"position":[[45,3]]},"252":{"position":[[18,3],[83,4],[99,4],[117,4],[131,4],[167,3],[181,3],[219,3],[240,3],[463,3],[1035,4],[1315,3],[2665,3]]},"260":{"position":[[303,4],[327,3],[549,3],[663,3],[714,4],[874,3],[899,3],[925,3],[954,3],[984,3],[1015,3],[1038,3],[1077,3],[1196,4],[2051,3],[2318,4],[2394,3],[2584,3]]},"261":{"position":[[15,4],[212,3],[233,3],[281,3],[285,4]]},"262":{"position":[[168,3]]},"263":{"position":[[231,3],[238,4],[693,4],[711,3],[741,5],[850,4],[928,3],[1077,3],[1084,4],[1380,4],[1398,3],[1428,5],[1541,4],[1623,3]]},"264":{"position":[[102,3],[168,3]]},"268":{"position":[[395,3],[430,3]]},"281":{"position":[[761,3]]},"320":{"position":[[87,4]]},"323":{"position":[[148,4],[172,4]]},"472":{"position":[[13,3],[38,3],[81,3]]},"473":{"position":[[13,3],[77,3]]},"492":{"position":[[782,3]]},"610":{"position":[[512,3]]},"653":{"position":[[77,3]]},"657":{"position":[[102,3],[152,3]]},"682":{"position":[[85,5]]},"688":{"position":[[151,3]]},"692":{"position":[[761,3]]},"694":{"position":[[415,3]]},"704":{"position":[[45,3]]},"773":{"position":[[148,4],[172,4]]},"791":{"position":[[16480,4],[16611,4],[16744,4],[16880,4],[31334,4],[31465,4],[31598,4],[31734,4]]},"797":{"position":[[87,4]]},"910":{"position":[[48,3]]},"912":{"position":[[47,3]]},"932":{"position":[[13,3],[38,3],[81,3]]},"933":{"position":[[13,3],[77,3]]}},"keywords":{}}],["key/valu",{"_index":1853,"title":{},"content":{"179":{"position":[[511,9]]},"181":{"position":[[600,9]]},"686":{"position":[[511,9]]},"688":{"position":[[600,9]]}},"keywords":{}}],["key</gpg.passphras",{"_index":2276,"title":{},"content":{"265":{"position":[[937,20]]}},"keywords":{}}],["key_id",{"_index":2288,"title":{},"content":{"268":{"position":[[470,9]]}},"keywords":{}}],["keyboard",{"_index":2197,"title":{},"content":{"260":{"position":[[1590,9],[1846,9]]}},"keywords":{}}],["keychain",{"_index":3440,"title":{},"content":{"791":{"position":[[2574,8],[18416,8]]}},"keywords":{}}],["keycloak",{"_index":1841,"title":{},"content":{"175":{"position":[[158,8]]},"682":{"position":[[158,8]]}},"keywords":{}}],["keyid</gpg.keynam",{"_index":2271,"title":{},"content":{"265":{"position":[[730,21]]}},"keywords":{}}],["keynam",{"_index":2272,"title":{},"content":{"265":{"position":[[763,7]]}},"keywords":{}}],["keys.if",{"_index":2247,"title":{},"content":{"264":{"position":[[51,7]]}},"keywords":{}}],["keyserv",{"_index":2219,"title":{},"content":{"261":{"position":[[219,9],[248,9],[347,10],[366,9]]}},"keywords":{}}],["keyservers.net/statu",{"_index":2223,"title":{},"content":{"261":{"position":[[397,23]]}},"keywords":{}}],["keysiz",{"_index":2180,"title":{},"content":{"260":{"position":[[764,7],[825,7]]}},"keywords":{}}],["keystor",{"_index":3181,"title":{},"content":{"492":{"position":[[514,8],[621,8],[683,8],[816,8],[966,8],[1100,8],[1231,8]]}},"keywords":{}}],["keytab",{"_index":1422,"title":{},"content":{"107":{"position":[[1029,7]]},"175":{"position":[[36,8]]},"621":{"position":[[1032,7]]},"682":{"position":[[36,8]]}},"keywords":{}}],["keyword",{"_index":2325,"title":{},"content":{"279":{"position":[[161,8]]},"284":{"position":[[168,9]]}},"keywords":{}}],["keyword:good",{"_index":2128,"title":{},"content":{"252":{"position":[[2531,12]]}},"keywords":{}}],["kick",{"_index":1044,"title":{},"content":{"83":{"position":[[269,5]]},"590":{"position":[[269,5]]}},"keywords":{}}],["kill",{"_index":3132,"title":{},"content":{"484":{"position":[[1041,4],[1254,4]]},"947":{"position":[[1041,4],[1254,4]]}},"keywords":{}}],["kind",{"_index":1361,"title":{"224":{"position":[[0,4]]},"315":{"position":[[33,4]]},"316":{"position":[[31,4]]},"726":{"position":[[0,4]]},"792":{"position":[[33,4]]},"793":{"position":[[31,4]]}},"content":{"102":{"position":[[2110,4],[2198,4]]},"107":{"position":[[11,5]]},"110":{"position":[[1285,5]]},"134":{"position":[[1861,5]]},"152":{"position":[[39,5],[312,5]]},"154":{"position":[[768,5]]},"158":{"position":[[1411,4]]},"180":{"position":[[383,4],[504,5]]},"224":{"position":[[0,4]]},"260":{"position":[[541,4]]},"305":{"position":[[222,6]]},"306":{"position":[[26,4]]},"309":{"position":[[95,5]]},"314":{"position":[[584,4],[724,5]]},"316":{"position":[[64,4],[183,4],[260,4],[319,6],[455,6],[512,6],[617,4]]},"495":{"position":[[19,4],[126,4],[187,4],[215,4],[272,4],[320,5],[754,4],[821,4]]},"496":{"position":[[194,4]]},"616":{"position":[[2122,4],[2211,4]]},"621":{"position":[[11,5]]},"624":{"position":[[1290,5]]},"652":{"position":[[39,5],[318,5]]},"654":{"position":[[768,5]]},"658":{"position":[[1411,4]]},"662":{"position":[[1861,5]]},"687":{"position":[[436,4],[557,5]]},"726":{"position":[[0,4]]},"756":{"position":[[222,6]]},"757":{"position":[[26,4]]},"781":{"position":[[95,5]]},"786":{"position":[[584,4],[724,5]]},"793":{"position":[[64,4],[183,4],[260,4],[319,6],[455,6],[512,6],[617,4]]}},"keywords":{}}],["kind.x",{"_index":2455,"title":{},"content":{"314":{"position":[[750,6]]},"495":{"position":[[346,6]]},"786":{"position":[[750,6]]}},"keywords":{}}],["kind=customresourcedefinit",{"_index":101,"title":{},"content":{"4":{"position":[[763,30],[834,29]]},"464":{"position":[[763,30],[834,29]]}},"keywords":{}}],["kind_version=v0.11.1",{"_index":2460,"title":{},"content":{"316":{"position":[[289,20]]},"793":{"position":[[289,20]]}},"keywords":{}}],["kindest/node:${kube_v",{"_index":2471,"title":{},"content":{"316":{"position":[[645,28]]},"793":{"position":[[645,28]]}},"keywords":{}}],["kindest/node:v1.15.6",{"_index":3201,"title":{},"content":{"495":{"position":[[782,20]]}},"keywords":{}}],["know",{"_index":1105,"title":{},"content":{"90":{"position":[[744,7]]},"160":{"position":[[1505,4]]},"233":{"position":[[26,4]]},"252":{"position":[[1130,4]]},"604":{"position":[[744,7]]},"667":{"position":[[1507,4]]},"737":{"position":[[26,4]]},"964":{"position":[[282,4]]}},"keywords":{}}],["knowledg",{"_index":1235,"title":{},"content":{"94":{"position":[[97,9]]},"608":{"position":[[97,9]]}},"keywords":{}}],["known",{"_index":476,"title":{},"content":{"53":{"position":[[562,5]]},"180":{"position":[[349,5]]},"687":{"position":[[370,5]]}},"keywords":{}}],["knox",{"_index":1574,"title":{},"content":{"130":{"position":[[413,4]]},"637":{"position":[[413,4]]}},"keywords":{}}],["krb5",{"_index":4226,"title":{},"content":{"969":{"position":[[794,4],[811,4]]}},"keywords":{}}],["kube_version=v1.15.12",{"_index":2470,"title":{},"content":{"316":{"position":[[595,21]]},"793":{"position":[[595,21]]}},"keywords":{}}],["kubectl",{"_index":54,"title":{},"content":{"4":{"position":[[91,7],[953,7],[995,7],[1055,7]]},"5":{"position":[[221,7]]},"238":{"position":[[596,7]]},"289":{"position":[[111,7]]},"306":{"position":[[197,7]]},"311":{"position":[[0,7]]},"313":{"position":[[746,7]]},"318":{"position":[[52,7]]},"319":{"position":[[80,7],[129,7]]},"320":{"position":[[92,7],[179,7]]},"321":{"position":[[0,7]]},"339":{"position":[[309,7]]},"340":{"position":[[4,7],[40,7]]},"341":{"position":[[151,7]]},"464":{"position":[[91,7],[953,7],[995,7],[1055,7]]},"465":{"position":[[221,7]]},"495":{"position":[[855,7]]},"496":{"position":[[205,7],[460,7]]},"744":{"position":[[943,7],[988,7],[1026,7],[1262,7],[1555,7]]},"752":{"position":[[111,7]]},"757":{"position":[[197,7]]},"783":{"position":[[0,7]]},"785":{"position":[[746,7]]},"795":{"position":[[52,7]]},"796":{"position":[[80,7],[129,7]]},"797":{"position":[[92,7],[179,7]]},"798":{"position":[[0,7]]},"814":{"position":[[4,7],[42,7]]},"815":{"position":[[42,7]]}},"keywords":{}}],["kubectlhelm",{"_index":4,"title":{},"content":{"1":{"position":[[0,11]]},"461":{"position":[[0,11]]}},"keywords":{}}],["kubeflow.org/v1",{"_index":1863,"title":{},"content":{"180":{"position":[[545,15]]},"687":{"position":[[598,15]]}},"keywords":{}}],["kubernet",{"_index":9,"title":{"2":{"position":[[7,10]]},"3":{"position":[[21,10]]},"191":{"position":[[12,10]]},"223":{"position":[[0,10]]},"310":{"position":[[20,10]]},"315":{"position":[[8,10]]},"316":{"position":[[7,10]]},"317":{"position":[[0,10]]},"338":{"position":[[10,10]]},"462":{"position":[[7,10]]},"463":{"position":[[21,10]]},"495":{"position":[[6,10]]},"719":{"position":[[12,10]]},"725":{"position":[[0,10]]},"782":{"position":[[20,10]]},"792":{"position":[[8,10]]},"793":{"position":[[7,10]]},"794":{"position":[[0,10]]},"812":{"position":[[10,10]]}},"content":{"2":{"position":[[77,10]]},"135":{"position":[[162,10]]},"152":{"position":[[896,10]]},"180":{"position":[[371,11]]},"223":{"position":[[0,10]]},"238":{"position":[[64,10]]},"309":{"position":[[55,10]]},"313":{"position":[[845,10]]},"314":{"position":[[602,10]]},"316":{"position":[[98,10],[200,10],[577,10]]},"327":{"position":[[727,11]]},"335":{"position":[[270,11]]},"338":{"position":[[198,10]]},"462":{"position":[[77,10]]},"495":{"position":[[35,10]]},"496":{"position":[[24,10]]},"652":{"position":[[1176,10]]},"663":{"position":[[162,10]]},"687":{"position":[[424,11]]},"725":{"position":[[0,10]]},"742":{"position":[[64,10]]},"744":{"position":[[452,10],[608,10]]},"781":{"position":[[55,10]]},"785":{"position":[[845,10]]},"786":{"position":[[602,10]]},"793":{"position":[[98,10],[200,10],[577,10]]},"805":{"position":[[270,11]]},"812":{"position":[[200,10]]}},"keywords":{}}],["kv",{"_index":1949,"title":{},"content":{"209":{"position":[[42,2]]},"704":{"position":[[42,2]]}},"keywords":{}}],["kvstor",{"_index":4326,"title":{},"content":{"990":{"position":[[512,7],[695,7],[900,7]]},"991":{"position":[[582,7],[767,7],[939,7]]}},"keywords":{}}],["kwarg",{"_index":4201,"title":{},"content":{"967":{"position":[[1398,9],[1821,10]]}},"keywords":{}}],["l2_reg",{"_index":1721,"title":{},"content":{"147":{"position":[[1486,9]]},"647":{"position":[[1486,9]]}},"keywords":{}}],["label",{"_index":302,"title":{},"content":{"29":{"position":[[532,6],[676,6],[1709,6],[1853,6]]},"82":{"position":[[140,6]]},"343":{"position":[[549,7],[619,5]]},"558":{"position":[[532,6],[676,6],[1709,6],[1853,6]]},"589":{"position":[[140,6]]},"817":{"position":[[567,7],[637,5]]},"967":{"position":[[1212,7]]}},"keywords":{}}],["labels=label",{"_index":4200,"title":{},"content":{"967":{"position":[[1383,14]]}},"keywords":{}}],["lak",{"_index":1164,"title":{},"content":{"91":{"position":[[85,5],[104,5]]},"605":{"position":[[85,5],[104,5]]}},"keywords":{}}],["land",{"_index":1163,"title":{},"content":{"91":{"position":[[72,4]]},"605":{"position":[[72,4]]}},"keywords":{}}],["languag",{"_index":1493,"title":{},"content":{"115":{"position":[[183,10]]},"433":{"position":[[25,8]]},"502":{"position":[[257,10],[3035,9]]},"599":{"position":[[183,10]]},"927":{"position":[[25,8]]}},"keywords":{}}],["larg",{"_index":1196,"title":{},"content":{"92":{"position":[[341,5]]},"121":{"position":[[342,6]]},"133":{"position":[[268,5]]},"485":{"position":[[50,6]]},"606":{"position":[[341,5]]},"628":{"position":[[342,6]]},"661":{"position":[[268,5]]},"948":{"position":[[50,6]]},"964":{"position":[[974,5]]}},"keywords":{}}],["last",{"_index":32,"title":{},"content":{"3":{"position":[[137,4]]},"79":{"position":[[403,4],[770,4]]},"90":{"position":[[301,4]]},"463":{"position":[[137,4]]},"604":{"position":[[301,4]]},"950":{"position":[[480,4]]}},"keywords":{}}],["lastupdatedtim",{"_index":354,"title":{},"content":{"31":{"position":[[391,17],[754,17],[1117,17],[1481,17]]},"32":{"position":[[399,17]]},"47":{"position":[[308,17],[486,17],[648,17]]},"48":{"position":[[324,17]]}},"keywords":{}}],["lat",{"_index":779,"title":{},"content":{"54":{"position":[[1724,6]]},"98":{"position":[[287,6]]},"217":{"position":[[20,5]]},"223":{"position":[[78,6]]},"226":{"position":[[7,5]]},"227":{"position":[[0,6]]},"229":{"position":[[7,6]]},"230":{"position":[[42,6]]},"231":{"position":[[61,6]]},"235":{"position":[[20,5]]},"306":{"position":[[287,6]]},"332":{"position":[[163,6]]},"439":{"position":[[1131,6]]},"500":{"position":[[393,6],[496,6]]},"502":{"position":[[3304,5]]},"612":{"position":[[287,6]]},"731":{"position":[[20,5]]},"739":{"position":[[20,5]]},"757":{"position":[[287,6]]},"778":{"position":[[73,6],[134,6]]},"779":{"position":[[216,6],[466,6]]},"789":{"position":[[93,6]]},"791":{"position":[[1055,6]]},"802":{"position":[[163,6]]},"923":{"position":[[190,6]]},"950":{"position":[[699,6]]},"951":{"position":[[88,6],[161,6],[251,6]]},"952":{"position":[[134,6],[212,6]]},"954":{"position":[[731,6]]},"955":{"position":[[90,6],[169,6],[310,6]]},"957":{"position":[[138,6],[241,6]]},"958":{"position":[[89,6]]},"960":{"position":[[36,6]]},"986":{"position":[[303,6]]}},"keywords":{}}],["launch",{"_index":1246,"title":{"183":{"position":[[10,8]]},"189":{"position":[[0,8]]},"190":{"position":[[0,8]]},"191":{"position":[[0,8]]},"192":{"position":[[0,8]]},"193":{"position":[[0,8]]},"194":{"position":[[0,8]]},"339":{"position":[[0,6]]},"488":{"position":[[0,6]]},"711":{"position":[[10,8]]},"717":{"position":[[0,8]]},"718":{"position":[[0,8]]},"719":{"position":[[0,8]]},"720":{"position":[[0,8]]},"721":{"position":[[0,8]]},"722":{"position":[[0,8]]},"723":{"position":[[0,8]]},"813":{"position":[[0,6]]},"977":{"position":[[0,6]]},"982":{"position":[[0,6]]},"987":{"position":[[0,6]]}},"content":{"94":{"position":[[515,6]]},"98":{"position":[[149,8]]},"110":{"position":[[1515,8]]},"113":{"position":[[301,6]]},"115":{"position":[[1153,6],[1292,6]]},"117":{"position":[[838,6],[1104,6]]},"121":{"position":[[131,8],[191,6]]},"122":{"position":[[45,8],[168,8]]},"125":{"position":[[584,6],[711,6]]},"129":{"position":[[680,9]]},"134":{"position":[[1006,8],[1234,9],[2250,8]]},"135":{"position":[[253,8]]},"139":{"position":[[935,7],[1644,8],[1700,8]]},"147":{"position":[[144,9]]},"189":{"position":[[14,8]]},"328":{"position":[[1526,8]]},"597":{"position":[[301,6]]},"599":{"position":[[1153,6],[1292,6]]},"601":{"position":[[838,6],[1104,6]]},"608":{"position":[[515,6]]},"612":{"position":[[149,8]]},"624":{"position":[[1520,8]]},"628":{"position":[[131,8],[191,6]]},"629":{"position":[[45,8],[168,8]]},"632":{"position":[[584,6],[711,6]]},"636":{"position":[[680,9]]},"639":{"position":[[935,7],[1652,8],[1713,8]]},"647":{"position":[[144,9]]},"662":{"position":[[1006,8],[1234,9],[2250,8]]},"663":{"position":[[253,8]]},"717":{"position":[[14,8]]},"742":{"position":[[674,8]]},"809":{"position":[[1546,8]]}},"keywords":{}}],["law",{"_index":2097,"title":{},"content":{"252":{"position":[[451,4]]},"260":{"position":[[517,4]]}},"keywords":{}}],["lay",{"_index":1374,"title":{},"content":{"103":{"position":[[239,5]]},"112":{"position":[[300,5]]},"343":{"position":[[402,7]]},"596":{"position":[[300,5]]},"617":{"position":[[239,5]]},"817":{"position":[[402,7]]}},"keywords":{}}],["layer/framework",{"_index":1263,"title":{},"content":{"96":{"position":[[336,15]]},"610":{"position":[[336,15]]}},"keywords":{}}],["layers.conv2d(32",{"_index":2657,"title":{},"content":{"343":{"position":[[838,17]]},"817":{"position":[[856,17]]}},"keywords":{}}],["layout",{"_index":1833,"title":{},"content":{"162":{"position":[[852,6]]},"669":{"position":[[1105,6]]}},"keywords":{}}],["lazi",{"_index":681,"title":{},"content":{"53":{"position":[[7796,4],[7875,4],[7982,4],[9308,4],[9615,4],[9717,4],[10069,4],[10247,4],[10484,4],[10601,4]]},"69":{"position":[[327,4]]},"578":{"position":[[327,4]]}},"keywords":{}}],["ldap",{"_index":3448,"title":{},"content":{"791":{"position":[[2662,4],[18504,4]]}},"keywords":{}}],["ldap).oth",{"_index":1407,"title":{},"content":{"107":{"position":[[304,11]]},"621":{"position":[[305,11]]}},"keywords":{}}],["lead",{"_index":1007,"title":{},"content":{"79":{"position":[[1920,6]]},"136":{"position":[[381,4]]},"211":{"position":[[284,6]]},"484":{"position":[[311,5]]},"664":{"position":[[381,4]]},"706":{"position":[[284,6]]},"947":{"position":[[311,5]]}},"keywords":{}}],["leak",{"_index":1510,"title":{},"content":{"117":{"position":[[43,4]]},"601":{"position":[[43,4]]}},"keywords":{}}],["learn",{"_index":1074,"title":{"91":{"position":[[8,8]]},"605":{"position":[[8,8]]},"963":{"position":[[43,8]]}},"content":{"90":{"position":[[30,8],[99,8],[251,8],[381,8],[449,8],[1579,6],[1598,7],[1747,8],[1816,5],[1943,8],[2100,8],[2226,8],[2699,8],[2838,8],[2924,8]]},"92":{"position":[[114,7]]},"93":{"position":[[44,8],[276,8],[399,8],[921,8]]},"94":{"position":[[71,5],[148,8]]},"98":{"position":[[64,8],[163,8]]},"99":{"position":[[97,8]]},"177":{"position":[[15,8],[80,8]]},"179":{"position":[[50,8],[149,8]]},"197":{"position":[[665,8]]},"302":{"position":[[473,8]]},"498":{"position":[[48,8]]},"502":{"position":[[211,8]]},"604":{"position":[[30,8],[99,8],[251,8],[381,8],[449,8],[1579,6],[1598,7],[1747,8],[1816,5],[1943,8],[2100,8],[2226,8],[2699,8],[2838,8],[2924,8]]},"606":{"position":[[114,7]]},"607":{"position":[[44,8],[276,8],[399,8],[921,8]]},"608":{"position":[[71,5],[148,8]]},"612":{"position":[[64,8],[163,8]]},"613":{"position":[[97,8]]},"684":{"position":[[15,8],[80,8]]},"686":{"position":[[50,8],[149,8]]},"692":{"position":[[665,8]]},"770":{"position":[[473,8]]},"788":{"position":[[41,8]]},"963":{"position":[[48,8]]},"965":{"position":[[331,8]]},"992":{"position":[[68,8]]}},"keywords":{}}],["learning_r",{"_index":202,"title":{},"content":{"15":{"position":[[224,16],[297,13]]},"18":{"position":[[221,16],[294,13]]},"410":{"position":[[192,16],[265,13],[1424,13]]},"412":{"position":[[426,13]]},"415":{"position":[[197,16],[270,13],[1454,13]]},"418":{"position":[[450,13]]},"544":{"position":[[224,16],[297,13]]},"547":{"position":[[221,16],[294,13]]},"863":{"position":[[192,16],[265,13],[1424,13]]},"865":{"position":[[426,13]]},"868":{"position":[[197,16],[270,13],[1454,13]]},"871":{"position":[[450,13]]},"911":{"position":[[157,17]]},"965":{"position":[[5198,13],[14626,13],[15201,13]]}},"keywords":{}}],["learning_rate\":\"0.01",{"_index":238,"title":{},"content":{"20":{"position":[[145,23]]},"421":{"position":[[94,23]]},"549":{"position":[[145,23]]},"874":{"position":[[94,23]]}},"keywords":{}}],["learning_rate=0.01",{"_index":245,"title":{},"content":{"22":{"position":[[258,18],[1016,18]]},"23":{"position":[[258,18],[1163,18]]},"24":{"position":[[525,18]]},"25":{"position":[[558,18]]},"26":{"position":[[266,18],[869,18]]},"27":{"position":[[561,18]]},"178":{"position":[[337,18]]},"366":{"position":[[224,18]]},"369":{"position":[[224,18]]},"377":{"position":[[225,18]]},"405":{"position":[[206,18]]},"424":{"position":[[443,18]]},"425":{"position":[[450,18]]},"551":{"position":[[258,18],[1016,18]]},"552":{"position":[[258,18],[1163,18]]},"553":{"position":[[525,18]]},"554":{"position":[[558,18]]},"555":{"position":[[266,18],[869,18]]},"556":{"position":[[561,18]]},"685":{"position":[[337,18]]},"840":{"position":[[224,18]]},"843":{"position":[[224,18]]},"851":{"position":[[225,18]]},"894":{"position":[[206,18]]},"898":{"position":[[443,18]]},"899":{"position":[[450,18]]}},"keywords":{}}],["learning_rate={{learning_r",{"_index":217,"title":{},"content":{"15":{"position":[[657,31]]},"18":{"position":[[654,31]]},"410":{"position":[[625,31]]},"415":{"position":[[630,31]]},"544":{"position":[[657,31]]},"547":{"position":[[654,31]]},"863":{"position":[[625,31]]},"868":{"position":[[630,31]]}},"keywords":{}}],["learning_rate\\u003d0.01",{"_index":2757,"title":{},"content":{"366":{"position":[[1057,23]]},"369":{"position":[[1177,23]]},"371":{"position":[[650,23],[1658,23]]},"374":{"position":[[594,23]]},"377":{"position":[[1088,23]]},"380":{"position":[[569,23]]},"421":{"position":[[748,23]]},"840":{"position":[[1057,23]]},"843":{"position":[[1177,23]]},"845":{"position":[[650,23],[1658,23]]},"848":{"position":[[594,23]]},"851":{"position":[[1088,23]]},"854":{"position":[[569,23]]},"874":{"position":[[748,23]]}},"keywords":{}}],["learning_rate\\u003d{{learning_r",{"_index":2866,"title":{},"content":{"410":{"position":[[2423,36]]},"412":{"position":[[1425,36]]},"415":{"position":[[2453,36]]},"418":{"position":[[1449,36]]},"863":{"position":[[2423,36]]},"865":{"position":[[1425,36]]},"868":{"position":[[2453,36]]},"871":{"position":[[1449,36]]}},"keywords":{}}],["left",{"_index":973,"title":{},"content":{"77":{"position":[[545,4]]},"139":{"position":[[1168,4]]},"327":{"position":[[82,4]]},"346":{"position":[[228,4]]},"586":{"position":[[545,4]]},"639":{"position":[[1173,4]]},"808":{"position":[[82,4]]}},"keywords":{}}],["left.search",{"_index":2324,"title":{},"content":{"279":{"position":[[135,11]]},"284":{"position":[[142,11]]}},"keywords":{}}],["less",{"_index":1579,"title":{},"content":{"132":{"position":[[1039,4]]},"660":{"position":[[1039,4]]}},"keywords":{}}],["let'",{"_index":1160,"title":{},"content":{"90":{"position":[[2902,5]]},"132":{"position":[[6,5]]},"286":{"position":[[463,5]]},"604":{"position":[[2902,5]]},"660":{"position":[[6,5]]}},"keywords":{}}],["level",{"_index":595,"title":{"94":{"position":[[57,5]]},"608":{"position":[[57,5]]}},"content":{"53":{"position":[[3810,5]]},"90":{"position":[[141,6],[1881,5]]},"94":{"position":[[421,5]]},"500":{"position":[[46,5]]},"502":{"position":[[1029,5],[1401,5]]},"604":{"position":[[141,6],[1881,5]]},"608":{"position":[[421,5]]},"907":{"position":[[43,5]]}},"keywords":{}}],["leverag",{"_index":1078,"title":{},"content":{"90":{"position":[[82,8]]},"604":{"position":[[82,8]]}},"keywords":{}}],["lfgmd",{"_index":83,"title":{},"content":{"4":{"position":[[439,5]]},"464":{"position":[[439,5]]}},"keywords":{}}],["lgtm",{"_index":889,"title":{},"content":{"69":{"position":[[158,7],[177,4],[246,7]]},"578":{"position":[[158,7],[177,4],[246,7]]}},"keywords":{}}],["liabil",{"_index":3339,"title":{},"content":{"779":{"position":[[365,10]]},"958":{"position":[[4,10]]},"973":{"position":[[4,10]]}},"keywords":{}}],["lib",{"_index":1976,"title":{},"content":{"212":{"position":[[297,3]]},"707":{"position":[[297,3]]}},"keywords":{}}],["libarchive1",{"_index":3429,"title":{},"content":{"791":{"position":[[2444,11],[18286,11]]}},"keywords":{}}],["libari",{"_index":1651,"title":{},"content":{"139":{"position":[[807,8]]},"639":{"position":[[807,8]]}},"keywords":{}}],["libatm1",{"_index":3408,"title":{},"content":{"791":{"position":[[2127,7],[3019,7],[3540,7],[17969,7],[18843,7],[19364,7]]}},"keywords":{}}],["libatm1:amd64",{"_index":3579,"title":{},"content":{"791":{"position":[[7008,14],[7707,13],[13204,13],[22726,14],[23425,13],[28753,13]]}},"keywords":{}}],["libatm1_1%3a2.5.1",{"_index":3596,"title":{},"content":{"791":{"position":[[7657,21],[23375,21]]}},"keywords":{}}],["libc",{"_index":3656,"title":{},"content":{"791":{"position":[[13163,4],[17401,4],[28712,4],[32255,4]]}},"keywords":{}}],["libdn",{"_index":3409,"title":{},"content":{"791":{"position":[[2135,6],[3027,6],[4373,6],[8947,6],[8985,10],[9061,6],[13688,6],[17977,6],[18851,6],[20197,6],[24665,6],[24703,10],[24779,6],[29237,6]]}},"keywords":{}}],["libfreetype6",{"_index":4222,"title":{},"content":{"969":{"position":[[533,12]]}},"keywords":{}}],["libgomp1",{"_index":3844,"title":{},"content":{"950":{"position":[[650,8]]}},"keywords":{}}],["libisc",{"_index":3411,"title":{},"content":{"791":{"position":[[2152,6],[3044,6],[4247,6],[8741,6],[8779,10],[8855,6],[13625,6],[17994,6],[18868,6],[20071,6],[24459,6],[24497,10],[24573,6],[29174,6]]}},"keywords":{}}],["libjpeg",{"_index":3867,"title":{},"content":{"954":{"position":[[590,7]]}},"keywords":{}}],["liblockfil",{"_index":3413,"title":{},"content":{"791":{"position":[[2169,11],[3061,11],[3722,11],[7926,11],[7963,15],[8021,11],[13286,11],[18011,11],[18885,11],[19546,11],[23644,11],[23681,15],[23739,11],[28835,11]]}},"keywords":{}}],["liblockfile1",{"_index":3414,"title":{},"content":{"791":{"position":[[2185,12],[3077,12],[3825,12],[18027,12],[18901,12],[19649,12]]}},"keywords":{}}],["liblockfile1:amd64",{"_index":3603,"title":{},"content":{"791":{"position":[[8097,19],[8192,18],[13333,18],[23815,19],[23910,18],[28882,18]]}},"keywords":{}}],["liblockfile1_1.09",{"_index":3604,"title":{},"content":{"791":{"position":[[8137,21],[23855,21]]}},"keywords":{}}],["libmnl0",{"_index":3415,"title":{},"content":{"791":{"position":[[2198,7],[3090,7],[3633,7],[18040,7],[18914,7],[19457,7]]}},"keywords":{}}],["libmnl0:amd64",{"_index":3598,"title":{},"content":{"791":{"position":[[7779,14],[7858,13],[13247,13],[23497,14],[23576,13],[28796,13]]}},"keywords":{}}],["libmnl0_1.0.3",{"_index":3599,"title":{},"content":{"791":{"position":[[7814,17],[23532,17]]}},"keywords":{}}],["libopenbla",{"_index":3845,"title":{},"content":{"950":{"position":[[659,11]]}},"keywords":{}}],["libopencv",{"_index":3846,"title":{},"content":{"950":{"position":[[675,9]]}},"keywords":{}}],["libpam",{"_index":3439,"title":{},"content":{"791":{"position":[[2563,6],[18405,6]]},"969":{"position":[[804,6]]}},"keywords":{}}],["libpng",{"_index":3868,"title":{},"content":{"954":{"position":[[604,6]]},"969":{"position":[[552,6]]}},"keywords":{}}],["librari",{"_index":1098,"title":{"143":{"position":[[30,9]]},"179":{"position":[[0,7]]},"212":{"position":[[22,7]]},"643":{"position":[[30,9]]},"686":{"position":[[0,7]]},"707":{"position":[[22,7]]}},"content":{"90":{"position":[[600,10],[1359,9],[1539,9],[1828,9],[2035,7]]},"102":{"position":[[706,8],[774,9],[1352,8],[1404,7],[1848,9],[1964,7],[2069,8]]},"103":{"position":[[65,9],[307,9],[580,7]]},"107":{"position":[[164,10],[443,9]]},"112":{"position":[[65,9],[430,9],[707,7],[776,10],[1269,7],[1674,7],[1944,7],[2105,9]]},"117":{"position":[[460,9]]},"128":{"position":[[321,10],[406,9]]},"129":{"position":[[128,7],[508,9]]},"139":{"position":[[1473,9],[1581,9]]},"147":{"position":[[1099,8],[1183,7]]},"178":{"position":[[88,7]]},"179":{"position":[[4,7]]},"181":{"position":[[484,7]]},"186":{"position":[[958,7]]},"199":{"position":[[105,8]]},"202":{"position":[[76,8]]},"207":{"position":[[387,8]]},"208":{"position":[[615,7]]},"263":{"position":[[38,7],[124,7]]},"276":{"position":[[43,7]]},"327":{"position":[[520,9]]},"596":{"position":[[65,9],[430,9],[707,7],[776,10],[1269,7],[1674,7],[1944,7],[2105,9]]},"601":{"position":[[460,9]]},"604":{"position":[[600,10],[1359,9],[1539,9],[1828,9],[2035,7]]},"616":{"position":[[711,8],[779,9],[1364,8],[1416,7],[1860,9],[1976,7],[2081,8]]},"617":{"position":[[65,9],[307,9],[580,7]]},"621":{"position":[[164,10],[444,9]]},"635":{"position":[[321,10],[406,9]]},"636":{"position":[[128,7],[508,9]]},"639":{"position":[[1480,9],[1588,9]]},"647":{"position":[[1099,8],[1183,7]]},"685":{"position":[[88,7]]},"686":{"position":[[4,7]]},"688":{"position":[[484,7]]},"694":{"position":[[105,8]]},"697":{"position":[[76,8]]},"702":{"position":[[387,8]]},"703":{"position":[[615,7]]},"714":{"position":[[958,7]]},"777":{"position":[[52,9],[175,9],[288,9]]},"779":{"position":[[299,10]]},"808":{"position":[[520,9]]},"950":{"position":[[54,9],[149,9],[269,9]]},"952":{"position":[[295,10]]},"954":{"position":[[56,9],[155,9],[275,9]]},"969":{"position":[[57,9],[161,9],[275,9]]},"979":{"position":[[85,9]]},"984":{"position":[[82,9]]},"989":{"position":[[80,9]]}},"keywords":{}}],["libraries.pytorch",{"_index":3905,"title":{},"content":{"957":{"position":[[223,17]]}},"keywords":{}}],["libraries.tf",{"_index":4243,"title":{},"content":{"972":{"position":[[189,12]]}},"keywords":{}}],["libraries/dataset",{"_index":1810,"title":{},"content":{"160":{"position":[[249,18]]},"667":{"position":[[249,18]]}},"keywords":{}}],["libraries/dep",{"_index":1613,"title":{},"content":{"134":{"position":[[631,23]]},"662":{"position":[[631,23]]}},"keywords":{}}],["libraryspec",{"_index":1845,"title":{},"content":{"178":{"position":[[160,12]]},"685":{"position":[[160,12]]}},"keywords":{}}],["libsasl2",{"_index":3451,"title":{},"content":{"791":{"position":[[2690,8],[18532,8]]}},"keywords":{}}],["libsvm",{"_index":1139,"title":{},"content":{"90":{"position":[[2052,7]]},"102":{"position":[[1626,8]]},"157":{"position":[[558,8]]},"604":{"position":[[2052,7]]},"616":{"position":[[1638,8]]},"657":{"position":[[558,8]]}},"keywords":{}}],["libtool",{"_index":3304,"title":{},"content":{"777":{"position":[[637,7]]}},"keywords":{}}],["libxmuu1",{"_index":3416,"title":{},"content":{"791":{"position":[[2206,8],[3098,8],[4910,8],[18048,8],[18922,8],[20734,8]]}},"keywords":{}}],["libxmuu1:amd64",{"_index":3620,"title":{},"content":{"791":{"position":[[9825,15],[9910,14],[13935,14],[25543,15],[25628,14],[29484,14]]}},"keywords":{}}],["libxmuu1_2%3a1.1.2",{"_index":3621,"title":{},"content":{"791":{"position":[[9861,22],[25579,22]]}},"keywords":{}}],["libxtables11",{"_index":3417,"title":{},"content":{"791":{"position":[[2215,12],[3107,12],[4724,12],[18057,12],[18931,12],[20548,12]]}},"keywords":{}}],["libxtables11:amd64",{"_index":3616,"title":{},"content":{"791":{"position":[[9515,19],[9611,18],[13855,18],[25233,19],[25329,18],[29404,18]]}},"keywords":{}}],["libxtables11_1.6.0",{"_index":3617,"title":{},"content":{"791":{"position":[[9555,22],[25273,22]]}},"keywords":{}}],["libzmq3",{"_index":4223,"title":{},"content":{"969":{"position":[[565,7]]}},"keywords":{}}],["lic",{"_index":562,"title":{"87":{"position":[[0,7]]},"220":{"position":[[22,8]]},"594":{"position":[[0,7]]}},"content":{"53":{"position":[[2765,7],[4265,7]]},"56":{"position":[[34,7],[112,8]]},"87":{"position":[[46,8],[63,7]]},"254":{"position":[[157,7],[250,7]]},"255":{"position":[[224,7]]},"565":{"position":[[34,7],[112,8]]},"594":{"position":[[46,8],[63,7]]},"734":{"position":[[22,8]]}},"keywords":{}}],["lif",{"_index":1757,"title":{},"content":{"153":{"position":[[34,4]]},"653":{"position":[[34,4]]}},"keywords":{}}],["lifecycl",{"_index":2402,"title":{},"content":{"302":{"position":[[518,9]]},"770":{"position":[[518,9]]}},"keywords":{}}],["lightweight",{"_index":1755,"title":{},"content":{"152":{"position":[[1361,11]]},"652":{"position":[[1641,11]]}},"keywords":{}}],["limit",{"_index":567,"title":{},"content":{"53":{"position":[[3062,7]]},"122":{"position":[[99,6]]},"181":{"position":[[677,5]]},"250":{"position":[[58,7]]},"629":{"position":[[99,6]]},"688":{"position":[[677,5]]}},"keywords":{}}],["lin",{"_index":641,"title":{},"content":{"53":{"position":[[6073,4]]},"54":{"position":[[811,5]]},"79":{"position":[[1085,5]]},"211":{"position":[[1114,4]]},"335":{"position":[[79,5]]},"439":{"position":[[1303,4]]},"484":{"position":[[758,5],[777,5]]},"706":{"position":[[1114,4]]},"805":{"position":[[79,5]]},"947":{"position":[[758,5],[777,5]]},"961":{"position":[[747,4]]},"963":{"position":[[228,4]]},"967":{"position":[[107,4],[223,4],[314,4],[460,4],[625,4],[768,4],[923,4],[1052,4],[1173,4],[1336,4],[1432,4],[1613,4],[1759,4],[1919,4],[2082,4]]},"980":{"position":[[1035,5]]},"985":{"position":[[895,5]]},"990":{"position":[[1189,5]]}},"keywords":{}}],["link",{"_index":1021,"title":{"285":{"position":[[28,4]]}},"content":{"81":{"position":[[195,4]]},"86":{"position":[[485,5]]},"161":{"position":[[996,4]]},"257":{"position":[[273,4]]},"279":{"position":[[338,4],[398,4],[444,4]]},"498":{"position":[[169,5]]},"500":{"position":[[180,5]]},"668":{"position":[[996,4]]},"980":{"position":[[993,5]]},"985":{"position":[[853,5]]},"990":{"position":[[38,4],[1147,5]]}},"keywords":{}}],["link=submarin",{"_index":3149,"title":{},"content":{"488":{"position":[[324,14]]}},"keywords":{}}],["lint",{"_index":904,"title":{},"content":{"71":{"position":[[92,4]]},"435":{"position":[[241,5]]},"437":{"position":[[207,7],[339,6]]},"439":{"position":[[1221,4]]},"580":{"position":[[92,4]]},"919":{"position":[[241,5],[247,5],[325,4]]},"921":{"position":[[207,7],[339,6]]}},"keywords":{}}],["linux",{"_index":2464,"title":{},"content":{"316":{"position":[[405,5]]},"793":{"position":[[405,5]]},"954":{"position":[[738,5]]}},"keywords":{}}],["linux_x86_64.whl",{"_index":4234,"title":{},"content":{"969":{"position":[[1191,16]]}},"keywords":{}}],["list",{"_index":112,"title":{"10":{"position":[[0,4]]},"16":{"position":[[0,4]]},"24":{"position":[[0,4]]},"28":{"position":[[0,4]]},"31":{"position":[[0,4]]},"39":{"position":[[0,4]]},"47":{"position":[[0,4]]},"86":{"position":[[8,5]]},"214":{"position":[[0,6]]},"352":{"position":[[0,4]]},"370":{"position":[[0,4]]},"381":{"position":[[0,4]]},"390":{"position":[[0,4]]},"411":{"position":[[0,4]]},"449":{"position":[[0,4]]},"453":{"position":[[0,4]]},"457":{"position":[[0,4]]},"474":{"position":[[111,4],[136,4]]},"539":{"position":[[0,4]]},"545":{"position":[[0,4]]},"553":{"position":[[0,4]]},"557":{"position":[[0,4]]},"561":{"position":[[0,4]]},"593":{"position":[[8,5]]},"709":{"position":[[0,6]]},"826":{"position":[[0,4]]},"844":{"position":[[0,4]]},"855":{"position":[[0,4]]},"864":{"position":[[0,4]]},"879":{"position":[[0,4]]}},"content":{"5":{"position":[[2,7]]},"31":{"position":[[185,5]]},"47":{"position":[[175,5]]},"53":{"position":[[1380,5],[3145,6],[3363,4],[4205,6],[5915,4],[6028,5]]},"54":{"position":[[947,5],[1029,4],[1480,5],[2175,5],[2259,6]]},"74":{"position":[[403,4],[502,4]]},"79":{"position":[[194,4],[693,4]]},"86":{"position":[[76,6]]},"101":{"position":[[292,4]]},"121":{"position":[[667,4]]},"157":{"position":[[42,4]]},"206":{"position":[[149,5]]},"214":{"position":[[0,6]]},"251":{"position":[[325,6]]},"261":{"position":[[10,4],[376,4]]},"263":{"position":[[613,4],[1300,4]]},"327":{"position":[[785,4]]},"346":{"position":[[237,5]]},"350":{"position":[[376,4],[440,4]]},"427":{"position":[[0,4],[109,4]]},"430":{"position":[[0,4],[96,4]]},"445":{"position":[[17,4]]},"449":{"position":[[10,4]]},"450":{"position":[[75,4]]},"453":{"position":[[10,4]]},"454":{"position":[[81,4]]},"457":{"position":[[10,4]]},"465":{"position":[[2,7]]},"489":{"position":[[155,4],[185,4],[268,4],[300,4]]},"500":{"position":[[143,5],[268,5],[375,5]]},"583":{"position":[[403,4],[502,4]]},"593":{"position":[[76,6]]},"615":{"position":[[292,4]]},"628":{"position":[[667,4]]},"657":{"position":[[42,4]]},"701":{"position":[[149,5]]},"709":{"position":[[0,6]]},"791":{"position":[[1925,8],[17502,8],[17767,8],[32356,8]]},"824":{"position":[[376,4],[440,4]]},"901":{"position":[[0,4],[109,4]]},"904":{"position":[[0,4],[96,4]]}},"keywords":{}}],["list<experimenttemplateparamspec",{"_index":2839,"title":{},"content":{"409":{"position":[[198,33]]},"414":{"position":[[207,33]]},"862":{"position":[[198,33]]},"867":{"position":[[207,33]]}},"keywords":{}}],["list<str",{"_index":2706,"title":{},"content":{"350":{"position":[[309,12],[363,12],[427,12]]},"824":{"position":[[309,12],[363,12],[427,12]]}},"keywords":{}}],["list[dict",{"_index":2886,"title":{"427":{"position":[[48,10]]},"430":{"position":[[25,10]]},"901":{"position":[[48,10]]},"904":{"position":[[25,10]]}},"content":{},"keywords":{}}],["list_experiments(statu",{"_index":2884,"title":{"427":{"position":[[0,24]]},"901":{"position":[[0,24]]}},"content":{},"keywords":{}}],["list_log(statu",{"_index":2897,"title":{"430":{"position":[[0,16]]},"904":{"position":[[0,16]]}},"content":{},"keywords":{}}],["listreview",{"_index":773,"title":{},"content":{"54":{"position":[[1594,10]]}},"keywords":{}}],["littl",{"_index":1273,"title":{"98":{"position":[[2,6]]},"612":{"position":[[2,6]]}},"content":{},"keywords":{}}],["liv",{"_index":2073,"title":{},"content":{"246":{"position":[[104,4]]},"749":{"position":[[104,4]]}},"keywords":{}}],["ln",{"_index":3311,"title":{},"content":{"777":{"position":[[778,2],[1484,2]]},"950":{"position":[[1510,2]]},"954":{"position":[[1908,2]]},"969":{"position":[[1545,2]]}},"keywords":{}}],["lo",{"_index":2461,"title":{},"content":{"316":{"position":[[316,2]]},"793":{"position":[[316,2]]}},"keywords":{}}],["load",{"_index":1586,"title":{},"content":{"132":{"position":[[1657,4]]},"660":{"position":[[1657,4]]},"915":{"position":[[0,4]]}},"keywords":{}}],["lobbi",{"_index":698,"title":{},"content":{"53":{"position":[[8444,5]]}},"keywords":{}}],["local",{"_index":1,"title":{"0":{"position":[[10,5]]},"60":{"position":[[35,5]]},"62":{"position":[[16,5]]},"64":{"position":[[20,5]]},"65":{"position":[[17,5]]},"246":{"position":[[0,5]]},"249":{"position":[[56,5]]},"277":{"position":[[30,5]]},"289":{"position":[[13,7]]},"306":{"position":[[13,7]]},"460":{"position":[[10,5]]},"569":{"position":[[35,5]]},"571":{"position":[[16,5]]},"573":{"position":[[20,5]]},"574":{"position":[[17,5]]},"749":{"position":[[0,5]]},"752":{"position":[[13,7]]},"757":{"position":[[13,7]]}},"content":{"62":{"position":[[25,5]]},"64":{"position":[[135,5]]},"127":{"position":[[164,13]]},"133":{"position":[[221,6],[312,5],[640,13]]},"134":{"position":[[1050,12],[1180,8],[1551,9],[2040,8],[2293,8]]},"139":{"position":[[1709,8]]},"148":{"position":[[328,5],[696,5]]},"151":{"position":[[491,5]]},"180":{"position":[[316,7]]},"210":{"position":[[240,5]]},"236":{"position":[[276,5]]},"238":{"position":[[58,5]]},"239":{"position":[[54,5]]},"246":{"position":[[22,5]]},"252":{"position":[[139,5]]},"253":{"position":[[34,8]]},"288":{"position":[[155,7]]},"289":{"position":[[36,8],[80,5]]},"305":{"position":[[153,7]]},"306":{"position":[[335,5]]},"314":{"position":[[596,5]]},"316":{"position":[[125,5]]},"335":{"position":[[222,5]]},"438":{"position":[[309,6]]},"440":{"position":[[4,5],[126,5]]},"441":{"position":[[309,5]]},"495":{"position":[[59,5]]},"496":{"position":[[379,5]]},"502":{"position":[[914,7]]},"571":{"position":[[25,5]]},"573":{"position":[[135,5]]},"634":{"position":[[164,13]]},"639":{"position":[[1722,8]]},"648":{"position":[[328,5],[696,5]]},"651":{"position":[[491,5]]},"661":{"position":[[221,6],[312,5],[640,13]]},"662":{"position":[[1050,12],[1180,8],[1551,9],[2040,8],[2293,8]]},"687":{"position":[[337,7]]},"705":{"position":[[240,5]]},"740":{"position":[[279,5]]},"742":{"position":[[58,5]]},"744":{"position":[[446,5]]},"749":{"position":[[22,5]]},"751":{"position":[[155,7]]},"752":{"position":[[36,8],[80,5]]},"756":{"position":[[153,7]]},"757":{"position":[[335,5]]},"786":{"position":[[596,5]]},"793":{"position":[[125,5]]},"805":{"position":[[222,5]]},"909":{"position":[[253,5]]},"922":{"position":[[309,6]]},"924":{"position":[[4,5],[126,5]]},"925":{"position":[[309,5]]},"961":{"position":[[499,5]]},"964":{"position":[[1920,6]]}},"keywords":{}}],["local/eb",{"_index":1598,"title":{},"content":{"133":{"position":[[107,10]]},"661":{"position":[[107,10]]}},"keywords":{}}],["localhost",{"_index":2596,"title":{},"content":{"334":{"position":[[78,10]]},"445":{"position":[[152,12]]},"791":{"position":[[14366,9],[29915,9]]},"804":{"position":[[78,10]]}},"keywords":{}}],["localhost.xxx",{"_index":3669,"title":{},"content":{"791":{"position":[[14349,14],[29898,14]]}},"keywords":{}}],["localhost:8000",{"_index":4161,"title":{},"content":{"965":{"position":[[17217,15]]}},"keywords":{}}],["localize_artifact",{"_index":1706,"title":{},"content":{"147":{"position":[[180,18],[316,18],[814,18]]},"647":{"position":[[180,18],[316,18],[814,18]]}},"keywords":{}}],["locat",{"_index":1328,"title":{"147":{"position":[[49,8]]},"647":{"position":[[49,8]]}},"content":{"102":{"position":[[969,8]]},"147":{"position":[[28,7]]},"160":{"position":[[1363,9]]},"199":{"position":[[277,8]]},"616":{"position":[[974,8]]},"647":{"position":[[28,7]]},"667":{"position":[[1364,9]]},"694":{"position":[[277,8]]}},"keywords":{}}],["lock",{"_index":2236,"title":{},"content":{"263":{"position":[[499,4]]},"277":{"position":[[114,4]]}},"keywords":{}}],["log",{"_index":284,"title":{"28":{"position":[[16,3]]},"29":{"position":[[15,3]]},"381":{"position":[[16,3]]},"383":{"position":[[15,3]]},"483":{"position":[[34,3]]},"557":{"position":[[16,3]]},"558":{"position":[[15,3]]},"855":{"position":[[16,3]]},"857":{"position":[[15,3]]},"946":{"position":[[34,3]]}},"content":{"91":{"position":[[58,5]]},"118":{"position":[[244,5]]},"132":{"position":[[128,5],[1085,4]]},"133":{"position":[[263,4]]},"135":{"position":[[81,4],[92,4],[119,4],[173,4]]},"142":{"position":[[45,5]]},"148":{"position":[[407,5]]},"155":{"position":[[397,5]]},"279":{"position":[[41,3]]},"284":{"position":[[41,3]]},"404":{"position":[[97,4]]},"423":{"position":[[69,5]]},"429":{"position":[[15,4],[75,4],[162,3],[255,4]]},"430":{"position":[[16,4],[125,5],[139,4]]},"431":{"position":[[205,5],[219,4]]},"472":{"position":[[0,3]]},"473":{"position":[[0,3],[157,3]]},"483":{"position":[[28,3]]},"498":{"position":[[83,3],[577,3]]},"499":{"position":[[20,4]]},"605":{"position":[[58,5]]},"625":{"position":[[244,5]]},"642":{"position":[[45,5]]},"648":{"position":[[407,5]]},"655":{"position":[[404,5]]},"660":{"position":[[128,5],[1085,4]]},"661":{"position":[[263,4]]},"663":{"position":[[81,4],[92,4],[119,4],[173,4]]},"893":{"position":[[97,4]]},"897":{"position":[[69,5]]},"903":{"position":[[15,4],[75,4],[162,3],[255,4]]},"904":{"position":[[16,4],[125,5],[139,4]]},"905":{"position":[[205,5],[219,4]]},"907":{"position":[[57,7]]},"909":{"position":[[65,7]]},"910":{"position":[[0,3]]},"911":{"position":[[0,3]]},"912":{"position":[[0,3]]},"913":{"position":[[0,3],[154,3],[212,6]]},"932":{"position":[[0,3]]},"933":{"position":[[0,3],[157,3]]},"946":{"position":[[28,3]]},"966":{"position":[[544,3]]},"980":{"position":[[1686,4],[1829,4],[1976,4]]},"985":{"position":[[1546,4],[1689,4],[1836,4]]},"990":{"position":[[2254,4],[2404,4],[2551,4],[2698,4],[2845,4]]}},"keywords":{}}],["log/metr",{"_index":1731,"title":{},"content":{"148":{"position":[[589,12]]},"648":{"position":[[589,12]]}},"keywords":{}}],["log_dir=$(submarine_tensorboard_log_dir",{"_index":2836,"title":{},"content":{"405":{"position":[[163,40]]},"894":{"position":[[163,40]]}},"keywords":{}}],["log_dir=/train/log",{"_index":216,"title":{},"content":{"15":{"position":[[636,18]]},"18":{"position":[[633,18]]},"22":{"position":[[237,18],[995,18]]},"23":{"position":[[237,18],[1142,18]]},"24":{"position":[[504,18]]},"25":{"position":[[537,18]]},"26":{"position":[[245,18],[848,18]]},"27":{"position":[[540,18]]},"178":{"position":[[316,18]]},"366":{"position":[[203,18]]},"369":{"position":[[203,18]]},"377":{"position":[[204,18]]},"410":{"position":[[604,18]]},"415":{"position":[[609,18]]},"424":{"position":[[422,18]]},"425":{"position":[[429,18]]},"544":{"position":[[636,18]]},"547":{"position":[[633,18]]},"551":{"position":[[237,18],[995,18]]},"552":{"position":[[237,18],[1142,18]]},"553":{"position":[[504,18]]},"554":{"position":[[537,18]]},"555":{"position":[[245,18],[848,18]]},"556":{"position":[[540,18]]},"685":{"position":[[316,18]]},"840":{"position":[[203,18]]},"843":{"position":[[203,18]]},"851":{"position":[[204,18]]},"863":{"position":[[604,18]]},"868":{"position":[[609,18]]},"898":{"position":[[422,18]]},"899":{"position":[[429,18]]}},"keywords":{}}],["log_dir\\u003d/train/log",{"_index":2756,"title":{},"content":{"366":{"position":[[1031,23]]},"369":{"position":[[1151,23]]},"371":{"position":[[624,23],[1632,23]]},"374":{"position":[[568,23]]},"377":{"position":[[1062,23]]},"380":{"position":[[543,23]]},"410":{"position":[[2397,23]]},"412":{"position":[[1399,23]]},"415":{"position":[[2427,23]]},"418":{"position":[[1423,23]]},"421":{"position":[[722,23]]},"840":{"position":[[1031,23]]},"843":{"position":[[1151,23]]},"845":{"position":[[624,23],[1632,23]]},"848":{"position":[[568,23]]},"851":{"position":[[1062,23]]},"854":{"position":[[543,23]]},"863":{"position":[[2397,23]]},"865":{"position":[[1399,23]]},"868":{"position":[[2427,23]]},"871":{"position":[[1423,23]]},"874":{"position":[[722,23]]}},"keywords":{}}],["log_metr",{"_index":2821,"title":{},"content":{"400":{"position":[[85,10]]},"401":{"position":[[447,10]]},"889":{"position":[[85,10]]},"890":{"position":[[447,10]]}},"keywords":{}}],["log_param",{"_index":2820,"title":{},"content":{"400":{"position":[[72,9]]},"401":{"position":[[429,9]]},"889":{"position":[[72,9]]},"890":{"position":[[429,9]]}},"keywords":{}}],["logcont",{"_index":290,"title":{},"content":{"28":{"position":[[254,13],[374,13]]},"29":{"position":[[287,13]]},"382":{"position":[[200,13]]},"385":{"position":[[228,13]]},"557":{"position":[[254,13],[374,13]]},"558":{"position":[[287,13]]},"856":{"position":[[200,13]]},"859":{"position":[[228,13]]}},"keywords":{}}],["logdir",{"_index":2832,"title":{"403":{"position":[[9,7]]},"892":{"position":[[9,7]]}},"content":{},"keywords":{}}],["logic",{"_index":1271,"title":{},"content":{"96":{"position":[[516,6]]},"610":{"position":[[516,6]]}},"keywords":{}}],["login",{"_index":967,"title":{"499":{"position":[[0,5]]},"519":{"position":[[0,5]]}},"content":{"77":{"position":[[407,5]]},"320":{"position":[[32,5]]},"488":{"position":[[442,5]]},"496":{"position":[[576,5]]},"499":{"position":[[115,5]]},"519":{"position":[[18,5]]},"586":{"position":[[407,5]]},"797":{"position":[[32,5]]}},"keywords":{}}],["loginit",{"_index":2378,"title":{},"content":{"289":{"position":[[1029,8]]},"752":{"position":[[1029,8]]}},"keywords":{}}],["logist",{"_index":1094,"title":{},"content":{"90":{"position":[[487,8]]},"604":{"position":[[487,8]]}},"keywords":{}}],["logs/metr",{"_index":1650,"title":{},"content":{"139":{"position":[[733,13]]},"639":{"position":[[733,13]]}},"keywords":{}}],["logs=non",{"_index":2686,"title":{},"content":{"343":{"position":[[2038,11]]},"817":{"position":[[2056,11]]}},"keywords":{}}],["logs[\"accuraci",{"_index":2691,"title":{},"content":{"343":{"position":[[2151,18]]},"817":{"position":[[2171,18]]}},"keywords":{}}],["logs[\"loss",{"_index":2690,"title":{},"content":{"343":{"position":[[2125,13]]},"817":{"position":[[2145,13]]}},"keywords":{}}],["long",{"_index":750,"title":{},"content":{"54":{"position":[[415,4],[685,4],[2422,4]]},"136":{"position":[[523,4]]},"186":{"position":[[26,4]]},"211":{"position":[[795,4]]},"260":{"position":[[753,5],[865,4]]},"439":{"position":[[1325,7],[1353,5],[1380,7]]},"664":{"position":[[523,4]]},"706":{"position":[[795,4]]},"714":{"position":[[26,4]]}},"keywords":{}}],["look",{"_index":886,"title":{},"content":{"69":{"position":[[93,5],[144,6],[184,5]]},"74":{"position":[[527,7]]},"90":{"position":[[2908,4]]},"101":{"position":[[325,6]]},"113":{"position":[[4,4],[35,5],[91,5]]},"115":{"position":[[508,5],[839,4]]},"132":{"position":[[12,4]]},"140":{"position":[[999,4]]},"146":{"position":[[155,5]]},"158":{"position":[[117,5]]},"252":{"position":[[1044,7]]},"279":{"position":[[456,4]]},"578":{"position":[[93,5],[144,6],[184,5]]},"583":{"position":[[527,7]]},"597":{"position":[[4,4],[35,5],[91,5]]},"599":{"position":[[508,5],[839,4]]},"604":{"position":[[2908,4]]},"615":{"position":[[325,6]]},"640":{"position":[[999,4]]},"646":{"position":[[155,5]]},"658":{"position":[[117,5]]},"660":{"position":[[12,4]]},"979":{"position":[[770,4]]}},"keywords":{}}],["loos",{"_index":1774,"title":{},"content":{"155":{"position":[[263,5]]},"655":{"position":[[270,5]]}},"keywords":{}}],["loss",{"_index":1580,"title":{},"content":{"132":{"position":[[1154,5]]},"343":{"position":[[2064,4]]},"660":{"position":[[1154,5]]},"817":{"position":[[2082,4]]},"965":{"position":[[9658,4]]}},"keywords":{}}],["loss='sparse_categorical_crossentropi",{"_index":2669,"title":{},"content":{"343":{"position":[[1272,39]]},"817":{"position":[[1290,39]]}},"keywords":{}}],["lot",{"_index":1076,"title":{},"content":{"90":{"position":[[50,4],[1351,4]]},"93":{"position":[[954,3]]},"155":{"position":[[50,3]]},"260":{"position":[[1509,3],[1765,3]]},"604":{"position":[[50,4],[1351,4]]},"607":{"position":[[954,3]]},"655":{"position":[[50,3]]},"992":{"position":[[227,4]]}},"keywords":{}}],["low",{"_index":1234,"title":{"94":{"position":[[51,5]]},"608":{"position":[[51,5]]}},"content":{"94":{"position":[[415,5]]},"136":{"position":[[553,5]]},"211":{"position":[[959,3]]},"608":{"position":[[415,5]]},"664":{"position":[[553,5]]},"706":{"position":[[959,3]]}},"keywords":{}}],["lowercas",{"_index":1852,"title":{},"content":{"179":{"position":[[267,10]]},"327":{"position":[[374,9]]},"686":{"position":[[267,10]]},"808":{"position":[[374,9]]}},"keywords":{}}],["ls",{"_index":2420,"title":{},"content":{"312":{"position":[[38,2]]},"784":{"position":[[38,2]]},"960":{"position":[[447,3]]}},"keywords":{}}],["m",{"_index":862,"title":{},"content":{"63":{"position":[[144,1],[215,1]]},"252":{"position":[[1231,1]]},"263":{"position":[[917,1],[1612,1]]},"268":{"position":[[255,1]]},"278":{"position":[[387,1]]},"438":{"position":[[203,1],[269,1]]},"441":{"position":[[412,1],[499,1]]},"572":{"position":[[144,1],[215,1]]},"922":{"position":[[203,1],[269,1]]},"925":{"position":[[412,1],[499,1]]},"950":{"position":[[921,1]]},"969":{"position":[[1056,1]]}},"keywords":{}}],["m2/settings.xml",{"_index":2253,"title":{},"content":{"265":{"position":[[64,19]]}},"keywords":{}}],["mac",{"_index":2163,"title":{},"content":{"259":{"position":[[88,3]]}},"keywords":{}}],["machin",{"_index":822,"title":{"60":{"position":[[41,7]]},"91":{"position":[[0,7]]},"569":{"position":[[41,7]]},"605":{"position":[[0,7]]},"961":{"position":[[21,7]]},"963":{"position":[[35,7]]}},"content":{"90":{"position":[[22,7],[91,7],[243,7],[373,7],[441,7],[1291,7],[1328,7],[1935,7],[2092,7],[2218,7],[2691,7],[2830,7],[2916,7]]},"93":{"position":[[36,7],[268,7],[391,7],[913,7]]},"94":{"position":[[140,7]]},"99":{"position":[[89,7]]},"103":{"position":[[206,7]]},"107":{"position":[[1345,7],[1414,7]]},"112":{"position":[[232,7]]},"113":{"position":[[362,9]]},"154":{"position":[[443,9]]},"177":{"position":[[7,7],[72,7]]},"179":{"position":[[42,7],[141,7]]},"197":{"position":[[657,7]]},"302":{"position":[[465,7]]},"316":{"position":[[131,8]]},"495":{"position":[[65,8]]},"496":{"position":[[385,8]]},"498":{"position":[[40,7]]},"502":{"position":[[203,7]]},"596":{"position":[[232,7]]},"597":{"position":[[362,9]]},"604":{"position":[[22,7],[91,7],[243,7],[373,7],[441,7],[1291,7],[1328,7],[1935,7],[2092,7],[2218,7],[2691,7],[2830,7],[2916,7]]},"607":{"position":[[36,7],[268,7],[391,7],[913,7]]},"608":{"position":[[140,7]]},"613":{"position":[[89,7]]},"617":{"position":[[206,7]]},"621":{"position":[[1348,7],[1417,7]]},"654":{"position":[[443,9]]},"684":{"position":[[7,7],[72,7]]},"686":{"position":[[42,7],[141,7]]},"692":{"position":[[657,7]]},"770":{"position":[[465,7]]},"788":{"position":[[33,7]]},"793":{"position":[[131,8]]},"963":{"position":[[40,7]]}},"keywords":{}}],["mad",{"_index":633,"title":{},"content":{"53":{"position":[[5858,4],[7433,4],[7565,5],[8814,4],[10830,4]]},"54":{"position":[[303,4]]},"92":{"position":[[657,4]]},"252":{"position":[[2616,4]]},"606":{"position":[[657,4]]}},"keywords":{}}],["magma",{"_index":3879,"title":{},"content":{"954":{"position":[[1008,5]]}},"keywords":{}}],["mail",{"_index":512,"title":{"86":{"position":[[0,7]]},"593":{"position":[[0,7]]}},"content":{"53":{"position":[[1372,7],[3137,7],[4197,7],[5907,7],[6020,7],[6231,5]]},"54":{"position":[[939,7],[1472,7],[1508,5],[1586,7]]},"79":{"position":[[186,7],[685,7],[758,4],[2084,4]]},"86":{"position":[[68,7],[689,4]]},"593":{"position":[[68,7]]}},"keywords":{}}],["mailbox",{"_index":1000,"title":{},"content":{"79":{"position":[[1425,8]]},"260":{"position":[[145,7],[1296,7]]},"264":{"position":[[144,7]]}},"keywords":{}}],["mailbox_size_limit",{"_index":3675,"title":{},"content":{"791":{"position":[[14468,19],[30017,19]]}},"keywords":{}}],["mailboxit’",{"_index":2170,"title":{},"content":{"260":{"position":[[175,11]]}},"keywords":{}}],["mailx",{"_index":3401,"title":{},"content":{"791":{"position":[[2048,5],[2888,5],[5413,5],[10601,6],[10692,5],[15076,5],[15150,5],[15182,7],[17890,5],[18730,5],[21237,5],[26319,6],[26410,5],[30625,5],[30699,5],[30731,7]]}},"keywords":{}}],["mailx_8.1.2",{"_index":3630,"title":{},"content":{"791":{"position":[[10636,11],[26354,11]]}},"keywords":{}}],["main",{"_index":1302,"title":{},"content":{"101":{"position":[[366,4]]},"139":{"position":[[1345,4],[1399,4],[1602,4],[1935,4]]},"147":{"position":[[104,4]]},"153":{"position":[[61,4]]},"252":{"position":[[1247,4]]},"258":{"position":[[0,4]]},"267":{"position":[[29,4]]},"343":{"position":[[1351,7],[2294,6]]},"615":{"position":[[366,4]]},"639":{"position":[[1351,4],[1405,4],[1609,4],[1948,4]]},"647":{"position":[[104,4]]},"653":{"position":[[61,4]]},"817":{"position":[[1369,7],[2376,6]]},"967":{"position":[[327,4]]}},"keywords":{}}],["main.cf",{"_index":3682,"title":{},"content":{"791":{"position":[[14884,8],[30433,8]]}},"keywords":{}}],["mainland",{"_index":3855,"title":{},"content":{"950":{"position":[[1295,8]]}},"keywords":{}}],["mainli",{"_index":1642,"title":{},"content":{"136":{"position":[[309,6]]},"186":{"position":[[92,6],[285,6]]},"197":{"position":[[118,6],[249,6]]},"293":{"position":[[14,6]]},"297":{"position":[[51,6]]},"664":{"position":[[309,6]]},"692":{"position":[[118,6],[249,6]]},"714":{"position":[[92,6],[285,6]]},"760":{"position":[[14,6]]},"764":{"position":[[51,6]]}},"keywords":{}}],["mainlin",{"_index":726,"title":{},"content":{"53":{"position":[[10060,8]]}},"keywords":{}}],["maint",{"_index":1644,"title":{},"content":{"136":{"position":[[389,11]]},"664":{"position":[[389,11]]}},"keywords":{}}],["maintain",{"_index":778,"title":{},"content":{"54":{"position":[[1711,8]]},"93":{"position":[[658,11]]},"187":{"position":[[217,8]]},"199":{"position":[[137,9]]},"207":{"position":[[396,9]]},"607":{"position":[[658,11]]},"694":{"position":[[137,9]]},"702":{"position":[[396,9]]},"715":{"position":[[217,8]]}},"keywords":{}}],["major",{"_index":495,"title":{},"content":{"53":{"position":[[1056,8],[7862,8],[7880,8],[7971,8],[7991,8],[9313,8],[9624,8],[10078,8],[10256,8],[10493,8],[10606,8]]},"90":{"position":[[2755,5]]},"102":{"position":[[313,5]]},"604":{"position":[[2755,5]]},"616":{"position":[[313,5]]},"965":{"position":[[1504,6],[1750,6],[10921,6],[11167,6]]}},"keywords":{}}],["mak",{"_index":432,"title":{"92":{"position":[[106,4]]},"117":{"position":[[20,4]]},"601":{"position":[[20,4]]},"606":{"position":[[106,4]]}},"content":{"43":{"position":[[35,4]]},"53":{"position":[[1552,5],[2938,5],[3413,4],[5474,7],[6403,7]]},"54":{"position":[[2793,4]]},"62":{"position":[[15,4]]},"64":{"position":[[216,4]]},"66":{"position":[[61,4]]},"68":{"position":[[56,4]]},"90":{"position":[[1475,4]]},"92":{"position":[[951,4]]},"93":{"position":[[3,4],[947,4]]},"117":{"position":[[97,4],[344,4],[487,5],[547,5]]},"128":{"position":[[190,4]]},"134":{"position":[[655,6],[694,5],[1109,4]]},"140":{"position":[[679,4]]},"155":{"position":[[233,4]]},"181":{"position":[[38,4]]},"186":{"position":[[609,4]]},"219":{"position":[[170,4],[206,4]]},"239":{"position":[[76,4]]},"243":{"position":[[46,4]]},"245":{"position":[[0,4]]},"268":{"position":[[25,4]]},"279":{"position":[[7,4]]},"284":{"position":[[7,4]]},"286":{"position":[[7,4]]},"289":{"position":[[1175,4]]},"316":{"position":[[419,4]]},"330":{"position":[[404,4]]},"340":{"position":[[62,4]]},"438":{"position":[[327,4]]},"476":{"position":[[119,4],[302,4]]},"496":{"position":[[156,4]]},"571":{"position":[[15,4]]},"573":{"position":[[216,4]]},"575":{"position":[[61,4]]},"577":{"position":[[56,4]]},"601":{"position":[[97,4],[344,4],[487,5],[547,5]]},"604":{"position":[[1475,4]]},"606":{"position":[[951,4]]},"607":{"position":[[3,4],[947,4]]},"635":{"position":[[190,4]]},"640":{"position":[[679,4]]},"655":{"position":[[240,4]]},"662":{"position":[[655,6],[694,5],[1109,4]]},"688":{"position":[[38,4]]},"714":{"position":[[609,4]]},"733":{"position":[[170,4],[206,4]]},"743":{"position":[[60,4]]},"744":{"position":[[893,4]]},"746":{"position":[[46,4]]},"748":{"position":[[0,4]]},"752":{"position":[[1175,4]]},"777":{"position":[[224,5],[579,4],[971,4],[1053,4],[1082,4]]},"791":{"position":[[14749,4],[30298,4]]},"793":{"position":[[419,4]]},"800":{"position":[[404,4]]},"814":{"position":[[64,4]]},"922":{"position":[[327,4]]},"965":{"position":[[356,4],[9853,4]]},"979":{"position":[[285,4]]}},"keywords":{}}],["make_datasets_unbatch",{"_index":2642,"title":{},"content":{"343":{"position":[[438,26]]},"817":{"position":[[456,26]]}},"keywords":{}}],["make_datasets_unbatched().batch(batch_size).repeat",{"_index":2677,"title":{},"content":{"343":{"position":[[1626,52]]},"817":{"position":[[1644,52]]}},"keywords":{}}],["manag",{"_index":529,"title":{"93":{"position":[[44,10]]},"107":{"position":[[33,10],[52,10]]},"126":{"position":[[9,7]]},"141":{"position":[[0,6]]},"142":{"position":[[0,6]]},"143":{"position":[[0,6]]},"150":{"position":[[11,7]]},"151":{"position":[[16,7]]},"164":{"position":[[11,7]]},"165":{"position":[[18,7]]},"166":{"position":[[12,7]]},"168":{"position":[[14,7]]},"169":{"position":[[16,7]]},"170":{"position":[[8,7]]},"171":{"position":[[22,7]]},"172":{"position":[[9,7]]},"334":{"position":[[0,6]]},"440":{"position":[[6,10]]},"511":{"position":[[0,7]]},"531":{"position":[[0,7]]},"607":{"position":[[44,10]]},"621":{"position":[[33,10],[52,10]]},"633":{"position":[[9,7]]},"641":{"position":[[0,6]]},"642":{"position":[[0,6]]},"643":{"position":[[0,6]]},"650":{"position":[[11,7]]},"651":{"position":[[16,7]]},"671":{"position":[[11,7]]},"672":{"position":[[18,7]]},"673":{"position":[[12,7]]},"675":{"position":[[14,7]]},"676":{"position":[[16,7]]},"677":{"position":[[8,7]]},"678":{"position":[[22,7]]},"679":{"position":[[9,7]]},"804":{"position":[[0,6]]},"924":{"position":[[6,10]]}},"content":{"53":{"position":[[1793,11],[3189,7],[3207,7],[3629,10],[3662,10],[3891,10],[5002,10]]},"89":{"position":[[240,7]]},"90":{"position":[[1239,6]]},"93":{"position":[[112,10],[167,10]]},"98":{"position":[[182,6],[443,10]]},"99":{"position":[[441,10],[499,10]]},"102":{"position":[[499,10]]},"104":{"position":[[6,11],[456,6]]},"106":{"position":[[170,10],[308,7]]},"107":{"position":[[716,10],[1246,10],[1279,6]]},"110":{"position":[[645,10],[662,8],[675,7],[1085,7],[1102,6],[1192,11],[1220,7],[1256,8]]},"118":{"position":[[326,8],[393,8],[495,8]]},"125":{"position":[[630,7]]},"126":{"position":[[27,8]]},"139":{"position":[[1012,7],[1665,8],[2202,6]]},"142":{"position":[[191,6]]},"150":{"position":[[15,7]]},"151":{"position":[[40,8],[167,6],[218,7]]},"152":{"position":[[185,7],[215,10],[346,9],[559,8],[1159,10]]},"153":{"position":[[275,10]]},"154":{"position":[[480,7],[1076,7]]},"155":{"position":[[203,10]]},"158":{"position":[[1297,8]]},"160":{"position":[[1636,7]]},"161":{"position":[[95,6],[239,6]]},"162":{"position":[[1039,11]]},"173":{"position":[[81,7],[143,11]]},"177":{"position":[[469,7]]},"180":{"position":[[246,8]]},"187":{"position":[[187,10]]},"190":{"position":[[290,6]]},"201":{"position":[[275,7]]},"207":{"position":[[225,10],[287,10],[435,7]]},"208":{"position":[[334,10],[429,10],[447,7]]},"244":{"position":[[24,7]]},"258":{"position":[[122,7]]},"281":{"position":[[1603,7]]},"302":{"position":[[174,10],[358,6],[528,11]]},"326":{"position":[[29,6]]},"327":{"position":[[101,6]]},"423":{"position":[[46,7]]},"492":{"position":[[786,7]]},"603":{"position":[[240,7]]},"604":{"position":[[1239,6]]},"607":{"position":[[112,10],[167,10]]},"612":{"position":[[182,6],[443,10]]},"613":{"position":[[441,10],[499,10]]},"616":{"position":[[499,10]]},"618":{"position":[[6,11],[457,6]]},"620":{"position":[[170,10],[308,7]]},"621":{"position":[[717,10],[1249,10],[1282,6]]},"624":{"position":[[645,10],[662,8],[675,7],[1090,7],[1107,6],[1197,11],[1225,7],[1261,8]]},"625":{"position":[[326,8],[394,8],[496,8]]},"632":{"position":[[630,7]]},"633":{"position":[[27,8]]},"639":{"position":[[1012,7],[1673,8],[2215,6]]},"642":{"position":[[191,6]]},"650":{"position":[[15,7]]},"651":{"position":[[40,8],[167,6],[218,7]]},"652":{"position":[[185,7],[215,10],[352,9],[565,8],[1439,10]]},"653":{"position":[[275,10]]},"654":{"position":[[480,7],[1081,7]]},"655":{"position":[[209,10]]},"658":{"position":[[1297,8]]},"667":{"position":[[1638,7]]},"668":{"position":[[95,6],[239,6]]},"669":{"position":[[1292,11]]},"680":{"position":[[81,7],[143,11]]},"684":{"position":[[469,7]]},"687":{"position":[[267,8]]},"696":{"position":[[275,7]]},"702":{"position":[[225,10],[287,10],[435,7]]},"703":{"position":[[334,10],[429,10],[447,7]]},"715":{"position":[[187,10]]},"718":{"position":[[295,6]]},"747":{"position":[[24,7]]},"770":{"position":[[174,10],[358,6],[528,11]]},"791":{"position":[[15857,7],[16167,7]]},"807":{"position":[[29,6]]},"808":{"position":[[101,6]]},"897":{"position":[[46,7]]},"907":{"position":[[90,8]]}},"keywords":{}}],["management.github/gitlab",{"_index":3223,"title":{},"content":{"502":{"position":[[468,24]]}},"keywords":{}}],["mani",{"_index":525,"title":{},"content":{"53":{"position":[[1699,4],[8045,4]]},"54":{"position":[[806,4]]},"90":{"position":[[346,4],[518,4],[585,4],[1760,4]]},"91":{"position":[[674,4]]},"92":{"position":[[74,4],[601,4]]},"93":{"position":[[263,4]]},"122":{"position":[[4,4]]},"291":{"position":[[225,4]]},"431":{"position":[[111,4]]},"604":{"position":[[346,4],[518,4],[585,4],[1760,4]]},"605":{"position":[[674,4]]},"606":{"position":[[74,4],[601,4]]},"607":{"position":[[263,4]]},"629":{"position":[[4,4]]},"754":{"position":[[225,4]]},"791":{"position":[[1692,4]]},"905":{"position":[[111,4]]}},"keywords":{}}],["manif",{"_index":90,"title":{},"content":{"4":{"position":[[549,9]]},"464":{"position":[[549,9]]}},"keywords":{}}],["mann",{"_index":703,"title":{},"content":{"53":{"position":[[8591,7]]},"54":{"position":[[2275,7]]}},"keywords":{}}],["manual",{"_index":1093,"title":{"952":{"position":[[0,8]]},"957":{"position":[[0,8]]},"972":{"position":[[0,8]]}},"content":{"90":{"position":[[469,9]]},"502":{"position":[[3317,8]]},"604":{"position":[[469,9]]},"779":{"position":[[0,8]]},"964":{"position":[[148,8]]}},"keywords":{}}],["map",{"_index":1418,"title":{},"content":{"107":{"position":[[867,9]]},"495":{"position":[[155,8]]},"621":{"position":[[869,9]]},"791":{"position":[[14216,4],[29765,4]]}},"keywords":{}}],["map<str",{"_index":2728,"title":{},"content":{"365":{"position":[[210,11],[469,11],[1099,11]]},"376":{"position":[[201,11]]},"388":{"position":[[467,11]]},"409":{"position":[[754,11],[1013,11],[1312,11]]},"420":{"position":[[132,11]]},"839":{"position":[[210,11],[469,11],[1099,11]]},"850":{"position":[[201,11]]},"862":{"position":[[754,11],[1013,11],[1312,11]]},"873":{"position":[[132,11]]},"877":{"position":[[467,11]]}},"keywords":{}}],["margin",{"_index":2114,"title":{},"content":{"252":{"position":[[1179,10]]}},"keywords":{}}],["mark",{"_index":2208,"title":{},"content":{"260":{"position":[[2415,6]]}},"keywords":{}}],["markdown",{"_index":2065,"title":{},"content":{"242":{"position":[[118,8]]},"745":{"position":[[118,8]]}},"keywords":{}}],["maskingorg.apache.submarine.spark.security.api.rangersparkauthzext",{"_index":3835,"title":{},"content":{"939":{"position":[[1953,72]]}},"keywords":{}}],["mast",{"_index":281,"title":{"283":{"position":[[72,6]]}},"content":{"24":{"position":[[1258,9]]},"28":{"position":[[428,6]]},"29":{"position":[[341,6]]},"60":{"position":[[343,7]]},"62":{"position":[[31,6],[62,6]]},"429":{"position":[[169,8],[224,7]]},"553":{"position":[[1258,9]]},"557":{"position":[[428,6]]},"558":{"position":[[341,6]]},"569":{"position":[[343,7]]},"571":{"position":[[31,6],[62,6]]},"791":{"position":[[1436,8],[1897,7],[2962,6],[5934,6],[11406,7],[11501,6],[14189,6],[14270,6],[14335,6],[15630,6],[17673,6]]},"903":{"position":[[169,8],[224,7]]},"963":{"position":[[172,7]]},"964":{"position":[[322,7],[386,10],[397,8],[531,7],[807,7],[1073,7],[1279,6],[1421,10],[1432,8],[1701,6]]},"965":{"position":[[104,7],[124,7],[4892,6],[14398,6],[17046,6],[17062,6]]}},"keywords":{}}],["master_6.2u5",{"_index":3637,"title":{},"content":{"791":{"position":[[11449,12]]}},"keywords":{}}],["match",{"_index":2487,"title":{},"content":{"323":{"position":[[128,7]]},"773":{"position":[[128,7]]}},"keywords":{}}],["matplotlib",{"_index":3850,"title":{},"content":{"950":{"position":[[869,10]]},"969":{"position":[[995,10]]}},"keywords":{}}],["matt",{"_index":1292,"title":{},"content":{"99":{"position":[[526,6]]},"114":{"position":[[556,6]]},"179":{"position":[[231,6]]},"598":{"position":[[556,6]]},"613":{"position":[[526,6]]},"686":{"position":[[231,6]]}},"keywords":{}}],["mav",{"_index":2002,"title":{"221":{"position":[[48,5]]},"226":{"position":[[0,5]]},"265":{"position":[[7,5]]},"728":{"position":[[0,5]]},"735":{"position":[[48,5]]}},"content":{"221":{"position":[[0,5],[26,5],[86,5],[109,5],[123,6],[196,5]]},"257":{"position":[[218,5]]},"265":{"position":[[39,5]]},"281":{"position":[[642,5]]},"735":{"position":[[0,5],[26,5],[86,5],[109,5],[123,6],[196,5]]},"934":{"position":[[54,6]]}},"keywords":{}}],["maximum",{"_index":1550,"title":{},"content":{"122":{"position":[[124,7]]},"629":{"position":[[124,7]]}},"keywords":{}}],["mb",{"_index":2493,"title":{},"content":{"324":{"position":[[133,3],[201,3]]},"791":{"position":[[3398,2],[3441,2],[6947,2],[19265,2]]}},"keywords":{}}],["mb,checksum,signatur",{"_index":2518,"title":{},"content":{"324":{"position":[[1283,22],[1498,22]]},"774":{"position":[[736,22],[951,22]]}},"keywords":{}}],["mb,checksum,signature)dock",{"_index":2507,"title":{},"content":{"324":{"position":[[759,28],[1030,28]]},"774":{"position":[[212,28],[483,28]]}},"keywords":{}}],["mb,checksum,signature)source:submarin",{"_index":2506,"title":{},"content":{"324":{"position":[[695,38],[966,38]]},"774":{"position":[[148,38],[419,38]]}},"keywords":{}}],["mb,checksum,signature,announc",{"_index":2516,"title":{},"content":{"324":{"position":[[1201,35],[1416,35]]},"774":{"position":[[654,35],[869,35]]}},"keywords":{}}],["mb/",{"_index":3576,"title":{},"content":{"791":{"position":[[6962,5]]}},"keywords":{}}],["mc8ww",{"_index":3748,"title":{},"content":{"814":{"position":[[603,5]]}},"keywords":{}}],["md",{"_index":2139,"title":{},"content":{"253":{"position":[[140,2],[175,2],[340,2],[416,2]]},"271":{"position":[[43,2]]}},"keywords":{}}],["md5",{"_index":2486,"title":{},"content":{"323":{"position":[[87,3]]},"773":{"position":[[87,3]]}},"keywords":{}}],["me)at",{"_index":890,"title":{},"content":{"69":{"position":[[198,5]]},"578":{"position":[[198,5]]}},"keywords":{}}],["mean",{"_index":808,"title":{},"content":{"56":{"position":[[78,5]]},"99":{"position":[[129,5]]},"134":{"position":[[566,4]]},"199":{"position":[[406,5]]},"252":{"position":[[2490,5]]},"565":{"position":[[78,5]]},"613":{"position":[[129,5]]},"662":{"position":[[566,4]]},"694":{"position":[[406,5]]},"791":{"position":[[1785,7]]},"961":{"position":[[523,5]]}},"keywords":{}}],["medium",{"_index":1541,"title":{},"content":{"121":{"position":[[334,7]]},"190":{"position":[[33,6]]},"628":{"position":[[334,7]]},"718":{"position":[[33,6]]}},"keywords":{}}],["meet",{"_index":1742,"title":{},"content":{"152":{"position":[[271,4]]},"184":{"position":[[370,4]]},"652":{"position":[[277,4]]},"712":{"position":[[370,4]]}},"keywords":{}}],["mem/cpu/gpu",{"_index":1540,"title":{},"content":{"121":{"position":[[276,11]]},"628":{"position":[[276,11]]}},"keywords":{}}],["memb",{"_index":541,"title":{},"content":{"53":{"position":[[2059,8],[2344,8],[3011,6],[4334,7],[4520,8],[4535,6],[4675,6],[4790,8],[7374,7],[9336,7],[9640,7],[9746,7],[9850,7],[9866,6],[9947,7],[10101,7],[10279,7],[10329,6],[10353,6],[10390,6],[10516,7],[10539,6],[10629,7]]},"54":{"position":[[2867,6]]},"79":{"position":[[14,7],[448,8],[1947,8]]},"81":{"position":[[35,7]]},"502":{"position":[[1774,7],[2173,7],[2289,7],[2417,7],[2537,7],[2672,7],[2795,7]]},"588":{"position":[[35,7]]}},"keywords":{}}],["membership",{"_index":609,"title":{},"content":{"53":{"position":[[4417,10]]}},"keywords":{}}],["memori",{"_index":18,"title":{},"content":{"2":{"position":[[47,6]]},"139":{"position":[[1791,7]]},"338":{"position":[[184,6]]},"462":{"position":[[47,6]]},"491":{"position":[[550,6]]},"639":{"position":[[1804,7]]},"812":{"position":[[186,6]]},"965":{"position":[[1579,7],[1601,7],[1825,7],[1847,7],[10996,7],[11018,7],[11242,7],[11264,7]]}},"keywords":{}}],["memory\":\"1024m",{"_index":2869,"title":{},"content":{"410":{"position":[[2815,17],[2988,17]]},"412":{"position":[[1817,17],[1990,17]]},"863":{"position":[[2815,17],[2988,17]]},"865":{"position":[[1817,17],[1990,17]]}},"keywords":{}}],["memory=1g,vcores=1",{"_index":4267,"title":{},"content":{"980":{"position":[[453,18],[502,18]]},"990":{"position":[[759,18]]},"991":{"position":[[452,18]]}},"keywords":{}}],["memory=2g,vcores=1",{"_index":4346,"title":{},"content":{"991":{"position":[[640,18],[816,18]]}},"keywords":{}}],["memory=3g,vcores=2",{"_index":4293,"title":{},"content":{"981":{"position":[[406,18]]},"985":{"position":[[420,18],[469,18]]},"986":{"position":[[377,18]]},"990":{"position":[[374,18],[561,18]]}},"keywords":{}}],["memory=4g,vcores=2,gpu=0",{"_index":3033,"title":{},"content":{"479":{"position":[[487,24]]},"942":{"position":[[487,24]]}},"keywords":{}}],["memory=4g,vcores=2,gpu=1",{"_index":3041,"title":{},"content":{"479":{"position":[[726,24]]},"942":{"position":[[726,24]]}},"keywords":{}}],["memory=64g,vcores=32,gpu=1",{"_index":3385,"title":{},"content":{"791":{"position":[[1126,26]]}},"keywords":{}}],["memoryclockr",{"_index":3992,"title":{},"content":{"965":{"position":[[1522,15],[1768,15],[10939,15],[11185,15]]}},"keywords":{}}],["memorygpu",{"_index":2532,"title":{},"content":{"327":{"position":[[555,9]]},"808":{"position":[[555,9]]}},"keywords":{}}],["mention",{"_index":1430,"title":{},"content":{"108":{"position":[[121,9]]},"151":{"position":[[109,9]]},"157":{"position":[[317,9]]},"622":{"position":[[121,9]]},"651":{"position":[[109,9]]},"657":{"position":[[317,9]]}},"keywords":{}}],["mentor",{"_index":985,"title":{},"content":{"79":{"position":[[471,8]]}},"keywords":{}}],["menu",{"_index":2115,"title":{},"content":{"252":{"position":[[1252,4]]}},"keywords":{}}],["mer",{"_index":696,"title":{},"content":{"53":{"position":[[8369,6]]}},"keywords":{}}],["merg",{"_index":711,"title":{"283":{"position":[[4,5]]}},"content":{"53":{"position":[[9095,5],[10046,6]]},"54":{"position":[[278,5],[2568,5]]},"64":{"position":[[173,5],[189,6]]},"69":{"position":[[112,7],[289,7],[342,7],[411,6]]},"70":{"position":[[151,5]]},"76":{"position":[[180,5]]},"82":{"position":[[287,7]]},"573":{"position":[[173,5],[189,6]]},"578":{"position":[[112,7],[289,7],[342,7],[411,6]]},"579":{"position":[[151,5]]},"585":{"position":[[180,5]]},"589":{"position":[[287,7]]}},"keywords":{}}],["messag",{"_index":288,"title":{},"content":{"28":{"position":[[174,10]]},"29":{"position":[[209,10]]},"31":{"position":[[173,9]]},"32":{"position":[[185,9]]},"33":{"position":[[330,9]]},"34":{"position":[[190,9]]},"35":{"position":[[238,9]]},"41":{"position":[[176,10]]},"47":{"position":[[163,9]]},"48":{"position":[[183,9]]},"49":{"position":[[286,9]]},"50":{"position":[[188,9]]},"52":{"position":[[224,9]]},"53":{"position":[[7533,7]]},"63":{"position":[[182,9]]},"86":{"position":[[307,8],[581,8]]},"210":{"position":[[246,7]]},"215":{"position":[[89,9]]},"557":{"position":[[174,10]]},"558":{"position":[[209,10]]},"563":{"position":[[176,10]]},"572":{"position":[[182,9]]},"593":{"position":[[307,8]]},"705":{"position":[[246,7]]},"710":{"position":[[89,9]]}},"keywords":{}}],["message\":\"cr",{"_index":386,"title":{},"content":{"38":{"position":[[431,17]]},"43":{"position":[[312,17]]},"46":{"position":[[306,17]]},"51":{"position":[[230,17]]},"389":{"position":[[391,17]]},"560":{"position":[[431,17]]},"878":{"position":[[391,17]]}},"keywords":{}}],["message\":\"delet",{"_index":377,"title":{},"content":{"36":{"position":[[252,17]]},"44":{"position":[[244,17]]},"398":{"position":[[148,17]]},"887":{"position":[[148,17]]}},"keywords":{}}],["message\":\"get",{"_index":418,"title":{},"content":{"40":{"position":[[167,14]]},"395":{"position":[[144,14]]},"562":{"position":[[167,14]]},"884":{"position":[[144,14]]}},"keywords":{}}],["message\":\"list",{"_index":414,"title":{},"content":{"39":{"position":[[170,15]]},"392":{"position":[[152,15]]},"561":{"position":[[170,15]]},"881":{"position":[[152,15]]}},"keywords":{}}],["message\":nul",{"_index":2707,"title":{},"content":{"351":{"position":[[570,15]]},"353":{"position":[[119,15]]},"356":{"position":[[136,15]]},"359":{"position":[[457,15]]},"362":{"position":[[139,15]]},"366":{"position":[[611,15]]},"369":{"position":[[731,15]]},"371":{"position":[[118,15]]},"374":{"position":[[148,15]]},"377":{"position":[[642,15]]},"380":{"position":[[151,15]]},"382":{"position":[[123,15]]},"385":{"position":[[153,15]]},"410":{"position":[[1117,15]]},"412":{"position":[[116,15]]},"415":{"position":[[1143,15]]},"418":{"position":[[139,15]]},"421":{"position":[[300,15]]},"825":{"position":[[570,15]]},"827":{"position":[[119,15]]},"830":{"position":[[136,15]]},"833":{"position":[[457,15]]},"836":{"position":[[139,15]]},"840":{"position":[[611,15]]},"843":{"position":[[731,15]]},"845":{"position":[[118,15]]},"848":{"position":[[148,15]]},"851":{"position":[[642,15]]},"854":{"position":[[151,15]]},"856":{"position":[[123,15]]},"859":{"position":[[153,15]]},"863":{"position":[[1117,15]]},"865":{"position":[[116,15]]},"868":{"position":[[1143,15]]},"871":{"position":[[139,15]]},"874":{"position":[[300,15]]}},"keywords":{}}],["messi",{"_index":867,"title":{},"content":{"64":{"position":[[236,6]]},"573":{"position":[[236,6]]}},"keywords":{}}],["meta",{"_index":212,"title":{},"content":{"15":{"position":[[571,7]]},"18":{"position":[[568,7]]},"22":{"position":[[96,7],[854,7]]},"23":{"position":[[96,7],[1001,7]]},"24":{"position":[[363,7],[1009,7]]},"25":{"position":[[396,7]]},"26":{"position":[[104,7],[707,7]]},"27":{"position":[[399,7]]},"38":{"position":[[94,7],[769,8]]},"39":{"position":[[511,8]]},"40":{"position":[[502,8]]},"41":{"position":[[555,7]]},"110":{"position":[[865,4]]},"132":{"position":[[642,4],[725,4],[772,4],[814,4],[909,4],[1723,4],[1760,5],[1867,4]]},"133":{"position":[[421,4]]},"148":{"position":[[400,6]]},"150":{"position":[[83,5]]},"154":{"position":[[507,4]]},"155":{"position":[[132,4]]},"160":{"position":[[1272,5]]},"365":{"position":[[99,4]]},"366":{"position":[[62,7],[895,8]]},"369":{"position":[[62,7],[1015,8]]},"371":{"position":[[487,8],[1496,8]]},"374":{"position":[[432,8]]},"376":{"position":[[60,4],[85,4]]},"377":{"position":[[63,7],[926,8]]},"380":{"position":[[407,8]]},"388":{"position":[[89,4]]},"389":{"position":[[62,7],[732,8]]},"392":{"position":[[479,8]]},"395":{"position":[[467,8]]},"398":{"position":[[497,8]]},"405":{"position":[[2,7]]},"409":{"position":[[643,4]]},"410":{"position":[[539,7],[2255,8]]},"412":{"position":[[1257,8]]},"415":{"position":[[544,7],[2285,8]]},"418":{"position":[[1281,8]]},"421":{"position":[[585,8]]},"424":{"position":[[281,7]]},"425":{"position":[[288,7]]},"544":{"position":[[571,7]]},"547":{"position":[[568,7]]},"551":{"position":[[96,7],[854,7]]},"552":{"position":[[96,7],[1001,7]]},"553":{"position":[[363,7],[1009,7]]},"554":{"position":[[396,7]]},"555":{"position":[[104,7],[707,7]]},"556":{"position":[[399,7]]},"560":{"position":[[94,7],[769,8]]},"561":{"position":[[511,8]]},"562":{"position":[[502,8]]},"563":{"position":[[555,7]]},"624":{"position":[[870,4]]},"648":{"position":[[400,6]]},"650":{"position":[[83,5]]},"654":{"position":[[507,4]]},"655":{"position":[[137,4]]},"660":{"position":[[642,4],[725,4],[772,4],[814,4],[909,4],[1723,4],[1760,5],[1867,4]]},"661":{"position":[[421,4]]},"667":{"position":[[1273,5]]},"839":{"position":[[99,4]]},"840":{"position":[[62,7],[895,8]]},"843":{"position":[[62,7],[1015,8]]},"845":{"position":[[487,8],[1496,8]]},"848":{"position":[[432,8]]},"850":{"position":[[60,4],[85,4]]},"851":{"position":[[63,7],[926,8]]},"854":{"position":[[407,8]]},"862":{"position":[[643,4]]},"863":{"position":[[539,7],[2255,8]]},"865":{"position":[[1257,8]]},"868":{"position":[[544,7],[2285,8]]},"871":{"position":[[1281,8]]},"874":{"position":[[585,8]]},"877":{"position":[[89,4]]},"878":{"position":[[62,7],[732,8]]},"881":{"position":[[479,8]]},"884":{"position":[[467,8]]},"887":{"position":[[497,8]]},"894":{"position":[[2,7]]},"898":{"position":[[281,7]]},"899":{"position":[[288,7]]}},"keywords":{}}],["meta/logs/metr",{"_index":1729,"title":{},"content":{"148":{"position":[[422,17]]},"648":{"position":[[422,17]]}},"keywords":{}}],["metadata",{"_index":1527,"title":{"124":{"position":[[0,8]]},"172":{"position":[[0,8]]},"199":{"position":[[8,8]]},"631":{"position":[[0,8]]},"679":{"position":[[0,8]]},"694":{"position":[[8,8]]}},"content":{"118":{"position":[[234,9]]},"124":{"position":[[27,8],[69,8]]},"125":{"position":[[697,9]]},"134":{"position":[[1871,9]]},"163":{"position":[[617,9]]},"199":{"position":[[149,8],[194,9],[375,8],[500,8]]},"200":{"position":[[60,8],[272,9]]},"207":{"position":[[119,8],[461,8]]},"208":{"position":[[215,9],[305,8],[516,9]]},"209":{"position":[[0,8],[16,8]]},"210":{"position":[[118,8],[224,8]]},"211":{"position":[[248,9]]},"625":{"position":[[234,9]]},"631":{"position":[[27,8],[69,8]]},"632":{"position":[[697,9]]},"662":{"position":[[1871,9]]},"670":{"position":[[617,9]]},"694":{"position":[[149,8],[194,9],[375,8],[500,8]]},"695":{"position":[[60,8],[272,9]]},"702":{"position":[[119,8],[461,8]]},"703":{"position":[[215,9],[305,8],[516,9]]},"704":{"position":[[0,8],[16,8]]},"705":{"position":[[118,8],[224,8]]},"706":{"position":[[248,9]]},"909":{"position":[[94,8]]}},"keywords":{}}],["metastor",{"_index":1433,"title":{},"content":{"108":{"position":[[226,9]]},"116":{"position":[[90,10]]},"125":{"position":[[242,11]]},"132":{"position":[[544,9]]},"133":{"position":[[385,9]]},"173":{"position":[[169,9]]},"600":{"position":[[90,10]]},"622":{"position":[[226,9]]},"632":{"position":[[242,11]]},"660":{"position":[[544,9]]},"661":{"position":[[385,9]]},"680":{"position":[[169,9]]}},"keywords":{}}],["method",{"_index":136,"title":{},"content":{"6":{"position":[[109,6]]},"289":{"position":[[1277,6],[1300,6]]},"341":{"position":[[19,6],[119,6],[256,6],[351,6]]},"437":{"position":[[497,6]]},"466":{"position":[[109,6]]},"744":{"position":[[1380,6],[1482,6]]},"752":{"position":[[1277,6],[1300,6]]},"921":{"position":[[497,6]]}},"keywords":{}}],["method1",{"_index":118,"title":{},"content":{"5":{"position":[[72,7]]},"6":{"position":[[37,9]]},"465":{"position":[[72,7]]},"466":{"position":[[37,9]]},"744":{"position":[[1132,7]]}},"keywords":{}}],["method2",{"_index":125,"title":{},"content":{"5":{"position":[[186,7]]},"465":{"position":[[186,7]]},"744":{"position":[[1231,7]]}},"keywords":{}}],["metric",{"_index":1350,"title":{"105":{"position":[[0,7]]},"619":{"position":[[0,7]]},"913":{"position":[[31,8]]}},"content":{"102":{"position":[[1701,9]]},"118":{"position":[[250,8]]},"129":{"position":[[37,7]]},"132":{"position":[[359,8],[1138,7],[1195,7],[1274,8]]},"133":{"position":[[143,8],[167,7]]},"135":{"position":[[207,7]]},"142":{"position":[[51,8]]},"148":{"position":[[413,8]]},"153":{"position":[[136,7],[315,6]]},"157":{"position":[[633,9]]},"346":{"position":[[63,8],[171,7]]},"473":{"position":[[23,7],[83,6],[103,6],[175,8]]},"616":{"position":[[1713,9]]},"625":{"position":[[250,8]]},"636":{"position":[[37,7]]},"642":{"position":[[51,8]]},"648":{"position":[[413,8]]},"653":{"position":[[136,7],[315,6]]},"657":{"position":[[633,9]]},"660":{"position":[[359,8],[1138,7],[1195,7],[1274,8]]},"661":{"position":[[143,8],[167,7]]},"663":{"position":[[207,7]]},"820":{"position":[[65,8],[142,7]]},"907":{"position":[[65,7]]},"912":{"position":[[6,6],[53,6],[82,6],[110,6]]},"913":{"position":[[13,7],[53,7],[172,8],[202,6],[276,7]]},"933":{"position":[[23,7],[83,6],[103,6],[175,8]]},"966":{"position":[[179,7]]}},"keywords":{}}],["metric_nam",{"_index":3776,"title":{},"content":{"913":{"position":[[77,12]]}},"keywords":{}}],["metrics/log",{"_index":1634,"title":{"135":{"position":[[15,12]]},"663":{"position":[[15,12]]}},"content":{"135":{"position":[[522,13]]},"663":{"position":[[522,13]]}},"keywords":{}}],["metrics=['accuraci",{"_index":2670,"title":{},"content":{"343":{"position":[[1312,21]]},"817":{"position":[[1330,21]]}},"keywords":{}}],["mgr",{"_index":1553,"title":{},"content":{"125":{"position":[[343,3]]},"154":{"position":[[142,4],[149,4],[628,4]]},"158":{"position":[[257,3]]},"163":{"position":[[192,3],[204,3],[210,4],[399,3],[422,3],[598,3],[627,3],[653,3]]},"632":{"position":[[343,3]]},"654":{"position":[[142,4],[149,4],[628,4]]},"658":{"position":[[257,3]]},"670":{"position":[[192,3],[204,3],[210,4],[399,3],[422,3],[598,3],[627,3],[653,3]]}},"keywords":{}}],["microservic",{"_index":1815,"title":{},"content":{"160":{"position":[[838,12]]},"667":{"position":[[838,12]]}},"keywords":{}}],["middl",{"_index":1655,"title":{},"content":{"139":{"position":[[1222,6]]},"639":{"position":[[1228,6]]}},"keywords":{}}],["migrat",{"_index":1129,"title":{},"content":{"90":{"position":[[1639,10]]},"604":{"position":[[1639,10]]}},"keywords":{}}],["min",{"_index":1681,"title":{},"content":{"140":{"position":[[509,5],[1473,5]]},"310":{"position":[[249,4]]},"640":{"position":[[509,5],[1473,5]]},"782":{"position":[[249,4]]}},"keywords":{}}],["mini",{"_index":1436,"title":{},"content":{"110":{"position":[[111,4],[1485,4]]},"281":{"position":[[305,4]]},"303":{"position":[[0,4],[153,4]]},"324":{"position":[[241,4]]},"624":{"position":[[111,4],[1490,4]]},"771":{"position":[[0,4],[153,4]]}},"keywords":{}}],["miniconda.sh",{"_index":3869,"title":{},"content":{"954":{"position":[[666,14],[768,14],[788,14],[828,14]]}},"keywords":{}}],["minikub",{"_index":12,"title":{},"content":{"2":{"position":[[2,8]]},"5":{"position":[[89,8],[114,8],[157,9]]},"238":{"position":[[44,8],[268,8],[289,8],[339,8],[353,10],[449,8],[477,10]]},"240":{"position":[[35,8],[85,8],[99,10],[194,8],[222,10]]},"281":{"position":[[983,8]]},"305":{"position":[[213,8]]},"306":{"position":[[42,8],[88,8]]},"309":{"position":[[83,8]]},"314":{"position":[[1052,8],[1144,8]]},"316":{"position":[[45,9]]},"338":{"position":[[122,8],[139,8]]},"341":{"position":[[35,8],[47,8],[90,9]]},"344":{"position":[[76,10]]},"462":{"position":[[2,8]]},"465":{"position":[[89,8],[114,8],[157,9]]},"742":{"position":[[44,8],[268,8],[289,8],[339,8],[353,10],[449,8],[477,10]]},"744":{"position":[[35,8],[85,8],[99,10],[194,8],[222,10],[432,8],[555,8],[572,8],[1147,8],[1159,8],[1202,9]]},"756":{"position":[[213,8]]},"757":{"position":[[42,8],[88,8]]},"781":{"position":[[83,8]]},"786":{"position":[[1052,8],[1144,8]]},"793":{"position":[[45,9]]},"812":{"position":[[122,8],[141,8]]}},"keywords":{}}],["minimum",{"_index":7,"title":{},"content":{"1":{"position":[[24,7]]},"53":{"position":[[8994,7]]},"338":{"position":[[85,7]]},"461":{"position":[[24,7]]},"812":{"position":[[85,7]]}},"keywords":{}}],["minio",{"_index":2614,"title":{},"content":{"340":{"position":[[305,5]]},"440":{"position":[[166,5]]},"474":{"position":[[22,5]]},"814":{"position":[[313,5]]}},"keywords":{}}],["minor",{"_index":3991,"title":{},"content":{"965":{"position":[[1513,6],[1759,6],[10930,6],[11176,6]]}},"keywords":{}}],["minut",{"_index":2225,"title":{},"content":{"262":{"position":[[112,6]]}},"keywords":{}}],["misunderstand",{"_index":1724,"title":{},"content":{"148":{"position":[[17,16]]},"648":{"position":[[17,16]]}},"keywords":{}}],["mix",{"_index":2388,"title":{},"content":{"291":{"position":[[137,3]]},"754":{"position":[[137,3]]}},"keywords":{}}],["mkdir",{"_index":2290,"title":{},"content":{"269":{"position":[[98,5]]},"278":{"position":[[27,5]]},"788":{"position":[[199,5]]},"791":{"position":[[1181,5]]}},"keywords":{}}],["mkl",{"_index":3877,"title":{},"content":{"954":{"position":[[930,3],[934,3]]}},"keywords":{}}],["ml",{"_index":1121,"title":{"96":{"position":[[38,2]]},"132":{"position":[[0,2]]},"133":{"position":[[34,2]]},"610":{"position":[[38,2]]},"660":{"position":[[0,2]]},"661":{"position":[[34,2]]}},"content":{"90":{"position":[[1260,2],[1563,2],[2503,2]]},"94":{"position":[[234,2]]},"96":{"position":[[94,2],[383,2]]},"132":{"position":[[346,4],[1127,2],[1263,2]]},"134":{"position":[[1452,2]]},"135":{"position":[[11,2]]},"140":{"position":[[278,2],[660,2],[1105,2],[1200,2]]},"179":{"position":[[311,2]]},"604":{"position":[[1260,2],[1563,2],[2503,2]]},"608":{"position":[[234,2]]},"610":{"position":[[94,2],[383,2]]},"640":{"position":[[278,2],[660,2],[1105,2],[1200,2]]},"660":{"position":[[346,4],[1127,2],[1263,2]]},"662":{"position":[[1452,2]]},"663":{"position":[[11,2]]},"686":{"position":[[311,2]]},"963":{"position":[[64,3],[631,2]]}},"keywords":{}}],["mlflow",{"_index":1584,"title":{"399":{"position":[[0,6]]},"888":{"position":[[0,6]]}},"content":{"132":{"position":[[1428,6]]},"340":{"position":[[356,6]]},"400":{"position":[[0,6],[144,6],[192,6]]},"401":{"position":[[397,6]]},"660":{"position":[[1428,6]]},"814":{"position":[[366,6]]},"820":{"position":[[99,6]]},"889":{"position":[[0,6],[144,6],[192,6]]},"890":{"position":[[397,6]]},"909":{"position":[[38,6]]},"924":{"position":[[153,6]]}},"keywords":{}}],["mlflow.pyfunc.pyfuncmodel",{"_index":3786,"title":{"915":{"position":[[52,26]]}},"content":{},"keywords":{}}],["mnbc8",{"_index":2607,"title":{},"content":{"340":{"position":[[165,5]]}},"keywords":{}}],["mnist",{"_index":198,"title":{"342":{"position":[[18,5]]},"816":{"position":[[18,5]]}},"content":{"15":{"position":[[109,5],[191,7],[1017,5]]},"17":{"position":[[102,5]]},"18":{"position":[[102,5],[188,7],[1014,5],[1093,5]]},"19":{"position":[[105,5]]},"20":{"position":[[125,7],[277,5]]},"22":{"position":[[118,5],[377,5],[713,5],[876,5],[1135,5]]},"23":{"position":[[118,5],[860,5],[1023,5]]},"24":{"position":[[222,5],[385,5],[644,5],[872,8],[1036,5],[1234,5]]},"25":{"position":[[255,5],[418,5],[677,5]]},"26":{"position":[[126,5],[385,5],[729,5],[988,5]]},"27":{"position":[[258,5],[421,5],[680,5]]},"28":{"position":[[283,6],[417,5],[484,5]]},"29":{"position":[[330,5],[1507,5]]},"178":{"position":[[152,7],[237,5]]},"328":{"position":[[702,5]]},"343":{"position":[[14,5],[495,5]]},"366":{"position":[[84,5],[343,5],[697,5],[915,5],[1252,5]]},"369":{"position":[[84,5],[817,5],[1035,5]]},"371":{"position":[[844,5],[1298,5],[1516,5]]},"374":{"position":[[234,5],[452,5]]},"377":{"position":[[85,5],[344,5],[728,5],[946,5],[1283,5]]},"380":{"position":[[237,5],[427,5],[764,5]]},"405":{"position":[[49,7],[324,5]]},"410":{"position":[[77,5],[159,7],[985,5],[1253,5],[1333,7],[2641,5]]},"412":{"position":[[255,5],[335,7],[1643,5]]},"415":{"position":[[78,5],[164,7],[990,5],[1069,5],[1279,5],[1363,7],[2671,5]]},"418":{"position":[[66,5],[275,5],[359,7],[1667,5]]},"421":{"position":[[74,7],[226,5],[942,5]]},"424":{"position":[[303,5],[562,5]]},"425":{"position":[[310,5],[569,5]]},"544":{"position":[[109,5],[191,7],[1017,5]]},"546":{"position":[[102,5]]},"547":{"position":[[102,5],[188,7],[1014,5],[1093,5]]},"548":{"position":[[105,5]]},"549":{"position":[[125,7],[277,5]]},"551":{"position":[[118,5],[377,5],[713,5],[876,5],[1135,5]]},"552":{"position":[[118,5],[860,5],[1023,5]]},"553":{"position":[[222,5],[385,5],[644,5],[872,8],[1036,5],[1234,5]]},"554":{"position":[[255,5],[418,5],[677,5]]},"555":{"position":[[126,5],[385,5],[729,5],[988,5]]},"556":{"position":[[258,5],[421,5],[680,5]]},"557":{"position":[[283,6],[417,5],[484,5]]},"558":{"position":[[330,5],[1507,5]]},"685":{"position":[[152,7],[237,5]]},"809":{"position":[[722,5]]},"817":{"position":[[14,5],[513,5]]},"840":{"position":[[84,5],[343,5],[697,5],[915,5],[1252,5]]},"843":{"position":[[84,5],[817,5],[1035,5]]},"845":{"position":[[844,5],[1298,5],[1516,5]]},"848":{"position":[[234,5],[452,5]]},"851":{"position":[[85,5],[344,5],[728,5],[946,5],[1283,5]]},"854":{"position":[[237,5],[427,5],[764,5]]},"863":{"position":[[77,5],[159,7],[985,5],[1253,5],[1333,7],[2641,5]]},"865":{"position":[[255,5],[335,7],[1643,5]]},"868":{"position":[[78,5],[164,7],[990,5],[1069,5],[1279,5],[1363,7],[2671,5]]},"871":{"position":[[66,5],[275,5],[359,7],[1667,5]]},"874":{"position":[[74,7],[226,5],[942,5]]},"894":{"position":[[49,7],[324,5]]},"898":{"position":[[303,5],[562,5]]},"899":{"position":[[310,5],[569,5]]}},"keywords":{}}],["mnist1",{"_index":210,"title":{},"content":{"15":{"position":[[478,8]]},"18":{"position":[[475,8]]},"410":{"position":[[446,8],[1678,7]]},"412":{"position":[[680,7]]},"415":{"position":[[451,8],[1708,7]]},"418":{"position":[[704,7]]},"544":{"position":[[478,8]]},"547":{"position":[[475,8]]},"863":{"position":[[446,8],[1678,7]]},"865":{"position":[[680,7]]},"868":{"position":[[451,8],[1708,7]]},"871":{"position":[[704,7]]}},"keywords":{}}],["mnist_distributed.pi",{"_index":4255,"title":{},"content":{"980":{"position":[[4,20],[571,20],[694,20]]},"985":{"position":[[4,20],[538,21],[606,21]]}},"keywords":{}}],["mnt.sh",{"_index":3104,"title":{},"content":{"484":{"position":[[390,6],[1116,6],[1135,6]]},"947":{"position":[[390,6],[1116,6],[1135,6]]}},"keywords":{}}],["mnt:[4026533598",{"_index":3136,"title":{},"content":{"484":{"position":[[1235,16]]},"947":{"position":[[1235,16]]}},"keywords":{}}],["mntn",{"_index":3131,"title":{},"content":{"484":{"position":[[1022,8],[1217,5]]},"947":{"position":[[1022,8],[1217,5]]}},"keywords":{}}],["mntns=`readlink",{"_index":3128,"title":{},"content":{"484":{"position":[[948,15]]},"947":{"position":[[948,15]]}},"keywords":{}}],["mod",{"_index":1713,"title":{},"content":{"147":{"position":[[594,5],[657,5]]},"148":{"position":[[228,4]]},"186":{"position":[[62,5]]},"190":{"position":[[132,5]]},"212":{"position":[[60,5]]},"213":{"position":[[11,5]]},"242":{"position":[[49,6]]},"365":{"position":[[1300,4]]},"409":{"position":[[1415,4]]},"647":{"position":[[594,5],[657,5]]},"648":{"position":[[228,4]]},"707":{"position":[[60,5]]},"708":{"position":[[11,5]]},"714":{"position":[[62,5]]},"718":{"position":[[137,5]]},"744":{"position":[[764,3]]},"745":{"position":[[49,6]]},"791":{"position":[[13484,4],[15198,4],[15458,4],[29033,4],[30747,4],[31007,4]]},"839":{"position":[[1300,4]]},"862":{"position":[[1415,4]]},"965":{"position":[[159,4],[9733,4]]}},"keywords":{}}],["model",{"_index":339,"title":{"31":{"position":[[5,5],[39,5]]},"32":{"position":[[6,5]]},"33":{"position":[[8,5]]},"34":{"position":[[9,5]]},"35":{"position":[[9,5]]},"36":{"position":[[9,5]]},"43":{"position":[[9,5]]},"44":{"position":[[22,5]]},"46":{"position":[[20,5]]},"47":{"position":[[16,6]]},"48":{"position":[[17,5]]},"49":{"position":[[19,5]]},"50":{"position":[[20,5]]},"51":{"position":[[20,5]]},"52":{"position":[[20,5]]},"92":{"position":[[48,6]]},"104":{"position":[[0,5]]},"105":{"position":[[29,5]]},"167":{"position":[[0,5]]},"168":{"position":[[0,5]]},"335":{"position":[[18,5]]},"347":{"position":[[13,5]]},"440":{"position":[[0,5],[17,5]]},"474":{"position":[[38,6]]},"510":{"position":[[0,5]]},"530":{"position":[[0,5]]},"606":{"position":[[48,6]]},"618":{"position":[[0,5]]},"619":{"position":[[29,5]]},"674":{"position":[[0,5]]},"675":{"position":[[0,5]]},"805":{"position":[[18,5]]},"821":{"position":[[13,5]]},"906":{"position":[[0,5]]},"914":{"position":[[49,6]]},"924":{"position":[[0,5],[17,5]]}},"content":{"31":{"position":[[195,5]]},"32":{"position":[[206,5]]},"33":{"position":[[354,5]]},"34":{"position":[[214,5]]},"35":{"position":[[260,5]]},"36":{"position":[[283,5]]},"43":{"position":[[56,5]]},"44":{"position":[[266,5]]},"46":{"position":[[24,5],[232,5],[337,5]]},"47":{"position":[[23,5],[99,5],[196,5]]},"48":{"position":[[215,5]]},"49":{"position":[[321,5]]},"50":{"position":[[223,5]]},"51":{"position":[[261,5]]},"52":{"position":[[257,5]]},"58":{"position":[[30,6]]},"89":{"position":[[201,6]]},"90":{"position":[[639,6],[798,7],[2015,6],[2366,5]]},"91":{"position":[[331,5],[387,6],[426,7],[437,5],[487,5]]},"92":{"position":[[49,7],[162,5],[398,5],[794,7],[811,6]]},"98":{"position":[[199,7]]},"99":{"position":[[316,5],[353,5]]},"102":{"position":[[1040,5],[1428,6],[2002,5]]},"104":{"position":[[0,5],[18,5],[77,5],[197,5],[237,5],[277,6],[284,5],[305,5],[356,5],[400,6],[474,5]]},"107":{"position":[[134,7]]},"110":{"position":[[371,7]]},"128":{"position":[[67,5]]},"129":{"position":[[64,5]]},"132":{"position":[[242,8],[712,6],[757,6],[1002,5],[1566,5],[1634,5],[1662,5],[1766,5],[1782,5],[1978,5]]},"133":{"position":[[441,5],[473,5]]},"134":{"position":[[1398,5]]},"139":{"position":[[497,9]]},"148":{"position":[[277,6]]},"161":{"position":[[102,7],[117,5]]},"163":{"position":[[367,5],[384,6]]},"184":{"position":[[84,6]]},"197":{"position":[[193,5],[543,5],[566,5]]},"302":{"position":[[494,5]]},"335":{"position":[[62,5],[157,5],[208,5],[319,6]]},"343":{"position":[[410,6],[799,5],[1341,5],[1847,5]]},"474":{"position":[[7,5],[69,6],[120,5],[151,5],[209,5],[243,5],[359,6]]},"567":{"position":[[30,6]]},"603":{"position":[[201,6]]},"604":{"position":[[639,6],[798,7],[2015,6],[2366,5]]},"605":{"position":[[331,5],[387,6],[426,7],[437,5],[487,5]]},"606":{"position":[[49,7],[162,5],[398,5],[794,7],[811,6]]},"612":{"position":[[199,7]]},"613":{"position":[[316,5],[353,5]]},"616":{"position":[[1045,5],[1440,6],[2014,5]]},"618":{"position":[[0,5],[18,5],[77,5],[198,5],[238,5],[278,6],[285,5],[306,5],[357,5],[401,6],[475,5]]},"621":{"position":[[134,7]]},"624":{"position":[[371,7]]},"635":{"position":[[67,5]]},"636":{"position":[[64,5]]},"639":{"position":[[497,9]]},"648":{"position":[[277,6]]},"660":{"position":[[242,8],[712,6],[757,6],[1002,5],[1566,5],[1634,5],[1662,5],[1766,5],[1782,5],[1978,5]]},"661":{"position":[[441,5],[473,5]]},"662":{"position":[[1398,5]]},"668":{"position":[[102,7],[117,5]]},"670":{"position":[[367,5],[384,6]]},"692":{"position":[[193,5],[543,5],[566,5]]},"712":{"position":[[84,6]]},"770":{"position":[[494,5]]},"778":{"position":[[200,7]]},"779":{"position":[[333,6]]},"805":{"position":[[62,5],[157,5],[208,5],[319,6]]},"817":{"position":[[410,6],[817,5],[1359,5],[1865,5]]},"907":{"position":[[99,7]]},"914":{"position":[[5,5],[14,5]]},"915":{"position":[[7,5],[18,5]]},"916":{"position":[[9,5]]},"917":{"position":[[9,5],[18,5]]},"955":{"position":[[369,7]]},"957":{"position":[[281,5]]},"961":{"position":[[199,5],[415,5]]},"964":{"position":[[931,5],[953,6]]},"966":{"position":[[404,6]]},"970":{"position":[[619,7]]},"972":{"position":[[370,5]]},"990":{"position":[[487,5],[670,5],[875,5]]},"991":{"position":[[557,5],[742,5],[914,5]]}},"keywords":{}}],["model(",{"_index":1662,"title":{},"content":{"139":{"position":[[1978,9]]},"639":{"position":[[1991,9]]}},"keywords":{}}],["model.add",{"_index":2656,"title":{},"content":{"343":{"position":[[827,10]]},"817":{"position":[[845,10]]}},"keywords":{}}],["model.add(layers.conv2d(64",{"_index":2662,"title":{},"content":{"343":{"position":[[948,27],[1043,27]]},"817":{"position":[[966,27],[1061,27]]}},"keywords":{}}],["model.add(layers.dense(10",{"_index":2665,"title":{},"content":{"343":{"position":[[1174,26]]},"817":{"position":[[1192,26]]}},"keywords":{}}],["model.add(layers.dense(64",{"_index":2664,"title":{},"content":{"343":{"position":[[1127,26]]},"817":{"position":[[1145,26]]}},"keywords":{}}],["model.add(layers.flatt",{"_index":2663,"title":{},"content":{"343":{"position":[[1099,27]]},"817":{"position":[[1117,27]]}},"keywords":{}}],["model.add(layers.maxpooling2d((2",{"_index":2661,"title":{},"content":{"343":{"position":[[909,33],[1004,33]]},"817":{"position":[[927,33],[1022,33]]}},"keywords":{}}],["model.compile(optimizer='adam",{"_index":2668,"title":{},"content":{"343":{"position":[[1240,31]]},"817":{"position":[[1258,31]]}},"keywords":{}}],["model.onc",{"_index":1384,"title":{},"content":{"104":{"position":[[182,10]]},"618":{"position":[[183,10]]}},"keywords":{}}],["model.output_dim",{"_index":3011,"title":{},"content":{"474":{"position":[[312,16]]}},"keywords":{}}],["model.summari",{"_index":2667,"title":{},"content":{"343":{"position":[[1224,15]]},"817":{"position":[[1242,15]]}},"keywords":{}}],["model/example_nam",{"_index":452,"title":{},"content":{"48":{"position":[[106,18]]},"49":{"position":[[209,18]]},"50":{"position":[[111,18]]}},"keywords":{}}],["model/metr",{"_index":1809,"title":{},"content":{"160":{"position":[[194,14]]},"667":{"position":[[194,14]]}},"keywords":{}}],["model/tag?name=example_name&tag=789",{"_index":455,"title":{},"content":{"51":{"position":[[126,35]]},"52":{"position":[[130,35]]}},"keywords":{}}],["model/tag?name={name}&tag={tag",{"_index":454,"title":{},"content":{"51":{"position":[[24,31]]},"52":{"position":[[26,31]]}},"keywords":{}}],["model/{nam",{"_index":451,"title":{},"content":{"48":{"position":[[23,12]]},"49":{"position":[[25,12]]},"50":{"position":[[26,12]]}},"keywords":{}}],["model_dir",{"_index":3943,"title":{},"content":{"964":{"position":[[552,12],[1587,12],[1664,9]]},"965":{"position":[[370,9],[611,9],[9867,9],[10090,9],[16165,9]]},"966":{"position":[[488,9]]}},"keywords":{}}],["model_fn_lib.modekeys.ev",{"_index":4196,"title":{},"content":{"967":{"position":[[1220,27]]}},"keywords":{}}],["model_typ",{"_index":3005,"title":{"914":{"position":[[37,11]]}},"content":{"474":{"position":[[44,10]]}},"keywords":{}}],["modelcli",{"_index":2822,"title":{"820":{"position":[[23,13]]},"907":{"position":[[6,13]]}},"content":{"400":{"position":[[99,11]]},"401":{"position":[[126,11]]},"817":{"position":[[2347,11]]},"820":{"position":[[20,11]]},"889":{"position":[[99,11]]},"890":{"position":[[126,11]]},"908":{"position":[[343,11]]},"910":{"position":[[135,11]]},"911":{"position":[[201,11]]},"912":{"position":[[205,11]]},"913":{"position":[[318,11]]}},"keywords":{}}],["modelclient.log_metric(\"acc",{"_index":2831,"title":{},"content":{"401":{"position":[[335,29]]},"890":{"position":[[335,29]]}},"keywords":{}}],["modelclient.log_metric(\"m",{"_index":2829,"title":{},"content":{"401":{"position":[[279,29]]},"890":{"position":[[279,29]]},"912":{"position":[[267,29]]}},"keywords":{}}],["modelclient.log_metrics(metr",{"_index":3781,"title":{},"content":{"913":{"position":[[380,32]]}},"keywords":{}}],["modelclient.log_metrics({\"loss",{"_index":3749,"title":{},"content":{"817":{"position":[[2112,32]]}},"keywords":{}}],["modelclient.log_param(\"learning_r",{"_index":2825,"title":{},"content":{"401":{"position":[[188,38]]},"890":{"position":[[188,38]]},"910":{"position":[[197,38]]}},"keywords":{}}],["modelclient.log_params(param",{"_index":3768,"title":{},"content":{"911":{"position":[[263,30]]}},"keywords":{}}],["modelclient.start",{"_index":2824,"title":{},"content":{"401":{"position":[[160,19]]},"817":{"position":[[2202,19]]},"890":{"position":[[160,19]]},"910":{"position":[[169,19]]},"911":{"position":[[235,19]]},"912":{"position":[[239,19]]},"913":{"position":[[352,19]]}},"keywords":{}}],["modelnam",{"_index":435,"title":{},"content":{"43":{"position":[[163,12]]},"44":{"position":[[95,12]]}},"keywords":{}}],["models.sequenti",{"_index":2655,"title":{},"content":{"343":{"position":[[807,19]]},"817":{"position":[[825,19]]}},"keywords":{}}],["models/ubuntu",{"_index":3903,"title":{},"content":{"955":{"position":[[259,13]]},"970":{"position":[[252,13],[507,13]]}},"keywords":{}}],["modelscli",{"_index":2823,"title":{"908":{"position":[[51,13]]}},"content":{"401":{"position":[[60,12],[140,14]]},"817":{"position":[[439,12],[2361,14]]},"890":{"position":[[60,12],[140,14]]},"907":{"position":[[14,12]]},"908":{"position":[[13,12],[278,12],[330,12]]},"910":{"position":[[122,12],[149,14]]},"911":{"position":[[135,12],[215,14]]},"912":{"position":[[192,12],[219,14]]},"913":{"position":[[263,12],[332,14]]}},"keywords":{}}],["modelsclient(tracking_uri=\"0.0.0.0:4000",{"_index":3755,"title":{},"content":{"908":{"position":[[357,41]]}},"keywords":{}}],["modelsclient(tracking_uri=non",{"_index":3750,"title":{"908":{"position":[[0,31]]}},"content":{},"keywords":{}}],["modelsclient.delete_model(self",{"_index":3788,"title":{"917":{"position":[[7,31]]}},"content":{},"keywords":{}}],["modelsclient.load_model(self",{"_index":3785,"title":{"915":{"position":[[7,29]]}},"content":{},"keywords":{}}],["modelsclient.log_metric(self",{"_index":3769,"title":{"912":{"position":[[0,29]]}},"content":{},"keywords":{}}],["modelsclient.log_metrics(self",{"_index":3775,"title":{"913":{"position":[[0,30]]}},"content":{},"keywords":{}}],["modelsclient.log_param(key",{"_index":3762,"title":{"910":{"position":[[0,27]]}},"content":{},"keywords":{}}],["modelsclient.log_params(param",{"_index":3764,"title":{"911":{"position":[[0,31]]}},"content":{},"keywords":{}}],["modelsclient.save_model(self",{"_index":3783,"title":{"914":{"position":[[7,29]]}},"content":{},"keywords":{}}],["modelsclient.start",{"_index":3757,"title":{"909":{"position":[[0,20]]}},"content":{},"keywords":{}}],["modelsclient.update_model(self",{"_index":3787,"title":{"916":{"position":[[7,31]]}},"content":{},"keywords":{}}],["modelsdocker/tensorflow/base/ubuntu",{"_index":4240,"title":{},"content":{"970":{"position":[[348,35]]}},"keywords":{}}],["modeltf",{"_index":4245,"title":{},"content":{"972":{"position":[[323,7]]}},"keywords":{}}],["modeltyp",{"_index":355,"title":{},"content":{"31":{"position":[[434,11],[797,11],[1160,11],[1524,11]]},"32":{"position":[[442,11]]}},"keywords":{}}],["modelversion\":1",{"_index":436,"title":{},"content":{"43":{"position":[[186,17]]},"44":{"position":[[118,17]]}},"keywords":{}}],["modif",{"_index":1904,"title":{},"content":{"199":{"position":[[293,12]]},"219":{"position":[[102,13]]},"502":{"position":[[3195,13]]},"694":{"position":[[293,12]]},"733":{"position":[[102,13]]}},"keywords":{}}],["modifi",{"_index":729,"title":{},"content":{"53":{"position":[[10559,9],[10576,9]]},"102":{"position":[[1933,8]]},"213":{"position":[[35,9]]},"289":{"position":[[190,6],[229,6],[385,6],[483,10],[687,6],[722,9]]},"314":{"position":[[170,6]]},"616":{"position":[[1945,8]]},"708":{"position":[[35,9]]},"752":{"position":[[190,6],[229,6],[385,6],[483,10],[687,6],[722,9]]},"779":{"position":[[78,8]]},"786":{"position":[[170,6]]},"791":{"position":[[14874,9],[30423,9]]}},"keywords":{}}],["modul",{"_index":1442,"title":{"149":{"position":[[19,7]]},"155":{"position":[[7,7]]},"649":{"position":[[19,7]]},"655":{"position":[[7,7]]}},"content":{"110":{"position":[[1150,6]]},"118":{"position":[[906,7]]},"150":{"position":[[140,7]]},"152":{"position":[[381,7],[752,6],[786,7],[1455,6],[1512,7]]},"162":{"position":[[834,6],[868,8]]},"189":{"position":[[23,6]]},"205":{"position":[[189,6],[280,7]]},"206":{"position":[[174,6]]},"207":{"position":[[18,6],[57,7]]},"208":{"position":[[18,6],[64,7]]},"211":{"position":[[463,6],[641,6],[1210,6]]},"293":{"position":[[53,6],[131,7]]},"306":{"position":[[384,6]]},"624":{"position":[[1155,6]]},"625":{"position":[[907,7]]},"650":{"position":[[140,7]]},"652":{"position":[[387,7],[758,6],[792,7],[1735,6],[1792,7]]},"669":{"position":[[1087,6],[1121,8]]},"700":{"position":[[189,6],[280,7]]},"701":{"position":[[174,6]]},"702":{"position":[[18,6],[57,7]]},"703":{"position":[[18,6],[64,7]]},"706":{"position":[[463,6],[641,6],[1210,6]]},"717":{"position":[[23,6]]},"757":{"position":[[384,6]]},"760":{"position":[[53,6],[131,7]]},"791":{"position":[[2699,7],[18541,7]]},"963":{"position":[[834,6]]},"967":{"position":[[120,8]]}},"keywords":{}}],["modular",{"_index":1929,"title":{},"content":{"205":{"position":[[0,7]]},"700":{"position":[[0,7]]}},"keywords":{}}],["molli",{"_index":3443,"title":{},"content":{"791":{"position":[[2601,5],[18443,5]]}},"keywords":{}}],["monitor",{"_index":1277,"title":{"153":{"position":[[11,7]]},"211":{"position":[[8,10]]},"346":{"position":[[3,7]]},"653":{"position":[[11,7]]},"706":{"position":[[8,10]]},"820":{"position":[[3,7]]}},"content":{"98":{"position":[[141,7]]},"150":{"position":[[162,7]]},"153":{"position":[[4,7]]},"154":{"position":[[171,7],[851,7],[905,7]]},"155":{"position":[[153,7],[377,7]]},"158":{"position":[[1347,10]]},"162":{"position":[[542,9]]},"197":{"position":[[177,11]]},"211":{"position":[[21,7],[452,10],[630,10],[995,10],[1199,10]]},"343":{"position":[[2052,7]]},"612":{"position":[[141,7]]},"650":{"position":[[162,7]]},"653":{"position":[[4,7]]},"654":{"position":[[171,7],[856,7],[910,7]]},"655":{"position":[[159,7],[384,7]]},"658":{"position":[[1347,10]]},"669":{"position":[[694,9]]},"692":{"position":[[177,11]]},"706":{"position":[[21,7],[452,10],[630,10],[995,10],[1199,10]]},"817":{"position":[[2070,7]]}},"keywords":{}}],["monitored/manag",{"_index":1314,"title":{},"content":{"102":{"position":[[417,17]]},"616":{"position":[[417,17]]}},"keywords":{}}],["monkeysph",{"_index":3441,"title":{},"content":{"791":{"position":[[2583,12],[18425,12]]}},"keywords":{}}],["month",{"_index":547,"title":{},"content":{"53":{"position":[[2191,7],[4655,7]]},"92":{"position":[[200,6]]},"260":{"position":[[1001,6]]},"606":{"position":[[200,6]]}},"keywords":{}}],["mor",{"_index":481,"title":{},"content":{"53":{"position":[[682,4],[2874,4],[7926,4]]},"54":{"position":[[2075,4]]},"69":{"position":[[365,4],[477,4]]},"83":{"position":[[523,4]]},"89":{"position":[[125,4]]},"90":{"position":[[161,4],[170,4],[268,4],[277,4],[2353,4]]},"95":{"position":[[10,4]]},"106":{"position":[[114,4],[123,4]]},"115":{"position":[[194,4]]},"116":{"position":[[418,4]]},"117":{"position":[[661,4]]},"121":{"position":[[409,4]]},"128":{"position":[[128,5]]},"130":{"position":[[372,4],[465,4]]},"132":{"position":[[1031,4]]},"140":{"position":[[49,4]]},"141":{"position":[[50,4]]},"142":{"position":[[93,4],[151,4]]},"149":{"position":[[54,4]]},"154":{"position":[[1141,4]]},"161":{"position":[[817,4]]},"175":{"position":[[183,5]]},"182":{"position":[[4,4]]},"203":{"position":[[36,4],[211,4]]},"257":{"position":[[286,4]]},"314":{"position":[[497,4]]},"332":{"position":[[97,4]]},"365":{"position":[[866,4]]},"388":{"position":[[382,4]]},"409":{"position":[[1079,4]]},"424":{"position":[[77,4]]},"425":{"position":[[105,4]]},"471":{"position":[[428,4]]},"495":{"position":[[237,4]]},"578":{"position":[[365,4],[477,4]]},"599":{"position":[[194,4]]},"600":{"position":[[418,4]]},"601":{"position":[[661,4]]},"603":{"position":[[125,4]]},"604":{"position":[[161,4],[170,4],[268,4],[277,4],[2353,4]]},"609":{"position":[[10,4]]},"620":{"position":[[114,4],[123,4]]},"628":{"position":[[409,4]]},"635":{"position":[[128,5]]},"637":{"position":[[372,4],[465,4]]},"640":{"position":[[49,4]]},"641":{"position":[[50,4]]},"642":{"position":[[93,4],[151,4]]},"649":{"position":[[54,4]]},"654":{"position":[[1146,4]]},"660":{"position":[[1031,4]]},"668":{"position":[[817,4]]},"682":{"position":[[183,5]]},"689":{"position":[[4,4]]},"698":{"position":[[36,4],[211,4]]},"786":{"position":[[497,4]]},"802":{"position":[[97,4]]},"839":{"position":[[866,4]]},"862":{"position":[[1079,4]]},"877":{"position":[[382,4]]},"898":{"position":[[77,4]]},"899":{"position":[[105,4]]},"931":{"position":[[428,4]]},"961":{"position":[[734,4]]},"964":{"position":[[733,4]]},"976":{"position":[[152,4]]}},"keywords":{}}],["mostli",{"_index":1229,"title":{},"content":{"93":{"position":[[795,6]]},"607":{"position":[[795,6]]}},"keywords":{}}],["motiv",{"_index":1843,"title":{"177":{"position":[[0,10]]},"684":{"position":[[0,10]]}},"content":{},"keywords":{}}],["mount",{"_index":1249,"title":{},"content":{"94":{"position":[[588,5]]},"134":{"position":[[2229,5]]},"481":{"position":[[301,5],[1831,5]]},"484":{"position":[[460,5],[494,5],[654,9],[735,9]]},"495":{"position":[[92,6],[102,5],[419,5]]},"608":{"position":[[588,5]]},"662":{"position":[[2229,5]]},"944":{"position":[[301,5],[1831,5]]},"947":{"position":[[460,5],[494,5],[654,9],[735,9]]}},"keywords":{}}],["mountpath",{"_index":1631,"title":{},"content":{"134":{"position":[[1995,10],[2127,10]]},"662":{"position":[[1995,10],[2127,10]]}},"keywords":{}}],["mounts=`find",{"_index":3111,"title":{},"content":{"484":{"position":[[591,12]]},"947":{"position":[[591,12]]}},"keywords":{}}],["mous",{"_index":2198,"title":{},"content":{"260":{"position":[[1609,6],[1865,6]]}},"keywords":{}}],["mov",{"_index":591,"title":{},"content":{"53":{"position":[[3773,5]]},"90":{"position":[[2720,6]]},"93":{"position":[[621,4]]},"98":{"position":[[582,5]]},"118":{"position":[[740,4]]},"260":{"position":[[1600,4],[1856,4]]},"316":{"position":[[464,4]]},"604":{"position":[[2720,6]]},"607":{"position":[[621,4]]},"612":{"position":[[582,5]]},"625":{"position":[[741,4]]},"793":{"position":[[464,4]]}},"keywords":{}}],["mpi",{"_index":1741,"title":{},"content":{"152":{"position":[[104,4]]},"652":{"position":[[104,4]]}},"keywords":{}}],["mse",{"_index":3778,"title":{},"content":{"913":{"position":[[286,7]]}},"keywords":{}}],["mt",{"_index":3661,"title":{},"content":{"791":{"position":[[13471,4],[29020,4]]}},"keywords":{}}],["much",{"_index":1539,"title":{},"content":{"121":{"position":[[271,4]]},"134":{"position":[[271,4]]},"139":{"position":[[1786,4]]},"155":{"position":[[330,4]]},"211":{"position":[[1164,4]]},"628":{"position":[[271,4]]},"639":{"position":[[1799,4]]},"655":{"position":[[337,4]]},"662":{"position":[[271,4]]},"706":{"position":[[1164,4]]}},"keywords":{}}],["multi",{"_index":3948,"title":{},"content":{"964":{"position":[[1770,5]]}},"keywords":{}}],["multi_worker_model",{"_index":2683,"title":{},"content":{"343":{"position":[[1910,18]]},"817":{"position":[[1928,18]]}},"keywords":{}}],["multi_worker_model.fit(ds_train",{"_index":2692,"title":{},"content":{"343":{"position":[[2177,32]]},"817":{"position":[[2230,32]]}},"keywords":{}}],["multipl",{"_index":642,"title":{},"content":{"53":{"position":[[6118,8]]},"104":{"position":[[117,8]]},"139":{"position":[[1272,8]]},"151":{"position":[[174,8]]},"152":{"position":[[1324,8]]},"160":{"position":[[988,8]]},"177":{"position":[[63,8]]},"199":{"position":[[0,8],[236,8]]},"212":{"position":[[138,8]]},"297":{"position":[[32,8]]},"313":{"position":[[623,8]]},"618":{"position":[[117,8]]},"639":{"position":[[1278,8]]},"651":{"position":[[174,8]]},"652":{"position":[[1604,8]]},"667":{"position":[[989,8]]},"684":{"position":[[63,8]]},"694":{"position":[[0,8],[236,8]]},"707":{"position":[[138,8]]},"764":{"position":[[32,8]]},"785":{"position":[[623,8]]},"788":{"position":[[802,8]]},"913":{"position":[[4,8]]},"964":{"position":[[34,8]]}},"keywords":{}}],["multiworkermirroredstrategi",{"_index":2632,"title":{},"content":{"343":{"position":[[63,27]]},"817":{"position":[[63,27]]}},"keywords":{}}],["mutual",{"_index":1905,"title":{},"content":{"199":{"position":[[338,6]]},"694":{"position":[[338,6]]}},"keywords":{}}],["mv",{"_index":2468,"title":{},"content":{"316":{"position":[[509,2]]},"793":{"position":[[509,2]]}},"keywords":{}}],["mvn",{"_index":1993,"title":{},"content":{"219":{"position":[[329,3]]},"220":{"position":[[0,3]]},"221":{"position":[[137,3],[236,5]]},"238":{"position":[[202,3]]},"267":{"position":[[234,3],[292,3]]},"270":{"position":[[303,3]]},"274":{"position":[[217,3]]},"289":{"position":[[1287,3],[1310,3]]},"306":{"position":[[400,3],[454,3]]},"733":{"position":[[329,3]]},"734":{"position":[[31,3],[140,3],[228,3],[330,3],[432,3],[533,3],[613,3]]},"735":{"position":[[137,3],[236,5]]},"742":{"position":[[202,3]]},"752":{"position":[[1287,3],[1310,3]]},"757":{"position":[[400,3],[454,3]]},"934":{"position":[[126,3]]}},"keywords":{}}],["mvnw",{"_index":2006,"title":{},"content":{"221":{"position":[[210,6],[247,7],[264,6]]},"735":{"position":[[210,6],[247,7],[264,6]]}},"keywords":{}}],["mxnet",{"_index":3837,"title":{"949":{"position":[[18,5]]},"950":{"position":[[35,5]]},"951":{"position":[[31,5]]},"987":{"position":[[7,5]]},"989":{"position":[[43,5]]}},"content":{"940":{"position":[[143,5]]},"950":{"position":[[18,5],[70,5],[133,5],[254,5],[378,6],[451,5],[485,5],[706,5],[761,5]]},"951":{"position":[[63,5],[95,5],[168,5],[258,5]]},"952":{"position":[[128,5],[279,6]]},"988":{"position":[[50,5]]},"989":{"position":[[52,5]]},"990":{"position":[[285,5],[313,5]]},"991":{"position":[[320,5],[348,5]]}},"keywords":{}}],["mxnet==1.5.1",{"_index":4323,"title":{},"content":{"989":{"position":[[354,12]]}},"keywords":{}}],["mxnetmxnet",{"_index":3863,"title":{},"content":{"952":{"position":[[201,10]]}},"keywords":{}}],["my_bucket",{"_index":3925,"title":{},"content":{"963":{"position":[[483,11]]}},"keywords":{}}],["my_bucket=gs://<mi",{"_index":3922,"title":{},"content":{"963":{"position":[[417,18]]}},"keywords":{}}],["my_submarine_env",{"_index":1469,"title":{},"content":{"113":{"position":[[110,19]]},"115":{"position":[[856,19],[1206,17]]},"597":{"position":[[110,19]]},"599":{"position":[[856,19],[1206,17]]}},"keywords":{}}],["mycallback(tf.keras.callbacks.callback",{"_index":2684,"title":{},"content":{"343":{"position":[[1967,40]]},"817":{"position":[[1985,40]]}},"keywords":{}}],["myhostnam",{"_index":3664,"title":{},"content":{"791":{"position":[[14177,11],[14322,12],[29726,11],[29871,12]]}},"keywords":{}}],["mynetwork",{"_index":3671,"title":{},"content":{"791":{"position":[[14403,11],[29952,11]]}},"keywords":{}}],["myorigin",{"_index":3668,"title":{},"content":{"791":{"position":[[14291,8],[29840,8]]}},"keywords":{}}],["mypi",{"_index":2912,"title":{},"content":{"435":{"position":[[349,4]]},"437":{"position":[[263,4]]},"919":{"position":[[357,4],[362,5],[440,4]]},"921":{"position":[[263,4]]}},"keywords":{}}],["mysql",{"_index":1736,"title":{},"content":{"150":{"position":[[108,7]]},"471":{"position":[[216,5]]},"489":{"position":[[104,5],[119,5]]},"490":{"position":[[113,5],[234,5]]},"491":{"position":[[657,5],[702,5]]},"650":{"position":[[108,7]]},"791":{"position":[[2634,5],[18476,5]]},"931":{"position":[[216,5]]}},"keywords":{}}],["mysql+pymysql://submarine:password@submarin",{"_index":2991,"title":{},"content":{"471":{"position":[[358,44]]},"931":{"position":[[358,44]]}},"keywords":{}}],["mysql_jar_url",{"_index":3169,"title":{},"content":{"491":{"position":[[612,13]]}},"keywords":{}}],["mysql_jdbc_url",{"_index":3172,"title":{},"content":{"491":{"position":[[804,14]]}},"keywords":{}}],["mysql_root_password=password",{"_index":3146,"title":{},"content":{"488":{"position":[[218,28]]}},"keywords":{}}],["mysql_v",{"_index":3170,"title":{},"content":{"491":{"position":[[673,13]]}},"keywords":{}}],["myvenv.zip",{"_index":4252,"title":{},"content":{"979":{"position":[[471,10],[538,10]]},"984":{"position":[[378,10]]},"989":{"position":[[374,10]]}},"keywords":{}}],["myvenv.zip/venv/bin/python",{"_index":4268,"title":{},"content":{"980":{"position":[[543,27],[666,27]]},"985":{"position":[[510,27],[578,27]]},"990":{"position":[[415,27],[598,27]]}},"keywords":{}}],["n",{"_index":1535,"title":{},"content":{"121":{"position":[[16,1],[18,2]]},"221":{"position":[[142,1]]},"260":{"position":[[919,3],[940,1],[969,1],[999,1],[1030,1]]},"628":{"position":[[16,1],[18,2]]},"735":{"position":[[142,1]]},"744":{"position":[[1041,1],[1302,1],[1599,1]]}},"keywords":{}}],["n)am",{"_index":2190,"title":{},"content":{"260":{"position":[[1426,7]]}},"keywords":{}}],["n>i",{"_index":2184,"title":{},"content":{"260":{"position":[[1008,4]]}},"keywords":{}}],["n>m",{"_index":2183,"title":{},"content":{"260":{"position":[[977,4]]}},"keywords":{}}],["n>w",{"_index":2182,"title":{},"content":{"260":{"position":[[947,4]]}},"keywords":{}}],["n_estim",{"_index":3767,"title":{},"content":{"911":{"position":[[181,15]]}},"keywords":{}}],["nam",{"_index":31,"title":{"915":{"position":[[37,5]]},"916":{"position":[[39,5]]},"917":{"position":[[39,5]]}},"content":{"3":{"position":[[121,5]]},"4":{"position":[[113,4],[673,5]]},"9":{"position":[[97,7],[183,6],[684,7],[770,6]]},"10":{"position":[[235,7],[321,6],[717,7],[805,6]]},"11":{"position":[[257,7],[343,6]]},"12":{"position":[[107,7],[193,6],[597,7],[683,6],[893,6],[1003,6]]},"13":{"position":[[260,7],[346,6]]},"15":{"position":[[94,7],[216,7],[330,7],[438,7],[525,4],[719,7]]},"18":{"position":[[87,7],[213,7],[327,7],[435,7],[522,4],[716,7],[1204,6]]},"20":{"position":[[113,7]]},"22":{"position":[[106,7],[701,7],[864,7]]},"23":{"position":[[106,7],[347,7],[848,7],[1011,7],[1252,7]]},"24":{"position":[[210,7],[373,7],[864,7],[1019,7]]},"25":{"position":[[243,7],[406,7]]},"26":{"position":[[114,7],[717,7]]},"27":{"position":[[246,7],[409,7]]},"31":{"position":[[462,6],[825,6],[1188,6],[1552,6]]},"32":{"position":[[470,6]]},"33":{"position":[[102,7]]},"38":{"position":[[104,7],[213,7],[978,7]]},"39":{"position":[[720,7]]},"40":{"position":[[711,7]]},"41":{"position":[[276,7],[565,7],[673,7],[771,7]]},"43":{"position":[[62,5]]},"46":{"position":[[102,7]]},"47":{"position":[[351,6],[529,6],[691,6]]},"48":{"position":[[367,6]]},"49":{"position":[[112,7]]},"53":{"position":[[307,4]]},"60":{"position":[[38,5]]},"73":{"position":[[197,4]]},"113":{"position":[[104,5]]},"115":{"position":[[520,5],[850,5],[922,5]]},"134":{"position":[[1412,5],[1881,5],[1922,5],[1980,5],[2030,5],[2112,5],[2155,5]]},"140":{"position":[[222,5],[568,4],[584,4],[1022,5]]},"146":{"position":[[197,5]]},"147":{"position":[[376,4],[880,4],[1258,4],[1283,4]]},"152":{"position":[[1462,5]]},"157":{"position":[[819,5],[1047,5],[1173,5]]},"158":{"position":[[1095,5]]},"178":{"position":[[146,5],[173,5],[462,5],[548,5]]},"179":{"position":[[168,5]]},"181":{"position":[[197,5],[283,5],[453,5],[492,4]]},"209":{"position":[[133,4],[414,4]]},"260":{"position":[[66,5],[116,4],[227,5],[1206,5],[1239,4]]},"327":{"position":[[261,4],[268,4],[1159,4]]},"340":{"position":[[92,4]]},"346":{"position":[[127,4]]},"350":{"position":[[60,4],[105,5],[143,5],[254,4],[294,5],[322,5]]},"351":{"position":[[62,7],[148,6]]},"355":{"position":[[6,4],[59,5]]},"358":{"position":[[6,4],[68,5],[111,5]]},"359":{"position":[[63,7],[149,6]]},"361":{"position":[[6,4],[59,5]]},"365":{"position":[[58,4],[313,4],[357,5],[740,4],[925,4],[1023,4],[1040,5],[1065,5],[1240,4]]},"366":{"position":[[72,7]]},"369":{"position":[[72,7],[313,7]]},"373":{"position":[[6,4]]},"376":{"position":[[6,4]]},"377":{"position":[[73,7]]},"379":{"position":[[6,4]]},"384":{"position":[[6,4]]},"388":{"position":[[50,4],[252,4],[294,5],[438,4]]},"389":{"position":[[72,7],[181,7]]},"391":{"position":[[6,4]]},"394":{"position":[[6,4]]},"397":{"position":[[6,4]]},"405":{"position":[[12,7]]},"409":{"position":[[6,4],[67,5],[117,5],[379,4],[422,5],[602,4],[857,4],[901,5],[1138,4],[1236,4],[1253,5],[1278,5],[1373,4]]},"410":{"position":[[62,7],[184,7],[298,7],[406,7],[493,4],[687,7],[1644,4]]},"412":{"position":[[646,4]]},"414":{"position":[[6,4],[76,5],[126,5]]},"415":{"position":[[63,7],[189,7],[303,7],[411,7],[498,4],[692,7],[1674,4]]},"417":{"position":[[6,4],[67,5]]},"418":{"position":[[670,4]]},"420":{"position":[[6,4],[76,5],[82,4],[119,5]]},"421":{"position":[[62,7]]},"424":{"position":[[291,7]]},"425":{"position":[[298,7]]},"435":{"position":[[156,4]]},"458":{"position":[[39,5]]},"459":{"position":[[41,5]]},"463":{"position":[[121,5]]},"464":{"position":[[113,4],[673,5]]},"479":{"position":[[133,4]]},"484":{"position":[[374,5],[1014,7],[1212,4]]},"488":{"position":[[191,4],[369,4]]},"491":{"position":[[225,4]]},"492":{"position":[[85,4]]},"495":{"position":[[836,4]]},"496":{"position":[[490,5]]},"498":{"position":[[192,5]]},"502":{"position":[[1003,5],[1310,4],[1732,4]]},"538":{"position":[[97,7],[183,6],[684,7],[770,6]]},"539":{"position":[[235,7],[321,6],[717,7],[805,6]]},"540":{"position":[[257,7],[343,6]]},"541":{"position":[[107,7],[193,6],[597,7],[683,6],[893,6],[1003,6]]},"542":{"position":[[260,7],[346,6]]},"544":{"position":[[94,7],[216,7],[330,7],[438,7],[525,4],[719,7]]},"547":{"position":[[87,7],[213,7],[327,7],[435,7],[522,4],[716,7],[1204,6]]},"549":{"position":[[113,7]]},"551":{"position":[[106,7],[701,7],[864,7]]},"552":{"position":[[106,7],[347,7],[848,7],[1011,7],[1252,7]]},"553":{"position":[[210,7],[373,7],[864,7],[1019,7]]},"554":{"position":[[243,7],[406,7]]},"555":{"position":[[114,7],[717,7]]},"556":{"position":[[246,7],[409,7]]},"560":{"position":[[104,7],[213,7],[978,7]]},"561":{"position":[[720,7]]},"562":{"position":[[711,7]]},"563":{"position":[[276,7],[565,7],[673,7],[771,7]]},"569":{"position":[[38,5]]},"582":{"position":[[197,4]]},"597":{"position":[[104,5]]},"599":{"position":[[520,5],[850,5],[922,5]]},"640":{"position":[[222,5],[568,4],[584,4],[1022,5]]},"646":{"position":[[197,5]]},"647":{"position":[[376,4],[880,4],[1258,4],[1283,4]]},"652":{"position":[[1742,5]]},"657":{"position":[[819,5],[1047,5],[1173,5]]},"658":{"position":[[1095,5]]},"662":{"position":[[1412,5],[1881,5],[1922,5],[1980,5],[2030,5],[2112,5],[2155,5]]},"685":{"position":[[146,5],[173,5],[462,5],[548,5]]},"686":{"position":[[168,5]]},"688":{"position":[[197,5],[283,5],[453,5],[492,4]]},"704":{"position":[[133,4],[414,4]]},"788":{"position":[[834,5],[907,5],[975,5]]},"791":{"position":[[377,4]]},"808":{"position":[[261,4],[268,4],[810,4]]},"814":{"position":[[94,4]]},"824":{"position":[[60,4],[105,5],[143,5],[254,4],[294,5],[322,5]]},"825":{"position":[[62,7],[148,6]]},"829":{"position":[[6,4],[59,5]]},"832":{"position":[[6,4],[68,5],[111,5]]},"833":{"position":[[63,7],[149,6]]},"835":{"position":[[6,4],[59,5]]},"839":{"position":[[58,4],[313,4],[357,5],[740,4],[925,4],[1023,4],[1040,5],[1065,5],[1240,4]]},"840":{"position":[[72,7]]},"843":{"position":[[72,7],[313,7]]},"847":{"position":[[6,4]]},"850":{"position":[[6,4]]},"851":{"position":[[73,7]]},"853":{"position":[[6,4]]},"858":{"position":[[6,4]]},"862":{"position":[[6,4],[67,5],[117,5],[379,4],[422,5],[602,4],[857,4],[901,5],[1138,4],[1236,4],[1253,5],[1278,5],[1373,4]]},"863":{"position":[[62,7],[184,7],[298,7],[406,7],[493,4],[687,7],[1644,4]]},"865":{"position":[[646,4]]},"867":{"position":[[6,4],[76,5],[126,5]]},"868":{"position":[[63,7],[189,7],[303,7],[411,7],[498,4],[692,7],[1674,4]]},"870":{"position":[[6,4],[67,5]]},"871":{"position":[[670,4]]},"873":{"position":[[6,4],[76,5],[82,4],[119,5]]},"874":{"position":[[62,7]]},"877":{"position":[[50,4],[252,4],[294,5],[438,4]]},"878":{"position":[[72,7],[181,7]]},"880":{"position":[[6,4]]},"883":{"position":[[6,4]]},"886":{"position":[[6,4]]},"894":{"position":[[12,7]]},"898":{"position":[[291,7]]},"899":{"position":[[298,7]]},"909":{"position":[[114,5]]},"912":{"position":[[60,4]]},"916":{"position":[[22,5]]},"919":{"position":[[156,4]]},"942":{"position":[[133,4]]},"947":{"position":[[374,5],[1014,7],[1212,4]]},"963":{"position":[[443,5],[841,4]]},"965":{"position":[[1488,5],[1734,5],[7641,5],[7820,5],[7999,5],[8178,5],[8357,5],[8536,5],[8715,5],[8894,5],[10905,5],[11151,5]]},"980":{"position":[[343,4],[1120,5],[1321,5],[1522,5],[2156,5],[2354,5],[2556,5]]},"981":{"position":[[237,4]]},"985":{"position":[[340,4],[980,5],[1181,5],[1382,5],[2016,5],[2214,5],[2416,5]]},"986":{"position":[[237,4]]},"990":{"position":[[280,4],[1273,5],[1475,5],[1677,5],[1879,5],[2081,5],[3024,5],[3231,5],[3435,5],[3639,5],[3843,5]]},"991":{"position":[[315,4]]}},"keywords":{}}],["name\":\"batch_s",{"_index":2851,"title":{},"content":{"410":{"position":[[1472,20]]},"412":{"position":[[474,20]]},"415":{"position":[[1502,20]]},"418":{"position":[[498,20]]},"863":{"position":[[1472,20]]},"865":{"position":[[474,20]]},"868":{"position":[[1502,20]]},"871":{"position":[[498,20]]}},"keywords":{}}],["name\":\"experiment_nam",{"_index":2853,"title":{},"content":{"410":{"position":[[1580,25]]},"412":{"position":[[582,25]]},"415":{"position":[[1610,25]]},"418":{"position":[[606,25]]},"863":{"position":[[1580,25]]},"865":{"position":[[582,25]]},"868":{"position":[[1610,25]]},"871":{"position":[[606,25]]}},"keywords":{}}],["name\":\"learning_r",{"_index":2848,"title":{},"content":{"410":{"position":[[1358,23]]},"412":{"position":[[360,23]]},"415":{"position":[[1388,23]]},"418":{"position":[[384,23]]},"863":{"position":[[1358,23]]},"865":{"position":[[360,23]]},"868":{"position":[[1388,23]]},"871":{"position":[[384,23]]}},"keywords":{}}],["name\":\"mi",{"_index":2709,"title":{},"content":{"351":{"position":[[667,10]]},"353":{"position":[[545,10]]},"356":{"position":[[233,10]]},"359":{"position":[[554,10]]},"362":{"position":[[236,10]]},"369":{"position":[[1271,10]]},"371":{"position":[[1752,10]]},"374":{"position":[[688,10]]},"410":{"position":[[1239,10]]},"412":{"position":[[241,10]]},"415":{"position":[[1265,10]]},"418":{"position":[[261,10]]},"825":{"position":[[667,10]]},"827":{"position":[[545,10]]},"830":{"position":[[233,10]]},"833":{"position":[[554,10]]},"836":{"position":[[236,10]]},"843":{"position":[[1271,10]]},"845":{"position":[[1752,10]]},"848":{"position":[[688,10]]},"863":{"position":[[1239,10]]},"865":{"position":[[241,10]]},"868":{"position":[[1265,10]]},"871":{"position":[[261,10]]}},"keywords":{}}],["name\":\"newexperiment1",{"_index":2780,"title":{},"content":{"371":{"position":[[195,24],[496,24]]},"421":{"position":[[375,24],[594,24]]},"845":{"position":[[195,24],[496,24]]},"874":{"position":[[375,24],[594,24]]}},"keywords":{}}],["name\":\"notebook",{"_index":403,"title":{},"content":{"38":{"position":[[883,16]]},"39":{"position":[[625,16]]},"40":{"position":[[616,16]]},"353":{"position":[[218,16],[1118,16]]},"389":{"position":[[846,16]]},"392":{"position":[[593,16]]},"395":{"position":[[581,16]]},"398":{"position":[[611,16]]},"560":{"position":[[883,16]]},"561":{"position":[[625,16]]},"562":{"position":[[616,16]]},"827":{"position":[[218,16],[1118,16]]},"878":{"position":[[846,16]]},"881":{"position":[[593,16]]},"884":{"position":[[581,16]]},"887":{"position":[[611,16]]}},"keywords":{}}],["name\":\"spec.ps.replica",{"_index":2856,"title":{},"content":{"410":{"position":[[1691,26]]},"412":{"position":[[693,26]]},"415":{"position":[[1721,26]]},"418":{"position":[[717,26]]},"863":{"position":[[1691,26]]},"865":{"position":[[693,26]]},"868":{"position":[[1721,26]]},"871":{"position":[[717,26]]}},"keywords":{}}],["name\":\"spec.ps.resourcemap.cpu",{"_index":2859,"title":{},"content":{"410":{"position":[[1773,33]]},"412":{"position":[[775,33]]},"415":{"position":[[1803,33]]},"418":{"position":[[799,33]]},"863":{"position":[[1773,33]]},"865":{"position":[[775,33]]},"868":{"position":[[1803,33]]},"871":{"position":[[799,33]]}},"keywords":{}}],["name\":\"spec.ps.resourcemap.memori",{"_index":2860,"title":{},"content":{"410":{"position":[[1862,36]]},"412":{"position":[[864,36]]},"415":{"position":[[1892,36]]},"418":{"position":[[888,36]]},"863":{"position":[[1862,36]]},"865":{"position":[[864,36]]},"868":{"position":[[1892,36]]},"871":{"position":[[888,36]]}},"keywords":{}}],["name\":\"spec.worker.replica",{"_index":2862,"title":{},"content":{"410":{"position":[[1958,30]]},"412":{"position":[[960,30]]},"415":{"position":[[1988,30]]},"418":{"position":[[984,30]]},"863":{"position":[[1958,30]]},"865":{"position":[[960,30]]},"868":{"position":[[1988,30]]},"871":{"position":[[984,30]]}},"keywords":{}}],["name\":\"spec.worker.resourcemap.cpu",{"_index":2863,"title":{},"content":{"410":{"position":[[2044,37]]},"412":{"position":[[1046,37]]},"415":{"position":[[2074,37]]},"418":{"position":[[1070,37]]},"863":{"position":[[2044,37]]},"865":{"position":[[1046,37]]},"868":{"position":[[2074,37]]},"871":{"position":[[1070,37]]}},"keywords":{}}],["name\":\"spec.worker.resourcemap.memori",{"_index":2864,"title":{},"content":{"410":{"position":[[2137,40]]},"412":{"position":[[1139,40]]},"415":{"position":[[2167,40]]},"418":{"position":[[1163,40]]},"863":{"position":[[2137,40]]},"865":{"position":[[1139,40]]},"868":{"position":[[2167,40]]},"871":{"position":[[1163,40]]}},"keywords":{}}],["name\":\"submarine_jupyter_py3",{"_index":2723,"title":{},"content":{"353":{"position":[[330,31],[1222,31]]},"389":{"position":[[950,31]]},"392":{"position":[[697,31]]},"395":{"position":[[685,31]]},"398":{"position":[[715,31]]},"827":{"position":[[330,31],[1222,31]]},"878":{"position":[[950,31]]},"881":{"position":[[697,31]]},"884":{"position":[[685,31]]},"887":{"position":[[715,31]]}},"keywords":{}}],["name\":\"t",{"_index":388,"title":{},"content":{"38":{"position":[[526,12],[778,12]]},"39":{"position":[[268,12],[520,12]]},"40":{"position":[[261,12],[511,12]]},"389":{"position":[[486,12],[741,12]]},"392":{"position":[[250,12],[488,12]]},"395":{"position":[[238,12],[476,12]]},"398":{"position":[[245,12],[506,12]]},"560":{"position":[[526,12],[778,12]]},"561":{"position":[[268,12],[520,12]]},"562":{"position":[[261,12],[511,12]]},"878":{"position":[[486,12],[741,12]]},"881":{"position":[[250,12],[488,12]]},"884":{"position":[[238,12],[476,12]]},"887":{"position":[[245,12],[506,12]]}},"keywords":{}}],["name\":\"team_default_python_3.7",{"_index":2711,"title":{},"content":{"351":{"position":[[748,33]]},"353":{"position":[[626,33]]},"356":{"position":[[314,33]]},"362":{"position":[[317,33]]},"825":{"position":[[748,33]]},"827":{"position":[[626,33]]},"830":{"position":[[314,33]]},"836":{"position":[[317,33]]}},"keywords":{}}],["name\":\"team_default_python_3.7_upd",{"_index":2726,"title":{},"content":{"359":{"position":[[635,41]]},"833":{"position":[[635,41]]}},"keywords":{}}],["name\":\"tf",{"_index":2741,"title":{},"content":{"366":{"position":[[686,10],[904,10]]},"369":{"position":[[806,10],[1024,10]]},"371":{"position":[[1287,10],[1505,10]]},"374":{"position":[[223,10],[441,10]]},"377":{"position":[[717,10],[935,10]]},"380":{"position":[[226,10],[416,10]]},"840":{"position":[[686,10],[904,10]]},"843":{"position":[[806,10],[1024,10]]},"845":{"position":[[1287,10],[1505,10]]},"848":{"position":[[223,10],[441,10]]},"851":{"position":[[717,10],[935,10]]},"854":{"position":[[226,10],[416,10]]}},"keywords":{}}],["name\":\"{{experiment_nam",{"_index":2865,"title":{},"content":{"410":{"position":[[2264,29]]},"412":{"position":[[1266,29]]},"415":{"position":[[2294,29]]},"418":{"position":[[1290,29]]},"863":{"position":[[2264,29]]},"865":{"position":[[1266,29]]},"868":{"position":[[2294,29]]},"871":{"position":[[1290,29]]}},"keywords":{}}],["name\":nul",{"_index":2760,"title":{},"content":{"366":{"position":[[1151,12],[1355,12],[1525,12]]},"369":{"position":[[1447,12],[1617,12]]},"371":{"position":[[743,12],[947,12],[1117,12],[1928,12],[2098,12]]},"374":{"position":[[864,12],[1034,12]]},"377":{"position":[[1182,12],[1386,12],[1556,12]]},"380":{"position":[[663,12],[867,12],[1037,12]]},"410":{"position":[[2540,12],[2744,12],[2917,12]]},"412":{"position":[[1542,12],[1746,12],[1919,12]]},"415":{"position":[[2570,12],[2774,12],[2944,12]]},"418":{"position":[[1566,12],[1770,12],[1940,12]]},"421":{"position":[[841,12],[1045,12],[1215,12]]},"840":{"position":[[1151,12],[1355,12],[1525,12]]},"843":{"position":[[1447,12],[1617,12]]},"845":{"position":[[743,12],[947,12],[1117,12],[1928,12],[2098,12]]},"848":{"position":[[864,12],[1034,12]]},"851":{"position":[[1182,12],[1386,12],[1556,12]]},"854":{"position":[[663,12],[867,12],[1037,12]]},"863":{"position":[[2540,12],[2744,12],[2917,12]]},"865":{"position":[[1542,12],[1746,12],[1919,12]]},"868":{"position":[[2570,12],[2774,12],[2944,12]]},"871":{"position":[[1566,12],[1770,12],[1940,12]]},"874":{"position":[[841,12],[1045,12],[1215,12]]}},"keywords":{}}],["name.input_dim",{"_index":3009,"title":{},"content":{"474":{"position":[[268,14]]}},"keywords":{}}],["name.registered_model_nam",{"_index":3008,"title":{},"content":{"474":{"position":[[157,26]]}},"keywords":{}}],["name.valu",{"_index":2995,"title":{},"content":{"472":{"position":[[97,10]]},"473":{"position":[[90,10]]},"932":{"position":[[97,10]]},"933":{"position":[[90,10]]}},"keywords":{}}],["name/policycache</valu",{"_index":3812,"title":{},"content":{"939":{"position":[[533,24]]}},"keywords":{}}],["name</valu",{"_index":3809,"title":{},"content":{"939":{"position":[[416,12]]}},"keywords":{}}],["name=`p",{"_index":3125,"title":{},"content":{"484":{"position":[[921,8]]},"947":{"position":[[921,8]]}},"keywords":{}}],["name=nam",{"_index":4193,"title":{},"content":{"967":{"position":[[1074,10]]}},"keywords":{}}],["name>ranger.plugin.spark.policy.cache.dir</nam",{"_index":3810,"title":{},"content":{"939":{"position":[[452,49]]}},"keywords":{}}],["name>ranger.plugin.spark.policy.pollintervalms</nam",{"_index":3813,"title":{},"content":{"939":{"position":[[581,54]]}},"keywords":{}}],["name>ranger.plugin.spark.policy.rest.url</nam",{"_index":3803,"title":{},"content":{"939":{"position":[[199,48]]}},"keywords":{}}],["name>ranger.plugin.spark.policy.source.impl</nam",{"_index":3815,"title":{},"content":{"939":{"position":[[679,51]]}},"keywords":{}}],["name>ranger.plugin.spark.service.name</nam",{"_index":3807,"title":{},"content":{"939":{"position":[[341,45]]}},"keywords":{}}],["name>xasecure.audit.destination.db.jdbc.driver</nam",{"_index":3823,"title":{},"content":{"939":{"position":[[1144,54]]}},"keywords":{}}],["name>xasecure.audit.destination.db.jdbc.url</nam",{"_index":3825,"title":{},"content":{"939":{"position":[[1259,51]]}},"keywords":{}}],["name>xasecure.audit.destination.db.password</nam",{"_index":3827,"title":{},"content":{"939":{"position":[[1383,51]]}},"keywords":{}}],["name>xasecure.audit.destination.db.user</nam",{"_index":3829,"title":{},"content":{"939":{"position":[[1485,47]]}},"keywords":{}}],["name>xasecure.audit.destination.db</nam",{"_index":3821,"title":{},"content":{"939":{"position":[[1057,42]]}},"keywords":{}}],["name>xasecure.audit.is.enabled</nam",{"_index":3819,"title":{},"content":{"939":{"position":[[975,38]]}},"keywords":{}}],["namespac",{"_index":38,"title":{},"content":{"3":{"position":[[177,10]]},"4":{"position":[[660,10]]},"15":{"position":[[808,12]]},"18":{"position":[[805,12]]},"22":{"position":[[131,12],[889,12]]},"23":{"position":[[131,12],[1036,12]]},"24":{"position":[[398,12],[1049,12]]},"25":{"position":[[431,12]]},"26":{"position":[[139,12],[742,12]]},"27":{"position":[[434,12]]},"38":{"position":[[123,12]]},"41":{"position":[[584,12]]},"178":{"position":[[424,10]]},"180":{"position":[[324,9],[358,9]]},"365":{"position":[[363,9],[391,10]]},"366":{"position":[[97,12]]},"369":{"position":[[97,12]]},"377":{"position":[[98,12]]},"388":{"position":[[300,9],[326,10]]},"389":{"position":[[91,12]]},"405":{"position":[[57,12]]},"409":{"position":[[907,9],[935,10]]},"410":{"position":[[776,12]]},"415":{"position":[[781,12]]},"424":{"position":[[316,12]]},"425":{"position":[[323,12]]},"463":{"position":[[177,10]]},"464":{"position":[[660,10]]},"484":{"position":[[500,11]]},"495":{"position":[[870,9]]},"496":{"position":[[237,9]]},"544":{"position":[[808,12]]},"547":{"position":[[805,12]]},"551":{"position":[[131,12],[889,12]]},"552":{"position":[[131,12],[1036,12]]},"553":{"position":[[398,12],[1049,12]]},"554":{"position":[[431,12]]},"555":{"position":[[139,12],[742,12]]},"556":{"position":[[434,12]]},"560":{"position":[[123,12]]},"563":{"position":[[584,12]]},"685":{"position":[[424,10]]},"687":{"position":[[345,9],[411,9]]},"839":{"position":[[363,9],[391,10]]},"840":{"position":[[97,12]]},"843":{"position":[[97,12]]},"851":{"position":[[98,12]]},"862":{"position":[[907,9],[935,10]]},"863":{"position":[[776,12]]},"868":{"position":[[781,12]]},"877":{"position":[[300,9],[326,10]]},"878":{"position":[[91,12]]},"894":{"position":[[57,12]]},"898":{"position":[[316,12]]},"899":{"position":[[323,12]]},"947":{"position":[[500,11]]}},"keywords":{}}],["namespace\":\"default",{"_index":401,"title":{},"content":{"38":{"position":[[796,22]]},"39":{"position":[[538,22]]},"40":{"position":[[529,22]]},"366":{"position":[[928,22]]},"369":{"position":[[1048,22]]},"371":{"position":[[521,22],[1529,22]]},"374":{"position":[[465,22]]},"377":{"position":[[959,22]]},"380":{"position":[[440,22]]},"389":{"position":[[759,22]]},"392":{"position":[[506,22]]},"395":{"position":[[494,22]]},"398":{"position":[[524,22]]},"410":{"position":[[2294,22]]},"412":{"position":[[1296,22]]},"415":{"position":[[2324,22]]},"418":{"position":[[1320,22]]},"421":{"position":[[619,22]]},"560":{"position":[[796,22]]},"561":{"position":[[538,22]]},"562":{"position":[[529,22]]},"840":{"position":[[928,22]]},"843":{"position":[[1048,22]]},"845":{"position":[[521,22],[1529,22]]},"848":{"position":[[465,22]]},"851":{"position":[[959,22]]},"854":{"position":[[440,22]]},"863":{"position":[[2294,22]]},"865":{"position":[[1296,22]]},"868":{"position":[[2324,22]]},"871":{"position":[[1320,22]]},"874":{"position":[[619,22]]},"878":{"position":[[759,22]]},"881":{"position":[[506,22]]},"884":{"position":[[494,22]]},"887":{"position":[[524,22]]}},"keywords":{}}],["namespace.th",{"_index":2417,"title":{},"content":{"310":{"position":[[192,13]]},"782":{"position":[[192,13]]}},"keywords":{}}],["namespace='default",{"_index":2557,"title":{},"content":{"328":{"position":[[771,20]]},"809":{"position":[[791,20]]}},"keywords":{}}],["namevalu",{"_index":3763,"title":{},"content":{"910":{"position":[[64,9]]}},"keywords":{}}],["nativ",{"_index":1869,"title":{"186":{"position":[[6,6]]},"714":{"position":[[6,6]]}},"content":{"184":{"position":[[36,7]]},"712":{"position":[[36,7]]}},"keywords":{}}],["natur",{"_index":1128,"title":{},"content":{"90":{"position":[[1629,9]]},"604":{"position":[[1629,9]]}},"keywords":{}}],["navigator=1.9.12=py37_0",{"_index":169,"title":{},"content":{"9":{"position":[[404,26],[991,26]]},"10":{"position":[[542,26]]},"11":{"position":[[564,26]]},"115":{"position":[[698,23],[1119,23]]},"351":{"position":[[369,26]]},"538":{"position":[[404,26],[991,26]]},"539":{"position":[[542,26]]},"540":{"position":[[564,26]]},"599":{"position":[[698,23],[1119,23]]},"825":{"position":[[369,26]]}},"keywords":{}}],["navigator\\u003d1.9.12\\u003dpy37_0",{"_index":2717,"title":{},"content":{"351":{"position":[[1004,36]]},"353":{"position":[[882,36]]},"356":{"position":[[570,36]]},"362":{"position":[[573,36]]},"825":{"position":[[1004,36]]},"827":{"position":[[882,36]]},"830":{"position":[[570,36]]},"836":{"position":[[573,36]]}},"keywords":{}}],["nb",{"_index":380,"title":{},"content":{"38":{"position":[[118,4],[539,4],[620,5],[791,4]]},"39":{"position":[[281,4],[362,5],[533,4]]},"40":{"position":[[274,4],[355,5],[524,4]]},"41":{"position":[[290,4],[373,5],[579,4]]},"389":{"position":[[86,4],[499,4],[754,4]]},"392":{"position":[[263,4],[501,4]]},"395":{"position":[[251,4],[489,4]]},"398":{"position":[[258,4],[519,4]]},"560":{"position":[[118,4],[539,4],[620,5],[791,4]]},"561":{"position":[[281,4],[362,5],[533,4]]},"562":{"position":[[274,4],[355,5],[524,4]]},"563":{"position":[[290,4],[373,5],[579,4]]},"878":{"position":[[86,4],[499,4],[754,4]]},"881":{"position":[[263,4],[501,4]]},"884":{"position":[[251,4],[489,4]]},"887":{"position":[[258,4],[519,4]]}},"keywords":{}}],["nb/lab",{"_index":2811,"title":{},"content":{"389":{"position":[[580,8]]},"392":{"position":[[344,8]]},"395":{"position":[[332,8]]},"398":{"position":[[339,8]]},"878":{"position":[[580,8]]},"881":{"position":[[344,8]]},"884":{"position":[[332,8]]},"887":{"position":[[339,8]]}},"keywords":{}}],["ncur",{"_index":3418,"title":{},"content":{"791":{"position":[[2228,7],[3120,7],[6025,7],[11564,7],[11598,11],[11659,7],[16314,7],[18070,7],[18944,7],[21743,7],[27113,7],[27147,11],[27208,7],[31168,7]]}},"keywords":{}}],["ndg",{"_index":3455,"title":{},"content":{"791":{"position":[[2773,3],[18615,3]]}},"keywords":{}}],["ne",{"_index":3107,"title":{},"content":{"484":{"position":[[521,2]]},"947":{"position":[[521,2]]}},"keywords":{}}],["necessari",{"_index":635,"title":{},"content":{"53":{"position":[[5954,10]]},"107":{"position":[[992,9]]},"621":{"position":[[995,9]]}},"keywords":{}}],["necessarili",{"_index":694,"title":{},"content":{"53":{"position":[[8323,11]]}},"keywords":{}}],["need",{"_index":796,"title":{"92":{"position":[[71,6]]},"606":{"position":[[71,6]]}},"content":{"54":{"position":[[2310,4]]},"61":{"position":[[17,4]]},"79":{"position":[[628,5],[938,4],[1352,5],[1710,5],[1857,5]]},"83":{"position":[[18,4]]},"90":{"position":[[2847,6]]},"92":{"position":[[309,5],[413,5],[646,4],[891,4]]},"93":{"position":[[84,4]]},"96":{"position":[[47,5],[163,5],[462,5]]},"106":{"position":[[194,4],[358,4],[433,7]]},"107":{"position":[[28,4]]},"108":{"position":[[13,4]]},"113":{"position":[[293,4]]},"114":{"position":[[290,7]]},"117":{"position":[[684,6]]},"124":{"position":[[36,4]]},"127":{"position":[[236,5]]},"129":{"position":[[177,4]]},"130":{"position":[[437,4]]},"132":{"position":[[1596,4],[1648,5],[1840,4],[2032,4]]},"133":{"position":[[336,5],[557,4]]},"134":{"position":[[957,4],[1293,4]]},"136":{"position":[[24,5]]},"147":{"position":[[1368,4]]},"151":{"position":[[345,7],[508,7]]},"153":{"position":[[148,6],[300,4]]},"155":{"position":[[225,4]]},"158":{"position":[[2929,4]]},"187":{"position":[[58,5]]},"190":{"position":[[149,4]]},"200":{"position":[[141,4]]},"203":{"position":[[129,4]]},"205":{"position":[[96,4]]},"211":{"position":[[12,5]]},"213":{"position":[[93,4]]},"219":{"position":[[198,4],[275,5]]},"252":{"position":[[2104,4]]},"253":{"position":[[275,4]]},"258":{"position":[[93,6]]},"260":{"position":[[0,4],[1150,5],[1490,4],[1746,4]]},"263":{"position":[[878,7],[1569,7]]},"289":{"position":[[221,4]]},"327":{"position":[[1034,5]]},"332":{"position":[[89,7]]},"335":{"position":[[133,4]]},"343":{"position":[[1872,4]]},"404":{"position":[[77,4]]},"481":{"position":[[1995,5]]},"488":{"position":[[92,4]]},"490":{"position":[[96,4]]},"491":{"position":[[390,4]]},"495":{"position":[[255,4]]},"498":{"position":[[13,5],[459,6]]},"570":{"position":[[17,4]]},"590":{"position":[[18,4]]},"597":{"position":[[293,4]]},"598":{"position":[[290,7]]},"601":{"position":[[684,6]]},"604":{"position":[[2847,6]]},"606":{"position":[[309,5],[413,5],[646,4],[891,4]]},"607":{"position":[[84,4]]},"610":{"position":[[47,5],[163,5],[462,5]]},"620":{"position":[[194,4],[358,4],[433,7]]},"621":{"position":[[28,4]]},"622":{"position":[[13,4]]},"631":{"position":[[36,4]]},"634":{"position":[[236,5]]},"636":{"position":[[177,4]]},"637":{"position":[[437,4]]},"647":{"position":[[1368,4]]},"651":{"position":[[345,7],[508,7]]},"653":{"position":[[148,6],[300,4]]},"655":{"position":[[154,4],[232,4]]},"658":{"position":[[2929,4]]},"660":{"position":[[1596,4],[1648,5],[1840,4],[2032,4]]},"661":{"position":[[336,5],[557,4]]},"662":{"position":[[957,4],[1293,4]]},"664":{"position":[[24,5]]},"695":{"position":[[141,4]]},"698":{"position":[[129,4]]},"700":{"position":[[96,4]]},"706":{"position":[[12,5]]},"708":{"position":[[93,4]]},"715":{"position":[[58,5]]},"718":{"position":[[154,4]]},"733":{"position":[[198,4],[275,5]]},"752":{"position":[[221,4]]},"777":{"position":[[32,4],[247,4]]},"791":{"position":[[41,5],[1750,4],[3381,4],[14741,4],[14805,7],[19205,4],[30290,4],[30354,7]]},"802":{"position":[[89,7]]},"805":{"position":[[133,4]]},"808":{"position":[[685,5]]},"817":{"position":[[1890,4]]},"893":{"position":[[77,4]]},"908":{"position":[[93,4],[204,4]]},"944":{"position":[[1995,5]]},"950":{"position":[[32,5],[228,4]]},"954":{"position":[[34,5],[232,4]]},"963":{"position":[[310,4]]},"964":{"position":[[69,4],[1956,4]]},"969":{"position":[[37,4],[229,4]]},"978":{"position":[[4,5]]},"979":{"position":[[71,6],[598,4],[644,6]]},"983":{"position":[[4,5]]},"984":{"position":[[68,6]]},"988":{"position":[[4,5]]},"989":{"position":[[66,6]]}},"keywords":{}}],["neg",{"_index":661,"title":{},"content":{"53":{"position":[[6716,8]]}},"keywords":{}}],["netbas",{"_index":3419,"title":{},"content":{"791":{"position":[[2241,7],[3133,7],[4826,7],[9691,8],[9767,7],[13906,7],[18083,7],[18957,7],[20650,7],[25409,8],[25485,7],[29455,7]]}},"keywords":{}}],["network",{"_index":1251,"title":{"210":{"position":[[0,7]]},"705":{"position":[[0,7]]}},"content":{"94":{"position":[[607,8]]},"210":{"position":[[43,7],[62,7]]},"263":{"position":[[444,7]]},"277":{"position":[[65,7]]},"303":{"position":[[563,7]]},"313":{"position":[[582,8]]},"479":{"position":[[220,7]]},"608":{"position":[[607,8]]},"705":{"position":[[43,7],[62,7]]},"771":{"position":[[563,7]]},"785":{"position":[[582,8]]},"791":{"position":[[592,7]]},"942":{"position":[[220,7]]}},"keywords":{}}],["nev",{"_index":1625,"title":{},"content":{"134":{"position":[[1782,5]]},"252":{"position":[[539,5],[648,5],[784,5],[893,5],[1415,5],[1524,5],[1654,5],[1763,5]]},"662":{"position":[[1782,5]]}},"keywords":{}}],["new",{"_index":235,"title":{"61":{"position":[[16,3]]},"73":{"position":[[0,3]]},"243":{"position":[[6,3]]},"291":{"position":[[6,3]]},"570":{"position":[[16,3]]},"582":{"position":[[0,3]]},"746":{"position":[[6,3]]},"754":{"position":[[6,3]]}},"content":{"18":{"position":[[137,5]]},"53":{"position":[[613,3],[4326,3],[5296,3],[9356,3],[9579,3],[9648,3],[9754,3],[9775,3],[9858,3]]},"54":{"position":[[1836,3]]},"61":{"position":[[0,3],[151,5],[235,3]]},"62":{"position":[[126,3]]},"66":{"position":[[76,3]]},"70":{"position":[[5,3]]},"73":{"position":[[0,3],[93,3],[152,3]]},"75":{"position":[[308,3]]},"79":{"position":[[2107,3]]},"82":{"position":[[180,3],[361,3]]},"86":{"position":[[577,3]]},"92":{"position":[[158,3]]},"93":{"position":[[909,3]]},"102":{"position":[[1926,3]]},"107":{"position":[[746,3],[828,3],[839,3]]},"113":{"position":[[308,3],[574,3]]},"114":{"position":[[355,3]]},"115":{"position":[[1162,3]]},"125":{"position":[[720,3]]},"126":{"position":[[77,3]]},"129":{"position":[[14,3]]},"130":{"position":[[163,3]]},"134":{"position":[[331,3]]},"151":{"position":[[322,3]]},"152":{"position":[[1443,3]]},"154":{"position":[[713,3]]},"158":{"position":[[2728,3]]},"236":{"position":[[225,3]]},"238":{"position":[[189,3],[241,3],[568,3],[586,3]]},"240":{"position":[[260,3]]},"242":{"position":[[183,3]]},"243":{"position":[[21,3]]},"267":{"position":[[9,3]]},"327":{"position":[[137,3],[164,4],[231,3],[1093,3],[1128,3]]},"328":{"position":[[1407,3]]},"330":{"position":[[56,3]]},"345":{"position":[[37,3]]},"415":{"position":[[113,5],[1313,5]]},"418":{"position":[[309,5]]},"439":{"position":[[330,3]]},"440":{"position":[[264,3]]},"441":{"position":[[48,3]]},"476":{"position":[[28,5]]},"487":{"position":[[133,3]]},"496":{"position":[[609,3]]},"500":{"position":[[363,4]]},"502":{"position":[[1105,3],[1135,3],[1249,3]]},"520":{"position":[[177,4]]},"522":{"position":[[555,3],[581,3]]},"547":{"position":[[137,5]]},"570":{"position":[[0,3],[151,5],[235,3]]},"571":{"position":[[126,3]]},"575":{"position":[[76,3]]},"579":{"position":[[5,3]]},"582":{"position":[[0,3],[93,3],[152,3]]},"584":{"position":[[308,3]]},"589":{"position":[[180,3],[361,3]]},"597":{"position":[[308,3],[574,3]]},"598":{"position":[[355,3]]},"599":{"position":[[1162,3]]},"606":{"position":[[158,3]]},"607":{"position":[[909,3]]},"616":{"position":[[1938,3]]},"621":{"position":[[747,3],[830,3],[841,3]]},"632":{"position":[[720,3]]},"633":{"position":[[77,3]]},"636":{"position":[[14,3]]},"637":{"position":[[163,3]]},"651":{"position":[[322,3]]},"652":{"position":[[1723,3]]},"654":{"position":[[713,3]]},"658":{"position":[[2728,3]]},"662":{"position":[[331,3]]},"740":{"position":[[228,3]]},"742":{"position":[[189,3],[241,3],[692,3]]},"744":{"position":[[260,3]]},"745":{"position":[[183,3]]},"746":{"position":[[21,3]]},"791":{"position":[[2852,3],[15298,3],[18694,3],[30847,3]]},"800":{"position":[[56,3]]},"808":{"position":[[137,3],[164,4],[231,3],[744,3],[779,3]]},"809":{"position":[[1427,3]]},"819":{"position":[[37,3]]},"868":{"position":[[113,5],[1313,5]]},"871":{"position":[[309,5]]},"909":{"position":[[34,3]]},"916":{"position":[[18,3]]},"924":{"position":[[252,3]]},"925":{"position":[[48,3]]}},"keywords":{}}],["new_dataset",{"_index":371,"title":{},"content":{"33":{"position":[[211,13]]}},"keywords":{}}],["new_descript",{"_index":369,"title":{},"content":{"33":{"position":[[151,18]]},"49":{"position":[[147,17]]}},"keywords":{}}],["new_kind",{"_index":102,"title":{},"content":{"4":{"position":[[794,9]]},"464":{"position":[[794,9]]}},"keywords":{}}],["new_nam",{"_index":453,"title":{"916":{"position":[[45,9]]}},"content":{"49":{"position":[[120,11]]}},"keywords":{}}],["new_not",{"_index":1980,"title":{},"content":{"214":{"position":[[15,9]]},"709":{"position":[[15,9]]}},"keywords":{}}],["newalias",{"_index":3685,"title":{},"content":{"791":{"position":[[14946,10],[30495,10]]}},"keywords":{}}],["newli",{"_index":3461,"title":{},"content":{"791":{"position":[[3331,5],[17582,5],[19155,5],[32436,5]]}},"keywords":{}}],["next",{"_index":1080,"title":{},"content":{"90":{"position":[[136,4]]},"263":{"position":[[949,5],[1644,5]]},"270":{"position":[[597,4]]},"279":{"position":[[421,4]]},"604":{"position":[[136,4]]},"967":{"position":[[2227,4]]}},"keywords":{}}],["nexu",{"_index":2310,"title":{"274":{"position":[[42,5]]}},"content":{},"keywords":{}}],["nf",{"_index":2424,"title":{},"content":{"313":{"position":[[87,4],[578,3],[608,4],[694,3],[735,3],[827,3],[876,3],[915,3],[934,3],[991,3],[1026,3],[1114,3],[1170,3],[1276,3],[1280,4]]},"365":{"position":[[1204,3]]},"785":{"position":[[87,4],[578,3],[608,4],[694,3],[735,3],[827,3],[876,3],[915,3],[934,3],[991,3],[1026,3],[1114,3],[1170,3],[1276,3],[1280,4]]},"839":{"position":[[1204,3]]}},"keywords":{}}],["nfs.to",{"_index":2445,"title":{},"content":{"313":{"position":[[1148,6]]},"785":{"position":[[1148,6]]}},"keywords":{}}],["nic",{"_index":1490,"title":{},"content":{"115":{"position":[[115,6]]},"599":{"position":[[115,6]]}},"keywords":{}}],["nin",{"_index":3215,"title":{},"content":{"500":{"position":[[284,4]]}},"keywords":{}}],["ninja",{"_index":3883,"title":{},"content":{"954":{"position":[[1104,5]]}},"keywords":{}}],["no_push",{"_index":831,"title":{},"content":{"60":{"position":[[386,7],[600,7]]},"569":{"position":[[386,7],[600,7]]}},"keywords":{}}],["nod",{"_index":1785,"title":{},"content":{"157":{"position":[[948,4]]},"313":{"position":[[959,5]]},"314":{"position":[[773,6]]},"495":{"position":[[131,4],[192,6],[369,6],[477,4]]},"496":{"position":[[199,5]]},"657":{"position":[[948,4]]},"785":{"position":[[959,5]]},"786":{"position":[[773,6]]},"791":{"position":[[17691,4]]},"964":{"position":[[1240,5],[1267,4],[1354,5]]},"979":{"position":[[623,6]]}},"keywords":{}}],["node.usag",{"_index":2427,"title":{},"content":{"313":{"position":[[290,11]]},"785":{"position":[[290,11]]}},"keywords":{}}],["nodej",{"_index":2022,"title":{"229":{"position":[[0,6]]}},"content":{},"keywords":{}}],["nodemanag",{"_index":3048,"title":{"481":{"position":[[23,11]]},"944":{"position":[[23,11]]}},"content":{"481":{"position":[[1690,11]]},"944":{"position":[[1690,11]]}},"keywords":{}}],["nodeport",{"_index":121,"title":{},"content":{"5":{"position":[[103,8]]},"314":{"position":[[379,8],[895,8]]},"465":{"position":[[103,8]]},"495":{"position":[[648,8]]},"786":{"position":[[379,8],[895,8]]}},"keywords":{}}],["noise.tgz",{"_index":3351,"title":{},"content":{"788":{"position":[[353,9]]}},"keywords":{}}],["non",{"_index":45,"title":{"100":{"position":[[17,3]]},"429":{"position":[[54,4]]},"471":{"position":[[40,4]]},"472":{"position":[[45,4]]},"473":{"position":[[56,4]]},"474":{"position":[[94,5],[118,5],[143,6],[153,4]]},"614":{"position":[[17,3]]},"903":{"position":[[54,4]]},"910":{"position":[[35,5]]},"911":{"position":[[32,5]]},"912":{"position":[[53,5]]},"913":{"position":[[51,5]]},"916":{"position":[[55,5]]},"917":{"position":[[54,5]]},"931":{"position":[[40,4]]},"932":{"position":[[45,4]]},"933":{"position":[[56,4]]}},"content":{"3":{"position":[[237,4]]},"31":{"position":[[293,7],[656,7],[1019,7],[1383,7]]},"32":{"position":[[301,7]]},"53":{"position":[[7193,3]]},"54":{"position":[[1639,3]]},"74":{"position":[[607,3]]},"107":{"position":[[1410,3]]},"132":{"position":[[1493,3]]},"281":{"position":[[1386,3],[1426,3]]},"455":{"position":[[98,3]]},"463":{"position":[[237,4]]},"470":{"position":[[25,4],[101,5]]},"474":{"position":[[199,5]]},"583":{"position":[[607,3]]},"621":{"position":[[1413,3]]},"660":{"position":[[1493,3]]},"930":{"position":[[25,4],[101,5]]},"965":{"position":[[972,5],[1134,5],[10454,5],[10616,5],[16523,5],[16685,5]]},"969":{"position":[[1186,4]]}},"keywords":{}}],["noqa",{"_index":2962,"title":{},"content":{"439":{"position":[[1361,5]]}},"keywords":{}}],["normal",{"_index":1886,"title":{},"content":{"186":{"position":[[560,6]]},"203":{"position":[[90,9]]},"267":{"position":[[133,7]]},"698":{"position":[[90,9]]},"714":{"position":[[560,6]]}},"keywords":{}}],["normally.verifi",{"_index":2153,"title":{},"content":{"255":{"position":[[410,15]]}},"keywords":{}}],["normally.wheth",{"_index":2149,"title":{},"content":{"254":{"position":[[305,16]]}},"keywords":{}}],["not",{"_index":85,"title":{"118":{"position":[[15,5]]},"213":{"position":[[22,5]]},"214":{"position":[[11,4]]},"215":{"position":[[10,4]]},"625":{"position":[[15,5]]},"708":{"position":[[22,5]]},"709":{"position":[[11,4]]},"710":{"position":[[10,4]]}},"content":{"4":{"position":[[475,4]]},"53":{"position":[[10172,5],[10408,5]]},"83":{"position":[[289,4]]},"112":{"position":[[333,4]]},"118":{"position":[[642,6]]},"128":{"position":[[247,4]]},"145":{"position":[[129,4]]},"158":{"position":[[7,4]]},"161":{"position":[[854,4]]},"199":{"position":[[489,5]]},"213":{"position":[[61,4]]},"215":{"position":[[4,4]]},"219":{"position":[[184,4]]},"279":{"position":[[555,4]]},"289":{"position":[[516,5]]},"324":{"position":[[57,6],[604,6],[875,6]]},"464":{"position":[[475,4]]},"488":{"position":[[13,5]]},"590":{"position":[[289,4]]},"596":{"position":[[333,4]]},"625":{"position":[[643,6]]},"635":{"position":[[247,4]]},"645":{"position":[[129,4]]},"658":{"position":[[7,4]]},"668":{"position":[[854,4]]},"694":{"position":[[489,5]]},"708":{"position":[[61,4]]},"710":{"position":[[4,4]]},"733":{"position":[[184,4]]},"752":{"position":[[516,5]]},"774":{"position":[[57,6],[328,6]]},"788":{"position":[[765,4]]},"979":{"position":[[685,5]]},"981":{"position":[[1231,7]]}},"keywords":{}}],["notebook",{"_index":59,"title":{"37":{"position":[[0,8]]},"38":{"position":[[9,8]]},"39":{"position":[[5,8]]},"40":{"position":[[8,8]]},"41":{"position":[[11,8]]},"101":{"position":[[0,8]]},"119":{"position":[[0,8]]},"148":{"position":[[27,8]]},"165":{"position":[[0,8]]},"325":{"position":[[8,8]]},"326":{"position":[[13,9]]},"327":{"position":[[0,9]]},"328":{"position":[[21,8]]},"386":{"position":[[0,8]]},"387":{"position":[[9,8]]},"390":{"position":[[5,8]]},"393":{"position":[[8,8]]},"396":{"position":[[11,8]]},"448":{"position":[[0,9]]},"449":{"position":[[5,9]]},"450":{"position":[[4,9]]},"451":{"position":[[7,9]]},"496":{"position":[[15,8]]},"559":{"position":[[0,8]]},"560":{"position":[[9,8]]},"561":{"position":[[5,8]]},"562":{"position":[[8,8]]},"563":{"position":[[11,8]]},"615":{"position":[[0,8]]},"626":{"position":[[0,8]]},"648":{"position":[[27,8]]},"672":{"position":[[0,8]]},"806":{"position":[[8,8]]},"807":{"position":[[13,9]]},"808":{"position":[[0,9]]},"809":{"position":[[21,8]]},"875":{"position":[[0,8]]},"876":{"position":[[9,8]]},"879":{"position":[[5,8]]},"882":{"position":[[8,8]]},"885":{"position":[[11,8]]}},"content":{"4":{"position":[[144,8]]},"38":{"position":[[221,9],[451,8],[661,8],[946,8]]},"39":{"position":[[190,8],[404,8],[688,8]]},"40":{"position":[[186,8],[395,8],[679,8]]},"41":{"position":[[199,8],[419,8],[681,9],[738,8]]},"89":{"position":[[183,8]]},"90":{"position":[[985,9],[1030,8],[1180,9]]},"101":{"position":[[50,9],[68,9],[201,9],[219,9],[316,8],[402,8],[475,8],[517,8],[545,8]]},"103":{"position":[[156,9],[481,8]]},"106":{"position":[[262,8]]},"107":{"position":[[99,9]]},"110":{"position":[[346,11]]},"112":{"position":[[156,9],[1170,8]]},"114":{"position":[[569,9]]},"115":{"position":[[1179,8]]},"117":{"position":[[219,9],[863,9],[1113,9]]},"118":{"position":[[469,9]]},"121":{"position":[[37,8],[58,8],[88,8],[107,8],[198,8],[249,8],[399,9],[482,9],[628,8],[675,8],[731,8],[788,8]]},"122":{"position":[[20,8],[143,8]]},"124":{"position":[[8,8]]},"125":{"position":[[132,8],[147,8],[334,8],[488,8],[593,8],[621,8],[678,8],[724,8]]},"126":{"position":[[46,8]]},"127":{"position":[[71,9],[301,8]]},"128":{"position":[[146,9],[312,8],[433,9]]},"129":{"position":[[659,8]]},"130":{"position":[[72,8],[132,9]]},"132":{"position":[[66,8],[138,10],[804,9],[968,8],[1624,9],[1797,9],[1956,8]]},"134":{"position":[[1388,9]]},"136":{"position":[[82,9],[122,8],[158,8],[297,8],[363,8]]},"146":{"position":[[139,9]]},"147":{"position":[[569,8],[632,8],[703,8]]},"148":{"position":[[116,8],[208,8],[341,8],[758,8]]},"160":{"position":[[405,8],[1074,8]]},"161":{"position":[[64,10]]},"163":{"position":[[159,9]]},"197":{"position":[[373,9]]},"213":{"position":[[176,9]]},"214":{"position":[[73,8]]},"281":{"position":[[1022,8],[1073,8]]},"302":{"position":[[445,8]]},"324":{"position":[[433,8],[479,8]]},"326":{"position":[[36,10]]},"327":{"position":[[0,9],[60,10],[113,10],[141,8],[169,10],[235,8],[252,8],[280,8],[634,9],[663,8],[1070,9],[1097,9],[1132,8],[1172,8]]},"328":{"position":[[16,9],[1411,9],[1475,8],[1535,8]]},"334":{"position":[[130,8]]},"340":{"position":[[123,8]]},"353":{"position":[[285,8],[1181,8]]},"388":{"position":[[106,9],[217,8],[285,8],[317,8]]},"389":{"position":[[189,9],[411,8],[624,8],[909,8]]},"392":{"position":[[172,8],[656,8]]},"394":{"position":[[45,8]]},"395":{"position":[[163,8],[644,8]]},"397":{"position":[[45,8]]},"398":{"position":[[170,8],[386,8],[674,8]]},"449":{"position":[[15,8]]},"450":{"position":[[14,8],[23,9],[54,8]]},"451":{"position":[[17,8],[26,9]]},"464":{"position":[[144,8]]},"496":{"position":[[90,9],[170,8],[275,8],[315,8],[438,8],[507,8],[551,8],[590,8]]},"502":{"position":[[268,9],[758,8],[1622,9],[3174,8],[3352,8],[3416,8],[3468,8],[3490,8],[3704,9],[3770,9]]},"522":{"position":[[432,8],[738,8],[1446,8],[1501,8],[1534,8],[1543,22],[1579,8],[1599,8],[1720,9],[1752,8]]},"560":{"position":[[221,9],[451,8],[661,8],[946,8]]},"561":{"position":[[190,8],[404,8],[688,8]]},"562":{"position":[[186,8],[395,8],[679,8]]},"563":{"position":[[199,8],[419,8],[681,9],[738,8]]},"596":{"position":[[156,9],[1170,8]]},"598":{"position":[[569,9]]},"599":{"position":[[1179,8]]},"601":{"position":[[219,9],[863,9],[1113,9]]},"603":{"position":[[183,8]]},"604":{"position":[[985,9],[1030,8],[1180,9]]},"615":{"position":[[50,9],[68,9],[201,9],[219,9],[316,8],[402,8],[475,8],[517,8],[545,8]]},"617":{"position":[[156,9],[481,8]]},"620":{"position":[[262,8]]},"621":{"position":[[99,9]]},"624":{"position":[[346,11]]},"625":{"position":[[470,9]]},"628":{"position":[[37,8],[58,8],[88,8],[107,8],[198,8],[249,8],[399,9],[482,9],[628,8],[675,8],[731,8],[788,8]]},"629":{"position":[[20,8],[143,8]]},"631":{"position":[[8,8]]},"632":{"position":[[132,8],[147,8],[334,8],[488,8],[593,8],[621,8],[678,8],[724,8]]},"633":{"position":[[46,8]]},"634":{"position":[[71,9],[301,8]]},"635":{"position":[[146,9],[312,8],[433,9]]},"636":{"position":[[659,8]]},"637":{"position":[[72,8],[132,9]]},"646":{"position":[[139,9]]},"647":{"position":[[569,8],[632,8],[703,8]]},"648":{"position":[[116,8],[208,8],[341,8],[758,8]]},"660":{"position":[[66,8],[138,10],[804,9],[968,8],[1624,9],[1797,9],[1956,8]]},"662":{"position":[[1388,9]]},"664":{"position":[[82,9],[122,8],[158,8],[297,8],[363,8]]},"667":{"position":[[405,8],[1075,8]]},"668":{"position":[[64,10]]},"670":{"position":[[159,9]]},"692":{"position":[[373,9]]},"708":{"position":[[176,9]]},"709":{"position":[[73,8]]},"770":{"position":[[445,8]]},"804":{"position":[[130,8]]},"807":{"position":[[36,10]]},"808":{"position":[[0,9],[60,10],[113,10],[141,8],[169,10],[235,8],[252,8],[280,8],[634,9],[721,9],[748,9],[783,8],[823,8]]},"809":{"position":[[16,9],[1431,9],[1495,8],[1555,8]]},"814":{"position":[[125,8]]},"827":{"position":[[285,8],[1181,8]]},"877":{"position":[[106,9],[217,8],[285,8],[317,8]]},"878":{"position":[[189,9],[411,8],[624,8],[909,8]]},"881":{"position":[[172,8],[656,8]]},"883":{"position":[[45,8]]},"884":{"position":[[163,8],[644,8]]},"886":{"position":[[45,8]]},"887":{"position":[[170,8],[386,8],[674,8]]}},"keywords":{}}],["notebook'",{"_index":1301,"title":{},"content":{"101":{"position":[[355,10]]},"128":{"position":[[10,10],[257,10]]},"146":{"position":[[484,10]]},"148":{"position":[[709,10]]},"615":{"position":[[355,10]]},"635":{"position":[[10,10],[257,10]]},"646":{"position":[[484,10]]},"648":{"position":[[709,10]]}},"keywords":{}}],["notebook.a",{"_index":1382,"title":{},"content":{"104":{"position":[[66,10]]},"618":{"position":[[66,10]]}},"keywords":{}}],["notebook.readthedocs.io/en/stable/security.html",{"_index":1573,"title":{},"content":{"130":{"position":[[321,48]]},"637":{"position":[[321,48]]}},"keywords":{}}],["notebook/default/t",{"_index":424,"title":{},"content":{"41":{"position":[[349,23]]},"563":{"position":[[349,23]]}},"keywords":{}}],["notebook/experiments/model",{"_index":1592,"title":{},"content":{"132":{"position":[[1997,26]]},"660":{"position":[[1997,26]]}},"keywords":{}}],["notebook_1597931805405_0001",{"_index":421,"title":{},"content":{"41":{"position":[[245,30]]},"563":{"position":[[245,30]]}},"keywords":{}}],["notebookid",{"_index":420,"title":{},"content":{"41":{"position":[[231,13]]},"563":{"position":[[231,13]]}},"keywords":{}}],["notebookid\":\"notebook_1597931805405_0001",{"_index":387,"title":{},"content":{"38":{"position":[[482,43]]},"39":{"position":[[224,43]]},"40":{"position":[[217,43]]},"560":{"position":[[482,43]]},"561":{"position":[[224,43]]},"562":{"position":[[217,43]]}},"keywords":{}}],["notebookid\":\"notebook_1626160071451_0001",{"_index":2805,"title":{},"content":{"389":{"position":[[442,43]]},"392":{"position":[[206,43]]},"395":{"position":[[194,43]]},"398":{"position":[[201,43]]},"878":{"position":[[442,43]]},"881":{"position":[[206,43]]},"884":{"position":[[194,43]]},"887":{"position":[[201,43]]}},"keywords":{}}],["notebookmeta",{"_index":2802,"title":{},"content":{"388":{"position":[[76,12],[232,13]]},"877":{"position":[[76,12],[232,13]]}},"keywords":{}}],["notebookpodspec",{"_index":2803,"title":{},"content":{"388":{"position":[[189,15],[415,16]]},"877":{"position":[[189,15],[415,16]]}},"keywords":{}}],["notebookrestapi",{"_index":2940,"title":{},"content":{"439":{"position":[[218,15],[782,16]]}},"keywords":{}}],["notebookserver#onmessag",{"_index":1983,"title":{},"content":{"214":{"position":[[89,26]]},"709":{"position":[[89,26]]}},"keywords":{}}],["notebookspec",{"_index":2801,"title":{},"content":{"388":{"position":[[0,12],[30,13]]},"877":{"position":[[0,12],[30,13]]}},"keywords":{}}],["notebookto",{"_index":3203,"title":{},"content":{"496":{"position":[[145,10]]}},"keywords":{}}],["notebook、python、r、scala、tensorflow",{"_index":3248,"title":{},"content":{"522":{"position":[[94,34]]}},"keywords":{}}],["notic",{"_index":2146,"title":{},"content":{"254":{"position":[[169,6]]},"255":{"position":[[240,6]]},"404":{"position":[[138,8]]},"439":{"position":[[1154,7]]},"893":{"position":[[138,8]]}},"keywords":{}}],["notice:if",{"_index":2452,"title":{},"content":{"314":{"position":[[566,9]]},"786":{"position":[[566,9]]}},"keywords":{}}],["notif",{"_index":1009,"title":{},"content":{"79":{"position":[[2033,12]]}},"keywords":{}}],["notifi",{"_index":1979,"title":{},"content":{"213":{"position":[[104,8]]},"215":{"position":[[25,9]]},"708":{"position":[[104,8]]},"710":{"position":[[25,9]]}},"keywords":{}}],["novic",{"_index":3239,"title":{},"content":{"502":{"position":[[3239,7]]}},"keywords":{}}],["now",{"_index":1158,"title":{},"content":{"90":{"position":[[2801,3]]},"180":{"position":[[178,3]]},"281":{"position":[[1333,3]]},"321":{"position":[[19,3]]},"334":{"position":[[89,3]]},"604":{"position":[[2801,3]]},"687":{"position":[[199,3]]},"791":{"position":[[14693,3],[30242,3]]},"798":{"position":[[19,3]]},"804":{"position":[[89,3]]},"992":{"position":[[83,3],[259,4]]}},"keywords":{}}],["nowaday",{"_index":1081,"title":{},"content":{"90":{"position":[[148,9]]},"604":{"position":[[148,9]]}},"keywords":{}}],["npm",{"_index":2053,"title":{},"content":{"239":{"position":[[206,3],[263,3]]},"743":{"position":[[190,3],[247,3]]}},"keywords":{}}],["nproc",{"_index":3321,"title":{},"content":{"777":{"position":[[979,8],[1068,8],[1090,8]]}},"keywords":{}}],["ns",{"_index":3283,"title":{},"content":{"744":{"position":[[1003,2]]}},"keywords":{}}],["ntpd",{"_index":3135,"title":{},"content":{"484":{"position":[[1230,4]]},"947":{"position":[[1230,4]]}},"keywords":{}}],["ntvqp",{"_index":73,"title":{},"content":{"4":{"position":[[289,5]]},"464":{"position":[[289,5]]}},"keywords":{}}],["null",{"_index":287,"title":{},"content":{"28":{"position":[[168,5],[185,5],[311,4],[449,4],[516,4]]},"29":{"position":[[203,5],[220,5]]},"31":{"position":[[313,5],[335,5],[676,5],[698,5],[1039,5],[1061,5],[1403,5],[1425,5]]},"32":{"position":[[321,5],[343,5]]},"33":{"position":[[390,5]]},"34":{"position":[[250,5]]},"35":{"position":[[300,5]]},"41":{"position":[[875,5],[890,4]]},"47":{"position":[[642,5]]},"49":{"position":[[349,5]]},"50":{"position":[[251,5]]},"52":{"position":[[289,5]]},"557":{"position":[[168,5],[185,5],[311,4],[449,4],[516,4]]},"558":{"position":[[203,5],[220,5]]},"563":{"position":[[875,5],[890,4]]}},"keywords":{}}],["num",{"_index":3038,"title":{},"content":{"479":{"position":[[693,3],[1032,3]]},"942":{"position":[[693,3],[1032,3]]},"961":{"position":[[154,3],[370,3],[706,3]]},"963":{"position":[[924,3]]},"965":{"position":[[516,3],[562,3],[10013,3]]},"981":{"position":[[731,3]]}},"keywords":{}}],["num_epoch",{"_index":1355,"title":{},"content":{"102":{"position":[[1772,13]]},"157":{"position":[[704,13]]},"616":{"position":[[1784,13]]},"657":{"position":[[704,13]]}},"keywords":{}}],["num_p",{"_index":3031,"title":{},"content":{"479":{"position":[[461,6]]},"942":{"position":[[461,6]]},"980":{"position":[[476,6]]},"985":{"position":[[443,6]]},"990":{"position":[[535,6]]},"991":{"position":[[790,6]]}},"keywords":{}}],["num_schedul",{"_index":4344,"title":{},"content":{"991":{"position":[[411,14]]}},"keywords":{}}],["num_schedulers=1",{"_index":4328,"title":{},"content":{"990":{"position":[[718,16]]}},"keywords":{}}],["num_work",{"_index":3043,"title":{},"content":{"479":{"position":[[765,11]]},"791":{"position":[[1081,11],[1550,11]]},"942":{"position":[[765,11]]},"965":{"position":[[283,11]]},"980":{"position":[[418,11]]},"985":{"position":[[385,11]]},"986":{"position":[[342,11]]},"990":{"position":[[339,11]]},"991":{"position":[[605,11]]}},"keywords":{}}],["numb",{"_index":844,"title":{},"content":{"61":{"position":[[306,6]]},"121":{"position":[[27,6]]},"186":{"position":[[666,6],[723,6]]},"260":{"position":[[1686,6],[1942,6]]},"267":{"position":[[337,6]]},"365":{"position":[[963,7]]},"409":{"position":[[1176,7]]},"473":{"position":[[58,7]]},"485":{"position":[[7,6],[66,6]]},"501":{"position":[[63,6]]},"570":{"position":[[306,6]]},"628":{"position":[[27,6]]},"714":{"position":[[666,6],[723,6]]},"839":{"position":[[963,7]]},"862":{"position":[[1176,7]]},"933":{"position":[[58,7]]},"948":{"position":[[7,6],[66,6]]}},"keywords":{}}],["numpi",{"_index":3851,"title":{},"content":{"950":{"position":[[880,5]]},"954":{"position":[[903,5]]},"969":{"position":[[1008,5]]}},"keywords":{}}],["nvidia",{"_index":2408,"title":{},"content":{"303":{"position":[[520,6],[535,6]]},"327":{"position":[[823,6],[863,6],[937,6]]},"771":{"position":[[520,6],[535,6]]}},"keywords":{}}],["nvidia/cuda:10.0",{"_index":3291,"title":{},"content":{"777":{"position":[[115,16],[405,16]]},"954":{"position":[[395,16]]}},"keywords":{}}],["nvidia/k8",{"_index":2535,"title":{},"content":{"327":{"position":[[755,10]]}},"keywords":{}}],["o",{"_index":2194,"title":{},"content":{"260":{"position":[[1471,1],[1480,1]]},"484":{"position":[[939,1]]},"947":{"position":[[939,1]]},"954":{"position":[[664,1],[682,1]]},"969":{"position":[[843,1]]}},"keywords":{}}],["o)kay/(q)uit",{"_index":2193,"title":{},"content":{"260":{"position":[[1456,14]]}},"keywords":{}}],["oasconf",{"_index":2944,"title":{},"content":{"439":{"position":[[318,9]]}},"keywords":{}}],["obfusc",{"_index":3186,"title":{},"content":{"492":{"position":[[709,10],[842,11],[1176,10]]}},"keywords":{}}],["object",{"_index":1401,"title":{"132":{"position":[[11,7]]},"133":{"position":[[45,7]]},"660":{"position":[[11,7]]},"661":{"position":[[45,7]]}},"content":{"107":{"position":[[20,7]]},"113":{"position":[[17,6],[176,7]]},"115":{"position":[[828,6]]},"132":{"position":[[1076,8]]},"133":{"position":[[0,6]]},"135":{"position":[[22,8],[54,8]]},"140":{"position":[[136,6]]},"152":{"position":[[1010,6]]},"154":{"position":[[422,6]]},"597":{"position":[[17,6],[176,7]]},"599":{"position":[[828,6]]},"621":{"position":[[20,7]]},"640":{"position":[[136,6]]},"652":{"position":[[1290,6]]},"654":{"position":[[422,6]]},"660":{"position":[[1076,8]]},"661":{"position":[[0,6]]},"663":{"position":[[22,8],[54,8]]},"965":{"position":[[880,6],[10360,6],[16431,6]]}},"keywords":{}}],["oblig",{"_index":802,"title":{},"content":{"54":{"position":[[2546,7]]}},"keywords":{}}],["obtain",{"_index":978,"title":{},"content":{"79":{"position":[[107,6]]}},"keywords":{}}],["octob",{"_index":589,"title":{},"content":{"53":{"position":[[3745,7]]}},"keywords":{}}],["off",{"_index":1223,"title":{},"content":{"93":{"position":[[467,5],[843,10]]},"106":{"position":[[141,8]]},"607":{"position":[[467,5],[843,10]]},"620":{"position":[[141,8]]}},"keywords":{}}],["offic",{"_index":612,"title":{},"content":{"53":{"position":[[4867,6]]}},"keywords":{}}],["offici",{"_index":715,"title":{"282":{"position":[[3,10]]},"285":{"position":[[11,8]]}},"content":{"53":{"position":[[9275,8]]},"54":{"position":[[480,10],[1164,8],[1957,8],[2098,8]]},"79":{"position":[[2185,10]]},"145":{"position":[[175,8]]},"263":{"position":[[1126,8]]},"645":{"position":[[175,8]]}},"keywords":{}}],["offlin",{"_index":1183,"title":{},"content":{"91":{"position":[[524,7]]},"102":{"position":[[31,7],[225,7]]},"104":{"position":[[254,7]]},"147":{"position":[[586,7],[649,7]]},"148":{"position":[[233,7]]},"605":{"position":[[524,7]]},"616":{"position":[[31,7],[225,7]]},"618":{"position":[[255,7]]},"647":{"position":[[586,7],[649,7]]},"648":{"position":[[233,7]]}},"keywords":{}}],["ok",{"_index":176,"title":{},"content":{"9":{"position":[[581,5]]},"10":{"position":[[130,5]]},"11":{"position":[[154,5]]},"12":{"position":[[477,5]]},"13":{"position":[[157,5]]},"22":{"position":[[621,5]]},"23":{"position":[[768,5]]},"24":{"position":[[128,5]]},"25":{"position":[[163,5]]},"26":{"position":[[659,5]]},"27":{"position":[[166,5]]},"28":{"position":[[138,5]]},"29":{"position":[[173,5]]},"31":{"position":[[1702,5]]},"32":{"position":[[616,5]]},"33":{"position":[[407,5]]},"34":{"position":[[267,5]]},"35":{"position":[[317,5]]},"41":{"position":[[140,5]]},"47":{"position":[[740,5]]},"48":{"position":[[432,5]]},"49":{"position":[[366,5]]},"50":{"position":[[268,5]]},"52":{"position":[[306,5]]},"260":{"position":[[2217,4]]},"538":{"position":[[581,5]]},"539":{"position":[[130,5]]},"540":{"position":[[154,5]]},"541":{"position":[[477,5]]},"542":{"position":[[157,5]]},"551":{"position":[[621,5]]},"552":{"position":[[768,5]]},"553":{"position":[[128,5]]},"554":{"position":[[163,5]]},"555":{"position":[[659,5]]},"556":{"position":[[166,5]]},"557":{"position":[[138,5]]},"558":{"position":[[173,5]]},"563":{"position":[[140,5]]}},"keywords":{}}],["old",{"_index":1832,"title":{"324":{"position":[[0,3]]},"774":{"position":[[0,3]]}},"content":{"162":{"position":[[848,3]]},"487":{"position":[[34,3]]},"669":{"position":[[1101,3]]}},"keywords":{}}],["on",{"_index":581,"title":{},"content":{"53":{"position":[[3448,3],[9005,3],[9188,3]]},"69":{"position":[[210,3]]},"79":{"position":[[880,3]]},"81":{"position":[[51,3]]},"89":{"position":[[118,3]]},"90":{"position":[[1287,3],[1609,3],[2031,3]]},"99":{"position":[[0,3],[30,3],[116,3],[418,3]]},"102":{"position":[[486,3]]},"104":{"position":[[110,3]]},"114":{"position":[[175,3]]},"140":{"position":[[1522,3],[1543,3]]},"151":{"position":[[401,3]]},"154":{"position":[[717,5]]},"160":{"position":[[887,3],[966,3],[1127,3]]},"178":{"position":[[61,3]]},"238":{"position":[[572,3]]},"253":{"position":[[84,3]]},"261":{"position":[[493,4]]},"578":{"position":[[210,3]]},"588":{"position":[[51,3]]},"598":{"position":[[175,3]]},"603":{"position":[[118,3]]},"604":{"position":[[1287,3],[1609,3],[2031,3]]},"613":{"position":[[0,3],[30,3],[116,3],[418,3]]},"616":{"position":[[486,3]]},"618":{"position":[[110,3]]},"640":{"position":[[1522,3],[1543,3]]},"651":{"position":[[401,3]]},"654":{"position":[[717,5]]},"667":{"position":[[887,3],[966,3],[1128,3]]},"685":{"position":[[61,3]]},"789":{"position":[[66,4]]}},"keywords":{}}],["on_epoch_end(self",{"_index":2685,"title":{},"content":{"343":{"position":[[2012,18]]},"817":{"position":[[2030,18]]}},"keywords":{}}],["onboard",{"_index":1414,"title":{},"content":{"107":{"position":[[738,7]]},"621":{"position":[[739,7]]}},"keywords":{}}],["onc",{"_index":47,"title":{},"content":{"4":{"position":[[0,4]]},"73":{"position":[[338,4]]},"90":{"position":[[1500,5]]},"115":{"position":[[317,4]]},"118":{"position":[[771,4]]},"125":{"position":[[554,4]]},"130":{"position":[[40,4]]},"134":{"position":[[175,4]]},"154":{"position":[[776,4]]},"161":{"position":[[955,4]]},"464":{"position":[[0,4]]},"496":{"position":[[0,4],[262,4]]},"582":{"position":[[338,4]]},"599":{"position":[[317,4]]},"604":{"position":[[1500,5]]},"625":{"position":[[772,4]]},"632":{"position":[[554,4]]},"637":{"position":[[40,4]]},"654":{"position":[[776,4]]},"662":{"position":[[175,4]]},"668":{"position":[[955,4]]},"965":{"position":[[0,4]]}},"keywords":{}}],["ongo",{"_index":1762,"title":{},"content":{"153":{"position":[[177,7]]},"653":{"position":[[177,7]]}},"keywords":{}}],["onlin",{"_index":1182,"title":{},"content":{"91":{"position":[[506,6]]},"104":{"position":[[230,6]]},"186":{"position":[[138,6]]},"197":{"position":[[199,6],[549,6]]},"605":{"position":[[506,6]]},"618":{"position":[[231,6]]},"692":{"position":[[199,6],[549,6]]},"714":{"position":[[138,6]]},"936":{"position":[[20,6]]}},"keywords":{}}],["only.docker/tensorflow/with",{"_index":4239,"title":{},"content":{"970":{"position":[[216,27]]}},"keywords":{}}],["onlymast",{"_index":2892,"title":{"429":{"position":[[17,11]]},"903":{"position":[[17,11]]}},"content":{},"keywords":{}}],["onnx",{"_index":1146,"title":{},"content":{"90":{"position":[[2387,5]]},"604":{"position":[[2387,5]]}},"keywords":{}}],["oozi",{"_index":1203,"title":{},"content":{"92":{"position":[[531,6]]},"606":{"position":[[531,6]]}},"keywords":{}}],["open",{"_index":129,"title":{"6":{"position":[[0,4]]},"466":{"position":[[0,4]]}},"content":{"6":{"position":[[0,4]]},"53":{"position":[[10665,4]]},"79":{"position":[[1960,4]]},"90":{"position":[[351,4],[572,4],[1168,4],[1700,4],[1975,4],[2197,4],[2535,4]]},"92":{"position":[[573,4]]},"236":{"position":[[351,4]]},"246":{"position":[[51,4]]},"314":{"position":[[981,4]]},"328":{"position":[[1561,4]]},"334":{"position":[[101,4]]},"345":{"position":[[0,4]]},"406":{"position":[[0,4]]},"439":{"position":[[7,4]]},"466":{"position":[[0,4]]},"500":{"position":[[256,4]]},"502":{"position":[[741,4],[3748,4]]},"520":{"position":[[124,4]]},"522":{"position":[[1710,6]]},"604":{"position":[[351,4],[572,4],[1168,4],[1700,4],[1975,4],[2197,4],[2535,4]]},"606":{"position":[[573,4]]},"740":{"position":[[354,4]]},"749":{"position":[[51,4]]},"786":{"position":[[981,4]]},"804":{"position":[[101,4]]},"809":{"position":[[1581,4]]},"815":{"position":[[121,4]]},"819":{"position":[[0,4]]},"895":{"position":[[0,4]]},"923":{"position":[[7,4]]}},"keywords":{}}],["openapi(oa",{"_index":2945,"title":{},"content":{"439":{"position":[[357,13]]}},"keywords":{}}],["openjdk",{"_index":3298,"title":{},"content":{"777":{"position":[[542,7],[1211,7],[1308,7]]},"791":{"position":[[453,7]]},"950":{"position":[[1049,7],[1104,7]]},"954":{"position":[[1683,7]]},"969":{"position":[[1320,7]]},"981":{"position":[[788,7],[893,7]]},"986":{"position":[[498,7],[603,7]]}},"keywords":{}}],["openssh",{"_index":3420,"title":{},"content":{"791":{"position":[[2249,7],[2264,7],[2279,7],[3141,7],[3156,7],[3171,7],[5010,7],[6139,7],[6260,7],[9981,7],[10017,11],[10081,7],[11740,7],[11781,11],[11850,7],[11935,7],[11971,11],[12035,7],[13977,7],[16366,7],[16422,7],[18091,7],[18106,7],[18121,7],[18965,7],[18980,7],[18995,7],[20834,7],[21857,7],[21978,7],[25699,7],[25735,11],[25799,7],[27289,7],[27330,11],[27399,7],[27484,7],[27520,11],[27584,7],[29526,7],[31220,7],[31276,7]]}},"keywords":{}}],["openssl",{"_index":3457,"title":{},"content":{"791":{"position":[[2797,7],[2820,7],[18639,7],[18662,7]]}},"keywords":{}}],["oper",{"_index":68,"title":{"241":{"position":[[8,8]]}},"content":{"4":{"position":[[217,8],[420,8]]},"53":{"position":[[74,9],[431,9],[526,8],[722,8]]},"94":{"position":[[691,10]]},"107":{"position":[[571,10],[677,10]]},"129":{"position":[[70,10]]},"133":{"position":[[400,10]]},"152":{"position":[[927,8],[993,9],[1082,8]]},"162":{"position":[[377,10]]},"184":{"position":[[337,9]]},"186":{"position":[[567,9],[1025,9]]},"191":{"position":[[10,8]]},"197":{"position":[[335,10]]},"199":{"position":[[182,7]]},"201":{"position":[[359,9]]},"207":{"position":[[547,9]]},"238":{"position":[[545,8]]},"296":{"position":[[4,8]]},"339":{"position":[[95,8],[243,8]]},"340":{"position":[[197,8],[408,8],[620,8]]},"464":{"position":[[217,8],[420,8]]},"498":{"position":[[415,9]]},"502":{"position":[[625,10]]},"608":{"position":[[691,10]]},"621":{"position":[[572,10],[678,10]]},"636":{"position":[[70,10]]},"652":{"position":[[1207,8],[1273,9],[1362,8]]},"661":{"position":[[400,10]]},"669":{"position":[[827,10]]},"692":{"position":[[335,10]]},"694":{"position":[[182,7]]},"696":{"position":[[359,9]]},"702":{"position":[[547,9]]},"712":{"position":[[337,9]]},"714":{"position":[[567,9],[1025,9]]},"719":{"position":[[10,8]]},"744":{"position":[[378,9],[751,9],[813,8],[846,9],[869,8],[910,8],[1635,8],[1669,9],[1735,8]]},"763":{"position":[[4,8]]},"791":{"position":[[3425,10],[19249,10]]},"814":{"position":[[201,8],[584,8]]}},"keywords":{}}],["operator/blob/master/examples/v1/distribution_strategy/kera",{"_index":2635,"title":{},"content":{"343":{"position":[[209,60]]},"817":{"position":[[209,60]]}},"keywords":{}}],["opt",{"_index":3165,"title":{},"content":{"491":{"position":[[323,4]]}},"keywords":{}}],["opt/anaconda3/envs/conda",{"_index":1700,"title":{},"content":{"146":{"position":[[409,25]]},"646":{"position":[[409,25]]}},"keywords":{}}],["opt/conda",{"_index":3872,"title":{},"content":{"954":{"position":[[809,10]]}},"keywords":{}}],["opt/conda/bin/conda",{"_index":3873,"title":{},"content":{"954":{"position":[[848,20],[965,20],[1027,20]]}},"keywords":{}}],["opt/conda/bin:$path",{"_index":3882,"title":{},"content":{"954":{"position":[[1067,20]]}},"keywords":{}}],["opt/kaldi",{"_index":3317,"title":{},"content":{"777":{"position":[[882,10],[901,10]]}},"keywords":{}}],["opt/kaldi/egs/mul",{"_index":3386,"title":{},"content":{"791":{"position":[[1190,18],[1261,18],[1470,18]]}},"keywords":{}}],["opt/kaldi/egs/thchs30/data",{"_index":3382,"title":{},"content":{"791":{"position":[[988,27]]}},"keywords":{}}],["opt/kaldi/egs/thchs30/s5",{"_index":3387,"title":{},"content":{"791":{"position":[[1233,27]]}},"keywords":{}}],["opt/kaldi/egs/thchs30/s5/cmd.sh",{"_index":3357,"title":{},"content":{"788":{"position":[[627,32]]}},"keywords":{}}],["opt/kaldi/src",{"_index":3322,"title":{},"content":{"777":{"position":[[996,14]]}},"keywords":{}}],["opt/kaldi/tool",{"_index":3318,"title":{},"content":{"777":{"position":[[920,16]]}},"keywords":{}}],["opt/pytorch",{"_index":3885,"title":{},"content":{"954":{"position":[[1187,12],[1473,12]]}},"keywords":{}}],["option",{"_index":1471,"title":{"317":{"position":[[21,10]]},"320":{"position":[[17,10]]},"794":{"position":[[21,10]]},"797":{"position":[[17,10]]},"963":{"position":[[0,10]]}},"content":{"113":{"position":[[272,8],[412,8]]},"179":{"position":[[106,8]]},"180":{"position":[[110,8]]},"181":{"position":[[402,8]]},"221":{"position":[[14,11]]},"251":{"position":[[93,9]]},"257":{"position":[[115,9]]},"260":{"position":[[1344,10]]},"313":{"position":[[719,8]]},"316":{"position":[[80,6]]},"327":{"position":[[582,10]]},"333":{"position":[[173,10]]},"343":{"position":[[1679,7]]},"358":{"position":[[228,9]]},"476":{"position":[[45,9]]},"597":{"position":[[272,8],[412,8]]},"686":{"position":[[106,8]]},"687":{"position":[[131,8]]},"688":{"position":[[402,8]]},"735":{"position":[[14,11]]},"785":{"position":[[719,8]]},"793":{"position":[[80,6]]},"803":{"position":[[173,10]]},"808":{"position":[[582,10]]},"817":{"position":[[1697,7]]},"832":{"position":[[228,9]]},"939":{"position":[[1830,7],[1913,6]]}},"keywords":{}}],["optional)envvar",{"_index":2533,"title":{},"content":{"327":{"position":[[565,16]]},"808":{"position":[[565,16]]}},"keywords":{}}],["optional[bool]=fal",{"_index":2893,"title":{"429":{"position":[[29,21]]},"903":{"position":[[29,21]]}},"content":{},"keywords":{}}],["optional[int]=10",{"_index":2901,"title":{"431":{"position":[[43,17]]},"905":{"position":[[43,17]]}},"content":{},"keywords":{}}],["optional[str]=non",{"_index":2885,"title":{"427":{"position":[[25,19]]},"901":{"position":[[25,19]]}},"content":{},"keywords":{}}],["optional,modifi",{"_index":3356,"title":{},"content":{"788":{"position":[[611,15]]}},"keywords":{}}],["options.experimental_distribute.auto_shard_polici",{"_index":2679,"title":{},"content":{"343":{"position":[[1707,49]]},"817":{"position":[[1725,49]]}},"keywords":{}}],["orchestr",{"_index":1220,"title":{},"content":{"93":{"position":[[379,11]]},"607":{"position":[[379,11]]}},"keywords":{}}],["ord",{"_index":586,"title":{},"content":{"53":{"position":[[3569,5]]},"54":{"position":[[1079,7]]},"103":{"position":[[124,5]]},"112":{"position":[[124,5]]},"190":{"position":[[3,5]]},"211":{"position":[[912,5]]},"212":{"position":[[3,5]]},"596":{"position":[[124,5]]},"617":{"position":[[124,5]]},"706":{"position":[[912,5]]},"707":{"position":[[3,5]]},"718":{"position":[[3,5]]}},"keywords":{}}],["org.apache.hadoop.service.abstractservic",{"_index":3073,"title":{},"content":{"481":{"position":[[1639,42]]},"944":{"position":[[1639,42]]}},"keywords":{}}],["org.apache.hadoop.service.abstractservice.init(abstractservice.java:164",{"_index":3069,"title":{},"content":{"481":{"position":[[1350,72]]},"944":{"position":[[1350,72]]}},"keywords":{}}],["org.apache.hadoop.util.shell$shellcommandexecutor.execute(shell.java:1213",{"_index":3094,"title":{},"content":{"482":{"position":[[459,74]]},"945":{"position":[[459,74]]}},"keywords":{}}],["org.apache.hadoop.util.shell.run(shell.java:901",{"_index":3093,"title":{},"content":{"482":{"position":[[407,48]]},"945":{"position":[[407,48]]}},"keywords":{}}],["org.apache.hadoop.util.shell.runcommand(shell.java:938",{"_index":3092,"title":{},"content":{"482":{"position":[[348,55]]},"945":{"position":[[348,55]]}},"keywords":{}}],["org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.privileged.privilegedoperationexecutor",{"_index":3085,"title":{},"content":{"482":{"position":[[29,104]]},"945":{"position":[[29,104]]}},"keywords":{}}],["org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.cgroupscpuresourcehandlerimpl.bootstrap(cgroupscpuresourcehandlerimpl.java:87",{"_index":3065,"title":{},"content":{"481":{"position":[[857,153]]},"944":{"position":[[857,153]]}},"keywords":{}}],["org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.cgroupscpuresourcehandlerimpl.bootstrap(cgroupscpuresourcehandlerimpl.java:98",{"_index":3064,"title":{},"content":{"481":{"position":[[700,153]]},"944":{"position":[[700,153]]}},"keywords":{}}],["org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.cgroupshandlerimpl.initializecgroupcontroller(cgroupshandlerimpl.java:377",{"_index":3063,"title":{},"content":{"481":{"position":[[547,149]]},"944":{"position":[[547,149]]}},"keywords":{}}],["org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.cgroupshandlerimpl.initializepremountedcgroupcontroller(cgroupshandlerimpl.java:425",{"_index":3062,"title":{},"content":{"481":{"position":[[384,159]]},"944":{"position":[[384,159]]}},"keywords":{}}],["org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.resourcehandlerchain.bootstrap(resourcehandlerchain.java:58",{"_index":3066,"title":{},"content":{"481":{"position":[[1014,135]]},"944":{"position":[[1014,135]]}},"keywords":{}}],["org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.resourcehandlerexcept",{"_index":3057,"title":{},"content":{"481":{"position":[[148,100]]},"944":{"position":[[148,100]]}},"keywords":{}}],["org.apache.hadoop.yarn.server.nodemanager.linuxcontainerexecutor",{"_index":3054,"title":{},"content":{"481":{"position":[[30,65]]},"944":{"position":[[30,65]]}},"keywords":{}}],["org.apache.hadoop.yarn.server.nodemanager.linuxcontainerexecutor.init(linuxcontainerexecutor.java:320",{"_index":3067,"title":{},"content":{"481":{"position":[[1153,102]]},"944":{"position":[[1153,102]]}},"keywords":{}}],["org.apache.hadoop.yarn.server.nodemanager.nodemanager.initandstartnodemanager(nodemanager.java:929",{"_index":3070,"title":{},"content":{"481":{"position":[[1426,99]]},"944":{"position":[[1426,99]]}},"keywords":{}}],["org.apache.hadoop.yarn.server.nodemanager.nodemanager.main(nodemanager.java:997",{"_index":3071,"title":{},"content":{"481":{"position":[[1529,80]]},"944":{"position":[[1529,80]]}},"keywords":{}}],["org.apache.hadoop.yarn.server.nodemanager.nodemanager.serviceinit(nodemanager.java:389",{"_index":3068,"title":{},"content":{"481":{"position":[[1259,87]]},"944":{"position":[[1259,87]]}},"keywords":{}}],["org.apache.rat:apach",{"_index":1998,"title":{},"content":{"220":{"position":[[10,21]]},"734":{"position":[[41,21]]}},"keywords":{}}],["org.apache.submarine.client.cli.cli",{"_index":4265,"title":{},"content":{"980":{"position":[[297,35]]},"981":{"position":[[191,35]]},"985":{"position":[[294,35]]},"986":{"position":[[191,35]]},"990":{"position":[[234,35]]},"991":{"position":[[269,35]]}},"keywords":{}}],["org.apache.submarine.server.rest.environmentrestapi",{"_index":2950,"title":{},"content":{"439":{"position":[[598,54]]}},"keywords":{}}],["org.apache.submarine.server.rest.experimentrestapi",{"_index":2949,"title":{},"content":{"439":{"position":[[544,53]]}},"keywords":{}}],["org.apache.submarine.spark.security.api.rangersparksqlext",{"_index":3836,"title":{},"content":{"939":{"position":[[2032,63]]}},"keywords":{}}],["organ",{"_index":1427,"title":{},"content":{"107":{"position":[[1313,14]]},"498":{"position":[[482,12]]},"621":{"position":[[1316,14]]}},"keywords":{}}],["origin",{"_index":833,"title":{},"content":{"60":{"position":[[421,6],[479,6]]},"65":{"position":[[9,6]]},"162":{"position":[[820,8]]},"275":{"position":[[9,6]]},"569":{"position":[[421,6],[479,6]]},"574":{"position":[[9,6]]},"669":{"position":[[1073,8]]}},"keywords":{}}],["os",{"_index":1455,"title":{},"content":{"112":{"position":[[800,3]]},"139":{"position":[[798,3]]},"259":{"position":[[92,2]]},"596":{"position":[[800,3]]},"639":{"position":[[798,3]]},"777":{"position":[[88,2]]},"950":{"position":[[90,2]]},"954":{"position":[[94,2]]},"969":{"position":[[98,2]]}},"keywords":{}}],["os/bas",{"_index":1659,"title":{},"content":{"139":{"position":[[1465,7]]},"639":{"position":[[1472,7]]}},"keywords":{}}],["os=ubuntu16.04",{"_index":1452,"title":{},"content":{"112":{"position":[[640,16],[1562,16],[1869,16]]},"596":{"position":[[640,16],[1562,16],[1869,16]]}},"keywords":{}}],["oth",{"_index":774,"title":{},"content":{"54":{"position":[[1617,6],[2591,7]]},"74":{"position":[[90,7]]},"502":{"position":[[1640,6]]},"583":{"position":[[90,7]]},"791":{"position":[[14794,7],[30343,7]]}},"keywords":{}}],["otherwis",{"_index":933,"title":{},"content":{"74":{"position":[[309,9]]},"260":{"position":[[233,9]]},"583":{"position":[[309,9]]},"908":{"position":[[113,10],[224,10]]}},"keywords":{}}],["out",{"_index":496,"title":{"137":{"position":[[11,3]]},"665":{"position":[[11,3]]}},"content":{"53":{"position":[[1089,3],[3120,3],[3779,3],[6203,3]]},"81":{"position":[[14,3]]},"83":{"position":[[387,3]]},"108":{"position":[[245,3]]},"173":{"position":[[28,3]]},"211":{"position":[[1348,4]]},"241":{"position":[[26,3]]},"262":{"position":[[127,4]]},"284":{"position":[[336,3]]},"328":{"position":[[1577,4]]},"440":{"position":[[146,3]]},"588":{"position":[[14,3]]},"590":{"position":[[387,3]]},"622":{"position":[[245,3]]},"680":{"position":[[28,3]]},"706":{"position":[[1348,4]]},"744":{"position":[[878,3],[1781,3]]},"809":{"position":[[1597,4]]},"924":{"position":[[146,3]]},"975":{"position":[[6,3]]},"976":{"position":[[120,3]]}},"keywords":{}}],["outdat",{"_index":781,"title":{},"content":{"54":{"position":[[1769,8]]}},"keywords":{}}],["output",{"_index":53,"title":{},"content":{"4":{"position":[[80,8]]},"90":{"position":[[900,7]]},"102":{"position":[[875,7],[1638,9]]},"132":{"position":[[1454,6]]},"139":{"position":[[436,7],[1907,6],[1940,6],[1991,6]]},"147":{"position":[[1429,7]]},"148":{"position":[[253,6]]},"157":{"position":[[570,9]]},"260":{"position":[[2355,6]]},"271":{"position":[[139,6]]},"464":{"position":[[80,8]]},"474":{"position":[[335,6]]},"604":{"position":[[900,7]]},"616":{"position":[[880,7],[1650,9]]},"639":{"position":[[436,7],[1920,6],[1953,6],[2004,6]]},"647":{"position":[[1429,7]]},"648":{"position":[[253,6]]},"657":{"position":[[570,9]]},"660":{"position":[[1454,6]]},"791":{"position":[[1848,7],[1887,6],[17721,6],[32607,6]]},"965":{"position":[[581,7],[10060,7],[16135,7]]}},"keywords":{}}],["output/log",{"_index":1666,"title":{},"content":{"139":{"position":[[2209,12]]},"639":{"position":[[2222,12]]}},"keywords":{}}],["output=\"/tmp/apach",{"_index":2294,"title":{},"content":{"269":{"position":[[189,19]]}},"keywords":{}}],["output=\"s3://bucket/output",{"_index":1710,"title":{},"content":{"147":{"position":[[464,28],[971,28]]},"647":{"position":[[464,28],[971,28]]}},"keywords":{}}],["output=s3://bucket/output",{"_index":1674,"title":{},"content":{"140":{"position":[[418,25],[1413,25]]},"640":{"position":[[418,25],[1413,25]]}},"keywords":{}}],["output_dim",{"_index":3004,"title":{"474":{"position":[[124,11]]}},"content":{},"keywords":{}}],["outsid",{"_index":1505,"title":{"173":{"position":[[20,7]]},"680":{"position":[[20,7]]}},"content":{"116":{"position":[[209,7]]},"160":{"position":[[1586,7]]},"173":{"position":[[89,7]]},"314":{"position":[[317,7]]},"600":{"position":[[209,7]]},"667":{"position":[[1588,7]]},"680":{"position":[[89,7]]},"786":{"position":[[317,7]]}},"keywords":{}}],["over",{"_index":545,"title":{},"content":{"53":{"position":[[2182,4],[4646,4],[8776,4]]},"79":{"position":[[1026,5]]}},"keywords":{}}],["overal",{"_index":1525,"title":{},"content":{"118":{"position":[[114,7]]},"625":{"position":[[114,7]]}},"keywords":{}}],["overhead",{"_index":1133,"title":{},"content":{"90":{"position":[[1735,8]]},"93":{"position":[[701,8]]},"604":{"position":[[1735,8]]},"607":{"position":[[701,8]]}},"keywords":{}}],["overrid",{"_index":2426,"title":{},"content":{"313":{"position":[[175,8]]},"785":{"position":[[175,8]]}},"keywords":{}}],["overrul",{"_index":689,"title":{},"content":{"53":{"position":[[8111,10]]}},"keywords":{}}],["oversight",{"_index":597,"title":{},"content":{"53":{"position":[[3906,9]]}},"keywords":{}}],["overview",{"_index":1272,"title":{"97":{"position":[[0,8]]},"109":{"position":[[13,8]]},"112":{"position":[[0,8]]},"120":{"position":[[0,8]]},"139":{"position":[[0,8]]},"160":{"position":[[13,8]]},"596":{"position":[[0,8]]},"611":{"position":[[0,8]]},"623":{"position":[[13,8]]},"627":{"position":[[0,8]]},"639":{"position":[[0,8]]},"667":{"position":[[13,8]]}},"content":{"106":{"position":[[37,8]]},"620":{"position":[[37,8]]}},"keywords":{}}],["overwrit",{"_index":1786,"title":{},"content":{"157":{"position":[[974,9]]},"657":{"position":[[974,9]]}},"keywords":{}}],["own",{"_index":1032,"title":{},"content":{"82":{"position":[[479,6]]},"107":{"position":[[216,4]]},"589":{"position":[[479,6]]},"621":{"position":[[216,4]]}},"keywords":{}}],["ownerid",{"_index":381,"title":{},"content":{"38":{"position":[[147,10]]},"388":{"position":[[337,7]]},"389":{"position":[[115,10]]},"560":{"position":[[147,10]]},"877":{"position":[[337,7]]},"878":{"position":[[115,10]]}},"keywords":{}}],["ownerid\":\"e9ca23d68d884d4ebb19d07889727da",{"_index":402,"title":{},"content":{"38":{"position":[[819,44]]},"39":{"position":[[561,44]]},"40":{"position":[[552,44]]},"41":{"position":[[608,44]]},"389":{"position":[[782,44]]},"392":{"position":[[529,44]]},"395":{"position":[[517,44]]},"398":{"position":[[547,44]]},"560":{"position":[[819,44]]},"561":{"position":[[561,44]]},"562":{"position":[[552,44]]},"563":{"position":[[608,44]]},"878":{"position":[[782,44]]},"881":{"position":[[529,44]]},"884":{"position":[[517,44]]},"887":{"position":[[547,44]]}},"keywords":{}}],["p",{"_index":3144,"title":{},"content":{"488":{"position":[[174,1],[307,1]]},"791":{"position":[[1188,1]]},"954":{"position":[[807,1]]}},"keywords":{}}],["p0",{"_index":1294,"title":{},"content":{"101":{"position":[[60,4],[147,4]]},"121":{"position":[[156,5]]},"615":{"position":[[60,4],[147,4]]},"628":{"position":[[156,5]]}},"keywords":{}}],["p0)and",{"_index":1542,"title":{},"content":{"121":{"position":[[356,7]]},"628":{"position":[[356,7]]}},"keywords":{}}],["p0)when",{"_index":1543,"title":{},"content":{"121":{"position":[[465,8]]},"628":{"position":[[465,8]]}},"keywords":{}}],["p1",{"_index":1300,"title":{},"content":{"101":{"position":[[211,4],[265,4],[423,4]]},"615":{"position":[[211,4],[265,4],[423,4]]}},"keywords":{}}],["p1)option",{"_index":1544,"title":{},"content":{"121":{"position":[[560,15]]},"628":{"position":[[560,15]]}},"keywords":{}}],["p2",{"_index":1306,"title":{},"content":{"101":{"position":[[502,4]]},"121":{"position":[[180,5],[646,4]]},"122":{"position":[[191,4]]},"615":{"position":[[502,4]]},"628":{"position":[[180,5],[646,4]]},"629":{"position":[[191,4]]}},"keywords":{}}],["packag",{"_index":1125,"title":{"251":{"position":[[25,7]]},"254":{"position":[[42,8]]},"255":{"position":[[21,7],[44,7]]},"266":{"position":[[15,7]]},"269":{"position":[[4,7]]},"270":{"position":[[4,8],[20,7]]},"274":{"position":[[20,7]]},"441":{"position":[[7,7]]},"925":{"position":[[7,7]]}},"content":{"90":{"position":[[1449,9]]},"116":{"position":[[297,8]]},"219":{"position":[[339,7]]},"221":{"position":[[277,7]]},"238":{"position":[[153,7]]},"244":{"position":[[16,7]]},"251":{"position":[[4,7],[58,8],[82,7],[280,7]]},"252":{"position":[[2086,8],[2154,7]]},"253":{"position":[[257,8],[319,8]]},"257":{"position":[[176,7]]},"267":{"position":[[244,7]]},"269":{"position":[[69,8],[89,8]]},"270":{"position":[[24,8],[131,7],[225,8],[329,7],[516,7],[538,7],[582,7]]},"274":{"position":[[77,7],[170,7]]},"278":{"position":[[116,7],[135,7]]},"297":{"position":[[41,9]]},"305":{"position":[[272,7]]},"306":{"position":[[294,7]]},"324":{"position":[[628,7],[899,7],[1143,7],[1361,7]]},"439":{"position":[[1186,7]]},"441":{"position":[[135,8],[245,7],[372,7],[475,7]]},"502":{"position":[[906,7]]},"600":{"position":[[297,8]]},"604":{"position":[[1449,9]]},"733":{"position":[[339,7]]},"734":{"position":[[150,7],[238,7],[340,7],[442,7],[543,7],[623,7]]},"735":{"position":[[277,7]]},"742":{"position":[[153,7],[206,7]]},"747":{"position":[[16,7]]},"756":{"position":[[272,7]]},"757":{"position":[[294,7]]},"764":{"position":[[41,9]]},"774":{"position":[[81,7],[352,7],[596,7],[814,7]]},"777":{"position":[[189,9],[1146,8]]},"791":{"position":[[1917,7],[2016,8],[2434,9],[2856,8],[7000,7],[7771,7],[7918,7],[8089,7],[8263,7],[8411,7],[8579,7],[8733,7],[8939,7],[9145,7],[9326,7],[9507,7],[9683,7],[9817,7],[9973,7],[10153,7],[10302,7],[10436,7],[10589,7],[10758,7],[10925,7],[11094,7],[11224,7],[11387,7],[11556,7],[11732,7],[11927,7],[12107,7],[12284,7],[12441,7],[12588,7],[12777,7],[12955,7],[17494,7],[17759,7],[17858,8],[18276,9],[18698,8],[22718,7],[23489,7],[23636,7],[23807,7],[23981,7],[24129,7],[24297,7],[24451,7],[24657,7],[24863,7],[25044,7],[25225,7],[25401,7],[25535,7],[25691,7],[25871,7],[26020,7],[26154,7],[26307,7],[26476,7],[26643,7],[26812,7],[26942,7],[27105,7],[27281,7],[27476,7],[27656,7],[27833,7],[27990,7],[28137,7],[28326,7],[28504,7],[32348,7]]},"925":{"position":[[135,8],[245,7],[372,7],[475,7]]},"934":{"position":[[136,7]]},"950":{"position":[[163,9],[260,8],[440,8],[800,9],[991,8]]},"954":{"position":[[169,9],[266,8],[1618,8]]},"963":{"position":[[798,7]]},"969":{"position":[[175,9],[266,8],[1255,8]]}},"keywords":{}}],["package.if",{"_index":2083,"title":{},"content":{"251":{"position":[[258,10]]}},"keywords":{}}],["package.wheth",{"_index":2080,"title":{},"content":{"251":{"position":[[139,15],[200,15]]}},"keywords":{}}],["package/binari",{"_index":2304,"title":{"271":{"position":[[20,14]]}},"content":{},"keywords":{}}],["package/sha512",{"_index":2305,"title":{"271":{"position":[[35,14]]}},"content":{},"keywords":{}}],["package:submarin",{"_index":2490,"title":{},"content":{"324":{"position":[[81,17]]}},"keywords":{}}],["packagenam",{"_index":2954,"title":{},"content":{"439":{"position":[[926,13]]}},"keywords":{}}],["packages/tensorflow/contrib/learn/python/learn/experiment.pi",{"_index":4184,"title":{},"content":{"967":{"position":[[705,62],[860,62]]}},"keywords":{}}],["packages/tensorflow/contrib/learn/python/learn/learn_runner.pi",{"_index":4179,"title":{},"content":{"967":{"position":[[395,64],[560,64]]}},"keywords":{}}],["packages/tensorflow/python/estimator/estimator.pi",{"_index":4191,"title":{},"content":{"967":{"position":[[1000,51],[1121,51],[1284,51]]}},"keywords":{}}],["packages/tensorflow/python/platform/app.pi",{"_index":4173,"title":{},"content":{"967":{"position":[[178,44]]}},"keywords":{}}],["packages/tensorflow/python/training/sync_replicas_optimizer.pi",{"_index":4206,"title":{},"content":{"967":{"position":[[1548,64]]}},"keywords":{}}],["packages/tensorflow/python/util/tf_should_use.pi",{"_index":4210,"title":{},"content":{"967":{"position":[[1708,50],[1868,50],[2031,50]]}},"keywords":{}}],["packagev",{"_index":2956,"title":{},"content":{"439":{"position":[[998,17]]}},"keywords":{}}],["pag",{"_index":917,"title":{"243":{"position":[[10,4]]},"746":{"position":[[10,4]]}},"content":{"73":{"position":[[217,5]]},"74":{"position":[[469,5]]},"77":{"position":[[442,4]]},"242":{"position":[[392,5]]},"243":{"position":[[25,4]]},"338":{"position":[[30,4]]},"401":{"position":[[407,5]]},"406":{"position":[[20,4],[113,5]]},"488":{"position":[[448,4]]},"499":{"position":[[40,4],[121,5]]},"500":{"position":[[32,5]]},"501":{"position":[[41,6]]},"502":{"position":[[15,5],[1169,4],[1197,4]]},"582":{"position":[[217,5]]},"583":{"position":[[469,5]]},"586":{"position":[[442,4]]},"745":{"position":[[392,5]]},"746":{"position":[[25,4]]},"791":{"position":[[1842,5]]},"812":{"position":[[30,4]]},"890":{"position":[[407,5]]},"895":{"position":[[20,4],[113,5]]}},"keywords":{}}],["page'",{"_index":3218,"title":{},"content":{"501":{"position":[[91,6]]}},"keywords":{}}],["pain",{"_index":1089,"title":{"91":{"position":[[29,4]]},"92":{"position":[[0,4]]},"93":{"position":[[0,4]]},"94":{"position":[[0,4]]},"95":{"position":[[0,4]]},"96":{"position":[[0,4]]},"605":{"position":[[29,4]]},"606":{"position":[[0,4]]},"607":{"position":[[0,4]]},"608":{"position":[[0,4]]},"609":{"position":[[0,4]]},"610":{"position":[[0,4]]}},"content":{"90":{"position":[[403,4],[2789,4]]},"94":{"position":[[25,5]]},"604":{"position":[[403,4],[2789,4]]},"608":{"position":[[25,5]]}},"keywords":{}}],["pair",{"_index":1861,"title":{},"content":{"180":{"position":[[490,4]]},"199":{"position":[[425,6]]},"209":{"position":[[55,5]]},"687":{"position":[[543,4]]},"694":{"position":[[425,6]]},"704":{"position":[[55,5]]}},"keywords":{}}],["panda",{"_index":1198,"title":{},"content":{"92":{"position":[[368,6]]},"112":{"position":[[997,7]]},"596":{"position":[[997,7]]},"606":{"position":[[368,6]]},"950":{"position":[[886,6]]},"969":{"position":[[1016,6]]}},"keywords":{}}],["panel",{"_index":2525,"title":{},"content":{"327":{"position":[[92,5]]},"808":{"position":[[92,5]]}},"keywords":{}}],["papach",{"_index":2311,"title":{},"content":{"274":{"position":[[241,7]]}},"keywords":{}}],["par",{"_index":3760,"title":{},"content":{"909":{"position":[[213,6]]}},"keywords":{}}],["paragraph",{"_index":1732,"title":{},"content":{"148":{"position":[[720,9]]},"648":{"position":[[720,9]]}},"keywords":{}}],["paragraph'",{"_index":1730,"title":{},"content":{"148":{"position":[[577,11]]},"648":{"position":[[577,11]]}},"keywords":{}}],["param",{"_index":237,"title":{},"content":{"20":{"position":[[133,9]]},"158":{"position":[[2657,6]]},"420":{"position":[[125,6]]},"421":{"position":[[82,9]]},"549":{"position":[[133,9]]},"658":{"position":[[2657,6]]},"873":{"position":[[125,6]]},"874":{"position":[[82,9]]},"911":{"position":[[15,6],[54,6],[148,6]]}},"keywords":{}}],["param_nam",{"_index":3766,"title":{},"content":{"911":{"position":[[77,11]]}},"keywords":{}}],["paramet",{"_index":201,"title":{"147":{"position":[[62,11]]},"350":{"position":[[0,10]]},"355":{"position":[[0,10]]},"358":{"position":[[0,10]]},"361":{"position":[[0,10]]},"365":{"position":[[0,10]]},"368":{"position":[[0,10]]},"373":{"position":[[0,10]]},"376":{"position":[[0,10]]},"379":{"position":[[0,10]]},"384":{"position":[[0,10]]},"388":{"position":[[0,10]]},"391":{"position":[[0,10]]},"394":{"position":[[0,10]]},"397":{"position":[[0,10]]},"409":{"position":[[0,10]]},"414":{"position":[[0,10]]},"417":{"position":[[0,10]]},"420":{"position":[[0,10]]},"647":{"position":[[62,11]]},"824":{"position":[[0,10]]},"829":{"position":[[0,10]]},"832":{"position":[[0,10]]},"835":{"position":[[0,10]]},"839":{"position":[[0,10]]},"842":{"position":[[0,10]]},"847":{"position":[[0,10]]},"850":{"position":[[0,10]]},"853":{"position":[[0,10]]},"858":{"position":[[0,10]]},"862":{"position":[[0,10]]},"867":{"position":[[0,10]]},"870":{"position":[[0,10]]},"873":{"position":[[0,10]]},"877":{"position":[[0,10]]},"880":{"position":[[0,10]]},"883":{"position":[[0,10]]},"886":{"position":[[0,10]]}},"content":{"15":{"position":[[199,13]]},"18":{"position":[[196,13],[1128,13]]},"91":{"position":[[343,9]]},"101":{"position":[[300,10],[337,10]]},"102":{"position":[[849,10],[889,11],[2027,9]]},"106":{"position":[[377,10]]},"117":{"position":[[1072,11]]},"140":{"position":[[345,10],[1321,10]]},"147":{"position":[[390,9],[894,9],[1357,10],[1390,9]]},"156":{"position":[[97,10]]},"157":{"position":[[50,11],[74,9],[257,9],[993,10],[1033,11]]},"158":{"position":[[432,10],[981,10],[1141,10]]},"409":{"position":[[187,10],[237,10],[412,9],[471,9],[532,10],[569,10]]},"410":{"position":[[167,13],[1341,13]]},"412":{"position":[[343,13]]},"414":{"position":[[196,10],[246,10]]},"415":{"position":[[172,13],[1371,13]]},"418":{"position":[[367,13]]},"420":{"position":[[157,10]]},"424":{"position":[[22,10]]},"425":{"position":[[21,10]]},"426":{"position":[[42,10]]},"427":{"position":[[34,10]]},"428":{"position":[[33,10]]},"429":{"position":[[88,10]]},"430":{"position":[[21,10]]},"431":{"position":[[50,10]]},"471":{"position":[[174,10]]},"472":{"position":[[23,10],[70,10],[87,9],[110,9]]},"473":{"position":[[66,10]]},"474":{"position":[[33,10]]},"490":{"position":[[203,10]]},"491":{"position":[[328,9],[557,9]]},"544":{"position":[[199,13]]},"547":{"position":[[196,13],[1128,13]]},"601":{"position":[[1072,11]]},"605":{"position":[[343,9]]},"615":{"position":[[300,10],[337,10]]},"616":{"position":[[854,10],[894,11],[2039,9]]},"620":{"position":[[377,10]]},"640":{"position":[[345,10],[1321,10]]},"647":{"position":[[390,9],[894,9],[1357,10],[1390,9]]},"656":{"position":[[97,10]]},"657":{"position":[[50,11],[74,9],[257,9],[993,10],[1033,11]]},"658":{"position":[[432,10],[981,10],[1141,10]]},"791":{"position":[[1642,9],[1704,9],[1755,9],[1811,11],[15730,11]]},"862":{"position":[[187,10],[237,10],[412,9],[471,9],[532,10],[569,10]]},"863":{"position":[[167,13],[1341,13]]},"865":{"position":[[343,13]]},"867":{"position":[[196,10],[246,10]]},"868":{"position":[[172,13],[1371,13]]},"871":{"position":[[367,13]]},"873":{"position":[[157,10]]},"898":{"position":[[22,10]]},"899":{"position":[[21,10]]},"900":{"position":[[42,10]]},"901":{"position":[[34,10]]},"902":{"position":[[33,10]]},"903":{"position":[[88,10]]},"904":{"position":[[21,10]]},"905":{"position":[[50,10]]},"907":{"position":[[75,10]]},"908":{"position":[[36,10]]},"910":{"position":[[4,9],[37,10],[54,9],[76,9]]},"911":{"position":[[43,10]]},"912":{"position":[[36,10]]},"913":{"position":[[42,10]]},"931":{"position":[[174,10]]},"932":{"position":[[23,10],[70,10],[87,9],[110,9]]},"933":{"position":[[66,10]]},"961":{"position":[[228,9],[444,9]]},"963":{"position":[[148,10]]},"964":{"position":[[848,10],[916,10],[984,10]]},"965":{"position":[[187,9],[4748,10],[8963,10],[9761,9]]},"966":{"position":[[359,9]]}},"keywords":{}}],["parameter_path",{"_index":2982,"title":{},"content":{"446":{"position":[[21,16]]},"447":{"position":[[21,16]]}},"keywords":{}}],["parent",{"_index":3927,"title":{},"content":{"963":{"position":[[590,6]]}},"keywords":{}}],["part",{"_index":1186,"title":{},"content":{"91":{"position":[[738,4]]},"92":{"position":[[679,4]]},"96":{"position":[[258,4]]},"98":{"position":[[214,4]]},"117":{"position":[[399,5],[1233,4]]},"134":{"position":[[109,4],[188,4],[356,4],[673,4],[848,4]]},"147":{"position":[[68,4]]},"601":{"position":[[399,5],[1233,4]]},"605":{"position":[[738,4]]},"606":{"position":[[679,4]]},"610":{"position":[[258,4]]},"612":{"position":[[214,4]]},"647":{"position":[[68,4]]},"662":{"position":[[109,4],[188,4],[356,4],[673,4],[848,4]]},"777":{"position":[[41,5]]},"950":{"position":[[42,6]]},"954":{"position":[[44,6]]},"969":{"position":[[46,5]]}},"keywords":{}}],["parti",{"_index":1432,"title":{},"content":{"108":{"position":[[187,5]]},"135":{"position":[[338,5]]},"139":{"position":[[176,5]]},"160":{"position":[[1651,5]]},"622":{"position":[[187,5]]},"639":{"position":[[176,5]]},"663":{"position":[[338,5]]},"667":{"position":[[1653,5]]}},"keywords":{}}],["particip",{"_index":493,"title":{},"content":{"53":{"position":[[991,12],[1310,11],[6995,12]]},"54":{"position":[[900,13],[1385,11],[2665,11]]}},"keywords":{}}],["particular",{"_index":599,"title":{},"content":{"53":{"position":[[4067,10],[7090,10]]},"54":{"position":[[1068,10]]},"69":{"position":[[426,10]]},"92":{"position":[[668,10]]},"578":{"position":[[426,10]]},"606":{"position":[[668,10]]}},"keywords":{}}],["pass",{"_index":871,"title":{},"content":{"66":{"position":[[92,4]]},"68":{"position":[[88,4]]},"79":{"position":[[841,4],[1252,7]]},"212":{"position":[[320,6]]},"254":{"position":[[341,11]]},"279":{"position":[[328,7]]},"281":{"position":[[1350,7],[1367,6]]},"437":{"position":[[346,4]]},"498":{"position":[[548,4]]},"575":{"position":[[92,4]]},"577":{"position":[[88,4]]},"707":{"position":[[320,6]]},"921":{"position":[[346,4]]},"966":{"position":[[264,4]]}},"keywords":{}}],["passphras",{"_index":2205,"title":{},"content":{"260":{"position":[[2146,10],[2165,11]]}},"keywords":{}}],["passport",{"_index":2111,"title":{},"content":{"252":{"position":[[1055,10]]}},"keywords":{}}],["password",{"_index":139,"title":{},"content":{"6":{"position":[[145,8]]},"263":{"position":[[997,9],[1041,9],[1692,9],[1736,9]]},"265":{"position":[[828,8],[913,8]]},"466":{"position":[[145,8]]},"492":{"position":[[692,9],[733,8],[794,9],[825,9],[1159,9],[1200,8],[1240,8]]},"496":{"position":[[420,8],[516,8],[613,9]]},"498":{"position":[[216,8]]},"499":{"position":[[99,8]]}},"keywords":{}}],["password>{us",{"_index":2265,"title":{},"content":{"265":{"position":[[486,15],[600,15]]}},"keywords":{}}],["pass}</password",{"_index":2266,"title":{},"content":{"265":{"position":[[502,16],[616,16]]}},"keywords":{}}],["past",{"_index":1055,"title":{},"content":{"86":{"position":[[542,5]]},"328":{"position":[[1421,5]]},"809":{"position":[[1441,5]]}},"keywords":{}}],["patch",{"_index":188,"title":{"12":{"position":[[0,5]]},"18":{"position":[[0,5]]},"26":{"position":[[0,5]]},"33":{"position":[[0,5]]},"49":{"position":[[0,5]]},"58":{"position":[[9,7]]},"76":{"position":[[18,7]]},"357":{"position":[[0,5]]},"375":{"position":[[0,5]]},"413":{"position":[[0,5]]},"541":{"position":[[0,5]]},"547":{"position":[[0,5]]},"555":{"position":[[0,5]]},"567":{"position":[[9,7]]},"585":{"position":[[18,7]]},"831":{"position":[[0,5]]},"849":{"position":[[0,5]]},"866":{"position":[[0,5]]}},"content":{"12":{"position":[[0,5],[58,5]]},"18":{"position":[[0,5],[38,5]]},"26":{"position":[[0,5],[55,5]]},"33":{"position":[[0,5],[53,5]]},"49":{"position":[[0,5],[63,5]]},"69":{"position":[[87,5]]},"74":{"position":[[69,7],[122,5],[205,5],[302,6],[323,5],[421,7],[539,7],[693,7]]},"75":{"position":[[0,7],[203,8],[261,6],[312,5]]},"82":{"position":[[681,7]]},"83":{"position":[[354,8]]},"86":{"position":[[320,8]]},"242":{"position":[[187,5]]},"357":{"position":[[0,5]]},"359":{"position":[[14,5]]},"375":{"position":[[0,5]]},"377":{"position":[[14,5]]},"413":{"position":[[0,5]]},"415":{"position":[[14,5]]},"425":{"position":[[0,5]]},"541":{"position":[[0,5],[58,5]]},"547":{"position":[[0,5],[38,5]]},"555":{"position":[[0,5],[55,5]]},"578":{"position":[[87,5]]},"583":{"position":[[69,7],[122,5],[205,5],[302,6],[323,5],[421,7],[539,7],[693,7]]},"584":{"position":[[0,7],[203,8],[261,6],[312,5]]},"589":{"position":[[681,7]]},"590":{"position":[[354,8]]},"593":{"position":[[320,8]]},"745":{"position":[[187,5]]},"777":{"position":[[719,5]]},"831":{"position":[[0,5]]},"833":{"position":[[14,5]]},"849":{"position":[[0,5]]},"851":{"position":[[14,5]]},"866":{"position":[[0,5]]},"868":{"position":[[14,5]]},"899":{"position":[[0,5]]}},"keywords":{}}],["patch_experiment(id",{"_index":2879,"title":{"425":{"position":[[0,20]]},"899":{"position":[[0,20]]}},"content":{},"keywords":{}}],["path",{"_index":1857,"title":{},"content":{"180":{"position":[[215,4]]},"243":{"position":[[72,4]]},"313":{"position":[[429,4],[483,5]]},"316":{"position":[[499,4]]},"355":{"position":[[42,4]]},"358":{"position":[[42,4]]},"361":{"position":[[42,4]]},"373":{"position":[[40,4]]},"376":{"position":[[40,4]]},"379":{"position":[[40,4]]},"384":{"position":[[40,4]]},"394":{"position":[[40,4]]},"397":{"position":[[40,4]]},"414":{"position":[[42,4]]},"417":{"position":[[42,4]]},"420":{"position":[[51,4]]},"439":{"position":[[879,4]]},"490":{"position":[[146,4]]},"491":{"position":[[267,5]]},"492":{"position":[[506,4],[884,4],[975,4],[1300,5]]},"495":{"position":[[118,4],[812,5]]},"687":{"position":[[236,4]]},"746":{"position":[[72,4]]},"785":{"position":[[429,4],[483,5]]},"793":{"position":[[499,4]]},"829":{"position":[[42,4]]},"832":{"position":[[42,4]]},"835":{"position":[[42,4]]},"847":{"position":[[40,4]]},"850":{"position":[[40,4]]},"853":{"position":[[40,4]]},"858":{"position":[[40,4]]},"867":{"position":[[42,4]]},"870":{"position":[[42,4]]},"873":{"position":[[51,4]]},"883":{"position":[[40,4]]},"886":{"position":[[40,4]]},"954":{"position":[[1062,4]]},"963":{"position":[[806,4]]},"964":{"position":[[1686,4]]},"985":{"position":[[735,4]]},"990":{"position":[[1029,4]]}},"keywords":{}}],["path/to/my/fil",{"_index":3195,"title":{},"content":{"495":{"position":[[430,17]]}},"keywords":{}}],["path:/sys/fs/cgroup/cpu,cpuacct/hadoop",{"_index":3061,"title":{},"content":{"481":{"position":[[337,38]]},"944":{"position":[[337,38]]}},"keywords":{}}],["patt",{"_index":1612,"title":{},"content":{"134":{"position":[[394,7]]},"662":{"position":[[394,7]]}},"keywords":{}}],["pay",{"_index":2168,"title":{},"content":{"260":{"position":[[8,3]]}},"keywords":{}}],["pci",{"_index":4053,"title":{},"content":{"965":{"position":[[7658,3],[7837,3],[8016,3],[8195,3],[8374,3],[8553,3],[8732,3],[8911,3]]}},"keywords":{}}],["pcibusid",{"_index":3995,"title":{},"content":{"965":{"position":[[1551,8],[1797,8],[10968,8],[11214,8]]}},"keywords":{}}],["pcre",{"_index":3449,"title":{},"content":{"791":{"position":[[2675,4],[18517,4]]}},"keywords":{}}],["peak",{"_index":1973,"title":{},"content":{"211":{"position":[[950,4],[963,4]]},"706":{"position":[[950,4],[963,4]]}},"keywords":{}}],["peopl",{"_index":494,"title":{},"content":{"53":{"position":[[1023,6]]},"86":{"position":[[210,6]]},"593":{"position":[[210,6]]}},"keywords":{}}],["per",{"_index":1039,"title":{},"content":{"83":{"position":[[106,3]]},"590":{"position":[[106,3]]}},"keywords":{}}],["per_process_gpu_memory_fract",{"_index":3982,"title":{},"content":{"965":{"position":[[1264,32],[4983,32],[10746,32],[14489,32],[16815,32]]}},"keywords":{}}],["percept",{"_index":674,"title":{},"content":{"53":{"position":[[7275,10]]}},"keywords":{}}],["perform",{"_index":488,"title":{},"content":{"53":{"position":[[890,7],[5720,10],[6310,11]]},"94":{"position":[[469,12],[677,7]]},"260":{"position":[[1551,7],[1807,7]]},"279":{"position":[[279,9]]},"502":{"position":[[586,7],[771,7]]},"608":{"position":[[469,12],[677,7]]},"961":{"position":[[576,7]]}},"keywords":{}}],["period",{"_index":731,"title":{},"content":{"53":{"position":[[10676,6],[10923,6]]},"211":{"position":[[173,12],[300,12],[535,12],[1065,6]]},"706":{"position":[[173,12],[300,12],[535,12],[1065,6]]}},"keywords":{}}],["permiss",{"_index":746,"title":{"171":{"position":[[10,11]]},"482":{"position":[[28,10]]},"678":{"position":[[10,11]]},"945":{"position":[[28,10]]}},"content":{"54":{"position":[[227,10]]},"107":{"position":[[965,12]]},"163":{"position":[[641,11]]},"319":{"position":[[55,10]]},"482":{"position":[[267,10],[553,10]]},"498":{"position":[[643,11]]},"502":{"position":[[1942,11],[2005,10]]},"522":{"position":[[879,11]]},"621":{"position":[[968,12]]},"670":{"position":[[641,11]]},"779":{"position":[[124,12]]},"796":{"position":[[55,10]]},"945":{"position":[[267,10],[553,10]]}},"keywords":{}}],["permissions.delete:delet",{"_index":3234,"title":{},"content":{"502":{"position":[[1039,25]]}},"keywords":{}}],["permissions.publ",{"_index":3237,"title":{},"content":{"502":{"position":[[1838,19]]}},"keywords":{}}],["permit",{"_index":2096,"title":{},"content":{"252":{"position":[[438,9]]},"260":{"position":[[504,9]]}},"keywords":{}}],["persist",{"_index":1295,"title":{},"content":{"101":{"position":[[85,9]]},"116":{"position":[[67,9]]},"121":{"position":[[605,10]]},"124":{"position":[[41,12]]},"125":{"position":[[667,10]]},"132":{"position":[[1601,10],[1683,10]]},"148":{"position":[[284,9]]},"150":{"position":[[57,10]]},"154":{"position":[[499,7]]},"155":{"position":[[124,7]]},"600":{"position":[[67,9]]},"615":{"position":[[85,9]]},"628":{"position":[[605,10]]},"631":{"position":[[41,12]]},"632":{"position":[[667,10]]},"648":{"position":[[284,9]]},"650":{"position":[[57,10]]},"654":{"position":[[499,7]]},"655":{"position":[[129,7]]},"660":{"position":[[1601,10],[1683,10]]}},"keywords":{}}],["person",{"_index":699,"title":{"65":{"position":[[38,8]]},"66":{"position":[[43,8]]},"574":{"position":[[38,8]]},"575":{"position":[[43,8]]}},"content":{"53":{"position":[[8454,6]]},"54":{"position":[[157,6]]}},"keywords":{}}],["perspect",{"_index":500,"title":{},"content":{"53":{"position":[[1154,12]]}},"keywords":{}}],["pervas",{"_index":552,"title":{},"content":{"53":{"position":[[2366,9]]}},"keywords":{}}],["pgp",{"_index":2485,"title":{},"content":{"323":{"position":[[80,3]]},"773":{"position":[[80,3]]}},"keywords":{}}],["pgpkeys.mit.edu",{"_index":2220,"title":{},"content":{"261":{"position":[[258,15],[308,15]]}},"keywords":{}}],["pgsql",{"_index":3447,"title":{},"content":{"791":{"position":[[2648,5],[18490,5]]}},"keywords":{}}],["phadoop",{"_index":2415,"title":{},"content":{"306":{"position":[[500,7]]},"734":{"position":[[259,7],[361,7],[463,7],[564,7]]},"757":{"position":[[500,7]]}},"keywords":{}}],["physic",{"_index":1636,"title":{},"content":{"135":{"position":[[215,9]]},"663":{"position":[[215,9]]}},"keywords":{}}],["pick",{"_index":4221,"title":{},"content":{"969":{"position":[[412,4]]}},"keywords":{}}],["pictur",{"_index":1114,"title":{},"content":{"90":{"position":[[1021,8]]},"604":{"position":[[1021,8]]}},"keywords":{}}],["pid",{"_index":3106,"title":{},"content":{"484":{"position":[[477,4],[678,4],[853,6],[877,6],[933,4],[1007,6],[1061,4],[1208,3]]},"947":{"position":[[477,4],[678,4],[853,6],[877,6],[933,4],[1007,6],[1061,4],[1208,3]]}},"keywords":{}}],["pid=`echo",{"_index":3119,"title":{},"content":{"484":{"position":[[767,9]]},"947":{"position":[[767,9]]}},"keywords":{}}],["pid\\tname\\t\\tmntns\\n",{"_index":3118,"title":{},"content":{"484":{"position":[[707,22]]},"947":{"position":[[707,22]]}},"keywords":{}}],["pillow",{"_index":4230,"title":{},"content":{"969":{"position":[[957,6]]}},"keywords":{}}],["ping",{"_index":895,"title":{},"content":{"69":{"position":[[507,4]]},"578":{"position":[[507,4]]},"777":{"position":[[566,4]]}},"keywords":{}}],["pinyin",{"_index":2171,"title":{},"content":{"260":{"position":[[201,6]]}},"keywords":{}}],["pip",{"_index":1492,"title":{},"content":{"115":{"position":[[151,4]]},"132":{"position":[[2082,4]]},"324":{"position":[[511,3]]},"332":{"position":[[185,3],[241,3]]},"333":{"position":[[301,3]]},"350":{"position":[[455,3]]},"435":{"position":[[269,3],[376,3],[492,3],[617,3]]},"441":{"position":[[173,3]]},"599":{"position":[[151,4]]},"660":{"position":[[2082,4]]},"802":{"position":[[185,3],[241,3]]},"803":{"position":[[301,3]]},"824":{"position":[[455,3]]},"919":{"position":[[310,3],[425,3],[535,3],[617,3]]},"925":{"position":[[173,3]]},"950":{"position":[[628,3],[718,3]]},"954":{"position":[[1092,3],[1137,3],[1448,3],[1554,3]]},"969":{"position":[[928,3],[1083,3]]},"979":{"position":[[433,3]]},"984":{"position":[[344,3]]},"989":{"position":[[342,3]]}},"keywords":{}}],["pip.pi",{"_index":4228,"title":{},"content":{"969":{"position":[[875,6],[898,6],[917,6]]}},"keywords":{}}],["pip3",{"_index":3847,"title":{},"content":{"950":{"position":[[748,4],[815,4]]}},"keywords":{}}],["pipdep",{"_index":170,"title":{},"content":{"9":{"position":[[431,17],[1018,17]]},"10":{"position":[[569,17],[933,17]]},"11":{"position":[[591,17]]},"12":{"position":[[354,17],[844,17],[950,17]]},"13":{"position":[[507,17]]},"350":{"position":[[411,15]]},"351":{"position":[[396,17],[1041,18]]},"353":{"position":[[411,20],[919,18],[1303,20]]},"356":{"position":[[607,18]]},"359":{"position":[[310,17],[811,20]]},"362":{"position":[[610,18]]},"389":{"position":[[1031,20]]},"392":{"position":[[778,20]]},"395":{"position":[[766,20]]},"398":{"position":[[796,20]]},"538":{"position":[[431,17],[1018,17]]},"539":{"position":[[569,17],[933,17]]},"540":{"position":[[591,17]]},"541":{"position":[[354,17],[844,17],[950,17]]},"542":{"position":[[507,17]]},"824":{"position":[[411,15]]},"825":{"position":[[396,17],[1041,18]]},"827":{"position":[[411,20],[919,18],[1303,20]]},"830":{"position":[[607,18]]},"833":{"position":[[310,17],[811,20]]},"836":{"position":[[610,18]]},"878":{"position":[[1031,20]]},"881":{"position":[[778,20]]},"884":{"position":[[766,20]]},"887":{"position":[[796,20]]}},"keywords":{}}],["pipelin",{"_index":1141,"title":{},"content":{"90":{"position":[[2109,8],[2421,8]]},"92":{"position":[[495,8],[696,9]]},"93":{"position":[[781,9]]},"96":{"position":[[97,9],[386,8]]},"99":{"position":[[297,8]]},"102":{"position":[[2078,9],[2088,8],[2132,8]]},"110":{"position":[[813,8]]},"139":{"position":[[1321,9]]},"152":{"position":[[132,9]]},"158":{"position":[[1445,9],[1725,8]]},"604":{"position":[[2109,8],[2421,8]]},"606":{"position":[[495,8],[696,9]]},"607":{"position":[[781,9]]},"610":{"position":[[97,9],[386,8]]},"613":{"position":[[297,8]]},"616":{"position":[[2090,9],[2100,8],[2144,8]]},"624":{"position":[[818,8]]},"639":{"position":[[1327,9]]},"652":{"position":[[132,9]]},"658":{"position":[[1445,9],[1725,8]]}},"keywords":{}}],["pipeline.pipelin",{"_index":1367,"title":{},"content":{"102":{"position":[[2246,17]]},"616":{"position":[[2259,17]]}},"keywords":{}}],["pipenv",{"_index":1487,"title":{},"content":{"115":{"position":[[52,7]]},"599":{"position":[[52,7]]}},"keywords":{}}],["pkcs12",{"_index":3184,"title":{},"content":{"492":{"position":[[643,7],[1058,8]]}},"keywords":{}}],["pkg",{"_index":3424,"title":{},"content":{"791":{"position":[[2331,3],[3223,3],[6375,3],[12123,3],[12170,3],[12223,3],[17117,3],[18173,3],[19047,3],[22093,3],[27672,3],[27719,3],[27772,3],[31971,3]]},"969":{"position":[[579,3]]}},"keywords":{}}],["pl",{"_index":2414,"title":{},"content":{"306":{"position":[[476,2]]},"757":{"position":[[476,2]]},"934":{"position":[[183,2]]}},"keywords":{}}],["plac",{"_index":637,"title":{},"content":{"53":{"position":[[5985,5]]},"83":{"position":[[280,8]]},"134":{"position":[[1583,6]]},"160":{"position":[[1117,6]]},"200":{"position":[[153,6]]},"590":{"position":[[280,8]]},"662":{"position":[[1583,6]]},"667":{"position":[[1118,6]]},"695":{"position":[[153,6]]},"938":{"position":[[0,5]]}},"keywords":{}}],["place.answ",{"_index":1112,"title":{},"content":{"90":{"position":[[963,12]]},"604":{"position":[[963,12]]}},"keywords":{}}],["plan",{"_index":576,"title":{},"content":{"53":{"position":[[3339,4]]},"54":{"position":[[2713,6]]},"160":{"position":[[744,7]]},"314":{"position":[[796,5]]},"495":{"position":[[392,5]]},"667":{"position":[[744,7]]},"786":{"position":[[796,5]]}},"keywords":{}}],["platform",{"_index":1211,"title":{"93":{"position":[[55,8]]},"94":{"position":[[63,8]]},"607":{"position":[[55,8]]},"608":{"position":[[63,8]]}},"content":{"93":{"position":[[53,8],[123,9],[178,9],[285,8],[930,8]]},"94":{"position":[[88,8]]},"98":{"position":[[454,9]]},"99":{"position":[[4,8],[34,8],[120,8],[215,8],[422,9]]},"102":{"position":[[510,8],[1897,9]]},"103":{"position":[[429,9]]},"108":{"position":[[87,8]]},"112":{"position":[[1118,9]]},"177":{"position":[[24,9]]},"596":{"position":[[1118,9]]},"607":{"position":[[53,8],[123,9],[178,9],[285,8],[930,8]]},"608":{"position":[[88,8]]},"612":{"position":[[454,9]]},"613":{"position":[[4,8],[34,8],[120,8],[215,8],[422,9]]},"616":{"position":[[510,8],[1909,9]]},"617":{"position":[[429,9]]},"622":{"position":[[87,8]]},"684":{"position":[[24,9]]}},"keywords":{}}],["play",{"_index":1152,"title":{},"content":{"90":{"position":[[2565,5]]},"184":{"position":[[104,4]]},"604":{"position":[[2565,5]]},"712":{"position":[[104,4]]},"961":{"position":[[761,4]]}},"keywords":{}}],["pleas",{"_index":267,"title":{},"content":{"23":{"position":[[643,6]]},"53":{"position":[[640,6]]},"56":{"position":[[121,6]]},"61":{"position":[[55,6]]},"64":{"position":[[88,6]]},"112":{"position":[[326,6]]},"116":{"position":[[482,6]]},"121":{"position":[[422,6]]},"127":{"position":[[118,6],[319,6]]},"128":{"position":[[87,6],[156,6],[240,6]]},"130":{"position":[[0,6]]},"133":{"position":[[579,7]]},"140":{"position":[[63,6]]},"141":{"position":[[0,6]]},"142":{"position":[[107,6]]},"145":{"position":[[122,6]]},"146":{"position":[[661,6]]},"149":{"position":[[0,7]]},"158":{"position":[[0,6]]},"161":{"position":[[846,7]]},"241":{"position":[[13,6]]},"252":{"position":[[960,6]]},"257":{"position":[[243,6]]},"260":{"position":[[522,6],[846,6],[2128,6]]},"279":{"position":[[0,6],[381,6],[548,6],[590,6]]},"284":{"position":[[0,6]]},"286":{"position":[[0,6]]},"296":{"position":[[53,6]]},"314":{"position":[[410,6],[622,6]]},"327":{"position":[[1040,6]]},"332":{"position":[[52,6]]},"333":{"position":[[0,6]]},"369":{"position":[[609,6]]},"439":{"position":[[145,6],[277,6],[1162,6],[1311,6]]},"476":{"position":[[112,6],[295,6]]},"487":{"position":[[116,6]]},"495":{"position":[[199,6]]},"552":{"position":[[643,6]]},"565":{"position":[[121,6]]},"570":{"position":[[55,6]]},"573":{"position":[[88,6]]},"596":{"position":[[326,6]]},"600":{"position":[[482,6]]},"628":{"position":[[422,6]]},"634":{"position":[[118,6],[319,6]]},"635":{"position":[[87,6],[156,6],[240,6]]},"637":{"position":[[0,6]]},"640":{"position":[[63,6]]},"641":{"position":[[0,6]]},"642":{"position":[[107,6]]},"645":{"position":[[122,6]]},"646":{"position":[[661,6]]},"649":{"position":[[0,7]]},"658":{"position":[[0,6]]},"661":{"position":[[579,7]]},"668":{"position":[[846,7]]},"744":{"position":[[1400,6],[1502,6],[1768,6]]},"763":{"position":[[53,6]]},"786":{"position":[[410,6],[622,6]]},"788":{"position":[[758,6],[843,6]]},"791":{"position":[[17739,6],[32520,6]]},"802":{"position":[[52,6]]},"803":{"position":[[0,6]]},"808":{"position":[[691,6]]},"843":{"position":[[609,6]]},"923":{"position":[[131,6]]},"936":{"position":[[0,6]]},"976":{"position":[[107,6]]}},"keywords":{}}],["pleasant",{"_index":794,"title":{},"content":{"54":{"position":[[2266,8]]}},"keywords":{}}],["plguin",{"_index":3798,"title":{},"content":{"936":{"position":[[77,6]]}},"keywords":{}}],["plot",{"_index":4165,"title":{},"content":{"966":{"position":[[161,4]]}},"keywords":{}}],["plug",{"_index":1744,"title":{},"content":{"152":{"position":[[373,4],[550,4],[627,4],[713,4],[728,4],[859,4],[970,4],[1447,4]]},"153":{"position":[[356,4]]},"652":{"position":[[379,4],[556,4],[633,4],[719,4],[734,4],[930,4],[959,4],[1051,4],[1139,4],[1250,4],[1727,4]]},"653":{"position":[[356,4]]}},"keywords":{}}],["plugin",{"_index":902,"title":{"934":{"position":[[34,6]]},"935":{"position":[[25,6]]}},"content":{"71":{"position":[[73,7],[180,6],[226,6]]},"152":{"position":[[510,7]]},"236":{"position":[[11,6],[95,6]]},"327":{"position":[[773,7],[837,6]]},"580":{"position":[[73,7],[180,6],[226,6]]},"652":{"position":[[516,7]]},"740":{"position":[[11,6],[95,6]]},"934":{"position":[[25,6],[254,6]]}},"keywords":{}}],["plugin:check",{"_index":2000,"title":{},"content":{"220":{"position":[[36,12]]},"734":{"position":[[67,12]]}},"keywords":{}}],["pluginsop",{"_index":2033,"title":{},"content":{"236":{"position":[[121,11]]},"740":{"position":[[121,11]]}},"keywords":{}}],["plugmgr",{"_index":1831,"title":{},"content":{"162":{"position":[[532,9]]},"669":{"position":[[684,9]]}},"keywords":{}}],["pm",{"_index":2348,"title":{},"content":{"281":{"position":[[894,2]]}},"keywords":{}}],["pmc",{"_index":540,"title":{"78":{"position":[[27,3]]},"79":{"position":[[56,3]]}},"content":{"53":{"position":[[2055,3],[2273,4],[2340,3],[2452,3],[3025,4],[3683,5],[3839,3],[3978,3],[4330,3],[4435,3],[4516,3],[4531,3],[4715,4],[4786,3],[4816,3],[5063,4],[5172,3],[5254,3],[5271,3],[5965,3],[6016,3],[7337,3],[7370,3],[9332,3],[9636,3],[9713,3],[9742,3],[9846,3],[9862,3],[9910,3],[9943,3],[10097,3],[10237,3],[10275,3],[10343,5],[10349,3],[10386,3],[10473,3],[10512,3],[10625,3]]},"54":{"position":[[2863,3]]},"79":{"position":[[10,3],[661,3],[2221,3]]},"83":{"position":[[123,4],[515,3]]},"281":{"position":[[1298,3],[1414,4]]},"441":{"position":[[35,4]]},"590":{"position":[[123,4]]},"925":{"position":[[35,4]]}},"keywords":{}}],["pmcmaintain",{"_index":600,"title":{},"content":{"53":{"position":[[4115,14]]}},"keywords":{}}],["pod",{"_index":55,"title":{},"content":{"4":{"position":[[103,4]]},"5":{"position":[[66,3]]},"126":{"position":[[81,4]]},"134":{"position":[[1713,3],[1867,3]]},"240":{"position":[[264,4]]},"306":{"position":[[161,3]]},"313":{"position":[[838,3]]},"340":{"position":[[35,4],[52,4],[77,3]]},"365":{"position":[[250,5]]},"376":{"position":[[246,5]]},"388":{"position":[[226,5],[546,4]]},"409":{"position":[[794,5]]},"429":{"position":[[27,3],[83,4],[158,3],[251,3]]},"440":{"position":[[245,3]]},"464":{"position":[[103,4]]},"465":{"position":[[66,3]]},"474":{"position":[[28,4]]},"496":{"position":[[486,3]]},"633":{"position":[[81,4]]},"662":{"position":[[1713,3],[1867,3]]},"742":{"position":[[522,3],[664,3]]},"744":{"position":[[264,4]]},"757":{"position":[[161,3]]},"785":{"position":[[838,3]]},"814":{"position":[[35,4],[54,4],[79,3]]},"839":{"position":[[250,5]]},"850":{"position":[[246,5]]},"862":{"position":[[794,5]]},"877":{"position":[[226,5],[546,4]]},"903":{"position":[[27,3],[83,4],[158,3],[251,3]]},"924":{"position":[[233,3]]}},"keywords":{}}],["podgroups.scheduling.incubator.k8s.io",{"_index":98,"title":{},"content":{"4":{"position":[[679,38]]},"464":{"position":[[679,38]]}},"keywords":{}}],["podlog",{"_index":292,"title":{},"content":{"28":{"position":[[301,9],[439,9],[506,9]]},"29":{"position":[[352,9],[1529,9]]},"382":{"position":[[250,11],[304,11]]},"385":{"position":[[278,11],[332,11]]},"557":{"position":[[301,9],[439,9],[506,9]]},"558":{"position":[[352,9],[1529,9]]},"856":{"position":[[250,11],[304,11]]},"859":{"position":[[278,11],[332,11]]}},"keywords":{}}],["podnam",{"_index":291,"title":{},"content":{"28":{"position":[[272,10],[392,10],[459,10]]},"29":{"position":[[305,10],[1482,10]]},"557":{"position":[[272,10],[392,10],[459,10]]},"558":{"position":[[305,10],[1482,10]]}},"keywords":{}}],["podname\":\"newexperiment1",{"_index":2799,"title":{},"content":{"382":{"position":[[217,25],[267,25]]},"385":{"position":[[245,25],[295,25]]},"856":{"position":[[217,25],[267,25]]},"859":{"position":[[245,25],[295,25]]}},"keywords":{}}],["podspec",{"_index":1775,"title":{},"content":{"155":{"position":[[360,8]]},"655":{"position":[[367,8]]}},"keywords":{}}],["point",{"_index":1090,"title":{"91":{"position":[[34,6]]},"605":{"position":[[34,6]]}},"content":{"90":{"position":[[408,7],[2794,6]]},"114":{"position":[[519,7]]},"260":{"position":[[39,8]]},"484":{"position":[[466,6]]},"598":{"position":[[519,7]]},"604":{"position":[[408,7],[2794,6]]},"639":{"position":[[1416,6]]},"939":{"position":[[122,8]]},"947":{"position":[[466,6]]},"966":{"position":[[325,7],[463,5]]},"981":{"position":[[1259,6],[1327,6]]}},"keywords":{}}],["point.th",{"_index":1658,"title":{},"content":{"139":{"position":[[1410,9]]}},"keywords":{}}],["points:/proc/mount",{"_index":3059,"title":{},"content":{"481":{"position":[[307,19]]},"944":{"position":[[307,19]]}},"keywords":{}}],["polici",{"_index":3688,"title":{},"content":{"791":{"position":[[15020,6],[15569,6],[16264,6],[17059,6],[30569,6],[31118,6],[31913,6]]}},"keywords":{}}],["policies.submarine'",{"_index":1817,"title":{},"content":{"160":{"position":[[1187,20]]},"667":{"position":[[1188,20]]}},"keywords":{}}],["polit",{"_index":947,"title":{},"content":{"75":{"position":[[120,6]]},"584":{"position":[[120,6]]}},"keywords":{}}],["poll",{"_index":2905,"title":{},"content":{"431":{"position":[[136,5]]},"905":{"position":[[136,5]]}},"keywords":{}}],["polling_interv",{"_index":2900,"title":{"431":{"position":[[25,17]]},"905":{"position":[[25,17]]}},"content":{},"keywords":{}}],["pop",{"_index":2204,"title":{},"content":{"260":{"position":[[2019,3]]}},"keywords":{}}],["popular",{"_index":1119,"title":{},"content":{"90":{"position":[[1160,7],[1423,7]]},"116":{"position":[[361,8]]},"600":{"position":[[361,8]]},"604":{"position":[[1160,7],[1423,7]]}},"keywords":{}}],["port",{"_index":113,"title":{},"content":{"5":{"position":[[13,4],[203,4],[229,4]]},"200":{"position":[[192,4]]},"208":{"position":[[246,4]]},"209":{"position":[[230,4],[336,4],[527,4]]},"289":{"position":[[106,4],[119,4],[240,4],[873,4]]},"305":{"position":[[381,4]]},"306":{"position":[[192,4],[205,4]]},"314":{"position":[[40,4],[859,4]]},"341":{"position":[[135,4],[159,4]]},"445":{"position":[[169,7]]},"446":{"position":[[79,4]]},"465":{"position":[[13,4],[203,4],[229,4]]},"492":{"position":[[204,5],[334,5]]},"495":{"position":[[150,4],[167,4],[627,5]]},"695":{"position":[[192,4]]},"703":{"position":[[246,4]]},"704":{"position":[[230,4],[336,4],[527,4]]},"744":{"position":[[1246,4],[1270,4]]},"752":{"position":[[106,4],[119,4],[240,4],[873,4]]},"756":{"position":[[381,4]]},"757":{"position":[[192,4],[205,4]]},"786":{"position":[[40,4],[859,4]]},"815":{"position":[[0,4],[24,4],[50,4]]}},"keywords":{}}],["portabl",{"_index":1876,"title":{},"content":{"184":{"position":[[426,12]]},"712":{"position":[[426,12]]}},"keywords":{}}],["posit",{"_index":797,"title":{},"content":{"54":{"position":[[2325,8]]}},"keywords":{}}],["possibl",{"_index":738,"title":{},"content":{"53":{"position":[[10848,9]]},"74":{"position":[[41,9],[586,8]]},"136":{"position":[[6,8]]},"147":{"position":[[606,8]]},"155":{"position":[[338,8]]},"211":{"position":[[1172,9]]},"583":{"position":[[41,9],[586,8]]},"647":{"position":[[606,8]]},"655":{"position":[[345,8]]},"664":{"position":[[6,8]]},"706":{"position":[[1172,9]]}},"keywords":{}}],["post",{"_index":146,"title":{},"content":{"9":{"position":[[0,4],[49,4]]},"15":{"position":[[0,4],[46,4]]},"20":{"position":[[0,4],[65,4]]},"22":{"position":[[0,4],[48,4]]},"23":{"position":[[0,4],[48,4]]},"35":{"position":[[0,4],[95,4]]},"38":{"position":[[0,4],[46,4]]},"43":{"position":[[0,4],[115,4]]},"46":{"position":[[0,4],[54,4]]},"51":{"position":[[0,4],[80,4]]},"349":{"position":[[0,4]]},"351":{"position":[[14,4]]},"364":{"position":[[0,4]]},"366":{"position":[[14,4]]},"367":{"position":[[0,4]]},"369":{"position":[[14,4]]},"387":{"position":[[0,4]]},"389":{"position":[[14,4]]},"408":{"position":[[0,4]]},"410":{"position":[[14,4]]},"419":{"position":[[0,4]]},"421":{"position":[[14,4]]},"538":{"position":[[0,4],[49,4]]},"544":{"position":[[0,4],[46,4]]},"549":{"position":[[0,4],[65,4]]},"551":{"position":[[0,4],[48,4]]},"552":{"position":[[0,4],[48,4]]},"560":{"position":[[0,4],[46,4]]},"823":{"position":[[0,4]]},"825":{"position":[[14,4]]},"838":{"position":[[0,4]]},"840":{"position":[[14,4]]},"841":{"position":[[0,4]]},"843":{"position":[[14,4]]},"861":{"position":[[0,4]]},"863":{"position":[[14,4]]},"872":{"position":[[0,4]]},"874":{"position":[[14,4]]},"876":{"position":[[0,4]]},"878":{"position":[[14,4]]}},"keywords":{}}],["postconf(1",{"_index":3681,"title":{},"content":{"791":{"position":[[14855,12],[30404,12]]}},"keywords":{}}],["postfix",{"_index":3422,"title":{},"content":{"791":{"position":[[2299,7],[2626,7],[2640,7],[2654,7],[2667,7],[2722,7],[2734,7],[3191,7],[5310,7],[10444,8],[10526,7],[14101,7],[14682,7],[14821,7],[18141,7],[18468,7],[18482,7],[18496,7],[18509,7],[18564,7],[18576,7],[19015,7],[21134,7],[26162,8],[26244,7],[29650,7],[30231,7],[30370,7]]}},"keywords":{}}],["postfix_3.1.0",{"_index":3628,"title":{},"content":{"791":{"position":[[10473,17],[26191,17]]}},"keywords":{}}],["potenti",{"_index":761,"title":{},"content":{"54":{"position":[[1037,9]]},"133":{"position":[[294,11],[509,11]]},"661":{"position":[[294,11],[509,11]]}},"keywords":{}}],["ppassword",{"_index":3154,"title":{},"content":{"489":{"position":[[133,9]]}},"keywords":{}}],["ppp",{"_index":3431,"title":{},"content":{"791":{"position":[[2472,3],[18314,3]]}},"keywords":{}}],["pr",{"_index":748,"title":{},"content":{"54":{"position":[[284,3],[2574,3]]},"76":{"position":[[190,4]]},"82":{"position":[[203,2]]},"585":{"position":[[190,4]]},"589":{"position":[[203,2]]}},"keywords":{}}],["practic",{"_index":766,"title":{},"content":{"54":{"position":[[1243,9]]},"114":{"position":[[421,8]]},"598":{"position":[[421,8]]}},"keywords":{}}],["prang",{"_index":3797,"title":{},"content":{"934":{"position":[[488,7],[502,7]]}},"keywords":{}}],["pre",{"_index":263,"title":{"23":{"position":[[25,3]]},"143":{"position":[[7,3]]},"367":{"position":[[25,3]]},"552":{"position":[[25,3]]},"643":{"position":[[7,3]]},"841":{"position":[[25,3]]}},"content":{"90":{"position":[[627,3]]},"147":{"position":[[1076,3]]},"152":{"position":[[109,3]]},"158":{"position":[[415,3]]},"298":{"position":[[10,3]]},"313":{"position":[[681,3]]},"604":{"position":[[627,3]]},"647":{"position":[[1076,3]]},"652":{"position":[[109,3]]},"658":{"position":[[415,3]]},"765":{"position":[[10,3]]},"785":{"position":[[681,3]]}},"keywords":{}}],["prebuilt",{"_index":3332,"title":{"958":{"position":[[4,8]]},"973":{"position":[[4,8]]}},"content":{"778":{"position":[[175,8]]},"779":{"position":[[344,8],[393,8]]},"789":{"position":[[57,8]]},"951":{"position":[[292,8]]},"955":{"position":[[212,8],[344,8]]},"958":{"position":[[32,8]]},"970":{"position":[[457,8],[594,8]]},"973":{"position":[[32,8]]}},"keywords":{}}],["precompil",{"_index":4235,"title":{},"content":{"970":{"position":[[96,12]]}},"keywords":{}}],["preconfigur",{"_index":1821,"title":{},"content":{"160":{"position":[[1443,13]]},"667":{"position":[[1445,13]]}},"keywords":{}}],["predefin",{"_index":1318,"title":{"156":{"position":[[8,10]]},"157":{"position":[[0,10]]},"158":{"position":[[7,10]]},"656":{"position":[[8,10]]},"657":{"position":[[0,10]]},"658":{"position":[[7,10]]}},"content":{"102":{"position":[[684,10],[1330,10],[1382,10],[1826,10],[1942,10],[2047,10]]},"103":{"position":[[558,10]]},"107":{"position":[[142,10]]},"112":{"position":[[1247,10]]},"118":{"position":[[422,10],[524,10]]},"156":{"position":[[0,10]]},"157":{"position":[[0,10]]},"158":{"position":[[36,10],[1358,10],[1685,10]]},"365":{"position":[[581,11]]},"596":{"position":[[1247,10]]},"616":{"position":[[689,10],[1342,10],[1394,10],[1838,10],[1954,10],[2059,10]]},"617":{"position":[[558,10]]},"621":{"position":[[142,10]]},"625":{"position":[[423,10],[525,10]]},"656":{"position":[[0,10]]},"657":{"position":[[0,10]]},"658":{"position":[[36,10],[1358,10],[1685,10]]},"839":{"position":[[581,11]]}},"keywords":{}}],["predict",{"_index":1589,"title":{},"content":{"132":{"position":[[1943,12]]},"660":{"position":[[1943,12]]}},"keywords":{}}],["prediction.logs/metr",{"_index":1664,"title":{},"content":{"139":{"position":[[2020,23]]},"639":{"position":[[2033,23]]}},"keywords":{}}],["pref",{"_index":1514,"title":{},"content":{"117":{"position":[[514,9],[576,9]]},"134":{"position":[[1244,10]]},"160":{"position":[[1165,10]]},"236":{"position":[[107,10],[133,10]]},"601":{"position":[[514,9],[576,9]]},"662":{"position":[[1244,10]]},"667":{"position":[[1166,10]]},"740":{"position":[[107,10],[133,10]]}},"keywords":{}}],["prefac",{"_index":806,"title":{"56":{"position":[[0,7]]},"257":{"position":[[3,7]]},"565":{"position":[[0,7]]}},"content":{},"keywords":{}}],["prefix",{"_index":1699,"title":{},"content":{"146":{"position":[[401,7]]},"646":{"position":[[401,7]]}},"keywords":{}}],["prefix=\"apach",{"_index":2296,"title":{},"content":{"269":{"position":[[302,14]]}},"keywords":{}}],["prem",{"_index":1391,"title":{},"content":{"106":{"position":[[82,4]]},"151":{"position":[[372,4]]},"620":{"position":[[82,4]]},"651":{"position":[[372,4]]}},"keywords":{}}],["prem/on",{"_index":1399,"title":{},"content":{"106":{"position":[[493,7]]},"110":{"position":[[1130,7]]},"620":{"position":[[493,7]]},"624":{"position":[[1135,7]]}},"keywords":{}}],["prepar",{"_index":1174,"title":{"267":{"position":[[4,7]]},"273":{"position":[[3,7]]},"330":{"position":[[0,7]]},"338":{"position":[[0,7]]},"344":{"position":[[3,7]]},"788":{"position":[[0,7]]},"789":{"position":[[0,7]]},"800":{"position":[[0,7]]},"812":{"position":[[0,7]]},"818":{"position":[[3,7]]}},"content":{"91":{"position":[[272,8],[303,8]]},"96":{"position":[[18,9]]},"114":{"position":[[36,8]]},"186":{"position":[[1084,8]]},"278":{"position":[[389,8]]},"598":{"position":[[36,8]]},"605":{"position":[[272,8],[303,8]]},"610":{"position":[[18,9]]},"714":{"position":[[1084,8]]},"791":{"position":[[7637,9],[7794,9],[7943,9],[8117,9],[8277,9],[8429,9],[8597,9],[8759,9],[8965,9],[9170,9],[9351,9],[9535,9],[9700,9],[9841,9],[9997,9],[10168,9],[10320,9],[10453,9],[10608,9],[10785,9],[10952,9],[11108,9],[11249,9],[11414,9],[11578,9],[11761,9],[11951,9],[12138,9],[12309,9],[12462,9],[12613,9],[12803,9],[12978,9],[23355,9],[23512,9],[23661,9],[23835,9],[23995,9],[24147,9],[24315,9],[24477,9],[24683,9],[24888,9],[25069,9],[25253,9],[25418,9],[25559,9],[25715,9],[25886,9],[26038,9],[26171,9],[26326,9],[26503,9],[26670,9],[26826,9],[26967,9],[27127,9],[27310,9],[27500,9],[27687,9],[27858,9],[28011,9],[28162,9],[28352,9],[28527,9]]}},"keywords":{}}],["prerequisit",{"_index":3,"title":{"1":{"position":[[0,12]]},"217":{"position":[[0,13]]},"235":{"position":[[0,13]]},"309":{"position":[[0,12]]},"435":{"position":[[0,13]]},"461":{"position":[[0,12]]},"731":{"position":[[0,13]]},"739":{"position":[[0,13]]},"781":{"position":[[0,12]]},"919":{"position":[[0,13]]},"960":{"position":[[0,12]]},"975":{"position":[[0,12]]}},"content":{"327":{"position":[[793,13]]},"338":{"position":[[0,12]]},"812":{"position":[[0,12]]}},"keywords":{}}],["presid",{"_index":614,"title":{},"content":{"53":{"position":[[4921,10]]}},"keywords":{}}],["press",{"_index":3287,"title":{},"content":{"744":{"position":[[1644,5]]}},"keywords":{}}],["prevent",{"_index":660,"title":{},"content":{"53":{"position":[[6672,7]]},"265":{"position":[[799,8]]}},"keywords":{}}],["previou",{"_index":104,"title":{},"content":{"4":{"position":[[895,8]]},"53":{"position":[[5595,8]]},"151":{"position":[[126,8]]},"270":{"position":[[40,8]]},"464":{"position":[[895,8]]},"651":{"position":[[126,8]]},"966":{"position":[[515,8]]}},"keywords":{}}],["previous",{"_index":3577,"title":{},"content":{"791":{"position":[[6978,10],[7749,10],[7896,10],[8067,10],[8241,10],[8389,10],[8557,10],[8711,10],[8917,10],[9123,10],[9304,10],[9485,10],[9661,10],[9795,10],[9951,10],[10131,10],[10280,10],[10414,10],[10567,10],[10736,10],[10903,10],[11072,10],[11202,10],[11365,10],[11534,10],[11710,10],[11905,10],[12085,10],[12262,10],[12419,10],[12566,10],[12755,10],[12933,10],[22696,10],[23467,10],[23614,10],[23785,10],[23959,10],[24107,10],[24275,10],[24429,10],[24635,10],[24841,10],[25022,10],[25203,10],[25379,10],[25513,10],[25669,10],[25849,10],[25998,10],[26132,10],[26285,10],[26454,10],[26621,10],[26790,10],[26920,10],[27083,10],[27259,10],[27454,10],[27634,10],[27811,10],[27968,10],[28115,10],[28304,10],[28482,10]]}},"keywords":{}}],["prim",{"_index":2200,"title":{},"content":{"260":{"position":[[1646,5],[1902,5]]}},"keywords":{}}],["primari",{"_index":615,"title":{},"content":{"53":{"position":[[4958,7],[5879,7]]},"102":{"position":[[142,7]]},"117":{"position":[[173,7]]},"601":{"position":[[173,7]]},"616":{"position":[[142,7]]}},"keywords":{}}],["primarili",{"_index":3216,"title":{},"content":{"501":{"position":[[19,9]]}},"keywords":{}}],["principl",{"_index":475,"title":{},"content":{"53":{"position":[[550,11]]}},"keywords":{}}],["print",{"_index":2138,"title":{},"content":{"253":{"position":[[134,5],[169,5],[334,5],[410,5]]},"271":{"position":[[37,5]]},"429":{"position":[[0,5],[61,5]]},"903":{"position":[[0,5],[61,5]]}},"keywords":{}}],["print(log",{"_index":2688,"title":{},"content":{"343":{"position":[[2082,11]]},"817":{"position":[[2100,11]]}},"keywords":{}}],["print_funct",{"_index":2543,"title":{},"content":{"328":{"position":[[164,14]]},"809":{"position":[[164,14]]}},"keywords":{}}],["printf",{"_index":3117,"title":{},"content":{"484":{"position":[[700,6],[983,6]]},"947":{"position":[[700,6],[983,6]]}},"keywords":{}}],["prior",{"_index":4254,"title":{},"content":{"979":{"position":[[746,5]]}},"keywords":{}}],["prioriti",{"_index":1646,"title":{},"content":{"136":{"position":[[559,9]]},"664":{"position":[[559,9]]}},"keywords":{}}],["privat",{"_index":638,"title":{},"content":{"53":{"position":[[5998,7]]},"79":{"position":[[178,7],[677,7]]},"265":{"position":[[929,7]]},"268":{"position":[[422,7]]},"502":{"position":[[1430,8],[1456,7]]},"522":{"position":[[695,8]]}},"keywords":{}}],["private@submarine.apache.org",{"_index":1002,"title":{},"content":{"79":{"position":[[1562,28]]}},"keywords":{}}],["privileg",{"_index":725,"title":{},"content":{"53":{"position":[[10003,10],[10150,10]]},"61":{"position":[[22,9]]},"107":{"position":[[1115,10]]},"570":{"position":[[22,9]]},"621":{"position":[[1118,10]]}},"keywords":{}}],["probl",{"_index":1275,"title":{},"content":{"98":{"position":[[39,8]]},"199":{"position":[[321,8]]},"221":{"position":[[72,7]]},"612":{"position":[[39,8]]},"694":{"position":[[321,8]]},"735":{"position":[[72,7]]}},"keywords":{}}],["proc/$pid/ns/mnt",{"_index":3129,"title":{},"content":{"484":{"position":[[964,18]]},"947":{"position":[[964,18]]}},"keywords":{}}],["proc/*/mount",{"_index":3112,"title":{},"content":{"484":{"position":[[604,14]]},"947":{"position":[[604,14]]}},"keywords":{}}],["procedur",{"_index":1192,"title":{},"content":{"92":{"position":[[137,9],[1004,11]]},"606":{"position":[[137,9],[1004,11]]}},"keywords":{}}],["process",{"_index":880,"title":{"69":{"position":[[19,7]]},"79":{"position":[[11,7]]},"346":{"position":[[15,7]]},"578":{"position":[[19,7]]},"820":{"position":[[15,7]]}},"content":{"67":{"position":[[235,8]]},"79":{"position":[[2144,7]]},"83":{"position":[[261,7]]},"90":{"position":[[2619,9]]},"186":{"position":[[222,11]]},"197":{"position":[[492,11]]},"199":{"position":[[41,9],[245,9]]},"200":{"position":[[45,7],[130,7],[238,8],[317,7],[345,7]]},"201":{"position":[[93,9],[156,7],[164,9],[310,7]]},"206":{"position":[[195,7],[233,10]]},"208":{"position":[[277,8],[408,8],[502,7],[712,9],[874,9]]},"211":{"position":[[84,9],[163,9],[385,9],[429,10],[526,8],[589,7],[836,7],[1327,8],[1386,7]]},"250":{"position":[[23,8]]},"404":{"position":[[189,7]]},"406":{"position":[[90,7]]},"484":{"position":[[303,7],[1050,7]]},"491":{"position":[[195,7],[367,7],[428,8],[596,7]]},"576":{"position":[[235,8]]},"590":{"position":[[261,7]]},"604":{"position":[[2619,9]]},"692":{"position":[[492,11]]},"694":{"position":[[41,9],[245,9]]},"695":{"position":[[45,7],[130,7],[238,8],[317,7],[345,7]]},"696":{"position":[[93,9],[156,7],[164,9],[310,7]]},"701":{"position":[[195,7],[233,10]]},"703":{"position":[[277,8],[408,8],[502,7],[712,9],[874,9]]},"706":{"position":[[84,9],[163,9],[385,9],[429,10],[526,8],[589,7],[836,7],[1327,8],[1386,7]]},"714":{"position":[[222,11]]},"791":{"position":[[13084,10],[13139,10],[17377,10],[17431,10],[28633,10],[28688,10],[32231,10],[32285,10]]},"893":{"position":[[189,7]]},"895":{"position":[[90,7]]},"947":{"position":[[303,7],[1050,7]]}},"keywords":{}}],["process.aft",{"_index":2327,"title":{},"content":{"279":{"position":[[301,13]]}},"keywords":{}}],["process.it",{"_index":2358,"title":{},"content":{"284":{"position":[[352,10]]}},"keywords":{}}],["processg",{"_index":785,"title":{},"content":{"54":{"position":[[1888,11]]}},"keywords":{}}],["procmail",{"_index":3446,"title":{},"content":{"791":{"position":[[2617,8],[18459,8]]}},"keywords":{}}],["produc",{"_index":570,"title":{},"content":{"53":{"position":[[3253,7]]},"104":{"position":[[173,8]]},"618":{"position":[[174,8]]},"979":{"position":[[527,8]]}},"keywords":{}}],["product",{"_index":370,"title":{},"content":{"33":{"position":[[186,13]]},"53":{"position":[[3599,7],[4022,8],[4292,8],[9154,7],[9209,8],[9413,7],[10858,7]]},"92":{"position":[[180,10],[863,11]]},"99":{"position":[[362,11]]},"255":{"position":[[375,10]]},"606":{"position":[[180,10],[863,11]]},"613":{"position":[[362,11]]}},"keywords":{}}],["profil",{"_index":1370,"title":{"103":{"position":[[12,8]]},"617":{"position":[[12,8]]}},"content":{"103":{"position":[[12,8],[451,8]]},"112":{"position":[[12,8],[1140,8]]},"121":{"position":[[311,7]]},"139":{"position":[[1515,7]]},"265":{"position":[[654,10],[665,9],[972,10],[983,11]]},"502":{"position":[[1009,8]]},"596":{"position":[[12,8],[1140,8]]},"617":{"position":[[12,8],[451,8]]},"628":{"position":[[311,7]]},"639":{"position":[[1522,7]]},"934":{"position":[[420,8]]}},"keywords":{}}],["profiles.data",{"_index":1404,"title":{},"content":{"107":{"position":[[187,13]]},"621":{"position":[[187,13]]}},"keywords":{}}],["program",{"_index":1330,"title":{},"content":{"102":{"position":[[1097,8]]},"201":{"position":[[192,8]]},"203":{"position":[[263,8]]},"482":{"position":[[197,7]]},"616":{"position":[[1102,8]]},"696":{"position":[[192,8]]},"698":{"position":[[263,8]]},"945":{"position":[[197,7]]}},"keywords":{}}],["progress",{"_index":1530,"title":{},"content":{"118":{"position":[[665,8],[722,9]]},"153":{"position":[[120,11],[221,9]]},"625":{"position":[[666,8],[723,9]]},"653":{"position":[[120,11],[221,9]]}},"keywords":{}}],["project",{"_index":459,"title":{"61":{"position":[[38,7]]},"292":{"position":[[0,7]]},"294":{"position":[[13,7]]},"502":{"position":[[0,7]]},"522":{"position":[[0,7]]},"570":{"position":[[38,7]]},"759":{"position":[[0,7]]},"761":{"position":[[13,7]]}},"content":{"53":{"position":[[66,7],[133,8],[222,7],[506,8],[670,7],[713,8],[766,8],[909,8],[1011,7],[1198,8],[1524,8],[1598,7],[2170,7],[2692,8],[2976,7],[3621,7],[3654,7],[3816,7],[4055,8],[4409,7],[4634,7],[5020,8],[5146,8],[5503,8],[5846,7],[5887,7],[7025,7],[8682,8],[8840,7],[9299,8],[9587,8],[9607,7],[9809,7]]},"54":{"position":[[187,8],[459,8],[531,8],[1195,7],[2358,8],[2739,7],[2891,8]]},"61":{"position":[[263,8]]},"77":{"position":[[72,8],[434,7]]},"79":{"position":[[435,7],[1912,7],[1934,7],[2012,9]]},"82":{"position":[[255,8]]},"86":{"position":[[53,7]]},"98":{"position":[[372,7]]},"114":{"position":[[379,8]]},"137":{"position":[[24,7],[62,7]]},"197":{"position":[[409,7]]},"258":{"position":[[137,8]]},"293":{"position":[[77,8]]},"302":{"position":[[220,8],[375,8]]},"305":{"position":[[294,7]]},"339":{"position":[[10,7]]},"438":{"position":[[71,7]]},"500":{"position":[[413,7],[533,8]]},"502":{"position":[[7,7],[29,8],[99,7],[148,7],[372,7],[417,7],[574,7],[717,8],[746,8],[827,7],[898,7],[967,7],[995,7],[1069,7],[1109,8],[1139,7],[1161,7],[1219,8],[1253,7],[1302,7],[1319,7],[1464,8],[1507,7],[1575,7],[1707,8],[1809,7],[1872,8],[1918,7],[1992,8],[2078,7],[2226,8],[2347,8],[2474,8],[2599,8],[2892,7],[2953,8],[2982,7],[3131,7],[3291,8],[3385,7],[3571,7],[3651,7],[3675,7],[3723,7],[3757,7]]},"522":{"position":[[2,7],[33,8],[46,7],[67,7],[139,44],[197,7],[290,7],[559,8],[585,7],[1335,7]]},"570":{"position":[[263,8]]},"586":{"position":[[72,8],[434,7]]},"589":{"position":[[255,8]]},"593":{"position":[[53,7]]},"598":{"position":[[379,8]]},"612":{"position":[[372,7]]},"665":{"position":[[24,7],[62,7]]},"692":{"position":[[409,7]]},"756":{"position":[[294,7]]},"760":{"position":[[77,8]]},"770":{"position":[[220,8],[375,8]]},"813":{"position":[[10,7]]},"922":{"position":[[71,7]]},"934":{"position":[[109,7]]},"963":{"position":[[252,7]]}},"keywords":{}}],["project'",{"_index":3238,"title":{},"content":{"502":{"position":[[2130,9],[2244,9],[2374,9],[2492,9],[2629,9],[2724,9],[2750,9],[2852,9],[3334,9]]}},"keywords":{}}],["project.commit",{"_index":1052,"title":{},"content":{"86":{"position":[[246,15]]},"593":{"position":[[246,15]]}},"keywords":{}}],["project.committ",{"_index":964,"title":{},"content":{"77":{"position":[[162,18]]},"586":{"position":[[162,18]]}},"keywords":{}}],["project.egg.infoin",{"_index":2971,"title":{},"content":{"441":{"position":[[285,18]]},"925":{"position":[[285,18]]}},"keywords":{}}],["project.resolv",{"_index":604,"title":{},"content":{"53":{"position":[[4247,17]]}},"keywords":{}}],["project.team",{"_index":3236,"title":{},"content":{"502":{"position":[[1681,13]]}},"keywords":{}}],["project/notebook",{"_index":1808,"title":{},"content":{"160":{"position":[[166,17]]},"667":{"position":[[166,17]]}},"keywords":{}}],["project/notebook(content)/models/metrics/dataset",{"_index":1818,"title":{},"content":{"160":{"position":[[1223,48]]},"667":{"position":[[1224,48]]}},"keywords":{}}],["project=0.8.4=py_0",{"_index":1500,"title":{},"content":{"115":{"position":[[733,18]]},"599":{"position":[[733,18]]}},"keywords":{}}],["projectnam",{"_index":2955,"title":{},"content":{"439":{"position":[[962,13]]}},"keywords":{}}],["projectnomin",{"_index":606,"title":{},"content":{"53":{"position":[[4308,17]]}},"keywords":{}}],["project’",{"_index":527,"title":{},"content":{"53":{"position":[[1728,9],[1773,9],[4134,9],[9199,9]]}},"keywords":{}}],["prometheu",{"_index":1638,"title":{},"content":{"135":{"position":[[369,11]]},"663":{"position":[[369,11]]}},"keywords":{}}],["promot",{"_index":805,"title":{},"content":{"54":{"position":[[2849,8]]}},"keywords":{}}],["promptli",{"_index":1034,"title":{},"content":{"82":{"position":[[513,9]]},"589":{"position":[[513,9]]}},"keywords":{}}],["proof",{"_index":1190,"title":{"92":{"position":[[146,5]]},"606":{"position":[[146,5]]}},"content":{"92":{"position":[[985,5]]},"114":{"position":[[118,5]]},"156":{"position":[[127,5]]},"598":{"position":[[118,5]]},"606":{"position":[[985,5]]},"656":{"position":[[127,5]]}},"keywords":{}}],["prop",{"_index":1482,"title":{},"content":{"114":{"position":[[484,6]]},"129":{"position":[[296,6]]},"219":{"position":[[305,6]]},"332":{"position":[[74,6]]},"598":{"position":[[484,6]]},"636":{"position":[[296,6]]},"733":{"position":[[305,6]]},"802":{"position":[[74,6]]}},"keywords":{}}],["properli",{"_index":1252,"title":{},"content":{"94":{"position":[[616,9]]},"114":{"position":[[662,9]]},"140":{"position":[[731,8]]},"211":{"position":[[106,9]]},"598":{"position":[[662,9]]},"608":{"position":[[616,9]]},"640":{"position":[[731,8]]},"706":{"position":[[106,9]]},"965":{"position":[[37,8]]}},"keywords":{}}],["properti",{"_index":1779,"title":{},"content":{"157":{"position":[[90,11]]},"265":{"position":[[699,12],[958,13]]},"492":{"position":[[355,8]]},"657":{"position":[[90,11]]},"939":{"position":[[188,10],[318,11],[330,10],[429,11],[441,10],[558,11],[570,10],[656,11],[668,10],[799,11],[964,10],[1034,11],[1046,10],[1121,11],[1133,10],[1236,11],[1248,10],[1360,11],[1372,10],[1462,11],[1474,10],[1560,11]]},"965":{"position":[[1476,11],[1722,11],[10893,11],[11139,11]]},"969":{"position":[[631,10]]}},"keywords":{}}],["propos",{"_index":657,"title":{"162":{"position":[[0,8]]},"178":{"position":[[0,8]]},"196":{"position":[[18,9]]},"669":{"position":[[0,8]]},"685":{"position":[[0,8]]},"691":{"position":[[18,9]]}},"content":{"53":{"position":[[6625,8],[9696,8],[9792,8],[9893,8]]},"79":{"position":[[518,8]]},"82":{"position":[[429,8]]},"162":{"position":[[799,7]]},"178":{"position":[[53,7]]},"589":{"position":[[429,8]]},"669":{"position":[[1052,7]]},"685":{"position":[[53,7]]}},"keywords":{}}],["protect",{"_index":1568,"title":{},"content":{"130":{"position":[[238,7]]},"637":{"position":[[238,7]]}},"keywords":{}}],["protocol",{"_index":3197,"title":{},"content":{"495":{"position":[[591,9],[704,9]]}},"keywords":{}}],["provid",{"_index":502,"title":{},"content":{"53":{"position":[[1210,9],[2865,8]]},"90":{"position":[[2592,10]]},"105":{"position":[[14,8]]},"110":{"position":[[1367,8]]},"129":{"position":[[437,7]]},"152":{"position":[[824,7],[1021,8],[1342,9]]},"157":{"position":[[213,8]]},"162":{"position":[[1008,8]]},"177":{"position":[[438,7]]},"184":{"position":[[443,7]]},"186":{"position":[[130,7],[452,7],[817,7]]},"190":{"position":[[157,7]]},"197":{"position":[[125,8],[279,7],[423,7]]},"200":{"position":[[372,7]]},"203":{"position":[[379,7]]},"205":{"position":[[104,7]]},"219":{"position":[[10,8]]},"295":{"position":[[0,7]]},"299":{"position":[[0,7]]},"301":{"position":[[0,7]]},"302":{"position":[[72,8],[146,8]]},"303":{"position":[[42,8],[173,8]]},"332":{"position":[[31,8]]},"436":{"position":[[22,7]]},"502":{"position":[[2916,8]]},"604":{"position":[[2592,10]]},"619":{"position":[[14,8]]},"624":{"position":[[1372,8]]},"636":{"position":[[437,7]]},"652":{"position":[[830,7],[877,7],[1301,8],[1622,9]]},"657":{"position":[[213,8]]},"669":{"position":[[1261,8]]},"684":{"position":[[438,7]]},"692":{"position":[[125,8],[279,7],[423,7]]},"695":{"position":[[372,7]]},"698":{"position":[[379,7]]},"700":{"position":[[104,7]]},"712":{"position":[[443,7]]},"714":{"position":[[130,7],[452,7],[817,7]]},"718":{"position":[[162,7]]},"733":{"position":[[10,8]]},"762":{"position":[[0,7]]},"766":{"position":[[0,7]]},"767":{"position":[[0,7]]},"769":{"position":[[0,7]]},"770":{"position":[[72,8],[146,8]]},"771":{"position":[[42,8],[173,8]]},"778":{"position":[[3,8]]},"791":{"position":[[13455,7],[15159,7],[15427,7],[29004,7],[30708,7],[30976,7]]},"802":{"position":[[31,8]]},"907":{"position":[[27,8]]},"920":{"position":[[22,7]]},"939":{"position":[[1683,9]]},"951":{"position":[[3,8]]},"955":{"position":[[3,8]]},"960":{"position":[[111,8]]},"970":{"position":[[3,8]]},"979":{"position":[[341,8]]}},"keywords":{}}],["proxi",{"_index":2054,"title":{},"content":{"239":{"position":[[250,5]]},"314":{"position":[[110,5]]},"321":{"position":[[8,5]]},"440":{"position":[[182,6],[239,5]]},"743":{"position":[[234,5]]},"786":{"position":[[110,5]]},"798":{"position":[[8,5]]},"924":{"position":[[170,6],[227,5]]}},"keywords":{}}],["ps",{"_index":224,"title":{},"content":{"15":{"position":[[844,5]]},"18":{"position":[[841,5]]},"22":{"position":[[416,5],[1174,5]]},"23":{"position":[[387,5],[1292,5]]},"24":{"position":[[683,5]]},"25":{"position":[[716,5]]},"26":{"position":[[424,5],[1027,5]]},"27":{"position":[[719,5]]},"69":{"position":[[172,4]]},"140":{"position":[[1074,3]]},"178":{"position":[[458,3]]},"181":{"position":[[193,3]]},"366":{"position":[[382,5],[1290,6]]},"369":{"position":[[353,5],[1382,6]]},"371":{"position":[[882,6],[1863,6]]},"374":{"position":[[799,6]]},"377":{"position":[[383,5],[1321,6]]},"380":{"position":[[802,6]]},"382":{"position":[[243,2]]},"385":{"position":[[271,2]]},"410":{"position":[[812,5],[2679,6]]},"412":{"position":[[1681,6]]},"415":{"position":[[817,5],[2709,6]]},"418":{"position":[[1705,6]]},"421":{"position":[[980,6]]},"424":{"position":[[601,5]]},"544":{"position":[[844,5]]},"547":{"position":[[841,5]]},"551":{"position":[[416,5],[1174,5]]},"552":{"position":[[387,5],[1292,5]]},"553":{"position":[[683,5]]},"554":{"position":[[716,5]]},"555":{"position":[[424,5],[1027,5]]},"556":{"position":[[719,5]]},"578":{"position":[[172,4]]},"640":{"position":[[1074,3]]},"685":{"position":[[458,3]]},"688":{"position":[[193,3]]},"840":{"position":[[382,5],[1290,6]]},"843":{"position":[[353,5],[1382,6]]},"845":{"position":[[882,6],[1863,6]]},"848":{"position":[[799,6]]},"851":{"position":[[383,5],[1321,6]]},"854":{"position":[[802,6]]},"856":{"position":[[243,2]]},"859":{"position":[[271,2]]},"863":{"position":[[812,5],[2679,6]]},"865":{"position":[[1681,6]]},"868":{"position":[[817,5],[2709,6]]},"871":{"position":[[1705,6]]},"874":{"position":[[980,6]]},"898":{"position":[[601,5]]},"964":{"position":[[330,2],[417,5],[423,4],[817,2],[834,3],[941,3],[1016,2],[1025,2],[1452,5],[1458,4]]},"965":{"position":[[15976,3],[15992,3],[16000,2],[17205,2]]},"980":{"position":[[1528,2],[1695,2],[2162,2]]},"985":{"position":[[1388,2],[1555,2],[2022,2]]}},"keywords":{}}],["ps/chief",{"_index":2895,"title":{},"content":{"429":{"position":[[204,8]]},"903":{"position":[[204,8]]}},"keywords":{}}],["ps_docker_imag",{"_index":3024,"title":{},"content":{"479":{"position":[[276,15]]},"942":{"position":[[276,15]]}},"keywords":{}}],["ps_launch_cmd",{"_index":3034,"title":{},"content":{"479":{"position":[[516,13]]},"942":{"position":[[516,13]]},"980":{"position":[[652,13]]},"985":{"position":[[564,13]]},"990":{"position":[[584,13]]},"991":{"position":[[839,13]]}},"keywords":{}}],["ps_resourc",{"_index":3032,"title":{},"content":{"479":{"position":[[474,12]]},"942":{"position":[[474,12]]},"980":{"position":[[489,12]]},"985":{"position":[[456,12]]},"990":{"position":[[548,12]]},"991":{"position":[[803,12]]}},"keywords":{}}],["ps_spec",{"_index":2566,"title":{},"content":{"328":{"position":[[985,7]]},"809":{"position":[[1005,7]]}},"keywords":{}}],["ps_spec,'work",{"_index":2575,"title":{},"content":{"328":{"position":[[1252,17]]},"809":{"position":[[1272,17]]}},"keywords":{}}],["pseudo",{"_index":1690,"title":{},"content":{"145":{"position":[[158,6]]},"645":{"position":[[158,6]]}},"keywords":{}}],["pspark",{"_index":3795,"title":{},"content":{"934":{"position":[[442,6],[455,6],[468,6]]}},"keywords":{}}],["psrc",{"_index":3276,"title":{},"content":{"734":{"position":[[644,4]]}},"keywords":{}}],["pst",{"_index":2349,"title":{},"content":{"281":{"position":[[897,5]]}},"keywords":{}}],["pub",{"_index":2213,"title":{},"content":{"260":{"position":[[2608,3]]},"261":{"position":[[52,3]]}},"keywords":{}}],["public",{"_index":1392,"title":{"261":{"position":[[36,6]]},"263":{"position":[[17,6]]},"264":{"position":[[15,6]]},"278":{"position":[[14,6]]}},"content":{"106":{"position":[[128,6]]},"179":{"position":[[360,6],[455,6],[529,6]]},"184":{"position":[[573,6]]},"252":{"position":[[11,6],[160,6]]},"260":{"position":[[2566,6]]},"261":{"position":[[205,6]]},"263":{"position":[[224,6],[1070,6]]},"281":{"position":[[754,6]]},"502":{"position":[[1865,6],[2104,7],[2275,7],[2523,7],[2781,7]]},"522":{"position":[[785,53],[932,6],[1032,6],[1150,6],[1277,6]]},"620":{"position":[[128,6]]},"686":{"position":[[360,6],[455,6],[529,6]]},"712":{"position":[[578,6]]}},"keywords":{}}],["public/priv",{"_index":1608,"title":{},"content":{"133":{"position":[[738,14]]},"661":{"position":[[738,14]]}},"keywords":{}}],["publicli",{"_index":3235,"title":{},"content":{"502":{"position":[[1523,8]]}},"keywords":{}}],["publish",{"_index":575,"title":{"274":{"position":[[4,7]]}},"content":{"53":{"position":[[3321,7]]},"54":{"position":[[1653,7]]}},"keywords":{}}],["pull",{"_index":814,"title":{"67":{"position":[[16,4]]},"68":{"position":[[44,4]]},"576":{"position":[[16,4]]},"577":{"position":[[44,4]]}},"content":{"58":{"position":[[25,4]]},"64":{"position":[[110,4],[161,4]]},"66":{"position":[[129,4]]},"67":{"position":[[79,4],[109,4],[123,4],[146,4]]},"68":{"position":[[71,4]]},"69":{"position":[[44,4]]},"70":{"position":[[57,4],[161,4]]},"82":{"position":[[206,5],[532,4]]},"160":{"position":[[1517,4]]},"245":{"position":[[67,4]]},"267":{"position":[[0,4]]},"281":{"position":[[342,4]]},"310":{"position":[[284,6]]},"324":{"position":[[263,4],[319,4],[379,4],[449,4]]},"365":{"position":[[1177,7]]},"437":{"position":[[371,4]]},"567":{"position":[[25,4]]},"573":{"position":[[110,4],[161,4]]},"575":{"position":[[129,4]]},"576":{"position":[[79,4],[109,4],[123,4],[146,4]]},"577":{"position":[[71,4]]},"578":{"position":[[44,4]]},"579":{"position":[[57,4],[161,4]]},"589":{"position":[[206,5],[532,4]]},"667":{"position":[[1519,4]]},"748":{"position":[[67,4]]},"782":{"position":[[284,6]]},"839":{"position":[[1177,7]]},"921":{"position":[[371,4]]}},"keywords":{}}],["purpos",{"_index":1205,"title":{},"content":{"92":{"position":[[614,9]]},"102":{"position":[[150,8]]},"606":{"position":[[614,9]]},"616":{"position":[[150,8]]}},"keywords":{}}],["push",{"_index":830,"title":{"65":{"position":[[7,4]]},"574":{"position":[[7,4]]}},"content":{"60":{"position":[[322,4],[372,4],[527,6],[608,6]]},"65":{"position":[[4,4]]},"70":{"position":[[0,4]]},"90":{"position":[[111,4]]},"92":{"position":[[172,4],[806,4]]},"99":{"position":[[348,4]]},"134":{"position":[[814,4]]},"160":{"position":[[1399,4]]},"219":{"position":[[295,4]]},"242":{"position":[[283,4]]},"275":{"position":[[4,4]]},"290":{"position":[[22,7]]},"569":{"position":[[322,4],[372,4],[527,6],[608,6]]},"574":{"position":[[4,4]]},"579":{"position":[[0,4]]},"604":{"position":[[111,4]]},"606":{"position":[[172,4],[806,4]]},"613":{"position":[[348,4]]},"662":{"position":[[814,4]]},"667":{"position":[[1401,4]]},"733":{"position":[[295,4]]},"745":{"position":[[283,4]]},"753":{"position":[[22,7]]},"777":{"position":[[1585,4],[1651,4]]},"950":{"position":[[1610,4],[1676,4]]},"954":{"position":[[2008,4],[2074,4]]},"969":{"position":[[1645,4],[1711,4]]}},"keywords":{}}],["push/manag",{"_index":1477,"title":{},"content":{"114":{"position":[[140,11]]},"598":{"position":[[140,11]]}},"keywords":{}}],["put",{"_index":1864,"title":{},"content":{"181":{"position":[[135,6]]},"279":{"position":[[407,3]]},"342":{"position":[[3,3]]},"350":{"position":[[0,3]]},"365":{"position":[[0,3]]},"368":{"position":[[0,3]]},"490":{"position":[[132,3]]},"688":{"position":[[135,6]]},"816":{"position":[[3,3]]},"824":{"position":[[0,3]]},"839":{"position":[[0,3]]},"842":{"position":[[0,3]]}},"keywords":{}}],["putcommand",{"_index":1942,"title":{},"content":{"207":{"position":[[507,11]]},"702":{"position":[[507,11]]}},"keywords":{}}],["pwd}/cifar",{"_index":3924,"title":{},"content":{"963":{"position":[[462,12]]}},"keywords":{}}],["pyarrow==0.17.0",{"_index":173,"title":{},"content":{"9":{"position":[[479,18],[1066,18]]},"10":{"position":[[617,18]]},"11":{"position":[[639,18]]},"351":{"position":[[444,18]]},"538":{"position":[[479,18],[1066,18]]},"539":{"position":[[617,18]]},"540":{"position":[[639,18]]},"825":{"position":[[444,18]]}},"keywords":{}}],["pyarrow\\u003d\\u003d0.17.0",{"_index":2719,"title":{},"content":{"351":{"position":[[1098,28]]},"353":{"position":[[976,28]]},"356":{"position":[[664,28]]},"362":{"position":[[667,28]]},"825":{"position":[[1098,28]]},"827":{"position":[[976,28]]},"830":{"position":[[664,28]]},"836":{"position":[[667,28]]}},"keywords":{}}],["pyasn1",{"_index":3458,"title":{},"content":{"791":{"position":[[2813,6],[18655,6]]}},"keywords":{}}],["pypi",{"_index":2967,"title":{"441":{"position":[[18,4]]},"925":{"position":[[18,4]]}},"content":{"441":{"position":[[486,4]]},"925":{"position":[[486,4]]}},"keywords":{}}],["pypi.org",{"_index":2588,"title":{"332":{"position":[[17,8]]},"802":{"position":[[17,8]]}},"content":{},"keywords":{}}],["pyproject.tomlto",{"_index":2924,"title":{},"content":{"437":{"position":[[96,16]]},"921":{"position":[[96,16]]}},"keywords":{}}],["pysubmarin",{"_index":2501,"title":{"436":{"position":[[0,11]]},"920":{"position":[[0,11]]}},"content":{"324":{"position":[[499,11]]},"435":{"position":[[75,11],[583,11]]},"436":{"position":[[110,11],[313,11]]},"439":{"position":[[37,11]]},"919":{"position":[[75,11],[583,11]]},"920":{"position":[[110,11],[313,11]]},"923":{"position":[[37,11]]}},"keywords":{}}],["pyt",{"_index":2936,"title":{},"content":{"438":{"position":[[13,6],[175,6],[241,6]]},"922":{"position":[[13,6],[175,6],[241,6]]}},"keywords":{}}],["python",{"_index":214,"title":{"231":{"position":[[0,6]]},"329":{"position":[[10,6]]},"330":{"position":[[8,6]]},"343":{"position":[[11,6]]},"434":{"position":[[0,6]]},"439":{"position":[[9,6]]},"799":{"position":[[10,6]]},"800":{"position":[[8,6]]},"817":{"position":[[11,6]]},"918":{"position":[[0,6]]},"923":{"position":[[9,6]]},"979":{"position":[[11,6]]},"984":{"position":[[11,6]]},"989":{"position":[[11,6]]}},"content":{"15":{"position":[[588,7]]},"18":{"position":[[585,7]]},"22":{"position":[[189,7],[947,7]]},"23":{"position":[[189,7],[1094,7]]},"24":{"position":[[456,7],[1104,7]]},"25":{"position":[[489,7]]},"26":{"position":[[197,7],[800,7]]},"27":{"position":[[492,7]]},"94":{"position":[[317,7]]},"102":{"position":[[76,6]]},"112":{"position":[[977,7]]},"115":{"position":[[131,6]]},"117":{"position":[[1030,6]]},"129":{"position":[[121,6]]},"134":{"position":[[757,6]]},"139":{"position":[[664,7]]},"140":{"position":[[358,6],[1334,6]]},"147":{"position":[[402,7]]},"178":{"position":[[268,7]]},"200":{"position":[[207,6]]},"201":{"position":[[286,7]]},"231":{"position":[[0,6]]},"299":{"position":[[8,6]]},"328":{"position":[[50,6]]},"330":{"position":[[60,6],[102,6],[161,6],[190,6],[431,6]]},"332":{"position":[[40,6]]},"334":{"position":[[108,6]]},"366":{"position":[[155,7]]},"369":{"position":[[155,7]]},"377":{"position":[[156,7]]},"405":{"position":[[115,7]]},"410":{"position":[[556,7]]},"415":{"position":[[561,7]]},"424":{"position":[[374,7]]},"425":{"position":[[381,7]]},"433":{"position":[[8,7]]},"436":{"position":[[79,6]]},"437":{"position":[[22,6],[57,6]]},"439":{"position":[[888,6]]},"441":{"position":[[128,6],[325,6],[365,6],[404,6],[468,6],[491,6]]},"479":{"position":[[530,7],[801,7]]},"502":{"position":[[278,7]]},"544":{"position":[[588,7]]},"547":{"position":[[585,7]]},"551":{"position":[[189,7],[947,7]]},"552":{"position":[[189,7],[1094,7]]},"553":{"position":[[456,7],[1104,7]]},"554":{"position":[[489,7]]},"555":{"position":[[197,7],[800,7]]},"556":{"position":[[492,7]]},"596":{"position":[[977,7]]},"599":{"position":[[131,6]]},"601":{"position":[[1030,6]]},"608":{"position":[[317,7]]},"616":{"position":[[76,6]]},"636":{"position":[[121,6]]},"639":{"position":[[664,7]]},"640":{"position":[[358,6],[1334,6]]},"647":{"position":[[402,7]]},"662":{"position":[[757,6]]},"685":{"position":[[268,7]]},"695":{"position":[[207,6]]},"696":{"position":[[286,7]]},"766":{"position":[[8,6]]},"777":{"position":[[211,7]]},"800":{"position":[[60,6],[102,6],[161,6],[190,6],[431,6]]},"802":{"position":[[40,6]]},"804":{"position":[[108,6]]},"809":{"position":[[50,6]]},"840":{"position":[[155,7]]},"843":{"position":[[155,7]]},"851":{"position":[[156,7]]},"863":{"position":[[556,7]]},"868":{"position":[[561,7]]},"894":{"position":[[115,7]]},"898":{"position":[[374,7]]},"899":{"position":[[381,7]]},"920":{"position":[[79,6]]},"921":{"position":[[22,6],[57,6]]},"925":{"position":[[128,6],[325,6],[365,6],[404,6],[468,6],[491,6]]},"927":{"position":[[8,7]]},"942":{"position":[[530,7],[801,7]]},"950":{"position":[[187,7],[785,6]]},"954":{"position":[[191,7]]},"960":{"position":[[287,6]]},"961":{"position":[[70,6],[286,6],[596,6]]},"965":{"position":[[421,6],[9918,6],[16076,6]]},"969":{"position":[[197,7],[592,6],[601,6],[887,6],[1048,6]]},"978":{"position":[[18,6]]},"979":{"position":[[16,6],[78,6],[312,6],[350,6],[369,6]]},"981":{"position":[[567,6]]},"983":{"position":[[18,6]]},"984":{"position":[[16,6],[75,6],[280,6]]},"986":{"position":[[432,6]]},"988":{"position":[[18,6]]},"989":{"position":[[16,6],[73,6],[278,6]]}},"keywords":{}}],["python/r",{"_index":1375,"title":{},"content":{"103":{"position":[[326,9]]},"112":{"position":[[449,9]]},"596":{"position":[[449,9]]},"617":{"position":[[326,9]]}},"keywords":{}}],["python/r/notebook",{"_index":1316,"title":{},"content":{"102":{"position":[[618,18]]},"616":{"position":[[623,18]]}},"keywords":{}}],["python/spark",{"_index":1896,"title":{},"content":{"197":{"position":[[310,12]]},"692":{"position":[[310,12]]}},"keywords":{}}],["python2",{"_index":3839,"title":{},"content":{"950":{"position":[[510,7]]}},"keywords":{}}],["python2.7",{"_index":3305,"title":{},"content":{"777":{"position":[[666,9]]}},"keywords":{}}],["python3",{"_index":2585,"title":{},"content":{"330":{"position":[[440,7]]},"777":{"position":[[678,7]]},"791":{"position":[[2307,7],[2323,7],[2345,7],[2362,7],[2374,7],[2746,7],[2765,7],[2789,7],[2805,7],[3199,7],[3215,7],[3237,7],[3254,7],[3266,7],[6367,7],[6470,7],[6566,7],[6667,7],[6787,7],[12115,7],[12158,11],[12215,7],[12292,7],[12329,11],[12379,7],[12449,7],[12482,11],[12529,7],[12596,7],[12633,11],[12699,7],[12785,7],[12823,11],[12883,7],[17109,7],[17157,7],[17198,7],[17236,7],[17293,7],[18149,7],[18165,7],[18187,7],[18204,7],[18216,7],[18588,7],[18607,7],[18631,7],[18647,7],[19023,7],[19039,7],[19061,7],[19078,7],[19090,7],[22085,7],[22188,7],[22284,7],[22385,7],[22505,7],[27664,7],[27707,11],[27764,7],[27841,7],[27878,11],[27928,7],[27998,7],[28031,11],[28078,7],[28145,7],[28182,11],[28248,7],[28334,7],[28372,11],[28432,7],[31963,7],[32011,7],[32052,7],[32090,7],[32147,7]]},"800":{"position":[[440,7]]},"950":{"position":[[612,7],[620,7],[632,7],[912,7]]}},"keywords":{}}],["python3.7",{"_index":2578,"title":{},"content":{"330":{"position":[[23,11]]},"800":{"position":[[23,11]]}},"keywords":{}}],["python=$python_v",{"_index":3874,"title":{},"content":{"954":{"position":[[880,22]]}},"keywords":{}}],["python=3.3",{"_index":1462,"title":{},"content":{"112":{"position":[[1782,10]]},"596":{"position":[[1782,10]]}},"keywords":{}}],["python=3.6",{"_index":2908,"title":{},"content":{"435":{"position":[[175,10]]},"919":{"position":[[175,10]]}},"keywords":{}}],["python=3.7",{"_index":1449,"title":{},"content":{"112":{"position":[[561,10],[1429,10]]},"596":{"position":[[561,10],[1429,10]]}},"keywords":{}}],["python_version=3.6",{"_index":3865,"title":{},"content":{"954":{"position":[[441,18]]}},"keywords":{}}],["pythonunbuffered=\"0",{"_index":3373,"title":{},"content":{"791":{"position":[[608,20]]}},"keywords":{}}],["pytorch",{"_index":67,"title":{"953":{"position":[[18,7]]},"954":{"position":[[35,7]]},"955":{"position":[[31,7]]},"982":{"position":[[7,7]]},"984":{"position":[[43,7]]}},"content":{"4":{"position":[[209,7]]},"24":{"position":[[1027,8],[1086,10]]},"28":{"position":[[403,8],[470,8]]},"29":{"position":[[316,8],[381,7],[1493,8],[1558,7]]},"92":{"position":[[470,8]]},"110":{"position":[[804,8],[1339,8]]},"177":{"position":[[121,7]]},"178":{"position":[[31,7]]},"179":{"position":[[196,9]]},"340":{"position":[[189,7]]},"429":{"position":[[216,7]]},"464":{"position":[[209,7]]},"474":{"position":[[89,7]]},"502":{"position":[[312,8]]},"522":{"position":[[131,7]]},"553":{"position":[[1027,8],[1086,10]]},"557":{"position":[[403,8],[470,8]]},"558":{"position":[[316,8],[381,7],[1493,8],[1558,7]]},"606":{"position":[[470,8]]},"624":{"position":[[809,8],[1344,8]]},"684":{"position":[[121,7]]},"685":{"position":[[31,7]]},"686":{"position":[[196,9]]},"814":{"position":[[193,7]]},"903":{"position":[[216,7]]},"940":{"position":[[92,7]]},"954":{"position":[[18,7],[72,7],[137,7],[258,7],[381,8],[1000,7],[1261,7]]},"955":{"position":[[63,7],[97,7],[176,7],[317,7]]},"957":{"position":[[130,7],[205,8]]},"983":{"position":[[50,7]]},"984":{"position":[[52,7]]},"985":{"position":[[95,7],[345,7],[375,7]]},"986":{"position":[[242,7],[272,7],[295,7]]}},"keywords":{}}],["pytorch==0.4.0",{"_index":4318,"title":{},"content":{"984":{"position":[[356,14]]}},"keywords":{}}],["pytorchjob",{"_index":1860,"title":{},"content":{"180":{"position":[[447,10]]},"687":{"position":[[500,10]]}},"keywords":{}}],["pyyaml",{"_index":3875,"title":{},"content":{"954":{"position":[[909,6]]}},"keywords":{}}],["q",{"_index":3126,"title":{},"content":{"484":{"position":[[931,1]]},"788":{"position":[[735,1]]},"947":{"position":[[931,1]]}},"keywords":{}}],["q5ztd",{"_index":3736,"title":{},"content":{"814":{"position":[[221,5]]}},"keywords":{}}],["qggtm",{"_index":2612,"title":{},"content":{"340":{"position":[[271,5]]}},"keywords":{}}],["qmon",{"_index":3430,"title":{},"content":{"791":{"position":[[2467,4],[18309,4]]}},"keywords":{}}],["qualifi",{"_index":941,"title":{},"content":{"74":{"position":[[562,9]]},"583":{"position":[[562,9]]}},"keywords":{}}],["qualiti",{"_index":932,"title":{},"content":{"74":{"position":[[268,8]]},"139":{"position":[[2105,8]]},"583":{"position":[[268,8]]},"639":{"position":[[2118,8]]}},"keywords":{}}],["quantit",{"_index":4166,"title":{},"content":{"966":{"position":[[166,12]]}},"keywords":{}}],["quarterli",{"_index":617,"title":{},"content":{"53":{"position":[[5099,9]]}},"keywords":{}}],["queri",{"_index":1311,"title":{},"content":{"102":{"position":[[111,6]]},"262":{"position":[[223,5]]},"340":{"position":[[15,5]]},"391":{"position":[[40,5]]},"616":{"position":[[111,6]]},"814":{"position":[[15,5]]},"880":{"position":[[40,5]]}},"keywords":{}}],["question",{"_index":728,"title":{},"content":{"53":{"position":[[10315,8],[10549,9]]},"54":{"position":[[971,10],[1544,9]]},"79":{"position":[[958,8]]},"82":{"position":[[460,9]]},"86":{"position":[[133,10]]},"90":{"position":[[2892,9]]},"589":{"position":[[460,9]]},"593":{"position":[[133,10]]},"604":{"position":[[2892,9]]}},"keywords":{}}],["queu",{"_index":1967,"title":{},"content":{"210":{"position":[[254,6]]},"687":{"position":[[379,5]]},"705":{"position":[[254,6]]},"788":{"position":[[682,5]]}},"keywords":{}}],["quick",{"_index":1989,"title":{"218":{"position":[[0,5]]},"732":{"position":[[0,5]]},"937":{"position":[[0,5]]},"974":{"position":[[13,5]]}},"content":{"500":{"position":[[131,5]]},"520":{"position":[[66,5]]}},"keywords":{}}],["quickli",{"_index":3214,"title":{},"content":{"500":{"position":[[240,8],[344,8]]},"502":{"position":[[3261,8]]}},"keywords":{}}],["quickstart",{"_index":2600,"title":{"336":{"position":[[0,10]]},"810":{"position":[[0,10]]}},"content":{"346":{"position":[[132,10]]},"791":{"position":[[1831,10]]},"963":{"position":[[281,10]]}},"keywords":{}}],["quota",{"_index":1065,"title":{"107":{"position":[[46,5]]},"621":{"position":[[46,5]]}},"content":{"89":{"position":[[78,6],[255,7]]},"107":{"position":[[798,7],[922,6],[1240,5],[1296,6]]},"122":{"position":[[93,5]]},"603":{"position":[[78,6],[255,7]]},"621":{"position":[[799,7],[925,6],[1243,5],[1299,6]]},"629":{"position":[[93,5]]}},"keywords":{}}],["r",{"_index":1241,"title":{},"content":{"94":{"position":[[325,2]]},"433":{"position":[[23,1]]},"435":{"position":[[282,1],[389,1],[505,1]]},"441":{"position":[[186,1]]},"481":{"position":[[1863,1],[1905,1],[2022,1],[2060,1]]},"502":{"position":[[286,2]]},"608":{"position":[[325,2]]},"744":{"position":[[693,1]]},"788":{"position":[[571,1]]},"791":{"position":[[1292,1]]},"919":{"position":[[323,1],[438,1],[548,1]]},"925":{"position":[[186,1]]},"927":{"position":[[23,1]]},"944":{"position":[[1863,1],[1905,1],[2022,1],[2060,1]]},"960":{"position":[[452,1]]},"963":{"position":[[460,1]]},"979":{"position":[[469,1]]},"984":{"position":[[376,1]]},"989":{"position":[[372,1]]}},"keywords":{}}],["r8zq",{"_index":3738,"title":{},"content":{"814":{"position":[[277,5]]}},"keywords":{}}],["raft",{"_index":1533,"title":{"212":{"position":[[7,4]]},"707":{"position":[[7,4]]}},"content":{"118":{"position":[[866,5]]},"152":{"position":[[1245,4]]},"199":{"position":[[90,4],[208,4]]},"202":{"position":[[61,4]]},"203":{"position":[[12,4],[107,4]]},"206":{"position":[[159,4]]},"207":{"position":[[42,4],[372,4]]},"208":{"position":[[42,4],[610,4]]},"212":{"position":[[220,4],[260,4]]},"625":{"position":[[867,5]]},"652":{"position":[[1525,4]]},"694":{"position":[[90,4],[208,4]]},"697":{"position":[[61,4]]},"698":{"position":[[12,4],[107,4]]},"701":{"position":[[159,4]]},"702":{"position":[[42,4],[372,4]]},"703":{"position":[[42,4],[610,4]]},"707":{"position":[[220,4],[260,4]]}},"keywords":{}}],["raftclient",{"_index":1947,"title":{},"content":{"208":{"position":[[586,10]]},"703":{"position":[[586,10]]}},"keywords":{}}],["raftserv",{"_index":1940,"title":{},"content":{"207":{"position":[[348,10]]},"208":{"position":[[648,11]]},"702":{"position":[[348,10]]},"703":{"position":[[648,11]]}},"keywords":{}}],["random",{"_index":2195,"title":{},"content":{"260":{"position":[[1516,6],[1679,6],[1772,6],[1935,6]]},"401":{"position":[[80,6]]},"890":{"position":[[80,6]]}},"keywords":{}}],["random.random",{"_index":2826,"title":{},"content":{"401":{"position":[[227,16],[309,15],[365,16]]},"890":{"position":[[227,16],[309,15],[365,16]]}},"keywords":{}}],["randomli",{"_index":2221,"title":{},"content":{"261":{"position":[[329,8]]}},"keywords":{}}],["rang",{"_index":1410,"title":{},"content":{"107":{"position":[[468,7]]},"108":{"position":[[212,6]]},"621":{"position":[[469,7]]},"622":{"position":[[212,6]]},"767":{"position":[[53,6]]},"934":{"position":[[308,6],[382,6],[479,7]]},"937":{"position":[[49,7]]},"939":{"position":[[20,7],[35,6],[151,6],[396,6],[513,6],[840,6]]}},"keywords":{}}],["range(100",{"_index":2827,"title":{},"content":{"401":{"position":[[253,11]]},"890":{"position":[[253,11]]}},"keywords":{}}],["rapid",{"_index":1871,"title":{},"content":{"184":{"position":[[187,5]]},"712":{"position":[[187,5]]}},"keywords":{}}],["rat",{"_index":1999,"title":{},"content":{"220":{"position":[[32,3]]},"267":{"position":[[202,3],[280,3]]},"268":{"position":[[144,3]]},"734":{"position":[[63,3]]},"965":{"position":[[340,4]]}},"keywords":{}}],["rat:check",{"_index":2280,"title":{},"content":{"267":{"position":[[303,9]]}},"keywords":{}}],["ratifi",{"_index":629,"title":{},"content":{"53":{"position":[[5435,8]]}},"keywords":{}}],["raw",{"_index":1148,"title":{"92":{"position":[[36,3]]},"606":{"position":[[36,3]]}},"content":{"90":{"position":[[2463,3]]},"92":{"position":[[30,3]]},"604":{"position":[[2463,3]]},"606":{"position":[[30,3]]}},"keywords":{}}],["rbac",{"_index":2474,"title":{"319":{"position":[[7,4]]},"796":{"position":[[7,4]]}},"content":{},"keywords":{}}],["rc",{"_index":2232,"title":{},"content":{"263":{"position":[[276,2]]},"281":{"position":[[406,2],[523,2]]}},"keywords":{}}],["rc.d",{"_index":3686,"title":{},"content":{"791":{"position":[[14964,5],[15014,5],[15027,4],[15513,5],[15563,5],[15576,4],[16208,5],[16258,5],[16271,4],[17003,5],[17053,5],[17066,4],[30513,5],[30563,5],[30576,4],[31062,5],[31112,5],[31125,4],[31857,5],[31907,5],[31920,4]]}},"keywords":{}}],["rc_version",{"_index":2077,"title":{},"content":{"249":{"position":[[75,14]]},"268":{"position":[[218,13]]},"269":{"position":[[145,13]]},"270":{"position":[[98,13],[483,14]]},"274":{"position":[[44,13]]},"275":{"position":[[35,13]]},"278":{"position":[[52,13],[235,14],[308,13],[421,14]]},"281":{"position":[[59,13],[189,15],[388,13],[505,13],[624,13],[1252,13]]}},"keywords":{}}],["rc_version}/*tar.gz",{"_index":2317,"title":{},"content":{"278":{"position":[[193,22]]}},"keywords":{}}],["rc_version}/apach",{"_index":2295,"title":{},"content":{"269":{"position":[[238,20]]}},"keywords":{}}],["rdnssd",{"_index":3432,"title":{},"content":{"791":{"position":[[2476,6],[18318,6]]}},"keywords":{}}],["re",{"_index":2237,"title":{},"content":{"263":{"position":[[508,2]]},"277":{"position":[[123,2]]}},"keywords":{}}],["reach",{"_index":1013,"title":{},"content":{"81":{"position":[[8,5]]},"440":{"position":[[140,5]]},"588":{"position":[[8,5]]},"924":{"position":[[140,5]]}},"keywords":{}}],["read",{"_index":809,"title":{},"content":{"56":{"position":[[128,4]]},"73":{"position":[[39,4]]},"118":{"position":[[59,4]]},"132":{"position":[[1856,4]]},"207":{"position":[[104,4]]},"208":{"position":[[200,4]]},"291":{"position":[[17,4]]},"484":{"position":[[753,4]]},"565":{"position":[[128,4]]},"582":{"position":[[39,4]]},"625":{"position":[[59,4]]},"660":{"position":[[1856,4]]},"702":{"position":[[104,4]]},"703":{"position":[[200,4]]},"754":{"position":[[17,4]]},"791":{"position":[[1909,7],[1962,7],[7023,8],[7045,8],[7070,8],[7096,8],[7122,8],[7148,8],[7174,8],[7200,8],[7226,8],[7252,8],[7278,8],[7304,8],[7330,8],[7356,8],[7382,8],[7408,8],[7434,8],[7460,8],[7486,8],[7512,8],[7538,8],[7565,8],[17486,7],[17539,7],[17751,7],[17804,7],[22741,8],[22763,8],[22788,8],[22814,8],[22840,8],[22866,8],[22892,8],[22918,8],[22944,8],[22970,8],[22996,8],[23022,8],[23048,8],[23074,8],[23100,8],[23126,8],[23152,8],[23178,8],[23204,8],[23230,8],[23256,8],[23283,8],[32340,7],[32393,7]]},"947":{"position":[[753,4]]}},"keywords":{}}],["read/write/upd",{"_index":3945,"title":{},"content":{"964":{"position":[[894,17]]}},"keywords":{}}],["readi",{"_index":56,"title":{"340":{"position":[[20,5]]},"814":{"position":[[20,5]]}},"content":{"4":{"position":[[118,5]]},"53":{"position":[[9221,6]]},"69":{"position":[[559,6]]},"281":{"position":[[76,5]]},"340":{"position":[[97,5]]},"464":{"position":[[118,5]]},"578":{"position":[[559,6]]},"814":{"position":[[99,5]]},"965":{"position":[[66,5]]}},"keywords":{}}],["readm",{"_index":2062,"title":{"497":{"position":[[0,6]]},"959":{"position":[[0,6]]}},"content":{"241":{"position":[[34,6]]},"296":{"position":[[68,6]]},"744":{"position":[[1789,6]]},"763":{"position":[[68,6]]},"963":{"position":[[615,8]]}},"keywords":{}}],["readme.zh",{"_index":3245,"title":{"517":{"position":[[0,9]]}},"content":{},"keywords":{}}],["real",{"_index":1236,"title":{},"content":{"94":{"position":[[129,4]]},"239":{"position":[[418,4]]},"260":{"position":[[1201,4]]},"608":{"position":[[129,4]]},"743":{"position":[[402,4]]}},"keywords":{}}],["realli",{"_index":2116,"title":{},"content":{"252":{"position":[[1291,6]]}},"keywords":{}}],["reason",{"_index":415,"title":{},"content":{"39":{"position":[[389,9]]},"41":{"position":[[404,9]]},"53":{"position":[[8175,6],[8197,7]]},"114":{"position":[[186,6]]},"211":{"position":[[1103,10]]},"279":{"position":[[607,6]]},"561":{"position":[[389,9]]},"563":{"position":[[404,9]]},"598":{"position":[[186,6]]},"706":{"position":[[1103,10]]}},"keywords":{}}],["reason\":\"containercr",{"_index":2817,"title":{},"content":{"392":{"position":[[373,29]]},"395":{"position":[[361,29]]},"881":{"position":[[373,29]]},"884":{"position":[[361,29]]}},"keywords":{}}],["reason\":\"th",{"_index":396,"title":{},"content":{"38":{"position":[[647,13]]},"40":{"position":[[381,13]]},"389":{"position":[[610,13]]},"398":{"position":[[372,13]]},"560":{"position":[[647,13]]},"562":{"position":[[381,13]]},"878":{"position":[[610,13]]},"887":{"position":[[372,13]]}},"keywords":{}}],["rebas",{"_index":853,"title":{},"content":{"62":{"position":[[92,6]]},"64":{"position":[[60,6]]},"571":{"position":[[92,6]]},"573":{"position":[[60,6]]}},"keywords":{}}],["reboot",{"_index":3049,"title":{"481":{"position":[[48,6]]},"944":{"position":[[48,6]]}},"content":{},"keywords":{}}],["rebuild",{"_index":1991,"title":{},"content":{"219":{"position":[[139,7]]},"733":{"position":[[139,7]]}},"keywords":{}}],["receiv",{"_index":1734,"title":{},"content":{"150":{"position":[[23,8]]},"211":{"position":[[759,7]]},"498":{"position":[[315,9]]},"650":{"position":[[23,8]]},"706":{"position":[[759,7]]}},"keywords":{}}],["recent",{"_index":764,"title":{},"content":{"54":{"position":[[1226,7]]},"211":{"position":[[1058,6]]},"284":{"position":[[190,8]]},"500":{"position":[[261,6],[318,9]]},"520":{"position":[[129,6]]},"706":{"position":[[1058,6]]}},"keywords":{}}],["recently.click",{"_index":2326,"title":{},"content":{"279":{"position":[[209,14]]}},"keywords":{}}],["recipient_delimit",{"_index":3676,"title":{},"content":{"791":{"position":[[14498,20],[30047,20]]}},"keywords":{}}],["recogn",{"_index":751,"title":{},"content":{"54":{"position":[[491,10]]}},"keywords":{}}],["recognit",{"_index":801,"title":{},"content":{"54":{"position":[[2493,11]]}},"keywords":{}}],["recomm",{"_index":622,"title":{"332":{"position":[[26,13]]},"802":{"position":[[26,13]]}},"content":{"53":{"position":[[5284,9]]},"76":{"position":[[142,11]]},"129":{"position":[[271,9]]},"134":{"position":[[127,13],[153,11],[418,9],[592,9]]},"316":{"position":[[3,9]]},"326":{"position":[[3,9]]},"435":{"position":[[54,9]]},"495":{"position":[[3,9]]},"585":{"position":[[142,11]]},"636":{"position":[[271,9]]},"662":{"position":[[127,13],[153,11],[418,9],[592,9]]},"777":{"position":[[522,10]]},"793":{"position":[[3,9]]},"807":{"position":[[3,9]]},"919":{"position":[[54,9]]},"954":{"position":[[514,10]]},"969":{"position":[[495,10]]}},"keywords":{}}],["reconsid",{"_index":1284,"title":{},"content":{"98":{"position":[[493,13]]},"612":{"position":[[493,13]]}},"keywords":{}}],["record",{"_index":1038,"title":{},"content":{"83":{"position":[[81,6]]},"153":{"position":[[49,7]]},"346":{"position":[[52,6]]},"471":{"position":[[201,6]]},"590":{"position":[[81,6]]},"653":{"position":[[49,7]]},"820":{"position":[[54,6]]},"931":{"position":[[201,6]]}},"keywords":{}}],["recov",{"_index":1296,"title":{},"content":{"101":{"position":[[117,9]]},"615":{"position":[[117,9]]}},"keywords":{}}],["recreat",{"_index":1614,"title":{},"content":{"134":{"position":[[787,8]]},"662":{"position":[[787,8]]}},"keywords":{}}],["redirect",{"_index":2056,"title":{},"content":{"239":{"position":[[332,10]]},"743":{"position":[[316,10]]}},"keywords":{}}],["redistribut",{"_index":2093,"title":{},"content":{"252":{"position":[[385,12]]},"260":{"position":[[451,12]]}},"keywords":{}}],["reduc",{"_index":1132,"title":{"96":{"position":[[23,6]]},"610":{"position":[[23,6]]}},"content":{"90":{"position":[[1723,7]]},"96":{"position":[[278,7]]},"155":{"position":[[412,6]]},"212":{"position":[[12,6]]},"604":{"position":[[1723,7]]},"610":{"position":[[278,7]]},"655":{"position":[[419,6]]},"707":{"position":[[12,6]]}},"keywords":{}}],["ref",{"_index":268,"title":{},"content":{"23":{"position":[[650,5],[672,9]]},"53":{"position":[[647,5],[10204,8],[10440,8]]},"54":{"position":[[2084,5]]},"113":{"position":[[547,9]]},"116":{"position":[[489,5]]},"121":{"position":[[429,5]]},"127":{"position":[[125,5]]},"130":{"position":[[7,5]]},"140":{"position":[[70,9]]},"141":{"position":[[7,5]]},"142":{"position":[[114,5]]},"146":{"position":[[668,5]]},"149":{"position":[[8,5]]},"161":{"position":[[831,5]]},"257":{"position":[[250,5]]},"258":{"position":[[5,10]]},"259":{"position":[[36,5]]},"289":{"position":[[61,5],[551,5]]},"314":{"position":[[417,5],[629,5]]},"343":{"position":[[167,10]]},"369":{"position":[[616,5],[638,9]]},"495":{"position":[[206,5]]},"552":{"position":[[650,5],[672,9]]},"597":{"position":[[547,9]]},"600":{"position":[[489,5]]},"628":{"position":[[429,5]]},"634":{"position":[[125,5]]},"637":{"position":[[7,5]]},"640":{"position":[[70,9]]},"641":{"position":[[7,5]]},"642":{"position":[[114,5]]},"646":{"position":[[668,5]]},"649":{"position":[[8,5]]},"668":{"position":[[831,5]]},"752":{"position":[[61,5],[551,5]]},"786":{"position":[[417,5],[629,5]]},"789":{"position":[[0,5]]},"817":{"position":[[167,10]]},"843":{"position":[[616,5],[638,9]]},"936":{"position":[[7,5]]},"991":{"position":[[10,5]]}},"keywords":{}}],["referenc",{"_index":1506,"title":{},"content":{"116":{"position":[[286,10]]},"600":{"position":[[286,10]]}},"keywords":{}}],["reflect",{"_index":2072,"title":{},"content":{"246":{"position":[[94,9]]},"749":{"position":[[94,9]]}},"keywords":{}}],["refresh",{"_index":1984,"title":{},"content":{"215":{"position":[[12,9]]},"710":{"position":[[12,9]]}},"keywords":{}}],["refus",{"_index":1927,"title":{},"content":{"203":{"position":[[367,8]]},"698":{"position":[[367,8]]}},"keywords":{}}],["reg",{"_index":924,"title":{},"content":{"73":{"position":[[417,10]]},"582":{"position":[[417,10]]}},"keywords":{}}],["regard",{"_index":536,"title":{},"content":{"53":{"position":[[1933,9],[4282,9],[5832,9]]}},"keywords":{}}],["regardless",{"_index":989,"title":{},"content":{"79":{"position":[[534,10]]}},"keywords":{}}],["regist",{"_index":341,"title":{"31":{"position":[[28,10]]},"46":{"position":[[9,10]]},"47":{"position":[[5,10]]},"48":{"position":[[6,10]]},"49":{"position":[[8,10]]},"50":{"position":[[9,10]]},"51":{"position":[[9,10]]},"52":{"position":[[9,10]]},"498":{"position":[[0,8]]},"518":{"position":[[0,8]]}},"content":{"31":{"position":[[471,11],[834,11],[1197,11],[1561,11]]},"32":{"position":[[479,11]]},"33":{"position":[[110,11]]},"36":{"position":[[272,10]]},"46":{"position":[[326,10]]},"47":{"position":[[185,10],[700,11]]},"48":{"position":[[204,10]]},"49":{"position":[[310,10]]},"50":{"position":[[212,10]]},"51":{"position":[[250,10]]},"52":{"position":[[246,10]]},"158":{"position":[[419,10]]},"187":{"position":[[115,8]]},"260":{"position":[[121,10]]},"474":{"position":[[223,10]]},"498":{"position":[[228,8]]},"658":{"position":[[419,10]]},"715":{"position":[[115,8]]}},"keywords":{}}],["registered/updated/delet",{"_index":1805,"title":{},"content":{"158":{"position":[[2863,26]]},"658":{"position":[[2863,26]]}},"keywords":{}}],["registered_model_nam",{"_index":3002,"title":{"474":{"position":[[65,22]]}},"content":{},"keywords":{}}],["registered_model_name=non",{"_index":3784,"title":{"914":{"position":[[71,27]]}},"content":{},"keywords":{}}],["registr",{"_index":3210,"title":{},"content":{"498":{"position":[[156,12],[329,12]]}},"keywords":{}}],["registri",{"_index":1504,"title":{"167":{"position":[[6,8]]},"674":{"position":[[6,8]]}},"content":{"116":{"position":[[177,9]]},"132":{"position":[[1772,9]]},"133":{"position":[[799,9]]},"158":{"position":[[455,9]]},"160":{"position":[[337,8],[1457,8]]},"163":{"position":[[373,8]]},"175":{"position":[[52,8]]},"219":{"position":[[319,9]]},"474":{"position":[[249,8]]},"600":{"position":[[177,9]]},"658":{"position":[[455,9]]},"660":{"position":[[1772,9]]},"661":{"position":[[799,9]]},"667":{"position":[[337,8],[1459,8]]},"670":{"position":[[373,8]]},"682":{"position":[[52,8]]},"733":{"position":[[319,9]]},"777":{"position":[[1609,9]]},"914":{"position":[[20,9]]},"915":{"position":[[24,9]]},"917":{"position":[[24,9]]},"950":{"position":[[1634,9]]},"954":{"position":[[2032,9]]},"969":{"position":[[1669,9]]}},"keywords":{}}],["registry/data",{"_index":1823,"title":{},"content":{"160":{"position":[[1554,13]]},"667":{"position":[[1556,13]]}},"keywords":{}}],["registry_uri",{"_index":3754,"title":{},"content":{"908":{"position":[[256,13]]}},"keywords":{}}],["registry_uri=\"0.0.0.0:5000",{"_index":3756,"title":{},"content":{"908":{"position":[[399,28]]}},"keywords":{}}],["registry_uri=non",{"_index":3751,"title":{"908":{"position":[[32,18]]}},"content":{},"keywords":{}}],["registrydn",{"_index":3366,"title":{},"content":{"791":{"position":[[228,12]]}},"keywords":{}}],["registrydns/at",{"_index":4349,"title":{},"content":{"992":{"position":[[201,15]]}},"keywords":{}}],["registrydnsip",{"_index":3367,"title":{},"content":{"791":{"position":[[265,14]]}},"keywords":{}}],["regress",{"_index":1095,"title":{},"content":{"90":{"position":[[496,11]]},"604":{"position":[[496,11]]}},"keywords":{}}],["regular",{"_index":1503,"title":{},"content":{"116":{"position":[[162,7]]},"600":{"position":[[162,7]]}},"keywords":{}}],["reimplement",{"_index":2598,"title":{},"content":{"335":{"position":[[141,11]]},"805":{"position":[[141,11]]}},"keywords":{}}],["reinstat",{"_index":548,"title":{},"content":{"53":{"position":[[2233,13],[2283,13],[4694,13],[4725,13]]}},"keywords":{}}],["reject",{"_index":936,"title":{"75":{"position":[[0,6]]},"584":{"position":[[0,6]]}},"content":{"74":{"position":[[389,9]]},"75":{"position":[[18,8],[292,9]]},"583":{"position":[[389,9]]},"584":{"position":[[18,8],[292,9]]}},"keywords":{}}],["rel",{"_index":1030,"title":{},"content":{"82":{"position":[[373,10]]},"93":{"position":[[321,10]]},"136":{"position":[[542,10]]},"263":{"position":[[387,10]]},"492":{"position":[[523,8],[903,8]]},"589":{"position":[[373,10]]},"607":{"position":[[321,10]]},"664":{"position":[[542,10]]}},"keywords":{}}],["relat",{"_index":735,"title":{"132":{"position":[[3,7]]},"133":{"position":[[37,7]]},"135":{"position":[[7,7]]},"149":{"position":[[11,7]]},"154":{"position":[[27,7]]},"649":{"position":[[11,7]]},"654":{"position":[[27,7]]},"660":{"position":[[3,7]]},"661":{"position":[[37,7]]},"663":{"position":[[7,7]]}},"content":{"53":{"position":[[10753,8]]},"106":{"position":[[235,7]]},"116":{"position":[[457,7]]},"132":{"position":[[351,7],[1130,7],[1266,7]]},"135":{"position":[[14,7],[46,7],[514,7]]},"297":{"position":[[58,7]]},"600":{"position":[[457,7]]},"620":{"position":[[235,7]]},"660":{"position":[[351,7],[1130,7],[1266,7]]},"663":{"position":[[14,7],[46,7],[514,7]]},"764":{"position":[[58,7]]},"950":{"position":[[792,7]]}},"keywords":{}}],["relationship",{"_index":1551,"title":{"123":{"position":[[0,12]]},"630":{"position":[[0,12]]}},"content":{"187":{"position":[[230,12]]},"715":{"position":[[230,12]]}},"keywords":{}}],["relayhost",{"_index":3670,"title":{},"content":{"791":{"position":[[14384,10],[29933,10]]}},"keywords":{}}],["relea",{"_index":2285,"title":{},"content":{"268":{"position":[[295,6]]}},"keywords":{}}],["releas",{"_index":559,"title":{"220":{"position":[[9,8]]},"248":{"position":[[20,7]]},"249":{"position":[[40,8]]},"251":{"position":[[17,7]]},"256":{"position":[[7,7]]},"273":{"position":[[22,7]]},"282":{"position":[[14,8]]},"283":{"position":[[31,7]]},"284":{"position":[[4,7]]},"324":{"position":[[4,8]]},"503":{"position":[[0,7]]},"523":{"position":[[0,7]]},"774":{"position":[[4,8]]}},"content":{"53":{"position":[[2637,7],[3181,7],[3199,7],[3263,7],[3331,7],[3420,7],[3547,7],[3607,7],[4082,8],[9162,7],[9177,7],[9261,7],[9284,7],[9404,8],[10866,7],[10891,7]]},"54":{"position":[[2655,9]]},"184":{"position":[[213,8]]},"219":{"position":[[47,7]]},"257":{"position":[[7,7],[88,8],[104,7],[157,7],[305,7],[332,7],[350,7]]},"258":{"position":[[114,7]]},"263":{"position":[[139,7],[264,7],[1096,7],[1114,7],[1228,7],[1258,7],[1283,7],[1505,7],[1594,7]]},"267":{"position":[[46,7],[62,7]]},"274":{"position":[[249,7]]},"281":{"position":[[147,8],[171,7],[526,7],[1208,7],[1595,7]]},"284":{"position":[[275,7]]},"286":{"position":[[66,9],[132,7],[210,8],[316,8],[521,10],[590,7]]},"298":{"position":[[14,7]]},"302":{"position":[[500,7]]},"324":{"position":[[23,8],[48,8],[570,8],[595,8],[841,8],[866,8],[1112,8],[1329,8]]},"333":{"position":[[99,8],[212,7],[242,7]]},"441":{"position":[[52,8]]},"500":{"position":[[433,8]]},"712":{"position":[[213,8]]},"733":{"position":[[47,7]]},"734":{"position":[[9,8]]},"765":{"position":[[14,7]]},"770":{"position":[[500,7]]},"774":{"position":[[23,8],[48,8],[294,8],[319,8],[565,8],[782,8]]},"803":{"position":[[99,8],[212,7],[242,7]]},"925":{"position":[[52,8]]},"934":{"position":[[389,9]]},"950":{"position":[[491,7]]},"967":{"position":[[2232,9]]},"981":{"position":[[1583,8]]},"992":{"position":[[352,8]]}},"keywords":{}}],["release</id",{"_index":2269,"title":{},"content":{"265":{"position":[[686,12]]}},"keywords":{}}],["release_v",{"_index":2122,"title":{"283":{"position":[[39,18]]}},"content":{"252":{"position":[[1980,18],[2031,18],[2211,18],[2269,18],[2336,18],[2394,18],[2571,18]]},"253":{"position":[[202,18],[374,18],[450,18]]},"254":{"position":[[23,18]]},"255":{"position":[[30,18],[88,18]]},"267":{"position":[[70,18]]},"268":{"position":[[270,18]]},"269":{"position":[[126,18],[219,18],[269,18],[327,20]]},"270":{"position":[[79,18],[176,18],[254,18],[412,18],[464,18]]},"274":{"position":[[25,18],[121,18],[198,18]]},"275":{"position":[[16,18]]},"278":{"position":[[33,18],[174,18],[216,18],[289,18],[402,18]]},"281":{"position":[[40,18],[219,19],[369,18],[486,18],[605,18],[1233,18]]},"286":{"position":[[191,18],[342,19],[502,18],[598,18]]}},"keywords":{}}],["releasedparticip",{"_index":770,"title":{},"content":{"54":{"position":[[1427,19]]}},"keywords":{}}],["reli",{"_index":1916,"title":{},"content":{"202":{"position":[[93,7]]},"697":{"position":[[93,7]]}},"keywords":{}}],["reliabl",{"_index":1899,"title":{},"content":{"197":{"position":[[458,11]]},"692":{"position":[[458,11]]}},"keywords":{}}],["reload",{"_index":3684,"title":{},"content":{"791":{"position":[[14929,8],[30478,8]]}},"keywords":{}}],["rememb",{"_index":2250,"title":{},"content":{"264":{"position":[[123,8]]}},"keywords":{}}],["remind",{"_index":994,"title":{},"content":{"79":{"position":[[1091,6]]}},"keywords":{}}],["remot",{"_index":827,"title":{},"content":{"60":{"position":[[188,6],[254,6],[355,6],[619,6]]},"113":{"position":[[355,6]]},"134":{"position":[[984,6]]},"278":{"position":[[452,6]]},"569":{"position":[[188,6],[254,6],[355,6],[619,6]]},"597":{"position":[[355,6]]},"662":{"position":[[984,6]]}},"keywords":{}}],["remov",{"_index":724,"title":{"484":{"position":[[21,6]]},"947":{"position":[[21,6]]}},"content":{"53":{"position":[[9972,7],[9985,7],[10119,7],[10132,7],[10360,7],[10373,7]]},"91":{"position":[[165,6]]},"107":{"position":[[880,6]]},"115":{"position":[[351,6]]},"208":{"position":[[785,7]]},"211":{"position":[[1424,7]]},"484":{"position":[[63,6],[151,6]]},"599":{"position":[[351,6]]},"605":{"position":[[165,6]]},"621":{"position":[[882,6]]},"703":{"position":[[785,7]]},"706":{"position":[[1424,7]]},"791":{"position":[[3353,6],[17604,6],[19177,6],[32458,6]]},"947":{"position":[[63,6],[151,6]]},"981":{"position":[[1378,7]]},"992":{"position":[[330,7]]}},"keywords":{}}],["remove_note_to_trash",{"_index":1982,"title":{},"content":{"214":{"position":[[35,20]]},"709":{"position":[[35,20]]}},"keywords":{}}],["renam",{"_index":1992,"title":{},"content":{"219":{"position":[[284,6]]},"733":{"position":[[284,6]]}},"keywords":{}}],["rend",{"_index":89,"title":{},"content":{"4":{"position":[[540,8]]},"464":{"position":[[540,8]]}},"keywords":{}}],["repeatedli",{"_index":1776,"title":{},"content":{"156":{"position":[[77,10]]},"656":{"position":[[77,10]]}},"keywords":{}}],["replac",{"_index":717,"title":{},"content":{"53":{"position":[[9430,8]]},"115":{"position":[[122,8]]},"161":{"position":[[984,7]]},"199":{"position":[[582,7]]},"221":{"position":[[228,7]]},"487":{"position":[[62,8]]},"599":{"position":[[122,8]]},"668":{"position":[[984,7]]},"694":{"position":[[582,7]]},"735":{"position":[[228,7]]}},"keywords":{}}],["replace_v",{"_index":3147,"title":{},"content":{"488":{"position":[[273,17],[415,17]]}},"keywords":{}}],["repli",{"_index":646,"title":{},"content":{"53":{"position":[[6210,8],[7513,5]]},"79":{"position":[[1375,5]]},"86":{"position":[[697,6]]}},"keywords":{}}],["replica",{"_index":225,"title":{},"content":{"15":{"position":[[852,11],[916,11]]},"18":{"position":[[849,11],[913,11]]},"22":{"position":[[424,11],[488,11],[1182,11],[1246,11]]},"23":{"position":[[395,11],[459,11],[1300,11],[1364,11]]},"24":{"position":[[691,11],[755,11],[1270,11],[1334,11]]},"25":{"position":[[724,11],[788,11]]},"26":{"position":[[432,11],[496,11],[1035,11],[1099,11]]},"27":{"position":[[727,11],[791,11]]},"178":{"position":[[479,9],[565,9]]},"181":{"position":[[214,9],[300,9]]},"365":{"position":[[974,9]]},"366":{"position":[[390,11],[454,11]]},"369":{"position":[[361,11],[425,11]]},"377":{"position":[[391,11],[455,11]]},"405":{"position":[[375,11]]},"409":{"position":[[1187,9]]},"410":{"position":[[820,11],[884,11]]},"415":{"position":[[825,11],[889,11]]},"424":{"position":[[609,11],[673,11]]},"425":{"position":[[620,11]]},"544":{"position":[[852,11],[916,11]]},"547":{"position":[[849,11],[913,11]]},"551":{"position":[[424,11],[488,11],[1182,11],[1246,11]]},"552":{"position":[[395,11],[459,11],[1300,11],[1364,11]]},"553":{"position":[[691,11],[755,11],[1270,11],[1334,11]]},"554":{"position":[[724,11],[788,11]]},"555":{"position":[[432,11],[496,11],[1035,11],[1099,11]]},"556":{"position":[[727,11],[791,11]]},"685":{"position":[[479,9],[565,9]]},"688":{"position":[[214,9],[300,9]]},"839":{"position":[[974,9]]},"840":{"position":[[390,11],[454,11]]},"843":{"position":[[361,11],[425,11]]},"851":{"position":[[391,11],[455,11]]},"862":{"position":[[1187,9]]},"863":{"position":[[820,11],[884,11]]},"868":{"position":[[825,11],[889,11]]},"894":{"position":[[375,11]]},"898":{"position":[[609,11],[673,11]]},"899":{"position":[[620,11]]}},"keywords":{}}],["replicas\":1",{"_index":2764,"title":{},"content":{"366":{"position":[[1297,13],[1467,13]]},"369":{"position":[[1389,13],[1559,13]]},"371":{"position":[[889,13],[1059,13],[1870,13],[2040,13]]},"374":{"position":[[806,13],[976,13]]},"377":{"position":[[1328,13]]},"380":{"position":[[809,13]]},"410":{"position":[[2686,13],[2859,13]]},"412":{"position":[[1688,13],[1861,13]]},"415":{"position":[[2716,13],[2886,13]]},"418":{"position":[[1712,13],[1882,13]]},"421":{"position":[[987,13],[1157,13]]},"840":{"position":[[1297,13],[1467,13]]},"843":{"position":[[1389,13],[1559,13]]},"845":{"position":[[889,13],[1059,13],[1870,13],[2040,13]]},"848":{"position":[[806,13],[976,13]]},"851":{"position":[[1328,13]]},"854":{"position":[[809,13]]},"863":{"position":[[2686,13],[2859,13]]},"865":{"position":[[1688,13],[1861,13]]},"868":{"position":[[2716,13],[2886,13]]},"871":{"position":[[1712,13],[1882,13]]},"874":{"position":[[987,13],[1157,13]]}},"keywords":{}}],["replicas\":2",{"_index":2796,"title":{},"content":{"377":{"position":[[1498,13]]},"380":{"position":[[979,13]]},"851":{"position":[[1498,13]]},"854":{"position":[[979,13]]}},"keywords":{}}],["replicas=1",{"_index":2565,"title":{},"content":{"328":{"position":[[973,11],[1046,11]]},"809":{"position":[[993,11],[1066,11]]}},"keywords":{}}],["replicas_to_aggregate=1",{"_index":4034,"title":{},"content":{"965":{"position":[[4632,24]]}},"keywords":{}}],["replicas_to_aggregate=2",{"_index":4046,"title":{},"content":{"965":{"position":[[7400,24],[14049,24]]}},"keywords":{}}],["repo",{"_index":955,"title":{},"content":{"76":{"position":[[65,4]]},"82":{"position":[[452,4],[474,4]]},"107":{"position":[[338,4]]},"117":{"position":[[1251,5]]},"133":{"position":[[765,4]]},"134":{"position":[[121,5],[1288,4]]},"242":{"position":[[210,5]]},"265":{"position":[[396,4]]},"502":{"position":[[3517,5]]},"522":{"position":[[1618,5]]},"585":{"position":[[65,4]]},"589":{"position":[[452,4],[474,4]]},"601":{"position":[[1251,5]]},"621":{"position":[[339,4]]},"661":{"position":[[765,4]]},"662":{"position":[[121,5],[1288,4]]},"745":{"position":[[210,5]]}},"keywords":{}}],["repon",{"_index":2873,"title":{},"content":{"418":{"position":[[86,7]]},"871":{"position":[[86,7]]}},"keywords":{}}],["report",{"_index":506,"title":{},"content":{"53":{"position":[[1262,7],[5078,7]]},"54":{"position":[[1356,6]]},"211":{"position":[[1076,10]]},"502":{"position":[[1667,6]]},"706":{"position":[[1076,10]]}},"keywords":{}}],["repositori",{"_index":532,"title":{"59":{"position":[[36,10]]},"274":{"position":[[48,10]]},"275":{"position":[[26,10]]},"278":{"position":[[67,10]]},"279":{"position":[[33,10]]},"284":{"position":[[46,10]]},"568":{"position":[[36,10]]}},"content":{"53":{"position":[[1857,13],[2436,11],[4185,11]]},"59":{"position":[[87,10]]},"279":{"position":[[115,12],[185,10]]},"281":{"position":[[656,10]]},"284":{"position":[[122,12],[208,11],[224,10],[402,10]]},"286":{"position":[[26,10]]},"306":{"position":[[341,11]]},"441":{"position":[[429,10],[516,10]]},"502":{"position":[[3542,10]]},"568":{"position":[[87,10]]},"757":{"position":[[341,11]]},"925":{"position":[[429,10],[516,10]]},"963":{"position":[[574,10]]}},"keywords":{}}],["repr",{"_index":710,"title":{},"content":{"53":{"position":[[9082,10]]}},"keywords":{}}],["requ",{"_index":149,"title":{"67":{"position":[[21,7]]},"68":{"position":[[49,7]]},"576":{"position":[[21,7]]},"577":{"position":[[49,7]]}},"content":{"9":{"position":[[33,7]]},"10":{"position":[[32,8]]},"11":{"position":[[39,8]]},"12":{"position":[[41,8]]},"13":{"position":[[39,8]]},"15":{"position":[[30,7]]},"16":{"position":[[29,8]]},"17":{"position":[[36,8]]},"19":{"position":[[36,8]]},"20":{"position":[[48,8]]},"22":{"position":[[32,7]]},"23":{"position":[[32,7]]},"24":{"position":[[31,8]]},"25":{"position":[[36,8]]},"26":{"position":[[38,8]]},"27":{"position":[[36,8]]},"28":{"position":[[36,8]]},"29":{"position":[[41,8]]},"31":{"position":[[41,8]]},"32":{"position":[[51,8]]},"33":{"position":[[36,8]]},"34":{"position":[[54,7]]},"35":{"position":[[79,7]]},"36":{"position":[[81,7]]},"38":{"position":[[30,7]]},"39":{"position":[[29,8]]},"40":{"position":[[34,8]]},"41":{"position":[[37,8]]},"43":{"position":[[27,7]]},"44":{"position":[[29,7]]},"46":{"position":[[38,7]]},"47":{"position":[[37,8]]},"48":{"position":[[44,8]]},"49":{"position":[[46,8]]},"50":{"position":[[47,7]]},"51":{"position":[[64,7]]},"52":{"position":[[66,7]]},"53":{"position":[[2225,7],[4686,7]]},"66":{"position":[[134,8]]},"67":{"position":[[84,7],[114,8],[128,7],[151,7]]},"68":{"position":[[76,7]]},"70":{"position":[[62,7],[166,8]]},"74":{"position":[[460,8]]},"82":{"position":[[212,8],[537,7]]},"150":{"position":[[47,9]]},"161":{"position":[[620,8]]},"239":{"position":[[286,7]]},"245":{"position":[[72,8]]},"260":{"position":[[815,9]]},"350":{"position":[[23,7]]},"365":{"position":[[22,7]]},"368":{"position":[[22,7]]},"388":{"position":[[16,7]]},"437":{"position":[[376,7]]},"498":{"position":[[342,7]]},"538":{"position":[[33,7]]},"539":{"position":[[32,8]]},"540":{"position":[[39,8]]},"541":{"position":[[41,8]]},"542":{"position":[[39,8]]},"544":{"position":[[30,7]]},"545":{"position":[[29,8]]},"546":{"position":[[36,8]]},"548":{"position":[[36,8]]},"549":{"position":[[48,8]]},"551":{"position":[[32,7]]},"552":{"position":[[32,7]]},"553":{"position":[[31,8]]},"554":{"position":[[36,8]]},"555":{"position":[[38,8]]},"556":{"position":[[36,8]]},"557":{"position":[[36,8]]},"558":{"position":[[41,8]]},"560":{"position":[[30,7]]},"561":{"position":[[29,8]]},"562":{"position":[[34,8]]},"563":{"position":[[37,8]]},"575":{"position":[[134,8]]},"576":{"position":[[84,7],[114,8],[128,7],[151,7]]},"577":{"position":[[76,7]]},"579":{"position":[[62,7],[166,8]]},"583":{"position":[[460,8]]},"589":{"position":[[212,8],[537,7]]},"650":{"position":[[47,9]]},"668":{"position":[[620,8]]},"743":{"position":[[270,7]]},"748":{"position":[[72,8]]},"791":{"position":[[2353,8],[3245,8],[6795,8],[12793,9],[12891,8],[17301,8],[18195,8],[19069,8],[22513,8],[28342,9],[28440,8],[32155,8]]},"824":{"position":[[23,7]]},"839":{"position":[[22,7]]},"842":{"position":[[22,7]]},"877":{"position":[[16,7]]},"921":{"position":[[376,7]]}},"keywords":{}}],["requests.review",{"_index":885,"title":{},"content":{"69":{"position":[[49,17]]},"578":{"position":[[49,17]]}},"keywords":{}}],["requests_2.9.1",{"_index":3649,"title":{},"content":{"791":{"position":[[12835,14],[28384,14]]}},"keywords":{}}],["requir",{"_index":205,"title":{"88":{"position":[[17,10]]},"95":{"position":[[45,12]]},"100":{"position":[[0,12],[21,12]]},"185":{"position":[[0,11]]},"198":{"position":[[0,11]]},"602":{"position":[[17,10]]},"609":{"position":[[45,12]]},"614":{"position":[[0,12],[21,12]]},"693":{"position":[[0,11]]},"713":{"position":[[0,11]]}},"content":{"15":{"position":[[255,11],[366,11],[487,11]]},"18":{"position":[[252,11],[363,11],[484,11]]},"53":{"position":[[2727,8],[2894,12],[5541,7],[5646,7],[5783,7],[6760,9],[7652,7],[7729,8],[7811,8],[7894,8],[8006,8],[8718,8],[9144,9],[9238,8]]},"54":{"position":[[744,7]]},"69":{"position":[[274,8]]},"73":{"position":[[228,8]]},"90":{"position":[[2491,8]]},"92":{"position":[[249,8],[504,8]]},"93":{"position":[[22,8],[408,8],[626,8]]},"102":{"position":[[319,11],[823,8],[996,13]]},"106":{"position":[[461,11]]},"118":{"position":[[81,12],[122,12]]},"127":{"position":[[44,12]]},"136":{"position":[[446,12]]},"152":{"position":[[280,12],[428,8]]},"157":{"position":[[106,8],[172,8],[1070,9],[1199,9]]},"160":{"position":[[1522,8]]},"184":{"position":[[379,12]]},"203":{"position":[[27,8]]},"257":{"position":[[67,8]]},"263":{"position":[[7,8]]},"276":{"position":[[10,8]]},"303":{"position":[[576,8]]},"330":{"position":[[14,8]]},"344":{"position":[[39,11]]},"409":{"position":[[81,9],[428,8],[484,9]]},"410":{"position":[[223,11],[334,11],[455,11]]},"414":{"position":[[90,9]]},"415":{"position":[[228,11],[339,11],[460,11]]},"417":{"position":[[81,9]]},"435":{"position":[[8,8]]},"439":{"position":[[1177,8]]},"485":{"position":[[22,8]]},"544":{"position":[[255,11],[366,11],[487,11]]},"547":{"position":[[252,11],[363,11],[484,11]]},"578":{"position":[[274,8]]},"582":{"position":[[228,8]]},"604":{"position":[[2491,8]]},"606":{"position":[[249,8],[504,8]]},"607":{"position":[[22,8],[408,8],[626,8]]},"616":{"position":[[319,11],[828,8],[1001,13]]},"620":{"position":[[461,11]]},"625":{"position":[[81,12],[122,12]]},"634":{"position":[[44,12]]},"652":{"position":[[286,12],[434,8]]},"657":{"position":[[106,8],[172,8],[1070,9],[1199,9]]},"664":{"position":[[446,12]]},"667":{"position":[[1524,8]]},"698":{"position":[[27,8]]},"712":{"position":[[379,12]]},"771":{"position":[[576,8]]},"791":{"position":[[1729,7]]},"800":{"position":[[14,8]]},"818":{"position":[[39,11]]},"862":{"position":[[81,9],[428,8],[484,9]]},"863":{"position":[[223,11],[334,11],[455,11]]},"867":{"position":[[90,9]]},"868":{"position":[[228,11],[339,11],[460,11]]},"870":{"position":[[81,9]]},"919":{"position":[[8,8]]},"948":{"position":[[22,8]]},"979":{"position":[[5,8],[698,7]]},"984":{"position":[[5,8]]},"989":{"position":[[5,8]]}},"keywords":{}}],["required\":\"fal",{"_index":2857,"title":{},"content":{"410":{"position":[[1718,19],[1807,19],[1899,19],[1989,19],[2082,19],[2178,19]]},"412":{"position":[[720,19],[809,19],[901,19],[991,19],[1084,19],[1180,19]]},"415":{"position":[[1748,19],[1837,19],[1929,19],[2019,19],[2112,19],[2208,19]]},"418":{"position":[[744,19],[833,19],[925,19],[1015,19],[1108,19],[1204,19]]},"863":{"position":[[1718,19],[1807,19],[1899,19],[1989,19],[2082,19],[2178,19]]},"865":{"position":[[720,19],[809,19],[901,19],[991,19],[1084,19],[1180,19]]},"868":{"position":[[1748,19],[1837,19],[1929,19],[2019,19],[2112,19],[2208,19]]},"871":{"position":[[744,19],[833,19],[925,19],[1015,19],[1108,19],[1204,19]]}},"keywords":{}}],["required\":\"tru",{"_index":2849,"title":{},"content":{"410":{"position":[[1382,18],[1493,18],[1606,18]]},"412":{"position":[[384,18],[495,18],[608,18]]},"415":{"position":[[1412,18],[1523,18],[1636,18]]},"418":{"position":[[408,18],[519,18],[632,18]]},"863":{"position":[[1382,18],[1493,18],[1606,18]]},"865":{"position":[[384,18],[495,18],[608,18]]},"868":{"position":[[1412,18],[1523,18],[1636,18]]},"871":{"position":[[408,18],[519,18],[632,18]]}},"keywords":{}}],["requiredkernel",{"_index":1472,"title":{},"content":{"113":{"position":[[388,14]]},"597":{"position":[[388,14]]}},"keywords":{}}],["requirement.)minikub",{"_index":8,"title":{},"content":{"1":{"position":[[32,22]]},"338":{"position":[[93,22]]},"461":{"position":[[32,22]]},"812":{"position":[[93,22]]}},"keywords":{}}],["requirements.md",{"_index":1783,"title":{},"content":{"157":{"position":[[351,15]]},"657":{"position":[[351,15]]}},"keywords":{}}],["requirements.txt",{"_index":2911,"title":{},"content":{"435":{"position":[[322,16],[429,16],[453,16],[555,16]]},"439":{"position":[[1226,16]]},"441":{"position":[[208,16]]},"919":{"position":[[253,16],[330,16],[368,16],[445,16],[469,16],[555,16]]},"925":{"position":[[208,16]]},"954":{"position":[[1149,16]]}},"keywords":{}}],["rerun",{"_index":1615,"title":{},"content":{"134":{"position":[[826,5]]},"662":{"position":[[826,5]]}},"keywords":{}}],["res=\"mem=20gb",{"_index":1676,"title":{},"content":{"140":{"position":[[465,14],[1134,14],[1229,14]]},"640":{"position":[[465,14],[1134,14],[1229,14]]}},"keywords":{}}],["resid",{"_index":1278,"title":{},"content":{"98":{"position":[[247,7]]},"612":{"position":[[247,7]]}},"keywords":{}}],["resign",{"_index":621,"title":{},"content":{"53":{"position":[[5258,8]]}},"keywords":{}}],["resnet/tower_0/fully_connect",{"_index":4032,"title":{},"content":{"965":{"position":[[4559,32],[7327,32],[13976,32]]}},"keywords":{}}],["resnet/tower_0/global_avg_pool",{"_index":4031,"title":{},"content":{"965":{"position":[[4485,32],[7253,32],[13902,32]]}},"keywords":{}}],["resnet/tower_0/stage/residual_v1",{"_index":4007,"title":{},"content":{"965":{"position":[[2045,34],[5251,34],[11462,34]]}},"keywords":{}}],["resnet/tower_0/stage/residual_v1_1",{"_index":4008,"title":{},"content":{"965":{"position":[[2129,36],[5335,36],[11546,36]]}},"keywords":{}}],["resnet/tower_0/stage/residual_v1_2",{"_index":4009,"title":{},"content":{"965":{"position":[[2215,36],[5421,36],[11632,36]]}},"keywords":{}}],["resnet/tower_0/stage/residual_v1_3",{"_index":4010,"title":{},"content":{"965":{"position":[[2301,36],[5507,36],[11718,36]]}},"keywords":{}}],["resnet/tower_0/stage/residual_v1_4",{"_index":4011,"title":{},"content":{"965":{"position":[[2387,36],[5593,36],[11804,36]]}},"keywords":{}}],["resnet/tower_0/stage/residual_v1_5",{"_index":4012,"title":{},"content":{"965":{"position":[[2473,36],[5679,36],[11890,36]]}},"keywords":{}}],["resnet/tower_0/stage/residual_v1_6",{"_index":4013,"title":{},"content":{"965":{"position":[[2559,36],[5765,36],[11976,36]]}},"keywords":{}}],["resnet/tower_0/stage_1/residual_v1",{"_index":4015,"title":{},"content":{"965":{"position":[[2740,36],[3178,36],[5946,36],[12157,36],[12595,36]]}},"keywords":{}}],["resnet/tower_0/stage_1/residual_v1/avg_pool",{"_index":4014,"title":{},"content":{"965":{"position":[[2645,45],[5851,45],[12062,45]]}},"keywords":{}}],["resnet/tower_0/stage_1/residual_v1_1",{"_index":4016,"title":{},"content":{"965":{"position":[[2826,38],[3264,38],[6032,38],[12243,38],[12681,38]]}},"keywords":{}}],["resnet/tower_0/stage_1/residual_v1_2",{"_index":4017,"title":{},"content":{"965":{"position":[[2914,38],[3352,38],[6120,38],[12331,38],[12769,38]]}},"keywords":{}}],["resnet/tower_0/stage_1/residual_v1_3",{"_index":4018,"title":{},"content":{"965":{"position":[[3002,38],[3440,38],[6208,38],[12419,38],[12857,38]]}},"keywords":{}}],["resnet/tower_0/stage_1/residual_v1_4",{"_index":4019,"title":{},"content":{"965":{"position":[[3090,38],[3528,38],[6296,38],[12507,38],[12945,38]]}},"keywords":{}}],["resnet/tower_0/stage_1/residual_v1_5",{"_index":4020,"title":{},"content":{"965":{"position":[[3616,38],[6384,38],[13033,38]]}},"keywords":{}}],["resnet/tower_0/stage_1/residual_v1_6",{"_index":4021,"title":{},"content":{"965":{"position":[[3704,38],[6472,38],[13121,38]]}},"keywords":{}}],["resnet/tower_0/stage_2/residual_v1",{"_index":4023,"title":{},"content":{"965":{"position":[[3885,36],[6653,36],[13302,36]]}},"keywords":{}}],["resnet/tower_0/stage_2/residual_v1/avg_pool",{"_index":4022,"title":{},"content":{"965":{"position":[[3792,45],[6560,45],[13209,45]]}},"keywords":{}}],["resnet/tower_0/stage_2/residual_v1_1",{"_index":4025,"title":{},"content":{"965":{"position":[[3969,38],[6737,38],[13386,38]]}},"keywords":{}}],["resnet/tower_0/stage_2/residual_v1_2",{"_index":4026,"title":{},"content":{"965":{"position":[[4055,38],[6823,38],[13472,38]]}},"keywords":{}}],["resnet/tower_0/stage_2/residual_v1_3",{"_index":4027,"title":{},"content":{"965":{"position":[[4141,38],[6909,38],[13558,38]]}},"keywords":{}}],["resnet/tower_0/stage_2/residual_v1_4",{"_index":4028,"title":{},"content":{"965":{"position":[[4227,38],[6995,38],[13644,38]]}},"keywords":{}}],["resnet/tower_0/stage_2/residual_v1_5",{"_index":4029,"title":{},"content":{"965":{"position":[[4313,38],[7081,38],[13730,38]]}},"keywords":{}}],["resnet/tower_0/stage_2/residual_v1_6",{"_index":4030,"title":{},"content":{"965":{"position":[[4399,38],[7167,38],[13816,38]]}},"keywords":{}}],["resolv",{"_index":462,"title":{},"content":{"53":{"position":[[192,9]]}},"keywords":{}}],["resolv.conf",{"_index":3368,"title":{},"content":{"791":{"position":[[283,11]]}},"keywords":{}}],["resolvconf",{"_index":3433,"title":{},"content":{"791":{"position":[[2496,10],[18338,10]]}},"keywords":{}}],["resouc",{"_index":2737,"title":{},"content":{"365":{"position":[[1002,8]]},"409":{"position":[[1215,8]]},"839":{"position":[[1002,8]]},"862":{"position":[[1215,8]]}},"keywords":{}}],["resourc",{"_index":92,"title":{"93":{"position":[[35,8]]},"126":{"position":[[0,8]]},"484":{"position":[[66,8]]},"607":{"position":[[35,8]]},"633":{"position":[[0,8]]},"947":{"position":[[66,8]]}},"content":{"4":{"position":[[569,8],[641,8]]},"15":{"position":[[867,12],[931,12]]},"18":{"position":[[864,12],[928,12]]},"22":{"position":[[439,12],[503,12],[1197,12],[1261,12]]},"23":{"position":[[410,12],[474,12],[1315,12],[1379,12]]},"24":{"position":[[706,12],[770,12],[1285,12],[1349,12]]},"25":{"position":[[739,12],[803,12]]},"26":{"position":[[447,12],[511,12],[1050,12],[1114,12]]},"27":{"position":[[742,12],[806,12]]},"38":{"position":[[284,12]]},"41":{"position":[[943,12]]},"53":{"position":[[1497,9],[4151,10]]},"89":{"position":[[69,8]]},"93":{"position":[[103,8],[158,8],[824,9]]},"94":{"position":[[533,8]]},"98":{"position":[[434,8]]},"99":{"position":[[432,8],[490,8]]},"102":{"position":[[490,8],[1319,10]]},"107":{"position":[[789,8],[913,8],[1286,9],[1328,9],[1353,9],[1422,9]]},"110":{"position":[[627,8],[1076,8],[1117,9],[1247,8]]},"121":{"position":[[288,10],[302,8]]},"122":{"position":[[84,8]]},"126":{"position":[[18,8]]},"130":{"position":[[115,9]]},"135":{"position":[[225,8]]},"139":{"position":[[953,10],[1002,9],[1656,8],[1727,9]]},"140":{"position":[[1606,8]]},"152":{"position":[[206,8],[337,8],[1150,8],[1373,8]]},"153":{"position":[[266,8]]},"155":{"position":[[194,8]]},"178":{"position":[[491,10],[577,10]]},"180":{"position":[[237,8]]},"181":{"position":[[226,10],[312,10],[653,9],[683,8]]},"184":{"position":[[537,8]]},"186":{"position":[[633,10]]},"190":{"position":[[314,9]]},"211":{"position":[[873,8],[1031,8],[1151,9]]},"339":{"position":[[226,8]]},"366":{"position":[[405,12],[469,12]]},"369":{"position":[[376,12],[440,12]]},"377":{"position":[[406,12],[470,12]]},"388":{"position":[[512,9]]},"389":{"position":[[252,12]]},"405":{"position":[[390,12]]},"410":{"position":[[835,12],[899,12]]},"415":{"position":[[840,12],[904,12]]},"424":{"position":[[624,12],[688,12]]},"425":{"position":[[635,12]]},"464":{"position":[[569,8],[641,8]]},"481":{"position":[[127,8]]},"484":{"position":[[260,8],[332,8]]},"498":{"position":[[509,10]]},"500":{"position":[[69,8]]},"544":{"position":[[867,12],[931,12]]},"547":{"position":[[864,12],[928,12]]},"551":{"position":[[439,12],[503,12],[1197,12],[1261,12]]},"552":{"position":[[410,12],[474,12],[1315,12],[1379,12]]},"553":{"position":[[706,12],[770,12],[1285,12],[1349,12]]},"554":{"position":[[739,12],[803,12]]},"555":{"position":[[447,12],[511,12],[1050,12],[1114,12]]},"556":{"position":[[742,12],[806,12]]},"560":{"position":[[284,12]]},"563":{"position":[[943,12]]},"603":{"position":[[69,8]]},"607":{"position":[[103,8],[158,8],[824,9]]},"608":{"position":[[533,8]]},"612":{"position":[[434,8]]},"613":{"position":[[432,8],[490,8]]},"616":{"position":[[490,8],[1331,10]]},"621":{"position":[[790,8],[916,8],[1289,9],[1331,9],[1356,9],[1425,9]]},"624":{"position":[[627,8],[1081,8],[1122,9],[1252,8]]},"628":{"position":[[288,10],[302,8]]},"629":{"position":[[84,8]]},"633":{"position":[[18,8]]},"637":{"position":[[115,9]]},"639":{"position":[[953,10],[1002,9],[1664,8],[1740,9]]},"640":{"position":[[1606,8]]},"652":{"position":[[206,8],[343,8],[1430,8],[1653,8]]},"653":{"position":[[266,8]]},"655":{"position":[[200,8]]},"663":{"position":[[225,8]]},"685":{"position":[[491,10],[577,10]]},"687":{"position":[[258,8]]},"688":{"position":[[226,10],[312,10],[653,9],[683,8]]},"706":{"position":[[873,8],[1031,8],[1151,9]]},"712":{"position":[[542,8]]},"714":{"position":[[633,10]]},"718":{"position":[[319,9]]},"791":{"position":[[1614,9],[2335,9],[3227,9],[6379,9],[12127,10],[12227,9],[17121,9],[18177,9],[19051,9],[22097,9],[27676,10],[27776,9],[31975,9]]},"813":{"position":[[87,9]]},"840":{"position":[[405,12],[469,12]]},"843":{"position":[[376,12],[440,12]]},"851":{"position":[[406,12],[470,12]]},"863":{"position":[[835,12],[899,12]]},"868":{"position":[[840,12],[904,12]]},"877":{"position":[[512,9]]},"878":{"position":[[252,12]]},"894":{"position":[[390,12]]},"898":{"position":[[624,12],[688,12]]},"899":{"position":[[635,12]]},"944":{"position":[[127,8]]},"947":{"position":[[260,8],[332,8]]}},"keywords":{}}],["resource_constraint",{"_index":1675,"title":{},"content":{"140":{"position":[[444,20],[1113,20],[1208,20]]},"640":{"position":[[444,20],[1113,20],[1208,20]]}},"keywords":{}}],["resourceclasses(stream.of(\"org.apache.submarine.server.rest.notebookrestapi",{"_index":2948,"title":{},"content":{"439":{"position":[[465,78]]}},"keywords":{}}],["resourcemap",{"_index":2868,"title":{},"content":{"410":{"position":[[2799,15],[2972,15]]},"412":{"position":[[1801,15],[1974,15]]},"863":{"position":[[2799,15],[2972,15]]},"865":{"position":[[1801,15],[1974,15]]}},"keywords":{}}],["resourcemap\":{\"memory\":\"1024m\",\"cpu\":\"1",{"_index":2768,"title":{},"content":{"366":{"position":[[1410,42]]},"369":{"position":[[1502,42]]},"371":{"position":[[1002,42],[1172,42],[1983,42]]},"374":{"position":[[919,42]]},"377":{"position":[[1441,42]]},"380":{"position":[[922,42]]},"415":{"position":[[2829,42],[2999,42]]},"418":{"position":[[1825,42],[1995,42]]},"421":{"position":[[1100,42],[1270,42]]},"840":{"position":[[1410,42]]},"843":{"position":[[1502,42]]},"845":{"position":[[1002,42],[1172,42],[1983,42]]},"848":{"position":[[919,42]]},"851":{"position":[[1441,42]]},"854":{"position":[[922,42]]},"868":{"position":[[2829,42],[2999,42]]},"871":{"position":[[1825,42],[1995,42]]},"874":{"position":[[1100,42],[1270,42]]}},"keywords":{}}],["resourcemap\":{\"memory\":\"2048m\",\"cpu\":\"1",{"_index":2770,"title":{},"content":{"366":{"position":[[1580,42]]},"369":{"position":[[1672,42]]},"371":{"position":[[2153,42]]},"374":{"position":[[1089,42]]},"377":{"position":[[1611,42]]},"380":{"position":[[1092,42]]},"840":{"position":[[1580,42]]},"843":{"position":[[1672,42]]},"845":{"position":[[2153,42]]},"848":{"position":[[1089,42]]},"851":{"position":[[1611,42]]},"854":{"position":[[1092,42]]}},"keywords":{}}],["resourcepackages(stream.of(\"org.apache.submarine.server.r",{"_index":2946,"title":{},"content":{"439":{"position":[[371,63]]}},"keywords":{}}],["resources\":\"cpu=1,memory=1.0gi",{"_index":410,"title":{},"content":{"38":{"position":[[1145,32]]},"39":{"position":[[887,32]]},"40":{"position":[[878,32]]},"560":{"position":[[1145,32]]},"561":{"position":[[887,32]]},"562":{"position":[[878,32]]}},"keywords":{}}],["resources\":\"cpu\\u003d1,memory\\u003d1.0gi",{"_index":2814,"title":{},"content":{"389":{"position":[[1131,42]]},"392":{"position":[[878,42]]},"395":{"position":[[866,42]]},"398":{"position":[[896,42]]},"878":{"position":[[1131,42]]},"881":{"position":[[878,42]]},"884":{"position":[[866,42]]},"887":{"position":[[896,42]]}},"keywords":{}}],["resources\":\"cpu\\u003d1,memory\\u003d1024m",{"_index":2765,"title":{},"content":{"366":{"position":[[1311,43]]},"369":{"position":[[1403,43]]},"371":{"position":[[903,43],[1073,43],[1884,43]]},"374":{"position":[[820,43]]},"377":{"position":[[1342,43]]},"380":{"position":[[823,43]]},"410":{"position":[[2700,43],[2873,43]]},"412":{"position":[[1702,43],[1875,43]]},"415":{"position":[[2730,43],[2900,43]]},"418":{"position":[[1726,43],[1896,43]]},"421":{"position":[[1001,43],[1171,43]]},"840":{"position":[[1311,43]]},"843":{"position":[[1403,43]]},"845":{"position":[[903,43],[1073,43],[1884,43]]},"848":{"position":[[820,43]]},"851":{"position":[[1342,43]]},"854":{"position":[[823,43]]},"863":{"position":[[2700,43],[2873,43]]},"865":{"position":[[1702,43],[1875,43]]},"868":{"position":[[2730,43],[2900,43]]},"871":{"position":[[1726,43],[1896,43]]},"874":{"position":[[1001,43],[1171,43]]}},"keywords":{}}],["resources\":\"cpu\\u003d1,memory\\u003d2048m",{"_index":2769,"title":{},"content":{"366":{"position":[[1481,43]]},"369":{"position":[[1573,43]]},"371":{"position":[[2054,43]]},"374":{"position":[[990,43]]},"377":{"position":[[1512,43]]},"380":{"position":[[993,43]]},"840":{"position":[[1481,43]]},"843":{"position":[[1573,43]]},"845":{"position":[[2054,43]]},"848":{"position":[[990,43]]},"851":{"position":[[1512,43]]},"854":{"position":[[993,43]]}},"keywords":{}}],["resources_20.7.0",{"_index":3641,"title":{},"content":{"791":{"position":[[12174,16],[27723,16]]}},"keywords":{}}],["resourec",{"_index":2736,"title":{},"content":{"365":{"position":[[984,10]]},"388":{"position":[[529,9]]},"409":{"position":[[1197,10]]},"839":{"position":[[984,10]]},"862":{"position":[[1197,10]]},"877":{"position":[[529,9]]}},"keywords":{}}],["respon",{"_index":175,"title":{},"content":{"9":{"position":[[559,9]]},"10":{"position":[[108,9]]},"11":{"position":[[132,9]]},"12":{"position":[[455,9]]},"13":{"position":[[135,9]]},"22":{"position":[[599,9]]},"23":{"position":[[746,9]]},"24":{"position":[[106,9]]},"25":{"position":[[141,9]]},"26":{"position":[[637,9]]},"27":{"position":[[144,9]]},"28":{"position":[[116,9]]},"29":{"position":[[151,9]]},"31":{"position":[[128,9]]},"32":{"position":[[140,9]]},"33":{"position":[[285,9]]},"34":{"position":[[145,9]]},"35":{"position":[[193,9]]},"36":{"position":[[197,9]]},"38":{"position":[[376,9]]},"39":{"position":[[115,9]]},"40":{"position":[[112,9]]},"41":{"position":[[118,9]]},"43":{"position":[[257,9]]},"44":{"position":[[189,9]]},"46":{"position":[[251,9]]},"47":{"position":[[118,9]]},"48":{"position":[[138,9]]},"49":{"position":[[241,9]]},"50":{"position":[[143,9]]},"51":{"position":[[175,9]]},"52":{"position":[[179,9]]},"53":{"position":[[109,16],[741,17],[824,17],[1753,11],[2580,11],[3486,11],[3846,11],[3954,16],[4966,14]]},"91":{"position":[[572,11],[722,11]]},"135":{"position":[[408,11],[557,15]]},"151":{"position":[[298,11]]},"161":{"position":[[636,11]]},"351":{"position":[[516,8]]},"353":{"position":[[65,8]]},"356":{"position":[[82,8]]},"359":{"position":[[403,8]]},"362":{"position":[[85,8]]},"366":{"position":[[557,8]]},"369":{"position":[[677,8]]},"371":{"position":[[64,8]]},"374":{"position":[[94,8]]},"377":{"position":[[588,8]]},"380":{"position":[[97,8]]},"382":{"position":[[69,8]]},"385":{"position":[[99,8]]},"389":{"position":[[336,9]]},"392":{"position":[[98,8]]},"395":{"position":[[90,8]]},"398":{"position":[[93,9]]},"410":{"position":[[1063,8]]},"412":{"position":[[62,8]]},"415":{"position":[[1089,8]]},"421":{"position":[[246,8]]},"484":{"position":[[31,8]]},"538":{"position":[[559,9]]},"539":{"position":[[108,9]]},"540":{"position":[[132,9]]},"541":{"position":[[455,9]]},"542":{"position":[[135,9]]},"551":{"position":[[599,9]]},"552":{"position":[[746,9]]},"553":{"position":[[106,9]]},"554":{"position":[[141,9]]},"555":{"position":[[637,9]]},"556":{"position":[[144,9]]},"557":{"position":[[116,9]]},"558":{"position":[[151,9]]},"560":{"position":[[376,9]]},"561":{"position":[[115,9]]},"562":{"position":[[112,9]]},"563":{"position":[[118,9]]},"605":{"position":[[572,11],[722,11]]},"651":{"position":[[298,11]]},"663":{"position":[[408,11],[557,15]]},"668":{"position":[[636,11]]},"825":{"position":[[516,8]]},"827":{"position":[[65,8]]},"830":{"position":[[82,8]]},"833":{"position":[[403,8]]},"836":{"position":[[85,8]]},"840":{"position":[[557,8]]},"843":{"position":[[677,8]]},"845":{"position":[[64,8]]},"848":{"position":[[94,8]]},"851":{"position":[[588,8]]},"854":{"position":[[97,8]]},"856":{"position":[[69,8]]},"859":{"position":[[99,8]]},"863":{"position":[[1063,8]]},"865":{"position":[[62,8]]},"868":{"position":[[1089,8]]},"874":{"position":[[246,8]]},"878":{"position":[[336,9]]},"881":{"position":[[98,8]]},"884":{"position":[[90,8]]},"887":{"position":[[93,9]]},"947":{"position":[[31,8]]},"965":{"position":[[14252,8]]}},"keywords":{}}],["respond",{"_index":1033,"title":{},"content":{"82":{"position":[[491,7]]},"589":{"position":[[491,7]]}},"keywords":{}}],["rest",{"_index":143,"title":{"8":{"position":[[12,4]]},"14":{"position":[[20,4]]},"21":{"position":[[11,4]]},"30":{"position":[[6,4]]},"37":{"position":[[9,4]]},"42":{"position":[[6,4]]},"45":{"position":[[6,4]]},"348":{"position":[[12,4]]},"363":{"position":[[11,4]]},"386":{"position":[[9,4]]},"407":{"position":[[20,4]]},"537":{"position":[[12,4]]},"543":{"position":[[20,4]]},"550":{"position":[[11,4]]},"559":{"position":[[9,4]]},"822":{"position":[[12,4]]},"837":{"position":[[11,4]]},"860":{"position":[[20,4]]},"875":{"position":[[9,4]]}},"content":{"23":{"position":[[727,4]]},"110":{"position":[[92,4]]},"125":{"position":[[156,4]]},"139":{"position":[[2122,4]]},"158":{"position":[[2913,4]]},"161":{"position":[[197,4],[385,4],[524,4],[590,4],[724,4],[881,4],[923,4]]},"162":{"position":[[338,4],[940,4],[1021,4]]},"281":{"position":[[1107,4],[1453,4]]},"300":{"position":[[21,7]]},"302":{"position":[[81,7],[128,7]]},"305":{"position":[[109,7]]},"369":{"position":[[667,4]]},"552":{"position":[[727,4]]},"624":{"position":[[92,4]]},"632":{"position":[[156,4]]},"639":{"position":[[2135,4]]},"658":{"position":[[2913,4]]},"668":{"position":[[197,4],[385,4],[524,4],[590,4],[724,4],[881,4],[923,4]]},"669":{"position":[[501,4],[1193,4],[1274,4]]},"756":{"position":[[109,7]]},"768":{"position":[[21,7]]},"770":{"position":[[81,7],[128,7]]},"843":{"position":[[667,4]]}},"keywords":{}}],["restart",{"_index":57,"title":{},"content":{"4":{"position":[[131,8]]},"186":{"position":[[509,7]]},"246":{"position":[[127,7]]},"340":{"position":[[110,8]]},"464":{"position":[[131,8]]},"487":{"position":[[123,7]]},"496":{"position":[[536,10]]},"714":{"position":[[509,7]]},"749":{"position":[[127,7]]},"791":{"position":[[15052,8],[30601,8]]},"814":{"position":[[112,8]]}},"keywords":{}}],["restor",{"_index":2978,"title":{},"content":{"444":{"position":[[72,7]]},"964":{"position":[[1136,8]]}},"keywords":{}}],["result",{"_index":179,"title":{"966":{"position":[[12,7]]}},"content":{"9":{"position":[[600,9]]},"10":{"position":[[149,9]]},"11":{"position":[[173,9]]},"12":{"position":[[513,9]]},"13":{"position":[[176,9]]},"22":{"position":[[640,9]]},"23":{"position":[[787,9]]},"24":{"position":[[147,9]]},"25":{"position":[[182,9]]},"26":{"position":[[695,9]]},"27":{"position":[[185,9]]},"28":{"position":[[191,9]]},"29":{"position":[[226,9]]},"31":{"position":[[221,8]]},"32":{"position":[[231,8]]},"33":{"position":[[379,8]]},"34":{"position":[[239,8]]},"35":{"position":[[289,8]]},"38":{"position":[[471,10]]},"39":{"position":[[211,10]]},"40":{"position":[[206,10]]},"41":{"position":[[219,9]]},"47":{"position":[[214,8]]},"48":{"position":[[232,8]]},"49":{"position":[[338,8]]},"50":{"position":[[240,8]]},"52":{"position":[[278,8]]},"54":{"position":[[2407,6]]},"73":{"position":[[473,8]]},"107":{"position":[[125,8]]},"132":{"position":[[1481,7]]},"158":{"position":[[2018,7]]},"213":{"position":[[208,6]]},"252":{"position":[[2439,6]]},"262":{"position":[[229,7]]},"281":{"position":[[1169,7]]},"346":{"position":[[83,7]]},"351":{"position":[[586,10]]},"353":{"position":[[135,10]]},"356":{"position":[[152,10]]},"359":{"position":[[473,10]]},"362":{"position":[[155,10]]},"366":{"position":[[627,10]]},"369":{"position":[[747,10]]},"371":{"position":[[134,9]]},"374":{"position":[[164,10]]},"377":{"position":[[658,10]]},"380":{"position":[[167,10]]},"382":{"position":[[139,9]]},"385":{"position":[[169,10]]},"389":{"position":[[431,10]]},"392":{"position":[[193,9]]},"395":{"position":[[183,10]]},"398":{"position":[[190,10]]},"400":{"position":[[29,6],[134,6]]},"401":{"position":[[458,7]]},"410":{"position":[[1133,10]]},"412":{"position":[[132,10]]},"415":{"position":[[1159,10]]},"418":{"position":[[155,10]]},"421":{"position":[[316,10]]},"502":{"position":[[1561,6]]},"538":{"position":[[600,9]]},"539":{"position":[[149,9]]},"540":{"position":[[173,9]]},"541":{"position":[[513,9]]},"542":{"position":[[176,9]]},"551":{"position":[[640,9]]},"552":{"position":[[787,9]]},"553":{"position":[[147,9]]},"554":{"position":[[182,9]]},"555":{"position":[[695,9]]},"556":{"position":[[185,9]]},"557":{"position":[[191,9]]},"558":{"position":[[226,9]]},"560":{"position":[[471,10]]},"561":{"position":[[211,10]]},"562":{"position":[[206,10]]},"563":{"position":[[219,9]]},"582":{"position":[[473,8]]},"621":{"position":[[125,8]]},"658":{"position":[[2018,7]]},"660":{"position":[[1481,7]]},"708":{"position":[[208,6]]},"820":{"position":[[85,7]]},"825":{"position":[[586,10]]},"827":{"position":[[135,10]]},"830":{"position":[[152,10]]},"833":{"position":[[473,10]]},"836":{"position":[[155,10]]},"840":{"position":[[627,10]]},"843":{"position":[[747,10]]},"845":{"position":[[134,9]]},"848":{"position":[[164,10]]},"851":{"position":[[658,10]]},"854":{"position":[[167,10]]},"856":{"position":[[139,9]]},"859":{"position":[[169,10]]},"863":{"position":[[1133,10]]},"865":{"position":[[132,10]]},"868":{"position":[[1159,10]]},"871":{"position":[[155,10]]},"874":{"position":[[316,10]]},"878":{"position":[[431,10]]},"881":{"position":[[193,9]]},"884":{"position":[[183,10]]},"887":{"position":[[190,10]]},"889":{"position":[[29,6],[134,6]]},"890":{"position":[[458,7]]}},"keywords":{}}],["result\":nul",{"_index":378,"title":{},"content":{"36":{"position":[[304,14]]},"44":{"position":[[289,14]]},"46":{"position":[[354,14]]},"51":{"position":[[282,14]]}},"keywords":{}}],["result\":{\"url\":nul",{"_index":438,"title":{},"content":{"43":{"position":[[349,22]]}},"keywords":{}}],["results.act",{"_index":769,"title":{},"content":{"54":{"position":[[1368,16]]}},"keywords":{}}],["results][vot",{"_index":997,"title":{},"content":{"79":{"position":[[1158,15]]}},"keywords":{}}],["resum",{"_index":2238,"title":{},"content":{"263":{"position":[[548,8]]},"277":{"position":[[161,8]]}},"keywords":{}}],["retri",{"_index":1969,"title":{},"content":{"210":{"position":[[289,6]]},"705":{"position":[[289,6]]}},"keywords":{}}],["retriev",{"_index":1836,"title":{},"content":{"162":{"position":[[964,8]]},"669":{"position":[[1217,8]]}},"keywords":{}}],["return",{"_index":1738,"title":{},"content":{"151":{"position":[[231,7],[461,7]]},"343":{"position":[[605,6],[699,6],[1334,6]]},"424":{"position":[[135,8]]},"425":{"position":[[163,7]]},"426":{"position":[[82,7]]},"427":{"position":[[101,7]]},"428":{"position":[[73,7]]},"429":{"position":[[232,6]]},"430":{"position":[[88,7]]},"431":{"position":[[176,7]]},"444":{"position":[[27,6]]},"445":{"position":[[41,6]]},"447":{"position":[[98,6]]},"470":{"position":[[107,6],[146,7]]},"651":{"position":[[231,7],[461,7]]},"817":{"position":[[623,6],[717,6],[1352,6]]},"898":{"position":[[135,8]]},"899":{"position":[[163,7]]},"900":{"position":[[82,7]]},"901":{"position":[[101,7]]},"902":{"position":[[73,7]]},"903":{"position":[[232,6]]},"904":{"position":[[88,7]]},"905":{"position":[[176,7]]},"908":{"position":[[270,7]]},"909":{"position":[[305,7]]},"930":{"position":[[107,6],[146,7]]},"967":{"position":[[477,6],[655,6],[1780,6]]}},"keywords":{}}],["reus",{"_index":1101,"title":{},"content":{"90":{"position":[[683,5]]},"158":{"position":[[2116,5]]},"205":{"position":[[253,5]]},"604":{"position":[[683,5]]},"658":{"position":[[2116,5]]},"700":{"position":[[253,5]]},"788":{"position":[[952,5]]}},"keywords":{}}],["rev",{"_index":702,"title":{},"content":{"53":{"position":[[8570,8]]},"314":{"position":[[102,7]]},"786":{"position":[[102,7]]}},"keywords":{}}],["review",{"_index":568,"title":{"69":{"position":[[12,6]]},"70":{"position":[[16,6]]},"74":{"position":[[0,6]]},"578":{"position":[[12,6]]},"579":{"position":[[16,6]]},"583":{"position":[[0,6]]}},"content":{"53":{"position":[[3104,7]]},"54":{"position":[[2557,6]]},"67":{"position":[[228,6]]},"69":{"position":[[16,8],[512,9],[569,8]]},"70":{"position":[[118,6]]},"74":{"position":[[62,6],[137,8],[195,7],[575,6],[667,6]]},"75":{"position":[[358,7]]},"118":{"position":[[785,6]]},"576":{"position":[[228,6]]},"578":{"position":[[16,8],[512,9],[569,8]]},"579":{"position":[[118,6]]},"583":{"position":[[62,6],[137,8],[195,7],[575,6],[667,6]]},"584":{"position":[[358,7]]},"625":{"position":[[786,6]]}},"keywords":{}}],["reviews.contributor",{"_index":894,"title":{},"content":{"69":{"position":[[482,20]]},"578":{"position":[[482,20]]}},"keywords":{}}],["revis",{"_index":41,"title":{},"content":{"3":{"position":[[213,9]]},"463":{"position":[[213,9]]}},"keywords":{}}],["revoc",{"_index":2209,"title":{},"content":{"260":{"position":[[2449,10]]}},"keywords":{}}],["revocs.d/41936314e25f402d5f7d73152dd587e7b10f3b1f.rev",{"_index":2212,"title":{},"content":{"260":{"position":[[2511,54]]}},"keywords":{}}],["rf",{"_index":3309,"title":{},"content":{"777":{"position":[[749,2]]},"954":{"position":[[630,2]]},"969":{"position":[[687,2]]}},"keywords":{}}],["right",{"_index":484,"title":{},"content":{"53":{"position":[[813,6],[2473,6]]},"90":{"position":[[2734,5]]},"128":{"position":[[295,5]]},"139":{"position":[[1851,5]]},"320":{"position":[[125,5]]},"502":{"position":[[1978,6]]},"604":{"position":[[2734,5]]},"635":{"position":[[295,5]]},"639":{"position":[[1864,5]]},"797":{"position":[[125,5]]},"939":{"position":[[138,5]]}},"keywords":{}}],["rj2z7",{"_index":2618,"title":{},"content":{"340":{"position":[[374,5]]}},"keywords":{}}],["rm",{"_index":569,"title":{},"content":{"53":{"position":[[3215,4],[3312,2],[3480,2]]},"484":{"position":[[9,2]]},"777":{"position":[[745,2],[1535,2]]},"947":{"position":[[9,2]]},"950":{"position":[[1560,2]]},"954":{"position":[[626,2],[825,2],[1958,2]]},"969":{"position":[[683,2],[910,2],[1595,2]]}},"keywords":{}}],["rmse",{"_index":3779,"title":{},"content":{"913":{"position":[[303,7]]}},"keywords":{}}],["roadblock",{"_index":1157,"title":{},"content":{"90":{"position":[[2761,11]]},"604":{"position":[[2761,11]]}},"keywords":{}}],["rol",{"_index":460,"title":{"77":{"position":[[20,4]]},"586":{"position":[[20,4]]}},"content":{"53":{"position":[[99,5],[731,5],[791,5],[848,5],[922,5]]},"77":{"position":[[16,5],[116,4],[201,4],[224,5],[298,4],[384,5],[401,5],[530,7],[597,4]]},"90":{"position":[[2584,4]]},"107":{"position":[[480,6]]},"302":{"position":[[402,4]]},"314":{"position":[[782,5]]},"495":{"position":[[378,5]]},"586":{"position":[[16,5],[116,4],[201,4],[224,5],[298,4],[384,5],[401,5],[530,7],[597,4]]},"604":{"position":[[2584,4]]},"621":{"position":[[481,6]]},"770":{"position":[[402,4]]},"786":{"position":[[782,5]]},"964":{"position":[[1220,4]]}},"keywords":{}}],["role.committ",{"_index":966,"title":{},"content":{"77":{"position":[[258,15]]},"586":{"position":[[258,15]]}},"keywords":{}}],["role.workbench",{"_index":2400,"title":{},"content":{"302":{"position":[[251,14]]},"770":{"position":[[251,14]]}},"keywords":{}}],["roll",{"_index":1206,"title":{},"content":{"92":{"position":[[852,7]]},"186":{"position":[[420,7]]},"606":{"position":[[852,7]]},"714":{"position":[[420,7]]}},"keywords":{}}],["root",{"_index":2431,"title":{},"content":{"313":{"position":[[424,4],[562,5]]},"785":{"position":[[424,4],[562,5]]},"791":{"position":[[14670,4],[30219,4]]},"934":{"position":[[84,4]]}},"keywords":{}}],["root@mast",{"_index":3709,"title":{},"content":{"791":{"position":[[16569,11],[16700,11],[16832,11],[16968,11]]}},"keywords":{}}],["root@work",{"_index":3724,"title":{},"content":{"791":{"position":[[31423,11],[31554,11],[31686,11],[31822,11]]}},"keywords":{}}],["rotat",{"_index":618,"title":{},"content":{"53":{"position":[[5179,7],[5215,7]]}},"keywords":{}}],["rout",{"_index":1797,"title":{},"content":{"158":{"position":[[1246,5]]},"658":{"position":[[1246,5]]}},"keywords":{}}],["routin",{"_index":1259,"title":{"96":{"position":[[30,7]]},"610":{"position":[[30,7]]}},"content":{"96":{"position":[[67,7]]},"610":{"position":[[67,7]]}},"keywords":{}}],["row",{"_index":3833,"title":{},"content":{"939":{"position":[[1934,3]]}},"keywords":{}}],["rows/column",{"_index":1167,"title":{},"content":{"91":{"position":[[180,13]]},"605":{"position":[[180,13]]}},"keywords":{}}],["rsa",{"_index":2132,"title":{},"content":{"252":{"position":[[2661,3]]},"260":{"position":[[567,3],[575,3],[633,3],[710,3]]},"791":{"position":[[16476,3],[16587,5],[31330,3],[31441,5]]}},"keywords":{}}],["rsa4096",{"_index":2214,"title":{},"content":{"260":{"position":[[2612,7],[2720,7]]},"261":{"position":[[56,7],[175,7]]}},"keywords":{}}],["rsa4096/17628566feed6af7",{"_index":2106,"title":{},"content":{"252":{"position":[[594,24],[839,24],[1470,24],[1709,24]]}},"keywords":{}}],["rsa4096/5ef3a66d57ec647a",{"_index":2099,"title":{},"content":{"252":{"position":[[485,24],[730,24],[1361,24],[1600,24]]}},"keywords":{}}],["rssh",{"_index":3442,"title":{},"content":{"791":{"position":[[2596,4],[18438,4]]}},"keywords":{}}],["rsync",{"_index":4224,"title":{},"content":{"969":{"position":[[614,5]]}},"keywords":{}}],["rul",{"_index":743,"title":{},"content":{"54":{"position":[[66,6]]},"71":{"position":[[162,6]]},"236":{"position":[[405,4]]},"327":{"position":[[318,5]]},"580":{"position":[[162,6]]},"740":{"position":[[408,4]]},"808":{"position":[[318,5]]}},"keywords":{}}],["run",{"_index":64,"title":{"157":{"position":[[38,3]]},"287":{"position":[[7,3]]},"289":{"position":[[0,3]]},"290":{"position":[[0,3]]},"304":{"position":[[7,3]]},"306":{"position":[[0,3]]},"307":{"position":[[0,3]]},"330":{"position":[[30,3]]},"475":{"position":[[0,7]]},"490":{"position":[[0,3]]},"516":{"position":[[7,3]]},"536":{"position":[[7,3]]},"657":{"position":[[38,3]]},"750":{"position":[[7,3]]},"752":{"position":[[0,3]]},"753":{"position":[[0,3]]},"755":{"position":[[7,3]]},"757":{"position":[[0,3]]},"758":{"position":[[0,3]]},"776":{"position":[[27,7]]},"777":{"position":[[31,3]]},"790":{"position":[[0,3]]},"791":{"position":[[0,3]]},"800":{"position":[[30,3]]},"909":{"position":[[30,4]]},"950":{"position":[[31,3]]},"954":{"position":[[31,3]]},"962":{"position":[[0,3]]},"963":{"position":[[11,7]]},"965":{"position":[[0,7]]},"969":{"position":[[31,3]]},"992":{"position":[[20,3]]}},"content":{"4":{"position":[[196,7],[247,7],[299,7],[349,7],[400,7],[449,7],[942,8]]},"15":{"position":[[184,3]]},"18":{"position":[[181,3]]},"39":{"position":[[378,10],[425,9]]},"40":{"position":[[416,9]]},"53":{"position":[[10913,3]]},"90":{"position":[[1280,3],[1506,3]]},"93":{"position":[[76,4],[434,3],[554,7],[903,3]]},"98":{"position":[[51,7]]},"99":{"position":[[619,3]]},"101":{"position":[[509,7]]},"102":{"position":[[1016,3],[1074,3],[1188,3],[1256,3]]},"103":{"position":[[133,3],[475,3]]},"112":{"position":[[133,3],[1164,3]]},"113":{"position":[[321,7]]},"117":{"position":[[905,3],[970,3],[1130,3],[1363,3]]},"121":{"position":[[80,7],[780,7]]},"124":{"position":[[0,7]]},"126":{"position":[[68,3]]},"128":{"position":[[51,3],[429,3]]},"129":{"position":[[10,3]]},"130":{"position":[[64,7]]},"134":{"position":[[1032,7],[1610,7]]},"135":{"position":[[183,7]]},"136":{"position":[[528,4]]},"139":{"position":[[286,4],[1203,3],[1295,3],[1594,3]]},"147":{"position":[[565,3],[626,3],[697,3],[1072,3]]},"148":{"position":[[72,7],[96,7],[388,3],[499,3],[569,7],[615,4]]},"151":{"position":[[99,3]]},"152":{"position":[[63,3]]},"153":{"position":[[116,3]]},"155":{"position":[[104,7],[174,7]]},"157":{"position":[[881,3],[936,4]]},"160":{"position":[[459,4],[1066,7]]},"162":{"position":[[1086,7]]},"180":{"position":[[295,3]]},"181":{"position":[[579,7]]},"184":{"position":[[23,3]]},"186":{"position":[[31,7],[1162,3]]},"187":{"position":[[67,3]]},"189":{"position":[[95,3]]},"190":{"position":[[93,7],[344,3]]},"207":{"position":[[244,4]]},"208":{"position":[[352,4]]},"211":{"position":[[470,4],[648,4],[1217,4]]},"238":{"position":[[378,3]]},"239":{"position":[[223,3],[267,3]]},"240":{"position":[[124,3]]},"255":{"position":[[406,3]]},"281":{"position":[[848,3]]},"288":{"position":[[144,3]]},"289":{"position":[[285,3],[347,7],[787,3],[811,4],[906,3],[1020,4],[1059,3],[1124,3],[1212,7]]},"305":{"position":[[130,3],[190,7]]},"314":{"position":[[592,3]]},"316":{"position":[[140,3]]},"319":{"position":[[0,3]]},"320":{"position":[[53,3]]},"327":{"position":[[811,7]]},"328":{"position":[[1446,3]]},"334":{"position":[[215,3]]},"340":{"position":[[84,7],[175,7],[227,7],[281,7],[332,7],[384,7],[438,7],[489,7],[546,7],[599,7],[649,7]]},"401":{"position":[[0,3],[183,4]]},"410":{"position":[[152,3],[1326,3]]},"412":{"position":[[328,3]]},"415":{"position":[[157,3],[1356,3]]},"418":{"position":[[352,3]]},"427":{"position":[[72,8]]},"430":{"position":[[59,8]]},"435":{"position":[[119,7]]},"436":{"position":[[104,5],[309,3]]},"437":{"position":[[387,8]]},"438":{"position":[[99,3],[161,3],[220,3],[289,3],[361,8]]},"439":{"position":[[1201,7]]},"464":{"position":[[196,7],[247,7],[299,7],[349,7],[400,7],[449,7],[942,8]]},"476":{"position":[[254,3]]},"477":{"position":[[54,3]]},"479":{"position":[[44,3]]},"482":{"position":[[193,3]]},"488":{"position":[[100,3],[165,3],[298,3]]},"489":{"position":[[363,3]]},"492":{"position":[[80,4]]},"495":{"position":[[723,7]]},"496":{"position":[[16,7],[179,7],[287,8]]},"516":{"position":[[7,3]]},"536":{"position":[[7,3]]},"544":{"position":[[184,3]]},"547":{"position":[[181,3]]},"561":{"position":[[378,10],[425,9]]},"562":{"position":[[416,9]]},"596":{"position":[[133,3],[1164,3]]},"597":{"position":[[321,7]]},"601":{"position":[[905,3],[970,3],[1130,3],[1363,3]]},"604":{"position":[[1280,3],[1506,3]]},"607":{"position":[[76,4],[434,3],[554,7],[903,3]]},"612":{"position":[[51,7]]},"613":{"position":[[619,3]]},"615":{"position":[[509,7]]},"616":{"position":[[1021,3],[1079,3],[1200,3],[1268,3]]},"617":{"position":[[133,3],[475,3]]},"628":{"position":[[80,7],[780,7]]},"631":{"position":[[0,7]]},"633":{"position":[[68,3]]},"635":{"position":[[51,3],[429,3]]},"636":{"position":[[10,3]]},"637":{"position":[[64,7]]},"639":{"position":[[286,4],[1208,3],[1301,3],[1601,3]]},"647":{"position":[[565,3],[626,3],[697,3],[1072,3]]},"648":{"position":[[72,7],[96,7],[388,3],[499,3],[569,7],[615,4]]},"651":{"position":[[99,3]]},"652":{"position":[[63,3],[999,3]]},"653":{"position":[[116,3]]},"655":{"position":[[104,7],[180,7]]},"657":{"position":[[881,3],[936,4]]},"662":{"position":[[1032,7],[1610,7]]},"663":{"position":[[183,7]]},"664":{"position":[[528,4]]},"667":{"position":[[459,4],[1067,7]]},"669":{"position":[[1339,7]]},"687":{"position":[[316,3]]},"688":{"position":[[579,7]]},"702":{"position":[[244,4]]},"703":{"position":[[352,4]]},"706":{"position":[[470,4],[648,4],[1217,4]]},"712":{"position":[[23,3]]},"714":{"position":[[31,7],[1162,3]]},"715":{"position":[[67,3]]},"717":{"position":[[95,3]]},"718":{"position":[[98,7],[349,3]]},"742":{"position":[[378,3]]},"743":{"position":[[207,3],[251,3]]},"744":{"position":[[124,3],[861,3]]},"751":{"position":[[144,3]]},"752":{"position":[[285,3],[347,7],[787,3],[811,4],[906,3],[1020,4],[1059,3],[1124,3],[1212,7]]},"756":{"position":[[130,3],[190,7]]},"777":{"position":[[14,3],[447,3],[819,3],[1170,3],[1322,3]]},"779":{"position":[[137,3]]},"786":{"position":[[592,3]]},"788":{"position":[[850,3]]},"791":{"position":[[371,3],[14904,3],[14938,7],[30453,3],[30487,7]]},"793":{"position":[[140,3]]},"796":{"position":[[0,3]]},"797":{"position":[[53,3]]},"804":{"position":[[215,3]]},"809":{"position":[[1466,3]]},"814":{"position":[[86,7],[177,7],[231,7],[287,7],[340,7],[393,7],[447,7],[506,7],[561,7],[613,7]]},"817":{"position":[[2225,4]]},"863":{"position":[[152,3],[1326,3]]},"865":{"position":[[328,3]]},"868":{"position":[[157,3],[1356,3]]},"871":{"position":[[352,3]]},"890":{"position":[[0,3],[183,4]]},"901":{"position":[[72,8]]},"904":{"position":[[59,8]]},"908":{"position":[[64,3],[175,3]]},"909":{"position":[[22,3],[45,4],[110,3],[320,3]]},"910":{"position":[[32,4],[192,4]]},"911":{"position":[[38,4],[258,4]]},"912":{"position":[[31,4],[262,4]]},"913":{"position":[[37,4],[375,4]]},"919":{"position":[[119,7]]},"920":{"position":[[104,5],[309,3]]},"921":{"position":[[387,8]]},"922":{"position":[[99,3],[161,3],[220,3],[289,3],[361,8]]},"923":{"position":[[138,3]]},"934":{"position":[[121,4]]},"942":{"position":[[44,3]]},"945":{"position":[[193,3]]},"950":{"position":[[14,3],[518,3],[744,3],[767,3],[1063,3],[1167,3],[1348,3],[1462,3],[1506,3],[1556,3]]},"952":{"position":[[30,3]]},"954":{"position":[[14,3],[460,3],[654,3],[1088,3],[1200,3],[1269,3],[1301,3],[1486,3],[1642,3],[1746,3],[1860,3],[1904,3],[1954,3]]},"957":{"position":[[32,3]]},"960":{"position":[[367,7]]},"961":{"position":[[0,3],[49,4],[191,3],[265,4],[407,3],[470,3],[537,3]]},"963":{"position":[[20,3],[131,7],[412,4],[505,3]]},"965":{"position":[[75,3],[112,3],[132,4],[229,3],[9686,3],[9706,4],[9803,3],[15980,3]]},"967":{"position":[[5,7],[235,3],[473,3]]},"969":{"position":[[14,3],[441,3],[711,3],[833,3],[924,3],[1079,3],[1279,3],[1383,3],[1497,3],[1541,3],[1591,3]]},"972":{"position":[[25,3]]},"975":{"position":[[14,7]]},"979":{"position":[[672,3]]},"980":{"position":[[337,3],[1234,7],[1435,7],[1632,7]]},"981":{"position":[[231,3]]},"985":{"position":[[334,3],[1094,7],[1295,7],[1492,7]]},"986":{"position":[[231,3]]},"990":{"position":[[274,3],[1389,7],[1591,7],[1793,7],[1995,7],[2200,7]]},"991":{"position":[[309,3]]},"992":{"position":[[298,3]]}},"keywords":{}}],["run.sh",{"_index":3396,"title":{},"content":{"791":{"position":[[1503,8]]}},"keywords":{}}],["run_config=conf",{"_index":4178,"title":{},"content":{"967":{"position":[[340,18]]}},"keywords":{}}],["run_fronted_e2e.sh",{"_index":2376,"title":{},"content":{"289":{"position":[[954,20]]},"752":{"position":[[954,20]]}},"keywords":{}}],["run_frontend_e2e.sh",{"_index":2367,"title":{},"content":{"289":{"position":[[197,19],[791,19]]},"752":{"position":[[197,19],[791,19]]}},"keywords":{}}],["runconf",{"_index":3939,"title":{},"content":{"964":{"position":[[269,9]]}},"keywords":{}}],["runipi",{"_index":1716,"title":{},"content":{"147":{"position":[[906,7]]},"647":{"position":[[906,7]]}},"keywords":{}}],["runlevel",{"_index":3687,"title":{},"content":{"791":{"position":[[14998,8],[15547,8],[16242,8],[17037,8],[30547,8],[31096,8],[31891,8]]}},"keywords":{}}],["runnabl",{"_index":1647,"title":{},"content":{"139":{"position":[[377,8],[1350,8]]},"639":{"position":[[377,8],[1356,8]]}},"keywords":{}}],["runningdistributedthchs30kaldijob",{"_index":3343,"title":{"787":{"position":[[0,34]]}},"content":{},"keywords":{}}],["runningtime\":\"2021",{"_index":2789,"title":{},"content":{"371":{"position":[[383,19]]},"845":{"position":[[383,19]]}},"keywords":{}}],["runningtime\":nul",{"_index":2752,"title":{},"content":{"366":{"position":[[845,19]]},"369":{"position":[[965,19]]},"371":{"position":[[1446,19]]},"374":{"position":[[382,19]]},"377":{"position":[[876,19]]},"380":{"position":[[357,19]]},"421":{"position":[[535,19]]},"840":{"position":[[845,19]]},"843":{"position":[[965,19]]},"845":{"position":[[1446,19]]},"848":{"position":[[382,19]]},"851":{"position":[[876,19]]},"854":{"position":[[357,19]]},"874":{"position":[[535,19]]}},"keywords":{}}],["runpython",{"_index":3918,"title":{},"content":{"961":{"position":[[772,9]]}},"keywords":{}}],["runtim",{"_index":1752,"title":{"477":{"position":[[15,7]]},"974":{"position":[[5,7]]}},"content":{"152":{"position":[[943,8],[1301,7]]},"153":{"position":[[89,8]]},"162":{"position":[[1146,8]]},"190":{"position":[[193,7]]},"303":{"position":[[286,7],[364,7]]},"477":{"position":[[5,7]]},"652":{"position":[[988,7],[1223,8],[1581,7]]},"653":{"position":[[89,8]]},"669":{"position":[[1399,8]]},"718":{"position":[[198,7]]},"771":{"position":[[286,7],[364,7]]},"963":{"position":[[680,7]]},"981":{"position":[[1673,7],[1725,7]]}},"keywords":{}}],["runtime1",{"_index":3262,"title":{},"content":{"669":{"position":[[67,10]]}},"keywords":{}}],["runtime2",{"_index":3263,"title":{},"content":{"669":{"position":[[286,10]]}},"keywords":{}}],["runtimekubernet",{"_index":2539,"title":{},"content":{"327":{"position":[[959,17]]}},"keywords":{}}],["s",{"_index":2283,"title":{},"content":{"268":{"position":[[243,1]]},"777":{"position":[[782,1],[1488,1]]},"950":{"position":[[1514,1]]},"954":{"position":[[1912,1]]},"967":{"position":[[2126,1]]},"969":{"position":[[1549,1]]}},"keywords":{}}],["s.strip",{"_index":4219,"title":{},"content":{"967":{"position":[[2111,10]]}},"keywords":{}}],["s3",{"_index":1633,"title":{},"content":{"134":{"position":[[2401,3]]},"140":{"position":[[303,2],[868,2]]},"147":{"position":[[39,4]]},"148":{"position":[[678,3]]},"365":{"position":[[1212,2]]},"640":{"position":[[303,2],[868,2]]},"647":{"position":[[39,4]]},"648":{"position":[[678,3]]},"662":{"position":[[2401,3]]},"839":{"position":[[1212,2]]}},"keywords":{}}],["s3/hdf",{"_index":1811,"title":{},"content":{"160":{"position":[[516,8]]},"667":{"position":[[516,8],[1382,8]]}},"keywords":{}}],["s3/hdfs.us",{"_index":1820,"title":{},"content":{"160":{"position":[[1381,13]]}},"keywords":{}}],["s3/hdfs/abf",{"_index":1616,"title":{},"content":{"134":{"position":[[856,13]]},"662":{"position":[[856,13]]}},"keywords":{}}],["s3/nf",{"_index":1727,"title":{},"content":{"148":{"position":[[320,7]]},"648":{"position":[[320,7]]}},"keywords":{}}],["s3://.../input",{"_index":1719,"title":{},"content":{"147":{"position":[[1411,17]]},"647":{"position":[[1411,17]]}},"keywords":{}}],["s3://.../output",{"_index":1720,"title":{},"content":{"147":{"position":[[1437,17]]},"647":{"position":[[1437,17]]}},"keywords":{}}],["s3://bucket/folder/notebook",{"_index":1714,"title":{},"content":{"147":{"position":[[837,28]]},"647":{"position":[[837,28]]}},"keywords":{}}],["s3://bucket/train",{"_index":1668,"title":{},"content":{"140":{"position":[[311,21]]},"147":{"position":[[339,21]]},"640":{"position":[[311,21]]},"647":{"position":[[339,21]]}},"keywords":{}}],["s3://submarine/experi",{"_index":357,"title":{},"content":{"31":{"position":[[494,26],[857,26],[1220,26],[1584,26]]},"32":{"position":[[502,26]]}},"keywords":{}}],["s\\t%s\\t\\t%s\\n",{"_index":3130,"title":{},"content":{"484":{"position":[[990,16]]},"947":{"position":[[990,16]]}},"keywords":{}}],["sa",{"_index":2476,"title":{},"content":{"319":{"position":[[126,2],[179,2],[251,2]]},"320":{"position":[[147,2],[219,2]]},"796":{"position":[[126,2],[179,2],[251,2]]},"797":{"position":[[147,2],[219,2]]}},"keywords":{}}],["saa",{"_index":1230,"title":{},"content":{"93":{"position":[[838,4]]},"607":{"position":[[838,4]]}},"keywords":{}}],["sam",{"_index":1111,"title":{},"content":{"90":{"position":[[958,4],[1130,4]]},"99":{"position":[[210,4]]},"101":{"position":[[470,4],[491,4]]},"102":{"position":[[1892,4]]},"134":{"position":[[1137,4],[1199,4]]},"148":{"position":[[805,4]]},"155":{"position":[[289,4]]},"436":{"position":[[284,4]]},"492":{"position":[[1083,4]]},"604":{"position":[[958,4],[1130,4]]},"613":{"position":[[210,4]]},"615":{"position":[[470,4],[491,4]]},"616":{"position":[[1904,4]]},"648":{"position":[[805,4]]},"655":{"position":[[296,4]]},"662":{"position":[[1137,4],[1199,4]]},"788":{"position":[[829,4],[962,4]]},"920":{"position":[[284,4]]},"965":{"position":[[387,4],[9884,4]]}},"keywords":{}}],["sampl",{"_index":1170,"title":{},"content":{"91":{"position":[[210,9]]},"117":{"position":[[626,6]]},"129":{"position":[[445,6]]},"330":{"position":[[183,6]]},"601":{"position":[[626,6]]},"605":{"position":[[210,9]]},"636":{"position":[[445,6]]},"791":{"position":[[1880,6],[17714,6],[32600,6]]},"800":{"position":[[183,6]]},"991":{"position":[[24,6]]}},"keywords":{}}],["sasl2",{"_index":3450,"title":{},"content":{"791":{"position":[[2680,5],[18522,5]]}},"keywords":{}}],["sat",{"_index":2129,"title":{},"content":{"252":{"position":[[2621,3]]}},"keywords":{}}],["sav",{"_index":1178,"title":{},"content":{"91":{"position":[[394,5],[420,5]]},"103":{"position":[[358,4]]},"104":{"position":[[152,5],[206,6],[311,6]]},"112":{"position":[[1047,4]]},"136":{"position":[[188,6]]},"156":{"position":[[48,4]]},"210":{"position":[[215,4]]},"279":{"position":[[388,4]]},"474":{"position":[[0,4]]},"502":{"position":[[3660,5],[3666,4],[3714,4]]},"522":{"position":[[1687,5]]},"596":{"position":[[1047,4]]},"605":{"position":[[394,5],[420,5]]},"617":{"position":[[358,4]]},"618":{"position":[[153,5],[207,6],[312,6]]},"656":{"position":[[48,4]]},"664":{"position":[[188,6]]},"705":{"position":[[215,4]]},"914":{"position":[[0,4]]},"964":{"position":[[838,5],[1149,5],[1713,4]]}},"keywords":{}}],["save_model_dir",{"_index":1348,"title":{},"content":{"102":{"position":[[1650,17]]},"157":{"position":[[582,17]]},"616":{"position":[[1662,17]]},"657":{"position":[[582,17]]}},"keywords":{}}],["sc",{"_index":2103,"title":{},"content":{"252":{"position":[[552,2],[797,2],[1428,2],[1667,2]]},"260":{"position":[[2631,4]]},"261":{"position":[[75,4]]}},"keywords":{}}],["scal",{"_index":1197,"title":{},"content":{"92":{"position":[[347,5],[387,6]]},"152":{"position":[[1410,5]]},"343":{"position":[[487,7]]},"606":{"position":[[347,5],[387,6]]},"652":{"position":[[1690,5]]},"817":{"position":[[505,7]]}},"keywords":{}}],["scala",{"_index":2907,"title":{},"content":{"433":{"position":[[16,6]]},"502":{"position":[[289,6]]},"927":{"position":[[16,6]]}},"keywords":{}}],["scalabl",{"_index":1874,"title":{},"content":{"184":{"position":[[395,12]]},"712":{"position":[[395,12]]}},"keywords":{}}],["scale(imag",{"_index":2646,"title":{},"content":{"343":{"position":[[536,12]]},"817":{"position":[[554,12]]}},"keywords":{}}],["scan",{"_index":938,"title":{},"content":{"74":{"position":[[493,4]]},"583":{"position":[[493,4]]}},"keywords":{}}],["schedul",{"_index":1756,"title":{},"content":{"152":{"position":[[1382,10]]},"184":{"position":[[546,10]]},"186":{"position":[[247,11],[328,10]]},"190":{"position":[[407,10]]},"197":{"position":[[154,11],[531,11]]},"652":{"position":[[1662,10]]},"692":{"position":[[154,11],[531,11]]},"712":{"position":[[551,10]]},"714":{"position":[[247,11],[328,10]]},"718":{"position":[[412,10]]},"967":{"position":[[514,9]]},"990":{"position":[[2087,10],[2263,9],[3030,10]]}},"keywords":{}}],["scheduler_launch_cmd",{"_index":4345,"title":{},"content":{"991":{"position":[[475,20]]}},"keywords":{}}],["scheduler_launch_cmd=\"myvenv.zip/venv/bin/python",{"_index":4330,"title":{},"content":{"990":{"position":[[782,48]]}},"keywords":{}}],["scheduler_resourc",{"_index":4329,"title":{},"content":{"990":{"position":[[739,19]]},"991":{"position":[[432,19]]}},"keywords":{}}],["scientist",{"_index":1099,"title":{"94":{"position":[[13,9]]},"608":{"position":[[13,9]]}},"content":{"90":{"position":[[659,10],[1802,9]]},"91":{"position":[[561,10]]},"92":{"position":[[94,11]]},"94":{"position":[[46,10],[188,10]]},"96":{"position":[[37,9],[309,11]]},"99":{"position":[[57,10],[152,10]]},"102":{"position":[[1061,9]]},"114":{"position":[[89,10]]},"134":{"position":[[1833,12]]},"156":{"position":[[58,10]]},"161":{"position":[[43,10]]},"598":{"position":[[89,10]]},"604":{"position":[[659,10],[1802,9]]},"605":{"position":[[561,10]]},"606":{"position":[[94,11]]},"608":{"position":[[46,10],[188,10]]},"610":{"position":[[37,9],[309,11]]},"613":{"position":[[57,10],[152,10]]},"616":{"position":[[1066,9]]},"656":{"position":[[58,10]]},"662":{"position":[[1833,12]]},"668":{"position":[[43,10]]}},"keywords":{}}],["scientist/data",{"_index":1063,"title":{},"content":{"89":{"position":[[35,14]]},"603":{"position":[[35,14]]}},"keywords":{}}],["scipi",{"_index":3838,"title":{},"content":{"950":{"position":[[195,6],[893,5]]},"954":{"position":[[199,6],[916,5]]},"969":{"position":[[205,6],[1025,5]]}},"keywords":{}}],["scop",{"_index":616,"title":{"137":{"position":[[3,5],[18,5]]},"173":{"position":[[50,5]]},"665":{"position":[[3,5],[18,5]]},"680":{"position":[[50,5]]}},"content":{"53":{"position":[[5040,5]]},"82":{"position":[[390,6]]},"108":{"position":[[268,6]]},"160":{"position":[[1616,5]]},"173":{"position":[[35,5]]},"589":{"position":[[390,6]]},"622":{"position":[[268,6]]},"667":{"position":[[1618,5]]},"680":{"position":[[35,5]]}},"keywords":{}}],["scor",{"_index":1184,"title":{},"content":{"91":{"position":[[532,8]]},"102":{"position":[[233,8]]},"104":{"position":[[262,7]]},"605":{"position":[[532,8]]},"616":{"position":[[233,8]]},"618":{"position":[[263,7]]}},"keywords":{}}],["scratch",{"_index":1253,"title":{},"content":{"94":{"position":[[636,7]]},"608":{"position":[[636,7]]}},"keywords":{}}],["screenshot",{"_index":2419,"title":{},"content":{"311":{"position":[[27,10]]},"321":{"position":[[159,11]]},"783":{"position":[[27,10]]},"798":{"position":[[159,11]]}},"keywords":{}}],["script",{"_index":959,"title":{"343":{"position":[[18,6]]},"817":{"position":[[18,6]]},"965":{"position":[[8,6]]}},"content":{"76":{"position":[[170,6]]},"104":{"position":[[346,7]]},"114":{"position":[[542,7]]},"140":{"position":[[241,9],[535,8]]},"152":{"position":[[80,7]]},"289":{"position":[[265,6],[843,6]]},"342":{"position":[[63,7],[91,6]]},"343":{"position":[[31,6]]},"436":{"position":[[137,6]]},"439":{"position":[[1213,7]]},"484":{"position":[[366,7],[428,6],[1088,6]]},"491":{"position":[[77,6],[135,6]]},"585":{"position":[[170,6]]},"598":{"position":[[542,7]]},"618":{"position":[[347,7]]},"640":{"position":[[241,9],[535,8]]},"652":{"position":[[80,7]]},"752":{"position":[[265,6],[843,6]]},"816":{"position":[[63,7],[91,6]]},"817":{"position":[[31,6]]},"920":{"position":[[137,6]]},"947":{"position":[[366,7],[428,6],[1088,6]]},"960":{"position":[[120,7],[132,6]]}},"keywords":{}}],["script/dep",{"_index":1327,"title":{},"content":{"102":{"position":[[949,19]]},"616":{"position":[[954,19]]}},"keywords":{}}],["scripts.allow",{"_index":1329,"title":{},"content":{"102":{"position":[[1026,13]]},"616":{"position":[[1031,13]]}},"keywords":{}}],["sdk",{"_index":1389,"title":{"129":{"position":[[10,3]]},"145":{"position":[[11,3]]},"299":{"position":[[15,3]]},"329":{"position":[[17,3]]},"330":{"position":[[44,3]]},"331":{"position":[[18,3]]},"332":{"position":[[8,3]]},"333":{"position":[[8,3]]},"432":{"position":[[10,3]]},"434":{"position":[[7,3]]},"439":{"position":[[16,3]]},"636":{"position":[[10,3]]},"645":{"position":[[11,3]]},"766":{"position":[[15,3]]},"799":{"position":[[17,3]]},"800":{"position":[[44,3]]},"801":{"position":[[18,3]]},"802":{"position":[[8,3]]},"803":{"position":[[8,3]]},"918":{"position":[[7,3]]},"923":{"position":[[16,3]]},"926":{"position":[[10,3]]}},"content":{"105":{"position":[[10,3]]},"110":{"position":[[103,3],[1363,3]]},"129":{"position":[[97,4],[112,3],[324,3],[375,3],[542,5]]},"161":{"position":[[232,3],[402,3]]},"162":{"position":[[675,3]]},"299":{"position":[[15,3]]},"324":{"position":[[494,4]]},"328":{"position":[[57,3]]},"330":{"position":[[10,3]]},"332":{"position":[[47,4]]},"334":{"position":[[167,3],[189,3]]},"335":{"position":[[289,3]]},"346":{"position":[[45,3]]},"436":{"position":[[86,3]]},"439":{"position":[[895,3],[1149,4]]},"440":{"position":[[119,3]]},"619":{"position":[[10,3]]},"624":{"position":[[103,3],[1368,3]]},"636":{"position":[[97,4],[112,3],[324,3],[375,3],[542,5]]},"668":{"position":[[232,3],[402,3]]},"669":{"position":[[849,3]]},"766":{"position":[[15,3]]},"800":{"position":[[10,3]]},"802":{"position":[[47,4]]},"804":{"position":[[167,3],[189,3]]},"805":{"position":[[289,3]]},"809":{"position":[[57,3]]},"820":{"position":[[47,3]]},"920":{"position":[[86,3]]},"923":{"position":[[208,4]]},"924":{"position":[[119,3]]}},"keywords":{}}],["sdk.sh",{"_index":2958,"title":{},"content":{"439":{"position":[[1112,6]]}},"keywords":{}}],["sdk.shto",{"_index":3790,"title":{},"content":{"923":{"position":[[172,8]]}},"keywords":{}}],["sdk/pysubmarin",{"_index":2594,"title":{},"content":{"333":{"position":[[285,15]]},"435":{"position":[[644,15]]},"438":{"position":[[140,15]]},"441":{"position":[[157,15]]},"803":{"position":[[285,15]]},"919":{"position":[[641,15]]},"922":{"position":[[140,15]]},"925":{"position":[[157,15]]}},"keywords":{}}],["sdk/pysubmarine/client/api_client.pi",{"_index":2959,"title":{},"content":{"439":{"position":[[1266,36]]}},"keywords":{}}],["sdk/pysubmarine/github",{"_index":2914,"title":{},"content":{"435":{"position":[[519,22]]},"919":{"position":[[504,22]]}},"keywords":{}}],["sdk/pysubmarine/submarine.verifi",{"_index":2930,"title":{},"content":{"437":{"position":[[306,32]]},"921":{"position":[[306,32]]}},"keywords":{}}],["search",{"_index":1023,"title":{},"content":{"81":{"position":[[263,6]]},"262":{"position":[[137,10]]},"502":{"position":[[454,9],[1934,7]]}},"keywords":{}}],["sec",{"_index":2098,"title":{},"content":{"252":{"position":[[481,3],[726,3],[1357,3],[1596,3]]},"965":{"position":[[15164,4],[15229,4],[15962,4]]}},"keywords":{}}],["second",{"_index":2904,"title":{},"content":{"431":{"position":[[116,7]]},"905":{"position":[[116,7]]}},"keywords":{}}],["secret",{"_index":1842,"title":{},"content":{"175":{"position":[[174,8]]},"252":{"position":[[456,6]]},"260":{"position":[[2311,6],[2577,6]]},"268":{"position":[[388,6]]},"320":{"position":[[104,7],[172,6],[196,6]]},"682":{"position":[[174,8]]},"797":{"position":[[104,7],[172,6],[196,6]]}},"keywords":{}}],["section",{"_index":491,"title":{},"content":{"53":{"position":[[957,8],[5604,7],[5690,7],[8612,7]]},"118":{"position":[[763,7]]},"130":{"position":[[454,7]]},"151":{"position":[[135,9]]},"502":{"position":[[138,9]]},"625":{"position":[[764,7]]},"637":{"position":[[454,7]]},"651":{"position":[[135,9]]}},"keywords":{}}],["secur",{"_index":1400,"title":{"107":{"position":[[0,8]]},"130":{"position":[[0,8]]},"174":{"position":[[0,8]]},"621":{"position":[[0,8]]},"637":{"position":[[0,8]]},"681":{"position":[[0,8]]},"767":{"position":[[15,8]]},"934":{"position":[[25,8]]},"935":{"position":[[16,8]]}},"content":{"107":{"position":[[201,9],[316,9],[369,8],[405,9]]},"130":{"position":[[16,8]]},"621":{"position":[[201,9],[317,9],[370,8],[406,9]]},"637":{"position":[[16,8]]},"934":{"position":[[16,8],[203,8],[245,8]]},"936":{"position":[[68,8]]},"938":{"position":[[26,8]]}},"keywords":{}}],["securit",{"_index":1840,"title":{},"content":{"175":{"position":[[129,11]]},"682":{"position":[[129,11]]}},"keywords":{}}],["security.xml",{"_index":3801,"title":{},"content":{"939":{"position":[[48,12]]}},"keywords":{}}],["security/gov",{"_index":1257,"title":{"95":{"position":[[25,19]]},"609":{"position":[[25,19]]}},"content":{},"keywords":{}}],["see",{"_index":51,"title":{},"content":{"4":{"position":[[68,3]]},"53":{"position":[[5351,3]]},"76":{"position":[[195,3]]},"82":{"position":[[638,3]]},"83":{"position":[[463,3]]},"84":{"position":[[0,3]]},"87":{"position":[[55,3]]},"90":{"position":[[852,3]]},"94":{"position":[[37,3]]},"106":{"position":[[19,4]]},"112":{"position":[[757,4]]},"114":{"position":[[618,4]]},"117":{"position":[[823,3]]},"160":{"position":[[916,4]]},"182":{"position":[[14,3]]},"239":{"position":[[410,3]]},"296":{"position":[[60,3]]},"327":{"position":[[191,3],[1119,3]]},"346":{"position":[[75,3],[163,3]]},"365":{"position":[[862,3]]},"388":{"position":[[378,3]]},"401":{"position":[[421,3]]},"409":{"position":[[1075,3]]},"438":{"position":[[79,4]]},"464":{"position":[[68,3]]},"585":{"position":[[195,3]]},"589":{"position":[[638,3]]},"591":{"position":[[0,3]]},"594":{"position":[[55,3]]},"596":{"position":[[757,4]]},"598":{"position":[[618,4]]},"601":{"position":[[823,3]]},"604":{"position":[[852,3]]},"608":{"position":[[37,3]]},"620":{"position":[[19,4]]},"667":{"position":[[916,4]]},"689":{"position":[[14,3]]},"743":{"position":[[394,3]]},"763":{"position":[[60,3]]},"791":{"position":[[1823,3],[14851,3],[30400,3]]},"808":{"position":[[191,3],[770,3]]},"820":{"position":[[77,3]]},"839":{"position":[[862,3]]},"862":{"position":[[1075,3]]},"877":{"position":[[378,3]]},"890":{"position":[[421,3]]},"922":{"position":[[79,4]]},"960":{"position":[[405,3]]},"963":{"position":[[273,3]]},"966":{"position":[[288,3]]},"967":{"position":[[58,3]]},"980":{"position":[[989,3]]},"985":{"position":[[849,3]]},"990":{"position":[[1143,3]]}},"keywords":{}}],["select",{"_index":1168,"title":{},"content":{"91":{"position":[[194,6]]},"236":{"position":[[384,6]]},"260":{"position":[[529,6],[682,10],[1359,8]]},"261":{"position":[[338,8]]},"279":{"position":[[174,6]]},"284":{"position":[[178,6]]},"320":{"position":[[114,6]]},"346":{"position":[[203,6]]},"489":{"position":[[327,6]]},"502":{"position":[[1716,6],[1749,9]]},"605":{"position":[[194,6]]},"740":{"position":[[387,6]]},"791":{"position":[[6968,9],[7739,9],[7886,9],[8057,9],[8231,9],[8379,9],[8547,9],[8701,9],[8907,9],[9113,9],[9294,9],[9475,9],[9651,9],[9785,9],[9941,9],[10121,9],[10270,9],[10404,9],[10557,9],[10726,9],[10893,9],[11062,9],[11192,9],[11355,9],[11524,9],[11700,9],[11895,9],[12075,9],[12252,9],[12409,9],[12556,9],[12745,9],[12923,9],[22686,9],[23457,9],[23604,9],[23775,9],[23949,9],[24097,9],[24265,9],[24419,9],[24625,9],[24831,9],[25012,9],[25193,9],[25369,9],[25503,9],[25659,9],[25839,9],[25988,9],[26122,9],[26275,9],[26444,9],[26611,9],[26780,9],[26910,9],[27073,9],[27249,9],[27444,9],[27624,9],[27801,9],[27958,9],[28105,9],[28294,9],[28472,9]]},"797":{"position":[[114,6]]},"820":{"position":[[174,6]]}},"keywords":{}}],["self",{"_index":3124,"title":{},"content":{"484":{"position":[[827,4],[843,4],[863,6],[895,5]]},"947":{"position":[[827,4],[843,4],[863,6],[895,5]]}},"keywords":{}}],["sen",{"_index":1232,"title":{},"content":{"93":{"position":[[961,6]]},"96":{"position":[[116,5]]},"607":{"position":[[961,6]]},"610":{"position":[[116,5]]}},"keywords":{}}],["send",{"_index":996,"title":{"286":{"position":[[5,4]]}},"content":{"79":{"position":[[1121,4],[1284,4],[2026,4]]},"86":{"position":[[374,4]]},"201":{"position":[[106,4],[318,5]]},"211":{"position":[[186,4],[548,7],[677,5]]},"261":{"position":[[200,4],[276,4]]},"280":{"position":[[36,4]]},"696":{"position":[[106,4],[318,5]]},"706":{"position":[[186,4],[548,7],[677,5]]}},"keywords":{}}],["sent",{"_index":678,"title":{},"content":{"53":{"position":[[7541,4]]},"79":{"position":[[1234,5],[1515,4],[1554,4]]},"239":{"position":[[294,4]]},"286":{"position":[[99,4]]},"743":{"position":[[278,4]]}},"keywords":{}}],["separ",{"_index":644,"title":{},"content":{"53":{"position":[[6174,10]]},"93":{"position":[[672,8],[878,8]]},"98":{"position":[[603,8]]},"116":{"position":[[349,11]]},"152":{"position":[[743,8]]},"158":{"position":[[2950,10]]},"201":{"position":[[479,8]]},"205":{"position":[[180,8]]},"210":{"position":[[263,8]]},"600":{"position":[[349,11]]},"607":{"position":[[672,8],[878,8]]},"612":{"position":[[603,8]]},"652":{"position":[[749,8]]},"658":{"position":[[2950,10]]},"696":{"position":[[479,8]]},"700":{"position":[[180,8]]},"705":{"position":[[263,8]]},"791":{"position":[[1676,11]]}},"keywords":{}}],["seri",{"_index":1595,"title":{},"content":{"133":{"position":[[66,6],[180,6]]},"279":{"position":[[254,6]]},"284":{"position":[[303,6]]},"661":{"position":[[66,6],[180,6]]}},"keywords":{}}],["serv",{"_index":74,"title":{"30":{"position":[[0,5]]},"42":{"position":[[0,5]]},"43":{"position":[[15,5]]},"44":{"position":[[28,5]]},"45":{"position":[[0,5]]},"125":{"position":[[10,6]]},"149":{"position":[[44,6]]},"155":{"position":[[52,7]]},"158":{"position":[[43,6]]},"159":{"position":[[10,6]]},"161":{"position":[[10,6]]},"163":{"position":[[10,6]]},"168":{"position":[[6,7]]},"195":{"position":[[8,6]]},"234":{"position":[[8,6]]},"261":{"position":[[43,6]]},"300":{"position":[[15,6]]},"314":{"position":[[20,6]]},"347":{"position":[[3,5]]},"632":{"position":[[10,6]]},"649":{"position":[[44,6]]},"655":{"position":[[52,7]]},"658":{"position":[[43,6]]},"666":{"position":[[10,6]]},"668":{"position":[[10,6]]},"670":{"position":[[10,6]]},"675":{"position":[[6,7]]},"690":{"position":[[8,6]]},"738":{"position":[[8,6]]},"768":{"position":[[15,6]]},"786":{"position":[[20,6]]},"821":{"position":[[3,5]]}},"content":{"4":{"position":[[322,6]]},"43":{"position":[[332,5]]},"44":{"position":[[272,5]]},"91":{"position":[[513,7]]},"104":{"position":[[243,7],[290,8],[338,7],[390,5],[480,7]]},"110":{"position":[[227,6],[381,9],[1614,6],[1654,6]]},"115":{"position":[[1234,6]]},"117":{"position":[[750,6],[801,7]]},"118":{"position":[[571,7],[593,6]]},"125":{"position":[[37,6],[655,6]]},"127":{"position":[[207,7]]},"128":{"position":[[73,8]]},"129":{"position":[[164,6],[558,6],[614,7]]},"132":{"position":[[91,8],[369,9],[764,7],[1008,7],[1640,7],[1788,8],[2024,7]]},"134":{"position":[[41,8],[1092,7],[1347,7],[1404,7],[1746,6]]},"135":{"position":[[110,8]]},"149":{"position":[[43,6]]},"152":{"position":[[538,7],[769,6],[1333,8],[1495,6]]},"155":{"position":[[34,7]]},"158":{"position":[[93,7],[153,6],[514,6],[1005,7],[1030,7],[2510,6]]},"160":{"position":[[27,6],[662,6],[820,6]]},"161":{"position":[[10,6],[175,6],[270,7],[415,6]]},"162":{"position":[[784,6],[885,6],[1001,6]]},"163":{"position":[[34,6],[391,7]]},"173":{"position":[[110,7]]},"177":{"position":[[362,6]]},"180":{"position":[[309,6]]},"186":{"position":[[14,6],[82,6],[273,6],[531,6],[743,6]]},"189":{"position":[[113,7]]},"190":{"position":[[173,7],[267,7]]},"197":{"position":[[72,6],[93,7],[111,6],[239,6],[721,6],[742,6]]},"199":{"position":[[34,6],[170,7]]},"201":{"position":[[37,7],[261,6]]},"203":{"position":[[58,7],[198,7],[233,7]]},"205":{"position":[[38,6],[242,6]]},"206":{"position":[[188,6],[226,6]]},"207":{"position":[[267,7],[488,6]]},"208":{"position":[[375,6],[469,6],[679,6],[841,6]]},"209":{"position":[[181,6],[223,6],[277,6],[329,6]]},"211":{"position":[[51,6],[130,6],[272,6],[352,6],[493,6],[666,7],[975,7],[1144,6],[1239,7],[1294,6]]},"212":{"position":[[76,6],[157,6],[248,7]]},"213":{"position":[[80,8],[124,7],[281,7]]},"215":{"position":[[62,7]]},"219":{"position":[[380,6]]},"238":{"position":[[175,6],[245,6],[519,6],[632,6]]},"239":{"position":[[256,6]]},"246":{"position":[[40,6],[139,7]]},"252":{"position":[[2204,6],[2262,6]]},"253":{"position":[[367,6]]},"255":{"position":[[81,6]]},"265":{"position":[[102,8],[374,9],[414,8],[519,9],[529,8],[633,9],[643,10]]},"278":{"position":[[459,7]]},"300":{"position":[[13,7]]},"302":{"position":[[10,7],[39,6],[65,6]]},"306":{"position":[[154,6],[313,6]]},"313":{"position":[[698,7],[739,6],[831,6],[880,6],[919,6],[1174,7]]},"314":{"position":[[10,6],[305,6],[973,7],[1134,7]]},"324":{"position":[[305,6]]},"327":{"position":[[150,7],[244,7],[289,7],[1141,7],[1181,6]]},"328":{"position":[[89,6],[1622,7]]},"339":{"position":[[278,7]]},"340":{"position":[[462,6]]},"423":{"position":[[22,6]]},"438":{"position":[[351,6]]},"439":{"position":[[100,7],[708,7]]},"440":{"position":[[172,6]]},"464":{"position":[[322,6]]},"471":{"position":[[222,7]]},"488":{"position":[[384,6]]},"490":{"position":[[84,7]]},"492":{"position":[[130,6],[197,6],[273,9],[323,6]]},"496":{"position":[[324,6],[447,6],[560,7]]},"599":{"position":[[1234,6]]},"601":{"position":[[750,6],[801,7]]},"605":{"position":[[513,7]]},"618":{"position":[[244,7],[291,8],[339,7],[391,5],[481,7]]},"624":{"position":[[227,6],[381,9],[1619,6],[1659,6]]},"625":{"position":[[572,7],[594,6]]},"632":{"position":[[37,6],[655,6]]},"634":{"position":[[207,7]]},"635":{"position":[[73,8]]},"636":{"position":[[164,6],[558,6],[614,7]]},"649":{"position":[[43,6]]},"652":{"position":[[544,7],[775,6],[1613,8],[1775,6]]},"655":{"position":[[34,7]]},"658":{"position":[[93,7],[153,6],[514,6],[1005,7],[1030,7],[2510,6]]},"660":{"position":[[91,8],[369,9],[764,7],[1008,7],[1640,7],[1788,8],[2024,7]]},"662":{"position":[[41,8],[1092,7],[1347,7],[1404,7],[1746,6]]},"663":{"position":[[110,8]]},"667":{"position":[[27,6],[662,6],[820,6]]},"668":{"position":[[10,6],[175,6],[270,7],[415,6]]},"669":{"position":[[1013,6],[1138,6],[1254,6]]},"670":{"position":[[34,6],[391,7]]},"680":{"position":[[110,7]]},"684":{"position":[[362,6]]},"687":{"position":[[330,6]]},"692":{"position":[[72,6],[93,7],[111,6],[239,6],[721,6],[742,6]]},"694":{"position":[[34,6],[170,7]]},"696":{"position":[[37,7],[261,6]]},"698":{"position":[[58,7],[198,7],[233,7]]},"700":{"position":[[38,6],[242,6]]},"701":{"position":[[188,6],[226,6]]},"702":{"position":[[267,7],[488,6]]},"703":{"position":[[375,6],[469,6],[679,6],[841,6]]},"704":{"position":[[181,6],[223,6],[277,6],[329,6]]},"706":{"position":[[51,6],[130,6],[272,6],[352,6],[493,6],[666,7],[975,7],[1144,6],[1239,7],[1294,6]]},"707":{"position":[[76,6],[157,6],[248,7]]},"708":{"position":[[80,8],[124,7],[281,7]]},"710":{"position":[[62,7]]},"714":{"position":[[14,6],[82,6],[273,6],[531,6],[743,6]]},"717":{"position":[[113,7]]},"718":{"position":[[178,7],[272,7]]},"733":{"position":[[380,6]]},"742":{"position":[[175,6],[245,6],[515,6],[657,6]]},"743":{"position":[[240,6]]},"749":{"position":[[40,6],[139,7]]},"757":{"position":[[154,6],[313,6]]},"768":{"position":[[13,7]]},"770":{"position":[[10,7],[39,6],[65,6]]},"785":{"position":[[698,7],[739,6],[831,6],[880,6],[919,6],[1174,7]]},"786":{"position":[[10,6],[305,6],[973,7],[1134,7]]},"791":{"position":[[1652,6],[1714,6],[1765,6],[2272,6],[2292,6],[3164,6],[3184,6],[6152,6],[6268,6],[11753,7],[11863,6],[11943,7],[12043,6],[16379,6],[16430,6],[18114,6],[18134,6],[18988,6],[19008,6],[21870,6],[21986,6],[27302,7],[27412,6],[27492,7],[27592,6],[31233,6],[31284,6]]},"808":{"position":[[150,7],[244,7],[289,7],[792,7],[832,6]]},"809":{"position":[[89,6],[1642,7]]},"814":{"position":[[419,6]]},"897":{"position":[[22,6]]},"922":{"position":[[351,6]]},"923":{"position":[[100,7]]},"924":{"position":[[160,6]]},"931":{"position":[[222,7]]},"939":{"position":[[164,7]]},"961":{"position":[[238,7],[454,7]]},"963":{"position":[[159,8]]},"965":{"position":[[197,6],[1970,6],[9771,6],[11387,6],[17494,6]]},"990":{"position":[[1279,7],[1481,7],[2413,6],[2560,6],[3441,7],[3849,7]]}},"keywords":{}}],["server'",{"_index":1561,"title":{"173":{"position":[[41,8]]},"680":{"position":[[41,8]]}},"content":{"129":{"position":[[192,8]]},"158":{"position":[[2904,8]]},"160":{"position":[[1607,8]]},"636":{"position":[[192,8]]},"658":{"position":[[2904,8]]},"667":{"position":[[1609,8]]}},"keywords":{}}],["server.yaml",{"_index":2439,"title":{},"content":{"313":{"position":[[793,11]]},"785":{"position":[[793,11]]}},"keywords":{}}],["server/nf",{"_index":2438,"title":{},"content":{"313":{"position":[[782,10]]},"785":{"position":[[782,10]]}},"keywords":{}}],["server=y,suspend=n,address=5005",{"_index":3167,"title":{},"content":{"491":{"position":[[491,31]]}},"keywords":{}}],["server_1%3a7.2p2",{"_index":3640,"title":{},"content":{"791":{"position":[[11798,16],[11983,16],[27347,16],[27532,16]]}},"keywords":{}}],["server_host=...,server_port",{"_index":1951,"title":{},"content":{"209":{"position":[[95,37]]},"704":{"position":[[95,37]]}},"keywords":{}}],["servermeta:key='host:port',valu",{"_index":1950,"title":{},"content":{"209":{"position":[[61,33]]},"704":{"position":[[61,33]]}},"keywords":{}}],["servertimestamp\":1626160071451",{"_index":2844,"title":{},"content":{"410":{"position":[[1177,31]]},"412":{"position":[[179,31]]},"415":{"position":[[1203,31]]},"418":{"position":[[199,31]]},"863":{"position":[[1177,31]]},"865":{"position":[[179,31]]},"868":{"position":[[1203,31]]},"871":{"position":[[199,31]]}},"keywords":{}}],["server’",{"_index":1746,"title":{},"content":{"152":{"position":[[455,8]]},"652":{"position":[[461,8]]}},"keywords":{}}],["servic",{"_index":1293,"title":{"186":{"position":[[13,7]]},"187":{"position":[[0,7]]},"200":{"position":[[0,7]]},"321":{"position":[[16,7]]},"483":{"position":[[26,7]]},"695":{"position":[[0,7]]},"714":{"position":[[13,7]]},"715":{"position":[[0,7]]},"798":{"position":[[16,7]]},"946":{"position":[[26,7]]},"992":{"position":[[9,7]]}},"content":{"99":{"position":[[590,8]]},"104":{"position":[[379,7],[423,7]]},"106":{"position":[[10,8]]},"110":{"position":[[685,9],[1456,9]]},"118":{"position":[[886,8],[938,8]]},"160":{"position":[[712,9],[1046,8],[1493,7]]},"161":{"position":[[599,7]]},"162":{"position":[[1026,8]]},"184":{"position":[[633,8]]},"186":{"position":[[39,8],[1182,8]]},"187":{"position":[[45,7],[128,7],[251,7],[263,8],[272,7]]},"190":{"position":[[352,7]]},"197":{"position":[[52,9],[206,7],[356,8],[470,8],[556,9]]},"200":{"position":[[34,7],[119,7],[292,8],[380,7]]},"201":{"position":[[145,7],[376,8]]},"202":{"position":[[117,8]]},"203":{"position":[[387,7]]},"205":{"position":[[87,8]]},"207":{"position":[[84,7],[236,7],[298,7],[447,7]]},"210":{"position":[[81,7]]},"211":{"position":[[416,8],[578,7],[825,7],[1375,7]]},"215":{"position":[[99,8]]},"295":{"position":[[75,7]]},"302":{"position":[[46,8],[290,7]]},"303":{"position":[[496,8]]},"310":{"position":[[150,7]]},"314":{"position":[[1153,7]]},"334":{"position":[[67,7]]},"341":{"position":[[9,7]]},"440":{"position":[[47,7]]},"481":{"position":[[1682,7]]},"495":{"position":[[657,8]]},"613":{"position":[[590,8]]},"618":{"position":[[380,7],[424,7]]},"620":{"position":[[10,8]]},"624":{"position":[[685,9],[1461,9]]},"625":{"position":[[887,8],[939,8]]},"652":{"position":[[1079,7]]},"667":{"position":[[712,9],[1047,8],[1495,7]]},"668":{"position":[[599,7]]},"669":{"position":[[1279,8]]},"692":{"position":[[52,9],[206,7],[356,8],[470,8],[556,9]]},"695":{"position":[[34,7],[119,7],[292,8],[380,7]]},"696":{"position":[[145,7],[376,8]]},"697":{"position":[[117,8]]},"698":{"position":[[387,7]]},"700":{"position":[[87,8]]},"702":{"position":[[84,7],[236,7],[298,7],[447,7]]},"705":{"position":[[81,7]]},"706":{"position":[[416,8],[578,7],[825,7],[1375,7]]},"710":{"position":[[99,8]]},"712":{"position":[[638,8]]},"714":{"position":[[39,8],[1182,8]]},"715":{"position":[[45,7],[128,7],[251,7],[263,8],[272,7]]},"718":{"position":[[357,7]]},"744":{"position":[[1122,7]]},"762":{"position":[[75,8]]},"770":{"position":[[46,8],[290,7]]},"771":{"position":[[496,8]]},"782":{"position":[[150,7]]},"786":{"position":[[1153,7]]},"788":{"position":[[780,7],[811,8],[898,8],[928,8],[967,7]]},"804":{"position":[[67,7]]},"924":{"position":[[47,7]]},"939":{"position":[[408,7],[525,7]]},"944":{"position":[[1682,7]]},"992":{"position":[[45,7],[122,7],[287,7]]}},"keywords":{}}],["service/proxi",{"_index":1813,"title":{},"content":{"160":{"position":[[685,14]]},"667":{"position":[[685,14]]}},"keywords":{}}],["service/submarin",{"_index":127,"title":{},"content":{"5":{"position":[[260,17]]},"289":{"position":[[150,17]]},"306":{"position":[[236,17]]},"341":{"position":[[190,17]]},"465":{"position":[[260,17]]},"752":{"position":[[150,17]]},"757":{"position":[[236,17]]},"815":{"position":[[81,17]]}},"keywords":{}}],["service/traef",{"_index":3285,"title":{},"content":{"744":{"position":[[1324,15]]}},"keywords":{}}],["serviceaccount",{"_index":2475,"title":{},"content":{"319":{"position":[[95,14]]},"796":{"position":[[95,14]]}},"keywords":{}}],["serviceaccount=default:dashboard",{"_index":2479,"title":{},"content":{"319":{"position":[[212,32]]},"796":{"position":[[212,32]]}},"keywords":{}}],["services.submarin",{"_index":1814,"title":{},"content":{"160":{"position":[[801,18]]},"667":{"position":[[801,18]]}},"keywords":{}}],["services/daemon",{"_index":1221,"title":{},"content":{"93":{"position":[[417,16]]},"607":{"position":[[417,16]]}},"keywords":{}}],["servings.and",{"_index":1591,"title":{},"content":{"132":{"position":[[1984,12]]},"660":{"position":[[1984,12]]}},"keywords":{}}],["session",{"_index":1307,"title":{"148":{"position":[[36,7]]},"165":{"position":[[9,8]]},"648":{"position":[[36,7]]},"672":{"position":[[9,8]]}},"content":{"101":{"position":[[554,7],[566,7]]},"106":{"position":[[271,8]]},"115":{"position":[[1188,7]]},"121":{"position":[[46,9],[67,7],[116,7],[207,8],[258,7],[637,8],[684,8],[740,8],[797,8]]},"122":{"position":[[29,8],[152,8]]},"124":{"position":[[17,9]]},"125":{"position":[[497,7],[602,8],[733,7]]},"126":{"position":[[55,7]]},"127":{"position":[[310,8]]},"129":{"position":[[668,7]]},"130":{"position":[[81,8]]},"132":{"position":[[977,8]]},"148":{"position":[[125,8],[350,7]]},"163":{"position":[[169,7]]},"328":{"position":[[1544,8]]},"599":{"position":[[1188,7]]},"615":{"position":[[554,7],[566,7]]},"620":{"position":[[271,8]]},"628":{"position":[[46,9],[67,7],[116,7],[207,8],[258,7],[637,8],[684,8],[740,8],[797,8]]},"629":{"position":[[29,8],[152,8]]},"631":{"position":[[17,9]]},"632":{"position":[[497,7],[602,8],[733,7]]},"633":{"position":[[55,7]]},"634":{"position":[[310,8]]},"636":{"position":[[668,7]]},"637":{"position":[[81,8]]},"648":{"position":[[125,8],[350,7]]},"660":{"position":[[977,8]]},"670":{"position":[[169,7]]},"809":{"position":[[1564,8]]},"965":{"position":[[4899,7],[14405,7]]}},"keywords":{}}],["session'",{"_index":1554,"title":{},"content":{"125":{"position":[[687,9]]},"632":{"position":[[687,9]]}},"keywords":{}}],["session/model",{"_index":1770,"title":{"155":{"position":[[38,13]]},"655":{"position":[[38,13]]}},"content":{"155":{"position":[[20,13]]},"655":{"position":[[20,13]]}},"keywords":{}}],["sessionenviron",{"_index":1733,"title":{},"content":{"148":{"position":[[767,18]]},"648":{"position":[[767,18]]}},"keywords":{}}],["sessionmount",{"_index":2918,"title":{},"content":{"436":{"position":[[197,12]]},"920":{"position":[[197,12]]}},"keywords":{}}],["sessionrun",{"_index":1725,"title":{},"content":{"148":{"position":[[217,10]]},"648":{"position":[[217,10]]}},"keywords":{}}],["set",{"_index":474,"title":{"236":{"position":[[0,7]]},"265":{"position":[[3,3],[13,8]]},"446":{"position":[[0,3]]},"740":{"position":[[0,7]]},"964":{"position":[[0,3]]}},"content":{"53":{"position":[[543,3],[784,3]]},"60":{"position":[[171,3],[362,3]]},"71":{"position":[[200,8],[245,8]]},"77":{"position":[[210,3],[397,3]]},"91":{"position":[[242,4]]},"92":{"position":[[245,3]]},"94":{"position":[[603,3]]},"96":{"position":[[147,4],[189,4],[217,4]]},"103":{"position":[[58,3],[300,3]]},"107":{"position":[[909,3]]},"110":{"position":[[340,3]]},"112":{"position":[[58,3],[423,3]]},"180":{"position":[[263,3]]},"236":{"position":[[167,3]]},"240":{"position":[[299,3]]},"252":{"position":[[1306,3]]},"265":{"position":[[28,3],[155,9],[401,8],[995,11]]},"268":{"position":[[414,3]]},"313":{"position":[[312,7],[387,3],[416,3],[452,3],[1057,7],[1127,3],[1155,3],[1182,3]]},"314":{"position":[[651,3]]},"327":{"position":[[513,3],[692,3]]},"345":{"position":[[87,3]]},"436":{"position":[[248,3]]},"443":{"position":[[8,3],[21,8]]},"446":{"position":[[17,3],[64,3],[110,3]]},"471":{"position":[[0,3],[35,3]]},"491":{"position":[[107,3],[248,3],[310,3],[445,3],[537,3]]},"492":{"position":[[367,3]]},"498":{"position":[[406,4],[466,4],[524,4]]},"502":{"position":[[1382,3],[1449,3],[1603,3],[1695,3],[1834,3],[1858,3],[1954,3],[2016,7],[2089,3],[2154,3],[2268,3],[2398,3],[2516,3],[2653,3],[2774,3]]},"569":{"position":[[171,3],[362,3]]},"580":{"position":[[200,8],[245,8]]},"586":{"position":[[210,3],[397,3]]},"596":{"position":[[58,3],[423,3]]},"605":{"position":[[242,4]]},"606":{"position":[[245,3]]},"608":{"position":[[603,3]]},"610":{"position":[[147,4],[189,4],[217,4]]},"617":{"position":[[58,3],[300,3]]},"621":{"position":[[912,3]]},"624":{"position":[[340,3]]},"687":{"position":[[284,3]]},"740":{"position":[[170,3]]},"742":{"position":[[541,3],[610,3]]},"744":{"position":[[299,3],[790,3]]},"785":{"position":[[312,7],[387,3],[416,3],[452,3],[1057,7],[1127,3],[1155,3],[1182,3]]},"786":{"position":[[651,3]]},"791":{"position":[[13193,7],[13236,7],[13275,7],[13322,7],[13372,7],[13489,7],[13538,7],[13614,7],[13677,7],[13740,7],[13792,7],[13844,7],[13895,7],[13924,7],[13966,7],[14017,7],[14057,7],[14090,7],[14169,7],[14202,7],[14221,7],[14283,7],[14300,7],[14376,7],[14395,7],[14460,7],[14490,7],[14521,7],[14550,7],[14697,3],[15061,7],[15203,7],[15310,7],[15355,7],[15463,7],[15608,7],[16303,7],[16355,7],[16411,7],[17098,7],[17146,7],[17187,7],[17225,7],[17282,7],[17333,7],[28742,7],[28785,7],[28824,7],[28871,7],[28921,7],[29038,7],[29087,7],[29163,7],[29226,7],[29289,7],[29341,7],[29393,7],[29444,7],[29473,7],[29515,7],[29566,7],[29606,7],[29639,7],[29718,7],[29751,7],[29770,7],[29832,7],[29849,7],[29925,7],[29944,7],[30009,7],[30039,7],[30070,7],[30099,7],[30246,3],[30610,7],[30752,7],[30859,7],[30904,7],[31012,7],[31157,7],[31209,7],[31265,7],[31952,7],[32000,7],[32041,7],[32079,7],[32136,7],[32187,7]]},"808":{"position":[[513,3]]},"819":{"position":[[87,3]]},"920":{"position":[[248,3]]},"931":{"position":[[0,3],[35,3]]},"939":{"position":[[0,8],[1594,8],[1812,3]]},"961":{"position":[[505,7]]},"963":{"position":[[243,3]]},"964":{"position":[[131,3],[217,3],[1945,7]]},"965":{"position":[[94,9]]}},"keywords":{}}],["setting:编辑项目信息,例如项目的名字,简介,分享级别和权限。delet",{"_index":3251,"title":{},"content":{"522":{"position":[[482,68]]}},"keywords":{}}],["setup",{"_index":1484,"title":{"315":{"position":[[0,5]]},"493":{"position":[[0,5]]},"495":{"position":[[0,5]]},"792":{"position":[[0,5]]}},"content":{"114":{"position":[[605,5]]},"135":{"position":[[423,5]]},"221":{"position":[[103,5]]},"289":{"position":[[16,5]]},"306":{"position":[[16,5]]},"316":{"position":[[90,5]]},"330":{"position":[[216,5]]},"495":{"position":[[27,5]]},"598":{"position":[[605,5]]},"663":{"position":[[423,5]]},"735":{"position":[[103,5]]},"752":{"position":[[16,5]]},"757":{"position":[[16,5]]},"793":{"position":[[90,5]]},"800":{"position":[[216,5]]},"992":{"position":[[246,6]]}},"keywords":{}}],["setup.pi",{"_index":2972,"title":{},"content":{"441":{"position":[[332,8]]},"925":{"position":[[332,8]]}},"keywords":{}}],["setup.pyinstal",{"_index":2969,"title":{},"content":{"441":{"position":[[112,15]]},"925":{"position":[[112,15]]}},"keywords":{}}],["setuptool",{"_index":3454,"title":{},"content":{"791":{"position":[[2754,10],[18596,10]]}},"keywords":{}}],["sev",{"_index":632,"title":{},"content":{"53":{"position":[[5622,7]]},"96":{"position":[[59,7]]},"127":{"position":[[9,7]]},"158":{"position":[[2757,7]]},"190":{"position":[[165,7]]},"502":{"position":[[3005,7]]},"610":{"position":[[59,7]]},"634":{"position":[[9,7]]},"658":{"position":[[2757,7]]},"718":{"position":[[170,7]]}},"keywords":{}}],["sfmv8",{"_index":3744,"title":{},"content":{"814":{"position":[[437,5]]}},"keywords":{}}],["sftp",{"_index":3421,"title":{},"content":{"791":{"position":[[2287,4],[3179,4],[6147,4],[11748,4],[11793,4],[11858,4],[16374,4],[18129,4],[19003,4],[21865,4],[27297,4],[27342,4],[27407,4],[31228,4]]}},"keywords":{}}],["sge",{"_index":3728,"title":{},"content":{"791":{"position":[[32538,3],[32617,4]]}},"keywords":{}}],["sge_cel",{"_index":3698,"title":{},"content":{"791":{"position":[[15778,9]]}},"keywords":{}}],["sge_cfg_path",{"_index":3392,"title":{},"content":{"791":{"position":[[1388,13]]}},"keywords":{}}],["sge_cfg_path/setcfg.log",{"_index":3717,"title":{},"content":{"791":{"position":[[17641,24],[32495,24]]}},"keywords":{}}],["sge_cfg_path=/cfg",{"_index":3364,"title":{},"content":{"791":{"position":[[93,17]]}},"keywords":{}}],["sge_root",{"_index":3696,"title":{},"content":{"791":{"position":[[15745,9]]}},"keywords":{}}],["sge_run.sh",{"_index":3391,"title":{},"content":{"791":{"position":[[1365,10]]}},"keywords":{}}],["sgeadmin",{"_index":3701,"title":{},"content":{"791":{"position":[[15871,8],[16153,8]]}},"keywords":{}}],["sha256:/hra3xizih5czkxwtcfe6gwcmm+hehzztdfhxj4pzdg",{"_index":3727,"title":{},"content":{"791":{"position":[[31771,50]]}},"keywords":{}}],["sha256:3d5snniub4z+/buqxhefgg+dfjsxxqtt/zwwaqdx4jm",{"_index":3713,"title":{},"content":{"791":{"position":[[16781,50]]}},"keywords":{}}],["sha256:4d7zm4cd2ibdnhoxnzcio3fisbvow8eostgbnf1/bvo",{"_index":3726,"title":{},"content":{"791":{"position":[[31635,50]]}},"keywords":{}}],["sha256:4y48kvyt3ms3q1kgzzeoymns/2d/ta8tjuk5unsaxzi",{"_index":3725,"title":{},"content":{"791":{"position":[[31503,50]]}},"keywords":{}}],["sha256:gospmvgwxbhjzixn/gtjag+hvchqw8t7fhy4nsx8od0",{"_index":3710,"title":{},"content":{"791":{"position":[[16649,50]]}},"keywords":{}}],["sha256:hfqpes1as4cjf8aociparzr6342vdwutoyitru0wtu",{"_index":3708,"title":{},"content":{"791":{"position":[[16518,50]]}},"keywords":{}}],["sha256:ok/txzwtf5w8i55sdxrt4agy4fuwn39bisovvdobhv",{"_index":3723,"title":{},"content":{"791":{"position":[[31372,50]]}},"keywords":{}}],["sha256:swyev9isqow4tkli4wvc0zd8lwtuphcjpdu8owbwbfu",{"_index":3715,"title":{},"content":{"791":{"position":[[16917,50]]}},"keywords":{}}],["sha512",{"_index":2082,"title":{"253":{"position":[[10,6]]}},"content":{"251":{"position":[[232,6]]},"253":{"position":[[22,6],[143,6],[178,6],[293,6],[343,6],[419,6]]},"271":{"position":[[46,6],[87,6]]}},"keywords":{}}],["sha512sum",{"_index":2141,"title":{},"content":{"253":{"position":[[523,9]]}},"keywords":{}}],["shall",{"_index":574,"title":{},"content":{"53":{"position":[[3315,5]]}},"keywords":{}}],["shar",{"_index":601,"title":{"506":{"position":[[0,6]]},"526":{"position":[[0,6]]}},"content":{"53":{"position":[[4144,6]]},"89":{"position":[[167,7]]},"90":{"position":[[1086,8],[2309,6]]},"101":{"position":[[236,6]]},"102":{"position":[[1865,6]]},"103":{"position":[[411,6]]},"107":{"position":[[1183,6],[1208,6]]},"108":{"position":[[69,6]]},"112":{"position":[[1100,6]]},"134":{"position":[[931,6]]},"148":{"position":[[299,6],[646,6],[795,5]]},"155":{"position":[[42,5],[300,5]]},"313":{"position":[[652,6]]},"596":{"position":[[1100,6]]},"603":{"position":[[167,7]]},"604":{"position":[[1086,8],[2309,6]]},"615":{"position":[[236,6]]},"616":{"position":[[1877,6]]},"617":{"position":[[411,6]]},"621":{"position":[[1186,6],[1211,6]]},"622":{"position":[[69,6]]},"648":{"position":[[299,6],[646,6],[795,5]]},"655":{"position":[[42,5],[307,5]]},"662":{"position":[[931,6]]},"777":{"position":[[1030,6]]},"785":{"position":[[652,6]]},"964":{"position":[[999,6]]}},"keywords":{}}],["shell",{"_index":1309,"title":{},"content":{"102":{"position":[[59,5]]},"334":{"position":[[115,6]]},"351":{"position":[[0,5]]},"353":{"position":[[0,5]]},"356":{"position":[[0,5]]},"359":{"position":[[0,5]]},"362":{"position":[[0,5]]},"366":{"position":[[0,5]]},"369":{"position":[[0,5]]},"371":{"position":[[0,5]]},"374":{"position":[[0,5]]},"377":{"position":[[0,5]]},"380":{"position":[[0,5]]},"382":{"position":[[0,5]]},"385":{"position":[[0,5]]},"389":{"position":[[0,5]]},"392":{"position":[[0,5]]},"395":{"position":[[0,5]]},"398":{"position":[[0,5]]},"410":{"position":[[0,5]]},"412":{"position":[[0,5]]},"415":{"position":[[0,5]]},"418":{"position":[[0,5]]},"421":{"position":[[0,5]]},"479":{"position":[[12,5]]},"484":{"position":[[360,5]]},"616":{"position":[[59,5]]},"804":{"position":[[115,6]]},"825":{"position":[[0,5]]},"827":{"position":[[0,5]]},"830":{"position":[[0,5]]},"833":{"position":[[0,5]]},"836":{"position":[[0,5]]},"840":{"position":[[0,5]]},"843":{"position":[[0,5]]},"845":{"position":[[0,5]]},"848":{"position":[[0,5]]},"851":{"position":[[0,5]]},"854":{"position":[[0,5]]},"856":{"position":[[0,5]]},"859":{"position":[[0,5]]},"863":{"position":[[0,5]]},"865":{"position":[[0,5]]},"868":{"position":[[0,5]]},"871":{"position":[[0,5]]},"874":{"position":[[0,5]]},"878":{"position":[[0,5]]},"881":{"position":[[0,5]]},"884":{"position":[[0,5]]},"887":{"position":[[0,5]]},"942":{"position":[[12,5]]},"947":{"position":[[360,5]]}},"keywords":{}}],["shepherd",{"_index":558,"title":{},"content":{"53":{"position":[[2596,11]]}},"keywords":{}}],["shirt",{"_index":1537,"title":{},"content":{"121":{"position":[[235,5]]},"628":{"position":[[235,5]]}},"keywords":{}}],["short",{"_index":1308,"title":{},"content":{"101":{"position":[[578,7]]},"103":{"position":[[41,6]]},"112":{"position":[[41,6]]},"139":{"position":[[1542,6]]},"596":{"position":[[41,6]]},"615":{"position":[[578,7]]},"617":{"position":[[41,6]]},"639":{"position":[[1549,6]]}},"keywords":{}}],["show",{"_index":669,"title":{"445":{"position":[[0,4]]}},"content":{"53":{"position":[[7051,4]]},"139":{"position":[[194,7],[1077,7]]},"262":{"position":[[158,4]]},"400":{"position":[[10,5]]},"489":{"position":[[204,4],[284,4]]},"500":{"position":[[52,5]]},"639":{"position":[[194,7],[1082,7]]},"889":{"position":[[10,5]]},"966":{"position":[[226,4]]}},"keywords":{}}],["shown",{"_index":1834,"title":{},"content":{"162":{"position":[[895,5]]},"488":{"position":[[484,5]]},"669":{"position":[[1148,5]]}},"keywords":{}}],["shut",{"_index":2319,"title":{"279":{"position":[[4,4]]}},"content":{},"keywords":{}}],["shutdown",{"_index":1911,"title":{},"content":{"201":{"position":[[326,8]]},"696":{"position":[[326,8]]}},"keywords":{}}],["sibl",{"_index":1280,"title":{},"content":{"98":{"position":[[363,8]]},"612":{"position":[[363,8]]}},"keywords":{}}],["sid",{"_index":1653,"title":{"158":{"position":[[50,4]]},"658":{"position":[[50,4]]}},"content":{"139":{"position":[[1173,5],[1857,5]]},"639":{"position":[[1178,5],[1870,5]]}},"keywords":{}}],["sideadd",{"_index":974,"title":{},"content":{"77":{"position":[[550,7]]},"586":{"position":[[550,7]]}},"keywords":{}}],["sidebars.j",{"_index":2071,"title":{},"content":{"243":{"position":[[80,12]]},"746":{"position":[[80,12]]}},"keywords":{}}],["sig",{"_index":2239,"title":{},"content":{"263":{"position":[[618,4],[1305,4]]},"271":{"position":[[162,3]]}},"keywords":{}}],["sign",{"_index":561,"title":{"271":{"position":[[4,4]]}},"content":{"53":{"position":[[2746,6]]},"260":{"position":[[617,5],[637,5],[2600,7]]},"268":{"position":[[372,7]]},"270":{"position":[[570,7]]},"278":{"position":[[128,6]]}},"keywords":{}}],["signatur",{"_index":2081,"title":{"252":{"position":[[14,9]]}},"content":{"251":{"position":[[171,9]]},"252":{"position":[[1874,10],[2130,9],[2505,9],[2544,9],[2606,9],[2720,9]]},"268":{"position":[[179,9]]},"271":{"position":[[192,9]]},"272":{"position":[[29,9]]},"323":{"position":[[91,11],[108,9]]},"773":{"position":[[91,11],[108,9]]}},"keywords":{}}],["signature))dock",{"_index":2497,"title":{},"content":{"324":{"position":[[215,17]]}},"keywords":{}}],["signature)source:submarin",{"_index":2495,"title":{},"content":{"324":{"position":[[147,26]]}},"keywords":{}}],["signature/sha512",{"_index":2308,"title":{"272":{"position":[[32,16]]}},"content":{},"keywords":{}}],["signifi",{"_index":695,"title":{},"content":{"53":{"position":[[8335,7]]}},"keywords":{}}],["signific",{"_index":551,"title":{},"content":{"53":{"position":[[2353,12]]},"93":{"position":[[591,11]]},"607":{"position":[[591,11]]}},"keywords":{}}],["sigs/kind/releases/download/${kind_version}/kind",{"_index":2463,"title":{},"content":{"316":{"position":[[356,48]]},"793":{"position":[[356,48]]}},"keywords":{}}],["silenc",{"_index":682,"title":{},"content":{"53":{"position":[[7832,9]]}},"keywords":{}}],["similar",{"_index":52,"title":{},"content":{"4":{"position":[[72,7]]},"121":{"position":[[537,7]]},"134":{"position":[[2416,7]]},"158":{"position":[[1238,7]]},"464":{"position":[[72,7]]},"628":{"position":[[537,7]]},"658":{"position":[[1238,7]]},"662":{"position":[[2416,7]]},"966":{"position":[[302,7]]},"967":{"position":[[71,7]]}},"keywords":{}}],["similarili",{"_index":1521,"title":{},"content":{"117":{"position":[[1089,11]]},"601":{"position":[[1089,11]]}},"keywords":{}}],["similarli",{"_index":1138,"title":{},"content":{"90":{"position":[[2004,10]]},"93":{"position":[[747,10]]},"604":{"position":[[2004,10]]},"607":{"position":[[747,10]]}},"keywords":{}}],["simpl",{"_index":434,"title":{},"content":{"43":{"position":[[68,6],[176,9]]},"44":{"position":[[108,9]]},"102":{"position":[[1233,6]]},"116":{"position":[[35,6]]},"130":{"position":[[252,6]]},"343":{"position":[[7,6]]},"484":{"position":[[421,6]]},"600":{"position":[[35,6]]},"616":{"position":[[1245,6]]},"637":{"position":[[252,6]]},"817":{"position":[[7,6]]},"947":{"position":[[421,6]]}},"keywords":{}}],["simpli",{"_index":1054,"title":{},"content":{"86":{"position":[[514,6]]}},"keywords":{}}],["simplic",{"_index":1509,"title":{},"content":{"117":{"position":[[8,13]]},"601":{"position":[[8,13]]}},"keywords":{}}],["simplifi",{"_index":1153,"title":{},"content":{"90":{"position":[[2603,9]]},"604":{"position":[[2603,9]]}},"keywords":{}}],["simultan",{"_index":1902,"title":{},"content":{"199":{"position":[[259,14]]},"694":{"position":[[259,14]]}},"keywords":{}}],["singl",{"_index":623,"title":{"961":{"position":[[14,6]]}},"content":{"53":{"position":[[5312,6]]},"89":{"position":[[23,6]]},"110":{"position":[[1552,6]]},"157":{"position":[[941,6]]},"254":{"position":[[326,6]]},"303":{"position":[[120,6]]},"472":{"position":[[6,6]]},"473":{"position":[[6,6],[125,6]]},"496":{"position":[[163,6]]},"603":{"position":[[23,6]]},"624":{"position":[[1557,6]]},"657":{"position":[[941,6]]},"771":{"position":[[120,6]]},"913":{"position":[[122,6]]},"932":{"position":[[6,6]]},"933":{"position":[[6,6],[125,6]]}},"keywords":{}}],["sit",{"_index":918,"title":{},"content":{"73":{"position":[[250,4],[432,4]]},"242":{"position":[[346,5]]},"582":{"position":[[250,4],[432,4]]},"745":{"position":[[346,5]]}},"keywords":{}}],["site.xml",{"_index":1858,"title":{"492":{"position":[[10,8]]}},"content":{"180":{"position":[[283,8]]},"206":{"position":[[87,9]]},"492":{"position":[[10,8]]},"687":{"position":[[304,8]]},"701":{"position":[[87,9]]}},"keywords":{}}],["site/blob/master/community/member.md",{"_index":920,"title":{},"content":{"73":{"position":[[300,37]]},"582":{"position":[[300,37]]}},"keywords":{}}],["site/tree/asf",{"_index":2070,"title":{},"content":{"242":{"position":[[332,13]]},"745":{"position":[[332,13]]}},"keywords":{}}],["six",{"_index":546,"title":{},"content":{"53":{"position":[[2187,3],[4651,3]]},"502":{"position":[[190,3]]},"791":{"position":[[2370,3],[3262,3],[6574,3],[12457,4],[12537,3],[17206,3],[18212,3],[19086,3],[22292,3],[28006,4],[28086,3],[32060,3]]}},"keywords":{}}],["six.py3",{"_index":2961,"title":{},"content":{"439":{"position":[[1340,7]]}},"keywords":{}}],["six_1.10.0",{"_index":3645,"title":{},"content":{"791":{"position":[[12494,10],[28043,10]]}},"keywords":{}}],["siz",{"_index":1538,"title":{},"content":{"121":{"position":[[241,4]]},"133":{"position":[[457,4]]},"157":{"position":[[1254,4]]},"190":{"position":[[40,5]]},"628":{"position":[[241,4]]},"657":{"position":[[1254,4]]},"661":{"position":[[457,4]]},"718":{"position":[[40,5]]}},"keywords":{}}],["size=16",{"_index":3046,"title":{},"content":{"479":{"position":[[993,7],[1015,7]]},"942":{"position":[[993,7],[1015,7]]},"981":{"position":[[675,7],[697,7]]}},"keywords":{}}],["size=20g",{"_index":21,"title":{},"content":{"2":{"position":[[66,8]]},"462":{"position":[[66,8]]}},"keywords":{}}],["skill",{"_index":1194,"title":{},"content":{"92":{"position":[[239,5]]},"606":{"position":[[239,5]]}},"keywords":{}}],["skip",{"_index":2252,"title":{},"content":{"265":{"position":[[0,4]]},"439":{"position":[[284,4]]}},"keywords":{}}],["sklearn",{"_index":3852,"title":{},"content":{"950":{"position":[[899,7]]},"969":{"position":[[1033,7]]}},"keywords":{}}],["slack",{"_index":1015,"title":{},"content":{"81":{"position":[[78,5],[230,5]]},"588":{"position":[[78,5],[136,5]]},"590":{"position":[[419,5]]}},"keywords":{}}],["sleep",{"_index":3394,"title":{},"content":{"791":{"position":[[1455,5]]}},"keywords":{}}],["slow",{"_index":2234,"title":{},"content":{"263":{"position":[[398,5]]},"277":{"position":[[19,5]]}},"keywords":{}}],["small",{"_index":1031,"title":{},"content":{"82":{"position":[[384,5]]},"92":{"position":[[381,5]]},"107":{"position":[[1220,5]]},"121":{"position":[[327,6]]},"133":{"position":[[415,5]]},"152":{"position":[[1404,5]]},"190":{"position":[[23,5]]},"199":{"position":[[538,5]]},"589":{"position":[[384,5]]},"606":{"position":[[381,5]]},"621":{"position":[[1223,5]]},"628":{"position":[[327,6]]},"652":{"position":[[1684,5]]},"661":{"position":[[415,5]]},"694":{"position":[[538,5]]},"718":{"position":[[23,5]]}},"keywords":{}}],["snapshot",{"_index":2722,"title":{},"content":{"353":{"position":[[304,10],[1196,10]]},"389":{"position":[[924,10]]},"392":{"position":[[671,10]]},"395":{"position":[[659,10]]},"398":{"position":[[689,10]]},"439":{"position":[[1023,9]]},"441":{"position":[[91,8]]},"791":{"position":[[71,8]]},"827":{"position":[[304,10],[1196,10]]},"878":{"position":[[924,10]]},"881":{"position":[[671,10]]},"884":{"position":[[659,10]]},"887":{"position":[[689,10]]},"925":{"position":[[91,8]]}},"keywords":{}}],["softwar",{"_index":463,"title":{},"content":{"53":{"position":[[244,8],[1042,9],[2813,8],[4895,8]]},"54":{"position":[[120,8]]},"56":{"position":[[42,9],[216,8]]},"90":{"position":[[202,8],[318,8]]},"252":{"position":[[309,8],[348,9]]},"260":{"position":[[375,8],[414,9]]},"565":{"position":[[42,9],[216,8]]},"604":{"position":[[202,8],[318,8]]},"969":{"position":[[622,8]]}},"keywords":{}}],["solut",{"_index":1569,"title":{},"content":{"130":{"position":[[259,8],[398,9]]},"481":{"position":[[1730,9]]},"482":{"position":[[539,9]]},"483":{"position":[[0,9]]},"484":{"position":[[279,9]]},"637":{"position":[[259,8],[398,9]]},"944":{"position":[[1730,9]]},"945":{"position":[[539,9]]},"946":{"position":[[0,9]]},"947":{"position":[[279,9]]}},"keywords":{}}],["solv",{"_index":1088,"title":{},"content":{"90":{"position":[[393,5],[2749,5]]},"98":{"position":[[33,5]]},"152":{"position":[[580,5]]},"604":{"position":[[393,5],[2749,5]]},"612":{"position":[[33,5]]},"652":{"position":[[586,5]]}},"keywords":{}}],["someth",{"_index":2127,"title":{},"content":{"252":{"position":[[2449,9]]},"966":{"position":[[292,9]]}},"keywords":{}}],["sometim",{"_index":1990,"title":{},"content":{"219":{"position":[[66,9]]},"733":{"position":[[66,9]]}},"keywords":{}}],["sort",{"_index":2921,"title":{},"content":{"437":{"position":[[13,4]]},"921":{"position":[[13,4]]}},"keywords":{}}],["sought",{"_index":679,"title":{},"content":{"53":{"position":[[7626,7],[10017,6],[10164,7],[10400,7]]}},"keywords":{}}],["sourc",{"_index":356,"title":{"221":{"position":[[9,6]]},"238":{"position":[[11,6]]},"254":{"position":[[35,6]]},"269":{"position":[[16,6]]},"271":{"position":[[13,6]]},"333":{"position":[[17,6]]},"734":{"position":[[9,6]]},"735":{"position":[[9,6]]},"742":{"position":[[11,6]]},"803":{"position":[[17,6]]}},"content":{"31":{"position":[[483,8],[846,8],[1209,8],[1573,8]]},"32":{"position":[[491,8]]},"53":{"position":[[8892,6]]},"73":{"position":[[255,6]]},"76":{"position":[[23,6]]},"79":{"position":[[269,6]]},"87":{"position":[[10,6]]},"90":{"position":[[356,6],[577,7],[1173,6],[1705,6],[1980,6],[2202,6],[2472,6],[2540,6]]},"91":{"position":[[23,7]]},"92":{"position":[[578,6]]},"251":{"position":[[46,6],[127,6],[188,6],[246,6]]},"252":{"position":[[1103,8]]},"254":{"position":[[277,6]]},"257":{"position":[[0,6]]},"269":{"position":[[47,6]]},"270":{"position":[[12,6],[124,6],[218,6],[285,6],[531,6]]},"274":{"position":[[70,6],[163,6]]},"278":{"position":[[104,6]]},"281":{"position":[[954,7]]},"284":{"position":[[442,7]]},"306":{"position":[[131,6]]},"333":{"position":[[108,6]]},"582":{"position":[[255,6]]},"585":{"position":[[23,6]]},"594":{"position":[[10,6]]},"604":{"position":[[356,6],[577,7],[1173,6],[1705,6],[1980,6],[2202,6],[2472,6],[2540,6]]},"605":{"position":[[23,7]]},"606":{"position":[[578,6]]},"734":{"position":[[588,6]]},"757":{"position":[[131,6]]},"803":{"position":[[108,6]]}},"keywords":{}}],["source:hadoop",{"_index":2517,"title":{},"content":{"324":{"position":[[1237,13]]},"774":{"position":[[690,13]]}},"keywords":{}}],["source:submarin",{"_index":2522,"title":{},"content":{"324":{"position":[[1452,16]]},"774":{"position":[[905,16]]}},"keywords":{}}],["sox",{"_index":3303,"title":{},"content":{"777":{"position":[[631,3]]}},"keywords":{}}],["spac",{"_index":3464,"title":{},"content":{"791":{"position":[[3463,5],[19287,5]]}},"keywords":{}}],["space.prerequisit",{"_index":2435,"title":{},"content":{"313":{"position":[[659,19]]},"785":{"position":[[659,19]]}},"keywords":{}}],["spark",{"_index":1242,"title":{"934":{"position":[[19,5]]},"935":{"position":[[10,5]]}},"content":{"94":{"position":[[356,6],[457,5]]},"102":{"position":[[94,5]]},"110":{"position":[[769,6]]},"158":{"position":[[1830,5]]},"608":{"position":[[356,6],[457,5]]},"616":{"position":[[94,5]]},"624":{"position":[[769,6]]},"658":{"position":[[1830,5]]},"767":{"position":[[33,5]]},"934":{"position":[[10,5],[197,5],[239,5],[285,5],[366,5],[434,6]]},"936":{"position":[[62,5]]},"937":{"position":[[32,5]]},"938":{"position":[[20,5]]},"939":{"position":[[42,5],[847,5],[1614,6]]}},"keywords":{}}],["spark.sql.ext",{"_index":3830,"title":{},"content":{"939":{"position":[[1639,20],[1841,20]]}},"keywords":{}}],["spark.sql.extensions=org.apache.submarine.spark.security.api.rangersparkauthzext",{"_index":3831,"title":{},"content":{"939":{"position":[[1706,86]]}},"keywords":{}}],["spark/flink/h",{"_index":1224,"title":{},"content":{"93":{"position":[[496,17],[537,16]]},"607":{"position":[[496,17],[537,16]]}},"keywords":{}}],["spark/hiv",{"_index":1195,"title":{},"content":{"92":{"position":[[326,10]]},"606":{"position":[[326,10]]}},"keywords":{}}],["spark_home/conf",{"_index":3802,"title":{},"content":{"939":{"position":[[64,16],[866,16]]}},"keywords":{}}],["spark_home/jar",{"_index":3800,"title":{},"content":{"938":{"position":[[54,17]]}},"keywords":{}}],["spec",{"_index":223,"title":{"176":{"position":[[19,4]]},"179":{"position":[[8,4]]},"180":{"position":[[10,4]]},"181":{"position":[[5,4]]},"683":{"position":[[18,4]]},"686":{"position":[[8,4]]},"687":{"position":[[10,4]]},"688":{"position":[[5,4]]}},"content":{"15":{"position":[[834,7]]},"18":{"position":[[831,7]]},"22":{"position":[[406,7],[844,7],[1164,7]]},"23":{"position":[[377,7],[991,7],[1282,7]]},"24":{"position":[[353,7],[673,7],[999,7],[1248,7]]},"25":{"position":[[386,7],[706,7]]},"26":{"position":[[414,7],[1017,7]]},"27":{"position":[[389,7],[709,7]]},"38":{"position":[[239,7],[760,8],[1103,8]]},"39":{"position":[[502,8],[845,8]]},"40":{"position":[[493,8],[836,8]]},"41":{"position":[[545,7],[898,7]]},"94":{"position":[[579,4]]},"117":{"position":[[956,6]]},"134":{"position":[[1717,4],[1797,5],[1902,5],[2202,4]]},"140":{"position":[[948,6],[990,4]]},"154":{"position":[[389,4]]},"158":{"position":[[1275,5]]},"161":{"position":[[763,4],[1025,6]]},"177":{"position":[[265,4]]},"178":{"position":[[65,4],[96,5],[112,4],[126,5]]},"179":{"position":[[12,4]]},"328":{"position":[[635,4]]},"350":{"position":[[183,5]]},"358":{"position":[[156,5]]},"365":{"position":[[205,4],[242,4],[656,5],[760,5],[1313,5],[1342,5]]},"366":{"position":[[372,7],[886,8],[1281,8]]},"369":{"position":[[343,7],[1006,8],[1373,8]]},"371":{"position":[[478,8],[873,8],[1487,8],[1854,8]]},"374":{"position":[[423,8],[790,8]]},"376":{"position":[[196,4],[238,4]]},"377":{"position":[[373,7],[917,8],[1312,8]]},"380":{"position":[[398,8],[793,8]]},"388":{"position":[[184,4],[205,4]]},"389":{"position":[[207,7],[723,8],[1091,8]]},"392":{"position":[[470,8],[838,8]]},"395":{"position":[[458,8],[826,8]]},"398":{"position":[[488,8],[856,8]]},"405":{"position":[[353,7]]},"409":{"position":[[311,4],[749,4],[786,4],[1428,5],[1457,5]]},"410":{"position":[[802,7],[2670,8]]},"412":{"position":[[1672,8]]},"414":{"position":[[320,4]]},"415":{"position":[[807,7],[2700,8]]},"418":{"position":[[1696,8]]},"421":{"position":[[576,8],[971,8]]},"424":{"position":[[71,5],[591,7]]},"425":{"position":[[99,5],[598,7]]},"439":{"position":[[772,5]]},"544":{"position":[[834,7]]},"547":{"position":[[831,7]]},"551":{"position":[[406,7],[844,7],[1164,7]]},"552":{"position":[[377,7],[991,7],[1282,7]]},"553":{"position":[[353,7],[673,7],[999,7],[1248,7]]},"554":{"position":[[386,7],[706,7]]},"555":{"position":[[414,7],[1017,7]]},"556":{"position":[[389,7],[709,7]]},"560":{"position":[[239,7],[760,8],[1103,8]]},"561":{"position":[[502,8],[845,8]]},"562":{"position":[[493,8],[836,8]]},"563":{"position":[[545,7],[898,7]]},"601":{"position":[[956,6]]},"608":{"position":[[579,4]]},"640":{"position":[[948,6],[990,4]]},"654":{"position":[[389,4]]},"658":{"position":[[1275,5]]},"662":{"position":[[1717,4],[1797,5],[1902,5],[2202,4]]},"668":{"position":[[763,4],[1025,6]]},"684":{"position":[[265,4]]},"685":{"position":[[65,4],[96,5],[112,4],[126,5]]},"686":{"position":[[12,4]]},"809":{"position":[[655,4]]},"824":{"position":[[183,5]]},"832":{"position":[[156,5]]},"839":{"position":[[205,4],[242,4],[656,5],[760,5],[1313,5],[1342,5]]},"840":{"position":[[372,7],[886,8],[1281,8]]},"843":{"position":[[343,7],[1006,8],[1373,8]]},"845":{"position":[[478,8],[873,8],[1487,8],[1854,8]]},"848":{"position":[[423,8],[790,8]]},"850":{"position":[[196,4],[238,4]]},"851":{"position":[[373,7],[917,8],[1312,8]]},"854":{"position":[[398,8],[793,8]]},"862":{"position":[[311,4],[749,4],[786,4],[1428,5],[1457,5]]},"863":{"position":[[802,7],[2670,8]]},"865":{"position":[[1672,8]]},"867":{"position":[[320,4]]},"868":{"position":[[807,7],[2700,8]]},"871":{"position":[[1696,8]]},"874":{"position":[[576,8],[971,8]]},"877":{"position":[[184,4],[205,4]]},"878":{"position":[[207,7],[723,8],[1091,8]]},"881":{"position":[[470,8],[838,8]]},"884":{"position":[[458,8],[826,8]]},"887":{"position":[[488,8],[856,8]]},"894":{"position":[[353,7]]},"898":{"position":[[71,5],[591,7]]},"899":{"position":[[99,5],[598,7]]},"964":{"position":[[647,5],[769,4],[1312,5]]}},"keywords":{}}],["spec={'p",{"_index":2574,"title":{},"content":{"328":{"position":[[1239,10]]},"809":{"position":[[1259,10]]}},"keywords":{}}],["special",{"_index":1319,"title":{},"content":{"102":{"position":[[723,11],[2102,7],[2190,7]]},"616":{"position":[[728,11],[2114,7],[2203,7]]},"964":{"position":[[1093,7]]}},"keywords":{}}],["specif",{"_index":627,"title":{},"content":{"53":{"position":[[5403,10]]},"54":{"position":[[178,8]]},"128":{"position":[[134,8]]},"289":{"position":[[818,8]]},"316":{"position":[[240,8],[557,8]]},"332":{"position":[[224,8]]},"333":{"position":[[193,8]]},"635":{"position":[[134,8]]},"752":{"position":[[818,8]]},"793":{"position":[[240,8],[557,8]]},"802":{"position":[[224,8]]},"803":{"position":[[193,8]]}},"keywords":{}}],["specifi",{"_index":1322,"title":{"146":{"position":[[0,7]]},"147":{"position":[[19,7]]},"646":{"position":[[0,7]]},"647":{"position":[[19,7]]}},"content":{"102":{"position":[[835,7],[1265,9],[1297,7]]},"104":{"position":[[328,7]]},"112":{"position":[[859,10]]},"140":{"position":[[1572,7]]},"147":{"position":[[163,9],[1379,10]]},"179":{"position":[[399,10],[492,10],[565,10]]},"180":{"position":[[50,10],[227,9]]},"181":{"position":[[76,9],[466,7]]},"260":{"position":[[853,7]]},"284":{"position":[[235,9]]},"316":{"position":[[171,7]]},"365":{"position":[[621,7],[732,7]]},"470":{"position":[[39,10]]},"473":{"position":[[165,9]]},"596":{"position":[[859,10]]},"616":{"position":[[840,7],[1277,9],[1309,7]]},"618":{"position":[[329,7]]},"640":{"position":[[1572,7]]},"647":{"position":[[163,9],[1379,10]]},"686":{"position":[[399,10],[492,10],[565,10]]},"687":{"position":[[50,10],[248,9]]},"688":{"position":[[76,9],[466,7]]},"791":{"position":[[1666,9]]},"793":{"position":[[171,7]]},"839":{"position":[[621,7],[732,7]]},"908":{"position":[[101,7],[124,7],[212,7],[235,7]]},"913":{"position":[[162,9]]},"930":{"position":[[39,10]]},"933":{"position":[[165,9]]}},"keywords":{}}],["specul",{"_index":553,"title":{},"content":{"53":{"position":[[2410,11]]}},"keywords":{}}],["speech",{"_index":786,"title":{},"content":{"54":{"position":[[1900,8]]},"788":{"position":[[54,6]]}},"keywords":{}}],["speed",{"_index":879,"title":{},"content":{"67":{"position":[[215,5]]},"576":{"position":[[215,5]]}},"keywords":{}}],["split",{"_index":1171,"title":{},"content":{"91":{"position":[[220,5]]},"96":{"position":[[171,5]]},"158":{"position":[[1702,5]]},"162":{"position":[[810,5]]},"605":{"position":[[220,5]]},"610":{"position":[[171,5]]},"658":{"position":[[1702,5]]},"669":{"position":[[1063,5]]}},"keywords":{}}],["spool",{"_index":3699,"title":{},"content":{"791":{"position":[[15799,5],[15893,5]]}},"keywords":{}}],["sql",{"_index":1310,"title":{},"content":{"102":{"position":[[107,3]]},"616":{"position":[[107,3]]}},"keywords":{}}],["sqlalchemi",{"_index":2993,"title":{},"content":{"471":{"position":[[442,10]]},"931":{"position":[[442,10]]}},"keywords":{}}],["src.tar.gz",{"_index":2124,"title":{},"content":{"252":{"position":[[2050,10],[2590,10]]},"253":{"position":[[221,10]]},"254":{"position":[[42,10]]},"255":{"position":[[49,10],[107,11]]},"269":{"position":[[288,11]]},"270":{"position":[[195,10]]},"274":{"position":[[140,10]]},"324":{"position":[[185,10],[745,10],[1016,10],[1267,10],[1482,10]]},"774":{"position":[[198,10],[469,10],[720,10],[935,10]]}},"keywords":{}}],["src.tar.gz.asc",{"_index":2123,"title":{},"content":{"252":{"position":[[1999,14]]},"323":{"position":[[211,14]]},"773":{"position":[[211,14]]}},"keywords":{}}],["sre",{"_index":1069,"title":{},"content":{"89":{"position":[[231,4]]},"114":{"position":[[63,5]]},"598":{"position":[[63,5]]},"603":{"position":[[231,4]]}},"keywords":{}}],["ssb",{"_index":2105,"title":{},"content":{"252":{"position":[[590,3],[835,3],[1466,3],[1705,3]]}},"keywords":{}}],["ssh",{"_index":1839,"title":{},"content":{"175":{"position":[[81,3]]},"682":{"position":[[81,3]]},"791":{"position":[[2390,3],[2551,3],[2570,3],[3282,3],[6893,3],[12963,3],[12998,7],[13051,3],[17344,3],[18232,3],[18393,3],[18412,3],[19106,3],[22611,3],[28512,3],[28547,7],[28600,3],[32198,3]]}},"keywords":{}}],["ssh2",{"_index":3707,"title":{},"content":{"791":{"position":[[16471,4],[16602,4],[16733,4],[16867,4],[31325,4],[31456,4],[31587,4],[31721,4]]}},"keywords":{}}],["ssl",{"_index":3176,"title":{},"content":{"492":{"position":[[244,3],[330,3],[351,3],[461,3]]},"791":{"position":[[2404,3],[3296,3],[5214,3],[10310,3],[10340,7],[10382,3],[14068,3],[18246,3],[19120,3],[21038,3],[26028,3],[26058,7],[26100,3],[29617,3]]}},"keywords":{}}],["sso",{"_index":1575,"title":{},"content":{"130":{"position":[[429,4]]},"637":{"position":[[429,4]]}},"keywords":{}}],["stabil",{"_index":1884,"title":{},"content":{"186":{"position":[[467,10]]},"714":{"position":[[467,10]]}},"keywords":{}}],["stabl",{"_index":799,"title":{},"content":{"54":{"position":[[2436,6]]},"332":{"position":[[170,6]]},"802":{"position":[[170,6]]}},"keywords":{}}],["stack",{"_index":4218,"title":{},"content":{"967":{"position":[[2103,5]]}},"keywords":{}}],["stag",{"_index":2321,"title":{"279":{"position":[[25,7]]},"284":{"position":[[38,7]]}},"content":{"279":{"position":[[107,7]]},"281":{"position":[[648,7]]},"284":{"position":[[114,7]]}},"keywords":{}}],["standard",{"_index":752,"title":{},"content":{"54":{"position":[[558,8]]},"90":{"position":[[1437,8],[2135,8],[2209,8]]},"92":{"position":[[560,12]]},"158":{"position":[[2524,8],[2765,8]]},"604":{"position":[[1437,8],[2135,8],[2209,8]]},"606":{"position":[[560,12]]},"658":{"position":[[2524,8],[2765,8]]}},"keywords":{}}],["star",{"_index":3227,"title":{},"content":{"502":{"position":[[601,5]]}},"keywords":{}}],["start",{"_index":13,"title":{"218":{"position":[[6,5]]},"321":{"position":[[0,5]]},"481":{"position":[[17,5]]},"485":{"position":[[23,5]]},"732":{"position":[[6,5]]},"798":{"position":[[0,5]]},"937":{"position":[[6,5]]},"944":{"position":[[17,5]]},"948":{"position":[[23,5]]},"974":{"position":[[19,5]]}},"content":{"2":{"position":[[11,5]]},"53":{"position":[[1083,5],[6078,8]]},"54":{"position":[[1514,8]]},"82":{"position":[[8,5]]},"121":{"position":[[10,5],[474,5]]},"208":{"position":[[726,8]]},"209":{"position":[[570,5]]},"239":{"position":[[271,5]]},"246":{"position":[[13,6],[152,5]]},"268":{"position":[[324,5]]},"274":{"position":[[285,5]]},"281":{"position":[[1125,6]]},"289":{"position":[[531,5]]},"327":{"position":[[17,7],[413,7]]},"332":{"position":[[0,8]]},"338":{"position":[[116,5],[148,5]]},"436":{"position":[[171,5]]},"439":{"position":[[695,8]]},"462":{"position":[[11,5]]},"490":{"position":[[68,5],[298,5]]},"491":{"position":[[375,7],[604,7]]},"500":{"position":[[137,5]]},"520":{"position":[[72,5]]},"589":{"position":[[8,5]]},"628":{"position":[[10,5],[474,5]]},"703":{"position":[[726,8]]},"704":{"position":[[570,5]]},"743":{"position":[[255,5]]},"744":{"position":[[545,5],[581,5]]},"749":{"position":[[13,6],[152,5]]},"752":{"position":[[531,5]]},"791":{"position":[[15601,6],[16296,6],[17091,6],[31150,6],[31945,6],[32532,5]]},"802":{"position":[[0,8]]},"808":{"position":[[17,7],[413,7]]},"812":{"position":[[116,5],[150,5]]},"909":{"position":[[26,5]]},"920":{"position":[[171,5]]},"965":{"position":[[1962,7],[4886,5],[11379,7],[14392,5],[17486,7]]}},"keywords":{}}],["started/quickstart",{"_index":3279,"title":{},"content":{"743":{"position":[[36,19]]}},"keywords":{}}],["started/submarin",{"_index":2050,"title":{},"content":{"239":{"position":[[36,17]]}},"keywords":{}}],["start|stop|restart",{"_index":3159,"title":{},"content":{"490":{"position":[[39,20]]}},"keywords":{}}],["stat",{"_index":579,"title":{},"content":{"53":{"position":[[3368,7]]},"79":{"position":[[327,7]]},"154":{"position":[[429,6]]},"207":{"position":[[455,5]]},"208":{"position":[[510,5]]},"481":{"position":[[1712,5]]},"654":{"position":[[429,6]]},"702":{"position":[[455,5]]},"703":{"position":[[510,5]]},"791":{"position":[[1970,5],[17547,5],[17812,5],[32401,5]]},"944":{"position":[[1712,5]]}},"keywords":{}}],["static",{"_index":2064,"title":{},"content":{"242":{"position":[[56,6]]},"437":{"position":[[281,6]]},"745":{"position":[[56,6]]},"921":{"position":[[281,6]]}},"keywords":{}}],["statist",{"_index":1260,"title":{},"content":{"96":{"position":[[198,10]]},"211":{"position":[[888,10]]},"610":{"position":[[198,10]]},"706":{"position":[[888,10]]}},"keywords":{}}],["statu",{"_index":40,"title":{"66":{"position":[[28,6]]},"68":{"position":[[29,6]]},"575":{"position":[[28,6]]},"577":{"position":[[29,6]]}},"content":{"3":{"position":[[196,7]]},"4":{"position":[[124,6]]},"9":{"position":[[571,9]]},"10":{"position":[[120,9]]},"11":{"position":[[144,9]]},"12":{"position":[[467,9]]},"13":{"position":[[147,9]]},"22":{"position":[[611,9],[773,9]]},"23":{"position":[[758,9],[920,9]]},"24":{"position":[[118,9],[282,9],[928,9]]},"25":{"position":[[153,9],[315,9]]},"26":{"position":[[649,9]]},"27":{"position":[[156,9],[318,9]]},"28":{"position":[[128,9]]},"29":{"position":[[163,9]]},"31":{"position":[[1691,8]]},"32":{"position":[[605,8]]},"33":{"position":[[396,8]]},"34":{"position":[[256,8]]},"35":{"position":[[306,8]]},"39":{"position":[[368,9]]},"41":{"position":[[130,9],[379,9]]},"47":{"position":[[729,8]]},"48":{"position":[[421,8]]},"49":{"position":[[355,8]]},"50":{"position":[[257,8]]},"52":{"position":[[295,8]]},"54":{"position":[[1731,6]]},"154":{"position":[[876,6],[943,6],[1042,6]]},"155":{"position":[[182,6],[385,7]]},"186":{"position":[[378,7]]},"197":{"position":[[170,6]]},"203":{"position":[[395,7]]},"278":{"position":[[254,6],[273,7],[348,6],[367,7]]},"340":{"position":[[25,6],[103,6]]},"427":{"position":[[45,7]]},"430":{"position":[[32,7]]},"431":{"position":[[150,6]]},"463":{"position":[[196,7]]},"464":{"position":[[124,6]]},"498":{"position":[[270,6],[301,7],[538,6]]},"538":{"position":[[571,9]]},"539":{"position":[[120,9]]},"540":{"position":[[144,9]]},"541":{"position":[[467,9]]},"542":{"position":[[147,9]]},"551":{"position":[[611,9],[773,9]]},"552":{"position":[[758,9],[920,9]]},"553":{"position":[[118,9],[282,9],[928,9]]},"554":{"position":[[153,9],[315,9]]},"555":{"position":[[649,9]]},"556":{"position":[[156,9],[318,9]]},"557":{"position":[[128,9]]},"558":{"position":[[163,9]]},"561":{"position":[[368,9]]},"563":{"position":[[130,9],[379,9]]},"654":{"position":[[881,6],[948,6],[1047,6]]},"655":{"position":[[188,6],[392,7]]},"692":{"position":[[170,6]]},"698":{"position":[[395,7]]},"714":{"position":[[378,7]]},"814":{"position":[[25,6],[105,6]]},"901":{"position":[[45,7]]},"904":{"position":[[32,7]]},"905":{"position":[[150,6]]},"980":{"position":[[1003,6],[1093,6],[1226,7],[1294,6],[1427,7],[1495,6],[1624,7],[2129,6],[2258,7],[2327,6],[2460,7],[2529,6],[2662,7]]},"985":{"position":[[863,6],[953,6],[1086,7],[1154,6],[1287,7],[1355,6],[1484,7],[1989,6],[2118,7],[2187,6],[2320,7],[2389,6],[2522,7]]},"990":{"position":[[1157,6],[1246,6],[1381,7],[1448,6],[1583,7],[1650,6],[1785,7],[1852,6],[1987,7],[2054,6],[2192,7],[2997,6],[3135,7],[3204,6],[3339,7],[3408,6],[3543,7],[3612,6],[3747,7],[3816,6],[3951,7]]}},"keywords":{}}],["status\":\"accept",{"_index":2747,"title":{},"content":{"366":{"position":[[756,20]]},"369":{"position":[[876,20]]},"371":{"position":[[1357,20]]},"374":{"position":[[293,20]]},"377":{"position":[[787,20]]},"421":{"position":[[446,20]]},"840":{"position":[[756,20]]},"843":{"position":[[876,20]]},"845":{"position":[[1357,20]]},"848":{"position":[[293,20]]},"851":{"position":[[787,20]]},"874":{"position":[[446,20]]}},"keywords":{}}],["status\":\"cr",{"_index":395,"title":{},"content":{"38":{"position":[[626,20]]},"389":{"position":[[589,20]]},"560":{"position":[[626,20]]},"878":{"position":[[589,20]]}},"keywords":{}}],["status\":\"delet",{"_index":2797,"title":{},"content":{"380":{"position":[[296,19]]},"854":{"position":[[296,19]]}},"keywords":{}}],["status\":\"ok",{"_index":374,"title":{},"content":{"36":{"position":[[209,14]]},"38":{"position":[[388,14]]},"39":{"position":[[127,14]]},"40":{"position":[[124,14]]},"43":{"position":[[269,14]]},"44":{"position":[[201,14]]},"46":{"position":[[263,14]]},"51":{"position":[[187,14]]},"351":{"position":[[527,14]]},"353":{"position":[[76,14]]},"356":{"position":[[93,14]]},"359":{"position":[[414,14]]},"362":{"position":[[96,14]]},"366":{"position":[[568,14]]},"369":{"position":[[688,14]]},"371":{"position":[[75,14]]},"374":{"position":[[105,14]]},"377":{"position":[[599,14]]},"380":{"position":[[108,14]]},"382":{"position":[[80,14]]},"385":{"position":[[110,14]]},"389":{"position":[[348,14]]},"392":{"position":[[109,14]]},"395":{"position":[[101,14]]},"398":{"position":[[105,14]]},"410":{"position":[[1074,14]]},"412":{"position":[[73,14]]},"415":{"position":[[1100,14]]},"418":{"position":[[96,14]]},"421":{"position":[[257,14]]},"560":{"position":[[388,14]]},"561":{"position":[[127,14]]},"562":{"position":[[124,14]]},"825":{"position":[[527,14]]},"827":{"position":[[76,14]]},"830":{"position":[[93,14]]},"833":{"position":[[414,14]]},"836":{"position":[[96,14]]},"840":{"position":[[568,14]]},"843":{"position":[[688,14]]},"845":{"position":[[75,14]]},"848":{"position":[[105,14]]},"851":{"position":[[599,14]]},"854":{"position":[[108,14]]},"856":{"position":[[80,14]]},"859":{"position":[[110,14]]},"863":{"position":[[1074,14]]},"865":{"position":[[73,14]]},"868":{"position":[[1100,14]]},"871":{"position":[[96,14]]},"874":{"position":[[257,14]]},"878":{"position":[[348,14]]},"881":{"position":[[109,14]]},"884":{"position":[[101,14]]},"887":{"position":[[105,14]]}},"keywords":{}}],["status\":\"run",{"_index":419,"title":{},"content":{"40":{"position":[[361,19]]},"562":{"position":[[361,19]]}},"keywords":{}}],["status\":\"succeed",{"_index":2786,"title":{},"content":{"371":{"position":[[266,21]]},"845":{"position":[[266,21]]}},"keywords":{}}],["status\":\"termin",{"_index":2819,"title":{},"content":{"398":{"position":[[348,23]]},"887":{"position":[[348,23]]}},"keywords":{}}],["status\":\"wait",{"_index":2816,"title":{},"content":{"392":{"position":[[353,19]]},"395":{"position":[[341,19]]},"881":{"position":[[353,19]]},"884":{"position":[[341,19]]}},"keywords":{}}],["step",{"_index":1189,"title":{"92":{"position":[[91,6]]},"606":{"position":[[91,6]]}},"content":{"92":{"position":[[885,5]]},"99":{"position":[[384,5]]},"145":{"position":[[90,5]]},"263":{"position":[[25,4],[379,4]]},"270":{"position":[[49,4],[602,5]]},"276":{"position":[[5,4]]},"277":{"position":[[7,4]]},"345":{"position":[[102,4]]},"439":{"position":[[289,4]]},"473":{"position":[[140,4]]},"502":{"position":[[1275,6],[1282,4],[1363,5],[2869,4],[2900,5],[3610,4]]},"606":{"position":[[885,5]]},"613":{"position":[[384,5]]},"645":{"position":[[90,5]]},"744":{"position":[[1392,4],[1494,4]]},"777":{"position":[[1675,5]]},"819":{"position":[[102,4]]},"912":{"position":[[117,4]]},"913":{"position":[[137,4],[222,4]]},"933":{"position":[[140,4]]},"937":{"position":[[6,5]]},"950":{"position":[[1700,5]]},"954":{"position":[[2098,5]]},"965":{"position":[[214,6],[5157,4],[9614,4],[9788,6],[14585,4],[14703,4],[14770,4],[14836,4],[14903,4],[14970,4],[15037,4],[15104,4],[15146,4],[15291,4],[15358,4],[15425,4],[15492,4],[15560,4],[15628,4],[15696,4],[15764,4],[15832,4],[15900,4],[15943,4]]},"966":{"position":[[524,5]]},"969":{"position":[[1735,5]]},"980":{"position":[[594,5],[717,5]]}},"keywords":{}}],["step1",{"_index":815,"title":{"59":{"position":[[0,6]]},"568":{"position":[[0,6]]}},"content":{"489":{"position":[[0,6]]}},"keywords":{}}],["step10",{"_index":881,"title":{"68":{"position":[[0,7]]},"577":{"position":[[0,7]]}},"content":{},"keywords":{}}],["step11",{"_index":883,"title":{"69":{"position":[[0,7]]},"578":{"position":[[0,7]]}},"content":{},"keywords":{}}],["step12",{"_index":896,"title":{"70":{"position":[[0,7]]},"579":{"position":[[0,7]]}},"content":{},"keywords":{}}],["step2",{"_index":821,"title":{"60":{"position":[[0,6]]},"569":{"position":[[0,6]]}},"content":{"489":{"position":[[91,6]]}},"keywords":{}}],["step3",{"_index":836,"title":{"61":{"position":[[0,6]]},"570":{"position":[[0,6]]}},"content":{"489":{"position":[[148,6]]}},"keywords":{}}],["step4",{"_index":849,"title":{"62":{"position":[[0,6]]},"571":{"position":[[0,6]]}},"content":{},"keywords":{}}],["step5",{"_index":858,"title":{"63":{"position":[[0,6]]},"572":{"position":[[0,6]]}},"content":{},"keywords":{}}],["step6",{"_index":863,"title":{"64":{"position":[[0,6]]},"573":{"position":[[0,6]]}},"content":{},"keywords":{}}],["step7",{"_index":868,"title":{"65":{"position":[[0,6]]},"574":{"position":[[0,6]]}},"content":{},"keywords":{}}],["step8",{"_index":869,"title":{"66":{"position":[[0,6]]},"575":{"position":[[0,6]]}},"content":{},"keywords":{}}],["step9",{"_index":873,"title":{"67":{"position":[[0,6]]},"576":{"position":[[0,6]]}},"content":{},"keywords":{}}],["step=0",{"_index":2998,"title":{"473":{"position":[[45,7]]},"933":{"position":[[45,7]]}},"content":{},"keywords":{}}],["step=non",{"_index":3770,"title":{"912":{"position":[[42,10]]},"913":{"position":[[40,10]]}},"content":{},"keywords":{}}],["steps=1000",{"_index":3915,"title":{},"content":{"961":{"position":[[175,10],[391,10]]},"963":{"position":[[945,10]]}},"keywords":{}}],["steps=10000",{"_index":4300,"title":{},"content":{"981":{"position":[[650,11]]}},"keywords":{}}],["steps=40000",{"_index":3954,"title":{},"content":{"965":{"position":[[537,11],[10034,11]]}},"keywords":{}}],["steps=500",{"_index":3045,"title":{},"content":{"479":{"position":[[970,9]]},"942":{"position":[[970,9]]}},"keywords":{}}],["steps_per_epoch=70",{"_index":2694,"title":{},"content":{"343":{"position":[[2221,19]]},"817":{"position":[[2274,19]]}},"keywords":{}}],["still",{"_index":671,"title":{},"content":{"53":{"position":[[7215,5]]},"79":{"position":[[1851,5]]},"470":{"position":[[95,5]]},"930":{"position":[[95,5]]},"965":{"position":[[14234,5]]},"992":{"position":[[272,5]]}},"keywords":{}}],["stop",{"_index":3286,"title":{},"content":{"744":{"position":[[1626,4],[1660,4]]},"961":{"position":[[541,4]]},"992":{"position":[[90,4]]}},"keywords":{}}],["stor",{"_index":1438,"title":{"124":{"position":[[9,5]]},"631":{"position":[[9,5]]}},"content":{"110":{"position":[[878,5]]},"116":{"position":[[146,6],[255,6],[310,8]]},"118":{"position":[[228,5],[335,6],[402,7],[504,7]]},"124":{"position":[[78,5]]},"132":{"position":[[719,5]]},"134":{"position":[[0,5],[212,6],[887,5]]},"157":{"position":[[1149,6]]},"160":{"position":[[1290,6],[1345,6]]},"175":{"position":[[122,6]]},"199":{"position":[[391,6],[530,7]]},"200":{"position":[[3,7],[262,6]]},"209":{"position":[[9,6]]},"242":{"position":[[85,5]]},"260":{"position":[[2472,6]]},"298":{"position":[[0,5]]},"313":{"position":[[262,5]]},"496":{"position":[[412,5]]},"600":{"position":[[146,6],[255,6],[310,8]]},"624":{"position":[[883,5]]},"625":{"position":[[228,5],[335,6],[403,7],[505,7]]},"631":{"position":[[78,5]]},"657":{"position":[[1149,6]]},"660":{"position":[[719,5]]},"662":{"position":[[0,5],[212,6],[887,5]]},"667":{"position":[[1291,6],[1346,6]]},"682":{"position":[[122,6]]},"694":{"position":[[391,6],[530,7]]},"695":{"position":[[3,7],[262,6]]},"704":{"position":[[9,6]]},"745":{"position":[[85,5]]},"765":{"position":[[0,5]]},"785":{"position":[[262,5]]},"964":{"position":[[1028,6]]}},"keywords":{}}],["storag",{"_index":1179,"title":{"116":{"position":[[0,7]]},"127":{"position":[[0,7]]},"131":{"position":[[0,7]]},"132":{"position":[[29,8]]},"135":{"position":[[38,8]]},"142":{"position":[[7,8]]},"600":{"position":[[0,7]]},"634":{"position":[[0,7]]},"642":{"position":[[7,8]]},"659":{"position":[[0,7]]},"660":{"position":[[29,8]]},"663":{"position":[[38,8]]}},"content":{"91":{"position":[[403,8]]},"101":{"position":[[98,7]]},"116":{"position":[[449,7],[498,7]]},"118":{"position":[[212,8]]},"127":{"position":[[36,7],[109,8],[134,7],[332,7]]},"132":{"position":[[1068,7],[1694,8]]},"133":{"position":[[135,7],[245,8],[367,7],[544,7],[628,7],[681,8]]},"134":{"position":[[938,8],[991,7],[2375,8]]},"136":{"position":[[131,8]]},"142":{"position":[[28,8],[123,7]]},"148":{"position":[[306,7],[653,7]]},"160":{"position":[[500,7],[1568,8]]},"173":{"position":[[160,8],[179,8]]},"199":{"position":[[595,8]]},"313":{"position":[[378,8],[443,8],[536,8],[1118,8],[1261,8]]},"600":{"position":[[449,7],[498,7]]},"605":{"position":[[403,8]]},"615":{"position":[[98,7]]},"625":{"position":[[212,8]]},"634":{"position":[[36,7],[109,8],[134,7],[332,7]]},"642":{"position":[[28,8],[123,7]]},"648":{"position":[[306,7],[653,7]]},"660":{"position":[[1068,7],[1694,8]]},"661":{"position":[[135,7],[245,8],[367,7],[544,7],[628,7],[681,8]]},"662":{"position":[[938,8],[991,7],[2375,8]]},"664":{"position":[[131,8]]},"667":{"position":[[500,7],[1570,8]]},"680":{"position":[[160,8],[179,8]]},"694":{"position":[[595,8]]},"785":{"position":[[378,8],[443,8],[536,8],[1118,8],[1261,8]]},"963":{"position":[[330,7]]},"964":{"position":[[1847,7]]}},"keywords":{}}],["storage.host.root",{"_index":2432,"title":{},"content":{"313":{"position":[[456,18]]},"785":{"position":[[456,18]]}},"keywords":{}}],["storage.nfs.ip",{"_index":2446,"title":{},"content":{"313":{"position":[[1186,15]]},"785":{"position":[[1186,15]]}},"keywords":{}}],["storage.typ",{"_index":2429,"title":{},"content":{"313":{"position":[[391,13],[1131,13]]},"785":{"position":[[391,13],[1131,13]]}},"keywords":{}}],["store/support",{"_index":1908,"title":{},"content":{"199":{"position":[[439,13]]},"694":{"position":[[439,13]]}},"keywords":{}}],["storemetr",{"_index":1594,"title":{},"content":{"133":{"position":[[37,13]]},"661":{"position":[[37,13]]}},"keywords":{}}],["str",{"_index":2880,"title":{"425":{"position":[[21,4]]},"426":{"position":[[19,4]]},"428":{"position":[[22,4]]},"429":{"position":[[12,4]]},"430":{"position":[[17,4]]},"431":{"position":[[20,4]]},"470":{"position":[[32,3]]},"471":{"position":[[32,4]]},"472":{"position":[[25,4],[37,4]]},"473":{"position":[[26,4]]},"474":{"position":[[33,4],[60,4],[88,3]]},"899":{"position":[[21,4]]},"900":{"position":[[19,4]]},"902":{"position":[[22,4]]},"903":{"position":[[12,4]]},"904":{"position":[[17,4]]},"905":{"position":[[20,4]]},"930":{"position":[[32,3]]},"931":{"position":[[32,4]]},"932":{"position":[[25,4],[37,4]]},"933":{"position":[[26,4]]}},"content":{},"keywords":{}}],["strategi",{"_index":1971,"title":{},"content":{"211":{"position":[[899,9]]},"343":{"position":[[110,9],[1359,8]]},"706":{"position":[[899,9]]},"817":{"position":[[110,9],[1377,8]]},"961":{"position":[[689,8]]}},"keywords":{}}],["strategy.num_replicas_in_sync",{"_index":2674,"title":{},"content":{"343":{"position":[[1562,29]]},"817":{"position":[[1580,29]]}},"keywords":{}}],["strategy.scop",{"_index":2675,"title":{},"content":{"343":{"position":[[1597,17],[1890,19]]},"817":{"position":[[1615,17],[1908,19]]}},"keywords":{}}],["strategy=cpu",{"_index":4301,"title":{},"content":{"981":{"position":[[716,12]]}},"keywords":{}}],["strict",{"_index":736,"title":{},"content":{"53":{"position":[[10799,6]]}},"keywords":{}}],["string",{"_index":1850,"title":{},"content":{"179":{"position":[[131,6],[286,6],[346,6],[440,6]]},"180":{"position":[[135,6],[193,6],[334,6],[388,6],[469,6]]},"181":{"position":[[427,6],[503,6],[546,6],[663,6]]},"350":{"position":[[86,6],[123,6],[201,6],[280,6]]},"355":{"position":[[35,6]]},"358":{"position":[[35,6],[86,6],[174,6]]},"361":{"position":[[35,6]]},"365":{"position":[[339,6],[373,6],[412,6],[445,6],[481,7],[995,6],[1028,6],[1052,6],[1075,6],[1111,7],[1270,6],[1323,6]]},"373":{"position":[[33,6]]},"376":{"position":[[33,6]]},"379":{"position":[[33,6]]},"384":{"position":[[33,6]]},"388":{"position":[[278,6],[310,6],[345,6],[479,7],[522,6]]},"391":{"position":[[33,6]]},"394":{"position":[[33,6]]},"397":{"position":[[33,6]]},"409":{"position":[[35,6],[98,6],[135,6],[405,6],[506,6],[549,6],[883,6],[917,6],[956,6],[989,6],[1025,7],[1208,6],[1241,6],[1265,6],[1288,6],[1324,7],[1403,6],[1438,6]]},"414":{"position":[[35,6],[107,6],[144,6]]},"417":{"position":[[35,6]]},"420":{"position":[[44,6],[87,6],[144,7]]},"471":{"position":[[166,7]]},"472":{"position":[[61,8]]},"686":{"position":[[131,6],[286,6],[346,6],[440,6]]},"687":{"position":[[156,6],[214,6],[355,6],[441,6],[522,6]]},"688":{"position":[[427,6],[503,6],[546,6],[663,6]]},"824":{"position":[[86,6],[123,6],[201,6],[280,6]]},"829":{"position":[[35,6]]},"832":{"position":[[35,6],[86,6],[174,6]]},"835":{"position":[[35,6]]},"839":{"position":[[339,6],[373,6],[412,6],[445,6],[481,7],[995,6],[1028,6],[1052,6],[1075,6],[1111,7],[1270,6],[1323,6]]},"847":{"position":[[33,6]]},"850":{"position":[[33,6]]},"853":{"position":[[33,6]]},"858":{"position":[[33,6]]},"862":{"position":[[35,6],[98,6],[135,6],[405,6],[506,6],[549,6],[883,6],[917,6],[956,6],[989,6],[1025,7],[1208,6],[1241,6],[1265,6],[1288,6],[1324,7],[1403,6],[1438,6]]},"867":{"position":[[35,6],[107,6],[144,6]]},"870":{"position":[[35,6]]},"873":{"position":[[44,6],[87,6],[144,7]]},"877":{"position":[[278,6],[310,6],[345,6],[479,7],[522,6]]},"880":{"position":[[33,6]]},"883":{"position":[[33,6]]},"886":{"position":[[33,6]]},"911":{"position":[[89,6]]},"913":{"position":[[90,6]]},"931":{"position":[[166,7]]},"932":{"position":[[61,8]]}},"keywords":{}}],["string).valu",{"_index":3771,"title":{},"content":{"912":{"position":[[65,14]]}},"keywords":{}}],["strongli",{"_index":957,"title":{},"content":{"76":{"position":[[133,8]]},"585":{"position":[[133,8]]}},"keywords":{}}],["structur",{"_index":1765,"title":{"294":{"position":[[21,9]]},"761":{"position":[[21,9]]}},"content":{"153":{"position":[[327,9]]},"293":{"position":[[35,9]]},"653":{"position":[[327,9]]},"760":{"position":[[35,9]]}},"keywords":{}}],["stv",{"_index":625,"title":{},"content":{"53":{"position":[[5337,5]]}},"keywords":{}}],["styl",{"_index":860,"title":{"437":{"position":[[7,5]]},"921":{"position":[[7,5]]}},"content":{"63":{"position":[[70,6]]},"71":{"position":[[29,6],[52,5]]},"437":{"position":[[73,5]]},"572":{"position":[[70,6]]},"580":{"position":[[29,6],[52,5]]},"921":{"position":[[73,5]]}},"keywords":{}}],["styleshel",{"_index":901,"title":{},"content":{"71":{"position":[[41,10]]},"580":{"position":[[41,10]]}},"keywords":{}}],["su",{"_index":3695,"title":{},"content":{"791":{"position":[[15653,3]]}},"keywords":{}}],["sub",{"_index":723,"title":{},"content":{"53":{"position":[[9583,3]]},"118":{"position":[[161,3]]},"260":{"position":[[2716,3]]},"261":{"position":[[171,3]]},"625":{"position":[[161,3]]}},"keywords":{}}],["subfold",{"_index":3075,"title":{},"content":{"481":{"position":[[1811,9]]},"944":{"position":[[1811,9]]}},"keywords":{}}],["subject",{"_index":550,"title":{},"content":{"53":{"position":[[2300,7],[4742,7],[6065,7],[10786,7],[10961,7]]}},"keywords":{}}],["submarin",{"_index":0,"title":{"0":{"position":[[0,9]]},"3":{"position":[[8,9]]},"5":{"position":[[7,9]]},"7":{"position":[[10,9]]},"55":{"position":[[21,9]]},"57":{"position":[[6,9]]},"60":{"position":[[17,9]]},"61":{"position":[[28,9]]},"72":{"position":[[17,9]]},"79":{"position":[[33,9]]},"80":{"position":[[7,9]]},"99":{"position":[[4,10]]},"117":{"position":[[45,9]]},"125":{"position":[[0,9]]},"129":{"position":[[0,9]]},"149":{"position":[[34,9]]},"159":{"position":[[0,9]]},"161":{"position":[[0,9]]},"163":{"position":[[0,9]]},"173":{"position":[[31,9]]},"183":{"position":[[0,9]]},"216":{"position":[[13,9]]},"219":{"position":[[18,9]]},"222":{"position":[[17,9]]},"242":{"position":[[8,9]]},"277":{"position":[[15,9]]},"281":{"position":[[12,9]]},"294":{"position":[[3,9]]},"295":{"position":[[5,9]]},"296":{"position":[[5,9]]},"297":{"position":[[5,9]]},"298":{"position":[[5,9]]},"299":{"position":[[5,9]]},"300":{"position":[[5,9]]},"301":{"position":[[5,9]]},"302":{"position":[[5,9]]},"308":{"position":[[7,9]]},"310":{"position":[[7,9]]},"312":{"position":[[10,9]]},"314":{"position":[[10,9]]},"322":{"position":[[16,9]]},"329":{"position":[[0,9]]},"330":{"position":[[34,9]]},"331":{"position":[[8,9]]},"334":{"position":[[7,9]]},"339":{"position":[[7,9]]},"340":{"position":[[7,9]]},"432":{"position":[[0,9]]},"442":{"position":[[0,9]]},"460":{"position":[[0,9]]},"463":{"position":[[8,9]]},"465":{"position":[[7,9]]},"467":{"position":[[10,9]]},"475":{"position":[[8,9]]},"477":{"position":[[0,9]]},"487":{"position":[[16,9]]},"488":{"position":[[11,9]]},"489":{"position":[[22,9]]},"490":{"position":[[4,9]]},"491":{"position":[[0,9]]},"492":{"position":[[0,9]]},"564":{"position":[[21,9]]},"566":{"position":[[6,9]]},"569":{"position":[[17,9]]},"570":{"position":[[28,9]]},"581":{"position":[[17,9]]},"587":{"position":[[7,9]]},"601":{"position":[[45,9]]},"613":{"position":[[4,10]]},"632":{"position":[[0,9]]},"636":{"position":[[0,9]]},"649":{"position":[[34,9]]},"666":{"position":[[0,9]]},"668":{"position":[[0,9]]},"670":{"position":[[0,9]]},"680":{"position":[[31,9]]},"711":{"position":[[0,9]]},"724":{"position":[[17,9]]},"730":{"position":[[13,9]]},"733":{"position":[[18,9]]},"745":{"position":[[8,9]]},"761":{"position":[[3,9]]},"762":{"position":[[5,9]]},"763":{"position":[[5,9]]},"764":{"position":[[5,9]]},"765":{"position":[[5,9]]},"766":{"position":[[5,9]]},"767":{"position":[[5,9]]},"768":{"position":[[5,9]]},"769":{"position":[[5,9]]},"770":{"position":[[5,9]]},"772":{"position":[[16,9]]},"780":{"position":[[7,9]]},"782":{"position":[[7,9]]},"784":{"position":[[10,9]]},"786":{"position":[[10,9]]},"799":{"position":[[0,9]]},"800":{"position":[[34,9]]},"801":{"position":[[8,9]]},"804":{"position":[[7,9]]},"813":{"position":[[7,9]]},"814":{"position":[[7,9]]},"926":{"position":[[0,9]]},"934":{"position":[[9,9]]},"935":{"position":[[0,9]]},"940":{"position":[[22,9]]},"992":{"position":[[24,10]]}},"content":{"3":{"position":[[57,9],[82,9],[127,9]]},"4":{"position":[[260,9],[312,9],[362,9],[914,9]]},"7":{"position":[[14,9]]},"9":{"position":[[109,9],[696,9]]},"10":{"position":[[247,9],[729,9]]},"11":{"position":[[105,9],[269,9]]},"12":{"position":[[119,9],[428,9],[609,9]]},"13":{"position":[[108,9],[272,9]]},"23":{"position":[[359,9],[599,9],[632,10],[1264,9]]},"53":{"position":[[56,9],[207,9],[312,11],[379,9],[475,9],[1514,9],[3700,9],[3763,9],[3930,9],[4045,9],[4939,10],[5053,9],[5136,9],[5493,9],[6006,9],[7015,9],[7312,9],[7445,9]]},"54":{"position":[[7,9],[203,9],[251,9],[391,9],[449,9],[521,9],[1265,10],[1925,10],[2048,9],[2348,9],[2512,9],[2881,9]]},"56":{"position":[[7,9],[68,9]]},"58":{"position":[[0,9]]},"60":{"position":[[159,9]]},"61":{"position":[[157,9],[253,9],[318,9]]},"62":{"position":[[3,9],[147,9],[188,9],[240,9]]},"63":{"position":[[29,9],[146,10],[217,10]]},"64":{"position":[[5,9]]},"65":{"position":[[16,9]]},"70":{"position":[[20,9]]},"73":{"position":[[360,9]]},"74":{"position":[[0,9]]},"76":{"position":[[0,9]]},"79":{"position":[[25,9],[202,10],[234,9],[701,10],[730,9],[1185,9],[1473,9],[2228,10]]},"81":{"position":[[274,9]]},"82":{"position":[[238,9],[313,9],[548,9]]},"83":{"position":[[491,9]]},"84":{"position":[[37,9]]},"85":{"position":[[25,9]]},"86":{"position":[[22,9]]},"87":{"position":[[0,9]]},"96":{"position":[[523,10]]},"98":{"position":[[11,9],[588,9]]},"99":{"position":[[13,9],[623,9]]},"102":{"position":[[15,9]]},"105":{"position":[[0,9],[125,9]]},"106":{"position":[[0,9],[217,9],[344,9]]},"107":{"position":[[66,9],[509,9],[545,9],[588,9]]},"110":{"position":[[71,9],[116,9],[217,9],[854,10],[1353,9],[1446,9],[1490,9],[1524,9],[1604,9],[1644,9]]},"115":{"position":[[1224,9]]},"116":{"position":[[15,9],[80,9]]},"117":{"position":[[702,12],[740,9],[791,9],[1207,9],[1241,9]]},"118":{"position":[[175,9],[202,9],[583,9],[805,9],[830,9],[928,9]]},"121":{"position":[[143,9],[166,9]]},"125":{"position":[[27,9],[65,10],[116,9],[296,9],[568,9],[611,9],[645,9]]},"126":{"position":[[36,9]]},"127":{"position":[[61,9],[291,9]]},"128":{"position":[[0,9],[215,9]]},"129":{"position":[[87,9],[102,9],[154,9],[182,9],[314,9],[365,9],[413,9],[532,9],[548,9],[604,9],[649,9]]},"132":{"position":[[534,9],[1408,9]]},"133":{"position":[[375,9]]},"134":{"position":[[947,9],[1736,9]]},"135":{"position":[[100,9],[472,9]]},"136":{"position":[[508,9]]},"137":{"position":[[14,9],[52,9]]},"139":{"position":[[159,9],[1107,9],[1493,9]]},"148":{"position":[[530,9]]},"149":{"position":[[33,9]]},"151":{"position":[[145,9]]},"152":{"position":[[445,9],[528,9],[1114,9],[1200,9],[1225,10]]},"158":{"position":[[143,9],[480,9],[995,9],[1020,9],[2500,9],[2894,9]]},"160":{"position":[[17,9],[114,9],[652,9],[755,10],[1036,9],[1469,10],[1483,9],[1597,9]]},"161":{"position":[[0,9],[165,9],[260,9],[358,9]]},"162":{"position":[[913,9],[991,9]]},"163":{"position":[[24,9]]},"173":{"position":[[100,9]]},"177":{"position":[[38,9],[352,9]]},"178":{"position":[[435,11]]},"180":{"position":[[273,9],[299,9]]},"182":{"position":[[18,9]]},"184":{"position":[[0,9],[498,9],[599,9]]},"186":{"position":[[4,9],[72,9],[263,9],[733,9],[802,9]]},"187":{"position":[[29,10],[143,9],[169,9]]},"189":{"position":[[4,9],[103,9]]},"190":{"position":[[71,10],[105,9],[218,9]]},"191":{"position":[[0,9]]},"197":{"position":[[4,9],[62,9],[101,9],[218,10],[399,9],[711,9]]},"199":{"position":[[9,9],[60,9]]},"201":{"position":[[14,9]]},"203":{"position":[[176,9]]},"205":{"position":[[16,9],[59,9],[220,9]]},"206":{"position":[[77,9]]},"207":{"position":[[257,9],[478,9]]},"208":{"position":[[365,9],[386,9],[459,9],[480,9],[669,9],[690,9],[831,9],[852,9]]},"209":{"position":[[171,9],[213,9],[257,9],[309,9],[448,9],[498,9],[548,9],[591,9]]},"211":{"position":[[41,9],[62,9],[120,9],[141,9],[262,9],[342,9],[363,9],[483,9],[504,9],[656,9],[1229,9],[1284,9],[1305,9]]},"212":{"position":[[66,9],[147,9],[238,9]]},"215":{"position":[[52,9]]},"219":{"position":[[0,9],[370,9],[452,9]]},"233":{"position":[[69,9]]},"236":{"position":[[395,9]]},"238":{"position":[[116,9],[165,9],[622,9]]},"239":{"position":[[11,9],[172,9]]},"240":{"position":[[331,9]]},"242":{"position":[[0,9],[200,9]]},"252":{"position":[[1970,9],[2021,9],[2194,9],[2252,9],[2319,9],[2377,9],[2561,9]]},"253":{"position":[[192,9],[357,9],[433,9]]},"254":{"position":[[13,9]]},"255":{"position":[[13,9],[71,9]]},"257":{"position":[[125,9],[340,9]]},"263":{"position":[[564,9],[585,9],[803,9],[888,9],[1243,9],[1268,9],[1490,9],[1579,9]]},"269":{"position":[[116,9],[209,9],[259,9],[317,9]]},"270":{"position":[[69,9],[166,9],[244,9],[363,11],[402,9],[454,9]]},"274":{"position":[[15,9],[111,9],[188,9]]},"278":{"position":[[164,9]]},"279":{"position":[[151,9]]},"280":{"position":[[15,9]]},"281":{"position":[[30,9],[209,9],[310,9],[970,9],[1223,9],[1288,9],[1585,9]]},"284":{"position":[[158,9]]},"286":{"position":[[181,9],[292,9],[332,9],[492,9]]},"288":{"position":[[99,9]]},"289":{"position":[[26,9],[70,9],[324,9],[425,9],[930,9],[1189,9]]},"293":{"position":[[67,9]]},"295":{"position":[[30,9]]},"296":{"position":[[17,9]]},"299":{"position":[[23,9]]},"301":{"position":[[36,10]]},"302":{"position":[[365,9]]},"303":{"position":[[5,10],[54,10],[105,9],[158,9],[327,9],[354,9],[435,9]]},"305":{"position":[[99,9],[284,9],[305,9],[389,9]]},"306":{"position":[[116,9],[302,10],[479,10]]},"310":{"position":[[53,9],[76,9],[140,9]]},"312":{"position":[[15,9]]},"313":{"position":[[0,9]]},"314":{"position":[[0,9],[71,9],[963,9],[1124,9],[1161,9]]},"316":{"position":[[30,9]]},"323":{"position":[[190,9]]},"324":{"position":[[7,9],[246,9],[554,9],[800,9],[825,9],[1071,9],[1096,9],[1173,9],[1251,9],[1313,9]]},"328":{"position":[[40,9],[79,9],[186,9],[539,9],[1612,9]]},"330":{"position":[[0,9]]},"332":{"position":[[21,9],[142,10],[204,9]]},"334":{"position":[[26,9],[157,9]]},"335":{"position":[[4,9]]},"339":{"position":[[85,9],[138,9],[161,9],[209,9],[268,9],[326,9]]},"340":{"position":[[241,9],[295,9],[346,9],[398,9],[452,9],[503,9],[560,9]]},"343":{"position":[[424,9]]},"345":{"position":[[5,9]]},"346":{"position":[[20,9],[35,9]]},"351":{"position":[[74,9],[678,9]]},"353":{"position":[[556,9]]},"356":{"position":[[63,9],[244,9]]},"359":{"position":[[75,9],[384,9],[565,9]]},"362":{"position":[[66,9],[247,9]]},"369":{"position":[[325,9],[565,9],[598,10],[1282,9]]},"371":{"position":[[1763,9]]},"374":{"position":[[699,9]]},"401":{"position":[[43,9]]},"423":{"position":[[12,9]]},"424":{"position":[[50,9],[172,9],[207,9]]},"425":{"position":[[36,9],[78,9],[199,9]]},"426":{"position":[[57,9],[118,9]]},"427":{"position":[[117,9]]},"428":{"position":[[11,9],[48,9],[117,9]]},"429":{"position":[[103,9]]},"430":{"position":[[104,9]]},"431":{"position":[[65,9],[184,9]]},"433":{"position":[[166,9]]},"435":{"position":[[161,9],[201,9],[507,11],[632,11]]},"436":{"position":[[210,9]]},"437":{"position":[[296,9]]},"438":{"position":[[130,9],[341,9]]},"439":{"position":[[90,9]]},"440":{"position":[[279,9]]},"441":{"position":[[11,9],[147,9]]},"444":{"position":[[0,9],[34,9]]},"445":{"position":[[0,9]]},"446":{"position":[[0,9],[93,9]]},"447":{"position":[[0,9],[56,9]]},"449":{"position":[[0,9]]},"450":{"position":[[0,9]]},"451":{"position":[[0,9]]},"453":{"position":[[0,9]]},"454":{"position":[[0,9]]},"455":{"position":[[0,9]]},"457":{"position":[[0,9]]},"458":{"position":[[0,9]]},"459":{"position":[[0,9]]},"463":{"position":[[57,9],[82,9],[127,9]]},"464":{"position":[[260,9],[312,9],[362,9],[914,9]]},"467":{"position":[[14,9]]},"470":{"position":[[126,9]]},"471":{"position":[[95,9],[191,9]]},"476":{"position":[[101,10]]},"477":{"position":[[41,9]]},"487":{"position":[[195,9]]},"488":{"position":[[30,9],[65,9],[132,9],[196,9],[374,9],[456,9]]},"489":{"position":[[17,9],[62,9],[367,9]]},"490":{"position":[[3,9],[262,9]]},"491":{"position":[[0,9],[57,9],[115,9],[207,9],[347,9],[408,9],[576,9]]},"492":{"position":[[0,9],[60,9],[120,9],[187,9],[263,9],[535,9],[915,9],[1267,9]]},"495":{"position":[[845,9],[880,9]]},"496":{"position":[[247,9]]},"498":{"position":[[26,9],[93,9],[367,9],[591,9]]},"499":{"position":[[5,9],[48,9]]},"500":{"position":[[7,9],[445,9],[523,9]]},"516":{"position":[[11,9]]},"518":{"position":[[7,9],[37,9],[122,9],[200,9]]},"519":{"position":[[3,9],[40,9]]},"520":{"position":[[2,9],[190,9],[223,9]]},"522":{"position":[[81,9],[240,12]]},"536":{"position":[[11,9]]},"538":{"position":[[109,9],[696,9]]},"539":{"position":[[247,9],[729,9]]},"540":{"position":[[105,9],[269,9]]},"541":{"position":[[119,9],[428,9],[609,9]]},"542":{"position":[[108,9],[272,9]]},"552":{"position":[[359,9],[599,9],[632,10],[1264,9]]},"565":{"position":[[7,9],[68,9]]},"567":{"position":[[0,9]]},"569":{"position":[[159,9]]},"570":{"position":[[157,9],[253,9],[318,9]]},"571":{"position":[[3,9],[147,9],[188,9],[240,9]]},"572":{"position":[[29,9],[146,10],[217,10]]},"573":{"position":[[5,9]]},"574":{"position":[[16,9]]},"579":{"position":[[20,9]]},"582":{"position":[[360,9]]},"583":{"position":[[0,9]]},"585":{"position":[[0,9]]},"589":{"position":[[238,9],[313,9],[548,9]]},"591":{"position":[[37,9]]},"592":{"position":[[25,9]]},"593":{"position":[[22,9]]},"594":{"position":[[0,9]]},"599":{"position":[[1224,9]]},"600":{"position":[[15,9],[80,9]]},"601":{"position":[[702,12],[740,9],[791,9],[1207,9],[1241,9]]},"610":{"position":[[523,10]]},"612":{"position":[[11,9],[588,9]]},"613":{"position":[[13,9],[623,9]]},"616":{"position":[[15,9]]},"619":{"position":[[0,9],[125,9]]},"620":{"position":[[0,9],[217,9],[344,9]]},"621":{"position":[[66,9],[510,9],[546,9],[589,9]]},"624":{"position":[[71,9],[116,9],[217,9],[859,10],[1358,9],[1451,9],[1495,9],[1529,9],[1609,9],[1649,9]]},"625":{"position":[[175,9],[202,9],[345,10],[356,9],[584,9],[806,9],[831,9],[929,9]]},"628":{"position":[[143,9],[166,9]]},"632":{"position":[[27,9],[65,10],[116,9],[296,9],[568,9],[611,9],[645,9]]},"633":{"position":[[36,9]]},"634":{"position":[[61,9],[291,9]]},"635":{"position":[[0,9],[215,9]]},"636":{"position":[[87,9],[102,9],[154,9],[182,9],[314,9],[365,9],[413,9],[532,9],[548,9],[604,9],[649,9]]},"639":{"position":[[159,9],[1112,9],[1500,9]]},"648":{"position":[[530,9]]},"649":{"position":[[33,9]]},"651":{"position":[[145,9]]},"652":{"position":[[451,9],[534,9],[1394,9],[1480,9],[1505,10]]},"658":{"position":[[143,9],[480,9],[995,9],[1020,9],[2500,9],[2894,9]]},"660":{"position":[[534,9],[1408,9]]},"661":{"position":[[375,9]]},"662":{"position":[[947,9],[1736,9]]},"663":{"position":[[100,9],[472,9]]},"664":{"position":[[508,9]]},"665":{"position":[[14,9],[52,9]]},"667":{"position":[[17,9],[114,9],[652,9],[755,10],[1037,9],[1471,10],[1485,9],[1599,9]]},"668":{"position":[[0,9],[165,9],[260,9],[358,9]]},"669":{"position":[[1166,9],[1244,9]]},"670":{"position":[[24,9]]},"680":{"position":[[100,9]]},"684":{"position":[[38,9],[352,9]]},"685":{"position":[[435,11]]},"687":{"position":[[294,9],[320,9]]},"689":{"position":[[18,9]]},"692":{"position":[[4,9],[62,9],[101,9],[218,10],[399,9],[711,9]]},"694":{"position":[[9,9],[60,9]]},"696":{"position":[[14,9]]},"698":{"position":[[176,9]]},"700":{"position":[[16,9],[59,9],[220,9]]},"701":{"position":[[77,9]]},"702":{"position":[[257,9],[478,9]]},"703":{"position":[[365,9],[386,9],[459,9],[480,9],[669,9],[690,9],[831,9],[852,9]]},"704":{"position":[[171,9],[213,9],[257,9],[309,9],[448,9],[498,9],[548,9],[591,9]]},"706":{"position":[[41,9],[62,9],[120,9],[141,9],[262,9],[342,9],[363,9],[483,9],[504,9],[656,9],[1229,9],[1284,9],[1305,9]]},"707":{"position":[[66,9],[147,9],[238,9]]},"710":{"position":[[52,9]]},"712":{"position":[[0,9],[498,9],[604,9]]},"714":{"position":[[4,9],[72,9],[263,9],[733,9],[802,9]]},"715":{"position":[[29,10],[143,9],[169,9]]},"717":{"position":[[4,9],[103,9]]},"718":{"position":[[76,10],[110,9],[223,9]]},"719":{"position":[[0,9]]},"733":{"position":[[0,9],[370,9],[452,9]]},"737":{"position":[[69,9]]},"740":{"position":[[398,9]]},"742":{"position":[[116,9],[165,9],[571,9]]},"743":{"position":[[11,9],[156,9]]},"744":{"position":[[331,9],[508,9],[669,9],[803,9],[898,11],[933,9],[1006,9],[1043,9],[1304,9],[1545,9],[1570,9],[1588,9],[1601,9],[1725,9]]},"745":{"position":[[0,9],[200,9]]},"751":{"position":[[99,9]]},"752":{"position":[[26,9],[70,9],[324,9],[425,9],[930,9],[1189,9]]},"756":{"position":[[99,9],[284,9],[305,9],[389,9]]},"757":{"position":[[116,9],[302,10],[479,10]]},"760":{"position":[[67,9]]},"762":{"position":[[30,9]]},"763":{"position":[[17,9]]},"766":{"position":[[23,9]]},"769":{"position":[[36,10]]},"770":{"position":[[365,9]]},"771":{"position":[[5,10],[54,10],[105,9],[158,9],[327,9],[354,9],[435,9]]},"773":{"position":[[190,9]]},"774":{"position":[[7,9],[253,9],[278,9],[524,9],[549,9],[626,9],[704,9],[766,9]]},"782":{"position":[[53,9],[76,9],[140,9]]},"784":{"position":[[15,9]]},"785":{"position":[[0,9]]},"786":{"position":[[0,9],[71,9],[963,9],[1124,9],[1161,9]]},"793":{"position":[[30,9]]},"800":{"position":[[0,9]]},"802":{"position":[[21,9],[142,10],[204,9]]},"804":{"position":[[26,9],[157,9]]},"805":{"position":[[4,9]]},"809":{"position":[[40,9],[79,9],[186,9],[559,9],[1632,9]]},"813":{"position":[[116,9],[141,9]]},"814":{"position":[[247,9],[303,9],[356,9],[409,9],[463,9],[522,9]]},"817":{"position":[[422,9]]},"819":{"position":[[5,9]]},"820":{"position":[[37,9]]},"825":{"position":[[74,9],[678,9]]},"827":{"position":[[556,9]]},"830":{"position":[[63,9],[244,9]]},"833":{"position":[[75,9],[384,9],[565,9]]},"836":{"position":[[66,9],[247,9]]},"843":{"position":[[325,9],[565,9],[598,10],[1282,9]]},"845":{"position":[[1763,9]]},"848":{"position":[[699,9]]},"890":{"position":[[43,9]]},"897":{"position":[[12,9]]},"898":{"position":[[50,9],[172,9],[207,9]]},"899":{"position":[[36,9],[78,9],[199,9]]},"900":{"position":[[57,9],[118,9]]},"901":{"position":[[117,9]]},"902":{"position":[[11,9],[48,9],[117,9]]},"903":{"position":[[103,9]]},"904":{"position":[[104,9]]},"905":{"position":[[65,9],[184,9]]},"907":{"position":[[4,9]]},"908":{"position":[[71,10],[182,10],[313,9]]},"910":{"position":[[105,9]]},"911":{"position":[[118,9]]},"912":{"position":[[175,9]]},"913":{"position":[[246,9]]},"919":{"position":[[161,9],[201,9],[492,11],[629,11]]},"920":{"position":[[210,9]]},"921":{"position":[[296,9]]},"922":{"position":[[130,9],[341,9]]},"923":{"position":[[90,9]]},"924":{"position":[[267,9]]},"925":{"position":[[11,9],[147,9]]},"927":{"position":[[166,9]]},"930":{"position":[[126,9]]},"931":{"position":[[95,9],[191,9]]},"934":{"position":[[0,9],[99,9],[186,10],[229,9]]},"936":{"position":[[52,9]]},"938":{"position":[[10,9]]},"940":{"position":[[28,9],[82,9],[133,9]]},"975":{"position":[[22,9]]},"981":{"position":[[1416,9],[1481,9],[1519,9],[1610,9],[1651,9],[1710,9]]},"992":{"position":[[14,9],[302,10],[400,9]]}},"keywords":{}}],["submarine'",{"_index":1285,"title":{},"content":{"98":{"position":[[507,11]]},"102":{"position":[[180,11]]},"107":{"position":[[657,11]]},"108":{"position":[[256,11]]},"124":{"position":[[57,11]]},"160":{"position":[[628,11],[1304,11]]},"202":{"position":[[13,11]]},"612":{"position":[[507,11]]},"616":{"position":[[180,11]]},"621":{"position":[[658,11]]},"622":{"position":[[256,11]]},"631":{"position":[[57,11]]},"667":{"position":[[628,11],[1305,11]]},"697":{"position":[[13,11]]}},"keywords":{}}],["submarine.cli",{"_index":2953,"title":{},"content":{"439":{"position":[[907,16],[942,19],[978,19],[1054,19]]}},"keywords":{}}],["submarine.client.models.code_spec",{"_index":2550,"title":{},"content":{"328":{"position":[[480,33]]}},"keywords":{}}],["submarine.client.models.environment_spec",{"_index":2544,"title":{},"content":{"328":{"position":[[201,40]]}},"keywords":{}}],["submarine.client.models.experiment_meta",{"_index":2548,"title":{},"content":{"328":{"position":[[413,39]]}},"keywords":{}}],["submarine.client.models.experiment_spec",{"_index":2545,"title":{},"content":{"328":{"position":[[270,39]]}},"keywords":{}}],["submarine.client.models.experiment_task_spec",{"_index":2546,"title":{},"content":{"328":{"position":[[337,44]]}},"keywords":{}}],["submarine.database.dev=tru",{"_index":2061,"title":{},"content":{"240":{"position":[[303,27]]},"744":{"position":[[303,27]]}},"keywords":{}}],["submarine.experiment.models.code_spec",{"_index":3733,"title":{},"content":{"809":{"position":[[496,37]]}},"keywords":{}}],["submarine.experiment.models.environment_spec",{"_index":3729,"title":{},"content":{"809":{"position":[[201,44]]}},"keywords":{}}],["submarine.experiment.models.experiment_meta",{"_index":3732,"title":{},"content":{"809":{"position":[[425,43]]}},"keywords":{}}],["submarine.experiment.models.experiment_spec",{"_index":3730,"title":{},"content":{"809":{"position":[[274,43]]}},"keywords":{}}],["submarine.experiment.models.experiment_task_spec",{"_index":3731,"title":{},"content":{"809":{"position":[[345,48]]}},"keywords":{}}],["submarine.experimentcli",{"_index":2553,"title":{},"content":{"328":{"position":[[575,28]]},"809":{"position":[[595,28]]}},"keywords":{}}],["submarine.get_tracking_uri",{"_index":2985,"title":{"470":{"position":[[0,28]]},"930":{"position":[[0,28]]}},"content":{},"keywords":{}}],["submarine.log_metric(key",{"_index":2996,"title":{"473":{"position":[[0,25]]},"933":{"position":[[0,25]]}},"content":{},"keywords":{}}],["submarine.log_metrics({\"loss",{"_index":2689,"title":{},"content":{"343":{"position":[[2094,30]]}},"keywords":{}}],["submarine.log_param(key",{"_index":2994,"title":{"472":{"position":[[0,24]]},"932":{"position":[[0,24]]}},"content":{},"keywords":{}}],["submarine.save_model(model_typ",{"_index":3000,"title":{"474":{"position":[[0,32]]}},"content":{},"keywords":{}}],["submarine.server.addr",{"_index":1931,"title":{},"content":{"206":{"position":[[6,21]]},"207":{"position":[[165,21]]},"208":{"position":[[152,21]]},"701":{"position":[[6,21]]},"702":{"position":[[165,21]]},"703":{"position":[[152,21]]}},"keywords":{}}],["submarine.server.addr=ip1",{"_index":1933,"title":{},"content":{"206":{"position":[[97,26]]},"701":{"position":[[97,26]]}},"keywords":{}}],["submarine.server.dev",{"_index":3278,"title":{},"content":{"742":{"position":[[614,20]]}},"keywords":{}}],["submarine.server.dev=tru",{"_index":3277,"title":{},"content":{"742":{"position":[[545,25]]}},"keywords":{}}],["submarine.server.port",{"_index":3174,"title":{},"content":{"492":{"position":[[165,21]]}},"keywords":{}}],["submarine.server.ssl.port",{"_index":3177,"title":{},"content":{"492":{"position":[[297,25]]}},"keywords":{}}],["submarine.set_tracking_uri(uri",{"_index":2988,"title":{"471":{"position":[[0,31]]},"931":{"position":[[0,31]]}},"content":{},"keywords":{}}],["submarine.ssl",{"_index":3175,"title":{},"content":{"492":{"position":[[223,13]]}},"keywords":{}}],["submarine.ssl.client.auth",{"_index":3179,"title":{},"content":{"492":{"position":[[394,25]]}},"keywords":{}}],["submarine.ssl.key.manager.password",{"_index":3187,"title":{},"content":{"492":{"position":[[747,34]]}},"keywords":{}}],["submarine.ssl.keystore.password",{"_index":3185,"title":{},"content":{"492":{"position":[[651,31]]}},"keywords":{}}],["submarine.ssl.keystore.path",{"_index":3180,"title":{},"content":{"492":{"position":[[478,27]]}},"keywords":{}}],["submarine.ssl.keystore.typ",{"_index":3182,"title":{},"content":{"492":{"position":[[569,27]]}},"keywords":{}}],["submarine.ssl.truststore.password",{"_index":3191,"title":{},"content":{"492":{"position":[[1114,33]]}},"keywords":{}}],["submarine.ssl.truststore.path",{"_index":3188,"title":{},"content":{"492":{"position":[[854,29]]}},"keywords":{}}],["submarine.ssl.truststore.typ",{"_index":3190,"title":{},"content":{"492":{"position":[[980,29]]}},"keywords":{}}],["submarine.submarin",{"_index":1528,"title":{},"content":{"118":{"position":[[267,19],[345,19]]},"625":{"position":[[267,19]]}},"keywords":{}}],["submarine.yaml",{"_index":2605,"title":{},"content":{"339":{"position":[[372,14]]},"744":{"position":[[1093,14]]}},"keywords":{}}],["submarine/docker/ecosyst",{"_index":3353,"title":{},"content":{"788":{"position":[[539,27]]}},"keywords":{}}],["submarine/submarin",{"_index":2381,"title":{},"content":{"289":{"position":[[1241,19]]},"333":{"position":[[265,19]]},"439":{"position":[[1246,19]]},"752":{"position":[[1241,19]]},"803":{"position":[[265,19]]}},"keywords":{}}],["submarine/website/doc",{"_index":2066,"title":{},"content":{"242":{"position":[[141,23]]},"745":{"position":[[141,23]]}},"keywords":{}}],["submarine:hadoop",{"_index":2513,"title":{},"content":{"324":{"position":[[1156,16]]},"774":{"position":[[609,16]]}},"keywords":{}}],["submarine:submarin",{"_index":2504,"title":{},"content":{"324":{"position":[[641,19],[912,19],[1374,19]]},"774":{"position":[[94,19],[365,19],[827,19]]}},"keywords":{}}],["submarine==0.5.0",{"_index":172,"title":{},"content":{"9":{"position":[[460,18],[1047,18]]},"10":{"position":[[598,18]]},"11":{"position":[[620,18]]},"324":{"position":[[530,16]]},"351":{"position":[[425,18]]},"538":{"position":[[460,18],[1047,18]]},"539":{"position":[[598,18]]},"540":{"position":[[620,18]]},"825":{"position":[[425,18]]}},"keywords":{}}],["submarine==<replace_v",{"_index":2590,"title":{},"content":{"332":{"position":[[260,28]]},"802":{"position":[[260,28]]}},"keywords":{}}],["submarine\\u003d\\u003d0.5.0",{"_index":2718,"title":{},"content":{"351":{"position":[[1069,28]]},"353":{"position":[[947,28]]},"356":{"position":[[635,28]]},"362":{"position":[[638,28]]},"825":{"position":[[1069,28]]},"827":{"position":[[947,28]]},"830":{"position":[[635,28]]},"836":{"position":[[638,28]]}},"keywords":{}}],["submarine_cli",{"_index":2552,"title":{},"content":{"328":{"position":[[556,16]]},"809":{"position":[[576,16]]}},"keywords":{}}],["submarine_client.create_experiment(experiment_spec=experiment_spec",{"_index":2576,"title":{},"content":{"328":{"position":[[1317,67]]},"809":{"position":[[1337,67]]}},"keywords":{}}],["submarine_docker_imag",{"_index":1518,"title":{},"content":{"117":{"position":[[974,24],[1134,24]]},"601":{"position":[[974,24],[1134,24]]}},"keywords":{}}],["submarine_experiment_sdk.ipynb",{"_index":2577,"title":{},"content":{"328":{"position":[[1484,30]]},"809":{"position":[[1504,30]]}},"keywords":{}}],["submarine_hadoop_version=3.1",{"_index":4259,"title":{},"content":{"980":{"position":[[142,28]]},"981":{"position":[[36,28]]},"985":{"position":[[139,28]]},"986":{"position":[[36,28]]},"990":{"position":[[79,28]]},"991":{"position":[[114,28]]}},"keywords":{}}],["submarine_hadoop_version}.jar",{"_index":4264,"title":{},"content":{"980":{"position":[[258,31],[925,31]]},"981":{"position":[[152,31],[1194,31]]},"985":{"position":[[255,31],[785,31]]},"986":{"position":[[152,31],[904,31]]},"990":{"position":[[195,31],[1079,31]]},"991":{"position":[[230,31],[1100,31]]}},"keywords":{}}],["submarine_home}/dev",{"_index":2036,"title":{},"content":{"236":{"position":[[293,21]]},"740":{"position":[[296,21]]}},"keywords":{}}],["submarine_java_opt",{"_index":3164,"title":{},"content":{"491":{"position":[[290,19]]}},"keywords":{}}],["submarine_m",{"_index":3168,"title":{},"content":{"491":{"position":[[523,13]]}},"keywords":{}}],["submarine_server_port",{"_index":1953,"title":{},"content":{"209":{"position":[[191,21]]},"704":{"position":[[191,21]]}},"keywords":{}}],["submarine_tensorboard_log_dir",{"_index":2833,"title":{},"content":{"404":{"position":[[0,30],[105,32]]},"893":{"position":[[0,30],[105,32]]}},"keywords":{}}],["submarine_tracking_uri",{"_index":2989,"title":{},"content":{"471":{"position":[[43,22]]},"931":{"position":[[43,22]]}},"keywords":{}}],["submarine_v",{"_index":4263,"title":{},"content":{"980":{"position":[[230,20],[897,20]]},"981":{"position":[[124,20],[1166,20],[1533,20]]},"985":{"position":[[227,20],[757,20]]},"986":{"position":[[124,20],[876,20]]},"990":{"position":[[167,20],[1051,20]]},"991":{"position":[[202,20],[1072,20]]}},"keywords":{}}],["submarine_version=3.3.0",{"_index":3362,"title":{},"content":{"791":{"position":[[47,23]]}},"keywords":{}}],["submarine_version=<replace_v",{"_index":4258,"title":{},"content":{"980":{"position":[[106,35]]},"981":{"position":[[0,35]]},"985":{"position":[[103,35]]},"986":{"position":[[0,35]]},"990":{"position":[[43,35]]},"991":{"position":[[78,35]]}},"keywords":{}}],["submarine_version}.jar",{"_index":4317,"title":{},"content":{"981":{"position":[[1625,25],[1681,24],[1733,25]]}},"keywords":{}}],["submarineani",{"_index":789,"title":{},"content":{"54":{"position":[[1977,12]]}},"keywords":{}}],["submarinecliconf",{"_index":2980,"title":{},"content":{"445":{"position":[[70,18]]}},"keywords":{}}],["submarineserv",{"_index":2041,"title":{},"content":{"237":{"position":[[115,16]]},"491":{"position":[[179,15]]},"741":{"position":[[115,16]]}},"keywords":{}}],["submarineservert",{"_index":2040,"title":{},"content":{"237":{"position":[[75,19]]},"741":{"position":[[75,19]]}},"keywords":{}}],["submarineus",{"_index":2035,"title":{},"content":{"236":{"position":[[261,12]]},"740":{"position":[[264,12]]}},"keywords":{}}],["submiss",{"_index":1689,"title":{},"content":{"145":{"position":[[110,11]]},"197":{"position":[[138,11]]},"210":{"position":[[161,10],[197,10]]},"645":{"position":[[110,11]]},"692":{"position":[[138,11]]},"705":{"position":[[161,10],[197,10]]}},"keywords":{}}],["submit",{"_index":745,"title":{"144":{"position":[[6,6]]},"145":{"position":[[0,6]]},"278":{"position":[[46,6]]},"342":{"position":[[9,6]]},"345":{"position":[[3,6]]},"644":{"position":[[6,6]]},"645":{"position":[[0,6]]},"816":{"position":[[9,6]]},"819":{"position":[[3,6]]}},"content":{"54":{"position":[[168,7],[1087,6],[2578,9]]},"74":{"position":[[77,9],[112,9],[411,9]]},"82":{"position":[[221,9],[397,6],[523,6],[670,10]]},"83":{"position":[[338,10]]},"102":{"position":[[368,9]]},"110":{"position":[[1268,6]]},"130":{"position":[[156,6]]},"146":{"position":[[7,6]]},"150":{"position":[[151,6]]},"152":{"position":[[878,6]]},"154":{"position":[[280,6],[577,6],[726,6],[811,10]]},"155":{"position":[[353,6]]},"158":{"position":[[324,6],[962,9],[1333,9]]},"162":{"position":[[953,6],[1051,10]]},"181":{"position":[[91,6]]},"186":{"position":[[580,9]]},"210":{"position":[[107,10]]},"278":{"position":[[438,6]]},"307":{"position":[[20,10]]},"328":{"position":[[1599,9]]},"345":{"position":[[151,9]]},"437":{"position":[[358,10]]},"583":{"position":[[77,9],[112,9],[411,9]]},"589":{"position":[[221,9],[397,6],[523,6],[670,10]]},"590":{"position":[[338,10]]},"616":{"position":[[368,9]]},"624":{"position":[[1273,6]]},"637":{"position":[[156,6]]},"646":{"position":[[7,6]]},"650":{"position":[[151,6]]},"652":{"position":[[1158,6]]},"654":{"position":[[280,6],[577,6],[726,6],[811,10]]},"655":{"position":[[360,6]]},"658":{"position":[[324,6],[962,9],[1333,9]]},"669":{"position":[[1206,6],[1304,10]]},"688":{"position":[[91,6]]},"705":{"position":[[107,10]]},"714":{"position":[[580,9]]},"758":{"position":[[20,10]]},"809":{"position":[[1619,9]]},"819":{"position":[[151,9]]},"921":{"position":[[358,10]]},"963":{"position":[[646,6]]},"992":{"position":[[56,6]]}},"keywords":{}}],["submit/manag",{"_index":1824,"title":{},"content":{"161":{"position":[[75,13]]},"668":{"position":[[75,13]]}},"keywords":{}}],["submit/termin",{"_index":1366,"title":{},"content":{"102":{"position":[[2227,16]]},"616":{"position":[[2240,16]]}},"keywords":{}}],["submitt",{"_index":1740,"title":{"152":{"position":[[11,9]]},"180":{"position":[[0,9]]},"652":{"position":[[11,9]]},"687":{"position":[[0,9]]}},"content":{"152":{"position":[[11,9],[410,10],[617,9],[703,9],[776,9],[845,9],[956,9],[1468,9],[1502,9]]},"153":{"position":[[346,9]]},"154":{"position":[[156,10],[688,9]]},"158":{"position":[[749,10]]},"162":{"position":[[291,9]]},"178":{"position":[[102,9]]},"180":{"position":[[25,9],[149,9],[417,10]]},"300":{"position":[[42,10]]},"652":{"position":[[11,9],[416,10],[623,9],[709,9],[782,9],[889,9],[908,9],[944,9],[1029,9],[1125,9],[1236,9],[1748,9],[1782,9]]},"653":{"position":[[346,9]]},"654":{"position":[[156,10],[688,9]]},"658":{"position":[[749,10]]},"669":{"position":[[443,9]]},"685":{"position":[[102,9]]},"687":{"position":[[25,9],[170,9],[470,10]]},"768":{"position":[[47,10]]}},"keywords":{}}],["submitter.validate(spec",{"_index":1768,"title":{},"content":{"154":{"position":[[346,24]]},"654":{"position":[[346,24]]}},"keywords":{}}],["submitterspec",{"_index":1847,"title":{},"content":{"178":{"position":[[397,14]]},"685":{"position":[[397,14]]}},"keywords":{}}],["submodul",{"_index":3887,"title":{},"content":{"954":{"position":[[1277,9]]},"981":{"position":[[1391,9]]}},"keywords":{}}],["subprocess",{"_index":1912,"title":{},"content":{"201":{"position":[[400,12]]},"696":{"position":[[400,12]]}},"keywords":{}}],["subproject",{"_index":530,"title":{},"content":{"53":{"position":[[1835,10],[1947,11]]},"98":{"position":[[338,10]]},"612":{"position":[[338,10]]}},"keywords":{}}],["subscrib",{"_index":1047,"title":{},"content":{"86":{"position":[[91,10],[174,10],[264,10],[334,9],[473,11],[718,9]]},"593":{"position":[[91,10],[174,10],[264,10]]}},"keywords":{}}],["subscribe@submarine.apache.org",{"_index":1053,"title":{},"content":{"86":{"position":[[395,31]]}},"keywords":{}}],["subsequ",{"_index":1737,"title":{},"content":{"150":{"position":[[128,11]]},"650":{"position":[[128,11]]}},"keywords":{}}],["subset",{"_index":3947,"title":{},"content":{"964":{"position":[[1037,8]]}},"keywords":{}}],["subsyst",{"_index":3056,"title":{},"content":{"481":{"position":[[136,11]]},"944":{"position":[[136,11]]}},"keywords":{}}],["subsystem:cpu",{"_index":3058,"title":{},"content":{"481":{"position":[[287,13]]},"944":{"position":[[287,13]]}},"keywords":{}}],["subv",{"_index":531,"title":{},"content":{"53":{"position":[[1846,10]]},"777":{"position":[[653,10]]}},"keywords":{}}],["succeed",{"_index":2887,"title":{},"content":{"427":{"position":[[81,10]]},"430":{"position":[[68,10]]},"901":{"position":[[81,10]]},"904":{"position":[[68,10]]},"990":{"position":[[3143,9],[3347,9],[3551,9],[3755,9],[3959,9]]}},"keywords":{}}],["success",{"_index":190,"title":{},"content":{"12":{"position":[[496,10]]},"26":{"position":[[678,10]]},"28":{"position":[[157,10]]},"29":{"position":[[192,10]]},"31":{"position":[[1708,9]]},"32":{"position":[[622,9]]},"33":{"position":[[413,9]]},"34":{"position":[[273,9]]},"35":{"position":[[323,9]]},"41":{"position":[[159,10]]},"47":{"position":[[746,9]]},"48":{"position":[[438,9]]},"49":{"position":[[372,9]]},"50":{"position":[[274,9]]},"52":{"position":[[312,9]]},"53":{"position":[[3588,10]]},"90":{"position":[[2186,10]]},"153":{"position":[[185,7]]},"210":{"position":[[175,11]]},"262":{"position":[[72,10]]},"267":{"position":[[151,10],[191,10]]},"268":{"position":[[89,10],[133,10]]},"541":{"position":[[496,10]]},"555":{"position":[[678,10]]},"557":{"position":[[157,10]]},"558":{"position":[[192,10]]},"563":{"position":[[159,10]]},"604":{"position":[[2186,10]]},"653":{"position":[[185,7]]},"705":{"position":[[175,11]]}},"keywords":{}}],["success\":tru",{"_index":376,"title":{},"content":{"36":{"position":[[236,15]]},"38":{"position":[[415,15]]},"39":{"position":[[154,15]]},"40":{"position":[[151,15]]},"43":{"position":[[296,15]]},"44":{"position":[[228,15]]},"46":{"position":[[290,15]]},"51":{"position":[[214,15]]},"351":{"position":[[554,15]]},"353":{"position":[[103,15]]},"356":{"position":[[120,15]]},"359":{"position":[[441,15]]},"362":{"position":[[123,15]]},"366":{"position":[[595,15]]},"369":{"position":[[715,15]]},"371":{"position":[[102,15]]},"374":{"position":[[132,15]]},"377":{"position":[[626,15]]},"380":{"position":[[135,15]]},"382":{"position":[[107,15]]},"385":{"position":[[137,15]]},"389":{"position":[[375,15]]},"392":{"position":[[136,15]]},"395":{"position":[[128,15]]},"398":{"position":[[132,15]]},"410":{"position":[[1101,15]]},"412":{"position":[[100,15]]},"415":{"position":[[1127,15]]},"418":{"position":[[123,15]]},"421":{"position":[[284,15]]},"560":{"position":[[415,15]]},"561":{"position":[[154,15]]},"562":{"position":[[151,15]]},"825":{"position":[[554,15]]},"827":{"position":[[103,15]]},"830":{"position":[[120,15]]},"833":{"position":[[441,15]]},"836":{"position":[[123,15]]},"840":{"position":[[595,15]]},"843":{"position":[[715,15]]},"845":{"position":[[102,15]]},"848":{"position":[[132,15]]},"851":{"position":[[626,15]]},"854":{"position":[[135,15]]},"856":{"position":[[107,15]]},"859":{"position":[[137,15]]},"863":{"position":[[1101,15]]},"865":{"position":[[100,15]]},"868":{"position":[[1127,15]]},"871":{"position":[[123,15]]},"874":{"position":[[284,15]]},"878":{"position":[[375,15]]},"881":{"position":[[136,15]]},"884":{"position":[[128,15]]},"887":{"position":[[132,15]]}},"keywords":{}}],["successful.deploy",{"_index":2151,"title":{},"content":{"255":{"position":[[320,17]]}},"keywords":{}}],["successfulli",{"_index":1059,"title":{"262":{"position":[[37,12]]}},"content":{"86":{"position":[[753,13]]},"245":{"position":[[18,12]]},"269":{"position":[[17,12]]},"286":{"position":[[53,12]]},"345":{"position":[[138,12]]},"748":{"position":[[18,12]]},"819":{"position":[[138,12]]}},"keywords":{}}],["such",{"_index":524,"title":{},"content":{"53":{"position":[[1671,4],[2278,4],[4720,4],[9472,4],[10178,4],[10414,4]]},"54":{"position":[[1753,4]]},"69":{"position":[[135,4]]},"89":{"position":[[175,4]]},"90":{"position":[[479,4],[1838,4],[2043,5],[2246,4],[2379,4]]},"91":{"position":[[31,4]]},"92":{"position":[[609,4]]},"102":{"position":[[784,4],[860,4]]},"103":{"position":[[185,5],[317,5]]},"106":{"position":[[253,5]]},"107":{"position":[[295,5],[326,4],[453,4]]},"110":{"position":[[1048,4],[1304,4]]},"112":{"position":[[189,5],[440,5],[787,4],[948,4]]},"115":{"position":[[43,5]]},"121":{"position":[[319,4]]},"127":{"position":[[259,5]]},"132":{"position":[[1146,4],[1203,4],[1399,5],[1741,4],[2074,4]]},"134":{"position":[[2393,4]]},"135":{"position":[[352,4]]},"139":{"position":[[1365,4],[1674,4]]},"142":{"position":[[37,4]]},"151":{"position":[[427,4]]},"152":{"position":[[161,4],[1192,4]]},"158":{"position":[[1177,4]]},"160":{"position":[[1373,4],[1414,5]]},"177":{"position":[[101,4]]},"178":{"position":[[137,4]]},"179":{"position":[[325,4],[410,4]]},"180":{"position":[[61,4],[510,4]]},"181":{"position":[[173,4]]},"186":{"position":[[165,4],[320,4]]},"199":{"position":[[330,4]]},"302":{"position":[[212,4]]},"303":{"position":[[505,4]]},"335":{"position":[[252,4]]},"502":{"position":[[987,4]]},"578":{"position":[[135,4]]},"596":{"position":[[189,5],[440,5],[787,4],[948,4]]},"599":{"position":[[43,5]]},"603":{"position":[[175,4]]},"604":{"position":[[479,4],[1838,4],[2043,5],[2246,4],[2379,4]]},"605":{"position":[[31,4]]},"606":{"position":[[609,4]]},"616":{"position":[[789,4],[865,4]]},"617":{"position":[[185,5],[317,5]]},"620":{"position":[[253,5]]},"621":{"position":[[296,5],[327,4],[454,4]]},"624":{"position":[[1053,4],[1309,4]]},"628":{"position":[[319,4]]},"634":{"position":[[259,5]]},"639":{"position":[[1371,4],[1682,4]]},"642":{"position":[[37,4]]},"651":{"position":[[427,4]]},"652":{"position":[[161,4],[1472,4]]},"658":{"position":[[1177,4]]},"660":{"position":[[1146,4],[1203,4],[1399,5],[1741,4],[2074,4]]},"662":{"position":[[2393,4]]},"663":{"position":[[352,4]]},"667":{"position":[[1374,4],[1416,5]]},"684":{"position":[[101,4]]},"685":{"position":[[137,4]]},"686":{"position":[[325,4],[410,4]]},"687":{"position":[[61,4],[563,4]]},"688":{"position":[[173,4]]},"694":{"position":[[330,4]]},"714":{"position":[[165,4],[320,4]]},"770":{"position":[[212,4]]},"771":{"position":[[505,4]]},"805":{"position":[[252,4]]},"992":{"position":[[193,4]]}},"keywords":{}}],["sudo",{"_index":2467,"title":{},"content":{"316":{"position":[[504,4]]},"777":{"position":[[535,4]]},"791":{"position":[[1175,5],[1225,4]]},"793":{"position":[[504,4]]}},"keywords":{}}],["suffici",{"_index":931,"title":{},"content":{"74":{"position":[[257,10]]},"583":{"position":[[257,10]]}},"keywords":{}}],["sugg",{"_index":508,"title":{},"content":{"53":{"position":[[1282,12]]},"791":{"position":[[2424,9],[18266,9]]}},"keywords":{}}],["suggestionsreview",{"_index":776,"title":{},"content":{"54":{"position":[[1670,17]]}},"keywords":{}}],["suit",{"_index":44,"title":{},"content":{"3":{"position":[[230,6]]},"82":{"position":[[169,6]]},"438":{"position":[[45,6]]},"463":{"position":[[230,6]]},"589":{"position":[[169,6]]},"922":{"position":[[45,6]]}},"keywords":{}}],["suitabl",{"_index":887,"title":{},"content":{"69":{"position":[[99,8],[228,11]]},"199":{"position":[[517,8]]},"502":{"position":[[3226,8]]},"578":{"position":[[99,8],[228,11]]},"694":{"position":[[517,8]]}},"keywords":{}}],["summar",{"_index":993,"title":{"148":{"position":[[0,10]]},"648":{"position":[[0,10]]}},"content":{"79":{"position":[[1058,9]]}},"keywords":{}}],["summari",{"_index":230,"title":{"433":{"position":[[0,7]]},"927":{"position":[[0,7]]}},"content":{"15":{"position":[[1028,9]]},"18":{"position":[[1025,9]]},"22":{"position":[[388,9],[1146,9]]},"24":{"position":[[655,9]]},"25":{"position":[[688,9]]},"26":{"position":[[396,9],[999,9]]},"27":{"position":[[691,9]]},"79":{"position":[[1143,7],[1217,7]]},"178":{"position":[[248,9]]},"279":{"position":[[362,7]]},"366":{"position":[[354,9],[1263,9]]},"371":{"position":[[855,9]]},"377":{"position":[[355,9],[1294,9]]},"380":{"position":[[775,9]]},"405":{"position":[[335,9]]},"410":{"position":[[996,9],[2652,9]]},"412":{"position":[[1654,9]]},"415":{"position":[[1001,9],[2682,9]]},"418":{"position":[[1678,9]]},"421":{"position":[[953,9]]},"424":{"position":[[573,9]]},"425":{"position":[[580,9]]},"544":{"position":[[1028,9]]},"547":{"position":[[1025,9]]},"551":{"position":[[388,9],[1146,9]]},"553":{"position":[[655,9]]},"554":{"position":[[688,9]]},"555":{"position":[[396,9],[999,9]]},"556":{"position":[[691,9]]},"685":{"position":[[248,9]]},"840":{"position":[[354,9],[1263,9]]},"845":{"position":[[855,9]]},"851":{"position":[[355,9],[1294,9]]},"854":{"position":[[775,9]]},"863":{"position":[[996,9],[2652,9]]},"865":{"position":[[1654,9]]},"868":{"position":[[1001,9],[2682,9]]},"871":{"position":[[1678,9]]},"874":{"position":[[953,9]]},"894":{"position":[[335,9]]},"898":{"position":[[573,9]]},"899":{"position":[[580,9]]}},"keywords":{}}],["support",{"_index":194,"title":{"156":{"position":[[0,7]]},"303":{"position":[[8,7]]},"656":{"position":[[0,7]]},"771":{"position":[[9,7]]}},"content":{"12":{"position":[[1036,10]]},"18":{"position":[[1241,10]]},"53":{"position":[[1395,7]]},"93":{"position":[[478,7]]},"98":{"position":[[420,7]]},"99":{"position":[[138,8]]},"106":{"position":[[202,7]]},"115":{"position":[[169,7]]},"130":{"position":[[421,7]]},"136":{"position":[[478,7]]},"140":{"position":[[833,7]]},"151":{"position":[[155,8]]},"152":{"position":[[296,7],[392,7],[1132,7]]},"177":{"position":[[55,7]]},"179":{"position":[[209,10]]},"180":{"position":[[165,8],[428,8]]},"184":{"position":[[512,7],[613,7]]},"190":{"position":[[85,7]]},"201":{"position":[[452,7]]},"281":{"position":[[1571,8]]},"295":{"position":[[62,7]]},"313":{"position":[[14,7]]},"335":{"position":[[19,8]]},"365":{"position":[[1169,7]]},"433":{"position":[[0,7],[60,7]]},"474":{"position":[[81,7]]},"502":{"position":[[181,8]]},"541":{"position":[[1036,10]]},"547":{"position":[[1241,10]]},"599":{"position":[[169,7]]},"607":{"position":[[478,7]]},"612":{"position":[[420,7]]},"613":{"position":[[138,8]]},"616":{"position":[[1192,7]]},"620":{"position":[[202,7]]},"637":{"position":[[421,7]]},"640":{"position":[[833,7]]},"651":{"position":[[155,8]]},"652":{"position":[[302,7],[398,7],[1093,8],[1412,7]]},"664":{"position":[[478,7]]},"684":{"position":[[55,7]]},"686":{"position":[[209,10]]},"687":{"position":[[186,8],[481,8]]},"696":{"position":[[452,7]]},"712":{"position":[[512,7],[618,7]]},"718":{"position":[[90,7]]},"762":{"position":[[62,7]]},"777":{"position":[[238,8],[373,8]]},"778":{"position":[[152,8]]},"785":{"position":[[14,7]]},"805":{"position":[[19,8]]},"839":{"position":[[1169,7]]},"927":{"position":[[0,7],[60,7]]},"950":{"position":[[210,8],[358,8],[502,7],[735,8]]},"951":{"position":[[179,8],[269,8]]},"954":{"position":[[214,8],[361,8]]},"955":{"position":[[189,8]]},"964":{"position":[[1867,10]]},"969":{"position":[[220,8],[360,8]]},"970":{"position":[[203,8],[316,8],[434,8],[571,8]]},"992":{"position":[[24,8],[95,10],[374,7]]}},"keywords":{}}],["support/cicd",{"_index":961,"title":{},"content":{"76":{"position":[[270,12]]},"585":{"position":[[270,12]]}},"keywords":{}}],["support/dock",{"_index":1995,"title":{},"content":{"219":{"position":[[400,14],[484,14]]},"238":{"position":[[401,14]]},"240":{"position":[[147,14]]},"733":{"position":[[400,14],[484,14]]},"742":{"position":[[401,14]]},"744":{"position":[[147,14]]}},"keywords":{}}],["support/examples/quickstart/build.sh",{"_index":2699,"title":{},"content":{"344":{"position":[[105,36]]},"818":{"position":[[79,36]]}},"keywords":{}}],["support/examples/quickstart/train.pi",{"_index":2633,"title":{},"content":{"343":{"position":[[130,36]]},"817":{"position":[[130,36]]}},"keywords":{}}],["support/mav",{"_index":906,"title":{},"content":{"71":{"position":[[123,13]]},"236":{"position":[[315,13]]},"580":{"position":[[123,13]]},"740":{"position":[[318,13]]}},"keywords":{}}],["support/nf",{"_index":2437,"title":{},"content":{"313":{"position":[[770,11]]},"785":{"position":[[770,11]]}},"keywords":{}}],["support/pysubmarine/g",{"_index":2957,"title":{},"content":{"439":{"position":[[1088,23]]},"923":{"position":[[148,23]]}},"keywords":{}}],["support/styl",{"_index":2909,"title":{},"content":{"435":{"position":[[290,13],[397,13]]},"437":{"position":[[135,13],[402,13]]},"919":{"position":[[282,13],[397,13]]},"921":{"position":[[135,13],[402,13]]}},"keywords":{}}],["support?0.5.x",{"_index":2012,"title":{},"content":{"224":{"position":[[13,13]]},"726":{"position":[[13,13]]}},"keywords":{}}],["support?1.13.x",{"_index":3266,"title":{},"content":{"725":{"position":[[19,14]]}},"keywords":{}}],["support?1.14.x",{"_index":2007,"title":{},"content":{"223":{"position":[[19,14]]}},"keywords":{}}],["support?1.15",{"_index":2023,"title":{},"content":{"230":{"position":[[11,12]]}},"keywords":{}}],["support?3.5",{"_index":2026,"title":{},"content":{"231":{"position":[[15,11]]}},"keywords":{}}],["support?8",{"_index":2019,"title":{},"content":{"225":{"position":[[12,9]]}},"keywords":{}}],["sur",{"_index":433,"title":{},"content":{"43":{"position":[[40,4]]},"66":{"position":[[66,4]]},"68":{"position":[[61,4]]},"117":{"position":[[493,4],[553,4]]},"140":{"position":[[684,4]]},"219":{"position":[[211,4]]},"238":{"position":[[88,4]]},"239":{"position":[[81,4]]},"243":{"position":[[51,4]]},"245":{"position":[[5,4]]},"268":{"position":[[30,4]]},"279":{"position":[[12,4]]},"284":{"position":[[12,4]]},"286":{"position":[[12,4]]},"289":{"position":[[1180,4]]},"327":{"position":[[1007,4]]},"330":{"position":[[409,4]]},"340":{"position":[[67,4]]},"438":{"position":[[332,4]]},"476":{"position":[[124,4],[307,4]]},"575":{"position":[[66,4]]},"577":{"position":[[61,4]]},"601":{"position":[[493,4],[553,4]]},"640":{"position":[[684,4]]},"733":{"position":[[211,4]]},"742":{"position":[[88,4]]},"743":{"position":[[65,4]]},"744":{"position":[[476,4]]},"746":{"position":[[51,4]]},"748":{"position":[[5,4]]},"752":{"position":[[1180,4]]},"791":{"position":[[14896,4],[30445,4]]},"800":{"position":[[409,4]]},"808":{"position":[[658,4]]},"814":{"position":[[69,4]]},"922":{"position":[[332,4]]},"965":{"position":[[361,4],[9858,4]]},"979":{"position":[[290,4]]}},"keywords":{}}],["sustain",{"_index":517,"title":{},"content":{"53":{"position":[[1558,10],[2946,9]]}},"keywords":{}}],["svc",{"_index":1807,"title":{},"content":{"160":{"position":[[103,3]]},"667":{"position":[[103,3]]}},"keywords":{}}],["svc/prxi",{"_index":1806,"title":{},"content":{"160":{"position":[[84,9]]},"667":{"position":[[84,9]]}},"keywords":{}}],["svm",{"_index":1788,"title":{},"content":{"157":{"position":[[1126,3]]},"657":{"position":[[1126,3]]}},"keywords":{}}],["svn",{"_index":2075,"title":{"278":{"position":[[63,3]]}},"content":{"249":{"position":[[0,3]]},"263":{"position":[[0,3],[34,3],[120,3],[292,3],[473,3],[824,3],[909,3],[1148,3],[1515,3],[1604,3]]},"276":{"position":[[30,4],[39,3]]},"277":{"position":[[88,3],[170,3]]},"278":{"position":[[250,3],[269,3],[281,3],[331,3],[344,3],[363,3],[375,3],[448,3]]}},"keywords":{}}],["swagg",{"_index":1828,"title":{"439":{"position":[[25,7]]},"923":{"position":[[25,7]]}},"content":{"161":{"position":[[935,7],[1006,7]]},"436":{"position":[[95,8]]},"668":{"position":[[935,7],[1006,7]]},"920":{"position":[[95,8]]}},"keywords":{}}],["swagger_config.json",{"_index":2952,"title":{},"content":{"439":{"position":[[840,19]]}},"keywords":{}}],["swaggerconfigur",{"_index":2943,"title":{},"content":{"439":{"position":[[297,20],[334,22]]}},"keywords":{}}],["switch",{"_index":1199,"title":{},"content":{"92":{"position":[[425,8]]},"99":{"position":[[243,9]]},"213":{"position":[[260,9]]},"238":{"position":[[279,6]]},"240":{"position":[[25,6]]},"487":{"position":[[163,6]]},"606":{"position":[[425,8]]},"613":{"position":[[243,9]]},"708":{"position":[[260,9]]},"742":{"position":[[279,6]]},"744":{"position":[[25,6]]}},"keywords":{}}],["sync",{"_index":864,"title":{"64":{"position":[[7,7]]},"573":{"position":[[7,7]]}},"content":{"81":{"position":[[348,4]]},"134":{"position":[[1304,6],[2060,4],[2341,4],[2356,4]]},"365":{"position":[[1295,4]]},"409":{"position":[[1410,4]]},"479":{"position":[[1025,4]]},"588":{"position":[[233,4]]},"662":{"position":[[1304,6],[2060,4],[2341,4],[2356,4]]},"839":{"position":[[1295,4]]},"862":{"position":[[1410,4]]},"942":{"position":[[1025,4]]},"965":{"position":[[154,4],[553,4],[9728,4],[10050,4]]},"967":{"position":[[36,4]]},"981":{"position":[[744,5]]}},"keywords":{}}],["sync_mod",{"_index":1619,"title":{},"content":{"134":{"position":[[1485,10]]},"140":{"position":[[292,10],[853,9],[1266,10]]},"640":{"position":[[292,10],[853,9],[1266,10]]},"662":{"position":[[1485,10]]}},"keywords":{}}],["synchron",{"_index":865,"title":{"213":{"position":[[0,11]]},"708":{"position":[[0,11]]}},"content":{"64":{"position":[[118,11]]},"213":{"position":[[150,11]]},"261":{"position":[[444,12]]},"284":{"position":[[416,11]]},"573":{"position":[[118,11]]},"708":{"position":[[150,11]]}},"keywords":{}}],["sys/fs/cgroup/cpu,cpuacct",{"_index":3074,"title":{},"content":{"481":{"position":[[1770,27],[1865,26],[1907,26]]},"944":{"position":[[1770,27],[1865,26],[1907,26]]}},"keywords":{}}],["sys/fs/cgroup/devic",{"_index":3080,"title":{},"content":{"481":{"position":[[2024,22],[2062,22]]},"944":{"position":[[2024,22],[2062,22]]}},"keywords":{}}],["syst",{"_index":1403,"title":{"135":{"position":[[0,6]]},"204":{"position":[[0,6]]},"481":{"position":[[41,6]]},"663":{"position":[[0,6]]},"699":{"position":[[0,6]]},"944":{"position":[[41,6]]}},"content":{"107":{"position":[[76,7],[519,6],[727,7],[948,6],[1257,6]]},"108":{"position":[[193,6]]},"113":{"position":[[527,7]]},"114":{"position":[[48,6]]},"116":{"position":[[224,7]]},"132":{"position":[[1188,6]]},"135":{"position":[[39,6],[200,6],[344,7],[390,6],[507,6],[542,6]]},"152":{"position":[[226,7],[683,6],[1170,6],[1393,6]]},"153":{"position":[[286,7]]},"155":{"position":[[214,7]]},"184":{"position":[[347,7],[557,8]]},"186":{"position":[[460,6],[626,6]]},"190":{"position":[[115,6],[228,6]]},"197":{"position":[[14,6]]},"203":{"position":[[333,7],[357,6]]},"205":{"position":[[69,7]]},"303":{"position":[[489,6]]},"313":{"position":[[596,8]]},"335":{"position":[[243,8]]},"492":{"position":[[70,6]]},"502":{"position":[[527,6]]},"597":{"position":[[527,7]]},"598":{"position":[[48,6]]},"600":{"position":[[224,7]]},"621":{"position":[[76,7],[520,6],[728,7],[951,6],[1260,6]]},"622":{"position":[[193,6]]},"652":{"position":[[226,7],[689,6],[1450,6],[1673,6]]},"653":{"position":[[286,7]]},"655":{"position":[[220,7]]},"660":{"position":[[1188,6]]},"663":{"position":[[39,6],[200,6],[344,7],[390,6],[507,6],[542,6]]},"692":{"position":[[14,6]]},"698":{"position":[[333,7],[357,6]]},"700":{"position":[[69,7]]},"712":{"position":[[347,7],[562,8]]},"714":{"position":[[460,6],[626,6]]},"718":{"position":[[120,6],[233,6]]},"771":{"position":[[489,6]]},"785":{"position":[[596,8]]},"805":{"position":[[243,8]]},"964":{"position":[[1832,7]]}},"keywords":{}}],["systemd",{"_index":3653,"title":{},"content":{"791":{"position":[[13108,7],[17455,7],[28657,7],[32309,7]]}},"keywords":{}}],["t",{"_index":1536,"title":{},"content":{"121":{"position":[[233,1]]},"628":{"position":[[233,1]]}},"keywords":{}}],["tab",{"_index":972,"title":{},"content":{"77":{"position":[[538,3]]},"279":{"position":[[370,3]]},"327":{"position":[[71,3]]},"501":{"position":[[37,3],[87,3]]},"521":{"position":[[16,3],[27,3]]},"586":{"position":[[538,3]]},"808":{"position":[[71,3]]}},"keywords":{}}],["tabhit",{"_index":971,"title":{},"content":{"77":{"position":[[523,6]]},"586":{"position":[[523,6]]}},"keywords":{}}],["tabl",{"_index":1173,"title":{},"content":{"91":{"position":[[252,6]]},"489":{"position":[[176,5],[277,6],[289,7],[321,5]]},"605":{"position":[[252,6]]}},"keywords":{}}],["tag",{"_index":359,"title":{"35":{"position":[[23,3]]},"36":{"position":[[23,3]]},"51":{"position":[[26,3]]},"52":{"position":[[26,3]]},"268":{"position":[[15,3]]},"275":{"position":[[15,3]]}},"content":{"31":{"position":[[552,6],[915,6],[1279,6],[1643,6]]},"32":{"position":[[560,6]]},"35":{"position":[[274,3]]},"36":{"position":[[289,3]]},"46":{"position":[[164,7]]},"47":{"position":[[376,6],[555,6],[712,6]]},"48":{"position":[[392,6]]},"51":{"position":[[267,3]]},"52":{"position":[[263,3]]},"104":{"position":[[158,4]]},"108":{"position":[[21,3]]},"268":{"position":[[20,4],[170,3],[238,3],[257,8]]},"269":{"position":[[10,3],[43,3]]},"281":{"position":[[409,3]]},"324":{"position":[[69,4],[616,4],[887,4]]},"502":{"position":[[408,3],[440,4]]},"522":{"position":[[184,12],[211,3]]},"618":{"position":[[159,4]]},"622":{"position":[[21,3]]},"774":{"position":[[69,4],[340,4]]}},"keywords":{}}],["tag/branch",{"_index":2593,"title":{},"content":{"333":{"position":[[250,11]]},"803":{"position":[[250,11]]}},"keywords":{}}],["tags:us",{"_index":3222,"title":{},"content":{"502":{"position":[[393,10]]}},"keywords":{}}],["tak",{"_index":636,"title":{},"content":{"53":{"position":[[5980,4],[6248,4],[7481,4]]},"86":{"position":[[329,4]]},"92":{"position":[[195,4]]},"106":{"position":[[366,4]]},"184":{"position":[[44,6]]},"262":{"position":[[99,4]]},"284":{"position":[[371,5]]},"310":{"position":[[235,4]]},"343":{"position":[[0,4]]},"606":{"position":[[195,4]]},"620":{"position":[[366,4]]},"712":{"position":[[44,6]]},"782":{"position":[[235,4]]},"791":{"position":[[16494,4],[16625,4],[16758,4],[16894,4],[31348,4],[31479,4],[31612,4],[31748,4]]},"817":{"position":[[0,4]]},"963":{"position":[[118,4]]},"979":{"position":[[763,4]]}},"keywords":{}}],["talk",{"_index":1073,"title":{},"content":{"90":{"position":[[10,5]]},"92":{"position":[[63,7]]},"94":{"position":[[202,6]]},"129":{"position":[[146,4]]},"139":{"position":[[14,5],[2154,4]]},"148":{"position":[[142,4]]},"328":{"position":[[71,4]]},"477":{"position":[[19,4]]},"604":{"position":[[10,5]]},"606":{"position":[[63,7]]},"608":{"position":[[202,6]]},"636":{"position":[[146,4]]},"639":{"position":[[14,5],[2167,4]]},"648":{"position":[[142,4]]},"767":{"position":[[42,7]]},"809":{"position":[[71,4]]}},"keywords":{}}],["tar",{"_index":2289,"title":{},"content":{"269":{"position":[[85,3]]},"270":{"position":[[150,3]]},"274":{"position":[[95,3]]},"330":{"position":[[370,3]]},"777":{"position":[[1439,3]]},"800":{"position":[[370,3]]},"950":{"position":[[1466,3]]},"954":{"position":[[1864,3]]},"969":{"position":[[1501,3]]},"979":{"position":[[251,3]]},"984":{"position":[[248,3]]},"989":{"position":[[246,3]]}},"keywords":{}}],["tar.gz",{"_index":2119,"title":{},"content":{"252":{"position":[[1894,9]]},"253":{"position":[[106,9]]},"271":{"position":[[9,9],[103,9]]},"272":{"position":[[71,9]]}},"keywords":{}}],["tar.gz.sha512",{"_index":2140,"title":{},"content":{"253":{"position":[[494,16]]}},"keywords":{}}],["tarbal",{"_index":1606,"title":{},"content":{"133":{"position":[[654,7]]},"134":{"position":[[918,7]]},"148":{"position":[[667,7]]},"648":{"position":[[667,7]]},"661":{"position":[[654,7]]},"662":{"position":[[918,7]]}},"keywords":{}}],["target",{"_index":4004,"title":{},"content":{"965":{"position":[[1982,7],[11399,7],[17506,7]]}},"keywords":{}}],["target_databas",{"_index":3155,"title":{},"content":{"489":{"position":[[245,19]]}},"keywords":{}}],["target_t",{"_index":3156,"title":{},"content":{"489":{"position":[[341,16]]}},"keywords":{}}],["task",{"_index":486,"title":{"181":{"position":[[0,4]]},"688":{"position":[[0,4]]}},"content":{"53":{"position":[[866,5]]},"96":{"position":[[75,5],[228,5]]},"102":{"position":[[39,5],[218,6],[298,5],[673,5]]},"132":{"position":[[1100,5]]},"134":{"position":[[1939,4]]},"136":{"position":[[341,6]]},"139":{"position":[[278,5],[943,4],[1253,6],[1281,5],[1634,5],[1769,6],[1836,7]]},"148":{"position":[[104,4]]},"178":{"position":[[121,4]]},"179":{"position":[[387,4],[480,4],[553,4]]},"181":{"position":[[17,4],[32,5],[122,5],[587,4],[648,4],[700,5]]},"186":{"position":[[702,5]]},"365":{"position":[[1018,4],[1035,4]]},"409":{"position":[[1231,4],[1248,4]]},"500":{"position":[[88,4]]},"610":{"position":[[75,5],[228,5]]},"616":{"position":[[39,5],[218,6],[298,5],[678,5]]},"639":{"position":[[278,5],[943,4],[1259,6],[1287,5],[1642,5],[1782,6],[1849,7]]},"648":{"position":[[104,4]]},"660":{"position":[[1100,5]]},"662":{"position":[[1939,4]]},"664":{"position":[[341,6]]},"685":{"position":[[121,4]]},"686":{"position":[[387,4],[480,4],[553,4]]},"688":{"position":[[17,4],[32,5],[122,5],[587,4],[648,4],[700,5]]},"714":{"position":[[702,5]]},"839":{"position":[[1018,4],[1035,4]]},"862":{"position":[[1231,4],[1248,4]]},"964":{"position":[[316,5],[514,7],[711,5],[1186,4],[1195,4],[1322,4],[1549,7]]},"967":{"position":[[662,6]]},"980":{"position":[[1087,5],[1288,5],[1489,5],[2123,5],[2321,5],[2523,5]]},"985":{"position":[[947,5],[1148,5],[1349,5],[1983,5],[2181,5],[2383,5]]},"990":{"position":[[1241,4],[1443,4],[1645,4],[1847,4],[2049,4],[2992,4],[3199,4],[3403,4],[3607,4],[3811,4]]}},"keywords":{}}],["task/servic",{"_index":1773,"title":{},"content":{"155":{"position":[[161,12]]},"655":{"position":[[167,12]]}},"keywords":{}}],["taskinfo",{"_index":4282,"title":{},"content":{"980":{"position":[[1109,10],[1310,10],[1511,10],[2145,10],[2343,10],[2545,10]]},"985":{"position":[[969,10],[1170,10],[1371,10],[2005,10],[2203,10],[2405,10]]},"990":{"position":[[1262,10],[1464,10],[1666,10],[1868,10],[2070,10],[3013,10],[3220,10],[3424,10],[3628,10],[3832,10]]}},"keywords":{}}],["taskspec",{"_index":1848,"title":{},"content":{"178":{"position":[[447,10]]},"181":{"position":[[182,10]]},"685":{"position":[[447,10]]},"688":{"position":[[182,10]]}},"keywords":{}}],["tcp",{"_index":3198,"title":{},"content":{"495":{"position":[[601,3],[714,3]]}},"keywords":{}}],["tcsh",{"_index":3427,"title":{},"content":{"791":{"position":[[2413,4],[3305,4],[5728,4],[11102,5],[11171,4],[15366,4],[18255,4],[19129,4],[21552,4],[26820,5],[26889,4],[30915,4]]}},"keywords":{}}],["tcsh_6.18.01",{"_index":3635,"title":{},"content":{"791":{"position":[[11128,16],[26846,16]]}},"keywords":{}}],["team",{"_index":984,"title":{"505":{"position":[[0,4]]},"513":{"position":[[0,4]]},"525":{"position":[[0,4]]},"533":{"position":[[0,4]]}},"content":{"79":{"position":[[443,4],[1942,4]]},"89":{"position":[[97,4],[130,6],[137,5],[276,5]]},"91":{"position":[[636,4],[666,4],[712,4]]},"107":{"position":[[623,5],[843,6],[1306,6]]},"113":{"position":[[245,4]]},"134":{"position":[[1438,5]]},"140":{"position":[[264,5],[646,5],[1091,5],[1186,5]]},"502":{"position":[[1702,4],[1727,4],[1744,4],[1789,4],[2096,4],[2161,5],[2188,4],[2405,5],[2432,4],[2660,5],[2687,4]]},"522":{"position":[[747,37],[925,4],[984,4],[1099,4],[1223,4]]},"597":{"position":[[245,4]]},"603":{"position":[[97,4],[130,6],[137,5],[276,5]]},"605":{"position":[[636,4],[666,4],[712,4]]},"621":{"position":[[624,5],[845,6],[1309,6]]},"640":{"position":[[264,5],[646,5],[1091,5],[1186,5]]},"662":{"position":[[1438,5]]}},"keywords":{}}],["team.resourc",{"_index":1426,"title":{},"content":{"107":{"position":[[1226,13]]},"621":{"position":[[1229,13]]}},"keywords":{}}],["team_default_python_3.7",{"_index":161,"title":{},"content":{"9":{"position":[[192,26],[779,26]]},"10":{"position":[[330,26]]},"11":{"position":[[352,26]]},"38":{"position":[[986,26]]},"39":{"position":[[728,26]]},"40":{"position":[[719,26]]},"41":{"position":[[779,26]]},"115":{"position":[[928,23]]},"351":{"position":[[157,26]]},"538":{"position":[[192,26],[779,26]]},"539":{"position":[[330,26]]},"540":{"position":[[352,26]]},"560":{"position":[[986,26]]},"561":{"position":[[728,26]]},"562":{"position":[[719,26]]},"563":{"position":[[779,26]]},"599":{"position":[[928,23]]},"825":{"position":[[157,26]]}},"keywords":{}}],["team_default_python_3.7_upd",{"_index":189,"title":{},"content":{"12":{"position":[[202,34],[692,34]]},"13":{"position":[[355,34]]},"359":{"position":[[158,34]]},"541":{"position":[[202,34],[692,34]]},"542":{"position":[[355,34]]},"833":{"position":[[158,34]]}},"keywords":{}}],["team_miniconda_python_3.7",{"_index":185,"title":{},"content":{"10":{"position":[[814,28]]},"539":{"position":[[814,28]]}},"keywords":{}}],["technic",{"_index":528,"title":{},"content":{"53":{"position":[[1783,9],[1912,9],[7123,9]]}},"keywords":{}}],["telepr",{"_index":2964,"title":{},"content":{"440":{"position":[[72,13],[197,12],[249,12]]},"924":{"position":[[72,13],[185,12],[237,12]]}},"keywords":{}}],["templ",{"_index":1794,"title":{},"content":{"158":{"position":[[585,5]]},"658":{"position":[[585,5]]}},"keywords":{}}],["templat",{"_index":196,"title":{"14":{"position":[[11,8]]},"15":{"position":[[18,8]]},"16":{"position":[[16,8]]},"17":{"position":[[15,8]]},"18":{"position":[[6,8]]},"19":{"position":[[7,8]]},"20":{"position":[[4,8]]},"156":{"position":[[30,9]]},"157":{"position":[[22,8]]},"158":{"position":[[29,8]]},"407":{"position":[[11,8]]},"408":{"position":[[18,8]]},"411":{"position":[[16,8]]},"413":{"position":[[17,8]]},"416":{"position":[[18,8]]},"419":{"position":[[4,8]]},"543":{"position":[[11,8]]},"544":{"position":[[18,8]]},"545":{"position":[[16,8]]},"546":{"position":[[15,8]]},"547":{"position":[[6,8]]},"548":{"position":[[7,8]]},"549":{"position":[[4,8]]},"656":{"position":[[30,9]]},"657":{"position":[[22,8]]},"658":{"position":[[29,8]]},"860":{"position":[[11,8]]},"861":{"position":[[18,8]]},"864":{"position":[[16,8]]},"866":{"position":[[17,8]]},"869":{"position":[[18,8]]},"872":{"position":[[4,8]]}},"content":{"15":{"position":[[115,10],[172,8]]},"17":{"position":[[108,8]]},"18":{"position":[[108,10],[169,8],[1099,8],[1225,8]]},"19":{"position":[[111,8]]},"20":{"position":[[283,8]]},"67":{"position":[[136,9],[179,8]]},"110":{"position":[[776,8]]},"118":{"position":[[444,8],[546,8]]},"132":{"position":[[858,9]]},"147":{"position":[[1246,11],[1291,8],[1300,8]]},"152":{"position":[[121,10]]},"154":{"position":[[1160,9]]},"156":{"position":[[22,8]]},"157":{"position":[[22,8],[229,8],[762,8],[810,8],[869,8]]},"158":{"position":[[58,8],[368,8],[379,8],[445,9],[465,9],[972,8],[1065,8],[1109,8],[1380,8],[1497,9],[1519,8],[2084,8],[2128,8],[2188,9],[2210,8],[2364,8],[2456,8],[2732,9],[2774,8],[2816,8],[2846,9]]},"281":{"position":[[7,9],[1033,8],[1084,8],[1177,9]]},"286":{"position":[[146,9]]},"365":{"position":[[127,9],[195,9]]},"376":{"position":[[113,9],[186,9]]},"388":{"position":[[174,9]]},"409":{"position":[[58,8],[177,9],[266,9],[334,9],[671,9],[739,9]]},"410":{"position":[[83,10],[140,8],[1259,10],[1314,8]]},"412":{"position":[[261,10],[316,8]]},"414":{"position":[[67,8],[186,9],[275,9],[343,9]]},"415":{"position":[[84,10],[145,8],[1075,8],[1285,10],[1344,8]]},"417":{"position":[[58,8]]},"418":{"position":[[72,8],[281,10],[340,8]]},"420":{"position":[[67,8],[110,8]]},"421":{"position":[[232,8]]},"502":{"position":[[2962,9],[2990,9],[3103,8]]},"522":{"position":[[1371,9]]},"544":{"position":[[115,10],[172,8]]},"546":{"position":[[108,8]]},"547":{"position":[[108,10],[169,8],[1099,8],[1225,8]]},"548":{"position":[[111,8]]},"549":{"position":[[283,8]]},"576":{"position":[[136,9],[179,8]]},"624":{"position":[[776,8]]},"625":{"position":[[445,8],[547,8]]},"647":{"position":[[1246,11],[1291,8],[1300,8]]},"652":{"position":[[121,10]]},"654":{"position":[[1165,9]]},"656":{"position":[[22,8]]},"657":{"position":[[22,8],[229,8],[762,8],[810,8],[869,8]]},"658":{"position":[[58,8],[368,8],[379,8],[445,9],[465,9],[972,8],[1065,8],[1109,8],[1380,8],[1497,9],[1519,8],[2084,8],[2128,8],[2188,9],[2210,8],[2364,8],[2456,8],[2732,9],[2774,8],[2816,8],[2846,9]]},"660":{"position":[[858,9]]},"839":{"position":[[127,9],[195,9]]},"850":{"position":[[113,9],[186,9]]},"862":{"position":[[58,8],[177,9],[266,9],[334,9],[671,9],[739,9]]},"863":{"position":[[83,10],[140,8],[1259,10],[1314,8]]},"865":{"position":[[261,10],[316,8]]},"867":{"position":[[67,8],[186,9],[275,9],[343,9]]},"868":{"position":[[84,10],[145,8],[1075,8],[1285,10],[1344,8]]},"870":{"position":[[58,8]]},"871":{"position":[[72,8],[281,10],[340,8]]},"873":{"position":[[67,8],[110,8]]},"874":{"position":[[232,8]]},"877":{"position":[[174,9]]}},"keywords":{}}],["templatefil",{"_index":877,"title":{},"content":{"67":{"position":[[159,15]]},"576":{"position":[[159,15]]}},"keywords":{}}],["temporari",{"_index":1600,"title":{},"content":{"133":{"position":[[318,12]]},"661":{"position":[[318,12]]}},"keywords":{}}],["tensorboard",{"_index":1583,"title":{"402":{"position":[[0,11]]},"406":{"position":[[15,11]]},"891":{"position":[[0,11]]},"895":{"position":[[15,11]]},"966":{"position":[[25,11]]}},"content":{"132":{"position":[[1356,12]]},"140":{"position":[[1439,12]]},"340":{"position":[[513,11]]},"404":{"position":[[204,11]]},"405":{"position":[[32,11]]},"406":{"position":[[57,11],[101,11]]},"640":{"position":[[1439,12]]},"660":{"position":[[1356,12]]},"814":{"position":[[473,11]]},"893":{"position":[[204,11]]},"894":{"position":[[32,11]]},"895":{"position":[[57,11],[101,11]]},"964":{"position":[[1745,11]]},"966":{"position":[[58,12],[113,11],[333,11],[417,11],[469,11],[530,11]]},"979":{"position":[[734,11]]}},"keywords":{}}],["tensorflow",{"_index":222,"title":{"44":{"position":[[11,10]]},"479":{"position":[[12,10]]},"942":{"position":[[12,10]]},"968":{"position":[[18,10]]},"969":{"position":[[35,10]]},"970":{"position":[[31,10]]},"977":{"position":[[7,10]]},"979":{"position":[[43,10]]}},"content":{"15":{"position":[[794,13]]},"18":{"position":[[791,13]]},"22":{"position":[[168,13],[926,13]]},"23":{"position":[[168,13],[1073,13]]},"24":{"position":[[435,13]]},"25":{"position":[[468,13]]},"26":{"position":[[176,13],[779,13]]},"27":{"position":[[471,13]]},"31":{"position":[[448,13],[811,13],[1174,13],[1538,13]]},"32":{"position":[[456,13]]},"92":{"position":[[451,11]]},"110":{"position":[[1326,10]]},"112":{"position":[[985,11]]},"140":{"position":[[979,10]]},"152":{"position":[[1099,11]]},"158":{"position":[[632,12]]},"177":{"position":[[109,11]]},"178":{"position":[[16,10],[179,12],[468,10],[554,10]]},"179":{"position":[[179,12]]},"181":{"position":[[203,10],[289,10]]},"328":{"position":[[613,10]]},"343":{"position":[[20,10],[356,10]]},"366":{"position":[[134,13]]},"369":{"position":[[134,13]]},"377":{"position":[[135,13]]},"405":{"position":[[20,11],[94,13]]},"410":{"position":[[762,13]]},"415":{"position":[[767,13]]},"424":{"position":[[353,13]]},"425":{"position":[[360,13]]},"429":{"position":[[193,10]]},"502":{"position":[[296,11]]},"544":{"position":[[794,13]]},"547":{"position":[[791,13]]},"551":{"position":[[168,13],[926,13]]},"552":{"position":[[168,13],[1073,13]]},"553":{"position":[[435,13]]},"554":{"position":[[468,13]]},"555":{"position":[[176,13],[779,13]]},"556":{"position":[[471,13]]},"596":{"position":[[985,11]]},"606":{"position":[[451,11]]},"624":{"position":[[1331,10]]},"640":{"position":[[979,10]]},"652":{"position":[[1379,11]]},"658":{"position":[[632,12]]},"684":{"position":[[109,11]]},"685":{"position":[[16,10],[179,12],[468,10],[554,10]]},"686":{"position":[[179,12]]},"688":{"position":[[203,10],[289,10]]},"809":{"position":[[633,10]]},"817":{"position":[[20,10],[356,10]]},"840":{"position":[[134,13]]},"843":{"position":[[134,13]]},"851":{"position":[[135,13]]},"863":{"position":[[762,13]]},"868":{"position":[[767,13]]},"894":{"position":[[20,11],[94,13]]},"898":{"position":[[353,13]]},"899":{"position":[[360,13]]},"903":{"position":[[193,10]]},"940":{"position":[[38,10]]},"960":{"position":[[8,10]]},"965":{"position":[[7599,10],[7778,10],[7957,10],[8136,10],[8315,10],[8494,10],[8673,10],[8852,10]]},"966":{"position":[[143,10]]},"969":{"position":[[18,10],[73,10],[141,10],[255,10],[380,11]]},"970":{"position":[[48,10],[78,10],[185,10],[298,10],[416,10],[553,10]]},"972":{"position":[[168,11]]},"978":{"position":[[50,10]]},"979":{"position":[[52,10],[325,10],[719,10]]},"980":{"position":[[95,10],[373,10]]},"981":{"position":[[267,10]]}},"keywords":{}}],["tensorflow.kera",{"_index":2640,"title":{},"content":{"343":{"position":[[378,16]]},"817":{"position":[[378,16]]}},"keywords":{}}],["tensorflow.model",{"_index":3006,"title":{},"content":{"474":{"position":[[101,16]]}},"keywords":{}}],["tensorflow.python.training.server_lib.clusterspec",{"_index":3966,"title":{},"content":{"965":{"position":[[829,50],[10309,50],[16380,50]]}},"keywords":{}}],["tensorflow.tf",{"_index":4244,"title":{},"content":{"972":{"position":[[269,13]]}},"keywords":{}}],["tensorflow/core/common_runtime/gpu/gpu_device.cc:1030",{"_index":4051,"title":{},"content":{"965":{"position":[[7535,54],[7714,54],[7893,54],[8072,54],[8251,54],[8430,54],[8609,54],[8788,54]]}},"keywords":{}}],["tensorflow/core/common_runtime/gpu/gpu_device.cc:940",{"_index":3988,"title":{},"content":{"965":{"position":[[1402,53],[1648,53],[10819,53],[11065,53]]}},"keywords":{}}],["tensorflow/core/distributed_runtime/master.cc:209",{"_index":4101,"title":{},"content":{"965":{"position":[[14169,50]]}},"keywords":{}}],["tensorflow/core/distributed_runtime/master_session.cc:999",{"_index":4041,"title":{},"content":{"965":{"position":[[4827,58],[14333,58]]}},"keywords":{}}],["tensorflow/core/distributed_runtime/rpc/grpc_channel.cc:215",{"_index":4158,"title":{},"content":{"965":{"position":[[16949,60],[17108,60],[17263,60]]}},"keywords":{}}],["tensorflow/core/distributed_runtime/rpc/grpc_server_lib.cc:316",{"_index":4003,"title":{},"content":{"965":{"position":[[1898,63],[11315,63],[17422,63]]}},"keywords":{}}],["tensorflow/ecosyst",{"_index":3938,"title":{},"content":{"964":{"position":[[166,20]]}},"keywords":{}}],["tensorflow/pytorch",{"_index":1134,"title":{},"content":{"90":{"position":[[1846,19]]},"98":{"position":[[83,18]]},"102":{"position":[[654,18],[1078,18],[1204,18]]},"132":{"position":[[1287,19]]},"604":{"position":[[1846,19]]},"612":{"position":[[83,18]]},"616":{"position":[[659,18],[1083,18],[1216,18]]},"660":{"position":[[1287,19]]}},"keywords":{}}],["tensorflow/pytorch/kera",{"_index":1144,"title":{},"content":{"90":{"position":[[2254,24]]},"604":{"position":[[2254,24]]}},"keywords":{}}],["tensorflow/pytorch/mxnet",{"_index":4249,"title":{},"content":{"976":{"position":[[81,25]]}},"keywords":{}}],["tensorflow=2.0",{"_index":1450,"title":{},"content":{"112":{"position":[[578,14],[1455,14],[1801,14]]},"596":{"position":[[578,14],[1455,14],[1801,14]]}},"keywords":{}}],["tensorflow==1.13.1",{"_index":4251,"title":{},"content":{"979":{"position":[[445,18]]}},"keywords":{}}],["tensorflow_dataset",{"_index":2638,"title":{},"content":{"343":{"position":[[321,19]]},"817":{"position":[[321,19]]}},"keywords":{}}],["term",{"_index":744,"title":{},"content":{"54":{"position":[[95,4],[690,4],[2427,4]]},"89":{"position":[[0,4]]},"603":{"position":[[0,4]]},"791":{"position":[[2236,4],[3128,4],[6033,4],[11572,5],[11667,4],[16322,4],[18078,4],[18952,4],[21751,4],[27121,5],[27216,4],[31176,4]]}},"keywords":{}}],["term_6.0+20160213",{"_index":3638,"title":{},"content":{"791":{"position":[[11610,17],[27159,17]]}},"keywords":{}}],["termin",{"_index":425,"title":{},"content":{"41":{"position":[[389,14],[440,13]]},"121":{"position":[[768,9]]},"398":{"position":[[407,13]]},"563":{"position":[[389,14],[440,13]]},"628":{"position":[[768,9]]},"887":{"position":[[407,13]]}},"keywords":{}}],["terminolog",{"_index":1060,"title":{"89":{"position":[[0,11]]},"603":{"position":[[0,11]]}},"content":{},"keywords":{}}],["tesla",{"_index":3989,"title":{},"content":{"965":{"position":[[1494,5],[1740,5],[7647,5],[7826,5],[8005,5],[8184,5],[8363,5],[8542,5],[8721,5],[8900,5],[10911,5],[11157,5]]}},"keywords":{}}],["test",{"_index":43,"title":{"237":{"position":[[0,7]]},"287":{"position":[[32,4]]},"289":{"position":[[8,4]]},"290":{"position":[[8,4]]},"291":{"position":[[23,4]]},"301":{"position":[[15,4]]},"304":{"position":[[27,4]]},"306":{"position":[[8,4]]},"307":{"position":[[8,4]]},"438":{"position":[[5,7]]},"478":{"position":[[0,4]]},"479":{"position":[[0,4]]},"741":{"position":[[0,7]]},"750":{"position":[[32,4]]},"752":{"position":[[8,4]]},"753":{"position":[[8,4]]},"754":{"position":[[23,4]]},"755":{"position":[[27,4]]},"757":{"position":[[8,4]]},"758":{"position":[[8,4]]},"769":{"position":[[15,4]]},"922":{"position":[[5,7]]},"941":{"position":[[0,4]]},"942":{"position":[[0,4]]}},"content":{"3":{"position":[[225,4]]},"38":{"position":[[112,5],[274,6]]},"41":{"position":[[284,5],[573,5],[933,6]]},"53":{"position":[[3167,8]]},"54":{"position":[[1347,4],[1363,4],[2599,4]]},"82":{"position":[[571,6]]},"91":{"position":[[470,8]]},"92":{"position":[[837,7]]},"158":{"position":[[1740,4]]},"237":{"position":[[5,4],[107,7],[193,4],[201,4],[222,5]]},"239":{"position":[[462,5]]},"254":{"position":[[333,4]]},"255":{"position":[[340,4]]},"267":{"position":[[184,6]]},"268":{"position":[[122,6]]},"277":{"position":[[50,7]]},"281":{"position":[[911,8]]},"288":{"position":[[4,4],[35,4],[60,5],[126,4]]},"289":{"position":[[827,4],[914,4],[1067,4]]},"293":{"position":[[106,4]]},"301":{"position":[[27,4]]},"303":{"position":[[216,7]]},"305":{"position":[[4,4],[35,4],[60,5],[140,5],[202,6]]},"306":{"position":[[391,4],[441,4],[490,4]]},"328":{"position":[[708,4]]},"389":{"position":[[80,5],[242,6]]},"435":{"position":[[34,7],[448,4]]},"438":{"position":[[40,4],[112,5],[170,4],[236,4]]},"441":{"position":[[396,7]]},"463":{"position":[[225,4]]},"560":{"position":[[112,5],[274,6]]},"563":{"position":[[284,5],[573,5],[933,6]]},"589":{"position":[[571,6]]},"605":{"position":[[470,8]]},"606":{"position":[[837,7]]},"658":{"position":[[1740,4]]},"741":{"position":[[5,4],[107,7],[193,4],[201,4],[222,5]]},"743":{"position":[[446,5]]},"744":{"position":[[1021,4],[1058,4],[1319,4],[1616,4]]},"751":{"position":[[4,4],[35,4],[60,5],[126,4]]},"752":{"position":[[827,4],[914,4],[1067,4]]},"756":{"position":[[4,4],[35,4],[60,5],[140,5],[202,6]]},"757":{"position":[[391,4],[441,4],[490,4]]},"760":{"position":[[106,4]]},"769":{"position":[[27,4]]},"771":{"position":[[216,7]]},"809":{"position":[[728,4]]},"878":{"position":[[80,5],[242,6]]},"919":{"position":[[34,7],[464,4],[550,4]]},"922":{"position":[[40,4],[112,5],[170,4],[236,4]]},"925":{"position":[[396,7]]},"986":{"position":[[422,6]]}},"keywords":{}}],["test/cifar10_estimator/cifar10_main.pi",{"_index":3035,"title":{},"content":{"479":{"position":[[538,39],[809,39]]},"942":{"position":[[538,39],[809,39]]}},"keywords":{}}],["test/models/tutorials/image/cifar10_estim",{"_index":4297,"title":{},"content":{"981":{"position":[[517,46]]}},"keywords":{}}],["test/t",{"_index":2382,"title":{},"content":{"289":{"position":[[1261,9]]},"752":{"position":[[1261,9]]}},"keywords":{}}],["test/test_e2",{"_index":2375,"title":{},"content":{"289":{"position":[[940,13]]},"752":{"position":[[940,13]]}},"keywords":{}}],["test/test_e2e/run_frontend_e2e.sh",{"_index":2371,"title":{},"content":{"289":{"position":[[435,33]]},"752":{"position":[[435,33]]}},"keywords":{}}],["test_data",{"_index":1346,"title":{},"content":{"102":{"position":[[1562,12]]},"157":{"position":[[494,12]]},"616":{"position":[[1574,12]]},"657":{"position":[[494,12]]}},"keywords":{}}],["test_env",{"_index":383,"title":{},"content":{"38":{"position":[[262,11]]},"41":{"position":[[921,11]]},"389":{"position":[[230,11]]},"560":{"position":[[262,11]]},"563":{"position":[[921,11]]},"878":{"position":[[230,11]]}},"keywords":{}}],["test_env\":\"t",{"_index":409,"title":{},"content":{"38":{"position":[[1124,17]]},"39":{"position":[[866,17]]},"40":{"position":[[857,17]]},"560":{"position":[[1124,17]]},"561":{"position":[[866,17]]},"562":{"position":[[857,17]]}},"keywords":{}}],["testcas",{"_index":2377,"title":{},"content":{"289":{"position":[[975,11],[989,8]]},"752":{"position":[[975,11],[989,8]]}},"keywords":{}}],["testclass",{"_index":2039,"title":{},"content":{"237":{"position":[[51,10]]},"741":{"position":[[51,10]]}},"keywords":{}}],["testpypi",{"_index":2974,"title":{},"content":{"441":{"position":[[383,8],[440,8]]},"925":{"position":[[383,8],[440,8]]}},"keywords":{}}],["text",{"_index":1502,"title":{},"content":{"116":{"position":[[42,4]]},"600":{"position":[[42,4]]}},"keywords":{}}],["tf",{"_index":80,"title":{},"content":{"4":{"position":[[413,2]]},"15":{"position":[[106,2],[188,2],[474,3]]},"17":{"position":[[99,2]]},"18":{"position":[[99,2],[185,2],[471,3],[1090,2]]},"19":{"position":[[102,2]]},"20":{"position":[[121,3],[274,2]]},"22":{"position":[[114,3],[709,3],[872,3]]},"23":{"position":[[114,3],[856,3],[1019,3]]},"24":{"position":[[218,3],[381,3]]},"25":{"position":[[251,3],[414,3]]},"26":{"position":[[122,3],[725,3]]},"27":{"position":[[254,3],[417,3]]},"110":{"position":[[800,3]]},"140":{"position":[[1045,4],[1069,4]]},"152":{"position":[[100,3],[1079,2]]},"157":{"position":[[953,2]]},"158":{"position":[[1199,2],[2375,3]]},"340":{"position":[[613,2]]},"343":{"position":[[370,2]]},"366":{"position":[[80,3]]},"369":{"position":[[80,3]]},"377":{"position":[[81,3]]},"410":{"position":[[74,2],[156,2],[442,3],[1250,2],[1330,2]]},"412":{"position":[[252,2],[332,2]]},"415":{"position":[[75,2],[161,2],[447,3],[1066,2],[1276,2],[1360,2]]},"418":{"position":[[63,2],[272,2],[356,2]]},"421":{"position":[[70,3],[223,2]]},"424":{"position":[[299,3]]},"425":{"position":[[306,3]]},"464":{"position":[[413,2]]},"479":{"position":[[150,2],[252,2],[292,2]]},"544":{"position":[[106,2],[188,2],[474,3]]},"546":{"position":[[99,2]]},"547":{"position":[[99,2],[185,2],[471,3],[1090,2]]},"548":{"position":[[102,2]]},"549":{"position":[[121,3],[274,2]]},"551":{"position":[[114,3],[709,3],[872,3]]},"552":{"position":[[114,3],[856,3],[1019,3]]},"553":{"position":[[218,3],[381,3]]},"554":{"position":[[251,3],[414,3]]},"555":{"position":[[122,3],[725,3]]},"556":{"position":[[254,3],[417,3]]},"624":{"position":[[805,3]]},"640":{"position":[[1045,4],[1069,4]]},"652":{"position":[[100,3],[1359,2]]},"657":{"position":[[953,2]]},"658":{"position":[[1199,2],[2375,3]]},"814":{"position":[[577,2]]},"817":{"position":[[370,2]]},"840":{"position":[[80,3]]},"843":{"position":[[80,3]]},"851":{"position":[[81,3]]},"863":{"position":[[74,2],[156,2],[442,3],[1250,2],[1330,2]]},"865":{"position":[[252,2],[332,2]]},"868":{"position":[[75,2],[161,2],[447,3],[1066,2],[1276,2],[1360,2]]},"871":{"position":[[63,2],[272,2],[356,2]]},"874":{"position":[[70,3],[223,2]]},"898":{"position":[[299,3]]},"899":{"position":[[306,3]]},"942":{"position":[[150,2],[252,2],[292,2]]},"969":{"position":[[425,2]]},"972":{"position":[[98,2]]},"980":{"position":[[348,2]]},"981":{"position":[[242,2]]}},"keywords":{}}],["tf.app.run",{"_index":4171,"title":{},"content":{"967":{"position":[[129,12]]}},"keywords":{}}],["tf.cast(imag",{"_index":2647,"title":{},"content":{"343":{"position":[[565,14]]},"817":{"position":[[583,14]]}},"keywords":{}}],["tf.data.experimental.autoshardpolicy.data",{"_index":2680,"title":{},"content":{"343":{"position":[[1761,41]]},"817":{"position":[[1779,41]]}},"keywords":{}}],["tf.data.opt",{"_index":2678,"title":{},"content":{"343":{"position":[[1689,17]]},"817":{"position":[[1707,17]]}},"keywords":{}}],["tf.distribute.experimental.multiworkermirroredstrategi",{"_index":2671,"title":{},"content":{"343":{"position":[[1370,55]]},"817":{"position":[[1388,55]]}},"keywords":{}}],["tf.event",{"_index":1578,"title":{},"content":{"132":{"position":[[381,10],[1320,9]]},"133":{"position":[[51,9]]},"660":{"position":[[381,10],[1320,9]]},"661":{"position":[[51,9]]}},"keywords":{}}],["tf.float32",{"_index":2648,"title":{},"content":{"343":{"position":[[580,11]]},"817":{"position":[[598,11]]}},"keywords":{}}],["tf/pytorch",{"_index":1585,"title":{},"content":{"132":{"position":[[1497,10]]},"660":{"position":[[1497,10]]}},"keywords":{}}],["tf_config",{"_index":3936,"title":{"964":{"position":[[4,9]]}},"content":{"964":{"position":[[239,9],[365,10],[469,9],[1378,9],[1504,9]]},"965":{"position":[[16,9],[410,10],[624,10],[9907,10],[10103,10],[16178,10]]}},"keywords":{}}],["tfd",{"_index":2639,"title":{},"content":{"343":{"position":[[344,4]]},"817":{"position":[[344,4]]}},"keywords":{}}],["tfds.load(name='mnist",{"_index":2650,"title":{},"content":{"343":{"position":[[639,23]]},"817":{"position":[[657,23]]}},"keywords":{}}],["tfjob",{"_index":1859,"title":{},"content":{"180":{"position":[[437,5]]},"687":{"position":[[490,5]]}},"keywords":{}}],["tfjob'",{"_index":1862,"title":{},"content":{"180":{"position":[[522,7]]},"687":{"position":[[575,7]]}},"keywords":{}}],["tfrecord",{"_index":3909,"title":{},"content":{"960":{"position":[[86,8],[223,8]]}},"keywords":{}}],["tfshouldusewarningwrapper(x",{"_index":4215,"title":{},"content":{"967":{"position":[[1966,28]]}},"keywords":{}}],["thank",{"_index":2334,"title":{},"content":{"281":{"position":[[113,6],[1132,7],[1552,5]]},"286":{"position":[[421,6]]},"440":{"position":[[62,6]]},"924":{"position":[[62,6]]}},"keywords":{}}],["that'",{"_index":1626,"title":{},"content":{"134":{"position":[[1803,6]]},"662":{"position":[[1803,6]]}},"keywords":{}}],["thchs30",{"_index":3338,"title":{},"content":{"779":{"position":[[325,7]]},"788":{"position":[[0,7],[109,7]]},"791":{"position":[[388,7]]}},"keywords":{}}],["thchs30/s5",{"_index":3381,"title":{},"content":{"791":{"position":[[962,10],[1209,10],[1280,10],[1489,10]]}},"keywords":{}}],["thchs30_path/data",{"_index":3348,"title":{},"content":{"788":{"position":[[205,18],[230,18]]}},"keywords":{}}],["thchs30_path/sg",{"_index":3355,"title":{},"content":{"788":{"position":[[585,17]]}},"keywords":{}}],["thchs30_path=/data/hdfs1/nfs/aisearch/kaldi/thchs30",{"_index":3347,"title":{},"content":{"788":{"position":[[147,51]]},"791":{"position":[[111,51]]}},"keywords":{}}],["thchs30_path}/data:/opt/kaldi/egs/thchs30",{"_index":3379,"title":{},"content":{"791":{"position":[[874,45]]}},"keywords":{}}],["thchs30_path}/mul/s5:/opt/kaldi/egs/mul",{"_index":3380,"title":{},"content":{"791":{"position":[[920,41]]}},"keywords":{}}],["thchs30_path}/sge/group:/etc/group:rw",{"_index":3377,"title":{},"content":{"791":{"position":[[796,41]]}},"keywords":{}}],["thchs30_path}/sge/passwd:/etc/passwd:rw",{"_index":3376,"title":{},"content":{"791":{"position":[[752,43]]}},"keywords":{}}],["thchs30_path}/sge:$sge_cfg_path",{"_index":3378,"title":{},"content":{"791":{"position":[[838,35]]}},"keywords":{}}],["thejob",{"_index":4167,"title":{},"content":{"966":{"position":[[348,6]]}},"keywords":{}}],["themself",{"_index":2599,"title":{},"content":{"335":{"position":[[166,9]]},"805":{"position":[[166,9]]}},"keywords":{}}],["themselv",{"_index":1545,"title":{},"content":{"121":{"position":[[704,11]]},"502":{"position":[[58,10]]},"628":{"position":[[704,11]]}},"keywords":{}}],["there'",{"_index":1142,"title":{},"content":{"90":{"position":[[2124,7]]},"108":{"position":[[0,7]]},"134":{"position":[[1274,7]]},"140":{"position":[[626,7]]},"148":{"position":[[0,7]]},"151":{"position":[[388,7]]},"604":{"position":[[2124,7]]},"622":{"position":[[0,7]]},"640":{"position":[[626,7]]},"648":{"position":[[0,7]]},"651":{"position":[[388,7]]},"662":{"position":[[1274,7]]},"979":{"position":[[587,7]]}},"keywords":{}}],["there'r",{"_index":1118,"title":{},"content":{"90":{"position":[[1151,8]]},"93":{"position":[[133,8],[254,8],[571,8]]},"102":{"position":[[548,8]]},"106":{"position":[[105,8]]},"107":{"position":[[0,8]]},"112":{"position":[[762,8],[1983,8]]},"117":{"position":[[160,8]]},"127":{"position":[[0,8],[227,8]]},"132":{"position":[[1235,8],[1703,8]]},"134":{"position":[[50,8]]},"139":{"position":[[1179,8],[1336,8],[1718,8]]},"142":{"position":[[0,8]]},"596":{"position":[[762,8],[1983,8]]},"601":{"position":[[160,8]]},"604":{"position":[[1151,8]]},"607":{"position":[[133,8],[254,8],[571,8]]},"616":{"position":[[553,8]]},"620":{"position":[[105,8]]},"621":{"position":[[0,8]]},"634":{"position":[[0,8],[227,8]]},"639":{"position":[[1184,8],[1342,8],[1731,8]]},"642":{"position":[[0,8]]},"660":{"position":[[1235,8],[1703,8]]},"662":{"position":[[50,8]]},"667":{"position":[[980,8]]}},"keywords":{}}],["they'r",{"_index":1238,"title":{},"content":{"94":{"position":[[215,7],[285,7],[377,7]]},"139":{"position":[[1234,7],[1863,7]]},"160":{"position":[[722,7]]},"608":{"position":[[215,7],[285,7],[377,7]]},"639":{"position":[[1240,7],[1876,7]]},"667":{"position":[[722,7]]}},"keywords":{}}],["they'v",{"_index":929,"title":{},"content":{"74":{"position":[[211,7]]},"583":{"position":[[211,7]]}},"keywords":{}}],["thing",{"_index":1005,"title":{},"content":{"79":{"position":[[1887,7]]},"134":{"position":[[1694,6]]},"436":{"position":[[163,7]]},"662":{"position":[[1694,6]]},"920":{"position":[[163,7]]}},"keywords":{}}],["think",{"_index":2154,"title":{},"content":{"255":{"position":[[435,5]]}},"keywords":{}}],["thoroughli",{"_index":878,"title":{},"content":{"67":{"position":[[188,10]]},"576":{"position":[[188,10]]}},"keywords":{}}],["thos",{"_index":672,"title":{},"content":{"53":{"position":[[7232,5],[8747,5]]}},"keywords":{}}],["though",{"_index":522,"title":{},"content":{"53":{"position":[[1644,6]]}},"keywords":{}}],["thread",{"_index":1968,"title":{},"content":{"210":{"position":[[279,6]]},"484":{"position":[[836,6],[887,7]]},"705":{"position":[[279,6]]},"947":{"position":[[836,6],[887,7]]}},"keywords":{}}],["thread:{vote_mail_address",{"_index":2355,"title":{},"content":{"281":{"position":[[1525,26]]}},"keywords":{}}],["three",{"_index":713,"title":{},"content":{"53":{"position":[[9130,5]]},"77":{"position":[[10,5]]},"184":{"position":[[531,5]]},"502":{"position":[[1269,5]]},"586":{"position":[[10,5]]},"712":{"position":[[536,5]]},"937":{"position":[[0,5]]}},"keywords":{}}],["thrift",{"_index":1958,"title":{},"content":{"209":{"position":[[470,6],[520,6]]},"704":{"position":[[470,6],[520,6]]}},"keywords":{}}],["through",{"_index":999,"title":{},"content":{"79":{"position":[[1402,7]]},"103":{"position":[[727,7]]},"112":{"position":[[2282,7]]},"162":{"position":[[1120,7]]},"186":{"position":[[397,7],[1166,7]]},"190":{"position":[[399,7]]},"197":{"position":[[365,7]]},"199":{"position":[[78,7]]},"200":{"position":[[337,7]]},"202":{"position":[[49,7]]},"206":{"position":[[134,7]]},"207":{"position":[[495,7]]},"262":{"position":[[0,7]]},"302":{"position":[[407,7]]},"306":{"position":[[165,7]]},"500":{"position":[[103,7]]},"502":{"position":[[1926,7]]},"596":{"position":[[2282,7]]},"617":{"position":[[727,7]]},"669":{"position":[[1373,7]]},"692":{"position":[[365,7]]},"694":{"position":[[78,7]]},"695":{"position":[[337,7]]},"697":{"position":[[49,7]]},"701":{"position":[[134,7]]},"702":{"position":[[495,7]]},"714":{"position":[[397,7],[1166,7]]},"718":{"position":[[404,7]]},"757":{"position":[[165,7]]},"770":{"position":[[407,7]]},"966":{"position":[[269,7]]}},"keywords":{}}],["throughout",{"_index":1913,"title":{},"content":{"201":{"position":[[413,10]]},"696":{"position":[[413,10]]}},"keywords":{}}],["tim",{"_index":516,"title":{"59":{"position":[[54,5]]},"568":{"position":[[54,5]]}},"content":{"53":{"position":[[1467,5],[1661,6],[8584,6],[10720,4],[10838,6]]},"69":{"position":[[437,4]]},"98":{"position":[[574,4]]},"101":{"position":[[496,5]]},"132":{"position":[[60,5]]},"133":{"position":[[61,4],[175,4]]},"155":{"position":[[294,5]]},"156":{"position":[[69,4]]},"209":{"position":[[576,4],[623,4]]},"211":{"position":[[800,5],[1342,5]]},"239":{"position":[[423,4]]},"290":{"position":[[5,4]]},"291":{"position":[[208,6]]},"307":{"position":[[5,4]]},"310":{"position":[[212,4]]},"401":{"position":[[94,4]]},"490":{"position":[[182,5]]},"491":{"position":[[48,4]]},"498":{"position":[[255,5]]},"578":{"position":[[437,4]]},"612":{"position":[[574,4]]},"615":{"position":[[496,5]]},"655":{"position":[[301,5]]},"656":{"position":[[69,4]]},"660":{"position":[[60,5]]},"661":{"position":[[61,4],[175,4]]},"704":{"position":[[576,4],[623,4]]},"706":{"position":[[800,5],[1342,5]]},"743":{"position":[[407,4]]},"753":{"position":[[5,4]]},"754":{"position":[[208,6]]},"758":{"position":[[5,4]]},"782":{"position":[[212,4]]},"791":{"position":[[16504,4],[16635,4],[16768,4],[16904,4],[31358,4],[31489,4],[31622,4],[31758,4]]},"890":{"position":[[94,4]]},"961":{"position":[[567,5]]},"965":{"position":[[256,5],[9830,5]]}},"keywords":{}}],["time.sleep(1",{"_index":2828,"title":{},"content":{"401":{"position":[[265,13]]},"890":{"position":[[265,13]]}},"keywords":{}}],["timefram",{"_index":730,"title":{},"content":{"53":{"position":[[10644,10],[10881,9],[10982,9]]}},"keywords":{}}],["timeout",{"_index":1679,"title":{},"content":{"140":{"position":[[496,8],[1460,8]]},"211":{"position":[[408,7]]},"640":{"position":[[496,8],[1460,8]]},"706":{"position":[[408,7]]}},"keywords":{}}],["timestamp",{"_index":1970,"title":{},"content":{"211":{"position":[[222,10],[324,10]]},"706":{"position":[[222,10],[324,10]]}},"keywords":{}}],["timet",{"_index":737,"title":{},"content":{"53":{"position":[[10806,9]]},"54":{"position":[[635,10]]}},"keywords":{}}],["titl",{"_index":840,"title":{},"content":{"61":{"position":[[135,5]]},"286":{"position":[[156,6]]},"501":{"position":[[98,6]]},"570":{"position":[[135,5]]}},"keywords":{}}],["title:[result][vot",{"_index":2351,"title":{},"content":{"281":{"position":[[1187,20]]}},"keywords":{}}],["title:[vot",{"_index":2331,"title":{},"content":{"281":{"position":[[17,12]]}},"keywords":{}}],["tlp",{"_index":1286,"title":{},"content":{"98":{"position":[[619,4]]},"612":{"position":[[619,4]]}},"keywords":{}}],["tmp",{"_index":2434,"title":{},"content":{"313":{"position":[[568,4]]},"785":{"position":[[568,4]]}},"keywords":{}}],["tmp/apach",{"_index":2291,"title":{},"content":{"269":{"position":[[104,11]]},"270":{"position":[[57,11],[442,11]]},"274":{"position":[[3,11]]},"278":{"position":[[152,11]]}},"keywords":{}}],["tmp/data",{"_index":4270,"title":{},"content":{"980":{"position":[[613,9],[736,9]]}},"keywords":{}}],["tmp/mod",{"_index":4272,"title":{},"content":{"980":{"position":[[637,10],[760,10]]}},"keywords":{}}],["tmp/submarin",{"_index":2233,"title":{},"content":{"263":{"position":[[348,14],[1208,14]]},"277":{"position":[[226,14]]},"278":{"position":[[3,14]]},"495":{"position":[[494,14],[524,14]]}},"keywords":{}}],["to/image_classification.pi",{"_index":4331,"title":{},"content":{"990":{"position":[[999,27]]}},"keywords":{}}],["to/image_classification.py,path",{"_index":4347,"title":{},"content":{"991":{"position":[[1023,31]]}},"keywords":{}}],["to/mnist_distributed.pi",{"_index":4319,"title":{},"content":{"985":{"position":[[708,24]]}},"keywords":{}}],["to/mnist_distributed.py,path",{"_index":4277,"title":{},"content":{"980":{"position":[[851,28]]}},"keywords":{}}],["to/myvenv.zip#archive,path",{"_index":4276,"title":{},"content":{"980":{"position":[[824,26]]},"985":{"position":[[681,26]]},"990":{"position":[[972,26]]}},"keywords":{}}],["to/submarin",{"_index":4262,"title":{},"content":{"980":{"position":[[213,12],[880,12]]},"981":{"position":[[107,12],[1149,12]]},"985":{"position":[[210,12],[740,12]]},"986":{"position":[[107,12],[859,12]]},"990":{"position":[[150,12],[1034,12]]},"991":{"position":[[185,12],[1055,12]]}},"keywords":{}}],["to:dev@submarine.apache.org",{"_index":2330,"title":{},"content":{"280":{"position":[[50,27]]}},"keywords":{}}],["today",{"_index":1075,"title":{},"content":{"90":{"position":[[39,6]]},"604":{"position":[[39,6]]}},"keywords":{}}],["todev@submarine.apache.org",{"_index":2362,"title":{"286":{"position":[[19,26]]}},"content":{},"keywords":{}}],["todo",{"_index":1258,"title":{},"content":{"95":{"position":[[0,5]]},"130":{"position":[[479,7]]},"154":{"position":[[1131,5]]},"158":{"position":[[2973,6]]},"164":{"position":[[0,4]]},"165":{"position":[[0,4]]},"166":{"position":[[0,4]]},"167":{"position":[[0,4]]},"168":{"position":[[0,4]]},"169":{"position":[[0,4]]},"170":{"position":[[0,4]]},"171":{"position":[[0,4]]},"172":{"position":[[0,4]]},"173":{"position":[[0,5]]},"175":{"position":[[197,5]]},"192":{"position":[[0,6]]},"193":{"position":[[0,6]]},"194":{"position":[[0,6]]},"311":{"position":[[21,5]]},"376":{"position":[[271,4]]},"503":{"position":[[0,6]]},"504":{"position":[[0,6]]},"505":{"position":[[0,6]]},"506":{"position":[[0,6]]},"507":{"position":[[0,6]]},"508":{"position":[[0,6]]},"509":{"position":[[0,6]]},"510":{"position":[[0,6]]},"512":{"position":[[0,6]]},"513":{"position":[[0,6]]},"514":{"position":[[0,6]]},"515":{"position":[[0,6]]},"523":{"position":[[0,6]]},"524":{"position":[[0,6]]},"525":{"position":[[0,6]]},"526":{"position":[[0,6]]},"527":{"position":[[0,6]]},"528":{"position":[[0,6]]},"529":{"position":[[0,6]]},"530":{"position":[[0,6]]},"532":{"position":[[0,6]]},"533":{"position":[[0,6]]},"534":{"position":[[0,6]]},"535":{"position":[[0,6]]},"609":{"position":[[0,5]]},"637":{"position":[[479,7]]},"654":{"position":[[1136,5]]},"658":{"position":[[2973,6]]},"671":{"position":[[0,4]]},"672":{"position":[[0,4]]},"673":{"position":[[0,4]]},"674":{"position":[[0,4]]},"675":{"position":[[0,4]]},"676":{"position":[[0,4]]},"677":{"position":[[0,4]]},"678":{"position":[[0,4]]},"679":{"position":[[0,4]]},"680":{"position":[[0,5]]},"682":{"position":[[197,5]]},"720":{"position":[[0,6]]},"721":{"position":[[0,6]]},"722":{"position":[[0,6]]},"723":{"position":[[0,6]]},"727":{"position":[[0,4]]},"728":{"position":[[0,4]]},"729":{"position":[[0,4]]},"783":{"position":[[21,5]]},"850":{"position":[[271,4]]}},"keywords":{}}],["togeth",{"_index":4316,"title":{},"content":{"981":{"position":[[1592,8]]}},"keywords":{}}],["tok",{"_index":1570,"title":{"320":{"position":[[11,5]]},"797":{"position":[[11,5]]}},"content":{"130":{"position":[[278,5]]},"320":{"position":[[23,5],[150,5],[222,5]]},"637":{"position":[[278,5]]},"797":{"position":[[23,5],[150,5],[222,5]]}},"keywords":{}}],["tol",{"_index":1963,"title":{"210":{"position":[[14,9]]},"705":{"position":[[14,9]]}},"content":{"963":{"position":[[191,8]]}},"keywords":{}}],["ton",{"_index":2364,"title":{},"content":{"286":{"position":[[413,4]]}},"keywords":{}}],["toni",{"_index":3259,"title":{},"content":{"652":{"position":[[976,4]]},"979":{"position":[[0,4]]},"981":{"position":[[1386,4],[1449,4],[1720,4]]},"984":{"position":[[0,4]]},"989":{"position":[[0,4]]},"992":{"position":[[386,4]]}},"keywords":{}}],["tony.containers.resources=path",{"_index":4275,"title":{},"content":{"980":{"position":[[793,30]]},"981":{"position":[[1118,30]]},"985":{"position":[[650,30]]},"986":{"position":[[828,30]]},"990":{"position":[[941,30]]},"991":{"position":[[992,30]]}},"keywords":{}}],["tony.tonycli",{"_index":4281,"title":{},"content":{"980":{"position":[[1070,16],[1271,16],[1472,16],[1669,16],[1812,16],[1959,16],[2106,16],[2304,16],[2506,16]]},"985":{"position":[[930,16],[1131,16],[1332,16],[1529,16],[1672,16],[1819,16],[1966,16],[2164,16],[2366,16]]},"990":{"position":[[1224,16],[1426,16],[1628,16],[1830,16],[2032,16],[2237,16],[2387,16],[2534,16],[2681,16],[2828,16],[2975,16],[3182,16],[3386,16],[3590,16],[3794,16]]}},"keywords":{}}],["tool",{"_index":1087,"title":{"92":{"position":[[65,5]]},"606":{"position":[[65,5]]}},"content":{"90":{"position":[[363,5],[611,6],[1532,6]]},"92":{"position":[[315,5],[357,5],[585,5],[922,6]]},"186":{"position":[[948,5]]},"236":{"position":[[147,5],[371,4]]},"303":{"position":[[397,4]]},"334":{"position":[[146,5]]},"492":{"position":[[742,4],[1209,5]]},"604":{"position":[[363,5],[611,6],[1532,6]]},"606":{"position":[[315,5],[357,5],[585,5],[922,6]]},"714":{"position":[[948,5]]},"740":{"position":[[147,5],[374,4]]},"771":{"position":[[397,4]]},"804":{"position":[[146,5]]},"950":{"position":[[430,5]]},"963":{"position":[[233,5]]}},"keywords":{}}],["toolset",{"_index":1289,"title":{},"content":{"99":{"position":[[259,9]]},"613":{"position":[[259,9]]}},"keywords":{}}],["top",{"_index":594,"title":{},"content":{"53":{"position":[[3806,3]]},"74":{"position":[[512,3]]},"93":{"position":[[303,3],[811,3]]},"99":{"position":[[636,3]]},"103":{"position":[[268,3]]},"112":{"position":[[391,3],[900,3]]},"346":{"position":[[233,3]]},"500":{"position":[[42,3]]},"583":{"position":[[512,3]]},"596":{"position":[[391,3],[900,3]]},"607":{"position":[[303,3],[811,3]]},"613":{"position":[[636,3]]},"617":{"position":[[268,3]]},"777":{"position":[[1107,3]]},"950":{"position":[[952,3]]},"954":{"position":[[1579,3]]},"969":{"position":[[1216,3]]}},"keywords":{}}],["topic",{"_index":1526,"title":{},"content":{"118":{"position":[[165,6]]},"625":{"position":[[165,6]]}},"keywords":{}}],["torch_cuda_arch_list=\"3.5",{"_index":3888,"title":{},"content":{"954":{"position":[[1305,25]]}},"keywords":{}}],["torch_nvcc_flag",{"_index":3892,"title":{},"content":{"954":{"position":[[1352,18]]}},"keywords":{}}],["total",{"_index":1895,"title":{},"content":{"197":{"position":[[32,5]]},"501":{"position":[[57,5]]},"692":{"position":[[32,5]]},"965":{"position":[[1573,5],[1819,5],[10990,5],[11236,5]]}},"keywords":{}}],["total_num_replicas=1",{"_index":4035,"title":{},"content":{"965":{"position":[[4657,20]]}},"keywords":{}}],["total_num_replicas=2",{"_index":4047,"title":{},"content":{"965":{"position":[[7425,20],[14074,20]]}},"keywords":{}}],["touch",{"_index":1479,"title":{},"content":{"114":{"position":[[316,5]]},"598":{"position":[[316,5]]}},"keywords":{}}],["trac",{"_index":1298,"title":{},"content":{"101":{"position":[[165,5]]},"134":{"position":[[296,5]]},"148":{"position":[[447,6],[518,6]]},"615":{"position":[[165,5]]},"648":{"position":[[447,6],[518,6]]},"662":{"position":[[296,5]]}},"keywords":{}}],["traceback.format_stack",{"_index":4220,"title":{},"content":{"967":{"position":[[2131,25]]}},"keywords":{}}],["track",{"_index":842,"title":{"468":{"position":[[0,8]]},"928":{"position":[[0,8]]}},"content":{"61":{"position":[[198,7]]},"83":{"position":[[75,5]]},"90":{"position":[[2740,5]]},"132":{"position":[[210,10],[1385,8],[1418,9],[1435,9],[1472,8]]},"133":{"position":[[158,8]]},"134":{"position":[[258,8]]},"140":{"position":[[604,5]]},"153":{"position":[[12,6]]},"186":{"position":[[362,8]]},"400":{"position":[[20,8]]},"470":{"position":[[8,8],[158,8]]},"471":{"position":[[8,8]]},"570":{"position":[[198,7]]},"590":{"position":[[75,5]]},"604":{"position":[[2740,5]]},"640":{"position":[[604,5]]},"653":{"position":[[12,6]]},"660":{"position":[[210,10],[1385,8],[1418,9],[1435,9],[1472,8]]},"661":{"position":[[158,8]]},"662":{"position":[[258,8]]},"714":{"position":[[362,8]]},"889":{"position":[[20,8]]},"930":{"position":[[8,8],[158,8]]},"931":{"position":[[8,8]]}},"keywords":{}}],["tracking/metr",{"_index":1390,"title":{},"content":{"105":{"position":[[23,16],[77,16],[103,16]]},"433":{"position":[[68,16],[118,16],[144,16]]},"619":{"position":[[23,16],[77,16],[103,16]]},"927":{"position":[[68,16],[118,16],[144,16]]}},"keywords":{}}],["tracking_uri",{"_index":3752,"title":{},"content":{"908":{"position":[[47,13]]}},"keywords":{}}],["tracking_uri.registry_uri",{"_index":3753,"title":{},"content":{"908":{"position":[[145,26]]}},"keywords":{}}],["trademark",{"_index":466,"title":{},"content":{"53":{"position":[[290,9]]}},"keywords":{}}],["traefik",{"_index":77,"title":{},"content":{"4":{"position":[[372,7]]},"5":{"position":[[278,7]]},"289":{"position":[[168,7]]},"305":{"position":[[399,7]]},"306":{"position":[[254,7]]},"314":{"position":[[91,7],[153,8],[244,7],[263,8],[348,7],[481,7],[557,8],[908,7],[1171,7]]},"334":{"position":[[59,7]]},"340":{"position":[[570,7]]},"341":{"position":[[208,7]]},"464":{"position":[[372,7]]},"465":{"position":[[278,7]]},"752":{"position":[[168,7]]},"756":{"position":[[399,7]]},"757":{"position":[[254,7]]},"786":{"position":[[91,7],[153,8],[244,7],[263,8],[348,7],[481,7],[557,8],[908,7],[1171,7]]},"804":{"position":[[59,7]]},"814":{"position":[[532,7]]},"815":{"position":[[99,7]]}},"keywords":{}}],["train",{"_index":206,"title":{"105":{"position":[[12,8]]},"147":{"position":[[35,8]]},"335":{"position":[[0,8]]},"343":{"position":[[41,8]]},"344":{"position":[[46,8]]},"504":{"position":[[0,8]]},"524":{"position":[[0,8]]},"619":{"position":[[12,8]]},"647":{"position":[[35,8]]},"788":{"position":[[17,8]]},"791":{"position":[[16,8]]},"805":{"position":[[0,8]]},"817":{"position":[[41,8]]},"818":{"position":[[46,8]]},"961":{"position":[[0,8]]},"962":{"position":[[16,8]]},"980":{"position":[[8,8]]},"985":{"position":[[8,8]]},"990":{"position":[[8,8]]}},"content":{"15":{"position":[[314,10],[422,10]]},"18":{"position":[[311,10],[419,10]]},"90":{"position":[[631,7]]},"91":{"position":[[285,9],[321,9]]},"92":{"position":[[150,5],[404,8],[744,8],[785,8]]},"99":{"position":[[322,9]]},"102":{"position":[[209,8],[940,8],[1415,5],[1720,11]]},"108":{"position":[[56,8]]},"113":{"position":[[331,8]]},"117":{"position":[[1371,8]]},"132":{"position":[[1519,8]]},"134":{"position":[[899,8],[1561,8],[1951,8]]},"135":{"position":[[262,8]]},"139":{"position":[[479,5],[1311,9],[1390,8]]},"147":{"position":[[51,8],[80,8],[1455,9]]},"157":{"position":[[297,8],[652,11],[889,8],[984,8],[1023,9],[1100,5],[1262,8]]},"158":{"position":[[1708,6],[1910,5],[2005,5]]},"161":{"position":[[123,8]]},"177":{"position":[[203,8],[286,8]]},"335":{"position":[[37,5],[198,5]]},"342":{"position":[[54,8]]},"401":{"position":[[491,8]]},"410":{"position":[[282,10],[390,10],[1441,11],[1549,11]]},"412":{"position":[[443,11],[551,11]]},"415":{"position":[[287,10],[395,10],[1471,11],[1579,11]]},"418":{"position":[[467,11],[575,11]]},"429":{"position":[[6,8]]},"476":{"position":[[258,8]]},"479":{"position":[[964,5],[1003,5]]},"544":{"position":[[314,10],[422,10]]},"547":{"position":[[311,10],[419,10]]},"597":{"position":[[331,8]]},"601":{"position":[[1371,8]]},"604":{"position":[[631,7]]},"605":{"position":[[285,9],[321,9]]},"606":{"position":[[150,5],[404,8],[744,8],[785,8]]},"613":{"position":[[322,9]]},"616":{"position":[[209,8],[945,8],[1427,5],[1732,11]]},"622":{"position":[[56,8]]},"639":{"position":[[479,5],[1317,9],[1396,8]]},"647":{"position":[[51,8],[80,8],[1455,9]]},"652":{"position":[[1007,8]]},"657":{"position":[[297,8],[652,11],[889,8],[984,8],[1023,9],[1100,5],[1262,8]]},"658":{"position":[[1708,6],[1910,5],[2005,5]]},"660":{"position":[[1519,8]]},"662":{"position":[[899,8],[1561,8],[1951,8]]},"663":{"position":[[262,8]]},"668":{"position":[[123,8]]},"684":{"position":[[203,8],[286,8]]},"791":{"position":[[1871,8]]},"805":{"position":[[37,5],[198,5]]},"816":{"position":[[54,8]]},"863":{"position":[[282,10],[390,10],[1441,11],[1549,11]]},"865":{"position":[[443,11],[551,11]]},"868":{"position":[[287,10],[395,10],[1471,11],[1579,11]]},"871":{"position":[[467,11],[575,11]]},"890":{"position":[[491,8]]},"903":{"position":[[6,8]]},"909":{"position":[[176,9]]},"942":{"position":[[964,5],[1003,5]]},"960":{"position":[[240,9]]},"961":{"position":[[8,8],[36,9],[169,5],[252,9],[385,5],[546,8]]},"963":{"position":[[653,8],[939,5]]},"964":{"position":[[1063,9],[1117,9]]},"965":{"position":[[269,9],[531,5],[9843,9],[10028,5],[16015,8]]},"966":{"position":[[381,5],[436,8]]},"967":{"position":[[2190,9]]},"981":{"position":[[644,5],[685,5]]}},"keywords":{}}],["train.pi",{"_index":1520,"title":{},"content":{"117":{"position":[[1037,8]]},"139":{"position":[[1373,8]]},"147":{"position":[[118,9]]},"342":{"position":[[38,8]]},"601":{"position":[[1037,8]]},"639":{"position":[[1379,8]]},"647":{"position":[[118,9]]},"816":{"position":[[38,8]]}},"keywords":{}}],["train.tfrecordsvalidation.tfrecordseval.tfrecord",{"_index":3912,"title":{},"content":{"960":{"position":[[470,49]]}},"keywords":{}}],["train/t",{"_index":1172,"title":{},"content":{"91":{"position":[[226,10]]},"605":{"position":[[226,10]]}},"keywords":{}}],["train_and_evalu",{"_index":4186,"title":{},"content":{"967":{"position":[[781,18]]}},"keywords":{}}],["train_cmd=\"queue.pl",{"_index":3359,"title":{},"content":{"788":{"position":[[714,19]]}},"keywords":{}}],["train_data",{"_index":1342,"title":{},"content":{"102":{"position":[[1448,13]]},"157":{"position":[[380,13]]},"616":{"position":[[1460,13]]},"657":{"position":[[380,13]]}},"keywords":{}}],["train_steps=100",{"_index":2561,"title":{},"content":{"328":{"position":[[863,17]]},"809":{"position":[[883,17]]}},"keywords":{}}],["training.batch_s",{"_index":1789,"title":{},"content":{"157":{"position":[[1179,19]]},"657":{"position":[[1179,19]]}},"keywords":{}}],["training.ipynb",{"_index":1717,"title":{},"content":{"147":{"position":[[914,14]]},"647":{"position":[[914,14]]}},"keywords":{}}],["training.paramet",{"_index":3397,"title":{},"content":{"791":{"position":[[1592,19]]}},"keywords":{}}],["training.pi",{"_index":1670,"title":{},"content":{"140":{"position":[[365,11]]},"147":{"position":[[410,11]]},"640":{"position":[[365,11]]},"647":{"position":[[410,11]]}},"keywords":{}}],["training/batch",{"_index":1588,"title":{},"content":{"132":{"position":[[1928,14]]},"660":{"position":[[1928,14]]}},"keywords":{}}],["tran",{"_index":3761,"title":{},"content":{"909":{"position":[[259,8]]}},"keywords":{}}],["transcript",{"_index":3345,"title":{},"content":{"788":{"position":[[70,12]]}},"keywords":{}}],["transf",{"_index":624,"title":{},"content":{"53":{"position":[[5319,12]]},"263":{"position":[[531,8]]}},"keywords":{}}],["transform",{"_index":1156,"title":{},"content":{"90":{"position":[[2665,16]]},"91":{"position":[[115,15],[139,16],[751,15]]},"92":{"position":[[294,14]]},"604":{"position":[[2665,16]]},"605":{"position":[[115,15],[139,16],[751,15]]},"606":{"position":[[294,14]]}},"keywords":{}}],["treat",{"_index":1364,"title":{},"content":{"102":{"position":[[2177,7]]},"616":{"position":[[2190,7]]}},"keywords":{}}],["tree",{"_index":3399,"title":{},"content":{"791":{"position":[[1954,7],[17531,7],[17796,7],[32385,7]]}},"keywords":{}}],["tri",{"_index":948,"title":{},"content":{"75":{"position":[[147,3]]},"90":{"position":[[72,6]]},"328":{"position":[[1570,3]]},"330":{"position":[[123,3]]},"335":{"position":[[311,3]]},"584":{"position":[[147,3]]},"604":{"position":[[72,6]]},"800":{"position":[[123,3]]},"805":{"position":[[311,3]]},"809":{"position":[[1590,3]]}},"keywords":{}}],["trigg",{"_index":1610,"title":{},"content":{"134":{"position":[[319,9]]},"290":{"position":[[53,9]]},"307":{"position":[[49,9]]},"662":{"position":[[319,9]]},"753":{"position":[[53,9]]},"758":{"position":[[49,9]]},"791":{"position":[[13095,8],[13150,8],[17388,8],[17442,8],[28644,8],[28699,8],[32242,8],[32296,8]]}},"keywords":{}}],["trivial",{"_index":942,"title":{},"content":{"74":{"position":[[611,7]]},"583":{"position":[[611,7]]}},"keywords":{}}],["troubl",{"_index":2580,"title":{},"content":{"330":{"position":[[141,7]]},"800":{"position":[[141,7]]}},"keywords":{}}],["troubleshoot",{"_index":1110,"title":{"478":{"position":[[9,15]]},"941":{"position":[[9,15]]}},"content":{"90":{"position":[[923,15]]},"94":{"position":[[485,15]]},"132":{"position":[[1110,16]]},"139":{"position":[[2056,15]]},"604":{"position":[[923,15]]},"608":{"position":[[485,15]]},"639":{"position":[[2069,15]]},"660":{"position":[[1110,16]]}},"keywords":{}}],["true",{"_index":191,"title":{},"content":{"12":{"position":[[507,5]]},"15":{"position":[[267,5],[378,5],[499,5]]},"18":{"position":[[264,5],[375,5],[496,5]]},"26":{"position":[[689,5]]},"31":{"position":[[1720,4]]},"32":{"position":[[634,4]]},"33":{"position":[[425,4]]},"34":{"position":[[285,4]]},"35":{"position":[[335,4]]},"41":{"position":[[170,5]]},"47":{"position":[[758,4]]},"48":{"position":[[450,4]]},"49":{"position":[[384,4]]},"50":{"position":[[286,4]]},"52":{"position":[[324,4]]},"157":{"position":[[1080,4]]},"314":{"position":[[281,4]]},"409":{"position":[[445,4]]},"410":{"position":[[235,5],[346,5],[467,5]]},"415":{"position":[[240,5],[351,5],[472,5]]},"492":{"position":[[374,6]]},"541":{"position":[[507,5]]},"544":{"position":[[267,5],[378,5],[499,5]]},"547":{"position":[[264,5],[375,5],[496,5]]},"555":{"position":[[689,5]]},"563":{"position":[[170,5]]},"657":{"position":[[1080,4]]},"742":{"position":[[638,5]]},"786":{"position":[[281,4]]},"862":{"position":[[445,4]]},"863":{"position":[[235,5],[346,5],[467,5]]},"868":{"position":[[240,5],[351,5],[472,5]]},"965":{"position":[[806,5],[1108,4],[5042,4],[10590,4],[14548,4],[16659,4]]}},"keywords":{}}],["true/fal",{"_index":1781,"title":{},"content":{"157":{"position":[[156,10]]},"657":{"position":[[156,10]]}},"keywords":{}}],["trust",{"_index":749,"title":{},"content":{"54":{"position":[[364,5],[2483,5]]},"252":{"position":[[150,5],[171,5],[555,6],[720,5],[800,6],[986,5],[1161,5],[1173,5],[1196,5],[1214,5],[1331,6],[1431,6],[1670,6]]},"260":{"position":[[2436,7]]}},"keywords":{}}],["truststor",{"_index":3189,"title":{},"content":{"492":{"position":[[892,10],[1034,10],[1148,10]]}},"keywords":{}}],["tun",{"_index":1176,"title":{},"content":{"91":{"position":[[353,7]]},"94":{"position":[[448,6]]},"99":{"position":[[336,7]]},"102":{"position":[[2037,6]]},"605":{"position":[[353,7]]},"608":{"position":[[448,6]]},"613":{"position":[[336,7]]},"616":{"position":[[2049,6]]}},"keywords":{}}],["turn",{"_index":1921,"title":{},"content":{"203":{"position":[[137,4]]},"698":{"position":[[137,4]]}},"keywords":{}}],["tutori",{"_index":2162,"title":{},"content":{"259":{"position":[[45,9]]},"306":{"position":[[97,8]]},"757":{"position":[[97,8]]}},"keywords":{}}],["tutorials/imag",{"_index":3926,"title":{},"content":{"963":{"position":[[540,15]]}},"keywords":{}}],["tvbr9",{"_index":3746,"title":{},"content":{"814":{"position":[[496,5]]}},"keywords":{}}],["twic",{"_index":687,"title":{},"content":{"53":{"position":[[8036,5]]}},"keywords":{}}],["twin",{"_index":2975,"title":{},"content":{"441":{"position":[[414,5],[501,5]]},"925":{"position":[[414,5],[501,5]]}},"keywords":{}}],["two",{"_index":1004,"title":{"487":{"position":[[0,3]]}},"content":{"79":{"position":[[1883,3]]},"102":{"position":[[557,3]]},"112":{"position":[[1992,3]]},"117":{"position":[[169,3]]},"139":{"position":[[1420,3]]},"162":{"position":[[864,3]]},"197":{"position":[[41,3]]},"205":{"position":[[83,3]]},"207":{"position":[[141,3]]},"208":{"position":[[128,3]]},"313":{"position":[[715,3]]},"365":{"position":[[541,3]]},"431":{"position":[[132,3]]},"596":{"position":[[1992,3]]},"601":{"position":[[169,3]]},"616":{"position":[[562,3]]},"639":{"position":[[1427,3]]},"669":{"position":[[1117,3]]},"692":{"position":[[41,3]]},"700":{"position":[[83,3]]},"702":{"position":[[141,3]]},"703":{"position":[[128,3]]},"777":{"position":[[37,3]]},"785":{"position":[[715,3]]},"839":{"position":[[541,3]]},"905":{"position":[[132,3]]},"950":{"position":[[38,3]]},"954":{"position":[[40,3]]},"969":{"position":[[42,3]]}},"keywords":{}}],["typ",{"_index":154,"title":{"313":{"position":[[7,4]]},"785":{"position":[[7,4]]}},"content":{"9":{"position":[[66,5]]},"12":{"position":[[76,5]]},"15":{"position":[[63,5]]},"18":{"position":[[56,5]]},"20":{"position":[[82,5]]},"22":{"position":[[65,5]]},"23":{"position":[[65,5]]},"26":{"position":[[73,5]]},"33":{"position":[[71,5]]},"38":{"position":[[63,5]]},"43":{"position":[[132,5]]},"44":{"position":[[64,5]]},"46":{"position":[[71,5]]},"49":{"position":[[81,5]]},"53":{"position":[[5522,5],[5735,5],[5765,5],[5797,4],[7595,5],[7670,5]]},"54":{"position":[[2730,5]]},"102":{"position":[[526,4],[561,5],[1618,7]]},"112":{"position":[[382,5]]},"127":{"position":[[27,5]]},"132":{"position":[[1254,5]]},"133":{"position":[[7,4]]},"140":{"position":[[235,5],[907,5],[1050,5]]},"142":{"position":[[19,5]]},"147":{"position":[[300,4],[798,4],[1239,4]]},"157":{"position":[[550,7]]},"178":{"position":[[412,5]]},"179":{"position":[[101,4]]},"180":{"position":[[105,4],[159,5]]},"181":{"position":[[397,4]]},"260":{"position":[[1577,5],[1833,5]]},"313":{"position":[[37,6],[545,5],[1270,5]]},"350":{"position":[[65,4],[259,4]]},"351":{"position":[[31,5]]},"355":{"position":[[11,4]]},"358":{"position":[[11,4]]},"359":{"position":[[32,5]]},"361":{"position":[[11,4]]},"365":{"position":[[63,4],[318,4],[545,5],[930,4],[1245,4]]},"366":{"position":[[31,5]]},"369":{"position":[[31,5]]},"373":{"position":[[11,4]]},"376":{"position":[[11,4]]},"377":{"position":[[32,5]]},"379":{"position":[[11,4]]},"384":{"position":[[11,4]]},"388":{"position":[[55,4],[257,4],[443,4]]},"389":{"position":[[31,5]]},"391":{"position":[[11,4]]},"394":{"position":[[11,4]]},"397":{"position":[[11,4]]},"409":{"position":[[11,4],[384,4],[607,4],[862,4],[1143,4],[1378,4]]},"410":{"position":[[31,5]]},"414":{"position":[[11,4]]},"415":{"position":[[32,5]]},"417":{"position":[[11,4]]},"420":{"position":[[11,4]]},"421":{"position":[[31,5]]},"437":{"position":[[288,4]]},"474":{"position":[[61,4]]},"492":{"position":[[1088,4],[1109,4]]},"502":{"position":[[194,5]]},"538":{"position":[[66,5]]},"541":{"position":[[76,5]]},"544":{"position":[[63,5]]},"547":{"position":[[56,5]]},"549":{"position":[[82,5]]},"551":{"position":[[65,5]]},"552":{"position":[[65,5]]},"555":{"position":[[73,5]]},"560":{"position":[[63,5]]},"596":{"position":[[382,5]]},"616":{"position":[[531,4],[566,5],[1630,7]]},"634":{"position":[[27,5]]},"640":{"position":[[235,5],[907,5],[1050,5]]},"642":{"position":[[19,5]]},"647":{"position":[[300,4],[798,4],[1239,4]]},"657":{"position":[[550,7]]},"660":{"position":[[1254,5]]},"661":{"position":[[7,4]]},"685":{"position":[[412,5]]},"686":{"position":[[101,4]]},"687":{"position":[[126,4],[180,5]]},"688":{"position":[[397,4]]},"785":{"position":[[37,6],[545,5],[1270,5]]},"824":{"position":[[65,4],[259,4]]},"825":{"position":[[31,5]]},"829":{"position":[[11,4]]},"832":{"position":[[11,4]]},"833":{"position":[[32,5]]},"835":{"position":[[11,4]]},"839":{"position":[[63,4],[318,4],[545,5],[930,4],[1245,4]]},"840":{"position":[[31,5]]},"843":{"position":[[31,5]]},"847":{"position":[[11,4]]},"850":{"position":[[11,4]]},"851":{"position":[[32,5]]},"853":{"position":[[11,4]]},"858":{"position":[[11,4]]},"862":{"position":[[11,4],[384,4],[607,4],[862,4],[1143,4],[1378,4]]},"863":{"position":[[31,5]]},"867":{"position":[[11,4]]},"868":{"position":[[32,5]]},"870":{"position":[[11,4]]},"873":{"position":[[11,4]]},"874":{"position":[[31,5]]},"877":{"position":[[55,4],[257,4],[443,4]]},"878":{"position":[[31,5]]},"880":{"position":[[11,4]]},"883":{"position":[[11,4]]},"886":{"position":[[11,4]]},"921":{"position":[[288,4]]},"954":{"position":[[953,6]]},"964":{"position":[[522,8],[1557,8]]}},"keywords":{}}],["type:submarin",{"_index":3219,"title":{},"content":{"502":{"position":[[156,14]]}},"keywords":{}}],["typic",{"_index":473,"title":{},"content":{"53":{"position":[[488,7],[7471,9]]},"73":{"position":[[174,9]]},"91":{"position":[[546,9],[603,9]]},"92":{"position":[[129,7]]},"94":{"position":[[660,9]]},"132":{"position":[[1547,9]]},"582":{"position":[[174,9]]},"605":{"position":[[546,9],[603,9]]},"606":{"position":[[129,7]]},"608":{"position":[[660,9]]},"660":{"position":[[1547,9]]}},"keywords":{}}],["tz=\"asia/shanghai",{"_index":3374,"title":{},"content":{"791":{"position":[[637,18]]}},"keywords":{}}],["tzdata",{"_index":3841,"title":{},"content":{"950":{"position":[[590,6]]}},"keywords":{}}],["u",{"_index":2048,"title":{},"content":{"238":{"position":[[500,2]]},"240":{"position":[[245,2]]},"289":{"position":[[1329,1]]},"483":{"position":[[71,1]]},"742":{"position":[[500,2]]},"744":{"position":[[245,2]]},"752":{"position":[[1329,1]]},"946":{"position":[[71,1]]}},"keywords":{}}],["u'cloud",{"_index":3977,"title":{},"content":{"965":{"position":[[1156,9],[10638,9],[16707,9]]}},"keywords":{}}],["u'grpc://mast",{"_index":3985,"title":{},"content":{"965":{"position":[[1342,15],[16893,15]]}},"keywords":{}}],["u'mast",{"_index":3963,"title":{},"content":{"965":{"position":[[782,10]]}},"keywords":{}}],["u'p",{"_index":4155,"title":{},"content":{"965":{"position":[[16336,6]]}},"keywords":{}}],["u'work",{"_index":4096,"title":{},"content":{"965":{"position":[[10261,10]]}},"keywords":{}}],["uber",{"_index":4314,"title":{},"content":{"981":{"position":[[1510,4]]}},"keywords":{}}],["ubuntu",{"_index":2441,"title":{},"content":{"313":{"position":[[965,6]]},"785":{"position":[[965,6]]}},"keywords":{}}],["ubuntu18.04",{"_index":3294,"title":{},"content":{"777":{"position":[[145,11],[435,11]]},"954":{"position":[[425,11]]}},"keywords":{}}],["ubuntu:16",{"_index":1702,"title":{},"content":{"146":{"position":[[560,12]]},"646":{"position":[[560,12]]}},"keywords":{}}],["ubuntu:18.04",{"_index":1513,"title":{},"content":{"117":{"position":[[424,12]]},"601":{"position":[[424,12]]},"950":{"position":[[117,12],[390,12]]},"954":{"position":[[121,12]]},"969":{"position":[[125,12],[397,12]]}},"keywords":{}}],["ubyte.gz\\ndownload",{"_index":301,"title":{},"content":{"29":{"position":[[471,21],[544,21],[616,21],[1648,21],[1721,21],[1793,21]]},"558":{"position":[[471,21],[544,21],[616,21],[1648,21],[1721,21],[1793,21]]}},"keywords":{}}],["ubyte.gz\\nprocessing...\\ndone!\\ntrain",{"_index":305,"title":{},"content":{"29":{"position":[[688,37],[1865,37]]},"558":{"position":[[688,37],[1865,37]]}},"keywords":{}}],["ufw",{"_index":3445,"title":{},"content":{"791":{"position":[[2613,3],[18455,3]]}},"keywords":{}}],["ui",{"_index":874,"title":{"67":{"position":[[39,2]]},"327":{"position":[[14,2]]},"399":{"position":[[7,2]]},"576":{"position":[[39,2]]},"808":{"position":[[14,2]]},"888":{"position":[[7,2]]}},"content":{"92":{"position":[[929,4]]},"105":{"position":[[145,3]]},"110":{"position":[[81,2]]},"121":{"position":[[153,2]]},"125":{"position":[[76,2],[578,2]]},"148":{"position":[[470,2]]},"161":{"position":[[190,2],[496,2]]},"281":{"position":[[1005,2]]},"326":{"position":[[23,2]]},"327":{"position":[[38,3]]},"328":{"position":[[1670,3]]},"400":{"position":[[7,2],[151,3],[199,3]]},"401":{"position":[[404,2]]},"433":{"position":[[186,3]]},"606":{"position":[[929,4]]},"619":{"position":[[145,3]]},"624":{"position":[[81,2]]},"628":{"position":[[153,2]]},"632":{"position":[[76,2],[578,2]]},"648":{"position":[[470,2]]},"668":{"position":[[190,2],[496,2]]},"807":{"position":[[23,2]]},"808":{"position":[[38,3]]},"809":{"position":[[1690,3]]},"820":{"position":[[106,2]]},"889":{"position":[[7,2],[151,3],[199,3]]},"890":{"position":[[404,2]]},"927":{"position":[[186,3]]}},"keywords":{}}],["ui/api",{"_index":1369,"title":{},"content":{"102":{"position":[[2293,7]]},"148":{"position":[[540,7]]},"157":{"position":[[1308,7]]},"616":{"position":[[2306,7]]},"648":{"position":[[540,7]]},"657":{"position":[[1308,7]]}},"keywords":{}}],["ui/cli/sdk",{"_index":1313,"title":{},"content":{"102":{"position":[[383,11],[440,11]]},"616":{"position":[[383,11],[440,11]]}},"keywords":{}}],["ui/r",{"_index":1358,"title":{},"content":{"102":{"position":[[1976,7]]},"616":{"position":[[1988,7]]}},"keywords":{}}],["uid",{"_index":252,"title":{},"content":{"22":{"position":[[726,6]]},"23":{"position":[[873,6]]},"24":{"position":[[235,6],[881,6]]},"25":{"position":[[268,6]]},"27":{"position":[[271,6]]},"41":{"position":[[295,6]]},"260":{"position":[[2677,3]]},"261":{"position":[[121,3]]},"551":{"position":[[726,6]]},"552":{"position":[[873,6]]},"553":{"position":[[235,6],[881,6]]},"554":{"position":[[268,6]]},"556":{"position":[[271,6]]},"563":{"position":[[295,6]]}},"keywords":{}}],["uid\":\"4944c603",{"_index":2773,"title":{},"content":{"369":{"position":[[830,15]]},"371":{"position":[[1311,15]]},"374":{"position":[[247,15]]},"377":{"position":[[741,15]]},"380":{"position":[[250,15]]},"843":{"position":[[830,15]]},"845":{"position":[[1311,15]]},"848":{"position":[[247,15]]},"851":{"position":[[741,15]]},"854":{"position":[[250,15]]}},"keywords":{}}],["uid\":\"5a6ec922",{"_index":2742,"title":{},"content":{"366":{"position":[[710,15]]},"840":{"position":[[710,15]]}},"keywords":{}}],["uid\":\"5a94c01d",{"_index":389,"title":{},"content":{"38":{"position":[[544,15]]},"39":{"position":[[286,15]]},"40":{"position":[[279,15]]},"560":{"position":[[544,15]]},"561":{"position":[[286,15]]},"562":{"position":[[279,15]]}},"keywords":{}}],["uid\":\"a56713da",{"_index":2806,"title":{},"content":{"389":{"position":[[504,15]]},"392":{"position":[[268,15]]},"395":{"position":[[256,15]]},"398":{"position":[[263,15]]},"878":{"position":[[504,15]]},"881":{"position":[[268,15]]},"884":{"position":[[256,15]]},"887":{"position":[[263,15]]}},"keywords":{}}],["uid\":\"b895985c",{"_index":2781,"title":{},"content":{"371":{"position":[[220,15]]},"421":{"position":[[400,15]]},"845":{"position":[[220,15]]},"874":{"position":[[400,15]]}},"keywords":{}}],["ultim",{"_index":2104,"title":{},"content":{"252":{"position":[[562,8],[581,8],[663,10],[807,8],[826,8],[908,10],[1220,10],[1322,8],[1438,8],[1457,8],[1539,10],[1677,8],[1696,8],[1778,10]]},"260":{"position":[[2425,10]]},"261":{"position":[[125,10]]}},"keywords":{}}],["ultimate]gular2",{"_index":2134,"title":{},"content":{"252":{"position":[[2773,16]]}},"keywords":{}}],["unabl",{"_index":95,"title":{},"content":{"4":{"position":[[599,6]]},"464":{"position":[[599,6]]},"484":{"position":[[53,6]]},"947":{"position":[[53,6]]}},"keywords":{}}],["unaccept",{"_index":952,"title":{},"content":{"75":{"position":[[248,12]]},"584":{"position":[[248,12]]}},"keywords":{}}],["unavail",{"_index":1922,"title":{},"content":{"203":{"position":[[245,12]]},"211":{"position":[[860,12],[1408,11]]},"698":{"position":[[245,12]]},"706":{"position":[[860,12],[1408,11]]}},"keywords":{}}],["und",{"_index":340,"title":{"31":{"position":[[20,5]]}},"content":{"53":{"position":[[33,5],[535,5],[6473,5]]},"87":{"position":[[25,5]]},"90":{"position":[[1120,5]]},"98":{"position":[[255,5]]},"102":{"position":[[174,5]]},"134":{"position":[[1590,5]]},"152":{"position":[[759,5],[1485,5]]},"262":{"position":[[179,5]]},"288":{"position":[[15,5]]},"305":{"position":[[15,5]]},"594":{"position":[[25,5]]},"604":{"position":[[1120,5]]},"612":{"position":[[255,5]]},"616":{"position":[[174,5]]},"652":{"position":[[765,5],[1765,5]]},"662":{"position":[[1590,5]]},"751":{"position":[[15,5]]},"756":{"position":[[15,5]]},"779":{"position":[[30,5]]},"909":{"position":[[131,5]]},"910":{"position":[[14,5]]},"912":{"position":[[13,5]]},"952":{"position":[[0,5]]},"957":{"position":[[0,5]]},"972":{"position":[[0,5]]}},"keywords":{}}],["underli",{"_index":1210,"title":{"93":{"position":[[24,10]]},"607":{"position":[[24,10]]}},"content":{"93":{"position":[[92,10]]},"94":{"position":[[77,10]]},"177":{"position":[[396,10]]},"184":{"position":[[313,10]]},"607":{"position":[[92,10]]},"608":{"position":[[77,10]]},"684":{"position":[[396,10]]},"712":{"position":[[313,10]]}},"keywords":{}}],["understand",{"_index":673,"title":{},"content":{"53":{"position":[[7260,10]]},"56":{"position":[[198,10]]},"79":{"position":[[988,11]]},"94":{"position":[[345,10]]},"118":{"position":[[103,10]]},"139":{"position":[[2075,13]]},"140":{"position":[[167,10]]},"145":{"position":[[10,10],[67,10]]},"146":{"position":[[627,10]]},"291":{"position":[[50,10]]},"500":{"position":[[481,10]]},"565":{"position":[[198,10]]},"608":{"position":[[345,10]]},"625":{"position":[[103,10]]},"639":{"position":[[2088,13]]},"640":{"position":[[167,10]]},"645":{"position":[[10,10],[67,10]]},"646":{"position":[[627,10]]},"754":{"position":[[50,10]]}},"keywords":{}}],["undertak",{"_index":705,"title":{},"content":{"53":{"position":[[8660,10]]}},"keywords":{}}],["unexpect",{"_index":2933,"title":{},"content":{"437":{"position":[[460,10],[515,11]]},"481":{"position":[[249,11]]},"921":{"position":[[460,10],[515,11]]},"944":{"position":[[249,11]]}},"keywords":{}}],["unfriendli",{"_index":1627,"title":{},"content":{"134":{"position":[[1814,10]]},"662":{"position":[[1814,10]]}},"keywords":{}}],["unifi",{"_index":1154,"title":{},"content":{"90":{"position":[[2613,5]]},"604":{"position":[[2613,5]]}},"keywords":{}}],["uninstal",{"_index":141,"title":{"7":{"position":[[0,9]]},"312":{"position":[[0,9]]},"467":{"position":[[0,9]]},"784":{"position":[[0,9]]}},"content":{"312":{"position":[[5,9]]},"744":{"position":[[1679,9]]},"784":{"position":[[5,9]]}},"keywords":{}}],["uniqu",{"_index":1474,"title":{},"content":{"113":{"position":[[513,6]]},"147":{"position":[[1276,6]]},"597":{"position":[[513,6]]},"647":{"position":[[1276,6]]}},"keywords":{}}],["unit",{"_index":2038,"title":{"438":{"position":[[0,4]]},"922":{"position":[[0,4]]}},"content":{"237":{"position":[[0,4],[188,4]]},"267":{"position":[[179,4]]},"268":{"position":[[117,4]]},"438":{"position":[[35,4],[107,4],[165,4]]},"741":{"position":[[0,4],[188,4]]},"922":{"position":[[35,4],[107,4],[165,4]]},"965":{"position":[[2040,4],[2124,4],[2210,4],[2296,4],[2382,4],[2468,4],[2554,4],[2640,4],[2735,4],[2821,4],[2909,4],[2997,4],[3085,4],[3173,4],[3259,4],[3347,4],[3435,4],[3523,4],[3611,4],[3699,4],[3787,4],[3880,4],[3964,4],[4050,4],[4136,4],[4222,4],[4308,4],[4394,4],[4480,4],[4554,4],[5246,4],[5330,4],[5416,4],[5502,4],[5588,4],[5674,4],[5760,4],[5846,4],[5941,4],[6027,4],[6115,4],[6203,4],[6291,4],[6379,4],[6467,4],[6555,4],[6648,4],[6732,4],[6818,4],[6904,4],[6990,4],[7076,4],[7162,4],[7248,4],[7322,4],[11457,4],[11541,4],[11627,4],[11713,4],[11799,4],[11885,4],[11971,4],[12057,4],[12152,4],[12238,4],[12326,4],[12414,4],[12502,4],[12590,4],[12676,4],[12764,4],[12852,4],[12940,4],[13028,4],[13116,4],[13204,4],[13297,4],[13381,4],[13467,4],[13553,4],[13639,4],[13725,4],[13811,4],[13897,4],[13971,4]]}},"keywords":{}}],["univ",{"_index":1928,"title":{"205":{"position":[[0,9]]},"700":{"position":[[0,9]]}},"content":{},"keywords":{}}],["unless",{"_index":709,"title":{},"content":{"53":{"position":[[9059,6]]}},"keywords":{}}],["unpack",{"_index":3595,"title":{},"content":{"791":{"position":[[7650,6],[7697,9],[7807,6],[7848,9],[7956,6],[8011,9],[8130,6],[8182,9],[8290,6],[8339,9],[8442,6],[8499,9],[8610,6],[8660,9],[8772,6],[8845,9],[8978,6],[9051,9],[9183,6],[9243,9],[9364,6],[9424,9],[9548,6],[9601,9],[9713,6],[9757,9],[9854,6],[9900,9],[10010,6],[10071,9],[10181,6],[10231,9],[10333,6],[10372,9],[10466,6],[10516,9],[10621,6],[10678,9],[10798,6],[10849,9],[10965,6],[11018,9],[11121,6],[11161,9],[11262,6],[11313,9],[11427,6],[11480,9],[11591,6],[11649,9],[11774,6],[11840,9],[11964,6],[12025,9],[12151,6],[12205,9],[12322,6],[12369,9],[12475,6],[12519,9],[12626,6],[12689,9],[12816,6],[12873,9],[12991,6],[13041,9],[23368,6],[23415,9],[23525,6],[23566,9],[23674,6],[23729,9],[23848,6],[23900,9],[24008,6],[24057,9],[24160,6],[24217,9],[24328,6],[24378,9],[24490,6],[24563,9],[24696,6],[24769,9],[24901,6],[24961,9],[25082,6],[25142,9],[25266,6],[25319,9],[25431,6],[25475,9],[25572,6],[25618,9],[25728,6],[25789,9],[25899,6],[25949,9],[26051,6],[26090,9],[26184,6],[26234,9],[26339,6],[26396,9],[26516,6],[26567,9],[26683,6],[26736,9],[26839,6],[26879,9],[26980,6],[27031,9],[27140,6],[27198,9],[27323,6],[27389,9],[27513,6],[27574,9],[27700,6],[27754,9],[27871,6],[27918,9],[28024,6],[28068,9],[28175,6],[28238,9],[28365,6],[28422,9],[28540,6],[28590,9]]}},"keywords":{}}],["unpredict",{"_index":2390,"title":{},"content":{"291":{"position":[[189,13]]},"754":{"position":[[189,13]]}},"keywords":{}}],["unselect",{"_index":3578,"title":{},"content":{"791":{"position":[[6989,10],[7760,10],[7907,10],[8078,10],[8252,10],[8400,10],[8568,10],[8722,10],[8928,10],[9134,10],[9315,10],[9496,10],[9672,10],[9806,10],[9962,10],[10142,10],[10291,10],[10425,10],[10578,10],[10747,10],[10914,10],[11083,10],[11213,10],[11376,10],[11545,10],[11721,10],[11916,10],[12096,10],[12273,10],[12430,10],[12577,10],[12766,10],[12944,10],[22707,10],[23478,10],[23625,10],[23796,10],[23970,10],[24118,10],[24286,10],[24440,10],[24646,10],[24852,10],[25033,10],[25214,10],[25390,10],[25524,10],[25680,10],[25860,10],[26009,10],[26143,10],[26296,10],[26465,10],[26632,10],[26801,10],[26931,10],[27094,10],[27270,10],[27465,10],[27645,10],[27822,10],[27979,10],[28126,10],[28315,10],[28493,10]]}},"keywords":{}}],["unspecifi",{"_index":3773,"title":{},"content":{"912":{"position":[[149,12]]},"913":{"position":[[184,12]]}},"keywords":{}}],["unsubscrib",{"_index":1048,"title":{},"content":{"86":{"position":[[102,12],[185,12],[275,12]]},"593":{"position":[[102,12],[185,12],[275,12]]}},"keywords":{}}],["until",{"_index":2902,"title":{},"content":{"431":{"position":[[6,5]]},"905":{"position":[[6,5]]}},"keywords":{}}],["unv",{"_index":1643,"title":{},"content":{"136":{"position":[[351,11]]},"664":{"position":[[351,11]]}},"keywords":{}}],["unverifi",{"_index":2248,"title":{},"content":{"264":{"position":[[68,12]]}},"keywords":{}}],["unzip",{"_index":2143,"title":{},"content":{"254":{"position":[[0,5]]},"255":{"position":[[0,5]]},"270":{"position":[[208,5]]},"274":{"position":[[153,5]]},"777":{"position":[[616,5]]},"969":{"position":[[651,5]]}},"keywords":{}}],["up",{"_index":850,"title":{"236":{"position":[[8,2]]},"740":{"position":[[8,2]]}},"content":{"62":{"position":[[38,2]]},"81":{"position":[[353,3]]},"90":{"position":[[719,2]]},"134":{"position":[[1311,2],[2361,3]]},"181":{"position":[[43,2]]},"246":{"position":[[56,2]]},"260":{"position":[[2023,3]]},"327":{"position":[[696,2]]},"571":{"position":[[38,2]]},"588":{"position":[[238,3]]},"604":{"position":[[719,2]]},"662":{"position":[[1311,2],[2361,3]]},"688":{"position":[[43,2]]},"749":{"position":[[56,2]]},"791":{"position":[[13201,2],[13244,2],[13283,2],[13330,2],[13380,2],[13497,2],[13546,2],[13622,2],[13685,2],[13748,2],[13800,2],[13852,2],[13903,2],[13932,2],[13974,2],[14025,2],[14065,2],[14098,2],[14701,2],[15069,2],[15211,2],[15318,2],[15363,2],[15471,2],[15616,2],[16311,2],[16363,2],[16419,2],[17106,2],[17154,2],[17195,2],[17233,2],[17290,2],[17341,2],[28750,2],[28793,2],[28832,2],[28879,2],[28929,2],[29046,2],[29095,2],[29171,2],[29234,2],[29297,2],[29349,2],[29401,2],[29452,2],[29481,2],[29523,2],[29574,2],[29614,2],[29647,2],[30250,2],[30618,2],[30760,2],[30867,2],[30912,2],[31020,2],[31165,2],[31217,2],[31273,2],[31960,2],[32008,2],[32049,2],[32087,2],[32144,2],[32195,2]]},"963":{"position":[[247,2]]},"964":{"position":[[135,2],[221,2]]},"969":{"position":[[417,2]]}},"keywords":{}}],["updat",{"_index":193,"title":{"214":{"position":[[16,6]]},"215":{"position":[[15,6]]},"285":{"position":[[4,6]]},"709":{"position":[[16,6]]},"710":{"position":[[15,6]]}},"content":{"12":{"position":[[979,7]]},"18":{"position":[[1180,7]]},"33":{"position":[[342,7]]},"49":{"position":[[298,7]]},"63":{"position":[[233,6]]},"70":{"position":[[75,6]]},"73":{"position":[[349,6]]},"107":{"position":[[850,6]]},"134":{"position":[[734,6]]},"154":{"position":[[883,7],[1035,6]]},"197":{"position":[[595,8]]},"211":{"position":[[205,6]]},"213":{"position":[[166,6]]},"242":{"position":[[355,6]]},"267":{"position":[[89,6]]},"439":{"position":[[195,8]]},"541":{"position":[[979,7]]},"547":{"position":[[1180,7]]},"572":{"position":[[233,6]]},"579":{"position":[[75,6]]},"582":{"position":[[349,6]]},"621":{"position":[[852,6]]},"654":{"position":[[888,7],[1040,6]]},"662":{"position":[[734,6]]},"692":{"position":[[595,8]]},"706":{"position":[[205,6]]},"708":{"position":[[166,6]]},"742":{"position":[[508,6]]},"745":{"position":[[355,6]]},"777":{"position":[[478,6],[1182,6]]},"791":{"position":[[13413,6],[15110,6],[15387,6],[28962,6],[30659,6],[30936,6]]},"916":{"position":[[0,6]]},"950":{"position":[[530,6],[1075,6]]},"954":{"position":[[472,6],[1287,6],[1654,6]]},"965":{"position":[[320,6]]},"969":{"position":[[453,6],[764,6],[1291,6]]},"980":{"position":[[1100,8],[1301,8],[1502,8],[2136,8],[2334,8],[2536,8]]},"985":{"position":[[960,8],[1161,8],[1362,8],[1996,8],[2194,8],[2396,8]]},"990":{"position":[[1253,8],[1455,8],[1657,8],[1859,8],[2061,8],[3004,8],[3211,8],[3415,8],[3619,8],[3823,8]]}},"keywords":{}}],["updates/main",{"_index":3485,"title":{},"content":{"791":{"position":[[4010,12],[4122,12],[4228,12],[4354,12],[4481,12],[4597,12],[4991,12],[5291,12],[6120,12],[6241,12],[6648,12],[6768,12],[19834,12],[19946,12],[20052,12],[20178,12],[20305,12],[20421,12],[20815,12],[21115,12],[21838,12],[21959,12],[22366,12],[22486,12]]}},"keywords":{}}],["upgrad",{"_index":1883,"title":{},"content":{"186":{"position":[[428,9],[498,7]]},"240":{"position":[[289,7]]},"306":{"position":[[142,7]]},"714":{"position":[[428,9],[498,7]]},"742":{"position":[[531,7]]},"744":{"position":[[289,7]]},"757":{"position":[[142,7]]},"791":{"position":[[3318,9],[3371,9],[17570,9],[17622,9],[19142,9],[19195,9],[32424,9],[32476,9]]}},"keywords":{}}],["upload",{"_index":1415,"title":{"250":{"position":[[22,8]]},"255":{"position":[[55,9]]},"261":{"position":[[4,6]]},"264":{"position":[[4,6]]},"275":{"position":[[4,6]]},"276":{"position":[[4,6]]},"441":{"position":[[0,6]]},"925":{"position":[[0,6]]}},"content":{"107":{"position":[[757,6]]},"251":{"position":[[12,8],[291,9]]},"252":{"position":[[2070,6]]},"253":{"position":[[241,6]]},"262":{"position":[[62,6]]},"274":{"position":[[291,6]]},"277":{"position":[[146,6]]},"279":{"position":[[200,8]]},"284":{"position":[[199,8]]},"441":{"position":[[358,6],[420,6],[461,6],[507,6]]},"502":{"position":[[3361,7],[3396,9]]},"522":{"position":[[1521,7]]},"621":{"position":[[758,6]]},"925":{"position":[[358,6],[420,6],[461,6],[507,6]]}},"keywords":{}}],["upload/upd",{"_index":1420,"title":{},"content":{"107":{"position":[[978,13]]},"621":{"position":[[981,13]]}},"keywords":{}}],["upp",{"_index":1531,"title":{},"content":{"118":{"position":[[757,5]]},"625":{"position":[[758,5]]}},"keywords":{}}],["uppercas",{"_index":1851,"title":{},"content":{"179":{"position":[[254,9]]},"686":{"position":[[254,9]]}},"keywords":{}}],["upstream",{"_index":826,"title":{},"content":{"60":{"position":[[175,8],[199,8],[265,8],[334,8],[377,8],[536,8],[591,8]]},"62":{"position":[[79,8]]},"64":{"position":[[47,8]]},"569":{"position":[[175,8],[199,8],[265,8],[334,8],[377,8],[536,8],[591,8]]},"571":{"position":[[79,8]]},"573":{"position":[[47,8]]}},"keywords":{}}],["upstream/mast",{"_index":854,"title":{"64":{"position":[[38,15]]},"573":{"position":[[38,15]]}},"content":{"62":{"position":[[99,15]]},"64":{"position":[[67,15]]},"571":{"position":[[99,15]]},"573":{"position":[[67,15]]}},"keywords":{}}],["upstream/origin",{"_index":832,"title":{},"content":{"60":{"position":[[402,16]]},"569":{"position":[[402,16]]}},"keywords":{}}],["uri",{"_index":2986,"title":{},"content":{"470":{"position":[[17,4],[88,3],[167,4]]},"471":{"position":[[17,4],[112,3],[132,3],[185,3]]},"930":{"position":[[17,4],[88,3],[167,4]]},"931":{"position":[[17,4],[112,3],[132,3],[185,3]]}},"keywords":{}}],["url",{"_index":423,"title":{},"content":{"41":{"position":[[342,6]]},"60":{"position":[[366,3]]},"134":{"position":[[1500,4]]},"140":{"position":[[306,4],[1281,4]]},"262":{"position":[[22,4]]},"289":{"position":[[253,3],[522,3]]},"314":{"position":[[1000,3],[1113,3],[1181,3]]},"365":{"position":[[1319,3],[1330,3]]},"409":{"position":[[1434,3],[1445,3]]},"441":{"position":[[527,3]]},"470":{"position":[[141,4]]},"471":{"position":[[243,3]]},"491":{"position":[[641,3]]},"563":{"position":[[342,6]]},"569":{"position":[[366,3]]},"640":{"position":[[306,4],[1281,4]]},"662":{"position":[[1500,4]]},"752":{"position":[[253,3],[522,3]]},"786":{"position":[[1000,3],[1113,3],[1181,3]]},"839":{"position":[[1319,3],[1330,3]]},"862":{"position":[[1434,3],[1445,3]]},"925":{"position":[[527,3]]},"930":{"position":[[141,4]]},"931":{"position":[[243,3]]},"980":{"position":[[1142,4],[1343,4],[1540,4],[2174,4],[2376,4],[2578,4]]},"985":{"position":[[1002,4],[1203,4],[1400,4],[2034,4],[2236,4],[2438,4]]},"990":{"position":[[1297,4],[1499,4],[1701,4],[1903,4],[2108,4],[3051,4],[3255,4],[3459,4],[3663,4],[3867,4]]}},"keywords":{}}],["url\":\"/notebook/default/t",{"_index":394,"title":{},"content":{"38":{"position":[[590,29]]},"39":{"position":[[332,29]]},"40":{"position":[[325,29]]},"389":{"position":[[550,29]]},"392":{"position":[[314,29]]},"395":{"position":[[302,29]]},"398":{"position":[[309,29]]},"560":{"position":[[590,29]]},"561":{"position":[[332,29]]},"562":{"position":[[325,29]]},"878":{"position":[[550,29]]},"881":{"position":[[314,29]]},"884":{"position":[[302,29]]},"887":{"position":[[309,29]]}},"keywords":{}}],["url=\"http://127.0.0.1",{"_index":2374,"title":{},"content":{"289":{"position":[[699,22]]},"752":{"position":[[699,22]]}},"keywords":{}}],["url='https://github.com/apache/submarine.git",{"_index":2569,"title":{},"content":{"328":{"position":[[1096,46]]},"809":{"position":[[1116,46]]}},"keywords":{}}],["urllib3",{"_index":3425,"title":{},"content":{"791":{"position":[[2382,7],[3274,7],[6675,7],[12604,8],[12707,7],[17244,7],[18224,7],[19098,7],[22393,7],[28153,8],[28256,7],[32098,7]]}},"keywords":{}}],["urllib3_1.13.1",{"_index":3647,"title":{},"content":{"791":{"position":[[12645,14],[28194,14]]}},"keywords":{}}],["uroot",{"_index":3153,"title":{},"content":{"489":{"position":[[126,5]]}},"keywords":{}}],["us",{"_index":119,"title":{"20":{"position":[[0,3]]},"22":{"position":[[18,6]]},"23":{"position":[[18,6]]},"117":{"position":[[41,3]]},"146":{"position":[[28,3]]},"315":{"position":[[27,5]]},"364":{"position":[[18,6]]},"367":{"position":[[18,6]]},"419":{"position":[[0,3]]},"549":{"position":[[0,3]]},"551":{"position":[[18,6]]},"552":{"position":[[18,6]]},"601":{"position":[[41,3]]},"646":{"position":[[28,3]]},"778":{"position":[[0,3]]},"792":{"position":[[27,5]]},"838":{"position":[[18,6]]},"841":{"position":[[18,6]]},"872":{"position":[[0,3]]},"951":{"position":[[0,3]]},"955":{"position":[[0,3]]},"958":{"position":[[0,3]]},"970":{"position":[[0,3]]},"973":{"position":[[0,3]]},"992":{"position":[[0,3]]}},"content":{"5":{"position":[[83,5],[197,5]]},"12":{"position":[[987,5]]},"18":{"position":[[1188,5]]},"29":{"position":[[362,6],[1539,6]]},"53":{"position":[[1034,3],[5306,5],[7221,6]]},"54":{"position":[[100,4],[1288,6]]},"64":{"position":[[102,3]]},"71":{"position":[[114,4]]},"76":{"position":[[10,4],[157,3]]},"86":{"position":[[9,5]]},"103":{"position":[[100,5],[467,4],[617,3],[672,4]]},"106":{"position":[[476,3]]},"107":{"position":[[642,4],[705,4],[1146,6]]},"108":{"position":[[47,4]]},"110":{"position":[[993,3]]},"112":{"position":[[100,5],[1020,3],[1156,4],[1306,3],[1361,4]]},"113":{"position":[[237,4]]},"115":{"position":[[87,3],[485,5],[1196,5],[1246,3]]},"117":{"position":[[181,4],[946,5]]},"118":{"position":[[860,5]]},"125":{"position":[[564,3]]},"126":{"position":[[5,5]]},"128":{"position":[[43,4],[211,3]]},"129":{"position":[[81,5],[361,3]]},"130":{"position":[[274,3],[394,3]]},"132":{"position":[[1316,3],[1381,3]]},"134":{"position":[[435,3],[463,4],[605,3],[1645,3],[2302,4],[2388,4],[2412,3]]},"136":{"position":[[111,6],[209,4],[316,4]]},"139":{"position":[[1828,4]]},"140":{"position":[[596,4],[1529,5],[1554,5]]},"147":{"position":[[690,3],[1156,3]]},"151":{"position":[[377,3]]},"152":{"position":[[369,3],[636,5],[736,4],[870,4],[919,3],[1071,3],[1236,4]]},"154":{"position":[[342,3],[684,3],[822,3]]},"157":{"position":[[898,5],[1007,3],[1300,4]]},"158":{"position":[[1916,5]]},"160":{"position":[[941,6],[1028,4]]},"161":{"position":[[222,3],[541,4]]},"179":{"position":[[373,4]]},"180":{"position":[[404,4]]},"181":{"position":[[474,5]]},"186":{"position":[[99,4],[292,4],[619,3],[981,4]]},"189":{"position":[[65,5]]},"190":{"position":[[67,3]]},"199":{"position":[[574,4]]},"207":{"position":[[331,5]]},"208":{"position":[[569,5]]},"212":{"position":[[92,3],[210,5]]},"237":{"position":[[98,4]]},"238":{"position":[[40,3],[576,5]]},"242":{"position":[[27,5]]},"244":{"position":[[3,3]]},"252":{"position":[[185,4],[244,4],[1835,3],[2655,5]]},"260":{"position":[[153,4],[197,3]]},"262":{"position":[[27,3]]},"263":{"position":[[469,3],[1012,3],[1707,3]]},"264":{"position":[[152,4]]},"265":{"position":[[785,3]]},"276":{"position":[[23,3]]},"277":{"position":[[84,3]]},"291":{"position":[[230,6]]},"297":{"position":[[24,4]]},"302":{"position":[[437,3]]},"303":{"position":[[19,5],[429,5]]},"306":{"position":[[357,3]]},"314":{"position":[[86,4],[149,3],[240,3],[344,3],[580,3],[891,3],[1075,3]]},"320":{"position":[[15,3]]},"323":{"position":[[70,5]]},"326":{"position":[[13,5]]},"327":{"position":[[659,3]]},"330":{"position":[[50,3],[425,5]]},"335":{"position":[[54,3]]},"340":{"position":[[0,3]]},"341":{"position":[[31,3],[131,3],[252,3],[347,3]]},"346":{"position":[[16,3]]},"400":{"position":[[64,3]]},"436":{"position":[[8,3]]},"437":{"position":[[0,3],[182,3],[257,5],[479,3]]},"438":{"position":[[7,5]]},"439":{"position":[[3,3],[65,4]]},"450":{"position":[[69,5]]},"454":{"position":[[75,5]]},"465":{"position":[[83,5],[197,5]]},"476":{"position":[[72,3]]},"477":{"position":[[37,3]]},"489":{"position":[[241,3]]},"491":{"position":[[766,4]]},"492":{"position":[[251,4],[340,5],[452,4]]},"495":{"position":[[13,5],[82,3],[140,3],[639,4]]},"496":{"position":[[125,3],[348,5],[638,3]]},"498":{"position":[[22,3]]},"500":{"position":[[167,4],[313,4]]},"541":{"position":[[987,5]]},"547":{"position":[[1188,5]]},"558":{"position":[[362,6],[1539,6]]},"573":{"position":[[102,3]]},"580":{"position":[[114,4]]},"585":{"position":[[10,4],[157,3]]},"593":{"position":[[9,5]]},"596":{"position":[[100,5],[1020,3],[1156,4],[1306,3],[1361,4]]},"597":{"position":[[237,4]]},"599":{"position":[[87,3],[485,5],[1196,5],[1246,3]]},"601":{"position":[[181,4],[946,5]]},"617":{"position":[[100,5],[467,4],[617,3],[672,4]]},"620":{"position":[[476,3]]},"621":{"position":[[643,4],[706,4],[1149,6]]},"622":{"position":[[47,4]]},"624":{"position":[[998,3]]},"625":{"position":[[861,5]]},"632":{"position":[[564,3]]},"633":{"position":[[5,5]]},"635":{"position":[[43,4],[211,3]]},"636":{"position":[[81,5],[361,3]]},"637":{"position":[[274,3],[394,3]]},"639":{"position":[[1841,4]]},"640":{"position":[[596,4],[1529,5],[1554,5]]},"647":{"position":[[690,3],[1156,3]]},"651":{"position":[[377,3]]},"652":{"position":[[375,3],[642,5],[742,4],[967,4],[1066,3],[1150,4],[1199,3],[1351,3],[1516,4]]},"654":{"position":[[342,3],[684,3],[822,3]]},"657":{"position":[[898,5],[1007,3],[1300,4]]},"658":{"position":[[1916,5]]},"660":{"position":[[1316,3],[1381,3]]},"662":{"position":[[435,3],[463,4],[605,3],[1645,3],[2302,4],[2388,4],[2412,3]]},"664":{"position":[[111,6],[209,4],[316,4]]},"667":{"position":[[941,6],[1029,4]]},"668":{"position":[[222,3],[541,4]]},"686":{"position":[[373,4]]},"687":{"position":[[457,4]]},"688":{"position":[[474,5]]},"694":{"position":[[574,4]]},"702":{"position":[[331,5]]},"703":{"position":[[569,5]]},"707":{"position":[[92,3],[210,5]]},"714":{"position":[[99,4],[292,4],[619,3],[981,4]]},"717":{"position":[[65,5]]},"718":{"position":[[72,3]]},"741":{"position":[[98,4]]},"742":{"position":[[40,3]]},"744":{"position":[[428,3],[1143,3],[1242,3],[1376,3],[1478,3]]},"745":{"position":[[27,5]]},"747":{"position":[[3,3]]},"754":{"position":[[230,6]]},"757":{"position":[[357,3]]},"764":{"position":[[24,4]]},"770":{"position":[[437,3]]},"771":{"position":[[19,5],[429,5]]},"773":{"position":[[70,5]]},"777":{"position":[[1039,3],[1619,3]]},"779":{"position":[[340,3],[389,3]]},"786":{"position":[[86,4],[149,3],[240,3],[344,3],[580,3],[891,3],[1075,3]]},"788":{"position":[[691,4]]},"789":{"position":[[53,3]]},"791":{"position":[[3477,5],[13434,5],[15131,5],[15408,5],[19301,5],[28983,5],[30680,5],[30957,5]]},"797":{"position":[[15,3]]},"800":{"position":[[50,3],[425,5]]},"805":{"position":[[54,3]]},"807":{"position":[[13,5]]},"814":{"position":[[0,3]]},"815":{"position":[[18,5]]},"820":{"position":[[16,3]]},"889":{"position":[[64,3]]},"920":{"position":[[8,3]]},"921":{"position":[[0,3],[182,3],[257,5],[479,3]]},"922":{"position":[[7,5]]},"923":{"position":[[3,3],[65,4]]},"934":{"position":[[41,5]]},"950":{"position":[[712,5],[1319,3],[1644,3]]},"954":{"position":[[2042,3]]},"958":{"position":[[28,3]]},"960":{"position":[[101,5]]},"961":{"position":[[215,5],[431,5]]},"964":{"position":[[257,4],[1809,3]]},"965":{"position":[[174,5],[307,4],[9748,5]]},"966":{"position":[[5,5],[109,3],[373,4]]},"969":{"position":[[1679,3]]},"973":{"position":[[28,3]]},"979":{"position":[[306,5],[564,4],[656,5]]},"981":{"position":[[1445,3]]},"992":{"position":[[36,3],[278,3],[382,3],[396,3]]}},"keywords":{}}],["usabl",{"_index":1191,"title":{},"content":{"92":{"position":[[42,6]]},"606":{"position":[[42,6]]}},"keywords":{}}],["usag",{"_index":1050,"title":{"400":{"position":[[0,5]]},"889":{"position":[[0,5]]}},"content":{"86":{"position":[[127,5]]},"132":{"position":[[1222,6]]},"135":{"position":[[234,6]]},"211":{"position":[[882,5],[1040,5]]},"252":{"position":[[545,6],[654,6],[790,6],[899,6],[1421,6],[1530,6],[1660,6],[1769,6]]},"313":{"position":[[1040,6]]},"400":{"position":[[183,5]]},"439":{"position":[[1040,6]]},"484":{"position":[[538,7]]},"500":{"position":[[78,5]]},"593":{"position":[[127,5]]},"660":{"position":[[1222,6]]},"663":{"position":[[234,6]]},"706":{"position":[[882,5],[1040,5]]},"785":{"position":[[1040,6]]},"889":{"position":[[183,5]]},"947":{"position":[[538,7]]}},"keywords":{}}],["used,th",{"_index":3079,"title":{},"content":{"481":{"position":[[1951,8]]},"944":{"position":[[1951,8]]}},"keywords":{}}],["user",{"_index":412,"title":{"39":{"position":[[40,4]]},"107":{"position":[[28,4]]},"117":{"position":[[25,4]]},"390":{"position":[[40,4]]},"512":{"position":[[0,4]]},"532":{"position":[[0,4]]},"561":{"position":[[40,4]]},"601":{"position":[[25,4]]},"621":{"position":[[28,4]]},"879":{"position":[[40,4]]}},"content":{"53":{"position":[[966,5],[1096,5],[1167,5],[1304,5],[1363,5],[1390,4],[3124,5]]},"54":{"position":[[1309,5],[1559,5]]},"60":{"position":[[25,4]]},"83":{"position":[[414,5]]},"86":{"position":[[83,5]]},"89":{"position":[[60,4],[102,4]]},"90":{"position":[[1135,4]]},"101":{"position":[[3,5],[155,5],[258,6],[273,5],[441,5]]},"102":{"position":[[808,5],[1260,4],[1879,5],[1907,5]]},"103":{"position":[[281,5],[348,5],[624,5]]},"104":{"position":[[213,5],[318,5],[446,5]]},"107":{"position":[[380,4],[615,5],[710,5],[750,6],[764,4],[832,6],[1126,6],[1195,4]]},"108":{"position":[[109,6]]},"112":{"position":[[404,5],[913,4],[1014,5],[1037,5],[1313,5],[2152,5]]},"113":{"position":[[538,4]]},"114":{"position":[[254,5]]},"115":{"position":[[329,5],[393,4]]},"117":{"position":[[87,6],[247,5],[648,5],[809,4]]},"121":{"position":[[0,5],[216,5],[364,4],[492,4],[576,5],[651,5],[749,4]]},"122":{"position":[[62,4],[114,5],[185,5]]},"125":{"position":[[559,4]]},"128":{"position":[[195,4]]},"129":{"position":[[0,5],[221,4],[351,5]]},"130":{"position":[[45,4],[94,4]]},"132":{"position":[[25,4]]},"134":{"position":[[287,5],[870,4],[1114,4],[1764,5],[1770,4]]},"135":{"position":[[463,5]]},"136":{"position":[[15,4]]},"152":{"position":[[1416,7]]},"154":{"position":[[267,4]]},"156":{"position":[[137,4]]},"158":{"position":[[2687,5]]},"160":{"position":[[375,4],[400,4],[770,5]]},"161":{"position":[[207,5]]},"175":{"position":[[0,5]]},"180":{"position":[[45,4]]},"186":{"position":[[830,4]]},"187":{"position":[[284,5]]},"190":{"position":[[46,5],[138,5]]},"197":{"position":[[270,5]]},"213":{"position":[[21,4],[222,4]]},"252":{"position":[[997,4],[1028,6]]},"260":{"position":[[1171,4],[1373,4]]},"295":{"position":[[40,5]]},"299":{"position":[[33,5]]},"302":{"position":[[241,5],[348,5],[396,5]]},"316":{"position":[[13,5]]},"335":{"position":[[28,5]]},"388":{"position":[[352,4]]},"391":{"position":[[46,4]]},"427":{"position":[[28,5]]},"436":{"position":[[269,4],[289,4]]},"481":{"position":[[1746,4]]},"498":{"position":[[187,4],[241,5],[265,4],[359,4],[533,4],[568,4],[622,5]]},"499":{"position":[[15,4]]},"500":{"position":[[225,5],[304,4]]},"502":{"position":[[53,4],[879,4],[1885,5]]},"569":{"position":[[25,4]]},"588":{"position":[[142,5],[184,5]]},"590":{"position":[[414,4],[425,5]]},"593":{"position":[[83,5]]},"596":{"position":[[404,5],[913,4],[1014,5],[1037,5],[1313,5],[2152,5]]},"597":{"position":[[538,4]]},"598":{"position":[[254,5]]},"599":{"position":[[329,5],[393,4]]},"601":{"position":[[87,6],[247,5],[648,5],[809,4]]},"603":{"position":[[60,4],[102,4]]},"604":{"position":[[1135,4]]},"615":{"position":[[3,5],[155,5],[258,6],[273,5],[441,5]]},"616":{"position":[[813,5],[1272,4],[1891,5],[1919,5]]},"617":{"position":[[281,5],[348,5],[624,5]]},"618":{"position":[[133,5],[214,5],[319,5],[447,5]]},"621":{"position":[[270,7],[278,4],[381,4],[616,5],[711,5],[751,6],[765,4],[834,6],[1129,6],[1198,4]]},"622":{"position":[[109,6]]},"628":{"position":[[0,5],[216,5],[364,4],[492,4],[576,5],[651,5],[749,4]]},"629":{"position":[[62,4],[114,5],[185,5]]},"632":{"position":[[559,4]]},"635":{"position":[[195,4]]},"636":{"position":[[0,5],[221,4],[351,5]]},"637":{"position":[[45,4],[94,4]]},"652":{"position":[[1696,7]]},"654":{"position":[[267,4]]},"656":{"position":[[137,4]]},"658":{"position":[[2687,5]]},"660":{"position":[[25,4]]},"662":{"position":[[287,5],[870,4],[1114,4],[1764,5],[1770,4]]},"663":{"position":[[463,5]]},"664":{"position":[[15,4]]},"667":{"position":[[375,4],[400,4],[770,5],[1391,5]]},"668":{"position":[[207,5]]},"682":{"position":[[0,5]]},"687":{"position":[[45,4]]},"692":{"position":[[270,5]]},"708":{"position":[[21,4],[222,4]]},"714":{"position":[[830,4]]},"715":{"position":[[284,5]]},"718":{"position":[[46,5],[143,5]]},"744":{"position":[[1016,4],[1053,4],[1314,4],[1611,4]]},"762":{"position":[[40,5]]},"766":{"position":[[33,5]]},"770":{"position":[[241,5],[348,5],[396,5]]},"791":{"position":[[15865,5],[16148,4]]},"793":{"position":[[13,5]]},"805":{"position":[[28,5]]},"877":{"position":[[352,4]]},"880":{"position":[[46,4]]},"901":{"position":[[28,5]]},"920":{"position":[[269,4],[289,4]]},"944":{"position":[[1746,4]]},"950":{"position":[[830,4]]},"969":{"position":[[799,4]]}},"keywords":{}}],["user'",{"_index":1070,"title":{"121":{"position":[[0,6]]},"175":{"position":[[7,6]]},"628":{"position":[[0,6]]},"682":{"position":[[7,6]]}},"content":{"89":{"position":[[248,6]]},"127":{"position":[[268,6]]},"136":{"position":[[217,6]]},"160":{"position":[[359,6],[1059,6],[1158,6]]},"175":{"position":[[96,6]]},"186":{"position":[[1133,6]]},"498":{"position":[[452,6],[475,6]]},"500":{"position":[[62,6]]},"603":{"position":[[248,6]]},"634":{"position":[[268,6]]},"664":{"position":[[217,6]]},"667":{"position":[[359,6],[1060,6],[1159,6]]},"682":{"position":[[96,6]]},"714":{"position":[[1133,6]]}},"keywords":{}}],["user.a",{"_index":1423,"title":{},"content":{"107":{"position":[[1042,6]]},"621":{"position":[[1045,6]]}},"keywords":{}}],["user.signingkey",{"_index":2287,"title":{},"content":{"268":{"position":[[454,15]]}},"keywords":{}}],["user/team",{"_index":1417,"title":{"171":{"position":[[0,9]]},"678":{"position":[[0,9]]}},"content":{"107":{"position":[[857,9]]},"163":{"position":[[604,10]]},"621":{"position":[[859,9]]},"670":{"position":[[604,10]]}},"keywords":{}}],["user1",{"_index":1459,"title":{},"content":{"112":{"position":[[1443,6]]},"596":{"position":[[1443,6]]}},"keywords":{}}],["user2",{"_index":1460,"title":{},"content":{"112":{"position":[[1553,6]]},"596":{"position":[[1553,6]]}},"keywords":{}}],["user3",{"_index":1461,"title":{},"content":{"112":{"position":[[1655,6]]},"596":{"position":[[1655,6]]}},"keywords":{}}],["user:yarn",{"_index":3060,"title":{},"content":{"481":{"position":[[327,9]]},"944":{"position":[[327,9]]}},"keywords":{}}],["userid",{"_index":360,"title":{},"content":{"31":{"position":[[565,8],[928,8],[1292,8],[1656,8]]},"32":{"position":[[573,8]]}},"keywords":{}}],["usernam",{"_index":138,"title":{},"content":{"6":{"position":[[132,8]]},"60":{"position":[[2,8]]},"61":{"position":[[102,9]]},"263":{"position":[[984,8],[1028,8],[1679,8],[1723,8]]},"466":{"position":[[132,8]]},"499":{"position":[[86,8]]},"569":{"position":[[2,8]]},"570":{"position":[[102,9]]}},"keywords":{}}],["username>{us",{"_index":2263,"title":{},"content":{"265":{"position":[[455,15],[569,15]]}},"keywords":{}}],["users).us",{"_index":1406,"title":{},"content":{"107":{"position":[[270,11]]}},"keywords":{}}],["users/cheng/.gnupg/openpgp",{"_index":2211,"title":{},"content":{"260":{"position":[[2482,28]]}},"keywords":{}}],["users/team",{"_index":3255,"title":{},"content":{"621":{"position":[[889,12]]}},"keywords":{}}],["users/teams.admin",{"_index":1419,"title":{},"content":{"107":{"position":[[887,17]]}},"keywords":{}}],["userset",{"_index":3705,"title":{},"content":{"791":{"position":[[16092,8]]}},"keywords":{}}],["user’",{"_index":499,"title":{},"content":{"53":{"position":[[1147,6]]}},"keywords":{}}],["usr/bin/bsd",{"_index":3689,"title":{},"content":{"791":{"position":[[15137,12],[30686,12]]}},"keywords":{}}],["usr/bin/env",{"_index":3105,"title":{},"content":{"484":{"position":[[397,14]]},"947":{"position":[[397,14]]}},"keywords":{}}],["usr/bin/mailx",{"_index":3690,"title":{},"content":{"791":{"position":[[15167,14],[30716,14]]}},"keywords":{}}],["usr/bin/python",{"_index":3313,"title":{},"content":{"777":{"position":[[803,15]]},"991":{"position":[[496,16],[681,16],[853,16]]}},"keywords":{}}],["usr/bin/python2.7",{"_index":3312,"title":{},"content":{"777":{"position":[[784,18]]}},"keywords":{}}],["usr/local/bin",{"_index":2469,"title":{},"content":{"316":{"position":[[519,15]]},"793":{"position":[[519,15]]}},"keywords":{}}],["usr/local/lib/python2.7/dist",{"_index":4172,"title":{},"content":{"967":{"position":[[147,30],[364,30],[529,30],[674,30],[829,30],[969,30],[1090,30],[1253,30],[1517,30],[1677,30],[1837,30],[2000,30]]}},"keywords":{}}],["usr/local/matrix/share/hadoop/yarn/${submarine_version}.jar",{"_index":3369,"title":{},"content":{"791":{"position":[[304,60]]}},"keywords":{}}],["usr/share/gridengine/centri",{"_index":3704,"title":{},"content":{"791":{"position":[[16050,28]]}},"keywords":{}}],["usr/share/gridengine/default",{"_index":3703,"title":{},"content":{"791":{"position":[[15974,29]]}},"keywords":{}}],["usr/share/gridengine/userset",{"_index":3706,"title":{},"content":{"791":{"position":[[16110,30]]}},"keywords":{}}],["usual",{"_index":771,"title":{},"content":{"54":{"position":[[1486,7]]},"69":{"position":[[442,8]]},"86":{"position":[[427,8]]},"96":{"position":[[155,7]]},"219":{"position":[[262,7]]},"284":{"position":[[363,7]]},"578":{"position":[[442,8]]},"610":{"position":[[155,7]]},"733":{"position":[[262,7]]}},"keywords":{}}],["util",{"_index":2199,"title":{},"content":{"260":{"position":[[1616,7],[1872,7]]},"297":{"position":[[7,7]]},"313":{"position":[[1030,4]]},"764":{"position":[[7,7]]},"785":{"position":[[1030,4]]}},"keywords":{}}],["v",{"_index":835,"title":{},"content":{"60":{"position":[[627,1]]},"125":{"position":[[269,1],[474,1]]},"154":{"position":[[1118,1],[1120,1],[1122,1],[1124,1]]},"158":{"position":[[341,1],[537,1],[716,1],[811,1],[1614,1],[1813,1],[1893,1],[1979,1],[2299,1]]},"161":{"position":[[318,1]]},"569":{"position":[[627,1]]},"632":{"position":[[269,1],[474,1]]},"654":{"position":[[1123,1],[1125,1],[1127,1],[1129,1]]},"658":{"position":[[341,1],[537,1],[716,1],[811,1],[1614,1],[1813,1],[1893,1],[1979,1],[2299,1]]},"668":{"position":[[318,1]]},"954":{"position":[[1461,1],[1567,1]]}},"keywords":{}}],["v.",{"_index":1723,"title":{"148":{"position":[[22,4]]},"648":{"position":[[22,4]]}},"content":{"148":{"position":[[91,4]]},"648":{"position":[[91,4]]}},"keywords":{}}],["v0.2.0",{"_index":4313,"title":{},"content":{"981":{"position":[[1491,7]]}},"keywords":{}}],["v0.5",{"_index":2448,"title":{},"content":{"314":{"position":[[81,4]]},"786":{"position":[[81,4]]}},"keywords":{}}],["v0.6.0",{"_index":2459,"title":{},"content":{"316":{"position":[[274,7]]},"793":{"position":[[274,7]]}},"keywords":{}}],["v1",{"_index":1629,"title":{},"content":{"134":{"position":[[1858,2]]},"662":{"position":[[1858,2]]}},"keywords":{}}],["v1.15.11",{"_index":23,"title":{},"content":{"2":{"position":[[96,8]]},"462":{"position":[[96,8]]},"744":{"position":[[627,8]]},"812":{"position":[[219,8]]}},"keywords":{}}],["v1.21.2",{"_index":2603,"title":{},"content":{"338":{"position":[[217,7]]}},"keywords":{}}],["v2",{"_index":2393,"title":{"296":{"position":[[21,2]]},"763":{"position":[[21,2]]}},"content":{"744":{"position":[[685,3]]},"992":{"position":[[217,2]]}},"keywords":{}}],["v2/artifacts/examples/exampl",{"_index":2604,"title":{},"content":{"339":{"position":[[342,29]]}},"keywords":{}}],["v3",{"_index":6,"title":{},"content":{"1":{"position":[[18,2]]},"309":{"position":[[13,3]]},"338":{"position":[[79,2]]},"461":{"position":[[18,2]]},"781":{"position":[[13,3]]},"812":{"position":[[79,2]]}},"keywords":{}}],["v3.1",{"_index":3260,"title":{},"content":{"652":{"position":[[1109,4]]}},"keywords":{}}],["valid",{"_index":688,"title":{},"content":{"53":{"position":[[8081,6],[8169,5],[8223,8],[8393,6],[8423,5]]},"91":{"position":[[367,11]]},"92":{"position":[[821,11]]},"154":{"position":[[380,8]]},"158":{"position":[[1255,8],[1996,8]]},"252":{"position":[[571,9],[816,9],[1447,9],[1686,9]]},"260":{"position":[[888,6],[1045,5]]},"605":{"position":[[367,11]]},"606":{"position":[[821,11]]},"654":{"position":[[380,8]]},"658":{"position":[[1255,8],[1996,8]]},"960":{"position":[[250,11]]}},"keywords":{}}],["valid_data",{"_index":1344,"title":{},"content":{"102":{"position":[[1505,13]]},"157":{"position":[[437,13]]},"616":{"position":[[1517,13]]},"657":{"position":[[437,13]]}},"keywords":{}}],["valu",{"_index":203,"title":{"472":{"position":[[30,6]]},"473":{"position":[[31,6]]},"910":{"position":[[28,6]]},"912":{"position":[[35,6]]},"932":{"position":[[30,6]]},"933":{"position":[[31,6]]}},"content":{"15":{"position":[[241,8],[352,8],[465,8]]},"18":{"position":[[238,8],[349,8],[462,8]]},"134":{"position":[[743,5]]},"157":{"position":[[123,5],[200,5]]},"179":{"position":[[245,5]]},"181":{"position":[[155,5]]},"199":{"position":[[419,5]]},"209":{"position":[[49,5]]},"313":{"position":[[196,6]]},"314":{"position":[[183,5],[547,5]]},"409":{"position":[[543,5],[556,5]]},"410":{"position":[[209,8],[320,8],[433,8]]},"415":{"position":[[214,8],[325,8],[438,8]]},"446":{"position":[[38,7]]},"472":{"position":[[17,5],[46,5],[120,6]]},"473":{"position":[[17,5],[35,5]]},"491":{"position":[[744,5],[795,5]]},"544":{"position":[[241,8],[352,8],[465,8]]},"547":{"position":[[238,8],[349,8],[462,8]]},"657":{"position":[[123,5],[200,5]]},"662":{"position":[[743,5]]},"686":{"position":[[245,5]]},"688":{"position":[[155,5]]},"694":{"position":[[419,5]]},"704":{"position":[[49,5]]},"785":{"position":[[196,6]]},"786":{"position":[[183,5],[547,5]]},"791":{"position":[[14843,7],[30392,7]]},"862":{"position":[[543,5],[556,5]]},"863":{"position":[[209,8],[320,8],[433,8]]},"868":{"position":[[214,8],[325,8],[438,8]]},"910":{"position":[[86,5]]},"911":{"position":[[99,5]]},"912":{"position":[[89,5]]},"913":{"position":[[100,6]]},"932":{"position":[[17,5],[46,5],[120,6]]},"933":{"position":[[17,5],[35,5]]}},"keywords":{}}],["valuabl",{"_index":977,"title":{},"content":{"79":{"position":[[48,8]]},"96":{"position":[[416,9]]},"610":{"position":[[416,9]]}},"keywords":{}}],["value\":\"0.1",{"_index":2850,"title":{},"content":{"410":{"position":[[1453,13]]},"412":{"position":[[455,13]]},"415":{"position":[[1483,13]]},"418":{"position":[[479,13]]},"863":{"position":[[1453,13]]},"865":{"position":[[455,13]]},"868":{"position":[[1483,13]]},"871":{"position":[[479,13]]}},"keywords":{}}],["value\":\"1",{"_index":2858,"title":{},"content":{"410":{"position":[[1756,11],[1845,11],[2027,11],[2120,11]]},"412":{"position":[[758,11],[847,11],[1029,11],[1122,11]]},"415":{"position":[[1786,11],[1875,11],[2057,11],[2150,11]]},"418":{"position":[[782,11],[871,11],[1053,11],[1146,11]]},"863":{"position":[[1756,11],[1845,11],[2027,11],[2120,11]]},"865":{"position":[[758,11],[847,11],[1029,11],[1122,11]]},"868":{"position":[[1786,11],[1875,11],[2057,11],[2150,11]]},"871":{"position":[[782,11],[871,11],[1053,11],[1146,11]]}},"keywords":{}}],["value\":\"1024m",{"_index":2861,"title":{},"content":{"410":{"position":[[1937,15],[2217,14]]},"412":{"position":[[939,15],[1219,14]]},"415":{"position":[[1967,15],[2246,15]]},"418":{"position":[[963,15],[1242,15]]},"863":{"position":[[1937,15],[2217,14]]},"865":{"position":[[939,15],[1219,14]]},"868":{"position":[[1967,15],[2246,15]]},"871":{"position":[[963,15],[1242,15]]}},"keywords":{}}],["value\":\"150",{"_index":2852,"title":{},"content":{"410":{"position":[[1561,13]]},"412":{"position":[[563,13]]},"415":{"position":[[1591,13]]},"418":{"position":[[587,13]]},"863":{"position":[[1561,13]]},"865":{"position":[[563,13]]},"868":{"position":[[1591,13]]},"871":{"position":[[587,13]]}},"keywords":{}}],["value\":\"tf",{"_index":2855,"title":{},"content":{"410":{"position":[[1666,11]]},"412":{"position":[[668,11]]},"415":{"position":[[1696,11]]},"418":{"position":[[692,11]]},"863":{"position":[[1666,11]]},"865":{"position":[[668,11]]},"868":{"position":[[1696,11]]},"871":{"position":[[692,11]]}},"keywords":{}}],["value.step",{"_index":2999,"title":{},"content":{"473":{"position":[[110,10]]},"933":{"position":[[110,10]]}},"keywords":{}}],["value>./a",{"_index":3811,"title":{},"content":{"939":{"position":[[502,10]]}},"keywords":{}}],["value>5000</valu",{"_index":3814,"title":{},"content":{"939":{"position":[[636,19]]}},"keywords":{}}],["value>a",{"_index":3808,"title":{},"content":{"939":{"position":[[387,8]]}},"keywords":{}}],["value>com.mysql.jdbc.driver</valu",{"_index":3824,"title":{},"content":{"939":{"position":[[1199,36]]}},"keywords":{}}],["value>false</valu",{"_index":3822,"title":{},"content":{"939":{"position":[[1100,20]]}},"keywords":{}}],["value>jdbc:mysql://10.171.161.78/ranger</valu",{"_index":3826,"title":{},"content":{"939":{"position":[[1311,48]]}},"keywords":{}}],["value>org.apache.ranger.admin.client.rangeradminrestclient</valu",{"_index":3816,"title":{},"content":{"939":{"position":[[731,67]]}},"keywords":{}}],["value>rang",{"_index":3804,"title":{},"content":{"939":{"position":[[248,13]]}},"keywords":{}}],["value>rangeradmin</valu",{"_index":3828,"title":{},"content":{"939":{"position":[[1435,26],[1533,26]]}},"keywords":{}}],["value>true</valu",{"_index":3820,"title":{},"content":{"939":{"position":[[1014,19]]}},"keywords":{}}],["values.yaml",{"_index":2422,"title":{},"content":{"312":{"position":[[70,14]]},"313":{"position":[[206,11]]},"784":{"position":[[70,14]]},"785":{"position":[[206,11]]}},"keywords":{}}],["var",{"_index":1854,"title":{},"content":{"179":{"position":[[540,4]]},"686":{"position":[[540,4]]}},"keywords":{}}],["var/lib/apt/list",{"_index":3310,"title":{},"content":{"777":{"position":[[752,20]]},"954":{"position":[[633,20]]},"969":{"position":[[690,20]]}},"keywords":{}}],["var/lib/gridengin",{"_index":3697,"title":{},"content":{"791":{"position":[[15755,19]]}},"keywords":{}}],["var/mnist.pi",{"_index":276,"title":{},"content":{"24":{"position":[[1112,13]]},"553":{"position":[[1112,13]]}},"keywords":{}}],["var/spool/gridengine/spooldb",{"_index":3700,"title":{},"content":{"791":{"position":[[15816,29],[15899,31]]}},"keywords":{}}],["var/tf_dist_mnist/dist_mnist.pi",{"_index":2560,"title":{},"content":{"328":{"position":[[828,32]]},"809":{"position":[[848,32]]}},"keywords":{}}],["var/tf_mnist/mnist_with_summaries.pi",{"_index":215,"title":{},"content":{"15":{"position":[[596,37]]},"18":{"position":[[593,37]]},"22":{"position":[[197,37],[955,37]]},"23":{"position":[[197,37],[1102,37]]},"24":{"position":[[464,37]]},"25":{"position":[[497,37]]},"26":{"position":[[205,37],[808,37]]},"27":{"position":[[500,37]]},"178":{"position":[[276,37]]},"366":{"position":[[163,37],[991,37]]},"369":{"position":[[163,37],[1111,37]]},"371":{"position":[[584,37],[1592,37]]},"374":{"position":[[528,37]]},"377":{"position":[[164,37],[1022,37]]},"380":{"position":[[503,37]]},"405":{"position":[[123,37]]},"410":{"position":[[564,37],[2357,37]]},"412":{"position":[[1359,37]]},"415":{"position":[[569,37],[2387,37]]},"418":{"position":[[1383,37]]},"421":{"position":[[682,37]]},"424":{"position":[[382,37]]},"425":{"position":[[389,37]]},"544":{"position":[[596,37]]},"547":{"position":[[593,37]]},"551":{"position":[[197,37],[955,37]]},"552":{"position":[[197,37],[1102,37]]},"553":{"position":[[464,37]]},"554":{"position":[[497,37]]},"555":{"position":[[205,37],[808,37]]},"556":{"position":[[500,37]]},"685":{"position":[[276,37]]},"840":{"position":[[163,37],[991,37]]},"843":{"position":[[163,37],[1111,37]]},"845":{"position":[[584,37],[1592,37]]},"848":{"position":[[528,37]]},"851":{"position":[[164,37],[1022,37]]},"854":{"position":[[503,37]]},"863":{"position":[[564,37],[2357,37]]},"865":{"position":[[1359,37]]},"868":{"position":[[569,37],[2387,37]]},"871":{"position":[[1383,37]]},"874":{"position":[[682,37]]},"894":{"position":[[123,37]]},"898":{"position":[[382,37]]},"899":{"position":[[389,37]]}},"keywords":{}}],["vari",{"_index":1603,"title":{},"content":{"133":{"position":[[462,6]]},"661":{"position":[[462,6]]}},"keywords":{}}],["variabl",{"_index":1485,"title":{"403":{"position":[[36,8]]},"404":{"position":[[12,8]]},"892":{"position":[[36,8]]},"893":{"position":[[12,8]]}},"content":{"114":{"position":[[652,9]]},"181":{"position":[[630,9]]},"289":{"position":[[494,9]]},"327":{"position":[[615,9]]},"365":{"position":[[503,10],[1133,10]]},"388":{"position":[[501,10]]},"409":{"position":[[1047,10],[1346,10]]},"470":{"position":[[74,10]]},"471":{"position":[[78,8]]},"491":{"position":[[162,9]]},"598":{"position":[[652,9]]},"688":{"position":[[630,9]]},"752":{"position":[[494,9]]},"791":{"position":[[13,9]]},"808":{"position":[[615,9]]},"839":{"position":[[503,10],[1133,10]]},"862":{"position":[[1047,10],[1346,10]]},"877":{"position":[[501,10]]},"909":{"position":[[237,9]]},"930":{"position":[[74,10]]},"931":{"position":[[78,8]]},"961":{"position":[[680,8]]},"964":{"position":[[100,8]]},"981":{"position":[[707,8]]}},"keywords":{}}],["variablejava_hom",{"_index":3163,"title":{},"content":{"491":{"position":[[230,17]]}},"keywords":{}}],["variables.global_vari",{"_index":4209,"title":{},"content":{"967":{"position":[[1642,29]]}},"keywords":{}}],["variablesubmarine.server.addr",{"_index":3173,"title":{},"content":{"492":{"position":[[90,29]]}},"keywords":{}}],["variant",{"_index":1743,"title":{},"content":{"152":{"position":[[304,7]]},"652":{"position":[[310,7]]}},"keywords":{}}],["varieti",{"_index":1909,"title":{},"content":{"199":{"position":[[455,7]]},"694":{"position":[[455,7]]}},"keywords":{}}],["variou",{"_index":704,"title":{},"content":{"53":{"position":[[8634,7]]},"54":{"position":[[1280,7]]},"132":{"position":[[1712,7]]},"160":{"position":[[1355,7]]},"313":{"position":[[22,7]]},"660":{"position":[[1712,7]]},"667":{"position":[[1356,7]]},"785":{"position":[[22,7]]}},"keywords":{}}],["vcore=3",{"_index":1677,"title":{},"content":{"140":{"position":[[480,8],[1149,8],[1244,8]]},"640":{"position":[[480,8],[1149,8],[1244,8]]}},"keywords":{}}],["vendor",{"_index":1219,"title":{},"content":{"93":{"position":[[363,7]]},"607":{"position":[[363,7]]},"744":{"position":[[768,6]]}},"keywords":{}}],["venv",{"_index":1488,"title":{},"content":{"115":{"position":[[60,5]]},"330":{"position":[[480,4]]},"599":{"position":[[60,5]]},"800":{"position":[[480,4]]},"979":{"position":[[408,4],[482,4]]},"984":{"position":[[319,4],[389,4]]},"989":{"position":[[317,4],[385,4]]}},"keywords":{}}],["venv/bin/activ",{"_index":2587,"title":{},"content":{"330":{"position":[[487,17]]},"800":{"position":[[487,17]]},"979":{"position":[[415,17]]},"984":{"position":[[326,17]]},"989":{"position":[[324,17]]}},"keywords":{}}],["verbos",{"_index":3042,"title":{},"content":{"479":{"position":[[753,7]]},"791":{"position":[[1520,7]]},"942":{"position":[[753,7]]},"980":{"position":[[388,7]]},"991":{"position":[[962,7]]}},"keywords":{}}],["veri",{"_index":1208,"title":{},"content":{"92":{"position":[[938,4]]},"130":{"position":[[209,4]]},"606":{"position":[[938,4]]},"637":{"position":[[209,4]]}},"keywords":{}}],["verif",{"_index":1978,"title":{"248":{"position":[[0,12]]}},"content":{"212":{"position":[[346,13]]},"250":{"position":[[10,12]]},"707":{"position":[[346,13]]}},"keywords":{}}],["verifi",{"_index":46,"title":{"4":{"position":[[0,6]]},"247":{"position":[[7,6]]},"250":{"position":[[3,6]]},"311":{"position":[[0,6]]},"323":{"position":[[0,6]]},"464":{"position":[[0,6]]},"773":{"position":[[0,6]]},"783":{"position":[[0,6]]}},"content":{"230":{"position":[[55,8]]},"231":{"position":[[74,8]]},"252":{"position":[[1015,6],[1922,6],[1956,6],[2180,6],[2305,6]]},"253":{"position":[[43,6]]},"255":{"position":[[360,6]]},"272":{"position":[[13,6],[99,6]]},"281":{"position":[[927,8]]},"289":{"position":[[1291,6]]},"306":{"position":[[458,6]]},"323":{"position":[[25,6],[183,6]]},"437":{"position":[[196,6]]},"725":{"position":[[89,8],[111,8]]},"752":{"position":[[1291,6]]},"757":{"position":[[458,6]]},"773":{"position":[[25,6],[183,6]]},"921":{"position":[[196,6]]}},"keywords":{}}],["version",{"_index":22,"title":{"31":{"position":[[11,8]]},"32":{"position":[[12,7]]},"33":{"position":[[14,7]]},"34":{"position":[[15,7]]},"35":{"position":[[15,7]]},"36":{"position":[[15,7]]},"249":{"position":[[26,7]]},"250":{"position":[[31,7]]},"284":{"position":[[16,7]]},"476":{"position":[[7,7]]},"487":{"position":[[4,8]]},"915":{"position":[[43,8]]},"917":{"position":[[45,8]]}},"content":{"2":{"position":[[88,7]]},"31":{"position":[[201,7],[580,9],[943,9],[1307,9],[1671,9]]},"32":{"position":[[212,7],[588,9]]},"33":{"position":[[20,7],[122,10],[264,7],[360,7]]},"34":{"position":[[220,7]]},"35":{"position":[[266,7]]},"43":{"position":[[80,7]]},"54":{"position":[[1416,7],[2626,8],[2644,7]]},"76":{"position":[[35,7]]},"101":{"position":[[187,8]]},"104":{"position":[[163,7]]},"112":{"position":[[809,8],[966,7]]},"117":{"position":[[524,8],[586,8]]},"128":{"position":[[301,7]]},"129":{"position":[[303,7]]},"133":{"position":[[562,7]]},"134":{"position":[[222,7]]},"136":{"position":[[281,10]]},"178":{"position":[[192,8]]},"179":{"position":[[278,7],[300,7]]},"180":{"position":[[534,7]]},"221":{"position":[[92,8],[218,7]]},"223":{"position":[[11,7]]},"224":{"position":[[5,7]]},"225":{"position":[[4,7]]},"228":{"position":[[0,7]]},"230":{"position":[[3,7]]},"231":{"position":[[7,7]]},"236":{"position":[[182,8],[202,8]]},"252":{"position":[[198,8],[257,7]]},"259":{"position":[[137,7]]},"263":{"position":[[279,8],[412,8],[1135,8]]},"267":{"position":[[329,7]]},"277":{"position":[[33,8]]},"278":{"position":[[75,7],[335,8]]},"316":{"position":[[188,7],[211,7],[249,7],[566,7]]},"327":{"position":[[901,7],[977,7]]},"332":{"position":[[81,7],[177,7],[233,7]]},"338":{"position":[[209,7]]},"439":{"position":[[1138,7]]},"441":{"position":[[72,7]]},"462":{"position":[[88,7]]},"476":{"position":[[20,7]]},"487":{"position":[[38,8],[74,7],[183,8]]},"491":{"position":[[691,7]]},"585":{"position":[[35,7]]},"596":{"position":[[809,8],[966,7]]},"601":{"position":[[524,8],[586,8]]},"615":{"position":[[187,8]]},"618":{"position":[[164,7]]},"635":{"position":[[301,7]]},"636":{"position":[[303,7]]},"661":{"position":[[562,7]]},"662":{"position":[[222,7]]},"664":{"position":[[281,10]]},"685":{"position":[[192,8]]},"686":{"position":[[278,7],[300,7]]},"687":{"position":[[587,7]]},"725":{"position":[[11,7]]},"726":{"position":[[5,7]]},"734":{"position":[[132,7],[220,7],[322,7],[424,7],[525,7]]},"735":{"position":[[92,8],[218,7]]},"740":{"position":[[185,8],[205,8]]},"744":{"position":[[619,7]]},"791":{"position":[[15302,7],[30851,7]]},"793":{"position":[[188,7],[211,7],[249,7],[566,7]]},"802":{"position":[[81,7],[177,7],[233,7]]},"812":{"position":[[211,7]]},"923":{"position":[[197,7]]},"925":{"position":[[72,7]]},"960":{"position":[[19,7]]},"963":{"position":[[688,7]]},"979":{"position":[[708,7]]}},"keywords":{}}],["version/regist",{"_index":345,"title":{},"content":{"31":{"position":[[98,16]]}},"keywords":{}}],["version/register/1",{"_index":368,"title":{},"content":{"32":{"position":[[108,18]]},"34":{"position":[[113,18]]}},"keywords":{}}],["version/tag?name=register&version=2&tag=789",{"_index":373,"title":{},"content":{"35":{"position":[[136,43]]},"36":{"position":[[140,43]]}},"keywords":{}}],["version/tag?name={name}&version={version}&tag={tag",{"_index":372,"title":{},"content":{"35":{"position":[[19,51]]},"36":{"position":[[21,51]]}},"keywords":{}}],["version/{nam",{"_index":343,"title":{},"content":{"31":{"position":[[18,14]]}},"keywords":{}}],["version/{name}/{v",{"_index":367,"title":{},"content":{"32":{"position":[[18,24]]},"34":{"position":[[21,24]]}},"keywords":{}}],["version=\"1.0",{"_index":2255,"title":{},"content":{"265":{"position":[[122,13]]}},"keywords":{}}],["version>.jar",{"_index":3799,"title":{},"content":{"938":{"position":[[35,13]]}},"keywords":{}}],["versionkubectlhelm",{"_index":2602,"title":{},"content":{"338":{"position":[[54,18]]},"812":{"position":[[54,18]]}},"keywords":{}}],["version,should",{"_index":2165,"title":{},"content":{"259":{"position":[[156,14]]}},"keywords":{}}],["veto",{"_index":560,"title":{},"content":{"53":{"position":[[2678,6],[6792,5],[6802,6],[6848,4],[6869,6],[7500,4],[8072,6],[8096,4],[8127,4],[8213,5],[8237,5],[8362,4],[8385,4],[8429,5],[8473,4],[8496,5],[8507,4],[8555,6]]}},"keywords":{}}],["vetoes.lazi",{"_index":680,"title":{},"content":{"53":{"position":[[7772,11]]}},"keywords":{}}],["vgg11",{"_index":4325,"title":{},"content":{"990":{"position":[[493,5],[676,5],[881,5]]},"991":{"position":[[563,5],[748,5],[920,5]]}},"keywords":{}}],["via",{"_index":1014,"title":{"145":{"position":[[7,3]]},"645":{"position":[[7,3]]}},"content":{"81":{"position":[[43,3]]},"102":{"position":[[1972,3],[2289,3]]},"104":{"position":[[498,3]]},"158":{"position":[[2890,3]]},"175":{"position":[[154,3]]},"215":{"position":[[85,3]]},"233":{"position":[[111,3]]},"261":{"position":[[229,3]]},"491":{"position":[[203,3]]},"588":{"position":[[43,3]]},"616":{"position":[[1984,3],[2302,3]]},"618":{"position":[[499,3]]},"658":{"position":[[2890,3]]},"682":{"position":[[154,3]]},"710":{"position":[[85,3]]},"737":{"position":[[111,3]]},"964":{"position":[[937,3]]}},"keywords":{}}],["vic",{"_index":613,"title":{},"content":{"53":{"position":[[4915,5]]}},"keywords":{}}],["video",{"_index":2030,"title":{"233":{"position":[[0,5]]},"737":{"position":[[0,5]]}},"content":{"233":{"position":[[10,6]]},"737":{"position":[[10,6]]}},"keywords":{}}],["view",{"_index":988,"title":{},"content":{"79":{"position":[[505,5]]},"105":{"position":[[98,4]]},"148":{"position":[[552,4]]},"341":{"position":[[230,4]]},"400":{"position":[[125,4]]},"433":{"position":[[139,4]]},"502":{"position":[[1651,4],[1908,4],[2116,4],[2202,4],[2323,4],[2441,4],[2566,4],[2696,5],[2824,5]]},"522":{"position":[[959,4]]},"619":{"position":[[98,4]]},"648":{"position":[[552,4]]},"744":{"position":[[1354,4]]},"791":{"position":[[14816,4],[30365,4]]},"889":{"position":[[125,4]]},"927":{"position":[[139,4]]}},"keywords":{}}],["vim",{"_index":3308,"title":{},"content":{"777":{"position":[[736,3]]},"954":{"position":[[566,3]]}},"keywords":{}}],["violat",{"_index":2031,"title":{},"content":{"236":{"position":[[37,10]]},"740":{"position":[[37,10]]}},"keywords":{}}],["virtual",{"_index":1491,"title":{"979":{"position":[[18,7]]},"984":{"position":[[18,7]]},"989":{"position":[[18,7]]}},"content":{"115":{"position":[[138,7]]},"330":{"position":[[197,7]]},"599":{"position":[[138,7]]},"800":{"position":[[197,7]]},"978":{"position":[[25,7]]},"979":{"position":[[23,7]]},"983":{"position":[[25,7]]},"984":{"position":[[23,7]]},"988":{"position":[[25,7]]},"989":{"position":[[23,7]]}},"keywords":{}}],["virtualbox/vmwar",{"_index":1447,"title":{},"content":{"112":{"position":[[199,17]]},"596":{"position":[[199,17]]}},"keywords":{}}],["virtualenv",{"_index":1496,"title":{},"content":{"115":{"position":[[267,10]]},"330":{"position":[[109,10],[377,10],[448,10]]},"599":{"position":[[267,10]]},"800":{"position":[[109,10],[377,10],[448,10]]},"979":{"position":[[258,10],[376,10]]},"984":{"position":[[255,10],[287,10]]},"989":{"position":[[253,10],[285,10]]}},"keywords":{}}],["visibl",{"_index":3233,"title":{},"content":{"502":{"position":[[1018,10],[1370,11],[1390,10],[2060,10],[2140,10],[2254,10],[2384,10],[2502,10],[2639,10],[2760,10]]},"522":{"position":[[671,11],[910,10],[969,10],[1017,10],[1084,10],[1135,10],[1208,10],[1262,10]]}},"keywords":{}}],["vision",{"_index":3897,"title":{},"content":{"954":{"position":[[1544,6]]}},"keywords":{}}],["visit",{"_index":818,"title":{},"content":{"59":{"position":[[0,5]]},"66":{"position":[[0,5]]},"67":{"position":[[0,5]]},"68":{"position":[[0,5]]},"568":{"position":[[0,5]]},"575":{"position":[[0,5]]},"576":{"position":[[0,5]]},"577":{"position":[[0,5]]}},"keywords":{}}],["visual",{"_index":1109,"title":{"966":{"position":[[0,11]]}},"content":{"90":{"position":[[908,14],[1095,14]]},"132":{"position":[[1338,14]]},"502":{"position":[[1660,6]]},"604":{"position":[[908,14],[1095,14]]},"660":{"position":[[1338,14]]},"966":{"position":[[35,9],[128,9]]}},"keywords":{}}],["vjdvx",{"_index":2622,"title":{},"content":{"340":{"position":[[479,5]]}},"keywords":{}}],["vlfbf7ch",{"_index":1018,"title":{},"content":{"81":{"position":[[145,8]]}},"keywords":{}}],["vm",{"_index":14,"title":{"114":{"position":[[0,2]]},"598":{"position":[[0,2]]}},"content":{"2":{"position":[[19,2]]},"103":{"position":[[176,2]]},"110":{"position":[[1582,2]]},"112":{"position":[[180,2],[279,3],[343,2],[370,2],[872,2]]},"113":{"position":[[130,2],[260,2],[312,2],[454,2]]},"114":{"position":[[17,2]]},"115":{"position":[[876,2]]},"338":{"position":[[156,2]]},"462":{"position":[[19,2]]},"596":{"position":[[180,2],[279,3],[343,2],[370,2],[872,2]]},"597":{"position":[[130,2],[260,2],[312,2],[454,2]]},"598":{"position":[[17,2]]},"599":{"position":[[876,2]]},"617":{"position":[[176,2]]},"624":{"position":[[1587,2]]},"744":{"position":[[589,2]]},"812":{"position":[[158,2]]}},"keywords":{}}],["vnklf",{"_index":2624,"title":{},"content":{"340":{"position":[[536,5]]}},"keywords":{}}],["void",{"_index":665,"title":{},"content":{"53":{"position":[[6900,5]]}},"keywords":{}}],["volum",{"_index":1250,"title":{"136":{"position":[[11,7]]},"313":{"position":[[0,6]]},"664":{"position":[[11,7]]},"785":{"position":[[0,6]]}},"content":{"94":{"position":[[594,8]]},"121":{"position":[[616,6]]},"127":{"position":[[252,6],[374,8]]},"133":{"position":[[274,8]]},"134":{"position":[[2144,8]]},"136":{"position":[[52,6],[260,6],[497,7]]},"313":{"position":[[30,6]]},"608":{"position":[[594,8]]},"628":{"position":[[616,6]]},"634":{"position":[[252,6],[374,8]]},"661":{"position":[[274,8]]},"662":{"position":[[2144,8]]},"664":{"position":[[52,6],[260,6],[497,7]]},"785":{"position":[[30,6]]}},"keywords":{}}],["volumemount",{"_index":1630,"title":{},"content":{"134":{"position":[[1964,13],[2096,13]]},"662":{"position":[[1964,13],[2096,13]]}},"keywords":{}}],["volunt",{"_index":515,"title":{},"content":{"53":{"position":[[1435,10],[3239,10]]}},"keywords":{}}],["vot",{"_index":461,"title":{"78":{"position":[[7,4]]},"79":{"position":[[4,6]]},"280":{"position":[[9,6]]},"281":{"position":[[0,4]]}},"content":{"53":{"position":[[150,5],[160,6],[1899,5],[2669,5],[3615,5],[5275,5],[5332,4],[5343,7],[5710,6],[5815,6],[5866,5],[5969,6],[6034,5],[6092,7],[6100,5],[6185,6],[6226,4],[6237,6],[6339,4],[6394,5],[6429,4],[6510,6],[6558,4],[6582,5],[6725,5],[6775,4],[6942,4],[7111,7],[7153,5],[7205,5],[7251,5],[7361,5],[7395,6],[7751,5],[7826,5],[7889,4],[7916,5],[7942,5],[8000,5],[8026,5],[8053,5],[8065,6],[8303,5],[8770,5],[9230,4],[9479,4],[10637,6],[10655,5],[10713,6],[10741,5],[10747,5],[10876,4],[10899,6],[10951,5]]},"54":{"position":[[1400,6],[2608,4]]},"79":{"position":[[613,4],[665,4],[712,6],[751,6],[832,5],[850,5],[871,5],[887,5],[904,4],[923,6],[1010,6],[1036,4],[1078,6],[1109,7],[1136,6],[1212,4],[1247,4],[1264,4],[1695,4],[1836,4]]},"83":{"position":[[128,4],[206,6]]},"98":{"position":[[553,5]]},"279":{"position":[[426,6]]},"280":{"position":[[3,4]]},"281":{"position":[[0,6],[88,5],[838,4],[1162,6],[1321,4],[1362,4],[1399,5],[1439,4],[1509,6],[1520,4]]},"284":{"position":[[252,6]]},"590":{"position":[[128,4],[206,6]]},"612":{"position":[[553,5]]}},"keywords":{}}],["votes.lazi",{"_index":685,"title":{},"content":{"53":{"position":[[7956,10]]}},"keywords":{}}],["vs",{"_index":1495,"title":{},"content":{"115":{"position":[[264,2],[278,2]]},"438":{"position":[[199,2],[265,2]]},"599":{"position":[[264,2],[278,2]]},"922":{"position":[[199,2],[265,2]]}},"keywords":{}}],["vwds8",{"_index":3734,"title":{},"content":{"814":{"position":[[167,5]]}},"keywords":{}}],["w",{"_index":3832,"title":{},"content":{"939":{"position":[[1886,2]]}},"keywords":{}}],["w/o",{"_index":3297,"title":{},"content":{"777":{"position":[[364,4]]},"939":{"position":[[1892,3]]},"969":{"position":[[351,4]]}},"keywords":{}}],["wait",{"_index":2359,"title":{},"content":{"284":{"position":[[389,4]]},"291":{"position":[[93,5],[108,5],[163,6],[203,4]]},"431":{"position":[[0,5]]},"455":{"position":[[47,5],[57,5],[70,5],[80,5],[123,5]]},"498":{"position":[[280,7]]},"754":{"position":[[93,5],[108,5],[163,6],[203,4]]},"791":{"position":[[17746,4],[32527,4]]},"905":{"position":[[0,5]]},"965":{"position":[[14240,7]]}},"keywords":{}}],["wait.do",{"_index":2387,"title":{},"content":{"291":{"position":[[125,7]]},"754":{"position":[[125,7]]}},"keywords":{}}],["wait_for_finish(id",{"_index":2899,"title":{"431":{"position":[[0,19]]},"905":{"position":[[0,19]]}},"content":{},"keywords":{}}],["want",{"_index":793,"title":{},"content":{"54":{"position":[[2188,4]]},"82":{"position":[[343,4]]},"86":{"position":[[217,7]]},"98":{"position":[[412,4]]},"112":{"position":[[2226,5]]},"117":{"position":[[35,4]]},"134":{"position":[[726,4],[879,4]]},"147":{"position":[[618,4]]},"152":{"position":[[1124,4]]},"158":{"position":[[2716,4]]},"243":{"position":[[7,4]]},"252":{"position":[[1298,4]]},"260":{"position":[[557,5],[779,5]]},"289":{"position":[[1012,4]]},"314":{"position":[[141,4],[517,4],[868,4]]},"320":{"position":[[7,4]]},"327":{"position":[[651,4]]},"476":{"position":[[64,4],[246,4]]},"496":{"position":[[630,4]]},"589":{"position":[[343,4]]},"593":{"position":[[217,7]]},"596":{"position":[[2226,5]]},"601":{"position":[[35,4]]},"612":{"position":[[412,4]]},"647":{"position":[[618,4]]},"652":{"position":[[1404,4]]},"658":{"position":[[2716,4]]},"662":{"position":[[726,4],[879,4]]},"746":{"position":[[7,4]]},"752":{"position":[[1012,4]]},"786":{"position":[[141,4],[517,4],[868,4]]},"788":{"position":[[944,4]]},"797":{"position":[[7,4]]},"964":{"position":[[1801,4]]},"976":{"position":[[41,4]]}},"keywords":{}}],["warehous",{"_index":2157,"title":{},"content":{"257":{"position":[[198,9],[232,10]]}},"keywords":{}}],["warn",{"_index":84,"title":{"967":{"position":[[0,8]]}},"content":{"4":{"position":[[467,7]]},"279":{"position":[[542,5]]},"291":{"position":[[0,7]]},"464":{"position":[[467,7]]},"482":{"position":[[24,4]]},"487":{"position":[[106,9]]},"754":{"position":[[0,7]]},"788":{"position":[[749,8]]},"791":{"position":[[14620,8],[30169,8]]},"945":{"position":[[24,4]]}},"keywords":{}}],["warranti",{"_index":2094,"title":{},"content":{"252":{"position":[[414,9]]},"260":{"position":[[480,9]]}},"keywords":{}}],["watch",{"_index":3226,"title":{},"content":{"502":{"position":[[594,6]]}},"keywords":{}}],["watch、star、frok",{"_index":3249,"title":{},"content":{"522":{"position":[[317,15]]}},"keywords":{}}],["watch:[todo]star:[todo]fork:[todo]com",{"_index":3250,"title":{},"content":{"522":{"position":[[347,54]]}},"keywords":{}}],["watch:[todo]star:[todo]fork:[todo]comment:us",{"_index":3228,"title":{},"content":{"502":{"position":[[650,47]]}},"keywords":{}}],["way",{"_index":478,"title":{"96":{"position":[[16,3]]},"610":{"position":[[16,3]]}},"content":{"53":{"position":[[596,5]]},"54":{"position":[[996,4],[2216,5]]},"81":{"position":[[72,5]]},"130":{"position":[[384,3]]},"134":{"position":[[69,4]]},"156":{"position":[[41,3]]},"177":{"position":[[343,4]]},"502":{"position":[[2930,4]]},"588":{"position":[[72,5]]},"637":{"position":[[384,3]]},"656":{"position":[[41,3]]},"662":{"position":[[69,4]]},"684":{"position":[[343,4]]},"963":{"position":[[200,4]]}},"keywords":{}}],["wbf8b",{"_index":2626,"title":{},"content":{"340":{"position":[[589,5]]}},"keywords":{}}],["we'r",{"_index":1283,"title":{},"content":{"98":{"position":[[487,5]]},"161":{"position":[[864,5]]},"612":{"position":[[487,5]]},"668":{"position":[[864,5]]}},"keywords":{}}],["we'v",{"_index":1041,"title":{},"content":{"83":{"position":[[191,5]]},"590":{"position":[[191,5]]}},"keywords":{}}],["web",{"_index":1385,"title":{"327":{"position":[[10,3]]},"808":{"position":[[10,3]]}},"content":{"104":{"position":[[375,3],[419,3]]},"160":{"position":[[79,4],[681,3]]},"239":{"position":[[202,3]]},"302":{"position":[[35,3],[165,3],[266,4],[276,3],[344,3]]},"326":{"position":[[19,3]]},"327":{"position":[[34,3]]},"492":{"position":[[1287,3]]},"498":{"position":[[115,3]]},"518":{"position":[[59,3]]},"618":{"position":[[376,3],[420,3]]},"667":{"position":[[79,4],[681,3]]},"743":{"position":[[186,3]]},"770":{"position":[[35,3],[165,3],[266,4],[276,3],[344,3]]},"807":{"position":[[19,3]]},"808":{"position":[[34,3]]}},"keywords":{}}],["webpag",{"_index":2835,"title":{"406":{"position":[[27,7]]},"895":{"position":[[27,7]]}},"content":{"404":{"position":[[216,8]]},"893":{"position":[[216,8]]}},"keywords":{}}],["websit",{"_index":707,"title":{"242":{"position":[[18,7]]},"285":{"position":[[20,7]]},"745":{"position":[[18,7]]}},"content":{"53":{"position":[[8920,7]]},"54":{"position":[[1966,7]]},"73":{"position":[[370,7]]},"242":{"position":[[10,7],[63,7],[99,7],[366,8],[405,8]]},"243":{"position":[[37,8]]},"244":{"position":[[68,7]]},"245":{"position":[[41,7]]},"582":{"position":[[370,7]]},"745":{"position":[[10,7],[63,7],[99,7],[366,8],[405,8]]},"746":{"position":[[37,8]]},"747":{"position":[[68,7]]},"748":{"position":[[41,7]]}},"keywords":{}}],["websites.speak",{"_index":602,"title":{},"content":{"53":{"position":[[4212,17]]}},"keywords":{}}],["websocket",{"_index":2398,"title":{},"content":{"302":{"position":[[103,9]]},"770":{"position":[[103,9]]}},"keywords":{}}],["week",{"_index":582,"title":{},"content":{"53":{"position":[[3452,4]]},"260":{"position":[[971,5]]}},"keywords":{}}],["welcom",{"_index":518,"title":{},"content":{"53":{"position":[[1569,7]]},"82":{"position":[[604,8]]},"589":{"position":[[604,8]]}},"keywords":{}}],["well",{"_index":509,"title":{},"content":{"53":{"position":[[1298,5]]},"82":{"position":[[164,4]]},"102":{"position":[[307,5]]},"129":{"position":[[213,4]]},"481":{"position":[[2004,4]]},"589":{"position":[[164,4]]},"616":{"position":[[307,5]]},"636":{"position":[[213,4]]},"944":{"position":[[2004,4]]},"957":{"position":[[290,4]]}},"keywords":{}}],["wget",{"_index":2581,"title":{},"content":{"330":{"position":[[233,4]]},"777":{"position":[[624,4],[1225,4],[1326,4]]},"788":{"position":[[249,4],[307,4],[363,4]]},"800":{"position":[[233,4]]},"950":{"position":[[603,4],[1118,4],[1171,4],[1352,4]]},"954":{"position":[[617,4],[1697,4],[1750,4]]},"969":{"position":[[1334,4],[1387,4]]},"979":{"position":[[114,4]]},"984":{"position":[[111,4]]},"989":{"position":[[109,4]]}},"keywords":{}}],["what'",{"_index":1481,"title":{},"content":{"114":{"position":[[405,6]]},"500":{"position":[[356,6]]},"598":{"position":[[405,6]]}},"keywords":{}}],["whatev",{"_index":1149,"title":{},"content":{"90":{"position":[[2482,8]]},"117":{"position":[[446,8]]},"147":{"position":[[154,8]]},"601":{"position":[[446,8]]},"604":{"position":[[2482,8]]},"647":{"position":[[154,8]]}},"keywords":{}}],["what‘",{"_index":3247,"title":{},"content":{"520":{"position":[[170,6]]}},"keywords":{}}],["whenev",{"_index":2042,"title":{},"content":{"237":{"position":[[132,8]]},"741":{"position":[[132,8]]}},"keywords":{}}],["where'",{"_index":1326,"title":{"147":{"position":[[27,7]]},"647":{"position":[[27,7]]}},"content":{"102":{"position":[[932,7]]},"616":{"position":[[937,7]]}},"keywords":{}}],["wheth",{"_index":990,"title":{"250":{"position":[[10,7]]},"262":{"position":[[10,7]]},"272":{"position":[[10,7]]}},"content":{"79":{"position":[[548,7]]},"210":{"position":[[149,7]]},"211":{"position":[[29,7]]},"251":{"position":[[103,7]]},"252":{"position":[[2118,7]]},"253":{"position":[[50,7]]},"254":{"position":[[75,7],[114,7],[192,7]]},"255":{"position":[[142,7],[181,7],[263,7],[367,7]]},"257":{"position":[[146,7]]},"262":{"position":[[50,7]]},"267":{"position":[[113,7]]},"289":{"position":[[861,7]]},"409":{"position":[[459,7]]},"705":{"position":[[149,7]]},"706":{"position":[[29,7]]},"752":{"position":[[861,7]]},"862":{"position":[[459,7]]}},"keywords":{}}],["wid",{"_index":675,"title":{},"content":{"53":{"position":[[7306,5]]},"92":{"position":[[234,4]]},"606":{"position":[[234,4]]}},"keywords":{}}],["willing",{"_index":653,"title":{},"content":{"53":{"position":[[6361,11],[6446,11]]}},"keywords":{}}],["window",{"_index":2037,"title":{},"content":{"236":{"position":[[376,7]]},"246":{"position":[[69,7]]},"487":{"position":[[147,6]]},"740":{"position":[[379,7]]},"749":{"position":[[69,7]]}},"keywords":{}}],["wish",{"_index":951,"title":{},"content":{"75":{"position":[[227,6]]},"584":{"position":[[227,6]]}},"keywords":{}}],["with_info=tru",{"_index":2651,"title":{},"content":{"343":{"position":[[663,15]]},"817":{"position":[[681,15]]}},"keywords":{}}],["withdraw",{"_index":700,"title":{},"content":{"53":{"position":[[8481,8]]}},"keywords":{}}],["withdrawn",{"_index":701,"title":{},"content":{"53":{"position":[[8519,10]]}},"keywords":{}}],["within",{"_index":489,"title":{},"content":{"53":{"position":[[898,6],[5029,6],[5125,6],[5482,6],[8671,6],[9596,6]]},"74":{"position":[[161,6]]},"85":{"position":[[14,6]]},"98":{"position":[[349,6]]},"99":{"position":[[407,6]]},"314":{"position":[[45,6]]},"343":{"position":[[1883,6]]},"583":{"position":[[161,6]]},"592":{"position":[[14,6]]},"612":{"position":[[349,6]]},"613":{"position":[[407,6]]},"786":{"position":[[45,6]]},"817":{"position":[[1901,6]]}},"keywords":{}}],["without",{"_index":1104,"title":{"978":{"position":[[0,7]]},"983":{"position":[[0,7]]},"988":{"position":[[0,7]]}},"content":{"90":{"position":[[736,7]]},"99":{"position":[[224,7]]},"186":{"position":[[538,7],[1104,7]]},"190":{"position":[[52,7]]},"202":{"position":[[85,7]]},"246":{"position":[[109,7]]},"477":{"position":[[86,7]]},"489":{"position":[[387,7]]},"502":{"position":[[3183,7]]},"604":{"position":[[736,7]]},"613":{"position":[[224,7]]},"697":{"position":[[85,7]]},"714":{"position":[[538,7],[1104,7]]},"718":{"position":[[52,7]]},"749":{"position":[[109,7]]},"950":{"position":[[345,8],[722,8]]}},"keywords":{}}],["won't",{"_index":2113,"title":{},"content":{"252":{"position":[[1138,5]]},"965":{"position":[[16049,5]]}},"keywords":{}}],["work",{"_index":227,"title":{"326":{"position":[[0,7]]},"807":{"position":[[0,7]]}},"content":{"15":{"position":[[904,9]]},"18":{"position":[[901,9]]},"22":{"position":[[476,9],[1234,9]]},"23":{"position":[[447,9],[1352,9]]},"24":{"position":[[743,9],[1322,9]]},"25":{"position":[[776,9]]},"26":{"position":[[484,9],[1087,9]]},"27":{"position":[[779,9]]},"28":{"position":[[290,6],[495,6]]},"29":{"position":[[1518,6]]},"53":{"position":[[167,6]]},"54":{"position":[[1609,4]]},"56":{"position":[[179,5]]},"82":{"position":[[351,4]]},"86":{"position":[[508,5]]},"93":{"position":[[613,4]]},"110":{"position":[[1228,4]]},"117":{"position":[[132,5],[267,5]]},"118":{"position":[[654,7],[711,7]]},"140":{"position":[[1165,7]]},"146":{"position":[[654,6]]},"178":{"position":[[540,7]]},"181":{"position":[[275,7]]},"186":{"position":[[1072,4],[1122,5]]},"211":{"position":[[98,7]]},"345":{"position":[[93,8]]},"346":{"position":[[187,7],[212,6]]},"366":{"position":[[442,9],[1456,10]]},"369":{"position":[[413,9],[1548,10]]},"371":{"position":[[1048,10],[2029,10]]},"374":{"position":[[965,10]]},"377":{"position":[[443,9],[1487,10]]},"380":{"position":[[968,10]]},"382":{"position":[[293,6]]},"385":{"position":[[321,6]]},"401":{"position":[[518,8]]},"405":{"position":[[363,9]]},"410":{"position":[[872,9],[2848,10]]},"412":{"position":[[1850,10]]},"415":{"position":[[877,9],[2875,10]]},"418":{"position":[[1871,10]]},"421":{"position":[[1146,10]]},"424":{"position":[[661,9]]},"425":{"position":[[608,9]]},"500":{"position":[[235,4],[339,4]]},"544":{"position":[[904,9]]},"547":{"position":[[901,9]]},"551":{"position":[[476,9],[1234,9]]},"552":{"position":[[447,9],[1352,9]]},"553":{"position":[[743,9],[1322,9]]},"554":{"position":[[776,9]]},"555":{"position":[[484,9],[1087,9]]},"556":{"position":[[779,9]]},"557":{"position":[[290,6],[495,6]]},"558":{"position":[[1518,6]]},"565":{"position":[[179,5]]},"589":{"position":[[351,4]]},"601":{"position":[[132,5],[267,5]]},"607":{"position":[[613,4]]},"624":{"position":[[1233,4]]},"625":{"position":[[655,7],[712,7]]},"640":{"position":[[1165,7]]},"646":{"position":[[654,6]]},"685":{"position":[[540,7]]},"688":{"position":[[275,7]]},"706":{"position":[[98,7]]},"714":{"position":[[1072,4],[1122,5]]},"791":{"position":[[17684,6],[17696,6],[17731,7],[29738,6],[29819,6],[29884,6],[32546,6],[32574,6],[32587,7]]},"819":{"position":[[93,8]]},"820":{"position":[[158,7],[185,7]]},"840":{"position":[[442,9],[1456,10]]},"843":{"position":[[413,9],[1548,10]]},"845":{"position":[[1048,10],[2029,10]]},"848":{"position":[[965,10]]},"851":{"position":[[443,9],[1487,10]]},"854":{"position":[[968,10]]},"856":{"position":[[293,6]]},"859":{"position":[[321,6]]},"863":{"position":[[872,9],[2848,10]]},"865":{"position":[[1850,10]]},"868":{"position":[[877,9],[2875,10]]},"871":{"position":[[1871,10]]},"874":{"position":[[1146,10]]},"890":{"position":[[518,8]]},"894":{"position":[[363,9]]},"898":{"position":[[661,9]]},"899":{"position":[[608,9]]},"909":{"position":[[186,6],[268,6]]},"963":{"position":[[139,8]]},"964":{"position":[[336,7],[439,9],[449,8],[826,7],[869,8],[882,7],[1046,7],[1101,7],[1394,6],[1474,9],[1484,8],[1566,7]]},"965":{"position":[[9678,7],[9698,7],[14266,7],[17360,6],[17376,6]]},"980":{"position":[[1126,6],[1327,6],[1838,6],[1985,6],[2360,6],[2562,6]]},"985":{"position":[[986,6],[1187,6],[1698,6],[1845,6],[2220,6],[2422,6]]},"990":{"position":[[1683,7],[1885,7],[2707,6],[2854,6],[3237,7],[3645,7]]}},"keywords":{}}],["workbench",{"_index":130,"title":{"6":{"position":[[5,9]]},"213":{"position":[[12,9]]},"239":{"position":[[8,9]]},"302":{"position":[[15,9]]},"341":{"position":[[11,9]]},"466":{"position":[[5,9]]},"487":{"position":[[26,9]]},"490":{"position":[[14,9]]},"516":{"position":[[11,9]]},"536":{"position":[[11,9]]},"708":{"position":[[12,9]]},"743":{"position":[[8,9]]},"770":{"position":[[15,9]]},"815":{"position":[[11,9]]}},"content":{"105":{"position":[[135,9]]},"162":{"position":[[20,9]]},"186":{"position":[[521,9]]},"197":{"position":[[83,9],[229,9],[732,9]]},"199":{"position":[[23,10]]},"201":{"position":[[251,9]]},"203":{"position":[[186,11]]},"205":{"position":[[26,11],[230,11]]},"209":{"position":[[267,9],[319,9]]},"239":{"position":[[231,9],[438,10]]},"281":{"position":[[995,9]]},"288":{"position":[[109,10]]},"289":{"position":[[293,9],[334,9],[1199,9]]},"302":{"position":[[0,9],[55,9],[155,9],[334,9]]},"341":{"position":[[235,9]]},"345":{"position":[[15,9]]},"406":{"position":[[32,10]]},"433":{"position":[[176,9]]},"487":{"position":[[205,11]]},"488":{"position":[[40,9],[466,9]]},"489":{"position":[[377,9]]},"490":{"position":[[74,9]]},"491":{"position":[[357,9],[418,9],[586,9]]},"492":{"position":[[1277,9]]},"498":{"position":[[377,10],[601,10]]},"499":{"position":[[58,9]]},"500":{"position":[[17,9],[193,9]]},"502":{"position":[[514,9],[639,10],[1894,9],[2304,9],[2552,9],[2810,9],[2906,9],[2972,9]]},"516":{"position":[[21,9]]},"518":{"position":[[47,9],[132,9],[210,10]]},"519":{"position":[[50,9]]},"520":{"position":[[12,9],[86,9]]},"522":{"position":[[253,9],[303,9],[839,17],[1039,11],[1157,11],[1284,11],[1343,13],[1381,9]]},"536":{"position":[[21,9]]},"619":{"position":[[135,9]]},"669":{"position":[[91,9]]},"692":{"position":[[83,9],[229,9],[732,9]]},"694":{"position":[[23,10]]},"696":{"position":[[251,9]]},"698":{"position":[[186,11]]},"700":{"position":[[26,11],[230,11]]},"704":{"position":[[267,9],[319,9]]},"714":{"position":[[521,9]]},"743":{"position":[[215,9],[422,10]]},"744":{"position":[[1359,9]]},"751":{"position":[[109,10]]},"752":{"position":[[293,9],[334,9],[1199,9]]},"770":{"position":[[0,9],[55,9],[155,9],[334,9]]},"819":{"position":[[15,9]]},"820":{"position":[[116,10]]},"895":{"position":[[32,10]]},"927":{"position":[[176,9]]}},"keywords":{}}],["workbench'",{"_index":3208,"title":{},"content":{"498":{"position":[[103,11]]}},"keywords":{}}],["workbench(angular",{"_index":3143,"title":{"488":{"position":[[21,18]]}},"content":{},"keywords":{}}],["workbench.server.addr",{"_index":1932,"title":{},"content":{"206":{"position":[[32,21]]},"207":{"position":[[190,22]]},"208":{"position":[[177,22]]},"701":{"position":[[32,21]]},"702":{"position":[[190,22]]},"703":{"position":[[177,22]]}},"keywords":{}}],["workbench.to",{"_index":2704,"title":{},"content":{"346":{"position":[[150,12]]}},"keywords":{}}],["workbench.web.war",{"_index":3192,"title":{},"content":{"492":{"position":[[1249,17]]}},"keywords":{}}],["workbench/lib",{"_index":3160,"title":{},"content":{"490":{"position":[[154,13]]}},"keywords":{}}],["workbench/workbench",{"_index":2052,"title":{},"content":{"239":{"position":[[182,19]]},"743":{"position":[[166,19]]}},"keywords":{}}],["workbench_port",{"_index":2369,"title":{},"content":{"289":{"position":[[396,14]]},"752":{"position":[[396,14]]}},"keywords":{}}],["workbench_port=8080",{"_index":2373,"title":{},"content":{"289":{"position":[[663,19]]},"752":{"position":[[663,19]]}},"keywords":{}}],["workbench_server_host",{"_index":1954,"title":{},"content":{"209":{"position":[[235,21]]},"704":{"position":[[235,21]]}},"keywords":{}}],["workbench_server_port",{"_index":1955,"title":{},"content":{"209":{"position":[[287,21]]},"704":{"position":[[287,21]]}},"keywords":{}}],["workdir",{"_index":3884,"title":{},"content":{"954":{"position":[[1179,7],[1253,7],[1465,7]]}},"keywords":{}}],["worker_docker_imag",{"_index":3021,"title":{},"content":{"479":{"position":[[232,19]]},"942":{"position":[[232,19]]}},"keywords":{}}],["worker_i",{"_index":3758,"title":{},"content":{"909":{"position":[[120,10]]}},"keywords":{}}],["worker_launch_cmd",{"_index":3044,"title":{},"content":{"479":{"position":[[783,17]]},"791":{"position":[[1157,17]]},"942":{"position":[[783,17]]},"980":{"position":[[525,17]]},"981":{"position":[[429,17]]},"985":{"position":[[492,17]]},"986":{"position":[[400,17]]},"990":{"position":[[397,17]]},"991":{"position":[[663,17]]}},"keywords":{}}],["worker_num",{"_index":3384,"title":{},"content":{"791":{"position":[[1093,11],[1376,11]]}},"keywords":{}}],["worker_num=2",{"_index":3363,"title":{},"content":{"791":{"position":[[80,12]]}},"keywords":{}}],["worker_resourc",{"_index":3040,"title":{},"content":{"479":{"position":[[709,16]]},"791":{"position":[[1109,16]]},"942":{"position":[[709,16]]},"980":{"position":[[436,16]]},"981":{"position":[[389,16]]},"985":{"position":[[403,16]]},"986":{"position":[[360,16]]},"990":{"position":[[357,16]]},"991":{"position":[[623,16]]}},"keywords":{}}],["worker_spec",{"_index":2563,"title":{},"content":{"328":{"position":[[908,11],[1270,13]]},"809":{"position":[[928,11],[1290,13]]}},"keywords":{}}],["workers=2",{"_index":3955,"title":{},"content":{"965":{"position":[[566,9]]}},"keywords":{}}],["workflow",{"_index":872,"title":{"91":{"position":[[17,9]]},"92":{"position":[[122,9]]},"605":{"position":[[17,9]]},"606":{"position":[[122,9]]}},"content":{"66":{"position":[[101,9]]},"68":{"position":[[97,10]]},"82":{"position":[[710,9]]},"90":{"position":[[2933,8]]},"92":{"position":[[16,8],[266,9]]},"94":{"position":[[157,9]]},"99":{"position":[[106,9]]},"102":{"position":[[128,9]]},"161":{"position":[[132,10]]},"186":{"position":[[238,8]]},"575":{"position":[[101,9]]},"577":{"position":[[97,10]]},"589":{"position":[[710,9]]},"604":{"position":[[2933,8]]},"606":{"position":[[16,8],[266,9]]},"608":{"position":[[157,9]]},"613":{"position":[[106,9]]},"616":{"position":[[128,9]]},"668":{"position":[[132,10]]},"714":{"position":[[238,8]]}},"keywords":{}}],["workflow/step",{"_index":1188,"title":{"92":{"position":[[16,14]]},"606":{"position":[[16,14]]}},"content":{},"keywords":{}}],["working_dir",{"_index":4271,"title":{},"content":{"980":{"position":[[625,11],[748,11]]}},"keywords":{}}],["workload",{"_index":1395,"title":{},"content":{"106":{"position":[[243,9]]},"110":{"position":[[1294,9]]},"132":{"position":[[1508,10]]},"155":{"position":[[94,9]]},"620":{"position":[[243,9]]},"624":{"position":[[1299,9]]},"655":{"position":[[94,9]]},"660":{"position":[[1508,10]]}},"keywords":{}}],["works.submarin",{"_index":1529,"title":{},"content":{"118":{"position":[[453,15],[555,15]]},"625":{"position":[[454,15],[556,15]]}},"keywords":{}}],["workspac",{"_index":1022,"title":{"501":{"position":[[0,9]]},"521":{"position":[[0,9]]}},"content":{"81":{"position":[[236,10]]},"186":{"position":[[865,9],[891,9],[1093,10],[1140,9]]},"189":{"position":[[125,9]]},"190":{"position":[[363,9]]},"436":{"position":[[233,10]]},"501":{"position":[[0,9]]},"502":{"position":[[3734,9]]},"521":{"position":[[0,9]]},"522":{"position":[[1700,9],[1737,9]]},"714":{"position":[[865,9],[891,9],[1093,10],[1140,9]]},"717":{"position":[[125,9]]},"718":{"position":[[368,9]]},"920":{"position":[[233,10]]}},"keywords":{}}],["workspace.op",{"_index":3244,"title":{},"content":{"502":{"position":[[3686,14]]}},"keywords":{}}],["world",{"_index":1237,"title":{},"content":{"94":{"position":[[134,5]]},"608":{"position":[[134,5]]}},"keywords":{}}],["worri",{"_index":1325,"title":{},"content":{"102":{"position":[[917,8]]},"616":{"position":[[922,8]]}},"keywords":{}}],["wrap",{"_index":4211,"title":{},"content":{"967":{"position":[[1772,7],[1956,7]]}},"keywords":{}}],["wrapp",{"_index":1136,"title":{"221":{"position":[[54,7]]},"735":{"position":[[54,7]]}},"content":{"90":{"position":[[1887,8]]},"221":{"position":[[6,7],[32,7],[115,7],[202,7]]},"604":{"position":[[1887,8]]},"735":{"position":[[6,7],[32,7],[115,7],[202,7]]}},"keywords":{}}],["writ",{"_index":747,"title":{"343":{"position":[[3,5]]},"403":{"position":[[0,5]]},"817":{"position":[[3,5]]},"892":{"position":[[0,5]]},"940":{"position":[[0,5]]}},"content":{"54":{"position":[[241,5],[1257,7]]},"94":{"position":[[558,5]]},"114":{"position":[[103,5]]},"207":{"position":[[113,5]]},"208":{"position":[[209,5],[229,5]]},"237":{"position":[[180,5]]},"496":{"position":[[52,5]]},"598":{"position":[[103,5]]},"608":{"position":[[558,5]]},"702":{"position":[[113,5]]},"703":{"position":[[209,5],[229,5]]},"741":{"position":[[180,5]]},"789":{"position":[[9,5]]},"940":{"position":[[7,5],[61,5],[112,5]]}},"keywords":{}}],["writabl",{"_index":954,"title":{},"content":{"76":{"position":[[56,8]]},"585":{"position":[[56,8]]}},"keywords":{}}],["writedockerfilekaldi",{"_index":3289,"title":{"775":{"position":[[0,20]]}},"content":{},"keywords":{}}],["writt",{"_index":2249,"title":{},"content":{"264":{"position":[[84,7]]}},"keywords":{}}],["wrong",{"_index":2155,"title":{},"content":{"255":{"position":[[450,6]]}},"keywords":{}}],["wysiwyg",{"_index":1108,"title":{},"content":{"90":{"position":[[833,9]]},"604":{"position":[[833,9]]}},"keywords":{}}],["x",{"_index":151,"title":{},"content":{"9":{"position":[[47,1]]},"10":{"position":[[47,1]]},"11":{"position":[[54,1]]},"12":{"position":[[56,1]]},"13":{"position":[[54,1]]},"15":{"position":[[44,1]]},"16":{"position":[[44,1]]},"17":{"position":[[51,1]]},"18":{"position":[[36,1]]},"19":{"position":[[51,1]]},"20":{"position":[[63,1]]},"22":{"position":[[46,1]]},"23":{"position":[[46,1]]},"24":{"position":[[46,1]]},"25":{"position":[[51,1]]},"26":{"position":[[53,1]]},"27":{"position":[[51,1]]},"28":{"position":[[51,1]]},"29":{"position":[[56,1]]},"31":{"position":[[56,1]]},"32":{"position":[[66,1]]},"33":{"position":[[51,1]]},"34":{"position":[[68,1]]},"35":{"position":[[93,1]]},"36":{"position":[[95,1]]},"38":{"position":[[44,1]]},"39":{"position":[[44,1]]},"40":{"position":[[49,1]]},"41":{"position":[[52,1]]},"43":{"position":[[113,1]]},"44":{"position":[[43,1]]},"46":{"position":[[52,1]]},"47":{"position":[[52,1]]},"48":{"position":[[59,1]]},"49":{"position":[[61,1]]},"50":{"position":[[61,1]]},"51":{"position":[[78,1]]},"52":{"position":[[80,1]]},"223":{"position":[[47,1],[85,1]]},"224":{"position":[[40,1]]},"225":{"position":[[27,1],[32,1]]},"230":{"position":[[24,1]]},"231":{"position":[[40,1]]},"316":{"position":[[452,2]]},"351":{"position":[[12,1]]},"353":{"position":[[12,1]]},"356":{"position":[[12,1]]},"359":{"position":[[12,1]]},"362":{"position":[[12,1]]},"366":{"position":[[12,1]]},"369":{"position":[[12,1]]},"371":{"position":[[12,1]]},"374":{"position":[[12,1]]},"377":{"position":[[12,1]]},"380":{"position":[[12,1]]},"382":{"position":[[12,1]]},"385":{"position":[[12,1]]},"389":{"position":[[12,1]]},"392":{"position":[[12,1]]},"395":{"position":[[12,1]]},"398":{"position":[[12,1]]},"410":{"position":[[12,1]]},"412":{"position":[[12,1]]},"415":{"position":[[12,1]]},"418":{"position":[[12,1]]},"421":{"position":[[12,1]]},"484":{"position":[[1103,2]]},"538":{"position":[[47,1]]},"539":{"position":[[47,1]]},"540":{"position":[[54,1]]},"541":{"position":[[56,1]]},"542":{"position":[[54,1]]},"544":{"position":[[44,1]]},"545":{"position":[[44,1]]},"546":{"position":[[51,1]]},"547":{"position":[[36,1]]},"548":{"position":[[51,1]]},"549":{"position":[[63,1]]},"551":{"position":[[46,1]]},"552":{"position":[[46,1]]},"553":{"position":[[46,1]]},"554":{"position":[[51,1]]},"555":{"position":[[53,1]]},"556":{"position":[[51,1]]},"557":{"position":[[51,1]]},"558":{"position":[[56,1]]},"560":{"position":[[44,1]]},"561":{"position":[[44,1]]},"562":{"position":[[49,1]]},"563":{"position":[[52,1]]},"725":{"position":[[47,1]]},"726":{"position":[[40,1]]},"793":{"position":[[452,2]]},"825":{"position":[[12,1]]},"827":{"position":[[12,1]]},"830":{"position":[[12,1]]},"833":{"position":[[12,1]]},"836":{"position":[[12,1]]},"840":{"position":[[12,1]]},"843":{"position":[[12,1]]},"845":{"position":[[12,1]]},"848":{"position":[[12,1]]},"851":{"position":[[12,1]]},"854":{"position":[[12,1]]},"856":{"position":[[12,1]]},"859":{"position":[[12,1]]},"863":{"position":[[12,1]]},"865":{"position":[[12,1]]},"868":{"position":[[12,1]]},"871":{"position":[[12,1]]},"874":{"position":[[12,1]]},"878":{"position":[[12,1]]},"881":{"position":[[12,1]]},"884":{"position":[[12,1]]},"887":{"position":[[12,1]]},"947":{"position":[[1103,2]]},"954":{"position":[[765,2]]}},"keywords":{}}],["x.y.z",{"_index":2488,"title":{},"content":{"323":{"position":[[205,5]]},"773":{"position":[[205,5]]}},"keywords":{}}],["x86_64.sh",{"_index":3871,"title":{},"content":{"954":{"position":[[744,9]]}},"keywords":{}}],["xarg",{"_index":3113,"title":{},"content":{"484":{"position":[[621,5]]},"947":{"position":[[621,5]]}},"keywords":{}}],["xauth",{"_index":3428,"title":{},"content":{"791":{"position":[[2418,5],[3310,5],[5117,5],[10161,6],[10241,5],[14028,5],[18260,5],[19134,5],[20941,5],[25879,6],[25959,5],[29577,5]]}},"keywords":{}}],["xauth_1%3a1.0.9",{"_index":3625,"title":{},"content":{"791":{"position":[[10188,19],[25906,19]]}},"keywords":{}}],["xd987",{"_index":3740,"title":{},"content":{"814":{"position":[[330,5]]}},"keywords":{}}],["xenial",{"_index":3484,"title":{},"content":{"791":{"position":[[4003,6],[4115,6],[4221,6],[4347,6],[4474,6],[4590,6],[4984,6],[5284,6],[6113,6],[6234,6],[6641,6],[6761,6],[19827,6],[19939,6],[20045,6],[20171,6],[20298,6],[20414,6],[20808,6],[21108,6],[21831,6],[21952,6],[22359,6],[22479,6]]}},"keywords":{}}],["xenial/main",{"_index":3467,"title":{},"content":{"791":{"position":[[3522,11],[3615,11],[3704,11],[3807,11],[3906,11],[4706,11],[4808,11],[4892,11],[5099,11],[5196,11],[5391,11],[6007,11],[6349,11],[6452,11],[6548,11],[6875,11],[19346,11],[19439,11],[19528,11],[19631,11],[19730,11],[20530,11],[20632,11],[20716,11],[20923,11],[21020,11],[21215,11],[21725,11],[22067,11],[22170,11],[22266,11],[22593,11]]}},"keywords":{}}],["xenial/univ",{"_index":3533,"title":{},"content":{"791":{"position":[[5497,15],[5600,15],[5706,15],[5798,15],[5901,15],[21321,15],[21424,15],[21530,15],[21622,15]]}},"keywords":{}}],["xf",{"_index":2584,"title":{},"content":{"330":{"position":[[374,2]]},"800":{"position":[[374,2]]},"979":{"position":[[255,2]]},"984":{"position":[[252,2]]},"989":{"position":[[250,2]]}},"keywords":{}}],["xfatbin",{"_index":3893,"title":{},"content":{"954":{"position":[[1371,7]]}},"keywords":{}}],["xgboost",{"_index":1201,"title":{},"content":{"92":{"position":[[442,8]]},"158":{"position":[[1929,7]]},"606":{"position":[[442,8]]},"658":{"position":[[1929,7]]}},"keywords":{}}],["xm8nl",{"_index":2610,"title":{},"content":{"340":{"position":[[217,5]]}},"keywords":{}}],["xml",{"_index":2254,"title":{},"content":{"265":{"position":[[116,5]]}},"keywords":{}}],["xmlns:xsi=\"http://www.w3.org/2001/xmlschema",{"_index":2261,"title":{},"content":{"265":{"position":[[319,43]]}},"keywords":{}}],["xmlns=\"http://maven.apache.org/settings/1.1.0",{"_index":2260,"title":{},"content":{"265":{"position":[[272,46]]}},"keywords":{}}],["xperiment",{"_index":1767,"title":{},"content":{"154":{"position":[[331,10],[923,9]]},"654":{"position":[[331,10],[928,9]]}},"keywords":{}}],["xsi:schemalocation=\"http://maven.apache.org/settings/1.1.0",{"_index":2257,"title":{},"content":{"265":{"position":[[165,58]]}},"keywords":{}}],["xx",{"_index":2354,"title":{},"content":{"281":{"position":[[1379,2],[1419,2]]}},"keywords":{}}],["xxx",{"_index":2108,"title":{},"content":{"252":{"position":[[679,3],[924,3],[1555,3],[1794,3],[2735,4]]},"281":{"position":[[1144,3]]}},"keywords":{}}],["xxxx",{"_index":2329,"title":{},"content":{"279":{"position":[[537,4]]},"286":{"position":[[621,4]]}},"keywords":{}}],["xxxxxx",{"_index":981,"title":{},"content":{"79":{"position":[[244,6],[740,6],[1195,6],[1488,6],[2111,7]]}},"keywords":{}}],["xxxxxxxxxx",{"_index":2087,"title":{},"content":{"252":{"position":[[223,10]]}},"keywords":{}}],["xyz",{"_index":1798,"title":{},"content":{"158":{"position":[[1507,3],[1515,3],[2198,3],[2206,3]]},"658":{"position":[[1507,3],[1515,3],[2198,3],[2206,3]]}},"keywords":{}}],["xzvf",{"_index":2299,"title":{},"content":{"270":{"position":[[154,4]]},"274":{"position":[[99,4]]}},"keywords":{}}],["y",{"_index":2118,"title":{},"content":{"252":{"position":[[1344,1],[1355,1]]},"260":{"position":[[1127,1],[1137,1]]},"313":{"position":[[989,1]]},"777":{"position":[[507,1],[1209,1]]},"785":{"position":[[989,1]]},"950":{"position":[[588,1],[1102,1]]},"954":{"position":[[499,1],[878,1],[995,1],[1681,1]]},"969":{"position":[[480,1],[1318,1]]}},"keywords":{}}],["y/n",{"_index":2117,"title":{},"content":{"252":{"position":[[1338,5]]},"260":{"position":[[1121,5]]}},"keywords":{}}],["ya",{"_index":3881,"title":{},"content":{"954":{"position":[[1055,2]]}},"keywords":{}}],["yaml",{"_index":1499,"title":{},"content":{"115":{"position":[[436,4],[451,4]]},"147":{"position":[[1327,4]]},"157":{"position":[[783,4]]},"496":{"position":[[60,4],[116,5]]},"599":{"position":[[436,4],[451,4]]},"647":{"position":[[1327,4]]},"657":{"position":[[783,4]]}},"keywords":{}}],["yarn",{"_index":1225,"title":{"475":{"position":[[21,4]]},"477":{"position":[[10,4]]},"720":{"position":[[12,4]]},"776":{"position":[[44,4]]},"777":{"position":[[44,4]]},"950":{"position":[[44,4]]},"954":{"position":[[46,4]]},"969":{"position":[[49,4]]},"974":{"position":[[0,4]]},"992":{"position":[[4,4]]}},"content":{"93":{"position":[[565,5],[645,4],[887,4]]},"98":{"position":[[119,5],[222,4],[268,4],[383,5]]},"99":{"position":[[559,5]]},"244":{"position":[[11,4],[76,4]]},"245":{"position":[[81,4]]},"246":{"position":[[147,4]]},"295":{"position":[[70,4]]},"303":{"position":[[406,4],[588,4]]},"476":{"position":[[83,4],[194,4],[224,4],[366,4],[398,4]]},"477":{"position":[[0,4],[66,5]]},"481":{"position":[[275,4],[376,4],[1751,4],[1856,5],[2015,5]]},"607":{"position":[[565,5],[645,4],[887,4]]},"612":{"position":[[119,5],[222,4],[268,4],[383,5]]},"613":{"position":[[559,5]]},"625":{"position":[[956,4]]},"652":{"position":[[245,5],[842,4],[860,4],[899,4],[954,4],[1074,4]]},"669":{"position":[[320,4],[414,4]]},"687":{"position":[[69,5],[402,4]]},"717":{"position":[[144,4]]},"747":{"position":[[11,4],[76,4]]},"748":{"position":[[81,4]]},"749":{"position":[[147,4]]},"762":{"position":[[70,4]]},"771":{"position":[[406,4],[588,4]]},"777":{"position":[[27,4]]},"788":{"position":[[775,4],[872,4]]},"791":{"position":[[295,4]]},"944":{"position":[[275,4],[376,4],[1751,4],[1856,5],[2015,5]]},"950":{"position":[[27,4]]},"954":{"position":[[29,4]]},"969":{"position":[[32,4]]},"975":{"position":[[35,4]]},"992":{"position":[[40,4],[117,4],[282,4],[413,5]]}},"keywords":{}}],["yarn/k8s.n",{"_index":3261,"title":{},"content":{"655":{"position":[[115,13]]}},"keywords":{}}],["yarn/k8s/contain",{"_index":3254,"title":{},"content":{"616":{"position":[[1114,18]]}},"keywords":{}}],["yarn/k8s/dock",{"_index":3256,"title":{},"content":{"624":{"position":[[785,15]]}},"keywords":{}}],["yarn_container_runtime_docker_container_network=calico",{"_index":3020,"title":{},"content":{"479":{"position":[[165,54]]},"791":{"position":[[537,54]]},"942":{"position":[[165,54]]}},"keywords":{}}],["yarn_container_runtime_docker_mounts=${thchs30_path}/sge/resolv.conf:/etc/resolv.conf",{"_index":3375,"title":{},"content":{"791":{"position":[[664,87]]}},"keywords":{}}],["yarnservic",{"_index":3258,"title":{},"content":{"652":{"position":[[918,11],[1039,11]]},"687":{"position":[[75,11]]},"981":{"position":[[1661,11]]}},"keywords":{}}],["ye",{"_index":649,"title":{},"content":{"53":{"position":[[6269,6]]},"92":{"position":[[538,4]]},"179":{"position":[[447,3],[521,3]]},"180":{"position":[[200,3],[395,3],[476,3]]},"181":{"position":[[434,3],[510,3],[553,3],[610,3]]},"606":{"position":[[538,4]]},"686":{"position":[[447,3],[521,3]]},"687":{"position":[[221,3],[448,3],[529,3]]},"688":{"position":[[434,3],[510,3],[553,3],[610,3]]}},"keywords":{}}],["year",{"_index":1193,"title":{},"content":{"92":{"position":[[214,6]]},"260":{"position":[[1032,5]]},"606":{"position":[[214,6]]}},"keywords":{}}],["you'll",{"_index":122,"title":{},"content":{"5":{"position":[[128,6]]},"341":{"position":[[61,6]]},"465":{"position":[[128,6]]},"744":{"position":[[1173,6]]},"963":{"position":[[298,6]]},"966":{"position":[[281,6]]}},"keywords":{}}],["you'r",{"_index":3950,"title":{},"content":{"965":{"position":[[59,6]]}},"keywords":{}}],["you'v",{"_index":2595,"title":{},"content":{"334":{"position":[[9,6]]},"804":{"position":[[9,6]]}},"keywords":{}}],["your_docker_imag",{"_index":4343,"title":{},"content":{"991":{"position":[[369,19]]}},"keywords":{}}],["your_nam",{"_index":2243,"title":{},"content":{"263":{"position":[[936,10],[1631,10]]}},"keywords":{}}],["your_name@apache.org",{"_index":2240,"title":{},"content":{"263":{"position":[[623,20],[668,21],[1310,20],[1355,21]]}},"keywords":{}}],["youraccount@apache.org",{"_index":2110,"title":{},"content":{"252":{"position":[[690,24],[935,24],[1566,24],[1805,24],[2747,25]]}},"keywords":{}}],["yourself",{"_index":2935,"title":{},"content":{"437":{"position":[[547,9]]},"921":{"position":[[547,9]]}},"keywords":{}}],["you’r",{"_index":2541,"title":{},"content":{"327":{"position":[[996,6]]},"808":{"position":[[647,6]]}},"keywords":{}}],["yq",{"_index":4225,"title":{},"content":{"969":{"position":[[791,2]]}},"keywords":{}}],["yum",{"_index":2444,"title":{},"content":{"313":{"position":[[1014,3]]},"785":{"position":[[1014,3]]}},"keywords":{}}],["yyyyi",{"_index":980,"title":{},"content":{"79":{"position":[[223,5],[719,5],[1174,5],[2119,5]]}},"keywords":{}}],["yyyzzz",{"_index":2109,"title":{},"content":{"252":{"position":[[683,6],[928,6],[1559,6],[1798,6],[2740,6]]}},"keywords":{}}],["z",{"_index":3116,"title":{},"content":{"484":{"position":[[652,1]]},"947":{"position":[[652,1]]}},"keywords":{}}],["zeppelin",{"_index":3242,"title":{},"content":{"502":{"position":[[3481,8]]},"522":{"position":[[1590,8]]}},"keywords":{}}],["zeppelin/jupyt",{"_index":1120,"title":{},"content":{"90":{"position":[[1202,17]]},"604":{"position":[[1202,17]]}},"keywords":{}}],["zero",{"_index":2286,"title":{},"content":{"268":{"position":[[333,6]]},"912":{"position":[[141,4]]},"913":{"position":[[227,5]]}},"keywords":{}}],["zip",{"_index":3842,"title":{},"content":{"950":{"position":[[608,3]]},"979":{"position":[[43,3],[464,3]]},"984":{"position":[[43,3],[371,3]]},"989":{"position":[[43,3],[367,3]]}},"keywords":{}}],["zlib1g",{"_index":3306,"title":{},"content":{"777":{"position":[[688,6]]}},"keywords":{}}],["zmlmr",{"_index":2628,"title":{},"content":{"340":{"position":[[639,5]]}},"keywords":{}}],["zookeep",{"_index":1918,"title":{},"content":{"202":{"position":[[132,10]]},"212":{"position":[[96,9]]},"697":{"position":[[132,10]]},"707":{"position":[[96,9]]}},"keywords":{}}],["zoom",{"_index":1024,"title":{},"content":{"81":{"position":[[305,5]]},"588":{"position":[[190,5]]}},"keywords":{}}],["zxf",{"_index":3328,"title":{},"content":{"777":{"position":[[1443,3]]},"950":{"position":[[1470,3]]},"954":{"position":[[1868,3]]},"969":{"position":[[1505,3]]}},"keywords":{}}]],"pipeline":["stemmer","stemmer-de"]}
\ No newline at end of file
diff --git a/main.92db4fb0.js b/main.92db4fb0.js
new file mode 100644
index 0000000..d7de4bb
--- /dev/null
+++ b/main.92db4fb0.js
@@ -0,0 +1,2 @@
+/*! For license information please see main.92db4fb0.js.LICENSE.txt */
+(window.webpackJsonp=window.webpackJsonp||[]).push([[125],[function(e,t,n){"use strict";e.exports=n(39)},function(e,t,n){e.exports=n(43)()},function(e,t,n){"use strict";n.d(t,"a",(function(){return v})),n.d(t,"b",(function(){return w})),n.d(t,"c",(function(){return S})),n.d(t,"d",(function(){return _})),n.d(t,"e",(function(){return b})),n.d(t,"f",(function(){return I})),n.d(t,"g",(function(){return L})),n.d(t,"h",(function(){return g})),n.d(t,"i",(function(){return E})),n.d(t,"j",(function(){return C})),n.d(t,"k",(function(){return F})),n.d(t,"l",(function(){return z})),n.d(t,"m",(function(){return B})),n.d(t,"n",(function(){return U})),n.d(t,"o",(function(){return j}));var r=n(4),o=n(0),i=n.n(o),a=(n(1),n(6)),s=n(20),l=n(5),c=n(3),u=n(21),d=n.n(u),p=(n(27),n(7)),f=n(33),m=n.n(f),h=function(e){var t=Object(s.a)();return t.displayName=e,t}("Router-History"),g=function(e){var t=Object(s.a)();return t.displayName=e,t}("Router"),b=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={location:t.history.location},n._isMounted=!1,n._pendingLocation=null,t.staticContext||(n.unlisten=t.history.listen((function(e){n._isMounted?n.setState({location:e}):n._pendingLocation=e}))),n}Object(r.a)(t,e),t.computeRootMatch=function(e){return{path:"/",url:"/",params:{},isExact:"/"===e}};var n=t.prototype;return n.componentDidMount=function(){this._isMounted=!0,this._pendingLocation&&this.setState({location:this._pendingLocation})},n.componentWillUnmount=function(){this.unlisten&&this.unlisten()},n.render=function(){return i.a.createElement(g.Provider,{value:{history:this.props.history,location:this.state.location,match:t.computeRootMatch(this.state.location.pathname),staticContext:this.props.staticContext}},i.a.createElement(h.Provider,{children:this.props.children||null,value:this.props.history}))},t}(i.a.Component);var v=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];return(t=e.call.apply(e,[this].concat(r))||this).history=Object(a.d)(t.props),t}return Object(r.a)(t,e),t.prototype.render=function(){return i.a.createElement(b,{history:this.history,children:this.props.children})},t}(i.a.Component);var y=function(e){function t(){return e.apply(this,arguments)||this}Object(r.a)(t,e);var n=t.prototype;return n.componentDidMount=function(){this.props.onMount&&this.props.onMount.call(this,this)},n.componentDidUpdate=function(e){this.props.onUpdate&&this.props.onUpdate.call(this,this,e)},n.componentWillUnmount=function(){this.props.onUnmount&&this.props.onUnmount.call(this,this)},n.render=function(){return null},t}(i.a.Component);function w(e){var t=e.message,n=e.when,r=void 0===n||n;return i.a.createElement(g.Consumer,null,(function(e){if(e||Object(l.a)(!1),!r||e.staticContext)return null;var n=e.history.block;return i.a.createElement(y,{onMount:function(e){e.release=n(t)},onUpdate:function(e,r){r.message!==t&&(e.release(),e.release=n(t))},onUnmount:function(e){e.release()},message:t})}))}var k={},x=0;function E(e,t){return void 0===e&&(e="/"),void 0===t&&(t={}),"/"===e?e:function(e){if(k[e])return k[e];var t=d.a.compile(e);return x<1e4&&(k[e]=t,x++),t}(e)(t,{pretty:!0})}function S(e){var t=e.computedMatch,n=e.to,r=e.push,o=void 0!==r&&r;return i.a.createElement(g.Consumer,null,(function(e){e||Object(l.a)(!1);var r=e.history,s=e.staticContext,u=o?r.push:r.replace,d=Object(a.c)(t?"string"==typeof n?E(n,t.params):Object(c.a)({},n,{pathname:E(n.pathname,t.params)}):n);return s?(u(d),null):i.a.createElement(y,{onMount:function(){u(d)},onUpdate:function(e,t){var n=Object(a.c)(t.to);Object(a.f)(n,Object(c.a)({},d,{key:n.key}))||u(d)},to:n})}))}var T={},D=0;function C(e,t){void 0===t&&(t={}),("string"==typeof t||Array.isArray(t))&&(t={path:t});var n=t,r=n.path,o=n.exact,i=void 0!==o&&o,a=n.strict,s=void 0!==a&&a,l=n.sensitive,c=void 0!==l&&l;return[].concat(r).reduce((function(t,n){if(!n&&""!==n)return null;if(t)return t;var r=function(e,t){var n=""+t.end+t.strict+t.sensitive,r=T[n]||(T[n]={});if(r[e])return r[e];var o=[],i={regexp:d()(e,o,t),keys:o};return D<1e4&&(r[e]=i,D++),i}(n,{end:i,strict:s,sensitive:c}),o=r.regexp,a=r.keys,l=o.exec(e);if(!l)return null;var u=l[0],p=l.slice(1),f=e===u;return i&&!f?null:{path:n,url:"/"===n&&""===u?"/":u,isExact:f,params:a.reduce((function(e,t,n){return e[t.name]=p[n],e}),{})}}),null)}var _=function(e){function t(){return e.apply(this,arguments)||this}return Object(r.a)(t,e),t.prototype.render=function(){var e=this;return i.a.createElement(g.Consumer,null,(function(t){t||Object(l.a)(!1);var n=e.props.location||t.location,r=e.props.computedMatch?e.props.computedMatch:e.props.path?C(n.pathname,e.props):t.match,o=Object(c.a)({},t,{location:n,match:r}),a=e.props,s=a.children,u=a.component,d=a.render;return Array.isArray(s)&&0===s.length&&(s=null),i.a.createElement(g.Provider,{value:o},o.match?s?"function"==typeof s?s(o):s:u?i.a.createElement(u,o):d?d(o):null:"function"==typeof s?s(o):null)}))},t}(i.a.Component);function A(e){return"/"===e.charAt(0)?e:"/"+e}function O(e,t){if(!e)return t;var n=A(e);return 0!==t.pathname.indexOf(n)?t:Object(c.a)({},t,{pathname:t.pathname.substr(n.length)})}function R(e){return"string"==typeof e?e:Object(a.e)(e)}function P(e){return function(){Object(l.a)(!1)}}function N(){}var I=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];return(t=e.call.apply(e,[this].concat(r))||this).handlePush=function(e){return t.navigateTo(e,"PUSH")},t.handleReplace=function(e){return t.navigateTo(e,"REPLACE")},t.handleListen=function(){return N},t.handleBlock=function(){return N},t}Object(r.a)(t,e);var n=t.prototype;return n.navigateTo=function(e,t){var n=this.props,r=n.basename,o=void 0===r?"":r,i=n.context,s=void 0===i?{}:i;s.action=t,s.location=function(e,t){return e?Object(c.a)({},t,{pathname:A(e)+t.pathname}):t}(o,Object(a.c)(e)),s.url=R(s.location)},n.render=function(){var e=this.props,t=e.basename,n=void 0===t?"":t,r=e.context,o=void 0===r?{}:r,s=e.location,l=void 0===s?"/":s,u=Object(p.a)(e,["basename","context","location"]),d={createHref:function(e){return A(n+R(e))},action:"POP",location:O(n,Object(a.c)(l)),push:this.handlePush,replace:this.handleReplace,go:P(),goBack:P(),goForward:P(),listen:this.handleListen,block:this.handleBlock};return i.a.createElement(b,Object(c.a)({},u,{history:d,staticContext:o}))},t}(i.a.Component);var L=function(e){function t(){return e.apply(this,arguments)||this}return Object(r.a)(t,e),t.prototype.render=function(){var e=this;return i.a.createElement(g.Consumer,null,(function(t){t||Object(l.a)(!1);var n,r,o=e.props.location||t.location;return i.a.Children.forEach(e.props.children,(function(e){if(null==r&&i.a.isValidElement(e)){n=e;var a=e.props.path||e.props.from;r=a?C(o.pathname,Object(c.a)({},e.props,{path:a})):t.match}})),r?i.a.cloneElement(n,{location:o,computedMatch:r}):null}))},t}(i.a.Component);function j(e){var t="withRouter("+(e.displayName||e.name)+")",n=function(t){var n=t.wrappedComponentRef,r=Object(p.a)(t,["wrappedComponentRef"]);return i.a.createElement(g.Consumer,null,(function(t){return t||Object(l.a)(!1),i.a.createElement(e,Object(c.a)({},r,t,{ref:n}))}))};return n.displayName=t,n.WrappedComponent=e,m()(n,e)}var M=i.a.useContext;function F(){return M(h)}function z(){return M(g).location}function B(){var e=M(g).match;return e?e.params:{}}function U(e){var t=z(),n=M(g).match;return e?C(t.pathname,e):n}},function(e,t,n){"use strict";function r(){return(r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}n.d(t,"a",(function(){return r}))},function(e,t,n){"use strict";function r(e,t){return(r=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function o(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,r(e,t)}n.d(t,"a",(function(){return o}))},function(e,t,n){"use strict";var r="Invariant failed";t.a=function(e,t){if(!e)throw new Error(r)}},function(e,t,n){"use strict";n.d(t,"a",(function(){return E})),n.d(t,"b",(function(){return A})),n.d(t,"d",(function(){return R})),n.d(t,"c",(function(){return h})),n.d(t,"f",(function(){return g})),n.d(t,"e",(function(){return m}));var r=n(3);function o(e){return"/"===e.charAt(0)}function i(e,t){for(var n=t,r=n+1,o=e.length;r<o;n+=1,r+=1)e[n]=e[r];e.pop()}var a=function(e,t){void 0===t&&(t="");var n,r=e&&e.split("/")||[],a=t&&t.split("/")||[],s=e&&o(e),l=t&&o(t),c=s||l;if(e&&o(e)?a=r:r.length&&(a.pop(),a=a.concat(r)),!a.length)return"/";if(a.length){var u=a[a.length-1];n="."===u||".."===u||""===u}else n=!1;for(var d=0,p=a.length;p>=0;p--){var f=a[p];"."===f?i(a,p):".."===f?(i(a,p),d++):d&&(i(a,p),d--)}if(!c)for(;d--;d)a.unshift("..");!c||""===a[0]||a[0]&&o(a[0])||a.unshift("");var m=a.join("/");return n&&"/"!==m.substr(-1)&&(m+="/"),m};function s(e){return e.valueOf?e.valueOf():Object.prototype.valueOf.call(e)}var l=function e(t,n){if(t===n)return!0;if(null==t||null==n)return!1;if(Array.isArray(t))return Array.isArray(n)&&t.length===n.length&&t.every((function(t,r){return e(t,n[r])}));if("object"==typeof t||"object"==typeof n){var r=s(t),o=s(n);return r!==t||o!==n?e(r,o):Object.keys(Object.assign({},t,n)).every((function(r){return e(t[r],n[r])}))}return!1},c=n(5);function u(e){return"/"===e.charAt(0)?e:"/"+e}function d(e){return"/"===e.charAt(0)?e.substr(1):e}function p(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function f(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function m(e){var t=e.pathname,n=e.search,r=e.hash,o=t||"/";return n&&"?"!==n&&(o+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(o+="#"===r.charAt(0)?r:"#"+r),o}function h(e,t,n,o){var i;"string"==typeof e?(i=function(e){var t=e||"/",n="",r="",o=t.indexOf("#");-1!==o&&(r=t.substr(o),t=t.substr(0,o));var i=t.indexOf("?");return-1!==i&&(n=t.substr(i),t=t.substr(0,i)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e)).state=t:(void 0===(i=Object(r.a)({},e)).pathname&&(i.pathname=""),i.search?"?"!==i.search.charAt(0)&&(i.search="?"+i.search):i.search="",i.hash?"#"!==i.hash.charAt(0)&&(i.hash="#"+i.hash):i.hash="",void 0!==t&&void 0===i.state&&(i.state=t));try{i.pathname=decodeURI(i.pathname)}catch(s){throw s instanceof URIError?new URIError('Pathname "'+i.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):s}return n&&(i.key=n),o?i.pathname?"/"!==i.pathname.charAt(0)&&(i.pathname=a(i.pathname,o.pathname)):i.pathname=o.pathname:i.pathname||(i.pathname="/"),i}function g(e,t){return e.pathname===t.pathname&&e.search===t.search&&e.hash===t.hash&&e.key===t.key&&l(e.state,t.state)}function b(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,o){if(null!=e){var i="function"==typeof e?e(t,n):e;"string"==typeof i?"function"==typeof r?r(i,o):o(!0):o(!1!==i)}else o(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];t.forEach((function(e){return e.apply(void 0,n)}))}}}var v=!("undefined"==typeof window||!window.document||!window.document.createElement);function y(e,t){t(window.confirm(e))}var w="popstate",k="hashchange";function x(){try{return window.history.state||{}}catch(e){return{}}}function E(e){void 0===e&&(e={}),v||Object(c.a)(!1);var t,n=window.history,o=(-1===(t=window.navigator.userAgent).indexOf("Android 2.")&&-1===t.indexOf("Android 4.0")||-1===t.indexOf("Mobile Safari")||-1!==t.indexOf("Chrome")||-1!==t.indexOf("Windows Phone"))&&window.history&&"pushState"in window.history,i=!(-1===window.navigator.userAgent.indexOf("Trident")),a=e,s=a.forceRefresh,l=void 0!==s&&s,d=a.getUserConfirmation,g=void 0===d?y:d,E=a.keyLength,S=void 0===E?6:E,T=e.basename?f(u(e.basename)):"";function D(e){var t=e||{},n=t.key,r=t.state,o=window.location,i=o.pathname+o.search+o.hash;return T&&(i=p(i,T)),h(i,r,n)}function C(){return Math.random().toString(36).substr(2,S)}var _=b();function A(e){Object(r.a)(U,e),U.length=n.length,_.notifyListeners(U.location,U.action)}function O(e){(function(e){return void 0===e.state&&-1===navigator.userAgent.indexOf("CriOS")})(e)||N(D(e.state))}function R(){N(D(x()))}var P=!1;function N(e){if(P)P=!1,A();else{_.confirmTransitionTo(e,"POP",g,(function(t){t?A({action:"POP",location:e}):function(e){var t=U.location,n=L.indexOf(t.key);-1===n&&(n=0);var r=L.indexOf(e.key);-1===r&&(r=0);var o=n-r;o&&(P=!0,M(o))}(e)}))}}var I=D(x()),L=[I.key];function j(e){return T+m(e)}function M(e){n.go(e)}var F=0;function z(e){1===(F+=e)&&1===e?(window.addEventListener(w,O),i&&window.addEventListener(k,R)):0===F&&(window.removeEventListener(w,O),i&&window.removeEventListener(k,R))}var B=!1;var U={length:n.length,action:"POP",location:I,createHref:j,push:function(e,t){var r="PUSH",i=h(e,t,C(),U.location);_.confirmTransitionTo(i,r,g,(function(e){if(e){var t=j(i),a=i.key,s=i.state;if(o)if(n.pushState({key:a,state:s},null,t),l)window.location.href=t;else{var c=L.indexOf(U.location.key),u=L.slice(0,c+1);u.push(i.key),L=u,A({action:r,location:i})}else window.location.href=t}}))},replace:function(e,t){var r="REPLACE",i=h(e,t,C(),U.location);_.confirmTransitionTo(i,r,g,(function(e){if(e){var t=j(i),a=i.key,s=i.state;if(o)if(n.replaceState({key:a,state:s},null,t),l)window.location.replace(t);else{var c=L.indexOf(U.location.key);-1!==c&&(L[c]=i.key),A({action:r,location:i})}else window.location.replace(t)}}))},go:M,goBack:function(){M(-1)},goForward:function(){M(1)},block:function(e){void 0===e&&(e=!1);var t=_.setPrompt(e);return B||(z(1),B=!0),function(){return B&&(B=!1,z(-1)),t()}},listen:function(e){var t=_.appendListener(e);return z(1),function(){z(-1),t()}}};return U}var S="hashchange",T={hashbang:{encodePath:function(e){return"!"===e.charAt(0)?e:"!/"+d(e)},decodePath:function(e){return"!"===e.charAt(0)?e.substr(1):e}},noslash:{encodePath:d,decodePath:u},slash:{encodePath:u,decodePath:u}};function D(e){var t=e.indexOf("#");return-1===t?e:e.slice(0,t)}function C(){var e=window.location.href,t=e.indexOf("#");return-1===t?"":e.substring(t+1)}function _(e){window.location.replace(D(window.location.href)+"#"+e)}function A(e){void 0===e&&(e={}),v||Object(c.a)(!1);var t=window.history,n=(window.navigator.userAgent.indexOf("Firefox"),e),o=n.getUserConfirmation,i=void 0===o?y:o,a=n.hashType,s=void 0===a?"slash":a,l=e.basename?f(u(e.basename)):"",d=T[s],g=d.encodePath,w=d.decodePath;function k(){var e=w(C());return l&&(e=p(e,l)),h(e)}var x=b();function E(e){Object(r.a)(B,e),B.length=t.length,x.notifyListeners(B.location,B.action)}var A=!1,O=null;function R(){var e,t,n=C(),r=g(n);if(n!==r)_(r);else{var o=k(),a=B.location;if(!A&&(t=o,(e=a).pathname===t.pathname&&e.search===t.search&&e.hash===t.hash))return;if(O===m(o))return;O=null,function(e){if(A)A=!1,E();else{var t="POP";x.confirmTransitionTo(e,t,i,(function(n){n?E({action:t,location:e}):function(e){var t=B.location,n=L.lastIndexOf(m(t));-1===n&&(n=0);var r=L.lastIndexOf(m(e));-1===r&&(r=0);var o=n-r;o&&(A=!0,j(o))}(e)}))}}(o)}}var P=C(),N=g(P);P!==N&&_(N);var I=k(),L=[m(I)];function j(e){t.go(e)}var M=0;function F(e){1===(M+=e)&&1===e?window.addEventListener(S,R):0===M&&window.removeEventListener(S,R)}var z=!1;var B={length:t.length,action:"POP",location:I,createHref:function(e){var t=document.querySelector("base"),n="";return t&&t.getAttribute("href")&&(n=D(window.location.href)),n+"#"+g(l+m(e))},push:function(e,t){var n="PUSH",r=h(e,void 0,void 0,B.location);x.confirmTransitionTo(r,n,i,(function(e){if(e){var t=m(r),o=g(l+t);if(C()!==o){O=t,function(e){window.location.hash=e}(o);var i=L.lastIndexOf(m(B.location)),a=L.slice(0,i+1);a.push(t),L=a,E({action:n,location:r})}else E()}}))},replace:function(e,t){var n="REPLACE",r=h(e,void 0,void 0,B.location);x.confirmTransitionTo(r,n,i,(function(e){if(e){var t=m(r),o=g(l+t);C()!==o&&(O=t,_(o));var i=L.indexOf(m(B.location));-1!==i&&(L[i]=t),E({action:n,location:r})}}))},go:j,goBack:function(){j(-1)},goForward:function(){j(1)},block:function(e){void 0===e&&(e=!1);var t=x.setPrompt(e);return z||(F(1),z=!0),function(){return z&&(z=!1,F(-1)),t()}},listen:function(e){var t=x.appendListener(e);return F(1),function(){F(-1),t()}}};return B}function O(e,t,n){return Math.min(Math.max(e,t),n)}function R(e){void 0===e&&(e={});var t=e,n=t.getUserConfirmation,o=t.initialEntries,i=void 0===o?["/"]:o,a=t.initialIndex,s=void 0===a?0:a,l=t.keyLength,c=void 0===l?6:l,u=b();function d(e){Object(r.a)(w,e),w.length=w.entries.length,u.notifyListeners(w.location,w.action)}function p(){return Math.random().toString(36).substr(2,c)}var f=O(s,0,i.length-1),g=i.map((function(e){return h(e,void 0,"string"==typeof e?p():e.key||p())})),v=m;function y(e){var t=O(w.index+e,0,w.entries.length-1),r=w.entries[t];u.confirmTransitionTo(r,"POP",n,(function(e){e?d({action:"POP",location:r,index:t}):d()}))}var w={length:g.length,action:"POP",location:g[f],index:f,entries:g,createHref:v,push:function(e,t){var r="PUSH",o=h(e,t,p(),w.location);u.confirmTransitionTo(o,r,n,(function(e){if(e){var t=w.index+1,n=w.entries.slice(0);n.length>t?n.splice(t,n.length-t,o):n.push(o),d({action:r,location:o,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",o=h(e,t,p(),w.location);u.confirmTransitionTo(o,r,n,(function(e){e&&(w.entries[w.index]=o,d({action:r,location:o}))}))},go:y,goBack:function(){y(-1)},goForward:function(){y(1)},canGo:function(e){var t=w.index+e;return t>=0&&t<w.entries.length},block:function(e){return void 0===e&&(e=!1),u.setPrompt(e)},listen:function(e){return u.appendListener(e)}};return w}},function(e,t,n){"use strict";function r(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}n.d(t,"a",(function(){return r}))},function(e,t,n){"use strict";n.d(t,"a",(function(){return s})),n.d(t,"b",(function(){return l}));var r=n(2),o=n(3),i=n(0),a=n.n(i);function s(e,t,n){return void 0===n&&(n=[]),e.some((function(e){var o=e.path?Object(r.j)(t,e):n.length?n[n.length-1].match:r.e.computeRootMatch(t);return o&&(n.push({route:e,match:o}),e.routes&&s(e.routes,t,n)),o})),n}function l(e,t,n){return void 0===t&&(t={}),void 0===n&&(n={}),e?a.a.createElement(r.g,n,e.map((function(e,n){return a.a.createElement(r.d,{key:e.key||n,path:e.path,exact:e.exact,strict:e.strict,render:function(n){return e.render?e.render(Object(o.a)({},n,{},t,{route:e})):a.a.createElement(e.component,Object(o.a)({},n,t,{route:e}))}})}))):null}},function(e,t,n){"use strict";n.r(t),t.default={title:"Apache Submarine",tagline:"Cloud Native Machine Learning Platform",url:"https://submarine.apache.org/",baseUrl:"/",onBrokenLinks:"throw",onBrokenMarkdownLinks:"warn",favicon:"img/submarine.ico",organizationName:"apache",projectName:"submarine-site",themeConfig:{navbar:{title:"Apache Submarine",logo:{alt:"Apache Submarine Site Logo",src:"img/icons/128.png"},items:[{type:"doc",docId:"gettingStarted/quickstart",label:"Docs",position:"left",activeSidebarClassName:"navbar__link--active"},{type:"doc",docId:"api/environment",label:"API",position:"left",activeSidebarClassName:"navbar__link--active"},{type:"doc",docId:"download",label:"Download",position:"left",activeSidebarClassName:"navbar__link--active"},{type:"docsVersionDropdown",dropdownItemsAfter:[{to:"/versions",label:"All versions"}],dropdownActiveClassDisabled:!0,position:"right",dropdownItemsBefore:[]},{href:"https://github.com/apache/submarine",label:"GitHub",position:"right"},{label:"Apache",position:"right",items:[{label:"Apache Software Foundation",href:"https://www.apache.org/foundation/how-it-works.html"},{label:"Events",href:"https://www.apache.org/events/current-event"},{label:"Apache License",href:"https://www.apache.org/licenses/"},{label:"Thanks",href:"https://www.apache.org/foundation/thanks.html"},{label:"Security",href:"https://www.apache.org/security/"},{label:"Sponsorship",href:"https://www.apache.org/foundation/sponsorship.html"}]}],hideOnScroll:!1},footer:{style:"dark",logo:{alt:"Apache Open Source Logo",src:"https://hadoop.apache.org/asf_logo_wide.png",href:"https://www.apache.org/"},links:[{title:"Docs",items:[{label:"Getting Started",to:"docs/gettingStarted/quickstart"},{label:"API docs",to:"docs/api/environment"}]},{title:"Community",items:[{label:"Stack Overflow",href:"https://stackoverflow.com/questions/tagged/apache-submarine"},{label:"Slack",href:"https://s.apache.org/slack-invite"}]},{title:"More",items:[{label:"Blog",to:"https://medium.com/@apache.submarine"},{label:"GitHub",href:"https://github.com/apache/submarine"}]}],copyright:"Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are\n       either registered trademarks or trademarks of the Apache Software Foundation in the United States and other\n        countries.<br> Copyright \xa9 2022 Apache Submarine is Apache2 Licensed software."},colorMode:{defaultMode:"light",disableSwitch:!1,respectPrefersColorScheme:!1,switchConfig:{darkIcon:"\ud83c\udf1c",darkIconStyle:{},lightIcon:"\ud83c\udf1e",lightIconStyle:{}}},docs:{versionPersistence:"localStorage"},metadatas:[],prism:{additionalLanguages:[]},hideableSidebar:!1},presets:[["@docusaurus/preset-classic",{docs:{sidebarPath:"/home/runner/work/submarine/submarine/website/sidebars.js",editUrl:"https://github.com/apache/submarine/edit/master/website/",versions:{current:{label:"master \ud83c\udfc3"}}},theme:{customCss:"/home/runner/work/submarine/submarine/website/src/css/custom.css"}}]],plugins:[["/home/runner/work/submarine/submarine/website/node_modules/docusaurus-lunr-search/src/index.js",{languages:["en","de"]}]],baseUrlIssueBanner:!0,i18n:{defaultLocale:"en",locales:["en"],localeConfigs:{}},onDuplicateRoutes:"warn",customFields:{},themes:[],titleDelimiter:"|",noIndex:!1}},function(e,t,n){"use strict";n.d(t,"a",(function(){return d})),n.d(t,"b",(function(){return p})),n.d(t,"c",(function(){return v})),n.d(t,"e",(function(){return k}));var r=n(2);n.d(t,"d",(function(){return r.a})),n.d(t,"f",(function(){return r.b})),n.d(t,"g",(function(){return r.c})),n.d(t,"h",(function(){return r.d})),n.d(t,"i",(function(){return r.e})),n.d(t,"j",(function(){return r.f})),n.d(t,"k",(function(){return r.g})),n.d(t,"l",(function(){return r.i})),n.d(t,"m",(function(){return r.j})),n.d(t,"n",(function(){return r.k})),n.d(t,"o",(function(){return r.l})),n.d(t,"p",(function(){return r.m})),n.d(t,"q",(function(){return r.n})),n.d(t,"r",(function(){return r.o}));var o=n(4),i=n(0),a=n.n(i),s=n(6),l=(n(1),n(3)),c=n(7),u=n(5),d=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];return(t=e.call.apply(e,[this].concat(r))||this).history=Object(s.a)(t.props),t}return Object(o.a)(t,e),t.prototype.render=function(){return a.a.createElement(r.e,{history:this.history,children:this.props.children})},t}(a.a.Component);var p=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];return(t=e.call.apply(e,[this].concat(r))||this).history=Object(s.b)(t.props),t}return Object(o.a)(t,e),t.prototype.render=function(){return a.a.createElement(r.e,{history:this.history,children:this.props.children})},t}(a.a.Component);var f=function(e,t){return"function"==typeof e?e(t):e},m=function(e,t){return"string"==typeof e?Object(s.c)(e,null,null,t):e},h=function(e){return e},g=a.a.forwardRef;void 0===g&&(g=h);var b=g((function(e,t){var n=e.innerRef,r=e.navigate,o=e.onClick,i=Object(c.a)(e,["innerRef","navigate","onClick"]),s=i.target,u=Object(l.a)({},i,{onClick:function(e){try{o&&o(e)}catch(t){throw e.preventDefault(),t}e.defaultPrevented||0!==e.button||s&&"_self"!==s||function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}(e)||(e.preventDefault(),r())}});return u.ref=h!==g&&t||n,a.a.createElement("a",u)}));var v=g((function(e,t){var n=e.component,o=void 0===n?b:n,i=e.replace,s=e.to,d=e.innerRef,p=Object(c.a)(e,["component","replace","to","innerRef"]);return a.a.createElement(r.h.Consumer,null,(function(e){e||Object(u.a)(!1);var n=e.history,r=m(f(s,e.location),e.location),c=r?n.createHref(r):"",b=Object(l.a)({},p,{href:c,navigate:function(){var t=f(s,e.location);(i?n.replace:n.push)(t)}});return h!==g?b.ref=t||d:b.innerRef=d,a.a.createElement(o,b)}))})),y=function(e){return e},w=a.a.forwardRef;void 0===w&&(w=y);var k=w((function(e,t){var n=e["aria-current"],o=void 0===n?"page":n,i=e.activeClassName,s=void 0===i?"active":i,d=e.activeStyle,p=e.className,h=e.exact,g=e.isActive,b=e.location,k=e.sensitive,x=e.strict,E=e.style,S=e.to,T=e.innerRef,D=Object(c.a)(e,["aria-current","activeClassName","activeStyle","className","exact","isActive","location","sensitive","strict","style","to","innerRef"]);return a.a.createElement(r.h.Consumer,null,(function(e){e||Object(u.a)(!1);var n=b||e.location,i=m(f(S,n),n),c=i.pathname,C=c&&c.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1"),_=C?Object(r.j)(n.pathname,{path:C,exact:h,sensitive:k,strict:x}):null,A=!!(g?g(_,n):_),O=A?function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.filter((function(e){return e})).join(" ")}(p,s):p,R=A?Object(l.a)({},E,{},d):E,P=Object(l.a)({"aria-current":A&&o||null,className:O,style:R,to:i},D);return y!==w?P.ref=t||T:P.innerRef=T,a.a.createElement(v,P)}))}))},function(e,t,n){"use strict";var r=!("undefined"==typeof window||!window.document||!window.document.createElement),o={canUseDOM:r,canUseEventListeners:r&&!(!window.addEventListener&&!window.attachEvent),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&!!window.screen};t.a=o},function(e,t,n){"use strict";var r=Object.getOwnPropertySymbols,o=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable;function a(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(o){return!1}}()?Object.assign:function(e,t){for(var n,s,l=a(e),c=1;c<arguments.length;c++){for(var u in n=Object(arguments[c]))o.call(n,u)&&(l[u]=n[u]);if(r){s=r(n);for(var d=0;d<s.length;d++)i.call(n,s[d])&&(l[s[d]]=n[s[d]])}}return l}},function(e){e.exports=JSON.parse('{"/-deb":{"component":"c4f5d8e4","config":"5e9f5e1a"},"/releases/submarine-release-0.2.0-cb0":{"component":"1f391b9e","content":"cdfb3821"},"/releases/submarine-release-0.3.0-a74":{"component":"1f391b9e","content":"3315d736"},"/releases/submarine-release-0.4.0-12e":{"component":"1f391b9e","content":"e9f77c1e"},"/releases/submarine-release-0.5.0-388":{"component":"1f391b9e","content":"be5f9a0f"},"/releases/submarine-release-0.6.0-091":{"component":"1f391b9e","content":"dd728e8e"},"/versions-b27":{"component":"18b93cb3","config":"5e9f5e1a"},"/docs/next-5e9":{"component":"1be78505","versionMetadata":"935f2afb"},"/docs/next/-335":{"component":"17896441","content":"c18d5a16"},"/docs/next/api/environment-a53":{"component":"17896441","content":"2f44017d"},"/docs/next/api/experiment-2a2":{"component":"17896441","content":"80453470"},"/docs/next/api/experiment-template-f8c":{"component":"17896441","content":"4726afa6"},"/docs/next/api/model-version-251":{"component":"17896441","content":"89982a88"},"/docs/next/api/notebook-b86":{"component":"17896441","content":"a0524152"},"/docs/next/api/registered-model-a88":{"component":"17896441","content":"f0df3a58"},"/docs/next/api/serve-2cb":{"component":"17896441","content":"3af95f13"},"/docs/next/community/Bylaws-232":{"component":"17896441","content":"2d4ab289"},"/docs/next/community/contributing-ac1":{"component":"17896441","content":"61cc1a3d"},"/docs/next/community/HowToBecomeCommitter-a0e":{"component":"17896441","content":"c86e1739"},"/docs/next/community/HowToCommit-bea":{"component":"17896441","content":"a5ca038b"},"/docs/next/community/HowToVoteCommitterOrPMC-524":{"component":"17896441","content":"a57e1c0a"},"/docs/next/community/README-ede":{"component":"17896441","content":"bf894ff2"},"/docs/next/designDocs/architecture-and-requirements-cf2":{"component":"17896441","content":"e3af4e10"},"/docs/next/designDocs/environments-implementation-3ef":{"component":"17896441","content":"a7e506f8"},"/docs/next/designDocs/experiment-implementation-02a":{"component":"17896441","content":"cbf00e67"},"/docs/next/designDocs/implementation-notes-077":{"component":"17896441","content":"63f0eece"},"/docs/next/designDocs/notebook-implementation-fec":{"component":"17896441","content":"7fd88130"},"/docs/next/designDocs/storage-implementation-bc7":{"component":"17896441","content":"a5eec98c"},"/docs/next/designDocs/submarine-server/architecture-bc3":{"component":"17896441","content":"ada24b13"},"/docs/next/designDocs/submarine-server/experimentSpec-251":{"component":"17896441","content":"40951386"},"/docs/next/designDocs/wip-designs/security-implementation-4d5":{"component":"17896441","content":"6df4a83b"},"/docs/next/designDocs/wip-designs/submarine-clusterServer-d0c":{"component":"17896441","content":"b60f7df5"},"/docs/next/designDocs/wip-designs/submarine-launcher-75e":{"component":"17896441","content":"817286e8"},"/docs/next/devDocs/BuildFromCode-52d":{"component":"17896441","content":"97b312ed"},"/docs/next/devDocs/Dependencies-5eb":{"component":"17896441","content":"72f8d982"},"/docs/next/devDocs/Development-75d":{"component":"17896441","content":"897bc7ae"},"/docs/next/devDocs/HowToRelease-ab2":{"component":"17896441","content":"e2e9fab8"},"/docs/next/devDocs/HowToVerify-b21":{"component":"17896441","content":"6e852da3"},"/docs/next/devDocs/IntegrationTestE2E-6ca":{"component":"17896441","content":"b9b5b6b9"},"/docs/next/devDocs/IntegrationTestK8s-7d7":{"component":"17896441","content":"b3da5595"},"/docs/next/devDocs/README-ed9":{"component":"17896441","content":"ee8d19c0"},"/docs/next/download-bed":{"component":"17896441","content":"f9e23376"},"/docs/next/gettingStarted/helm-feb":{"component":"17896441","content":"11fdf8a8"},"/docs/next/gettingStarted/kind-13f":{"component":"17896441","content":"4f73ab67"},"/docs/next/gettingStarted/notebook-24d":{"component":"17896441","content":"ed46a2dd"},"/docs/next/gettingStarted/python-sdk-003":{"component":"17896441","content":"0c952090"},"/docs/next/gettingStarted/quickstart-43a":{"component":"17896441","content":"5f825119"},"/docs/next/userDocs/api/environment-d31":{"component":"17896441","content":"22e91045"},"/docs/next/userDocs/api/experiment-f1f":{"component":"17896441","content":"11695589"},"/docs/next/userDocs/api/experiment-template-826":{"component":"17896441","content":"a4535337"},"/docs/next/userDocs/api/notebook-d81":{"component":"17896441","content":"be249313"},"/docs/next/userDocs/others/mlflow-9fe":{"component":"17896441","content":"82a4a2ce"},"/docs/next/userDocs/others/tensorboard-611":{"component":"17896441","content":"1dbe41c3"},"/docs/next/userDocs/submarine-sdk/experiment-client-5ba":{"component":"17896441","content":"0581431b"},"/docs/next/userDocs/submarine-sdk/pysubmarine/development-33c":{"component":"17896441","content":"cfa5b027"},"/docs/next/userDocs/submarine-sdk/README-d46":{"component":"17896441","content":"54b0b691"},"/docs/next/userDocs/submarine-sdk/submarine-cli-e63":{"component":"17896441","content":"59e7e97e"},"/docs/next/userDocs/submarine-sdk/tracking-0ea":{"component":"17896441","content":"a49341a2"},"/docs-6ba":{"component":"1be78505","versionMetadata":"58f10d9f"},"/docs/-815":{"component":"17896441","content":"35de792d"},"/docs/adminDocs/yarn/README-bd9":{"component":"17896441","content":"eb4979b3"},"/docs/adminDocs/yarn/TestAndTroubleshooting-fa3":{"component":"17896441","content":"a2231a2b"},"/docs/adminDocs/yarn/workbench/HowToRun-f2f":{"component":"17896441","content":"5f165a74"},"/docs/adminDocs/yarn/workbench/notebook/setup-jupyter-240":{"component":"17896441","content":"c28aed56"},"/docs/adminDocs/yarn/workbench/README-a05":{"component":"17896441","content":"ab5e246a"},"/docs/adminDocs/yarn/workbench/README.zh-CN-1c2":{"component":"17896441","content":"6088480f"},"/docs/api/environment-834":{"component":"17896441","content":"55d1900a"},"/docs/api/experiment-a93":{"component":"17896441","content":"f1c2161d"},"/docs/api/experiment-template-14e":{"component":"17896441","content":"f6956115"},"/docs/api/notebook-0bb":{"component":"17896441","content":"43326f7a"},"/docs/community/contributing-585":{"component":"17896441","content":"a658e4e7"},"/docs/community/HowToCommit-096":{"component":"17896441","content":"abb6be53"},"/docs/community/README-06d":{"component":"17896441","content":"cf824c09"},"/docs/designDocs/architecture-and-requirements-75a":{"component":"17896441","content":"ae045997"},"/docs/designDocs/environments-implementation-bef":{"component":"17896441","content":"876793d7"},"/docs/designDocs/experiment-implementation-492":{"component":"17896441","content":"6aa1aeb0"},"/docs/designDocs/implementation-notes-c55":{"component":"17896441","content":"9e593273"},"/docs/designDocs/notebook-implementation-a2a":{"component":"17896441","content":"31b2a22b"},"/docs/designDocs/storage-implementation-c89":{"component":"17896441","content":"538541c1"},"/docs/designDocs/submarine-server/architecture-14a":{"component":"17896441","content":"710c49d3"},"/docs/designDocs/submarine-server/experimentSpec-cd9":{"component":"17896441","content":"ef17f2ad"},"/docs/designDocs/wip-designs/security-implementation-71f":{"component":"17896441","content":"5065a48c"},"/docs/designDocs/wip-designs/submarine-clusterServer-345":{"component":"17896441","content":"7f965783"},"/docs/designDocs/wip-designs/submarine-launcher-25f":{"component":"17896441","content":"f8f6d32b"},"/docs/devDocs/BuildFromCode-ade":{"component":"17896441","content":"d46271b0"},"/docs/devDocs/Dependencies-c95":{"component":"17896441","content":"3593fe0f"},"/docs/devDocs/Development-131":{"component":"17896441","content":"cce3422b"},"/docs/devDocs/IntegrationTestE2E-f8c":{"component":"17896441","content":"31912795"},"/docs/devDocs/IntegrationTestK8s-a9a":{"component":"17896441","content":"446ff6dc"},"/docs/devDocs/README-899":{"component":"17896441","content":"fa8b9269"},"/docs/download-3b7":{"component":"17896441","content":"c5a80c58"},"/docs/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs-651":{"component":"17896441","content":"a86c7af5"},"/docs/ecosystem/kaldi/WriteDockerfileKaldi-a1c":{"component":"17896441","content":"85b50ba6"},"/docs/gettingStarted/helm-e96":{"component":"17896441","content":"0bc74cd0"},"/docs/gettingStarted/kind-6b5":{"component":"17896441","content":"66ca1d53"},"/docs/gettingStarted/notebook-a7b":{"component":"17896441","content":"f2cef85d"},"/docs/gettingStarted/python-sdk-cff":{"component":"17896441","content":"6a132804"},"/docs/gettingStarted/quickstart-703":{"component":"17896441","content":"a9744973"},"/docs/userDocs/api/environment-641":{"component":"17896441","content":"5e036026"},"/docs/userDocs/api/experiment-6d3":{"component":"17896441","content":"73bafbdc"},"/docs/userDocs/api/experiment-template-431":{"component":"17896441","content":"0e4b5d7a"},"/docs/userDocs/api/notebook-620":{"component":"17896441","content":"cd51f9ed"},"/docs/userDocs/others/mlflow-ced":{"component":"17896441","content":"10dc6c9a"},"/docs/userDocs/others/tensorboard-17e":{"component":"17896441","content":"76720dd8"},"/docs/userDocs/submarine-sdk/experiment-client-647":{"component":"17896441","content":"fc109cd1"},"/docs/userDocs/submarine-sdk/model-client-5e2":{"component":"17896441","content":"a8c4e132"},"/docs/userDocs/submarine-sdk/pysubmarine/development-35e":{"component":"17896441","content":"fe5a2634"},"/docs/userDocs/submarine-sdk/README-0e5":{"component":"17896441","content":"e235d551"},"/docs/userDocs/submarine-sdk/tracking-077":{"component":"17896441","content":"2bab9bf0"},"/docs/userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin-668":{"component":"17896441","content":"5de1a2b0"},"/docs/userDocs/submarine-security/spark-security/README-e82":{"component":"17896441","content":"d2a03af7"},"/docs/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README-7a1":{"component":"17896441","content":"ab130550"},"/docs/userDocs/yarn/Dockerfiles-7a6":{"component":"17896441","content":"0b49bfb5"},"/docs/userDocs/yarn/TestAndTroubleshooting-e16":{"component":"17896441","content":"380d7376"},"/docs/userDocs/yarn/WriteDockerfileMX-f52":{"component":"17896441","content":"cbc53c13"},"/docs/userDocs/yarn/WriteDockerfilePT-054":{"component":"17896441","content":"51b2b2c4"},"/docs/userDocs/yarn/WriteDockerfileTF-571":{"component":"17896441","content":"781c7eda"},"/docs/userDocs/yarn/YARNRuntimeGuide-f3a":{"component":"17896441","content":"27f12fe0"}}')},function(e,t,n){"use strict";var r=n(0),o=n.n(r);t.a=o.a.createContext(null)},function(e,t,n){var r,o;void 0===(o="function"==typeof(r=function(){var e,t,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'<div class="bar" role="bar"><div class="peg"></div></div><div class="spinner" role="spinner"><div class="spinner-icon"></div></div>'};function o(e,t,n){return e<t?t:e>n?n:e}function i(e){return 100*(-1+e)}function a(e,t,n){var o;return(o="translate3d"===r.positionUsing?{transform:"translate3d("+i(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+i(e)+"%,0)"}:{"margin-left":i(e)+"%"}).transition="all "+t+"ms "+n,o}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=o(e,r.minimum,1),n.status=1===e?null:e;var i=n.render(!t),c=i.querySelector(r.barSelector),u=r.speed,d=r.easing;return i.offsetWidth,s((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),l(c,a(e,u,d)),1===e?(l(i,{transition:"none",opacity:1}),i.offsetWidth,setTimeout((function(){l(i,{transition:"all "+u+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),u)}),u)):setTimeout(t,u)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*o(Math.random()*t,.1,.95)),t=o(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");u(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var o,a=t.querySelector(r.barSelector),s=e?"-100":i(n.status||0),c=document.querySelector(r.parent);return l(a,{transition:"all 0 linear",transform:"translate3d("+s+"%,0,0)"}),r.showSpinner||(o=t.querySelector(r.spinnerSelector))&&f(o),c!=document.body&&u(c,"nprogress-custom-parent"),c.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&f(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var s=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),l=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()}))}function r(t){var n=document.body.style;if(t in n)return t;for(var r,o=e.length,i=t.charAt(0).toUpperCase()+t.slice(1);o--;)if((r=e[o]+i)in n)return r;return t}function o(e){return e=n(e),t[e]||(t[e]=r(e))}function i(e,t,n){t=o(t),e.style[t]=n}return function(e,t){var n,r,o=arguments;if(2==o.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&i(e,n,r);else i(e,o[1],o[2])}}();function c(e,t){return("string"==typeof e?e:p(e)).indexOf(" "+t+" ")>=0}function u(e,t){var n=p(e),r=n+t;c(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=p(e);c(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function p(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function f(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n})?r.call(t,n,t,e):r)||(e.exports=o)},,,function(e,t,n){var r={"./":48};function o(e){var t=i(e);return n(t)}function i(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}o.keys=function(){return Object.keys(r)},o.resolve=i,e.exports=o,o.id=18},function(e,t,n){"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var s=n(0),l=n(1),c=[],u=[];function d(e){var t=e(),n={loading:!0,loaded:null,error:null};return n.promise=t.then((function(e){return n.loading=!1,n.loaded=e,e})).catch((function(e){throw n.loading=!1,n.error=e,e})),n}function p(e){var t={loading:!1,loaded:{},error:null},n=[];try{Object.keys(e).forEach((function(r){var o=d(e[r]);o.loading?t.loading=!0:(t.loaded[r]=o.loaded,t.error=o.error),n.push(o.promise),o.promise.then((function(e){t.loaded[r]=e})).catch((function(e){t.error=e}))}))}catch(r){t.error=r}return t.promise=Promise.all(n).then((function(e){return t.loading=!1,e})).catch((function(e){throw t.loading=!1,e})),t}function f(e,t){return s.createElement((n=e)&&n.__esModule?n.default:n,t);var n}function m(e,t){var d,p;if(!t.loading)throw new Error("react-loadable requires a `loading` component");var m=Object.assign({loader:null,loading:null,delay:200,timeout:null,render:f,webpack:null,modules:null},t),h=null;function g(){return h||(h=e(m.loader)),h.promise}return c.push(g),"function"==typeof m.webpack&&u.push((function(){if(e=m.webpack,"object"===r(n.m)&&e().every((function(e){return void 0!==e&&void 0!==n.m[e]})))return g();var e})),p=d=function(t){function n(r){o(this,n);var a=i(this,t.call(this,r));return a.retry=function(){a.setState({error:null,loading:!0,timedOut:!1}),h=e(m.loader),a._loadModule()},g(),a.state={error:h.error,pastDelay:!1,timedOut:!1,loading:h.loading,loaded:h.loaded},a}return a(n,t),n.preload=function(){return g()},n.prototype.componentWillMount=function(){this._mounted=!0,this._loadModule()},n.prototype._loadModule=function(){var e=this;if(this.context.loadable&&Array.isArray(m.modules)&&m.modules.forEach((function(t){e.context.loadable.report(t)})),h.loading){"number"==typeof m.delay&&(0===m.delay?this.setState({pastDelay:!0}):this._delay=setTimeout((function(){e.setState({pastDelay:!0})}),m.delay)),"number"==typeof m.timeout&&(this._timeout=setTimeout((function(){e.setState({timedOut:!0})}),m.timeout));var t=function(){e._mounted&&(e.setState({error:h.error,loaded:h.loaded,loading:h.loading}),e._clearTimeouts())};h.promise.then((function(){t()})).catch((function(e){t()}))}},n.prototype.componentWillUnmount=function(){this._mounted=!1,this._clearTimeouts()},n.prototype._clearTimeouts=function(){clearTimeout(this._delay),clearTimeout(this._timeout)},n.prototype.render=function(){return this.state.loading||this.state.error?s.createElement(m.loading,{isLoading:this.state.loading,pastDelay:this.state.pastDelay,timedOut:this.state.timedOut,error:this.state.error,retry:this.retry}):this.state.loaded?m.render(this.state.loaded,this.props):null},n}(s.Component),d.contextTypes={loadable:l.shape({report:l.func.isRequired})},p}function h(e){return m(d,e)}h.Map=function(e){if("function"!=typeof e.render)throw new Error("LoadableMap requires a `render(loaded, props)` function");return m(p,e)};var g=function(e){function t(){return o(this,t),i(this,e.apply(this,arguments))}return a(t,e),t.prototype.getChildContext=function(){return{loadable:{report:this.props.report}}},t.prototype.render=function(){return s.Children.only(this.props.children)},t}(s.Component);function b(e){for(var t=[];e.length;){var n=e.pop();t.push(n())}return Promise.all(t).then((function(){if(e.length)return b(e)}))}g.propTypes={report:l.func.isRequired},g.childContextTypes={loadable:l.shape({report:l.func.isRequired}).isRequired},h.Capture=g,h.preloadAll=function(){return new Promise((function(e,t){b(c).then(e,t)}))},h.preloadReady=function(){return new Promise((function(e,t){b(u).then(e,e)}))},e.exports=h},function(e,t,n){"use strict";(function(e){var r=n(0),o=n.n(r),i=n(4),a=n(1),s=n.n(a),l=1073741823,c="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==e?e:{};function u(e){var t=[];return{on:function(e){t.push(e)},off:function(e){t=t.filter((function(t){return t!==e}))},get:function(){return e},set:function(n,r){e=n,t.forEach((function(t){return t(e,r)}))}}}var d=o.a.createContext||function(e,t){var n,o,a,d="__create-react-context-"+((c[a="__global_unique_id__"]=(c[a]||0)+1)+"__"),p=function(e){function n(){var t;return(t=e.apply(this,arguments)||this).emitter=u(t.props.value),t}Object(i.a)(n,e);var r=n.prototype;return r.getChildContext=function(){var e;return(e={})[d]=this.emitter,e},r.componentWillReceiveProps=function(e){if(this.props.value!==e.value){var n,r=this.props.value,o=e.value;((i=r)===(a=o)?0!==i||1/i==1/a:i!=i&&a!=a)?n=0:(n="function"==typeof t?t(r,o):l,0!==(n|=0)&&this.emitter.set(e.value,n))}var i,a},r.render=function(){return this.props.children},n}(r.Component);p.childContextTypes=((n={})[d]=s.a.object.isRequired,n);var f=function(t){function n(){var e;return(e=t.apply(this,arguments)||this).state={value:e.getValue()},e.onUpdate=function(t,n){0!=((0|e.observedBits)&n)&&e.setState({value:e.getValue()})},e}Object(i.a)(n,t);var r=n.prototype;return r.componentWillReceiveProps=function(e){var t=e.observedBits;this.observedBits=null==t?l:t},r.componentDidMount=function(){this.context[d]&&this.context[d].on(this.onUpdate);var e=this.props.observedBits;this.observedBits=null==e?l:e},r.componentWillUnmount=function(){this.context[d]&&this.context[d].off(this.onUpdate)},r.getValue=function(){return this.context[d]?this.context[d].get():e},r.render=function(){return(e=this.props.children,Array.isArray(e)?e[0]:e)(this.state.value);var e},n}(r.Component);return f.contextTypes=((o={})[d]=s.a.object,o),{Provider:p,Consumer:f}};t.a=d}).call(this,n(24))},function(e,t,n){var r=n(45);e.exports=f,e.exports.parse=i,e.exports.compile=function(e,t){return s(i(e,t),t)},e.exports.tokensToFunction=s,e.exports.tokensToRegExp=p;var o=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function i(e,t){for(var n,r=[],i=0,a=0,s="",u=t&&t.delimiter||"/";null!=(n=o.exec(e));){var d=n[0],p=n[1],f=n.index;if(s+=e.slice(a,f),a=f+d.length,p)s+=p[1];else{var m=e[a],h=n[2],g=n[3],b=n[4],v=n[5],y=n[6],w=n[7];s&&(r.push(s),s="");var k=null!=h&&null!=m&&m!==h,x="+"===y||"*"===y,E="?"===y||"*"===y,S=n[2]||u,T=b||v;r.push({name:g||i++,prefix:h||"",delimiter:S,optional:E,repeat:x,partial:k,asterisk:!!w,pattern:T?c(T):w?".*":"[^"+l(S)+"]+?"})}}return a<e.length&&(s+=e.substr(a)),s&&r.push(s),r}function a(e){return encodeURI(e).replace(/[\/?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}))}function s(e,t){for(var n=new Array(e.length),o=0;o<e.length;o++)"object"==typeof e[o]&&(n[o]=new RegExp("^(?:"+e[o].pattern+")$",d(t)));return function(t,o){for(var i="",s=t||{},l=(o||{}).pretty?a:encodeURIComponent,c=0;c<e.length;c++){var u=e[c];if("string"!=typeof u){var d,p=s[u.name];if(null==p){if(u.optional){u.partial&&(i+=u.prefix);continue}throw new TypeError('Expected "'+u.name+'" to be defined')}if(r(p)){if(!u.repeat)throw new TypeError('Expected "'+u.name+'" to not repeat, but received `'+JSON.stringify(p)+"`");if(0===p.length){if(u.optional)continue;throw new TypeError('Expected "'+u.name+'" to not be empty')}for(var f=0;f<p.length;f++){if(d=l(p[f]),!n[c].test(d))throw new TypeError('Expected all "'+u.name+'" to match "'+u.pattern+'", but received `'+JSON.stringify(d)+"`");i+=(0===f?u.prefix:u.delimiter)+d}}else{if(d=u.asterisk?encodeURI(p).replace(/[?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})):l(p),!n[c].test(d))throw new TypeError('Expected "'+u.name+'" to match "'+u.pattern+'", but received "'+d+'"');i+=u.prefix+d}}else i+=u}return i}}function l(e){return e.replace(/([.+*?=^!:${}()[\]|\/\\])/g,"\\$1")}function c(e){return e.replace(/([=!:$\/()])/g,"\\$1")}function u(e,t){return e.keys=t,e}function d(e){return e&&e.sensitive?"":"i"}function p(e,t,n){r(t)||(n=t||n,t=[]);for(var o=(n=n||{}).strict,i=!1!==n.end,a="",s=0;s<e.length;s++){var c=e[s];if("string"==typeof c)a+=l(c);else{var p=l(c.prefix),f="(?:"+c.pattern+")";t.push(c),c.repeat&&(f+="(?:"+p+f+")*"),a+=f=c.optional?c.partial?p+"("+f+")?":"(?:"+p+"("+f+"))?":p+"("+f+")"}}var m=l(n.delimiter||"/"),h=a.slice(-m.length)===m;return o||(a=(h?a.slice(0,-m.length):a)+"(?:"+m+"(?=$))?"),a+=i?"$":o&&h?"":"(?="+m+"|$)",u(new RegExp("^"+a,d(n)),t)}function f(e,t,n){return r(t)||(n=t||n,t=[]),n=n||{},e instanceof RegExp?function(e,t){var n=e.source.match(/\((?!\?)/g);if(n)for(var r=0;r<n.length;r++)t.push({name:r,prefix:null,delimiter:null,optional:!1,repeat:!1,partial:!1,asterisk:!1,pattern:null});return u(e,t)}(e,t):r(e)?function(e,t,n){for(var r=[],o=0;o<e.length;o++)r.push(f(e[o],t,n).source);return u(new RegExp("(?:"+r.join("|")+")",d(n)),t)}(e,t,n):function(e,t,n){return p(i(e,n),t,n)}(e,t,n)}},function(e,t,n){"use strict";n.r(t);var r=n(0),o=n(14);t.default=function(){var e=Object(r.useContext)(o.a);if(null===e)throw new Error("Docusaurus context not provided");return e}},function(e,t,n){"use strict";var r,o,i,a=(r=0,o={util:{encode:function(e){return e instanceof i?new i(e.type,o.util.encode(e.content),e.alias):"Array"===o.util.type(e)?e.map(o.util.encode):e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/\u00a0/g," ")},type:function(e){return Object.prototype.toString.call(e).match(/\[object (\w+)\]/)[1]},objId:function(e){return e.__id||Object.defineProperty(e,"__id",{value:++r}),e.__id},clone:function(e,t){var n=o.util.type(e);switch(t=t||{},n){case"Object":if(t[o.util.objId(e)])return t[o.util.objId(e)];var r={};for(var i in t[o.util.objId(e)]=r,e)e.hasOwnProperty(i)&&(r[i]=o.util.clone(e[i],t));return r;case"Array":return t[o.util.objId(e)]?t[o.util.objId(e)]:(r=[],t[o.util.objId(e)]=r,e.forEach((function(e,n){r[n]=o.util.clone(e,t)})),r)}return e}},languages:{extend:function(e,t){var n=o.util.clone(o.languages[e]);for(var r in t)n[r]=t[r];return n},insertBefore:function(e,t,n,r){var i=(r=r||o.languages)[e];if(2==arguments.length){for(var a in n=arguments[1])n.hasOwnProperty(a)&&(i[a]=n[a]);return i}var s={};for(var l in i)if(i.hasOwnProperty(l)){if(l==t)for(var a in n)n.hasOwnProperty(a)&&(s[a]=n[a]);s[l]=i[l]}return o.languages.DFS(o.languages,(function(t,n){n===r[e]&&t!=e&&(this[t]=s)})),r[e]=s},DFS:function(e,t,n,r){for(var i in r=r||{},e)e.hasOwnProperty(i)&&(t.call(e,i,e[i],n||i),"Object"!==o.util.type(e[i])||r[o.util.objId(e[i])]?"Array"!==o.util.type(e[i])||r[o.util.objId(e[i])]||(r[o.util.objId(e[i])]=!0,o.languages.DFS(e[i],t,i,r)):(r[o.util.objId(e[i])]=!0,o.languages.DFS(e[i],t,null,r)))}},plugins:{},highlight:function(e,t,n){var r={code:e,grammar:t,language:n};return r.tokens=o.tokenize(r.code,r.grammar),i.stringify(o.util.encode(r.tokens),r.language)},matchGrammar:function(e,t,n,r,i,a,s){var l=o.Token;for(var c in n)if(n.hasOwnProperty(c)&&n[c]){if(c==s)return;var u=n[c];u="Array"===o.util.type(u)?u:[u];for(var d=0;d<u.length;++d){var p=u[d],f=p.inside,m=!!p.lookbehind,h=!!p.greedy,g=0,b=p.alias;if(h&&!p.pattern.global){var v=p.pattern.toString().match(/[imuy]*$/)[0];p.pattern=RegExp(p.pattern.source,v+"g")}p=p.pattern||p;for(var y=r,w=i;y<t.length;w+=t[y].length,++y){var k=t[y];if(t.length>e.length)return;if(!(k instanceof l)){if(h&&y!=t.length-1){if(p.lastIndex=w,!(C=p.exec(e)))break;for(var x=C.index+(m?C[1].length:0),E=C.index+C[0].length,S=y,T=w,D=t.length;S<D&&(T<E||!t[S].type&&!t[S-1].greedy);++S)x>=(T+=t[S].length)&&(++y,w=T);if(t[y]instanceof l)continue;_=S-y,k=e.slice(w,T),C.index-=w}else{p.lastIndex=0;var C=p.exec(k),_=1}if(C){m&&(g=C[1]?C[1].length:0),E=(x=C.index+g)+(C=C[0].slice(g)).length;var A=k.slice(0,x),O=k.slice(E),R=[y,_];A&&(++y,w+=A.length,R.push(A));var P=new l(c,f?o.tokenize(C,f):C,b,C,h);if(R.push(P),O&&R.push(O),Array.prototype.splice.apply(t,R),1!=_&&o.matchGrammar(e,t,n,y,w,!0,c),a)break}else if(a)break}}}}},hooks:{add:function(){}},tokenize:function(e,t,n){var r=[e],i=t.rest;if(i){for(var a in i)t[a]=i[a];delete t.rest}return o.matchGrammar(e,r,t,0,0,!1),r}},(i=o.Token=function(e,t,n,r,o){this.type=e,this.content=t,this.alias=n,this.length=0|(r||"").length,this.greedy=!!o}).stringify=function(e,t,n){if("string"==typeof e)return e;if("Array"===o.util.type(e))return e.map((function(n){return i.stringify(n,t,e)})).join("");var r={type:e.type,content:i.stringify(e.content,t,n),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:n};if(e.alias){var a="Array"===o.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(r.classes,a)}var s=Object.keys(r.attributes).map((function(e){return e+'="'+(r.attributes[e]||"").replace(/"/g,"&quot;")+'"'})).join(" ");return"<"+r.tag+' class="'+r.classes.join(" ")+'"'+(s?" "+s:"")+">"+r.content+"</"+r.tag+">"},o);a.languages.markup={comment:/<!--[\s\S]*?-->/,prolog:/<\?[\s\S]+?\?>/,doctype:/<!DOCTYPE[\s\S]+?>/i,cdata:/<!\[CDATA\[[\s\S]*?]]>/i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/i,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&amp;/,"&"))})),Object.defineProperty(a.languages.markup.tag,"addInlined",{value:function(e,t){var n={};n["language-"+t]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:a.languages[t]},n.cdata=/^<!\[CDATA\[|\]\]>$/i;var r={"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:n}};r["language-"+t]={pattern:/[\s\S]+/,inside:a.languages[t]};var o={};o[e]={pattern:RegExp(/(<__[\s\S]*?>)(?:<!\[CDATA\[[\s\S]*?\]\]>\s*|[\s\S])*?(?=<\/__>)/.source.replace(/__/g,e),"i"),lookbehind:!0,greedy:!0,inside:r},a.languages.insertBefore("markup","cdata",o)}}),a.languages.xml=a.languages.extend("markup",{}),a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--?|-=|\+\+?|\+=|!=?|~|\*\*?|\*=|\/=?|%=?|<<=?|>>=?|<=?|>=?|==?|&&?|&=|\^=?|\|\|?|\|=|\?|:/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|x[0-9a-fA-F]{1,2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)\w+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b\w+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+?)\s*(?:\r?\n|\r)(?:[\s\S])*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:n},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s*(?:\r?\n|\r)(?:[\s\S])*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0},{pattern:/(["'])(?:\\[\s\S]|\$\([^)]+\)|`[^`]+`|(?!\1)[^\\])*\1/,greedy:!0,inside:n}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:n.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|aptitude|apt-cache|apt-get|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:if|then|else|elif|fi|for|while|in|case|esac|function|select|do|done|until)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|break|cd|continue|eval|exec|exit|export|getopts|hash|pwd|readonly|return|shift|test|times|trap|umask|unset|alias|bind|builtin|caller|command|declare|echo|enable|help|let|local|logout|mapfile|printf|read|readarray|source|type|typeset|ulimit|unalias|set|shopt)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:true|false)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|==?|!=?|=~|<<[<-]?|[&\d]?>>|\d?[<>]&?|&[>&]?|\|[&|]?|<=?|>=?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}};for(var r=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],o=n.variable[1].inside,i=0;i<r.length;i++)o[r[i]]=e.languages.bash[r[i]];e.languages.shell=e.languages.bash}(a),a.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,boolean:/\b(?:true|false)\b/,function:/\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},a.languages.c=a.languages.extend("clike",{"class-name":{pattern:/(\b(?:enum|struct)\s+)\w+/,lookbehind:!0},keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while)\b/,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/,number:/(?:\b0x(?:[\da-f]+\.?[\da-f]*|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?)[ful]*/i}),a.languages.insertBefore("c","string",{macro:{pattern:/(^\s*)#\s*[a-z]+(?:[^\r\n\\]|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,alias:"property",inside:{string:{pattern:/(#\s*include\s*)(?:<.+?>|("|')(?:\\?.)+?\2)/,lookbehind:!0},directive:{pattern:/(#\s*)\b(?:define|defined|elif|else|endif|error|ifdef|ifndef|if|import|include|line|pragma|undef|using)\b/,lookbehind:!0,alias:"keyword"}}},constant:/\b(?:__FILE__|__LINE__|__DATE__|__TIME__|__TIMESTAMP__|__func__|EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|stdin|stdout|stderr)\b/}),delete a.languages.c.boolean,a.languages.cpp=a.languages.extend("c",{"class-name":{pattern:/(\b(?:class|enum|struct)\s+)\w+/,lookbehind:!0},keyword:/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|class|compl|const|constexpr|const_cast|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|float|for|friend|goto|if|inline|int|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|long|mutable|namespace|new|noexcept|nullptr|operator|private|protected|public|register|reinterpret_cast|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+\.?[\da-f']*|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+\.?[\d']*|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]*/i,greedy:!0},operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:true|false)\b/}),a.languages.insertBefore("cpp","string",{"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),function(e){var t=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+[\s\S]*?(?:;|(?=\s*\{))/,inside:{rule:/@[\w-]+/}},url:{pattern:RegExp("url\\((?:"+t.source+"|[^\n\r()]*)\\)","i"),inside:{function:/^url/i,punctuation:/^\(|\)$/}},selector:RegExp("[^{}\\s](?:[^{};\"']|"+t.source+")*?(?=\\s*\\{)"),string:{pattern:t,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var n=e.languages.markup;n&&(n.tag.addInlined("style","css"),e.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:n.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:e.languages.css}},alias:"language-css"}},n.tag))}(a),a.languages.css.selector={pattern:a.languages.css.selector,inside:{"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,"pseudo-class":/:[-\w]+/,class:/\.[-:.\w]+/,id:/#[-:.\w]+/,attribute:{pattern:/\[(?:[^[\]"']|("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1)*\]/,greedy:!0,inside:{punctuation:/^\[|\]$/,"case-sensitivity":{pattern:/(\s)[si]$/i,lookbehind:!0,alias:"keyword"},namespace:{pattern:/^(\s*)[-*\w\xA0-\uFFFF]*\|(?!=)/,lookbehind:!0,inside:{punctuation:/\|$/}},attribute:{pattern:/^(\s*)[-\w\xA0-\uFFFF]+/,lookbehind:!0},value:[/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,{pattern:/(=\s*)[-\w\xA0-\uFFFF]+(?=\s*$)/,lookbehind:!0}],operator:/[|~*^$]?=/}},"n-th":[{pattern:/(\(\s*)[+-]?\d*[\dn](?:\s*[+-]\s*\d+)?(?=\s*\))/,lookbehind:!0,inside:{number:/[\dn]+/,operator:/[+-]/}},{pattern:/(\(\s*)(?:even|odd)(?=\s*\))/i,lookbehind:!0}],punctuation:/[()]/}},a.languages.insertBefore("css","property",{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*/i,lookbehind:!0}}),a.languages.insertBefore("css","function",{operator:{pattern:/(\s)[+\-*\/](?=\s)/,lookbehind:!0},hexcode:/#[\da-f]{3,8}/i,entity:/\\[\da-f]{1,8}/i,unit:{pattern:/(\d)(?:%|[a-z]+)/,lookbehind:!0},number:/-?[\d.]+/}),a.languages.javascript=a.languages.extend("clike",{"class-name":[a.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])[_$A-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\.(?:prototype|constructor))/,lookbehind:!0}],keyword:[{pattern:/((?:^|})\s*)(?:catch|finally)\b/,lookbehind:!0},{pattern:/(^|[^.])\b(?:as|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],number:/\b(?:(?:0[xX](?:[\dA-Fa-f](?:_[\dA-Fa-f])?)+|0[bB](?:[01](?:_[01])?)+|0[oO](?:[0-7](?:_[0-7])?)+)n?|(?:\d(?:_\d)?)+n|NaN|Infinity)\b|(?:\b(?:\d(?:_\d)?)+\.?(?:\d(?:_\d)?)*|\B\.(?:\d(?:_\d)?)+)(?:[Ee][+-]?(?:\d(?:_\d)?)+)?/,function:/#?[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,operator:/-[-=]?|\+[+=]?|!=?=?|<<?=?|>>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),a.languages.javascript["class-name"][0].pattern=/(\b(?:class|interface|extends|implements|instanceof|new)\s+)[\w.\\]+/,a.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s])\s*)\/(\[(?:[^\]\\\r\n]|\\.)*]|\\.|[^/\\\[\r\n])+\/[gimyus]{0,6}(?=\s*($|[\r\n,.;})\]]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/#?[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+[_$A-Za-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)?\s*\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\))/,lookbehind:!0,inside:a.languages.javascript},{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=>)/i,inside:a.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\)\s*=>)/,lookbehind:!0,inside:a.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:[_$A-Za-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*\s*)\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\)\s*\{)/,lookbehind:!0,inside:a.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),a.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})+}|(?!\${)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})+}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\${|}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}}}),a.languages.markup&&a.languages.markup.tag.addInlined("script","javascript"),a.languages.js=a.languages.javascript,function(e){var t=e.util.clone(e.languages.javascript);e.languages.jsx=e.languages.extend("markup",t),e.languages.jsx.tag.pattern=/<\/?(?:[\w.:-]+\s*(?:\s+(?:[\w.:-]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s{'">=]+|\{(?:\{(?:\{[^}]*\}|[^{}])*\}|[^{}])+\}))?|\{\.{3}[a-z_$][\w$]*(?:\.[a-z_$][\w$]*)*\}))*\s*\/?)?>/i,e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/i,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">]+)/i,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.insertBefore("inside","attr-name",{spread:{pattern:/\{\.{3}[a-z_$][\w$]*(?:\.[a-z_$][\w$]*)*\}/,inside:{punctuation:/\.{3}|[{}.]/,"attr-value":/\w+/}}},e.languages.jsx.tag),e.languages.insertBefore("inside","attr-value",{script:{pattern:/=(\{(?:\{(?:\{[^}]*\}|[^}])*\}|[^}])+\})/i,inside:{"script-punctuation":{pattern:/^=(?={)/,alias:"punctuation"},rest:e.languages.jsx},alias:"language-javascript"}},e.languages.jsx.tag);var n=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(n).join(""):""},r=function(t){for(var o=[],i=0;i<t.length;i++){var a=t[i],s=!1;if("string"!=typeof a&&("tag"===a.type&&a.content[0]&&"tag"===a.content[0].type?"</"===a.content[0].content[0].content?o.length>0&&o[o.length-1].tagName===n(a.content[0].content[1])&&o.pop():"/>"===a.content[a.content.length-1].content||o.push({tagName:n(a.content[0].content[1]),openedBraces:0}):o.length>0&&"punctuation"===a.type&&"{"===a.content?o[o.length-1].openedBraces++:o.length>0&&o[o.length-1].openedBraces>0&&"punctuation"===a.type&&"}"===a.content?o[o.length-1].openedBraces--:s=!0),(s||"string"==typeof a)&&o.length>0&&0===o[o.length-1].openedBraces){var l=n(a);i<t.length-1&&("string"==typeof t[i+1]||"plain-text"===t[i+1].type)&&(l+=n(t[i+1]),t.splice(i+1,1)),i>0&&("string"==typeof t[i-1]||"plain-text"===t[i-1].type)&&(l=n(t[i-1])+l,t.splice(i-1,1),i--),t[i]=new e.Token("plain-text",l,null,l)}a.content&&"string"!=typeof a.content&&r(a.content)}};e.hooks.add("after-tokenize",(function(e){"jsx"!==e.language&&"tsx"!==e.language||r(e.tokens)}))}(a),function(e){var t=e.languages.javadoclike={parameter:{pattern:/(^\s*(?:\/{3}|\*|\/\*\*)\s*@(?:param|arg|arguments)\s+)\w+/m,lookbehind:!0},keyword:{pattern:/(^\s*(?:\/{3}|\*|\/\*\*)\s*|\{)@[a-z][a-zA-Z-]+\b/m,lookbehind:!0},punctuation:/[{}]/};Object.defineProperty(t,"addSupport",{value:function(t,n){"string"==typeof t&&(t=[t]),t.forEach((function(t){!function(t,n){var r="doc-comment",o=e.languages[t];if(o){var i=o[r];if(!i){var a={"doc-comment":{pattern:/(^|[^\\])\/\*\*[^/][\s\S]*?(?:\*\/|$)/,alias:"comment"}};i=(o=e.languages.insertBefore(t,"comment",a))[r]}if(i instanceof RegExp&&(i=o[r]={pattern:i}),Array.isArray(i))for(var s=0,l=i.length;s<l;s++)i[s]instanceof RegExp&&(i[s]={pattern:i[s]}),n(i[s]);else n(i)}}(t,(function(e){e.inside||(e.inside={}),e.inside.rest=n}))}))}}),t.addSupport(["java","javascript","php"],t)}(a),function(e){var t=/\b(?:abstract|continue|for|new|switch|assert|default|goto|package|synchronized|boolean|do|if|private|this|break|double|implements|protected|throw|byte|else|import|public|throws|case|enum|instanceof|return|transient|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|strictfp|volatile|const|float|native|super|while|var|null|exports|module|open|opens|provides|requires|to|transitive|uses|with)\b/,n=/\b[A-Z](?:\w*[a-z]\w*)?\b/;e.languages.java=e.languages.extend("clike",{"class-name":[n,/\b[A-Z]\w*(?=\s+\w+\s*[;,=())])/],keyword:t,function:[e.languages.clike.function,{pattern:/(\:\:)[a-z_]\w*/,lookbehind:!0}],number:/\b0b[01][01_]*L?\b|\b0x[\da-f_]*\.?[\da-f_p+-]+\b|(?:\b\d[\d_]*\.?[\d_]*|\B\.\d[\d_]*)(?:e[+-]?\d[\d_]*)?[dfl]?/i,operator:{pattern:/(^|[^.])(?:<<=?|>>>?=?|->|([-+&|])\2|[?:~]|[-+*/%&|^!=<>]=?)/m,lookbehind:!0}}),e.languages.insertBefore("java","class-name",{annotation:{alias:"punctuation",pattern:/(^|[^.])@\w+/,lookbehind:!0},namespace:{pattern:/(\b(?:exports|import(?:\s+static)?|module|open|opens|package|provides|requires|to|transitive|uses|with)\s+)[a-z]\w*(\.[a-z]\w*)+/,lookbehind:!0,inside:{punctuation:/\./}},generics:{pattern:/<(?:[\w\s,.&?]|<(?:[\w\s,.&?]|<(?:[\w\s,.&?]|<[\w\s,.&?]*>)*>)*>)*>/,inside:{"class-name":n,keyword:t,punctuation:/[<>(),.:]/,operator:/[?&|]/}}})}(a),function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,o,i){if(n.language===r){var a=n.tokenStack=[];n.code=n.code.replace(o,(function(e){if("function"==typeof i&&!i(e))return e;for(var o,s=a.length;-1!==n.code.indexOf(o=t(r,s));)++s;return a[s]=e,o})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var o=0,i=Object.keys(n.tokenStack);!function a(s){for(var l=0;l<s.length&&!(o>=i.length);l++){var c=s[l];if("string"==typeof c||c.content&&"string"==typeof c.content){var u=i[o],d=n.tokenStack[u],p="string"==typeof c?c:c.content,f=t(r,u),m=p.indexOf(f);if(m>-1){++o;var h=p.substring(0,m),g=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),b=p.substring(m+f.length),v=[];h&&v.push.apply(v,a([h])),v.push(g),b&&v.push.apply(v,a([b])),"string"==typeof c?s.splice.apply(s,[l,1].concat(v)):c.content=v}}else c.content&&a(c.content)}return s}(n.tokens)}}}})}(a),function(e){e.languages.php=e.languages.extend("clike",{keyword:/\b(?:__halt_compiler|abstract|and|array|as|break|callable|case|catch|class|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|eval|exit|extends|final|finally|for|foreach|function|global|goto|if|implements|include|include_once|instanceof|insteadof|interface|isset|list|namespace|new|or|parent|print|private|protected|public|require|require_once|return|static|switch|throw|trait|try|unset|use|var|while|xor|yield)\b/i,boolean:{pattern:/\b(?:false|true)\b/i,alias:"constant"},constant:[/\b[A-Z_][A-Z0-9_]*\b/,/\b(?:null)\b/i],comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0}}),e.languages.insertBefore("php","string",{"shell-comment":{pattern:/(^|[^\\])#.*/,lookbehind:!0,alias:"comment"}}),e.languages.insertBefore("php","comment",{delimiter:{pattern:/\?>$|^<\?(?:php(?=\s)|=)?/i,alias:"important"}}),e.languages.insertBefore("php","keyword",{variable:/\$+(?:\w+\b|(?={))/i,package:{pattern:/(\\|namespace\s+|use\s+)[\w\\]+/,lookbehind:!0,inside:{punctuation:/\\/}}}),e.languages.insertBefore("php","operator",{property:{pattern:/(->)[\w]+/,lookbehind:!0}});var t={pattern:/{\$(?:{(?:{[^{}]+}|[^{}]+)}|[^{}])+}|(^|[^\\{])\$+(?:\w+(?:\[.+?]|->\w+)*)/,lookbehind:!0,inside:{rest:e.languages.php}};e.languages.insertBefore("php","string",{"nowdoc-string":{pattern:/<<<'([^']+)'(?:\r\n?|\n)(?:.*(?:\r\n?|\n))*?\1;/,greedy:!0,alias:"string",inside:{delimiter:{pattern:/^<<<'[^']+'|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<'?|[';]$/}}}},"heredoc-string":{pattern:/<<<(?:"([^"]+)"(?:\r\n?|\n)(?:.*(?:\r\n?|\n))*?\1;|([a-z_]\w*)(?:\r\n?|\n)(?:.*(?:\r\n?|\n))*?\2;)/i,greedy:!0,alias:"string",inside:{delimiter:{pattern:/^<<<(?:"[^"]+"|[a-z_]\w*)|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<"?|[";]$/}},interpolation:t}},"single-quoted-string":{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0,alias:"string"},"double-quoted-string":{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,alias:"string",inside:{interpolation:t}}}),delete e.languages.php.string,e.hooks.add("before-tokenize",(function(t){if(/<\?/.test(t.code)){e.languages["markup-templating"].buildPlaceholders(t,"php",/<\?(?:[^"'/#]|\/(?![*/])|("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|(?:\/\/|#)(?:[^?\n\r]|\?(?!>))*|\/\*[\s\S]*?(?:\*\/|$))*?(?:\?>|$)/gi)}})),e.hooks.add("after-tokenize",(function(t){e.languages["markup-templating"].tokenizePlaceholders(t,"php")}))}(a),function(e){var t=e.languages.javascript,n=/{(?:[^{}]|{(?:[^{}]|{[^{}]*})*})+}/.source,r="(@(?:param|arg|argument|property)\\s+(?:"+n+"\\s+)?)";e.languages.jsdoc=e.languages.extend("javadoclike",{parameter:{pattern:RegExp(r+/[$\w\xA0-\uFFFF.]+(?=\s|$)/.source),lookbehind:!0,inside:{punctuation:/\./}}}),e.languages.insertBefore("jsdoc","keyword",{"optional-parameter":{pattern:RegExp(r+/\[[$\w\xA0-\uFFFF.]+(?:=[^[\]]+)?\](?=\s|$)/.source),lookbehind:!0,inside:{parameter:{pattern:/(^\[)[$\w\xA0-\uFFFF\.]+/,lookbehind:!0,inside:{punctuation:/\./}},code:{pattern:/(=)[\s\S]*(?=\]$)/,lookbehind:!0,inside:t,alias:"language-javascript"},punctuation:/[=[\]]/}},"class-name":[{pattern:RegExp("(@[a-z]+\\s+)"+n),lookbehind:!0,inside:{punctuation:/[.,:?=<>|{}()[\]]/}},{pattern:/(@(?:augments|extends|class|interface|memberof!?|this)\s+)[A-Z]\w*(?:\.[A-Z]\w*)*/,lookbehind:!0,inside:{punctuation:/\./}}],example:{pattern:/(@example\s+)[^@]+?(?=\s*(?:\*\s*)?(?:@\w|\*\/))/,lookbehind:!0,inside:{code:{pattern:/^(\s*(?:\*\s*)?).+$/m,lookbehind:!0,inside:t,alias:"language-javascript"}}}}),e.languages.javadoclike.addSupport("javascript",e.languages.jsdoc)}(a),a.languages.actionscript=a.languages.extend("javascript",{keyword:/\b(?:as|break|case|catch|class|const|default|delete|do|else|extends|finally|for|function|if|implements|import|in|instanceof|interface|internal|is|native|new|null|package|private|protected|public|return|super|switch|this|throw|try|typeof|use|var|void|while|with|dynamic|each|final|get|include|namespace|native|override|set|static)\b/,operator:/\+\+|--|(?:[+\-*\/%^]|&&?|\|\|?|<<?|>>?>?|[!=]=?)=?|[~?@]/}),a.languages.actionscript["class-name"].alias="function",a.languages.markup&&a.languages.insertBefore("actionscript","string",{xml:{pattern:/(^|[^.])<\/?\w+(?:\s+[^\s>\/=]+=("|')(?:\\[\s\S]|(?!\2)[^\\])*\2)*\s*\/?>/,lookbehind:!0,inside:{rest:a.languages.markup}}}),function(e){var t=/#(?!\{).+/,n={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:t,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:n}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:t,interpolation:n}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},rest:e.languages.javascript}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:n}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript["template-string"],e.languages.coffee=e.languages.coffeescript}(a),function(e){e.languages.insertBefore("javascript","function-variable",{"method-variable":{pattern:RegExp("(\\.\\s*)"+e.languages.javascript["function-variable"].pattern.source),lookbehind:!0,alias:["function-variable","method","function","property-access"]}}),e.languages.insertBefore("javascript","function",{method:{pattern:RegExp("(\\.\\s*)"+e.languages.javascript.function.source),lookbehind:!0,alias:["function","property-access"]}}),e.languages.insertBefore("javascript","constant",{"known-class-name":[{pattern:/\b(?:(?:(?:Uint|Int)(?:8|16|32)|Uint8Clamped|Float(?:32|64))?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|(?:Weak)?(?:Set|Map)|WebAssembly)\b/,alias:"class-name"},{pattern:/\b(?:[A-Z]\w*)Error\b/,alias:"class-name"}]}),e.languages.javascript.keyword.unshift({pattern:/\b(?:as|default|export|from|import)\b/,alias:"module"},{pattern:/\bnull\b/,alias:["null","nil"]},{pattern:/\bundefined\b/,alias:"nil"}),e.languages.insertBefore("javascript","operator",{spread:{pattern:/\.{3}/,alias:"operator"},arrow:{pattern:/=>/,alias:"operator"}}),e.languages.insertBefore("javascript","punctuation",{"property-access":{pattern:/(\.\s*)#?[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*/,lookbehind:!0},"maybe-class-name":{pattern:/(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,lookbehind:!0},dom:{pattern:/\b(?:document|location|navigator|performance|(?:local|session)Storage|window)\b/,alias:"variable"},console:{pattern:/\bconsole(?=\s*\.)/,alias:"class-name"}});for(var t=["function","function-variable","method","method-variable","property-access"],n=0;n<t.length;n++){var r=t[n],o=e.languages.javascript[r];"RegExp"===e.util.type(o)&&(o=e.languages.javascript[r]={pattern:o});var i=o.inside||{};o.inside=i,i["maybe-class-name"]=/^[A-Z][\s\S]*/}}(a),function(e){e.languages.flow=e.languages.extend("javascript",{}),e.languages.insertBefore("flow","keyword",{type:[{pattern:/\b(?:[Nn]umber|[Ss]tring|[Bb]oolean|Function|any|mixed|null|void)\b/,alias:"tag"}]}),e.languages.flow["function-variable"].pattern=/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)(?:\s*:\s*\w+)?|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,delete e.languages.flow.parameter,e.languages.insertBefore("flow","operator",{"flow-punctuation":{pattern:/\{\||\|\}/,alias:"punctuation"}}),Array.isArray(e.languages.flow.keyword)||(e.languages.flow.keyword=[e.languages.flow.keyword]),e.languages.flow.keyword.unshift({pattern:/(^|[^$]\b)(?:type|opaque|declare|Class)\b(?!\$)/,lookbehind:!0},{pattern:/(^|[^$]\B)\$(?:await|Diff|Exact|Keys|ObjMap|PropertyType|Shape|Record|Supertype|Subtype|Enum)\b(?!\$)/,lookbehind:!0})}(a),a.languages.n4js=a.languages.extend("javascript",{keyword:/\b(?:any|Array|boolean|break|case|catch|class|const|constructor|continue|debugger|declare|default|delete|do|else|enum|export|extends|false|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|module|new|null|number|package|private|protected|public|return|set|static|string|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\b/}),a.languages.insertBefore("n4js","constant",{annotation:{pattern:/@+\w+/,alias:"operator"}}),a.languages.n4jsd=a.languages.n4js,a.languages.typescript=a.languages.extend("javascript",{keyword:/\b(?:abstract|as|async|await|break|case|catch|class|const|constructor|continue|debugger|declare|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|is|keyof|let|module|namespace|new|null|of|package|private|protected|public|readonly|return|require|set|static|super|switch|this|throw|try|type|typeof|var|void|while|with|yield)\b/,builtin:/\b(?:string|Function|any|number|boolean|Array|symbol|console|Promise|unknown|never)\b/}),a.languages.ts=a.languages.typescript,function(e){var t=e.languages.javascript["template-string"],n=t.pattern.source,r=t.inside.interpolation,o=r.inside["interpolation-punctuation"],i=r.pattern.source;function a(t,r){if(e.languages[t])return{pattern:RegExp("((?:"+r+")\\s*)"+n),lookbehind:!0,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},"embedded-code":{pattern:/[\s\S]+/,alias:t}}}}function s(e,t){return"___"+t.toUpperCase()+"_"+e+"___"}function l(t,n,r){var o={code:t,grammar:n,language:r};return e.hooks.run("before-tokenize",o),o.tokens=e.tokenize(o.code,o.grammar),e.hooks.run("after-tokenize",o),o.tokens}function c(t){var n={};n["interpolation-punctuation"]=o;var i=e.tokenize(t,n);if(3===i.length){var a=[1,1];a.push.apply(a,l(i[1],e.languages.javascript,"javascript")),i.splice.apply(i,a)}return new e.Token("interpolation",i,r.alias,t)}function u(t,n,r){var o=e.tokenize(t,{interpolation:{pattern:RegExp(i),lookbehind:!0}}),a=0,u={},d=l(o.map((function(e){if("string"==typeof e)return e;for(var n,o=e.content;-1!==t.indexOf(n=s(a++,r)););return u[n]=o,n})).join(""),n,r),p=Object.keys(u);return a=0,function e(t){for(var n=0;n<t.length;n++){if(a>=p.length)return;var r=t[n];if("string"==typeof r||"string"==typeof r.content){var o=p[a],i="string"==typeof r?r:r.content,s=i.indexOf(o);if(-1!==s){++a;var l=i.substring(0,s),d=c(u[o]),f=i.substring(s+o.length),m=[];if(l&&m.push(l),m.push(d),f){var h=[f];e(h),m.push.apply(m,h)}"string"==typeof r?(t.splice.apply(t,[n,1].concat(m)),n+=m.length-1):r.content=m}}else{var g=r.content;Array.isArray(g)?e(g):e([g])}}}(d),new e.Token(r,d,"language-"+r,t)}e.languages.javascript["template-string"]=[a("css",/\b(?:styled(?:\([^)]*\))?(?:\s*\.\s*\w+(?:\([^)]*\))*)*|css(?:\s*\.\s*(?:global|resolve))?|createGlobalStyle|keyframes)/.source),a("html",/\bhtml|\.\s*(?:inner|outer)HTML\s*\+?=/.source),a("svg",/\bsvg/.source),a("markdown",/\b(?:md|markdown)/.source),a("graphql",/\b(?:gql|graphql(?:\s*\.\s*experimental)?)/.source),t].filter(Boolean);var d={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function p(e){return"string"==typeof e?e:Array.isArray(e)?e.map(p).join(""):p(e.content)}e.hooks.add("after-tokenize",(function(t){t.language in d&&function t(n){for(var r=0,o=n.length;r<o;r++){var i=n[r];if("string"!=typeof i){var a=i.content;if(Array.isArray(a))if("template-string"===i.type){var s=a[1];if(3===a.length&&"string"!=typeof s&&"embedded-code"===s.type){var l=p(s),c=s.alias,d=Array.isArray(c)?c[0]:c,f=e.languages[d];if(!f)continue;a[1]=u(l,f,d)}}else t(a);else"string"!=typeof a&&t([a])}}}(t.tokens)}))}(a),a.languages.graphql={comment:/#.*/,string:{pattern:/"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:true|false)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+)[a-zA-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:enum|fragment|implements|input|interface|mutation|on|query|scalar|schema|type|union)\b/,operator:/[!=|]|\.{3}/,punctuation:/[!(){}\[\]:=,]/,constant:/\b(?!ID\b)[A-Z][A-Z_\d]*\b/},function(e){var t=/(?:\\.|[^\\\n\r]|(?:\r?\n|\r)(?!\r?\n|\r))/.source;function n(e,n){return e=e.replace(/<inner>/g,t),n&&(e=e+"|"+e.replace(/_/g,"\\*")),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+e+")")}var r=/(?:\\.|``.+?``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,o=/\|?__(?:\|__)+\|?(?:(?:\r?\n|\r)|$)/.source.replace(/__/g,r),i=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\r?\n|\r)/.source;e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+o+i+"(?:"+o+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+o+i+")(?:"+o+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+o+")"+i+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+o+"$"),inside:{"table-header":{pattern:RegExp(r),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/(^[ \t]*(?:\r?\n|\r))(?: {4}|\t).+(?:(?:\r?\n|\r)(?: {4}|\t).+)*/m,lookbehind:!0,alias:"keyword"},{pattern:/``.+?``|`[^`\r\n]+`/,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\r?\n|\r))[\s\S]+?(?=(?:\r?\n|\r)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\r?\n|\r)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#+.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:n(/__(?:(?!_)<inner>|_(?:(?!_)<inner>)+_)+__/.source,!0),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(/_(?:(?!_)<inner>|__(?:(?!_)<inner>)+__)+_/.source,!0),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(/(~~?)(?:(?!~)<inner>)+?\2/.source,!1),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},url:{pattern:n(/!?\[(?:(?!\])<inner>)+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)| ?\[(?:(?!\])<inner>)+\])/.source,!1),lookbehind:!0,greedy:!0,inside:{variable:{pattern:/(\[)[^\]]+(?=\]$)/,lookbehind:!0},content:{pattern:/(^!?\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},string:{pattern:/"(?:\\.|[^"\\])*"(?=\)$)/}}}}),["url","bold","italic","strike"].forEach((function(t){["url","bold","italic","strike"].forEach((function(n){t!==n&&(e.languages.markdown[t].inside.content.inside[n]=e.languages.markdown[n])}))})),e.hooks.add("after-tokenize",(function(e){"markdown"!==e.language&&"md"!==e.language||function e(t){if(t&&"string"!=typeof t)for(var n=0,r=t.length;n<r;n++){var o=t[n];if("code"===o.type){var i=o.content[1],a=o.content[3];if(i&&a&&"code-language"===i.type&&"code-block"===a.type&&"string"==typeof i.content){var s="language-"+i.content.trim().split(/\s+/)[0].toLowerCase();a.alias?"string"==typeof a.alias?a.alias=[a.alias,s]:a.alias.push(s):a.alias=[s]}}else e(o.content)}}(e.tokens)})),e.hooks.add("wrap",(function(t){if("code-block"===t.type){for(var n="",r=0,o=t.classes.length;r<o;r++){var i=t.classes[r],a=/language-(.+)/.exec(i);if(a){n=a[1];break}}var s=e.languages[n];if(s){var l=t.content.replace(/&lt;/g,"<").replace(/&amp;/g,"&");t.content=e.highlight(l,s,n)}else if(n&&"none"!==n&&e.plugins.autoloader){var c="md-"+(new Date).valueOf()+"-"+Math.floor(1e16*Math.random());t.attributes.id=c,e.plugins.autoloader.loadLanguages(n,(function(){var t=document.getElementById(c);t&&(t.innerHTML=e.highlight(t.textContent,e.languages[n],n))}))}}})),e.languages.md=e.languages.markdown}(a),function(e){e.languages.diff={coord:[/^(?:\*{3}|-{3}|\+{3}).*$/m,/^@@.*@@$/m,/^\d+.*$/m]};var t={"deleted-sign":"-","deleted-arrow":"<","inserted-sign":"+","inserted-arrow":">",unchanged:" ",diff:"!"};Object.keys(t).forEach((function(n){var r=t[n],o=[];/^\w+$/.test(n)||o.push(/\w+/.exec(n)[0]),"diff"===n&&o.push("bold"),e.languages.diff[n]={pattern:RegExp("^(?:["+r+"].*(?:\r\n?|\n|(?![\\s\\S])))+","m"),alias:o}})),Object.defineProperty(e.languages.diff,"PREFIXES",{value:t})}(a),a.languages.git={comment:/^#.*/m,deleted:/^[-\u2013].*/m,inserted:/^\+.*/m,string:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/m,command:{pattern:/^.*\$ git .*$/m,inside:{parameter:/\s--?\w+/m}},coord:/^@@.*@@$/m,commit_sha1:/^commit \w{40}$/m},a.languages.go=a.languages.extend("clike",{keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,builtin:/\b(?:bool|byte|complex(?:64|128)|error|float(?:32|64)|rune|string|u?int(?:8|16|32|64)?|uintptr|append|cap|close|complex|copy|delete|imag|len|make|new|panic|print(?:ln)?|real|recover)\b/,boolean:/\b(?:_|iota|nil|true|false)\b/,operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,number:/(?:\b0x[a-f\d]+|(?:\b\d+\.?\d*|\B\.\d+)(?:e[-+]?\d+)?)i?/i,string:{pattern:/(["'`])(\\[\s\S]|(?!\1)[^\\])*\1/,greedy:!0}}),delete a.languages.go["class-name"],function(e){e.languages.handlebars={comment:/\{\{![\s\S]*?\}\}/,delimiter:{pattern:/^\{\{\{?|\}\}\}?$/i,alias:"punctuation"},string:/(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee][+-]?\d+)?/,boolean:/\b(?:true|false)\b/,block:{pattern:/^(\s*~?\s*)[#\/]\S+?(?=\s*~?\s*$|\s)/i,lookbehind:!0,alias:"keyword"},brackets:{pattern:/\[[^\]]+\]/,inside:{punctuation:/\[|\]/,variable:/[\s\S]+/}},punctuation:/[!"#%&'()*+,.\/;<=>@\[\\\]^`{|}~]/,variable:/[^!"#%&'()*+,.\/;<=>@\[\\\]^`{|}~\s]+/},e.hooks.add("before-tokenize",(function(t){e.languages["markup-templating"].buildPlaceholders(t,"handlebars",/\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\}/g)})),e.hooks.add("after-tokenize",(function(t){e.languages["markup-templating"].tokenizePlaceholders(t,"handlebars")}))}(a),a.languages.json={property:{pattern:/"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,greedy:!0},string:{pattern:/"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,greedy:!0},comment:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,number:/-?\d+\.?\d*(e[+-]?\d+)?/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:true|false)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},a.languages.less=a.languages.extend("css",{comment:[/\/\*[\s\S]*?\*\//,{pattern:/(^|[^\\])\/\/.*/,lookbehind:!0}],atrule:{pattern:/@[\w-]+?(?:\([^{}]+\)|[^(){};])*?(?=\s*\{)/i,inside:{punctuation:/[:()]/}},selector:{pattern:/(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\([^{}]*\)|[^{};@])*?(?=\s*\{)/,inside:{variable:/@+[\w-]+/}},property:/(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/i,operator:/[+\-*\/]/}),a.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-]+.*?(?=[(;])/,lookbehind:!0,alias:"function"}}),a.languages.makefile={comment:{pattern:/(^|[^\\])#(?:\\(?:\r\n|[\s\S])|[^\\\r\n])*/,lookbehind:!0},string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},builtin:/\.[A-Z][^:#=\s]+(?=\s*:(?!=))/,symbol:{pattern:/^[^:=\r\n]+(?=\s*:(?!=))/m,inside:{variable:/\$+(?:[^(){}:#=\s]+|(?=[({]))/}},variable:/\$+(?:[^(){}:#=\s]+|\([@*%<^+?][DF]\)|(?=[({]))/,keyword:[/-include\b|\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\b/,{pattern:/(\()(?:addsuffix|abspath|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:s|list)?)(?=[ \t])/,lookbehind:!0}],operator:/(?:::|[?:+!])?=|[|@]/,punctuation:/[:;(){}]/},a.languages.objectivec=a.languages.extend("c",{keyword:/\b(?:asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while|in|self|super)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,string:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|@"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,operator:/-[->]?|\+\+?|!=?|<<?=?|>>?=?|==?|&&?|\|\|?|[~^%?*\/@]/}),delete a.languages.objectivec["class-name"],a.languages.ocaml={comment:/\(\*[\s\S]*?\*\)/,string:[{pattern:/"(?:\\.|[^\\\r\n"])*"/,greedy:!0},{pattern:/(['`])(?:\\(?:\d+|x[\da-f]+|.)|(?!\1)[^\\\r\n])\1/i,greedy:!0}],number:/\b(?:0x[\da-f][\da-f_]+|(?:0[bo])?\d[\d_]*\.?[\d_]*(?:e[+-]?[\d_]+)?)/i,type:{pattern:/\B['`]\w*/,alias:"variable"},directive:{pattern:/\B#\w+/,alias:"function"},keyword:/\b(?:as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|object|of|open|prefix|private|rec|then|sig|struct|to|try|type|val|value|virtual|where|while|with)\b/,boolean:/\b(?:false|true)\b/,operator:/:=|[=<>@^|&+\-*\/$%!?~][!$%&*+\-.\/:<=>?@^|~]*|\b(?:and|asr|land|lor|lxor|lsl|lsr|mod|nor|or)\b/,punctuation:/[(){}\[\]|_.,:;]/},a.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0},"string-interpolation":{pattern:/(?:f|rf|fr)(?:("""|''')[\s\S]+?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:{{)*){(?!{)(?:[^{}]|{(?!{)(?:[^{}]|{(?!{)(?:[^{}])+})+})+}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|rb|br)?("""|''')[\s\S]+?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|rb|br)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^\s*)@\w+(?:\.\w+)*/i,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:and|as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:True|False|None)\b/,number:/(?:\b(?=\d)|\B(?=\.))(?:0[bo])?(?:(?:\d|0x[\da-f])[\da-f]*\.?\d*|\.\d+)(?:e[+-]?\d+)?j?\b/i,operator:/[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},a.languages.python["string-interpolation"].inside.interpolation.inside.rest=a.languages.python,a.languages.py=a.languages.python,a.languages.reason=a.languages.extend("clike",{comment:{pattern:/(^|[^\\])\/\*[\s\S]*?\*\//,lookbehind:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},"class-name":/\b[A-Z]\w*/,keyword:/\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\b/,operator:/\.{3}|:[:=]|\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*\/]\.?|\b(?:mod|land|lor|lxor|lsl|lsr|asr)\b/}),a.languages.insertBefore("reason","class-name",{character:{pattern:/'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,alias:"string"},constructor:{pattern:/\b[A-Z]\w*\b(?!\s*\.)/,alias:"variable"},label:{pattern:/\b[a-z]\w*(?=::)/,alias:"symbol"}}),delete a.languages.reason.function,function(e){e.languages.sass=e.languages.extend("css",{comment:{pattern:/^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t]+.+)*/m,lookbehind:!0}}),e.languages.insertBefore("sass","atrule",{"atrule-line":{pattern:/^(?:[ \t]*)[@+=].+/m,inside:{atrule:/(?:@[\w-]+|[+=])/m}}}),delete e.languages.sass.atrule;var t=/\$[-\w]+|#\{\$[-\w]+\}/,n=[/[+*\/%]|[=!]=|<=?|>=?|\b(?:and|or|not)\b/,{pattern:/(\s+)-(?=\s)/,lookbehind:!0}];e.languages.insertBefore("sass","property",{"variable-line":{pattern:/^[ \t]*\$.+/m,inside:{punctuation:/:/,variable:t,operator:n}},"property-line":{pattern:/^[ \t]*(?:[^:\s]+ *:.*|:[^:\s]+.*)/m,inside:{property:[/[^:\s]+(?=\s*:)/,{pattern:/(:)[^:\s]+/,lookbehind:!0}],punctuation:/:/,variable:t,operator:n,important:e.languages.sass.important}}}),delete e.languages.sass.property,delete e.languages.sass.important,e.languages.insertBefore("sass","punctuation",{selector:{pattern:/([ \t]*)\S(?:,?[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,?[^,\r\n]+)*)*/,lookbehind:!0}})}(a),a.languages.scss=a.languages.extend("css",{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},atrule:{pattern:/@[\w-]+(?:\([^()]+\)|[^(])*?(?=\s+[{;])/,inside:{rule:/@[\w-]+/}},url:/(?:[-a-z]+-)?url(?=\()/i,selector:{pattern:/(?=\S)[^@;{}()]?(?:[^@;{}()]|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}]+[:{][^}]+))/m,inside:{parent:{pattern:/&/,alias:"important"},placeholder:/%[-\w]+/,variable:/\$[-\w]+|#\{\$[-\w]+\}/}},property:{pattern:/(?:[\w-]|\$[-\w]+|#\{\$[-\w]+\})+(?=\s*:)/,inside:{variable:/\$[-\w]+|#\{\$[-\w]+\}/}}}),a.languages.insertBefore("scss","atrule",{keyword:[/@(?:if|else(?: if)?|for|each|while|import|extend|debug|warn|mixin|include|function|return|content)/i,{pattern:/( +)(?:from|through)(?= )/,lookbehind:!0}]}),a.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),a.languages.insertBefore("scss","function",{placeholder:{pattern:/%[-\w]+/,alias:"selector"},statement:{pattern:/\B!(?:default|optional)\b/i,alias:"keyword"},boolean:/\b(?:true|false)\b/,null:{pattern:/\bnull\b/,alias:"keyword"},operator:{pattern:/(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|or|not)(?=\s)/,lookbehind:!0}}),a.languages.scss.atrule.inside.rest=a.languages.scss,a.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},variable:[{pattern:/@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,greedy:!0},/@[\w.$]+/],string:{pattern:/(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/,greedy:!0,lookbehind:!0},function:/\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:_INSERT|COL)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURNS?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i,boolean:/\b(?:TRUE|FALSE|NULL)\b/i,number:/\b0x[\da-f]+\b|\b\d+\.?\d*|\B\.\d+\b/i,operator:/[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|IN|LIKE|NOT|OR|IS|DIV|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var t={url:/url\((["']?).*?\1\)/i,string:{pattern:/("|')(?:(?!\1)[^\\\r\n]|\\(?:\r\n|[\s\S]))*\1/,greedy:!0},interpolation:null,func:null,important:/\B!(?:important|optional)\b/i,keyword:{pattern:/(^|\s+)(?:(?:if|else|for|return|unless)(?=\s+|$)|@[\w-]+)/,lookbehind:!0},hexcode:/#[\da-f]{3,6}/i,number:/\b\d+(?:\.\d+)?%?/,boolean:/\b(?:true|false)\b/,operator:[/~|[+!\/%<>?=]=?|[-:]=|\*[*=]?|\.+|&&|\|\||\B-\B|\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\b/],punctuation:/[{}()\[\];:,]/};t.interpolation={pattern:/\{[^\r\n}:]+\}/,alias:"variable",inside:{delimiter:{pattern:/^{|}$/,alias:"punctuation"},rest:t}},t.func={pattern:/[\w-]+\([^)]*\).*/,inside:{function:/^[^(]+/,rest:t}},e.languages.stylus={comment:{pattern:/(^|[^\\])(\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},"atrule-declaration":{pattern:/(^\s*)@.+/m,lookbehind:!0,inside:{atrule:/^@[\w-]+/,rest:t}},"variable-declaration":{pattern:/(^[ \t]*)[\w$-]+\s*.?=[ \t]*(?:(?:\{[^}]*\}|.+)|$)/m,lookbehind:!0,inside:{variable:/^\S+/,rest:t}},statement:{pattern:/(^[ \t]*)(?:if|else|for|return|unless)[ \t]+.+/m,lookbehind:!0,inside:{keyword:/^\S+/,rest:t}},"property-declaration":{pattern:/((?:^|\{)([ \t]*))(?:[\w-]|\{[^}\r\n]+\})+(?:\s*:\s*|[ \t]+)[^{\r\n]*(?:;|[^{\r\n,](?=$)(?!(\r?\n|\r)(?:\{|\2[ \t]+)))/m,lookbehind:!0,inside:{property:{pattern:/^[^\s:]+/,inside:{interpolation:t.interpolation}},rest:t}},selector:{pattern:/(^[ \t]*)(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\))?|\{[^}\r\n]+\})+)(?:(?:\r?\n|\r)(?:\1(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\))?|\{[^}\r\n]+\})+)))*(?:,$|\{|(?=(?:\r?\n|\r)(?:\{|\1[ \t]+)))/m,lookbehind:!0,inside:{interpolation:t.interpolation,punctuation:/[{},]/}},func:t.func,string:t.string,interpolation:t.interpolation,punctuation:/[{}()\[\];:.]/}}(a);var s=a.util.clone(a.languages.typescript);a.languages.tsx=a.languages.extend("jsx",s),a.languages.wasm={comment:[/\(;[\s\S]*?;\)/,{pattern:/;;.*/,greedy:!0}],string:{pattern:/"(?:\\[\s\S]|[^"\\])*"/,greedy:!0},keyword:[{pattern:/\b(?:align|offset)=/,inside:{operator:/=/}},{pattern:/\b(?:(?:f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|nearest|neg?|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|store(?:8|16|32)?|sqrt|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))?|memory\.(?:grow|size))\b/,inside:{punctuation:/\./}},/\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\b/],variable:/\$[\w!#$%&'*+\-./:<=>?@\\^_`|~]+/i,number:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/,punctuation:/[()]/},a.languages.yaml={scalar:{pattern:/([\-:]\s*(?:![^\s]+)?[ \t]*[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)[^\r\n]+(?:\2[^\r\n]+)*)/,lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:/(\s*(?:^|[:\-,[{\r\n?])[ \t]*(?:![^\s]+)?[ \t]*)[^\r\n{[\]},#\s]+?(?=\s*:\s)/,lookbehind:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:/([:\-,[{]\s*(?:![^\s]+)?[ \t]*)(?:\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?)?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?)(?=[ \t]*(?:$|,|]|}))/m,lookbehind:!0,alias:"number"},boolean:{pattern:/([:\-,[{]\s*(?:![^\s]+)?[ \t]*)(?:true|false)[ \t]*(?=$|,|]|})/im,lookbehind:!0,alias:"important"},null:{pattern:/([:\-,[{]\s*(?:![^\s]+)?[ \t]*)(?:null|~)[ \t]*(?=$|,|]|})/im,lookbehind:!0,alias:"important"},string:{pattern:/([:\-,[{]\s*(?:![^\s]+)?[ \t]*)("|')(?:(?!\2)[^\\\r\n]|\\.)*\2(?=[ \t]*(?:$|,|]|}|\s*#))/m,lookbehind:!0,greedy:!0},number:{pattern:/([:\-,[{]\s*(?:![^\s]+)?[ \t]*)[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+\.?\d*|\.?\d+)(?:e[+-]?\d+)?|\.inf|\.nan)[ \t]*(?=$|,|]|})/im,lookbehind:!0},tag:/![^\s]+/,important:/[&*][\w]+/,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},a.languages.yml=a.languages.yaml,t.a=a},function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(r){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){"use strict";var r=n(0),o=n.n(r),i=n(34);t.a=function(e){return o.a.createElement(i.a,Object.assign({},e))}},function(e,t,n){"use strict";var r=n(8);t.a=r.b},function(e,t,n){"use strict";e.exports=n(46)},function(e,t,n){"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}(),e.exports=n(40)},function(e){e.exports=JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"path":"/docs","versions":[{"name":"current","label":"master \ud83c\udfc3","isLast":false,"path":"/docs/next","mainDocId":"gettingStarted/localDeployment","docs":[{"id":"api/environment","path":"/docs/next/api/environment","sidebar":"api"},{"id":"api/experiment","path":"/docs/next/api/experiment","sidebar":"api"},{"id":"api/experiment-template","path":"/docs/next/api/experiment-template","sidebar":"api"},{"id":"api/model-version","path":"/docs/next/api/model-version"},{"id":"api/notebook","path":"/docs/next/api/notebook","sidebar":"api"},{"id":"api/registered-model","path":"/docs/next/api/registered-model"},{"id":"api/serve","path":"/docs/next/api/serve","sidebar":"api"},{"id":"community/Bylaws","path":"/docs/next/community/Bylaws","sidebar":"docs"},{"id":"community/contributing","path":"/docs/next/community/contributing","sidebar":"docs"},{"id":"community/HowToBecomeCommitter","path":"/docs/next/community/HowToBecomeCommitter","sidebar":"docs"},{"id":"community/HowToCommit","path":"/docs/next/community/HowToCommit","sidebar":"docs"},{"id":"community/HowToVoteCommitterOrPMC","path":"/docs/next/community/HowToVoteCommitterOrPMC","sidebar":"docs"},{"id":"community/README","path":"/docs/next/community/README","sidebar":"docs"},{"id":"designDocs/architecture-and-requirements","path":"/docs/next/designDocs/architecture-and-requirements","sidebar":"docs"},{"id":"designDocs/environments-implementation","path":"/docs/next/designDocs/environments-implementation","sidebar":"docs"},{"id":"designDocs/experiment-implementation","path":"/docs/next/designDocs/experiment-implementation","sidebar":"docs"},{"id":"designDocs/implementation-notes","path":"/docs/next/designDocs/implementation-notes","sidebar":"docs"},{"id":"designDocs/notebook-implementation","path":"/docs/next/designDocs/notebook-implementation","sidebar":"docs"},{"id":"designDocs/storage-implementation","path":"/docs/next/designDocs/storage-implementation","sidebar":"docs"},{"id":"designDocs/submarine-server/architecture","path":"/docs/next/designDocs/submarine-server/architecture","sidebar":"docs"},{"id":"designDocs/submarine-server/experimentSpec","path":"/docs/next/designDocs/submarine-server/experimentSpec","sidebar":"docs"},{"id":"designDocs/wip-designs/security-implementation","path":"/docs/next/designDocs/wip-designs/security-implementation","sidebar":"docs"},{"id":"designDocs/wip-designs/submarine-clusterServer","path":"/docs/next/designDocs/wip-designs/submarine-clusterServer","sidebar":"docs"},{"id":"designDocs/wip-designs/submarine-launcher","path":"/docs/next/designDocs/wip-designs/submarine-launcher","sidebar":"docs"},{"id":"devDocs/BuildFromCode","path":"/docs/next/devDocs/BuildFromCode","sidebar":"docs"},{"id":"devDocs/Dependencies","path":"/docs/next/devDocs/Dependencies","sidebar":"docs"},{"id":"devDocs/Development","path":"/docs/next/devDocs/Development","sidebar":"docs"},{"id":"devDocs/HowToRelease","path":"/docs/next/devDocs/HowToRelease","sidebar":"docs"},{"id":"devDocs/HowToVerify","path":"/docs/next/devDocs/HowToVerify","sidebar":"docs"},{"id":"devDocs/IntegrationTestE2E","path":"/docs/next/devDocs/IntegrationTestE2E","sidebar":"docs"},{"id":"devDocs/IntegrationTestK8s","path":"/docs/next/devDocs/IntegrationTestK8s","sidebar":"docs"},{"id":"devDocs/README","path":"/docs/next/devDocs/README","sidebar":"docs"},{"id":"download","path":"/docs/next/download"},{"id":"gettingStarted/helm","path":"/docs/next/gettingStarted/helm"},{"id":"gettingStarted/kind","path":"/docs/next/gettingStarted/kind"},{"id":"gettingStarted/localDeployment","path":"/docs/next/"},{"id":"gettingStarted/notebook","path":"/docs/next/gettingStarted/notebook","sidebar":"docs"},{"id":"gettingStarted/python-sdk","path":"/docs/next/gettingStarted/python-sdk"},{"id":"gettingStarted/quickstart","path":"/docs/next/gettingStarted/quickstart","sidebar":"docs"},{"id":"userDocs/api/environment","path":"/docs/next/userDocs/api/environment","sidebar":"docs"},{"id":"userDocs/api/experiment","path":"/docs/next/userDocs/api/experiment","sidebar":"docs"},{"id":"userDocs/api/experiment-template","path":"/docs/next/userDocs/api/experiment-template","sidebar":"docs"},{"id":"userDocs/api/notebook","path":"/docs/next/userDocs/api/notebook","sidebar":"docs"},{"id":"userDocs/others/mlflow","path":"/docs/next/userDocs/others/mlflow","sidebar":"docs"},{"id":"userDocs/others/tensorboard","path":"/docs/next/userDocs/others/tensorboard","sidebar":"docs"},{"id":"userDocs/submarine-sdk/experiment-client","path":"/docs/next/userDocs/submarine-sdk/experiment-client","sidebar":"docs"},{"id":"userDocs/submarine-sdk/pysubmarine/development","path":"/docs/next/userDocs/submarine-sdk/pysubmarine/development"},{"id":"userDocs/submarine-sdk/README","path":"/docs/next/userDocs/submarine-sdk/README"},{"id":"userDocs/submarine-sdk/submarine-cli","path":"/docs/next/userDocs/submarine-sdk/submarine-cli","sidebar":"docs"},{"id":"userDocs/submarine-sdk/tracking","path":"/docs/next/userDocs/submarine-sdk/tracking","sidebar":"docs"}]},{"name":"0.6.0","label":"0.6.0","isLast":true,"path":"/docs","mainDocId":"gettingStarted/localDeployment","docs":[{"id":"adminDocs/yarn/README","path":"/docs/adminDocs/yarn/README","sidebar":"docs"},{"id":"adminDocs/yarn/TestAndTroubleshooting","path":"/docs/adminDocs/yarn/TestAndTroubleshooting"},{"id":"adminDocs/yarn/workbench/HowToRun","path":"/docs/adminDocs/yarn/workbench/HowToRun"},{"id":"adminDocs/yarn/workbench/notebook/setup-jupyter","path":"/docs/adminDocs/yarn/workbench/notebook/setup-jupyter"},{"id":"adminDocs/yarn/workbench/README","path":"/docs/adminDocs/yarn/workbench/README"},{"id":"adminDocs/yarn/workbench/README.zh-CN","path":"/docs/adminDocs/yarn/workbench/README.zh-CN"},{"id":"api/environment","path":"/docs/api/environment","sidebar":"api"},{"id":"api/experiment","path":"/docs/api/experiment","sidebar":"api"},{"id":"api/experiment-template","path":"/docs/api/experiment-template","sidebar":"api"},{"id":"api/notebook","path":"/docs/api/notebook","sidebar":"api"},{"id":"community/contributing","path":"/docs/community/contributing","sidebar":"docs"},{"id":"community/HowToCommit","path":"/docs/community/HowToCommit","sidebar":"docs"},{"id":"community/README","path":"/docs/community/README","sidebar":"docs"},{"id":"designDocs/architecture-and-requirements","path":"/docs/designDocs/architecture-and-requirements","sidebar":"docs"},{"id":"designDocs/environments-implementation","path":"/docs/designDocs/environments-implementation","sidebar":"docs"},{"id":"designDocs/experiment-implementation","path":"/docs/designDocs/experiment-implementation","sidebar":"docs"},{"id":"designDocs/implementation-notes","path":"/docs/designDocs/implementation-notes","sidebar":"docs"},{"id":"designDocs/notebook-implementation","path":"/docs/designDocs/notebook-implementation","sidebar":"docs"},{"id":"designDocs/storage-implementation","path":"/docs/designDocs/storage-implementation","sidebar":"docs"},{"id":"designDocs/submarine-server/architecture","path":"/docs/designDocs/submarine-server/architecture","sidebar":"docs"},{"id":"designDocs/submarine-server/experimentSpec","path":"/docs/designDocs/submarine-server/experimentSpec","sidebar":"docs"},{"id":"designDocs/wip-designs/security-implementation","path":"/docs/designDocs/wip-designs/security-implementation","sidebar":"docs"},{"id":"designDocs/wip-designs/submarine-clusterServer","path":"/docs/designDocs/wip-designs/submarine-clusterServer","sidebar":"docs"},{"id":"designDocs/wip-designs/submarine-launcher","path":"/docs/designDocs/wip-designs/submarine-launcher","sidebar":"docs"},{"id":"devDocs/BuildFromCode","path":"/docs/devDocs/BuildFromCode","sidebar":"docs"},{"id":"devDocs/Dependencies","path":"/docs/devDocs/Dependencies","sidebar":"docs"},{"id":"devDocs/Development","path":"/docs/devDocs/Development","sidebar":"docs"},{"id":"devDocs/IntegrationTestE2E","path":"/docs/devDocs/IntegrationTestE2E","sidebar":"docs"},{"id":"devDocs/IntegrationTestK8s","path":"/docs/devDocs/IntegrationTestK8s","sidebar":"docs"},{"id":"devDocs/README","path":"/docs/devDocs/README","sidebar":"docs"},{"id":"download","path":"/docs/download"},{"id":"ecosystem/kaldi/RunningDistributedThchs30KaldiJobs","path":"/docs/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs"},{"id":"ecosystem/kaldi/WriteDockerfileKaldi","path":"/docs/ecosystem/kaldi/WriteDockerfileKaldi"},{"id":"gettingStarted/helm","path":"/docs/gettingStarted/helm"},{"id":"gettingStarted/kind","path":"/docs/gettingStarted/kind"},{"id":"gettingStarted/localDeployment","path":"/docs/"},{"id":"gettingStarted/notebook","path":"/docs/gettingStarted/notebook","sidebar":"docs"},{"id":"gettingStarted/python-sdk","path":"/docs/gettingStarted/python-sdk"},{"id":"gettingStarted/quickstart","path":"/docs/gettingStarted/quickstart","sidebar":"docs"},{"id":"userDocs/api/environment","path":"/docs/userDocs/api/environment","sidebar":"docs"},{"id":"userDocs/api/experiment","path":"/docs/userDocs/api/experiment","sidebar":"docs"},{"id":"userDocs/api/experiment-template","path":"/docs/userDocs/api/experiment-template","sidebar":"docs"},{"id":"userDocs/api/notebook","path":"/docs/userDocs/api/notebook","sidebar":"docs"},{"id":"userDocs/others/mlflow","path":"/docs/userDocs/others/mlflow","sidebar":"docs"},{"id":"userDocs/others/tensorboard","path":"/docs/userDocs/others/tensorboard","sidebar":"docs"},{"id":"userDocs/submarine-sdk/experiment-client","path":"/docs/userDocs/submarine-sdk/experiment-client","sidebar":"docs"},{"id":"userDocs/submarine-sdk/model-client","path":"/docs/userDocs/submarine-sdk/model-client","sidebar":"docs"},{"id":"userDocs/submarine-sdk/pysubmarine/development","path":"/docs/userDocs/submarine-sdk/pysubmarine/development"},{"id":"userDocs/submarine-sdk/README","path":"/docs/userDocs/submarine-sdk/README"},{"id":"userDocs/submarine-sdk/tracking","path":"/docs/userDocs/submarine-sdk/tracking","sidebar":"docs"},{"id":"userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin","path":"/docs/userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin","sidebar":"docs"},{"id":"userDocs/submarine-security/spark-security/README","path":"/docs/userDocs/submarine-security/spark-security/README","sidebar":"docs"},{"id":"userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README","path":"/docs/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README"},{"id":"userDocs/yarn/Dockerfiles","path":"/docs/userDocs/yarn/Dockerfiles"},{"id":"userDocs/yarn/TestAndTroubleshooting","path":"/docs/userDocs/yarn/TestAndTroubleshooting"},{"id":"userDocs/yarn/WriteDockerfileMX","path":"/docs/userDocs/yarn/WriteDockerfileMX"},{"id":"userDocs/yarn/WriteDockerfilePT","path":"/docs/userDocs/yarn/WriteDockerfilePT"},{"id":"userDocs/yarn/WriteDockerfileTF","path":"/docs/userDocs/yarn/WriteDockerfileTF"},{"id":"userDocs/yarn/YARNRuntimeGuide","path":"/docs/userDocs/yarn/YARNRuntimeGuide"}]}]}}}')},function(e){e.exports=JSON.parse('{"defaultLocale":"en","locales":["en"],"localeConfigs":{"en":{"label":"en"}},"currentLocale":"en"}')},function(e){e.exports=JSON.parse("{}")},function(e){e.exports=JSON.parse('{"docusaurusVersion":"2.0.0-alpha.70","siteVersion":"0.0.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"2.0.0-alpha.70"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"2.0.0-alpha.70"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"2.0.0-alpha.70"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"2.0.0-alpha.70"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"2.0.0-alpha.70"},"docusaurus-lunr-search":{"type":"package","name":"docusaurus-lunr-search","version":"2.1.10"}}}')},function(e,t,n){"use strict";var r=n(27),o={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},i={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},a={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},s={};function l(e){return r.isMemo(e)?a:s[e.$$typeof]||o}s[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},s[r.Memo]=a;var c=Object.defineProperty,u=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,p=Object.getOwnPropertyDescriptor,f=Object.getPrototypeOf,m=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(m){var o=f(n);o&&o!==m&&e(t,o,r)}var a=u(n);d&&(a=a.concat(d(n)));for(var s=l(t),h=l(n),g=0;g<a.length;++g){var b=a[g];if(!(i[b]||r&&r[b]||h&&h[b]||s&&s[b])){var v=p(n,b);try{c(t,b,v)}catch(y){}}}}return t}},function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return ge}));var r,o,i,a,s=n(1),l=n.n(s),c=n(35),u=n.n(c),d=n(36),p=n.n(d),f=n(0),m=n.n(f),h=n(12),g=n.n(h),b="bodyAttributes",v="htmlAttributes",y="titleAttributes",w={BASE:"base",BODY:"body",HEAD:"head",HTML:"html",LINK:"link",META:"meta",NOSCRIPT:"noscript",SCRIPT:"script",STYLE:"style",TITLE:"title"},k=(Object.keys(w).map((function(e){return w[e]})),"charset"),x="cssText",E="href",S="http-equiv",T="innerHTML",D="itemprop",C="name",_="property",A="rel",O="src",R="target",P={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},N="defaultTitle",I="defer",L="encodeSpecialCharacters",j="onChangeClientState",M="titleTemplate",F=Object.keys(P).reduce((function(e,t){return e[P[t]]=t,e}),{}),z=[w.NOSCRIPT,w.SCRIPT,w.STYLE],B="data-react-helmet",U="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},$=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},q=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),H=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},G=function(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n},W=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t},V=function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return!1===t?String(e):String(e).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;")},K=function(e){var t=Z(e,w.TITLE),n=Z(e,M);if(n&&t)return n.replace(/%s/g,(function(){return Array.isArray(t)?t.join(""):t}));var r=Z(e,N);return t||r||void 0},Q=function(e){return Z(e,j)||function(){}},Y=function(e,t){return t.filter((function(t){return void 0!==t[e]})).map((function(t){return t[e]})).reduce((function(e,t){return H({},e,t)}),{})},X=function(e,t){return t.filter((function(e){return void 0!==e[w.BASE]})).map((function(e){return e[w.BASE]})).reverse().reduce((function(t,n){if(!t.length)for(var r=Object.keys(n),o=0;o<r.length;o++){var i=r[o].toLowerCase();if(-1!==e.indexOf(i)&&n[i])return t.concat(n)}return t}),[])},J=function(e,t,n){var r={};return n.filter((function(t){return!!Array.isArray(t[e])||(void 0!==t[e]&&oe("Helmet: "+e+' should be of type "Array". Instead found type "'+U(t[e])+'"'),!1)})).map((function(t){return t[e]})).reverse().reduce((function(e,n){var o={};n.filter((function(e){for(var n=void 0,i=Object.keys(e),a=0;a<i.length;a++){var s=i[a],l=s.toLowerCase();-1===t.indexOf(l)||n===A&&"canonical"===e[n].toLowerCase()||l===A&&"stylesheet"===e[l].toLowerCase()||(n=l),-1===t.indexOf(s)||s!==T&&s!==x&&s!==D||(n=s)}if(!n||!e[n])return!1;var c=e[n].toLowerCase();return r[n]||(r[n]={}),o[n]||(o[n]={}),!r[n][c]&&(o[n][c]=!0,!0)})).reverse().forEach((function(t){return e.push(t)}));for(var i=Object.keys(o),a=0;a<i.length;a++){var s=i[a],l=g()({},r[s],o[s]);r[s]=l}return e}),[]).reverse()},Z=function(e,t){for(var n=e.length-1;n>=0;n--){var r=e[n];if(r.hasOwnProperty(t))return r[t]}return null},ee=(r=Date.now(),function(e){var t=Date.now();t-r>16?(r=t,e(t)):setTimeout((function(){ee(e)}),0)}),te=function(e){return clearTimeout(e)},ne="undefined"!=typeof window?window.requestAnimationFrame&&window.requestAnimationFrame.bind(window)||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||ee:e.requestAnimationFrame||ee,re="undefined"!=typeof window?window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||te:e.cancelAnimationFrame||te,oe=function(e){return console&&"function"==typeof console.warn&&console.warn(e)},ie=null,ae=function(e,t){var n=e.baseTag,r=e.bodyAttributes,o=e.htmlAttributes,i=e.linkTags,a=e.metaTags,s=e.noscriptTags,l=e.onChangeClientState,c=e.scriptTags,u=e.styleTags,d=e.title,p=e.titleAttributes;ce(w.BODY,r),ce(w.HTML,o),le(d,p);var f={baseTag:ue(w.BASE,n),linkTags:ue(w.LINK,i),metaTags:ue(w.META,a),noscriptTags:ue(w.NOSCRIPT,s),scriptTags:ue(w.SCRIPT,c),styleTags:ue(w.STYLE,u)},m={},h={};Object.keys(f).forEach((function(e){var t=f[e],n=t.newTags,r=t.oldTags;n.length&&(m[e]=n),r.length&&(h[e]=f[e].oldTags)})),t&&t(),l(e,m,h)},se=function(e){return Array.isArray(e)?e.join(""):e},le=function(e,t){void 0!==e&&document.title!==e&&(document.title=se(e)),ce(w.TITLE,t)},ce=function(e,t){var n=document.getElementsByTagName(e)[0];if(n){for(var r=n.getAttribute(B),o=r?r.split(","):[],i=[].concat(o),a=Object.keys(t),s=0;s<a.length;s++){var l=a[s],c=t[l]||"";n.getAttribute(l)!==c&&n.setAttribute(l,c),-1===o.indexOf(l)&&o.push(l);var u=i.indexOf(l);-1!==u&&i.splice(u,1)}for(var d=i.length-1;d>=0;d--)n.removeAttribute(i[d]);o.length===i.length?n.removeAttribute(B):n.getAttribute(B)!==a.join(",")&&n.setAttribute(B,a.join(","))}},ue=function(e,t){var n=document.head||document.querySelector(w.HEAD),r=n.querySelectorAll(e+"["+"data-react-helmet]"),o=Array.prototype.slice.call(r),i=[],a=void 0;return t&&t.length&&t.forEach((function(t){var n=document.createElement(e);for(var r in t)if(t.hasOwnProperty(r))if(r===T)n.innerHTML=t.innerHTML;else if(r===x)n.styleSheet?n.styleSheet.cssText=t.cssText:n.appendChild(document.createTextNode(t.cssText));else{var s=void 0===t[r]?"":t[r];n.setAttribute(r,s)}n.setAttribute(B,"true"),o.some((function(e,t){return a=t,n.isEqualNode(e)}))?o.splice(a,1):i.push(n)})),o.forEach((function(e){return e.parentNode.removeChild(e)})),i.forEach((function(e){return n.appendChild(e)})),{oldTags:o,newTags:i}},de=function(e){return Object.keys(e).reduce((function(t,n){var r=void 0!==e[n]?n+'="'+e[n]+'"':""+n;return t?t+" "+r:r}),"")},pe=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.keys(e).reduce((function(t,n){return t[P[n]||n]=e[n],t}),t)},fe=function(e,t,n){switch(e){case w.TITLE:return{toComponent:function(){return e=t.title,n=t.titleAttributes,(r={key:e})[B]=!0,o=pe(n,r),[m.a.createElement(w.TITLE,o,e)];var e,n,r,o},toString:function(){return function(e,t,n,r){var o=de(n),i=se(t);return o?"<"+e+' data-react-helmet="true" '+o+">"+V(i,r)+"</"+e+">":"<"+e+' data-react-helmet="true">'+V(i,r)+"</"+e+">"}(e,t.title,t.titleAttributes,n)}};case b:case v:return{toComponent:function(){return pe(t)},toString:function(){return de(t)}};default:return{toComponent:function(){return function(e,t){return t.map((function(t,n){var r,o=((r={key:n})[B]=!0,r);return Object.keys(t).forEach((function(e){var n=P[e]||e;if(n===T||n===x){var r=t.innerHTML||t.cssText;o.dangerouslySetInnerHTML={__html:r}}else o[n]=t[e]})),m.a.createElement(e,o)}))}(e,t)},toString:function(){return function(e,t,n){return t.reduce((function(t,r){var o=Object.keys(r).filter((function(e){return!(e===T||e===x)})).reduce((function(e,t){var o=void 0===r[t]?t:t+'="'+V(r[t],n)+'"';return e?e+" "+o:o}),""),i=r.innerHTML||r.cssText||"",a=-1===z.indexOf(e);return t+"<"+e+' data-react-helmet="true" '+o+(a?"/>":">"+i+"</"+e+">")}),"")}(e,t,n)}}}},me=function(e){var t=e.baseTag,n=e.bodyAttributes,r=e.encode,o=e.htmlAttributes,i=e.linkTags,a=e.metaTags,s=e.noscriptTags,l=e.scriptTags,c=e.styleTags,u=e.title,d=void 0===u?"":u,p=e.titleAttributes;return{base:fe(w.BASE,t,r),bodyAttributes:fe(b,n,r),htmlAttributes:fe(v,o,r),link:fe(w.LINK,i,r),meta:fe(w.META,a,r),noscript:fe(w.NOSCRIPT,s,r),script:fe(w.SCRIPT,l,r),style:fe(w.STYLE,c,r),title:fe(w.TITLE,{title:d,titleAttributes:p},r)}},he=u()((function(e){return{baseTag:X([E,R],e),bodyAttributes:Y(b,e),defer:Z(e,I),encode:Z(e,L),htmlAttributes:Y(v,e),linkTags:J(w.LINK,[A,E],e),metaTags:J(w.META,[C,k,S,_,D],e),noscriptTags:J(w.NOSCRIPT,[T],e),onChangeClientState:Q(e),scriptTags:J(w.SCRIPT,[O,T],e),styleTags:J(w.STYLE,[x],e),title:K(e),titleAttributes:Y(y,e)}}),(function(e){ie&&re(ie),e.defer?ie=ne((function(){ae(e,(function(){ie=null}))})):(ae(e),ie=null)}),me)((function(){return null})),ge=(o=he,a=i=function(e){function t(){return $(this,t),W(this,e.apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.shouldComponentUpdate=function(e){return!p()(this.props,e)},t.prototype.mapNestedChildrenToProps=function(e,t){if(!t)return null;switch(e.type){case w.SCRIPT:case w.NOSCRIPT:return{innerHTML:t};case w.STYLE:return{cssText:t}}throw new Error("<"+e.type+" /> elements are self-closing and can not contain children. Refer to our API for more information.")},t.prototype.flattenArrayTypeChildren=function(e){var t,n=e.child,r=e.arrayTypeChildren,o=e.newChildProps,i=e.nestedChildren;return H({},r,((t={})[n.type]=[].concat(r[n.type]||[],[H({},o,this.mapNestedChildrenToProps(n,i))]),t))},t.prototype.mapObjectTypeChildren=function(e){var t,n,r=e.child,o=e.newProps,i=e.newChildProps,a=e.nestedChildren;switch(r.type){case w.TITLE:return H({},o,((t={})[r.type]=a,t.titleAttributes=H({},i),t));case w.BODY:return H({},o,{bodyAttributes:H({},i)});case w.HTML:return H({},o,{htmlAttributes:H({},i)})}return H({},o,((n={})[r.type]=H({},i),n))},t.prototype.mapArrayTypeChildrenToProps=function(e,t){var n=H({},t);return Object.keys(e).forEach((function(t){var r;n=H({},n,((r={})[t]=e[t],r))})),n},t.prototype.warnOnInvalidChildren=function(e,t){return!0},t.prototype.mapChildrenToProps=function(e,t){var n=this,r={};return m.a.Children.forEach(e,(function(e){if(e&&e.props){var o=e.props,i=o.children,a=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.keys(e).reduce((function(t,n){return t[F[n]||n]=e[n],t}),t)}(G(o,["children"]));switch(n.warnOnInvalidChildren(e,i),e.type){case w.LINK:case w.META:case w.NOSCRIPT:case w.SCRIPT:case w.STYLE:r=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:r,newChildProps:a,nestedChildren:i});break;default:t=n.mapObjectTypeChildren({child:e,newProps:t,newChildProps:a,nestedChildren:i})}}})),t=this.mapArrayTypeChildrenToProps(r,t)},t.prototype.render=function(){var e=this.props,t=e.children,n=G(e,["children"]),r=H({},n);return t&&(r=this.mapChildrenToProps(t,r)),m.a.createElement(o,r)},q(t,null,[{key:"canUseDOM",set:function(e){o.canUseDOM=e}}]),t}(m.a.Component),i.propTypes={base:l.a.object,bodyAttributes:l.a.object,children:l.a.oneOfType([l.a.arrayOf(l.a.node),l.a.node]),defaultTitle:l.a.string,defer:l.a.bool,encodeSpecialCharacters:l.a.bool,htmlAttributes:l.a.object,link:l.a.arrayOf(l.a.object),meta:l.a.arrayOf(l.a.object),noscript:l.a.arrayOf(l.a.object),onChangeClientState:l.a.func,script:l.a.arrayOf(l.a.object),style:l.a.arrayOf(l.a.object),title:l.a.string,titleAttributes:l.a.object,titleTemplate:l.a.string},i.defaultProps={defer:!0,encodeSpecialCharacters:!0},i.peek=o.peek,i.rewind=function(){var e=o.rewind();return e||(e=me({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}})),e},a);ge.renderStatic=ge.rewind}).call(this,n(24))},function(e,t,n){"use strict";var r,o=n(0),i=(r=o)&&"object"==typeof r&&"default"in r?r.default:r;function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var s=!("undefined"==typeof window||!window.document||!window.document.createElement);e.exports=function(e,t,n){if("function"!=typeof e)throw new Error("Expected reducePropsToState to be a function.");if("function"!=typeof t)throw new Error("Expected handleStateChangeOnClient to be a function.");if(void 0!==n&&"function"!=typeof n)throw new Error("Expected mapStateOnServer to either be undefined or a function.");return function(r){if("function"!=typeof r)throw new Error("Expected WrappedComponent to be a React component.");var l,c=[];function u(){l=e(c.map((function(e){return e.props}))),d.canUseDOM?t(l):n&&(l=n(l))}var d=function(e){var t,n;function o(){return e.apply(this,arguments)||this}n=e,(t=o).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n,o.peek=function(){return l},o.rewind=function(){if(o.canUseDOM)throw new Error("You may only call rewind() on the server. Call peek() to read the current state.");var e=l;return l=void 0,c=[],e};var a=o.prototype;return a.UNSAFE_componentWillMount=function(){c.push(this),u()},a.componentDidUpdate=function(){u()},a.componentWillUnmount=function(){var e=c.indexOf(this);c.splice(e,1),u()},a.render=function(){return i.createElement(r,this.props)},o}(o.PureComponent);return a(d,"displayName","SideEffect("+function(e){return e.displayName||e.name||"Component"}(r)+")"),a(d,"canUseDOM",s),d}}},function(e,t){var n="undefined"!=typeof Element,r="function"==typeof Map,o="function"==typeof Set,i="function"==typeof ArrayBuffer&&!!ArrayBuffer.isView;function a(e,t){if(e===t)return!0;if(e&&t&&"object"==typeof e&&"object"==typeof t){if(e.constructor!==t.constructor)return!1;var s,l,c,u;if(Array.isArray(e)){if((s=e.length)!=t.length)return!1;for(l=s;0!=l--;)if(!a(e[l],t[l]))return!1;return!0}if(r&&e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(u=e.entries();!(l=u.next()).done;)if(!t.has(l.value[0]))return!1;for(u=e.entries();!(l=u.next()).done;)if(!a(l.value[1],t.get(l.value[0])))return!1;return!0}if(o&&e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(u=e.entries();!(l=u.next()).done;)if(!t.has(l.value[0]))return!1;return!0}if(i&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(t)){if((s=e.length)!=t.length)return!1;for(l=s;0!=l--;)if(e[l]!==t[l])return!1;return!0}if(e.constructor===RegExp)return e.source===t.source&&e.flags===t.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===t.toString();if((s=(c=Object.keys(e)).length)!==Object.keys(t).length)return!1;for(l=s;0!=l--;)if(!Object.prototype.hasOwnProperty.call(t,c[l]))return!1;if(n&&e instanceof Element)return!1;for(l=s;0!=l--;)if(("_owner"!==c[l]&&"__v"!==c[l]&&"__o"!==c[l]||!e.$$typeof)&&!a(e[c[l]],t[c[l]]))return!1;return!0}return e!=e&&t!=t}e.exports=function(e,t){try{return a(e,t)}catch(n){if((n.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw n}}},,function(e,t,n){e.exports=n(53)},function(e,t,n){"use strict";var r=n(12),o="function"==typeof Symbol&&Symbol.for,i=o?Symbol.for("react.element"):60103,a=o?Symbol.for("react.portal"):60106,s=o?Symbol.for("react.fragment"):60107,l=o?Symbol.for("react.strict_mode"):60108,c=o?Symbol.for("react.profiler"):60114,u=o?Symbol.for("react.provider"):60109,d=o?Symbol.for("react.context"):60110,p=o?Symbol.for("react.forward_ref"):60112,f=o?Symbol.for("react.suspense"):60113,m=o?Symbol.for("react.memo"):60115,h=o?Symbol.for("react.lazy"):60116,g="function"==typeof Symbol&&Symbol.iterator;function b(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var v={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},y={};function w(e,t,n){this.props=e,this.context=t,this.refs=y,this.updater=n||v}function k(){}function x(e,t,n){this.props=e,this.context=t,this.refs=y,this.updater=n||v}w.prototype.isReactComponent={},w.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error(b(85));this.updater.enqueueSetState(this,e,t,"setState")},w.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},k.prototype=w.prototype;var E=x.prototype=new k;E.constructor=x,r(E,w.prototype),E.isPureReactComponent=!0;var S={current:null},T=Object.prototype.hasOwnProperty,D={key:!0,ref:!0,__self:!0,__source:!0};function C(e,t,n){var r,o={},a=null,s=null;if(null!=t)for(r in void 0!==t.ref&&(s=t.ref),void 0!==t.key&&(a=""+t.key),t)T.call(t,r)&&!D.hasOwnProperty(r)&&(o[r]=t[r]);var l=arguments.length-2;if(1===l)o.children=n;else if(1<l){for(var c=Array(l),u=0;u<l;u++)c[u]=arguments[u+2];o.children=c}if(e&&e.defaultProps)for(r in l=e.defaultProps)void 0===o[r]&&(o[r]=l[r]);return{$$typeof:i,type:e,key:a,ref:s,props:o,_owner:S.current}}function _(e){return"object"==typeof e&&null!==e&&e.$$typeof===i}var A=/\/+/g,O=[];function R(e,t,n,r){if(O.length){var o=O.pop();return o.result=e,o.keyPrefix=t,o.func=n,o.context=r,o.count=0,o}return{result:e,keyPrefix:t,func:n,context:r,count:0}}function P(e){e.result=null,e.keyPrefix=null,e.func=null,e.context=null,e.count=0,10>O.length&&O.push(e)}function N(e,t,n,r){var o=typeof e;"undefined"!==o&&"boolean"!==o||(e=null);var s=!1;if(null===e)s=!0;else switch(o){case"string":case"number":s=!0;break;case"object":switch(e.$$typeof){case i:case a:s=!0}}if(s)return n(r,e,""===t?"."+L(e,0):t),1;if(s=0,t=""===t?".":t+":",Array.isArray(e))for(var l=0;l<e.length;l++){var c=t+L(o=e[l],l);s+=N(o,c,n,r)}else if(null===e||"object"!=typeof e?c=null:c="function"==typeof(c=g&&e[g]||e["@@iterator"])?c:null,"function"==typeof c)for(e=c.call(e),l=0;!(o=e.next()).done;)s+=N(o=o.value,c=t+L(o,l++),n,r);else if("object"===o)throw n=""+e,Error(b(31,"[object Object]"===n?"object with keys {"+Object.keys(e).join(", ")+"}":n,""));return s}function I(e,t,n){return null==e?0:N(e,"",t,n)}function L(e,t){return"object"==typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+(""+e).replace(/[=:]/g,(function(e){return t[e]}))}(e.key):t.toString(36)}function j(e,t){e.func.call(e.context,t,e.count++)}function M(e,t,n){var r=e.result,o=e.keyPrefix;e=e.func.call(e.context,t,e.count++),Array.isArray(e)?F(e,r,n,(function(e){return e})):null!=e&&(_(e)&&(e=function(e,t){return{$$typeof:i,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(e,o+(!e.key||t&&t.key===e.key?"":(""+e.key).replace(A,"$&/")+"/")+n)),r.push(e))}function F(e,t,n,r,o){var i="";null!=n&&(i=(""+n).replace(A,"$&/")+"/"),I(e,M,t=R(t,i,r,o)),P(t)}var z={current:null};function B(){var e=z.current;if(null===e)throw Error(b(321));return e}var U={ReactCurrentDispatcher:z,ReactCurrentBatchConfig:{suspense:null},ReactCurrentOwner:S,IsSomeRendererActing:{current:!1},assign:r};t.Children={map:function(e,t,n){if(null==e)return e;var r=[];return F(e,r,null,t,n),r},forEach:function(e,t,n){if(null==e)return e;I(e,j,t=R(null,null,t,n)),P(t)},count:function(e){return I(e,(function(){return null}),null)},toArray:function(e){var t=[];return F(e,t,null,(function(e){return e})),t},only:function(e){if(!_(e))throw Error(b(143));return e}},t.Component=w,t.Fragment=s,t.Profiler=c,t.PureComponent=x,t.StrictMode=l,t.Suspense=f,t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=U,t.cloneElement=function(e,t,n){if(null==e)throw Error(b(267,e));var o=r({},e.props),a=e.key,s=e.ref,l=e._owner;if(null!=t){if(void 0!==t.ref&&(s=t.ref,l=S.current),void 0!==t.key&&(a=""+t.key),e.type&&e.type.defaultProps)var c=e.type.defaultProps;for(u in t)T.call(t,u)&&!D.hasOwnProperty(u)&&(o[u]=void 0===t[u]&&void 0!==c?c[u]:t[u])}var u=arguments.length-2;if(1===u)o.children=n;else if(1<u){c=Array(u);for(var d=0;d<u;d++)c[d]=arguments[d+2];o.children=c}return{$$typeof:i,type:e.type,key:a,ref:s,props:o,_owner:l}},t.createContext=function(e,t){return void 0===t&&(t=null),(e={$$typeof:d,_calculateChangedBits:t,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider={$$typeof:u,_context:e},e.Consumer=e},t.createElement=C,t.createFactory=function(e){var t=C.bind(null,e);return t.type=e,t},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:p,render:e}},t.isValidElement=_,t.lazy=function(e){return{$$typeof:h,_ctor:e,_status:-1,_result:null}},t.memo=function(e,t){return{$$typeof:m,type:e,compare:void 0===t?null:t}},t.useCallback=function(e,t){return B().useCallback(e,t)},t.useContext=function(e,t){return B().useContext(e,t)},t.useDebugValue=function(){},t.useEffect=function(e,t){return B().useEffect(e,t)},t.useImperativeHandle=function(e,t,n){return B().useImperativeHandle(e,t,n)},t.useLayoutEffect=function(e,t){return B().useLayoutEffect(e,t)},t.useMemo=function(e,t){return B().useMemo(e,t)},t.useReducer=function(e,t,n){return B().useReducer(e,t,n)},t.useRef=function(e){return B().useRef(e)},t.useState=function(e){return B().useState(e)},t.version="16.14.0"},function(e,t,n){"use strict";var r=n(0),o=n(12),i=n(41);function a(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}if(!r)throw Error(a(227));function s(e,t,n,r,o,i,a,s,l){var c=Array.prototype.slice.call(arguments,3);try{t.apply(n,c)}catch(u){this.onError(u)}}var l=!1,c=null,u=!1,d=null,p={onError:function(e){l=!0,c=e}};function f(e,t,n,r,o,i,a,u,d){l=!1,c=null,s.apply(p,arguments)}var m=null,h=null,g=null;function b(e,t,n){var r=e.type||"unknown-event";e.currentTarget=g(n),function(e,t,n,r,o,i,s,p,m){if(f.apply(this,arguments),l){if(!l)throw Error(a(198));var h=c;l=!1,c=null,u||(u=!0,d=h)}}(r,t,void 0,e),e.currentTarget=null}var v=null,y={};function w(){if(v)for(var e in y){var t=y[e],n=v.indexOf(e);if(!(-1<n))throw Error(a(96,e));if(!x[n]){if(!t.extractEvents)throw Error(a(97,e));for(var r in x[n]=t,n=t.eventTypes){var o=void 0,i=n[r],s=t,l=r;if(E.hasOwnProperty(l))throw Error(a(99,l));E[l]=i;var c=i.phasedRegistrationNames;if(c){for(o in c)c.hasOwnProperty(o)&&k(c[o],s,l);o=!0}else i.registrationName?(k(i.registrationName,s,l),o=!0):o=!1;if(!o)throw Error(a(98,r,e))}}}}function k(e,t,n){if(S[e])throw Error(a(100,e));S[e]=t,T[e]=t.eventTypes[n].dependencies}var x=[],E={},S={},T={};function D(e){var t,n=!1;for(t in e)if(e.hasOwnProperty(t)){var r=e[t];if(!y.hasOwnProperty(t)||y[t]!==r){if(y[t])throw Error(a(102,t));y[t]=r,n=!0}}n&&w()}var C=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement),_=null,A=null,O=null;function R(e){if(e=h(e)){if("function"!=typeof _)throw Error(a(280));var t=e.stateNode;t&&(t=m(t),_(e.stateNode,e.type,t))}}function P(e){A?O?O.push(e):O=[e]:A=e}function N(){if(A){var e=A,t=O;if(O=A=null,R(e),t)for(e=0;e<t.length;e++)R(t[e])}}function I(e,t){return e(t)}function L(e,t,n,r,o){return e(t,n,r,o)}function j(){}var M=I,F=!1,z=!1;function B(){null===A&&null===O||(j(),N())}function U(e,t,n){if(z)return e(t,n);z=!0;try{return M(e,t,n)}finally{z=!1,B()}}var $=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,q=Object.prototype.hasOwnProperty,H={},G={};function W(e,t,n,r,o,i){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=r,this.attributeNamespace=o,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=i}var V={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(e){V[e]=new W(e,0,!1,e,null,!1)})),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach((function(e){var t=e[0];V[t]=new W(t,1,!1,e[1],null,!1)})),["contentEditable","draggable","spellCheck","value"].forEach((function(e){V[e]=new W(e,2,!1,e.toLowerCase(),null,!1)})),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach((function(e){V[e]=new W(e,2,!1,e,null,!1)})),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach((function(e){V[e]=new W(e,3,!1,e.toLowerCase(),null,!1)})),["checked","multiple","muted","selected"].forEach((function(e){V[e]=new W(e,3,!0,e,null,!1)})),["capture","download"].forEach((function(e){V[e]=new W(e,4,!1,e,null,!1)})),["cols","rows","size","span"].forEach((function(e){V[e]=new W(e,6,!1,e,null,!1)})),["rowSpan","start"].forEach((function(e){V[e]=new W(e,5,!1,e.toLowerCase(),null,!1)}));var K=/[\-:]([a-z])/g;function Q(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach((function(e){var t=e.replace(K,Q);V[t]=new W(t,1,!1,e,null,!1)})),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach((function(e){var t=e.replace(K,Q);V[t]=new W(t,1,!1,e,"http://www.w3.org/1999/xlink",!1)})),["xml:base","xml:lang","xml:space"].forEach((function(e){var t=e.replace(K,Q);V[t]=new W(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1)})),["tabIndex","crossOrigin"].forEach((function(e){V[e]=new W(e,1,!1,e.toLowerCase(),null,!1)})),V.xlinkHref=new W("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0),["src","href","action","formAction"].forEach((function(e){V[e]=new W(e,1,!1,e.toLowerCase(),null,!0)}));var Y=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function X(e,t,n,r){var o=V.hasOwnProperty(t)?V[t]:null;(null!==o?0===o.type:!r&&(2<t.length&&("o"===t[0]||"O"===t[0])&&("n"===t[1]||"N"===t[1])))||(function(e,t,n,r){if(null==t||function(e,t,n,r){if(null!==n&&0===n.type)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return!r&&(null!==n?!n.acceptsBooleans:"data-"!==(e=e.toLowerCase().slice(0,5))&&"aria-"!==e);default:return!1}}(e,t,n,r))return!0;if(r)return!1;if(null!==n)switch(n.type){case 3:return!t;case 4:return!1===t;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}(t,n,o,r)&&(n=null),r||null===o?function(e){return!!q.call(G,e)||!q.call(H,e)&&($.test(e)?G[e]=!0:(H[e]=!0,!1))}(t)&&(null===n?e.removeAttribute(t):e.setAttribute(t,""+n)):o.mustUseProperty?e[o.propertyName]=null===n?3!==o.type&&"":n:(t=o.attributeName,r=o.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(o=o.type)||4===o&&!0===n?"":""+n,r?e.setAttributeNS(r,t,n):e.setAttribute(t,n))))}Y.hasOwnProperty("ReactCurrentDispatcher")||(Y.ReactCurrentDispatcher={current:null}),Y.hasOwnProperty("ReactCurrentBatchConfig")||(Y.ReactCurrentBatchConfig={suspense:null});var J=/^(.*)[\\\/]/,Z="function"==typeof Symbol&&Symbol.for,ee=Z?Symbol.for("react.element"):60103,te=Z?Symbol.for("react.portal"):60106,ne=Z?Symbol.for("react.fragment"):60107,re=Z?Symbol.for("react.strict_mode"):60108,oe=Z?Symbol.for("react.profiler"):60114,ie=Z?Symbol.for("react.provider"):60109,ae=Z?Symbol.for("react.context"):60110,se=Z?Symbol.for("react.concurrent_mode"):60111,le=Z?Symbol.for("react.forward_ref"):60112,ce=Z?Symbol.for("react.suspense"):60113,ue=Z?Symbol.for("react.suspense_list"):60120,de=Z?Symbol.for("react.memo"):60115,pe=Z?Symbol.for("react.lazy"):60116,fe=Z?Symbol.for("react.block"):60121,me="function"==typeof Symbol&&Symbol.iterator;function he(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=me&&e[me]||e["@@iterator"])?e:null}function ge(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case ne:return"Fragment";case te:return"Portal";case oe:return"Profiler";case re:return"StrictMode";case ce:return"Suspense";case ue:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case ae:return"Context.Consumer";case ie:return"Context.Provider";case le:var t=e.render;return t=t.displayName||t.name||"",e.displayName||(""!==t?"ForwardRef("+t+")":"ForwardRef");case de:return ge(e.type);case fe:return ge(e.render);case pe:if(e=1===e._status?e._result:null)return ge(e)}return null}function be(e){var t="";do{e:switch(e.tag){case 3:case 4:case 6:case 7:case 10:case 9:var n="";break e;default:var r=e._debugOwner,o=e._debugSource,i=ge(e.type);n=null,r&&(n=ge(r.type)),r=i,i="",o?i=" (at "+o.fileName.replace(J,"")+":"+o.lineNumber+")":n&&(i=" (created by "+n+")"),n="\n    in "+(r||"Unknown")+i}t+=n,e=e.return}while(e);return t}function ve(e){switch(typeof e){case"boolean":case"number":case"object":case"string":case"undefined":return e;default:return""}}function ye(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function we(e){e._valueTracker||(e._valueTracker=function(e){var t=ye(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&void 0!==n&&"function"==typeof n.get&&"function"==typeof n.set){var o=n.get,i=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return o.call(this)},set:function(e){r=""+e,i.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(e){r=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function ke(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=ye(e)?e.checked?"true":"false":e.value),(e=r)!==n&&(t.setValue(e),!0)}function xe(e,t){var n=t.checked;return o({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function Ee(e,t){var n=null==t.defaultValue?"":t.defaultValue,r=null!=t.checked?t.checked:t.defaultChecked;n=ve(null!=t.value?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function Se(e,t){null!=(t=t.checked)&&X(e,"checked",t,!1)}function Te(e,t){Se(e,t);var n=ve(t.value),r=t.type;if(null!=n)"number"===r?(0===n&&""===e.value||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if("submit"===r||"reset"===r)return void e.removeAttribute("value");t.hasOwnProperty("value")?Ce(e,t.type,n):t.hasOwnProperty("defaultValue")&&Ce(e,t.type,ve(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function De(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!("submit"!==r&&"reset"!==r||void 0!==t.value&&null!==t.value))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}""!==(n=e.name)&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,""!==n&&(e.name=n)}function Ce(e,t,n){"number"===t&&e.ownerDocument.activeElement===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}function _e(e,t){return e=o({children:void 0},t),(t=function(e){var t="";return r.Children.forEach(e,(function(e){null!=e&&(t+=e)})),t}(t.children))&&(e.children=t),e}function Ae(e,t,n,r){if(e=e.options,t){t={};for(var o=0;o<n.length;o++)t["$"+n[o]]=!0;for(n=0;n<e.length;n++)o=t.hasOwnProperty("$"+e[n].value),e[n].selected!==o&&(e[n].selected=o),o&&r&&(e[n].defaultSelected=!0)}else{for(n=""+ve(n),t=null,o=0;o<e.length;o++){if(e[o].value===n)return e[o].selected=!0,void(r&&(e[o].defaultSelected=!0));null!==t||e[o].disabled||(t=e[o])}null!==t&&(t.selected=!0)}}function Oe(e,t){if(null!=t.dangerouslySetInnerHTML)throw Error(a(91));return o({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function Re(e,t){var n=t.value;if(null==n){if(n=t.children,t=t.defaultValue,null!=n){if(null!=t)throw Error(a(92));if(Array.isArray(n)){if(!(1>=n.length))throw Error(a(93));n=n[0]}t=n}null==t&&(t=""),n=t}e._wrapperState={initialValue:ve(n)}}function Pe(e,t){var n=ve(t.value),r=ve(t.defaultValue);null!=n&&((n=""+n)!==e.value&&(e.value=n),null==t.defaultValue&&e.defaultValue!==n&&(e.defaultValue=n)),null!=r&&(e.defaultValue=""+r)}function Ne(e){var t=e.textContent;t===e._wrapperState.initialValue&&""!==t&&null!==t&&(e.value=t)}var Ie="http://www.w3.org/1999/xhtml",Le="http://www.w3.org/2000/svg";function je(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function Me(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?je(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var Fe,ze,Be=(ze=function(e,t){if(e.namespaceURI!==Le||"innerHTML"in e)e.innerHTML=t;else{for((Fe=Fe||document.createElement("div")).innerHTML="<svg>"+t.valueOf().toString()+"</svg>",t=Fe.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}},"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(e,t,n,r){MSApp.execUnsafeLocalFunction((function(){return ze(e,t)}))}:ze);function Ue(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}function $e(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var qe={animationend:$e("Animation","AnimationEnd"),animationiteration:$e("Animation","AnimationIteration"),animationstart:$e("Animation","AnimationStart"),transitionend:$e("Transition","TransitionEnd")},He={},Ge={};function We(e){if(He[e])return He[e];if(!qe[e])return e;var t,n=qe[e];for(t in n)if(n.hasOwnProperty(t)&&t in Ge)return He[e]=n[t];return e}C&&(Ge=document.createElement("div").style,"AnimationEvent"in window||(delete qe.animationend.animation,delete qe.animationiteration.animation,delete qe.animationstart.animation),"TransitionEvent"in window||delete qe.transitionend.transition);var Ve=We("animationend"),Ke=We("animationiteration"),Qe=We("animationstart"),Ye=We("transitionend"),Xe="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),Je=new("function"==typeof WeakMap?WeakMap:Map);function Ze(e){var t=Je.get(e);return void 0===t&&(t=new Map,Je.set(e,t)),t}function et(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do{0!=(1026&(t=e).effectTag)&&(n=t.return),e=t.return}while(e)}return 3===t.tag?n:null}function tt(e){if(13===e.tag){var t=e.memoizedState;if(null===t&&(null!==(e=e.alternate)&&(t=e.memoizedState)),null!==t)return t.dehydrated}return null}function nt(e){if(et(e)!==e)throw Error(a(188))}function rt(e){if(!(e=function(e){var t=e.alternate;if(!t){if(null===(t=et(e)))throw Error(a(188));return t!==e?null:e}for(var n=e,r=t;;){var o=n.return;if(null===o)break;var i=o.alternate;if(null===i){if(null!==(r=o.return)){n=r;continue}break}if(o.child===i.child){for(i=o.child;i;){if(i===n)return nt(o),e;if(i===r)return nt(o),t;i=i.sibling}throw Error(a(188))}if(n.return!==r.return)n=o,r=i;else{for(var s=!1,l=o.child;l;){if(l===n){s=!0,n=o,r=i;break}if(l===r){s=!0,r=o,n=i;break}l=l.sibling}if(!s){for(l=i.child;l;){if(l===n){s=!0,n=i,r=o;break}if(l===r){s=!0,r=i,n=o;break}l=l.sibling}if(!s)throw Error(a(189))}}if(n.alternate!==r)throw Error(a(190))}if(3!==n.tag)throw Error(a(188));return n.stateNode.current===n?e:t}(e)))return null;for(var t=e;;){if(5===t.tag||6===t.tag)return t;if(t.child)t.child.return=t,t=t.child;else{if(t===e)break;for(;!t.sibling;){if(!t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}}return null}function ot(e,t){if(null==t)throw Error(a(30));return null==e?t:Array.isArray(e)?Array.isArray(t)?(e.push.apply(e,t),e):(e.push(t),e):Array.isArray(t)?[e].concat(t):[e,t]}function it(e,t,n){Array.isArray(e)?e.forEach(t,n):e&&t.call(n,e)}var at=null;function st(e){if(e){var t=e._dispatchListeners,n=e._dispatchInstances;if(Array.isArray(t))for(var r=0;r<t.length&&!e.isPropagationStopped();r++)b(e,t[r],n[r]);else t&&b(e,t,n);e._dispatchListeners=null,e._dispatchInstances=null,e.isPersistent()||e.constructor.release(e)}}function lt(e){if(null!==e&&(at=ot(at,e)),e=at,at=null,e){if(it(e,st),at)throw Error(a(95));if(u)throw e=d,u=!1,d=null,e}}function ct(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}function ut(e){if(!C)return!1;var t=(e="on"+e)in document;return t||((t=document.createElement("div")).setAttribute(e,"return;"),t="function"==typeof t[e]),t}var dt=[];function pt(e){e.topLevelType=null,e.nativeEvent=null,e.targetInst=null,e.ancestors.length=0,10>dt.length&&dt.push(e)}function ft(e,t,n,r){if(dt.length){var o=dt.pop();return o.topLevelType=e,o.eventSystemFlags=r,o.nativeEvent=t,o.targetInst=n,o}return{topLevelType:e,eventSystemFlags:r,nativeEvent:t,targetInst:n,ancestors:[]}}function mt(e){var t=e.targetInst,n=t;do{if(!n){e.ancestors.push(n);break}var r=n;if(3===r.tag)r=r.stateNode.containerInfo;else{for(;r.return;)r=r.return;r=3!==r.tag?null:r.stateNode.containerInfo}if(!r)break;5!==(t=n.tag)&&6!==t||e.ancestors.push(n),n=Rn(r)}while(n);for(n=0;n<e.ancestors.length;n++){t=e.ancestors[n];var o=ct(e.nativeEvent);r=e.topLevelType;var i=e.nativeEvent,a=e.eventSystemFlags;0===n&&(a|=64);for(var s=null,l=0;l<x.length;l++){var c=x[l];c&&(c=c.extractEvents(r,t,i,o,a))&&(s=ot(s,c))}lt(s)}}function ht(e,t,n){if(!n.has(e)){switch(e){case"scroll":Qt(t,"scroll",!0);break;case"focus":case"blur":Qt(t,"focus",!0),Qt(t,"blur",!0),n.set("blur",null),n.set("focus",null);break;case"cancel":case"close":ut(e)&&Qt(t,e,!0);break;case"invalid":case"submit":case"reset":break;default:-1===Xe.indexOf(e)&&Kt(e,t)}n.set(e,null)}}var gt,bt,vt,yt=!1,wt=[],kt=null,xt=null,Et=null,St=new Map,Tt=new Map,Dt=[],Ct="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput close cancel copy cut paste click change contextmenu reset submit".split(" "),_t="focus blur dragenter dragleave mouseover mouseout pointerover pointerout gotpointercapture lostpointercapture".split(" ");function At(e,t,n,r,o){return{blockedOn:e,topLevelType:t,eventSystemFlags:32|n,nativeEvent:o,container:r}}function Ot(e,t){switch(e){case"focus":case"blur":kt=null;break;case"dragenter":case"dragleave":xt=null;break;case"mouseover":case"mouseout":Et=null;break;case"pointerover":case"pointerout":St.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":Tt.delete(t.pointerId)}}function Rt(e,t,n,r,o,i){return null===e||e.nativeEvent!==i?(e=At(t,n,r,o,i),null!==t&&(null!==(t=Pn(t))&&bt(t)),e):(e.eventSystemFlags|=r,e)}function Pt(e){var t=Rn(e.target);if(null!==t){var n=et(t);if(null!==n)if(13===(t=n.tag)){if(null!==(t=tt(n)))return e.blockedOn=t,void i.unstable_runWithPriority(e.priority,(function(){vt(n)}))}else if(3===t&&n.stateNode.hydrate)return void(e.blockedOn=3===n.tag?n.stateNode.containerInfo:null)}e.blockedOn=null}function Nt(e){if(null!==e.blockedOn)return!1;var t=Zt(e.topLevelType,e.eventSystemFlags,e.container,e.nativeEvent);if(null!==t){var n=Pn(t);return null!==n&&bt(n),e.blockedOn=t,!1}return!0}function It(e,t,n){Nt(e)&&n.delete(t)}function Lt(){for(yt=!1;0<wt.length;){var e=wt[0];if(null!==e.blockedOn){null!==(e=Pn(e.blockedOn))&&gt(e);break}var t=Zt(e.topLevelType,e.eventSystemFlags,e.container,e.nativeEvent);null!==t?e.blockedOn=t:wt.shift()}null!==kt&&Nt(kt)&&(kt=null),null!==xt&&Nt(xt)&&(xt=null),null!==Et&&Nt(Et)&&(Et=null),St.forEach(It),Tt.forEach(It)}function jt(e,t){e.blockedOn===t&&(e.blockedOn=null,yt||(yt=!0,i.unstable_scheduleCallback(i.unstable_NormalPriority,Lt)))}function Mt(e){function t(t){return jt(t,e)}if(0<wt.length){jt(wt[0],e);for(var n=1;n<wt.length;n++){var r=wt[n];r.blockedOn===e&&(r.blockedOn=null)}}for(null!==kt&&jt(kt,e),null!==xt&&jt(xt,e),null!==Et&&jt(Et,e),St.forEach(t),Tt.forEach(t),n=0;n<Dt.length;n++)(r=Dt[n]).blockedOn===e&&(r.blockedOn=null);for(;0<Dt.length&&null===(n=Dt[0]).blockedOn;)Pt(n),null===n.blockedOn&&Dt.shift()}var Ft={},zt=new Map,Bt=new Map,Ut=["abort","abort",Ve,"animationEnd",Ke,"animationIteration",Qe,"animationStart","canplay","canPlay","canplaythrough","canPlayThrough","durationchange","durationChange","emptied","emptied","encrypted","encrypted","ended","ended","error","error","gotpointercapture","gotPointerCapture","load","load","loadeddata","loadedData","loadedmetadata","loadedMetadata","loadstart","loadStart","lostpointercapture","lostPointerCapture","playing","playing","progress","progress","seeking","seeking","stalled","stalled","suspend","suspend","timeupdate","timeUpdate",Ye,"transitionEnd","waiting","waiting"];function $t(e,t){for(var n=0;n<e.length;n+=2){var r=e[n],o=e[n+1],i="on"+(o[0].toUpperCase()+o.slice(1));i={phasedRegistrationNames:{bubbled:i,captured:i+"Capture"},dependencies:[r],eventPriority:t},Bt.set(r,t),zt.set(r,i),Ft[o]=i}}$t("blur blur cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focus focus input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange".split(" "),0),$t("drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel".split(" "),1),$t(Ut,2);for(var qt="change selectionchange textInput compositionstart compositionend compositionupdate".split(" "),Ht=0;Ht<qt.length;Ht++)Bt.set(qt[Ht],0);var Gt=i.unstable_UserBlockingPriority,Wt=i.unstable_runWithPriority,Vt=!0;function Kt(e,t){Qt(t,e,!1)}function Qt(e,t,n){var r=Bt.get(t);switch(void 0===r?2:r){case 0:r=Yt.bind(null,t,1,e);break;case 1:r=Xt.bind(null,t,1,e);break;default:r=Jt.bind(null,t,1,e)}n?e.addEventListener(t,r,!0):e.addEventListener(t,r,!1)}function Yt(e,t,n,r){F||j();var o=Jt,i=F;F=!0;try{L(o,e,t,n,r)}finally{(F=i)||B()}}function Xt(e,t,n,r){Wt(Gt,Jt.bind(null,e,t,n,r))}function Jt(e,t,n,r){if(Vt)if(0<wt.length&&-1<Ct.indexOf(e))e=At(null,e,t,n,r),wt.push(e);else{var o=Zt(e,t,n,r);if(null===o)Ot(e,r);else if(-1<Ct.indexOf(e))e=At(o,e,t,n,r),wt.push(e);else if(!function(e,t,n,r,o){switch(t){case"focus":return kt=Rt(kt,e,t,n,r,o),!0;case"dragenter":return xt=Rt(xt,e,t,n,r,o),!0;case"mouseover":return Et=Rt(Et,e,t,n,r,o),!0;case"pointerover":var i=o.pointerId;return St.set(i,Rt(St.get(i)||null,e,t,n,r,o)),!0;case"gotpointercapture":return i=o.pointerId,Tt.set(i,Rt(Tt.get(i)||null,e,t,n,r,o)),!0}return!1}(o,e,t,n,r)){Ot(e,r),e=ft(e,r,null,t);try{U(mt,e)}finally{pt(e)}}}}function Zt(e,t,n,r){if(null!==(n=Rn(n=ct(r)))){var o=et(n);if(null===o)n=null;else{var i=o.tag;if(13===i){if(null!==(n=tt(o)))return n;n=null}else if(3===i){if(o.stateNode.hydrate)return 3===o.tag?o.stateNode.containerInfo:null;n=null}else o!==n&&(n=null)}}e=ft(e,r,n,t);try{U(mt,e)}finally{pt(e)}return null}var en={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},tn=["Webkit","ms","Moz","O"];function nn(e,t,n){return null==t||"boolean"==typeof t||""===t?"":n||"number"!=typeof t||0===t||en.hasOwnProperty(e)&&en[e]?(""+t).trim():t+"px"}function rn(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var r=0===n.indexOf("--"),o=nn(n,t[n],r);"float"===n&&(n="cssFloat"),r?e.setProperty(n,o):e[n]=o}}Object.keys(en).forEach((function(e){tn.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),en[t]=en[e]}))}));var on=o({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function an(e,t){if(t){if(on[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML))throw Error(a(137,e,""));if(null!=t.dangerouslySetInnerHTML){if(null!=t.children)throw Error(a(60));if("object"!=typeof t.dangerouslySetInnerHTML||!("__html"in t.dangerouslySetInnerHTML))throw Error(a(61))}if(null!=t.style&&"object"!=typeof t.style)throw Error(a(62,""))}}function sn(e,t){if(-1===e.indexOf("-"))return"string"==typeof t.is;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var ln=Ie;function cn(e,t){var n=Ze(e=9===e.nodeType||11===e.nodeType?e:e.ownerDocument);t=T[t];for(var r=0;r<t.length;r++)ht(t[r],e,n)}function un(){}function dn(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}function pn(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function fn(e,t){var n,r=pn(e);for(e=0;r;){if(3===r.nodeType){if(n=e+r.textContent.length,e<=t&&n>=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=pn(r)}}function mn(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?mn(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function hn(){for(var e=window,t=dn();t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(r){n=!1}if(!n)break;t=dn((e=t.contentWindow).document)}return t}function gn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}var bn="$?",vn="$!",yn=null,wn=null;function kn(e,t){switch(e){case"button":case"input":case"select":case"textarea":return!!t.autoFocus}return!1}function xn(e,t){return"textarea"===e||"option"===e||"noscript"===e||"string"==typeof t.children||"number"==typeof t.children||"object"==typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var En="function"==typeof setTimeout?setTimeout:void 0,Sn="function"==typeof clearTimeout?clearTimeout:void 0;function Tn(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break}return e}function Dn(e){e=e.previousSibling;for(var t=0;e;){if(8===e.nodeType){var n=e.data;if("$"===n||n===vn||n===bn){if(0===t)return e;t--}else"/$"===n&&t++}e=e.previousSibling}return null}var Cn=Math.random().toString(36).slice(2),_n="__reactInternalInstance$"+Cn,An="__reactEventHandlers$"+Cn,On="__reactContainere$"+Cn;function Rn(e){var t=e[_n];if(t)return t;for(var n=e.parentNode;n;){if(t=n[On]||n[_n]){if(n=t.alternate,null!==t.child||null!==n&&null!==n.child)for(e=Dn(e);null!==e;){if(n=e[_n])return n;e=Dn(e)}return t}n=(e=n).parentNode}return null}function Pn(e){return!(e=e[_n]||e[On])||5!==e.tag&&6!==e.tag&&13!==e.tag&&3!==e.tag?null:e}function Nn(e){if(5===e.tag||6===e.tag)return e.stateNode;throw Error(a(33))}function In(e){return e[An]||null}function Ln(e){do{e=e.return}while(e&&5!==e.tag);return e||null}function jn(e,t){var n=e.stateNode;if(!n)return null;var r=m(n);if(!r)return null;n=r[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(r=!r.disabled)||(r=!("button"===(e=e.type)||"input"===e||"select"===e||"textarea"===e)),e=!r;break e;default:e=!1}if(e)return null;if(n&&"function"!=typeof n)throw Error(a(231,t,typeof n));return n}function Mn(e,t,n){(t=jn(e,n.dispatchConfig.phasedRegistrationNames[t]))&&(n._dispatchListeners=ot(n._dispatchListeners,t),n._dispatchInstances=ot(n._dispatchInstances,e))}function Fn(e){if(e&&e.dispatchConfig.phasedRegistrationNames){for(var t=e._targetInst,n=[];t;)n.push(t),t=Ln(t);for(t=n.length;0<t--;)Mn(n[t],"captured",e);for(t=0;t<n.length;t++)Mn(n[t],"bubbled",e)}}function zn(e,t,n){e&&n&&n.dispatchConfig.registrationName&&(t=jn(e,n.dispatchConfig.registrationName))&&(n._dispatchListeners=ot(n._dispatchListeners,t),n._dispatchInstances=ot(n._dispatchInstances,e))}function Bn(e){e&&e.dispatchConfig.registrationName&&zn(e._targetInst,null,e)}function Un(e){it(e,Fn)}var $n=null,qn=null,Hn=null;function Gn(){if(Hn)return Hn;var e,t,n=qn,r=n.length,o="value"in $n?$n.value:$n.textContent,i=o.length;for(e=0;e<r&&n[e]===o[e];e++);var a=r-e;for(t=1;t<=a&&n[r-t]===o[i-t];t++);return Hn=o.slice(e,1<t?1-t:void 0)}function Wn(){return!0}function Vn(){return!1}function Kn(e,t,n,r){for(var o in this.dispatchConfig=e,this._targetInst=t,this.nativeEvent=n,e=this.constructor.Interface)e.hasOwnProperty(o)&&((t=e[o])?this[o]=t(n):"target"===o?this.target=r:this[o]=n[o]);return this.isDefaultPrevented=(null!=n.defaultPrevented?n.defaultPrevented:!1===n.returnValue)?Wn:Vn,this.isPropagationStopped=Vn,this}function Qn(e,t,n,r){if(this.eventPool.length){var o=this.eventPool.pop();return this.call(o,e,t,n,r),o}return new this(e,t,n,r)}function Yn(e){if(!(e instanceof this))throw Error(a(279));e.destructor(),10>this.eventPool.length&&this.eventPool.push(e)}function Xn(e){e.eventPool=[],e.getPooled=Qn,e.release=Yn}o(Kn.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=Wn)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=Wn)},persist:function(){this.isPersistent=Wn},isPersistent:Vn,destructor:function(){var e,t=this.constructor.Interface;for(e in t)this[e]=null;this.nativeEvent=this._targetInst=this.dispatchConfig=null,this.isPropagationStopped=this.isDefaultPrevented=Vn,this._dispatchInstances=this._dispatchListeners=null}}),Kn.Interface={type:null,target:null,currentTarget:function(){return null},eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null},Kn.extend=function(e){function t(){}function n(){return r.apply(this,arguments)}var r=this;t.prototype=r.prototype;var i=new t;return o(i,n.prototype),n.prototype=i,n.prototype.constructor=n,n.Interface=o({},r.Interface,e),n.extend=r.extend,Xn(n),n},Xn(Kn);var Jn=Kn.extend({data:null}),Zn=Kn.extend({data:null}),er=[9,13,27,32],tr=C&&"CompositionEvent"in window,nr=null;C&&"documentMode"in document&&(nr=document.documentMode);var rr=C&&"TextEvent"in window&&!nr,or=C&&(!tr||nr&&8<nr&&11>=nr),ir=String.fromCharCode(32),ar={beforeInput:{phasedRegistrationNames:{bubbled:"onBeforeInput",captured:"onBeforeInputCapture"},dependencies:["compositionend","keypress","textInput","paste"]},compositionEnd:{phasedRegistrationNames:{bubbled:"onCompositionEnd",captured:"onCompositionEndCapture"},dependencies:"blur compositionend keydown keypress keyup mousedown".split(" ")},compositionStart:{phasedRegistrationNames:{bubbled:"onCompositionStart",captured:"onCompositionStartCapture"},dependencies:"blur compositionstart keydown keypress keyup mousedown".split(" ")},compositionUpdate:{phasedRegistrationNames:{bubbled:"onCompositionUpdate",captured:"onCompositionUpdateCapture"},dependencies:"blur compositionupdate keydown keypress keyup mousedown".split(" ")}},sr=!1;function lr(e,t){switch(e){case"keyup":return-1!==er.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"blur":return!0;default:return!1}}function cr(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var ur=!1;var dr={eventTypes:ar,extractEvents:function(e,t,n,r){var o;if(tr)e:{switch(e){case"compositionstart":var i=ar.compositionStart;break e;case"compositionend":i=ar.compositionEnd;break e;case"compositionupdate":i=ar.compositionUpdate;break e}i=void 0}else ur?lr(e,n)&&(i=ar.compositionEnd):"keydown"===e&&229===n.keyCode&&(i=ar.compositionStart);return i?(or&&"ko"!==n.locale&&(ur||i!==ar.compositionStart?i===ar.compositionEnd&&ur&&(o=Gn()):(qn="value"in($n=r)?$n.value:$n.textContent,ur=!0)),i=Jn.getPooled(i,t,n,r),o?i.data=o:null!==(o=cr(n))&&(i.data=o),Un(i),o=i):o=null,(e=rr?function(e,t){switch(e){case"compositionend":return cr(t);case"keypress":return 32!==t.which?null:(sr=!0,ir);case"textInput":return(e=t.data)===ir&&sr?null:e;default:return null}}(e,n):function(e,t){if(ur)return"compositionend"===e||!tr&&lr(e,t)?(e=Gn(),Hn=qn=$n=null,ur=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return or&&"ko"!==t.locale?null:t.data;default:return null}}(e,n))?((t=Zn.getPooled(ar.beforeInput,t,n,r)).data=e,Un(t)):t=null,null===o?t:null===t?o:[o,t]}},pr={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function fr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!pr[e.type]:"textarea"===t}var mr={change:{phasedRegistrationNames:{bubbled:"onChange",captured:"onChangeCapture"},dependencies:"blur change click focus input keydown keyup selectionchange".split(" ")}};function hr(e,t,n){return(e=Kn.getPooled(mr.change,e,t,n)).type="change",P(n),Un(e),e}var gr=null,br=null;function vr(e){lt(e)}function yr(e){if(ke(Nn(e)))return e}function wr(e,t){if("change"===e)return t}var kr=!1;function xr(){gr&&(gr.detachEvent("onpropertychange",Er),br=gr=null)}function Er(e){if("value"===e.propertyName&&yr(br))if(e=hr(br,e,ct(e)),F)lt(e);else{F=!0;try{I(vr,e)}finally{F=!1,B()}}}function Sr(e,t,n){"focus"===e?(xr(),br=n,(gr=t).attachEvent("onpropertychange",Er)):"blur"===e&&xr()}function Tr(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return yr(br)}function Dr(e,t){if("click"===e)return yr(t)}function Cr(e,t){if("input"===e||"change"===e)return yr(t)}C&&(kr=ut("input")&&(!document.documentMode||9<document.documentMode));var _r={eventTypes:mr,_isInputEventSupported:kr,extractEvents:function(e,t,n,r){var o=t?Nn(t):window,i=o.nodeName&&o.nodeName.toLowerCase();if("select"===i||"input"===i&&"file"===o.type)var a=wr;else if(fr(o))if(kr)a=Cr;else{a=Tr;var s=Sr}else(i=o.nodeName)&&"input"===i.toLowerCase()&&("checkbox"===o.type||"radio"===o.type)&&(a=Dr);if(a&&(a=a(e,t)))return hr(a,n,r);s&&s(e,o,t),"blur"===e&&(e=o._wrapperState)&&e.controlled&&"number"===o.type&&Ce(o,"number",o.value)}},Ar=Kn.extend({view:null,detail:null}),Or={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function Rr(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=Or[e])&&!!t[e]}function Pr(){return Rr}var Nr=0,Ir=0,Lr=!1,jr=!1,Mr=Ar.extend({screenX:null,screenY:null,clientX:null,clientY:null,pageX:null,pageY:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,getModifierState:Pr,button:null,buttons:null,relatedTarget:function(e){return e.relatedTarget||(e.fromElement===e.srcElement?e.toElement:e.fromElement)},movementX:function(e){if("movementX"in e)return e.movementX;var t=Nr;return Nr=e.screenX,Lr?"mousemove"===e.type?e.screenX-t:0:(Lr=!0,0)},movementY:function(e){if("movementY"in e)return e.movementY;var t=Ir;return Ir=e.screenY,jr?"mousemove"===e.type?e.screenY-t:0:(jr=!0,0)}}),Fr=Mr.extend({pointerId:null,width:null,height:null,pressure:null,tangentialPressure:null,tiltX:null,tiltY:null,twist:null,pointerType:null,isPrimary:null}),zr={mouseEnter:{registrationName:"onMouseEnter",dependencies:["mouseout","mouseover"]},mouseLeave:{registrationName:"onMouseLeave",dependencies:["mouseout","mouseover"]},pointerEnter:{registrationName:"onPointerEnter",dependencies:["pointerout","pointerover"]},pointerLeave:{registrationName:"onPointerLeave",dependencies:["pointerout","pointerover"]}},Br={eventTypes:zr,extractEvents:function(e,t,n,r,o){var i="mouseover"===e||"pointerover"===e,a="mouseout"===e||"pointerout"===e;if(i&&0==(32&o)&&(n.relatedTarget||n.fromElement)||!a&&!i)return null;(i=r.window===r?r:(i=r.ownerDocument)?i.defaultView||i.parentWindow:window,a)?(a=t,null!==(t=(t=n.relatedTarget||n.toElement)?Rn(t):null)&&(t!==et(t)||5!==t.tag&&6!==t.tag)&&(t=null)):a=null;if(a===t)return null;if("mouseout"===e||"mouseover"===e)var s=Mr,l=zr.mouseLeave,c=zr.mouseEnter,u="mouse";else"pointerout"!==e&&"pointerover"!==e||(s=Fr,l=zr.pointerLeave,c=zr.pointerEnter,u="pointer");if(e=null==a?i:Nn(a),i=null==t?i:Nn(t),(l=s.getPooled(l,a,n,r)).type=u+"leave",l.target=e,l.relatedTarget=i,(n=s.getPooled(c,t,n,r)).type=u+"enter",n.target=i,n.relatedTarget=e,u=t,(r=a)&&u)e:{for(c=u,a=0,e=s=r;e;e=Ln(e))a++;for(e=0,t=c;t;t=Ln(t))e++;for(;0<a-e;)s=Ln(s),a--;for(;0<e-a;)c=Ln(c),e--;for(;a--;){if(s===c||s===c.alternate)break e;s=Ln(s),c=Ln(c)}s=null}else s=null;for(c=s,s=[];r&&r!==c&&(null===(a=r.alternate)||a!==c);)s.push(r),r=Ln(r);for(r=[];u&&u!==c&&(null===(a=u.alternate)||a!==c);)r.push(u),u=Ln(u);for(u=0;u<s.length;u++)zn(s[u],"bubbled",l);for(u=r.length;0<u--;)zn(r[u],"captured",n);return 0==(64&o)?[l]:[l,n]}};var Ur="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},$r=Object.prototype.hasOwnProperty;function qr(e,t){if(Ur(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++)if(!$r.call(t,n[r])||!Ur(e[n[r]],t[n[r]]))return!1;return!0}var Hr=C&&"documentMode"in document&&11>=document.documentMode,Gr={select:{phasedRegistrationNames:{bubbled:"onSelect",captured:"onSelectCapture"},dependencies:"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange".split(" ")}},Wr=null,Vr=null,Kr=null,Qr=!1;function Yr(e,t){var n=t.window===t?t.document:9===t.nodeType?t:t.ownerDocument;return Qr||null==Wr||Wr!==dn(n)?null:("selectionStart"in(n=Wr)&&gn(n)?n={start:n.selectionStart,end:n.selectionEnd}:n={anchorNode:(n=(n.ownerDocument&&n.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:n.anchorOffset,focusNode:n.focusNode,focusOffset:n.focusOffset},Kr&&qr(Kr,n)?null:(Kr=n,(e=Kn.getPooled(Gr.select,Vr,e,t)).type="select",e.target=Wr,Un(e),e))}var Xr={eventTypes:Gr,extractEvents:function(e,t,n,r,o,i){if(!(i=!(o=i||(r.window===r?r.document:9===r.nodeType?r:r.ownerDocument)))){e:{o=Ze(o),i=T.onSelect;for(var a=0;a<i.length;a++)if(!o.has(i[a])){o=!1;break e}o=!0}i=!o}if(i)return null;switch(o=t?Nn(t):window,e){case"focus":(fr(o)||"true"===o.contentEditable)&&(Wr=o,Vr=t,Kr=null);break;case"blur":Kr=Vr=Wr=null;break;case"mousedown":Qr=!0;break;case"contextmenu":case"mouseup":case"dragend":return Qr=!1,Yr(n,r);case"selectionchange":if(Hr)break;case"keydown":case"keyup":return Yr(n,r)}return null}},Jr=Kn.extend({animationName:null,elapsedTime:null,pseudoElement:null}),Zr=Kn.extend({clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),eo=Ar.extend({relatedTarget:null});function to(e){var t=e.keyCode;return"charCode"in e?0===(e=e.charCode)&&13===t&&(e=13):e=t,10===e&&(e=13),32<=e||13===e?e:0}var no={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},ro={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},oo=Ar.extend({key:function(e){if(e.key){var t=no[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=to(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?ro[e.keyCode]||"Unidentified":""},location:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,repeat:null,locale:null,getModifierState:Pr,charCode:function(e){return"keypress"===e.type?to(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?to(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}}),io=Mr.extend({dataTransfer:null}),ao=Ar.extend({touches:null,targetTouches:null,changedTouches:null,altKey:null,metaKey:null,ctrlKey:null,shiftKey:null,getModifierState:Pr}),so=Kn.extend({propertyName:null,elapsedTime:null,pseudoElement:null}),lo=Mr.extend({deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:null,deltaMode:null}),co={eventTypes:Ft,extractEvents:function(e,t,n,r){var o=zt.get(e);if(!o)return null;switch(e){case"keypress":if(0===to(n))return null;case"keydown":case"keyup":e=oo;break;case"blur":case"focus":e=eo;break;case"click":if(2===n.button)return null;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":e=Mr;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":e=io;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":e=ao;break;case Ve:case Ke:case Qe:e=Jr;break;case Ye:e=so;break;case"scroll":e=Ar;break;case"wheel":e=lo;break;case"copy":case"cut":case"paste":e=Zr;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":e=Fr;break;default:e=Kn}return Un(t=e.getPooled(o,t,n,r)),t}};if(v)throw Error(a(101));v=Array.prototype.slice.call("ResponderEventPlugin SimpleEventPlugin EnterLeaveEventPlugin ChangeEventPlugin SelectEventPlugin BeforeInputEventPlugin".split(" ")),w(),m=In,h=Pn,g=Nn,D({SimpleEventPlugin:co,EnterLeaveEventPlugin:Br,ChangeEventPlugin:_r,SelectEventPlugin:Xr,BeforeInputEventPlugin:dr});var uo=[],po=-1;function fo(e){0>po||(e.current=uo[po],uo[po]=null,po--)}function mo(e,t){po++,uo[po]=e.current,e.current=t}var ho={},go={current:ho},bo={current:!1},vo=ho;function yo(e,t){var n=e.type.contextTypes;if(!n)return ho;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var o,i={};for(o in n)i[o]=t[o];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=i),i}function wo(e){return null!=(e=e.childContextTypes)}function ko(){fo(bo),fo(go)}function xo(e,t,n){if(go.current!==ho)throw Error(a(168));mo(go,t),mo(bo,n)}function Eo(e,t,n){var r=e.stateNode;if(e=t.childContextTypes,"function"!=typeof r.getChildContext)return n;for(var i in r=r.getChildContext())if(!(i in e))throw Error(a(108,ge(t)||"Unknown",i));return o({},n,{},r)}function So(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||ho,vo=go.current,mo(go,e),mo(bo,bo.current),!0}function To(e,t,n){var r=e.stateNode;if(!r)throw Error(a(169));n?(e=Eo(e,t,vo),r.__reactInternalMemoizedMergedChildContext=e,fo(bo),fo(go),mo(go,e)):fo(bo),mo(bo,n)}var Do=i.unstable_runWithPriority,Co=i.unstable_scheduleCallback,_o=i.unstable_cancelCallback,Ao=i.unstable_requestPaint,Oo=i.unstable_now,Ro=i.unstable_getCurrentPriorityLevel,Po=i.unstable_ImmediatePriority,No=i.unstable_UserBlockingPriority,Io=i.unstable_NormalPriority,Lo=i.unstable_LowPriority,jo=i.unstable_IdlePriority,Mo={},Fo=i.unstable_shouldYield,zo=void 0!==Ao?Ao:function(){},Bo=null,Uo=null,$o=!1,qo=Oo(),Ho=1e4>qo?Oo:function(){return Oo()-qo};function Go(){switch(Ro()){case Po:return 99;case No:return 98;case Io:return 97;case Lo:return 96;case jo:return 95;default:throw Error(a(332))}}function Wo(e){switch(e){case 99:return Po;case 98:return No;case 97:return Io;case 96:return Lo;case 95:return jo;default:throw Error(a(332))}}function Vo(e,t){return e=Wo(e),Do(e,t)}function Ko(e,t,n){return e=Wo(e),Co(e,t,n)}function Qo(e){return null===Bo?(Bo=[e],Uo=Co(Po,Xo)):Bo.push(e),Mo}function Yo(){if(null!==Uo){var e=Uo;Uo=null,_o(e)}Xo()}function Xo(){if(!$o&&null!==Bo){$o=!0;var e=0;try{var t=Bo;Vo(99,(function(){for(;e<t.length;e++){var n=t[e];do{n=n(!0)}while(null!==n)}})),Bo=null}catch(n){throw null!==Bo&&(Bo=Bo.slice(e+1)),Co(Po,Yo),n}finally{$o=!1}}}function Jo(e,t,n){return 1073741821-(1+((1073741821-e+t/10)/(n/=10)|0))*n}function Zo(e,t){if(e&&e.defaultProps)for(var n in t=o({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}var ei={current:null},ti=null,ni=null,ri=null;function oi(){ri=ni=ti=null}function ii(e){var t=ei.current;fo(ei),e.type._context._currentValue=t}function ai(e,t){for(;null!==e;){var n=e.alternate;if(e.childExpirationTime<t)e.childExpirationTime=t,null!==n&&n.childExpirationTime<t&&(n.childExpirationTime=t);else{if(!(null!==n&&n.childExpirationTime<t))break;n.childExpirationTime=t}e=e.return}}function si(e,t){ti=e,ri=ni=null,null!==(e=e.dependencies)&&null!==e.firstContext&&(e.expirationTime>=t&&(Ia=!0),e.firstContext=null)}function li(e,t){if(ri!==e&&!1!==t&&0!==t)if("number"==typeof t&&1073741823!==t||(ri=e,t=1073741823),t={context:e,observedBits:t,next:null},null===ni){if(null===ti)throw Error(a(308));ni=t,ti.dependencies={expirationTime:0,firstContext:t,responders:null}}else ni=ni.next=t;return e._currentValue}var ci=!1;function ui(e){e.updateQueue={baseState:e.memoizedState,baseQueue:null,shared:{pending:null},effects:null}}function di(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,baseQueue:e.baseQueue,shared:e.shared,effects:e.effects})}function pi(e,t){return(e={expirationTime:e,suspenseConfig:t,tag:0,payload:null,callback:null,next:null}).next=e}function fi(e,t){if(null!==(e=e.updateQueue)){var n=(e=e.shared).pending;null===n?t.next=t:(t.next=n.next,n.next=t),e.pending=t}}function mi(e,t){var n=e.alternate;null!==n&&di(n,e),null===(n=(e=e.updateQueue).baseQueue)?(e.baseQueue=t.next=t,t.next=t):(t.next=n.next,n.next=t)}function hi(e,t,n,r){var i=e.updateQueue;ci=!1;var a=i.baseQueue,s=i.shared.pending;if(null!==s){if(null!==a){var l=a.next;a.next=s.next,s.next=l}a=s,i.shared.pending=null,null!==(l=e.alternate)&&(null!==(l=l.updateQueue)&&(l.baseQueue=s))}if(null!==a){l=a.next;var c=i.baseState,u=0,d=null,p=null,f=null;if(null!==l)for(var m=l;;){if((s=m.expirationTime)<r){var h={expirationTime:m.expirationTime,suspenseConfig:m.suspenseConfig,tag:m.tag,payload:m.payload,callback:m.callback,next:null};null===f?(p=f=h,d=c):f=f.next=h,s>u&&(u=s)}else{null!==f&&(f=f.next={expirationTime:1073741823,suspenseConfig:m.suspenseConfig,tag:m.tag,payload:m.payload,callback:m.callback,next:null}),fl(s,m.suspenseConfig);e:{var g=e,b=m;switch(s=t,h=n,b.tag){case 1:if("function"==typeof(g=b.payload)){c=g.call(h,c,s);break e}c=g;break e;case 3:g.effectTag=-4097&g.effectTag|64;case 0:if(null==(s="function"==typeof(g=b.payload)?g.call(h,c,s):g))break e;c=o({},c,s);break e;case 2:ci=!0}}null!==m.callback&&(e.effectTag|=32,null===(s=i.effects)?i.effects=[m]:s.push(m))}if(null===(m=m.next)||m===l){if(null===(s=i.shared.pending))break;m=a.next=s.next,s.next=l,i.baseQueue=a=s,i.shared.pending=null}}null===f?d=c:f.next=p,i.baseState=d,i.baseQueue=f,ml(u),e.expirationTime=u,e.memoizedState=c}}function gi(e,t,n){if(e=t.effects,t.effects=null,null!==e)for(t=0;t<e.length;t++){var r=e[t],o=r.callback;if(null!==o){if(r.callback=null,r=o,o=n,"function"!=typeof r)throw Error(a(191,r));r.call(o)}}}var bi=Y.ReactCurrentBatchConfig,vi=(new r.Component).refs;function yi(e,t,n,r){n=null==(n=n(r,t=e.memoizedState))?t:o({},t,n),e.memoizedState=n,0===e.expirationTime&&(e.updateQueue.baseState=n)}var wi={isMounted:function(e){return!!(e=e._reactInternalFiber)&&et(e)===e},enqueueSetState:function(e,t,n){e=e._reactInternalFiber;var r=el(),o=bi.suspense;(o=pi(r=tl(r,e,o),o)).payload=t,null!=n&&(o.callback=n),fi(e,o),nl(e,r)},enqueueReplaceState:function(e,t,n){e=e._reactInternalFiber;var r=el(),o=bi.suspense;(o=pi(r=tl(r,e,o),o)).tag=1,o.payload=t,null!=n&&(o.callback=n),fi(e,o),nl(e,r)},enqueueForceUpdate:function(e,t){e=e._reactInternalFiber;var n=el(),r=bi.suspense;(r=pi(n=tl(n,e,r),r)).tag=2,null!=t&&(r.callback=t),fi(e,r),nl(e,n)}};function ki(e,t,n,r,o,i,a){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,i,a):!t.prototype||!t.prototype.isPureReactComponent||(!qr(n,r)||!qr(o,i))}function xi(e,t,n){var r=!1,o=ho,i=t.contextType;return"object"==typeof i&&null!==i?i=li(i):(o=wo(t)?vo:go.current,i=(r=null!=(r=t.contextTypes))?yo(e,o):ho),t=new t(n,i),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=wi,e.stateNode=t,t._reactInternalFiber=e,r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=o,e.__reactInternalMemoizedMaskedChildContext=i),t}function Ei(e,t,n,r){e=t.state,"function"==typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,r),"function"==typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&wi.enqueueReplaceState(t,t.state,null)}function Si(e,t,n,r){var o=e.stateNode;o.props=n,o.state=e.memoizedState,o.refs=vi,ui(e);var i=t.contextType;"object"==typeof i&&null!==i?o.context=li(i):(i=wo(t)?vo:go.current,o.context=yo(e,i)),hi(e,n,o,r),o.state=e.memoizedState,"function"==typeof(i=t.getDerivedStateFromProps)&&(yi(e,t,i,n),o.state=e.memoizedState),"function"==typeof t.getDerivedStateFromProps||"function"==typeof o.getSnapshotBeforeUpdate||"function"!=typeof o.UNSAFE_componentWillMount&&"function"!=typeof o.componentWillMount||(t=o.state,"function"==typeof o.componentWillMount&&o.componentWillMount(),"function"==typeof o.UNSAFE_componentWillMount&&o.UNSAFE_componentWillMount(),t!==o.state&&wi.enqueueReplaceState(o,o.state,null),hi(e,n,o,r),o.state=e.memoizedState),"function"==typeof o.componentDidMount&&(e.effectTag|=4)}var Ti=Array.isArray;function Di(e,t,n){if(null!==(e=n.ref)&&"function"!=typeof e&&"object"!=typeof e){if(n._owner){if(n=n._owner){if(1!==n.tag)throw Error(a(309));var r=n.stateNode}if(!r)throw Error(a(147,e));var o=""+e;return null!==t&&null!==t.ref&&"function"==typeof t.ref&&t.ref._stringRef===o?t.ref:((t=function(e){var t=r.refs;t===vi&&(t=r.refs={}),null===e?delete t[o]:t[o]=e})._stringRef=o,t)}if("string"!=typeof e)throw Error(a(284));if(!n._owner)throw Error(a(290,e))}return e}function Ci(e,t){if("textarea"!==e.type)throw Error(a(31,"[object Object]"===Object.prototype.toString.call(t)?"object with keys {"+Object.keys(t).join(", ")+"}":t,""))}function _i(e){function t(t,n){if(e){var r=t.lastEffect;null!==r?(r.nextEffect=n,t.lastEffect=n):t.firstEffect=t.lastEffect=n,n.nextEffect=null,n.effectTag=8}}function n(n,r){if(!e)return null;for(;null!==r;)t(n,r),r=r.sibling;return null}function r(e,t){for(e=new Map;null!==t;)null!==t.key?e.set(t.key,t):e.set(t.index,t),t=t.sibling;return e}function o(e,t){return(e=Il(e,t)).index=0,e.sibling=null,e}function i(t,n,r){return t.index=r,e?null!==(r=t.alternate)?(r=r.index)<n?(t.effectTag=2,n):r:(t.effectTag=2,n):n}function s(t){return e&&null===t.alternate&&(t.effectTag=2),t}function l(e,t,n,r){return null===t||6!==t.tag?((t=Ml(n,e.mode,r)).return=e,t):((t=o(t,n)).return=e,t)}function c(e,t,n,r){return null!==t&&t.elementType===n.type?((r=o(t,n.props)).ref=Di(e,t,n),r.return=e,r):((r=Ll(n.type,n.key,n.props,null,e.mode,r)).ref=Di(e,t,n),r.return=e,r)}function u(e,t,n,r){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=Fl(n,e.mode,r)).return=e,t):((t=o(t,n.children||[])).return=e,t)}function d(e,t,n,r,i){return null===t||7!==t.tag?((t=jl(n,e.mode,r,i)).return=e,t):((t=o(t,n)).return=e,t)}function p(e,t,n){if("string"==typeof t||"number"==typeof t)return(t=Ml(""+t,e.mode,n)).return=e,t;if("object"==typeof t&&null!==t){switch(t.$$typeof){case ee:return(n=Ll(t.type,t.key,t.props,null,e.mode,n)).ref=Di(e,null,t),n.return=e,n;case te:return(t=Fl(t,e.mode,n)).return=e,t}if(Ti(t)||he(t))return(t=jl(t,e.mode,n,null)).return=e,t;Ci(e,t)}return null}function f(e,t,n,r){var o=null!==t?t.key:null;if("string"==typeof n||"number"==typeof n)return null!==o?null:l(e,t,""+n,r);if("object"==typeof n&&null!==n){switch(n.$$typeof){case ee:return n.key===o?n.type===ne?d(e,t,n.props.children,r,o):c(e,t,n,r):null;case te:return n.key===o?u(e,t,n,r):null}if(Ti(n)||he(n))return null!==o?null:d(e,t,n,r,null);Ci(e,n)}return null}function m(e,t,n,r,o){if("string"==typeof r||"number"==typeof r)return l(t,e=e.get(n)||null,""+r,o);if("object"==typeof r&&null!==r){switch(r.$$typeof){case ee:return e=e.get(null===r.key?n:r.key)||null,r.type===ne?d(t,e,r.props.children,o,r.key):c(t,e,r,o);case te:return u(t,e=e.get(null===r.key?n:r.key)||null,r,o)}if(Ti(r)||he(r))return d(t,e=e.get(n)||null,r,o,null);Ci(t,r)}return null}function h(o,a,s,l){for(var c=null,u=null,d=a,h=a=0,g=null;null!==d&&h<s.length;h++){d.index>h?(g=d,d=null):g=d.sibling;var b=f(o,d,s[h],l);if(null===b){null===d&&(d=g);break}e&&d&&null===b.alternate&&t(o,d),a=i(b,a,h),null===u?c=b:u.sibling=b,u=b,d=g}if(h===s.length)return n(o,d),c;if(null===d){for(;h<s.length;h++)null!==(d=p(o,s[h],l))&&(a=i(d,a,h),null===u?c=d:u.sibling=d,u=d);return c}for(d=r(o,d);h<s.length;h++)null!==(g=m(d,o,h,s[h],l))&&(e&&null!==g.alternate&&d.delete(null===g.key?h:g.key),a=i(g,a,h),null===u?c=g:u.sibling=g,u=g);return e&&d.forEach((function(e){return t(o,e)})),c}function g(o,s,l,c){var u=he(l);if("function"!=typeof u)throw Error(a(150));if(null==(l=u.call(l)))throw Error(a(151));for(var d=u=null,h=s,g=s=0,b=null,v=l.next();null!==h&&!v.done;g++,v=l.next()){h.index>g?(b=h,h=null):b=h.sibling;var y=f(o,h,v.value,c);if(null===y){null===h&&(h=b);break}e&&h&&null===y.alternate&&t(o,h),s=i(y,s,g),null===d?u=y:d.sibling=y,d=y,h=b}if(v.done)return n(o,h),u;if(null===h){for(;!v.done;g++,v=l.next())null!==(v=p(o,v.value,c))&&(s=i(v,s,g),null===d?u=v:d.sibling=v,d=v);return u}for(h=r(o,h);!v.done;g++,v=l.next())null!==(v=m(h,o,g,v.value,c))&&(e&&null!==v.alternate&&h.delete(null===v.key?g:v.key),s=i(v,s,g),null===d?u=v:d.sibling=v,d=v);return e&&h.forEach((function(e){return t(o,e)})),u}return function(e,r,i,l){var c="object"==typeof i&&null!==i&&i.type===ne&&null===i.key;c&&(i=i.props.children);var u="object"==typeof i&&null!==i;if(u)switch(i.$$typeof){case ee:e:{for(u=i.key,c=r;null!==c;){if(c.key===u){switch(c.tag){case 7:if(i.type===ne){n(e,c.sibling),(r=o(c,i.props.children)).return=e,e=r;break e}break;default:if(c.elementType===i.type){n(e,c.sibling),(r=o(c,i.props)).ref=Di(e,c,i),r.return=e,e=r;break e}}n(e,c);break}t(e,c),c=c.sibling}i.type===ne?((r=jl(i.props.children,e.mode,l,i.key)).return=e,e=r):((l=Ll(i.type,i.key,i.props,null,e.mode,l)).ref=Di(e,r,i),l.return=e,e=l)}return s(e);case te:e:{for(c=i.key;null!==r;){if(r.key===c){if(4===r.tag&&r.stateNode.containerInfo===i.containerInfo&&r.stateNode.implementation===i.implementation){n(e,r.sibling),(r=o(r,i.children||[])).return=e,e=r;break e}n(e,r);break}t(e,r),r=r.sibling}(r=Fl(i,e.mode,l)).return=e,e=r}return s(e)}if("string"==typeof i||"number"==typeof i)return i=""+i,null!==r&&6===r.tag?(n(e,r.sibling),(r=o(r,i)).return=e,e=r):(n(e,r),(r=Ml(i,e.mode,l)).return=e,e=r),s(e);if(Ti(i))return h(e,r,i,l);if(he(i))return g(e,r,i,l);if(u&&Ci(e,i),void 0===i&&!c)switch(e.tag){case 1:case 0:throw e=e.type,Error(a(152,e.displayName||e.name||"Component"))}return n(e,r)}}var Ai=_i(!0),Oi=_i(!1),Ri={},Pi={current:Ri},Ni={current:Ri},Ii={current:Ri};function Li(e){if(e===Ri)throw Error(a(174));return e}function ji(e,t){switch(mo(Ii,t),mo(Ni,e),mo(Pi,Ri),e=t.nodeType){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:Me(null,"");break;default:t=Me(t=(e=8===e?t.parentNode:t).namespaceURI||null,e=e.tagName)}fo(Pi),mo(Pi,t)}function Mi(){fo(Pi),fo(Ni),fo(Ii)}function Fi(e){Li(Ii.current);var t=Li(Pi.current),n=Me(t,e.type);t!==n&&(mo(Ni,e),mo(Pi,n))}function zi(e){Ni.current===e&&(fo(Pi),fo(Ni))}var Bi={current:0};function Ui(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||n.data===bn||n.data===vn))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(0!=(64&t.effectTag))return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}function $i(e,t){return{responder:e,props:t}}var qi=Y.ReactCurrentDispatcher,Hi=Y.ReactCurrentBatchConfig,Gi=0,Wi=null,Vi=null,Ki=null,Qi=!1;function Yi(){throw Error(a(321))}function Xi(e,t){if(null===t)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!Ur(e[n],t[n]))return!1;return!0}function Ji(e,t,n,r,o,i){if(Gi=i,Wi=t,t.memoizedState=null,t.updateQueue=null,t.expirationTime=0,qi.current=null===e||null===e.memoizedState?ka:xa,e=n(r,o),t.expirationTime===Gi){i=0;do{if(t.expirationTime=0,!(25>i))throw Error(a(301));i+=1,Ki=Vi=null,t.updateQueue=null,qi.current=Ea,e=n(r,o)}while(t.expirationTime===Gi)}if(qi.current=wa,t=null!==Vi&&null!==Vi.next,Gi=0,Ki=Vi=Wi=null,Qi=!1,t)throw Error(a(300));return e}function Zi(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===Ki?Wi.memoizedState=Ki=e:Ki=Ki.next=e,Ki}function ea(){if(null===Vi){var e=Wi.alternate;e=null!==e?e.memoizedState:null}else e=Vi.next;var t=null===Ki?Wi.memoizedState:Ki.next;if(null!==t)Ki=t,Vi=e;else{if(null===e)throw Error(a(310));e={memoizedState:(Vi=e).memoizedState,baseState:Vi.baseState,baseQueue:Vi.baseQueue,queue:Vi.queue,next:null},null===Ki?Wi.memoizedState=Ki=e:Ki=Ki.next=e}return Ki}function ta(e,t){return"function"==typeof t?t(e):t}function na(e){var t=ea(),n=t.queue;if(null===n)throw Error(a(311));n.lastRenderedReducer=e;var r=Vi,o=r.baseQueue,i=n.pending;if(null!==i){if(null!==o){var s=o.next;o.next=i.next,i.next=s}r.baseQueue=o=i,n.pending=null}if(null!==o){o=o.next,r=r.baseState;var l=s=i=null,c=o;do{var u=c.expirationTime;if(u<Gi){var d={expirationTime:c.expirationTime,suspenseConfig:c.suspenseConfig,action:c.action,eagerReducer:c.eagerReducer,eagerState:c.eagerState,next:null};null===l?(s=l=d,i=r):l=l.next=d,u>Wi.expirationTime&&(Wi.expirationTime=u,ml(u))}else null!==l&&(l=l.next={expirationTime:1073741823,suspenseConfig:c.suspenseConfig,action:c.action,eagerReducer:c.eagerReducer,eagerState:c.eagerState,next:null}),fl(u,c.suspenseConfig),r=c.eagerReducer===e?c.eagerState:e(r,c.action);c=c.next}while(null!==c&&c!==o);null===l?i=r:l.next=s,Ur(r,t.memoizedState)||(Ia=!0),t.memoizedState=r,t.baseState=i,t.baseQueue=l,n.lastRenderedState=r}return[t.memoizedState,n.dispatch]}function ra(e){var t=ea(),n=t.queue;if(null===n)throw Error(a(311));n.lastRenderedReducer=e;var r=n.dispatch,o=n.pending,i=t.memoizedState;if(null!==o){n.pending=null;var s=o=o.next;do{i=e(i,s.action),s=s.next}while(s!==o);Ur(i,t.memoizedState)||(Ia=!0),t.memoizedState=i,null===t.baseQueue&&(t.baseState=i),n.lastRenderedState=i}return[i,r]}function oa(e){var t=Zi();return"function"==typeof e&&(e=e()),t.memoizedState=t.baseState=e,e=(e=t.queue={pending:null,dispatch:null,lastRenderedReducer:ta,lastRenderedState:e}).dispatch=ya.bind(null,Wi,e),[t.memoizedState,e]}function ia(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},null===(t=Wi.updateQueue)?(t={lastEffect:null},Wi.updateQueue=t,t.lastEffect=e.next=e):null===(n=t.lastEffect)?t.lastEffect=e.next=e:(r=n.next,n.next=e,e.next=r,t.lastEffect=e),e}function aa(){return ea().memoizedState}function sa(e,t,n,r){var o=Zi();Wi.effectTag|=e,o.memoizedState=ia(1|t,n,void 0,void 0===r?null:r)}function la(e,t,n,r){var o=ea();r=void 0===r?null:r;var i=void 0;if(null!==Vi){var a=Vi.memoizedState;if(i=a.destroy,null!==r&&Xi(r,a.deps))return void ia(t,n,i,r)}Wi.effectTag|=e,o.memoizedState=ia(1|t,n,i,r)}function ca(e,t){return sa(516,4,e,t)}function ua(e,t){return la(516,4,e,t)}function da(e,t){return la(4,2,e,t)}function pa(e,t){return"function"==typeof t?(e=e(),t(e),function(){t(null)}):null!=t?(e=e(),t.current=e,function(){t.current=null}):void 0}function fa(e,t,n){return n=null!=n?n.concat([e]):null,la(4,2,pa.bind(null,t,e),n)}function ma(){}function ha(e,t){return Zi().memoizedState=[e,void 0===t?null:t],e}function ga(e,t){var n=ea();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&Xi(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function ba(e,t){var n=ea();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&Xi(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)}function va(e,t,n){var r=Go();Vo(98>r?98:r,(function(){e(!0)})),Vo(97<r?97:r,(function(){var r=Hi.suspense;Hi.suspense=void 0===t?null:t;try{e(!1),n()}finally{Hi.suspense=r}}))}function ya(e,t,n){var r=el(),o=bi.suspense;o={expirationTime:r=tl(r,e,o),suspenseConfig:o,action:n,eagerReducer:null,eagerState:null,next:null};var i=t.pending;if(null===i?o.next=o:(o.next=i.next,i.next=o),t.pending=o,i=e.alternate,e===Wi||null!==i&&i===Wi)Qi=!0,o.expirationTime=Gi,Wi.expirationTime=Gi;else{if(0===e.expirationTime&&(null===i||0===i.expirationTime)&&null!==(i=t.lastRenderedReducer))try{var a=t.lastRenderedState,s=i(a,n);if(o.eagerReducer=i,o.eagerState=s,Ur(s,a))return}catch(l){}nl(e,r)}}var wa={readContext:li,useCallback:Yi,useContext:Yi,useEffect:Yi,useImperativeHandle:Yi,useLayoutEffect:Yi,useMemo:Yi,useReducer:Yi,useRef:Yi,useState:Yi,useDebugValue:Yi,useResponder:Yi,useDeferredValue:Yi,useTransition:Yi},ka={readContext:li,useCallback:ha,useContext:li,useEffect:ca,useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,sa(4,2,pa.bind(null,t,e),n)},useLayoutEffect:function(e,t){return sa(4,2,e,t)},useMemo:function(e,t){var n=Zi();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Zi();return t=void 0!==n?n(t):t,r.memoizedState=r.baseState=t,e=(e=r.queue={pending:null,dispatch:null,lastRenderedReducer:e,lastRenderedState:t}).dispatch=ya.bind(null,Wi,e),[r.memoizedState,e]},useRef:function(e){return e={current:e},Zi().memoizedState=e},useState:oa,useDebugValue:ma,useResponder:$i,useDeferredValue:function(e,t){var n=oa(e),r=n[0],o=n[1];return ca((function(){var n=Hi.suspense;Hi.suspense=void 0===t?null:t;try{o(e)}finally{Hi.suspense=n}}),[e,t]),r},useTransition:function(e){var t=oa(!1),n=t[0];return t=t[1],[ha(va.bind(null,t,e),[t,e]),n]}},xa={readContext:li,useCallback:ga,useContext:li,useEffect:ua,useImperativeHandle:fa,useLayoutEffect:da,useMemo:ba,useReducer:na,useRef:aa,useState:function(){return na(ta)},useDebugValue:ma,useResponder:$i,useDeferredValue:function(e,t){var n=na(ta),r=n[0],o=n[1];return ua((function(){var n=Hi.suspense;Hi.suspense=void 0===t?null:t;try{o(e)}finally{Hi.suspense=n}}),[e,t]),r},useTransition:function(e){var t=na(ta),n=t[0];return t=t[1],[ga(va.bind(null,t,e),[t,e]),n]}},Ea={readContext:li,useCallback:ga,useContext:li,useEffect:ua,useImperativeHandle:fa,useLayoutEffect:da,useMemo:ba,useReducer:ra,useRef:aa,useState:function(){return ra(ta)},useDebugValue:ma,useResponder:$i,useDeferredValue:function(e,t){var n=ra(ta),r=n[0],o=n[1];return ua((function(){var n=Hi.suspense;Hi.suspense=void 0===t?null:t;try{o(e)}finally{Hi.suspense=n}}),[e,t]),r},useTransition:function(e){var t=ra(ta),n=t[0];return t=t[1],[ga(va.bind(null,t,e),[t,e]),n]}},Sa=null,Ta=null,Da=!1;function Ca(e,t){var n=Pl(5,null,null,0);n.elementType="DELETED",n.type="DELETED",n.stateNode=t,n.return=e,n.effectTag=8,null!==e.lastEffect?(e.lastEffect.nextEffect=n,e.lastEffect=n):e.firstEffect=e.lastEffect=n}function _a(e,t){switch(e.tag){case 5:var n=e.type;return null!==(t=1!==t.nodeType||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t)&&(e.stateNode=t,!0);case 6:return null!==(t=""===e.pendingProps||3!==t.nodeType?null:t)&&(e.stateNode=t,!0);case 13:default:return!1}}function Aa(e){if(Da){var t=Ta;if(t){var n=t;if(!_a(e,t)){if(!(t=Tn(n.nextSibling))||!_a(e,t))return e.effectTag=-1025&e.effectTag|2,Da=!1,void(Sa=e);Ca(Sa,n)}Sa=e,Ta=Tn(t.firstChild)}else e.effectTag=-1025&e.effectTag|2,Da=!1,Sa=e}}function Oa(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag;)e=e.return;Sa=e}function Ra(e){if(e!==Sa)return!1;if(!Da)return Oa(e),Da=!0,!1;var t=e.type;if(5!==e.tag||"head"!==t&&"body"!==t&&!xn(t,e.memoizedProps))for(t=Ta;t;)Ca(e,t),t=Tn(t.nextSibling);if(Oa(e),13===e.tag){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(a(317));e:{for(e=e.nextSibling,t=0;e;){if(8===e.nodeType){var n=e.data;if("/$"===n){if(0===t){Ta=Tn(e.nextSibling);break e}t--}else"$"!==n&&n!==vn&&n!==bn||t++}e=e.nextSibling}Ta=null}}else Ta=Sa?Tn(e.stateNode.nextSibling):null;return!0}function Pa(){Ta=Sa=null,Da=!1}var Na=Y.ReactCurrentOwner,Ia=!1;function La(e,t,n,r){t.child=null===e?Oi(t,null,n,r):Ai(t,e.child,n,r)}function ja(e,t,n,r,o){n=n.render;var i=t.ref;return si(t,o),r=Ji(e,t,n,r,i,o),null===e||Ia?(t.effectTag|=1,La(e,t,r,o),t.child):(t.updateQueue=e.updateQueue,t.effectTag&=-517,e.expirationTime<=o&&(e.expirationTime=0),Ja(e,t,o))}function Ma(e,t,n,r,o,i){if(null===e){var a=n.type;return"function"!=typeof a||Nl(a)||void 0!==a.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=Ll(n.type,null,r,null,t.mode,i)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=a,Fa(e,t,a,r,o,i))}return a=e.child,o<i&&(o=a.memoizedProps,(n=null!==(n=n.compare)?n:qr)(o,r)&&e.ref===t.ref)?Ja(e,t,i):(t.effectTag|=1,(e=Il(a,r)).ref=t.ref,e.return=t,t.child=e)}function Fa(e,t,n,r,o,i){return null!==e&&qr(e.memoizedProps,r)&&e.ref===t.ref&&(Ia=!1,o<i)?(t.expirationTime=e.expirationTime,Ja(e,t,i)):Ba(e,t,n,r,i)}function za(e,t){var n=t.ref;(null===e&&null!==n||null!==e&&e.ref!==n)&&(t.effectTag|=128)}function Ba(e,t,n,r,o){var i=wo(n)?vo:go.current;return i=yo(t,i),si(t,o),n=Ji(e,t,n,r,i,o),null===e||Ia?(t.effectTag|=1,La(e,t,n,o),t.child):(t.updateQueue=e.updateQueue,t.effectTag&=-517,e.expirationTime<=o&&(e.expirationTime=0),Ja(e,t,o))}function Ua(e,t,n,r,o){if(wo(n)){var i=!0;So(t)}else i=!1;if(si(t,o),null===t.stateNode)null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),xi(t,n,r),Si(t,n,r,o),r=!0;else if(null===e){var a=t.stateNode,s=t.memoizedProps;a.props=s;var l=a.context,c=n.contextType;"object"==typeof c&&null!==c?c=li(c):c=yo(t,c=wo(n)?vo:go.current);var u=n.getDerivedStateFromProps,d="function"==typeof u||"function"==typeof a.getSnapshotBeforeUpdate;d||"function"!=typeof a.UNSAFE_componentWillReceiveProps&&"function"!=typeof a.componentWillReceiveProps||(s!==r||l!==c)&&Ei(t,a,r,c),ci=!1;var p=t.memoizedState;a.state=p,hi(t,r,a,o),l=t.memoizedState,s!==r||p!==l||bo.current||ci?("function"==typeof u&&(yi(t,n,u,r),l=t.memoizedState),(s=ci||ki(t,n,s,r,p,l,c))?(d||"function"!=typeof a.UNSAFE_componentWillMount&&"function"!=typeof a.componentWillMount||("function"==typeof a.componentWillMount&&a.componentWillMount(),"function"==typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount()),"function"==typeof a.componentDidMount&&(t.effectTag|=4)):("function"==typeof a.componentDidMount&&(t.effectTag|=4),t.memoizedProps=r,t.memoizedState=l),a.props=r,a.state=l,a.context=c,r=s):("function"==typeof a.componentDidMount&&(t.effectTag|=4),r=!1)}else a=t.stateNode,di(e,t),s=t.memoizedProps,a.props=t.type===t.elementType?s:Zo(t.type,s),l=a.context,"object"==typeof(c=n.contextType)&&null!==c?c=li(c):c=yo(t,c=wo(n)?vo:go.current),(d="function"==typeof(u=n.getDerivedStateFromProps)||"function"==typeof a.getSnapshotBeforeUpdate)||"function"!=typeof a.UNSAFE_componentWillReceiveProps&&"function"!=typeof a.componentWillReceiveProps||(s!==r||l!==c)&&Ei(t,a,r,c),ci=!1,l=t.memoizedState,a.state=l,hi(t,r,a,o),p=t.memoizedState,s!==r||l!==p||bo.current||ci?("function"==typeof u&&(yi(t,n,u,r),p=t.memoizedState),(u=ci||ki(t,n,s,r,l,p,c))?(d||"function"!=typeof a.UNSAFE_componentWillUpdate&&"function"!=typeof a.componentWillUpdate||("function"==typeof a.componentWillUpdate&&a.componentWillUpdate(r,p,c),"function"==typeof a.UNSAFE_componentWillUpdate&&a.UNSAFE_componentWillUpdate(r,p,c)),"function"==typeof a.componentDidUpdate&&(t.effectTag|=4),"function"==typeof a.getSnapshotBeforeUpdate&&(t.effectTag|=256)):("function"!=typeof a.componentDidUpdate||s===e.memoizedProps&&l===e.memoizedState||(t.effectTag|=4),"function"!=typeof a.getSnapshotBeforeUpdate||s===e.memoizedProps&&l===e.memoizedState||(t.effectTag|=256),t.memoizedProps=r,t.memoizedState=p),a.props=r,a.state=p,a.context=c,r=u):("function"!=typeof a.componentDidUpdate||s===e.memoizedProps&&l===e.memoizedState||(t.effectTag|=4),"function"!=typeof a.getSnapshotBeforeUpdate||s===e.memoizedProps&&l===e.memoizedState||(t.effectTag|=256),r=!1);return $a(e,t,n,r,i,o)}function $a(e,t,n,r,o,i){za(e,t);var a=0!=(64&t.effectTag);if(!r&&!a)return o&&To(t,n,!1),Ja(e,t,i);r=t.stateNode,Na.current=t;var s=a&&"function"!=typeof n.getDerivedStateFromError?null:r.render();return t.effectTag|=1,null!==e&&a?(t.child=Ai(t,e.child,null,i),t.child=Ai(t,null,s,i)):La(e,t,s,i),t.memoizedState=r.state,o&&To(t,n,!0),t.child}function qa(e){var t=e.stateNode;t.pendingContext?xo(0,t.pendingContext,t.pendingContext!==t.context):t.context&&xo(0,t.context,!1),ji(e,t.containerInfo)}var Ha,Ga,Wa,Va={dehydrated:null,retryTime:0};function Ka(e,t,n){var r,o=t.mode,i=t.pendingProps,a=Bi.current,s=!1;if((r=0!=(64&t.effectTag))||(r=0!=(2&a)&&(null===e||null!==e.memoizedState)),r?(s=!0,t.effectTag&=-65):null!==e&&null===e.memoizedState||void 0===i.fallback||!0===i.unstable_avoidThisFallback||(a|=1),mo(Bi,1&a),null===e){if(void 0!==i.fallback&&Aa(t),s){if(s=i.fallback,(i=jl(null,o,0,null)).return=t,0==(2&t.mode))for(e=null!==t.memoizedState?t.child.child:t.child,i.child=e;null!==e;)e.return=i,e=e.sibling;return(n=jl(s,o,n,null)).return=t,i.sibling=n,t.memoizedState=Va,t.child=i,n}return o=i.children,t.memoizedState=null,t.child=Oi(t,null,o,n)}if(null!==e.memoizedState){if(o=(e=e.child).sibling,s){if(i=i.fallback,(n=Il(e,e.pendingProps)).return=t,0==(2&t.mode)&&(s=null!==t.memoizedState?t.child.child:t.child)!==e.child)for(n.child=s;null!==s;)s.return=n,s=s.sibling;return(o=Il(o,i)).return=t,n.sibling=o,n.childExpirationTime=0,t.memoizedState=Va,t.child=n,o}return n=Ai(t,e.child,i.children,n),t.memoizedState=null,t.child=n}if(e=e.child,s){if(s=i.fallback,(i=jl(null,o,0,null)).return=t,i.child=e,null!==e&&(e.return=i),0==(2&t.mode))for(e=null!==t.memoizedState?t.child.child:t.child,i.child=e;null!==e;)e.return=i,e=e.sibling;return(n=jl(s,o,n,null)).return=t,i.sibling=n,n.effectTag|=2,i.childExpirationTime=0,t.memoizedState=Va,t.child=i,n}return t.memoizedState=null,t.child=Ai(t,e,i.children,n)}function Qa(e,t){e.expirationTime<t&&(e.expirationTime=t);var n=e.alternate;null!==n&&n.expirationTime<t&&(n.expirationTime=t),ai(e.return,t)}function Ya(e,t,n,r,o,i){var a=e.memoizedState;null===a?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailExpiration:0,tailMode:o,lastEffect:i}:(a.isBackwards=t,a.rendering=null,a.renderingStartTime=0,a.last=r,a.tail=n,a.tailExpiration=0,a.tailMode=o,a.lastEffect=i)}function Xa(e,t,n){var r=t.pendingProps,o=r.revealOrder,i=r.tail;if(La(e,t,r.children,n),0!=(2&(r=Bi.current)))r=1&r|2,t.effectTag|=64;else{if(null!==e&&0!=(64&e.effectTag))e:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&Qa(e,n);else if(19===e.tag)Qa(e,n);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;null===e.sibling;){if(null===e.return||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}if(mo(Bi,r),0==(2&t.mode))t.memoizedState=null;else switch(o){case"forwards":for(n=t.child,o=null;null!==n;)null!==(e=n.alternate)&&null===Ui(e)&&(o=n),n=n.sibling;null===(n=o)?(o=t.child,t.child=null):(o=n.sibling,n.sibling=null),Ya(t,!1,o,n,i,t.lastEffect);break;case"backwards":for(n=null,o=t.child,t.child=null;null!==o;){if(null!==(e=o.alternate)&&null===Ui(e)){t.child=o;break}e=o.sibling,o.sibling=n,n=o,o=e}Ya(t,!0,n,null,i,t.lastEffect);break;case"together":Ya(t,!1,null,null,void 0,t.lastEffect);break;default:t.memoizedState=null}return t.child}function Ja(e,t,n){null!==e&&(t.dependencies=e.dependencies);var r=t.expirationTime;if(0!==r&&ml(r),t.childExpirationTime<n)return null;if(null!==e&&t.child!==e.child)throw Error(a(153));if(null!==t.child){for(n=Il(e=t.child,e.pendingProps),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=Il(e,e.pendingProps)).return=t;n.sibling=null}return t.child}function Za(e,t){switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;null!==t;)null!==t.alternate&&(n=t),t=t.sibling;null===n?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var r=null;null!==n;)null!==n.alternate&&(r=n),n=n.sibling;null===r?t||null===e.tail?e.tail=null:e.tail.sibling=null:r.sibling=null}}function es(e,t,n){var r=t.pendingProps;switch(t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:return wo(t.type)&&ko(),null;case 3:return Mi(),fo(bo),fo(go),(n=t.stateNode).pendingContext&&(n.context=n.pendingContext,n.pendingContext=null),null!==e&&null!==e.child||!Ra(t)||(t.effectTag|=4),null;case 5:zi(t),n=Li(Ii.current);var i=t.type;if(null!==e&&null!=t.stateNode)Ga(e,t,i,r,n),e.ref!==t.ref&&(t.effectTag|=128);else{if(!r){if(null===t.stateNode)throw Error(a(166));return null}if(e=Li(Pi.current),Ra(t)){r=t.stateNode,i=t.type;var s=t.memoizedProps;switch(r[_n]=t,r[An]=s,i){case"iframe":case"object":case"embed":Kt("load",r);break;case"video":case"audio":for(e=0;e<Xe.length;e++)Kt(Xe[e],r);break;case"source":Kt("error",r);break;case"img":case"image":case"link":Kt("error",r),Kt("load",r);break;case"form":Kt("reset",r),Kt("submit",r);break;case"details":Kt("toggle",r);break;case"input":Ee(r,s),Kt("invalid",r),cn(n,"onChange");break;case"select":r._wrapperState={wasMultiple:!!s.multiple},Kt("invalid",r),cn(n,"onChange");break;case"textarea":Re(r,s),Kt("invalid",r),cn(n,"onChange")}for(var l in an(i,s),e=null,s)if(s.hasOwnProperty(l)){var c=s[l];"children"===l?"string"==typeof c?r.textContent!==c&&(e=["children",c]):"number"==typeof c&&r.textContent!==""+c&&(e=["children",""+c]):S.hasOwnProperty(l)&&null!=c&&cn(n,l)}switch(i){case"input":we(r),De(r,s,!0);break;case"textarea":we(r),Ne(r);break;case"select":case"option":break;default:"function"==typeof s.onClick&&(r.onclick=un)}n=e,t.updateQueue=n,null!==n&&(t.effectTag|=4)}else{switch(l=9===n.nodeType?n:n.ownerDocument,e===ln&&(e=je(i)),e===ln?"script"===i?((e=l.createElement("div")).innerHTML="<script><\/script>",e=e.removeChild(e.firstChild)):"string"==typeof r.is?e=l.createElement(i,{is:r.is}):(e=l.createElement(i),"select"===i&&(l=e,r.multiple?l.multiple=!0:r.size&&(l.size=r.size))):e=l.createElementNS(e,i),e[_n]=t,e[An]=r,Ha(e,t),t.stateNode=e,l=sn(i,r),i){case"iframe":case"object":case"embed":Kt("load",e),c=r;break;case"video":case"audio":for(c=0;c<Xe.length;c++)Kt(Xe[c],e);c=r;break;case"source":Kt("error",e),c=r;break;case"img":case"image":case"link":Kt("error",e),Kt("load",e),c=r;break;case"form":Kt("reset",e),Kt("submit",e),c=r;break;case"details":Kt("toggle",e),c=r;break;case"input":Ee(e,r),c=xe(e,r),Kt("invalid",e),cn(n,"onChange");break;case"option":c=_e(e,r);break;case"select":e._wrapperState={wasMultiple:!!r.multiple},c=o({},r,{value:void 0}),Kt("invalid",e),cn(n,"onChange");break;case"textarea":Re(e,r),c=Oe(e,r),Kt("invalid",e),cn(n,"onChange");break;default:c=r}an(i,c);var u=c;for(s in u)if(u.hasOwnProperty(s)){var d=u[s];"style"===s?rn(e,d):"dangerouslySetInnerHTML"===s?null!=(d=d?d.__html:void 0)&&Be(e,d):"children"===s?"string"==typeof d?("textarea"!==i||""!==d)&&Ue(e,d):"number"==typeof d&&Ue(e,""+d):"suppressContentEditableWarning"!==s&&"suppressHydrationWarning"!==s&&"autoFocus"!==s&&(S.hasOwnProperty(s)?null!=d&&cn(n,s):null!=d&&X(e,s,d,l))}switch(i){case"input":we(e),De(e,r,!1);break;case"textarea":we(e),Ne(e);break;case"option":null!=r.value&&e.setAttribute("value",""+ve(r.value));break;case"select":e.multiple=!!r.multiple,null!=(n=r.value)?Ae(e,!!r.multiple,n,!1):null!=r.defaultValue&&Ae(e,!!r.multiple,r.defaultValue,!0);break;default:"function"==typeof c.onClick&&(e.onclick=un)}kn(i,r)&&(t.effectTag|=4)}null!==t.ref&&(t.effectTag|=128)}return null;case 6:if(e&&null!=t.stateNode)Wa(0,t,e.memoizedProps,r);else{if("string"!=typeof r&&null===t.stateNode)throw Error(a(166));n=Li(Ii.current),Li(Pi.current),Ra(t)?(n=t.stateNode,r=t.memoizedProps,n[_n]=t,n.nodeValue!==r&&(t.effectTag|=4)):((n=(9===n.nodeType?n:n.ownerDocument).createTextNode(r))[_n]=t,t.stateNode=n)}return null;case 13:return fo(Bi),r=t.memoizedState,0!=(64&t.effectTag)?(t.expirationTime=n,t):(n=null!==r,r=!1,null===e?void 0!==t.memoizedProps.fallback&&Ra(t):(r=null!==(i=e.memoizedState),n||null===i||null!==(i=e.child.sibling)&&(null!==(s=t.firstEffect)?(t.firstEffect=i,i.nextEffect=s):(t.firstEffect=t.lastEffect=i,i.nextEffect=null),i.effectTag=8)),n&&!r&&0!=(2&t.mode)&&(null===e&&!0!==t.memoizedProps.unstable_avoidThisFallback||0!=(1&Bi.current)?Ls===_s&&(Ls=As):(Ls!==_s&&Ls!==As||(Ls=Os),0!==Bs&&null!==Ps&&(Ul(Ps,Is),$l(Ps,Bs)))),(n||r)&&(t.effectTag|=4),null);case 4:return Mi(),null;case 10:return ii(t),null;case 17:return wo(t.type)&&ko(),null;case 19:if(fo(Bi),null===(r=t.memoizedState))return null;if(i=0!=(64&t.effectTag),null===(s=r.rendering)){if(i)Za(r,!1);else if(Ls!==_s||null!==e&&0!=(64&e.effectTag))for(s=t.child;null!==s;){if(null!==(e=Ui(s))){for(t.effectTag|=64,Za(r,!1),null!==(i=e.updateQueue)&&(t.updateQueue=i,t.effectTag|=4),null===r.lastEffect&&(t.firstEffect=null),t.lastEffect=r.lastEffect,r=t.child;null!==r;)s=n,(i=r).effectTag&=2,i.nextEffect=null,i.firstEffect=null,i.lastEffect=null,null===(e=i.alternate)?(i.childExpirationTime=0,i.expirationTime=s,i.child=null,i.memoizedProps=null,i.memoizedState=null,i.updateQueue=null,i.dependencies=null):(i.childExpirationTime=e.childExpirationTime,i.expirationTime=e.expirationTime,i.child=e.child,i.memoizedProps=e.memoizedProps,i.memoizedState=e.memoizedState,i.updateQueue=e.updateQueue,s=e.dependencies,i.dependencies=null===s?null:{expirationTime:s.expirationTime,firstContext:s.firstContext,responders:s.responders}),r=r.sibling;return mo(Bi,1&Bi.current|2),t.child}s=s.sibling}}else{if(!i)if(null!==(e=Ui(s))){if(t.effectTag|=64,i=!0,null!==(n=e.updateQueue)&&(t.updateQueue=n,t.effectTag|=4),Za(r,!0),null===r.tail&&"hidden"===r.tailMode&&!s.alternate)return null!==(t=t.lastEffect=r.lastEffect)&&(t.nextEffect=null),null}else 2*Ho()-r.renderingStartTime>r.tailExpiration&&1<n&&(t.effectTag|=64,i=!0,Za(r,!1),t.expirationTime=t.childExpirationTime=n-1);r.isBackwards?(s.sibling=t.child,t.child=s):(null!==(n=r.last)?n.sibling=s:t.child=s,r.last=s)}return null!==r.tail?(0===r.tailExpiration&&(r.tailExpiration=Ho()+500),n=r.tail,r.rendering=n,r.tail=n.sibling,r.lastEffect=t.lastEffect,r.renderingStartTime=Ho(),n.sibling=null,t=Bi.current,mo(Bi,i?1&t|2:1&t),n):null}throw Error(a(156,t.tag))}function ts(e){switch(e.tag){case 1:wo(e.type)&&ko();var t=e.effectTag;return 4096&t?(e.effectTag=-4097&t|64,e):null;case 3:if(Mi(),fo(bo),fo(go),0!=(64&(t=e.effectTag)))throw Error(a(285));return e.effectTag=-4097&t|64,e;case 5:return zi(e),null;case 13:return fo(Bi),4096&(t=e.effectTag)?(e.effectTag=-4097&t|64,e):null;case 19:return fo(Bi),null;case 4:return Mi(),null;case 10:return ii(e),null;default:return null}}function ns(e,t){return{value:e,source:t,stack:be(t)}}Ha=function(e,t){for(var n=t.child;null!==n;){if(5===n.tag||6===n.tag)e.appendChild(n.stateNode);else if(4!==n.tag&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===t)break;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},Ga=function(e,t,n,r,i){var a=e.memoizedProps;if(a!==r){var s,l,c=t.stateNode;switch(Li(Pi.current),e=null,n){case"input":a=xe(c,a),r=xe(c,r),e=[];break;case"option":a=_e(c,a),r=_e(c,r),e=[];break;case"select":a=o({},a,{value:void 0}),r=o({},r,{value:void 0}),e=[];break;case"textarea":a=Oe(c,a),r=Oe(c,r),e=[];break;default:"function"!=typeof a.onClick&&"function"==typeof r.onClick&&(c.onclick=un)}for(s in an(n,r),n=null,a)if(!r.hasOwnProperty(s)&&a.hasOwnProperty(s)&&null!=a[s])if("style"===s)for(l in c=a[s])c.hasOwnProperty(l)&&(n||(n={}),n[l]="");else"dangerouslySetInnerHTML"!==s&&"children"!==s&&"suppressContentEditableWarning"!==s&&"suppressHydrationWarning"!==s&&"autoFocus"!==s&&(S.hasOwnProperty(s)?e||(e=[]):(e=e||[]).push(s,null));for(s in r){var u=r[s];if(c=null!=a?a[s]:void 0,r.hasOwnProperty(s)&&u!==c&&(null!=u||null!=c))if("style"===s)if(c){for(l in c)!c.hasOwnProperty(l)||u&&u.hasOwnProperty(l)||(n||(n={}),n[l]="");for(l in u)u.hasOwnProperty(l)&&c[l]!==u[l]&&(n||(n={}),n[l]=u[l])}else n||(e||(e=[]),e.push(s,n)),n=u;else"dangerouslySetInnerHTML"===s?(u=u?u.__html:void 0,c=c?c.__html:void 0,null!=u&&c!==u&&(e=e||[]).push(s,u)):"children"===s?c===u||"string"!=typeof u&&"number"!=typeof u||(e=e||[]).push(s,""+u):"suppressContentEditableWarning"!==s&&"suppressHydrationWarning"!==s&&(S.hasOwnProperty(s)?(null!=u&&cn(i,s),e||c===u||(e=[])):(e=e||[]).push(s,u))}n&&(e=e||[]).push("style",n),i=e,(t.updateQueue=i)&&(t.effectTag|=4)}},Wa=function(e,t,n,r){n!==r&&(t.effectTag|=4)};var rs="function"==typeof WeakSet?WeakSet:Set;function os(e,t){var n=t.source,r=t.stack;null===r&&null!==n&&(r=be(n)),null!==n&&ge(n.type),t=t.value,null!==e&&1===e.tag&&ge(e.type);try{console.error(t)}catch(o){setTimeout((function(){throw o}))}}function is(e){var t=e.ref;if(null!==t)if("function"==typeof t)try{t(null)}catch(n){Dl(e,n)}else t.current=null}function as(e,t){switch(t.tag){case 0:case 11:case 15:case 22:return;case 1:if(256&t.effectTag&&null!==e){var n=e.memoizedProps,r=e.memoizedState;t=(e=t.stateNode).getSnapshotBeforeUpdate(t.elementType===t.type?n:Zo(t.type,n),r),e.__reactInternalSnapshotBeforeUpdate=t}return;case 3:case 5:case 6:case 4:case 17:return}throw Error(a(163))}function ss(e,t){if(null!==(t=null!==(t=t.updateQueue)?t.lastEffect:null)){var n=t=t.next;do{if((n.tag&e)===e){var r=n.destroy;n.destroy=void 0,void 0!==r&&r()}n=n.next}while(n!==t)}}function ls(e,t){if(null!==(t=null!==(t=t.updateQueue)?t.lastEffect:null)){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function cs(e,t,n){switch(n.tag){case 0:case 11:case 15:case 22:return void ls(3,n);case 1:if(e=n.stateNode,4&n.effectTag)if(null===t)e.componentDidMount();else{var r=n.elementType===n.type?t.memoizedProps:Zo(n.type,t.memoizedProps);e.componentDidUpdate(r,t.memoizedState,e.__reactInternalSnapshotBeforeUpdate)}return void(null!==(t=n.updateQueue)&&gi(n,t,e));case 3:if(null!==(t=n.updateQueue)){if(e=null,null!==n.child)switch(n.child.tag){case 5:e=n.child.stateNode;break;case 1:e=n.child.stateNode}gi(n,t,e)}return;case 5:return e=n.stateNode,void(null===t&&4&n.effectTag&&kn(n.type,n.memoizedProps)&&e.focus());case 6:case 4:case 12:return;case 13:return void(null===n.memoizedState&&(n=n.alternate,null!==n&&(n=n.memoizedState,null!==n&&(n=n.dehydrated,null!==n&&Mt(n)))));case 19:case 17:case 20:case 21:return}throw Error(a(163))}function us(e,t,n){switch("function"==typeof Ol&&Ol(t),t.tag){case 0:case 11:case 14:case 15:case 22:if(null!==(e=t.updateQueue)&&null!==(e=e.lastEffect)){var r=e.next;Vo(97<n?97:n,(function(){var e=r;do{var n=e.destroy;if(void 0!==n){var o=t;try{n()}catch(i){Dl(o,i)}}e=e.next}while(e!==r)}))}break;case 1:is(t),"function"==typeof(n=t.stateNode).componentWillUnmount&&function(e,t){try{t.props=e.memoizedProps,t.state=e.memoizedState,t.componentWillUnmount()}catch(n){Dl(e,n)}}(t,n);break;case 5:is(t);break;case 4:gs(e,t,n)}}function ds(e){var t=e.alternate;e.return=null,e.child=null,e.memoizedState=null,e.updateQueue=null,e.dependencies=null,e.alternate=null,e.firstEffect=null,e.lastEffect=null,e.pendingProps=null,e.memoizedProps=null,e.stateNode=null,null!==t&&ds(t)}function ps(e){return 5===e.tag||3===e.tag||4===e.tag}function fs(e){e:{for(var t=e.return;null!==t;){if(ps(t)){var n=t;break e}t=t.return}throw Error(a(160))}switch(t=n.stateNode,n.tag){case 5:var r=!1;break;case 3:case 4:t=t.containerInfo,r=!0;break;default:throw Error(a(161))}16&n.effectTag&&(Ue(t,""),n.effectTag&=-17);e:t:for(n=e;;){for(;null===n.sibling;){if(null===n.return||ps(n.return)){n=null;break e}n=n.return}for(n.sibling.return=n.return,n=n.sibling;5!==n.tag&&6!==n.tag&&18!==n.tag;){if(2&n.effectTag)continue t;if(null===n.child||4===n.tag)continue t;n.child.return=n,n=n.child}if(!(2&n.effectTag)){n=n.stateNode;break e}}r?ms(e,n,t):hs(e,n,t)}function ms(e,t,n){var r=e.tag,o=5===r||6===r;if(o)e=o?e.stateNode:e.stateNode.instance,t?8===n.nodeType?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(8===n.nodeType?(t=n.parentNode).insertBefore(e,n):(t=n).appendChild(e),null!=(n=n._reactRootContainer)||null!==t.onclick||(t.onclick=un));else if(4!==r&&null!==(e=e.child))for(ms(e,t,n),e=e.sibling;null!==e;)ms(e,t,n),e=e.sibling}function hs(e,t,n){var r=e.tag,o=5===r||6===r;if(o)e=o?e.stateNode:e.stateNode.instance,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&&null!==(e=e.child))for(hs(e,t,n),e=e.sibling;null!==e;)hs(e,t,n),e=e.sibling}function gs(e,t,n){for(var r,o,i=t,s=!1;;){if(!s){s=i.return;e:for(;;){if(null===s)throw Error(a(160));switch(r=s.stateNode,s.tag){case 5:o=!1;break e;case 3:case 4:r=r.containerInfo,o=!0;break e}s=s.return}s=!0}if(5===i.tag||6===i.tag){e:for(var l=e,c=i,u=n,d=c;;)if(us(l,d,u),null!==d.child&&4!==d.tag)d.child.return=d,d=d.child;else{if(d===c)break e;for(;null===d.sibling;){if(null===d.return||d.return===c)break e;d=d.return}d.sibling.return=d.return,d=d.sibling}o?(l=r,c=i.stateNode,8===l.nodeType?l.parentNode.removeChild(c):l.removeChild(c)):r.removeChild(i.stateNode)}else if(4===i.tag){if(null!==i.child){r=i.stateNode.containerInfo,o=!0,i.child.return=i,i=i.child;continue}}else if(us(e,i,n),null!==i.child){i.child.return=i,i=i.child;continue}if(i===t)break;for(;null===i.sibling;){if(null===i.return||i.return===t)return;4===(i=i.return).tag&&(s=!1)}i.sibling.return=i.return,i=i.sibling}}function bs(e,t){switch(t.tag){case 0:case 11:case 14:case 15:case 22:return void ss(3,t);case 1:return;case 5:var n=t.stateNode;if(null!=n){var r=t.memoizedProps,o=null!==e?e.memoizedProps:r;e=t.type;var i=t.updateQueue;if(t.updateQueue=null,null!==i){for(n[An]=r,"input"===e&&"radio"===r.type&&null!=r.name&&Se(n,r),sn(e,o),t=sn(e,r),o=0;o<i.length;o+=2){var s=i[o],l=i[o+1];"style"===s?rn(n,l):"dangerouslySetInnerHTML"===s?Be(n,l):"children"===s?Ue(n,l):X(n,s,l,t)}switch(e){case"input":Te(n,r);break;case"textarea":Pe(n,r);break;case"select":t=n._wrapperState.wasMultiple,n._wrapperState.wasMultiple=!!r.multiple,null!=(e=r.value)?Ae(n,!!r.multiple,e,!1):t!==!!r.multiple&&(null!=r.defaultValue?Ae(n,!!r.multiple,r.defaultValue,!0):Ae(n,!!r.multiple,r.multiple?[]:"",!1))}}}return;case 6:if(null===t.stateNode)throw Error(a(162));return void(t.stateNode.nodeValue=t.memoizedProps);case 3:return void((t=t.stateNode).hydrate&&(t.hydrate=!1,Mt(t.containerInfo)));case 12:return;case 13:if(n=t,null===t.memoizedState?r=!1:(r=!0,n=t.child,$s=Ho()),null!==n)e:for(e=n;;){if(5===e.tag)i=e.stateNode,r?"function"==typeof(i=i.style).setProperty?i.setProperty("display","none","important"):i.display="none":(i=e.stateNode,o=null!=(o=e.memoizedProps.style)&&o.hasOwnProperty("display")?o.display:null,i.style.display=nn("display",o));else if(6===e.tag)e.stateNode.nodeValue=r?"":e.memoizedProps;else{if(13===e.tag&&null!==e.memoizedState&&null===e.memoizedState.dehydrated){(i=e.child.sibling).return=e,e=i;continue}if(null!==e.child){e.child.return=e,e=e.child;continue}}if(e===n)break;for(;null===e.sibling;){if(null===e.return||e.return===n)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}return void vs(t);case 19:return void vs(t);case 17:return}throw Error(a(163))}function vs(e){var t=e.updateQueue;if(null!==t){e.updateQueue=null;var n=e.stateNode;null===n&&(n=e.stateNode=new rs),t.forEach((function(t){var r=_l.bind(null,e,t);n.has(t)||(n.add(t),t.then(r,r))}))}}var ys="function"==typeof WeakMap?WeakMap:Map;function ws(e,t,n){(n=pi(n,null)).tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){Hs||(Hs=!0,Gs=r),os(e,t)},n}function ks(e,t,n){(n=pi(n,null)).tag=3;var r=e.type.getDerivedStateFromError;if("function"==typeof r){var o=t.value;n.payload=function(){return os(e,t),r(o)}}var i=e.stateNode;return null!==i&&"function"==typeof i.componentDidCatch&&(n.callback=function(){"function"!=typeof r&&(null===Ws?Ws=new Set([this]):Ws.add(this),os(e,t));var n=t.stack;this.componentDidCatch(t.value,{componentStack:null!==n?n:""})}),n}var xs,Es=Math.ceil,Ss=Y.ReactCurrentDispatcher,Ts=Y.ReactCurrentOwner,Ds=16,Cs=32,_s=0,As=3,Os=4,Rs=0,Ps=null,Ns=null,Is=0,Ls=_s,js=null,Ms=1073741823,Fs=1073741823,zs=null,Bs=0,Us=!1,$s=0,qs=null,Hs=!1,Gs=null,Ws=null,Vs=!1,Ks=null,Qs=90,Ys=null,Xs=0,Js=null,Zs=0;function el(){return 0!=(48&Rs)?1073741821-(Ho()/10|0):0!==Zs?Zs:Zs=1073741821-(Ho()/10|0)}function tl(e,t,n){if(0==(2&(t=t.mode)))return 1073741823;var r=Go();if(0==(4&t))return 99===r?1073741823:1073741822;if(0!=(Rs&Ds))return Is;if(null!==n)e=Jo(e,0|n.timeoutMs||5e3,250);else switch(r){case 99:e=1073741823;break;case 98:e=Jo(e,150,100);break;case 97:case 96:e=Jo(e,5e3,250);break;case 95:e=2;break;default:throw Error(a(326))}return null!==Ps&&e===Is&&--e,e}function nl(e,t){if(50<Xs)throw Xs=0,Js=null,Error(a(185));if(null!==(e=rl(e,t))){var n=Go();1073741823===t?0!=(8&Rs)&&0==(48&Rs)?sl(e):(il(e),0===Rs&&Yo()):il(e),0==(4&Rs)||98!==n&&99!==n||(null===Ys?Ys=new Map([[e,t]]):(void 0===(n=Ys.get(e))||n>t)&&Ys.set(e,t))}}function rl(e,t){e.expirationTime<t&&(e.expirationTime=t);var n=e.alternate;null!==n&&n.expirationTime<t&&(n.expirationTime=t);var r=e.return,o=null;if(null===r&&3===e.tag)o=e.stateNode;else for(;null!==r;){if(n=r.alternate,r.childExpirationTime<t&&(r.childExpirationTime=t),null!==n&&n.childExpirationTime<t&&(n.childExpirationTime=t),null===r.return&&3===r.tag){o=r.stateNode;break}r=r.return}return null!==o&&(Ps===o&&(ml(t),Ls===Os&&Ul(o,Is)),$l(o,t)),o}function ol(e){var t=e.lastExpiredTime;if(0!==t)return t;if(!Bl(e,t=e.firstPendingTime))return t;var n=e.lastPingedTime;return 2>=(e=n>(e=e.nextKnownPendingLevel)?n:e)&&t!==e?0:e}function il(e){if(0!==e.lastExpiredTime)e.callbackExpirationTime=1073741823,e.callbackPriority=99,e.callbackNode=Qo(sl.bind(null,e));else{var t=ol(e),n=e.callbackNode;if(0===t)null!==n&&(e.callbackNode=null,e.callbackExpirationTime=0,e.callbackPriority=90);else{var r=el();if(1073741823===t?r=99:1===t||2===t?r=95:r=0>=(r=10*(1073741821-t)-10*(1073741821-r))?99:250>=r?98:5250>=r?97:95,null!==n){var o=e.callbackPriority;if(e.callbackExpirationTime===t&&o>=r)return;n!==Mo&&_o(n)}e.callbackExpirationTime=t,e.callbackPriority=r,t=1073741823===t?Qo(sl.bind(null,e)):Ko(r,al.bind(null,e),{timeout:10*(1073741821-t)-Ho()}),e.callbackNode=t}}}function al(e,t){if(Zs=0,t)return ql(e,t=el()),il(e),null;var n=ol(e);if(0!==n){if(t=e.callbackNode,0!=(48&Rs))throw Error(a(327));if(El(),e===Ps&&n===Is||ul(e,n),null!==Ns){var r=Rs;Rs|=Ds;for(var o=pl();;)try{gl();break}catch(l){dl(e,l)}if(oi(),Rs=r,Ss.current=o,1===Ls)throw t=js,ul(e,n),Ul(e,n),il(e),t;if(null===Ns)switch(o=e.finishedWork=e.current.alternate,e.finishedExpirationTime=n,r=Ls,Ps=null,r){case _s:case 1:throw Error(a(345));case 2:ql(e,2<n?2:n);break;case As:if(Ul(e,n),n===(r=e.lastSuspendedTime)&&(e.nextKnownPendingLevel=yl(o)),1073741823===Ms&&10<(o=$s+500-Ho())){if(Us){var i=e.lastPingedTime;if(0===i||i>=n){e.lastPingedTime=n,ul(e,n);break}}if(0!==(i=ol(e))&&i!==n)break;if(0!==r&&r!==n){e.lastPingedTime=r;break}e.timeoutHandle=En(wl.bind(null,e),o);break}wl(e);break;case Os:if(Ul(e,n),n===(r=e.lastSuspendedTime)&&(e.nextKnownPendingLevel=yl(o)),Us&&(0===(o=e.lastPingedTime)||o>=n)){e.lastPingedTime=n,ul(e,n);break}if(0!==(o=ol(e))&&o!==n)break;if(0!==r&&r!==n){e.lastPingedTime=r;break}if(1073741823!==Fs?r=10*(1073741821-Fs)-Ho():1073741823===Ms?r=0:(r=10*(1073741821-Ms)-5e3,0>(r=(o=Ho())-r)&&(r=0),(n=10*(1073741821-n)-o)<(r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*Es(r/1960))-r)&&(r=n)),10<r){e.timeoutHandle=En(wl.bind(null,e),r);break}wl(e);break;case 5:if(1073741823!==Ms&&null!==zs){i=Ms;var s=zs;if(0>=(r=0|s.busyMinDurationMs)?r=0:(o=0|s.busyDelayMs,r=(i=Ho()-(10*(1073741821-i)-(0|s.timeoutMs||5e3)))<=o?0:o+r-i),10<r){Ul(e,n),e.timeoutHandle=En(wl.bind(null,e),r);break}}wl(e);break;default:throw Error(a(329))}if(il(e),e.callbackNode===t)return al.bind(null,e)}}return null}function sl(e){var t=e.lastExpiredTime;if(t=0!==t?t:1073741823,0!=(48&Rs))throw Error(a(327));if(El(),e===Ps&&t===Is||ul(e,t),null!==Ns){var n=Rs;Rs|=Ds;for(var r=pl();;)try{hl();break}catch(o){dl(e,o)}if(oi(),Rs=n,Ss.current=r,1===Ls)throw n=js,ul(e,t),Ul(e,t),il(e),n;if(null!==Ns)throw Error(a(261));e.finishedWork=e.current.alternate,e.finishedExpirationTime=t,Ps=null,wl(e),il(e)}return null}function ll(e,t){var n=Rs;Rs|=1;try{return e(t)}finally{0===(Rs=n)&&Yo()}}function cl(e,t){var n=Rs;Rs&=-2,Rs|=8;try{return e(t)}finally{0===(Rs=n)&&Yo()}}function ul(e,t){e.finishedWork=null,e.finishedExpirationTime=0;var n=e.timeoutHandle;if(-1!==n&&(e.timeoutHandle=-1,Sn(n)),null!==Ns)for(n=Ns.return;null!==n;){var r=n;switch(r.tag){case 1:null!=(r=r.type.childContextTypes)&&ko();break;case 3:Mi(),fo(bo),fo(go);break;case 5:zi(r);break;case 4:Mi();break;case 13:case 19:fo(Bi);break;case 10:ii(r)}n=n.return}Ps=e,Ns=Il(e.current,null),Is=t,Ls=_s,js=null,Fs=Ms=1073741823,zs=null,Bs=0,Us=!1}function dl(e,t){for(;;){try{if(oi(),qi.current=wa,Qi)for(var n=Wi.memoizedState;null!==n;){var r=n.queue;null!==r&&(r.pending=null),n=n.next}if(Gi=0,Ki=Vi=Wi=null,Qi=!1,null===Ns||null===Ns.return)return Ls=1,js=t,Ns=null;e:{var o=e,i=Ns.return,a=Ns,s=t;if(t=Is,a.effectTag|=2048,a.firstEffect=a.lastEffect=null,null!==s&&"object"==typeof s&&"function"==typeof s.then){var l=s;if(0==(2&a.mode)){var c=a.alternate;c?(a.updateQueue=c.updateQueue,a.memoizedState=c.memoizedState,a.expirationTime=c.expirationTime):(a.updateQueue=null,a.memoizedState=null)}var u=0!=(1&Bi.current),d=i;do{var p;if(p=13===d.tag){var f=d.memoizedState;if(null!==f)p=null!==f.dehydrated;else{var m=d.memoizedProps;p=void 0!==m.fallback&&(!0!==m.unstable_avoidThisFallback||!u)}}if(p){var h=d.updateQueue;if(null===h){var g=new Set;g.add(l),d.updateQueue=g}else h.add(l);if(0==(2&d.mode)){if(d.effectTag|=64,a.effectTag&=-2981,1===a.tag)if(null===a.alternate)a.tag=17;else{var b=pi(1073741823,null);b.tag=2,fi(a,b)}a.expirationTime=1073741823;break e}s=void 0,a=t;var v=o.pingCache;if(null===v?(v=o.pingCache=new ys,s=new Set,v.set(l,s)):void 0===(s=v.get(l))&&(s=new Set,v.set(l,s)),!s.has(a)){s.add(a);var y=Cl.bind(null,o,l,a);l.then(y,y)}d.effectTag|=4096,d.expirationTime=t;break e}d=d.return}while(null!==d);s=Error((ge(a.type)||"A React component")+" suspended while rendering, but no fallback UI was specified.\n\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display."+be(a))}5!==Ls&&(Ls=2),s=ns(s,a),d=i;do{switch(d.tag){case 3:l=s,d.effectTag|=4096,d.expirationTime=t,mi(d,ws(d,l,t));break e;case 1:l=s;var w=d.type,k=d.stateNode;if(0==(64&d.effectTag)&&("function"==typeof w.getDerivedStateFromError||null!==k&&"function"==typeof k.componentDidCatch&&(null===Ws||!Ws.has(k)))){d.effectTag|=4096,d.expirationTime=t,mi(d,ks(d,l,t));break e}}d=d.return}while(null!==d)}Ns=vl(Ns)}catch(x){t=x;continue}break}}function pl(){var e=Ss.current;return Ss.current=wa,null===e?wa:e}function fl(e,t){e<Ms&&2<e&&(Ms=e),null!==t&&e<Fs&&2<e&&(Fs=e,zs=t)}function ml(e){e>Bs&&(Bs=e)}function hl(){for(;null!==Ns;)Ns=bl(Ns)}function gl(){for(;null!==Ns&&!Fo();)Ns=bl(Ns)}function bl(e){var t=xs(e.alternate,e,Is);return e.memoizedProps=e.pendingProps,null===t&&(t=vl(e)),Ts.current=null,t}function vl(e){Ns=e;do{var t=Ns.alternate;if(e=Ns.return,0==(2048&Ns.effectTag)){if(t=es(t,Ns,Is),1===Is||1!==Ns.childExpirationTime){for(var n=0,r=Ns.child;null!==r;){var o=r.expirationTime,i=r.childExpirationTime;o>n&&(n=o),i>n&&(n=i),r=r.sibling}Ns.childExpirationTime=n}if(null!==t)return t;null!==e&&0==(2048&e.effectTag)&&(null===e.firstEffect&&(e.firstEffect=Ns.firstEffect),null!==Ns.lastEffect&&(null!==e.lastEffect&&(e.lastEffect.nextEffect=Ns.firstEffect),e.lastEffect=Ns.lastEffect),1<Ns.effectTag&&(null!==e.lastEffect?e.lastEffect.nextEffect=Ns:e.firstEffect=Ns,e.lastEffect=Ns))}else{if(null!==(t=ts(Ns)))return t.effectTag&=2047,t;null!==e&&(e.firstEffect=e.lastEffect=null,e.effectTag|=2048)}if(null!==(t=Ns.sibling))return t;Ns=e}while(null!==Ns);return Ls===_s&&(Ls=5),null}function yl(e){var t=e.expirationTime;return t>(e=e.childExpirationTime)?t:e}function wl(e){var t=Go();return Vo(99,kl.bind(null,e,t)),null}function kl(e,t){do{El()}while(null!==Ks);if(0!=(48&Rs))throw Error(a(327));var n=e.finishedWork,r=e.finishedExpirationTime;if(null===n)return null;if(e.finishedWork=null,e.finishedExpirationTime=0,n===e.current)throw Error(a(177));e.callbackNode=null,e.callbackExpirationTime=0,e.callbackPriority=90,e.nextKnownPendingLevel=0;var o=yl(n);if(e.firstPendingTime=o,r<=e.lastSuspendedTime?e.firstSuspendedTime=e.lastSuspendedTime=e.nextKnownPendingLevel=0:r<=e.firstSuspendedTime&&(e.firstSuspendedTime=r-1),r<=e.lastPingedTime&&(e.lastPingedTime=0),r<=e.lastExpiredTime&&(e.lastExpiredTime=0),e===Ps&&(Ns=Ps=null,Is=0),1<n.effectTag?null!==n.lastEffect?(n.lastEffect.nextEffect=n,o=n.firstEffect):o=n:o=n.firstEffect,null!==o){var i=Rs;Rs|=Cs,Ts.current=null,yn=Vt;var s=hn();if(gn(s)){if("selectionStart"in s)var l={start:s.selectionStart,end:s.selectionEnd};else e:{var c=(l=(l=s.ownerDocument)&&l.defaultView||window).getSelection&&l.getSelection();if(c&&0!==c.rangeCount){l=c.anchorNode;var u=c.anchorOffset,d=c.focusNode;c=c.focusOffset;try{l.nodeType,d.nodeType}catch(D){l=null;break e}var p=0,f=-1,m=-1,h=0,g=0,b=s,v=null;t:for(;;){for(var y;b!==l||0!==u&&3!==b.nodeType||(f=p+u),b!==d||0!==c&&3!==b.nodeType||(m=p+c),3===b.nodeType&&(p+=b.nodeValue.length),null!==(y=b.firstChild);)v=b,b=y;for(;;){if(b===s)break t;if(v===l&&++h===u&&(f=p),v===d&&++g===c&&(m=p),null!==(y=b.nextSibling))break;v=(b=v).parentNode}b=y}l=-1===f||-1===m?null:{start:f,end:m}}else l=null}l=l||{start:0,end:0}}else l=null;wn={activeElementDetached:null,focusedElem:s,selectionRange:l},Vt=!1,qs=o;do{try{xl()}catch(D){if(null===qs)throw Error(a(330));Dl(qs,D),qs=qs.nextEffect}}while(null!==qs);qs=o;do{try{for(s=e,l=t;null!==qs;){var w=qs.effectTag;if(16&w&&Ue(qs.stateNode,""),128&w){var k=qs.alternate;if(null!==k){var x=k.ref;null!==x&&("function"==typeof x?x(null):x.current=null)}}switch(1038&w){case 2:fs(qs),qs.effectTag&=-3;break;case 6:fs(qs),qs.effectTag&=-3,bs(qs.alternate,qs);break;case 1024:qs.effectTag&=-1025;break;case 1028:qs.effectTag&=-1025,bs(qs.alternate,qs);break;case 4:bs(qs.alternate,qs);break;case 8:gs(s,u=qs,l),ds(u)}qs=qs.nextEffect}}catch(D){if(null===qs)throw Error(a(330));Dl(qs,D),qs=qs.nextEffect}}while(null!==qs);if(x=wn,k=hn(),w=x.focusedElem,l=x.selectionRange,k!==w&&w&&w.ownerDocument&&mn(w.ownerDocument.documentElement,w)){null!==l&&gn(w)&&(k=l.start,void 0===(x=l.end)&&(x=k),"selectionStart"in w?(w.selectionStart=k,w.selectionEnd=Math.min(x,w.value.length)):(x=(k=w.ownerDocument||document)&&k.defaultView||window).getSelection&&(x=x.getSelection(),u=w.textContent.length,s=Math.min(l.start,u),l=void 0===l.end?s:Math.min(l.end,u),!x.extend&&s>l&&(u=l,l=s,s=u),u=fn(w,s),d=fn(w,l),u&&d&&(1!==x.rangeCount||x.anchorNode!==u.node||x.anchorOffset!==u.offset||x.focusNode!==d.node||x.focusOffset!==d.offset)&&((k=k.createRange()).setStart(u.node,u.offset),x.removeAllRanges(),s>l?(x.addRange(k),x.extend(d.node,d.offset)):(k.setEnd(d.node,d.offset),x.addRange(k))))),k=[];for(x=w;x=x.parentNode;)1===x.nodeType&&k.push({element:x,left:x.scrollLeft,top:x.scrollTop});for("function"==typeof w.focus&&w.focus(),w=0;w<k.length;w++)(x=k[w]).element.scrollLeft=x.left,x.element.scrollTop=x.top}Vt=!!yn,wn=yn=null,e.current=n,qs=o;do{try{for(w=e;null!==qs;){var E=qs.effectTag;if(36&E&&cs(w,qs.alternate,qs),128&E){k=void 0;var S=qs.ref;if(null!==S){var T=qs.stateNode;switch(qs.tag){case 5:k=T;break;default:k=T}"function"==typeof S?S(k):S.current=k}}qs=qs.nextEffect}}catch(D){if(null===qs)throw Error(a(330));Dl(qs,D),qs=qs.nextEffect}}while(null!==qs);qs=null,zo(),Rs=i}else e.current=n;if(Vs)Vs=!1,Ks=e,Qs=t;else for(qs=o;null!==qs;)t=qs.nextEffect,qs.nextEffect=null,qs=t;if(0===(t=e.firstPendingTime)&&(Ws=null),1073741823===t?e===Js?Xs++:(Xs=0,Js=e):Xs=0,"function"==typeof Al&&Al(n.stateNode,r),il(e),Hs)throw Hs=!1,e=Gs,Gs=null,e;return 0!=(8&Rs)||Yo(),null}function xl(){for(;null!==qs;){var e=qs.effectTag;0!=(256&e)&&as(qs.alternate,qs),0==(512&e)||Vs||(Vs=!0,Ko(97,(function(){return El(),null}))),qs=qs.nextEffect}}function El(){if(90!==Qs){var e=97<Qs?97:Qs;return Qs=90,Vo(e,Sl)}}function Sl(){if(null===Ks)return!1;var e=Ks;if(Ks=null,0!=(48&Rs))throw Error(a(331));var t=Rs;for(Rs|=Cs,e=e.current.firstEffect;null!==e;){try{var n=e;if(0!=(512&n.effectTag))switch(n.tag){case 0:case 11:case 15:case 22:ss(5,n),ls(5,n)}}catch(r){if(null===e)throw Error(a(330));Dl(e,r)}n=e.nextEffect,e.nextEffect=null,e=n}return Rs=t,Yo(),!0}function Tl(e,t,n){fi(e,t=ws(e,t=ns(n,t),1073741823)),null!==(e=rl(e,1073741823))&&il(e)}function Dl(e,t){if(3===e.tag)Tl(e,e,t);else for(var n=e.return;null!==n;){if(3===n.tag){Tl(n,e,t);break}if(1===n.tag){var r=n.stateNode;if("function"==typeof n.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===Ws||!Ws.has(r))){fi(n,e=ks(n,e=ns(t,e),1073741823)),null!==(n=rl(n,1073741823))&&il(n);break}}n=n.return}}function Cl(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),Ps===e&&Is===n?Ls===Os||Ls===As&&1073741823===Ms&&Ho()-$s<500?ul(e,Is):Us=!0:Bl(e,n)&&(0!==(t=e.lastPingedTime)&&t<n||(e.lastPingedTime=n,il(e)))}function _l(e,t){var n=e.stateNode;null!==n&&n.delete(t),0===(t=0)&&(t=tl(t=el(),e,null)),null!==(e=rl(e,t))&&il(e)}xs=function(e,t,n){var r=t.expirationTime;if(null!==e){var o=t.pendingProps;if(e.memoizedProps!==o||bo.current)Ia=!0;else{if(r<n){switch(Ia=!1,t.tag){case 3:qa(t),Pa();break;case 5:if(Fi(t),4&t.mode&&1!==n&&o.hidden)return t.expirationTime=t.childExpirationTime=1,null;break;case 1:wo(t.type)&&So(t);break;case 4:ji(t,t.stateNode.containerInfo);break;case 10:r=t.memoizedProps.value,o=t.type._context,mo(ei,o._currentValue),o._currentValue=r;break;case 13:if(null!==t.memoizedState)return 0!==(r=t.child.childExpirationTime)&&r>=n?Ka(e,t,n):(mo(Bi,1&Bi.current),null!==(t=Ja(e,t,n))?t.sibling:null);mo(Bi,1&Bi.current);break;case 19:if(r=t.childExpirationTime>=n,0!=(64&e.effectTag)){if(r)return Xa(e,t,n);t.effectTag|=64}if(null!==(o=t.memoizedState)&&(o.rendering=null,o.tail=null),mo(Bi,Bi.current),!r)return null}return Ja(e,t,n)}Ia=!1}}else Ia=!1;switch(t.expirationTime=0,t.tag){case 2:if(r=t.type,null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),e=t.pendingProps,o=yo(t,go.current),si(t,n),o=Ji(null,t,r,e,o,n),t.effectTag|=1,"object"==typeof o&&null!==o&&"function"==typeof o.render&&void 0===o.$$typeof){if(t.tag=1,t.memoizedState=null,t.updateQueue=null,wo(r)){var i=!0;So(t)}else i=!1;t.memoizedState=null!==o.state&&void 0!==o.state?o.state:null,ui(t);var s=r.getDerivedStateFromProps;"function"==typeof s&&yi(t,r,s,e),o.updater=wi,t.stateNode=o,o._reactInternalFiber=t,Si(t,r,e,n),t=$a(null,t,r,!0,i,n)}else t.tag=0,La(null,t,o,n),t=t.child;return t;case 16:e:{if(o=t.elementType,null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),e=t.pendingProps,function(e){if(-1===e._status){e._status=0;var t=e._ctor;t=t(),e._result=t,t.then((function(t){0===e._status&&(t=t.default,e._status=1,e._result=t)}),(function(t){0===e._status&&(e._status=2,e._result=t)}))}}(o),1!==o._status)throw o._result;switch(o=o._result,t.type=o,i=t.tag=function(e){if("function"==typeof e)return Nl(e)?1:0;if(null!=e){if((e=e.$$typeof)===le)return 11;if(e===de)return 14}return 2}(o),e=Zo(o,e),i){case 0:t=Ba(null,t,o,e,n);break e;case 1:t=Ua(null,t,o,e,n);break e;case 11:t=ja(null,t,o,e,n);break e;case 14:t=Ma(null,t,o,Zo(o.type,e),r,n);break e}throw Error(a(306,o,""))}return t;case 0:return r=t.type,o=t.pendingProps,Ba(e,t,r,o=t.elementType===r?o:Zo(r,o),n);case 1:return r=t.type,o=t.pendingProps,Ua(e,t,r,o=t.elementType===r?o:Zo(r,o),n);case 3:if(qa(t),r=t.updateQueue,null===e||null===r)throw Error(a(282));if(r=t.pendingProps,o=null!==(o=t.memoizedState)?o.element:null,di(e,t),hi(t,r,null,n),(r=t.memoizedState.element)===o)Pa(),t=Ja(e,t,n);else{if((o=t.stateNode.hydrate)&&(Ta=Tn(t.stateNode.containerInfo.firstChild),Sa=t,o=Da=!0),o)for(n=Oi(t,null,r,n),t.child=n;n;)n.effectTag=-3&n.effectTag|1024,n=n.sibling;else La(e,t,r,n),Pa();t=t.child}return t;case 5:return Fi(t),null===e&&Aa(t),r=t.type,o=t.pendingProps,i=null!==e?e.memoizedProps:null,s=o.children,xn(r,o)?s=null:null!==i&&xn(r,i)&&(t.effectTag|=16),za(e,t),4&t.mode&&1!==n&&o.hidden?(t.expirationTime=t.childExpirationTime=1,t=null):(La(e,t,s,n),t=t.child),t;case 6:return null===e&&Aa(t),null;case 13:return Ka(e,t,n);case 4:return ji(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=Ai(t,null,r,n):La(e,t,r,n),t.child;case 11:return r=t.type,o=t.pendingProps,ja(e,t,r,o=t.elementType===r?o:Zo(r,o),n);case 7:return La(e,t,t.pendingProps,n),t.child;case 8:case 12:return La(e,t,t.pendingProps.children,n),t.child;case 10:e:{r=t.type._context,o=t.pendingProps,s=t.memoizedProps,i=o.value;var l=t.type._context;if(mo(ei,l._currentValue),l._currentValue=i,null!==s)if(l=s.value,0===(i=Ur(l,i)?0:0|("function"==typeof r._calculateChangedBits?r._calculateChangedBits(l,i):1073741823))){if(s.children===o.children&&!bo.current){t=Ja(e,t,n);break e}}else for(null!==(l=t.child)&&(l.return=t);null!==l;){var c=l.dependencies;if(null!==c){s=l.child;for(var u=c.firstContext;null!==u;){if(u.context===r&&0!=(u.observedBits&i)){1===l.tag&&((u=pi(n,null)).tag=2,fi(l,u)),l.expirationTime<n&&(l.expirationTime=n),null!==(u=l.alternate)&&u.expirationTime<n&&(u.expirationTime=n),ai(l.return,n),c.expirationTime<n&&(c.expirationTime=n);break}u=u.next}}else s=10===l.tag&&l.type===t.type?null:l.child;if(null!==s)s.return=l;else for(s=l;null!==s;){if(s===t){s=null;break}if(null!==(l=s.sibling)){l.return=s.return,s=l;break}s=s.return}l=s}La(e,t,o.children,n),t=t.child}return t;case 9:return o=t.type,r=(i=t.pendingProps).children,si(t,n),r=r(o=li(o,i.unstable_observedBits)),t.effectTag|=1,La(e,t,r,n),t.child;case 14:return i=Zo(o=t.type,t.pendingProps),Ma(e,t,o,i=Zo(o.type,i),r,n);case 15:return Fa(e,t,t.type,t.pendingProps,r,n);case 17:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:Zo(r,o),null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),t.tag=1,wo(r)?(e=!0,So(t)):e=!1,si(t,n),xi(t,r,o),Si(t,r,o,n),$a(null,t,r,!0,e,n);case 19:return Xa(e,t,n)}throw Error(a(156,t.tag))};var Al=null,Ol=null;function Rl(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.effectTag=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.childExpirationTime=this.expirationTime=0,this.alternate=null}function Pl(e,t,n,r){return new Rl(e,t,n,r)}function Nl(e){return!(!(e=e.prototype)||!e.isReactComponent)}function Il(e,t){var n=e.alternate;return null===n?((n=Pl(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.effectTag=0,n.nextEffect=null,n.firstEffect=null,n.lastEffect=null),n.childExpirationTime=e.childExpirationTime,n.expirationTime=e.expirationTime,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=null===t?null:{expirationTime:t.expirationTime,firstContext:t.firstContext,responders:t.responders},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Ll(e,t,n,r,o,i){var s=2;if(r=e,"function"==typeof e)Nl(e)&&(s=1);else if("string"==typeof e)s=5;else e:switch(e){case ne:return jl(n.children,o,i,t);case se:s=8,o|=7;break;case re:s=8,o|=1;break;case oe:return(e=Pl(12,n,t,8|o)).elementType=oe,e.type=oe,e.expirationTime=i,e;case ce:return(e=Pl(13,n,t,o)).type=ce,e.elementType=ce,e.expirationTime=i,e;case ue:return(e=Pl(19,n,t,o)).elementType=ue,e.expirationTime=i,e;default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case ie:s=10;break e;case ae:s=9;break e;case le:s=11;break e;case de:s=14;break e;case pe:s=16,r=null;break e;case fe:s=22;break e}throw Error(a(130,null==e?e:typeof e,""))}return(t=Pl(s,n,t,o)).elementType=e,t.type=r,t.expirationTime=i,t}function jl(e,t,n,r){return(e=Pl(7,e,r,t)).expirationTime=n,e}function Ml(e,t,n){return(e=Pl(6,e,null,t)).expirationTime=n,e}function Fl(e,t,n){return(t=Pl(4,null!==e.children?e.children:[],e.key,t)).expirationTime=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function zl(e,t,n){this.tag=t,this.current=null,this.containerInfo=e,this.pingCache=this.pendingChildren=null,this.finishedExpirationTime=0,this.finishedWork=null,this.timeoutHandle=-1,this.pendingContext=this.context=null,this.hydrate=n,this.callbackNode=null,this.callbackPriority=90,this.lastExpiredTime=this.lastPingedTime=this.nextKnownPendingLevel=this.lastSuspendedTime=this.firstSuspendedTime=this.firstPendingTime=0}function Bl(e,t){var n=e.firstSuspendedTime;return e=e.lastSuspendedTime,0!==n&&n>=t&&e<=t}function Ul(e,t){var n=e.firstSuspendedTime,r=e.lastSuspendedTime;n<t&&(e.firstSuspendedTime=t),(r>t||0===n)&&(e.lastSuspendedTime=t),t<=e.lastPingedTime&&(e.lastPingedTime=0),t<=e.lastExpiredTime&&(e.lastExpiredTime=0)}function $l(e,t){t>e.firstPendingTime&&(e.firstPendingTime=t);var n=e.firstSuspendedTime;0!==n&&(t>=n?e.firstSuspendedTime=e.lastSuspendedTime=e.nextKnownPendingLevel=0:t>=e.lastSuspendedTime&&(e.lastSuspendedTime=t+1),t>e.nextKnownPendingLevel&&(e.nextKnownPendingLevel=t))}function ql(e,t){var n=e.lastExpiredTime;(0===n||n>t)&&(e.lastExpiredTime=t)}function Hl(e,t,n,r){var o=t.current,i=el(),s=bi.suspense;i=tl(i,o,s);e:if(n){t:{if(et(n=n._reactInternalFiber)!==n||1!==n.tag)throw Error(a(170));var l=n;do{switch(l.tag){case 3:l=l.stateNode.context;break t;case 1:if(wo(l.type)){l=l.stateNode.__reactInternalMemoizedMergedChildContext;break t}}l=l.return}while(null!==l);throw Error(a(171))}if(1===n.tag){var c=n.type;if(wo(c)){n=Eo(n,c,l);break e}}n=l}else n=ho;return null===t.context?t.context=n:t.pendingContext=n,(t=pi(i,s)).payload={element:e},null!==(r=void 0===r?null:r)&&(t.callback=r),fi(o,t),nl(o,i),i}function Gl(e){if(!(e=e.current).child)return null;switch(e.child.tag){case 5:default:return e.child.stateNode}}function Wl(e,t){null!==(e=e.memoizedState)&&null!==e.dehydrated&&e.retryTime<t&&(e.retryTime=t)}function Vl(e,t){Wl(e,t),(e=e.alternate)&&Wl(e,t)}function Kl(e,t,n){var r=new zl(e,t,n=null!=n&&!0===n.hydrate),o=Pl(3,null,null,2===t?7:1===t?3:0);r.current=o,o.stateNode=r,ui(o),e[On]=r.current,n&&0!==t&&function(e,t){var n=Ze(t);Ct.forEach((function(e){ht(e,t,n)})),_t.forEach((function(e){ht(e,t,n)}))}(0,9===e.nodeType?e:e.ownerDocument),this._internalRoot=r}function Ql(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType&&(8!==e.nodeType||" react-mount-point-unstable "!==e.nodeValue))}function Yl(e,t,n,r,o){var i=n._reactRootContainer;if(i){var a=i._internalRoot;if("function"==typeof o){var s=o;o=function(){var e=Gl(a);s.call(e)}}Hl(t,a,e,o)}else{if(i=n._reactRootContainer=function(e,t){if(t||(t=!(!(t=e?9===e.nodeType?e.documentElement:e.firstChild:null)||1!==t.nodeType||!t.hasAttribute("data-reactroot"))),!t)for(var n;n=e.lastChild;)e.removeChild(n);return new Kl(e,0,t?{hydrate:!0}:void 0)}(n,r),a=i._internalRoot,"function"==typeof o){var l=o;o=function(){var e=Gl(a);l.call(e)}}cl((function(){Hl(t,a,e,o)}))}return Gl(a)}function Xl(e,t,n){var r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:te,key:null==r?null:""+r,children:e,containerInfo:t,implementation:n}}function Jl(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!Ql(t))throw Error(a(200));return Xl(e,t,null,n)}Kl.prototype.render=function(e){Hl(e,this._internalRoot,null,null)},Kl.prototype.unmount=function(){var e=this._internalRoot,t=e.containerInfo;Hl(null,e,null,(function(){t[On]=null}))},gt=function(e){if(13===e.tag){var t=Jo(el(),150,100);nl(e,t),Vl(e,t)}},bt=function(e){13===e.tag&&(nl(e,3),Vl(e,3))},vt=function(e){if(13===e.tag){var t=el();nl(e,t=tl(t,e,null)),Vl(e,t)}},_=function(e,t,n){switch(t){case"input":if(Te(e,n),t=n.name,"radio"===n.type&&null!=t){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll("input[name="+JSON.stringify(""+t)+'][type="radio"]'),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var o=In(r);if(!o)throw Error(a(90));ke(r),Te(r,o)}}}break;case"textarea":Pe(e,n);break;case"select":null!=(t=n.value)&&Ae(e,!!n.multiple,t,!1)}},I=ll,L=function(e,t,n,r,o){var i=Rs;Rs|=4;try{return Vo(98,e.bind(null,t,n,r,o))}finally{0===(Rs=i)&&Yo()}},j=function(){0==(49&Rs)&&(function(){if(null!==Ys){var e=Ys;Ys=null,e.forEach((function(e,t){ql(t,e),il(t)})),Yo()}}(),El())},M=function(e,t){var n=Rs;Rs|=2;try{return e(t)}finally{0===(Rs=n)&&Yo()}};var Zl={Events:[Pn,Nn,In,D,E,Un,function(e){it(e,Bn)},P,N,Jt,lt,El,{current:!1}]};!function(e){var t=e.findFiberByHostInstance;(function(e){if("undefined"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)return!1;var t=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(t.isDisabled||!t.supportsFiber)return!0;try{var n=t.inject(e);Al=function(e){try{t.onCommitFiberRoot(n,e,void 0,64==(64&e.current.effectTag))}catch(r){}},Ol=function(e){try{t.onCommitFiberUnmount(n,e)}catch(r){}}}catch(r){}})(o({},e,{overrideHookState:null,overrideProps:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:Y.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return null===(e=rt(e))?null:e.stateNode},findFiberByHostInstance:function(e){return t?t(e):null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null}))}({findFiberByHostInstance:Rn,bundleType:0,version:"16.14.0",rendererPackageName:"react-dom"}),t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=Zl,t.createPortal=Jl,t.findDOMNode=function(e){if(null==e)return null;if(1===e.nodeType)return e;var t=e._reactInternalFiber;if(void 0===t){if("function"==typeof e.render)throw Error(a(188));throw Error(a(268,Object.keys(e)))}return e=null===(e=rt(t))?null:e.stateNode},t.flushSync=function(e,t){if(0!=(48&Rs))throw Error(a(187));var n=Rs;Rs|=1;try{return Vo(99,e.bind(null,t))}finally{Rs=n,Yo()}},t.hydrate=function(e,t,n){if(!Ql(t))throw Error(a(200));return Yl(null,e,t,!0,n)},t.render=function(e,t,n){if(!Ql(t))throw Error(a(200));return Yl(null,e,t,!1,n)},t.unmountComponentAtNode=function(e){if(!Ql(e))throw Error(a(40));return!!e._reactRootContainer&&(cl((function(){Yl(null,null,e,!1,(function(){e._reactRootContainer=null,e[On]=null}))})),!0)},t.unstable_batchedUpdates=ll,t.unstable_createPortal=function(e,t){return Jl(e,t,2<arguments.length&&void 0!==arguments[2]?arguments[2]:null)},t.unstable_renderSubtreeIntoContainer=function(e,t,n,r){if(!Ql(n))throw Error(a(200));if(null==e||void 0===e._reactInternalFiber)throw Error(a(38));return Yl(e,t,n,!1,r)},t.version="16.14.0"},function(e,t,n){"use strict";e.exports=n(42)},function(e,t,n){"use strict";var r,o,i,a,s;if("undefined"==typeof window||"function"!=typeof MessageChannel){var l=null,c=null,u=function(){if(null!==l)try{var e=t.unstable_now();l(!0,e),l=null}catch(n){throw setTimeout(u,0),n}},d=Date.now();t.unstable_now=function(){return Date.now()-d},r=function(e){null!==l?setTimeout(r,0,e):(l=e,setTimeout(u,0))},o=function(e,t){c=setTimeout(e,t)},i=function(){clearTimeout(c)},a=function(){return!1},s=t.unstable_forceFrameRate=function(){}}else{var p=window.performance,f=window.Date,m=window.setTimeout,h=window.clearTimeout;if("undefined"!=typeof console){var g=window.cancelAnimationFrame;"function"!=typeof window.requestAnimationFrame&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills"),"function"!=typeof g&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills")}if("object"==typeof p&&"function"==typeof p.now)t.unstable_now=function(){return p.now()};else{var b=f.now();t.unstable_now=function(){return f.now()-b}}var v=!1,y=null,w=-1,k=5,x=0;a=function(){return t.unstable_now()>=x},s=function(){},t.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing framerates higher than 125 fps is not unsupported"):k=0<e?Math.floor(1e3/e):5};var E=new MessageChannel,S=E.port2;E.port1.onmessage=function(){if(null!==y){var e=t.unstable_now();x=e+k;try{y(!0,e)?S.postMessage(null):(v=!1,y=null)}catch(n){throw S.postMessage(null),n}}else v=!1},r=function(e){y=e,v||(v=!0,S.postMessage(null))},o=function(e,n){w=m((function(){e(t.unstable_now())}),n)},i=function(){h(w),w=-1}}function T(e,t){var n=e.length;e.push(t);e:for(;;){var r=n-1>>>1,o=e[r];if(!(void 0!==o&&0<_(o,t)))break e;e[r]=t,e[n]=o,n=r}}function D(e){return void 0===(e=e[0])?null:e}function C(e){var t=e[0];if(void 0!==t){var n=e.pop();if(n!==t){e[0]=n;e:for(var r=0,o=e.length;r<o;){var i=2*(r+1)-1,a=e[i],s=i+1,l=e[s];if(void 0!==a&&0>_(a,n))void 0!==l&&0>_(l,a)?(e[r]=l,e[s]=n,r=s):(e[r]=a,e[i]=n,r=i);else{if(!(void 0!==l&&0>_(l,n)))break e;e[r]=l,e[s]=n,r=s}}}return t}return null}function _(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}var A=[],O=[],R=1,P=null,N=3,I=!1,L=!1,j=!1;function M(e){for(var t=D(O);null!==t;){if(null===t.callback)C(O);else{if(!(t.startTime<=e))break;C(O),t.sortIndex=t.expirationTime,T(A,t)}t=D(O)}}function F(e){if(j=!1,M(e),!L)if(null!==D(A))L=!0,r(z);else{var t=D(O);null!==t&&o(F,t.startTime-e)}}function z(e,n){L=!1,j&&(j=!1,i()),I=!0;var r=N;try{for(M(n),P=D(A);null!==P&&(!(P.expirationTime>n)||e&&!a());){var s=P.callback;if(null!==s){P.callback=null,N=P.priorityLevel;var l=s(P.expirationTime<=n);n=t.unstable_now(),"function"==typeof l?P.callback=l:P===D(A)&&C(A),M(n)}else C(A);P=D(A)}if(null!==P)var c=!0;else{var u=D(O);null!==u&&o(F,u.startTime-n),c=!1}return c}finally{P=null,N=r,I=!1}}function B(e){switch(e){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1e4;default:return 5e3}}var U=s;t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){L||I||(L=!0,r(z))},t.unstable_getCurrentPriorityLevel=function(){return N},t.unstable_getFirstCallbackNode=function(){return D(A)},t.unstable_next=function(e){switch(N){case 1:case 2:case 3:var t=3;break;default:t=N}var n=N;N=t;try{return e()}finally{N=n}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=U,t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=N;N=e;try{return t()}finally{N=n}},t.unstable_scheduleCallback=function(e,n,a){var s=t.unstable_now();if("object"==typeof a&&null!==a){var l=a.delay;l="number"==typeof l&&0<l?s+l:s,a="number"==typeof a.timeout?a.timeout:B(e)}else a=B(e),l=s;return e={id:R++,callback:n,priorityLevel:e,startTime:l,expirationTime:a=l+a,sortIndex:-1},l>s?(e.sortIndex=l,T(O,e),null===D(A)&&e===D(O)&&(j?i():j=!0,o(F,l-s))):(e.sortIndex=a,T(A,e),L||I||(L=!0,r(z))),e},t.unstable_shouldYield=function(){var e=t.unstable_now();M(e);var n=D(A);return n!==P&&null!==P&&null!==n&&null!==n.callback&&n.startTime<=e&&n.expirationTime<P.expirationTime||a()},t.unstable_wrapCallback=function(e){var t=N;return function(){var n=N;N=t;try{return e.apply(this,arguments)}finally{N=n}}}},function(e,t,n){"use strict";var r=n(44);function o(){}function i(){}i.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,i,a){if(a!==r){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:o};return n.PropTypes=n,n}},function(e,t,n){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},function(e,t){e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},function(e,t,n){"use strict";var r="function"==typeof Symbol&&Symbol.for,o=r?Symbol.for("react.element"):60103,i=r?Symbol.for("react.portal"):60106,a=r?Symbol.for("react.fragment"):60107,s=r?Symbol.for("react.strict_mode"):60108,l=r?Symbol.for("react.profiler"):60114,c=r?Symbol.for("react.provider"):60109,u=r?Symbol.for("react.context"):60110,d=r?Symbol.for("react.async_mode"):60111,p=r?Symbol.for("react.concurrent_mode"):60111,f=r?Symbol.for("react.forward_ref"):60112,m=r?Symbol.for("react.suspense"):60113,h=r?Symbol.for("react.suspense_list"):60120,g=r?Symbol.for("react.memo"):60115,b=r?Symbol.for("react.lazy"):60116,v=r?Symbol.for("react.block"):60121,y=r?Symbol.for("react.fundamental"):60117,w=r?Symbol.for("react.responder"):60118,k=r?Symbol.for("react.scope"):60119;function x(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case o:switch(e=e.type){case d:case p:case a:case l:case s:case m:return e;default:switch(e=e&&e.$$typeof){case u:case f:case b:case g:case c:return e;default:return t}}case i:return t}}}function E(e){return x(e)===p}t.AsyncMode=d,t.ConcurrentMode=p,t.ContextConsumer=u,t.ContextProvider=c,t.Element=o,t.ForwardRef=f,t.Fragment=a,t.Lazy=b,t.Memo=g,t.Portal=i,t.Profiler=l,t.StrictMode=s,t.Suspense=m,t.isAsyncMode=function(e){return E(e)||x(e)===d},t.isConcurrentMode=E,t.isContextConsumer=function(e){return x(e)===u},t.isContextProvider=function(e){return x(e)===c},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===o},t.isForwardRef=function(e){return x(e)===f},t.isFragment=function(e){return x(e)===a},t.isLazy=function(e){return x(e)===b},t.isMemo=function(e){return x(e)===g},t.isPortal=function(e){return x(e)===i},t.isProfiler=function(e){return x(e)===l},t.isStrictMode=function(e){return x(e)===s},t.isSuspense=function(e){return x(e)===m},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===a||e===p||e===l||e===s||e===m||e===h||"object"==typeof e&&null!==e&&(e.$$typeof===b||e.$$typeof===g||e.$$typeof===c||e.$$typeof===u||e.$$typeof===f||e.$$typeof===y||e.$$typeof===w||e.$$typeof===k||e.$$typeof===v)},t.typeOf=x},,function(e,t,n){const r=n(49),o=n(50),i=new Set;function a(e){void 0===e?e=Object.keys(r.languages).filter((e=>"meta"!=e)):Array.isArray(e)||(e=[e]);const t=[...i,...Object.keys(Prism.languages)];o(r,e,t).load((e=>{if(!(e in r.languages))return void(a.silent||console.warn("Language does not exist: "+e));const t="./prism-"+e;delete n.c[n(18).resolve(t)],delete Prism.languages[e],n(18)(t),i.add(e)}))}a.silent=!1,e.exports=a},function(e,t,n){e.exports&&(e.exports={core:{meta:{path:"components/prism-core.js",option:"mandatory"},core:"Core"},themes:{meta:{path:"themes/{id}.css",link:"index.html?theme={id}",exclusive:!0},prism:{title:"Default",option:"default"},"prism-dark":"Dark","prism-funky":"Funky","prism-okaidia":{title:"Okaidia",owner:"ocodia"},"prism-twilight":{title:"Twilight",owner:"remybach"},"prism-coy":{title:"Coy",owner:"tshedor"},"prism-solarizedlight":{title:"Solarized Light",owner:"hectormatos2011 "},"prism-tomorrow":{title:"Tomorrow Night",owner:"Rosey"}},languages:{meta:{path:"components/prism-{id}",noCSS:!0,examplesPath:"examples/prism-{id}",addCheckAll:!0},markup:{title:"Markup",alias:["html","xml","svg","mathml","ssml","atom","rss"],aliasTitles:{html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",ssml:"SSML",atom:"Atom",rss:"RSS"},option:"default"},css:{title:"CSS",option:"default",modify:"markup"},clike:{title:"C-like",option:"default"},javascript:{title:"JavaScript",require:"clike",modify:"markup",optional:"regex",alias:"js",option:"default"},abap:{title:"ABAP",owner:"dellagustin"},abnf:{title:"ABNF",owner:"RunDevelopment"},actionscript:{title:"ActionScript",require:"javascript",modify:"markup",owner:"Golmote"},ada:{title:"Ada",owner:"Lucretia"},agda:{title:"Agda",owner:"xy-ren"},al:{title:"AL",owner:"RunDevelopment"},antlr4:{title:"ANTLR4",alias:"g4",owner:"RunDevelopment"},apacheconf:{title:"Apache Configuration",owner:"GuiTeK"},apex:{title:"Apex",require:["clike","sql"],owner:"RunDevelopment"},apl:{title:"APL",owner:"ngn"},applescript:{title:"AppleScript",owner:"Golmote"},aql:{title:"AQL",owner:"RunDevelopment"},arduino:{title:"Arduino",require:"cpp",owner:"dkern"},arff:{title:"ARFF",owner:"Golmote"},asciidoc:{alias:"adoc",title:"AsciiDoc",owner:"Golmote"},aspnet:{title:"ASP.NET (C#)",require:["markup","csharp"],owner:"nauzilus"},asm6502:{title:"6502 Assembly",owner:"kzurawel"},autohotkey:{title:"AutoHotkey",owner:"aviaryan"},autoit:{title:"AutoIt",owner:"Golmote"},bash:{title:"Bash",alias:"shell",aliasTitles:{shell:"Shell"},owner:"zeitgeist87"},basic:{title:"BASIC",owner:"Golmote"},batch:{title:"Batch",owner:"Golmote"},bbcode:{title:"BBcode",alias:"shortcode",aliasTitles:{shortcode:"Shortcode"},owner:"RunDevelopment"},birb:{title:"Birb",require:"clike",owner:"Calamity210"},bison:{title:"Bison",require:"c",owner:"Golmote"},bnf:{title:"BNF",alias:"rbnf",aliasTitles:{rbnf:"RBNF"},owner:"RunDevelopment"},brainfuck:{title:"Brainfuck",owner:"Golmote"},brightscript:{title:"BrightScript",owner:"RunDevelopment"},bro:{title:"Bro",owner:"wayward710"},bsl:{title:"BSL (1C:Enterprise)",alias:"oscript",aliasTitles:{oscript:"OneScript"},owner:"Diversus23"},c:{title:"C",require:"clike",owner:"zeitgeist87"},csharp:{title:"C#",require:"clike",alias:["cs","dotnet"],owner:"mvalipour"},cpp:{title:"C++",require:"c",owner:"zeitgeist87"},cil:{title:"CIL",owner:"sbrl"},clojure:{title:"Clojure",owner:"troglotit"},cmake:{title:"CMake",owner:"mjrogozinski"},coffeescript:{title:"CoffeeScript",require:"javascript",alias:"coffee",owner:"R-osey"},concurnas:{title:"Concurnas",alias:"conc",owner:"jasontatton"},csp:{title:"Content-Security-Policy",owner:"ScottHelme"},crystal:{title:"Crystal",require:"ruby",owner:"MakeNowJust"},"css-extras":{title:"CSS Extras",require:"css",modify:"css",owner:"milesj"},cypher:{title:"Cypher",owner:"RunDevelopment"},d:{title:"D",require:"clike",owner:"Golmote"},dart:{title:"Dart",require:"clike",owner:"Golmote"},dataweave:{title:"DataWeave",owner:"machaval"},dax:{title:"DAX",owner:"peterbud"},dhall:{title:"Dhall",owner:"RunDevelopment"},diff:{title:"Diff",owner:"uranusjr"},django:{title:"Django/Jinja2",require:"markup-templating",alias:"jinja2",owner:"romanvm"},"dns-zone-file":{title:"DNS zone file",owner:"RunDevelopment",alias:"dns-zone"},docker:{title:"Docker",alias:"dockerfile",owner:"JustinBeckwith"},ebnf:{title:"EBNF",owner:"RunDevelopment"},editorconfig:{title:"EditorConfig",owner:"osipxd"},eiffel:{title:"Eiffel",owner:"Conaclos"},ejs:{title:"EJS",require:["javascript","markup-templating"],owner:"RunDevelopment",alias:"eta",aliasTitles:{eta:"Eta"}},elixir:{title:"Elixir",owner:"Golmote"},elm:{title:"Elm",owner:"zwilias"},etlua:{title:"Embedded Lua templating",require:["lua","markup-templating"],owner:"RunDevelopment"},erb:{title:"ERB",require:["ruby","markup-templating"],owner:"Golmote"},erlang:{title:"Erlang",owner:"Golmote"},"excel-formula":{title:"Excel Formula",alias:["xlsx","xls"],owner:"RunDevelopment"},fsharp:{title:"F#",require:"clike",owner:"simonreynolds7"},factor:{title:"Factor",owner:"catb0t"},"firestore-security-rules":{title:"Firestore security rules",require:"clike",owner:"RunDevelopment"},flow:{title:"Flow",require:"javascript",owner:"Golmote"},fortran:{title:"Fortran",owner:"Golmote"},ftl:{title:"FreeMarker Template Language",require:"markup-templating",owner:"RunDevelopment"},gml:{title:"GameMaker Language",alias:"gamemakerlanguage",require:"clike",owner:"LiarOnce"},gcode:{title:"G-code",owner:"RunDevelopment"},gdscript:{title:"GDScript",owner:"RunDevelopment"},gedcom:{title:"GEDCOM",owner:"Golmote"},gherkin:{title:"Gherkin",owner:"hason"},git:{title:"Git",owner:"lgiraudel"},glsl:{title:"GLSL",require:"c",owner:"Golmote"},go:{title:"Go",require:"clike",owner:"arnehormann"},graphql:{title:"GraphQL",optional:["markdown"],owner:"Golmote"},groovy:{title:"Groovy",require:"clike",owner:"robfletcher"},haml:{title:"Haml",require:"ruby",optional:["css","css-extras","coffeescript","erb","javascript","less","markdown","scss","textile"],owner:"Golmote"},handlebars:{title:"Handlebars",require:"markup-templating",owner:"Golmote"},haskell:{title:"Haskell",alias:"hs",owner:"bholst"},haxe:{title:"Haxe",require:"clike",owner:"Golmote"},hcl:{title:"HCL",owner:"outsideris"},hlsl:{title:"HLSL",require:"c",owner:"RunDevelopment"},http:{title:"HTTP",optional:["css","javascript","json","markup"],owner:"danielgtaylor"},hpkp:{title:"HTTP Public-Key-Pins",owner:"ScottHelme"},hsts:{title:"HTTP Strict-Transport-Security",owner:"ScottHelme"},ichigojam:{title:"IchigoJam",owner:"BlueCocoa"},icon:{title:"Icon",owner:"Golmote"},ignore:{title:".ignore",owner:"osipxd",alias:["gitignore","hgignore","npmignore"],aliasTitles:{gitignore:".gitignore",hgignore:".hgignore",npmignore:".npmignore"}},inform7:{title:"Inform 7",owner:"Golmote"},ini:{title:"Ini",owner:"aviaryan"},io:{title:"Io",owner:"AlesTsurko"},j:{title:"J",owner:"Golmote"},java:{title:"Java",require:"clike",owner:"sherblot"},javadoc:{title:"JavaDoc",require:["markup","java","javadoclike"],modify:"java",optional:"scala",owner:"RunDevelopment"},javadoclike:{title:"JavaDoc-like",modify:["java","javascript","php"],owner:"RunDevelopment"},javastacktrace:{title:"Java stack trace",owner:"RunDevelopment"},jolie:{title:"Jolie",require:"clike",owner:"thesave"},jq:{title:"JQ",owner:"RunDevelopment"},jsdoc:{title:"JSDoc",require:["javascript","javadoclike","typescript"],modify:"javascript",optional:["actionscript","coffeescript"],owner:"RunDevelopment"},"js-extras":{title:"JS Extras",require:"javascript",modify:"javascript",optional:["actionscript","coffeescript","flow","n4js","typescript"],owner:"RunDevelopment"},json:{title:"JSON",alias:"webmanifest",aliasTitles:{webmanifest:"Web App Manifest"},owner:"CupOfTea696"},json5:{title:"JSON5",require:"json",owner:"RunDevelopment"},jsonp:{title:"JSONP",require:"json",owner:"RunDevelopment"},jsstacktrace:{title:"JS stack trace",owner:"sbrl"},"js-templates":{title:"JS Templates",require:"javascript",modify:"javascript",optional:["css","css-extras","graphql","markdown","markup"],owner:"RunDevelopment"},julia:{title:"Julia",owner:"cdagnino"},keyman:{title:"Keyman",owner:"mcdurdin"},kotlin:{title:"Kotlin",alias:["kt","kts"],aliasTitles:{kts:"Kotlin Script"},require:"clike",owner:"Golmote"},latex:{title:"LaTeX",alias:["tex","context"],aliasTitles:{tex:"TeX",context:"ConTeXt"},owner:"japborst"},latte:{title:"Latte",require:["clike","markup-templating","php"],owner:"nette"},less:{title:"Less",require:"css",optional:"css-extras",owner:"Golmote"},lilypond:{title:"LilyPond",require:"scheme",alias:"ly",owner:"RunDevelopment"},liquid:{title:"Liquid",owner:"cinhtau"},lisp:{title:"Lisp",alias:["emacs","elisp","emacs-lisp"],owner:"JuanCaicedo"},livescript:{title:"LiveScript",owner:"Golmote"},llvm:{title:"LLVM IR",owner:"porglezomp"},lolcode:{title:"LOLCODE",owner:"Golmote"},lua:{title:"Lua",owner:"Golmote"},makefile:{title:"Makefile",owner:"Golmote"},markdown:{title:"Markdown",require:"markup",optional:"yaml",alias:"md",owner:"Golmote"},"markup-templating":{title:"Markup templating",require:"markup",owner:"Golmote"},matlab:{title:"MATLAB",owner:"Golmote"},mel:{title:"MEL",owner:"Golmote"},mizar:{title:"Mizar",owner:"Golmote"},mongodb:{title:"MongoDB",owner:"airs0urce",require:"javascript"},monkey:{title:"Monkey",owner:"Golmote"},moonscript:{title:"MoonScript",alias:"moon",owner:"RunDevelopment"},n1ql:{title:"N1QL",owner:"TMWilds"},n4js:{title:"N4JS",require:"javascript",optional:"jsdoc",alias:"n4jsd",owner:"bsmith-n4"},"nand2tetris-hdl":{title:"Nand To Tetris HDL",owner:"stephanmax"},naniscript:{title:"Naninovel Script",owner:"Elringus",alias:"nani"},nasm:{title:"NASM",owner:"rbmj"},neon:{title:"NEON",owner:"nette"},nginx:{title:"nginx",owner:"westonganger",require:"clike"},nim:{title:"Nim",owner:"Golmote"},nix:{title:"Nix",owner:"Golmote"},nsis:{title:"NSIS",owner:"idleberg"},objectivec:{title:"Objective-C",require:"c",alias:"objc",owner:"uranusjr"},ocaml:{title:"OCaml",owner:"Golmote"},opencl:{title:"OpenCL",require:"c",modify:["c","cpp"],owner:"Milania1"},oz:{title:"Oz",owner:"Golmote"},parigp:{title:"PARI/GP",owner:"Golmote"},parser:{title:"Parser",require:"markup",owner:"Golmote"},pascal:{title:"Pascal",alias:"objectpascal",aliasTitles:{objectpascal:"Object Pascal"},owner:"Golmote"},pascaligo:{title:"Pascaligo",owner:"DefinitelyNotAGoat"},pcaxis:{title:"PC-Axis",alias:"px",owner:"RunDevelopment"},peoplecode:{title:"PeopleCode",alias:"pcode",owner:"RunDevelopment"},perl:{title:"Perl",owner:"Golmote"},php:{title:"PHP",require:"markup-templating",owner:"milesj"},phpdoc:{title:"PHPDoc",require:["php","javadoclike"],modify:"php",owner:"RunDevelopment"},"php-extras":{title:"PHP Extras",require:"php",modify:"php",owner:"milesj"},plsql:{title:"PL/SQL",require:"sql",owner:"Golmote"},powerquery:{title:"PowerQuery",alias:["pq","mscript"],owner:"peterbud"},powershell:{title:"PowerShell",owner:"nauzilus"},processing:{title:"Processing",require:"clike",owner:"Golmote"},prolog:{title:"Prolog",owner:"Golmote"},promql:{title:"PromQL",owner:"arendjr"},properties:{title:".properties",owner:"Golmote"},protobuf:{title:"Protocol Buffers",require:"clike",owner:"just-boris"},pug:{title:"Pug",require:["markup","javascript"],optional:["coffeescript","ejs","handlebars","less","livescript","markdown","scss","stylus","twig"],owner:"Golmote"},puppet:{title:"Puppet",owner:"Golmote"},pure:{title:"Pure",optional:["c","cpp","fortran"],owner:"Golmote"},purebasic:{title:"PureBasic",require:"clike",alias:"pbfasm",owner:"HeX0R101"},purescript:{title:"PureScript",require:"haskell",alias:"purs",owner:"sriharshachilakapati"},python:{title:"Python",alias:"py",owner:"multipetros"},q:{title:"Q (kdb+ database)",owner:"Golmote"},qml:{title:"QML",require:"javascript",owner:"RunDevelopment"},qore:{title:"Qore",require:"clike",owner:"temnroegg"},r:{title:"R",owner:"Golmote"},racket:{title:"Racket",require:"scheme",alias:"rkt",owner:"RunDevelopment"},jsx:{title:"React JSX",require:["markup","javascript"],optional:["jsdoc","js-extras","js-templates"],owner:"vkbansal"},tsx:{title:"React TSX",require:["jsx","typescript"]},reason:{title:"Reason",require:"clike",owner:"Golmote"},regex:{title:"Regex",owner:"RunDevelopment"},renpy:{title:"Ren'py",alias:"rpy",owner:"HyuchiaDiego"},rest:{title:"reST (reStructuredText)",owner:"Golmote"},rip:{title:"Rip",owner:"ravinggenius"},roboconf:{title:"Roboconf",owner:"Golmote"},robotframework:{title:"Robot Framework",alias:"robot",owner:"RunDevelopment"},ruby:{title:"Ruby",require:"clike",alias:"rb",owner:"samflores"},rust:{title:"Rust",owner:"Golmote"},sas:{title:"SAS",optional:["groovy","lua","sql"],owner:"Golmote"},sass:{title:"Sass (Sass)",require:"css",owner:"Golmote"},scss:{title:"Sass (Scss)",require:"css",optional:"css-extras",owner:"MoOx"},scala:{title:"Scala",require:"java",owner:"jozic"},scheme:{title:"Scheme",owner:"bacchus123"},"shell-session":{title:"Shell session",require:"bash",alias:["sh-session","shellsession"],owner:"RunDevelopment"},smali:{title:"Smali",owner:"RunDevelopment"},smalltalk:{title:"Smalltalk",owner:"Golmote"},smarty:{title:"Smarty",require:"markup-templating",owner:"Golmote"},sml:{title:"SML",alias:"smlnj",aliasTitles:{smlnj:"SML/NJ"},owner:"RunDevelopment"},solidity:{title:"Solidity (Ethereum)",alias:"sol",require:"clike",owner:"glachaud"},"solution-file":{title:"Solution file",alias:"sln",owner:"RunDevelopment"},soy:{title:"Soy (Closure Template)",require:"markup-templating",owner:"Golmote"},sparql:{title:"SPARQL",require:"turtle",owner:"Triply-Dev",alias:"rq"},"splunk-spl":{title:"Splunk SPL",owner:"RunDevelopment"},sqf:{title:"SQF: Status Quo Function (Arma 3)",require:"clike",owner:"RunDevelopment"},sql:{title:"SQL",owner:"multipetros"},stan:{title:"Stan",owner:"RunDevelopment"},iecst:{title:"Structured Text (IEC 61131-3)",owner:"serhioromano"},stylus:{title:"Stylus",owner:"vkbansal"},swift:{title:"Swift",require:"clike",owner:"chrischares"},"t4-templating":{title:"T4 templating",owner:"RunDevelopment"},"t4-cs":{title:"T4 Text Templates (C#)",require:["t4-templating","csharp"],alias:"t4",owner:"RunDevelopment"},"t4-vb":{title:"T4 Text Templates (VB)",require:["t4-templating","vbnet"],owner:"RunDevelopment"},tap:{title:"TAP",owner:"isaacs",require:"yaml"},tcl:{title:"Tcl",owner:"PeterChaplin"},tt2:{title:"Template Toolkit 2",require:["clike","markup-templating"],owner:"gflohr"},textile:{title:"Textile",require:"markup",optional:"css",owner:"Golmote"},toml:{title:"TOML",owner:"RunDevelopment"},turtle:{title:"Turtle",alias:"trig",aliasTitles:{trig:"TriG"},owner:"jakubklimek"},twig:{title:"Twig",require:"markup",owner:"brandonkelly"},typescript:{title:"TypeScript",require:"javascript",optional:"js-templates",alias:"ts",owner:"vkbansal"},typoscript:{title:"TypoScript",alias:"tsconfig",aliasTitles:{tsconfig:"TSConfig"},owner:"dkern"},unrealscript:{title:"UnrealScript",alias:["uscript","uc"],owner:"RunDevelopment"},vala:{title:"Vala",require:"clike",optional:"regex",owner:"TemplarVolk"},vbnet:{title:"VB.Net",require:"basic",owner:"Bigsby"},velocity:{title:"Velocity",require:"markup",owner:"Golmote"},verilog:{title:"Verilog",owner:"a-rey"},vhdl:{title:"VHDL",owner:"a-rey"},vim:{title:"vim",owner:"westonganger"},"visual-basic":{title:"Visual Basic",alias:["vb","vba"],aliasTitles:{vba:"VBA"},owner:"Golmote"},warpscript:{title:"WarpScript",owner:"RunDevelopment"},wasm:{title:"WebAssembly",owner:"Golmote"},wiki:{title:"Wiki markup",require:"markup",owner:"Golmote"},xeora:{title:"Xeora",require:"markup",alias:"xeoracube",aliasTitles:{xeoracube:"XeoraCube"},owner:"freakmaxi"},"xml-doc":{title:"XML doc (.net)",require:"markup",modify:["csharp","fsharp","vbnet"],owner:"RunDevelopment"},xojo:{title:"Xojo (REALbasic)",owner:"Golmote"},xquery:{title:"XQuery",require:"markup",owner:"Golmote"},yaml:{title:"YAML",alias:"yml",owner:"hason"},yang:{title:"YANG",owner:"RunDevelopment"},zig:{title:"Zig",owner:"RunDevelopment"}},plugins:{meta:{path:"plugins/{id}/prism-{id}",link:"plugins/{id}/"},"line-highlight":{title:"Line Highlight",description:"Highlights specific lines and/or line ranges."},"line-numbers":{title:"Line Numbers",description:"Line number at the beginning of code lines.",owner:"kuba-kubula"},"show-invisibles":{title:"Show Invisibles",description:"Show hidden characters such as tabs and line breaks.",optional:["autolinker","data-uri-highlight"]},autolinker:{title:"Autolinker",description:"Converts URLs and emails in code to clickable links. Parses Markdown links in comments."},wpd:{title:"WebPlatform Docs",description:'Makes tokens link to <a href="https://webplatform.github.io/docs/">WebPlatform.org documentation</a>. The links open in a new tab.'},"custom-class":{title:"Custom Class",description:"This plugin allows you to prefix Prism's default classes (<code>.comment</code> can become <code>.namespace--comment</code>) or replace them with your defined ones (like <code>.editor__comment</code>). You can even add new classes.",owner:"dvkndn",noCSS:!0},"file-highlight":{title:"File Highlight",description:"Fetch external files and highlight them with Prism. Used on the Prism website itself.",noCSS:!0},"show-language":{title:"Show Language",description:"Display the highlighted language in code blocks (inline code does not show the label).",owner:"nauzilus",noCSS:!0,require:"toolbar"},"jsonp-highlight":{title:"JSONP Highlight",description:"Fetch content with JSONP and highlight some interesting content (e.g. GitHub/Gists or Bitbucket API).",noCSS:!0,owner:"nauzilus"},"highlight-keywords":{title:"Highlight Keywords",description:"Adds special CSS classes for each keyword matched in the code. For example, the keyword <code>if</code> will have the class <code>keyword-if</code> as well. You can have fine grained control over the appearance of each keyword by providing your own CSS rules.",owner:"vkbansal",noCSS:!0},"remove-initial-line-feed":{title:"Remove initial line feed",description:"Removes the initial line feed in code blocks.",owner:"Golmote",noCSS:!0},"inline-color":{title:"Inline color",description:"Adds a small inline preview for colors in style sheets.",require:"css-extras",owner:"RunDevelopment"},previewers:{title:"Previewers",description:"Previewers for angles, colors, gradients, easing and time.",require:"css-extras",owner:"Golmote"},autoloader:{title:"Autoloader",description:"Automatically loads the needed languages to highlight the code blocks.",owner:"Golmote",noCSS:!0},"keep-markup":{title:"Keep Markup",description:"Prevents custom markup from being dropped out during highlighting.",owner:"Golmote",optional:"normalize-whitespace",noCSS:!0},"command-line":{title:"Command Line",description:"Display a command line with a prompt and, optionally, the output/response from the commands.",owner:"chriswells0"},"unescaped-markup":{title:"Unescaped Markup",description:"Write markup without having to escape anything."},"normalize-whitespace":{title:"Normalize Whitespace",description:"Supports multiple operations to normalize whitespace in code blocks.",owner:"zeitgeist87",optional:"unescaped-markup",noCSS:!0},"data-uri-highlight":{title:"Data-URI Highlight",description:"Highlights data-URI contents.",owner:"Golmote",noCSS:!0},toolbar:{title:"Toolbar",description:"Attach a toolbar for plugins to easily register buttons on the top of a code block.",owner:"mAAdhaTTah"},"copy-to-clipboard":{title:"Copy to Clipboard Button",description:"Add a button that copies the code block to the clipboard when clicked.",owner:"mAAdhaTTah",require:"toolbar",noCSS:!0},"download-button":{title:"Download Button",description:"A button in the toolbar of a code block adding a convenient way to download a code file.",owner:"Golmote",require:"toolbar",noCSS:!0},"match-braces":{title:"Match braces",description:"Highlights matching braces.",owner:"RunDevelopment"},"diff-highlight":{title:"Diff Highlight",description:"Highlights the code inside diff blocks.",owner:"RunDevelopment",require:"diff"},"filter-highlight-all":{title:"Filter highlightAll",description:"Filters the elements the <code>highlightAll</code> and <code>highlightAllUnder</code> methods actually highlight.",owner:"RunDevelopment",noCSS:!0},treeview:{title:"Treeview",description:"A language with special styles to highlight file system tree structures.",owner:"Golmote"}}})},function(e,t,n){"use strict";var r=function(){var e=function(){};function t(e,t){Array.isArray(e)?e.forEach(t):null!=e&&t(e,0)}function n(e){for(var t={},n=0,r=e.length;n<r;n++)t[e[n]]=!0;return t}function r(e){var n={},r=[];function o(r,i){if(!(r in n)){i.push(r);var a=i.indexOf(r);if(a<i.length-1)throw new Error("Circular dependency: "+i.slice(a).join(" -> "));var s={},l=e[r];if(l){function c(t){if(!(t in e))throw new Error(r+" depends on an unknown component "+t);if(!(t in s))for(var a in o(t,i),s[t]=!0,n[t])s[a]=!0}t(l.require,c),t(l.optional,c),t(l.modify,c)}n[r]=s,i.pop()}}return function(e){var t=n[e];return t||(o(e,r),t=n[e]),t}}function o(e){for(var t in e)return!0;return!1}return function(i,a,s){var l=function(e){var t={};for(var n in e){var r=e[n];for(var o in r)if("meta"!=o){var i=r[o];t[o]="string"==typeof i?{title:i}:i}}return t}(i),c=function(e){var n;return function(r){if(r in e)return r;if(!n)for(var o in n={},e){var i=e[o];t(i&&i.alias,(function(t){if(t in n)throw new Error(t+" cannot be alias for both "+o+" and "+n[t]);if(t in e)throw new Error(t+" cannot be alias of "+o+" because it is a component.");n[t]=o}))}return n[r]||r}}(l);a=a.map(c),s=(s||[]).map(c);var u=n(a),d=n(s);a.forEach((function e(n){var r=l[n];t(r&&r.require,(function(t){t in d||(u[t]=!0,e(t))}))}));for(var p,f=r(l),m=u;o(m);){for(var h in p={},m){var g=l[h];t(g&&g.modify,(function(e){e in d&&(p[e]=!0)}))}for(var b in d)if(!(b in u))for(var v in f(b))if(v in u){p[b]=!0;break}for(var y in m=p)u[y]=!0}var w={getIds:function(){var e=[];return w.load((function(t){e.push(t)})),e},load:function(t,n){return function(t,n,r,o){const i=o?o.series:void 0,a=o?o.parallel:e;var s={},l={};function c(e){if(e in s)return s[e];l[e]=!0;var o,u=[];for(var d in t(e))d in n&&u.push(d);if(0===u.length)o=r(e);else{var p=a(u.map((function(e){var t=c(e);return delete l[e],t})));i?o=i(p,(function(){return r(e)})):r(e)}return s[e]=o}for(var u in n)c(u);var d=[];for(var p in l)d.push(s[p]);return a(d)}(f,u,t,n)}};return w}}();e.exports=r},,,function(e,t,n){"use strict";n.r(t);var r=n(0),o=n.n(r),i=n(28),a=n(10),s=n(19),l=n.n(s),c=function(e){var t=e.error,n=e.retry,r=e.pastDelay;return t?o.a.createElement("div",{style:{align:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"}},o.a.createElement("p",null,t.message),o.a.createElement("div",null,o.a.createElement("button",{type:"button",onClick:n},"Retry"))):r?o.a.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"}},o.a.createElement("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb"},o.a.createElement("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2"},o.a.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},o.a.createElement("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),o.a.createElement("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),o.a.createElement("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),o.a.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},o.a.createElement("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),o.a.createElement("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),o.a.createElement("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),o.a.createElement("circle",{cx:"22",cy:"22",r:"8"},o.a.createElement("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"}))))):null},u=n(13),d={"0581431b":[function(){return n.e(3).then(n.bind(null,68))},"@site/docs/userDocs/submarine-sdk/experiment-client.md",68],"0b49bfb5":[function(){return n.e(4).then(n.bind(null,69))},"@site/versioned_docs/version-0.6.0/userDocs/yarn/Dockerfiles.md",69],"0bc74cd0":[function(){return n.e(5).then(n.bind(null,70))},"@site/versioned_docs/version-0.6.0/gettingStarted/helm.md",70],"0c952090":[function(){return n.e(6).then(n.bind(null,71))},"@site/docs/gettingStarted/python-sdk.md",71],"0e4b5d7a":[function(){return n.e(7).then(n.bind(null,72))},"@site/versioned_docs/version-0.6.0/userDocs/api/experiment-template.md",72],"10dc6c9a":[function(){return n.e(8).then(n.bind(null,73))},"@site/versioned_docs/version-0.6.0/userDocs/others/mlflow.md",73],11695589:[function(){return n.e(9).then(n.bind(null,74))},"@site/docs/userDocs/api/experiment.md",74],"11fdf8a8":[function(){return n.e(10).then(n.bind(null,75))},"@site/docs/gettingStarted/helm.md",75],17896441:[function(){return Promise.all([n.e(0),n.e(1),n.e(11)]).then(n.bind(null,192))},"@theme/DocItem",192],"18b93cb3":[function(){return Promise.all([n.e(0),n.e(1),n.e(2),n.e(12)]).then(n.bind(null,78))},"@site/src/pages/versions.js",78],"1be78505":[function(){return Promise.all([n.e(0),n.e(1),n.e(2),n.e(128),n.e(13)]).then(n.bind(null,193))},"@theme/DocPage",193],"1dbe41c3":[function(){return n.e(14).then(n.bind(null,81))},"@site/docs/userDocs/others/tensorboard.md",81],"1f391b9e":[function(){return Promise.all([n.e(0),n.e(1),n.e(2),n.e(129),n.e(15)]).then(n.bind(null,82))},"@theme/MDXPage",82],"22e91045":[function(){return n.e(16).then(n.bind(null,83))},"@site/docs/userDocs/api/environment.md",83],"27f12fe0":[function(){return n.e(17).then(n.bind(null,84))},"@site/versioned_docs/version-0.6.0/userDocs/yarn/YARNRuntimeGuide.md",84],"2bab9bf0":[function(){return n.e(18).then(n.bind(null,85))},"@site/versioned_docs/version-0.6.0/userDocs/submarine-sdk/tracking.md",85],"2d4ab289":[function(){return n.e(19).then(n.bind(null,86))},"@site/docs/community/Bylaws.md",86],"2f44017d":[function(){return n.e(20).then(n.bind(null,87))},"@site/docs/api/environment.md",87],31912795:[function(){return n.e(21).then(n.bind(null,88))},"@site/versioned_docs/version-0.6.0/devDocs/IntegrationTestE2E.md",88],"31b2a22b":[function(){return n.e(22).then(n.bind(null,89))},"@site/versioned_docs/version-0.6.0/designDocs/notebook-implementation.md",89],"3315d736":[function(){return n.e(23).then(n.bind(null,90))},"@site/src/pages/releases/submarine-release-0.3.0.md",90],"3593fe0f":[function(){return n.e(24).then(n.bind(null,91))},"@site/versioned_docs/version-0.6.0/devDocs/Dependencies.md",91],"35de792d":[function(){return n.e(25).then(n.bind(null,92))},"@site/versioned_docs/version-0.6.0/gettingStarted/localDeployment.md",92],"380d7376":[function(){return n.e(26).then(n.bind(null,93))},"@site/versioned_docs/version-0.6.0/userDocs/yarn/TestAndTroubleshooting.md",93],"3af95f13":[function(){return n.e(27).then(n.bind(null,94))},"@site/docs/api/serve.md",94],40951386:[function(){return n.e(28).then(n.bind(null,95))},"@site/docs/designDocs/submarine-server/experimentSpec.md",95],"43326f7a":[function(){return n.e(29).then(n.bind(null,96))},"@site/versioned_docs/version-0.6.0/api/notebook.md",96],"446ff6dc":[function(){return n.e(30).then(n.bind(null,97))},"@site/versioned_docs/version-0.6.0/devDocs/IntegrationTestK8s.md",97],"4726afa6":[function(){return n.e(31).then(n.bind(null,98))},"@site/docs/api/experiment-template.md",98],"4f73ab67":[function(){return n.e(32).then(n.bind(null,99))},"@site/docs/gettingStarted/kind.md",99],"5065a48c":[function(){return n.e(33).then(n.bind(null,100))},"@site/versioned_docs/version-0.6.0/designDocs/wip-designs/security-implementation.md",100],"51b2b2c4":[function(){return n.e(34).then(n.bind(null,101))},"@site/versioned_docs/version-0.6.0/userDocs/yarn/WriteDockerfilePT.md",101],"538541c1":[function(){return n.e(35).then(n.bind(null,102))},"@site/versioned_docs/version-0.6.0/designDocs/storage-implementation.md",102],"54b0b691":[function(){return n.e(36).then(n.bind(null,103))},"@site/docs/userDocs/submarine-sdk/README.md",103],"55d1900a":[function(){return n.e(37).then(n.bind(null,104))},"@site/versioned_docs/version-0.6.0/api/environment.md",104],"58f10d9f":[function(){return n.e(38).then(n.t.bind(null,105,3))},"~docs/default/version-0-6-0-metadata-prop-089.json",105],"59e7e97e":[function(){return n.e(39).then(n.bind(null,106))},"@site/docs/userDocs/submarine-sdk/submarine-cli.md",106],"5de1a2b0":[function(){return n.e(40).then(n.bind(null,107))},"@site/versioned_docs/version-0.6.0/userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin.md",107],"5e036026":[function(){return n.e(41).then(n.bind(null,108))},"@site/versioned_docs/version-0.6.0/userDocs/api/environment.md",108],"5e9f5e1a":[function(){return Promise.resolve().then(n.bind(null,9))},"@generated/docusaurus.config",9],"5f165a74":[function(){return n.e(42).then(n.bind(null,109))},"@site/versioned_docs/version-0.6.0/adminDocs/yarn/workbench/HowToRun.md",109],"5f825119":[function(){return n.e(43).then(n.bind(null,110))},"@site/docs/gettingStarted/quickstart.md",110],"6088480f":[function(){return n.e(44).then(n.bind(null,111))},"@site/versioned_docs/version-0.6.0/adminDocs/yarn/workbench/README.zh-CN.md",111],"61cc1a3d":[function(){return n.e(45).then(n.bind(null,112))},"@site/docs/community/contributing.md",112],"63f0eece":[function(){return n.e(46).then(n.bind(null,113))},"@site/docs/designDocs/implementation-notes.md",113],"66ca1d53":[function(){return n.e(47).then(n.bind(null,114))},"@site/versioned_docs/version-0.6.0/gettingStarted/kind.md",114],"6a132804":[function(){return n.e(48).then(n.bind(null,115))},"@site/versioned_docs/version-0.6.0/gettingStarted/python-sdk.md",115],"6aa1aeb0":[function(){return n.e(49).then(n.bind(null,116))},"@site/versioned_docs/version-0.6.0/designDocs/experiment-implementation.md",116],"6df4a83b":[function(){return n.e(50).then(n.bind(null,117))},"@site/docs/designDocs/wip-designs/security-implementation.md",117],"6e852da3":[function(){return n.e(51).then(n.bind(null,118))},"@site/docs/devDocs/HowToVerify.md",118],"710c49d3":[function(){return n.e(52).then(n.bind(null,119))},"@site/versioned_docs/version-0.6.0/designDocs/submarine-server/architecture.md",119],"72f8d982":[function(){return n.e(53).then(n.bind(null,120))},"@site/docs/devDocs/Dependencies.md",120],"73bafbdc":[function(){return n.e(54).then(n.bind(null,121))},"@site/versioned_docs/version-0.6.0/userDocs/api/experiment.md",121],"76720dd8":[function(){return n.e(55).then(n.bind(null,122))},"@site/versioned_docs/version-0.6.0/userDocs/others/tensorboard.md",122],"781c7eda":[function(){return n.e(56).then(n.bind(null,123))},"@site/versioned_docs/version-0.6.0/userDocs/yarn/WriteDockerfileTF.md",123],"7f965783":[function(){return n.e(57).then(n.bind(null,124))},"@site/versioned_docs/version-0.6.0/designDocs/wip-designs/submarine-clusterServer.md",124],"7fd88130":[function(){return n.e(58).then(n.bind(null,125))},"@site/docs/designDocs/notebook-implementation.md",125],80453470:[function(){return n.e(59).then(n.bind(null,126))},"@site/docs/api/experiment.md",126],"817286e8":[function(){return n.e(60).then(n.bind(null,127))},"@site/docs/designDocs/wip-designs/submarine-launcher.md",127],"82a4a2ce":[function(){return n.e(61).then(n.bind(null,128))},"@site/docs/userDocs/others/mlflow.md",128],"85b50ba6":[function(){return n.e(62).then(n.bind(null,129))},"@site/versioned_docs/version-0.6.0/ecosystem/kaldi/WriteDockerfileKaldi.md",129],"876793d7":[function(){return n.e(63).then(n.bind(null,130))},"@site/versioned_docs/version-0.6.0/designDocs/environments-implementation.md",130],"897bc7ae":[function(){return n.e(64).then(n.bind(null,131))},"@site/docs/devDocs/Development.md",131],"89982a88":[function(){return n.e(65).then(n.bind(null,132))},"@site/docs/api/model-version.md",132],"935f2afb":[function(){return n.e(66).then(n.t.bind(null,133,3))},"~docs/default/version-current-metadata-prop-751.json",133],"97b312ed":[function(){return n.e(67).then(n.bind(null,134))},"@site/docs/devDocs/BuildFromCode.md",134],"9e593273":[function(){return n.e(68).then(n.bind(null,135))},"@site/versioned_docs/version-0.6.0/designDocs/implementation-notes.md",135],a0524152:[function(){return n.e(69).then(n.bind(null,136))},"@site/docs/api/notebook.md",136],a2231a2b:[function(){return n.e(70).then(n.bind(null,137))},"@site/versioned_docs/version-0.6.0/adminDocs/yarn/TestAndTroubleshooting.md",137],a4535337:[function(){return n.e(71).then(n.bind(null,138))},"@site/docs/userDocs/api/experiment-template.md",138],a49341a2:[function(){return n.e(72).then(n.bind(null,139))},"@site/docs/userDocs/submarine-sdk/tracking.md",139],a57e1c0a:[function(){return n.e(73).then(n.bind(null,140))},"@site/docs/community/HowToVoteCommitterOrPMC.md",140],a5ca038b:[function(){return n.e(74).then(n.bind(null,141))},"@site/docs/community/HowToCommit.md",141],a5eec98c:[function(){return n.e(75).then(n.bind(null,142))},"@site/docs/designDocs/storage-implementation.md",142],a658e4e7:[function(){return n.e(76).then(n.bind(null,143))},"@site/versioned_docs/version-0.6.0/community/contributing.md",143],a7e506f8:[function(){return n.e(77).then(n.bind(null,144))},"@site/docs/designDocs/environments-implementation.md",144],a86c7af5:[function(){return n.e(78).then(n.bind(null,145))},"@site/versioned_docs/version-0.6.0/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs.md",145],a8c4e132:[function(){return n.e(79).then(n.bind(null,146))},"@site/versioned_docs/version-0.6.0/userDocs/submarine-sdk/model-client.md",146],a9744973:[function(){return n.e(80).then(n.bind(null,147))},"@site/versioned_docs/version-0.6.0/gettingStarted/quickstart.md",147],ab130550:[function(){return n.e(81).then(n.bind(null,148))},"@site/versioned_docs/version-0.6.0/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README.md",148],ab5e246a:[function(){return n.e(82).then(n.bind(null,149))},"@site/versioned_docs/version-0.6.0/adminDocs/yarn/workbench/README.md",149],abb6be53:[function(){return n.e(83).then(n.bind(null,150))},"@site/versioned_docs/version-0.6.0/community/HowToCommit.md",150],ada24b13:[function(){return n.e(84).then(n.bind(null,151))},"@site/docs/designDocs/submarine-server/architecture.md",151],ae045997:[function(){return n.e(85).then(n.bind(null,152))},"@site/versioned_docs/version-0.6.0/designDocs/architecture-and-requirements.md",152],b3da5595:[function(){return n.e(87).then(n.bind(null,153))},"@site/docs/devDocs/IntegrationTestK8s.md",153],b60f7df5:[function(){return n.e(88).then(n.bind(null,154))},"@site/docs/designDocs/wip-designs/submarine-clusterServer.md",154],b9b5b6b9:[function(){return n.e(89).then(n.bind(null,155))},"@site/docs/devDocs/IntegrationTestE2E.md",155],be249313:[function(){return n.e(90).then(n.bind(null,156))},"@site/docs/userDocs/api/notebook.md",156],be5f9a0f:[function(){return n.e(91).then(n.bind(null,157))},"@site/src/pages/releases/submarine-release-0.5.0.md",157],bf894ff2:[function(){return n.e(92).then(n.bind(null,158))},"@site/docs/community/README.md",158],c18d5a16:[function(){return n.e(93).then(n.bind(null,159))},"@site/docs/gettingStarted/localDeployment.md",159],c28aed56:[function(){return n.e(94).then(n.bind(null,160))},"@site/versioned_docs/version-0.6.0/adminDocs/yarn/workbench/notebook/setup-jupyter.md",160],c4f5d8e4:[function(){return Promise.all([n.e(0),n.e(1),n.e(2),n.e(95)]).then(n.bind(null,161))},"@site/src/pages/index.js",161],c5a80c58:[function(){return n.e(96).then(n.bind(null,163))},"@site/versioned_docs/version-0.6.0/download.md",163],c86e1739:[function(){return n.e(97).then(n.bind(null,164))},"@site/docs/community/HowToBecomeCommitter.md",164],cbc53c13:[function(){return n.e(98).then(n.bind(null,165))},"@site/versioned_docs/version-0.6.0/userDocs/yarn/WriteDockerfileMX.md",165],cbf00e67:[function(){return n.e(99).then(n.bind(null,166))},"@site/docs/designDocs/experiment-implementation.md",166],cce3422b:[function(){return n.e(100).then(n.bind(null,167))},"@site/versioned_docs/version-0.6.0/devDocs/Development.md",167],cd51f9ed:[function(){return n.e(101).then(n.bind(null,168))},"@site/versioned_docs/version-0.6.0/userDocs/api/notebook.md",168],cdfb3821:[function(){return n.e(102).then(n.bind(null,169))},"@site/src/pages/releases/submarine-release-0.2.0.md",169],cf824c09:[function(){return n.e(103).then(n.bind(null,170))},"@site/versioned_docs/version-0.6.0/community/README.md",170],cfa5b027:[function(){return n.e(104).then(n.bind(null,171))},"@site/docs/userDocs/submarine-sdk/pysubmarine/development.md",171],d2a03af7:[function(){return n.e(105).then(n.bind(null,172))},"@site/versioned_docs/version-0.6.0/userDocs/submarine-security/spark-security/README.md",172],d46271b0:[function(){return n.e(106).then(n.bind(null,173))},"@site/versioned_docs/version-0.6.0/devDocs/BuildFromCode.md",173],dd728e8e:[function(){return n.e(107).then(n.bind(null,174))},"@site/src/pages/releases/submarine-release-0.6.0.md",174],e235d551:[function(){return n.e(108).then(n.bind(null,175))},"@site/versioned_docs/version-0.6.0/userDocs/submarine-sdk/README.md",175],e2e9fab8:[function(){return n.e(109).then(n.bind(null,176))},"@site/docs/devDocs/HowToRelease.md",176],e3af4e10:[function(){return n.e(110).then(n.bind(null,177))},"@site/docs/designDocs/architecture-and-requirements.md",177],e9f77c1e:[function(){return n.e(111).then(n.bind(null,178))},"@site/src/pages/releases/submarine-release-0.4.0.md",178],eb4979b3:[function(){return n.e(112).then(n.bind(null,179))},"@site/versioned_docs/version-0.6.0/adminDocs/yarn/README.md",179],ed46a2dd:[function(){return n.e(113).then(n.bind(null,180))},"@site/docs/gettingStarted/notebook.md",180],ee8d19c0:[function(){return n.e(114).then(n.bind(null,181))},"@site/docs/devDocs/README.md",181],ef17f2ad:[function(){return n.e(115).then(n.bind(null,182))},"@site/versioned_docs/version-0.6.0/designDocs/submarine-server/experimentSpec.md",182],f0df3a58:[function(){return n.e(116).then(n.bind(null,183))},"@site/docs/api/registered-model.md",183],f1c2161d:[function(){return n.e(117).then(n.bind(null,184))},"@site/versioned_docs/version-0.6.0/api/experiment.md",184],f2cef85d:[function(){return n.e(118).then(n.bind(null,185))},"@site/versioned_docs/version-0.6.0/gettingStarted/notebook.md",185],f6956115:[function(){return n.e(119).then(n.bind(null,186))},"@site/versioned_docs/version-0.6.0/api/experiment-template.md",186],f8f6d32b:[function(){return n.e(120).then(n.bind(null,187))},"@site/versioned_docs/version-0.6.0/designDocs/wip-designs/submarine-launcher.md",187],f9e23376:[function(){return n.e(121).then(n.bind(null,188))},"@site/docs/download.md",188],fa8b9269:[function(){return n.e(122).then(n.bind(null,189))},"@site/versioned_docs/version-0.6.0/devDocs/README.md",189],fc109cd1:[function(){return n.e(123).then(n.bind(null,190))},"@site/versioned_docs/version-0.6.0/userDocs/submarine-sdk/experiment-client.md",190],fe5a2634:[function(){return n.e(124).then(n.bind(null,191))},"@site/versioned_docs/version-0.6.0/userDocs/submarine-sdk/pysubmarine/development.md",191]};var p=function(e){var t={};return function e(n,r){Object.keys(n).forEach((function(o){var i=n[o],a=r?r+"."+o:o;"object"===typeof i&&!!i&&Object.keys(i).length?e(i,a):t[a]=i}))}(e),t};var f=function(e,t){if("*"===e)return l()({loading:c,loader:function(){return Promise.all([n.e(0),n.e(1),n.e(2),n.e(130)]).then(n.bind(null,244))}});var r=u[e+"-"+t],i=[],a=[],s={},f=p(r);return Object.keys(f).forEach((function(e){var t=d[f[e]];t&&(s[e]=t[0],i.push(t[1]),a.push(t[2]))})),l.a.Map({loading:c,loader:s,modules:i,webpack:function(){return a},render:function(e,t){var n=JSON.parse(JSON.stringify(r));Object.keys(e).forEach((function(t){for(var r=n,o=t.split("."),i=0;i<o.length-1;i+=1)r=r[o[i]];r[o[o.length-1]]=e[t].default;var a=Object.keys(e[t]).filter((function(e){return"default"!==e}));a&&a.length&&a.forEach((function(n){r[o[o.length-1]][n]=e[t][n]}))}));var i=n.component;return delete n.component,o.a.createElement(i,Object.assign({},n,t))}})},m=[{path:"/",component:f("/","deb"),exact:!0},{path:"/releases/submarine-release-0.2.0",component:f("/releases/submarine-release-0.2.0","cb0"),exact:!0},{path:"/releases/submarine-release-0.3.0",component:f("/releases/submarine-release-0.3.0","a74"),exact:!0},{path:"/releases/submarine-release-0.4.0",component:f("/releases/submarine-release-0.4.0","12e"),exact:!0},{path:"/releases/submarine-release-0.5.0",component:f("/releases/submarine-release-0.5.0","388"),exact:!0},{path:"/releases/submarine-release-0.6.0",component:f("/releases/submarine-release-0.6.0","091"),exact:!0},{path:"/versions",component:f("/versions","b27"),exact:!0},{path:"/docs/next",component:f("/docs/next","5e9"),routes:[{path:"/docs/next/",component:f("/docs/next/","335"),exact:!0},{path:"/docs/next/api/environment",component:f("/docs/next/api/environment","a53"),exact:!0},{path:"/docs/next/api/experiment",component:f("/docs/next/api/experiment","2a2"),exact:!0},{path:"/docs/next/api/experiment-template",component:f("/docs/next/api/experiment-template","f8c"),exact:!0},{path:"/docs/next/api/model-version",component:f("/docs/next/api/model-version","251"),exact:!0},{path:"/docs/next/api/notebook",component:f("/docs/next/api/notebook","b86"),exact:!0},{path:"/docs/next/api/registered-model",component:f("/docs/next/api/registered-model","a88"),exact:!0},{path:"/docs/next/api/serve",component:f("/docs/next/api/serve","2cb"),exact:!0},{path:"/docs/next/community/Bylaws",component:f("/docs/next/community/Bylaws","232"),exact:!0},{path:"/docs/next/community/contributing",component:f("/docs/next/community/contributing","ac1"),exact:!0},{path:"/docs/next/community/HowToBecomeCommitter",component:f("/docs/next/community/HowToBecomeCommitter","a0e"),exact:!0},{path:"/docs/next/community/HowToCommit",component:f("/docs/next/community/HowToCommit","bea"),exact:!0},{path:"/docs/next/community/HowToVoteCommitterOrPMC",component:f("/docs/next/community/HowToVoteCommitterOrPMC","524"),exact:!0},{path:"/docs/next/community/README",component:f("/docs/next/community/README","ede"),exact:!0},{path:"/docs/next/designDocs/architecture-and-requirements",component:f("/docs/next/designDocs/architecture-and-requirements","cf2"),exact:!0},{path:"/docs/next/designDocs/environments-implementation",component:f("/docs/next/designDocs/environments-implementation","3ef"),exact:!0},{path:"/docs/next/designDocs/experiment-implementation",component:f("/docs/next/designDocs/experiment-implementation","02a"),exact:!0},{path:"/docs/next/designDocs/implementation-notes",component:f("/docs/next/designDocs/implementation-notes","077"),exact:!0},{path:"/docs/next/designDocs/notebook-implementation",component:f("/docs/next/designDocs/notebook-implementation","fec"),exact:!0},{path:"/docs/next/designDocs/storage-implementation",component:f("/docs/next/designDocs/storage-implementation","bc7"),exact:!0},{path:"/docs/next/designDocs/submarine-server/architecture",component:f("/docs/next/designDocs/submarine-server/architecture","bc3"),exact:!0},{path:"/docs/next/designDocs/submarine-server/experimentSpec",component:f("/docs/next/designDocs/submarine-server/experimentSpec","251"),exact:!0},{path:"/docs/next/designDocs/wip-designs/security-implementation",component:f("/docs/next/designDocs/wip-designs/security-implementation","4d5"),exact:!0},{path:"/docs/next/designDocs/wip-designs/submarine-clusterServer",component:f("/docs/next/designDocs/wip-designs/submarine-clusterServer","d0c"),exact:!0},{path:"/docs/next/designDocs/wip-designs/submarine-launcher",component:f("/docs/next/designDocs/wip-designs/submarine-launcher","75e"),exact:!0},{path:"/docs/next/devDocs/BuildFromCode",component:f("/docs/next/devDocs/BuildFromCode","52d"),exact:!0},{path:"/docs/next/devDocs/Dependencies",component:f("/docs/next/devDocs/Dependencies","5eb"),exact:!0},{path:"/docs/next/devDocs/Development",component:f("/docs/next/devDocs/Development","75d"),exact:!0},{path:"/docs/next/devDocs/HowToRelease",component:f("/docs/next/devDocs/HowToRelease","ab2"),exact:!0},{path:"/docs/next/devDocs/HowToVerify",component:f("/docs/next/devDocs/HowToVerify","b21"),exact:!0},{path:"/docs/next/devDocs/IntegrationTestE2E",component:f("/docs/next/devDocs/IntegrationTestE2E","6ca"),exact:!0},{path:"/docs/next/devDocs/IntegrationTestK8s",component:f("/docs/next/devDocs/IntegrationTestK8s","7d7"),exact:!0},{path:"/docs/next/devDocs/README",component:f("/docs/next/devDocs/README","ed9"),exact:!0},{path:"/docs/next/download",component:f("/docs/next/download","bed"),exact:!0},{path:"/docs/next/gettingStarted/helm",component:f("/docs/next/gettingStarted/helm","feb"),exact:!0},{path:"/docs/next/gettingStarted/kind",component:f("/docs/next/gettingStarted/kind","13f"),exact:!0},{path:"/docs/next/gettingStarted/notebook",component:f("/docs/next/gettingStarted/notebook","24d"),exact:!0},{path:"/docs/next/gettingStarted/python-sdk",component:f("/docs/next/gettingStarted/python-sdk","003"),exact:!0},{path:"/docs/next/gettingStarted/quickstart",component:f("/docs/next/gettingStarted/quickstart","43a"),exact:!0},{path:"/docs/next/userDocs/api/environment",component:f("/docs/next/userDocs/api/environment","d31"),exact:!0},{path:"/docs/next/userDocs/api/experiment",component:f("/docs/next/userDocs/api/experiment","f1f"),exact:!0},{path:"/docs/next/userDocs/api/experiment-template",component:f("/docs/next/userDocs/api/experiment-template","826"),exact:!0},{path:"/docs/next/userDocs/api/notebook",component:f("/docs/next/userDocs/api/notebook","d81"),exact:!0},{path:"/docs/next/userDocs/others/mlflow",component:f("/docs/next/userDocs/others/mlflow","9fe"),exact:!0},{path:"/docs/next/userDocs/others/tensorboard",component:f("/docs/next/userDocs/others/tensorboard","611"),exact:!0},{path:"/docs/next/userDocs/submarine-sdk/experiment-client",component:f("/docs/next/userDocs/submarine-sdk/experiment-client","5ba"),exact:!0},{path:"/docs/next/userDocs/submarine-sdk/pysubmarine/development",component:f("/docs/next/userDocs/submarine-sdk/pysubmarine/development","33c"),exact:!0},{path:"/docs/next/userDocs/submarine-sdk/README",component:f("/docs/next/userDocs/submarine-sdk/README","d46"),exact:!0},{path:"/docs/next/userDocs/submarine-sdk/submarine-cli",component:f("/docs/next/userDocs/submarine-sdk/submarine-cli","e63"),exact:!0},{path:"/docs/next/userDocs/submarine-sdk/tracking",component:f("/docs/next/userDocs/submarine-sdk/tracking","0ea"),exact:!0}]},{path:"/docs",component:f("/docs","6ba"),routes:[{path:"/docs/",component:f("/docs/","815"),exact:!0},{path:"/docs/adminDocs/yarn/README",component:f("/docs/adminDocs/yarn/README","bd9"),exact:!0},{path:"/docs/adminDocs/yarn/TestAndTroubleshooting",component:f("/docs/adminDocs/yarn/TestAndTroubleshooting","fa3"),exact:!0},{path:"/docs/adminDocs/yarn/workbench/HowToRun",component:f("/docs/adminDocs/yarn/workbench/HowToRun","f2f"),exact:!0},{path:"/docs/adminDocs/yarn/workbench/notebook/setup-jupyter",component:f("/docs/adminDocs/yarn/workbench/notebook/setup-jupyter","240"),exact:!0},{path:"/docs/adminDocs/yarn/workbench/README",component:f("/docs/adminDocs/yarn/workbench/README","a05"),exact:!0},{path:"/docs/adminDocs/yarn/workbench/README.zh-CN",component:f("/docs/adminDocs/yarn/workbench/README.zh-CN","1c2"),exact:!0},{path:"/docs/api/environment",component:f("/docs/api/environment","834"),exact:!0},{path:"/docs/api/experiment",component:f("/docs/api/experiment","a93"),exact:!0},{path:"/docs/api/experiment-template",component:f("/docs/api/experiment-template","14e"),exact:!0},{path:"/docs/api/notebook",component:f("/docs/api/notebook","0bb"),exact:!0},{path:"/docs/community/contributing",component:f("/docs/community/contributing","585"),exact:!0},{path:"/docs/community/HowToCommit",component:f("/docs/community/HowToCommit","096"),exact:!0},{path:"/docs/community/README",component:f("/docs/community/README","06d"),exact:!0},{path:"/docs/designDocs/architecture-and-requirements",component:f("/docs/designDocs/architecture-and-requirements","75a"),exact:!0},{path:"/docs/designDocs/environments-implementation",component:f("/docs/designDocs/environments-implementation","bef"),exact:!0},{path:"/docs/designDocs/experiment-implementation",component:f("/docs/designDocs/experiment-implementation","492"),exact:!0},{path:"/docs/designDocs/implementation-notes",component:f("/docs/designDocs/implementation-notes","c55"),exact:!0},{path:"/docs/designDocs/notebook-implementation",component:f("/docs/designDocs/notebook-implementation","a2a"),exact:!0},{path:"/docs/designDocs/storage-implementation",component:f("/docs/designDocs/storage-implementation","c89"),exact:!0},{path:"/docs/designDocs/submarine-server/architecture",component:f("/docs/designDocs/submarine-server/architecture","14a"),exact:!0},{path:"/docs/designDocs/submarine-server/experimentSpec",component:f("/docs/designDocs/submarine-server/experimentSpec","cd9"),exact:!0},{path:"/docs/designDocs/wip-designs/security-implementation",component:f("/docs/designDocs/wip-designs/security-implementation","71f"),exact:!0},{path:"/docs/designDocs/wip-designs/submarine-clusterServer",component:f("/docs/designDocs/wip-designs/submarine-clusterServer","345"),exact:!0},{path:"/docs/designDocs/wip-designs/submarine-launcher",component:f("/docs/designDocs/wip-designs/submarine-launcher","25f"),exact:!0},{path:"/docs/devDocs/BuildFromCode",component:f("/docs/devDocs/BuildFromCode","ade"),exact:!0},{path:"/docs/devDocs/Dependencies",component:f("/docs/devDocs/Dependencies","c95"),exact:!0},{path:"/docs/devDocs/Development",component:f("/docs/devDocs/Development","131"),exact:!0},{path:"/docs/devDocs/IntegrationTestE2E",component:f("/docs/devDocs/IntegrationTestE2E","f8c"),exact:!0},{path:"/docs/devDocs/IntegrationTestK8s",component:f("/docs/devDocs/IntegrationTestK8s","a9a"),exact:!0},{path:"/docs/devDocs/README",component:f("/docs/devDocs/README","899"),exact:!0},{path:"/docs/download",component:f("/docs/download","3b7"),exact:!0},{path:"/docs/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs",component:f("/docs/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs","651"),exact:!0},{path:"/docs/ecosystem/kaldi/WriteDockerfileKaldi",component:f("/docs/ecosystem/kaldi/WriteDockerfileKaldi","a1c"),exact:!0},{path:"/docs/gettingStarted/helm",component:f("/docs/gettingStarted/helm","e96"),exact:!0},{path:"/docs/gettingStarted/kind",component:f("/docs/gettingStarted/kind","6b5"),exact:!0},{path:"/docs/gettingStarted/notebook",component:f("/docs/gettingStarted/notebook","a7b"),exact:!0},{path:"/docs/gettingStarted/python-sdk",component:f("/docs/gettingStarted/python-sdk","cff"),exact:!0},{path:"/docs/gettingStarted/quickstart",component:f("/docs/gettingStarted/quickstart","703"),exact:!0},{path:"/docs/userDocs/api/environment",component:f("/docs/userDocs/api/environment","641"),exact:!0},{path:"/docs/userDocs/api/experiment",component:f("/docs/userDocs/api/experiment","6d3"),exact:!0},{path:"/docs/userDocs/api/experiment-template",component:f("/docs/userDocs/api/experiment-template","431"),exact:!0},{path:"/docs/userDocs/api/notebook",component:f("/docs/userDocs/api/notebook","620"),exact:!0},{path:"/docs/userDocs/others/mlflow",component:f("/docs/userDocs/others/mlflow","ced"),exact:!0},{path:"/docs/userDocs/others/tensorboard",component:f("/docs/userDocs/others/tensorboard","17e"),exact:!0},{path:"/docs/userDocs/submarine-sdk/experiment-client",component:f("/docs/userDocs/submarine-sdk/experiment-client","647"),exact:!0},{path:"/docs/userDocs/submarine-sdk/model-client",component:f("/docs/userDocs/submarine-sdk/model-client","5e2"),exact:!0},{path:"/docs/userDocs/submarine-sdk/pysubmarine/development",component:f("/docs/userDocs/submarine-sdk/pysubmarine/development","35e"),exact:!0},{path:"/docs/userDocs/submarine-sdk/README",component:f("/docs/userDocs/submarine-sdk/README","0e5"),exact:!0},{path:"/docs/userDocs/submarine-sdk/tracking",component:f("/docs/userDocs/submarine-sdk/tracking","077"),exact:!0},{path:"/docs/userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin",component:f("/docs/userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin","668"),exact:!0},{path:"/docs/userDocs/submarine-security/spark-security/README",component:f("/docs/userDocs/submarine-security/spark-security/README","e82"),exact:!0},{path:"/docs/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README",component:f("/docs/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README","7a1"),exact:!0},{path:"/docs/userDocs/yarn/Dockerfiles",component:f("/docs/userDocs/yarn/Dockerfiles","7a6"),exact:!0},{path:"/docs/userDocs/yarn/TestAndTroubleshooting",component:f("/docs/userDocs/yarn/TestAndTroubleshooting","e16"),exact:!0},{path:"/docs/userDocs/yarn/WriteDockerfileMX",component:f("/docs/userDocs/yarn/WriteDockerfileMX","f52"),exact:!0},{path:"/docs/userDocs/yarn/WriteDockerfilePT",component:f("/docs/userDocs/yarn/WriteDockerfilePT","054"),exact:!0},{path:"/docs/userDocs/yarn/WriteDockerfileTF",component:f("/docs/userDocs/yarn/WriteDockerfileTF","571"),exact:!0},{path:"/docs/userDocs/yarn/YARNRuntimeGuide",component:f("/docs/userDocs/yarn/YARNRuntimeGuide","f3a"),exact:!0}]},{path:"*",component:f("*")}],h=n(11),g=n(9),b=n(29),v=n(30),y=n(31),w=n(32),k=n(26),x=n(14),E=n(4),S=n(2),T=n(15),D=n.n(T),C=[n(17),n(17),n(17),n(47),n(54),n(51)];function _(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];C.forEach((function(t){var r,o,i=null!==(o=null===(r=null==t?void 0:t.default)||void 0===r?void 0:r[e])&&void 0!==o?o:t[e];i&&i.apply(void 0,n)}))}var A={onRouteUpdate:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];_.apply(void 0,["onRouteUpdate"].concat(t))},onRouteUpdateDelayed:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];_.apply(void 0,["onRouteUpdateDelayed"].concat(t))}},O=n(8);function R(e,t){var n=Object(O.a)(e,t);return Promise.all(n.map((function(e){var t=e.route.component;if(t&&t.preload)return t.preload()})))}var P={};var N=function(e){if(P[e.pathname])return Object.assign(Object.assign({},e),{pathname:P[e.pathname]});var t=e.pathname||"/";return""===(t=t.trim().replace(/\/index\.html$/,""))&&(t="/"),P[e.pathname]=t,Object.assign(Object.assign({},e),{pathname:t})};n(52);D.a.configure({showSpinner:!1});var I=function(e){function t(t){var n;return(n=e.call(this,t)||this).previousLocation=null,n.progressBarTimeout=null,n.state={nextRouteHasLoaded:!0},n}Object(E.a)(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e,t){var n=this,r=e.location!==this.props.location,o=this.props,i=o.routes,a=o.delay,s=void 0===a?1e3:a;if(r){var l=N(e.location);return this.startProgressBar(s),this.previousLocation=N(this.props.location),this.setState({nextRouteHasLoaded:!1}),R(i,l.pathname).then((function(){A.onRouteUpdate({previousLocation:n.previousLocation,location:l}),n.previousLocation=null,n.setState({nextRouteHasLoaded:!0},n.stopProgressBar);var e=l.hash;if(e){var t=decodeURIComponent(e.substring(1)),r=document.getElementById(t);r&&r.scrollIntoView()}else window.scrollTo(0,0)})).catch((function(e){return console.warn(e)})),!1}return!!t.nextRouteHasLoaded},n.clearProgressBarTimeout=function(){this.progressBarTimeout&&(clearTimeout(this.progressBarTimeout),this.progressBarTimeout=null)},n.startProgressBar=function(e){var t=this;this.clearProgressBarTimeout(),this.progressBarTimeout=setTimeout((function(){A.onRouteUpdateDelayed({location:N(t.props.location)}),D.a.start()}),e)},n.stopProgressBar=function(){this.clearProgressBarTimeout(),D.a.done()},n.render=function(){var e=this.props,t=e.children,n=e.location;return o.a.createElement(S.d,{location:N(n),render:function(){return t}})},t}(o.a.Component),L=Object(S.o)(I),j=n(25),M=n(37),F=n.n(M),z=n(22);function B(){var e=Object(z.default)().siteConfig,t=e.baseUrl,n=e.baseUrlIssueBanner,r=Object(S.l)().pathname;if(!(n&&r===t))return null;var i="base-url-issue-banner-container";return o.a.createElement(o.a.Fragment,null,o.a.createElement(j.a,null,o.a.createElement("script",null,"\ndocument.addEventListener('DOMContentLoaded', function () {\n  var baseUrlSuggestion = document.getElementById(\n    'base-url-issue-banner-container',\n  );\n  if (baseUrlSuggestion) {\n    var actualHomePagePath = window.location.pathname;\n    var suggestedBaseUrl = actualHomePagePath.substr(-1) === '/'\n        ? actualHomePagePath\n        : actualHomePagePath + '/';\n    baseUrlSuggestion.innerHTML = suggestedBaseUrl;\n  }\n});\n")),o.a.createElement("div",{className:F.a.baseUrlIssueBanner,style:{border:"solid red thick",backgroundColor:"#ffe6b3",margin:20,padding:20,fontSize:20}},o.a.createElement("p",{style:{fontWeight:"bold",fontSize:30}},"Your Docusaurus site did not load properly."),o.a.createElement("p",null,"A very common reason is a wrong site"," ",o.a.createElement("a",{href:"https://v2.docusaurus.io/docs/docusaurus.config.js/#baseurl",style:{fontWeight:"bold"}},"baseUrl configuration"),"."),o.a.createElement("p",null,"Current configured baseUrl ="," ",o.a.createElement("span",{style:{fontWeight:"bold",color:"red"}},t)," ","/"===t?" (default value)":""),o.a.createElement("p",null,"We suggest trying baseUrl ="," ",o.a.createElement("span",{style:{fontWeight:"bold",color:"green"},id:i})," ")))}var U=function(e){var t=e.children;return o.a.createElement(o.a.Fragment,null,t)};var $=function(){var e=Object(r.useState)(!1),t=e[0],n=e[1];return Object(r.useEffect)((function(){n(!0)}),[]),o.a.createElement(x.a.Provider,{value:{siteConfig:g.default,siteMetadata:w,globalData:b,i18n:v,codeTranslations:y,isClient:t}},o.a.createElement(U,null,o.a.createElement(B,null),o.a.createElement(L,{routes:m},Object(k.a)(m))))};var q=function(e){if("undefined"==typeof document)return!1;var t=document.createElement("link");try{if(t.relList&&"function"==typeof t.relList.supports)return t.relList.supports(e)}catch(n){return!1}return!1}("prefetch")?function(e){return new Promise((function(t,n){if("undefined"!=typeof document){var r=document.createElement("link");r.setAttribute("rel","prefetch"),r.setAttribute("href",e),r.onload=t,r.onerror=n,(document.getElementsByTagName("head")[0]||document.getElementsByName("script")[0].parentNode).appendChild(r)}else n()}))}:function(e){return new Promise((function(t,n){var r=new XMLHttpRequest;r.open("GET",e,!0),r.withCredentials=!0,r.onload=function(){200===r.status?t():n()},r.send(null)}))},H={};var G=function(e){return new Promise((function(t){H[e]?t():q(e).then((function(){t(),H[e]=!0})).catch((function(){}))}))},W={},V={},K=function(){return!(!("connection"in navigator)||-1===(navigator.connection.effectiveType||"").indexOf("2g")||!navigator.connection.saveData)},Q=function(e){return Array.prototype.concat.apply([],e)},Y={prefetch:function(e){if(!function(e){return!K()&&!V[e]&&!W[e]}(e))return!1;W[e]=!0;var t=Object(O.a)(m,e);return Q(t.map((function(e){return t=e.route.path,Q(Object.entries(u).filter((function(e){return e[0].replace(/(-[^-]+)$/,"")===t})).map((function(e){var t=e[1];return Object.values(p(t))})));var t}))).forEach((function(e){var t=n.gca(e);t&&!/undefined/.test(t)&&G(t)})),!0},preload:function(e){return!!function(e){return!K()&&!V[e]}(e)&&(V[e]=!0,R(m,e),!0)}};if(h.a.canUseDOM){window.docusaurus=Y;var X=i.hydrate;R(m,window.location.pathname).then((function(){X(o.a.createElement(a.a,null,o.a.createElement($,null)),document.getElementById("__docusaurus"))}))}},function(e,t,n){"use strict";n.r(t);var r=n(23),o=n(11),i=n(9);(function(e){if(o.a.canUseDOM){var t=i.default.themeConfig.prism,r=(t=void 0===t?{}:t).additionalLanguages,a=void 0===r?[]:r;window.Prism=e,a.forEach((function(e){n(18)("./prism-"+e)})),delete window.Prism}})(r.a)}],[[38,126,0]]]);
\ No newline at end of file
diff --git a/main.f5734e41.js.LICENSE.txt b/main.92db4fb0.js.LICENSE.txt
similarity index 100%
rename from main.f5734e41.js.LICENSE.txt
rename to main.92db4fb0.js.LICENSE.txt
diff --git a/main.f5734e41.js b/main.f5734e41.js
deleted file mode 100644
index c76af6a..0000000
--- a/main.f5734e41.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! For license information please see main.f5734e41.js.LICENSE.txt */
-(window.webpackJsonp=window.webpackJsonp||[]).push([[140],[function(e,t,n){"use strict";e.exports=n(39)},function(e,t,n){e.exports=n(43)()},function(e,t,n){"use strict";n.d(t,"a",(function(){return v})),n.d(t,"b",(function(){return w})),n.d(t,"c",(function(){return T})),n.d(t,"d",(function(){return A})),n.d(t,"e",(function(){return b})),n.d(t,"f",(function(){return I})),n.d(t,"g",(function(){return M})),n.d(t,"h",(function(){return g})),n.d(t,"i",(function(){return E})),n.d(t,"j",(function(){return C})),n.d(t,"k",(function(){return F})),n.d(t,"l",(function(){return z})),n.d(t,"m",(function(){return B})),n.d(t,"n",(function(){return U})),n.d(t,"o",(function(){return j}));var r=n(4),o=n(0),i=n.n(o),a=(n(1),n(6)),s=n(20),l=n(5),c=n(3),u=n(21),d=n.n(u),p=(n(27),n(7)),f=n(33),m=n.n(f),h=function(e){var t=Object(s.a)();return t.displayName=e,t}("Router-History"),g=function(e){var t=Object(s.a)();return t.displayName=e,t}("Router"),b=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={location:t.history.location},n._isMounted=!1,n._pendingLocation=null,t.staticContext||(n.unlisten=t.history.listen((function(e){n._isMounted?n.setState({location:e}):n._pendingLocation=e}))),n}Object(r.a)(t,e),t.computeRootMatch=function(e){return{path:"/",url:"/",params:{},isExact:"/"===e}};var n=t.prototype;return n.componentDidMount=function(){this._isMounted=!0,this._pendingLocation&&this.setState({location:this._pendingLocation})},n.componentWillUnmount=function(){this.unlisten&&this.unlisten()},n.render=function(){return i.a.createElement(g.Provider,{value:{history:this.props.history,location:this.state.location,match:t.computeRootMatch(this.state.location.pathname),staticContext:this.props.staticContext}},i.a.createElement(h.Provider,{children:this.props.children||null,value:this.props.history}))},t}(i.a.Component);var v=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];return(t=e.call.apply(e,[this].concat(r))||this).history=Object(a.d)(t.props),t}return Object(r.a)(t,e),t.prototype.render=function(){return i.a.createElement(b,{history:this.history,children:this.props.children})},t}(i.a.Component);var y=function(e){function t(){return e.apply(this,arguments)||this}Object(r.a)(t,e);var n=t.prototype;return n.componentDidMount=function(){this.props.onMount&&this.props.onMount.call(this,this)},n.componentDidUpdate=function(e){this.props.onUpdate&&this.props.onUpdate.call(this,this,e)},n.componentWillUnmount=function(){this.props.onUnmount&&this.props.onUnmount.call(this,this)},n.render=function(){return null},t}(i.a.Component);function w(e){var t=e.message,n=e.when,r=void 0===n||n;return i.a.createElement(g.Consumer,null,(function(e){if(e||Object(l.a)(!1),!r||e.staticContext)return null;var n=e.history.block;return i.a.createElement(y,{onMount:function(e){e.release=n(t)},onUpdate:function(e,r){r.message!==t&&(e.release(),e.release=n(t))},onUnmount:function(e){e.release()},message:t})}))}var k={},x=0;function E(e,t){return void 0===e&&(e="/"),void 0===t&&(t={}),"/"===e?e:function(e){if(k[e])return k[e];var t=d.a.compile(e);return x<1e4&&(k[e]=t,x++),t}(e)(t,{pretty:!0})}function T(e){var t=e.computedMatch,n=e.to,r=e.push,o=void 0!==r&&r;return i.a.createElement(g.Consumer,null,(function(e){e||Object(l.a)(!1);var r=e.history,s=e.staticContext,u=o?r.push:r.replace,d=Object(a.c)(t?"string"==typeof n?E(n,t.params):Object(c.a)({},n,{pathname:E(n.pathname,t.params)}):n);return s?(u(d),null):i.a.createElement(y,{onMount:function(){u(d)},onUpdate:function(e,t){var n=Object(a.c)(t.to);Object(a.f)(n,Object(c.a)({},d,{key:n.key}))||u(d)},to:n})}))}var S={},D=0;function C(e,t){void 0===t&&(t={}),("string"==typeof t||Array.isArray(t))&&(t={path:t});var n=t,r=n.path,o=n.exact,i=void 0!==o&&o,a=n.strict,s=void 0!==a&&a,l=n.sensitive,c=void 0!==l&&l;return[].concat(r).reduce((function(t,n){if(!n&&""!==n)return null;if(t)return t;var r=function(e,t){var n=""+t.end+t.strict+t.sensitive,r=S[n]||(S[n]={});if(r[e])return r[e];var o=[],i={regexp:d()(e,o,t),keys:o};return D<1e4&&(r[e]=i,D++),i}(n,{end:i,strict:s,sensitive:c}),o=r.regexp,a=r.keys,l=o.exec(e);if(!l)return null;var u=l[0],p=l.slice(1),f=e===u;return i&&!f?null:{path:n,url:"/"===n&&""===u?"/":u,isExact:f,params:a.reduce((function(e,t,n){return e[t.name]=p[n],e}),{})}}),null)}var A=function(e){function t(){return e.apply(this,arguments)||this}return Object(r.a)(t,e),t.prototype.render=function(){var e=this;return i.a.createElement(g.Consumer,null,(function(t){t||Object(l.a)(!1);var n=e.props.location||t.location,r=e.props.computedMatch?e.props.computedMatch:e.props.path?C(n.pathname,e.props):t.match,o=Object(c.a)({},t,{location:n,match:r}),a=e.props,s=a.children,u=a.component,d=a.render;return Array.isArray(s)&&0===s.length&&(s=null),i.a.createElement(g.Provider,{value:o},o.match?s?"function"==typeof s?s(o):s:u?i.a.createElement(u,o):d?d(o):null:"function"==typeof s?s(o):null)}))},t}(i.a.Component);function _(e){return"/"===e.charAt(0)?e:"/"+e}function R(e,t){if(!e)return t;var n=_(e);return 0!==t.pathname.indexOf(n)?t:Object(c.a)({},t,{pathname:t.pathname.substr(n.length)})}function O(e){return"string"==typeof e?e:Object(a.e)(e)}function P(e){return function(){Object(l.a)(!1)}}function N(){}var I=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];return(t=e.call.apply(e,[this].concat(r))||this).handlePush=function(e){return t.navigateTo(e,"PUSH")},t.handleReplace=function(e){return t.navigateTo(e,"REPLACE")},t.handleListen=function(){return N},t.handleBlock=function(){return N},t}Object(r.a)(t,e);var n=t.prototype;return n.navigateTo=function(e,t){var n=this.props,r=n.basename,o=void 0===r?"":r,i=n.context,s=void 0===i?{}:i;s.action=t,s.location=function(e,t){return e?Object(c.a)({},t,{pathname:_(e)+t.pathname}):t}(o,Object(a.c)(e)),s.url=O(s.location)},n.render=function(){var e=this.props,t=e.basename,n=void 0===t?"":t,r=e.context,o=void 0===r?{}:r,s=e.location,l=void 0===s?"/":s,u=Object(p.a)(e,["basename","context","location"]),d={createHref:function(e){return _(n+O(e))},action:"POP",location:R(n,Object(a.c)(l)),push:this.handlePush,replace:this.handleReplace,go:P(),goBack:P(),goForward:P(),listen:this.handleListen,block:this.handleBlock};return i.a.createElement(b,Object(c.a)({},u,{history:d,staticContext:o}))},t}(i.a.Component);var M=function(e){function t(){return e.apply(this,arguments)||this}return Object(r.a)(t,e),t.prototype.render=function(){var e=this;return i.a.createElement(g.Consumer,null,(function(t){t||Object(l.a)(!1);var n,r,o=e.props.location||t.location;return i.a.Children.forEach(e.props.children,(function(e){if(null==r&&i.a.isValidElement(e)){n=e;var a=e.props.path||e.props.from;r=a?C(o.pathname,Object(c.a)({},e.props,{path:a})):t.match}})),r?i.a.cloneElement(n,{location:o,computedMatch:r}):null}))},t}(i.a.Component);function j(e){var t="withRouter("+(e.displayName||e.name)+")",n=function(t){var n=t.wrappedComponentRef,r=Object(p.a)(t,["wrappedComponentRef"]);return i.a.createElement(g.Consumer,null,(function(t){return t||Object(l.a)(!1),i.a.createElement(e,Object(c.a)({},r,t,{ref:n}))}))};return n.displayName=t,n.WrappedComponent=e,m()(n,e)}var L=i.a.useContext;function F(){return L(h)}function z(){return L(g).location}function B(){var e=L(g).match;return e?e.params:{}}function U(e){var t=z(),n=L(g).match;return e?C(t.pathname,e):n}},function(e,t,n){"use strict";function r(){return(r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}n.d(t,"a",(function(){return r}))},function(e,t,n){"use strict";function r(e,t){return(r=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function o(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,r(e,t)}n.d(t,"a",(function(){return o}))},function(e,t,n){"use strict";var r="Invariant failed";t.a=function(e,t){if(!e)throw new Error(r)}},function(e,t,n){"use strict";n.d(t,"a",(function(){return E})),n.d(t,"b",(function(){return _})),n.d(t,"d",(function(){return O})),n.d(t,"c",(function(){return h})),n.d(t,"f",(function(){return g})),n.d(t,"e",(function(){return m}));var r=n(3);function o(e){return"/"===e.charAt(0)}function i(e,t){for(var n=t,r=n+1,o=e.length;r<o;n+=1,r+=1)e[n]=e[r];e.pop()}var a=function(e,t){void 0===t&&(t="");var n,r=e&&e.split("/")||[],a=t&&t.split("/")||[],s=e&&o(e),l=t&&o(t),c=s||l;if(e&&o(e)?a=r:r.length&&(a.pop(),a=a.concat(r)),!a.length)return"/";if(a.length){var u=a[a.length-1];n="."===u||".."===u||""===u}else n=!1;for(var d=0,p=a.length;p>=0;p--){var f=a[p];"."===f?i(a,p):".."===f?(i(a,p),d++):d&&(i(a,p),d--)}if(!c)for(;d--;d)a.unshift("..");!c||""===a[0]||a[0]&&o(a[0])||a.unshift("");var m=a.join("/");return n&&"/"!==m.substr(-1)&&(m+="/"),m};function s(e){return e.valueOf?e.valueOf():Object.prototype.valueOf.call(e)}var l=function e(t,n){if(t===n)return!0;if(null==t||null==n)return!1;if(Array.isArray(t))return Array.isArray(n)&&t.length===n.length&&t.every((function(t,r){return e(t,n[r])}));if("object"==typeof t||"object"==typeof n){var r=s(t),o=s(n);return r!==t||o!==n?e(r,o):Object.keys(Object.assign({},t,n)).every((function(r){return e(t[r],n[r])}))}return!1},c=n(5);function u(e){return"/"===e.charAt(0)?e:"/"+e}function d(e){return"/"===e.charAt(0)?e.substr(1):e}function p(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function f(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function m(e){var t=e.pathname,n=e.search,r=e.hash,o=t||"/";return n&&"?"!==n&&(o+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(o+="#"===r.charAt(0)?r:"#"+r),o}function h(e,t,n,o){var i;"string"==typeof e?(i=function(e){var t=e||"/",n="",r="",o=t.indexOf("#");-1!==o&&(r=t.substr(o),t=t.substr(0,o));var i=t.indexOf("?");return-1!==i&&(n=t.substr(i),t=t.substr(0,i)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e)).state=t:(void 0===(i=Object(r.a)({},e)).pathname&&(i.pathname=""),i.search?"?"!==i.search.charAt(0)&&(i.search="?"+i.search):i.search="",i.hash?"#"!==i.hash.charAt(0)&&(i.hash="#"+i.hash):i.hash="",void 0!==t&&void 0===i.state&&(i.state=t));try{i.pathname=decodeURI(i.pathname)}catch(s){throw s instanceof URIError?new URIError('Pathname "'+i.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):s}return n&&(i.key=n),o?i.pathname?"/"!==i.pathname.charAt(0)&&(i.pathname=a(i.pathname,o.pathname)):i.pathname=o.pathname:i.pathname||(i.pathname="/"),i}function g(e,t){return e.pathname===t.pathname&&e.search===t.search&&e.hash===t.hash&&e.key===t.key&&l(e.state,t.state)}function b(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,o){if(null!=e){var i="function"==typeof e?e(t,n):e;"string"==typeof i?"function"==typeof r?r(i,o):o(!0):o(!1!==i)}else o(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];t.forEach((function(e){return e.apply(void 0,n)}))}}}var v=!("undefined"==typeof window||!window.document||!window.document.createElement);function y(e,t){t(window.confirm(e))}var w="popstate",k="hashchange";function x(){try{return window.history.state||{}}catch(e){return{}}}function E(e){void 0===e&&(e={}),v||Object(c.a)(!1);var t,n=window.history,o=(-1===(t=window.navigator.userAgent).indexOf("Android 2.")&&-1===t.indexOf("Android 4.0")||-1===t.indexOf("Mobile Safari")||-1!==t.indexOf("Chrome")||-1!==t.indexOf("Windows Phone"))&&window.history&&"pushState"in window.history,i=!(-1===window.navigator.userAgent.indexOf("Trident")),a=e,s=a.forceRefresh,l=void 0!==s&&s,d=a.getUserConfirmation,g=void 0===d?y:d,E=a.keyLength,T=void 0===E?6:E,S=e.basename?f(u(e.basename)):"";function D(e){var t=e||{},n=t.key,r=t.state,o=window.location,i=o.pathname+o.search+o.hash;return S&&(i=p(i,S)),h(i,r,n)}function C(){return Math.random().toString(36).substr(2,T)}var A=b();function _(e){Object(r.a)(U,e),U.length=n.length,A.notifyListeners(U.location,U.action)}function R(e){(function(e){return void 0===e.state&&-1===navigator.userAgent.indexOf("CriOS")})(e)||N(D(e.state))}function O(){N(D(x()))}var P=!1;function N(e){if(P)P=!1,_();else{A.confirmTransitionTo(e,"POP",g,(function(t){t?_({action:"POP",location:e}):function(e){var t=U.location,n=M.indexOf(t.key);-1===n&&(n=0);var r=M.indexOf(e.key);-1===r&&(r=0);var o=n-r;o&&(P=!0,L(o))}(e)}))}}var I=D(x()),M=[I.key];function j(e){return S+m(e)}function L(e){n.go(e)}var F=0;function z(e){1===(F+=e)&&1===e?(window.addEventListener(w,R),i&&window.addEventListener(k,O)):0===F&&(window.removeEventListener(w,R),i&&window.removeEventListener(k,O))}var B=!1;var U={length:n.length,action:"POP",location:I,createHref:j,push:function(e,t){var r="PUSH",i=h(e,t,C(),U.location);A.confirmTransitionTo(i,r,g,(function(e){if(e){var t=j(i),a=i.key,s=i.state;if(o)if(n.pushState({key:a,state:s},null,t),l)window.location.href=t;else{var c=M.indexOf(U.location.key),u=M.slice(0,c+1);u.push(i.key),M=u,_({action:r,location:i})}else window.location.href=t}}))},replace:function(e,t){var r="REPLACE",i=h(e,t,C(),U.location);A.confirmTransitionTo(i,r,g,(function(e){if(e){var t=j(i),a=i.key,s=i.state;if(o)if(n.replaceState({key:a,state:s},null,t),l)window.location.replace(t);else{var c=M.indexOf(U.location.key);-1!==c&&(M[c]=i.key),_({action:r,location:i})}else window.location.replace(t)}}))},go:L,goBack:function(){L(-1)},goForward:function(){L(1)},block:function(e){void 0===e&&(e=!1);var t=A.setPrompt(e);return B||(z(1),B=!0),function(){return B&&(B=!1,z(-1)),t()}},listen:function(e){var t=A.appendListener(e);return z(1),function(){z(-1),t()}}};return U}var T="hashchange",S={hashbang:{encodePath:function(e){return"!"===e.charAt(0)?e:"!/"+d(e)},decodePath:function(e){return"!"===e.charAt(0)?e.substr(1):e}},noslash:{encodePath:d,decodePath:u},slash:{encodePath:u,decodePath:u}};function D(e){var t=e.indexOf("#");return-1===t?e:e.slice(0,t)}function C(){var e=window.location.href,t=e.indexOf("#");return-1===t?"":e.substring(t+1)}function A(e){window.location.replace(D(window.location.href)+"#"+e)}function _(e){void 0===e&&(e={}),v||Object(c.a)(!1);var t=window.history,n=(window.navigator.userAgent.indexOf("Firefox"),e),o=n.getUserConfirmation,i=void 0===o?y:o,a=n.hashType,s=void 0===a?"slash":a,l=e.basename?f(u(e.basename)):"",d=S[s],g=d.encodePath,w=d.decodePath;function k(){var e=w(C());return l&&(e=p(e,l)),h(e)}var x=b();function E(e){Object(r.a)(B,e),B.length=t.length,x.notifyListeners(B.location,B.action)}var _=!1,R=null;function O(){var e,t,n=C(),r=g(n);if(n!==r)A(r);else{var o=k(),a=B.location;if(!_&&(t=o,(e=a).pathname===t.pathname&&e.search===t.search&&e.hash===t.hash))return;if(R===m(o))return;R=null,function(e){if(_)_=!1,E();else{var t="POP";x.confirmTransitionTo(e,t,i,(function(n){n?E({action:t,location:e}):function(e){var t=B.location,n=M.lastIndexOf(m(t));-1===n&&(n=0);var r=M.lastIndexOf(m(e));-1===r&&(r=0);var o=n-r;o&&(_=!0,j(o))}(e)}))}}(o)}}var P=C(),N=g(P);P!==N&&A(N);var I=k(),M=[m(I)];function j(e){t.go(e)}var L=0;function F(e){1===(L+=e)&&1===e?window.addEventListener(T,O):0===L&&window.removeEventListener(T,O)}var z=!1;var B={length:t.length,action:"POP",location:I,createHref:function(e){var t=document.querySelector("base"),n="";return t&&t.getAttribute("href")&&(n=D(window.location.href)),n+"#"+g(l+m(e))},push:function(e,t){var n="PUSH",r=h(e,void 0,void 0,B.location);x.confirmTransitionTo(r,n,i,(function(e){if(e){var t=m(r),o=g(l+t);if(C()!==o){R=t,function(e){window.location.hash=e}(o);var i=M.lastIndexOf(m(B.location)),a=M.slice(0,i+1);a.push(t),M=a,E({action:n,location:r})}else E()}}))},replace:function(e,t){var n="REPLACE",r=h(e,void 0,void 0,B.location);x.confirmTransitionTo(r,n,i,(function(e){if(e){var t=m(r),o=g(l+t);C()!==o&&(R=t,A(o));var i=M.indexOf(m(B.location));-1!==i&&(M[i]=t),E({action:n,location:r})}}))},go:j,goBack:function(){j(-1)},goForward:function(){j(1)},block:function(e){void 0===e&&(e=!1);var t=x.setPrompt(e);return z||(F(1),z=!0),function(){return z&&(z=!1,F(-1)),t()}},listen:function(e){var t=x.appendListener(e);return F(1),function(){F(-1),t()}}};return B}function R(e,t,n){return Math.min(Math.max(e,t),n)}function O(e){void 0===e&&(e={});var t=e,n=t.getUserConfirmation,o=t.initialEntries,i=void 0===o?["/"]:o,a=t.initialIndex,s=void 0===a?0:a,l=t.keyLength,c=void 0===l?6:l,u=b();function d(e){Object(r.a)(w,e),w.length=w.entries.length,u.notifyListeners(w.location,w.action)}function p(){return Math.random().toString(36).substr(2,c)}var f=R(s,0,i.length-1),g=i.map((function(e){return h(e,void 0,"string"==typeof e?p():e.key||p())})),v=m;function y(e){var t=R(w.index+e,0,w.entries.length-1),r=w.entries[t];u.confirmTransitionTo(r,"POP",n,(function(e){e?d({action:"POP",location:r,index:t}):d()}))}var w={length:g.length,action:"POP",location:g[f],index:f,entries:g,createHref:v,push:function(e,t){var r="PUSH",o=h(e,t,p(),w.location);u.confirmTransitionTo(o,r,n,(function(e){if(e){var t=w.index+1,n=w.entries.slice(0);n.length>t?n.splice(t,n.length-t,o):n.push(o),d({action:r,location:o,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",o=h(e,t,p(),w.location);u.confirmTransitionTo(o,r,n,(function(e){e&&(w.entries[w.index]=o,d({action:r,location:o}))}))},go:y,goBack:function(){y(-1)},goForward:function(){y(1)},canGo:function(e){var t=w.index+e;return t>=0&&t<w.entries.length},block:function(e){return void 0===e&&(e=!1),u.setPrompt(e)},listen:function(e){return u.appendListener(e)}};return w}},function(e,t,n){"use strict";function r(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}n.d(t,"a",(function(){return r}))},function(e,t,n){"use strict";n.d(t,"a",(function(){return s})),n.d(t,"b",(function(){return l}));var r=n(2),o=n(3),i=n(0),a=n.n(i);function s(e,t,n){return void 0===n&&(n=[]),e.some((function(e){var o=e.path?Object(r.j)(t,e):n.length?n[n.length-1].match:r.e.computeRootMatch(t);return o&&(n.push({route:e,match:o}),e.routes&&s(e.routes,t,n)),o})),n}function l(e,t,n){return void 0===t&&(t={}),void 0===n&&(n={}),e?a.a.createElement(r.g,n,e.map((function(e,n){return a.a.createElement(r.d,{key:e.key||n,path:e.path,exact:e.exact,strict:e.strict,render:function(n){return e.render?e.render(Object(o.a)({},n,{},t,{route:e})):a.a.createElement(e.component,Object(o.a)({},n,t,{route:e}))}})}))):null}},function(e,t,n){"use strict";n.r(t),t.default={title:"Apache Submarine",tagline:"Cloud Native Machine Learning Platform",url:"https://submarine.apache.org/",baseUrl:"/",onBrokenLinks:"throw",onBrokenMarkdownLinks:"warn",favicon:"img/submarine.ico",organizationName:"apache",projectName:"submarine-site",themeConfig:{navbar:{title:"Apache Submarine",logo:{alt:"Apache Submarine Site Logo",src:"img/icons/128.png"},items:[{type:"doc",docId:"gettingStarted/quickstart",label:"Docs",position:"left",activeSidebarClassName:"navbar__link--active"},{type:"doc",docId:"api/environment",label:"API",position:"left",activeSidebarClassName:"navbar__link--active"},{type:"doc",docId:"download",label:"Download",position:"left",activeSidebarClassName:"navbar__link--active"},{type:"docsVersionDropdown",dropdownItemsAfter:[{to:"/versions",label:"All versions"}],dropdownActiveClassDisabled:!0,position:"right",dropdownItemsBefore:[]},{href:"https://github.com/apache/submarine",label:"GitHub",position:"right"},{label:"Apache",position:"right",items:[{label:"Apache Software Foundation",href:"https://www.apache.org/foundation/how-it-works.html"},{label:"Events",href:"https://www.apache.org/events/current-event"},{label:"Apache License",href:"https://www.apache.org/licenses/"},{label:"Thanks",href:"https://www.apache.org/foundation/thanks.html"},{label:"Security",href:"https://www.apache.org/security/"},{label:"Sponsorship",href:"https://www.apache.org/foundation/sponsorship.html"}]}],hideOnScroll:!1},footer:{style:"dark",logo:{alt:"Apache Open Source Logo",src:"https://hadoop.apache.org/asf_logo_wide.png",href:"https://www.apache.org/"},links:[{title:"Docs",items:[{label:"Getting Started",to:"docs/gettingStarted/quickstart"},{label:"API docs",to:"docs/api/environment"}]},{title:"Community",items:[{label:"Stack Overflow",href:"https://stackoverflow.com/questions/tagged/apache-submarine"},{label:"Slack",href:"https://s.apache.org/slack-invite"}]},{title:"More",items:[{label:"Blog",to:"https://medium.com/@apache.submarine"},{label:"GitHub",href:"https://github.com/apache/submarine"}]}],copyright:"Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are\n       either registered trademarks or trademarks of the Apache Software Foundation in the United States and other\n        countries.<br> Copyright \xa9 2022 Apache Submarine is Apache2 Licensed software."},colorMode:{defaultMode:"light",disableSwitch:!1,respectPrefersColorScheme:!1,switchConfig:{darkIcon:"\ud83c\udf1c",darkIconStyle:{},lightIcon:"\ud83c\udf1e",lightIconStyle:{}}},docs:{versionPersistence:"localStorage"},metadatas:[],prism:{additionalLanguages:[]},hideableSidebar:!1},presets:[["@docusaurus/preset-classic",{docs:{sidebarPath:"/home/runner/work/submarine/submarine/website/sidebars.js",editUrl:"https://github.com/apache/submarine/edit/master/website/",versions:{current:{label:"master \ud83c\udfc3"}}},theme:{customCss:"/home/runner/work/submarine/submarine/website/src/css/custom.css"}}]],plugins:[["/home/runner/work/submarine/submarine/website/node_modules/docusaurus-lunr-search/src/index.js",{languages:["en","de"]}]],baseUrlIssueBanner:!0,i18n:{defaultLocale:"en",locales:["en"],localeConfigs:{}},onDuplicateRoutes:"warn",customFields:{},themes:[],titleDelimiter:"|",noIndex:!1}},function(e,t,n){"use strict";n.d(t,"a",(function(){return d})),n.d(t,"b",(function(){return p})),n.d(t,"c",(function(){return v})),n.d(t,"e",(function(){return k}));var r=n(2);n.d(t,"d",(function(){return r.a})),n.d(t,"f",(function(){return r.b})),n.d(t,"g",(function(){return r.c})),n.d(t,"h",(function(){return r.d})),n.d(t,"i",(function(){return r.e})),n.d(t,"j",(function(){return r.f})),n.d(t,"k",(function(){return r.g})),n.d(t,"l",(function(){return r.i})),n.d(t,"m",(function(){return r.j})),n.d(t,"n",(function(){return r.k})),n.d(t,"o",(function(){return r.l})),n.d(t,"p",(function(){return r.m})),n.d(t,"q",(function(){return r.n})),n.d(t,"r",(function(){return r.o}));var o=n(4),i=n(0),a=n.n(i),s=n(6),l=(n(1),n(3)),c=n(7),u=n(5),d=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];return(t=e.call.apply(e,[this].concat(r))||this).history=Object(s.a)(t.props),t}return Object(o.a)(t,e),t.prototype.render=function(){return a.a.createElement(r.e,{history:this.history,children:this.props.children})},t}(a.a.Component);var p=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];return(t=e.call.apply(e,[this].concat(r))||this).history=Object(s.b)(t.props),t}return Object(o.a)(t,e),t.prototype.render=function(){return a.a.createElement(r.e,{history:this.history,children:this.props.children})},t}(a.a.Component);var f=function(e,t){return"function"==typeof e?e(t):e},m=function(e,t){return"string"==typeof e?Object(s.c)(e,null,null,t):e},h=function(e){return e},g=a.a.forwardRef;void 0===g&&(g=h);var b=g((function(e,t){var n=e.innerRef,r=e.navigate,o=e.onClick,i=Object(c.a)(e,["innerRef","navigate","onClick"]),s=i.target,u=Object(l.a)({},i,{onClick:function(e){try{o&&o(e)}catch(t){throw e.preventDefault(),t}e.defaultPrevented||0!==e.button||s&&"_self"!==s||function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}(e)||(e.preventDefault(),r())}});return u.ref=h!==g&&t||n,a.a.createElement("a",u)}));var v=g((function(e,t){var n=e.component,o=void 0===n?b:n,i=e.replace,s=e.to,d=e.innerRef,p=Object(c.a)(e,["component","replace","to","innerRef"]);return a.a.createElement(r.h.Consumer,null,(function(e){e||Object(u.a)(!1);var n=e.history,r=m(f(s,e.location),e.location),c=r?n.createHref(r):"",b=Object(l.a)({},p,{href:c,navigate:function(){var t=f(s,e.location);(i?n.replace:n.push)(t)}});return h!==g?b.ref=t||d:b.innerRef=d,a.a.createElement(o,b)}))})),y=function(e){return e},w=a.a.forwardRef;void 0===w&&(w=y);var k=w((function(e,t){var n=e["aria-current"],o=void 0===n?"page":n,i=e.activeClassName,s=void 0===i?"active":i,d=e.activeStyle,p=e.className,h=e.exact,g=e.isActive,b=e.location,k=e.sensitive,x=e.strict,E=e.style,T=e.to,S=e.innerRef,D=Object(c.a)(e,["aria-current","activeClassName","activeStyle","className","exact","isActive","location","sensitive","strict","style","to","innerRef"]);return a.a.createElement(r.h.Consumer,null,(function(e){e||Object(u.a)(!1);var n=b||e.location,i=m(f(T,n),n),c=i.pathname,C=c&&c.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1"),A=C?Object(r.j)(n.pathname,{path:C,exact:h,sensitive:k,strict:x}):null,_=!!(g?g(A,n):A),R=_?function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.filter((function(e){return e})).join(" ")}(p,s):p,O=_?Object(l.a)({},E,{},d):E,P=Object(l.a)({"aria-current":_&&o||null,className:R,style:O,to:i},D);return y!==w?P.ref=t||S:P.innerRef=S,a.a.createElement(v,P)}))}))},function(e,t,n){"use strict";var r=!("undefined"==typeof window||!window.document||!window.document.createElement),o={canUseDOM:r,canUseEventListeners:r&&!(!window.addEventListener&&!window.attachEvent),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&!!window.screen};t.a=o},function(e,t,n){"use strict";var r=Object.getOwnPropertySymbols,o=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable;function a(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(o){return!1}}()?Object.assign:function(e,t){for(var n,s,l=a(e),c=1;c<arguments.length;c++){for(var u in n=Object(arguments[c]))o.call(n,u)&&(l[u]=n[u]);if(r){s=r(n);for(var d=0;d<s.length;d++)i.call(n,s[d])&&(l[s[d]]=n[s[d]])}}return l}},function(e){e.exports=JSON.parse('{"/-deb":{"component":"c4f5d8e4","config":"5e9f5e1a"},"/releases/submarine-release-0.2.0-cb0":{"component":"1f391b9e","content":"cdfb3821"},"/releases/submarine-release-0.3.0-a74":{"component":"1f391b9e","content":"3315d736"},"/releases/submarine-release-0.4.0-12e":{"component":"1f391b9e","content":"e9f77c1e"},"/releases/submarine-release-0.5.0-388":{"component":"1f391b9e","content":"be5f9a0f"},"/releases/submarine-release-0.6.0-091":{"component":"1f391b9e","content":"dd728e8e"},"/versions-b27":{"component":"18b93cb3","config":"5e9f5e1a"},"/docs/next-3d7":{"component":"1be78505","versionMetadata":"935f2afb"},"/docs/next/-335":{"component":"17896441","content":"c18d5a16"},"/docs/next/adminDocs/yarn/README-011":{"component":"17896441","content":"f5ec27a4"},"/docs/next/adminDocs/yarn/TestAndTroubleshooting-6b2":{"component":"17896441","content":"22885c43"},"/docs/next/adminDocs/yarn/workbench/HowToRun-b1f":{"component":"17896441","content":"bf08320e"},"/docs/next/adminDocs/yarn/workbench/notebook/setup-jupyter-b28":{"component":"17896441","content":"7103e683"},"/docs/next/adminDocs/yarn/workbench/README-161":{"component":"17896441","content":"5a22443f"},"/docs/next/adminDocs/yarn/workbench/README.zh-CN-c2a":{"component":"17896441","content":"389ecd94"},"/docs/next/api/environment-a53":{"component":"17896441","content":"2f44017d"},"/docs/next/api/experiment-2a2":{"component":"17896441","content":"80453470"},"/docs/next/api/experiment-template-f8c":{"component":"17896441","content":"4726afa6"},"/docs/next/api/model-version-251":{"component":"17896441","content":"89982a88"},"/docs/next/api/notebook-b86":{"component":"17896441","content":"a0524152"},"/docs/next/api/registered-model-a88":{"component":"17896441","content":"f0df3a58"},"/docs/next/api/serve-2cb":{"component":"17896441","content":"3af95f13"},"/docs/next/community/Bylaws-232":{"component":"17896441","content":"2d4ab289"},"/docs/next/community/contributing-ac1":{"component":"17896441","content":"61cc1a3d"},"/docs/next/community/HowToBecomeCommitter-a0e":{"component":"17896441","content":"c86e1739"},"/docs/next/community/HowToCommit-bea":{"component":"17896441","content":"a5ca038b"},"/docs/next/community/HowToVoteCommitterOrPMC-524":{"component":"17896441","content":"a57e1c0a"},"/docs/next/community/README-ede":{"component":"17896441","content":"bf894ff2"},"/docs/next/designDocs/architecture-and-requirements-cf2":{"component":"17896441","content":"e3af4e10"},"/docs/next/designDocs/environments-implementation-3ef":{"component":"17896441","content":"a7e506f8"},"/docs/next/designDocs/experiment-implementation-02a":{"component":"17896441","content":"cbf00e67"},"/docs/next/designDocs/implementation-notes-077":{"component":"17896441","content":"63f0eece"},"/docs/next/designDocs/notebook-implementation-fec":{"component":"17896441","content":"7fd88130"},"/docs/next/designDocs/storage-implementation-bc7":{"component":"17896441","content":"a5eec98c"},"/docs/next/designDocs/submarine-server/architecture-bc3":{"component":"17896441","content":"ada24b13"},"/docs/next/designDocs/submarine-server/experimentSpec-251":{"component":"17896441","content":"40951386"},"/docs/next/designDocs/wip-designs/security-implementation-4d5":{"component":"17896441","content":"6df4a83b"},"/docs/next/designDocs/wip-designs/submarine-clusterServer-d0c":{"component":"17896441","content":"b60f7df5"},"/docs/next/designDocs/wip-designs/submarine-launcher-75e":{"component":"17896441","content":"817286e8"},"/docs/next/devDocs/BuildFromCode-52d":{"component":"17896441","content":"97b312ed"},"/docs/next/devDocs/Dependencies-5eb":{"component":"17896441","content":"72f8d982"},"/docs/next/devDocs/Development-75d":{"component":"17896441","content":"897bc7ae"},"/docs/next/devDocs/HowToRelease-ab2":{"component":"17896441","content":"e2e9fab8"},"/docs/next/devDocs/HowToVerify-b21":{"component":"17896441","content":"6e852da3"},"/docs/next/devDocs/IntegrationTestE2E-6ca":{"component":"17896441","content":"b9b5b6b9"},"/docs/next/devDocs/IntegrationTestK8s-7d7":{"component":"17896441","content":"b3da5595"},"/docs/next/devDocs/README-ed9":{"component":"17896441","content":"ee8d19c0"},"/docs/next/download-bed":{"component":"17896441","content":"f9e23376"},"/docs/next/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs-a4e":{"component":"17896441","content":"6d147207"},"/docs/next/ecosystem/kaldi/WriteDockerfileKaldi-8d4":{"component":"17896441","content":"8dc7f8a8"},"/docs/next/gettingStarted/helm-feb":{"component":"17896441","content":"11fdf8a8"},"/docs/next/gettingStarted/kind-13f":{"component":"17896441","content":"4f73ab67"},"/docs/next/gettingStarted/notebook-24d":{"component":"17896441","content":"ed46a2dd"},"/docs/next/gettingStarted/python-sdk-003":{"component":"17896441","content":"0c952090"},"/docs/next/gettingStarted/quickstart-43a":{"component":"17896441","content":"5f825119"},"/docs/next/userDocs/api/environment-d31":{"component":"17896441","content":"22e91045"},"/docs/next/userDocs/api/experiment-f1f":{"component":"17896441","content":"11695589"},"/docs/next/userDocs/api/experiment-template-826":{"component":"17896441","content":"a4535337"},"/docs/next/userDocs/api/notebook-d81":{"component":"17896441","content":"be249313"},"/docs/next/userDocs/others/mlflow-9fe":{"component":"17896441","content":"82a4a2ce"},"/docs/next/userDocs/others/tensorboard-611":{"component":"17896441","content":"1dbe41c3"},"/docs/next/userDocs/submarine-sdk/experiment-client-5ba":{"component":"17896441","content":"0581431b"},"/docs/next/userDocs/submarine-sdk/pysubmarine/development-33c":{"component":"17896441","content":"cfa5b027"},"/docs/next/userDocs/submarine-sdk/README-d46":{"component":"17896441","content":"54b0b691"},"/docs/next/userDocs/submarine-sdk/submarine-cli-e63":{"component":"17896441","content":"59e7e97e"},"/docs/next/userDocs/submarine-sdk/tracking-0ea":{"component":"17896441","content":"a49341a2"},"/docs/next/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README-0ff":{"component":"17896441","content":"76a60836"},"/docs/next/userDocs/yarn/Dockerfiles-877":{"component":"17896441","content":"57a4862f"},"/docs/next/userDocs/yarn/TestAndTroubleshooting-3c1":{"component":"17896441","content":"53cf78e1"},"/docs/next/userDocs/yarn/WriteDockerfileMX-405":{"component":"17896441","content":"6c58af36"},"/docs/next/userDocs/yarn/WriteDockerfilePT-5a5":{"component":"17896441","content":"7984174b"},"/docs/next/userDocs/yarn/WriteDockerfileTF-a7c":{"component":"17896441","content":"f477976c"},"/docs/next/userDocs/yarn/YARNRuntimeGuide-6cd":{"component":"17896441","content":"fa111d7f"},"/docs-6ba":{"component":"1be78505","versionMetadata":"58f10d9f"},"/docs/-815":{"component":"17896441","content":"35de792d"},"/docs/adminDocs/yarn/README-bd9":{"component":"17896441","content":"eb4979b3"},"/docs/adminDocs/yarn/TestAndTroubleshooting-fa3":{"component":"17896441","content":"a2231a2b"},"/docs/adminDocs/yarn/workbench/HowToRun-f2f":{"component":"17896441","content":"5f165a74"},"/docs/adminDocs/yarn/workbench/notebook/setup-jupyter-240":{"component":"17896441","content":"c28aed56"},"/docs/adminDocs/yarn/workbench/README-a05":{"component":"17896441","content":"ab5e246a"},"/docs/adminDocs/yarn/workbench/README.zh-CN-1c2":{"component":"17896441","content":"6088480f"},"/docs/api/environment-834":{"component":"17896441","content":"55d1900a"},"/docs/api/experiment-a93":{"component":"17896441","content":"f1c2161d"},"/docs/api/experiment-template-14e":{"component":"17896441","content":"f6956115"},"/docs/api/notebook-0bb":{"component":"17896441","content":"43326f7a"},"/docs/community/contributing-585":{"component":"17896441","content":"a658e4e7"},"/docs/community/HowToCommit-096":{"component":"17896441","content":"abb6be53"},"/docs/community/README-06d":{"component":"17896441","content":"cf824c09"},"/docs/designDocs/architecture-and-requirements-75a":{"component":"17896441","content":"ae045997"},"/docs/designDocs/environments-implementation-bef":{"component":"17896441","content":"876793d7"},"/docs/designDocs/experiment-implementation-492":{"component":"17896441","content":"6aa1aeb0"},"/docs/designDocs/implementation-notes-c55":{"component":"17896441","content":"9e593273"},"/docs/designDocs/notebook-implementation-a2a":{"component":"17896441","content":"31b2a22b"},"/docs/designDocs/storage-implementation-c89":{"component":"17896441","content":"538541c1"},"/docs/designDocs/submarine-server/architecture-14a":{"component":"17896441","content":"710c49d3"},"/docs/designDocs/submarine-server/experimentSpec-cd9":{"component":"17896441","content":"ef17f2ad"},"/docs/designDocs/wip-designs/security-implementation-71f":{"component":"17896441","content":"5065a48c"},"/docs/designDocs/wip-designs/submarine-clusterServer-345":{"component":"17896441","content":"7f965783"},"/docs/designDocs/wip-designs/submarine-launcher-25f":{"component":"17896441","content":"f8f6d32b"},"/docs/devDocs/BuildFromCode-ade":{"component":"17896441","content":"d46271b0"},"/docs/devDocs/Dependencies-c95":{"component":"17896441","content":"3593fe0f"},"/docs/devDocs/Development-131":{"component":"17896441","content":"cce3422b"},"/docs/devDocs/IntegrationTestE2E-f8c":{"component":"17896441","content":"31912795"},"/docs/devDocs/IntegrationTestK8s-a9a":{"component":"17896441","content":"446ff6dc"},"/docs/devDocs/README-899":{"component":"17896441","content":"fa8b9269"},"/docs/download-3b7":{"component":"17896441","content":"c5a80c58"},"/docs/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs-651":{"component":"17896441","content":"a86c7af5"},"/docs/ecosystem/kaldi/WriteDockerfileKaldi-a1c":{"component":"17896441","content":"85b50ba6"},"/docs/gettingStarted/helm-e96":{"component":"17896441","content":"0bc74cd0"},"/docs/gettingStarted/kind-6b5":{"component":"17896441","content":"66ca1d53"},"/docs/gettingStarted/notebook-a7b":{"component":"17896441","content":"f2cef85d"},"/docs/gettingStarted/python-sdk-cff":{"component":"17896441","content":"6a132804"},"/docs/gettingStarted/quickstart-703":{"component":"17896441","content":"a9744973"},"/docs/userDocs/api/environment-641":{"component":"17896441","content":"5e036026"},"/docs/userDocs/api/experiment-6d3":{"component":"17896441","content":"73bafbdc"},"/docs/userDocs/api/experiment-template-431":{"component":"17896441","content":"0e4b5d7a"},"/docs/userDocs/api/notebook-620":{"component":"17896441","content":"cd51f9ed"},"/docs/userDocs/others/mlflow-ced":{"component":"17896441","content":"10dc6c9a"},"/docs/userDocs/others/tensorboard-17e":{"component":"17896441","content":"76720dd8"},"/docs/userDocs/submarine-sdk/experiment-client-647":{"component":"17896441","content":"fc109cd1"},"/docs/userDocs/submarine-sdk/model-client-5e2":{"component":"17896441","content":"a8c4e132"},"/docs/userDocs/submarine-sdk/pysubmarine/development-35e":{"component":"17896441","content":"fe5a2634"},"/docs/userDocs/submarine-sdk/README-0e5":{"component":"17896441","content":"e235d551"},"/docs/userDocs/submarine-sdk/tracking-077":{"component":"17896441","content":"2bab9bf0"},"/docs/userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin-668":{"component":"17896441","content":"5de1a2b0"},"/docs/userDocs/submarine-security/spark-security/README-e82":{"component":"17896441","content":"d2a03af7"},"/docs/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README-7a1":{"component":"17896441","content":"ab130550"},"/docs/userDocs/yarn/Dockerfiles-7a6":{"component":"17896441","content":"0b49bfb5"},"/docs/userDocs/yarn/TestAndTroubleshooting-e16":{"component":"17896441","content":"380d7376"},"/docs/userDocs/yarn/WriteDockerfileMX-f52":{"component":"17896441","content":"cbc53c13"},"/docs/userDocs/yarn/WriteDockerfilePT-054":{"component":"17896441","content":"51b2b2c4"},"/docs/userDocs/yarn/WriteDockerfileTF-571":{"component":"17896441","content":"781c7eda"},"/docs/userDocs/yarn/YARNRuntimeGuide-f3a":{"component":"17896441","content":"27f12fe0"}}')},function(e,t,n){"use strict";var r=n(0),o=n.n(r);t.a=o.a.createContext(null)},function(e,t,n){var r,o;void 0===(o="function"==typeof(r=function(){var e,t,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'<div class="bar" role="bar"><div class="peg"></div></div><div class="spinner" role="spinner"><div class="spinner-icon"></div></div>'};function o(e,t,n){return e<t?t:e>n?n:e}function i(e){return 100*(-1+e)}function a(e,t,n){var o;return(o="translate3d"===r.positionUsing?{transform:"translate3d("+i(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+i(e)+"%,0)"}:{"margin-left":i(e)+"%"}).transition="all "+t+"ms "+n,o}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=o(e,r.minimum,1),n.status=1===e?null:e;var i=n.render(!t),c=i.querySelector(r.barSelector),u=r.speed,d=r.easing;return i.offsetWidth,s((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),l(c,a(e,u,d)),1===e?(l(i,{transition:"none",opacity:1}),i.offsetWidth,setTimeout((function(){l(i,{transition:"all "+u+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),u)}),u)):setTimeout(t,u)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*o(Math.random()*t,.1,.95)),t=o(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");u(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var o,a=t.querySelector(r.barSelector),s=e?"-100":i(n.status||0),c=document.querySelector(r.parent);return l(a,{transition:"all 0 linear",transform:"translate3d("+s+"%,0,0)"}),r.showSpinner||(o=t.querySelector(r.spinnerSelector))&&f(o),c!=document.body&&u(c,"nprogress-custom-parent"),c.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&f(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var s=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),l=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()}))}function r(t){var n=document.body.style;if(t in n)return t;for(var r,o=e.length,i=t.charAt(0).toUpperCase()+t.slice(1);o--;)if((r=e[o]+i)in n)return r;return t}function o(e){return e=n(e),t[e]||(t[e]=r(e))}function i(e,t,n){t=o(t),e.style[t]=n}return function(e,t){var n,r,o=arguments;if(2==o.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&i(e,n,r);else i(e,o[1],o[2])}}();function c(e,t){return("string"==typeof e?e:p(e)).indexOf(" "+t+" ")>=0}function u(e,t){var n=p(e),r=n+t;c(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=p(e);c(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function p(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function f(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n})?r.call(t,n,t,e):r)||(e.exports=o)},,,function(e,t,n){var r={"./":48};function o(e){var t=i(e);return n(t)}function i(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}o.keys=function(){return Object.keys(r)},o.resolve=i,e.exports=o,o.id=18},function(e,t,n){"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var s=n(0),l=n(1),c=[],u=[];function d(e){var t=e(),n={loading:!0,loaded:null,error:null};return n.promise=t.then((function(e){return n.loading=!1,n.loaded=e,e})).catch((function(e){throw n.loading=!1,n.error=e,e})),n}function p(e){var t={loading:!1,loaded:{},error:null},n=[];try{Object.keys(e).forEach((function(r){var o=d(e[r]);o.loading?t.loading=!0:(t.loaded[r]=o.loaded,t.error=o.error),n.push(o.promise),o.promise.then((function(e){t.loaded[r]=e})).catch((function(e){t.error=e}))}))}catch(r){t.error=r}return t.promise=Promise.all(n).then((function(e){return t.loading=!1,e})).catch((function(e){throw t.loading=!1,e})),t}function f(e,t){return s.createElement((n=e)&&n.__esModule?n.default:n,t);var n}function m(e,t){var d,p;if(!t.loading)throw new Error("react-loadable requires a `loading` component");var m=Object.assign({loader:null,loading:null,delay:200,timeout:null,render:f,webpack:null,modules:null},t),h=null;function g(){return h||(h=e(m.loader)),h.promise}return c.push(g),"function"==typeof m.webpack&&u.push((function(){if(e=m.webpack,"object"===r(n.m)&&e().every((function(e){return void 0!==e&&void 0!==n.m[e]})))return g();var e})),p=d=function(t){function n(r){o(this,n);var a=i(this,t.call(this,r));return a.retry=function(){a.setState({error:null,loading:!0,timedOut:!1}),h=e(m.loader),a._loadModule()},g(),a.state={error:h.error,pastDelay:!1,timedOut:!1,loading:h.loading,loaded:h.loaded},a}return a(n,t),n.preload=function(){return g()},n.prototype.componentWillMount=function(){this._mounted=!0,this._loadModule()},n.prototype._loadModule=function(){var e=this;if(this.context.loadable&&Array.isArray(m.modules)&&m.modules.forEach((function(t){e.context.loadable.report(t)})),h.loading){"number"==typeof m.delay&&(0===m.delay?this.setState({pastDelay:!0}):this._delay=setTimeout((function(){e.setState({pastDelay:!0})}),m.delay)),"number"==typeof m.timeout&&(this._timeout=setTimeout((function(){e.setState({timedOut:!0})}),m.timeout));var t=function(){e._mounted&&(e.setState({error:h.error,loaded:h.loaded,loading:h.loading}),e._clearTimeouts())};h.promise.then((function(){t()})).catch((function(e){t()}))}},n.prototype.componentWillUnmount=function(){this._mounted=!1,this._clearTimeouts()},n.prototype._clearTimeouts=function(){clearTimeout(this._delay),clearTimeout(this._timeout)},n.prototype.render=function(){return this.state.loading||this.state.error?s.createElement(m.loading,{isLoading:this.state.loading,pastDelay:this.state.pastDelay,timedOut:this.state.timedOut,error:this.state.error,retry:this.retry}):this.state.loaded?m.render(this.state.loaded,this.props):null},n}(s.Component),d.contextTypes={loadable:l.shape({report:l.func.isRequired})},p}function h(e){return m(d,e)}h.Map=function(e){if("function"!=typeof e.render)throw new Error("LoadableMap requires a `render(loaded, props)` function");return m(p,e)};var g=function(e){function t(){return o(this,t),i(this,e.apply(this,arguments))}return a(t,e),t.prototype.getChildContext=function(){return{loadable:{report:this.props.report}}},t.prototype.render=function(){return s.Children.only(this.props.children)},t}(s.Component);function b(e){for(var t=[];e.length;){var n=e.pop();t.push(n())}return Promise.all(t).then((function(){if(e.length)return b(e)}))}g.propTypes={report:l.func.isRequired},g.childContextTypes={loadable:l.shape({report:l.func.isRequired}).isRequired},h.Capture=g,h.preloadAll=function(){return new Promise((function(e,t){b(c).then(e,t)}))},h.preloadReady=function(){return new Promise((function(e,t){b(u).then(e,e)}))},e.exports=h},function(e,t,n){"use strict";(function(e){var r=n(0),o=n.n(r),i=n(4),a=n(1),s=n.n(a),l=1073741823,c="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==e?e:{};function u(e){var t=[];return{on:function(e){t.push(e)},off:function(e){t=t.filter((function(t){return t!==e}))},get:function(){return e},set:function(n,r){e=n,t.forEach((function(t){return t(e,r)}))}}}var d=o.a.createContext||function(e,t){var n,o,a,d="__create-react-context-"+((c[a="__global_unique_id__"]=(c[a]||0)+1)+"__"),p=function(e){function n(){var t;return(t=e.apply(this,arguments)||this).emitter=u(t.props.value),t}Object(i.a)(n,e);var r=n.prototype;return r.getChildContext=function(){var e;return(e={})[d]=this.emitter,e},r.componentWillReceiveProps=function(e){if(this.props.value!==e.value){var n,r=this.props.value,o=e.value;((i=r)===(a=o)?0!==i||1/i==1/a:i!=i&&a!=a)?n=0:(n="function"==typeof t?t(r,o):l,0!==(n|=0)&&this.emitter.set(e.value,n))}var i,a},r.render=function(){return this.props.children},n}(r.Component);p.childContextTypes=((n={})[d]=s.a.object.isRequired,n);var f=function(t){function n(){var e;return(e=t.apply(this,arguments)||this).state={value:e.getValue()},e.onUpdate=function(t,n){0!=((0|e.observedBits)&n)&&e.setState({value:e.getValue()})},e}Object(i.a)(n,t);var r=n.prototype;return r.componentWillReceiveProps=function(e){var t=e.observedBits;this.observedBits=null==t?l:t},r.componentDidMount=function(){this.context[d]&&this.context[d].on(this.onUpdate);var e=this.props.observedBits;this.observedBits=null==e?l:e},r.componentWillUnmount=function(){this.context[d]&&this.context[d].off(this.onUpdate)},r.getValue=function(){return this.context[d]?this.context[d].get():e},r.render=function(){return(e=this.props.children,Array.isArray(e)?e[0]:e)(this.state.value);var e},n}(r.Component);return f.contextTypes=((o={})[d]=s.a.object,o),{Provider:p,Consumer:f}};t.a=d}).call(this,n(24))},function(e,t,n){var r=n(45);e.exports=f,e.exports.parse=i,e.exports.compile=function(e,t){return s(i(e,t),t)},e.exports.tokensToFunction=s,e.exports.tokensToRegExp=p;var o=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function i(e,t){for(var n,r=[],i=0,a=0,s="",u=t&&t.delimiter||"/";null!=(n=o.exec(e));){var d=n[0],p=n[1],f=n.index;if(s+=e.slice(a,f),a=f+d.length,p)s+=p[1];else{var m=e[a],h=n[2],g=n[3],b=n[4],v=n[5],y=n[6],w=n[7];s&&(r.push(s),s="");var k=null!=h&&null!=m&&m!==h,x="+"===y||"*"===y,E="?"===y||"*"===y,T=n[2]||u,S=b||v;r.push({name:g||i++,prefix:h||"",delimiter:T,optional:E,repeat:x,partial:k,asterisk:!!w,pattern:S?c(S):w?".*":"[^"+l(T)+"]+?"})}}return a<e.length&&(s+=e.substr(a)),s&&r.push(s),r}function a(e){return encodeURI(e).replace(/[\/?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}))}function s(e,t){for(var n=new Array(e.length),o=0;o<e.length;o++)"object"==typeof e[o]&&(n[o]=new RegExp("^(?:"+e[o].pattern+")$",d(t)));return function(t,o){for(var i="",s=t||{},l=(o||{}).pretty?a:encodeURIComponent,c=0;c<e.length;c++){var u=e[c];if("string"!=typeof u){var d,p=s[u.name];if(null==p){if(u.optional){u.partial&&(i+=u.prefix);continue}throw new TypeError('Expected "'+u.name+'" to be defined')}if(r(p)){if(!u.repeat)throw new TypeError('Expected "'+u.name+'" to not repeat, but received `'+JSON.stringify(p)+"`");if(0===p.length){if(u.optional)continue;throw new TypeError('Expected "'+u.name+'" to not be empty')}for(var f=0;f<p.length;f++){if(d=l(p[f]),!n[c].test(d))throw new TypeError('Expected all "'+u.name+'" to match "'+u.pattern+'", but received `'+JSON.stringify(d)+"`");i+=(0===f?u.prefix:u.delimiter)+d}}else{if(d=u.asterisk?encodeURI(p).replace(/[?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})):l(p),!n[c].test(d))throw new TypeError('Expected "'+u.name+'" to match "'+u.pattern+'", but received "'+d+'"');i+=u.prefix+d}}else i+=u}return i}}function l(e){return e.replace(/([.+*?=^!:${}()[\]|\/\\])/g,"\\$1")}function c(e){return e.replace(/([=!:$\/()])/g,"\\$1")}function u(e,t){return e.keys=t,e}function d(e){return e&&e.sensitive?"":"i"}function p(e,t,n){r(t)||(n=t||n,t=[]);for(var o=(n=n||{}).strict,i=!1!==n.end,a="",s=0;s<e.length;s++){var c=e[s];if("string"==typeof c)a+=l(c);else{var p=l(c.prefix),f="(?:"+c.pattern+")";t.push(c),c.repeat&&(f+="(?:"+p+f+")*"),a+=f=c.optional?c.partial?p+"("+f+")?":"(?:"+p+"("+f+"))?":p+"("+f+")"}}var m=l(n.delimiter||"/"),h=a.slice(-m.length)===m;return o||(a=(h?a.slice(0,-m.length):a)+"(?:"+m+"(?=$))?"),a+=i?"$":o&&h?"":"(?="+m+"|$)",u(new RegExp("^"+a,d(n)),t)}function f(e,t,n){return r(t)||(n=t||n,t=[]),n=n||{},e instanceof RegExp?function(e,t){var n=e.source.match(/\((?!\?)/g);if(n)for(var r=0;r<n.length;r++)t.push({name:r,prefix:null,delimiter:null,optional:!1,repeat:!1,partial:!1,asterisk:!1,pattern:null});return u(e,t)}(e,t):r(e)?function(e,t,n){for(var r=[],o=0;o<e.length;o++)r.push(f(e[o],t,n).source);return u(new RegExp("(?:"+r.join("|")+")",d(n)),t)}(e,t,n):function(e,t,n){return p(i(e,n),t,n)}(e,t,n)}},function(e,t,n){"use strict";n.r(t);var r=n(0),o=n(14);t.default=function(){var e=Object(r.useContext)(o.a);if(null===e)throw new Error("Docusaurus context not provided");return e}},function(e,t,n){"use strict";var r,o,i,a=(r=0,o={util:{encode:function(e){return e instanceof i?new i(e.type,o.util.encode(e.content),e.alias):"Array"===o.util.type(e)?e.map(o.util.encode):e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/\u00a0/g," ")},type:function(e){return Object.prototype.toString.call(e).match(/\[object (\w+)\]/)[1]},objId:function(e){return e.__id||Object.defineProperty(e,"__id",{value:++r}),e.__id},clone:function(e,t){var n=o.util.type(e);switch(t=t||{},n){case"Object":if(t[o.util.objId(e)])return t[o.util.objId(e)];var r={};for(var i in t[o.util.objId(e)]=r,e)e.hasOwnProperty(i)&&(r[i]=o.util.clone(e[i],t));return r;case"Array":return t[o.util.objId(e)]?t[o.util.objId(e)]:(r=[],t[o.util.objId(e)]=r,e.forEach((function(e,n){r[n]=o.util.clone(e,t)})),r)}return e}},languages:{extend:function(e,t){var n=o.util.clone(o.languages[e]);for(var r in t)n[r]=t[r];return n},insertBefore:function(e,t,n,r){var i=(r=r||o.languages)[e];if(2==arguments.length){for(var a in n=arguments[1])n.hasOwnProperty(a)&&(i[a]=n[a]);return i}var s={};for(var l in i)if(i.hasOwnProperty(l)){if(l==t)for(var a in n)n.hasOwnProperty(a)&&(s[a]=n[a]);s[l]=i[l]}return o.languages.DFS(o.languages,(function(t,n){n===r[e]&&t!=e&&(this[t]=s)})),r[e]=s},DFS:function(e,t,n,r){for(var i in r=r||{},e)e.hasOwnProperty(i)&&(t.call(e,i,e[i],n||i),"Object"!==o.util.type(e[i])||r[o.util.objId(e[i])]?"Array"!==o.util.type(e[i])||r[o.util.objId(e[i])]||(r[o.util.objId(e[i])]=!0,o.languages.DFS(e[i],t,i,r)):(r[o.util.objId(e[i])]=!0,o.languages.DFS(e[i],t,null,r)))}},plugins:{},highlight:function(e,t,n){var r={code:e,grammar:t,language:n};return r.tokens=o.tokenize(r.code,r.grammar),i.stringify(o.util.encode(r.tokens),r.language)},matchGrammar:function(e,t,n,r,i,a,s){var l=o.Token;for(var c in n)if(n.hasOwnProperty(c)&&n[c]){if(c==s)return;var u=n[c];u="Array"===o.util.type(u)?u:[u];for(var d=0;d<u.length;++d){var p=u[d],f=p.inside,m=!!p.lookbehind,h=!!p.greedy,g=0,b=p.alias;if(h&&!p.pattern.global){var v=p.pattern.toString().match(/[imuy]*$/)[0];p.pattern=RegExp(p.pattern.source,v+"g")}p=p.pattern||p;for(var y=r,w=i;y<t.length;w+=t[y].length,++y){var k=t[y];if(t.length>e.length)return;if(!(k instanceof l)){if(h&&y!=t.length-1){if(p.lastIndex=w,!(C=p.exec(e)))break;for(var x=C.index+(m?C[1].length:0),E=C.index+C[0].length,T=y,S=w,D=t.length;T<D&&(S<E||!t[T].type&&!t[T-1].greedy);++T)x>=(S+=t[T].length)&&(++y,w=S);if(t[y]instanceof l)continue;A=T-y,k=e.slice(w,S),C.index-=w}else{p.lastIndex=0;var C=p.exec(k),A=1}if(C){m&&(g=C[1]?C[1].length:0),E=(x=C.index+g)+(C=C[0].slice(g)).length;var _=k.slice(0,x),R=k.slice(E),O=[y,A];_&&(++y,w+=_.length,O.push(_));var P=new l(c,f?o.tokenize(C,f):C,b,C,h);if(O.push(P),R&&O.push(R),Array.prototype.splice.apply(t,O),1!=A&&o.matchGrammar(e,t,n,y,w,!0,c),a)break}else if(a)break}}}}},hooks:{add:function(){}},tokenize:function(e,t,n){var r=[e],i=t.rest;if(i){for(var a in i)t[a]=i[a];delete t.rest}return o.matchGrammar(e,r,t,0,0,!1),r}},(i=o.Token=function(e,t,n,r,o){this.type=e,this.content=t,this.alias=n,this.length=0|(r||"").length,this.greedy=!!o}).stringify=function(e,t,n){if("string"==typeof e)return e;if("Array"===o.util.type(e))return e.map((function(n){return i.stringify(n,t,e)})).join("");var r={type:e.type,content:i.stringify(e.content,t,n),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:n};if(e.alias){var a="Array"===o.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(r.classes,a)}var s=Object.keys(r.attributes).map((function(e){return e+'="'+(r.attributes[e]||"").replace(/"/g,"&quot;")+'"'})).join(" ");return"<"+r.tag+' class="'+r.classes.join(" ")+'"'+(s?" "+s:"")+">"+r.content+"</"+r.tag+">"},o);a.languages.markup={comment:/<!--[\s\S]*?-->/,prolog:/<\?[\s\S]+?\?>/,doctype:/<!DOCTYPE[\s\S]+?>/i,cdata:/<!\[CDATA\[[\s\S]*?]]>/i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/i,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&amp;/,"&"))})),Object.defineProperty(a.languages.markup.tag,"addInlined",{value:function(e,t){var n={};n["language-"+t]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:a.languages[t]},n.cdata=/^<!\[CDATA\[|\]\]>$/i;var r={"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:n}};r["language-"+t]={pattern:/[\s\S]+/,inside:a.languages[t]};var o={};o[e]={pattern:RegExp(/(<__[\s\S]*?>)(?:<!\[CDATA\[[\s\S]*?\]\]>\s*|[\s\S])*?(?=<\/__>)/.source.replace(/__/g,e),"i"),lookbehind:!0,greedy:!0,inside:r},a.languages.insertBefore("markup","cdata",o)}}),a.languages.xml=a.languages.extend("markup",{}),a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--?|-=|\+\+?|\+=|!=?|~|\*\*?|\*=|\/=?|%=?|<<=?|>>=?|<=?|>=?|==?|&&?|&=|\^=?|\|\|?|\|=|\?|:/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|x[0-9a-fA-F]{1,2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)\w+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b\w+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+?)\s*(?:\r?\n|\r)(?:[\s\S])*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:n},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s*(?:\r?\n|\r)(?:[\s\S])*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0},{pattern:/(["'])(?:\\[\s\S]|\$\([^)]+\)|`[^`]+`|(?!\1)[^\\])*\1/,greedy:!0,inside:n}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:n.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|aptitude|apt-cache|apt-get|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:if|then|else|elif|fi|for|while|in|case|esac|function|select|do|done|until)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|break|cd|continue|eval|exec|exit|export|getopts|hash|pwd|readonly|return|shift|test|times|trap|umask|unset|alias|bind|builtin|caller|command|declare|echo|enable|help|let|local|logout|mapfile|printf|read|readarray|source|type|typeset|ulimit|unalias|set|shopt)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:true|false)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|==?|!=?|=~|<<[<-]?|[&\d]?>>|\d?[<>]&?|&[>&]?|\|[&|]?|<=?|>=?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}};for(var r=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],o=n.variable[1].inside,i=0;i<r.length;i++)o[r[i]]=e.languages.bash[r[i]];e.languages.shell=e.languages.bash}(a),a.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,boolean:/\b(?:true|false)\b/,function:/\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},a.languages.c=a.languages.extend("clike",{"class-name":{pattern:/(\b(?:enum|struct)\s+)\w+/,lookbehind:!0},keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while)\b/,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/,number:/(?:\b0x(?:[\da-f]+\.?[\da-f]*|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?)[ful]*/i}),a.languages.insertBefore("c","string",{macro:{pattern:/(^\s*)#\s*[a-z]+(?:[^\r\n\\]|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,alias:"property",inside:{string:{pattern:/(#\s*include\s*)(?:<.+?>|("|')(?:\\?.)+?\2)/,lookbehind:!0},directive:{pattern:/(#\s*)\b(?:define|defined|elif|else|endif|error|ifdef|ifndef|if|import|include|line|pragma|undef|using)\b/,lookbehind:!0,alias:"keyword"}}},constant:/\b(?:__FILE__|__LINE__|__DATE__|__TIME__|__TIMESTAMP__|__func__|EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|stdin|stdout|stderr)\b/}),delete a.languages.c.boolean,a.languages.cpp=a.languages.extend("c",{"class-name":{pattern:/(\b(?:class|enum|struct)\s+)\w+/,lookbehind:!0},keyword:/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|class|compl|const|constexpr|const_cast|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|float|for|friend|goto|if|inline|int|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|long|mutable|namespace|new|noexcept|nullptr|operator|private|protected|public|register|reinterpret_cast|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+\.?[\da-f']*|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+\.?[\d']*|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]*/i,greedy:!0},operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:true|false)\b/}),a.languages.insertBefore("cpp","string",{"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),function(e){var t=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+[\s\S]*?(?:;|(?=\s*\{))/,inside:{rule:/@[\w-]+/}},url:{pattern:RegExp("url\\((?:"+t.source+"|[^\n\r()]*)\\)","i"),inside:{function:/^url/i,punctuation:/^\(|\)$/}},selector:RegExp("[^{}\\s](?:[^{};\"']|"+t.source+")*?(?=\\s*\\{)"),string:{pattern:t,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var n=e.languages.markup;n&&(n.tag.addInlined("style","css"),e.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:n.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:e.languages.css}},alias:"language-css"}},n.tag))}(a),a.languages.css.selector={pattern:a.languages.css.selector,inside:{"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,"pseudo-class":/:[-\w]+/,class:/\.[-:.\w]+/,id:/#[-:.\w]+/,attribute:{pattern:/\[(?:[^[\]"']|("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1)*\]/,greedy:!0,inside:{punctuation:/^\[|\]$/,"case-sensitivity":{pattern:/(\s)[si]$/i,lookbehind:!0,alias:"keyword"},namespace:{pattern:/^(\s*)[-*\w\xA0-\uFFFF]*\|(?!=)/,lookbehind:!0,inside:{punctuation:/\|$/}},attribute:{pattern:/^(\s*)[-\w\xA0-\uFFFF]+/,lookbehind:!0},value:[/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,{pattern:/(=\s*)[-\w\xA0-\uFFFF]+(?=\s*$)/,lookbehind:!0}],operator:/[|~*^$]?=/}},"n-th":[{pattern:/(\(\s*)[+-]?\d*[\dn](?:\s*[+-]\s*\d+)?(?=\s*\))/,lookbehind:!0,inside:{number:/[\dn]+/,operator:/[+-]/}},{pattern:/(\(\s*)(?:even|odd)(?=\s*\))/i,lookbehind:!0}],punctuation:/[()]/}},a.languages.insertBefore("css","property",{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*/i,lookbehind:!0}}),a.languages.insertBefore("css","function",{operator:{pattern:/(\s)[+\-*\/](?=\s)/,lookbehind:!0},hexcode:/#[\da-f]{3,8}/i,entity:/\\[\da-f]{1,8}/i,unit:{pattern:/(\d)(?:%|[a-z]+)/,lookbehind:!0},number:/-?[\d.]+/}),a.languages.javascript=a.languages.extend("clike",{"class-name":[a.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])[_$A-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\.(?:prototype|constructor))/,lookbehind:!0}],keyword:[{pattern:/((?:^|})\s*)(?:catch|finally)\b/,lookbehind:!0},{pattern:/(^|[^.])\b(?:as|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],number:/\b(?:(?:0[xX](?:[\dA-Fa-f](?:_[\dA-Fa-f])?)+|0[bB](?:[01](?:_[01])?)+|0[oO](?:[0-7](?:_[0-7])?)+)n?|(?:\d(?:_\d)?)+n|NaN|Infinity)\b|(?:\b(?:\d(?:_\d)?)+\.?(?:\d(?:_\d)?)*|\B\.(?:\d(?:_\d)?)+)(?:[Ee][+-]?(?:\d(?:_\d)?)+)?/,function:/#?[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,operator:/-[-=]?|\+[+=]?|!=?=?|<<?=?|>>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),a.languages.javascript["class-name"][0].pattern=/(\b(?:class|interface|extends|implements|instanceof|new)\s+)[\w.\\]+/,a.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s])\s*)\/(\[(?:[^\]\\\r\n]|\\.)*]|\\.|[^/\\\[\r\n])+\/[gimyus]{0,6}(?=\s*($|[\r\n,.;})\]]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/#?[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+[_$A-Za-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)?\s*\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\))/,lookbehind:!0,inside:a.languages.javascript},{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=>)/i,inside:a.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\)\s*=>)/,lookbehind:!0,inside:a.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:[_$A-Za-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*\s*)\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\)\s*\{)/,lookbehind:!0,inside:a.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),a.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})+}|(?!\${)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})+}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\${|}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}}}),a.languages.markup&&a.languages.markup.tag.addInlined("script","javascript"),a.languages.js=a.languages.javascript,function(e){var t=e.util.clone(e.languages.javascript);e.languages.jsx=e.languages.extend("markup",t),e.languages.jsx.tag.pattern=/<\/?(?:[\w.:-]+\s*(?:\s+(?:[\w.:-]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s{'">=]+|\{(?:\{(?:\{[^}]*\}|[^{}])*\}|[^{}])+\}))?|\{\.{3}[a-z_$][\w$]*(?:\.[a-z_$][\w$]*)*\}))*\s*\/?)?>/i,e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/i,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">]+)/i,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.insertBefore("inside","attr-name",{spread:{pattern:/\{\.{3}[a-z_$][\w$]*(?:\.[a-z_$][\w$]*)*\}/,inside:{punctuation:/\.{3}|[{}.]/,"attr-value":/\w+/}}},e.languages.jsx.tag),e.languages.insertBefore("inside","attr-value",{script:{pattern:/=(\{(?:\{(?:\{[^}]*\}|[^}])*\}|[^}])+\})/i,inside:{"script-punctuation":{pattern:/^=(?={)/,alias:"punctuation"},rest:e.languages.jsx},alias:"language-javascript"}},e.languages.jsx.tag);var n=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(n).join(""):""},r=function(t){for(var o=[],i=0;i<t.length;i++){var a=t[i],s=!1;if("string"!=typeof a&&("tag"===a.type&&a.content[0]&&"tag"===a.content[0].type?"</"===a.content[0].content[0].content?o.length>0&&o[o.length-1].tagName===n(a.content[0].content[1])&&o.pop():"/>"===a.content[a.content.length-1].content||o.push({tagName:n(a.content[0].content[1]),openedBraces:0}):o.length>0&&"punctuation"===a.type&&"{"===a.content?o[o.length-1].openedBraces++:o.length>0&&o[o.length-1].openedBraces>0&&"punctuation"===a.type&&"}"===a.content?o[o.length-1].openedBraces--:s=!0),(s||"string"==typeof a)&&o.length>0&&0===o[o.length-1].openedBraces){var l=n(a);i<t.length-1&&("string"==typeof t[i+1]||"plain-text"===t[i+1].type)&&(l+=n(t[i+1]),t.splice(i+1,1)),i>0&&("string"==typeof t[i-1]||"plain-text"===t[i-1].type)&&(l=n(t[i-1])+l,t.splice(i-1,1),i--),t[i]=new e.Token("plain-text",l,null,l)}a.content&&"string"!=typeof a.content&&r(a.content)}};e.hooks.add("after-tokenize",(function(e){"jsx"!==e.language&&"tsx"!==e.language||r(e.tokens)}))}(a),function(e){var t=e.languages.javadoclike={parameter:{pattern:/(^\s*(?:\/{3}|\*|\/\*\*)\s*@(?:param|arg|arguments)\s+)\w+/m,lookbehind:!0},keyword:{pattern:/(^\s*(?:\/{3}|\*|\/\*\*)\s*|\{)@[a-z][a-zA-Z-]+\b/m,lookbehind:!0},punctuation:/[{}]/};Object.defineProperty(t,"addSupport",{value:function(t,n){"string"==typeof t&&(t=[t]),t.forEach((function(t){!function(t,n){var r="doc-comment",o=e.languages[t];if(o){var i=o[r];if(!i){var a={"doc-comment":{pattern:/(^|[^\\])\/\*\*[^/][\s\S]*?(?:\*\/|$)/,alias:"comment"}};i=(o=e.languages.insertBefore(t,"comment",a))[r]}if(i instanceof RegExp&&(i=o[r]={pattern:i}),Array.isArray(i))for(var s=0,l=i.length;s<l;s++)i[s]instanceof RegExp&&(i[s]={pattern:i[s]}),n(i[s]);else n(i)}}(t,(function(e){e.inside||(e.inside={}),e.inside.rest=n}))}))}}),t.addSupport(["java","javascript","php"],t)}(a),function(e){var t=/\b(?:abstract|continue|for|new|switch|assert|default|goto|package|synchronized|boolean|do|if|private|this|break|double|implements|protected|throw|byte|else|import|public|throws|case|enum|instanceof|return|transient|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|strictfp|volatile|const|float|native|super|while|var|null|exports|module|open|opens|provides|requires|to|transitive|uses|with)\b/,n=/\b[A-Z](?:\w*[a-z]\w*)?\b/;e.languages.java=e.languages.extend("clike",{"class-name":[n,/\b[A-Z]\w*(?=\s+\w+\s*[;,=())])/],keyword:t,function:[e.languages.clike.function,{pattern:/(\:\:)[a-z_]\w*/,lookbehind:!0}],number:/\b0b[01][01_]*L?\b|\b0x[\da-f_]*\.?[\da-f_p+-]+\b|(?:\b\d[\d_]*\.?[\d_]*|\B\.\d[\d_]*)(?:e[+-]?\d[\d_]*)?[dfl]?/i,operator:{pattern:/(^|[^.])(?:<<=?|>>>?=?|->|([-+&|])\2|[?:~]|[-+*/%&|^!=<>]=?)/m,lookbehind:!0}}),e.languages.insertBefore("java","class-name",{annotation:{alias:"punctuation",pattern:/(^|[^.])@\w+/,lookbehind:!0},namespace:{pattern:/(\b(?:exports|import(?:\s+static)?|module|open|opens|package|provides|requires|to|transitive|uses|with)\s+)[a-z]\w*(\.[a-z]\w*)+/,lookbehind:!0,inside:{punctuation:/\./}},generics:{pattern:/<(?:[\w\s,.&?]|<(?:[\w\s,.&?]|<(?:[\w\s,.&?]|<[\w\s,.&?]*>)*>)*>)*>/,inside:{"class-name":n,keyword:t,punctuation:/[<>(),.:]/,operator:/[?&|]/}}})}(a),function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,o,i){if(n.language===r){var a=n.tokenStack=[];n.code=n.code.replace(o,(function(e){if("function"==typeof i&&!i(e))return e;for(var o,s=a.length;-1!==n.code.indexOf(o=t(r,s));)++s;return a[s]=e,o})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var o=0,i=Object.keys(n.tokenStack);!function a(s){for(var l=0;l<s.length&&!(o>=i.length);l++){var c=s[l];if("string"==typeof c||c.content&&"string"==typeof c.content){var u=i[o],d=n.tokenStack[u],p="string"==typeof c?c:c.content,f=t(r,u),m=p.indexOf(f);if(m>-1){++o;var h=p.substring(0,m),g=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),b=p.substring(m+f.length),v=[];h&&v.push.apply(v,a([h])),v.push(g),b&&v.push.apply(v,a([b])),"string"==typeof c?s.splice.apply(s,[l,1].concat(v)):c.content=v}}else c.content&&a(c.content)}return s}(n.tokens)}}}})}(a),function(e){e.languages.php=e.languages.extend("clike",{keyword:/\b(?:__halt_compiler|abstract|and|array|as|break|callable|case|catch|class|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|eval|exit|extends|final|finally|for|foreach|function|global|goto|if|implements|include|include_once|instanceof|insteadof|interface|isset|list|namespace|new|or|parent|print|private|protected|public|require|require_once|return|static|switch|throw|trait|try|unset|use|var|while|xor|yield)\b/i,boolean:{pattern:/\b(?:false|true)\b/i,alias:"constant"},constant:[/\b[A-Z_][A-Z0-9_]*\b/,/\b(?:null)\b/i],comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0}}),e.languages.insertBefore("php","string",{"shell-comment":{pattern:/(^|[^\\])#.*/,lookbehind:!0,alias:"comment"}}),e.languages.insertBefore("php","comment",{delimiter:{pattern:/\?>$|^<\?(?:php(?=\s)|=)?/i,alias:"important"}}),e.languages.insertBefore("php","keyword",{variable:/\$+(?:\w+\b|(?={))/i,package:{pattern:/(\\|namespace\s+|use\s+)[\w\\]+/,lookbehind:!0,inside:{punctuation:/\\/}}}),e.languages.insertBefore("php","operator",{property:{pattern:/(->)[\w]+/,lookbehind:!0}});var t={pattern:/{\$(?:{(?:{[^{}]+}|[^{}]+)}|[^{}])+}|(^|[^\\{])\$+(?:\w+(?:\[.+?]|->\w+)*)/,lookbehind:!0,inside:{rest:e.languages.php}};e.languages.insertBefore("php","string",{"nowdoc-string":{pattern:/<<<'([^']+)'(?:\r\n?|\n)(?:.*(?:\r\n?|\n))*?\1;/,greedy:!0,alias:"string",inside:{delimiter:{pattern:/^<<<'[^']+'|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<'?|[';]$/}}}},"heredoc-string":{pattern:/<<<(?:"([^"]+)"(?:\r\n?|\n)(?:.*(?:\r\n?|\n))*?\1;|([a-z_]\w*)(?:\r\n?|\n)(?:.*(?:\r\n?|\n))*?\2;)/i,greedy:!0,alias:"string",inside:{delimiter:{pattern:/^<<<(?:"[^"]+"|[a-z_]\w*)|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<"?|[";]$/}},interpolation:t}},"single-quoted-string":{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0,alias:"string"},"double-quoted-string":{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,alias:"string",inside:{interpolation:t}}}),delete e.languages.php.string,e.hooks.add("before-tokenize",(function(t){if(/<\?/.test(t.code)){e.languages["markup-templating"].buildPlaceholders(t,"php",/<\?(?:[^"'/#]|\/(?![*/])|("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|(?:\/\/|#)(?:[^?\n\r]|\?(?!>))*|\/\*[\s\S]*?(?:\*\/|$))*?(?:\?>|$)/gi)}})),e.hooks.add("after-tokenize",(function(t){e.languages["markup-templating"].tokenizePlaceholders(t,"php")}))}(a),function(e){var t=e.languages.javascript,n=/{(?:[^{}]|{(?:[^{}]|{[^{}]*})*})+}/.source,r="(@(?:param|arg|argument|property)\\s+(?:"+n+"\\s+)?)";e.languages.jsdoc=e.languages.extend("javadoclike",{parameter:{pattern:RegExp(r+/[$\w\xA0-\uFFFF.]+(?=\s|$)/.source),lookbehind:!0,inside:{punctuation:/\./}}}),e.languages.insertBefore("jsdoc","keyword",{"optional-parameter":{pattern:RegExp(r+/\[[$\w\xA0-\uFFFF.]+(?:=[^[\]]+)?\](?=\s|$)/.source),lookbehind:!0,inside:{parameter:{pattern:/(^\[)[$\w\xA0-\uFFFF\.]+/,lookbehind:!0,inside:{punctuation:/\./}},code:{pattern:/(=)[\s\S]*(?=\]$)/,lookbehind:!0,inside:t,alias:"language-javascript"},punctuation:/[=[\]]/}},"class-name":[{pattern:RegExp("(@[a-z]+\\s+)"+n),lookbehind:!0,inside:{punctuation:/[.,:?=<>|{}()[\]]/}},{pattern:/(@(?:augments|extends|class|interface|memberof!?|this)\s+)[A-Z]\w*(?:\.[A-Z]\w*)*/,lookbehind:!0,inside:{punctuation:/\./}}],example:{pattern:/(@example\s+)[^@]+?(?=\s*(?:\*\s*)?(?:@\w|\*\/))/,lookbehind:!0,inside:{code:{pattern:/^(\s*(?:\*\s*)?).+$/m,lookbehind:!0,inside:t,alias:"language-javascript"}}}}),e.languages.javadoclike.addSupport("javascript",e.languages.jsdoc)}(a),a.languages.actionscript=a.languages.extend("javascript",{keyword:/\b(?:as|break|case|catch|class|const|default|delete|do|else|extends|finally|for|function|if|implements|import|in|instanceof|interface|internal|is|native|new|null|package|private|protected|public|return|super|switch|this|throw|try|typeof|use|var|void|while|with|dynamic|each|final|get|include|namespace|native|override|set|static)\b/,operator:/\+\+|--|(?:[+\-*\/%^]|&&?|\|\|?|<<?|>>?>?|[!=]=?)=?|[~?@]/}),a.languages.actionscript["class-name"].alias="function",a.languages.markup&&a.languages.insertBefore("actionscript","string",{xml:{pattern:/(^|[^.])<\/?\w+(?:\s+[^\s>\/=]+=("|')(?:\\[\s\S]|(?!\2)[^\\])*\2)*\s*\/?>/,lookbehind:!0,inside:{rest:a.languages.markup}}}),function(e){var t=/#(?!\{).+/,n={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:t,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:n}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:t,interpolation:n}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},rest:e.languages.javascript}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:n}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript["template-string"],e.languages.coffee=e.languages.coffeescript}(a),function(e){e.languages.insertBefore("javascript","function-variable",{"method-variable":{pattern:RegExp("(\\.\\s*)"+e.languages.javascript["function-variable"].pattern.source),lookbehind:!0,alias:["function-variable","method","function","property-access"]}}),e.languages.insertBefore("javascript","function",{method:{pattern:RegExp("(\\.\\s*)"+e.languages.javascript.function.source),lookbehind:!0,alias:["function","property-access"]}}),e.languages.insertBefore("javascript","constant",{"known-class-name":[{pattern:/\b(?:(?:(?:Uint|Int)(?:8|16|32)|Uint8Clamped|Float(?:32|64))?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|(?:Weak)?(?:Set|Map)|WebAssembly)\b/,alias:"class-name"},{pattern:/\b(?:[A-Z]\w*)Error\b/,alias:"class-name"}]}),e.languages.javascript.keyword.unshift({pattern:/\b(?:as|default|export|from|import)\b/,alias:"module"},{pattern:/\bnull\b/,alias:["null","nil"]},{pattern:/\bundefined\b/,alias:"nil"}),e.languages.insertBefore("javascript","operator",{spread:{pattern:/\.{3}/,alias:"operator"},arrow:{pattern:/=>/,alias:"operator"}}),e.languages.insertBefore("javascript","punctuation",{"property-access":{pattern:/(\.\s*)#?[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*/,lookbehind:!0},"maybe-class-name":{pattern:/(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,lookbehind:!0},dom:{pattern:/\b(?:document|location|navigator|performance|(?:local|session)Storage|window)\b/,alias:"variable"},console:{pattern:/\bconsole(?=\s*\.)/,alias:"class-name"}});for(var t=["function","function-variable","method","method-variable","property-access"],n=0;n<t.length;n++){var r=t[n],o=e.languages.javascript[r];"RegExp"===e.util.type(o)&&(o=e.languages.javascript[r]={pattern:o});var i=o.inside||{};o.inside=i,i["maybe-class-name"]=/^[A-Z][\s\S]*/}}(a),function(e){e.languages.flow=e.languages.extend("javascript",{}),e.languages.insertBefore("flow","keyword",{type:[{pattern:/\b(?:[Nn]umber|[Ss]tring|[Bb]oolean|Function|any|mixed|null|void)\b/,alias:"tag"}]}),e.languages.flow["function-variable"].pattern=/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)(?:\s*:\s*\w+)?|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,delete e.languages.flow.parameter,e.languages.insertBefore("flow","operator",{"flow-punctuation":{pattern:/\{\||\|\}/,alias:"punctuation"}}),Array.isArray(e.languages.flow.keyword)||(e.languages.flow.keyword=[e.languages.flow.keyword]),e.languages.flow.keyword.unshift({pattern:/(^|[^$]\b)(?:type|opaque|declare|Class)\b(?!\$)/,lookbehind:!0},{pattern:/(^|[^$]\B)\$(?:await|Diff|Exact|Keys|ObjMap|PropertyType|Shape|Record|Supertype|Subtype|Enum)\b(?!\$)/,lookbehind:!0})}(a),a.languages.n4js=a.languages.extend("javascript",{keyword:/\b(?:any|Array|boolean|break|case|catch|class|const|constructor|continue|debugger|declare|default|delete|do|else|enum|export|extends|false|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|module|new|null|number|package|private|protected|public|return|set|static|string|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\b/}),a.languages.insertBefore("n4js","constant",{annotation:{pattern:/@+\w+/,alias:"operator"}}),a.languages.n4jsd=a.languages.n4js,a.languages.typescript=a.languages.extend("javascript",{keyword:/\b(?:abstract|as|async|await|break|case|catch|class|const|constructor|continue|debugger|declare|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|is|keyof|let|module|namespace|new|null|of|package|private|protected|public|readonly|return|require|set|static|super|switch|this|throw|try|type|typeof|var|void|while|with|yield)\b/,builtin:/\b(?:string|Function|any|number|boolean|Array|symbol|console|Promise|unknown|never)\b/}),a.languages.ts=a.languages.typescript,function(e){var t=e.languages.javascript["template-string"],n=t.pattern.source,r=t.inside.interpolation,o=r.inside["interpolation-punctuation"],i=r.pattern.source;function a(t,r){if(e.languages[t])return{pattern:RegExp("((?:"+r+")\\s*)"+n),lookbehind:!0,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},"embedded-code":{pattern:/[\s\S]+/,alias:t}}}}function s(e,t){return"___"+t.toUpperCase()+"_"+e+"___"}function l(t,n,r){var o={code:t,grammar:n,language:r};return e.hooks.run("before-tokenize",o),o.tokens=e.tokenize(o.code,o.grammar),e.hooks.run("after-tokenize",o),o.tokens}function c(t){var n={};n["interpolation-punctuation"]=o;var i=e.tokenize(t,n);if(3===i.length){var a=[1,1];a.push.apply(a,l(i[1],e.languages.javascript,"javascript")),i.splice.apply(i,a)}return new e.Token("interpolation",i,r.alias,t)}function u(t,n,r){var o=e.tokenize(t,{interpolation:{pattern:RegExp(i),lookbehind:!0}}),a=0,u={},d=l(o.map((function(e){if("string"==typeof e)return e;for(var n,o=e.content;-1!==t.indexOf(n=s(a++,r)););return u[n]=o,n})).join(""),n,r),p=Object.keys(u);return a=0,function e(t){for(var n=0;n<t.length;n++){if(a>=p.length)return;var r=t[n];if("string"==typeof r||"string"==typeof r.content){var o=p[a],i="string"==typeof r?r:r.content,s=i.indexOf(o);if(-1!==s){++a;var l=i.substring(0,s),d=c(u[o]),f=i.substring(s+o.length),m=[];if(l&&m.push(l),m.push(d),f){var h=[f];e(h),m.push.apply(m,h)}"string"==typeof r?(t.splice.apply(t,[n,1].concat(m)),n+=m.length-1):r.content=m}}else{var g=r.content;Array.isArray(g)?e(g):e([g])}}}(d),new e.Token(r,d,"language-"+r,t)}e.languages.javascript["template-string"]=[a("css",/\b(?:styled(?:\([^)]*\))?(?:\s*\.\s*\w+(?:\([^)]*\))*)*|css(?:\s*\.\s*(?:global|resolve))?|createGlobalStyle|keyframes)/.source),a("html",/\bhtml|\.\s*(?:inner|outer)HTML\s*\+?=/.source),a("svg",/\bsvg/.source),a("markdown",/\b(?:md|markdown)/.source),a("graphql",/\b(?:gql|graphql(?:\s*\.\s*experimental)?)/.source),t].filter(Boolean);var d={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function p(e){return"string"==typeof e?e:Array.isArray(e)?e.map(p).join(""):p(e.content)}e.hooks.add("after-tokenize",(function(t){t.language in d&&function t(n){for(var r=0,o=n.length;r<o;r++){var i=n[r];if("string"!=typeof i){var a=i.content;if(Array.isArray(a))if("template-string"===i.type){var s=a[1];if(3===a.length&&"string"!=typeof s&&"embedded-code"===s.type){var l=p(s),c=s.alias,d=Array.isArray(c)?c[0]:c,f=e.languages[d];if(!f)continue;a[1]=u(l,f,d)}}else t(a);else"string"!=typeof a&&t([a])}}}(t.tokens)}))}(a),a.languages.graphql={comment:/#.*/,string:{pattern:/"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:true|false)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+)[a-zA-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:enum|fragment|implements|input|interface|mutation|on|query|scalar|schema|type|union)\b/,operator:/[!=|]|\.{3}/,punctuation:/[!(){}\[\]:=,]/,constant:/\b(?!ID\b)[A-Z][A-Z_\d]*\b/},function(e){var t=/(?:\\.|[^\\\n\r]|(?:\r?\n|\r)(?!\r?\n|\r))/.source;function n(e,n){return e=e.replace(/<inner>/g,t),n&&(e=e+"|"+e.replace(/_/g,"\\*")),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+e+")")}var r=/(?:\\.|``.+?``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,o=/\|?__(?:\|__)+\|?(?:(?:\r?\n|\r)|$)/.source.replace(/__/g,r),i=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\r?\n|\r)/.source;e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+o+i+"(?:"+o+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+o+i+")(?:"+o+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+o+")"+i+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+o+"$"),inside:{"table-header":{pattern:RegExp(r),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/(^[ \t]*(?:\r?\n|\r))(?: {4}|\t).+(?:(?:\r?\n|\r)(?: {4}|\t).+)*/m,lookbehind:!0,alias:"keyword"},{pattern:/``.+?``|`[^`\r\n]+`/,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\r?\n|\r))[\s\S]+?(?=(?:\r?\n|\r)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\r?\n|\r)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#+.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:n(/__(?:(?!_)<inner>|_(?:(?!_)<inner>)+_)+__/.source,!0),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(/_(?:(?!_)<inner>|__(?:(?!_)<inner>)+__)+_/.source,!0),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(/(~~?)(?:(?!~)<inner>)+?\2/.source,!1),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},url:{pattern:n(/!?\[(?:(?!\])<inner>)+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)| ?\[(?:(?!\])<inner>)+\])/.source,!1),lookbehind:!0,greedy:!0,inside:{variable:{pattern:/(\[)[^\]]+(?=\]$)/,lookbehind:!0},content:{pattern:/(^!?\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},string:{pattern:/"(?:\\.|[^"\\])*"(?=\)$)/}}}}),["url","bold","italic","strike"].forEach((function(t){["url","bold","italic","strike"].forEach((function(n){t!==n&&(e.languages.markdown[t].inside.content.inside[n]=e.languages.markdown[n])}))})),e.hooks.add("after-tokenize",(function(e){"markdown"!==e.language&&"md"!==e.language||function e(t){if(t&&"string"!=typeof t)for(var n=0,r=t.length;n<r;n++){var o=t[n];if("code"===o.type){var i=o.content[1],a=o.content[3];if(i&&a&&"code-language"===i.type&&"code-block"===a.type&&"string"==typeof i.content){var s="language-"+i.content.trim().split(/\s+/)[0].toLowerCase();a.alias?"string"==typeof a.alias?a.alias=[a.alias,s]:a.alias.push(s):a.alias=[s]}}else e(o.content)}}(e.tokens)})),e.hooks.add("wrap",(function(t){if("code-block"===t.type){for(var n="",r=0,o=t.classes.length;r<o;r++){var i=t.classes[r],a=/language-(.+)/.exec(i);if(a){n=a[1];break}}var s=e.languages[n];if(s){var l=t.content.replace(/&lt;/g,"<").replace(/&amp;/g,"&");t.content=e.highlight(l,s,n)}else if(n&&"none"!==n&&e.plugins.autoloader){var c="md-"+(new Date).valueOf()+"-"+Math.floor(1e16*Math.random());t.attributes.id=c,e.plugins.autoloader.loadLanguages(n,(function(){var t=document.getElementById(c);t&&(t.innerHTML=e.highlight(t.textContent,e.languages[n],n))}))}}})),e.languages.md=e.languages.markdown}(a),function(e){e.languages.diff={coord:[/^(?:\*{3}|-{3}|\+{3}).*$/m,/^@@.*@@$/m,/^\d+.*$/m]};var t={"deleted-sign":"-","deleted-arrow":"<","inserted-sign":"+","inserted-arrow":">",unchanged:" ",diff:"!"};Object.keys(t).forEach((function(n){var r=t[n],o=[];/^\w+$/.test(n)||o.push(/\w+/.exec(n)[0]),"diff"===n&&o.push("bold"),e.languages.diff[n]={pattern:RegExp("^(?:["+r+"].*(?:\r\n?|\n|(?![\\s\\S])))+","m"),alias:o}})),Object.defineProperty(e.languages.diff,"PREFIXES",{value:t})}(a),a.languages.git={comment:/^#.*/m,deleted:/^[-\u2013].*/m,inserted:/^\+.*/m,string:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/m,command:{pattern:/^.*\$ git .*$/m,inside:{parameter:/\s--?\w+/m}},coord:/^@@.*@@$/m,commit_sha1:/^commit \w{40}$/m},a.languages.go=a.languages.extend("clike",{keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,builtin:/\b(?:bool|byte|complex(?:64|128)|error|float(?:32|64)|rune|string|u?int(?:8|16|32|64)?|uintptr|append|cap|close|complex|copy|delete|imag|len|make|new|panic|print(?:ln)?|real|recover)\b/,boolean:/\b(?:_|iota|nil|true|false)\b/,operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,number:/(?:\b0x[a-f\d]+|(?:\b\d+\.?\d*|\B\.\d+)(?:e[-+]?\d+)?)i?/i,string:{pattern:/(["'`])(\\[\s\S]|(?!\1)[^\\])*\1/,greedy:!0}}),delete a.languages.go["class-name"],function(e){e.languages.handlebars={comment:/\{\{![\s\S]*?\}\}/,delimiter:{pattern:/^\{\{\{?|\}\}\}?$/i,alias:"punctuation"},string:/(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee][+-]?\d+)?/,boolean:/\b(?:true|false)\b/,block:{pattern:/^(\s*~?\s*)[#\/]\S+?(?=\s*~?\s*$|\s)/i,lookbehind:!0,alias:"keyword"},brackets:{pattern:/\[[^\]]+\]/,inside:{punctuation:/\[|\]/,variable:/[\s\S]+/}},punctuation:/[!"#%&'()*+,.\/;<=>@\[\\\]^`{|}~]/,variable:/[^!"#%&'()*+,.\/;<=>@\[\\\]^`{|}~\s]+/},e.hooks.add("before-tokenize",(function(t){e.languages["markup-templating"].buildPlaceholders(t,"handlebars",/\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\}/g)})),e.hooks.add("after-tokenize",(function(t){e.languages["markup-templating"].tokenizePlaceholders(t,"handlebars")}))}(a),a.languages.json={property:{pattern:/"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,greedy:!0},string:{pattern:/"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,greedy:!0},comment:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,number:/-?\d+\.?\d*(e[+-]?\d+)?/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:true|false)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},a.languages.less=a.languages.extend("css",{comment:[/\/\*[\s\S]*?\*\//,{pattern:/(^|[^\\])\/\/.*/,lookbehind:!0}],atrule:{pattern:/@[\w-]+?(?:\([^{}]+\)|[^(){};])*?(?=\s*\{)/i,inside:{punctuation:/[:()]/}},selector:{pattern:/(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\([^{}]*\)|[^{};@])*?(?=\s*\{)/,inside:{variable:/@+[\w-]+/}},property:/(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/i,operator:/[+\-*\/]/}),a.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-]+.*?(?=[(;])/,lookbehind:!0,alias:"function"}}),a.languages.makefile={comment:{pattern:/(^|[^\\])#(?:\\(?:\r\n|[\s\S])|[^\\\r\n])*/,lookbehind:!0},string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},builtin:/\.[A-Z][^:#=\s]+(?=\s*:(?!=))/,symbol:{pattern:/^[^:=\r\n]+(?=\s*:(?!=))/m,inside:{variable:/\$+(?:[^(){}:#=\s]+|(?=[({]))/}},variable:/\$+(?:[^(){}:#=\s]+|\([@*%<^+?][DF]\)|(?=[({]))/,keyword:[/-include\b|\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\b/,{pattern:/(\()(?:addsuffix|abspath|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:s|list)?)(?=[ \t])/,lookbehind:!0}],operator:/(?:::|[?:+!])?=|[|@]/,punctuation:/[:;(){}]/},a.languages.objectivec=a.languages.extend("c",{keyword:/\b(?:asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while|in|self|super)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,string:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|@"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,operator:/-[->]?|\+\+?|!=?|<<?=?|>>?=?|==?|&&?|\|\|?|[~^%?*\/@]/}),delete a.languages.objectivec["class-name"],a.languages.ocaml={comment:/\(\*[\s\S]*?\*\)/,string:[{pattern:/"(?:\\.|[^\\\r\n"])*"/,greedy:!0},{pattern:/(['`])(?:\\(?:\d+|x[\da-f]+|.)|(?!\1)[^\\\r\n])\1/i,greedy:!0}],number:/\b(?:0x[\da-f][\da-f_]+|(?:0[bo])?\d[\d_]*\.?[\d_]*(?:e[+-]?[\d_]+)?)/i,type:{pattern:/\B['`]\w*/,alias:"variable"},directive:{pattern:/\B#\w+/,alias:"function"},keyword:/\b(?:as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|object|of|open|prefix|private|rec|then|sig|struct|to|try|type|val|value|virtual|where|while|with)\b/,boolean:/\b(?:false|true)\b/,operator:/:=|[=<>@^|&+\-*\/$%!?~][!$%&*+\-.\/:<=>?@^|~]*|\b(?:and|asr|land|lor|lxor|lsl|lsr|mod|nor|or)\b/,punctuation:/[(){}\[\]|_.,:;]/},a.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0},"string-interpolation":{pattern:/(?:f|rf|fr)(?:("""|''')[\s\S]+?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:{{)*){(?!{)(?:[^{}]|{(?!{)(?:[^{}]|{(?!{)(?:[^{}])+})+})+}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|rb|br)?("""|''')[\s\S]+?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|rb|br)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^\s*)@\w+(?:\.\w+)*/i,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:and|as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:True|False|None)\b/,number:/(?:\b(?=\d)|\B(?=\.))(?:0[bo])?(?:(?:\d|0x[\da-f])[\da-f]*\.?\d*|\.\d+)(?:e[+-]?\d+)?j?\b/i,operator:/[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},a.languages.python["string-interpolation"].inside.interpolation.inside.rest=a.languages.python,a.languages.py=a.languages.python,a.languages.reason=a.languages.extend("clike",{comment:{pattern:/(^|[^\\])\/\*[\s\S]*?\*\//,lookbehind:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},"class-name":/\b[A-Z]\w*/,keyword:/\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\b/,operator:/\.{3}|:[:=]|\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*\/]\.?|\b(?:mod|land|lor|lxor|lsl|lsr|asr)\b/}),a.languages.insertBefore("reason","class-name",{character:{pattern:/'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,alias:"string"},constructor:{pattern:/\b[A-Z]\w*\b(?!\s*\.)/,alias:"variable"},label:{pattern:/\b[a-z]\w*(?=::)/,alias:"symbol"}}),delete a.languages.reason.function,function(e){e.languages.sass=e.languages.extend("css",{comment:{pattern:/^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t]+.+)*/m,lookbehind:!0}}),e.languages.insertBefore("sass","atrule",{"atrule-line":{pattern:/^(?:[ \t]*)[@+=].+/m,inside:{atrule:/(?:@[\w-]+|[+=])/m}}}),delete e.languages.sass.atrule;var t=/\$[-\w]+|#\{\$[-\w]+\}/,n=[/[+*\/%]|[=!]=|<=?|>=?|\b(?:and|or|not)\b/,{pattern:/(\s+)-(?=\s)/,lookbehind:!0}];e.languages.insertBefore("sass","property",{"variable-line":{pattern:/^[ \t]*\$.+/m,inside:{punctuation:/:/,variable:t,operator:n}},"property-line":{pattern:/^[ \t]*(?:[^:\s]+ *:.*|:[^:\s]+.*)/m,inside:{property:[/[^:\s]+(?=\s*:)/,{pattern:/(:)[^:\s]+/,lookbehind:!0}],punctuation:/:/,variable:t,operator:n,important:e.languages.sass.important}}}),delete e.languages.sass.property,delete e.languages.sass.important,e.languages.insertBefore("sass","punctuation",{selector:{pattern:/([ \t]*)\S(?:,?[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,?[^,\r\n]+)*)*/,lookbehind:!0}})}(a),a.languages.scss=a.languages.extend("css",{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},atrule:{pattern:/@[\w-]+(?:\([^()]+\)|[^(])*?(?=\s+[{;])/,inside:{rule:/@[\w-]+/}},url:/(?:[-a-z]+-)?url(?=\()/i,selector:{pattern:/(?=\S)[^@;{}()]?(?:[^@;{}()]|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}]+[:{][^}]+))/m,inside:{parent:{pattern:/&/,alias:"important"},placeholder:/%[-\w]+/,variable:/\$[-\w]+|#\{\$[-\w]+\}/}},property:{pattern:/(?:[\w-]|\$[-\w]+|#\{\$[-\w]+\})+(?=\s*:)/,inside:{variable:/\$[-\w]+|#\{\$[-\w]+\}/}}}),a.languages.insertBefore("scss","atrule",{keyword:[/@(?:if|else(?: if)?|for|each|while|import|extend|debug|warn|mixin|include|function|return|content)/i,{pattern:/( +)(?:from|through)(?= )/,lookbehind:!0}]}),a.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),a.languages.insertBefore("scss","function",{placeholder:{pattern:/%[-\w]+/,alias:"selector"},statement:{pattern:/\B!(?:default|optional)\b/i,alias:"keyword"},boolean:/\b(?:true|false)\b/,null:{pattern:/\bnull\b/,alias:"keyword"},operator:{pattern:/(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|or|not)(?=\s)/,lookbehind:!0}}),a.languages.scss.atrule.inside.rest=a.languages.scss,a.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},variable:[{pattern:/@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,greedy:!0},/@[\w.$]+/],string:{pattern:/(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/,greedy:!0,lookbehind:!0},function:/\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:_INSERT|COL)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURNS?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i,boolean:/\b(?:TRUE|FALSE|NULL)\b/i,number:/\b0x[\da-f]+\b|\b\d+\.?\d*|\B\.\d+\b/i,operator:/[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|IN|LIKE|NOT|OR|IS|DIV|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var t={url:/url\((["']?).*?\1\)/i,string:{pattern:/("|')(?:(?!\1)[^\\\r\n]|\\(?:\r\n|[\s\S]))*\1/,greedy:!0},interpolation:null,func:null,important:/\B!(?:important|optional)\b/i,keyword:{pattern:/(^|\s+)(?:(?:if|else|for|return|unless)(?=\s+|$)|@[\w-]+)/,lookbehind:!0},hexcode:/#[\da-f]{3,6}/i,number:/\b\d+(?:\.\d+)?%?/,boolean:/\b(?:true|false)\b/,operator:[/~|[+!\/%<>?=]=?|[-:]=|\*[*=]?|\.+|&&|\|\||\B-\B|\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\b/],punctuation:/[{}()\[\];:,]/};t.interpolation={pattern:/\{[^\r\n}:]+\}/,alias:"variable",inside:{delimiter:{pattern:/^{|}$/,alias:"punctuation"},rest:t}},t.func={pattern:/[\w-]+\([^)]*\).*/,inside:{function:/^[^(]+/,rest:t}},e.languages.stylus={comment:{pattern:/(^|[^\\])(\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},"atrule-declaration":{pattern:/(^\s*)@.+/m,lookbehind:!0,inside:{atrule:/^@[\w-]+/,rest:t}},"variable-declaration":{pattern:/(^[ \t]*)[\w$-]+\s*.?=[ \t]*(?:(?:\{[^}]*\}|.+)|$)/m,lookbehind:!0,inside:{variable:/^\S+/,rest:t}},statement:{pattern:/(^[ \t]*)(?:if|else|for|return|unless)[ \t]+.+/m,lookbehind:!0,inside:{keyword:/^\S+/,rest:t}},"property-declaration":{pattern:/((?:^|\{)([ \t]*))(?:[\w-]|\{[^}\r\n]+\})+(?:\s*:\s*|[ \t]+)[^{\r\n]*(?:;|[^{\r\n,](?=$)(?!(\r?\n|\r)(?:\{|\2[ \t]+)))/m,lookbehind:!0,inside:{property:{pattern:/^[^\s:]+/,inside:{interpolation:t.interpolation}},rest:t}},selector:{pattern:/(^[ \t]*)(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\))?|\{[^}\r\n]+\})+)(?:(?:\r?\n|\r)(?:\1(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\))?|\{[^}\r\n]+\})+)))*(?:,$|\{|(?=(?:\r?\n|\r)(?:\{|\1[ \t]+)))/m,lookbehind:!0,inside:{interpolation:t.interpolation,punctuation:/[{},]/}},func:t.func,string:t.string,interpolation:t.interpolation,punctuation:/[{}()\[\];:.]/}}(a);var s=a.util.clone(a.languages.typescript);a.languages.tsx=a.languages.extend("jsx",s),a.languages.wasm={comment:[/\(;[\s\S]*?;\)/,{pattern:/;;.*/,greedy:!0}],string:{pattern:/"(?:\\[\s\S]|[^"\\])*"/,greedy:!0},keyword:[{pattern:/\b(?:align|offset)=/,inside:{operator:/=/}},{pattern:/\b(?:(?:f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|nearest|neg?|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|store(?:8|16|32)?|sqrt|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))?|memory\.(?:grow|size))\b/,inside:{punctuation:/\./}},/\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\b/],variable:/\$[\w!#$%&'*+\-./:<=>?@\\^_`|~]+/i,number:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/,punctuation:/[()]/},a.languages.yaml={scalar:{pattern:/([\-:]\s*(?:![^\s]+)?[ \t]*[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)[^\r\n]+(?:\2[^\r\n]+)*)/,lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:/(\s*(?:^|[:\-,[{\r\n?])[ \t]*(?:![^\s]+)?[ \t]*)[^\r\n{[\]},#\s]+?(?=\s*:\s)/,lookbehind:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:/([:\-,[{]\s*(?:![^\s]+)?[ \t]*)(?:\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?)?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?)(?=[ \t]*(?:$|,|]|}))/m,lookbehind:!0,alias:"number"},boolean:{pattern:/([:\-,[{]\s*(?:![^\s]+)?[ \t]*)(?:true|false)[ \t]*(?=$|,|]|})/im,lookbehind:!0,alias:"important"},null:{pattern:/([:\-,[{]\s*(?:![^\s]+)?[ \t]*)(?:null|~)[ \t]*(?=$|,|]|})/im,lookbehind:!0,alias:"important"},string:{pattern:/([:\-,[{]\s*(?:![^\s]+)?[ \t]*)("|')(?:(?!\2)[^\\\r\n]|\\.)*\2(?=[ \t]*(?:$|,|]|}|\s*#))/m,lookbehind:!0,greedy:!0},number:{pattern:/([:\-,[{]\s*(?:![^\s]+)?[ \t]*)[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+\.?\d*|\.?\d+)(?:e[+-]?\d+)?|\.inf|\.nan)[ \t]*(?=$|,|]|})/im,lookbehind:!0},tag:/![^\s]+/,important:/[&*][\w]+/,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},a.languages.yml=a.languages.yaml,t.a=a},function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(r){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){"use strict";var r=n(0),o=n.n(r),i=n(34);t.a=function(e){return o.a.createElement(i.a,Object.assign({},e))}},function(e,t,n){"use strict";var r=n(8);t.a=r.b},function(e,t,n){"use strict";e.exports=n(46)},function(e,t,n){"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}(),e.exports=n(40)},function(e){e.exports=JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"path":"/docs","versions":[{"name":"current","label":"master \ud83c\udfc3","isLast":false,"path":"/docs/next","mainDocId":"gettingStarted/localDeployment","docs":[{"id":"adminDocs/yarn/README","path":"/docs/next/adminDocs/yarn/README","sidebar":"docs"},{"id":"adminDocs/yarn/TestAndTroubleshooting","path":"/docs/next/adminDocs/yarn/TestAndTroubleshooting"},{"id":"adminDocs/yarn/workbench/HowToRun","path":"/docs/next/adminDocs/yarn/workbench/HowToRun"},{"id":"adminDocs/yarn/workbench/notebook/setup-jupyter","path":"/docs/next/adminDocs/yarn/workbench/notebook/setup-jupyter"},{"id":"adminDocs/yarn/workbench/README","path":"/docs/next/adminDocs/yarn/workbench/README"},{"id":"adminDocs/yarn/workbench/README.zh-CN","path":"/docs/next/adminDocs/yarn/workbench/README.zh-CN"},{"id":"api/environment","path":"/docs/next/api/environment","sidebar":"api"},{"id":"api/experiment","path":"/docs/next/api/experiment","sidebar":"api"},{"id":"api/experiment-template","path":"/docs/next/api/experiment-template","sidebar":"api"},{"id":"api/model-version","path":"/docs/next/api/model-version"},{"id":"api/notebook","path":"/docs/next/api/notebook","sidebar":"api"},{"id":"api/registered-model","path":"/docs/next/api/registered-model"},{"id":"api/serve","path":"/docs/next/api/serve","sidebar":"api"},{"id":"community/Bylaws","path":"/docs/next/community/Bylaws","sidebar":"docs"},{"id":"community/contributing","path":"/docs/next/community/contributing","sidebar":"docs"},{"id":"community/HowToBecomeCommitter","path":"/docs/next/community/HowToBecomeCommitter","sidebar":"docs"},{"id":"community/HowToCommit","path":"/docs/next/community/HowToCommit","sidebar":"docs"},{"id":"community/HowToVoteCommitterOrPMC","path":"/docs/next/community/HowToVoteCommitterOrPMC","sidebar":"docs"},{"id":"community/README","path":"/docs/next/community/README","sidebar":"docs"},{"id":"designDocs/architecture-and-requirements","path":"/docs/next/designDocs/architecture-and-requirements","sidebar":"docs"},{"id":"designDocs/environments-implementation","path":"/docs/next/designDocs/environments-implementation","sidebar":"docs"},{"id":"designDocs/experiment-implementation","path":"/docs/next/designDocs/experiment-implementation","sidebar":"docs"},{"id":"designDocs/implementation-notes","path":"/docs/next/designDocs/implementation-notes","sidebar":"docs"},{"id":"designDocs/notebook-implementation","path":"/docs/next/designDocs/notebook-implementation","sidebar":"docs"},{"id":"designDocs/storage-implementation","path":"/docs/next/designDocs/storage-implementation","sidebar":"docs"},{"id":"designDocs/submarine-server/architecture","path":"/docs/next/designDocs/submarine-server/architecture","sidebar":"docs"},{"id":"designDocs/submarine-server/experimentSpec","path":"/docs/next/designDocs/submarine-server/experimentSpec","sidebar":"docs"},{"id":"designDocs/wip-designs/security-implementation","path":"/docs/next/designDocs/wip-designs/security-implementation","sidebar":"docs"},{"id":"designDocs/wip-designs/submarine-clusterServer","path":"/docs/next/designDocs/wip-designs/submarine-clusterServer","sidebar":"docs"},{"id":"designDocs/wip-designs/submarine-launcher","path":"/docs/next/designDocs/wip-designs/submarine-launcher","sidebar":"docs"},{"id":"devDocs/BuildFromCode","path":"/docs/next/devDocs/BuildFromCode","sidebar":"docs"},{"id":"devDocs/Dependencies","path":"/docs/next/devDocs/Dependencies","sidebar":"docs"},{"id":"devDocs/Development","path":"/docs/next/devDocs/Development","sidebar":"docs"},{"id":"devDocs/HowToRelease","path":"/docs/next/devDocs/HowToRelease","sidebar":"docs"},{"id":"devDocs/HowToVerify","path":"/docs/next/devDocs/HowToVerify","sidebar":"docs"},{"id":"devDocs/IntegrationTestE2E","path":"/docs/next/devDocs/IntegrationTestE2E","sidebar":"docs"},{"id":"devDocs/IntegrationTestK8s","path":"/docs/next/devDocs/IntegrationTestK8s","sidebar":"docs"},{"id":"devDocs/README","path":"/docs/next/devDocs/README","sidebar":"docs"},{"id":"download","path":"/docs/next/download"},{"id":"ecosystem/kaldi/RunningDistributedThchs30KaldiJobs","path":"/docs/next/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs"},{"id":"ecosystem/kaldi/WriteDockerfileKaldi","path":"/docs/next/ecosystem/kaldi/WriteDockerfileKaldi"},{"id":"gettingStarted/helm","path":"/docs/next/gettingStarted/helm"},{"id":"gettingStarted/kind","path":"/docs/next/gettingStarted/kind"},{"id":"gettingStarted/localDeployment","path":"/docs/next/"},{"id":"gettingStarted/notebook","path":"/docs/next/gettingStarted/notebook","sidebar":"docs"},{"id":"gettingStarted/python-sdk","path":"/docs/next/gettingStarted/python-sdk"},{"id":"gettingStarted/quickstart","path":"/docs/next/gettingStarted/quickstart","sidebar":"docs"},{"id":"userDocs/api/environment","path":"/docs/next/userDocs/api/environment","sidebar":"docs"},{"id":"userDocs/api/experiment","path":"/docs/next/userDocs/api/experiment","sidebar":"docs"},{"id":"userDocs/api/experiment-template","path":"/docs/next/userDocs/api/experiment-template","sidebar":"docs"},{"id":"userDocs/api/notebook","path":"/docs/next/userDocs/api/notebook","sidebar":"docs"},{"id":"userDocs/others/mlflow","path":"/docs/next/userDocs/others/mlflow","sidebar":"docs"},{"id":"userDocs/others/tensorboard","path":"/docs/next/userDocs/others/tensorboard","sidebar":"docs"},{"id":"userDocs/submarine-sdk/experiment-client","path":"/docs/next/userDocs/submarine-sdk/experiment-client","sidebar":"docs"},{"id":"userDocs/submarine-sdk/pysubmarine/development","path":"/docs/next/userDocs/submarine-sdk/pysubmarine/development"},{"id":"userDocs/submarine-sdk/README","path":"/docs/next/userDocs/submarine-sdk/README"},{"id":"userDocs/submarine-sdk/submarine-cli","path":"/docs/next/userDocs/submarine-sdk/submarine-cli","sidebar":"docs"},{"id":"userDocs/submarine-sdk/tracking","path":"/docs/next/userDocs/submarine-sdk/tracking","sidebar":"docs"},{"id":"userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README","path":"/docs/next/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README"},{"id":"userDocs/yarn/Dockerfiles","path":"/docs/next/userDocs/yarn/Dockerfiles"},{"id":"userDocs/yarn/TestAndTroubleshooting","path":"/docs/next/userDocs/yarn/TestAndTroubleshooting"},{"id":"userDocs/yarn/WriteDockerfileMX","path":"/docs/next/userDocs/yarn/WriteDockerfileMX"},{"id":"userDocs/yarn/WriteDockerfilePT","path":"/docs/next/userDocs/yarn/WriteDockerfilePT"},{"id":"userDocs/yarn/WriteDockerfileTF","path":"/docs/next/userDocs/yarn/WriteDockerfileTF"},{"id":"userDocs/yarn/YARNRuntimeGuide","path":"/docs/next/userDocs/yarn/YARNRuntimeGuide"}]},{"name":"0.6.0","label":"0.6.0","isLast":true,"path":"/docs","mainDocId":"gettingStarted/localDeployment","docs":[{"id":"adminDocs/yarn/README","path":"/docs/adminDocs/yarn/README","sidebar":"docs"},{"id":"adminDocs/yarn/TestAndTroubleshooting","path":"/docs/adminDocs/yarn/TestAndTroubleshooting"},{"id":"adminDocs/yarn/workbench/HowToRun","path":"/docs/adminDocs/yarn/workbench/HowToRun"},{"id":"adminDocs/yarn/workbench/notebook/setup-jupyter","path":"/docs/adminDocs/yarn/workbench/notebook/setup-jupyter"},{"id":"adminDocs/yarn/workbench/README","path":"/docs/adminDocs/yarn/workbench/README"},{"id":"adminDocs/yarn/workbench/README.zh-CN","path":"/docs/adminDocs/yarn/workbench/README.zh-CN"},{"id":"api/environment","path":"/docs/api/environment","sidebar":"api"},{"id":"api/experiment","path":"/docs/api/experiment","sidebar":"api"},{"id":"api/experiment-template","path":"/docs/api/experiment-template","sidebar":"api"},{"id":"api/notebook","path":"/docs/api/notebook","sidebar":"api"},{"id":"community/contributing","path":"/docs/community/contributing","sidebar":"docs"},{"id":"community/HowToCommit","path":"/docs/community/HowToCommit","sidebar":"docs"},{"id":"community/README","path":"/docs/community/README","sidebar":"docs"},{"id":"designDocs/architecture-and-requirements","path":"/docs/designDocs/architecture-and-requirements","sidebar":"docs"},{"id":"designDocs/environments-implementation","path":"/docs/designDocs/environments-implementation","sidebar":"docs"},{"id":"designDocs/experiment-implementation","path":"/docs/designDocs/experiment-implementation","sidebar":"docs"},{"id":"designDocs/implementation-notes","path":"/docs/designDocs/implementation-notes","sidebar":"docs"},{"id":"designDocs/notebook-implementation","path":"/docs/designDocs/notebook-implementation","sidebar":"docs"},{"id":"designDocs/storage-implementation","path":"/docs/designDocs/storage-implementation","sidebar":"docs"},{"id":"designDocs/submarine-server/architecture","path":"/docs/designDocs/submarine-server/architecture","sidebar":"docs"},{"id":"designDocs/submarine-server/experimentSpec","path":"/docs/designDocs/submarine-server/experimentSpec","sidebar":"docs"},{"id":"designDocs/wip-designs/security-implementation","path":"/docs/designDocs/wip-designs/security-implementation","sidebar":"docs"},{"id":"designDocs/wip-designs/submarine-clusterServer","path":"/docs/designDocs/wip-designs/submarine-clusterServer","sidebar":"docs"},{"id":"designDocs/wip-designs/submarine-launcher","path":"/docs/designDocs/wip-designs/submarine-launcher","sidebar":"docs"},{"id":"devDocs/BuildFromCode","path":"/docs/devDocs/BuildFromCode","sidebar":"docs"},{"id":"devDocs/Dependencies","path":"/docs/devDocs/Dependencies","sidebar":"docs"},{"id":"devDocs/Development","path":"/docs/devDocs/Development","sidebar":"docs"},{"id":"devDocs/IntegrationTestE2E","path":"/docs/devDocs/IntegrationTestE2E","sidebar":"docs"},{"id":"devDocs/IntegrationTestK8s","path":"/docs/devDocs/IntegrationTestK8s","sidebar":"docs"},{"id":"devDocs/README","path":"/docs/devDocs/README","sidebar":"docs"},{"id":"download","path":"/docs/download"},{"id":"ecosystem/kaldi/RunningDistributedThchs30KaldiJobs","path":"/docs/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs"},{"id":"ecosystem/kaldi/WriteDockerfileKaldi","path":"/docs/ecosystem/kaldi/WriteDockerfileKaldi"},{"id":"gettingStarted/helm","path":"/docs/gettingStarted/helm"},{"id":"gettingStarted/kind","path":"/docs/gettingStarted/kind"},{"id":"gettingStarted/localDeployment","path":"/docs/"},{"id":"gettingStarted/notebook","path":"/docs/gettingStarted/notebook","sidebar":"docs"},{"id":"gettingStarted/python-sdk","path":"/docs/gettingStarted/python-sdk"},{"id":"gettingStarted/quickstart","path":"/docs/gettingStarted/quickstart","sidebar":"docs"},{"id":"userDocs/api/environment","path":"/docs/userDocs/api/environment","sidebar":"docs"},{"id":"userDocs/api/experiment","path":"/docs/userDocs/api/experiment","sidebar":"docs"},{"id":"userDocs/api/experiment-template","path":"/docs/userDocs/api/experiment-template","sidebar":"docs"},{"id":"userDocs/api/notebook","path":"/docs/userDocs/api/notebook","sidebar":"docs"},{"id":"userDocs/others/mlflow","path":"/docs/userDocs/others/mlflow","sidebar":"docs"},{"id":"userDocs/others/tensorboard","path":"/docs/userDocs/others/tensorboard","sidebar":"docs"},{"id":"userDocs/submarine-sdk/experiment-client","path":"/docs/userDocs/submarine-sdk/experiment-client","sidebar":"docs"},{"id":"userDocs/submarine-sdk/model-client","path":"/docs/userDocs/submarine-sdk/model-client","sidebar":"docs"},{"id":"userDocs/submarine-sdk/pysubmarine/development","path":"/docs/userDocs/submarine-sdk/pysubmarine/development"},{"id":"userDocs/submarine-sdk/README","path":"/docs/userDocs/submarine-sdk/README"},{"id":"userDocs/submarine-sdk/tracking","path":"/docs/userDocs/submarine-sdk/tracking","sidebar":"docs"},{"id":"userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin","path":"/docs/userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin","sidebar":"docs"},{"id":"userDocs/submarine-security/spark-security/README","path":"/docs/userDocs/submarine-security/spark-security/README","sidebar":"docs"},{"id":"userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README","path":"/docs/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README"},{"id":"userDocs/yarn/Dockerfiles","path":"/docs/userDocs/yarn/Dockerfiles"},{"id":"userDocs/yarn/TestAndTroubleshooting","path":"/docs/userDocs/yarn/TestAndTroubleshooting"},{"id":"userDocs/yarn/WriteDockerfileMX","path":"/docs/userDocs/yarn/WriteDockerfileMX"},{"id":"userDocs/yarn/WriteDockerfilePT","path":"/docs/userDocs/yarn/WriteDockerfilePT"},{"id":"userDocs/yarn/WriteDockerfileTF","path":"/docs/userDocs/yarn/WriteDockerfileTF"},{"id":"userDocs/yarn/YARNRuntimeGuide","path":"/docs/userDocs/yarn/YARNRuntimeGuide"}]}]}}}')},function(e){e.exports=JSON.parse('{"defaultLocale":"en","locales":["en"],"localeConfigs":{"en":{"label":"en"}},"currentLocale":"en"}')},function(e){e.exports=JSON.parse("{}")},function(e){e.exports=JSON.parse('{"docusaurusVersion":"2.0.0-alpha.70","siteVersion":"0.0.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"2.0.0-alpha.70"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"2.0.0-alpha.70"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"2.0.0-alpha.70"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"2.0.0-alpha.70"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"2.0.0-alpha.70"},"docusaurus-lunr-search":{"type":"package","name":"docusaurus-lunr-search","version":"2.1.10"}}}')},function(e,t,n){"use strict";var r=n(27),o={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},i={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},a={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},s={};function l(e){return r.isMemo(e)?a:s[e.$$typeof]||o}s[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},s[r.Memo]=a;var c=Object.defineProperty,u=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,p=Object.getOwnPropertyDescriptor,f=Object.getPrototypeOf,m=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(m){var o=f(n);o&&o!==m&&e(t,o,r)}var a=u(n);d&&(a=a.concat(d(n)));for(var s=l(t),h=l(n),g=0;g<a.length;++g){var b=a[g];if(!(i[b]||r&&r[b]||h&&h[b]||s&&s[b])){var v=p(n,b);try{c(t,b,v)}catch(y){}}}}return t}},function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return ge}));var r,o,i,a,s=n(1),l=n.n(s),c=n(35),u=n.n(c),d=n(36),p=n.n(d),f=n(0),m=n.n(f),h=n(12),g=n.n(h),b="bodyAttributes",v="htmlAttributes",y="titleAttributes",w={BASE:"base",BODY:"body",HEAD:"head",HTML:"html",LINK:"link",META:"meta",NOSCRIPT:"noscript",SCRIPT:"script",STYLE:"style",TITLE:"title"},k=(Object.keys(w).map((function(e){return w[e]})),"charset"),x="cssText",E="href",T="http-equiv",S="innerHTML",D="itemprop",C="name",A="property",_="rel",R="src",O="target",P={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},N="defaultTitle",I="defer",M="encodeSpecialCharacters",j="onChangeClientState",L="titleTemplate",F=Object.keys(P).reduce((function(e,t){return e[P[t]]=t,e}),{}),z=[w.NOSCRIPT,w.SCRIPT,w.STYLE],B="data-react-helmet",U="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},$=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},q=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),H=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},G=function(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n},W=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t},V=function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return!1===t?String(e):String(e).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;")},K=function(e){var t=Z(e,w.TITLE),n=Z(e,L);if(n&&t)return n.replace(/%s/g,(function(){return Array.isArray(t)?t.join(""):t}));var r=Z(e,N);return t||r||void 0},Y=function(e){return Z(e,j)||function(){}},Q=function(e,t){return t.filter((function(t){return void 0!==t[e]})).map((function(t){return t[e]})).reduce((function(e,t){return H({},e,t)}),{})},X=function(e,t){return t.filter((function(e){return void 0!==e[w.BASE]})).map((function(e){return e[w.BASE]})).reverse().reduce((function(t,n){if(!t.length)for(var r=Object.keys(n),o=0;o<r.length;o++){var i=r[o].toLowerCase();if(-1!==e.indexOf(i)&&n[i])return t.concat(n)}return t}),[])},J=function(e,t,n){var r={};return n.filter((function(t){return!!Array.isArray(t[e])||(void 0!==t[e]&&oe("Helmet: "+e+' should be of type "Array". Instead found type "'+U(t[e])+'"'),!1)})).map((function(t){return t[e]})).reverse().reduce((function(e,n){var o={};n.filter((function(e){for(var n=void 0,i=Object.keys(e),a=0;a<i.length;a++){var s=i[a],l=s.toLowerCase();-1===t.indexOf(l)||n===_&&"canonical"===e[n].toLowerCase()||l===_&&"stylesheet"===e[l].toLowerCase()||(n=l),-1===t.indexOf(s)||s!==S&&s!==x&&s!==D||(n=s)}if(!n||!e[n])return!1;var c=e[n].toLowerCase();return r[n]||(r[n]={}),o[n]||(o[n]={}),!r[n][c]&&(o[n][c]=!0,!0)})).reverse().forEach((function(t){return e.push(t)}));for(var i=Object.keys(o),a=0;a<i.length;a++){var s=i[a],l=g()({},r[s],o[s]);r[s]=l}return e}),[]).reverse()},Z=function(e,t){for(var n=e.length-1;n>=0;n--){var r=e[n];if(r.hasOwnProperty(t))return r[t]}return null},ee=(r=Date.now(),function(e){var t=Date.now();t-r>16?(r=t,e(t)):setTimeout((function(){ee(e)}),0)}),te=function(e){return clearTimeout(e)},ne="undefined"!=typeof window?window.requestAnimationFrame&&window.requestAnimationFrame.bind(window)||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||ee:e.requestAnimationFrame||ee,re="undefined"!=typeof window?window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||te:e.cancelAnimationFrame||te,oe=function(e){return console&&"function"==typeof console.warn&&console.warn(e)},ie=null,ae=function(e,t){var n=e.baseTag,r=e.bodyAttributes,o=e.htmlAttributes,i=e.linkTags,a=e.metaTags,s=e.noscriptTags,l=e.onChangeClientState,c=e.scriptTags,u=e.styleTags,d=e.title,p=e.titleAttributes;ce(w.BODY,r),ce(w.HTML,o),le(d,p);var f={baseTag:ue(w.BASE,n),linkTags:ue(w.LINK,i),metaTags:ue(w.META,a),noscriptTags:ue(w.NOSCRIPT,s),scriptTags:ue(w.SCRIPT,c),styleTags:ue(w.STYLE,u)},m={},h={};Object.keys(f).forEach((function(e){var t=f[e],n=t.newTags,r=t.oldTags;n.length&&(m[e]=n),r.length&&(h[e]=f[e].oldTags)})),t&&t(),l(e,m,h)},se=function(e){return Array.isArray(e)?e.join(""):e},le=function(e,t){void 0!==e&&document.title!==e&&(document.title=se(e)),ce(w.TITLE,t)},ce=function(e,t){var n=document.getElementsByTagName(e)[0];if(n){for(var r=n.getAttribute(B),o=r?r.split(","):[],i=[].concat(o),a=Object.keys(t),s=0;s<a.length;s++){var l=a[s],c=t[l]||"";n.getAttribute(l)!==c&&n.setAttribute(l,c),-1===o.indexOf(l)&&o.push(l);var u=i.indexOf(l);-1!==u&&i.splice(u,1)}for(var d=i.length-1;d>=0;d--)n.removeAttribute(i[d]);o.length===i.length?n.removeAttribute(B):n.getAttribute(B)!==a.join(",")&&n.setAttribute(B,a.join(","))}},ue=function(e,t){var n=document.head||document.querySelector(w.HEAD),r=n.querySelectorAll(e+"["+"data-react-helmet]"),o=Array.prototype.slice.call(r),i=[],a=void 0;return t&&t.length&&t.forEach((function(t){var n=document.createElement(e);for(var r in t)if(t.hasOwnProperty(r))if(r===S)n.innerHTML=t.innerHTML;else if(r===x)n.styleSheet?n.styleSheet.cssText=t.cssText:n.appendChild(document.createTextNode(t.cssText));else{var s=void 0===t[r]?"":t[r];n.setAttribute(r,s)}n.setAttribute(B,"true"),o.some((function(e,t){return a=t,n.isEqualNode(e)}))?o.splice(a,1):i.push(n)})),o.forEach((function(e){return e.parentNode.removeChild(e)})),i.forEach((function(e){return n.appendChild(e)})),{oldTags:o,newTags:i}},de=function(e){return Object.keys(e).reduce((function(t,n){var r=void 0!==e[n]?n+'="'+e[n]+'"':""+n;return t?t+" "+r:r}),"")},pe=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.keys(e).reduce((function(t,n){return t[P[n]||n]=e[n],t}),t)},fe=function(e,t,n){switch(e){case w.TITLE:return{toComponent:function(){return e=t.title,n=t.titleAttributes,(r={key:e})[B]=!0,o=pe(n,r),[m.a.createElement(w.TITLE,o,e)];var e,n,r,o},toString:function(){return function(e,t,n,r){var o=de(n),i=se(t);return o?"<"+e+' data-react-helmet="true" '+o+">"+V(i,r)+"</"+e+">":"<"+e+' data-react-helmet="true">'+V(i,r)+"</"+e+">"}(e,t.title,t.titleAttributes,n)}};case b:case v:return{toComponent:function(){return pe(t)},toString:function(){return de(t)}};default:return{toComponent:function(){return function(e,t){return t.map((function(t,n){var r,o=((r={key:n})[B]=!0,r);return Object.keys(t).forEach((function(e){var n=P[e]||e;if(n===S||n===x){var r=t.innerHTML||t.cssText;o.dangerouslySetInnerHTML={__html:r}}else o[n]=t[e]})),m.a.createElement(e,o)}))}(e,t)},toString:function(){return function(e,t,n){return t.reduce((function(t,r){var o=Object.keys(r).filter((function(e){return!(e===S||e===x)})).reduce((function(e,t){var o=void 0===r[t]?t:t+'="'+V(r[t],n)+'"';return e?e+" "+o:o}),""),i=r.innerHTML||r.cssText||"",a=-1===z.indexOf(e);return t+"<"+e+' data-react-helmet="true" '+o+(a?"/>":">"+i+"</"+e+">")}),"")}(e,t,n)}}}},me=function(e){var t=e.baseTag,n=e.bodyAttributes,r=e.encode,o=e.htmlAttributes,i=e.linkTags,a=e.metaTags,s=e.noscriptTags,l=e.scriptTags,c=e.styleTags,u=e.title,d=void 0===u?"":u,p=e.titleAttributes;return{base:fe(w.BASE,t,r),bodyAttributes:fe(b,n,r),htmlAttributes:fe(v,o,r),link:fe(w.LINK,i,r),meta:fe(w.META,a,r),noscript:fe(w.NOSCRIPT,s,r),script:fe(w.SCRIPT,l,r),style:fe(w.STYLE,c,r),title:fe(w.TITLE,{title:d,titleAttributes:p},r)}},he=u()((function(e){return{baseTag:X([E,O],e),bodyAttributes:Q(b,e),defer:Z(e,I),encode:Z(e,M),htmlAttributes:Q(v,e),linkTags:J(w.LINK,[_,E],e),metaTags:J(w.META,[C,k,T,A,D],e),noscriptTags:J(w.NOSCRIPT,[S],e),onChangeClientState:Y(e),scriptTags:J(w.SCRIPT,[R,S],e),styleTags:J(w.STYLE,[x],e),title:K(e),titleAttributes:Q(y,e)}}),(function(e){ie&&re(ie),e.defer?ie=ne((function(){ae(e,(function(){ie=null}))})):(ae(e),ie=null)}),me)((function(){return null})),ge=(o=he,a=i=function(e){function t(){return $(this,t),W(this,e.apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.shouldComponentUpdate=function(e){return!p()(this.props,e)},t.prototype.mapNestedChildrenToProps=function(e,t){if(!t)return null;switch(e.type){case w.SCRIPT:case w.NOSCRIPT:return{innerHTML:t};case w.STYLE:return{cssText:t}}throw new Error("<"+e.type+" /> elements are self-closing and can not contain children. Refer to our API for more information.")},t.prototype.flattenArrayTypeChildren=function(e){var t,n=e.child,r=e.arrayTypeChildren,o=e.newChildProps,i=e.nestedChildren;return H({},r,((t={})[n.type]=[].concat(r[n.type]||[],[H({},o,this.mapNestedChildrenToProps(n,i))]),t))},t.prototype.mapObjectTypeChildren=function(e){var t,n,r=e.child,o=e.newProps,i=e.newChildProps,a=e.nestedChildren;switch(r.type){case w.TITLE:return H({},o,((t={})[r.type]=a,t.titleAttributes=H({},i),t));case w.BODY:return H({},o,{bodyAttributes:H({},i)});case w.HTML:return H({},o,{htmlAttributes:H({},i)})}return H({},o,((n={})[r.type]=H({},i),n))},t.prototype.mapArrayTypeChildrenToProps=function(e,t){var n=H({},t);return Object.keys(e).forEach((function(t){var r;n=H({},n,((r={})[t]=e[t],r))})),n},t.prototype.warnOnInvalidChildren=function(e,t){return!0},t.prototype.mapChildrenToProps=function(e,t){var n=this,r={};return m.a.Children.forEach(e,(function(e){if(e&&e.props){var o=e.props,i=o.children,a=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.keys(e).reduce((function(t,n){return t[F[n]||n]=e[n],t}),t)}(G(o,["children"]));switch(n.warnOnInvalidChildren(e,i),e.type){case w.LINK:case w.META:case w.NOSCRIPT:case w.SCRIPT:case w.STYLE:r=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:r,newChildProps:a,nestedChildren:i});break;default:t=n.mapObjectTypeChildren({child:e,newProps:t,newChildProps:a,nestedChildren:i})}}})),t=this.mapArrayTypeChildrenToProps(r,t)},t.prototype.render=function(){var e=this.props,t=e.children,n=G(e,["children"]),r=H({},n);return t&&(r=this.mapChildrenToProps(t,r)),m.a.createElement(o,r)},q(t,null,[{key:"canUseDOM",set:function(e){o.canUseDOM=e}}]),t}(m.a.Component),i.propTypes={base:l.a.object,bodyAttributes:l.a.object,children:l.a.oneOfType([l.a.arrayOf(l.a.node),l.a.node]),defaultTitle:l.a.string,defer:l.a.bool,encodeSpecialCharacters:l.a.bool,htmlAttributes:l.a.object,link:l.a.arrayOf(l.a.object),meta:l.a.arrayOf(l.a.object),noscript:l.a.arrayOf(l.a.object),onChangeClientState:l.a.func,script:l.a.arrayOf(l.a.object),style:l.a.arrayOf(l.a.object),title:l.a.string,titleAttributes:l.a.object,titleTemplate:l.a.string},i.defaultProps={defer:!0,encodeSpecialCharacters:!0},i.peek=o.peek,i.rewind=function(){var e=o.rewind();return e||(e=me({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}})),e},a);ge.renderStatic=ge.rewind}).call(this,n(24))},function(e,t,n){"use strict";var r,o=n(0),i=(r=o)&&"object"==typeof r&&"default"in r?r.default:r;function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var s=!("undefined"==typeof window||!window.document||!window.document.createElement);e.exports=function(e,t,n){if("function"!=typeof e)throw new Error("Expected reducePropsToState to be a function.");if("function"!=typeof t)throw new Error("Expected handleStateChangeOnClient to be a function.");if(void 0!==n&&"function"!=typeof n)throw new Error("Expected mapStateOnServer to either be undefined or a function.");return function(r){if("function"!=typeof r)throw new Error("Expected WrappedComponent to be a React component.");var l,c=[];function u(){l=e(c.map((function(e){return e.props}))),d.canUseDOM?t(l):n&&(l=n(l))}var d=function(e){var t,n;function o(){return e.apply(this,arguments)||this}n=e,(t=o).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n,o.peek=function(){return l},o.rewind=function(){if(o.canUseDOM)throw new Error("You may only call rewind() on the server. Call peek() to read the current state.");var e=l;return l=void 0,c=[],e};var a=o.prototype;return a.UNSAFE_componentWillMount=function(){c.push(this),u()},a.componentDidUpdate=function(){u()},a.componentWillUnmount=function(){var e=c.indexOf(this);c.splice(e,1),u()},a.render=function(){return i.createElement(r,this.props)},o}(o.PureComponent);return a(d,"displayName","SideEffect("+function(e){return e.displayName||e.name||"Component"}(r)+")"),a(d,"canUseDOM",s),d}}},function(e,t){var n="undefined"!=typeof Element,r="function"==typeof Map,o="function"==typeof Set,i="function"==typeof ArrayBuffer&&!!ArrayBuffer.isView;function a(e,t){if(e===t)return!0;if(e&&t&&"object"==typeof e&&"object"==typeof t){if(e.constructor!==t.constructor)return!1;var s,l,c,u;if(Array.isArray(e)){if((s=e.length)!=t.length)return!1;for(l=s;0!=l--;)if(!a(e[l],t[l]))return!1;return!0}if(r&&e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(u=e.entries();!(l=u.next()).done;)if(!t.has(l.value[0]))return!1;for(u=e.entries();!(l=u.next()).done;)if(!a(l.value[1],t.get(l.value[0])))return!1;return!0}if(o&&e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(u=e.entries();!(l=u.next()).done;)if(!t.has(l.value[0]))return!1;return!0}if(i&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(t)){if((s=e.length)!=t.length)return!1;for(l=s;0!=l--;)if(e[l]!==t[l])return!1;return!0}if(e.constructor===RegExp)return e.source===t.source&&e.flags===t.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===t.toString();if((s=(c=Object.keys(e)).length)!==Object.keys(t).length)return!1;for(l=s;0!=l--;)if(!Object.prototype.hasOwnProperty.call(t,c[l]))return!1;if(n&&e instanceof Element)return!1;for(l=s;0!=l--;)if(("_owner"!==c[l]&&"__v"!==c[l]&&"__o"!==c[l]||!e.$$typeof)&&!a(e[c[l]],t[c[l]]))return!1;return!0}return e!=e&&t!=t}e.exports=function(e,t){try{return a(e,t)}catch(n){if((n.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw n}}},,function(e,t,n){e.exports=n(53)},function(e,t,n){"use strict";var r=n(12),o="function"==typeof Symbol&&Symbol.for,i=o?Symbol.for("react.element"):60103,a=o?Symbol.for("react.portal"):60106,s=o?Symbol.for("react.fragment"):60107,l=o?Symbol.for("react.strict_mode"):60108,c=o?Symbol.for("react.profiler"):60114,u=o?Symbol.for("react.provider"):60109,d=o?Symbol.for("react.context"):60110,p=o?Symbol.for("react.forward_ref"):60112,f=o?Symbol.for("react.suspense"):60113,m=o?Symbol.for("react.memo"):60115,h=o?Symbol.for("react.lazy"):60116,g="function"==typeof Symbol&&Symbol.iterator;function b(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var v={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},y={};function w(e,t,n){this.props=e,this.context=t,this.refs=y,this.updater=n||v}function k(){}function x(e,t,n){this.props=e,this.context=t,this.refs=y,this.updater=n||v}w.prototype.isReactComponent={},w.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error(b(85));this.updater.enqueueSetState(this,e,t,"setState")},w.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},k.prototype=w.prototype;var E=x.prototype=new k;E.constructor=x,r(E,w.prototype),E.isPureReactComponent=!0;var T={current:null},S=Object.prototype.hasOwnProperty,D={key:!0,ref:!0,__self:!0,__source:!0};function C(e,t,n){var r,o={},a=null,s=null;if(null!=t)for(r in void 0!==t.ref&&(s=t.ref),void 0!==t.key&&(a=""+t.key),t)S.call(t,r)&&!D.hasOwnProperty(r)&&(o[r]=t[r]);var l=arguments.length-2;if(1===l)o.children=n;else if(1<l){for(var c=Array(l),u=0;u<l;u++)c[u]=arguments[u+2];o.children=c}if(e&&e.defaultProps)for(r in l=e.defaultProps)void 0===o[r]&&(o[r]=l[r]);return{$$typeof:i,type:e,key:a,ref:s,props:o,_owner:T.current}}function A(e){return"object"==typeof e&&null!==e&&e.$$typeof===i}var _=/\/+/g,R=[];function O(e,t,n,r){if(R.length){var o=R.pop();return o.result=e,o.keyPrefix=t,o.func=n,o.context=r,o.count=0,o}return{result:e,keyPrefix:t,func:n,context:r,count:0}}function P(e){e.result=null,e.keyPrefix=null,e.func=null,e.context=null,e.count=0,10>R.length&&R.push(e)}function N(e,t,n,r){var o=typeof e;"undefined"!==o&&"boolean"!==o||(e=null);var s=!1;if(null===e)s=!0;else switch(o){case"string":case"number":s=!0;break;case"object":switch(e.$$typeof){case i:case a:s=!0}}if(s)return n(r,e,""===t?"."+M(e,0):t),1;if(s=0,t=""===t?".":t+":",Array.isArray(e))for(var l=0;l<e.length;l++){var c=t+M(o=e[l],l);s+=N(o,c,n,r)}else if(null===e||"object"!=typeof e?c=null:c="function"==typeof(c=g&&e[g]||e["@@iterator"])?c:null,"function"==typeof c)for(e=c.call(e),l=0;!(o=e.next()).done;)s+=N(o=o.value,c=t+M(o,l++),n,r);else if("object"===o)throw n=""+e,Error(b(31,"[object Object]"===n?"object with keys {"+Object.keys(e).join(", ")+"}":n,""));return s}function I(e,t,n){return null==e?0:N(e,"",t,n)}function M(e,t){return"object"==typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+(""+e).replace(/[=:]/g,(function(e){return t[e]}))}(e.key):t.toString(36)}function j(e,t){e.func.call(e.context,t,e.count++)}function L(e,t,n){var r=e.result,o=e.keyPrefix;e=e.func.call(e.context,t,e.count++),Array.isArray(e)?F(e,r,n,(function(e){return e})):null!=e&&(A(e)&&(e=function(e,t){return{$$typeof:i,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(e,o+(!e.key||t&&t.key===e.key?"":(""+e.key).replace(_,"$&/")+"/")+n)),r.push(e))}function F(e,t,n,r,o){var i="";null!=n&&(i=(""+n).replace(_,"$&/")+"/"),I(e,L,t=O(t,i,r,o)),P(t)}var z={current:null};function B(){var e=z.current;if(null===e)throw Error(b(321));return e}var U={ReactCurrentDispatcher:z,ReactCurrentBatchConfig:{suspense:null},ReactCurrentOwner:T,IsSomeRendererActing:{current:!1},assign:r};t.Children={map:function(e,t,n){if(null==e)return e;var r=[];return F(e,r,null,t,n),r},forEach:function(e,t,n){if(null==e)return e;I(e,j,t=O(null,null,t,n)),P(t)},count:function(e){return I(e,(function(){return null}),null)},toArray:function(e){var t=[];return F(e,t,null,(function(e){return e})),t},only:function(e){if(!A(e))throw Error(b(143));return e}},t.Component=w,t.Fragment=s,t.Profiler=c,t.PureComponent=x,t.StrictMode=l,t.Suspense=f,t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=U,t.cloneElement=function(e,t,n){if(null==e)throw Error(b(267,e));var o=r({},e.props),a=e.key,s=e.ref,l=e._owner;if(null!=t){if(void 0!==t.ref&&(s=t.ref,l=T.current),void 0!==t.key&&(a=""+t.key),e.type&&e.type.defaultProps)var c=e.type.defaultProps;for(u in t)S.call(t,u)&&!D.hasOwnProperty(u)&&(o[u]=void 0===t[u]&&void 0!==c?c[u]:t[u])}var u=arguments.length-2;if(1===u)o.children=n;else if(1<u){c=Array(u);for(var d=0;d<u;d++)c[d]=arguments[d+2];o.children=c}return{$$typeof:i,type:e.type,key:a,ref:s,props:o,_owner:l}},t.createContext=function(e,t){return void 0===t&&(t=null),(e={$$typeof:d,_calculateChangedBits:t,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider={$$typeof:u,_context:e},e.Consumer=e},t.createElement=C,t.createFactory=function(e){var t=C.bind(null,e);return t.type=e,t},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:p,render:e}},t.isValidElement=A,t.lazy=function(e){return{$$typeof:h,_ctor:e,_status:-1,_result:null}},t.memo=function(e,t){return{$$typeof:m,type:e,compare:void 0===t?null:t}},t.useCallback=function(e,t){return B().useCallback(e,t)},t.useContext=function(e,t){return B().useContext(e,t)},t.useDebugValue=function(){},t.useEffect=function(e,t){return B().useEffect(e,t)},t.useImperativeHandle=function(e,t,n){return B().useImperativeHandle(e,t,n)},t.useLayoutEffect=function(e,t){return B().useLayoutEffect(e,t)},t.useMemo=function(e,t){return B().useMemo(e,t)},t.useReducer=function(e,t,n){return B().useReducer(e,t,n)},t.useRef=function(e){return B().useRef(e)},t.useState=function(e){return B().useState(e)},t.version="16.14.0"},function(e,t,n){"use strict";var r=n(0),o=n(12),i=n(41);function a(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}if(!r)throw Error(a(227));function s(e,t,n,r,o,i,a,s,l){var c=Array.prototype.slice.call(arguments,3);try{t.apply(n,c)}catch(u){this.onError(u)}}var l=!1,c=null,u=!1,d=null,p={onError:function(e){l=!0,c=e}};function f(e,t,n,r,o,i,a,u,d){l=!1,c=null,s.apply(p,arguments)}var m=null,h=null,g=null;function b(e,t,n){var r=e.type||"unknown-event";e.currentTarget=g(n),function(e,t,n,r,o,i,s,p,m){if(f.apply(this,arguments),l){if(!l)throw Error(a(198));var h=c;l=!1,c=null,u||(u=!0,d=h)}}(r,t,void 0,e),e.currentTarget=null}var v=null,y={};function w(){if(v)for(var e in y){var t=y[e],n=v.indexOf(e);if(!(-1<n))throw Error(a(96,e));if(!x[n]){if(!t.extractEvents)throw Error(a(97,e));for(var r in x[n]=t,n=t.eventTypes){var o=void 0,i=n[r],s=t,l=r;if(E.hasOwnProperty(l))throw Error(a(99,l));E[l]=i;var c=i.phasedRegistrationNames;if(c){for(o in c)c.hasOwnProperty(o)&&k(c[o],s,l);o=!0}else i.registrationName?(k(i.registrationName,s,l),o=!0):o=!1;if(!o)throw Error(a(98,r,e))}}}}function k(e,t,n){if(T[e])throw Error(a(100,e));T[e]=t,S[e]=t.eventTypes[n].dependencies}var x=[],E={},T={},S={};function D(e){var t,n=!1;for(t in e)if(e.hasOwnProperty(t)){var r=e[t];if(!y.hasOwnProperty(t)||y[t]!==r){if(y[t])throw Error(a(102,t));y[t]=r,n=!0}}n&&w()}var C=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement),A=null,_=null,R=null;function O(e){if(e=h(e)){if("function"!=typeof A)throw Error(a(280));var t=e.stateNode;t&&(t=m(t),A(e.stateNode,e.type,t))}}function P(e){_?R?R.push(e):R=[e]:_=e}function N(){if(_){var e=_,t=R;if(R=_=null,O(e),t)for(e=0;e<t.length;e++)O(t[e])}}function I(e,t){return e(t)}function M(e,t,n,r,o){return e(t,n,r,o)}function j(){}var L=I,F=!1,z=!1;function B(){null===_&&null===R||(j(),N())}function U(e,t,n){if(z)return e(t,n);z=!0;try{return L(e,t,n)}finally{z=!1,B()}}var $=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,q=Object.prototype.hasOwnProperty,H={},G={};function W(e,t,n,r,o,i){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=r,this.attributeNamespace=o,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=i}var V={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(e){V[e]=new W(e,0,!1,e,null,!1)})),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach((function(e){var t=e[0];V[t]=new W(t,1,!1,e[1],null,!1)})),["contentEditable","draggable","spellCheck","value"].forEach((function(e){V[e]=new W(e,2,!1,e.toLowerCase(),null,!1)})),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach((function(e){V[e]=new W(e,2,!1,e,null,!1)})),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach((function(e){V[e]=new W(e,3,!1,e.toLowerCase(),null,!1)})),["checked","multiple","muted","selected"].forEach((function(e){V[e]=new W(e,3,!0,e,null,!1)})),["capture","download"].forEach((function(e){V[e]=new W(e,4,!1,e,null,!1)})),["cols","rows","size","span"].forEach((function(e){V[e]=new W(e,6,!1,e,null,!1)})),["rowSpan","start"].forEach((function(e){V[e]=new W(e,5,!1,e.toLowerCase(),null,!1)}));var K=/[\-:]([a-z])/g;function Y(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach((function(e){var t=e.replace(K,Y);V[t]=new W(t,1,!1,e,null,!1)})),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach((function(e){var t=e.replace(K,Y);V[t]=new W(t,1,!1,e,"http://www.w3.org/1999/xlink",!1)})),["xml:base","xml:lang","xml:space"].forEach((function(e){var t=e.replace(K,Y);V[t]=new W(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1)})),["tabIndex","crossOrigin"].forEach((function(e){V[e]=new W(e,1,!1,e.toLowerCase(),null,!1)})),V.xlinkHref=new W("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0),["src","href","action","formAction"].forEach((function(e){V[e]=new W(e,1,!1,e.toLowerCase(),null,!0)}));var Q=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function X(e,t,n,r){var o=V.hasOwnProperty(t)?V[t]:null;(null!==o?0===o.type:!r&&(2<t.length&&("o"===t[0]||"O"===t[0])&&("n"===t[1]||"N"===t[1])))||(function(e,t,n,r){if(null==t||function(e,t,n,r){if(null!==n&&0===n.type)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return!r&&(null!==n?!n.acceptsBooleans:"data-"!==(e=e.toLowerCase().slice(0,5))&&"aria-"!==e);default:return!1}}(e,t,n,r))return!0;if(r)return!1;if(null!==n)switch(n.type){case 3:return!t;case 4:return!1===t;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}(t,n,o,r)&&(n=null),r||null===o?function(e){return!!q.call(G,e)||!q.call(H,e)&&($.test(e)?G[e]=!0:(H[e]=!0,!1))}(t)&&(null===n?e.removeAttribute(t):e.setAttribute(t,""+n)):o.mustUseProperty?e[o.propertyName]=null===n?3!==o.type&&"":n:(t=o.attributeName,r=o.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(o=o.type)||4===o&&!0===n?"":""+n,r?e.setAttributeNS(r,t,n):e.setAttribute(t,n))))}Q.hasOwnProperty("ReactCurrentDispatcher")||(Q.ReactCurrentDispatcher={current:null}),Q.hasOwnProperty("ReactCurrentBatchConfig")||(Q.ReactCurrentBatchConfig={suspense:null});var J=/^(.*)[\\\/]/,Z="function"==typeof Symbol&&Symbol.for,ee=Z?Symbol.for("react.element"):60103,te=Z?Symbol.for("react.portal"):60106,ne=Z?Symbol.for("react.fragment"):60107,re=Z?Symbol.for("react.strict_mode"):60108,oe=Z?Symbol.for("react.profiler"):60114,ie=Z?Symbol.for("react.provider"):60109,ae=Z?Symbol.for("react.context"):60110,se=Z?Symbol.for("react.concurrent_mode"):60111,le=Z?Symbol.for("react.forward_ref"):60112,ce=Z?Symbol.for("react.suspense"):60113,ue=Z?Symbol.for("react.suspense_list"):60120,de=Z?Symbol.for("react.memo"):60115,pe=Z?Symbol.for("react.lazy"):60116,fe=Z?Symbol.for("react.block"):60121,me="function"==typeof Symbol&&Symbol.iterator;function he(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=me&&e[me]||e["@@iterator"])?e:null}function ge(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case ne:return"Fragment";case te:return"Portal";case oe:return"Profiler";case re:return"StrictMode";case ce:return"Suspense";case ue:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case ae:return"Context.Consumer";case ie:return"Context.Provider";case le:var t=e.render;return t=t.displayName||t.name||"",e.displayName||(""!==t?"ForwardRef("+t+")":"ForwardRef");case de:return ge(e.type);case fe:return ge(e.render);case pe:if(e=1===e._status?e._result:null)return ge(e)}return null}function be(e){var t="";do{e:switch(e.tag){case 3:case 4:case 6:case 7:case 10:case 9:var n="";break e;default:var r=e._debugOwner,o=e._debugSource,i=ge(e.type);n=null,r&&(n=ge(r.type)),r=i,i="",o?i=" (at "+o.fileName.replace(J,"")+":"+o.lineNumber+")":n&&(i=" (created by "+n+")"),n="\n    in "+(r||"Unknown")+i}t+=n,e=e.return}while(e);return t}function ve(e){switch(typeof e){case"boolean":case"number":case"object":case"string":case"undefined":return e;default:return""}}function ye(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function we(e){e._valueTracker||(e._valueTracker=function(e){var t=ye(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&void 0!==n&&"function"==typeof n.get&&"function"==typeof n.set){var o=n.get,i=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return o.call(this)},set:function(e){r=""+e,i.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(e){r=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function ke(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=ye(e)?e.checked?"true":"false":e.value),(e=r)!==n&&(t.setValue(e),!0)}function xe(e,t){var n=t.checked;return o({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function Ee(e,t){var n=null==t.defaultValue?"":t.defaultValue,r=null!=t.checked?t.checked:t.defaultChecked;n=ve(null!=t.value?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function Te(e,t){null!=(t=t.checked)&&X(e,"checked",t,!1)}function Se(e,t){Te(e,t);var n=ve(t.value),r=t.type;if(null!=n)"number"===r?(0===n&&""===e.value||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if("submit"===r||"reset"===r)return void e.removeAttribute("value");t.hasOwnProperty("value")?Ce(e,t.type,n):t.hasOwnProperty("defaultValue")&&Ce(e,t.type,ve(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function De(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!("submit"!==r&&"reset"!==r||void 0!==t.value&&null!==t.value))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}""!==(n=e.name)&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,""!==n&&(e.name=n)}function Ce(e,t,n){"number"===t&&e.ownerDocument.activeElement===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}function Ae(e,t){return e=o({children:void 0},t),(t=function(e){var t="";return r.Children.forEach(e,(function(e){null!=e&&(t+=e)})),t}(t.children))&&(e.children=t),e}function _e(e,t,n,r){if(e=e.options,t){t={};for(var o=0;o<n.length;o++)t["$"+n[o]]=!0;for(n=0;n<e.length;n++)o=t.hasOwnProperty("$"+e[n].value),e[n].selected!==o&&(e[n].selected=o),o&&r&&(e[n].defaultSelected=!0)}else{for(n=""+ve(n),t=null,o=0;o<e.length;o++){if(e[o].value===n)return e[o].selected=!0,void(r&&(e[o].defaultSelected=!0));null!==t||e[o].disabled||(t=e[o])}null!==t&&(t.selected=!0)}}function Re(e,t){if(null!=t.dangerouslySetInnerHTML)throw Error(a(91));return o({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function Oe(e,t){var n=t.value;if(null==n){if(n=t.children,t=t.defaultValue,null!=n){if(null!=t)throw Error(a(92));if(Array.isArray(n)){if(!(1>=n.length))throw Error(a(93));n=n[0]}t=n}null==t&&(t=""),n=t}e._wrapperState={initialValue:ve(n)}}function Pe(e,t){var n=ve(t.value),r=ve(t.defaultValue);null!=n&&((n=""+n)!==e.value&&(e.value=n),null==t.defaultValue&&e.defaultValue!==n&&(e.defaultValue=n)),null!=r&&(e.defaultValue=""+r)}function Ne(e){var t=e.textContent;t===e._wrapperState.initialValue&&""!==t&&null!==t&&(e.value=t)}var Ie="http://www.w3.org/1999/xhtml",Me="http://www.w3.org/2000/svg";function je(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function Le(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?je(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var Fe,ze,Be=(ze=function(e,t){if(e.namespaceURI!==Me||"innerHTML"in e)e.innerHTML=t;else{for((Fe=Fe||document.createElement("div")).innerHTML="<svg>"+t.valueOf().toString()+"</svg>",t=Fe.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}},"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(e,t,n,r){MSApp.execUnsafeLocalFunction((function(){return ze(e,t)}))}:ze);function Ue(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}function $e(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var qe={animationend:$e("Animation","AnimationEnd"),animationiteration:$e("Animation","AnimationIteration"),animationstart:$e("Animation","AnimationStart"),transitionend:$e("Transition","TransitionEnd")},He={},Ge={};function We(e){if(He[e])return He[e];if(!qe[e])return e;var t,n=qe[e];for(t in n)if(n.hasOwnProperty(t)&&t in Ge)return He[e]=n[t];return e}C&&(Ge=document.createElement("div").style,"AnimationEvent"in window||(delete qe.animationend.animation,delete qe.animationiteration.animation,delete qe.animationstart.animation),"TransitionEvent"in window||delete qe.transitionend.transition);var Ve=We("animationend"),Ke=We("animationiteration"),Ye=We("animationstart"),Qe=We("transitionend"),Xe="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),Je=new("function"==typeof WeakMap?WeakMap:Map);function Ze(e){var t=Je.get(e);return void 0===t&&(t=new Map,Je.set(e,t)),t}function et(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do{0!=(1026&(t=e).effectTag)&&(n=t.return),e=t.return}while(e)}return 3===t.tag?n:null}function tt(e){if(13===e.tag){var t=e.memoizedState;if(null===t&&(null!==(e=e.alternate)&&(t=e.memoizedState)),null!==t)return t.dehydrated}return null}function nt(e){if(et(e)!==e)throw Error(a(188))}function rt(e){if(!(e=function(e){var t=e.alternate;if(!t){if(null===(t=et(e)))throw Error(a(188));return t!==e?null:e}for(var n=e,r=t;;){var o=n.return;if(null===o)break;var i=o.alternate;if(null===i){if(null!==(r=o.return)){n=r;continue}break}if(o.child===i.child){for(i=o.child;i;){if(i===n)return nt(o),e;if(i===r)return nt(o),t;i=i.sibling}throw Error(a(188))}if(n.return!==r.return)n=o,r=i;else{for(var s=!1,l=o.child;l;){if(l===n){s=!0,n=o,r=i;break}if(l===r){s=!0,r=o,n=i;break}l=l.sibling}if(!s){for(l=i.child;l;){if(l===n){s=!0,n=i,r=o;break}if(l===r){s=!0,r=i,n=o;break}l=l.sibling}if(!s)throw Error(a(189))}}if(n.alternate!==r)throw Error(a(190))}if(3!==n.tag)throw Error(a(188));return n.stateNode.current===n?e:t}(e)))return null;for(var t=e;;){if(5===t.tag||6===t.tag)return t;if(t.child)t.child.return=t,t=t.child;else{if(t===e)break;for(;!t.sibling;){if(!t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}}return null}function ot(e,t){if(null==t)throw Error(a(30));return null==e?t:Array.isArray(e)?Array.isArray(t)?(e.push.apply(e,t),e):(e.push(t),e):Array.isArray(t)?[e].concat(t):[e,t]}function it(e,t,n){Array.isArray(e)?e.forEach(t,n):e&&t.call(n,e)}var at=null;function st(e){if(e){var t=e._dispatchListeners,n=e._dispatchInstances;if(Array.isArray(t))for(var r=0;r<t.length&&!e.isPropagationStopped();r++)b(e,t[r],n[r]);else t&&b(e,t,n);e._dispatchListeners=null,e._dispatchInstances=null,e.isPersistent()||e.constructor.release(e)}}function lt(e){if(null!==e&&(at=ot(at,e)),e=at,at=null,e){if(it(e,st),at)throw Error(a(95));if(u)throw e=d,u=!1,d=null,e}}function ct(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}function ut(e){if(!C)return!1;var t=(e="on"+e)in document;return t||((t=document.createElement("div")).setAttribute(e,"return;"),t="function"==typeof t[e]),t}var dt=[];function pt(e){e.topLevelType=null,e.nativeEvent=null,e.targetInst=null,e.ancestors.length=0,10>dt.length&&dt.push(e)}function ft(e,t,n,r){if(dt.length){var o=dt.pop();return o.topLevelType=e,o.eventSystemFlags=r,o.nativeEvent=t,o.targetInst=n,o}return{topLevelType:e,eventSystemFlags:r,nativeEvent:t,targetInst:n,ancestors:[]}}function mt(e){var t=e.targetInst,n=t;do{if(!n){e.ancestors.push(n);break}var r=n;if(3===r.tag)r=r.stateNode.containerInfo;else{for(;r.return;)r=r.return;r=3!==r.tag?null:r.stateNode.containerInfo}if(!r)break;5!==(t=n.tag)&&6!==t||e.ancestors.push(n),n=On(r)}while(n);for(n=0;n<e.ancestors.length;n++){t=e.ancestors[n];var o=ct(e.nativeEvent);r=e.topLevelType;var i=e.nativeEvent,a=e.eventSystemFlags;0===n&&(a|=64);for(var s=null,l=0;l<x.length;l++){var c=x[l];c&&(c=c.extractEvents(r,t,i,o,a))&&(s=ot(s,c))}lt(s)}}function ht(e,t,n){if(!n.has(e)){switch(e){case"scroll":Yt(t,"scroll",!0);break;case"focus":case"blur":Yt(t,"focus",!0),Yt(t,"blur",!0),n.set("blur",null),n.set("focus",null);break;case"cancel":case"close":ut(e)&&Yt(t,e,!0);break;case"invalid":case"submit":case"reset":break;default:-1===Xe.indexOf(e)&&Kt(e,t)}n.set(e,null)}}var gt,bt,vt,yt=!1,wt=[],kt=null,xt=null,Et=null,Tt=new Map,St=new Map,Dt=[],Ct="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput close cancel copy cut paste click change contextmenu reset submit".split(" "),At="focus blur dragenter dragleave mouseover mouseout pointerover pointerout gotpointercapture lostpointercapture".split(" ");function _t(e,t,n,r,o){return{blockedOn:e,topLevelType:t,eventSystemFlags:32|n,nativeEvent:o,container:r}}function Rt(e,t){switch(e){case"focus":case"blur":kt=null;break;case"dragenter":case"dragleave":xt=null;break;case"mouseover":case"mouseout":Et=null;break;case"pointerover":case"pointerout":Tt.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":St.delete(t.pointerId)}}function Ot(e,t,n,r,o,i){return null===e||e.nativeEvent!==i?(e=_t(t,n,r,o,i),null!==t&&(null!==(t=Pn(t))&&bt(t)),e):(e.eventSystemFlags|=r,e)}function Pt(e){var t=On(e.target);if(null!==t){var n=et(t);if(null!==n)if(13===(t=n.tag)){if(null!==(t=tt(n)))return e.blockedOn=t,void i.unstable_runWithPriority(e.priority,(function(){vt(n)}))}else if(3===t&&n.stateNode.hydrate)return void(e.blockedOn=3===n.tag?n.stateNode.containerInfo:null)}e.blockedOn=null}function Nt(e){if(null!==e.blockedOn)return!1;var t=Zt(e.topLevelType,e.eventSystemFlags,e.container,e.nativeEvent);if(null!==t){var n=Pn(t);return null!==n&&bt(n),e.blockedOn=t,!1}return!0}function It(e,t,n){Nt(e)&&n.delete(t)}function Mt(){for(yt=!1;0<wt.length;){var e=wt[0];if(null!==e.blockedOn){null!==(e=Pn(e.blockedOn))&&gt(e);break}var t=Zt(e.topLevelType,e.eventSystemFlags,e.container,e.nativeEvent);null!==t?e.blockedOn=t:wt.shift()}null!==kt&&Nt(kt)&&(kt=null),null!==xt&&Nt(xt)&&(xt=null),null!==Et&&Nt(Et)&&(Et=null),Tt.forEach(It),St.forEach(It)}function jt(e,t){e.blockedOn===t&&(e.blockedOn=null,yt||(yt=!0,i.unstable_scheduleCallback(i.unstable_NormalPriority,Mt)))}function Lt(e){function t(t){return jt(t,e)}if(0<wt.length){jt(wt[0],e);for(var n=1;n<wt.length;n++){var r=wt[n];r.blockedOn===e&&(r.blockedOn=null)}}for(null!==kt&&jt(kt,e),null!==xt&&jt(xt,e),null!==Et&&jt(Et,e),Tt.forEach(t),St.forEach(t),n=0;n<Dt.length;n++)(r=Dt[n]).blockedOn===e&&(r.blockedOn=null);for(;0<Dt.length&&null===(n=Dt[0]).blockedOn;)Pt(n),null===n.blockedOn&&Dt.shift()}var Ft={},zt=new Map,Bt=new Map,Ut=["abort","abort",Ve,"animationEnd",Ke,"animationIteration",Ye,"animationStart","canplay","canPlay","canplaythrough","canPlayThrough","durationchange","durationChange","emptied","emptied","encrypted","encrypted","ended","ended","error","error","gotpointercapture","gotPointerCapture","load","load","loadeddata","loadedData","loadedmetadata","loadedMetadata","loadstart","loadStart","lostpointercapture","lostPointerCapture","playing","playing","progress","progress","seeking","seeking","stalled","stalled","suspend","suspend","timeupdate","timeUpdate",Qe,"transitionEnd","waiting","waiting"];function $t(e,t){for(var n=0;n<e.length;n+=2){var r=e[n],o=e[n+1],i="on"+(o[0].toUpperCase()+o.slice(1));i={phasedRegistrationNames:{bubbled:i,captured:i+"Capture"},dependencies:[r],eventPriority:t},Bt.set(r,t),zt.set(r,i),Ft[o]=i}}$t("blur blur cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focus focus input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange".split(" "),0),$t("drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel".split(" "),1),$t(Ut,2);for(var qt="change selectionchange textInput compositionstart compositionend compositionupdate".split(" "),Ht=0;Ht<qt.length;Ht++)Bt.set(qt[Ht],0);var Gt=i.unstable_UserBlockingPriority,Wt=i.unstable_runWithPriority,Vt=!0;function Kt(e,t){Yt(t,e,!1)}function Yt(e,t,n){var r=Bt.get(t);switch(void 0===r?2:r){case 0:r=Qt.bind(null,t,1,e);break;case 1:r=Xt.bind(null,t,1,e);break;default:r=Jt.bind(null,t,1,e)}n?e.addEventListener(t,r,!0):e.addEventListener(t,r,!1)}function Qt(e,t,n,r){F||j();var o=Jt,i=F;F=!0;try{M(o,e,t,n,r)}finally{(F=i)||B()}}function Xt(e,t,n,r){Wt(Gt,Jt.bind(null,e,t,n,r))}function Jt(e,t,n,r){if(Vt)if(0<wt.length&&-1<Ct.indexOf(e))e=_t(null,e,t,n,r),wt.push(e);else{var o=Zt(e,t,n,r);if(null===o)Rt(e,r);else if(-1<Ct.indexOf(e))e=_t(o,e,t,n,r),wt.push(e);else if(!function(e,t,n,r,o){switch(t){case"focus":return kt=Ot(kt,e,t,n,r,o),!0;case"dragenter":return xt=Ot(xt,e,t,n,r,o),!0;case"mouseover":return Et=Ot(Et,e,t,n,r,o),!0;case"pointerover":var i=o.pointerId;return Tt.set(i,Ot(Tt.get(i)||null,e,t,n,r,o)),!0;case"gotpointercapture":return i=o.pointerId,St.set(i,Ot(St.get(i)||null,e,t,n,r,o)),!0}return!1}(o,e,t,n,r)){Rt(e,r),e=ft(e,r,null,t);try{U(mt,e)}finally{pt(e)}}}}function Zt(e,t,n,r){if(null!==(n=On(n=ct(r)))){var o=et(n);if(null===o)n=null;else{var i=o.tag;if(13===i){if(null!==(n=tt(o)))return n;n=null}else if(3===i){if(o.stateNode.hydrate)return 3===o.tag?o.stateNode.containerInfo:null;n=null}else o!==n&&(n=null)}}e=ft(e,r,n,t);try{U(mt,e)}finally{pt(e)}return null}var en={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},tn=["Webkit","ms","Moz","O"];function nn(e,t,n){return null==t||"boolean"==typeof t||""===t?"":n||"number"!=typeof t||0===t||en.hasOwnProperty(e)&&en[e]?(""+t).trim():t+"px"}function rn(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var r=0===n.indexOf("--"),o=nn(n,t[n],r);"float"===n&&(n="cssFloat"),r?e.setProperty(n,o):e[n]=o}}Object.keys(en).forEach((function(e){tn.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),en[t]=en[e]}))}));var on=o({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function an(e,t){if(t){if(on[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML))throw Error(a(137,e,""));if(null!=t.dangerouslySetInnerHTML){if(null!=t.children)throw Error(a(60));if("object"!=typeof t.dangerouslySetInnerHTML||!("__html"in t.dangerouslySetInnerHTML))throw Error(a(61))}if(null!=t.style&&"object"!=typeof t.style)throw Error(a(62,""))}}function sn(e,t){if(-1===e.indexOf("-"))return"string"==typeof t.is;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var ln=Ie;function cn(e,t){var n=Ze(e=9===e.nodeType||11===e.nodeType?e:e.ownerDocument);t=S[t];for(var r=0;r<t.length;r++)ht(t[r],e,n)}function un(){}function dn(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}function pn(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function fn(e,t){var n,r=pn(e);for(e=0;r;){if(3===r.nodeType){if(n=e+r.textContent.length,e<=t&&n>=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=pn(r)}}function mn(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?mn(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function hn(){for(var e=window,t=dn();t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(r){n=!1}if(!n)break;t=dn((e=t.contentWindow).document)}return t}function gn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}var bn="$?",vn="$!",yn=null,wn=null;function kn(e,t){switch(e){case"button":case"input":case"select":case"textarea":return!!t.autoFocus}return!1}function xn(e,t){return"textarea"===e||"option"===e||"noscript"===e||"string"==typeof t.children||"number"==typeof t.children||"object"==typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var En="function"==typeof setTimeout?setTimeout:void 0,Tn="function"==typeof clearTimeout?clearTimeout:void 0;function Sn(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break}return e}function Dn(e){e=e.previousSibling;for(var t=0;e;){if(8===e.nodeType){var n=e.data;if("$"===n||n===vn||n===bn){if(0===t)return e;t--}else"/$"===n&&t++}e=e.previousSibling}return null}var Cn=Math.random().toString(36).slice(2),An="__reactInternalInstance$"+Cn,_n="__reactEventHandlers$"+Cn,Rn="__reactContainere$"+Cn;function On(e){var t=e[An];if(t)return t;for(var n=e.parentNode;n;){if(t=n[Rn]||n[An]){if(n=t.alternate,null!==t.child||null!==n&&null!==n.child)for(e=Dn(e);null!==e;){if(n=e[An])return n;e=Dn(e)}return t}n=(e=n).parentNode}return null}function Pn(e){return!(e=e[An]||e[Rn])||5!==e.tag&&6!==e.tag&&13!==e.tag&&3!==e.tag?null:e}function Nn(e){if(5===e.tag||6===e.tag)return e.stateNode;throw Error(a(33))}function In(e){return e[_n]||null}function Mn(e){do{e=e.return}while(e&&5!==e.tag);return e||null}function jn(e,t){var n=e.stateNode;if(!n)return null;var r=m(n);if(!r)return null;n=r[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(r=!r.disabled)||(r=!("button"===(e=e.type)||"input"===e||"select"===e||"textarea"===e)),e=!r;break e;default:e=!1}if(e)return null;if(n&&"function"!=typeof n)throw Error(a(231,t,typeof n));return n}function Ln(e,t,n){(t=jn(e,n.dispatchConfig.phasedRegistrationNames[t]))&&(n._dispatchListeners=ot(n._dispatchListeners,t),n._dispatchInstances=ot(n._dispatchInstances,e))}function Fn(e){if(e&&e.dispatchConfig.phasedRegistrationNames){for(var t=e._targetInst,n=[];t;)n.push(t),t=Mn(t);for(t=n.length;0<t--;)Ln(n[t],"captured",e);for(t=0;t<n.length;t++)Ln(n[t],"bubbled",e)}}function zn(e,t,n){e&&n&&n.dispatchConfig.registrationName&&(t=jn(e,n.dispatchConfig.registrationName))&&(n._dispatchListeners=ot(n._dispatchListeners,t),n._dispatchInstances=ot(n._dispatchInstances,e))}function Bn(e){e&&e.dispatchConfig.registrationName&&zn(e._targetInst,null,e)}function Un(e){it(e,Fn)}var $n=null,qn=null,Hn=null;function Gn(){if(Hn)return Hn;var e,t,n=qn,r=n.length,o="value"in $n?$n.value:$n.textContent,i=o.length;for(e=0;e<r&&n[e]===o[e];e++);var a=r-e;for(t=1;t<=a&&n[r-t]===o[i-t];t++);return Hn=o.slice(e,1<t?1-t:void 0)}function Wn(){return!0}function Vn(){return!1}function Kn(e,t,n,r){for(var o in this.dispatchConfig=e,this._targetInst=t,this.nativeEvent=n,e=this.constructor.Interface)e.hasOwnProperty(o)&&((t=e[o])?this[o]=t(n):"target"===o?this.target=r:this[o]=n[o]);return this.isDefaultPrevented=(null!=n.defaultPrevented?n.defaultPrevented:!1===n.returnValue)?Wn:Vn,this.isPropagationStopped=Vn,this}function Yn(e,t,n,r){if(this.eventPool.length){var o=this.eventPool.pop();return this.call(o,e,t,n,r),o}return new this(e,t,n,r)}function Qn(e){if(!(e instanceof this))throw Error(a(279));e.destructor(),10>this.eventPool.length&&this.eventPool.push(e)}function Xn(e){e.eventPool=[],e.getPooled=Yn,e.release=Qn}o(Kn.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=Wn)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=Wn)},persist:function(){this.isPersistent=Wn},isPersistent:Vn,destructor:function(){var e,t=this.constructor.Interface;for(e in t)this[e]=null;this.nativeEvent=this._targetInst=this.dispatchConfig=null,this.isPropagationStopped=this.isDefaultPrevented=Vn,this._dispatchInstances=this._dispatchListeners=null}}),Kn.Interface={type:null,target:null,currentTarget:function(){return null},eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null},Kn.extend=function(e){function t(){}function n(){return r.apply(this,arguments)}var r=this;t.prototype=r.prototype;var i=new t;return o(i,n.prototype),n.prototype=i,n.prototype.constructor=n,n.Interface=o({},r.Interface,e),n.extend=r.extend,Xn(n),n},Xn(Kn);var Jn=Kn.extend({data:null}),Zn=Kn.extend({data:null}),er=[9,13,27,32],tr=C&&"CompositionEvent"in window,nr=null;C&&"documentMode"in document&&(nr=document.documentMode);var rr=C&&"TextEvent"in window&&!nr,or=C&&(!tr||nr&&8<nr&&11>=nr),ir=String.fromCharCode(32),ar={beforeInput:{phasedRegistrationNames:{bubbled:"onBeforeInput",captured:"onBeforeInputCapture"},dependencies:["compositionend","keypress","textInput","paste"]},compositionEnd:{phasedRegistrationNames:{bubbled:"onCompositionEnd",captured:"onCompositionEndCapture"},dependencies:"blur compositionend keydown keypress keyup mousedown".split(" ")},compositionStart:{phasedRegistrationNames:{bubbled:"onCompositionStart",captured:"onCompositionStartCapture"},dependencies:"blur compositionstart keydown keypress keyup mousedown".split(" ")},compositionUpdate:{phasedRegistrationNames:{bubbled:"onCompositionUpdate",captured:"onCompositionUpdateCapture"},dependencies:"blur compositionupdate keydown keypress keyup mousedown".split(" ")}},sr=!1;function lr(e,t){switch(e){case"keyup":return-1!==er.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"blur":return!0;default:return!1}}function cr(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var ur=!1;var dr={eventTypes:ar,extractEvents:function(e,t,n,r){var o;if(tr)e:{switch(e){case"compositionstart":var i=ar.compositionStart;break e;case"compositionend":i=ar.compositionEnd;break e;case"compositionupdate":i=ar.compositionUpdate;break e}i=void 0}else ur?lr(e,n)&&(i=ar.compositionEnd):"keydown"===e&&229===n.keyCode&&(i=ar.compositionStart);return i?(or&&"ko"!==n.locale&&(ur||i!==ar.compositionStart?i===ar.compositionEnd&&ur&&(o=Gn()):(qn="value"in($n=r)?$n.value:$n.textContent,ur=!0)),i=Jn.getPooled(i,t,n,r),o?i.data=o:null!==(o=cr(n))&&(i.data=o),Un(i),o=i):o=null,(e=rr?function(e,t){switch(e){case"compositionend":return cr(t);case"keypress":return 32!==t.which?null:(sr=!0,ir);case"textInput":return(e=t.data)===ir&&sr?null:e;default:return null}}(e,n):function(e,t){if(ur)return"compositionend"===e||!tr&&lr(e,t)?(e=Gn(),Hn=qn=$n=null,ur=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return or&&"ko"!==t.locale?null:t.data;default:return null}}(e,n))?((t=Zn.getPooled(ar.beforeInput,t,n,r)).data=e,Un(t)):t=null,null===o?t:null===t?o:[o,t]}},pr={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function fr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!pr[e.type]:"textarea"===t}var mr={change:{phasedRegistrationNames:{bubbled:"onChange",captured:"onChangeCapture"},dependencies:"blur change click focus input keydown keyup selectionchange".split(" ")}};function hr(e,t,n){return(e=Kn.getPooled(mr.change,e,t,n)).type="change",P(n),Un(e),e}var gr=null,br=null;function vr(e){lt(e)}function yr(e){if(ke(Nn(e)))return e}function wr(e,t){if("change"===e)return t}var kr=!1;function xr(){gr&&(gr.detachEvent("onpropertychange",Er),br=gr=null)}function Er(e){if("value"===e.propertyName&&yr(br))if(e=hr(br,e,ct(e)),F)lt(e);else{F=!0;try{I(vr,e)}finally{F=!1,B()}}}function Tr(e,t,n){"focus"===e?(xr(),br=n,(gr=t).attachEvent("onpropertychange",Er)):"blur"===e&&xr()}function Sr(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return yr(br)}function Dr(e,t){if("click"===e)return yr(t)}function Cr(e,t){if("input"===e||"change"===e)return yr(t)}C&&(kr=ut("input")&&(!document.documentMode||9<document.documentMode));var Ar={eventTypes:mr,_isInputEventSupported:kr,extractEvents:function(e,t,n,r){var o=t?Nn(t):window,i=o.nodeName&&o.nodeName.toLowerCase();if("select"===i||"input"===i&&"file"===o.type)var a=wr;else if(fr(o))if(kr)a=Cr;else{a=Sr;var s=Tr}else(i=o.nodeName)&&"input"===i.toLowerCase()&&("checkbox"===o.type||"radio"===o.type)&&(a=Dr);if(a&&(a=a(e,t)))return hr(a,n,r);s&&s(e,o,t),"blur"===e&&(e=o._wrapperState)&&e.controlled&&"number"===o.type&&Ce(o,"number",o.value)}},_r=Kn.extend({view:null,detail:null}),Rr={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function Or(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=Rr[e])&&!!t[e]}function Pr(){return Or}var Nr=0,Ir=0,Mr=!1,jr=!1,Lr=_r.extend({screenX:null,screenY:null,clientX:null,clientY:null,pageX:null,pageY:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,getModifierState:Pr,button:null,buttons:null,relatedTarget:function(e){return e.relatedTarget||(e.fromElement===e.srcElement?e.toElement:e.fromElement)},movementX:function(e){if("movementX"in e)return e.movementX;var t=Nr;return Nr=e.screenX,Mr?"mousemove"===e.type?e.screenX-t:0:(Mr=!0,0)},movementY:function(e){if("movementY"in e)return e.movementY;var t=Ir;return Ir=e.screenY,jr?"mousemove"===e.type?e.screenY-t:0:(jr=!0,0)}}),Fr=Lr.extend({pointerId:null,width:null,height:null,pressure:null,tangentialPressure:null,tiltX:null,tiltY:null,twist:null,pointerType:null,isPrimary:null}),zr={mouseEnter:{registrationName:"onMouseEnter",dependencies:["mouseout","mouseover"]},mouseLeave:{registrationName:"onMouseLeave",dependencies:["mouseout","mouseover"]},pointerEnter:{registrationName:"onPointerEnter",dependencies:["pointerout","pointerover"]},pointerLeave:{registrationName:"onPointerLeave",dependencies:["pointerout","pointerover"]}},Br={eventTypes:zr,extractEvents:function(e,t,n,r,o){var i="mouseover"===e||"pointerover"===e,a="mouseout"===e||"pointerout"===e;if(i&&0==(32&o)&&(n.relatedTarget||n.fromElement)||!a&&!i)return null;(i=r.window===r?r:(i=r.ownerDocument)?i.defaultView||i.parentWindow:window,a)?(a=t,null!==(t=(t=n.relatedTarget||n.toElement)?On(t):null)&&(t!==et(t)||5!==t.tag&&6!==t.tag)&&(t=null)):a=null;if(a===t)return null;if("mouseout"===e||"mouseover"===e)var s=Lr,l=zr.mouseLeave,c=zr.mouseEnter,u="mouse";else"pointerout"!==e&&"pointerover"!==e||(s=Fr,l=zr.pointerLeave,c=zr.pointerEnter,u="pointer");if(e=null==a?i:Nn(a),i=null==t?i:Nn(t),(l=s.getPooled(l,a,n,r)).type=u+"leave",l.target=e,l.relatedTarget=i,(n=s.getPooled(c,t,n,r)).type=u+"enter",n.target=i,n.relatedTarget=e,u=t,(r=a)&&u)e:{for(c=u,a=0,e=s=r;e;e=Mn(e))a++;for(e=0,t=c;t;t=Mn(t))e++;for(;0<a-e;)s=Mn(s),a--;for(;0<e-a;)c=Mn(c),e--;for(;a--;){if(s===c||s===c.alternate)break e;s=Mn(s),c=Mn(c)}s=null}else s=null;for(c=s,s=[];r&&r!==c&&(null===(a=r.alternate)||a!==c);)s.push(r),r=Mn(r);for(r=[];u&&u!==c&&(null===(a=u.alternate)||a!==c);)r.push(u),u=Mn(u);for(u=0;u<s.length;u++)zn(s[u],"bubbled",l);for(u=r.length;0<u--;)zn(r[u],"captured",n);return 0==(64&o)?[l]:[l,n]}};var Ur="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},$r=Object.prototype.hasOwnProperty;function qr(e,t){if(Ur(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++)if(!$r.call(t,n[r])||!Ur(e[n[r]],t[n[r]]))return!1;return!0}var Hr=C&&"documentMode"in document&&11>=document.documentMode,Gr={select:{phasedRegistrationNames:{bubbled:"onSelect",captured:"onSelectCapture"},dependencies:"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange".split(" ")}},Wr=null,Vr=null,Kr=null,Yr=!1;function Qr(e,t){var n=t.window===t?t.document:9===t.nodeType?t:t.ownerDocument;return Yr||null==Wr||Wr!==dn(n)?null:("selectionStart"in(n=Wr)&&gn(n)?n={start:n.selectionStart,end:n.selectionEnd}:n={anchorNode:(n=(n.ownerDocument&&n.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:n.anchorOffset,focusNode:n.focusNode,focusOffset:n.focusOffset},Kr&&qr(Kr,n)?null:(Kr=n,(e=Kn.getPooled(Gr.select,Vr,e,t)).type="select",e.target=Wr,Un(e),e))}var Xr={eventTypes:Gr,extractEvents:function(e,t,n,r,o,i){if(!(i=!(o=i||(r.window===r?r.document:9===r.nodeType?r:r.ownerDocument)))){e:{o=Ze(o),i=S.onSelect;for(var a=0;a<i.length;a++)if(!o.has(i[a])){o=!1;break e}o=!0}i=!o}if(i)return null;switch(o=t?Nn(t):window,e){case"focus":(fr(o)||"true"===o.contentEditable)&&(Wr=o,Vr=t,Kr=null);break;case"blur":Kr=Vr=Wr=null;break;case"mousedown":Yr=!0;break;case"contextmenu":case"mouseup":case"dragend":return Yr=!1,Qr(n,r);case"selectionchange":if(Hr)break;case"keydown":case"keyup":return Qr(n,r)}return null}},Jr=Kn.extend({animationName:null,elapsedTime:null,pseudoElement:null}),Zr=Kn.extend({clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),eo=_r.extend({relatedTarget:null});function to(e){var t=e.keyCode;return"charCode"in e?0===(e=e.charCode)&&13===t&&(e=13):e=t,10===e&&(e=13),32<=e||13===e?e:0}var no={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},ro={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},oo=_r.extend({key:function(e){if(e.key){var t=no[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=to(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?ro[e.keyCode]||"Unidentified":""},location:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,repeat:null,locale:null,getModifierState:Pr,charCode:function(e){return"keypress"===e.type?to(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?to(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}}),io=Lr.extend({dataTransfer:null}),ao=_r.extend({touches:null,targetTouches:null,changedTouches:null,altKey:null,metaKey:null,ctrlKey:null,shiftKey:null,getModifierState:Pr}),so=Kn.extend({propertyName:null,elapsedTime:null,pseudoElement:null}),lo=Lr.extend({deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:null,deltaMode:null}),co={eventTypes:Ft,extractEvents:function(e,t,n,r){var o=zt.get(e);if(!o)return null;switch(e){case"keypress":if(0===to(n))return null;case"keydown":case"keyup":e=oo;break;case"blur":case"focus":e=eo;break;case"click":if(2===n.button)return null;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":e=Lr;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":e=io;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":e=ao;break;case Ve:case Ke:case Ye:e=Jr;break;case Qe:e=so;break;case"scroll":e=_r;break;case"wheel":e=lo;break;case"copy":case"cut":case"paste":e=Zr;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":e=Fr;break;default:e=Kn}return Un(t=e.getPooled(o,t,n,r)),t}};if(v)throw Error(a(101));v=Array.prototype.slice.call("ResponderEventPlugin SimpleEventPlugin EnterLeaveEventPlugin ChangeEventPlugin SelectEventPlugin BeforeInputEventPlugin".split(" ")),w(),m=In,h=Pn,g=Nn,D({SimpleEventPlugin:co,EnterLeaveEventPlugin:Br,ChangeEventPlugin:Ar,SelectEventPlugin:Xr,BeforeInputEventPlugin:dr});var uo=[],po=-1;function fo(e){0>po||(e.current=uo[po],uo[po]=null,po--)}function mo(e,t){po++,uo[po]=e.current,e.current=t}var ho={},go={current:ho},bo={current:!1},vo=ho;function yo(e,t){var n=e.type.contextTypes;if(!n)return ho;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var o,i={};for(o in n)i[o]=t[o];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=i),i}function wo(e){return null!=(e=e.childContextTypes)}function ko(){fo(bo),fo(go)}function xo(e,t,n){if(go.current!==ho)throw Error(a(168));mo(go,t),mo(bo,n)}function Eo(e,t,n){var r=e.stateNode;if(e=t.childContextTypes,"function"!=typeof r.getChildContext)return n;for(var i in r=r.getChildContext())if(!(i in e))throw Error(a(108,ge(t)||"Unknown",i));return o({},n,{},r)}function To(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||ho,vo=go.current,mo(go,e),mo(bo,bo.current),!0}function So(e,t,n){var r=e.stateNode;if(!r)throw Error(a(169));n?(e=Eo(e,t,vo),r.__reactInternalMemoizedMergedChildContext=e,fo(bo),fo(go),mo(go,e)):fo(bo),mo(bo,n)}var Do=i.unstable_runWithPriority,Co=i.unstable_scheduleCallback,Ao=i.unstable_cancelCallback,_o=i.unstable_requestPaint,Ro=i.unstable_now,Oo=i.unstable_getCurrentPriorityLevel,Po=i.unstable_ImmediatePriority,No=i.unstable_UserBlockingPriority,Io=i.unstable_NormalPriority,Mo=i.unstable_LowPriority,jo=i.unstable_IdlePriority,Lo={},Fo=i.unstable_shouldYield,zo=void 0!==_o?_o:function(){},Bo=null,Uo=null,$o=!1,qo=Ro(),Ho=1e4>qo?Ro:function(){return Ro()-qo};function Go(){switch(Oo()){case Po:return 99;case No:return 98;case Io:return 97;case Mo:return 96;case jo:return 95;default:throw Error(a(332))}}function Wo(e){switch(e){case 99:return Po;case 98:return No;case 97:return Io;case 96:return Mo;case 95:return jo;default:throw Error(a(332))}}function Vo(e,t){return e=Wo(e),Do(e,t)}function Ko(e,t,n){return e=Wo(e),Co(e,t,n)}function Yo(e){return null===Bo?(Bo=[e],Uo=Co(Po,Xo)):Bo.push(e),Lo}function Qo(){if(null!==Uo){var e=Uo;Uo=null,Ao(e)}Xo()}function Xo(){if(!$o&&null!==Bo){$o=!0;var e=0;try{var t=Bo;Vo(99,(function(){for(;e<t.length;e++){var n=t[e];do{n=n(!0)}while(null!==n)}})),Bo=null}catch(n){throw null!==Bo&&(Bo=Bo.slice(e+1)),Co(Po,Qo),n}finally{$o=!1}}}function Jo(e,t,n){return 1073741821-(1+((1073741821-e+t/10)/(n/=10)|0))*n}function Zo(e,t){if(e&&e.defaultProps)for(var n in t=o({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}var ei={current:null},ti=null,ni=null,ri=null;function oi(){ri=ni=ti=null}function ii(e){var t=ei.current;fo(ei),e.type._context._currentValue=t}function ai(e,t){for(;null!==e;){var n=e.alternate;if(e.childExpirationTime<t)e.childExpirationTime=t,null!==n&&n.childExpirationTime<t&&(n.childExpirationTime=t);else{if(!(null!==n&&n.childExpirationTime<t))break;n.childExpirationTime=t}e=e.return}}function si(e,t){ti=e,ri=ni=null,null!==(e=e.dependencies)&&null!==e.firstContext&&(e.expirationTime>=t&&(Ia=!0),e.firstContext=null)}function li(e,t){if(ri!==e&&!1!==t&&0!==t)if("number"==typeof t&&1073741823!==t||(ri=e,t=1073741823),t={context:e,observedBits:t,next:null},null===ni){if(null===ti)throw Error(a(308));ni=t,ti.dependencies={expirationTime:0,firstContext:t,responders:null}}else ni=ni.next=t;return e._currentValue}var ci=!1;function ui(e){e.updateQueue={baseState:e.memoizedState,baseQueue:null,shared:{pending:null},effects:null}}function di(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,baseQueue:e.baseQueue,shared:e.shared,effects:e.effects})}function pi(e,t){return(e={expirationTime:e,suspenseConfig:t,tag:0,payload:null,callback:null,next:null}).next=e}function fi(e,t){if(null!==(e=e.updateQueue)){var n=(e=e.shared).pending;null===n?t.next=t:(t.next=n.next,n.next=t),e.pending=t}}function mi(e,t){var n=e.alternate;null!==n&&di(n,e),null===(n=(e=e.updateQueue).baseQueue)?(e.baseQueue=t.next=t,t.next=t):(t.next=n.next,n.next=t)}function hi(e,t,n,r){var i=e.updateQueue;ci=!1;var a=i.baseQueue,s=i.shared.pending;if(null!==s){if(null!==a){var l=a.next;a.next=s.next,s.next=l}a=s,i.shared.pending=null,null!==(l=e.alternate)&&(null!==(l=l.updateQueue)&&(l.baseQueue=s))}if(null!==a){l=a.next;var c=i.baseState,u=0,d=null,p=null,f=null;if(null!==l)for(var m=l;;){if((s=m.expirationTime)<r){var h={expirationTime:m.expirationTime,suspenseConfig:m.suspenseConfig,tag:m.tag,payload:m.payload,callback:m.callback,next:null};null===f?(p=f=h,d=c):f=f.next=h,s>u&&(u=s)}else{null!==f&&(f=f.next={expirationTime:1073741823,suspenseConfig:m.suspenseConfig,tag:m.tag,payload:m.payload,callback:m.callback,next:null}),fl(s,m.suspenseConfig);e:{var g=e,b=m;switch(s=t,h=n,b.tag){case 1:if("function"==typeof(g=b.payload)){c=g.call(h,c,s);break e}c=g;break e;case 3:g.effectTag=-4097&g.effectTag|64;case 0:if(null==(s="function"==typeof(g=b.payload)?g.call(h,c,s):g))break e;c=o({},c,s);break e;case 2:ci=!0}}null!==m.callback&&(e.effectTag|=32,null===(s=i.effects)?i.effects=[m]:s.push(m))}if(null===(m=m.next)||m===l){if(null===(s=i.shared.pending))break;m=a.next=s.next,s.next=l,i.baseQueue=a=s,i.shared.pending=null}}null===f?d=c:f.next=p,i.baseState=d,i.baseQueue=f,ml(u),e.expirationTime=u,e.memoizedState=c}}function gi(e,t,n){if(e=t.effects,t.effects=null,null!==e)for(t=0;t<e.length;t++){var r=e[t],o=r.callback;if(null!==o){if(r.callback=null,r=o,o=n,"function"!=typeof r)throw Error(a(191,r));r.call(o)}}}var bi=Q.ReactCurrentBatchConfig,vi=(new r.Component).refs;function yi(e,t,n,r){n=null==(n=n(r,t=e.memoizedState))?t:o({},t,n),e.memoizedState=n,0===e.expirationTime&&(e.updateQueue.baseState=n)}var wi={isMounted:function(e){return!!(e=e._reactInternalFiber)&&et(e)===e},enqueueSetState:function(e,t,n){e=e._reactInternalFiber;var r=el(),o=bi.suspense;(o=pi(r=tl(r,e,o),o)).payload=t,null!=n&&(o.callback=n),fi(e,o),nl(e,r)},enqueueReplaceState:function(e,t,n){e=e._reactInternalFiber;var r=el(),o=bi.suspense;(o=pi(r=tl(r,e,o),o)).tag=1,o.payload=t,null!=n&&(o.callback=n),fi(e,o),nl(e,r)},enqueueForceUpdate:function(e,t){e=e._reactInternalFiber;var n=el(),r=bi.suspense;(r=pi(n=tl(n,e,r),r)).tag=2,null!=t&&(r.callback=t),fi(e,r),nl(e,n)}};function ki(e,t,n,r,o,i,a){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,i,a):!t.prototype||!t.prototype.isPureReactComponent||(!qr(n,r)||!qr(o,i))}function xi(e,t,n){var r=!1,o=ho,i=t.contextType;return"object"==typeof i&&null!==i?i=li(i):(o=wo(t)?vo:go.current,i=(r=null!=(r=t.contextTypes))?yo(e,o):ho),t=new t(n,i),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=wi,e.stateNode=t,t._reactInternalFiber=e,r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=o,e.__reactInternalMemoizedMaskedChildContext=i),t}function Ei(e,t,n,r){e=t.state,"function"==typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,r),"function"==typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&wi.enqueueReplaceState(t,t.state,null)}function Ti(e,t,n,r){var o=e.stateNode;o.props=n,o.state=e.memoizedState,o.refs=vi,ui(e);var i=t.contextType;"object"==typeof i&&null!==i?o.context=li(i):(i=wo(t)?vo:go.current,o.context=yo(e,i)),hi(e,n,o,r),o.state=e.memoizedState,"function"==typeof(i=t.getDerivedStateFromProps)&&(yi(e,t,i,n),o.state=e.memoizedState),"function"==typeof t.getDerivedStateFromProps||"function"==typeof o.getSnapshotBeforeUpdate||"function"!=typeof o.UNSAFE_componentWillMount&&"function"!=typeof o.componentWillMount||(t=o.state,"function"==typeof o.componentWillMount&&o.componentWillMount(),"function"==typeof o.UNSAFE_componentWillMount&&o.UNSAFE_componentWillMount(),t!==o.state&&wi.enqueueReplaceState(o,o.state,null),hi(e,n,o,r),o.state=e.memoizedState),"function"==typeof o.componentDidMount&&(e.effectTag|=4)}var Si=Array.isArray;function Di(e,t,n){if(null!==(e=n.ref)&&"function"!=typeof e&&"object"!=typeof e){if(n._owner){if(n=n._owner){if(1!==n.tag)throw Error(a(309));var r=n.stateNode}if(!r)throw Error(a(147,e));var o=""+e;return null!==t&&null!==t.ref&&"function"==typeof t.ref&&t.ref._stringRef===o?t.ref:((t=function(e){var t=r.refs;t===vi&&(t=r.refs={}),null===e?delete t[o]:t[o]=e})._stringRef=o,t)}if("string"!=typeof e)throw Error(a(284));if(!n._owner)throw Error(a(290,e))}return e}function Ci(e,t){if("textarea"!==e.type)throw Error(a(31,"[object Object]"===Object.prototype.toString.call(t)?"object with keys {"+Object.keys(t).join(", ")+"}":t,""))}function Ai(e){function t(t,n){if(e){var r=t.lastEffect;null!==r?(r.nextEffect=n,t.lastEffect=n):t.firstEffect=t.lastEffect=n,n.nextEffect=null,n.effectTag=8}}function n(n,r){if(!e)return null;for(;null!==r;)t(n,r),r=r.sibling;return null}function r(e,t){for(e=new Map;null!==t;)null!==t.key?e.set(t.key,t):e.set(t.index,t),t=t.sibling;return e}function o(e,t){return(e=Il(e,t)).index=0,e.sibling=null,e}function i(t,n,r){return t.index=r,e?null!==(r=t.alternate)?(r=r.index)<n?(t.effectTag=2,n):r:(t.effectTag=2,n):n}function s(t){return e&&null===t.alternate&&(t.effectTag=2),t}function l(e,t,n,r){return null===t||6!==t.tag?((t=Ll(n,e.mode,r)).return=e,t):((t=o(t,n)).return=e,t)}function c(e,t,n,r){return null!==t&&t.elementType===n.type?((r=o(t,n.props)).ref=Di(e,t,n),r.return=e,r):((r=Ml(n.type,n.key,n.props,null,e.mode,r)).ref=Di(e,t,n),r.return=e,r)}function u(e,t,n,r){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=Fl(n,e.mode,r)).return=e,t):((t=o(t,n.children||[])).return=e,t)}function d(e,t,n,r,i){return null===t||7!==t.tag?((t=jl(n,e.mode,r,i)).return=e,t):((t=o(t,n)).return=e,t)}function p(e,t,n){if("string"==typeof t||"number"==typeof t)return(t=Ll(""+t,e.mode,n)).return=e,t;if("object"==typeof t&&null!==t){switch(t.$$typeof){case ee:return(n=Ml(t.type,t.key,t.props,null,e.mode,n)).ref=Di(e,null,t),n.return=e,n;case te:return(t=Fl(t,e.mode,n)).return=e,t}if(Si(t)||he(t))return(t=jl(t,e.mode,n,null)).return=e,t;Ci(e,t)}return null}function f(e,t,n,r){var o=null!==t?t.key:null;if("string"==typeof n||"number"==typeof n)return null!==o?null:l(e,t,""+n,r);if("object"==typeof n&&null!==n){switch(n.$$typeof){case ee:return n.key===o?n.type===ne?d(e,t,n.props.children,r,o):c(e,t,n,r):null;case te:return n.key===o?u(e,t,n,r):null}if(Si(n)||he(n))return null!==o?null:d(e,t,n,r,null);Ci(e,n)}return null}function m(e,t,n,r,o){if("string"==typeof r||"number"==typeof r)return l(t,e=e.get(n)||null,""+r,o);if("object"==typeof r&&null!==r){switch(r.$$typeof){case ee:return e=e.get(null===r.key?n:r.key)||null,r.type===ne?d(t,e,r.props.children,o,r.key):c(t,e,r,o);case te:return u(t,e=e.get(null===r.key?n:r.key)||null,r,o)}if(Si(r)||he(r))return d(t,e=e.get(n)||null,r,o,null);Ci(t,r)}return null}function h(o,a,s,l){for(var c=null,u=null,d=a,h=a=0,g=null;null!==d&&h<s.length;h++){d.index>h?(g=d,d=null):g=d.sibling;var b=f(o,d,s[h],l);if(null===b){null===d&&(d=g);break}e&&d&&null===b.alternate&&t(o,d),a=i(b,a,h),null===u?c=b:u.sibling=b,u=b,d=g}if(h===s.length)return n(o,d),c;if(null===d){for(;h<s.length;h++)null!==(d=p(o,s[h],l))&&(a=i(d,a,h),null===u?c=d:u.sibling=d,u=d);return c}for(d=r(o,d);h<s.length;h++)null!==(g=m(d,o,h,s[h],l))&&(e&&null!==g.alternate&&d.delete(null===g.key?h:g.key),a=i(g,a,h),null===u?c=g:u.sibling=g,u=g);return e&&d.forEach((function(e){return t(o,e)})),c}function g(o,s,l,c){var u=he(l);if("function"!=typeof u)throw Error(a(150));if(null==(l=u.call(l)))throw Error(a(151));for(var d=u=null,h=s,g=s=0,b=null,v=l.next();null!==h&&!v.done;g++,v=l.next()){h.index>g?(b=h,h=null):b=h.sibling;var y=f(o,h,v.value,c);if(null===y){null===h&&(h=b);break}e&&h&&null===y.alternate&&t(o,h),s=i(y,s,g),null===d?u=y:d.sibling=y,d=y,h=b}if(v.done)return n(o,h),u;if(null===h){for(;!v.done;g++,v=l.next())null!==(v=p(o,v.value,c))&&(s=i(v,s,g),null===d?u=v:d.sibling=v,d=v);return u}for(h=r(o,h);!v.done;g++,v=l.next())null!==(v=m(h,o,g,v.value,c))&&(e&&null!==v.alternate&&h.delete(null===v.key?g:v.key),s=i(v,s,g),null===d?u=v:d.sibling=v,d=v);return e&&h.forEach((function(e){return t(o,e)})),u}return function(e,r,i,l){var c="object"==typeof i&&null!==i&&i.type===ne&&null===i.key;c&&(i=i.props.children);var u="object"==typeof i&&null!==i;if(u)switch(i.$$typeof){case ee:e:{for(u=i.key,c=r;null!==c;){if(c.key===u){switch(c.tag){case 7:if(i.type===ne){n(e,c.sibling),(r=o(c,i.props.children)).return=e,e=r;break e}break;default:if(c.elementType===i.type){n(e,c.sibling),(r=o(c,i.props)).ref=Di(e,c,i),r.return=e,e=r;break e}}n(e,c);break}t(e,c),c=c.sibling}i.type===ne?((r=jl(i.props.children,e.mode,l,i.key)).return=e,e=r):((l=Ml(i.type,i.key,i.props,null,e.mode,l)).ref=Di(e,r,i),l.return=e,e=l)}return s(e);case te:e:{for(c=i.key;null!==r;){if(r.key===c){if(4===r.tag&&r.stateNode.containerInfo===i.containerInfo&&r.stateNode.implementation===i.implementation){n(e,r.sibling),(r=o(r,i.children||[])).return=e,e=r;break e}n(e,r);break}t(e,r),r=r.sibling}(r=Fl(i,e.mode,l)).return=e,e=r}return s(e)}if("string"==typeof i||"number"==typeof i)return i=""+i,null!==r&&6===r.tag?(n(e,r.sibling),(r=o(r,i)).return=e,e=r):(n(e,r),(r=Ll(i,e.mode,l)).return=e,e=r),s(e);if(Si(i))return h(e,r,i,l);if(he(i))return g(e,r,i,l);if(u&&Ci(e,i),void 0===i&&!c)switch(e.tag){case 1:case 0:throw e=e.type,Error(a(152,e.displayName||e.name||"Component"))}return n(e,r)}}var _i=Ai(!0),Ri=Ai(!1),Oi={},Pi={current:Oi},Ni={current:Oi},Ii={current:Oi};function Mi(e){if(e===Oi)throw Error(a(174));return e}function ji(e,t){switch(mo(Ii,t),mo(Ni,e),mo(Pi,Oi),e=t.nodeType){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:Le(null,"");break;default:t=Le(t=(e=8===e?t.parentNode:t).namespaceURI||null,e=e.tagName)}fo(Pi),mo(Pi,t)}function Li(){fo(Pi),fo(Ni),fo(Ii)}function Fi(e){Mi(Ii.current);var t=Mi(Pi.current),n=Le(t,e.type);t!==n&&(mo(Ni,e),mo(Pi,n))}function zi(e){Ni.current===e&&(fo(Pi),fo(Ni))}var Bi={current:0};function Ui(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||n.data===bn||n.data===vn))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(0!=(64&t.effectTag))return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}function $i(e,t){return{responder:e,props:t}}var qi=Q.ReactCurrentDispatcher,Hi=Q.ReactCurrentBatchConfig,Gi=0,Wi=null,Vi=null,Ki=null,Yi=!1;function Qi(){throw Error(a(321))}function Xi(e,t){if(null===t)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!Ur(e[n],t[n]))return!1;return!0}function Ji(e,t,n,r,o,i){if(Gi=i,Wi=t,t.memoizedState=null,t.updateQueue=null,t.expirationTime=0,qi.current=null===e||null===e.memoizedState?ka:xa,e=n(r,o),t.expirationTime===Gi){i=0;do{if(t.expirationTime=0,!(25>i))throw Error(a(301));i+=1,Ki=Vi=null,t.updateQueue=null,qi.current=Ea,e=n(r,o)}while(t.expirationTime===Gi)}if(qi.current=wa,t=null!==Vi&&null!==Vi.next,Gi=0,Ki=Vi=Wi=null,Yi=!1,t)throw Error(a(300));return e}function Zi(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===Ki?Wi.memoizedState=Ki=e:Ki=Ki.next=e,Ki}function ea(){if(null===Vi){var e=Wi.alternate;e=null!==e?e.memoizedState:null}else e=Vi.next;var t=null===Ki?Wi.memoizedState:Ki.next;if(null!==t)Ki=t,Vi=e;else{if(null===e)throw Error(a(310));e={memoizedState:(Vi=e).memoizedState,baseState:Vi.baseState,baseQueue:Vi.baseQueue,queue:Vi.queue,next:null},null===Ki?Wi.memoizedState=Ki=e:Ki=Ki.next=e}return Ki}function ta(e,t){return"function"==typeof t?t(e):t}function na(e){var t=ea(),n=t.queue;if(null===n)throw Error(a(311));n.lastRenderedReducer=e;var r=Vi,o=r.baseQueue,i=n.pending;if(null!==i){if(null!==o){var s=o.next;o.next=i.next,i.next=s}r.baseQueue=o=i,n.pending=null}if(null!==o){o=o.next,r=r.baseState;var l=s=i=null,c=o;do{var u=c.expirationTime;if(u<Gi){var d={expirationTime:c.expirationTime,suspenseConfig:c.suspenseConfig,action:c.action,eagerReducer:c.eagerReducer,eagerState:c.eagerState,next:null};null===l?(s=l=d,i=r):l=l.next=d,u>Wi.expirationTime&&(Wi.expirationTime=u,ml(u))}else null!==l&&(l=l.next={expirationTime:1073741823,suspenseConfig:c.suspenseConfig,action:c.action,eagerReducer:c.eagerReducer,eagerState:c.eagerState,next:null}),fl(u,c.suspenseConfig),r=c.eagerReducer===e?c.eagerState:e(r,c.action);c=c.next}while(null!==c&&c!==o);null===l?i=r:l.next=s,Ur(r,t.memoizedState)||(Ia=!0),t.memoizedState=r,t.baseState=i,t.baseQueue=l,n.lastRenderedState=r}return[t.memoizedState,n.dispatch]}function ra(e){var t=ea(),n=t.queue;if(null===n)throw Error(a(311));n.lastRenderedReducer=e;var r=n.dispatch,o=n.pending,i=t.memoizedState;if(null!==o){n.pending=null;var s=o=o.next;do{i=e(i,s.action),s=s.next}while(s!==o);Ur(i,t.memoizedState)||(Ia=!0),t.memoizedState=i,null===t.baseQueue&&(t.baseState=i),n.lastRenderedState=i}return[i,r]}function oa(e){var t=Zi();return"function"==typeof e&&(e=e()),t.memoizedState=t.baseState=e,e=(e=t.queue={pending:null,dispatch:null,lastRenderedReducer:ta,lastRenderedState:e}).dispatch=ya.bind(null,Wi,e),[t.memoizedState,e]}function ia(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},null===(t=Wi.updateQueue)?(t={lastEffect:null},Wi.updateQueue=t,t.lastEffect=e.next=e):null===(n=t.lastEffect)?t.lastEffect=e.next=e:(r=n.next,n.next=e,e.next=r,t.lastEffect=e),e}function aa(){return ea().memoizedState}function sa(e,t,n,r){var o=Zi();Wi.effectTag|=e,o.memoizedState=ia(1|t,n,void 0,void 0===r?null:r)}function la(e,t,n,r){var o=ea();r=void 0===r?null:r;var i=void 0;if(null!==Vi){var a=Vi.memoizedState;if(i=a.destroy,null!==r&&Xi(r,a.deps))return void ia(t,n,i,r)}Wi.effectTag|=e,o.memoizedState=ia(1|t,n,i,r)}function ca(e,t){return sa(516,4,e,t)}function ua(e,t){return la(516,4,e,t)}function da(e,t){return la(4,2,e,t)}function pa(e,t){return"function"==typeof t?(e=e(),t(e),function(){t(null)}):null!=t?(e=e(),t.current=e,function(){t.current=null}):void 0}function fa(e,t,n){return n=null!=n?n.concat([e]):null,la(4,2,pa.bind(null,t,e),n)}function ma(){}function ha(e,t){return Zi().memoizedState=[e,void 0===t?null:t],e}function ga(e,t){var n=ea();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&Xi(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function ba(e,t){var n=ea();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&Xi(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)}function va(e,t,n){var r=Go();Vo(98>r?98:r,(function(){e(!0)})),Vo(97<r?97:r,(function(){var r=Hi.suspense;Hi.suspense=void 0===t?null:t;try{e(!1),n()}finally{Hi.suspense=r}}))}function ya(e,t,n){var r=el(),o=bi.suspense;o={expirationTime:r=tl(r,e,o),suspenseConfig:o,action:n,eagerReducer:null,eagerState:null,next:null};var i=t.pending;if(null===i?o.next=o:(o.next=i.next,i.next=o),t.pending=o,i=e.alternate,e===Wi||null!==i&&i===Wi)Yi=!0,o.expirationTime=Gi,Wi.expirationTime=Gi;else{if(0===e.expirationTime&&(null===i||0===i.expirationTime)&&null!==(i=t.lastRenderedReducer))try{var a=t.lastRenderedState,s=i(a,n);if(o.eagerReducer=i,o.eagerState=s,Ur(s,a))return}catch(l){}nl(e,r)}}var wa={readContext:li,useCallback:Qi,useContext:Qi,useEffect:Qi,useImperativeHandle:Qi,useLayoutEffect:Qi,useMemo:Qi,useReducer:Qi,useRef:Qi,useState:Qi,useDebugValue:Qi,useResponder:Qi,useDeferredValue:Qi,useTransition:Qi},ka={readContext:li,useCallback:ha,useContext:li,useEffect:ca,useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,sa(4,2,pa.bind(null,t,e),n)},useLayoutEffect:function(e,t){return sa(4,2,e,t)},useMemo:function(e,t){var n=Zi();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Zi();return t=void 0!==n?n(t):t,r.memoizedState=r.baseState=t,e=(e=r.queue={pending:null,dispatch:null,lastRenderedReducer:e,lastRenderedState:t}).dispatch=ya.bind(null,Wi,e),[r.memoizedState,e]},useRef:function(e){return e={current:e},Zi().memoizedState=e},useState:oa,useDebugValue:ma,useResponder:$i,useDeferredValue:function(e,t){var n=oa(e),r=n[0],o=n[1];return ca((function(){var n=Hi.suspense;Hi.suspense=void 0===t?null:t;try{o(e)}finally{Hi.suspense=n}}),[e,t]),r},useTransition:function(e){var t=oa(!1),n=t[0];return t=t[1],[ha(va.bind(null,t,e),[t,e]),n]}},xa={readContext:li,useCallback:ga,useContext:li,useEffect:ua,useImperativeHandle:fa,useLayoutEffect:da,useMemo:ba,useReducer:na,useRef:aa,useState:function(){return na(ta)},useDebugValue:ma,useResponder:$i,useDeferredValue:function(e,t){var n=na(ta),r=n[0],o=n[1];return ua((function(){var n=Hi.suspense;Hi.suspense=void 0===t?null:t;try{o(e)}finally{Hi.suspense=n}}),[e,t]),r},useTransition:function(e){var t=na(ta),n=t[0];return t=t[1],[ga(va.bind(null,t,e),[t,e]),n]}},Ea={readContext:li,useCallback:ga,useContext:li,useEffect:ua,useImperativeHandle:fa,useLayoutEffect:da,useMemo:ba,useReducer:ra,useRef:aa,useState:function(){return ra(ta)},useDebugValue:ma,useResponder:$i,useDeferredValue:function(e,t){var n=ra(ta),r=n[0],o=n[1];return ua((function(){var n=Hi.suspense;Hi.suspense=void 0===t?null:t;try{o(e)}finally{Hi.suspense=n}}),[e,t]),r},useTransition:function(e){var t=ra(ta),n=t[0];return t=t[1],[ga(va.bind(null,t,e),[t,e]),n]}},Ta=null,Sa=null,Da=!1;function Ca(e,t){var n=Pl(5,null,null,0);n.elementType="DELETED",n.type="DELETED",n.stateNode=t,n.return=e,n.effectTag=8,null!==e.lastEffect?(e.lastEffect.nextEffect=n,e.lastEffect=n):e.firstEffect=e.lastEffect=n}function Aa(e,t){switch(e.tag){case 5:var n=e.type;return null!==(t=1!==t.nodeType||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t)&&(e.stateNode=t,!0);case 6:return null!==(t=""===e.pendingProps||3!==t.nodeType?null:t)&&(e.stateNode=t,!0);case 13:default:return!1}}function _a(e){if(Da){var t=Sa;if(t){var n=t;if(!Aa(e,t)){if(!(t=Sn(n.nextSibling))||!Aa(e,t))return e.effectTag=-1025&e.effectTag|2,Da=!1,void(Ta=e);Ca(Ta,n)}Ta=e,Sa=Sn(t.firstChild)}else e.effectTag=-1025&e.effectTag|2,Da=!1,Ta=e}}function Ra(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag;)e=e.return;Ta=e}function Oa(e){if(e!==Ta)return!1;if(!Da)return Ra(e),Da=!0,!1;var t=e.type;if(5!==e.tag||"head"!==t&&"body"!==t&&!xn(t,e.memoizedProps))for(t=Sa;t;)Ca(e,t),t=Sn(t.nextSibling);if(Ra(e),13===e.tag){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(a(317));e:{for(e=e.nextSibling,t=0;e;){if(8===e.nodeType){var n=e.data;if("/$"===n){if(0===t){Sa=Sn(e.nextSibling);break e}t--}else"$"!==n&&n!==vn&&n!==bn||t++}e=e.nextSibling}Sa=null}}else Sa=Ta?Sn(e.stateNode.nextSibling):null;return!0}function Pa(){Sa=Ta=null,Da=!1}var Na=Q.ReactCurrentOwner,Ia=!1;function Ma(e,t,n,r){t.child=null===e?Ri(t,null,n,r):_i(t,e.child,n,r)}function ja(e,t,n,r,o){n=n.render;var i=t.ref;return si(t,o),r=Ji(e,t,n,r,i,o),null===e||Ia?(t.effectTag|=1,Ma(e,t,r,o),t.child):(t.updateQueue=e.updateQueue,t.effectTag&=-517,e.expirationTime<=o&&(e.expirationTime=0),Ja(e,t,o))}function La(e,t,n,r,o,i){if(null===e){var a=n.type;return"function"!=typeof a||Nl(a)||void 0!==a.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=Ml(n.type,null,r,null,t.mode,i)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=a,Fa(e,t,a,r,o,i))}return a=e.child,o<i&&(o=a.memoizedProps,(n=null!==(n=n.compare)?n:qr)(o,r)&&e.ref===t.ref)?Ja(e,t,i):(t.effectTag|=1,(e=Il(a,r)).ref=t.ref,e.return=t,t.child=e)}function Fa(e,t,n,r,o,i){return null!==e&&qr(e.memoizedProps,r)&&e.ref===t.ref&&(Ia=!1,o<i)?(t.expirationTime=e.expirationTime,Ja(e,t,i)):Ba(e,t,n,r,i)}function za(e,t){var n=t.ref;(null===e&&null!==n||null!==e&&e.ref!==n)&&(t.effectTag|=128)}function Ba(e,t,n,r,o){var i=wo(n)?vo:go.current;return i=yo(t,i),si(t,o),n=Ji(e,t,n,r,i,o),null===e||Ia?(t.effectTag|=1,Ma(e,t,n,o),t.child):(t.updateQueue=e.updateQueue,t.effectTag&=-517,e.expirationTime<=o&&(e.expirationTime=0),Ja(e,t,o))}function Ua(e,t,n,r,o){if(wo(n)){var i=!0;To(t)}else i=!1;if(si(t,o),null===t.stateNode)null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),xi(t,n,r),Ti(t,n,r,o),r=!0;else if(null===e){var a=t.stateNode,s=t.memoizedProps;a.props=s;var l=a.context,c=n.contextType;"object"==typeof c&&null!==c?c=li(c):c=yo(t,c=wo(n)?vo:go.current);var u=n.getDerivedStateFromProps,d="function"==typeof u||"function"==typeof a.getSnapshotBeforeUpdate;d||"function"!=typeof a.UNSAFE_componentWillReceiveProps&&"function"!=typeof a.componentWillReceiveProps||(s!==r||l!==c)&&Ei(t,a,r,c),ci=!1;var p=t.memoizedState;a.state=p,hi(t,r,a,o),l=t.memoizedState,s!==r||p!==l||bo.current||ci?("function"==typeof u&&(yi(t,n,u,r),l=t.memoizedState),(s=ci||ki(t,n,s,r,p,l,c))?(d||"function"!=typeof a.UNSAFE_componentWillMount&&"function"!=typeof a.componentWillMount||("function"==typeof a.componentWillMount&&a.componentWillMount(),"function"==typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount()),"function"==typeof a.componentDidMount&&(t.effectTag|=4)):("function"==typeof a.componentDidMount&&(t.effectTag|=4),t.memoizedProps=r,t.memoizedState=l),a.props=r,a.state=l,a.context=c,r=s):("function"==typeof a.componentDidMount&&(t.effectTag|=4),r=!1)}else a=t.stateNode,di(e,t),s=t.memoizedProps,a.props=t.type===t.elementType?s:Zo(t.type,s),l=a.context,"object"==typeof(c=n.contextType)&&null!==c?c=li(c):c=yo(t,c=wo(n)?vo:go.current),(d="function"==typeof(u=n.getDerivedStateFromProps)||"function"==typeof a.getSnapshotBeforeUpdate)||"function"!=typeof a.UNSAFE_componentWillReceiveProps&&"function"!=typeof a.componentWillReceiveProps||(s!==r||l!==c)&&Ei(t,a,r,c),ci=!1,l=t.memoizedState,a.state=l,hi(t,r,a,o),p=t.memoizedState,s!==r||l!==p||bo.current||ci?("function"==typeof u&&(yi(t,n,u,r),p=t.memoizedState),(u=ci||ki(t,n,s,r,l,p,c))?(d||"function"!=typeof a.UNSAFE_componentWillUpdate&&"function"!=typeof a.componentWillUpdate||("function"==typeof a.componentWillUpdate&&a.componentWillUpdate(r,p,c),"function"==typeof a.UNSAFE_componentWillUpdate&&a.UNSAFE_componentWillUpdate(r,p,c)),"function"==typeof a.componentDidUpdate&&(t.effectTag|=4),"function"==typeof a.getSnapshotBeforeUpdate&&(t.effectTag|=256)):("function"!=typeof a.componentDidUpdate||s===e.memoizedProps&&l===e.memoizedState||(t.effectTag|=4),"function"!=typeof a.getSnapshotBeforeUpdate||s===e.memoizedProps&&l===e.memoizedState||(t.effectTag|=256),t.memoizedProps=r,t.memoizedState=p),a.props=r,a.state=p,a.context=c,r=u):("function"!=typeof a.componentDidUpdate||s===e.memoizedProps&&l===e.memoizedState||(t.effectTag|=4),"function"!=typeof a.getSnapshotBeforeUpdate||s===e.memoizedProps&&l===e.memoizedState||(t.effectTag|=256),r=!1);return $a(e,t,n,r,i,o)}function $a(e,t,n,r,o,i){za(e,t);var a=0!=(64&t.effectTag);if(!r&&!a)return o&&So(t,n,!1),Ja(e,t,i);r=t.stateNode,Na.current=t;var s=a&&"function"!=typeof n.getDerivedStateFromError?null:r.render();return t.effectTag|=1,null!==e&&a?(t.child=_i(t,e.child,null,i),t.child=_i(t,null,s,i)):Ma(e,t,s,i),t.memoizedState=r.state,o&&So(t,n,!0),t.child}function qa(e){var t=e.stateNode;t.pendingContext?xo(0,t.pendingContext,t.pendingContext!==t.context):t.context&&xo(0,t.context,!1),ji(e,t.containerInfo)}var Ha,Ga,Wa,Va={dehydrated:null,retryTime:0};function Ka(e,t,n){var r,o=t.mode,i=t.pendingProps,a=Bi.current,s=!1;if((r=0!=(64&t.effectTag))||(r=0!=(2&a)&&(null===e||null!==e.memoizedState)),r?(s=!0,t.effectTag&=-65):null!==e&&null===e.memoizedState||void 0===i.fallback||!0===i.unstable_avoidThisFallback||(a|=1),mo(Bi,1&a),null===e){if(void 0!==i.fallback&&_a(t),s){if(s=i.fallback,(i=jl(null,o,0,null)).return=t,0==(2&t.mode))for(e=null!==t.memoizedState?t.child.child:t.child,i.child=e;null!==e;)e.return=i,e=e.sibling;return(n=jl(s,o,n,null)).return=t,i.sibling=n,t.memoizedState=Va,t.child=i,n}return o=i.children,t.memoizedState=null,t.child=Ri(t,null,o,n)}if(null!==e.memoizedState){if(o=(e=e.child).sibling,s){if(i=i.fallback,(n=Il(e,e.pendingProps)).return=t,0==(2&t.mode)&&(s=null!==t.memoizedState?t.child.child:t.child)!==e.child)for(n.child=s;null!==s;)s.return=n,s=s.sibling;return(o=Il(o,i)).return=t,n.sibling=o,n.childExpirationTime=0,t.memoizedState=Va,t.child=n,o}return n=_i(t,e.child,i.children,n),t.memoizedState=null,t.child=n}if(e=e.child,s){if(s=i.fallback,(i=jl(null,o,0,null)).return=t,i.child=e,null!==e&&(e.return=i),0==(2&t.mode))for(e=null!==t.memoizedState?t.child.child:t.child,i.child=e;null!==e;)e.return=i,e=e.sibling;return(n=jl(s,o,n,null)).return=t,i.sibling=n,n.effectTag|=2,i.childExpirationTime=0,t.memoizedState=Va,t.child=i,n}return t.memoizedState=null,t.child=_i(t,e,i.children,n)}function Ya(e,t){e.expirationTime<t&&(e.expirationTime=t);var n=e.alternate;null!==n&&n.expirationTime<t&&(n.expirationTime=t),ai(e.return,t)}function Qa(e,t,n,r,o,i){var a=e.memoizedState;null===a?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailExpiration:0,tailMode:o,lastEffect:i}:(a.isBackwards=t,a.rendering=null,a.renderingStartTime=0,a.last=r,a.tail=n,a.tailExpiration=0,a.tailMode=o,a.lastEffect=i)}function Xa(e,t,n){var r=t.pendingProps,o=r.revealOrder,i=r.tail;if(Ma(e,t,r.children,n),0!=(2&(r=Bi.current)))r=1&r|2,t.effectTag|=64;else{if(null!==e&&0!=(64&e.effectTag))e:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&Ya(e,n);else if(19===e.tag)Ya(e,n);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;null===e.sibling;){if(null===e.return||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}if(mo(Bi,r),0==(2&t.mode))t.memoizedState=null;else switch(o){case"forwards":for(n=t.child,o=null;null!==n;)null!==(e=n.alternate)&&null===Ui(e)&&(o=n),n=n.sibling;null===(n=o)?(o=t.child,t.child=null):(o=n.sibling,n.sibling=null),Qa(t,!1,o,n,i,t.lastEffect);break;case"backwards":for(n=null,o=t.child,t.child=null;null!==o;){if(null!==(e=o.alternate)&&null===Ui(e)){t.child=o;break}e=o.sibling,o.sibling=n,n=o,o=e}Qa(t,!0,n,null,i,t.lastEffect);break;case"together":Qa(t,!1,null,null,void 0,t.lastEffect);break;default:t.memoizedState=null}return t.child}function Ja(e,t,n){null!==e&&(t.dependencies=e.dependencies);var r=t.expirationTime;if(0!==r&&ml(r),t.childExpirationTime<n)return null;if(null!==e&&t.child!==e.child)throw Error(a(153));if(null!==t.child){for(n=Il(e=t.child,e.pendingProps),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=Il(e,e.pendingProps)).return=t;n.sibling=null}return t.child}function Za(e,t){switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;null!==t;)null!==t.alternate&&(n=t),t=t.sibling;null===n?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var r=null;null!==n;)null!==n.alternate&&(r=n),n=n.sibling;null===r?t||null===e.tail?e.tail=null:e.tail.sibling=null:r.sibling=null}}function es(e,t,n){var r=t.pendingProps;switch(t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:return wo(t.type)&&ko(),null;case 3:return Li(),fo(bo),fo(go),(n=t.stateNode).pendingContext&&(n.context=n.pendingContext,n.pendingContext=null),null!==e&&null!==e.child||!Oa(t)||(t.effectTag|=4),null;case 5:zi(t),n=Mi(Ii.current);var i=t.type;if(null!==e&&null!=t.stateNode)Ga(e,t,i,r,n),e.ref!==t.ref&&(t.effectTag|=128);else{if(!r){if(null===t.stateNode)throw Error(a(166));return null}if(e=Mi(Pi.current),Oa(t)){r=t.stateNode,i=t.type;var s=t.memoizedProps;switch(r[An]=t,r[_n]=s,i){case"iframe":case"object":case"embed":Kt("load",r);break;case"video":case"audio":for(e=0;e<Xe.length;e++)Kt(Xe[e],r);break;case"source":Kt("error",r);break;case"img":case"image":case"link":Kt("error",r),Kt("load",r);break;case"form":Kt("reset",r),Kt("submit",r);break;case"details":Kt("toggle",r);break;case"input":Ee(r,s),Kt("invalid",r),cn(n,"onChange");break;case"select":r._wrapperState={wasMultiple:!!s.multiple},Kt("invalid",r),cn(n,"onChange");break;case"textarea":Oe(r,s),Kt("invalid",r),cn(n,"onChange")}for(var l in an(i,s),e=null,s)if(s.hasOwnProperty(l)){var c=s[l];"children"===l?"string"==typeof c?r.textContent!==c&&(e=["children",c]):"number"==typeof c&&r.textContent!==""+c&&(e=["children",""+c]):T.hasOwnProperty(l)&&null!=c&&cn(n,l)}switch(i){case"input":we(r),De(r,s,!0);break;case"textarea":we(r),Ne(r);break;case"select":case"option":break;default:"function"==typeof s.onClick&&(r.onclick=un)}n=e,t.updateQueue=n,null!==n&&(t.effectTag|=4)}else{switch(l=9===n.nodeType?n:n.ownerDocument,e===ln&&(e=je(i)),e===ln?"script"===i?((e=l.createElement("div")).innerHTML="<script><\/script>",e=e.removeChild(e.firstChild)):"string"==typeof r.is?e=l.createElement(i,{is:r.is}):(e=l.createElement(i),"select"===i&&(l=e,r.multiple?l.multiple=!0:r.size&&(l.size=r.size))):e=l.createElementNS(e,i),e[An]=t,e[_n]=r,Ha(e,t),t.stateNode=e,l=sn(i,r),i){case"iframe":case"object":case"embed":Kt("load",e),c=r;break;case"video":case"audio":for(c=0;c<Xe.length;c++)Kt(Xe[c],e);c=r;break;case"source":Kt("error",e),c=r;break;case"img":case"image":case"link":Kt("error",e),Kt("load",e),c=r;break;case"form":Kt("reset",e),Kt("submit",e),c=r;break;case"details":Kt("toggle",e),c=r;break;case"input":Ee(e,r),c=xe(e,r),Kt("invalid",e),cn(n,"onChange");break;case"option":c=Ae(e,r);break;case"select":e._wrapperState={wasMultiple:!!r.multiple},c=o({},r,{value:void 0}),Kt("invalid",e),cn(n,"onChange");break;case"textarea":Oe(e,r),c=Re(e,r),Kt("invalid",e),cn(n,"onChange");break;default:c=r}an(i,c);var u=c;for(s in u)if(u.hasOwnProperty(s)){var d=u[s];"style"===s?rn(e,d):"dangerouslySetInnerHTML"===s?null!=(d=d?d.__html:void 0)&&Be(e,d):"children"===s?"string"==typeof d?("textarea"!==i||""!==d)&&Ue(e,d):"number"==typeof d&&Ue(e,""+d):"suppressContentEditableWarning"!==s&&"suppressHydrationWarning"!==s&&"autoFocus"!==s&&(T.hasOwnProperty(s)?null!=d&&cn(n,s):null!=d&&X(e,s,d,l))}switch(i){case"input":we(e),De(e,r,!1);break;case"textarea":we(e),Ne(e);break;case"option":null!=r.value&&e.setAttribute("value",""+ve(r.value));break;case"select":e.multiple=!!r.multiple,null!=(n=r.value)?_e(e,!!r.multiple,n,!1):null!=r.defaultValue&&_e(e,!!r.multiple,r.defaultValue,!0);break;default:"function"==typeof c.onClick&&(e.onclick=un)}kn(i,r)&&(t.effectTag|=4)}null!==t.ref&&(t.effectTag|=128)}return null;case 6:if(e&&null!=t.stateNode)Wa(0,t,e.memoizedProps,r);else{if("string"!=typeof r&&null===t.stateNode)throw Error(a(166));n=Mi(Ii.current),Mi(Pi.current),Oa(t)?(n=t.stateNode,r=t.memoizedProps,n[An]=t,n.nodeValue!==r&&(t.effectTag|=4)):((n=(9===n.nodeType?n:n.ownerDocument).createTextNode(r))[An]=t,t.stateNode=n)}return null;case 13:return fo(Bi),r=t.memoizedState,0!=(64&t.effectTag)?(t.expirationTime=n,t):(n=null!==r,r=!1,null===e?void 0!==t.memoizedProps.fallback&&Oa(t):(r=null!==(i=e.memoizedState),n||null===i||null!==(i=e.child.sibling)&&(null!==(s=t.firstEffect)?(t.firstEffect=i,i.nextEffect=s):(t.firstEffect=t.lastEffect=i,i.nextEffect=null),i.effectTag=8)),n&&!r&&0!=(2&t.mode)&&(null===e&&!0!==t.memoizedProps.unstable_avoidThisFallback||0!=(1&Bi.current)?Ms===As&&(Ms=_s):(Ms!==As&&Ms!==_s||(Ms=Rs),0!==Bs&&null!==Ps&&(Ul(Ps,Is),$l(Ps,Bs)))),(n||r)&&(t.effectTag|=4),null);case 4:return Li(),null;case 10:return ii(t),null;case 17:return wo(t.type)&&ko(),null;case 19:if(fo(Bi),null===(r=t.memoizedState))return null;if(i=0!=(64&t.effectTag),null===(s=r.rendering)){if(i)Za(r,!1);else if(Ms!==As||null!==e&&0!=(64&e.effectTag))for(s=t.child;null!==s;){if(null!==(e=Ui(s))){for(t.effectTag|=64,Za(r,!1),null!==(i=e.updateQueue)&&(t.updateQueue=i,t.effectTag|=4),null===r.lastEffect&&(t.firstEffect=null),t.lastEffect=r.lastEffect,r=t.child;null!==r;)s=n,(i=r).effectTag&=2,i.nextEffect=null,i.firstEffect=null,i.lastEffect=null,null===(e=i.alternate)?(i.childExpirationTime=0,i.expirationTime=s,i.child=null,i.memoizedProps=null,i.memoizedState=null,i.updateQueue=null,i.dependencies=null):(i.childExpirationTime=e.childExpirationTime,i.expirationTime=e.expirationTime,i.child=e.child,i.memoizedProps=e.memoizedProps,i.memoizedState=e.memoizedState,i.updateQueue=e.updateQueue,s=e.dependencies,i.dependencies=null===s?null:{expirationTime:s.expirationTime,firstContext:s.firstContext,responders:s.responders}),r=r.sibling;return mo(Bi,1&Bi.current|2),t.child}s=s.sibling}}else{if(!i)if(null!==(e=Ui(s))){if(t.effectTag|=64,i=!0,null!==(n=e.updateQueue)&&(t.updateQueue=n,t.effectTag|=4),Za(r,!0),null===r.tail&&"hidden"===r.tailMode&&!s.alternate)return null!==(t=t.lastEffect=r.lastEffect)&&(t.nextEffect=null),null}else 2*Ho()-r.renderingStartTime>r.tailExpiration&&1<n&&(t.effectTag|=64,i=!0,Za(r,!1),t.expirationTime=t.childExpirationTime=n-1);r.isBackwards?(s.sibling=t.child,t.child=s):(null!==(n=r.last)?n.sibling=s:t.child=s,r.last=s)}return null!==r.tail?(0===r.tailExpiration&&(r.tailExpiration=Ho()+500),n=r.tail,r.rendering=n,r.tail=n.sibling,r.lastEffect=t.lastEffect,r.renderingStartTime=Ho(),n.sibling=null,t=Bi.current,mo(Bi,i?1&t|2:1&t),n):null}throw Error(a(156,t.tag))}function ts(e){switch(e.tag){case 1:wo(e.type)&&ko();var t=e.effectTag;return 4096&t?(e.effectTag=-4097&t|64,e):null;case 3:if(Li(),fo(bo),fo(go),0!=(64&(t=e.effectTag)))throw Error(a(285));return e.effectTag=-4097&t|64,e;case 5:return zi(e),null;case 13:return fo(Bi),4096&(t=e.effectTag)?(e.effectTag=-4097&t|64,e):null;case 19:return fo(Bi),null;case 4:return Li(),null;case 10:return ii(e),null;default:return null}}function ns(e,t){return{value:e,source:t,stack:be(t)}}Ha=function(e,t){for(var n=t.child;null!==n;){if(5===n.tag||6===n.tag)e.appendChild(n.stateNode);else if(4!==n.tag&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===t)break;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},Ga=function(e,t,n,r,i){var a=e.memoizedProps;if(a!==r){var s,l,c=t.stateNode;switch(Mi(Pi.current),e=null,n){case"input":a=xe(c,a),r=xe(c,r),e=[];break;case"option":a=Ae(c,a),r=Ae(c,r),e=[];break;case"select":a=o({},a,{value:void 0}),r=o({},r,{value:void 0}),e=[];break;case"textarea":a=Re(c,a),r=Re(c,r),e=[];break;default:"function"!=typeof a.onClick&&"function"==typeof r.onClick&&(c.onclick=un)}for(s in an(n,r),n=null,a)if(!r.hasOwnProperty(s)&&a.hasOwnProperty(s)&&null!=a[s])if("style"===s)for(l in c=a[s])c.hasOwnProperty(l)&&(n||(n={}),n[l]="");else"dangerouslySetInnerHTML"!==s&&"children"!==s&&"suppressContentEditableWarning"!==s&&"suppressHydrationWarning"!==s&&"autoFocus"!==s&&(T.hasOwnProperty(s)?e||(e=[]):(e=e||[]).push(s,null));for(s in r){var u=r[s];if(c=null!=a?a[s]:void 0,r.hasOwnProperty(s)&&u!==c&&(null!=u||null!=c))if("style"===s)if(c){for(l in c)!c.hasOwnProperty(l)||u&&u.hasOwnProperty(l)||(n||(n={}),n[l]="");for(l in u)u.hasOwnProperty(l)&&c[l]!==u[l]&&(n||(n={}),n[l]=u[l])}else n||(e||(e=[]),e.push(s,n)),n=u;else"dangerouslySetInnerHTML"===s?(u=u?u.__html:void 0,c=c?c.__html:void 0,null!=u&&c!==u&&(e=e||[]).push(s,u)):"children"===s?c===u||"string"!=typeof u&&"number"!=typeof u||(e=e||[]).push(s,""+u):"suppressContentEditableWarning"!==s&&"suppressHydrationWarning"!==s&&(T.hasOwnProperty(s)?(null!=u&&cn(i,s),e||c===u||(e=[])):(e=e||[]).push(s,u))}n&&(e=e||[]).push("style",n),i=e,(t.updateQueue=i)&&(t.effectTag|=4)}},Wa=function(e,t,n,r){n!==r&&(t.effectTag|=4)};var rs="function"==typeof WeakSet?WeakSet:Set;function os(e,t){var n=t.source,r=t.stack;null===r&&null!==n&&(r=be(n)),null!==n&&ge(n.type),t=t.value,null!==e&&1===e.tag&&ge(e.type);try{console.error(t)}catch(o){setTimeout((function(){throw o}))}}function is(e){var t=e.ref;if(null!==t)if("function"==typeof t)try{t(null)}catch(n){Dl(e,n)}else t.current=null}function as(e,t){switch(t.tag){case 0:case 11:case 15:case 22:return;case 1:if(256&t.effectTag&&null!==e){var n=e.memoizedProps,r=e.memoizedState;t=(e=t.stateNode).getSnapshotBeforeUpdate(t.elementType===t.type?n:Zo(t.type,n),r),e.__reactInternalSnapshotBeforeUpdate=t}return;case 3:case 5:case 6:case 4:case 17:return}throw Error(a(163))}function ss(e,t){if(null!==(t=null!==(t=t.updateQueue)?t.lastEffect:null)){var n=t=t.next;do{if((n.tag&e)===e){var r=n.destroy;n.destroy=void 0,void 0!==r&&r()}n=n.next}while(n!==t)}}function ls(e,t){if(null!==(t=null!==(t=t.updateQueue)?t.lastEffect:null)){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function cs(e,t,n){switch(n.tag){case 0:case 11:case 15:case 22:return void ls(3,n);case 1:if(e=n.stateNode,4&n.effectTag)if(null===t)e.componentDidMount();else{var r=n.elementType===n.type?t.memoizedProps:Zo(n.type,t.memoizedProps);e.componentDidUpdate(r,t.memoizedState,e.__reactInternalSnapshotBeforeUpdate)}return void(null!==(t=n.updateQueue)&&gi(n,t,e));case 3:if(null!==(t=n.updateQueue)){if(e=null,null!==n.child)switch(n.child.tag){case 5:e=n.child.stateNode;break;case 1:e=n.child.stateNode}gi(n,t,e)}return;case 5:return e=n.stateNode,void(null===t&&4&n.effectTag&&kn(n.type,n.memoizedProps)&&e.focus());case 6:case 4:case 12:return;case 13:return void(null===n.memoizedState&&(n=n.alternate,null!==n&&(n=n.memoizedState,null!==n&&(n=n.dehydrated,null!==n&&Lt(n)))));case 19:case 17:case 20:case 21:return}throw Error(a(163))}function us(e,t,n){switch("function"==typeof Rl&&Rl(t),t.tag){case 0:case 11:case 14:case 15:case 22:if(null!==(e=t.updateQueue)&&null!==(e=e.lastEffect)){var r=e.next;Vo(97<n?97:n,(function(){var e=r;do{var n=e.destroy;if(void 0!==n){var o=t;try{n()}catch(i){Dl(o,i)}}e=e.next}while(e!==r)}))}break;case 1:is(t),"function"==typeof(n=t.stateNode).componentWillUnmount&&function(e,t){try{t.props=e.memoizedProps,t.state=e.memoizedState,t.componentWillUnmount()}catch(n){Dl(e,n)}}(t,n);break;case 5:is(t);break;case 4:gs(e,t,n)}}function ds(e){var t=e.alternate;e.return=null,e.child=null,e.memoizedState=null,e.updateQueue=null,e.dependencies=null,e.alternate=null,e.firstEffect=null,e.lastEffect=null,e.pendingProps=null,e.memoizedProps=null,e.stateNode=null,null!==t&&ds(t)}function ps(e){return 5===e.tag||3===e.tag||4===e.tag}function fs(e){e:{for(var t=e.return;null!==t;){if(ps(t)){var n=t;break e}t=t.return}throw Error(a(160))}switch(t=n.stateNode,n.tag){case 5:var r=!1;break;case 3:case 4:t=t.containerInfo,r=!0;break;default:throw Error(a(161))}16&n.effectTag&&(Ue(t,""),n.effectTag&=-17);e:t:for(n=e;;){for(;null===n.sibling;){if(null===n.return||ps(n.return)){n=null;break e}n=n.return}for(n.sibling.return=n.return,n=n.sibling;5!==n.tag&&6!==n.tag&&18!==n.tag;){if(2&n.effectTag)continue t;if(null===n.child||4===n.tag)continue t;n.child.return=n,n=n.child}if(!(2&n.effectTag)){n=n.stateNode;break e}}r?ms(e,n,t):hs(e,n,t)}function ms(e,t,n){var r=e.tag,o=5===r||6===r;if(o)e=o?e.stateNode:e.stateNode.instance,t?8===n.nodeType?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(8===n.nodeType?(t=n.parentNode).insertBefore(e,n):(t=n).appendChild(e),null!=(n=n._reactRootContainer)||null!==t.onclick||(t.onclick=un));else if(4!==r&&null!==(e=e.child))for(ms(e,t,n),e=e.sibling;null!==e;)ms(e,t,n),e=e.sibling}function hs(e,t,n){var r=e.tag,o=5===r||6===r;if(o)e=o?e.stateNode:e.stateNode.instance,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&&null!==(e=e.child))for(hs(e,t,n),e=e.sibling;null!==e;)hs(e,t,n),e=e.sibling}function gs(e,t,n){for(var r,o,i=t,s=!1;;){if(!s){s=i.return;e:for(;;){if(null===s)throw Error(a(160));switch(r=s.stateNode,s.tag){case 5:o=!1;break e;case 3:case 4:r=r.containerInfo,o=!0;break e}s=s.return}s=!0}if(5===i.tag||6===i.tag){e:for(var l=e,c=i,u=n,d=c;;)if(us(l,d,u),null!==d.child&&4!==d.tag)d.child.return=d,d=d.child;else{if(d===c)break e;for(;null===d.sibling;){if(null===d.return||d.return===c)break e;d=d.return}d.sibling.return=d.return,d=d.sibling}o?(l=r,c=i.stateNode,8===l.nodeType?l.parentNode.removeChild(c):l.removeChild(c)):r.removeChild(i.stateNode)}else if(4===i.tag){if(null!==i.child){r=i.stateNode.containerInfo,o=!0,i.child.return=i,i=i.child;continue}}else if(us(e,i,n),null!==i.child){i.child.return=i,i=i.child;continue}if(i===t)break;for(;null===i.sibling;){if(null===i.return||i.return===t)return;4===(i=i.return).tag&&(s=!1)}i.sibling.return=i.return,i=i.sibling}}function bs(e,t){switch(t.tag){case 0:case 11:case 14:case 15:case 22:return void ss(3,t);case 1:return;case 5:var n=t.stateNode;if(null!=n){var r=t.memoizedProps,o=null!==e?e.memoizedProps:r;e=t.type;var i=t.updateQueue;if(t.updateQueue=null,null!==i){for(n[_n]=r,"input"===e&&"radio"===r.type&&null!=r.name&&Te(n,r),sn(e,o),t=sn(e,r),o=0;o<i.length;o+=2){var s=i[o],l=i[o+1];"style"===s?rn(n,l):"dangerouslySetInnerHTML"===s?Be(n,l):"children"===s?Ue(n,l):X(n,s,l,t)}switch(e){case"input":Se(n,r);break;case"textarea":Pe(n,r);break;case"select":t=n._wrapperState.wasMultiple,n._wrapperState.wasMultiple=!!r.multiple,null!=(e=r.value)?_e(n,!!r.multiple,e,!1):t!==!!r.multiple&&(null!=r.defaultValue?_e(n,!!r.multiple,r.defaultValue,!0):_e(n,!!r.multiple,r.multiple?[]:"",!1))}}}return;case 6:if(null===t.stateNode)throw Error(a(162));return void(t.stateNode.nodeValue=t.memoizedProps);case 3:return void((t=t.stateNode).hydrate&&(t.hydrate=!1,Lt(t.containerInfo)));case 12:return;case 13:if(n=t,null===t.memoizedState?r=!1:(r=!0,n=t.child,$s=Ho()),null!==n)e:for(e=n;;){if(5===e.tag)i=e.stateNode,r?"function"==typeof(i=i.style).setProperty?i.setProperty("display","none","important"):i.display="none":(i=e.stateNode,o=null!=(o=e.memoizedProps.style)&&o.hasOwnProperty("display")?o.display:null,i.style.display=nn("display",o));else if(6===e.tag)e.stateNode.nodeValue=r?"":e.memoizedProps;else{if(13===e.tag&&null!==e.memoizedState&&null===e.memoizedState.dehydrated){(i=e.child.sibling).return=e,e=i;continue}if(null!==e.child){e.child.return=e,e=e.child;continue}}if(e===n)break;for(;null===e.sibling;){if(null===e.return||e.return===n)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}return void vs(t);case 19:return void vs(t);case 17:return}throw Error(a(163))}function vs(e){var t=e.updateQueue;if(null!==t){e.updateQueue=null;var n=e.stateNode;null===n&&(n=e.stateNode=new rs),t.forEach((function(t){var r=Al.bind(null,e,t);n.has(t)||(n.add(t),t.then(r,r))}))}}var ys="function"==typeof WeakMap?WeakMap:Map;function ws(e,t,n){(n=pi(n,null)).tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){Hs||(Hs=!0,Gs=r),os(e,t)},n}function ks(e,t,n){(n=pi(n,null)).tag=3;var r=e.type.getDerivedStateFromError;if("function"==typeof r){var o=t.value;n.payload=function(){return os(e,t),r(o)}}var i=e.stateNode;return null!==i&&"function"==typeof i.componentDidCatch&&(n.callback=function(){"function"!=typeof r&&(null===Ws?Ws=new Set([this]):Ws.add(this),os(e,t));var n=t.stack;this.componentDidCatch(t.value,{componentStack:null!==n?n:""})}),n}var xs,Es=Math.ceil,Ts=Q.ReactCurrentDispatcher,Ss=Q.ReactCurrentOwner,Ds=16,Cs=32,As=0,_s=3,Rs=4,Os=0,Ps=null,Ns=null,Is=0,Ms=As,js=null,Ls=1073741823,Fs=1073741823,zs=null,Bs=0,Us=!1,$s=0,qs=null,Hs=!1,Gs=null,Ws=null,Vs=!1,Ks=null,Ys=90,Qs=null,Xs=0,Js=null,Zs=0;function el(){return 0!=(48&Os)?1073741821-(Ho()/10|0):0!==Zs?Zs:Zs=1073741821-(Ho()/10|0)}function tl(e,t,n){if(0==(2&(t=t.mode)))return 1073741823;var r=Go();if(0==(4&t))return 99===r?1073741823:1073741822;if(0!=(Os&Ds))return Is;if(null!==n)e=Jo(e,0|n.timeoutMs||5e3,250);else switch(r){case 99:e=1073741823;break;case 98:e=Jo(e,150,100);break;case 97:case 96:e=Jo(e,5e3,250);break;case 95:e=2;break;default:throw Error(a(326))}return null!==Ps&&e===Is&&--e,e}function nl(e,t){if(50<Xs)throw Xs=0,Js=null,Error(a(185));if(null!==(e=rl(e,t))){var n=Go();1073741823===t?0!=(8&Os)&&0==(48&Os)?sl(e):(il(e),0===Os&&Qo()):il(e),0==(4&Os)||98!==n&&99!==n||(null===Qs?Qs=new Map([[e,t]]):(void 0===(n=Qs.get(e))||n>t)&&Qs.set(e,t))}}function rl(e,t){e.expirationTime<t&&(e.expirationTime=t);var n=e.alternate;null!==n&&n.expirationTime<t&&(n.expirationTime=t);var r=e.return,o=null;if(null===r&&3===e.tag)o=e.stateNode;else for(;null!==r;){if(n=r.alternate,r.childExpirationTime<t&&(r.childExpirationTime=t),null!==n&&n.childExpirationTime<t&&(n.childExpirationTime=t),null===r.return&&3===r.tag){o=r.stateNode;break}r=r.return}return null!==o&&(Ps===o&&(ml(t),Ms===Rs&&Ul(o,Is)),$l(o,t)),o}function ol(e){var t=e.lastExpiredTime;if(0!==t)return t;if(!Bl(e,t=e.firstPendingTime))return t;var n=e.lastPingedTime;return 2>=(e=n>(e=e.nextKnownPendingLevel)?n:e)&&t!==e?0:e}function il(e){if(0!==e.lastExpiredTime)e.callbackExpirationTime=1073741823,e.callbackPriority=99,e.callbackNode=Yo(sl.bind(null,e));else{var t=ol(e),n=e.callbackNode;if(0===t)null!==n&&(e.callbackNode=null,e.callbackExpirationTime=0,e.callbackPriority=90);else{var r=el();if(1073741823===t?r=99:1===t||2===t?r=95:r=0>=(r=10*(1073741821-t)-10*(1073741821-r))?99:250>=r?98:5250>=r?97:95,null!==n){var o=e.callbackPriority;if(e.callbackExpirationTime===t&&o>=r)return;n!==Lo&&Ao(n)}e.callbackExpirationTime=t,e.callbackPriority=r,t=1073741823===t?Yo(sl.bind(null,e)):Ko(r,al.bind(null,e),{timeout:10*(1073741821-t)-Ho()}),e.callbackNode=t}}}function al(e,t){if(Zs=0,t)return ql(e,t=el()),il(e),null;var n=ol(e);if(0!==n){if(t=e.callbackNode,0!=(48&Os))throw Error(a(327));if(El(),e===Ps&&n===Is||ul(e,n),null!==Ns){var r=Os;Os|=Ds;for(var o=pl();;)try{gl();break}catch(l){dl(e,l)}if(oi(),Os=r,Ts.current=o,1===Ms)throw t=js,ul(e,n),Ul(e,n),il(e),t;if(null===Ns)switch(o=e.finishedWork=e.current.alternate,e.finishedExpirationTime=n,r=Ms,Ps=null,r){case As:case 1:throw Error(a(345));case 2:ql(e,2<n?2:n);break;case _s:if(Ul(e,n),n===(r=e.lastSuspendedTime)&&(e.nextKnownPendingLevel=yl(o)),1073741823===Ls&&10<(o=$s+500-Ho())){if(Us){var i=e.lastPingedTime;if(0===i||i>=n){e.lastPingedTime=n,ul(e,n);break}}if(0!==(i=ol(e))&&i!==n)break;if(0!==r&&r!==n){e.lastPingedTime=r;break}e.timeoutHandle=En(wl.bind(null,e),o);break}wl(e);break;case Rs:if(Ul(e,n),n===(r=e.lastSuspendedTime)&&(e.nextKnownPendingLevel=yl(o)),Us&&(0===(o=e.lastPingedTime)||o>=n)){e.lastPingedTime=n,ul(e,n);break}if(0!==(o=ol(e))&&o!==n)break;if(0!==r&&r!==n){e.lastPingedTime=r;break}if(1073741823!==Fs?r=10*(1073741821-Fs)-Ho():1073741823===Ls?r=0:(r=10*(1073741821-Ls)-5e3,0>(r=(o=Ho())-r)&&(r=0),(n=10*(1073741821-n)-o)<(r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*Es(r/1960))-r)&&(r=n)),10<r){e.timeoutHandle=En(wl.bind(null,e),r);break}wl(e);break;case 5:if(1073741823!==Ls&&null!==zs){i=Ls;var s=zs;if(0>=(r=0|s.busyMinDurationMs)?r=0:(o=0|s.busyDelayMs,r=(i=Ho()-(10*(1073741821-i)-(0|s.timeoutMs||5e3)))<=o?0:o+r-i),10<r){Ul(e,n),e.timeoutHandle=En(wl.bind(null,e),r);break}}wl(e);break;default:throw Error(a(329))}if(il(e),e.callbackNode===t)return al.bind(null,e)}}return null}function sl(e){var t=e.lastExpiredTime;if(t=0!==t?t:1073741823,0!=(48&Os))throw Error(a(327));if(El(),e===Ps&&t===Is||ul(e,t),null!==Ns){var n=Os;Os|=Ds;for(var r=pl();;)try{hl();break}catch(o){dl(e,o)}if(oi(),Os=n,Ts.current=r,1===Ms)throw n=js,ul(e,t),Ul(e,t),il(e),n;if(null!==Ns)throw Error(a(261));e.finishedWork=e.current.alternate,e.finishedExpirationTime=t,Ps=null,wl(e),il(e)}return null}function ll(e,t){var n=Os;Os|=1;try{return e(t)}finally{0===(Os=n)&&Qo()}}function cl(e,t){var n=Os;Os&=-2,Os|=8;try{return e(t)}finally{0===(Os=n)&&Qo()}}function ul(e,t){e.finishedWork=null,e.finishedExpirationTime=0;var n=e.timeoutHandle;if(-1!==n&&(e.timeoutHandle=-1,Tn(n)),null!==Ns)for(n=Ns.return;null!==n;){var r=n;switch(r.tag){case 1:null!=(r=r.type.childContextTypes)&&ko();break;case 3:Li(),fo(bo),fo(go);break;case 5:zi(r);break;case 4:Li();break;case 13:case 19:fo(Bi);break;case 10:ii(r)}n=n.return}Ps=e,Ns=Il(e.current,null),Is=t,Ms=As,js=null,Fs=Ls=1073741823,zs=null,Bs=0,Us=!1}function dl(e,t){for(;;){try{if(oi(),qi.current=wa,Yi)for(var n=Wi.memoizedState;null!==n;){var r=n.queue;null!==r&&(r.pending=null),n=n.next}if(Gi=0,Ki=Vi=Wi=null,Yi=!1,null===Ns||null===Ns.return)return Ms=1,js=t,Ns=null;e:{var o=e,i=Ns.return,a=Ns,s=t;if(t=Is,a.effectTag|=2048,a.firstEffect=a.lastEffect=null,null!==s&&"object"==typeof s&&"function"==typeof s.then){var l=s;if(0==(2&a.mode)){var c=a.alternate;c?(a.updateQueue=c.updateQueue,a.memoizedState=c.memoizedState,a.expirationTime=c.expirationTime):(a.updateQueue=null,a.memoizedState=null)}var u=0!=(1&Bi.current),d=i;do{var p;if(p=13===d.tag){var f=d.memoizedState;if(null!==f)p=null!==f.dehydrated;else{var m=d.memoizedProps;p=void 0!==m.fallback&&(!0!==m.unstable_avoidThisFallback||!u)}}if(p){var h=d.updateQueue;if(null===h){var g=new Set;g.add(l),d.updateQueue=g}else h.add(l);if(0==(2&d.mode)){if(d.effectTag|=64,a.effectTag&=-2981,1===a.tag)if(null===a.alternate)a.tag=17;else{var b=pi(1073741823,null);b.tag=2,fi(a,b)}a.expirationTime=1073741823;break e}s=void 0,a=t;var v=o.pingCache;if(null===v?(v=o.pingCache=new ys,s=new Set,v.set(l,s)):void 0===(s=v.get(l))&&(s=new Set,v.set(l,s)),!s.has(a)){s.add(a);var y=Cl.bind(null,o,l,a);l.then(y,y)}d.effectTag|=4096,d.expirationTime=t;break e}d=d.return}while(null!==d);s=Error((ge(a.type)||"A React component")+" suspended while rendering, but no fallback UI was specified.\n\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display."+be(a))}5!==Ms&&(Ms=2),s=ns(s,a),d=i;do{switch(d.tag){case 3:l=s,d.effectTag|=4096,d.expirationTime=t,mi(d,ws(d,l,t));break e;case 1:l=s;var w=d.type,k=d.stateNode;if(0==(64&d.effectTag)&&("function"==typeof w.getDerivedStateFromError||null!==k&&"function"==typeof k.componentDidCatch&&(null===Ws||!Ws.has(k)))){d.effectTag|=4096,d.expirationTime=t,mi(d,ks(d,l,t));break e}}d=d.return}while(null!==d)}Ns=vl(Ns)}catch(x){t=x;continue}break}}function pl(){var e=Ts.current;return Ts.current=wa,null===e?wa:e}function fl(e,t){e<Ls&&2<e&&(Ls=e),null!==t&&e<Fs&&2<e&&(Fs=e,zs=t)}function ml(e){e>Bs&&(Bs=e)}function hl(){for(;null!==Ns;)Ns=bl(Ns)}function gl(){for(;null!==Ns&&!Fo();)Ns=bl(Ns)}function bl(e){var t=xs(e.alternate,e,Is);return e.memoizedProps=e.pendingProps,null===t&&(t=vl(e)),Ss.current=null,t}function vl(e){Ns=e;do{var t=Ns.alternate;if(e=Ns.return,0==(2048&Ns.effectTag)){if(t=es(t,Ns,Is),1===Is||1!==Ns.childExpirationTime){for(var n=0,r=Ns.child;null!==r;){var o=r.expirationTime,i=r.childExpirationTime;o>n&&(n=o),i>n&&(n=i),r=r.sibling}Ns.childExpirationTime=n}if(null!==t)return t;null!==e&&0==(2048&e.effectTag)&&(null===e.firstEffect&&(e.firstEffect=Ns.firstEffect),null!==Ns.lastEffect&&(null!==e.lastEffect&&(e.lastEffect.nextEffect=Ns.firstEffect),e.lastEffect=Ns.lastEffect),1<Ns.effectTag&&(null!==e.lastEffect?e.lastEffect.nextEffect=Ns:e.firstEffect=Ns,e.lastEffect=Ns))}else{if(null!==(t=ts(Ns)))return t.effectTag&=2047,t;null!==e&&(e.firstEffect=e.lastEffect=null,e.effectTag|=2048)}if(null!==(t=Ns.sibling))return t;Ns=e}while(null!==Ns);return Ms===As&&(Ms=5),null}function yl(e){var t=e.expirationTime;return t>(e=e.childExpirationTime)?t:e}function wl(e){var t=Go();return Vo(99,kl.bind(null,e,t)),null}function kl(e,t){do{El()}while(null!==Ks);if(0!=(48&Os))throw Error(a(327));var n=e.finishedWork,r=e.finishedExpirationTime;if(null===n)return null;if(e.finishedWork=null,e.finishedExpirationTime=0,n===e.current)throw Error(a(177));e.callbackNode=null,e.callbackExpirationTime=0,e.callbackPriority=90,e.nextKnownPendingLevel=0;var o=yl(n);if(e.firstPendingTime=o,r<=e.lastSuspendedTime?e.firstSuspendedTime=e.lastSuspendedTime=e.nextKnownPendingLevel=0:r<=e.firstSuspendedTime&&(e.firstSuspendedTime=r-1),r<=e.lastPingedTime&&(e.lastPingedTime=0),r<=e.lastExpiredTime&&(e.lastExpiredTime=0),e===Ps&&(Ns=Ps=null,Is=0),1<n.effectTag?null!==n.lastEffect?(n.lastEffect.nextEffect=n,o=n.firstEffect):o=n:o=n.firstEffect,null!==o){var i=Os;Os|=Cs,Ss.current=null,yn=Vt;var s=hn();if(gn(s)){if("selectionStart"in s)var l={start:s.selectionStart,end:s.selectionEnd};else e:{var c=(l=(l=s.ownerDocument)&&l.defaultView||window).getSelection&&l.getSelection();if(c&&0!==c.rangeCount){l=c.anchorNode;var u=c.anchorOffset,d=c.focusNode;c=c.focusOffset;try{l.nodeType,d.nodeType}catch(D){l=null;break e}var p=0,f=-1,m=-1,h=0,g=0,b=s,v=null;t:for(;;){for(var y;b!==l||0!==u&&3!==b.nodeType||(f=p+u),b!==d||0!==c&&3!==b.nodeType||(m=p+c),3===b.nodeType&&(p+=b.nodeValue.length),null!==(y=b.firstChild);)v=b,b=y;for(;;){if(b===s)break t;if(v===l&&++h===u&&(f=p),v===d&&++g===c&&(m=p),null!==(y=b.nextSibling))break;v=(b=v).parentNode}b=y}l=-1===f||-1===m?null:{start:f,end:m}}else l=null}l=l||{start:0,end:0}}else l=null;wn={activeElementDetached:null,focusedElem:s,selectionRange:l},Vt=!1,qs=o;do{try{xl()}catch(D){if(null===qs)throw Error(a(330));Dl(qs,D),qs=qs.nextEffect}}while(null!==qs);qs=o;do{try{for(s=e,l=t;null!==qs;){var w=qs.effectTag;if(16&w&&Ue(qs.stateNode,""),128&w){var k=qs.alternate;if(null!==k){var x=k.ref;null!==x&&("function"==typeof x?x(null):x.current=null)}}switch(1038&w){case 2:fs(qs),qs.effectTag&=-3;break;case 6:fs(qs),qs.effectTag&=-3,bs(qs.alternate,qs);break;case 1024:qs.effectTag&=-1025;break;case 1028:qs.effectTag&=-1025,bs(qs.alternate,qs);break;case 4:bs(qs.alternate,qs);break;case 8:gs(s,u=qs,l),ds(u)}qs=qs.nextEffect}}catch(D){if(null===qs)throw Error(a(330));Dl(qs,D),qs=qs.nextEffect}}while(null!==qs);if(x=wn,k=hn(),w=x.focusedElem,l=x.selectionRange,k!==w&&w&&w.ownerDocument&&mn(w.ownerDocument.documentElement,w)){null!==l&&gn(w)&&(k=l.start,void 0===(x=l.end)&&(x=k),"selectionStart"in w?(w.selectionStart=k,w.selectionEnd=Math.min(x,w.value.length)):(x=(k=w.ownerDocument||document)&&k.defaultView||window).getSelection&&(x=x.getSelection(),u=w.textContent.length,s=Math.min(l.start,u),l=void 0===l.end?s:Math.min(l.end,u),!x.extend&&s>l&&(u=l,l=s,s=u),u=fn(w,s),d=fn(w,l),u&&d&&(1!==x.rangeCount||x.anchorNode!==u.node||x.anchorOffset!==u.offset||x.focusNode!==d.node||x.focusOffset!==d.offset)&&((k=k.createRange()).setStart(u.node,u.offset),x.removeAllRanges(),s>l?(x.addRange(k),x.extend(d.node,d.offset)):(k.setEnd(d.node,d.offset),x.addRange(k))))),k=[];for(x=w;x=x.parentNode;)1===x.nodeType&&k.push({element:x,left:x.scrollLeft,top:x.scrollTop});for("function"==typeof w.focus&&w.focus(),w=0;w<k.length;w++)(x=k[w]).element.scrollLeft=x.left,x.element.scrollTop=x.top}Vt=!!yn,wn=yn=null,e.current=n,qs=o;do{try{for(w=e;null!==qs;){var E=qs.effectTag;if(36&E&&cs(w,qs.alternate,qs),128&E){k=void 0;var T=qs.ref;if(null!==T){var S=qs.stateNode;switch(qs.tag){case 5:k=S;break;default:k=S}"function"==typeof T?T(k):T.current=k}}qs=qs.nextEffect}}catch(D){if(null===qs)throw Error(a(330));Dl(qs,D),qs=qs.nextEffect}}while(null!==qs);qs=null,zo(),Os=i}else e.current=n;if(Vs)Vs=!1,Ks=e,Ys=t;else for(qs=o;null!==qs;)t=qs.nextEffect,qs.nextEffect=null,qs=t;if(0===(t=e.firstPendingTime)&&(Ws=null),1073741823===t?e===Js?Xs++:(Xs=0,Js=e):Xs=0,"function"==typeof _l&&_l(n.stateNode,r),il(e),Hs)throw Hs=!1,e=Gs,Gs=null,e;return 0!=(8&Os)||Qo(),null}function xl(){for(;null!==qs;){var e=qs.effectTag;0!=(256&e)&&as(qs.alternate,qs),0==(512&e)||Vs||(Vs=!0,Ko(97,(function(){return El(),null}))),qs=qs.nextEffect}}function El(){if(90!==Ys){var e=97<Ys?97:Ys;return Ys=90,Vo(e,Tl)}}function Tl(){if(null===Ks)return!1;var e=Ks;if(Ks=null,0!=(48&Os))throw Error(a(331));var t=Os;for(Os|=Cs,e=e.current.firstEffect;null!==e;){try{var n=e;if(0!=(512&n.effectTag))switch(n.tag){case 0:case 11:case 15:case 22:ss(5,n),ls(5,n)}}catch(r){if(null===e)throw Error(a(330));Dl(e,r)}n=e.nextEffect,e.nextEffect=null,e=n}return Os=t,Qo(),!0}function Sl(e,t,n){fi(e,t=ws(e,t=ns(n,t),1073741823)),null!==(e=rl(e,1073741823))&&il(e)}function Dl(e,t){if(3===e.tag)Sl(e,e,t);else for(var n=e.return;null!==n;){if(3===n.tag){Sl(n,e,t);break}if(1===n.tag){var r=n.stateNode;if("function"==typeof n.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===Ws||!Ws.has(r))){fi(n,e=ks(n,e=ns(t,e),1073741823)),null!==(n=rl(n,1073741823))&&il(n);break}}n=n.return}}function Cl(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),Ps===e&&Is===n?Ms===Rs||Ms===_s&&1073741823===Ls&&Ho()-$s<500?ul(e,Is):Us=!0:Bl(e,n)&&(0!==(t=e.lastPingedTime)&&t<n||(e.lastPingedTime=n,il(e)))}function Al(e,t){var n=e.stateNode;null!==n&&n.delete(t),0===(t=0)&&(t=tl(t=el(),e,null)),null!==(e=rl(e,t))&&il(e)}xs=function(e,t,n){var r=t.expirationTime;if(null!==e){var o=t.pendingProps;if(e.memoizedProps!==o||bo.current)Ia=!0;else{if(r<n){switch(Ia=!1,t.tag){case 3:qa(t),Pa();break;case 5:if(Fi(t),4&t.mode&&1!==n&&o.hidden)return t.expirationTime=t.childExpirationTime=1,null;break;case 1:wo(t.type)&&To(t);break;case 4:ji(t,t.stateNode.containerInfo);break;case 10:r=t.memoizedProps.value,o=t.type._context,mo(ei,o._currentValue),o._currentValue=r;break;case 13:if(null!==t.memoizedState)return 0!==(r=t.child.childExpirationTime)&&r>=n?Ka(e,t,n):(mo(Bi,1&Bi.current),null!==(t=Ja(e,t,n))?t.sibling:null);mo(Bi,1&Bi.current);break;case 19:if(r=t.childExpirationTime>=n,0!=(64&e.effectTag)){if(r)return Xa(e,t,n);t.effectTag|=64}if(null!==(o=t.memoizedState)&&(o.rendering=null,o.tail=null),mo(Bi,Bi.current),!r)return null}return Ja(e,t,n)}Ia=!1}}else Ia=!1;switch(t.expirationTime=0,t.tag){case 2:if(r=t.type,null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),e=t.pendingProps,o=yo(t,go.current),si(t,n),o=Ji(null,t,r,e,o,n),t.effectTag|=1,"object"==typeof o&&null!==o&&"function"==typeof o.render&&void 0===o.$$typeof){if(t.tag=1,t.memoizedState=null,t.updateQueue=null,wo(r)){var i=!0;To(t)}else i=!1;t.memoizedState=null!==o.state&&void 0!==o.state?o.state:null,ui(t);var s=r.getDerivedStateFromProps;"function"==typeof s&&yi(t,r,s,e),o.updater=wi,t.stateNode=o,o._reactInternalFiber=t,Ti(t,r,e,n),t=$a(null,t,r,!0,i,n)}else t.tag=0,Ma(null,t,o,n),t=t.child;return t;case 16:e:{if(o=t.elementType,null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),e=t.pendingProps,function(e){if(-1===e._status){e._status=0;var t=e._ctor;t=t(),e._result=t,t.then((function(t){0===e._status&&(t=t.default,e._status=1,e._result=t)}),(function(t){0===e._status&&(e._status=2,e._result=t)}))}}(o),1!==o._status)throw o._result;switch(o=o._result,t.type=o,i=t.tag=function(e){if("function"==typeof e)return Nl(e)?1:0;if(null!=e){if((e=e.$$typeof)===le)return 11;if(e===de)return 14}return 2}(o),e=Zo(o,e),i){case 0:t=Ba(null,t,o,e,n);break e;case 1:t=Ua(null,t,o,e,n);break e;case 11:t=ja(null,t,o,e,n);break e;case 14:t=La(null,t,o,Zo(o.type,e),r,n);break e}throw Error(a(306,o,""))}return t;case 0:return r=t.type,o=t.pendingProps,Ba(e,t,r,o=t.elementType===r?o:Zo(r,o),n);case 1:return r=t.type,o=t.pendingProps,Ua(e,t,r,o=t.elementType===r?o:Zo(r,o),n);case 3:if(qa(t),r=t.updateQueue,null===e||null===r)throw Error(a(282));if(r=t.pendingProps,o=null!==(o=t.memoizedState)?o.element:null,di(e,t),hi(t,r,null,n),(r=t.memoizedState.element)===o)Pa(),t=Ja(e,t,n);else{if((o=t.stateNode.hydrate)&&(Sa=Sn(t.stateNode.containerInfo.firstChild),Ta=t,o=Da=!0),o)for(n=Ri(t,null,r,n),t.child=n;n;)n.effectTag=-3&n.effectTag|1024,n=n.sibling;else Ma(e,t,r,n),Pa();t=t.child}return t;case 5:return Fi(t),null===e&&_a(t),r=t.type,o=t.pendingProps,i=null!==e?e.memoizedProps:null,s=o.children,xn(r,o)?s=null:null!==i&&xn(r,i)&&(t.effectTag|=16),za(e,t),4&t.mode&&1!==n&&o.hidden?(t.expirationTime=t.childExpirationTime=1,t=null):(Ma(e,t,s,n),t=t.child),t;case 6:return null===e&&_a(t),null;case 13:return Ka(e,t,n);case 4:return ji(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=_i(t,null,r,n):Ma(e,t,r,n),t.child;case 11:return r=t.type,o=t.pendingProps,ja(e,t,r,o=t.elementType===r?o:Zo(r,o),n);case 7:return Ma(e,t,t.pendingProps,n),t.child;case 8:case 12:return Ma(e,t,t.pendingProps.children,n),t.child;case 10:e:{r=t.type._context,o=t.pendingProps,s=t.memoizedProps,i=o.value;var l=t.type._context;if(mo(ei,l._currentValue),l._currentValue=i,null!==s)if(l=s.value,0===(i=Ur(l,i)?0:0|("function"==typeof r._calculateChangedBits?r._calculateChangedBits(l,i):1073741823))){if(s.children===o.children&&!bo.current){t=Ja(e,t,n);break e}}else for(null!==(l=t.child)&&(l.return=t);null!==l;){var c=l.dependencies;if(null!==c){s=l.child;for(var u=c.firstContext;null!==u;){if(u.context===r&&0!=(u.observedBits&i)){1===l.tag&&((u=pi(n,null)).tag=2,fi(l,u)),l.expirationTime<n&&(l.expirationTime=n),null!==(u=l.alternate)&&u.expirationTime<n&&(u.expirationTime=n),ai(l.return,n),c.expirationTime<n&&(c.expirationTime=n);break}u=u.next}}else s=10===l.tag&&l.type===t.type?null:l.child;if(null!==s)s.return=l;else for(s=l;null!==s;){if(s===t){s=null;break}if(null!==(l=s.sibling)){l.return=s.return,s=l;break}s=s.return}l=s}Ma(e,t,o.children,n),t=t.child}return t;case 9:return o=t.type,r=(i=t.pendingProps).children,si(t,n),r=r(o=li(o,i.unstable_observedBits)),t.effectTag|=1,Ma(e,t,r,n),t.child;case 14:return i=Zo(o=t.type,t.pendingProps),La(e,t,o,i=Zo(o.type,i),r,n);case 15:return Fa(e,t,t.type,t.pendingProps,r,n);case 17:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:Zo(r,o),null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),t.tag=1,wo(r)?(e=!0,To(t)):e=!1,si(t,n),xi(t,r,o),Ti(t,r,o,n),$a(null,t,r,!0,e,n);case 19:return Xa(e,t,n)}throw Error(a(156,t.tag))};var _l=null,Rl=null;function Ol(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.effectTag=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.childExpirationTime=this.expirationTime=0,this.alternate=null}function Pl(e,t,n,r){return new Ol(e,t,n,r)}function Nl(e){return!(!(e=e.prototype)||!e.isReactComponent)}function Il(e,t){var n=e.alternate;return null===n?((n=Pl(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.effectTag=0,n.nextEffect=null,n.firstEffect=null,n.lastEffect=null),n.childExpirationTime=e.childExpirationTime,n.expirationTime=e.expirationTime,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=null===t?null:{expirationTime:t.expirationTime,firstContext:t.firstContext,responders:t.responders},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Ml(e,t,n,r,o,i){var s=2;if(r=e,"function"==typeof e)Nl(e)&&(s=1);else if("string"==typeof e)s=5;else e:switch(e){case ne:return jl(n.children,o,i,t);case se:s=8,o|=7;break;case re:s=8,o|=1;break;case oe:return(e=Pl(12,n,t,8|o)).elementType=oe,e.type=oe,e.expirationTime=i,e;case ce:return(e=Pl(13,n,t,o)).type=ce,e.elementType=ce,e.expirationTime=i,e;case ue:return(e=Pl(19,n,t,o)).elementType=ue,e.expirationTime=i,e;default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case ie:s=10;break e;case ae:s=9;break e;case le:s=11;break e;case de:s=14;break e;case pe:s=16,r=null;break e;case fe:s=22;break e}throw Error(a(130,null==e?e:typeof e,""))}return(t=Pl(s,n,t,o)).elementType=e,t.type=r,t.expirationTime=i,t}function jl(e,t,n,r){return(e=Pl(7,e,r,t)).expirationTime=n,e}function Ll(e,t,n){return(e=Pl(6,e,null,t)).expirationTime=n,e}function Fl(e,t,n){return(t=Pl(4,null!==e.children?e.children:[],e.key,t)).expirationTime=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function zl(e,t,n){this.tag=t,this.current=null,this.containerInfo=e,this.pingCache=this.pendingChildren=null,this.finishedExpirationTime=0,this.finishedWork=null,this.timeoutHandle=-1,this.pendingContext=this.context=null,this.hydrate=n,this.callbackNode=null,this.callbackPriority=90,this.lastExpiredTime=this.lastPingedTime=this.nextKnownPendingLevel=this.lastSuspendedTime=this.firstSuspendedTime=this.firstPendingTime=0}function Bl(e,t){var n=e.firstSuspendedTime;return e=e.lastSuspendedTime,0!==n&&n>=t&&e<=t}function Ul(e,t){var n=e.firstSuspendedTime,r=e.lastSuspendedTime;n<t&&(e.firstSuspendedTime=t),(r>t||0===n)&&(e.lastSuspendedTime=t),t<=e.lastPingedTime&&(e.lastPingedTime=0),t<=e.lastExpiredTime&&(e.lastExpiredTime=0)}function $l(e,t){t>e.firstPendingTime&&(e.firstPendingTime=t);var n=e.firstSuspendedTime;0!==n&&(t>=n?e.firstSuspendedTime=e.lastSuspendedTime=e.nextKnownPendingLevel=0:t>=e.lastSuspendedTime&&(e.lastSuspendedTime=t+1),t>e.nextKnownPendingLevel&&(e.nextKnownPendingLevel=t))}function ql(e,t){var n=e.lastExpiredTime;(0===n||n>t)&&(e.lastExpiredTime=t)}function Hl(e,t,n,r){var o=t.current,i=el(),s=bi.suspense;i=tl(i,o,s);e:if(n){t:{if(et(n=n._reactInternalFiber)!==n||1!==n.tag)throw Error(a(170));var l=n;do{switch(l.tag){case 3:l=l.stateNode.context;break t;case 1:if(wo(l.type)){l=l.stateNode.__reactInternalMemoizedMergedChildContext;break t}}l=l.return}while(null!==l);throw Error(a(171))}if(1===n.tag){var c=n.type;if(wo(c)){n=Eo(n,c,l);break e}}n=l}else n=ho;return null===t.context?t.context=n:t.pendingContext=n,(t=pi(i,s)).payload={element:e},null!==(r=void 0===r?null:r)&&(t.callback=r),fi(o,t),nl(o,i),i}function Gl(e){if(!(e=e.current).child)return null;switch(e.child.tag){case 5:default:return e.child.stateNode}}function Wl(e,t){null!==(e=e.memoizedState)&&null!==e.dehydrated&&e.retryTime<t&&(e.retryTime=t)}function Vl(e,t){Wl(e,t),(e=e.alternate)&&Wl(e,t)}function Kl(e,t,n){var r=new zl(e,t,n=null!=n&&!0===n.hydrate),o=Pl(3,null,null,2===t?7:1===t?3:0);r.current=o,o.stateNode=r,ui(o),e[Rn]=r.current,n&&0!==t&&function(e,t){var n=Ze(t);Ct.forEach((function(e){ht(e,t,n)})),At.forEach((function(e){ht(e,t,n)}))}(0,9===e.nodeType?e:e.ownerDocument),this._internalRoot=r}function Yl(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType&&(8!==e.nodeType||" react-mount-point-unstable "!==e.nodeValue))}function Ql(e,t,n,r,o){var i=n._reactRootContainer;if(i){var a=i._internalRoot;if("function"==typeof o){var s=o;o=function(){var e=Gl(a);s.call(e)}}Hl(t,a,e,o)}else{if(i=n._reactRootContainer=function(e,t){if(t||(t=!(!(t=e?9===e.nodeType?e.documentElement:e.firstChild:null)||1!==t.nodeType||!t.hasAttribute("data-reactroot"))),!t)for(var n;n=e.lastChild;)e.removeChild(n);return new Kl(e,0,t?{hydrate:!0}:void 0)}(n,r),a=i._internalRoot,"function"==typeof o){var l=o;o=function(){var e=Gl(a);l.call(e)}}cl((function(){Hl(t,a,e,o)}))}return Gl(a)}function Xl(e,t,n){var r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:te,key:null==r?null:""+r,children:e,containerInfo:t,implementation:n}}function Jl(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!Yl(t))throw Error(a(200));return Xl(e,t,null,n)}Kl.prototype.render=function(e){Hl(e,this._internalRoot,null,null)},Kl.prototype.unmount=function(){var e=this._internalRoot,t=e.containerInfo;Hl(null,e,null,(function(){t[Rn]=null}))},gt=function(e){if(13===e.tag){var t=Jo(el(),150,100);nl(e,t),Vl(e,t)}},bt=function(e){13===e.tag&&(nl(e,3),Vl(e,3))},vt=function(e){if(13===e.tag){var t=el();nl(e,t=tl(t,e,null)),Vl(e,t)}},A=function(e,t,n){switch(t){case"input":if(Se(e,n),t=n.name,"radio"===n.type&&null!=t){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll("input[name="+JSON.stringify(""+t)+'][type="radio"]'),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var o=In(r);if(!o)throw Error(a(90));ke(r),Se(r,o)}}}break;case"textarea":Pe(e,n);break;case"select":null!=(t=n.value)&&_e(e,!!n.multiple,t,!1)}},I=ll,M=function(e,t,n,r,o){var i=Os;Os|=4;try{return Vo(98,e.bind(null,t,n,r,o))}finally{0===(Os=i)&&Qo()}},j=function(){0==(49&Os)&&(function(){if(null!==Qs){var e=Qs;Qs=null,e.forEach((function(e,t){ql(t,e),il(t)})),Qo()}}(),El())},L=function(e,t){var n=Os;Os|=2;try{return e(t)}finally{0===(Os=n)&&Qo()}};var Zl={Events:[Pn,Nn,In,D,E,Un,function(e){it(e,Bn)},P,N,Jt,lt,El,{current:!1}]};!function(e){var t=e.findFiberByHostInstance;(function(e){if("undefined"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)return!1;var t=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(t.isDisabled||!t.supportsFiber)return!0;try{var n=t.inject(e);_l=function(e){try{t.onCommitFiberRoot(n,e,void 0,64==(64&e.current.effectTag))}catch(r){}},Rl=function(e){try{t.onCommitFiberUnmount(n,e)}catch(r){}}}catch(r){}})(o({},e,{overrideHookState:null,overrideProps:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:Q.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return null===(e=rt(e))?null:e.stateNode},findFiberByHostInstance:function(e){return t?t(e):null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null}))}({findFiberByHostInstance:On,bundleType:0,version:"16.14.0",rendererPackageName:"react-dom"}),t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=Zl,t.createPortal=Jl,t.findDOMNode=function(e){if(null==e)return null;if(1===e.nodeType)return e;var t=e._reactInternalFiber;if(void 0===t){if("function"==typeof e.render)throw Error(a(188));throw Error(a(268,Object.keys(e)))}return e=null===(e=rt(t))?null:e.stateNode},t.flushSync=function(e,t){if(0!=(48&Os))throw Error(a(187));var n=Os;Os|=1;try{return Vo(99,e.bind(null,t))}finally{Os=n,Qo()}},t.hydrate=function(e,t,n){if(!Yl(t))throw Error(a(200));return Ql(null,e,t,!0,n)},t.render=function(e,t,n){if(!Yl(t))throw Error(a(200));return Ql(null,e,t,!1,n)},t.unmountComponentAtNode=function(e){if(!Yl(e))throw Error(a(40));return!!e._reactRootContainer&&(cl((function(){Ql(null,null,e,!1,(function(){e._reactRootContainer=null,e[Rn]=null}))})),!0)},t.unstable_batchedUpdates=ll,t.unstable_createPortal=function(e,t){return Jl(e,t,2<arguments.length&&void 0!==arguments[2]?arguments[2]:null)},t.unstable_renderSubtreeIntoContainer=function(e,t,n,r){if(!Yl(n))throw Error(a(200));if(null==e||void 0===e._reactInternalFiber)throw Error(a(38));return Ql(e,t,n,!1,r)},t.version="16.14.0"},function(e,t,n){"use strict";e.exports=n(42)},function(e,t,n){"use strict";var r,o,i,a,s;if("undefined"==typeof window||"function"!=typeof MessageChannel){var l=null,c=null,u=function(){if(null!==l)try{var e=t.unstable_now();l(!0,e),l=null}catch(n){throw setTimeout(u,0),n}},d=Date.now();t.unstable_now=function(){return Date.now()-d},r=function(e){null!==l?setTimeout(r,0,e):(l=e,setTimeout(u,0))},o=function(e,t){c=setTimeout(e,t)},i=function(){clearTimeout(c)},a=function(){return!1},s=t.unstable_forceFrameRate=function(){}}else{var p=window.performance,f=window.Date,m=window.setTimeout,h=window.clearTimeout;if("undefined"!=typeof console){var g=window.cancelAnimationFrame;"function"!=typeof window.requestAnimationFrame&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills"),"function"!=typeof g&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills")}if("object"==typeof p&&"function"==typeof p.now)t.unstable_now=function(){return p.now()};else{var b=f.now();t.unstable_now=function(){return f.now()-b}}var v=!1,y=null,w=-1,k=5,x=0;a=function(){return t.unstable_now()>=x},s=function(){},t.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing framerates higher than 125 fps is not unsupported"):k=0<e?Math.floor(1e3/e):5};var E=new MessageChannel,T=E.port2;E.port1.onmessage=function(){if(null!==y){var e=t.unstable_now();x=e+k;try{y(!0,e)?T.postMessage(null):(v=!1,y=null)}catch(n){throw T.postMessage(null),n}}else v=!1},r=function(e){y=e,v||(v=!0,T.postMessage(null))},o=function(e,n){w=m((function(){e(t.unstable_now())}),n)},i=function(){h(w),w=-1}}function S(e,t){var n=e.length;e.push(t);e:for(;;){var r=n-1>>>1,o=e[r];if(!(void 0!==o&&0<A(o,t)))break e;e[r]=t,e[n]=o,n=r}}function D(e){return void 0===(e=e[0])?null:e}function C(e){var t=e[0];if(void 0!==t){var n=e.pop();if(n!==t){e[0]=n;e:for(var r=0,o=e.length;r<o;){var i=2*(r+1)-1,a=e[i],s=i+1,l=e[s];if(void 0!==a&&0>A(a,n))void 0!==l&&0>A(l,a)?(e[r]=l,e[s]=n,r=s):(e[r]=a,e[i]=n,r=i);else{if(!(void 0!==l&&0>A(l,n)))break e;e[r]=l,e[s]=n,r=s}}}return t}return null}function A(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}var _=[],R=[],O=1,P=null,N=3,I=!1,M=!1,j=!1;function L(e){for(var t=D(R);null!==t;){if(null===t.callback)C(R);else{if(!(t.startTime<=e))break;C(R),t.sortIndex=t.expirationTime,S(_,t)}t=D(R)}}function F(e){if(j=!1,L(e),!M)if(null!==D(_))M=!0,r(z);else{var t=D(R);null!==t&&o(F,t.startTime-e)}}function z(e,n){M=!1,j&&(j=!1,i()),I=!0;var r=N;try{for(L(n),P=D(_);null!==P&&(!(P.expirationTime>n)||e&&!a());){var s=P.callback;if(null!==s){P.callback=null,N=P.priorityLevel;var l=s(P.expirationTime<=n);n=t.unstable_now(),"function"==typeof l?P.callback=l:P===D(_)&&C(_),L(n)}else C(_);P=D(_)}if(null!==P)var c=!0;else{var u=D(R);null!==u&&o(F,u.startTime-n),c=!1}return c}finally{P=null,N=r,I=!1}}function B(e){switch(e){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1e4;default:return 5e3}}var U=s;t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){M||I||(M=!0,r(z))},t.unstable_getCurrentPriorityLevel=function(){return N},t.unstable_getFirstCallbackNode=function(){return D(_)},t.unstable_next=function(e){switch(N){case 1:case 2:case 3:var t=3;break;default:t=N}var n=N;N=t;try{return e()}finally{N=n}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=U,t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=N;N=e;try{return t()}finally{N=n}},t.unstable_scheduleCallback=function(e,n,a){var s=t.unstable_now();if("object"==typeof a&&null!==a){var l=a.delay;l="number"==typeof l&&0<l?s+l:s,a="number"==typeof a.timeout?a.timeout:B(e)}else a=B(e),l=s;return e={id:O++,callback:n,priorityLevel:e,startTime:l,expirationTime:a=l+a,sortIndex:-1},l>s?(e.sortIndex=l,S(R,e),null===D(_)&&e===D(R)&&(j?i():j=!0,o(F,l-s))):(e.sortIndex=a,S(_,e),M||I||(M=!0,r(z))),e},t.unstable_shouldYield=function(){var e=t.unstable_now();L(e);var n=D(_);return n!==P&&null!==P&&null!==n&&null!==n.callback&&n.startTime<=e&&n.expirationTime<P.expirationTime||a()},t.unstable_wrapCallback=function(e){var t=N;return function(){var n=N;N=t;try{return e.apply(this,arguments)}finally{N=n}}}},function(e,t,n){"use strict";var r=n(44);function o(){}function i(){}i.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,i,a){if(a!==r){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:o};return n.PropTypes=n,n}},function(e,t,n){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},function(e,t){e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},function(e,t,n){"use strict";var r="function"==typeof Symbol&&Symbol.for,o=r?Symbol.for("react.element"):60103,i=r?Symbol.for("react.portal"):60106,a=r?Symbol.for("react.fragment"):60107,s=r?Symbol.for("react.strict_mode"):60108,l=r?Symbol.for("react.profiler"):60114,c=r?Symbol.for("react.provider"):60109,u=r?Symbol.for("react.context"):60110,d=r?Symbol.for("react.async_mode"):60111,p=r?Symbol.for("react.concurrent_mode"):60111,f=r?Symbol.for("react.forward_ref"):60112,m=r?Symbol.for("react.suspense"):60113,h=r?Symbol.for("react.suspense_list"):60120,g=r?Symbol.for("react.memo"):60115,b=r?Symbol.for("react.lazy"):60116,v=r?Symbol.for("react.block"):60121,y=r?Symbol.for("react.fundamental"):60117,w=r?Symbol.for("react.responder"):60118,k=r?Symbol.for("react.scope"):60119;function x(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case o:switch(e=e.type){case d:case p:case a:case l:case s:case m:return e;default:switch(e=e&&e.$$typeof){case u:case f:case b:case g:case c:return e;default:return t}}case i:return t}}}function E(e){return x(e)===p}t.AsyncMode=d,t.ConcurrentMode=p,t.ContextConsumer=u,t.ContextProvider=c,t.Element=o,t.ForwardRef=f,t.Fragment=a,t.Lazy=b,t.Memo=g,t.Portal=i,t.Profiler=l,t.StrictMode=s,t.Suspense=m,t.isAsyncMode=function(e){return E(e)||x(e)===d},t.isConcurrentMode=E,t.isContextConsumer=function(e){return x(e)===u},t.isContextProvider=function(e){return x(e)===c},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===o},t.isForwardRef=function(e){return x(e)===f},t.isFragment=function(e){return x(e)===a},t.isLazy=function(e){return x(e)===b},t.isMemo=function(e){return x(e)===g},t.isPortal=function(e){return x(e)===i},t.isProfiler=function(e){return x(e)===l},t.isStrictMode=function(e){return x(e)===s},t.isSuspense=function(e){return x(e)===m},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===a||e===p||e===l||e===s||e===m||e===h||"object"==typeof e&&null!==e&&(e.$$typeof===b||e.$$typeof===g||e.$$typeof===c||e.$$typeof===u||e.$$typeof===f||e.$$typeof===y||e.$$typeof===w||e.$$typeof===k||e.$$typeof===v)},t.typeOf=x},,function(e,t,n){const r=n(49),o=n(50),i=new Set;function a(e){void 0===e?e=Object.keys(r.languages).filter((e=>"meta"!=e)):Array.isArray(e)||(e=[e]);const t=[...i,...Object.keys(Prism.languages)];o(r,e,t).load((e=>{if(!(e in r.languages))return void(a.silent||console.warn("Language does not exist: "+e));const t="./prism-"+e;delete n.c[n(18).resolve(t)],delete Prism.languages[e],n(18)(t),i.add(e)}))}a.silent=!1,e.exports=a},function(e,t,n){e.exports&&(e.exports={core:{meta:{path:"components/prism-core.js",option:"mandatory"},core:"Core"},themes:{meta:{path:"themes/{id}.css",link:"index.html?theme={id}",exclusive:!0},prism:{title:"Default",option:"default"},"prism-dark":"Dark","prism-funky":"Funky","prism-okaidia":{title:"Okaidia",owner:"ocodia"},"prism-twilight":{title:"Twilight",owner:"remybach"},"prism-coy":{title:"Coy",owner:"tshedor"},"prism-solarizedlight":{title:"Solarized Light",owner:"hectormatos2011 "},"prism-tomorrow":{title:"Tomorrow Night",owner:"Rosey"}},languages:{meta:{path:"components/prism-{id}",noCSS:!0,examplesPath:"examples/prism-{id}",addCheckAll:!0},markup:{title:"Markup",alias:["html","xml","svg","mathml","ssml","atom","rss"],aliasTitles:{html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",ssml:"SSML",atom:"Atom",rss:"RSS"},option:"default"},css:{title:"CSS",option:"default",modify:"markup"},clike:{title:"C-like",option:"default"},javascript:{title:"JavaScript",require:"clike",modify:"markup",optional:"regex",alias:"js",option:"default"},abap:{title:"ABAP",owner:"dellagustin"},abnf:{title:"ABNF",owner:"RunDevelopment"},actionscript:{title:"ActionScript",require:"javascript",modify:"markup",owner:"Golmote"},ada:{title:"Ada",owner:"Lucretia"},agda:{title:"Agda",owner:"xy-ren"},al:{title:"AL",owner:"RunDevelopment"},antlr4:{title:"ANTLR4",alias:"g4",owner:"RunDevelopment"},apacheconf:{title:"Apache Configuration",owner:"GuiTeK"},apex:{title:"Apex",require:["clike","sql"],owner:"RunDevelopment"},apl:{title:"APL",owner:"ngn"},applescript:{title:"AppleScript",owner:"Golmote"},aql:{title:"AQL",owner:"RunDevelopment"},arduino:{title:"Arduino",require:"cpp",owner:"dkern"},arff:{title:"ARFF",owner:"Golmote"},asciidoc:{alias:"adoc",title:"AsciiDoc",owner:"Golmote"},aspnet:{title:"ASP.NET (C#)",require:["markup","csharp"],owner:"nauzilus"},asm6502:{title:"6502 Assembly",owner:"kzurawel"},autohotkey:{title:"AutoHotkey",owner:"aviaryan"},autoit:{title:"AutoIt",owner:"Golmote"},bash:{title:"Bash",alias:"shell",aliasTitles:{shell:"Shell"},owner:"zeitgeist87"},basic:{title:"BASIC",owner:"Golmote"},batch:{title:"Batch",owner:"Golmote"},bbcode:{title:"BBcode",alias:"shortcode",aliasTitles:{shortcode:"Shortcode"},owner:"RunDevelopment"},birb:{title:"Birb",require:"clike",owner:"Calamity210"},bison:{title:"Bison",require:"c",owner:"Golmote"},bnf:{title:"BNF",alias:"rbnf",aliasTitles:{rbnf:"RBNF"},owner:"RunDevelopment"},brainfuck:{title:"Brainfuck",owner:"Golmote"},brightscript:{title:"BrightScript",owner:"RunDevelopment"},bro:{title:"Bro",owner:"wayward710"},bsl:{title:"BSL (1C:Enterprise)",alias:"oscript",aliasTitles:{oscript:"OneScript"},owner:"Diversus23"},c:{title:"C",require:"clike",owner:"zeitgeist87"},csharp:{title:"C#",require:"clike",alias:["cs","dotnet"],owner:"mvalipour"},cpp:{title:"C++",require:"c",owner:"zeitgeist87"},cil:{title:"CIL",owner:"sbrl"},clojure:{title:"Clojure",owner:"troglotit"},cmake:{title:"CMake",owner:"mjrogozinski"},coffeescript:{title:"CoffeeScript",require:"javascript",alias:"coffee",owner:"R-osey"},concurnas:{title:"Concurnas",alias:"conc",owner:"jasontatton"},csp:{title:"Content-Security-Policy",owner:"ScottHelme"},crystal:{title:"Crystal",require:"ruby",owner:"MakeNowJust"},"css-extras":{title:"CSS Extras",require:"css",modify:"css",owner:"milesj"},cypher:{title:"Cypher",owner:"RunDevelopment"},d:{title:"D",require:"clike",owner:"Golmote"},dart:{title:"Dart",require:"clike",owner:"Golmote"},dataweave:{title:"DataWeave",owner:"machaval"},dax:{title:"DAX",owner:"peterbud"},dhall:{title:"Dhall",owner:"RunDevelopment"},diff:{title:"Diff",owner:"uranusjr"},django:{title:"Django/Jinja2",require:"markup-templating",alias:"jinja2",owner:"romanvm"},"dns-zone-file":{title:"DNS zone file",owner:"RunDevelopment",alias:"dns-zone"},docker:{title:"Docker",alias:"dockerfile",owner:"JustinBeckwith"},ebnf:{title:"EBNF",owner:"RunDevelopment"},editorconfig:{title:"EditorConfig",owner:"osipxd"},eiffel:{title:"Eiffel",owner:"Conaclos"},ejs:{title:"EJS",require:["javascript","markup-templating"],owner:"RunDevelopment",alias:"eta",aliasTitles:{eta:"Eta"}},elixir:{title:"Elixir",owner:"Golmote"},elm:{title:"Elm",owner:"zwilias"},etlua:{title:"Embedded Lua templating",require:["lua","markup-templating"],owner:"RunDevelopment"},erb:{title:"ERB",require:["ruby","markup-templating"],owner:"Golmote"},erlang:{title:"Erlang",owner:"Golmote"},"excel-formula":{title:"Excel Formula",alias:["xlsx","xls"],owner:"RunDevelopment"},fsharp:{title:"F#",require:"clike",owner:"simonreynolds7"},factor:{title:"Factor",owner:"catb0t"},"firestore-security-rules":{title:"Firestore security rules",require:"clike",owner:"RunDevelopment"},flow:{title:"Flow",require:"javascript",owner:"Golmote"},fortran:{title:"Fortran",owner:"Golmote"},ftl:{title:"FreeMarker Template Language",require:"markup-templating",owner:"RunDevelopment"},gml:{title:"GameMaker Language",alias:"gamemakerlanguage",require:"clike",owner:"LiarOnce"},gcode:{title:"G-code",owner:"RunDevelopment"},gdscript:{title:"GDScript",owner:"RunDevelopment"},gedcom:{title:"GEDCOM",owner:"Golmote"},gherkin:{title:"Gherkin",owner:"hason"},git:{title:"Git",owner:"lgiraudel"},glsl:{title:"GLSL",require:"c",owner:"Golmote"},go:{title:"Go",require:"clike",owner:"arnehormann"},graphql:{title:"GraphQL",optional:["markdown"],owner:"Golmote"},groovy:{title:"Groovy",require:"clike",owner:"robfletcher"},haml:{title:"Haml",require:"ruby",optional:["css","css-extras","coffeescript","erb","javascript","less","markdown","scss","textile"],owner:"Golmote"},handlebars:{title:"Handlebars",require:"markup-templating",owner:"Golmote"},haskell:{title:"Haskell",alias:"hs",owner:"bholst"},haxe:{title:"Haxe",require:"clike",owner:"Golmote"},hcl:{title:"HCL",owner:"outsideris"},hlsl:{title:"HLSL",require:"c",owner:"RunDevelopment"},http:{title:"HTTP",optional:["css","javascript","json","markup"],owner:"danielgtaylor"},hpkp:{title:"HTTP Public-Key-Pins",owner:"ScottHelme"},hsts:{title:"HTTP Strict-Transport-Security",owner:"ScottHelme"},ichigojam:{title:"IchigoJam",owner:"BlueCocoa"},icon:{title:"Icon",owner:"Golmote"},ignore:{title:".ignore",owner:"osipxd",alias:["gitignore","hgignore","npmignore"],aliasTitles:{gitignore:".gitignore",hgignore:".hgignore",npmignore:".npmignore"}},inform7:{title:"Inform 7",owner:"Golmote"},ini:{title:"Ini",owner:"aviaryan"},io:{title:"Io",owner:"AlesTsurko"},j:{title:"J",owner:"Golmote"},java:{title:"Java",require:"clike",owner:"sherblot"},javadoc:{title:"JavaDoc",require:["markup","java","javadoclike"],modify:"java",optional:"scala",owner:"RunDevelopment"},javadoclike:{title:"JavaDoc-like",modify:["java","javascript","php"],owner:"RunDevelopment"},javastacktrace:{title:"Java stack trace",owner:"RunDevelopment"},jolie:{title:"Jolie",require:"clike",owner:"thesave"},jq:{title:"JQ",owner:"RunDevelopment"},jsdoc:{title:"JSDoc",require:["javascript","javadoclike","typescript"],modify:"javascript",optional:["actionscript","coffeescript"],owner:"RunDevelopment"},"js-extras":{title:"JS Extras",require:"javascript",modify:"javascript",optional:["actionscript","coffeescript","flow","n4js","typescript"],owner:"RunDevelopment"},json:{title:"JSON",alias:"webmanifest",aliasTitles:{webmanifest:"Web App Manifest"},owner:"CupOfTea696"},json5:{title:"JSON5",require:"json",owner:"RunDevelopment"},jsonp:{title:"JSONP",require:"json",owner:"RunDevelopment"},jsstacktrace:{title:"JS stack trace",owner:"sbrl"},"js-templates":{title:"JS Templates",require:"javascript",modify:"javascript",optional:["css","css-extras","graphql","markdown","markup"],owner:"RunDevelopment"},julia:{title:"Julia",owner:"cdagnino"},keyman:{title:"Keyman",owner:"mcdurdin"},kotlin:{title:"Kotlin",alias:["kt","kts"],aliasTitles:{kts:"Kotlin Script"},require:"clike",owner:"Golmote"},latex:{title:"LaTeX",alias:["tex","context"],aliasTitles:{tex:"TeX",context:"ConTeXt"},owner:"japborst"},latte:{title:"Latte",require:["clike","markup-templating","php"],owner:"nette"},less:{title:"Less",require:"css",optional:"css-extras",owner:"Golmote"},lilypond:{title:"LilyPond",require:"scheme",alias:"ly",owner:"RunDevelopment"},liquid:{title:"Liquid",owner:"cinhtau"},lisp:{title:"Lisp",alias:["emacs","elisp","emacs-lisp"],owner:"JuanCaicedo"},livescript:{title:"LiveScript",owner:"Golmote"},llvm:{title:"LLVM IR",owner:"porglezomp"},lolcode:{title:"LOLCODE",owner:"Golmote"},lua:{title:"Lua",owner:"Golmote"},makefile:{title:"Makefile",owner:"Golmote"},markdown:{title:"Markdown",require:"markup",optional:"yaml",alias:"md",owner:"Golmote"},"markup-templating":{title:"Markup templating",require:"markup",owner:"Golmote"},matlab:{title:"MATLAB",owner:"Golmote"},mel:{title:"MEL",owner:"Golmote"},mizar:{title:"Mizar",owner:"Golmote"},mongodb:{title:"MongoDB",owner:"airs0urce",require:"javascript"},monkey:{title:"Monkey",owner:"Golmote"},moonscript:{title:"MoonScript",alias:"moon",owner:"RunDevelopment"},n1ql:{title:"N1QL",owner:"TMWilds"},n4js:{title:"N4JS",require:"javascript",optional:"jsdoc",alias:"n4jsd",owner:"bsmith-n4"},"nand2tetris-hdl":{title:"Nand To Tetris HDL",owner:"stephanmax"},naniscript:{title:"Naninovel Script",owner:"Elringus",alias:"nani"},nasm:{title:"NASM",owner:"rbmj"},neon:{title:"NEON",owner:"nette"},nginx:{title:"nginx",owner:"westonganger",require:"clike"},nim:{title:"Nim",owner:"Golmote"},nix:{title:"Nix",owner:"Golmote"},nsis:{title:"NSIS",owner:"idleberg"},objectivec:{title:"Objective-C",require:"c",alias:"objc",owner:"uranusjr"},ocaml:{title:"OCaml",owner:"Golmote"},opencl:{title:"OpenCL",require:"c",modify:["c","cpp"],owner:"Milania1"},oz:{title:"Oz",owner:"Golmote"},parigp:{title:"PARI/GP",owner:"Golmote"},parser:{title:"Parser",require:"markup",owner:"Golmote"},pascal:{title:"Pascal",alias:"objectpascal",aliasTitles:{objectpascal:"Object Pascal"},owner:"Golmote"},pascaligo:{title:"Pascaligo",owner:"DefinitelyNotAGoat"},pcaxis:{title:"PC-Axis",alias:"px",owner:"RunDevelopment"},peoplecode:{title:"PeopleCode",alias:"pcode",owner:"RunDevelopment"},perl:{title:"Perl",owner:"Golmote"},php:{title:"PHP",require:"markup-templating",owner:"milesj"},phpdoc:{title:"PHPDoc",require:["php","javadoclike"],modify:"php",owner:"RunDevelopment"},"php-extras":{title:"PHP Extras",require:"php",modify:"php",owner:"milesj"},plsql:{title:"PL/SQL",require:"sql",owner:"Golmote"},powerquery:{title:"PowerQuery",alias:["pq","mscript"],owner:"peterbud"},powershell:{title:"PowerShell",owner:"nauzilus"},processing:{title:"Processing",require:"clike",owner:"Golmote"},prolog:{title:"Prolog",owner:"Golmote"},promql:{title:"PromQL",owner:"arendjr"},properties:{title:".properties",owner:"Golmote"},protobuf:{title:"Protocol Buffers",require:"clike",owner:"just-boris"},pug:{title:"Pug",require:["markup","javascript"],optional:["coffeescript","ejs","handlebars","less","livescript","markdown","scss","stylus","twig"],owner:"Golmote"},puppet:{title:"Puppet",owner:"Golmote"},pure:{title:"Pure",optional:["c","cpp","fortran"],owner:"Golmote"},purebasic:{title:"PureBasic",require:"clike",alias:"pbfasm",owner:"HeX0R101"},purescript:{title:"PureScript",require:"haskell",alias:"purs",owner:"sriharshachilakapati"},python:{title:"Python",alias:"py",owner:"multipetros"},q:{title:"Q (kdb+ database)",owner:"Golmote"},qml:{title:"QML",require:"javascript",owner:"RunDevelopment"},qore:{title:"Qore",require:"clike",owner:"temnroegg"},r:{title:"R",owner:"Golmote"},racket:{title:"Racket",require:"scheme",alias:"rkt",owner:"RunDevelopment"},jsx:{title:"React JSX",require:["markup","javascript"],optional:["jsdoc","js-extras","js-templates"],owner:"vkbansal"},tsx:{title:"React TSX",require:["jsx","typescript"]},reason:{title:"Reason",require:"clike",owner:"Golmote"},regex:{title:"Regex",owner:"RunDevelopment"},renpy:{title:"Ren'py",alias:"rpy",owner:"HyuchiaDiego"},rest:{title:"reST (reStructuredText)",owner:"Golmote"},rip:{title:"Rip",owner:"ravinggenius"},roboconf:{title:"Roboconf",owner:"Golmote"},robotframework:{title:"Robot Framework",alias:"robot",owner:"RunDevelopment"},ruby:{title:"Ruby",require:"clike",alias:"rb",owner:"samflores"},rust:{title:"Rust",owner:"Golmote"},sas:{title:"SAS",optional:["groovy","lua","sql"],owner:"Golmote"},sass:{title:"Sass (Sass)",require:"css",owner:"Golmote"},scss:{title:"Sass (Scss)",require:"css",optional:"css-extras",owner:"MoOx"},scala:{title:"Scala",require:"java",owner:"jozic"},scheme:{title:"Scheme",owner:"bacchus123"},"shell-session":{title:"Shell session",require:"bash",alias:["sh-session","shellsession"],owner:"RunDevelopment"},smali:{title:"Smali",owner:"RunDevelopment"},smalltalk:{title:"Smalltalk",owner:"Golmote"},smarty:{title:"Smarty",require:"markup-templating",owner:"Golmote"},sml:{title:"SML",alias:"smlnj",aliasTitles:{smlnj:"SML/NJ"},owner:"RunDevelopment"},solidity:{title:"Solidity (Ethereum)",alias:"sol",require:"clike",owner:"glachaud"},"solution-file":{title:"Solution file",alias:"sln",owner:"RunDevelopment"},soy:{title:"Soy (Closure Template)",require:"markup-templating",owner:"Golmote"},sparql:{title:"SPARQL",require:"turtle",owner:"Triply-Dev",alias:"rq"},"splunk-spl":{title:"Splunk SPL",owner:"RunDevelopment"},sqf:{title:"SQF: Status Quo Function (Arma 3)",require:"clike",owner:"RunDevelopment"},sql:{title:"SQL",owner:"multipetros"},stan:{title:"Stan",owner:"RunDevelopment"},iecst:{title:"Structured Text (IEC 61131-3)",owner:"serhioromano"},stylus:{title:"Stylus",owner:"vkbansal"},swift:{title:"Swift",require:"clike",owner:"chrischares"},"t4-templating":{title:"T4 templating",owner:"RunDevelopment"},"t4-cs":{title:"T4 Text Templates (C#)",require:["t4-templating","csharp"],alias:"t4",owner:"RunDevelopment"},"t4-vb":{title:"T4 Text Templates (VB)",require:["t4-templating","vbnet"],owner:"RunDevelopment"},tap:{title:"TAP",owner:"isaacs",require:"yaml"},tcl:{title:"Tcl",owner:"PeterChaplin"},tt2:{title:"Template Toolkit 2",require:["clike","markup-templating"],owner:"gflohr"},textile:{title:"Textile",require:"markup",optional:"css",owner:"Golmote"},toml:{title:"TOML",owner:"RunDevelopment"},turtle:{title:"Turtle",alias:"trig",aliasTitles:{trig:"TriG"},owner:"jakubklimek"},twig:{title:"Twig",require:"markup",owner:"brandonkelly"},typescript:{title:"TypeScript",require:"javascript",optional:"js-templates",alias:"ts",owner:"vkbansal"},typoscript:{title:"TypoScript",alias:"tsconfig",aliasTitles:{tsconfig:"TSConfig"},owner:"dkern"},unrealscript:{title:"UnrealScript",alias:["uscript","uc"],owner:"RunDevelopment"},vala:{title:"Vala",require:"clike",optional:"regex",owner:"TemplarVolk"},vbnet:{title:"VB.Net",require:"basic",owner:"Bigsby"},velocity:{title:"Velocity",require:"markup",owner:"Golmote"},verilog:{title:"Verilog",owner:"a-rey"},vhdl:{title:"VHDL",owner:"a-rey"},vim:{title:"vim",owner:"westonganger"},"visual-basic":{title:"Visual Basic",alias:["vb","vba"],aliasTitles:{vba:"VBA"},owner:"Golmote"},warpscript:{title:"WarpScript",owner:"RunDevelopment"},wasm:{title:"WebAssembly",owner:"Golmote"},wiki:{title:"Wiki markup",require:"markup",owner:"Golmote"},xeora:{title:"Xeora",require:"markup",alias:"xeoracube",aliasTitles:{xeoracube:"XeoraCube"},owner:"freakmaxi"},"xml-doc":{title:"XML doc (.net)",require:"markup",modify:["csharp","fsharp","vbnet"],owner:"RunDevelopment"},xojo:{title:"Xojo (REALbasic)",owner:"Golmote"},xquery:{title:"XQuery",require:"markup",owner:"Golmote"},yaml:{title:"YAML",alias:"yml",owner:"hason"},yang:{title:"YANG",owner:"RunDevelopment"},zig:{title:"Zig",owner:"RunDevelopment"}},plugins:{meta:{path:"plugins/{id}/prism-{id}",link:"plugins/{id}/"},"line-highlight":{title:"Line Highlight",description:"Highlights specific lines and/or line ranges."},"line-numbers":{title:"Line Numbers",description:"Line number at the beginning of code lines.",owner:"kuba-kubula"},"show-invisibles":{title:"Show Invisibles",description:"Show hidden characters such as tabs and line breaks.",optional:["autolinker","data-uri-highlight"]},autolinker:{title:"Autolinker",description:"Converts URLs and emails in code to clickable links. Parses Markdown links in comments."},wpd:{title:"WebPlatform Docs",description:'Makes tokens link to <a href="https://webplatform.github.io/docs/">WebPlatform.org documentation</a>. The links open in a new tab.'},"custom-class":{title:"Custom Class",description:"This plugin allows you to prefix Prism's default classes (<code>.comment</code> can become <code>.namespace--comment</code>) or replace them with your defined ones (like <code>.editor__comment</code>). You can even add new classes.",owner:"dvkndn",noCSS:!0},"file-highlight":{title:"File Highlight",description:"Fetch external files and highlight them with Prism. Used on the Prism website itself.",noCSS:!0},"show-language":{title:"Show Language",description:"Display the highlighted language in code blocks (inline code does not show the label).",owner:"nauzilus",noCSS:!0,require:"toolbar"},"jsonp-highlight":{title:"JSONP Highlight",description:"Fetch content with JSONP and highlight some interesting content (e.g. GitHub/Gists or Bitbucket API).",noCSS:!0,owner:"nauzilus"},"highlight-keywords":{title:"Highlight Keywords",description:"Adds special CSS classes for each keyword matched in the code. For example, the keyword <code>if</code> will have the class <code>keyword-if</code> as well. You can have fine grained control over the appearance of each keyword by providing your own CSS rules.",owner:"vkbansal",noCSS:!0},"remove-initial-line-feed":{title:"Remove initial line feed",description:"Removes the initial line feed in code blocks.",owner:"Golmote",noCSS:!0},"inline-color":{title:"Inline color",description:"Adds a small inline preview for colors in style sheets.",require:"css-extras",owner:"RunDevelopment"},previewers:{title:"Previewers",description:"Previewers for angles, colors, gradients, easing and time.",require:"css-extras",owner:"Golmote"},autoloader:{title:"Autoloader",description:"Automatically loads the needed languages to highlight the code blocks.",owner:"Golmote",noCSS:!0},"keep-markup":{title:"Keep Markup",description:"Prevents custom markup from being dropped out during highlighting.",owner:"Golmote",optional:"normalize-whitespace",noCSS:!0},"command-line":{title:"Command Line",description:"Display a command line with a prompt and, optionally, the output/response from the commands.",owner:"chriswells0"},"unescaped-markup":{title:"Unescaped Markup",description:"Write markup without having to escape anything."},"normalize-whitespace":{title:"Normalize Whitespace",description:"Supports multiple operations to normalize whitespace in code blocks.",owner:"zeitgeist87",optional:"unescaped-markup",noCSS:!0},"data-uri-highlight":{title:"Data-URI Highlight",description:"Highlights data-URI contents.",owner:"Golmote",noCSS:!0},toolbar:{title:"Toolbar",description:"Attach a toolbar for plugins to easily register buttons on the top of a code block.",owner:"mAAdhaTTah"},"copy-to-clipboard":{title:"Copy to Clipboard Button",description:"Add a button that copies the code block to the clipboard when clicked.",owner:"mAAdhaTTah",require:"toolbar",noCSS:!0},"download-button":{title:"Download Button",description:"A button in the toolbar of a code block adding a convenient way to download a code file.",owner:"Golmote",require:"toolbar",noCSS:!0},"match-braces":{title:"Match braces",description:"Highlights matching braces.",owner:"RunDevelopment"},"diff-highlight":{title:"Diff Highlight",description:"Highlights the code inside diff blocks.",owner:"RunDevelopment",require:"diff"},"filter-highlight-all":{title:"Filter highlightAll",description:"Filters the elements the <code>highlightAll</code> and <code>highlightAllUnder</code> methods actually highlight.",owner:"RunDevelopment",noCSS:!0},treeview:{title:"Treeview",description:"A language with special styles to highlight file system tree structures.",owner:"Golmote"}}})},function(e,t,n){"use strict";var r=function(){var e=function(){};function t(e,t){Array.isArray(e)?e.forEach(t):null!=e&&t(e,0)}function n(e){for(var t={},n=0,r=e.length;n<r;n++)t[e[n]]=!0;return t}function r(e){var n={},r=[];function o(r,i){if(!(r in n)){i.push(r);var a=i.indexOf(r);if(a<i.length-1)throw new Error("Circular dependency: "+i.slice(a).join(" -> "));var s={},l=e[r];if(l){function c(t){if(!(t in e))throw new Error(r+" depends on an unknown component "+t);if(!(t in s))for(var a in o(t,i),s[t]=!0,n[t])s[a]=!0}t(l.require,c),t(l.optional,c),t(l.modify,c)}n[r]=s,i.pop()}}return function(e){var t=n[e];return t||(o(e,r),t=n[e]),t}}function o(e){for(var t in e)return!0;return!1}return function(i,a,s){var l=function(e){var t={};for(var n in e){var r=e[n];for(var o in r)if("meta"!=o){var i=r[o];t[o]="string"==typeof i?{title:i}:i}}return t}(i),c=function(e){var n;return function(r){if(r in e)return r;if(!n)for(var o in n={},e){var i=e[o];t(i&&i.alias,(function(t){if(t in n)throw new Error(t+" cannot be alias for both "+o+" and "+n[t]);if(t in e)throw new Error(t+" cannot be alias of "+o+" because it is a component.");n[t]=o}))}return n[r]||r}}(l);a=a.map(c),s=(s||[]).map(c);var u=n(a),d=n(s);a.forEach((function e(n){var r=l[n];t(r&&r.require,(function(t){t in d||(u[t]=!0,e(t))}))}));for(var p,f=r(l),m=u;o(m);){for(var h in p={},m){var g=l[h];t(g&&g.modify,(function(e){e in d&&(p[e]=!0)}))}for(var b in d)if(!(b in u))for(var v in f(b))if(v in u){p[b]=!0;break}for(var y in m=p)u[y]=!0}var w={getIds:function(){var e=[];return w.load((function(t){e.push(t)})),e},load:function(t,n){return function(t,n,r,o){const i=o?o.series:void 0,a=o?o.parallel:e;var s={},l={};function c(e){if(e in s)return s[e];l[e]=!0;var o,u=[];for(var d in t(e))d in n&&u.push(d);if(0===u.length)o=r(e);else{var p=a(u.map((function(e){var t=c(e);return delete l[e],t})));i?o=i(p,(function(){return r(e)})):r(e)}return s[e]=o}for(var u in n)c(u);var d=[];for(var p in l)d.push(s[p]);return a(d)}(f,u,t,n)}};return w}}();e.exports=r},,,function(e,t,n){"use strict";n.r(t);var r=n(0),o=n.n(r),i=n(28),a=n(10),s=n(19),l=n.n(s),c=function(e){var t=e.error,n=e.retry,r=e.pastDelay;return t?o.a.createElement("div",{style:{align:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"}},o.a.createElement("p",null,t.message),o.a.createElement("div",null,o.a.createElement("button",{type:"button",onClick:n},"Retry"))):r?o.a.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"}},o.a.createElement("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb"},o.a.createElement("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2"},o.a.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},o.a.createElement("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),o.a.createElement("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),o.a.createElement("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),o.a.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},o.a.createElement("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),o.a.createElement("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),o.a.createElement("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),o.a.createElement("circle",{cx:"22",cy:"22",r:"8"},o.a.createElement("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"}))))):null},u=n(13),d={"0581431b":[function(){return n.e(3).then(n.bind(null,68))},"@site/docs/userDocs/submarine-sdk/experiment-client.md",68],"0b49bfb5":[function(){return n.e(4).then(n.bind(null,69))},"@site/versioned_docs/version-0.6.0/userDocs/yarn/Dockerfiles.md",69],"0bc74cd0":[function(){return n.e(5).then(n.bind(null,70))},"@site/versioned_docs/version-0.6.0/gettingStarted/helm.md",70],"0c952090":[function(){return n.e(6).then(n.bind(null,71))},"@site/docs/gettingStarted/python-sdk.md",71],"0e4b5d7a":[function(){return n.e(7).then(n.bind(null,72))},"@site/versioned_docs/version-0.6.0/userDocs/api/experiment-template.md",72],"10dc6c9a":[function(){return n.e(8).then(n.bind(null,73))},"@site/versioned_docs/version-0.6.0/userDocs/others/mlflow.md",73],11695589:[function(){return n.e(9).then(n.bind(null,74))},"@site/docs/userDocs/api/experiment.md",74],"11fdf8a8":[function(){return n.e(10).then(n.bind(null,75))},"@site/docs/gettingStarted/helm.md",75],17896441:[function(){return Promise.all([n.e(0),n.e(1),n.e(11)]).then(n.bind(null,207))},"@theme/DocItem",207],"18b93cb3":[function(){return Promise.all([n.e(0),n.e(1),n.e(2),n.e(12)]).then(n.bind(null,78))},"@site/src/pages/versions.js",78],"1be78505":[function(){return Promise.all([n.e(0),n.e(1),n.e(2),n.e(143),n.e(13)]).then(n.bind(null,208))},"@theme/DocPage",208],"1dbe41c3":[function(){return n.e(14).then(n.bind(null,81))},"@site/docs/userDocs/others/tensorboard.md",81],"1f391b9e":[function(){return Promise.all([n.e(0),n.e(1),n.e(2),n.e(144),n.e(15)]).then(n.bind(null,82))},"@theme/MDXPage",82],"22885c43":[function(){return n.e(16).then(n.bind(null,83))},"@site/docs/adminDocs/yarn/TestAndTroubleshooting.md",83],"22e91045":[function(){return n.e(17).then(n.bind(null,84))},"@site/docs/userDocs/api/environment.md",84],"27f12fe0":[function(){return n.e(18).then(n.bind(null,85))},"@site/versioned_docs/version-0.6.0/userDocs/yarn/YARNRuntimeGuide.md",85],"2bab9bf0":[function(){return n.e(19).then(n.bind(null,86))},"@site/versioned_docs/version-0.6.0/userDocs/submarine-sdk/tracking.md",86],"2d4ab289":[function(){return n.e(20).then(n.bind(null,87))},"@site/docs/community/Bylaws.md",87],"2f44017d":[function(){return n.e(21).then(n.bind(null,88))},"@site/docs/api/environment.md",88],31912795:[function(){return n.e(22).then(n.bind(null,89))},"@site/versioned_docs/version-0.6.0/devDocs/IntegrationTestE2E.md",89],"31b2a22b":[function(){return n.e(23).then(n.bind(null,90))},"@site/versioned_docs/version-0.6.0/designDocs/notebook-implementation.md",90],"3315d736":[function(){return n.e(24).then(n.bind(null,91))},"@site/src/pages/releases/submarine-release-0.3.0.md",91],"3593fe0f":[function(){return n.e(25).then(n.bind(null,92))},"@site/versioned_docs/version-0.6.0/devDocs/Dependencies.md",92],"35de792d":[function(){return n.e(26).then(n.bind(null,93))},"@site/versioned_docs/version-0.6.0/gettingStarted/localDeployment.md",93],"380d7376":[function(){return n.e(27).then(n.bind(null,94))},"@site/versioned_docs/version-0.6.0/userDocs/yarn/TestAndTroubleshooting.md",94],"389ecd94":[function(){return n.e(28).then(n.bind(null,95))},"@site/docs/adminDocs/yarn/workbench/README.zh-CN.md",95],"3af95f13":[function(){return n.e(29).then(n.bind(null,96))},"@site/docs/api/serve.md",96],40951386:[function(){return n.e(30).then(n.bind(null,97))},"@site/docs/designDocs/submarine-server/experimentSpec.md",97],"43326f7a":[function(){return n.e(31).then(n.bind(null,98))},"@site/versioned_docs/version-0.6.0/api/notebook.md",98],"446ff6dc":[function(){return n.e(32).then(n.bind(null,99))},"@site/versioned_docs/version-0.6.0/devDocs/IntegrationTestK8s.md",99],"4726afa6":[function(){return n.e(33).then(n.bind(null,100))},"@site/docs/api/experiment-template.md",100],"4f73ab67":[function(){return n.e(34).then(n.bind(null,101))},"@site/docs/gettingStarted/kind.md",101],"5065a48c":[function(){return n.e(35).then(n.bind(null,102))},"@site/versioned_docs/version-0.6.0/designDocs/wip-designs/security-implementation.md",102],"51b2b2c4":[function(){return n.e(36).then(n.bind(null,103))},"@site/versioned_docs/version-0.6.0/userDocs/yarn/WriteDockerfilePT.md",103],"538541c1":[function(){return n.e(37).then(n.bind(null,104))},"@site/versioned_docs/version-0.6.0/designDocs/storage-implementation.md",104],"53cf78e1":[function(){return n.e(38).then(n.bind(null,105))},"@site/docs/userDocs/yarn/TestAndTroubleshooting.md",105],"54b0b691":[function(){return n.e(39).then(n.bind(null,106))},"@site/docs/userDocs/submarine-sdk/README.md",106],"55d1900a":[function(){return n.e(40).then(n.bind(null,107))},"@site/versioned_docs/version-0.6.0/api/environment.md",107],"57a4862f":[function(){return n.e(41).then(n.bind(null,108))},"@site/docs/userDocs/yarn/Dockerfiles.md",108],"58f10d9f":[function(){return n.e(42).then(n.t.bind(null,109,3))},"~docs/default/version-0-6-0-metadata-prop-089.json",109],"59e7e97e":[function(){return n.e(43).then(n.bind(null,110))},"@site/docs/userDocs/submarine-sdk/submarine-cli.md",110],"5a22443f":[function(){return n.e(44).then(n.bind(null,111))},"@site/docs/adminDocs/yarn/workbench/README.md",111],"5de1a2b0":[function(){return n.e(45).then(n.bind(null,112))},"@site/versioned_docs/version-0.6.0/userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin.md",112],"5e036026":[function(){return n.e(46).then(n.bind(null,113))},"@site/versioned_docs/version-0.6.0/userDocs/api/environment.md",113],"5e9f5e1a":[function(){return Promise.resolve().then(n.bind(null,9))},"@generated/docusaurus.config",9],"5f165a74":[function(){return n.e(47).then(n.bind(null,114))},"@site/versioned_docs/version-0.6.0/adminDocs/yarn/workbench/HowToRun.md",114],"5f825119":[function(){return n.e(48).then(n.bind(null,115))},"@site/docs/gettingStarted/quickstart.md",115],"6088480f":[function(){return n.e(49).then(n.bind(null,116))},"@site/versioned_docs/version-0.6.0/adminDocs/yarn/workbench/README.zh-CN.md",116],"61cc1a3d":[function(){return n.e(50).then(n.bind(null,117))},"@site/docs/community/contributing.md",117],"63f0eece":[function(){return n.e(51).then(n.bind(null,118))},"@site/docs/designDocs/implementation-notes.md",118],"66ca1d53":[function(){return n.e(52).then(n.bind(null,119))},"@site/versioned_docs/version-0.6.0/gettingStarted/kind.md",119],"6a132804":[function(){return n.e(53).then(n.bind(null,120))},"@site/versioned_docs/version-0.6.0/gettingStarted/python-sdk.md",120],"6aa1aeb0":[function(){return n.e(54).then(n.bind(null,121))},"@site/versioned_docs/version-0.6.0/designDocs/experiment-implementation.md",121],"6c58af36":[function(){return n.e(55).then(n.bind(null,122))},"@site/docs/userDocs/yarn/WriteDockerfileMX.md",122],"6d147207":[function(){return n.e(56).then(n.bind(null,123))},"@site/docs/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs.md",123],"6df4a83b":[function(){return n.e(57).then(n.bind(null,124))},"@site/docs/designDocs/wip-designs/security-implementation.md",124],"6e852da3":[function(){return n.e(58).then(n.bind(null,125))},"@site/docs/devDocs/HowToVerify.md",125],"7103e683":[function(){return n.e(59).then(n.bind(null,126))},"@site/docs/adminDocs/yarn/workbench/notebook/setup-jupyter.md",126],"710c49d3":[function(){return n.e(60).then(n.bind(null,127))},"@site/versioned_docs/version-0.6.0/designDocs/submarine-server/architecture.md",127],"72f8d982":[function(){return n.e(61).then(n.bind(null,128))},"@site/docs/devDocs/Dependencies.md",128],"73bafbdc":[function(){return n.e(62).then(n.bind(null,129))},"@site/versioned_docs/version-0.6.0/userDocs/api/experiment.md",129],"76720dd8":[function(){return n.e(63).then(n.bind(null,130))},"@site/versioned_docs/version-0.6.0/userDocs/others/tensorboard.md",130],"76a60836":[function(){return n.e(64).then(n.bind(null,131))},"@site/docs/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README.md",131],"781c7eda":[function(){return n.e(65).then(n.bind(null,132))},"@site/versioned_docs/version-0.6.0/userDocs/yarn/WriteDockerfileTF.md",132],"7984174b":[function(){return n.e(66).then(n.bind(null,133))},"@site/docs/userDocs/yarn/WriteDockerfilePT.md",133],"7f965783":[function(){return n.e(67).then(n.bind(null,134))},"@site/versioned_docs/version-0.6.0/designDocs/wip-designs/submarine-clusterServer.md",134],"7fd88130":[function(){return n.e(68).then(n.bind(null,135))},"@site/docs/designDocs/notebook-implementation.md",135],80453470:[function(){return n.e(69).then(n.bind(null,136))},"@site/docs/api/experiment.md",136],"817286e8":[function(){return n.e(70).then(n.bind(null,137))},"@site/docs/designDocs/wip-designs/submarine-launcher.md",137],"82a4a2ce":[function(){return n.e(71).then(n.bind(null,138))},"@site/docs/userDocs/others/mlflow.md",138],"85b50ba6":[function(){return n.e(72).then(n.bind(null,139))},"@site/versioned_docs/version-0.6.0/ecosystem/kaldi/WriteDockerfileKaldi.md",139],"876793d7":[function(){return n.e(73).then(n.bind(null,140))},"@site/versioned_docs/version-0.6.0/designDocs/environments-implementation.md",140],"897bc7ae":[function(){return n.e(74).then(n.bind(null,141))},"@site/docs/devDocs/Development.md",141],"89982a88":[function(){return n.e(75).then(n.bind(null,142))},"@site/docs/api/model-version.md",142],"8dc7f8a8":[function(){return n.e(76).then(n.bind(null,143))},"@site/docs/ecosystem/kaldi/WriteDockerfileKaldi.md",143],"935f2afb":[function(){return n.e(77).then(n.t.bind(null,144,3))},"~docs/default/version-current-metadata-prop-751.json",144],"97b312ed":[function(){return n.e(78).then(n.bind(null,145))},"@site/docs/devDocs/BuildFromCode.md",145],"9e593273":[function(){return n.e(79).then(n.bind(null,146))},"@site/versioned_docs/version-0.6.0/designDocs/implementation-notes.md",146],a0524152:[function(){return n.e(80).then(n.bind(null,147))},"@site/docs/api/notebook.md",147],a2231a2b:[function(){return n.e(81).then(n.bind(null,148))},"@site/versioned_docs/version-0.6.0/adminDocs/yarn/TestAndTroubleshooting.md",148],a4535337:[function(){return n.e(82).then(n.bind(null,149))},"@site/docs/userDocs/api/experiment-template.md",149],a49341a2:[function(){return n.e(83).then(n.bind(null,150))},"@site/docs/userDocs/submarine-sdk/tracking.md",150],a57e1c0a:[function(){return n.e(84).then(n.bind(null,151))},"@site/docs/community/HowToVoteCommitterOrPMC.md",151],a5ca038b:[function(){return n.e(85).then(n.bind(null,152))},"@site/docs/community/HowToCommit.md",152],a5eec98c:[function(){return n.e(86).then(n.bind(null,153))},"@site/docs/designDocs/storage-implementation.md",153],a658e4e7:[function(){return n.e(87).then(n.bind(null,154))},"@site/versioned_docs/version-0.6.0/community/contributing.md",154],a7e506f8:[function(){return n.e(88).then(n.bind(null,155))},"@site/docs/designDocs/environments-implementation.md",155],a86c7af5:[function(){return n.e(89).then(n.bind(null,156))},"@site/versioned_docs/version-0.6.0/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs.md",156],a8c4e132:[function(){return n.e(90).then(n.bind(null,157))},"@site/versioned_docs/version-0.6.0/userDocs/submarine-sdk/model-client.md",157],a9744973:[function(){return n.e(91).then(n.bind(null,158))},"@site/versioned_docs/version-0.6.0/gettingStarted/quickstart.md",158],ab130550:[function(){return n.e(92).then(n.bind(null,159))},"@site/versioned_docs/version-0.6.0/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README.md",159],ab5e246a:[function(){return n.e(93).then(n.bind(null,160))},"@site/versioned_docs/version-0.6.0/adminDocs/yarn/workbench/README.md",160],abb6be53:[function(){return n.e(94).then(n.bind(null,161))},"@site/versioned_docs/version-0.6.0/community/HowToCommit.md",161],ada24b13:[function(){return n.e(95).then(n.bind(null,162))},"@site/docs/designDocs/submarine-server/architecture.md",162],ae045997:[function(){return n.e(96).then(n.bind(null,163))},"@site/versioned_docs/version-0.6.0/designDocs/architecture-and-requirements.md",163],b3da5595:[function(){return n.e(98).then(n.bind(null,164))},"@site/docs/devDocs/IntegrationTestK8s.md",164],b60f7df5:[function(){return n.e(99).then(n.bind(null,165))},"@site/docs/designDocs/wip-designs/submarine-clusterServer.md",165],b9b5b6b9:[function(){return n.e(100).then(n.bind(null,166))},"@site/docs/devDocs/IntegrationTestE2E.md",166],be249313:[function(){return n.e(101).then(n.bind(null,167))},"@site/docs/userDocs/api/notebook.md",167],be5f9a0f:[function(){return n.e(102).then(n.bind(null,168))},"@site/src/pages/releases/submarine-release-0.5.0.md",168],bf08320e:[function(){return n.e(103).then(n.bind(null,169))},"@site/docs/adminDocs/yarn/workbench/HowToRun.md",169],bf894ff2:[function(){return n.e(104).then(n.bind(null,170))},"@site/docs/community/README.md",170],c18d5a16:[function(){return n.e(105).then(n.bind(null,171))},"@site/docs/gettingStarted/localDeployment.md",171],c28aed56:[function(){return n.e(106).then(n.bind(null,172))},"@site/versioned_docs/version-0.6.0/adminDocs/yarn/workbench/notebook/setup-jupyter.md",172],c4f5d8e4:[function(){return Promise.all([n.e(0),n.e(1),n.e(2),n.e(107)]).then(n.bind(null,173))},"@site/src/pages/index.js",173],c5a80c58:[function(){return n.e(108).then(n.bind(null,175))},"@site/versioned_docs/version-0.6.0/download.md",175],c86e1739:[function(){return n.e(109).then(n.bind(null,176))},"@site/docs/community/HowToBecomeCommitter.md",176],cbc53c13:[function(){return n.e(110).then(n.bind(null,177))},"@site/versioned_docs/version-0.6.0/userDocs/yarn/WriteDockerfileMX.md",177],cbf00e67:[function(){return n.e(111).then(n.bind(null,178))},"@site/docs/designDocs/experiment-implementation.md",178],cce3422b:[function(){return n.e(112).then(n.bind(null,179))},"@site/versioned_docs/version-0.6.0/devDocs/Development.md",179],cd51f9ed:[function(){return n.e(113).then(n.bind(null,180))},"@site/versioned_docs/version-0.6.0/userDocs/api/notebook.md",180],cdfb3821:[function(){return n.e(114).then(n.bind(null,181))},"@site/src/pages/releases/submarine-release-0.2.0.md",181],cf824c09:[function(){return n.e(115).then(n.bind(null,182))},"@site/versioned_docs/version-0.6.0/community/README.md",182],cfa5b027:[function(){return n.e(116).then(n.bind(null,183))},"@site/docs/userDocs/submarine-sdk/pysubmarine/development.md",183],d2a03af7:[function(){return n.e(117).then(n.bind(null,184))},"@site/versioned_docs/version-0.6.0/userDocs/submarine-security/spark-security/README.md",184],d46271b0:[function(){return n.e(118).then(n.bind(null,185))},"@site/versioned_docs/version-0.6.0/devDocs/BuildFromCode.md",185],dd728e8e:[function(){return n.e(119).then(n.bind(null,186))},"@site/src/pages/releases/submarine-release-0.6.0.md",186],e235d551:[function(){return n.e(120).then(n.bind(null,187))},"@site/versioned_docs/version-0.6.0/userDocs/submarine-sdk/README.md",187],e2e9fab8:[function(){return n.e(121).then(n.bind(null,188))},"@site/docs/devDocs/HowToRelease.md",188],e3af4e10:[function(){return n.e(122).then(n.bind(null,189))},"@site/docs/designDocs/architecture-and-requirements.md",189],e9f77c1e:[function(){return n.e(123).then(n.bind(null,190))},"@site/src/pages/releases/submarine-release-0.4.0.md",190],eb4979b3:[function(){return n.e(124).then(n.bind(null,191))},"@site/versioned_docs/version-0.6.0/adminDocs/yarn/README.md",191],ed46a2dd:[function(){return n.e(125).then(n.bind(null,192))},"@site/docs/gettingStarted/notebook.md",192],ee8d19c0:[function(){return n.e(126).then(n.bind(null,193))},"@site/docs/devDocs/README.md",193],ef17f2ad:[function(){return n.e(127).then(n.bind(null,194))},"@site/versioned_docs/version-0.6.0/designDocs/submarine-server/experimentSpec.md",194],f0df3a58:[function(){return n.e(128).then(n.bind(null,195))},"@site/docs/api/registered-model.md",195],f1c2161d:[function(){return n.e(129).then(n.bind(null,196))},"@site/versioned_docs/version-0.6.0/api/experiment.md",196],f2cef85d:[function(){return n.e(130).then(n.bind(null,197))},"@site/versioned_docs/version-0.6.0/gettingStarted/notebook.md",197],f477976c:[function(){return n.e(131).then(n.bind(null,198))},"@site/docs/userDocs/yarn/WriteDockerfileTF.md",198],f5ec27a4:[function(){return n.e(132).then(n.bind(null,199))},"@site/docs/adminDocs/yarn/README.md",199],f6956115:[function(){return n.e(133).then(n.bind(null,200))},"@site/versioned_docs/version-0.6.0/api/experiment-template.md",200],f8f6d32b:[function(){return n.e(134).then(n.bind(null,201))},"@site/versioned_docs/version-0.6.0/designDocs/wip-designs/submarine-launcher.md",201],f9e23376:[function(){return n.e(135).then(n.bind(null,202))},"@site/docs/download.md",202],fa111d7f:[function(){return n.e(136).then(n.bind(null,203))},"@site/docs/userDocs/yarn/YARNRuntimeGuide.md",203],fa8b9269:[function(){return n.e(137).then(n.bind(null,204))},"@site/versioned_docs/version-0.6.0/devDocs/README.md",204],fc109cd1:[function(){return n.e(138).then(n.bind(null,205))},"@site/versioned_docs/version-0.6.0/userDocs/submarine-sdk/experiment-client.md",205],fe5a2634:[function(){return n.e(139).then(n.bind(null,206))},"@site/versioned_docs/version-0.6.0/userDocs/submarine-sdk/pysubmarine/development.md",206]};var p=function(e){var t={};return function e(n,r){Object.keys(n).forEach((function(o){var i=n[o],a=r?r+"."+o:o;"object"===typeof i&&!!i&&Object.keys(i).length?e(i,a):t[a]=i}))}(e),t};var f=function(e,t){if("*"===e)return l()({loading:c,loader:function(){return Promise.all([n.e(0),n.e(1),n.e(2),n.e(145)]).then(n.bind(null,261))}});var r=u[e+"-"+t],i=[],a=[],s={},f=p(r);return Object.keys(f).forEach((function(e){var t=d[f[e]];t&&(s[e]=t[0],i.push(t[1]),a.push(t[2]))})),l.a.Map({loading:c,loader:s,modules:i,webpack:function(){return a},render:function(e,t){var n=JSON.parse(JSON.stringify(r));Object.keys(e).forEach((function(t){for(var r=n,o=t.split("."),i=0;i<o.length-1;i+=1)r=r[o[i]];r[o[o.length-1]]=e[t].default;var a=Object.keys(e[t]).filter((function(e){return"default"!==e}));a&&a.length&&a.forEach((function(n){r[o[o.length-1]][n]=e[t][n]}))}));var i=n.component;return delete n.component,o.a.createElement(i,Object.assign({},n,t))}})},m=[{path:"/",component:f("/","deb"),exact:!0},{path:"/releases/submarine-release-0.2.0",component:f("/releases/submarine-release-0.2.0","cb0"),exact:!0},{path:"/releases/submarine-release-0.3.0",component:f("/releases/submarine-release-0.3.0","a74"),exact:!0},{path:"/releases/submarine-release-0.4.0",component:f("/releases/submarine-release-0.4.0","12e"),exact:!0},{path:"/releases/submarine-release-0.5.0",component:f("/releases/submarine-release-0.5.0","388"),exact:!0},{path:"/releases/submarine-release-0.6.0",component:f("/releases/submarine-release-0.6.0","091"),exact:!0},{path:"/versions",component:f("/versions","b27"),exact:!0},{path:"/docs/next",component:f("/docs/next","3d7"),routes:[{path:"/docs/next/",component:f("/docs/next/","335"),exact:!0},{path:"/docs/next/adminDocs/yarn/README",component:f("/docs/next/adminDocs/yarn/README","011"),exact:!0},{path:"/docs/next/adminDocs/yarn/TestAndTroubleshooting",component:f("/docs/next/adminDocs/yarn/TestAndTroubleshooting","6b2"),exact:!0},{path:"/docs/next/adminDocs/yarn/workbench/HowToRun",component:f("/docs/next/adminDocs/yarn/workbench/HowToRun","b1f"),exact:!0},{path:"/docs/next/adminDocs/yarn/workbench/notebook/setup-jupyter",component:f("/docs/next/adminDocs/yarn/workbench/notebook/setup-jupyter","b28"),exact:!0},{path:"/docs/next/adminDocs/yarn/workbench/README",component:f("/docs/next/adminDocs/yarn/workbench/README","161"),exact:!0},{path:"/docs/next/adminDocs/yarn/workbench/README.zh-CN",component:f("/docs/next/adminDocs/yarn/workbench/README.zh-CN","c2a"),exact:!0},{path:"/docs/next/api/environment",component:f("/docs/next/api/environment","a53"),exact:!0},{path:"/docs/next/api/experiment",component:f("/docs/next/api/experiment","2a2"),exact:!0},{path:"/docs/next/api/experiment-template",component:f("/docs/next/api/experiment-template","f8c"),exact:!0},{path:"/docs/next/api/model-version",component:f("/docs/next/api/model-version","251"),exact:!0},{path:"/docs/next/api/notebook",component:f("/docs/next/api/notebook","b86"),exact:!0},{path:"/docs/next/api/registered-model",component:f("/docs/next/api/registered-model","a88"),exact:!0},{path:"/docs/next/api/serve",component:f("/docs/next/api/serve","2cb"),exact:!0},{path:"/docs/next/community/Bylaws",component:f("/docs/next/community/Bylaws","232"),exact:!0},{path:"/docs/next/community/contributing",component:f("/docs/next/community/contributing","ac1"),exact:!0},{path:"/docs/next/community/HowToBecomeCommitter",component:f("/docs/next/community/HowToBecomeCommitter","a0e"),exact:!0},{path:"/docs/next/community/HowToCommit",component:f("/docs/next/community/HowToCommit","bea"),exact:!0},{path:"/docs/next/community/HowToVoteCommitterOrPMC",component:f("/docs/next/community/HowToVoteCommitterOrPMC","524"),exact:!0},{path:"/docs/next/community/README",component:f("/docs/next/community/README","ede"),exact:!0},{path:"/docs/next/designDocs/architecture-and-requirements",component:f("/docs/next/designDocs/architecture-and-requirements","cf2"),exact:!0},{path:"/docs/next/designDocs/environments-implementation",component:f("/docs/next/designDocs/environments-implementation","3ef"),exact:!0},{path:"/docs/next/designDocs/experiment-implementation",component:f("/docs/next/designDocs/experiment-implementation","02a"),exact:!0},{path:"/docs/next/designDocs/implementation-notes",component:f("/docs/next/designDocs/implementation-notes","077"),exact:!0},{path:"/docs/next/designDocs/notebook-implementation",component:f("/docs/next/designDocs/notebook-implementation","fec"),exact:!0},{path:"/docs/next/designDocs/storage-implementation",component:f("/docs/next/designDocs/storage-implementation","bc7"),exact:!0},{path:"/docs/next/designDocs/submarine-server/architecture",component:f("/docs/next/designDocs/submarine-server/architecture","bc3"),exact:!0},{path:"/docs/next/designDocs/submarine-server/experimentSpec",component:f("/docs/next/designDocs/submarine-server/experimentSpec","251"),exact:!0},{path:"/docs/next/designDocs/wip-designs/security-implementation",component:f("/docs/next/designDocs/wip-designs/security-implementation","4d5"),exact:!0},{path:"/docs/next/designDocs/wip-designs/submarine-clusterServer",component:f("/docs/next/designDocs/wip-designs/submarine-clusterServer","d0c"),exact:!0},{path:"/docs/next/designDocs/wip-designs/submarine-launcher",component:f("/docs/next/designDocs/wip-designs/submarine-launcher","75e"),exact:!0},{path:"/docs/next/devDocs/BuildFromCode",component:f("/docs/next/devDocs/BuildFromCode","52d"),exact:!0},{path:"/docs/next/devDocs/Dependencies",component:f("/docs/next/devDocs/Dependencies","5eb"),exact:!0},{path:"/docs/next/devDocs/Development",component:f("/docs/next/devDocs/Development","75d"),exact:!0},{path:"/docs/next/devDocs/HowToRelease",component:f("/docs/next/devDocs/HowToRelease","ab2"),exact:!0},{path:"/docs/next/devDocs/HowToVerify",component:f("/docs/next/devDocs/HowToVerify","b21"),exact:!0},{path:"/docs/next/devDocs/IntegrationTestE2E",component:f("/docs/next/devDocs/IntegrationTestE2E","6ca"),exact:!0},{path:"/docs/next/devDocs/IntegrationTestK8s",component:f("/docs/next/devDocs/IntegrationTestK8s","7d7"),exact:!0},{path:"/docs/next/devDocs/README",component:f("/docs/next/devDocs/README","ed9"),exact:!0},{path:"/docs/next/download",component:f("/docs/next/download","bed"),exact:!0},{path:"/docs/next/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs",component:f("/docs/next/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs","a4e"),exact:!0},{path:"/docs/next/ecosystem/kaldi/WriteDockerfileKaldi",component:f("/docs/next/ecosystem/kaldi/WriteDockerfileKaldi","8d4"),exact:!0},{path:"/docs/next/gettingStarted/helm",component:f("/docs/next/gettingStarted/helm","feb"),exact:!0},{path:"/docs/next/gettingStarted/kind",component:f("/docs/next/gettingStarted/kind","13f"),exact:!0},{path:"/docs/next/gettingStarted/notebook",component:f("/docs/next/gettingStarted/notebook","24d"),exact:!0},{path:"/docs/next/gettingStarted/python-sdk",component:f("/docs/next/gettingStarted/python-sdk","003"),exact:!0},{path:"/docs/next/gettingStarted/quickstart",component:f("/docs/next/gettingStarted/quickstart","43a"),exact:!0},{path:"/docs/next/userDocs/api/environment",component:f("/docs/next/userDocs/api/environment","d31"),exact:!0},{path:"/docs/next/userDocs/api/experiment",component:f("/docs/next/userDocs/api/experiment","f1f"),exact:!0},{path:"/docs/next/userDocs/api/experiment-template",component:f("/docs/next/userDocs/api/experiment-template","826"),exact:!0},{path:"/docs/next/userDocs/api/notebook",component:f("/docs/next/userDocs/api/notebook","d81"),exact:!0},{path:"/docs/next/userDocs/others/mlflow",component:f("/docs/next/userDocs/others/mlflow","9fe"),exact:!0},{path:"/docs/next/userDocs/others/tensorboard",component:f("/docs/next/userDocs/others/tensorboard","611"),exact:!0},{path:"/docs/next/userDocs/submarine-sdk/experiment-client",component:f("/docs/next/userDocs/submarine-sdk/experiment-client","5ba"),exact:!0},{path:"/docs/next/userDocs/submarine-sdk/pysubmarine/development",component:f("/docs/next/userDocs/submarine-sdk/pysubmarine/development","33c"),exact:!0},{path:"/docs/next/userDocs/submarine-sdk/README",component:f("/docs/next/userDocs/submarine-sdk/README","d46"),exact:!0},{path:"/docs/next/userDocs/submarine-sdk/submarine-cli",component:f("/docs/next/userDocs/submarine-sdk/submarine-cli","e63"),exact:!0},{path:"/docs/next/userDocs/submarine-sdk/tracking",component:f("/docs/next/userDocs/submarine-sdk/tracking","0ea"),exact:!0},{path:"/docs/next/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README",component:f("/docs/next/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README","0ff"),exact:!0},{path:"/docs/next/userDocs/yarn/Dockerfiles",component:f("/docs/next/userDocs/yarn/Dockerfiles","877"),exact:!0},{path:"/docs/next/userDocs/yarn/TestAndTroubleshooting",component:f("/docs/next/userDocs/yarn/TestAndTroubleshooting","3c1"),exact:!0},{path:"/docs/next/userDocs/yarn/WriteDockerfileMX",component:f("/docs/next/userDocs/yarn/WriteDockerfileMX","405"),exact:!0},{path:"/docs/next/userDocs/yarn/WriteDockerfilePT",component:f("/docs/next/userDocs/yarn/WriteDockerfilePT","5a5"),exact:!0},{path:"/docs/next/userDocs/yarn/WriteDockerfileTF",component:f("/docs/next/userDocs/yarn/WriteDockerfileTF","a7c"),exact:!0},{path:"/docs/next/userDocs/yarn/YARNRuntimeGuide",component:f("/docs/next/userDocs/yarn/YARNRuntimeGuide","6cd"),exact:!0}]},{path:"/docs",component:f("/docs","6ba"),routes:[{path:"/docs/",component:f("/docs/","815"),exact:!0},{path:"/docs/adminDocs/yarn/README",component:f("/docs/adminDocs/yarn/README","bd9"),exact:!0},{path:"/docs/adminDocs/yarn/TestAndTroubleshooting",component:f("/docs/adminDocs/yarn/TestAndTroubleshooting","fa3"),exact:!0},{path:"/docs/adminDocs/yarn/workbench/HowToRun",component:f("/docs/adminDocs/yarn/workbench/HowToRun","f2f"),exact:!0},{path:"/docs/adminDocs/yarn/workbench/notebook/setup-jupyter",component:f("/docs/adminDocs/yarn/workbench/notebook/setup-jupyter","240"),exact:!0},{path:"/docs/adminDocs/yarn/workbench/README",component:f("/docs/adminDocs/yarn/workbench/README","a05"),exact:!0},{path:"/docs/adminDocs/yarn/workbench/README.zh-CN",component:f("/docs/adminDocs/yarn/workbench/README.zh-CN","1c2"),exact:!0},{path:"/docs/api/environment",component:f("/docs/api/environment","834"),exact:!0},{path:"/docs/api/experiment",component:f("/docs/api/experiment","a93"),exact:!0},{path:"/docs/api/experiment-template",component:f("/docs/api/experiment-template","14e"),exact:!0},{path:"/docs/api/notebook",component:f("/docs/api/notebook","0bb"),exact:!0},{path:"/docs/community/contributing",component:f("/docs/community/contributing","585"),exact:!0},{path:"/docs/community/HowToCommit",component:f("/docs/community/HowToCommit","096"),exact:!0},{path:"/docs/community/README",component:f("/docs/community/README","06d"),exact:!0},{path:"/docs/designDocs/architecture-and-requirements",component:f("/docs/designDocs/architecture-and-requirements","75a"),exact:!0},{path:"/docs/designDocs/environments-implementation",component:f("/docs/designDocs/environments-implementation","bef"),exact:!0},{path:"/docs/designDocs/experiment-implementation",component:f("/docs/designDocs/experiment-implementation","492"),exact:!0},{path:"/docs/designDocs/implementation-notes",component:f("/docs/designDocs/implementation-notes","c55"),exact:!0},{path:"/docs/designDocs/notebook-implementation",component:f("/docs/designDocs/notebook-implementation","a2a"),exact:!0},{path:"/docs/designDocs/storage-implementation",component:f("/docs/designDocs/storage-implementation","c89"),exact:!0},{path:"/docs/designDocs/submarine-server/architecture",component:f("/docs/designDocs/submarine-server/architecture","14a"),exact:!0},{path:"/docs/designDocs/submarine-server/experimentSpec",component:f("/docs/designDocs/submarine-server/experimentSpec","cd9"),exact:!0},{path:"/docs/designDocs/wip-designs/security-implementation",component:f("/docs/designDocs/wip-designs/security-implementation","71f"),exact:!0},{path:"/docs/designDocs/wip-designs/submarine-clusterServer",component:f("/docs/designDocs/wip-designs/submarine-clusterServer","345"),exact:!0},{path:"/docs/designDocs/wip-designs/submarine-launcher",component:f("/docs/designDocs/wip-designs/submarine-launcher","25f"),exact:!0},{path:"/docs/devDocs/BuildFromCode",component:f("/docs/devDocs/BuildFromCode","ade"),exact:!0},{path:"/docs/devDocs/Dependencies",component:f("/docs/devDocs/Dependencies","c95"),exact:!0},{path:"/docs/devDocs/Development",component:f("/docs/devDocs/Development","131"),exact:!0},{path:"/docs/devDocs/IntegrationTestE2E",component:f("/docs/devDocs/IntegrationTestE2E","f8c"),exact:!0},{path:"/docs/devDocs/IntegrationTestK8s",component:f("/docs/devDocs/IntegrationTestK8s","a9a"),exact:!0},{path:"/docs/devDocs/README",component:f("/docs/devDocs/README","899"),exact:!0},{path:"/docs/download",component:f("/docs/download","3b7"),exact:!0},{path:"/docs/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs",component:f("/docs/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs","651"),exact:!0},{path:"/docs/ecosystem/kaldi/WriteDockerfileKaldi",component:f("/docs/ecosystem/kaldi/WriteDockerfileKaldi","a1c"),exact:!0},{path:"/docs/gettingStarted/helm",component:f("/docs/gettingStarted/helm","e96"),exact:!0},{path:"/docs/gettingStarted/kind",component:f("/docs/gettingStarted/kind","6b5"),exact:!0},{path:"/docs/gettingStarted/notebook",component:f("/docs/gettingStarted/notebook","a7b"),exact:!0},{path:"/docs/gettingStarted/python-sdk",component:f("/docs/gettingStarted/python-sdk","cff"),exact:!0},{path:"/docs/gettingStarted/quickstart",component:f("/docs/gettingStarted/quickstart","703"),exact:!0},{path:"/docs/userDocs/api/environment",component:f("/docs/userDocs/api/environment","641"),exact:!0},{path:"/docs/userDocs/api/experiment",component:f("/docs/userDocs/api/experiment","6d3"),exact:!0},{path:"/docs/userDocs/api/experiment-template",component:f("/docs/userDocs/api/experiment-template","431"),exact:!0},{path:"/docs/userDocs/api/notebook",component:f("/docs/userDocs/api/notebook","620"),exact:!0},{path:"/docs/userDocs/others/mlflow",component:f("/docs/userDocs/others/mlflow","ced"),exact:!0},{path:"/docs/userDocs/others/tensorboard",component:f("/docs/userDocs/others/tensorboard","17e"),exact:!0},{path:"/docs/userDocs/submarine-sdk/experiment-client",component:f("/docs/userDocs/submarine-sdk/experiment-client","647"),exact:!0},{path:"/docs/userDocs/submarine-sdk/model-client",component:f("/docs/userDocs/submarine-sdk/model-client","5e2"),exact:!0},{path:"/docs/userDocs/submarine-sdk/pysubmarine/development",component:f("/docs/userDocs/submarine-sdk/pysubmarine/development","35e"),exact:!0},{path:"/docs/userDocs/submarine-sdk/README",component:f("/docs/userDocs/submarine-sdk/README","0e5"),exact:!0},{path:"/docs/userDocs/submarine-sdk/tracking",component:f("/docs/userDocs/submarine-sdk/tracking","077"),exact:!0},{path:"/docs/userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin",component:f("/docs/userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin","668"),exact:!0},{path:"/docs/userDocs/submarine-security/spark-security/README",component:f("/docs/userDocs/submarine-security/spark-security/README","e82"),exact:!0},{path:"/docs/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README",component:f("/docs/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README","7a1"),exact:!0},{path:"/docs/userDocs/yarn/Dockerfiles",component:f("/docs/userDocs/yarn/Dockerfiles","7a6"),exact:!0},{path:"/docs/userDocs/yarn/TestAndTroubleshooting",component:f("/docs/userDocs/yarn/TestAndTroubleshooting","e16"),exact:!0},{path:"/docs/userDocs/yarn/WriteDockerfileMX",component:f("/docs/userDocs/yarn/WriteDockerfileMX","f52"),exact:!0},{path:"/docs/userDocs/yarn/WriteDockerfilePT",component:f("/docs/userDocs/yarn/WriteDockerfilePT","054"),exact:!0},{path:"/docs/userDocs/yarn/WriteDockerfileTF",component:f("/docs/userDocs/yarn/WriteDockerfileTF","571"),exact:!0},{path:"/docs/userDocs/yarn/YARNRuntimeGuide",component:f("/docs/userDocs/yarn/YARNRuntimeGuide","f3a"),exact:!0}]},{path:"*",component:f("*")}],h=n(11),g=n(9),b=n(29),v=n(30),y=n(31),w=n(32),k=n(26),x=n(14),E=n(4),T=n(2),S=n(15),D=n.n(S),C=[n(17),n(17),n(17),n(47),n(54),n(51)];function A(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];C.forEach((function(t){var r,o,i=null!==(o=null===(r=null==t?void 0:t.default)||void 0===r?void 0:r[e])&&void 0!==o?o:t[e];i&&i.apply(void 0,n)}))}var _={onRouteUpdate:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];A.apply(void 0,["onRouteUpdate"].concat(t))},onRouteUpdateDelayed:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];A.apply(void 0,["onRouteUpdateDelayed"].concat(t))}},R=n(8);function O(e,t){var n=Object(R.a)(e,t);return Promise.all(n.map((function(e){var t=e.route.component;if(t&&t.preload)return t.preload()})))}var P={};var N=function(e){if(P[e.pathname])return Object.assign(Object.assign({},e),{pathname:P[e.pathname]});var t=e.pathname||"/";return""===(t=t.trim().replace(/\/index\.html$/,""))&&(t="/"),P[e.pathname]=t,Object.assign(Object.assign({},e),{pathname:t})};n(52);D.a.configure({showSpinner:!1});var I=function(e){function t(t){var n;return(n=e.call(this,t)||this).previousLocation=null,n.progressBarTimeout=null,n.state={nextRouteHasLoaded:!0},n}Object(E.a)(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e,t){var n=this,r=e.location!==this.props.location,o=this.props,i=o.routes,a=o.delay,s=void 0===a?1e3:a;if(r){var l=N(e.location);return this.startProgressBar(s),this.previousLocation=N(this.props.location),this.setState({nextRouteHasLoaded:!1}),O(i,l.pathname).then((function(){_.onRouteUpdate({previousLocation:n.previousLocation,location:l}),n.previousLocation=null,n.setState({nextRouteHasLoaded:!0},n.stopProgressBar);var e=l.hash;if(e){var t=decodeURIComponent(e.substring(1)),r=document.getElementById(t);r&&r.scrollIntoView()}else window.scrollTo(0,0)})).catch((function(e){return console.warn(e)})),!1}return!!t.nextRouteHasLoaded},n.clearProgressBarTimeout=function(){this.progressBarTimeout&&(clearTimeout(this.progressBarTimeout),this.progressBarTimeout=null)},n.startProgressBar=function(e){var t=this;this.clearProgressBarTimeout(),this.progressBarTimeout=setTimeout((function(){_.onRouteUpdateDelayed({location:N(t.props.location)}),D.a.start()}),e)},n.stopProgressBar=function(){this.clearProgressBarTimeout(),D.a.done()},n.render=function(){var e=this.props,t=e.children,n=e.location;return o.a.createElement(T.d,{location:N(n),render:function(){return t}})},t}(o.a.Component),M=Object(T.o)(I),j=n(25),L=n(37),F=n.n(L),z=n(22);function B(){var e=Object(z.default)().siteConfig,t=e.baseUrl,n=e.baseUrlIssueBanner,r=Object(T.l)().pathname;if(!(n&&r===t))return null;var i="base-url-issue-banner-container";return o.a.createElement(o.a.Fragment,null,o.a.createElement(j.a,null,o.a.createElement("script",null,"\ndocument.addEventListener('DOMContentLoaded', function () {\n  var baseUrlSuggestion = document.getElementById(\n    'base-url-issue-banner-container',\n  );\n  if (baseUrlSuggestion) {\n    var actualHomePagePath = window.location.pathname;\n    var suggestedBaseUrl = actualHomePagePath.substr(-1) === '/'\n        ? actualHomePagePath\n        : actualHomePagePath + '/';\n    baseUrlSuggestion.innerHTML = suggestedBaseUrl;\n  }\n});\n")),o.a.createElement("div",{className:F.a.baseUrlIssueBanner,style:{border:"solid red thick",backgroundColor:"#ffe6b3",margin:20,padding:20,fontSize:20}},o.a.createElement("p",{style:{fontWeight:"bold",fontSize:30}},"Your Docusaurus site did not load properly."),o.a.createElement("p",null,"A very common reason is a wrong site"," ",o.a.createElement("a",{href:"https://v2.docusaurus.io/docs/docusaurus.config.js/#baseurl",style:{fontWeight:"bold"}},"baseUrl configuration"),"."),o.a.createElement("p",null,"Current configured baseUrl ="," ",o.a.createElement("span",{style:{fontWeight:"bold",color:"red"}},t)," ","/"===t?" (default value)":""),o.a.createElement("p",null,"We suggest trying baseUrl ="," ",o.a.createElement("span",{style:{fontWeight:"bold",color:"green"},id:i})," ")))}var U=function(e){var t=e.children;return o.a.createElement(o.a.Fragment,null,t)};var $=function(){var e=Object(r.useState)(!1),t=e[0],n=e[1];return Object(r.useEffect)((function(){n(!0)}),[]),o.a.createElement(x.a.Provider,{value:{siteConfig:g.default,siteMetadata:w,globalData:b,i18n:v,codeTranslations:y,isClient:t}},o.a.createElement(U,null,o.a.createElement(B,null),o.a.createElement(M,{routes:m},Object(k.a)(m))))};var q=function(e){if("undefined"==typeof document)return!1;var t=document.createElement("link");try{if(t.relList&&"function"==typeof t.relList.supports)return t.relList.supports(e)}catch(n){return!1}return!1}("prefetch")?function(e){return new Promise((function(t,n){if("undefined"!=typeof document){var r=document.createElement("link");r.setAttribute("rel","prefetch"),r.setAttribute("href",e),r.onload=t,r.onerror=n,(document.getElementsByTagName("head")[0]||document.getElementsByName("script")[0].parentNode).appendChild(r)}else n()}))}:function(e){return new Promise((function(t,n){var r=new XMLHttpRequest;r.open("GET",e,!0),r.withCredentials=!0,r.onload=function(){200===r.status?t():n()},r.send(null)}))},H={};var G=function(e){return new Promise((function(t){H[e]?t():q(e).then((function(){t(),H[e]=!0})).catch((function(){}))}))},W={},V={},K=function(){return!(!("connection"in navigator)||-1===(navigator.connection.effectiveType||"").indexOf("2g")||!navigator.connection.saveData)},Y=function(e){return Array.prototype.concat.apply([],e)},Q={prefetch:function(e){if(!function(e){return!K()&&!V[e]&&!W[e]}(e))return!1;W[e]=!0;var t=Object(R.a)(m,e);return Y(t.map((function(e){return t=e.route.path,Y(Object.entries(u).filter((function(e){return e[0].replace(/(-[^-]+)$/,"")===t})).map((function(e){var t=e[1];return Object.values(p(t))})));var t}))).forEach((function(e){var t=n.gca(e);t&&!/undefined/.test(t)&&G(t)})),!0},preload:function(e){return!!function(e){return!K()&&!V[e]}(e)&&(V[e]=!0,O(m,e),!0)}};if(h.a.canUseDOM){window.docusaurus=Q;var X=i.hydrate;O(m,window.location.pathname).then((function(){X(o.a.createElement(a.a,null,o.a.createElement($,null)),document.getElementById("__docusaurus"))}))}},function(e,t,n){"use strict";n.r(t);var r=n(23),o=n(11),i=n(9);(function(e){if(o.a.canUseDOM){var t=i.default.themeConfig.prism,r=(t=void 0===t?{}:t).additionalLanguages,a=void 0===r?[]:r;window.Prism=e,a.forEach((function(e){n(18)("./prism-"+e)})),delete window.Prism}})(r.a)}],[[38,141,0]]]);
\ No newline at end of file
diff --git a/releases/submarine-release-0.2.0/index.html b/releases/submarine-release-0.2.0/index.html
index 8f90f72..c4fd0b0 100644
--- a/releases/submarine-release-0.2.0/index.html
+++ b/releases/submarine-release-0.2.0/index.html
@@ -6,17 +6,17 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Apache Submarine</title><meta data-react-helmet="true" property="og:title" content="Apache Submarine"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//releases/submarine-release-0.2.0"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_tag" content="default"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//releases/submarine-release-0.2.0"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/18b93cb3.603ff4e5.js" as="script">
-<link rel="preload" href="/1be78505.15c0b52a.js" as="script">
-<link rel="preload" href="/c4f5d8e4.89aae0ca.js" as="script">
-<link rel="preload" href="/145.4f2a58d3.js" as="script">
-<link rel="preload" href="/144.74bdeeb7.js" as="script">
-<link rel="preload" href="/cdfb3821.c11034ce.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/18b93cb3.6bc02854.js" as="script">
+<link rel="preload" href="/1be78505.ed765e6d.js" as="script">
+<link rel="preload" href="/c4f5d8e4.4fc79c88.js" as="script">
+<link rel="preload" href="/130.4bee60be.js" as="script">
+<link rel="preload" href="/129.af810dde.js" as="script">
+<link rel="preload" href="/cdfb3821.6a5a5307.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -24,16 +24,16 @@
 46 patches for improvements and bug fixes.</p><p>We encourage to <a href="/docs/download">download</a> the latest release. Feedback through the <a href="/docs/community/README">mailing lists</a> is very welcome.</p><p>You can visit <a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12343240&amp;styleName=&amp;projectId=12316221" target="_blank" rel="noopener noreferrer">issue tracker</a> for full list of issues that are resolved.</p></div></div><div class="col col--2"><div class="tableOfContents_2xL- thin-scrollbar"></div></div></div></div></div></main></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/18b93cb3.603ff4e5.js"></script>
-<script src="/1be78505.15c0b52a.js"></script>
-<script src="/c4f5d8e4.89aae0ca.js"></script>
-<script src="/145.4f2a58d3.js"></script>
-<script src="/144.74bdeeb7.js"></script>
-<script src="/cdfb3821.c11034ce.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/18b93cb3.6bc02854.js"></script>
+<script src="/1be78505.ed765e6d.js"></script>
+<script src="/c4f5d8e4.4fc79c88.js"></script>
+<script src="/130.4bee60be.js"></script>
+<script src="/129.af810dde.js"></script>
+<script src="/cdfb3821.6a5a5307.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/releases/submarine-release-0.3.0/index.html b/releases/submarine-release-0.3.0/index.html
index ffcc872..cff4efd 100644
--- a/releases/submarine-release-0.3.0/index.html
+++ b/releases/submarine-release-0.3.0/index.html
@@ -6,17 +6,17 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Apache Submarine</title><meta data-react-helmet="true" property="og:title" content="Apache Submarine"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//releases/submarine-release-0.3.0"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_tag" content="default"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//releases/submarine-release-0.3.0"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/18b93cb3.603ff4e5.js" as="script">
-<link rel="preload" href="/1be78505.15c0b52a.js" as="script">
-<link rel="preload" href="/c4f5d8e4.89aae0ca.js" as="script">
-<link rel="preload" href="/145.4f2a58d3.js" as="script">
-<link rel="preload" href="/144.74bdeeb7.js" as="script">
-<link rel="preload" href="/3315d736.0400cdd0.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/18b93cb3.6bc02854.js" as="script">
+<link rel="preload" href="/1be78505.ed765e6d.js" as="script">
+<link rel="preload" href="/c4f5d8e4.4fc79c88.js" as="script">
+<link rel="preload" href="/130.4bee60be.js" as="script">
+<link rel="preload" href="/129.af810dde.js" as="script">
+<link rel="preload" href="/3315d736.c8c84c6a.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -24,16 +24,16 @@
 196 patches for improvements and bug fixes. The highlighted features are as follows:</p><ul><li>Mini-submarine (YARN)</li><li>Basic Tensorflow job submission to k8s through submarine-server RESTful API</li><li>Job submission on YARN through submarine-server RPC protocol</li></ul><p>We encourage to <a href="/docs/download">download</a> the latest release. Feedback through the <a href="/docs/community/README">mailing lists</a> is very welcome.</p><p>You can visit <a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12322824&amp;version=12345556" target="_blank" rel="noopener noreferrer">issue tracker</a> for full list of issues that are resolved.</p></div></div><div class="col col--2"><div class="tableOfContents_2xL- thin-scrollbar"></div></div></div></div></div></main></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/18b93cb3.603ff4e5.js"></script>
-<script src="/1be78505.15c0b52a.js"></script>
-<script src="/c4f5d8e4.89aae0ca.js"></script>
-<script src="/145.4f2a58d3.js"></script>
-<script src="/144.74bdeeb7.js"></script>
-<script src="/3315d736.0400cdd0.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/18b93cb3.6bc02854.js"></script>
+<script src="/1be78505.ed765e6d.js"></script>
+<script src="/c4f5d8e4.4fc79c88.js"></script>
+<script src="/130.4bee60be.js"></script>
+<script src="/129.af810dde.js"></script>
+<script src="/3315d736.c8c84c6a.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/releases/submarine-release-0.4.0/index.html b/releases/submarine-release-0.4.0/index.html
index eea1f23..e23fb90 100644
--- a/releases/submarine-release-0.4.0/index.html
+++ b/releases/submarine-release-0.4.0/index.html
@@ -6,17 +6,17 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Apache Submarine</title><meta data-react-helmet="true" property="og:title" content="Apache Submarine"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//releases/submarine-release-0.4.0"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_tag" content="default"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//releases/submarine-release-0.4.0"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/18b93cb3.603ff4e5.js" as="script">
-<link rel="preload" href="/1be78505.15c0b52a.js" as="script">
-<link rel="preload" href="/c4f5d8e4.89aae0ca.js" as="script">
-<link rel="preload" href="/145.4f2a58d3.js" as="script">
-<link rel="preload" href="/144.74bdeeb7.js" as="script">
-<link rel="preload" href="/e9f77c1e.e19853ef.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/18b93cb3.6bc02854.js" as="script">
+<link rel="preload" href="/1be78505.ed765e6d.js" as="script">
+<link rel="preload" href="/c4f5d8e4.4fc79c88.js" as="script">
+<link rel="preload" href="/130.4bee60be.js" as="script">
+<link rel="preload" href="/129.af810dde.js" as="script">
+<link rel="preload" href="/e9f77c1e.b1f5f3a8.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -24,16 +24,16 @@
 175 patches for improvements and bug fixes. The highlighted features are as follows:</p><ul><li>Submarine Experiments: Refactor the Job to experiment and redefined the experiment spec</li><li>Submarine Helm Charts: Provides one command to install the submarine into the Kubernetes cluster</li><li>PySubmarine: Submarine Python SDK</li></ul><p>We encourage to <a href="/docs/download">download</a> the latest release. Feedback through the <a href="/docs/community/README">mailing lists</a> is very welcome.</p><p>You can visit <a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12322824&amp;version=12346621" target="_blank" rel="noopener noreferrer">issue tracker</a> for full list of issues that are resolved.</p></div></div><div class="col col--2"><div class="tableOfContents_2xL- thin-scrollbar"></div></div></div></div></div></main></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/18b93cb3.603ff4e5.js"></script>
-<script src="/1be78505.15c0b52a.js"></script>
-<script src="/c4f5d8e4.89aae0ca.js"></script>
-<script src="/145.4f2a58d3.js"></script>
-<script src="/144.74bdeeb7.js"></script>
-<script src="/e9f77c1e.e19853ef.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/18b93cb3.6bc02854.js"></script>
+<script src="/1be78505.ed765e6d.js"></script>
+<script src="/c4f5d8e4.4fc79c88.js"></script>
+<script src="/130.4bee60be.js"></script>
+<script src="/129.af810dde.js"></script>
+<script src="/e9f77c1e.b1f5f3a8.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/releases/submarine-release-0.5.0/index.html b/releases/submarine-release-0.5.0/index.html
index 1ab7607..11bed4b 100644
--- a/releases/submarine-release-0.5.0/index.html
+++ b/releases/submarine-release-0.5.0/index.html
@@ -6,17 +6,17 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Apache Submarine</title><meta data-react-helmet="true" property="og:title" content="Apache Submarine"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//releases/submarine-release-0.5.0"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_tag" content="default"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//releases/submarine-release-0.5.0"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/18b93cb3.603ff4e5.js" as="script">
-<link rel="preload" href="/1be78505.15c0b52a.js" as="script">
-<link rel="preload" href="/c4f5d8e4.89aae0ca.js" as="script">
-<link rel="preload" href="/145.4f2a58d3.js" as="script">
-<link rel="preload" href="/144.74bdeeb7.js" as="script">
-<link rel="preload" href="/be5f9a0f.c54f0abd.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/18b93cb3.6bc02854.js" as="script">
+<link rel="preload" href="/1be78505.ed765e6d.js" as="script">
+<link rel="preload" href="/c4f5d8e4.4fc79c88.js" as="script">
+<link rel="preload" href="/130.4bee60be.js" as="script">
+<link rel="preload" href="/129.af810dde.js" as="script">
+<link rel="preload" href="/be5f9a0f.9a26238b.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -24,16 +24,16 @@
 99 patches for improvements and bug fixes. The highlighted features are as follows:</p><ul><li>Submarine Experiments: Redefined the experiment spec, sync up code from Git, it could be HTTP and ssh</li><li>Predefined experiment template: Register A experiment template and submit the related parameter to run an experiment using Rest API</li><li>Environment profile: Users could easily manage their docker image and conda environment</li><li>Jupyter Notebook: Spawn a jupyter notebook using Rest API, and execute ML code on K8s, or submit an experiment to submarine server</li><li>Submarine Workbench UI: CRUD Experiment, Environment, Notebook through the UI </li><li>Disable interpreter module</li></ul><p>We encourage to <a href="/docs/download">download</a> the latest release. Feedback through the <a href="/docs/community/README">mailing lists</a> is very welcome.</p><p>You can visit <a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12348041&amp;projectId=12322824" target="_blank" rel="noopener noreferrer">issue tracker</a> for full list of issues that are resolved.</p></div></div><div class="col col--2"><div class="tableOfContents_2xL- thin-scrollbar"></div></div></div></div></div></main></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/18b93cb3.603ff4e5.js"></script>
-<script src="/1be78505.15c0b52a.js"></script>
-<script src="/c4f5d8e4.89aae0ca.js"></script>
-<script src="/145.4f2a58d3.js"></script>
-<script src="/144.74bdeeb7.js"></script>
-<script src="/be5f9a0f.c54f0abd.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/18b93cb3.6bc02854.js"></script>
+<script src="/1be78505.ed765e6d.js"></script>
+<script src="/c4f5d8e4.4fc79c88.js"></script>
+<script src="/130.4bee60be.js"></script>
+<script src="/129.af810dde.js"></script>
+<script src="/be5f9a0f.9a26238b.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/releases/submarine-release-0.6.0/index.html b/releases/submarine-release-0.6.0/index.html
index e48eb02..2601dd0 100644
--- a/releases/submarine-release-0.6.0/index.html
+++ b/releases/submarine-release-0.6.0/index.html
@@ -6,17 +6,17 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Apache Submarine</title><meta data-react-helmet="true" property="og:title" content="Apache Submarine"><meta data-react-helmet="true" property="og:url" content="https://submarine.apache.org//releases/submarine-release-0.6.0"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_tag" content="default"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link data-react-helmet="true" rel="canonical" href="https://submarine.apache.org//releases/submarine-release-0.6.0"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/18b93cb3.603ff4e5.js" as="script">
-<link rel="preload" href="/1be78505.15c0b52a.js" as="script">
-<link rel="preload" href="/c4f5d8e4.89aae0ca.js" as="script">
-<link rel="preload" href="/145.4f2a58d3.js" as="script">
-<link rel="preload" href="/144.74bdeeb7.js" as="script">
-<link rel="preload" href="/dd728e8e.80481620.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/18b93cb3.6bc02854.js" as="script">
+<link rel="preload" href="/1be78505.ed765e6d.js" as="script">
+<link rel="preload" href="/c4f5d8e4.4fc79c88.js" as="script">
+<link rel="preload" href="/130.4bee60be.js" as="script">
+<link rel="preload" href="/129.af810dde.js" as="script">
+<link rel="preload" href="/dd728e8e.0aaaef15.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -24,16 +24,16 @@
 248 patches for improvements and bug fixes. The highlighted features are as follows:</p><ul><li>Support Tensorboard and mlflow in Experiment</li><li>Submarine model management</li><li>Submarine operator</li><li>Improve workbench UI/UX</li></ul><p>We encourage to <a href="/docs/download">download</a> the latest release. Feedback through the <a href="/docs/community/README">mailing lists</a> is very welcome.</p><p>You can visit <a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12348821&amp;styleName=Html&amp;projectId=12322824" target="_blank" rel="noopener noreferrer">issue tracker</a> for full list of issues that are resolved.</p></div></div><div class="col col--2"><div class="tableOfContents_2xL- thin-scrollbar"></div></div></div></div></div></main></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/18b93cb3.603ff4e5.js"></script>
-<script src="/1be78505.15c0b52a.js"></script>
-<script src="/c4f5d8e4.89aae0ca.js"></script>
-<script src="/145.4f2a58d3.js"></script>
-<script src="/144.74bdeeb7.js"></script>
-<script src="/dd728e8e.80481620.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/18b93cb3.6bc02854.js"></script>
+<script src="/1be78505.ed765e6d.js"></script>
+<script src="/c4f5d8e4.4fc79c88.js"></script>
+<script src="/130.4bee60be.js"></script>
+<script src="/129.af810dde.js"></script>
+<script src="/dd728e8e.0aaaef15.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/runtime~main.8a45eeb2.js b/runtime~main.8a45eeb2.js
deleted file mode 100644
index ab4ec89..0000000
--- a/runtime~main.8a45eeb2.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(e){function f(f){for(var d,a,r=f[0],n=f[1],o=f[2],u=0,i=[];u<r.length;u++)a=r[u],Object.prototype.hasOwnProperty.call(b,a)&&b[a]&&i.push(b[a][0]),b[a]=0;for(d in n)Object.prototype.hasOwnProperty.call(n,d)&&(e[d]=n[d]);for(l&&l(f);i.length;)i.shift()();return t.push.apply(t,o||[]),c()}function c(){for(var e,f=0;f<t.length;f++){for(var c=t[f],d=!0,a=1;a<c.length;a++){var r=c[a];0!==b[r]&&(d=!1)}d&&(t.splice(f--,1),e=n(n.s=c[0]))}return e}var d={},a={141:0},b={141:0},t=[];function r(e){return n.p+""+({3:"0581431b",4:"0b49bfb5",5:"0bc74cd0",6:"0c952090",7:"0e4b5d7a",8:"10dc6c9a",9:"11695589",10:"11fdf8a8",11:"17896441",12:"18b93cb3",13:"1be78505",14:"1dbe41c3",15:"1f391b9e",16:"22885c43",17:"22e91045",18:"27f12fe0",19:"2bab9bf0",20:"2d4ab289",21:"2f44017d",22:"31912795",23:"31b2a22b",24:"3315d736",25:"3593fe0f",26:"35de792d",27:"380d7376",28:"389ecd94",29:"3af95f13",30:"40951386",31:"43326f7a",32:"446ff6dc",33:"4726afa6",34:"4f73ab67",35:"5065a48c",36:"51b2b2c4",37:"538541c1",38:"53cf78e1",39:"54b0b691",40:"55d1900a",41:"57a4862f",42:"58f10d9f",43:"59e7e97e",44:"5a22443f",45:"5de1a2b0",46:"5e036026",47:"5f165a74",48:"5f825119",49:"6088480f",50:"61cc1a3d",51:"63f0eece",52:"66ca1d53",53:"6a132804",54:"6aa1aeb0",55:"6c58af36",56:"6d147207",57:"6df4a83b",58:"6e852da3",59:"7103e683",60:"710c49d3",61:"72f8d982",62:"73bafbdc",63:"76720dd8",64:"76a60836",65:"781c7eda",66:"7984174b",67:"7f965783",68:"7fd88130",69:"80453470",70:"817286e8",71:"82a4a2ce",72:"85b50ba6",73:"876793d7",74:"897bc7ae",75:"89982a88",76:"8dc7f8a8",77:"935f2afb",78:"97b312ed",79:"9e593273",80:"a0524152",81:"a2231a2b",82:"a4535337",83:"a49341a2",84:"a57e1c0a",85:"a5ca038b",86:"a5eec98c",87:"a658e4e7",88:"a7e506f8",89:"a86c7af5",90:"a8c4e132",91:"a9744973",92:"ab130550",93:"ab5e246a",94:"abb6be53",95:"ada24b13",96:"ae045997",97:"algolia",98:"b3da5595",99:"b60f7df5",100:"b9b5b6b9",101:"be249313",102:"be5f9a0f",103:"bf08320e",104:"bf894ff2",105:"c18d5a16",106:"c28aed56",107:"c4f5d8e4",108:"c5a80c58",109:"c86e1739",110:"cbc53c13",111:"cbf00e67",112:"cce3422b",113:"cd51f9ed",114:"cdfb3821",115:"cf824c09",116:"cfa5b027",117:"d2a03af7",118:"d46271b0",119:"dd728e8e",120:"e235d551",121:"e2e9fab8",122:"e3af4e10",123:"e9f77c1e",124:"eb4979b3",125:"ed46a2dd",126:"ee8d19c0",127:"ef17f2ad",128:"f0df3a58",129:"f1c2161d",130:"f2cef85d",131:"f477976c",132:"f5ec27a4",133:"f6956115",134:"f8f6d32b",135:"f9e23376",136:"fa111d7f",137:"fa8b9269",138:"fc109cd1",139:"fe5a2634"}[e]||e)+"."+{1:"a006e7ff",2:"fba10c87",3:"42102481",4:"4330d396",5:"b207bf46",6:"4acecd69",7:"7f9d833f",8:"abe7d86f",9:"16a0a8c4",10:"cd5da2d5",11:"57b41a63",12:"603ff4e5",13:"15c0b52a",14:"0d89d882",15:"fee84980",16:"e67171d6",17:"66821ff3",18:"3aba8788",19:"891248b4",20:"c1e9c4f4",21:"3a426844",22:"98e9dc75",23:"e63fe3fb",24:"0400cdd0",25:"2d123764",26:"6b3bbd93",27:"48f32eaf",28:"a4d469d0",29:"887c2b91",30:"951048fc",31:"c9ddce4b",32:"128da00b",33:"756a77c8",34:"fb11b96c",35:"64a509bf",36:"18ceaaaa",37:"49274308",38:"232689ff",39:"5c84f45c",40:"e19706ba",41:"4cd29151",42:"a5917f48",43:"31158bf6",44:"bcc802f0",45:"1a1b3b5b",46:"96c78b60",47:"c53d41af",48:"8be707a1",49:"50a8af32",50:"a8f5d940",51:"02856e78",52:"2d44bd04",53:"fe6c8b4f",54:"551f4937",55:"a748e664",56:"5a8f5b6d",57:"3b9e8ced",58:"f08b6255",59:"e3ed81f2",60:"2f9e58c7",61:"4335d80b",62:"aea1d01f",63:"ea402a86",64:"12547885",65:"1741f324",66:"48e7bdb9",67:"a50d5173",68:"63d25bc0",69:"867d0bbd",70:"e6230ef6",71:"6fb82595",72:"282022a4",73:"733c03fc",74:"6ef86c17",75:"82f56b69",76:"89c54f51",77:"954d7b62",78:"95b88531",79:"01bf71f1",80:"37637a8c",81:"f8d8ceb4",82:"fd074516",83:"5c2c393a",84:"d5a56f18",85:"422ff945",86:"b3504144",87:"a86559e6",88:"5f2dfa4e",89:"afd767e1",90:"f3a754af",91:"499eb3b2",92:"1ab1e613",93:"53576ccb",94:"3125538c",95:"29429dcb",96:"5f59351f",97:"b845cb23",98:"2e01c1ae",99:"b58ddb02",100:"3e5f870a",101:"cc6110d6",102:"c54f0abd",103:"37428e65",104:"5e690517",105:"6bdbdd39",106:"3af06266",107:"89aae0ca",108:"e9726add",109:"3733110a",110:"83471bd3",111:"0b722239",112:"24d814ea",113:"31f260ae",114:"c11034ce",115:"78b2fcfc",116:"7f20886b",117:"c7f3811a",118:"c38c1297",119:"80481620",120:"56d51622",121:"5b60f0b4",122:"b73ec906",123:"e19853ef",124:"bcf831ee",125:"429a9c4b",126:"4e222057",127:"b0f19d95",128:"b3e87ed7",129:"2e2a1a77",130:"e5c45c6f",131:"c25cbad0",132:"1acb9c22",133:"d54a89ba",134:"d2e6640e",135:"b31b1214",136:"bfaf4849",137:"a0c0d121",138:"44d81630",139:"78b6a4ff",142:"94b38ee0",143:"a1031c43",144:"74bdeeb7",145:"4f2a58d3",146:"8a68f42a"}[e]+".js"}function n(f){if(d[f])return d[f].exports;var c=d[f]={i:f,l:!1,exports:{}};return e[f].call(c.exports,c,c.exports,n),c.l=!0,c.exports}n.e=function(e){var f=[];a[e]?f.push(a[e]):0!==a[e]&&{97:1}[e]&&f.push(a[e]=new Promise((function(f,c){for(var d=({3:"0581431b",4:"0b49bfb5",5:"0bc74cd0",6:"0c952090",7:"0e4b5d7a",8:"10dc6c9a",9:"11695589",10:"11fdf8a8",11:"17896441",12:"18b93cb3",13:"1be78505",14:"1dbe41c3",15:"1f391b9e",16:"22885c43",17:"22e91045",18:"27f12fe0",19:"2bab9bf0",20:"2d4ab289",21:"2f44017d",22:"31912795",23:"31b2a22b",24:"3315d736",25:"3593fe0f",26:"35de792d",27:"380d7376",28:"389ecd94",29:"3af95f13",30:"40951386",31:"43326f7a",32:"446ff6dc",33:"4726afa6",34:"4f73ab67",35:"5065a48c",36:"51b2b2c4",37:"538541c1",38:"53cf78e1",39:"54b0b691",40:"55d1900a",41:"57a4862f",42:"58f10d9f",43:"59e7e97e",44:"5a22443f",45:"5de1a2b0",46:"5e036026",47:"5f165a74",48:"5f825119",49:"6088480f",50:"61cc1a3d",51:"63f0eece",52:"66ca1d53",53:"6a132804",54:"6aa1aeb0",55:"6c58af36",56:"6d147207",57:"6df4a83b",58:"6e852da3",59:"7103e683",60:"710c49d3",61:"72f8d982",62:"73bafbdc",63:"76720dd8",64:"76a60836",65:"781c7eda",66:"7984174b",67:"7f965783",68:"7fd88130",69:"80453470",70:"817286e8",71:"82a4a2ce",72:"85b50ba6",73:"876793d7",74:"897bc7ae",75:"89982a88",76:"8dc7f8a8",77:"935f2afb",78:"97b312ed",79:"9e593273",80:"a0524152",81:"a2231a2b",82:"a4535337",83:"a49341a2",84:"a57e1c0a",85:"a5ca038b",86:"a5eec98c",87:"a658e4e7",88:"a7e506f8",89:"a86c7af5",90:"a8c4e132",91:"a9744973",92:"ab130550",93:"ab5e246a",94:"abb6be53",95:"ada24b13",96:"ae045997",97:"algolia",98:"b3da5595",99:"b60f7df5",100:"b9b5b6b9",101:"be249313",102:"be5f9a0f",103:"bf08320e",104:"bf894ff2",105:"c18d5a16",106:"c28aed56",107:"c4f5d8e4",108:"c5a80c58",109:"c86e1739",110:"cbc53c13",111:"cbf00e67",112:"cce3422b",113:"cd51f9ed",114:"cdfb3821",115:"cf824c09",116:"cfa5b027",117:"d2a03af7",118:"d46271b0",119:"dd728e8e",120:"e235d551",121:"e2e9fab8",122:"e3af4e10",123:"e9f77c1e",124:"eb4979b3",125:"ed46a2dd",126:"ee8d19c0",127:"ef17f2ad",128:"f0df3a58",129:"f1c2161d",130:"f2cef85d",131:"f477976c",132:"f5ec27a4",133:"f6956115",134:"f8f6d32b",135:"f9e23376",136:"fa111d7f",137:"fa8b9269",138:"fc109cd1",139:"fe5a2634"}[e]||e)+"."+{1:"31d6cfe0",2:"31d6cfe0",3:"31d6cfe0",4:"31d6cfe0",5:"31d6cfe0",6:"31d6cfe0",7:"31d6cfe0",8:"31d6cfe0",9:"31d6cfe0",10:"31d6cfe0",11:"31d6cfe0",12:"31d6cfe0",13:"31d6cfe0",14:"31d6cfe0",15:"31d6cfe0",16:"31d6cfe0",17:"31d6cfe0",18:"31d6cfe0",19:"31d6cfe0",20:"31d6cfe0",21:"31d6cfe0",22:"31d6cfe0",23:"31d6cfe0",24:"31d6cfe0",25:"31d6cfe0",26:"31d6cfe0",27:"31d6cfe0",28:"31d6cfe0",29:"31d6cfe0",30:"31d6cfe0",31:"31d6cfe0",32:"31d6cfe0",33:"31d6cfe0",34:"31d6cfe0",35:"31d6cfe0",36:"31d6cfe0",37:"31d6cfe0",38:"31d6cfe0",39:"31d6cfe0",40:"31d6cfe0",41:"31d6cfe0",42:"31d6cfe0",43:"31d6cfe0",44:"31d6cfe0",45:"31d6cfe0",46:"31d6cfe0",47:"31d6cfe0",48:"31d6cfe0",49:"31d6cfe0",50:"31d6cfe0",51:"31d6cfe0",52:"31d6cfe0",53:"31d6cfe0",54:"31d6cfe0",55:"31d6cfe0",56:"31d6cfe0",57:"31d6cfe0",58:"31d6cfe0",59:"31d6cfe0",60:"31d6cfe0",61:"31d6cfe0",62:"31d6cfe0",63:"31d6cfe0",64:"31d6cfe0",65:"31d6cfe0",66:"31d6cfe0",67:"31d6cfe0",68:"31d6cfe0",69:"31d6cfe0",70:"31d6cfe0",71:"31d6cfe0",72:"31d6cfe0",73:"31d6cfe0",74:"31d6cfe0",75:"31d6cfe0",76:"31d6cfe0",77:"31d6cfe0",78:"31d6cfe0",79:"31d6cfe0",80:"31d6cfe0",81:"31d6cfe0",82:"31d6cfe0",83:"31d6cfe0",84:"31d6cfe0",85:"31d6cfe0",86:"31d6cfe0",87:"31d6cfe0",88:"31d6cfe0",89:"31d6cfe0",90:"31d6cfe0",91:"31d6cfe0",92:"31d6cfe0",93:"31d6cfe0",94:"31d6cfe0",95:"31d6cfe0",96:"31d6cfe0",97:"dd0f6100",98:"31d6cfe0",99:"31d6cfe0",100:"31d6cfe0",101:"31d6cfe0",102:"31d6cfe0",103:"31d6cfe0",104:"31d6cfe0",105:"31d6cfe0",106:"31d6cfe0",107:"31d6cfe0",108:"31d6cfe0",109:"31d6cfe0",110:"31d6cfe0",111:"31d6cfe0",112:"31d6cfe0",113:"31d6cfe0",114:"31d6cfe0",115:"31d6cfe0",116:"31d6cfe0",117:"31d6cfe0",118:"31d6cfe0",119:"31d6cfe0",120:"31d6cfe0",121:"31d6cfe0",122:"31d6cfe0",123:"31d6cfe0",124:"31d6cfe0",125:"31d6cfe0",126:"31d6cfe0",127:"31d6cfe0",128:"31d6cfe0",129:"31d6cfe0",130:"31d6cfe0",131:"31d6cfe0",132:"31d6cfe0",133:"31d6cfe0",134:"31d6cfe0",135:"31d6cfe0",136:"31d6cfe0",137:"31d6cfe0",138:"31d6cfe0",139:"31d6cfe0",142:"31d6cfe0",143:"31d6cfe0",144:"31d6cfe0",145:"31d6cfe0",146:"31d6cfe0"}[e]+".css",b=n.p+d,t=document.getElementsByTagName("link"),r=0;r<t.length;r++){var o=(i=t[r]).getAttribute("data-href")||i.getAttribute("href");if("stylesheet"===i.rel&&(o===d||o===b))return f()}var u=document.getElementsByTagName("style");for(r=0;r<u.length;r++){var i;if((o=(i=u[r]).getAttribute("data-href"))===d||o===b)return f()}var l=document.createElement("link");l.rel="stylesheet",l.type="text/css",l.onload=f,l.onerror=function(f){var d=f&&f.target&&f.target.src||b,t=new Error("Loading CSS chunk "+e+" failed.\n("+d+")");t.code="CSS_CHUNK_LOAD_FAILED",t.request=d,delete a[e],l.parentNode.removeChild(l),c(t)},l.href=b,document.getElementsByTagName("head")[0].appendChild(l)})).then((function(){a[e]=0})));var c=b[e];if(0!==c)if(c)f.push(c[2]);else{var d=new Promise((function(f,d){c=b[e]=[f,d]}));f.push(c[2]=d);var t,o=document.createElement("script");o.charset="utf-8",o.timeout=120,n.nc&&o.setAttribute("nonce",n.nc),o.src=r(e);var u=new Error;t=function(f){o.onerror=o.onload=null,clearTimeout(i);var c=b[e];if(0!==c){if(c){var d=f&&("load"===f.type?"missing":f.type),a=f&&f.target&&f.target.src;u.message="Loading chunk "+e+" failed.\n("+d+": "+a+")",u.name="ChunkLoadError",u.type=d,u.request=a,c[1](u)}b[e]=void 0}};var i=setTimeout((function(){t({type:"timeout",target:o})}),12e4);o.onerror=o.onload=t,document.head.appendChild(o)}return Promise.all(f)},n.m=e,n.c=d,n.d=function(e,f,c){n.o(e,f)||Object.defineProperty(e,f,{enumerable:!0,get:c})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,f){if(1&f&&(e=n(e)),8&f)return e;if(4&f&&"object"==typeof e&&e&&e.__esModule)return e;var c=Object.create(null);if(n.r(c),Object.defineProperty(c,"default",{enumerable:!0,value:e}),2&f&&"string"!=typeof e)for(var d in e)n.d(c,d,function(f){return e[f]}.bind(null,d));return c},n.n=function(e){var f=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(f,"a",f),f},n.o=function(e,f){return Object.prototype.hasOwnProperty.call(e,f)},n.p="/",n.gca=function(e){return r(e={11695589:"9",17896441:"11",31912795:"22",40951386:"30",80453470:"69","0581431b":"3","0b49bfb5":"4","0bc74cd0":"5","0c952090":"6","0e4b5d7a":"7","10dc6c9a":"8","11fdf8a8":"10","18b93cb3":"12","1be78505":"13","1dbe41c3":"14","1f391b9e":"15","22885c43":"16","22e91045":"17","27f12fe0":"18","2bab9bf0":"19","2d4ab289":"20","2f44017d":"21","31b2a22b":"23","3315d736":"24","3593fe0f":"25","35de792d":"26","380d7376":"27","389ecd94":"28","3af95f13":"29","43326f7a":"31","446ff6dc":"32","4726afa6":"33","4f73ab67":"34","5065a48c":"35","51b2b2c4":"36","538541c1":"37","53cf78e1":"38","54b0b691":"39","55d1900a":"40","57a4862f":"41","58f10d9f":"42","59e7e97e":"43","5a22443f":"44","5de1a2b0":"45","5e036026":"46","5f165a74":"47","5f825119":"48","6088480f":"49","61cc1a3d":"50","63f0eece":"51","66ca1d53":"52","6a132804":"53","6aa1aeb0":"54","6c58af36":"55","6d147207":"56","6df4a83b":"57","6e852da3":"58","7103e683":"59","710c49d3":"60","72f8d982":"61","73bafbdc":"62","76720dd8":"63","76a60836":"64","781c7eda":"65","7984174b":"66","7f965783":"67","7fd88130":"68","817286e8":"70","82a4a2ce":"71","85b50ba6":"72","876793d7":"73","897bc7ae":"74","89982a88":"75","8dc7f8a8":"76","935f2afb":"77","97b312ed":"78","9e593273":"79",a0524152:"80",a2231a2b:"81",a4535337:"82",a49341a2:"83",a57e1c0a:"84",a5ca038b:"85",a5eec98c:"86",a658e4e7:"87",a7e506f8:"88",a86c7af5:"89",a8c4e132:"90",a9744973:"91",ab130550:"92",ab5e246a:"93",abb6be53:"94",ada24b13:"95",ae045997:"96",algolia:"97",b3da5595:"98",b60f7df5:"99",b9b5b6b9:"100",be249313:"101",be5f9a0f:"102",bf08320e:"103",bf894ff2:"104",c18d5a16:"105",c28aed56:"106",c4f5d8e4:"107",c5a80c58:"108",c86e1739:"109",cbc53c13:"110",cbf00e67:"111",cce3422b:"112",cd51f9ed:"113",cdfb3821:"114",cf824c09:"115",cfa5b027:"116",d2a03af7:"117",d46271b0:"118",dd728e8e:"119",e235d551:"120",e2e9fab8:"121",e3af4e10:"122",e9f77c1e:"123",eb4979b3:"124",ed46a2dd:"125",ee8d19c0:"126",ef17f2ad:"127",f0df3a58:"128",f1c2161d:"129",f2cef85d:"130",f477976c:"131",f5ec27a4:"132",f6956115:"133",f8f6d32b:"134",f9e23376:"135",fa111d7f:"136",fa8b9269:"137",fc109cd1:"138",fe5a2634:"139"}[e]||e)},n.oe=function(e){throw console.error(e),e};var o=window.webpackJsonp=window.webpackJsonp||[],u=o.push.bind(o);o.push=f,o=o.slice();for(var i=0;i<o.length;i++)f(o[i]);var l=u;c()}([]);
\ No newline at end of file
diff --git a/runtime~main.943b9f3a.js b/runtime~main.943b9f3a.js
new file mode 100644
index 0000000..9455c69
--- /dev/null
+++ b/runtime~main.943b9f3a.js
@@ -0,0 +1 @@
+!function(e){function f(f){for(var d,a,r=f[0],n=f[1],o=f[2],u=0,i=[];u<r.length;u++)a=r[u],Object.prototype.hasOwnProperty.call(b,a)&&b[a]&&i.push(b[a][0]),b[a]=0;for(d in n)Object.prototype.hasOwnProperty.call(n,d)&&(e[d]=n[d]);for(l&&l(f);i.length;)i.shift()();return t.push.apply(t,o||[]),c()}function c(){for(var e,f=0;f<t.length;f++){for(var c=t[f],d=!0,a=1;a<c.length;a++){var r=c[a];0!==b[r]&&(d=!1)}d&&(t.splice(f--,1),e=n(n.s=c[0]))}return e}var d={},a={126:0},b={126:0},t=[];function r(e){return n.p+""+({3:"0581431b",4:"0b49bfb5",5:"0bc74cd0",6:"0c952090",7:"0e4b5d7a",8:"10dc6c9a",9:"11695589",10:"11fdf8a8",11:"17896441",12:"18b93cb3",13:"1be78505",14:"1dbe41c3",15:"1f391b9e",16:"22e91045",17:"27f12fe0",18:"2bab9bf0",19:"2d4ab289",20:"2f44017d",21:"31912795",22:"31b2a22b",23:"3315d736",24:"3593fe0f",25:"35de792d",26:"380d7376",27:"3af95f13",28:"40951386",29:"43326f7a",30:"446ff6dc",31:"4726afa6",32:"4f73ab67",33:"5065a48c",34:"51b2b2c4",35:"538541c1",36:"54b0b691",37:"55d1900a",38:"58f10d9f",39:"59e7e97e",40:"5de1a2b0",41:"5e036026",42:"5f165a74",43:"5f825119",44:"6088480f",45:"61cc1a3d",46:"63f0eece",47:"66ca1d53",48:"6a132804",49:"6aa1aeb0",50:"6df4a83b",51:"6e852da3",52:"710c49d3",53:"72f8d982",54:"73bafbdc",55:"76720dd8",56:"781c7eda",57:"7f965783",58:"7fd88130",59:"80453470",60:"817286e8",61:"82a4a2ce",62:"85b50ba6",63:"876793d7",64:"897bc7ae",65:"89982a88",66:"935f2afb",67:"97b312ed",68:"9e593273",69:"a0524152",70:"a2231a2b",71:"a4535337",72:"a49341a2",73:"a57e1c0a",74:"a5ca038b",75:"a5eec98c",76:"a658e4e7",77:"a7e506f8",78:"a86c7af5",79:"a8c4e132",80:"a9744973",81:"ab130550",82:"ab5e246a",83:"abb6be53",84:"ada24b13",85:"ae045997",86:"algolia",87:"b3da5595",88:"b60f7df5",89:"b9b5b6b9",90:"be249313",91:"be5f9a0f",92:"bf894ff2",93:"c18d5a16",94:"c28aed56",95:"c4f5d8e4",96:"c5a80c58",97:"c86e1739",98:"cbc53c13",99:"cbf00e67",100:"cce3422b",101:"cd51f9ed",102:"cdfb3821",103:"cf824c09",104:"cfa5b027",105:"d2a03af7",106:"d46271b0",107:"dd728e8e",108:"e235d551",109:"e2e9fab8",110:"e3af4e10",111:"e9f77c1e",112:"eb4979b3",113:"ed46a2dd",114:"ee8d19c0",115:"ef17f2ad",116:"f0df3a58",117:"f1c2161d",118:"f2cef85d",119:"f6956115",120:"f8f6d32b",121:"f9e23376",122:"fa8b9269",123:"fc109cd1",124:"fe5a2634"}[e]||e)+"."+{1:"dab80c77",2:"6a1a8326",3:"3f38c1ae",4:"22ff41c8",5:"cc1ad21e",6:"a7ad2758",7:"10e71edd",8:"ad0b736b",9:"9ed08ca0",10:"f352bfda",11:"be8f95bf",12:"6bc02854",13:"ed765e6d",14:"8f633975",15:"f22e8160",16:"3cd10386",17:"7cd2b4d7",18:"bb5d412b",19:"f3ca3750",20:"88f8adb9",21:"c85b65ac",22:"6de1b6cb",23:"c8c84c6a",24:"c6639d87",25:"e4cec2f8",26:"c239ca64",27:"48d646a7",28:"37c25209",29:"f74f7bf5",30:"e4439fe0",31:"e62ba52e",32:"91bf3490",33:"59914f6c",34:"ccc68cb9",35:"dded75d0",36:"1ced8c8b",37:"1a3f8fbf",38:"87a860a5",39:"c89625c2",40:"6d503cf4",41:"6c3df0b2",42:"93287d3d",43:"bc4c3d6a",44:"91f560f0",45:"0c61cf27",46:"5a93fa51",47:"810c109a",48:"4ebb8994",49:"b4eff550",50:"f13acfb7",51:"f63caf76",52:"cf6a7c99",53:"94fda3b2",54:"f052f259",55:"946557fc",56:"0ccfe196",57:"a7d40fba",58:"35ec7e9a",59:"41b937e7",60:"7c287254",61:"d86e16ea",62:"27af03f3",63:"b50877b8",64:"a705558a",65:"dc2654e5",66:"9989d552",67:"06ead6e6",68:"832ca47a",69:"dfe71981",70:"e96e6cd5",71:"739cfe99",72:"3500a14c",73:"ce9f4f90",74:"5d1f0bf4",75:"22ba4dd4",76:"36e4cf94",77:"92088415",78:"03050a49",79:"fa55c01a",80:"77aa713c",81:"f5d8809e",82:"e8b70818",83:"1b5c0ed7",84:"b5856d82",85:"52baff71",86:"196bc542",87:"fd962026",88:"4cec88ae",89:"6ed1638f",90:"cafe9dfe",91:"9a26238b",92:"163f9156",93:"d84dd42a",94:"fdadbb0c",95:"4fc79c88",96:"58d174c9",97:"da036326",98:"c80ea8ce",99:"6b8e1841",100:"0e2a0abd",101:"6eac8c3d",102:"6a5a5307",103:"47260a72",104:"dedbc4b0",105:"100b4d05",106:"21db8d89",107:"0aaaef15",108:"050d5dc9",109:"3f6ab158",110:"2c97d2ab",111:"b1f5f3a8",112:"572bc7c2",113:"ef3898b5",114:"ae17985b",115:"a6a30414",116:"988417ee",117:"3e307552",118:"6a5a9909",119:"1f3df0b9",120:"1f2be71c",121:"cac9ed61",122:"421b7629",123:"206f096b",124:"5756be1c",127:"70f6757b",128:"10c43f42",129:"af810dde",130:"4bee60be",131:"5d0a1cd2"}[e]+".js"}function n(f){if(d[f])return d[f].exports;var c=d[f]={i:f,l:!1,exports:{}};return e[f].call(c.exports,c,c.exports,n),c.l=!0,c.exports}n.e=function(e){var f=[];a[e]?f.push(a[e]):0!==a[e]&&{86:1}[e]&&f.push(a[e]=new Promise((function(f,c){for(var d=({3:"0581431b",4:"0b49bfb5",5:"0bc74cd0",6:"0c952090",7:"0e4b5d7a",8:"10dc6c9a",9:"11695589",10:"11fdf8a8",11:"17896441",12:"18b93cb3",13:"1be78505",14:"1dbe41c3",15:"1f391b9e",16:"22e91045",17:"27f12fe0",18:"2bab9bf0",19:"2d4ab289",20:"2f44017d",21:"31912795",22:"31b2a22b",23:"3315d736",24:"3593fe0f",25:"35de792d",26:"380d7376",27:"3af95f13",28:"40951386",29:"43326f7a",30:"446ff6dc",31:"4726afa6",32:"4f73ab67",33:"5065a48c",34:"51b2b2c4",35:"538541c1",36:"54b0b691",37:"55d1900a",38:"58f10d9f",39:"59e7e97e",40:"5de1a2b0",41:"5e036026",42:"5f165a74",43:"5f825119",44:"6088480f",45:"61cc1a3d",46:"63f0eece",47:"66ca1d53",48:"6a132804",49:"6aa1aeb0",50:"6df4a83b",51:"6e852da3",52:"710c49d3",53:"72f8d982",54:"73bafbdc",55:"76720dd8",56:"781c7eda",57:"7f965783",58:"7fd88130",59:"80453470",60:"817286e8",61:"82a4a2ce",62:"85b50ba6",63:"876793d7",64:"897bc7ae",65:"89982a88",66:"935f2afb",67:"97b312ed",68:"9e593273",69:"a0524152",70:"a2231a2b",71:"a4535337",72:"a49341a2",73:"a57e1c0a",74:"a5ca038b",75:"a5eec98c",76:"a658e4e7",77:"a7e506f8",78:"a86c7af5",79:"a8c4e132",80:"a9744973",81:"ab130550",82:"ab5e246a",83:"abb6be53",84:"ada24b13",85:"ae045997",86:"algolia",87:"b3da5595",88:"b60f7df5",89:"b9b5b6b9",90:"be249313",91:"be5f9a0f",92:"bf894ff2",93:"c18d5a16",94:"c28aed56",95:"c4f5d8e4",96:"c5a80c58",97:"c86e1739",98:"cbc53c13",99:"cbf00e67",100:"cce3422b",101:"cd51f9ed",102:"cdfb3821",103:"cf824c09",104:"cfa5b027",105:"d2a03af7",106:"d46271b0",107:"dd728e8e",108:"e235d551",109:"e2e9fab8",110:"e3af4e10",111:"e9f77c1e",112:"eb4979b3",113:"ed46a2dd",114:"ee8d19c0",115:"ef17f2ad",116:"f0df3a58",117:"f1c2161d",118:"f2cef85d",119:"f6956115",120:"f8f6d32b",121:"f9e23376",122:"fa8b9269",123:"fc109cd1",124:"fe5a2634"}[e]||e)+"."+{1:"31d6cfe0",2:"31d6cfe0",3:"31d6cfe0",4:"31d6cfe0",5:"31d6cfe0",6:"31d6cfe0",7:"31d6cfe0",8:"31d6cfe0",9:"31d6cfe0",10:"31d6cfe0",11:"31d6cfe0",12:"31d6cfe0",13:"31d6cfe0",14:"31d6cfe0",15:"31d6cfe0",16:"31d6cfe0",17:"31d6cfe0",18:"31d6cfe0",19:"31d6cfe0",20:"31d6cfe0",21:"31d6cfe0",22:"31d6cfe0",23:"31d6cfe0",24:"31d6cfe0",25:"31d6cfe0",26:"31d6cfe0",27:"31d6cfe0",28:"31d6cfe0",29:"31d6cfe0",30:"31d6cfe0",31:"31d6cfe0",32:"31d6cfe0",33:"31d6cfe0",34:"31d6cfe0",35:"31d6cfe0",36:"31d6cfe0",37:"31d6cfe0",38:"31d6cfe0",39:"31d6cfe0",40:"31d6cfe0",41:"31d6cfe0",42:"31d6cfe0",43:"31d6cfe0",44:"31d6cfe0",45:"31d6cfe0",46:"31d6cfe0",47:"31d6cfe0",48:"31d6cfe0",49:"31d6cfe0",50:"31d6cfe0",51:"31d6cfe0",52:"31d6cfe0",53:"31d6cfe0",54:"31d6cfe0",55:"31d6cfe0",56:"31d6cfe0",57:"31d6cfe0",58:"31d6cfe0",59:"31d6cfe0",60:"31d6cfe0",61:"31d6cfe0",62:"31d6cfe0",63:"31d6cfe0",64:"31d6cfe0",65:"31d6cfe0",66:"31d6cfe0",67:"31d6cfe0",68:"31d6cfe0",69:"31d6cfe0",70:"31d6cfe0",71:"31d6cfe0",72:"31d6cfe0",73:"31d6cfe0",74:"31d6cfe0",75:"31d6cfe0",76:"31d6cfe0",77:"31d6cfe0",78:"31d6cfe0",79:"31d6cfe0",80:"31d6cfe0",81:"31d6cfe0",82:"31d6cfe0",83:"31d6cfe0",84:"31d6cfe0",85:"31d6cfe0",86:"dd0f6100",87:"31d6cfe0",88:"31d6cfe0",89:"31d6cfe0",90:"31d6cfe0",91:"31d6cfe0",92:"31d6cfe0",93:"31d6cfe0",94:"31d6cfe0",95:"31d6cfe0",96:"31d6cfe0",97:"31d6cfe0",98:"31d6cfe0",99:"31d6cfe0",100:"31d6cfe0",101:"31d6cfe0",102:"31d6cfe0",103:"31d6cfe0",104:"31d6cfe0",105:"31d6cfe0",106:"31d6cfe0",107:"31d6cfe0",108:"31d6cfe0",109:"31d6cfe0",110:"31d6cfe0",111:"31d6cfe0",112:"31d6cfe0",113:"31d6cfe0",114:"31d6cfe0",115:"31d6cfe0",116:"31d6cfe0",117:"31d6cfe0",118:"31d6cfe0",119:"31d6cfe0",120:"31d6cfe0",121:"31d6cfe0",122:"31d6cfe0",123:"31d6cfe0",124:"31d6cfe0",127:"31d6cfe0",128:"31d6cfe0",129:"31d6cfe0",130:"31d6cfe0",131:"31d6cfe0"}[e]+".css",b=n.p+d,t=document.getElementsByTagName("link"),r=0;r<t.length;r++){var o=(i=t[r]).getAttribute("data-href")||i.getAttribute("href");if("stylesheet"===i.rel&&(o===d||o===b))return f()}var u=document.getElementsByTagName("style");for(r=0;r<u.length;r++){var i;if((o=(i=u[r]).getAttribute("data-href"))===d||o===b)return f()}var l=document.createElement("link");l.rel="stylesheet",l.type="text/css",l.onload=f,l.onerror=function(f){var d=f&&f.target&&f.target.src||b,t=new Error("Loading CSS chunk "+e+" failed.\n("+d+")");t.code="CSS_CHUNK_LOAD_FAILED",t.request=d,delete a[e],l.parentNode.removeChild(l),c(t)},l.href=b,document.getElementsByTagName("head")[0].appendChild(l)})).then((function(){a[e]=0})));var c=b[e];if(0!==c)if(c)f.push(c[2]);else{var d=new Promise((function(f,d){c=b[e]=[f,d]}));f.push(c[2]=d);var t,o=document.createElement("script");o.charset="utf-8",o.timeout=120,n.nc&&o.setAttribute("nonce",n.nc),o.src=r(e);var u=new Error;t=function(f){o.onerror=o.onload=null,clearTimeout(i);var c=b[e];if(0!==c){if(c){var d=f&&("load"===f.type?"missing":f.type),a=f&&f.target&&f.target.src;u.message="Loading chunk "+e+" failed.\n("+d+": "+a+")",u.name="ChunkLoadError",u.type=d,u.request=a,c[1](u)}b[e]=void 0}};var i=setTimeout((function(){t({type:"timeout",target:o})}),12e4);o.onerror=o.onload=t,document.head.appendChild(o)}return Promise.all(f)},n.m=e,n.c=d,n.d=function(e,f,c){n.o(e,f)||Object.defineProperty(e,f,{enumerable:!0,get:c})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,f){if(1&f&&(e=n(e)),8&f)return e;if(4&f&&"object"==typeof e&&e&&e.__esModule)return e;var c=Object.create(null);if(n.r(c),Object.defineProperty(c,"default",{enumerable:!0,value:e}),2&f&&"string"!=typeof e)for(var d in e)n.d(c,d,function(f){return e[f]}.bind(null,d));return c},n.n=function(e){var f=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(f,"a",f),f},n.o=function(e,f){return Object.prototype.hasOwnProperty.call(e,f)},n.p="/",n.gca=function(e){return r(e={11695589:"9",17896441:"11",31912795:"21",40951386:"28",80453470:"59","0581431b":"3","0b49bfb5":"4","0bc74cd0":"5","0c952090":"6","0e4b5d7a":"7","10dc6c9a":"8","11fdf8a8":"10","18b93cb3":"12","1be78505":"13","1dbe41c3":"14","1f391b9e":"15","22e91045":"16","27f12fe0":"17","2bab9bf0":"18","2d4ab289":"19","2f44017d":"20","31b2a22b":"22","3315d736":"23","3593fe0f":"24","35de792d":"25","380d7376":"26","3af95f13":"27","43326f7a":"29","446ff6dc":"30","4726afa6":"31","4f73ab67":"32","5065a48c":"33","51b2b2c4":"34","538541c1":"35","54b0b691":"36","55d1900a":"37","58f10d9f":"38","59e7e97e":"39","5de1a2b0":"40","5e036026":"41","5f165a74":"42","5f825119":"43","6088480f":"44","61cc1a3d":"45","63f0eece":"46","66ca1d53":"47","6a132804":"48","6aa1aeb0":"49","6df4a83b":"50","6e852da3":"51","710c49d3":"52","72f8d982":"53","73bafbdc":"54","76720dd8":"55","781c7eda":"56","7f965783":"57","7fd88130":"58","817286e8":"60","82a4a2ce":"61","85b50ba6":"62","876793d7":"63","897bc7ae":"64","89982a88":"65","935f2afb":"66","97b312ed":"67","9e593273":"68",a0524152:"69",a2231a2b:"70",a4535337:"71",a49341a2:"72",a57e1c0a:"73",a5ca038b:"74",a5eec98c:"75",a658e4e7:"76",a7e506f8:"77",a86c7af5:"78",a8c4e132:"79",a9744973:"80",ab130550:"81",ab5e246a:"82",abb6be53:"83",ada24b13:"84",ae045997:"85",algolia:"86",b3da5595:"87",b60f7df5:"88",b9b5b6b9:"89",be249313:"90",be5f9a0f:"91",bf894ff2:"92",c18d5a16:"93",c28aed56:"94",c4f5d8e4:"95",c5a80c58:"96",c86e1739:"97",cbc53c13:"98",cbf00e67:"99",cce3422b:"100",cd51f9ed:"101",cdfb3821:"102",cf824c09:"103",cfa5b027:"104",d2a03af7:"105",d46271b0:"106",dd728e8e:"107",e235d551:"108",e2e9fab8:"109",e3af4e10:"110",e9f77c1e:"111",eb4979b3:"112",ed46a2dd:"113",ee8d19c0:"114",ef17f2ad:"115",f0df3a58:"116",f1c2161d:"117",f2cef85d:"118",f6956115:"119",f8f6d32b:"120",f9e23376:"121",fa8b9269:"122",fc109cd1:"123",fe5a2634:"124"}[e]||e)},n.oe=function(e){throw console.error(e),e};var o=window.webpackJsonp=window.webpackJsonp||[],u=o.push.bind(o);o.push=f,o=o.slice();for(var i=0;i<o.length;i++)f(o[i]);var l=u;c()}([]);
\ No newline at end of file
diff --git a/search-doc.json b/search-doc.json
index 857d98f..2ee2bd6 100644
--- a/search-doc.json
+++ b/search-doc.json
@@ -1 +1 @@
-[{"title":"Running Submarine on YARN (deprecated)","type":0,"sectionRef":"#","url":"docs/next/adminDocs/yarn/README","content":"","keywords":""},{"title":"Hadoop version","type":1,"pageTitle":"Running Submarine on YARN (deprecated)","url":"docs/next/adminDocs/yarn/README#hadoop-version","content":"Must: Apache Hadoop version newer than 2.7.3 Optional: When you want to use GPU-on-YARN feature with Submarine, please make sure Hadoop is at least 2.10.0+ (or 3.1.0+), and follow Enable GPU on YARN 2.10.0+ to enable GPU-on-YARN feature.When you want to run training jobs with Docker container, please make sure Hadoop is at least 2.8.2, and follow Enable Docker on YARN 2.8.2+ to enable Docker-on-YARN feature. "},{"title":"Submarine YARN Runtime Guide","type":1,"pageTitle":"Running Submarine on YARN (deprecated)","url":"docs/next/adminDocs/yarn/README#submarine-yarn-runtime-guide","content":"YARN Runtime Guide talk about how to use Submarine to run jobs on YARN, with Docker / without Docker. "},{"title":"Submarine Local Deployment","type":0,"sectionRef":"#","url":"docs/next/","content":"","keywords":""},{"title":"Prerequisite","type":1,"pageTitle":"Submarine Local Deployment","url":"docs/next/#prerequisite","content":"kubectlhelm (Helm v3 is minimum requirement.)minikube. "},{"title":"Deploy Kubernetes Cluster","type":1,"pageTitle":"Submarine Local Deployment","url":"docs/next/#deploy-kubernetes-cluster","content":"$ minikube start --vm-driver=docker --cpus 8 --memory 4096 --disk-size=20G --kubernetes-version v1.15.11 Copy "},{"title":"Install Submarine on Kubernetes","type":1,"pageTitle":"Submarine Local Deployment","url":"docs/next/#install-submarine-on-kubernetes","content":"$ git clone https://github.com/apache/submarine.git $ cd submarine $ helm install submarine ./helm-charts/submarine Copy NAME: submarine LAST DEPLOYED: Fri Jan 29 05:35:36 2021 NAMESPACE: default STATUS: deployed REVISION: 1 TEST SUITE: None Copy "},{"title":"Verify installation","type":1,"pageTitle":"Submarine Local Deployment","url":"docs/next/#verify-installation","content":"Once you got it installed, check with below commands and you should see similar outputs: $ kubectl get pods Copy NAME READY STATUS RESTARTS AGE notebook-controller-deployment-5db8b6cbf7-k65jm 1/1 Running 0 5s pytorch-operator-7ff5d96d59-gx7f5 1/1 Running 0 5s submarine-database-8d95d74f7-ntvqp 1/1 Running 0 5s submarine-server-b6cd4787b-7bvr7 1/1 Running 0 5s submarine-traefik-9bb6f8577-66sx6 1/1 Running 0 5s tf-job-operator-7844656dd-lfgmd 1/1 Running 0 5s Copy warning Note that if you encounter below issue when installation: Error: rendered manifests contain a resource that already exists. Unable to continue with install: existing resource conflict: namespace: , name: podgroups.scheduling.incubator.k8s.io, existing_kind: apiextensions.k8s.io/v1beta1, Kind=CustomResourceDefinition, new_kind: apiextensions.k8s.io/v1beta1, Kind=CustomResourceDefinition Copy It might be caused by the previous installed submarine charts. Fix it by running: $ kubectl delete crd/tfjobs.kubeflow.org && kubectl delete crd/podgroups.scheduling.incubator.k8s.io && kubectl delete crd/pytorchjobs.kubeflow.org Copy "},{"title":"Access Submarine in a Cluster","type":1,"pageTitle":"Submarine Local Deployment","url":"docs/next/#access-submarine-in-a-cluster","content":"# #Listen on port 32080 on all addresses, forwarding to 80 in the pod # Method1 -- using minikube ip + NodePort $ minikube ip # you'll get the IP address of minikube, ex: 192.168.49.2 # Method2 -- using port-forwarding $ kubectl port-forward --address 0.0.0.0 service/submarine-traefik 32080:80 Copy "},{"title":"Open Workbench in the browser.","type":1,"pageTitle":"Submarine Local Deployment","url":"docs/next/#open-workbench-in-the-browser","content":"Open http://{minikube ip}:32080(from Method1), ex: http://192.168.49.2:32080 or http://127.0.0.1:32080 (from Method 2). The default username and password is admin and admin  "},{"title":"Uninstall Submarine","type":1,"pageTitle":"Submarine Local Deployment","url":"docs/next/#uninstall-submarine","content":"$ helm delete submarine Copy "},{"title":"HowToRun","type":0,"sectionRef":"#","url":"docs/next/adminDocs/yarn/workbench/HowToRun","content":"","keywords":""},{"title":"Two versions of Submarine Workbench","type":1,"pageTitle":"HowToRun","url":"docs/next/adminDocs/yarn/workbench/HowToRun#two-versions-of-submarine-workbench","content":"Angular (default)Vue (This is the old version, and it will be replaced by version Angular in the future.) (WARNING: Please restart a new incognito window when you switch to different versions of Submarine Workbench)# "},{"title":"Launch the Submarine Workbench(Angular)","type":1,"pageTitle":"HowToRun","url":"docs/next/adminDocs/yarn/workbench/HowToRun#launch-the-submarine-workbenchangular","content":"It should be noted that since Submarine Workbench depends on the Submarine database, so you need to run the docker container of the Submarine database first. docker run -it -p 3306:3306 -d --name submarine-database -e MYSQL_ROOT_PASSWORD=password apache/submarine:database-<REPLACE_VERSION> docker run -it -p 8080:8080 -d --link=submarine-database:submarine-database --name submarine-server apache/submarine:server-<REPLACE_VERSION> Copy The login page of Submarine Workbench will be shown in http://127.0.0.1:8080. "},{"title":"Check the data in the submarine-database","type":1,"pageTitle":"HowToRun","url":"docs/next/adminDocs/yarn/workbench/HowToRun#check-the-data-in-the-submarine-database","content":"Step1: Enter the submarine-database container docker exec -it submarine-database bash Copy Step2: Enter MySQL database mysql -uroot -ppassword Copy Step3: List the data in the table // list all databases show databases; // choose a database use ${target_database}; // list all tables show tables; // list the data in the table select * from ${target_table}; Copy Run Submarine Workbench without docker# "},{"title":"Run Submarine Workbench","type":1,"pageTitle":"HowToRun","url":"docs/next/adminDocs/yarn/workbench/HowToRun#run-submarine-workbench","content":"cd submarine ./bin/submarine-daemon.sh [start|stop|restart] Copy To start workbench server, you need to download MySQL jdbc jar and put it in the path of workbench/lib for the first time. Or you can add parameter, getMysqlJar, to get MySQL jar automatically. cd submarine ./bin/submarine-daemon.sh start getMysqlJar Copy "},{"title":"submarine-env.sh","type":1,"pageTitle":"HowToRun","url":"docs/next/adminDocs/yarn/workbench/HowToRun#submarine-envsh","content":"submarine-env.sh is automatically executed each time the submarine-daemon.sh script is executed, so we can set the submarine-daemon.sh script and the environment variables in the SubmarineServer process via submarine-env.sh. Name\tVariableJAVA_HOME\tSet your java home path, default is java. SUBMARINE_JAVA_OPTS\tSet the JAVA OPTS parameter when the Submarine Workbench process starts. If you need to debug the Submarine Workbench process, you can set it to -agentlib:jdwp=transport=dt_socket, server=y,suspend=n,address=5005 SUBMARINE_MEM\tSet the java memory parameter when the Submarine Workbench process starts. MYSQL_JAR_URL\tThe customized URL to download MySQL jdbc jar. MYSQL_VERSION\tThe version of MySQL jdbc jar to downloaded. The default value is 5.1.39. It's used to generate the default value of MYSQL_JDBC_URL "},{"title":"submarine-site.xml","type":1,"pageTitle":"HowToRun","url":"docs/next/adminDocs/yarn/workbench/HowToRun#submarine-sitexml","content":"submarine-site.xml is the configuration file for the entire Submarine system to run. Name\tVariablesubmarine.server.addr\tSubmarine server address, default is 0.0.0.0 submarine.server.port\tSubmarine server port, default 8080 submarine.ssl\tShould SSL be used by the Submarine servers?, default false submarine.server.ssl.port\tServer ssl port. (used when ssl property is set to true), default 8483 submarine.ssl.client.auth\tShould client authentication be used for SSL connections? submarine.ssl.keystore.path\tPath to keystore relative to Submarine configuration directory submarine.ssl.keystore.type\tThe format of the given keystore (e.g. JKS or PKCS12) submarine.ssl.keystore.password\tKeystore password. Can be obfuscated by the Jetty Password tool submarine.ssl.key.manager.password\tKey Manager password. Defaults to keystore password. Can be obfuscated. submarine.ssl.truststore.path\tPath to truststore relative to Submarine configuration directory. Defaults to the keystore path submarine.ssl.truststore.type\tThe format of the given truststore (e.g. JKS or PKCS12). Defaults to the same type as the keystore type submarine.ssl.truststore.password\tTruststore password. Can be obfuscated by the Jetty Password tool. Defaults to the keystore password workbench.web.war\tSubmarine Workbench web war file path. "},{"title":"setup-jupyter","type":0,"sectionRef":"#","url":"docs/next/adminDocs/yarn/workbench/notebook/setup-jupyter","content":"","keywords":""},{"title":"Experiment environment","type":1,"pageTitle":"setup-jupyter","url":"docs/next/adminDocs/yarn/workbench/notebook/setup-jupyter#experiment-environment","content":""},{"title":"Setup Kubernetes","type":1,"pageTitle":"setup-jupyter","url":"docs/next/adminDocs/yarn/workbench/notebook/setup-jupyter#setup-kubernetes","content":"We recommend using kind to setup a Kubernetes cluster on a local machine. You can use Extra mounts to mount your host path to kind node and use Extra port mappings to port forward to the kind nodes. Please refer to kind configurationfor more details. You need to create a kind config file. The following is an example : kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 nodes: - role: control-plane extraMounts: # add a mount from /path/to/my/files on the host to /files on the node - hostPath: /tmp/submarine containerPath: /tmp/submarine extraPortMappings: - containerPort: 80 hostPort: 80 protocol: TCP # exposing additional ports to be used for NodePort services - containerPort: 30070 hostPort: 8888 protocol: TCP Copy Running the following command: kind create cluster --image kindest/node:v1.15.6 --config <path-to-kind-config> --name k8s-submarine kubectl create namespace submarine Copy "},{"title":"Deploy Jupyter Notebook","type":1,"pageTitle":"setup-jupyter","url":"docs/next/adminDocs/yarn/workbench/notebook/setup-jupyter#deploy-jupyter-notebook","content":"Once you have a running Kubernetes cluster, you can write a YAML file to deploy a jupyter notebook. In this example yaml, we use jupyter/minimal-notebookto make a single notebook running on the kind node. kubectl apply -f jupyter.yaml --namespace submarine Copy Once jupyter notebook is running, you can access the notebook server from the browser using http://localhost:8888 on local machine. You can enter and store a password for your notebook server with: kubectl exec -it <jupyter-pod-name> -- jupyter notebook password Copy After restarting the notebook server, you can login jupyter notebook with your new password. If you want to use JupyterLab : http://localhost:8888/lab Copy "},{"title":"Test and Troubleshooting","type":0,"sectionRef":"#","url":"docs/next/adminDocs/yarn/TestAndTroubleshooting","content":"","keywords":""},{"title":"Test with a tensorflow job","type":1,"pageTitle":"Test and Troubleshooting","url":"docs/next/adminDocs/yarn/TestAndTroubleshooting#test-with-a-tensorflow-job","content":"Distributed-shell + GPU + cgroup  ... \\ job run \\ --env DOCKER_JAVA_HOME=/opt/java \\ --env DOCKER_HADOOP_HDFS_HOME=/hadoop-current --name distributed-tf-gpu \\ --env YARN_CONTAINER_RUNTIME_DOCKER_CONTAINER_NETWORK=calico-network \\ --worker_docker_image tf-1.13.1-gpu:0.0.1 \\ --ps_docker_image tf-1.13.1-cpu:0.0.1 \\ --input_path hdfs://${dfs_name_service}/tmp/cifar-10-data \\ --checkpoint_path hdfs://${dfs_name_service}/user/hadoop/tf-distributed-checkpoint \\ --num_ps 0 \\ --ps_resources memory=4G,vcores=2,gpu=0 \\ --ps_launch_cmd \"python /test/cifar10_estimator/cifar10_main.py --data-dir=hdfs://${dfs_name_service}/tmp/cifar-10-data --job-dir=hdfs://${dfs_name_service}/tmp/cifar-10-jobdir --num-gpus=0\" \\ --worker_resources memory=4G,vcores=2,gpu=1 --verbose \\ --num_workers 1 \\ --worker_launch_cmd \"python /test/cifar10_estimator/cifar10_main.py --data-dir=hdfs://${dfs_name_service}/tmp/cifar-10-data --job-dir=hdfs://${dfs_name_service}/tmp/cifar-10-jobdir --train-steps=500 --eval-batch-size=16 --train-batch-size=16 --sync --num-gpus=1\" Copy "},{"title":"Issues:","type":1,"pageTitle":"Test and Troubleshooting","url":"docs/next/adminDocs/yarn/TestAndTroubleshooting#issues","content":""},{"title":"Issue 1: Fail to start nodemanager after system reboot","type":1,"pageTitle":"Test and Troubleshooting","url":"docs/next/adminDocs/yarn/TestAndTroubleshooting#issue-1-fail-to-start-nodemanager-after-system-reboot","content":"2018-09-20 18:54:39,785 ERROR org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor: Failed to bootstrap configured resource subsystems! org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.ResourceHandlerException: Unexpected: Cannot create yarn cgroup Subsystem:cpu Mount points:/proc/mounts User:yarn Path:/sys/fs/cgroup/cpu,cpuacct/hadoop-yarn at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsHandlerImpl.initializePreMountedCGroupController(CGroupsHandlerImpl.java:425) at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsHandlerImpl.initializeCGroupController(CGroupsHandlerImpl.java:377) at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsCpuResourceHandlerImpl.bootstrap(CGroupsCpuResourceHandlerImpl.java:98) at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsCpuResourceHandlerImpl.bootstrap(CGroupsCpuResourceHandlerImpl.java:87) at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.ResourceHandlerChain.bootstrap(ResourceHandlerChain.java:58) at org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor.init(LinuxContainerExecutor.java:320) at org.apache.hadoop.yarn.server.nodemanager.NodeManager.serviceInit(NodeManager.java:389) at org.apache.hadoop.service.AbstractService.init(AbstractService.java:164) at org.apache.hadoop.yarn.server.nodemanager.NodeManager.initAndStartNodeManager(NodeManager.java:929) at org.apache.hadoop.yarn.server.nodemanager.NodeManager.main(NodeManager.java:997) 2018-09-20 18:54:39,789 INFO org.apache.hadoop.service.AbstractService: Service NodeManager failed in state INITED Copy Solution: Grant user yarn the access to /sys/fs/cgroup/cpu,cpuacct, which is the subfolder of cgroup mount destination. chown :yarn -R /sys/fs/cgroup/cpu,cpuacct chmod g+rwx -R /sys/fs/cgroup/cpu,cpuacct Copy If GPUs are used,the access to cgroup devices folder is neede as well chown :yarn -R /sys/fs/cgroup/devices chmod g+rwx -R /sys/fs/cgroup/devices Copy "},{"title":"Issue 2: container-executor permission denied","type":1,"pageTitle":"Test and Troubleshooting","url":"docs/next/adminDocs/yarn/TestAndTroubleshooting#issue-2-container-executor-permission-denied","content":"2018-09-21 09:36:26,102 WARN org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.privileged.PrivilegedOperationExecutor: IOException executing command: java.io.IOException: Cannot run program \"/etc/yarn/sbin/Linux-amd64-64/container-executor\": error=13, Permission denied at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048) at org.apache.hadoop.util.Shell.runCommand(Shell.java:938) at org.apache.hadoop.util.Shell.run(Shell.java:901) at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:1213) Copy Solution: The permission of /etc/yarn/sbin/Linux-amd64-64/container-executor should be 6050 "},{"title":"Issue 3:How to get docker service log","type":1,"pageTitle":"Test and Troubleshooting","url":"docs/next/adminDocs/yarn/TestAndTroubleshooting#issue-3:how-to-get-docker-service-log","content":"Solution: we can get docker log with the following command journalctl -u docker Copy "},{"title":"Issue 4:docker can't remove containers with errors like device or resource busy","type":1,"pageTitle":"Test and Troubleshooting","url":"docs/next/adminDocs/yarn/TestAndTroubleshooting#issue-4:docker-cant-remove-containers-with-errors-like-device-or-resource-busy","content":"$ docker rm 0bfafa146431 Error response from daemon: Unable to remove filesystem for 0bfafa146431771f6024dcb9775ef47f170edb2f1852f71916ba44209ca6120a: remove /app/docker/containers/0bfafa146431771f6024dcb9775ef47f170edb2f152f71916ba44209ca6120a/shm: device or resource busy Copy Solution: to find which process leads to a device or resource busy, we can add a shell script, named find-busy-mnt.sh #!/usr/bin/env bash # A simple script to get information about mount points and pids and their # mount namespaces. if [ $# -ne 1 ];then echo \"Usage: $0 <devicemapper-device-id>\" exit 1 fi ID=$1 MOUNTS=`find /proc/*/mounts | xargs grep $ID 2>/dev/null` [ -z \"$MOUNTS\" ] && echo \"No pids found\" && exit 0 printf \"PID\\tNAME\\t\\tMNTNS\\n\" echo \"$MOUNTS\" | while read LINE; do PID=`echo $LINE | cut -d \":\" -f1 | cut -d \"/\" -f3` # Ignore self and thread-self if [ \"$PID\" == \"self\" ] || [ \"$PID\" == \"thread-self\" ]; then continue fi NAME=`ps -q $PID -o comm=` MNTNS=`readlink /proc/$PID/ns/mnt` printf \"%s\\t%s\\t\\t%s\\n\" \"$PID\" \"$NAME\" \"$MNTNS\" done Copy Kill the process by pid, which is found by the script $ chmod +x find-busy-mnt.sh ./find-busy-mnt.sh 0bfafa146431771f6024dcb9775ef47f170edb2f152f71916ba44209ca6120a # PID NAME MNTNS # 5007 ntpd mnt:[4026533598] $ kill -9 5007 Copy "},{"title":"Issue 5:Yarn failed to start containers","type":1,"pageTitle":"Test and Troubleshooting","url":"docs/next/adminDocs/yarn/TestAndTroubleshooting#issue-5:yarn-failed-to-start-containers","content":"if the number of GPUs required by applications is larger than the number of GPUs in the cluster, there would be some containers can't be created. "},{"title":"README","type":0,"sectionRef":"#","url":"docs/next/adminDocs/yarn/workbench/README","content":"","keywords":""},{"title":"Register","type":1,"pageTitle":"README","url":"docs/next/adminDocs/yarn/workbench/README#register","content":"Everyone who needs to use Submarine for machine learning algorithm development can log in to Submarine Workbench's WEB homepage. On the homepage, click the registration link, fill in the user name, email address and password to register the user. At this time, the user status is waiting for approval status. After receiving the registration request from the user in Submarine Workbench, the administrator sets the operation authority according to the user's needs, sets the user's organization and allocates resources, and sets the user status to pass the audit. The user can log in to the Submarine Workbench. Different users have different permission. "},{"title":"Login","type":1,"pageTitle":"README","url":"docs/next/adminDocs/yarn/workbench/README#login","content":"Each Submarine user logs in to the Home page of Submarine Workbench by entering their username and password on the Login page. "},{"title":"Home","type":1,"pageTitle":"README","url":"docs/next/adminDocs/yarn/workbench/README#home","content":"In the Submarine Workbench Home page, the top level shows the user's resource usage and task execution through four charts. In the Quick Start list, the most commonly used feature links in the Workbench are displayed so that users can work quickly. In the Open Recent list, there are nine items that the user has used recently, so you can work quickly. At What's New? In the list, some of the latest features and project information released by Submarine are displayed to help you understand the latest developments in the Submarine project. "},{"title":"Workspace","type":1,"pageTitle":"README","url":"docs/next/adminDocs/yarn/workbench/README#workspace","content":"Workspace consists primarily of five tab pages, with the total number of items in each tab page's title. "},{"title":"Project","type":1,"pageTitle":"README","url":"docs/next/adminDocs/yarn/workbench/README#project","content":"In the Project page, all the projects created by the user themselves are displayed as cards.  Each Project card consists of the following sections: Project Type:Submarine currently supports six types of machine learning algorithm frameworks and development languages: Notebook, Python, R, Scala, Tensorflow, and PyTorch, which are identified by corresponding icons in the project card.Project Tags:Users can tag each Project with different tags for easy searching and management.Github/Gitlab integrated:Submarine Workbench is system integrated with Github/Gitlab, and each Project can perform Watch, Star, Fork, and Comment operations in Workbench. Watch:[TODO]Star:[TODO]Fork:[TODO]Comment:Users can comment on the project. Edit:Users can open projects in Notebook and perform algorithm development by double-clicking on the project or by clicking the Edit button.Download:The user downloads the project package locally by clicking the Download button.Setting:Edit project information such as project name, profile, visibility level and permissions.Delete:Delete the project and all included files. Add New Project# Clicking the Add New Project button on the project page will display the guide page for creating the project, and you can create a new project in just three steps. Step 1: Fill in the project name and project description in the Base Information step.  Visibility: Set the visibility level of the item externally Private: (Default) Set to private project, and all the files included in the project are not publicly displayed. but the execution result of the project can be individually set and exposed in Notebook, so that others can view the visual report of the project.Team: Set to team project, select the team name in the team selection box, and other members of the team can access the project according to the set permissions.Public: Set to public project, all users in Workbench can view this project through search. Permission: Set the external access rights of the project. The permission setting interface will appear only when the Visibility of the project is set to Team or Public. Can View When the project's Visibility is set to Team, other members of the team can only view the files for this project. When the project's Visibility is set to Public, other members of the Workbench can only view the files for this project. Can Edit When the project's Visibility is set to Team, other members of the team can view and edit the files for this project. When the project's Visibility is set to Public, other members of the Workbench can view and edit the files for this project. Can Execute When the project's Visibility is set to Team, other members of the team can view, edit, and execute the project's files. When the project's Visibility is set to Public, other members of the Workbench can view, edit, and execute the project's files. Step 2: In the Initial Project step, Workbench provides four ways to initialize the project. Template: Workbench Project templates with several different development languages and algorithm frameworks are built in. You can choose any template to initialize your project and you can execute it directly in Notebook without any modification. It is especially suitable for novices to experience quickly. Blank:Create a blank project, and later we can manually add the project's file in Notebook Upload: Initialize your project by uploading a file in notebook format that is compatible with the Jupyter Notebook and Zeppelin Notebook file formats. Git Repo: Fork a file in the repository to initialize the project in your Github/Gitlab account. Step 3:Preview the included files in the project  Save: Save the project to Workspace.Open In Notebook: Save the project to Workspace and open the project with Notebook. "},{"title":"Release","type":1,"pageTitle":"README","url":"docs/next/adminDocs/yarn/workbench/README#release","content":"[TODO] "},{"title":"Training","type":1,"pageTitle":"README","url":"docs/next/adminDocs/yarn/workbench/README#training","content":"[TODO] "},{"title":"Team","type":1,"pageTitle":"README","url":"docs/next/adminDocs/yarn/workbench/README#team","content":"[TODO] "},{"title":"Shared","type":1,"pageTitle":"README","url":"docs/next/adminDocs/yarn/workbench/README#shared","content":"[TODO] "},{"title":"Interpreters","type":1,"pageTitle":"README","url":"docs/next/adminDocs/yarn/workbench/README#interpreters","content":"[TODO] "},{"title":"Job","type":1,"pageTitle":"README","url":"docs/next/adminDocs/yarn/workbench/README#job","content":"[TODO] "},{"title":"Data","type":1,"pageTitle":"README","url":"docs/next/adminDocs/yarn/workbench/README#data","content":"[TODO] "},{"title":"Model","type":1,"pageTitle":"README","url":"docs/next/adminDocs/yarn/workbench/README#model","content":"[TODO] "},{"title":"Manager","type":1,"pageTitle":"README","url":"docs/next/adminDocs/yarn/workbench/README#manager","content":""},{"title":"User","type":1,"pageTitle":"README","url":"docs/next/adminDocs/yarn/workbench/README#user","content":"[TODO] "},{"title":"Team","type":1,"pageTitle":"README","url":"docs/next/adminDocs/yarn/workbench/README#team-1","content":"[TODO] "},{"title":"Data Dict","type":1,"pageTitle":"README","url":"docs/next/adminDocs/yarn/workbench/README#data-dict","content":"[TODO] "},{"title":"Department","type":1,"pageTitle":"README","url":"docs/next/adminDocs/yarn/workbench/README#department","content":"[TODO] "},{"title":"How to run workbench","type":1,"pageTitle":"README","url":"docs/next/adminDocs/yarn/workbench/README#how-to-run-workbench","content":"How To Run Submarine Workbench Guide "},{"title":"README.zh-CN","type":0,"sectionRef":"#","url":"docs/next/adminDocs/yarn/workbench/README.zh-CN","content":"","keywords":""},{"title":"Register","type":1,"pageTitle":"README.zh-CN","url":"docs/next/adminDocs/yarn/workbench/README.zh-CN#register","content":"每个需要使用 Submarine 进行机器学习算法开发的用户,都可以登录 Submarine Workbench 的 WEB 首页,在首页上,点击注册链接,填写用户名、注册邮箱和密码就可以完成注册,但此时用户状态为 等待审核 状态。 管理员在 Submarine Workbench 中接收到用户的注册请求后,设置用户的操作权限,所属机构部门和分配资源,设置用户状态为 审核通过 后,用户才可以登录 Submarine Workbench。 "},{"title":"Login","type":1,"pageTitle":"README.zh-CN","url":"docs/next/adminDocs/yarn/workbench/README.zh-CN#login","content":"每个 Submarine 的用户在 Login 页面中输入用户名和密码,登录到 Submarine Workbench 的首页 Home。 "},{"title":"Home","type":1,"pageTitle":"README.zh-CN","url":"docs/next/adminDocs/yarn/workbench/README.zh-CN#home","content":"在 Submarine Workbench 的 Home 首页中,顶层通过四个图表显示了用户的资源的使用情况和任务执行的情况。 在 Quick Start 列表中,显示了 Workbench 中最常使用的功能链接,方便用户可以快速的进行工作。 在 Open Recent 列表中,显示了用户最近使用过的九个项目,方便你快速的进行工作。 在 What‘s New? 列表中,显示了 Submarine 最新发布的一些功能特性和项目信息,方便你了解 Submarine 项目的最新进展。 "},{"title":"Workspace","type":1,"pageTitle":"README.zh-CN","url":"docs/next/adminDocs/yarn/workbench/README.zh-CN#workspace","content":"Workspace 主要有五个 Tab 页组成,每个 Tab 页的标题中显示了各自项目的总数。 "},{"title":"Project","type":1,"pageTitle":"README.zh-CN","url":"docs/next/adminDocs/yarn/workbench/README.zh-CN#project","content":"在 Project 页面中,以卡片的方式显示了用户自己创建的所有 Project。  每个 Project 卡片由以下部分内容组成: Project 类型:目前 Submarine 支持 Notebook、Python、R、Scala、Tensorflow 和 PyTorch 这六种类型的机器学习算法框架和开发语言,在项目卡片中以对应的图标进行标识。Project Tags:用户可以为每个 Project 打上不同的 Tag 标签,方便查找和管理。Github/Gitlab 集成:Submarine Workbench 与 Github/Gitlab 进行了系统集成,每个 Project 都可以在 Workbench 中进行 Watch、Star、Frok 和 Comment 操作。 Watch:[TODO]Star:[TODO]Fork:[TODO]Comment:用户可以在项目中进行评论 Edit:用户通过双击项目或者点击 Edit 按钮,可以在 Notebook 中打开项目,进行算法开发等操作。Download:用户通过点击 Download 按钮,将项目打包下载到本地。Setting:编辑项目信息,例如项目的名字,简介,分享级别和权限。Delete:删除项目中所有包含的文件。 Add New Project# 在项目页面中点击 Add New Project 按钮,将会显示出创建项目的引导页面,只需要三个步骤就可以创建一个新的项目。 第一步:在 Base Information 步骤中填写项目名称、项目简介。  Visibility: 设置项目对外的可见级别 Private: (默认)设置为私有项目,不对外公开项目中包含的所有文件,但是可以在 Notebook 中将项目的执行结果单独设置公开,方便其他人查看项目的可视化报告。Team: 设置为团队项目,在团队选择框中选择团队的名称,团队的其他成员可以根据设置的权限访问这个项目。Public: 设置为公开项目,Workbench 中的所有用户都可以通过搜索查看到这个项目。 Permission: 设置项目对外的访问权限,只有将项目的 Visibility 设置为 Team 或 Public 的时候,才会出现权限设置界面。 Can View 当项目的 Visibility 设置为 Team 时,团队中其他成员都只能查看这个项目的文件。 当项目的 Visibility 设置为 Public 时,Workbench 中其他成员都只能查看这个项目的文件。 Can Edit 当项目的 Visibility 设置为 Team 时,团队中其他成员都可以查看、编辑这个项目的文件。 当项目的 Visibility 设置为 Public 时,Workbench 中其他成员都可以查看、编辑这个项目的文件。 Can Execute 当项目的 Visibility 设置为 Team 时,团队中其他成员都可以查看、编辑、执行这个项目的文件。 当项目的 Visibility 设置为 Public 时,Workbench 中其他成员都可以查看、编辑、执行这个项目的文件。 第二步:在 Initial Project 步骤中,Workbench 提供了四种项目初始化的方式 Template: Workbench 内置了几种不同开发语言和算法框架的项目模版,你可以选择任何一种模版初始化你的项目,无需做任何修改就可以直接在 Notebook 中执行,特别适合新手进行快速的体验。 Blank:创建一个空白的项目,稍后,我们可以通过在 Notebook 中手工添加项目的文件 Upload: 通过上传 notebook 格式的文件来初始化你的项目,notebook 格式兼容 Jupyter Notebook 和 Zeppelin Notebook 文件格式。 Git Repo: 在你的 Github/Gitlab 账号中 Fork 一个仓库中的文件内容来初始化项目。 第三步:预览项目中的所包含的文件  Save: 将项目保存到 Workspace 中。Open In Notebook: 将项目保存到 Workspace 中,并用 Notebook 打开项目。 "},{"title":"Release","type":1,"pageTitle":"README.zh-CN","url":"docs/next/adminDocs/yarn/workbench/README.zh-CN#release","content":"[TODO] "},{"title":"Training","type":1,"pageTitle":"README.zh-CN","url":"docs/next/adminDocs/yarn/workbench/README.zh-CN#training","content":"[TODO] "},{"title":"Team","type":1,"pageTitle":"README.zh-CN","url":"docs/next/adminDocs/yarn/workbench/README.zh-CN#team","content":"[TODO] "},{"title":"Shared","type":1,"pageTitle":"README.zh-CN","url":"docs/next/adminDocs/yarn/workbench/README.zh-CN#shared","content":"[TODO] "},{"title":"Interpreters","type":1,"pageTitle":"README.zh-CN","url":"docs/next/adminDocs/yarn/workbench/README.zh-CN#interpreters","content":"[TODO] "},{"title":"Job","type":1,"pageTitle":"README.zh-CN","url":"docs/next/adminDocs/yarn/workbench/README.zh-CN#job","content":"[TODO] "},{"title":"Data","type":1,"pageTitle":"README.zh-CN","url":"docs/next/adminDocs/yarn/workbench/README.zh-CN#data","content":"[TODO] "},{"title":"Model","type":1,"pageTitle":"README.zh-CN","url":"docs/next/adminDocs/yarn/workbench/README.zh-CN#model","content":"[TODO] "},{"title":"Manager","type":1,"pageTitle":"README.zh-CN","url":"docs/next/adminDocs/yarn/workbench/README.zh-CN#manager","content":""},{"title":"User","type":1,"pageTitle":"README.zh-CN","url":"docs/next/adminDocs/yarn/workbench/README.zh-CN#user","content":"[TODO] "},{"title":"Team","type":1,"pageTitle":"README.zh-CN","url":"docs/next/adminDocs/yarn/workbench/README.zh-CN#team-1","content":"[TODO] "},{"title":"Data Dict","type":1,"pageTitle":"README.zh-CN","url":"docs/next/adminDocs/yarn/workbench/README.zh-CN#data-dict","content":"[TODO] "},{"title":"Department","type":1,"pageTitle":"README.zh-CN","url":"docs/next/adminDocs/yarn/workbench/README.zh-CN#department","content":"[TODO] "},{"title":"How to run workbench","type":1,"pageTitle":"README.zh-CN","url":"docs/next/adminDocs/yarn/workbench/README.zh-CN#how-to-run-workbench","content":"How To Run Submarine Workbench Guide "},{"title":"Environment REST API","type":0,"sectionRef":"#","url":"docs/next/api/environment","content":"","keywords":""},{"title":"Create Environment","type":1,"pageTitle":"Environment REST API","url":"docs/next/api/environment#create-environment","content":"POST /api/v1/environment Example Request curl -X POST -H \"Content-Type: application/json\" -d ' { \"name\": \"my-submarine-env\", \"dockerImage\" : \"continuumio/anaconda3\", \"kernelSpec\" : { \"name\" : \"team_default_python_3.7\", \"channels\" : [\"defaults\"], \"condaDependencies\" : [\"_ipyw_jlab_nb_ext_conf=0.1.0=py37_0\", \"alabaster=0.7.12=py37_0\", \"anaconda=2020.02=py37_0\", \"anaconda-client=1.7.2=py37_0\", \"anaconda-navigator=1.9.12=py37_0\"], \"pipDependencies\" : [\"apache-submarine==0.5.0\", \"pyarrow==0.17.0\"] } } ' http://127.0.0.1:32080/api/v1/environment Copy Example Response: { \"status\": \"OK\", \"code\": 200, \"result\": { \"environmentId\": \"environment_1586156073228_0001\", \"environmentSpec\": { \"name\": \"my-submarine-env\", \"dockerImage\" : \"continuumio/anaconda3\", \"kernelSpec\" : { \"name\" : \"team_default_python_3.7\", \"channels\" : [\"defaults\"], \"condaDependencies\" : [\"_ipyw_jlab_nb_ext_conf=0.1.0=py37_0\", \"alabaster=0.7.12=py37_0\", \"anaconda=2020.02=py37_0\", \"anaconda-client=1.7.2=py37_0\", \"anaconda-navigator=1.9.12=py37_0\"], \"pipDependencies\" : [\"apache-submarine==0.5.0\", \"pyarrow==0.17.0\"] } } } } Copy "},{"title":"List environment","type":1,"pageTitle":"Environment REST API","url":"docs/next/api/environment#list-environment","content":"GET /api/v1/environment Example Request: curl -X GET http://127.0.0.1:32080/api/v1/environment Copy Example Response: { \"status\": \"OK\", \"code\": 200, \"result\": [ { \"environmentId\": \"environment_1586156073228_0001\", \"environmentSpec\": { \"name\": \"my-submarine-env\", \"dockerImage\" : \"continuumio/anaconda3\", \"kernelSpec\" : { \"name\" : \"team_default_python_3.7\", \"channels\" : [\"defaults\"], \"condaDependencies\" : [\"_ipyw_jlab_nb_ext_conf=0.1.0=py37_0\", \"alabaster=0.7.12=py37_0\", \"anaconda=2020.02=py37_0\", \"anaconda-client=1.7.2=py37_0\", \"anaconda-navigator=1.9.12=py37_0\"], \"pipDependencies\" : [\"apache-submarine==0.5.0\", \"pyarrow==0.17.0\"] } } }, { \"environmentId\": \"environment_1586156073228_0002\", \"environmentSpec\": { \"name\": \"my-submarine-env-2\", \"dockerImage\" : \"continuumio/miniconda\", \"kernelSpec\" : { \"name\" : \"team_miniconda_python_3.7\", \"channels\" : [\"defaults\"], \"condaDependencies\" : [\"_ipyw_jlab_nb_ext_conf=0.1.0=py37_0\"], \"pipDependencies\" : [], } } } ] } Copy "},{"title":"Get environment","type":1,"pageTitle":"Environment REST API","url":"docs/next/api/environment#get-environment","content":"GET /api/v1/environment/{name} Example Request: curl -X GET http://127.0.0.1:32080/api/v1/environment/my-submarine-env Copy Example Response: { \"status\": \"OK\", \"code\": 200, \"result\": { \"environmentId\": \"environment_1586156073228_0001\", \"environmentSpec\": { \"name\": \"my-submarine-env\", \"dockerImage\" : \"continuumio/anaconda3\", \"kernelSpec\" : { \"name\" : \"team_default_python_3.7\", \"channels\" : [\"defaults\"], \"condaDependencies\" : [\"_ipyw_jlab_nb_ext_conf=0.1.0=py37_0\", \"alabaster=0.7.12=py37_0\", \"anaconda=2020.02=py37_0\", \"anaconda-client=1.7.2=py37_0\", \"anaconda-navigator=1.9.12=py37_0\"], \"pipDependencies\" : [\"apache-submarine==0.5.0\", \"pyarrow==0.17.0\"] } } } } Copy "},{"title":"Patch environment","type":1,"pageTitle":"Environment REST API","url":"docs/next/api/environment#patch-environment","content":"PATCH /api/v1/environment/{name} Example Request: curl -X PATCH -H \"Content-Type: application/json\" -d ' { \"name\": \"my-submarine-env\", \"dockerImage\" : \"continuumio/anaconda3\", \"kernelSpec\" : { \"name\" : \"team_default_python_3.7_updated\", \"channels\" : [\"defaults\"], \"condaDependencies\" : [\"_ipyw_jlab_nb_ext_conf=0.1.0=py37_0\", \"alabaster=0.7.12=py37_0\"], \"pipDependencies\" : [] } } ' http://127.0.0.1:32080/api/v1/environment/my-submarine-env Copy Example Response: { \"status\": \"OK\", \"code\": 200, \"success\": true, \"result\": { \"environmentId\": \"environment_1586156073228_0001\", \"environmentSpec\": { \"name\": \"my-submarine-env\", \"dockerImage\" : \"continuumio/anaconda3\", \"kernelSpec\" : { \"name\" : \"team_default_python_3.7_updated\", \"channels\" : [\"defaults\"], \"condaDependencies\" : [\"_ipyw_jlab_nb_ext_conf=0.1.0=py37_0\", \"alabaster=0.7.12=py37_0\"], \"pipDependencies\" : [] } } } } Copy dockerImage, \"name\" (of kernelSpec), \"channels\", \"condaDependencies\", \"pipDependencies\" etc can be updated using this API. \"name\" of EnvironmentSpec is not supported. "},{"title":"Delete environment","type":1,"pageTitle":"Environment REST API","url":"docs/next/api/environment#delete-environment","content":"GET /api/v1/environment/{name} Example Request: curl -X DELETE http://127.0.0.1:32080/api/v1/environment/my-submarine-env Copy Example Response: { \"status\": \"OK\", \"code\": 200, \"result\": { \"environmentId\": \"environment_1586156073228_0001\", \"environmentSpec\": { \"name\": \"my-submarine-env\", \"dockerImage\" : \"continuumio/anaconda3\", \"kernelSpec\" : { \"name\" : \"team_default_python_3.7_updated\", \"channels\" : [\"defaults\"], \"condaDependencies\" : [\"_ipyw_jlab_nb_ext_conf=0.1.0=py37_0\", \"alabaster=0.7.12=py37_0\"], \"pipDependencies\" : [] } } } } Copy "},{"title":"Experiment REST API","type":0,"sectionRef":"#","url":"docs/next/api/experiment","content":"","keywords":""},{"title":"Create Experiment (Using Anonymous/Embedded Environment)","type":1,"pageTitle":"Experiment REST API","url":"docs/next/api/experiment#create-experiment-using-anonymousembedded-environment","content":"POST /api/v1/experiment Example Request curl -X POST -H \"Content-Type: application/json\" -d ' { \"meta\": { \"name\": \"tf-mnist-json\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=2048M\" } } } ' http://127.0.0.1:32080/api/v1/experiment Copy Example Response: { \"status\": \"OK\", \"code\": 200, \"result\": { \"experimentId\": \"experiment_1586156073228_0001\", \"name\": \"tf-mnist-json\", \"uid\": \"28e39dcd-77d4-11ea-8dbb-0242ac110003\", \"status\": \"Accepted\", \"acceptedTime\": \"2020-06-13T22:59:29.000+08:00\", \"spec\": { \"meta\": { \"name\": \"tf-mnist-json\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=2048M\" } } } } } Copy "},{"title":"Create Experiment (Using Pre-defined/Stored Environment)","type":1,"pageTitle":"Experiment REST API","url":"docs/next/api/experiment#create-experiment-using-pre-definedstored-environment","content":"POST /api/v1/experiment Example Request curl -X POST -H \"Content-Type: application/json\" -d ' { \"meta\": { \"name\": \"tf-mnist-json\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"name\": \"my-submarine-env\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=2048M\" } } } ' http://127.0.0.1:32080/api/v1/experiment Copy 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 Example Response: { \"status\": \"OK\", \"code\": 200, \"result\": { \"experimentId\": \"experiment_1586156073228_0001\", \"name\": \"tf-mnist-json\", \"uid\": \"28e39dcd-77d4-11ea-8dbb-0242ac110003\", \"status\": \"Accepted\", \"acceptedTime\": \"2020-06-13T22:59:29.000+08:00\", \"spec\": { \"meta\": { \"name\": \"tf-mnist-json\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"name\": \"my-submarine-env\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=2048M\" } } } } } Copy "},{"title":"List experiment","type":1,"pageTitle":"Experiment REST API","url":"docs/next/api/experiment#list-experiment","content":"GET /api/v1/experiment Example Request: curl -X GET http://127.0.0.1:32080/api/v1/experiment Copy Example Response: { \"status\": \"OK\", \"code\": 200, \"result\": [ { \"experimentId\": \"experiment_1592057447228_0001\", \"name\": \"tf-mnist-json\", \"uid\": \"28e39dcd-77d4-11ea-8dbb-0242ac110003\", \"status\": \"Accepted\", \"acceptedTime\": \"2020-06-13T22:59:29.000+08:00\", \"spec\": { \"meta\": { \"name\": \"tf-mnist-json\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=2048M\" } } } }, { \"experimentId\": \"experiment_1592057447228_0002\", \"name\": \"mnist\", \"uid\": \"38e39dcd-77d4-11ea-8dbb-0242ac110003\", \"status\": \"Accepted\", \"acceptedTime\": \"2020-06-13T22:19:29.000+08:00\", \"spec\": { \"meta\": { \"name\": \"pytorch-mnist-json\", \"namespace\": \"default\", \"framework\": \"PyTorch\", \"cmd\": \"python /var/mnist.py --backend gloo\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"image\": \"apache/submarine:pytorch-dist-mnist-1.0\" }, \"spec\": { \"Master\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" } } } } ] } Copy "},{"title":"Get experiment","type":1,"pageTitle":"Experiment REST API","url":"docs/next/api/experiment#get-experiment","content":"GET /api/v1/experiment/{id} Example Request: curl -X GET http://127.0.0.1:32080/api/v1/experiment/experiment_1592057447228_0001 Copy Example Response: { \"status\": \"OK\", \"code\": 200, \"result\": { \"experimentId\": \"experiment_1592057447228_0001\", \"name\": \"tf-mnist-json\", \"uid\": \"28e39dcd-77d4-11ea-8dbb-0242ac110003\", \"status\": \"Accepted\", \"acceptedTime\": \"2020-06-13T22:59:29.000+08:00\", \"spec\": { \"meta\": { \"name\": \"tf-mnist-json\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=2048M\" } } } } } Copy "},{"title":"Patch experiment","type":1,"pageTitle":"Experiment REST API","url":"docs/next/api/experiment#patch-experiment","content":"PATCH /api/v1/experiment/{id} Example Request: curl -X PATCH -H \"Content-Type: application/json\" -d ' { \"meta\": { \"name\": \"tf-mnist-json\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 2, \"resources\": \"cpu=1,memory=2048M\" } } } ' http://127.0.0.1:32080/api/v1/experiment/experiment_1592057447228_0001 Copy Example Response: { \"status\": \"OK\", \"code\": 200, \"success\": true, \"result\": { \"meta\": { \"name\": \"tf-mnist-json\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 2, \"resources\": \"cpu=1,memory=2048M\" } } } } Copy "},{"title":"Delete experiment","type":1,"pageTitle":"Experiment REST API","url":"docs/next/api/experiment#delete-experiment","content":"GET /api/v1/experiment/{id} Example Request: curl -X DELETE http://127.0.0.1:32080/api/v1/experiment/experiment_1592057447228_0001 Copy Example Response: { \"status\": \"OK\", \"code\": 200, \"result\": { \"experimentId\": \"experiment_1586156073228_0001\", \"name\": \"tf-mnist-json\", \"uid\": \"28e39dcd-77d4-11ea-8dbb-0242ac110003\", \"status\": \"Accepted\", \"acceptedTime\": \"2020-06-13T22:59:29.000+08:00\", \"spec\": { \"meta\": { \"name\": \"tf-mnist-json\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 2, \"resources\": \"cpu=1,memory=2048M\" } } } } } Copy "},{"title":"List experiment Log","type":1,"pageTitle":"Experiment REST API","url":"docs/next/api/experiment#list-experiment-log","content":"GET /api/v1/experiment/logs Example Request: curl -X GET http://127.0.0.1:32080/api/v1/experiment/logs Copy Example Response: { \"status\": \"OK\", \"code\": 200, \"success\": null, \"message\": null, \"result\": [ { \"experimentId\": \"experiment_1589199154923_0001\", \"logContent\": [ { \"podName\": \"mnist-worker-0\", \"podLog\": null } ] }, { \"experimentId\": \"experiment_1589199154923_0002\", \"logContent\": [ { \"podName\": \"pytorch-dist-mnist-gloo-master-0\", \"podLog\": null }, { \"podName\": \"pytorch-dist-mnist-gloo-worker-0\", \"podLog\": null } ] } ], \"attributes\": {} } Copy "},{"title":"Get experiment Log","type":1,"pageTitle":"Experiment REST API","url":"docs/next/api/experiment#get-experiment-log","content":"GET /api/v1/experiment/logs/{id} Example Request: curl -X GET http://127.0.0.1:32080/api/v1/experiment/logs/experiment_1589199154923_0002 Copy Example Response: { \"status\": \"OK\", \"code\": 200, \"success\": null, \"message\": null, \"result\": { \"experimentId\": \"experiment_1589199154923_0002\", \"logContent\": [ { \"podName\": \"pytorch-dist-mnist-gloo-master-0\", \"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\" }, { \"podName\": \"pytorch-dist-mnist-gloo-worker-0\", \"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\" } ] }, \"attributes\": {} } Copy "},{"title":"Experiment Template REST API","type":0,"sectionRef":"#","url":"docs/next/api/experiment-template","content":"","keywords":""},{"title":"Create experiment template","type":1,"pageTitle":"Experiment Template REST API","url":"docs/next/api/experiment-template#create-experiment-template","content":"POST /api/v1/template Example Request curl -X POST -H \"Content-Type: application/json\" -d ' { \"name\": \"my-tf-mnist-template\", \"author\": \"author\", \"description\": \"This is a template to run tf-mnist\", \"parameters\": [{ \"name\": \"learning_rate\", \"value\": 0.1, \"required\": true, \"description\": \"This is learning_rate of training.\" }, { \"name\": \"batch_size\", \"value\": 150, \"required\": true, \"description\": \"This is batch_size of training.\" }, { \"name\": \"experiment_name\", \"value\": \"tf-mnist1\", \"required\": true, \"description\": \"the name of experiment.\" } ], \"experimentSpec\": { \"meta\": { \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate={{learning_rate}} --batch_size={{batch_size}}\", \"name\": \"{{experiment_name}}\", \"envVars\": { \"ENV1\": \"ENV1\" }, \"framework\": \"TensorFlow\", \"namespace\": \"default\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" } } } ' http://127.0.0.1:32080/api/v1/template Copy "},{"title":"List experiment template","type":1,"pageTitle":"Experiment Template REST API","url":"docs/next/api/experiment-template#list-experiment-template","content":"GET /api/v1/template Example Request: curl -X GET http://127.0.0.1:32080/api/v1/template Copy "},{"title":"Get experiment template","type":1,"pageTitle":"Experiment Template REST API","url":"docs/next/api/experiment-template#get-experiment-template","content":"GET /api/v1/template/{name} Example Request: curl -X GET http://127.0.0.1:32080/api/v1/template/my-tf-mnist-template Copy "},{"title":"Patch template","type":1,"pageTitle":"Experiment Template REST API","url":"docs/next/api/experiment-template#patch-template","content":"PATCH /api/v1/template/{name} curl -X PATCH -H \"Content-Type: application/json\" -d ' { \"name\": \"my-tf-mnist-template\", \"author\": \"author-new\", \"description\": \"This is a template to run tf-mnist\", \"parameters\": [{ \"name\": \"learning_rate\", \"value\": 0.1, \"required\": true, \"description\": \"This is learning_rate of training.\" }, { \"name\": \"batch_size\", \"value\": 150, \"required\": true, \"description\": \"This is batch_size of training.\" }, { \"name\": \"experiment_name\", \"value\": \"tf-mnist1\", \"required\": true, \"description\": \"the name of experiment.\" } ], \"experimentSpec\": { \"meta\": { \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate={{learning_rate}} --batch_size={{batch_size}}\", \"name\": \"{{experiment_name}}\", \"envVars\": { \"ENV1\": \"ENV1\" }, \"framework\": \"TensorFlow\", \"namespace\": \"default\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" } } } ' http://127.0.0.1:32080/api/v1/template/my-tf-mnist-template Copy \"description\", \"parameters\", \"experimentSpec\", \"author\" etc can be updated using this API. \"name\" of experiment template is not supported. "},{"title":"Delete template","type":1,"pageTitle":"Experiment Template REST API","url":"docs/next/api/experiment-template#delete-template","content":"GET /api/v1/template/{name} Example Request: curl -X DELETE http://127.0.0.1:32080/api/v1/template/my-tf-mnist-template Copy "},{"title":"Use template to create a experiment","type":1,"pageTitle":"Experiment Template REST API","url":"docs/next/api/experiment-template#use-template-to-create-a-experiment","content":"POST /api/v1/experiment/{template_name} Example Request: curl -X POST -H \"Content-Type: application/json\" -d ' { \"name\": \"tf-mnist\", \"params\": { \"learning_rate\":\"0.01\", \"batch_size\":\"150\", \"experiment_name\":\"newexperiment1\" } } ' http://127.0.0.1:32080/api/v1/experiment/my-tf-mnist-template Copy "},{"title":"Serve REST API","type":0,"sectionRef":"#","url":"docs/next/api/model-version","content":"","keywords":""},{"title":"List model versions under a registered model","type":1,"pageTitle":"Serve REST API","url":"docs/next/api/model-version#list-model-versions-under-a-registered-model","content":"GET /api/v1/model-version/{name} Example Request: curl -X GET http://127.0.0.1:32080/api/v1/model-version/register Copy Example Response: { \"attributes\" : {}, \"code\" : 200, \"message\" : \"List all model version instances\", \"result\" : [ { \"creationTime\" : \"2021-12-12 02:27:05\", \"currentStage\" : \"None\", \"dataset\" : null, \"description\" : null, \"experimentId\" : \"experiment-1639276018590-0001\", \"lastUpdatedTime\" : \"2021-12-12 02:27:05\", \"modelType\" : \"tensorflow\", \"name\" : \"register\", \"source\" : \"s3://submarine/experiment-1639276018590-0001/example/1\", \"tags\" : [], \"userId\" : \"\", \"version\" : 1 }, { \"creationTime\" : \"2021-12-12 02:27:05\", \"currentStage\" : \"None\", \"dataset\" : null, \"description\" : null, \"experimentId\" : \"experiment-1639276018590-0001\", \"lastUpdatedTime\" : \"2021-12-12 02:27:05\", \"modelType\" : \"tensorflow\", \"name\" : \"register\", \"source\" : \"s3://submarine/experiment-1639276018590-0001/example/2\", \"tags\" : [], \"userId\" : \"\", \"version\" : 2 }, { \"creationTime\" : \"2021-12-12 02:27:05\", \"currentStage\" : \"None\", \"dataset\" : null, \"description\" : null, \"experimentId\" : \"experiment-1639276018590-0001\", \"lastUpdatedTime\" : \"2021-12-12 02:27:05\", \"modelType\" : \"tensorflow\", \"name\" : \"register\", \"source\" : \"s3://submarine/experiment-1639276018590-0001/example1/1\", \"tags\" : [], \"userId\" : \"\", \"version\" : 3 }, { \"creationTime\" : \"2021-12-12 02:27:06\", \"currentStage\" : \"None\", \"dataset\" : null, \"description\" : null, \"experimentId\" : \"experiment-1639276018590-0001\", \"lastUpdatedTime\" : \"2021-12-12 02:27:06\", \"modelType\" : \"tensorflow\", \"name\" : \"register\", \"source\" : \"s3://submarine/experiment-1639276018590-0001/example2/1\", \"tags\" : [], \"userId\" : \"\", \"version\" : 4 }, ], \"status\" : \"OK\", \"success\" : true } Copy "},{"title":"Get a model version","type":1,"pageTitle":"Serve REST API","url":"docs/next/api/model-version#get-a-model-version","content":"GET /api/v1/model-version/{name}/{version} Example Request: curl -X GET http://127.0.0.1:32080/api/v1/model-version/register/1 Copy Example Response: { \"attributes\" : {}, \"code\" : 200, \"message\" : \"Get the model version instance\", \"result\" : { \"creationTime\" : \"2021-12-12 02:27:05\", \"currentStage\" : \"None\", \"dataset\" : null, \"description\" : null, \"experimentId\" : \"experiment-1639276018590-0001\", \"lastUpdatedTime\" : \"2021-12-12 02:27:05\", \"modelType\" : \"tensorflow\", \"name\" : \"register\", \"source\" : \"s3://submarine/experiment-1639276018590-0001/example/1\", \"tags\" : [], \"userId\" : \"\", \"version\" : 1 }, \"status\" : \"OK\", \"success\" : true } Copy "},{"title":"Patch a model version","type":1,"pageTitle":"Serve REST API","url":"docs/next/api/model-version#patch-a-model-version","content":"PATCH /api/v1/model-version Example Request: curl -X PATCH -H \"Content-Type: application/json\" -d ' { \"name\": \"register\", \"version\": 1, \"description\": \"new_description\", \"currentStage\": \"production\", \"dataset\": \"new_dataset\" }' http://127.0.0.1:32080/api/v1/model-version Copy Example Response: { \"attributes\" : {}, \"code\" : 200, \"message\" : \"Update the model version instance\", \"result\" : null, \"status\" : \"OK\", \"success\" : true } Copy "},{"title":"Delete a model version","type":1,"pageTitle":"Serve REST API","url":"docs/next/api/model-version#delete-a-model-version","content":"DELETE /api/v1/model-version/{name}/{version} Example Request curl -X DELETE http://127.0.0.1:32080/api/v1/model-version/register/1 Copy Example Response: { \"attributes\" : {}, \"code\" : 200, \"message\" : \"Delete the model version instance\", \"result\" : null, \"status\" : \"OK\", \"success\" : true } Copy "},{"title":"Create a model version tag","type":1,"pageTitle":"Serve REST API","url":"docs/next/api/model-version#create-a-model-version-tag","content":"POST /api/v1/model-version/tag?name={name}&version={version}&tag={tag} Example Request curl -X POST http://127.0.0.1:32080/api/v1/model-version/tag?name=register&version=2&tag=789 Copy Example Response: { \"attributes\" : {}, \"code\" : 200, \"message\" : \"Create a model version tag instance\", \"result\" : null, \"status\" : \"OK\", \"success\" : true } Copy "},{"title":"Delete a model version tag","type":1,"pageTitle":"Serve REST API","url":"docs/next/api/model-version#delete-a-model-version-tag","content":"DELETE /api/v1/model-version/tag?name={name}&version={version}&tag={tag} Example Request curl -X DELETE http://127.0.0.1:32080/api/v1/model-version/tag?name=register&version=2&tag=789 Copy Example Response: { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":\"Delete a registered model tag instance\", \"result\":null, \"attributes\":{} } Copy "},{"title":"Notebook REST API","type":0,"sectionRef":"#","url":"docs/next/api/notebook","content":"","keywords":""},{"title":"Create a notebook instance","type":1,"pageTitle":"Notebook REST API","url":"docs/next/api/notebook#create-a-notebook-instance","content":"POST /api/v1/notebook Example Request curl -X POST -H \"Content-Type: application/json\" -d ' { \"meta\": { \"name\": \"test-nb\", \"namespace\": \"default\", \"ownerId\": \"e9ca23d68d884d4ebb19d07889727dae\" }, \"environment\": { \"name\": \"notebook-env\" }, \"spec\": { \"envVars\": { \"TEST_ENV\": \"test\" }, \"resources\": \"cpu=1,memory=1.0Gi\" } } ' http://127.0.0.1:32080/api/v1/notebook Copy Example Response: { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":\"Create a notebook instance\", \"result\":{ \"notebookId\":\"notebook_1597931805405_0001\", \"name\":\"test-nb\", \"uid\":\"5a94c01d-6a92-4222-bc66-c610c277546d\", \"url\":\"/notebook/default/test-nb/\", \"status\":\"creating\", \"reason\":\"The notebook instance is creating\", \"createdTime\":\"2020-08-20T21:58:27.000+08:00\", \"deletedTime\":null, \"spec\":{ \"meta\":{ \"name\":\"test-nb\", \"namespace\":\"default\", \"ownerId\":\"e9ca23d68d884d4ebb19d07889727dae\" }, \"environment\":{ \"name\":\"notebook-env\", \"dockerImage\":\"apache/submarine:jupyter-notebook-0.5.0\", \"kernelSpec\":{ \"name\": \"team_default_python_3.7\", \"channels\": [ \"defaults\" ], \"dependencies\": [ \"\" ] }, \"description\":null, \"image\":null }, \"spec\":{ \"envVars\":{ \"TEST_ENV\":\"test\" }, \"resources\":\"cpu=1,memory=1.0Gi\" } } }, \"attributes\":{} } Copy "},{"title":"List notebook instances which belong to user","type":1,"pageTitle":"Notebook REST API","url":"docs/next/api/notebook#list-notebook-instances-which-belong-to-user","content":"GET /api/v1/notebook Example Request: curl -X GET http://127.0.0.1:32080/api/v1/notebook?id={user_id} Copy Example Response: { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":\"List all notebook instances\", \"result\":[ { \"notebookId\":\"notebook_1597931805405_0001\", \"name\":\"test-nb\", \"uid\":\"5a94c01d-6a92-4222-bc66-c610c277546d\", \"url\":\"/notebook/default/test-nb/\", \"status\": \"running\", \"reason\": \"The notebook instance is running\", \"createdTime\":\"2020-08-20T21:58:27.000+08:00\", \"deletedTime\":null, \"spec\":{ \"meta\":{ \"name\":\"test-nb\", \"namespace\":\"default\", \"ownerId\":\"e9ca23d68d884d4ebb19d07889727dae\" }, \"environment\":{ \"name\":\"notebook-env\", \"dockerImage\":\"apache/submarine:jupyter-notebook-0.5.0\", \"kernelSpec\":{ \"name\": \"team_default_python_3.7\", \"channels\": [ \"defaults\" ], \"dependencies\": [ \"\" ] }, \"description\":null, \"image\":null }, \"spec\":{ \"envVars\":{ \"TEST_ENV\":\"test\" }, \"resources\":\"cpu=1,memory=1.0Gi\" } } } ], \"attributes\":{} } Copy "},{"title":"Get the notebook instance","type":1,"pageTitle":"Notebook REST API","url":"docs/next/api/notebook#get-the-notebook-instance","content":"GET /api/v1/notebook/{id} Example Request: curl -X GET http://127.0.0.1:32080/api/v1/notebook/{id} Copy Example Response: { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":\"Get the notebook instance\", \"result\":{ \"notebookId\":\"notebook_1597931805405_0001\", \"name\":\"test-nb\", \"uid\":\"5a94c01d-6a92-4222-bc66-c610c277546d\", \"url\":\"/notebook/default/test-nb/\", \"status\":\"running\", \"reason\":\"The notebook instance is running\", \"createdTime\":\"2020-08-20T21:58:27.000+08:00\", \"deletedTime\":null, \"spec\":{ \"meta\":{ \"name\":\"test-nb\", \"namespace\":\"default\", \"ownerId\":\"e9ca23d68d884d4ebb19d07889727dae\" }, \"environment\":{ \"name\":\"notebook-env\", \"dockerImage\":\"apache/submarine:jupyter-notebook-0.5.0\", \"kernelSpec\":{ \"name\": \"team_default_python_3.7\", \"channels\": [ \"defaults\" ], \"dependencies\": [ \"\" ] }, \"description\":null, \"image\":null }, \"spec\":{ \"envVars\":{ \"TEST_ENV\":\"test\" }, \"resources\":\"cpu=1,memory=1.0Gi\" } } }, \"attributes\":{} } Copy "},{"title":"Delete the notebook instance","type":1,"pageTitle":"Notebook REST API","url":"docs/next/api/notebook#delete-the-notebook-instance","content":"DELETE /api/v1/notebook/{id} Example Request: curl -X DELETE http://127.0.0.1:32080/api/v1/notebook/{id} Copy Example Response: { \"status\": \"OK\", \"code\": 200, \"success\": true, \"message\": \"Delete the notebook instance\", \"result\": { \"notebookId\": \"notebook_1597931805405_0001\", \"name\": \"test-nb\", \"uid\": \"5a94c01d-6a92-4222-bc66-c610c277546d\", \"url\": \"/notebook/default/test-nb/\", \"status\": \"terminating\", \"reason\": \"The notebook instance is terminating\", \"createdTime\": \"2020-08-22T14:03:19.000+08:00\", \"deletedTime\": \"2020-08-22T14:46:28+0800\", \"spec\": { \"meta\": { \"name\": \"test-nb\", \"namespace\": \"default\", \"ownerId\":\"e9ca23d68d884d4ebb19d07889727dae\" }, \"environment\": { \"name\": \"notebook-env\", \"dockerImage\": \"apache/submarine:jupyter-notebook-0.5.0\", \"kernelSpec\": { \"name\": \"team_default_python_3.7\", \"channels\": [ \"defaults\" ], \"dependencies\": [ \"\" ] }, \"description\": null, \"image\": null }, \"spec\": { \"envVars\": { \"TEST_ENV\": \"test\" }, \"resources\": \"cpu=1,memory=1.0Gi\" } } }, \"attributes\": {} } Copy "},{"title":"Serve REST API","type":0,"sectionRef":"#","url":"docs/next/api/serve","content":"","keywords":""},{"title":"Create a model serve","type":1,"pageTitle":"Serve REST API","url":"docs/next/api/serve#create-a-model-serve","content":"POST /api/v1/serve Example Request Make sure there is a model named simple with version 1 in the database. curl -X POST -H \"Content-Type: application/json\" -d ' { \"modelName\": \"simple\", \"modelVersion\":1, } ' http://127.0.0.1:32080/api/v1/serve Copy Example Response: { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":\"Create a serve instance\", \"result\":{\"url\":null}, \"attributes\":{} } Copy "},{"title":"Delete the TensorFlow model serve","type":1,"pageTitle":"Serve REST API","url":"docs/next/api/serve#delete-the-tensorflow-model-serve","content":"DELETE /api/v1/serve Example Request curl -X DELETE -H \"Content-Type: application/json\" -d ' { \"modelName\": \"simple\", \"modelVersion\":1, } ' http://127.0.0.1:32080/api/v1/serve Copy Example Response: { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":\"Delete the model serve instance\", \"result\":null, \"attributes\":{} } Copy "},{"title":"Bylaws","type":0,"sectionRef":"#","url":"docs/next/community/Bylaws","content":"This document defines the bylaws under which the Apache Submarine project operates. It defines the roles and responsibilities of the project, who may vote, how voting works, how conflicts are resolved, etc. Submarine is a project of the Apache Software Foundation. The foundation holds the trademark on the name “Submarine” and copyright on Apache code including the code in the Submarine codebase. The foundation FAQ explains the operation and background of the foundation. Submarine is typical of Apache projects in that it operates under a set of principles, known collectively as the “Apache Way”. If you are new to Apache development, please refer to the Incubator project for more information on how Apache projects operate. Roles and Responsibilities# Apache projects define a set of roles with associated rights and responsibilities. These roles govern what tasks an individual may perform within the project. The roles are defined in the following sections Users The most important participants in the project are people who use our software. The majority of our developers start out as users and guide their development efforts from the user’s perspective. Users contribute to the Apache projects by providing feedback to developers in the form of bug reports and feature suggestions. As well, users participate in the Apache community by helping other users on mailing lists and user support forums. Contributors All of the volunteers who are contributing time, code, documentation, or resources to the Submarine Project. A contributor that makes sustained, welcome contributions to the project may be invited to become a Committer, though the exact timing of such invitations depends on many factors. Committers The project’s Committers are responsible for the project’s technical management. Committers have access to all subproject subversion repositories. Committers may cast binding votes on any technical discussion regarding any subproject. Committer access is by invitation only and must be approved by consensus approval of the active PMC members. A Committer is considered emeritus by their own declaration or by not contributing in any form to the project for over six months. An emeritus committer may request reinstatement of commit access from the PMC. Such reinstatement is subject to consensus approval of active PMC members. Significant, pervasive features are often developed in a speculative branch of the repository. The PMC may grant commit rights on the branch to its consistent contributors, while the initiative is active. Branch committers are responsible for shepherding their feature into an active release and do not cast binding votes or vetoes in the project. All Apache committers are required to have a signed Contributor License Agreement (CLA) on file with the Apache Software Foundation. There is a Committer FAQ which provides more details on the requirements for Committers A committer who makes a sustained contribution to the project may be invited to become a member of the PMC. The form of contribution is not limited to code. It can also include code review, helping out users on the mailing lists, documentation, testing, etc. Release Manager A Release Manager (RM) is a committer who volunteers to produce a Release Candidate according to HowToRelease. The RM shall publish a Release Plan on the common-dev@ list stating the branch from which they intend to make a Release Candidate, at least one week before they do so. The RM is responsible for building consensus around the content of the Release Candidate, in order to achieve a successful Product Release vote. Project Management Committee The Project Management Committee (PMC) for Apache Submarine was created by the Apache Board in October 2019 when Submarine moved out of Hadoop and became a top level project at Apache. The PMC is responsible to the board and the ASF for the management and oversight of the Apache Submarine codebase. The responsibilities of the PMC include Deciding what is distributed as products of the Apache Submarine project. In particular all releases must be approved by the PMCMaintaining the project’s shared resources, including the codebase repository, mailing lists, websites.Speaking on behalf of the project.Resolving license disputes regarding products of the projectNominating new PMC members and committersMaintaining these bylaws and other guidelines of the project Membership of the PMC is by invitation only and must be approved by a consensus approval of active PMC members. A PMC member is considered “emeritus” by their own declaration or by not contributing in any form to the project for over six months. An emeritus member may request reinstatement to the PMC. Such reinstatement is subject to consensus approval of the active PMC members. The chair of the PMC is appointed by the ASF board. The chair is an office holder of the Apache Software Foundation (Vice President, Apache Submarine) and has primary responsibility to the board for the management of the projects within the scope of the Submarine PMC. The chair reports to the board quarterly on developments within the Submarine project. The chair of the PMC is rotated annually. When the chair is rotated or if the current chair of the PMC resigns, the PMC votes to recommend a new chair using Single Transferable Vote (STV) voting. See https://wiki.apache.org/general/BoardVoting for specifics. The decision must be ratified by the Apache board. Decision Making# Within the Submarine project, different types of decisions require different forms of approval. For example, the previous section describes several decisions which require “consensus approval” approval. This section defines how voting is performed, the types of approvals, and which types of decision require which type of approval. Voting Decisions regarding the project are made by votes on the primary project development mailing list (dev@submarine.apache.org). Where necessary, PMC voting may take place on the private Submarine PMC mailing list. Votes are clearly indicated by subject line starting with [VOTE]. Votes may contain multiple items for approval and these should be clearly separated. Voting is carried out by replying to the vote mail. Voting may take four flavors +1 “Yes,” “Agree,” or “the action should be performed.” In general, this vote also indicates a willingness on the behalf of the voter in “making it happen”+0 This vote indicates a willingness for the action under consideration to go ahead. The voter, however will not be able to help.-0 This vote indicates that the voter does not, in general, agree with the proposed action but is not concerned enough to prevent the action going ahead.-1 This is a negative vote. On issues where consensus is required, this vote counts as a veto. All vetoes must contain an explanation of why the veto is appropriate. Vetoes with no explanation are void. It may also be appropriate for a -1 vote to include an alternative course of action. All participants in the Submarine project are encouraged to show their agreement with or against a particular action by voting. For technical decisions, only the votes of active committers are binding. Non binding votes are still useful for those with binding votes to understand the perception of an action in the wider Submarine community. For PMC decisions, only the votes of PMC members are binding. Voting can also be applied to changes made to the Submarine codebase. These typically take the form of a veto (-1) in reply to the commit message sent when the commit is made. Approvals These are the types of approvals that can be sought. Different actions require different types of approvals Consensus Approval - Consensus approval requires 3 binding +1 votes and no binding vetoes.Lazy Consensus - Lazy consensus requires no -1 votes (‘silence gives assent’).Lazy Majority - A lazy majority vote requires 3 binding +1 votes and more binding +1 votes than -1 votes.Lazy 2⁄3 Majority - Lazy 2⁄3 majority votes requires at least 3 votes and twice as many +1 votes as -1 votes. Vetoes A valid, binding veto cannot be overruled. If a veto is cast, it must be accompanied by a valid reason explaining the reasons for the veto. The validity of a veto, if challenged, can be confirmed by anyone who has a binding vote. This does not necessarily signify agreement with the veto - merely that the veto is valid. If you disagree with a valid veto, you must lobby the person casting the veto to withdraw their veto. If a veto is not withdrawn, any action that has been vetoed must be reversed in a timely manner. Actions This section describes the various actions which are undertaken within the project, the corresponding approval required for that action and those who have binding votes over the action. Code Change A change made to a codebase of the project and committed by a committer. This includes source code, documentation, website content, etc. Consensus approval of active committers, but with a minimum of one +1. The code can be committed after the first +1, unless the code change represents a merge from a branch, in which case three +1s are required. Product Release When a release of one of the project’s products is ready, a vote is required to accept the release as an official release of the project. Lazy Majority of active PMC members Adoption of New Codebase When the codebase for an existing, released product is to be replaced with an alternative codebase. If such a vote fails to gain approval, the existing code base will continue. This also covers the creation of new sub-projects within the project Lazy 2⁄3 majority of PMC members New Branch Committer When a branch committer is proposed for the PMC Lazy consensus of active PMC members New Committer When a new committer is proposed for the project Consensus approval of active PMC members New PMC Member When a committer is proposed for the PMC Consensus approval of active PMC members Branch Committer Removal When removal of commit privileges is sought or when the branch is merged to the mainline Lazy 2⁄3 majority of active PMC members Committer Removal When removal of commit privileges is sought. Note: Such actions will also be referred to the ASF board by the PMC chair Lazy 2⁄3 majority of active PMC members (excluding the committer in question if a member of the PMC). PMC Member Removal When removal of a PMC member is sought. Note: Such actions will also be referred to the ASF board by the PMC chair. Lazy 2⁄3 majority of active PMC members (excluding the member in question) Modifying Bylaws Modifying this document. Lazy majority of active PMC members Voting Timeframes Votes are open for a period of 7 days to allow all active voters time to consider the vote. Votes relating to code changes are not subject to a strict timetable but should be made as timely as possible. Product Release - Vote Timeframe Release votes, alone, run for a period of 5 days. All other votes are subject to the above timeframe of 7 days.","keywords":""},{"title":"Serve REST API","type":0,"sectionRef":"#","url":"docs/next/api/registered-model","content":"","keywords":""},{"title":"Create a registered model","type":1,"pageTitle":"Serve REST API","url":"docs/next/api/registered-model#create-a-registered-model","content":"POST /api/v1/registered-model Example Request curl -X POST -H \"Content-Type: application/json\" -d ' { \"name\": \"example_name\", \"description\": \"example_description\", \"tags\": [\"123\", \"456\"] } ' http://127.0.0.1:32080/api/v1/registered-model Copy Example Response: { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":\"Create a registered model instance\", \"result\":null, \"attributes\":{} } Copy "},{"title":"List registered models","type":1,"pageTitle":"Serve REST API","url":"docs/next/api/registered-model#list-registered-models","content":"GET /api/v1/registered-model Example Request: curl -X GET http://127.0.0.1:32080/api/v1/registered-model Copy Example Response: { \"attributes\" : {}, \"code\" : 200, \"message\" : \"List all registered model instances\", \"result\" : [ { \"creationTime\" : \"2021-12-16 10:14:06\", \"description\" : \"example_description\", \"lastUpdatedTime\" : \"2021-12-16 10:14:06\", \"name\" : \"example_name\", \"tags\" : [ \"123\", \"456\" ] }, { \"creationTime\" : \"2021-12-16 10:16:25\", \"description\" : \"example_description\", \"lastUpdatedTime\" : \"2021-12-16 10:16:25\", \"name\" : \"example_name1\", \"tags\" : [ \"123\", \"456\" ] }, { \"creationTime\" : \"2021-12-12 02:27:05\", \"description\" : null, \"lastUpdatedTime\" : \"2021-12-14 12:49:33\", \"name\" : \"register\", \"tags\" : [] } ], \"status\" : \"OK\", \"success\" : true } Copy "},{"title":"Get a registered model","type":1,"pageTitle":"Serve REST API","url":"docs/next/api/registered-model#get-a-registered-model","content":"GET /api/v1/registered-model/{name} Example Request: curl -X GET http://127.0.0.1:32080/api/v1/registered-model/example_name Copy Example Response: { \"attributes\" : {}, \"code\" : 200, \"message\" : \"Get the registered model instance\", \"result\" : { \"creationTime\" : \"2021-12-16 10:14:06\", \"description\" : \"example_description\", \"lastUpdatedTime\" : \"2021-12-16 10:14:06\", \"name\" : \"example_name\", \"tags\" : [ \"123\", \"456\" ] }, \"status\" : \"OK\", \"success\" : true } Copy "},{"title":"Patch a registered model","type":1,"pageTitle":"Serve REST API","url":"docs/next/api/registered-model#patch-a-registered-model","content":"PATCH /api/v1/registered-model/{name} Example Request: curl -X PATCH -H \"Content-Type: application/json\" -d ' { \"name\": \"new_name\", \"description\": \"new_description\" }' http://127.0.0.1:32080/api/v1/registered-model/example_name Copy Example Response: { \"attributes\" : {}, \"code\" : 200, \"message\" : \"Update the registered model instance\", \"result\" : null, \"status\" : \"OK\", \"success\" : true } Copy "},{"title":"Delete a registered model","type":1,"pageTitle":"Serve REST API","url":"docs/next/api/registered-model#delete-a-registered-model","content":"DELETE /api/v1/registered-model/{name} Example Request curl -X DELETE http://127.0.0.1:32080/api/v1/registered-model/example_name Copy Example Response: { \"attributes\" : {}, \"code\" : 200, \"message\" : \"Delete the registered model instance\", \"result\" : null, \"status\" : \"OK\", \"success\" : true } Copy "},{"title":"Create a registered model tag","type":1,"pageTitle":"Serve REST API","url":"docs/next/api/registered-model#create-a-registered-model-tag","content":"POST /api/v1/registered-model/tag?name={name}&tag={tag} Example Request curl -X POST http://127.0.0.1:32080/api/v1/registered-model/tag?name=example_name&tag=789 Copy Example Response: { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":\"Create a registered model tag instance\", \"result\":null, \"attributes\":{} } Copy "},{"title":"Delete a registered model tag","type":1,"pageTitle":"Serve REST API","url":"docs/next/api/registered-model#delete-a-registered-model-tag","content":"DELETE /api/v1/registered-model/tag?name={name}&tag={tag} Example Request curl -X DELETE http://127.0.0.1:32080/api/v1/registered-model/tag?name=example_name&tag=789 Copy Example Response: { \"attributes\" : {}, \"code\" : 200, \"message\" : \"Delete a registered model tag instance\", \"result\" : null, \"status\" : \"OK\", \"success\" : true } Copy "},{"title":"How To Contribute to Submarine","type":0,"sectionRef":"#","url":"docs/next/community/contributing","content":"","keywords":""},{"title":"Preface","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/next/community/contributing#preface","content":"Apache Submarine is an Apache 2.0 License Software. Contributing to Submarine means you agree to the Apache 2.0 License. Please read Code of Conduct carefully.The document How It Works can help you understand Apache Software Foundation further. "},{"title":"Build Submarine","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/next/community/contributing#build-submarine","content":"Build From Code "},{"title":"Creating patches","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/next/community/contributing#creating-patches","content":"Submarine follows Fork & Pull model. "},{"title":"Step1: Fork apache/submarine github repository (first time)","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/next/community/contributing#step1-fork-apachesubmarine-github-repository-first-time","content":"Visit https://github.com/apache/submarineClick the Fork button to create a fork of the repository "},{"title":"Step2: Clone the Submarine to your local machine","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/next/community/contributing#step2-clone-the-submarine-to-your-local-machine","content":"# USERNAME – your Github user account name. git clone git@github.com:${USERNAME}/submarine.git # or: git clone https://github.com/${USERNAME}/submarine.git cd submarine # set upstream git remote add upstream git@github.com:apache/submarine.git # or: git remote add upstream https://github.com/apache/submarine.git # Don't push to the upstream master. git remote set-url --push upstream no_push # Check upstream/origin: # origin git@github.com:${USERNAME}/submarine.git (fetch) # origin git@github.com:${USERNAME}/submarine.git (push) # upstream git@github.com:apache/submarine.git (fetch) # upstream no_push (push) git remote -v Copy "},{"title":"Step3: Create a new Jira in Submarine project","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/next/community/contributing#step3-create-a-new-jira-in-submarine-project","content":"New contributors need privilege to create JIRA issues. Please email kaihsun@apache.org with your Jira username. In addition, the email title should be \"[New Submarine Contributor]\".Check Jira issue tracker for existing issues.Create a new Jira issue in Submarine project. When the issue is created, a Jira number (eg. SUBMARINE-748) will be assigned to the issue automatically. "},{"title":"Step4: Create a local branch for your contribution","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/next/community/contributing#step4-create-a-local-branch-for-your-contribution","content":"cd submarine # Make your local master up-to-date git checkout master git fetch upstream git rebase upstream/master # Create a new branch fro issue SUBMARINE-${jira_number} git checkout -b SUBMARINE-${jira_number} # Example: git checkout -b SUBMARINE-748 Copy "},{"title":"Step5: Develop & Create commits","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/next/community/contributing#step5-develop--create-commits","content":"You can edit the code on the SUBMARINE-${jira_number} branch. (Coding Style: Code Convention)Create commits git add ${edited files} git commit -m \"SUBMARINE-${jira_number}. ${Commit Message}\" # Example: git commit -m \"SUBMARINE-748. Update Contributing guide\" Copy "},{"title":"Step6: Syncing your local branch with upstream/master","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/next/community/contributing#step6-syncing-your-local-branch-with-upstreammaster","content":"# On SUBMARINE-${jira_number} branch git fetch upstream git rebase upstream/master Copy Please do not use git pull to synchronize your local branch. Because git pull does a merge to create merged commits, these will make commit history messy. "},{"title":"Step7: Push your local branch to your personal fork","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/next/community/contributing#step7-push-your-local-branch-to-your-personal-fork","content":"git push origin SUBMARINE-${jira_number} Copy "},{"title":"Step8: Check GitHub Actions status of your personal commit","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/next/community/contributing#step8-check-github-actions-status-of-your-personal-commit","content":"Visit https://github.com/${USERNAME}/submarine/actionsPlease make sure your new commits can pass all workflows before creating a pull request.  "},{"title":"Step9: Create a pull request on github UI","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/next/community/contributing#step9-create-a-pull-request-on-github-ui","content":"Visit your fork at https://github.com/${USERNAME}/submarine.gitClick Compare & Pull Request button to create pull request. Pull Request template# Pull request templateFilling the template thoroughly can improve the speed of the review process. Example:   "},{"title":"Step10: Check GitHub Actions status of your pull request in apache/submarine","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/next/community/contributing#step10-check-github-actions-status-of-your-pull-request-in-apachesubmarine","content":"Visit https://github.com/apache/submarine/actionsPlease make sure your pull request can pass all workflows.  "},{"title":"Step11: The Review Process","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/next/community/contributing#step11-the-review-process","content":"Anyone can be a reviewer and comment on the pull requests.Reviewer can indicate that a patch looks suitable for merging with a comment such as: \"Looks good\", \"LGTM\", \"+1\". (PS: LGTM = Looks Good To Me)At least one indication of suitability (e.g. \"LGTM\") from a committer is required to be merged. A committer can then initiate lazy consensus (\"Merge if there is no more discussion\") after which the code can be merged after a particular time (usually 24 hours) if there are no more reviews.Contributors can ping reviewers (including committers) by commenting 'Ready to review'. "},{"title":"Step12: Address review comments","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/next/community/contributing#step12-address-review-comments","content":"Push new commits to SUBMARINE-${jira_number} branch. The pull request will update automatically.After you address all review comments, committers will merge the pull request. "},{"title":"Code convention","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/next/community/contributing#code-convention","content":"We are following Google Code style: Java styleShell style There are some plugins to format, lint your code in IDE (use dev-support/maven-config/checkstyle.xml as rules) Checkstyle plugin for Intellij (Setting Guide)Checkstyle plugin for Eclipse (Setting Guide) "},{"title":"How to become a Committer","type":0,"sectionRef":"#","url":"docs/next/community/HowToBecomeCommitter","content":"Apache Submarine builds a community completely following Apache’s rules. Apache Committer is a term used in ASF (Apache Software Foundation) to indicate the person who submits a specific project. Apache Submarine Committer has permission to write the Submarine codebase and can merge PR. Anyone who has made enough contributions to the community and gained enough trust can become an Apache Submarine Committer. As long as anyone contributes to the Submarine project, you are the officially recognized Contributor of the Submarine project. There is no exact standard for growing from Contributor to Committer, and there is no expected timetable, but Committer candidates are generally long-term active contributors, becoming Committer does not require a huge architectural improvement contribution, or how many lines of code contribution. Contributing to the codebase, contributing to the documents, participating in the discussion of the mailing list, helping to answer questions, etc., are all ways to increase your influence. List of potential contributions (in no particular order): Submit the bugs, features, and improvements you found to the issueUpdate the official documents so that the project documents are the most recent, the best practices for writing Submarine, and various useful documents for users to analyze the features.Perform test and report test results.Actively participate in voting when the version is releasedParticipate in the discussion on the mailing list, usually there will be mails starting with [DISCUSS]Answer questions from users or developers on the mailing listReview the work of others (both code and non-code) and publish your own suggestionsReview the issues on JIRA and maintain the latest status of the issues, such as closing outdated issues, changing the issue’s error information, etc.Guide new contributors and be familiar with the community processGive speeches and blogs about Submarine, and add these to the official website of SubmarineAny contribution that is beneficial to the development of the Submarine community ...... More can refer to: ASF official documents Not everyone can complete all (or even any) items on this list. If you want to contribute in other ways, then just do it (and add them to the list). Pleasant manners and dedication are all you need to have a positive impact on the Submarine project. Inviting you to become Committer is the result of your long-term and stable interaction with the community, and the trust and recognition of the Submarine community. Committer is obliged to review and merge PRs submitted by others, test and vote on candidate versions when the version is released, participate in the discussion of feature design plans, and other types of project contributions. When you are active enough and make a bigger contribution to the community, you can be promoted to a PMC member of the Submarine project.","keywords":""},{"title":"Guide for Apache Submarine Committers","type":0,"sectionRef":"#","url":"docs/next/community/HowToCommit","content":"","keywords":""},{"title":"New committers","type":1,"pageTitle":"Guide for Apache Submarine Committers","url":"docs/next/community/HowToCommit#new-committers","content":"New committers are encouraged to first read Apache's generic committer documentation: Apache New Committer GuideApache Committer FAQ The first act of a new core committer is typically to add their name to the credits page. This requires changing the site source inhttps://github.com/apache/submarine-site/blob/master/community/member.md. Once done, update the Submarine website as describedhere(TLDR; don't forget to regenerate the site with hugo, and commit the generated results, too). "},{"title":"Review","type":1,"pageTitle":"Guide for Apache Submarine Committers","url":"docs/next/community/HowToCommit#review","content":"Submarine committers should, as often as possible, attempt to review patches submitted by others. Ideally every submitted patch will get reviewed by a committer within a few days. If a committer reviews a patch they've not authored, and believe it to be of sufficient quality, then they can commit the patch, otherwise the patch should be cancelled with a clear explanation for why it was rejected. The list of submitted patches can be found in the GitHubPull Requests page. Committers should scan the list from top-to-bottom, looking for patches that they feel qualified to review and possibly commit. For non-trivial changes, it is best to get another committer to review & approve your own patches before commit. "},{"title":"Reject","type":1,"pageTitle":"Guide for Apache Submarine Committers","url":"docs/next/community/HowToCommit#reject","content":"Patches should be rejected which do not adhere to the guidelines inContribution Guidelines. Committers should always be polite to contributors and try to instruct and encourage them to contribute better patches. If a committer wishes to improve an unacceptable patch, then it should first be rejected, and a new patch should be attached by the committer for review. "},{"title":"Commit individual patches","type":1,"pageTitle":"Guide for Apache Submarine Committers","url":"docs/next/community/HowToCommit#commit-individual-patches","content":"Submarine uses git for source code version control. The writable repo is at -https://gitbox.apache.org/repos/asf/submarine.git It is strongly recommended to use the cicd script to merge the PRs. See the instructions athttps://github.com/apache/submarine/tree/master/dev-support/cicd "},{"title":"Adding Contributors role","type":1,"pageTitle":"Guide for Apache Submarine Committers","url":"docs/next/community/HowToCommit#adding-contributors-role","content":"There are three roles (Administrators, Committers, Contributors) in the project. Contributors who have Contributors role can become assignee of the issues in the project.Committers who have Committers role can set arbitrary roles in addition to Contributors role.Committers who have Administrators role can edit or delete all comments, or even delete issues in addition to Committers role. How to set roles Login to ASF JIRAGo to the project page (e.g. https://issues.apache.org/jira/browse/SUBMARINE )Hit \"Administration\" tabHit \"Roles\" tab in left sideAdd Administrators/Committers/Contributors role "},{"title":"How to vote a Committer or PMC","type":0,"sectionRef":"#","url":"docs/next/community/HowToVoteCommitterOrPMC","content":"","keywords":""},{"title":"The voting process of becoming a Submarine Committer or PMC","type":1,"pageTitle":"How to vote a Committer or PMC","url":"docs/next/community/HowToVoteCommitterOrPMC#the-voting-process-of-becoming-a-submarine-committer-or-pmc","content":"After the PMC members of Submarine discover any valuable contributions from the community contributors and obtain the consent of the candidate, they initiate a discussion on the private mailing list of Submarine: [DISCUSS] YYYYY as a Submarine XXXXXX In the email, the source of the candidate’s contributions should be clearly stated, so that everyone can discuss and analyze. The discussion email will last at least 72 hours, and the project team members, including the mentors, will fully express their views on the proposed email. Regardless of whether there is a disagreement, after the discussion email, the vote initiator needs to initiate a Committer or PMC vote on the private mailing list of Submarine; [VOTE] YYYYY as a Submarine XXXXXX The voting mail should last for at least 72 hours, and there should be at least 3 +1 votes to pass the vote. If there are 0 votes or one -1 vote, the entire vote will fail. If voting -1, you need to clarify the question so that everyone can understand. After the voting email is over, the vote initiator should summarize it on the voting line, remind the end of voting, and send it to the voting summary email. [RESULTS][vote] YYYYY as a Submarine XXXXXX After the vote summary email is sent, if the vote passed, the vote initiator must send an invitation email to the candidate, and the invitation email needs the candidate to reply to accept or decline through the designated mailbox. [Invitation] Invitation to join Apache Submarine as a XXXXXX The email should be sent to the candidate, and the copy is sent to private@submarine.apache.org After the candidate accepts the invitation, if the candidate does not have an apache email account, the vote initiator needs to assist the candidate to create an apache account according to the guidelines. If the above content is completed, the vote initiator still needs to do the following two things: 6.1 Apply to the project leader to add project team members, and open the authority accounts for the jira and apache projects. 6.2 Send a notification email to the dev@submarine.apache.org mail group: [ANNOUNCE] New XXXXXX: YYYYY So far, the entire process is completed, then the candidate officially becomes the Committer or PMC of Submarine. "},{"title":"Apache Submarine Community","type":0,"sectionRef":"#","url":"docs/next/community/README","content":"","keywords":""},{"title":"Communicating","type":1,"pageTitle":"Apache Submarine Community","url":"docs/next/community/README#communicating","content":"You can reach out to the community members via any one of the following ways: Slack Developer: https://join.slack.com/t/the-asf/shared_invite/zt-vlfbf7ch-HkbNHiU_uDlcH_RvaHv9gQAfter clicking the link above, you would join the ASF slack workspace, where you could search the submarine channel and join it. Zoom: https://cloudera.zoom.us/j/880548968 Sync Up: https://docs.google.com/document/d/16pUO3TP4SxSeLduG817GhVAjtiph9HYpRHo_JgduDvw/edit "},{"title":"Your First Contribution","type":1,"pageTitle":"Apache Submarine Community","url":"docs/next/community/README#your-first-contribution","content":"You can start by finding an existing issue with the https://issues.apache.org/jira/projects/SUBMARINE/issues/SUBMARINE?filter=allopenissues label. These issues are well suited for new contributors. If a PR (Pull Request) submitted to the Submarine Github projects by you is approved and merged, then you become a Submarine Contributor. If you want to work on a new idea of relatively small scope: Submit an issue describing your proposed change to the repo in question. The repo owners will respond to your issue promptly. Submit a pull request of Submarine containing a tested change. Contributions are welcomed and greatly appreciated. See CONTRIBUTING for details on submitting patches and the contribution workflow. "},{"title":"How Do I Become a Committer?","type":1,"pageTitle":"Apache Submarine Community","url":"docs/next/community/README#how-do-i-become-a-committer","content":"First of all, you need to get involved and be a Contributor. Based on your track-record as a contributor, Per Apache code, PMCs vote on committership, may invite you to be a committer (after we've called a vote). When that happens, if you accept, the following process kicks into place... Note that becoming a committer is not just about submitting some patches; it‘s also about helping out on the development and user, helping with documentation and the issues. See How to become an Apache Submarine Committer and PMC for more details. "},{"title":"How to commit","type":1,"pageTitle":"Apache Submarine Community","url":"docs/next/community/README#how-to-commit","content":"See How to commit for helper doc for Submarine committers. "},{"title":"Communication","type":1,"pageTitle":"Apache Submarine Community","url":"docs/next/community/README#communication","content":"Communication within the Submarine community abides by Apache’s Code of Conduct. "},{"title":"Mailing lists","type":1,"pageTitle":"Apache Submarine Community","url":"docs/next/community/README#mailing-lists","content":"Get help using Apache Submarine or contribute to the project on our mailing lists: Users : subscribe, unsubscribe, archivesfor usage questions, help, and announcements.Dev : subscribe, unsubscribe, archivesfor people wanting to contribute to the project.Commits : subscribe, unsubscribe, archivesfor commit messages and patches. Take subscribe Dev as an example, you should send an email to dev-subscribe@submarine.apache.org. Usually, this happens when you just click the \"subscribe\" link. If this does not work, simply copy the address and paste it into the \"To:\" field of a new message. After that, you will get an email from dev-help@submarine.apache.org, follow the directives of the mail to reply, then you will subscribe dev@submarine.apache.org successfully. "},{"title":"License","type":1,"pageTitle":"Apache Submarine Community","url":"docs/next/community/README#license","content":"Submarine source code is under the Apache 2.0 license. See the LICENSE file for details. "},{"title":"Environments Implementation","type":0,"sectionRef":"#","url":"docs/next/designDocs/environments-implementation","content":"","keywords":""},{"title":"Overview","type":1,"pageTitle":"Environments Implementation","url":"docs/next/designDocs/environments-implementation#overview","content":"Environment profiles (or environment for short) defines a set of libraries and when Docker is being used, a Docker image in order to run an experiment or a notebook. Docker and/or VM-image (such as, VirtualBox/VMWare images, Amazon Machine Images - AMI, Or custom image of Azure VM) defines the base layer of the environment. Please note that VM-image is different from VM instance type, On top of that, users can define a set of libraries (such as Python/R) to install, we call it kernel. Example of Environment  +-------------------+ |+-----------------+| || Python=3.7 || || Tensorflow=2.0 || |+---Exp Dependency+| |+-----------------+| ||OS=Ubuntu16.04 || ||CUDA=10.2 || ||GPU_Driver=375.. || |+---Base Library--+| +-------------------+ Copy As you can see, There're base libraries, such as what OS, CUDA version, GPU driver, etc. They can be achieved by specifying a VM-image / Docker image. On top of that, user can bring their dependencies, such as different version of Python, Tensorflow, Pandas, etc. How users use environment? Users can save different environment configs which can be also shared across the platform. Environment profiles can be used to run a notebook (e.g. by choosing different kernel from Jupyter), or an experiment. Predefined experiment library includes what environment to use so users don't have to choose which environment to use.  +-------------------+ |+-----------------+| +------------+ || Python=3.7 || |User1 | || Tensorflow=2.0 || +------------+ |+---Kernel -------+| +------------+ |+-----------------+|<----+ |User2 | ||OS=Ubuntu16.04 || + +------------+ ||CUDA=10.2 || | +------------+ ||GPU_Driver=375.. || | |User3 | |+---Base Library--+| | +------------+ +-----Default-Env---+ | | | +-------------------+ | |+-----------------+| | || Python=3.3 || | || Tensorflow=2.0 || | |+---kernel--------+| | |+-----------------+| | ||OS=Ubuntu16.04 || | ||CUDA=10.3 ||<----+ ||GPU_Driver=375.. || |+---Base Library--+| +-----My-Customized-+ Copy There're two environments in the above graph, \"Default-Env\" and \"My-Customized\", which can have different combinations of libraries for different experiments/notebooks. Users can choose different environments for different experiments as they want. Environments can be added/listed/deleted/selected through CLI/SDK/UI. Implementation# "},{"title":"Environment API definition","type":1,"pageTitle":"Environments Implementation","url":"docs/next/designDocs/environments-implementation#environment-api-definition","content":"Let look at what object definition looks like to define an environment, API of environment looks like:  name: \"my_submarine_env\", vm-image: \"...\", docker-image: \"...\", kernel: <object of kernel> description: \"this is the most common env used by team ABC\" Copy vm-image is optional if we don't need to launch new VM (like running a training job in a cloud-remote machine). docker-image is requiredkernel could be optional if kernel is already included by vm-image or docker-image.name of the environment should be unique in the system, so user can reference it when create a new experiment/notebook. "},{"title":"VM-image and Docker-image","type":1,"pageTitle":"Environments Implementation","url":"docs/next/designDocs/environments-implementation#vm-image-and-docker-image","content":"Docker-image and VM image should be prepared by system admin / SREs, it is hard for Data-Scientists to write an error-proof Dockerfile, and push/manage Docker images. This is one of the reason we hide Docker-image inside \"environment\", we will encourage users to customize their kernels if needed, but don't have to touch Dockerfile and build/push/manage new Docker images. As a project, we will document what's the best practice and example of Dockerfiles. Dockerfile should include proper ENTRYPOINT definition which pointed to our default script, so no matter it is notebook, or an experiment, we will setup kernel (see below) and other environment variables properly. "},{"title":"Kernel Implementation","type":1,"pageTitle":"Environments Implementation","url":"docs/next/designDocs/environments-implementation#kernel-implementation","content":"After investigating different alternatives (such as pipenv, venv, etc.), we decided to use Conda environment which nicely replaces Python virtual env, pip, and can also support other languages. More details can be found at: https://medium.com/@krishnaregmi/pipenv-vs-virtualenv-vs-conda-environment-3dde3f6869ed When once Conda, users can easily add, remove dependency of a Conda environment. User can also easily export environment to yaml file. The yaml file of Conda environment by using conda env export looks like: name: base channels: - defaults dependencies: - _ipyw_jlab_nb_ext_conf=0.1.0=py37_0 - alabaster=0.7.12=py37_0 - anaconda=2020.02=py37_0 - anaconda-client=1.7.2=py37_0 - anaconda-navigator=1.9.12=py37_0 - anaconda-project=0.8.4=py_0 - applaunchservices=0.2.1=py_0 Copy Including Conda kernel, the environment object may look like: name: \"my_submarine_env\", vm-image: \"...\", docker-image: \"...\", kernel: name: team_default_python_3.7 channels: - defaults dependencies: - _ipyw_jlab_nb_ext_conf=0.1.0=py37_0 - alabaster=0.7.12=py37_0 - anaconda=2020.02=py37_0 - anaconda-client=1.7.2=py37_0 - anaconda-navigator=1.9.12=py37_0 Copy When launch a new experiment / notebook session using the my_submarine_env, submarine server will use defined Docker image, and Conda kernel to launch of container. "},{"title":"Storage of Environment","type":1,"pageTitle":"Environments Implementation","url":"docs/next/designDocs/environments-implementation#storage-of-environment","content":"Environment of Submarine is just a simple text file, so it will be persisted in Submarine metastore, which is ideally a Database. Docker image is stored inside a regular Docker registry, which will be handled outside of the system. Conda dependencies are stored in Conda channel (where referenced packages are stored), which will be handled/setuped separately. (Popular conda channels are default and conda-forge) For more detailed discussion about storage-related implementations, please refer to storage-implementation. "},{"title":"How to implement to make user can easily use Submarine environments?","type":1,"pageTitle":"Environments Implementation","url":"docs/next/designDocs/environments-implementation#how-to-implement-to-make-user-can-easily-use-submarine-environments","content":"We like simplicities, and we don't want to leak complexities of implementations to the users. To make it happen, we have to do some works to hide complexities. There're two primary uses of environments: experiments and notebook, for both of them, users should not do works like explictily call conda active $env_name to active environments. To make it happen, what we can do is to include following parts in Dockerfile FROM ubuntu:18.04 <Include whatever base-libraries like CUDA, etc.> <Make sure conda (with our preferred version) is installed> <Make sure Jupyter (with our preferred version) is installed> # This is just a sample of Dockerfile, users can do more customizations if needed ENTRYPOINT [\"/submarine-bootstrap.sh\"] Copy When Submarine Server (this is implementation detail of Submarine Server, user will not see it at all) launch an experiment, or notebook, it will invoke following docker run command (or any other equvilant like using K8s spec): docker run <submarine_docker_image> --kernel <kernel_name> -- .... python train.py --batch_size 5 (and other parameters) Copy Similarily, to launch a notebook: docker run <submarine_docker_image> --kernel <kernel_name> -- .... jupyter Copy The submarine-bootstrap.sh is part of Submarine repo, and will handle --kernel argument which will invoke conda active $kernel_name before anything else. (Like run the training job). "},{"title":"Architecture and Requirment","type":0,"sectionRef":"#","url":"docs/next/designDocs/architecture-and-requirements","content":"","keywords":""},{"title":"Terminology","type":1,"pageTitle":"Architecture and Requirment","url":"docs/next/designDocs/architecture-and-requirements#terminology","content":"Term\tDescriptionUser\tA single data-scientist/data-engineer. User has resource quota, credentials Team\tUser belongs to one or more teams, teams have ACLs for artifacts sharing such as notebook content, model, etc. Admin\tAlso called SRE, who manages user's quotas, credentials, team, and other components. "},{"title":"Background","type":1,"pageTitle":"Architecture and Requirment","url":"docs/next/designDocs/architecture-and-requirements#background","content":"Everybody talks about machine learning today, and lots of companies are trying to leverage machine learning to push the business to the next level. Nowadays, as more and more developers, infrastructure software companies coming to this field, machine learning becomes more and more achievable. In the last decade, the software industry has built many open source tools for machine learning to solve the pain points: It was not easy to build machine learning algorithms manually, such as logistic regression, GBDT, and many other algorithms:Answer to that: Industries have open sourced many algorithm libraries, tools, and even pre-trained models so that data scientists can directly reuse these building blocks to hook up to their data without knowing intricate details inside these algorithms and models. It was not easy to achieve \"WYSIWYG, what you see is what you get\" from IDEs: not easy to get output, visualization, troubleshooting experiences at the same place.Answer to that: Notebooks concept was added to this picture, notebook brought the experiences of interactive coding, sharing, visualization, debugging under the same user interface. There're popular open-source notebooks like Apache Zeppelin/Jupyter. It was not easy to manage dependencies: ML applications can run on one machine is hard to deploy on another machine because it has lots of libraries dependencies.Answer to that: Containerization becomes popular and a standard to packaging dependencies to make it easier to \"build once, run anywhere\". Fragmented tools, libraries were hard for ML engineers to learn. Experiences learned in one company are not naturally migratable to another company.Answer to that: A few dominant open-source frameworks reduced the overhead of learning too many different frameworks, concepts. Data-scientist can learn a few libraries such as Tensorflow/PyTorch, and a few high-level wrappers like Keras will be able to create your machine learning application from other open-source building blocks. Similarly, models built by one library (such as libsvm) were hard to be integrated into machine learning pipeline since there's no standard format.Answer to that: Industry has built successful open-source standard machine learning frameworks such as Tensorflow/PyTorch/Keras so their format can be easily shared across. And efforts to build an even more general model format such as ONNX. It was hard to build a data pipeline that flows/transform data from a raw data source to whatever required by ML applications.Answer to that: Open source big data industry plays an important role in providing, simplify, unify processes and building blocks for data flows, transformations, etc. The machine learning industry is moving on the right track to solve major roadblocks. So what are the pain points now for companies which have machine learning needs? What can we help here? To answer this question, let's look at machine learning workflow first. "},{"title":"Machine Learning Workflows & Pain points","type":1,"pageTitle":"Architecture and Requirment","url":"docs/next/designDocs/architecture-and-requirements#machine-learning-workflows--pain-points","content":"1) From different data sources such as edge, clickstream, logs, etc. => Land to data lakes 2) From data lake, data transformation: => Data transformations: Cleanup, remove invalid rows/columns, select columns, sampling, split train/test data-set, join table, etc. => Data prepared for training. 3) From prepared data: => Training, model hyper-parameter tuning, cross-validation, etc. => Models saved to storage. 4) From saved models: => Model assurance, deployment, A/B testing, etc. => Model deployed for online serving or offline scoring. Copy Typically data scientists responsible for item 2)-4), 1) typically handled by a different team (called Data Engineering team in many companies, some Data Engineering team also responsible for part of data transformation) "},{"title":"Pain #1 Complex workflow/steps from raw data to model, different tools needed by different steps, hard to make changes to workflow, and not error-proof","type":1,"pageTitle":"Architecture and Requirment","url":"docs/next/designDocs/architecture-and-requirements#pain-1-complex-workflowsteps-from-raw-data-to-model-different-tools-needed-by-different-steps-hard-to-make-changes-to-workflow-and-not-error-proof","content":"It is a complex workflow from raw data to usable models, after talking to many different data scientists, we have learned that a typical procedure to train a new model and push to production can take months to 1-2 years. It is also a wide skill set required by this workflow. For example, data transformation needs tools like Spark/Hive for large scale and tools like Pandas for a small scale. And model training needs to be switched between XGBoost, Tensorflow, Keras, PyTorch. Building a data pipeline requires Apache Airflow or Oozie. Yes, there are great, standardized open-source tools built for many of such purposes. But how about changes need to be made for a particular part of the data pipeline? How about adding a few columns to the training data for experiments? How about training models, and push models to validation, A/B testing before rolling to production? All these steps need jumping between different tools, UIs, and very hard to make changes, and it is not error-proof during these procedures. "},{"title":"Pain #2 Dependencies of underlying resource management platform","type":1,"pageTitle":"Architecture and Requirment","url":"docs/next/designDocs/architecture-and-requirements#pain-2-dependencies-of-underlying-resource-management-platform","content":"To make jobs/services required by a machine learning platform to be able to run, we need an underlying resource management platform. There're some choices of resource management platform, and they have distinct advantages and disadvantages. For example, there're many machine learning platform built on top of K8s. It is relatively easy to get a K8s from a cloud vendor, easy to orchestrate machine learning required services/daemons run on K8s. However, K8s doesn't offer good support jobs like Spark/Flink/Hive. So if your company has Spark/Flink/Hive running on YARN, there're gaps and a significant amount of work to move required jobs from YARN to K8s. Maintaining a separate K8s cluster is also overhead to Hadoop-based data infrastructure. Similarly, if your company's data pipelines are mostly built on top of cloud resources and SaaS offerings, asking you to install a separate YARN cluster to run a new machine learning platform doesn't make a lot of sense. "},{"title":"Pain #3 Data scientist are forced to interact with lower-level platform components","type":1,"pageTitle":"Architecture and Requirment","url":"docs/next/designDocs/architecture-and-requirements#pain-3-data-scientist-are-forced-to-interact-with-lower-level-platform-components","content":"In addition to the above pain, we do see Data Scientists are forced to learn underlying platform knowledge to be able to build a real-world machine learning workflow. For most of the data scientists we talked with, they're experts of ML algorithms/libraries, feature engineering, etc. They're also most familiar with Python, R, and some of them understand Spark, Hive, etc. If they're asked to do interactions with lower-level components like fine-tuning a Spark job's performance; or troubleshooting job failed to launch because of resource constraints; or write a K8s/YARN job spec and mount volumes, set networks properly. They will scratch their heads and typically cannot perform these operations efficiently. "},{"title":"Pain #4 Comply with data security/governance requirements","type":1,"pageTitle":"Architecture and Requirment","url":"docs/next/designDocs/architecture-and-requirements#pain-4-comply-with-data-securitygovernance-requirements","content":"TODO: Add more details. "},{"title":"Pain #5 No good way to reduce routine ML code development","type":1,"pageTitle":"Architecture and Requirment","url":"docs/next/designDocs/architecture-and-requirements#pain-5-no-good-way-to-reduce-routine-ml-code-development","content":"After the data is prepared, the data scientist needs to do several routine tasks to build the ML pipeline. To get a sense of the existing the data set, it usually needs a split of the data set, the statistics of data set. These tasks have a common duplicate part of code, which reduces the efficiency of data scientists. An abstraction layer/framework to help the developer to boost ML pipeline development could be valuable. It's better than the developer only needs to fill callback function to focus on their key logic. Submarine# "},{"title":"Overview","type":1,"pageTitle":"Architecture and Requirment","url":"docs/next/designDocs/architecture-and-requirements#overview","content":""},{"title":"A little bit history","type":1,"pageTitle":"Architecture and Requirment","url":"docs/next/designDocs/architecture-and-requirements#a-little-bit-history","content":"Initially, Submarine is built to solve problems of running deep learning jobs like Tensorflow/PyTorch on Apache Hadoop YARN, allows admin to monitor launched deep learning jobs, and manage generated models. It was part of YARN initially, and code resides under hadoop-yarn-applications. Later, the community decided to convert it to be a subproject within Hadoop (Sibling project of YARN, HDFS, etc.) because we want to support other resource management platforms like K8s. And finally, we're reconsidering Submarine's charter, and the Hadoop community voted that it is the time to moved Submarine to a separate Apache TLP. "},{"title":"Why Submarine?","type":1,"pageTitle":"Architecture and Requirment","url":"docs/next/designDocs/architecture-and-requirements#why-submarine","content":"ONE PLATFORM Submarine is the ONE PLATFORM to allow Data Scientists to create end-to-end machine learning workflow. ONE PLATFORM means it supports Data Scientists and data engineers to finish their jobs on the same platform without frequently switching their toolsets. From dataset exploring data pipeline creation, model training, and tuning, and push model to production. All these steps can be completed within the ONE PLATFORM. Resource Management Independent It is also designed to be resource management independent, no matter if you have Apache Hadoop YARN, K8s, or just a container service, you will be able to run Submarine on top it. "},{"title":"Requirements and non-requirements","type":1,"pageTitle":"Architecture and Requirment","url":"docs/next/designDocs/architecture-and-requirements#requirements-and-non-requirements","content":""},{"title":"Notebook","type":1,"pageTitle":"Architecture and Requirment","url":"docs/next/designDocs/architecture-and-requirements#notebook","content":"1) Users should be able to create, edit, delete a notebook. (P0) 2) Notebooks can be persisted to storage and can be recovered if failure happens. (P0) 3) Users can trace back to history versions of a notebook. (P1) 4) Notebooks can be shared with different users. (P1) 5) Users can define a list of parameters of a notebook (looks like parameters of the notebook's main function) to allow executing a notebook like a job. (P1) 6) Different users can collaborate on the same notebook at the same time. (P2) A running notebook instance is called notebook session (or session for short). "},{"title":"Experiment","type":1,"pageTitle":"Architecture and Requirment","url":"docs/next/designDocs/architecture-and-requirements#experiment","content":"Experiments of Submarine is an offline task. It could be a shell command, a Python command, a Spark job, a SQL query, or even a workflow. The primary purposes of experiments under Submarine's context is to do training tasks, offline scoring, etc. However, experiment can be generalized to do other tasks as well. Major requirement of experiment: 1) Experiments can be submitted from UI/CLI/SDK. 2) Experiments can be monitored/managed from UI/CLI/SDK. 3) Experiments should not bind to one resource management platform (K8s). Type of experiments#  There're two types of experiments:Adhoc experiments: which includes a Python/R/notebook, or even an adhoc Tensorflow/PyTorch task, etc. Predefined experiment library: This is specialized experiments, which including developed libraries such as CTR, BERT, etc. Users are only required to specify a few parameters such as input, output, hyper parameters, etc. Instead of worrying about where's training script/dependencies located. Adhoc experiment# Requirements: Allow run adhoc scripts.Allow model engineer, data scientist to run Tensorflow/Pytorch programs on K8s/Container-cloud.Allow jobs easy access data/models in HDFS/s3, etc.Support run distributed Tensorflow/Pytorch jobs with simple configs.Support run user-specified Docker images.Support specify GPU and other resources. Predefined experiment library# Here's an example of predefined experiment library to train deepfm model: { \"input\": { \"train_data\": [\"hdfs:///user/submarine/data/tr.libsvm\"], \"valid_data\": [\"hdfs:///user/submarine/data/va.libsvm\"], \"test_data\": [\"hdfs:///user/submarine/data/te.libsvm\"], \"type\": \"libsvm\" }, \"output\": { \"save_model_dir\": \"hdfs:///user/submarine/deepfm\", \"metric\": \"auc\" }, \"training\": { \"batch_size\" : 512, \"field_size\": 39, \"num_epochs\": 3, \"feature_size\": 117581, ... } } Copy Predefined experiment libraries can be shared across users on the same platform, users can also add new or modified predefined experiment library via UI/REST API. We will also model AutoML, auto hyper-parameter tuning to predefined experiment library. Pipeline# Pipeline is a special kind of experiment: A pipeline is a DAG of experiments.Can be also treated as a special kind of experiment.Users can submit/terminate a pipeline.Pipeline can be created/submitted via UI/API. "},{"title":"Environment Profiles","type":1,"pageTitle":"Architecture and Requirment","url":"docs/next/designDocs/architecture-and-requirements#environment-profiles","content":"Environment profiles (or environment for short) defines a set of libraries and when Docker is being used, a Docker image in order to run an experiment or a notebook. Docker or VM image (such as AMI: Amazon Machine Images) defines the base layer of the environment. On top of that, users can define a set of libraries (such as Python/R) to install. Users can save different environment configs which can be also shared across the platform. Environment profiles can be used to run a notebook (e.g. by choosing different kernel from Jupyter), or an experiment. Predefined experiment library includes what environment to use so users don't have to choose which environment to use. Environments can be added/listed/deleted/selected through CLI/SDK. "},{"title":"Model","type":1,"pageTitle":"Architecture and Requirment","url":"docs/next/designDocs/architecture-and-requirements#model","content":"Model management# Model artifacts are generated by experiments or notebook.A model consists of artifacts from one or multiple files.Users can choose to save, tag, version a produced model.Once The Model is saved, Users can do the online model serving or offline scoring of the model. Model serving# After model saved, users can specify a serving script, a model and create a web service to serve the model. We call the web service to \"endpoint\". Users can manage (add/stop) model serving endpoints via CLI/API/UI. "},{"title":"Metrics for training job and model","type":1,"pageTitle":"Architecture and Requirment","url":"docs/next/designDocs/architecture-and-requirements#metrics-for-training-job-and-model","content":"Submarine-SDK provides tracking/metrics APIs, which allows developers to add tracking/metrics and view tracking/metrics from Submarine Workbench UI. "},{"title":"Deployment","type":1,"pageTitle":"Architecture and Requirment","url":"docs/next/designDocs/architecture-and-requirements#deployment","content":"Submarine Services (See architecture overview below) should be deployed easily on-prem / on-cloud. Since there're more and more public cloud offering for compute/storage management on cloud, we need to support deploy Submarine compute-related workloads (such as notebook session, experiments, etc.) to cloud-managed clusters. This also include Submarine may need to take input parameters from customers and create/manage clusters if needed. It is also a common requirement to use hybrid of on-prem/on-cloud clusters. "},{"title":"Security / Access Control / User Management / Quota Management","type":1,"pageTitle":"Architecture and Requirment","url":"docs/next/designDocs/architecture-and-requirements#security--access-control--user-management--quota-management","content":"There're 4 kinds of objects need access-control: Assets belong to Submarine system, which includes notebook, experiments and results, models, predefined experiment libraries, environment profiles.Data security. (Who owns what data, and what data can be accessed by each users).User credentials. (Such as LDAP).Other security, such as Git repo access, etc. For the data security / user credentials / other security, it will be delegated to 3rd libraries such as Apache Ranger, IAM roles, etc. Assets belong to Submarine system will be handled by Submarine itself. Here're operations which Submarine admin can do for users / teams which can be used to access Submarine's assets. Operations for admins Admin uses \"User Management System\" to onboard new users, upload user credentials, assign resource quotas, etc.Admins can create new users, new teams, update user/team mappings. Or remove users/teams.Admin can set resource quotas (if different from system default), permissions, upload/update necessary credentials (like Kerberos keytab) of a user.A DE/DS can also be an admin if the DE/DS has admin access. (Like a privileged user). This will be useful when a cluster is exclusively shared by a user or only shared by a small team.Resource Quota Management System helps admin to manage resources quotas of teams, organizations. Resources can be machine resources like CPU/Memory/Disk, etc. It can also include non-machine resources like $$-based budgets. "},{"title":"Dataset","type":1,"pageTitle":"Architecture and Requirment","url":"docs/next/designDocs/architecture-and-requirements#dataset","content":"There's also need to tag dataset which will be used for training and shared across the platform by different users. Like mentioned above, access to the actual data will be handled by 3rd party system like Apache Ranger / Hive Metastore which is out of the Submarine's scope. "},{"title":"Architecture Overview","type":1,"pageTitle":"Architecture and Requirment","url":"docs/next/designDocs/architecture-and-requirements#architecture-overview","content":""},{"title":"Architecture Diagram","type":1,"pageTitle":"Architecture and Requirment","url":"docs/next/designDocs/architecture-and-requirements#architecture-diagram","content":" +-----------------------------------------------------------------+ | Submarine UI / CLI / REST API / SDK | | Mini-Submarine | +-----------------------------------------------------------------+ +--------------------Submarine Server-----------------------------+ | +---------+ +---------+ +----------+ +----------+ +------------+| | |Data set | |Notebooks| |Experiment| |Models | |Servings || | +---------+ +---------+ +----------+ +----------+ +------------+| |-----------------------------------------------------------------| | | | +-----------------+ +-----------------+ +---------------------+ | | |Experiment | |Compute Resource | |Other Management | | | |Manager | | Manager | |Services | | | +-----------------+ +-----------------+ +---------------------+ | | Spark, template K8s/Docker | | TF, PyTorch, pipeline | | | + +-----------------+ + | |Submarine Meta | | | | Store | | | +-----------------+ | | | +-----------------------------------------------------------------+ (You can use http://stable.ascii-flow.appspot.com/#Draw to draw such diagrams) Copy Compute Resource Manager Helps to manage compute resources on-prem/on-cloud, this module can also handle cluster creation / management, etc. Experiment Manager Work with \"Compute Resource Manager\" to submit different kinds of workloads such as (distributed) Tensorflow / Pytorch, etc. Submarine SDK provides Java/Python/REST API to allow DS or other engineers to integrate into Submarine services. It also includes a mini-submarine component that launches Submarine components from a single Docker container (or a VM image). Details of Submarine Server design can be found at submarine-server-design. "},{"title":"Experiment Implementation","type":0,"sectionRef":"#","url":"docs/next/designDocs/experiment-implementation","content":"","keywords":""},{"title":"Overview","type":1,"pageTitle":"Experiment Implementation","url":"docs/next/designDocs/experiment-implementation#overview","content":"This document talks about implementation of experiment, flows and design considerations. Experiment consists of following components, also interact with other Submarine or 3rd-party components, showing below:  +---------------------------------------+ +----------+ | Experiment Tasks | |Run | | | |Configs | | +----------------------------------+ | +----------+ | | Experiment Runnable Code | | +-----------------+ +----------+ | | | | |Output Artifacts | |Input Data| | | (Like train-job.py) | | |(Models, etc.) | | | | +----------------------------------+ | +-----------------+ | | | +----------------------------------+ | +----------+ | | Experiment Deps (Like Python) | | +-------------+ | +----------------------------------+ | |Logs/Metrics | | +----------------------------------+ | | | | | OS, Base Libaries (Like CUDA) | | +-------------+ | +----------------------------------+ | +---------------------------------------+ ^ | (Launch Task with resources) + +---------------------------------+ |Resource Manager (K8s/Cloud)| +---------------------------------+ Copy As showing in the above diagram, Submarine experiment consists of the following items: On the left side, there're input data and run configs.In the middle box, they're experiment tasks, it could be multiple tasks when we run distributed training, pipeline, etc. There're main runnable code, such as train.py for the training main entry point.The two boxes below: experiment dependencies and OS/Base libraries we called Submarine Environment Profile or Environment for short. Which defined what is the basic libraries to run the main experiment code.Experiment tasks are launched by Resource Manager, such as K8s/Cloud or just launched locally. There're resources constraints for each experiment tasks. (e.g. how much memory, cores, GPU, disk etc. can be used by tasks). On the right side, they're artifacts generated by experiments: Output artifacts: Which are main output of the experiment, it could be model(s), or output data when we do batch prediction.Logs/Metrics for further troubleshooting or understanding of experiment's quality. For the rest of the design doc, we will talk about how we handle environment, code, and manage output/logs, etc. "},{"title":"API of Experiment","type":1,"pageTitle":"Experiment Implementation","url":"docs/next/designDocs/experiment-implementation#api-of-experiment","content":"This is not a full definition of experiment, for more details, please reference to experiment API. Here's just an example of experiment object which help developer to understand what included in an experiment. experiment: name: \"abc\", type: \"script\", environment: \"team-default-ml-env\" code: sync_mode: s3 url: \"s3://bucket/training-job.tar.gz\" parameter: > python training.py --iteration 10 --input=s3://bucket/input output=s3://bucket/output resource_constraint: res=\"mem=20gb, vcore=3, gpu=2\" timeout: \"30 mins\" Copy This defined a \"script\" experiment, which has a name \"abc\", the name can be used to track the experiment. There's environment \"team-default-ml-env\" defined to make sure dependencies of the job can be downloaded properly before executing the job. code defined where the experiment code will be downloaded, we will support a couple of sync_mode like s3 (or abfs/hdfs), git, etc. Different types of experiments will have different specs, for example distributed Tensorflow spec may look like: experiment: name: \"abc-distributed-tf\", type: \"distributed-tf\", ps: environment: \"team-default-ml-cpu\" resource_constraint: res=\"mem=20gb, vcore=3, gpu=0\" worker: environment: \"team-default-ml-gpu\" resource_constraint: res=\"mem=20gb, vcore=3, gpu=2\" code: sync_mode: git url: \"https://foo.com/training-job.git\" parameter: > python /code/training-job/training.py --iteration 10 --input=s3://bucket/input output=s3://bucket/output tensorboard: enabled timeout: \"30 mins\" Copy Since we have different Docker image, one is using GPU and one is not using GPU, we can specify different environment and resource constraint. "},{"title":"Manage environments for experiment","type":1,"pageTitle":"Experiment Implementation","url":"docs/next/designDocs/experiment-implementation#manage-environments-for-experiment","content":"Please refer to environment-implementation.md for more details "},{"title":"Manage storages for experiment","type":1,"pageTitle":"Experiment Implementation","url":"docs/next/designDocs/experiment-implementation#manage-storages-for-experiment","content":"There're different types of storage, such as logs, metrics, dependencies (environments). For more details. Please refer to storage-implementations for more details. This also includes how to manage code for experiment code. "},{"title":"Manage Pre-defined experiment libraries","type":1,"pageTitle":"Experiment Implementation","url":"docs/next/designDocs/experiment-implementation#manage-pre-defined-experiment-libraries","content":""},{"title":"Flow: Submit an experiment","type":1,"pageTitle":"Experiment Implementation","url":"docs/next/designDocs/experiment-implementation#flow-submit-an-experiment","content":""},{"title":"Submit via SDK Flows.","type":1,"pageTitle":"Experiment Implementation","url":"docs/next/designDocs/experiment-implementation#submit-via-sdk-flows","content":"To better understand experiment implementation, It will be good to understand what is the steps of experiment submission. Please note that below code is just pseudo code, not official APIs. "},{"title":"Specify what environment to use","type":1,"pageTitle":"Experiment Implementation","url":"docs/next/designDocs/experiment-implementation#specify-what-environment-to-use","content":"Before submit the environment, you have to choose what environment to choose. Environment defines dependencies, etc. of an experiment or a notebook. might looks like below: conda_environment = \"\"\" name: conda-env channels: - defaults dependencies: - asn1crypto=1.3.0=py37_0 - blas=1.0=mkl - ca-certificates=2020.1.1=0 - certifi=2020.4.5.1=py37_0 - cffi=1.14.0=py37hb5b8e2f_0 - chardet=3.0.4=py37_1003 prefix: /opt/anaconda3/envs/conda-env \"\"\" # This environment can be different from notebook's own environment environment = create_environment { DockerImage = \"ubuntu:16\", CondaEnvironment = conda_environment } Copy To better understand how environment works, please refer to environment-implementation. "},{"title":"Create experiment, specify where's training code located, and parameters.","type":1,"pageTitle":"Experiment Implementation","url":"docs/next/designDocs/experiment-implementation#create-experiment-specify-wheres-training-code-located-and-parameters","content":"For ad-hoc experiment (code located at S3), assume training code is part of the training-job.tar.gz and main class is train.py. When the job is launched, whatever specified in the localize_artifacts will be downloaded. experiment = create_experiment { Environment = environment, ExperimentConfig = { type = \"adhoc\", localize_artifacts = [ \"s3://bucket/training-job.tar.gz\" ], name = \"abc\", parameter = \"python training.py --iteration 10 --input=\"s3://bucket/input output=\"s3://bucket/output\", } } experiment.run() experiment.wait_for_finish(print_output=True) Copy Run notebook file in offline mode# It is possible we want to run a notebook file in offline mode, to do that, here's code to use to run a notebook code experiment = create_experiment { Environment = environment, ExperimentConfig = { type = \"adhoc\", localize_artifacts = [ \"s3://bucket/folder/notebook-123.ipynb\" ], name = \"abc\", parameter = \"runipy training.ipynb --iteration 10 --input=\"s3://bucket/input output=\"s3://bucket/output\", } } experiment.run() experiment.wait_for_finish(print_output=True) Copy Run pre-defined experiment library# experiment = create_experiment { # Here you can use default environment of library Environment = environment, ExperimentConfig = { type = \"template\", name = \"abc\", # A unique name of template template = \"deepfm_ctr\", # yaml file defined what is the parameters need to be specified. parameter = { Input: \"S3://.../input\", Output: \"S3://.../output\" Training: { \"batch_size\": 512, \"l2_reg\": 0.01, ... } } } } experiment.run() experiment.wait_for_finish(print_output=True) Copy "},{"title":"Summarize: Experiment v.s. Notebook session","type":1,"pageTitle":"Experiment Implementation","url":"docs/next/designDocs/experiment-implementation#summarize-experiment-vs-notebook-session","content":"There's a common misunderstanding about what is the differences between running experiment v.s. running task from a notebook session. We will talk about differences and commonalities: Differences \tExperiment\tNotebook SessionRun mode\tOffline\tInteractive Output Artifacts (a.k.a model)\tPersisted in a shared storage (like S3/NFS)\tLocal in the notebook session container, could be ephemeral Run history (meta, logs, metrics)\tMeta/logs/metrics can be traced from experiment UI (or corresponding API)\tNo run history can be traced from Submarine UI/API. Can view the current running paragraph's log/metrics, etc. What to run?\tCode from Docker image or shared storage (like Tarball on S3, Github, etc.)\tLocal in the notebook's paragraph Commonalities \tExperiment & Notebook SessionEnvironment\tThey can share the same Environment configuration "},{"title":"Experiment-related modules inside Submarine-server","type":1,"pageTitle":"Experiment Implementation","url":"docs/next/designDocs/experiment-implementation#experiment-related-modules-inside-submarine-server","content":"(Please refer to architecture of submarine server for more details) "},{"title":"Experiment Manager","type":1,"pageTitle":"Experiment Implementation","url":"docs/next/designDocs/experiment-implementation#experiment-manager","content":"The experiment manager receives the experiment requests, persisting the experiment metas in a database(e.g. MySQL), will invoke subsequence modules to submit and monitor the experiment's execution. "},{"title":"Compute Cluster Manager","type":1,"pageTitle":"Experiment Implementation","url":"docs/next/designDocs/experiment-implementation#compute-cluster-manager","content":"After experiment accepted by experiment manager, based on which cluster the experiment intended to run (like mentioned in the previous sections, Submarine supports to manage multiple compute clusters), compute cluster manager will returns credentials to access the compute cluster. It will also be responsible to create a new compute cluster if needed. For most of the on-prem use cases, there's only one cluster involved, for such cases, ComputeClusterManager returns credentials to access local cluster if needed. "},{"title":"Experiment Submitter","type":1,"pageTitle":"Experiment Implementation","url":"docs/next/designDocs/experiment-implementation#experiment-submitter","content":"Experiment Submitter handles different kinds of experiments to run (e.g. ad-hoc script, distributed TF, MPI, pre-defined templates, Pipeline, AutoML, etc.). And such experiments can be managed by different resource management systems (e.g. K8s, container cloud, etc.) To meet the requirements to support variant kinds of experiments and resource managers, we choose to use plug-in modules to support different submitters (which requires jars to submarine-server’s classpath). To avoid jars and dependencies of plugins break the submarine-server, the plug-ins manager, or both. To solve this issue, we can instantiate submitter plug-ins using a classloader that is different from the system classloader. Submitter Plug-ins# Each plug-in uses a separate module under the server-submitter module. As the default implements, we provide for K8s. The submitter-k8s plug-in is used to submit the job to Kubernetes cluster and use the operator as the runtime. The submitter-k8s plug-in implements the operation of CRD object and provides the java interface. In the beginning, we use the tf-operator for the TensorFlow. If Submarine want to support the other resource management system in the future, such as submarine-docker-cluster (submarine uses the Raft algorithm to create a docker cluster on the docker runtime environment on multiple servers, providing the most lightweight resource scheduling system for small-scale users). We should create a new plug-in module named submitter-docker under the server-submitter module. "},{"title":"Experiment Monitor","type":1,"pageTitle":"Experiment Implementation","url":"docs/next/designDocs/experiment-implementation#experiment-monitor","content":"The monitor tracks the experiment life cycle and records the main events and key info in runtime. As the experiment run progresses, the metrics are needed for evaluation of the ongoing success or failure of the execution progress. Due to adapt the different cluster resource management system, so we need a generic metric info structure and each submitter plug-in should inherit and complete it by itself. "},{"title":"Invoke flows of experiment-related components","type":1,"pageTitle":"Experiment Implementation","url":"docs/next/designDocs/experiment-implementation#invoke-flows-of-experiment-related-components","content":" +-----------------+ +----------------+ +----------------+ +-----------------+ |Experiments | |Compute Cluster | |Experiment | | Experiment | |Mgr | |Mgr | |Submitter | | Monitor | +-----------------+ +----------------+ +----------------+ +-----------------+ + + + + User | | | | Submit |+------------------------------------->+ + Xperiment| Use submitter.validate(spec) | | | to validate spec and create | | | experiment object (state- | | | machine). | | | | | | The experiment manager will | | | persist meta-data to Database| | | | | | | | + + |+-----------------> + | | | Submit Experiments| | | | To ComputeCluster| | | | Mgr, get existing|+---------------->| | | cluster, or | Use Submitter | | | create a new one.| to submit |+---------------> | | | Different kinds | Once job is | | | of experiments | submitted, use |+----+ | | to k8s, etc| monitor to get | | | | | status updates | | | | | | | Monitor | | | | | Xperiment | | | | | status | | | | | |<--------------------------------------------------------+| | | | | | | | Update Status back to Experiment | | | | Manager | |<----+ | | | | | | | | | | | | v v v v Copy TODO: add more details about template, environment, etc. "},{"title":"Common modules of experiment/notebook-session/model-serving","type":1,"pageTitle":"Experiment Implementation","url":"docs/next/designDocs/experiment-implementation#common-modules-of-experimentnotebook-sessionmodel-serving","content":"Experiment/notebook-session/model-serving share a lot of commonalities, all of them are: Some workloads running on K8s.Need persist meta data to DB.Need monitor task/service running status from resource management system. We need to make their implementation are loose-coupled, but at the same time, share some building blocks as much as possible (e.g. submit PodSpecs to K8s, monitor status, get logs, etc.) to reduce duplications. "},{"title":"Support Predefined-experiment-templates","type":1,"pageTitle":"Experiment Implementation","url":"docs/next/designDocs/experiment-implementation#support-predefined-experiment-templates","content":"Predefined Experiment Template is just a way to save data-scientists time to repeatedly entering parameters which is not error-proof and user experience is also bad. "},{"title":"Predefined-experiment-template API to run experiment","type":1,"pageTitle":"Experiment Implementation","url":"docs/next/designDocs/experiment-implementation#predefined-experiment-template-api-to-run-experiment","content":"Predefined experiment template consists a list of parameters, each of the parameter has 4 properties: Key\tRequired\tDefault Value\tDescriptionName of the key\ttrue/false\tWhen required = false, a default value can be provided by the template\tDescription of the parameter For the example of deepfm CTR training experiment mentioned in the architecture-and-requirements.md { \"input\": { \"train_data\": [\"hdfs:///user/submarine/data/tr.libsvm\"], \"valid_data\": [\"hdfs:///user/submarine/data/va.libsvm\"], \"test_data\": [\"hdfs:///user/submarine/data/te.libsvm\"], \"type\": \"libsvm\" }, \"output\": { \"save_model_dir\": \"hdfs:///user/submarine/deepfm\", \"metric\": \"auc\" }, \"training\": { \"batch_size\" : 512, \"field_size\": 39, \"num_epochs\": 3, \"feature_size\": 117581, ... } } Copy The template will be (in yaml format): # deepfm.ctr template name: deepfm.ctr author: description: > This is a template to run CTR training using deepfm algorithm, by default it runs single node TF job, you can also overwrite training parameters to use distributed training. parameters: - name: input.train_data required: true description: > train data is expected in SVM format, and can be stored in HDFS/S3 ... - name: training.batch_size required: false default: 32 description: This is batch size of training Copy The batch format can be used in UI/API. "},{"title":"Handle Predefined-experiment-template from server side","type":1,"pageTitle":"Experiment Implementation","url":"docs/next/designDocs/experiment-implementation#handle-predefined-experiment-template-from-server-side","content":"Please note that, the conversion of predefined-experiment-template will be always handled by server. The invoke flow looks like:  +------------Submarine Server -----------------------+ +--------------+ | +-----------------+ | |Client |+------->|Experimment Mgr | | | | | | | | +--------------+ | +-----------------+ | | + | Submit | +-------v---------+ Get Experiment Template | Template | |Experiment |<-----+From pre-registered | Parameters | |Template Registry| Templates | to Submarine | +-------+---------+ | Server | | | | +-------v---------+ +-----------------+ | | |Deepfm CTR Templ-| |Experiment- | | | |ate Handler +------>|Tensorflow | | | +-----------------+ +--------+--------+ | | | | | | | | +--------v--------+ | | |Experiment | | | |Submitter | | | +--------+--------+ | | | | | | | | +--------v--------+ | | | | | | | ...... | | | +-----------------+ | | | +----------------------------------------------------+ Copy Basically, from Client, it submitted template parameters to Submarine Server, inside submarine server, it finds the corresponding template handler based on the name. And the template handler converts input parameters to an actual experiment, such as a distributed TF experiment. After that, it goes the similar route to validate experiment spec, compute cluster manager, etc. to get the experiment submitted and monitored. Predefined-experiment-template is able to create any kind of experiment, it could be a pipeline:  +-----------------+ +------------------+ |Template XYZ | | XYZ Template | | |+---------------> | Handler | +-----------------+ +------------------+ + | | | | v +--------------------+ +------------------+ | +-----------------+| | Predefined | | | Split Train/ ||<----+| Pipeline | | | Test data || +------------------+ | +-------+---------+| | | | | +-------v---------+| | | Spark Job ETL || | | || | +-------+---------+| | | | | +-------v---------+| | | Train using || | | XGBoost || | +-------+---------+| | | | | +-------v---------+| | | Validate Train || | | Results || | +-----------------+| | | +--------------------+ Copy Template can be also chained to reuse other template handlers  +-----------------+ +------------------+ |Template XYZ | | XYZ Template | | |+---------------> | Handler | +-----------------+ +------------------+ + | v +------------------+ +------------------+ |Distributed | | ABC Template | |TF Experiment |<----+| Handler | +------------------+ +------------------+ Copy Template Handler is a callable class inside Submarine Server with a standard interface defined like. interface ExperimentTemplateHandler { ExperimentSpec createExperiment(TemplatedExperimentParameters param) } Copy We should avoid users to do coding when they want to add new template, we should have several standard template handler to deal with most of the template handling. Experiment templates can be registered/updated/deleted via Submarine Server's REST API, which need to be discussed separately in the doc. (TODO) "},{"title":"Implementation Notes","type":0,"sectionRef":"#","url":"docs/next/designDocs/implementation-notes","content":"Before digging into details of implementations, you should read architecture-and-requirements first to understand overall requirements and architecture. Here're sub topics of Submarine implementations: Submarine Storage: How to store metadata, logs, metrics, etc. of Submarine.Submarine Environment: How environments created, managed, stored in Submarine.Submarine Experiment: How experiments managed, stored, and how the predefined experiment template works.Submarine Notebook: How experiments managed, stored, and how the predefined experiment template works.Submarine Server: How Submarine server is designed, architecture, implementation notes, etc. Working-in-progress designs, Below are designs which are working-in-progress, we will move them to the upper section once design & review is finished: Submarine HA Design: How Submarine HA can be achieved, using RAFT, etc.Submarine services deployment module: How to deploy submarine services to k8s or cloud.","keywords":""},{"title":"Notebook Implementation","type":0,"sectionRef":"#","url":"docs/next/designDocs/notebook-implementation","content":"","keywords":""},{"title":"Overview","type":1,"pageTitle":"Notebook Implementation","url":"docs/next/designDocs/notebook-implementation#overview","content":""},{"title":"User's interaction","type":1,"pageTitle":"Notebook Implementation","url":"docs/next/designDocs/notebook-implementation#users-interaction","content":"Users can start N (N >= 0) number of Notebook sessions, a notebook session is a running notebook instance. Notebook session can be launched by Submarine UI (P0), and Submarine CLI (P2). When launch notebook session, users can choose T-shirt size of notebook session (how much mem/cpu/gpu resources, or resource profile such as small, medium, large, etc.). (P0)And user can choose an environment for notebook. More details please refer to environment implementation (P0)When start a notebook, user can choose what code to be initialized, similar to experiment. (P1)Optionally, users can choose to attach a persistent volume to a notebook session. (P2) Users can get a list of notebook sessions belongs to themselves, and connect to notebook session. User can choose to terminate a running notebook session. "},{"title":"Admin's interaction","type":1,"pageTitle":"Notebook Implementation","url":"docs/next/designDocs/notebook-implementation#admins-interaction","content":"How many concurrent notebook sessions can be launched by each user is determined by resource quota limits of each user, and maximum concurrent notebook sessions can be launched by each user. (P2) "},{"title":"Relationship with other components","type":1,"pageTitle":"Notebook Implementation","url":"docs/next/designDocs/notebook-implementation#relationship-with-other-components","content":""},{"title":"Metadata store","type":1,"pageTitle":"Notebook Implementation","url":"docs/next/designDocs/notebook-implementation#metadata-store","content":"Running notebook sessions' metadata need persistented in Submarine's metadata store (Database). "},{"title":"Submarine Server","type":1,"pageTitle":"Notebook Implementation","url":"docs/next/designDocs/notebook-implementation#submarine-server","content":" +--------------+ +--------Submarine Server--------------------+ |Submarine UI | | +-------------------+ | | |+---> Submarine | | | Notebook | | | Notebook REST API| | +--------------+ | | | | | +--------+----------+ +--------------+ | | | +->|Metastore | | | +--------v----------+ | |DB | | | | Submarine +--+ +--------------+ | | | Notebook Mgr | | | | | | | | | | | +--------+----------+ | | | | +----------|---------------------------------+ | +--------------+ +--------v---------+ | Notebook Session | | | | instance | | | +------------------+ Copy Once user use Submarine UI to launch a notebook session, Submarine notebook manager inside Submarine Server will persistent notebook session's metadata, and launch a new notebook session instance. "},{"title":"Resource manager","type":1,"pageTitle":"Notebook Implementation","url":"docs/next/designDocs/notebook-implementation#resource-manager","content":"When using K8s as resource manager, Submarine notebook session will run as a new POD. "},{"title":"Storage","type":1,"pageTitle":"Notebook Implementation","url":"docs/next/designDocs/notebook-implementation#storage","content":"There're several different types of storage requirements for Submarine notebook. For code, environment, etc, storage, please refer to storage implementation, check \"Localization of experiment/notebook/model-serving code\". When there're needs to attach volume (such as user's home folder) to Submarine notebook session, please check storage implementation, check \"Attachable volume\". "},{"title":"Environment","type":1,"pageTitle":"Notebook Implementation","url":"docs/next/designDocs/notebook-implementation#environment","content":"Submarine notebook's environment should be used to run experiment, model serving, etc. Please check environment implementation. (More specific to notebook, please check \"How to implement to make user can easily use Submarine environments\") Please note that notebook's Environment should include right version of notebook libraries, and admin should follow the guidance to build correct Docker image, Conda libraries to correctly run Notebook. "},{"title":"Submarine SDK (For Experiment, etc.)","type":1,"pageTitle":"Notebook Implementation","url":"docs/next/designDocs/notebook-implementation#submarine-sdk-for-experiment-etc","content":"Users can run new experiment, access metrics information, or do model operations using Submarine SDK. Submarine SDK is a Python library which can talk to Submarine Server which need Submarine Server's endpoint as well as user credentials. To ensure better experience, we recommend always install proper version of Submarine SDK from environment which users can use Submarine SDK directly from commandline. (We as Submarine community can provide sample Dockerfile or Conda environment which have correct base libraries installed for Submarine SDK). Submarine Server IP will be configured automatically by Submarine Server, and added as an envar when Submarine notebook session got launched. "},{"title":"Security","type":1,"pageTitle":"Notebook Implementation","url":"docs/next/designDocs/notebook-implementation#security","content":"Please refer to Security Implementation Once user accessed to a running notebook session, the user can also access resources of the notebook, capability of submit new experiment, and access data. This is also very dangerous so we have to protect it. A simple solution is to use token-based authentication https://jupyter-notebook.readthedocs.io/en/stable/security.html. A more common way is to use solutions like KNOX to support SSO. We need expand this section to more details. (TODO). "},{"title":"Storage Implementation","type":0,"sectionRef":"#","url":"docs/next/designDocs/storage-implementation","content":"","keywords":""},{"title":"ML-related objects and their storages","type":1,"pageTitle":"Storage Implementation","url":"docs/next/designDocs/storage-implementation#ml-related-objects-and-their-storages","content":"First let's look at what user will interact for most of the time: Notebook ExperimentModel Servings  +---------+ +------------+ |Logs |<--+|Notebook | +----------+ +---------+ +------------+ +----------------+ |Trackings | <-+|Experiment |<--+>|Model Artifacts | +----------+ +-----------------+ +------------+ +----------------+ +----------+<---+|ML-related Metric|<--+Servings | |tf.events | +-----------------+ +------------+ +----------+ ^ +-----------------+ + | Environments | +----------------------+ | | +-----------------+ | Submarine Metastore | | Dependencies | |Code | +----------------------+ | | +-----------------+ |Experiment Meta | | Docker Images | +----------------------+ +-----------------+ |Model Store Meta | +----------------------+ |Model Serving Meta | +----------------------+ |Notebook meta | +----------------------+ |Experiment Templates | +----------------------+ |Environments Meta | +----------------------+ Copy First of all, all the notebook-sessions / experiments / model-serving instances) are more or less interact with following storage objects: Logs for these tasks for troubleshooting. ML-related metrics such as loss, epoch, etc. (in contrast of system metrics such as CPU/memory usage, etc.) There're different types of ML-related metrics, for Tensorflow/pytorch, they can use tf.events and get visualizations on tensorboard. Or they can use tracking APIs (such as Submarine tracking, mlflow tracking, etc.) to output customized tracking results for non TF/Pytorch workloads. Training jobs of experiment typically generate model artifacts (files) which need persisted, and both of notebook, model serving needs to load model artifacts from persistent storage. There're various of meta information, such as experiment meta, model registry, model serving, notebook, experiment, environment, etc. We need be able to read these meta information back.We also have code for experiment (like training/batch-prediction), notebook (ipynb), and model servings.And notebook/experiments/model-serving need depend on environments (dependencies such as pip, and Docker Images). "},{"title":"Implementation considerations for ML-related objects","type":1,"pageTitle":"Storage Implementation","url":"docs/next/designDocs/storage-implementation#implementation-considerations-for-ml-related-objects","content":"Object Type\tCharacteristics\tWhere to storeMetrics: tf.events\tTime series data with k/v, appendable to file\tLocal/EBS, HDFS, Cloud Blob Storage Metrics: other tracking metrics\tTime series data with k/v, appendable to file\tLocal, HDFS, Cloud Blob Storage, Database Logs\tLarge volumes, #files are potentially huge.\tLocal (temporary), HDFS (need aggregation), Cloud Blob Storage Submarine Metastore\tCRUD operations for small meta data.\tDatabase Model Artifacts\tSize varies for model (from KBs to GBs). #files are potentially huge.\tHDFS, Cloud Blob Storage Code\tNeed version control. (Please find detailed discussions below for code storage and localization)\tTarball on HDFS/Cloud Blog Storage, or Git Environment (Dependencies, Docker Image) Public/private environment repo (like Conda channel), Docker registry. "},{"title":"Detailed discussions","type":1,"pageTitle":"Storage Implementation","url":"docs/next/designDocs/storage-implementation#detailed-discussions","content":"Store code for experiment/notebook/model-serving# There're following ways to get experiment code: 1) Code is part of Git repo: (Recommended) This is our recommended approach, once code is part of Git, it will be stored in version control, any change will be tracked, and much easier for users to trace back what change triggered a new bug, etc. 2) Code is part of Docker image: This is an anti-pattern and we will NOT recommend you to use it, Docker image can be used to include ANYTHING, like dependencies, the code you will execute, or even data. But this doesn't mean you should do it. We recommend to use Docker image ONLY for libraries/dependencies. Making code to be part of Docker image makes hard to edit code (if you want to update a value in your Python file, you will have to recreate the Docker image, push it and rerun it). 3) Code is part of S3/HDFS/ABFS: User may want to store their training code to a tarball on a shared storage. Submarine need to download code from remote storage to the launched container before running the code. Localization of experiment/notebook/model-serving code# To make user experiences keeps same across different environment, we will localize code to a same folder after the container is launched, preferably /code For example, there's a git repo need to be synced up for an experiment/notebook/model-serving (example above): experiment: #Or notebook, model-serving name: \"abc\", environment: \"team-default-ml-env\" ... (other fields) code: sync_mode: git url: \"https://foo.com/training-job.git\" Copy After localize, training-job/ will be placed under /code When we running on K8s environment, we can use K8s's initContainer and emptyDir to do these things for us. K8s POD spec (generated by Submarine server instead of user, user should NEVER edit K8s spec, that's too unfriendly to data-scientists): apiVersion: v1 kind: Pod metadata: name: experiment-abc spec: containers: - name: experiment-task image: training-job volumeMounts: - name: code-dir mountPath: /code initContainers: - name: git-localize image: git-sync command: \"git clone .. /code/\" volumeMounts: - name: code-dir mountPath: /code volumes: - name: code-dir emptyDir: {} Copy The above K8s spec create a code-dir and mount it to /code to launched containers. The initContainer git-localize uses https://github.com/kubernetes/git-sync to do the sync up. (If other storages are used such as s3, we can use similar initContainer approach to download contents) "},{"title":"System-related metrics/logs and their storages","type":1,"pageTitle":"Storage Implementation","url":"docs/next/designDocs/storage-implementation#system-related-metricslogs-and-their-storages","content":"Other than ML-related objects, we have system-related objects, including: Daemon logs (like logs of Submarine server). Logs for other dependency components (like Kubernetes logs when running on K8s). System metrics (Physical resource usages by daemons, launched training containers, etc.).  All these information should be handled by 3rd party system, such as Grafana, Prometheus, etc. And system admins are responsible to setup these infrastructures, dashboard. Users of submarine should NOT interact with system related metrics/logs. It is system admin's responsibility. "},{"title":"Attachable Volumes","type":1,"pageTitle":"Storage Implementation","url":"docs/next/designDocs/storage-implementation#attachable-volumes","content":"It is possible user has needs to have an attachable volume for their experiment / notebook, this is especially useful for notebook storage, since contents of notebook can be automatically saved, and it can be used as user's home folder. Downside of attachable volume is, it is not versioned, even notebook is mainly used for adhoc exploring tasks, an unversioned notebook file can lead to maintenance issues in the future. Since this is a common requirement, we can consider to support attachable volumes in Submarine in a long run, but with relatively lower priority. "},{"title":"In-scope / Out-of-scope","type":1,"pageTitle":"Storage Implementation","url":"docs/next/designDocs/storage-implementation#in-scope--out-of-scope","content":"Describe what Submarine project should own and what Submarine project should NOT own. "},{"title":"Generic Experiment Spec","type":0,"sectionRef":"#","url":"docs/next/designDocs/submarine-server/experimentSpec","content":"","keywords":""},{"title":"Motivation","type":1,"pageTitle":"Generic Experiment Spec","url":"docs/next/designDocs/submarine-server/experimentSpec#motivation","content":"As the machine learning platform, the submarine should support multiple machine learning frameworks, such as Tensorflow, Pytorch etc. But different framework has different distributed components for the training experiment. So that we designed a generic experiment spec to abstract the training experiment across different frameworks. In this way, the submarine-server can hide the complexity of underlying infrastructure differences and provide a cleaner interface to manager experiments "},{"title":"Proposal","type":1,"pageTitle":"Generic Experiment Spec","url":"docs/next/designDocs/submarine-server/experimentSpec#proposal","content":"Considering the Tensorflow and Pytorch framework, we propose one spec which consists of library spec, submitter spec and task specs etc. Such as: name: \"mnist\" librarySpec: name: \"TensorFlow\" version: \"2.1.0\" image: \"apache/submarine:tf-mnist-with-summaries-1.0\" cmd: \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\" envVars: ENV_1: \"ENV1\" submitterSpec: type: \"k8s\" namespace: \"submarine\" taskSpecs: Ps: name: tensorflow replicas: 2 resources: \"cpu=4,memory=2048M,nvidia.com/gpu=1\" Worker: name: tensorflow replicas: 2 resources: \"cpu=4,memory=2048M,nvidia.com/gpu=1\" Copy "},{"title":"Library Spec","type":1,"pageTitle":"Generic Experiment Spec","url":"docs/next/designDocs/submarine-server/experimentSpec#library-spec","content":"The library spec describes the info about machine learning framework. All the fields as below: field\ttype\toptional\tdescriptionname\tstring\tNO\tMachine Learning Framework name. Only \"tensorflow\" and \"pytorch\" is supported. It doesn't matter if the value is uppercase or lowercase. version\tstring\tNO\tThe version of ML framework. Such as: 2.1.0 image\tstring\tNO\tThe public image used for each task if not specified. Such as: apache/submarine cmd\tstring\tYES\tThe public entry cmd for the task if not specified. envVars\tkey/value\tYES\tThe public env vars for the task if not specified. "},{"title":"Submitter Spec","type":1,"pageTitle":"Generic Experiment Spec","url":"docs/next/designDocs/submarine-server/experimentSpec#submitter-spec","content":"It describes the info of submitter which the user specified, such as k8s. All the fields as below: field\ttype\toptional\tdescriptiontype\tstring\tNO\tThe submitter type, supports k8s now configPath\tstring\tYES\tThe config path of the specified resource manager. You can set it in submarine-site.xml if run submarine-server locally namespace\tstring\tNO\tIt's known as namespace in Kubernetes. kind\tstring\tYES\tIt's used for k8s submitter, supports TFJob and PyTorchJob apiVersion\tstring\tYES\tIt should pair with the kind, such as the TFJob's api version is kubeflow.org/v1 "},{"title":"Task Spec","type":1,"pageTitle":"Generic Experiment Spec","url":"docs/next/designDocs/submarine-server/experimentSpec#task-spec","content":"It describes the task info, the tasks make up the experiment. So it must be specified when submit the experiment. All the tasks should putted into the key value collection. Such as: taskSpecs: Ps: name: tensorflow replicas: 2 resources: \"cpu=4,memory=2048M,nvidia.com/gpu=1\" Worker: name: tensorflow replicas: 2 resources: \"cpu=4,memory=2048M,nvidia.com/gpu=1\" Copy All the fields as below: field\ttype\toptional\tdescriptionname\tstring\tYES\tThe experiment name, if not specify using the library name image\tstring\tYES\tThe experiment docker image cmd\tstring\tYES\tThe entry command for running task envVars\tkey/value\tYES\tThe environment variables for the task resources\tstring\tNO\tThe limit resource for the task. Formatter: cpu=%s,memory=%s,nvidia.com/gpu=%s "},{"title":"Implements","type":1,"pageTitle":"Generic Experiment Spec","url":"docs/next/designDocs/submarine-server/experimentSpec#implements","content":"For more info see SUBMARINE-321 "},{"title":"Submarine Server Implementation","type":0,"sectionRef":"#","url":"docs/next/designDocs/submarine-server/architecture","content":"","keywords":""},{"title":"Architecture Overview","type":1,"pageTitle":"Submarine Server Implementation","url":"docs/next/designDocs/submarine-server/architecture#architecture-overview","content":" +---------------Submarine Server ---+ | | | +------------+ +------------+ | | |Web Svc/Prxy| |Backend Svc | | +--Submarine Asset + | +------------+ +------------+ | |Project/Notebook | | ^ ^ | |Model/Metrics | +---|---------|---------------------+ |Libraries/Dataset | | | +------------------+ | | | +--|-Compute Cluster 1---+ +--Image Registry--+ + | | | | User's Images | User / | + | | | Admin | User Notebook Instance | +------------------+ | Experiment Runs | +------------------------+ +-Data Storage-----+ | S3/HDFS, etc. | +----Compute Cluster 2---+ | | +------------------+ ... Copy Here's a diagram to illustrate the Submarine's deployment. Submarine Server consists of web service/proxy, and backend services. They're like \"control planes\" of Submarine, and users will interact with these services.Submarine server could be a microservice architecture and can be deployed to one of the compute clusters. (see below, this will be useful when we only have one cluster).There're multiple compute clusters that could be used by Submarine service. For user's running notebook instance, jobs, etc. they will be placed to one of the compute clusters by user's preference or defined policies.Submarine's asset includes project/notebook(content)/models/metrics/dataset-meta, etc. can be stored inside Submarine's own database.Datasets can be stored in various locations such as S3/HDFS.Users can push container (such as Docker) images to a preconfigured registry in Submarine, so Submarine service can know how to pull required container images.Image Registry/Data-Storage, etc. are outside of Submarine server's scope and should be managed by 3rd party applications. "},{"title":"Submarine Server and its APIs","type":1,"pageTitle":"Submarine Server Implementation","url":"docs/next/designDocs/submarine-server/architecture#submarine-server-and-its-apis","content":"Submarine server is designed to allow data scientists to access notebooks, submit/manage jobs, manage models, create model training workflows, access datasets, etc. Submarine Server exposed UI and REST API. Users can also use CLI / SDK to manage assets inside Submarine Server.  +----------+ | CLI |+---+ +----------+ v +----------------+ +--------------+ | Submarine | +----------+ | REST API | | | | SDK |+>| |+> Server | +----------+ +--------------+ | | ^ +----------------+ +----------+ | | UI |+---+ +----------+ Copy REST API will be used by the other 3 approaches. (CLI/SDK/UI) The REST API Service handles HTTP requests and is responsible for authentication. It acts as the caller for the JobManager component. The REST component defines the generic job spec which describes the detailed info about job. For more details, refer to here. (Please note that we're converting REST endpoint description from Java-based REST API to swagger definition, once that is done, we should replace the link with swagger definition spec). "},{"title":"Proposal","type":1,"pageTitle":"Submarine Server Implementation","url":"docs/next/designDocs/submarine-server/architecture#proposal","content":"+-----------+ | | | workbench +---+ +----------------------------------+ | | | | +------+ +---------------------+ | +-----------+ | | | | | +-------+ | | +---------------------+ | | | | | | K8s | | | | +--------+ +----+ | +-----------+ | | | | | +-------+ | | | | +-->+job1| | | | | | | | | submitter | | | | | +----+ | | CLI +------>+ | REST | +---------------------+ +---->+ |operator| +----+ | | | | | | | +---------------------+ | | | +-->+job2| | +-----------+ | | | | | +-------+ +-------+ | | | +--------+ +----+ | | | | | | |PlugMgr| |monitor| | | | K8s Cluster | +-----------+ | | | | | +-------+ +-------+ | | +---------------------+ | | | | | | | JobManager | | | SDK +---+ | +------+ +---------------------+ | | | +----------------------------------+ +-----------+ client server Copy We propose to split the original core module in the old layout into two modules, CLI and server as shown in FIG. The submarine-client calls the REST APIs to submit and retrieve the job info. The submarine-server provides the REST service, job management, submitting the job to cluster, and running job in different clusters through the corresponding runtime. "},{"title":"Submarine Server Components","type":1,"pageTitle":"Submarine Server Implementation","url":"docs/next/designDocs/submarine-server/architecture#submarine-server-components","content":" +----------------------Submarine Server--------------------------------+ | +-----------------+ +------------------+ +--------------------+ | | | Experiment | |Notebook Session | |Environment Mgr | | | | Mgr | |Mgr | | | | | +-----------------+ +------------------+ +--------------------+ | | | | +-----------------+ +------------------+ +--------------------+ | | | Model Registry | |Model Serving Mgr | |Compute Cluster Mgr | | | | | | | | | | | +-----------------+ +------------------+ +--------------------+ | | | | +-----------------+ +------------------+ +--------------------+ | | | DataSet Mgr | |User/Team | |Metadata Mgr | | | | | |Permission Mgr | | | | | +-----------------+ +------------------+ +--------------------+ | +----------------------------------------------------------------------+ Copy "},{"title":"Experiment Manager","type":1,"pageTitle":"Submarine Server Implementation","url":"docs/next/designDocs/submarine-server/architecture#experiment-manager","content":"TODO "},{"title":"Notebook Sessions Manager","type":1,"pageTitle":"Submarine Server Implementation","url":"docs/next/designDocs/submarine-server/architecture#notebook-sessions-manager","content":"TODO "},{"title":"Environment Manager","type":1,"pageTitle":"Submarine Server Implementation","url":"docs/next/designDocs/submarine-server/architecture#environment-manager","content":"TODO "},{"title":"Model Registry","type":1,"pageTitle":"Submarine Server Implementation","url":"docs/next/designDocs/submarine-server/architecture#model-registry","content":"TODO "},{"title":"Model Serving Manager","type":1,"pageTitle":"Submarine Server Implementation","url":"docs/next/designDocs/submarine-server/architecture#model-serving-manager","content":"TODO "},{"title":"Compute Cluster Manager","type":1,"pageTitle":"Submarine Server Implementation","url":"docs/next/designDocs/submarine-server/architecture#compute-cluster-manager","content":"TODO "},{"title":"Dataset Manager","type":1,"pageTitle":"Submarine Server Implementation","url":"docs/next/designDocs/submarine-server/architecture#dataset-manager","content":"TODO "},{"title":"User/team permissions manager","type":1,"pageTitle":"Submarine Server Implementation","url":"docs/next/designDocs/submarine-server/architecture#userteam-permissions-manager","content":"TODO "},{"title":"Metadata Manager","type":1,"pageTitle":"Submarine Server Implementation","url":"docs/next/designDocs/submarine-server/architecture#metadata-manager","content":"TODO "},{"title":"Components/services outside of Submarine Server's scope","type":1,"pageTitle":"Submarine Server Implementation","url":"docs/next/designDocs/submarine-server/architecture#componentsservices-outside-of-submarine-servers-scope","content":"TODO: Describe what are the out-of-scope components, which should be handled and managed outside of Submarine server. Candidates are: Identity management, data storage, metastore storage, etc. "},{"title":"Security Implementation","type":0,"sectionRef":"#","url":"docs/next/designDocs/wip-designs/security-implementation","content":"","keywords":""},{"title":"Handle User's Credential","type":1,"pageTitle":"Security Implementation","url":"docs/next/designDocs/wip-designs/security-implementation#handle-users-credential","content":"Users credential includes Kerberoes Keytabs, Docker registry credentials, Github ssh-keys, etc. User's credential must be stored securitely, for example, via KeyCloak or K8s Secrets. (More details TODO) "},{"title":"Submarine Launcher","type":0,"sectionRef":"#","url":"docs/next/designDocs/wip-designs/submarine-launcher","content":"","keywords":""},{"title":"Introduction","type":1,"pageTitle":"Submarine Launcher","url":"docs/next/designDocs/wip-designs/submarine-launcher#introduction","content":"Submarine is built and run in Cloud Native, taking advantage of the cloud computing model. To give full play to the advantages of cloud computing. These applications are characterized by rapid and frequent build, release, and deployment. Combined with the features of cloud computing, they are decoupled from the underlying hardware and operating system, and can easily meet the requirements of scalability, availability, and portability. And provide better economy. In the enterprise data center, submarine can support k8s/docker three resource scheduling systems; in the public cloud environment, submarine can support these cloud services in GCE/AWS/Azure; "},{"title":"Requirement","type":1,"pageTitle":"Submarine Launcher","url":"docs/next/designDocs/wip-designs/submarine-launcher#requirement","content":""},{"title":"Cloud-Native Service","type":1,"pageTitle":"Submarine Launcher","url":"docs/next/designDocs/wip-designs/submarine-launcher#cloud-native-service","content":"The submarine server is a long-running services in the daemon mode. The submarine server is mainly used by algorithm engineers to provide online front-end functions such as algorithm development, algorithm debugging, data processing, and workflow scheduling. And submarine server also mainly used for back-end functions such as scheduling and execution of jobs, tracking of job status, and so on. Through the ability of rolling upgrades, we can better provide system stability. For example, we can upgrade or restart the workbench server without affecting the normal operation of submitted jobs. You can also make full use of system resources. For example, when the number of current developers or job tasks increases, The number of submarine server instances can be adjusted dynamically. In addition, submarine will provide each user with a completely independent workspace container. This workspace container has already deployed the development tools and library files commonly used by algorithm engineers including their operating environment. Algorithm engineers can work in our prepared workspaces without any extra work. Each user's workspace can also be run through a cloud service. "},{"title":"Service discovery","type":1,"pageTitle":"Submarine Launcher","url":"docs/next/designDocs/wip-designs/submarine-launcher#service-discovery","content":"With the cluster function of submarine, each service only needs to run in the container, and it will automatically register the service in the submarine cluster center. Submarine cluster management will automatically maintain the relationship between service and service, service and user. "},{"title":"Design","type":1,"pageTitle":"Submarine Launcher","url":"docs/next/designDocs/wip-designs/submarine-launcher#design","content":" "},{"title":"Launcher","type":1,"pageTitle":"Submarine Launcher","url":"docs/next/designDocs/wip-designs/submarine-launcher#launcher","content":"The submarine launcher module defines the complete interface. By using this interface, you can run the submarine server, and workspace in k8s / docker / AWS / GCE / Azure. "},{"title":"Launcher On Docker","type":1,"pageTitle":"Submarine Launcher","url":"docs/next/designDocs/wip-designs/submarine-launcher#launcher-on-docker","content":"In order to allow some small and medium-sized users without k8s to use submarine, we support running the submarine system in docker mode. Users only need to provide several servers with docker runtime environment. The submarine system can automatically cluster these servers into clusters, manage all the hardware resources of the cluster, and run the service or workspace container in this cluster through scheduling algorithms. "},{"title":"Launcher On Kubernetes","type":1,"pageTitle":"Submarine Launcher","url":"docs/next/designDocs/wip-designs/submarine-launcher#launcher-on-kubernetes","content":"submarine operator "},{"title":"Launcher On AWS","type":1,"pageTitle":"Submarine Launcher","url":"docs/next/designDocs/wip-designs/submarine-launcher#launcher-on-aws","content":"[TODO] "},{"title":"Launcher On GCP","type":1,"pageTitle":"Submarine Launcher","url":"docs/next/designDocs/wip-designs/submarine-launcher#launcher-on-gcp","content":"[TODO] "},{"title":"Launcher On Azure","type":1,"pageTitle":"Submarine Launcher","url":"docs/next/designDocs/wip-designs/submarine-launcher#launcher-on-azure","content":"[TODO] "},{"title":"Cluster Server Design - High-Availability","type":0,"sectionRef":"#","url":"docs/next/designDocs/wip-designs/submarine-clusterServer","content":"","keywords":""},{"title":"Below is existing proposal:","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/next/designDocs/wip-designs/submarine-clusterServer#below-is-existing-proposal","content":""},{"title":"Introduction","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/next/designDocs/wip-designs/submarine-clusterServer#introduction","content":"The Submarine system contains a total of two daemon services, Submarine Server and Workbench Server. Submarine Server mainly provides job submission, job scheduling, job status monitoring, and model online service for Submarine. Workbench Server is mainly for algorithm users to provide algorithm development, Python/Spark interpreter operation, and other services through Notebook. The goal of the Submarine project is to provide high availability and high-reliability services for big data processing, algorithm development, job scheduling, model online services, model batch, and incremental updates. In addition to the high availability of big data and machine learning frameworks, the high availability of Submarine Server and Workbench Server itself is a key consideration. "},{"title":"Requirement","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/next/designDocs/wip-designs/submarine-clusterServer#requirement","content":""},{"title":"Cluster Metadata Center","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/next/designDocs/wip-designs/submarine-clusterServer#cluster-metadata-center","content":"Multiple Submarine (or Workbench) Server processes create a Submarine Cluster through the RAFT algorithm library. The cluster internally maintains a metadata center. All servers can operate the metadata. The RAFT algorithm ensures that multiple processes are simultaneously co-located. A data modification will not cause problems such as mutual coverage and dirty data. This metadata center stores data by means of key-value pairs. it can store/support a variety of data, but it should be noted that metadata is only suitable for storing small amounts of data and cannot be used to replace data storage. "},{"title":"Service discovery","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/next/designDocs/wip-designs/submarine-clusterServer#service-discovery","content":"By storing the information of the service or process in the metadata center, we can easily find the information of the service or process we need in any place, for example, the IP address and port where the Python interpreter will be the process. Information is stored in metadata, and other services can easily find process information through process IDs and connect to provide service discovery capabilities. "},{"title":"Cluster event","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/next/designDocs/wip-designs/submarine-clusterServer#cluster-event","content":"In the entire Submarine cluster, the servers can communicate with each other and other child processes to send cluster events to each other. The service or process processes the corresponding programs according to the cluster events. For example, the Workbench Server can be managed to Python. The interpreter process sends a shutdown event that controls the operation of the services and individual subprocesses throughout the cluster. Cluster events support both broadcast and separate delivery capabilities. "},{"title":"Independence","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/next/designDocs/wip-designs/submarine-clusterServer#independence","content":"We implement Submarine's clustering capabilities through the RAFT algorithm library, without relying on any external services (e.g. Zookeeper, Etcd, etc.) "},{"title":"Disadvantages","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/next/designDocs/wip-designs/submarine-clusterServer#disadvantages","content":"Because the RAFT algorithm requires more than half of the servers available to ensure the normality of the RAFT algorithm, if we need to turn on the clustering capabilities of Submarine (Workbench) Server, when more than half of the servers are unavailable, some programs may appear abnormal. Of course, we also detected this in the system, downgrading the system or refusing to provide service status. "},{"title":"System design","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/next/designDocs/wip-designs/submarine-clusterServer#system-design","content":""},{"title":"Universal design","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/next/designDocs/wip-designs/submarine-clusterServer#universal-design","content":"Modular design, Submarine (Workbench) Server exists in the Submarine system, these two services need to provide clustering capabilities, so we abstract the cluster function into a separate module for development so that Submarine (Workbench) Server can reuse the cluster function module. "},{"title":"ClusterConfigure","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/next/designDocs/wip-designs/submarine-clusterServer#clusterconfigure","content":"Add a submarine.server.addr and workbench.server.addr configuration items in submarine-site.xml, submarine.server.addr=ip1, ip2, ip3, through the IP list, the RAFT algorithm module in the server process can Cluster with other server processes. "},{"title":"ClusterServer","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/next/designDocs/wip-designs/submarine-clusterServer#clusterserver","content":"The ClusterServer module encapsulates the RAFT algorithm module, which can create a service cluster and read and write metadata based on the two configuration items submarine.server.addr or workbench.server.addr. The cluster management service runs in each submarine server; The cluster management service establishes a cluster by using the atomix RaftServer class of the Raft algorithm library, maintains the ClusterStateMachine, and manages the service state metadata of each submarine server through the PutCommand, GetQuery, and DeleteCommand operation commands. "},{"title":"ClusterClient","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/next/designDocs/wip-designs/submarine-clusterServer#clusterclient","content":"The ClusterClient module encapsulates the RAFT algorithm client module, which can communicate with the cluster according to the two configuration items submarine.server.addr or workbench.server.addr, read and write metadata, and write the IP and port information of the client process. Into the cluster's metadata center. The cluster management client runs in each submarine server and submarine Interpreter process; The cluster management client manages the submarine server and submarine Interpreter process state (metadata information) in the ClusterStateMachine by using the atomix RaftClient class of the Raft library to connect to the atomix RaftServer. When the submarine server and Submarine Interpreter processes are started, they are added to the ClusterStateMachine and are removed from the ClusterStateMachine when the Submarine Server and Submarine Interpreter processes are closed. "},{"title":"ClusterMetadata","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/next/designDocs/wip-designs/submarine-clusterServer#clustermetadata","content":"Metadata stores metadata information in a KV key-value pair。 ServerMeta:key='host:port',value= {SERVER_HOST=...,SERVER_PORT=...,...} Name\tDescriptionSUBMARINE_SERVER_HOST\tSubmarine server IP SUBMARINE_SERVER_PORT\tSubmarine server port WORKBENCH_SERVER_HOST\tSubmarine workbench server IP WORKBENCH_SERVER_PORT\tSubmarine workbench server port InterpreterMeta:key=InterpreterGroupId,value={INTP_TSERVER_HOST=...,...} Name\tDescriptionINTP_TSERVER_HOST\tSubmarine Interpreter Thrift IP INTP_TSERVER_PORT\tSubmarine Interpreter Thrift port INTP_START_TIME\tSubmarine Interpreter start time HEARTBEAT\tSubmarine Interpreter heartbeat time "},{"title":"Network fault tolerance","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/next/designDocs/wip-designs/submarine-clusterServer#network-fault-tolerance","content":"In a distributed environment, there may be network anomalies, network delays, or service exceptions. After submitting metadata to the cluster, check whether the submission is successful. After the submission fails, save the metadata in the local message queue. A separate commit thread to retry; "},{"title":"Cluster monitoring","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/next/designDocs/wip-designs/submarine-clusterServer#cluster-monitoring","content":"The cluster needs to monitor whether the Submarine Server and Submarine-Interpreter processes are working properly. The Submarine Server and Submarine Interpreter processes periodically send heartbeats to update their own timestamps in the cluster metadata. The Submarine Server with Leader identity periodically checks the timestamps of the Submarine Server and Submarine Interpreter processes to clear the timeout services and processes. The cluster monitoring module runs in each Submarine Server and Submarine Interpreter process, periodically sending heartbeat data of the service or process to the cluster; When the cluster monitoring module runs in Submarine Server, it sends the heartbeat to the cluster's ClusterStateMachine. If the cluster does not receive heartbeat information for a long time, Indicates that the service or process is abnormal and unavailable. Resource usage statistics strategy, in order to avoid the instantaneous high peak and low peak of the server, the cluster monitoring will collect the average resource usage in the most recent period for reporting, and improve the reasonable line and effectiveness of the server resources as much as possible; When the cluster monitoring module runs in the Submarine Server, it checks the heartbeat data of each Submarine Server and Submarine Interpreter process. If it times out, it considers that the service or process is abnormally unavailable and removes it from the cluster. "},{"title":"Atomix Raft algorithm library","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/next/designDocs/wip-designs/submarine-clusterServer#atomix-raft-algorithm-library","content":"In order to reduce the deployment complexity of distributed mode, submarine server does not use Zookeeper to build a distributed cluster. Multiple submarine server groups are built into distributed clusters by using the Raft algorithm in submarine server. The Raft algorithm is involved by atomix lib of atomix that has passed Jepsen consistency verification. "},{"title":"Synchronize workbench notes","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/next/designDocs/wip-designs/submarine-clusterServer#synchronize-workbench-notes","content":"In cluster mode, the user creates, modifies, and deletes the note on any of the servers. All need to be notified to all the servers in the cluster to synchronize the update of Notebook. Failure to do so will result in the user not being able to continue while switching to another server. "},{"title":"Listen for note update events","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/next/designDocs/wip-designs/submarine-clusterServer#listen-for-note-update-events","content":"Listen for the NEW_NOTE, DEL_NOTE, REMOVE_NOTE_TO_TRASH ... event of the notebook in the NotebookServer#onMessage() function. "},{"title":"Broadcast note update event","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/next/designDocs/wip-designs/submarine-clusterServer#broadcast-note-update-event","content":"The note is refreshed by notifying the event to all Submarine servers in the cluster via messaging Service. "},{"title":"How to Build Submarine","type":0,"sectionRef":"#","url":"docs/next/devDocs/BuildFromCode","content":"","keywords":""},{"title":"Prerequisites","type":1,"pageTitle":"How to Build Submarine","url":"docs/next/devDocs/BuildFromCode#prerequisites","content":"JDK 1.8Maven 3.3 or later ( < 3.8.1 )Docker "},{"title":"Quick Start","type":1,"pageTitle":"How to Build Submarine","url":"docs/next/devDocs/BuildFromCode#quick-start","content":""},{"title":"Build Your Custom Submarine Docker Images","type":1,"pageTitle":"How to Build Submarine","url":"docs/next/devDocs/BuildFromCode#build-your-custom-submarine-docker-images","content":"Submarine provides default Docker image in the release artifacts, sometimes you would like to do some modifications on the images. You can rebuild Docker image after you make changes. Note that you need to make sure the images built above can be accessed in k8s Usually this needs to rename and push to a proper Docker registry. mvn clean package -DskipTests Copy Build submarine server image: ./dev-support/docker-images/submarine/build.sh Copy Build submarine database image: ./dev-support/docker-images/database/build.sh Copy "},{"title":"Checking releases for licenses","type":1,"pageTitle":"How to Build Submarine","url":"docs/next/devDocs/BuildFromCode#checking-releases-for-licenses","content":"mvn clean org.apache.rat:apache-rat-plugin:check Copy "},{"title":"Building source code / binary distribution with Maven Wrapper","type":1,"pageTitle":"How to Build Submarine","url":"docs/next/devDocs/BuildFromCode#building-source-code--binary-distribution-with-maven-wrapper","content":"Maven Wrapper (Optional): Maven Wrapper can help you avoid dependencies problem about Maven version. # Setup Maven Wrapper (Maven 3.6.1) mvn -N io.takari:maven:0.7.7:wrapper -Dmaven=3.6.1 # Check Maven Wrapper ./mvnw -version # Replace 'mvn' with 'mvnw'. Example: ./mvnw clean package -DskipTests Copy "},{"title":"Dependencies for Submarine","type":0,"sectionRef":"#","url":"docs/next/devDocs/Dependencies","content":"","keywords":""},{"title":"Kubernetes","type":1,"pageTitle":"Dependencies for Submarine","url":"docs/next/devDocs/Dependencies#kubernetes","content":"Kubernetes Version\tSupport?1.14.x (or earlier)\tX 1.15.x - 1.21.x\t√ 1.22.x (or later)\tX "},{"title":"KinD","type":1,"pageTitle":"Dependencies for Submarine","url":"docs/next/devDocs/Dependencies#kind","content":"KinD Version\tSupport?0.5.x (or earlier)\tX 0.6.x\t√ 0.7.x\t√ 0.8.x\t√ 0.9.x\t√ 0.10.x\t√ 0.11.x\t√ "},{"title":"Java","type":1,"pageTitle":"Dependencies for Submarine","url":"docs/next/devDocs/Dependencies#java","content":"JDK Version\tSupport?8\t√ 11\tX 17\tX "},{"title":"Maven","type":1,"pageTitle":"Dependencies for Submarine","url":"docs/next/devDocs/Dependencies#maven","content":"3.3 or later ( < 3.8.1 ) "},{"title":"Docker","type":1,"pageTitle":"Dependencies for Submarine","url":"docs/next/devDocs/Dependencies#docker","content":"Latest "},{"title":"Helm","type":1,"pageTitle":"Dependencies for Submarine","url":"docs/next/devDocs/Dependencies#helm","content":"Version 3 "},{"title":"NodeJS","type":1,"pageTitle":"Dependencies for Submarine","url":"docs/next/devDocs/Dependencies#nodejs","content":"14 (or later) "},{"title":"Go","type":1,"pageTitle":"Dependencies for Submarine","url":"docs/next/devDocs/Dependencies#go","content":"Go Version\tSupport?1.15\tX 1.16\t√ 1.17 (or later)\tTo be verified "},{"title":"Python","type":1,"pageTitle":"Dependencies for Submarine","url":"docs/next/devDocs/Dependencies#python","content":"Python Version\tSupport?3.5 (or earlier)\tX 3.6, 3.7\t√ 3.8 (or later)\tTo be verified "},{"title":"Development Guide","type":0,"sectionRef":"#","url":"docs/next/devDocs/Development","content":"","keywords":""},{"title":"Video","type":1,"pageTitle":"Development Guide","url":"docs/next/devDocs/Development#video","content":"From this Video, you will know how to deal with the configuration of Submarine and be able to contribute to it via Github. "},{"title":"Develop server","type":1,"pageTitle":"Development Guide","url":"docs/next/devDocs/Development#develop-server","content":""},{"title":"Prerequisites","type":1,"pageTitle":"Development Guide","url":"docs/next/devDocs/Development#prerequisites","content":"JDK 1.8Maven 3.3 or later ( < 3.8.1 )Docker "},{"title":"Setting up checkstyle in IDE","type":1,"pageTitle":"Development Guide","url":"docs/next/devDocs/Development#setting-up-checkstyle-in-ide","content":"Checkstyle plugin may help to detect violations directly from the IDE. Install Checkstyle+IDEA plugin from Preference -> PluginsOpen Preference -> Tools -> Checkstyle Set Checkstyle version: Checkstyle version: 8.0 Add (+) a new Configuration File Description: SubmarineUse a local checkstyle ${SUBMARINE_HOME}/dev-support/maven-config/checkstyle.xml Open the Checkstyle Tool Window, select the Submarine rule and execute the check "},{"title":"Testing","type":1,"pageTitle":"Development Guide","url":"docs/next/devDocs/Development#testing","content":"Unit Test For each class, there is a corresponding testClass. For example, SubmarineServerTest is used for testing SubmarineServer. Whenever you add a funtion in classes, you must write a unit test to test it. Integration Test: IntegrationTestK8s.md "},{"title":"Build from source","type":1,"pageTitle":"Development Guide","url":"docs/next/devDocs/Development#build-from-source","content":"Before building We assume the developer use minikube as a local kubernetes cluster.Make sure you have installed the submarine helm-chart in the cluster. Package the Submarine server into a new jar file mvn install -DskipTests Copy Build the new server docker image in minikube # switch to minikube docker daemon to build image directly in minikube eval $(minikube docker-env) # run docker build ./dev-support/docker-images/submarine/build.sh # exit minikube docker daemon eval $(minikube docker-env -u) Copy Delete the server deployment and the operator will create a new one using the new image kubectl delete deployment submarine-server Copy "},{"title":"Develop workbench","type":1,"pageTitle":"Development Guide","url":"docs/next/devDocs/Development#develop-workbench","content":"Deploy the Submarine Follow Getting Started/Submarine Local Deployment, and make sure you can connect to http://localhost:32080 in the browser. Install the dependencies cd submarine-workbench/workbench-web npm install Copy Run the workbench based on proxy server npm run start Copy The request sent to http://localhost:4200 will be redirected to http://localhost:32080.Open http://localhost:4200 in browser to see the real-time change of workbench. Frontend E2E test: IntegrationTestE2E.md "},{"title":"Develop database","type":1,"pageTitle":"Development Guide","url":"docs/next/devDocs/Development#develop-database","content":"Build the docker image # switch to minikube docker daemon to build image directly in minikube eval $(minikube docker-env) # run docker build ./dev-support/docker-images/database/build.sh # exit minikube docker daemon eval $(minikube docker-env -u) Copy Deploy new pods in the cluster helm upgrade --set submarine.database.dev=true submarine ./helm-charts/submarine Copy "},{"title":"Develop operator","type":1,"pageTitle":"Development Guide","url":"docs/next/devDocs/Development#develop-operator","content":"For details, please check out the README and Developer Guide on GitHub. "},{"title":"Develop Submarine Website","type":1,"pageTitle":"Development Guide","url":"docs/next/devDocs/Development#develop-submarine-website","content":"Submarine website is built using Docusaurus 2, a modern static website generator. We store all the website content in markdown format in the submarine/website/docs. When committing a new patch to the submarine repo, Docusaurus will help us generate the html and javascript files and push them to https://github.com/apache/submarine-site/tree/asf-site. To update the website, click “Edit this page” on the website.  "},{"title":"Add a new page","type":1,"pageTitle":"Development Guide","url":"docs/next/devDocs/Development#add-a-new-page","content":"If you want to add a new page to the website, make sure to add the file path to sidebars.js. "},{"title":"Installation","type":1,"pageTitle":"Development Guide","url":"docs/next/devDocs/Development#installation","content":"We use the yarn package manager to install all dependencies for the website yarn install Copy "},{"title":"Build","type":1,"pageTitle":"Development Guide","url":"docs/next/devDocs/Development#build","content":"Make sure you can successfully build the website before creating a pull request. yarn build Copy "},{"title":"Local Development","type":1,"pageTitle":"Development Guide","url":"docs/next/devDocs/Development#local-development","content":"This command starts a local development server and open up a browser window. Most changes are reflected live without having to restart the server. yarn start Copy "},{"title":"How to Verify","type":0,"sectionRef":"#","url":"docs/next/devDocs/HowToVerify","content":"","keywords":""},{"title":"Verification of the release candidate","type":1,"pageTitle":"How to Verify","url":"docs/next/devDocs/HowToVerify#verification-of-the-release-candidate","content":""},{"title":"1. Download the candidate version to be released to the local environment","type":1,"pageTitle":"How to Verify","url":"docs/next/devDocs/HowToVerify#1-download-the-candidate-version-to-be-released-to-the-local-environment","content":"svn co https://dist.apache.org/repos/dist/dev/submarine/${release_version}-${rc_version}/ Copy "},{"title":"2. Verify whether the uploaded version is compliant","type":1,"pageTitle":"How to Verify","url":"docs/next/devDocs/HowToVerify#2-verify-whether-the-uploaded-version-is-compliant","content":"Begin the verification process, which includes but is not limited to the following content and forms. "},{"title":"2.1 Check if the release package is complete","type":1,"pageTitle":"How to Verify","url":"docs/next/devDocs/HowToVerify#21-check-if-the-release-package-is-complete","content":"The package uploaded to dist must include the source code package, and the binary package is optional. Whether it includes the source code package.Whether it includes the signature of the source code package.Whether it includes the sha512 of the source code package.If the binary package is uploaded, also check the contents listed in (2)-(4). "},{"title":"2.2 Check gpg signature","type":1,"pageTitle":"How to Verify","url":"docs/next/devDocs/HowToVerify#22-check-gpg-signature","content":"Import the public key curl https://dist.apache.org/repos/dist/dev/submarine/KEYS > KEYS # Download KEYS gpg --import KEYS # Import KEYS to local Copy Trust the public key Trust the KEY used in this version.  gpg --edit-key xxxxxxxxxx # The KEY used in this version gpg (GnuPG) 2.2.21; Copyright (C) 2020 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Secret key is available. sec rsa4096/5EF3A66D57EC647A created: 2020-05-19 expires: never usage: SC trust: ultimate validity: ultimate ssb rsa4096/17628566FEED6AF7 created: 2020-05-19 expires: never usage: E [ultimate] (1). XXX YYYZZZ <yourAccount@apache.org> gpg> trust sec rsa4096/5EF3A66D57EC647A created: 2020-05-19 expires: never usage: SC trust: ultimate validity: ultimate ssb rsa4096/17628566FEED6AF7 created: 2020-05-19 expires: never usage: E [ultimate] (1). XXX YYYZZZ <yourAccount@apache.org> Please decide how far you trust this user to correctly verify other users' keys (by looking at passports, checking fingerprints from different sources, etc.) 1 = I don't know or won't say 2 = I do NOT trust 3 = I trust marginally 4 = I trust fully 5 = I trust ultimately m = back to the main menu Your decision? 5 #choose 5 Do you really want to set this key to ultimate trust? (y/N) y # choose y sec rsa4096/5EF3A66D57EC647A created: 2020-05-19 expires: never usage: SC trust: ultimate validity: ultimate ssb rsa4096/17628566FEED6AF7 created: 2020-05-19 expires: never usage: E [ultimate] (1). XXX YYYZZZ <yourAccount@apache.org> gpg> sec rsa4096/5EF3A66D57EC647A created: 2020-05-19 expires: never usage: SC trust: ultimate validity: ultimate ssb rsa4096/17628566FEED6AF7 created: 2020-05-19 expires: never usage: E [ultimate] (1). XXX YYYZZZ <yourAccount@apache.org> Copy Use the following command to check the signature. for i in *.tar.gz; do echo $i; gpg --verify $i.asc $i ; done #Or gpg --verify apache-submarine-${release_version}-src.tar.gz.asc apache-submarine-${release_version}-src.tar.gz # If you upload a binary package, you also need to check whether the signature of the binary package is correct. gpg --verify apache-submarine-server-${release_version}-bin.tar.gz.asc apache-submarine-server-${release_version}-bin.tar.gz gpg --verify apache-submarine-client-${release_version}-bin.tar.gz.asc apache-submarine-client-${release_version}-bin.tar.gz Copy Check the result If something like the following appears, it means that the signature is correct. The keyword:Good signature apache-submarine-${release_version}-src.tar.gz gpg: Signature made Sat May 30 11:45:01 2020 CST gpg: using RSA key 9B12C2228BDFF4F4CFE849445EF3A66D57EC647A gpg: Good signature from \"XXX YYYZZZ <yourAccount@apache.org>\" [ultimate]gular2 Copy "},{"title":"2.3 Check sha512 hash","type":1,"pageTitle":"How to Verify","url":"docs/next/devDocs/HowToVerify#23-check-sha512-hash","content":"After calculating the sha512 hash locally, verify whether it is consistent with the one on dist. for i in *.tar.gz; do echo $i; gpg --print-md SHA512 $i; done #Or gpg --print-md SHA512 apache-submarine-${release_version}-src.tar.gz # If you upload a binary package, you also need to check the sha512 hash of the binary package. gpg --print-md SHA512 apache-submarine-server-${release_version}-bin.tar.gz gpg --print-md SHA512 apache-submarine-client-${release_version}-bin.tar.gz # 或者 for i in *.tar.gz.sha512; do echo $i; sha512sum -c $i; done Copy "},{"title":"2.4. Check the file content of the source package.","type":1,"pageTitle":"How to Verify","url":"docs/next/devDocs/HowToVerify#24-check-the-file-content-of-the-source-package","content":"Unzip apache-submarine-${release_version}-src.tar.gz and check as follows: Whether the DISCLAIMER file exists and whether the content is correct.Whether the LICENSE and NOTICE file exists and whether the content is correct.Whether all files have ASF License header.Whether the source code can be compiled normally.Whether the single test is passed..... "},{"title":"2.5 Check the binary package (if the binary package is uploaded)","type":1,"pageTitle":"How to Verify","url":"docs/next/devDocs/HowToVerify#25-check-the-binary-package-if-the-binary-package-is-uploaded","content":"Unzip apache-submarine-client-${release_version}-src.tar.gz and apache-submarine-server-${release_version}-src.tar.gz, then check as follows: Whether the DISCLAIMER file exists and whether the content is correct.Whether the LICENSE and the NOTICE file exists and whether the content is correct.Whether the deployment is successful.Deploy a test environment to verify whether production and consumption can run normally.Verify what you think might go wrong. "},{"title":"How to Run Frontend Integration Test","type":0,"sectionRef":"#","url":"docs/next/devDocs/IntegrationTestE2E","content":"","keywords":""},{"title":"Introduction","type":1,"pageTitle":"How to Run Frontend Integration Test","url":"docs/next/devDocs/IntegrationTestE2E#introduction","content":"The test cases under the directory test-e2e are integration tests to ensure the correctness of the Submarine Workbench. These test cases can be run either locally or on GitHub Actions. "},{"title":"Run E2E test locally","type":1,"pageTitle":"How to Run Frontend Integration Test","url":"docs/next/devDocs/IntegrationTestE2E#run-e2e-test-locally","content":"Ensure you have setup the submarine locally. If not, you can refer to Submarine Local Deployment. Forward port kubectl port-forward --address 0.0.0.0 service/submarine-traefik 32080:80 Copy Modify run_frontend_e2e.sh You need to modify the port and the URL in this script to where you run the workbench on. Example: If your Submarine workbench is running on 127.0.0.1:4200, you should modify the WORKBENCH_PORT to 4200. # at submarine-test/test_e2e/run_frontend_e2e.sh ... # ======= Modifiable Variables ======= # # Note: URL must start with \"http\" # (Ref: https://www.selenium.dev/selenium/docs/api/java/org/openqa/selenium/WebDriver.html#get(java.lang.String)) WORKBENCH_PORT=8080 #<= modify this URL=\"http://127.0.0.1\" #<=modify this # ==================================== # ... Copy Run run_frontend_e2e.sh (Run a specific test case) This script will check whether the port can be accessed or not, and run the test case. # at submarine-test/test_e2e ./run_fronted_e2e.sh ${TESTCASE} # TESTCASE is the IT you want to run, ex: loginIT, experimentIT... Copy Run all test cases Following commands will compile all files and run all files ending with \"IT\" in the directory. # Make sure the Submarine workbench is running on 127.0.0.1:8080 cd submarine/submarine-test/test-e2e # Method 1: mvn verify # Method 2: mvn clean install -U Copy "},{"title":"Run E2E test in GitHub Actions","type":1,"pageTitle":"How to Run Frontend Integration Test","url":"docs/next/devDocs/IntegrationTestE2E#run-e2e-test-in-github-actions","content":"Each time a commit is pushed, GitHub Actions will be triggered automatically. "},{"title":"Add a new frontend E2E test case","type":1,"pageTitle":"How to Run Frontend Integration Test","url":"docs/next/devDocs/IntegrationTestE2E#add-a-new-frontend-e2e-test-case","content":"WARNING You MUST read the document carefully, and understand the difference between explicit wait, implicit wait, and fluent wait.Do not mix implicit and explicit waits. Doing so can cause unpredictable wait times. We define many useful functions in AbstractSubmarineIT.java. "},{"title":"How to Run Integration K8s Test","type":0,"sectionRef":"#","url":"docs/next/devDocs/IntegrationTestK8s","content":"","keywords":""},{"title":"Introduction","type":1,"pageTitle":"How to Run Integration K8s Test","url":"docs/next/devDocs/IntegrationTestK8s#introduction","content":"The test cases under the directory test-k8s are integration tests to ensure the correctness of the Submarine RESTful API. You can run these tests either locally or on GitHub Actions. Before running the tests, the minikube (KinD) cluster must be created. Then, compile and package the submarine project in submarine-dist directory for building a docker image. In addition, the 8080 port in submarine-traefik should be forwarded. "},{"title":"Run k8s test locally","type":1,"pageTitle":"How to Run Integration K8s Test","url":"docs/next/devDocs/IntegrationTestK8s#run-k8s-test-locally","content":"Ensure you have setup the KinD cluster or minikube cluster. If you haven't, follow this minikube tutorial Build the submarine from source and upgrade the server pod through this guide Forward port kubectl port-forward --address 0.0.0.0 service/submarine-traefik 8080:80 Copy Install the latest package \"submarine-server-core\" into the local repository, for use as a dependency in the module test-k8s mvn install -DskipTests Copy Execute the test command mvn verify -DskipRat -pl :submarine-test-k8s -Phadoop-2.9 -B Copy  "},{"title":"Run k8s test in GitHub Actions","type":1,"pageTitle":"How to Run Integration K8s Test","url":"docs/next/devDocs/IntegrationTestK8s#run-k8s-test-in-github-actions","content":"Each time a code is submitted, GitHub Actions is triggered automatically. "},{"title":"How to Release","type":0,"sectionRef":"#","url":"docs/next/devDocs/HowToRelease","content":"","keywords":""},{"title":"0. Preface","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#0-preface","content":"Source Release is the focus of Apache’s attention and it is also a required content for release. Binary Release is optional, Submarine can choose whether to release the binary package to the Apache warehouse or to the Maven central warehouse. Please refer to the following link to find more details about release guidelines: How to Release Submarine Release Guidelines "},{"title":"1. Add GPG KEY","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#1-add-gpg-key","content":"Main references in this chapter:https://infra.apache.org/openpgp.html > This chapter is only needed for the first release manager of the project. "},{"title":"1.1 Install gpg","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#11-install-gpg","content":"Detailed installation documents can refer to tutorial, The environment configuration of Mac OS is as follows: $ brew install gpg $ gpg --version #Check the version,should be 2.x Copy "},{"title":"1.2 generate gpg Key","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#12-generate-gpg-key","content":"Need to pay attention to the following points:# When entering the name, it is better to be consistent with the Full name registered in ApacheThe mailbox used should be apache mailboxIt’s better to use pinyin or English for the name, otherwise there will be garbled characters Follow the hint,generate a key# ➜ ~ gpg --full-gen-key gpg (GnuPG) 2.2.20; Copyright (C) 2020 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Please select what kind of key you want: (1) RSA and RSA (default) (2) DSA and Elgamal (3) DSA (sign only) (4) RSA (sign only) (14) Existing key from card Your selection? 1 # enter 1 here RSA keys may be between 1024 and 4096 bits long. What keysize do you want? (2048) 4096 # enter 4096 here Requested keysize is 4096 bits Please specify how long the key should be valid. 0 = key does not expire <n> = key expires in n days <n>w = key expires in n weeks <n>m = key expires in n months <n>y = key expires in n years Key is valid for? (0) 0 # enter 0 here Key does not expire at all Is this correct? (y/N) y # enter y here GnuPG needs to construct a user ID to identify your key. Real name: Guangxu Cheng # enter your name here Email address: gxcheng@apache.org # enter your mailbox here Comment: # enter some comment here (Optional) You selected this USER-ID: \"Guangxu Cheng <gxcheng@apache.org>\" Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O #enter O here We need to generate a lot of random bytes. It is a good idea to perform some other action (type on the keyboard, move the mouse, utilize the disks) during the prime generation; this gives the random number generator a better chance to gain enough entropy. We need to generate a lot of random bytes. It is a good idea to perform some other action (type on the keyboard, move the mouse, utilize the disks) during the prime generation; this gives the random number generator a better chance to gain enough entropy. # A dialog box will pop up, asking you to enter the key for this gpg. ┌──────────────────────────────────────────────────────┐ │ Please enter this passphrase │ │ │ │ Passphrase: _______________________________ │ │ │ │ <OK> <Cancel> │ └──────────────────────────────────────────────────────┘ # After entering the secret key, it will be created. And it will output the following information. gpg: key 2DD587E7B10F3B1F marked as ultimately trusted gpg: revocation certificate stored as '/Users/cheng/.gnupg/openpgp-revocs.d/41936314E25F402D5F7D73152DD587E7B10F3B1F.rev' public and secret key created and signed. pub rsa4096 2020-05-19 [SC] 41936314E25F402D5F7D73152DD587E7B10F3B1F uid Guangxu Cheng <gxcheng@apache.org> sub rsa4096 2020-05-19 [E] Copy "},{"title":"1.3 Upload the generated key to the public server","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#13-upload-the-generated-key-to-the-public-server","content":"➜ ~ gpg --list-keys ------------------------------- pub rsa4096 2020-05-18 [SC] 5931F8CFD04B37A325E4465D8C0D31C4149B3A87 uid [ultimate] Guangxu Cheng <gxcheng@apache.org> sub rsa4096 2020-05-18 [E] # Send public key to keyserver via key id $ gpg --keyserver pgpkeys.mit.edu --send-key <key id> # Among them, pgpkeys.mit.edu is a randomly selected keyserver, and the keyserver list is: https://sks-keyservers.net/status/, which is automatically synchronized with each other, you can choose any one. Copy "},{"title":"1.4 Check whether the key is created successfully","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#14-check-whether-the-key-is-created-successfully","content":"Through the following URL, use the email to check whether the upload is successful or not. It will take about a minute to find out. When searching, check the show full-key hashes under advance on http://keys.gnupg.net. The query results are as follows: "},{"title":"1.5 Add your gpg public key to the KEYS file","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#15-add-your-gpg-public-key-to-the-keys-file","content":"SVN is required for this step The svn library of the DEV branch is https://dist.apache.org/repos/dist/dev/submarine The SVN library of the Release branch is https://dist.apache.org/repos/dist/release/submarine 1.5.1 Add the public key to KEYS in the dev branch to release the RC version# ➜ ~ svn co https://dist.apache.org/repos/dist/dev/submarine /tmp/submarine-dist-dev # This step is relatively slow, and all versions will be copied. If the network is disconnected, use svn cleanup to delete the lock and re-execute it, and the transfer will be resumed. ➜ ~ cd submarine-dist-dev ➜ submarine-dist-dev ~ (gpg --list-sigs YOUR_NAME@apache.org && gpg --export --armor YOUR_NAME@apache.org) >> KEYS # Append the KEY you generated to the file KEYS, it is best to check if it is correct after appending. ➜ submarine-dist-dev ~ svn add . # If there is a KEYS file before, it is not needed. ➜ submarine-dist-dev ~ svn ci -m \"add gpg key for YOUR_NAME\" # Next, you will be asked to enter a username and password, just use your apache username and password. Copy 1.5.2 Add the public key to KEYS in the release branch to release the official version# ➜ ~ svn co https://dist.apache.org/repos/dist/release/submarine /tmp/submarine-dist-release ➜ ~ cd submarine-dist-release ➜ submarine-dist-release ~ (gpg --list-sigs YOUR_NAME@apache.org && gpg --export --armor YOUR_NAME@apache.org) >> KEYS # Append the KEY you generated to the file KEYS, it is best to check if it is correct after appending. ➜ submarine-dist-release ~ svn add . # If there is a KEYS file before, it is not needed. ➜ submarine-dist-release ~ svn ci -m \"add gpg key for YOUR_NAME\" # Next, you will be asked to enter a username and password, just use your apache username and password. Copy "},{"title":"1.6 Upload GPG public key to Github account","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#16-upload-gpg-public-key-to-github-account","content":"Go to https://github.com/settings/keys and add GPG KEYS.If you find \"unverified\" is written after the key after adding it, remember to bind the mailbox used in the GPG key to your github account (https://github.com/settings/emails). "},{"title":"2. Set maven settings","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#2-set-maven-settings","content":"Skip if it has already been set In the maven configuration file ~/.m2/settings.xml, add the following <server> item <?xml version=\"1.0\" encoding=\"UTF-8\"?> <settings xsi:schemaLocation=\"http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd\" xmlns=\"http://maven.apache.org/SETTINGS/1.1.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"> <servers> <!-- Apache Repo Settings --> <server> <id>apache.snapshots.https</id> <username>{user-id}</username> <password>{user-pass}</password> </server> <server> <id>apache.releases.https</id> <username>{user-id}</username> <password>{user-pass}</password> </server> </servers> <profiles> <profile> <id>apache-release</id> <properties> <gpg.keyname>Your KEYID</gpg.keyname><!-- Your GPG Keyname here --> <!-- Use an agent: Prevents being asked for the password during the build --> <gpg.useagent>true</gpg.useagent> <gpg.passphrase>Your password of the private key</gpg.passphrase> </properties> </profile> </profiles> </settings> Copy "},{"title":"3. Compile and package","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#3-compile-and-package","content":""},{"title":"3.1 Prepare a branch","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#31-prepare-a-branch","content":"Pull the new branch from the main branch as a release branch, release-${release_version} Update CHANGES.md Check whether the code is normal, including successful compilation, all unit tests, successful RAT check, etc. # build check $ mvn clean package -Dmaven.javadoc.skip=true # RAT check $ mvn apache-rat:check Copy Change the version number "},{"title":"3.2 Create the tag","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#32-create-the-tag","content":"Before creating the tag, make sure that the code has been checked for errors, including: successful compilation, all unit tests, and successful RAT checks, etc. Create a tag with signature $ git_tag=${release_version}-${rc_version} $ git tag -s $git_tag -m \"Tagging the ${release_version} first Releae Candidate (Candidates start at zero)\" # If a error happened like gpg: signing failed: secret key not available, set the private key first. $ git config user.signingkey ${KEY_ID} Copy "},{"title":"3.3 Package the source code","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#33-package-the-source-code","content":"After the tag is successfully created, the tag source code should be packaged into a tar package. mkdir /tmp/apache-submarine-${release_version}-${rc_version} git archive --format=tar.gz --output=\"/tmp/apache-submarine-${release_version}-${rc_version}/apache-submarine-${release_version}-src.tar.gz\" --prefix=\"apache-submarine-${release_version}/\" $git_tag Copy "},{"title":"3.4 Packaged binary package","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#34-packaged-binary-package","content":"Compile the source code packaged in the previous step cd /tmp/apache-submarine-${release_version}-${rc_version} # Enter the source package directory. tar xzvf apache-submarine-${release_version}-src.tar.gz # Unzip the source package. cd apache-submarine-${release_version} # Enter the source directory. mvn compile clean install package -DskipTests # Compile. cp ./submarine-distribution/target/apache-submarine-${release_version}-bin.tar.gz /tmp/apache-submarine-${release_version}-${rc_version}/ # Copy the binary package to the source package directory to facilitate signing the package in the next step. Copy "},{"title":"3.5 Sign the source package/binary package/sha512","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#35-sign-the-source-packagebinary-packagesha512","content":"for i in *.tar.gz; do echo $i; gpg --print-md SHA512 $i > $i.sha512 ; done # Calculate SHA512 for i in *.tar.gz; do echo $i; gpg --armor --output $i.asc --detach-sig $i ; done # Calculate the signature Copy "},{"title":"3.6 Check whether the generated signature/sha512 is correct","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#36-check-whether-the-generated-signaturesha512-is-correct","content":"For example, verify that the signature is correct as follows: for i in *.tar.gz; do echo $i; gpg --verify $i.asc $i ; done Copy "},{"title":"4. Prepare for Apache release","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#4-prepare-for-apache-release","content":""},{"title":"4.1 Publish the jar package to the Apache Nexus repository","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#41-publish-the-jar-package-to-the-apache-nexus-repository","content":"cd /tmp/apache-submarine-${release_version}-${rc_version} # Enter the source package directory tar xzvf apache-submarine-${release_version}-src.tar.gz # Unzip the source package cd apache-submarine-${release_version} mvn -DskipTests deploy -Papache-release -Dmaven.javadoc.skip=true # Start upload Copy "},{"title":"4.2 Upload the tag to git repository","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#42-upload-the-tag-to-git-repository","content":"git push origin ${release_version}-${rc_version} Copy "},{"title":"4.3 Upload the compiled file to dist","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#43-upload-the-compiled-file-to-dist","content":"This step requires the use of SVN, the svn library of the DEV branch is https://dist.apache.org/repos/dist/dev/submarine "},{"title":"4.3.1 Checkout Submarine to a local directory","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#431-checkout-submarine-to-a-local-directory","content":"# This step may be slow, and all versions will be tested. If the network is broken, use svn cleanup to delete the lock and re-execute it, and the upload will be resumed. svn co https://dist.apache.org/repos/dist/dev/submarine /tmp/submarine-dist-dev Copy "},{"title":"4.3.2 Add the public key to the KEYS file and submit it to the SVN repository","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#432-add-the-public-key-to-the-keys-file-and-submit-it-to-the-svn-repository","content":"cd /tmp/submarine-dist-dev mkdir ${release_version}-${rc_version} # Create version directory # Copy the source code package and signed package here. cp /tmp/apache-submarine-${release_version}-${rc_version}/*tar.gz* ${release_version}-${rc_version}/ svn status # Check svn status. svn add ${release_version}-${rc_version} # Add to svn version. svn status # Check svn status. svn commit -m \"prepare for ${release_version} ${rc_version}\" # Submit to svn remote server. Copy "},{"title":"4.4 Shut down the Apache Staging repository","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#44-shut-down-the-apache-staging-repository","content":"Please make sure all artifacts are fine. Log in http://repository.apache.org , with Apache accountClick on Staging repositories on the left.Search for Submarine keywords and select the repository you uploaded recently.Click the Close button above, and a series of checks will be performed during this process.After the check is passed, a link will appear on the Summary tab below. Please save this link and put it in the next voting email. The link should look like: https://repository.apache.org/content/repositories/orgapachesubmarine-xxxx WARN: Please note that clicking Close may fail, please check the reason for the failure and deal with it. "},{"title":"5. Enter voting","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#5-enter-voting","content":"To vote in the Submarine community, send an email to:dev@submarine.apache.org "},{"title":"Vote in the Submarine community","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#vote-in-the-submarine-community","content":"Voting template# Title:[VOTE] Submarine-${release_version}-${rc_version} is ready for a vote! Content: Hi folks, Thanks to everyone's help on this release. I've created a release candidate (${rc_version}) for submarine ${release_version}. The highlighted features are as follows: 1. AAA 2. BBB 3. CCC The mini-submarine image is here: docker pull apache/submarine:mini-${release_version}-${rc_version} The RC tag in git is here: https://github.com/apache/submarine/releases/tag/release-${release_version}-${rc_version} The RC release artifacts are available at: http://home.apache.org/~pingsutw/submarine-${release_version}-${rc_version} The Maven staging repository is here: https://repository.apache.org/content/repositories/orgapachesubmarine-1030 My public key is here: https://dist.apache.org/repos/dist/release/submarine/KEYS *This vote will run for 7 days, ending on DDDD/EE/FF at 11:59 pm PST.* For the testing, I have verified the 1. Build from source, Install Submarine on minikube 2. Workbench UI (Experiment / Notebook / Template / Environment) 3. Experiment / Notebook / Template / Environment REST API My +1 to start. Thanks! BR, XXX Copy Announce voting results template# Title:[RESULT][VOTE] Release Apache Submarine ${release_version} ${rc_version} Content: Hello Apache Submarine PMC and Community, The vote closes now as 72hr have passed. The vote PASSES with xx (+1 non-binding) votes from the PMC, xx (+1 non-binding) vote from the rest of the developer community, and no further 0 or -1 votes. The vote thread:{vote_mail_address} Thank you for your support. Your Submarine Release Manager Copy "},{"title":"6. Officially released","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#6-officially-released","content":""},{"title":"6.1 Merge the changes from the release-${release_version} branch to the master branch","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#61-merge-the-changes-from-the-release-release_version-branch-to-the-master-branch","content":""},{"title":"6.2 Release the version in the Apache Staging repository","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#62-release-the-version-in-the-apache-staging-repository","content":"Please make sure all artifacts are fine. Log in to http://repository.apache.org with your Apache account.Click on Staging repositories on the left.Search for Submarine keywords, select your recently uploaded repository, the repository specified in the voting email.Click the Release button above, and a series of checks will be carried out during this process.It usually takes 24 hours to wait for the repository to synchronize to other data sources "},{"title":"6.3 Update official website link","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#63-update-official-website-link","content":""},{"title":"6.4. Send an email todev@submarine.apache.org","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#64-send-an-email-todevsubmarineapacheorg","content":"Please make sure that the repository in 6.4 has been successfully released, generally the email is sent 24 hours after 6.4 Announce release email template: Title: [ANNOUNCE] Apache Submarine ${release_version} release! Content: Hi folks, It's a great honor for me to announce that the Apache Submarine Community has released Apache Submarine ${release_version}! The highlighted features are: 1. AAA 2. BBB 3. CCC Tons of thanks to our contributors and community! Let's keep fighting! *Apache Submarine ${release_version} released*: https://submarine.apache.org/docs/next/releases/submarine-release-${release_version} BR, XXXX Copy "},{"title":"Project Architecture","type":0,"sectionRef":"#","url":"docs/next/devDocs/README","content":"","keywords":""},{"title":"1. Introduction","type":1,"pageTitle":"Project Architecture","url":"docs/next/devDocs/README#1-introduction","content":"This document mainly describes the structure of each module of the Submarine project, the development and test description of each module. "},{"title":"2. Submarine Project Structure","type":1,"pageTitle":"Project Architecture","url":"docs/next/devDocs/README#2-submarine-project-structure","content":""},{"title":"2.1. submarine-client","type":1,"pageTitle":"Project Architecture","url":"docs/next/devDocs/README#21-submarine-client","content":"Provide the CLI interface for submarine user. (Currently only support YARN service (deprecated)) "},{"title":"2.2. submarine-cloud-v2","type":1,"pageTitle":"Project Architecture","url":"docs/next/devDocs/README#22-submarine-cloud-v2","content":"The operator for Submarine application. For details, please see the README on github. "},{"title":"2.3. submarine-commons","type":1,"pageTitle":"Project Architecture","url":"docs/next/devDocs/README#23-submarine-commons","content":"Define utility function used in multiple packages, mainly related to hadoop. "},{"title":"2.4. submarine-dist","type":1,"pageTitle":"Project Architecture","url":"docs/next/devDocs/README#24-submarine-dist","content":"Store the pre-release files. "},{"title":"2.5. submarine-sdk","type":1,"pageTitle":"Project Architecture","url":"docs/next/devDocs/README#25-submarine-sdk","content":"Provide Python SDK for submarine user. "},{"title":"2.6. submarine-server","type":1,"pageTitle":"Project Architecture","url":"docs/next/devDocs/README#26-submarine-server","content":"Include core server, restful api, and k8s submitter. "},{"title":"2.7. submarine-test","type":1,"pageTitle":"Project Architecture","url":"docs/next/devDocs/README#27-submarine-test","content":"Provide end-to-end and k8s test for submarine. "},{"title":"2.8. submarine-workbench","type":1,"pageTitle":"Project Architecture","url":"docs/next/devDocs/README#28-submarine-workbench","content":"workbench-server: is a Jetty-based web server service. Workbench-server provides RESTful interface and Websocket interface. The RESTful interface provides workbench-web with management capabilities for databases such as project, department, user, and role.workbench-web: is a web front-end service based on Angular.js framework. With workbench-web users can manage Submarine project, department, user, role through browser. You can also use the notebook to develop machine learning algorithms, model release and other lifecycle management. "},{"title":"2.9 dev-support","type":1,"pageTitle":"Project Architecture","url":"docs/next/devDocs/README#29-dev-support","content":"mini-submarine: by using the docker image provided by Submarine, you can experience all the functions of Submarine in a single docker environment, while mini-submarine also provides developers with a development and testing environment, Avoid the hassle of installing and deploying the runtime environment.submarine-installer: submarine-installer is our submarine runtime environment installation tool for yarn-3.1+ and above.By using submarine-installer, it is easy to install and deploy system services such asdocker, nvidia-docker, nvidia driver, ETCD, Calico network etc. required by yarn-3.1+. "},{"title":"Download Apache Submarine","type":0,"sectionRef":"#","url":"docs/next/download","content":"","keywords":""},{"title":"Verify the integrity of the files","type":1,"pageTitle":"Download Apache Submarine","url":"docs/next/download#verify-the-integrity-of-the-files","content":"It is essential that you verify the integrity of the downloaded files using the PGP or MD5 signatures. This signature should be matched against the KEYS file. gpg --import KEYS gpg --verify submarine-dist-X.Y.Z-src.tar.gz.asc Copy "},{"title":"Old releases","type":1,"pageTitle":"Download Apache Submarine","url":"docs/next/download#old-releases","content":"Apache Submarine 0.5.0 released on Dec 17, 2020 (release notes) (git tag) Binary package:submarine-dist-0.5.0-hadoop-2.9.tar.gz (505 MB, checksum, signature)Source:submarine-dist-0.5.0-src.tar.gz (5.0 MB, checksum, signature))Docker images: mini-submarine docker pull apache/submarine:mini-0.5.0submarine server docker pull apache/submarine:server-0.5.0submarine database docker pull apache/submarine:database-0.5.0submarine jupyter-notebook docker pull apache/submarine:jupyter-notebook-0.5.0 SDK: PySubmarine pip install apache-submarine==0.5.0 Apache Submarine 0.4.0 released on Jul 05, 2020 (release notes) (git tag) Binary package with submarine:submarine-dist-0.4.0-hadoop-2.9.tar.gz (550 MB,checksum,signature)Source:submarine-dist-0.4.0-src.tar.gz (6 MB,checksum,signature)Docker images:mini-submarine (guide) Apache Submarine 0.3.0 released on Feb 01, 2020 (release notes) (git tag) Binary package with submarine:submarine-dist-0.3.0-hadoop-2.9.tar.gz (550 MB,checksum,signature)Source:submarine-dist-0.3.0-src.tar.gz (6 MB,checksum,signature)Docker images:mini-submarine (guide) Apache Submarine 0.2.0 released on Jul 2, 2019 Binary package with submarine:hadoop-submarine-0.2.0.tar.gz (111 MB,checksum,signature,Announcement) Source:hadoop-submarine-0.2.0-src.tar.gz (1.4 MB,checksum,signature) Apache Submarine 0.1.0 released on Jan 16, 2019 Binary package with submarine:submarine-0.2.0-bin-all.tgz (97 MB,checksum,signature,Announcement) Source:submarine-hadoop-3.2.0-src.tar.gz (1.1 MB,checksum,signature) "},{"title":"WriteDockerfileKaldi","type":0,"sectionRef":"#","url":"docs/next/ecosystem/kaldi/WriteDockerfileKaldi","content":"","keywords":""},{"title":"Creating Docker Images for Running Kaldi on YARN","type":1,"pageTitle":"WriteDockerfileKaldi","url":"docs/next/ecosystem/kaldi/WriteDockerfileKaldi#creating-docker-images-for-running-kaldi-on-yarn","content":""},{"title":"How to create docker images to run Kaldi on YARN","type":1,"pageTitle":"WriteDockerfileKaldi","url":"docs/next/ecosystem/kaldi/WriteDockerfileKaldi#how-to-create-docker-images-to-run-kaldi-on-yarn","content":"Dockerfile to run Kaldi on YARN need two part: Base libraries which Kaldi depends on 1) OS base image, for example nvidia/cuda:10.0-cudnn7-devel-ubuntu18.04 2) Kaldi depended libraries and packages. For example python, g++, make. For GPU support, need cuda, cudnn, etc. 3) Kaldi compile. Libraries to access HDFS 1) JDK 2) Hadoop Here's an example of a base image (w/o GPU support) to install Kaldi: FROM nvidia/cuda:10.0-cudnn7-devel-ubuntu18.04 RUN apt-get clean && \\ apt-get update && \\ apt-get install -y --no-install-recommends \\ sudo \\ openjdk-8-jdk \\ iputils-ping \\ g++ \\ make \\ automake \\ autoconf \\ bzip2 \\ unzip \\ wget \\ sox \\ libtool \\ git \\ subversion \\ python2.7 \\ python3 \\ zlib1g-dev \\ ca-certificates \\ patch \\ ffmpeg \\ vim && \\ rm -rf /var/lib/apt/lists/* && \\ ln -s /usr/bin/python2.7 /usr/bin/python RUN git clone --depth 1 https://github.com/kaldi-asr/kaldi.git /opt/kaldi && \\ cd /opt/kaldi && \\ cd /opt/kaldi/tools && \\ ./extras/install_mkl.sh && \\ make -j $(nproc) && \\ cd /opt/kaldi/src && \\ ./configure --shared --use-cuda && \\ make depend -j $(nproc) && \\ make -j $(nproc) Copy On top of above image, add files, install packages to access HDFS RUN apt-get update && apt-get install -y openjdk-8-jdk wget # Install hadoop ENV HADOOP_VERSION=\"3.2.1\" ENV JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 RUN wget https://archive.apache.org/dist/hadoop/common/hadoop-${HADOOP_VERSION}/hadoop-${HADOOP_VERSION}.tar.gz && \\ tar zxf hadoop-${HADOOP_VERSION}.tar.gz && \\ ln -s hadoop-${HADOOP_VERSION} hadoop-current && \\ rm hadoop-${HADOOP_VERSION}.tar.gz Copy Build and push to your own docker registry: Use docker build ... and docker push ... to finish this step. "},{"title":"Use examples to build your own Kaldi docker images","type":1,"pageTitle":"WriteDockerfileKaldi","url":"docs/next/ecosystem/kaldi/WriteDockerfileKaldi#use-examples-to-build-your-own-kaldi-docker-images","content":"We provided following examples for you to build kaldi docker images. For latest Kaldi *base/ubuntu-18.04/Dockerfile.gpu.kaldi_latest: Latest Kaldi that supports GPU, which is prebuilt to CUDA10, with models. "},{"title":"Build Docker images","type":1,"pageTitle":"WriteDockerfileKaldi","url":"docs/next/ecosystem/kaldi/WriteDockerfileKaldi#build-docker-images","content":"Manually build Docker image:# Under docker/ directory,The CLUSTER_NAME can be modified in build-all.sh to have installation permissions, run build-all.sh to build Docker images. It will build following images: kaldi-latest-gpu-base:0.0.1 for base Docker image which includes Hadoop, Kaldi, GPU base libraries, which includes thchs30 model. Use prebuilt images# (No liability) You can also use prebuilt images for convenience in the docker hub: hadoopsubmarine/kaldi-latest-gpu-base:0.0.1 "},{"title":"Deploy Submarine with Helm","type":0,"sectionRef":"#","url":"docs/next/gettingStarted/helm","content":"","keywords":""},{"title":"Prerequisite","type":1,"pageTitle":"Deploy Submarine with Helm","url":"docs/next/gettingStarted/helm#prerequisite","content":"Install Helm v3: https://helm.sh/docs/intro/install/ A Kubernetes environment (ex: minikube or kind) "},{"title":"Deploy Submarine to Kubernetes","type":1,"pageTitle":"Deploy Submarine with Helm","url":"docs/next/gettingStarted/helm#deploy-submarine-to-kubernetes","content":"git clone https://github.com/apache/submarine.git cd submarine helm install submarine ./helm-charts/submarine Copy With these commands, the Submarine service will be deployed to the \"default\" namespace.The first time installation will take about 10 mins because the docker images are pulled from apache/submarine on DockerHub. "},{"title":"Verify installation","type":1,"pageTitle":"Deploy Submarine with Helm","url":"docs/next/gettingStarted/helm#verify-installation","content":"kubectl get all Copy TODO: screenshot "},{"title":"Uninstall Submarine","type":1,"pageTitle":"Deploy Submarine with Helm","url":"docs/next/gettingStarted/helm#uninstall-submarine","content":"helm uninstall submarine # Check helm ls Copy Helm chart configuation (values.yaml)# "},{"title":"Volume Type","type":1,"pageTitle":"Deploy Submarine with Helm","url":"docs/next/gettingStarted/helm#volume-type","content":"Submarine can support various volume types, currently including hostPath (default) and NFS. It can be easily configured in the ./helm-charts/submarine/values.yaml, or you can override the default values in values.yaml by helm CLI. hostPath# In hostPath, you can store data directly in your node.Usage: Configure setting in ./helm-charts/submarine/values.yaml.To enable hostPath storage, set .storage.type to host.To set the root path for your storage, set .storage.host.root to <any-path> Example: # ./helm-charts/submarine/values.yaml storage: type: host host: root: /tmp Copy NFS (Network File System)# In NFS, it allows multiple clients to access a shared space.Prerequisite: A pre-existing NFS server. You have two options. Create NFS server kubectl create -f ./dev-support/nfs-server/nfs-server.yaml Copy It will create a nfs-server pod in kubernetes cluster, and expose nfs-server ip at 10.96.0.2Use your own NFS server Install NFS dependencies in your nodes Ubuntu apt-get install -y nfs-common Copy CentOS yum install nfs-util Copy Usage: Configure setting in ./helm-charts/submarine/values.yaml.To enable NFS storage, set .storage.type to nfs.To set the ip for NFS server, set .storage.nfs.ip to <any-ip> Example: # ./helm-charts/submarine/values.yaml storage: type: nfs nfs: ip: 10.96.0.2 Copy "},{"title":"Access to Submarine Server","type":1,"pageTitle":"Deploy Submarine with Helm","url":"docs/next/gettingStarted/helm#access-to-submarine-server","content":"Submarine server by default expose 8080 port within K8s cluster. After Submarine v0.5 uses Traefik as reverse-proxy by default. If you don't want to use Traefik, you can modify below value to false in ./helm-charts/submarine/values.yaml. # Use Traefik by default traefik: enabled: true Copy To access the server from outside of the cluster, we use Traefik ingress controller and NodePort for external access.\\ Please refer to ./helm-charts/submarine/charts/traefik/values.yaml and Traefik docsfor more details if you want to customize the default value for Traefik. Notice:If you use kind to run local Kubernetes cluster, please refer to this docsand set the configuration \"extraPortMappings\" when creating the k8s cluster. kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 nodes: - role: control-plane extraPortMappings: - containerPort: 32080 hostPort: [the port you want to access] Copy # Use nodePort and Traefik ingress controller by default. # To access the submarine server, open the following URL in your browser. http://127.0.0.1:32080 Copy If minikube is installed, use the following command to find the URL to the Submarine server. $ minikube service submarine-traefik --url Copy "},{"title":"RunningDistributedThchs30KaldiJobs","type":0,"sectionRef":"#","url":"docs/next/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs","content":"","keywords":""},{"title":"Prepare data for training","type":1,"pageTitle":"RunningDistributedThchs30KaldiJobs","url":"docs/next/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs#prepare-data-for-training","content":"Thchs30 is a common benchmark in machine learning for speech data and transcripts. Below example is based on Thchs30 dataset. 1) download gz file: THCHS30_PATH=/data/hdfs1/nfs/aisearch/kaldi/thchs30 mkdir $THCHS30_PATH/data && cd $THCHS30_PATH/data wget http://www.openslr.org/resources/18/data_thchs30.tgz wget http://www.openslr.org/resources/18/test-noise.tgz wget http://www.openslr.org/resources/18/resource.tgz Copy 2) Checkout https://github.com/apache/submarine.git: git clone https://github.com/apache/submarine.git Copy 3) Go to submarine/docker/ecosystem/ cp -r ./kaldi/sge $THCHS30_PATH/sge Copy 4) optional,Modify /opt/kaldi/egs/thchs30/s5/cmd.sh in the Container,This queue is used by default export train_cmd=\"queue.pl -q all.q\" Copy Warning: Please note that YARN service doesn't allow multiple services with the same name, so please run following command yarn application -destroy <service-name> Copy to delete services if you want to reuse the same service name. "},{"title":"Prepare Docker images","type":1,"pageTitle":"RunningDistributedThchs30KaldiJobs","url":"docs/next/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs#prepare-docker-images","content":"Refer to Write Dockerfile to build a Docker image or use prebuilt one: hadoopsubmarine/kaldi-latest-gpu-base:0.0.1 "},{"title":"Run Kaldi jobs","type":1,"pageTitle":"RunningDistributedThchs30KaldiJobs","url":"docs/next/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs#run-kaldi-jobs","content":""},{"title":"Run distributed training","type":1,"pageTitle":"RunningDistributedThchs30KaldiJobs","url":"docs/next/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs#run-distributed-training","content":"# Change the variables according to your needs SUBMARINE_VERSION=3.3.0-SNAPSHOT WORKER_NUM=2 SGE_CFG_PATH=/cfg THCHS30_PATH=/data/hdfs1/nfs/aisearch/kaldi/thchs30 DOCKER_HADOOP_HDFS_HOME=/app/${SUBMARINE_VERSION} # Dependent on registrydns, you must fill in < your RegistryDNSIP> in resolv.conf yarn jar /usr/local/matrix/share/hadoop/yarn/${SUBMARINE_VERSION}.jar \\ job run --name kaldi-thchs30-distributed \\ --env DOCKER_JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre/ \\ --env DOCKER_HADOOP_HDFS_HOME=$DOCKER_HADOOP_HDFS_HOME \\ --env YARN_CONTAINER_RUNTIME_DOCKER_CONTAINER_NETWORK=calico-network \\ --env PYTHONUNBUFFERED=\"0\" \\ --env TZ=\"Asia/Shanghai\" \\ --env YARN_CONTAINER_RUNTIME_DOCKER_MOUNTS=${THCHS30_PATH}/sge/resolv.conf:/etc/resolv.conf,\\ ${THCHS30_PATH}/sge/passwd:/etc/passwd:rw,\\ ${THCHS30_PATH}/sge/group:/etc/group:rw,\\ ${THCHS30_PATH}/sge:$SGE_CFG_PATH,\\ ${THCHS30_PATH}/data:/opt/kaldi/egs/thchs30,\\ ${THCHS30_PATH}/mul/s5:/opt/kaldi/egs/mul-thchs30/s5 \\ --input_path /opt/kaldi/egs/thchs30/data \\ --docker_image hadoopsubmarine/kaldi-latest-gpu-base:0.0.1 \\ --num_workers $WORKER_NUM \\ --worker_resources memory=64G,vcores=32,gpu=1 \\ --worker_launch_cmd \"sudo mkdir -p /opt/kaldi/egs/mul-thchs30/s5 && \\ sudo cp /opt/kaldi/egs/thchs30/s5/* /opt/kaldi/egs/mul-thchs30/s5 -r && \\ cluster_user=`whoami` domain_suffix=\"ml.com\" && \\ cd /cfg && bash sge_run.sh $WORKER_NUM $SGE_CFG_PATH && \\ if [ $(echo $HOST_NAME |grep \"^master-\") ] then sleep 2m && cd /opt/kaldi/egs/mul-thchs30/s5 && ./run.sh fi\" \\ --verbose Copy Explanations: >1 num_workers indicates it is a distributed training.Parameters / resources / Docker image of parameter server can be specified separately. For many cases, parameter server doesn't require GPU.We don't need parameter server here For the meaning of the individual parameters, see the QuickStart page! Outputs of distributed training Sample output of master: ... Reading package lists... Building dependency tree... Reading state information... The following additional packages will be installed: bsd-mailx cpio gridengine-common ifupdown iproute2 isc-dhcp-client isc-dhcp-common libatm1 libdns-export162 libisc-export160 liblockfile-bin liblockfile1 libmnl0 libxmuu1 libxtables11 ncurses-term netbase openssh-client openssh-server openssh-sftp-server postfix python3-chardet python3-pkg-resources python3-requests python3-six python3-urllib3 ssh-import-id ssl-cert tcsh xauth Suggested packages: libarchive1 gridengine-qmon ppp rdnssd iproute2-doc resolvconf avahi-autoipd isc-dhcp-client-ddns apparmor ssh-askpass libpam-ssh keychain monkeysphere rssh molly-guard ufw procmail postfix-mysql postfix-pgsql postfix-ldap postfix-pcre sasl2-bin libsasl2-modules dovecot-common postfix-cdb postfix-doc python3-setuptools python3-ndg-httpsclient python3-openssl python3-pyasn1 openssl-blacklist The following NEW packages will be installed: bsd-mailx cpio gridengine-client gridengine-common gridengine-exec gridengine-master ifupdown iproute2 isc-dhcp-client isc-dhcp-common libatm1 libdns-export162 libisc-export160 liblockfile-bin liblockfile1 libmnl0 libxmuu1 libxtables11 ncurses-term netbase openssh-client openssh-server openssh-sftp-server postfix python3-chardet python3-pkg-resources python3-requests python3-six python3-urllib3 ssh-import-id ssl-cert tcsh xauth 0 upgraded, 33 newly installed, 0 to remove and 30 not upgraded. Need to get 12.1 MB of archives. After this operation, 65.8 MB of additional disk space will be used. Get:1 http://archive.ubuntu.com/ubuntu xenial/main amd64 libatm1 amd64 1:2.5.1-1.5 [24.2 kB] Get:2 http://archive.ubuntu.com/ubuntu xenial/main amd64 libmnl0 amd64 1.0.3-5 [12.0 kB] Get:3 http://archive.ubuntu.com/ubuntu xenial/main amd64 liblockfile-bin amd64 1.09-6ubuntu1 [10.8 kB] Get:4 http://archive.ubuntu.com/ubuntu xenial/main amd64 liblockfile1 amd64 1.09-6ubuntu1 [8056 B] Get:5 http://archive.ubuntu.com/ubuntu xenial/main amd64 cpio amd64 2.11+dfsg-5ubuntu1 [74.8 kB] Get:6 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 iproute2 amd64 4.3.0-1ubuntu3.16.04.5 [523 kB] Get:7 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 ifupdown amd64 0.8.10ubuntu1.4 [54.9 kB] Get:8 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libisc-export160 amd64 1:9.10.3.dfsg.P4-8ubuntu1.15 [153 kB] Get:9 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libdns-export162 amd64 1:9.10.3.dfsg.P4-8ubuntu1.15 [665 kB] Get:10 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 isc-dhcp-client amd64 4.3.3-5ubuntu12.10 [224 kB] Get:11 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 isc-dhcp-common amd64 4.3.3-5ubuntu12.10 [105 kB] Get:12 http://archive.ubuntu.com/ubuntu xenial/main amd64 libxtables11 amd64 1.6.0-2ubuntu3 [27.2 kB] Get:13 http://archive.ubuntu.com/ubuntu xenial/main amd64 netbase all 5.3 [12.9 kB] Get:14 http://archive.ubuntu.com/ubuntu xenial/main amd64 libxmuu1 amd64 2:1.1.2-2 [9674 B] Get:15 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 openssh-client amd64 1:7.2p2-4ubuntu2.8 [590 kB] Get:16 http://archive.ubuntu.com/ubuntu xenial/main amd64 xauth amd64 1:1.0.9-1ubuntu2 [22.7 kB] Get:17 http://archive.ubuntu.com/ubuntu xenial/main amd64 ssl-cert all 1.0.37 [16.9 kB] Get:18 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 postfix amd64 3.1.0-3ubuntu0.3 [1152 kB] Get:19 http://archive.ubuntu.com/ubuntu xenial/main amd64 bsd-mailx amd64 8.1.2-0.20160123cvs-2 [63.7 kB] Get:20 http://archive.ubuntu.com/ubuntu xenial/universe amd64 gridengine-common all 6.2u5-7.4 [156 kB] Get:21 http://archive.ubuntu.com/ubuntu xenial/universe amd64 gridengine-client amd64 6.2u5-7.4 [3394 kB] Get:22 http://archive.ubuntu.com/ubuntu xenial/universe amd64 tcsh amd64 6.18.01-5 [410 kB] Get:23 http://archive.ubuntu.com/ubuntu xenial/universe amd64 gridengine-exec amd64 6.2u5-7.4 [990 kB] Get:24 http://archive.ubuntu.com/ubuntu xenial/universe amd64 gridengine-master amd64 6.2u5-7.4 [2429 kB] Get:25 http://archive.ubuntu.com/ubuntu xenial/main amd64 ncurses-term all 6.0+20160213-1ubuntu1 [249 kB] Get:26 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 openssh-sftp-server amd64 1:7.2p2-4ubuntu2.8 [38.9 kB] Get:27 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 openssh-server amd64 1:7.2p2-4ubuntu2.8 [335 kB] Get:28 http://archive.ubuntu.com/ubuntu xenial/main amd64 python3-pkg-resources all 20.7.0-1 [79.0 kB] Get:29 http://archive.ubuntu.com/ubuntu xenial/main amd64 python3-chardet all 2.3.0-2 [96.2 kB] Get:30 http://archive.ubuntu.com/ubuntu xenial/main amd64 python3-six all 1.10.0-3 [11.0 kB] Get:31 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 python3-urllib3 all 1.13.1-2ubuntu0.16.04.3 [58.5 kB] Get:32 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 python3-requests all 2.9.1-3ubuntu0.1 [55.8 kB] Get:33 http://archive.ubuntu.com/ubuntu xenial/main amd64 ssh-import-id all 5.5-0ubuntu1 [10.2 kB] Fetched 12.1 MB in 0s (15.0 MB/s) Selecting previously unselected package libatm1:amd64. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 21398 files and directories currently installed.) Preparing to unpack .../libatm1_1%3a2.5.1-1.5_amd64.deb ... Unpacking libatm1:amd64 (1:2.5.1-1.5) ... Selecting previously unselected package libmnl0:amd64. Preparing to unpack .../libmnl0_1.0.3-5_amd64.deb ... Unpacking libmnl0:amd64 (1.0.3-5) ... Selecting previously unselected package liblockfile-bin. Preparing to unpack .../liblockfile-bin_1.09-6ubuntu1_amd64.deb ... Unpacking liblockfile-bin (1.09-6ubuntu1) ... Selecting previously unselected package liblockfile1:amd64. Preparing to unpack .../liblockfile1_1.09-6ubuntu1_amd64.deb ... Unpacking liblockfile1:amd64 (1.09-6ubuntu1) ... Selecting previously unselected package cpio. Preparing to unpack .../cpio_2.11+dfsg-5ubuntu1_amd64.deb ... Unpacking cpio (2.11+dfsg-5ubuntu1) ... Selecting previously unselected package iproute2. Preparing to unpack .../iproute2_4.3.0-1ubuntu3.16.04.5_amd64.deb ... Unpacking iproute2 (4.3.0-1ubuntu3.16.04.5) ... Selecting previously unselected package ifupdown. Preparing to unpack .../ifupdown_0.8.10ubuntu1.4_amd64.deb ... Unpacking ifupdown (0.8.10ubuntu1.4) ... Selecting previously unselected package libisc-export160. Preparing to unpack .../libisc-export160_1%3a9.10.3.dfsg.P4-8ubuntu1.15_amd64.deb ... Unpacking libisc-export160 (1:9.10.3.dfsg.P4-8ubuntu1.15) ... Selecting previously unselected package libdns-export162. Preparing to unpack .../libdns-export162_1%3a9.10.3.dfsg.P4-8ubuntu1.15_amd64.deb ... Unpacking libdns-export162 (1:9.10.3.dfsg.P4-8ubuntu1.15) ... Selecting previously unselected package isc-dhcp-client. Preparing to unpack .../isc-dhcp-client_4.3.3-5ubuntu12.10_amd64.deb ... Unpacking isc-dhcp-client (4.3.3-5ubuntu12.10) ... Selecting previously unselected package isc-dhcp-common. Preparing to unpack .../isc-dhcp-common_4.3.3-5ubuntu12.10_amd64.deb ... Unpacking isc-dhcp-common (4.3.3-5ubuntu12.10) ... Selecting previously unselected package libxtables11:amd64. Preparing to unpack .../libxtables11_1.6.0-2ubuntu3_amd64.deb ... Unpacking libxtables11:amd64 (1.6.0-2ubuntu3) ... Selecting previously unselected package netbase. Preparing to unpack .../archives/netbase_5.3_all.deb ... Unpacking netbase (5.3) ... Selecting previously unselected package libxmuu1:amd64. Preparing to unpack .../libxmuu1_2%3a1.1.2-2_amd64.deb ... Unpacking libxmuu1:amd64 (2:1.1.2-2) ... Selecting previously unselected package openssh-client. Preparing to unpack .../openssh-client_1%3a7.2p2-4ubuntu2.8_amd64.deb ... Unpacking openssh-client (1:7.2p2-4ubuntu2.8) ... Selecting previously unselected package xauth. Preparing to unpack .../xauth_1%3a1.0.9-1ubuntu2_amd64.deb ... Unpacking xauth (1:1.0.9-1ubuntu2) ... Selecting previously unselected package ssl-cert. Preparing to unpack .../ssl-cert_1.0.37_all.deb ... Unpacking ssl-cert (1.0.37) ... Selecting previously unselected package postfix. Preparing to unpack .../postfix_3.1.0-3ubuntu0.3_amd64.deb ... Unpacking postfix (3.1.0-3ubuntu0.3) ... Selecting previously unselected package bsd-mailx. Preparing to unpack .../bsd-mailx_8.1.2-0.20160123cvs-2_amd64.deb ... Unpacking bsd-mailx (8.1.2-0.20160123cvs-2) ... Selecting previously unselected package gridengine-common. Preparing to unpack .../gridengine-common_6.2u5-7.4_all.deb ... Unpacking gridengine-common (6.2u5-7.4) ... Selecting previously unselected package gridengine-client. Preparing to unpack .../gridengine-client_6.2u5-7.4_amd64.deb ... Unpacking gridengine-client (6.2u5-7.4) ... Selecting previously unselected package tcsh. Preparing to unpack .../tcsh_6.18.01-5_amd64.deb ... Unpacking tcsh (6.18.01-5) ... Selecting previously unselected package gridengine-exec. Preparing to unpack .../gridengine-exec_6.2u5-7.4_amd64.deb ... Unpacking gridengine-exec (6.2u5-7.4) ... Selecting previously unselected package gridengine-master. Preparing to unpack .../gridengine-master_6.2u5-7.4_amd64.deb ... Unpacking gridengine-master (6.2u5-7.4) ... Selecting previously unselected package ncurses-term. Preparing to unpack .../ncurses-term_6.0+20160213-1ubuntu1_all.deb ... Unpacking ncurses-term (6.0+20160213-1ubuntu1) ... Selecting previously unselected package openssh-sftp-server. Preparing to unpack .../openssh-sftp-server_1%3a7.2p2-4ubuntu2.8_amd64.deb ... Unpacking openssh-sftp-server (1:7.2p2-4ubuntu2.8) ... Selecting previously unselected package openssh-server. Preparing to unpack .../openssh-server_1%3a7.2p2-4ubuntu2.8_amd64.deb ... Unpacking openssh-server (1:7.2p2-4ubuntu2.8) ... Selecting previously unselected package python3-pkg-resources. Preparing to unpack .../python3-pkg-resources_20.7.0-1_all.deb ... Unpacking python3-pkg-resources (20.7.0-1) ... Selecting previously unselected package python3-chardet. Preparing to unpack .../python3-chardet_2.3.0-2_all.deb ... Unpacking python3-chardet (2.3.0-2) ... Selecting previously unselected package python3-six. Preparing to unpack .../python3-six_1.10.0-3_all.deb ... Unpacking python3-six (1.10.0-3) ... Selecting previously unselected package python3-urllib3. Preparing to unpack .../python3-urllib3_1.13.1-2ubuntu0.16.04.3_all.deb ... Unpacking python3-urllib3 (1.13.1-2ubuntu0.16.04.3) ... Selecting previously unselected package python3-requests. Preparing to unpack .../python3-requests_2.9.1-3ubuntu0.1_all.deb ... Unpacking python3-requests (2.9.1-3ubuntu0.1) ... Selecting previously unselected package ssh-import-id. Preparing to unpack .../ssh-import-id_5.5-0ubuntu1_all.deb ... Unpacking ssh-import-id (5.5-0ubuntu1) ... Processing triggers for systemd (229-4ubuntu21.22) ... Processing triggers for libc-bin (2.23-0ubuntu11) ... Setting up libatm1:amd64 (1:2.5.1-1.5) ... Setting up libmnl0:amd64 (1.0.3-5) ... Setting up liblockfile-bin (1.09-6ubuntu1) ... Setting up liblockfile1:amd64 (1.09-6ubuntu1) ... Setting up cpio (2.11+dfsg-5ubuntu1) ... update-alternatives: using /bin/mt-gnu to provide /bin/mt (mt) in auto mode Setting up iproute2 (4.3.0-1ubuntu3.16.04.5) ... Setting up ifupdown (0.8.10ubuntu1.4) ... Creating /etc/network/interfaces. Setting up libisc-export160 (1:9.10.3.dfsg.P4-8ubuntu1.15) ... Setting up libdns-export162 (1:9.10.3.dfsg.P4-8ubuntu1.15) ... Setting up isc-dhcp-client (4.3.3-5ubuntu12.10) ... Setting up isc-dhcp-common (4.3.3-5ubuntu12.10) ... Setting up libxtables11:amd64 (1.6.0-2ubuntu3) ... Setting up netbase (5.3) ... Setting up libxmuu1:amd64 (2:1.1.2-2) ... Setting up openssh-client (1:7.2p2-4ubuntu2.8) ... Setting up xauth (1:1.0.9-1ubuntu2) ... Setting up ssl-cert (1.0.37) ... Setting up postfix (3.1.0-3ubuntu0.3) ... Creating /etc/postfix/dynamicmaps.cf setting myhostname: master-0.XXX setting alias maps setting alias database changing /etc/mailname to master-0.XXX setting myorigin setting destinations: $myhostname, master-0.XXX, localhost.XXX, , localhost setting relayhost: setting mynetworks: 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 setting mailbox_size_limit: 0 setting recipient_delimiter: + setting inet_interfaces: all setting inet_protocols: all /etc/aliases does not exist, creating it. WARNING: /etc/aliases exists, but does not have a root alias. Postfix is now set up with a default configuration. If you need to make changes, edit /etc/postfix/main.cf (and others) as needed. To view Postfix configuration values, see postconf(1). After modifying main.cf, be sure to run '/etc/init.d/postfix reload'. Running newaliases invoke-rc.d: could not determine current runlevel invoke-rc.d: policy-rc.d denied execution of restart. Setting up bsd-mailx (8.1.2-0.20160123cvs-2) ... update-alternatives: using /usr/bin/bsd-mailx to provide /usr/bin/mailx (mailx) in auto mode Setting up gridengine-common (6.2u5-7.4) ... Creating config file /etc/default/gridengine with new version Setting up gridengine-client (6.2u5-7.4) ... Setting up tcsh (6.18.01-5) ... update-alternatives: using /bin/tcsh to provide /bin/csh (csh) in auto mode Setting up gridengine-exec (6.2u5-7.4) ... invoke-rc.d: could not determine current runlevel invoke-rc.d: policy-rc.d denied execution of start. Setting up gridengine-master (6.2u5-7.4) ... su: Authentication failure (Ignored) Initializing cluster with the following parameters: => SGE_ROOT: /var/lib/gridengine => SGE_CELL: default => Spool directory: /var/spool/gridengine/spooldb => Initial manager user: sgeadmin Initializing spool (/var/spool/gridengine/spooldb) Initializing global configuration based on /usr/share/gridengine/default-configuration Initializing complexes based on /usr/share/gridengine/centry Initializing usersets based on /usr/share/gridengine/usersets Adding user sgeadmin as a manager Cluster creation complete invoke-rc.d: could not determine current runlevel invoke-rc.d: policy-rc.d denied execution of start. Setting up ncurses-term (6.0+20160213-1ubuntu1) ... Setting up openssh-sftp-server (1:7.2p2-4ubuntu2.8) ... Setting up openssh-server (1:7.2p2-4ubuntu2.8) ... Creating SSH2 RSA key; this may take some time ... 2048 SHA256:hfQpES1aS4cjF8AOCIParZR6342vdwutoyITru0wtuE root@master-0.XXX (RSA) Creating SSH2 DSA key; this may take some time ... 1024 SHA256:gOsPMVgwXBHJzixN/gtJAG+hVCHqw8t7Fhy4nsx8od0 root@master-0.XXX (DSA) Creating SSH2 ECDSA key; this may take some time ... 256 SHA256:3D5SNniUb4z+/BuqXheFgG+DfjsxXqTT/zwWAqdX4jM root@master-0.XXX (ECDSA) Creating SSH2 ED25519 key; this may take some time ... 256 SHA256:SwyeV9iSqOW4TKLi4Wvc0zD8lWtupHCJpDu8oWBwbfU root@master-0.XXX (ED25519) invoke-rc.d: could not determine current runlevel invoke-rc.d: policy-rc.d denied execution of start. Setting up python3-pkg-resources (20.7.0-1) ... Setting up python3-chardet (2.3.0-2) ... Setting up python3-six (1.10.0-3) ... Setting up python3-urllib3 (1.13.1-2ubuntu0.16.04.3) ... Setting up python3-requests (2.9.1-3ubuntu0.1) ... Setting up ssh-import-id (5.5-0ubuntu1) ... Processing triggers for libc-bin (2.23-0ubuntu11) ... Processing triggers for systemd (229-4ubuntu21.22) ... Reading package lists... Building dependency tree... Reading state information... 0 upgraded, 0 newly installed, 0 to remove and 30 not upgraded. Copy cat $SGE_CFG_PATH/setcfg.log finish master add worker node worker-0.XXX Copy Sample output of worker: please wait Reading package lists... Building dependency tree... Reading state information... The following additional packages will be installed: bsd-mailx cpio gridengine-common ifupdown iproute2 isc-dhcp-client isc-dhcp-common libatm1 libdns-export162 libisc-export160 liblockfile-bin liblockfile1 libmnl0 libxmuu1 libxtables11 ncurses-term netbase openssh-client openssh-server openssh-sftp-server postfix python3-chardet python3-pkg-resources python3-requests python3-six python3-urllib3 ssh-import-id ssl-cert tcsh xauth Suggested packages: libarchive1 gridengine-qmon ppp rdnssd iproute2-doc resolvconf avahi-autoipd isc-dhcp-client-ddns apparmor ssh-askpass libpam-ssh keychain monkeysphere rssh molly-guard ufw procmail postfix-mysql postfix-pgsql postfix-ldap postfix-pcre sasl2-bin libsasl2-modules dovecot-common postfix-cdb postfix-doc python3-setuptools python3-ndg-httpsclient python3-openssl python3-pyasn1 openssl-blacklist The following NEW packages will be installed: bsd-mailx cpio gridengine-client gridengine-common gridengine-exec ifupdown iproute2 isc-dhcp-client isc-dhcp-common libatm1 libdns-export162 libisc-export160 liblockfile-bin liblockfile1 libmnl0 libxmuu1 libxtables11 ncurses-term netbase openssh-client openssh-server openssh-sftp-server postfix python3-chardet python3-pkg-resources python3-requests python3-six python3-urllib3 ssh-import-id ssl-cert tcsh xauth 0 upgraded, 32 newly installed, 0 to remove and 30 not upgraded. Need to get 9633 kB of archives. After this operation, 51.2 MB of additional disk space will be used. Get:1 http://archive.ubuntu.com/ubuntu xenial/main amd64 libatm1 amd64 1:2.5.1-1.5 [24.2 kB] Get:2 http://archive.ubuntu.com/ubuntu xenial/main amd64 libmnl0 amd64 1.0.3-5 [12.0 kB] Get:3 http://archive.ubuntu.com/ubuntu xenial/main amd64 liblockfile-bin amd64 1.09-6ubuntu1 [10.8 kB] Get:4 http://archive.ubuntu.com/ubuntu xenial/main amd64 liblockfile1 amd64 1.09-6ubuntu1 [8056 B] Get:5 http://archive.ubuntu.com/ubuntu xenial/main amd64 cpio amd64 2.11+dfsg-5ubuntu1 [74.8 kB] Get:6 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 iproute2 amd64 4.3.0-1ubuntu3.16.04.5 [523 kB] Get:7 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 ifupdown amd64 0.8.10ubuntu1.4 [54.9 kB] Get:8 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libisc-export160 amd64 1:9.10.3.dfsg.P4-8ubuntu1.15 [153 kB] Get:9 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libdns-export162 amd64 1:9.10.3.dfsg.P4-8ubuntu1.15 [665 kB] Get:10 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 isc-dhcp-client amd64 4.3.3-5ubuntu12.10 [224 kB] Get:11 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 isc-dhcp-common amd64 4.3.3-5ubuntu12.10 [105 kB] Get:12 http://archive.ubuntu.com/ubuntu xenial/main amd64 libxtables11 amd64 1.6.0-2ubuntu3 [27.2 kB] Get:13 http://archive.ubuntu.com/ubuntu xenial/main amd64 netbase all 5.3 [12.9 kB] Get:14 http://archive.ubuntu.com/ubuntu xenial/main amd64 libxmuu1 amd64 2:1.1.2-2 [9674 B] Get:15 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 openssh-client amd64 1:7.2p2-4ubuntu2.8 [590 kB] Get:16 http://archive.ubuntu.com/ubuntu xenial/main amd64 xauth amd64 1:1.0.9-1ubuntu2 [22.7 kB] Get:17 http://archive.ubuntu.com/ubuntu xenial/main amd64 ssl-cert all 1.0.37 [16.9 kB] Get:18 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 postfix amd64 3.1.0-3ubuntu0.3 [1152 kB] Get:19 http://archive.ubuntu.com/ubuntu xenial/main amd64 bsd-mailx amd64 8.1.2-0.20160123cvs-2 [63.7 kB] Get:20 http://archive.ubuntu.com/ubuntu xenial/universe amd64 gridengine-common all 6.2u5-7.4 [156 kB] Get:21 http://archive.ubuntu.com/ubuntu xenial/universe amd64 gridengine-client amd64 6.2u5-7.4 [3394 kB] Get:22 http://archive.ubuntu.com/ubuntu xenial/universe amd64 tcsh amd64 6.18.01-5 [410 kB] Get:23 http://archive.ubuntu.com/ubuntu xenial/universe amd64 gridengine-exec amd64 6.2u5-7.4 [990 kB] Get:24 http://archive.ubuntu.com/ubuntu xenial/main amd64 ncurses-term all 6.0+20160213-1ubuntu1 [249 kB] Get:25 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 openssh-sftp-server amd64 1:7.2p2-4ubuntu2.8 [38.9 kB] Get:26 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 openssh-server amd64 1:7.2p2-4ubuntu2.8 [335 kB] Get:27 http://archive.ubuntu.com/ubuntu xenial/main amd64 python3-pkg-resources all 20.7.0-1 [79.0 kB] Get:28 http://archive.ubuntu.com/ubuntu xenial/main amd64 python3-chardet all 2.3.0-2 [96.2 kB] Get:29 http://archive.ubuntu.com/ubuntu xenial/main amd64 python3-six all 1.10.0-3 [11.0 kB] Get:30 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 python3-urllib3 all 1.13.1-2ubuntu0.16.04.3 [58.5 kB] Get:31 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 python3-requests all 2.9.1-3ubuntu0.1 [55.8 kB] Get:32 http://archive.ubuntu.com/ubuntu xenial/main amd64 ssh-import-id all 5.5-0ubuntu1 [10.2 kB] Fetched 9633 kB in 2s (4496 kB/s) Selecting previously unselected package libatm1:amd64. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 21398 files and directories currently installed.) Preparing to unpack .../libatm1_1%3a2.5.1-1.5_amd64.deb ... Unpacking libatm1:amd64 (1:2.5.1-1.5) ... Selecting previously unselected package libmnl0:amd64. Preparing to unpack .../libmnl0_1.0.3-5_amd64.deb ... Unpacking libmnl0:amd64 (1.0.3-5) ... Selecting previously unselected package liblockfile-bin. Preparing to unpack .../liblockfile-bin_1.09-6ubuntu1_amd64.deb ... Unpacking liblockfile-bin (1.09-6ubuntu1) ... Selecting previously unselected package liblockfile1:amd64. Preparing to unpack .../liblockfile1_1.09-6ubuntu1_amd64.deb ... Unpacking liblockfile1:amd64 (1.09-6ubuntu1) ... Selecting previously unselected package cpio. Preparing to unpack .../cpio_2.11+dfsg-5ubuntu1_amd64.deb ... Unpacking cpio (2.11+dfsg-5ubuntu1) ... Selecting previously unselected package iproute2. Preparing to unpack .../iproute2_4.3.0-1ubuntu3.16.04.5_amd64.deb ... Unpacking iproute2 (4.3.0-1ubuntu3.16.04.5) ... Selecting previously unselected package ifupdown. Preparing to unpack .../ifupdown_0.8.10ubuntu1.4_amd64.deb ... Unpacking ifupdown (0.8.10ubuntu1.4) ... Selecting previously unselected package libisc-export160. Preparing to unpack .../libisc-export160_1%3a9.10.3.dfsg.P4-8ubuntu1.15_amd64.deb ... Unpacking libisc-export160 (1:9.10.3.dfsg.P4-8ubuntu1.15) ... Selecting previously unselected package libdns-export162. Preparing to unpack .../libdns-export162_1%3a9.10.3.dfsg.P4-8ubuntu1.15_amd64.deb ... Unpacking libdns-export162 (1:9.10.3.dfsg.P4-8ubuntu1.15) ... Selecting previously unselected package isc-dhcp-client. Preparing to unpack .../isc-dhcp-client_4.3.3-5ubuntu12.10_amd64.deb ... Unpacking isc-dhcp-client (4.3.3-5ubuntu12.10) ... Selecting previously unselected package isc-dhcp-common. Preparing to unpack .../isc-dhcp-common_4.3.3-5ubuntu12.10_amd64.deb ... Unpacking isc-dhcp-common (4.3.3-5ubuntu12.10) ... Selecting previously unselected package libxtables11:amd64. Preparing to unpack .../libxtables11_1.6.0-2ubuntu3_amd64.deb ... Unpacking libxtables11:amd64 (1.6.0-2ubuntu3) ... Selecting previously unselected package netbase. Preparing to unpack .../archives/netbase_5.3_all.deb ... Unpacking netbase (5.3) ... Selecting previously unselected package libxmuu1:amd64. Preparing to unpack .../libxmuu1_2%3a1.1.2-2_amd64.deb ... Unpacking libxmuu1:amd64 (2:1.1.2-2) ... Selecting previously unselected package openssh-client. Preparing to unpack .../openssh-client_1%3a7.2p2-4ubuntu2.8_amd64.deb ... Unpacking openssh-client (1:7.2p2-4ubuntu2.8) ... Selecting previously unselected package xauth. Preparing to unpack .../xauth_1%3a1.0.9-1ubuntu2_amd64.deb ... Unpacking xauth (1:1.0.9-1ubuntu2) ... Selecting previously unselected package ssl-cert. Preparing to unpack .../ssl-cert_1.0.37_all.deb ... Unpacking ssl-cert (1.0.37) ... Selecting previously unselected package postfix. Preparing to unpack .../postfix_3.1.0-3ubuntu0.3_amd64.deb ... Unpacking postfix (3.1.0-3ubuntu0.3) ... Selecting previously unselected package bsd-mailx. Preparing to unpack .../bsd-mailx_8.1.2-0.20160123cvs-2_amd64.deb ... Unpacking bsd-mailx (8.1.2-0.20160123cvs-2) ... Selecting previously unselected package gridengine-common. Preparing to unpack .../gridengine-common_6.2u5-7.4_all.deb ... Unpacking gridengine-common (6.2u5-7.4) ... Selecting previously unselected package gridengine-client. Preparing to unpack .../gridengine-client_6.2u5-7.4_amd64.deb ... Unpacking gridengine-client (6.2u5-7.4) ... Selecting previously unselected package tcsh. Preparing to unpack .../tcsh_6.18.01-5_amd64.deb ... Unpacking tcsh (6.18.01-5) ... Selecting previously unselected package gridengine-exec. Preparing to unpack .../gridengine-exec_6.2u5-7.4_amd64.deb ... Unpacking gridengine-exec (6.2u5-7.4) ... Selecting previously unselected package ncurses-term. Preparing to unpack .../ncurses-term_6.0+20160213-1ubuntu1_all.deb ... Unpacking ncurses-term (6.0+20160213-1ubuntu1) ... Selecting previously unselected package openssh-sftp-server. Preparing to unpack .../openssh-sftp-server_1%3a7.2p2-4ubuntu2.8_amd64.deb ... Unpacking openssh-sftp-server (1:7.2p2-4ubuntu2.8) ... Selecting previously unselected package openssh-server. Preparing to unpack .../openssh-server_1%3a7.2p2-4ubuntu2.8_amd64.deb ... Unpacking openssh-server (1:7.2p2-4ubuntu2.8) ... Selecting previously unselected package python3-pkg-resources. Preparing to unpack .../python3-pkg-resources_20.7.0-1_all.deb ... Unpacking python3-pkg-resources (20.7.0-1) ... Selecting previously unselected package python3-chardet. Preparing to unpack .../python3-chardet_2.3.0-2_all.deb ... Unpacking python3-chardet (2.3.0-2) ... Selecting previously unselected package python3-six. Preparing to unpack .../python3-six_1.10.0-3_all.deb ... Unpacking python3-six (1.10.0-3) ... Selecting previously unselected package python3-urllib3. Preparing to unpack .../python3-urllib3_1.13.1-2ubuntu0.16.04.3_all.deb ... Unpacking python3-urllib3 (1.13.1-2ubuntu0.16.04.3) ... Selecting previously unselected package python3-requests. Preparing to unpack .../python3-requests_2.9.1-3ubuntu0.1_all.deb ... Unpacking python3-requests (2.9.1-3ubuntu0.1) ... Selecting previously unselected package ssh-import-id. Preparing to unpack .../ssh-import-id_5.5-0ubuntu1_all.deb ... Unpacking ssh-import-id (5.5-0ubuntu1) ... Processing triggers for systemd (229-4ubuntu21.22) ... Processing triggers for libc-bin (2.23-0ubuntu11) ... Setting up libatm1:amd64 (1:2.5.1-1.5) ... Setting up libmnl0:amd64 (1.0.3-5) ... Setting up liblockfile-bin (1.09-6ubuntu1) ... Setting up liblockfile1:amd64 (1.09-6ubuntu1) ... Setting up cpio (2.11+dfsg-5ubuntu1) ... update-alternatives: using /bin/mt-gnu to provide /bin/mt (mt) in auto mode Setting up iproute2 (4.3.0-1ubuntu3.16.04.5) ... Setting up ifupdown (0.8.10ubuntu1.4) ... Creating /etc/network/interfaces. Setting up libisc-export160 (1:9.10.3.dfsg.P4-8ubuntu1.15) ... Setting up libdns-export162 (1:9.10.3.dfsg.P4-8ubuntu1.15) ... Setting up isc-dhcp-client (4.3.3-5ubuntu12.10) ... Setting up isc-dhcp-common (4.3.3-5ubuntu12.10) ... Setting up libxtables11:amd64 (1.6.0-2ubuntu3) ... Setting up netbase (5.3) ... Setting up libxmuu1:amd64 (2:1.1.2-2) ... Setting up openssh-client (1:7.2p2-4ubuntu2.8) ... Setting up xauth (1:1.0.9-1ubuntu2) ... Setting up ssl-cert (1.0.37) ... Setting up postfix (3.1.0-3ubuntu0.3) ... Creating /etc/postfix/dynamicmaps.cf setting myhostname: worker-0.XXX setting alias maps setting alias database changing /etc/mailname to worker-0.XXX setting myorigin setting destinations: $myhostname, worker-0.XXX, localhost.XXX, , localhost setting relayhost: setting mynetworks: 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 setting mailbox_size_limit: 0 setting recipient_delimiter: + setting inet_interfaces: all setting inet_protocols: all /etc/aliases does not exist, creating it. WARNING: /etc/aliases exists, but does not have a root alias. Postfix is now set up with a default configuration. If you need to make changes, edit /etc/postfix/main.cf (and others) as needed. To view Postfix configuration values, see postconf(1). After modifying main.cf, be sure to run '/etc/init.d/postfix reload'. Running newaliases invoke-rc.d: could not determine current runlevel invoke-rc.d: policy-rc.d denied execution of restart. Setting up bsd-mailx (8.1.2-0.20160123cvs-2) ... update-alternatives: using /usr/bin/bsd-mailx to provide /usr/bin/mailx (mailx) in auto mode Setting up gridengine-common (6.2u5-7.4) ... Creating config file /etc/default/gridengine with new version Setting up gridengine-client (6.2u5-7.4) ... Setting up tcsh (6.18.01-5) ... update-alternatives: using /bin/tcsh to provide /bin/csh (csh) in auto mode Setting up gridengine-exec (6.2u5-7.4) ... invoke-rc.d: could not determine current runlevel invoke-rc.d: policy-rc.d denied execution of start. Setting up ncurses-term (6.0+20160213-1ubuntu1) ... Setting up openssh-sftp-server (1:7.2p2-4ubuntu2.8) ... Setting up openssh-server (1:7.2p2-4ubuntu2.8) ... Creating SSH2 RSA key; this may take some time ... 2048 SHA256:ok/TxzwtF5W8I55sDxrt4Agy4fuWn39BiSovvDObhVE root@worker-0.XXX (RSA) Creating SSH2 DSA key; this may take some time ... 1024 SHA256:4y48kVYt3mS3q1KgZzEoYMnS/2d/tA8TJUK5uNSaxZY root@worker-0.XXX (DSA) Creating SSH2 ECDSA key; this may take some time ... 256 SHA256:4D7zm4cD2IbDnHoXnzcIo3FISbvOW8eOstGBNf1/bvo root@worker-0.XXX (ECDSA) Creating SSH2 ED25519 key; this may take some time ... 256 SHA256:/HrA3xiZiH5CZkXwtcfE6GwcMM+hEhZzTdFHxj4PzDg root@worker-0.XXX (ED25519) invoke-rc.d: could not determine current runlevel invoke-rc.d: policy-rc.d denied execution of start. Setting up python3-pkg-resources (20.7.0-1) ... Setting up python3-chardet (2.3.0-2) ... Setting up python3-six (1.10.0-3) ... Setting up python3-urllib3 (1.13.1-2ubuntu0.16.04.3) ... Setting up python3-requests (2.9.1-3ubuntu0.1) ... Setting up ssh-import-id (5.5-0ubuntu1) ... Processing triggers for libc-bin (2.23-0ubuntu11) ... Processing triggers for systemd (229-4ubuntu21.22) ... Reading package lists... Building dependency tree... Reading state information... 0 upgraded, 0 newly installed, 0 to remove and 30 not upgraded. Copy cat $SGE_CFG_PATH/setcfg.log please wait Start SGE for worker is finished done for worker-0.XXX worker. Copy Sample output of sge:  "},{"title":"Setup a Kubernetes cluster using KinD","type":0,"sectionRef":"#","url":"docs/next/gettingStarted/kind","content":"","keywords":""},{"title":"Create Kubernetes cluster with KinD","type":1,"pageTitle":"Setup a Kubernetes cluster using KinD","url":"docs/next/gettingStarted/kind#create-kubernetes-cluster-with-kind","content":"We recommend users developing Submarine with minikube. However, KinD is also an option to setup a Kubernetes cluster on your local machine. Run the following command, and specify the KinD version and Kubernetes version here. # Download the specific version of KinD (must >= v0.6.0) export KIND_VERSION=v0.11.1 curl -Lo ./kind https://github.com/kubernetes-sigs/kind/releases/download/${KIND_VERSION}/kind-linux-amd64 # Make the binary executable chmod +x ./kind # Move the binary to your executable path sudo mv ./kind /usr/local/bin/ # Create cluster with specific version of kubernetes export KUBE_VERSION=v1.15.12 kind create cluster --image kindest/node:${KUBE_VERSION} Copy "},{"title":"Kubernetes Dashboard (optional)","type":1,"pageTitle":"Setup a Kubernetes cluster using KinD","url":"docs/next/gettingStarted/kind#kubernetes-dashboard-optional","content":""},{"title":"Deploy","type":1,"pageTitle":"Setup a Kubernetes cluster using KinD","url":"docs/next/gettingStarted/kind#deploy","content":"To deploy Dashboard, execute the following command: kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta8/aio/deploy/recommended.yaml Copy "},{"title":"Create RBAC","type":1,"pageTitle":"Setup a Kubernetes cluster using KinD","url":"docs/next/gettingStarted/kind#create-rbac","content":"Run the following commands to grant the cluster access permission of dashboard: kubectl create serviceaccount dashboard-admin-sa kubectl create clusterrolebinding dashboard-admin-sa --clusterrole=cluster-admin --serviceaccount=default:dashboard-admin-sa Copy "},{"title":"Get access token (optional)","type":1,"pageTitle":"Setup a Kubernetes cluster using KinD","url":"docs/next/gettingStarted/kind#get-access-token-optional","content":"If you want to use the token to login the dashboard, run the following commands to get key: kubectl get secrets # select the right dashboard-admin-sa-token to describe the secret kubectl describe secret dashboard-admin-sa-token-6nhkx Copy "},{"title":"Start dashboard service","type":1,"pageTitle":"Setup a Kubernetes cluster using KinD","url":"docs/next/gettingStarted/kind#start-dashboard-service","content":"kubectl proxy Copy Now access Dashboard at: http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/ Dashboard screenshot:  "},{"title":"Submarine Python SDK","type":0,"sectionRef":"#","url":"docs/next/gettingStarted/python-sdk","content":"","keywords":""},{"title":"Prepare Python Environment to run Submarine SDK","type":1,"pageTitle":"Submarine Python SDK","url":"docs/next/gettingStarted/python-sdk#prepare-python-environment-to-run-submarine-sdk","content":"Submarine SDK requires Python3.7+. It's better to use a new Python environment created by Anoconda or Python virtualenv to try this to avoid trouble to existing Python environment. A sample Python virtual env can be setup like this: wget https://files.pythonhosted.org/packages/33/bc/fa0b5347139cd9564f0d44ebd2b147ac97c36b2403943dbee8a25fd74012/virtualenv-16.0.0.tar.gz tar xf virtualenv-16.0.0.tar.gz # Make sure to install using Python 3 python3 virtualenv-16.0.0/virtualenv.py venv . venv/bin/activate Copy "},{"title":"Install Submarine SDK","type":1,"pageTitle":"Submarine Python SDK","url":"docs/next/gettingStarted/python-sdk#install-submarine-sdk","content":""},{"title":"Install SDK from pypi.org (recommended)","type":1,"pageTitle":"Submarine Python SDK","url":"docs/next/gettingStarted/python-sdk#install-sdk-from-pypiorg-recommended","content":"Starting from 0.4.0, Submarine provides Python SDK. Please change it to a proper version needed. More detail: https://pypi.org/project/apache-submarine/ # Install latest stable version pip install apache-submarine # Install specific version pip install apache-submarine==<REPLACE_VERSION> Copy "},{"title":"Install SDK from source code","type":1,"pageTitle":"Submarine Python SDK","url":"docs/next/gettingStarted/python-sdk#install-sdk-from-source-code","content":"Please first clone code from github or go to http://submarine.apache.org/download.html to download released source code. git clone https://github.com/apache/submarine.git # (optional) chackout specific branch or release git checkout <correct release tag/branch> cd submarine/submarine-sdk/pysubmarine pip install . Copy "},{"title":"Manage Submarine Experiment","type":1,"pageTitle":"Submarine Python SDK","url":"docs/next/gettingStarted/python-sdk#manage-submarine-experiment","content":"Assuming you've installed submarine on K8s and forward the traefik service to localhost, now you can open a Python shell, Jupyter notebook or any tools with Submarine SDK installed. Follow SDK experiment example to run an experiment. "},{"title":"Training a DeepFM model","type":1,"pageTitle":"Submarine Python SDK","url":"docs/next/gettingStarted/python-sdk#training-a-deepfm-model","content":"The Submarine also supports users to train an easy-to-use CTR model with a few lines of code and a configuration file, so they don’t need to reimplement the model by themself. In addition, they can train the model on both local on distributed systems, such as Hadoop or Kubernetes. Follow SDK DeepFM example to try the model. "},{"title":"Jupyter Notebook","type":0,"sectionRef":"#","url":"docs/next/gettingStarted/notebook","content":"","keywords":""},{"title":"Working with notebooks","type":1,"pageTitle":"Jupyter Notebook","url":"docs/next/gettingStarted/notebook#working-with-notebooks","content":"We recommend using Web UI to manage notebooks. "},{"title":"Notebooks Web UI","type":1,"pageTitle":"Jupyter Notebook","url":"docs/next/gettingStarted/notebook#notebooks-web-ui","content":"Notebooks can be started from the Web UI. You can click the “Notebook” tab in the left-hand panel to manage your notebooks.  To create a new notebook server, click “New Notebook”. You should see a form for entering details of your new notebook server. Notebook Name : Name of the notebook server. It should follow the rules below. Contain at most 63 characters.Contain only lowercase alphanumeric characters or '-'.Start with an alphabetic character.End with an alphanumeric character. Environment : It defines a set of libraries and docker image.CPU and MemoryGPU (optional)EnvVar (optional) : Injects environment variables into the notebook. If you want to use notebook-gpu-env, you should set up the gpu environment in your kubernetes. You can install NVIDIA/k8s-device-plugin. The list of prerequisites for running the NVIDIA device plugin is described below NVIDIA drivers ~= 384.81nvidia-docker version > 2.0docker configured with nvidia as the default runtimeKubernetes version >= 1.10 If you’re not sure which environment you need, please choose the environment “notebook-env” for the new notebook.  You should see your new notebook server. Click the name of your notebook server to connect to it.  "},{"title":"Experiment with your notebook","type":1,"pageTitle":"Jupyter Notebook","url":"docs/next/gettingStarted/notebook#experiment-with-your-notebook","content":"The environment “notebook-env” includes Submarine Python SDK which can talk to Submarine Server to create experiments, as the example below: from __future__ import print_function import submarine from submarine.client.models.environment_spec import EnvironmentSpec from submarine.client.models.experiment_spec import ExperimentSpec from submarine.client.models.experiment_task_spec import ExperimentTaskSpec from submarine.client.models.experiment_meta import ExperimentMeta from submarine.client.models.code_spec import CodeSpec # Create Submarine Client submarine_client = submarine.ExperimentClient() # Define TensorFlow experiment spec environment = EnvironmentSpec(image='apache/submarine:tf-dist-mnist-test-1.0') experiment_meta = ExperimentMeta(name='mnist-dist', namespace='default', framework='Tensorflow', cmd='python /var/tf_dist_mnist/dist_mnist.py --train_steps=100', env_vars={'ENV1': 'ENV1'}) worker_spec = ExperimentTaskSpec(resources='cpu=1,memory=1024M', replicas=1) ps_spec = ExperimentTaskSpec(resources='cpu=1,memory=1024M', replicas=1) code_spec = CodeSpec(sync_mode='git', url='https://github.com/apache/submarine.git') experiment_spec = ExperimentSpec(meta=experiment_meta, environment=environment, code=code_spec, spec={'Ps' : ps_spec,'Worker': worker_spec}) # Create experiment experiment = submarine_client.create_experiment(experiment_spec=experiment_spec) Copy You can create a new notebook, paste the above code and run it. Or, you can find the notebook submarine_experiment_sdk.ipynb inside the launched notebook session. You can open it, try it out. After experiment submitted to Submarine server, you can find the experiment jobs on the UI. "},{"title":"Quickstart","type":0,"sectionRef":"#","url":"docs/next/gettingStarted/quickstart","content":"","keywords":""},{"title":"Installation","type":1,"pageTitle":"Quickstart","url":"docs/next/gettingStarted/quickstart#installation","content":""},{"title":"Prepare a Kubernetes cluster","type":1,"pageTitle":"Quickstart","url":"docs/next/gettingStarted/quickstart#prepare-a-kubernetes-cluster","content":"Prerequisite Check dependency page for the compatible versionkubectlhelm (Helm v3 is minimum requirement.)minikube. Start minikube cluster minikube start --vm-driver=docker --cpus 8 --memory 4096 --kubernetes-version v1.21.2 Copy "},{"title":"Launch submarine in the cluster","type":1,"pageTitle":"Quickstart","url":"docs/next/gettingStarted/quickstart#launch-submarine-in-the-cluster","content":"Clone the project git clone https://github.com/apache/submarine.git Copy Install the submarine operator and dependencies by helm chart cd submarine helm install submarine ./helm-charts/submarine Copy Create a Submarine custom resource and the operator will create the submarine server, database, etc. for us. kubectl apply -f submarine-cloud-v2/artifacts/examples/example-submarine.yaml Copy "},{"title":"Ensure submarine is ready","type":1,"pageTitle":"Quickstart","url":"docs/next/gettingStarted/quickstart#ensure-submarine-is-ready","content":"Use kubectl to query the status of pods kubectl get pods Copy Make sure each pod is Running NAME READY STATUS RESTARTS AGE notebook-controller-deployment-5d4f5f874c-mnbc8 1/1 Running 0 61m pytorch-operator-844c866d54-xm8nl 1/1 Running 2 61m submarine-database-85bd68dbc5-qggtm 1/1 Running 0 11m submarine-minio-76465444f6-hdgdp 1/1 Running 0 11m submarine-mlflow-75f86d8f4d-rj2z7 1/1 Running 0 11m submarine-operator-5dd79cdf86-gpm2p 1/1 Running 0 61m submarine-server-68985b767-vjdvx 1/1 Running 0 11m submarine-tensorboard-5df8499fd4-vnklf 1/1 Running 0 11m submarine-traefik-7cbcfd4bd9-wbf8b 1/1 Running 0 61m tf-job-operator-6bb69fd44-zmlmr 1/1 Running 1 61m Copy "},{"title":"Connect to workbench","type":1,"pageTitle":"Quickstart","url":"docs/next/gettingStarted/quickstart#connect-to-workbench","content":"Exposing service # Method 1 -- use minikube ip minikube ip # you'll get the IP address of minikube, ex: 192.168.49.2 # Method 2 -- use port-forwarding kubectl port-forward --address 0.0.0.0 service/submarine-traefik 32080:80 Copy View workbench If you use method 1, go to http://{minikube ip}:32080. For example, http://192.168.49.2:32080. If you use method 2, go to http://0.0.0.0:32080. "},{"title":"Example: Submit a mnist distributed example","type":1,"pageTitle":"Quickstart","url":"docs/next/gettingStarted/quickstart#example-submit-a-mnist-distributed-example","content":"We put the code of this example here. train.py is our training script, and build.sh is the script to build a docker image. "},{"title":"1. Write a python script for distributed training","type":1,"pageTitle":"Quickstart","url":"docs/next/gettingStarted/quickstart#1-write-a-python-script-for-distributed-training","content":"Take a simple mnist tensorflow script as an example. We choose MultiWorkerMirroredStrategy as our distributed strategy. \"\"\" ./dev-support/examples/quickstart/train.py Reference: https://github.com/kubeflow/tf-operator/blob/master/examples/v1/distribution_strategy/keras-API/multi_worker_strategy-with-keras.py \"\"\" import tensorflow_datasets as tfds import tensorflow as tf from tensorflow.keras import layers, models import submarine def make_datasets_unbatched(): BUFFER_SIZE = 10000 # Scaling MNIST data from (0, 255] to (0., 1.] def scale(image, label): image = tf.cast(image, tf.float32) image /= 255 return image, label datasets, _ = tfds.load(name='mnist', with_info=True, as_supervised=True) return datasets['train'].map(scale).cache().shuffle(BUFFER_SIZE) def build_and_compile_cnn_model(): model = models.Sequential() model.add( layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1))) model.add(layers.MaxPooling2D((2, 2))) model.add(layers.Conv2D(64, (3, 3), activation='relu')) model.add(layers.MaxPooling2D((2, 2))) model.add(layers.Conv2D(64, (3, 3), activation='relu')) model.add(layers.Flatten()) model.add(layers.Dense(64, activation='relu')) model.add(layers.Dense(10, activation='softmax')) model.summary() model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) return model def main(): strategy = tf.distribute.experimental.MultiWorkerMirroredStrategy( communication=tf.distribute.experimental.CollectiveCommunication.AUTO) BATCH_SIZE_PER_REPLICA = 4 BATCH_SIZE = BATCH_SIZE_PER_REPLICA * strategy.num_replicas_in_sync with strategy.scope(): ds_train = make_datasets_unbatched().batch(BATCH_SIZE).repeat() options = tf.data.Options() options.experimental_distribute.auto_shard_policy = \\ tf.data.experimental.AutoShardPolicy.DATA ds_train = ds_train.with_options(options) # Model building/compiling need to be within `strategy.scope()`. multi_worker_model = build_and_compile_cnn_model() class MyCallback(tf.keras.callbacks.Callback): def on_epoch_end(self, epoch, logs=None): # monitor the loss and accuracy print(logs) submarine.log_metrics({\"loss\": logs[\"loss\"], \"accuracy\": logs[\"accuracy\"]}, epoch) multi_worker_model.fit(ds_train, epochs=10, steps_per_epoch=70, callbacks=[MyCallback()]) if __name__ == '__main__': main() Copy "},{"title":"2. Prepare an environment compatible with the training","type":1,"pageTitle":"Quickstart","url":"docs/next/gettingStarted/quickstart#2-prepare-an-environment-compatible-with-the-training","content":"Build a docker image equipped with the requirement of the environment. eval $(minikube docker-env) ./dev-support/examples/quickstart/build.sh Copy "},{"title":"3. Submit the experiment","type":1,"pageTitle":"Quickstart","url":"docs/next/gettingStarted/quickstart#3-submit-the-experiment","content":"Open submarine workbench and click + New Experiment Fill the form accordingly. Here we set 3 workers. Step 1Step 2Step 3The experiment is successfully submitted "},{"title":"4. Monitor the process","type":1,"pageTitle":"Quickstart","url":"docs/next/gettingStarted/quickstart#4-monitor-the-process","content":"In our code, we use submarine from submarine-sdk to record the metrics. To see the result, click corresponding experiment with name quickstart in the workbench.To see the metrics of each worker, you can select a worker from the left top list.  "},{"title":"5. Serve the model (In development)","type":1,"pageTitle":"Quickstart","url":"docs/next/gettingStarted/quickstart#5-serve-the-model-in-development","content":""},{"title":"Environment REST API","type":0,"sectionRef":"#","url":"docs/next/userDocs/api/environment","content":"","keywords":""},{"title":"Create Environment","type":1,"pageTitle":"Environment REST API","url":"docs/next/userDocs/api/environment#create-environment","content":"POST /api/v1/environment Copy "},{"title":"Parameters","type":1,"pageTitle":"Environment REST API","url":"docs/next/userDocs/api/environment#parameters","content":"Put EnvironmentSpec in request body. EnvironmentSpec# Field Name\tType\tDescriptionname\tString\tEnvironment name. dockerImage\tString\tDocker image name. kernelSpec\tKernelSpec\tEnvironment spec. description\tString\tDescription of environment. KernelSpec# Field Name\tType\tDescriptionname\tString\tKernel name. channels\tList<String>\tNames of the channels. condaDependencies\tList<String>\tList of kernel conda dependencies. pipDependencies\tList<String>\tList of kernel pip dependencies. "},{"title":"Code Example","type":1,"pageTitle":"Environment REST API","url":"docs/next/userDocs/api/environment#code-example","content":"shell curl -X POST -H \"Content-Type: application/json\" -d ' { \"name\": \"my-submarine-env\", \"dockerImage\" : \"continuumio/anaconda3\", \"kernelSpec\" : { \"name\" : \"team_default_python_3.7\", \"channels\" : [\"defaults\"], \"condaDependencies\" : [\"_ipyw_jlab_nb_ext_conf=0.1.0=py37_0\", \"alabaster=0.7.12=py37_0\", \"anaconda=2020.02=py37_0\", \"anaconda-client=1.7.2=py37_0\", \"anaconda-navigator=1.9.12=py37_0\"], \"pipDependencies\" : [\"apache-submarine==0.5.0\", \"pyarrow==0.17.0\"] } } ' http://127.0.0.1:32080/api/v1/environment Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ \"environmentId\":\"environment_1626160071451_0001\", \"environmentSpec\":{ \"name\":\"my-submarine-env\", \"dockerImage\":\"continuumio/anaconda3\", \"kernelSpec\":{ \"name\":\"team_default_python_3.7\", \"channels\":[\"defaults\"], \"condaDependencies\": [\"_ipyw_jlab_nb_ext_conf\\u003d0.1.0\\u003dpy37_0\", \"alabaster\\u003d0.7.12\\u003dpy37_0\", \"anaconda\\u003d2020.02\\u003dpy37_0\", \"anaconda-client\\u003d1.7.2\\u003dpy37_0\", \"anaconda-navigator\\u003d1.9.12\\u003dpy37_0\"], \"pipDependencies\": [\"apache-submarine\\u003d\\u003d0.5.0\", \"pyarrow\\u003d\\u003d0.17.0\"] }, \"description\":null, \"image\":null } }, \"attributes\":{} } Copy "},{"title":"List Environment","type":1,"pageTitle":"Environment REST API","url":"docs/next/userDocs/api/environment#list-environment","content":"GET /api/v1/environment Copy "},{"title":"Code Example","type":1,"pageTitle":"Environment REST API","url":"docs/next/userDocs/api/environment#code-example-1","content":"shell curl -X GET http://127.0.0.1:32080/api/v1/environment Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":[ { \"environmentId\":\"environment_1600862964725_0002\", \"environmentSpec\":{ \"name\":\"notebook-gpu-env\", \"dockerImage\":\"apache/submarine:jupyter-notebook-gpu-0.7.0-SNAPSHOT\", \"kernelSpec\":{ \"name\":\"submarine_jupyter_py3\", \"channels\":[\"defaults\"], \"condaDependencies\":[], \"pipDependencies\":[] }, \"description\":null, \"image\":null } }, { \"environmentId\":\"environment_1626160071451_0001\", \"environmentSpec\":{ \"name\":\"my-submarine-env\", \"dockerImage\":\"continuumio/anaconda3\", \"kernelSpec\":{ \"name\":\"team_default_python_3.7\", \"channels\":[\"defaults\"], \"condaDependencies\": [\"_ipyw_jlab_nb_ext_conf\\u003d0.1.0\\u003dpy37_0\", \"alabaster\\u003d0.7.12\\u003dpy37_0\", \"anaconda\\u003d2020.02\\u003dpy37_0\", \"anaconda-client\\u003d1.7.2\\u003dpy37_0\", \"anaconda-navigator\\u003d1.9.12\\u003dpy37_0\"], \"pipDependencies\": [\"apache-submarine\\u003d\\u003d0.5.0\", \"pyarrow\\u003d\\u003d0.17.0\"] }, \"description\":null, \"image\":null } }, { \"environmentId\":\"environment_1600862964725_0001\", \"environmentSpec\":{ \"name\":\"notebook-env\", \"dockerImage\":\"apache/submarine:jupyter-notebook-0.7.0-SNAPSHOT\", \"kernelSpec\":{ \"name\":\"submarine_jupyter_py3\", \"channels\":[\"defaults\"], \"condaDependencies\":[], \"pipDependencies\":[] }, \"description\":null, \"image\":null } } ], \"attributes\":{} } Copy "},{"title":"Get Environment","type":1,"pageTitle":"Environment REST API","url":"docs/next/userDocs/api/environment#get-environment","content":"GET /api/v1/environment/{name} Copy "},{"title":"Parameters","type":1,"pageTitle":"Environment REST API","url":"docs/next/userDocs/api/environment#parameters-1","content":"Field Name\tType\tIn\tDescriptionname\tString\tpath\tEnvironment name. "},{"title":"Code Example","type":1,"pageTitle":"Environment REST API","url":"docs/next/userDocs/api/environment#code-example-2","content":"shell curl -X GET http://127.0.0.1:32080/api/v1/environment/my-submarine-env Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ \"environmentId\":\"environment_1626160071451_0001\", \"environmentSpec\":{ \"name\":\"my-submarine-env\", \"dockerImage\":\"continuumio/anaconda3\", \"kernelSpec\":{ \"name\":\"team_default_python_3.7\", \"channels\":[\"defaults\"], \"condaDependencies\": [\"_ipyw_jlab_nb_ext_conf\\u003d0.1.0\\u003dpy37_0\", \"alabaster\\u003d0.7.12\\u003dpy37_0\", \"anaconda\\u003d2020.02\\u003dpy37_0\", \"anaconda-client\\u003d1.7.2\\u003dpy37_0\", \"anaconda-navigator\\u003d1.9.12\\u003dpy37_0\"], \"pipDependencies\": [\"apache-submarine\\u003d\\u003d0.5.0\", \"pyarrow\\u003d\\u003d0.17.0\"] }, \"description\":null, \"image\":null } }, \"attributes\":{} } Copy "},{"title":"Patch Environment","type":1,"pageTitle":"Environment REST API","url":"docs/next/userDocs/api/environment#patch-environment","content":"PATCH /api/v1/environment/{name} Copy "},{"title":"Parameters","type":1,"pageTitle":"Environment REST API","url":"docs/next/userDocs/api/environment#parameters-2","content":"Field Name\tType\tIn\tDescriptionname\tString\tpath and body\tEnvironment name. dockerImage\tString\tbody\tDocker image name. kernelSpec\tKernelSpec\tbody\tEnvironment spec. description\tString\tbody\tDescription of environment. This field is optional. "},{"title":"Code Example","type":1,"pageTitle":"Environment REST API","url":"docs/next/userDocs/api/environment#code-example-3","content":"shell curl -X PATCH -H \"Content-Type: application/json\" -d ' { \"name\": \"my-submarine-env\", \"dockerImage\" : \"continuumio/anaconda3\", \"kernelSpec\" : { \"name\" : \"team_default_python_3.7_updated\", \"channels\" : [\"defaults\"], \"condaDependencies\" : [\"_ipyw_jlab_nb_ext_conf=0.1.0=py37_0\", \"alabaster=0.7.12=py37_0\"], \"pipDependencies\" : [] } } ' http://127.0.0.1:32080/api/v1/environment/my-submarine-env Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ \"environmentId\":\"environment_1626160071451_0003\", \"environmentSpec\":{ \"name\":\"my-submarine-env\", \"dockerImage\":\"continuumio/anaconda3\", \"kernelSpec\":{ \"name\":\"team_default_python_3.7_updated\", \"channels\":[\"defaults\"], \"condaDependencies\": [\"_ipyw_jlab_nb_ext_conf\\u003d0.1.0\\u003dpy37_0\", \"alabaster\\u003d0.7.12\\u003dpy37_0\"], \"pipDependencies\":[] }, \"description\":null, \"image\":null } }, \"attributes\":{} } Copy "},{"title":"Delete Environment","type":1,"pageTitle":"Environment REST API","url":"docs/next/userDocs/api/environment#delete-environment","content":"DELETE /api/v1/environment/{name} Copy "},{"title":"Parameters","type":1,"pageTitle":"Environment REST API","url":"docs/next/userDocs/api/environment#parameters-3","content":"Field Name\tType\tIn\tDescriptionname\tString\tpath\tEnvironment name. "},{"title":"Code Example","type":1,"pageTitle":"Environment REST API","url":"docs/next/userDocs/api/environment#code-example-4","content":"shell curl -X DELETE http://127.0.0.1:32080/api/v1/environment/my-submarine-env Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ \"environmentId\":\"environment_1626160071451_0001\", \"environmentSpec\":{ \"name\":\"my-submarine-env\", \"dockerImage\":\"continuumio/anaconda3\", \"kernelSpec\":{ \"name\":\"team_default_python_3.7\", \"channels\":[\"defaults\"], \"condaDependencies\": [\"_ipyw_jlab_nb_ext_conf\\u003d0.1.0\\u003dpy37_0\", \"alabaster\\u003d0.7.12\\u003dpy37_0\", \"anaconda\\u003d2020.02\\u003dpy37_0\", \"anaconda-client\\u003d1.7.2\\u003dpy37_0\", \"anaconda-navigator\\u003d1.9.12\\u003dpy37_0\"], \"pipDependencies\": [\"apache-submarine\\u003d\\u003d0.5.0\", \"pyarrow\\u003d\\u003d0.17.0\"] }, \"description\":null, \"image\":null } },\"attributes\":{} } Copy "},{"title":"Experiment REST API","type":0,"sectionRef":"#","url":"docs/next/userDocs/api/experiment","content":"","keywords":""},{"title":"Create Experiment (Using Anonymous/Embedded Environment)","type":1,"pageTitle":"Experiment REST API","url":"docs/next/userDocs/api/experiment#create-experiment-using-anonymousembedded-environment","content":"POST /api/v1/experiment Copy "},{"title":"Parameters","type":1,"pageTitle":"Experiment REST API","url":"docs/next/userDocs/api/experiment#parameters","content":"Put ExperimentSpec in request body. ExperimentSpec# Field Name\tType\tDescriptionmeta\tExperimentMeta\tMeta data of the experiment template. environment\tEnvironmentSpec\tEnvironment of the experiment template. spec\tMap<String, ExperimentTaskSpec>\tSpec of pods. code\tCodeSpec\tExperiment codespec. ExperimentMeta# Field Name\tType\tDescriptionname\tString\tExperiment name. namespace\tString\tExperiment namespace. framework\tString\tExperiemnt framework. cmd\tString\tCommand. envVars\tMap<String, String>\tEnvironmental variables. EnvironmentSpec# There are two types of environment: Anonymous and Predefined. Anonymous environment: only specify dockerImage in environment spec. The container will be built on the docker image.Embedded environment: specify name in environment spec. The container will be built on the existing environment (including dockerImage and kernalSpec). See more details in environment api. ExperimentTaskSpec# Field Name\tType\tDescriptionreplicas\tInteger\tNumbers of replicas. resoureces\tString\tResouces of the task name\tString\tTask name. image\tString\tImage name. cmd\tString\tCommand. envVars\tMap<String, String>\tEnvironmental variables. CodeSpec# Currently only support pulling from github. HDFS, NFS and s3 are in development Field Name\tType\tDescriptionsyncMode\tString (git|hdfs|nfs|s3)\tsync mode of code spec. url\tString\turl of code spec. "},{"title":"Code Example","type":1,"pageTitle":"Experiment REST API","url":"docs/next/userDocs/api/experiment#code-example","content":"shell curl -X POST -H \"Content-Type: application/json\" -d ' { \"meta\": { \"name\": \"tf-mnist-json\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=2048M\" } } } ' http://127.0.0.1:32080/api/v1/experiment Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ \"experimentId\":\"experiment_1626160071451_0002\", \"name\":\"tf-mnist-json\", \"uid\":\"5a6ec922-6c90-43d4-844f-039f6804ed36\", \"status\":\"Accepted\", \"acceptedTime\":\"2021-07-13T16:47:51.000+08:00\", \"createdTime\":null, \"runningTime\":null, \"finishedTime\":null, \"spec\":{ \"meta\":{ \"name\":\"tf-mnist-json\", \"namespace\":\"default\", \"framework\":\"TensorFlow\", \"cmd\":\"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150\", \"envVars\":{\"ENV_1\":\"ENV1\"} }, \"environment\":{ \"name\":null, \"dockerImage\":null, \"kernelSpec\":null, \"description\":null, \"image\":\"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\":{ \"Ps\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"1024M\",\"cpu\":\"1\"} }, \"Worker\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d2048M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"2048M\",\"cpu\":\"1\"} } }, \"code\":null } }, \"attributes\":{} } Copy "},{"title":"Create Experiment (Using Pre-defined/Stored Environment)","type":1,"pageTitle":"Experiment REST API","url":"docs/next/userDocs/api/experiment#create-experiment-using-pre-definedstored-environment","content":"POST /api/v1/experiment Copy "},{"title":"Parameters","type":1,"pageTitle":"Experiment REST API","url":"docs/next/userDocs/api/experiment#parameters-1","content":"Put ExperimentSpec in request body. "},{"title":"Code Example","type":1,"pageTitle":"Experiment REST API","url":"docs/next/userDocs/api/experiment#code-example-1","content":"shell curl -X POST -H \"Content-Type: application/json\" -d ' { \"meta\": { \"name\": \"tf-mnist-json\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"name\": \"my-submarine-env\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=2048M\" } } } ' http://127.0.0.1:32080/api/v1/experiment Copy Above example assume environment \"my-submarine-env\" already exists in Submarine. Please refer Environment API Reference doc to environment rest api. response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ \"experimentId\":\"experiment_1626160071451_0005\", \"name\":\"tf-mnist-json\", \"uid\":\"4944c603-0f21-49e5-826a-2ff820bb4d93\", \"status\":\"Accepted\", \"acceptedTime\":\"2021-07-13T16:57:27.000+08:00\", \"createdTime\":null, \"runningTime\":null, \"finishedTime\":null, \"spec\":{ \"meta\":{ \"name\":\"tf-mnist-json\", \"namespace\":\"default\", \"framework\":\"TensorFlow\", \"cmd\":\"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150\", \"envVars\":{\"ENV_1\":\"ENV1\"} }, \"environment\":{ \"name\":\"my-submarine-env\", \"dockerImage\":null, \"kernelSpec\":null, \"description\":null, \"image\":null }, \"spec\":{ \"Ps\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"1024M\",\"cpu\":\"1\"} }, \"Worker\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d2048M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"2048M\",\"cpu\":\"1\"} } }, \"code\":null } }, \"attributes\":{} } Copy "},{"title":"List Experiment","type":1,"pageTitle":"Experiment REST API","url":"docs/next/userDocs/api/experiment#list-experiment","content":"GET /api/v1/experiment Copy "},{"title":"Code Example","type":1,"pageTitle":"Experiment REST API","url":"docs/next/userDocs/api/experiment#code-example-2","content":"shell curl -X GET http://127.0.0.1:32080/api/v1/experiment Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\": [{ \"experimentId\":\"experiment_1626160071451_0001\", \"name\":\"newexperiment1\", \"uid\":\"b895985c-411c-4e89-90e0-c60a2a8a4235\", \"status\":\"Succeeded\", \"acceptedTime\":\"2021-07-13T16:21:31.000+08:00\", \"createdTime\":\"2021-07-13T16:21:31.000+08:00\", \"runningTime\":\"2021-07-13T16:21:46.000+08:00\", \"finishedTime\":\"2021-07-13T16:26:54.000+08:00\", \"spec\":{ \"meta\":{ \"name\":\"newexperiment1\", \"namespace\":\"default\", \"framework\":\"TensorFlow\", \"cmd\":\"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150\", \"envVars\":{\"ENV1\":\"ENV1\"} }, \"environment\":{ \"name\":null, \"dockerImage\":null, \"kernelSpec\":null, \"description\":null, \"image\":\"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\":{ \"Ps\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"1024M\",\"cpu\":\"1\"} }, \"Worker\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"1024M\",\"cpu\":\"1\"} } }, \"code\":null } }, { \"experimentId\":\"experiment_1626160071451_0005\", \"name\":\"tf-mnist-json\", \"uid\":\"4944c603-0f21-49e5-826a-2ff820bb4d93\", \"status\":\"Accepted\", \"acceptedTime\":\"2021-07-13T16:57:27.000+08:00\", \"createdTime\":null, \"runningTime\":null, \"finishedTime\":null, \"spec\":{ \"meta\":{ \"name\":\"tf-mnist-json\", \"namespace\":\"default\", \"framework\":\"TensorFlow\", \"cmd\":\"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150\", \"envVars\":{\"ENV_1\":\"ENV1\"} }, \"environment\":{ \"name\":\"my-submarine-env\", \"dockerImage\":null, \"kernelSpec\":null, \"description\":null, \"image\":null }, \"spec\":{ \"Ps\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"1024M\",\"cpu\":\"1\"} }, \"Worker\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d2048M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"2048M\",\"cpu\":\"1\"} } }, \"code\":null } }], \"attributes\":{} } Copy "},{"title":"Get Experiment","type":1,"pageTitle":"Experiment REST API","url":"docs/next/userDocs/api/experiment#get-experiment","content":"GET /api/v1/experiment/{id} Copy "},{"title":"Parameters","type":1,"pageTitle":"Experiment REST API","url":"docs/next/userDocs/api/experiment#parameters-2","content":"Field Name\tType\tIn\tDescriptionid\tString\tpath\tExperiment id. "},{"title":"Code Example","type":1,"pageTitle":"Experiment REST API","url":"docs/next/userDocs/api/experiment#code-example-3","content":"shell curl -X GET http://127.0.0.1:32080/api/v1/experiment/experiment_1626160071451_0005 Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ \"experimentId\":\"experiment_1626160071451_0005\", \"name\":\"tf-mnist-json\", \"uid\":\"4944c603-0f21-49e5-826a-2ff820bb4d93\", \"status\":\"Accepted\", \"acceptedTime\":\"2021-07-13T16:57:27.000+08:00\", \"createdTime\":null, \"runningTime\":null, \"finishedTime\":null, \"spec\":{ \"meta\":{ \"name\":\"tf-mnist-json\", \"namespace\":\"default\", \"framework\":\"TensorFlow\", \"cmd\":\"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150\", \"envVars\":{\"ENV_1\":\"ENV1\"} }, \"environment\":{ \"name\":\"my-submarine-env\", \"dockerImage\":null, \"kernelSpec\":null, \"description\":null, \"image\":null }, \"spec\":{ \"Ps\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"1024M\",\"cpu\":\"1\"} }, \"Worker\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d2048M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"2048M\",\"cpu\":\"1\"} } }, \"code\":null } }, \"attributes\":{} } Copy "},{"title":"Patch Experiment","type":1,"pageTitle":"Experiment REST API","url":"docs/next/userDocs/api/experiment#patch-experiment","content":"PATCH /api/v1/experiment/{id} Copy "},{"title":"Parameters","type":1,"pageTitle":"Experiment REST API","url":"docs/next/userDocs/api/experiment#parameters-3","content":"Field Name\tType\tIn\tDescriptionid\tString\tpath\tExperiment id. meta\tExperimentMeta\tbody\tMeta data of the experiment template. environment\tEnvironmentSpec\tbody\tEnvironment of the experiment template. spec\tMap<String, ExperimentTaskSpec>\tbody\tSpec of pods. code\tCodeSpec\tbody\tTODO "},{"title":"Code Example","type":1,"pageTitle":"Experiment REST API","url":"docs/next/userDocs/api/experiment#code-example-4","content":"shell curl -X PATCH -H \"Content-Type: application/json\" -d ' { \"meta\": { \"name\": \"tf-mnist-json\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 2, \"resources\": \"cpu=1,memory=2048M\" } } } ' http://127.0.0.1:32080/api/v1/experiment/experiment_1626160071451_0005 Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ \"experimentId\":\"experiment_1626160071451_0005\", \"name\":\"tf-mnist-json\", \"uid\":\"4944c603-0f21-49e5-826a-2ff820bb4d93\", \"status\":\"Accepted\", \"acceptedTime\":\"2021-07-13T16:57:27.000+08:00\", \"createdTime\":null, \"runningTime\":null, \"finishedTime\":null, \"spec\":{ \"meta\":{ \"name\":\"tf-mnist-json\", \"namespace\":\"default\", \"framework\":\"TensorFlow\", \"cmd\":\"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150\", \"envVars\":{\"ENV_1\":\"ENV1\"} }, \"environment\":{ \"name\":null, \"dockerImage\":null, \"kernelSpec\":null, \"description\":null, \"image\":\"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\":{ \"Ps\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"1024M\",\"cpu\":\"1\"} }, \"Worker\":{ \"replicas\":2, \"resources\":\"cpu\\u003d1,memory\\u003d2048M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"2048M\",\"cpu\":\"1\"} } }, \"code\":null } }, \"attributes\":{} } Copy "},{"title":"Delete Experiment","type":1,"pageTitle":"Experiment REST API","url":"docs/next/userDocs/api/experiment#delete-experiment","content":"DELETE /api/v1/experiment/{id} Copy "},{"title":"Parameters","type":1,"pageTitle":"Experiment REST API","url":"docs/next/userDocs/api/experiment#parameters-4","content":"Field Name\tType\tIn\tDescriptionid\tString\tpath\tExperiment id. "},{"title":"Code Example","type":1,"pageTitle":"Experiment REST API","url":"docs/next/userDocs/api/experiment#code-example-5","content":"shell curl -X DELETE http://127.0.0.1:32080/api/v1/experiment/experiment_1626160071451_0005 Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ \"experimentId\":\"experiment_1626160071451_0005\", \"name\":\"tf-mnist-json\", \"uid\":\"4944c603-0f21-49e5-826a-2ff820bb4d93\", \"status\":\"Deleted\", \"acceptedTime\":null, \"createdTime\":null, \"runningTime\":null, \"finishedTime\":null, \"spec\":{ \"meta\":{ \"name\":\"tf-mnist-json\", \"namespace\":\"default\", \"framework\":\"TensorFlow\", \"cmd\":\"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150\", \"envVars\":{\"ENV_1\":\"ENV1\"} }, \"environment\":{ \"name\":null, \"dockerImage\":null, \"kernelSpec\":null, \"description\":null, \"image\":\"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\":{ \"Ps\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"1024M\",\"cpu\":\"1\"} }, \"Worker\":{ \"replicas\":2, \"resources\":\"cpu\\u003d1,memory\\u003d2048M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"2048M\",\"cpu\":\"1\"} } }, \"code\":null } }, \"attributes\":{} } Copy "},{"title":"List Experiment Log","type":1,"pageTitle":"Experiment REST API","url":"docs/next/userDocs/api/experiment#list-experiment-log","content":"GET /api/v1/experiment/logs Copy "},{"title":"Code Example","type":1,"pageTitle":"Experiment REST API","url":"docs/next/userDocs/api/experiment#code-example-6","content":"shell curl -X GET http://127.0.0.1:32080/api/v1/experiment/logs Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\": [{ \"experimentId\":\"experiment_1626160071451_0001\", \"logContent\": [{ \"podName\":\"newexperiment1-ps-0\", \"podLog\":[] }, { \"podName\":\"newexperiment1-worker-0\", \"podLog\":[] }] }], \"attributes\":{} } Copy "},{"title":"Get Experiment Log","type":1,"pageTitle":"Experiment REST API","url":"docs/next/userDocs/api/experiment#get-experiment-log","content":"GET /api/v1/experiment/logs/{id} Copy "},{"title":"Parameters","type":1,"pageTitle":"Experiment REST API","url":"docs/next/userDocs/api/experiment#parameters-5","content":"Field Name\tType\tIn\tDescriptionid\tString\tpath\tExperiment id. "},{"title":"Code Example","type":1,"pageTitle":"Experiment REST API","url":"docs/next/userDocs/api/experiment#code-example-7","content":"shell curl -X GET http://127.0.0.1:32080/api/v1/experiment/logs/experiment_1626160071451_0001 Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ \"experimentId\":\"experiment_1626160071451_0001\", \"logContent\": [{ \"podName\":\"newexperiment1-ps-0\", \"podLog\":[] }, { \"podName\":\"newexperiment1-worker-0\", \"podLog\":[] }] }, \"attributes\":{} } Copy "},{"title":"Experiment Template REST API","type":0,"sectionRef":"#","url":"docs/next/userDocs/api/experiment-template","content":"","keywords":""},{"title":"Create Experiment Template","type":1,"pageTitle":"Experiment Template REST API","url":"docs/next/userDocs/api/experiment-template#create-experiment-template","content":"POST /api/v1/template Copy "},{"title":"Parameters","type":1,"pageTitle":"Experiment Template REST API","url":"docs/next/userDocs/api/experiment-template#parameters","content":"Field Name\tType\tIn\tDescriptionname\tString\tbody\tExperiment template name. This is required. author\tString\tbody\tAuthor name. description\tString\tbody\tDescription of the experiment template. parameters\tList<ExperimentTemplateParamSpec>\tbody\tParameters of the experiment template. experimentSpec\tExperimentSpec\tbody\tSpec of the experiment template. ExperimentTemplateParamSpec# Field Name\tType\tDescriptionname\tString\tParameter name. required\tBoolean\ttrue / false. Whether the parameter is required. description\tString\tDescription of the parameter. value\tString\tValue of the parameter. ExperimentSpec# Field Name\tType\tDescriptionmeta\tExperimentMeta\tMeta data of the experiment template. environment\tEnvironmentSpec\tEnvironment of the experiment template. spec\tMap<String, ExperimentTaskSpec>\tSpec of pods. code\tCodeSpec\tExperiment codespec. ExperimentMeta# Field Name\tType\tDescriptionname\tString\tExperiment Name. namespace\tString\tExperiment namespace. framework\tString\tExperiment framework. cmd\tString\tCommand. envVars\tMap<String, String>\tEnvironmental variables. EnvironmentSpec# See more details in environment api. ExperimentTaskSpec# Field Name\tType\tDescriptionreplicas\tInteger\tNumbers of replicas. resoureces\tString\tResouces of the task name\tString\tTask name. image\tString\tImage name. cmd\tString\tCommand. envVars\tMap<String, String>\tEnvironmental variables. CodeSpec# Field Name\tType\tDescriptionsyncMode\tString\tsync mode of code spec. url\tString\turl of code spec. "},{"title":"Code Example","type":1,"pageTitle":"Experiment Template REST API","url":"docs/next/userDocs/api/experiment-template#code-example","content":"shell curl -X POST -H \"Content-Type: application/json\" -d ' { \"name\": \"my-tf-mnist-template\", \"author\": \"author\", \"description\": \"This is a template to run tf-mnist\", \"parameters\": [{ \"name\": \"learning_rate\", \"value\": 0.1, \"required\": true, \"description\": \"This is learning_rate of training.\" }, { \"name\": \"batch_size\", \"value\": 150, \"required\": true, \"description\": \"This is batch_size of training.\" }, { \"name\": \"experiment_name\", \"value\": \"tf-mnist1\", \"required\": true, \"description\": \"the name of experiment.\" } ], \"experimentSpec\": { \"meta\": { \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate={{learning_rate}} --batch_size={{batch_size}}\", \"name\": \"{{experiment_name}}\", \"envVars\": { \"ENV1\": \"ENV1\" }, \"framework\": \"TensorFlow\", \"namespace\": \"default\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" } } } ' http://127.0.0.1:32080/api/v1/template Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ \"experimentTemplateId\":{ \"id\":1, \"serverTimestamp\":1626160071451 }, \"experimentTemplateSpec\":{ \"name\":\"my-tf-mnist-template\", \"author\":\"author\", \"description\":\"This is a template to run tf-mnist\", \"parameters\": [{ \"name\":\"learning_rate\", \"required\":\"true\", \"description\":\"This is learning_rate of training.\", \"value\":\"0.1\" }, { \"name\":\"batch_size\", \"required\":\"true\", \"description\":\"This is batch_size of training.\", \"value\":\"150\" }, { \"name\":\"experiment_name\", \"required\":\"true\", \"description\":\"the name of experiment.\", \"value\":\"tf-mnist1\" }, { \"name\":\"spec.Ps.replicas\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Ps.resourceMap.cpu\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Ps.resourceMap.memory\", \"required\":\"false\", \"description\":\"\", \"value\":\"1024M\" }, { \"name\":\"spec.Worker.replicas\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Worker.resourceMap.cpu\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Worker.resourceMap.memory\", \"required\":\"false\", \"description\":\"\",\" value\":\"1024M\" }], \"experimentSpec\":{ \"meta\":{ \"name\":\"{{experiment_name}}\", \"namespace\":\"default\", \"framework\":\"TensorFlow\", \"cmd\":\"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d{{learning_rate}} --batch_size\\u003d{{batch_size}}\", \"envVars\":{\"ENV1\":\"ENV1\"} }, \"environment\":{ \"name\":null, \"dockerImage\":null, \"kernelSpec\":null, \"description\":null, \"image\":\"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\":{ \"Ps\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{ \"memory\":\"1024M\", \"cpu\":\"1\" } }, \"Worker\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{ \"memory\":\"1024M\", \"cpu\":\"1\" } } }, \"code\":null } } }, \"attributes\":{} } Copy "},{"title":"List Experiment Template","type":1,"pageTitle":"Experiment Template REST API","url":"docs/next/userDocs/api/experiment-template#list-experiment-template","content":"GET /api/v1/template Copy "},{"title":"Code Example","type":1,"pageTitle":"Experiment Template REST API","url":"docs/next/userDocs/api/experiment-template#code-example-1","content":"shell curl -X GET http://127.0.0.1:32080/api/v1/template Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ [{ \"experimentTemplateId\":{ \"id\":1, \"serverTimestamp\":1626160071451 }, \"experimentTemplateSpec\":{ \"name\":\"my-tf-mnist-template\", \"author\":\"author\", \"description\":\"This is a template to run tf-mnist\", \"parameters\": [{ \"name\":\"learning_rate\", \"required\":\"true\", \"description\":\"This is learning_rate of training.\", \"value\":\"0.1\" }, { \"name\":\"batch_size\", \"required\":\"true\", \"description\":\"This is batch_size of training.\", \"value\":\"150\" }, { \"name\":\"experiment_name\", \"required\":\"true\", \"description\":\"the name of experiment.\", \"value\":\"tf-mnist1\" }, { \"name\":\"spec.Ps.replicas\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Ps.resourceMap.cpu\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Ps.resourceMap.memory\", \"required\":\"false\", \"description\":\"\", \"value\":\"1024M\" }, { \"name\":\"spec.Worker.replicas\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Worker.resourceMap.cpu\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Worker.resourceMap.memory\", \"required\":\"false\", \"description\":\"\",\" value\":\"1024M\" }], \"experimentSpec\":{ \"meta\":{ \"name\":\"{{experiment_name}}\", \"namespace\":\"default\", \"framework\":\"TensorFlow\", \"cmd\":\"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d{{learning_rate}} --batch_size\\u003d{{batch_size}}\", \"envVars\":{\"ENV1\":\"ENV1\"} }, \"environment\":{ \"name\":null, \"dockerImage\":null, \"kernelSpec\":null, \"description\":null, \"image\":\"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\":{ \"Ps\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{ \"memory\":\"1024M\", \"cpu\":\"1\" } }, \"Worker\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{ \"memory\":\"1024M\", \"cpu\":\"1\" } } }, \"code\":null } } }], \"attributes\":{} } Copy "},{"title":"Patch Experiment Template","type":1,"pageTitle":"Experiment Template REST API","url":"docs/next/userDocs/api/experiment-template#patch-experiment-template","content":"PATCH /api/v1/template{name} Copy "},{"title":"Parameters","type":1,"pageTitle":"Experiment Template REST API","url":"docs/next/userDocs/api/experiment-template#parameters-1","content":"Field Name\tType\tIn\tDescriptionname\tString\tpath and body\tExperiment template name. This is required. author\tString\tbody\tAuthor name. description\tString\tbody\tDescription of the experiment template. parameters\tList<ExperimentTemplateParamSpec>\tbody\tParameters of the experiment template. experimentSpec\tExperimentSpec\tbody\tSpec of the experiment template. "},{"title":"Code Example","type":1,"pageTitle":"Experiment Template REST API","url":"docs/next/userDocs/api/experiment-template#code-example-2","content":"shell curl -X PATCH -H \"Content-Type: application/json\" -d ' { \"name\": \"my-tf-mnist-template\", \"author\": \"author-new\", \"description\": \"This is a template to run tf-mnist\", \"parameters\": [{ \"name\": \"learning_rate\", \"value\": 0.1, \"required\": true, \"description\": \"This is learning_rate of training.\" }, { \"name\": \"batch_size\", \"value\": 150, \"required\": true, \"description\": \"This is batch_size of training.\" }, { \"name\": \"experiment_name\", \"value\": \"tf-mnist1\", \"required\": true, \"description\": \"the name of experiment.\" } ], \"experimentSpec\": { \"meta\": { \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate={{learning_rate}} --batch_size={{batch_size}}\", \"name\": \"{{experiment_name}}\", \"envVars\": { \"ENV1\": \"ENV1\" }, \"framework\": \"TensorFlow\", \"namespace\": \"default\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" } } } ' http://127.0.0.1:32080/api/v1/template/my-tf-mnist-template Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ \"experimentTemplateId\":{ \"id\":2, \"serverTimestamp\":1626160071451 }, \"experimentTemplateSpec\":{ \"name\":\"my-tf-mnist-template\", \"author\":\"author-new\", \"description\":\"This is a template to run tf-mnist\", \"parameters\": [{ \"name\":\"learning_rate\", \"required\":\"true\", \"description\":\"This is learning_rate of training.\", \"value\":\"0.1\" }, { \"name\":\"batch_size\", \"required\":\"true\", \"description\":\"This is batch_size of training.\", \"value\":\"150\" }, { \"name\":\"experiment_name\", \"required\":\"true\", \"description\":\"the name of experiment.\", \"value\":\"tf-mnist1\" }, { \"name\":\"spec.Ps.replicas\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Ps.resourceMap.cpu\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Ps.resourceMap.memory\", \"required\":\"false\", \"description\":\"\", \"value\":\"1024M\" }, { \"name\":\"spec.Worker.replicas\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Worker.resourceMap.cpu\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Worker.resourceMap.memory\", \"required\":\"false\", \"description\":\"\", \"value\":\"1024M\" }], \"experimentSpec\":{ \"meta\":{ \"name\":\"{{experiment_name}}\", \"namespace\":\"default\", \"framework\":\"TensorFlow\", \"cmd\":\"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d{{learning_rate}} --batch_size\\u003d{{batch_size}}\", \"envVars\":{\"ENV1\":\"ENV1\"} }, \"environment\":{ \"name\":null, \"dockerImage\":null, \"kernelSpec\":null, \"description\":null, \"image\":\"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\":{ \"Ps\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"1024M\",\"cpu\":\"1\"} }, \"Worker\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"1024M\",\"cpu\":\"1\"} } }, \"code\":null } } }, \"attributes\":{} } Copy "},{"title":"Delete Experiment Template","type":1,"pageTitle":"Experiment Template REST API","url":"docs/next/userDocs/api/experiment-template#delete-experiment-template","content":"DELETE /api/v1/template{name} Copy "},{"title":"Parameters","type":1,"pageTitle":"Experiment Template REST API","url":"docs/next/userDocs/api/experiment-template#parameters-2","content":"Field Name\tType\tIn\tDescriptionname\tString\tpath\tExperiment template name. This is required. "},{"title":"Code Example","type":1,"pageTitle":"Experiment Template REST API","url":"docs/next/userDocs/api/experiment-template#code-example-3","content":"shell curl -X DELETE http://127.0.0.1:32080/api/v1/template/my-tf-mnist-template Copy reponse { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ \"experimentTemplateId\":{ \"id\":2, \"serverTimestamp\":1626160071451 }, \"experimentTemplateSpec\":{ \"name\":\"my-tf-mnist-template\", \"author\":\"author-new\", \"description\":\"This is a template to run tf-mnist\", \"parameters\": [{ \"name\":\"learning_rate\", \"required\":\"true\", \"description\":\"This is learning_rate of training.\", \"value\":\"0.1\" }, { \"name\":\"batch_size\", \"required\":\"true\", \"description\":\"This is batch_size of training.\", \"value\":\"150\" }, { \"name\":\"experiment_name\", \"required\":\"true\", \"description\":\"the name of experiment.\", \"value\":\"tf-mnist1\" }, { \"name\":\"spec.Ps.replicas\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Ps.resourceMap.cpu\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Ps.resourceMap.memory\", \"required\":\"false\", \"description\":\"\", \"value\":\"1024M\" }, { \"name\":\"spec.Worker.replicas\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Worker.resourceMap.cpu\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Worker.resourceMap.memory\", \"required\":\"false\", \"description\":\"\", \"value\":\"1024M\" }], \"experimentSpec\":{ \"meta\":{ \"name\":\"{{experiment_name}}\", \"namespace\":\"default\", \"framework\":\"TensorFlow\", \"cmd\":\"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d{{learning_rate}} --batch_size\\u003d{{batch_size}}\", \"envVars\":{\"ENV1\":\"ENV1\"} }, \"environment\":{ \"name\":null, \"dockerImage\":null, \"kernelSpec\":null, \"description\":null, \"image\":\"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\":{ \"Ps\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"1024M\",\"cpu\":\"1\"} }, \"Worker\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"1024M\",\"cpu\":\"1\"} } }, \"code\":null } } }, \"attributes\":{} } Copy "},{"title":"Use Template to Create a Experiment","type":1,"pageTitle":"Experiment Template REST API","url":"docs/next/userDocs/api/experiment-template#use-template-to-create-a-experiment","content":"POST /api/v1/experiment/{template_name} Copy "},{"title":"Parameters","type":1,"pageTitle":"Experiment Template REST API","url":"docs/next/userDocs/api/experiment-template#parameters-3","content":"Field Name\tType\tIn\tDescriptiontemplate_name\tString\tpath\tExperiment template name. name\tString\tbody\tExperiment template name. params\tMap<String, String>\tbody\tParameters of the experiment including experiment_name. "},{"title":"Code Example","type":1,"pageTitle":"Experiment Template REST API","url":"docs/next/userDocs/api/experiment-template#code-example-4","content":"shell curl -X POST -H \"Content-Type: application/json\" -d ' { \"name\": \"tf-mnist\", \"params\": { \"learning_rate\":\"0.01\", \"batch_size\":\"150\", \"experiment_name\":\"newexperiment1\" } } ' http://127.0.0.1:32080/api/v1/experiment/my-tf-mnist-template Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ \"experimentId\":\"experiment_1626160071451_0001\", \"name\":\"newexperiment1\", \"uid\":\"b895985c-411c-4e89-90e0-c60a2a8a4235\", \"status\":\"Accepted\", \"acceptedTime\":\"2021-07-13T16:21:31.000+08:00\", \"createdTime\":null, \"runningTime\":null, \"finishedTime\":null, \"spec\":{ \"meta\":{ \"name\":\"newexperiment1\", \"namespace\":\"default\", \"framework\":\"TensorFlow\", \"cmd\":\"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150\", \"envVars\":{\"ENV1\":\"ENV1\"} }, \"environment\":{ \"name\":null, \"dockerImage\":null, \"kernelSpec\":null, \"description\":null, \"image\":\"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\":{ \"Ps\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"1024M\",\"cpu\":\"1\"} }, \"Worker\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"1024M\",\"cpu\":\"1\"} } }, \"code\":null } }, \"attributes\":{} } Copy "},{"title":"MLflow UI","type":0,"sectionRef":"#","url":"docs/next/userDocs/others/mlflow","content":"","keywords":""},{"title":"Usage","type":1,"pageTitle":"MLflow UI","url":"docs/next/userDocs/others/mlflow#usage","content":"MLflow UI shows the tracking result of the experiments. When we use the log_param or log_metric in ModelClient API, we could view the result in MLflow UI. Below is the example of the usage of MLflow UI. "},{"title":"Example","type":1,"pageTitle":"MLflow UI","url":"docs/next/userDocs/others/mlflow#example","content":"Run the following code in the cluster from submarine import ModelsClient import random import time if __name__ == \"__main__\": modelClient = ModelsClient() with modelClient.start() as run: modelClient.log_param(\"learning_rate\", random.random()) for i in range(100): time.sleep(1) modelClient.log_metric(\"mse\", random.random() * 100, i) modelClient.log_metric(\"acc\", random.random(), i) Copy In the MLflow UI page, you can see the log_param and the log_metric result. You can also compare the training between different workers.  "},{"title":"Notebook REST API","type":0,"sectionRef":"#","url":"docs/next/userDocs/api/notebook","content":"","keywords":""},{"title":"Create a Notebook Instance","type":1,"pageTitle":"Notebook REST API","url":"docs/next/userDocs/api/notebook#create-a-notebook-instance","content":"POST /api/v1/notebook Copy "},{"title":"Parameters","type":1,"pageTitle":"Notebook REST API","url":"docs/next/userDocs/api/notebook#parameters","content":"NotebookSpec in request body. NotebookSpec# Field Name\tType\tDescriptionmeta\tNotebookMeta\tMeta data of the notebook. environment\tEnvironmentSpec\tEnvironment of the experiment template. spec\tNotebookPodSpec\tSpec of the notebook pods. NotebookMeta# Field Name\tType\tDescriptionname\tString\tNotebook name. namespace\tString\tNotebook namespace. ownerId\tString\tUser id. EnvironmentSpec# See more details in environment api. NotebookPodSpec# Field Name\tType\tDescriptionenvVars\tMap<String, String>\tEnvironmental variables. resources\tString\tResourecs of the pod. "},{"title":"Code Example","type":1,"pageTitle":"Notebook REST API","url":"docs/next/userDocs/api/notebook#code-example","content":"shell curl -X POST -H \"Content-Type: application/json\" -d ' { \"meta\": { \"name\": \"test-nb\", \"namespace\": \"default\", \"ownerId\": \"e9ca23d68d884d4ebb19d07889727dae\" }, \"environment\": { \"name\": \"notebook-env\" }, \"spec\": { \"envVars\": { \"TEST_ENV\": \"test\" }, \"resources\": \"cpu=1,memory=1.0Gi\" } } ' http://127.0.0.1:32080/api/v1/notebook Copy response: { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":\"Create a notebook instance\", \"result\":{ \"notebookId\":\"notebook_1626160071451_0001\", \"name\":\"test-nb\", \"uid\":\"a56713da-f2a3-40d0-ae2e-45fdc0bb15f5\", \"url\":\"/notebook/default/test-nb/lab\", \"status\":\"creating\", \"reason\":\"The notebook instance is creating\", \"createdTime\":\"2021-07-13T16:23:38.000+08:00\", \"deletedTime\":null, \"spec\":{ \"meta\":{ \"name\":\"test-nb\", \"namespace\":\"default\", \"ownerId\":\"e9ca23d68d884d4ebb19d07889727dae\" }, \"environment\":{ \"name\":\"notebook-env\", \"dockerImage\":\"apache/submarine:jupyter-notebook-0.7.0-SNAPSHOT\", \"kernelSpec\":{ \"name\":\"submarine_jupyter_py3\", \"channels\":[\"defaults\"], \"condaDependencies\":[], \"pipDependencies\":[] }, \"description\":null, \"image\":null }, \"spec\":{ \"envVars\":{\"TEST_ENV\":\"test\"}, \"resources\":\"cpu\\u003d1,memory\\u003d1.0Gi\" } } }, \"attributes\":{} } Copy "},{"title":"List notebook instances which belong to user","type":1,"pageTitle":"Notebook REST API","url":"docs/next/userDocs/api/notebook#list-notebook-instances-which-belong-to-user","content":"GET /api/v1/notebook Copy "},{"title":"Parameters","type":1,"pageTitle":"Notebook REST API","url":"docs/next/userDocs/api/notebook#parameters-1","content":"Field Name\tType\tIn\tDescriptionid\tString\tquery\tUser id. "},{"title":"Code Example","type":1,"pageTitle":"Notebook REST API","url":"docs/next/userDocs/api/notebook#code-example-1","content":"shell curl -X GET http://127.0.0.1:32080/api/v1/notebook?id=e9ca23d68d884d4ebb19d07889727dae Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":\"List all notebook instances\", \"result\": [{ \"notebookId\":\"notebook_1626160071451_0001\", \"name\":\"test-nb\", \"uid\":\"a56713da-f2a3-40d0-ae2e-45fdc0bb15f5\", \"url\":\"/notebook/default/test-nb/lab\", \"status\":\"waiting\", \"reason\":\"ContainerCreating\", \"createdTime\":\"2021-07-13T16:23:38.000+08:00\", \"deletedTime\":null, \"spec\":{ \"meta\":{ \"name\":\"test-nb\", \"namespace\":\"default\", \"ownerId\":\"e9ca23d68d884d4ebb19d07889727dae\" }, \"environment\":{ \"name\":\"notebook-env\", \"dockerImage\":\"apache/submarine:jupyter-notebook-0.7.0-SNAPSHOT\", \"kernelSpec\":{ \"name\":\"submarine_jupyter_py3\", \"channels\":[\"defaults\"], \"condaDependencies\":[], \"pipDependencies\":[] }, \"description\":null, \"image\":null }, \"spec\":{ \"envVars\":{\"TEST_ENV\":\"test\"}, \"resources\":\"cpu\\u003d1,memory\\u003d1.0Gi\" } } }], \"attributes\":{} } Copy "},{"title":"Get the notebook instance","type":1,"pageTitle":"Notebook REST API","url":"docs/next/userDocs/api/notebook#get-the-notebook-instance","content":"GET /api/v1/notebook/{id} Copy "},{"title":"Parameters","type":1,"pageTitle":"Notebook REST API","url":"docs/next/userDocs/api/notebook#parameters-2","content":"Field Name\tType\tIn\tDescriptionid\tString\tpath\tNotebook id. "},{"title":"Code Example","type":1,"pageTitle":"Notebook REST API","url":"docs/next/userDocs/api/notebook#code-example-2","content":"shell curl -X GET http://127.0.0.1:32080/api/v1/notebook/notebook_1626160071451_0001 Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":\"Get the notebook instance\", \"result\":{ \"notebookId\":\"notebook_1626160071451_0001\", \"name\":\"test-nb\", \"uid\":\"a56713da-f2a3-40d0-ae2e-45fdc0bb15f5\", \"url\":\"/notebook/default/test-nb/lab\", \"status\":\"waiting\", \"reason\":\"ContainerCreating\", \"createdTime\":\"2021-07-13T16:23:38.000+08:00\", \"deletedTime\":null, \"spec\":{ \"meta\":{ \"name\":\"test-nb\", \"namespace\":\"default\", \"ownerId\":\"e9ca23d68d884d4ebb19d07889727dae\" }, \"environment\":{ \"name\":\"notebook-env\", \"dockerImage\":\"apache/submarine:jupyter-notebook-0.7.0-SNAPSHOT\", \"kernelSpec\":{ \"name\":\"submarine_jupyter_py3\", \"channels\":[\"defaults\"], \"condaDependencies\":[], \"pipDependencies\":[] }, \"description\":null, \"image\":null }, \"spec\":{ \"envVars\":{\"TEST_ENV\":\"test\"}, \"resources\":\"cpu\\u003d1,memory\\u003d1.0Gi\" } } }, \"attributes\":{} } Copy "},{"title":"Delete the notebook instance","type":1,"pageTitle":"Notebook REST API","url":"docs/next/userDocs/api/notebook#delete-the-notebook-instance","content":"DELETE /api/v1/notebook/{id} Copy "},{"title":"Parameters","type":1,"pageTitle":"Notebook REST API","url":"docs/next/userDocs/api/notebook#parameters-3","content":"Field Name\tType\tIn\tDescriptionid\tString\tpath\tNotebook id. "},{"title":"Code Example","type":1,"pageTitle":"Notebook REST API","url":"docs/next/userDocs/api/notebook#code-example-3","content":"shell curl -X DELETE http://127.0.0.1:32080/api/v1/notebook/notebook_1626160071451_0001 Copy response: { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":\"Delete the notebook instance\", \"result\":{ \"notebookId\":\"notebook_1626160071451_0001\", \"name\":\"test-nb\", \"uid\":\"a56713da-f2a3-40d0-ae2e-45fdc0bb15f5\", \"url\":\"/notebook/default/test-nb/lab\", \"status\":\"terminating\", \"reason\":\"The notebook instance is terminating\", \"createdTime\":\"2021-07-13T16:23:38.000+08:00\", \"deletedTime\":null, \"spec\":{ \"meta\":{ \"name\":\"test-nb\", \"namespace\":\"default\", \"ownerId\":\"e9ca23d68d884d4ebb19d07889727dae\" }, \"environment\":{ \"name\":\"notebook-env\", \"dockerImage\":\"apache/submarine:jupyter-notebook-0.7.0-SNAPSHOT\", \"kernelSpec\":{ \"name\":\"submarine_jupyter_py3\", \"channels\":[\"defaults\"], \"condaDependencies\":[], \"pipDependencies\":[] }, \"description\":null, \"image\":null }, \"spec\":{ \"envVars\":{\"TEST_ENV\":\"test\"}, \"resources\":\"cpu\\u003d1,memory\\u003d1.0Gi\" } } }, \"attributes\":{} } Copy "},{"title":"Tensorboard","type":0,"sectionRef":"#","url":"docs/next/userDocs/others/tensorboard","content":"","keywords":""},{"title":"Write to LogDirs by the environment variable","type":1,"pageTitle":"Tensorboard","url":"docs/next/userDocs/others/tensorboard#write-to-logdirs-by-the-environment-variable","content":""},{"title":"Environment variable","type":1,"pageTitle":"Tensorboard","url":"docs/next/userDocs/others/tensorboard#environment-variable","content":"SUBMARINE_TENSORBOARD_LOG_DIR: Exist in every experiment container. You just need to direct your logs to $(SUBMARINE_TENSORBOARD_LOG_DIR) (NOTICE: it is () not {}), and you can inspect the process on the tensorboard webpage. "},{"title":"Example","type":1,"pageTitle":"Tensorboard","url":"docs/next/userDocs/others/tensorboard#example","content":"{ \"meta\": { \"name\": \"tensorflow-tensorboard-dist-mnist\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=$(SUBMARINE_TENSORBOARD_LOG_DIR) --learning_rate=0.01 --batch_size=20\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\": { \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=512M\" } } } Copy "},{"title":"Connect to the tensorboard webpage","type":1,"pageTitle":"Tensorboard","url":"docs/next/userDocs/others/tensorboard#connect-to-the-tensorboard-webpage","content":"Open the experiment page in the workbench, and Click the TensorBoard button.  Inspect the process on tensorboard page.  "},{"title":"Experiment Client","type":0,"sectionRef":"#","url":"docs/next/userDocs/submarine-sdk/experiment-client","content":"","keywords":""},{"title":"class ExperimentClient()","type":1,"pageTitle":"Experiment Client","url":"docs/next/userDocs/submarine-sdk/experiment-client#class-experimentclient","content":"Client of a submarine server that creates and manages experients and logs. "},{"title":"create_experiment(experiment_spec: json) -> dict","type":1,"pageTitle":"Experiment Client","url":"docs/next/userDocs/submarine-sdk/experiment-client#create_experimentexperiment_spec-json---dict","content":"Create an experiment. Parameters experiment_spec: Submarine experiment spec. More detailed information can be found at Experiment API. Returns: The detailed info about the submarine experiment. Example from submarine import * client = ExperimentClient() client.create_experiment({ \"meta\": { \"name\": \"tf-mnist-json\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" } } }) Copy "},{"title":"patch_experiment(id: str, experiment_spec: json) -> dict","type":1,"pageTitle":"Experiment Client","url":"docs/next/userDocs/submarine-sdk/experiment-client#patch_experimentid-str-experiment_spec-json---dict","content":"Patch an experiment. Parameters id: Submarine experiment id. experiment_spec: Submarine experiment spec. More detailed information can be found at Experiment API. Returns The detailed info about the submarine experiment. Example client.patch_experiment(\"experiment_1626160071451_0008\", { \"meta\": { \"name\": \"tf-mnist-json\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\": { \"Worker\": { \"replicas\": 2, \"resources\": \"cpu=1,memory=1024M\" } } }) Copy "},{"title":"get_experiment(id: str) -> dict","type":1,"pageTitle":"Experiment Client","url":"docs/next/userDocs/submarine-sdk/experiment-client#get_experimentid-str---dict","content":"Get the experiment's detailed info by id. Parameters id: Submarine experiment id. Returns The detailed info about the submarine experiment. Example experiment = client.get_experiment(\"experiment_1626160071451_0008\") Copy "},{"title":"list_experiments(status: Optional[str]=None) -> list[dict]","type":1,"pageTitle":"Experiment Client","url":"docs/next/userDocs/submarine-sdk/experiment-client#list_experimentsstatus-optionalstrnone---listdict","content":"List all experiment for the user. Parameters status: Accepted, Created, Running, Succeeded, Deleted. Returns List of submarine experiments. Example experiments = client.list_experiments() Copy "},{"title":"delete_experiment(id: str) -> dict","type":1,"pageTitle":"Experiment Client","url":"docs/next/userDocs/submarine-sdk/experiment-client#delete_experimentid-str---dict","content":"Delete the submarine experiment. Parameters id: Submarine experiment id. Returns The detailed info about the deleted submarine experiment. Example client.delete_experiment(\"experiment_1626160071451_0008\") Copy "},{"title":"get_log(id: str, onlyMaster: Optional[bool]=False) -> None","type":1,"pageTitle":"Experiment Client","url":"docs/next/userDocs/submarine-sdk/experiment-client#get_logid-str-onlymaster-optionalboolfalse---none","content":"Print training logs of all pod of the experiment. By default print all the logs of Pod. Parameters id: Submarine experiment id.onlyMaster: By default include pod log of \"master\" which might be Tensorflow PS/Chief or PyTorch master. Return The info of pod logs Example client.get_log(\"experiment_1626160071451_0009\") Copy "},{"title":"list_log(status: str) -> list[dict]","type":1,"pageTitle":"Experiment Client","url":"docs/next/userDocs/submarine-sdk/experiment-client#list_logstatus-str---listdict","content":"List experiment log. Parameters status: Accepted, Created, Running, Succeeded, Deleted. Returns List of submarine experiment logs. Example logs = client.list_log(\"Succeeded\") Copy "},{"title":"wait_for_finish(id: str, polling_interval: Optional[int]=10) -> dict","type":1,"pageTitle":"Experiment Client","url":"docs/next/userDocs/submarine-sdk/experiment-client#wait_for_finishid-str-polling_interval-optionalint10---dict","content":"Waits until the experiment is finished or failed. Parameters id: Submarine experiment id.polling_interval: How many seconds between two polls for the status of the experiment. Returns Submarine experiment logs. Example logs = client.wait_for_finish(\"experiment_1626160071451_0009\", 5) Copy "},{"title":"Submarine-SDK","type":0,"sectionRef":"#","url":"docs/next/userDocs/submarine-sdk/README","content":"","keywords":""},{"title":"Summary","type":1,"pageTitle":"Submarine-SDK","url":"docs/next/userDocs/submarine-sdk/README#summary","content":"Support Python, Scala, R language for algorithm development Support tracking/metrics APIs which allows developers add tracking/metrics and view tracking/metrics from Submarine Workbench UI. "},{"title":"Python SDK Development","type":0,"sectionRef":"#","url":"docs/next/userDocs/submarine-sdk/pysubmarine/development","content":"","keywords":""},{"title":"Prerequisites","type":1,"pageTitle":"Python SDK Development","url":"docs/next/userDocs/submarine-sdk/pysubmarine/development#prerequisites","content":"This is required for developing & testing changes, we recommend installing pysubmarine in its own conda environment by running the following conda create --name submarine-dev python=3.6 conda activate submarine-dev # Install auto-format and lints from current checkout pip install -r ./dev-support/style-check/python/lint-requirements.txt # Install mypy from current checkout pip install -r ./dev-support/style-check/python/mypy-requirements.txt # test-requirements.txt from current checkout pip install -r ./submarine-sdk/pysubmarine/github-actions/test-requirements.txt # Installs pysubmarine from current checkout pip install -e ./submarine-sdk/pysubmarine Copy "},{"title":"PySubmarine Docker","type":1,"pageTitle":"Python SDK Development","url":"docs/next/userDocs/submarine-sdk/pysubmarine/development#pysubmarine-docker","content":"We also use docker to provide build environments for CI, development, generate python sdk from swagger. ./run-pysubmarine-ci.sh Copy The script does the following things: Start an interactive bash sessionMount submarine directory to /workspace and set it as homeSwitch user to be the same user that calls the run-pysubmarine-ci.sh "},{"title":"Coding Style","type":1,"pageTitle":"Python SDK Development","url":"docs/next/userDocs/submarine-sdk/pysubmarine/development#coding-style","content":"Use isort to sort the Python imports and black to format Python codeBoth style is configured in pyproject.tomlTo autoformat code ./dev-support/style-check/python/auto-format.sh Copy Use flake8 to verify the linter, its' configure is in .flake8.Also, we are using mypy to check the static type in submarine-sdk/pysubmarine/submarine.Verify linter pass before submitting a pull request by running: ./dev-support/style-check/python/lint.sh Copy If you encouter a unexpected format, use the following method # fmt: off \"Unexpected format, formated by yourself\" # fmt: on Copy "},{"title":"Unit Testing","type":1,"pageTitle":"Python SDK Development","url":"docs/next/userDocs/submarine-sdk/pysubmarine/development#unit-testing","content":"We are using pytest to develop our unit test suite. After building the project (see below) you can run its unit tests like so: cd submarine-sdk/pysubmarine Copy Run unit test pytest --cov=submarine -vs -m \"not e2e\" Copy Run integration test pytest --cov=submarine -vs -m \"e2e\" Copy Before run this command in local, you should make sure the submarine server is running. "},{"title":"Generate python SDK from swagger","type":1,"pageTitle":"Python SDK Development","url":"docs/next/userDocs/submarine-sdk/pysubmarine/development#generate-python-sdk-from-swagger","content":"We use open-api generatorto generate pysubmarine client API that used to communicate with submarine server. To generate different API Component, please change the code in Bootstrap.java. If just updating java code for NotebookRestApi , ExperimentRestApi or EnvironmentRestApi, please skip step 1. SwaggerConfiguration oasConfig = new SwaggerConfiguration() .openAPI(oas) .resourcePackages(Stream.of(\"org.apache.submarine.server.rest\") .collect(Collectors.toSet())) .resourceClasses(Stream.of(\"org.apache.submarine.server.rest.NotebookRestApi\", \"org.apache.submarine.server.rest.ExperimentRestApi\", \"org.apache.submarine.server.rest.EnvironmentRestApi\") .collect(Collectors.toSet())); Copy After starting the server, http://localhost:8080/v1/openapi.json will includes API specs for NotebookRestApi, ExperimentRestApi and EnvironmentRestApi swagger_config.json defines the import path for python SDK Ex: For submarine.client { \"packageName\" : \"submarine.client\", \"projectName\" : \"submarine.client\", \"packageVersion\": \"0.7.0-SNAPSHOT\" } Copy Usage: import submarine.client... Execute ./dev-support/pysubmarine/gen-sdk.sh to generate latest version of SDK. Notice: Please install required package before running the script: lint-requirements.txt In submarine/submarine-sdk/pysubmarine/client/api_client.py line 74 Please change \"long\": int if six.PY3 else long, # noqa: F821 Copy to \"long\": int, Copy "},{"title":"Model Management Model Development","type":1,"pageTitle":"Python SDK Development","url":"docs/next/userDocs/submarine-sdk/pysubmarine/development#model-management-model-development","content":"For local development, we can access cluster's service easily thanks to telepresence. To elaborate, we can develop the sdk in local but can reach out to database and minio server by proxy. Install telepresence follow the instruction.Start proxy pod telepresence --new-deployment submarine-dev Copy You can develop as if in the cluster. "},{"title":"Upload package to PyPi","type":1,"pageTitle":"Python SDK Development","url":"docs/next/userDocs/submarine-sdk/pysubmarine/development#upload-package-to-pypi","content":"For Apache Submarine committer and PMCs to do a new release. Change the version from 0.x.x-SNAPSHOT to 0.x.x in setup.pyInstall Python packages cd submarine-sdk/pysubmarine pip install -r github-actions/pypi-requirements.txt Copy Compiling Your Package It will create build, dist, and project.egg.infoin your local directory python setup.py bdist_wheel Copy Upload python package to TestPyPI for testing python -m twine upload --repository testpypi dist/* Copy Upload python package to PyPi python -m twine upload --repository-url https://upload.pypi.org/legacy/ dist/* Copy "},{"title":"Tracking","type":0,"sectionRef":"#","url":"docs/next/userDocs/submarine-sdk/tracking","content":"","keywords":""},{"title":"Functions","type":1,"pageTitle":"Tracking","url":"docs/next/userDocs/submarine-sdk/tracking#functions","content":""},{"title":"submarine.get_tracking_uri() -> str","type":1,"pageTitle":"Tracking","url":"docs/next/userDocs/submarine-sdk/tracking#submarineget_tracking_uri---str","content":"Get the tracking URI. If none has been specified, check the environmental variables. If uri is still none, return the default submarine jdbc url. Returns The tracking URI. "},{"title":"submarine.set_tracking_uri(uri: str) -> None","type":1,"pageTitle":"Tracking","url":"docs/next/userDocs/submarine-sdk/tracking#submarineset_tracking_uriuri-str---none","content":"set the tracking URI. You can also set the SUBMARINE_TRACKING_URI environment variable to have Submarine find a URI from there. The URI should be database connection string. Parameters uri - Submarine record data to Mysql server. The database URL is expected in the format <dialect>+<driver>://<username>:<password>@<host>:<port>/<database>. By default it's mysql+pymysql://submarine:password@submarine-database:3306/submarine. More detail : SQLAlchemy docs "},{"title":"submarine.log_param(key: str, value: str) -> None","type":1,"pageTitle":"Tracking","url":"docs/next/userDocs/submarine-sdk/tracking#submarinelog_paramkey-str-value-str---none","content":"log a single key-value parameter. The key and value are both strings. Parameters key - Parameter name.value - Parameter value. "},{"title":"submarine.log_metric(key: str, value: float, step=0) -> None","type":1,"pageTitle":"Tracking","url":"docs/next/userDocs/submarine-sdk/tracking#submarinelog_metrickey-str-value-float-step0---none","content":"log a single key-value metric. The value must always be a number. Parameters key - Metric name.value - Metric value.step - A single integer step at which to log the specified Metrics, by default it's 0. "},{"title":"submarine.save_model(model_type: str, model, artifact_path: str, registered_model_name: str = None, input_dim: list = None, output_dim: list = None,) -> None","type":1,"pageTitle":"Tracking","url":"docs/next/userDocs/submarine-sdk/tracking#submarinesave_modelmodel_type-str-model-artifact_path-str-registered_model_name-str--none-input_dim-list--none-output_dim-list--none---none","content":"Save a model into the minio pod. Parameters model_type - The type of model. Only support pytorch and tensorflow.model - Model artifact.artifact_path - Model name.registered_model_name - If it is not None, the model will be registered into the model registry with this name.input_dim - The input dimension of the model.output_dim - The output dimension of the model. "},{"title":"Submarine CLI","type":0,"sectionRef":"#","url":"docs/next/userDocs/submarine-sdk/submarine-cli","content":"","keywords":""},{"title":"Config","type":1,"pageTitle":"Submarine CLI","url":"docs/next/userDocs/submarine-sdk/submarine-cli#config","content":"You can set your CLI settings by this command "},{"title":"Init","type":1,"pageTitle":"Submarine CLI","url":"docs/next/userDocs/submarine-sdk/submarine-cli#init","content":"submarine config init Copy Return Submarine CLI Config initialized Copy Restore CLI config to default (hostname=localhost,port=32080) "},{"title":"Show current config","type":1,"pageTitle":"Submarine CLI","url":"docs/next/userDocs/submarine-sdk/submarine-cli#show-current-config","content":"submarine config list Copy For example : return ╭──────────────────── SubmarineCliConfig ─────────────────────╮ │ { │ │ \"connection\": { │ │ \"hostname\": \"localhost\", │ │ \"port\": 32080 │ │ } │ │ } │ ╰─────────────────────────────────────────────────────────────╯ Copy "},{"title":"Set config","type":1,"pageTitle":"Submarine CLI","url":"docs/next/userDocs/submarine-sdk/submarine-cli#set-config","content":"submarine config set <parameter_path> <value> Copy For example, Set connection port to 8080: submarine config set connection.port 8080 Copy "},{"title":"Get config","type":1,"pageTitle":"Submarine CLI","url":"docs/next/userDocs/submarine-sdk/submarine-cli#get-config","content":"submarine config get <parameter_path> Copy For example, submarine config get connection.port Copy Return connection.port=8080 Copy "},{"title":"Notebooks","type":1,"pageTitle":"Submarine CLI","url":"docs/next/userDocs/submarine-sdk/submarine-cli#notebooks","content":""},{"title":"List Notebooks","type":1,"pageTitle":"Submarine CLI","url":"docs/next/userDocs/submarine-sdk/submarine-cli#list-notebooks","content":"submarine list notebook Copy "},{"title":"Get Notebooks","type":1,"pageTitle":"Submarine CLI","url":"docs/next/userDocs/submarine-sdk/submarine-cli#get-notebooks","content":"submarine get notebook <notebook id> Copy you can get notebook id by using list command "},{"title":"Delete Notebooks","type":1,"pageTitle":"Submarine CLI","url":"docs/next/userDocs/submarine-sdk/submarine-cli#delete-notebooks","content":"submarine delete notebook <notebook id> Copy "},{"title":"Experiments","type":1,"pageTitle":"Submarine CLI","url":"docs/next/userDocs/submarine-sdk/submarine-cli#experiments","content":""},{"title":"List Experiments","type":1,"pageTitle":"Submarine CLI","url":"docs/next/userDocs/submarine-sdk/submarine-cli#list-experiments","content":"submarine list experiment Copy "},{"title":"Get Experiment","type":1,"pageTitle":"Submarine CLI","url":"docs/next/userDocs/submarine-sdk/submarine-cli#get-experiment","content":"submarine get experiment <experiment id> Copy you can get experiment id by using list command "},{"title":"Delete Experiment","type":1,"pageTitle":"Submarine CLI","url":"docs/next/userDocs/submarine-sdk/submarine-cli#delete-experiment","content":"submarine delete experiment <experiment id> [--wait/--no-wait] Copy --wait/--no-wait: blocking or non blocking (default no wait) "},{"title":"Environments","type":1,"pageTitle":"Submarine CLI","url":"docs/next/userDocs/submarine-sdk/submarine-cli#environments","content":""},{"title":"List Environments","type":1,"pageTitle":"Submarine CLI","url":"docs/next/userDocs/submarine-sdk/submarine-cli#list-environments","content":"submarine list environment Copy "},{"title":"Get Environments","type":1,"pageTitle":"Submarine CLI","url":"docs/next/userDocs/submarine-sdk/submarine-cli#get-environments","content":"submarine get environment <environment name> Copy "},{"title":"Delete Environments","type":1,"pageTitle":"Submarine CLI","url":"docs/next/userDocs/submarine-sdk/submarine-cli#delete-environments","content":"submarine delete experiment <environment name> Copy "},{"title":"Write Dockerfiles for Submarine","type":0,"sectionRef":"#","url":"docs/next/userDocs/yarn/Dockerfiles","content":"How to write Dockerfile for Submarine TensorFlow jobs How to write Dockerfile for Submarine PyTorch jobs How to write Dockerfile for Submarine MXNet jobs","keywords":""},{"title":"Test and Troubleshooting","type":0,"sectionRef":"#","url":"docs/next/userDocs/yarn/TestAndTroubleshooting","content":"","keywords":""},{"title":"Test with a tensorflow job","type":1,"pageTitle":"Test and Troubleshooting","url":"docs/next/userDocs/yarn/TestAndTroubleshooting#test-with-a-tensorflow-job","content":"Distributed-shell + GPU + cgroup  ... \\ job run \\ --env DOCKER_JAVA_HOME=/opt/java \\ --env DOCKER_HADOOP_HDFS_HOME=/hadoop-current --name distributed-tf-gpu \\ --env YARN_CONTAINER_RUNTIME_DOCKER_CONTAINER_NETWORK=calico-network \\ --worker_docker_image tf-1.13.1-gpu:0.0.1 \\ --ps_docker_image tf-1.13.1-cpu:0.0.1 \\ --input_path hdfs://${dfs_name_service}/tmp/cifar-10-data \\ --checkpoint_path hdfs://${dfs_name_service}/user/hadoop/tf-distributed-checkpoint \\ --num_ps 0 \\ --ps_resources memory=4G,vcores=2,gpu=0 \\ --ps_launch_cmd \"python /test/cifar10_estimator/cifar10_main.py --data-dir=hdfs://${dfs_name_service}/tmp/cifar-10-data --job-dir=hdfs://${dfs_name_service}/tmp/cifar-10-jobdir --num-gpus=0\" \\ --worker_resources memory=4G,vcores=2,gpu=1 --verbose \\ --num_workers 1 \\ --worker_launch_cmd \"python /test/cifar10_estimator/cifar10_main.py --data-dir=hdfs://${dfs_name_service}/tmp/cifar-10-data --job-dir=hdfs://${dfs_name_service}/tmp/cifar-10-jobdir --train-steps=500 --eval-batch-size=16 --train-batch-size=16 --sync --num-gpus=1\" Copy "},{"title":"Issues:","type":1,"pageTitle":"Test and Troubleshooting","url":"docs/next/userDocs/yarn/TestAndTroubleshooting#issues","content":""},{"title":"Issue 1: Fail to start nodemanager after system reboot","type":1,"pageTitle":"Test and Troubleshooting","url":"docs/next/userDocs/yarn/TestAndTroubleshooting#issue-1-fail-to-start-nodemanager-after-system-reboot","content":"2018-09-20 18:54:39,785 ERROR org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor: Failed to bootstrap configured resource subsystems! org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.ResourceHandlerException: Unexpected: Cannot create yarn cgroup Subsystem:cpu Mount points:/proc/mounts User:yarn Path:/sys/fs/cgroup/cpu,cpuacct/hadoop-yarn at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsHandlerImpl.initializePreMountedCGroupController(CGroupsHandlerImpl.java:425) at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsHandlerImpl.initializeCGroupController(CGroupsHandlerImpl.java:377) at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsCpuResourceHandlerImpl.bootstrap(CGroupsCpuResourceHandlerImpl.java:98) at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsCpuResourceHandlerImpl.bootstrap(CGroupsCpuResourceHandlerImpl.java:87) at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.ResourceHandlerChain.bootstrap(ResourceHandlerChain.java:58) at org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor.init(LinuxContainerExecutor.java:320) at org.apache.hadoop.yarn.server.nodemanager.NodeManager.serviceInit(NodeManager.java:389) at org.apache.hadoop.service.AbstractService.init(AbstractService.java:164) at org.apache.hadoop.yarn.server.nodemanager.NodeManager.initAndStartNodeManager(NodeManager.java:929) at org.apache.hadoop.yarn.server.nodemanager.NodeManager.main(NodeManager.java:997) 2018-09-20 18:54:39,789 INFO org.apache.hadoop.service.AbstractService: Service NodeManager failed in state INITED Copy Solution: Grant user yarn the access to /sys/fs/cgroup/cpu,cpuacct, which is the subfolder of cgroup mount destination. chown :yarn -R /sys/fs/cgroup/cpu,cpuacct chmod g+rwx -R /sys/fs/cgroup/cpu,cpuacct Copy If GPUs are used,the access to cgroup devices folder is neede as well chown :yarn -R /sys/fs/cgroup/devices chmod g+rwx -R /sys/fs/cgroup/devices Copy "},{"title":"Issue 2: container-executor permission denied","type":1,"pageTitle":"Test and Troubleshooting","url":"docs/next/userDocs/yarn/TestAndTroubleshooting#issue-2-container-executor-permission-denied","content":"2018-09-21 09:36:26,102 WARN org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.privileged.PrivilegedOperationExecutor: IOException executing command: java.io.IOException: Cannot run program \"/etc/yarn/sbin/Linux-amd64-64/container-executor\": error=13, Permission denied at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048) at org.apache.hadoop.util.Shell.runCommand(Shell.java:938) at org.apache.hadoop.util.Shell.run(Shell.java:901) at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:1213) Copy Solution: The permission of /etc/yarn/sbin/Linux-amd64-64/container-executor should be 6050 "},{"title":"Issue 3:How to get docker service log","type":1,"pageTitle":"Test and Troubleshooting","url":"docs/next/userDocs/yarn/TestAndTroubleshooting#issue-3:how-to-get-docker-service-log","content":"Solution: we can get docker log with the following command journalctl -u docker Copy "},{"title":"Issue 4:docker can't remove containers with errors like device or resource busy","type":1,"pageTitle":"Test and Troubleshooting","url":"docs/next/userDocs/yarn/TestAndTroubleshooting#issue-4:docker-cant-remove-containers-with-errors-like-device-or-resource-busy","content":"$ docker rm 0bfafa146431 Error response from daemon: Unable to remove filesystem for 0bfafa146431771f6024dcb9775ef47f170edb2f1852f71916ba44209ca6120a: remove /app/docker/containers/0bfafa146431771f6024dcb9775ef47f170edb2f152f71916ba44209ca6120a/shm: device or resource busy Copy Solution: to find which process leads to a device or resource busy, we can add a shell script, named find-busy-mnt.sh #!/usr/bin/env bash # A simple script to get information about mount points and pids and their # mount namespaces. if [ $# -ne 1 ];then echo \"Usage: $0 <devicemapper-device-id>\" exit 1 fi ID=$1 MOUNTS=`find /proc/*/mounts | xargs grep $ID 2>/dev/null` [ -z \"$MOUNTS\" ] && echo \"No pids found\" && exit 0 printf \"PID\\tNAME\\t\\tMNTNS\\n\" echo \"$MOUNTS\" | while read LINE; do PID=`echo $LINE | cut -d \":\" -f1 | cut -d \"/\" -f3` # Ignore self and thread-self if [ \"$PID\" == \"self\" ] || [ \"$PID\" == \"thread-self\" ]; then continue fi NAME=`ps -q $PID -o comm=` MNTNS=`readlink /proc/$PID/ns/mnt` printf \"%s\\t%s\\t\\t%s\\n\" \"$PID\" \"$NAME\" \"$MNTNS\" done Copy Kill the process by pid, which is found by the script $ chmod +x find-busy-mnt.sh ./find-busy-mnt.sh 0bfafa146431771f6024dcb9775ef47f170edb2f152f71916ba44209ca6120a # PID NAME MNTNS # 5007 ntpd mnt:[4026533598] $ kill -9 5007 Copy "},{"title":"Issue 5:Yarn failed to start containers","type":1,"pageTitle":"Test and Troubleshooting","url":"docs/next/userDocs/yarn/TestAndTroubleshooting#issue-5:yarn-failed-to-start-containers","content":"if the number of GPUs required by applications is larger than the number of GPUs in the cluster, there would be some containers can't be created. "},{"title":"Docker Images for MXNet","type":0,"sectionRef":"#","url":"docs/next/userDocs/yarn/WriteDockerfileMX","content":"","keywords":""},{"title":"How to create docker images to run MXNet on YARN","type":1,"pageTitle":"Docker Images for MXNet","url":"docs/next/userDocs/yarn/WriteDockerfileMX#how-to-create-docker-images-to-run-mxnet-on-yarn","content":"Dockerfile to run MXNet on YARN needs two parts: Base libraries which MXNet depends on 1) OS base image, for example ubuntu:18.04 2) MXNet dependent libraries and packages. \\ For example python, scipy. For GPU support, you also need cuda, cudnn, etc. 3) MXNet package. Libraries to access HDFS 1) JDK 2) Hadoop Here's an example of a base image (without GPU support) to install MXNet: FROM ubuntu:18.04 # Install some development tools and packages # MXNet 1.6 is going to be the last MXNet release to support Python2 RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y tzdata git \\ wget zip python3 python3-pip python3-distutils libgomp1 libopenblas-dev libopencv-dev # Install latest MXNet using pip (without GPU support) RUN pip3 install mxnet RUN echo \"Install python related packages\" && \\ pip3 install --user graphviz==0.8.4 ipykernel jupyter matplotlib numpy pandas scipy sklearn && \\ python3 -m ipykernel.kernelspec Copy On top of above image, add files, install packages to access HDFS ENV JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 RUN apt-get update && apt-get install -y openjdk-8-jdk wget # Install hadoop ENV HADOOP_VERSION=\"3.1.2\" RUN wget https://archive.apache.org/dist/hadoop/common/hadoop-${HADOOP_VERSION}/hadoop-${HADOOP_VERSION}.tar.gz # If you are in mainland China, you can use the following command. # RUN wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-${HADOOP_VERSION}/hadoop-${HADOOP_VERSION}.tar.gz RUN tar zxf hadoop-${HADOOP_VERSION}.tar.gz RUN ln -s hadoop-${HADOOP_VERSION} hadoop-current RUN rm hadoop-${HADOOP_VERSION}.tar.gz Copy Build and push to your own docker registry: Use docker build ... and docker push ... to finish this step. "},{"title":"Use examples to build your own MXNet docker images","type":1,"pageTitle":"Docker Images for MXNet","url":"docs/next/userDocs/yarn/WriteDockerfileMX#use-examples-to-build-your-own-mxnet-docker-images","content":"We provided some example Dockerfiles for you to build your own MXNet docker images. For latest MXNet docker/mxnet/base/ubuntu-18.04/Dockerfile.cpu.mxnet_latest: Latest MXNet that supports CPUdocker/mxnet/base/ubuntu-18.04/Dockerfile.gpu.mxnet_latest: Latest MXNet that supports GPU, which is prebuilt to CUDA10. Build Docker images# "},{"title":"Manually build Docker image:","type":1,"pageTitle":"Docker Images for MXNet","url":"docs/next/userDocs/yarn/WriteDockerfileMX#manually-build-docker-image","content":"Under docker/mxnet directory, run build-all.sh to build all Docker images. This command will build the following Docker images: mxnet-latest-cpu-base:0.0.1 for base Docker image which includes Hadoop, MXNetmxnet-latest-gpu-base:0.0.1 for base Docker image which includes Hadoop, MXNet, GPU base libraries. "},{"title":"Docker Images for PyTorch","type":0,"sectionRef":"#","url":"docs/next/userDocs/yarn/WriteDockerfilePT","content":"","keywords":""},{"title":"How to create docker images to run PyTorch on YARN","type":1,"pageTitle":"Docker Images for PyTorch","url":"docs/next/userDocs/yarn/WriteDockerfilePT#how-to-create-docker-images-to-run-pytorch-on-yarn","content":"Dockerfile to run PyTorch on YARN needs two parts: Base libraries which PyTorch depends on 1) OS base image, for example ubuntu:18.04 2) PyTorch dependent libraries and packages. For example python, scipy. For GPU support, you also need cuda, cudnn, etc. 3) PyTorch package. Libraries to access HDFS 1) JDK 2) Hadoop Here's an example of a base image (with GPU support) to install PyTorch: FROM nvidia/cuda:10.0-cudnn7-devel-ubuntu18.04 ARG PYTHON_VERSION=3.6 RUN apt-get update && apt-get install -y --no-install-recommends \\ build-essential \\ cmake \\ git \\ curl \\ vim \\ ca-certificates \\ libjpeg-dev \\ libpng-dev \\ wget &&\\ rm -rf /var/lib/apt/lists/* RUN curl -o ~/miniconda.sh -O https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh && \\ chmod +x ~/miniconda.sh && \\ ~/miniconda.sh -b -p /opt/conda && \\ rm ~/miniconda.sh && \\ /opt/conda/bin/conda install -y python=$PYTHON_VERSION numpy pyyaml scipy ipython mkl mkl-include cython typing && \\ /opt/conda/bin/conda install -y -c pytorch magma-cuda100 && \\ /opt/conda/bin/conda clean -ya ENV PATH /opt/conda/bin:$PATH RUN pip install ninja # This must be done before pip so that requirements.txt is available WORKDIR /opt/pytorch RUN git clone https://github.com/pytorch/pytorch.git WORKDIR pytorch RUN git submodule update --init RUN TORCH_CUDA_ARCH_LIST=\"3.5 5.2 6.0 6.1 7.0+PTX\" TORCH_NVCC_FLAGS=\"-Xfatbin -compress-all\" \\ CMAKE_PREFIX_PATH=\"$(dirname $(which conda))/../\" \\ pip install -v . WORKDIR /opt/pytorch RUN git clone https://github.com/pytorch/vision.git && cd vision && pip install -v . Copy On top of above image, add files, install packages to access HDFS RUN apt-get update && apt-get install -y openjdk-8-jdk wget # Install hadoop ENV HADOOP_VERSION=\"2.9.2\" RUN wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-${HADOOP_VERSION}/hadoop-${HADOOP_VERSION}.tar.gz RUN tar zxf hadoop-${HADOOP_VERSION}.tar.gz RUN ln -s hadoop-${HADOOP_VERSION} hadoop-current RUN rm hadoop-${HADOOP_VERSION}.tar.gz Copy Build and push to your own docker registry: Use docker build ... and docker push ... to finish this step. "},{"title":"Use examples to build your own PyTorch docker images","type":1,"pageTitle":"Docker Images for PyTorch","url":"docs/next/userDocs/yarn/WriteDockerfilePT#use-examples-to-build-your-own-pytorch-docker-images","content":"We provided some example Dockerfiles for you to build your own PyTorch docker images. For latest PyTorch docker/pytorch/base/ubuntu-18.04/Dockerfile.gpu.pytorch_latest: Latest Pytorch that supports GPU, which is prebuilt to CUDA10.docker/pytorch/with-cifar10-models/ubuntu-18.04/Dockerfile.gpu.pytorch_latest: Latest Pytorch that GPU, which is prebuilt to CUDA10, with models. "},{"title":"Build Docker images","type":1,"pageTitle":"Docker Images for PyTorch","url":"docs/next/userDocs/yarn/WriteDockerfilePT#build-docker-images","content":""},{"title":"Manually build Docker image:","type":1,"pageTitle":"Docker Images for PyTorch","url":"docs/next/userDocs/yarn/WriteDockerfilePT#manually-build-docker-image","content":"Under docker/pytorch directory, run build-all.sh to build all Docker images. This command will build the following Docker images: pytorch-latest-gpu-base:0.0.1 for base Docker image which includes Hadoop, PyTorch, GPU base libraries.pytorch-latest-gpu:0.0.1 which includes cifar10 model as well "},{"title":"Use prebuilt images","type":1,"pageTitle":"Docker Images for PyTorch","url":"docs/next/userDocs/yarn/WriteDockerfilePT#use-prebuilt-images","content":"(No liability) You can also use prebuilt images for convenience: hadoopsubmarine/pytorch-latest-gpu-base:0.0.1 "},{"title":"Docker Images for TensorFlow","type":0,"sectionRef":"#","url":"docs/next/userDocs/yarn/WriteDockerfileTF","content":"","keywords":""},{"title":"How to create docker images to run Tensorflow on YARN","type":1,"pageTitle":"Docker Images for TensorFlow","url":"docs/next/userDocs/yarn/WriteDockerfileTF#how-to-create-docker-images-to-run-tensorflow-on-yarn","content":"Dockerfile to run Tensorflow on YARN need two part: Base libraries which Tensorflow depends on 1) OS base image, for example ubuntu:18.04 2) Tensorflow depended libraries and packages. For example python, scipy. For GPU support, need cuda, cudnn, etc. 3) Tensorflow package. Libraries to access HDFS 1) JDK 2) Hadoop Here's an example of a base image (w/o GPU support) to install Tensorflow: FROM ubuntu:18.04 # Pick up some TF dependencies RUN apt-get update && apt-get install -y --no-install-recommends \\ build-essential \\ curl \\ libfreetype6-dev \\ libpng-dev \\ libzmq3-dev \\ pkg-config \\ python \\ python-dev \\ rsync \\ software-properties-common \\ unzip \\ && \\ apt-get clean && \\ rm -rf /var/lib/apt/lists/* RUN export DEBIAN_FRONTEND=noninteractive && apt-get update && apt-get install -yq krb5-user libpam-krb5 && apt-get clean RUN curl -O https://bootstrap.pypa.io/get-pip.py && \\ python get-pip.py && \\ rm get-pip.py RUN pip --no-cache-dir install \\ Pillow \\ h5py \\ ipykernel \\ jupyter \\ matplotlib \\ numpy \\ pandas \\ scipy \\ sklearn \\ && \\ python -m ipykernel.kernelspec RUN pip --no-cache-dir install \\ http://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.13.1-cp27-none-linux_x86_64.whl Copy On top of above image, add files, install packages to access HDFS RUN apt-get update && apt-get install -y openjdk-8-jdk wget # Install hadoop ENV HADOOP_VERSION=\"2.9.2\" RUN wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-${HADOOP_VERSION}/hadoop-${HADOOP_VERSION}.tar.gz RUN tar zxf hadoop-${HADOOP_VERSION}.tar.gz RUN ln -s hadoop-${HADOOP_VERSION} hadoop-current RUN rm hadoop-${HADOOP_VERSION}.tar.gz Copy Build and push to your own docker registry: Use docker build ... and docker push ... to finish this step. "},{"title":"Use examples to build your own Tensorflow docker images","type":1,"pageTitle":"Docker Images for TensorFlow","url":"docs/next/userDocs/yarn/WriteDockerfileTF#use-examples-to-build-your-own-tensorflow-docker-images","content":"We provided following examples for you to build tensorflow docker images. For Tensorflow 1.13.1 (Precompiled to CUDA 10.x) docker/tensorflow/base/ubuntu-18.04/Dockerfile.cpu.tf_1.13.1: Tensorflow 1.13.1 supports CPU only.docker/tensorflow/with-cifar10-models/ubuntu-18.04/Dockerfile.cpu.tf_1.13.1: Tensorflow 1.13.1 supports CPU only, and included modelsdocker/tensorflow/base/ubuntu-18.04/Dockerfile.gpu.tf_1.13.1: Tensorflow 1.13.1 supports GPU, which is prebuilt to CUDA10.docker/tensorflow/with-cifar10-models/ubuntu-18.04/Dockerfile.gpu.tf_1.13.1: Tensorflow 1.13.1 supports GPU, which is prebuilt to CUDA10, with models. "},{"title":"Build Docker images","type":1,"pageTitle":"Docker Images for TensorFlow","url":"docs/next/userDocs/yarn/WriteDockerfileTF#build-docker-images","content":""},{"title":"Manually build Docker image:","type":1,"pageTitle":"Docker Images for TensorFlow","url":"docs/next/userDocs/yarn/WriteDockerfileTF#manually-build-docker-image","content":"Under docker/ directory, run build-all.sh to build Docker images. It will build following images: tf-1.13.1-gpu-base:0.0.1 for base Docker image which includes Hadoop, Tensorflow, GPU base libraries.tf-1.13.1-gpu-base:0.0.1 for base Docker image which includes Hadoop. Tensorflow.tf-1.13.1-gpu:0.0.1 which includes cifar10 modeltf-1.13.1-cpu:0.0.1 which inclues cifar10 model (cpu only). "},{"title":"Use prebuilt images","type":1,"pageTitle":"Docker Images for TensorFlow","url":"docs/next/userDocs/yarn/WriteDockerfileTF#use-prebuilt-images","content":"(No liability) You can also use prebuilt images for convenience: hadoopsubmarine/tf-1.13.1-gpu:0.0.1hadoopsubmarine/tf-1.13.1-cpu:0.0.1 "},{"title":"README","type":0,"sectionRef":"#","url":"docs/next/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README","content":"","keywords":""},{"title":"Prerequisite","type":1,"pageTitle":"README","url":"docs/next/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README#prerequisite","content":"Install TensorFlow version 1.2.1 or later. Download the CIFAR-10 dataset and generate TFRecord files using the provided script. The script and associated command below will download the CIFAR-10 dataset and then generate a TFRecord for the training, validation, and evaluation datasets. python generate_cifar10_tfrecords.py --data-dir=${PWD}/cifar-10-data Copy After running the command above, you should see the following files in the --data-dir (ls -R cifar-10-data): train.tfrecordsvalidation.tfrecordseval.tfrecords "},{"title":"Training on a single machine with GPUs or CPU","type":1,"pageTitle":"README","url":"docs/next/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README#training-on-a-single-machine-with-gpus-or-cpu","content":"Run the training on CPU only. After training, it runs the evaluation. python cifar10_main.py --data-dir=${PWD}/cifar-10-data \\ --job-dir=/tmp/cifar10 \\ --num-gpus=0 \\ --train-steps=1000 Copy Run the model on 2 GPUs using CPU as parameter server. After training, it runs the evaluation. python cifar10_main.py --data-dir=${PWD}/cifar-10-data \\ --job-dir=/tmp/cifar10 \\ --num-gpus=2 \\ --train-steps=1000 Copy Run the model on 2 GPUs using GPU as parameter server. It will run an experiment, which for local setting basically means it will run stop training a couple of times to perform evaluation. python cifar10_main.py --data-dir=${PWD}/cifar-10-data \\ --job-dir=/tmp/cifar10 \\ --variable-strategy GPU \\ --num-gpus=2 \\ Copy There are more command line flags to play with; runpython cifar10_main.py --help for details. "},{"title":"Run distributed training","type":1,"pageTitle":"README","url":"docs/next/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README#run-distributed-training","content":""},{"title":"(Optional) Running on Google Cloud Machine Learning Engine","type":1,"pageTitle":"README","url":"docs/next/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README#optional-running-on-google-cloud-machine-learning-engine","content":"This example can be run on Google Cloud Machine Learning Engine (ML Engine), which will configure the environment and take care of running workers, parameters servers, and masters in a fault tolerant way. To install the command line tool, and set up a project and billing, see the quickstart here. You'll also need a Google Cloud Storage bucket for the data. If you followed the instructions above, you can just run: MY_BUCKET=gs://<my-bucket-name> gsutil cp -r ${PWD}/cifar-10-data $MY_BUCKET/ Copy Then run the following command from the tutorials/image directory of this repository (the parent directory of this README): gcloud ml-engine jobs submit training cifarmultigpu \\ --runtime-version 1.2 \\ --job-dir=$MY_BUCKET/model_dirs/cifarmultigpu \\ --config cifar10_estimator/cmle_config.yaml \\ --package-path cifar10_estimator/ \\ --module-name cifar10_estimator.cifar10_main \\ -- \\ --data-dir=$MY_BUCKET/cifar-10-data \\ --num-gpus=4 \\ --train-steps=1000 Copy "},{"title":"Set TF_CONFIG","type":1,"pageTitle":"README","url":"docs/next/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README#set-tf_config","content":"Considering that you already have multiple hosts configured, all you need is aTF_CONFIG environment variable on each host. You can set up the hosts manually or check tensorflow/ecosystem for instructions about how to set up a Cluster. The TF_CONFIG will be used by the RunConfig to know the existing hosts and their task: master, ps or worker. Here's an example of TF_CONFIG. cluster = {'master': ['master-ip:8000'], 'ps': ['ps-ip:8000'], 'worker': ['worker-ip:8000']} TF_CONFIG = json.dumps( {'cluster': cluster, 'task': {'type': master, 'index': 0}, 'model_dir': 'gs://<bucket_path>/<dir_path>', 'environment': 'cloud' }) Copy Cluster A cluster spec, which is basically a dictionary that describes all of the tasks in the cluster. More about it here. In this cluster spec we are defining a cluster with 1 master, 1 ps and 1 worker. ps: saves the parameters among all workers. All workers can read/write/update the parameters for model via ps. As some models are extremely large the parameters are shared among the ps (each ps stores a subset). worker: does the training. master: basically a special worker, it does training, but also restores and saves checkpoints and do evaluation. Task The Task defines what is the role of the current node, for this example the node is the master on index 0 on the cluster spec, the task will be different for each node. An example of the TF_CONFIG for a worker would be: cluster = {'master': ['master-ip:8000'], 'ps': ['ps-ip:8000'], 'worker': ['worker-ip:8000']} TF_CONFIG = json.dumps( {'cluster': cluster, 'task': {'type': worker, 'index': 0}, 'model_dir': 'gs://<bucket_path>/<dir_path>', 'environment': 'cloud' }) Copy Model_dir This is the path where the master will save the checkpoints, graph and TensorBoard files. For a multi host environment you may want to use a Distributed File System, Google Storage and DFS are supported. Environment By the default environment is local, for a distributed setting we need to change it to cloud. "},{"title":"Running script","type":1,"pageTitle":"README","url":"docs/next/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README#running-script","content":"Once you have a TF_CONFIG configured properly on each host you're ready to run on distributed settings. Master# Run this on master: Runs an Experiment in sync mode on 4 GPUs using CPU as parameter server for 40000 steps. It will run evaluation a couple of times during training. The num_workers argument is used only to update the learning rate correctly. Make sure the model_dir is the same as defined on the TF_CONFIG. python cifar10_main.py --data-dir=gs://path/cifar-10-data \\ --job-dir=gs://path/model_dir/ \\ --num-gpus=4 \\ --train-steps=40000 \\ --sync \\ --num-workers=2 Copy Output: INFO:tensorflow:Using model_dir in TF_CONFIG: gs://path/model_dir/ INFO:tensorflow:Using config: {'_save_checkpoints_secs': 600, '_num_ps_replicas': 1, '_keep_checkpoint_max': 5, '_task_type': u'master', '_is_chief': True, '_cluster_spec': <tensorflow.python.training.server_lib.ClusterSpec object at 0x7fd16fb2be10>, '_model_dir': 'gs://path/model_dir/', '_save_checkpoints_steps': None, '_keep_checkpoint_every_n_hours': 10000, '_session_config': intra_op_parallelism_threads: 1 gpu_options { } allow_soft_placement: true , '_tf_random_seed': None, '_environment': u'cloud', '_num_worker_replicas': 1, '_task_id': 0, '_save_summary_steps': 100, '_tf_config': gpu_options { per_process_gpu_memory_fraction: 1.0 } , '_evaluation_master': '', '_master': u'grpc://master-ip:8000'} ... 2017-08-01 19:59:26.496208: I tensorflow/core/common_runtime/gpu/gpu_device.cc:940] Found device 0 with properties: name: Tesla K80 major: 3 minor: 7 memoryClockRate (GHz) 0.8235 pciBusID 0000:00:04.0 Total memory: 11.17GiB Free memory: 11.09GiB 2017-08-01 19:59:26.775660: I tensorflow/core/common_runtime/gpu/gpu_device.cc:940] Found device 1 with properties: name: Tesla K80 major: 3 minor: 7 memoryClockRate (GHz) 0.8235 pciBusID 0000:00:05.0 Total memory: 11.17GiB Free memory: 11.10GiB ... 2017-08-01 19:59:29.675171: I tensorflow/core/distributed_runtime/rpc/grpc_server_lib.cc:316] Started server with target: grpc://localhost:8000 INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_1/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_2/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_3/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_4/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_5/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_6/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1/avg_pool/: (?, 16, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_1/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_2/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_3/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_4/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_1/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_2/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_3/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_4/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_5/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_6/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1/avg_pool/: (?, 32, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_1/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_2/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_3/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_4/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_5/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_6/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/global_avg_pool/: (?, 64) INFO:tensorflow:image after unit resnet/tower_0/fully_connected/: (?, 11) INFO:tensorflow:SyncReplicasV2: replicas_to_aggregate=1; total_num_replicas=1 INFO:tensorflow:Create CheckpointSaverHook. INFO:tensorflow:Restoring parameters from gs://path/model_dir/model.ckpt-0 2017-08-01 19:59:37.560775: I tensorflow/core/distributed_runtime/master_session.cc:999] Start master session 156fcb55fe6648d6 with config: intra_op_parallelism_threads: 1 gpu_options { per_process_gpu_memory_fraction: 1 } allow_soft_placement: true INFO:tensorflow:Saving checkpoints for 1 into gs://path/model_dir/model.ckpt. INFO:tensorflow:loss = 1.20682, step = 1 INFO:tensorflow:loss = 1.20682, learning_rate = 0.1 INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_1/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_2/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_3/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_4/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_5/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_6/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1/avg_pool/: (?, 16, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_1/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_2/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_3/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_4/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_5/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_6/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1/avg_pool/: (?, 32, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_1/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_2/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_3/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_4/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_5/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_6/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/global_avg_pool/: (?, 64) INFO:tensorflow:image after unit resnet/tower_0/fully_connected/: (?, 11) INFO:tensorflow:SyncReplicasV2: replicas_to_aggregate=2; total_num_replicas=2 INFO:tensorflow:Starting evaluation at 2017-08-01-20:00:14 2017-08-01 20:00:15.745881: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Creating TensorFlow device (/gpu:0) -> (device: 0, name: Tesla K80, pci bus id: 0000:00:04.0) 2017-08-01 20:00:15.745949: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Creating TensorFlow device (/gpu:1) -> (device: 1, name: Tesla K80, pci bus id: 0000:00:05.0) 2017-08-01 20:00:15.745958: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Creating TensorFlow device (/gpu:2) -> (device: 2, name: Tesla K80, pci bus id: 0000:00:06.0) 2017-08-01 20:00:15.745964: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Creating TensorFlow device (/gpu:3) -> (device: 3, name: Tesla K80, pci bus id: 0000:00:07.0) 2017-08-01 20:00:15.745969: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Creating TensorFlow device (/gpu:4) -> (device: 4, name: Tesla K80, pci bus id: 0000:00:08.0) 2017-08-01 20:00:15.745975: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Creating TensorFlow device (/gpu:5) -> (device: 5, name: Tesla K80, pci bus id: 0000:00:09.0) 2017-08-01 20:00:15.745987: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Creating TensorFlow device (/gpu:6) -> (device: 6, name: Tesla K80, pci bus id: 0000:00:0a.0) 2017-08-01 20:00:15.745997: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Creating TensorFlow device (/gpu:7) -> (device: 7, name: Tesla K80, pci bus id: 0000:00:0b.0) INFO:tensorflow:Restoring parameters from gs://path/model_dir/model.ckpt-10023 INFO:tensorflow:Evaluation [1/100] INFO:tensorflow:Evaluation [2/100] INFO:tensorflow:Evaluation [3/100] INFO:tensorflow:Evaluation [4/100] INFO:tensorflow:Evaluation [5/100] INFO:tensorflow:Evaluation [6/100] INFO:tensorflow:Evaluation [7/100] INFO:tensorflow:Evaluation [8/100] INFO:tensorflow:Evaluation [9/100] INFO:tensorflow:Evaluation [10/100] INFO:tensorflow:Evaluation [11/100] INFO:tensorflow:Evaluation [12/100] INFO:tensorflow:Evaluation [13/100] ... INFO:tensorflow:Evaluation [100/100] INFO:tensorflow:Finished evaluation at 2017-08-01-20:00:31 INFO:tensorflow:Saving dict for global step 1: accuracy = 0.0994, global_step = 1, loss = 630.425 Copy Worker# Run this on worker: Runs an Experiment in sync mode on 4 GPUs using CPU as parameter server for 40000 steps. It will run evaluation a couple of times during training. Make sure the model_dir is the same as defined on the TF_CONFIG. python cifar10_main.py --data-dir=gs://path/cifar-10-data \\ --job-dir=gs://path/model_dir/ \\ --num-gpus=4 \\ --train-steps=40000 \\ --sync Copy Output: INFO:tensorflow:Using model_dir in TF_CONFIG: gs://path/model_dir/ INFO:tensorflow:Using config: {'_save_checkpoints_secs': 600, '_num_ps_replicas': 1, '_keep_checkpoint_max': 5, '_task_type': u'worker', '_is_chief': False, '_cluster_spec': <tensorflow.python.training.server_lib.ClusterSpec object at 0x7f6918438e10>, '_model_dir': 'gs://<path>/model_dir/', '_save_checkpoints_steps': None, '_keep_checkpoint_every_n_hours': 10000, '_session_config': intra_op_parallelism_threads: 1 gpu_options { } allow_soft_placement: true , '_tf_random_seed': None, '_environment': u'cloud', '_num_worker_replicas': 1, '_task_id': 0, '_save_summary_steps': 100, '_tf_config': gpu_options { per_process_gpu_memory_fraction: 1.0 } ... 2017-08-01 19:59:26.496208: I tensorflow/core/common_runtime/gpu/gpu_device.cc:940] Found device 0 with properties: name: Tesla K80 major: 3 minor: 7 memoryClockRate (GHz) 0.8235 pciBusID 0000:00:04.0 Total memory: 11.17GiB Free memory: 11.09GiB 2017-08-01 19:59:26.775660: I tensorflow/core/common_runtime/gpu/gpu_device.cc:940] Found device 1 with properties: name: Tesla K80 major: 3 minor: 7 memoryClockRate (GHz) 0.8235 pciBusID 0000:00:05.0 Total memory: 11.17GiB Free memory: 11.10GiB ... 2017-08-01 19:59:29.675171: I tensorflow/core/distributed_runtime/rpc/grpc_server_lib.cc:316] Started server with target: grpc://localhost:8000 INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_1/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_2/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_3/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_4/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_5/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_6/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1/avg_pool/: (?, 16, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_1/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_2/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_3/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_4/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_1/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_2/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_3/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_4/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_5/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_6/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1/avg_pool/: (?, 32, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_1/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_2/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_3/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_4/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_5/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_6/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/global_avg_pool/: (?, 64) INFO:tensorflow:image after unit resnet/tower_0/fully_connected/: (?, 11) INFO:tensorflow:SyncReplicasV2: replicas_to_aggregate=2; total_num_replicas=2 INFO:tensorflow:Create CheckpointSaverHook. 2017-07-31 22:38:04.629150: I tensorflow/core/distributed_runtime/master.cc:209] CreateSession still waiting for response from worker: /job:master/replica:0/task:0 2017-07-31 22:38:09.263492: I tensorflow/core/distributed_runtime/master_session.cc:999] Start master session cc58f93b1e259b0c with config: intra_op_parallelism_threads: 1 gpu_options { per_process_gpu_memory_fraction: 1 } allow_soft_placement: true INFO:tensorflow:loss = 5.82382, step = 0 INFO:tensorflow:loss = 5.82382, learning_rate = 0.8 INFO:tensorflow:Average examples/sec: 1116.92 (1116.92), step = 10 INFO:tensorflow:Average examples/sec: 1233.73 (1377.83), step = 20 INFO:tensorflow:Average examples/sec: 1485.43 (2509.3), step = 30 INFO:tensorflow:Average examples/sec: 1680.27 (2770.39), step = 40 INFO:tensorflow:Average examples/sec: 1825.38 (2788.78), step = 50 INFO:tensorflow:Average examples/sec: 1929.32 (2697.27), step = 60 INFO:tensorflow:Average examples/sec: 2015.17 (2749.05), step = 70 INFO:tensorflow:loss = 37.6272, step = 79 (19.554 sec) INFO:tensorflow:loss = 37.6272, learning_rate = 0.8 (19.554 sec) INFO:tensorflow:Average examples/sec: 2074.92 (2618.36), step = 80 INFO:tensorflow:Average examples/sec: 2132.71 (2744.13), step = 90 INFO:tensorflow:Average examples/sec: 2183.38 (2777.21), step = 100 INFO:tensorflow:Average examples/sec: 2224.4 (2739.03), step = 110 INFO:tensorflow:Average examples/sec: 2240.28 (2431.26), step = 120 INFO:tensorflow:Average examples/sec: 2272.12 (2739.32), step = 130 INFO:tensorflow:Average examples/sec: 2300.68 (2750.03), step = 140 INFO:tensorflow:Average examples/sec: 2325.81 (2745.63), step = 150 INFO:tensorflow:Average examples/sec: 2347.14 (2721.53), step = 160 INFO:tensorflow:Average examples/sec: 2367.74 (2754.54), step = 170 INFO:tensorflow:loss = 27.8453, step = 179 (18.893 sec) ... Copy PS# Run this on ps: The ps will not do training so most of the arguments won't affect the execution python cifar10_main.py --job-dir=gs://path/model_dir/ Copy Output: INFO:tensorflow:Using model_dir in TF_CONFIG: gs://path/model_dir/ INFO:tensorflow:Using config: {'_save_checkpoints_secs': 600, '_num_ps_replicas': 1, '_keep_checkpoint_max': 5, '_task_type': u'ps', '_is_chief': False, '_cluster_spec': <tensorflow.python.training.server_lib.ClusterSpec object at 0x7f48f1addf90>, '_model_dir': 'gs://path/model_dir/', '_save_checkpoints_steps': None, '_keep_checkpoint_every_n_hours': 10000, '_session_config': intra_op_parallelism_threads: 1 gpu_options { } allow_soft_placement: true , '_tf_random_seed': None, '_environment': u'cloud', '_num_worker_replicas': 1, '_task_id': 0, '_save_summary_steps': 100, '_tf_config': gpu_options { per_process_gpu_memory_fraction: 1.0 } , '_evaluation_master': '', '_master': u'grpc://master-ip:8000'} 2017-07-31 22:54:58.928088: I tensorflow/core/distributed_runtime/rpc/grpc_channel.cc:215] Initialize GrpcChannelCache for job master -> {0 -> master-ip:8000} 2017-07-31 22:54:58.928153: I tensorflow/core/distributed_runtime/rpc/grpc_channel.cc:215] Initialize GrpcChannelCache for job ps -> {0 -> localhost:8000} 2017-07-31 22:54:58.928160: I tensorflow/core/distributed_runtime/rpc/grpc_channel.cc:215] Initialize GrpcChannelCache for job worker -> {0 -> worker-ip:8000} 2017-07-31 22:54:58.929873: I tensorflow/core/distributed_runtime/rpc/grpc_server_lib.cc:316] Started server with target: grpc://localhost:8000 Copy "},{"title":"Visualizing results with TensorBoard","type":1,"pageTitle":"README","url":"docs/next/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README#visualizing-results-with-tensorboard","content":"When using Estimators you can also visualize your data in TensorBoard, with no changes in your code. You can use TensorBoard to visualize your TensorFlow graph, plot quantitative metrics about the execution of your graph, and show additional data like images that pass through it. You'll see something similar to this if you \"point\" TensorBoard to thejob dir parameter you used to train or evaluate your model. Check TensorBoard during training or after it. Just point TensorBoard to the model_dir you chose on the previous step. tensorboard --log-dir=\"<job dir>\" Copy "},{"title":"Warnings","type":1,"pageTitle":"README","url":"docs/next/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README#warnings","content":"When running cifar10_main.py with --sync argument you may see an error similar to: File \"cifar10_main.py\", line 538, in <module> tf.app.run() File \"/usr/local/lib/python2.7/dist-packages/tensorflow/python/platform/app.py\", line 48, in run _sys.exit(main(_sys.argv[:1] + flags_passthrough)) File \"cifar10_main.py\", line 518, in main hooks), run_config=config) File \"/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/learn_runner.py\", line 210, in run return _execute_schedule(experiment, schedule) File \"/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/learn_runner.py\", line 47, in _execute_schedule return task() File \"/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/experiment.py\", line 501, in train_and_evaluate hooks=self._eval_hooks) File \"/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/experiment.py\", line 681, in _call_evaluate hooks=hooks) File \"/usr/local/lib/python2.7/dist-packages/tensorflow/python/estimator/estimator.py\", line 292, in evaluate name=name) File \"/usr/local/lib/python2.7/dist-packages/tensorflow/python/estimator/estimator.py\", line 638, in _evaluate_model features, labels, model_fn_lib.ModeKeys.EVAL) File \"/usr/local/lib/python2.7/dist-packages/tensorflow/python/estimator/estimator.py\", line 545, in _call_model_fn features=features, labels=labels, **kwargs) File \"cifar10_main.py\", line 331, in _resnet_model_fn gradvars, global_step=tf.train.get_global_step()) File \"/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/sync_replicas_optimizer.py\", line 252, in apply_gradients variables.global_variables()) File \"/usr/local/lib/python2.7/dist-packages/tensorflow/python/util/tf_should_use.py\", line 170, in wrapped return _add_should_use_warning(fn(*args, **kwargs)) File \"/usr/local/lib/python2.7/dist-packages/tensorflow/python/util/tf_should_use.py\", line 139, in _add_should_use_warning wrapped = TFShouldUseWarningWrapper(x) File \"/usr/local/lib/python2.7/dist-packages/tensorflow/python/util/tf_should_use.py\", line 96, in __init__ stack = [s.strip() for s in traceback.format_stack()] Copy This should not affect your training, and should be fixed on the next releases. "},{"title":"YARN Runtime Quick Start Guide","type":0,"sectionRef":"#","url":"docs/next/userDocs/yarn/YARNRuntimeGuide","content":"","keywords":""},{"title":"Prerequisite","type":1,"pageTitle":"YARN Runtime Quick Start Guide","url":"docs/next/userDocs/yarn/YARNRuntimeGuide#prerequisite","content":"Check out the Running Submarine on YARN "},{"title":"Build your own Docker image","type":1,"pageTitle":"YARN Runtime Quick Start Guide","url":"docs/next/userDocs/yarn/YARNRuntimeGuide#build-your-own-docker-image","content":"When you follow the documents below, and want to build your own Docker image for Tensorflow/PyTorch/MXNet? Please check out Build your Docker image for more details. "},{"title":"Launch TensorFlow Application:","type":1,"pageTitle":"YARN Runtime Quick Start Guide","url":"docs/next/userDocs/yarn/YARNRuntimeGuide#launch-tensorflow-application","content":""},{"title":"Without Docker","type":1,"pageTitle":"YARN Runtime Quick Start Guide","url":"docs/next/userDocs/yarn/YARNRuntimeGuide#without-docker","content":"You need: Build a Python virtual environment with TensorFlow 1.13.1 installedA cluster with Hadoop 2.9 or above. "},{"title":"Building a Python virtual environment with TensorFlow","type":1,"pageTitle":"YARN Runtime Quick Start Guide","url":"docs/next/userDocs/yarn/YARNRuntimeGuide#building-a-python-virtual-environment-with-tensorflow","content":"TonY requires a Python virtual environment zip with TensorFlow and any needed Python libraries already installed. wget https://files.pythonhosted.org/packages/33/bc/fa0b5347139cd9564f0d44ebd2b147ac97c36b2403943dbee8a25fd74012/virtualenv-16.0.0.tar.gz tar xf virtualenv-16.0.0.tar.gz # Make sure to install using Python 3, as TensorFlow only provides Python 3 artifacts python virtualenv-16.0.0/virtualenv.py venv . venv/bin/activate pip install tensorflow==1.13.1 zip -r myvenv.zip venv deactivate Copy The above commands will produced a myvenv.zip and it will be used in below example. There's no need to copy it to other nodes. And it is not needed when using Docker to run the job. Note: If you require a version of TensorFlow and TensorBoard prior to 1.13.1, take a look at this issue. "},{"title":"Get the training examples","type":1,"pageTitle":"YARN Runtime Quick Start Guide","url":"docs/next/userDocs/yarn/YARNRuntimeGuide#get-the-training-examples","content":"Get mnist_distributed.py from https://github.com/linkedin/TonY/tree/master/tony-examples/mnist-tensorflow SUBMARINE_VERSION=<REPLACE_VERSION> SUBMARINE_HADOOP_VERSION=3.1 CLASSPATH=$(hadoop classpath --glob):path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar \\ java org.apache.submarine.client.cli.Cli job run --name tf-job-001 \\ --framework tensorflow \\ --verbose \\ --input_path \"\" \\ --num_workers 2 \\ --worker_resources memory=1G,vcores=1 \\ --num_ps 1 \\ --ps_resources memory=1G,vcores=1 \\ --worker_launch_cmd \"myvenv.zip/venv/bin/python mnist_distributed.py --steps 2 --data_dir /tmp/data --working_dir /tmp/mode\" \\ --ps_launch_cmd \"myvenv.zip/venv/bin/python mnist_distributed.py --steps 2 --data_dir /tmp/data --working_dir /tmp/mode\" \\ --insecure \\ --conf tony.containers.resources=path-to/myvenv.zip#archive,path-to/mnist_distributed.py,path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar Copy You should then be able to see links and status of the jobs from command line: 2019-04-22 20:30:42,611 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000003/pi status: RUNNING 2019-04-22 20:30:42,612 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 1 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000004/pi status: RUNNING 2019-04-22 20:30:42,612 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: ps index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000002/pi status: RUNNING 2019-04-22 20:30:42,612 INFO tony.TonyClient: Logs for ps 0 at: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000002/pi 2019-04-22 20:30:42,612 INFO tony.TonyClient: Logs for worker 0 at: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000003/pi 2019-04-22 20:30:42,612 INFO tony.TonyClient: Logs for worker 1 at: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000004/pi 2019-04-22 20:30:44,625 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: ps index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000002/pi status: FINISHED 2019-04-22 20:30:44,625 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000003/pi status: FINISHED 2019-04-22 20:30:44,626 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 1 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000004/pi status: FINISHED Copy "},{"title":"With Docker","type":1,"pageTitle":"YARN Runtime Quick Start Guide","url":"docs/next/userDocs/yarn/YARNRuntimeGuide#with-docker","content":"SUBMARINE_VERSION=<REPLACE_VERSION> SUBMARINE_HADOOP_VERSION=3.1 CLASSPATH=$(hadoop classpath --glob):path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar \\ java org.apache.submarine.client.cli.Cli job run --name tf-job-001 \\ --framework tensorflow \\ --docker_image hadoopsubmarine/tf-1.8.0-cpu:0.0.1 \\ --input_path hdfs://pi-aw:9000/dataset/cifar-10-data \\ --worker_resources memory=3G,vcores=2 \\ --worker_launch_cmd \"export CLASSPATH=\\$(/hadoop-3.1.0/bin/hadoop classpath --glob) && cd /test/models/tutorials/image/cifar10_estimator && python cifar10_main.py --data-dir=%input_path% --job-dir=%checkpoint_path% --train-steps=10000 --eval-batch-size=16 --train-batch-size=16 --variable-strategy=CPU --num-gpus=0 --sync\" \\ --env JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 \\ --env DOCKER_HADOOP_HDFS_HOME=/hadoop-3.1.0 \\ --env DOCKER_JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 \\ --env HADOOP_HOME=/hadoop-3.1.0 \\ --env HADOOP_YARN_HOME=/hadoop-3.1.0 \\ --env HADOOP_COMMON_HOME=/hadoop-3.1.0 \\ --env HADOOP_HDFS_HOME=/hadoop-3.1.0 \\ --env HADOOP_CONF_DIR=/hadoop-3.1.0/etc/hadoop \\ --conf tony.containers.resources=path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar Copy Notes:# 1) DOCKER_JAVA_HOME points to JAVA_HOME inside Docker image. 2) DOCKER_HADOOP_HDFS_HOME points to HADOOP_HDFS_HOME inside Docker image. We removed TonY submodule after applying SUBMARINE-371 and changed to use TonY dependency directly. After Submarine v0.2.0, there is a uber jar submarine-all-${SUBMARINE_VERSION}-hadoop-${HADOOP_VERSION}.jar released together with the submarine-core-${SUBMARINE_VERSION}.jar, submarine-yarnservice-runtime-${SUBMARINE_VERSION}.jar and submarine-tony-runtime-${SUBMARINE_VERSION}.jar.  "},{"title":"Launch PyTorch Application:","type":1,"pageTitle":"YARN Runtime Quick Start Guide","url":"docs/next/userDocs/yarn/YARNRuntimeGuide#launch-pytorch-application","content":""},{"title":"Without Docker","type":1,"pageTitle":"YARN Runtime Quick Start Guide","url":"docs/next/userDocs/yarn/YARNRuntimeGuide#without-docker-1","content":"You need: Build a Python virtual environment with PyTorch 0.4.0+ installedA cluster with Hadoop 2.9 or above. "},{"title":"Building a Python virtual environment with PyTorch","type":1,"pageTitle":"YARN Runtime Quick Start Guide","url":"docs/next/userDocs/yarn/YARNRuntimeGuide#building-a-python-virtual-environment-with-pytorch","content":"TonY requires a Python virtual environment zip with PyTorch and any needed Python libraries already installed. wget https://files.pythonhosted.org/packages/33/bc/fa0b5347139cd9564f0d44ebd2b147ac97c36b2403943dbee8a25fd74012/virtualenv-16.0.0.tar.gz tar xf virtualenv-16.0.0.tar.gz python virtualenv-16.0.0/virtualenv.py venv . venv/bin/activate pip install pytorch==0.4.0 zip -r myvenv.zip venv deactivate Copy "},{"title":"Get the training examples","type":1,"pageTitle":"YARN Runtime Quick Start Guide","url":"docs/next/userDocs/yarn/YARNRuntimeGuide#get-the-training-examples-1","content":"Get mnist_distributed.py from https://github.com/linkedin/TonY/tree/master/tony-examples/mnist-pytorch SUBMARINE_VERSION=<REPLACE_VERSION> SUBMARINE_HADOOP_VERSION=3.1 CLASSPATH=$(hadoop classpath --glob):path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar \\ java org.apache.submarine.client.cli.Cli job run --name PyTorch-job-001 \\ --framework pytorch --num_workers 2 \\ --worker_resources memory=3G,vcores=2 \\ --num_ps 2 \\ --ps_resources memory=3G,vcores=2 \\ --worker_launch_cmd \"myvenv.zip/venv/bin/python mnist_distributed.py\" \\ --ps_launch_cmd \"myvenv.zip/venv/bin/python mnist_distributed.py\" \\ --insecure \\ --conf tony.containers.resources=path-to/myvenv.zip#archive,path-to/mnist_distributed.py, \\ path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar Copy You should then be able to see links and status of the jobs from command line: 2019-04-22 20:30:42,611 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000003/pi status: RUNNING 2019-04-22 20:30:42,612 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 1 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000004/pi status: RUNNING 2019-04-22 20:30:42,612 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: ps index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000002/pi status: RUNNING 2019-04-22 20:30:42,612 INFO tony.TonyClient: Logs for ps 0 at: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000002/pi 2019-04-22 20:30:42,612 INFO tony.TonyClient: Logs for worker 0 at: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000003/pi 2019-04-22 20:30:42,612 INFO tony.TonyClient: Logs for worker 1 at: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000004/pi 2019-04-22 20:30:44,625 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: ps index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000002/pi status: FINISHED 2019-04-22 20:30:44,625 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000003/pi status: FINISHED 2019-04-22 20:30:44,626 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 1 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000004/pi status: FINISHED Copy "},{"title":"With Docker","type":1,"pageTitle":"YARN Runtime Quick Start Guide","url":"docs/next/userDocs/yarn/YARNRuntimeGuide#with-docker-1","content":"SUBMARINE_VERSION=<REPLACE_VERSION> SUBMARINE_HADOOP_VERSION=3.1 CLASSPATH=$(hadoop classpath --glob):path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar \\ java org.apache.submarine.client.cli.Cli job run --name PyTorch-job-001 \\ --framework pytorch --docker_image pytorch-latest-gpu:0.0.1 \\ --input_path \"\" \\ --num_workers 1 \\ --worker_resources memory=3G,vcores=2 \\ --worker_launch_cmd \"cd /test/ && python cifar10_tutorial.py\" \\ --env JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 \\ --env DOCKER_HADOOP_HDFS_HOME=/hadoop-3.1.2 \\ --env DOCKER_JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 \\ --env HADOOP_HOME=/hadoop-3.1.2 \\ --env HADOOP_YARN_HOME=/hadoop-3.1.2 \\ --env HADOOP_COMMON_HOME=/hadoop-3.1.2 \\ --env HADOOP_HDFS_HOME=/hadoop-3.1.2 \\ --env HADOOP_CONF_DIR=/hadoop-3.1.2/etc/hadoop \\ --conf tony.containers.resources=path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar Copy "},{"title":"Launch MXNet Application:","type":1,"pageTitle":"YARN Runtime Quick Start Guide","url":"docs/next/userDocs/yarn/YARNRuntimeGuide#launch-mxnet-application","content":""},{"title":"Without Docker","type":1,"pageTitle":"YARN Runtime Quick Start Guide","url":"docs/next/userDocs/yarn/YARNRuntimeGuide#without-docker-2","content":"You need: Build a Python virtual environment with MXNet installedA cluster with Hadoop 2.9 or above. "},{"title":"Building a Python virtual environment with MXNet","type":1,"pageTitle":"YARN Runtime Quick Start Guide","url":"docs/next/userDocs/yarn/YARNRuntimeGuide#building-a-python-virtual-environment-with-mxnet","content":"TonY requires a Python virtual environment zip with MXNet and any needed Python libraries already installed. wget https://files.pythonhosted.org/packages/33/bc/fa0b5347139cd9564f0d44ebd2b147ac97c36b2403943dbee8a25fd74012/virtualenv-16.0.0.tar.gz tar xf virtualenv-16.0.0.tar.gz python virtualenv-16.0.0/virtualenv.py venv . venv/bin/activate pip install mxnet==1.5.1 zip -r myvenv.zip venv deactivate Copy "},{"title":"Get the training examples","type":1,"pageTitle":"YARN Runtime Quick Start Guide","url":"docs/next/userDocs/yarn/YARNRuntimeGuide#get-the-training-examples-2","content":"Get image_classification.py from this link SUBMARINE_VERSION=<REPLACE_VERSION> SUBMARINE_HADOOP_VERSION=3.1 CLASSPATH=$(hadoop classpath --glob):path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar \\ java org.apache.submarine.client.cli.Cli job run --name MXNet-job-001 \\ --framework mxnet --input_path \"\" \\ --num_workers 2 \\ --worker_resources memory=3G,vcores=2 \\ --worker_launch_cmd \"myvenv.zip/venv/bin/python image_classification.py --dataset cifar10 --model vgg11 --epochs 1 --kvstore dist_sync\" \\ --num_ps 2 \\ --ps_resources memory=3G,vcores=2 \\ --ps_launch_cmd \"myvenv.zip/venv/bin/python image_classification.py --dataset cifar10 --model vgg11 --epochs 1 --kvstore dist_sync\" \\ --num_schedulers=1 \\ --scheduler_resources memory=1G,vcores=1 \\ --scheduler_launch_cmd=\"myvenv.zip/venv/bin/python image_classification.py --dataset cifar10 --model vgg11 --epochs 1 --kvstore dist_sync\" \\ --insecure \\ --conf tony.containers.resources=path-to/myvenv.zip#archive,path-to/image_classification.py, \\ path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar Copy You should then be able to see links and status of the jobs from command line: 2020-04-16 20:23:43,834 INFO tony.TonyClient: Task status updated: [TaskInfo] name: server, index: 1, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000004/pi status: RUNNING 2020-04-16 20:23:43,834 INFO tony.TonyClient: Task status updated: [TaskInfo] name: server, index: 0, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000003/pi status: RUNNING 2020-04-16 20:23:43,834 INFO tony.TonyClient: Task status updated: [TaskInfo] name: worker, index: 1, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000006/pi status: RUNNING 2020-04-16 20:23:43,834 INFO tony.TonyClient: Task status updated: [TaskInfo] name: worker, index: 0, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000005/pi status: RUNNING 2020-04-16 20:23:43,834 INFO tony.TonyClient: Task status updated: [TaskInfo] name: scheduler, index: 0, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000002/pi status: RUNNING 2020-04-16 20:23:43,839 INFO tony.TonyClient: Logs for scheduler 0 at: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000002/pi 2020-04-16 20:23:43,839 INFO tony.TonyClient: Logs for server 0 at: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000003/pi 2020-04-16 20:23:43,840 INFO tony.TonyClient: Logs for server 1 at: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000004/pi 2020-04-16 20:23:43,840 INFO tony.TonyClient: Logs for worker 0 at: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000005/pi 2020-04-16 20:23:43,840 INFO tony.TonyClient: Logs for worker 1 at: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000006/pi 2020-04-16 21:02:09,723 INFO tony.TonyClient: Task status updated: [TaskInfo] name: scheduler, index: 0, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000002/pi status: SUCCEEDED 2020-04-16 21:02:09,736 INFO tony.TonyClient: Task status updated: [TaskInfo] name: worker, index: 0, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000005/pi status: SUCCEEDED 2020-04-16 21:02:09,737 INFO tony.TonyClient: Task status updated: [TaskInfo] name: server, index: 1, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000004/pi status: SUCCEEDED 2020-04-16 21:02:09,737 INFO tony.TonyClient: Task status updated: [TaskInfo] name: worker, index: 1, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000006/pi status: SUCCEEDED 2020-04-16 21:02:09,737 INFO tony.TonyClient: Task status updated: [TaskInfo] name: server, index: 0, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000003/pi status: SUCCEEDED Copy "},{"title":"With Docker","type":1,"pageTitle":"YARN Runtime Quick Start Guide","url":"docs/next/userDocs/yarn/YARNRuntimeGuide#with-docker-2","content":"You could refer to this sample Dockerfile for building your own Docker image. SUBMARINE_VERSION=<REPLACE_VERSION> SUBMARINE_HADOOP_VERSION=3.1 CLASSPATH=$(hadoop classpath --glob):path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar \\ java org.apache.submarine.client.cli.Cli job run --name MXNet-job-001 \\ --framework mxnet --docker_image <your_docker_image> \\ --input_path \"\" \\ --num_schedulers 1 \\ --scheduler_resources memory=1G,vcores=1 \\ --scheduler_launch_cmd \"/usr/bin/python image_classification.py --dataset cifar10 --model vgg11 --epochs 1 --kvstore dist_sync\" \\ --num_workers 2 \\ --worker_resources memory=2G,vcores=1 \\ --worker_launch_cmd \"/usr/bin/python image_classification.py --dataset cifar10 --model vgg11 --epochs 1 --kvstore dist_sync\" \\ --num_ps 2 \\ --ps_resources memory=2G,vcores=1 \\ --ps_launch_cmd \"/usr/bin/python image_classification.py --dataset cifar10 --model vgg11 --epochs 1 --kvstore dist_sync\" \\ --verbose \\ --insecure \\ --conf tony.containers.resources=path-to/image_classification.py,path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar Copy "},{"title":"Use YARN Service to run Submarine: Deprecated","type":1,"pageTitle":"YARN Runtime Quick Start Guide","url":"docs/next/userDocs/yarn/YARNRuntimeGuide#use-yarn-service-to-run-submarine-deprecated","content":"Historically, Submarine supports to use YARN Service to submit deep learning jobs. Now we stop supporting it because YARN service is not actively developed by community, and extra dependencies such as RegistryDNS/ATS-v2 causes lots of issues for setup. As of now, you can still use YARN service to run Submarine, but code will be removed in the future release. We will only support use TonY when use Submarine on YARN. "},{"title":"Submarine Local Deployment","type":0,"sectionRef":"#","url":"docs/","content":"","keywords":""},{"title":"Prerequisite","type":1,"pageTitle":"Submarine Local Deployment","url":"docs/#prerequisite","content":"kubectlhelm (Helm v3 is minimum requirement.)minikube. "},{"title":"Deploy Kubernetes Cluster","type":1,"pageTitle":"Submarine Local Deployment","url":"docs/#deploy-kubernetes-cluster","content":"$ minikube start --vm-driver=docker --cpus 8 --memory 4096 --disk-size=20G --kubernetes-version v1.15.11 Copy "},{"title":"Install Submarine on Kubernetes","type":1,"pageTitle":"Submarine Local Deployment","url":"docs/#install-submarine-on-kubernetes","content":"$ git clone https://github.com/apache/submarine.git $ cd submarine $ helm install submarine ./helm-charts/submarine Copy NAME: submarine LAST DEPLOYED: Fri Jan 29 05:35:36 2021 NAMESPACE: default STATUS: deployed REVISION: 1 TEST SUITE: None Copy "},{"title":"Verify installation","type":1,"pageTitle":"Submarine Local Deployment","url":"docs/#verify-installation","content":"Once you got it installed, check with below commands and you should see similar outputs: $ kubectl get pods Copy NAME READY STATUS RESTARTS AGE notebook-controller-deployment-5db8b6cbf7-k65jm 1/1 Running 0 5s pytorch-operator-7ff5d96d59-gx7f5 1/1 Running 0 5s submarine-database-8d95d74f7-ntvqp 1/1 Running 0 5s submarine-server-b6cd4787b-7bvr7 1/1 Running 0 5s submarine-traefik-9bb6f8577-66sx6 1/1 Running 0 5s tf-job-operator-7844656dd-lfgmd 1/1 Running 0 5s Copy warning Note that if you encounter below issue when installation: Error: rendered manifests contain a resource that already exists. Unable to continue with install: existing resource conflict: namespace: , name: podgroups.scheduling.incubator.k8s.io, existing_kind: apiextensions.k8s.io/v1beta1, Kind=CustomResourceDefinition, new_kind: apiextensions.k8s.io/v1beta1, Kind=CustomResourceDefinition Copy It might be caused by the previous installed submarine charts. Fix it by running: $ kubectl delete crd/tfjobs.kubeflow.org && kubectl delete crd/podgroups.scheduling.incubator.k8s.io && kubectl delete crd/pytorchjobs.kubeflow.org Copy "},{"title":"Access Submarine in a Cluster","type":1,"pageTitle":"Submarine Local Deployment","url":"docs/#access-submarine-in-a-cluster","content":"# #Listen on port 32080 on all addresses, forwarding to 80 in the pod # Method1 -- using minikube ip + NodePort $ minikube ip # you'll get the IP address of minikube, ex: 192.168.49.2 # Method2 -- using port-forwarding $ kubectl port-forward --address 0.0.0.0 service/submarine-traefik 32080:80 Copy "},{"title":"Open Workbench in the browser.","type":1,"pageTitle":"Submarine Local Deployment","url":"docs/#open-workbench-in-the-browser","content":"Open http://{minikube ip}:32080(from Method1), ex: http://192.168.49.2:32080 or http://127.0.0.1:32080 (from Method 2). The default username and password is admin and admin  "},{"title":"Uninstall Submarine","type":1,"pageTitle":"Submarine Local Deployment","url":"docs/#uninstall-submarine","content":"$ helm delete submarine Copy "},{"title":"Running Submarine on YARN","type":0,"sectionRef":"#","url":"docs/adminDocs/yarn/README","content":"","keywords":""},{"title":"Hadoop version","type":1,"pageTitle":"Running Submarine on YARN","url":"docs/adminDocs/yarn/README#hadoop-version","content":"Must: Apache Hadoop version newer than 2.7.3 Optional: When you want to use GPU-on-YARN feature with Submarine, please make sure Hadoop is at least 2.10.0+ (or 3.1.0+), and follow Enable GPU on YARN 2.10.0+ to enable GPU-on-YARN feature.When you want to run training jobs with Docker container, please make sure Hadoop is at least 2.8.2, and follow Enable Docker on YARN 2.8.2+ to enable Docker-on-YARN feature. "},{"title":"Submarine YARN Runtime Guide","type":1,"pageTitle":"Running Submarine on YARN","url":"docs/adminDocs/yarn/README#submarine-yarn-runtime-guide","content":"YARN Runtime Guide talk about how to use Submarine to run jobs on YARN, with Docker / without Docker. "},{"title":"HowToRun","type":0,"sectionRef":"#","url":"docs/adminDocs/yarn/workbench/HowToRun","content":"","keywords":""},{"title":"Two versions of Submarine Workbench","type":1,"pageTitle":"HowToRun","url":"docs/adminDocs/yarn/workbench/HowToRun#two-versions-of-submarine-workbench","content":"Angular (default)Vue (This is the old version, and it will be replaced by version Angular in the future.) (WARNING: Please restart a new incognito window when you switch to different versions of Submarine Workbench)# "},{"title":"Launch the Submarine Workbench(Angular)","type":1,"pageTitle":"HowToRun","url":"docs/adminDocs/yarn/workbench/HowToRun#launch-the-submarine-workbenchangular","content":"It should be noted that since Submarine Workbench depends on the Submarine database, so you need to run the docker container of the Submarine database first. docker run -it -p 3306:3306 -d --name submarine-database -e MYSQL_ROOT_PASSWORD=password apache/submarine:database-<REPLACE_VERSION> docker run -it -p 8080:8080 -d --link=submarine-database:submarine-database --name submarine-server apache/submarine:server-<REPLACE_VERSION> Copy The login page of Submarine Workbench will be shown in http://127.0.0.1:8080. "},{"title":"Check the data in the submarine-database","type":1,"pageTitle":"HowToRun","url":"docs/adminDocs/yarn/workbench/HowToRun#check-the-data-in-the-submarine-database","content":"Step1: Enter the submarine-database container docker exec -it submarine-database bash Copy Step2: Enter MySQL database mysql -uroot -ppassword Copy Step3: List the data in the table // list all databases show databases; // choose a database use ${target_database}; // list all tables show tables; // list the data in the table select * from ${target_table}; Copy Run Submarine Workbench without docker# "},{"title":"Run Submarine Workbench","type":1,"pageTitle":"HowToRun","url":"docs/adminDocs/yarn/workbench/HowToRun#run-submarine-workbench","content":"cd submarine ./bin/submarine-daemon.sh [start|stop|restart] Copy To start workbench server, you need to download MySQL jdbc jar and put it in the path of workbench/lib for the first time. Or you can add parameter, getMysqlJar, to get MySQL jar automatically. cd submarine ./bin/submarine-daemon.sh start getMysqlJar Copy "},{"title":"submarine-env.sh","type":1,"pageTitle":"HowToRun","url":"docs/adminDocs/yarn/workbench/HowToRun#submarine-envsh","content":"submarine-env.sh is automatically executed each time the submarine-daemon.sh script is executed, so we can set the submarine-daemon.sh script and the environment variables in the SubmarineServer process via submarine-env.sh. Name\tVariableJAVA_HOME\tSet your java home path, default is java. SUBMARINE_JAVA_OPTS\tSet the JAVA OPTS parameter when the Submarine Workbench process starts. If you need to debug the Submarine Workbench process, you can set it to -agentlib:jdwp=transport=dt_socket, server=y,suspend=n,address=5005 SUBMARINE_MEM\tSet the java memory parameter when the Submarine Workbench process starts. MYSQL_JAR_URL\tThe customized URL to download MySQL jdbc jar. MYSQL_VERSION\tThe version of MySQL jdbc jar to downloaded. The default value is 5.1.39. It's used to generate the default value of MYSQL_JDBC_URL "},{"title":"submarine-site.xml","type":1,"pageTitle":"HowToRun","url":"docs/adminDocs/yarn/workbench/HowToRun#submarine-sitexml","content":"submarine-site.xml is the configuration file for the entire Submarine system to run. Name\tVariablesubmarine.server.addr\tSubmarine server address, default is 0.0.0.0 submarine.server.port\tSubmarine server port, default 8080 submarine.ssl\tShould SSL be used by the Submarine servers?, default false submarine.server.ssl.port\tServer ssl port. (used when ssl property is set to true), default 8483 submarine.ssl.client.auth\tShould client authentication be used for SSL connections? submarine.ssl.keystore.path\tPath to keystore relative to Submarine configuration directory submarine.ssl.keystore.type\tThe format of the given keystore (e.g. JKS or PKCS12) submarine.ssl.keystore.password\tKeystore password. Can be obfuscated by the Jetty Password tool submarine.ssl.key.manager.password\tKey Manager password. Defaults to keystore password. Can be obfuscated. submarine.ssl.truststore.path\tPath to truststore relative to Submarine configuration directory. Defaults to the keystore path submarine.ssl.truststore.type\tThe format of the given truststore (e.g. JKS or PKCS12). Defaults to the same type as the keystore type submarine.ssl.truststore.password\tTruststore password. Can be obfuscated by the Jetty Password tool. Defaults to the keystore password workbench.web.war\tSubmarine Workbench web war file path. "},{"title":"Test and Troubleshooting","type":0,"sectionRef":"#","url":"docs/adminDocs/yarn/TestAndTroubleshooting","content":"","keywords":""},{"title":"Test with a tensorflow job","type":1,"pageTitle":"Test and Troubleshooting","url":"docs/adminDocs/yarn/TestAndTroubleshooting#test-with-a-tensorflow-job","content":"Distributed-shell + GPU + cgroup  ... \\ job run \\ --env DOCKER_JAVA_HOME=/opt/java \\ --env DOCKER_HADOOP_HDFS_HOME=/hadoop-current --name distributed-tf-gpu \\ --env YARN_CONTAINER_RUNTIME_DOCKER_CONTAINER_NETWORK=calico-network \\ --worker_docker_image tf-1.13.1-gpu:0.0.1 \\ --ps_docker_image tf-1.13.1-cpu:0.0.1 \\ --input_path hdfs://${dfs_name_service}/tmp/cifar-10-data \\ --checkpoint_path hdfs://${dfs_name_service}/user/hadoop/tf-distributed-checkpoint \\ --num_ps 0 \\ --ps_resources memory=4G,vcores=2,gpu=0 \\ --ps_launch_cmd \"python /test/cifar10_estimator/cifar10_main.py --data-dir=hdfs://${dfs_name_service}/tmp/cifar-10-data --job-dir=hdfs://${dfs_name_service}/tmp/cifar-10-jobdir --num-gpus=0\" \\ --worker_resources memory=4G,vcores=2,gpu=1 --verbose \\ --num_workers 1 \\ --worker_launch_cmd \"python /test/cifar10_estimator/cifar10_main.py --data-dir=hdfs://${dfs_name_service}/tmp/cifar-10-data --job-dir=hdfs://${dfs_name_service}/tmp/cifar-10-jobdir --train-steps=500 --eval-batch-size=16 --train-batch-size=16 --sync --num-gpus=1\" Copy "},{"title":"Issues:","type":1,"pageTitle":"Test and Troubleshooting","url":"docs/adminDocs/yarn/TestAndTroubleshooting#issues","content":""},{"title":"Issue 1: Fail to start nodemanager after system reboot","type":1,"pageTitle":"Test and Troubleshooting","url":"docs/adminDocs/yarn/TestAndTroubleshooting#issue-1-fail-to-start-nodemanager-after-system-reboot","content":"2018-09-20 18:54:39,785 ERROR org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor: Failed to bootstrap configured resource subsystems! org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.ResourceHandlerException: Unexpected: Cannot create yarn cgroup Subsystem:cpu Mount points:/proc/mounts User:yarn Path:/sys/fs/cgroup/cpu,cpuacct/hadoop-yarn at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsHandlerImpl.initializePreMountedCGroupController(CGroupsHandlerImpl.java:425) at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsHandlerImpl.initializeCGroupController(CGroupsHandlerImpl.java:377) at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsCpuResourceHandlerImpl.bootstrap(CGroupsCpuResourceHandlerImpl.java:98) at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsCpuResourceHandlerImpl.bootstrap(CGroupsCpuResourceHandlerImpl.java:87) at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.ResourceHandlerChain.bootstrap(ResourceHandlerChain.java:58) at org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor.init(LinuxContainerExecutor.java:320) at org.apache.hadoop.yarn.server.nodemanager.NodeManager.serviceInit(NodeManager.java:389) at org.apache.hadoop.service.AbstractService.init(AbstractService.java:164) at org.apache.hadoop.yarn.server.nodemanager.NodeManager.initAndStartNodeManager(NodeManager.java:929) at org.apache.hadoop.yarn.server.nodemanager.NodeManager.main(NodeManager.java:997) 2018-09-20 18:54:39,789 INFO org.apache.hadoop.service.AbstractService: Service NodeManager failed in state INITED Copy Solution: Grant user yarn the access to /sys/fs/cgroup/cpu,cpuacct, which is the subfolder of cgroup mount destination. chown :yarn -R /sys/fs/cgroup/cpu,cpuacct chmod g+rwx -R /sys/fs/cgroup/cpu,cpuacct Copy If GPUs are used,the access to cgroup devices folder is neede as well chown :yarn -R /sys/fs/cgroup/devices chmod g+rwx -R /sys/fs/cgroup/devices Copy "},{"title":"Issue 2: container-executor permission denied","type":1,"pageTitle":"Test and Troubleshooting","url":"docs/adminDocs/yarn/TestAndTroubleshooting#issue-2-container-executor-permission-denied","content":"2018-09-21 09:36:26,102 WARN org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.privileged.PrivilegedOperationExecutor: IOException executing command: java.io.IOException: Cannot run program \"/etc/yarn/sbin/Linux-amd64-64/container-executor\": error=13, Permission denied at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048) at org.apache.hadoop.util.Shell.runCommand(Shell.java:938) at org.apache.hadoop.util.Shell.run(Shell.java:901) at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:1213) Copy Solution: The permission of /etc/yarn/sbin/Linux-amd64-64/container-executor should be 6050 "},{"title":"Issue 3:How to get docker service log","type":1,"pageTitle":"Test and Troubleshooting","url":"docs/adminDocs/yarn/TestAndTroubleshooting#issue-3:how-to-get-docker-service-log","content":"Solution: we can get docker log with the following command journalctl -u docker Copy "},{"title":"Issue 4:docker can't remove containers with errors like device or resource busy","type":1,"pageTitle":"Test and Troubleshooting","url":"docs/adminDocs/yarn/TestAndTroubleshooting#issue-4:docker-cant-remove-containers-with-errors-like-device-or-resource-busy","content":"$ docker rm 0bfafa146431 Error response from daemon: Unable to remove filesystem for 0bfafa146431771f6024dcb9775ef47f170edb2f1852f71916ba44209ca6120a: remove /app/docker/containers/0bfafa146431771f6024dcb9775ef47f170edb2f152f71916ba44209ca6120a/shm: device or resource busy Copy Solution: to find which process leads to a device or resource busy, we can add a shell script, named find-busy-mnt.sh #!/usr/bin/env bash # A simple script to get information about mount points and pids and their # mount namespaces. if [ $# -ne 1 ];then echo \"Usage: $0 <devicemapper-device-id>\" exit 1 fi ID=$1 MOUNTS=`find /proc/*/mounts | xargs grep $ID 2>/dev/null` [ -z \"$MOUNTS\" ] && echo \"No pids found\" && exit 0 printf \"PID\\tNAME\\t\\tMNTNS\\n\" echo \"$MOUNTS\" | while read LINE; do PID=`echo $LINE | cut -d \":\" -f1 | cut -d \"/\" -f3` # Ignore self and thread-self if [ \"$PID\" == \"self\" ] || [ \"$PID\" == \"thread-self\" ]; then continue fi NAME=`ps -q $PID -o comm=` MNTNS=`readlink /proc/$PID/ns/mnt` printf \"%s\\t%s\\t\\t%s\\n\" \"$PID\" \"$NAME\" \"$MNTNS\" done Copy Kill the process by pid, which is found by the script $ chmod +x find-busy-mnt.sh ./find-busy-mnt.sh 0bfafa146431771f6024dcb9775ef47f170edb2f152f71916ba44209ca6120a # PID NAME MNTNS # 5007 ntpd mnt:[4026533598] $ kill -9 5007 Copy "},{"title":"Issue 5:Yarn failed to start containers","type":1,"pageTitle":"Test and Troubleshooting","url":"docs/adminDocs/yarn/TestAndTroubleshooting#issue-5:yarn-failed-to-start-containers","content":"if the number of GPUs required by applications is larger than the number of GPUs in the cluster, there would be some containers can't be created. "},{"title":"setup-jupyter","type":0,"sectionRef":"#","url":"docs/adminDocs/yarn/workbench/notebook/setup-jupyter","content":"","keywords":""},{"title":"Experiment environment","type":1,"pageTitle":"setup-jupyter","url":"docs/adminDocs/yarn/workbench/notebook/setup-jupyter#experiment-environment","content":""},{"title":"Setup Kubernetes","type":1,"pageTitle":"setup-jupyter","url":"docs/adminDocs/yarn/workbench/notebook/setup-jupyter#setup-kubernetes","content":"We recommend using kind to setup a Kubernetes cluster on a local machine. You can use Extra mounts to mount your host path to kind node and use Extra port mappings to port forward to the kind nodes. Please refer to kind configurationfor more details. You need to create a kind config file. The following is an example : kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 nodes: - role: control-plane extraMounts: # add a mount from /path/to/my/files on the host to /files on the node - hostPath: /tmp/submarine containerPath: /tmp/submarine extraPortMappings: - containerPort: 80 hostPort: 80 protocol: TCP # exposing additional ports to be used for NodePort services - containerPort: 30070 hostPort: 8888 protocol: TCP Copy Running the following command: kind create cluster --image kindest/node:v1.15.6 --config <path-to-kind-config> --name k8s-submarine kubectl create namespace submarine Copy "},{"title":"Deploy Jupyter Notebook","type":1,"pageTitle":"setup-jupyter","url":"docs/adminDocs/yarn/workbench/notebook/setup-jupyter#deploy-jupyter-notebook","content":"Once you have a running Kubernetes cluster, you can write a YAML file to deploy a jupyter notebook. In this example yaml, we use jupyter/minimal-notebookto make a single notebook running on the kind node. kubectl apply -f jupyter.yaml --namespace submarine Copy Once jupyter notebook is running, you can access the notebook server from the browser using http://localhost:8888 on local machine. You can enter and store a password for your notebook server with: kubectl exec -it <jupyter-pod-name> -- jupyter notebook password Copy After restarting the notebook server, you can login jupyter notebook with your new password. If you want to use JupyterLab : http://localhost:8888/lab Copy "},{"title":"README","type":0,"sectionRef":"#","url":"docs/adminDocs/yarn/workbench/README","content":"","keywords":""},{"title":"Register","type":1,"pageTitle":"README","url":"docs/adminDocs/yarn/workbench/README#register","content":"Everyone who needs to use Submarine for machine learning algorithm development can log in to Submarine Workbench's WEB homepage. On the homepage, click the registration link, fill in the user name, email address and password to register the user. At this time, the user status is waiting for approval status. After receiving the registration request from the user in Submarine Workbench, the administrator sets the operation authority according to the user's needs, sets the user's organization and allocates resources, and sets the user status to pass the audit. The user can log in to the Submarine Workbench. Different users have different permission. "},{"title":"Login","type":1,"pageTitle":"README","url":"docs/adminDocs/yarn/workbench/README#login","content":"Each Submarine user logs in to the Home page of Submarine Workbench by entering their username and password on the Login page. "},{"title":"Home","type":1,"pageTitle":"README","url":"docs/adminDocs/yarn/workbench/README#home","content":"In the Submarine Workbench Home page, the top level shows the user's resource usage and task execution through four charts. In the Quick Start list, the most commonly used feature links in the Workbench are displayed so that users can work quickly. In the Open Recent list, there are nine items that the user has used recently, so you can work quickly. At What's New? In the list, some of the latest features and project information released by Submarine are displayed to help you understand the latest developments in the Submarine project. "},{"title":"Workspace","type":1,"pageTitle":"README","url":"docs/adminDocs/yarn/workbench/README#workspace","content":"Workspace consists primarily of five tab pages, with the total number of items in each tab page's title. "},{"title":"Project","type":1,"pageTitle":"README","url":"docs/adminDocs/yarn/workbench/README#project","content":"In the Project page, all the projects created by the user themselves are displayed as cards.  Each Project card consists of the following sections: Project Type:Submarine currently supports six types of machine learning algorithm frameworks and development languages: Notebook, Python, R, Scala, Tensorflow, and PyTorch, which are identified by corresponding icons in the project card.Project Tags:Users can tag each Project with different tags for easy searching and management.Github/Gitlab integrated:Submarine Workbench is system integrated with Github/Gitlab, and each Project can perform Watch, Star, Fork, and Comment operations in Workbench. Watch:[TODO]Star:[TODO]Fork:[TODO]Comment:Users can comment on the project. Edit:Users can open projects in Notebook and perform algorithm development by double-clicking on the project or by clicking the Edit button.Download:The user downloads the project package locally by clicking the Download button.Setting:Edit project information such as project name, profile, visibility level and permissions.Delete:Delete the project and all included files. Add New Project# Clicking the Add New Project button on the project page will display the guide page for creating the project, and you can create a new project in just three steps. Step 1: Fill in the project name and project description in the Base Information step.  Visibility: Set the visibility level of the item externally Private: (Default) Set to private project, and all the files included in the project are not publicly displayed. but the execution result of the project can be individually set and exposed in Notebook, so that others can view the visual report of the project.Team: Set to team project, select the team name in the team selection box, and other members of the team can access the project according to the set permissions.Public: Set to public project, all users in Workbench can view this project through search. Permission: Set the external access rights of the project. The permission setting interface will appear only when the Visibility of the project is set to Team or Public. Can View When the project's Visibility is set to Team, other members of the team can only view the files for this project. When the project's Visibility is set to Public, other members of the Workbench can only view the files for this project. Can Edit When the project's Visibility is set to Team, other members of the team can view and edit the files for this project. When the project's Visibility is set to Public, other members of the Workbench can view and edit the files for this project. Can Execute When the project's Visibility is set to Team, other members of the team can view, edit, and execute the project's files. When the project's Visibility is set to Public, other members of the Workbench can view, edit, and execute the project's files. Step 2: In the Initial Project step, Workbench provides four ways to initialize the project. Template: Workbench Project templates with several different development languages and algorithm frameworks are built in. You can choose any template to initialize your project and you can execute it directly in Notebook without any modification. It is especially suitable for novices to experience quickly. Blank:Create a blank project, and later we can manually add the project's file in Notebook Upload: Initialize your project by uploading a file in notebook format that is compatible with the Jupyter Notebook and Zeppelin Notebook file formats. Git Repo: Fork a file in the repository to initialize the project in your Github/Gitlab account. Step 3:Preview the included files in the project  Save: Save the project to Workspace.Open In Notebook: Save the project to Workspace and open the project with Notebook. "},{"title":"Release","type":1,"pageTitle":"README","url":"docs/adminDocs/yarn/workbench/README#release","content":"[TODO] "},{"title":"Training","type":1,"pageTitle":"README","url":"docs/adminDocs/yarn/workbench/README#training","content":"[TODO] "},{"title":"Team","type":1,"pageTitle":"README","url":"docs/adminDocs/yarn/workbench/README#team","content":"[TODO] "},{"title":"Shared","type":1,"pageTitle":"README","url":"docs/adminDocs/yarn/workbench/README#shared","content":"[TODO] "},{"title":"Interpreters","type":1,"pageTitle":"README","url":"docs/adminDocs/yarn/workbench/README#interpreters","content":"[TODO] "},{"title":"Job","type":1,"pageTitle":"README","url":"docs/adminDocs/yarn/workbench/README#job","content":"[TODO] "},{"title":"Data","type":1,"pageTitle":"README","url":"docs/adminDocs/yarn/workbench/README#data","content":"[TODO] "},{"title":"Model","type":1,"pageTitle":"README","url":"docs/adminDocs/yarn/workbench/README#model","content":"[TODO] "},{"title":"Manager","type":1,"pageTitle":"README","url":"docs/adminDocs/yarn/workbench/README#manager","content":""},{"title":"User","type":1,"pageTitle":"README","url":"docs/adminDocs/yarn/workbench/README#user","content":"[TODO] "},{"title":"Team","type":1,"pageTitle":"README","url":"docs/adminDocs/yarn/workbench/README#team-1","content":"[TODO] "},{"title":"Data Dict","type":1,"pageTitle":"README","url":"docs/adminDocs/yarn/workbench/README#data-dict","content":"[TODO] "},{"title":"Department","type":1,"pageTitle":"README","url":"docs/adminDocs/yarn/workbench/README#department","content":"[TODO] "},{"title":"How to run workbench","type":1,"pageTitle":"README","url":"docs/adminDocs/yarn/workbench/README#how-to-run-workbench","content":"How To Run Submarine Workbench Guide "},{"title":"README.zh-CN","type":0,"sectionRef":"#","url":"docs/adminDocs/yarn/workbench/README.zh-CN","content":"","keywords":""},{"title":"Register","type":1,"pageTitle":"README.zh-CN","url":"docs/adminDocs/yarn/workbench/README.zh-CN#register","content":"每个需要使用 Submarine 进行机器学习算法开发的用户,都可以登录 Submarine Workbench 的 WEB 首页,在首页上,点击注册链接,填写用户名、注册邮箱和密码就可以完成注册,但此时用户状态为 等待审核 状态。 管理员在 Submarine Workbench 中接收到用户的注册请求后,设置用户的操作权限,所属机构部门和分配资源,设置用户状态为 审核通过 后,用户才可以登录 Submarine Workbench。 "},{"title":"Login","type":1,"pageTitle":"README.zh-CN","url":"docs/adminDocs/yarn/workbench/README.zh-CN#login","content":"每个 Submarine 的用户在 Login 页面中输入用户名和密码,登录到 Submarine Workbench 的首页 Home。 "},{"title":"Home","type":1,"pageTitle":"README.zh-CN","url":"docs/adminDocs/yarn/workbench/README.zh-CN#home","content":"在 Submarine Workbench 的 Home 首页中,顶层通过四个图表显示了用户的资源的使用情况和任务执行的情况。 在 Quick Start 列表中,显示了 Workbench 中最常使用的功能链接,方便用户可以快速的进行工作。 在 Open Recent 列表中,显示了用户最近使用过的九个项目,方便你快速的进行工作。 在 What‘s New? 列表中,显示了 Submarine 最新发布的一些功能特性和项目信息,方便你了解 Submarine 项目的最新进展。 "},{"title":"Workspace","type":1,"pageTitle":"README.zh-CN","url":"docs/adminDocs/yarn/workbench/README.zh-CN#workspace","content":"Workspace 主要有五个 Tab 页组成,每个 Tab 页的标题中显示了各自项目的总数。 "},{"title":"Project","type":1,"pageTitle":"README.zh-CN","url":"docs/adminDocs/yarn/workbench/README.zh-CN#project","content":"在 Project 页面中,以卡片的方式显示了用户自己创建的所有 Project。  每个 Project 卡片由以下部分内容组成: Project 类型:目前 Submarine 支持 Notebook、Python、R、Scala、Tensorflow 和 PyTorch 这六种类型的机器学习算法框架和开发语言,在项目卡片中以对应的图标进行标识。Project Tags:用户可以为每个 Project 打上不同的 Tag 标签,方便查找和管理。Github/Gitlab 集成:Submarine Workbench 与 Github/Gitlab 进行了系统集成,每个 Project 都可以在 Workbench 中进行 Watch、Star、Frok 和 Comment 操作。 Watch:[TODO]Star:[TODO]Fork:[TODO]Comment:用户可以在项目中进行评论 Edit:用户通过双击项目或者点击 Edit 按钮,可以在 Notebook 中打开项目,进行算法开发等操作。Download:用户通过点击 Download 按钮,将项目打包下载到本地。Setting:编辑项目信息,例如项目的名字,简介,分享级别和权限。Delete:删除项目中所有包含的文件。 Add New Project# 在项目页面中点击 Add New Project 按钮,将会显示出创建项目的引导页面,只需要三个步骤就可以创建一个新的项目。 第一步:在 Base Information 步骤中填写项目名称、项目简介。  Visibility: 设置项目对外的可见级别 Private: (默认)设置为私有项目,不对外公开项目中包含的所有文件,但是可以在 Notebook 中将项目的执行结果单独设置公开,方便其他人查看项目的可视化报告。Team: 设置为团队项目,在团队选择框中选择团队的名称,团队的其他成员可以根据设置的权限访问这个项目。Public: 设置为公开项目,Workbench 中的所有用户都可以通过搜索查看到这个项目。 Permission: 设置项目对外的访问权限,只有将项目的 Visibility 设置为 Team 或 Public 的时候,才会出现权限设置界面。 Can View 当项目的 Visibility 设置为 Team 时,团队中其他成员都只能查看这个项目的文件。 当项目的 Visibility 设置为 Public 时,Workbench 中其他成员都只能查看这个项目的文件。 Can Edit 当项目的 Visibility 设置为 Team 时,团队中其他成员都可以查看、编辑这个项目的文件。 当项目的 Visibility 设置为 Public 时,Workbench 中其他成员都可以查看、编辑这个项目的文件。 Can Execute 当项目的 Visibility 设置为 Team 时,团队中其他成员都可以查看、编辑、执行这个项目的文件。 当项目的 Visibility 设置为 Public 时,Workbench 中其他成员都可以查看、编辑、执行这个项目的文件。 第二步:在 Initial Project 步骤中,Workbench 提供了四种项目初始化的方式 Template: Workbench 内置了几种不同开发语言和算法框架的项目模版,你可以选择任何一种模版初始化你的项目,无需做任何修改就可以直接在 Notebook 中执行,特别适合新手进行快速的体验。 Blank:创建一个空白的项目,稍后,我们可以通过在 Notebook 中手工添加项目的文件 Upload: 通过上传 notebook 格式的文件来初始化你的项目,notebook 格式兼容 Jupyter Notebook 和 Zeppelin Notebook 文件格式。 Git Repo: 在你的 Github/Gitlab 账号中 Fork 一个仓库中的文件内容来初始化项目。 第三步:预览项目中的所包含的文件  Save: 将项目保存到 Workspace 中。Open In Notebook: 将项目保存到 Workspace 中,并用 Notebook 打开项目。 "},{"title":"Release","type":1,"pageTitle":"README.zh-CN","url":"docs/adminDocs/yarn/workbench/README.zh-CN#release","content":"[TODO] "},{"title":"Training","type":1,"pageTitle":"README.zh-CN","url":"docs/adminDocs/yarn/workbench/README.zh-CN#training","content":"[TODO] "},{"title":"Team","type":1,"pageTitle":"README.zh-CN","url":"docs/adminDocs/yarn/workbench/README.zh-CN#team","content":"[TODO] "},{"title":"Shared","type":1,"pageTitle":"README.zh-CN","url":"docs/adminDocs/yarn/workbench/README.zh-CN#shared","content":"[TODO] "},{"title":"Interpreters","type":1,"pageTitle":"README.zh-CN","url":"docs/adminDocs/yarn/workbench/README.zh-CN#interpreters","content":"[TODO] "},{"title":"Job","type":1,"pageTitle":"README.zh-CN","url":"docs/adminDocs/yarn/workbench/README.zh-CN#job","content":"[TODO] "},{"title":"Data","type":1,"pageTitle":"README.zh-CN","url":"docs/adminDocs/yarn/workbench/README.zh-CN#data","content":"[TODO] "},{"title":"Model","type":1,"pageTitle":"README.zh-CN","url":"docs/adminDocs/yarn/workbench/README.zh-CN#model","content":"[TODO] "},{"title":"Manager","type":1,"pageTitle":"README.zh-CN","url":"docs/adminDocs/yarn/workbench/README.zh-CN#manager","content":""},{"title":"User","type":1,"pageTitle":"README.zh-CN","url":"docs/adminDocs/yarn/workbench/README.zh-CN#user","content":"[TODO] "},{"title":"Team","type":1,"pageTitle":"README.zh-CN","url":"docs/adminDocs/yarn/workbench/README.zh-CN#team-1","content":"[TODO] "},{"title":"Data Dict","type":1,"pageTitle":"README.zh-CN","url":"docs/adminDocs/yarn/workbench/README.zh-CN#data-dict","content":"[TODO] "},{"title":"Department","type":1,"pageTitle":"README.zh-CN","url":"docs/adminDocs/yarn/workbench/README.zh-CN#department","content":"[TODO] "},{"title":"How to run workbench","type":1,"pageTitle":"README.zh-CN","url":"docs/adminDocs/yarn/workbench/README.zh-CN#how-to-run-workbench","content":"How To Run Submarine Workbench Guide "},{"title":"Environment REST API","type":0,"sectionRef":"#","url":"docs/api/environment","content":"","keywords":""},{"title":"Create Environment","type":1,"pageTitle":"Environment REST API","url":"docs/api/environment#create-environment","content":"POST /api/v1/environment Example Request curl -X POST -H \"Content-Type: application/json\" -d ' { \"name\": \"my-submarine-env\", \"dockerImage\" : \"continuumio/anaconda3\", \"kernelSpec\" : { \"name\" : \"team_default_python_3.7\", \"channels\" : [\"defaults\"], \"condaDependencies\" : [\"_ipyw_jlab_nb_ext_conf=0.1.0=py37_0\", \"alabaster=0.7.12=py37_0\", \"anaconda=2020.02=py37_0\", \"anaconda-client=1.7.2=py37_0\", \"anaconda-navigator=1.9.12=py37_0\"], \"pipDependencies\" : [\"apache-submarine==0.5.0\", \"pyarrow==0.17.0\"] } } ' http://127.0.0.1:32080/api/v1/environment Copy Example Response: { \"status\": \"OK\", \"code\": 200, \"result\": { \"environmentId\": \"environment_1586156073228_0001\", \"environmentSpec\": { \"name\": \"my-submarine-env\", \"dockerImage\" : \"continuumio/anaconda3\", \"kernelSpec\" : { \"name\" : \"team_default_python_3.7\", \"channels\" : [\"defaults\"], \"condaDependencies\" : [\"_ipyw_jlab_nb_ext_conf=0.1.0=py37_0\", \"alabaster=0.7.12=py37_0\", \"anaconda=2020.02=py37_0\", \"anaconda-client=1.7.2=py37_0\", \"anaconda-navigator=1.9.12=py37_0\"], \"pipDependencies\" : [\"apache-submarine==0.5.0\", \"pyarrow==0.17.0\"] } } } } Copy "},{"title":"List environment","type":1,"pageTitle":"Environment REST API","url":"docs/api/environment#list-environment","content":"GET /api/v1/environment Example Request: curl -X GET http://127.0.0.1:32080/api/v1/environment Copy Example Response: { \"status\": \"OK\", \"code\": 200, \"result\": [ { \"environmentId\": \"environment_1586156073228_0001\", \"environmentSpec\": { \"name\": \"my-submarine-env\", \"dockerImage\" : \"continuumio/anaconda3\", \"kernelSpec\" : { \"name\" : \"team_default_python_3.7\", \"channels\" : [\"defaults\"], \"condaDependencies\" : [\"_ipyw_jlab_nb_ext_conf=0.1.0=py37_0\", \"alabaster=0.7.12=py37_0\", \"anaconda=2020.02=py37_0\", \"anaconda-client=1.7.2=py37_0\", \"anaconda-navigator=1.9.12=py37_0\"], \"pipDependencies\" : [\"apache-submarine==0.5.0\", \"pyarrow==0.17.0\"] } } }, { \"environmentId\": \"environment_1586156073228_0002\", \"environmentSpec\": { \"name\": \"my-submarine-env-2\", \"dockerImage\" : \"continuumio/miniconda\", \"kernelSpec\" : { \"name\" : \"team_miniconda_python_3.7\", \"channels\" : [\"defaults\"], \"condaDependencies\" : [\"_ipyw_jlab_nb_ext_conf=0.1.0=py37_0\"], \"pipDependencies\" : [], } } } ] } Copy "},{"title":"Get environment","type":1,"pageTitle":"Environment REST API","url":"docs/api/environment#get-environment","content":"GET /api/v1/environment/{name} Example Request: curl -X GET http://127.0.0.1:32080/api/v1/environment/my-submarine-env Copy Example Response: { \"status\": \"OK\", \"code\": 200, \"result\": { \"environmentId\": \"environment_1586156073228_0001\", \"environmentSpec\": { \"name\": \"my-submarine-env\", \"dockerImage\" : \"continuumio/anaconda3\", \"kernelSpec\" : { \"name\" : \"team_default_python_3.7\", \"channels\" : [\"defaults\"], \"condaDependencies\" : [\"_ipyw_jlab_nb_ext_conf=0.1.0=py37_0\", \"alabaster=0.7.12=py37_0\", \"anaconda=2020.02=py37_0\", \"anaconda-client=1.7.2=py37_0\", \"anaconda-navigator=1.9.12=py37_0\"], \"pipDependencies\" : [\"apache-submarine==0.5.0\", \"pyarrow==0.17.0\"] } } } } Copy "},{"title":"Patch environment","type":1,"pageTitle":"Environment REST API","url":"docs/api/environment#patch-environment","content":"PATCH /api/v1/environment/{name} Example Request: curl -X PATCH -H \"Content-Type: application/json\" -d ' { \"name\": \"my-submarine-env\", \"dockerImage\" : \"continuumio/anaconda3\", \"kernelSpec\" : { \"name\" : \"team_default_python_3.7_updated\", \"channels\" : [\"defaults\"], \"condaDependencies\" : [\"_ipyw_jlab_nb_ext_conf=0.1.0=py37_0\", \"alabaster=0.7.12=py37_0\"], \"pipDependencies\" : [] } } ' http://127.0.0.1:32080/api/v1/environment/my-submarine-env Copy Example Response: { \"status\": \"OK\", \"code\": 200, \"success\": true, \"result\": { \"environmentId\": \"environment_1586156073228_0001\", \"environmentSpec\": { \"name\": \"my-submarine-env\", \"dockerImage\" : \"continuumio/anaconda3\", \"kernelSpec\" : { \"name\" : \"team_default_python_3.7_updated\", \"channels\" : [\"defaults\"], \"condaDependencies\" : [\"_ipyw_jlab_nb_ext_conf=0.1.0=py37_0\", \"alabaster=0.7.12=py37_0\"], \"pipDependencies\" : [] } } } } Copy dockerImage, \"name\" (of kernelSpec), \"channels\", \"condaDependencies\", \"pipDependencies\" etc can be updated using this API. \"name\" of EnvironmentSpec is not supported. "},{"title":"Delete environment","type":1,"pageTitle":"Environment REST API","url":"docs/api/environment#delete-environment","content":"GET /api/v1/environment/{name} Example Request: curl -X DELETE http://127.0.0.1:32080/api/v1/environment/my-submarine-env Copy Example Response: { \"status\": \"OK\", \"code\": 200, \"result\": { \"environmentId\": \"environment_1586156073228_0001\", \"environmentSpec\": { \"name\": \"my-submarine-env\", \"dockerImage\" : \"continuumio/anaconda3\", \"kernelSpec\" : { \"name\" : \"team_default_python_3.7_updated\", \"channels\" : [\"defaults\"], \"condaDependencies\" : [\"_ipyw_jlab_nb_ext_conf=0.1.0=py37_0\", \"alabaster=0.7.12=py37_0\"], \"pipDependencies\" : [] } } } } Copy "},{"title":"Experiment Template REST API","type":0,"sectionRef":"#","url":"docs/api/experiment-template","content":"","keywords":""},{"title":"Create experiment template","type":1,"pageTitle":"Experiment Template REST API","url":"docs/api/experiment-template#create-experiment-template","content":"POST /api/v1/template Example Request curl -X POST -H \"Content-Type: application/json\" -d ' { \"name\": \"my-tf-mnist-template\", \"author\": \"author\", \"description\": \"This is a template to run tf-mnist\", \"parameters\": [{ \"name\": \"learning_rate\", \"value\": 0.1, \"required\": true, \"description\": \"This is learning_rate of training.\" }, { \"name\": \"batch_size\", \"value\": 150, \"required\": true, \"description\": \"This is batch_size of training.\" }, { \"name\": \"experiment_name\", \"value\": \"tf-mnist1\", \"required\": true, \"description\": \"the name of experiment.\" } ], \"experimentSpec\": { \"meta\": { \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate={{learning_rate}} --batch_size={{batch_size}}\", \"name\": \"{{experiment_name}}\", \"envVars\": { \"ENV1\": \"ENV1\" }, \"framework\": \"TensorFlow\", \"namespace\": \"default\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" } } } ' http://127.0.0.1:32080/api/v1/template Copy "},{"title":"List experiment template","type":1,"pageTitle":"Experiment Template REST API","url":"docs/api/experiment-template#list-experiment-template","content":"GET /api/v1/template Example Request: curl -X GET http://127.0.0.1:32080/api/v1/template Copy "},{"title":"Get experiment template","type":1,"pageTitle":"Experiment Template REST API","url":"docs/api/experiment-template#get-experiment-template","content":"GET /api/v1/template/{name} Example Request: curl -X GET http://127.0.0.1:32080/api/v1/template/my-tf-mnist-template Copy "},{"title":"Patch template","type":1,"pageTitle":"Experiment Template REST API","url":"docs/api/experiment-template#patch-template","content":"PATCH /api/v1/template/{name} curl -X PATCH -H \"Content-Type: application/json\" -d ' { \"name\": \"my-tf-mnist-template\", \"author\": \"author-new\", \"description\": \"This is a template to run tf-mnist\", \"parameters\": [{ \"name\": \"learning_rate\", \"value\": 0.1, \"required\": true, \"description\": \"This is learning_rate of training.\" }, { \"name\": \"batch_size\", \"value\": 150, \"required\": true, \"description\": \"This is batch_size of training.\" }, { \"name\": \"experiment_name\", \"value\": \"tf-mnist1\", \"required\": true, \"description\": \"the name of experiment.\" } ], \"experimentSpec\": { \"meta\": { \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate={{learning_rate}} --batch_size={{batch_size}}\", \"name\": \"{{experiment_name}}\", \"envVars\": { \"ENV1\": \"ENV1\" }, \"framework\": \"TensorFlow\", \"namespace\": \"default\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" } } } ' http://127.0.0.1:32080/api/v1/template/my-tf-mnist-template Copy \"description\", \"parameters\", \"experimentSpec\", \"author\" etc can be updated using this API. \"name\" of experiment template is not supported. "},{"title":"Delete template","type":1,"pageTitle":"Experiment Template REST API","url":"docs/api/experiment-template#delete-template","content":"GET /api/v1/template/{name} Example Request: curl -X DELETE http://127.0.0.1:32080/api/v1/template/my-tf-mnist-template Copy "},{"title":"Use template to create a experiment","type":1,"pageTitle":"Experiment Template REST API","url":"docs/api/experiment-template#use-template-to-create-a-experiment","content":"POST /api/v1/experiment/{template_name} Example Request: curl -X POST -H \"Content-Type: application/json\" -d ' { \"name\": \"tf-mnist\", \"params\": { \"learning_rate\":\"0.01\", \"batch_size\":\"150\", \"experiment_name\":\"newexperiment1\" } } ' http://127.0.0.1:32080/api/v1/experiment/my-tf-mnist-template Copy "},{"title":"Experiment REST API","type":0,"sectionRef":"#","url":"docs/api/experiment","content":"","keywords":""},{"title":"Create Experiment (Using Anonymous/Embedded Environment)","type":1,"pageTitle":"Experiment REST API","url":"docs/api/experiment#create-experiment-using-anonymousembedded-environment","content":"POST /api/v1/experiment Example Request curl -X POST -H \"Content-Type: application/json\" -d ' { \"meta\": { \"name\": \"tf-mnist-json\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=2048M\" } } } ' http://127.0.0.1:32080/api/v1/experiment Copy Example Response: { \"status\": \"OK\", \"code\": 200, \"result\": { \"experimentId\": \"experiment_1586156073228_0001\", \"name\": \"tf-mnist-json\", \"uid\": \"28e39dcd-77d4-11ea-8dbb-0242ac110003\", \"status\": \"Accepted\", \"acceptedTime\": \"2020-06-13T22:59:29.000+08:00\", \"spec\": { \"meta\": { \"name\": \"tf-mnist-json\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=2048M\" } } } } } Copy "},{"title":"Create Experiment (Using Pre-defined/Stored Environment)","type":1,"pageTitle":"Experiment REST API","url":"docs/api/experiment#create-experiment-using-pre-definedstored-environment","content":"POST /api/v1/experiment Example Request curl -X POST -H \"Content-Type: application/json\" -d ' { \"meta\": { \"name\": \"tf-mnist-json\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"name\": \"my-submarine-env\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=2048M\" } } } ' http://127.0.0.1:32080/api/v1/experiment Copy 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 Example Response: { \"status\": \"OK\", \"code\": 200, \"result\": { \"experimentId\": \"experiment_1586156073228_0001\", \"name\": \"tf-mnist-json\", \"uid\": \"28e39dcd-77d4-11ea-8dbb-0242ac110003\", \"status\": \"Accepted\", \"acceptedTime\": \"2020-06-13T22:59:29.000+08:00\", \"spec\": { \"meta\": { \"name\": \"tf-mnist-json\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"name\": \"my-submarine-env\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=2048M\" } } } } } Copy "},{"title":"List experiment","type":1,"pageTitle":"Experiment REST API","url":"docs/api/experiment#list-experiment","content":"GET /api/v1/experiment Example Request: curl -X GET http://127.0.0.1:32080/api/v1/experiment Copy Example Response: { \"status\": \"OK\", \"code\": 200, \"result\": [ { \"experimentId\": \"experiment_1592057447228_0001\", \"name\": \"tf-mnist-json\", \"uid\": \"28e39dcd-77d4-11ea-8dbb-0242ac110003\", \"status\": \"Accepted\", \"acceptedTime\": \"2020-06-13T22:59:29.000+08:00\", \"spec\": { \"meta\": { \"name\": \"tf-mnist-json\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=2048M\" } } } }, { \"experimentId\": \"experiment_1592057447228_0002\", \"name\": \"mnist\", \"uid\": \"38e39dcd-77d4-11ea-8dbb-0242ac110003\", \"status\": \"Accepted\", \"acceptedTime\": \"2020-06-13T22:19:29.000+08:00\", \"spec\": { \"meta\": { \"name\": \"pytorch-mnist-json\", \"namespace\": \"default\", \"framework\": \"PyTorch\", \"cmd\": \"python /var/mnist.py --backend gloo\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"image\": \"apache/submarine:pytorch-dist-mnist-1.0\" }, \"spec\": { \"Master\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" } } } } ] } Copy "},{"title":"Get experiment","type":1,"pageTitle":"Experiment REST API","url":"docs/api/experiment#get-experiment","content":"GET /api/v1/experiment/{id} Example Request: curl -X GET http://127.0.0.1:32080/api/v1/experiment/experiment_1592057447228_0001 Copy Example Response: { \"status\": \"OK\", \"code\": 200, \"result\": { \"experimentId\": \"experiment_1592057447228_0001\", \"name\": \"tf-mnist-json\", \"uid\": \"28e39dcd-77d4-11ea-8dbb-0242ac110003\", \"status\": \"Accepted\", \"acceptedTime\": \"2020-06-13T22:59:29.000+08:00\", \"spec\": { \"meta\": { \"name\": \"tf-mnist-json\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=2048M\" } } } } } Copy "},{"title":"Patch experiment","type":1,"pageTitle":"Experiment REST API","url":"docs/api/experiment#patch-experiment","content":"PATCH /api/v1/experiment/{id} Example Request: curl -X PATCH -H \"Content-Type: application/json\" -d ' { \"meta\": { \"name\": \"tf-mnist-json\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 2, \"resources\": \"cpu=1,memory=2048M\" } } } ' http://127.0.0.1:32080/api/v1/experiment/experiment_1592057447228_0001 Copy Example Response: { \"status\": \"OK\", \"code\": 200, \"success\": true, \"result\": { \"meta\": { \"name\": \"tf-mnist-json\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 2, \"resources\": \"cpu=1,memory=2048M\" } } } } Copy "},{"title":"Delete experiment","type":1,"pageTitle":"Experiment REST API","url":"docs/api/experiment#delete-experiment","content":"GET /api/v1/experiment/{id} Example Request: curl -X DELETE http://127.0.0.1:32080/api/v1/experiment/experiment_1592057447228_0001 Copy Example Response: { \"status\": \"OK\", \"code\": 200, \"result\": { \"experimentId\": \"experiment_1586156073228_0001\", \"name\": \"tf-mnist-json\", \"uid\": \"28e39dcd-77d4-11ea-8dbb-0242ac110003\", \"status\": \"Accepted\", \"acceptedTime\": \"2020-06-13T22:59:29.000+08:00\", \"spec\": { \"meta\": { \"name\": \"tf-mnist-json\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 2, \"resources\": \"cpu=1,memory=2048M\" } } } } } Copy "},{"title":"List experiment Log","type":1,"pageTitle":"Experiment REST API","url":"docs/api/experiment#list-experiment-log","content":"GET /api/v1/experiment/logs Example Request: curl -X GET http://127.0.0.1:32080/api/v1/experiment/logs Copy Example Response: { \"status\": \"OK\", \"code\": 200, \"success\": null, \"message\": null, \"result\": [ { \"experimentId\": \"experiment_1589199154923_0001\", \"logContent\": [ { \"podName\": \"mnist-worker-0\", \"podLog\": null } ] }, { \"experimentId\": \"experiment_1589199154923_0002\", \"logContent\": [ { \"podName\": \"pytorch-dist-mnist-gloo-master-0\", \"podLog\": null }, { \"podName\": \"pytorch-dist-mnist-gloo-worker-0\", \"podLog\": null } ] } ], \"attributes\": {} } Copy "},{"title":"Get experiment Log","type":1,"pageTitle":"Experiment REST API","url":"docs/api/experiment#get-experiment-log","content":"GET /api/v1/experiment/logs/{id} Example Request: curl -X GET http://127.0.0.1:32080/api/v1/experiment/logs/experiment_1589199154923_0002 Copy Example Response: { \"status\": \"OK\", \"code\": 200, \"success\": null, \"message\": null, \"result\": { \"experimentId\": \"experiment_1589199154923_0002\", \"logContent\": [ { \"podName\": \"pytorch-dist-mnist-gloo-master-0\", \"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\" }, { \"podName\": \"pytorch-dist-mnist-gloo-worker-0\", \"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\" } ] }, \"attributes\": {} } Copy "},{"title":"How To Contribute to Submarine","type":0,"sectionRef":"#","url":"docs/community/contributing","content":"","keywords":""},{"title":"Preface","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/community/contributing#preface","content":"Apache Submarine is an Apache 2.0 License Software. Contributing to Submarine means you agree to the Apache 2.0 License. Please read Code of Conduct carefully.The document How It Works can help you understand Apache Software Foundation further. "},{"title":"Build Submarine","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/community/contributing#build-submarine","content":"Build From Code "},{"title":"Creating patches","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/community/contributing#creating-patches","content":"Submarine follows Fork & Pull model. "},{"title":"Step1: Fork apache/submarine github repository (first time)","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/community/contributing#step1-fork-apachesubmarine-github-repository-first-time","content":"Visit https://github.com/apache/submarineClick the Fork button to create a fork of the repository "},{"title":"Step2: Clone the Submarine to your local machine","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/community/contributing#step2-clone-the-submarine-to-your-local-machine","content":"# USERNAME – your Github user account name. git clone git@github.com:${USERNAME}/submarine.git # or: git clone https://github.com/${USERNAME}/submarine.git cd submarine # set upstream git remote add upstream git@github.com:apache/submarine.git # or: git remote add upstream https://github.com/apache/submarine.git # Don't push to the upstream master. git remote set-url --push upstream no_push # Check upstream/origin: # origin git@github.com:${USERNAME}/submarine.git (fetch) # origin git@github.com:${USERNAME}/submarine.git (push) # upstream git@github.com:apache/submarine.git (fetch) # upstream no_push (push) git remote -v Copy "},{"title":"Step3: Create a new Jira in Submarine project","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/community/contributing#step3-create-a-new-jira-in-submarine-project","content":"New contributors need privilege to create JIRA issues. Please email kaihsun@apache.org with your Jira username. In addition, the email title should be \"[New Submarine Contributor]\".Check Jira issue tracker for existing issues.Create a new Jira issue in Submarine project. When the issue is created, a Jira number (eg. SUBMARINE-748) will be assigned to the issue automatically. "},{"title":"Step4: Create a local branch for your contribution","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/community/contributing#step4-create-a-local-branch-for-your-contribution","content":"cd submarine # Make your local master up-to-date git checkout master git fetch upstream git rebase upstream/master # Create a new branch fro issue SUBMARINE-${jira_number} git checkout -b SUBMARINE-${jira_number} # Example: git checkout -b SUBMARINE-748 Copy "},{"title":"Step5: Develop & Create commits","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/community/contributing#step5-develop--create-commits","content":"You can edit the code on the SUBMARINE-${jira_number} branch. (Coding Style: Code Convention)Create commits git add ${edited files} git commit -m \"SUBMARINE-${jira_number}. ${Commit Message}\" # Example: git commit -m \"SUBMARINE-748. Update Contributing guide\" Copy "},{"title":"Step6: Syncing your local branch with upstream/master","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/community/contributing#step6-syncing-your-local-branch-with-upstreammaster","content":"# On SUBMARINE-${jira_number} branch git fetch upstream git rebase upstream/master Copy Please do not use git pull to synchronize your local branch. Because git pull does a merge to create merged commits, these will make commit history messy. "},{"title":"Step7: Push your local branch to your personal fork","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/community/contributing#step7-push-your-local-branch-to-your-personal-fork","content":"git push origin SUBMARINE-${jira_number} Copy "},{"title":"Step8: Check GitHub Actions status of your personal commit","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/community/contributing#step8-check-github-actions-status-of-your-personal-commit","content":"Visit https://github.com/${USERNAME}/submarine/actionsPlease make sure your new commits can pass all workflows before creating a pull request.  "},{"title":"Step9: Create a pull request on github UI","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/community/contributing#step9-create-a-pull-request-on-github-ui","content":"Visit your fork at https://github.com/${USERNAME}/submarine.gitClick Compare & Pull Request button to create pull request. Pull Request template# Pull request templateFilling the template thoroughly can improve the speed of the review process. Example:   "},{"title":"Step10: Check GitHub Actions status of your pull request in apache/submarine","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/community/contributing#step10-check-github-actions-status-of-your-pull-request-in-apachesubmarine","content":"Visit https://github.com/apache/submarine/actionsPlease make sure your pull request can pass all workflows.  "},{"title":"Step11: The Review Process","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/community/contributing#step11-the-review-process","content":"Anyone can be a reviewer and comment on the pull requests.Reviewer can indicate that a patch looks suitable for merging with a comment such as: \"Looks good\", \"LGTM\", \"+1\". (PS: LGTM = Looks Good To Me)At least one indication of suitability (e.g. \"LGTM\") from a committer is required to be merged. A committer can then initiate lazy consensus (\"Merge if there is no more discussion\") after which the code can be merged after a particular time (usually 24 hours) if there are no more reviews.Contributors can ping reviewers (including committers) by commenting 'Ready to review'. "},{"title":"Step12: Address review comments","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/community/contributing#step12-address-review-comments","content":"Push new commits to SUBMARINE-${jira_number} branch. The pull request will update automatically.After you address all review comments, committers will merge the pull request. "},{"title":"Code convention","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/community/contributing#code-convention","content":"We are following Google Code style: Java styleShell style There are some plugins to format, lint your code in IDE (use dev-support/maven-config/checkstyle.xml as rules) Checkstyle plugin for Intellij (Setting Guide)Checkstyle plugin for Eclipse (Setting Guide) "},{"title":"Notebook REST API","type":0,"sectionRef":"#","url":"docs/api/notebook","content":"","keywords":""},{"title":"Create a notebook instance","type":1,"pageTitle":"Notebook REST API","url":"docs/api/notebook#create-a-notebook-instance","content":"POST /api/v1/notebook Example Request curl -X POST -H \"Content-Type: application/json\" -d ' { \"meta\": { \"name\": \"test-nb\", \"namespace\": \"default\", \"ownerId\": \"e9ca23d68d884d4ebb19d07889727dae\" }, \"environment\": { \"name\": \"notebook-env\" }, \"spec\": { \"envVars\": { \"TEST_ENV\": \"test\" }, \"resources\": \"cpu=1,memory=1.0Gi\" } } ' http://127.0.0.1:32080/api/v1/notebook Copy Example Response: { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":\"Create a notebook instance\", \"result\":{ \"notebookId\":\"notebook_1597931805405_0001\", \"name\":\"test-nb\", \"uid\":\"5a94c01d-6a92-4222-bc66-c610c277546d\", \"url\":\"/notebook/default/test-nb/\", \"status\":\"creating\", \"reason\":\"The notebook instance is creating\", \"createdTime\":\"2020-08-20T21:58:27.000+08:00\", \"deletedTime\":null, \"spec\":{ \"meta\":{ \"name\":\"test-nb\", \"namespace\":\"default\", \"ownerId\":\"e9ca23d68d884d4ebb19d07889727dae\" }, \"environment\":{ \"name\":\"notebook-env\", \"dockerImage\":\"apache/submarine:jupyter-notebook-0.5.0\", \"kernelSpec\":{ \"name\": \"team_default_python_3.7\", \"channels\": [ \"defaults\" ], \"dependencies\": [ \"\" ] }, \"description\":null, \"image\":null }, \"spec\":{ \"envVars\":{ \"TEST_ENV\":\"test\" }, \"resources\":\"cpu=1,memory=1.0Gi\" } } }, \"attributes\":{} } Copy "},{"title":"List notebook instances which belong to user","type":1,"pageTitle":"Notebook REST API","url":"docs/api/notebook#list-notebook-instances-which-belong-to-user","content":"GET /api/v1/notebook Example Request: curl -X GET http://127.0.0.1:32080/api/v1/notebook?id={user_id} Copy Example Response: { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":\"List all notebook instances\", \"result\":[ { \"notebookId\":\"notebook_1597931805405_0001\", \"name\":\"test-nb\", \"uid\":\"5a94c01d-6a92-4222-bc66-c610c277546d\", \"url\":\"/notebook/default/test-nb/\", \"status\": \"running\", \"reason\": \"The notebook instance is running\", \"createdTime\":\"2020-08-20T21:58:27.000+08:00\", \"deletedTime\":null, \"spec\":{ \"meta\":{ \"name\":\"test-nb\", \"namespace\":\"default\", \"ownerId\":\"e9ca23d68d884d4ebb19d07889727dae\" }, \"environment\":{ \"name\":\"notebook-env\", \"dockerImage\":\"apache/submarine:jupyter-notebook-0.5.0\", \"kernelSpec\":{ \"name\": \"team_default_python_3.7\", \"channels\": [ \"defaults\" ], \"dependencies\": [ \"\" ] }, \"description\":null, \"image\":null }, \"spec\":{ \"envVars\":{ \"TEST_ENV\":\"test\" }, \"resources\":\"cpu=1,memory=1.0Gi\" } } } ], \"attributes\":{} } Copy "},{"title":"Get the notebook instance","type":1,"pageTitle":"Notebook REST API","url":"docs/api/notebook#get-the-notebook-instance","content":"GET /api/v1/notebook/{id} Example Request: curl -X GET http://127.0.0.1:32080/api/v1/notebook/{id} Copy Example Response: { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":\"Get the notebook instance\", \"result\":{ \"notebookId\":\"notebook_1597931805405_0001\", \"name\":\"test-nb\", \"uid\":\"5a94c01d-6a92-4222-bc66-c610c277546d\", \"url\":\"/notebook/default/test-nb/\", \"status\":\"running\", \"reason\":\"The notebook instance is running\", \"createdTime\":\"2020-08-20T21:58:27.000+08:00\", \"deletedTime\":null, \"spec\":{ \"meta\":{ \"name\":\"test-nb\", \"namespace\":\"default\", \"ownerId\":\"e9ca23d68d884d4ebb19d07889727dae\" }, \"environment\":{ \"name\":\"notebook-env\", \"dockerImage\":\"apache/submarine:jupyter-notebook-0.5.0\", \"kernelSpec\":{ \"name\": \"team_default_python_3.7\", \"channels\": [ \"defaults\" ], \"dependencies\": [ \"\" ] }, \"description\":null, \"image\":null }, \"spec\":{ \"envVars\":{ \"TEST_ENV\":\"test\" }, \"resources\":\"cpu=1,memory=1.0Gi\" } } }, \"attributes\":{} } Copy "},{"title":"Delete the notebook instance","type":1,"pageTitle":"Notebook REST API","url":"docs/api/notebook#delete-the-notebook-instance","content":"DELETE /api/v1/notebook/{id} Example Request: curl -X DELETE http://127.0.0.1:32080/api/v1/notebook/{id} Copy Example Response: { \"status\": \"OK\", \"code\": 200, \"success\": true, \"message\": \"Delete the notebook instance\", \"result\": { \"notebookId\": \"notebook_1597931805405_0001\", \"name\": \"test-nb\", \"uid\": \"5a94c01d-6a92-4222-bc66-c610c277546d\", \"url\": \"/notebook/default/test-nb/\", \"status\": \"terminating\", \"reason\": \"The notebook instance is terminating\", \"createdTime\": \"2020-08-22T14:03:19.000+08:00\", \"deletedTime\": \"2020-08-22T14:46:28+0800\", \"spec\": { \"meta\": { \"name\": \"test-nb\", \"namespace\": \"default\", \"ownerId\":\"e9ca23d68d884d4ebb19d07889727dae\" }, \"environment\": { \"name\": \"notebook-env\", \"dockerImage\": \"apache/submarine:jupyter-notebook-0.5.0\", \"kernelSpec\": { \"name\": \"team_default_python_3.7\", \"channels\": [ \"defaults\" ], \"dependencies\": [ \"\" ] }, \"description\": null, \"image\": null }, \"spec\": { \"envVars\": { \"TEST_ENV\": \"test\" }, \"resources\": \"cpu=1,memory=1.0Gi\" } } }, \"attributes\": {} } Copy "},{"title":"Guide for Apache Submarine Committers","type":0,"sectionRef":"#","url":"docs/community/HowToCommit","content":"","keywords":""},{"title":"New committers","type":1,"pageTitle":"Guide for Apache Submarine Committers","url":"docs/community/HowToCommit#new-committers","content":"New committers are encouraged to first read Apache's generic committer documentation: Apache New Committer GuideApache Committer FAQ The first act of a new core committer is typically to add their name to the credits page. This requires changing the site source inhttps://github.com/apache/submarine-site/blob/master/community/member.md. Once done, update the Submarine website as describedhere(TLDR; don't forget to regenerate the site with hugo, and commit the generated results, too). "},{"title":"Review","type":1,"pageTitle":"Guide for Apache Submarine Committers","url":"docs/community/HowToCommit#review","content":"Submarine committers should, as often as possible, attempt to review patches submitted by others. Ideally every submitted patch will get reviewed by a committer within a few days. If a committer reviews a patch they've not authored, and believe it to be of sufficient quality, then they can commit the patch, otherwise the patch should be cancelled with a clear explanation for why it was rejected. The list of submitted patches can be found in the GitHubPull Requests page. Committers should scan the list from top-to-bottom, looking for patches that they feel qualified to review and possibly commit. For non-trivial changes, it is best to get another committer to review & approve your own patches before commit. "},{"title":"Reject","type":1,"pageTitle":"Guide for Apache Submarine Committers","url":"docs/community/HowToCommit#reject","content":"Patches should be rejected which do not adhere to the guidelines inContribution Guidelines. Committers should always be polite to contributors and try to instruct and encourage them to contribute better patches. If a committer wishes to improve an unacceptable patch, then it should first be rejected, and a new patch should be attached by the committer for review. "},{"title":"Commit individual patches","type":1,"pageTitle":"Guide for Apache Submarine Committers","url":"docs/community/HowToCommit#commit-individual-patches","content":"Submarine uses git for source code version control. The writable repo is at -https://gitbox.apache.org/repos/asf/submarine.git It is strongly recommended to use the cicd script to merge the PRs. See the instructions athttps://github.com/apache/submarine/tree/master/dev-support/cicd "},{"title":"Adding Contributors role","type":1,"pageTitle":"Guide for Apache Submarine Committers","url":"docs/community/HowToCommit#adding-contributors-role","content":"There are three roles (Administrators, Committers, Contributors) in the project. Contributors who have Contributors role can become assignee of the issues in the project.Committers who have Committers role can set arbitrary roles in addition to Contributors role.Committers who have Administrators role can edit or delete all comments, or even delete issues in addition to Committers role. How to set roles Login to ASF JIRAGo to the project page (e.g. https://issues.apache.org/jira/browse/SUBMARINE )Hit \"Administration\" tabHit \"Roles\" tab in left sideAdd Administrators/Committers/Contributors role "},{"title":"Apache Submarine Community","type":0,"sectionRef":"#","url":"docs/community/README","content":"","keywords":""},{"title":"Communicating","type":1,"pageTitle":"Apache Submarine Community","url":"docs/community/README#communicating","content":"You can reach out to the community members via any one of the following ways: Slack Developer: https://the-asf.slack.com/submarine-dev/ Slack User: https://the-asf.slack.com/submarine-user/ Zoom: https://cloudera.zoom.us/j/880548968 Sync Up: https://docs.google.com/document/d/16pUO3TP4SxSeLduG817GhVAjtiph9HYpRHo_JgduDvw/edit "},{"title":"Your First Contribution","type":1,"pageTitle":"Apache Submarine Community","url":"docs/community/README#your-first-contribution","content":"You can start by finding an existing issue with the https://issues.apache.org/jira/projects/SUBMARINE/issues/SUBMARINE?filter=allopenissues label. These issues are well suited for new contributors. If a PR (Pull Request) submitted to the Submarine Github projects by you is approved and merged, then you become a Submarine Contributor. If you want to work on a new idea of relatively small scope: Submit an issue describing your proposed change to the repo in question. The repo owners will respond to your issue promptly. Submit a pull request of Submarine containing a tested change. Contributions are welcomed and greatly appreciated. See CONTRIBUTING for details on submitting patches and the contribution workflow. "},{"title":"How Do I Become a Committer?","type":1,"pageTitle":"Apache Submarine Community","url":"docs/community/README#how-do-i-become-a-committer","content":"First of all, you need to get involved and be a Contributor. Based on your track-record as a contributor, Per Apache code, PMCs vote on committership, may invite you to be a committer (after we've called a vote). When that happens, if you accept, the following process kicks into place... Note that becoming a committer is not just about submitting some patches; it‘s also about helping out on the development and user Slack User, helping with documentation and the issues. "},{"title":"How to commit","type":1,"pageTitle":"Apache Submarine Community","url":"docs/community/README#how-to-commit","content":"See How to commit for helper doc for Submarine committers. "},{"title":"Communication","type":1,"pageTitle":"Apache Submarine Community","url":"docs/community/README#communication","content":"Communication within the Submarine community abides by Apache’s Code of Conduct. "},{"title":"Mailing lists","type":1,"pageTitle":"Apache Submarine Community","url":"docs/community/README#mailing-lists","content":"Get help using Apache Submarine or contribute to the project on our mailing lists: Users : subscribe, unsubscribe, archivesfor usage questions, help, and announcements.Dev : subscribe, unsubscribe, archivesfor people wanting to contribute to the project.Commits : subscribe, unsubscribe, archivesfor commit messages and patches. "},{"title":"License","type":1,"pageTitle":"Apache Submarine Community","url":"docs/community/README#license","content":"Submarine source code is under the Apache 2.0 license. See the LICENSE file for details. "},{"title":"Environments Implementation","type":0,"sectionRef":"#","url":"docs/designDocs/environments-implementation","content":"","keywords":""},{"title":"Overview","type":1,"pageTitle":"Environments Implementation","url":"docs/designDocs/environments-implementation#overview","content":"Environment profiles (or environment for short) defines a set of libraries and when Docker is being used, a Docker image in order to run an experiment or a notebook. Docker and/or VM-image (such as, VirtualBox/VMWare images, Amazon Machine Images - AMI, Or custom image of Azure VM) defines the base layer of the environment. Please note that VM-image is different from VM instance type, On top of that, users can define a set of libraries (such as Python/R) to install, we call it kernel. Example of Environment  +-------------------+ |+-----------------+| || Python=3.7 || || Tensorflow=2.0 || |+---Exp Dependency+| |+-----------------+| ||OS=Ubuntu16.04 || ||CUDA=10.2 || ||GPU_Driver=375.. || |+---Base Library--+| +-------------------+ Copy As you can see, There're base libraries, such as what OS, CUDA version, GPU driver, etc. They can be achieved by specifying a VM-image / Docker image. On top of that, user can bring their dependencies, such as different version of Python, Tensorflow, Pandas, etc. How users use environment? Users can save different environment configs which can be also shared across the platform. Environment profiles can be used to run a notebook (e.g. by choosing different kernel from Jupyter), or an experiment. Predefined experiment library includes what environment to use so users don't have to choose which environment to use.  +-------------------+ |+-----------------+| +------------+ || Python=3.7 || |User1 | || Tensorflow=2.0 || +------------+ |+---Kernel -------+| +------------+ |+-----------------+|<----+ |User2 | ||OS=Ubuntu16.04 || + +------------+ ||CUDA=10.2 || | +------------+ ||GPU_Driver=375.. || | |User3 | |+---Base Library--+| | +------------+ +-----Default-Env---+ | | | +-------------------+ | |+-----------------+| | || Python=3.3 || | || Tensorflow=2.0 || | |+---kernel--------+| | |+-----------------+| | ||OS=Ubuntu16.04 || | ||CUDA=10.3 ||<----+ ||GPU_Driver=375.. || |+---Base Library--+| +-----My-Customized-+ Copy There're two environments in the above graph, \"Default-Env\" and \"My-Customized\", which can have different combinations of libraries for different experiments/notebooks. Users can choose different environments for different experiments as they want. Environments can be added/listed/deleted/selected through CLI/SDK/UI. Implementation# "},{"title":"Environment API definition","type":1,"pageTitle":"Environments Implementation","url":"docs/designDocs/environments-implementation#environment-api-definition","content":"Let look at what object definition looks like to define an environment, API of environment looks like:  name: \"my_submarine_env\", vm-image: \"...\", docker-image: \"...\", kernel: <object of kernel> description: \"this is the most common env used by team ABC\" Copy vm-image is optional if we don't need to launch new VM (like running a training job in a cloud-remote machine). docker-image is requiredkernel could be optional if kernel is already included by vm-image or docker-image.name of the environment should be unique in the system, so user can reference it when create a new experiment/notebook. "},{"title":"VM-image and Docker-image","type":1,"pageTitle":"Environments Implementation","url":"docs/designDocs/environments-implementation#vm-image-and-docker-image","content":"Docker-image and VM image should be prepared by system admin / SREs, it is hard for Data-Scientists to write an error-proof Dockerfile, and push/manage Docker images. This is one of the reason we hide Docker-image inside \"environment\", we will encourage users to customize their kernels if needed, but don't have to touch Dockerfile and build/push/manage new Docker images. As a project, we will document what's the best practice and example of Dockerfiles. Dockerfile should include proper ENTRYPOINT definition which pointed to our default script, so no matter it is notebook, or an experiment, we will setup kernel (see below) and other environment variables properly. "},{"title":"Kernel Implementation","type":1,"pageTitle":"Environments Implementation","url":"docs/designDocs/environments-implementation#kernel-implementation","content":"After investigating different alternatives (such as pipenv, venv, etc.), we decided to use Conda environment which nicely replaces Python virtual env, pip, and can also support other languages. More details can be found at: https://medium.com/@krishnaregmi/pipenv-vs-virtualenv-vs-conda-environment-3dde3f6869ed When once Conda, users can easily add, remove dependency of a Conda environment. User can also easily export environment to yaml file. The yaml file of Conda environment by using conda env export looks like: name: base channels: - defaults dependencies: - _ipyw_jlab_nb_ext_conf=0.1.0=py37_0 - alabaster=0.7.12=py37_0 - anaconda=2020.02=py37_0 - anaconda-client=1.7.2=py37_0 - anaconda-navigator=1.9.12=py37_0 - anaconda-project=0.8.4=py_0 - applaunchservices=0.2.1=py_0 Copy Including Conda kernel, the environment object may look like: name: \"my_submarine_env\", vm-image: \"...\", docker-image: \"...\", kernel: name: team_default_python_3.7 channels: - defaults dependencies: - _ipyw_jlab_nb_ext_conf=0.1.0=py37_0 - alabaster=0.7.12=py37_0 - anaconda=2020.02=py37_0 - anaconda-client=1.7.2=py37_0 - anaconda-navigator=1.9.12=py37_0 Copy When launch a new experiment / notebook session using the my_submarine_env, submarine server will use defined Docker image, and Conda kernel to launch of container. "},{"title":"Storage of Environment","type":1,"pageTitle":"Environments Implementation","url":"docs/designDocs/environments-implementation#storage-of-environment","content":"Environment of Submarine is just a simple text file, so it will be persisted in Submarine metastore, which is ideally a Database. Docker image is stored inside a regular Docker registry, which will be handled outside of the system. Conda dependencies are stored in Conda channel (where referenced packages are stored), which will be handled/setuped separately. (Popular conda channels are default and conda-forge) For more detailed discussion about storage-related implementations, please refer to storage-implementation. "},{"title":"How to implement to make user can easily use Submarine environments?","type":1,"pageTitle":"Environments Implementation","url":"docs/designDocs/environments-implementation#how-to-implement-to-make-user-can-easily-use-submarine-environments","content":"We like simplicities, and we don't want to leak complexities of implementations to the users. To make it happen, we have to do some works to hide complexities. There're two primary uses of environments: experiments and notebook, for both of them, users should not do works like explictily call conda active $env_name to active environments. To make it happen, what we can do is to include following parts in Dockerfile FROM ubuntu:18.04 <Include whatever base-libraries like CUDA, etc.> <Make sure conda (with our preferred version) is installed> <Make sure Jupyter (with our preferred version) is installed> # This is just a sample of Dockerfile, users can do more customizations if needed ENTRYPOINT [\"/submarine-bootstrap.sh\"] Copy When Submarine Server (this is implementation detail of Submarine Server, user will not see it at all) launch an experiment, or notebook, it will invoke following docker run command (or any other equvilant like using K8s spec): docker run <submarine_docker_image> --kernel <kernel_name> -- .... python train.py --batch_size 5 (and other parameters) Copy Similarily, to launch a notebook: docker run <submarine_docker_image> --kernel <kernel_name> -- .... jupyter Copy The submarine-bootstrap.sh is part of Submarine repo, and will handle --kernel argument which will invoke conda active $kernel_name before anything else. (Like run the training job). "},{"title":"Architecture and Requirment","type":0,"sectionRef":"#","url":"docs/designDocs/architecture-and-requirements","content":"","keywords":""},{"title":"Terminology","type":1,"pageTitle":"Architecture and Requirment","url":"docs/designDocs/architecture-and-requirements#terminology","content":"Term\tDescriptionUser\tA single data-scientist/data-engineer. User has resource quota, credentials Team\tUser belongs to one or more teams, teams have ACLs for artifacts sharing such as notebook content, model, etc. Admin\tAlso called SRE, who manages user's quotas, credentials, team, and other components. "},{"title":"Background","type":1,"pageTitle":"Architecture and Requirment","url":"docs/designDocs/architecture-and-requirements#background","content":"Everybody talks about machine learning today, and lots of companies are trying to leverage machine learning to push the business to the next level. Nowadays, as more and more developers, infrastructure software companies coming to this field, machine learning becomes more and more achievable. In the last decade, the software industry has built many open source tools for machine learning to solve the pain points: It was not easy to build machine learning algorithms manually, such as logistic regression, GBDT, and many other algorithms:Answer to that: Industries have open sourced many algorithm libraries, tools, and even pre-trained models so that data scientists can directly reuse these building blocks to hook up to their data without knowing intricate details inside these algorithms and models. It was not easy to achieve \"WYSIWYG, what you see is what you get\" from IDEs: not easy to get output, visualization, troubleshooting experiences at the same place.Answer to that: Notebooks concept was added to this picture, notebook brought the experiences of interactive coding, sharing, visualization, debugging under the same user interface. There're popular open-source notebooks like Apache Zeppelin/Jupyter. It was not easy to manage dependencies: ML applications can run on one machine is hard to deploy on another machine because it has lots of libraries dependencies.Answer to that: Containerization becomes popular and a standard to packaging dependencies to make it easier to \"build once, run anywhere\". Fragmented tools, libraries were hard for ML engineers to learn. Experiences learned in one company are not naturally migratable to another company.Answer to that: A few dominant open-source frameworks reduced the overhead of learning too many different frameworks, concepts. Data-scientist can learn a few libraries such as Tensorflow/PyTorch, and a few high-level wrappers like Keras will be able to create your machine learning application from other open-source building blocks. Similarly, models built by one library (such as libsvm) were hard to be integrated into machine learning pipeline since there's no standard format.Answer to that: Industry has built successful open-source standard machine learning frameworks such as Tensorflow/PyTorch/Keras so their format can be easily shared across. And efforts to build an even more general model format such as ONNX. It was hard to build a data pipeline that flows/transform data from a raw data source to whatever required by ML applications.Answer to that: Open source big data industry plays an important role in providing, simplify, unify processes and building blocks for data flows, transformations, etc. The machine learning industry is moving on the right track to solve major roadblocks. So what are the pain points now for companies which have machine learning needs? What can we help here? To answer this question, let's look at machine learning workflow first. "},{"title":"Machine Learning Workflows & Pain points","type":1,"pageTitle":"Architecture and Requirment","url":"docs/designDocs/architecture-and-requirements#machine-learning-workflows--pain-points","content":"1) From different data sources such as edge, clickstream, logs, etc. => Land to data lakes 2) From data lake, data transformation: => Data transformations: Cleanup, remove invalid rows/columns, select columns, sampling, split train/test data-set, join table, etc. => Data prepared for training. 3) From prepared data: => Training, model hyper-parameter tuning, cross-validation, etc. => Models saved to storage. 4) From saved models: => Model assurance, deployment, A/B testing, etc. => Model deployed for online serving or offline scoring. Copy Typically data scientists responsible for item 2)-4), 1) typically handled by a different team (called Data Engineering team in many companies, some Data Engineering team also responsible for part of data transformation) "},{"title":"Pain #1 Complex workflow/steps from raw data to model, different tools needed by different steps, hard to make changes to workflow, and not error-proof","type":1,"pageTitle":"Architecture and Requirment","url":"docs/designDocs/architecture-and-requirements#pain-1-complex-workflowsteps-from-raw-data-to-model-different-tools-needed-by-different-steps-hard-to-make-changes-to-workflow-and-not-error-proof","content":"It is a complex workflow from raw data to usable models, after talking to many different data scientists, we have learned that a typical procedure to train a new model and push to production can take months to 1-2 years. It is also a wide skill set required by this workflow. For example, data transformation needs tools like Spark/Hive for large scale and tools like Pandas for a small scale. And model training needs to be switched between XGBoost, Tensorflow, Keras, PyTorch. Building a data pipeline requires Apache Airflow or Oozie. Yes, there are great, standardized open-source tools built for many of such purposes. But how about changes need to be made for a particular part of the data pipeline? How about adding a few columns to the training data for experiments? How about training models, and push models to validation, A/B testing before rolling to production? All these steps need jumping between different tools, UIs, and very hard to make changes, and it is not error-proof during these procedures. "},{"title":"Pain #2 Dependencies of underlying resource management platform","type":1,"pageTitle":"Architecture and Requirment","url":"docs/designDocs/architecture-and-requirements#pain-2-dependencies-of-underlying-resource-management-platform","content":"To make jobs/services required by a machine learning platform to be able to run, we need an underlying resource management platform. There're some choices of resource management platform, and they have distinct advantages and disadvantages. For example, there're many machine learning platform built on top of K8s. It is relatively easy to get a K8s from a cloud vendor, easy to orchestrate machine learning required services/daemons run on K8s. However, K8s doesn't offer good support jobs like Spark/Flink/Hive. So if your company has Spark/Flink/Hive running on YARN, there're gaps and a significant amount of work to move required jobs from YARN to K8s. Maintaining a separate K8s cluster is also overhead to Hadoop-based data infrastructure. Similarly, if your company's data pipelines are mostly built on top of cloud resources and SaaS offerings, asking you to install a separate YARN cluster to run a new machine learning platform doesn't make a lot of sense. "},{"title":"Pain #3 Data scientist are forced to interact with lower-level platform components","type":1,"pageTitle":"Architecture and Requirment","url":"docs/designDocs/architecture-and-requirements#pain-3-data-scientist-are-forced-to-interact-with-lower-level-platform-components","content":"In addition to the above pain, we do see Data Scientists are forced to learn underlying platform knowledge to be able to build a real-world machine learning workflow. For most of the data scientists we talked with, they're experts of ML algorithms/libraries, feature engineering, etc. They're also most familiar with Python, R, and some of them understand Spark, Hive, etc. If they're asked to do interactions with lower-level components like fine-tuning a Spark job's performance; or troubleshooting job failed to launch because of resource constraints; or write a K8s/YARN job spec and mount volumes, set networks properly. They will scratch their heads and typically cannot perform these operations efficiently. "},{"title":"Pain #4 Comply with data security/governance requirements","type":1,"pageTitle":"Architecture and Requirment","url":"docs/designDocs/architecture-and-requirements#pain-4-comply-with-data-securitygovernance-requirements","content":"TODO: Add more details. "},{"title":"Pain #5 No good way to reduce routine ML code development","type":1,"pageTitle":"Architecture and Requirment","url":"docs/designDocs/architecture-and-requirements#pain-5-no-good-way-to-reduce-routine-ml-code-development","content":"After the data is prepared, the data scientist needs to do several routine tasks to build the ML pipeline. To get a sense of the existing the data set, it usually needs a split of the data set, the statistics of data set. These tasks have a common duplicate part of code, which reduces the efficiency of data scientists. An abstraction layer/framework to help the developer to boost ML pipeline development could be valuable. It's better than the developer only needs to fill callback function to focus on their key logic. Submarine# "},{"title":"Overview","type":1,"pageTitle":"Architecture and Requirment","url":"docs/designDocs/architecture-and-requirements#overview","content":""},{"title":"A little bit history","type":1,"pageTitle":"Architecture and Requirment","url":"docs/designDocs/architecture-and-requirements#a-little-bit-history","content":"Initially, Submarine is built to solve problems of running deep learning jobs like Tensorflow/PyTorch on Apache Hadoop YARN, allows admin to monitor launched deep learning jobs, and manage generated models. It was part of YARN initially, and code resides under hadoop-yarn-applications. Later, the community decided to convert it to be a subproject within Hadoop (Sibling project of YARN, HDFS, etc.) because we want to support other resource management platforms like K8s. And finally, we're reconsidering Submarine's charter, and the Hadoop community voted that it is the time to moved Submarine to a separate Apache TLP. "},{"title":"Why Submarine?","type":1,"pageTitle":"Architecture and Requirment","url":"docs/designDocs/architecture-and-requirements#why-submarine","content":"ONE PLATFORM Submarine is the ONE PLATFORM to allow Data Scientists to create end-to-end machine learning workflow. ONE PLATFORM means it supports Data Scientists and data engineers to finish their jobs on the same platform without frequently switching their toolsets. From dataset exploring data pipeline creation, model training, and tuning, and push model to production. All these steps can be completed within the ONE PLATFORM. Resource Management Independent It is also designed to be resource management independent, no matter if you have Apache Hadoop YARN, K8s, or just a container service, you will be able to run Submarine on top it. "},{"title":"Requirements and non-requirements","type":1,"pageTitle":"Architecture and Requirment","url":"docs/designDocs/architecture-and-requirements#requirements-and-non-requirements","content":""},{"title":"Notebook","type":1,"pageTitle":"Architecture and Requirment","url":"docs/designDocs/architecture-and-requirements#notebook","content":"1) Users should be able to create, edit, delete a notebook. (P0) 2) Notebooks can be persisted to storage and can be recovered if failure happens. (P0) 3) Users can trace back to history versions of a notebook. (P1) 4) Notebooks can be shared with different users. (P1) 5) Users can define a list of parameters of a notebook (looks like parameters of the notebook's main function) to allow executing a notebook like a job. (P1) 6) Different users can collaborate on the same notebook at the same time. (P2) A running notebook instance is called notebook session (or session for short). "},{"title":"Experiment","type":1,"pageTitle":"Architecture and Requirment","url":"docs/designDocs/architecture-and-requirements#experiment","content":"Experiments of Submarine is an offline task. It could be a shell command, a Python command, a Spark job, a SQL query, or even a workflow. The primary purposes of experiments under Submarine's context is to do training tasks, offline scoring, etc. However, experiment can be generalized to do other tasks as well. Major requirement of experiment: 1) Experiments can be submitted from UI/CLI/SDK. 2) Experiments can be monitored/managed from UI/CLI/SDK. 3) Experiments should not bind to one resource management platform (K8s/YARN). Type of experiments#  There're two types of experiments:Adhoc experiments: which includes a Python/R/notebook, or even an adhoc Tensorflow/PyTorch task, etc. Predefined experiment library: This is specialized experiments, which including developed libraries such as CTR, BERT, etc. Users are only required to specify a few parameters such as input, output, hyper parameters, etc. Instead of worrying about where's training script/dependencies located. Adhoc experiment# Requirements: Allow run adhoc scripts.Allow model engineer, data scientist to run Tensorflow/Pytorch programs on YARN/K8s/Container-cloud. Allow jobs easy access data/models in HDFS/s3, etc. Support run distributed Tensorflow/Pytorch jobs with simple configs.Support run user-specified Docker images.Support specify GPU and other resources. Predefined experiment library# Here's an example of predefined experiment library to train deepfm model: { \"input\": { \"train_data\": [\"hdfs:///user/submarine/data/tr.libsvm\"], \"valid_data\": [\"hdfs:///user/submarine/data/va.libsvm\"], \"test_data\": [\"hdfs:///user/submarine/data/te.libsvm\"], \"type\": \"libsvm\" }, \"output\": { \"save_model_dir\": \"hdfs:///user/submarine/deepfm\", \"metric\": \"auc\" }, \"training\": { \"batch_size\" : 512, \"field_size\": 39, \"num_epochs\": 3, \"feature_size\": 117581, ... } } Copy Predefined experiment libraries can be shared across users on the same platform, users can also add new or modified predefined experiment library via UI/REST API. We will also model AutoML, auto hyper-parameter tuning to predefined experiment library. Pipeline# Pipeline is a special kind of experiment: A pipeline is a DAG of experiments. Can be also treated as a special kind of experiment.Users can submit/terminate a pipeline.Pipeline can be created/submitted via UI/API. "},{"title":"Environment Profiles","type":1,"pageTitle":"Architecture and Requirment","url":"docs/designDocs/architecture-and-requirements#environment-profiles","content":"Environment profiles (or environment for short) defines a set of libraries and when Docker is being used, a Docker image in order to run an experiment or a notebook. Docker or VM image (such as AMI: Amazon Machine Images) defines the base layer of the environment. On top of that, users can define a set of libraries (such as Python/R) to install. Users can save different environment configs which can be also shared across the platform. Environment profiles can be used to run a notebook (e.g. by choosing different kernel from Jupyter), or an experiment. Predefined experiment library includes what environment to use so users don't have to choose which environment to use. Environments can be added/listed/deleted/selected through CLI/SDK. "},{"title":"Model","type":1,"pageTitle":"Architecture and Requirment","url":"docs/designDocs/architecture-and-requirements#model","content":"Model management# Model artifacts are generated by experiments or notebook.A model consists of artifacts from one or multiple files. Users can choose to save, tag, version a produced model.Once The Model is saved, Users can do the online model serving or offline scoring of the model. Model serving# After model saved, users can specify a serving script, a model and create a web service to serve the model. We call the web service to \"endpoint\". Users can manage (add/stop) model serving endpoints via CLI/API/UI. "},{"title":"Metrics for training job and model","type":1,"pageTitle":"Architecture and Requirment","url":"docs/designDocs/architecture-and-requirements#metrics-for-training-job-and-model","content":"Submarine-SDK provides tracking/metrics APIs, which allows developers to add tracking/metrics and view tracking/metrics from Submarine Workbench UI. "},{"title":"Deployment","type":1,"pageTitle":"Architecture and Requirment","url":"docs/designDocs/architecture-and-requirements#deployment","content":"Submarine Services (See architecture overview below) should be deployed easily on-prem / on-cloud. Since there're more and more public cloud offering for compute/storage management on cloud, we need to support deploy Submarine compute-related workloads (such as notebook session, experiments, etc.) to cloud-managed clusters. This also include Submarine may need to take input parameters from customers and create/manage clusters if needed. It is also a common requirement to use hybrid of on-prem/on-cloud clusters. "},{"title":"Security / Access Control / User Management / Quota Management","type":1,"pageTitle":"Architecture and Requirment","url":"docs/designDocs/architecture-and-requirements#security--access-control--user-management--quota-management","content":"There're 4 kinds of objects need access-control: Assets belong to Submarine system, which includes notebook, experiments and results, models, predefined experiment libraries, environment profiles.Data security. (Who owns what data, and what data can be accessed by each users). User credentials. (Such as LDAP).Other security, such as Git repo access, etc. For the data security / user credentials / other security, it will be delegated to 3rd libraries such as Apache Ranger, IAM roles, etc. Assets belong to Submarine system will be handled by Submarine itself. Here're operations which Submarine admin can do for users / teams which can be used to access Submarine's assets. Operations for admins Admin uses \"User Management System\" to onboard new users, upload user credentials, assign resource quotas, etc. Admins can create new users, new teams, update user/team mappings. Or remove users/teams. Admin can set resource quotas (if different from system default), permissions, upload/update necessary credentials (like Kerberos keytab) of a user.A DE/DS can also be an admin if the DE/DS has admin access. (Like a privileged user). This will be useful when a cluster is exclusively shared by a user or only shared by a small team.Resource Quota Management System helps admin to manage resources quotas of teams, organizations. Resources can be machine resources like CPU/Memory/Disk, etc. It can also include non-machine resources like $$-based budgets. "},{"title":"Dataset","type":1,"pageTitle":"Architecture and Requirment","url":"docs/designDocs/architecture-and-requirements#dataset","content":"There's also need to tag dataset which will be used for training and shared across the platform by different users. Like mentioned above, access to the actual data will be handled by 3rd party system like Apache Ranger / Hive Metastore which is out of the Submarine's scope. "},{"title":"Architecture Overview","type":1,"pageTitle":"Architecture and Requirment","url":"docs/designDocs/architecture-and-requirements#architecture-overview","content":""},{"title":"Architecture Diagram","type":1,"pageTitle":"Architecture and Requirment","url":"docs/designDocs/architecture-and-requirements#architecture-diagram","content":" +-----------------------------------------------------------------+ | Submarine UI / CLI / REST API / SDK | | Mini-Submarine | +-----------------------------------------------------------------+ +--------------------Submarine Server-----------------------------+ | +---------+ +---------+ +----------+ +----------+ +------------+| | |Data set | |Notebooks| |Experiment| |Models | |Servings || | +---------+ +---------+ +----------+ +----------+ +------------+| |-----------------------------------------------------------------| | | | +-----------------+ +-----------------+ +---------------------+ | | |Experiment | |Compute Resource | |Other Management | | | |Manager | | Manager | |Services | | | +-----------------+ +-----------------+ +---------------------+ | | Spark, template YARN/K8s/Docker | | TF, PyTorch, pipeline | | | + +-----------------+ + | |Submarine Meta | | | | Store | | | +-----------------+ | | | +-----------------------------------------------------------------+ (You can use http://stable.ascii-flow.appspot.com/#Draw to draw such diagrams) Copy Compute Resource Manager Helps to manage compute resources on-prem/on-cloud, this module can also handle cluster creation / management, etc. Experiment Manager Work with \"Compute Resource Manager\" to submit different kinds of workloads such as (distributed) Tensorflow / Pytorch, etc. Submarine SDK provides Java/Python/REST API to allow DS or other engineers to integrate into Submarine services. It also includes a mini-submarine component that launches Submarine components from a single Docker container (or a VM image). Details of Submarine Server design can be found at submarine-server-design. "},{"title":"Implementation Notes","type":0,"sectionRef":"#","url":"docs/designDocs/implementation-notes","content":"Before digging into details of implementations, you should read architecture-and-requirements first to understand overall requirements and architecture. Here're sub topics of Submarine implementations: Submarine Storage: How to store metadata, logs, metrics, etc. of Submarine.Submarine Environment: How environments created, managed, stored in Submarine. Submarine Experiment: How experiments managed, stored, and how the predefined experiment template works.Submarine Notebook: How experiments managed, stored, and how the predefined experiment template works.Submarine Server: How Submarine server is designed, architecture, implementation notes, etc. Working-in-progress designs, Below are designs which are working-in-progress, we will move them to the upper section once design & review is finished: Submarine HA Design: How Submarine HA can be achieved, using RAFT, etc.Submarine services deployment module: How to deploy submarine services to k8s, YARN or cloud. ","keywords":""},{"title":"Notebook Implementation","type":0,"sectionRef":"#","url":"docs/designDocs/notebook-implementation","content":"","keywords":""},{"title":"Overview","type":1,"pageTitle":"Notebook Implementation","url":"docs/designDocs/notebook-implementation#overview","content":""},{"title":"User's interaction","type":1,"pageTitle":"Notebook Implementation","url":"docs/designDocs/notebook-implementation#users-interaction","content":"Users can start N (N >= 0) number of Notebook sessions, a notebook session is a running notebook instance. Notebook session can be launched by Submarine UI (P0), and Submarine CLI (P2). When launch notebook session, users can choose T-shirt size of notebook session (how much mem/cpu/gpu resources, or resource profile such as small, medium, large, etc.). (P0)And user can choose an environment for notebook. More details please refer to environment implementation (P0)When start a notebook, user can choose what code to be initialized, similar to experiment. (P1)Optionally, users can choose to attach a persistent volume to a notebook session. (P2) Users can get a list of notebook sessions belongs to themselves, and connect to notebook session. User can choose to terminate a running notebook session. "},{"title":"Admin's interaction","type":1,"pageTitle":"Notebook Implementation","url":"docs/designDocs/notebook-implementation#admins-interaction","content":"How many concurrent notebook sessions can be launched by each user is determined by resource quota limits of each user, and maximum concurrent notebook sessions can be launched by each user. (P2) "},{"title":"Relationship with other components","type":1,"pageTitle":"Notebook Implementation","url":"docs/designDocs/notebook-implementation#relationship-with-other-components","content":""},{"title":"Metadata store","type":1,"pageTitle":"Notebook Implementation","url":"docs/designDocs/notebook-implementation#metadata-store","content":"Running notebook sessions' metadata need persistented in Submarine's metadata store (Database). "},{"title":"Submarine Server","type":1,"pageTitle":"Notebook Implementation","url":"docs/designDocs/notebook-implementation#submarine-server","content":" +--------------+ +--------Submarine Server--------------------+ |Submarine UI | | +-------------------+ | | |+---> Submarine | | | Notebook | | | Notebook REST API| | +--------------+ | | | | | +--------+----------+ +--------------+ | | | +->|Metastore | | | +--------v----------+ | |DB | | | | Submarine +--+ +--------------+ | | | Notebook Mgr | | | | | | | | | | | +--------+----------+ | | | | +----------|---------------------------------+ | +--------------+ +--------v---------+ | Notebook Session | | | | instance | | | +------------------+ Copy Once user use Submarine UI to launch a notebook session, Submarine notebook manager inside Submarine Server will persistent notebook session's metadata, and launch a new notebook session instance. "},{"title":"Resource manager","type":1,"pageTitle":"Notebook Implementation","url":"docs/designDocs/notebook-implementation#resource-manager","content":"When using K8s as resource manager, Submarine notebook session will run as a new POD. "},{"title":"Storage","type":1,"pageTitle":"Notebook Implementation","url":"docs/designDocs/notebook-implementation#storage","content":"There're several different types of storage requirements for Submarine notebook. For code, environment, etc, storage, please refer to storage implementation, check \"Localization of experiment/notebook/model-serving code\". When there're needs to attach volume (such as user's home folder) to Submarine notebook session, please check storage implementation, check \"Attachable volume\". "},{"title":"Environment","type":1,"pageTitle":"Notebook Implementation","url":"docs/designDocs/notebook-implementation#environment","content":"Submarine notebook's environment should be used to run experiment, model serving, etc. Please check environment implementation. (More specific to notebook, please check \"How to implement to make user can easily use Submarine environments\") Please note that notebook's Environment should include right version of notebook libraries, and admin should follow the guidance to build correct Docker image, Conda libraries to correctly run Notebook. "},{"title":"Submarine SDK (For Experiment, etc.)","type":1,"pageTitle":"Notebook Implementation","url":"docs/designDocs/notebook-implementation#submarine-sdk-for-experiment-etc","content":"Users can run new experiment, access metrics information, or do model operations using Submarine SDK. Submarine SDK is a Python library which can talk to Submarine Server which need Submarine Server's endpoint as well as user credentials. To ensure better experience, we recommend always install proper version of Submarine SDK from environment which users can use Submarine SDK directly from commandline. (We as Submarine community can provide sample Dockerfile or Conda environment which have correct base libraries installed for Submarine SDK). Submarine Server IP will be configured automatically by Submarine Server, and added as an envar when Submarine notebook session got launched. "},{"title":"Security","type":1,"pageTitle":"Notebook Implementation","url":"docs/designDocs/notebook-implementation#security","content":"Please refer to Security Implementation Once user accessed to a running notebook session, the user can also access resources of the notebook, capability of submit new experiment, and access data. This is also very dangerous so we have to protect it. A simple solution is to use token-based authentication https://jupyter-notebook.readthedocs.io/en/stable/security.html. A more common way is to use solutions like KNOX to support SSO. We need expand this section to more details. (TODO). "},{"title":"Experiment Implementation","type":0,"sectionRef":"#","url":"docs/designDocs/experiment-implementation","content":"","keywords":""},{"title":"Overview","type":1,"pageTitle":"Experiment Implementation","url":"docs/designDocs/experiment-implementation#overview","content":"This document talks about implementation of experiment, flows and design considerations. Experiment consists of following components, also interact with other Submarine or 3rd-party components, showing below:  +---------------------------------------+ +----------+ | Experiment Tasks | |Run | | | |Configs | | +----------------------------------+ | +----------+ | | Experiment Runnable Code | | +-----------------+ +----------+ | | | | |Output Artifacts | |Input Data| | | (Like train-job.py) | | |(Models, etc.) | | | | +----------------------------------+ | +-----------------+ | | | +----------------------------------+ | +----------+ | | Experiment Deps (Like Python) | | +-------------+ | +----------------------------------+ | |Logs/Metrics | | +----------------------------------+ | | | | | OS, Base Libaries (Like CUDA) | | +-------------+ | +----------------------------------+ | +---------------------------------------+ ^ | (Launch Task with resources) + +---------------------------------+ |Resource Manager (K8s/YARN/Cloud)| +---------------------------------+ Copy As showing in the above diagram, Submarine experiment consists of the following items: On the left side, there're input data and run configs. In the middle box, they're experiment tasks, it could be multiple tasks when we run distributed training, pipeline, etc. There're main runnable code, such as train.py for the training main entry point. The two boxes below: experiment dependencies and OS/Base libraries we called Submarine Environment Profile or Environment for short. Which defined what is the basic libraries to run the main experiment code. Experiment tasks are launched by Resource Manager, such as K8s/YARN/Cloud or just launched locally. There're resources constraints for each experiment tasks. (e.g. how much memory, cores, GPU, disk etc. can be used by tasks). On the right side, they're artifacts generated by experiments: Output artifacts: Which are main output of the experiment, it could be model(s), or output data when we do batch prediction.Logs/Metrics for further troubleshooting or understanding of experiment's quality. For the rest of the design doc, we will talk about how we handle environment, code, and manage output/logs, etc. "},{"title":"API of Experiment","type":1,"pageTitle":"Experiment Implementation","url":"docs/designDocs/experiment-implementation#api-of-experiment","content":"This is not a full definition of experiment, for more details, please reference to experiment API. Here's just an example of experiment object which help developer to understand what included in an experiment. experiment: name: \"abc\", type: \"script\", environment: \"team-default-ml-env\" code: sync_mode: s3 url: \"s3://bucket/training-job.tar.gz\" parameter: > python training.py --iteration 10 --input=s3://bucket/input output=s3://bucket/output resource_constraint: res=\"mem=20gb, vcore=3, gpu=2\" timeout: \"30 mins\" Copy This defined a \"script\" experiment, which has a name \"abc\", the name can be used to track the experiment. There's environment \"team-default-ml-env\" defined to make sure dependencies of the job can be downloaded properly before executing the job. code defined where the experiment code will be downloaded, we will support a couple of sync_mode like s3 (or abfs/hdfs), git, etc. Different types of experiments will have different specs, for example distributed Tensorflow spec may look like: experiment: name: \"abc-distributed-tf\", type: \"distributed-tf\", ps: environment: \"team-default-ml-cpu\" resource_constraint: res=\"mem=20gb, vcore=3, gpu=0\" worker: environment: \"team-default-ml-gpu\" resource_constraint: res=\"mem=20gb, vcore=3, gpu=2\" code: sync_mode: git url: \"https://foo.com/training-job.git\" parameter: > python /code/training-job/training.py --iteration 10 --input=s3://bucket/input output=s3://bucket/output tensorboard: enabled timeout: \"30 mins\" Copy Since we have different Docker image, one is using GPU and one is not using GPU, we can specify different environment and resource constraint. "},{"title":"Manage environments for experiment","type":1,"pageTitle":"Experiment Implementation","url":"docs/designDocs/experiment-implementation#manage-environments-for-experiment","content":"Please refer to environment-implementation.md for more details "},{"title":"Manage storages for experiment","type":1,"pageTitle":"Experiment Implementation","url":"docs/designDocs/experiment-implementation#manage-storages-for-experiment","content":"There're different types of storage, such as logs, metrics, dependencies (environments). For more details. Please refer to storage-implementations for more details. This also includes how to manage code for experiment code. "},{"title":"Manage Pre-defined experiment libraries","type":1,"pageTitle":"Experiment Implementation","url":"docs/designDocs/experiment-implementation#manage-pre-defined-experiment-libraries","content":""},{"title":"Flow: Submit an experiment","type":1,"pageTitle":"Experiment Implementation","url":"docs/designDocs/experiment-implementation#flow-submit-an-experiment","content":""},{"title":"Submit via SDK Flows.","type":1,"pageTitle":"Experiment Implementation","url":"docs/designDocs/experiment-implementation#submit-via-sdk-flows","content":"To better understand experiment implementation, It will be good to understand what is the steps of experiment submission. Please note that below code is just pseudo code, not official APIs. "},{"title":"Specify what environment to use","type":1,"pageTitle":"Experiment Implementation","url":"docs/designDocs/experiment-implementation#specify-what-environment-to-use","content":"Before submit the environment, you have to choose what environment to choose. Environment defines dependencies, etc. of an experiment or a notebook. might looks like below: conda_environment = \"\"\" name: conda-env channels: - defaults dependencies: - asn1crypto=1.3.0=py37_0 - blas=1.0=mkl - ca-certificates=2020.1.1=0 - certifi=2020.4.5.1=py37_0 - cffi=1.14.0=py37hb5b8e2f_0 - chardet=3.0.4=py37_1003 prefix: /opt/anaconda3/envs/conda-env \"\"\" # This environment can be different from notebook's own environment environment = create_environment { DockerImage = \"ubuntu:16\", CondaEnvironment = conda_environment } Copy To better understand how environment works, please refer to environment-implementation. "},{"title":"Create experiment, specify where's training code located, and parameters.","type":1,"pageTitle":"Experiment Implementation","url":"docs/designDocs/experiment-implementation#create-experiment-specify-wheres-training-code-located-and-parameters","content":"For ad-hoc experiment (code located at S3), assume training code is part of the training-job.tar.gz and main class is train.py. When the job is launched, whatever specified in the localize_artifacts will be downloaded. experiment = create_experiment { Environment = environment, ExperimentConfig = { type = \"adhoc\", localize_artifacts = [ \"s3://bucket/training-job.tar.gz\" ], name = \"abc\", parameter = \"python training.py --iteration 10 --input=\"s3://bucket/input output=\"s3://bucket/output\", } } experiment.run() experiment.wait_for_finish(print_output=True) Copy Run notebook file in offline mode# It is possible we want to run a notebook file in offline mode, to do that, here's code to use to run a notebook code experiment = create_experiment { Environment = environment, ExperimentConfig = { type = \"adhoc\", localize_artifacts = [ \"s3://bucket/folder/notebook-123.ipynb\" ], name = \"abc\", parameter = \"runipy training.ipynb --iteration 10 --input=\"s3://bucket/input output=\"s3://bucket/output\", } } experiment.run() experiment.wait_for_finish(print_output=True) Copy Run pre-defined experiment library# experiment = create_experiment { # Here you can use default environment of library Environment = environment, ExperimentConfig = { type = \"template\", name = \"abc\", # A unique name of template template = \"deepfm_ctr\", # yaml file defined what is the parameters need to be specified. parameter = { Input: \"S3://.../input\", Output: \"S3://.../output\" Training: { \"batch_size\": 512, \"l2_reg\": 0.01, ... } } } } experiment.run() experiment.wait_for_finish(print_output=True) Copy "},{"title":"Summarize: Experiment v.s. Notebook session","type":1,"pageTitle":"Experiment Implementation","url":"docs/designDocs/experiment-implementation#summarize-experiment-vs-notebook-session","content":"There's a common misunderstanding about what is the differences between running experiment v.s. running task from a notebook session. We will talk about differences and commonalities: Differences \tExperiment\tNotebook SessionRun mode\tOffline\tInteractive Output Artifacts (a.k.a model)\tPersisted in a shared storage (like S3/NFS)\tLocal in the notebook session container, could be ephemeral Run history (meta, logs, metrics)\tMeta/logs/metrics can be traced from experiment UI (or corresponding API)\tNo run history can be traced from Submarine UI/API. Can view the current running paragraph's log/metrics, etc. What to run?\tCode from Docker image or shared storage (like Tarball on S3, Github, etc.)\tLocal in the notebook's paragraph Commonalities \tExperiment & Notebook SessionEnvironment\tThey can share the same Environment configuration "},{"title":"Experiment-related modules inside Submarine-server","type":1,"pageTitle":"Experiment Implementation","url":"docs/designDocs/experiment-implementation#experiment-related-modules-inside-submarine-server","content":"(Please refer to architecture of submarine server for more details) "},{"title":"Experiment Manager","type":1,"pageTitle":"Experiment Implementation","url":"docs/designDocs/experiment-implementation#experiment-manager","content":"The experiment manager receives the experiment requests, persisting the experiment metas in a database(e.g. MySQL), will invoke subsequence modules to submit and monitor the experiment's execution. "},{"title":"Compute Cluster Manager","type":1,"pageTitle":"Experiment Implementation","url":"docs/designDocs/experiment-implementation#compute-cluster-manager","content":"After experiment accepted by experiment manager, based on which cluster the experiment intended to run (like mentioned in the previous sections, Submarine supports to manage multiple compute clusters), compute cluster manager will returns credentials to access the compute cluster. It will also be responsible to create a new compute cluster if needed. For most of the on-prem use cases, there's only one cluster involved, for such cases, ComputeClusterManager returns credentials to access local cluster if needed. "},{"title":"Experiment Submitter","type":1,"pageTitle":"Experiment Implementation","url":"docs/designDocs/experiment-implementation#experiment-submitter","content":"Experiment Submitter handles different kinds of experiments to run (e.g. ad-hoc script, distributed TF, MPI, pre-defined templates, Pipeline, AutoML, etc.). And such experiments can be managed by different resource management systems (e.g. K8s, YARN, container cloud, etc.) To meet the requirements to support variant kinds of experiments and resource managers, we choose to use plug-in modules to support different submitters (which requires jars to submarine-server’s classpath). To avoid jars and dependencies of plugins break the submarine-server, the plug-ins manager, or both. To solve this issue, we can instantiate submitter plug-ins using a classloader that is different from the system classloader. Submitter Plug-ins# Each plug-in uses a separate module under the server-submitter module. As the default implements, we provide for YARN and K8s. For YARN cluster, we provide the submitter-yarn and submitter-yarnservice plug-ins. The submitter-yarn plug-in used the TonY as the runtime to run the training job, and the submitter-yarnservice plug-in direct use the YARN Service which supports Hadoop v3.1 above. The submitter-k8s plug-in is used to submit the job to Kubernetes cluster and use the operator as the runtime. The submitter-k8s plug-in implements the operation of CRD object and provides the java interface. In the beginning, we use the tf-operator for the TensorFlow. If Submarine want to support the other resource management system in the future, such as submarine-docker-cluster (submarine uses the Raft algorithm to create a docker cluster on the docker runtime environment on multiple servers, providing the most lightweight resource scheduling system for small-scale users). We should create a new plug-in module named submitter-docker under the server-submitter module. "},{"title":"Experiment Monitor","type":1,"pageTitle":"Experiment Implementation","url":"docs/designDocs/experiment-implementation#experiment-monitor","content":"The monitor tracks the experiment life cycle and records the main events and key info in runtime. As the experiment run progresses, the metrics are needed for evaluation of the ongoing success or failure of the execution progress. Due to adapt the different cluster resource management system, so we need a generic metric info structure and each submitter plug-in should inherit and complete it by itself. "},{"title":"Invoke flows of experiment-related components","type":1,"pageTitle":"Experiment Implementation","url":"docs/designDocs/experiment-implementation#invoke-flows-of-experiment-related-components","content":" +-----------------+ +----------------+ +----------------+ +-----------------+ |Experiments | |Compute Cluster | |Experiment | | Experiment | |Mgr | |Mgr | |Submitter | | Monitor | +-----------------+ +----------------+ +----------------+ +-----------------+ + + + + User | | | | Submit |+------------------------------------->+ + Xperiment| Use submitter.validate(spec) | | | to validate spec and create | | | experiment object (state- | | | machine). | | | | | | The experiment manager will | | | persist meta-data to Database| | | | | | | | + + |+-----------------> + | | | Submit Experiments| | | | To ComputeCluster| | | | Mgr, get existing|+---------------->| | | cluster, or | Use Submitter | | | create a new one.| to submit |+---------------> | | | Different kinds | Once job is | | | of experiments | submitted, use |+----+ | | to k8s/yarn, etc| monitor to get | | | | | status updates | | | | | | | Monitor | | | | | Xperiment | | | | | status | | | | | |<--------------------------------------------------------+| | | | | | | | Update Status back to Experiment | | | | Manager | |<----+ | | | | | | | | | | | | v v v v Copy TODO: add more details about template, environment, etc. "},{"title":"Common modules of experiment/notebook-session/model-serving","type":1,"pageTitle":"Experiment Implementation","url":"docs/designDocs/experiment-implementation#common-modules-of-experimentnotebook-sessionmodel-serving","content":"Experiment/notebook-session/model-serving share a lot of commonalities, all of them are: Some workloads running on YARN/K8s.Need persist meta data to DB. Need monitor task/service running status from resource management system.  We need to make their implementation are loose-coupled, but at the same time, share some building blocks as much as possible (e.g. submit PodSpecs to K8s, monitor status, get logs, etc.) to reduce duplications. "},{"title":"Support Predefined-experiment-templates","type":1,"pageTitle":"Experiment Implementation","url":"docs/designDocs/experiment-implementation#support-predefined-experiment-templates","content":"Predefined Experiment Template is just a way to save data-scientists time to repeatedly entering parameters which is not error-proof and user experience is also bad. "},{"title":"Predefined-experiment-template API to run experiment","type":1,"pageTitle":"Experiment Implementation","url":"docs/designDocs/experiment-implementation#predefined-experiment-template-api-to-run-experiment","content":"Predefined experiment template consists a list of parameters, each of the parameter has 4 properties: Key\tRequired\tDefault Value\tDescriptionName of the key\ttrue/false\tWhen required = false, a default value can be provided by the template\tDescription of the parameter For the example of deepfm CTR training experiment mentioned in the architecture-and-requirements.md { \"input\": { \"train_data\": [\"hdfs:///user/submarine/data/tr.libsvm\"], \"valid_data\": [\"hdfs:///user/submarine/data/va.libsvm\"], \"test_data\": [\"hdfs:///user/submarine/data/te.libsvm\"], \"type\": \"libsvm\" }, \"output\": { \"save_model_dir\": \"hdfs:///user/submarine/deepfm\", \"metric\": \"auc\" }, \"training\": { \"batch_size\" : 512, \"field_size\": 39, \"num_epochs\": 3, \"feature_size\": 117581, ... } } Copy The template will be (in yaml format): # deepfm.ctr template name: deepfm.ctr author: description: > This is a template to run CTR training using deepfm algorithm, by default it runs single node TF job, you can also overwrite training parameters to use distributed training. parameters: - name: input.train_data required: true description: > train data is expected in SVM format, and can be stored in HDFS/S3 ... - name: training.batch_size required: false default: 32 description: This is batch size of training Copy The batch format can be used in UI/API. "},{"title":"Handle Predefined-experiment-template from server side","type":1,"pageTitle":"Experiment Implementation","url":"docs/designDocs/experiment-implementation#handle-predefined-experiment-template-from-server-side","content":"Please note that, the conversion of predefined-experiment-template will be always handled by server. The invoke flow looks like:  +------------Submarine Server -----------------------+ +--------------+ | +-----------------+ | |Client |+------->|Experimment Mgr | | | | | | | | +--------------+ | +-----------------+ | | + | Submit | +-------v---------+ Get Experiment Template | Template | |Experiment |<-----+From pre-registered | Parameters | |Template Registry| Templates | to Submarine | +-------+---------+ | Server | | | | +-------v---------+ +-----------------+ | | |Deepfm CTR Templ-| |Experiment- | | | |ate Handler +------>|Tensorflow | | | +-----------------+ +--------+--------+ | | | | | | | | +--------v--------+ | | |Experiment | | | |Submitter | | | +--------+--------+ | | | | | | | | +--------v--------+ | | | | | | | ...... | | | +-----------------+ | | | +----------------------------------------------------+ Copy Basically, from Client, it submitted template parameters to Submarine Server, inside submarine server, it finds the corresponding template handler based on the name. And the template handler converts input parameters to an actual experiment, such as a distributed TF experiment. After that, it goes the similar route to validate experiment spec, compute cluster manager, etc. to get the experiment submitted and monitored. Predefined-experiment-template is able to create any kind of experiment, it could be a pipeline:  +-----------------+ +------------------+ |Template XYZ | | XYZ Template | | |+---------------> | Handler | +-----------------+ +------------------+ + | | | | v +--------------------+ +------------------+ | +-----------------+| | Predefined | | | Split Train/ ||<----+| Pipeline | | | Test data || +------------------+ | +-------+---------+| | | | | +-------v---------+| | | Spark Job ETL || | | || | +-------+---------+| | | | | +-------v---------+| | | Train using || | | XGBoost || | +-------+---------+| | | | | +-------v---------+| | | Validate Train || | | Results || | +-----------------+| | | +--------------------+ Copy Template can be also chained to reuse other template handlers  +-----------------+ +------------------+ |Template XYZ | | XYZ Template | | |+---------------> | Handler | +-----------------+ +------------------+ + | v +------------------+ +------------------+ |Distributed | | ABC Template | |TF Experiment |<----+| Handler | +------------------+ +------------------+ Copy Template Handler is a callable class inside Submarine Server with a standard interface defined like. interface ExperimentTemplateHandler { ExperimentSpec createExperiment(TemplatedExperimentParameters param) } Copy We should avoid users to do coding when they want to add new template, we should have several standard template handler to deal with most of the template handling. Experiment templates can be registered/updated/deleted via Submarine Server's REST API, which need to be discussed separately in the doc. (TODO) "},{"title":"Storage Implementation","type":0,"sectionRef":"#","url":"docs/designDocs/storage-implementation","content":"","keywords":""},{"title":"ML-related objects and their storages","type":1,"pageTitle":"Storage Implementation","url":"docs/designDocs/storage-implementation#ml-related-objects-and-their-storages","content":"First let's look at what user will interact for most of the time: Notebook ExperimentModel Servings  +---------+ +------------+ |Logs |<--+|Notebook | +----------+ +---------+ +------------+ +----------------+ |Trackings | <-+|Experiment |<--+>|Model Artifacts | +----------+ +-----------------+ +------------+ +----------------+ +----------+<---+|ML-related Metric|<--+Servings | |tf.events | +-----------------+ +------------+ +----------+ ^ +-----------------+ + | Environments | +----------------------+ | | +-----------------+ | Submarine Metastore | | Dependencies | |Code | +----------------------+ | | +-----------------+ |Experiment Meta | | Docker Images | +----------------------+ +-----------------+ |Model Store Meta | +----------------------+ |Model Serving Meta | +----------------------+ |Notebook meta | +----------------------+ |Experiment Templates | +----------------------+ |Environments Meta | +----------------------+ Copy First of all, all the notebook-sessions / experiments / model-serving instances) are more or less interact with following storage objects: Logs for these tasks for troubleshooting. ML-related metrics such as loss, epoch, etc. (in contrast of system metrics such as CPU/memory usage, etc.) There're different types of ML-related metrics, for Tensorflow/pytorch, they can use tf.events and get visualizations on tensorboard. Or they can use tracking APIs (such as Submarine tracking, mlflow tracking, etc.) to output customized tracking results for non TF/Pytorch workloads. Training jobs of experiment typically generate model artifacts (files) which need persisted, and both of notebook, model serving needs to load model artifacts from persistent storage. There're various of meta information, such as experiment meta, model registry, model serving, notebook, experiment, environment, etc. We need be able to read these meta information back.We also have code for experiment (like training/batch-prediction), notebook (ipynb), and model servings.And notebook/experiments/model-serving need depend on environments (dependencies such as pip, and Docker Images). "},{"title":"Implementation considerations for ML-related objects","type":1,"pageTitle":"Storage Implementation","url":"docs/designDocs/storage-implementation#implementation-considerations-for-ml-related-objects","content":"Object Type\tCharacteristics\tWhere to storeMetrics: tf.events\tTime series data with k/v, appendable to file\tLocal/EBS, HDFS, Cloud Blob Storage Metrics: other tracking metrics\tTime series data with k/v, appendable to file\tLocal, HDFS, Cloud Blob Storage, Database Logs\tLarge volumes, #files are potentially huge.\tLocal (temporary), HDFS (need aggregation), Cloud Blob Storage Submarine Metastore\tCRUD operations for small meta data.\tDatabase Model Artifacts\tSize varies for model (from KBs to GBs). #files are potentially huge.\tHDFS, Cloud Blob Storage Code\tNeed version control. (Please find detailed discussions below for code storage and localization)\tTarball on HDFS/Cloud Blog Storage, or Git Environment (Dependencies, Docker Image) Public/private environment repo (like Conda channel), Docker registry. "},{"title":"Detailed discussions","type":1,"pageTitle":"Storage Implementation","url":"docs/designDocs/storage-implementation#detailed-discussions","content":"Store code for experiment/notebook/model-serving# There're following ways to get experiment code: 1) Code is part of Git repo: (Recommended) This is our recommended approach, once code is part of Git, it will be stored in version control, any change will be tracked, and much easier for users to trace back what change triggered a new bug, etc. 2) Code is part of Docker image: This is an anti-pattern and we will NOT recommend you to use it, Docker image can be used to include ANYTHING, like dependencies, the code you will execute, or even data. But this doesn't mean you should do it. We recommend to use Docker image ONLY for libraries/dependencies. Making code to be part of Docker image makes hard to edit code (if you want to update a value in your Python file, you will have to recreate the Docker image, push it and rerun it). 3) Code is part of S3/HDFS/ABFS: User may want to store their training code to a tarball on a shared storage. Submarine need to download code from remote storage to the launched container before running the code. Localization of experiment/notebook/model-serving code# To make user experiences keeps same across different environment, we will localize code to a same folder after the container is launched, preferably /code For example, there's a git repo need to be synced up for an experiment/notebook/model-serving (example above): experiment: #Or notebook, model-serving name: \"abc\", environment: \"team-default-ml-env\" ... (other fields) code: sync_mode: git url: \"https://foo.com/training-job.git\" Copy After localize, training-job/ will be placed under /code When we running on K8s environment, we can use K8s's initContainer and emptyDir to do these things for us. K8s POD spec (generated by Submarine server instead of user, user should NEVER edit K8s spec, that's too unfriendly to data-scientists): apiVersion: v1 kind: Pod metadata: name: experiment-abc spec: containers: - name: experiment-task image: training-job volumeMounts: - name: code-dir mountPath: /code initContainers: - name: git-localize image: git-sync command: \"git clone .. /code/\" volumeMounts: - name: code-dir mountPath: /code volumes: - name: code-dir emptyDir: {} Copy The above K8s spec create a code-dir and mount it to /code to launched containers. The initContainer git-localize uses https://github.com/kubernetes/git-sync to do the sync up. (If other storages are used such as s3, we can use similar initContainer approach to download contents) "},{"title":"System-related metrics/logs and their storages","type":1,"pageTitle":"Storage Implementation","url":"docs/designDocs/storage-implementation#system-related-metricslogs-and-their-storages","content":"Other than ML-related objects, we have system-related objects, including: Daemon logs (like logs of Submarine server). Logs for other dependency components (like Kubernetes logs when running on K8s). System metrics (Physical resource usages by daemons, launched training containers, etc.).  All these information should be handled by 3rd party system, such as Grafana, Prometheus, etc. And system admins are responsible to setup these infrastructures, dashboard. Users of submarine should NOT interact with system related metrics/logs. It is system admin's responsibility. "},{"title":"Attachable Volumes","type":1,"pageTitle":"Storage Implementation","url":"docs/designDocs/storage-implementation#attachable-volumes","content":"It is possible user has needs to have an attachable volume for their experiment / notebook, this is especially useful for notebook storage, since contents of notebook can be automatically saved, and it can be used as user's home folder. Downside of attachable volume is, it is not versioned, even notebook is mainly used for adhoc exploring tasks, an unversioned notebook file can lead to maintenance issues in the future. Since this is a common requirement, we can consider to support attachable volumes in Submarine in a long run, but with relatively lower priority. "},{"title":"In-scope / Out-of-scope","type":1,"pageTitle":"Storage Implementation","url":"docs/designDocs/storage-implementation#in-scope--out-of-scope","content":"Describe what Submarine project should own and what Submarine project should NOT own. "},{"title":"Submarine Server Implementation","type":0,"sectionRef":"#","url":"docs/designDocs/submarine-server/architecture","content":"","keywords":""},{"title":"Architecture Overview","type":1,"pageTitle":"Submarine Server Implementation","url":"docs/designDocs/submarine-server/architecture#architecture-overview","content":" +---------------Submarine Server ---+ | | | +------------+ +------------+ | | |Web Svc/Prxy| |Backend Svc | | +--Submarine Asset + | +------------+ +------------+ | |Project/Notebook | | ^ ^ | |Model/Metrics | +---|---------|---------------------+ |Libraries/Dataset | | | +------------------+ | | | +--|-Compute Cluster 1---+ +--Image Registry--+ + | | | | User's Images | User / | + | | | Admin | User Notebook Instance | +------------------+ | Experiment Runs | +------------------------+ +-Data Storage-----+ | S3/HDFS, etc. | +----Compute Cluster 2---+ | | +------------------+ ... Copy Here's a diagram to illustrate the Submarine's deployment. Submarine Server consists of web service/proxy, and backend services. They're like \"control planes\" of Submarine, and users will interact with these services.Submarine server could be a microservice architecture and can be deployed to one of the compute clusters. (see below, this will be useful when we only have one cluster). There're multiple compute clusters that could be used by Submarine service. For user's running notebook instance, jobs, etc. they will be placed to one of the compute clusters by user's preference or defined policies.Submarine's asset includes project/notebook(content)/models/metrics/dataset-meta, etc. can be stored inside Submarine's own database.Datasets can be stored in various locations such as S3/HDFS. Users can push container (such as Docker) images to a preconfigured registry in Submarine, so Submarine service can know how to pull required container images.Image Registry/Data-Storage, etc. are outside of Submarine server's scope and should be managed by 3rd party applications. "},{"title":"Submarine Server and its APIs","type":1,"pageTitle":"Submarine Server Implementation","url":"docs/designDocs/submarine-server/architecture#submarine-server-and-its-apis","content":"Submarine server is designed to allow data scientists to access notebooks, submit/manage jobs, manage models, create model training workflows, access datasets, etc. Submarine Server exposed UI and REST API. Users can also use CLI / SDK to manage assets inside Submarine Server.  +----------+ | CLI |+---+ +----------+ v +----------------+ +--------------+ | Submarine | +----------+ | REST API | | | | SDK |+>| |+> Server | +----------+ +--------------+ | | ^ +----------------+ +----------+ | | UI |+---+ +----------+ Copy REST API will be used by the other 3 approaches. (CLI/SDK/UI) The REST API Service handles HTTP requests and is responsible for authentication. It acts as the caller for the JobManager component. The REST component defines the generic job spec which describes the detailed info about job. For more details, refer to here. (Please note that we're converting REST endpoint description from Java-based REST API to swagger definition, once that is done, we should replace the link with swagger definition spec). "},{"title":"Proposal","type":1,"pageTitle":"Submarine Server Implementation","url":"docs/designDocs/submarine-server/architecture#proposal","content":" +---------------------+ +-----------+ | +--------+ +----+ | | | | |runtime1+-->+job1| | | workbench +---+ +----------------------------------+ | +--------+ +----+ | | | | | +------+ +---------------------+ | +-->+ +--------+ +----+ | +-----------+ | | | | | +------+ +-------+ | | | | |runtime2+-->+job2| | | | | | | | YARN | | K8s | | | | | +--------+ +----+ | +-----------+ | | | | | +------+ +-------+ | | | | YARN Cluster | | | | | | | | submitter | | | +---------------------+ | CLI +------>+ | REST | +---------------------+ +---+ | | | | | | +---------------------+ | | +---------------------+ +-----------+ | | | | | +-------+ +-------+ | | | | +--------+ +----+ | | | | | | |PlugMgr| |monitor| | | | | | +-->+job1| | +-----------+ | | | | | +-------+ +-------+ | | | | | | +----+ | | | | | | | | JobManager | | +-->+ |operator| +----+ | | SDK +---+ | +------+ +---------------------+ | | | +-->+job2| | | | +----------------------------------+ | +--------+ +----+ | +-----------+ | K8s Cluster | client server +---------------------+ Copy We propose to split the original core module in the old layout into two modules, CLI and server as shown in FIG. The submarine-client calls the REST APIs to submit and retrieve the job info. The submarine-server provides the REST service, job management, submitting the job to cluster, and running job in different clusters through the corresponding runtime. "},{"title":"Submarine Server Components","type":1,"pageTitle":"Submarine Server Implementation","url":"docs/designDocs/submarine-server/architecture#submarine-server-components","content":" +----------------------Submarine Server--------------------------------+ | +-----------------+ +------------------+ +--------------------+ | | | Experiment | |Notebook Session | |Environment Mgr | | | | Mgr | |Mgr | | | | | +-----------------+ +------------------+ +--------------------+ | | | | +-----------------+ +------------------+ +--------------------+ | | | Model Registry | |Model Serving Mgr | |Compute Cluster Mgr | | | | | | | | | | | +-----------------+ +------------------+ +--------------------+ | | | | +-----------------+ +------------------+ +--------------------+ | | | DataSet Mgr | |User/Team | |Metadata Mgr | | | | | |Permission Mgr | | | | | +-----------------+ +------------------+ +--------------------+ | +----------------------------------------------------------------------+ Copy "},{"title":"Experiment Manager","type":1,"pageTitle":"Submarine Server Implementation","url":"docs/designDocs/submarine-server/architecture#experiment-manager","content":"TODO "},{"title":"Notebook Sessions Manager","type":1,"pageTitle":"Submarine Server Implementation","url":"docs/designDocs/submarine-server/architecture#notebook-sessions-manager","content":"TODO "},{"title":"Environment Manager","type":1,"pageTitle":"Submarine Server Implementation","url":"docs/designDocs/submarine-server/architecture#environment-manager","content":"TODO "},{"title":"Model Registry","type":1,"pageTitle":"Submarine Server Implementation","url":"docs/designDocs/submarine-server/architecture#model-registry","content":"TODO "},{"title":"Model Serving Manager","type":1,"pageTitle":"Submarine Server Implementation","url":"docs/designDocs/submarine-server/architecture#model-serving-manager","content":"TODO "},{"title":"Compute Cluster Manager","type":1,"pageTitle":"Submarine Server Implementation","url":"docs/designDocs/submarine-server/architecture#compute-cluster-manager","content":"TODO "},{"title":"Dataset Manager","type":1,"pageTitle":"Submarine Server Implementation","url":"docs/designDocs/submarine-server/architecture#dataset-manager","content":"TODO "},{"title":"User/team permissions manager","type":1,"pageTitle":"Submarine Server Implementation","url":"docs/designDocs/submarine-server/architecture#userteam-permissions-manager","content":"TODO "},{"title":"Metadata Manager","type":1,"pageTitle":"Submarine Server Implementation","url":"docs/designDocs/submarine-server/architecture#metadata-manager","content":"TODO "},{"title":"Components/services outside of Submarine Server's scope","type":1,"pageTitle":"Submarine Server Implementation","url":"docs/designDocs/submarine-server/architecture#componentsservices-outside-of-submarine-servers-scope","content":"TODO: Describe what are the out-of-scope components, which should be handled and managed outside of Submarine server. Candidates are: Identity management, data storage, metastore storage, etc. "},{"title":"Generic Expeiment Spec","type":0,"sectionRef":"#","url":"docs/designDocs/submarine-server/experimentSpec","content":"","keywords":""},{"title":"Motivation","type":1,"pageTitle":"Generic Expeiment Spec","url":"docs/designDocs/submarine-server/experimentSpec#motivation","content":"As the machine learning platform, the submarine should support multiple machine learning frameworks, such as Tensorflow, Pytorch etc. But different framework has different distributed components for the training experiment. So that we designed a generic experiment spec to abstract the training experiment across different frameworks. In this way, the submarine-server can hide the complexity of underlying infrastructure differences and provide a cleaner interface to manager experiments "},{"title":"Proposal","type":1,"pageTitle":"Generic Expeiment Spec","url":"docs/designDocs/submarine-server/experimentSpec#proposal","content":"Considering the Tensorflow and Pytorch framework, we propose one spec which consists of library spec, submitter spec and task specs etc. Such as: name: \"mnist\" librarySpec: name: \"TensorFlow\" version: \"2.1.0\" image: \"apache/submarine:tf-mnist-with-summaries-1.0\" cmd: \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\" envVars: ENV_1: \"ENV1\" submitterSpec: type: \"k8s\" namespace: \"submarine\" taskSpecs: Ps: name: tensorflow replicas: 2 resources: \"cpu=4,memory=2048M,nvidia.com/gpu=1\" Worker: name: tensorflow replicas: 2 resources: \"cpu=4,memory=2048M,nvidia.com/gpu=1\" Copy "},{"title":"Library Spec","type":1,"pageTitle":"Generic Expeiment Spec","url":"docs/designDocs/submarine-server/experimentSpec#library-spec","content":"The library spec describes the info about machine learning framework. All the fields as below: field\ttype\toptional\tdescriptionname\tstring\tNO\tMachine Learning Framework name. Only \"tensorflow\" and \"pytorch\" is supported. It doesn't matter if the value is uppercase or lowercase. version\tstring\tNO\tThe version of ML framework. Such as: 2.1.0 image\tstring\tNO\tThe public image used for each task if not specified. Such as: apache/submarine cmd\tstring\tYES\tThe public entry cmd for the task if not specified. envVars\tkey/value\tYES\tThe public env vars for the task if not specified. "},{"title":"Submitter Spec","type":1,"pageTitle":"Generic Expeiment Spec","url":"docs/designDocs/submarine-server/experimentSpec#submitter-spec","content":"It describes the info of submitter which the user specified, such as yarn, yarnservice or k8s. All the fields as below: field\ttype\toptional\tdescriptiontype\tstring\tNO\tThe submitter type, supports k8s now configPath\tstring\tYES\tThe config path of the specified resource manager. You can set it in submarine-site.xml if run submarine-server locally namespace\tstring\tNO\tIt's known as queue in Apache Hadoop YARN and namespace in Kubernetes. kind\tstring\tYES\tIt's used for k8s submitter, supports TFJob and PyTorchJob apiVersion\tstring\tYES\tIt should pair with the kind, such as the TFJob's api version is kubeflow.org/v1 "},{"title":"Task Spec","type":1,"pageTitle":"Generic Expeiment Spec","url":"docs/designDocs/submarine-server/experimentSpec#task-spec","content":"It describes the task info, the tasks make up the experiment. So it must be specified when submit the experiment. All the tasks should putted into the key value collection. Such as: taskSpecs: Ps: name: tensorflow replicas: 2 resources: \"cpu=4,memory=2048M,nvidia.com/gpu=1\" Worker: name: tensorflow replicas: 2 resources: \"cpu=4,memory=2048M,nvidia.com/gpu=1\" Copy All the fields as below: field\ttype\toptional\tdescriptionname\tstring\tYES\tThe experiment name, if not specify using the library name image\tstring\tYES\tThe experiment docker image cmd\tstring\tYES\tThe entry command for running task envVars\tkey/value\tYES\tThe environment variables for the task resources\tstring\tNO\tThe limit resource for the task. Formatter: cpu=%s,memory=%s,nvidia.com/gpu=%s "},{"title":"Implements","type":1,"pageTitle":"Generic Expeiment Spec","url":"docs/designDocs/submarine-server/experimentSpec#implements","content":"For more info see SUBMARINE-321 "},{"title":"Security Implementation","type":0,"sectionRef":"#","url":"docs/designDocs/wip-designs/security-implementation","content":"","keywords":""},{"title":"Handle User's Credential","type":1,"pageTitle":"Security Implementation","url":"docs/designDocs/wip-designs/security-implementation#handle-users-credential","content":"Users credential includes Kerberoes Keytabs, Docker registry credentials, Github ssh-keys, etc. User's credential must be stored securitely, for example, via KeyCloak or K8s Secrets. (More details TODO) "},{"title":"Submarine Launcher","type":0,"sectionRef":"#","url":"docs/designDocs/wip-designs/submarine-launcher","content":"","keywords":""},{"title":"Introduction","type":1,"pageTitle":"Submarine Launcher","url":"docs/designDocs/wip-designs/submarine-launcher#introduction","content":"Submarine is built and run in Cloud Native, taking advantage of the cloud computing model. To give full play to the advantages of cloud computing. These applications are characterized by rapid and frequent build, release, and deployment. Combined with the features of cloud computing, they are decoupled from the underlying hardware and operating system, and can easily meet the requirements of scalability, availability, and portability. And provide better economy. In the enterprise data center, submarine can support k8s/yarn/docker three resource scheduling systems; in the public cloud environment, submarine can support these cloud services in GCE/AWS/Azure; "},{"title":"Requirement","type":1,"pageTitle":"Submarine Launcher","url":"docs/designDocs/wip-designs/submarine-launcher#requirement","content":""},{"title":"Cloud-Native Service","type":1,"pageTitle":"Submarine Launcher","url":"docs/designDocs/wip-designs/submarine-launcher#cloud-native-service","content":"The submarine server is a long-running services in the daemon mode. The submarine server is mainly used by algorithm engineers to provide online front-end functions such as algorithm development, algorithm debugging, data processing, and workflow scheduling. And submarine server also mainly used for back-end functions such as scheduling and execution of jobs, tracking of job status, and so on. Through the ability of rolling upgrades, we can better provide system stability. For example, we can upgrade or restart the workbench server without affecting the normal operation of submitted jobs. You can also make full use of system resources. For example, when the number of current developers or job tasks increases, The number of submarine server instances can be adjusted dynamically. In addition, submarine will provide each user with a completely independent workspace container. This workspace container has already deployed the development tools and library files commonly used by algorithm engineers including their operating environment. Algorithm engineers can work in our prepared workspaces without any extra work. Each user's workspace can also be run through a cloud service. "},{"title":"Service discovery","type":1,"pageTitle":"Submarine Launcher","url":"docs/designDocs/wip-designs/submarine-launcher#service-discovery","content":"With the cluster function of submarine, each service only needs to run in the container, and it will automatically register the service in the submarine cluster center. Submarine cluster management will automatically maintain the relationship between service and service, service and user. "},{"title":"Design","type":1,"pageTitle":"Submarine Launcher","url":"docs/designDocs/wip-designs/submarine-launcher#design","content":" "},{"title":"Launcher","type":1,"pageTitle":"Submarine Launcher","url":"docs/designDocs/wip-designs/submarine-launcher#launcher","content":"The submarine launcher module defines the complete interface. By using this interface, you can run the submarine server, and workspace in k8s / yarn / docker / AWS / GCE / Azure. "},{"title":"Launcher On Docker","type":1,"pageTitle":"Submarine Launcher","url":"docs/designDocs/wip-designs/submarine-launcher#launcher-on-docker","content":"In order to allow some small and medium-sized users without k8s/yarn to use submarine, we support running the submarine system in docker mode. Users only need to provide several servers with docker runtime environment. The submarine system can automatically cluster these servers into clusters, manage all the hardware resources of the cluster, and run the service or workspace container in this cluster through scheduling algorithms. "},{"title":"Launcher On Kubernetes","type":1,"pageTitle":"Submarine Launcher","url":"docs/designDocs/wip-designs/submarine-launcher#launcher-on-kubernetes","content":"submarine operator "},{"title":"Launcher On Yarn","type":1,"pageTitle":"Submarine Launcher","url":"docs/designDocs/wip-designs/submarine-launcher#launcher-on-yarn","content":"[TODO] "},{"title":"Launcher On AWS","type":1,"pageTitle":"Submarine Launcher","url":"docs/designDocs/wip-designs/submarine-launcher#launcher-on-aws","content":"[TODO] "},{"title":"Launcher On GCP","type":1,"pageTitle":"Submarine Launcher","url":"docs/designDocs/wip-designs/submarine-launcher#launcher-on-gcp","content":"[TODO] "},{"title":"Launcher On Azure","type":1,"pageTitle":"Submarine Launcher","url":"docs/designDocs/wip-designs/submarine-launcher#launcher-on-azure","content":"[TODO] "},{"title":"Cluster Server Design - High-Availability","type":0,"sectionRef":"#","url":"docs/designDocs/wip-designs/submarine-clusterServer","content":"","keywords":""},{"title":"Below is existing proposal:","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/designDocs/wip-designs/submarine-clusterServer#below-is-existing-proposal","content":""},{"title":"Introduction","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/designDocs/wip-designs/submarine-clusterServer#introduction","content":"The Submarine system contains a total of two daemon services, Submarine Server and Workbench Server. Submarine Server mainly provides job submission, job scheduling, job status monitoring, and model online service for Submarine. Workbench Server is mainly for algorithm users to provide algorithm development, Python/Spark interpreter operation, and other services through Notebook. The goal of the Submarine project is to provide high availability and high-reliability services for big data processing, algorithm development, job scheduling, model online services, model batch, and incremental updates. In addition to the high availability of big data and machine learning frameworks, the high availability of Submarine Server and Workbench Server itself is a key consideration. "},{"title":"Requirement","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/designDocs/wip-designs/submarine-clusterServer#requirement","content":""},{"title":"Cluster Metadata Center","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/designDocs/wip-designs/submarine-clusterServer#cluster-metadata-center","content":"Multiple Submarine (or Workbench) Server processes create a Submarine Cluster through the RAFT algorithm library. The cluster internally maintains a metadata center. All servers can operate the metadata. The RAFT algorithm ensures that multiple processes are simultaneously co-located. A data modification will not cause problems such as mutual coverage and dirty data. This metadata center stores data by means of key-value pairs. it can store/support a variety of data, but it should be noted that metadata is only suitable for storing small amounts of data and cannot be used to replace data storage. "},{"title":"Service discovery","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/designDocs/wip-designs/submarine-clusterServer#service-discovery","content":"By storing the information of the service or process in the metadata center, we can easily find the information of the service or process we need in any place, for example, the IP address and port where the Python interpreter will be the process. Information is stored in metadata, and other services can easily find process information through process IDs and connect to provide service discovery capabilities. "},{"title":"Cluster event","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/designDocs/wip-designs/submarine-clusterServer#cluster-event","content":"In the entire Submarine cluster, the servers can communicate with each other and other child processes to send cluster events to each other. The service or process processes the corresponding programs according to the cluster events. For example, the Workbench Server can be managed to Python. The interpreter process sends a shutdown event that controls the operation of the services and individual subprocesses throughout the cluster. Cluster events support both broadcast and separate delivery capabilities. "},{"title":"Independence","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/designDocs/wip-designs/submarine-clusterServer#independence","content":"We implement Submarine's clustering capabilities through the RAFT algorithm library, without relying on any external services (e.g. Zookeeper, Etcd, etc.) "},{"title":"Disadvantages","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/designDocs/wip-designs/submarine-clusterServer#disadvantages","content":"Because the RAFT algorithm requires more than half of the servers available to ensure the normality of the RAFT algorithm, if we need to turn on the clustering capabilities of Submarine (Workbench) Server, when more than half of the servers are unavailable, some programs may appear abnormal. Of course, we also detected this in the system, downgrading the system or refusing to provide service status. "},{"title":"System design","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/designDocs/wip-designs/submarine-clusterServer#system-design","content":""},{"title":"Universal design","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/designDocs/wip-designs/submarine-clusterServer#universal-design","content":"Modular design, Submarine (Workbench) Server exists in the Submarine system, these two services need to provide clustering capabilities, so we abstract the cluster function into a separate module for development so that Submarine (Workbench) Server can reuse the cluster function module. "},{"title":"ClusterConfigure","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/designDocs/wip-designs/submarine-clusterServer#clusterconfigure","content":"Add a submarine.server.addr and workbench.server.addr configuration items in submarine-site.xml, submarine.server.addr=ip1, ip2, ip3, through the IP list, the RAFT algorithm module in the server process can Cluster with other server processes. "},{"title":"ClusterServer","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/designDocs/wip-designs/submarine-clusterServer#clusterserver","content":"The ClusterServer module encapsulates the RAFT algorithm module, which can create a service cluster and read and write metadata based on the two configuration items submarine.server.addr or workbench.server.addr. The cluster management service runs in each submarine server; The cluster management service establishes a cluster by using the atomix RaftServer class of the Raft algorithm library, maintains the ClusterStateMachine, and manages the service state metadata of each submarine server through the PutCommand, GetQuery, and DeleteCommand operation commands. "},{"title":"ClusterClient","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/designDocs/wip-designs/submarine-clusterServer#clusterclient","content":"The ClusterClient module encapsulates the RAFT algorithm client module, which can communicate with the cluster according to the two configuration items submarine.server.addr or workbench.server.addr, read and write metadata, and write the IP and port information of the client process. Into the cluster's metadata center. The cluster management client runs in each submarine server and submarine Interpreter process; The cluster management client manages the submarine server and submarine Interpreter process state (metadata information) in the ClusterStateMachine by using the atomix RaftClient class of the Raft library to connect to the atomix RaftServer. When the submarine server and Submarine Interpreter processes are started, they are added to the ClusterStateMachine and are removed from the ClusterStateMachine when the Submarine Server and Submarine Interpreter processes are closed. "},{"title":"ClusterMetadata","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/designDocs/wip-designs/submarine-clusterServer#clustermetadata","content":"Metadata stores metadata information in a KV key-value pair。 ServerMeta:key='host:port',value= {SERVER_HOST=...,SERVER_PORT=...,...} Name\tDescriptionSUBMARINE_SERVER_HOST\tSubmarine server IP SUBMARINE_SERVER_PORT\tSubmarine server port WORKBENCH_SERVER_HOST\tSubmarine workbench server IP WORKBENCH_SERVER_PORT\tSubmarine workbench server port InterpreterMeta:key=InterpreterGroupId,value={INTP_TSERVER_HOST=...,...} Name\tDescriptionINTP_TSERVER_HOST\tSubmarine Interpreter Thrift IP INTP_TSERVER_PORT\tSubmarine Interpreter Thrift port INTP_START_TIME\tSubmarine Interpreter start time HEARTBEAT\tSubmarine Interpreter heartbeat time "},{"title":"Network fault tolerance","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/designDocs/wip-designs/submarine-clusterServer#network-fault-tolerance","content":"In a distributed environment, there may be network anomalies, network delays, or service exceptions. After submitting metadata to the cluster, check whether the submission is successful. After the submission fails, save the metadata in the local message queue. A separate commit thread to retry; "},{"title":"Cluster monitoring","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/designDocs/wip-designs/submarine-clusterServer#cluster-monitoring","content":"The cluster needs to monitor whether the Submarine Server and Submarine-Interpreter processes are working properly. The Submarine Server and Submarine Interpreter processes periodically send heartbeats to update their own timestamps in the cluster metadata. The Submarine Server with Leader identity periodically checks the timestamps of the Submarine Server and Submarine Interpreter processes to clear the timeout services and processes. The cluster monitoring module runs in each Submarine Server and Submarine Interpreter process, periodically sending heartbeat data of the service or process to the cluster; When the cluster monitoring module runs in Submarine Server, it sends the heartbeat to the cluster's ClusterStateMachine. If the cluster does not receive heartbeat information for a long time, Indicates that the service or process is abnormal and unavailable. Resource usage statistics strategy, in order to avoid the instantaneous high peak and low peak of the server, the cluster monitoring will collect the average resource usage in the most recent period for reporting, and improve the reasonable line and effectiveness of the server resources as much as possible; When the cluster monitoring module runs in the Submarine Server, it checks the heartbeat data of each Submarine Server and Submarine Interpreter process. If it times out, it considers that the service or process is abnormally unavailable and removes it from the cluster. "},{"title":"Atomix Raft algorithm library","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/designDocs/wip-designs/submarine-clusterServer#atomix-raft-algorithm-library","content":"In order to reduce the deployment complexity of distributed mode, submarine server does not use Zookeeper to build a distributed cluster. Multiple submarine server groups are built into distributed clusters by using the Raft algorithm in submarine server. The Raft algorithm is involved by atomix lib of atomix that has passed Jepsen consistency verification. "},{"title":"Synchronize workbench notes","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/designDocs/wip-designs/submarine-clusterServer#synchronize-workbench-notes","content":"In cluster mode, the user creates, modifies, and deletes the note on any of the servers. All need to be notified to all the servers in the cluster to synchronize the update of Notebook. Failure to do so will result in the user not being able to continue while switching to another server. "},{"title":"Listen for note update events","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/designDocs/wip-designs/submarine-clusterServer#listen-for-note-update-events","content":"Listen for the NEW_NOTE, DEL_NOTE, REMOVE_NOTE_TO_TRASH ... event of the notebook in the NotebookServer#onMessage() function. "},{"title":"Broadcast note update event","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/designDocs/wip-designs/submarine-clusterServer#broadcast-note-update-event","content":"The note is refreshed by notifying the event to all Submarine servers in the cluster via messaging Service. "},{"title":"How to Build Submarine","type":0,"sectionRef":"#","url":"docs/devDocs/BuildFromCode","content":"","keywords":""},{"title":"Prerequisites","type":1,"pageTitle":"How to Build Submarine","url":"docs/devDocs/BuildFromCode#prerequisites","content":"JDK 1.8Maven 3.3 or later ( < 3.8.1 )Docker "},{"title":"Quick Start","type":1,"pageTitle":"How to Build Submarine","url":"docs/devDocs/BuildFromCode#quick-start","content":""},{"title":"Build Your Custom Submarine Docker Images","type":1,"pageTitle":"How to Build Submarine","url":"docs/devDocs/BuildFromCode#build-your-custom-submarine-docker-images","content":"Submarine provides default Docker image in the release artifacts, sometimes you would like to do some modifications on the images. You can rebuild Docker image after you make changes. Note that you need to make sure the images built above can be accessed in k8s Usually this needs to rename and push to a proper Docker registry. mvn clean package -DskipTests Copy Build submarine server image: ./dev-support/docker-images/submarine/build.sh Copy Build submarine database image: ./dev-support/docker-images/database/build.sh Copy "},{"title":"Building source code / binary distribution","type":1,"pageTitle":"How to Build Submarine","url":"docs/devDocs/BuildFromCode#building-source-code--binary-distribution","content":"Checking releases for licenses mvn clean org.apache.rat:apache-rat-plugin:check Copy Create binary distribution with default hadoop version mvn clean package -DskipTests Copy Create binary distribution with hadoop-2.9.x version mvn clean package -DskipTests -Phadoop-2.9 Copy Create binary distribution with hadoop-2.10.x version mvn clean package -DskipTests -Phadoop-2.10 Copy Create binary distribution with hadoop-3.1.x version mvn clean package -DskipTests -Phadoop-3.1 Copy Create binary distribution with hadoop-3.2.x version mvn clean package -DskipTests -Phadoop-3.2 Copy Create source code distribution mvn clean package -DskipTests -Psrc Copy "},{"title":"Building source code / binary distribution with Maven Wrapper","type":1,"pageTitle":"How to Build Submarine","url":"docs/devDocs/BuildFromCode#building-source-code--binary-distribution-with-maven-wrapper","content":"Maven Wrapper (Optional): Maven Wrapper can help you avoid dependencies problem about Maven version. # Setup Maven Wrapper (Maven 3.6.1) mvn -N io.takari:maven:0.7.7:wrapper -Dmaven=3.6.1 # Check Maven Wrapper ./mvnw -version # Replace 'mvn' with 'mvnw'. Example: ./mvnw clean package -DskipTests Copy "},{"title":"Dependencies for Submarine","type":0,"sectionRef":"#","url":"docs/devDocs/Dependencies","content":"","keywords":""},{"title":"Kubernetes","type":1,"pageTitle":"Dependencies for Submarine","url":"docs/devDocs/Dependencies#kubernetes","content":"Kubernetes Version\tSupport?1.13.x (or earlier)\tX 1.14.x\t√ 1.15.x\t√ 1.16.x\t√ 1.17.x\tTo be verified 1.18.x\tTo be verified "},{"title":"KinD","type":1,"pageTitle":"Dependencies for Submarine","url":"docs/devDocs/Dependencies#kind","content":"KinD Version\tSupport?0.5.x (or earlier)\tX 0.6.x\t√ 0.7.x\t√ 0.8.x\t√ 0.9.x\t√ 0.10.x\t√ 0.11.x\t√ "},{"title":"Java","type":1,"pageTitle":"Dependencies for Submarine","url":"docs/devDocs/Dependencies#java","content":"TODO "},{"title":"Maven","type":1,"pageTitle":"Dependencies for Submarine","url":"docs/devDocs/Dependencies#maven","content":"TODO "},{"title":"Docker","type":1,"pageTitle":"Dependencies for Submarine","url":"docs/devDocs/Dependencies#docker","content":"TODO "},{"title":"Development Guide","type":0,"sectionRef":"#","url":"docs/devDocs/Development","content":"","keywords":""},{"title":"Video","type":1,"pageTitle":"Development Guide","url":"docs/devDocs/Development#video","content":"From this Video, you will know how to deal with the configuration of Submarine and be able to contribute to it via Github. "},{"title":"Develop server","type":1,"pageTitle":"Development Guide","url":"docs/devDocs/Development#develop-server","content":""},{"title":"Prerequisites","type":1,"pageTitle":"Development Guide","url":"docs/devDocs/Development#prerequisites","content":"JDK 1.8Maven 3.3 or later ( < 3.8.1 )Docker "},{"title":"Setting up checkstyle in IDE","type":1,"pageTitle":"Development Guide","url":"docs/devDocs/Development#setting-up-checkstyle-in-ide","content":"Checkstyle plugin may help to detect violations directly from the IDE. Install Checkstyle+IDEA plugin from Preference -> PluginsOpen Preference -> Tools -> Checkstyle -> Set Checkstyle version: Checkstyle version: 8.0 Add (+) a new Configuration File Description: SubmarineUse a local checkstyle ${SUBMARINE_HOME}/dev-support/maven-config/checkstyle.xml Open the Checkstyle Tool Window, select the Submarine rule and execute the check "},{"title":"Testing","type":1,"pageTitle":"Development Guide","url":"docs/devDocs/Development#testing","content":"Unit Test For each class, there is a corresponding testClass. For example, SubmarineServerTest is used for testing SubmarineServer. Whenever you add a funtion in classes, you must write a unit test to test it. Integration Test: IntegrationTestK8s.md "},{"title":"Build from source","type":1,"pageTitle":"Development Guide","url":"docs/devDocs/Development#build-from-source","content":"Before building We assume the developer use minikube as a local kubernetes cluster.Make sure you have installed the submarine helm-chart in the cluster. Package the Submarine server into a new jar file mvn package -DskipTests Copy Build the new server docker image in minikube # switch to minikube docker daemon to build image directly in minikube eval $(minikube docker-env) # run docker build ./dev-support/docker-images/submarine/build.sh # exit minikube docker daemon eval $(minikube docker-env -u) Copy Update server pod helm upgrade --set submarine.server.dev=true submarine ./helm-charts/submarine Copy Set submarine.server.dev to true, enabling the server pod to be launched with the new docker image. "},{"title":"Develop workbench","type":1,"pageTitle":"Development Guide","url":"docs/devDocs/Development#develop-workbench","content":"Deploy the Submarine Follow Getting Started/Quickstart, and make sure you can connect to http://localhost:32080 in the browser. Install the dependencies cd submarine-workbench/workbench-web npm install Copy Run the workbench based on proxy server npm run start Copy The request sent to http://localhost:4200 will be redirected to http://localhost:32080.Open http://localhost:4200 in browser to see the real-time change of workbench. Frontend E2E test: IntegrationTestE2E.md "},{"title":"Develop database","type":1,"pageTitle":"Development Guide","url":"docs/devDocs/Development#develop-database","content":"Build the docker image # switch to minikube docker daemon to build image directly in minikube eval $(minikube docker-env) # run docker build ./dev-support/docker-images/database/build.sh # exit minikube docker daemon eval $(minikube docker-env -u) Copy Deploy new pods in the cluster helm upgrade --set submarine.database.dev=true submarine ./helm-charts/submarine Copy Develop operator# Before building We assume the developer use minikube as a local kubernetes cluster.Make sure you have NOT installed the submarine helm-chart in the cluster. Start the minikube cluster minikube start --vm-driver=docker --kubernetes-version v1.15.11 Copy Install the dependencies cd submarine-cloud-v2/ cp -r ../helm-charts/submarine/charts ./helm-charts/submarine-operator/ go mod vendor helm install --set dev=true submarine-operator ./helm-charts/submarine-operator/ Copy Run the operator out-of-cluster make ./submarine-operator Copy Deploy a Submarine kubectl apply -f artifacts/examples/crd.yaml kubectl create ns submarine-user-test kubectl apply -n submarine-user-test -f artifacts/examples/example-submarine.yaml Copy Exposing service # Method1 -- use minikube ip minikube ip # you'll get the IP address of minikube, ex: 192.168.49.2 # Method2 -- use port-forwarding kubectl port-forward --address 0.0.0.0 -n submarine-user-test service/traefik 32080:80 Copy View workbench If you use method 1 in step 5, please go to http://{minikube ip}:32080, ex: http://192.168.49.2:32080 If you use method 2 in step 5, please go to http://127.0.0.1:32080 Delete submarine kubectl delete submarine example-submarine -n submarine-user-test Copy Stop the operator Press ctrl+c to stop the operator. Uninstall helm chart dependencies helm delete submarine-operator Copy For other details, please check out the README and Developer Guide on GitHub. "},{"title":"Develop Submarine Website","type":1,"pageTitle":"Development Guide","url":"docs/devDocs/Development#develop-submarine-website","content":"Submarine website is built using Docusaurus 2, a modern static website generator. We store all the website content in markdown format in the submarine/website/docs. When committing a new patch to the submarine repo, Docusaurus will help us generate the html and javascript files and push them to https://github.com/apache/submarine-site/tree/asf-site. To update the website, click “Edit this page” on the website.  "},{"title":"Add a new page","type":1,"pageTitle":"Development Guide","url":"docs/devDocs/Development#add-a-new-page","content":"If you want to add a new page to the website, make sure to add the file path to sidebars.js. "},{"title":"Installation","type":1,"pageTitle":"Development Guide","url":"docs/devDocs/Development#installation","content":"We use the yarn package manager to install all dependencies for the website yarn install Copy "},{"title":"Build","type":1,"pageTitle":"Development Guide","url":"docs/devDocs/Development#build","content":"Make sure you can successfully build the website before creating a pull request. yarn build Copy "},{"title":"Local Development","type":1,"pageTitle":"Development Guide","url":"docs/devDocs/Development#local-development","content":"This command starts a local development server and open up a browser window. Most changes are reflected live without having to restart the server. yarn start Copy "},{"title":"How to Run Frontend Integration Test","type":0,"sectionRef":"#","url":"docs/devDocs/IntegrationTestE2E","content":"","keywords":""},{"title":"Introduction","type":1,"pageTitle":"How to Run Frontend Integration Test","url":"docs/devDocs/IntegrationTestE2E#introduction","content":"The test cases under the directory test-e2e are integration tests to ensure the correctness of the Submarine Workbench. These test cases can be run either locally or on GitHub Actions. "},{"title":"Run E2E test locally","type":1,"pageTitle":"How to Run Frontend Integration Test","url":"docs/devDocs/IntegrationTestE2E#run-e2e-test-locally","content":"Ensure you have setup the submarine locally. If not, you can refer to Submarine Local Deployment. Forward port kubectl port-forward --address 0.0.0.0 service/submarine-traefik 32080:80 Copy Modify run_frontend_e2e.sh You need to modify the port and the URL in this script to where you run the workbench on. Example: If your Submarine workbench is running on 127.0.0.1:4200, you should modify the WORKBENCH_PORT to 4200. # at submarine-test/test_e2e/run_frontend_e2e.sh ... # ======= Modifiable Variables ======= # # Note: URL must start with \"http\" # (Ref: https://www.selenium.dev/selenium/docs/api/java/org/openqa/selenium/WebDriver.html#get(java.lang.String)) WORKBENCH_PORT=8080 #<= modify this URL=\"http://127.0.0.1\" #<=modify this # ==================================== # ... Copy Run run_frontend_e2e.sh (Run a specific test case) This script will check whether the port can be accessed or not, and run the test case. # at submarine-test/test_e2e ./run_fronted_e2e.sh ${TESTCASE} # TESTCASE is the IT you want to run, ex: loginIT, experimentIT... Copy Run all test cases Following commands will compile all files and run all files ending with \"IT\" in the directory. # Make sure the Submarine workbench is running on 127.0.0.1:8080 cd submarine/submarine-test/test-e2e # Method 1: mvn verify # Method 2: mvn clean install -U Copy "},{"title":"Run E2E test in GitHub Actions","type":1,"pageTitle":"How to Run Frontend Integration Test","url":"docs/devDocs/IntegrationTestE2E#run-e2e-test-in-github-actions","content":"Each time a commit is pushed, GitHub Actions will be triggered automatically. "},{"title":"Add a new frontend E2E test case","type":1,"pageTitle":"How to Run Frontend Integration Test","url":"docs/devDocs/IntegrationTestE2E#add-a-new-frontend-e2e-test-case","content":"WARNING You MUST read the document carefully, and understand the difference between explicit wait, implicit wait, and fluent wait.Do not mix implicit and explicit waits. Doing so can cause unpredictable wait times. We define many useful functions in AbstractSubmarineIT.java. "},{"title":"Project Architecture","type":0,"sectionRef":"#","url":"docs/devDocs/README","content":"","keywords":""},{"title":"1. Introduction","type":1,"pageTitle":"Project Architecture","url":"docs/devDocs/README#1-introduction","content":"This document mainly describes the structure of each module of the Submarine project, the development and test description of each module. "},{"title":"2. Submarine Project Structure","type":1,"pageTitle":"Project Architecture","url":"docs/devDocs/README#2-submarine-project-structure","content":""},{"title":"2.1. submarine-client","type":1,"pageTitle":"Project Architecture","url":"docs/devDocs/README#21-submarine-client","content":"Provide the CLI interface for submarine user. (Currently only support YARN service) "},{"title":"2.2. submarine-cloud-v2","type":1,"pageTitle":"Project Architecture","url":"docs/devDocs/README#22-submarine-cloud-v2","content":"The operator for Submarine application. For details, please see the README on github. "},{"title":"2.3. submarine-commons","type":1,"pageTitle":"Project Architecture","url":"docs/devDocs/README#23-submarine-commons","content":"Define utility function used in multiple packages, mainly related to hadoop. "},{"title":"2.4. submarine-dist","type":1,"pageTitle":"Project Architecture","url":"docs/devDocs/README#24-submarine-dist","content":"Store the pre-release files. "},{"title":"2.5. submarine-sdk","type":1,"pageTitle":"Project Architecture","url":"docs/devDocs/README#25-submarine-sdk","content":"Provide Python SDK for submarine user. "},{"title":"2.6. submarine-security","type":1,"pageTitle":"Project Architecture","url":"docs/devDocs/README#26-submarine-security","content":"Provide authorization for Apache Spark to talking to Ranger Admin. "},{"title":"2.7. submarine-server","type":1,"pageTitle":"Project Architecture","url":"docs/devDocs/README#27-submarine-server","content":"Include core server, restful api, and k8s/yarn submitter. "},{"title":"2.8. submarine-test","type":1,"pageTitle":"Project Architecture","url":"docs/devDocs/README#28-submarine-test","content":"Provide end-to-end and k8s test for submarine. "},{"title":"2.9. submarine-workbench","type":1,"pageTitle":"Project Architecture","url":"docs/devDocs/README#29-submarine-workbench","content":"workbench-server: is a Jetty-based web server service. Workbench-server provides RESTful interface and Websocket interface. The RESTful interface provides workbench-web with management capabilities for databases such as project, department, user, and role.workbench-web: is a web front-end service based on Angular.js framework. With workbench-web users can manage Submarine project, department, user, role through browser. You can also use the notebook to develop machine learning algorithms, model release and other lifecycle management. "},{"title":"2.10 dev-support","type":1,"pageTitle":"Project Architecture","url":"docs/devDocs/README#210-dev-support","content":"mini-submarine: by using the docker image provided by Submarine, you can experience all the functions of Submarine in a single docker environment, while mini-submarine also provides developers with a development and testing environment, Avoid the hassle of installing and deploying the runtime environment.submarine-installer: submarine-installer is our submarine runtime environment installation tool for yarn-3.1+ and above.By using submarine-installer, it is easy to install and deploy system services such asdocker, nvidia-docker, nvidia driver, ETCD, Calico network etc. required by yarn-3.1+. "},{"title":"How to Run Integration K8s Test","type":0,"sectionRef":"#","url":"docs/devDocs/IntegrationTestK8s","content":"","keywords":""},{"title":"Introduction","type":1,"pageTitle":"How to Run Integration K8s Test","url":"docs/devDocs/IntegrationTestK8s#introduction","content":"The test cases under the directory test-k8s are integration tests to ensure the correctness of the Submarine RESTful API. You can run these tests either locally or on GitHub Actions. Before running the tests, the minikube (KinD) cluster must be created. Then, compile and package the submarine project in submarine-dist directory for building a docker image. In addition, the 8080 port in submarine-traefik should be forwarded. "},{"title":"Run k8s test locally","type":1,"pageTitle":"How to Run Integration K8s Test","url":"docs/devDocs/IntegrationTestK8s#run-k8s-test-locally","content":"Ensure you have setup the KinD cluster or minikube cluster. If you haven't, follow this minikube tutorial Build the submarine from source and upgrade the server pod through this guide Forward port kubectl port-forward --address 0.0.0.0 service/submarine-traefik 8080:80 Copy Install the latest package \"submarine-server-core\" into the local repository, for use as a dependency in the module test-k8s mvn install -DskipTests Copy Execute the test command mvn verify -DskipRat -pl :submarine-test-k8s -Phadoop-2.9 -B Copy  "},{"title":"Run k8s test in GitHub Actions","type":1,"pageTitle":"How to Run Integration K8s Test","url":"docs/devDocs/IntegrationTestK8s#run-k8s-test-in-github-actions","content":"Each time a code is submitted, GitHub Actions is triggered automatically. "},{"title":"Download Apache Submarine","type":0,"sectionRef":"#","url":"docs/download","content":"","keywords":""},{"title":"Verify the integrity of the files","type":1,"pageTitle":"Download Apache Submarine","url":"docs/download#verify-the-integrity-of-the-files","content":"It is essential that you verify the integrity of the downloaded files using the PGP or MD5 signatures. This signature should be matched against the KEYS file. gpg --import KEYS gpg --verify submarine-dist-X.Y.Z-src.tar.gz.asc Copy "},{"title":"Old releases","type":1,"pageTitle":"Download Apache Submarine","url":"docs/download#old-releases","content":"Apache Submarine 0.4.0 released on Jul 05, 2020 (release notes) (git tag) Binary package with submarine:submarine-dist-0.4.0-hadoop-2.9.tar.gz (550 MB,checksum,signature)Source:submarine-dist-0.4.0-src.tar.gz (6 MB,checksum,signature)Docker images:mini-submarine (guide) Apache Submarine 0.3.0 released on Feb 01, 2020 (release notes) (git tag) Binary package with submarine:submarine-dist-0.3.0-hadoop-2.9.tar.gz (550 MB,checksum,signature)Source:submarine-dist-0.3.0-src.tar.gz (6 MB,checksum,signature)Docker images:mini-submarine (guide) Apache Submarine 0.2.0 released on Jul 2, 2019 Binary package with submarine:hadoop-submarine-0.2.0.tar.gz (111 MB,checksum,signature,Announcement) Source:hadoop-submarine-0.2.0-src.tar.gz (1.4 MB,checksum,signature) Apache Submarine 0.1.0 released on Jan 16, 2019 Binary package with submarine:submarine-0.2.0-bin-all.tgz (97 MB,checksum,signature,Announcement) Source:submarine-hadoop-3.2.0-src.tar.gz (1.1 MB,checksum,signature) "},{"title":"WriteDockerfileKaldi","type":0,"sectionRef":"#","url":"docs/ecosystem/kaldi/WriteDockerfileKaldi","content":"","keywords":""},{"title":"Creating Docker Images for Running Kaldi on YARN","type":1,"pageTitle":"WriteDockerfileKaldi","url":"docs/ecosystem/kaldi/WriteDockerfileKaldi#creating-docker-images-for-running-kaldi-on-yarn","content":""},{"title":"How to create docker images to run Kaldi on YARN","type":1,"pageTitle":"WriteDockerfileKaldi","url":"docs/ecosystem/kaldi/WriteDockerfileKaldi#how-to-create-docker-images-to-run-kaldi-on-yarn","content":"Dockerfile to run Kaldi on YARN need two part: Base libraries which Kaldi depends on 1) OS base image, for example nvidia/cuda:10.0-cudnn7-devel-ubuntu18.04 2) Kaldi depended libraries and packages. For example python, g++, make. For GPU support, need cuda, cudnn, etc. 3) Kaldi compile. Libraries to access HDFS 1) JDK 2) Hadoop Here's an example of a base image (w/o GPU support) to install Kaldi: FROM nvidia/cuda:10.0-cudnn7-devel-ubuntu18.04 RUN apt-get clean && \\ apt-get update && \\ apt-get install -y --no-install-recommends \\ sudo \\ openjdk-8-jdk \\ iputils-ping \\ g++ \\ make \\ automake \\ autoconf \\ bzip2 \\ unzip \\ wget \\ sox \\ libtool \\ git \\ subversion \\ python2.7 \\ python3 \\ zlib1g-dev \\ ca-certificates \\ patch \\ ffmpeg \\ vim && \\ rm -rf /var/lib/apt/lists/* && \\ ln -s /usr/bin/python2.7 /usr/bin/python RUN git clone --depth 1 https://github.com/kaldi-asr/kaldi.git /opt/kaldi && \\ cd /opt/kaldi && \\ cd /opt/kaldi/tools && \\ ./extras/install_mkl.sh && \\ make -j $(nproc) && \\ cd /opt/kaldi/src && \\ ./configure --shared --use-cuda && \\ make depend -j $(nproc) && \\ make -j $(nproc) Copy On top of above image, add files, install packages to access HDFS RUN apt-get update && apt-get install -y openjdk-8-jdk wget # Install hadoop ENV HADOOP_VERSION=\"3.2.1\" ENV JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 RUN wget https://archive.apache.org/dist/hadoop/common/hadoop-${HADOOP_VERSION}/hadoop-${HADOOP_VERSION}.tar.gz && \\ tar zxf hadoop-${HADOOP_VERSION}.tar.gz && \\ ln -s hadoop-${HADOOP_VERSION} hadoop-current && \\ rm hadoop-${HADOOP_VERSION}.tar.gz Copy Build and push to your own docker registry: Use docker build ... and docker push ... to finish this step. "},{"title":"Use examples to build your own Kaldi docker images","type":1,"pageTitle":"WriteDockerfileKaldi","url":"docs/ecosystem/kaldi/WriteDockerfileKaldi#use-examples-to-build-your-own-kaldi-docker-images","content":"We provided following examples for you to build kaldi docker images. For latest Kaldi *base/ubuntu-18.04/Dockerfile.gpu.kaldi_latest: Latest Kaldi that supports GPU, which is prebuilt to CUDA10, with models. "},{"title":"Build Docker images","type":1,"pageTitle":"WriteDockerfileKaldi","url":"docs/ecosystem/kaldi/WriteDockerfileKaldi#build-docker-images","content":"Manually build Docker image:# Under docker/ directory,The CLUSTER_NAME can be modified in build-all.sh to have installation permissions, run build-all.sh to build Docker images. It will build following images: kaldi-latest-gpu-base:0.0.1 for base Docker image which includes Hadoop, Kaldi, GPU base libraries, which includes thchs30 model. Use prebuilt images# (No liability) You can also use prebuilt images for convenience in the docker hub: hadoopsubmarine/kaldi-latest-gpu-base:0.0.1 "},{"title":"Deploy Submarine with Helm","type":0,"sectionRef":"#","url":"docs/gettingStarted/helm","content":"","keywords":""},{"title":"Prerequisite","type":1,"pageTitle":"Deploy Submarine with Helm","url":"docs/gettingStarted/helm#prerequisite","content":"Install Helm v3: https://helm.sh/docs/intro/install/ A Kubernetes environment (ex: minikube or kind) "},{"title":"Deploy Submarine to Kubernetes","type":1,"pageTitle":"Deploy Submarine with Helm","url":"docs/gettingStarted/helm#deploy-submarine-to-kubernetes","content":"git clone https://github.com/apache/submarine.git cd submarine helm install submarine ./helm-charts/submarine Copy With these commands, the Submarine service will be deployed to the \"default\" namespace.The first time installation will take about 10 mins because the docker images are pulled from apache/submarine on DockerHub. "},{"title":"Verify installation","type":1,"pageTitle":"Deploy Submarine with Helm","url":"docs/gettingStarted/helm#verify-installation","content":"kubectl get all Copy TODO: screenshot "},{"title":"Uninstall Submarine","type":1,"pageTitle":"Deploy Submarine with Helm","url":"docs/gettingStarted/helm#uninstall-submarine","content":"helm uninstall submarine # Check helm ls Copy Helm chart configuation (values.yaml)# "},{"title":"Volume Type","type":1,"pageTitle":"Deploy Submarine with Helm","url":"docs/gettingStarted/helm#volume-type","content":"Submarine can support various volume types, currently including hostPath (default) and NFS. It can be easily configured in the ./helm-charts/submarine/values.yaml, or you can override the default values in values.yaml by helm CLI. hostPath# In hostPath, you can store data directly in your node.Usage: Configure setting in ./helm-charts/submarine/values.yaml.To enable hostPath storage, set .storage.type to host.To set the root path for your storage, set .storage.host.root to <any-path> Example: # ./helm-charts/submarine/values.yaml storage: type: host host: root: /tmp Copy NFS (Network File System)# In NFS, it allows multiple clients to access a shared space.Prerequisite: A pre-existing NFS server. You have two options. Create NFS server kubectl create -f ./dev-support/nfs-server/nfs-server.yaml Copy It will create a nfs-server pod in kubernetes cluster, and expose nfs-server ip at 10.96.0.2Use your own NFS server Install NFS dependencies in your nodes Ubuntu apt-get install -y nfs-common Copy CentOS yum install nfs-util Copy Usage: Configure setting in ./helm-charts/submarine/values.yaml.To enable NFS storage, set .storage.type to nfs.To set the ip for NFS server, set .storage.nfs.ip to <any-ip> Example: # ./helm-charts/submarine/values.yaml storage: type: nfs nfs: ip: 10.96.0.2 Copy "},{"title":"Access to Submarine Server","type":1,"pageTitle":"Deploy Submarine with Helm","url":"docs/gettingStarted/helm#access-to-submarine-server","content":"Submarine server by default expose 8080 port within K8s cluster. After Submarine v0.5 uses Traefik as reverse-proxy by default. If you don't want to use Traefik, you can modify below value to false in ./helm-charts/submarine/values.yaml. # Use Traefik by default traefik: enabled: true Copy To access the server from outside of the cluster, we use Traefik ingress controller and NodePort for external access.\\ Please refer to ./helm-charts/submarine/charts/traefik/values.yaml and Traefik docsfor more details if you want to customize the default value for Traefik. Notice:If you use kind to run local Kubernetes cluster, please refer to this docsand set the configuration \"extraPortMappings\" when creating the k8s cluster. kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 nodes: - role: control-plane extraPortMappings: - containerPort: 32080 hostPort: [the port you want to access] Copy # Use nodePort and Traefik ingress controller by default. # To access the submarine server, open the following URL in your browser. http://127.0.0.1:32080 Copy If minikube is installed, use the following command to find the URL to the Submarine server. $ minikube service submarine-traefik --url Copy "},{"title":"RunningDistributedThchs30KaldiJobs","type":0,"sectionRef":"#","url":"docs/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs","content":"","keywords":""},{"title":"Prepare data for training","type":1,"pageTitle":"RunningDistributedThchs30KaldiJobs","url":"docs/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs#prepare-data-for-training","content":"Thchs30 is a common benchmark in machine learning for speech data and transcripts. Below example is based on Thchs30 dataset. 1) download gz file: THCHS30_PATH=/data/hdfs1/nfs/aisearch/kaldi/thchs30 mkdir $THCHS30_PATH/data && cd $THCHS30_PATH/data wget http://www.openslr.org/resources/18/data_thchs30.tgz wget http://www.openslr.org/resources/18/test-noise.tgz wget http://www.openslr.org/resources/18/resource.tgz Copy 2) Checkout https://github.com/apache/submarine.git: git clone https://github.com/apache/submarine.git Copy 3) Go to submarine/docker/ecosystem/ cp -r ./kaldi/sge $THCHS30_PATH/sge Copy 4) optional,Modify /opt/kaldi/egs/thchs30/s5/cmd.sh in the Container,This queue is used by default export train_cmd=\"queue.pl -q all.q\" Copy Warning: Please note that YARN service doesn't allow multiple services with the same name, so please run following command yarn application -destroy <service-name> Copy to delete services if you want to reuse the same service name. "},{"title":"Prepare Docker images","type":1,"pageTitle":"RunningDistributedThchs30KaldiJobs","url":"docs/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs#prepare-docker-images","content":"Refer to Write Dockerfile to build a Docker image or use prebuilt one: hadoopsubmarine/kaldi-latest-gpu-base:0.0.1 "},{"title":"Run Kaldi jobs","type":1,"pageTitle":"RunningDistributedThchs30KaldiJobs","url":"docs/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs#run-kaldi-jobs","content":""},{"title":"Run distributed training","type":1,"pageTitle":"RunningDistributedThchs30KaldiJobs","url":"docs/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs#run-distributed-training","content":"# Change the variables according to your needs SUBMARINE_VERSION=3.3.0-SNAPSHOT WORKER_NUM=2 SGE_CFG_PATH=/cfg THCHS30_PATH=/data/hdfs1/nfs/aisearch/kaldi/thchs30 DOCKER_HADOOP_HDFS_HOME=/app/${SUBMARINE_VERSION} # Dependent on registrydns, you must fill in < your RegistryDNSIP> in resolv.conf yarn jar /usr/local/matrix/share/hadoop/yarn/${SUBMARINE_VERSION}.jar \\ job run --name kaldi-thchs30-distributed \\ --env DOCKER_JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre/ \\ --env DOCKER_HADOOP_HDFS_HOME=$DOCKER_HADOOP_HDFS_HOME \\ --env YARN_CONTAINER_RUNTIME_DOCKER_CONTAINER_NETWORK=calico-network \\ --env PYTHONUNBUFFERED=\"0\" \\ --env TZ=\"Asia/Shanghai\" \\ --env YARN_CONTAINER_RUNTIME_DOCKER_MOUNTS=${THCHS30_PATH}/sge/resolv.conf:/etc/resolv.conf,\\ ${THCHS30_PATH}/sge/passwd:/etc/passwd:rw,\\ ${THCHS30_PATH}/sge/group:/etc/group:rw,\\ ${THCHS30_PATH}/sge:$SGE_CFG_PATH,\\ ${THCHS30_PATH}/data:/opt/kaldi/egs/thchs30,\\ ${THCHS30_PATH}/mul/s5:/opt/kaldi/egs/mul-thchs30/s5 \\ --input_path /opt/kaldi/egs/thchs30/data \\ --docker_image hadoopsubmarine/kaldi-latest-gpu-base:0.0.1 \\ --num_workers $WORKER_NUM \\ --worker_resources memory=64G,vcores=32,gpu=1 \\ --worker_launch_cmd \"sudo mkdir -p /opt/kaldi/egs/mul-thchs30/s5 && \\ sudo cp /opt/kaldi/egs/thchs30/s5/* /opt/kaldi/egs/mul-thchs30/s5 -r && \\ cluster_user=`whoami` domain_suffix=\"ml.com\" && \\ cd /cfg && bash sge_run.sh $WORKER_NUM $SGE_CFG_PATH && \\ if [ $(echo $HOST_NAME |grep \"^master-\") ] then sleep 2m && cd /opt/kaldi/egs/mul-thchs30/s5 && ./run.sh fi\" \\ --verbose Copy Explanations: >1 num_workers indicates it is a distributed training.Parameters / resources / Docker image of parameter server can be specified separately. For many cases, parameter server doesn't require GPU.We don't need parameter server here For the meaning of the individual parameters, see the QuickStart page! Outputs of distributed training Sample output of master: ... Reading package lists... Building dependency tree... Reading state information... The following additional packages will be installed: bsd-mailx cpio gridengine-common ifupdown iproute2 isc-dhcp-client isc-dhcp-common libatm1 libdns-export162 libisc-export160 liblockfile-bin liblockfile1 libmnl0 libxmuu1 libxtables11 ncurses-term netbase openssh-client openssh-server openssh-sftp-server postfix python3-chardet python3-pkg-resources python3-requests python3-six python3-urllib3 ssh-import-id ssl-cert tcsh xauth Suggested packages: libarchive1 gridengine-qmon ppp rdnssd iproute2-doc resolvconf avahi-autoipd isc-dhcp-client-ddns apparmor ssh-askpass libpam-ssh keychain monkeysphere rssh molly-guard ufw procmail postfix-mysql postfix-pgsql postfix-ldap postfix-pcre sasl2-bin libsasl2-modules dovecot-common postfix-cdb postfix-doc python3-setuptools python3-ndg-httpsclient python3-openssl python3-pyasn1 openssl-blacklist The following NEW packages will be installed: bsd-mailx cpio gridengine-client gridengine-common gridengine-exec gridengine-master ifupdown iproute2 isc-dhcp-client isc-dhcp-common libatm1 libdns-export162 libisc-export160 liblockfile-bin liblockfile1 libmnl0 libxmuu1 libxtables11 ncurses-term netbase openssh-client openssh-server openssh-sftp-server postfix python3-chardet python3-pkg-resources python3-requests python3-six python3-urllib3 ssh-import-id ssl-cert tcsh xauth 0 upgraded, 33 newly installed, 0 to remove and 30 not upgraded. Need to get 12.1 MB of archives. After this operation, 65.8 MB of additional disk space will be used. Get:1 http://archive.ubuntu.com/ubuntu xenial/main amd64 libatm1 amd64 1:2.5.1-1.5 [24.2 kB] Get:2 http://archive.ubuntu.com/ubuntu xenial/main amd64 libmnl0 amd64 1.0.3-5 [12.0 kB] Get:3 http://archive.ubuntu.com/ubuntu xenial/main amd64 liblockfile-bin amd64 1.09-6ubuntu1 [10.8 kB] Get:4 http://archive.ubuntu.com/ubuntu xenial/main amd64 liblockfile1 amd64 1.09-6ubuntu1 [8056 B] Get:5 http://archive.ubuntu.com/ubuntu xenial/main amd64 cpio amd64 2.11+dfsg-5ubuntu1 [74.8 kB] Get:6 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 iproute2 amd64 4.3.0-1ubuntu3.16.04.5 [523 kB] Get:7 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 ifupdown amd64 0.8.10ubuntu1.4 [54.9 kB] Get:8 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libisc-export160 amd64 1:9.10.3.dfsg.P4-8ubuntu1.15 [153 kB] Get:9 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libdns-export162 amd64 1:9.10.3.dfsg.P4-8ubuntu1.15 [665 kB] Get:10 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 isc-dhcp-client amd64 4.3.3-5ubuntu12.10 [224 kB] Get:11 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 isc-dhcp-common amd64 4.3.3-5ubuntu12.10 [105 kB] Get:12 http://archive.ubuntu.com/ubuntu xenial/main amd64 libxtables11 amd64 1.6.0-2ubuntu3 [27.2 kB] Get:13 http://archive.ubuntu.com/ubuntu xenial/main amd64 netbase all 5.3 [12.9 kB] Get:14 http://archive.ubuntu.com/ubuntu xenial/main amd64 libxmuu1 amd64 2:1.1.2-2 [9674 B] Get:15 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 openssh-client amd64 1:7.2p2-4ubuntu2.8 [590 kB] Get:16 http://archive.ubuntu.com/ubuntu xenial/main amd64 xauth amd64 1:1.0.9-1ubuntu2 [22.7 kB] Get:17 http://archive.ubuntu.com/ubuntu xenial/main amd64 ssl-cert all 1.0.37 [16.9 kB] Get:18 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 postfix amd64 3.1.0-3ubuntu0.3 [1152 kB] Get:19 http://archive.ubuntu.com/ubuntu xenial/main amd64 bsd-mailx amd64 8.1.2-0.20160123cvs-2 [63.7 kB] Get:20 http://archive.ubuntu.com/ubuntu xenial/universe amd64 gridengine-common all 6.2u5-7.4 [156 kB] Get:21 http://archive.ubuntu.com/ubuntu xenial/universe amd64 gridengine-client amd64 6.2u5-7.4 [3394 kB] Get:22 http://archive.ubuntu.com/ubuntu xenial/universe amd64 tcsh amd64 6.18.01-5 [410 kB] Get:23 http://archive.ubuntu.com/ubuntu xenial/universe amd64 gridengine-exec amd64 6.2u5-7.4 [990 kB] Get:24 http://archive.ubuntu.com/ubuntu xenial/universe amd64 gridengine-master amd64 6.2u5-7.4 [2429 kB] Get:25 http://archive.ubuntu.com/ubuntu xenial/main amd64 ncurses-term all 6.0+20160213-1ubuntu1 [249 kB] Get:26 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 openssh-sftp-server amd64 1:7.2p2-4ubuntu2.8 [38.9 kB] Get:27 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 openssh-server amd64 1:7.2p2-4ubuntu2.8 [335 kB] Get:28 http://archive.ubuntu.com/ubuntu xenial/main amd64 python3-pkg-resources all 20.7.0-1 [79.0 kB] Get:29 http://archive.ubuntu.com/ubuntu xenial/main amd64 python3-chardet all 2.3.0-2 [96.2 kB] Get:30 http://archive.ubuntu.com/ubuntu xenial/main amd64 python3-six all 1.10.0-3 [11.0 kB] Get:31 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 python3-urllib3 all 1.13.1-2ubuntu0.16.04.3 [58.5 kB] Get:32 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 python3-requests all 2.9.1-3ubuntu0.1 [55.8 kB] Get:33 http://archive.ubuntu.com/ubuntu xenial/main amd64 ssh-import-id all 5.5-0ubuntu1 [10.2 kB] Fetched 12.1 MB in 0s (15.0 MB/s) Selecting previously unselected package libatm1:amd64. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 21398 files and directories currently installed.) Preparing to unpack .../libatm1_1%3a2.5.1-1.5_amd64.deb ... Unpacking libatm1:amd64 (1:2.5.1-1.5) ... Selecting previously unselected package libmnl0:amd64. Preparing to unpack .../libmnl0_1.0.3-5_amd64.deb ... Unpacking libmnl0:amd64 (1.0.3-5) ... Selecting previously unselected package liblockfile-bin. Preparing to unpack .../liblockfile-bin_1.09-6ubuntu1_amd64.deb ... Unpacking liblockfile-bin (1.09-6ubuntu1) ... Selecting previously unselected package liblockfile1:amd64. Preparing to unpack .../liblockfile1_1.09-6ubuntu1_amd64.deb ... Unpacking liblockfile1:amd64 (1.09-6ubuntu1) ... Selecting previously unselected package cpio. Preparing to unpack .../cpio_2.11+dfsg-5ubuntu1_amd64.deb ... Unpacking cpio (2.11+dfsg-5ubuntu1) ... Selecting previously unselected package iproute2. Preparing to unpack .../iproute2_4.3.0-1ubuntu3.16.04.5_amd64.deb ... Unpacking iproute2 (4.3.0-1ubuntu3.16.04.5) ... Selecting previously unselected package ifupdown. Preparing to unpack .../ifupdown_0.8.10ubuntu1.4_amd64.deb ... Unpacking ifupdown (0.8.10ubuntu1.4) ... Selecting previously unselected package libisc-export160. Preparing to unpack .../libisc-export160_1%3a9.10.3.dfsg.P4-8ubuntu1.15_amd64.deb ... Unpacking libisc-export160 (1:9.10.3.dfsg.P4-8ubuntu1.15) ... Selecting previously unselected package libdns-export162. Preparing to unpack .../libdns-export162_1%3a9.10.3.dfsg.P4-8ubuntu1.15_amd64.deb ... Unpacking libdns-export162 (1:9.10.3.dfsg.P4-8ubuntu1.15) ... Selecting previously unselected package isc-dhcp-client. Preparing to unpack .../isc-dhcp-client_4.3.3-5ubuntu12.10_amd64.deb ... Unpacking isc-dhcp-client (4.3.3-5ubuntu12.10) ... Selecting previously unselected package isc-dhcp-common. Preparing to unpack .../isc-dhcp-common_4.3.3-5ubuntu12.10_amd64.deb ... Unpacking isc-dhcp-common (4.3.3-5ubuntu12.10) ... Selecting previously unselected package libxtables11:amd64. Preparing to unpack .../libxtables11_1.6.0-2ubuntu3_amd64.deb ... Unpacking libxtables11:amd64 (1.6.0-2ubuntu3) ... Selecting previously unselected package netbase. Preparing to unpack .../archives/netbase_5.3_all.deb ... Unpacking netbase (5.3) ... Selecting previously unselected package libxmuu1:amd64. Preparing to unpack .../libxmuu1_2%3a1.1.2-2_amd64.deb ... Unpacking libxmuu1:amd64 (2:1.1.2-2) ... Selecting previously unselected package openssh-client. Preparing to unpack .../openssh-client_1%3a7.2p2-4ubuntu2.8_amd64.deb ... Unpacking openssh-client (1:7.2p2-4ubuntu2.8) ... Selecting previously unselected package xauth. Preparing to unpack .../xauth_1%3a1.0.9-1ubuntu2_amd64.deb ... Unpacking xauth (1:1.0.9-1ubuntu2) ... Selecting previously unselected package ssl-cert. Preparing to unpack .../ssl-cert_1.0.37_all.deb ... Unpacking ssl-cert (1.0.37) ... Selecting previously unselected package postfix. Preparing to unpack .../postfix_3.1.0-3ubuntu0.3_amd64.deb ... Unpacking postfix (3.1.0-3ubuntu0.3) ... Selecting previously unselected package bsd-mailx. Preparing to unpack .../bsd-mailx_8.1.2-0.20160123cvs-2_amd64.deb ... Unpacking bsd-mailx (8.1.2-0.20160123cvs-2) ... Selecting previously unselected package gridengine-common. Preparing to unpack .../gridengine-common_6.2u5-7.4_all.deb ... Unpacking gridengine-common (6.2u5-7.4) ... Selecting previously unselected package gridengine-client. Preparing to unpack .../gridengine-client_6.2u5-7.4_amd64.deb ... Unpacking gridengine-client (6.2u5-7.4) ... Selecting previously unselected package tcsh. Preparing to unpack .../tcsh_6.18.01-5_amd64.deb ... Unpacking tcsh (6.18.01-5) ... Selecting previously unselected package gridengine-exec. Preparing to unpack .../gridengine-exec_6.2u5-7.4_amd64.deb ... Unpacking gridengine-exec (6.2u5-7.4) ... Selecting previously unselected package gridengine-master. Preparing to unpack .../gridengine-master_6.2u5-7.4_amd64.deb ... Unpacking gridengine-master (6.2u5-7.4) ... Selecting previously unselected package ncurses-term. Preparing to unpack .../ncurses-term_6.0+20160213-1ubuntu1_all.deb ... Unpacking ncurses-term (6.0+20160213-1ubuntu1) ... Selecting previously unselected package openssh-sftp-server. Preparing to unpack .../openssh-sftp-server_1%3a7.2p2-4ubuntu2.8_amd64.deb ... Unpacking openssh-sftp-server (1:7.2p2-4ubuntu2.8) ... Selecting previously unselected package openssh-server. Preparing to unpack .../openssh-server_1%3a7.2p2-4ubuntu2.8_amd64.deb ... Unpacking openssh-server (1:7.2p2-4ubuntu2.8) ... Selecting previously unselected package python3-pkg-resources. Preparing to unpack .../python3-pkg-resources_20.7.0-1_all.deb ... Unpacking python3-pkg-resources (20.7.0-1) ... Selecting previously unselected package python3-chardet. Preparing to unpack .../python3-chardet_2.3.0-2_all.deb ... Unpacking python3-chardet (2.3.0-2) ... Selecting previously unselected package python3-six. Preparing to unpack .../python3-six_1.10.0-3_all.deb ... Unpacking python3-six (1.10.0-3) ... Selecting previously unselected package python3-urllib3. Preparing to unpack .../python3-urllib3_1.13.1-2ubuntu0.16.04.3_all.deb ... Unpacking python3-urllib3 (1.13.1-2ubuntu0.16.04.3) ... Selecting previously unselected package python3-requests. Preparing to unpack .../python3-requests_2.9.1-3ubuntu0.1_all.deb ... Unpacking python3-requests (2.9.1-3ubuntu0.1) ... Selecting previously unselected package ssh-import-id. Preparing to unpack .../ssh-import-id_5.5-0ubuntu1_all.deb ... Unpacking ssh-import-id (5.5-0ubuntu1) ... Processing triggers for systemd (229-4ubuntu21.22) ... Processing triggers for libc-bin (2.23-0ubuntu11) ... Setting up libatm1:amd64 (1:2.5.1-1.5) ... Setting up libmnl0:amd64 (1.0.3-5) ... Setting up liblockfile-bin (1.09-6ubuntu1) ... Setting up liblockfile1:amd64 (1.09-6ubuntu1) ... Setting up cpio (2.11+dfsg-5ubuntu1) ... update-alternatives: using /bin/mt-gnu to provide /bin/mt (mt) in auto mode Setting up iproute2 (4.3.0-1ubuntu3.16.04.5) ... Setting up ifupdown (0.8.10ubuntu1.4) ... Creating /etc/network/interfaces. Setting up libisc-export160 (1:9.10.3.dfsg.P4-8ubuntu1.15) ... Setting up libdns-export162 (1:9.10.3.dfsg.P4-8ubuntu1.15) ... Setting up isc-dhcp-client (4.3.3-5ubuntu12.10) ... Setting up isc-dhcp-common (4.3.3-5ubuntu12.10) ... Setting up libxtables11:amd64 (1.6.0-2ubuntu3) ... Setting up netbase (5.3) ... Setting up libxmuu1:amd64 (2:1.1.2-2) ... Setting up openssh-client (1:7.2p2-4ubuntu2.8) ... Setting up xauth (1:1.0.9-1ubuntu2) ... Setting up ssl-cert (1.0.37) ... Setting up postfix (3.1.0-3ubuntu0.3) ... Creating /etc/postfix/dynamicmaps.cf setting myhostname: master-0.XXX setting alias maps setting alias database changing /etc/mailname to master-0.XXX setting myorigin setting destinations: $myhostname, master-0.XXX, localhost.XXX, , localhost setting relayhost: setting mynetworks: 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 setting mailbox_size_limit: 0 setting recipient_delimiter: + setting inet_interfaces: all setting inet_protocols: all /etc/aliases does not exist, creating it. WARNING: /etc/aliases exists, but does not have a root alias. Postfix is now set up with a default configuration. If you need to make changes, edit /etc/postfix/main.cf (and others) as needed. To view Postfix configuration values, see postconf(1). After modifying main.cf, be sure to run '/etc/init.d/postfix reload'. Running newaliases invoke-rc.d: could not determine current runlevel invoke-rc.d: policy-rc.d denied execution of restart. Setting up bsd-mailx (8.1.2-0.20160123cvs-2) ... update-alternatives: using /usr/bin/bsd-mailx to provide /usr/bin/mailx (mailx) in auto mode Setting up gridengine-common (6.2u5-7.4) ... Creating config file /etc/default/gridengine with new version Setting up gridengine-client (6.2u5-7.4) ... Setting up tcsh (6.18.01-5) ... update-alternatives: using /bin/tcsh to provide /bin/csh (csh) in auto mode Setting up gridengine-exec (6.2u5-7.4) ... invoke-rc.d: could not determine current runlevel invoke-rc.d: policy-rc.d denied execution of start. Setting up gridengine-master (6.2u5-7.4) ... su: Authentication failure (Ignored) Initializing cluster with the following parameters: => SGE_ROOT: /var/lib/gridengine => SGE_CELL: default => Spool directory: /var/spool/gridengine/spooldb => Initial manager user: sgeadmin Initializing spool (/var/spool/gridengine/spooldb) Initializing global configuration based on /usr/share/gridengine/default-configuration Initializing complexes based on /usr/share/gridengine/centry Initializing usersets based on /usr/share/gridengine/usersets Adding user sgeadmin as a manager Cluster creation complete invoke-rc.d: could not determine current runlevel invoke-rc.d: policy-rc.d denied execution of start. Setting up ncurses-term (6.0+20160213-1ubuntu1) ... Setting up openssh-sftp-server (1:7.2p2-4ubuntu2.8) ... Setting up openssh-server (1:7.2p2-4ubuntu2.8) ... Creating SSH2 RSA key; this may take some time ... 2048 SHA256:hfQpES1aS4cjF8AOCIParZR6342vdwutoyITru0wtuE root@master-0.XXX (RSA) Creating SSH2 DSA key; this may take some time ... 1024 SHA256:gOsPMVgwXBHJzixN/gtJAG+hVCHqw8t7Fhy4nsx8od0 root@master-0.XXX (DSA) Creating SSH2 ECDSA key; this may take some time ... 256 SHA256:3D5SNniUb4z+/BuqXheFgG+DfjsxXqTT/zwWAqdX4jM root@master-0.XXX (ECDSA) Creating SSH2 ED25519 key; this may take some time ... 256 SHA256:SwyeV9iSqOW4TKLi4Wvc0zD8lWtupHCJpDu8oWBwbfU root@master-0.XXX (ED25519) invoke-rc.d: could not determine current runlevel invoke-rc.d: policy-rc.d denied execution of start. Setting up python3-pkg-resources (20.7.0-1) ... Setting up python3-chardet (2.3.0-2) ... Setting up python3-six (1.10.0-3) ... Setting up python3-urllib3 (1.13.1-2ubuntu0.16.04.3) ... Setting up python3-requests (2.9.1-3ubuntu0.1) ... Setting up ssh-import-id (5.5-0ubuntu1) ... Processing triggers for libc-bin (2.23-0ubuntu11) ... Processing triggers for systemd (229-4ubuntu21.22) ... Reading package lists... Building dependency tree... Reading state information... 0 upgraded, 0 newly installed, 0 to remove and 30 not upgraded. Copy cat $SGE_CFG_PATH/setcfg.log finish master add worker node worker-0.XXX Copy Sample output of worker: please wait Reading package lists... Building dependency tree... Reading state information... The following additional packages will be installed: bsd-mailx cpio gridengine-common ifupdown iproute2 isc-dhcp-client isc-dhcp-common libatm1 libdns-export162 libisc-export160 liblockfile-bin liblockfile1 libmnl0 libxmuu1 libxtables11 ncurses-term netbase openssh-client openssh-server openssh-sftp-server postfix python3-chardet python3-pkg-resources python3-requests python3-six python3-urllib3 ssh-import-id ssl-cert tcsh xauth Suggested packages: libarchive1 gridengine-qmon ppp rdnssd iproute2-doc resolvconf avahi-autoipd isc-dhcp-client-ddns apparmor ssh-askpass libpam-ssh keychain monkeysphere rssh molly-guard ufw procmail postfix-mysql postfix-pgsql postfix-ldap postfix-pcre sasl2-bin libsasl2-modules dovecot-common postfix-cdb postfix-doc python3-setuptools python3-ndg-httpsclient python3-openssl python3-pyasn1 openssl-blacklist The following NEW packages will be installed: bsd-mailx cpio gridengine-client gridengine-common gridengine-exec ifupdown iproute2 isc-dhcp-client isc-dhcp-common libatm1 libdns-export162 libisc-export160 liblockfile-bin liblockfile1 libmnl0 libxmuu1 libxtables11 ncurses-term netbase openssh-client openssh-server openssh-sftp-server postfix python3-chardet python3-pkg-resources python3-requests python3-six python3-urllib3 ssh-import-id ssl-cert tcsh xauth 0 upgraded, 32 newly installed, 0 to remove and 30 not upgraded. Need to get 9633 kB of archives. After this operation, 51.2 MB of additional disk space will be used. Get:1 http://archive.ubuntu.com/ubuntu xenial/main amd64 libatm1 amd64 1:2.5.1-1.5 [24.2 kB] Get:2 http://archive.ubuntu.com/ubuntu xenial/main amd64 libmnl0 amd64 1.0.3-5 [12.0 kB] Get:3 http://archive.ubuntu.com/ubuntu xenial/main amd64 liblockfile-bin amd64 1.09-6ubuntu1 [10.8 kB] Get:4 http://archive.ubuntu.com/ubuntu xenial/main amd64 liblockfile1 amd64 1.09-6ubuntu1 [8056 B] Get:5 http://archive.ubuntu.com/ubuntu xenial/main amd64 cpio amd64 2.11+dfsg-5ubuntu1 [74.8 kB] Get:6 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 iproute2 amd64 4.3.0-1ubuntu3.16.04.5 [523 kB] Get:7 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 ifupdown amd64 0.8.10ubuntu1.4 [54.9 kB] Get:8 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libisc-export160 amd64 1:9.10.3.dfsg.P4-8ubuntu1.15 [153 kB] Get:9 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libdns-export162 amd64 1:9.10.3.dfsg.P4-8ubuntu1.15 [665 kB] Get:10 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 isc-dhcp-client amd64 4.3.3-5ubuntu12.10 [224 kB] Get:11 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 isc-dhcp-common amd64 4.3.3-5ubuntu12.10 [105 kB] Get:12 http://archive.ubuntu.com/ubuntu xenial/main amd64 libxtables11 amd64 1.6.0-2ubuntu3 [27.2 kB] Get:13 http://archive.ubuntu.com/ubuntu xenial/main amd64 netbase all 5.3 [12.9 kB] Get:14 http://archive.ubuntu.com/ubuntu xenial/main amd64 libxmuu1 amd64 2:1.1.2-2 [9674 B] Get:15 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 openssh-client amd64 1:7.2p2-4ubuntu2.8 [590 kB] Get:16 http://archive.ubuntu.com/ubuntu xenial/main amd64 xauth amd64 1:1.0.9-1ubuntu2 [22.7 kB] Get:17 http://archive.ubuntu.com/ubuntu xenial/main amd64 ssl-cert all 1.0.37 [16.9 kB] Get:18 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 postfix amd64 3.1.0-3ubuntu0.3 [1152 kB] Get:19 http://archive.ubuntu.com/ubuntu xenial/main amd64 bsd-mailx amd64 8.1.2-0.20160123cvs-2 [63.7 kB] Get:20 http://archive.ubuntu.com/ubuntu xenial/universe amd64 gridengine-common all 6.2u5-7.4 [156 kB] Get:21 http://archive.ubuntu.com/ubuntu xenial/universe amd64 gridengine-client amd64 6.2u5-7.4 [3394 kB] Get:22 http://archive.ubuntu.com/ubuntu xenial/universe amd64 tcsh amd64 6.18.01-5 [410 kB] Get:23 http://archive.ubuntu.com/ubuntu xenial/universe amd64 gridengine-exec amd64 6.2u5-7.4 [990 kB] Get:24 http://archive.ubuntu.com/ubuntu xenial/main amd64 ncurses-term all 6.0+20160213-1ubuntu1 [249 kB] Get:25 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 openssh-sftp-server amd64 1:7.2p2-4ubuntu2.8 [38.9 kB] Get:26 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 openssh-server amd64 1:7.2p2-4ubuntu2.8 [335 kB] Get:27 http://archive.ubuntu.com/ubuntu xenial/main amd64 python3-pkg-resources all 20.7.0-1 [79.0 kB] Get:28 http://archive.ubuntu.com/ubuntu xenial/main amd64 python3-chardet all 2.3.0-2 [96.2 kB] Get:29 http://archive.ubuntu.com/ubuntu xenial/main amd64 python3-six all 1.10.0-3 [11.0 kB] Get:30 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 python3-urllib3 all 1.13.1-2ubuntu0.16.04.3 [58.5 kB] Get:31 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 python3-requests all 2.9.1-3ubuntu0.1 [55.8 kB] Get:32 http://archive.ubuntu.com/ubuntu xenial/main amd64 ssh-import-id all 5.5-0ubuntu1 [10.2 kB] Fetched 9633 kB in 2s (4496 kB/s) Selecting previously unselected package libatm1:amd64. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 21398 files and directories currently installed.) Preparing to unpack .../libatm1_1%3a2.5.1-1.5_amd64.deb ... Unpacking libatm1:amd64 (1:2.5.1-1.5) ... Selecting previously unselected package libmnl0:amd64. Preparing to unpack .../libmnl0_1.0.3-5_amd64.deb ... Unpacking libmnl0:amd64 (1.0.3-5) ... Selecting previously unselected package liblockfile-bin. Preparing to unpack .../liblockfile-bin_1.09-6ubuntu1_amd64.deb ... Unpacking liblockfile-bin (1.09-6ubuntu1) ... Selecting previously unselected package liblockfile1:amd64. Preparing to unpack .../liblockfile1_1.09-6ubuntu1_amd64.deb ... Unpacking liblockfile1:amd64 (1.09-6ubuntu1) ... Selecting previously unselected package cpio. Preparing to unpack .../cpio_2.11+dfsg-5ubuntu1_amd64.deb ... Unpacking cpio (2.11+dfsg-5ubuntu1) ... Selecting previously unselected package iproute2. Preparing to unpack .../iproute2_4.3.0-1ubuntu3.16.04.5_amd64.deb ... Unpacking iproute2 (4.3.0-1ubuntu3.16.04.5) ... Selecting previously unselected package ifupdown. Preparing to unpack .../ifupdown_0.8.10ubuntu1.4_amd64.deb ... Unpacking ifupdown (0.8.10ubuntu1.4) ... Selecting previously unselected package libisc-export160. Preparing to unpack .../libisc-export160_1%3a9.10.3.dfsg.P4-8ubuntu1.15_amd64.deb ... Unpacking libisc-export160 (1:9.10.3.dfsg.P4-8ubuntu1.15) ... Selecting previously unselected package libdns-export162. Preparing to unpack .../libdns-export162_1%3a9.10.3.dfsg.P4-8ubuntu1.15_amd64.deb ... Unpacking libdns-export162 (1:9.10.3.dfsg.P4-8ubuntu1.15) ... Selecting previously unselected package isc-dhcp-client. Preparing to unpack .../isc-dhcp-client_4.3.3-5ubuntu12.10_amd64.deb ... Unpacking isc-dhcp-client (4.3.3-5ubuntu12.10) ... Selecting previously unselected package isc-dhcp-common. Preparing to unpack .../isc-dhcp-common_4.3.3-5ubuntu12.10_amd64.deb ... Unpacking isc-dhcp-common (4.3.3-5ubuntu12.10) ... Selecting previously unselected package libxtables11:amd64. Preparing to unpack .../libxtables11_1.6.0-2ubuntu3_amd64.deb ... Unpacking libxtables11:amd64 (1.6.0-2ubuntu3) ... Selecting previously unselected package netbase. Preparing to unpack .../archives/netbase_5.3_all.deb ... Unpacking netbase (5.3) ... Selecting previously unselected package libxmuu1:amd64. Preparing to unpack .../libxmuu1_2%3a1.1.2-2_amd64.deb ... Unpacking libxmuu1:amd64 (2:1.1.2-2) ... Selecting previously unselected package openssh-client. Preparing to unpack .../openssh-client_1%3a7.2p2-4ubuntu2.8_amd64.deb ... Unpacking openssh-client (1:7.2p2-4ubuntu2.8) ... Selecting previously unselected package xauth. Preparing to unpack .../xauth_1%3a1.0.9-1ubuntu2_amd64.deb ... Unpacking xauth (1:1.0.9-1ubuntu2) ... Selecting previously unselected package ssl-cert. Preparing to unpack .../ssl-cert_1.0.37_all.deb ... Unpacking ssl-cert (1.0.37) ... Selecting previously unselected package postfix. Preparing to unpack .../postfix_3.1.0-3ubuntu0.3_amd64.deb ... Unpacking postfix (3.1.0-3ubuntu0.3) ... Selecting previously unselected package bsd-mailx. Preparing to unpack .../bsd-mailx_8.1.2-0.20160123cvs-2_amd64.deb ... Unpacking bsd-mailx (8.1.2-0.20160123cvs-2) ... Selecting previously unselected package gridengine-common. Preparing to unpack .../gridengine-common_6.2u5-7.4_all.deb ... Unpacking gridengine-common (6.2u5-7.4) ... Selecting previously unselected package gridengine-client. Preparing to unpack .../gridengine-client_6.2u5-7.4_amd64.deb ... Unpacking gridengine-client (6.2u5-7.4) ... Selecting previously unselected package tcsh. Preparing to unpack .../tcsh_6.18.01-5_amd64.deb ... Unpacking tcsh (6.18.01-5) ... Selecting previously unselected package gridengine-exec. Preparing to unpack .../gridengine-exec_6.2u5-7.4_amd64.deb ... Unpacking gridengine-exec (6.2u5-7.4) ... Selecting previously unselected package ncurses-term. Preparing to unpack .../ncurses-term_6.0+20160213-1ubuntu1_all.deb ... Unpacking ncurses-term (6.0+20160213-1ubuntu1) ... Selecting previously unselected package openssh-sftp-server. Preparing to unpack .../openssh-sftp-server_1%3a7.2p2-4ubuntu2.8_amd64.deb ... Unpacking openssh-sftp-server (1:7.2p2-4ubuntu2.8) ... Selecting previously unselected package openssh-server. Preparing to unpack .../openssh-server_1%3a7.2p2-4ubuntu2.8_amd64.deb ... Unpacking openssh-server (1:7.2p2-4ubuntu2.8) ... Selecting previously unselected package python3-pkg-resources. Preparing to unpack .../python3-pkg-resources_20.7.0-1_all.deb ... Unpacking python3-pkg-resources (20.7.0-1) ... Selecting previously unselected package python3-chardet. Preparing to unpack .../python3-chardet_2.3.0-2_all.deb ... Unpacking python3-chardet (2.3.0-2) ... Selecting previously unselected package python3-six. Preparing to unpack .../python3-six_1.10.0-3_all.deb ... Unpacking python3-six (1.10.0-3) ... Selecting previously unselected package python3-urllib3. Preparing to unpack .../python3-urllib3_1.13.1-2ubuntu0.16.04.3_all.deb ... Unpacking python3-urllib3 (1.13.1-2ubuntu0.16.04.3) ... Selecting previously unselected package python3-requests. Preparing to unpack .../python3-requests_2.9.1-3ubuntu0.1_all.deb ... Unpacking python3-requests (2.9.1-3ubuntu0.1) ... Selecting previously unselected package ssh-import-id. Preparing to unpack .../ssh-import-id_5.5-0ubuntu1_all.deb ... Unpacking ssh-import-id (5.5-0ubuntu1) ... Processing triggers for systemd (229-4ubuntu21.22) ... Processing triggers for libc-bin (2.23-0ubuntu11) ... Setting up libatm1:amd64 (1:2.5.1-1.5) ... Setting up libmnl0:amd64 (1.0.3-5) ... Setting up liblockfile-bin (1.09-6ubuntu1) ... Setting up liblockfile1:amd64 (1.09-6ubuntu1) ... Setting up cpio (2.11+dfsg-5ubuntu1) ... update-alternatives: using /bin/mt-gnu to provide /bin/mt (mt) in auto mode Setting up iproute2 (4.3.0-1ubuntu3.16.04.5) ... Setting up ifupdown (0.8.10ubuntu1.4) ... Creating /etc/network/interfaces. Setting up libisc-export160 (1:9.10.3.dfsg.P4-8ubuntu1.15) ... Setting up libdns-export162 (1:9.10.3.dfsg.P4-8ubuntu1.15) ... Setting up isc-dhcp-client (4.3.3-5ubuntu12.10) ... Setting up isc-dhcp-common (4.3.3-5ubuntu12.10) ... Setting up libxtables11:amd64 (1.6.0-2ubuntu3) ... Setting up netbase (5.3) ... Setting up libxmuu1:amd64 (2:1.1.2-2) ... Setting up openssh-client (1:7.2p2-4ubuntu2.8) ... Setting up xauth (1:1.0.9-1ubuntu2) ... Setting up ssl-cert (1.0.37) ... Setting up postfix (3.1.0-3ubuntu0.3) ... Creating /etc/postfix/dynamicmaps.cf setting myhostname: worker-0.XXX setting alias maps setting alias database changing /etc/mailname to worker-0.XXX setting myorigin setting destinations: $myhostname, worker-0.XXX, localhost.XXX, , localhost setting relayhost: setting mynetworks: 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 setting mailbox_size_limit: 0 setting recipient_delimiter: + setting inet_interfaces: all setting inet_protocols: all /etc/aliases does not exist, creating it. WARNING: /etc/aliases exists, but does not have a root alias. Postfix is now set up with a default configuration. If you need to make changes, edit /etc/postfix/main.cf (and others) as needed. To view Postfix configuration values, see postconf(1). After modifying main.cf, be sure to run '/etc/init.d/postfix reload'. Running newaliases invoke-rc.d: could not determine current runlevel invoke-rc.d: policy-rc.d denied execution of restart. Setting up bsd-mailx (8.1.2-0.20160123cvs-2) ... update-alternatives: using /usr/bin/bsd-mailx to provide /usr/bin/mailx (mailx) in auto mode Setting up gridengine-common (6.2u5-7.4) ... Creating config file /etc/default/gridengine with new version Setting up gridengine-client (6.2u5-7.4) ... Setting up tcsh (6.18.01-5) ... update-alternatives: using /bin/tcsh to provide /bin/csh (csh) in auto mode Setting up gridengine-exec (6.2u5-7.4) ... invoke-rc.d: could not determine current runlevel invoke-rc.d: policy-rc.d denied execution of start. Setting up ncurses-term (6.0+20160213-1ubuntu1) ... Setting up openssh-sftp-server (1:7.2p2-4ubuntu2.8) ... Setting up openssh-server (1:7.2p2-4ubuntu2.8) ... Creating SSH2 RSA key; this may take some time ... 2048 SHA256:ok/TxzwtF5W8I55sDxrt4Agy4fuWn39BiSovvDObhVE root@worker-0.XXX (RSA) Creating SSH2 DSA key; this may take some time ... 1024 SHA256:4y48kVYt3mS3q1KgZzEoYMnS/2d/tA8TJUK5uNSaxZY root@worker-0.XXX (DSA) Creating SSH2 ECDSA key; this may take some time ... 256 SHA256:4D7zm4cD2IbDnHoXnzcIo3FISbvOW8eOstGBNf1/bvo root@worker-0.XXX (ECDSA) Creating SSH2 ED25519 key; this may take some time ... 256 SHA256:/HrA3xiZiH5CZkXwtcfE6GwcMM+hEhZzTdFHxj4PzDg root@worker-0.XXX (ED25519) invoke-rc.d: could not determine current runlevel invoke-rc.d: policy-rc.d denied execution of start. Setting up python3-pkg-resources (20.7.0-1) ... Setting up python3-chardet (2.3.0-2) ... Setting up python3-six (1.10.0-3) ... Setting up python3-urllib3 (1.13.1-2ubuntu0.16.04.3) ... Setting up python3-requests (2.9.1-3ubuntu0.1) ... Setting up ssh-import-id (5.5-0ubuntu1) ... Processing triggers for libc-bin (2.23-0ubuntu11) ... Processing triggers for systemd (229-4ubuntu21.22) ... Reading package lists... Building dependency tree... Reading state information... 0 upgraded, 0 newly installed, 0 to remove and 30 not upgraded. Copy cat $SGE_CFG_PATH/setcfg.log please wait Start SGE for worker is finished done for worker-0.XXX worker. Copy Sample output of sge:  "},{"title":"Setup a Kubernetes cluster using KinD","type":0,"sectionRef":"#","url":"docs/gettingStarted/kind","content":"","keywords":""},{"title":"Create Kubernetes cluster with KinD","type":1,"pageTitle":"Setup a Kubernetes cluster using KinD","url":"docs/gettingStarted/kind#create-kubernetes-cluster-with-kind","content":"We recommend users developing Submarine with minikube. However, KinD is also an option to setup a Kubernetes cluster on your local machine. Run the following command, and specify the KinD version and Kubernetes version here. # Download the specific version of KinD (must >= v0.6.0) export KIND_VERSION=v0.11.1 curl -Lo ./kind https://github.com/kubernetes-sigs/kind/releases/download/${KIND_VERSION}/kind-linux-amd64 # Make the binary executable chmod +x ./kind # Move the binary to your executable path sudo mv ./kind /usr/local/bin/ # Create cluster with specific version of kubernetes export KUBE_VERSION=v1.15.12 kind create cluster --image kindest/node:${KUBE_VERSION} Copy "},{"title":"Kubernetes Dashboard (optional)","type":1,"pageTitle":"Setup a Kubernetes cluster using KinD","url":"docs/gettingStarted/kind#kubernetes-dashboard-optional","content":""},{"title":"Deploy","type":1,"pageTitle":"Setup a Kubernetes cluster using KinD","url":"docs/gettingStarted/kind#deploy","content":"To deploy Dashboard, execute the following command: kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta8/aio/deploy/recommended.yaml Copy "},{"title":"Create RBAC","type":1,"pageTitle":"Setup a Kubernetes cluster using KinD","url":"docs/gettingStarted/kind#create-rbac","content":"Run the following commands to grant the cluster access permission of dashboard: kubectl create serviceaccount dashboard-admin-sa kubectl create clusterrolebinding dashboard-admin-sa --clusterrole=cluster-admin --serviceaccount=default:dashboard-admin-sa Copy "},{"title":"Get access token (optional)","type":1,"pageTitle":"Setup a Kubernetes cluster using KinD","url":"docs/gettingStarted/kind#get-access-token-optional","content":"If you want to use the token to login the dashboard, run the following commands to get key: kubectl get secrets # select the right dashboard-admin-sa-token to describe the secret kubectl describe secret dashboard-admin-sa-token-6nhkx Copy "},{"title":"Start dashboard service","type":1,"pageTitle":"Setup a Kubernetes cluster using KinD","url":"docs/gettingStarted/kind#start-dashboard-service","content":"kubectl proxy Copy Now access Dashboard at: http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/ Dashboard screenshot:  "},{"title":"Submarine Python SDK","type":0,"sectionRef":"#","url":"docs/gettingStarted/python-sdk","content":"","keywords":""},{"title":"Prepare Python Environment to run Submarine SDK","type":1,"pageTitle":"Submarine Python SDK","url":"docs/gettingStarted/python-sdk#prepare-python-environment-to-run-submarine-sdk","content":"Submarine SDK requires Python3.7+. It's better to use a new Python environment created by Anoconda or Python virtualenv to try this to avoid trouble to existing Python environment. A sample Python virtual env can be setup like this: wget https://files.pythonhosted.org/packages/33/bc/fa0b5347139cd9564f0d44ebd2b147ac97c36b2403943dbee8a25fd74012/virtualenv-16.0.0.tar.gz tar xf virtualenv-16.0.0.tar.gz # Make sure to install using Python 3 python3 virtualenv-16.0.0/virtualenv.py venv . venv/bin/activate Copy "},{"title":"Install Submarine SDK","type":1,"pageTitle":"Submarine Python SDK","url":"docs/gettingStarted/python-sdk#install-submarine-sdk","content":""},{"title":"Install SDK from pypi.org (recommended)","type":1,"pageTitle":"Submarine Python SDK","url":"docs/gettingStarted/python-sdk#install-sdk-from-pypiorg-recommended","content":"Starting from 0.4.0, Submarine provides Python SDK. Please change it to a proper version needed. More detail: https://pypi.org/project/apache-submarine/ # Install latest stable version pip install apache-submarine # Install specific version pip install apache-submarine==<REPLACE_VERSION> Copy "},{"title":"Install SDK from source code","type":1,"pageTitle":"Submarine Python SDK","url":"docs/gettingStarted/python-sdk#install-sdk-from-source-code","content":"Please first clone code from github or go to http://submarine.apache.org/download.html to download released source code. git clone https://github.com/apache/submarine.git # (optional) chackout specific branch or release git checkout <correct release tag/branch> cd submarine/submarine-sdk/pysubmarine pip install . Copy "},{"title":"Manage Submarine Experiment","type":1,"pageTitle":"Submarine Python SDK","url":"docs/gettingStarted/python-sdk#manage-submarine-experiment","content":"Assuming you've installed submarine on K8s and forward the traefik service to localhost, now you can open a Python shell, Jupyter notebook or any tools with Submarine SDK installed. Follow SDK experiment example to run an experiment. "},{"title":"Training a DeepFM model","type":1,"pageTitle":"Submarine Python SDK","url":"docs/gettingStarted/python-sdk#training-a-deepfm-model","content":"The Submarine also supports users to train an easy-to-use CTR model with a few lines of code and a configuration file, so they don’t need to reimplement the model by themself. In addition, they can train the model on both local on distributed systems, such as Hadoop or Kubernetes. Follow SDK DeepFM example to try the model. "},{"title":"Jupyter Notebook","type":0,"sectionRef":"#","url":"docs/gettingStarted/notebook","content":"","keywords":""},{"title":"Working with notebooks","type":1,"pageTitle":"Jupyter Notebook","url":"docs/gettingStarted/notebook#working-with-notebooks","content":"We recommend using Web UI to manage notebooks. "},{"title":"Notebooks Web UI","type":1,"pageTitle":"Jupyter Notebook","url":"docs/gettingStarted/notebook#notebooks-web-ui","content":"Notebooks can be started from the Web UI. You can click the “Notebook” tab in the left-hand panel to manage your notebooks.  To create a new notebook server, click “New Notebook”. You should see a form for entering details of your new notebook server. Notebook Name : Name of the notebook server. It should follow the rules below. Contain at most 63 characters.Contain only lowercase alphanumeric characters or '-'.Start with an alphabetic character.End with an alphanumeric character. Environment : It defines a set of libraries and docker image.CPU and MemoryGPU (optional)EnvVar (optional) : Injects environment variables into the notebook. If you’re not sure which environment you need, please choose the environment “notebook-env” for the new notebook.  You should see your new notebook server. Click the name of your notebook server to connect to it.  "},{"title":"Experiment with your notebook","type":1,"pageTitle":"Jupyter Notebook","url":"docs/gettingStarted/notebook#experiment-with-your-notebook","content":"The environment “notebook-env” includes Submarine Python SDK which can talk to Submarine Server to create experiments, as the example below: from __future__ import print_function import submarine from submarine.experiment.models.environment_spec import EnvironmentSpec from submarine.experiment.models.experiment_spec import ExperimentSpec from submarine.experiment.models.experiment_task_spec import ExperimentTaskSpec from submarine.experiment.models.experiment_meta import ExperimentMeta from submarine.experiment.models.code_spec import CodeSpec # Create Submarine Client submarine_client = submarine.ExperimentClient() # Define TensorFlow experiment spec environment = EnvironmentSpec(image='apache/submarine:tf-dist-mnist-test-1.0') experiment_meta = ExperimentMeta(name='mnist-dist', namespace='default', framework='Tensorflow', cmd='python /var/tf_dist_mnist/dist_mnist.py --train_steps=100', env_vars={'ENV1': 'ENV1'}) worker_spec = ExperimentTaskSpec(resources='cpu=1,memory=1024M', replicas=1) ps_spec = ExperimentTaskSpec(resources='cpu=1,memory=1024M', replicas=1) code_spec = CodeSpec(sync_mode='git', url='https://github.com/apache/submarine.git') experiment_spec = ExperimentSpec(meta=experiment_meta, environment=environment, code=code_spec, spec={'Ps' : ps_spec,'Worker': worker_spec}) # Create experiment experiment = submarine_client.create_experiment(experiment_spec=experiment_spec) Copy You can create a new notebook, paste the above code and run it. Or, you can find the notebook submarine_experiment_sdk.ipynb inside the launched notebook session. You can open it, try it out. After experiment submitted to Submarine server, you can find the experiment jobs on the UI. "},{"title":"Quickstart","type":0,"sectionRef":"#","url":"docs/gettingStarted/quickstart","content":"","keywords":""},{"title":"Installation","type":1,"pageTitle":"Quickstart","url":"docs/gettingStarted/quickstart#installation","content":""},{"title":"Prepare a Kubernetes cluster","type":1,"pageTitle":"Quickstart","url":"docs/gettingStarted/quickstart#prepare-a-kubernetes-cluster","content":"Prerequisite Check dependency page for the compatible versionkubectlhelm (Helm v3 is minimum requirement.)minikube. Start minikube cluster $ minikube start --vm-driver=docker --cpus 8 --memory 4096 --kubernetes-version v1.15.11 Copy "},{"title":"Launch submarine in the cluster","type":1,"pageTitle":"Quickstart","url":"docs/gettingStarted/quickstart#launch-submarine-in-the-cluster","content":"Clone the project $ git clone https://github.com/apache/submarine.git Copy Install the resources by helm chart $ cd submarine $ helm install submarine ./helm-charts/submarine Copy "},{"title":"Ensure submarine is ready","type":1,"pageTitle":"Quickstart","url":"docs/gettingStarted/quickstart#ensure-submarine-is-ready","content":"Use kubectl to query the status of pods $ kubectl get pods Copy Make sure each pod is Running NAME READY STATUS RESTARTS AGE notebook-controller-deployment-5d4f5f874c-vwds8 1/1 Running 0 3h33m pytorch-operator-844c866d54-q5ztd 1/1 Running 0 3h33m submarine-database-674987ff7d-r8zqs 1/1 Running 0 3h33m submarine-minio-5fdd957785-xd987 1/1 Running 0 3h33m submarine-mlflow-76bbf5c7b-g2ntd 1/1 Running 0 3h33m submarine-server-66f7b8658b-sfmv8 1/1 Running 0 3h33m submarine-tensorboard-6c44944dfb-tvbr9 1/1 Running 0 3h33m submarine-traefik-7cbcfd4bd9-4bczn 1/1 Running 0 3h33m tf-job-operator-6bb69fd44-mc8ww 1/1 Running 0 3h33m Copy "},{"title":"Connect to workbench","type":1,"pageTitle":"Quickstart","url":"docs/gettingStarted/quickstart#connect-to-workbench","content":"Port-forwarding # using port-forwarding $ kubectl port-forward --address 0.0.0.0 service/submarine-traefik 32080:80 Copy Open http://0.0.0.0:32080  "},{"title":"Example: Submit a mnist distributed example","type":1,"pageTitle":"Quickstart","url":"docs/gettingStarted/quickstart#example-submit-a-mnist-distributed-example","content":"We put the code of this example here. train.py is our training script, and build.sh is the script to build a docker image. "},{"title":"1. Write a python script for distributed training","type":1,"pageTitle":"Quickstart","url":"docs/gettingStarted/quickstart#1-write-a-python-script-for-distributed-training","content":"Take a simple mnist tensorflow script as an example. We choose MultiWorkerMirroredStrategy as our distributed strategy. \"\"\" ./dev-support/examples/quickstart/train.py Reference: https://github.com/kubeflow/tf-operator/blob/master/examples/v1/distribution_strategy/keras-API/multi_worker_strategy-with-keras.py \"\"\" import tensorflow_datasets as tfds import tensorflow as tf from tensorflow.keras import layers, models from submarine import ModelsClient def make_datasets_unbatched(): BUFFER_SIZE = 10000 # Scaling MNIST data from (0, 255] to (0., 1.] def scale(image, label): image = tf.cast(image, tf.float32) image /= 255 return image, label datasets, _ = tfds.load(name='mnist', with_info=True, as_supervised=True) return datasets['train'].map(scale).cache().shuffle(BUFFER_SIZE) def build_and_compile_cnn_model(): model = models.Sequential() model.add( layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1))) model.add(layers.MaxPooling2D((2, 2))) model.add(layers.Conv2D(64, (3, 3), activation='relu')) model.add(layers.MaxPooling2D((2, 2))) model.add(layers.Conv2D(64, (3, 3), activation='relu')) model.add(layers.Flatten()) model.add(layers.Dense(64, activation='relu')) model.add(layers.Dense(10, activation='softmax')) model.summary() model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) return model def main(): strategy = tf.distribute.experimental.MultiWorkerMirroredStrategy( communication=tf.distribute.experimental.CollectiveCommunication.AUTO) BATCH_SIZE_PER_REPLICA = 4 BATCH_SIZE = BATCH_SIZE_PER_REPLICA * strategy.num_replicas_in_sync with strategy.scope(): ds_train = make_datasets_unbatched().batch(BATCH_SIZE).repeat() options = tf.data.Options() options.experimental_distribute.auto_shard_policy = \\ tf.data.experimental.AutoShardPolicy.DATA ds_train = ds_train.with_options(options) # Model building/compiling need to be within `strategy.scope()`. multi_worker_model = build_and_compile_cnn_model() class MyCallback(tf.keras.callbacks.Callback): def on_epoch_end(self, epoch, logs=None): # monitor the loss and accuracy print(logs) modelClient.log_metrics({\"loss\": logs[\"loss\"], \"accuracy\": logs[\"accuracy\"]}, epoch) with modelClient.start() as run: multi_worker_model.fit(ds_train, epochs=10, steps_per_epoch=70, callbacks=[MyCallback()]) if __name__ == '__main__': modelClient = ModelsClient() main() Copy "},{"title":"2. Prepare an environment compatible with the training","type":1,"pageTitle":"Quickstart","url":"docs/gettingStarted/quickstart#2-prepare-an-environment-compatible-with-the-training","content":"Build a docker image equipped with the requirement of the environment. $ ./dev-support/examples/quickstart/build.sh Copy "},{"title":"3. Submit the experiment","type":1,"pageTitle":"Quickstart","url":"docs/gettingStarted/quickstart#3-submit-the-experiment","content":"Open submarine workbench and click + New Experiment Fill the form accordingly. Here we set 3 workers. Step 1Step 2Step 3The experiment is successfully submitted "},{"title":"4. Monitor the process (modelClient)","type":1,"pageTitle":"Quickstart","url":"docs/gettingStarted/quickstart#4-monitor-the-process-modelclient","content":"In our code, we use modelClient from submarine-sdk to record the metrics. To see the result, click MLflow UI in the workbench. To compare the metrics of each worker, you can select all workers and then click compare "},{"title":"5. Serve the model (In development)","type":1,"pageTitle":"Quickstart","url":"docs/gettingStarted/quickstart#5-serve-the-model-in-development","content":""},{"title":"Environment REST API","type":0,"sectionRef":"#","url":"docs/userDocs/api/environment","content":"","keywords":""},{"title":"Create Environment","type":1,"pageTitle":"Environment REST API","url":"docs/userDocs/api/environment#create-environment","content":"POST /api/v1/environment Copy "},{"title":"Parameters","type":1,"pageTitle":"Environment REST API","url":"docs/userDocs/api/environment#parameters","content":"Put EnvironmentSpec in request body. EnvironmentSpec# Field Name\tType\tDescriptionname\tString\tEnvironment name. dockerImage\tString\tDocker image name. kernelSpec\tKernelSpec\tEnvironment spec. description\tString\tDescription of environment. KernelSpec# Field Name\tType\tDescriptionname\tString\tKernel name. channels\tList<String>\tNames of the channels. condaDependencies\tList<String>\tList of kernel conda dependencies. pipDependencies\tList<String>\tList of kernel pip dependencies. "},{"title":"Code Example","type":1,"pageTitle":"Environment REST API","url":"docs/userDocs/api/environment#code-example","content":"shell curl -X POST -H \"Content-Type: application/json\" -d ' { \"name\": \"my-submarine-env\", \"dockerImage\" : \"continuumio/anaconda3\", \"kernelSpec\" : { \"name\" : \"team_default_python_3.7\", \"channels\" : [\"defaults\"], \"condaDependencies\" : [\"_ipyw_jlab_nb_ext_conf=0.1.0=py37_0\", \"alabaster=0.7.12=py37_0\", \"anaconda=2020.02=py37_0\", \"anaconda-client=1.7.2=py37_0\", \"anaconda-navigator=1.9.12=py37_0\"], \"pipDependencies\" : [\"apache-submarine==0.5.0\", \"pyarrow==0.17.0\"] } } ' http://127.0.0.1:32080/api/v1/environment Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ \"environmentId\":\"environment_1626160071451_0001\", \"environmentSpec\":{ \"name\":\"my-submarine-env\", \"dockerImage\":\"continuumio/anaconda3\", \"kernelSpec\":{ \"name\":\"team_default_python_3.7\", \"channels\":[\"defaults\"], \"condaDependencies\": [\"_ipyw_jlab_nb_ext_conf\\u003d0.1.0\\u003dpy37_0\", \"alabaster\\u003d0.7.12\\u003dpy37_0\", \"anaconda\\u003d2020.02\\u003dpy37_0\", \"anaconda-client\\u003d1.7.2\\u003dpy37_0\", \"anaconda-navigator\\u003d1.9.12\\u003dpy37_0\"], \"pipDependencies\": [\"apache-submarine\\u003d\\u003d0.5.0\", \"pyarrow\\u003d\\u003d0.17.0\"] }, \"description\":null, \"image\":null } }, \"attributes\":{} } Copy "},{"title":"List Environment","type":1,"pageTitle":"Environment REST API","url":"docs/userDocs/api/environment#list-environment","content":"GET /api/v1/environment Copy "},{"title":"Code Example","type":1,"pageTitle":"Environment REST API","url":"docs/userDocs/api/environment#code-example-1","content":"shell curl -X GET http://127.0.0.1:32080/api/v1/environment Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":[ { \"environmentId\":\"environment_1600862964725_0002\", \"environmentSpec\":{ \"name\":\"notebook-gpu-env\", \"dockerImage\":\"apache/submarine:jupyter-notebook-gpu-0.7.0-SNAPSHOT\", \"kernelSpec\":{ \"name\":\"submarine_jupyter_py3\", \"channels\":[\"defaults\"], \"condaDependencies\":[], \"pipDependencies\":[] }, \"description\":null, \"image\":null } }, { \"environmentId\":\"environment_1626160071451_0001\", \"environmentSpec\":{ \"name\":\"my-submarine-env\", \"dockerImage\":\"continuumio/anaconda3\", \"kernelSpec\":{ \"name\":\"team_default_python_3.7\", \"channels\":[\"defaults\"], \"condaDependencies\": [\"_ipyw_jlab_nb_ext_conf\\u003d0.1.0\\u003dpy37_0\", \"alabaster\\u003d0.7.12\\u003dpy37_0\", \"anaconda\\u003d2020.02\\u003dpy37_0\", \"anaconda-client\\u003d1.7.2\\u003dpy37_0\", \"anaconda-navigator\\u003d1.9.12\\u003dpy37_0\"], \"pipDependencies\": [\"apache-submarine\\u003d\\u003d0.5.0\", \"pyarrow\\u003d\\u003d0.17.0\"] }, \"description\":null, \"image\":null } }, { \"environmentId\":\"environment_1600862964725_0001\", \"environmentSpec\":{ \"name\":\"notebook-env\", \"dockerImage\":\"apache/submarine:jupyter-notebook-0.7.0-SNAPSHOT\", \"kernelSpec\":{ \"name\":\"submarine_jupyter_py3\", \"channels\":[\"defaults\"], \"condaDependencies\":[], \"pipDependencies\":[] }, \"description\":null, \"image\":null } } ], \"attributes\":{} } Copy "},{"title":"Get Environment","type":1,"pageTitle":"Environment REST API","url":"docs/userDocs/api/environment#get-environment","content":"GET /api/v1/environment/{name} Copy "},{"title":"Parameters","type":1,"pageTitle":"Environment REST API","url":"docs/userDocs/api/environment#parameters-1","content":"Field Name\tType\tIn\tDescriptionname\tString\tpath\tEnvironment name. "},{"title":"Code Example","type":1,"pageTitle":"Environment REST API","url":"docs/userDocs/api/environment#code-example-2","content":"shell curl -X GET http://127.0.0.1:32080/api/v1/environment/my-submarine-env Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ \"environmentId\":\"environment_1626160071451_0001\", \"environmentSpec\":{ \"name\":\"my-submarine-env\", \"dockerImage\":\"continuumio/anaconda3\", \"kernelSpec\":{ \"name\":\"team_default_python_3.7\", \"channels\":[\"defaults\"], \"condaDependencies\": [\"_ipyw_jlab_nb_ext_conf\\u003d0.1.0\\u003dpy37_0\", \"alabaster\\u003d0.7.12\\u003dpy37_0\", \"anaconda\\u003d2020.02\\u003dpy37_0\", \"anaconda-client\\u003d1.7.2\\u003dpy37_0\", \"anaconda-navigator\\u003d1.9.12\\u003dpy37_0\"], \"pipDependencies\": [\"apache-submarine\\u003d\\u003d0.5.0\", \"pyarrow\\u003d\\u003d0.17.0\"] }, \"description\":null, \"image\":null } }, \"attributes\":{} } Copy "},{"title":"Patch Environment","type":1,"pageTitle":"Environment REST API","url":"docs/userDocs/api/environment#patch-environment","content":"PATCH /api/v1/environment/{name} Copy "},{"title":"Parameters","type":1,"pageTitle":"Environment REST API","url":"docs/userDocs/api/environment#parameters-2","content":"Field Name\tType\tIn\tDescriptionname\tString\tpath and body\tEnvironment name. dockerImage\tString\tbody\tDocker image name. kernelSpec\tKernelSpec\tbody\tEnvironment spec. description\tString\tbody\tDescription of environment. This field is optional. "},{"title":"Code Example","type":1,"pageTitle":"Environment REST API","url":"docs/userDocs/api/environment#code-example-3","content":"shell curl -X PATCH -H \"Content-Type: application/json\" -d ' { \"name\": \"my-submarine-env\", \"dockerImage\" : \"continuumio/anaconda3\", \"kernelSpec\" : { \"name\" : \"team_default_python_3.7_updated\", \"channels\" : [\"defaults\"], \"condaDependencies\" : [\"_ipyw_jlab_nb_ext_conf=0.1.0=py37_0\", \"alabaster=0.7.12=py37_0\"], \"pipDependencies\" : [] } } ' http://127.0.0.1:32080/api/v1/environment/my-submarine-env Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ \"environmentId\":\"environment_1626160071451_0003\", \"environmentSpec\":{ \"name\":\"my-submarine-env\", \"dockerImage\":\"continuumio/anaconda3\", \"kernelSpec\":{ \"name\":\"team_default_python_3.7_updated\", \"channels\":[\"defaults\"], \"condaDependencies\": [\"_ipyw_jlab_nb_ext_conf\\u003d0.1.0\\u003dpy37_0\", \"alabaster\\u003d0.7.12\\u003dpy37_0\"], \"pipDependencies\":[] }, \"description\":null, \"image\":null } }, \"attributes\":{} } Copy "},{"title":"Delete Environment","type":1,"pageTitle":"Environment REST API","url":"docs/userDocs/api/environment#delete-environment","content":"DELETE /api/v1/environment/{name} Copy "},{"title":"Parameters","type":1,"pageTitle":"Environment REST API","url":"docs/userDocs/api/environment#parameters-3","content":"Field Name\tType\tIn\tDescriptionname\tString\tpath\tEnvironment name. "},{"title":"Code Example","type":1,"pageTitle":"Environment REST API","url":"docs/userDocs/api/environment#code-example-4","content":"shell curl -X DELETE http://127.0.0.1:32080/api/v1/environment/my-submarine-env Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ \"environmentId\":\"environment_1626160071451_0001\", \"environmentSpec\":{ \"name\":\"my-submarine-env\", \"dockerImage\":\"continuumio/anaconda3\", \"kernelSpec\":{ \"name\":\"team_default_python_3.7\", \"channels\":[\"defaults\"], \"condaDependencies\": [\"_ipyw_jlab_nb_ext_conf\\u003d0.1.0\\u003dpy37_0\", \"alabaster\\u003d0.7.12\\u003dpy37_0\", \"anaconda\\u003d2020.02\\u003dpy37_0\", \"anaconda-client\\u003d1.7.2\\u003dpy37_0\", \"anaconda-navigator\\u003d1.9.12\\u003dpy37_0\"], \"pipDependencies\": [\"apache-submarine\\u003d\\u003d0.5.0\", \"pyarrow\\u003d\\u003d0.17.0\"] }, \"description\":null, \"image\":null } },\"attributes\":{} } Copy "},{"title":"Experiment REST API","type":0,"sectionRef":"#","url":"docs/userDocs/api/experiment","content":"","keywords":""},{"title":"Create Experiment (Using Anonymous/Embedded Environment)","type":1,"pageTitle":"Experiment REST API","url":"docs/userDocs/api/experiment#create-experiment-using-anonymousembedded-environment","content":"POST /api/v1/experiment Copy "},{"title":"Parameters","type":1,"pageTitle":"Experiment REST API","url":"docs/userDocs/api/experiment#parameters","content":"Put ExperimentSpec in request body. ExperimentSpec# Field Name\tType\tDescriptionmeta\tExperimentMeta\tMeta data of the experiment template. environment\tEnvironmentSpec\tEnvironment of the experiment template. spec\tMap<String, ExperimentTaskSpec>\tSpec of pods. code\tCodeSpec\tExperiment codespec. ExperimentMeta# Field Name\tType\tDescriptionname\tString\tExperiment name. namespace\tString\tExperiment namespace. framework\tString\tExperiemnt framework. cmd\tString\tCommand. envVars\tMap<String, String>\tEnvironmental variables. EnvironmentSpec# There are two types of environment: Anonymous and Predefined. Anonymous environment: only specify dockerImage in environment spec. The container will be built on the docker image.Embedded environment: specify name in environment spec. The container will be built on the existing environment (including dockerImage and kernalSpec). See more details in environment api. ExperimentTaskSpec# Field Name\tType\tDescriptionreplicas\tInteger\tNumbers of replicas. resoureces\tString\tResouces of the task name\tString\tTask name. image\tString\tImage name. cmd\tString\tCommand. envVars\tMap<String, String>\tEnvironmental variables. CodeSpec# Currently only support pulling from github. HDFS, NFS and s3 are in development Field Name\tType\tDescriptionsyncMode\tString (git|hdfs|nfs|s3)\tsync mode of code spec. url\tString\turl of code spec. "},{"title":"Code Example","type":1,"pageTitle":"Experiment REST API","url":"docs/userDocs/api/experiment#code-example","content":"shell curl -X POST -H \"Content-Type: application/json\" -d ' { \"meta\": { \"name\": \"tf-mnist-json\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=2048M\" } } } ' http://127.0.0.1:32080/api/v1/experiment Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ \"experimentId\":\"experiment_1626160071451_0002\", \"name\":\"tf-mnist-json\", \"uid\":\"5a6ec922-6c90-43d4-844f-039f6804ed36\", \"status\":\"Accepted\", \"acceptedTime\":\"2021-07-13T16:47:51.000+08:00\", \"createdTime\":null, \"runningTime\":null, \"finishedTime\":null, \"spec\":{ \"meta\":{ \"name\":\"tf-mnist-json\", \"namespace\":\"default\", \"framework\":\"TensorFlow\", \"cmd\":\"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150\", \"envVars\":{\"ENV_1\":\"ENV1\"} }, \"environment\":{ \"name\":null, \"dockerImage\":null, \"kernelSpec\":null, \"description\":null, \"image\":\"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\":{ \"Ps\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"1024M\",\"cpu\":\"1\"} }, \"Worker\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d2048M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"2048M\",\"cpu\":\"1\"} } }, \"code\":null } }, \"attributes\":{} } Copy "},{"title":"Create Experiment (Using Pre-defined/Stored Environment)","type":1,"pageTitle":"Experiment REST API","url":"docs/userDocs/api/experiment#create-experiment-using-pre-definedstored-environment","content":"POST /api/v1/experiment Copy "},{"title":"Parameters","type":1,"pageTitle":"Experiment REST API","url":"docs/userDocs/api/experiment#parameters-1","content":"Put ExperimentSpec in request body. "},{"title":"Code Example","type":1,"pageTitle":"Experiment REST API","url":"docs/userDocs/api/experiment#code-example-1","content":"shell curl -X POST -H \"Content-Type: application/json\" -d ' { \"meta\": { \"name\": \"tf-mnist-json\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"name\": \"my-submarine-env\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=2048M\" } } } ' http://127.0.0.1:32080/api/v1/experiment Copy Above example assume environment \"my-submarine-env\" already exists in Submarine. Please refer Environment API Reference doc to environment rest api. response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ \"experimentId\":\"experiment_1626160071451_0005\", \"name\":\"tf-mnist-json\", \"uid\":\"4944c603-0f21-49e5-826a-2ff820bb4d93\", \"status\":\"Accepted\", \"acceptedTime\":\"2021-07-13T16:57:27.000+08:00\", \"createdTime\":null, \"runningTime\":null, \"finishedTime\":null, \"spec\":{ \"meta\":{ \"name\":\"tf-mnist-json\", \"namespace\":\"default\", \"framework\":\"TensorFlow\", \"cmd\":\"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150\", \"envVars\":{\"ENV_1\":\"ENV1\"} }, \"environment\":{ \"name\":\"my-submarine-env\", \"dockerImage\":null, \"kernelSpec\":null, \"description\":null, \"image\":null }, \"spec\":{ \"Ps\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"1024M\",\"cpu\":\"1\"} }, \"Worker\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d2048M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"2048M\",\"cpu\":\"1\"} } }, \"code\":null } }, \"attributes\":{} } Copy "},{"title":"List Experiment","type":1,"pageTitle":"Experiment REST API","url":"docs/userDocs/api/experiment#list-experiment","content":"GET /api/v1/experiment Copy "},{"title":"Code Example","type":1,"pageTitle":"Experiment REST API","url":"docs/userDocs/api/experiment#code-example-2","content":"shell curl -X GET http://127.0.0.1:32080/api/v1/experiment Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\": [{ \"experimentId\":\"experiment_1626160071451_0001\", \"name\":\"newexperiment1\", \"uid\":\"b895985c-411c-4e89-90e0-c60a2a8a4235\", \"status\":\"Succeeded\", \"acceptedTime\":\"2021-07-13T16:21:31.000+08:00\", \"createdTime\":\"2021-07-13T16:21:31.000+08:00\", \"runningTime\":\"2021-07-13T16:21:46.000+08:00\", \"finishedTime\":\"2021-07-13T16:26:54.000+08:00\", \"spec\":{ \"meta\":{ \"name\":\"newexperiment1\", \"namespace\":\"default\", \"framework\":\"TensorFlow\", \"cmd\":\"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150\", \"envVars\":{\"ENV1\":\"ENV1\"} }, \"environment\":{ \"name\":null, \"dockerImage\":null, \"kernelSpec\":null, \"description\":null, \"image\":\"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\":{ \"Ps\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"1024M\",\"cpu\":\"1\"} }, \"Worker\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"1024M\",\"cpu\":\"1\"} } }, \"code\":null } }, { \"experimentId\":\"experiment_1626160071451_0005\", \"name\":\"tf-mnist-json\", \"uid\":\"4944c603-0f21-49e5-826a-2ff820bb4d93\", \"status\":\"Accepted\", \"acceptedTime\":\"2021-07-13T16:57:27.000+08:00\", \"createdTime\":null, \"runningTime\":null, \"finishedTime\":null, \"spec\":{ \"meta\":{ \"name\":\"tf-mnist-json\", \"namespace\":\"default\", \"framework\":\"TensorFlow\", \"cmd\":\"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150\", \"envVars\":{\"ENV_1\":\"ENV1\"} }, \"environment\":{ \"name\":\"my-submarine-env\", \"dockerImage\":null, \"kernelSpec\":null, \"description\":null, \"image\":null }, \"spec\":{ \"Ps\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"1024M\",\"cpu\":\"1\"} }, \"Worker\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d2048M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"2048M\",\"cpu\":\"1\"} } }, \"code\":null } }], \"attributes\":{} } Copy "},{"title":"Get Experiment","type":1,"pageTitle":"Experiment REST API","url":"docs/userDocs/api/experiment#get-experiment","content":"GET /api/v1/experiment/{id} Copy "},{"title":"Parameters","type":1,"pageTitle":"Experiment REST API","url":"docs/userDocs/api/experiment#parameters-2","content":"Field Name\tType\tIn\tDescriptionid\tString\tpath\tExperiment id. "},{"title":"Code Example","type":1,"pageTitle":"Experiment REST API","url":"docs/userDocs/api/experiment#code-example-3","content":"shell curl -X GET http://127.0.0.1:32080/api/v1/experiment/experiment_1626160071451_0005 Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ \"experimentId\":\"experiment_1626160071451_0005\", \"name\":\"tf-mnist-json\", \"uid\":\"4944c603-0f21-49e5-826a-2ff820bb4d93\", \"status\":\"Accepted\", \"acceptedTime\":\"2021-07-13T16:57:27.000+08:00\", \"createdTime\":null, \"runningTime\":null, \"finishedTime\":null, \"spec\":{ \"meta\":{ \"name\":\"tf-mnist-json\", \"namespace\":\"default\", \"framework\":\"TensorFlow\", \"cmd\":\"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150\", \"envVars\":{\"ENV_1\":\"ENV1\"} }, \"environment\":{ \"name\":\"my-submarine-env\", \"dockerImage\":null, \"kernelSpec\":null, \"description\":null, \"image\":null }, \"spec\":{ \"Ps\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"1024M\",\"cpu\":\"1\"} }, \"Worker\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d2048M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"2048M\",\"cpu\":\"1\"} } }, \"code\":null } }, \"attributes\":{} } Copy "},{"title":"Patch Experiment","type":1,"pageTitle":"Experiment REST API","url":"docs/userDocs/api/experiment#patch-experiment","content":"PATCH /api/v1/experiment/{id} Copy "},{"title":"Parameters","type":1,"pageTitle":"Experiment REST API","url":"docs/userDocs/api/experiment#parameters-3","content":"Field Name\tType\tIn\tDescriptionid\tString\tpath\tExperiment id. meta\tExperimentMeta\tbody\tMeta data of the experiment template. environment\tEnvironmentSpec\tbody\tEnvironment of the experiment template. spec\tMap<String, ExperimentTaskSpec>\tbody\tSpec of pods. code\tCodeSpec\tbody\tTODO "},{"title":"Code Example","type":1,"pageTitle":"Experiment REST API","url":"docs/userDocs/api/experiment#code-example-4","content":"shell curl -X PATCH -H \"Content-Type: application/json\" -d ' { \"meta\": { \"name\": \"tf-mnist-json\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 2, \"resources\": \"cpu=1,memory=2048M\" } } } ' http://127.0.0.1:32080/api/v1/experiment/experiment_1626160071451_0005 Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ \"experimentId\":\"experiment_1626160071451_0005\", \"name\":\"tf-mnist-json\", \"uid\":\"4944c603-0f21-49e5-826a-2ff820bb4d93\", \"status\":\"Accepted\", \"acceptedTime\":\"2021-07-13T16:57:27.000+08:00\", \"createdTime\":null, \"runningTime\":null, \"finishedTime\":null, \"spec\":{ \"meta\":{ \"name\":\"tf-mnist-json\", \"namespace\":\"default\", \"framework\":\"TensorFlow\", \"cmd\":\"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150\", \"envVars\":{\"ENV_1\":\"ENV1\"} }, \"environment\":{ \"name\":null, \"dockerImage\":null, \"kernelSpec\":null, \"description\":null, \"image\":\"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\":{ \"Ps\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"1024M\",\"cpu\":\"1\"} }, \"Worker\":{ \"replicas\":2, \"resources\":\"cpu\\u003d1,memory\\u003d2048M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"2048M\",\"cpu\":\"1\"} } }, \"code\":null } }, \"attributes\":{} } Copy "},{"title":"Delete Experiment","type":1,"pageTitle":"Experiment REST API","url":"docs/userDocs/api/experiment#delete-experiment","content":"DELETE /api/v1/experiment/{id} Copy "},{"title":"Parameters","type":1,"pageTitle":"Experiment REST API","url":"docs/userDocs/api/experiment#parameters-4","content":"Field Name\tType\tIn\tDescriptionid\tString\tpath\tExperiment id. "},{"title":"Code Example","type":1,"pageTitle":"Experiment REST API","url":"docs/userDocs/api/experiment#code-example-5","content":"shell curl -X DELETE http://127.0.0.1:32080/api/v1/experiment/experiment_1626160071451_0005 Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ \"experimentId\":\"experiment_1626160071451_0005\", \"name\":\"tf-mnist-json\", \"uid\":\"4944c603-0f21-49e5-826a-2ff820bb4d93\", \"status\":\"Deleted\", \"acceptedTime\":null, \"createdTime\":null, \"runningTime\":null, \"finishedTime\":null, \"spec\":{ \"meta\":{ \"name\":\"tf-mnist-json\", \"namespace\":\"default\", \"framework\":\"TensorFlow\", \"cmd\":\"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150\", \"envVars\":{\"ENV_1\":\"ENV1\"} }, \"environment\":{ \"name\":null, \"dockerImage\":null, \"kernelSpec\":null, \"description\":null, \"image\":\"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\":{ \"Ps\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"1024M\",\"cpu\":\"1\"} }, \"Worker\":{ \"replicas\":2, \"resources\":\"cpu\\u003d1,memory\\u003d2048M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"2048M\",\"cpu\":\"1\"} } }, \"code\":null } }, \"attributes\":{} } Copy "},{"title":"List Experiment Log","type":1,"pageTitle":"Experiment REST API","url":"docs/userDocs/api/experiment#list-experiment-log","content":"GET /api/v1/experiment/logs Copy "},{"title":"Code Example","type":1,"pageTitle":"Experiment REST API","url":"docs/userDocs/api/experiment#code-example-6","content":"shell curl -X GET http://127.0.0.1:32080/api/v1/experiment/logs Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\": [{ \"experimentId\":\"experiment_1626160071451_0001\", \"logContent\": [{ \"podName\":\"newexperiment1-ps-0\", \"podLog\":[] }, { \"podName\":\"newexperiment1-worker-0\", \"podLog\":[] }] }], \"attributes\":{} } Copy "},{"title":"Get Experiment Log","type":1,"pageTitle":"Experiment REST API","url":"docs/userDocs/api/experiment#get-experiment-log","content":"GET /api/v1/experiment/logs/{id} Copy "},{"title":"Parameters","type":1,"pageTitle":"Experiment REST API","url":"docs/userDocs/api/experiment#parameters-5","content":"Field Name\tType\tIn\tDescriptionid\tString\tpath\tExperiment id. "},{"title":"Code Example","type":1,"pageTitle":"Experiment REST API","url":"docs/userDocs/api/experiment#code-example-7","content":"shell curl -X GET http://127.0.0.1:32080/api/v1/experiment/logs/experiment_1626160071451_0001 Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ \"experimentId\":\"experiment_1626160071451_0001\", \"logContent\": [{ \"podName\":\"newexperiment1-ps-0\", \"podLog\":[] }, { \"podName\":\"newexperiment1-worker-0\", \"podLog\":[] }] }, \"attributes\":{} } Copy "},{"title":"Experiment Template REST API","type":0,"sectionRef":"#","url":"docs/userDocs/api/experiment-template","content":"","keywords":""},{"title":"Create Experiment Template","type":1,"pageTitle":"Experiment Template REST API","url":"docs/userDocs/api/experiment-template#create-experiment-template","content":"POST /api/v1/template Copy "},{"title":"Parameters","type":1,"pageTitle":"Experiment Template REST API","url":"docs/userDocs/api/experiment-template#parameters","content":"Field Name\tType\tIn\tDescriptionname\tString\tbody\tExperiment template name. This is required. author\tString\tbody\tAuthor name. description\tString\tbody\tDescription of the experiment template. parameters\tList<ExperimentTemplateParamSpec>\tbody\tParameters of the experiment template. experimentSpec\tExperimentSpec\tbody\tSpec of the experiment template. ExperimentTemplateParamSpec# Field Name\tType\tDescriptionname\tString\tParameter name. required\tBoolean\ttrue / false. Whether the parameter is required. description\tString\tDescription of the parameter. value\tString\tValue of the parameter. ExperimentSpec# Field Name\tType\tDescriptionmeta\tExperimentMeta\tMeta data of the experiment template. environment\tEnvironmentSpec\tEnvironment of the experiment template. spec\tMap<String, ExperimentTaskSpec>\tSpec of pods. code\tCodeSpec\tExperiment codespec. ExperimentMeta# Field Name\tType\tDescriptionname\tString\tExperiment Name. namespace\tString\tExperiment namespace. framework\tString\tExperiment framework. cmd\tString\tCommand. envVars\tMap<String, String>\tEnvironmental variables. EnvironmentSpec# See more details in environment api. ExperimentTaskSpec# Field Name\tType\tDescriptionreplicas\tInteger\tNumbers of replicas. resoureces\tString\tResouces of the task name\tString\tTask name. image\tString\tImage name. cmd\tString\tCommand. envVars\tMap<String, String>\tEnvironmental variables. CodeSpec# Field Name\tType\tDescriptionsyncMode\tString\tsync mode of code spec. url\tString\turl of code spec. "},{"title":"Code Example","type":1,"pageTitle":"Experiment Template REST API","url":"docs/userDocs/api/experiment-template#code-example","content":"shell curl -X POST -H \"Content-Type: application/json\" -d ' { \"name\": \"my-tf-mnist-template\", \"author\": \"author\", \"description\": \"This is a template to run tf-mnist\", \"parameters\": [{ \"name\": \"learning_rate\", \"value\": 0.1, \"required\": true, \"description\": \"This is learning_rate of training.\" }, { \"name\": \"batch_size\", \"value\": 150, \"required\": true, \"description\": \"This is batch_size of training.\" }, { \"name\": \"experiment_name\", \"value\": \"tf-mnist1\", \"required\": true, \"description\": \"the name of experiment.\" } ], \"experimentSpec\": { \"meta\": { \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate={{learning_rate}} --batch_size={{batch_size}}\", \"name\": \"{{experiment_name}}\", \"envVars\": { \"ENV1\": \"ENV1\" }, \"framework\": \"TensorFlow\", \"namespace\": \"default\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" } } } ' http://127.0.0.1:32080/api/v1/template Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ \"experimentTemplateId\":{ \"id\":1, \"serverTimestamp\":1626160071451 }, \"experimentTemplateSpec\":{ \"name\":\"my-tf-mnist-template\", \"author\":\"author\", \"description\":\"This is a template to run tf-mnist\", \"parameters\": [{ \"name\":\"learning_rate\", \"required\":\"true\", \"description\":\"This is learning_rate of training.\", \"value\":\"0.1\" }, { \"name\":\"batch_size\", \"required\":\"true\", \"description\":\"This is batch_size of training.\", \"value\":\"150\" }, { \"name\":\"experiment_name\", \"required\":\"true\", \"description\":\"the name of experiment.\", \"value\":\"tf-mnist1\" }, { \"name\":\"spec.Ps.replicas\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Ps.resourceMap.cpu\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Ps.resourceMap.memory\", \"required\":\"false\", \"description\":\"\", \"value\":\"1024M\" }, { \"name\":\"spec.Worker.replicas\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Worker.resourceMap.cpu\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Worker.resourceMap.memory\", \"required\":\"false\", \"description\":\"\",\" value\":\"1024M\" }], \"experimentSpec\":{ \"meta\":{ \"name\":\"{{experiment_name}}\", \"namespace\":\"default\", \"framework\":\"TensorFlow\", \"cmd\":\"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d{{learning_rate}} --batch_size\\u003d{{batch_size}}\", \"envVars\":{\"ENV1\":\"ENV1\"} }, \"environment\":{ \"name\":null, \"dockerImage\":null, \"kernelSpec\":null, \"description\":null, \"image\":\"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\":{ \"Ps\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{ \"memory\":\"1024M\", \"cpu\":\"1\" } }, \"Worker\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{ \"memory\":\"1024M\", \"cpu\":\"1\" } } }, \"code\":null } } }, \"attributes\":{} } Copy "},{"title":"List Experiment Template","type":1,"pageTitle":"Experiment Template REST API","url":"docs/userDocs/api/experiment-template#list-experiment-template","content":"GET /api/v1/template Copy "},{"title":"Code Example","type":1,"pageTitle":"Experiment Template REST API","url":"docs/userDocs/api/experiment-template#code-example-1","content":"shell curl -X GET http://127.0.0.1:32080/api/v1/template Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ [{ \"experimentTemplateId\":{ \"id\":1, \"serverTimestamp\":1626160071451 }, \"experimentTemplateSpec\":{ \"name\":\"my-tf-mnist-template\", \"author\":\"author\", \"description\":\"This is a template to run tf-mnist\", \"parameters\": [{ \"name\":\"learning_rate\", \"required\":\"true\", \"description\":\"This is learning_rate of training.\", \"value\":\"0.1\" }, { \"name\":\"batch_size\", \"required\":\"true\", \"description\":\"This is batch_size of training.\", \"value\":\"150\" }, { \"name\":\"experiment_name\", \"required\":\"true\", \"description\":\"the name of experiment.\", \"value\":\"tf-mnist1\" }, { \"name\":\"spec.Ps.replicas\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Ps.resourceMap.cpu\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Ps.resourceMap.memory\", \"required\":\"false\", \"description\":\"\", \"value\":\"1024M\" }, { \"name\":\"spec.Worker.replicas\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Worker.resourceMap.cpu\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Worker.resourceMap.memory\", \"required\":\"false\", \"description\":\"\",\" value\":\"1024M\" }], \"experimentSpec\":{ \"meta\":{ \"name\":\"{{experiment_name}}\", \"namespace\":\"default\", \"framework\":\"TensorFlow\", \"cmd\":\"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d{{learning_rate}} --batch_size\\u003d{{batch_size}}\", \"envVars\":{\"ENV1\":\"ENV1\"} }, \"environment\":{ \"name\":null, \"dockerImage\":null, \"kernelSpec\":null, \"description\":null, \"image\":\"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\":{ \"Ps\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{ \"memory\":\"1024M\", \"cpu\":\"1\" } }, \"Worker\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{ \"memory\":\"1024M\", \"cpu\":\"1\" } } }, \"code\":null } } }], \"attributes\":{} } Copy "},{"title":"Patch Experiment Template","type":1,"pageTitle":"Experiment Template REST API","url":"docs/userDocs/api/experiment-template#patch-experiment-template","content":"PATCH /api/v1/template{name} Copy "},{"title":"Parameters","type":1,"pageTitle":"Experiment Template REST API","url":"docs/userDocs/api/experiment-template#parameters-1","content":"Field Name\tType\tIn\tDescriptionname\tString\tpath and body\tExperiment template name. This is required. author\tString\tbody\tAuthor name. description\tString\tbody\tDescription of the experiment template. parameters\tList<ExperimentTemplateParamSpec>\tbody\tParameters of the experiment template. experimentSpec\tExperimentSpec\tbody\tSpec of the experiment template. "},{"title":"Code Example","type":1,"pageTitle":"Experiment Template REST API","url":"docs/userDocs/api/experiment-template#code-example-2","content":"shell curl -X PATCH -H \"Content-Type: application/json\" -d ' { \"name\": \"my-tf-mnist-template\", \"author\": \"author-new\", \"description\": \"This is a template to run tf-mnist\", \"parameters\": [{ \"name\": \"learning_rate\", \"value\": 0.1, \"required\": true, \"description\": \"This is learning_rate of training.\" }, { \"name\": \"batch_size\", \"value\": 150, \"required\": true, \"description\": \"This is batch_size of training.\" }, { \"name\": \"experiment_name\", \"value\": \"tf-mnist1\", \"required\": true, \"description\": \"the name of experiment.\" } ], \"experimentSpec\": { \"meta\": { \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate={{learning_rate}} --batch_size={{batch_size}}\", \"name\": \"{{experiment_name}}\", \"envVars\": { \"ENV1\": \"ENV1\" }, \"framework\": \"TensorFlow\", \"namespace\": \"default\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" } } } ' http://127.0.0.1:32080/api/v1/template/my-tf-mnist-template Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ \"experimentTemplateId\":{ \"id\":2, \"serverTimestamp\":1626160071451 }, \"experimentTemplateSpec\":{ \"name\":\"my-tf-mnist-template\", \"author\":\"author-new\", \"description\":\"This is a template to run tf-mnist\", \"parameters\": [{ \"name\":\"learning_rate\", \"required\":\"true\", \"description\":\"This is learning_rate of training.\", \"value\":\"0.1\" }, { \"name\":\"batch_size\", \"required\":\"true\", \"description\":\"This is batch_size of training.\", \"value\":\"150\" }, { \"name\":\"experiment_name\", \"required\":\"true\", \"description\":\"the name of experiment.\", \"value\":\"tf-mnist1\" }, { \"name\":\"spec.Ps.replicas\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Ps.resourceMap.cpu\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Ps.resourceMap.memory\", \"required\":\"false\", \"description\":\"\", \"value\":\"1024M\" }, { \"name\":\"spec.Worker.replicas\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Worker.resourceMap.cpu\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Worker.resourceMap.memory\", \"required\":\"false\", \"description\":\"\", \"value\":\"1024M\" }], \"experimentSpec\":{ \"meta\":{ \"name\":\"{{experiment_name}}\", \"namespace\":\"default\", \"framework\":\"TensorFlow\", \"cmd\":\"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d{{learning_rate}} --batch_size\\u003d{{batch_size}}\", \"envVars\":{\"ENV1\":\"ENV1\"} }, \"environment\":{ \"name\":null, \"dockerImage\":null, \"kernelSpec\":null, \"description\":null, \"image\":\"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\":{ \"Ps\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"1024M\",\"cpu\":\"1\"} }, \"Worker\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"1024M\",\"cpu\":\"1\"} } }, \"code\":null } } }, \"attributes\":{} } Copy "},{"title":"Delete Experiment Template","type":1,"pageTitle":"Experiment Template REST API","url":"docs/userDocs/api/experiment-template#delete-experiment-template","content":"DELETE /api/v1/template{name} Copy "},{"title":"Parameters","type":1,"pageTitle":"Experiment Template REST API","url":"docs/userDocs/api/experiment-template#parameters-2","content":"Field Name\tType\tIn\tDescriptionname\tString\tpath\tExperiment template name. This is required. "},{"title":"Code Example","type":1,"pageTitle":"Experiment Template REST API","url":"docs/userDocs/api/experiment-template#code-example-3","content":"shell curl -X DELETE http://127.0.0.1:32080/api/v1/template/my-tf-mnist-template Copy reponse { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ \"experimentTemplateId\":{ \"id\":2, \"serverTimestamp\":1626160071451 }, \"experimentTemplateSpec\":{ \"name\":\"my-tf-mnist-template\", \"author\":\"author-new\", \"description\":\"This is a template to run tf-mnist\", \"parameters\": [{ \"name\":\"learning_rate\", \"required\":\"true\", \"description\":\"This is learning_rate of training.\", \"value\":\"0.1\" }, { \"name\":\"batch_size\", \"required\":\"true\", \"description\":\"This is batch_size of training.\", \"value\":\"150\" }, { \"name\":\"experiment_name\", \"required\":\"true\", \"description\":\"the name of experiment.\", \"value\":\"tf-mnist1\" }, { \"name\":\"spec.Ps.replicas\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Ps.resourceMap.cpu\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Ps.resourceMap.memory\", \"required\":\"false\", \"description\":\"\", \"value\":\"1024M\" }, { \"name\":\"spec.Worker.replicas\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Worker.resourceMap.cpu\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Worker.resourceMap.memory\", \"required\":\"false\", \"description\":\"\", \"value\":\"1024M\" }], \"experimentSpec\":{ \"meta\":{ \"name\":\"{{experiment_name}}\", \"namespace\":\"default\", \"framework\":\"TensorFlow\", \"cmd\":\"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d{{learning_rate}} --batch_size\\u003d{{batch_size}}\", \"envVars\":{\"ENV1\":\"ENV1\"} }, \"environment\":{ \"name\":null, \"dockerImage\":null, \"kernelSpec\":null, \"description\":null, \"image\":\"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\":{ \"Ps\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"1024M\",\"cpu\":\"1\"} }, \"Worker\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"1024M\",\"cpu\":\"1\"} } }, \"code\":null } } }, \"attributes\":{} } Copy "},{"title":"Use Template to Create a Experiment","type":1,"pageTitle":"Experiment Template REST API","url":"docs/userDocs/api/experiment-template#use-template-to-create-a-experiment","content":"POST /api/v1/experiment/{template_name} Copy "},{"title":"Parameters","type":1,"pageTitle":"Experiment Template REST API","url":"docs/userDocs/api/experiment-template#parameters-3","content":"Field Name\tType\tIn\tDescriptiontemplate_name\tString\tpath\tExperiment template name. name\tString\tbody\tExperiment template name. params\tMap<String, String>\tbody\tParameters of the experiment including experiment_name. "},{"title":"Code Example","type":1,"pageTitle":"Experiment Template REST API","url":"docs/userDocs/api/experiment-template#code-example-4","content":"shell curl -X POST -H \"Content-Type: application/json\" -d ' { \"name\": \"tf-mnist\", \"params\": { \"learning_rate\":\"0.01\", \"batch_size\":\"150\", \"experiment_name\":\"newexperiment1\" } } ' http://127.0.0.1:32080/api/v1/experiment/my-tf-mnist-template Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ \"experimentId\":\"experiment_1626160071451_0001\", \"name\":\"newexperiment1\", \"uid\":\"b895985c-411c-4e89-90e0-c60a2a8a4235\", \"status\":\"Accepted\", \"acceptedTime\":\"2021-07-13T16:21:31.000+08:00\", \"createdTime\":null, \"runningTime\":null, \"finishedTime\":null, \"spec\":{ \"meta\":{ \"name\":\"newexperiment1\", \"namespace\":\"default\", \"framework\":\"TensorFlow\", \"cmd\":\"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150\", \"envVars\":{\"ENV1\":\"ENV1\"} }, \"environment\":{ \"name\":null, \"dockerImage\":null, \"kernelSpec\":null, \"description\":null, \"image\":\"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\":{ \"Ps\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"1024M\",\"cpu\":\"1\"} }, \"Worker\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"1024M\",\"cpu\":\"1\"} } }, \"code\":null } }, \"attributes\":{} } Copy "},{"title":"MLflow UI","type":0,"sectionRef":"#","url":"docs/userDocs/others/mlflow","content":"","keywords":""},{"title":"Usage","type":1,"pageTitle":"MLflow UI","url":"docs/userDocs/others/mlflow#usage","content":"MLflow UI shows the tracking result of the experiments. When we use the log_param or log_metric in ModelClient API, we could view the result in MLflow UI. Below is the example of the usage of MLflow UI. "},{"title":"Example","type":1,"pageTitle":"MLflow UI","url":"docs/userDocs/others/mlflow#example","content":"Run the following code in the cluster from submarine import ModelsClient import random import time if __name__ == \"__main__\": modelClient = ModelsClient() with modelClient.start() as run: modelClient.log_param(\"learning_rate\", random.random()) for i in range(100): time.sleep(1) modelClient.log_metric(\"mse\", random.random() * 100, i) modelClient.log_metric(\"acc\", random.random(), i) Copy In the MLflow UI page, you can see the log_param and the log_metric result. You can also compare the training between different workers.  "},{"title":"Tensorboard","type":0,"sectionRef":"#","url":"docs/userDocs/others/tensorboard","content":"","keywords":""},{"title":"Write to LogDirs by the environment variable","type":1,"pageTitle":"Tensorboard","url":"docs/userDocs/others/tensorboard#write-to-logdirs-by-the-environment-variable","content":""},{"title":"Environment variable","type":1,"pageTitle":"Tensorboard","url":"docs/userDocs/others/tensorboard#environment-variable","content":"SUBMARINE_TENSORBOARD_LOG_DIR: Exist in every experiment container. You just need to direct your logs to $(SUBMARINE_TENSORBOARD_LOG_DIR) (NOTICE: it is () not {}), and you can inspect the process on the tensorboard webpage. "},{"title":"Example","type":1,"pageTitle":"Tensorboard","url":"docs/userDocs/others/tensorboard#example","content":"{ \"meta\": { \"name\": \"tensorflow-tensorboard-dist-mnist\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=$(SUBMARINE_TENSORBOARD_LOG_DIR) --learning_rate=0.01 --batch_size=20\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\": { \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=512M\" } } } Copy "},{"title":"Connect to the tensorboard webpage","type":1,"pageTitle":"Tensorboard","url":"docs/userDocs/others/tensorboard#connect-to-the-tensorboard-webpage","content":"Open the experiment page in the workbench, and Click the TensorBoard button.  Inspect the process on tensorboard page.  "},{"title":"Notebook REST API","type":0,"sectionRef":"#","url":"docs/userDocs/api/notebook","content":"","keywords":""},{"title":"Create a Notebook Instance","type":1,"pageTitle":"Notebook REST API","url":"docs/userDocs/api/notebook#create-a-notebook-instance","content":"POST /api/v1/notebook Copy "},{"title":"Parameters","type":1,"pageTitle":"Notebook REST API","url":"docs/userDocs/api/notebook#parameters","content":"NotebookSpec in request body. NotebookSpec# Field Name\tType\tDescriptionmeta\tNotebookMeta\tMeta data of the notebook. environment\tEnvironmentSpec\tEnvironment of the experiment template. spec\tNotebookPodSpec\tSpec of the notebook pods. NotebookMeta# Field Name\tType\tDescriptionname\tString\tNotebook name. namespace\tString\tNotebook namespace. ownerId\tString\tUser id. EnvironmentSpec# See more details in environment api. NotebookPodSpec# Field Name\tType\tDescriptionenvVars\tMap<String, String>\tEnvironmental variables. resources\tString\tResourecs of the pod. "},{"title":"Code Example","type":1,"pageTitle":"Notebook REST API","url":"docs/userDocs/api/notebook#code-example","content":"shell curl -X POST -H \"Content-Type: application/json\" -d ' { \"meta\": { \"name\": \"test-nb\", \"namespace\": \"default\", \"ownerId\": \"e9ca23d68d884d4ebb19d07889727dae\" }, \"environment\": { \"name\": \"notebook-env\" }, \"spec\": { \"envVars\": { \"TEST_ENV\": \"test\" }, \"resources\": \"cpu=1,memory=1.0Gi\" } } ' http://127.0.0.1:32080/api/v1/notebook Copy response: { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":\"Create a notebook instance\", \"result\":{ \"notebookId\":\"notebook_1626160071451_0001\", \"name\":\"test-nb\", \"uid\":\"a56713da-f2a3-40d0-ae2e-45fdc0bb15f5\", \"url\":\"/notebook/default/test-nb/lab\", \"status\":\"creating\", \"reason\":\"The notebook instance is creating\", \"createdTime\":\"2021-07-13T16:23:38.000+08:00\", \"deletedTime\":null, \"spec\":{ \"meta\":{ \"name\":\"test-nb\", \"namespace\":\"default\", \"ownerId\":\"e9ca23d68d884d4ebb19d07889727dae\" }, \"environment\":{ \"name\":\"notebook-env\", \"dockerImage\":\"apache/submarine:jupyter-notebook-0.7.0-SNAPSHOT\", \"kernelSpec\":{ \"name\":\"submarine_jupyter_py3\", \"channels\":[\"defaults\"], \"condaDependencies\":[], \"pipDependencies\":[] }, \"description\":null, \"image\":null }, \"spec\":{ \"envVars\":{\"TEST_ENV\":\"test\"}, \"resources\":\"cpu\\u003d1,memory\\u003d1.0Gi\" } } }, \"attributes\":{} } Copy "},{"title":"List notebook instances which belong to user","type":1,"pageTitle":"Notebook REST API","url":"docs/userDocs/api/notebook#list-notebook-instances-which-belong-to-user","content":"GET /api/v1/notebook Copy "},{"title":"Parameters","type":1,"pageTitle":"Notebook REST API","url":"docs/userDocs/api/notebook#parameters-1","content":"Field Name\tType\tIn\tDescriptionid\tString\tquery\tUser id. "},{"title":"Code Example","type":1,"pageTitle":"Notebook REST API","url":"docs/userDocs/api/notebook#code-example-1","content":"shell curl -X GET http://127.0.0.1:32080/api/v1/notebook?id=e9ca23d68d884d4ebb19d07889727dae Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":\"List all notebook instances\", \"result\": [{ \"notebookId\":\"notebook_1626160071451_0001\", \"name\":\"test-nb\", \"uid\":\"a56713da-f2a3-40d0-ae2e-45fdc0bb15f5\", \"url\":\"/notebook/default/test-nb/lab\", \"status\":\"waiting\", \"reason\":\"ContainerCreating\", \"createdTime\":\"2021-07-13T16:23:38.000+08:00\", \"deletedTime\":null, \"spec\":{ \"meta\":{ \"name\":\"test-nb\", \"namespace\":\"default\", \"ownerId\":\"e9ca23d68d884d4ebb19d07889727dae\" }, \"environment\":{ \"name\":\"notebook-env\", \"dockerImage\":\"apache/submarine:jupyter-notebook-0.7.0-SNAPSHOT\", \"kernelSpec\":{ \"name\":\"submarine_jupyter_py3\", \"channels\":[\"defaults\"], \"condaDependencies\":[], \"pipDependencies\":[] }, \"description\":null, \"image\":null }, \"spec\":{ \"envVars\":{\"TEST_ENV\":\"test\"}, \"resources\":\"cpu\\u003d1,memory\\u003d1.0Gi\" } } }], \"attributes\":{} } Copy "},{"title":"Get the notebook instance","type":1,"pageTitle":"Notebook REST API","url":"docs/userDocs/api/notebook#get-the-notebook-instance","content":"GET /api/v1/notebook/{id} Copy "},{"title":"Parameters","type":1,"pageTitle":"Notebook REST API","url":"docs/userDocs/api/notebook#parameters-2","content":"Field Name\tType\tIn\tDescriptionid\tString\tpath\tNotebook id. "},{"title":"Code Example","type":1,"pageTitle":"Notebook REST API","url":"docs/userDocs/api/notebook#code-example-2","content":"shell curl -X GET http://127.0.0.1:32080/api/v1/notebook/notebook_1626160071451_0001 Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":\"Get the notebook instance\", \"result\":{ \"notebookId\":\"notebook_1626160071451_0001\", \"name\":\"test-nb\", \"uid\":\"a56713da-f2a3-40d0-ae2e-45fdc0bb15f5\", \"url\":\"/notebook/default/test-nb/lab\", \"status\":\"waiting\", \"reason\":\"ContainerCreating\", \"createdTime\":\"2021-07-13T16:23:38.000+08:00\", \"deletedTime\":null, \"spec\":{ \"meta\":{ \"name\":\"test-nb\", \"namespace\":\"default\", \"ownerId\":\"e9ca23d68d884d4ebb19d07889727dae\" }, \"environment\":{ \"name\":\"notebook-env\", \"dockerImage\":\"apache/submarine:jupyter-notebook-0.7.0-SNAPSHOT\", \"kernelSpec\":{ \"name\":\"submarine_jupyter_py3\", \"channels\":[\"defaults\"], \"condaDependencies\":[], \"pipDependencies\":[] }, \"description\":null, \"image\":null }, \"spec\":{ \"envVars\":{\"TEST_ENV\":\"test\"}, \"resources\":\"cpu\\u003d1,memory\\u003d1.0Gi\" } } }, \"attributes\":{} } Copy "},{"title":"Delete the notebook instance","type":1,"pageTitle":"Notebook REST API","url":"docs/userDocs/api/notebook#delete-the-notebook-instance","content":"DELETE /api/v1/notebook/{id} Copy "},{"title":"Parameters","type":1,"pageTitle":"Notebook REST API","url":"docs/userDocs/api/notebook#parameters-3","content":"Field Name\tType\tIn\tDescriptionid\tString\tpath\tNotebook id. "},{"title":"Code Example","type":1,"pageTitle":"Notebook REST API","url":"docs/userDocs/api/notebook#code-example-3","content":"shell curl -X DELETE http://127.0.0.1:32080/api/v1/notebook/notebook_1626160071451_0001 Copy response: { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":\"Delete the notebook instance\", \"result\":{ \"notebookId\":\"notebook_1626160071451_0001\", \"name\":\"test-nb\", \"uid\":\"a56713da-f2a3-40d0-ae2e-45fdc0bb15f5\", \"url\":\"/notebook/default/test-nb/lab\", \"status\":\"terminating\", \"reason\":\"The notebook instance is terminating\", \"createdTime\":\"2021-07-13T16:23:38.000+08:00\", \"deletedTime\":null, \"spec\":{ \"meta\":{ \"name\":\"test-nb\", \"namespace\":\"default\", \"ownerId\":\"e9ca23d68d884d4ebb19d07889727dae\" }, \"environment\":{ \"name\":\"notebook-env\", \"dockerImage\":\"apache/submarine:jupyter-notebook-0.7.0-SNAPSHOT\", \"kernelSpec\":{ \"name\":\"submarine_jupyter_py3\", \"channels\":[\"defaults\"], \"condaDependencies\":[], \"pipDependencies\":[] }, \"description\":null, \"image\":null }, \"spec\":{ \"envVars\":{\"TEST_ENV\":\"test\"}, \"resources\":\"cpu\\u003d1,memory\\u003d1.0Gi\" } } }, \"attributes\":{} } Copy "},{"title":"Experiment Client","type":0,"sectionRef":"#","url":"docs/userDocs/submarine-sdk/experiment-client","content":"","keywords":""},{"title":"class ExperimentClient()","type":1,"pageTitle":"Experiment Client","url":"docs/userDocs/submarine-sdk/experiment-client#class-experimentclient","content":"Client of a submarine server that creates and manages experients and logs. "},{"title":"create_experiment(experiment_spec: json) -> dict","type":1,"pageTitle":"Experiment Client","url":"docs/userDocs/submarine-sdk/experiment-client#create_experimentexperiment_spec-json---dict","content":"Create an experiment. Parameters experiment_spec: Submarine experiment spec. More detailed information can be found at Experiment API. Returns: The detailed info about the submarine experiment. Example from submarine import * client = ExperimentClient() client.create_experiment({ \"meta\": { \"name\": \"tf-mnist-json\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" } } }) Copy "},{"title":"patch_experiment(id: str, experiment_spec: json) -> dict","type":1,"pageTitle":"Experiment Client","url":"docs/userDocs/submarine-sdk/experiment-client#patch_experimentid-str-experiment_spec-json---dict","content":"Patch an experiment. Parameters id: Submarine experiment id. experiment_spec: Submarine experiment spec. More detailed information can be found at Experiment API. Returns The detailed info about the submarine experiment. Example client.patch_experiment(\"experiment_1626160071451_0008\", { \"meta\": { \"name\": \"tf-mnist-json\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\": { \"Worker\": { \"replicas\": 2, \"resources\": \"cpu=1,memory=1024M\" } } }) Copy "},{"title":"get_experiment(id: str) -> dict","type":1,"pageTitle":"Experiment Client","url":"docs/userDocs/submarine-sdk/experiment-client#get_experimentid-str---dict","content":"Get the experiment's detailed info by id. Parameters id: Submarine experiment id. Returns The detailed info about the submarine experiment. Example experiment = client.get_experiment(\"experiment_1626160071451_0008\") Copy "},{"title":"list_experiments(status: Optional[str]=None) -> list[dict]","type":1,"pageTitle":"Experiment Client","url":"docs/userDocs/submarine-sdk/experiment-client#list_experimentsstatus-optionalstrnone---listdict","content":"List all experiment for the user. Parameters status: Accepted, Created, Running, Succeeded, Deleted. Returns List of submarine experiments. Example experiments = client.list_experiments() Copy "},{"title":"delete_experiment(id: str) -> dict","type":1,"pageTitle":"Experiment Client","url":"docs/userDocs/submarine-sdk/experiment-client#delete_experimentid-str---dict","content":"Delete the submarine experiment. Parameters id: Submarine experiment id. Returns The detailed info about the deleted submarine experiment. Example client.delete_experiment(\"experiment_1626160071451_0008\") Copy "},{"title":"get_log(id: str, onlyMaster: Optional[bool]=False) -> None","type":1,"pageTitle":"Experiment Client","url":"docs/userDocs/submarine-sdk/experiment-client#get_logid-str-onlymaster-optionalboolfalse---none","content":"Print training logs of all pod of the experiment. By default print all the logs of Pod. Parameters id: Submarine experiment id.onlyMaster: By default include pod log of \"master\" which might be Tensorflow PS/Chief or PyTorch master. Return The info of pod logs Example client.get_log(\"experiment_1626160071451_0009\") Copy "},{"title":"list_log(status: str) -> list[dict]","type":1,"pageTitle":"Experiment Client","url":"docs/userDocs/submarine-sdk/experiment-client#list_logstatus-str---listdict","content":"List experiment log. Parameters status: Accepted, Created, Running, Succeeded, Deleted. Returns List of submarine experiment logs. Example logs = client.list_log(\"Succeeded\") Copy "},{"title":"wait_for_finish(id: str, polling_interval: Optional[int]=10) -> dict","type":1,"pageTitle":"Experiment Client","url":"docs/userDocs/submarine-sdk/experiment-client#wait_for_finishid-str-polling_interval-optionalint10---dict","content":"Waits until the experiment is finished or failed. Parameters id: Submarine experiment id.polling_interval: How many seconds between two polls for the status of the experiment. Returns Submarine experiment logs. Example logs = client.wait_for_finish(\"experiment_1626160071451_0009\", 5) Copy "},{"title":"Model Client","type":0,"sectionRef":"#","url":"docs/userDocs/submarine-sdk/model-client","content":"","keywords":""},{"title":"class ModelClient()","type":1,"pageTitle":"Model Client","url":"docs/userDocs/submarine-sdk/model-client#class-modelclient","content":"The submarine ModelsClient provides a high-level API for logging metrics / parameters and managing models. "},{"title":"ModelsClient(tracking_uri=None, registry_uri=None)->ModelsClient","type":1,"pageTitle":"Model Client","url":"docs/userDocs/submarine-sdk/model-client#modelsclienttracking_urinone-registry_urinone-modelsclient","content":"Initialize a ModelsClient instance. Parameters tracking_uri: If run in Submarine, you do not need to specify it. Otherwise, specify the external tracking_uri.registry_uri: If run in Submarine, you do not need to specify it. Otherwise, specify the external registry_uri. Returns ModelsClient instance Example from submarine import ModelsClient modelClient = ModelsClient(tracking_uri=\"0.0.0.0:4000\", registry_uri=\"0.0.0.0:5000\") Copy "},{"title":"ModelsClient.start()->[Active Run]","type":1,"pageTitle":"Model Client","url":"docs/userDocs/submarine-sdk/model-client#modelsclientstart-active-run","content":"For details of Active Run Start a new Mlflow run, and direct the logging of the artifacts and metadata to the Run named \"worker_i\" under Experiment \"job_id\". If in distributed training, worker and job id would be parsed from environment variable. If in local traning, worker and job id will be generated. Returns Active Run "},{"title":"ModelsClient.log_param(key, value)->None","type":1,"pageTitle":"Model Client","url":"docs/userDocs/submarine-sdk/model-client#modelsclientlog_paramkey-value-none","content":"Log parameter under the current run. Parameters key – Parameter namevalue – Parameter value Example from submarine import ModelsClient modelClient = ModelsClient() with modelClient.start() as run: modelClient.log_param(\"learning_rate\", 0.01) Copy "},{"title":"ModelsClient.log_params(params)->None","type":1,"pageTitle":"Model Client","url":"docs/userDocs/submarine-sdk/model-client#modelsclientlog_paramsparams-none","content":"Log a batch of params for the current run. Parameters params – Dictionary of param_name: String -> value Example from submarine import ModelsClient params = {\"learning_rate\": 0.01, \"n_estimators\": 10} modelClient = ModelsClient() with modelClient.start() as run: modelClient.log_params(params) Copy "},{"title":"ModelsClient.log_metric(self, key, value, step=None)->None","type":1,"pageTitle":"Model Client","url":"docs/userDocs/submarine-sdk/model-client#modelsclientlog_metricself-key-value-stepnone-none","content":"Log a metric under the current run. Parameters key – Metric name (string).value – Metric value (float).step – Metric step (int). Defaults to zero if unspecified. Example from submarine import ModelsClient modelClient = ModelsClient() with modelClient.start() as run: modelClient.log_metric(\"mse\", 2500.00) Copy "},{"title":"ModelsClient.log_metrics(self, metrics, step=None)->None","type":1,"pageTitle":"Model Client","url":"docs/userDocs/submarine-sdk/model-client#modelsclientlog_metricsself-metrics-stepnone-none","content":"Log multiple metrics for the current run. Parameters metrics – Dictionary of metric_name: String -> value: Float.step – A single integer step at which to log the specified Metrics. If unspecified, each metric is logged at step zero. Example from submarine import ModelsClient metrics = {\"mse\": 2500.00, \"rmse\": 50.00} modelClient = ModelsClient() with modelClient.start() as run: modelClient.log_metrics(metrics) Copy "},{"title":"(Beta) ModelsClient.save_model(self, model_type, model, artifact_path, registered_model_name=None)","type":1,"pageTitle":"Model Client","url":"docs/userDocs/submarine-sdk/model-client#beta-modelsclientsave_modelself-model_type-model-artifact_path-registered_model_namenone","content":"Save model to model registry. "},{"title":"(Beta) ModelsClient.load_model(self, name, version)->mlflow.pyfunc.PyFuncModel","type":1,"pageTitle":"Model Client","url":"docs/userDocs/submarine-sdk/model-client#beta-modelsclientload_modelself-name-version-mlflowpyfuncpyfuncmodel","content":"Load a model from model registry. "},{"title":"(Beta) ModelsClient.update_model(self, name, new_name)->None","type":1,"pageTitle":"Model Client","url":"docs/userDocs/submarine-sdk/model-client#beta-modelsclientupdate_modelself-name-new_name-none","content":"Update a model by new name. "},{"title":"(Beta) ModelsClient.delete_model(self, name, version)->None","type":1,"pageTitle":"Model Client","url":"docs/userDocs/submarine-sdk/model-client#beta-modelsclientdelete_modelself-name-version-none","content":"Delete a model in model registry. "},{"title":"Submarine-SDK","type":0,"sectionRef":"#","url":"docs/userDocs/submarine-sdk/README","content":"","keywords":""},{"title":"Summary","type":1,"pageTitle":"Submarine-SDK","url":"docs/userDocs/submarine-sdk/README#summary","content":"Support Python, Scala, R language for algorithm development Support tracking/metrics APIs which allows developers add tracking/metrics and view tracking/metrics from Submarine Workbench UI. "},{"title":"Python SDK Development","type":0,"sectionRef":"#","url":"docs/userDocs/submarine-sdk/pysubmarine/development","content":"","keywords":""},{"title":"Prerequisites","type":1,"pageTitle":"Python SDK Development","url":"docs/userDocs/submarine-sdk/pysubmarine/development#prerequisites","content":"This is required for developing & testing changes, we recommend installing pysubmarine in its own conda environment by running the following conda create --name submarine-dev python=3.6 conda activate submarine-dev # Install auto-format and lints (lint-requirements.txt is in ./dev-support/style-check/python) pip install -r lint-requirements.txt # Install mypy (mypy-requirements.txt is in ./dev-support/style-check/python) pip install -r mypy-requirements.txt # test-requirements.txt is in ./submarine-sdk/pysubmarine/github-actions pip install -r test-requirements.txt # Installs pysubmarine from current checkout pip install ./submarine-sdk/pysubmarine Copy "},{"title":"PySubmarine Docker","type":1,"pageTitle":"Python SDK Development","url":"docs/userDocs/submarine-sdk/pysubmarine/development#pysubmarine-docker","content":"We also use docker to provide build environments for CI, development, generate python sdk from swagger. ./run-pysubmarine-ci.sh Copy The script does the following things: Start an interactive bash sessionMount submarine directory to /workspace and set it as homeSwitch user to be the same user that calls the run-pysubmarine-ci.sh "},{"title":"Coding Style","type":1,"pageTitle":"Python SDK Development","url":"docs/userDocs/submarine-sdk/pysubmarine/development#coding-style","content":"Use isort to sort the Python imports and black to format Python codeBoth style is configured in pyproject.tomlTo autoformat code ./dev-support/style-check/python/auto-format.sh Copy Use flake8 to verify the linter, its' configure is in .flake8.Also, we are using mypy to check the static type in submarine-sdk/pysubmarine/submarine.Verify linter pass before submitting a pull request by running: ./dev-support/style-check/python/lint.sh Copy If you encouter a unexpected format, use the following method # fmt: off \"Unexpected format, formated by yourself\" # fmt: on Copy "},{"title":"Unit Testing","type":1,"pageTitle":"Python SDK Development","url":"docs/userDocs/submarine-sdk/pysubmarine/development#unit-testing","content":"We are using pytest to develop our unit test suite. After building the project (see below) you can run its unit tests like so: cd submarine-sdk/pysubmarine Copy Run unit test pytest --cov=submarine -vs -m \"not e2e\" Copy Run integration test pytest --cov=submarine -vs -m \"e2e\" Copy Before run this command in local, you should make sure the submarine server is running. "},{"title":"Generate python SDK from swagger","type":1,"pageTitle":"Python SDK Development","url":"docs/userDocs/submarine-sdk/pysubmarine/development#generate-python-sdk-from-swagger","content":"We use open-api generatorto generate pysubmarine client API that used to communicate with submarine server. If change below files, please run ./dev-support/pysubmarine/gen-sdk.shto generate latest version of SDK. Bootstrap.javaExperimentRestApi.java "},{"title":"Model Management Model Development","type":1,"pageTitle":"Python SDK Development","url":"docs/userDocs/submarine-sdk/pysubmarine/development#model-management-model-development","content":"For local development, we can access cluster's service easily thanks to telepresence. To elaborate, we can develop the sdk in local but can reach out to mlflow server by proxy. Install telepresence follow the instruction.Start proxy pod telepresence --new-deployment submarine-dev Copy You can develop as if in the cluster. "},{"title":"Upload package to PyPi","type":1,"pageTitle":"Python SDK Development","url":"docs/userDocs/submarine-sdk/pysubmarine/development#upload-package-to-pypi","content":"For Apache Submarine committer and PMCs to do a new release. Change the version from 0.x.x-SNAPSHOT to 0.x.x in setup.pyInstall Python packages cd submarine-sdk/pysubmarine pip install -r github-actions/pypi-requirements.txt Copy Compiling Your Package It will create build, dist, and project.egg.infoin your local directory python setup.py bdist_wheel Copy Upload python package to TestPyPI for testing python -m twine upload --repository testpypi dist/* Copy Upload python package to PyPi python -m twine upload --repository-url https://upload.pypi.org/legacy/ dist/* Copy "},{"title":"Building Submarine Spark Security Plugin","type":0,"sectionRef":"#","url":"docs/userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin","content":"Submarine Spark Security Plugin is built using Apache Maven. To build it, cd to the root direct of submarine project and run: mvn clean package -Dmaven.javadoc.skip=true -DskipTests -pl :submarine-spark-security Copy By default, Submarine Spark Security Plugin is built against Apache Spark 2.3.x and Apache Ranger 1.1.0, which may be incompatible with other Apache Spark or Apache Ranger releases. Currently, available profiles are: Spark: -Pspark-2.3, -Pspark-2.4, -Pspark-3.0 Ranger: -Pranger-1.2, -Pranger-2.0","keywords":""},{"title":"Tracking","type":0,"sectionRef":"#","url":"docs/userDocs/submarine-sdk/tracking","content":"","keywords":""},{"title":"Functions","type":1,"pageTitle":"Tracking","url":"docs/userDocs/submarine-sdk/tracking#functions","content":""},{"title":"submarine.get_tracking_uri() -> str","type":1,"pageTitle":"Tracking","url":"docs/userDocs/submarine-sdk/tracking#submarineget_tracking_uri---str","content":"Get the tracking URI. If none has been specified, check the environmental variables. If uri is still none, return the default submarine jdbc url. Returns The tracking URI. "},{"title":"submarine.set_tracking_uri(uri: str) -> None","type":1,"pageTitle":"Tracking","url":"docs/userDocs/submarine-sdk/tracking#submarineset_tracking_uriuri-str---none","content":"set the tracking URI. You can also set the SUBMARINE_TRACKING_URI environment variable to have Submarine find a URI from there. The URI should be database connection string. Parameters uri - Submarine record data to Mysql server. The database URL is expected in the format <dialect>+<driver>://<username>:<password>@<host>:<port>/<database>. By default it's mysql+pymysql://submarine:password@submarine-database:3306/submarine. More detail : SQLAlchemy docs "},{"title":"submarine.log_param(key: str, value: str) -> None","type":1,"pageTitle":"Tracking","url":"docs/userDocs/submarine-sdk/tracking#submarinelog_paramkey-str-value-str---none","content":"log a single key-value parameter. The key and value are both strings. Parameters key - Parameter name.value - Parameter value. "},{"title":"submarine.log_metric(key: str, value: float, step=0) -> None","type":1,"pageTitle":"Tracking","url":"docs/userDocs/submarine-sdk/tracking#submarinelog_metrickey-str-value-float-step0---none","content":"log a single key-value metric. The value must always be a number. Parameters key - Metric name.value - Metric value.step - A single integer step at which to log the specified Metrics, by default it's 0. "},{"title":"Submarine Spark Security Plugin","type":0,"sectionRef":"#","url":"docs/userDocs/submarine-security/spark-security/README","content":"","keywords":""},{"title":"Build","type":1,"pageTitle":"Submarine Spark Security Plugin","url":"docs/userDocs/submarine-security/spark-security/README#build","content":"Please refer to the online documentation - Building submarine spark security plguin "},{"title":"Quick Start","type":1,"pageTitle":"Submarine Spark Security Plugin","url":"docs/userDocs/submarine-security/spark-security/README#quick-start","content":"Three steps to integrate Apache Spark and Apache Ranger. "},{"title":"Installation","type":1,"pageTitle":"Submarine Spark Security Plugin","url":"docs/userDocs/submarine-security/spark-security/README#installation","content":"Place the submarine-spark-security-<version>.jar into $SPARK_HOME/jars. "},{"title":"Configurations","type":1,"pageTitle":"Submarine Spark Security Plugin","url":"docs/userDocs/submarine-security/spark-security/README#configurations","content":"Settings for Apache Ranger# Create ranger-spark-security.xml in $SPARK_HOME/conf and add the following configurations for pointing to the right Apache Ranger admin server. <configuration> <property> <name>ranger.plugin.spark.policy.rest.url</name> <value>ranger admin address like http://ranger-admin.org:6080</value> </property> <property> <name>ranger.plugin.spark.service.name</name> <value>a ranger hive service name</value> </property> <property> <name>ranger.plugin.spark.policy.cache.dir</name> <value>./a ranger hive service name/policycache</value> </property> <property> <name>ranger.plugin.spark.policy.pollIntervalMs</name> <value>5000</value> </property> <property> <name>ranger.plugin.spark.policy.source.impl</name> <value>org.apache.ranger.admin.client.RangerAdminRESTClient</value> </property> </configuration> Copy Create ranger-spark-audit.xml in $SPARK_HOME/conf and add the following configurations to enable/disable auditing. <configuration> <property> <name>xasecure.audit.is.enabled</name> <value>true</value> </property> <property> <name>xasecure.audit.destination.db</name> <value>false</value> </property> <property> <name>xasecure.audit.destination.db.jdbc.driver</name> <value>com.mysql.jdbc.Driver</value> </property> <property> <name>xasecure.audit.destination.db.jdbc.url</name> <value>jdbc:mysql://10.171.161.78/ranger</value> </property> <property> <name>xasecure.audit.destination.db.password</name> <value>rangeradmin</value> </property> <property> <name>xasecure.audit.destination.db.user</name> <value>rangeradmin</value> </property> </configuration> Copy Settings for Apache Spark# You can configure spark.sql.extensions with the *Extension we provided. For example, spark.sql.extensions=org.apache.submarine.spark.security.api.RangerSparkAuthzExtension Currently, you can set the following options to spark.sql.extensions to choose authorization w/ or w/o extra functions. option\tauthorization\trow filtering\tdata maskingorg.apache.submarine.spark.security.api.RangerSparkAuthzExtension\t√\t×\t× org.apache.submarine.spark.security.api.RangerSparkSQLExtension\t√\t√\t√ "},{"title":"Write Dockerfiles for Submarine","type":0,"sectionRef":"#","url":"docs/userDocs/yarn/Dockerfiles","content":"How to write Dockerfile for Submarine TensorFlow jobs How to write Dockerfile for Submarine PyTorch jobs How to write Dockerfile for Submarine MXNet jobs","keywords":""},{"title":"Test and Troubleshooting","type":0,"sectionRef":"#","url":"docs/userDocs/yarn/TestAndTroubleshooting","content":"","keywords":""},{"title":"Test with a tensorflow job","type":1,"pageTitle":"Test and Troubleshooting","url":"docs/userDocs/yarn/TestAndTroubleshooting#test-with-a-tensorflow-job","content":"Distributed-shell + GPU + cgroup  ... \\ job run \\ --env DOCKER_JAVA_HOME=/opt/java \\ --env DOCKER_HADOOP_HDFS_HOME=/hadoop-current --name distributed-tf-gpu \\ --env YARN_CONTAINER_RUNTIME_DOCKER_CONTAINER_NETWORK=calico-network \\ --worker_docker_image tf-1.13.1-gpu:0.0.1 \\ --ps_docker_image tf-1.13.1-cpu:0.0.1 \\ --input_path hdfs://${dfs_name_service}/tmp/cifar-10-data \\ --checkpoint_path hdfs://${dfs_name_service}/user/hadoop/tf-distributed-checkpoint \\ --num_ps 0 \\ --ps_resources memory=4G,vcores=2,gpu=0 \\ --ps_launch_cmd \"python /test/cifar10_estimator/cifar10_main.py --data-dir=hdfs://${dfs_name_service}/tmp/cifar-10-data --job-dir=hdfs://${dfs_name_service}/tmp/cifar-10-jobdir --num-gpus=0\" \\ --worker_resources memory=4G,vcores=2,gpu=1 --verbose \\ --num_workers 1 \\ --worker_launch_cmd \"python /test/cifar10_estimator/cifar10_main.py --data-dir=hdfs://${dfs_name_service}/tmp/cifar-10-data --job-dir=hdfs://${dfs_name_service}/tmp/cifar-10-jobdir --train-steps=500 --eval-batch-size=16 --train-batch-size=16 --sync --num-gpus=1\" Copy "},{"title":"Issues:","type":1,"pageTitle":"Test and Troubleshooting","url":"docs/userDocs/yarn/TestAndTroubleshooting#issues","content":""},{"title":"Issue 1: Fail to start nodemanager after system reboot","type":1,"pageTitle":"Test and Troubleshooting","url":"docs/userDocs/yarn/TestAndTroubleshooting#issue-1-fail-to-start-nodemanager-after-system-reboot","content":"2018-09-20 18:54:39,785 ERROR org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor: Failed to bootstrap configured resource subsystems! org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.ResourceHandlerException: Unexpected: Cannot create yarn cgroup Subsystem:cpu Mount points:/proc/mounts User:yarn Path:/sys/fs/cgroup/cpu,cpuacct/hadoop-yarn at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsHandlerImpl.initializePreMountedCGroupController(CGroupsHandlerImpl.java:425) at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsHandlerImpl.initializeCGroupController(CGroupsHandlerImpl.java:377) at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsCpuResourceHandlerImpl.bootstrap(CGroupsCpuResourceHandlerImpl.java:98) at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsCpuResourceHandlerImpl.bootstrap(CGroupsCpuResourceHandlerImpl.java:87) at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.ResourceHandlerChain.bootstrap(ResourceHandlerChain.java:58) at org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor.init(LinuxContainerExecutor.java:320) at org.apache.hadoop.yarn.server.nodemanager.NodeManager.serviceInit(NodeManager.java:389) at org.apache.hadoop.service.AbstractService.init(AbstractService.java:164) at org.apache.hadoop.yarn.server.nodemanager.NodeManager.initAndStartNodeManager(NodeManager.java:929) at org.apache.hadoop.yarn.server.nodemanager.NodeManager.main(NodeManager.java:997) 2018-09-20 18:54:39,789 INFO org.apache.hadoop.service.AbstractService: Service NodeManager failed in state INITED Copy Solution: Grant user yarn the access to /sys/fs/cgroup/cpu,cpuacct, which is the subfolder of cgroup mount destination. chown :yarn -R /sys/fs/cgroup/cpu,cpuacct chmod g+rwx -R /sys/fs/cgroup/cpu,cpuacct Copy If GPUs are used,the access to cgroup devices folder is neede as well chown :yarn -R /sys/fs/cgroup/devices chmod g+rwx -R /sys/fs/cgroup/devices Copy "},{"title":"Issue 2: container-executor permission denied","type":1,"pageTitle":"Test and Troubleshooting","url":"docs/userDocs/yarn/TestAndTroubleshooting#issue-2-container-executor-permission-denied","content":"2018-09-21 09:36:26,102 WARN org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.privileged.PrivilegedOperationExecutor: IOException executing command: java.io.IOException: Cannot run program \"/etc/yarn/sbin/Linux-amd64-64/container-executor\": error=13, Permission denied at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048) at org.apache.hadoop.util.Shell.runCommand(Shell.java:938) at org.apache.hadoop.util.Shell.run(Shell.java:901) at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:1213) Copy Solution: The permission of /etc/yarn/sbin/Linux-amd64-64/container-executor should be 6050 "},{"title":"Issue 3:How to get docker service log","type":1,"pageTitle":"Test and Troubleshooting","url":"docs/userDocs/yarn/TestAndTroubleshooting#issue-3:how-to-get-docker-service-log","content":"Solution: we can get docker log with the following command journalctl -u docker Copy "},{"title":"Issue 4:docker can't remove containers with errors like device or resource busy","type":1,"pageTitle":"Test and Troubleshooting","url":"docs/userDocs/yarn/TestAndTroubleshooting#issue-4:docker-cant-remove-containers-with-errors-like-device-or-resource-busy","content":"$ docker rm 0bfafa146431 Error response from daemon: Unable to remove filesystem for 0bfafa146431771f6024dcb9775ef47f170edb2f1852f71916ba44209ca6120a: remove /app/docker/containers/0bfafa146431771f6024dcb9775ef47f170edb2f152f71916ba44209ca6120a/shm: device or resource busy Copy Solution: to find which process leads to a device or resource busy, we can add a shell script, named find-busy-mnt.sh #!/usr/bin/env bash # A simple script to get information about mount points and pids and their # mount namespaces. if [ $# -ne 1 ];then echo \"Usage: $0 <devicemapper-device-id>\" exit 1 fi ID=$1 MOUNTS=`find /proc/*/mounts | xargs grep $ID 2>/dev/null` [ -z \"$MOUNTS\" ] && echo \"No pids found\" && exit 0 printf \"PID\\tNAME\\t\\tMNTNS\\n\" echo \"$MOUNTS\" | while read LINE; do PID=`echo $LINE | cut -d \":\" -f1 | cut -d \"/\" -f3` # Ignore self and thread-self if [ \"$PID\" == \"self\" ] || [ \"$PID\" == \"thread-self\" ]; then continue fi NAME=`ps -q $PID -o comm=` MNTNS=`readlink /proc/$PID/ns/mnt` printf \"%s\\t%s\\t\\t%s\\n\" \"$PID\" \"$NAME\" \"$MNTNS\" done Copy Kill the process by pid, which is found by the script $ chmod +x find-busy-mnt.sh ./find-busy-mnt.sh 0bfafa146431771f6024dcb9775ef47f170edb2f152f71916ba44209ca6120a # PID NAME MNTNS # 5007 ntpd mnt:[4026533598] $ kill -9 5007 Copy "},{"title":"Issue 5:Yarn failed to start containers","type":1,"pageTitle":"Test and Troubleshooting","url":"docs/userDocs/yarn/TestAndTroubleshooting#issue-5:yarn-failed-to-start-containers","content":"if the number of GPUs required by applications is larger than the number of GPUs in the cluster, there would be some containers can't be created. "},{"title":"Docker Images for MXNet","type":0,"sectionRef":"#","url":"docs/userDocs/yarn/WriteDockerfileMX","content":"","keywords":""},{"title":"How to create docker images to run MXNet on YARN","type":1,"pageTitle":"Docker Images for MXNet","url":"docs/userDocs/yarn/WriteDockerfileMX#how-to-create-docker-images-to-run-mxnet-on-yarn","content":"Dockerfile to run MXNet on YARN needs two parts: Base libraries which MXNet depends on 1) OS base image, for example ubuntu:18.04 2) MXNet dependent libraries and packages. \\ For example python, scipy. For GPU support, you also need cuda, cudnn, etc. 3) MXNet package. Libraries to access HDFS 1) JDK 2) Hadoop Here's an example of a base image (without GPU support) to install MXNet: FROM ubuntu:18.04 # Install some development tools and packages # MXNet 1.6 is going to be the last MXNet release to support Python2 RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y tzdata git \\ wget zip python3 python3-pip python3-distutils libgomp1 libopenblas-dev libopencv-dev # Install latest MXNet using pip (without GPU support) RUN pip3 install mxnet RUN echo \"Install python related packages\" && \\ pip3 install --user graphviz==0.8.4 ipykernel jupyter matplotlib numpy pandas scipy sklearn && \\ python3 -m ipykernel.kernelspec Copy On top of above image, add files, install packages to access HDFS ENV JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 RUN apt-get update && apt-get install -y openjdk-8-jdk wget # Install hadoop ENV HADOOP_VERSION=\"3.1.2\" RUN wget https://archive.apache.org/dist/hadoop/common/hadoop-${HADOOP_VERSION}/hadoop-${HADOOP_VERSION}.tar.gz # If you are in mainland China, you can use the following command. # RUN wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-${HADOOP_VERSION}/hadoop-${HADOOP_VERSION}.tar.gz RUN tar zxf hadoop-${HADOOP_VERSION}.tar.gz RUN ln -s hadoop-${HADOOP_VERSION} hadoop-current RUN rm hadoop-${HADOOP_VERSION}.tar.gz Copy Build and push to your own docker registry: Use docker build ... and docker push ... to finish this step. "},{"title":"Use examples to build your own MXNet docker images","type":1,"pageTitle":"Docker Images for MXNet","url":"docs/userDocs/yarn/WriteDockerfileMX#use-examples-to-build-your-own-mxnet-docker-images","content":"We provided some example Dockerfiles for you to build your own MXNet docker images. For latest MXNet docker/mxnet/base/ubuntu-18.04/Dockerfile.cpu.mxnet_latest: Latest MXNet that supports CPUdocker/mxnet/base/ubuntu-18.04/Dockerfile.gpu.mxnet_latest: Latest MXNet that supports GPU, which is prebuilt to CUDA10. Build Docker images# "},{"title":"Manually build Docker image:","type":1,"pageTitle":"Docker Images for MXNet","url":"docs/userDocs/yarn/WriteDockerfileMX#manually-build-docker-image","content":"Under docker/mxnet directory, run build-all.sh to build all Docker images. This command will build the following Docker images: mxnet-latest-cpu-base:0.0.1 for base Docker image which includes Hadoop, MXNetmxnet-latest-gpu-base:0.0.1 for base Docker image which includes Hadoop, MXNet, GPU base libraries. "},{"title":"Docker Images for PyTorch","type":0,"sectionRef":"#","url":"docs/userDocs/yarn/WriteDockerfilePT","content":"","keywords":""},{"title":"How to create docker images to run PyTorch on YARN","type":1,"pageTitle":"Docker Images for PyTorch","url":"docs/userDocs/yarn/WriteDockerfilePT#how-to-create-docker-images-to-run-pytorch-on-yarn","content":"Dockerfile to run PyTorch on YARN needs two parts: Base libraries which PyTorch depends on 1) OS base image, for example ubuntu:18.04 2) PyTorch dependent libraries and packages. For example python, scipy. For GPU support, you also need cuda, cudnn, etc. 3) PyTorch package. Libraries to access HDFS 1) JDK 2) Hadoop Here's an example of a base image (with GPU support) to install PyTorch: FROM nvidia/cuda:10.0-cudnn7-devel-ubuntu18.04 ARG PYTHON_VERSION=3.6 RUN apt-get update && apt-get install -y --no-install-recommends \\ build-essential \\ cmake \\ git \\ curl \\ vim \\ ca-certificates \\ libjpeg-dev \\ libpng-dev \\ wget &&\\ rm -rf /var/lib/apt/lists/* RUN curl -o ~/miniconda.sh -O https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh && \\ chmod +x ~/miniconda.sh && \\ ~/miniconda.sh -b -p /opt/conda && \\ rm ~/miniconda.sh && \\ /opt/conda/bin/conda install -y python=$PYTHON_VERSION numpy pyyaml scipy ipython mkl mkl-include cython typing && \\ /opt/conda/bin/conda install -y -c pytorch magma-cuda100 && \\ /opt/conda/bin/conda clean -ya ENV PATH /opt/conda/bin:$PATH RUN pip install ninja # This must be done before pip so that requirements.txt is available WORKDIR /opt/pytorch RUN git clone https://github.com/pytorch/pytorch.git WORKDIR pytorch RUN git submodule update --init RUN TORCH_CUDA_ARCH_LIST=\"3.5 5.2 6.0 6.1 7.0+PTX\" TORCH_NVCC_FLAGS=\"-Xfatbin -compress-all\" \\ CMAKE_PREFIX_PATH=\"$(dirname $(which conda))/../\" \\ pip install -v . WORKDIR /opt/pytorch RUN git clone https://github.com/pytorch/vision.git && cd vision && pip install -v . Copy On top of above image, add files, install packages to access HDFS RUN apt-get update && apt-get install -y openjdk-8-jdk wget # Install hadoop ENV HADOOP_VERSION=\"2.9.2\" RUN wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-${HADOOP_VERSION}/hadoop-${HADOOP_VERSION}.tar.gz RUN tar zxf hadoop-${HADOOP_VERSION}.tar.gz RUN ln -s hadoop-${HADOOP_VERSION} hadoop-current RUN rm hadoop-${HADOOP_VERSION}.tar.gz Copy Build and push to your own docker registry: Use docker build ... and docker push ... to finish this step. "},{"title":"Use examples to build your own PyTorch docker images","type":1,"pageTitle":"Docker Images for PyTorch","url":"docs/userDocs/yarn/WriteDockerfilePT#use-examples-to-build-your-own-pytorch-docker-images","content":"We provided some example Dockerfiles for you to build your own PyTorch docker images. For latest PyTorch docker/pytorch/base/ubuntu-18.04/Dockerfile.gpu.pytorch_latest: Latest Pytorch that supports GPU, which is prebuilt to CUDA10.docker/pytorch/with-cifar10-models/ubuntu-18.04/Dockerfile.gpu.pytorch_latest: Latest Pytorch that GPU, which is prebuilt to CUDA10, with models. "},{"title":"Build Docker images","type":1,"pageTitle":"Docker Images for PyTorch","url":"docs/userDocs/yarn/WriteDockerfilePT#build-docker-images","content":""},{"title":"Manually build Docker image:","type":1,"pageTitle":"Docker Images for PyTorch","url":"docs/userDocs/yarn/WriteDockerfilePT#manually-build-docker-image","content":"Under docker/pytorch directory, run build-all.sh to build all Docker images. This command will build the following Docker images: pytorch-latest-gpu-base:0.0.1 for base Docker image which includes Hadoop, PyTorch, GPU base libraries.pytorch-latest-gpu:0.0.1 which includes cifar10 model as well "},{"title":"Use prebuilt images","type":1,"pageTitle":"Docker Images for PyTorch","url":"docs/userDocs/yarn/WriteDockerfilePT#use-prebuilt-images","content":"(No liability) You can also use prebuilt images for convenience: hadoopsubmarine/pytorch-latest-gpu-base:0.0.1 "},{"title":"README","type":0,"sectionRef":"#","url":"docs/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README","content":"","keywords":""},{"title":"Prerequisite","type":1,"pageTitle":"README","url":"docs/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README#prerequisite","content":"Install TensorFlow version 1.2.1 or later. Download the CIFAR-10 dataset and generate TFRecord files using the provided script. The script and associated command below will download the CIFAR-10 dataset and then generate a TFRecord for the training, validation, and evaluation datasets. python generate_cifar10_tfrecords.py --data-dir=${PWD}/cifar-10-data Copy After running the command above, you should see the following files in the --data-dir (ls -R cifar-10-data): train.tfrecordsvalidation.tfrecordseval.tfrecords "},{"title":"Training on a single machine with GPUs or CPU","type":1,"pageTitle":"README","url":"docs/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README#training-on-a-single-machine-with-gpus-or-cpu","content":"Run the training on CPU only. After training, it runs the evaluation. python cifar10_main.py --data-dir=${PWD}/cifar-10-data \\ --job-dir=/tmp/cifar10 \\ --num-gpus=0 \\ --train-steps=1000 Copy Run the model on 2 GPUs using CPU as parameter server. After training, it runs the evaluation. python cifar10_main.py --data-dir=${PWD}/cifar-10-data \\ --job-dir=/tmp/cifar10 \\ --num-gpus=2 \\ --train-steps=1000 Copy Run the model on 2 GPUs using GPU as parameter server. It will run an experiment, which for local setting basically means it will run stop training a couple of times to perform evaluation. python cifar10_main.py --data-dir=${PWD}/cifar-10-data \\ --job-dir=/tmp/cifar10 \\ --variable-strategy GPU \\ --num-gpus=2 \\ Copy There are more command line flags to play with; runpython cifar10_main.py --help for details. "},{"title":"Run distributed training","type":1,"pageTitle":"README","url":"docs/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README#run-distributed-training","content":""},{"title":"(Optional) Running on Google Cloud Machine Learning Engine","type":1,"pageTitle":"README","url":"docs/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README#optional-running-on-google-cloud-machine-learning-engine","content":"This example can be run on Google Cloud Machine Learning Engine (ML Engine), which will configure the environment and take care of running workers, parameters servers, and masters in a fault tolerant way. To install the command line tool, and set up a project and billing, see the quickstart here. You'll also need a Google Cloud Storage bucket for the data. If you followed the instructions above, you can just run: MY_BUCKET=gs://<my-bucket-name> gsutil cp -r ${PWD}/cifar-10-data $MY_BUCKET/ Copy Then run the following command from the tutorials/image directory of this repository (the parent directory of this README): gcloud ml-engine jobs submit training cifarmultigpu \\ --runtime-version 1.2 \\ --job-dir=$MY_BUCKET/model_dirs/cifarmultigpu \\ --config cifar10_estimator/cmle_config.yaml \\ --package-path cifar10_estimator/ \\ --module-name cifar10_estimator.cifar10_main \\ -- \\ --data-dir=$MY_BUCKET/cifar-10-data \\ --num-gpus=4 \\ --train-steps=1000 Copy "},{"title":"Set TF_CONFIG","type":1,"pageTitle":"README","url":"docs/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README#set-tf_config","content":"Considering that you already have multiple hosts configured, all you need is aTF_CONFIG environment variable on each host. You can set up the hosts manually or check tensorflow/ecosystem for instructions about how to set up a Cluster. The TF_CONFIG will be used by the RunConfig to know the existing hosts and their task: master, ps or worker. Here's an example of TF_CONFIG. cluster = {'master': ['master-ip:8000'], 'ps': ['ps-ip:8000'], 'worker': ['worker-ip:8000']} TF_CONFIG = json.dumps( {'cluster': cluster, 'task': {'type': master, 'index': 0}, 'model_dir': 'gs://<bucket_path>/<dir_path>', 'environment': 'cloud' }) Copy Cluster A cluster spec, which is basically a dictionary that describes all of the tasks in the cluster. More about it here. In this cluster spec we are defining a cluster with 1 master, 1 ps and 1 worker. ps: saves the parameters among all workers. All workers can read/write/update the parameters for model via ps. As some models are extremely large the parameters are shared among the ps (each ps stores a subset). worker: does the training. master: basically a special worker, it does training, but also restores and saves checkpoints and do evaluation. Task The Task defines what is the role of the current node, for this example the node is the master on index 0 on the cluster spec, the task will be different for each node. An example of the TF_CONFIG for a worker would be: cluster = {'master': ['master-ip:8000'], 'ps': ['ps-ip:8000'], 'worker': ['worker-ip:8000']} TF_CONFIG = json.dumps( {'cluster': cluster, 'task': {'type': worker, 'index': 0}, 'model_dir': 'gs://<bucket_path>/<dir_path>', 'environment': 'cloud' }) Copy Model_dir This is the path where the master will save the checkpoints, graph and TensorBoard files. For a multi host environment you may want to use a Distributed File System, Google Storage and DFS are supported. Environment By the default environment is local, for a distributed setting we need to change it to cloud. "},{"title":"Running script","type":1,"pageTitle":"README","url":"docs/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README#running-script","content":"Once you have a TF_CONFIG configured properly on each host you're ready to run on distributed settings. Master# Run this on master: Runs an Experiment in sync mode on 4 GPUs using CPU as parameter server for 40000 steps. It will run evaluation a couple of times during training. The num_workers argument is used only to update the learning rate correctly. Make sure the model_dir is the same as defined on the TF_CONFIG. python cifar10_main.py --data-dir=gs://path/cifar-10-data \\ --job-dir=gs://path/model_dir/ \\ --num-gpus=4 \\ --train-steps=40000 \\ --sync \\ --num-workers=2 Copy Output: INFO:tensorflow:Using model_dir in TF_CONFIG: gs://path/model_dir/ INFO:tensorflow:Using config: {'_save_checkpoints_secs': 600, '_num_ps_replicas': 1, '_keep_checkpoint_max': 5, '_task_type': u'master', '_is_chief': True, '_cluster_spec': <tensorflow.python.training.server_lib.ClusterSpec object at 0x7fd16fb2be10>, '_model_dir': 'gs://path/model_dir/', '_save_checkpoints_steps': None, '_keep_checkpoint_every_n_hours': 10000, '_session_config': intra_op_parallelism_threads: 1 gpu_options { } allow_soft_placement: true , '_tf_random_seed': None, '_environment': u'cloud', '_num_worker_replicas': 1, '_task_id': 0, '_save_summary_steps': 100, '_tf_config': gpu_options { per_process_gpu_memory_fraction: 1.0 } , '_evaluation_master': '', '_master': u'grpc://master-ip:8000'} ... 2017-08-01 19:59:26.496208: I tensorflow/core/common_runtime/gpu/gpu_device.cc:940] Found device 0 with properties: name: Tesla K80 major: 3 minor: 7 memoryClockRate (GHz) 0.8235 pciBusID 0000:00:04.0 Total memory: 11.17GiB Free memory: 11.09GiB 2017-08-01 19:59:26.775660: I tensorflow/core/common_runtime/gpu/gpu_device.cc:940] Found device 1 with properties: name: Tesla K80 major: 3 minor: 7 memoryClockRate (GHz) 0.8235 pciBusID 0000:00:05.0 Total memory: 11.17GiB Free memory: 11.10GiB ... 2017-08-01 19:59:29.675171: I tensorflow/core/distributed_runtime/rpc/grpc_server_lib.cc:316] Started server with target: grpc://localhost:8000 INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_1/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_2/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_3/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_4/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_5/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_6/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1/avg_pool/: (?, 16, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_1/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_2/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_3/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_4/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_1/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_2/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_3/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_4/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_5/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_6/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1/avg_pool/: (?, 32, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_1/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_2/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_3/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_4/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_5/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_6/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/global_avg_pool/: (?, 64) INFO:tensorflow:image after unit resnet/tower_0/fully_connected/: (?, 11) INFO:tensorflow:SyncReplicasV2: replicas_to_aggregate=1; total_num_replicas=1 INFO:tensorflow:Create CheckpointSaverHook. INFO:tensorflow:Restoring parameters from gs://path/model_dir/model.ckpt-0 2017-08-01 19:59:37.560775: I tensorflow/core/distributed_runtime/master_session.cc:999] Start master session 156fcb55fe6648d6 with config: intra_op_parallelism_threads: 1 gpu_options { per_process_gpu_memory_fraction: 1 } allow_soft_placement: true INFO:tensorflow:Saving checkpoints for 1 into gs://path/model_dir/model.ckpt. INFO:tensorflow:loss = 1.20682, step = 1 INFO:tensorflow:loss = 1.20682, learning_rate = 0.1 INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_1/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_2/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_3/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_4/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_5/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_6/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1/avg_pool/: (?, 16, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_1/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_2/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_3/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_4/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_5/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_6/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1/avg_pool/: (?, 32, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_1/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_2/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_3/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_4/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_5/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_6/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/global_avg_pool/: (?, 64) INFO:tensorflow:image after unit resnet/tower_0/fully_connected/: (?, 11) INFO:tensorflow:SyncReplicasV2: replicas_to_aggregate=2; total_num_replicas=2 INFO:tensorflow:Starting evaluation at 2017-08-01-20:00:14 2017-08-01 20:00:15.745881: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Creating TensorFlow device (/gpu:0) -> (device: 0, name: Tesla K80, pci bus id: 0000:00:04.0) 2017-08-01 20:00:15.745949: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Creating TensorFlow device (/gpu:1) -> (device: 1, name: Tesla K80, pci bus id: 0000:00:05.0) 2017-08-01 20:00:15.745958: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Creating TensorFlow device (/gpu:2) -> (device: 2, name: Tesla K80, pci bus id: 0000:00:06.0) 2017-08-01 20:00:15.745964: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Creating TensorFlow device (/gpu:3) -> (device: 3, name: Tesla K80, pci bus id: 0000:00:07.0) 2017-08-01 20:00:15.745969: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Creating TensorFlow device (/gpu:4) -> (device: 4, name: Tesla K80, pci bus id: 0000:00:08.0) 2017-08-01 20:00:15.745975: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Creating TensorFlow device (/gpu:5) -> (device: 5, name: Tesla K80, pci bus id: 0000:00:09.0) 2017-08-01 20:00:15.745987: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Creating TensorFlow device (/gpu:6) -> (device: 6, name: Tesla K80, pci bus id: 0000:00:0a.0) 2017-08-01 20:00:15.745997: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Creating TensorFlow device (/gpu:7) -> (device: 7, name: Tesla K80, pci bus id: 0000:00:0b.0) INFO:tensorflow:Restoring parameters from gs://path/model_dir/model.ckpt-10023 INFO:tensorflow:Evaluation [1/100] INFO:tensorflow:Evaluation [2/100] INFO:tensorflow:Evaluation [3/100] INFO:tensorflow:Evaluation [4/100] INFO:tensorflow:Evaluation [5/100] INFO:tensorflow:Evaluation [6/100] INFO:tensorflow:Evaluation [7/100] INFO:tensorflow:Evaluation [8/100] INFO:tensorflow:Evaluation [9/100] INFO:tensorflow:Evaluation [10/100] INFO:tensorflow:Evaluation [11/100] INFO:tensorflow:Evaluation [12/100] INFO:tensorflow:Evaluation [13/100] ... INFO:tensorflow:Evaluation [100/100] INFO:tensorflow:Finished evaluation at 2017-08-01-20:00:31 INFO:tensorflow:Saving dict for global step 1: accuracy = 0.0994, global_step = 1, loss = 630.425 Copy Worker# Run this on worker: Runs an Experiment in sync mode on 4 GPUs using CPU as parameter server for 40000 steps. It will run evaluation a couple of times during training. Make sure the model_dir is the same as defined on the TF_CONFIG. python cifar10_main.py --data-dir=gs://path/cifar-10-data \\ --job-dir=gs://path/model_dir/ \\ --num-gpus=4 \\ --train-steps=40000 \\ --sync Copy Output: INFO:tensorflow:Using model_dir in TF_CONFIG: gs://path/model_dir/ INFO:tensorflow:Using config: {'_save_checkpoints_secs': 600, '_num_ps_replicas': 1, '_keep_checkpoint_max': 5, '_task_type': u'worker', '_is_chief': False, '_cluster_spec': <tensorflow.python.training.server_lib.ClusterSpec object at 0x7f6918438e10>, '_model_dir': 'gs://<path>/model_dir/', '_save_checkpoints_steps': None, '_keep_checkpoint_every_n_hours': 10000, '_session_config': intra_op_parallelism_threads: 1 gpu_options { } allow_soft_placement: true , '_tf_random_seed': None, '_environment': u'cloud', '_num_worker_replicas': 1, '_task_id': 0, '_save_summary_steps': 100, '_tf_config': gpu_options { per_process_gpu_memory_fraction: 1.0 } ... 2017-08-01 19:59:26.496208: I tensorflow/core/common_runtime/gpu/gpu_device.cc:940] Found device 0 with properties: name: Tesla K80 major: 3 minor: 7 memoryClockRate (GHz) 0.8235 pciBusID 0000:00:04.0 Total memory: 11.17GiB Free memory: 11.09GiB 2017-08-01 19:59:26.775660: I tensorflow/core/common_runtime/gpu/gpu_device.cc:940] Found device 1 with properties: name: Tesla K80 major: 3 minor: 7 memoryClockRate (GHz) 0.8235 pciBusID 0000:00:05.0 Total memory: 11.17GiB Free memory: 11.10GiB ... 2017-08-01 19:59:29.675171: I tensorflow/core/distributed_runtime/rpc/grpc_server_lib.cc:316] Started server with target: grpc://localhost:8000 INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_1/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_2/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_3/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_4/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_5/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_6/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1/avg_pool/: (?, 16, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_1/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_2/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_3/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_4/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_1/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_2/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_3/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_4/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_5/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_6/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1/avg_pool/: (?, 32, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_1/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_2/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_3/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_4/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_5/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_6/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/global_avg_pool/: (?, 64) INFO:tensorflow:image after unit resnet/tower_0/fully_connected/: (?, 11) INFO:tensorflow:SyncReplicasV2: replicas_to_aggregate=2; total_num_replicas=2 INFO:tensorflow:Create CheckpointSaverHook. 2017-07-31 22:38:04.629150: I tensorflow/core/distributed_runtime/master.cc:209] CreateSession still waiting for response from worker: /job:master/replica:0/task:0 2017-07-31 22:38:09.263492: I tensorflow/core/distributed_runtime/master_session.cc:999] Start master session cc58f93b1e259b0c with config: intra_op_parallelism_threads: 1 gpu_options { per_process_gpu_memory_fraction: 1 } allow_soft_placement: true INFO:tensorflow:loss = 5.82382, step = 0 INFO:tensorflow:loss = 5.82382, learning_rate = 0.8 INFO:tensorflow:Average examples/sec: 1116.92 (1116.92), step = 10 INFO:tensorflow:Average examples/sec: 1233.73 (1377.83), step = 20 INFO:tensorflow:Average examples/sec: 1485.43 (2509.3), step = 30 INFO:tensorflow:Average examples/sec: 1680.27 (2770.39), step = 40 INFO:tensorflow:Average examples/sec: 1825.38 (2788.78), step = 50 INFO:tensorflow:Average examples/sec: 1929.32 (2697.27), step = 60 INFO:tensorflow:Average examples/sec: 2015.17 (2749.05), step = 70 INFO:tensorflow:loss = 37.6272, step = 79 (19.554 sec) INFO:tensorflow:loss = 37.6272, learning_rate = 0.8 (19.554 sec) INFO:tensorflow:Average examples/sec: 2074.92 (2618.36), step = 80 INFO:tensorflow:Average examples/sec: 2132.71 (2744.13), step = 90 INFO:tensorflow:Average examples/sec: 2183.38 (2777.21), step = 100 INFO:tensorflow:Average examples/sec: 2224.4 (2739.03), step = 110 INFO:tensorflow:Average examples/sec: 2240.28 (2431.26), step = 120 INFO:tensorflow:Average examples/sec: 2272.12 (2739.32), step = 130 INFO:tensorflow:Average examples/sec: 2300.68 (2750.03), step = 140 INFO:tensorflow:Average examples/sec: 2325.81 (2745.63), step = 150 INFO:tensorflow:Average examples/sec: 2347.14 (2721.53), step = 160 INFO:tensorflow:Average examples/sec: 2367.74 (2754.54), step = 170 INFO:tensorflow:loss = 27.8453, step = 179 (18.893 sec) ... Copy PS# Run this on ps: The ps will not do training so most of the arguments won't affect the execution python cifar10_main.py --job-dir=gs://path/model_dir/ Copy Output: INFO:tensorflow:Using model_dir in TF_CONFIG: gs://path/model_dir/ INFO:tensorflow:Using config: {'_save_checkpoints_secs': 600, '_num_ps_replicas': 1, '_keep_checkpoint_max': 5, '_task_type': u'ps', '_is_chief': False, '_cluster_spec': <tensorflow.python.training.server_lib.ClusterSpec object at 0x7f48f1addf90>, '_model_dir': 'gs://path/model_dir/', '_save_checkpoints_steps': None, '_keep_checkpoint_every_n_hours': 10000, '_session_config': intra_op_parallelism_threads: 1 gpu_options { } allow_soft_placement: true , '_tf_random_seed': None, '_environment': u'cloud', '_num_worker_replicas': 1, '_task_id': 0, '_save_summary_steps': 100, '_tf_config': gpu_options { per_process_gpu_memory_fraction: 1.0 } , '_evaluation_master': '', '_master': u'grpc://master-ip:8000'} 2017-07-31 22:54:58.928088: I tensorflow/core/distributed_runtime/rpc/grpc_channel.cc:215] Initialize GrpcChannelCache for job master -> {0 -> master-ip:8000} 2017-07-31 22:54:58.928153: I tensorflow/core/distributed_runtime/rpc/grpc_channel.cc:215] Initialize GrpcChannelCache for job ps -> {0 -> localhost:8000} 2017-07-31 22:54:58.928160: I tensorflow/core/distributed_runtime/rpc/grpc_channel.cc:215] Initialize GrpcChannelCache for job worker -> {0 -> worker-ip:8000} 2017-07-31 22:54:58.929873: I tensorflow/core/distributed_runtime/rpc/grpc_server_lib.cc:316] Started server with target: grpc://localhost:8000 Copy "},{"title":"Visualizing results with TensorBoard","type":1,"pageTitle":"README","url":"docs/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README#visualizing-results-with-tensorboard","content":"When using Estimators you can also visualize your data in TensorBoard, with no changes in your code. You can use TensorBoard to visualize your TensorFlow graph, plot quantitative metrics about the execution of your graph, and show additional data like images that pass through it. You'll see something similar to this if you \"point\" TensorBoard to thejob dir parameter you used to train or evaluate your model. Check TensorBoard during training or after it. Just point TensorBoard to the model_dir you chose on the previous step. tensorboard --log-dir=\"<job dir>\" Copy "},{"title":"Warnings","type":1,"pageTitle":"README","url":"docs/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README#warnings","content":"When running cifar10_main.py with --sync argument you may see an error similar to: File \"cifar10_main.py\", line 538, in <module> tf.app.run() File \"/usr/local/lib/python2.7/dist-packages/tensorflow/python/platform/app.py\", line 48, in run _sys.exit(main(_sys.argv[:1] + flags_passthrough)) File \"cifar10_main.py\", line 518, in main hooks), run_config=config) File \"/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/learn_runner.py\", line 210, in run return _execute_schedule(experiment, schedule) File \"/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/learn_runner.py\", line 47, in _execute_schedule return task() File \"/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/experiment.py\", line 501, in train_and_evaluate hooks=self._eval_hooks) File \"/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/experiment.py\", line 681, in _call_evaluate hooks=hooks) File \"/usr/local/lib/python2.7/dist-packages/tensorflow/python/estimator/estimator.py\", line 292, in evaluate name=name) File \"/usr/local/lib/python2.7/dist-packages/tensorflow/python/estimator/estimator.py\", line 638, in _evaluate_model features, labels, model_fn_lib.ModeKeys.EVAL) File \"/usr/local/lib/python2.7/dist-packages/tensorflow/python/estimator/estimator.py\", line 545, in _call_model_fn features=features, labels=labels, **kwargs) File \"cifar10_main.py\", line 331, in _resnet_model_fn gradvars, global_step=tf.train.get_global_step()) File \"/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/sync_replicas_optimizer.py\", line 252, in apply_gradients variables.global_variables()) File \"/usr/local/lib/python2.7/dist-packages/tensorflow/python/util/tf_should_use.py\", line 170, in wrapped return _add_should_use_warning(fn(*args, **kwargs)) File \"/usr/local/lib/python2.7/dist-packages/tensorflow/python/util/tf_should_use.py\", line 139, in _add_should_use_warning wrapped = TFShouldUseWarningWrapper(x) File \"/usr/local/lib/python2.7/dist-packages/tensorflow/python/util/tf_should_use.py\", line 96, in __init__ stack = [s.strip() for s in traceback.format_stack()] Copy This should not affect your training, and should be fixed on the next releases. "},{"title":"Docker Images for TensorFlow","type":0,"sectionRef":"#","url":"docs/userDocs/yarn/WriteDockerfileTF","content":"","keywords":""},{"title":"How to create docker images to run Tensorflow on YARN","type":1,"pageTitle":"Docker Images for TensorFlow","url":"docs/userDocs/yarn/WriteDockerfileTF#how-to-create-docker-images-to-run-tensorflow-on-yarn","content":"Dockerfile to run Tensorflow on YARN need two part: Base libraries which Tensorflow depends on 1) OS base image, for example ubuntu:18.04 2) Tensorflow depended libraries and packages. For example python, scipy. For GPU support, need cuda, cudnn, etc. 3) Tensorflow package. Libraries to access HDFS 1) JDK 2) Hadoop Here's an example of a base image (w/o GPU support) to install Tensorflow: FROM ubuntu:18.04 # Pick up some TF dependencies RUN apt-get update && apt-get install -y --no-install-recommends \\ build-essential \\ curl \\ libfreetype6-dev \\ libpng-dev \\ libzmq3-dev \\ pkg-config \\ python \\ python-dev \\ rsync \\ software-properties-common \\ unzip \\ && \\ apt-get clean && \\ rm -rf /var/lib/apt/lists/* RUN export DEBIAN_FRONTEND=noninteractive && apt-get update && apt-get install -yq krb5-user libpam-krb5 && apt-get clean RUN curl -O https://bootstrap.pypa.io/get-pip.py && \\ python get-pip.py && \\ rm get-pip.py RUN pip --no-cache-dir install \\ Pillow \\ h5py \\ ipykernel \\ jupyter \\ matplotlib \\ numpy \\ pandas \\ scipy \\ sklearn \\ && \\ python -m ipykernel.kernelspec RUN pip --no-cache-dir install \\ http://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.13.1-cp27-none-linux_x86_64.whl Copy On top of above image, add files, install packages to access HDFS RUN apt-get update && apt-get install -y openjdk-8-jdk wget # Install hadoop ENV HADOOP_VERSION=\"2.9.2\" RUN wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-${HADOOP_VERSION}/hadoop-${HADOOP_VERSION}.tar.gz RUN tar zxf hadoop-${HADOOP_VERSION}.tar.gz RUN ln -s hadoop-${HADOOP_VERSION} hadoop-current RUN rm hadoop-${HADOOP_VERSION}.tar.gz Copy Build and push to your own docker registry: Use docker build ... and docker push ... to finish this step. "},{"title":"Use examples to build your own Tensorflow docker images","type":1,"pageTitle":"Docker Images for TensorFlow","url":"docs/userDocs/yarn/WriteDockerfileTF#use-examples-to-build-your-own-tensorflow-docker-images","content":"We provided following examples for you to build tensorflow docker images. For Tensorflow 1.13.1 (Precompiled to CUDA 10.x) docker/tensorflow/base/ubuntu-18.04/Dockerfile.cpu.tf_1.13.1: Tensorflow 1.13.1 supports CPU only.docker/tensorflow/with-cifar10-models/ubuntu-18.04/Dockerfile.cpu.tf_1.13.1: Tensorflow 1.13.1 supports CPU only, and included modelsdocker/tensorflow/base/ubuntu-18.04/Dockerfile.gpu.tf_1.13.1: Tensorflow 1.13.1 supports GPU, which is prebuilt to CUDA10.docker/tensorflow/with-cifar10-models/ubuntu-18.04/Dockerfile.gpu.tf_1.13.1: Tensorflow 1.13.1 supports GPU, which is prebuilt to CUDA10, with models. "},{"title":"Build Docker images","type":1,"pageTitle":"Docker Images for TensorFlow","url":"docs/userDocs/yarn/WriteDockerfileTF#build-docker-images","content":""},{"title":"Manually build Docker image:","type":1,"pageTitle":"Docker Images for TensorFlow","url":"docs/userDocs/yarn/WriteDockerfileTF#manually-build-docker-image","content":"Under docker/ directory, run build-all.sh to build Docker images. It will build following images: tf-1.13.1-gpu-base:0.0.1 for base Docker image which includes Hadoop, Tensorflow, GPU base libraries.tf-1.13.1-gpu-base:0.0.1 for base Docker image which includes Hadoop. Tensorflow.tf-1.13.1-gpu:0.0.1 which includes cifar10 modeltf-1.13.1-cpu:0.0.1 which inclues cifar10 model (cpu only). "},{"title":"Use prebuilt images","type":1,"pageTitle":"Docker Images for TensorFlow","url":"docs/userDocs/yarn/WriteDockerfileTF#use-prebuilt-images","content":"(No liability) You can also use prebuilt images for convenience: hadoopsubmarine/tf-1.13.1-gpu:0.0.1hadoopsubmarine/tf-1.13.1-cpu:0.0.1 "},{"title":"YARN Runtime Quick Start Guide","type":0,"sectionRef":"#","url":"docs/userDocs/yarn/YARNRuntimeGuide","content":"","keywords":""},{"title":"Prerequisite","type":1,"pageTitle":"YARN Runtime Quick Start Guide","url":"docs/userDocs/yarn/YARNRuntimeGuide#prerequisite","content":"Check out the Running Submarine on YARN "},{"title":"Build your own Docker image","type":1,"pageTitle":"YARN Runtime Quick Start Guide","url":"docs/userDocs/yarn/YARNRuntimeGuide#build-your-own-docker-image","content":"When you follow the documents below, and want to build your own Docker image for Tensorflow/PyTorch/MXNet? Please check out Build your Docker image for more details. "},{"title":"Launch TensorFlow Application:","type":1,"pageTitle":"YARN Runtime Quick Start Guide","url":"docs/userDocs/yarn/YARNRuntimeGuide#launch-tensorflow-application","content":""},{"title":"Without Docker","type":1,"pageTitle":"YARN Runtime Quick Start Guide","url":"docs/userDocs/yarn/YARNRuntimeGuide#without-docker","content":"You need: Build a Python virtual environment with TensorFlow 1.13.1 installedA cluster with Hadoop 2.9 or above. "},{"title":"Building a Python virtual environment with TensorFlow","type":1,"pageTitle":"YARN Runtime Quick Start Guide","url":"docs/userDocs/yarn/YARNRuntimeGuide#building-a-python-virtual-environment-with-tensorflow","content":"TonY requires a Python virtual environment zip with TensorFlow and any needed Python libraries already installed. wget https://files.pythonhosted.org/packages/33/bc/fa0b5347139cd9564f0d44ebd2b147ac97c36b2403943dbee8a25fd74012/virtualenv-16.0.0.tar.gz tar xf virtualenv-16.0.0.tar.gz # Make sure to install using Python 3, as TensorFlow only provides Python 3 artifacts python virtualenv-16.0.0/virtualenv.py venv . venv/bin/activate pip install tensorflow==1.13.1 zip -r myvenv.zip venv deactivate Copy The above commands will produced a myvenv.zip and it will be used in below example. There's no need to copy it to other nodes. And it is not needed when using Docker to run the job. Note: If you require a version of TensorFlow and TensorBoard prior to 1.13.1, take a look at this issue. "},{"title":"Get the training examples","type":1,"pageTitle":"YARN Runtime Quick Start Guide","url":"docs/userDocs/yarn/YARNRuntimeGuide#get-the-training-examples","content":"Get mnist_distributed.py from https://github.com/linkedin/TonY/tree/master/tony-examples/mnist-tensorflow SUBMARINE_VERSION=<REPLACE_VERSION> SUBMARINE_HADOOP_VERSION=3.1 CLASSPATH=$(hadoop classpath --glob):path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar \\ java org.apache.submarine.client.cli.Cli job run --name tf-job-001 \\ --framework tensorflow \\ --verbose \\ --input_path \"\" \\ --num_workers 2 \\ --worker_resources memory=1G,vcores=1 \\ --num_ps 1 \\ --ps_resources memory=1G,vcores=1 \\ --worker_launch_cmd \"myvenv.zip/venv/bin/python mnist_distributed.py --steps 2 --data_dir /tmp/data --working_dir /tmp/mode\" \\ --ps_launch_cmd \"myvenv.zip/venv/bin/python mnist_distributed.py --steps 2 --data_dir /tmp/data --working_dir /tmp/mode\" \\ --insecure \\ --conf tony.containers.resources=path-to/myvenv.zip#archive,path-to/mnist_distributed.py,path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar Copy You should then be able to see links and status of the jobs from command line: 2019-04-22 20:30:42,611 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000003/pi status: RUNNING 2019-04-22 20:30:42,612 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 1 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000004/pi status: RUNNING 2019-04-22 20:30:42,612 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: ps index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000002/pi status: RUNNING 2019-04-22 20:30:42,612 INFO tony.TonyClient: Logs for ps 0 at: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000002/pi 2019-04-22 20:30:42,612 INFO tony.TonyClient: Logs for worker 0 at: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000003/pi 2019-04-22 20:30:42,612 INFO tony.TonyClient: Logs for worker 1 at: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000004/pi 2019-04-22 20:30:44,625 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: ps index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000002/pi status: FINISHED 2019-04-22 20:30:44,625 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000003/pi status: FINISHED 2019-04-22 20:30:44,626 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 1 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000004/pi status: FINISHED Copy "},{"title":"With Docker","type":1,"pageTitle":"YARN Runtime Quick Start Guide","url":"docs/userDocs/yarn/YARNRuntimeGuide#with-docker","content":"SUBMARINE_VERSION=<REPLACE_VERSION> SUBMARINE_HADOOP_VERSION=3.1 CLASSPATH=$(hadoop classpath --glob):path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar \\ java org.apache.submarine.client.cli.Cli job run --name tf-job-001 \\ --framework tensorflow \\ --docker_image hadoopsubmarine/tf-1.8.0-cpu:0.0.1 \\ --input_path hdfs://pi-aw:9000/dataset/cifar-10-data \\ --worker_resources memory=3G,vcores=2 \\ --worker_launch_cmd \"export CLASSPATH=\\$(/hadoop-3.1.0/bin/hadoop classpath --glob) && cd /test/models/tutorials/image/cifar10_estimator && python cifar10_main.py --data-dir=%input_path% --job-dir=%checkpoint_path% --train-steps=10000 --eval-batch-size=16 --train-batch-size=16 --variable-strategy=CPU --num-gpus=0 --sync\" \\ --env JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 \\ --env DOCKER_HADOOP_HDFS_HOME=/hadoop-3.1.0 \\ --env DOCKER_JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 \\ --env HADOOP_HOME=/hadoop-3.1.0 \\ --env HADOOP_YARN_HOME=/hadoop-3.1.0 \\ --env HADOOP_COMMON_HOME=/hadoop-3.1.0 \\ --env HADOOP_HDFS_HOME=/hadoop-3.1.0 \\ --env HADOOP_CONF_DIR=/hadoop-3.1.0/etc/hadoop \\ --conf tony.containers.resources=path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar Copy Notes:# 1) DOCKER_JAVA_HOME points to JAVA_HOME inside Docker image. 2) DOCKER_HADOOP_HDFS_HOME points to HADOOP_HDFS_HOME inside Docker image. We removed TonY submodule after applying SUBMARINE-371 and changed to use TonY dependency directly. After Submarine v0.2.0, there is a uber jar submarine-all-${SUBMARINE_VERSION}-hadoop-${HADOOP_VERSION}.jar released together with the submarine-core-${SUBMARINE_VERSION}.jar, submarine-yarnservice-runtime-${SUBMARINE_VERSION}.jar and submarine-tony-runtime-${SUBMARINE_VERSION}.jar.  "},{"title":"Launch PyTorch Application:","type":1,"pageTitle":"YARN Runtime Quick Start Guide","url":"docs/userDocs/yarn/YARNRuntimeGuide#launch-pytorch-application","content":""},{"title":"Without Docker","type":1,"pageTitle":"YARN Runtime Quick Start Guide","url":"docs/userDocs/yarn/YARNRuntimeGuide#without-docker-1","content":"You need: Build a Python virtual environment with PyTorch 0.4.0+ installedA cluster with Hadoop 2.9 or above. "},{"title":"Building a Python virtual environment with PyTorch","type":1,"pageTitle":"YARN Runtime Quick Start Guide","url":"docs/userDocs/yarn/YARNRuntimeGuide#building-a-python-virtual-environment-with-pytorch","content":"TonY requires a Python virtual environment zip with PyTorch and any needed Python libraries already installed. wget https://files.pythonhosted.org/packages/33/bc/fa0b5347139cd9564f0d44ebd2b147ac97c36b2403943dbee8a25fd74012/virtualenv-16.0.0.tar.gz tar xf virtualenv-16.0.0.tar.gz python virtualenv-16.0.0/virtualenv.py venv . venv/bin/activate pip install pytorch==0.4.0 zip -r myvenv.zip venv deactivate Copy "},{"title":"Get the training examples","type":1,"pageTitle":"YARN Runtime Quick Start Guide","url":"docs/userDocs/yarn/YARNRuntimeGuide#get-the-training-examples-1","content":"Get mnist_distributed.py from https://github.com/linkedin/TonY/tree/master/tony-examples/mnist-pytorch SUBMARINE_VERSION=<REPLACE_VERSION> SUBMARINE_HADOOP_VERSION=3.1 CLASSPATH=$(hadoop classpath --glob):path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar \\ java org.apache.submarine.client.cli.Cli job run --name PyTorch-job-001 \\ --framework pytorch --num_workers 2 \\ --worker_resources memory=3G,vcores=2 \\ --num_ps 2 \\ --ps_resources memory=3G,vcores=2 \\ --worker_launch_cmd \"myvenv.zip/venv/bin/python mnist_distributed.py\" \\ --ps_launch_cmd \"myvenv.zip/venv/bin/python mnist_distributed.py\" \\ --insecure \\ --conf tony.containers.resources=path-to/myvenv.zip#archive,path-to/mnist_distributed.py, \\ path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar Copy You should then be able to see links and status of the jobs from command line: 2019-04-22 20:30:42,611 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000003/pi status: RUNNING 2019-04-22 20:30:42,612 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 1 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000004/pi status: RUNNING 2019-04-22 20:30:42,612 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: ps index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000002/pi status: RUNNING 2019-04-22 20:30:42,612 INFO tony.TonyClient: Logs for ps 0 at: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000002/pi 2019-04-22 20:30:42,612 INFO tony.TonyClient: Logs for worker 0 at: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000003/pi 2019-04-22 20:30:42,612 INFO tony.TonyClient: Logs for worker 1 at: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000004/pi 2019-04-22 20:30:44,625 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: ps index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000002/pi status: FINISHED 2019-04-22 20:30:44,625 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000003/pi status: FINISHED 2019-04-22 20:30:44,626 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 1 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000004/pi status: FINISHED Copy "},{"title":"With Docker","type":1,"pageTitle":"YARN Runtime Quick Start Guide","url":"docs/userDocs/yarn/YARNRuntimeGuide#with-docker-1","content":"SUBMARINE_VERSION=<REPLACE_VERSION> SUBMARINE_HADOOP_VERSION=3.1 CLASSPATH=$(hadoop classpath --glob):path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar \\ java org.apache.submarine.client.cli.Cli job run --name PyTorch-job-001 \\ --framework pytorch --docker_image pytorch-latest-gpu:0.0.1 \\ --input_path \"\" \\ --num_workers 1 \\ --worker_resources memory=3G,vcores=2 \\ --worker_launch_cmd \"cd /test/ && python cifar10_tutorial.py\" \\ --env JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 \\ --env DOCKER_HADOOP_HDFS_HOME=/hadoop-3.1.2 \\ --env DOCKER_JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 \\ --env HADOOP_HOME=/hadoop-3.1.2 \\ --env HADOOP_YARN_HOME=/hadoop-3.1.2 \\ --env HADOOP_COMMON_HOME=/hadoop-3.1.2 \\ --env HADOOP_HDFS_HOME=/hadoop-3.1.2 \\ --env HADOOP_CONF_DIR=/hadoop-3.1.2/etc/hadoop \\ --conf tony.containers.resources=path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar Copy "},{"title":"Launch MXNet Application:","type":1,"pageTitle":"YARN Runtime Quick Start Guide","url":"docs/userDocs/yarn/YARNRuntimeGuide#launch-mxnet-application","content":""},{"title":"Without Docker","type":1,"pageTitle":"YARN Runtime Quick Start Guide","url":"docs/userDocs/yarn/YARNRuntimeGuide#without-docker-2","content":"You need: Build a Python virtual environment with MXNet installedA cluster with Hadoop 2.9 or above. "},{"title":"Building a Python virtual environment with MXNet","type":1,"pageTitle":"YARN Runtime Quick Start Guide","url":"docs/userDocs/yarn/YARNRuntimeGuide#building-a-python-virtual-environment-with-mxnet","content":"TonY requires a Python virtual environment zip with MXNet and any needed Python libraries already installed. wget https://files.pythonhosted.org/packages/33/bc/fa0b5347139cd9564f0d44ebd2b147ac97c36b2403943dbee8a25fd74012/virtualenv-16.0.0.tar.gz tar xf virtualenv-16.0.0.tar.gz python virtualenv-16.0.0/virtualenv.py venv . venv/bin/activate pip install mxnet==1.5.1 zip -r myvenv.zip venv deactivate Copy "},{"title":"Get the training examples","type":1,"pageTitle":"YARN Runtime Quick Start Guide","url":"docs/userDocs/yarn/YARNRuntimeGuide#get-the-training-examples-2","content":"Get image_classification.py from this link SUBMARINE_VERSION=<REPLACE_VERSION> SUBMARINE_HADOOP_VERSION=3.1 CLASSPATH=$(hadoop classpath --glob):path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar \\ java org.apache.submarine.client.cli.Cli job run --name MXNet-job-001 \\ --framework mxnet --input_path \"\" \\ --num_workers 2 \\ --worker_resources memory=3G,vcores=2 \\ --worker_launch_cmd \"myvenv.zip/venv/bin/python image_classification.py --dataset cifar10 --model vgg11 --epochs 1 --kvstore dist_sync\" \\ --num_ps 2 \\ --ps_resources memory=3G,vcores=2 \\ --ps_launch_cmd \"myvenv.zip/venv/bin/python image_classification.py --dataset cifar10 --model vgg11 --epochs 1 --kvstore dist_sync\" \\ --num_schedulers=1 \\ --scheduler_resources memory=1G,vcores=1 \\ --scheduler_launch_cmd=\"myvenv.zip/venv/bin/python image_classification.py --dataset cifar10 --model vgg11 --epochs 1 --kvstore dist_sync\" \\ --insecure \\ --conf tony.containers.resources=path-to/myvenv.zip#archive,path-to/image_classification.py, \\ path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar Copy You should then be able to see links and status of the jobs from command line: 2020-04-16 20:23:43,834 INFO tony.TonyClient: Task status updated: [TaskInfo] name: server, index: 1, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000004/pi status: RUNNING 2020-04-16 20:23:43,834 INFO tony.TonyClient: Task status updated: [TaskInfo] name: server, index: 0, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000003/pi status: RUNNING 2020-04-16 20:23:43,834 INFO tony.TonyClient: Task status updated: [TaskInfo] name: worker, index: 1, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000006/pi status: RUNNING 2020-04-16 20:23:43,834 INFO tony.TonyClient: Task status updated: [TaskInfo] name: worker, index: 0, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000005/pi status: RUNNING 2020-04-16 20:23:43,834 INFO tony.TonyClient: Task status updated: [TaskInfo] name: scheduler, index: 0, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000002/pi status: RUNNING 2020-04-16 20:23:43,839 INFO tony.TonyClient: Logs for scheduler 0 at: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000002/pi 2020-04-16 20:23:43,839 INFO tony.TonyClient: Logs for server 0 at: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000003/pi 2020-04-16 20:23:43,840 INFO tony.TonyClient: Logs for server 1 at: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000004/pi 2020-04-16 20:23:43,840 INFO tony.TonyClient: Logs for worker 0 at: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000005/pi 2020-04-16 20:23:43,840 INFO tony.TonyClient: Logs for worker 1 at: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000006/pi 2020-04-16 21:02:09,723 INFO tony.TonyClient: Task status updated: [TaskInfo] name: scheduler, index: 0, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000002/pi status: SUCCEEDED 2020-04-16 21:02:09,736 INFO tony.TonyClient: Task status updated: [TaskInfo] name: worker, index: 0, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000005/pi status: SUCCEEDED 2020-04-16 21:02:09,737 INFO tony.TonyClient: Task status updated: [TaskInfo] name: server, index: 1, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000004/pi status: SUCCEEDED 2020-04-16 21:02:09,737 INFO tony.TonyClient: Task status updated: [TaskInfo] name: worker, index: 1, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000006/pi status: SUCCEEDED 2020-04-16 21:02:09,737 INFO tony.TonyClient: Task status updated: [TaskInfo] name: server, index: 0, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000003/pi status: SUCCEEDED Copy "},{"title":"With Docker","type":1,"pageTitle":"YARN Runtime Quick Start Guide","url":"docs/userDocs/yarn/YARNRuntimeGuide#with-docker-2","content":"You could refer to this sample Dockerfile for building your own Docker image. SUBMARINE_VERSION=<REPLACE_VERSION> SUBMARINE_HADOOP_VERSION=3.1 CLASSPATH=$(hadoop classpath --glob):path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar \\ java org.apache.submarine.client.cli.Cli job run --name MXNet-job-001 \\ --framework mxnet --docker_image <your_docker_image> \\ --input_path \"\" \\ --num_schedulers 1 \\ --scheduler_resources memory=1G,vcores=1 \\ --scheduler_launch_cmd \"/usr/bin/python image_classification.py --dataset cifar10 --model vgg11 --epochs 1 --kvstore dist_sync\" \\ --num_workers 2 \\ --worker_resources memory=2G,vcores=1 \\ --worker_launch_cmd \"/usr/bin/python image_classification.py --dataset cifar10 --model vgg11 --epochs 1 --kvstore dist_sync\" \\ --num_ps 2 \\ --ps_resources memory=2G,vcores=1 \\ --ps_launch_cmd \"/usr/bin/python image_classification.py --dataset cifar10 --model vgg11 --epochs 1 --kvstore dist_sync\" \\ --verbose \\ --insecure \\ --conf tony.containers.resources=path-to/image_classification.py,path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar Copy "},{"title":"Use YARN Service to run Submarine: Deprecated","type":1,"pageTitle":"YARN Runtime Quick Start Guide","url":"docs/userDocs/yarn/YARNRuntimeGuide#use-yarn-service-to-run-submarine-deprecated","content":"Historically, Submarine supports to use YARN Service to submit deep learning jobs. Now we stop supporting it because YARN service is not actively developed by community, and extra dependencies such as RegistryDNS/ATS-v2 causes lots of issues for setup. As of now, you can still use YARN service to run Submarine, but code will be removed in the future release. We will only support use TonY when use Submarine on YARN. "}]
\ No newline at end of file
+[{"title":"Submarine Local Deployment","type":0,"sectionRef":"#","url":"docs/next/","content":"","keywords":""},{"title":"Prerequisite","type":1,"pageTitle":"Submarine Local Deployment","url":"docs/next/#prerequisite","content":"kubectlhelm (Helm v3 is minimum requirement.)minikube. "},{"title":"Deploy Kubernetes Cluster","type":1,"pageTitle":"Submarine Local Deployment","url":"docs/next/#deploy-kubernetes-cluster","content":"$ minikube start --vm-driver=docker --cpus 8 --memory 4096 --disk-size=20G --kubernetes-version v1.15.11 Copy "},{"title":"Install Submarine on Kubernetes","type":1,"pageTitle":"Submarine Local Deployment","url":"docs/next/#install-submarine-on-kubernetes","content":"$ git clone https://github.com/apache/submarine.git $ cd submarine $ helm install submarine ./helm-charts/submarine Copy NAME: submarine LAST DEPLOYED: Fri Jan 29 05:35:36 2021 NAMESPACE: default STATUS: deployed REVISION: 1 TEST SUITE: None Copy "},{"title":"Verify installation","type":1,"pageTitle":"Submarine Local Deployment","url":"docs/next/#verify-installation","content":"Once you got it installed, check with below commands and you should see similar outputs: $ kubectl get pods Copy NAME READY STATUS RESTARTS AGE notebook-controller-deployment-5db8b6cbf7-k65jm 1/1 Running 0 5s pytorch-operator-7ff5d96d59-gx7f5 1/1 Running 0 5s submarine-database-8d95d74f7-ntvqp 1/1 Running 0 5s submarine-server-b6cd4787b-7bvr7 1/1 Running 0 5s submarine-traefik-9bb6f8577-66sx6 1/1 Running 0 5s tf-job-operator-7844656dd-lfgmd 1/1 Running 0 5s Copy warning Note that if you encounter below issue when installation: Error: rendered manifests contain a resource that already exists. Unable to continue with install: existing resource conflict: namespace: , name: podgroups.scheduling.incubator.k8s.io, existing_kind: apiextensions.k8s.io/v1beta1, Kind=CustomResourceDefinition, new_kind: apiextensions.k8s.io/v1beta1, Kind=CustomResourceDefinition Copy It might be caused by the previous installed submarine charts. Fix it by running: $ kubectl delete crd/tfjobs.kubeflow.org && kubectl delete crd/podgroups.scheduling.incubator.k8s.io && kubectl delete crd/pytorchjobs.kubeflow.org Copy "},{"title":"Access Submarine in a Cluster","type":1,"pageTitle":"Submarine Local Deployment","url":"docs/next/#access-submarine-in-a-cluster","content":"# #Listen on port 32080 on all addresses, forwarding to 80 in the pod # Method1 -- using minikube ip + NodePort $ minikube ip # you'll get the IP address of minikube, ex: 192.168.49.2 # Method2 -- using port-forwarding $ kubectl port-forward --address 0.0.0.0 service/submarine-traefik 32080:80 Copy "},{"title":"Open Workbench in the browser.","type":1,"pageTitle":"Submarine Local Deployment","url":"docs/next/#open-workbench-in-the-browser","content":"Open http://{minikube ip}:32080(from Method1), ex: http://192.168.49.2:32080 or http://127.0.0.1:32080 (from Method 2). The default username and password is admin and admin  "},{"title":"Uninstall Submarine","type":1,"pageTitle":"Submarine Local Deployment","url":"docs/next/#uninstall-submarine","content":"$ helm delete submarine Copy "},{"title":"Environment REST API","type":0,"sectionRef":"#","url":"docs/next/api/environment","content":"","keywords":""},{"title":"Create Environment","type":1,"pageTitle":"Environment REST API","url":"docs/next/api/environment#create-environment","content":"POST /api/v1/environment Example Request curl -X POST -H \"Content-Type: application/json\" -d ' { \"name\": \"my-submarine-env\", \"dockerImage\" : \"continuumio/anaconda3\", \"kernelSpec\" : { \"name\" : \"team_default_python_3.7\", \"channels\" : [\"defaults\"], \"condaDependencies\" : [\"_ipyw_jlab_nb_ext_conf=0.1.0=py37_0\", \"alabaster=0.7.12=py37_0\", \"anaconda=2020.02=py37_0\", \"anaconda-client=1.7.2=py37_0\", \"anaconda-navigator=1.9.12=py37_0\"], \"pipDependencies\" : [\"apache-submarine==0.5.0\", \"pyarrow==0.17.0\"] } } ' http://127.0.0.1:32080/api/v1/environment Copy Example Response: { \"status\": \"OK\", \"code\": 200, \"result\": { \"environmentId\": \"environment_1586156073228_0001\", \"environmentSpec\": { \"name\": \"my-submarine-env\", \"dockerImage\" : \"continuumio/anaconda3\", \"kernelSpec\" : { \"name\" : \"team_default_python_3.7\", \"channels\" : [\"defaults\"], \"condaDependencies\" : [\"_ipyw_jlab_nb_ext_conf=0.1.0=py37_0\", \"alabaster=0.7.12=py37_0\", \"anaconda=2020.02=py37_0\", \"anaconda-client=1.7.2=py37_0\", \"anaconda-navigator=1.9.12=py37_0\"], \"pipDependencies\" : [\"apache-submarine==0.5.0\", \"pyarrow==0.17.0\"] } } } } Copy "},{"title":"List environment","type":1,"pageTitle":"Environment REST API","url":"docs/next/api/environment#list-environment","content":"GET /api/v1/environment Example Request: curl -X GET http://127.0.0.1:32080/api/v1/environment Copy Example Response: { \"status\": \"OK\", \"code\": 200, \"result\": [ { \"environmentId\": \"environment_1586156073228_0001\", \"environmentSpec\": { \"name\": \"my-submarine-env\", \"dockerImage\" : \"continuumio/anaconda3\", \"kernelSpec\" : { \"name\" : \"team_default_python_3.7\", \"channels\" : [\"defaults\"], \"condaDependencies\" : [\"_ipyw_jlab_nb_ext_conf=0.1.0=py37_0\", \"alabaster=0.7.12=py37_0\", \"anaconda=2020.02=py37_0\", \"anaconda-client=1.7.2=py37_0\", \"anaconda-navigator=1.9.12=py37_0\"], \"pipDependencies\" : [\"apache-submarine==0.5.0\", \"pyarrow==0.17.0\"] } } }, { \"environmentId\": \"environment_1586156073228_0002\", \"environmentSpec\": { \"name\": \"my-submarine-env-2\", \"dockerImage\" : \"continuumio/miniconda\", \"kernelSpec\" : { \"name\" : \"team_miniconda_python_3.7\", \"channels\" : [\"defaults\"], \"condaDependencies\" : [\"_ipyw_jlab_nb_ext_conf=0.1.0=py37_0\"], \"pipDependencies\" : [], } } } ] } Copy "},{"title":"Get environment","type":1,"pageTitle":"Environment REST API","url":"docs/next/api/environment#get-environment","content":"GET /api/v1/environment/{name} Example Request: curl -X GET http://127.0.0.1:32080/api/v1/environment/my-submarine-env Copy Example Response: { \"status\": \"OK\", \"code\": 200, \"result\": { \"environmentId\": \"environment_1586156073228_0001\", \"environmentSpec\": { \"name\": \"my-submarine-env\", \"dockerImage\" : \"continuumio/anaconda3\", \"kernelSpec\" : { \"name\" : \"team_default_python_3.7\", \"channels\" : [\"defaults\"], \"condaDependencies\" : [\"_ipyw_jlab_nb_ext_conf=0.1.0=py37_0\", \"alabaster=0.7.12=py37_0\", \"anaconda=2020.02=py37_0\", \"anaconda-client=1.7.2=py37_0\", \"anaconda-navigator=1.9.12=py37_0\"], \"pipDependencies\" : [\"apache-submarine==0.5.0\", \"pyarrow==0.17.0\"] } } } } Copy "},{"title":"Patch environment","type":1,"pageTitle":"Environment REST API","url":"docs/next/api/environment#patch-environment","content":"PATCH /api/v1/environment/{name} Example Request: curl -X PATCH -H \"Content-Type: application/json\" -d ' { \"name\": \"my-submarine-env\", \"dockerImage\" : \"continuumio/anaconda3\", \"kernelSpec\" : { \"name\" : \"team_default_python_3.7_updated\", \"channels\" : [\"defaults\"], \"condaDependencies\" : [\"_ipyw_jlab_nb_ext_conf=0.1.0=py37_0\", \"alabaster=0.7.12=py37_0\"], \"pipDependencies\" : [] } } ' http://127.0.0.1:32080/api/v1/environment/my-submarine-env Copy Example Response: { \"status\": \"OK\", \"code\": 200, \"success\": true, \"result\": { \"environmentId\": \"environment_1586156073228_0001\", \"environmentSpec\": { \"name\": \"my-submarine-env\", \"dockerImage\" : \"continuumio/anaconda3\", \"kernelSpec\" : { \"name\" : \"team_default_python_3.7_updated\", \"channels\" : [\"defaults\"], \"condaDependencies\" : [\"_ipyw_jlab_nb_ext_conf=0.1.0=py37_0\", \"alabaster=0.7.12=py37_0\"], \"pipDependencies\" : [] } } } } Copy dockerImage, \"name\" (of kernelSpec), \"channels\", \"condaDependencies\", \"pipDependencies\" etc can be updated using this API. \"name\" of EnvironmentSpec is not supported. "},{"title":"Delete environment","type":1,"pageTitle":"Environment REST API","url":"docs/next/api/environment#delete-environment","content":"GET /api/v1/environment/{name} Example Request: curl -X DELETE http://127.0.0.1:32080/api/v1/environment/my-submarine-env Copy Example Response: { \"status\": \"OK\", \"code\": 200, \"result\": { \"environmentId\": \"environment_1586156073228_0001\", \"environmentSpec\": { \"name\": \"my-submarine-env\", \"dockerImage\" : \"continuumio/anaconda3\", \"kernelSpec\" : { \"name\" : \"team_default_python_3.7_updated\", \"channels\" : [\"defaults\"], \"condaDependencies\" : [\"_ipyw_jlab_nb_ext_conf=0.1.0=py37_0\", \"alabaster=0.7.12=py37_0\"], \"pipDependencies\" : [] } } } } Copy "},{"title":"Experiment Template REST API","type":0,"sectionRef":"#","url":"docs/next/api/experiment-template","content":"","keywords":""},{"title":"Create experiment template","type":1,"pageTitle":"Experiment Template REST API","url":"docs/next/api/experiment-template#create-experiment-template","content":"POST /api/v1/template Example Request curl -X POST -H \"Content-Type: application/json\" -d ' { \"name\": \"my-tf-mnist-template\", \"author\": \"author\", \"description\": \"This is a template to run tf-mnist\", \"parameters\": [{ \"name\": \"learning_rate\", \"value\": 0.1, \"required\": true, \"description\": \"This is learning_rate of training.\" }, { \"name\": \"batch_size\", \"value\": 150, \"required\": true, \"description\": \"This is batch_size of training.\" }, { \"name\": \"experiment_name\", \"value\": \"tf-mnist1\", \"required\": true, \"description\": \"the name of experiment.\" } ], \"experimentSpec\": { \"meta\": { \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate={{learning_rate}} --batch_size={{batch_size}}\", \"name\": \"{{experiment_name}}\", \"envVars\": { \"ENV1\": \"ENV1\" }, \"framework\": \"TensorFlow\", \"namespace\": \"default\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" } } } ' http://127.0.0.1:32080/api/v1/template Copy "},{"title":"List experiment template","type":1,"pageTitle":"Experiment Template REST API","url":"docs/next/api/experiment-template#list-experiment-template","content":"GET /api/v1/template Example Request: curl -X GET http://127.0.0.1:32080/api/v1/template Copy "},{"title":"Get experiment template","type":1,"pageTitle":"Experiment Template REST API","url":"docs/next/api/experiment-template#get-experiment-template","content":"GET /api/v1/template/{name} Example Request: curl -X GET http://127.0.0.1:32080/api/v1/template/my-tf-mnist-template Copy "},{"title":"Patch template","type":1,"pageTitle":"Experiment Template REST API","url":"docs/next/api/experiment-template#patch-template","content":"PATCH /api/v1/template/{name} curl -X PATCH -H \"Content-Type: application/json\" -d ' { \"name\": \"my-tf-mnist-template\", \"author\": \"author-new\", \"description\": \"This is a template to run tf-mnist\", \"parameters\": [{ \"name\": \"learning_rate\", \"value\": 0.1, \"required\": true, \"description\": \"This is learning_rate of training.\" }, { \"name\": \"batch_size\", \"value\": 150, \"required\": true, \"description\": \"This is batch_size of training.\" }, { \"name\": \"experiment_name\", \"value\": \"tf-mnist1\", \"required\": true, \"description\": \"the name of experiment.\" } ], \"experimentSpec\": { \"meta\": { \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate={{learning_rate}} --batch_size={{batch_size}}\", \"name\": \"{{experiment_name}}\", \"envVars\": { \"ENV1\": \"ENV1\" }, \"framework\": \"TensorFlow\", \"namespace\": \"default\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" } } } ' http://127.0.0.1:32080/api/v1/template/my-tf-mnist-template Copy \"description\", \"parameters\", \"experimentSpec\", \"author\" etc can be updated using this API. \"name\" of experiment template is not supported. "},{"title":"Delete template","type":1,"pageTitle":"Experiment Template REST API","url":"docs/next/api/experiment-template#delete-template","content":"GET /api/v1/template/{name} Example Request: curl -X DELETE http://127.0.0.1:32080/api/v1/template/my-tf-mnist-template Copy "},{"title":"Use template to create a experiment","type":1,"pageTitle":"Experiment Template REST API","url":"docs/next/api/experiment-template#use-template-to-create-a-experiment","content":"POST /api/v1/experiment/{template_name} Example Request: curl -X POST -H \"Content-Type: application/json\" -d ' { \"name\": \"tf-mnist\", \"params\": { \"learning_rate\":\"0.01\", \"batch_size\":\"150\", \"experiment_name\":\"newexperiment1\" } } ' http://127.0.0.1:32080/api/v1/experiment/my-tf-mnist-template Copy "},{"title":"Experiment REST API","type":0,"sectionRef":"#","url":"docs/next/api/experiment","content":"","keywords":""},{"title":"Create Experiment (Using Anonymous/Embedded Environment)","type":1,"pageTitle":"Experiment REST API","url":"docs/next/api/experiment#create-experiment-using-anonymousembedded-environment","content":"POST /api/v1/experiment Example Request curl -X POST -H \"Content-Type: application/json\" -d ' { \"meta\": { \"name\": \"tf-mnist-json\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=2048M\" } } } ' http://127.0.0.1:32080/api/v1/experiment Copy Example Response: { \"status\": \"OK\", \"code\": 200, \"result\": { \"experimentId\": \"experiment_1586156073228_0001\", \"name\": \"tf-mnist-json\", \"uid\": \"28e39dcd-77d4-11ea-8dbb-0242ac110003\", \"status\": \"Accepted\", \"acceptedTime\": \"2020-06-13T22:59:29.000+08:00\", \"spec\": { \"meta\": { \"name\": \"tf-mnist-json\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=2048M\" } } } } } Copy "},{"title":"Create Experiment (Using Pre-defined/Stored Environment)","type":1,"pageTitle":"Experiment REST API","url":"docs/next/api/experiment#create-experiment-using-pre-definedstored-environment","content":"POST /api/v1/experiment Example Request curl -X POST -H \"Content-Type: application/json\" -d ' { \"meta\": { \"name\": \"tf-mnist-json\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"name\": \"my-submarine-env\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=2048M\" } } } ' http://127.0.0.1:32080/api/v1/experiment Copy 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 Example Response: { \"status\": \"OK\", \"code\": 200, \"result\": { \"experimentId\": \"experiment_1586156073228_0001\", \"name\": \"tf-mnist-json\", \"uid\": \"28e39dcd-77d4-11ea-8dbb-0242ac110003\", \"status\": \"Accepted\", \"acceptedTime\": \"2020-06-13T22:59:29.000+08:00\", \"spec\": { \"meta\": { \"name\": \"tf-mnist-json\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"name\": \"my-submarine-env\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=2048M\" } } } } } Copy "},{"title":"List experiment","type":1,"pageTitle":"Experiment REST API","url":"docs/next/api/experiment#list-experiment","content":"GET /api/v1/experiment Example Request: curl -X GET http://127.0.0.1:32080/api/v1/experiment Copy Example Response: { \"status\": \"OK\", \"code\": 200, \"result\": [ { \"experimentId\": \"experiment_1592057447228_0001\", \"name\": \"tf-mnist-json\", \"uid\": \"28e39dcd-77d4-11ea-8dbb-0242ac110003\", \"status\": \"Accepted\", \"acceptedTime\": \"2020-06-13T22:59:29.000+08:00\", \"spec\": { \"meta\": { \"name\": \"tf-mnist-json\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=2048M\" } } } }, { \"experimentId\": \"experiment_1592057447228_0002\", \"name\": \"mnist\", \"uid\": \"38e39dcd-77d4-11ea-8dbb-0242ac110003\", \"status\": \"Accepted\", \"acceptedTime\": \"2020-06-13T22:19:29.000+08:00\", \"spec\": { \"meta\": { \"name\": \"pytorch-mnist-json\", \"namespace\": \"default\", \"framework\": \"PyTorch\", \"cmd\": \"python /var/mnist.py --backend gloo\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"image\": \"apache/submarine:pytorch-dist-mnist-1.0\" }, \"spec\": { \"Master\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" } } } } ] } Copy "},{"title":"Get experiment","type":1,"pageTitle":"Experiment REST API","url":"docs/next/api/experiment#get-experiment","content":"GET /api/v1/experiment/{id} Example Request: curl -X GET http://127.0.0.1:32080/api/v1/experiment/experiment_1592057447228_0001 Copy Example Response: { \"status\": \"OK\", \"code\": 200, \"result\": { \"experimentId\": \"experiment_1592057447228_0001\", \"name\": \"tf-mnist-json\", \"uid\": \"28e39dcd-77d4-11ea-8dbb-0242ac110003\", \"status\": \"Accepted\", \"acceptedTime\": \"2020-06-13T22:59:29.000+08:00\", \"spec\": { \"meta\": { \"name\": \"tf-mnist-json\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=2048M\" } } } } } Copy "},{"title":"Patch experiment","type":1,"pageTitle":"Experiment REST API","url":"docs/next/api/experiment#patch-experiment","content":"PATCH /api/v1/experiment/{id} Example Request: curl -X PATCH -H \"Content-Type: application/json\" -d ' { \"meta\": { \"name\": \"tf-mnist-json\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 2, \"resources\": \"cpu=1,memory=2048M\" } } } ' http://127.0.0.1:32080/api/v1/experiment/experiment_1592057447228_0001 Copy Example Response: { \"status\": \"OK\", \"code\": 200, \"success\": true, \"result\": { \"meta\": { \"name\": \"tf-mnist-json\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 2, \"resources\": \"cpu=1,memory=2048M\" } } } } Copy "},{"title":"Delete experiment","type":1,"pageTitle":"Experiment REST API","url":"docs/next/api/experiment#delete-experiment","content":"GET /api/v1/experiment/{id} Example Request: curl -X DELETE http://127.0.0.1:32080/api/v1/experiment/experiment_1592057447228_0001 Copy Example Response: { \"status\": \"OK\", \"code\": 200, \"result\": { \"experimentId\": \"experiment_1586156073228_0001\", \"name\": \"tf-mnist-json\", \"uid\": \"28e39dcd-77d4-11ea-8dbb-0242ac110003\", \"status\": \"Accepted\", \"acceptedTime\": \"2020-06-13T22:59:29.000+08:00\", \"spec\": { \"meta\": { \"name\": \"tf-mnist-json\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 2, \"resources\": \"cpu=1,memory=2048M\" } } } } } Copy "},{"title":"List experiment Log","type":1,"pageTitle":"Experiment REST API","url":"docs/next/api/experiment#list-experiment-log","content":"GET /api/v1/experiment/logs Example Request: curl -X GET http://127.0.0.1:32080/api/v1/experiment/logs Copy Example Response: { \"status\": \"OK\", \"code\": 200, \"success\": null, \"message\": null, \"result\": [ { \"experimentId\": \"experiment_1589199154923_0001\", \"logContent\": [ { \"podName\": \"mnist-worker-0\", \"podLog\": null } ] }, { \"experimentId\": \"experiment_1589199154923_0002\", \"logContent\": [ { \"podName\": \"pytorch-dist-mnist-gloo-master-0\", \"podLog\": null }, { \"podName\": \"pytorch-dist-mnist-gloo-worker-0\", \"podLog\": null } ] } ], \"attributes\": {} } Copy "},{"title":"Get experiment Log","type":1,"pageTitle":"Experiment REST API","url":"docs/next/api/experiment#get-experiment-log","content":"GET /api/v1/experiment/logs/{id} Example Request: curl -X GET http://127.0.0.1:32080/api/v1/experiment/logs/experiment_1589199154923_0002 Copy Example Response: { \"status\": \"OK\", \"code\": 200, \"success\": null, \"message\": null, \"result\": { \"experimentId\": \"experiment_1589199154923_0002\", \"logContent\": [ { \"podName\": \"pytorch-dist-mnist-gloo-master-0\", \"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\" }, { \"podName\": \"pytorch-dist-mnist-gloo-worker-0\", \"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\" } ] }, \"attributes\": {} } Copy "},{"title":"Serve REST API","type":0,"sectionRef":"#","url":"docs/next/api/model-version","content":"","keywords":""},{"title":"List model versions under a registered model","type":1,"pageTitle":"Serve REST API","url":"docs/next/api/model-version#list-model-versions-under-a-registered-model","content":"GET /api/v1/model-version/{name} Example Request: curl -X GET http://127.0.0.1:32080/api/v1/model-version/register Copy Example Response: { \"attributes\" : {}, \"code\" : 200, \"message\" : \"List all model version instances\", \"result\" : [ { \"creationTime\" : \"2021-12-12 02:27:05\", \"currentStage\" : \"None\", \"dataset\" : null, \"description\" : null, \"experimentId\" : \"experiment-1639276018590-0001\", \"lastUpdatedTime\" : \"2021-12-12 02:27:05\", \"modelType\" : \"tensorflow\", \"name\" : \"register\", \"source\" : \"s3://submarine/experiment-1639276018590-0001/example/1\", \"tags\" : [], \"userId\" : \"\", \"version\" : 1 }, { \"creationTime\" : \"2021-12-12 02:27:05\", \"currentStage\" : \"None\", \"dataset\" : null, \"description\" : null, \"experimentId\" : \"experiment-1639276018590-0001\", \"lastUpdatedTime\" : \"2021-12-12 02:27:05\", \"modelType\" : \"tensorflow\", \"name\" : \"register\", \"source\" : \"s3://submarine/experiment-1639276018590-0001/example/2\", \"tags\" : [], \"userId\" : \"\", \"version\" : 2 }, { \"creationTime\" : \"2021-12-12 02:27:05\", \"currentStage\" : \"None\", \"dataset\" : null, \"description\" : null, \"experimentId\" : \"experiment-1639276018590-0001\", \"lastUpdatedTime\" : \"2021-12-12 02:27:05\", \"modelType\" : \"tensorflow\", \"name\" : \"register\", \"source\" : \"s3://submarine/experiment-1639276018590-0001/example1/1\", \"tags\" : [], \"userId\" : \"\", \"version\" : 3 }, { \"creationTime\" : \"2021-12-12 02:27:06\", \"currentStage\" : \"None\", \"dataset\" : null, \"description\" : null, \"experimentId\" : \"experiment-1639276018590-0001\", \"lastUpdatedTime\" : \"2021-12-12 02:27:06\", \"modelType\" : \"tensorflow\", \"name\" : \"register\", \"source\" : \"s3://submarine/experiment-1639276018590-0001/example2/1\", \"tags\" : [], \"userId\" : \"\", \"version\" : 4 }, ], \"status\" : \"OK\", \"success\" : true } Copy "},{"title":"Get a model version","type":1,"pageTitle":"Serve REST API","url":"docs/next/api/model-version#get-a-model-version","content":"GET /api/v1/model-version/{name}/{version} Example Request: curl -X GET http://127.0.0.1:32080/api/v1/model-version/register/1 Copy Example Response: { \"attributes\" : {}, \"code\" : 200, \"message\" : \"Get the model version instance\", \"result\" : { \"creationTime\" : \"2021-12-12 02:27:05\", \"currentStage\" : \"None\", \"dataset\" : null, \"description\" : null, \"experimentId\" : \"experiment-1639276018590-0001\", \"lastUpdatedTime\" : \"2021-12-12 02:27:05\", \"modelType\" : \"tensorflow\", \"name\" : \"register\", \"source\" : \"s3://submarine/experiment-1639276018590-0001/example/1\", \"tags\" : [], \"userId\" : \"\", \"version\" : 1 }, \"status\" : \"OK\", \"success\" : true } Copy "},{"title":"Patch a model version","type":1,"pageTitle":"Serve REST API","url":"docs/next/api/model-version#patch-a-model-version","content":"PATCH /api/v1/model-version Example Request: curl -X PATCH -H \"Content-Type: application/json\" -d ' { \"name\": \"register\", \"version\": 1, \"description\": \"new_description\", \"currentStage\": \"production\", \"dataset\": \"new_dataset\" }' http://127.0.0.1:32080/api/v1/model-version Copy Example Response: { \"attributes\" : {}, \"code\" : 200, \"message\" : \"Update the model version instance\", \"result\" : null, \"status\" : \"OK\", \"success\" : true } Copy "},{"title":"Delete a model version","type":1,"pageTitle":"Serve REST API","url":"docs/next/api/model-version#delete-a-model-version","content":"DELETE /api/v1/model-version/{name}/{version} Example Request curl -X DELETE http://127.0.0.1:32080/api/v1/model-version/register/1 Copy Example Response: { \"attributes\" : {}, \"code\" : 200, \"message\" : \"Delete the model version instance\", \"result\" : null, \"status\" : \"OK\", \"success\" : true } Copy "},{"title":"Create a model version tag","type":1,"pageTitle":"Serve REST API","url":"docs/next/api/model-version#create-a-model-version-tag","content":"POST /api/v1/model-version/tag?name={name}&version={version}&tag={tag} Example Request curl -X POST http://127.0.0.1:32080/api/v1/model-version/tag?name=register&version=2&tag=789 Copy Example Response: { \"attributes\" : {}, \"code\" : 200, \"message\" : \"Create a model version tag instance\", \"result\" : null, \"status\" : \"OK\", \"success\" : true } Copy "},{"title":"Delete a model version tag","type":1,"pageTitle":"Serve REST API","url":"docs/next/api/model-version#delete-a-model-version-tag","content":"DELETE /api/v1/model-version/tag?name={name}&version={version}&tag={tag} Example Request curl -X DELETE http://127.0.0.1:32080/api/v1/model-version/tag?name=register&version=2&tag=789 Copy Example Response: { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":\"Delete a registered model tag instance\", \"result\":null, \"attributes\":{} } Copy "},{"title":"Notebook REST API","type":0,"sectionRef":"#","url":"docs/next/api/notebook","content":"","keywords":""},{"title":"Create a notebook instance","type":1,"pageTitle":"Notebook REST API","url":"docs/next/api/notebook#create-a-notebook-instance","content":"POST /api/v1/notebook Example Request curl -X POST -H \"Content-Type: application/json\" -d ' { \"meta\": { \"name\": \"test-nb\", \"namespace\": \"default\", \"ownerId\": \"e9ca23d68d884d4ebb19d07889727dae\" }, \"environment\": { \"name\": \"notebook-env\" }, \"spec\": { \"envVars\": { \"TEST_ENV\": \"test\" }, \"resources\": \"cpu=1,memory=1.0Gi\" } } ' http://127.0.0.1:32080/api/v1/notebook Copy Example Response: { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":\"Create a notebook instance\", \"result\":{ \"notebookId\":\"notebook_1597931805405_0001\", \"name\":\"test-nb\", \"uid\":\"5a94c01d-6a92-4222-bc66-c610c277546d\", \"url\":\"/notebook/default/test-nb/\", \"status\":\"creating\", \"reason\":\"The notebook instance is creating\", \"createdTime\":\"2020-08-20T21:58:27.000+08:00\", \"deletedTime\":null, \"spec\":{ \"meta\":{ \"name\":\"test-nb\", \"namespace\":\"default\", \"ownerId\":\"e9ca23d68d884d4ebb19d07889727dae\" }, \"environment\":{ \"name\":\"notebook-env\", \"dockerImage\":\"apache/submarine:jupyter-notebook-0.5.0\", \"kernelSpec\":{ \"name\": \"team_default_python_3.7\", \"channels\": [ \"defaults\" ], \"dependencies\": [ \"\" ] }, \"description\":null, \"image\":null }, \"spec\":{ \"envVars\":{ \"TEST_ENV\":\"test\" }, \"resources\":\"cpu=1,memory=1.0Gi\" } } }, \"attributes\":{} } Copy "},{"title":"List notebook instances which belong to user","type":1,"pageTitle":"Notebook REST API","url":"docs/next/api/notebook#list-notebook-instances-which-belong-to-user","content":"GET /api/v1/notebook Example Request: curl -X GET http://127.0.0.1:32080/api/v1/notebook?id={user_id} Copy Example Response: { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":\"List all notebook instances\", \"result\":[ { \"notebookId\":\"notebook_1597931805405_0001\", \"name\":\"test-nb\", \"uid\":\"5a94c01d-6a92-4222-bc66-c610c277546d\", \"url\":\"/notebook/default/test-nb/\", \"status\": \"running\", \"reason\": \"The notebook instance is running\", \"createdTime\":\"2020-08-20T21:58:27.000+08:00\", \"deletedTime\":null, \"spec\":{ \"meta\":{ \"name\":\"test-nb\", \"namespace\":\"default\", \"ownerId\":\"e9ca23d68d884d4ebb19d07889727dae\" }, \"environment\":{ \"name\":\"notebook-env\", \"dockerImage\":\"apache/submarine:jupyter-notebook-0.5.0\", \"kernelSpec\":{ \"name\": \"team_default_python_3.7\", \"channels\": [ \"defaults\" ], \"dependencies\": [ \"\" ] }, \"description\":null, \"image\":null }, \"spec\":{ \"envVars\":{ \"TEST_ENV\":\"test\" }, \"resources\":\"cpu=1,memory=1.0Gi\" } } } ], \"attributes\":{} } Copy "},{"title":"Get the notebook instance","type":1,"pageTitle":"Notebook REST API","url":"docs/next/api/notebook#get-the-notebook-instance","content":"GET /api/v1/notebook/{id} Example Request: curl -X GET http://127.0.0.1:32080/api/v1/notebook/{id} Copy Example Response: { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":\"Get the notebook instance\", \"result\":{ \"notebookId\":\"notebook_1597931805405_0001\", \"name\":\"test-nb\", \"uid\":\"5a94c01d-6a92-4222-bc66-c610c277546d\", \"url\":\"/notebook/default/test-nb/\", \"status\":\"running\", \"reason\":\"The notebook instance is running\", \"createdTime\":\"2020-08-20T21:58:27.000+08:00\", \"deletedTime\":null, \"spec\":{ \"meta\":{ \"name\":\"test-nb\", \"namespace\":\"default\", \"ownerId\":\"e9ca23d68d884d4ebb19d07889727dae\" }, \"environment\":{ \"name\":\"notebook-env\", \"dockerImage\":\"apache/submarine:jupyter-notebook-0.5.0\", \"kernelSpec\":{ \"name\": \"team_default_python_3.7\", \"channels\": [ \"defaults\" ], \"dependencies\": [ \"\" ] }, \"description\":null, \"image\":null }, \"spec\":{ \"envVars\":{ \"TEST_ENV\":\"test\" }, \"resources\":\"cpu=1,memory=1.0Gi\" } } }, \"attributes\":{} } Copy "},{"title":"Delete the notebook instance","type":1,"pageTitle":"Notebook REST API","url":"docs/next/api/notebook#delete-the-notebook-instance","content":"DELETE /api/v1/notebook/{id} Example Request: curl -X DELETE http://127.0.0.1:32080/api/v1/notebook/{id} Copy Example Response: { \"status\": \"OK\", \"code\": 200, \"success\": true, \"message\": \"Delete the notebook instance\", \"result\": { \"notebookId\": \"notebook_1597931805405_0001\", \"name\": \"test-nb\", \"uid\": \"5a94c01d-6a92-4222-bc66-c610c277546d\", \"url\": \"/notebook/default/test-nb/\", \"status\": \"terminating\", \"reason\": \"The notebook instance is terminating\", \"createdTime\": \"2020-08-22T14:03:19.000+08:00\", \"deletedTime\": \"2020-08-22T14:46:28+0800\", \"spec\": { \"meta\": { \"name\": \"test-nb\", \"namespace\": \"default\", \"ownerId\":\"e9ca23d68d884d4ebb19d07889727dae\" }, \"environment\": { \"name\": \"notebook-env\", \"dockerImage\": \"apache/submarine:jupyter-notebook-0.5.0\", \"kernelSpec\": { \"name\": \"team_default_python_3.7\", \"channels\": [ \"defaults\" ], \"dependencies\": [ \"\" ] }, \"description\": null, \"image\": null }, \"spec\": { \"envVars\": { \"TEST_ENV\": \"test\" }, \"resources\": \"cpu=1,memory=1.0Gi\" } } }, \"attributes\": {} } Copy "},{"title":"Serve REST API","type":0,"sectionRef":"#","url":"docs/next/api/serve","content":"","keywords":""},{"title":"Create a model serve","type":1,"pageTitle":"Serve REST API","url":"docs/next/api/serve#create-a-model-serve","content":"POST /api/v1/serve Example Request Make sure there is a model named simple with version 1 in the database. curl -X POST -H \"Content-Type: application/json\" -d ' { \"modelName\": \"simple\", \"modelVersion\":1, } ' http://127.0.0.1:32080/api/v1/serve Copy Example Response: { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":\"Create a serve instance\", \"result\":{\"url\":null}, \"attributes\":{} } Copy "},{"title":"Delete the TensorFlow model serve","type":1,"pageTitle":"Serve REST API","url":"docs/next/api/serve#delete-the-tensorflow-model-serve","content":"DELETE /api/v1/serve Example Request curl -X DELETE -H \"Content-Type: application/json\" -d ' { \"modelName\": \"simple\", \"modelVersion\":1, } ' http://127.0.0.1:32080/api/v1/serve Copy Example Response: { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":\"Delete the model serve instance\", \"result\":null, \"attributes\":{} } Copy "},{"title":"Serve REST API","type":0,"sectionRef":"#","url":"docs/next/api/registered-model","content":"","keywords":""},{"title":"Create a registered model","type":1,"pageTitle":"Serve REST API","url":"docs/next/api/registered-model#create-a-registered-model","content":"POST /api/v1/registered-model Example Request curl -X POST -H \"Content-Type: application/json\" -d ' { \"name\": \"example_name\", \"description\": \"example_description\", \"tags\": [\"123\", \"456\"] } ' http://127.0.0.1:32080/api/v1/registered-model Copy Example Response: { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":\"Create a registered model instance\", \"result\":null, \"attributes\":{} } Copy "},{"title":"List registered models","type":1,"pageTitle":"Serve REST API","url":"docs/next/api/registered-model#list-registered-models","content":"GET /api/v1/registered-model Example Request: curl -X GET http://127.0.0.1:32080/api/v1/registered-model Copy Example Response: { \"attributes\" : {}, \"code\" : 200, \"message\" : \"List all registered model instances\", \"result\" : [ { \"creationTime\" : \"2021-12-16 10:14:06\", \"description\" : \"example_description\", \"lastUpdatedTime\" : \"2021-12-16 10:14:06\", \"name\" : \"example_name\", \"tags\" : [ \"123\", \"456\" ] }, { \"creationTime\" : \"2021-12-16 10:16:25\", \"description\" : \"example_description\", \"lastUpdatedTime\" : \"2021-12-16 10:16:25\", \"name\" : \"example_name1\", \"tags\" : [ \"123\", \"456\" ] }, { \"creationTime\" : \"2021-12-12 02:27:05\", \"description\" : null, \"lastUpdatedTime\" : \"2021-12-14 12:49:33\", \"name\" : \"register\", \"tags\" : [] } ], \"status\" : \"OK\", \"success\" : true } Copy "},{"title":"Get a registered model","type":1,"pageTitle":"Serve REST API","url":"docs/next/api/registered-model#get-a-registered-model","content":"GET /api/v1/registered-model/{name} Example Request: curl -X GET http://127.0.0.1:32080/api/v1/registered-model/example_name Copy Example Response: { \"attributes\" : {}, \"code\" : 200, \"message\" : \"Get the registered model instance\", \"result\" : { \"creationTime\" : \"2021-12-16 10:14:06\", \"description\" : \"example_description\", \"lastUpdatedTime\" : \"2021-12-16 10:14:06\", \"name\" : \"example_name\", \"tags\" : [ \"123\", \"456\" ] }, \"status\" : \"OK\", \"success\" : true } Copy "},{"title":"Patch a registered model","type":1,"pageTitle":"Serve REST API","url":"docs/next/api/registered-model#patch-a-registered-model","content":"PATCH /api/v1/registered-model/{name} Example Request: curl -X PATCH -H \"Content-Type: application/json\" -d ' { \"name\": \"new_name\", \"description\": \"new_description\" }' http://127.0.0.1:32080/api/v1/registered-model/example_name Copy Example Response: { \"attributes\" : {}, \"code\" : 200, \"message\" : \"Update the registered model instance\", \"result\" : null, \"status\" : \"OK\", \"success\" : true } Copy "},{"title":"Delete a registered model","type":1,"pageTitle":"Serve REST API","url":"docs/next/api/registered-model#delete-a-registered-model","content":"DELETE /api/v1/registered-model/{name} Example Request curl -X DELETE http://127.0.0.1:32080/api/v1/registered-model/example_name Copy Example Response: { \"attributes\" : {}, \"code\" : 200, \"message\" : \"Delete the registered model instance\", \"result\" : null, \"status\" : \"OK\", \"success\" : true } Copy "},{"title":"Create a registered model tag","type":1,"pageTitle":"Serve REST API","url":"docs/next/api/registered-model#create-a-registered-model-tag","content":"POST /api/v1/registered-model/tag?name={name}&tag={tag} Example Request curl -X POST http://127.0.0.1:32080/api/v1/registered-model/tag?name=example_name&tag=789 Copy Example Response: { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":\"Create a registered model tag instance\", \"result\":null, \"attributes\":{} } Copy "},{"title":"Delete a registered model tag","type":1,"pageTitle":"Serve REST API","url":"docs/next/api/registered-model#delete-a-registered-model-tag","content":"DELETE /api/v1/registered-model/tag?name={name}&tag={tag} Example Request curl -X DELETE http://127.0.0.1:32080/api/v1/registered-model/tag?name=example_name&tag=789 Copy Example Response: { \"attributes\" : {}, \"code\" : 200, \"message\" : \"Delete a registered model tag instance\", \"result\" : null, \"status\" : \"OK\", \"success\" : true } Copy "},{"title":"Bylaws","type":0,"sectionRef":"#","url":"docs/next/community/Bylaws","content":"This document defines the bylaws under which the Apache Submarine project operates. It defines the roles and responsibilities of the project, who may vote, how voting works, how conflicts are resolved, etc. Submarine is a project of the Apache Software Foundation. The foundation holds the trademark on the name “Submarine” and copyright on Apache code including the code in the Submarine codebase. The foundation FAQ explains the operation and background of the foundation. Submarine is typical of Apache projects in that it operates under a set of principles, known collectively as the “Apache Way”. If you are new to Apache development, please refer to the Incubator project for more information on how Apache projects operate. Roles and Responsibilities# Apache projects define a set of roles with associated rights and responsibilities. These roles govern what tasks an individual may perform within the project. The roles are defined in the following sections Users The most important participants in the project are people who use our software. The majority of our developers start out as users and guide their development efforts from the user’s perspective. Users contribute to the Apache projects by providing feedback to developers in the form of bug reports and feature suggestions. As well, users participate in the Apache community by helping other users on mailing lists and user support forums. Contributors All of the volunteers who are contributing time, code, documentation, or resources to the Submarine Project. A contributor that makes sustained, welcome contributions to the project may be invited to become a Committer, though the exact timing of such invitations depends on many factors. Committers The project’s Committers are responsible for the project’s technical management. Committers have access to all subproject subversion repositories. Committers may cast binding votes on any technical discussion regarding any subproject. Committer access is by invitation only and must be approved by consensus approval of the active PMC members. A Committer is considered emeritus by their own declaration or by not contributing in any form to the project for over six months. An emeritus committer may request reinstatement of commit access from the PMC. Such reinstatement is subject to consensus approval of active PMC members. Significant, pervasive features are often developed in a speculative branch of the repository. The PMC may grant commit rights on the branch to its consistent contributors, while the initiative is active. Branch committers are responsible for shepherding their feature into an active release and do not cast binding votes or vetoes in the project. All Apache committers are required to have a signed Contributor License Agreement (CLA) on file with the Apache Software Foundation. There is a Committer FAQ which provides more details on the requirements for Committers A committer who makes a sustained contribution to the project may be invited to become a member of the PMC. The form of contribution is not limited to code. It can also include code review, helping out users on the mailing lists, documentation, testing, etc. Release Manager A Release Manager (RM) is a committer who volunteers to produce a Release Candidate according to HowToRelease. The RM shall publish a Release Plan on the common-dev@ list stating the branch from which they intend to make a Release Candidate, at least one week before they do so. The RM is responsible for building consensus around the content of the Release Candidate, in order to achieve a successful Product Release vote. Project Management Committee The Project Management Committee (PMC) for Apache Submarine was created by the Apache Board in October 2019 when Submarine moved out of Hadoop and became a top level project at Apache. The PMC is responsible to the board and the ASF for the management and oversight of the Apache Submarine codebase. The responsibilities of the PMC include Deciding what is distributed as products of the Apache Submarine project. In particular all releases must be approved by the PMCMaintaining the project’s shared resources, including the codebase repository, mailing lists, websites.Speaking on behalf of the project.Resolving license disputes regarding products of the projectNominating new PMC members and committersMaintaining these bylaws and other guidelines of the project Membership of the PMC is by invitation only and must be approved by a consensus approval of active PMC members. A PMC member is considered “emeritus” by their own declaration or by not contributing in any form to the project for over six months. An emeritus member may request reinstatement to the PMC. Such reinstatement is subject to consensus approval of the active PMC members. The chair of the PMC is appointed by the ASF board. The chair is an office holder of the Apache Software Foundation (Vice President, Apache Submarine) and has primary responsibility to the board for the management of the projects within the scope of the Submarine PMC. The chair reports to the board quarterly on developments within the Submarine project. The chair of the PMC is rotated annually. When the chair is rotated or if the current chair of the PMC resigns, the PMC votes to recommend a new chair using Single Transferable Vote (STV) voting. See https://wiki.apache.org/general/BoardVoting for specifics. The decision must be ratified by the Apache board. Decision Making# Within the Submarine project, different types of decisions require different forms of approval. For example, the previous section describes several decisions which require “consensus approval” approval. This section defines how voting is performed, the types of approvals, and which types of decision require which type of approval. Voting Decisions regarding the project are made by votes on the primary project development mailing list (dev@submarine.apache.org). Where necessary, PMC voting may take place on the private Submarine PMC mailing list. Votes are clearly indicated by subject line starting with [VOTE]. Votes may contain multiple items for approval and these should be clearly separated. Voting is carried out by replying to the vote mail. Voting may take four flavors +1 “Yes,” “Agree,” or “the action should be performed.” In general, this vote also indicates a willingness on the behalf of the voter in “making it happen”+0 This vote indicates a willingness for the action under consideration to go ahead. The voter, however will not be able to help.-0 This vote indicates that the voter does not, in general, agree with the proposed action but is not concerned enough to prevent the action going ahead.-1 This is a negative vote. On issues where consensus is required, this vote counts as a veto. All vetoes must contain an explanation of why the veto is appropriate. Vetoes with no explanation are void. It may also be appropriate for a -1 vote to include an alternative course of action. All participants in the Submarine project are encouraged to show their agreement with or against a particular action by voting. For technical decisions, only the votes of active committers are binding. Non binding votes are still useful for those with binding votes to understand the perception of an action in the wider Submarine community. For PMC decisions, only the votes of PMC members are binding. Voting can also be applied to changes made to the Submarine codebase. These typically take the form of a veto (-1) in reply to the commit message sent when the commit is made. Approvals These are the types of approvals that can be sought. Different actions require different types of approvals Consensus Approval - Consensus approval requires 3 binding +1 votes and no binding vetoes.Lazy Consensus - Lazy consensus requires no -1 votes (‘silence gives assent’).Lazy Majority - A lazy majority vote requires 3 binding +1 votes and more binding +1 votes than -1 votes.Lazy 2⁄3 Majority - Lazy 2⁄3 majority votes requires at least 3 votes and twice as many +1 votes as -1 votes. Vetoes A valid, binding veto cannot be overruled. If a veto is cast, it must be accompanied by a valid reason explaining the reasons for the veto. The validity of a veto, if challenged, can be confirmed by anyone who has a binding vote. This does not necessarily signify agreement with the veto - merely that the veto is valid. If you disagree with a valid veto, you must lobby the person casting the veto to withdraw their veto. If a veto is not withdrawn, any action that has been vetoed must be reversed in a timely manner. Actions This section describes the various actions which are undertaken within the project, the corresponding approval required for that action and those who have binding votes over the action. Code Change A change made to a codebase of the project and committed by a committer. This includes source code, documentation, website content, etc. Consensus approval of active committers, but with a minimum of one +1. The code can be committed after the first +1, unless the code change represents a merge from a branch, in which case three +1s are required. Product Release When a release of one of the project’s products is ready, a vote is required to accept the release as an official release of the project. Lazy Majority of active PMC members Adoption of New Codebase When the codebase for an existing, released product is to be replaced with an alternative codebase. If such a vote fails to gain approval, the existing code base will continue. This also covers the creation of new sub-projects within the project Lazy 2⁄3 majority of PMC members New Branch Committer When a branch committer is proposed for the PMC Lazy consensus of active PMC members New Committer When a new committer is proposed for the project Consensus approval of active PMC members New PMC Member When a committer is proposed for the PMC Consensus approval of active PMC members Branch Committer Removal When removal of commit privileges is sought or when the branch is merged to the mainline Lazy 2⁄3 majority of active PMC members Committer Removal When removal of commit privileges is sought. Note: Such actions will also be referred to the ASF board by the PMC chair Lazy 2⁄3 majority of active PMC members (excluding the committer in question if a member of the PMC). PMC Member Removal When removal of a PMC member is sought. Note: Such actions will also be referred to the ASF board by the PMC chair. Lazy 2⁄3 majority of active PMC members (excluding the member in question) Modifying Bylaws Modifying this document. Lazy majority of active PMC members Voting Timeframes Votes are open for a period of 7 days to allow all active voters time to consider the vote. Votes relating to code changes are not subject to a strict timetable but should be made as timely as possible. Product Release - Vote Timeframe Release votes, alone, run for a period of 5 days. All other votes are subject to the above timeframe of 7 days.","keywords":""},{"title":"How to become a Committer","type":0,"sectionRef":"#","url":"docs/next/community/HowToBecomeCommitter","content":"Apache Submarine builds a community completely following Apache’s rules. Apache Committer is a term used in ASF (Apache Software Foundation) to indicate the person who submits a specific project. Apache Submarine Committer has permission to write the Submarine codebase and can merge PR. Anyone who has made enough contributions to the community and gained enough trust can become an Apache Submarine Committer. As long as anyone contributes to the Submarine project, you are the officially recognized Contributor of the Submarine project. There is no exact standard for growing from Contributor to Committer, and there is no expected timetable, but Committer candidates are generally long-term active contributors, becoming Committer does not require a huge architectural improvement contribution, or how many lines of code contribution. Contributing to the codebase, contributing to the documents, participating in the discussion of the mailing list, helping to answer questions, etc., are all ways to increase your influence. List of potential contributions (in no particular order): Submit the bugs, features, and improvements you found to the issueUpdate the official documents so that the project documents are the most recent, the best practices for writing Submarine, and various useful documents for users to analyze the features.Perform test and report test results.Actively participate in voting when the version is releasedParticipate in the discussion on the mailing list, usually there will be mails starting with [DISCUSS]Answer questions from users or developers on the mailing listReview the work of others (both code and non-code) and publish your own suggestionsReview the issues on JIRA and maintain the latest status of the issues, such as closing outdated issues, changing the issue’s error information, etc.Guide new contributors and be familiar with the community processGive speeches and blogs about Submarine, and add these to the official website of SubmarineAny contribution that is beneficial to the development of the Submarine community ...... More can refer to: ASF official documents Not everyone can complete all (or even any) items on this list. If you want to contribute in other ways, then just do it (and add them to the list). Pleasant manners and dedication are all you need to have a positive impact on the Submarine project. Inviting you to become Committer is the result of your long-term and stable interaction with the community, and the trust and recognition of the Submarine community. Committer is obliged to review and merge PRs submitted by others, test and vote on candidate versions when the version is released, participate in the discussion of feature design plans, and other types of project contributions. When you are active enough and make a bigger contribution to the community, you can be promoted to a PMC member of the Submarine project.","keywords":""},{"title":"How To Contribute to Submarine","type":0,"sectionRef":"#","url":"docs/next/community/contributing","content":"","keywords":""},{"title":"Preface","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/next/community/contributing#preface","content":"Apache Submarine is an Apache 2.0 License Software. Contributing to Submarine means you agree to the Apache 2.0 License. Please read Code of Conduct carefully.The document How It Works can help you understand Apache Software Foundation further. "},{"title":"Build Submarine","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/next/community/contributing#build-submarine","content":"Build From Code "},{"title":"Creating patches","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/next/community/contributing#creating-patches","content":"Submarine follows Fork & Pull model. "},{"title":"Step1: Fork apache/submarine github repository (first time)","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/next/community/contributing#step1-fork-apachesubmarine-github-repository-first-time","content":"Visit https://github.com/apache/submarineClick the Fork button to create a fork of the repository "},{"title":"Step2: Clone the Submarine to your local machine","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/next/community/contributing#step2-clone-the-submarine-to-your-local-machine","content":"# USERNAME – your Github user account name. git clone git@github.com:${USERNAME}/submarine.git # or: git clone https://github.com/${USERNAME}/submarine.git cd submarine # set upstream git remote add upstream git@github.com:apache/submarine.git # or: git remote add upstream https://github.com/apache/submarine.git # Don't push to the upstream master. git remote set-url --push upstream no_push # Check upstream/origin: # origin git@github.com:${USERNAME}/submarine.git (fetch) # origin git@github.com:${USERNAME}/submarine.git (push) # upstream git@github.com:apache/submarine.git (fetch) # upstream no_push (push) git remote -v Copy "},{"title":"Step3: Create a new Jira in Submarine project","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/next/community/contributing#step3-create-a-new-jira-in-submarine-project","content":"New contributors need privilege to create JIRA issues. Please email kaihsun@apache.org with your Jira username. In addition, the email title should be \"[New Submarine Contributor]\".Check Jira issue tracker for existing issues.Create a new Jira issue in Submarine project. When the issue is created, a Jira number (eg. SUBMARINE-748) will be assigned to the issue automatically. "},{"title":"Step4: Create a local branch for your contribution","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/next/community/contributing#step4-create-a-local-branch-for-your-contribution","content":"cd submarine # Make your local master up-to-date git checkout master git fetch upstream git rebase upstream/master # Create a new branch fro issue SUBMARINE-${jira_number} git checkout -b SUBMARINE-${jira_number} # Example: git checkout -b SUBMARINE-748 Copy "},{"title":"Step5: Develop & Create commits","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/next/community/contributing#step5-develop--create-commits","content":"You can edit the code on the SUBMARINE-${jira_number} branch. (Coding Style: Code Convention)Create commits git add ${edited files} git commit -m \"SUBMARINE-${jira_number}. ${Commit Message}\" # Example: git commit -m \"SUBMARINE-748. Update Contributing guide\" Copy "},{"title":"Step6: Syncing your local branch with upstream/master","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/next/community/contributing#step6-syncing-your-local-branch-with-upstreammaster","content":"# On SUBMARINE-${jira_number} branch git fetch upstream git rebase upstream/master Copy Please do not use git pull to synchronize your local branch. Because git pull does a merge to create merged commits, these will make commit history messy. "},{"title":"Step7: Push your local branch to your personal fork","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/next/community/contributing#step7-push-your-local-branch-to-your-personal-fork","content":"git push origin SUBMARINE-${jira_number} Copy "},{"title":"Step8: Check GitHub Actions status of your personal commit","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/next/community/contributing#step8-check-github-actions-status-of-your-personal-commit","content":"Visit https://github.com/${USERNAME}/submarine/actionsPlease make sure your new commits can pass all workflows before creating a pull request.  "},{"title":"Step9: Create a pull request on github UI","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/next/community/contributing#step9-create-a-pull-request-on-github-ui","content":"Visit your fork at https://github.com/${USERNAME}/submarine.gitClick Compare & Pull Request button to create pull request. Pull Request template# Pull request templateFilling the template thoroughly can improve the speed of the review process. Example:   "},{"title":"Step10: Check GitHub Actions status of your pull request in apache/submarine","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/next/community/contributing#step10-check-github-actions-status-of-your-pull-request-in-apachesubmarine","content":"Visit https://github.com/apache/submarine/actionsPlease make sure your pull request can pass all workflows.  "},{"title":"Step11: The Review Process","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/next/community/contributing#step11-the-review-process","content":"Anyone can be a reviewer and comment on the pull requests.Reviewer can indicate that a patch looks suitable for merging with a comment such as: \"Looks good\", \"LGTM\", \"+1\". (PS: LGTM = Looks Good To Me)At least one indication of suitability (e.g. \"LGTM\") from a committer is required to be merged. A committer can then initiate lazy consensus (\"Merge if there is no more discussion\") after which the code can be merged after a particular time (usually 24 hours) if there are no more reviews.Contributors can ping reviewers (including committers) by commenting 'Ready to review'. "},{"title":"Step12: Address review comments","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/next/community/contributing#step12-address-review-comments","content":"Push new commits to SUBMARINE-${jira_number} branch. The pull request will update automatically.After you address all review comments, committers will merge the pull request. "},{"title":"Code convention","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/next/community/contributing#code-convention","content":"We are following Google Code style: Java styleShell style There are some plugins to format, lint your code in IDE (use dev-support/maven-config/checkstyle.xml as rules) Checkstyle plugin for Intellij (Setting Guide)Checkstyle plugin for Eclipse (Setting Guide) "},{"title":"Guide for Apache Submarine Committers","type":0,"sectionRef":"#","url":"docs/next/community/HowToCommit","content":"","keywords":""},{"title":"New committers","type":1,"pageTitle":"Guide for Apache Submarine Committers","url":"docs/next/community/HowToCommit#new-committers","content":"New committers are encouraged to first read Apache's generic committer documentation: Apache New Committer GuideApache Committer FAQ The first act of a new core committer is typically to add their name to the credits page. This requires changing the site source inhttps://github.com/apache/submarine-site/blob/master/community/member.md. Once done, update the Submarine website as describedhere(TLDR; don't forget to regenerate the site with hugo, and commit the generated results, too). "},{"title":"Review","type":1,"pageTitle":"Guide for Apache Submarine Committers","url":"docs/next/community/HowToCommit#review","content":"Submarine committers should, as often as possible, attempt to review patches submitted by others. Ideally every submitted patch will get reviewed by a committer within a few days. If a committer reviews a patch they've not authored, and believe it to be of sufficient quality, then they can commit the patch, otherwise the patch should be cancelled with a clear explanation for why it was rejected. The list of submitted patches can be found in the GitHubPull Requests page. Committers should scan the list from top-to-bottom, looking for patches that they feel qualified to review and possibly commit. For non-trivial changes, it is best to get another committer to review & approve your own patches before commit. "},{"title":"Reject","type":1,"pageTitle":"Guide for Apache Submarine Committers","url":"docs/next/community/HowToCommit#reject","content":"Patches should be rejected which do not adhere to the guidelines inContribution Guidelines. Committers should always be polite to contributors and try to instruct and encourage them to contribute better patches. If a committer wishes to improve an unacceptable patch, then it should first be rejected, and a new patch should be attached by the committer for review. "},{"title":"Commit individual patches","type":1,"pageTitle":"Guide for Apache Submarine Committers","url":"docs/next/community/HowToCommit#commit-individual-patches","content":"Submarine uses git for source code version control. The writable repo is at -https://gitbox.apache.org/repos/asf/submarine.git It is strongly recommended to use the cicd script to merge the PRs. See the instructions athttps://github.com/apache/submarine/tree/master/dev-support/cicd "},{"title":"Adding Contributors role","type":1,"pageTitle":"Guide for Apache Submarine Committers","url":"docs/next/community/HowToCommit#adding-contributors-role","content":"There are three roles (Administrators, Committers, Contributors) in the project. Contributors who have Contributors role can become assignee of the issues in the project.Committers who have Committers role can set arbitrary roles in addition to Contributors role.Committers who have Administrators role can edit or delete all comments, or even delete issues in addition to Committers role. How to set roles Login to ASF JIRAGo to the project page (e.g. https://issues.apache.org/jira/browse/SUBMARINE )Hit \"Administration\" tabHit \"Roles\" tab in left sideAdd Administrators/Committers/Contributors role "},{"title":"How to vote a Committer or PMC","type":0,"sectionRef":"#","url":"docs/next/community/HowToVoteCommitterOrPMC","content":"","keywords":""},{"title":"The voting process of becoming a Submarine Committer or PMC","type":1,"pageTitle":"How to vote a Committer or PMC","url":"docs/next/community/HowToVoteCommitterOrPMC#the-voting-process-of-becoming-a-submarine-committer-or-pmc","content":"After the PMC members of Submarine discover any valuable contributions from the community contributors and obtain the consent of the candidate, they initiate a discussion on the private mailing list of Submarine: [DISCUSS] YYYYY as a Submarine XXXXXX In the email, the source of the candidate’s contributions should be clearly stated, so that everyone can discuss and analyze. The discussion email will last at least 72 hours, and the project team members, including the mentors, will fully express their views on the proposed email. Regardless of whether there is a disagreement, after the discussion email, the vote initiator needs to initiate a Committer or PMC vote on the private mailing list of Submarine; [VOTE] YYYYY as a Submarine XXXXXX The voting mail should last for at least 72 hours, and there should be at least 3 +1 votes to pass the vote. If there are 0 votes or one -1 vote, the entire vote will fail. If voting -1, you need to clarify the question so that everyone can understand. After the voting email is over, the vote initiator should summarize it on the voting line, remind the end of voting, and send it to the voting summary email. [RESULTS][vote] YYYYY as a Submarine XXXXXX After the vote summary email is sent, if the vote passed, the vote initiator must send an invitation email to the candidate, and the invitation email needs the candidate to reply to accept or decline through the designated mailbox. [Invitation] Invitation to join Apache Submarine as a XXXXXX The email should be sent to the candidate, and the copy is sent to private@submarine.apache.org After the candidate accepts the invitation, if the candidate does not have an apache email account, the vote initiator needs to assist the candidate to create an apache account according to the guidelines. If the above content is completed, the vote initiator still needs to do the following two things: 6.1 Apply to the project leader to add project team members, and open the authority accounts for the jira and apache projects. 6.2 Send a notification email to the dev@submarine.apache.org mail group: [ANNOUNCE] New XXXXXX: YYYYY So far, the entire process is completed, then the candidate officially becomes the Committer or PMC of Submarine. "},{"title":"Apache Submarine Community","type":0,"sectionRef":"#","url":"docs/next/community/README","content":"","keywords":""},{"title":"Communicating","type":1,"pageTitle":"Apache Submarine Community","url":"docs/next/community/README#communicating","content":"You can reach out to the community members via any one of the following ways: Slack Developer: https://join.slack.com/t/the-asf/shared_invite/zt-vlfbf7ch-HkbNHiU_uDlcH_RvaHv9gQAfter clicking the link above, you would join the ASF slack workspace, where you could search the submarine channel and join it. Zoom: https://cloudera.zoom.us/j/880548968 Sync Up: https://docs.google.com/document/d/16pUO3TP4SxSeLduG817GhVAjtiph9HYpRHo_JgduDvw/edit "},{"title":"Your First Contribution","type":1,"pageTitle":"Apache Submarine Community","url":"docs/next/community/README#your-first-contribution","content":"You can start by finding an existing issue with the https://issues.apache.org/jira/projects/SUBMARINE/issues/SUBMARINE?filter=allopenissues label. These issues are well suited for new contributors. If a PR (Pull Request) submitted to the Submarine Github projects by you is approved and merged, then you become a Submarine Contributor. If you want to work on a new idea of relatively small scope: Submit an issue describing your proposed change to the repo in question. The repo owners will respond to your issue promptly. Submit a pull request of Submarine containing a tested change. Contributions are welcomed and greatly appreciated. See CONTRIBUTING for details on submitting patches and the contribution workflow. "},{"title":"How Do I Become a Committer?","type":1,"pageTitle":"Apache Submarine Community","url":"docs/next/community/README#how-do-i-become-a-committer","content":"First of all, you need to get involved and be a Contributor. Based on your track-record as a contributor, Per Apache code, PMCs vote on committership, may invite you to be a committer (after we've called a vote). When that happens, if you accept, the following process kicks into place... Note that becoming a committer is not just about submitting some patches; it‘s also about helping out on the development and user, helping with documentation and the issues. See How to become an Apache Submarine Committer and PMC for more details. "},{"title":"How to commit","type":1,"pageTitle":"Apache Submarine Community","url":"docs/next/community/README#how-to-commit","content":"See How to commit for helper doc for Submarine committers. "},{"title":"Communication","type":1,"pageTitle":"Apache Submarine Community","url":"docs/next/community/README#communication","content":"Communication within the Submarine community abides by Apache’s Code of Conduct. "},{"title":"Mailing lists","type":1,"pageTitle":"Apache Submarine Community","url":"docs/next/community/README#mailing-lists","content":"Get help using Apache Submarine or contribute to the project on our mailing lists: Users : subscribe, unsubscribe, archivesfor usage questions, help, and announcements.Dev : subscribe, unsubscribe, archivesfor people wanting to contribute to the project.Commits : subscribe, unsubscribe, archivesfor commit messages and patches. Take subscribe Dev as an example, you should send an email to dev-subscribe@submarine.apache.org. Usually, this happens when you just click the \"subscribe\" link. If this does not work, simply copy the address and paste it into the \"To:\" field of a new message. After that, you will get an email from dev-help@submarine.apache.org, follow the directives of the mail to reply, then you will subscribe dev@submarine.apache.org successfully. "},{"title":"License","type":1,"pageTitle":"Apache Submarine Community","url":"docs/next/community/README#license","content":"Submarine source code is under the Apache 2.0 license. See the LICENSE file for details. "},{"title":"Architecture and Requirment","type":0,"sectionRef":"#","url":"docs/next/designDocs/architecture-and-requirements","content":"","keywords":""},{"title":"Terminology","type":1,"pageTitle":"Architecture and Requirment","url":"docs/next/designDocs/architecture-and-requirements#terminology","content":"Term\tDescriptionUser\tA single data-scientist/data-engineer. User has resource quota, credentials Team\tUser belongs to one or more teams, teams have ACLs for artifacts sharing such as notebook content, model, etc. Admin\tAlso called SRE, who manages user's quotas, credentials, team, and other components. "},{"title":"Background","type":1,"pageTitle":"Architecture and Requirment","url":"docs/next/designDocs/architecture-and-requirements#background","content":"Everybody talks about machine learning today, and lots of companies are trying to leverage machine learning to push the business to the next level. Nowadays, as more and more developers, infrastructure software companies coming to this field, machine learning becomes more and more achievable. In the last decade, the software industry has built many open source tools for machine learning to solve the pain points: It was not easy to build machine learning algorithms manually, such as logistic regression, GBDT, and many other algorithms:Answer to that: Industries have open sourced many algorithm libraries, tools, and even pre-trained models so that data scientists can directly reuse these building blocks to hook up to their data without knowing intricate details inside these algorithms and models. It was not easy to achieve \"WYSIWYG, what you see is what you get\" from IDEs: not easy to get output, visualization, troubleshooting experiences at the same place.Answer to that: Notebooks concept was added to this picture, notebook brought the experiences of interactive coding, sharing, visualization, debugging under the same user interface. There're popular open-source notebooks like Apache Zeppelin/Jupyter. It was not easy to manage dependencies: ML applications can run on one machine is hard to deploy on another machine because it has lots of libraries dependencies.Answer to that: Containerization becomes popular and a standard to packaging dependencies to make it easier to \"build once, run anywhere\". Fragmented tools, libraries were hard for ML engineers to learn. Experiences learned in one company are not naturally migratable to another company.Answer to that: A few dominant open-source frameworks reduced the overhead of learning too many different frameworks, concepts. Data-scientist can learn a few libraries such as Tensorflow/PyTorch, and a few high-level wrappers like Keras will be able to create your machine learning application from other open-source building blocks. Similarly, models built by one library (such as libsvm) were hard to be integrated into machine learning pipeline since there's no standard format.Answer to that: Industry has built successful open-source standard machine learning frameworks such as Tensorflow/PyTorch/Keras so their format can be easily shared across. And efforts to build an even more general model format such as ONNX. It was hard to build a data pipeline that flows/transform data from a raw data source to whatever required by ML applications.Answer to that: Open source big data industry plays an important role in providing, simplify, unify processes and building blocks for data flows, transformations, etc. The machine learning industry is moving on the right track to solve major roadblocks. So what are the pain points now for companies which have machine learning needs? What can we help here? To answer this question, let's look at machine learning workflow first. "},{"title":"Machine Learning Workflows & Pain points","type":1,"pageTitle":"Architecture and Requirment","url":"docs/next/designDocs/architecture-and-requirements#machine-learning-workflows--pain-points","content":"1) From different data sources such as edge, clickstream, logs, etc. => Land to data lakes 2) From data lake, data transformation: => Data transformations: Cleanup, remove invalid rows/columns, select columns, sampling, split train/test data-set, join table, etc. => Data prepared for training. 3) From prepared data: => Training, model hyper-parameter tuning, cross-validation, etc. => Models saved to storage. 4) From saved models: => Model assurance, deployment, A/B testing, etc. => Model deployed for online serving or offline scoring. Copy Typically data scientists responsible for item 2)-4), 1) typically handled by a different team (called Data Engineering team in many companies, some Data Engineering team also responsible for part of data transformation) "},{"title":"Pain #1 Complex workflow/steps from raw data to model, different tools needed by different steps, hard to make changes to workflow, and not error-proof","type":1,"pageTitle":"Architecture and Requirment","url":"docs/next/designDocs/architecture-and-requirements#pain-1-complex-workflowsteps-from-raw-data-to-model-different-tools-needed-by-different-steps-hard-to-make-changes-to-workflow-and-not-error-proof","content":"It is a complex workflow from raw data to usable models, after talking to many different data scientists, we have learned that a typical procedure to train a new model and push to production can take months to 1-2 years. It is also a wide skill set required by this workflow. For example, data transformation needs tools like Spark/Hive for large scale and tools like Pandas for a small scale. And model training needs to be switched between XGBoost, Tensorflow, Keras, PyTorch. Building a data pipeline requires Apache Airflow or Oozie. Yes, there are great, standardized open-source tools built for many of such purposes. But how about changes need to be made for a particular part of the data pipeline? How about adding a few columns to the training data for experiments? How about training models, and push models to validation, A/B testing before rolling to production? All these steps need jumping between different tools, UIs, and very hard to make changes, and it is not error-proof during these procedures. "},{"title":"Pain #2 Dependencies of underlying resource management platform","type":1,"pageTitle":"Architecture and Requirment","url":"docs/next/designDocs/architecture-and-requirements#pain-2-dependencies-of-underlying-resource-management-platform","content":"To make jobs/services required by a machine learning platform to be able to run, we need an underlying resource management platform. There're some choices of resource management platform, and they have distinct advantages and disadvantages. For example, there're many machine learning platform built on top of K8s. It is relatively easy to get a K8s from a cloud vendor, easy to orchestrate machine learning required services/daemons run on K8s. However, K8s doesn't offer good support jobs like Spark/Flink/Hive. So if your company has Spark/Flink/Hive running on YARN, there're gaps and a significant amount of work to move required jobs from YARN to K8s. Maintaining a separate K8s cluster is also overhead to Hadoop-based data infrastructure. Similarly, if your company's data pipelines are mostly built on top of cloud resources and SaaS offerings, asking you to install a separate YARN cluster to run a new machine learning platform doesn't make a lot of sense. "},{"title":"Pain #3 Data scientist are forced to interact with lower-level platform components","type":1,"pageTitle":"Architecture and Requirment","url":"docs/next/designDocs/architecture-and-requirements#pain-3-data-scientist-are-forced-to-interact-with-lower-level-platform-components","content":"In addition to the above pain, we do see Data Scientists are forced to learn underlying platform knowledge to be able to build a real-world machine learning workflow. For most of the data scientists we talked with, they're experts of ML algorithms/libraries, feature engineering, etc. They're also most familiar with Python, R, and some of them understand Spark, Hive, etc. If they're asked to do interactions with lower-level components like fine-tuning a Spark job's performance; or troubleshooting job failed to launch because of resource constraints; or write a K8s/YARN job spec and mount volumes, set networks properly. They will scratch their heads and typically cannot perform these operations efficiently. "},{"title":"Pain #4 Comply with data security/governance requirements","type":1,"pageTitle":"Architecture and Requirment","url":"docs/next/designDocs/architecture-and-requirements#pain-4-comply-with-data-securitygovernance-requirements","content":"TODO: Add more details. "},{"title":"Pain #5 No good way to reduce routine ML code development","type":1,"pageTitle":"Architecture and Requirment","url":"docs/next/designDocs/architecture-and-requirements#pain-5-no-good-way-to-reduce-routine-ml-code-development","content":"After the data is prepared, the data scientist needs to do several routine tasks to build the ML pipeline. To get a sense of the existing the data set, it usually needs a split of the data set, the statistics of data set. These tasks have a common duplicate part of code, which reduces the efficiency of data scientists. An abstraction layer/framework to help the developer to boost ML pipeline development could be valuable. It's better than the developer only needs to fill callback function to focus on their key logic. Submarine# "},{"title":"Overview","type":1,"pageTitle":"Architecture and Requirment","url":"docs/next/designDocs/architecture-and-requirements#overview","content":""},{"title":"A little bit history","type":1,"pageTitle":"Architecture and Requirment","url":"docs/next/designDocs/architecture-and-requirements#a-little-bit-history","content":"Initially, Submarine is built to solve problems of running deep learning jobs like Tensorflow/PyTorch on Apache Hadoop YARN, allows admin to monitor launched deep learning jobs, and manage generated models. It was part of YARN initially, and code resides under hadoop-yarn-applications. Later, the community decided to convert it to be a subproject within Hadoop (Sibling project of YARN, HDFS, etc.) because we want to support other resource management platforms like K8s. And finally, we're reconsidering Submarine's charter, and the Hadoop community voted that it is the time to moved Submarine to a separate Apache TLP. "},{"title":"Why Submarine?","type":1,"pageTitle":"Architecture and Requirment","url":"docs/next/designDocs/architecture-and-requirements#why-submarine","content":"ONE PLATFORM Submarine is the ONE PLATFORM to allow Data Scientists to create end-to-end machine learning workflow. ONE PLATFORM means it supports Data Scientists and data engineers to finish their jobs on the same platform without frequently switching their toolsets. From dataset exploring data pipeline creation, model training, and tuning, and push model to production. All these steps can be completed within the ONE PLATFORM. Resource Management Independent It is also designed to be resource management independent, no matter if you have Apache Hadoop YARN, K8s, or just a container service, you will be able to run Submarine on top it. "},{"title":"Requirements and non-requirements","type":1,"pageTitle":"Architecture and Requirment","url":"docs/next/designDocs/architecture-and-requirements#requirements-and-non-requirements","content":""},{"title":"Notebook","type":1,"pageTitle":"Architecture and Requirment","url":"docs/next/designDocs/architecture-and-requirements#notebook","content":"1) Users should be able to create, edit, delete a notebook. (P0) 2) Notebooks can be persisted to storage and can be recovered if failure happens. (P0) 3) Users can trace back to history versions of a notebook. (P1) 4) Notebooks can be shared with different users. (P1) 5) Users can define a list of parameters of a notebook (looks like parameters of the notebook's main function) to allow executing a notebook like a job. (P1) 6) Different users can collaborate on the same notebook at the same time. (P2) A running notebook instance is called notebook session (or session for short). "},{"title":"Experiment","type":1,"pageTitle":"Architecture and Requirment","url":"docs/next/designDocs/architecture-and-requirements#experiment","content":"Experiments of Submarine is an offline task. It could be a shell command, a Python command, a Spark job, a SQL query, or even a workflow. The primary purposes of experiments under Submarine's context is to do training tasks, offline scoring, etc. However, experiment can be generalized to do other tasks as well. Major requirement of experiment: 1) Experiments can be submitted from UI/CLI/SDK. 2) Experiments can be monitored/managed from UI/CLI/SDK. 3) Experiments should not bind to one resource management platform (K8s). Type of experiments#  There're two types of experiments:Adhoc experiments: which includes a Python/R/notebook, or even an adhoc Tensorflow/PyTorch task, etc. Predefined experiment library: This is specialized experiments, which including developed libraries such as CTR, BERT, etc. Users are only required to specify a few parameters such as input, output, hyper parameters, etc. Instead of worrying about where's training script/dependencies located. Adhoc experiment# Requirements: Allow run adhoc scripts.Allow model engineer, data scientist to run Tensorflow/Pytorch programs on K8s/Container-cloud.Allow jobs easy access data/models in HDFS/s3, etc.Support run distributed Tensorflow/Pytorch jobs with simple configs.Support run user-specified Docker images.Support specify GPU and other resources. Predefined experiment library# Here's an example of predefined experiment library to train deepfm model: { \"input\": { \"train_data\": [\"hdfs:///user/submarine/data/tr.libsvm\"], \"valid_data\": [\"hdfs:///user/submarine/data/va.libsvm\"], \"test_data\": [\"hdfs:///user/submarine/data/te.libsvm\"], \"type\": \"libsvm\" }, \"output\": { \"save_model_dir\": \"hdfs:///user/submarine/deepfm\", \"metric\": \"auc\" }, \"training\": { \"batch_size\" : 512, \"field_size\": 39, \"num_epochs\": 3, \"feature_size\": 117581, ... } } Copy Predefined experiment libraries can be shared across users on the same platform, users can also add new or modified predefined experiment library via UI/REST API. We will also model AutoML, auto hyper-parameter tuning to predefined experiment library. Pipeline# Pipeline is a special kind of experiment: A pipeline is a DAG of experiments.Can be also treated as a special kind of experiment.Users can submit/terminate a pipeline.Pipeline can be created/submitted via UI/API. "},{"title":"Environment Profiles","type":1,"pageTitle":"Architecture and Requirment","url":"docs/next/designDocs/architecture-and-requirements#environment-profiles","content":"Environment profiles (or environment for short) defines a set of libraries and when Docker is being used, a Docker image in order to run an experiment or a notebook. Docker or VM image (such as AMI: Amazon Machine Images) defines the base layer of the environment. On top of that, users can define a set of libraries (such as Python/R) to install. Users can save different environment configs which can be also shared across the platform. Environment profiles can be used to run a notebook (e.g. by choosing different kernel from Jupyter), or an experiment. Predefined experiment library includes what environment to use so users don't have to choose which environment to use. Environments can be added/listed/deleted/selected through CLI/SDK. "},{"title":"Model","type":1,"pageTitle":"Architecture and Requirment","url":"docs/next/designDocs/architecture-and-requirements#model","content":"Model management# Model artifacts are generated by experiments or notebook.A model consists of artifacts from one or multiple files.Users can choose to save, tag, version a produced model.Once The Model is saved, Users can do the online model serving or offline scoring of the model. Model serving# After model saved, users can specify a serving script, a model and create a web service to serve the model. We call the web service to \"endpoint\". Users can manage (add/stop) model serving endpoints via CLI/API/UI. "},{"title":"Metrics for training job and model","type":1,"pageTitle":"Architecture and Requirment","url":"docs/next/designDocs/architecture-and-requirements#metrics-for-training-job-and-model","content":"Submarine-SDK provides tracking/metrics APIs, which allows developers to add tracking/metrics and view tracking/metrics from Submarine Workbench UI. "},{"title":"Deployment","type":1,"pageTitle":"Architecture and Requirment","url":"docs/next/designDocs/architecture-and-requirements#deployment","content":"Submarine Services (See architecture overview below) should be deployed easily on-prem / on-cloud. Since there're more and more public cloud offering for compute/storage management on cloud, we need to support deploy Submarine compute-related workloads (such as notebook session, experiments, etc.) to cloud-managed clusters. This also include Submarine may need to take input parameters from customers and create/manage clusters if needed. It is also a common requirement to use hybrid of on-prem/on-cloud clusters. "},{"title":"Security / Access Control / User Management / Quota Management","type":1,"pageTitle":"Architecture and Requirment","url":"docs/next/designDocs/architecture-and-requirements#security--access-control--user-management--quota-management","content":"There're 4 kinds of objects need access-control: Assets belong to Submarine system, which includes notebook, experiments and results, models, predefined experiment libraries, environment profiles.Data security. (Who owns what data, and what data can be accessed by each users).User credentials. (Such as LDAP).Other security, such as Git repo access, etc. For the data security / user credentials / other security, it will be delegated to 3rd libraries such as Apache Ranger, IAM roles, etc. Assets belong to Submarine system will be handled by Submarine itself. Here're operations which Submarine admin can do for users / teams which can be used to access Submarine's assets. Operations for admins Admin uses \"User Management System\" to onboard new users, upload user credentials, assign resource quotas, etc.Admins can create new users, new teams, update user/team mappings. Or remove users/teams.Admin can set resource quotas (if different from system default), permissions, upload/update necessary credentials (like Kerberos keytab) of a user.A DE/DS can also be an admin if the DE/DS has admin access. (Like a privileged user). This will be useful when a cluster is exclusively shared by a user or only shared by a small team.Resource Quota Management System helps admin to manage resources quotas of teams, organizations. Resources can be machine resources like CPU/Memory/Disk, etc. It can also include non-machine resources like $$-based budgets. "},{"title":"Dataset","type":1,"pageTitle":"Architecture and Requirment","url":"docs/next/designDocs/architecture-and-requirements#dataset","content":"There's also need to tag dataset which will be used for training and shared across the platform by different users. Like mentioned above, access to the actual data will be handled by 3rd party system like Apache Ranger / Hive Metastore which is out of the Submarine's scope. "},{"title":"Architecture Overview","type":1,"pageTitle":"Architecture and Requirment","url":"docs/next/designDocs/architecture-and-requirements#architecture-overview","content":""},{"title":"Architecture Diagram","type":1,"pageTitle":"Architecture and Requirment","url":"docs/next/designDocs/architecture-and-requirements#architecture-diagram","content":" +-----------------------------------------------------------------+ | Submarine UI / CLI / REST API / SDK | | Mini-Submarine | +-----------------------------------------------------------------+ +--------------------Submarine Server-----------------------------+ | +---------+ +---------+ +----------+ +----------+ +------------+| | |Data set | |Notebooks| |Experiment| |Models | |Servings || | +---------+ +---------+ +----------+ +----------+ +------------+| |-----------------------------------------------------------------| | | | +-----------------+ +-----------------+ +---------------------+ | | |Experiment | |Compute Resource | |Other Management | | | |Manager | | Manager | |Services | | | +-----------------+ +-----------------+ +---------------------+ | | Spark, template K8s/Docker | | TF, PyTorch, pipeline | | | + +-----------------+ + | |Submarine Meta | | | | Store | | | +-----------------+ | | | +-----------------------------------------------------------------+ (You can use http://stable.ascii-flow.appspot.com/#Draw to draw such diagrams) Copy Compute Resource Manager Helps to manage compute resources on-prem/on-cloud, this module can also handle cluster creation / management, etc. Experiment Manager Work with \"Compute Resource Manager\" to submit different kinds of workloads such as (distributed) Tensorflow / Pytorch, etc. Submarine SDK provides Java/Python/REST API to allow DS or other engineers to integrate into Submarine services. It also includes a mini-submarine component that launches Submarine components from a single Docker container (or a VM image). Details of Submarine Server design can be found at submarine-server-design. "},{"title":"Environments Implementation","type":0,"sectionRef":"#","url":"docs/next/designDocs/environments-implementation","content":"","keywords":""},{"title":"Overview","type":1,"pageTitle":"Environments Implementation","url":"docs/next/designDocs/environments-implementation#overview","content":"Environment profiles (or environment for short) defines a set of libraries and when Docker is being used, a Docker image in order to run an experiment or a notebook. Docker and/or VM-image (such as, VirtualBox/VMWare images, Amazon Machine Images - AMI, Or custom image of Azure VM) defines the base layer of the environment. Please note that VM-image is different from VM instance type, On top of that, users can define a set of libraries (such as Python/R) to install, we call it kernel. Example of Environment  +-------------------+ |+-----------------+| || Python=3.7 || || Tensorflow=2.0 || |+---Exp Dependency+| |+-----------------+| ||OS=Ubuntu16.04 || ||CUDA=10.2 || ||GPU_Driver=375.. || |+---Base Library--+| +-------------------+ Copy As you can see, There're base libraries, such as what OS, CUDA version, GPU driver, etc. They can be achieved by specifying a VM-image / Docker image. On top of that, user can bring their dependencies, such as different version of Python, Tensorflow, Pandas, etc. How users use environment? Users can save different environment configs which can be also shared across the platform. Environment profiles can be used to run a notebook (e.g. by choosing different kernel from Jupyter), or an experiment. Predefined experiment library includes what environment to use so users don't have to choose which environment to use.  +-------------------+ |+-----------------+| +------------+ || Python=3.7 || |User1 | || Tensorflow=2.0 || +------------+ |+---Kernel -------+| +------------+ |+-----------------+|<----+ |User2 | ||OS=Ubuntu16.04 || + +------------+ ||CUDA=10.2 || | +------------+ ||GPU_Driver=375.. || | |User3 | |+---Base Library--+| | +------------+ +-----Default-Env---+ | | | +-------------------+ | |+-----------------+| | || Python=3.3 || | || Tensorflow=2.0 || | |+---kernel--------+| | |+-----------------+| | ||OS=Ubuntu16.04 || | ||CUDA=10.3 ||<----+ ||GPU_Driver=375.. || |+---Base Library--+| +-----My-Customized-+ Copy There're two environments in the above graph, \"Default-Env\" and \"My-Customized\", which can have different combinations of libraries for different experiments/notebooks. Users can choose different environments for different experiments as they want. Environments can be added/listed/deleted/selected through CLI/SDK/UI. Implementation# "},{"title":"Environment API definition","type":1,"pageTitle":"Environments Implementation","url":"docs/next/designDocs/environments-implementation#environment-api-definition","content":"Let look at what object definition looks like to define an environment, API of environment looks like:  name: \"my_submarine_env\", vm-image: \"...\", docker-image: \"...\", kernel: <object of kernel> description: \"this is the most common env used by team ABC\" Copy vm-image is optional if we don't need to launch new VM (like running a training job in a cloud-remote machine). docker-image is requiredkernel could be optional if kernel is already included by vm-image or docker-image.name of the environment should be unique in the system, so user can reference it when create a new experiment/notebook. "},{"title":"VM-image and Docker-image","type":1,"pageTitle":"Environments Implementation","url":"docs/next/designDocs/environments-implementation#vm-image-and-docker-image","content":"Docker-image and VM image should be prepared by system admin / SREs, it is hard for Data-Scientists to write an error-proof Dockerfile, and push/manage Docker images. This is one of the reason we hide Docker-image inside \"environment\", we will encourage users to customize their kernels if needed, but don't have to touch Dockerfile and build/push/manage new Docker images. As a project, we will document what's the best practice and example of Dockerfiles. Dockerfile should include proper ENTRYPOINT definition which pointed to our default script, so no matter it is notebook, or an experiment, we will setup kernel (see below) and other environment variables properly. "},{"title":"Kernel Implementation","type":1,"pageTitle":"Environments Implementation","url":"docs/next/designDocs/environments-implementation#kernel-implementation","content":"After investigating different alternatives (such as pipenv, venv, etc.), we decided to use Conda environment which nicely replaces Python virtual env, pip, and can also support other languages. More details can be found at: https://medium.com/@krishnaregmi/pipenv-vs-virtualenv-vs-conda-environment-3dde3f6869ed When once Conda, users can easily add, remove dependency of a Conda environment. User can also easily export environment to yaml file. The yaml file of Conda environment by using conda env export looks like: name: base channels: - defaults dependencies: - _ipyw_jlab_nb_ext_conf=0.1.0=py37_0 - alabaster=0.7.12=py37_0 - anaconda=2020.02=py37_0 - anaconda-client=1.7.2=py37_0 - anaconda-navigator=1.9.12=py37_0 - anaconda-project=0.8.4=py_0 - applaunchservices=0.2.1=py_0 Copy Including Conda kernel, the environment object may look like: name: \"my_submarine_env\", vm-image: \"...\", docker-image: \"...\", kernel: name: team_default_python_3.7 channels: - defaults dependencies: - _ipyw_jlab_nb_ext_conf=0.1.0=py37_0 - alabaster=0.7.12=py37_0 - anaconda=2020.02=py37_0 - anaconda-client=1.7.2=py37_0 - anaconda-navigator=1.9.12=py37_0 Copy When launch a new experiment / notebook session using the my_submarine_env, submarine server will use defined Docker image, and Conda kernel to launch of container. "},{"title":"Storage of Environment","type":1,"pageTitle":"Environments Implementation","url":"docs/next/designDocs/environments-implementation#storage-of-environment","content":"Environment of Submarine is just a simple text file, so it will be persisted in Submarine metastore, which is ideally a Database. Docker image is stored inside a regular Docker registry, which will be handled outside of the system. Conda dependencies are stored in Conda channel (where referenced packages are stored), which will be handled/setuped separately. (Popular conda channels are default and conda-forge) For more detailed discussion about storage-related implementations, please refer to storage-implementation. "},{"title":"How to implement to make user can easily use Submarine environments?","type":1,"pageTitle":"Environments Implementation","url":"docs/next/designDocs/environments-implementation#how-to-implement-to-make-user-can-easily-use-submarine-environments","content":"We like simplicities, and we don't want to leak complexities of implementations to the users. To make it happen, we have to do some works to hide complexities. There're two primary uses of environments: experiments and notebook, for both of them, users should not do works like explictily call conda active $env_name to active environments. To make it happen, what we can do is to include following parts in Dockerfile FROM ubuntu:18.04 <Include whatever base-libraries like CUDA, etc.> <Make sure conda (with our preferred version) is installed> <Make sure Jupyter (with our preferred version) is installed> # This is just a sample of Dockerfile, users can do more customizations if needed ENTRYPOINT [\"/submarine-bootstrap.sh\"] Copy When Submarine Server (this is implementation detail of Submarine Server, user will not see it at all) launch an experiment, or notebook, it will invoke following docker run command (or any other equvilant like using K8s spec): docker run <submarine_docker_image> --kernel <kernel_name> -- .... python train.py --batch_size 5 (and other parameters) Copy Similarily, to launch a notebook: docker run <submarine_docker_image> --kernel <kernel_name> -- .... jupyter Copy The submarine-bootstrap.sh is part of Submarine repo, and will handle --kernel argument which will invoke conda active $kernel_name before anything else. (Like run the training job). "},{"title":"Implementation Notes","type":0,"sectionRef":"#","url":"docs/next/designDocs/implementation-notes","content":"Before digging into details of implementations, you should read architecture-and-requirements first to understand overall requirements and architecture. Here're sub topics of Submarine implementations: Submarine Storage: How to store metadata, logs, metrics, etc. of Submarine.Submarine Environment: How environments created, managed, stored in Submarine.Submarine Experiment: How experiments managed, stored, and how the predefined experiment template works.Submarine Notebook: How experiments managed, stored, and how the predefined experiment template works.Submarine Server: How Submarine server is designed, architecture, implementation notes, etc. Working-in-progress designs, Below are designs which are working-in-progress, we will move them to the upper section once design & review is finished: Submarine HA Design: How Submarine HA can be achieved, using RAFT, etc.Submarine services deployment module: How to deploy submarine services to k8s or cloud.","keywords":""},{"title":"Notebook Implementation","type":0,"sectionRef":"#","url":"docs/next/designDocs/notebook-implementation","content":"","keywords":""},{"title":"Overview","type":1,"pageTitle":"Notebook Implementation","url":"docs/next/designDocs/notebook-implementation#overview","content":""},{"title":"User's interaction","type":1,"pageTitle":"Notebook Implementation","url":"docs/next/designDocs/notebook-implementation#users-interaction","content":"Users can start N (N >= 0) number of Notebook sessions, a notebook session is a running notebook instance. Notebook session can be launched by Submarine UI (P0), and Submarine CLI (P2). When launch notebook session, users can choose T-shirt size of notebook session (how much mem/cpu/gpu resources, or resource profile such as small, medium, large, etc.). (P0)And user can choose an environment for notebook. More details please refer to environment implementation (P0)When start a notebook, user can choose what code to be initialized, similar to experiment. (P1)Optionally, users can choose to attach a persistent volume to a notebook session. (P2) Users can get a list of notebook sessions belongs to themselves, and connect to notebook session. User can choose to terminate a running notebook session. "},{"title":"Admin's interaction","type":1,"pageTitle":"Notebook Implementation","url":"docs/next/designDocs/notebook-implementation#admins-interaction","content":"How many concurrent notebook sessions can be launched by each user is determined by resource quota limits of each user, and maximum concurrent notebook sessions can be launched by each user. (P2) "},{"title":"Relationship with other components","type":1,"pageTitle":"Notebook Implementation","url":"docs/next/designDocs/notebook-implementation#relationship-with-other-components","content":""},{"title":"Metadata store","type":1,"pageTitle":"Notebook Implementation","url":"docs/next/designDocs/notebook-implementation#metadata-store","content":"Running notebook sessions' metadata need persistented in Submarine's metadata store (Database). "},{"title":"Submarine Server","type":1,"pageTitle":"Notebook Implementation","url":"docs/next/designDocs/notebook-implementation#submarine-server","content":" +--------------+ +--------Submarine Server--------------------+ |Submarine UI | | +-------------------+ | | |+---> Submarine | | | Notebook | | | Notebook REST API| | +--------------+ | | | | | +--------+----------+ +--------------+ | | | +->|Metastore | | | +--------v----------+ | |DB | | | | Submarine +--+ +--------------+ | | | Notebook Mgr | | | | | | | | | | | +--------+----------+ | | | | +----------|---------------------------------+ | +--------------+ +--------v---------+ | Notebook Session | | | | instance | | | +------------------+ Copy Once user use Submarine UI to launch a notebook session, Submarine notebook manager inside Submarine Server will persistent notebook session's metadata, and launch a new notebook session instance. "},{"title":"Resource manager","type":1,"pageTitle":"Notebook Implementation","url":"docs/next/designDocs/notebook-implementation#resource-manager","content":"When using K8s as resource manager, Submarine notebook session will run as a new POD. "},{"title":"Storage","type":1,"pageTitle":"Notebook Implementation","url":"docs/next/designDocs/notebook-implementation#storage","content":"There're several different types of storage requirements for Submarine notebook. For code, environment, etc, storage, please refer to storage implementation, check \"Localization of experiment/notebook/model-serving code\". When there're needs to attach volume (such as user's home folder) to Submarine notebook session, please check storage implementation, check \"Attachable volume\". "},{"title":"Environment","type":1,"pageTitle":"Notebook Implementation","url":"docs/next/designDocs/notebook-implementation#environment","content":"Submarine notebook's environment should be used to run experiment, model serving, etc. Please check environment implementation. (More specific to notebook, please check \"How to implement to make user can easily use Submarine environments\") Please note that notebook's Environment should include right version of notebook libraries, and admin should follow the guidance to build correct Docker image, Conda libraries to correctly run Notebook. "},{"title":"Submarine SDK (For Experiment, etc.)","type":1,"pageTitle":"Notebook Implementation","url":"docs/next/designDocs/notebook-implementation#submarine-sdk-for-experiment-etc","content":"Users can run new experiment, access metrics information, or do model operations using Submarine SDK. Submarine SDK is a Python library which can talk to Submarine Server which need Submarine Server's endpoint as well as user credentials. To ensure better experience, we recommend always install proper version of Submarine SDK from environment which users can use Submarine SDK directly from commandline. (We as Submarine community can provide sample Dockerfile or Conda environment which have correct base libraries installed for Submarine SDK). Submarine Server IP will be configured automatically by Submarine Server, and added as an envar when Submarine notebook session got launched. "},{"title":"Security","type":1,"pageTitle":"Notebook Implementation","url":"docs/next/designDocs/notebook-implementation#security","content":"Please refer to Security Implementation Once user accessed to a running notebook session, the user can also access resources of the notebook, capability of submit new experiment, and access data. This is also very dangerous so we have to protect it. A simple solution is to use token-based authentication https://jupyter-notebook.readthedocs.io/en/stable/security.html. A more common way is to use solutions like KNOX to support SSO. We need expand this section to more details. (TODO). "},{"title":"Storage Implementation","type":0,"sectionRef":"#","url":"docs/next/designDocs/storage-implementation","content":"","keywords":""},{"title":"ML-related objects and their storages","type":1,"pageTitle":"Storage Implementation","url":"docs/next/designDocs/storage-implementation#ml-related-objects-and-their-storages","content":"First let's look at what user will interact for most of the time: Notebook ExperimentModel Servings  +---------+ +------------+ |Logs |<--+|Notebook | +----------+ +---------+ +------------+ +----------------+ |Trackings | <-+|Experiment |<--+>|Model Artifacts | +----------+ +-----------------+ +------------+ +----------------+ +----------+<---+|ML-related Metric|<--+Servings | |tf.events | +-----------------+ +------------+ +----------+ ^ +-----------------+ + | Environments | +----------------------+ | | +-----------------+ | Submarine Metastore | | Dependencies | |Code | +----------------------+ | | +-----------------+ |Experiment Meta | | Docker Images | +----------------------+ +-----------------+ |Model Store Meta | +----------------------+ |Model Serving Meta | +----------------------+ |Notebook meta | +----------------------+ |Experiment Templates | +----------------------+ |Environments Meta | +----------------------+ Copy First of all, all the notebook-sessions / experiments / model-serving instances) are more or less interact with following storage objects: Logs for these tasks for troubleshooting. ML-related metrics such as loss, epoch, etc. (in contrast of system metrics such as CPU/memory usage, etc.) There're different types of ML-related metrics, for Tensorflow/pytorch, they can use tf.events and get visualizations on tensorboard. Or they can use tracking APIs (such as Submarine tracking, mlflow tracking, etc.) to output customized tracking results for non TF/Pytorch workloads. Training jobs of experiment typically generate model artifacts (files) which need persisted, and both of notebook, model serving needs to load model artifacts from persistent storage. There're various of meta information, such as experiment meta, model registry, model serving, notebook, experiment, environment, etc. We need be able to read these meta information back.We also have code for experiment (like training/batch-prediction), notebook (ipynb), and model servings.And notebook/experiments/model-serving need depend on environments (dependencies such as pip, and Docker Images). "},{"title":"Implementation considerations for ML-related objects","type":1,"pageTitle":"Storage Implementation","url":"docs/next/designDocs/storage-implementation#implementation-considerations-for-ml-related-objects","content":"Object Type\tCharacteristics\tWhere to storeMetrics: tf.events\tTime series data with k/v, appendable to file\tLocal/EBS, HDFS, Cloud Blob Storage Metrics: other tracking metrics\tTime series data with k/v, appendable to file\tLocal, HDFS, Cloud Blob Storage, Database Logs\tLarge volumes, #files are potentially huge.\tLocal (temporary), HDFS (need aggregation), Cloud Blob Storage Submarine Metastore\tCRUD operations for small meta data.\tDatabase Model Artifacts\tSize varies for model (from KBs to GBs). #files are potentially huge.\tHDFS, Cloud Blob Storage Code\tNeed version control. (Please find detailed discussions below for code storage and localization)\tTarball on HDFS/Cloud Blog Storage, or Git Environment (Dependencies, Docker Image) Public/private environment repo (like Conda channel), Docker registry. "},{"title":"Detailed discussions","type":1,"pageTitle":"Storage Implementation","url":"docs/next/designDocs/storage-implementation#detailed-discussions","content":"Store code for experiment/notebook/model-serving# There're following ways to get experiment code: 1) Code is part of Git repo: (Recommended) This is our recommended approach, once code is part of Git, it will be stored in version control, any change will be tracked, and much easier for users to trace back what change triggered a new bug, etc. 2) Code is part of Docker image: This is an anti-pattern and we will NOT recommend you to use it, Docker image can be used to include ANYTHING, like dependencies, the code you will execute, or even data. But this doesn't mean you should do it. We recommend to use Docker image ONLY for libraries/dependencies. Making code to be part of Docker image makes hard to edit code (if you want to update a value in your Python file, you will have to recreate the Docker image, push it and rerun it). 3) Code is part of S3/HDFS/ABFS: User may want to store their training code to a tarball on a shared storage. Submarine need to download code from remote storage to the launched container before running the code. Localization of experiment/notebook/model-serving code# To make user experiences keeps same across different environment, we will localize code to a same folder after the container is launched, preferably /code For example, there's a git repo need to be synced up for an experiment/notebook/model-serving (example above): experiment: #Or notebook, model-serving name: \"abc\", environment: \"team-default-ml-env\" ... (other fields) code: sync_mode: git url: \"https://foo.com/training-job.git\" Copy After localize, training-job/ will be placed under /code When we running on K8s environment, we can use K8s's initContainer and emptyDir to do these things for us. K8s POD spec (generated by Submarine server instead of user, user should NEVER edit K8s spec, that's too unfriendly to data-scientists): apiVersion: v1 kind: Pod metadata: name: experiment-abc spec: containers: - name: experiment-task image: training-job volumeMounts: - name: code-dir mountPath: /code initContainers: - name: git-localize image: git-sync command: \"git clone .. /code/\" volumeMounts: - name: code-dir mountPath: /code volumes: - name: code-dir emptyDir: {} Copy The above K8s spec create a code-dir and mount it to /code to launched containers. The initContainer git-localize uses https://github.com/kubernetes/git-sync to do the sync up. (If other storages are used such as s3, we can use similar initContainer approach to download contents) "},{"title":"System-related metrics/logs and their storages","type":1,"pageTitle":"Storage Implementation","url":"docs/next/designDocs/storage-implementation#system-related-metricslogs-and-their-storages","content":"Other than ML-related objects, we have system-related objects, including: Daemon logs (like logs of Submarine server). Logs for other dependency components (like Kubernetes logs when running on K8s). System metrics (Physical resource usages by daemons, launched training containers, etc.).  All these information should be handled by 3rd party system, such as Grafana, Prometheus, etc. And system admins are responsible to setup these infrastructures, dashboard. Users of submarine should NOT interact with system related metrics/logs. It is system admin's responsibility. "},{"title":"Attachable Volumes","type":1,"pageTitle":"Storage Implementation","url":"docs/next/designDocs/storage-implementation#attachable-volumes","content":"It is possible user has needs to have an attachable volume for their experiment / notebook, this is especially useful for notebook storage, since contents of notebook can be automatically saved, and it can be used as user's home folder. Downside of attachable volume is, it is not versioned, even notebook is mainly used for adhoc exploring tasks, an unversioned notebook file can lead to maintenance issues in the future. Since this is a common requirement, we can consider to support attachable volumes in Submarine in a long run, but with relatively lower priority. "},{"title":"In-scope / Out-of-scope","type":1,"pageTitle":"Storage Implementation","url":"docs/next/designDocs/storage-implementation#in-scope--out-of-scope","content":"Describe what Submarine project should own and what Submarine project should NOT own. "},{"title":"Experiment Implementation","type":0,"sectionRef":"#","url":"docs/next/designDocs/experiment-implementation","content":"","keywords":""},{"title":"Overview","type":1,"pageTitle":"Experiment Implementation","url":"docs/next/designDocs/experiment-implementation#overview","content":"This document talks about implementation of experiment, flows and design considerations. Experiment consists of following components, also interact with other Submarine or 3rd-party components, showing below:  +---------------------------------------+ +----------+ | Experiment Tasks | |Run | | | |Configs | | +----------------------------------+ | +----------+ | | Experiment Runnable Code | | +-----------------+ +----------+ | | | | |Output Artifacts | |Input Data| | | (Like train-job.py) | | |(Models, etc.) | | | | +----------------------------------+ | +-----------------+ | | | +----------------------------------+ | +----------+ | | Experiment Deps (Like Python) | | +-------------+ | +----------------------------------+ | |Logs/Metrics | | +----------------------------------+ | | | | | OS, Base Libaries (Like CUDA) | | +-------------+ | +----------------------------------+ | +---------------------------------------+ ^ | (Launch Task with resources) + +---------------------------------+ |Resource Manager (K8s/Cloud)| +---------------------------------+ Copy As showing in the above diagram, Submarine experiment consists of the following items: On the left side, there're input data and run configs.In the middle box, they're experiment tasks, it could be multiple tasks when we run distributed training, pipeline, etc. There're main runnable code, such as train.py for the training main entry point.The two boxes below: experiment dependencies and OS/Base libraries we called Submarine Environment Profile or Environment for short. Which defined what is the basic libraries to run the main experiment code.Experiment tasks are launched by Resource Manager, such as K8s/Cloud or just launched locally. There're resources constraints for each experiment tasks. (e.g. how much memory, cores, GPU, disk etc. can be used by tasks). On the right side, they're artifacts generated by experiments: Output artifacts: Which are main output of the experiment, it could be model(s), or output data when we do batch prediction.Logs/Metrics for further troubleshooting or understanding of experiment's quality. For the rest of the design doc, we will talk about how we handle environment, code, and manage output/logs, etc. "},{"title":"API of Experiment","type":1,"pageTitle":"Experiment Implementation","url":"docs/next/designDocs/experiment-implementation#api-of-experiment","content":"This is not a full definition of experiment, for more details, please reference to experiment API. Here's just an example of experiment object which help developer to understand what included in an experiment. experiment: name: \"abc\", type: \"script\", environment: \"team-default-ml-env\" code: sync_mode: s3 url: \"s3://bucket/training-job.tar.gz\" parameter: > python training.py --iteration 10 --input=s3://bucket/input output=s3://bucket/output resource_constraint: res=\"mem=20gb, vcore=3, gpu=2\" timeout: \"30 mins\" Copy This defined a \"script\" experiment, which has a name \"abc\", the name can be used to track the experiment. There's environment \"team-default-ml-env\" defined to make sure dependencies of the job can be downloaded properly before executing the job. code defined where the experiment code will be downloaded, we will support a couple of sync_mode like s3 (or abfs/hdfs), git, etc. Different types of experiments will have different specs, for example distributed Tensorflow spec may look like: experiment: name: \"abc-distributed-tf\", type: \"distributed-tf\", ps: environment: \"team-default-ml-cpu\" resource_constraint: res=\"mem=20gb, vcore=3, gpu=0\" worker: environment: \"team-default-ml-gpu\" resource_constraint: res=\"mem=20gb, vcore=3, gpu=2\" code: sync_mode: git url: \"https://foo.com/training-job.git\" parameter: > python /code/training-job/training.py --iteration 10 --input=s3://bucket/input output=s3://bucket/output tensorboard: enabled timeout: \"30 mins\" Copy Since we have different Docker image, one is using GPU and one is not using GPU, we can specify different environment and resource constraint. "},{"title":"Manage environments for experiment","type":1,"pageTitle":"Experiment Implementation","url":"docs/next/designDocs/experiment-implementation#manage-environments-for-experiment","content":"Please refer to environment-implementation.md for more details "},{"title":"Manage storages for experiment","type":1,"pageTitle":"Experiment Implementation","url":"docs/next/designDocs/experiment-implementation#manage-storages-for-experiment","content":"There're different types of storage, such as logs, metrics, dependencies (environments). For more details. Please refer to storage-implementations for more details. This also includes how to manage code for experiment code. "},{"title":"Manage Pre-defined experiment libraries","type":1,"pageTitle":"Experiment Implementation","url":"docs/next/designDocs/experiment-implementation#manage-pre-defined-experiment-libraries","content":""},{"title":"Flow: Submit an experiment","type":1,"pageTitle":"Experiment Implementation","url":"docs/next/designDocs/experiment-implementation#flow-submit-an-experiment","content":""},{"title":"Submit via SDK Flows.","type":1,"pageTitle":"Experiment Implementation","url":"docs/next/designDocs/experiment-implementation#submit-via-sdk-flows","content":"To better understand experiment implementation, It will be good to understand what is the steps of experiment submission. Please note that below code is just pseudo code, not official APIs. "},{"title":"Specify what environment to use","type":1,"pageTitle":"Experiment Implementation","url":"docs/next/designDocs/experiment-implementation#specify-what-environment-to-use","content":"Before submit the environment, you have to choose what environment to choose. Environment defines dependencies, etc. of an experiment or a notebook. might looks like below: conda_environment = \"\"\" name: conda-env channels: - defaults dependencies: - asn1crypto=1.3.0=py37_0 - blas=1.0=mkl - ca-certificates=2020.1.1=0 - certifi=2020.4.5.1=py37_0 - cffi=1.14.0=py37hb5b8e2f_0 - chardet=3.0.4=py37_1003 prefix: /opt/anaconda3/envs/conda-env \"\"\" # This environment can be different from notebook's own environment environment = create_environment { DockerImage = \"ubuntu:16\", CondaEnvironment = conda_environment } Copy To better understand how environment works, please refer to environment-implementation. "},{"title":"Create experiment, specify where's training code located, and parameters.","type":1,"pageTitle":"Experiment Implementation","url":"docs/next/designDocs/experiment-implementation#create-experiment-specify-wheres-training-code-located-and-parameters","content":"For ad-hoc experiment (code located at S3), assume training code is part of the training-job.tar.gz and main class is train.py. When the job is launched, whatever specified in the localize_artifacts will be downloaded. experiment = create_experiment { Environment = environment, ExperimentConfig = { type = \"adhoc\", localize_artifacts = [ \"s3://bucket/training-job.tar.gz\" ], name = \"abc\", parameter = \"python training.py --iteration 10 --input=\"s3://bucket/input output=\"s3://bucket/output\", } } experiment.run() experiment.wait_for_finish(print_output=True) Copy Run notebook file in offline mode# It is possible we want to run a notebook file in offline mode, to do that, here's code to use to run a notebook code experiment = create_experiment { Environment = environment, ExperimentConfig = { type = \"adhoc\", localize_artifacts = [ \"s3://bucket/folder/notebook-123.ipynb\" ], name = \"abc\", parameter = \"runipy training.ipynb --iteration 10 --input=\"s3://bucket/input output=\"s3://bucket/output\", } } experiment.run() experiment.wait_for_finish(print_output=True) Copy Run pre-defined experiment library# experiment = create_experiment { # Here you can use default environment of library Environment = environment, ExperimentConfig = { type = \"template\", name = \"abc\", # A unique name of template template = \"deepfm_ctr\", # yaml file defined what is the parameters need to be specified. parameter = { Input: \"S3://.../input\", Output: \"S3://.../output\" Training: { \"batch_size\": 512, \"l2_reg\": 0.01, ... } } } } experiment.run() experiment.wait_for_finish(print_output=True) Copy "},{"title":"Summarize: Experiment v.s. Notebook session","type":1,"pageTitle":"Experiment Implementation","url":"docs/next/designDocs/experiment-implementation#summarize-experiment-vs-notebook-session","content":"There's a common misunderstanding about what is the differences between running experiment v.s. running task from a notebook session. We will talk about differences and commonalities: Differences \tExperiment\tNotebook SessionRun mode\tOffline\tInteractive Output Artifacts (a.k.a model)\tPersisted in a shared storage (like S3/NFS)\tLocal in the notebook session container, could be ephemeral Run history (meta, logs, metrics)\tMeta/logs/metrics can be traced from experiment UI (or corresponding API)\tNo run history can be traced from Submarine UI/API. Can view the current running paragraph's log/metrics, etc. What to run?\tCode from Docker image or shared storage (like Tarball on S3, Github, etc.)\tLocal in the notebook's paragraph Commonalities \tExperiment & Notebook SessionEnvironment\tThey can share the same Environment configuration "},{"title":"Experiment-related modules inside Submarine-server","type":1,"pageTitle":"Experiment Implementation","url":"docs/next/designDocs/experiment-implementation#experiment-related-modules-inside-submarine-server","content":"(Please refer to architecture of submarine server for more details) "},{"title":"Experiment Manager","type":1,"pageTitle":"Experiment Implementation","url":"docs/next/designDocs/experiment-implementation#experiment-manager","content":"The experiment manager receives the experiment requests, persisting the experiment metas in a database(e.g. MySQL), will invoke subsequence modules to submit and monitor the experiment's execution. "},{"title":"Compute Cluster Manager","type":1,"pageTitle":"Experiment Implementation","url":"docs/next/designDocs/experiment-implementation#compute-cluster-manager","content":"After experiment accepted by experiment manager, based on which cluster the experiment intended to run (like mentioned in the previous sections, Submarine supports to manage multiple compute clusters), compute cluster manager will returns credentials to access the compute cluster. It will also be responsible to create a new compute cluster if needed. For most of the on-prem use cases, there's only one cluster involved, for such cases, ComputeClusterManager returns credentials to access local cluster if needed. "},{"title":"Experiment Submitter","type":1,"pageTitle":"Experiment Implementation","url":"docs/next/designDocs/experiment-implementation#experiment-submitter","content":"Experiment Submitter handles different kinds of experiments to run (e.g. ad-hoc script, distributed TF, MPI, pre-defined templates, Pipeline, AutoML, etc.). And such experiments can be managed by different resource management systems (e.g. K8s, container cloud, etc.) To meet the requirements to support variant kinds of experiments and resource managers, we choose to use plug-in modules to support different submitters (which requires jars to submarine-server’s classpath). To avoid jars and dependencies of plugins break the submarine-server, the plug-ins manager, or both. To solve this issue, we can instantiate submitter plug-ins using a classloader that is different from the system classloader. Submitter Plug-ins# Each plug-in uses a separate module under the server-submitter module. As the default implements, we provide for K8s. The submitter-k8s plug-in is used to submit the job to Kubernetes cluster and use the operator as the runtime. The submitter-k8s plug-in implements the operation of CRD object and provides the java interface. In the beginning, we use the tf-operator for the TensorFlow. If Submarine want to support the other resource management system in the future, such as submarine-docker-cluster (submarine uses the Raft algorithm to create a docker cluster on the docker runtime environment on multiple servers, providing the most lightweight resource scheduling system for small-scale users). We should create a new plug-in module named submitter-docker under the server-submitter module. "},{"title":"Experiment Monitor","type":1,"pageTitle":"Experiment Implementation","url":"docs/next/designDocs/experiment-implementation#experiment-monitor","content":"The monitor tracks the experiment life cycle and records the main events and key info in runtime. As the experiment run progresses, the metrics are needed for evaluation of the ongoing success or failure of the execution progress. Due to adapt the different cluster resource management system, so we need a generic metric info structure and each submitter plug-in should inherit and complete it by itself. "},{"title":"Invoke flows of experiment-related components","type":1,"pageTitle":"Experiment Implementation","url":"docs/next/designDocs/experiment-implementation#invoke-flows-of-experiment-related-components","content":" +-----------------+ +----------------+ +----------------+ +-----------------+ |Experiments | |Compute Cluster | |Experiment | | Experiment | |Mgr | |Mgr | |Submitter | | Monitor | +-----------------+ +----------------+ +----------------+ +-----------------+ + + + + User | | | | Submit |+------------------------------------->+ + Xperiment| Use submitter.validate(spec) | | | to validate spec and create | | | experiment object (state- | | | machine). | | | | | | The experiment manager will | | | persist meta-data to Database| | | | | | | | + + |+-----------------> + | | | Submit Experiments| | | | To ComputeCluster| | | | Mgr, get existing|+---------------->| | | cluster, or | Use Submitter | | | create a new one.| to submit |+---------------> | | | Different kinds | Once job is | | | of experiments | submitted, use |+----+ | | to k8s, etc| monitor to get | | | | | status updates | | | | | | | Monitor | | | | | Xperiment | | | | | status | | | | | |<--------------------------------------------------------+| | | | | | | | Update Status back to Experiment | | | | Manager | |<----+ | | | | | | | | | | | | v v v v Copy TODO: add more details about template, environment, etc. "},{"title":"Common modules of experiment/notebook-session/model-serving","type":1,"pageTitle":"Experiment Implementation","url":"docs/next/designDocs/experiment-implementation#common-modules-of-experimentnotebook-sessionmodel-serving","content":"Experiment/notebook-session/model-serving share a lot of commonalities, all of them are: Some workloads running on K8s.Need persist meta data to DB.Need monitor task/service running status from resource management system. We need to make their implementation are loose-coupled, but at the same time, share some building blocks as much as possible (e.g. submit PodSpecs to K8s, monitor status, get logs, etc.) to reduce duplications. "},{"title":"Support Predefined-experiment-templates","type":1,"pageTitle":"Experiment Implementation","url":"docs/next/designDocs/experiment-implementation#support-predefined-experiment-templates","content":"Predefined Experiment Template is just a way to save data-scientists time to repeatedly entering parameters which is not error-proof and user experience is also bad. "},{"title":"Predefined-experiment-template API to run experiment","type":1,"pageTitle":"Experiment Implementation","url":"docs/next/designDocs/experiment-implementation#predefined-experiment-template-api-to-run-experiment","content":"Predefined experiment template consists a list of parameters, each of the parameter has 4 properties: Key\tRequired\tDefault Value\tDescriptionName of the key\ttrue/false\tWhen required = false, a default value can be provided by the template\tDescription of the parameter For the example of deepfm CTR training experiment mentioned in the architecture-and-requirements.md { \"input\": { \"train_data\": [\"hdfs:///user/submarine/data/tr.libsvm\"], \"valid_data\": [\"hdfs:///user/submarine/data/va.libsvm\"], \"test_data\": [\"hdfs:///user/submarine/data/te.libsvm\"], \"type\": \"libsvm\" }, \"output\": { \"save_model_dir\": \"hdfs:///user/submarine/deepfm\", \"metric\": \"auc\" }, \"training\": { \"batch_size\" : 512, \"field_size\": 39, \"num_epochs\": 3, \"feature_size\": 117581, ... } } Copy The template will be (in yaml format): # deepfm.ctr template name: deepfm.ctr author: description: > This is a template to run CTR training using deepfm algorithm, by default it runs single node TF job, you can also overwrite training parameters to use distributed training. parameters: - name: input.train_data required: true description: > train data is expected in SVM format, and can be stored in HDFS/S3 ... - name: training.batch_size required: false default: 32 description: This is batch size of training Copy The batch format can be used in UI/API. "},{"title":"Handle Predefined-experiment-template from server side","type":1,"pageTitle":"Experiment Implementation","url":"docs/next/designDocs/experiment-implementation#handle-predefined-experiment-template-from-server-side","content":"Please note that, the conversion of predefined-experiment-template will be always handled by server. The invoke flow looks like:  +------------Submarine Server -----------------------+ +--------------+ | +-----------------+ | |Client |+------->|Experimment Mgr | | | | | | | | +--------------+ | +-----------------+ | | + | Submit | +-------v---------+ Get Experiment Template | Template | |Experiment |<-----+From pre-registered | Parameters | |Template Registry| Templates | to Submarine | +-------+---------+ | Server | | | | +-------v---------+ +-----------------+ | | |Deepfm CTR Templ-| |Experiment- | | | |ate Handler +------>|Tensorflow | | | +-----------------+ +--------+--------+ | | | | | | | | +--------v--------+ | | |Experiment | | | |Submitter | | | +--------+--------+ | | | | | | | | +--------v--------+ | | | | | | | ...... | | | +-----------------+ | | | +----------------------------------------------------+ Copy Basically, from Client, it submitted template parameters to Submarine Server, inside submarine server, it finds the corresponding template handler based on the name. And the template handler converts input parameters to an actual experiment, such as a distributed TF experiment. After that, it goes the similar route to validate experiment spec, compute cluster manager, etc. to get the experiment submitted and monitored. Predefined-experiment-template is able to create any kind of experiment, it could be a pipeline:  +-----------------+ +------------------+ |Template XYZ | | XYZ Template | | |+---------------> | Handler | +-----------------+ +------------------+ + | | | | v +--------------------+ +------------------+ | +-----------------+| | Predefined | | | Split Train/ ||<----+| Pipeline | | | Test data || +------------------+ | +-------+---------+| | | | | +-------v---------+| | | Spark Job ETL || | | || | +-------+---------+| | | | | +-------v---------+| | | Train using || | | XGBoost || | +-------+---------+| | | | | +-------v---------+| | | Validate Train || | | Results || | +-----------------+| | | +--------------------+ Copy Template can be also chained to reuse other template handlers  +-----------------+ +------------------+ |Template XYZ | | XYZ Template | | |+---------------> | Handler | +-----------------+ +------------------+ + | v +------------------+ +------------------+ |Distributed | | ABC Template | |TF Experiment |<----+| Handler | +------------------+ +------------------+ Copy Template Handler is a callable class inside Submarine Server with a standard interface defined like. interface ExperimentTemplateHandler { ExperimentSpec createExperiment(TemplatedExperimentParameters param) } Copy We should avoid users to do coding when they want to add new template, we should have several standard template handler to deal with most of the template handling. Experiment templates can be registered/updated/deleted via Submarine Server's REST API, which need to be discussed separately in the doc. (TODO) "},{"title":"Submarine Server Implementation","type":0,"sectionRef":"#","url":"docs/next/designDocs/submarine-server/architecture","content":"","keywords":""},{"title":"Architecture Overview","type":1,"pageTitle":"Submarine Server Implementation","url":"docs/next/designDocs/submarine-server/architecture#architecture-overview","content":" +---------------Submarine Server ---+ | | | +------------+ +------------+ | | |Web Svc/Prxy| |Backend Svc | | +--Submarine Asset + | +------------+ +------------+ | |Project/Notebook | | ^ ^ | |Model/Metrics | +---|---------|---------------------+ |Libraries/Dataset | | | +------------------+ | | | +--|-Compute Cluster 1---+ +--Image Registry--+ + | | | | User's Images | User / | + | | | Admin | User Notebook Instance | +------------------+ | Experiment Runs | +------------------------+ +-Data Storage-----+ | S3/HDFS, etc. | +----Compute Cluster 2---+ | | +------------------+ ... Copy Here's a diagram to illustrate the Submarine's deployment. Submarine Server consists of web service/proxy, and backend services. They're like \"control planes\" of Submarine, and users will interact with these services.Submarine server could be a microservice architecture and can be deployed to one of the compute clusters. (see below, this will be useful when we only have one cluster).There're multiple compute clusters that could be used by Submarine service. For user's running notebook instance, jobs, etc. they will be placed to one of the compute clusters by user's preference or defined policies.Submarine's asset includes project/notebook(content)/models/metrics/dataset-meta, etc. can be stored inside Submarine's own database.Datasets can be stored in various locations such as S3/HDFS.Users can push container (such as Docker) images to a preconfigured registry in Submarine, so Submarine service can know how to pull required container images.Image Registry/Data-Storage, etc. are outside of Submarine server's scope and should be managed by 3rd party applications. "},{"title":"Submarine Server and its APIs","type":1,"pageTitle":"Submarine Server Implementation","url":"docs/next/designDocs/submarine-server/architecture#submarine-server-and-its-apis","content":"Submarine server is designed to allow data scientists to access notebooks, submit/manage jobs, manage models, create model training workflows, access datasets, etc. Submarine Server exposed UI and REST API. Users can also use CLI / SDK to manage assets inside Submarine Server.  +----------+ | CLI |+---+ +----------+ v +----------------+ +--------------+ | Submarine | +----------+ | REST API | | | | SDK |+>| |+> Server | +----------+ +--------------+ | | ^ +----------------+ +----------+ | | UI |+---+ +----------+ Copy REST API will be used by the other 3 approaches. (CLI/SDK/UI) The REST API Service handles HTTP requests and is responsible for authentication. It acts as the caller for the JobManager component. The REST component defines the generic job spec which describes the detailed info about job. For more details, refer to here. (Please note that we're converting REST endpoint description from Java-based REST API to swagger definition, once that is done, we should replace the link with swagger definition spec). "},{"title":"Proposal","type":1,"pageTitle":"Submarine Server Implementation","url":"docs/next/designDocs/submarine-server/architecture#proposal","content":"+-----------+ | | | workbench +---+ +----------------------------------+ | | | | +------+ +---------------------+ | +-----------+ | | | | | +-------+ | | +---------------------+ | | | | | | K8s | | | | +--------+ +----+ | +-----------+ | | | | | +-------+ | | | | +-->+job1| | | | | | | | | submitter | | | | | +----+ | | CLI +------>+ | REST | +---------------------+ +---->+ |operator| +----+ | | | | | | | +---------------------+ | | | +-->+job2| | +-----------+ | | | | | +-------+ +-------+ | | | +--------+ +----+ | | | | | | |PlugMgr| |monitor| | | | K8s Cluster | +-----------+ | | | | | +-------+ +-------+ | | +---------------------+ | | | | | | | JobManager | | | SDK +---+ | +------+ +---------------------+ | | | +----------------------------------+ +-----------+ client server Copy We propose to split the original core module in the old layout into two modules, CLI and server as shown in FIG. The submarine-client calls the REST APIs to submit and retrieve the job info. The submarine-server provides the REST service, job management, submitting the job to cluster, and running job in different clusters through the corresponding runtime. "},{"title":"Submarine Server Components","type":1,"pageTitle":"Submarine Server Implementation","url":"docs/next/designDocs/submarine-server/architecture#submarine-server-components","content":" +----------------------Submarine Server--------------------------------+ | +-----------------+ +------------------+ +--------------------+ | | | Experiment | |Notebook Session | |Environment Mgr | | | | Mgr | |Mgr | | | | | +-----------------+ +------------------+ +--------------------+ | | | | +-----------------+ +------------------+ +--------------------+ | | | Model Registry | |Model Serving Mgr | |Compute Cluster Mgr | | | | | | | | | | | +-----------------+ +------------------+ +--------------------+ | | | | +-----------------+ +------------------+ +--------------------+ | | | DataSet Mgr | |User/Team | |Metadata Mgr | | | | | |Permission Mgr | | | | | +-----------------+ +------------------+ +--------------------+ | +----------------------------------------------------------------------+ Copy "},{"title":"Experiment Manager","type":1,"pageTitle":"Submarine Server Implementation","url":"docs/next/designDocs/submarine-server/architecture#experiment-manager","content":"TODO "},{"title":"Notebook Sessions Manager","type":1,"pageTitle":"Submarine Server Implementation","url":"docs/next/designDocs/submarine-server/architecture#notebook-sessions-manager","content":"TODO "},{"title":"Environment Manager","type":1,"pageTitle":"Submarine Server Implementation","url":"docs/next/designDocs/submarine-server/architecture#environment-manager","content":"TODO "},{"title":"Model Registry","type":1,"pageTitle":"Submarine Server Implementation","url":"docs/next/designDocs/submarine-server/architecture#model-registry","content":"TODO "},{"title":"Model Serving Manager","type":1,"pageTitle":"Submarine Server Implementation","url":"docs/next/designDocs/submarine-server/architecture#model-serving-manager","content":"TODO "},{"title":"Compute Cluster Manager","type":1,"pageTitle":"Submarine Server Implementation","url":"docs/next/designDocs/submarine-server/architecture#compute-cluster-manager","content":"TODO "},{"title":"Dataset Manager","type":1,"pageTitle":"Submarine Server Implementation","url":"docs/next/designDocs/submarine-server/architecture#dataset-manager","content":"TODO "},{"title":"User/team permissions manager","type":1,"pageTitle":"Submarine Server Implementation","url":"docs/next/designDocs/submarine-server/architecture#userteam-permissions-manager","content":"TODO "},{"title":"Metadata Manager","type":1,"pageTitle":"Submarine Server Implementation","url":"docs/next/designDocs/submarine-server/architecture#metadata-manager","content":"TODO "},{"title":"Components/services outside of Submarine Server's scope","type":1,"pageTitle":"Submarine Server Implementation","url":"docs/next/designDocs/submarine-server/architecture#componentsservices-outside-of-submarine-servers-scope","content":"TODO: Describe what are the out-of-scope components, which should be handled and managed outside of Submarine server. Candidates are: Identity management, data storage, metastore storage, etc. "},{"title":"Security Implementation","type":0,"sectionRef":"#","url":"docs/next/designDocs/wip-designs/security-implementation","content":"","keywords":""},{"title":"Handle User's Credential","type":1,"pageTitle":"Security Implementation","url":"docs/next/designDocs/wip-designs/security-implementation#handle-users-credential","content":"Users credential includes Kerberoes Keytabs, Docker registry credentials, Github ssh-keys, etc. User's credential must be stored securitely, for example, via KeyCloak or K8s Secrets. (More details TODO) "},{"title":"Generic Experiment Spec","type":0,"sectionRef":"#","url":"docs/next/designDocs/submarine-server/experimentSpec","content":"","keywords":""},{"title":"Motivation","type":1,"pageTitle":"Generic Experiment Spec","url":"docs/next/designDocs/submarine-server/experimentSpec#motivation","content":"As the machine learning platform, the submarine should support multiple machine learning frameworks, such as Tensorflow, Pytorch etc. But different framework has different distributed components for the training experiment. So that we designed a generic experiment spec to abstract the training experiment across different frameworks. In this way, the submarine-server can hide the complexity of underlying infrastructure differences and provide a cleaner interface to manager experiments "},{"title":"Proposal","type":1,"pageTitle":"Generic Experiment Spec","url":"docs/next/designDocs/submarine-server/experimentSpec#proposal","content":"Considering the Tensorflow and Pytorch framework, we propose one spec which consists of library spec, submitter spec and task specs etc. Such as: name: \"mnist\" librarySpec: name: \"TensorFlow\" version: \"2.1.0\" image: \"apache/submarine:tf-mnist-with-summaries-1.0\" cmd: \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\" envVars: ENV_1: \"ENV1\" submitterSpec: type: \"k8s\" namespace: \"submarine\" taskSpecs: Ps: name: tensorflow replicas: 2 resources: \"cpu=4,memory=2048M,nvidia.com/gpu=1\" Worker: name: tensorflow replicas: 2 resources: \"cpu=4,memory=2048M,nvidia.com/gpu=1\" Copy "},{"title":"Library Spec","type":1,"pageTitle":"Generic Experiment Spec","url":"docs/next/designDocs/submarine-server/experimentSpec#library-spec","content":"The library spec describes the info about machine learning framework. All the fields as below: field\ttype\toptional\tdescriptionname\tstring\tNO\tMachine Learning Framework name. Only \"tensorflow\" and \"pytorch\" is supported. It doesn't matter if the value is uppercase or lowercase. version\tstring\tNO\tThe version of ML framework. Such as: 2.1.0 image\tstring\tNO\tThe public image used for each task if not specified. Such as: apache/submarine cmd\tstring\tYES\tThe public entry cmd for the task if not specified. envVars\tkey/value\tYES\tThe public env vars for the task if not specified. "},{"title":"Submitter Spec","type":1,"pageTitle":"Generic Experiment Spec","url":"docs/next/designDocs/submarine-server/experimentSpec#submitter-spec","content":"It describes the info of submitter which the user specified, such as k8s. All the fields as below: field\ttype\toptional\tdescriptiontype\tstring\tNO\tThe submitter type, supports k8s now configPath\tstring\tYES\tThe config path of the specified resource manager. You can set it in submarine-site.xml if run submarine-server locally namespace\tstring\tNO\tIt's known as namespace in Kubernetes. kind\tstring\tYES\tIt's used for k8s submitter, supports TFJob and PyTorchJob apiVersion\tstring\tYES\tIt should pair with the kind, such as the TFJob's api version is kubeflow.org/v1 "},{"title":"Task Spec","type":1,"pageTitle":"Generic Experiment Spec","url":"docs/next/designDocs/submarine-server/experimentSpec#task-spec","content":"It describes the task info, the tasks make up the experiment. So it must be specified when submit the experiment. All the tasks should putted into the key value collection. Such as: taskSpecs: Ps: name: tensorflow replicas: 2 resources: \"cpu=4,memory=2048M,nvidia.com/gpu=1\" Worker: name: tensorflow replicas: 2 resources: \"cpu=4,memory=2048M,nvidia.com/gpu=1\" Copy All the fields as below: field\ttype\toptional\tdescriptionname\tstring\tYES\tThe experiment name, if not specify using the library name image\tstring\tYES\tThe experiment docker image cmd\tstring\tYES\tThe entry command for running task envVars\tkey/value\tYES\tThe environment variables for the task resources\tstring\tNO\tThe limit resource for the task. Formatter: cpu=%s,memory=%s,nvidia.com/gpu=%s "},{"title":"Implements","type":1,"pageTitle":"Generic Experiment Spec","url":"docs/next/designDocs/submarine-server/experimentSpec#implements","content":"For more info see SUBMARINE-321 "},{"title":"Submarine Launcher","type":0,"sectionRef":"#","url":"docs/next/designDocs/wip-designs/submarine-launcher","content":"","keywords":""},{"title":"Introduction","type":1,"pageTitle":"Submarine Launcher","url":"docs/next/designDocs/wip-designs/submarine-launcher#introduction","content":"Submarine is built and run in Cloud Native, taking advantage of the cloud computing model. To give full play to the advantages of cloud computing. These applications are characterized by rapid and frequent build, release, and deployment. Combined with the features of cloud computing, they are decoupled from the underlying hardware and operating system, and can easily meet the requirements of scalability, availability, and portability. And provide better economy. In the enterprise data center, submarine can support k8s/docker three resource scheduling systems; in the public cloud environment, submarine can support these cloud services in GCE/AWS/Azure; "},{"title":"Requirement","type":1,"pageTitle":"Submarine Launcher","url":"docs/next/designDocs/wip-designs/submarine-launcher#requirement","content":""},{"title":"Cloud-Native Service","type":1,"pageTitle":"Submarine Launcher","url":"docs/next/designDocs/wip-designs/submarine-launcher#cloud-native-service","content":"The submarine server is a long-running services in the daemon mode. The submarine server is mainly used by algorithm engineers to provide online front-end functions such as algorithm development, algorithm debugging, data processing, and workflow scheduling. And submarine server also mainly used for back-end functions such as scheduling and execution of jobs, tracking of job status, and so on. Through the ability of rolling upgrades, we can better provide system stability. For example, we can upgrade or restart the workbench server without affecting the normal operation of submitted jobs. You can also make full use of system resources. For example, when the number of current developers or job tasks increases, The number of submarine server instances can be adjusted dynamically. In addition, submarine will provide each user with a completely independent workspace container. This workspace container has already deployed the development tools and library files commonly used by algorithm engineers including their operating environment. Algorithm engineers can work in our prepared workspaces without any extra work. Each user's workspace can also be run through a cloud service. "},{"title":"Service discovery","type":1,"pageTitle":"Submarine Launcher","url":"docs/next/designDocs/wip-designs/submarine-launcher#service-discovery","content":"With the cluster function of submarine, each service only needs to run in the container, and it will automatically register the service in the submarine cluster center. Submarine cluster management will automatically maintain the relationship between service and service, service and user. "},{"title":"Design","type":1,"pageTitle":"Submarine Launcher","url":"docs/next/designDocs/wip-designs/submarine-launcher#design","content":" "},{"title":"Launcher","type":1,"pageTitle":"Submarine Launcher","url":"docs/next/designDocs/wip-designs/submarine-launcher#launcher","content":"The submarine launcher module defines the complete interface. By using this interface, you can run the submarine server, and workspace in k8s / docker / AWS / GCE / Azure. "},{"title":"Launcher On Docker","type":1,"pageTitle":"Submarine Launcher","url":"docs/next/designDocs/wip-designs/submarine-launcher#launcher-on-docker","content":"In order to allow some small and medium-sized users without k8s to use submarine, we support running the submarine system in docker mode. Users only need to provide several servers with docker runtime environment. The submarine system can automatically cluster these servers into clusters, manage all the hardware resources of the cluster, and run the service or workspace container in this cluster through scheduling algorithms. "},{"title":"Launcher On Kubernetes","type":1,"pageTitle":"Submarine Launcher","url":"docs/next/designDocs/wip-designs/submarine-launcher#launcher-on-kubernetes","content":"submarine operator "},{"title":"Launcher On AWS","type":1,"pageTitle":"Submarine Launcher","url":"docs/next/designDocs/wip-designs/submarine-launcher#launcher-on-aws","content":"[TODO] "},{"title":"Launcher On GCP","type":1,"pageTitle":"Submarine Launcher","url":"docs/next/designDocs/wip-designs/submarine-launcher#launcher-on-gcp","content":"[TODO] "},{"title":"Launcher On Azure","type":1,"pageTitle":"Submarine Launcher","url":"docs/next/designDocs/wip-designs/submarine-launcher#launcher-on-azure","content":"[TODO] "},{"title":"Cluster Server Design - High-Availability","type":0,"sectionRef":"#","url":"docs/next/designDocs/wip-designs/submarine-clusterServer","content":"","keywords":""},{"title":"Below is existing proposal:","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/next/designDocs/wip-designs/submarine-clusterServer#below-is-existing-proposal","content":""},{"title":"Introduction","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/next/designDocs/wip-designs/submarine-clusterServer#introduction","content":"The Submarine system contains a total of two daemon services, Submarine Server and Workbench Server. Submarine Server mainly provides job submission, job scheduling, job status monitoring, and model online service for Submarine. Workbench Server is mainly for algorithm users to provide algorithm development, Python/Spark interpreter operation, and other services through Notebook. The goal of the Submarine project is to provide high availability and high-reliability services for big data processing, algorithm development, job scheduling, model online services, model batch, and incremental updates. In addition to the high availability of big data and machine learning frameworks, the high availability of Submarine Server and Workbench Server itself is a key consideration. "},{"title":"Requirement","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/next/designDocs/wip-designs/submarine-clusterServer#requirement","content":""},{"title":"Cluster Metadata Center","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/next/designDocs/wip-designs/submarine-clusterServer#cluster-metadata-center","content":"Multiple Submarine (or Workbench) Server processes create a Submarine Cluster through the RAFT algorithm library. The cluster internally maintains a metadata center. All servers can operate the metadata. The RAFT algorithm ensures that multiple processes are simultaneously co-located. A data modification will not cause problems such as mutual coverage and dirty data. This metadata center stores data by means of key-value pairs. it can store/support a variety of data, but it should be noted that metadata is only suitable for storing small amounts of data and cannot be used to replace data storage. "},{"title":"Service discovery","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/next/designDocs/wip-designs/submarine-clusterServer#service-discovery","content":"By storing the information of the service or process in the metadata center, we can easily find the information of the service or process we need in any place, for example, the IP address and port where the Python interpreter will be the process. Information is stored in metadata, and other services can easily find process information through process IDs and connect to provide service discovery capabilities. "},{"title":"Cluster event","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/next/designDocs/wip-designs/submarine-clusterServer#cluster-event","content":"In the entire Submarine cluster, the servers can communicate with each other and other child processes to send cluster events to each other. The service or process processes the corresponding programs according to the cluster events. For example, the Workbench Server can be managed to Python. The interpreter process sends a shutdown event that controls the operation of the services and individual subprocesses throughout the cluster. Cluster events support both broadcast and separate delivery capabilities. "},{"title":"Independence","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/next/designDocs/wip-designs/submarine-clusterServer#independence","content":"We implement Submarine's clustering capabilities through the RAFT algorithm library, without relying on any external services (e.g. Zookeeper, Etcd, etc.) "},{"title":"Disadvantages","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/next/designDocs/wip-designs/submarine-clusterServer#disadvantages","content":"Because the RAFT algorithm requires more than half of the servers available to ensure the normality of the RAFT algorithm, if we need to turn on the clustering capabilities of Submarine (Workbench) Server, when more than half of the servers are unavailable, some programs may appear abnormal. Of course, we also detected this in the system, downgrading the system or refusing to provide service status. "},{"title":"System design","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/next/designDocs/wip-designs/submarine-clusterServer#system-design","content":""},{"title":"Universal design","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/next/designDocs/wip-designs/submarine-clusterServer#universal-design","content":"Modular design, Submarine (Workbench) Server exists in the Submarine system, these two services need to provide clustering capabilities, so we abstract the cluster function into a separate module for development so that Submarine (Workbench) Server can reuse the cluster function module. "},{"title":"ClusterConfigure","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/next/designDocs/wip-designs/submarine-clusterServer#clusterconfigure","content":"Add a submarine.server.addr and workbench.server.addr configuration items in submarine-site.xml, submarine.server.addr=ip1, ip2, ip3, through the IP list, the RAFT algorithm module in the server process can Cluster with other server processes. "},{"title":"ClusterServer","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/next/designDocs/wip-designs/submarine-clusterServer#clusterserver","content":"The ClusterServer module encapsulates the RAFT algorithm module, which can create a service cluster and read and write metadata based on the two configuration items submarine.server.addr or workbench.server.addr. The cluster management service runs in each submarine server; The cluster management service establishes a cluster by using the atomix RaftServer class of the Raft algorithm library, maintains the ClusterStateMachine, and manages the service state metadata of each submarine server through the PutCommand, GetQuery, and DeleteCommand operation commands. "},{"title":"ClusterClient","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/next/designDocs/wip-designs/submarine-clusterServer#clusterclient","content":"The ClusterClient module encapsulates the RAFT algorithm client module, which can communicate with the cluster according to the two configuration items submarine.server.addr or workbench.server.addr, read and write metadata, and write the IP and port information of the client process. Into the cluster's metadata center. The cluster management client runs in each submarine server and submarine Interpreter process; The cluster management client manages the submarine server and submarine Interpreter process state (metadata information) in the ClusterStateMachine by using the atomix RaftClient class of the Raft library to connect to the atomix RaftServer. When the submarine server and Submarine Interpreter processes are started, they are added to the ClusterStateMachine and are removed from the ClusterStateMachine when the Submarine Server and Submarine Interpreter processes are closed. "},{"title":"ClusterMetadata","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/next/designDocs/wip-designs/submarine-clusterServer#clustermetadata","content":"Metadata stores metadata information in a KV key-value pair。 ServerMeta:key='host:port',value= {SERVER_HOST=...,SERVER_PORT=...,...} Name\tDescriptionSUBMARINE_SERVER_HOST\tSubmarine server IP SUBMARINE_SERVER_PORT\tSubmarine server port WORKBENCH_SERVER_HOST\tSubmarine workbench server IP WORKBENCH_SERVER_PORT\tSubmarine workbench server port InterpreterMeta:key=InterpreterGroupId,value={INTP_TSERVER_HOST=...,...} Name\tDescriptionINTP_TSERVER_HOST\tSubmarine Interpreter Thrift IP INTP_TSERVER_PORT\tSubmarine Interpreter Thrift port INTP_START_TIME\tSubmarine Interpreter start time HEARTBEAT\tSubmarine Interpreter heartbeat time "},{"title":"Network fault tolerance","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/next/designDocs/wip-designs/submarine-clusterServer#network-fault-tolerance","content":"In a distributed environment, there may be network anomalies, network delays, or service exceptions. After submitting metadata to the cluster, check whether the submission is successful. After the submission fails, save the metadata in the local message queue. A separate commit thread to retry; "},{"title":"Cluster monitoring","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/next/designDocs/wip-designs/submarine-clusterServer#cluster-monitoring","content":"The cluster needs to monitor whether the Submarine Server and Submarine-Interpreter processes are working properly. The Submarine Server and Submarine Interpreter processes periodically send heartbeats to update their own timestamps in the cluster metadata. The Submarine Server with Leader identity periodically checks the timestamps of the Submarine Server and Submarine Interpreter processes to clear the timeout services and processes. The cluster monitoring module runs in each Submarine Server and Submarine Interpreter process, periodically sending heartbeat data of the service or process to the cluster; When the cluster monitoring module runs in Submarine Server, it sends the heartbeat to the cluster's ClusterStateMachine. If the cluster does not receive heartbeat information for a long time, Indicates that the service or process is abnormal and unavailable. Resource usage statistics strategy, in order to avoid the instantaneous high peak and low peak of the server, the cluster monitoring will collect the average resource usage in the most recent period for reporting, and improve the reasonable line and effectiveness of the server resources as much as possible; When the cluster monitoring module runs in the Submarine Server, it checks the heartbeat data of each Submarine Server and Submarine Interpreter process. If it times out, it considers that the service or process is abnormally unavailable and removes it from the cluster. "},{"title":"Atomix Raft algorithm library","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/next/designDocs/wip-designs/submarine-clusterServer#atomix-raft-algorithm-library","content":"In order to reduce the deployment complexity of distributed mode, submarine server does not use Zookeeper to build a distributed cluster. Multiple submarine server groups are built into distributed clusters by using the Raft algorithm in submarine server. The Raft algorithm is involved by atomix lib of atomix that has passed Jepsen consistency verification. "},{"title":"Synchronize workbench notes","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/next/designDocs/wip-designs/submarine-clusterServer#synchronize-workbench-notes","content":"In cluster mode, the user creates, modifies, and deletes the note on any of the servers. All need to be notified to all the servers in the cluster to synchronize the update of Notebook. Failure to do so will result in the user not being able to continue while switching to another server. "},{"title":"Listen for note update events","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/next/designDocs/wip-designs/submarine-clusterServer#listen-for-note-update-events","content":"Listen for the NEW_NOTE, DEL_NOTE, REMOVE_NOTE_TO_TRASH ... event of the notebook in the NotebookServer#onMessage() function. "},{"title":"Broadcast note update event","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/next/designDocs/wip-designs/submarine-clusterServer#broadcast-note-update-event","content":"The note is refreshed by notifying the event to all Submarine servers in the cluster via messaging Service. "},{"title":"How to Build Submarine","type":0,"sectionRef":"#","url":"docs/next/devDocs/BuildFromCode","content":"","keywords":""},{"title":"Prerequisites","type":1,"pageTitle":"How to Build Submarine","url":"docs/next/devDocs/BuildFromCode#prerequisites","content":"JDK 1.8Maven 3.3 or later ( < 3.8.1 )Docker "},{"title":"Quick Start","type":1,"pageTitle":"How to Build Submarine","url":"docs/next/devDocs/BuildFromCode#quick-start","content":""},{"title":"Build Your Custom Submarine Docker Images","type":1,"pageTitle":"How to Build Submarine","url":"docs/next/devDocs/BuildFromCode#build-your-custom-submarine-docker-images","content":"Submarine provides default Docker image in the release artifacts, sometimes you would like to do some modifications on the images. You can rebuild Docker image after you make changes. Note that you need to make sure the images built above can be accessed in k8s Usually this needs to rename and push to a proper Docker registry. mvn clean package -DskipTests Copy Build submarine server image: ./dev-support/docker-images/submarine/build.sh Copy Build submarine database image: ./dev-support/docker-images/database/build.sh Copy "},{"title":"Checking releases for licenses","type":1,"pageTitle":"How to Build Submarine","url":"docs/next/devDocs/BuildFromCode#checking-releases-for-licenses","content":"mvn clean org.apache.rat:apache-rat-plugin:check Copy "},{"title":"Building source code / binary distribution with Maven Wrapper","type":1,"pageTitle":"How to Build Submarine","url":"docs/next/devDocs/BuildFromCode#building-source-code--binary-distribution-with-maven-wrapper","content":"Maven Wrapper (Optional): Maven Wrapper can help you avoid dependencies problem about Maven version. # Setup Maven Wrapper (Maven 3.6.1) mvn -N io.takari:maven:0.7.7:wrapper -Dmaven=3.6.1 # Check Maven Wrapper ./mvnw -version # Replace 'mvn' with 'mvnw'. Example: ./mvnw clean package -DskipTests Copy "},{"title":"Dependencies for Submarine","type":0,"sectionRef":"#","url":"docs/next/devDocs/Dependencies","content":"","keywords":""},{"title":"Kubernetes","type":1,"pageTitle":"Dependencies for Submarine","url":"docs/next/devDocs/Dependencies#kubernetes","content":"Kubernetes Version\tSupport?1.14.x (or earlier)\tX 1.15.x - 1.21.x\t√ 1.22.x (or later)\tX "},{"title":"KinD","type":1,"pageTitle":"Dependencies for Submarine","url":"docs/next/devDocs/Dependencies#kind","content":"KinD Version\tSupport?0.5.x (or earlier)\tX 0.6.x\t√ 0.7.x\t√ 0.8.x\t√ 0.9.x\t√ 0.10.x\t√ 0.11.x\t√ "},{"title":"Java","type":1,"pageTitle":"Dependencies for Submarine","url":"docs/next/devDocs/Dependencies#java","content":"JDK Version\tSupport?8\t√ 11\tX 17\tX "},{"title":"Maven","type":1,"pageTitle":"Dependencies for Submarine","url":"docs/next/devDocs/Dependencies#maven","content":"3.3 or later ( < 3.8.1 ) "},{"title":"Docker","type":1,"pageTitle":"Dependencies for Submarine","url":"docs/next/devDocs/Dependencies#docker","content":"Latest "},{"title":"Helm","type":1,"pageTitle":"Dependencies for Submarine","url":"docs/next/devDocs/Dependencies#helm","content":"Version 3 "},{"title":"NodeJS","type":1,"pageTitle":"Dependencies for Submarine","url":"docs/next/devDocs/Dependencies#nodejs","content":"14 (or later) "},{"title":"Go","type":1,"pageTitle":"Dependencies for Submarine","url":"docs/next/devDocs/Dependencies#go","content":"Go Version\tSupport?1.15\tX 1.16\t√ 1.17 (or later)\tTo be verified "},{"title":"Python","type":1,"pageTitle":"Dependencies for Submarine","url":"docs/next/devDocs/Dependencies#python","content":"Python Version\tSupport?3.5 (or earlier)\tX 3.6, 3.7\t√ 3.8 (or later)\tTo be verified "},{"title":"Development Guide","type":0,"sectionRef":"#","url":"docs/next/devDocs/Development","content":"","keywords":""},{"title":"Video","type":1,"pageTitle":"Development Guide","url":"docs/next/devDocs/Development#video","content":"From this Video, you will know how to deal with the configuration of Submarine and be able to contribute to it via Github. "},{"title":"Develop server","type":1,"pageTitle":"Development Guide","url":"docs/next/devDocs/Development#develop-server","content":""},{"title":"Prerequisites","type":1,"pageTitle":"Development Guide","url":"docs/next/devDocs/Development#prerequisites","content":"JDK 1.8Maven 3.3 or later ( < 3.8.1 )Docker "},{"title":"Setting up checkstyle in IDE","type":1,"pageTitle":"Development Guide","url":"docs/next/devDocs/Development#setting-up-checkstyle-in-ide","content":"Checkstyle plugin may help to detect violations directly from the IDE. Install Checkstyle+IDEA plugin from Preference -> PluginsOpen Preference -> Tools -> Checkstyle Set Checkstyle version: Checkstyle version: 8.0 Add (+) a new Configuration File Description: SubmarineUse a local checkstyle ${SUBMARINE_HOME}/dev-support/maven-config/checkstyle.xml Open the Checkstyle Tool Window, select the Submarine rule and execute the check "},{"title":"Testing","type":1,"pageTitle":"Development Guide","url":"docs/next/devDocs/Development#testing","content":"Unit Test For each class, there is a corresponding testClass. For example, SubmarineServerTest is used for testing SubmarineServer. Whenever you add a funtion in classes, you must write a unit test to test it. Integration Test: IntegrationTestK8s.md "},{"title":"Build from source","type":1,"pageTitle":"Development Guide","url":"docs/next/devDocs/Development#build-from-source","content":"Before building We assume the developer use minikube as a local kubernetes cluster.Make sure you have installed the submarine helm-chart in the cluster. Package the Submarine server into a new jar file mvn install -DskipTests Copy Build the new server docker image in minikube # switch to minikube docker daemon to build image directly in minikube eval $(minikube docker-env) # run docker build ./dev-support/docker-images/submarine/build.sh # exit minikube docker daemon eval $(minikube docker-env -u) Copy Delete the server deployment and the operator will create a new one using the new image kubectl delete deployment submarine-server Copy "},{"title":"Develop workbench","type":1,"pageTitle":"Development Guide","url":"docs/next/devDocs/Development#develop-workbench","content":"Deploy the Submarine Follow Getting Started/Submarine Local Deployment, and make sure you can connect to http://localhost:32080 in the browser. Install the dependencies cd submarine-workbench/workbench-web npm install Copy Run the workbench based on proxy server npm run start Copy The request sent to http://localhost:4200 will be redirected to http://localhost:32080.Open http://localhost:4200 in browser to see the real-time change of workbench. Frontend E2E test: IntegrationTestE2E.md "},{"title":"Develop database","type":1,"pageTitle":"Development Guide","url":"docs/next/devDocs/Development#develop-database","content":"Build the docker image # switch to minikube docker daemon to build image directly in minikube eval $(minikube docker-env) # run docker build ./dev-support/docker-images/database/build.sh # exit minikube docker daemon eval $(minikube docker-env -u) Copy Deploy new pods in the cluster helm upgrade --set submarine.database.dev=true submarine ./helm-charts/submarine Copy "},{"title":"Develop operator","type":1,"pageTitle":"Development Guide","url":"docs/next/devDocs/Development#develop-operator","content":"For details, please check out the README and Developer Guide on GitHub. "},{"title":"Develop Submarine Website","type":1,"pageTitle":"Development Guide","url":"docs/next/devDocs/Development#develop-submarine-website","content":"Submarine website is built using Docusaurus 2, a modern static website generator. We store all the website content in markdown format in the submarine/website/docs. When committing a new patch to the submarine repo, Docusaurus will help us generate the html and javascript files and push them to https://github.com/apache/submarine-site/tree/asf-site. To update the website, click “Edit this page” on the website.  "},{"title":"Add a new page","type":1,"pageTitle":"Development Guide","url":"docs/next/devDocs/Development#add-a-new-page","content":"If you want to add a new page to the website, make sure to add the file path to sidebars.js. "},{"title":"Installation","type":1,"pageTitle":"Development Guide","url":"docs/next/devDocs/Development#installation","content":"We use the yarn package manager to install all dependencies for the website yarn install Copy "},{"title":"Build","type":1,"pageTitle":"Development Guide","url":"docs/next/devDocs/Development#build","content":"Make sure you can successfully build the website before creating a pull request. yarn build Copy "},{"title":"Local Development","type":1,"pageTitle":"Development Guide","url":"docs/next/devDocs/Development#local-development","content":"This command starts a local development server and open up a browser window. Most changes are reflected live without having to restart the server. yarn start Copy "},{"title":"How to Verify","type":0,"sectionRef":"#","url":"docs/next/devDocs/HowToVerify","content":"","keywords":""},{"title":"Verification of the release candidate","type":1,"pageTitle":"How to Verify","url":"docs/next/devDocs/HowToVerify#verification-of-the-release-candidate","content":""},{"title":"1. Download the candidate version to be released to the local environment","type":1,"pageTitle":"How to Verify","url":"docs/next/devDocs/HowToVerify#1-download-the-candidate-version-to-be-released-to-the-local-environment","content":"svn co https://dist.apache.org/repos/dist/dev/submarine/${release_version}-${rc_version}/ Copy "},{"title":"2. Verify whether the uploaded version is compliant","type":1,"pageTitle":"How to Verify","url":"docs/next/devDocs/HowToVerify#2-verify-whether-the-uploaded-version-is-compliant","content":"Begin the verification process, which includes but is not limited to the following content and forms. "},{"title":"2.1 Check if the release package is complete","type":1,"pageTitle":"How to Verify","url":"docs/next/devDocs/HowToVerify#21-check-if-the-release-package-is-complete","content":"The package uploaded to dist must include the source code package, and the binary package is optional. Whether it includes the source code package.Whether it includes the signature of the source code package.Whether it includes the sha512 of the source code package.If the binary package is uploaded, also check the contents listed in (2)-(4). "},{"title":"2.2 Check gpg signature","type":1,"pageTitle":"How to Verify","url":"docs/next/devDocs/HowToVerify#22-check-gpg-signature","content":"Import the public key curl https://dist.apache.org/repos/dist/dev/submarine/KEYS > KEYS # Download KEYS gpg --import KEYS # Import KEYS to local Copy Trust the public key Trust the KEY used in this version.  gpg --edit-key xxxxxxxxxx # The KEY used in this version gpg (GnuPG) 2.2.21; Copyright (C) 2020 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Secret key is available. sec rsa4096/5EF3A66D57EC647A created: 2020-05-19 expires: never usage: SC trust: ultimate validity: ultimate ssb rsa4096/17628566FEED6AF7 created: 2020-05-19 expires: never usage: E [ultimate] (1). XXX YYYZZZ <yourAccount@apache.org> gpg> trust sec rsa4096/5EF3A66D57EC647A created: 2020-05-19 expires: never usage: SC trust: ultimate validity: ultimate ssb rsa4096/17628566FEED6AF7 created: 2020-05-19 expires: never usage: E [ultimate] (1). XXX YYYZZZ <yourAccount@apache.org> Please decide how far you trust this user to correctly verify other users' keys (by looking at passports, checking fingerprints from different sources, etc.) 1 = I don't know or won't say 2 = I do NOT trust 3 = I trust marginally 4 = I trust fully 5 = I trust ultimately m = back to the main menu Your decision? 5 #choose 5 Do you really want to set this key to ultimate trust? (y/N) y # choose y sec rsa4096/5EF3A66D57EC647A created: 2020-05-19 expires: never usage: SC trust: ultimate validity: ultimate ssb rsa4096/17628566FEED6AF7 created: 2020-05-19 expires: never usage: E [ultimate] (1). XXX YYYZZZ <yourAccount@apache.org> gpg> sec rsa4096/5EF3A66D57EC647A created: 2020-05-19 expires: never usage: SC trust: ultimate validity: ultimate ssb rsa4096/17628566FEED6AF7 created: 2020-05-19 expires: never usage: E [ultimate] (1). XXX YYYZZZ <yourAccount@apache.org> Copy Use the following command to check the signature. for i in *.tar.gz; do echo $i; gpg --verify $i.asc $i ; done #Or gpg --verify apache-submarine-${release_version}-src.tar.gz.asc apache-submarine-${release_version}-src.tar.gz # If you upload a binary package, you also need to check whether the signature of the binary package is correct. gpg --verify apache-submarine-server-${release_version}-bin.tar.gz.asc apache-submarine-server-${release_version}-bin.tar.gz gpg --verify apache-submarine-client-${release_version}-bin.tar.gz.asc apache-submarine-client-${release_version}-bin.tar.gz Copy Check the result If something like the following appears, it means that the signature is correct. The keyword:Good signature apache-submarine-${release_version}-src.tar.gz gpg: Signature made Sat May 30 11:45:01 2020 CST gpg: using RSA key 9B12C2228BDFF4F4CFE849445EF3A66D57EC647A gpg: Good signature from \"XXX YYYZZZ <yourAccount@apache.org>\" [ultimate]gular2 Copy "},{"title":"2.3 Check sha512 hash","type":1,"pageTitle":"How to Verify","url":"docs/next/devDocs/HowToVerify#23-check-sha512-hash","content":"After calculating the sha512 hash locally, verify whether it is consistent with the one on dist. for i in *.tar.gz; do echo $i; gpg --print-md SHA512 $i; done #Or gpg --print-md SHA512 apache-submarine-${release_version}-src.tar.gz # If you upload a binary package, you also need to check the sha512 hash of the binary package. gpg --print-md SHA512 apache-submarine-server-${release_version}-bin.tar.gz gpg --print-md SHA512 apache-submarine-client-${release_version}-bin.tar.gz # 或者 for i in *.tar.gz.sha512; do echo $i; sha512sum -c $i; done Copy "},{"title":"2.4. Check the file content of the source package.","type":1,"pageTitle":"How to Verify","url":"docs/next/devDocs/HowToVerify#24-check-the-file-content-of-the-source-package","content":"Unzip apache-submarine-${release_version}-src.tar.gz and check as follows: Whether the DISCLAIMER file exists and whether the content is correct.Whether the LICENSE and NOTICE file exists and whether the content is correct.Whether all files have ASF License header.Whether the source code can be compiled normally.Whether the single test is passed..... "},{"title":"2.5 Check the binary package (if the binary package is uploaded)","type":1,"pageTitle":"How to Verify","url":"docs/next/devDocs/HowToVerify#25-check-the-binary-package-if-the-binary-package-is-uploaded","content":"Unzip apache-submarine-client-${release_version}-src.tar.gz and apache-submarine-server-${release_version}-src.tar.gz, then check as follows: Whether the DISCLAIMER file exists and whether the content is correct.Whether the LICENSE and the NOTICE file exists and whether the content is correct.Whether the deployment is successful.Deploy a test environment to verify whether production and consumption can run normally.Verify what you think might go wrong. "},{"title":"How to Release","type":0,"sectionRef":"#","url":"docs/next/devDocs/HowToRelease","content":"","keywords":""},{"title":"0. Preface","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#0-preface","content":"Source Release is the focus of Apache’s attention and it is also a required content for release. Binary Release is optional, Submarine can choose whether to release the binary package to the Apache warehouse or to the Maven central warehouse. Please refer to the following link to find more details about release guidelines: How to Release Submarine Release Guidelines "},{"title":"1. Add GPG KEY","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#1-add-gpg-key","content":"Main references in this chapter:https://infra.apache.org/openpgp.html > This chapter is only needed for the first release manager of the project. "},{"title":"1.1 Install gpg","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#11-install-gpg","content":"Detailed installation documents can refer to tutorial, The environment configuration of Mac OS is as follows: $ brew install gpg $ gpg --version #Check the version,should be 2.x Copy "},{"title":"1.2 generate gpg Key","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#12-generate-gpg-key","content":"Need to pay attention to the following points:# When entering the name, it is better to be consistent with the Full name registered in ApacheThe mailbox used should be apache mailboxIt’s better to use pinyin or English for the name, otherwise there will be garbled characters Follow the hint,generate a key# ➜ ~ gpg --full-gen-key gpg (GnuPG) 2.2.20; Copyright (C) 2020 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Please select what kind of key you want: (1) RSA and RSA (default) (2) DSA and Elgamal (3) DSA (sign only) (4) RSA (sign only) (14) Existing key from card Your selection? 1 # enter 1 here RSA keys may be between 1024 and 4096 bits long. What keysize do you want? (2048) 4096 # enter 4096 here Requested keysize is 4096 bits Please specify how long the key should be valid. 0 = key does not expire <n> = key expires in n days <n>w = key expires in n weeks <n>m = key expires in n months <n>y = key expires in n years Key is valid for? (0) 0 # enter 0 here Key does not expire at all Is this correct? (y/N) y # enter y here GnuPG needs to construct a user ID to identify your key. Real name: Guangxu Cheng # enter your name here Email address: gxcheng@apache.org # enter your mailbox here Comment: # enter some comment here (Optional) You selected this USER-ID: \"Guangxu Cheng <gxcheng@apache.org>\" Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O #enter O here We need to generate a lot of random bytes. It is a good idea to perform some other action (type on the keyboard, move the mouse, utilize the disks) during the prime generation; this gives the random number generator a better chance to gain enough entropy. We need to generate a lot of random bytes. It is a good idea to perform some other action (type on the keyboard, move the mouse, utilize the disks) during the prime generation; this gives the random number generator a better chance to gain enough entropy. # A dialog box will pop up, asking you to enter the key for this gpg. ┌──────────────────────────────────────────────────────┐ │ Please enter this passphrase │ │ │ │ Passphrase: _______________________________ │ │ │ │ <OK> <Cancel> │ └──────────────────────────────────────────────────────┘ # After entering the secret key, it will be created. And it will output the following information. gpg: key 2DD587E7B10F3B1F marked as ultimately trusted gpg: revocation certificate stored as '/Users/cheng/.gnupg/openpgp-revocs.d/41936314E25F402D5F7D73152DD587E7B10F3B1F.rev' public and secret key created and signed. pub rsa4096 2020-05-19 [SC] 41936314E25F402D5F7D73152DD587E7B10F3B1F uid Guangxu Cheng <gxcheng@apache.org> sub rsa4096 2020-05-19 [E] Copy "},{"title":"1.3 Upload the generated key to the public server","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#13-upload-the-generated-key-to-the-public-server","content":"➜ ~ gpg --list-keys ------------------------------- pub rsa4096 2020-05-18 [SC] 5931F8CFD04B37A325E4465D8C0D31C4149B3A87 uid [ultimate] Guangxu Cheng <gxcheng@apache.org> sub rsa4096 2020-05-18 [E] # Send public key to keyserver via key id $ gpg --keyserver pgpkeys.mit.edu --send-key <key id> # Among them, pgpkeys.mit.edu is a randomly selected keyserver, and the keyserver list is: https://sks-keyservers.net/status/, which is automatically synchronized with each other, you can choose any one. Copy "},{"title":"1.4 Check whether the key is created successfully","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#14-check-whether-the-key-is-created-successfully","content":"Through the following URL, use the email to check whether the upload is successful or not. It will take about a minute to find out. When searching, check the show full-key hashes under advance on http://keys.gnupg.net. The query results are as follows: "},{"title":"1.5 Add your gpg public key to the KEYS file","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#15-add-your-gpg-public-key-to-the-keys-file","content":"SVN is required for this step The svn library of the DEV branch is https://dist.apache.org/repos/dist/dev/submarine The SVN library of the Release branch is https://dist.apache.org/repos/dist/release/submarine 1.5.1 Add the public key to KEYS in the dev branch to release the RC version# ➜ ~ svn co https://dist.apache.org/repos/dist/dev/submarine /tmp/submarine-dist-dev # This step is relatively slow, and all versions will be copied. If the network is disconnected, use svn cleanup to delete the lock and re-execute it, and the transfer will be resumed. ➜ ~ cd submarine-dist-dev ➜ submarine-dist-dev ~ (gpg --list-sigs YOUR_NAME@apache.org && gpg --export --armor YOUR_NAME@apache.org) >> KEYS # Append the KEY you generated to the file KEYS, it is best to check if it is correct after appending. ➜ submarine-dist-dev ~ svn add . # If there is a KEYS file before, it is not needed. ➜ submarine-dist-dev ~ svn ci -m \"add gpg key for YOUR_NAME\" # Next, you will be asked to enter a username and password, just use your apache username and password. Copy 1.5.2 Add the public key to KEYS in the release branch to release the official version# ➜ ~ svn co https://dist.apache.org/repos/dist/release/submarine /tmp/submarine-dist-release ➜ ~ cd submarine-dist-release ➜ submarine-dist-release ~ (gpg --list-sigs YOUR_NAME@apache.org && gpg --export --armor YOUR_NAME@apache.org) >> KEYS # Append the KEY you generated to the file KEYS, it is best to check if it is correct after appending. ➜ submarine-dist-release ~ svn add . # If there is a KEYS file before, it is not needed. ➜ submarine-dist-release ~ svn ci -m \"add gpg key for YOUR_NAME\" # Next, you will be asked to enter a username and password, just use your apache username and password. Copy "},{"title":"1.6 Upload GPG public key to Github account","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#16-upload-gpg-public-key-to-github-account","content":"Go to https://github.com/settings/keys and add GPG KEYS.If you find \"unverified\" is written after the key after adding it, remember to bind the mailbox used in the GPG key to your github account (https://github.com/settings/emails). "},{"title":"2. Set maven settings","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#2-set-maven-settings","content":"Skip if it has already been set In the maven configuration file ~/.m2/settings.xml, add the following <server> item <?xml version=\"1.0\" encoding=\"UTF-8\"?> <settings xsi:schemaLocation=\"http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd\" xmlns=\"http://maven.apache.org/SETTINGS/1.1.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"> <servers> <!-- Apache Repo Settings --> <server> <id>apache.snapshots.https</id> <username>{user-id}</username> <password>{user-pass}</password> </server> <server> <id>apache.releases.https</id> <username>{user-id}</username> <password>{user-pass}</password> </server> </servers> <profiles> <profile> <id>apache-release</id> <properties> <gpg.keyname>Your KEYID</gpg.keyname><!-- Your GPG Keyname here --> <!-- Use an agent: Prevents being asked for the password during the build --> <gpg.useagent>true</gpg.useagent> <gpg.passphrase>Your password of the private key</gpg.passphrase> </properties> </profile> </profiles> </settings> Copy "},{"title":"3. Compile and package","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#3-compile-and-package","content":""},{"title":"3.1 Prepare a branch","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#31-prepare-a-branch","content":"Pull the new branch from the main branch as a release branch, release-${release_version} Update CHANGES.md Check whether the code is normal, including successful compilation, all unit tests, successful RAT check, etc. # build check $ mvn clean package -Dmaven.javadoc.skip=true # RAT check $ mvn apache-rat:check Copy Change the version number "},{"title":"3.2 Create the tag","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#32-create-the-tag","content":"Before creating the tag, make sure that the code has been checked for errors, including: successful compilation, all unit tests, and successful RAT checks, etc. Create a tag with signature $ git_tag=${release_version}-${rc_version} $ git tag -s $git_tag -m \"Tagging the ${release_version} first Releae Candidate (Candidates start at zero)\" # If a error happened like gpg: signing failed: secret key not available, set the private key first. $ git config user.signingkey ${KEY_ID} Copy "},{"title":"3.3 Package the source code","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#33-package-the-source-code","content":"After the tag is successfully created, the tag source code should be packaged into a tar package. mkdir /tmp/apache-submarine-${release_version}-${rc_version} git archive --format=tar.gz --output=\"/tmp/apache-submarine-${release_version}-${rc_version}/apache-submarine-${release_version}-src.tar.gz\" --prefix=\"apache-submarine-${release_version}/\" $git_tag Copy "},{"title":"3.4 Packaged binary package","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#34-packaged-binary-package","content":"Compile the source code packaged in the previous step cd /tmp/apache-submarine-${release_version}-${rc_version} # Enter the source package directory. tar xzvf apache-submarine-${release_version}-src.tar.gz # Unzip the source package. cd apache-submarine-${release_version} # Enter the source directory. mvn compile clean install package -DskipTests # Compile. cp ./submarine-distribution/target/apache-submarine-${release_version}-bin.tar.gz /tmp/apache-submarine-${release_version}-${rc_version}/ # Copy the binary package to the source package directory to facilitate signing the package in the next step. Copy "},{"title":"3.5 Sign the source package/binary package/sha512","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#35-sign-the-source-packagebinary-packagesha512","content":"for i in *.tar.gz; do echo $i; gpg --print-md SHA512 $i > $i.sha512 ; done # Calculate SHA512 for i in *.tar.gz; do echo $i; gpg --armor --output $i.asc --detach-sig $i ; done # Calculate the signature Copy "},{"title":"3.6 Check whether the generated signature/sha512 is correct","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#36-check-whether-the-generated-signaturesha512-is-correct","content":"For example, verify that the signature is correct as follows: for i in *.tar.gz; do echo $i; gpg --verify $i.asc $i ; done Copy "},{"title":"4. Prepare for Apache release","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#4-prepare-for-apache-release","content":""},{"title":"4.1 Publish the jar package to the Apache Nexus repository","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#41-publish-the-jar-package-to-the-apache-nexus-repository","content":"cd /tmp/apache-submarine-${release_version}-${rc_version} # Enter the source package directory tar xzvf apache-submarine-${release_version}-src.tar.gz # Unzip the source package cd apache-submarine-${release_version} mvn -DskipTests deploy -Papache-release -Dmaven.javadoc.skip=true # Start upload Copy "},{"title":"4.2 Upload the tag to git repository","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#42-upload-the-tag-to-git-repository","content":"git push origin ${release_version}-${rc_version} Copy "},{"title":"4.3 Upload the compiled file to dist","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#43-upload-the-compiled-file-to-dist","content":"This step requires the use of SVN, the svn library of the DEV branch is https://dist.apache.org/repos/dist/dev/submarine "},{"title":"4.3.1 Checkout Submarine to a local directory","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#431-checkout-submarine-to-a-local-directory","content":"# This step may be slow, and all versions will be tested. If the network is broken, use svn cleanup to delete the lock and re-execute it, and the upload will be resumed. svn co https://dist.apache.org/repos/dist/dev/submarine /tmp/submarine-dist-dev Copy "},{"title":"4.3.2 Add the public key to the KEYS file and submit it to the SVN repository","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#432-add-the-public-key-to-the-keys-file-and-submit-it-to-the-svn-repository","content":"cd /tmp/submarine-dist-dev mkdir ${release_version}-${rc_version} # Create version directory # Copy the source code package and signed package here. cp /tmp/apache-submarine-${release_version}-${rc_version}/*tar.gz* ${release_version}-${rc_version}/ svn status # Check svn status. svn add ${release_version}-${rc_version} # Add to svn version. svn status # Check svn status. svn commit -m \"prepare for ${release_version} ${rc_version}\" # Submit to svn remote server. Copy "},{"title":"4.4 Shut down the Apache Staging repository","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#44-shut-down-the-apache-staging-repository","content":"Please make sure all artifacts are fine. Log in http://repository.apache.org , with Apache accountClick on Staging repositories on the left.Search for Submarine keywords and select the repository you uploaded recently.Click the Close button above, and a series of checks will be performed during this process.After the check is passed, a link will appear on the Summary tab below. Please save this link and put it in the next voting email. The link should look like: https://repository.apache.org/content/repositories/orgapachesubmarine-xxxx WARN: Please note that clicking Close may fail, please check the reason for the failure and deal with it. "},{"title":"5. Enter voting","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#5-enter-voting","content":"To vote in the Submarine community, send an email to:dev@submarine.apache.org "},{"title":"Vote in the Submarine community","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#vote-in-the-submarine-community","content":"Voting template# Title:[VOTE] Submarine-${release_version}-${rc_version} is ready for a vote! Content: Hi folks, Thanks to everyone's help on this release. I've created a release candidate (${rc_version}) for submarine ${release_version}. The highlighted features are as follows: 1. AAA 2. BBB 3. CCC The mini-submarine image is here: docker pull apache/submarine:mini-${release_version}-${rc_version} The RC tag in git is here: https://github.com/apache/submarine/releases/tag/release-${release_version}-${rc_version} The RC release artifacts are available at: http://home.apache.org/~pingsutw/submarine-${release_version}-${rc_version} The Maven staging repository is here: https://repository.apache.org/content/repositories/orgapachesubmarine-1030 My public key is here: https://dist.apache.org/repos/dist/release/submarine/KEYS *This vote will run for 7 days, ending on DDDD/EE/FF at 11:59 pm PST.* For the testing, I have verified the 1. Build from source, Install Submarine on minikube 2. Workbench UI (Experiment / Notebook / Template / Environment) 3. Experiment / Notebook / Template / Environment REST API My +1 to start. Thanks! BR, XXX Copy Announce voting results template# Title:[RESULT][VOTE] Release Apache Submarine ${release_version} ${rc_version} Content: Hello Apache Submarine PMC and Community, The vote closes now as 72hr have passed. The vote PASSES with xx (+1 non-binding) votes from the PMC, xx (+1 non-binding) vote from the rest of the developer community, and no further 0 or -1 votes. The vote thread:{vote_mail_address} Thank you for your support. Your Submarine Release Manager Copy "},{"title":"6. Officially released","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#6-officially-released","content":""},{"title":"6.1 Merge the changes from the release-${release_version} branch to the master branch","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#61-merge-the-changes-from-the-release-release_version-branch-to-the-master-branch","content":""},{"title":"6.2 Release the version in the Apache Staging repository","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#62-release-the-version-in-the-apache-staging-repository","content":"Please make sure all artifacts are fine. Log in to http://repository.apache.org with your Apache account.Click on Staging repositories on the left.Search for Submarine keywords, select your recently uploaded repository, the repository specified in the voting email.Click the Release button above, and a series of checks will be carried out during this process.It usually takes 24 hours to wait for the repository to synchronize to other data sources "},{"title":"6.3 Update official website link","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#63-update-official-website-link","content":""},{"title":"6.4. Send an email todev@submarine.apache.org","type":1,"pageTitle":"How to Release","url":"docs/next/devDocs/HowToRelease#64-send-an-email-todevsubmarineapacheorg","content":"Please make sure that the repository in 6.4 has been successfully released, generally the email is sent 24 hours after 6.4 Announce release email template: Title: [ANNOUNCE] Apache Submarine ${release_version} release! Content: Hi folks, It's a great honor for me to announce that the Apache Submarine Community has released Apache Submarine ${release_version}! The highlighted features are: 1. AAA 2. BBB 3. CCC Tons of thanks to our contributors and community! Let's keep fighting! *Apache Submarine ${release_version} released*: https://submarine.apache.org/docs/next/releases/submarine-release-${release_version} BR, XXXX Copy "},{"title":"How to Run Frontend Integration Test","type":0,"sectionRef":"#","url":"docs/next/devDocs/IntegrationTestE2E","content":"","keywords":""},{"title":"Introduction","type":1,"pageTitle":"How to Run Frontend Integration Test","url":"docs/next/devDocs/IntegrationTestE2E#introduction","content":"The test cases under the directory test-e2e are integration tests to ensure the correctness of the Submarine Workbench. These test cases can be run either locally or on GitHub Actions. "},{"title":"Run E2E test locally","type":1,"pageTitle":"How to Run Frontend Integration Test","url":"docs/next/devDocs/IntegrationTestE2E#run-e2e-test-locally","content":"Ensure you have setup the submarine locally. If not, you can refer to Submarine Local Deployment. Forward port kubectl port-forward --address 0.0.0.0 service/submarine-traefik 32080:80 Copy Modify run_frontend_e2e.sh You need to modify the port and the URL in this script to where you run the workbench on. Example: If your Submarine workbench is running on 127.0.0.1:4200, you should modify the WORKBENCH_PORT to 4200. # at submarine-test/test_e2e/run_frontend_e2e.sh ... # ======= Modifiable Variables ======= # # Note: URL must start with \"http\" # (Ref: https://www.selenium.dev/selenium/docs/api/java/org/openqa/selenium/WebDriver.html#get(java.lang.String)) WORKBENCH_PORT=8080 #<= modify this URL=\"http://127.0.0.1\" #<=modify this # ==================================== # ... Copy Run run_frontend_e2e.sh (Run a specific test case) This script will check whether the port can be accessed or not, and run the test case. # at submarine-test/test_e2e ./run_fronted_e2e.sh ${TESTCASE} # TESTCASE is the IT you want to run, ex: loginIT, experimentIT... Copy Run all test cases Following commands will compile all files and run all files ending with \"IT\" in the directory. # Make sure the Submarine workbench is running on 127.0.0.1:8080 cd submarine/submarine-test/test-e2e # Method 1: mvn verify # Method 2: mvn clean install -U Copy "},{"title":"Run E2E test in GitHub Actions","type":1,"pageTitle":"How to Run Frontend Integration Test","url":"docs/next/devDocs/IntegrationTestE2E#run-e2e-test-in-github-actions","content":"Each time a commit is pushed, GitHub Actions will be triggered automatically. "},{"title":"Add a new frontend E2E test case","type":1,"pageTitle":"How to Run Frontend Integration Test","url":"docs/next/devDocs/IntegrationTestE2E#add-a-new-frontend-e2e-test-case","content":"WARNING You MUST read the document carefully, and understand the difference between explicit wait, implicit wait, and fluent wait.Do not mix implicit and explicit waits. Doing so can cause unpredictable wait times. We define many useful functions in AbstractSubmarineIT.java. "},{"title":"Project Architecture","type":0,"sectionRef":"#","url":"docs/next/devDocs/README","content":"","keywords":""},{"title":"1. Introduction","type":1,"pageTitle":"Project Architecture","url":"docs/next/devDocs/README#1-introduction","content":"This document mainly describes the structure of each module of the Submarine project, the development and test description of each module. "},{"title":"2. Submarine Project Structure","type":1,"pageTitle":"Project Architecture","url":"docs/next/devDocs/README#2-submarine-project-structure","content":""},{"title":"2.1. submarine-client","type":1,"pageTitle":"Project Architecture","url":"docs/next/devDocs/README#21-submarine-client","content":"Provide the CLI interface for submarine user. (Currently only support YARN service (deprecated)) "},{"title":"2.2. submarine-cloud-v2","type":1,"pageTitle":"Project Architecture","url":"docs/next/devDocs/README#22-submarine-cloud-v2","content":"The operator for Submarine application. For details, please see the README on github. "},{"title":"2.3. submarine-commons","type":1,"pageTitle":"Project Architecture","url":"docs/next/devDocs/README#23-submarine-commons","content":"Define utility function used in multiple packages, mainly related to hadoop. "},{"title":"2.4. submarine-dist","type":1,"pageTitle":"Project Architecture","url":"docs/next/devDocs/README#24-submarine-dist","content":"Store the pre-release files. "},{"title":"2.5. submarine-sdk","type":1,"pageTitle":"Project Architecture","url":"docs/next/devDocs/README#25-submarine-sdk","content":"Provide Python SDK for submarine user. "},{"title":"2.6. submarine-server","type":1,"pageTitle":"Project Architecture","url":"docs/next/devDocs/README#26-submarine-server","content":"Include core server, restful api, and k8s submitter. "},{"title":"2.7. submarine-test","type":1,"pageTitle":"Project Architecture","url":"docs/next/devDocs/README#27-submarine-test","content":"Provide end-to-end and k8s test for submarine. "},{"title":"2.8. submarine-workbench","type":1,"pageTitle":"Project Architecture","url":"docs/next/devDocs/README#28-submarine-workbench","content":"workbench-server: is a Jetty-based web server service. Workbench-server provides RESTful interface and Websocket interface. The RESTful interface provides workbench-web with management capabilities for databases such as project, department, user, and role.workbench-web: is a web front-end service based on Angular.js framework. With workbench-web users can manage Submarine project, department, user, role through browser. You can also use the notebook to develop machine learning algorithms, model release and other lifecycle management. "},{"title":"2.9 dev-support","type":1,"pageTitle":"Project Architecture","url":"docs/next/devDocs/README#29-dev-support","content":"mini-submarine: by using the docker image provided by Submarine, you can experience all the functions of Submarine in a single docker environment, while mini-submarine also provides developers with a development and testing environment, Avoid the hassle of installing and deploying the runtime environment.submarine-installer: submarine-installer is our submarine runtime environment installation tool for yarn-3.1+ and above.By using submarine-installer, it is easy to install and deploy system services such asdocker, nvidia-docker, nvidia driver, ETCD, Calico network etc. required by yarn-3.1+. "},{"title":"How to Run Integration K8s Test","type":0,"sectionRef":"#","url":"docs/next/devDocs/IntegrationTestK8s","content":"","keywords":""},{"title":"Introduction","type":1,"pageTitle":"How to Run Integration K8s Test","url":"docs/next/devDocs/IntegrationTestK8s#introduction","content":"The test cases under the directory test-k8s are integration tests to ensure the correctness of the Submarine RESTful API. You can run these tests either locally or on GitHub Actions. Before running the tests, the minikube (KinD) cluster must be created. Then, compile and package the submarine project in submarine-dist directory for building a docker image. In addition, the 8080 port in submarine-traefik should be forwarded. "},{"title":"Run k8s test locally","type":1,"pageTitle":"How to Run Integration K8s Test","url":"docs/next/devDocs/IntegrationTestK8s#run-k8s-test-locally","content":"Ensure you have setup the KinD cluster or minikube cluster. If you haven't, follow this minikube tutorial Build the submarine from source and upgrade the server pod through this guide Forward port kubectl port-forward --address 0.0.0.0 service/submarine-traefik 8080:80 Copy Install the latest package \"submarine-server-core\" into the local repository, for use as a dependency in the module test-k8s mvn install -DskipTests Copy Execute the test command mvn verify -DskipRat -pl :submarine-test-k8s -Phadoop-2.9 -B Copy  "},{"title":"Run k8s test in GitHub Actions","type":1,"pageTitle":"How to Run Integration K8s Test","url":"docs/next/devDocs/IntegrationTestK8s#run-k8s-test-in-github-actions","content":"Each time a code is submitted, GitHub Actions is triggered automatically. "},{"title":"Deploy Submarine with Helm","type":0,"sectionRef":"#","url":"docs/next/gettingStarted/helm","content":"","keywords":""},{"title":"Prerequisite","type":1,"pageTitle":"Deploy Submarine with Helm","url":"docs/next/gettingStarted/helm#prerequisite","content":"Install Helm v3: https://helm.sh/docs/intro/install/ A Kubernetes environment (ex: minikube or kind) "},{"title":"Deploy Submarine to Kubernetes","type":1,"pageTitle":"Deploy Submarine with Helm","url":"docs/next/gettingStarted/helm#deploy-submarine-to-kubernetes","content":"git clone https://github.com/apache/submarine.git cd submarine helm install submarine ./helm-charts/submarine Copy With these commands, the Submarine service will be deployed to the \"default\" namespace.The first time installation will take about 10 mins because the docker images are pulled from apache/submarine on DockerHub. "},{"title":"Verify installation","type":1,"pageTitle":"Deploy Submarine with Helm","url":"docs/next/gettingStarted/helm#verify-installation","content":"kubectl get all Copy TODO: screenshot "},{"title":"Uninstall Submarine","type":1,"pageTitle":"Deploy Submarine with Helm","url":"docs/next/gettingStarted/helm#uninstall-submarine","content":"helm uninstall submarine # Check helm ls Copy Helm chart configuation (values.yaml)# "},{"title":"Volume Type","type":1,"pageTitle":"Deploy Submarine with Helm","url":"docs/next/gettingStarted/helm#volume-type","content":"Submarine can support various volume types, currently including hostPath (default) and NFS. It can be easily configured in the ./helm-charts/submarine/values.yaml, or you can override the default values in values.yaml by helm CLI. hostPath# In hostPath, you can store data directly in your node.Usage: Configure setting in ./helm-charts/submarine/values.yaml.To enable hostPath storage, set .storage.type to host.To set the root path for your storage, set .storage.host.root to <any-path> Example: # ./helm-charts/submarine/values.yaml storage: type: host host: root: /tmp Copy NFS (Network File System)# In NFS, it allows multiple clients to access a shared space.Prerequisite: A pre-existing NFS server. You have two options. Create NFS server kubectl create -f ./dev-support/nfs-server/nfs-server.yaml Copy It will create a nfs-server pod in kubernetes cluster, and expose nfs-server ip at 10.96.0.2Use your own NFS server Install NFS dependencies in your nodes Ubuntu apt-get install -y nfs-common Copy CentOS yum install nfs-util Copy Usage: Configure setting in ./helm-charts/submarine/values.yaml.To enable NFS storage, set .storage.type to nfs.To set the ip for NFS server, set .storage.nfs.ip to <any-ip> Example: # ./helm-charts/submarine/values.yaml storage: type: nfs nfs: ip: 10.96.0.2 Copy "},{"title":"Access to Submarine Server","type":1,"pageTitle":"Deploy Submarine with Helm","url":"docs/next/gettingStarted/helm#access-to-submarine-server","content":"Submarine server by default expose 8080 port within K8s cluster. After Submarine v0.5 uses Traefik as reverse-proxy by default. If you don't want to use Traefik, you can modify below value to false in ./helm-charts/submarine/values.yaml. # Use Traefik by default traefik: enabled: true Copy To access the server from outside of the cluster, we use Traefik ingress controller and NodePort for external access.\\ Please refer to ./helm-charts/submarine/charts/traefik/values.yaml and Traefik docsfor more details if you want to customize the default value for Traefik. Notice:If you use kind to run local Kubernetes cluster, please refer to this docsand set the configuration \"extraPortMappings\" when creating the k8s cluster. kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 nodes: - role: control-plane extraPortMappings: - containerPort: 32080 hostPort: [the port you want to access] Copy # Use nodePort and Traefik ingress controller by default. # To access the submarine server, open the following URL in your browser. http://127.0.0.1:32080 Copy If minikube is installed, use the following command to find the URL to the Submarine server. $ minikube service submarine-traefik --url Copy "},{"title":"Setup a Kubernetes cluster using KinD","type":0,"sectionRef":"#","url":"docs/next/gettingStarted/kind","content":"","keywords":""},{"title":"Create Kubernetes cluster with KinD","type":1,"pageTitle":"Setup a Kubernetes cluster using KinD","url":"docs/next/gettingStarted/kind#create-kubernetes-cluster-with-kind","content":"We recommend users developing Submarine with minikube. However, KinD is also an option to setup a Kubernetes cluster on your local machine. Run the following command, and specify the KinD version and Kubernetes version here. # Download the specific version of KinD (must >= v0.6.0) export KIND_VERSION=v0.11.1 curl -Lo ./kind https://github.com/kubernetes-sigs/kind/releases/download/${KIND_VERSION}/kind-linux-amd64 # Make the binary executable chmod +x ./kind # Move the binary to your executable path sudo mv ./kind /usr/local/bin/ # Create cluster with specific version of kubernetes export KUBE_VERSION=v1.15.12 kind create cluster --image kindest/node:${KUBE_VERSION} Copy "},{"title":"Kubernetes Dashboard (optional)","type":1,"pageTitle":"Setup a Kubernetes cluster using KinD","url":"docs/next/gettingStarted/kind#kubernetes-dashboard-optional","content":""},{"title":"Deploy","type":1,"pageTitle":"Setup a Kubernetes cluster using KinD","url":"docs/next/gettingStarted/kind#deploy","content":"To deploy Dashboard, execute the following command: kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta8/aio/deploy/recommended.yaml Copy "},{"title":"Create RBAC","type":1,"pageTitle":"Setup a Kubernetes cluster using KinD","url":"docs/next/gettingStarted/kind#create-rbac","content":"Run the following commands to grant the cluster access permission of dashboard: kubectl create serviceaccount dashboard-admin-sa kubectl create clusterrolebinding dashboard-admin-sa --clusterrole=cluster-admin --serviceaccount=default:dashboard-admin-sa Copy "},{"title":"Get access token (optional)","type":1,"pageTitle":"Setup a Kubernetes cluster using KinD","url":"docs/next/gettingStarted/kind#get-access-token-optional","content":"If you want to use the token to login the dashboard, run the following commands to get key: kubectl get secrets # select the right dashboard-admin-sa-token to describe the secret kubectl describe secret dashboard-admin-sa-token-6nhkx Copy "},{"title":"Start dashboard service","type":1,"pageTitle":"Setup a Kubernetes cluster using KinD","url":"docs/next/gettingStarted/kind#start-dashboard-service","content":"kubectl proxy Copy Now access Dashboard at: http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/ Dashboard screenshot:  "},{"title":"Download Apache Submarine","type":0,"sectionRef":"#","url":"docs/next/download","content":"","keywords":""},{"title":"Verify the integrity of the files","type":1,"pageTitle":"Download Apache Submarine","url":"docs/next/download#verify-the-integrity-of-the-files","content":"It is essential that you verify the integrity of the downloaded files using the PGP or MD5 signatures. This signature should be matched against the KEYS file. gpg --import KEYS gpg --verify submarine-dist-X.Y.Z-src.tar.gz.asc Copy "},{"title":"Old releases","type":1,"pageTitle":"Download Apache Submarine","url":"docs/next/download#old-releases","content":"Apache Submarine 0.5.0 released on Dec 17, 2020 (release notes) (git tag) Binary package:submarine-dist-0.5.0-hadoop-2.9.tar.gz (505 MB, checksum, signature)Source:submarine-dist-0.5.0-src.tar.gz (5.0 MB, checksum, signature))Docker images: mini-submarine docker pull apache/submarine:mini-0.5.0submarine server docker pull apache/submarine:server-0.5.0submarine database docker pull apache/submarine:database-0.5.0submarine jupyter-notebook docker pull apache/submarine:jupyter-notebook-0.5.0 SDK: PySubmarine pip install apache-submarine==0.5.0 Apache Submarine 0.4.0 released on Jul 05, 2020 (release notes) (git tag) Binary package with submarine:submarine-dist-0.4.0-hadoop-2.9.tar.gz (550 MB,checksum,signature)Source:submarine-dist-0.4.0-src.tar.gz (6 MB,checksum,signature)Docker images:mini-submarine (guide) Apache Submarine 0.3.0 released on Feb 01, 2020 (release notes) (git tag) Binary package with submarine:submarine-dist-0.3.0-hadoop-2.9.tar.gz (550 MB,checksum,signature)Source:submarine-dist-0.3.0-src.tar.gz (6 MB,checksum,signature)Docker images:mini-submarine (guide) Apache Submarine 0.2.0 released on Jul 2, 2019 Binary package with submarine:hadoop-submarine-0.2.0.tar.gz (111 MB,checksum,signature,Announcement) Source:hadoop-submarine-0.2.0-src.tar.gz (1.4 MB,checksum,signature) Apache Submarine 0.1.0 released on Jan 16, 2019 Binary package with submarine:submarine-0.2.0-bin-all.tgz (97 MB,checksum,signature,Announcement) Source:submarine-hadoop-3.2.0-src.tar.gz (1.1 MB,checksum,signature) "},{"title":"Jupyter Notebook","type":0,"sectionRef":"#","url":"docs/next/gettingStarted/notebook","content":"","keywords":""},{"title":"Working with notebooks","type":1,"pageTitle":"Jupyter Notebook","url":"docs/next/gettingStarted/notebook#working-with-notebooks","content":"We recommend using Web UI to manage notebooks. "},{"title":"Notebooks Web UI","type":1,"pageTitle":"Jupyter Notebook","url":"docs/next/gettingStarted/notebook#notebooks-web-ui","content":"Notebooks can be started from the Web UI. You can click the “Notebook” tab in the left-hand panel to manage your notebooks.  To create a new notebook server, click “New Notebook”. You should see a form for entering details of your new notebook server. Notebook Name : Name of the notebook server. It should follow the rules below. Contain at most 63 characters.Contain only lowercase alphanumeric characters or '-'.Start with an alphabetic character.End with an alphanumeric character. Environment : It defines a set of libraries and docker image.CPU and MemoryGPU (optional)EnvVar (optional) : Injects environment variables into the notebook. If you want to use notebook-gpu-env, you should set up the gpu environment in your kubernetes. You can install NVIDIA/k8s-device-plugin. The list of prerequisites for running the NVIDIA device plugin is described below NVIDIA drivers ~= 384.81nvidia-docker version > 2.0docker configured with nvidia as the default runtimeKubernetes version >= 1.10 If you’re not sure which environment you need, please choose the environment “notebook-env” for the new notebook.  You should see your new notebook server. Click the name of your notebook server to connect to it.  "},{"title":"Experiment with your notebook","type":1,"pageTitle":"Jupyter Notebook","url":"docs/next/gettingStarted/notebook#experiment-with-your-notebook","content":"The environment “notebook-env” includes Submarine Python SDK which can talk to Submarine Server to create experiments, as the example below: from __future__ import print_function import submarine from submarine.client.models.environment_spec import EnvironmentSpec from submarine.client.models.experiment_spec import ExperimentSpec from submarine.client.models.experiment_task_spec import ExperimentTaskSpec from submarine.client.models.experiment_meta import ExperimentMeta from submarine.client.models.code_spec import CodeSpec # Create Submarine Client submarine_client = submarine.ExperimentClient() # Define TensorFlow experiment spec environment = EnvironmentSpec(image='apache/submarine:tf-dist-mnist-test-1.0') experiment_meta = ExperimentMeta(name='mnist-dist', namespace='default', framework='Tensorflow', cmd='python /var/tf_dist_mnist/dist_mnist.py --train_steps=100', env_vars={'ENV1': 'ENV1'}) worker_spec = ExperimentTaskSpec(resources='cpu=1,memory=1024M', replicas=1) ps_spec = ExperimentTaskSpec(resources='cpu=1,memory=1024M', replicas=1) code_spec = CodeSpec(sync_mode='git', url='https://github.com/apache/submarine.git') experiment_spec = ExperimentSpec(meta=experiment_meta, environment=environment, code=code_spec, spec={'Ps' : ps_spec,'Worker': worker_spec}) # Create experiment experiment = submarine_client.create_experiment(experiment_spec=experiment_spec) Copy You can create a new notebook, paste the above code and run it. Or, you can find the notebook submarine_experiment_sdk.ipynb inside the launched notebook session. You can open it, try it out. After experiment submitted to Submarine server, you can find the experiment jobs on the UI. "},{"title":"Submarine Python SDK","type":0,"sectionRef":"#","url":"docs/next/gettingStarted/python-sdk","content":"","keywords":""},{"title":"Prepare Python Environment to run Submarine SDK","type":1,"pageTitle":"Submarine Python SDK","url":"docs/next/gettingStarted/python-sdk#prepare-python-environment-to-run-submarine-sdk","content":"Submarine SDK requires Python3.7+. It's better to use a new Python environment created by Anoconda or Python virtualenv to try this to avoid trouble to existing Python environment. A sample Python virtual env can be setup like this: wget https://files.pythonhosted.org/packages/33/bc/fa0b5347139cd9564f0d44ebd2b147ac97c36b2403943dbee8a25fd74012/virtualenv-16.0.0.tar.gz tar xf virtualenv-16.0.0.tar.gz # Make sure to install using Python 3 python3 virtualenv-16.0.0/virtualenv.py venv . venv/bin/activate Copy "},{"title":"Install Submarine SDK","type":1,"pageTitle":"Submarine Python SDK","url":"docs/next/gettingStarted/python-sdk#install-submarine-sdk","content":""},{"title":"Install SDK from pypi.org (recommended)","type":1,"pageTitle":"Submarine Python SDK","url":"docs/next/gettingStarted/python-sdk#install-sdk-from-pypiorg-recommended","content":"Starting from 0.4.0, Submarine provides Python SDK. Please change it to a proper version needed. More detail: https://pypi.org/project/apache-submarine/ # Install latest stable version pip install apache-submarine # Install specific version pip install apache-submarine==<REPLACE_VERSION> Copy "},{"title":"Install SDK from source code","type":1,"pageTitle":"Submarine Python SDK","url":"docs/next/gettingStarted/python-sdk#install-sdk-from-source-code","content":"Please first clone code from github or go to http://submarine.apache.org/download.html to download released source code. git clone https://github.com/apache/submarine.git # (optional) chackout specific branch or release git checkout <correct release tag/branch> cd submarine/submarine-sdk/pysubmarine pip install . Copy "},{"title":"Manage Submarine Experiment","type":1,"pageTitle":"Submarine Python SDK","url":"docs/next/gettingStarted/python-sdk#manage-submarine-experiment","content":"Assuming you've installed submarine on K8s and forward the traefik service to localhost, now you can open a Python shell, Jupyter notebook or any tools with Submarine SDK installed. Follow SDK experiment example to run an experiment. "},{"title":"Training a DeepFM model","type":1,"pageTitle":"Submarine Python SDK","url":"docs/next/gettingStarted/python-sdk#training-a-deepfm-model","content":"The Submarine also supports users to train an easy-to-use CTR model with a few lines of code and a configuration file, so they don’t need to reimplement the model by themself. In addition, they can train the model on both local on distributed systems, such as Hadoop or Kubernetes. Follow SDK DeepFM example to try the model. "},{"title":"Quickstart","type":0,"sectionRef":"#","url":"docs/next/gettingStarted/quickstart","content":"","keywords":""},{"title":"Installation","type":1,"pageTitle":"Quickstart","url":"docs/next/gettingStarted/quickstart#installation","content":""},{"title":"Prepare a Kubernetes cluster","type":1,"pageTitle":"Quickstart","url":"docs/next/gettingStarted/quickstart#prepare-a-kubernetes-cluster","content":"Prerequisite Check dependency page for the compatible versionkubectlhelm (Helm v3 is minimum requirement.)minikube. Start minikube cluster minikube start --vm-driver=docker --cpus 8 --memory 4096 --kubernetes-version v1.21.2 Copy "},{"title":"Launch submarine in the cluster","type":1,"pageTitle":"Quickstart","url":"docs/next/gettingStarted/quickstart#launch-submarine-in-the-cluster","content":"Clone the project git clone https://github.com/apache/submarine.git Copy Install the submarine operator and dependencies by helm chart cd submarine helm install submarine ./helm-charts/submarine Copy Create a Submarine custom resource and the operator will create the submarine server, database, etc. for us. kubectl apply -f submarine-cloud-v2/artifacts/examples/example-submarine.yaml Copy "},{"title":"Ensure submarine is ready","type":1,"pageTitle":"Quickstart","url":"docs/next/gettingStarted/quickstart#ensure-submarine-is-ready","content":"Use kubectl to query the status of pods kubectl get pods Copy Make sure each pod is Running NAME READY STATUS RESTARTS AGE notebook-controller-deployment-5d4f5f874c-mnbc8 1/1 Running 0 61m pytorch-operator-844c866d54-xm8nl 1/1 Running 2 61m submarine-database-85bd68dbc5-qggtm 1/1 Running 0 11m submarine-minio-76465444f6-hdgdp 1/1 Running 0 11m submarine-mlflow-75f86d8f4d-rj2z7 1/1 Running 0 11m submarine-operator-5dd79cdf86-gpm2p 1/1 Running 0 61m submarine-server-68985b767-vjdvx 1/1 Running 0 11m submarine-tensorboard-5df8499fd4-vnklf 1/1 Running 0 11m submarine-traefik-7cbcfd4bd9-wbf8b 1/1 Running 0 61m tf-job-operator-6bb69fd44-zmlmr 1/1 Running 1 61m Copy "},{"title":"Connect to workbench","type":1,"pageTitle":"Quickstart","url":"docs/next/gettingStarted/quickstart#connect-to-workbench","content":"Exposing service # Method 1 -- use minikube ip minikube ip # you'll get the IP address of minikube, ex: 192.168.49.2 # Method 2 -- use port-forwarding kubectl port-forward --address 0.0.0.0 service/submarine-traefik 32080:80 Copy View workbench If you use method 1, go to http://{minikube ip}:32080. For example, http://192.168.49.2:32080. If you use method 2, go to http://0.0.0.0:32080. "},{"title":"Example: Submit a mnist distributed example","type":1,"pageTitle":"Quickstart","url":"docs/next/gettingStarted/quickstart#example-submit-a-mnist-distributed-example","content":"We put the code of this example here. train.py is our training script, and build.sh is the script to build a docker image. "},{"title":"1. Write a python script for distributed training","type":1,"pageTitle":"Quickstart","url":"docs/next/gettingStarted/quickstart#1-write-a-python-script-for-distributed-training","content":"Take a simple mnist tensorflow script as an example. We choose MultiWorkerMirroredStrategy as our distributed strategy. \"\"\" ./dev-support/examples/quickstart/train.py Reference: https://github.com/kubeflow/tf-operator/blob/master/examples/v1/distribution_strategy/keras-API/multi_worker_strategy-with-keras.py \"\"\" import tensorflow_datasets as tfds import tensorflow as tf from tensorflow.keras import layers, models import submarine def make_datasets_unbatched(): BUFFER_SIZE = 10000 # Scaling MNIST data from (0, 255] to (0., 1.] def scale(image, label): image = tf.cast(image, tf.float32) image /= 255 return image, label datasets, _ = tfds.load(name='mnist', with_info=True, as_supervised=True) return datasets['train'].map(scale).cache().shuffle(BUFFER_SIZE) def build_and_compile_cnn_model(): model = models.Sequential() model.add( layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1))) model.add(layers.MaxPooling2D((2, 2))) model.add(layers.Conv2D(64, (3, 3), activation='relu')) model.add(layers.MaxPooling2D((2, 2))) model.add(layers.Conv2D(64, (3, 3), activation='relu')) model.add(layers.Flatten()) model.add(layers.Dense(64, activation='relu')) model.add(layers.Dense(10, activation='softmax')) model.summary() model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) return model def main(): strategy = tf.distribute.experimental.MultiWorkerMirroredStrategy( communication=tf.distribute.experimental.CollectiveCommunication.AUTO) BATCH_SIZE_PER_REPLICA = 4 BATCH_SIZE = BATCH_SIZE_PER_REPLICA * strategy.num_replicas_in_sync with strategy.scope(): ds_train = make_datasets_unbatched().batch(BATCH_SIZE).repeat() options = tf.data.Options() options.experimental_distribute.auto_shard_policy = \\ tf.data.experimental.AutoShardPolicy.DATA ds_train = ds_train.with_options(options) # Model building/compiling need to be within `strategy.scope()`. multi_worker_model = build_and_compile_cnn_model() class MyCallback(tf.keras.callbacks.Callback): def on_epoch_end(self, epoch, logs=None): # monitor the loss and accuracy print(logs) submarine.log_metrics({\"loss\": logs[\"loss\"], \"accuracy\": logs[\"accuracy\"]}, epoch) multi_worker_model.fit(ds_train, epochs=10, steps_per_epoch=70, callbacks=[MyCallback()]) if __name__ == '__main__': main() Copy "},{"title":"2. Prepare an environment compatible with the training","type":1,"pageTitle":"Quickstart","url":"docs/next/gettingStarted/quickstart#2-prepare-an-environment-compatible-with-the-training","content":"Build a docker image equipped with the requirement of the environment. eval $(minikube docker-env) ./dev-support/examples/quickstart/build.sh Copy "},{"title":"3. Submit the experiment","type":1,"pageTitle":"Quickstart","url":"docs/next/gettingStarted/quickstart#3-submit-the-experiment","content":"Open submarine workbench and click + New Experiment Fill the form accordingly. Here we set 3 workers. Step 1Step 2Step 3The experiment is successfully submitted "},{"title":"4. Monitor the process","type":1,"pageTitle":"Quickstart","url":"docs/next/gettingStarted/quickstart#4-monitor-the-process","content":"In our code, we use submarine from submarine-sdk to record the metrics. To see the result, click corresponding experiment with name quickstart in the workbench.To see the metrics of each worker, you can select a worker from the left top list.  "},{"title":"5. Serve the model (In development)","type":1,"pageTitle":"Quickstart","url":"docs/next/gettingStarted/quickstart#5-serve-the-model-in-development","content":""},{"title":"Environment REST API","type":0,"sectionRef":"#","url":"docs/next/userDocs/api/environment","content":"","keywords":""},{"title":"Create Environment","type":1,"pageTitle":"Environment REST API","url":"docs/next/userDocs/api/environment#create-environment","content":"POST /api/v1/environment Copy "},{"title":"Parameters","type":1,"pageTitle":"Environment REST API","url":"docs/next/userDocs/api/environment#parameters","content":"Put EnvironmentSpec in request body. EnvironmentSpec# Field Name\tType\tDescriptionname\tString\tEnvironment name. dockerImage\tString\tDocker image name. kernelSpec\tKernelSpec\tEnvironment spec. description\tString\tDescription of environment. KernelSpec# Field Name\tType\tDescriptionname\tString\tKernel name. channels\tList<String>\tNames of the channels. condaDependencies\tList<String>\tList of kernel conda dependencies. pipDependencies\tList<String>\tList of kernel pip dependencies. "},{"title":"Code Example","type":1,"pageTitle":"Environment REST API","url":"docs/next/userDocs/api/environment#code-example","content":"shell curl -X POST -H \"Content-Type: application/json\" -d ' { \"name\": \"my-submarine-env\", \"dockerImage\" : \"continuumio/anaconda3\", \"kernelSpec\" : { \"name\" : \"team_default_python_3.7\", \"channels\" : [\"defaults\"], \"condaDependencies\" : [\"_ipyw_jlab_nb_ext_conf=0.1.0=py37_0\", \"alabaster=0.7.12=py37_0\", \"anaconda=2020.02=py37_0\", \"anaconda-client=1.7.2=py37_0\", \"anaconda-navigator=1.9.12=py37_0\"], \"pipDependencies\" : [\"apache-submarine==0.5.0\", \"pyarrow==0.17.0\"] } } ' http://127.0.0.1:32080/api/v1/environment Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ \"environmentId\":\"environment_1626160071451_0001\", \"environmentSpec\":{ \"name\":\"my-submarine-env\", \"dockerImage\":\"continuumio/anaconda3\", \"kernelSpec\":{ \"name\":\"team_default_python_3.7\", \"channels\":[\"defaults\"], \"condaDependencies\": [\"_ipyw_jlab_nb_ext_conf\\u003d0.1.0\\u003dpy37_0\", \"alabaster\\u003d0.7.12\\u003dpy37_0\", \"anaconda\\u003d2020.02\\u003dpy37_0\", \"anaconda-client\\u003d1.7.2\\u003dpy37_0\", \"anaconda-navigator\\u003d1.9.12\\u003dpy37_0\"], \"pipDependencies\": [\"apache-submarine\\u003d\\u003d0.5.0\", \"pyarrow\\u003d\\u003d0.17.0\"] }, \"description\":null, \"image\":null } }, \"attributes\":{} } Copy "},{"title":"List Environment","type":1,"pageTitle":"Environment REST API","url":"docs/next/userDocs/api/environment#list-environment","content":"GET /api/v1/environment Copy "},{"title":"Code Example","type":1,"pageTitle":"Environment REST API","url":"docs/next/userDocs/api/environment#code-example-1","content":"shell curl -X GET http://127.0.0.1:32080/api/v1/environment Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":[ { \"environmentId\":\"environment_1600862964725_0002\", \"environmentSpec\":{ \"name\":\"notebook-gpu-env\", \"dockerImage\":\"apache/submarine:jupyter-notebook-gpu-0.7.0-SNAPSHOT\", \"kernelSpec\":{ \"name\":\"submarine_jupyter_py3\", \"channels\":[\"defaults\"], \"condaDependencies\":[], \"pipDependencies\":[] }, \"description\":null, \"image\":null } }, { \"environmentId\":\"environment_1626160071451_0001\", \"environmentSpec\":{ \"name\":\"my-submarine-env\", \"dockerImage\":\"continuumio/anaconda3\", \"kernelSpec\":{ \"name\":\"team_default_python_3.7\", \"channels\":[\"defaults\"], \"condaDependencies\": [\"_ipyw_jlab_nb_ext_conf\\u003d0.1.0\\u003dpy37_0\", \"alabaster\\u003d0.7.12\\u003dpy37_0\", \"anaconda\\u003d2020.02\\u003dpy37_0\", \"anaconda-client\\u003d1.7.2\\u003dpy37_0\", \"anaconda-navigator\\u003d1.9.12\\u003dpy37_0\"], \"pipDependencies\": [\"apache-submarine\\u003d\\u003d0.5.0\", \"pyarrow\\u003d\\u003d0.17.0\"] }, \"description\":null, \"image\":null } }, { \"environmentId\":\"environment_1600862964725_0001\", \"environmentSpec\":{ \"name\":\"notebook-env\", \"dockerImage\":\"apache/submarine:jupyter-notebook-0.7.0-SNAPSHOT\", \"kernelSpec\":{ \"name\":\"submarine_jupyter_py3\", \"channels\":[\"defaults\"], \"condaDependencies\":[], \"pipDependencies\":[] }, \"description\":null, \"image\":null } } ], \"attributes\":{} } Copy "},{"title":"Get Environment","type":1,"pageTitle":"Environment REST API","url":"docs/next/userDocs/api/environment#get-environment","content":"GET /api/v1/environment/{name} Copy "},{"title":"Parameters","type":1,"pageTitle":"Environment REST API","url":"docs/next/userDocs/api/environment#parameters-1","content":"Field Name\tType\tIn\tDescriptionname\tString\tpath\tEnvironment name. "},{"title":"Code Example","type":1,"pageTitle":"Environment REST API","url":"docs/next/userDocs/api/environment#code-example-2","content":"shell curl -X GET http://127.0.0.1:32080/api/v1/environment/my-submarine-env Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ \"environmentId\":\"environment_1626160071451_0001\", \"environmentSpec\":{ \"name\":\"my-submarine-env\", \"dockerImage\":\"continuumio/anaconda3\", \"kernelSpec\":{ \"name\":\"team_default_python_3.7\", \"channels\":[\"defaults\"], \"condaDependencies\": [\"_ipyw_jlab_nb_ext_conf\\u003d0.1.0\\u003dpy37_0\", \"alabaster\\u003d0.7.12\\u003dpy37_0\", \"anaconda\\u003d2020.02\\u003dpy37_0\", \"anaconda-client\\u003d1.7.2\\u003dpy37_0\", \"anaconda-navigator\\u003d1.9.12\\u003dpy37_0\"], \"pipDependencies\": [\"apache-submarine\\u003d\\u003d0.5.0\", \"pyarrow\\u003d\\u003d0.17.0\"] }, \"description\":null, \"image\":null } }, \"attributes\":{} } Copy "},{"title":"Patch Environment","type":1,"pageTitle":"Environment REST API","url":"docs/next/userDocs/api/environment#patch-environment","content":"PATCH /api/v1/environment/{name} Copy "},{"title":"Parameters","type":1,"pageTitle":"Environment REST API","url":"docs/next/userDocs/api/environment#parameters-2","content":"Field Name\tType\tIn\tDescriptionname\tString\tpath and body\tEnvironment name. dockerImage\tString\tbody\tDocker image name. kernelSpec\tKernelSpec\tbody\tEnvironment spec. description\tString\tbody\tDescription of environment. This field is optional. "},{"title":"Code Example","type":1,"pageTitle":"Environment REST API","url":"docs/next/userDocs/api/environment#code-example-3","content":"shell curl -X PATCH -H \"Content-Type: application/json\" -d ' { \"name\": \"my-submarine-env\", \"dockerImage\" : \"continuumio/anaconda3\", \"kernelSpec\" : { \"name\" : \"team_default_python_3.7_updated\", \"channels\" : [\"defaults\"], \"condaDependencies\" : [\"_ipyw_jlab_nb_ext_conf=0.1.0=py37_0\", \"alabaster=0.7.12=py37_0\"], \"pipDependencies\" : [] } } ' http://127.0.0.1:32080/api/v1/environment/my-submarine-env Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ \"environmentId\":\"environment_1626160071451_0003\", \"environmentSpec\":{ \"name\":\"my-submarine-env\", \"dockerImage\":\"continuumio/anaconda3\", \"kernelSpec\":{ \"name\":\"team_default_python_3.7_updated\", \"channels\":[\"defaults\"], \"condaDependencies\": [\"_ipyw_jlab_nb_ext_conf\\u003d0.1.0\\u003dpy37_0\", \"alabaster\\u003d0.7.12\\u003dpy37_0\"], \"pipDependencies\":[] }, \"description\":null, \"image\":null } }, \"attributes\":{} } Copy "},{"title":"Delete Environment","type":1,"pageTitle":"Environment REST API","url":"docs/next/userDocs/api/environment#delete-environment","content":"DELETE /api/v1/environment/{name} Copy "},{"title":"Parameters","type":1,"pageTitle":"Environment REST API","url":"docs/next/userDocs/api/environment#parameters-3","content":"Field Name\tType\tIn\tDescriptionname\tString\tpath\tEnvironment name. "},{"title":"Code Example","type":1,"pageTitle":"Environment REST API","url":"docs/next/userDocs/api/environment#code-example-4","content":"shell curl -X DELETE http://127.0.0.1:32080/api/v1/environment/my-submarine-env Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ \"environmentId\":\"environment_1626160071451_0001\", \"environmentSpec\":{ \"name\":\"my-submarine-env\", \"dockerImage\":\"continuumio/anaconda3\", \"kernelSpec\":{ \"name\":\"team_default_python_3.7\", \"channels\":[\"defaults\"], \"condaDependencies\": [\"_ipyw_jlab_nb_ext_conf\\u003d0.1.0\\u003dpy37_0\", \"alabaster\\u003d0.7.12\\u003dpy37_0\", \"anaconda\\u003d2020.02\\u003dpy37_0\", \"anaconda-client\\u003d1.7.2\\u003dpy37_0\", \"anaconda-navigator\\u003d1.9.12\\u003dpy37_0\"], \"pipDependencies\": [\"apache-submarine\\u003d\\u003d0.5.0\", \"pyarrow\\u003d\\u003d0.17.0\"] }, \"description\":null, \"image\":null } },\"attributes\":{} } Copy "},{"title":"Experiment REST API","type":0,"sectionRef":"#","url":"docs/next/userDocs/api/experiment","content":"","keywords":""},{"title":"Create Experiment (Using Anonymous/Embedded Environment)","type":1,"pageTitle":"Experiment REST API","url":"docs/next/userDocs/api/experiment#create-experiment-using-anonymousembedded-environment","content":"POST /api/v1/experiment Copy "},{"title":"Parameters","type":1,"pageTitle":"Experiment REST API","url":"docs/next/userDocs/api/experiment#parameters","content":"Put ExperimentSpec in request body. ExperimentSpec# Field Name\tType\tDescriptionmeta\tExperimentMeta\tMeta data of the experiment template. environment\tEnvironmentSpec\tEnvironment of the experiment template. spec\tMap<String, ExperimentTaskSpec>\tSpec of pods. code\tCodeSpec\tExperiment codespec. ExperimentMeta# Field Name\tType\tDescriptionname\tString\tExperiment name. namespace\tString\tExperiment namespace. framework\tString\tExperiemnt framework. cmd\tString\tCommand. envVars\tMap<String, String>\tEnvironmental variables. EnvironmentSpec# There are two types of environment: Anonymous and Predefined. Anonymous environment: only specify dockerImage in environment spec. The container will be built on the docker image.Embedded environment: specify name in environment spec. The container will be built on the existing environment (including dockerImage and kernalSpec). See more details in environment api. ExperimentTaskSpec# Field Name\tType\tDescriptionreplicas\tInteger\tNumbers of replicas. resoureces\tString\tResouces of the task name\tString\tTask name. image\tString\tImage name. cmd\tString\tCommand. envVars\tMap<String, String>\tEnvironmental variables. CodeSpec# Currently only support pulling from github. HDFS, NFS and s3 are in development Field Name\tType\tDescriptionsyncMode\tString (git|hdfs|nfs|s3)\tsync mode of code spec. url\tString\turl of code spec. "},{"title":"Code Example","type":1,"pageTitle":"Experiment REST API","url":"docs/next/userDocs/api/experiment#code-example","content":"shell curl -X POST -H \"Content-Type: application/json\" -d ' { \"meta\": { \"name\": \"tf-mnist-json\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=2048M\" } } } ' http://127.0.0.1:32080/api/v1/experiment Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ \"experimentId\":\"experiment_1626160071451_0002\", \"name\":\"tf-mnist-json\", \"uid\":\"5a6ec922-6c90-43d4-844f-039f6804ed36\", \"status\":\"Accepted\", \"acceptedTime\":\"2021-07-13T16:47:51.000+08:00\", \"createdTime\":null, \"runningTime\":null, \"finishedTime\":null, \"spec\":{ \"meta\":{ \"name\":\"tf-mnist-json\", \"namespace\":\"default\", \"framework\":\"TensorFlow\", \"cmd\":\"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150\", \"envVars\":{\"ENV_1\":\"ENV1\"} }, \"environment\":{ \"name\":null, \"dockerImage\":null, \"kernelSpec\":null, \"description\":null, \"image\":\"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\":{ \"Ps\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"1024M\",\"cpu\":\"1\"} }, \"Worker\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d2048M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"2048M\",\"cpu\":\"1\"} } }, \"code\":null } }, \"attributes\":{} } Copy "},{"title":"Create Experiment (Using Pre-defined/Stored Environment)","type":1,"pageTitle":"Experiment REST API","url":"docs/next/userDocs/api/experiment#create-experiment-using-pre-definedstored-environment","content":"POST /api/v1/experiment Copy "},{"title":"Parameters","type":1,"pageTitle":"Experiment REST API","url":"docs/next/userDocs/api/experiment#parameters-1","content":"Put ExperimentSpec in request body. "},{"title":"Code Example","type":1,"pageTitle":"Experiment REST API","url":"docs/next/userDocs/api/experiment#code-example-1","content":"shell curl -X POST -H \"Content-Type: application/json\" -d ' { \"meta\": { \"name\": \"tf-mnist-json\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"name\": \"my-submarine-env\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=2048M\" } } } ' http://127.0.0.1:32080/api/v1/experiment Copy Above example assume environment \"my-submarine-env\" already exists in Submarine. Please refer Environment API Reference doc to environment rest api. response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ \"experimentId\":\"experiment_1626160071451_0005\", \"name\":\"tf-mnist-json\", \"uid\":\"4944c603-0f21-49e5-826a-2ff820bb4d93\", \"status\":\"Accepted\", \"acceptedTime\":\"2021-07-13T16:57:27.000+08:00\", \"createdTime\":null, \"runningTime\":null, \"finishedTime\":null, \"spec\":{ \"meta\":{ \"name\":\"tf-mnist-json\", \"namespace\":\"default\", \"framework\":\"TensorFlow\", \"cmd\":\"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150\", \"envVars\":{\"ENV_1\":\"ENV1\"} }, \"environment\":{ \"name\":\"my-submarine-env\", \"dockerImage\":null, \"kernelSpec\":null, \"description\":null, \"image\":null }, \"spec\":{ \"Ps\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"1024M\",\"cpu\":\"1\"} }, \"Worker\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d2048M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"2048M\",\"cpu\":\"1\"} } }, \"code\":null } }, \"attributes\":{} } Copy "},{"title":"List Experiment","type":1,"pageTitle":"Experiment REST API","url":"docs/next/userDocs/api/experiment#list-experiment","content":"GET /api/v1/experiment Copy "},{"title":"Code Example","type":1,"pageTitle":"Experiment REST API","url":"docs/next/userDocs/api/experiment#code-example-2","content":"shell curl -X GET http://127.0.0.1:32080/api/v1/experiment Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\": [{ \"experimentId\":\"experiment_1626160071451_0001\", \"name\":\"newexperiment1\", \"uid\":\"b895985c-411c-4e89-90e0-c60a2a8a4235\", \"status\":\"Succeeded\", \"acceptedTime\":\"2021-07-13T16:21:31.000+08:00\", \"createdTime\":\"2021-07-13T16:21:31.000+08:00\", \"runningTime\":\"2021-07-13T16:21:46.000+08:00\", \"finishedTime\":\"2021-07-13T16:26:54.000+08:00\", \"spec\":{ \"meta\":{ \"name\":\"newexperiment1\", \"namespace\":\"default\", \"framework\":\"TensorFlow\", \"cmd\":\"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150\", \"envVars\":{\"ENV1\":\"ENV1\"} }, \"environment\":{ \"name\":null, \"dockerImage\":null, \"kernelSpec\":null, \"description\":null, \"image\":\"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\":{ \"Ps\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"1024M\",\"cpu\":\"1\"} }, \"Worker\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"1024M\",\"cpu\":\"1\"} } }, \"code\":null } }, { \"experimentId\":\"experiment_1626160071451_0005\", \"name\":\"tf-mnist-json\", \"uid\":\"4944c603-0f21-49e5-826a-2ff820bb4d93\", \"status\":\"Accepted\", \"acceptedTime\":\"2021-07-13T16:57:27.000+08:00\", \"createdTime\":null, \"runningTime\":null, \"finishedTime\":null, \"spec\":{ \"meta\":{ \"name\":\"tf-mnist-json\", \"namespace\":\"default\", \"framework\":\"TensorFlow\", \"cmd\":\"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150\", \"envVars\":{\"ENV_1\":\"ENV1\"} }, \"environment\":{ \"name\":\"my-submarine-env\", \"dockerImage\":null, \"kernelSpec\":null, \"description\":null, \"image\":null }, \"spec\":{ \"Ps\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"1024M\",\"cpu\":\"1\"} }, \"Worker\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d2048M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"2048M\",\"cpu\":\"1\"} } }, \"code\":null } }], \"attributes\":{} } Copy "},{"title":"Get Experiment","type":1,"pageTitle":"Experiment REST API","url":"docs/next/userDocs/api/experiment#get-experiment","content":"GET /api/v1/experiment/{id} Copy "},{"title":"Parameters","type":1,"pageTitle":"Experiment REST API","url":"docs/next/userDocs/api/experiment#parameters-2","content":"Field Name\tType\tIn\tDescriptionid\tString\tpath\tExperiment id. "},{"title":"Code Example","type":1,"pageTitle":"Experiment REST API","url":"docs/next/userDocs/api/experiment#code-example-3","content":"shell curl -X GET http://127.0.0.1:32080/api/v1/experiment/experiment_1626160071451_0005 Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ \"experimentId\":\"experiment_1626160071451_0005\", \"name\":\"tf-mnist-json\", \"uid\":\"4944c603-0f21-49e5-826a-2ff820bb4d93\", \"status\":\"Accepted\", \"acceptedTime\":\"2021-07-13T16:57:27.000+08:00\", \"createdTime\":null, \"runningTime\":null, \"finishedTime\":null, \"spec\":{ \"meta\":{ \"name\":\"tf-mnist-json\", \"namespace\":\"default\", \"framework\":\"TensorFlow\", \"cmd\":\"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150\", \"envVars\":{\"ENV_1\":\"ENV1\"} }, \"environment\":{ \"name\":\"my-submarine-env\", \"dockerImage\":null, \"kernelSpec\":null, \"description\":null, \"image\":null }, \"spec\":{ \"Ps\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"1024M\",\"cpu\":\"1\"} }, \"Worker\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d2048M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"2048M\",\"cpu\":\"1\"} } }, \"code\":null } }, \"attributes\":{} } Copy "},{"title":"Patch Experiment","type":1,"pageTitle":"Experiment REST API","url":"docs/next/userDocs/api/experiment#patch-experiment","content":"PATCH /api/v1/experiment/{id} Copy "},{"title":"Parameters","type":1,"pageTitle":"Experiment REST API","url":"docs/next/userDocs/api/experiment#parameters-3","content":"Field Name\tType\tIn\tDescriptionid\tString\tpath\tExperiment id. meta\tExperimentMeta\tbody\tMeta data of the experiment template. environment\tEnvironmentSpec\tbody\tEnvironment of the experiment template. spec\tMap<String, ExperimentTaskSpec>\tbody\tSpec of pods. code\tCodeSpec\tbody\tTODO "},{"title":"Code Example","type":1,"pageTitle":"Experiment REST API","url":"docs/next/userDocs/api/experiment#code-example-4","content":"shell curl -X PATCH -H \"Content-Type: application/json\" -d ' { \"meta\": { \"name\": \"tf-mnist-json\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 2, \"resources\": \"cpu=1,memory=2048M\" } } } ' http://127.0.0.1:32080/api/v1/experiment/experiment_1626160071451_0005 Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ \"experimentId\":\"experiment_1626160071451_0005\", \"name\":\"tf-mnist-json\", \"uid\":\"4944c603-0f21-49e5-826a-2ff820bb4d93\", \"status\":\"Accepted\", \"acceptedTime\":\"2021-07-13T16:57:27.000+08:00\", \"createdTime\":null, \"runningTime\":null, \"finishedTime\":null, \"spec\":{ \"meta\":{ \"name\":\"tf-mnist-json\", \"namespace\":\"default\", \"framework\":\"TensorFlow\", \"cmd\":\"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150\", \"envVars\":{\"ENV_1\":\"ENV1\"} }, \"environment\":{ \"name\":null, \"dockerImage\":null, \"kernelSpec\":null, \"description\":null, \"image\":\"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\":{ \"Ps\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"1024M\",\"cpu\":\"1\"} }, \"Worker\":{ \"replicas\":2, \"resources\":\"cpu\\u003d1,memory\\u003d2048M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"2048M\",\"cpu\":\"1\"} } }, \"code\":null } }, \"attributes\":{} } Copy "},{"title":"Delete Experiment","type":1,"pageTitle":"Experiment REST API","url":"docs/next/userDocs/api/experiment#delete-experiment","content":"DELETE /api/v1/experiment/{id} Copy "},{"title":"Parameters","type":1,"pageTitle":"Experiment REST API","url":"docs/next/userDocs/api/experiment#parameters-4","content":"Field Name\tType\tIn\tDescriptionid\tString\tpath\tExperiment id. "},{"title":"Code Example","type":1,"pageTitle":"Experiment REST API","url":"docs/next/userDocs/api/experiment#code-example-5","content":"shell curl -X DELETE http://127.0.0.1:32080/api/v1/experiment/experiment_1626160071451_0005 Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ \"experimentId\":\"experiment_1626160071451_0005\", \"name\":\"tf-mnist-json\", \"uid\":\"4944c603-0f21-49e5-826a-2ff820bb4d93\", \"status\":\"Deleted\", \"acceptedTime\":null, \"createdTime\":null, \"runningTime\":null, \"finishedTime\":null, \"spec\":{ \"meta\":{ \"name\":\"tf-mnist-json\", \"namespace\":\"default\", \"framework\":\"TensorFlow\", \"cmd\":\"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150\", \"envVars\":{\"ENV_1\":\"ENV1\"} }, \"environment\":{ \"name\":null, \"dockerImage\":null, \"kernelSpec\":null, \"description\":null, \"image\":\"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\":{ \"Ps\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"1024M\",\"cpu\":\"1\"} }, \"Worker\":{ \"replicas\":2, \"resources\":\"cpu\\u003d1,memory\\u003d2048M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"2048M\",\"cpu\":\"1\"} } }, \"code\":null } }, \"attributes\":{} } Copy "},{"title":"List Experiment Log","type":1,"pageTitle":"Experiment REST API","url":"docs/next/userDocs/api/experiment#list-experiment-log","content":"GET /api/v1/experiment/logs Copy "},{"title":"Code Example","type":1,"pageTitle":"Experiment REST API","url":"docs/next/userDocs/api/experiment#code-example-6","content":"shell curl -X GET http://127.0.0.1:32080/api/v1/experiment/logs Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\": [{ \"experimentId\":\"experiment_1626160071451_0001\", \"logContent\": [{ \"podName\":\"newexperiment1-ps-0\", \"podLog\":[] }, { \"podName\":\"newexperiment1-worker-0\", \"podLog\":[] }] }], \"attributes\":{} } Copy "},{"title":"Get Experiment Log","type":1,"pageTitle":"Experiment REST API","url":"docs/next/userDocs/api/experiment#get-experiment-log","content":"GET /api/v1/experiment/logs/{id} Copy "},{"title":"Parameters","type":1,"pageTitle":"Experiment REST API","url":"docs/next/userDocs/api/experiment#parameters-5","content":"Field Name\tType\tIn\tDescriptionid\tString\tpath\tExperiment id. "},{"title":"Code Example","type":1,"pageTitle":"Experiment REST API","url":"docs/next/userDocs/api/experiment#code-example-7","content":"shell curl -X GET http://127.0.0.1:32080/api/v1/experiment/logs/experiment_1626160071451_0001 Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ \"experimentId\":\"experiment_1626160071451_0001\", \"logContent\": [{ \"podName\":\"newexperiment1-ps-0\", \"podLog\":[] }, { \"podName\":\"newexperiment1-worker-0\", \"podLog\":[] }] }, \"attributes\":{} } Copy "},{"title":"Notebook REST API","type":0,"sectionRef":"#","url":"docs/next/userDocs/api/notebook","content":"","keywords":""},{"title":"Create a Notebook Instance","type":1,"pageTitle":"Notebook REST API","url":"docs/next/userDocs/api/notebook#create-a-notebook-instance","content":"POST /api/v1/notebook Copy "},{"title":"Parameters","type":1,"pageTitle":"Notebook REST API","url":"docs/next/userDocs/api/notebook#parameters","content":"NotebookSpec in request body. NotebookSpec# Field Name\tType\tDescriptionmeta\tNotebookMeta\tMeta data of the notebook. environment\tEnvironmentSpec\tEnvironment of the experiment template. spec\tNotebookPodSpec\tSpec of the notebook pods. NotebookMeta# Field Name\tType\tDescriptionname\tString\tNotebook name. namespace\tString\tNotebook namespace. ownerId\tString\tUser id. EnvironmentSpec# See more details in environment api. NotebookPodSpec# Field Name\tType\tDescriptionenvVars\tMap<String, String>\tEnvironmental variables. resources\tString\tResourecs of the pod. "},{"title":"Code Example","type":1,"pageTitle":"Notebook REST API","url":"docs/next/userDocs/api/notebook#code-example","content":"shell curl -X POST -H \"Content-Type: application/json\" -d ' { \"meta\": { \"name\": \"test-nb\", \"namespace\": \"default\", \"ownerId\": \"e9ca23d68d884d4ebb19d07889727dae\" }, \"environment\": { \"name\": \"notebook-env\" }, \"spec\": { \"envVars\": { \"TEST_ENV\": \"test\" }, \"resources\": \"cpu=1,memory=1.0Gi\" } } ' http://127.0.0.1:32080/api/v1/notebook Copy response: { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":\"Create a notebook instance\", \"result\":{ \"notebookId\":\"notebook_1626160071451_0001\", \"name\":\"test-nb\", \"uid\":\"a56713da-f2a3-40d0-ae2e-45fdc0bb15f5\", \"url\":\"/notebook/default/test-nb/lab\", \"status\":\"creating\", \"reason\":\"The notebook instance is creating\", \"createdTime\":\"2021-07-13T16:23:38.000+08:00\", \"deletedTime\":null, \"spec\":{ \"meta\":{ \"name\":\"test-nb\", \"namespace\":\"default\", \"ownerId\":\"e9ca23d68d884d4ebb19d07889727dae\" }, \"environment\":{ \"name\":\"notebook-env\", \"dockerImage\":\"apache/submarine:jupyter-notebook-0.7.0-SNAPSHOT\", \"kernelSpec\":{ \"name\":\"submarine_jupyter_py3\", \"channels\":[\"defaults\"], \"condaDependencies\":[], \"pipDependencies\":[] }, \"description\":null, \"image\":null }, \"spec\":{ \"envVars\":{\"TEST_ENV\":\"test\"}, \"resources\":\"cpu\\u003d1,memory\\u003d1.0Gi\" } } }, \"attributes\":{} } Copy "},{"title":"List notebook instances which belong to user","type":1,"pageTitle":"Notebook REST API","url":"docs/next/userDocs/api/notebook#list-notebook-instances-which-belong-to-user","content":"GET /api/v1/notebook Copy "},{"title":"Parameters","type":1,"pageTitle":"Notebook REST API","url":"docs/next/userDocs/api/notebook#parameters-1","content":"Field Name\tType\tIn\tDescriptionid\tString\tquery\tUser id. "},{"title":"Code Example","type":1,"pageTitle":"Notebook REST API","url":"docs/next/userDocs/api/notebook#code-example-1","content":"shell curl -X GET http://127.0.0.1:32080/api/v1/notebook?id=e9ca23d68d884d4ebb19d07889727dae Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":\"List all notebook instances\", \"result\": [{ \"notebookId\":\"notebook_1626160071451_0001\", \"name\":\"test-nb\", \"uid\":\"a56713da-f2a3-40d0-ae2e-45fdc0bb15f5\", \"url\":\"/notebook/default/test-nb/lab\", \"status\":\"waiting\", \"reason\":\"ContainerCreating\", \"createdTime\":\"2021-07-13T16:23:38.000+08:00\", \"deletedTime\":null, \"spec\":{ \"meta\":{ \"name\":\"test-nb\", \"namespace\":\"default\", \"ownerId\":\"e9ca23d68d884d4ebb19d07889727dae\" }, \"environment\":{ \"name\":\"notebook-env\", \"dockerImage\":\"apache/submarine:jupyter-notebook-0.7.0-SNAPSHOT\", \"kernelSpec\":{ \"name\":\"submarine_jupyter_py3\", \"channels\":[\"defaults\"], \"condaDependencies\":[], \"pipDependencies\":[] }, \"description\":null, \"image\":null }, \"spec\":{ \"envVars\":{\"TEST_ENV\":\"test\"}, \"resources\":\"cpu\\u003d1,memory\\u003d1.0Gi\" } } }], \"attributes\":{} } Copy "},{"title":"Get the notebook instance","type":1,"pageTitle":"Notebook REST API","url":"docs/next/userDocs/api/notebook#get-the-notebook-instance","content":"GET /api/v1/notebook/{id} Copy "},{"title":"Parameters","type":1,"pageTitle":"Notebook REST API","url":"docs/next/userDocs/api/notebook#parameters-2","content":"Field Name\tType\tIn\tDescriptionid\tString\tpath\tNotebook id. "},{"title":"Code Example","type":1,"pageTitle":"Notebook REST API","url":"docs/next/userDocs/api/notebook#code-example-2","content":"shell curl -X GET http://127.0.0.1:32080/api/v1/notebook/notebook_1626160071451_0001 Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":\"Get the notebook instance\", \"result\":{ \"notebookId\":\"notebook_1626160071451_0001\", \"name\":\"test-nb\", \"uid\":\"a56713da-f2a3-40d0-ae2e-45fdc0bb15f5\", \"url\":\"/notebook/default/test-nb/lab\", \"status\":\"waiting\", \"reason\":\"ContainerCreating\", \"createdTime\":\"2021-07-13T16:23:38.000+08:00\", \"deletedTime\":null, \"spec\":{ \"meta\":{ \"name\":\"test-nb\", \"namespace\":\"default\", \"ownerId\":\"e9ca23d68d884d4ebb19d07889727dae\" }, \"environment\":{ \"name\":\"notebook-env\", \"dockerImage\":\"apache/submarine:jupyter-notebook-0.7.0-SNAPSHOT\", \"kernelSpec\":{ \"name\":\"submarine_jupyter_py3\", \"channels\":[\"defaults\"], \"condaDependencies\":[], \"pipDependencies\":[] }, \"description\":null, \"image\":null }, \"spec\":{ \"envVars\":{\"TEST_ENV\":\"test\"}, \"resources\":\"cpu\\u003d1,memory\\u003d1.0Gi\" } } }, \"attributes\":{} } Copy "},{"title":"Delete the notebook instance","type":1,"pageTitle":"Notebook REST API","url":"docs/next/userDocs/api/notebook#delete-the-notebook-instance","content":"DELETE /api/v1/notebook/{id} Copy "},{"title":"Parameters","type":1,"pageTitle":"Notebook REST API","url":"docs/next/userDocs/api/notebook#parameters-3","content":"Field Name\tType\tIn\tDescriptionid\tString\tpath\tNotebook id. "},{"title":"Code Example","type":1,"pageTitle":"Notebook REST API","url":"docs/next/userDocs/api/notebook#code-example-3","content":"shell curl -X DELETE http://127.0.0.1:32080/api/v1/notebook/notebook_1626160071451_0001 Copy response: { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":\"Delete the notebook instance\", \"result\":{ \"notebookId\":\"notebook_1626160071451_0001\", \"name\":\"test-nb\", \"uid\":\"a56713da-f2a3-40d0-ae2e-45fdc0bb15f5\", \"url\":\"/notebook/default/test-nb/lab\", \"status\":\"terminating\", \"reason\":\"The notebook instance is terminating\", \"createdTime\":\"2021-07-13T16:23:38.000+08:00\", \"deletedTime\":null, \"spec\":{ \"meta\":{ \"name\":\"test-nb\", \"namespace\":\"default\", \"ownerId\":\"e9ca23d68d884d4ebb19d07889727dae\" }, \"environment\":{ \"name\":\"notebook-env\", \"dockerImage\":\"apache/submarine:jupyter-notebook-0.7.0-SNAPSHOT\", \"kernelSpec\":{ \"name\":\"submarine_jupyter_py3\", \"channels\":[\"defaults\"], \"condaDependencies\":[], \"pipDependencies\":[] }, \"description\":null, \"image\":null }, \"spec\":{ \"envVars\":{\"TEST_ENV\":\"test\"}, \"resources\":\"cpu\\u003d1,memory\\u003d1.0Gi\" } } }, \"attributes\":{} } Copy "},{"title":"MLflow UI","type":0,"sectionRef":"#","url":"docs/next/userDocs/others/mlflow","content":"","keywords":""},{"title":"Usage","type":1,"pageTitle":"MLflow UI","url":"docs/next/userDocs/others/mlflow#usage","content":"MLflow UI shows the tracking result of the experiments. When we use the log_param or log_metric in ModelClient API, we could view the result in MLflow UI. Below is the example of the usage of MLflow UI. "},{"title":"Example","type":1,"pageTitle":"MLflow UI","url":"docs/next/userDocs/others/mlflow#example","content":"Run the following code in the cluster from submarine import ModelsClient import random import time if __name__ == \"__main__\": modelClient = ModelsClient() with modelClient.start() as run: modelClient.log_param(\"learning_rate\", random.random()) for i in range(100): time.sleep(1) modelClient.log_metric(\"mse\", random.random() * 100, i) modelClient.log_metric(\"acc\", random.random(), i) Copy In the MLflow UI page, you can see the log_param and the log_metric result. You can also compare the training between different workers.  "},{"title":"Tensorboard","type":0,"sectionRef":"#","url":"docs/next/userDocs/others/tensorboard","content":"","keywords":""},{"title":"Write to LogDirs by the environment variable","type":1,"pageTitle":"Tensorboard","url":"docs/next/userDocs/others/tensorboard#write-to-logdirs-by-the-environment-variable","content":""},{"title":"Environment variable","type":1,"pageTitle":"Tensorboard","url":"docs/next/userDocs/others/tensorboard#environment-variable","content":"SUBMARINE_TENSORBOARD_LOG_DIR: Exist in every experiment container. You just need to direct your logs to $(SUBMARINE_TENSORBOARD_LOG_DIR) (NOTICE: it is () not {}), and you can inspect the process on the tensorboard webpage. "},{"title":"Example","type":1,"pageTitle":"Tensorboard","url":"docs/next/userDocs/others/tensorboard#example","content":"{ \"meta\": { \"name\": \"tensorflow-tensorboard-dist-mnist\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=$(SUBMARINE_TENSORBOARD_LOG_DIR) --learning_rate=0.01 --batch_size=20\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\": { \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=512M\" } } } Copy "},{"title":"Connect to the tensorboard webpage","type":1,"pageTitle":"Tensorboard","url":"docs/next/userDocs/others/tensorboard#connect-to-the-tensorboard-webpage","content":"Open the experiment page in the workbench, and Click the TensorBoard button.  Inspect the process on tensorboard page.  "},{"title":"Experiment Template REST API","type":0,"sectionRef":"#","url":"docs/next/userDocs/api/experiment-template","content":"","keywords":""},{"title":"Create Experiment Template","type":1,"pageTitle":"Experiment Template REST API","url":"docs/next/userDocs/api/experiment-template#create-experiment-template","content":"POST /api/v1/template Copy "},{"title":"Parameters","type":1,"pageTitle":"Experiment Template REST API","url":"docs/next/userDocs/api/experiment-template#parameters","content":"Field Name\tType\tIn\tDescriptionname\tString\tbody\tExperiment template name. This is required. author\tString\tbody\tAuthor name. description\tString\tbody\tDescription of the experiment template. parameters\tList<ExperimentTemplateParamSpec>\tbody\tParameters of the experiment template. experimentSpec\tExperimentSpec\tbody\tSpec of the experiment template. ExperimentTemplateParamSpec# Field Name\tType\tDescriptionname\tString\tParameter name. required\tBoolean\ttrue / false. Whether the parameter is required. description\tString\tDescription of the parameter. value\tString\tValue of the parameter. ExperimentSpec# Field Name\tType\tDescriptionmeta\tExperimentMeta\tMeta data of the experiment template. environment\tEnvironmentSpec\tEnvironment of the experiment template. spec\tMap<String, ExperimentTaskSpec>\tSpec of pods. code\tCodeSpec\tExperiment codespec. ExperimentMeta# Field Name\tType\tDescriptionname\tString\tExperiment Name. namespace\tString\tExperiment namespace. framework\tString\tExperiment framework. cmd\tString\tCommand. envVars\tMap<String, String>\tEnvironmental variables. EnvironmentSpec# See more details in environment api. ExperimentTaskSpec# Field Name\tType\tDescriptionreplicas\tInteger\tNumbers of replicas. resoureces\tString\tResouces of the task name\tString\tTask name. image\tString\tImage name. cmd\tString\tCommand. envVars\tMap<String, String>\tEnvironmental variables. CodeSpec# Field Name\tType\tDescriptionsyncMode\tString\tsync mode of code spec. url\tString\turl of code spec. "},{"title":"Code Example","type":1,"pageTitle":"Experiment Template REST API","url":"docs/next/userDocs/api/experiment-template#code-example","content":"shell curl -X POST -H \"Content-Type: application/json\" -d ' { \"name\": \"my-tf-mnist-template\", \"author\": \"author\", \"description\": \"This is a template to run tf-mnist\", \"parameters\": [{ \"name\": \"learning_rate\", \"value\": 0.1, \"required\": true, \"description\": \"This is learning_rate of training.\" }, { \"name\": \"batch_size\", \"value\": 150, \"required\": true, \"description\": \"This is batch_size of training.\" }, { \"name\": \"experiment_name\", \"value\": \"tf-mnist1\", \"required\": true, \"description\": \"the name of experiment.\" } ], \"experimentSpec\": { \"meta\": { \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate={{learning_rate}} --batch_size={{batch_size}}\", \"name\": \"{{experiment_name}}\", \"envVars\": { \"ENV1\": \"ENV1\" }, \"framework\": \"TensorFlow\", \"namespace\": \"default\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" } } } ' http://127.0.0.1:32080/api/v1/template Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ \"experimentTemplateId\":{ \"id\":1, \"serverTimestamp\":1626160071451 }, \"experimentTemplateSpec\":{ \"name\":\"my-tf-mnist-template\", \"author\":\"author\", \"description\":\"This is a template to run tf-mnist\", \"parameters\": [{ \"name\":\"learning_rate\", \"required\":\"true\", \"description\":\"This is learning_rate of training.\", \"value\":\"0.1\" }, { \"name\":\"batch_size\", \"required\":\"true\", \"description\":\"This is batch_size of training.\", \"value\":\"150\" }, { \"name\":\"experiment_name\", \"required\":\"true\", \"description\":\"the name of experiment.\", \"value\":\"tf-mnist1\" }, { \"name\":\"spec.Ps.replicas\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Ps.resourceMap.cpu\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Ps.resourceMap.memory\", \"required\":\"false\", \"description\":\"\", \"value\":\"1024M\" }, { \"name\":\"spec.Worker.replicas\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Worker.resourceMap.cpu\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Worker.resourceMap.memory\", \"required\":\"false\", \"description\":\"\",\" value\":\"1024M\" }], \"experimentSpec\":{ \"meta\":{ \"name\":\"{{experiment_name}}\", \"namespace\":\"default\", \"framework\":\"TensorFlow\", \"cmd\":\"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d{{learning_rate}} --batch_size\\u003d{{batch_size}}\", \"envVars\":{\"ENV1\":\"ENV1\"} }, \"environment\":{ \"name\":null, \"dockerImage\":null, \"kernelSpec\":null, \"description\":null, \"image\":\"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\":{ \"Ps\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{ \"memory\":\"1024M\", \"cpu\":\"1\" } }, \"Worker\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{ \"memory\":\"1024M\", \"cpu\":\"1\" } } }, \"code\":null } } }, \"attributes\":{} } Copy "},{"title":"List Experiment Template","type":1,"pageTitle":"Experiment Template REST API","url":"docs/next/userDocs/api/experiment-template#list-experiment-template","content":"GET /api/v1/template Copy "},{"title":"Code Example","type":1,"pageTitle":"Experiment Template REST API","url":"docs/next/userDocs/api/experiment-template#code-example-1","content":"shell curl -X GET http://127.0.0.1:32080/api/v1/template Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ [{ \"experimentTemplateId\":{ \"id\":1, \"serverTimestamp\":1626160071451 }, \"experimentTemplateSpec\":{ \"name\":\"my-tf-mnist-template\", \"author\":\"author\", \"description\":\"This is a template to run tf-mnist\", \"parameters\": [{ \"name\":\"learning_rate\", \"required\":\"true\", \"description\":\"This is learning_rate of training.\", \"value\":\"0.1\" }, { \"name\":\"batch_size\", \"required\":\"true\", \"description\":\"This is batch_size of training.\", \"value\":\"150\" }, { \"name\":\"experiment_name\", \"required\":\"true\", \"description\":\"the name of experiment.\", \"value\":\"tf-mnist1\" }, { \"name\":\"spec.Ps.replicas\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Ps.resourceMap.cpu\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Ps.resourceMap.memory\", \"required\":\"false\", \"description\":\"\", \"value\":\"1024M\" }, { \"name\":\"spec.Worker.replicas\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Worker.resourceMap.cpu\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Worker.resourceMap.memory\", \"required\":\"false\", \"description\":\"\",\" value\":\"1024M\" }], \"experimentSpec\":{ \"meta\":{ \"name\":\"{{experiment_name}}\", \"namespace\":\"default\", \"framework\":\"TensorFlow\", \"cmd\":\"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d{{learning_rate}} --batch_size\\u003d{{batch_size}}\", \"envVars\":{\"ENV1\":\"ENV1\"} }, \"environment\":{ \"name\":null, \"dockerImage\":null, \"kernelSpec\":null, \"description\":null, \"image\":\"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\":{ \"Ps\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{ \"memory\":\"1024M\", \"cpu\":\"1\" } }, \"Worker\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{ \"memory\":\"1024M\", \"cpu\":\"1\" } } }, \"code\":null } } }], \"attributes\":{} } Copy "},{"title":"Patch Experiment Template","type":1,"pageTitle":"Experiment Template REST API","url":"docs/next/userDocs/api/experiment-template#patch-experiment-template","content":"PATCH /api/v1/template{name} Copy "},{"title":"Parameters","type":1,"pageTitle":"Experiment Template REST API","url":"docs/next/userDocs/api/experiment-template#parameters-1","content":"Field Name\tType\tIn\tDescriptionname\tString\tpath and body\tExperiment template name. This is required. author\tString\tbody\tAuthor name. description\tString\tbody\tDescription of the experiment template. parameters\tList<ExperimentTemplateParamSpec>\tbody\tParameters of the experiment template. experimentSpec\tExperimentSpec\tbody\tSpec of the experiment template. "},{"title":"Code Example","type":1,"pageTitle":"Experiment Template REST API","url":"docs/next/userDocs/api/experiment-template#code-example-2","content":"shell curl -X PATCH -H \"Content-Type: application/json\" -d ' { \"name\": \"my-tf-mnist-template\", \"author\": \"author-new\", \"description\": \"This is a template to run tf-mnist\", \"parameters\": [{ \"name\": \"learning_rate\", \"value\": 0.1, \"required\": true, \"description\": \"This is learning_rate of training.\" }, { \"name\": \"batch_size\", \"value\": 150, \"required\": true, \"description\": \"This is batch_size of training.\" }, { \"name\": \"experiment_name\", \"value\": \"tf-mnist1\", \"required\": true, \"description\": \"the name of experiment.\" } ], \"experimentSpec\": { \"meta\": { \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate={{learning_rate}} --batch_size={{batch_size}}\", \"name\": \"{{experiment_name}}\", \"envVars\": { \"ENV1\": \"ENV1\" }, \"framework\": \"TensorFlow\", \"namespace\": \"default\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" } } } ' http://127.0.0.1:32080/api/v1/template/my-tf-mnist-template Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ \"experimentTemplateId\":{ \"id\":2, \"serverTimestamp\":1626160071451 }, \"experimentTemplateSpec\":{ \"name\":\"my-tf-mnist-template\", \"author\":\"author-new\", \"description\":\"This is a template to run tf-mnist\", \"parameters\": [{ \"name\":\"learning_rate\", \"required\":\"true\", \"description\":\"This is learning_rate of training.\", \"value\":\"0.1\" }, { \"name\":\"batch_size\", \"required\":\"true\", \"description\":\"This is batch_size of training.\", \"value\":\"150\" }, { \"name\":\"experiment_name\", \"required\":\"true\", \"description\":\"the name of experiment.\", \"value\":\"tf-mnist1\" }, { \"name\":\"spec.Ps.replicas\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Ps.resourceMap.cpu\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Ps.resourceMap.memory\", \"required\":\"false\", \"description\":\"\", \"value\":\"1024M\" }, { \"name\":\"spec.Worker.replicas\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Worker.resourceMap.cpu\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Worker.resourceMap.memory\", \"required\":\"false\", \"description\":\"\", \"value\":\"1024M\" }], \"experimentSpec\":{ \"meta\":{ \"name\":\"{{experiment_name}}\", \"namespace\":\"default\", \"framework\":\"TensorFlow\", \"cmd\":\"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d{{learning_rate}} --batch_size\\u003d{{batch_size}}\", \"envVars\":{\"ENV1\":\"ENV1\"} }, \"environment\":{ \"name\":null, \"dockerImage\":null, \"kernelSpec\":null, \"description\":null, \"image\":\"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\":{ \"Ps\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"1024M\",\"cpu\":\"1\"} }, \"Worker\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"1024M\",\"cpu\":\"1\"} } }, \"code\":null } } }, \"attributes\":{} } Copy "},{"title":"Delete Experiment Template","type":1,"pageTitle":"Experiment Template REST API","url":"docs/next/userDocs/api/experiment-template#delete-experiment-template","content":"DELETE /api/v1/template{name} Copy "},{"title":"Parameters","type":1,"pageTitle":"Experiment Template REST API","url":"docs/next/userDocs/api/experiment-template#parameters-2","content":"Field Name\tType\tIn\tDescriptionname\tString\tpath\tExperiment template name. This is required. "},{"title":"Code Example","type":1,"pageTitle":"Experiment Template REST API","url":"docs/next/userDocs/api/experiment-template#code-example-3","content":"shell curl -X DELETE http://127.0.0.1:32080/api/v1/template/my-tf-mnist-template Copy reponse { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ \"experimentTemplateId\":{ \"id\":2, \"serverTimestamp\":1626160071451 }, \"experimentTemplateSpec\":{ \"name\":\"my-tf-mnist-template\", \"author\":\"author-new\", \"description\":\"This is a template to run tf-mnist\", \"parameters\": [{ \"name\":\"learning_rate\", \"required\":\"true\", \"description\":\"This is learning_rate of training.\", \"value\":\"0.1\" }, { \"name\":\"batch_size\", \"required\":\"true\", \"description\":\"This is batch_size of training.\", \"value\":\"150\" }, { \"name\":\"experiment_name\", \"required\":\"true\", \"description\":\"the name of experiment.\", \"value\":\"tf-mnist1\" }, { \"name\":\"spec.Ps.replicas\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Ps.resourceMap.cpu\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Ps.resourceMap.memory\", \"required\":\"false\", \"description\":\"\", \"value\":\"1024M\" }, { \"name\":\"spec.Worker.replicas\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Worker.resourceMap.cpu\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Worker.resourceMap.memory\", \"required\":\"false\", \"description\":\"\", \"value\":\"1024M\" }], \"experimentSpec\":{ \"meta\":{ \"name\":\"{{experiment_name}}\", \"namespace\":\"default\", \"framework\":\"TensorFlow\", \"cmd\":\"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d{{learning_rate}} --batch_size\\u003d{{batch_size}}\", \"envVars\":{\"ENV1\":\"ENV1\"} }, \"environment\":{ \"name\":null, \"dockerImage\":null, \"kernelSpec\":null, \"description\":null, \"image\":\"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\":{ \"Ps\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"1024M\",\"cpu\":\"1\"} }, \"Worker\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"1024M\",\"cpu\":\"1\"} } }, \"code\":null } } }, \"attributes\":{} } Copy "},{"title":"Use Template to Create a Experiment","type":1,"pageTitle":"Experiment Template REST API","url":"docs/next/userDocs/api/experiment-template#use-template-to-create-a-experiment","content":"POST /api/v1/experiment/{template_name} Copy "},{"title":"Parameters","type":1,"pageTitle":"Experiment Template REST API","url":"docs/next/userDocs/api/experiment-template#parameters-3","content":"Field Name\tType\tIn\tDescriptiontemplate_name\tString\tpath\tExperiment template name. name\tString\tbody\tExperiment template name. params\tMap<String, String>\tbody\tParameters of the experiment including experiment_name. "},{"title":"Code Example","type":1,"pageTitle":"Experiment Template REST API","url":"docs/next/userDocs/api/experiment-template#code-example-4","content":"shell curl -X POST -H \"Content-Type: application/json\" -d ' { \"name\": \"tf-mnist\", \"params\": { \"learning_rate\":\"0.01\", \"batch_size\":\"150\", \"experiment_name\":\"newexperiment1\" } } ' http://127.0.0.1:32080/api/v1/experiment/my-tf-mnist-template Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ \"experimentId\":\"experiment_1626160071451_0001\", \"name\":\"newexperiment1\", \"uid\":\"b895985c-411c-4e89-90e0-c60a2a8a4235\", \"status\":\"Accepted\", \"acceptedTime\":\"2021-07-13T16:21:31.000+08:00\", \"createdTime\":null, \"runningTime\":null, \"finishedTime\":null, \"spec\":{ \"meta\":{ \"name\":\"newexperiment1\", \"namespace\":\"default\", \"framework\":\"TensorFlow\", \"cmd\":\"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150\", \"envVars\":{\"ENV1\":\"ENV1\"} }, \"environment\":{ \"name\":null, \"dockerImage\":null, \"kernelSpec\":null, \"description\":null, \"image\":\"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\":{ \"Ps\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"1024M\",\"cpu\":\"1\"} }, \"Worker\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"1024M\",\"cpu\":\"1\"} } }, \"code\":null } }, \"attributes\":{} } Copy "},{"title":"Experiment Client","type":0,"sectionRef":"#","url":"docs/next/userDocs/submarine-sdk/experiment-client","content":"","keywords":""},{"title":"class ExperimentClient()","type":1,"pageTitle":"Experiment Client","url":"docs/next/userDocs/submarine-sdk/experiment-client#class-experimentclient","content":"Client of a submarine server that creates and manages experients and logs. "},{"title":"create_experiment(experiment_spec: json) -> dict","type":1,"pageTitle":"Experiment Client","url":"docs/next/userDocs/submarine-sdk/experiment-client#create_experimentexperiment_spec-json---dict","content":"Create an experiment. Parameters experiment_spec: Submarine experiment spec. More detailed information can be found at Experiment API. Returns: The detailed info about the submarine experiment. Example from submarine import * client = ExperimentClient() client.create_experiment({ \"meta\": { \"name\": \"tf-mnist-json\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" } } }) Copy "},{"title":"patch_experiment(id: str, experiment_spec: json) -> dict","type":1,"pageTitle":"Experiment Client","url":"docs/next/userDocs/submarine-sdk/experiment-client#patch_experimentid-str-experiment_spec-json---dict","content":"Patch an experiment. Parameters id: Submarine experiment id. experiment_spec: Submarine experiment spec. More detailed information can be found at Experiment API. Returns The detailed info about the submarine experiment. Example client.patch_experiment(\"experiment_1626160071451_0008\", { \"meta\": { \"name\": \"tf-mnist-json\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\": { \"Worker\": { \"replicas\": 2, \"resources\": \"cpu=1,memory=1024M\" } } }) Copy "},{"title":"get_experiment(id: str) -> dict","type":1,"pageTitle":"Experiment Client","url":"docs/next/userDocs/submarine-sdk/experiment-client#get_experimentid-str---dict","content":"Get the experiment's detailed info by id. Parameters id: Submarine experiment id. Returns The detailed info about the submarine experiment. Example experiment = client.get_experiment(\"experiment_1626160071451_0008\") Copy "},{"title":"list_experiments(status: Optional[str]=None) -> list[dict]","type":1,"pageTitle":"Experiment Client","url":"docs/next/userDocs/submarine-sdk/experiment-client#list_experimentsstatus-optionalstrnone---listdict","content":"List all experiment for the user. Parameters status: Accepted, Created, Running, Succeeded, Deleted. Returns List of submarine experiments. Example experiments = client.list_experiments() Copy "},{"title":"delete_experiment(id: str) -> dict","type":1,"pageTitle":"Experiment Client","url":"docs/next/userDocs/submarine-sdk/experiment-client#delete_experimentid-str---dict","content":"Delete the submarine experiment. Parameters id: Submarine experiment id. Returns The detailed info about the deleted submarine experiment. Example client.delete_experiment(\"experiment_1626160071451_0008\") Copy "},{"title":"get_log(id: str, onlyMaster: Optional[bool]=False) -> None","type":1,"pageTitle":"Experiment Client","url":"docs/next/userDocs/submarine-sdk/experiment-client#get_logid-str-onlymaster-optionalboolfalse---none","content":"Print training logs of all pod of the experiment. By default print all the logs of Pod. Parameters id: Submarine experiment id.onlyMaster: By default include pod log of \"master\" which might be Tensorflow PS/Chief or PyTorch master. Return The info of pod logs Example client.get_log(\"experiment_1626160071451_0009\") Copy "},{"title":"list_log(status: str) -> list[dict]","type":1,"pageTitle":"Experiment Client","url":"docs/next/userDocs/submarine-sdk/experiment-client#list_logstatus-str---listdict","content":"List experiment log. Parameters status: Accepted, Created, Running, Succeeded, Deleted. Returns List of submarine experiment logs. Example logs = client.list_log(\"Succeeded\") Copy "},{"title":"wait_for_finish(id: str, polling_interval: Optional[int]=10) -> dict","type":1,"pageTitle":"Experiment Client","url":"docs/next/userDocs/submarine-sdk/experiment-client#wait_for_finishid-str-polling_interval-optionalint10---dict","content":"Waits until the experiment is finished or failed. Parameters id: Submarine experiment id.polling_interval: How many seconds between two polls for the status of the experiment. Returns Submarine experiment logs. Example logs = client.wait_for_finish(\"experiment_1626160071451_0009\", 5) Copy "},{"title":"Submarine-SDK","type":0,"sectionRef":"#","url":"docs/next/userDocs/submarine-sdk/README","content":"","keywords":""},{"title":"Summary","type":1,"pageTitle":"Submarine-SDK","url":"docs/next/userDocs/submarine-sdk/README#summary","content":"Support Python, Scala, R language for algorithm development Support tracking/metrics APIs which allows developers add tracking/metrics and view tracking/metrics from Submarine Workbench UI. "},{"title":"Python SDK Development","type":0,"sectionRef":"#","url":"docs/next/userDocs/submarine-sdk/pysubmarine/development","content":"","keywords":""},{"title":"Prerequisites","type":1,"pageTitle":"Python SDK Development","url":"docs/next/userDocs/submarine-sdk/pysubmarine/development#prerequisites","content":"This is required for developing & testing changes, we recommend installing pysubmarine in its own conda environment by running the following conda create --name submarine-dev python=3.6 conda activate submarine-dev # Install auto-format and lints from current checkout pip install -r ./dev-support/style-check/python/lint-requirements.txt # Install mypy from current checkout pip install -r ./dev-support/style-check/python/mypy-requirements.txt # test-requirements.txt from current checkout pip install -r ./submarine-sdk/pysubmarine/github-actions/test-requirements.txt # Installs pysubmarine from current checkout pip install -e ./submarine-sdk/pysubmarine Copy "},{"title":"PySubmarine Docker","type":1,"pageTitle":"Python SDK Development","url":"docs/next/userDocs/submarine-sdk/pysubmarine/development#pysubmarine-docker","content":"We also use docker to provide build environments for CI, development, generate python sdk from swagger. ./run-pysubmarine-ci.sh Copy The script does the following things: Start an interactive bash sessionMount submarine directory to /workspace and set it as homeSwitch user to be the same user that calls the run-pysubmarine-ci.sh "},{"title":"Coding Style","type":1,"pageTitle":"Python SDK Development","url":"docs/next/userDocs/submarine-sdk/pysubmarine/development#coding-style","content":"Use isort to sort the Python imports and black to format Python codeBoth style is configured in pyproject.tomlTo autoformat code ./dev-support/style-check/python/auto-format.sh Copy Use flake8 to verify the linter, its' configure is in .flake8.Also, we are using mypy to check the static type in submarine-sdk/pysubmarine/submarine.Verify linter pass before submitting a pull request by running: ./dev-support/style-check/python/lint.sh Copy If you encouter a unexpected format, use the following method # fmt: off \"Unexpected format, formated by yourself\" # fmt: on Copy "},{"title":"Unit Testing","type":1,"pageTitle":"Python SDK Development","url":"docs/next/userDocs/submarine-sdk/pysubmarine/development#unit-testing","content":"We are using pytest to develop our unit test suite. After building the project (see below) you can run its unit tests like so: cd submarine-sdk/pysubmarine Copy Run unit test pytest --cov=submarine -vs -m \"not e2e\" Copy Run integration test pytest --cov=submarine -vs -m \"e2e\" Copy Before run this command in local, you should make sure the submarine server is running. "},{"title":"Generate python SDK from swagger","type":1,"pageTitle":"Python SDK Development","url":"docs/next/userDocs/submarine-sdk/pysubmarine/development#generate-python-sdk-from-swagger","content":"We use open-api generatorto generate pysubmarine client API that used to communicate with submarine server. To generate different API Component, please change the code in Bootstrap.java. If just updating java code for NotebookRestApi , ExperimentRestApi or EnvironmentRestApi, please skip step 1. SwaggerConfiguration oasConfig = new SwaggerConfiguration() .openAPI(oas) .resourcePackages(Stream.of(\"org.apache.submarine.server.rest\") .collect(Collectors.toSet())) .resourceClasses(Stream.of(\"org.apache.submarine.server.rest.NotebookRestApi\", \"org.apache.submarine.server.rest.ExperimentRestApi\", \"org.apache.submarine.server.rest.EnvironmentRestApi\") .collect(Collectors.toSet())); Copy After starting the server, http://localhost:8080/v1/openapi.json will includes API specs for NotebookRestApi, ExperimentRestApi and EnvironmentRestApi swagger_config.json defines the import path for python SDK Ex: For submarine.client { \"packageName\" : \"submarine.client\", \"projectName\" : \"submarine.client\", \"packageVersion\": \"0.7.0-SNAPSHOT\" } Copy Usage: import submarine.client... Execute ./dev-support/pysubmarine/gen-sdk.sh to generate latest version of SDK. Notice: Please install required package before running the script: lint-requirements.txt In submarine/submarine-sdk/pysubmarine/client/api_client.py line 74 Please change \"long\": int if six.PY3 else long, # noqa: F821 Copy to \"long\": int, Copy "},{"title":"Model Management Model Development","type":1,"pageTitle":"Python SDK Development","url":"docs/next/userDocs/submarine-sdk/pysubmarine/development#model-management-model-development","content":"For local development, we can access cluster's service easily thanks to telepresence. To elaborate, we can develop the sdk in local but can reach out to database and minio server by proxy. Install telepresence follow the instruction.Start proxy pod telepresence --new-deployment submarine-dev Copy You can develop as if in the cluster. "},{"title":"Upload package to PyPi","type":1,"pageTitle":"Python SDK Development","url":"docs/next/userDocs/submarine-sdk/pysubmarine/development#upload-package-to-pypi","content":"For Apache Submarine committer and PMCs to do a new release. Change the version from 0.x.x-SNAPSHOT to 0.x.x in setup.pyInstall Python packages cd submarine-sdk/pysubmarine pip install -r github-actions/pypi-requirements.txt Copy Compiling Your Package It will create build, dist, and project.egg.infoin your local directory python setup.py bdist_wheel Copy Upload python package to TestPyPI for testing python -m twine upload --repository testpypi dist/* Copy Upload python package to PyPi python -m twine upload --repository-url https://upload.pypi.org/legacy/ dist/* Copy "},{"title":"Submarine CLI","type":0,"sectionRef":"#","url":"docs/next/userDocs/submarine-sdk/submarine-cli","content":"","keywords":""},{"title":"Config","type":1,"pageTitle":"Submarine CLI","url":"docs/next/userDocs/submarine-sdk/submarine-cli#config","content":"You can set your CLI settings by this command "},{"title":"Init","type":1,"pageTitle":"Submarine CLI","url":"docs/next/userDocs/submarine-sdk/submarine-cli#init","content":"submarine config init Copy Return Submarine CLI Config initialized Copy Restore CLI config to default (hostname=localhost,port=32080) "},{"title":"Show current config","type":1,"pageTitle":"Submarine CLI","url":"docs/next/userDocs/submarine-sdk/submarine-cli#show-current-config","content":"submarine config list Copy For example : return ╭──────────────────── SubmarineCliConfig ─────────────────────╮ │ { │ │ \"connection\": { │ │ \"hostname\": \"localhost\", │ │ \"port\": 32080 │ │ } │ │ } │ ╰─────────────────────────────────────────────────────────────╯ Copy "},{"title":"Set config","type":1,"pageTitle":"Submarine CLI","url":"docs/next/userDocs/submarine-sdk/submarine-cli#set-config","content":"submarine config set <parameter_path> <value> Copy For example, Set connection port to 8080: submarine config set connection.port 8080 Copy "},{"title":"Get config","type":1,"pageTitle":"Submarine CLI","url":"docs/next/userDocs/submarine-sdk/submarine-cli#get-config","content":"submarine config get <parameter_path> Copy For example, submarine config get connection.port Copy Return connection.port=8080 Copy "},{"title":"Notebooks","type":1,"pageTitle":"Submarine CLI","url":"docs/next/userDocs/submarine-sdk/submarine-cli#notebooks","content":""},{"title":"List Notebooks","type":1,"pageTitle":"Submarine CLI","url":"docs/next/userDocs/submarine-sdk/submarine-cli#list-notebooks","content":"submarine list notebook Copy "},{"title":"Get Notebooks","type":1,"pageTitle":"Submarine CLI","url":"docs/next/userDocs/submarine-sdk/submarine-cli#get-notebooks","content":"submarine get notebook <notebook id> Copy you can get notebook id by using list command "},{"title":"Delete Notebooks","type":1,"pageTitle":"Submarine CLI","url":"docs/next/userDocs/submarine-sdk/submarine-cli#delete-notebooks","content":"submarine delete notebook <notebook id> Copy "},{"title":"Experiments","type":1,"pageTitle":"Submarine CLI","url":"docs/next/userDocs/submarine-sdk/submarine-cli#experiments","content":""},{"title":"List Experiments","type":1,"pageTitle":"Submarine CLI","url":"docs/next/userDocs/submarine-sdk/submarine-cli#list-experiments","content":"submarine list experiment Copy "},{"title":"Get Experiment","type":1,"pageTitle":"Submarine CLI","url":"docs/next/userDocs/submarine-sdk/submarine-cli#get-experiment","content":"submarine get experiment <experiment id> Copy you can get experiment id by using list command "},{"title":"Delete Experiment","type":1,"pageTitle":"Submarine CLI","url":"docs/next/userDocs/submarine-sdk/submarine-cli#delete-experiment","content":"submarine delete experiment <experiment id> [--wait/--no-wait] Copy --wait/--no-wait: blocking or non blocking (default no wait) "},{"title":"Environments","type":1,"pageTitle":"Submarine CLI","url":"docs/next/userDocs/submarine-sdk/submarine-cli#environments","content":""},{"title":"List Environments","type":1,"pageTitle":"Submarine CLI","url":"docs/next/userDocs/submarine-sdk/submarine-cli#list-environments","content":"submarine list environment Copy "},{"title":"Get Environments","type":1,"pageTitle":"Submarine CLI","url":"docs/next/userDocs/submarine-sdk/submarine-cli#get-environments","content":"submarine get environment <environment name> Copy "},{"title":"Delete Environments","type":1,"pageTitle":"Submarine CLI","url":"docs/next/userDocs/submarine-sdk/submarine-cli#delete-environments","content":"submarine delete experiment <environment name> Copy "},{"title":"Submarine Local Deployment","type":0,"sectionRef":"#","url":"docs/","content":"","keywords":""},{"title":"Prerequisite","type":1,"pageTitle":"Submarine Local Deployment","url":"docs/#prerequisite","content":"kubectlhelm (Helm v3 is minimum requirement.)minikube. "},{"title":"Deploy Kubernetes Cluster","type":1,"pageTitle":"Submarine Local Deployment","url":"docs/#deploy-kubernetes-cluster","content":"$ minikube start --vm-driver=docker --cpus 8 --memory 4096 --disk-size=20G --kubernetes-version v1.15.11 Copy "},{"title":"Install Submarine on Kubernetes","type":1,"pageTitle":"Submarine Local Deployment","url":"docs/#install-submarine-on-kubernetes","content":"$ git clone https://github.com/apache/submarine.git $ cd submarine $ helm install submarine ./helm-charts/submarine Copy NAME: submarine LAST DEPLOYED: Fri Jan 29 05:35:36 2021 NAMESPACE: default STATUS: deployed REVISION: 1 TEST SUITE: None Copy "},{"title":"Verify installation","type":1,"pageTitle":"Submarine Local Deployment","url":"docs/#verify-installation","content":"Once you got it installed, check with below commands and you should see similar outputs: $ kubectl get pods Copy NAME READY STATUS RESTARTS AGE notebook-controller-deployment-5db8b6cbf7-k65jm 1/1 Running 0 5s pytorch-operator-7ff5d96d59-gx7f5 1/1 Running 0 5s submarine-database-8d95d74f7-ntvqp 1/1 Running 0 5s submarine-server-b6cd4787b-7bvr7 1/1 Running 0 5s submarine-traefik-9bb6f8577-66sx6 1/1 Running 0 5s tf-job-operator-7844656dd-lfgmd 1/1 Running 0 5s Copy warning Note that if you encounter below issue when installation: Error: rendered manifests contain a resource that already exists. Unable to continue with install: existing resource conflict: namespace: , name: podgroups.scheduling.incubator.k8s.io, existing_kind: apiextensions.k8s.io/v1beta1, Kind=CustomResourceDefinition, new_kind: apiextensions.k8s.io/v1beta1, Kind=CustomResourceDefinition Copy It might be caused by the previous installed submarine charts. Fix it by running: $ kubectl delete crd/tfjobs.kubeflow.org && kubectl delete crd/podgroups.scheduling.incubator.k8s.io && kubectl delete crd/pytorchjobs.kubeflow.org Copy "},{"title":"Access Submarine in a Cluster","type":1,"pageTitle":"Submarine Local Deployment","url":"docs/#access-submarine-in-a-cluster","content":"# #Listen on port 32080 on all addresses, forwarding to 80 in the pod # Method1 -- using minikube ip + NodePort $ minikube ip # you'll get the IP address of minikube, ex: 192.168.49.2 # Method2 -- using port-forwarding $ kubectl port-forward --address 0.0.0.0 service/submarine-traefik 32080:80 Copy "},{"title":"Open Workbench in the browser.","type":1,"pageTitle":"Submarine Local Deployment","url":"docs/#open-workbench-in-the-browser","content":"Open http://{minikube ip}:32080(from Method1), ex: http://192.168.49.2:32080 or http://127.0.0.1:32080 (from Method 2). The default username and password is admin and admin  "},{"title":"Uninstall Submarine","type":1,"pageTitle":"Submarine Local Deployment","url":"docs/#uninstall-submarine","content":"$ helm delete submarine Copy "},{"title":"Tracking","type":0,"sectionRef":"#","url":"docs/next/userDocs/submarine-sdk/tracking","content":"","keywords":""},{"title":"Functions","type":1,"pageTitle":"Tracking","url":"docs/next/userDocs/submarine-sdk/tracking#functions","content":""},{"title":"submarine.get_tracking_uri() -> str","type":1,"pageTitle":"Tracking","url":"docs/next/userDocs/submarine-sdk/tracking#submarineget_tracking_uri---str","content":"Get the tracking URI. If none has been specified, check the environmental variables. If uri is still none, return the default submarine jdbc url. Returns The tracking URI. "},{"title":"submarine.set_tracking_uri(uri: str) -> None","type":1,"pageTitle":"Tracking","url":"docs/next/userDocs/submarine-sdk/tracking#submarineset_tracking_uriuri-str---none","content":"set the tracking URI. You can also set the SUBMARINE_TRACKING_URI environment variable to have Submarine find a URI from there. The URI should be database connection string. Parameters uri - Submarine record data to Mysql server. The database URL is expected in the format <dialect>+<driver>://<username>:<password>@<host>:<port>/<database>. By default it's mysql+pymysql://submarine:password@submarine-database:3306/submarine. More detail : SQLAlchemy docs "},{"title":"submarine.log_param(key: str, value: str) -> None","type":1,"pageTitle":"Tracking","url":"docs/next/userDocs/submarine-sdk/tracking#submarinelog_paramkey-str-value-str---none","content":"log a single key-value parameter. The key and value are both strings. Parameters key - Parameter name.value - Parameter value. "},{"title":"submarine.log_metric(key: str, value: float, step=0) -> None","type":1,"pageTitle":"Tracking","url":"docs/next/userDocs/submarine-sdk/tracking#submarinelog_metrickey-str-value-float-step0---none","content":"log a single key-value metric. The value must always be a number. Parameters key - Metric name.value - Metric value.step - A single integer step at which to log the specified Metrics, by default it's 0. "},{"title":"submarine.save_model(model_type: str, model, artifact_path: str, registered_model_name: str = None, input_dim: list = None, output_dim: list = None,) -> None","type":1,"pageTitle":"Tracking","url":"docs/next/userDocs/submarine-sdk/tracking#submarinesave_modelmodel_type-str-model-artifact_path-str-registered_model_name-str--none-input_dim-list--none-output_dim-list--none---none","content":"Save a model into the minio pod. Parameters model_type - The type of model. Only support pytorch and tensorflow.model - Model artifact.artifact_path - Model name.registered_model_name - If it is not None, the model will be registered into the model registry with this name.input_dim - The input dimension of the model.output_dim - The output dimension of the model. "},{"title":"Running Submarine on YARN","type":0,"sectionRef":"#","url":"docs/adminDocs/yarn/README","content":"","keywords":""},{"title":"Hadoop version","type":1,"pageTitle":"Running Submarine on YARN","url":"docs/adminDocs/yarn/README#hadoop-version","content":"Must: Apache Hadoop version newer than 2.7.3 Optional: When you want to use GPU-on-YARN feature with Submarine, please make sure Hadoop is at least 2.10.0+ (or 3.1.0+), and follow Enable GPU on YARN 2.10.0+ to enable GPU-on-YARN feature.When you want to run training jobs with Docker container, please make sure Hadoop is at least 2.8.2, and follow Enable Docker on YARN 2.8.2+ to enable Docker-on-YARN feature. "},{"title":"Submarine YARN Runtime Guide","type":1,"pageTitle":"Running Submarine on YARN","url":"docs/adminDocs/yarn/README#submarine-yarn-runtime-guide","content":"YARN Runtime Guide talk about how to use Submarine to run jobs on YARN, with Docker / without Docker. "},{"title":"Test and Troubleshooting","type":0,"sectionRef":"#","url":"docs/adminDocs/yarn/TestAndTroubleshooting","content":"","keywords":""},{"title":"Test with a tensorflow job","type":1,"pageTitle":"Test and Troubleshooting","url":"docs/adminDocs/yarn/TestAndTroubleshooting#test-with-a-tensorflow-job","content":"Distributed-shell + GPU + cgroup  ... \\ job run \\ --env DOCKER_JAVA_HOME=/opt/java \\ --env DOCKER_HADOOP_HDFS_HOME=/hadoop-current --name distributed-tf-gpu \\ --env YARN_CONTAINER_RUNTIME_DOCKER_CONTAINER_NETWORK=calico-network \\ --worker_docker_image tf-1.13.1-gpu:0.0.1 \\ --ps_docker_image tf-1.13.1-cpu:0.0.1 \\ --input_path hdfs://${dfs_name_service}/tmp/cifar-10-data \\ --checkpoint_path hdfs://${dfs_name_service}/user/hadoop/tf-distributed-checkpoint \\ --num_ps 0 \\ --ps_resources memory=4G,vcores=2,gpu=0 \\ --ps_launch_cmd \"python /test/cifar10_estimator/cifar10_main.py --data-dir=hdfs://${dfs_name_service}/tmp/cifar-10-data --job-dir=hdfs://${dfs_name_service}/tmp/cifar-10-jobdir --num-gpus=0\" \\ --worker_resources memory=4G,vcores=2,gpu=1 --verbose \\ --num_workers 1 \\ --worker_launch_cmd \"python /test/cifar10_estimator/cifar10_main.py --data-dir=hdfs://${dfs_name_service}/tmp/cifar-10-data --job-dir=hdfs://${dfs_name_service}/tmp/cifar-10-jobdir --train-steps=500 --eval-batch-size=16 --train-batch-size=16 --sync --num-gpus=1\" Copy "},{"title":"Issues:","type":1,"pageTitle":"Test and Troubleshooting","url":"docs/adminDocs/yarn/TestAndTroubleshooting#issues","content":""},{"title":"Issue 1: Fail to start nodemanager after system reboot","type":1,"pageTitle":"Test and Troubleshooting","url":"docs/adminDocs/yarn/TestAndTroubleshooting#issue-1-fail-to-start-nodemanager-after-system-reboot","content":"2018-09-20 18:54:39,785 ERROR org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor: Failed to bootstrap configured resource subsystems! org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.ResourceHandlerException: Unexpected: Cannot create yarn cgroup Subsystem:cpu Mount points:/proc/mounts User:yarn Path:/sys/fs/cgroup/cpu,cpuacct/hadoop-yarn at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsHandlerImpl.initializePreMountedCGroupController(CGroupsHandlerImpl.java:425) at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsHandlerImpl.initializeCGroupController(CGroupsHandlerImpl.java:377) at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsCpuResourceHandlerImpl.bootstrap(CGroupsCpuResourceHandlerImpl.java:98) at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsCpuResourceHandlerImpl.bootstrap(CGroupsCpuResourceHandlerImpl.java:87) at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.ResourceHandlerChain.bootstrap(ResourceHandlerChain.java:58) at org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor.init(LinuxContainerExecutor.java:320) at org.apache.hadoop.yarn.server.nodemanager.NodeManager.serviceInit(NodeManager.java:389) at org.apache.hadoop.service.AbstractService.init(AbstractService.java:164) at org.apache.hadoop.yarn.server.nodemanager.NodeManager.initAndStartNodeManager(NodeManager.java:929) at org.apache.hadoop.yarn.server.nodemanager.NodeManager.main(NodeManager.java:997) 2018-09-20 18:54:39,789 INFO org.apache.hadoop.service.AbstractService: Service NodeManager failed in state INITED Copy Solution: Grant user yarn the access to /sys/fs/cgroup/cpu,cpuacct, which is the subfolder of cgroup mount destination. chown :yarn -R /sys/fs/cgroup/cpu,cpuacct chmod g+rwx -R /sys/fs/cgroup/cpu,cpuacct Copy If GPUs are used,the access to cgroup devices folder is neede as well chown :yarn -R /sys/fs/cgroup/devices chmod g+rwx -R /sys/fs/cgroup/devices Copy "},{"title":"Issue 2: container-executor permission denied","type":1,"pageTitle":"Test and Troubleshooting","url":"docs/adminDocs/yarn/TestAndTroubleshooting#issue-2-container-executor-permission-denied","content":"2018-09-21 09:36:26,102 WARN org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.privileged.PrivilegedOperationExecutor: IOException executing command: java.io.IOException: Cannot run program \"/etc/yarn/sbin/Linux-amd64-64/container-executor\": error=13, Permission denied at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048) at org.apache.hadoop.util.Shell.runCommand(Shell.java:938) at org.apache.hadoop.util.Shell.run(Shell.java:901) at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:1213) Copy Solution: The permission of /etc/yarn/sbin/Linux-amd64-64/container-executor should be 6050 "},{"title":"Issue 3:How to get docker service log","type":1,"pageTitle":"Test and Troubleshooting","url":"docs/adminDocs/yarn/TestAndTroubleshooting#issue-3:how-to-get-docker-service-log","content":"Solution: we can get docker log with the following command journalctl -u docker Copy "},{"title":"Issue 4:docker can't remove containers with errors like device or resource busy","type":1,"pageTitle":"Test and Troubleshooting","url":"docs/adminDocs/yarn/TestAndTroubleshooting#issue-4:docker-cant-remove-containers-with-errors-like-device-or-resource-busy","content":"$ docker rm 0bfafa146431 Error response from daemon: Unable to remove filesystem for 0bfafa146431771f6024dcb9775ef47f170edb2f1852f71916ba44209ca6120a: remove /app/docker/containers/0bfafa146431771f6024dcb9775ef47f170edb2f152f71916ba44209ca6120a/shm: device or resource busy Copy Solution: to find which process leads to a device or resource busy, we can add a shell script, named find-busy-mnt.sh #!/usr/bin/env bash # A simple script to get information about mount points and pids and their # mount namespaces. if [ $# -ne 1 ];then echo \"Usage: $0 <devicemapper-device-id>\" exit 1 fi ID=$1 MOUNTS=`find /proc/*/mounts | xargs grep $ID 2>/dev/null` [ -z \"$MOUNTS\" ] && echo \"No pids found\" && exit 0 printf \"PID\\tNAME\\t\\tMNTNS\\n\" echo \"$MOUNTS\" | while read LINE; do PID=`echo $LINE | cut -d \":\" -f1 | cut -d \"/\" -f3` # Ignore self and thread-self if [ \"$PID\" == \"self\" ] || [ \"$PID\" == \"thread-self\" ]; then continue fi NAME=`ps -q $PID -o comm=` MNTNS=`readlink /proc/$PID/ns/mnt` printf \"%s\\t%s\\t\\t%s\\n\" \"$PID\" \"$NAME\" \"$MNTNS\" done Copy Kill the process by pid, which is found by the script $ chmod +x find-busy-mnt.sh ./find-busy-mnt.sh 0bfafa146431771f6024dcb9775ef47f170edb2f152f71916ba44209ca6120a # PID NAME MNTNS # 5007 ntpd mnt:[4026533598] $ kill -9 5007 Copy "},{"title":"Issue 5:Yarn failed to start containers","type":1,"pageTitle":"Test and Troubleshooting","url":"docs/adminDocs/yarn/TestAndTroubleshooting#issue-5:yarn-failed-to-start-containers","content":"if the number of GPUs required by applications is larger than the number of GPUs in the cluster, there would be some containers can't be created. "},{"title":"HowToRun","type":0,"sectionRef":"#","url":"docs/adminDocs/yarn/workbench/HowToRun","content":"","keywords":""},{"title":"Two versions of Submarine Workbench","type":1,"pageTitle":"HowToRun","url":"docs/adminDocs/yarn/workbench/HowToRun#two-versions-of-submarine-workbench","content":"Angular (default)Vue (This is the old version, and it will be replaced by version Angular in the future.) (WARNING: Please restart a new incognito window when you switch to different versions of Submarine Workbench)# "},{"title":"Launch the Submarine Workbench(Angular)","type":1,"pageTitle":"HowToRun","url":"docs/adminDocs/yarn/workbench/HowToRun#launch-the-submarine-workbenchangular","content":"It should be noted that since Submarine Workbench depends on the Submarine database, so you need to run the docker container of the Submarine database first. docker run -it -p 3306:3306 -d --name submarine-database -e MYSQL_ROOT_PASSWORD=password apache/submarine:database-<REPLACE_VERSION> docker run -it -p 8080:8080 -d --link=submarine-database:submarine-database --name submarine-server apache/submarine:server-<REPLACE_VERSION> Copy The login page of Submarine Workbench will be shown in http://127.0.0.1:8080. "},{"title":"Check the data in the submarine-database","type":1,"pageTitle":"HowToRun","url":"docs/adminDocs/yarn/workbench/HowToRun#check-the-data-in-the-submarine-database","content":"Step1: Enter the submarine-database container docker exec -it submarine-database bash Copy Step2: Enter MySQL database mysql -uroot -ppassword Copy Step3: List the data in the table // list all databases show databases; // choose a database use ${target_database}; // list all tables show tables; // list the data in the table select * from ${target_table}; Copy Run Submarine Workbench without docker# "},{"title":"Run Submarine Workbench","type":1,"pageTitle":"HowToRun","url":"docs/adminDocs/yarn/workbench/HowToRun#run-submarine-workbench","content":"cd submarine ./bin/submarine-daemon.sh [start|stop|restart] Copy To start workbench server, you need to download MySQL jdbc jar and put it in the path of workbench/lib for the first time. Or you can add parameter, getMysqlJar, to get MySQL jar automatically. cd submarine ./bin/submarine-daemon.sh start getMysqlJar Copy "},{"title":"submarine-env.sh","type":1,"pageTitle":"HowToRun","url":"docs/adminDocs/yarn/workbench/HowToRun#submarine-envsh","content":"submarine-env.sh is automatically executed each time the submarine-daemon.sh script is executed, so we can set the submarine-daemon.sh script and the environment variables in the SubmarineServer process via submarine-env.sh. Name\tVariableJAVA_HOME\tSet your java home path, default is java. SUBMARINE_JAVA_OPTS\tSet the JAVA OPTS parameter when the Submarine Workbench process starts. If you need to debug the Submarine Workbench process, you can set it to -agentlib:jdwp=transport=dt_socket, server=y,suspend=n,address=5005 SUBMARINE_MEM\tSet the java memory parameter when the Submarine Workbench process starts. MYSQL_JAR_URL\tThe customized URL to download MySQL jdbc jar. MYSQL_VERSION\tThe version of MySQL jdbc jar to downloaded. The default value is 5.1.39. It's used to generate the default value of MYSQL_JDBC_URL "},{"title":"submarine-site.xml","type":1,"pageTitle":"HowToRun","url":"docs/adminDocs/yarn/workbench/HowToRun#submarine-sitexml","content":"submarine-site.xml is the configuration file for the entire Submarine system to run. Name\tVariablesubmarine.server.addr\tSubmarine server address, default is 0.0.0.0 submarine.server.port\tSubmarine server port, default 8080 submarine.ssl\tShould SSL be used by the Submarine servers?, default false submarine.server.ssl.port\tServer ssl port. (used when ssl property is set to true), default 8483 submarine.ssl.client.auth\tShould client authentication be used for SSL connections? submarine.ssl.keystore.path\tPath to keystore relative to Submarine configuration directory submarine.ssl.keystore.type\tThe format of the given keystore (e.g. JKS or PKCS12) submarine.ssl.keystore.password\tKeystore password. Can be obfuscated by the Jetty Password tool submarine.ssl.key.manager.password\tKey Manager password. Defaults to keystore password. Can be obfuscated. submarine.ssl.truststore.path\tPath to truststore relative to Submarine configuration directory. Defaults to the keystore path submarine.ssl.truststore.type\tThe format of the given truststore (e.g. JKS or PKCS12). Defaults to the same type as the keystore type submarine.ssl.truststore.password\tTruststore password. Can be obfuscated by the Jetty Password tool. Defaults to the keystore password workbench.web.war\tSubmarine Workbench web war file path. "},{"title":"setup-jupyter","type":0,"sectionRef":"#","url":"docs/adminDocs/yarn/workbench/notebook/setup-jupyter","content":"","keywords":""},{"title":"Experiment environment","type":1,"pageTitle":"setup-jupyter","url":"docs/adminDocs/yarn/workbench/notebook/setup-jupyter#experiment-environment","content":""},{"title":"Setup Kubernetes","type":1,"pageTitle":"setup-jupyter","url":"docs/adminDocs/yarn/workbench/notebook/setup-jupyter#setup-kubernetes","content":"We recommend using kind to setup a Kubernetes cluster on a local machine. You can use Extra mounts to mount your host path to kind node and use Extra port mappings to port forward to the kind nodes. Please refer to kind configurationfor more details. You need to create a kind config file. The following is an example : kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 nodes: - role: control-plane extraMounts: # add a mount from /path/to/my/files on the host to /files on the node - hostPath: /tmp/submarine containerPath: /tmp/submarine extraPortMappings: - containerPort: 80 hostPort: 80 protocol: TCP # exposing additional ports to be used for NodePort services - containerPort: 30070 hostPort: 8888 protocol: TCP Copy Running the following command: kind create cluster --image kindest/node:v1.15.6 --config <path-to-kind-config> --name k8s-submarine kubectl create namespace submarine Copy "},{"title":"Deploy Jupyter Notebook","type":1,"pageTitle":"setup-jupyter","url":"docs/adminDocs/yarn/workbench/notebook/setup-jupyter#deploy-jupyter-notebook","content":"Once you have a running Kubernetes cluster, you can write a YAML file to deploy a jupyter notebook. In this example yaml, we use jupyter/minimal-notebookto make a single notebook running on the kind node. kubectl apply -f jupyter.yaml --namespace submarine Copy Once jupyter notebook is running, you can access the notebook server from the browser using http://localhost:8888 on local machine. You can enter and store a password for your notebook server with: kubectl exec -it <jupyter-pod-name> -- jupyter notebook password Copy After restarting the notebook server, you can login jupyter notebook with your new password. If you want to use JupyterLab : http://localhost:8888/lab Copy "},{"title":"README","type":0,"sectionRef":"#","url":"docs/adminDocs/yarn/workbench/README","content":"","keywords":""},{"title":"Register","type":1,"pageTitle":"README","url":"docs/adminDocs/yarn/workbench/README#register","content":"Everyone who needs to use Submarine for machine learning algorithm development can log in to Submarine Workbench's WEB homepage. On the homepage, click the registration link, fill in the user name, email address and password to register the user. At this time, the user status is waiting for approval status. After receiving the registration request from the user in Submarine Workbench, the administrator sets the operation authority according to the user's needs, sets the user's organization and allocates resources, and sets the user status to pass the audit. The user can log in to the Submarine Workbench. Different users have different permission. "},{"title":"Login","type":1,"pageTitle":"README","url":"docs/adminDocs/yarn/workbench/README#login","content":"Each Submarine user logs in to the Home page of Submarine Workbench by entering their username and password on the Login page. "},{"title":"Home","type":1,"pageTitle":"README","url":"docs/adminDocs/yarn/workbench/README#home","content":"In the Submarine Workbench Home page, the top level shows the user's resource usage and task execution through four charts. In the Quick Start list, the most commonly used feature links in the Workbench are displayed so that users can work quickly. In the Open Recent list, there are nine items that the user has used recently, so you can work quickly. At What's New? In the list, some of the latest features and project information released by Submarine are displayed to help you understand the latest developments in the Submarine project. "},{"title":"Workspace","type":1,"pageTitle":"README","url":"docs/adminDocs/yarn/workbench/README#workspace","content":"Workspace consists primarily of five tab pages, with the total number of items in each tab page's title. "},{"title":"Project","type":1,"pageTitle":"README","url":"docs/adminDocs/yarn/workbench/README#project","content":"In the Project page, all the projects created by the user themselves are displayed as cards.  Each Project card consists of the following sections: Project Type:Submarine currently supports six types of machine learning algorithm frameworks and development languages: Notebook, Python, R, Scala, Tensorflow, and PyTorch, which are identified by corresponding icons in the project card.Project Tags:Users can tag each Project with different tags for easy searching and management.Github/Gitlab integrated:Submarine Workbench is system integrated with Github/Gitlab, and each Project can perform Watch, Star, Fork, and Comment operations in Workbench. Watch:[TODO]Star:[TODO]Fork:[TODO]Comment:Users can comment on the project. Edit:Users can open projects in Notebook and perform algorithm development by double-clicking on the project or by clicking the Edit button.Download:The user downloads the project package locally by clicking the Download button.Setting:Edit project information such as project name, profile, visibility level and permissions.Delete:Delete the project and all included files. Add New Project# Clicking the Add New Project button on the project page will display the guide page for creating the project, and you can create a new project in just three steps. Step 1: Fill in the project name and project description in the Base Information step.  Visibility: Set the visibility level of the item externally Private: (Default) Set to private project, and all the files included in the project are not publicly displayed. but the execution result of the project can be individually set and exposed in Notebook, so that others can view the visual report of the project.Team: Set to team project, select the team name in the team selection box, and other members of the team can access the project according to the set permissions.Public: Set to public project, all users in Workbench can view this project through search. Permission: Set the external access rights of the project. The permission setting interface will appear only when the Visibility of the project is set to Team or Public. Can View When the project's Visibility is set to Team, other members of the team can only view the files for this project. When the project's Visibility is set to Public, other members of the Workbench can only view the files for this project. Can Edit When the project's Visibility is set to Team, other members of the team can view and edit the files for this project. When the project's Visibility is set to Public, other members of the Workbench can view and edit the files for this project. Can Execute When the project's Visibility is set to Team, other members of the team can view, edit, and execute the project's files. When the project's Visibility is set to Public, other members of the Workbench can view, edit, and execute the project's files. Step 2: In the Initial Project step, Workbench provides four ways to initialize the project. Template: Workbench Project templates with several different development languages and algorithm frameworks are built in. You can choose any template to initialize your project and you can execute it directly in Notebook without any modification. It is especially suitable for novices to experience quickly. Blank:Create a blank project, and later we can manually add the project's file in Notebook Upload: Initialize your project by uploading a file in notebook format that is compatible with the Jupyter Notebook and Zeppelin Notebook file formats. Git Repo: Fork a file in the repository to initialize the project in your Github/Gitlab account. Step 3:Preview the included files in the project  Save: Save the project to Workspace.Open In Notebook: Save the project to Workspace and open the project with Notebook. "},{"title":"Release","type":1,"pageTitle":"README","url":"docs/adminDocs/yarn/workbench/README#release","content":"[TODO] "},{"title":"Training","type":1,"pageTitle":"README","url":"docs/adminDocs/yarn/workbench/README#training","content":"[TODO] "},{"title":"Team","type":1,"pageTitle":"README","url":"docs/adminDocs/yarn/workbench/README#team","content":"[TODO] "},{"title":"Shared","type":1,"pageTitle":"README","url":"docs/adminDocs/yarn/workbench/README#shared","content":"[TODO] "},{"title":"Interpreters","type":1,"pageTitle":"README","url":"docs/adminDocs/yarn/workbench/README#interpreters","content":"[TODO] "},{"title":"Job","type":1,"pageTitle":"README","url":"docs/adminDocs/yarn/workbench/README#job","content":"[TODO] "},{"title":"Data","type":1,"pageTitle":"README","url":"docs/adminDocs/yarn/workbench/README#data","content":"[TODO] "},{"title":"Model","type":1,"pageTitle":"README","url":"docs/adminDocs/yarn/workbench/README#model","content":"[TODO] "},{"title":"Manager","type":1,"pageTitle":"README","url":"docs/adminDocs/yarn/workbench/README#manager","content":""},{"title":"User","type":1,"pageTitle":"README","url":"docs/adminDocs/yarn/workbench/README#user","content":"[TODO] "},{"title":"Team","type":1,"pageTitle":"README","url":"docs/adminDocs/yarn/workbench/README#team-1","content":"[TODO] "},{"title":"Data Dict","type":1,"pageTitle":"README","url":"docs/adminDocs/yarn/workbench/README#data-dict","content":"[TODO] "},{"title":"Department","type":1,"pageTitle":"README","url":"docs/adminDocs/yarn/workbench/README#department","content":"[TODO] "},{"title":"How to run workbench","type":1,"pageTitle":"README","url":"docs/adminDocs/yarn/workbench/README#how-to-run-workbench","content":"How To Run Submarine Workbench Guide "},{"title":"README.zh-CN","type":0,"sectionRef":"#","url":"docs/adminDocs/yarn/workbench/README.zh-CN","content":"","keywords":""},{"title":"Register","type":1,"pageTitle":"README.zh-CN","url":"docs/adminDocs/yarn/workbench/README.zh-CN#register","content":"每个需要使用 Submarine 进行机器学习算法开发的用户,都可以登录 Submarine Workbench 的 WEB 首页,在首页上,点击注册链接,填写用户名、注册邮箱和密码就可以完成注册,但此时用户状态为 等待审核 状态。 管理员在 Submarine Workbench 中接收到用户的注册请求后,设置用户的操作权限,所属机构部门和分配资源,设置用户状态为 审核通过 后,用户才可以登录 Submarine Workbench。 "},{"title":"Login","type":1,"pageTitle":"README.zh-CN","url":"docs/adminDocs/yarn/workbench/README.zh-CN#login","content":"每个 Submarine 的用户在 Login 页面中输入用户名和密码,登录到 Submarine Workbench 的首页 Home。 "},{"title":"Home","type":1,"pageTitle":"README.zh-CN","url":"docs/adminDocs/yarn/workbench/README.zh-CN#home","content":"在 Submarine Workbench 的 Home 首页中,顶层通过四个图表显示了用户的资源的使用情况和任务执行的情况。 在 Quick Start 列表中,显示了 Workbench 中最常使用的功能链接,方便用户可以快速的进行工作。 在 Open Recent 列表中,显示了用户最近使用过的九个项目,方便你快速的进行工作。 在 What‘s New? 列表中,显示了 Submarine 最新发布的一些功能特性和项目信息,方便你了解 Submarine 项目的最新进展。 "},{"title":"Workspace","type":1,"pageTitle":"README.zh-CN","url":"docs/adminDocs/yarn/workbench/README.zh-CN#workspace","content":"Workspace 主要有五个 Tab 页组成,每个 Tab 页的标题中显示了各自项目的总数。 "},{"title":"Project","type":1,"pageTitle":"README.zh-CN","url":"docs/adminDocs/yarn/workbench/README.zh-CN#project","content":"在 Project 页面中,以卡片的方式显示了用户自己创建的所有 Project。  每个 Project 卡片由以下部分内容组成: Project 类型:目前 Submarine 支持 Notebook、Python、R、Scala、Tensorflow 和 PyTorch 这六种类型的机器学习算法框架和开发语言,在项目卡片中以对应的图标进行标识。Project Tags:用户可以为每个 Project 打上不同的 Tag 标签,方便查找和管理。Github/Gitlab 集成:Submarine Workbench 与 Github/Gitlab 进行了系统集成,每个 Project 都可以在 Workbench 中进行 Watch、Star、Frok 和 Comment 操作。 Watch:[TODO]Star:[TODO]Fork:[TODO]Comment:用户可以在项目中进行评论 Edit:用户通过双击项目或者点击 Edit 按钮,可以在 Notebook 中打开项目,进行算法开发等操作。Download:用户通过点击 Download 按钮,将项目打包下载到本地。Setting:编辑项目信息,例如项目的名字,简介,分享级别和权限。Delete:删除项目中所有包含的文件。 Add New Project# 在项目页面中点击 Add New Project 按钮,将会显示出创建项目的引导页面,只需要三个步骤就可以创建一个新的项目。 第一步:在 Base Information 步骤中填写项目名称、项目简介。  Visibility: 设置项目对外的可见级别 Private: (默认)设置为私有项目,不对外公开项目中包含的所有文件,但是可以在 Notebook 中将项目的执行结果单独设置公开,方便其他人查看项目的可视化报告。Team: 设置为团队项目,在团队选择框中选择团队的名称,团队的其他成员可以根据设置的权限访问这个项目。Public: 设置为公开项目,Workbench 中的所有用户都可以通过搜索查看到这个项目。 Permission: 设置项目对外的访问权限,只有将项目的 Visibility 设置为 Team 或 Public 的时候,才会出现权限设置界面。 Can View 当项目的 Visibility 设置为 Team 时,团队中其他成员都只能查看这个项目的文件。 当项目的 Visibility 设置为 Public 时,Workbench 中其他成员都只能查看这个项目的文件。 Can Edit 当项目的 Visibility 设置为 Team 时,团队中其他成员都可以查看、编辑这个项目的文件。 当项目的 Visibility 设置为 Public 时,Workbench 中其他成员都可以查看、编辑这个项目的文件。 Can Execute 当项目的 Visibility 设置为 Team 时,团队中其他成员都可以查看、编辑、执行这个项目的文件。 当项目的 Visibility 设置为 Public 时,Workbench 中其他成员都可以查看、编辑、执行这个项目的文件。 第二步:在 Initial Project 步骤中,Workbench 提供了四种项目初始化的方式 Template: Workbench 内置了几种不同开发语言和算法框架的项目模版,你可以选择任何一种模版初始化你的项目,无需做任何修改就可以直接在 Notebook 中执行,特别适合新手进行快速的体验。 Blank:创建一个空白的项目,稍后,我们可以通过在 Notebook 中手工添加项目的文件 Upload: 通过上传 notebook 格式的文件来初始化你的项目,notebook 格式兼容 Jupyter Notebook 和 Zeppelin Notebook 文件格式。 Git Repo: 在你的 Github/Gitlab 账号中 Fork 一个仓库中的文件内容来初始化项目。 第三步:预览项目中的所包含的文件  Save: 将项目保存到 Workspace 中。Open In Notebook: 将项目保存到 Workspace 中,并用 Notebook 打开项目。 "},{"title":"Release","type":1,"pageTitle":"README.zh-CN","url":"docs/adminDocs/yarn/workbench/README.zh-CN#release","content":"[TODO] "},{"title":"Training","type":1,"pageTitle":"README.zh-CN","url":"docs/adminDocs/yarn/workbench/README.zh-CN#training","content":"[TODO] "},{"title":"Team","type":1,"pageTitle":"README.zh-CN","url":"docs/adminDocs/yarn/workbench/README.zh-CN#team","content":"[TODO] "},{"title":"Shared","type":1,"pageTitle":"README.zh-CN","url":"docs/adminDocs/yarn/workbench/README.zh-CN#shared","content":"[TODO] "},{"title":"Interpreters","type":1,"pageTitle":"README.zh-CN","url":"docs/adminDocs/yarn/workbench/README.zh-CN#interpreters","content":"[TODO] "},{"title":"Job","type":1,"pageTitle":"README.zh-CN","url":"docs/adminDocs/yarn/workbench/README.zh-CN#job","content":"[TODO] "},{"title":"Data","type":1,"pageTitle":"README.zh-CN","url":"docs/adminDocs/yarn/workbench/README.zh-CN#data","content":"[TODO] "},{"title":"Model","type":1,"pageTitle":"README.zh-CN","url":"docs/adminDocs/yarn/workbench/README.zh-CN#model","content":"[TODO] "},{"title":"Manager","type":1,"pageTitle":"README.zh-CN","url":"docs/adminDocs/yarn/workbench/README.zh-CN#manager","content":""},{"title":"User","type":1,"pageTitle":"README.zh-CN","url":"docs/adminDocs/yarn/workbench/README.zh-CN#user","content":"[TODO] "},{"title":"Team","type":1,"pageTitle":"README.zh-CN","url":"docs/adminDocs/yarn/workbench/README.zh-CN#team-1","content":"[TODO] "},{"title":"Data Dict","type":1,"pageTitle":"README.zh-CN","url":"docs/adminDocs/yarn/workbench/README.zh-CN#data-dict","content":"[TODO] "},{"title":"Department","type":1,"pageTitle":"README.zh-CN","url":"docs/adminDocs/yarn/workbench/README.zh-CN#department","content":"[TODO] "},{"title":"How to run workbench","type":1,"pageTitle":"README.zh-CN","url":"docs/adminDocs/yarn/workbench/README.zh-CN#how-to-run-workbench","content":"How To Run Submarine Workbench Guide "},{"title":"Environment REST API","type":0,"sectionRef":"#","url":"docs/api/environment","content":"","keywords":""},{"title":"Create Environment","type":1,"pageTitle":"Environment REST API","url":"docs/api/environment#create-environment","content":"POST /api/v1/environment Example Request curl -X POST -H \"Content-Type: application/json\" -d ' { \"name\": \"my-submarine-env\", \"dockerImage\" : \"continuumio/anaconda3\", \"kernelSpec\" : { \"name\" : \"team_default_python_3.7\", \"channels\" : [\"defaults\"], \"condaDependencies\" : [\"_ipyw_jlab_nb_ext_conf=0.1.0=py37_0\", \"alabaster=0.7.12=py37_0\", \"anaconda=2020.02=py37_0\", \"anaconda-client=1.7.2=py37_0\", \"anaconda-navigator=1.9.12=py37_0\"], \"pipDependencies\" : [\"apache-submarine==0.5.0\", \"pyarrow==0.17.0\"] } } ' http://127.0.0.1:32080/api/v1/environment Copy Example Response: { \"status\": \"OK\", \"code\": 200, \"result\": { \"environmentId\": \"environment_1586156073228_0001\", \"environmentSpec\": { \"name\": \"my-submarine-env\", \"dockerImage\" : \"continuumio/anaconda3\", \"kernelSpec\" : { \"name\" : \"team_default_python_3.7\", \"channels\" : [\"defaults\"], \"condaDependencies\" : [\"_ipyw_jlab_nb_ext_conf=0.1.0=py37_0\", \"alabaster=0.7.12=py37_0\", \"anaconda=2020.02=py37_0\", \"anaconda-client=1.7.2=py37_0\", \"anaconda-navigator=1.9.12=py37_0\"], \"pipDependencies\" : [\"apache-submarine==0.5.0\", \"pyarrow==0.17.0\"] } } } } Copy "},{"title":"List environment","type":1,"pageTitle":"Environment REST API","url":"docs/api/environment#list-environment","content":"GET /api/v1/environment Example Request: curl -X GET http://127.0.0.1:32080/api/v1/environment Copy Example Response: { \"status\": \"OK\", \"code\": 200, \"result\": [ { \"environmentId\": \"environment_1586156073228_0001\", \"environmentSpec\": { \"name\": \"my-submarine-env\", \"dockerImage\" : \"continuumio/anaconda3\", \"kernelSpec\" : { \"name\" : \"team_default_python_3.7\", \"channels\" : [\"defaults\"], \"condaDependencies\" : [\"_ipyw_jlab_nb_ext_conf=0.1.0=py37_0\", \"alabaster=0.7.12=py37_0\", \"anaconda=2020.02=py37_0\", \"anaconda-client=1.7.2=py37_0\", \"anaconda-navigator=1.9.12=py37_0\"], \"pipDependencies\" : [\"apache-submarine==0.5.0\", \"pyarrow==0.17.0\"] } } }, { \"environmentId\": \"environment_1586156073228_0002\", \"environmentSpec\": { \"name\": \"my-submarine-env-2\", \"dockerImage\" : \"continuumio/miniconda\", \"kernelSpec\" : { \"name\" : \"team_miniconda_python_3.7\", \"channels\" : [\"defaults\"], \"condaDependencies\" : [\"_ipyw_jlab_nb_ext_conf=0.1.0=py37_0\"], \"pipDependencies\" : [], } } } ] } Copy "},{"title":"Get environment","type":1,"pageTitle":"Environment REST API","url":"docs/api/environment#get-environment","content":"GET /api/v1/environment/{name} Example Request: curl -X GET http://127.0.0.1:32080/api/v1/environment/my-submarine-env Copy Example Response: { \"status\": \"OK\", \"code\": 200, \"result\": { \"environmentId\": \"environment_1586156073228_0001\", \"environmentSpec\": { \"name\": \"my-submarine-env\", \"dockerImage\" : \"continuumio/anaconda3\", \"kernelSpec\" : { \"name\" : \"team_default_python_3.7\", \"channels\" : [\"defaults\"], \"condaDependencies\" : [\"_ipyw_jlab_nb_ext_conf=0.1.0=py37_0\", \"alabaster=0.7.12=py37_0\", \"anaconda=2020.02=py37_0\", \"anaconda-client=1.7.2=py37_0\", \"anaconda-navigator=1.9.12=py37_0\"], \"pipDependencies\" : [\"apache-submarine==0.5.0\", \"pyarrow==0.17.0\"] } } } } Copy "},{"title":"Patch environment","type":1,"pageTitle":"Environment REST API","url":"docs/api/environment#patch-environment","content":"PATCH /api/v1/environment/{name} Example Request: curl -X PATCH -H \"Content-Type: application/json\" -d ' { \"name\": \"my-submarine-env\", \"dockerImage\" : \"continuumio/anaconda3\", \"kernelSpec\" : { \"name\" : \"team_default_python_3.7_updated\", \"channels\" : [\"defaults\"], \"condaDependencies\" : [\"_ipyw_jlab_nb_ext_conf=0.1.0=py37_0\", \"alabaster=0.7.12=py37_0\"], \"pipDependencies\" : [] } } ' http://127.0.0.1:32080/api/v1/environment/my-submarine-env Copy Example Response: { \"status\": \"OK\", \"code\": 200, \"success\": true, \"result\": { \"environmentId\": \"environment_1586156073228_0001\", \"environmentSpec\": { \"name\": \"my-submarine-env\", \"dockerImage\" : \"continuumio/anaconda3\", \"kernelSpec\" : { \"name\" : \"team_default_python_3.7_updated\", \"channels\" : [\"defaults\"], \"condaDependencies\" : [\"_ipyw_jlab_nb_ext_conf=0.1.0=py37_0\", \"alabaster=0.7.12=py37_0\"], \"pipDependencies\" : [] } } } } Copy dockerImage, \"name\" (of kernelSpec), \"channels\", \"condaDependencies\", \"pipDependencies\" etc can be updated using this API. \"name\" of EnvironmentSpec is not supported. "},{"title":"Delete environment","type":1,"pageTitle":"Environment REST API","url":"docs/api/environment#delete-environment","content":"GET /api/v1/environment/{name} Example Request: curl -X DELETE http://127.0.0.1:32080/api/v1/environment/my-submarine-env Copy Example Response: { \"status\": \"OK\", \"code\": 200, \"result\": { \"environmentId\": \"environment_1586156073228_0001\", \"environmentSpec\": { \"name\": \"my-submarine-env\", \"dockerImage\" : \"continuumio/anaconda3\", \"kernelSpec\" : { \"name\" : \"team_default_python_3.7_updated\", \"channels\" : [\"defaults\"], \"condaDependencies\" : [\"_ipyw_jlab_nb_ext_conf=0.1.0=py37_0\", \"alabaster=0.7.12=py37_0\"], \"pipDependencies\" : [] } } } } Copy "},{"title":"Experiment Template REST API","type":0,"sectionRef":"#","url":"docs/api/experiment-template","content":"","keywords":""},{"title":"Create experiment template","type":1,"pageTitle":"Experiment Template REST API","url":"docs/api/experiment-template#create-experiment-template","content":"POST /api/v1/template Example Request curl -X POST -H \"Content-Type: application/json\" -d ' { \"name\": \"my-tf-mnist-template\", \"author\": \"author\", \"description\": \"This is a template to run tf-mnist\", \"parameters\": [{ \"name\": \"learning_rate\", \"value\": 0.1, \"required\": true, \"description\": \"This is learning_rate of training.\" }, { \"name\": \"batch_size\", \"value\": 150, \"required\": true, \"description\": \"This is batch_size of training.\" }, { \"name\": \"experiment_name\", \"value\": \"tf-mnist1\", \"required\": true, \"description\": \"the name of experiment.\" } ], \"experimentSpec\": { \"meta\": { \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate={{learning_rate}} --batch_size={{batch_size}}\", \"name\": \"{{experiment_name}}\", \"envVars\": { \"ENV1\": \"ENV1\" }, \"framework\": \"TensorFlow\", \"namespace\": \"default\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" } } } ' http://127.0.0.1:32080/api/v1/template Copy "},{"title":"List experiment template","type":1,"pageTitle":"Experiment Template REST API","url":"docs/api/experiment-template#list-experiment-template","content":"GET /api/v1/template Example Request: curl -X GET http://127.0.0.1:32080/api/v1/template Copy "},{"title":"Get experiment template","type":1,"pageTitle":"Experiment Template REST API","url":"docs/api/experiment-template#get-experiment-template","content":"GET /api/v1/template/{name} Example Request: curl -X GET http://127.0.0.1:32080/api/v1/template/my-tf-mnist-template Copy "},{"title":"Patch template","type":1,"pageTitle":"Experiment Template REST API","url":"docs/api/experiment-template#patch-template","content":"PATCH /api/v1/template/{name} curl -X PATCH -H \"Content-Type: application/json\" -d ' { \"name\": \"my-tf-mnist-template\", \"author\": \"author-new\", \"description\": \"This is a template to run tf-mnist\", \"parameters\": [{ \"name\": \"learning_rate\", \"value\": 0.1, \"required\": true, \"description\": \"This is learning_rate of training.\" }, { \"name\": \"batch_size\", \"value\": 150, \"required\": true, \"description\": \"This is batch_size of training.\" }, { \"name\": \"experiment_name\", \"value\": \"tf-mnist1\", \"required\": true, \"description\": \"the name of experiment.\" } ], \"experimentSpec\": { \"meta\": { \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate={{learning_rate}} --batch_size={{batch_size}}\", \"name\": \"{{experiment_name}}\", \"envVars\": { \"ENV1\": \"ENV1\" }, \"framework\": \"TensorFlow\", \"namespace\": \"default\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" } } } ' http://127.0.0.1:32080/api/v1/template/my-tf-mnist-template Copy \"description\", \"parameters\", \"experimentSpec\", \"author\" etc can be updated using this API. \"name\" of experiment template is not supported. "},{"title":"Delete template","type":1,"pageTitle":"Experiment Template REST API","url":"docs/api/experiment-template#delete-template","content":"GET /api/v1/template/{name} Example Request: curl -X DELETE http://127.0.0.1:32080/api/v1/template/my-tf-mnist-template Copy "},{"title":"Use template to create a experiment","type":1,"pageTitle":"Experiment Template REST API","url":"docs/api/experiment-template#use-template-to-create-a-experiment","content":"POST /api/v1/experiment/{template_name} Example Request: curl -X POST -H \"Content-Type: application/json\" -d ' { \"name\": \"tf-mnist\", \"params\": { \"learning_rate\":\"0.01\", \"batch_size\":\"150\", \"experiment_name\":\"newexperiment1\" } } ' http://127.0.0.1:32080/api/v1/experiment/my-tf-mnist-template Copy "},{"title":"Experiment REST API","type":0,"sectionRef":"#","url":"docs/api/experiment","content":"","keywords":""},{"title":"Create Experiment (Using Anonymous/Embedded Environment)","type":1,"pageTitle":"Experiment REST API","url":"docs/api/experiment#create-experiment-using-anonymousembedded-environment","content":"POST /api/v1/experiment Example Request curl -X POST -H \"Content-Type: application/json\" -d ' { \"meta\": { \"name\": \"tf-mnist-json\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=2048M\" } } } ' http://127.0.0.1:32080/api/v1/experiment Copy Example Response: { \"status\": \"OK\", \"code\": 200, \"result\": { \"experimentId\": \"experiment_1586156073228_0001\", \"name\": \"tf-mnist-json\", \"uid\": \"28e39dcd-77d4-11ea-8dbb-0242ac110003\", \"status\": \"Accepted\", \"acceptedTime\": \"2020-06-13T22:59:29.000+08:00\", \"spec\": { \"meta\": { \"name\": \"tf-mnist-json\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=2048M\" } } } } } Copy "},{"title":"Create Experiment (Using Pre-defined/Stored Environment)","type":1,"pageTitle":"Experiment REST API","url":"docs/api/experiment#create-experiment-using-pre-definedstored-environment","content":"POST /api/v1/experiment Example Request curl -X POST -H \"Content-Type: application/json\" -d ' { \"meta\": { \"name\": \"tf-mnist-json\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"name\": \"my-submarine-env\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=2048M\" } } } ' http://127.0.0.1:32080/api/v1/experiment Copy 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 Example Response: { \"status\": \"OK\", \"code\": 200, \"result\": { \"experimentId\": \"experiment_1586156073228_0001\", \"name\": \"tf-mnist-json\", \"uid\": \"28e39dcd-77d4-11ea-8dbb-0242ac110003\", \"status\": \"Accepted\", \"acceptedTime\": \"2020-06-13T22:59:29.000+08:00\", \"spec\": { \"meta\": { \"name\": \"tf-mnist-json\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"name\": \"my-submarine-env\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=2048M\" } } } } } Copy "},{"title":"List experiment","type":1,"pageTitle":"Experiment REST API","url":"docs/api/experiment#list-experiment","content":"GET /api/v1/experiment Example Request: curl -X GET http://127.0.0.1:32080/api/v1/experiment Copy Example Response: { \"status\": \"OK\", \"code\": 200, \"result\": [ { \"experimentId\": \"experiment_1592057447228_0001\", \"name\": \"tf-mnist-json\", \"uid\": \"28e39dcd-77d4-11ea-8dbb-0242ac110003\", \"status\": \"Accepted\", \"acceptedTime\": \"2020-06-13T22:59:29.000+08:00\", \"spec\": { \"meta\": { \"name\": \"tf-mnist-json\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=2048M\" } } } }, { \"experimentId\": \"experiment_1592057447228_0002\", \"name\": \"mnist\", \"uid\": \"38e39dcd-77d4-11ea-8dbb-0242ac110003\", \"status\": \"Accepted\", \"acceptedTime\": \"2020-06-13T22:19:29.000+08:00\", \"spec\": { \"meta\": { \"name\": \"pytorch-mnist-json\", \"namespace\": \"default\", \"framework\": \"PyTorch\", \"cmd\": \"python /var/mnist.py --backend gloo\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"image\": \"apache/submarine:pytorch-dist-mnist-1.0\" }, \"spec\": { \"Master\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" } } } } ] } Copy "},{"title":"Get experiment","type":1,"pageTitle":"Experiment REST API","url":"docs/api/experiment#get-experiment","content":"GET /api/v1/experiment/{id} Example Request: curl -X GET http://127.0.0.1:32080/api/v1/experiment/experiment_1592057447228_0001 Copy Example Response: { \"status\": \"OK\", \"code\": 200, \"result\": { \"experimentId\": \"experiment_1592057447228_0001\", \"name\": \"tf-mnist-json\", \"uid\": \"28e39dcd-77d4-11ea-8dbb-0242ac110003\", \"status\": \"Accepted\", \"acceptedTime\": \"2020-06-13T22:59:29.000+08:00\", \"spec\": { \"meta\": { \"name\": \"tf-mnist-json\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=2048M\" } } } } } Copy "},{"title":"Patch experiment","type":1,"pageTitle":"Experiment REST API","url":"docs/api/experiment#patch-experiment","content":"PATCH /api/v1/experiment/{id} Example Request: curl -X PATCH -H \"Content-Type: application/json\" -d ' { \"meta\": { \"name\": \"tf-mnist-json\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 2, \"resources\": \"cpu=1,memory=2048M\" } } } ' http://127.0.0.1:32080/api/v1/experiment/experiment_1592057447228_0001 Copy Example Response: { \"status\": \"OK\", \"code\": 200, \"success\": true, \"result\": { \"meta\": { \"name\": \"tf-mnist-json\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 2, \"resources\": \"cpu=1,memory=2048M\" } } } } Copy "},{"title":"Delete experiment","type":1,"pageTitle":"Experiment REST API","url":"docs/api/experiment#delete-experiment","content":"GET /api/v1/experiment/{id} Example Request: curl -X DELETE http://127.0.0.1:32080/api/v1/experiment/experiment_1592057447228_0001 Copy Example Response: { \"status\": \"OK\", \"code\": 200, \"result\": { \"experimentId\": \"experiment_1586156073228_0001\", \"name\": \"tf-mnist-json\", \"uid\": \"28e39dcd-77d4-11ea-8dbb-0242ac110003\", \"status\": \"Accepted\", \"acceptedTime\": \"2020-06-13T22:59:29.000+08:00\", \"spec\": { \"meta\": { \"name\": \"tf-mnist-json\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 2, \"resources\": \"cpu=1,memory=2048M\" } } } } } Copy "},{"title":"List experiment Log","type":1,"pageTitle":"Experiment REST API","url":"docs/api/experiment#list-experiment-log","content":"GET /api/v1/experiment/logs Example Request: curl -X GET http://127.0.0.1:32080/api/v1/experiment/logs Copy Example Response: { \"status\": \"OK\", \"code\": 200, \"success\": null, \"message\": null, \"result\": [ { \"experimentId\": \"experiment_1589199154923_0001\", \"logContent\": [ { \"podName\": \"mnist-worker-0\", \"podLog\": null } ] }, { \"experimentId\": \"experiment_1589199154923_0002\", \"logContent\": [ { \"podName\": \"pytorch-dist-mnist-gloo-master-0\", \"podLog\": null }, { \"podName\": \"pytorch-dist-mnist-gloo-worker-0\", \"podLog\": null } ] } ], \"attributes\": {} } Copy "},{"title":"Get experiment Log","type":1,"pageTitle":"Experiment REST API","url":"docs/api/experiment#get-experiment-log","content":"GET /api/v1/experiment/logs/{id} Example Request: curl -X GET http://127.0.0.1:32080/api/v1/experiment/logs/experiment_1589199154923_0002 Copy Example Response: { \"status\": \"OK\", \"code\": 200, \"success\": null, \"message\": null, \"result\": { \"experimentId\": \"experiment_1589199154923_0002\", \"logContent\": [ { \"podName\": \"pytorch-dist-mnist-gloo-master-0\", \"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\" }, { \"podName\": \"pytorch-dist-mnist-gloo-worker-0\", \"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\" } ] }, \"attributes\": {} } Copy "},{"title":"Notebook REST API","type":0,"sectionRef":"#","url":"docs/api/notebook","content":"","keywords":""},{"title":"Create a notebook instance","type":1,"pageTitle":"Notebook REST API","url":"docs/api/notebook#create-a-notebook-instance","content":"POST /api/v1/notebook Example Request curl -X POST -H \"Content-Type: application/json\" -d ' { \"meta\": { \"name\": \"test-nb\", \"namespace\": \"default\", \"ownerId\": \"e9ca23d68d884d4ebb19d07889727dae\" }, \"environment\": { \"name\": \"notebook-env\" }, \"spec\": { \"envVars\": { \"TEST_ENV\": \"test\" }, \"resources\": \"cpu=1,memory=1.0Gi\" } } ' http://127.0.0.1:32080/api/v1/notebook Copy Example Response: { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":\"Create a notebook instance\", \"result\":{ \"notebookId\":\"notebook_1597931805405_0001\", \"name\":\"test-nb\", \"uid\":\"5a94c01d-6a92-4222-bc66-c610c277546d\", \"url\":\"/notebook/default/test-nb/\", \"status\":\"creating\", \"reason\":\"The notebook instance is creating\", \"createdTime\":\"2020-08-20T21:58:27.000+08:00\", \"deletedTime\":null, \"spec\":{ \"meta\":{ \"name\":\"test-nb\", \"namespace\":\"default\", \"ownerId\":\"e9ca23d68d884d4ebb19d07889727dae\" }, \"environment\":{ \"name\":\"notebook-env\", \"dockerImage\":\"apache/submarine:jupyter-notebook-0.5.0\", \"kernelSpec\":{ \"name\": \"team_default_python_3.7\", \"channels\": [ \"defaults\" ], \"dependencies\": [ \"\" ] }, \"description\":null, \"image\":null }, \"spec\":{ \"envVars\":{ \"TEST_ENV\":\"test\" }, \"resources\":\"cpu=1,memory=1.0Gi\" } } }, \"attributes\":{} } Copy "},{"title":"List notebook instances which belong to user","type":1,"pageTitle":"Notebook REST API","url":"docs/api/notebook#list-notebook-instances-which-belong-to-user","content":"GET /api/v1/notebook Example Request: curl -X GET http://127.0.0.1:32080/api/v1/notebook?id={user_id} Copy Example Response: { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":\"List all notebook instances\", \"result\":[ { \"notebookId\":\"notebook_1597931805405_0001\", \"name\":\"test-nb\", \"uid\":\"5a94c01d-6a92-4222-bc66-c610c277546d\", \"url\":\"/notebook/default/test-nb/\", \"status\": \"running\", \"reason\": \"The notebook instance is running\", \"createdTime\":\"2020-08-20T21:58:27.000+08:00\", \"deletedTime\":null, \"spec\":{ \"meta\":{ \"name\":\"test-nb\", \"namespace\":\"default\", \"ownerId\":\"e9ca23d68d884d4ebb19d07889727dae\" }, \"environment\":{ \"name\":\"notebook-env\", \"dockerImage\":\"apache/submarine:jupyter-notebook-0.5.0\", \"kernelSpec\":{ \"name\": \"team_default_python_3.7\", \"channels\": [ \"defaults\" ], \"dependencies\": [ \"\" ] }, \"description\":null, \"image\":null }, \"spec\":{ \"envVars\":{ \"TEST_ENV\":\"test\" }, \"resources\":\"cpu=1,memory=1.0Gi\" } } } ], \"attributes\":{} } Copy "},{"title":"Get the notebook instance","type":1,"pageTitle":"Notebook REST API","url":"docs/api/notebook#get-the-notebook-instance","content":"GET /api/v1/notebook/{id} Example Request: curl -X GET http://127.0.0.1:32080/api/v1/notebook/{id} Copy Example Response: { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":\"Get the notebook instance\", \"result\":{ \"notebookId\":\"notebook_1597931805405_0001\", \"name\":\"test-nb\", \"uid\":\"5a94c01d-6a92-4222-bc66-c610c277546d\", \"url\":\"/notebook/default/test-nb/\", \"status\":\"running\", \"reason\":\"The notebook instance is running\", \"createdTime\":\"2020-08-20T21:58:27.000+08:00\", \"deletedTime\":null, \"spec\":{ \"meta\":{ \"name\":\"test-nb\", \"namespace\":\"default\", \"ownerId\":\"e9ca23d68d884d4ebb19d07889727dae\" }, \"environment\":{ \"name\":\"notebook-env\", \"dockerImage\":\"apache/submarine:jupyter-notebook-0.5.0\", \"kernelSpec\":{ \"name\": \"team_default_python_3.7\", \"channels\": [ \"defaults\" ], \"dependencies\": [ \"\" ] }, \"description\":null, \"image\":null }, \"spec\":{ \"envVars\":{ \"TEST_ENV\":\"test\" }, \"resources\":\"cpu=1,memory=1.0Gi\" } } }, \"attributes\":{} } Copy "},{"title":"Delete the notebook instance","type":1,"pageTitle":"Notebook REST API","url":"docs/api/notebook#delete-the-notebook-instance","content":"DELETE /api/v1/notebook/{id} Example Request: curl -X DELETE http://127.0.0.1:32080/api/v1/notebook/{id} Copy Example Response: { \"status\": \"OK\", \"code\": 200, \"success\": true, \"message\": \"Delete the notebook instance\", \"result\": { \"notebookId\": \"notebook_1597931805405_0001\", \"name\": \"test-nb\", \"uid\": \"5a94c01d-6a92-4222-bc66-c610c277546d\", \"url\": \"/notebook/default/test-nb/\", \"status\": \"terminating\", \"reason\": \"The notebook instance is terminating\", \"createdTime\": \"2020-08-22T14:03:19.000+08:00\", \"deletedTime\": \"2020-08-22T14:46:28+0800\", \"spec\": { \"meta\": { \"name\": \"test-nb\", \"namespace\": \"default\", \"ownerId\":\"e9ca23d68d884d4ebb19d07889727dae\" }, \"environment\": { \"name\": \"notebook-env\", \"dockerImage\": \"apache/submarine:jupyter-notebook-0.5.0\", \"kernelSpec\": { \"name\": \"team_default_python_3.7\", \"channels\": [ \"defaults\" ], \"dependencies\": [ \"\" ] }, \"description\": null, \"image\": null }, \"spec\": { \"envVars\": { \"TEST_ENV\": \"test\" }, \"resources\": \"cpu=1,memory=1.0Gi\" } } }, \"attributes\": {} } Copy "},{"title":"How To Contribute to Submarine","type":0,"sectionRef":"#","url":"docs/community/contributing","content":"","keywords":""},{"title":"Preface","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/community/contributing#preface","content":"Apache Submarine is an Apache 2.0 License Software. Contributing to Submarine means you agree to the Apache 2.0 License. Please read Code of Conduct carefully.The document How It Works can help you understand Apache Software Foundation further. "},{"title":"Build Submarine","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/community/contributing#build-submarine","content":"Build From Code "},{"title":"Creating patches","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/community/contributing#creating-patches","content":"Submarine follows Fork & Pull model. "},{"title":"Step1: Fork apache/submarine github repository (first time)","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/community/contributing#step1-fork-apachesubmarine-github-repository-first-time","content":"Visit https://github.com/apache/submarineClick the Fork button to create a fork of the repository "},{"title":"Step2: Clone the Submarine to your local machine","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/community/contributing#step2-clone-the-submarine-to-your-local-machine","content":"# USERNAME – your Github user account name. git clone git@github.com:${USERNAME}/submarine.git # or: git clone https://github.com/${USERNAME}/submarine.git cd submarine # set upstream git remote add upstream git@github.com:apache/submarine.git # or: git remote add upstream https://github.com/apache/submarine.git # Don't push to the upstream master. git remote set-url --push upstream no_push # Check upstream/origin: # origin git@github.com:${USERNAME}/submarine.git (fetch) # origin git@github.com:${USERNAME}/submarine.git (push) # upstream git@github.com:apache/submarine.git (fetch) # upstream no_push (push) git remote -v Copy "},{"title":"Step3: Create a new Jira in Submarine project","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/community/contributing#step3-create-a-new-jira-in-submarine-project","content":"New contributors need privilege to create JIRA issues. Please email kaihsun@apache.org with your Jira username. In addition, the email title should be \"[New Submarine Contributor]\".Check Jira issue tracker for existing issues.Create a new Jira issue in Submarine project. When the issue is created, a Jira number (eg. SUBMARINE-748) will be assigned to the issue automatically. "},{"title":"Step4: Create a local branch for your contribution","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/community/contributing#step4-create-a-local-branch-for-your-contribution","content":"cd submarine # Make your local master up-to-date git checkout master git fetch upstream git rebase upstream/master # Create a new branch fro issue SUBMARINE-${jira_number} git checkout -b SUBMARINE-${jira_number} # Example: git checkout -b SUBMARINE-748 Copy "},{"title":"Step5: Develop & Create commits","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/community/contributing#step5-develop--create-commits","content":"You can edit the code on the SUBMARINE-${jira_number} branch. (Coding Style: Code Convention)Create commits git add ${edited files} git commit -m \"SUBMARINE-${jira_number}. ${Commit Message}\" # Example: git commit -m \"SUBMARINE-748. Update Contributing guide\" Copy "},{"title":"Step6: Syncing your local branch with upstream/master","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/community/contributing#step6-syncing-your-local-branch-with-upstreammaster","content":"# On SUBMARINE-${jira_number} branch git fetch upstream git rebase upstream/master Copy Please do not use git pull to synchronize your local branch. Because git pull does a merge to create merged commits, these will make commit history messy. "},{"title":"Step7: Push your local branch to your personal fork","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/community/contributing#step7-push-your-local-branch-to-your-personal-fork","content":"git push origin SUBMARINE-${jira_number} Copy "},{"title":"Step8: Check GitHub Actions status of your personal commit","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/community/contributing#step8-check-github-actions-status-of-your-personal-commit","content":"Visit https://github.com/${USERNAME}/submarine/actionsPlease make sure your new commits can pass all workflows before creating a pull request.  "},{"title":"Step9: Create a pull request on github UI","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/community/contributing#step9-create-a-pull-request-on-github-ui","content":"Visit your fork at https://github.com/${USERNAME}/submarine.gitClick Compare & Pull Request button to create pull request. Pull Request template# Pull request templateFilling the template thoroughly can improve the speed of the review process. Example:   "},{"title":"Step10: Check GitHub Actions status of your pull request in apache/submarine","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/community/contributing#step10-check-github-actions-status-of-your-pull-request-in-apachesubmarine","content":"Visit https://github.com/apache/submarine/actionsPlease make sure your pull request can pass all workflows.  "},{"title":"Step11: The Review Process","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/community/contributing#step11-the-review-process","content":"Anyone can be a reviewer and comment on the pull requests.Reviewer can indicate that a patch looks suitable for merging with a comment such as: \"Looks good\", \"LGTM\", \"+1\". (PS: LGTM = Looks Good To Me)At least one indication of suitability (e.g. \"LGTM\") from a committer is required to be merged. A committer can then initiate lazy consensus (\"Merge if there is no more discussion\") after which the code can be merged after a particular time (usually 24 hours) if there are no more reviews.Contributors can ping reviewers (including committers) by commenting 'Ready to review'. "},{"title":"Step12: Address review comments","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/community/contributing#step12-address-review-comments","content":"Push new commits to SUBMARINE-${jira_number} branch. The pull request will update automatically.After you address all review comments, committers will merge the pull request. "},{"title":"Code convention","type":1,"pageTitle":"How To Contribute to Submarine","url":"docs/community/contributing#code-convention","content":"We are following Google Code style: Java styleShell style There are some plugins to format, lint your code in IDE (use dev-support/maven-config/checkstyle.xml as rules) Checkstyle plugin for Intellij (Setting Guide)Checkstyle plugin for Eclipse (Setting Guide) "},{"title":"Guide for Apache Submarine Committers","type":0,"sectionRef":"#","url":"docs/community/HowToCommit","content":"","keywords":""},{"title":"New committers","type":1,"pageTitle":"Guide for Apache Submarine Committers","url":"docs/community/HowToCommit#new-committers","content":"New committers are encouraged to first read Apache's generic committer documentation: Apache New Committer GuideApache Committer FAQ The first act of a new core committer is typically to add their name to the credits page. This requires changing the site source inhttps://github.com/apache/submarine-site/blob/master/community/member.md. Once done, update the Submarine website as describedhere(TLDR; don't forget to regenerate the site with hugo, and commit the generated results, too). "},{"title":"Review","type":1,"pageTitle":"Guide for Apache Submarine Committers","url":"docs/community/HowToCommit#review","content":"Submarine committers should, as often as possible, attempt to review patches submitted by others. Ideally every submitted patch will get reviewed by a committer within a few days. If a committer reviews a patch they've not authored, and believe it to be of sufficient quality, then they can commit the patch, otherwise the patch should be cancelled with a clear explanation for why it was rejected. The list of submitted patches can be found in the GitHubPull Requests page. Committers should scan the list from top-to-bottom, looking for patches that they feel qualified to review and possibly commit. For non-trivial changes, it is best to get another committer to review & approve your own patches before commit. "},{"title":"Reject","type":1,"pageTitle":"Guide for Apache Submarine Committers","url":"docs/community/HowToCommit#reject","content":"Patches should be rejected which do not adhere to the guidelines inContribution Guidelines. Committers should always be polite to contributors and try to instruct and encourage them to contribute better patches. If a committer wishes to improve an unacceptable patch, then it should first be rejected, and a new patch should be attached by the committer for review. "},{"title":"Commit individual patches","type":1,"pageTitle":"Guide for Apache Submarine Committers","url":"docs/community/HowToCommit#commit-individual-patches","content":"Submarine uses git for source code version control. The writable repo is at -https://gitbox.apache.org/repos/asf/submarine.git It is strongly recommended to use the cicd script to merge the PRs. See the instructions athttps://github.com/apache/submarine/tree/master/dev-support/cicd "},{"title":"Adding Contributors role","type":1,"pageTitle":"Guide for Apache Submarine Committers","url":"docs/community/HowToCommit#adding-contributors-role","content":"There are three roles (Administrators, Committers, Contributors) in the project. Contributors who have Contributors role can become assignee of the issues in the project.Committers who have Committers role can set arbitrary roles in addition to Contributors role.Committers who have Administrators role can edit or delete all comments, or even delete issues in addition to Committers role. How to set roles Login to ASF JIRAGo to the project page (e.g. https://issues.apache.org/jira/browse/SUBMARINE )Hit \"Administration\" tabHit \"Roles\" tab in left sideAdd Administrators/Committers/Contributors role "},{"title":"Apache Submarine Community","type":0,"sectionRef":"#","url":"docs/community/README","content":"","keywords":""},{"title":"Communicating","type":1,"pageTitle":"Apache Submarine Community","url":"docs/community/README#communicating","content":"You can reach out to the community members via any one of the following ways: Slack Developer: https://the-asf.slack.com/submarine-dev/ Slack User: https://the-asf.slack.com/submarine-user/ Zoom: https://cloudera.zoom.us/j/880548968 Sync Up: https://docs.google.com/document/d/16pUO3TP4SxSeLduG817GhVAjtiph9HYpRHo_JgduDvw/edit "},{"title":"Your First Contribution","type":1,"pageTitle":"Apache Submarine Community","url":"docs/community/README#your-first-contribution","content":"You can start by finding an existing issue with the https://issues.apache.org/jira/projects/SUBMARINE/issues/SUBMARINE?filter=allopenissues label. These issues are well suited for new contributors. If a PR (Pull Request) submitted to the Submarine Github projects by you is approved and merged, then you become a Submarine Contributor. If you want to work on a new idea of relatively small scope: Submit an issue describing your proposed change to the repo in question. The repo owners will respond to your issue promptly. Submit a pull request of Submarine containing a tested change. Contributions are welcomed and greatly appreciated. See CONTRIBUTING for details on submitting patches and the contribution workflow. "},{"title":"How Do I Become a Committer?","type":1,"pageTitle":"Apache Submarine Community","url":"docs/community/README#how-do-i-become-a-committer","content":"First of all, you need to get involved and be a Contributor. Based on your track-record as a contributor, Per Apache code, PMCs vote on committership, may invite you to be a committer (after we've called a vote). When that happens, if you accept, the following process kicks into place... Note that becoming a committer is not just about submitting some patches; it‘s also about helping out on the development and user Slack User, helping with documentation and the issues. "},{"title":"How to commit","type":1,"pageTitle":"Apache Submarine Community","url":"docs/community/README#how-to-commit","content":"See How to commit for helper doc for Submarine committers. "},{"title":"Communication","type":1,"pageTitle":"Apache Submarine Community","url":"docs/community/README#communication","content":"Communication within the Submarine community abides by Apache’s Code of Conduct. "},{"title":"Mailing lists","type":1,"pageTitle":"Apache Submarine Community","url":"docs/community/README#mailing-lists","content":"Get help using Apache Submarine or contribute to the project on our mailing lists: Users : subscribe, unsubscribe, archivesfor usage questions, help, and announcements.Dev : subscribe, unsubscribe, archivesfor people wanting to contribute to the project.Commits : subscribe, unsubscribe, archivesfor commit messages and patches. "},{"title":"License","type":1,"pageTitle":"Apache Submarine Community","url":"docs/community/README#license","content":"Submarine source code is under the Apache 2.0 license. See the LICENSE file for details. "},{"title":"Environments Implementation","type":0,"sectionRef":"#","url":"docs/designDocs/environments-implementation","content":"","keywords":""},{"title":"Overview","type":1,"pageTitle":"Environments Implementation","url":"docs/designDocs/environments-implementation#overview","content":"Environment profiles (or environment for short) defines a set of libraries and when Docker is being used, a Docker image in order to run an experiment or a notebook. Docker and/or VM-image (such as, VirtualBox/VMWare images, Amazon Machine Images - AMI, Or custom image of Azure VM) defines the base layer of the environment. Please note that VM-image is different from VM instance type, On top of that, users can define a set of libraries (such as Python/R) to install, we call it kernel. Example of Environment  +-------------------+ |+-----------------+| || Python=3.7 || || Tensorflow=2.0 || |+---Exp Dependency+| |+-----------------+| ||OS=Ubuntu16.04 || ||CUDA=10.2 || ||GPU_Driver=375.. || |+---Base Library--+| +-------------------+ Copy As you can see, There're base libraries, such as what OS, CUDA version, GPU driver, etc. They can be achieved by specifying a VM-image / Docker image. On top of that, user can bring their dependencies, such as different version of Python, Tensorflow, Pandas, etc. How users use environment? Users can save different environment configs which can be also shared across the platform. Environment profiles can be used to run a notebook (e.g. by choosing different kernel from Jupyter), or an experiment. Predefined experiment library includes what environment to use so users don't have to choose which environment to use.  +-------------------+ |+-----------------+| +------------+ || Python=3.7 || |User1 | || Tensorflow=2.0 || +------------+ |+---Kernel -------+| +------------+ |+-----------------+|<----+ |User2 | ||OS=Ubuntu16.04 || + +------------+ ||CUDA=10.2 || | +------------+ ||GPU_Driver=375.. || | |User3 | |+---Base Library--+| | +------------+ +-----Default-Env---+ | | | +-------------------+ | |+-----------------+| | || Python=3.3 || | || Tensorflow=2.0 || | |+---kernel--------+| | |+-----------------+| | ||OS=Ubuntu16.04 || | ||CUDA=10.3 ||<----+ ||GPU_Driver=375.. || |+---Base Library--+| +-----My-Customized-+ Copy There're two environments in the above graph, \"Default-Env\" and \"My-Customized\", which can have different combinations of libraries for different experiments/notebooks. Users can choose different environments for different experiments as they want. Environments can be added/listed/deleted/selected through CLI/SDK/UI. Implementation# "},{"title":"Environment API definition","type":1,"pageTitle":"Environments Implementation","url":"docs/designDocs/environments-implementation#environment-api-definition","content":"Let look at what object definition looks like to define an environment, API of environment looks like:  name: \"my_submarine_env\", vm-image: \"...\", docker-image: \"...\", kernel: <object of kernel> description: \"this is the most common env used by team ABC\" Copy vm-image is optional if we don't need to launch new VM (like running a training job in a cloud-remote machine). docker-image is requiredkernel could be optional if kernel is already included by vm-image or docker-image.name of the environment should be unique in the system, so user can reference it when create a new experiment/notebook. "},{"title":"VM-image and Docker-image","type":1,"pageTitle":"Environments Implementation","url":"docs/designDocs/environments-implementation#vm-image-and-docker-image","content":"Docker-image and VM image should be prepared by system admin / SREs, it is hard for Data-Scientists to write an error-proof Dockerfile, and push/manage Docker images. This is one of the reason we hide Docker-image inside \"environment\", we will encourage users to customize their kernels if needed, but don't have to touch Dockerfile and build/push/manage new Docker images. As a project, we will document what's the best practice and example of Dockerfiles. Dockerfile should include proper ENTRYPOINT definition which pointed to our default script, so no matter it is notebook, or an experiment, we will setup kernel (see below) and other environment variables properly. "},{"title":"Kernel Implementation","type":1,"pageTitle":"Environments Implementation","url":"docs/designDocs/environments-implementation#kernel-implementation","content":"After investigating different alternatives (such as pipenv, venv, etc.), we decided to use Conda environment which nicely replaces Python virtual env, pip, and can also support other languages. More details can be found at: https://medium.com/@krishnaregmi/pipenv-vs-virtualenv-vs-conda-environment-3dde3f6869ed When once Conda, users can easily add, remove dependency of a Conda environment. User can also easily export environment to yaml file. The yaml file of Conda environment by using conda env export looks like: name: base channels: - defaults dependencies: - _ipyw_jlab_nb_ext_conf=0.1.0=py37_0 - alabaster=0.7.12=py37_0 - anaconda=2020.02=py37_0 - anaconda-client=1.7.2=py37_0 - anaconda-navigator=1.9.12=py37_0 - anaconda-project=0.8.4=py_0 - applaunchservices=0.2.1=py_0 Copy Including Conda kernel, the environment object may look like: name: \"my_submarine_env\", vm-image: \"...\", docker-image: \"...\", kernel: name: team_default_python_3.7 channels: - defaults dependencies: - _ipyw_jlab_nb_ext_conf=0.1.0=py37_0 - alabaster=0.7.12=py37_0 - anaconda=2020.02=py37_0 - anaconda-client=1.7.2=py37_0 - anaconda-navigator=1.9.12=py37_0 Copy When launch a new experiment / notebook session using the my_submarine_env, submarine server will use defined Docker image, and Conda kernel to launch of container. "},{"title":"Storage of Environment","type":1,"pageTitle":"Environments Implementation","url":"docs/designDocs/environments-implementation#storage-of-environment","content":"Environment of Submarine is just a simple text file, so it will be persisted in Submarine metastore, which is ideally a Database. Docker image is stored inside a regular Docker registry, which will be handled outside of the system. Conda dependencies are stored in Conda channel (where referenced packages are stored), which will be handled/setuped separately. (Popular conda channels are default and conda-forge) For more detailed discussion about storage-related implementations, please refer to storage-implementation. "},{"title":"How to implement to make user can easily use Submarine environments?","type":1,"pageTitle":"Environments Implementation","url":"docs/designDocs/environments-implementation#how-to-implement-to-make-user-can-easily-use-submarine-environments","content":"We like simplicities, and we don't want to leak complexities of implementations to the users. To make it happen, we have to do some works to hide complexities. There're two primary uses of environments: experiments and notebook, for both of them, users should not do works like explictily call conda active $env_name to active environments. To make it happen, what we can do is to include following parts in Dockerfile FROM ubuntu:18.04 <Include whatever base-libraries like CUDA, etc.> <Make sure conda (with our preferred version) is installed> <Make sure Jupyter (with our preferred version) is installed> # This is just a sample of Dockerfile, users can do more customizations if needed ENTRYPOINT [\"/submarine-bootstrap.sh\"] Copy When Submarine Server (this is implementation detail of Submarine Server, user will not see it at all) launch an experiment, or notebook, it will invoke following docker run command (or any other equvilant like using K8s spec): docker run <submarine_docker_image> --kernel <kernel_name> -- .... python train.py --batch_size 5 (and other parameters) Copy Similarily, to launch a notebook: docker run <submarine_docker_image> --kernel <kernel_name> -- .... jupyter Copy The submarine-bootstrap.sh is part of Submarine repo, and will handle --kernel argument which will invoke conda active $kernel_name before anything else. (Like run the training job). "},{"title":"Architecture and Requirment","type":0,"sectionRef":"#","url":"docs/designDocs/architecture-and-requirements","content":"","keywords":""},{"title":"Terminology","type":1,"pageTitle":"Architecture and Requirment","url":"docs/designDocs/architecture-and-requirements#terminology","content":"Term\tDescriptionUser\tA single data-scientist/data-engineer. User has resource quota, credentials Team\tUser belongs to one or more teams, teams have ACLs for artifacts sharing such as notebook content, model, etc. Admin\tAlso called SRE, who manages user's quotas, credentials, team, and other components. "},{"title":"Background","type":1,"pageTitle":"Architecture and Requirment","url":"docs/designDocs/architecture-and-requirements#background","content":"Everybody talks about machine learning today, and lots of companies are trying to leverage machine learning to push the business to the next level. Nowadays, as more and more developers, infrastructure software companies coming to this field, machine learning becomes more and more achievable. In the last decade, the software industry has built many open source tools for machine learning to solve the pain points: It was not easy to build machine learning algorithms manually, such as logistic regression, GBDT, and many other algorithms:Answer to that: Industries have open sourced many algorithm libraries, tools, and even pre-trained models so that data scientists can directly reuse these building blocks to hook up to their data without knowing intricate details inside these algorithms and models. It was not easy to achieve \"WYSIWYG, what you see is what you get\" from IDEs: not easy to get output, visualization, troubleshooting experiences at the same place.Answer to that: Notebooks concept was added to this picture, notebook brought the experiences of interactive coding, sharing, visualization, debugging under the same user interface. There're popular open-source notebooks like Apache Zeppelin/Jupyter. It was not easy to manage dependencies: ML applications can run on one machine is hard to deploy on another machine because it has lots of libraries dependencies.Answer to that: Containerization becomes popular and a standard to packaging dependencies to make it easier to \"build once, run anywhere\". Fragmented tools, libraries were hard for ML engineers to learn. Experiences learned in one company are not naturally migratable to another company.Answer to that: A few dominant open-source frameworks reduced the overhead of learning too many different frameworks, concepts. Data-scientist can learn a few libraries such as Tensorflow/PyTorch, and a few high-level wrappers like Keras will be able to create your machine learning application from other open-source building blocks. Similarly, models built by one library (such as libsvm) were hard to be integrated into machine learning pipeline since there's no standard format.Answer to that: Industry has built successful open-source standard machine learning frameworks such as Tensorflow/PyTorch/Keras so their format can be easily shared across. And efforts to build an even more general model format such as ONNX. It was hard to build a data pipeline that flows/transform data from a raw data source to whatever required by ML applications.Answer to that: Open source big data industry plays an important role in providing, simplify, unify processes and building blocks for data flows, transformations, etc. The machine learning industry is moving on the right track to solve major roadblocks. So what are the pain points now for companies which have machine learning needs? What can we help here? To answer this question, let's look at machine learning workflow first. "},{"title":"Machine Learning Workflows & Pain points","type":1,"pageTitle":"Architecture and Requirment","url":"docs/designDocs/architecture-and-requirements#machine-learning-workflows--pain-points","content":"1) From different data sources such as edge, clickstream, logs, etc. => Land to data lakes 2) From data lake, data transformation: => Data transformations: Cleanup, remove invalid rows/columns, select columns, sampling, split train/test data-set, join table, etc. => Data prepared for training. 3) From prepared data: => Training, model hyper-parameter tuning, cross-validation, etc. => Models saved to storage. 4) From saved models: => Model assurance, deployment, A/B testing, etc. => Model deployed for online serving or offline scoring. Copy Typically data scientists responsible for item 2)-4), 1) typically handled by a different team (called Data Engineering team in many companies, some Data Engineering team also responsible for part of data transformation) "},{"title":"Pain #1 Complex workflow/steps from raw data to model, different tools needed by different steps, hard to make changes to workflow, and not error-proof","type":1,"pageTitle":"Architecture and Requirment","url":"docs/designDocs/architecture-and-requirements#pain-1-complex-workflowsteps-from-raw-data-to-model-different-tools-needed-by-different-steps-hard-to-make-changes-to-workflow-and-not-error-proof","content":"It is a complex workflow from raw data to usable models, after talking to many different data scientists, we have learned that a typical procedure to train a new model and push to production can take months to 1-2 years. It is also a wide skill set required by this workflow. For example, data transformation needs tools like Spark/Hive for large scale and tools like Pandas for a small scale. And model training needs to be switched between XGBoost, Tensorflow, Keras, PyTorch. Building a data pipeline requires Apache Airflow or Oozie. Yes, there are great, standardized open-source tools built for many of such purposes. But how about changes need to be made for a particular part of the data pipeline? How about adding a few columns to the training data for experiments? How about training models, and push models to validation, A/B testing before rolling to production? All these steps need jumping between different tools, UIs, and very hard to make changes, and it is not error-proof during these procedures. "},{"title":"Pain #2 Dependencies of underlying resource management platform","type":1,"pageTitle":"Architecture and Requirment","url":"docs/designDocs/architecture-and-requirements#pain-2-dependencies-of-underlying-resource-management-platform","content":"To make jobs/services required by a machine learning platform to be able to run, we need an underlying resource management platform. There're some choices of resource management platform, and they have distinct advantages and disadvantages. For example, there're many machine learning platform built on top of K8s. It is relatively easy to get a K8s from a cloud vendor, easy to orchestrate machine learning required services/daemons run on K8s. However, K8s doesn't offer good support jobs like Spark/Flink/Hive. So if your company has Spark/Flink/Hive running on YARN, there're gaps and a significant amount of work to move required jobs from YARN to K8s. Maintaining a separate K8s cluster is also overhead to Hadoop-based data infrastructure. Similarly, if your company's data pipelines are mostly built on top of cloud resources and SaaS offerings, asking you to install a separate YARN cluster to run a new machine learning platform doesn't make a lot of sense. "},{"title":"Pain #3 Data scientist are forced to interact with lower-level platform components","type":1,"pageTitle":"Architecture and Requirment","url":"docs/designDocs/architecture-and-requirements#pain-3-data-scientist-are-forced-to-interact-with-lower-level-platform-components","content":"In addition to the above pain, we do see Data Scientists are forced to learn underlying platform knowledge to be able to build a real-world machine learning workflow. For most of the data scientists we talked with, they're experts of ML algorithms/libraries, feature engineering, etc. They're also most familiar with Python, R, and some of them understand Spark, Hive, etc. If they're asked to do interactions with lower-level components like fine-tuning a Spark job's performance; or troubleshooting job failed to launch because of resource constraints; or write a K8s/YARN job spec and mount volumes, set networks properly. They will scratch their heads and typically cannot perform these operations efficiently. "},{"title":"Pain #4 Comply with data security/governance requirements","type":1,"pageTitle":"Architecture and Requirment","url":"docs/designDocs/architecture-and-requirements#pain-4-comply-with-data-securitygovernance-requirements","content":"TODO: Add more details. "},{"title":"Pain #5 No good way to reduce routine ML code development","type":1,"pageTitle":"Architecture and Requirment","url":"docs/designDocs/architecture-and-requirements#pain-5-no-good-way-to-reduce-routine-ml-code-development","content":"After the data is prepared, the data scientist needs to do several routine tasks to build the ML pipeline. To get a sense of the existing the data set, it usually needs a split of the data set, the statistics of data set. These tasks have a common duplicate part of code, which reduces the efficiency of data scientists. An abstraction layer/framework to help the developer to boost ML pipeline development could be valuable. It's better than the developer only needs to fill callback function to focus on their key logic. Submarine# "},{"title":"Overview","type":1,"pageTitle":"Architecture and Requirment","url":"docs/designDocs/architecture-and-requirements#overview","content":""},{"title":"A little bit history","type":1,"pageTitle":"Architecture and Requirment","url":"docs/designDocs/architecture-and-requirements#a-little-bit-history","content":"Initially, Submarine is built to solve problems of running deep learning jobs like Tensorflow/PyTorch on Apache Hadoop YARN, allows admin to monitor launched deep learning jobs, and manage generated models. It was part of YARN initially, and code resides under hadoop-yarn-applications. Later, the community decided to convert it to be a subproject within Hadoop (Sibling project of YARN, HDFS, etc.) because we want to support other resource management platforms like K8s. And finally, we're reconsidering Submarine's charter, and the Hadoop community voted that it is the time to moved Submarine to a separate Apache TLP. "},{"title":"Why Submarine?","type":1,"pageTitle":"Architecture and Requirment","url":"docs/designDocs/architecture-and-requirements#why-submarine","content":"ONE PLATFORM Submarine is the ONE PLATFORM to allow Data Scientists to create end-to-end machine learning workflow. ONE PLATFORM means it supports Data Scientists and data engineers to finish their jobs on the same platform without frequently switching their toolsets. From dataset exploring data pipeline creation, model training, and tuning, and push model to production. All these steps can be completed within the ONE PLATFORM. Resource Management Independent It is also designed to be resource management independent, no matter if you have Apache Hadoop YARN, K8s, or just a container service, you will be able to run Submarine on top it. "},{"title":"Requirements and non-requirements","type":1,"pageTitle":"Architecture and Requirment","url":"docs/designDocs/architecture-and-requirements#requirements-and-non-requirements","content":""},{"title":"Notebook","type":1,"pageTitle":"Architecture and Requirment","url":"docs/designDocs/architecture-and-requirements#notebook","content":"1) Users should be able to create, edit, delete a notebook. (P0) 2) Notebooks can be persisted to storage and can be recovered if failure happens. (P0) 3) Users can trace back to history versions of a notebook. (P1) 4) Notebooks can be shared with different users. (P1) 5) Users can define a list of parameters of a notebook (looks like parameters of the notebook's main function) to allow executing a notebook like a job. (P1) 6) Different users can collaborate on the same notebook at the same time. (P2) A running notebook instance is called notebook session (or session for short). "},{"title":"Experiment","type":1,"pageTitle":"Architecture and Requirment","url":"docs/designDocs/architecture-and-requirements#experiment","content":"Experiments of Submarine is an offline task. It could be a shell command, a Python command, a Spark job, a SQL query, or even a workflow. The primary purposes of experiments under Submarine's context is to do training tasks, offline scoring, etc. However, experiment can be generalized to do other tasks as well. Major requirement of experiment: 1) Experiments can be submitted from UI/CLI/SDK. 2) Experiments can be monitored/managed from UI/CLI/SDK. 3) Experiments should not bind to one resource management platform (K8s/YARN). Type of experiments#  There're two types of experiments:Adhoc experiments: which includes a Python/R/notebook, or even an adhoc Tensorflow/PyTorch task, etc. Predefined experiment library: This is specialized experiments, which including developed libraries such as CTR, BERT, etc. Users are only required to specify a few parameters such as input, output, hyper parameters, etc. Instead of worrying about where's training script/dependencies located. Adhoc experiment# Requirements: Allow run adhoc scripts.Allow model engineer, data scientist to run Tensorflow/Pytorch programs on YARN/K8s/Container-cloud. Allow jobs easy access data/models in HDFS/s3, etc. Support run distributed Tensorflow/Pytorch jobs with simple configs.Support run user-specified Docker images.Support specify GPU and other resources. Predefined experiment library# Here's an example of predefined experiment library to train deepfm model: { \"input\": { \"train_data\": [\"hdfs:///user/submarine/data/tr.libsvm\"], \"valid_data\": [\"hdfs:///user/submarine/data/va.libsvm\"], \"test_data\": [\"hdfs:///user/submarine/data/te.libsvm\"], \"type\": \"libsvm\" }, \"output\": { \"save_model_dir\": \"hdfs:///user/submarine/deepfm\", \"metric\": \"auc\" }, \"training\": { \"batch_size\" : 512, \"field_size\": 39, \"num_epochs\": 3, \"feature_size\": 117581, ... } } Copy Predefined experiment libraries can be shared across users on the same platform, users can also add new or modified predefined experiment library via UI/REST API. We will also model AutoML, auto hyper-parameter tuning to predefined experiment library. Pipeline# Pipeline is a special kind of experiment: A pipeline is a DAG of experiments. Can be also treated as a special kind of experiment.Users can submit/terminate a pipeline.Pipeline can be created/submitted via UI/API. "},{"title":"Environment Profiles","type":1,"pageTitle":"Architecture and Requirment","url":"docs/designDocs/architecture-and-requirements#environment-profiles","content":"Environment profiles (or environment for short) defines a set of libraries and when Docker is being used, a Docker image in order to run an experiment or a notebook. Docker or VM image (such as AMI: Amazon Machine Images) defines the base layer of the environment. On top of that, users can define a set of libraries (such as Python/R) to install. Users can save different environment configs which can be also shared across the platform. Environment profiles can be used to run a notebook (e.g. by choosing different kernel from Jupyter), or an experiment. Predefined experiment library includes what environment to use so users don't have to choose which environment to use. Environments can be added/listed/deleted/selected through CLI/SDK. "},{"title":"Model","type":1,"pageTitle":"Architecture and Requirment","url":"docs/designDocs/architecture-and-requirements#model","content":"Model management# Model artifacts are generated by experiments or notebook.A model consists of artifacts from one or multiple files. Users can choose to save, tag, version a produced model.Once The Model is saved, Users can do the online model serving or offline scoring of the model. Model serving# After model saved, users can specify a serving script, a model and create a web service to serve the model. We call the web service to \"endpoint\". Users can manage (add/stop) model serving endpoints via CLI/API/UI. "},{"title":"Metrics for training job and model","type":1,"pageTitle":"Architecture and Requirment","url":"docs/designDocs/architecture-and-requirements#metrics-for-training-job-and-model","content":"Submarine-SDK provides tracking/metrics APIs, which allows developers to add tracking/metrics and view tracking/metrics from Submarine Workbench UI. "},{"title":"Deployment","type":1,"pageTitle":"Architecture and Requirment","url":"docs/designDocs/architecture-and-requirements#deployment","content":"Submarine Services (See architecture overview below) should be deployed easily on-prem / on-cloud. Since there're more and more public cloud offering for compute/storage management on cloud, we need to support deploy Submarine compute-related workloads (such as notebook session, experiments, etc.) to cloud-managed clusters. This also include Submarine may need to take input parameters from customers and create/manage clusters if needed. It is also a common requirement to use hybrid of on-prem/on-cloud clusters. "},{"title":"Security / Access Control / User Management / Quota Management","type":1,"pageTitle":"Architecture and Requirment","url":"docs/designDocs/architecture-and-requirements#security--access-control--user-management--quota-management","content":"There're 4 kinds of objects need access-control: Assets belong to Submarine system, which includes notebook, experiments and results, models, predefined experiment libraries, environment profiles.Data security. (Who owns what data, and what data can be accessed by each users). User credentials. (Such as LDAP).Other security, such as Git repo access, etc. For the data security / user credentials / other security, it will be delegated to 3rd libraries such as Apache Ranger, IAM roles, etc. Assets belong to Submarine system will be handled by Submarine itself. Here're operations which Submarine admin can do for users / teams which can be used to access Submarine's assets. Operations for admins Admin uses \"User Management System\" to onboard new users, upload user credentials, assign resource quotas, etc. Admins can create new users, new teams, update user/team mappings. Or remove users/teams. Admin can set resource quotas (if different from system default), permissions, upload/update necessary credentials (like Kerberos keytab) of a user.A DE/DS can also be an admin if the DE/DS has admin access. (Like a privileged user). This will be useful when a cluster is exclusively shared by a user or only shared by a small team.Resource Quota Management System helps admin to manage resources quotas of teams, organizations. Resources can be machine resources like CPU/Memory/Disk, etc. It can also include non-machine resources like $$-based budgets. "},{"title":"Dataset","type":1,"pageTitle":"Architecture and Requirment","url":"docs/designDocs/architecture-and-requirements#dataset","content":"There's also need to tag dataset which will be used for training and shared across the platform by different users. Like mentioned above, access to the actual data will be handled by 3rd party system like Apache Ranger / Hive Metastore which is out of the Submarine's scope. "},{"title":"Architecture Overview","type":1,"pageTitle":"Architecture and Requirment","url":"docs/designDocs/architecture-and-requirements#architecture-overview","content":""},{"title":"Architecture Diagram","type":1,"pageTitle":"Architecture and Requirment","url":"docs/designDocs/architecture-and-requirements#architecture-diagram","content":" +-----------------------------------------------------------------+ | Submarine UI / CLI / REST API / SDK | | Mini-Submarine | +-----------------------------------------------------------------+ +--------------------Submarine Server-----------------------------+ | +---------+ +---------+ +----------+ +----------+ +------------+| | |Data set | |Notebooks| |Experiment| |Models | |Servings || | +---------+ +---------+ +----------+ +----------+ +------------+| |-----------------------------------------------------------------| | | | +-----------------+ +-----------------+ +---------------------+ | | |Experiment | |Compute Resource | |Other Management | | | |Manager | | Manager | |Services | | | +-----------------+ +-----------------+ +---------------------+ | | Spark, template YARN/K8s/Docker | | TF, PyTorch, pipeline | | | + +-----------------+ + | |Submarine Meta | | | | Store | | | +-----------------+ | | | +-----------------------------------------------------------------+ (You can use http://stable.ascii-flow.appspot.com/#Draw to draw such diagrams) Copy Compute Resource Manager Helps to manage compute resources on-prem/on-cloud, this module can also handle cluster creation / management, etc. Experiment Manager Work with \"Compute Resource Manager\" to submit different kinds of workloads such as (distributed) Tensorflow / Pytorch, etc. Submarine SDK provides Java/Python/REST API to allow DS or other engineers to integrate into Submarine services. It also includes a mini-submarine component that launches Submarine components from a single Docker container (or a VM image). Details of Submarine Server design can be found at submarine-server-design. "},{"title":"Implementation Notes","type":0,"sectionRef":"#","url":"docs/designDocs/implementation-notes","content":"Before digging into details of implementations, you should read architecture-and-requirements first to understand overall requirements and architecture. Here're sub topics of Submarine implementations: Submarine Storage: How to store metadata, logs, metrics, etc. of Submarine.Submarine Environment: How environments created, managed, stored in Submarine. Submarine Experiment: How experiments managed, stored, and how the predefined experiment template works.Submarine Notebook: How experiments managed, stored, and how the predefined experiment template works.Submarine Server: How Submarine server is designed, architecture, implementation notes, etc. Working-in-progress designs, Below are designs which are working-in-progress, we will move them to the upper section once design & review is finished: Submarine HA Design: How Submarine HA can be achieved, using RAFT, etc.Submarine services deployment module: How to deploy submarine services to k8s, YARN or cloud. ","keywords":""},{"title":"Notebook Implementation","type":0,"sectionRef":"#","url":"docs/designDocs/notebook-implementation","content":"","keywords":""},{"title":"Overview","type":1,"pageTitle":"Notebook Implementation","url":"docs/designDocs/notebook-implementation#overview","content":""},{"title":"User's interaction","type":1,"pageTitle":"Notebook Implementation","url":"docs/designDocs/notebook-implementation#users-interaction","content":"Users can start N (N >= 0) number of Notebook sessions, a notebook session is a running notebook instance. Notebook session can be launched by Submarine UI (P0), and Submarine CLI (P2). When launch notebook session, users can choose T-shirt size of notebook session (how much mem/cpu/gpu resources, or resource profile such as small, medium, large, etc.). (P0)And user can choose an environment for notebook. More details please refer to environment implementation (P0)When start a notebook, user can choose what code to be initialized, similar to experiment. (P1)Optionally, users can choose to attach a persistent volume to a notebook session. (P2) Users can get a list of notebook sessions belongs to themselves, and connect to notebook session. User can choose to terminate a running notebook session. "},{"title":"Admin's interaction","type":1,"pageTitle":"Notebook Implementation","url":"docs/designDocs/notebook-implementation#admins-interaction","content":"How many concurrent notebook sessions can be launched by each user is determined by resource quota limits of each user, and maximum concurrent notebook sessions can be launched by each user. (P2) "},{"title":"Relationship with other components","type":1,"pageTitle":"Notebook Implementation","url":"docs/designDocs/notebook-implementation#relationship-with-other-components","content":""},{"title":"Metadata store","type":1,"pageTitle":"Notebook Implementation","url":"docs/designDocs/notebook-implementation#metadata-store","content":"Running notebook sessions' metadata need persistented in Submarine's metadata store (Database). "},{"title":"Submarine Server","type":1,"pageTitle":"Notebook Implementation","url":"docs/designDocs/notebook-implementation#submarine-server","content":" +--------------+ +--------Submarine Server--------------------+ |Submarine UI | | +-------------------+ | | |+---> Submarine | | | Notebook | | | Notebook REST API| | +--------------+ | | | | | +--------+----------+ +--------------+ | | | +->|Metastore | | | +--------v----------+ | |DB | | | | Submarine +--+ +--------------+ | | | Notebook Mgr | | | | | | | | | | | +--------+----------+ | | | | +----------|---------------------------------+ | +--------------+ +--------v---------+ | Notebook Session | | | | instance | | | +------------------+ Copy Once user use Submarine UI to launch a notebook session, Submarine notebook manager inside Submarine Server will persistent notebook session's metadata, and launch a new notebook session instance. "},{"title":"Resource manager","type":1,"pageTitle":"Notebook Implementation","url":"docs/designDocs/notebook-implementation#resource-manager","content":"When using K8s as resource manager, Submarine notebook session will run as a new POD. "},{"title":"Storage","type":1,"pageTitle":"Notebook Implementation","url":"docs/designDocs/notebook-implementation#storage","content":"There're several different types of storage requirements for Submarine notebook. For code, environment, etc, storage, please refer to storage implementation, check \"Localization of experiment/notebook/model-serving code\". When there're needs to attach volume (such as user's home folder) to Submarine notebook session, please check storage implementation, check \"Attachable volume\". "},{"title":"Environment","type":1,"pageTitle":"Notebook Implementation","url":"docs/designDocs/notebook-implementation#environment","content":"Submarine notebook's environment should be used to run experiment, model serving, etc. Please check environment implementation. (More specific to notebook, please check \"How to implement to make user can easily use Submarine environments\") Please note that notebook's Environment should include right version of notebook libraries, and admin should follow the guidance to build correct Docker image, Conda libraries to correctly run Notebook. "},{"title":"Submarine SDK (For Experiment, etc.)","type":1,"pageTitle":"Notebook Implementation","url":"docs/designDocs/notebook-implementation#submarine-sdk-for-experiment-etc","content":"Users can run new experiment, access metrics information, or do model operations using Submarine SDK. Submarine SDK is a Python library which can talk to Submarine Server which need Submarine Server's endpoint as well as user credentials. To ensure better experience, we recommend always install proper version of Submarine SDK from environment which users can use Submarine SDK directly from commandline. (We as Submarine community can provide sample Dockerfile or Conda environment which have correct base libraries installed for Submarine SDK). Submarine Server IP will be configured automatically by Submarine Server, and added as an envar when Submarine notebook session got launched. "},{"title":"Security","type":1,"pageTitle":"Notebook Implementation","url":"docs/designDocs/notebook-implementation#security","content":"Please refer to Security Implementation Once user accessed to a running notebook session, the user can also access resources of the notebook, capability of submit new experiment, and access data. This is also very dangerous so we have to protect it. A simple solution is to use token-based authentication https://jupyter-notebook.readthedocs.io/en/stable/security.html. A more common way is to use solutions like KNOX to support SSO. We need expand this section to more details. (TODO). "},{"title":"Experiment Implementation","type":0,"sectionRef":"#","url":"docs/designDocs/experiment-implementation","content":"","keywords":""},{"title":"Overview","type":1,"pageTitle":"Experiment Implementation","url":"docs/designDocs/experiment-implementation#overview","content":"This document talks about implementation of experiment, flows and design considerations. Experiment consists of following components, also interact with other Submarine or 3rd-party components, showing below:  +---------------------------------------+ +----------+ | Experiment Tasks | |Run | | | |Configs | | +----------------------------------+ | +----------+ | | Experiment Runnable Code | | +-----------------+ +----------+ | | | | |Output Artifacts | |Input Data| | | (Like train-job.py) | | |(Models, etc.) | | | | +----------------------------------+ | +-----------------+ | | | +----------------------------------+ | +----------+ | | Experiment Deps (Like Python) | | +-------------+ | +----------------------------------+ | |Logs/Metrics | | +----------------------------------+ | | | | | OS, Base Libaries (Like CUDA) | | +-------------+ | +----------------------------------+ | +---------------------------------------+ ^ | (Launch Task with resources) + +---------------------------------+ |Resource Manager (K8s/YARN/Cloud)| +---------------------------------+ Copy As showing in the above diagram, Submarine experiment consists of the following items: On the left side, there're input data and run configs. In the middle box, they're experiment tasks, it could be multiple tasks when we run distributed training, pipeline, etc. There're main runnable code, such as train.py for the training main entry point. The two boxes below: experiment dependencies and OS/Base libraries we called Submarine Environment Profile or Environment for short. Which defined what is the basic libraries to run the main experiment code. Experiment tasks are launched by Resource Manager, such as K8s/YARN/Cloud or just launched locally. There're resources constraints for each experiment tasks. (e.g. how much memory, cores, GPU, disk etc. can be used by tasks). On the right side, they're artifacts generated by experiments: Output artifacts: Which are main output of the experiment, it could be model(s), or output data when we do batch prediction.Logs/Metrics for further troubleshooting or understanding of experiment's quality. For the rest of the design doc, we will talk about how we handle environment, code, and manage output/logs, etc. "},{"title":"API of Experiment","type":1,"pageTitle":"Experiment Implementation","url":"docs/designDocs/experiment-implementation#api-of-experiment","content":"This is not a full definition of experiment, for more details, please reference to experiment API. Here's just an example of experiment object which help developer to understand what included in an experiment. experiment: name: \"abc\", type: \"script\", environment: \"team-default-ml-env\" code: sync_mode: s3 url: \"s3://bucket/training-job.tar.gz\" parameter: > python training.py --iteration 10 --input=s3://bucket/input output=s3://bucket/output resource_constraint: res=\"mem=20gb, vcore=3, gpu=2\" timeout: \"30 mins\" Copy This defined a \"script\" experiment, which has a name \"abc\", the name can be used to track the experiment. There's environment \"team-default-ml-env\" defined to make sure dependencies of the job can be downloaded properly before executing the job. code defined where the experiment code will be downloaded, we will support a couple of sync_mode like s3 (or abfs/hdfs), git, etc. Different types of experiments will have different specs, for example distributed Tensorflow spec may look like: experiment: name: \"abc-distributed-tf\", type: \"distributed-tf\", ps: environment: \"team-default-ml-cpu\" resource_constraint: res=\"mem=20gb, vcore=3, gpu=0\" worker: environment: \"team-default-ml-gpu\" resource_constraint: res=\"mem=20gb, vcore=3, gpu=2\" code: sync_mode: git url: \"https://foo.com/training-job.git\" parameter: > python /code/training-job/training.py --iteration 10 --input=s3://bucket/input output=s3://bucket/output tensorboard: enabled timeout: \"30 mins\" Copy Since we have different Docker image, one is using GPU and one is not using GPU, we can specify different environment and resource constraint. "},{"title":"Manage environments for experiment","type":1,"pageTitle":"Experiment Implementation","url":"docs/designDocs/experiment-implementation#manage-environments-for-experiment","content":"Please refer to environment-implementation.md for more details "},{"title":"Manage storages for experiment","type":1,"pageTitle":"Experiment Implementation","url":"docs/designDocs/experiment-implementation#manage-storages-for-experiment","content":"There're different types of storage, such as logs, metrics, dependencies (environments). For more details. Please refer to storage-implementations for more details. This also includes how to manage code for experiment code. "},{"title":"Manage Pre-defined experiment libraries","type":1,"pageTitle":"Experiment Implementation","url":"docs/designDocs/experiment-implementation#manage-pre-defined-experiment-libraries","content":""},{"title":"Flow: Submit an experiment","type":1,"pageTitle":"Experiment Implementation","url":"docs/designDocs/experiment-implementation#flow-submit-an-experiment","content":""},{"title":"Submit via SDK Flows.","type":1,"pageTitle":"Experiment Implementation","url":"docs/designDocs/experiment-implementation#submit-via-sdk-flows","content":"To better understand experiment implementation, It will be good to understand what is the steps of experiment submission. Please note that below code is just pseudo code, not official APIs. "},{"title":"Specify what environment to use","type":1,"pageTitle":"Experiment Implementation","url":"docs/designDocs/experiment-implementation#specify-what-environment-to-use","content":"Before submit the environment, you have to choose what environment to choose. Environment defines dependencies, etc. of an experiment or a notebook. might looks like below: conda_environment = \"\"\" name: conda-env channels: - defaults dependencies: - asn1crypto=1.3.0=py37_0 - blas=1.0=mkl - ca-certificates=2020.1.1=0 - certifi=2020.4.5.1=py37_0 - cffi=1.14.0=py37hb5b8e2f_0 - chardet=3.0.4=py37_1003 prefix: /opt/anaconda3/envs/conda-env \"\"\" # This environment can be different from notebook's own environment environment = create_environment { DockerImage = \"ubuntu:16\", CondaEnvironment = conda_environment } Copy To better understand how environment works, please refer to environment-implementation. "},{"title":"Create experiment, specify where's training code located, and parameters.","type":1,"pageTitle":"Experiment Implementation","url":"docs/designDocs/experiment-implementation#create-experiment-specify-wheres-training-code-located-and-parameters","content":"For ad-hoc experiment (code located at S3), assume training code is part of the training-job.tar.gz and main class is train.py. When the job is launched, whatever specified in the localize_artifacts will be downloaded. experiment = create_experiment { Environment = environment, ExperimentConfig = { type = \"adhoc\", localize_artifacts = [ \"s3://bucket/training-job.tar.gz\" ], name = \"abc\", parameter = \"python training.py --iteration 10 --input=\"s3://bucket/input output=\"s3://bucket/output\", } } experiment.run() experiment.wait_for_finish(print_output=True) Copy Run notebook file in offline mode# It is possible we want to run a notebook file in offline mode, to do that, here's code to use to run a notebook code experiment = create_experiment { Environment = environment, ExperimentConfig = { type = \"adhoc\", localize_artifacts = [ \"s3://bucket/folder/notebook-123.ipynb\" ], name = \"abc\", parameter = \"runipy training.ipynb --iteration 10 --input=\"s3://bucket/input output=\"s3://bucket/output\", } } experiment.run() experiment.wait_for_finish(print_output=True) Copy Run pre-defined experiment library# experiment = create_experiment { # Here you can use default environment of library Environment = environment, ExperimentConfig = { type = \"template\", name = \"abc\", # A unique name of template template = \"deepfm_ctr\", # yaml file defined what is the parameters need to be specified. parameter = { Input: \"S3://.../input\", Output: \"S3://.../output\" Training: { \"batch_size\": 512, \"l2_reg\": 0.01, ... } } } } experiment.run() experiment.wait_for_finish(print_output=True) Copy "},{"title":"Summarize: Experiment v.s. Notebook session","type":1,"pageTitle":"Experiment Implementation","url":"docs/designDocs/experiment-implementation#summarize-experiment-vs-notebook-session","content":"There's a common misunderstanding about what is the differences between running experiment v.s. running task from a notebook session. We will talk about differences and commonalities: Differences \tExperiment\tNotebook SessionRun mode\tOffline\tInteractive Output Artifacts (a.k.a model)\tPersisted in a shared storage (like S3/NFS)\tLocal in the notebook session container, could be ephemeral Run history (meta, logs, metrics)\tMeta/logs/metrics can be traced from experiment UI (or corresponding API)\tNo run history can be traced from Submarine UI/API. Can view the current running paragraph's log/metrics, etc. What to run?\tCode from Docker image or shared storage (like Tarball on S3, Github, etc.)\tLocal in the notebook's paragraph Commonalities \tExperiment & Notebook SessionEnvironment\tThey can share the same Environment configuration "},{"title":"Experiment-related modules inside Submarine-server","type":1,"pageTitle":"Experiment Implementation","url":"docs/designDocs/experiment-implementation#experiment-related-modules-inside-submarine-server","content":"(Please refer to architecture of submarine server for more details) "},{"title":"Experiment Manager","type":1,"pageTitle":"Experiment Implementation","url":"docs/designDocs/experiment-implementation#experiment-manager","content":"The experiment manager receives the experiment requests, persisting the experiment metas in a database(e.g. MySQL), will invoke subsequence modules to submit and monitor the experiment's execution. "},{"title":"Compute Cluster Manager","type":1,"pageTitle":"Experiment Implementation","url":"docs/designDocs/experiment-implementation#compute-cluster-manager","content":"After experiment accepted by experiment manager, based on which cluster the experiment intended to run (like mentioned in the previous sections, Submarine supports to manage multiple compute clusters), compute cluster manager will returns credentials to access the compute cluster. It will also be responsible to create a new compute cluster if needed. For most of the on-prem use cases, there's only one cluster involved, for such cases, ComputeClusterManager returns credentials to access local cluster if needed. "},{"title":"Experiment Submitter","type":1,"pageTitle":"Experiment Implementation","url":"docs/designDocs/experiment-implementation#experiment-submitter","content":"Experiment Submitter handles different kinds of experiments to run (e.g. ad-hoc script, distributed TF, MPI, pre-defined templates, Pipeline, AutoML, etc.). And such experiments can be managed by different resource management systems (e.g. K8s, YARN, container cloud, etc.) To meet the requirements to support variant kinds of experiments and resource managers, we choose to use plug-in modules to support different submitters (which requires jars to submarine-server’s classpath). To avoid jars and dependencies of plugins break the submarine-server, the plug-ins manager, or both. To solve this issue, we can instantiate submitter plug-ins using a classloader that is different from the system classloader. Submitter Plug-ins# Each plug-in uses a separate module under the server-submitter module. As the default implements, we provide for YARN and K8s. For YARN cluster, we provide the submitter-yarn and submitter-yarnservice plug-ins. The submitter-yarn plug-in used the TonY as the runtime to run the training job, and the submitter-yarnservice plug-in direct use the YARN Service which supports Hadoop v3.1 above. The submitter-k8s plug-in is used to submit the job to Kubernetes cluster and use the operator as the runtime. The submitter-k8s plug-in implements the operation of CRD object and provides the java interface. In the beginning, we use the tf-operator for the TensorFlow. If Submarine want to support the other resource management system in the future, such as submarine-docker-cluster (submarine uses the Raft algorithm to create a docker cluster on the docker runtime environment on multiple servers, providing the most lightweight resource scheduling system for small-scale users). We should create a new plug-in module named submitter-docker under the server-submitter module. "},{"title":"Experiment Monitor","type":1,"pageTitle":"Experiment Implementation","url":"docs/designDocs/experiment-implementation#experiment-monitor","content":"The monitor tracks the experiment life cycle and records the main events and key info in runtime. As the experiment run progresses, the metrics are needed for evaluation of the ongoing success or failure of the execution progress. Due to adapt the different cluster resource management system, so we need a generic metric info structure and each submitter plug-in should inherit and complete it by itself. "},{"title":"Invoke flows of experiment-related components","type":1,"pageTitle":"Experiment Implementation","url":"docs/designDocs/experiment-implementation#invoke-flows-of-experiment-related-components","content":" +-----------------+ +----------------+ +----------------+ +-----------------+ |Experiments | |Compute Cluster | |Experiment | | Experiment | |Mgr | |Mgr | |Submitter | | Monitor | +-----------------+ +----------------+ +----------------+ +-----------------+ + + + + User | | | | Submit |+------------------------------------->+ + Xperiment| Use submitter.validate(spec) | | | to validate spec and create | | | experiment object (state- | | | machine). | | | | | | The experiment manager will | | | persist meta-data to Database| | | | | | | | + + |+-----------------> + | | | Submit Experiments| | | | To ComputeCluster| | | | Mgr, get existing|+---------------->| | | cluster, or | Use Submitter | | | create a new one.| to submit |+---------------> | | | Different kinds | Once job is | | | of experiments | submitted, use |+----+ | | to k8s/yarn, etc| monitor to get | | | | | status updates | | | | | | | Monitor | | | | | Xperiment | | | | | status | | | | | |<--------------------------------------------------------+| | | | | | | | Update Status back to Experiment | | | | Manager | |<----+ | | | | | | | | | | | | v v v v Copy TODO: add more details about template, environment, etc. "},{"title":"Common modules of experiment/notebook-session/model-serving","type":1,"pageTitle":"Experiment Implementation","url":"docs/designDocs/experiment-implementation#common-modules-of-experimentnotebook-sessionmodel-serving","content":"Experiment/notebook-session/model-serving share a lot of commonalities, all of them are: Some workloads running on YARN/K8s.Need persist meta data to DB. Need monitor task/service running status from resource management system.  We need to make their implementation are loose-coupled, but at the same time, share some building blocks as much as possible (e.g. submit PodSpecs to K8s, monitor status, get logs, etc.) to reduce duplications. "},{"title":"Support Predefined-experiment-templates","type":1,"pageTitle":"Experiment Implementation","url":"docs/designDocs/experiment-implementation#support-predefined-experiment-templates","content":"Predefined Experiment Template is just a way to save data-scientists time to repeatedly entering parameters which is not error-proof and user experience is also bad. "},{"title":"Predefined-experiment-template API to run experiment","type":1,"pageTitle":"Experiment Implementation","url":"docs/designDocs/experiment-implementation#predefined-experiment-template-api-to-run-experiment","content":"Predefined experiment template consists a list of parameters, each of the parameter has 4 properties: Key\tRequired\tDefault Value\tDescriptionName of the key\ttrue/false\tWhen required = false, a default value can be provided by the template\tDescription of the parameter For the example of deepfm CTR training experiment mentioned in the architecture-and-requirements.md { \"input\": { \"train_data\": [\"hdfs:///user/submarine/data/tr.libsvm\"], \"valid_data\": [\"hdfs:///user/submarine/data/va.libsvm\"], \"test_data\": [\"hdfs:///user/submarine/data/te.libsvm\"], \"type\": \"libsvm\" }, \"output\": { \"save_model_dir\": \"hdfs:///user/submarine/deepfm\", \"metric\": \"auc\" }, \"training\": { \"batch_size\" : 512, \"field_size\": 39, \"num_epochs\": 3, \"feature_size\": 117581, ... } } Copy The template will be (in yaml format): # deepfm.ctr template name: deepfm.ctr author: description: > This is a template to run CTR training using deepfm algorithm, by default it runs single node TF job, you can also overwrite training parameters to use distributed training. parameters: - name: input.train_data required: true description: > train data is expected in SVM format, and can be stored in HDFS/S3 ... - name: training.batch_size required: false default: 32 description: This is batch size of training Copy The batch format can be used in UI/API. "},{"title":"Handle Predefined-experiment-template from server side","type":1,"pageTitle":"Experiment Implementation","url":"docs/designDocs/experiment-implementation#handle-predefined-experiment-template-from-server-side","content":"Please note that, the conversion of predefined-experiment-template will be always handled by server. The invoke flow looks like:  +------------Submarine Server -----------------------+ +--------------+ | +-----------------+ | |Client |+------->|Experimment Mgr | | | | | | | | +--------------+ | +-----------------+ | | + | Submit | +-------v---------+ Get Experiment Template | Template | |Experiment |<-----+From pre-registered | Parameters | |Template Registry| Templates | to Submarine | +-------+---------+ | Server | | | | +-------v---------+ +-----------------+ | | |Deepfm CTR Templ-| |Experiment- | | | |ate Handler +------>|Tensorflow | | | +-----------------+ +--------+--------+ | | | | | | | | +--------v--------+ | | |Experiment | | | |Submitter | | | +--------+--------+ | | | | | | | | +--------v--------+ | | | | | | | ...... | | | +-----------------+ | | | +----------------------------------------------------+ Copy Basically, from Client, it submitted template parameters to Submarine Server, inside submarine server, it finds the corresponding template handler based on the name. And the template handler converts input parameters to an actual experiment, such as a distributed TF experiment. After that, it goes the similar route to validate experiment spec, compute cluster manager, etc. to get the experiment submitted and monitored. Predefined-experiment-template is able to create any kind of experiment, it could be a pipeline:  +-----------------+ +------------------+ |Template XYZ | | XYZ Template | | |+---------------> | Handler | +-----------------+ +------------------+ + | | | | v +--------------------+ +------------------+ | +-----------------+| | Predefined | | | Split Train/ ||<----+| Pipeline | | | Test data || +------------------+ | +-------+---------+| | | | | +-------v---------+| | | Spark Job ETL || | | || | +-------+---------+| | | | | +-------v---------+| | | Train using || | | XGBoost || | +-------+---------+| | | | | +-------v---------+| | | Validate Train || | | Results || | +-----------------+| | | +--------------------+ Copy Template can be also chained to reuse other template handlers  +-----------------+ +------------------+ |Template XYZ | | XYZ Template | | |+---------------> | Handler | +-----------------+ +------------------+ + | v +------------------+ +------------------+ |Distributed | | ABC Template | |TF Experiment |<----+| Handler | +------------------+ +------------------+ Copy Template Handler is a callable class inside Submarine Server with a standard interface defined like. interface ExperimentTemplateHandler { ExperimentSpec createExperiment(TemplatedExperimentParameters param) } Copy We should avoid users to do coding when they want to add new template, we should have several standard template handler to deal with most of the template handling. Experiment templates can be registered/updated/deleted via Submarine Server's REST API, which need to be discussed separately in the doc. (TODO) "},{"title":"Storage Implementation","type":0,"sectionRef":"#","url":"docs/designDocs/storage-implementation","content":"","keywords":""},{"title":"ML-related objects and their storages","type":1,"pageTitle":"Storage Implementation","url":"docs/designDocs/storage-implementation#ml-related-objects-and-their-storages","content":"First let's look at what user will interact for most of the time: Notebook ExperimentModel Servings  +---------+ +------------+ |Logs |<--+|Notebook | +----------+ +---------+ +------------+ +----------------+ |Trackings | <-+|Experiment |<--+>|Model Artifacts | +----------+ +-----------------+ +------------+ +----------------+ +----------+<---+|ML-related Metric|<--+Servings | |tf.events | +-----------------+ +------------+ +----------+ ^ +-----------------+ + | Environments | +----------------------+ | | +-----------------+ | Submarine Metastore | | Dependencies | |Code | +----------------------+ | | +-----------------+ |Experiment Meta | | Docker Images | +----------------------+ +-----------------+ |Model Store Meta | +----------------------+ |Model Serving Meta | +----------------------+ |Notebook meta | +----------------------+ |Experiment Templates | +----------------------+ |Environments Meta | +----------------------+ Copy First of all, all the notebook-sessions / experiments / model-serving instances) are more or less interact with following storage objects: Logs for these tasks for troubleshooting. ML-related metrics such as loss, epoch, etc. (in contrast of system metrics such as CPU/memory usage, etc.) There're different types of ML-related metrics, for Tensorflow/pytorch, they can use tf.events and get visualizations on tensorboard. Or they can use tracking APIs (such as Submarine tracking, mlflow tracking, etc.) to output customized tracking results for non TF/Pytorch workloads. Training jobs of experiment typically generate model artifacts (files) which need persisted, and both of notebook, model serving needs to load model artifacts from persistent storage. There're various of meta information, such as experiment meta, model registry, model serving, notebook, experiment, environment, etc. We need be able to read these meta information back.We also have code for experiment (like training/batch-prediction), notebook (ipynb), and model servings.And notebook/experiments/model-serving need depend on environments (dependencies such as pip, and Docker Images). "},{"title":"Implementation considerations for ML-related objects","type":1,"pageTitle":"Storage Implementation","url":"docs/designDocs/storage-implementation#implementation-considerations-for-ml-related-objects","content":"Object Type\tCharacteristics\tWhere to storeMetrics: tf.events\tTime series data with k/v, appendable to file\tLocal/EBS, HDFS, Cloud Blob Storage Metrics: other tracking metrics\tTime series data with k/v, appendable to file\tLocal, HDFS, Cloud Blob Storage, Database Logs\tLarge volumes, #files are potentially huge.\tLocal (temporary), HDFS (need aggregation), Cloud Blob Storage Submarine Metastore\tCRUD operations for small meta data.\tDatabase Model Artifacts\tSize varies for model (from KBs to GBs). #files are potentially huge.\tHDFS, Cloud Blob Storage Code\tNeed version control. (Please find detailed discussions below for code storage and localization)\tTarball on HDFS/Cloud Blog Storage, or Git Environment (Dependencies, Docker Image) Public/private environment repo (like Conda channel), Docker registry. "},{"title":"Detailed discussions","type":1,"pageTitle":"Storage Implementation","url":"docs/designDocs/storage-implementation#detailed-discussions","content":"Store code for experiment/notebook/model-serving# There're following ways to get experiment code: 1) Code is part of Git repo: (Recommended) This is our recommended approach, once code is part of Git, it will be stored in version control, any change will be tracked, and much easier for users to trace back what change triggered a new bug, etc. 2) Code is part of Docker image: This is an anti-pattern and we will NOT recommend you to use it, Docker image can be used to include ANYTHING, like dependencies, the code you will execute, or even data. But this doesn't mean you should do it. We recommend to use Docker image ONLY for libraries/dependencies. Making code to be part of Docker image makes hard to edit code (if you want to update a value in your Python file, you will have to recreate the Docker image, push it and rerun it). 3) Code is part of S3/HDFS/ABFS: User may want to store their training code to a tarball on a shared storage. Submarine need to download code from remote storage to the launched container before running the code. Localization of experiment/notebook/model-serving code# To make user experiences keeps same across different environment, we will localize code to a same folder after the container is launched, preferably /code For example, there's a git repo need to be synced up for an experiment/notebook/model-serving (example above): experiment: #Or notebook, model-serving name: \"abc\", environment: \"team-default-ml-env\" ... (other fields) code: sync_mode: git url: \"https://foo.com/training-job.git\" Copy After localize, training-job/ will be placed under /code When we running on K8s environment, we can use K8s's initContainer and emptyDir to do these things for us. K8s POD spec (generated by Submarine server instead of user, user should NEVER edit K8s spec, that's too unfriendly to data-scientists): apiVersion: v1 kind: Pod metadata: name: experiment-abc spec: containers: - name: experiment-task image: training-job volumeMounts: - name: code-dir mountPath: /code initContainers: - name: git-localize image: git-sync command: \"git clone .. /code/\" volumeMounts: - name: code-dir mountPath: /code volumes: - name: code-dir emptyDir: {} Copy The above K8s spec create a code-dir and mount it to /code to launched containers. The initContainer git-localize uses https://github.com/kubernetes/git-sync to do the sync up. (If other storages are used such as s3, we can use similar initContainer approach to download contents) "},{"title":"System-related metrics/logs and their storages","type":1,"pageTitle":"Storage Implementation","url":"docs/designDocs/storage-implementation#system-related-metricslogs-and-their-storages","content":"Other than ML-related objects, we have system-related objects, including: Daemon logs (like logs of Submarine server). Logs for other dependency components (like Kubernetes logs when running on K8s). System metrics (Physical resource usages by daemons, launched training containers, etc.).  All these information should be handled by 3rd party system, such as Grafana, Prometheus, etc. And system admins are responsible to setup these infrastructures, dashboard. Users of submarine should NOT interact with system related metrics/logs. It is system admin's responsibility. "},{"title":"Attachable Volumes","type":1,"pageTitle":"Storage Implementation","url":"docs/designDocs/storage-implementation#attachable-volumes","content":"It is possible user has needs to have an attachable volume for their experiment / notebook, this is especially useful for notebook storage, since contents of notebook can be automatically saved, and it can be used as user's home folder. Downside of attachable volume is, it is not versioned, even notebook is mainly used for adhoc exploring tasks, an unversioned notebook file can lead to maintenance issues in the future. Since this is a common requirement, we can consider to support attachable volumes in Submarine in a long run, but with relatively lower priority. "},{"title":"In-scope / Out-of-scope","type":1,"pageTitle":"Storage Implementation","url":"docs/designDocs/storage-implementation#in-scope--out-of-scope","content":"Describe what Submarine project should own and what Submarine project should NOT own. "},{"title":"Submarine Server Implementation","type":0,"sectionRef":"#","url":"docs/designDocs/submarine-server/architecture","content":"","keywords":""},{"title":"Architecture Overview","type":1,"pageTitle":"Submarine Server Implementation","url":"docs/designDocs/submarine-server/architecture#architecture-overview","content":" +---------------Submarine Server ---+ | | | +------------+ +------------+ | | |Web Svc/Prxy| |Backend Svc | | +--Submarine Asset + | +------------+ +------------+ | |Project/Notebook | | ^ ^ | |Model/Metrics | +---|---------|---------------------+ |Libraries/Dataset | | | +------------------+ | | | +--|-Compute Cluster 1---+ +--Image Registry--+ + | | | | User's Images | User / | + | | | Admin | User Notebook Instance | +------------------+ | Experiment Runs | +------------------------+ +-Data Storage-----+ | S3/HDFS, etc. | +----Compute Cluster 2---+ | | +------------------+ ... Copy Here's a diagram to illustrate the Submarine's deployment. Submarine Server consists of web service/proxy, and backend services. They're like \"control planes\" of Submarine, and users will interact with these services.Submarine server could be a microservice architecture and can be deployed to one of the compute clusters. (see below, this will be useful when we only have one cluster). There're multiple compute clusters that could be used by Submarine service. For user's running notebook instance, jobs, etc. they will be placed to one of the compute clusters by user's preference or defined policies.Submarine's asset includes project/notebook(content)/models/metrics/dataset-meta, etc. can be stored inside Submarine's own database.Datasets can be stored in various locations such as S3/HDFS. Users can push container (such as Docker) images to a preconfigured registry in Submarine, so Submarine service can know how to pull required container images.Image Registry/Data-Storage, etc. are outside of Submarine server's scope and should be managed by 3rd party applications. "},{"title":"Submarine Server and its APIs","type":1,"pageTitle":"Submarine Server Implementation","url":"docs/designDocs/submarine-server/architecture#submarine-server-and-its-apis","content":"Submarine server is designed to allow data scientists to access notebooks, submit/manage jobs, manage models, create model training workflows, access datasets, etc. Submarine Server exposed UI and REST API. Users can also use CLI / SDK to manage assets inside Submarine Server.  +----------+ | CLI |+---+ +----------+ v +----------------+ +--------------+ | Submarine | +----------+ | REST API | | | | SDK |+>| |+> Server | +----------+ +--------------+ | | ^ +----------------+ +----------+ | | UI |+---+ +----------+ Copy REST API will be used by the other 3 approaches. (CLI/SDK/UI) The REST API Service handles HTTP requests and is responsible for authentication. It acts as the caller for the JobManager component. The REST component defines the generic job spec which describes the detailed info about job. For more details, refer to here. (Please note that we're converting REST endpoint description from Java-based REST API to swagger definition, once that is done, we should replace the link with swagger definition spec). "},{"title":"Proposal","type":1,"pageTitle":"Submarine Server Implementation","url":"docs/designDocs/submarine-server/architecture#proposal","content":" +---------------------+ +-----------+ | +--------+ +----+ | | | | |runtime1+-->+job1| | | workbench +---+ +----------------------------------+ | +--------+ +----+ | | | | | +------+ +---------------------+ | +-->+ +--------+ +----+ | +-----------+ | | | | | +------+ +-------+ | | | | |runtime2+-->+job2| | | | | | | | YARN | | K8s | | | | | +--------+ +----+ | +-----------+ | | | | | +------+ +-------+ | | | | YARN Cluster | | | | | | | | submitter | | | +---------------------+ | CLI +------>+ | REST | +---------------------+ +---+ | | | | | | +---------------------+ | | +---------------------+ +-----------+ | | | | | +-------+ +-------+ | | | | +--------+ +----+ | | | | | | |PlugMgr| |monitor| | | | | | +-->+job1| | +-----------+ | | | | | +-------+ +-------+ | | | | | | +----+ | | | | | | | | JobManager | | +-->+ |operator| +----+ | | SDK +---+ | +------+ +---------------------+ | | | +-->+job2| | | | +----------------------------------+ | +--------+ +----+ | +-----------+ | K8s Cluster | client server +---------------------+ Copy We propose to split the original core module in the old layout into two modules, CLI and server as shown in FIG. The submarine-client calls the REST APIs to submit and retrieve the job info. The submarine-server provides the REST service, job management, submitting the job to cluster, and running job in different clusters through the corresponding runtime. "},{"title":"Submarine Server Components","type":1,"pageTitle":"Submarine Server Implementation","url":"docs/designDocs/submarine-server/architecture#submarine-server-components","content":" +----------------------Submarine Server--------------------------------+ | +-----------------+ +------------------+ +--------------------+ | | | Experiment | |Notebook Session | |Environment Mgr | | | | Mgr | |Mgr | | | | | +-----------------+ +------------------+ +--------------------+ | | | | +-----------------+ +------------------+ +--------------------+ | | | Model Registry | |Model Serving Mgr | |Compute Cluster Mgr | | | | | | | | | | | +-----------------+ +------------------+ +--------------------+ | | | | +-----------------+ +------------------+ +--------------------+ | | | DataSet Mgr | |User/Team | |Metadata Mgr | | | | | |Permission Mgr | | | | | +-----------------+ +------------------+ +--------------------+ | +----------------------------------------------------------------------+ Copy "},{"title":"Experiment Manager","type":1,"pageTitle":"Submarine Server Implementation","url":"docs/designDocs/submarine-server/architecture#experiment-manager","content":"TODO "},{"title":"Notebook Sessions Manager","type":1,"pageTitle":"Submarine Server Implementation","url":"docs/designDocs/submarine-server/architecture#notebook-sessions-manager","content":"TODO "},{"title":"Environment Manager","type":1,"pageTitle":"Submarine Server Implementation","url":"docs/designDocs/submarine-server/architecture#environment-manager","content":"TODO "},{"title":"Model Registry","type":1,"pageTitle":"Submarine Server Implementation","url":"docs/designDocs/submarine-server/architecture#model-registry","content":"TODO "},{"title":"Model Serving Manager","type":1,"pageTitle":"Submarine Server Implementation","url":"docs/designDocs/submarine-server/architecture#model-serving-manager","content":"TODO "},{"title":"Compute Cluster Manager","type":1,"pageTitle":"Submarine Server Implementation","url":"docs/designDocs/submarine-server/architecture#compute-cluster-manager","content":"TODO "},{"title":"Dataset Manager","type":1,"pageTitle":"Submarine Server Implementation","url":"docs/designDocs/submarine-server/architecture#dataset-manager","content":"TODO "},{"title":"User/team permissions manager","type":1,"pageTitle":"Submarine Server Implementation","url":"docs/designDocs/submarine-server/architecture#userteam-permissions-manager","content":"TODO "},{"title":"Metadata Manager","type":1,"pageTitle":"Submarine Server Implementation","url":"docs/designDocs/submarine-server/architecture#metadata-manager","content":"TODO "},{"title":"Components/services outside of Submarine Server's scope","type":1,"pageTitle":"Submarine Server Implementation","url":"docs/designDocs/submarine-server/architecture#componentsservices-outside-of-submarine-servers-scope","content":"TODO: Describe what are the out-of-scope components, which should be handled and managed outside of Submarine server. Candidates are: Identity management, data storage, metastore storage, etc. "},{"title":"Security Implementation","type":0,"sectionRef":"#","url":"docs/designDocs/wip-designs/security-implementation","content":"","keywords":""},{"title":"Handle User's Credential","type":1,"pageTitle":"Security Implementation","url":"docs/designDocs/wip-designs/security-implementation#handle-users-credential","content":"Users credential includes Kerberoes Keytabs, Docker registry credentials, Github ssh-keys, etc. User's credential must be stored securitely, for example, via KeyCloak or K8s Secrets. (More details TODO) "},{"title":"Generic Expeiment Spec","type":0,"sectionRef":"#","url":"docs/designDocs/submarine-server/experimentSpec","content":"","keywords":""},{"title":"Motivation","type":1,"pageTitle":"Generic Expeiment Spec","url":"docs/designDocs/submarine-server/experimentSpec#motivation","content":"As the machine learning platform, the submarine should support multiple machine learning frameworks, such as Tensorflow, Pytorch etc. But different framework has different distributed components for the training experiment. So that we designed a generic experiment spec to abstract the training experiment across different frameworks. In this way, the submarine-server can hide the complexity of underlying infrastructure differences and provide a cleaner interface to manager experiments "},{"title":"Proposal","type":1,"pageTitle":"Generic Expeiment Spec","url":"docs/designDocs/submarine-server/experimentSpec#proposal","content":"Considering the Tensorflow and Pytorch framework, we propose one spec which consists of library spec, submitter spec and task specs etc. Such as: name: \"mnist\" librarySpec: name: \"TensorFlow\" version: \"2.1.0\" image: \"apache/submarine:tf-mnist-with-summaries-1.0\" cmd: \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\" envVars: ENV_1: \"ENV1\" submitterSpec: type: \"k8s\" namespace: \"submarine\" taskSpecs: Ps: name: tensorflow replicas: 2 resources: \"cpu=4,memory=2048M,nvidia.com/gpu=1\" Worker: name: tensorflow replicas: 2 resources: \"cpu=4,memory=2048M,nvidia.com/gpu=1\" Copy "},{"title":"Library Spec","type":1,"pageTitle":"Generic Expeiment Spec","url":"docs/designDocs/submarine-server/experimentSpec#library-spec","content":"The library spec describes the info about machine learning framework. All the fields as below: field\ttype\toptional\tdescriptionname\tstring\tNO\tMachine Learning Framework name. Only \"tensorflow\" and \"pytorch\" is supported. It doesn't matter if the value is uppercase or lowercase. version\tstring\tNO\tThe version of ML framework. Such as: 2.1.0 image\tstring\tNO\tThe public image used for each task if not specified. Such as: apache/submarine cmd\tstring\tYES\tThe public entry cmd for the task if not specified. envVars\tkey/value\tYES\tThe public env vars for the task if not specified. "},{"title":"Submitter Spec","type":1,"pageTitle":"Generic Expeiment Spec","url":"docs/designDocs/submarine-server/experimentSpec#submitter-spec","content":"It describes the info of submitter which the user specified, such as yarn, yarnservice or k8s. All the fields as below: field\ttype\toptional\tdescriptiontype\tstring\tNO\tThe submitter type, supports k8s now configPath\tstring\tYES\tThe config path of the specified resource manager. You can set it in submarine-site.xml if run submarine-server locally namespace\tstring\tNO\tIt's known as queue in Apache Hadoop YARN and namespace in Kubernetes. kind\tstring\tYES\tIt's used for k8s submitter, supports TFJob and PyTorchJob apiVersion\tstring\tYES\tIt should pair with the kind, such as the TFJob's api version is kubeflow.org/v1 "},{"title":"Task Spec","type":1,"pageTitle":"Generic Expeiment Spec","url":"docs/designDocs/submarine-server/experimentSpec#task-spec","content":"It describes the task info, the tasks make up the experiment. So it must be specified when submit the experiment. All the tasks should putted into the key value collection. Such as: taskSpecs: Ps: name: tensorflow replicas: 2 resources: \"cpu=4,memory=2048M,nvidia.com/gpu=1\" Worker: name: tensorflow replicas: 2 resources: \"cpu=4,memory=2048M,nvidia.com/gpu=1\" Copy All the fields as below: field\ttype\toptional\tdescriptionname\tstring\tYES\tThe experiment name, if not specify using the library name image\tstring\tYES\tThe experiment docker image cmd\tstring\tYES\tThe entry command for running task envVars\tkey/value\tYES\tThe environment variables for the task resources\tstring\tNO\tThe limit resource for the task. Formatter: cpu=%s,memory=%s,nvidia.com/gpu=%s "},{"title":"Implements","type":1,"pageTitle":"Generic Expeiment Spec","url":"docs/designDocs/submarine-server/experimentSpec#implements","content":"For more info see SUBMARINE-321 "},{"title":"Cluster Server Design - High-Availability","type":0,"sectionRef":"#","url":"docs/designDocs/wip-designs/submarine-clusterServer","content":"","keywords":""},{"title":"Below is existing proposal:","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/designDocs/wip-designs/submarine-clusterServer#below-is-existing-proposal","content":""},{"title":"Introduction","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/designDocs/wip-designs/submarine-clusterServer#introduction","content":"The Submarine system contains a total of two daemon services, Submarine Server and Workbench Server. Submarine Server mainly provides job submission, job scheduling, job status monitoring, and model online service for Submarine. Workbench Server is mainly for algorithm users to provide algorithm development, Python/Spark interpreter operation, and other services through Notebook. The goal of the Submarine project is to provide high availability and high-reliability services for big data processing, algorithm development, job scheduling, model online services, model batch, and incremental updates. In addition to the high availability of big data and machine learning frameworks, the high availability of Submarine Server and Workbench Server itself is a key consideration. "},{"title":"Requirement","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/designDocs/wip-designs/submarine-clusterServer#requirement","content":""},{"title":"Cluster Metadata Center","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/designDocs/wip-designs/submarine-clusterServer#cluster-metadata-center","content":"Multiple Submarine (or Workbench) Server processes create a Submarine Cluster through the RAFT algorithm library. The cluster internally maintains a metadata center. All servers can operate the metadata. The RAFT algorithm ensures that multiple processes are simultaneously co-located. A data modification will not cause problems such as mutual coverage and dirty data. This metadata center stores data by means of key-value pairs. it can store/support a variety of data, but it should be noted that metadata is only suitable for storing small amounts of data and cannot be used to replace data storage. "},{"title":"Service discovery","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/designDocs/wip-designs/submarine-clusterServer#service-discovery","content":"By storing the information of the service or process in the metadata center, we can easily find the information of the service or process we need in any place, for example, the IP address and port where the Python interpreter will be the process. Information is stored in metadata, and other services can easily find process information through process IDs and connect to provide service discovery capabilities. "},{"title":"Cluster event","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/designDocs/wip-designs/submarine-clusterServer#cluster-event","content":"In the entire Submarine cluster, the servers can communicate with each other and other child processes to send cluster events to each other. The service or process processes the corresponding programs according to the cluster events. For example, the Workbench Server can be managed to Python. The interpreter process sends a shutdown event that controls the operation of the services and individual subprocesses throughout the cluster. Cluster events support both broadcast and separate delivery capabilities. "},{"title":"Independence","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/designDocs/wip-designs/submarine-clusterServer#independence","content":"We implement Submarine's clustering capabilities through the RAFT algorithm library, without relying on any external services (e.g. Zookeeper, Etcd, etc.) "},{"title":"Disadvantages","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/designDocs/wip-designs/submarine-clusterServer#disadvantages","content":"Because the RAFT algorithm requires more than half of the servers available to ensure the normality of the RAFT algorithm, if we need to turn on the clustering capabilities of Submarine (Workbench) Server, when more than half of the servers are unavailable, some programs may appear abnormal. Of course, we also detected this in the system, downgrading the system or refusing to provide service status. "},{"title":"System design","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/designDocs/wip-designs/submarine-clusterServer#system-design","content":""},{"title":"Universal design","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/designDocs/wip-designs/submarine-clusterServer#universal-design","content":"Modular design, Submarine (Workbench) Server exists in the Submarine system, these two services need to provide clustering capabilities, so we abstract the cluster function into a separate module for development so that Submarine (Workbench) Server can reuse the cluster function module. "},{"title":"ClusterConfigure","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/designDocs/wip-designs/submarine-clusterServer#clusterconfigure","content":"Add a submarine.server.addr and workbench.server.addr configuration items in submarine-site.xml, submarine.server.addr=ip1, ip2, ip3, through the IP list, the RAFT algorithm module in the server process can Cluster with other server processes. "},{"title":"ClusterServer","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/designDocs/wip-designs/submarine-clusterServer#clusterserver","content":"The ClusterServer module encapsulates the RAFT algorithm module, which can create a service cluster and read and write metadata based on the two configuration items submarine.server.addr or workbench.server.addr. The cluster management service runs in each submarine server; The cluster management service establishes a cluster by using the atomix RaftServer class of the Raft algorithm library, maintains the ClusterStateMachine, and manages the service state metadata of each submarine server through the PutCommand, GetQuery, and DeleteCommand operation commands. "},{"title":"ClusterClient","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/designDocs/wip-designs/submarine-clusterServer#clusterclient","content":"The ClusterClient module encapsulates the RAFT algorithm client module, which can communicate with the cluster according to the two configuration items submarine.server.addr or workbench.server.addr, read and write metadata, and write the IP and port information of the client process. Into the cluster's metadata center. The cluster management client runs in each submarine server and submarine Interpreter process; The cluster management client manages the submarine server and submarine Interpreter process state (metadata information) in the ClusterStateMachine by using the atomix RaftClient class of the Raft library to connect to the atomix RaftServer. When the submarine server and Submarine Interpreter processes are started, they are added to the ClusterStateMachine and are removed from the ClusterStateMachine when the Submarine Server and Submarine Interpreter processes are closed. "},{"title":"ClusterMetadata","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/designDocs/wip-designs/submarine-clusterServer#clustermetadata","content":"Metadata stores metadata information in a KV key-value pair。 ServerMeta:key='host:port',value= {SERVER_HOST=...,SERVER_PORT=...,...} Name\tDescriptionSUBMARINE_SERVER_HOST\tSubmarine server IP SUBMARINE_SERVER_PORT\tSubmarine server port WORKBENCH_SERVER_HOST\tSubmarine workbench server IP WORKBENCH_SERVER_PORT\tSubmarine workbench server port InterpreterMeta:key=InterpreterGroupId,value={INTP_TSERVER_HOST=...,...} Name\tDescriptionINTP_TSERVER_HOST\tSubmarine Interpreter Thrift IP INTP_TSERVER_PORT\tSubmarine Interpreter Thrift port INTP_START_TIME\tSubmarine Interpreter start time HEARTBEAT\tSubmarine Interpreter heartbeat time "},{"title":"Network fault tolerance","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/designDocs/wip-designs/submarine-clusterServer#network-fault-tolerance","content":"In a distributed environment, there may be network anomalies, network delays, or service exceptions. After submitting metadata to the cluster, check whether the submission is successful. After the submission fails, save the metadata in the local message queue. A separate commit thread to retry; "},{"title":"Cluster monitoring","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/designDocs/wip-designs/submarine-clusterServer#cluster-monitoring","content":"The cluster needs to monitor whether the Submarine Server and Submarine-Interpreter processes are working properly. The Submarine Server and Submarine Interpreter processes periodically send heartbeats to update their own timestamps in the cluster metadata. The Submarine Server with Leader identity periodically checks the timestamps of the Submarine Server and Submarine Interpreter processes to clear the timeout services and processes. The cluster monitoring module runs in each Submarine Server and Submarine Interpreter process, periodically sending heartbeat data of the service or process to the cluster; When the cluster monitoring module runs in Submarine Server, it sends the heartbeat to the cluster's ClusterStateMachine. If the cluster does not receive heartbeat information for a long time, Indicates that the service or process is abnormal and unavailable. Resource usage statistics strategy, in order to avoid the instantaneous high peak and low peak of the server, the cluster monitoring will collect the average resource usage in the most recent period for reporting, and improve the reasonable line and effectiveness of the server resources as much as possible; When the cluster monitoring module runs in the Submarine Server, it checks the heartbeat data of each Submarine Server and Submarine Interpreter process. If it times out, it considers that the service or process is abnormally unavailable and removes it from the cluster. "},{"title":"Atomix Raft algorithm library","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/designDocs/wip-designs/submarine-clusterServer#atomix-raft-algorithm-library","content":"In order to reduce the deployment complexity of distributed mode, submarine server does not use Zookeeper to build a distributed cluster. Multiple submarine server groups are built into distributed clusters by using the Raft algorithm in submarine server. The Raft algorithm is involved by atomix lib of atomix that has passed Jepsen consistency verification. "},{"title":"Synchronize workbench notes","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/designDocs/wip-designs/submarine-clusterServer#synchronize-workbench-notes","content":"In cluster mode, the user creates, modifies, and deletes the note on any of the servers. All need to be notified to all the servers in the cluster to synchronize the update of Notebook. Failure to do so will result in the user not being able to continue while switching to another server. "},{"title":"Listen for note update events","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/designDocs/wip-designs/submarine-clusterServer#listen-for-note-update-events","content":"Listen for the NEW_NOTE, DEL_NOTE, REMOVE_NOTE_TO_TRASH ... event of the notebook in the NotebookServer#onMessage() function. "},{"title":"Broadcast note update event","type":1,"pageTitle":"Cluster Server Design - High-Availability","url":"docs/designDocs/wip-designs/submarine-clusterServer#broadcast-note-update-event","content":"The note is refreshed by notifying the event to all Submarine servers in the cluster via messaging Service. "},{"title":"Submarine Launcher","type":0,"sectionRef":"#","url":"docs/designDocs/wip-designs/submarine-launcher","content":"","keywords":""},{"title":"Introduction","type":1,"pageTitle":"Submarine Launcher","url":"docs/designDocs/wip-designs/submarine-launcher#introduction","content":"Submarine is built and run in Cloud Native, taking advantage of the cloud computing model. To give full play to the advantages of cloud computing. These applications are characterized by rapid and frequent build, release, and deployment. Combined with the features of cloud computing, they are decoupled from the underlying hardware and operating system, and can easily meet the requirements of scalability, availability, and portability. And provide better economy. In the enterprise data center, submarine can support k8s/yarn/docker three resource scheduling systems; in the public cloud environment, submarine can support these cloud services in GCE/AWS/Azure; "},{"title":"Requirement","type":1,"pageTitle":"Submarine Launcher","url":"docs/designDocs/wip-designs/submarine-launcher#requirement","content":""},{"title":"Cloud-Native Service","type":1,"pageTitle":"Submarine Launcher","url":"docs/designDocs/wip-designs/submarine-launcher#cloud-native-service","content":"The submarine server is a long-running services in the daemon mode. The submarine server is mainly used by algorithm engineers to provide online front-end functions such as algorithm development, algorithm debugging, data processing, and workflow scheduling. And submarine server also mainly used for back-end functions such as scheduling and execution of jobs, tracking of job status, and so on. Through the ability of rolling upgrades, we can better provide system stability. For example, we can upgrade or restart the workbench server without affecting the normal operation of submitted jobs. You can also make full use of system resources. For example, when the number of current developers or job tasks increases, The number of submarine server instances can be adjusted dynamically. In addition, submarine will provide each user with a completely independent workspace container. This workspace container has already deployed the development tools and library files commonly used by algorithm engineers including their operating environment. Algorithm engineers can work in our prepared workspaces without any extra work. Each user's workspace can also be run through a cloud service. "},{"title":"Service discovery","type":1,"pageTitle":"Submarine Launcher","url":"docs/designDocs/wip-designs/submarine-launcher#service-discovery","content":"With the cluster function of submarine, each service only needs to run in the container, and it will automatically register the service in the submarine cluster center. Submarine cluster management will automatically maintain the relationship between service and service, service and user. "},{"title":"Design","type":1,"pageTitle":"Submarine Launcher","url":"docs/designDocs/wip-designs/submarine-launcher#design","content":" "},{"title":"Launcher","type":1,"pageTitle":"Submarine Launcher","url":"docs/designDocs/wip-designs/submarine-launcher#launcher","content":"The submarine launcher module defines the complete interface. By using this interface, you can run the submarine server, and workspace in k8s / yarn / docker / AWS / GCE / Azure. "},{"title":"Launcher On Docker","type":1,"pageTitle":"Submarine Launcher","url":"docs/designDocs/wip-designs/submarine-launcher#launcher-on-docker","content":"In order to allow some small and medium-sized users without k8s/yarn to use submarine, we support running the submarine system in docker mode. Users only need to provide several servers with docker runtime environment. The submarine system can automatically cluster these servers into clusters, manage all the hardware resources of the cluster, and run the service or workspace container in this cluster through scheduling algorithms. "},{"title":"Launcher On Kubernetes","type":1,"pageTitle":"Submarine Launcher","url":"docs/designDocs/wip-designs/submarine-launcher#launcher-on-kubernetes","content":"submarine operator "},{"title":"Launcher On Yarn","type":1,"pageTitle":"Submarine Launcher","url":"docs/designDocs/wip-designs/submarine-launcher#launcher-on-yarn","content":"[TODO] "},{"title":"Launcher On AWS","type":1,"pageTitle":"Submarine Launcher","url":"docs/designDocs/wip-designs/submarine-launcher#launcher-on-aws","content":"[TODO] "},{"title":"Launcher On GCP","type":1,"pageTitle":"Submarine Launcher","url":"docs/designDocs/wip-designs/submarine-launcher#launcher-on-gcp","content":"[TODO] "},{"title":"Launcher On Azure","type":1,"pageTitle":"Submarine Launcher","url":"docs/designDocs/wip-designs/submarine-launcher#launcher-on-azure","content":"[TODO] "},{"title":"Dependencies for Submarine","type":0,"sectionRef":"#","url":"docs/devDocs/Dependencies","content":"","keywords":""},{"title":"Kubernetes","type":1,"pageTitle":"Dependencies for Submarine","url":"docs/devDocs/Dependencies#kubernetes","content":"Kubernetes Version\tSupport?1.13.x (or earlier)\tX 1.14.x\t√ 1.15.x\t√ 1.16.x\t√ 1.17.x\tTo be verified 1.18.x\tTo be verified "},{"title":"KinD","type":1,"pageTitle":"Dependencies for Submarine","url":"docs/devDocs/Dependencies#kind","content":"KinD Version\tSupport?0.5.x (or earlier)\tX 0.6.x\t√ 0.7.x\t√ 0.8.x\t√ 0.9.x\t√ 0.10.x\t√ 0.11.x\t√ "},{"title":"Java","type":1,"pageTitle":"Dependencies for Submarine","url":"docs/devDocs/Dependencies#java","content":"TODO "},{"title":"Maven","type":1,"pageTitle":"Dependencies for Submarine","url":"docs/devDocs/Dependencies#maven","content":"TODO "},{"title":"Docker","type":1,"pageTitle":"Dependencies for Submarine","url":"docs/devDocs/Dependencies#docker","content":"TODO "},{"title":"How to Build Submarine","type":0,"sectionRef":"#","url":"docs/devDocs/BuildFromCode","content":"","keywords":""},{"title":"Prerequisites","type":1,"pageTitle":"How to Build Submarine","url":"docs/devDocs/BuildFromCode#prerequisites","content":"JDK 1.8Maven 3.3 or later ( < 3.8.1 )Docker "},{"title":"Quick Start","type":1,"pageTitle":"How to Build Submarine","url":"docs/devDocs/BuildFromCode#quick-start","content":""},{"title":"Build Your Custom Submarine Docker Images","type":1,"pageTitle":"How to Build Submarine","url":"docs/devDocs/BuildFromCode#build-your-custom-submarine-docker-images","content":"Submarine provides default Docker image in the release artifacts, sometimes you would like to do some modifications on the images. You can rebuild Docker image after you make changes. Note that you need to make sure the images built above can be accessed in k8s Usually this needs to rename and push to a proper Docker registry. mvn clean package -DskipTests Copy Build submarine server image: ./dev-support/docker-images/submarine/build.sh Copy Build submarine database image: ./dev-support/docker-images/database/build.sh Copy "},{"title":"Building source code / binary distribution","type":1,"pageTitle":"How to Build Submarine","url":"docs/devDocs/BuildFromCode#building-source-code--binary-distribution","content":"Checking releases for licenses mvn clean org.apache.rat:apache-rat-plugin:check Copy Create binary distribution with default hadoop version mvn clean package -DskipTests Copy Create binary distribution with hadoop-2.9.x version mvn clean package -DskipTests -Phadoop-2.9 Copy Create binary distribution with hadoop-2.10.x version mvn clean package -DskipTests -Phadoop-2.10 Copy Create binary distribution with hadoop-3.1.x version mvn clean package -DskipTests -Phadoop-3.1 Copy Create binary distribution with hadoop-3.2.x version mvn clean package -DskipTests -Phadoop-3.2 Copy Create source code distribution mvn clean package -DskipTests -Psrc Copy "},{"title":"Building source code / binary distribution with Maven Wrapper","type":1,"pageTitle":"How to Build Submarine","url":"docs/devDocs/BuildFromCode#building-source-code--binary-distribution-with-maven-wrapper","content":"Maven Wrapper (Optional): Maven Wrapper can help you avoid dependencies problem about Maven version. # Setup Maven Wrapper (Maven 3.6.1) mvn -N io.takari:maven:0.7.7:wrapper -Dmaven=3.6.1 # Check Maven Wrapper ./mvnw -version # Replace 'mvn' with 'mvnw'. Example: ./mvnw clean package -DskipTests Copy "},{"title":"Development Guide","type":0,"sectionRef":"#","url":"docs/devDocs/Development","content":"","keywords":""},{"title":"Video","type":1,"pageTitle":"Development Guide","url":"docs/devDocs/Development#video","content":"From this Video, you will know how to deal with the configuration of Submarine and be able to contribute to it via Github. "},{"title":"Develop server","type":1,"pageTitle":"Development Guide","url":"docs/devDocs/Development#develop-server","content":""},{"title":"Prerequisites","type":1,"pageTitle":"Development Guide","url":"docs/devDocs/Development#prerequisites","content":"JDK 1.8Maven 3.3 or later ( < 3.8.1 )Docker "},{"title":"Setting up checkstyle in IDE","type":1,"pageTitle":"Development Guide","url":"docs/devDocs/Development#setting-up-checkstyle-in-ide","content":"Checkstyle plugin may help to detect violations directly from the IDE. Install Checkstyle+IDEA plugin from Preference -> PluginsOpen Preference -> Tools -> Checkstyle -> Set Checkstyle version: Checkstyle version: 8.0 Add (+) a new Configuration File Description: SubmarineUse a local checkstyle ${SUBMARINE_HOME}/dev-support/maven-config/checkstyle.xml Open the Checkstyle Tool Window, select the Submarine rule and execute the check "},{"title":"Testing","type":1,"pageTitle":"Development Guide","url":"docs/devDocs/Development#testing","content":"Unit Test For each class, there is a corresponding testClass. For example, SubmarineServerTest is used for testing SubmarineServer. Whenever you add a funtion in classes, you must write a unit test to test it. Integration Test: IntegrationTestK8s.md "},{"title":"Build from source","type":1,"pageTitle":"Development Guide","url":"docs/devDocs/Development#build-from-source","content":"Before building We assume the developer use minikube as a local kubernetes cluster.Make sure you have installed the submarine helm-chart in the cluster. Package the Submarine server into a new jar file mvn package -DskipTests Copy Build the new server docker image in minikube # switch to minikube docker daemon to build image directly in minikube eval $(minikube docker-env) # run docker build ./dev-support/docker-images/submarine/build.sh # exit minikube docker daemon eval $(minikube docker-env -u) Copy Update server pod helm upgrade --set submarine.server.dev=true submarine ./helm-charts/submarine Copy Set submarine.server.dev to true, enabling the server pod to be launched with the new docker image. "},{"title":"Develop workbench","type":1,"pageTitle":"Development Guide","url":"docs/devDocs/Development#develop-workbench","content":"Deploy the Submarine Follow Getting Started/Quickstart, and make sure you can connect to http://localhost:32080 in the browser. Install the dependencies cd submarine-workbench/workbench-web npm install Copy Run the workbench based on proxy server npm run start Copy The request sent to http://localhost:4200 will be redirected to http://localhost:32080.Open http://localhost:4200 in browser to see the real-time change of workbench. Frontend E2E test: IntegrationTestE2E.md "},{"title":"Develop database","type":1,"pageTitle":"Development Guide","url":"docs/devDocs/Development#develop-database","content":"Build the docker image # switch to minikube docker daemon to build image directly in minikube eval $(minikube docker-env) # run docker build ./dev-support/docker-images/database/build.sh # exit minikube docker daemon eval $(minikube docker-env -u) Copy Deploy new pods in the cluster helm upgrade --set submarine.database.dev=true submarine ./helm-charts/submarine Copy Develop operator# Before building We assume the developer use minikube as a local kubernetes cluster.Make sure you have NOT installed the submarine helm-chart in the cluster. Start the minikube cluster minikube start --vm-driver=docker --kubernetes-version v1.15.11 Copy Install the dependencies cd submarine-cloud-v2/ cp -r ../helm-charts/submarine/charts ./helm-charts/submarine-operator/ go mod vendor helm install --set dev=true submarine-operator ./helm-charts/submarine-operator/ Copy Run the operator out-of-cluster make ./submarine-operator Copy Deploy a Submarine kubectl apply -f artifacts/examples/crd.yaml kubectl create ns submarine-user-test kubectl apply -n submarine-user-test -f artifacts/examples/example-submarine.yaml Copy Exposing service # Method1 -- use minikube ip minikube ip # you'll get the IP address of minikube, ex: 192.168.49.2 # Method2 -- use port-forwarding kubectl port-forward --address 0.0.0.0 -n submarine-user-test service/traefik 32080:80 Copy View workbench If you use method 1 in step 5, please go to http://{minikube ip}:32080, ex: http://192.168.49.2:32080 If you use method 2 in step 5, please go to http://127.0.0.1:32080 Delete submarine kubectl delete submarine example-submarine -n submarine-user-test Copy Stop the operator Press ctrl+c to stop the operator. Uninstall helm chart dependencies helm delete submarine-operator Copy For other details, please check out the README and Developer Guide on GitHub. "},{"title":"Develop Submarine Website","type":1,"pageTitle":"Development Guide","url":"docs/devDocs/Development#develop-submarine-website","content":"Submarine website is built using Docusaurus 2, a modern static website generator. We store all the website content in markdown format in the submarine/website/docs. When committing a new patch to the submarine repo, Docusaurus will help us generate the html and javascript files and push them to https://github.com/apache/submarine-site/tree/asf-site. To update the website, click “Edit this page” on the website.  "},{"title":"Add a new page","type":1,"pageTitle":"Development Guide","url":"docs/devDocs/Development#add-a-new-page","content":"If you want to add a new page to the website, make sure to add the file path to sidebars.js. "},{"title":"Installation","type":1,"pageTitle":"Development Guide","url":"docs/devDocs/Development#installation","content":"We use the yarn package manager to install all dependencies for the website yarn install Copy "},{"title":"Build","type":1,"pageTitle":"Development Guide","url":"docs/devDocs/Development#build","content":"Make sure you can successfully build the website before creating a pull request. yarn build Copy "},{"title":"Local Development","type":1,"pageTitle":"Development Guide","url":"docs/devDocs/Development#local-development","content":"This command starts a local development server and open up a browser window. Most changes are reflected live without having to restart the server. yarn start Copy "},{"title":"How to Run Frontend Integration Test","type":0,"sectionRef":"#","url":"docs/devDocs/IntegrationTestE2E","content":"","keywords":""},{"title":"Introduction","type":1,"pageTitle":"How to Run Frontend Integration Test","url":"docs/devDocs/IntegrationTestE2E#introduction","content":"The test cases under the directory test-e2e are integration tests to ensure the correctness of the Submarine Workbench. These test cases can be run either locally or on GitHub Actions. "},{"title":"Run E2E test locally","type":1,"pageTitle":"How to Run Frontend Integration Test","url":"docs/devDocs/IntegrationTestE2E#run-e2e-test-locally","content":"Ensure you have setup the submarine locally. If not, you can refer to Submarine Local Deployment. Forward port kubectl port-forward --address 0.0.0.0 service/submarine-traefik 32080:80 Copy Modify run_frontend_e2e.sh You need to modify the port and the URL in this script to where you run the workbench on. Example: If your Submarine workbench is running on 127.0.0.1:4200, you should modify the WORKBENCH_PORT to 4200. # at submarine-test/test_e2e/run_frontend_e2e.sh ... # ======= Modifiable Variables ======= # # Note: URL must start with \"http\" # (Ref: https://www.selenium.dev/selenium/docs/api/java/org/openqa/selenium/WebDriver.html#get(java.lang.String)) WORKBENCH_PORT=8080 #<= modify this URL=\"http://127.0.0.1\" #<=modify this # ==================================== # ... Copy Run run_frontend_e2e.sh (Run a specific test case) This script will check whether the port can be accessed or not, and run the test case. # at submarine-test/test_e2e ./run_fronted_e2e.sh ${TESTCASE} # TESTCASE is the IT you want to run, ex: loginIT, experimentIT... Copy Run all test cases Following commands will compile all files and run all files ending with \"IT\" in the directory. # Make sure the Submarine workbench is running on 127.0.0.1:8080 cd submarine/submarine-test/test-e2e # Method 1: mvn verify # Method 2: mvn clean install -U Copy "},{"title":"Run E2E test in GitHub Actions","type":1,"pageTitle":"How to Run Frontend Integration Test","url":"docs/devDocs/IntegrationTestE2E#run-e2e-test-in-github-actions","content":"Each time a commit is pushed, GitHub Actions will be triggered automatically. "},{"title":"Add a new frontend E2E test case","type":1,"pageTitle":"How to Run Frontend Integration Test","url":"docs/devDocs/IntegrationTestE2E#add-a-new-frontend-e2e-test-case","content":"WARNING You MUST read the document carefully, and understand the difference between explicit wait, implicit wait, and fluent wait.Do not mix implicit and explicit waits. Doing so can cause unpredictable wait times. We define many useful functions in AbstractSubmarineIT.java. "},{"title":"How to Run Integration K8s Test","type":0,"sectionRef":"#","url":"docs/devDocs/IntegrationTestK8s","content":"","keywords":""},{"title":"Introduction","type":1,"pageTitle":"How to Run Integration K8s Test","url":"docs/devDocs/IntegrationTestK8s#introduction","content":"The test cases under the directory test-k8s are integration tests to ensure the correctness of the Submarine RESTful API. You can run these tests either locally or on GitHub Actions. Before running the tests, the minikube (KinD) cluster must be created. Then, compile and package the submarine project in submarine-dist directory for building a docker image. In addition, the 8080 port in submarine-traefik should be forwarded. "},{"title":"Run k8s test locally","type":1,"pageTitle":"How to Run Integration K8s Test","url":"docs/devDocs/IntegrationTestK8s#run-k8s-test-locally","content":"Ensure you have setup the KinD cluster or minikube cluster. If you haven't, follow this minikube tutorial Build the submarine from source and upgrade the server pod through this guide Forward port kubectl port-forward --address 0.0.0.0 service/submarine-traefik 8080:80 Copy Install the latest package \"submarine-server-core\" into the local repository, for use as a dependency in the module test-k8s mvn install -DskipTests Copy Execute the test command mvn verify -DskipRat -pl :submarine-test-k8s -Phadoop-2.9 -B Copy  "},{"title":"Run k8s test in GitHub Actions","type":1,"pageTitle":"How to Run Integration K8s Test","url":"docs/devDocs/IntegrationTestK8s#run-k8s-test-in-github-actions","content":"Each time a code is submitted, GitHub Actions is triggered automatically. "},{"title":"Project Architecture","type":0,"sectionRef":"#","url":"docs/devDocs/README","content":"","keywords":""},{"title":"1. Introduction","type":1,"pageTitle":"Project Architecture","url":"docs/devDocs/README#1-introduction","content":"This document mainly describes the structure of each module of the Submarine project, the development and test description of each module. "},{"title":"2. Submarine Project Structure","type":1,"pageTitle":"Project Architecture","url":"docs/devDocs/README#2-submarine-project-structure","content":""},{"title":"2.1. submarine-client","type":1,"pageTitle":"Project Architecture","url":"docs/devDocs/README#21-submarine-client","content":"Provide the CLI interface for submarine user. (Currently only support YARN service) "},{"title":"2.2. submarine-cloud-v2","type":1,"pageTitle":"Project Architecture","url":"docs/devDocs/README#22-submarine-cloud-v2","content":"The operator for Submarine application. For details, please see the README on github. "},{"title":"2.3. submarine-commons","type":1,"pageTitle":"Project Architecture","url":"docs/devDocs/README#23-submarine-commons","content":"Define utility function used in multiple packages, mainly related to hadoop. "},{"title":"2.4. submarine-dist","type":1,"pageTitle":"Project Architecture","url":"docs/devDocs/README#24-submarine-dist","content":"Store the pre-release files. "},{"title":"2.5. submarine-sdk","type":1,"pageTitle":"Project Architecture","url":"docs/devDocs/README#25-submarine-sdk","content":"Provide Python SDK for submarine user. "},{"title":"2.6. submarine-security","type":1,"pageTitle":"Project Architecture","url":"docs/devDocs/README#26-submarine-security","content":"Provide authorization for Apache Spark to talking to Ranger Admin. "},{"title":"2.7. submarine-server","type":1,"pageTitle":"Project Architecture","url":"docs/devDocs/README#27-submarine-server","content":"Include core server, restful api, and k8s/yarn submitter. "},{"title":"2.8. submarine-test","type":1,"pageTitle":"Project Architecture","url":"docs/devDocs/README#28-submarine-test","content":"Provide end-to-end and k8s test for submarine. "},{"title":"2.9. submarine-workbench","type":1,"pageTitle":"Project Architecture","url":"docs/devDocs/README#29-submarine-workbench","content":"workbench-server: is a Jetty-based web server service. Workbench-server provides RESTful interface and Websocket interface. The RESTful interface provides workbench-web with management capabilities for databases such as project, department, user, and role.workbench-web: is a web front-end service based on Angular.js framework. With workbench-web users can manage Submarine project, department, user, role through browser. You can also use the notebook to develop machine learning algorithms, model release and other lifecycle management. "},{"title":"2.10 dev-support","type":1,"pageTitle":"Project Architecture","url":"docs/devDocs/README#210-dev-support","content":"mini-submarine: by using the docker image provided by Submarine, you can experience all the functions of Submarine in a single docker environment, while mini-submarine also provides developers with a development and testing environment, Avoid the hassle of installing and deploying the runtime environment.submarine-installer: submarine-installer is our submarine runtime environment installation tool for yarn-3.1+ and above.By using submarine-installer, it is easy to install and deploy system services such asdocker, nvidia-docker, nvidia driver, ETCD, Calico network etc. required by yarn-3.1+. "},{"title":"Download Apache Submarine","type":0,"sectionRef":"#","url":"docs/download","content":"","keywords":""},{"title":"Verify the integrity of the files","type":1,"pageTitle":"Download Apache Submarine","url":"docs/download#verify-the-integrity-of-the-files","content":"It is essential that you verify the integrity of the downloaded files using the PGP or MD5 signatures. This signature should be matched against the KEYS file. gpg --import KEYS gpg --verify submarine-dist-X.Y.Z-src.tar.gz.asc Copy "},{"title":"Old releases","type":1,"pageTitle":"Download Apache Submarine","url":"docs/download#old-releases","content":"Apache Submarine 0.4.0 released on Jul 05, 2020 (release notes) (git tag) Binary package with submarine:submarine-dist-0.4.0-hadoop-2.9.tar.gz (550 MB,checksum,signature)Source:submarine-dist-0.4.0-src.tar.gz (6 MB,checksum,signature)Docker images:mini-submarine (guide) Apache Submarine 0.3.0 released on Feb 01, 2020 (release notes) (git tag) Binary package with submarine:submarine-dist-0.3.0-hadoop-2.9.tar.gz (550 MB,checksum,signature)Source:submarine-dist-0.3.0-src.tar.gz (6 MB,checksum,signature)Docker images:mini-submarine (guide) Apache Submarine 0.2.0 released on Jul 2, 2019 Binary package with submarine:hadoop-submarine-0.2.0.tar.gz (111 MB,checksum,signature,Announcement) Source:hadoop-submarine-0.2.0-src.tar.gz (1.4 MB,checksum,signature) Apache Submarine 0.1.0 released on Jan 16, 2019 Binary package with submarine:submarine-0.2.0-bin-all.tgz (97 MB,checksum,signature,Announcement) Source:submarine-hadoop-3.2.0-src.tar.gz (1.1 MB,checksum,signature) "},{"title":"WriteDockerfileKaldi","type":0,"sectionRef":"#","url":"docs/ecosystem/kaldi/WriteDockerfileKaldi","content":"","keywords":""},{"title":"Creating Docker Images for Running Kaldi on YARN","type":1,"pageTitle":"WriteDockerfileKaldi","url":"docs/ecosystem/kaldi/WriteDockerfileKaldi#creating-docker-images-for-running-kaldi-on-yarn","content":""},{"title":"How to create docker images to run Kaldi on YARN","type":1,"pageTitle":"WriteDockerfileKaldi","url":"docs/ecosystem/kaldi/WriteDockerfileKaldi#how-to-create-docker-images-to-run-kaldi-on-yarn","content":"Dockerfile to run Kaldi on YARN need two part: Base libraries which Kaldi depends on 1) OS base image, for example nvidia/cuda:10.0-cudnn7-devel-ubuntu18.04 2) Kaldi depended libraries and packages. For example python, g++, make. For GPU support, need cuda, cudnn, etc. 3) Kaldi compile. Libraries to access HDFS 1) JDK 2) Hadoop Here's an example of a base image (w/o GPU support) to install Kaldi: FROM nvidia/cuda:10.0-cudnn7-devel-ubuntu18.04 RUN apt-get clean && \\ apt-get update && \\ apt-get install -y --no-install-recommends \\ sudo \\ openjdk-8-jdk \\ iputils-ping \\ g++ \\ make \\ automake \\ autoconf \\ bzip2 \\ unzip \\ wget \\ sox \\ libtool \\ git \\ subversion \\ python2.7 \\ python3 \\ zlib1g-dev \\ ca-certificates \\ patch \\ ffmpeg \\ vim && \\ rm -rf /var/lib/apt/lists/* && \\ ln -s /usr/bin/python2.7 /usr/bin/python RUN git clone --depth 1 https://github.com/kaldi-asr/kaldi.git /opt/kaldi && \\ cd /opt/kaldi && \\ cd /opt/kaldi/tools && \\ ./extras/install_mkl.sh && \\ make -j $(nproc) && \\ cd /opt/kaldi/src && \\ ./configure --shared --use-cuda && \\ make depend -j $(nproc) && \\ make -j $(nproc) Copy On top of above image, add files, install packages to access HDFS RUN apt-get update && apt-get install -y openjdk-8-jdk wget # Install hadoop ENV HADOOP_VERSION=\"3.2.1\" ENV JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 RUN wget https://archive.apache.org/dist/hadoop/common/hadoop-${HADOOP_VERSION}/hadoop-${HADOOP_VERSION}.tar.gz && \\ tar zxf hadoop-${HADOOP_VERSION}.tar.gz && \\ ln -s hadoop-${HADOOP_VERSION} hadoop-current && \\ rm hadoop-${HADOOP_VERSION}.tar.gz Copy Build and push to your own docker registry: Use docker build ... and docker push ... to finish this step. "},{"title":"Use examples to build your own Kaldi docker images","type":1,"pageTitle":"WriteDockerfileKaldi","url":"docs/ecosystem/kaldi/WriteDockerfileKaldi#use-examples-to-build-your-own-kaldi-docker-images","content":"We provided following examples for you to build kaldi docker images. For latest Kaldi *base/ubuntu-18.04/Dockerfile.gpu.kaldi_latest: Latest Kaldi that supports GPU, which is prebuilt to CUDA10, with models. "},{"title":"Build Docker images","type":1,"pageTitle":"WriteDockerfileKaldi","url":"docs/ecosystem/kaldi/WriteDockerfileKaldi#build-docker-images","content":"Manually build Docker image:# Under docker/ directory,The CLUSTER_NAME can be modified in build-all.sh to have installation permissions, run build-all.sh to build Docker images. It will build following images: kaldi-latest-gpu-base:0.0.1 for base Docker image which includes Hadoop, Kaldi, GPU base libraries, which includes thchs30 model. Use prebuilt images# (No liability) You can also use prebuilt images for convenience in the docker hub: hadoopsubmarine/kaldi-latest-gpu-base:0.0.1 "},{"title":"Deploy Submarine with Helm","type":0,"sectionRef":"#","url":"docs/gettingStarted/helm","content":"","keywords":""},{"title":"Prerequisite","type":1,"pageTitle":"Deploy Submarine with Helm","url":"docs/gettingStarted/helm#prerequisite","content":"Install Helm v3: https://helm.sh/docs/intro/install/ A Kubernetes environment (ex: minikube or kind) "},{"title":"Deploy Submarine to Kubernetes","type":1,"pageTitle":"Deploy Submarine with Helm","url":"docs/gettingStarted/helm#deploy-submarine-to-kubernetes","content":"git clone https://github.com/apache/submarine.git cd submarine helm install submarine ./helm-charts/submarine Copy With these commands, the Submarine service will be deployed to the \"default\" namespace.The first time installation will take about 10 mins because the docker images are pulled from apache/submarine on DockerHub. "},{"title":"Verify installation","type":1,"pageTitle":"Deploy Submarine with Helm","url":"docs/gettingStarted/helm#verify-installation","content":"kubectl get all Copy TODO: screenshot "},{"title":"Uninstall Submarine","type":1,"pageTitle":"Deploy Submarine with Helm","url":"docs/gettingStarted/helm#uninstall-submarine","content":"helm uninstall submarine # Check helm ls Copy Helm chart configuation (values.yaml)# "},{"title":"Volume Type","type":1,"pageTitle":"Deploy Submarine with Helm","url":"docs/gettingStarted/helm#volume-type","content":"Submarine can support various volume types, currently including hostPath (default) and NFS. It can be easily configured in the ./helm-charts/submarine/values.yaml, or you can override the default values in values.yaml by helm CLI. hostPath# In hostPath, you can store data directly in your node.Usage: Configure setting in ./helm-charts/submarine/values.yaml.To enable hostPath storage, set .storage.type to host.To set the root path for your storage, set .storage.host.root to <any-path> Example: # ./helm-charts/submarine/values.yaml storage: type: host host: root: /tmp Copy NFS (Network File System)# In NFS, it allows multiple clients to access a shared space.Prerequisite: A pre-existing NFS server. You have two options. Create NFS server kubectl create -f ./dev-support/nfs-server/nfs-server.yaml Copy It will create a nfs-server pod in kubernetes cluster, and expose nfs-server ip at 10.96.0.2Use your own NFS server Install NFS dependencies in your nodes Ubuntu apt-get install -y nfs-common Copy CentOS yum install nfs-util Copy Usage: Configure setting in ./helm-charts/submarine/values.yaml.To enable NFS storage, set .storage.type to nfs.To set the ip for NFS server, set .storage.nfs.ip to <any-ip> Example: # ./helm-charts/submarine/values.yaml storage: type: nfs nfs: ip: 10.96.0.2 Copy "},{"title":"Access to Submarine Server","type":1,"pageTitle":"Deploy Submarine with Helm","url":"docs/gettingStarted/helm#access-to-submarine-server","content":"Submarine server by default expose 8080 port within K8s cluster. After Submarine v0.5 uses Traefik as reverse-proxy by default. If you don't want to use Traefik, you can modify below value to false in ./helm-charts/submarine/values.yaml. # Use Traefik by default traefik: enabled: true Copy To access the server from outside of the cluster, we use Traefik ingress controller and NodePort for external access.\\ Please refer to ./helm-charts/submarine/charts/traefik/values.yaml and Traefik docsfor more details if you want to customize the default value for Traefik. Notice:If you use kind to run local Kubernetes cluster, please refer to this docsand set the configuration \"extraPortMappings\" when creating the k8s cluster. kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 nodes: - role: control-plane extraPortMappings: - containerPort: 32080 hostPort: [the port you want to access] Copy # Use nodePort and Traefik ingress controller by default. # To access the submarine server, open the following URL in your browser. http://127.0.0.1:32080 Copy If minikube is installed, use the following command to find the URL to the Submarine server. $ minikube service submarine-traefik --url Copy "},{"title":"RunningDistributedThchs30KaldiJobs","type":0,"sectionRef":"#","url":"docs/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs","content":"","keywords":""},{"title":"Prepare data for training","type":1,"pageTitle":"RunningDistributedThchs30KaldiJobs","url":"docs/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs#prepare-data-for-training","content":"Thchs30 is a common benchmark in machine learning for speech data and transcripts. Below example is based on Thchs30 dataset. 1) download gz file: THCHS30_PATH=/data/hdfs1/nfs/aisearch/kaldi/thchs30 mkdir $THCHS30_PATH/data && cd $THCHS30_PATH/data wget http://www.openslr.org/resources/18/data_thchs30.tgz wget http://www.openslr.org/resources/18/test-noise.tgz wget http://www.openslr.org/resources/18/resource.tgz Copy 2) Checkout https://github.com/apache/submarine.git: git clone https://github.com/apache/submarine.git Copy 3) Go to submarine/docker/ecosystem/ cp -r ./kaldi/sge $THCHS30_PATH/sge Copy 4) optional,Modify /opt/kaldi/egs/thchs30/s5/cmd.sh in the Container,This queue is used by default export train_cmd=\"queue.pl -q all.q\" Copy Warning: Please note that YARN service doesn't allow multiple services with the same name, so please run following command yarn application -destroy <service-name> Copy to delete services if you want to reuse the same service name. "},{"title":"Prepare Docker images","type":1,"pageTitle":"RunningDistributedThchs30KaldiJobs","url":"docs/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs#prepare-docker-images","content":"Refer to Write Dockerfile to build a Docker image or use prebuilt one: hadoopsubmarine/kaldi-latest-gpu-base:0.0.1 "},{"title":"Run Kaldi jobs","type":1,"pageTitle":"RunningDistributedThchs30KaldiJobs","url":"docs/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs#run-kaldi-jobs","content":""},{"title":"Run distributed training","type":1,"pageTitle":"RunningDistributedThchs30KaldiJobs","url":"docs/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs#run-distributed-training","content":"# Change the variables according to your needs SUBMARINE_VERSION=3.3.0-SNAPSHOT WORKER_NUM=2 SGE_CFG_PATH=/cfg THCHS30_PATH=/data/hdfs1/nfs/aisearch/kaldi/thchs30 DOCKER_HADOOP_HDFS_HOME=/app/${SUBMARINE_VERSION} # Dependent on registrydns, you must fill in < your RegistryDNSIP> in resolv.conf yarn jar /usr/local/matrix/share/hadoop/yarn/${SUBMARINE_VERSION}.jar \\ job run --name kaldi-thchs30-distributed \\ --env DOCKER_JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre/ \\ --env DOCKER_HADOOP_HDFS_HOME=$DOCKER_HADOOP_HDFS_HOME \\ --env YARN_CONTAINER_RUNTIME_DOCKER_CONTAINER_NETWORK=calico-network \\ --env PYTHONUNBUFFERED=\"0\" \\ --env TZ=\"Asia/Shanghai\" \\ --env YARN_CONTAINER_RUNTIME_DOCKER_MOUNTS=${THCHS30_PATH}/sge/resolv.conf:/etc/resolv.conf,\\ ${THCHS30_PATH}/sge/passwd:/etc/passwd:rw,\\ ${THCHS30_PATH}/sge/group:/etc/group:rw,\\ ${THCHS30_PATH}/sge:$SGE_CFG_PATH,\\ ${THCHS30_PATH}/data:/opt/kaldi/egs/thchs30,\\ ${THCHS30_PATH}/mul/s5:/opt/kaldi/egs/mul-thchs30/s5 \\ --input_path /opt/kaldi/egs/thchs30/data \\ --docker_image hadoopsubmarine/kaldi-latest-gpu-base:0.0.1 \\ --num_workers $WORKER_NUM \\ --worker_resources memory=64G,vcores=32,gpu=1 \\ --worker_launch_cmd \"sudo mkdir -p /opt/kaldi/egs/mul-thchs30/s5 && \\ sudo cp /opt/kaldi/egs/thchs30/s5/* /opt/kaldi/egs/mul-thchs30/s5 -r && \\ cluster_user=`whoami` domain_suffix=\"ml.com\" && \\ cd /cfg && bash sge_run.sh $WORKER_NUM $SGE_CFG_PATH && \\ if [ $(echo $HOST_NAME |grep \"^master-\") ] then sleep 2m && cd /opt/kaldi/egs/mul-thchs30/s5 && ./run.sh fi\" \\ --verbose Copy Explanations: >1 num_workers indicates it is a distributed training.Parameters / resources / Docker image of parameter server can be specified separately. For many cases, parameter server doesn't require GPU.We don't need parameter server here For the meaning of the individual parameters, see the QuickStart page! Outputs of distributed training Sample output of master: ... Reading package lists... Building dependency tree... Reading state information... The following additional packages will be installed: bsd-mailx cpio gridengine-common ifupdown iproute2 isc-dhcp-client isc-dhcp-common libatm1 libdns-export162 libisc-export160 liblockfile-bin liblockfile1 libmnl0 libxmuu1 libxtables11 ncurses-term netbase openssh-client openssh-server openssh-sftp-server postfix python3-chardet python3-pkg-resources python3-requests python3-six python3-urllib3 ssh-import-id ssl-cert tcsh xauth Suggested packages: libarchive1 gridengine-qmon ppp rdnssd iproute2-doc resolvconf avahi-autoipd isc-dhcp-client-ddns apparmor ssh-askpass libpam-ssh keychain monkeysphere rssh molly-guard ufw procmail postfix-mysql postfix-pgsql postfix-ldap postfix-pcre sasl2-bin libsasl2-modules dovecot-common postfix-cdb postfix-doc python3-setuptools python3-ndg-httpsclient python3-openssl python3-pyasn1 openssl-blacklist The following NEW packages will be installed: bsd-mailx cpio gridengine-client gridengine-common gridengine-exec gridengine-master ifupdown iproute2 isc-dhcp-client isc-dhcp-common libatm1 libdns-export162 libisc-export160 liblockfile-bin liblockfile1 libmnl0 libxmuu1 libxtables11 ncurses-term netbase openssh-client openssh-server openssh-sftp-server postfix python3-chardet python3-pkg-resources python3-requests python3-six python3-urllib3 ssh-import-id ssl-cert tcsh xauth 0 upgraded, 33 newly installed, 0 to remove and 30 not upgraded. Need to get 12.1 MB of archives. After this operation, 65.8 MB of additional disk space will be used. Get:1 http://archive.ubuntu.com/ubuntu xenial/main amd64 libatm1 amd64 1:2.5.1-1.5 [24.2 kB] Get:2 http://archive.ubuntu.com/ubuntu xenial/main amd64 libmnl0 amd64 1.0.3-5 [12.0 kB] Get:3 http://archive.ubuntu.com/ubuntu xenial/main amd64 liblockfile-bin amd64 1.09-6ubuntu1 [10.8 kB] Get:4 http://archive.ubuntu.com/ubuntu xenial/main amd64 liblockfile1 amd64 1.09-6ubuntu1 [8056 B] Get:5 http://archive.ubuntu.com/ubuntu xenial/main amd64 cpio amd64 2.11+dfsg-5ubuntu1 [74.8 kB] Get:6 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 iproute2 amd64 4.3.0-1ubuntu3.16.04.5 [523 kB] Get:7 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 ifupdown amd64 0.8.10ubuntu1.4 [54.9 kB] Get:8 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libisc-export160 amd64 1:9.10.3.dfsg.P4-8ubuntu1.15 [153 kB] Get:9 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libdns-export162 amd64 1:9.10.3.dfsg.P4-8ubuntu1.15 [665 kB] Get:10 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 isc-dhcp-client amd64 4.3.3-5ubuntu12.10 [224 kB] Get:11 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 isc-dhcp-common amd64 4.3.3-5ubuntu12.10 [105 kB] Get:12 http://archive.ubuntu.com/ubuntu xenial/main amd64 libxtables11 amd64 1.6.0-2ubuntu3 [27.2 kB] Get:13 http://archive.ubuntu.com/ubuntu xenial/main amd64 netbase all 5.3 [12.9 kB] Get:14 http://archive.ubuntu.com/ubuntu xenial/main amd64 libxmuu1 amd64 2:1.1.2-2 [9674 B] Get:15 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 openssh-client amd64 1:7.2p2-4ubuntu2.8 [590 kB] Get:16 http://archive.ubuntu.com/ubuntu xenial/main amd64 xauth amd64 1:1.0.9-1ubuntu2 [22.7 kB] Get:17 http://archive.ubuntu.com/ubuntu xenial/main amd64 ssl-cert all 1.0.37 [16.9 kB] Get:18 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 postfix amd64 3.1.0-3ubuntu0.3 [1152 kB] Get:19 http://archive.ubuntu.com/ubuntu xenial/main amd64 bsd-mailx amd64 8.1.2-0.20160123cvs-2 [63.7 kB] Get:20 http://archive.ubuntu.com/ubuntu xenial/universe amd64 gridengine-common all 6.2u5-7.4 [156 kB] Get:21 http://archive.ubuntu.com/ubuntu xenial/universe amd64 gridengine-client amd64 6.2u5-7.4 [3394 kB] Get:22 http://archive.ubuntu.com/ubuntu xenial/universe amd64 tcsh amd64 6.18.01-5 [410 kB] Get:23 http://archive.ubuntu.com/ubuntu xenial/universe amd64 gridengine-exec amd64 6.2u5-7.4 [990 kB] Get:24 http://archive.ubuntu.com/ubuntu xenial/universe amd64 gridengine-master amd64 6.2u5-7.4 [2429 kB] Get:25 http://archive.ubuntu.com/ubuntu xenial/main amd64 ncurses-term all 6.0+20160213-1ubuntu1 [249 kB] Get:26 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 openssh-sftp-server amd64 1:7.2p2-4ubuntu2.8 [38.9 kB] Get:27 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 openssh-server amd64 1:7.2p2-4ubuntu2.8 [335 kB] Get:28 http://archive.ubuntu.com/ubuntu xenial/main amd64 python3-pkg-resources all 20.7.0-1 [79.0 kB] Get:29 http://archive.ubuntu.com/ubuntu xenial/main amd64 python3-chardet all 2.3.0-2 [96.2 kB] Get:30 http://archive.ubuntu.com/ubuntu xenial/main amd64 python3-six all 1.10.0-3 [11.0 kB] Get:31 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 python3-urllib3 all 1.13.1-2ubuntu0.16.04.3 [58.5 kB] Get:32 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 python3-requests all 2.9.1-3ubuntu0.1 [55.8 kB] Get:33 http://archive.ubuntu.com/ubuntu xenial/main amd64 ssh-import-id all 5.5-0ubuntu1 [10.2 kB] Fetched 12.1 MB in 0s (15.0 MB/s) Selecting previously unselected package libatm1:amd64. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 21398 files and directories currently installed.) Preparing to unpack .../libatm1_1%3a2.5.1-1.5_amd64.deb ... Unpacking libatm1:amd64 (1:2.5.1-1.5) ... Selecting previously unselected package libmnl0:amd64. Preparing to unpack .../libmnl0_1.0.3-5_amd64.deb ... Unpacking libmnl0:amd64 (1.0.3-5) ... Selecting previously unselected package liblockfile-bin. Preparing to unpack .../liblockfile-bin_1.09-6ubuntu1_amd64.deb ... Unpacking liblockfile-bin (1.09-6ubuntu1) ... Selecting previously unselected package liblockfile1:amd64. Preparing to unpack .../liblockfile1_1.09-6ubuntu1_amd64.deb ... Unpacking liblockfile1:amd64 (1.09-6ubuntu1) ... Selecting previously unselected package cpio. Preparing to unpack .../cpio_2.11+dfsg-5ubuntu1_amd64.deb ... Unpacking cpio (2.11+dfsg-5ubuntu1) ... Selecting previously unselected package iproute2. Preparing to unpack .../iproute2_4.3.0-1ubuntu3.16.04.5_amd64.deb ... Unpacking iproute2 (4.3.0-1ubuntu3.16.04.5) ... Selecting previously unselected package ifupdown. Preparing to unpack .../ifupdown_0.8.10ubuntu1.4_amd64.deb ... Unpacking ifupdown (0.8.10ubuntu1.4) ... Selecting previously unselected package libisc-export160. Preparing to unpack .../libisc-export160_1%3a9.10.3.dfsg.P4-8ubuntu1.15_amd64.deb ... Unpacking libisc-export160 (1:9.10.3.dfsg.P4-8ubuntu1.15) ... Selecting previously unselected package libdns-export162. Preparing to unpack .../libdns-export162_1%3a9.10.3.dfsg.P4-8ubuntu1.15_amd64.deb ... Unpacking libdns-export162 (1:9.10.3.dfsg.P4-8ubuntu1.15) ... Selecting previously unselected package isc-dhcp-client. Preparing to unpack .../isc-dhcp-client_4.3.3-5ubuntu12.10_amd64.deb ... Unpacking isc-dhcp-client (4.3.3-5ubuntu12.10) ... Selecting previously unselected package isc-dhcp-common. Preparing to unpack .../isc-dhcp-common_4.3.3-5ubuntu12.10_amd64.deb ... Unpacking isc-dhcp-common (4.3.3-5ubuntu12.10) ... Selecting previously unselected package libxtables11:amd64. Preparing to unpack .../libxtables11_1.6.0-2ubuntu3_amd64.deb ... Unpacking libxtables11:amd64 (1.6.0-2ubuntu3) ... Selecting previously unselected package netbase. Preparing to unpack .../archives/netbase_5.3_all.deb ... Unpacking netbase (5.3) ... Selecting previously unselected package libxmuu1:amd64. Preparing to unpack .../libxmuu1_2%3a1.1.2-2_amd64.deb ... Unpacking libxmuu1:amd64 (2:1.1.2-2) ... Selecting previously unselected package openssh-client. Preparing to unpack .../openssh-client_1%3a7.2p2-4ubuntu2.8_amd64.deb ... Unpacking openssh-client (1:7.2p2-4ubuntu2.8) ... Selecting previously unselected package xauth. Preparing to unpack .../xauth_1%3a1.0.9-1ubuntu2_amd64.deb ... Unpacking xauth (1:1.0.9-1ubuntu2) ... Selecting previously unselected package ssl-cert. Preparing to unpack .../ssl-cert_1.0.37_all.deb ... Unpacking ssl-cert (1.0.37) ... Selecting previously unselected package postfix. Preparing to unpack .../postfix_3.1.0-3ubuntu0.3_amd64.deb ... Unpacking postfix (3.1.0-3ubuntu0.3) ... Selecting previously unselected package bsd-mailx. Preparing to unpack .../bsd-mailx_8.1.2-0.20160123cvs-2_amd64.deb ... Unpacking bsd-mailx (8.1.2-0.20160123cvs-2) ... Selecting previously unselected package gridengine-common. Preparing to unpack .../gridengine-common_6.2u5-7.4_all.deb ... Unpacking gridengine-common (6.2u5-7.4) ... Selecting previously unselected package gridengine-client. Preparing to unpack .../gridengine-client_6.2u5-7.4_amd64.deb ... Unpacking gridengine-client (6.2u5-7.4) ... Selecting previously unselected package tcsh. Preparing to unpack .../tcsh_6.18.01-5_amd64.deb ... Unpacking tcsh (6.18.01-5) ... Selecting previously unselected package gridengine-exec. Preparing to unpack .../gridengine-exec_6.2u5-7.4_amd64.deb ... Unpacking gridengine-exec (6.2u5-7.4) ... Selecting previously unselected package gridengine-master. Preparing to unpack .../gridengine-master_6.2u5-7.4_amd64.deb ... Unpacking gridengine-master (6.2u5-7.4) ... Selecting previously unselected package ncurses-term. Preparing to unpack .../ncurses-term_6.0+20160213-1ubuntu1_all.deb ... Unpacking ncurses-term (6.0+20160213-1ubuntu1) ... Selecting previously unselected package openssh-sftp-server. Preparing to unpack .../openssh-sftp-server_1%3a7.2p2-4ubuntu2.8_amd64.deb ... Unpacking openssh-sftp-server (1:7.2p2-4ubuntu2.8) ... Selecting previously unselected package openssh-server. Preparing to unpack .../openssh-server_1%3a7.2p2-4ubuntu2.8_amd64.deb ... Unpacking openssh-server (1:7.2p2-4ubuntu2.8) ... Selecting previously unselected package python3-pkg-resources. Preparing to unpack .../python3-pkg-resources_20.7.0-1_all.deb ... Unpacking python3-pkg-resources (20.7.0-1) ... Selecting previously unselected package python3-chardet. Preparing to unpack .../python3-chardet_2.3.0-2_all.deb ... Unpacking python3-chardet (2.3.0-2) ... Selecting previously unselected package python3-six. Preparing to unpack .../python3-six_1.10.0-3_all.deb ... Unpacking python3-six (1.10.0-3) ... Selecting previously unselected package python3-urllib3. Preparing to unpack .../python3-urllib3_1.13.1-2ubuntu0.16.04.3_all.deb ... Unpacking python3-urllib3 (1.13.1-2ubuntu0.16.04.3) ... Selecting previously unselected package python3-requests. Preparing to unpack .../python3-requests_2.9.1-3ubuntu0.1_all.deb ... Unpacking python3-requests (2.9.1-3ubuntu0.1) ... Selecting previously unselected package ssh-import-id. Preparing to unpack .../ssh-import-id_5.5-0ubuntu1_all.deb ... Unpacking ssh-import-id (5.5-0ubuntu1) ... Processing triggers for systemd (229-4ubuntu21.22) ... Processing triggers for libc-bin (2.23-0ubuntu11) ... Setting up libatm1:amd64 (1:2.5.1-1.5) ... Setting up libmnl0:amd64 (1.0.3-5) ... Setting up liblockfile-bin (1.09-6ubuntu1) ... Setting up liblockfile1:amd64 (1.09-6ubuntu1) ... Setting up cpio (2.11+dfsg-5ubuntu1) ... update-alternatives: using /bin/mt-gnu to provide /bin/mt (mt) in auto mode Setting up iproute2 (4.3.0-1ubuntu3.16.04.5) ... Setting up ifupdown (0.8.10ubuntu1.4) ... Creating /etc/network/interfaces. Setting up libisc-export160 (1:9.10.3.dfsg.P4-8ubuntu1.15) ... Setting up libdns-export162 (1:9.10.3.dfsg.P4-8ubuntu1.15) ... Setting up isc-dhcp-client (4.3.3-5ubuntu12.10) ... Setting up isc-dhcp-common (4.3.3-5ubuntu12.10) ... Setting up libxtables11:amd64 (1.6.0-2ubuntu3) ... Setting up netbase (5.3) ... Setting up libxmuu1:amd64 (2:1.1.2-2) ... Setting up openssh-client (1:7.2p2-4ubuntu2.8) ... Setting up xauth (1:1.0.9-1ubuntu2) ... Setting up ssl-cert (1.0.37) ... Setting up postfix (3.1.0-3ubuntu0.3) ... Creating /etc/postfix/dynamicmaps.cf setting myhostname: master-0.XXX setting alias maps setting alias database changing /etc/mailname to master-0.XXX setting myorigin setting destinations: $myhostname, master-0.XXX, localhost.XXX, , localhost setting relayhost: setting mynetworks: 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 setting mailbox_size_limit: 0 setting recipient_delimiter: + setting inet_interfaces: all setting inet_protocols: all /etc/aliases does not exist, creating it. WARNING: /etc/aliases exists, but does not have a root alias. Postfix is now set up with a default configuration. If you need to make changes, edit /etc/postfix/main.cf (and others) as needed. To view Postfix configuration values, see postconf(1). After modifying main.cf, be sure to run '/etc/init.d/postfix reload'. Running newaliases invoke-rc.d: could not determine current runlevel invoke-rc.d: policy-rc.d denied execution of restart. Setting up bsd-mailx (8.1.2-0.20160123cvs-2) ... update-alternatives: using /usr/bin/bsd-mailx to provide /usr/bin/mailx (mailx) in auto mode Setting up gridengine-common (6.2u5-7.4) ... Creating config file /etc/default/gridengine with new version Setting up gridengine-client (6.2u5-7.4) ... Setting up tcsh (6.18.01-5) ... update-alternatives: using /bin/tcsh to provide /bin/csh (csh) in auto mode Setting up gridengine-exec (6.2u5-7.4) ... invoke-rc.d: could not determine current runlevel invoke-rc.d: policy-rc.d denied execution of start. Setting up gridengine-master (6.2u5-7.4) ... su: Authentication failure (Ignored) Initializing cluster with the following parameters: => SGE_ROOT: /var/lib/gridengine => SGE_CELL: default => Spool directory: /var/spool/gridengine/spooldb => Initial manager user: sgeadmin Initializing spool (/var/spool/gridengine/spooldb) Initializing global configuration based on /usr/share/gridengine/default-configuration Initializing complexes based on /usr/share/gridengine/centry Initializing usersets based on /usr/share/gridengine/usersets Adding user sgeadmin as a manager Cluster creation complete invoke-rc.d: could not determine current runlevel invoke-rc.d: policy-rc.d denied execution of start. Setting up ncurses-term (6.0+20160213-1ubuntu1) ... Setting up openssh-sftp-server (1:7.2p2-4ubuntu2.8) ... Setting up openssh-server (1:7.2p2-4ubuntu2.8) ... Creating SSH2 RSA key; this may take some time ... 2048 SHA256:hfQpES1aS4cjF8AOCIParZR6342vdwutoyITru0wtuE root@master-0.XXX (RSA) Creating SSH2 DSA key; this may take some time ... 1024 SHA256:gOsPMVgwXBHJzixN/gtJAG+hVCHqw8t7Fhy4nsx8od0 root@master-0.XXX (DSA) Creating SSH2 ECDSA key; this may take some time ... 256 SHA256:3D5SNniUb4z+/BuqXheFgG+DfjsxXqTT/zwWAqdX4jM root@master-0.XXX (ECDSA) Creating SSH2 ED25519 key; this may take some time ... 256 SHA256:SwyeV9iSqOW4TKLi4Wvc0zD8lWtupHCJpDu8oWBwbfU root@master-0.XXX (ED25519) invoke-rc.d: could not determine current runlevel invoke-rc.d: policy-rc.d denied execution of start. Setting up python3-pkg-resources (20.7.0-1) ... Setting up python3-chardet (2.3.0-2) ... Setting up python3-six (1.10.0-3) ... Setting up python3-urllib3 (1.13.1-2ubuntu0.16.04.3) ... Setting up python3-requests (2.9.1-3ubuntu0.1) ... Setting up ssh-import-id (5.5-0ubuntu1) ... Processing triggers for libc-bin (2.23-0ubuntu11) ... Processing triggers for systemd (229-4ubuntu21.22) ... Reading package lists... Building dependency tree... Reading state information... 0 upgraded, 0 newly installed, 0 to remove and 30 not upgraded. Copy cat $SGE_CFG_PATH/setcfg.log finish master add worker node worker-0.XXX Copy Sample output of worker: please wait Reading package lists... Building dependency tree... Reading state information... The following additional packages will be installed: bsd-mailx cpio gridengine-common ifupdown iproute2 isc-dhcp-client isc-dhcp-common libatm1 libdns-export162 libisc-export160 liblockfile-bin liblockfile1 libmnl0 libxmuu1 libxtables11 ncurses-term netbase openssh-client openssh-server openssh-sftp-server postfix python3-chardet python3-pkg-resources python3-requests python3-six python3-urllib3 ssh-import-id ssl-cert tcsh xauth Suggested packages: libarchive1 gridengine-qmon ppp rdnssd iproute2-doc resolvconf avahi-autoipd isc-dhcp-client-ddns apparmor ssh-askpass libpam-ssh keychain monkeysphere rssh molly-guard ufw procmail postfix-mysql postfix-pgsql postfix-ldap postfix-pcre sasl2-bin libsasl2-modules dovecot-common postfix-cdb postfix-doc python3-setuptools python3-ndg-httpsclient python3-openssl python3-pyasn1 openssl-blacklist The following NEW packages will be installed: bsd-mailx cpio gridengine-client gridengine-common gridengine-exec ifupdown iproute2 isc-dhcp-client isc-dhcp-common libatm1 libdns-export162 libisc-export160 liblockfile-bin liblockfile1 libmnl0 libxmuu1 libxtables11 ncurses-term netbase openssh-client openssh-server openssh-sftp-server postfix python3-chardet python3-pkg-resources python3-requests python3-six python3-urllib3 ssh-import-id ssl-cert tcsh xauth 0 upgraded, 32 newly installed, 0 to remove and 30 not upgraded. Need to get 9633 kB of archives. After this operation, 51.2 MB of additional disk space will be used. Get:1 http://archive.ubuntu.com/ubuntu xenial/main amd64 libatm1 amd64 1:2.5.1-1.5 [24.2 kB] Get:2 http://archive.ubuntu.com/ubuntu xenial/main amd64 libmnl0 amd64 1.0.3-5 [12.0 kB] Get:3 http://archive.ubuntu.com/ubuntu xenial/main amd64 liblockfile-bin amd64 1.09-6ubuntu1 [10.8 kB] Get:4 http://archive.ubuntu.com/ubuntu xenial/main amd64 liblockfile1 amd64 1.09-6ubuntu1 [8056 B] Get:5 http://archive.ubuntu.com/ubuntu xenial/main amd64 cpio amd64 2.11+dfsg-5ubuntu1 [74.8 kB] Get:6 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 iproute2 amd64 4.3.0-1ubuntu3.16.04.5 [523 kB] Get:7 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 ifupdown amd64 0.8.10ubuntu1.4 [54.9 kB] Get:8 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libisc-export160 amd64 1:9.10.3.dfsg.P4-8ubuntu1.15 [153 kB] Get:9 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libdns-export162 amd64 1:9.10.3.dfsg.P4-8ubuntu1.15 [665 kB] Get:10 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 isc-dhcp-client amd64 4.3.3-5ubuntu12.10 [224 kB] Get:11 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 isc-dhcp-common amd64 4.3.3-5ubuntu12.10 [105 kB] Get:12 http://archive.ubuntu.com/ubuntu xenial/main amd64 libxtables11 amd64 1.6.0-2ubuntu3 [27.2 kB] Get:13 http://archive.ubuntu.com/ubuntu xenial/main amd64 netbase all 5.3 [12.9 kB] Get:14 http://archive.ubuntu.com/ubuntu xenial/main amd64 libxmuu1 amd64 2:1.1.2-2 [9674 B] Get:15 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 openssh-client amd64 1:7.2p2-4ubuntu2.8 [590 kB] Get:16 http://archive.ubuntu.com/ubuntu xenial/main amd64 xauth amd64 1:1.0.9-1ubuntu2 [22.7 kB] Get:17 http://archive.ubuntu.com/ubuntu xenial/main amd64 ssl-cert all 1.0.37 [16.9 kB] Get:18 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 postfix amd64 3.1.0-3ubuntu0.3 [1152 kB] Get:19 http://archive.ubuntu.com/ubuntu xenial/main amd64 bsd-mailx amd64 8.1.2-0.20160123cvs-2 [63.7 kB] Get:20 http://archive.ubuntu.com/ubuntu xenial/universe amd64 gridengine-common all 6.2u5-7.4 [156 kB] Get:21 http://archive.ubuntu.com/ubuntu xenial/universe amd64 gridengine-client amd64 6.2u5-7.4 [3394 kB] Get:22 http://archive.ubuntu.com/ubuntu xenial/universe amd64 tcsh amd64 6.18.01-5 [410 kB] Get:23 http://archive.ubuntu.com/ubuntu xenial/universe amd64 gridengine-exec amd64 6.2u5-7.4 [990 kB] Get:24 http://archive.ubuntu.com/ubuntu xenial/main amd64 ncurses-term all 6.0+20160213-1ubuntu1 [249 kB] Get:25 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 openssh-sftp-server amd64 1:7.2p2-4ubuntu2.8 [38.9 kB] Get:26 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 openssh-server amd64 1:7.2p2-4ubuntu2.8 [335 kB] Get:27 http://archive.ubuntu.com/ubuntu xenial/main amd64 python3-pkg-resources all 20.7.0-1 [79.0 kB] Get:28 http://archive.ubuntu.com/ubuntu xenial/main amd64 python3-chardet all 2.3.0-2 [96.2 kB] Get:29 http://archive.ubuntu.com/ubuntu xenial/main amd64 python3-six all 1.10.0-3 [11.0 kB] Get:30 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 python3-urllib3 all 1.13.1-2ubuntu0.16.04.3 [58.5 kB] Get:31 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 python3-requests all 2.9.1-3ubuntu0.1 [55.8 kB] Get:32 http://archive.ubuntu.com/ubuntu xenial/main amd64 ssh-import-id all 5.5-0ubuntu1 [10.2 kB] Fetched 9633 kB in 2s (4496 kB/s) Selecting previously unselected package libatm1:amd64. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 21398 files and directories currently installed.) Preparing to unpack .../libatm1_1%3a2.5.1-1.5_amd64.deb ... Unpacking libatm1:amd64 (1:2.5.1-1.5) ... Selecting previously unselected package libmnl0:amd64. Preparing to unpack .../libmnl0_1.0.3-5_amd64.deb ... Unpacking libmnl0:amd64 (1.0.3-5) ... Selecting previously unselected package liblockfile-bin. Preparing to unpack .../liblockfile-bin_1.09-6ubuntu1_amd64.deb ... Unpacking liblockfile-bin (1.09-6ubuntu1) ... Selecting previously unselected package liblockfile1:amd64. Preparing to unpack .../liblockfile1_1.09-6ubuntu1_amd64.deb ... Unpacking liblockfile1:amd64 (1.09-6ubuntu1) ... Selecting previously unselected package cpio. Preparing to unpack .../cpio_2.11+dfsg-5ubuntu1_amd64.deb ... Unpacking cpio (2.11+dfsg-5ubuntu1) ... Selecting previously unselected package iproute2. Preparing to unpack .../iproute2_4.3.0-1ubuntu3.16.04.5_amd64.deb ... Unpacking iproute2 (4.3.0-1ubuntu3.16.04.5) ... Selecting previously unselected package ifupdown. Preparing to unpack .../ifupdown_0.8.10ubuntu1.4_amd64.deb ... Unpacking ifupdown (0.8.10ubuntu1.4) ... Selecting previously unselected package libisc-export160. Preparing to unpack .../libisc-export160_1%3a9.10.3.dfsg.P4-8ubuntu1.15_amd64.deb ... Unpacking libisc-export160 (1:9.10.3.dfsg.P4-8ubuntu1.15) ... Selecting previously unselected package libdns-export162. Preparing to unpack .../libdns-export162_1%3a9.10.3.dfsg.P4-8ubuntu1.15_amd64.deb ... Unpacking libdns-export162 (1:9.10.3.dfsg.P4-8ubuntu1.15) ... Selecting previously unselected package isc-dhcp-client. Preparing to unpack .../isc-dhcp-client_4.3.3-5ubuntu12.10_amd64.deb ... Unpacking isc-dhcp-client (4.3.3-5ubuntu12.10) ... Selecting previously unselected package isc-dhcp-common. Preparing to unpack .../isc-dhcp-common_4.3.3-5ubuntu12.10_amd64.deb ... Unpacking isc-dhcp-common (4.3.3-5ubuntu12.10) ... Selecting previously unselected package libxtables11:amd64. Preparing to unpack .../libxtables11_1.6.0-2ubuntu3_amd64.deb ... Unpacking libxtables11:amd64 (1.6.0-2ubuntu3) ... Selecting previously unselected package netbase. Preparing to unpack .../archives/netbase_5.3_all.deb ... Unpacking netbase (5.3) ... Selecting previously unselected package libxmuu1:amd64. Preparing to unpack .../libxmuu1_2%3a1.1.2-2_amd64.deb ... Unpacking libxmuu1:amd64 (2:1.1.2-2) ... Selecting previously unselected package openssh-client. Preparing to unpack .../openssh-client_1%3a7.2p2-4ubuntu2.8_amd64.deb ... Unpacking openssh-client (1:7.2p2-4ubuntu2.8) ... Selecting previously unselected package xauth. Preparing to unpack .../xauth_1%3a1.0.9-1ubuntu2_amd64.deb ... Unpacking xauth (1:1.0.9-1ubuntu2) ... Selecting previously unselected package ssl-cert. Preparing to unpack .../ssl-cert_1.0.37_all.deb ... Unpacking ssl-cert (1.0.37) ... Selecting previously unselected package postfix. Preparing to unpack .../postfix_3.1.0-3ubuntu0.3_amd64.deb ... Unpacking postfix (3.1.0-3ubuntu0.3) ... Selecting previously unselected package bsd-mailx. Preparing to unpack .../bsd-mailx_8.1.2-0.20160123cvs-2_amd64.deb ... Unpacking bsd-mailx (8.1.2-0.20160123cvs-2) ... Selecting previously unselected package gridengine-common. Preparing to unpack .../gridengine-common_6.2u5-7.4_all.deb ... Unpacking gridengine-common (6.2u5-7.4) ... Selecting previously unselected package gridengine-client. Preparing to unpack .../gridengine-client_6.2u5-7.4_amd64.deb ... Unpacking gridengine-client (6.2u5-7.4) ... Selecting previously unselected package tcsh. Preparing to unpack .../tcsh_6.18.01-5_amd64.deb ... Unpacking tcsh (6.18.01-5) ... Selecting previously unselected package gridengine-exec. Preparing to unpack .../gridengine-exec_6.2u5-7.4_amd64.deb ... Unpacking gridengine-exec (6.2u5-7.4) ... Selecting previously unselected package ncurses-term. Preparing to unpack .../ncurses-term_6.0+20160213-1ubuntu1_all.deb ... Unpacking ncurses-term (6.0+20160213-1ubuntu1) ... Selecting previously unselected package openssh-sftp-server. Preparing to unpack .../openssh-sftp-server_1%3a7.2p2-4ubuntu2.8_amd64.deb ... Unpacking openssh-sftp-server (1:7.2p2-4ubuntu2.8) ... Selecting previously unselected package openssh-server. Preparing to unpack .../openssh-server_1%3a7.2p2-4ubuntu2.8_amd64.deb ... Unpacking openssh-server (1:7.2p2-4ubuntu2.8) ... Selecting previously unselected package python3-pkg-resources. Preparing to unpack .../python3-pkg-resources_20.7.0-1_all.deb ... Unpacking python3-pkg-resources (20.7.0-1) ... Selecting previously unselected package python3-chardet. Preparing to unpack .../python3-chardet_2.3.0-2_all.deb ... Unpacking python3-chardet (2.3.0-2) ... Selecting previously unselected package python3-six. Preparing to unpack .../python3-six_1.10.0-3_all.deb ... Unpacking python3-six (1.10.0-3) ... Selecting previously unselected package python3-urllib3. Preparing to unpack .../python3-urllib3_1.13.1-2ubuntu0.16.04.3_all.deb ... Unpacking python3-urllib3 (1.13.1-2ubuntu0.16.04.3) ... Selecting previously unselected package python3-requests. Preparing to unpack .../python3-requests_2.9.1-3ubuntu0.1_all.deb ... Unpacking python3-requests (2.9.1-3ubuntu0.1) ... Selecting previously unselected package ssh-import-id. Preparing to unpack .../ssh-import-id_5.5-0ubuntu1_all.deb ... Unpacking ssh-import-id (5.5-0ubuntu1) ... Processing triggers for systemd (229-4ubuntu21.22) ... Processing triggers for libc-bin (2.23-0ubuntu11) ... Setting up libatm1:amd64 (1:2.5.1-1.5) ... Setting up libmnl0:amd64 (1.0.3-5) ... Setting up liblockfile-bin (1.09-6ubuntu1) ... Setting up liblockfile1:amd64 (1.09-6ubuntu1) ... Setting up cpio (2.11+dfsg-5ubuntu1) ... update-alternatives: using /bin/mt-gnu to provide /bin/mt (mt) in auto mode Setting up iproute2 (4.3.0-1ubuntu3.16.04.5) ... Setting up ifupdown (0.8.10ubuntu1.4) ... Creating /etc/network/interfaces. Setting up libisc-export160 (1:9.10.3.dfsg.P4-8ubuntu1.15) ... Setting up libdns-export162 (1:9.10.3.dfsg.P4-8ubuntu1.15) ... Setting up isc-dhcp-client (4.3.3-5ubuntu12.10) ... Setting up isc-dhcp-common (4.3.3-5ubuntu12.10) ... Setting up libxtables11:amd64 (1.6.0-2ubuntu3) ... Setting up netbase (5.3) ... Setting up libxmuu1:amd64 (2:1.1.2-2) ... Setting up openssh-client (1:7.2p2-4ubuntu2.8) ... Setting up xauth (1:1.0.9-1ubuntu2) ... Setting up ssl-cert (1.0.37) ... Setting up postfix (3.1.0-3ubuntu0.3) ... Creating /etc/postfix/dynamicmaps.cf setting myhostname: worker-0.XXX setting alias maps setting alias database changing /etc/mailname to worker-0.XXX setting myorigin setting destinations: $myhostname, worker-0.XXX, localhost.XXX, , localhost setting relayhost: setting mynetworks: 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 setting mailbox_size_limit: 0 setting recipient_delimiter: + setting inet_interfaces: all setting inet_protocols: all /etc/aliases does not exist, creating it. WARNING: /etc/aliases exists, but does not have a root alias. Postfix is now set up with a default configuration. If you need to make changes, edit /etc/postfix/main.cf (and others) as needed. To view Postfix configuration values, see postconf(1). After modifying main.cf, be sure to run '/etc/init.d/postfix reload'. Running newaliases invoke-rc.d: could not determine current runlevel invoke-rc.d: policy-rc.d denied execution of restart. Setting up bsd-mailx (8.1.2-0.20160123cvs-2) ... update-alternatives: using /usr/bin/bsd-mailx to provide /usr/bin/mailx (mailx) in auto mode Setting up gridengine-common (6.2u5-7.4) ... Creating config file /etc/default/gridengine with new version Setting up gridengine-client (6.2u5-7.4) ... Setting up tcsh (6.18.01-5) ... update-alternatives: using /bin/tcsh to provide /bin/csh (csh) in auto mode Setting up gridengine-exec (6.2u5-7.4) ... invoke-rc.d: could not determine current runlevel invoke-rc.d: policy-rc.d denied execution of start. Setting up ncurses-term (6.0+20160213-1ubuntu1) ... Setting up openssh-sftp-server (1:7.2p2-4ubuntu2.8) ... Setting up openssh-server (1:7.2p2-4ubuntu2.8) ... Creating SSH2 RSA key; this may take some time ... 2048 SHA256:ok/TxzwtF5W8I55sDxrt4Agy4fuWn39BiSovvDObhVE root@worker-0.XXX (RSA) Creating SSH2 DSA key; this may take some time ... 1024 SHA256:4y48kVYt3mS3q1KgZzEoYMnS/2d/tA8TJUK5uNSaxZY root@worker-0.XXX (DSA) Creating SSH2 ECDSA key; this may take some time ... 256 SHA256:4D7zm4cD2IbDnHoXnzcIo3FISbvOW8eOstGBNf1/bvo root@worker-0.XXX (ECDSA) Creating SSH2 ED25519 key; this may take some time ... 256 SHA256:/HrA3xiZiH5CZkXwtcfE6GwcMM+hEhZzTdFHxj4PzDg root@worker-0.XXX (ED25519) invoke-rc.d: could not determine current runlevel invoke-rc.d: policy-rc.d denied execution of start. Setting up python3-pkg-resources (20.7.0-1) ... Setting up python3-chardet (2.3.0-2) ... Setting up python3-six (1.10.0-3) ... Setting up python3-urllib3 (1.13.1-2ubuntu0.16.04.3) ... Setting up python3-requests (2.9.1-3ubuntu0.1) ... Setting up ssh-import-id (5.5-0ubuntu1) ... Processing triggers for libc-bin (2.23-0ubuntu11) ... Processing triggers for systemd (229-4ubuntu21.22) ... Reading package lists... Building dependency tree... Reading state information... 0 upgraded, 0 newly installed, 0 to remove and 30 not upgraded. Copy cat $SGE_CFG_PATH/setcfg.log please wait Start SGE for worker is finished done for worker-0.XXX worker. Copy Sample output of sge:  "},{"title":"Setup a Kubernetes cluster using KinD","type":0,"sectionRef":"#","url":"docs/gettingStarted/kind","content":"","keywords":""},{"title":"Create Kubernetes cluster with KinD","type":1,"pageTitle":"Setup a Kubernetes cluster using KinD","url":"docs/gettingStarted/kind#create-kubernetes-cluster-with-kind","content":"We recommend users developing Submarine with minikube. However, KinD is also an option to setup a Kubernetes cluster on your local machine. Run the following command, and specify the KinD version and Kubernetes version here. # Download the specific version of KinD (must >= v0.6.0) export KIND_VERSION=v0.11.1 curl -Lo ./kind https://github.com/kubernetes-sigs/kind/releases/download/${KIND_VERSION}/kind-linux-amd64 # Make the binary executable chmod +x ./kind # Move the binary to your executable path sudo mv ./kind /usr/local/bin/ # Create cluster with specific version of kubernetes export KUBE_VERSION=v1.15.12 kind create cluster --image kindest/node:${KUBE_VERSION} Copy "},{"title":"Kubernetes Dashboard (optional)","type":1,"pageTitle":"Setup a Kubernetes cluster using KinD","url":"docs/gettingStarted/kind#kubernetes-dashboard-optional","content":""},{"title":"Deploy","type":1,"pageTitle":"Setup a Kubernetes cluster using KinD","url":"docs/gettingStarted/kind#deploy","content":"To deploy Dashboard, execute the following command: kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta8/aio/deploy/recommended.yaml Copy "},{"title":"Create RBAC","type":1,"pageTitle":"Setup a Kubernetes cluster using KinD","url":"docs/gettingStarted/kind#create-rbac","content":"Run the following commands to grant the cluster access permission of dashboard: kubectl create serviceaccount dashboard-admin-sa kubectl create clusterrolebinding dashboard-admin-sa --clusterrole=cluster-admin --serviceaccount=default:dashboard-admin-sa Copy "},{"title":"Get access token (optional)","type":1,"pageTitle":"Setup a Kubernetes cluster using KinD","url":"docs/gettingStarted/kind#get-access-token-optional","content":"If you want to use the token to login the dashboard, run the following commands to get key: kubectl get secrets # select the right dashboard-admin-sa-token to describe the secret kubectl describe secret dashboard-admin-sa-token-6nhkx Copy "},{"title":"Start dashboard service","type":1,"pageTitle":"Setup a Kubernetes cluster using KinD","url":"docs/gettingStarted/kind#start-dashboard-service","content":"kubectl proxy Copy Now access Dashboard at: http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/ Dashboard screenshot:  "},{"title":"Submarine Python SDK","type":0,"sectionRef":"#","url":"docs/gettingStarted/python-sdk","content":"","keywords":""},{"title":"Prepare Python Environment to run Submarine SDK","type":1,"pageTitle":"Submarine Python SDK","url":"docs/gettingStarted/python-sdk#prepare-python-environment-to-run-submarine-sdk","content":"Submarine SDK requires Python3.7+. It's better to use a new Python environment created by Anoconda or Python virtualenv to try this to avoid trouble to existing Python environment. A sample Python virtual env can be setup like this: wget https://files.pythonhosted.org/packages/33/bc/fa0b5347139cd9564f0d44ebd2b147ac97c36b2403943dbee8a25fd74012/virtualenv-16.0.0.tar.gz tar xf virtualenv-16.0.0.tar.gz # Make sure to install using Python 3 python3 virtualenv-16.0.0/virtualenv.py venv . venv/bin/activate Copy "},{"title":"Install Submarine SDK","type":1,"pageTitle":"Submarine Python SDK","url":"docs/gettingStarted/python-sdk#install-submarine-sdk","content":""},{"title":"Install SDK from pypi.org (recommended)","type":1,"pageTitle":"Submarine Python SDK","url":"docs/gettingStarted/python-sdk#install-sdk-from-pypiorg-recommended","content":"Starting from 0.4.0, Submarine provides Python SDK. Please change it to a proper version needed. More detail: https://pypi.org/project/apache-submarine/ # Install latest stable version pip install apache-submarine # Install specific version pip install apache-submarine==<REPLACE_VERSION> Copy "},{"title":"Install SDK from source code","type":1,"pageTitle":"Submarine Python SDK","url":"docs/gettingStarted/python-sdk#install-sdk-from-source-code","content":"Please first clone code from github or go to http://submarine.apache.org/download.html to download released source code. git clone https://github.com/apache/submarine.git # (optional) chackout specific branch or release git checkout <correct release tag/branch> cd submarine/submarine-sdk/pysubmarine pip install . Copy "},{"title":"Manage Submarine Experiment","type":1,"pageTitle":"Submarine Python SDK","url":"docs/gettingStarted/python-sdk#manage-submarine-experiment","content":"Assuming you've installed submarine on K8s and forward the traefik service to localhost, now you can open a Python shell, Jupyter notebook or any tools with Submarine SDK installed. Follow SDK experiment example to run an experiment. "},{"title":"Training a DeepFM model","type":1,"pageTitle":"Submarine Python SDK","url":"docs/gettingStarted/python-sdk#training-a-deepfm-model","content":"The Submarine also supports users to train an easy-to-use CTR model with a few lines of code and a configuration file, so they don’t need to reimplement the model by themself. In addition, they can train the model on both local on distributed systems, such as Hadoop or Kubernetes. Follow SDK DeepFM example to try the model. "},{"title":"Jupyter Notebook","type":0,"sectionRef":"#","url":"docs/gettingStarted/notebook","content":"","keywords":""},{"title":"Working with notebooks","type":1,"pageTitle":"Jupyter Notebook","url":"docs/gettingStarted/notebook#working-with-notebooks","content":"We recommend using Web UI to manage notebooks. "},{"title":"Notebooks Web UI","type":1,"pageTitle":"Jupyter Notebook","url":"docs/gettingStarted/notebook#notebooks-web-ui","content":"Notebooks can be started from the Web UI. You can click the “Notebook” tab in the left-hand panel to manage your notebooks.  To create a new notebook server, click “New Notebook”. You should see a form for entering details of your new notebook server. Notebook Name : Name of the notebook server. It should follow the rules below. Contain at most 63 characters.Contain only lowercase alphanumeric characters or '-'.Start with an alphabetic character.End with an alphanumeric character. Environment : It defines a set of libraries and docker image.CPU and MemoryGPU (optional)EnvVar (optional) : Injects environment variables into the notebook. If you’re not sure which environment you need, please choose the environment “notebook-env” for the new notebook.  You should see your new notebook server. Click the name of your notebook server to connect to it.  "},{"title":"Experiment with your notebook","type":1,"pageTitle":"Jupyter Notebook","url":"docs/gettingStarted/notebook#experiment-with-your-notebook","content":"The environment “notebook-env” includes Submarine Python SDK which can talk to Submarine Server to create experiments, as the example below: from __future__ import print_function import submarine from submarine.experiment.models.environment_spec import EnvironmentSpec from submarine.experiment.models.experiment_spec import ExperimentSpec from submarine.experiment.models.experiment_task_spec import ExperimentTaskSpec from submarine.experiment.models.experiment_meta import ExperimentMeta from submarine.experiment.models.code_spec import CodeSpec # Create Submarine Client submarine_client = submarine.ExperimentClient() # Define TensorFlow experiment spec environment = EnvironmentSpec(image='apache/submarine:tf-dist-mnist-test-1.0') experiment_meta = ExperimentMeta(name='mnist-dist', namespace='default', framework='Tensorflow', cmd='python /var/tf_dist_mnist/dist_mnist.py --train_steps=100', env_vars={'ENV1': 'ENV1'}) worker_spec = ExperimentTaskSpec(resources='cpu=1,memory=1024M', replicas=1) ps_spec = ExperimentTaskSpec(resources='cpu=1,memory=1024M', replicas=1) code_spec = CodeSpec(sync_mode='git', url='https://github.com/apache/submarine.git') experiment_spec = ExperimentSpec(meta=experiment_meta, environment=environment, code=code_spec, spec={'Ps' : ps_spec,'Worker': worker_spec}) # Create experiment experiment = submarine_client.create_experiment(experiment_spec=experiment_spec) Copy You can create a new notebook, paste the above code and run it. Or, you can find the notebook submarine_experiment_sdk.ipynb inside the launched notebook session. You can open it, try it out. After experiment submitted to Submarine server, you can find the experiment jobs on the UI. "},{"title":"Quickstart","type":0,"sectionRef":"#","url":"docs/gettingStarted/quickstart","content":"","keywords":""},{"title":"Installation","type":1,"pageTitle":"Quickstart","url":"docs/gettingStarted/quickstart#installation","content":""},{"title":"Prepare a Kubernetes cluster","type":1,"pageTitle":"Quickstart","url":"docs/gettingStarted/quickstart#prepare-a-kubernetes-cluster","content":"Prerequisite Check dependency page for the compatible versionkubectlhelm (Helm v3 is minimum requirement.)minikube. Start minikube cluster $ minikube start --vm-driver=docker --cpus 8 --memory 4096 --kubernetes-version v1.15.11 Copy "},{"title":"Launch submarine in the cluster","type":1,"pageTitle":"Quickstart","url":"docs/gettingStarted/quickstart#launch-submarine-in-the-cluster","content":"Clone the project $ git clone https://github.com/apache/submarine.git Copy Install the resources by helm chart $ cd submarine $ helm install submarine ./helm-charts/submarine Copy "},{"title":"Ensure submarine is ready","type":1,"pageTitle":"Quickstart","url":"docs/gettingStarted/quickstart#ensure-submarine-is-ready","content":"Use kubectl to query the status of pods $ kubectl get pods Copy Make sure each pod is Running NAME READY STATUS RESTARTS AGE notebook-controller-deployment-5d4f5f874c-vwds8 1/1 Running 0 3h33m pytorch-operator-844c866d54-q5ztd 1/1 Running 0 3h33m submarine-database-674987ff7d-r8zqs 1/1 Running 0 3h33m submarine-minio-5fdd957785-xd987 1/1 Running 0 3h33m submarine-mlflow-76bbf5c7b-g2ntd 1/1 Running 0 3h33m submarine-server-66f7b8658b-sfmv8 1/1 Running 0 3h33m submarine-tensorboard-6c44944dfb-tvbr9 1/1 Running 0 3h33m submarine-traefik-7cbcfd4bd9-4bczn 1/1 Running 0 3h33m tf-job-operator-6bb69fd44-mc8ww 1/1 Running 0 3h33m Copy "},{"title":"Connect to workbench","type":1,"pageTitle":"Quickstart","url":"docs/gettingStarted/quickstart#connect-to-workbench","content":"Port-forwarding # using port-forwarding $ kubectl port-forward --address 0.0.0.0 service/submarine-traefik 32080:80 Copy Open http://0.0.0.0:32080  "},{"title":"Example: Submit a mnist distributed example","type":1,"pageTitle":"Quickstart","url":"docs/gettingStarted/quickstart#example-submit-a-mnist-distributed-example","content":"We put the code of this example here. train.py is our training script, and build.sh is the script to build a docker image. "},{"title":"1. Write a python script for distributed training","type":1,"pageTitle":"Quickstart","url":"docs/gettingStarted/quickstart#1-write-a-python-script-for-distributed-training","content":"Take a simple mnist tensorflow script as an example. We choose MultiWorkerMirroredStrategy as our distributed strategy. \"\"\" ./dev-support/examples/quickstart/train.py Reference: https://github.com/kubeflow/tf-operator/blob/master/examples/v1/distribution_strategy/keras-API/multi_worker_strategy-with-keras.py \"\"\" import tensorflow_datasets as tfds import tensorflow as tf from tensorflow.keras import layers, models from submarine import ModelsClient def make_datasets_unbatched(): BUFFER_SIZE = 10000 # Scaling MNIST data from (0, 255] to (0., 1.] def scale(image, label): image = tf.cast(image, tf.float32) image /= 255 return image, label datasets, _ = tfds.load(name='mnist', with_info=True, as_supervised=True) return datasets['train'].map(scale).cache().shuffle(BUFFER_SIZE) def build_and_compile_cnn_model(): model = models.Sequential() model.add( layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1))) model.add(layers.MaxPooling2D((2, 2))) model.add(layers.Conv2D(64, (3, 3), activation='relu')) model.add(layers.MaxPooling2D((2, 2))) model.add(layers.Conv2D(64, (3, 3), activation='relu')) model.add(layers.Flatten()) model.add(layers.Dense(64, activation='relu')) model.add(layers.Dense(10, activation='softmax')) model.summary() model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) return model def main(): strategy = tf.distribute.experimental.MultiWorkerMirroredStrategy( communication=tf.distribute.experimental.CollectiveCommunication.AUTO) BATCH_SIZE_PER_REPLICA = 4 BATCH_SIZE = BATCH_SIZE_PER_REPLICA * strategy.num_replicas_in_sync with strategy.scope(): ds_train = make_datasets_unbatched().batch(BATCH_SIZE).repeat() options = tf.data.Options() options.experimental_distribute.auto_shard_policy = \\ tf.data.experimental.AutoShardPolicy.DATA ds_train = ds_train.with_options(options) # Model building/compiling need to be within `strategy.scope()`. multi_worker_model = build_and_compile_cnn_model() class MyCallback(tf.keras.callbacks.Callback): def on_epoch_end(self, epoch, logs=None): # monitor the loss and accuracy print(logs) modelClient.log_metrics({\"loss\": logs[\"loss\"], \"accuracy\": logs[\"accuracy\"]}, epoch) with modelClient.start() as run: multi_worker_model.fit(ds_train, epochs=10, steps_per_epoch=70, callbacks=[MyCallback()]) if __name__ == '__main__': modelClient = ModelsClient() main() Copy "},{"title":"2. Prepare an environment compatible with the training","type":1,"pageTitle":"Quickstart","url":"docs/gettingStarted/quickstart#2-prepare-an-environment-compatible-with-the-training","content":"Build a docker image equipped with the requirement of the environment. $ ./dev-support/examples/quickstart/build.sh Copy "},{"title":"3. Submit the experiment","type":1,"pageTitle":"Quickstart","url":"docs/gettingStarted/quickstart#3-submit-the-experiment","content":"Open submarine workbench and click + New Experiment Fill the form accordingly. Here we set 3 workers. Step 1Step 2Step 3The experiment is successfully submitted "},{"title":"4. Monitor the process (modelClient)","type":1,"pageTitle":"Quickstart","url":"docs/gettingStarted/quickstart#4-monitor-the-process-modelclient","content":"In our code, we use modelClient from submarine-sdk to record the metrics. To see the result, click MLflow UI in the workbench. To compare the metrics of each worker, you can select all workers and then click compare "},{"title":"5. Serve the model (In development)","type":1,"pageTitle":"Quickstart","url":"docs/gettingStarted/quickstart#5-serve-the-model-in-development","content":""},{"title":"Environment REST API","type":0,"sectionRef":"#","url":"docs/userDocs/api/environment","content":"","keywords":""},{"title":"Create Environment","type":1,"pageTitle":"Environment REST API","url":"docs/userDocs/api/environment#create-environment","content":"POST /api/v1/environment Copy "},{"title":"Parameters","type":1,"pageTitle":"Environment REST API","url":"docs/userDocs/api/environment#parameters","content":"Put EnvironmentSpec in request body. EnvironmentSpec# Field Name\tType\tDescriptionname\tString\tEnvironment name. dockerImage\tString\tDocker image name. kernelSpec\tKernelSpec\tEnvironment spec. description\tString\tDescription of environment. KernelSpec# Field Name\tType\tDescriptionname\tString\tKernel name. channels\tList<String>\tNames of the channels. condaDependencies\tList<String>\tList of kernel conda dependencies. pipDependencies\tList<String>\tList of kernel pip dependencies. "},{"title":"Code Example","type":1,"pageTitle":"Environment REST API","url":"docs/userDocs/api/environment#code-example","content":"shell curl -X POST -H \"Content-Type: application/json\" -d ' { \"name\": \"my-submarine-env\", \"dockerImage\" : \"continuumio/anaconda3\", \"kernelSpec\" : { \"name\" : \"team_default_python_3.7\", \"channels\" : [\"defaults\"], \"condaDependencies\" : [\"_ipyw_jlab_nb_ext_conf=0.1.0=py37_0\", \"alabaster=0.7.12=py37_0\", \"anaconda=2020.02=py37_0\", \"anaconda-client=1.7.2=py37_0\", \"anaconda-navigator=1.9.12=py37_0\"], \"pipDependencies\" : [\"apache-submarine==0.5.0\", \"pyarrow==0.17.0\"] } } ' http://127.0.0.1:32080/api/v1/environment Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ \"environmentId\":\"environment_1626160071451_0001\", \"environmentSpec\":{ \"name\":\"my-submarine-env\", \"dockerImage\":\"continuumio/anaconda3\", \"kernelSpec\":{ \"name\":\"team_default_python_3.7\", \"channels\":[\"defaults\"], \"condaDependencies\": [\"_ipyw_jlab_nb_ext_conf\\u003d0.1.0\\u003dpy37_0\", \"alabaster\\u003d0.7.12\\u003dpy37_0\", \"anaconda\\u003d2020.02\\u003dpy37_0\", \"anaconda-client\\u003d1.7.2\\u003dpy37_0\", \"anaconda-navigator\\u003d1.9.12\\u003dpy37_0\"], \"pipDependencies\": [\"apache-submarine\\u003d\\u003d0.5.0\", \"pyarrow\\u003d\\u003d0.17.0\"] }, \"description\":null, \"image\":null } }, \"attributes\":{} } Copy "},{"title":"List Environment","type":1,"pageTitle":"Environment REST API","url":"docs/userDocs/api/environment#list-environment","content":"GET /api/v1/environment Copy "},{"title":"Code Example","type":1,"pageTitle":"Environment REST API","url":"docs/userDocs/api/environment#code-example-1","content":"shell curl -X GET http://127.0.0.1:32080/api/v1/environment Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":[ { \"environmentId\":\"environment_1600862964725_0002\", \"environmentSpec\":{ \"name\":\"notebook-gpu-env\", \"dockerImage\":\"apache/submarine:jupyter-notebook-gpu-0.7.0-SNAPSHOT\", \"kernelSpec\":{ \"name\":\"submarine_jupyter_py3\", \"channels\":[\"defaults\"], \"condaDependencies\":[], \"pipDependencies\":[] }, \"description\":null, \"image\":null } }, { \"environmentId\":\"environment_1626160071451_0001\", \"environmentSpec\":{ \"name\":\"my-submarine-env\", \"dockerImage\":\"continuumio/anaconda3\", \"kernelSpec\":{ \"name\":\"team_default_python_3.7\", \"channels\":[\"defaults\"], \"condaDependencies\": [\"_ipyw_jlab_nb_ext_conf\\u003d0.1.0\\u003dpy37_0\", \"alabaster\\u003d0.7.12\\u003dpy37_0\", \"anaconda\\u003d2020.02\\u003dpy37_0\", \"anaconda-client\\u003d1.7.2\\u003dpy37_0\", \"anaconda-navigator\\u003d1.9.12\\u003dpy37_0\"], \"pipDependencies\": [\"apache-submarine\\u003d\\u003d0.5.0\", \"pyarrow\\u003d\\u003d0.17.0\"] }, \"description\":null, \"image\":null } }, { \"environmentId\":\"environment_1600862964725_0001\", \"environmentSpec\":{ \"name\":\"notebook-env\", \"dockerImage\":\"apache/submarine:jupyter-notebook-0.7.0-SNAPSHOT\", \"kernelSpec\":{ \"name\":\"submarine_jupyter_py3\", \"channels\":[\"defaults\"], \"condaDependencies\":[], \"pipDependencies\":[] }, \"description\":null, \"image\":null } } ], \"attributes\":{} } Copy "},{"title":"Get Environment","type":1,"pageTitle":"Environment REST API","url":"docs/userDocs/api/environment#get-environment","content":"GET /api/v1/environment/{name} Copy "},{"title":"Parameters","type":1,"pageTitle":"Environment REST API","url":"docs/userDocs/api/environment#parameters-1","content":"Field Name\tType\tIn\tDescriptionname\tString\tpath\tEnvironment name. "},{"title":"Code Example","type":1,"pageTitle":"Environment REST API","url":"docs/userDocs/api/environment#code-example-2","content":"shell curl -X GET http://127.0.0.1:32080/api/v1/environment/my-submarine-env Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ \"environmentId\":\"environment_1626160071451_0001\", \"environmentSpec\":{ \"name\":\"my-submarine-env\", \"dockerImage\":\"continuumio/anaconda3\", \"kernelSpec\":{ \"name\":\"team_default_python_3.7\", \"channels\":[\"defaults\"], \"condaDependencies\": [\"_ipyw_jlab_nb_ext_conf\\u003d0.1.0\\u003dpy37_0\", \"alabaster\\u003d0.7.12\\u003dpy37_0\", \"anaconda\\u003d2020.02\\u003dpy37_0\", \"anaconda-client\\u003d1.7.2\\u003dpy37_0\", \"anaconda-navigator\\u003d1.9.12\\u003dpy37_0\"], \"pipDependencies\": [\"apache-submarine\\u003d\\u003d0.5.0\", \"pyarrow\\u003d\\u003d0.17.0\"] }, \"description\":null, \"image\":null } }, \"attributes\":{} } Copy "},{"title":"Patch Environment","type":1,"pageTitle":"Environment REST API","url":"docs/userDocs/api/environment#patch-environment","content":"PATCH /api/v1/environment/{name} Copy "},{"title":"Parameters","type":1,"pageTitle":"Environment REST API","url":"docs/userDocs/api/environment#parameters-2","content":"Field Name\tType\tIn\tDescriptionname\tString\tpath and body\tEnvironment name. dockerImage\tString\tbody\tDocker image name. kernelSpec\tKernelSpec\tbody\tEnvironment spec. description\tString\tbody\tDescription of environment. This field is optional. "},{"title":"Code Example","type":1,"pageTitle":"Environment REST API","url":"docs/userDocs/api/environment#code-example-3","content":"shell curl -X PATCH -H \"Content-Type: application/json\" -d ' { \"name\": \"my-submarine-env\", \"dockerImage\" : \"continuumio/anaconda3\", \"kernelSpec\" : { \"name\" : \"team_default_python_3.7_updated\", \"channels\" : [\"defaults\"], \"condaDependencies\" : [\"_ipyw_jlab_nb_ext_conf=0.1.0=py37_0\", \"alabaster=0.7.12=py37_0\"], \"pipDependencies\" : [] } } ' http://127.0.0.1:32080/api/v1/environment/my-submarine-env Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ \"environmentId\":\"environment_1626160071451_0003\", \"environmentSpec\":{ \"name\":\"my-submarine-env\", \"dockerImage\":\"continuumio/anaconda3\", \"kernelSpec\":{ \"name\":\"team_default_python_3.7_updated\", \"channels\":[\"defaults\"], \"condaDependencies\": [\"_ipyw_jlab_nb_ext_conf\\u003d0.1.0\\u003dpy37_0\", \"alabaster\\u003d0.7.12\\u003dpy37_0\"], \"pipDependencies\":[] }, \"description\":null, \"image\":null } }, \"attributes\":{} } Copy "},{"title":"Delete Environment","type":1,"pageTitle":"Environment REST API","url":"docs/userDocs/api/environment#delete-environment","content":"DELETE /api/v1/environment/{name} Copy "},{"title":"Parameters","type":1,"pageTitle":"Environment REST API","url":"docs/userDocs/api/environment#parameters-3","content":"Field Name\tType\tIn\tDescriptionname\tString\tpath\tEnvironment name. "},{"title":"Code Example","type":1,"pageTitle":"Environment REST API","url":"docs/userDocs/api/environment#code-example-4","content":"shell curl -X DELETE http://127.0.0.1:32080/api/v1/environment/my-submarine-env Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ \"environmentId\":\"environment_1626160071451_0001\", \"environmentSpec\":{ \"name\":\"my-submarine-env\", \"dockerImage\":\"continuumio/anaconda3\", \"kernelSpec\":{ \"name\":\"team_default_python_3.7\", \"channels\":[\"defaults\"], \"condaDependencies\": [\"_ipyw_jlab_nb_ext_conf\\u003d0.1.0\\u003dpy37_0\", \"alabaster\\u003d0.7.12\\u003dpy37_0\", \"anaconda\\u003d2020.02\\u003dpy37_0\", \"anaconda-client\\u003d1.7.2\\u003dpy37_0\", \"anaconda-navigator\\u003d1.9.12\\u003dpy37_0\"], \"pipDependencies\": [\"apache-submarine\\u003d\\u003d0.5.0\", \"pyarrow\\u003d\\u003d0.17.0\"] }, \"description\":null, \"image\":null } },\"attributes\":{} } Copy "},{"title":"Experiment REST API","type":0,"sectionRef":"#","url":"docs/userDocs/api/experiment","content":"","keywords":""},{"title":"Create Experiment (Using Anonymous/Embedded Environment)","type":1,"pageTitle":"Experiment REST API","url":"docs/userDocs/api/experiment#create-experiment-using-anonymousembedded-environment","content":"POST /api/v1/experiment Copy "},{"title":"Parameters","type":1,"pageTitle":"Experiment REST API","url":"docs/userDocs/api/experiment#parameters","content":"Put ExperimentSpec in request body. ExperimentSpec# Field Name\tType\tDescriptionmeta\tExperimentMeta\tMeta data of the experiment template. environment\tEnvironmentSpec\tEnvironment of the experiment template. spec\tMap<String, ExperimentTaskSpec>\tSpec of pods. code\tCodeSpec\tExperiment codespec. ExperimentMeta# Field Name\tType\tDescriptionname\tString\tExperiment name. namespace\tString\tExperiment namespace. framework\tString\tExperiemnt framework. cmd\tString\tCommand. envVars\tMap<String, String>\tEnvironmental variables. EnvironmentSpec# There are two types of environment: Anonymous and Predefined. Anonymous environment: only specify dockerImage in environment spec. The container will be built on the docker image.Embedded environment: specify name in environment spec. The container will be built on the existing environment (including dockerImage and kernalSpec). See more details in environment api. ExperimentTaskSpec# Field Name\tType\tDescriptionreplicas\tInteger\tNumbers of replicas. resoureces\tString\tResouces of the task name\tString\tTask name. image\tString\tImage name. cmd\tString\tCommand. envVars\tMap<String, String>\tEnvironmental variables. CodeSpec# Currently only support pulling from github. HDFS, NFS and s3 are in development Field Name\tType\tDescriptionsyncMode\tString (git|hdfs|nfs|s3)\tsync mode of code spec. url\tString\turl of code spec. "},{"title":"Code Example","type":1,"pageTitle":"Experiment REST API","url":"docs/userDocs/api/experiment#code-example","content":"shell curl -X POST -H \"Content-Type: application/json\" -d ' { \"meta\": { \"name\": \"tf-mnist-json\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=2048M\" } } } ' http://127.0.0.1:32080/api/v1/experiment Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ \"experimentId\":\"experiment_1626160071451_0002\", \"name\":\"tf-mnist-json\", \"uid\":\"5a6ec922-6c90-43d4-844f-039f6804ed36\", \"status\":\"Accepted\", \"acceptedTime\":\"2021-07-13T16:47:51.000+08:00\", \"createdTime\":null, \"runningTime\":null, \"finishedTime\":null, \"spec\":{ \"meta\":{ \"name\":\"tf-mnist-json\", \"namespace\":\"default\", \"framework\":\"TensorFlow\", \"cmd\":\"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150\", \"envVars\":{\"ENV_1\":\"ENV1\"} }, \"environment\":{ \"name\":null, \"dockerImage\":null, \"kernelSpec\":null, \"description\":null, \"image\":\"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\":{ \"Ps\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"1024M\",\"cpu\":\"1\"} }, \"Worker\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d2048M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"2048M\",\"cpu\":\"1\"} } }, \"code\":null } }, \"attributes\":{} } Copy "},{"title":"Create Experiment (Using Pre-defined/Stored Environment)","type":1,"pageTitle":"Experiment REST API","url":"docs/userDocs/api/experiment#create-experiment-using-pre-definedstored-environment","content":"POST /api/v1/experiment Copy "},{"title":"Parameters","type":1,"pageTitle":"Experiment REST API","url":"docs/userDocs/api/experiment#parameters-1","content":"Put ExperimentSpec in request body. "},{"title":"Code Example","type":1,"pageTitle":"Experiment REST API","url":"docs/userDocs/api/experiment#code-example-1","content":"shell curl -X POST -H \"Content-Type: application/json\" -d ' { \"meta\": { \"name\": \"tf-mnist-json\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"name\": \"my-submarine-env\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=2048M\" } } } ' http://127.0.0.1:32080/api/v1/experiment Copy Above example assume environment \"my-submarine-env\" already exists in Submarine. Please refer Environment API Reference doc to environment rest api. response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ \"experimentId\":\"experiment_1626160071451_0005\", \"name\":\"tf-mnist-json\", \"uid\":\"4944c603-0f21-49e5-826a-2ff820bb4d93\", \"status\":\"Accepted\", \"acceptedTime\":\"2021-07-13T16:57:27.000+08:00\", \"createdTime\":null, \"runningTime\":null, \"finishedTime\":null, \"spec\":{ \"meta\":{ \"name\":\"tf-mnist-json\", \"namespace\":\"default\", \"framework\":\"TensorFlow\", \"cmd\":\"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150\", \"envVars\":{\"ENV_1\":\"ENV1\"} }, \"environment\":{ \"name\":\"my-submarine-env\", \"dockerImage\":null, \"kernelSpec\":null, \"description\":null, \"image\":null }, \"spec\":{ \"Ps\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"1024M\",\"cpu\":\"1\"} }, \"Worker\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d2048M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"2048M\",\"cpu\":\"1\"} } }, \"code\":null } }, \"attributes\":{} } Copy "},{"title":"List Experiment","type":1,"pageTitle":"Experiment REST API","url":"docs/userDocs/api/experiment#list-experiment","content":"GET /api/v1/experiment Copy "},{"title":"Code Example","type":1,"pageTitle":"Experiment REST API","url":"docs/userDocs/api/experiment#code-example-2","content":"shell curl -X GET http://127.0.0.1:32080/api/v1/experiment Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\": [{ \"experimentId\":\"experiment_1626160071451_0001\", \"name\":\"newexperiment1\", \"uid\":\"b895985c-411c-4e89-90e0-c60a2a8a4235\", \"status\":\"Succeeded\", \"acceptedTime\":\"2021-07-13T16:21:31.000+08:00\", \"createdTime\":\"2021-07-13T16:21:31.000+08:00\", \"runningTime\":\"2021-07-13T16:21:46.000+08:00\", \"finishedTime\":\"2021-07-13T16:26:54.000+08:00\", \"spec\":{ \"meta\":{ \"name\":\"newexperiment1\", \"namespace\":\"default\", \"framework\":\"TensorFlow\", \"cmd\":\"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150\", \"envVars\":{\"ENV1\":\"ENV1\"} }, \"environment\":{ \"name\":null, \"dockerImage\":null, \"kernelSpec\":null, \"description\":null, \"image\":\"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\":{ \"Ps\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"1024M\",\"cpu\":\"1\"} }, \"Worker\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"1024M\",\"cpu\":\"1\"} } }, \"code\":null } }, { \"experimentId\":\"experiment_1626160071451_0005\", \"name\":\"tf-mnist-json\", \"uid\":\"4944c603-0f21-49e5-826a-2ff820bb4d93\", \"status\":\"Accepted\", \"acceptedTime\":\"2021-07-13T16:57:27.000+08:00\", \"createdTime\":null, \"runningTime\":null, \"finishedTime\":null, \"spec\":{ \"meta\":{ \"name\":\"tf-mnist-json\", \"namespace\":\"default\", \"framework\":\"TensorFlow\", \"cmd\":\"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150\", \"envVars\":{\"ENV_1\":\"ENV1\"} }, \"environment\":{ \"name\":\"my-submarine-env\", \"dockerImage\":null, \"kernelSpec\":null, \"description\":null, \"image\":null }, \"spec\":{ \"Ps\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"1024M\",\"cpu\":\"1\"} }, \"Worker\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d2048M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"2048M\",\"cpu\":\"1\"} } }, \"code\":null } }], \"attributes\":{} } Copy "},{"title":"Get Experiment","type":1,"pageTitle":"Experiment REST API","url":"docs/userDocs/api/experiment#get-experiment","content":"GET /api/v1/experiment/{id} Copy "},{"title":"Parameters","type":1,"pageTitle":"Experiment REST API","url":"docs/userDocs/api/experiment#parameters-2","content":"Field Name\tType\tIn\tDescriptionid\tString\tpath\tExperiment id. "},{"title":"Code Example","type":1,"pageTitle":"Experiment REST API","url":"docs/userDocs/api/experiment#code-example-3","content":"shell curl -X GET http://127.0.0.1:32080/api/v1/experiment/experiment_1626160071451_0005 Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ \"experimentId\":\"experiment_1626160071451_0005\", \"name\":\"tf-mnist-json\", \"uid\":\"4944c603-0f21-49e5-826a-2ff820bb4d93\", \"status\":\"Accepted\", \"acceptedTime\":\"2021-07-13T16:57:27.000+08:00\", \"createdTime\":null, \"runningTime\":null, \"finishedTime\":null, \"spec\":{ \"meta\":{ \"name\":\"tf-mnist-json\", \"namespace\":\"default\", \"framework\":\"TensorFlow\", \"cmd\":\"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150\", \"envVars\":{\"ENV_1\":\"ENV1\"} }, \"environment\":{ \"name\":\"my-submarine-env\", \"dockerImage\":null, \"kernelSpec\":null, \"description\":null, \"image\":null }, \"spec\":{ \"Ps\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"1024M\",\"cpu\":\"1\"} }, \"Worker\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d2048M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"2048M\",\"cpu\":\"1\"} } }, \"code\":null } }, \"attributes\":{} } Copy "},{"title":"Patch Experiment","type":1,"pageTitle":"Experiment REST API","url":"docs/userDocs/api/experiment#patch-experiment","content":"PATCH /api/v1/experiment/{id} Copy "},{"title":"Parameters","type":1,"pageTitle":"Experiment REST API","url":"docs/userDocs/api/experiment#parameters-3","content":"Field Name\tType\tIn\tDescriptionid\tString\tpath\tExperiment id. meta\tExperimentMeta\tbody\tMeta data of the experiment template. environment\tEnvironmentSpec\tbody\tEnvironment of the experiment template. spec\tMap<String, ExperimentTaskSpec>\tbody\tSpec of pods. code\tCodeSpec\tbody\tTODO "},{"title":"Code Example","type":1,"pageTitle":"Experiment REST API","url":"docs/userDocs/api/experiment#code-example-4","content":"shell curl -X PATCH -H \"Content-Type: application/json\" -d ' { \"meta\": { \"name\": \"tf-mnist-json\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 2, \"resources\": \"cpu=1,memory=2048M\" } } } ' http://127.0.0.1:32080/api/v1/experiment/experiment_1626160071451_0005 Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ \"experimentId\":\"experiment_1626160071451_0005\", \"name\":\"tf-mnist-json\", \"uid\":\"4944c603-0f21-49e5-826a-2ff820bb4d93\", \"status\":\"Accepted\", \"acceptedTime\":\"2021-07-13T16:57:27.000+08:00\", \"createdTime\":null, \"runningTime\":null, \"finishedTime\":null, \"spec\":{ \"meta\":{ \"name\":\"tf-mnist-json\", \"namespace\":\"default\", \"framework\":\"TensorFlow\", \"cmd\":\"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150\", \"envVars\":{\"ENV_1\":\"ENV1\"} }, \"environment\":{ \"name\":null, \"dockerImage\":null, \"kernelSpec\":null, \"description\":null, \"image\":\"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\":{ \"Ps\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"1024M\",\"cpu\":\"1\"} }, \"Worker\":{ \"replicas\":2, \"resources\":\"cpu\\u003d1,memory\\u003d2048M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"2048M\",\"cpu\":\"1\"} } }, \"code\":null } }, \"attributes\":{} } Copy "},{"title":"Delete Experiment","type":1,"pageTitle":"Experiment REST API","url":"docs/userDocs/api/experiment#delete-experiment","content":"DELETE /api/v1/experiment/{id} Copy "},{"title":"Parameters","type":1,"pageTitle":"Experiment REST API","url":"docs/userDocs/api/experiment#parameters-4","content":"Field Name\tType\tIn\tDescriptionid\tString\tpath\tExperiment id. "},{"title":"Code Example","type":1,"pageTitle":"Experiment REST API","url":"docs/userDocs/api/experiment#code-example-5","content":"shell curl -X DELETE http://127.0.0.1:32080/api/v1/experiment/experiment_1626160071451_0005 Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ \"experimentId\":\"experiment_1626160071451_0005\", \"name\":\"tf-mnist-json\", \"uid\":\"4944c603-0f21-49e5-826a-2ff820bb4d93\", \"status\":\"Deleted\", \"acceptedTime\":null, \"createdTime\":null, \"runningTime\":null, \"finishedTime\":null, \"spec\":{ \"meta\":{ \"name\":\"tf-mnist-json\", \"namespace\":\"default\", \"framework\":\"TensorFlow\", \"cmd\":\"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150\", \"envVars\":{\"ENV_1\":\"ENV1\"} }, \"environment\":{ \"name\":null, \"dockerImage\":null, \"kernelSpec\":null, \"description\":null, \"image\":\"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\":{ \"Ps\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"1024M\",\"cpu\":\"1\"} }, \"Worker\":{ \"replicas\":2, \"resources\":\"cpu\\u003d1,memory\\u003d2048M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"2048M\",\"cpu\":\"1\"} } }, \"code\":null } }, \"attributes\":{} } Copy "},{"title":"List Experiment Log","type":1,"pageTitle":"Experiment REST API","url":"docs/userDocs/api/experiment#list-experiment-log","content":"GET /api/v1/experiment/logs Copy "},{"title":"Code Example","type":1,"pageTitle":"Experiment REST API","url":"docs/userDocs/api/experiment#code-example-6","content":"shell curl -X GET http://127.0.0.1:32080/api/v1/experiment/logs Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\": [{ \"experimentId\":\"experiment_1626160071451_0001\", \"logContent\": [{ \"podName\":\"newexperiment1-ps-0\", \"podLog\":[] }, { \"podName\":\"newexperiment1-worker-0\", \"podLog\":[] }] }], \"attributes\":{} } Copy "},{"title":"Get Experiment Log","type":1,"pageTitle":"Experiment REST API","url":"docs/userDocs/api/experiment#get-experiment-log","content":"GET /api/v1/experiment/logs/{id} Copy "},{"title":"Parameters","type":1,"pageTitle":"Experiment REST API","url":"docs/userDocs/api/experiment#parameters-5","content":"Field Name\tType\tIn\tDescriptionid\tString\tpath\tExperiment id. "},{"title":"Code Example","type":1,"pageTitle":"Experiment REST API","url":"docs/userDocs/api/experiment#code-example-7","content":"shell curl -X GET http://127.0.0.1:32080/api/v1/experiment/logs/experiment_1626160071451_0001 Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ \"experimentId\":\"experiment_1626160071451_0001\", \"logContent\": [{ \"podName\":\"newexperiment1-ps-0\", \"podLog\":[] }, { \"podName\":\"newexperiment1-worker-0\", \"podLog\":[] }] }, \"attributes\":{} } Copy "},{"title":"Experiment Template REST API","type":0,"sectionRef":"#","url":"docs/userDocs/api/experiment-template","content":"","keywords":""},{"title":"Create Experiment Template","type":1,"pageTitle":"Experiment Template REST API","url":"docs/userDocs/api/experiment-template#create-experiment-template","content":"POST /api/v1/template Copy "},{"title":"Parameters","type":1,"pageTitle":"Experiment Template REST API","url":"docs/userDocs/api/experiment-template#parameters","content":"Field Name\tType\tIn\tDescriptionname\tString\tbody\tExperiment template name. This is required. author\tString\tbody\tAuthor name. description\tString\tbody\tDescription of the experiment template. parameters\tList<ExperimentTemplateParamSpec>\tbody\tParameters of the experiment template. experimentSpec\tExperimentSpec\tbody\tSpec of the experiment template. ExperimentTemplateParamSpec# Field Name\tType\tDescriptionname\tString\tParameter name. required\tBoolean\ttrue / false. Whether the parameter is required. description\tString\tDescription of the parameter. value\tString\tValue of the parameter. ExperimentSpec# Field Name\tType\tDescriptionmeta\tExperimentMeta\tMeta data of the experiment template. environment\tEnvironmentSpec\tEnvironment of the experiment template. spec\tMap<String, ExperimentTaskSpec>\tSpec of pods. code\tCodeSpec\tExperiment codespec. ExperimentMeta# Field Name\tType\tDescriptionname\tString\tExperiment Name. namespace\tString\tExperiment namespace. framework\tString\tExperiment framework. cmd\tString\tCommand. envVars\tMap<String, String>\tEnvironmental variables. EnvironmentSpec# See more details in environment api. ExperimentTaskSpec# Field Name\tType\tDescriptionreplicas\tInteger\tNumbers of replicas. resoureces\tString\tResouces of the task name\tString\tTask name. image\tString\tImage name. cmd\tString\tCommand. envVars\tMap<String, String>\tEnvironmental variables. CodeSpec# Field Name\tType\tDescriptionsyncMode\tString\tsync mode of code spec. url\tString\turl of code spec. "},{"title":"Code Example","type":1,"pageTitle":"Experiment Template REST API","url":"docs/userDocs/api/experiment-template#code-example","content":"shell curl -X POST -H \"Content-Type: application/json\" -d ' { \"name\": \"my-tf-mnist-template\", \"author\": \"author\", \"description\": \"This is a template to run tf-mnist\", \"parameters\": [{ \"name\": \"learning_rate\", \"value\": 0.1, \"required\": true, \"description\": \"This is learning_rate of training.\" }, { \"name\": \"batch_size\", \"value\": 150, \"required\": true, \"description\": \"This is batch_size of training.\" }, { \"name\": \"experiment_name\", \"value\": \"tf-mnist1\", \"required\": true, \"description\": \"the name of experiment.\" } ], \"experimentSpec\": { \"meta\": { \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate={{learning_rate}} --batch_size={{batch_size}}\", \"name\": \"{{experiment_name}}\", \"envVars\": { \"ENV1\": \"ENV1\" }, \"framework\": \"TensorFlow\", \"namespace\": \"default\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" } } } ' http://127.0.0.1:32080/api/v1/template Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ \"experimentTemplateId\":{ \"id\":1, \"serverTimestamp\":1626160071451 }, \"experimentTemplateSpec\":{ \"name\":\"my-tf-mnist-template\", \"author\":\"author\", \"description\":\"This is a template to run tf-mnist\", \"parameters\": [{ \"name\":\"learning_rate\", \"required\":\"true\", \"description\":\"This is learning_rate of training.\", \"value\":\"0.1\" }, { \"name\":\"batch_size\", \"required\":\"true\", \"description\":\"This is batch_size of training.\", \"value\":\"150\" }, { \"name\":\"experiment_name\", \"required\":\"true\", \"description\":\"the name of experiment.\", \"value\":\"tf-mnist1\" }, { \"name\":\"spec.Ps.replicas\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Ps.resourceMap.cpu\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Ps.resourceMap.memory\", \"required\":\"false\", \"description\":\"\", \"value\":\"1024M\" }, { \"name\":\"spec.Worker.replicas\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Worker.resourceMap.cpu\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Worker.resourceMap.memory\", \"required\":\"false\", \"description\":\"\",\" value\":\"1024M\" }], \"experimentSpec\":{ \"meta\":{ \"name\":\"{{experiment_name}}\", \"namespace\":\"default\", \"framework\":\"TensorFlow\", \"cmd\":\"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d{{learning_rate}} --batch_size\\u003d{{batch_size}}\", \"envVars\":{\"ENV1\":\"ENV1\"} }, \"environment\":{ \"name\":null, \"dockerImage\":null, \"kernelSpec\":null, \"description\":null, \"image\":\"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\":{ \"Ps\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{ \"memory\":\"1024M\", \"cpu\":\"1\" } }, \"Worker\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{ \"memory\":\"1024M\", \"cpu\":\"1\" } } }, \"code\":null } } }, \"attributes\":{} } Copy "},{"title":"List Experiment Template","type":1,"pageTitle":"Experiment Template REST API","url":"docs/userDocs/api/experiment-template#list-experiment-template","content":"GET /api/v1/template Copy "},{"title":"Code Example","type":1,"pageTitle":"Experiment Template REST API","url":"docs/userDocs/api/experiment-template#code-example-1","content":"shell curl -X GET http://127.0.0.1:32080/api/v1/template Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ [{ \"experimentTemplateId\":{ \"id\":1, \"serverTimestamp\":1626160071451 }, \"experimentTemplateSpec\":{ \"name\":\"my-tf-mnist-template\", \"author\":\"author\", \"description\":\"This is a template to run tf-mnist\", \"parameters\": [{ \"name\":\"learning_rate\", \"required\":\"true\", \"description\":\"This is learning_rate of training.\", \"value\":\"0.1\" }, { \"name\":\"batch_size\", \"required\":\"true\", \"description\":\"This is batch_size of training.\", \"value\":\"150\" }, { \"name\":\"experiment_name\", \"required\":\"true\", \"description\":\"the name of experiment.\", \"value\":\"tf-mnist1\" }, { \"name\":\"spec.Ps.replicas\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Ps.resourceMap.cpu\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Ps.resourceMap.memory\", \"required\":\"false\", \"description\":\"\", \"value\":\"1024M\" }, { \"name\":\"spec.Worker.replicas\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Worker.resourceMap.cpu\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Worker.resourceMap.memory\", \"required\":\"false\", \"description\":\"\",\" value\":\"1024M\" }], \"experimentSpec\":{ \"meta\":{ \"name\":\"{{experiment_name}}\", \"namespace\":\"default\", \"framework\":\"TensorFlow\", \"cmd\":\"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d{{learning_rate}} --batch_size\\u003d{{batch_size}}\", \"envVars\":{\"ENV1\":\"ENV1\"} }, \"environment\":{ \"name\":null, \"dockerImage\":null, \"kernelSpec\":null, \"description\":null, \"image\":\"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\":{ \"Ps\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{ \"memory\":\"1024M\", \"cpu\":\"1\" } }, \"Worker\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{ \"memory\":\"1024M\", \"cpu\":\"1\" } } }, \"code\":null } } }], \"attributes\":{} } Copy "},{"title":"Patch Experiment Template","type":1,"pageTitle":"Experiment Template REST API","url":"docs/userDocs/api/experiment-template#patch-experiment-template","content":"PATCH /api/v1/template{name} Copy "},{"title":"Parameters","type":1,"pageTitle":"Experiment Template REST API","url":"docs/userDocs/api/experiment-template#parameters-1","content":"Field Name\tType\tIn\tDescriptionname\tString\tpath and body\tExperiment template name. This is required. author\tString\tbody\tAuthor name. description\tString\tbody\tDescription of the experiment template. parameters\tList<ExperimentTemplateParamSpec>\tbody\tParameters of the experiment template. experimentSpec\tExperimentSpec\tbody\tSpec of the experiment template. "},{"title":"Code Example","type":1,"pageTitle":"Experiment Template REST API","url":"docs/userDocs/api/experiment-template#code-example-2","content":"shell curl -X PATCH -H \"Content-Type: application/json\" -d ' { \"name\": \"my-tf-mnist-template\", \"author\": \"author-new\", \"description\": \"This is a template to run tf-mnist\", \"parameters\": [{ \"name\": \"learning_rate\", \"value\": 0.1, \"required\": true, \"description\": \"This is learning_rate of training.\" }, { \"name\": \"batch_size\", \"value\": 150, \"required\": true, \"description\": \"This is batch_size of training.\" }, { \"name\": \"experiment_name\", \"value\": \"tf-mnist1\", \"required\": true, \"description\": \"the name of experiment.\" } ], \"experimentSpec\": { \"meta\": { \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate={{learning_rate}} --batch_size={{batch_size}}\", \"name\": \"{{experiment_name}}\", \"envVars\": { \"ENV1\": \"ENV1\" }, \"framework\": \"TensorFlow\", \"namespace\": \"default\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" } } } ' http://127.0.0.1:32080/api/v1/template/my-tf-mnist-template Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ \"experimentTemplateId\":{ \"id\":2, \"serverTimestamp\":1626160071451 }, \"experimentTemplateSpec\":{ \"name\":\"my-tf-mnist-template\", \"author\":\"author-new\", \"description\":\"This is a template to run tf-mnist\", \"parameters\": [{ \"name\":\"learning_rate\", \"required\":\"true\", \"description\":\"This is learning_rate of training.\", \"value\":\"0.1\" }, { \"name\":\"batch_size\", \"required\":\"true\", \"description\":\"This is batch_size of training.\", \"value\":\"150\" }, { \"name\":\"experiment_name\", \"required\":\"true\", \"description\":\"the name of experiment.\", \"value\":\"tf-mnist1\" }, { \"name\":\"spec.Ps.replicas\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Ps.resourceMap.cpu\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Ps.resourceMap.memory\", \"required\":\"false\", \"description\":\"\", \"value\":\"1024M\" }, { \"name\":\"spec.Worker.replicas\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Worker.resourceMap.cpu\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Worker.resourceMap.memory\", \"required\":\"false\", \"description\":\"\", \"value\":\"1024M\" }], \"experimentSpec\":{ \"meta\":{ \"name\":\"{{experiment_name}}\", \"namespace\":\"default\", \"framework\":\"TensorFlow\", \"cmd\":\"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d{{learning_rate}} --batch_size\\u003d{{batch_size}}\", \"envVars\":{\"ENV1\":\"ENV1\"} }, \"environment\":{ \"name\":null, \"dockerImage\":null, \"kernelSpec\":null, \"description\":null, \"image\":\"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\":{ \"Ps\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"1024M\",\"cpu\":\"1\"} }, \"Worker\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"1024M\",\"cpu\":\"1\"} } }, \"code\":null } } }, \"attributes\":{} } Copy "},{"title":"Delete Experiment Template","type":1,"pageTitle":"Experiment Template REST API","url":"docs/userDocs/api/experiment-template#delete-experiment-template","content":"DELETE /api/v1/template{name} Copy "},{"title":"Parameters","type":1,"pageTitle":"Experiment Template REST API","url":"docs/userDocs/api/experiment-template#parameters-2","content":"Field Name\tType\tIn\tDescriptionname\tString\tpath\tExperiment template name. This is required. "},{"title":"Code Example","type":1,"pageTitle":"Experiment Template REST API","url":"docs/userDocs/api/experiment-template#code-example-3","content":"shell curl -X DELETE http://127.0.0.1:32080/api/v1/template/my-tf-mnist-template Copy reponse { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ \"experimentTemplateId\":{ \"id\":2, \"serverTimestamp\":1626160071451 }, \"experimentTemplateSpec\":{ \"name\":\"my-tf-mnist-template\", \"author\":\"author-new\", \"description\":\"This is a template to run tf-mnist\", \"parameters\": [{ \"name\":\"learning_rate\", \"required\":\"true\", \"description\":\"This is learning_rate of training.\", \"value\":\"0.1\" }, { \"name\":\"batch_size\", \"required\":\"true\", \"description\":\"This is batch_size of training.\", \"value\":\"150\" }, { \"name\":\"experiment_name\", \"required\":\"true\", \"description\":\"the name of experiment.\", \"value\":\"tf-mnist1\" }, { \"name\":\"spec.Ps.replicas\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Ps.resourceMap.cpu\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Ps.resourceMap.memory\", \"required\":\"false\", \"description\":\"\", \"value\":\"1024M\" }, { \"name\":\"spec.Worker.replicas\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Worker.resourceMap.cpu\", \"required\":\"false\", \"description\":\"\", \"value\":\"1\" }, { \"name\":\"spec.Worker.resourceMap.memory\", \"required\":\"false\", \"description\":\"\", \"value\":\"1024M\" }], \"experimentSpec\":{ \"meta\":{ \"name\":\"{{experiment_name}}\", \"namespace\":\"default\", \"framework\":\"TensorFlow\", \"cmd\":\"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d{{learning_rate}} --batch_size\\u003d{{batch_size}}\", \"envVars\":{\"ENV1\":\"ENV1\"} }, \"environment\":{ \"name\":null, \"dockerImage\":null, \"kernelSpec\":null, \"description\":null, \"image\":\"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\":{ \"Ps\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"1024M\",\"cpu\":\"1\"} }, \"Worker\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"1024M\",\"cpu\":\"1\"} } }, \"code\":null } } }, \"attributes\":{} } Copy "},{"title":"Use Template to Create a Experiment","type":1,"pageTitle":"Experiment Template REST API","url":"docs/userDocs/api/experiment-template#use-template-to-create-a-experiment","content":"POST /api/v1/experiment/{template_name} Copy "},{"title":"Parameters","type":1,"pageTitle":"Experiment Template REST API","url":"docs/userDocs/api/experiment-template#parameters-3","content":"Field Name\tType\tIn\tDescriptiontemplate_name\tString\tpath\tExperiment template name. name\tString\tbody\tExperiment template name. params\tMap<String, String>\tbody\tParameters of the experiment including experiment_name. "},{"title":"Code Example","type":1,"pageTitle":"Experiment Template REST API","url":"docs/userDocs/api/experiment-template#code-example-4","content":"shell curl -X POST -H \"Content-Type: application/json\" -d ' { \"name\": \"tf-mnist\", \"params\": { \"learning_rate\":\"0.01\", \"batch_size\":\"150\", \"experiment_name\":\"newexperiment1\" } } ' http://127.0.0.1:32080/api/v1/experiment/my-tf-mnist-template Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":null, \"result\":{ \"experimentId\":\"experiment_1626160071451_0001\", \"name\":\"newexperiment1\", \"uid\":\"b895985c-411c-4e89-90e0-c60a2a8a4235\", \"status\":\"Accepted\", \"acceptedTime\":\"2021-07-13T16:21:31.000+08:00\", \"createdTime\":null, \"runningTime\":null, \"finishedTime\":null, \"spec\":{ \"meta\":{ \"name\":\"newexperiment1\", \"namespace\":\"default\", \"framework\":\"TensorFlow\", \"cmd\":\"python /var/tf_mnist/mnist_with_summaries.py --log_dir\\u003d/train/log --learning_rate\\u003d0.01 --batch_size\\u003d150\", \"envVars\":{\"ENV1\":\"ENV1\"} }, \"environment\":{ \"name\":null, \"dockerImage\":null, \"kernelSpec\":null, \"description\":null, \"image\":\"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\":{ \"Ps\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"1024M\",\"cpu\":\"1\"} }, \"Worker\":{ \"replicas\":1, \"resources\":\"cpu\\u003d1,memory\\u003d1024M\", \"name\":null, \"image\":null, \"cmd\":null, \"envVars\":null, \"resourceMap\":{\"memory\":\"1024M\",\"cpu\":\"1\"} } }, \"code\":null } }, \"attributes\":{} } Copy "},{"title":"Notebook REST API","type":0,"sectionRef":"#","url":"docs/userDocs/api/notebook","content":"","keywords":""},{"title":"Create a Notebook Instance","type":1,"pageTitle":"Notebook REST API","url":"docs/userDocs/api/notebook#create-a-notebook-instance","content":"POST /api/v1/notebook Copy "},{"title":"Parameters","type":1,"pageTitle":"Notebook REST API","url":"docs/userDocs/api/notebook#parameters","content":"NotebookSpec in request body. NotebookSpec# Field Name\tType\tDescriptionmeta\tNotebookMeta\tMeta data of the notebook. environment\tEnvironmentSpec\tEnvironment of the experiment template. spec\tNotebookPodSpec\tSpec of the notebook pods. NotebookMeta# Field Name\tType\tDescriptionname\tString\tNotebook name. namespace\tString\tNotebook namespace. ownerId\tString\tUser id. EnvironmentSpec# See more details in environment api. NotebookPodSpec# Field Name\tType\tDescriptionenvVars\tMap<String, String>\tEnvironmental variables. resources\tString\tResourecs of the pod. "},{"title":"Code Example","type":1,"pageTitle":"Notebook REST API","url":"docs/userDocs/api/notebook#code-example","content":"shell curl -X POST -H \"Content-Type: application/json\" -d ' { \"meta\": { \"name\": \"test-nb\", \"namespace\": \"default\", \"ownerId\": \"e9ca23d68d884d4ebb19d07889727dae\" }, \"environment\": { \"name\": \"notebook-env\" }, \"spec\": { \"envVars\": { \"TEST_ENV\": \"test\" }, \"resources\": \"cpu=1,memory=1.0Gi\" } } ' http://127.0.0.1:32080/api/v1/notebook Copy response: { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":\"Create a notebook instance\", \"result\":{ \"notebookId\":\"notebook_1626160071451_0001\", \"name\":\"test-nb\", \"uid\":\"a56713da-f2a3-40d0-ae2e-45fdc0bb15f5\", \"url\":\"/notebook/default/test-nb/lab\", \"status\":\"creating\", \"reason\":\"The notebook instance is creating\", \"createdTime\":\"2021-07-13T16:23:38.000+08:00\", \"deletedTime\":null, \"spec\":{ \"meta\":{ \"name\":\"test-nb\", \"namespace\":\"default\", \"ownerId\":\"e9ca23d68d884d4ebb19d07889727dae\" }, \"environment\":{ \"name\":\"notebook-env\", \"dockerImage\":\"apache/submarine:jupyter-notebook-0.7.0-SNAPSHOT\", \"kernelSpec\":{ \"name\":\"submarine_jupyter_py3\", \"channels\":[\"defaults\"], \"condaDependencies\":[], \"pipDependencies\":[] }, \"description\":null, \"image\":null }, \"spec\":{ \"envVars\":{\"TEST_ENV\":\"test\"}, \"resources\":\"cpu\\u003d1,memory\\u003d1.0Gi\" } } }, \"attributes\":{} } Copy "},{"title":"List notebook instances which belong to user","type":1,"pageTitle":"Notebook REST API","url":"docs/userDocs/api/notebook#list-notebook-instances-which-belong-to-user","content":"GET /api/v1/notebook Copy "},{"title":"Parameters","type":1,"pageTitle":"Notebook REST API","url":"docs/userDocs/api/notebook#parameters-1","content":"Field Name\tType\tIn\tDescriptionid\tString\tquery\tUser id. "},{"title":"Code Example","type":1,"pageTitle":"Notebook REST API","url":"docs/userDocs/api/notebook#code-example-1","content":"shell curl -X GET http://127.0.0.1:32080/api/v1/notebook?id=e9ca23d68d884d4ebb19d07889727dae Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":\"List all notebook instances\", \"result\": [{ \"notebookId\":\"notebook_1626160071451_0001\", \"name\":\"test-nb\", \"uid\":\"a56713da-f2a3-40d0-ae2e-45fdc0bb15f5\", \"url\":\"/notebook/default/test-nb/lab\", \"status\":\"waiting\", \"reason\":\"ContainerCreating\", \"createdTime\":\"2021-07-13T16:23:38.000+08:00\", \"deletedTime\":null, \"spec\":{ \"meta\":{ \"name\":\"test-nb\", \"namespace\":\"default\", \"ownerId\":\"e9ca23d68d884d4ebb19d07889727dae\" }, \"environment\":{ \"name\":\"notebook-env\", \"dockerImage\":\"apache/submarine:jupyter-notebook-0.7.0-SNAPSHOT\", \"kernelSpec\":{ \"name\":\"submarine_jupyter_py3\", \"channels\":[\"defaults\"], \"condaDependencies\":[], \"pipDependencies\":[] }, \"description\":null, \"image\":null }, \"spec\":{ \"envVars\":{\"TEST_ENV\":\"test\"}, \"resources\":\"cpu\\u003d1,memory\\u003d1.0Gi\" } } }], \"attributes\":{} } Copy "},{"title":"Get the notebook instance","type":1,"pageTitle":"Notebook REST API","url":"docs/userDocs/api/notebook#get-the-notebook-instance","content":"GET /api/v1/notebook/{id} Copy "},{"title":"Parameters","type":1,"pageTitle":"Notebook REST API","url":"docs/userDocs/api/notebook#parameters-2","content":"Field Name\tType\tIn\tDescriptionid\tString\tpath\tNotebook id. "},{"title":"Code Example","type":1,"pageTitle":"Notebook REST API","url":"docs/userDocs/api/notebook#code-example-2","content":"shell curl -X GET http://127.0.0.1:32080/api/v1/notebook/notebook_1626160071451_0001 Copy response { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":\"Get the notebook instance\", \"result\":{ \"notebookId\":\"notebook_1626160071451_0001\", \"name\":\"test-nb\", \"uid\":\"a56713da-f2a3-40d0-ae2e-45fdc0bb15f5\", \"url\":\"/notebook/default/test-nb/lab\", \"status\":\"waiting\", \"reason\":\"ContainerCreating\", \"createdTime\":\"2021-07-13T16:23:38.000+08:00\", \"deletedTime\":null, \"spec\":{ \"meta\":{ \"name\":\"test-nb\", \"namespace\":\"default\", \"ownerId\":\"e9ca23d68d884d4ebb19d07889727dae\" }, \"environment\":{ \"name\":\"notebook-env\", \"dockerImage\":\"apache/submarine:jupyter-notebook-0.7.0-SNAPSHOT\", \"kernelSpec\":{ \"name\":\"submarine_jupyter_py3\", \"channels\":[\"defaults\"], \"condaDependencies\":[], \"pipDependencies\":[] }, \"description\":null, \"image\":null }, \"spec\":{ \"envVars\":{\"TEST_ENV\":\"test\"}, \"resources\":\"cpu\\u003d1,memory\\u003d1.0Gi\" } } }, \"attributes\":{} } Copy "},{"title":"Delete the notebook instance","type":1,"pageTitle":"Notebook REST API","url":"docs/userDocs/api/notebook#delete-the-notebook-instance","content":"DELETE /api/v1/notebook/{id} Copy "},{"title":"Parameters","type":1,"pageTitle":"Notebook REST API","url":"docs/userDocs/api/notebook#parameters-3","content":"Field Name\tType\tIn\tDescriptionid\tString\tpath\tNotebook id. "},{"title":"Code Example","type":1,"pageTitle":"Notebook REST API","url":"docs/userDocs/api/notebook#code-example-3","content":"shell curl -X DELETE http://127.0.0.1:32080/api/v1/notebook/notebook_1626160071451_0001 Copy response: { \"status\":\"OK\", \"code\":200, \"success\":true, \"message\":\"Delete the notebook instance\", \"result\":{ \"notebookId\":\"notebook_1626160071451_0001\", \"name\":\"test-nb\", \"uid\":\"a56713da-f2a3-40d0-ae2e-45fdc0bb15f5\", \"url\":\"/notebook/default/test-nb/lab\", \"status\":\"terminating\", \"reason\":\"The notebook instance is terminating\", \"createdTime\":\"2021-07-13T16:23:38.000+08:00\", \"deletedTime\":null, \"spec\":{ \"meta\":{ \"name\":\"test-nb\", \"namespace\":\"default\", \"ownerId\":\"e9ca23d68d884d4ebb19d07889727dae\" }, \"environment\":{ \"name\":\"notebook-env\", \"dockerImage\":\"apache/submarine:jupyter-notebook-0.7.0-SNAPSHOT\", \"kernelSpec\":{ \"name\":\"submarine_jupyter_py3\", \"channels\":[\"defaults\"], \"condaDependencies\":[], \"pipDependencies\":[] }, \"description\":null, \"image\":null }, \"spec\":{ \"envVars\":{\"TEST_ENV\":\"test\"}, \"resources\":\"cpu\\u003d1,memory\\u003d1.0Gi\" } } }, \"attributes\":{} } Copy "},{"title":"MLflow UI","type":0,"sectionRef":"#","url":"docs/userDocs/others/mlflow","content":"","keywords":""},{"title":"Usage","type":1,"pageTitle":"MLflow UI","url":"docs/userDocs/others/mlflow#usage","content":"MLflow UI shows the tracking result of the experiments. When we use the log_param or log_metric in ModelClient API, we could view the result in MLflow UI. Below is the example of the usage of MLflow UI. "},{"title":"Example","type":1,"pageTitle":"MLflow UI","url":"docs/userDocs/others/mlflow#example","content":"Run the following code in the cluster from submarine import ModelsClient import random import time if __name__ == \"__main__\": modelClient = ModelsClient() with modelClient.start() as run: modelClient.log_param(\"learning_rate\", random.random()) for i in range(100): time.sleep(1) modelClient.log_metric(\"mse\", random.random() * 100, i) modelClient.log_metric(\"acc\", random.random(), i) Copy In the MLflow UI page, you can see the log_param and the log_metric result. You can also compare the training between different workers.  "},{"title":"Tensorboard","type":0,"sectionRef":"#","url":"docs/userDocs/others/tensorboard","content":"","keywords":""},{"title":"Write to LogDirs by the environment variable","type":1,"pageTitle":"Tensorboard","url":"docs/userDocs/others/tensorboard#write-to-logdirs-by-the-environment-variable","content":""},{"title":"Environment variable","type":1,"pageTitle":"Tensorboard","url":"docs/userDocs/others/tensorboard#environment-variable","content":"SUBMARINE_TENSORBOARD_LOG_DIR: Exist in every experiment container. You just need to direct your logs to $(SUBMARINE_TENSORBOARD_LOG_DIR) (NOTICE: it is () not {}), and you can inspect the process on the tensorboard webpage. "},{"title":"Example","type":1,"pageTitle":"Tensorboard","url":"docs/userDocs/others/tensorboard#example","content":"{ \"meta\": { \"name\": \"tensorflow-tensorboard-dist-mnist\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=$(SUBMARINE_TENSORBOARD_LOG_DIR) --learning_rate=0.01 --batch_size=20\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\": { \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=512M\" } } } Copy "},{"title":"Connect to the tensorboard webpage","type":1,"pageTitle":"Tensorboard","url":"docs/userDocs/others/tensorboard#connect-to-the-tensorboard-webpage","content":"Open the experiment page in the workbench, and Click the TensorBoard button.  Inspect the process on tensorboard page.  "},{"title":"Experiment Client","type":0,"sectionRef":"#","url":"docs/userDocs/submarine-sdk/experiment-client","content":"","keywords":""},{"title":"class ExperimentClient()","type":1,"pageTitle":"Experiment Client","url":"docs/userDocs/submarine-sdk/experiment-client#class-experimentclient","content":"Client of a submarine server that creates and manages experients and logs. "},{"title":"create_experiment(experiment_spec: json) -> dict","type":1,"pageTitle":"Experiment Client","url":"docs/userDocs/submarine-sdk/experiment-client#create_experimentexperiment_spec-json---dict","content":"Create an experiment. Parameters experiment_spec: Submarine experiment spec. More detailed information can be found at Experiment API. Returns: The detailed info about the submarine experiment. Example from submarine import * client = ExperimentClient() client.create_experiment({ \"meta\": { \"name\": \"tf-mnist-json\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\": { \"Ps\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" }, \"Worker\": { \"replicas\": 1, \"resources\": \"cpu=1,memory=1024M\" } } }) Copy "},{"title":"patch_experiment(id: str, experiment_spec: json) -> dict","type":1,"pageTitle":"Experiment Client","url":"docs/userDocs/submarine-sdk/experiment-client#patch_experimentid-str-experiment_spec-json---dict","content":"Patch an experiment. Parameters id: Submarine experiment id. experiment_spec: Submarine experiment spec. More detailed information can be found at Experiment API. Returns The detailed info about the submarine experiment. Example client.patch_experiment(\"experiment_1626160071451_0008\", { \"meta\": { \"name\": \"tf-mnist-json\", \"namespace\": \"default\", \"framework\": \"TensorFlow\", \"cmd\": \"python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150\", \"envVars\": { \"ENV_1\": \"ENV1\" } }, \"environment\": { \"image\": \"apache/submarine:tf-mnist-with-summaries-1.0\" }, \"spec\": { \"Worker\": { \"replicas\": 2, \"resources\": \"cpu=1,memory=1024M\" } } }) Copy "},{"title":"get_experiment(id: str) -> dict","type":1,"pageTitle":"Experiment Client","url":"docs/userDocs/submarine-sdk/experiment-client#get_experimentid-str---dict","content":"Get the experiment's detailed info by id. Parameters id: Submarine experiment id. Returns The detailed info about the submarine experiment. Example experiment = client.get_experiment(\"experiment_1626160071451_0008\") Copy "},{"title":"list_experiments(status: Optional[str]=None) -> list[dict]","type":1,"pageTitle":"Experiment Client","url":"docs/userDocs/submarine-sdk/experiment-client#list_experimentsstatus-optionalstrnone---listdict","content":"List all experiment for the user. Parameters status: Accepted, Created, Running, Succeeded, Deleted. Returns List of submarine experiments. Example experiments = client.list_experiments() Copy "},{"title":"delete_experiment(id: str) -> dict","type":1,"pageTitle":"Experiment Client","url":"docs/userDocs/submarine-sdk/experiment-client#delete_experimentid-str---dict","content":"Delete the submarine experiment. Parameters id: Submarine experiment id. Returns The detailed info about the deleted submarine experiment. Example client.delete_experiment(\"experiment_1626160071451_0008\") Copy "},{"title":"get_log(id: str, onlyMaster: Optional[bool]=False) -> None","type":1,"pageTitle":"Experiment Client","url":"docs/userDocs/submarine-sdk/experiment-client#get_logid-str-onlymaster-optionalboolfalse---none","content":"Print training logs of all pod of the experiment. By default print all the logs of Pod. Parameters id: Submarine experiment id.onlyMaster: By default include pod log of \"master\" which might be Tensorflow PS/Chief or PyTorch master. Return The info of pod logs Example client.get_log(\"experiment_1626160071451_0009\") Copy "},{"title":"list_log(status: str) -> list[dict]","type":1,"pageTitle":"Experiment Client","url":"docs/userDocs/submarine-sdk/experiment-client#list_logstatus-str---listdict","content":"List experiment log. Parameters status: Accepted, Created, Running, Succeeded, Deleted. Returns List of submarine experiment logs. Example logs = client.list_log(\"Succeeded\") Copy "},{"title":"wait_for_finish(id: str, polling_interval: Optional[int]=10) -> dict","type":1,"pageTitle":"Experiment Client","url":"docs/userDocs/submarine-sdk/experiment-client#wait_for_finishid-str-polling_interval-optionalint10---dict","content":"Waits until the experiment is finished or failed. Parameters id: Submarine experiment id.polling_interval: How many seconds between two polls for the status of the experiment. Returns Submarine experiment logs. Example logs = client.wait_for_finish(\"experiment_1626160071451_0009\", 5) Copy "},{"title":"Model Client","type":0,"sectionRef":"#","url":"docs/userDocs/submarine-sdk/model-client","content":"","keywords":""},{"title":"class ModelClient()","type":1,"pageTitle":"Model Client","url":"docs/userDocs/submarine-sdk/model-client#class-modelclient","content":"The submarine ModelsClient provides a high-level API for logging metrics / parameters and managing models. "},{"title":"ModelsClient(tracking_uri=None, registry_uri=None)->ModelsClient","type":1,"pageTitle":"Model Client","url":"docs/userDocs/submarine-sdk/model-client#modelsclienttracking_urinone-registry_urinone-modelsclient","content":"Initialize a ModelsClient instance. Parameters tracking_uri: If run in Submarine, you do not need to specify it. Otherwise, specify the external tracking_uri.registry_uri: If run in Submarine, you do not need to specify it. Otherwise, specify the external registry_uri. Returns ModelsClient instance Example from submarine import ModelsClient modelClient = ModelsClient(tracking_uri=\"0.0.0.0:4000\", registry_uri=\"0.0.0.0:5000\") Copy "},{"title":"ModelsClient.start()->[Active Run]","type":1,"pageTitle":"Model Client","url":"docs/userDocs/submarine-sdk/model-client#modelsclientstart-active-run","content":"For details of Active Run Start a new Mlflow run, and direct the logging of the artifacts and metadata to the Run named \"worker_i\" under Experiment \"job_id\". If in distributed training, worker and job id would be parsed from environment variable. If in local traning, worker and job id will be generated. Returns Active Run "},{"title":"ModelsClient.log_param(key, value)->None","type":1,"pageTitle":"Model Client","url":"docs/userDocs/submarine-sdk/model-client#modelsclientlog_paramkey-value-none","content":"Log parameter under the current run. Parameters key – Parameter namevalue – Parameter value Example from submarine import ModelsClient modelClient = ModelsClient() with modelClient.start() as run: modelClient.log_param(\"learning_rate\", 0.01) Copy "},{"title":"ModelsClient.log_params(params)->None","type":1,"pageTitle":"Model Client","url":"docs/userDocs/submarine-sdk/model-client#modelsclientlog_paramsparams-none","content":"Log a batch of params for the current run. Parameters params – Dictionary of param_name: String -> value Example from submarine import ModelsClient params = {\"learning_rate\": 0.01, \"n_estimators\": 10} modelClient = ModelsClient() with modelClient.start() as run: modelClient.log_params(params) Copy "},{"title":"ModelsClient.log_metric(self, key, value, step=None)->None","type":1,"pageTitle":"Model Client","url":"docs/userDocs/submarine-sdk/model-client#modelsclientlog_metricself-key-value-stepnone-none","content":"Log a metric under the current run. Parameters key – Metric name (string).value – Metric value (float).step – Metric step (int). Defaults to zero if unspecified. Example from submarine import ModelsClient modelClient = ModelsClient() with modelClient.start() as run: modelClient.log_metric(\"mse\", 2500.00) Copy "},{"title":"ModelsClient.log_metrics(self, metrics, step=None)->None","type":1,"pageTitle":"Model Client","url":"docs/userDocs/submarine-sdk/model-client#modelsclientlog_metricsself-metrics-stepnone-none","content":"Log multiple metrics for the current run. Parameters metrics – Dictionary of metric_name: String -> value: Float.step – A single integer step at which to log the specified Metrics. If unspecified, each metric is logged at step zero. Example from submarine import ModelsClient metrics = {\"mse\": 2500.00, \"rmse\": 50.00} modelClient = ModelsClient() with modelClient.start() as run: modelClient.log_metrics(metrics) Copy "},{"title":"(Beta) ModelsClient.save_model(self, model_type, model, artifact_path, registered_model_name=None)","type":1,"pageTitle":"Model Client","url":"docs/userDocs/submarine-sdk/model-client#beta-modelsclientsave_modelself-model_type-model-artifact_path-registered_model_namenone","content":"Save model to model registry. "},{"title":"(Beta) ModelsClient.load_model(self, name, version)->mlflow.pyfunc.PyFuncModel","type":1,"pageTitle":"Model Client","url":"docs/userDocs/submarine-sdk/model-client#beta-modelsclientload_modelself-name-version-mlflowpyfuncpyfuncmodel","content":"Load a model from model registry. "},{"title":"(Beta) ModelsClient.update_model(self, name, new_name)->None","type":1,"pageTitle":"Model Client","url":"docs/userDocs/submarine-sdk/model-client#beta-modelsclientupdate_modelself-name-new_name-none","content":"Update a model by new name. "},{"title":"(Beta) ModelsClient.delete_model(self, name, version)->None","type":1,"pageTitle":"Model Client","url":"docs/userDocs/submarine-sdk/model-client#beta-modelsclientdelete_modelself-name-version-none","content":"Delete a model in model registry. "},{"title":"Python SDK Development","type":0,"sectionRef":"#","url":"docs/userDocs/submarine-sdk/pysubmarine/development","content":"","keywords":""},{"title":"Prerequisites","type":1,"pageTitle":"Python SDK Development","url":"docs/userDocs/submarine-sdk/pysubmarine/development#prerequisites","content":"This is required for developing & testing changes, we recommend installing pysubmarine in its own conda environment by running the following conda create --name submarine-dev python=3.6 conda activate submarine-dev # Install auto-format and lints (lint-requirements.txt is in ./dev-support/style-check/python) pip install -r lint-requirements.txt # Install mypy (mypy-requirements.txt is in ./dev-support/style-check/python) pip install -r mypy-requirements.txt # test-requirements.txt is in ./submarine-sdk/pysubmarine/github-actions pip install -r test-requirements.txt # Installs pysubmarine from current checkout pip install ./submarine-sdk/pysubmarine Copy "},{"title":"PySubmarine Docker","type":1,"pageTitle":"Python SDK Development","url":"docs/userDocs/submarine-sdk/pysubmarine/development#pysubmarine-docker","content":"We also use docker to provide build environments for CI, development, generate python sdk from swagger. ./run-pysubmarine-ci.sh Copy The script does the following things: Start an interactive bash sessionMount submarine directory to /workspace and set it as homeSwitch user to be the same user that calls the run-pysubmarine-ci.sh "},{"title":"Coding Style","type":1,"pageTitle":"Python SDK Development","url":"docs/userDocs/submarine-sdk/pysubmarine/development#coding-style","content":"Use isort to sort the Python imports and black to format Python codeBoth style is configured in pyproject.tomlTo autoformat code ./dev-support/style-check/python/auto-format.sh Copy Use flake8 to verify the linter, its' configure is in .flake8.Also, we are using mypy to check the static type in submarine-sdk/pysubmarine/submarine.Verify linter pass before submitting a pull request by running: ./dev-support/style-check/python/lint.sh Copy If you encouter a unexpected format, use the following method # fmt: off \"Unexpected format, formated by yourself\" # fmt: on Copy "},{"title":"Unit Testing","type":1,"pageTitle":"Python SDK Development","url":"docs/userDocs/submarine-sdk/pysubmarine/development#unit-testing","content":"We are using pytest to develop our unit test suite. After building the project (see below) you can run its unit tests like so: cd submarine-sdk/pysubmarine Copy Run unit test pytest --cov=submarine -vs -m \"not e2e\" Copy Run integration test pytest --cov=submarine -vs -m \"e2e\" Copy Before run this command in local, you should make sure the submarine server is running. "},{"title":"Generate python SDK from swagger","type":1,"pageTitle":"Python SDK Development","url":"docs/userDocs/submarine-sdk/pysubmarine/development#generate-python-sdk-from-swagger","content":"We use open-api generatorto generate pysubmarine client API that used to communicate with submarine server. If change below files, please run ./dev-support/pysubmarine/gen-sdk.shto generate latest version of SDK. Bootstrap.javaExperimentRestApi.java "},{"title":"Model Management Model Development","type":1,"pageTitle":"Python SDK Development","url":"docs/userDocs/submarine-sdk/pysubmarine/development#model-management-model-development","content":"For local development, we can access cluster's service easily thanks to telepresence. To elaborate, we can develop the sdk in local but can reach out to mlflow server by proxy. Install telepresence follow the instruction.Start proxy pod telepresence --new-deployment submarine-dev Copy You can develop as if in the cluster. "},{"title":"Upload package to PyPi","type":1,"pageTitle":"Python SDK Development","url":"docs/userDocs/submarine-sdk/pysubmarine/development#upload-package-to-pypi","content":"For Apache Submarine committer and PMCs to do a new release. Change the version from 0.x.x-SNAPSHOT to 0.x.x in setup.pyInstall Python packages cd submarine-sdk/pysubmarine pip install -r github-actions/pypi-requirements.txt Copy Compiling Your Package It will create build, dist, and project.egg.infoin your local directory python setup.py bdist_wheel Copy Upload python package to TestPyPI for testing python -m twine upload --repository testpypi dist/* Copy Upload python package to PyPi python -m twine upload --repository-url https://upload.pypi.org/legacy/ dist/* Copy "},{"title":"Submarine-SDK","type":0,"sectionRef":"#","url":"docs/userDocs/submarine-sdk/README","content":"","keywords":""},{"title":"Summary","type":1,"pageTitle":"Submarine-SDK","url":"docs/userDocs/submarine-sdk/README#summary","content":"Support Python, Scala, R language for algorithm development Support tracking/metrics APIs which allows developers add tracking/metrics and view tracking/metrics from Submarine Workbench UI. "},{"title":"Tracking","type":0,"sectionRef":"#","url":"docs/userDocs/submarine-sdk/tracking","content":"","keywords":""},{"title":"Functions","type":1,"pageTitle":"Tracking","url":"docs/userDocs/submarine-sdk/tracking#functions","content":""},{"title":"submarine.get_tracking_uri() -> str","type":1,"pageTitle":"Tracking","url":"docs/userDocs/submarine-sdk/tracking#submarineget_tracking_uri---str","content":"Get the tracking URI. If none has been specified, check the environmental variables. If uri is still none, return the default submarine jdbc url. Returns The tracking URI. "},{"title":"submarine.set_tracking_uri(uri: str) -> None","type":1,"pageTitle":"Tracking","url":"docs/userDocs/submarine-sdk/tracking#submarineset_tracking_uriuri-str---none","content":"set the tracking URI. You can also set the SUBMARINE_TRACKING_URI environment variable to have Submarine find a URI from there. The URI should be database connection string. Parameters uri - Submarine record data to Mysql server. The database URL is expected in the format <dialect>+<driver>://<username>:<password>@<host>:<port>/<database>. By default it's mysql+pymysql://submarine:password@submarine-database:3306/submarine. More detail : SQLAlchemy docs "},{"title":"submarine.log_param(key: str, value: str) -> None","type":1,"pageTitle":"Tracking","url":"docs/userDocs/submarine-sdk/tracking#submarinelog_paramkey-str-value-str---none","content":"log a single key-value parameter. The key and value are both strings. Parameters key - Parameter name.value - Parameter value. "},{"title":"submarine.log_metric(key: str, value: float, step=0) -> None","type":1,"pageTitle":"Tracking","url":"docs/userDocs/submarine-sdk/tracking#submarinelog_metrickey-str-value-float-step0---none","content":"log a single key-value metric. The value must always be a number. Parameters key - Metric name.value - Metric value.step - A single integer step at which to log the specified Metrics, by default it's 0. "},{"title":"Building Submarine Spark Security Plugin","type":0,"sectionRef":"#","url":"docs/userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin","content":"Submarine Spark Security Plugin is built using Apache Maven. To build it, cd to the root direct of submarine project and run: mvn clean package -Dmaven.javadoc.skip=true -DskipTests -pl :submarine-spark-security Copy By default, Submarine Spark Security Plugin is built against Apache Spark 2.3.x and Apache Ranger 1.1.0, which may be incompatible with other Apache Spark or Apache Ranger releases. Currently, available profiles are: Spark: -Pspark-2.3, -Pspark-2.4, -Pspark-3.0 Ranger: -Pranger-1.2, -Pranger-2.0","keywords":""},{"title":"Submarine Spark Security Plugin","type":0,"sectionRef":"#","url":"docs/userDocs/submarine-security/spark-security/README","content":"","keywords":""},{"title":"Build","type":1,"pageTitle":"Submarine Spark Security Plugin","url":"docs/userDocs/submarine-security/spark-security/README#build","content":"Please refer to the online documentation - Building submarine spark security plguin "},{"title":"Quick Start","type":1,"pageTitle":"Submarine Spark Security Plugin","url":"docs/userDocs/submarine-security/spark-security/README#quick-start","content":"Three steps to integrate Apache Spark and Apache Ranger. "},{"title":"Installation","type":1,"pageTitle":"Submarine Spark Security Plugin","url":"docs/userDocs/submarine-security/spark-security/README#installation","content":"Place the submarine-spark-security-<version>.jar into $SPARK_HOME/jars. "},{"title":"Configurations","type":1,"pageTitle":"Submarine Spark Security Plugin","url":"docs/userDocs/submarine-security/spark-security/README#configurations","content":"Settings for Apache Ranger# Create ranger-spark-security.xml in $SPARK_HOME/conf and add the following configurations for pointing to the right Apache Ranger admin server. <configuration> <property> <name>ranger.plugin.spark.policy.rest.url</name> <value>ranger admin address like http://ranger-admin.org:6080</value> </property> <property> <name>ranger.plugin.spark.service.name</name> <value>a ranger hive service name</value> </property> <property> <name>ranger.plugin.spark.policy.cache.dir</name> <value>./a ranger hive service name/policycache</value> </property> <property> <name>ranger.plugin.spark.policy.pollIntervalMs</name> <value>5000</value> </property> <property> <name>ranger.plugin.spark.policy.source.impl</name> <value>org.apache.ranger.admin.client.RangerAdminRESTClient</value> </property> </configuration> Copy Create ranger-spark-audit.xml in $SPARK_HOME/conf and add the following configurations to enable/disable auditing. <configuration> <property> <name>xasecure.audit.is.enabled</name> <value>true</value> </property> <property> <name>xasecure.audit.destination.db</name> <value>false</value> </property> <property> <name>xasecure.audit.destination.db.jdbc.driver</name> <value>com.mysql.jdbc.Driver</value> </property> <property> <name>xasecure.audit.destination.db.jdbc.url</name> <value>jdbc:mysql://10.171.161.78/ranger</value> </property> <property> <name>xasecure.audit.destination.db.password</name> <value>rangeradmin</value> </property> <property> <name>xasecure.audit.destination.db.user</name> <value>rangeradmin</value> </property> </configuration> Copy Settings for Apache Spark# You can configure spark.sql.extensions with the *Extension we provided. For example, spark.sql.extensions=org.apache.submarine.spark.security.api.RangerSparkAuthzExtension Currently, you can set the following options to spark.sql.extensions to choose authorization w/ or w/o extra functions. option\tauthorization\trow filtering\tdata maskingorg.apache.submarine.spark.security.api.RangerSparkAuthzExtension\t√\t×\t× org.apache.submarine.spark.security.api.RangerSparkSQLExtension\t√\t√\t√ "},{"title":"Write Dockerfiles for Submarine","type":0,"sectionRef":"#","url":"docs/userDocs/yarn/Dockerfiles","content":"How to write Dockerfile for Submarine TensorFlow jobs How to write Dockerfile for Submarine PyTorch jobs How to write Dockerfile for Submarine MXNet jobs","keywords":""},{"title":"Test and Troubleshooting","type":0,"sectionRef":"#","url":"docs/userDocs/yarn/TestAndTroubleshooting","content":"","keywords":""},{"title":"Test with a tensorflow job","type":1,"pageTitle":"Test and Troubleshooting","url":"docs/userDocs/yarn/TestAndTroubleshooting#test-with-a-tensorflow-job","content":"Distributed-shell + GPU + cgroup  ... \\ job run \\ --env DOCKER_JAVA_HOME=/opt/java \\ --env DOCKER_HADOOP_HDFS_HOME=/hadoop-current --name distributed-tf-gpu \\ --env YARN_CONTAINER_RUNTIME_DOCKER_CONTAINER_NETWORK=calico-network \\ --worker_docker_image tf-1.13.1-gpu:0.0.1 \\ --ps_docker_image tf-1.13.1-cpu:0.0.1 \\ --input_path hdfs://${dfs_name_service}/tmp/cifar-10-data \\ --checkpoint_path hdfs://${dfs_name_service}/user/hadoop/tf-distributed-checkpoint \\ --num_ps 0 \\ --ps_resources memory=4G,vcores=2,gpu=0 \\ --ps_launch_cmd \"python /test/cifar10_estimator/cifar10_main.py --data-dir=hdfs://${dfs_name_service}/tmp/cifar-10-data --job-dir=hdfs://${dfs_name_service}/tmp/cifar-10-jobdir --num-gpus=0\" \\ --worker_resources memory=4G,vcores=2,gpu=1 --verbose \\ --num_workers 1 \\ --worker_launch_cmd \"python /test/cifar10_estimator/cifar10_main.py --data-dir=hdfs://${dfs_name_service}/tmp/cifar-10-data --job-dir=hdfs://${dfs_name_service}/tmp/cifar-10-jobdir --train-steps=500 --eval-batch-size=16 --train-batch-size=16 --sync --num-gpus=1\" Copy "},{"title":"Issues:","type":1,"pageTitle":"Test and Troubleshooting","url":"docs/userDocs/yarn/TestAndTroubleshooting#issues","content":""},{"title":"Issue 1: Fail to start nodemanager after system reboot","type":1,"pageTitle":"Test and Troubleshooting","url":"docs/userDocs/yarn/TestAndTroubleshooting#issue-1-fail-to-start-nodemanager-after-system-reboot","content":"2018-09-20 18:54:39,785 ERROR org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor: Failed to bootstrap configured resource subsystems! org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.ResourceHandlerException: Unexpected: Cannot create yarn cgroup Subsystem:cpu Mount points:/proc/mounts User:yarn Path:/sys/fs/cgroup/cpu,cpuacct/hadoop-yarn at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsHandlerImpl.initializePreMountedCGroupController(CGroupsHandlerImpl.java:425) at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsHandlerImpl.initializeCGroupController(CGroupsHandlerImpl.java:377) at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsCpuResourceHandlerImpl.bootstrap(CGroupsCpuResourceHandlerImpl.java:98) at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsCpuResourceHandlerImpl.bootstrap(CGroupsCpuResourceHandlerImpl.java:87) at org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.ResourceHandlerChain.bootstrap(ResourceHandlerChain.java:58) at org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor.init(LinuxContainerExecutor.java:320) at org.apache.hadoop.yarn.server.nodemanager.NodeManager.serviceInit(NodeManager.java:389) at org.apache.hadoop.service.AbstractService.init(AbstractService.java:164) at org.apache.hadoop.yarn.server.nodemanager.NodeManager.initAndStartNodeManager(NodeManager.java:929) at org.apache.hadoop.yarn.server.nodemanager.NodeManager.main(NodeManager.java:997) 2018-09-20 18:54:39,789 INFO org.apache.hadoop.service.AbstractService: Service NodeManager failed in state INITED Copy Solution: Grant user yarn the access to /sys/fs/cgroup/cpu,cpuacct, which is the subfolder of cgroup mount destination. chown :yarn -R /sys/fs/cgroup/cpu,cpuacct chmod g+rwx -R /sys/fs/cgroup/cpu,cpuacct Copy If GPUs are used,the access to cgroup devices folder is neede as well chown :yarn -R /sys/fs/cgroup/devices chmod g+rwx -R /sys/fs/cgroup/devices Copy "},{"title":"Issue 2: container-executor permission denied","type":1,"pageTitle":"Test and Troubleshooting","url":"docs/userDocs/yarn/TestAndTroubleshooting#issue-2-container-executor-permission-denied","content":"2018-09-21 09:36:26,102 WARN org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.privileged.PrivilegedOperationExecutor: IOException executing command: java.io.IOException: Cannot run program \"/etc/yarn/sbin/Linux-amd64-64/container-executor\": error=13, Permission denied at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048) at org.apache.hadoop.util.Shell.runCommand(Shell.java:938) at org.apache.hadoop.util.Shell.run(Shell.java:901) at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:1213) Copy Solution: The permission of /etc/yarn/sbin/Linux-amd64-64/container-executor should be 6050 "},{"title":"Issue 3:How to get docker service log","type":1,"pageTitle":"Test and Troubleshooting","url":"docs/userDocs/yarn/TestAndTroubleshooting#issue-3:how-to-get-docker-service-log","content":"Solution: we can get docker log with the following command journalctl -u docker Copy "},{"title":"Issue 4:docker can't remove containers with errors like device or resource busy","type":1,"pageTitle":"Test and Troubleshooting","url":"docs/userDocs/yarn/TestAndTroubleshooting#issue-4:docker-cant-remove-containers-with-errors-like-device-or-resource-busy","content":"$ docker rm 0bfafa146431 Error response from daemon: Unable to remove filesystem for 0bfafa146431771f6024dcb9775ef47f170edb2f1852f71916ba44209ca6120a: remove /app/docker/containers/0bfafa146431771f6024dcb9775ef47f170edb2f152f71916ba44209ca6120a/shm: device or resource busy Copy Solution: to find which process leads to a device or resource busy, we can add a shell script, named find-busy-mnt.sh #!/usr/bin/env bash # A simple script to get information about mount points and pids and their # mount namespaces. if [ $# -ne 1 ];then echo \"Usage: $0 <devicemapper-device-id>\" exit 1 fi ID=$1 MOUNTS=`find /proc/*/mounts | xargs grep $ID 2>/dev/null` [ -z \"$MOUNTS\" ] && echo \"No pids found\" && exit 0 printf \"PID\\tNAME\\t\\tMNTNS\\n\" echo \"$MOUNTS\" | while read LINE; do PID=`echo $LINE | cut -d \":\" -f1 | cut -d \"/\" -f3` # Ignore self and thread-self if [ \"$PID\" == \"self\" ] || [ \"$PID\" == \"thread-self\" ]; then continue fi NAME=`ps -q $PID -o comm=` MNTNS=`readlink /proc/$PID/ns/mnt` printf \"%s\\t%s\\t\\t%s\\n\" \"$PID\" \"$NAME\" \"$MNTNS\" done Copy Kill the process by pid, which is found by the script $ chmod +x find-busy-mnt.sh ./find-busy-mnt.sh 0bfafa146431771f6024dcb9775ef47f170edb2f152f71916ba44209ca6120a # PID NAME MNTNS # 5007 ntpd mnt:[4026533598] $ kill -9 5007 Copy "},{"title":"Issue 5:Yarn failed to start containers","type":1,"pageTitle":"Test and Troubleshooting","url":"docs/userDocs/yarn/TestAndTroubleshooting#issue-5:yarn-failed-to-start-containers","content":"if the number of GPUs required by applications is larger than the number of GPUs in the cluster, there would be some containers can't be created. "},{"title":"Docker Images for MXNet","type":0,"sectionRef":"#","url":"docs/userDocs/yarn/WriteDockerfileMX","content":"","keywords":""},{"title":"How to create docker images to run MXNet on YARN","type":1,"pageTitle":"Docker Images for MXNet","url":"docs/userDocs/yarn/WriteDockerfileMX#how-to-create-docker-images-to-run-mxnet-on-yarn","content":"Dockerfile to run MXNet on YARN needs two parts: Base libraries which MXNet depends on 1) OS base image, for example ubuntu:18.04 2) MXNet dependent libraries and packages. \\ For example python, scipy. For GPU support, you also need cuda, cudnn, etc. 3) MXNet package. Libraries to access HDFS 1) JDK 2) Hadoop Here's an example of a base image (without GPU support) to install MXNet: FROM ubuntu:18.04 # Install some development tools and packages # MXNet 1.6 is going to be the last MXNet release to support Python2 RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y tzdata git \\ wget zip python3 python3-pip python3-distutils libgomp1 libopenblas-dev libopencv-dev # Install latest MXNet using pip (without GPU support) RUN pip3 install mxnet RUN echo \"Install python related packages\" && \\ pip3 install --user graphviz==0.8.4 ipykernel jupyter matplotlib numpy pandas scipy sklearn && \\ python3 -m ipykernel.kernelspec Copy On top of above image, add files, install packages to access HDFS ENV JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 RUN apt-get update && apt-get install -y openjdk-8-jdk wget # Install hadoop ENV HADOOP_VERSION=\"3.1.2\" RUN wget https://archive.apache.org/dist/hadoop/common/hadoop-${HADOOP_VERSION}/hadoop-${HADOOP_VERSION}.tar.gz # If you are in mainland China, you can use the following command. # RUN wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-${HADOOP_VERSION}/hadoop-${HADOOP_VERSION}.tar.gz RUN tar zxf hadoop-${HADOOP_VERSION}.tar.gz RUN ln -s hadoop-${HADOOP_VERSION} hadoop-current RUN rm hadoop-${HADOOP_VERSION}.tar.gz Copy Build and push to your own docker registry: Use docker build ... and docker push ... to finish this step. "},{"title":"Use examples to build your own MXNet docker images","type":1,"pageTitle":"Docker Images for MXNet","url":"docs/userDocs/yarn/WriteDockerfileMX#use-examples-to-build-your-own-mxnet-docker-images","content":"We provided some example Dockerfiles for you to build your own MXNet docker images. For latest MXNet docker/mxnet/base/ubuntu-18.04/Dockerfile.cpu.mxnet_latest: Latest MXNet that supports CPUdocker/mxnet/base/ubuntu-18.04/Dockerfile.gpu.mxnet_latest: Latest MXNet that supports GPU, which is prebuilt to CUDA10. Build Docker images# "},{"title":"Manually build Docker image:","type":1,"pageTitle":"Docker Images for MXNet","url":"docs/userDocs/yarn/WriteDockerfileMX#manually-build-docker-image","content":"Under docker/mxnet directory, run build-all.sh to build all Docker images. This command will build the following Docker images: mxnet-latest-cpu-base:0.0.1 for base Docker image which includes Hadoop, MXNetmxnet-latest-gpu-base:0.0.1 for base Docker image which includes Hadoop, MXNet, GPU base libraries. "},{"title":"Docker Images for PyTorch","type":0,"sectionRef":"#","url":"docs/userDocs/yarn/WriteDockerfilePT","content":"","keywords":""},{"title":"How to create docker images to run PyTorch on YARN","type":1,"pageTitle":"Docker Images for PyTorch","url":"docs/userDocs/yarn/WriteDockerfilePT#how-to-create-docker-images-to-run-pytorch-on-yarn","content":"Dockerfile to run PyTorch on YARN needs two parts: Base libraries which PyTorch depends on 1) OS base image, for example ubuntu:18.04 2) PyTorch dependent libraries and packages. For example python, scipy. For GPU support, you also need cuda, cudnn, etc. 3) PyTorch package. Libraries to access HDFS 1) JDK 2) Hadoop Here's an example of a base image (with GPU support) to install PyTorch: FROM nvidia/cuda:10.0-cudnn7-devel-ubuntu18.04 ARG PYTHON_VERSION=3.6 RUN apt-get update && apt-get install -y --no-install-recommends \\ build-essential \\ cmake \\ git \\ curl \\ vim \\ ca-certificates \\ libjpeg-dev \\ libpng-dev \\ wget &&\\ rm -rf /var/lib/apt/lists/* RUN curl -o ~/miniconda.sh -O https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh && \\ chmod +x ~/miniconda.sh && \\ ~/miniconda.sh -b -p /opt/conda && \\ rm ~/miniconda.sh && \\ /opt/conda/bin/conda install -y python=$PYTHON_VERSION numpy pyyaml scipy ipython mkl mkl-include cython typing && \\ /opt/conda/bin/conda install -y -c pytorch magma-cuda100 && \\ /opt/conda/bin/conda clean -ya ENV PATH /opt/conda/bin:$PATH RUN pip install ninja # This must be done before pip so that requirements.txt is available WORKDIR /opt/pytorch RUN git clone https://github.com/pytorch/pytorch.git WORKDIR pytorch RUN git submodule update --init RUN TORCH_CUDA_ARCH_LIST=\"3.5 5.2 6.0 6.1 7.0+PTX\" TORCH_NVCC_FLAGS=\"-Xfatbin -compress-all\" \\ CMAKE_PREFIX_PATH=\"$(dirname $(which conda))/../\" \\ pip install -v . WORKDIR /opt/pytorch RUN git clone https://github.com/pytorch/vision.git && cd vision && pip install -v . Copy On top of above image, add files, install packages to access HDFS RUN apt-get update && apt-get install -y openjdk-8-jdk wget # Install hadoop ENV HADOOP_VERSION=\"2.9.2\" RUN wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-${HADOOP_VERSION}/hadoop-${HADOOP_VERSION}.tar.gz RUN tar zxf hadoop-${HADOOP_VERSION}.tar.gz RUN ln -s hadoop-${HADOOP_VERSION} hadoop-current RUN rm hadoop-${HADOOP_VERSION}.tar.gz Copy Build and push to your own docker registry: Use docker build ... and docker push ... to finish this step. "},{"title":"Use examples to build your own PyTorch docker images","type":1,"pageTitle":"Docker Images for PyTorch","url":"docs/userDocs/yarn/WriteDockerfilePT#use-examples-to-build-your-own-pytorch-docker-images","content":"We provided some example Dockerfiles for you to build your own PyTorch docker images. For latest PyTorch docker/pytorch/base/ubuntu-18.04/Dockerfile.gpu.pytorch_latest: Latest Pytorch that supports GPU, which is prebuilt to CUDA10.docker/pytorch/with-cifar10-models/ubuntu-18.04/Dockerfile.gpu.pytorch_latest: Latest Pytorch that GPU, which is prebuilt to CUDA10, with models. "},{"title":"Build Docker images","type":1,"pageTitle":"Docker Images for PyTorch","url":"docs/userDocs/yarn/WriteDockerfilePT#build-docker-images","content":""},{"title":"Manually build Docker image:","type":1,"pageTitle":"Docker Images for PyTorch","url":"docs/userDocs/yarn/WriteDockerfilePT#manually-build-docker-image","content":"Under docker/pytorch directory, run build-all.sh to build all Docker images. This command will build the following Docker images: pytorch-latest-gpu-base:0.0.1 for base Docker image which includes Hadoop, PyTorch, GPU base libraries.pytorch-latest-gpu:0.0.1 which includes cifar10 model as well "},{"title":"Use prebuilt images","type":1,"pageTitle":"Docker Images for PyTorch","url":"docs/userDocs/yarn/WriteDockerfilePT#use-prebuilt-images","content":"(No liability) You can also use prebuilt images for convenience: hadoopsubmarine/pytorch-latest-gpu-base:0.0.1 "},{"title":"README","type":0,"sectionRef":"#","url":"docs/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README","content":"","keywords":""},{"title":"Prerequisite","type":1,"pageTitle":"README","url":"docs/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README#prerequisite","content":"Install TensorFlow version 1.2.1 or later. Download the CIFAR-10 dataset and generate TFRecord files using the provided script. The script and associated command below will download the CIFAR-10 dataset and then generate a TFRecord for the training, validation, and evaluation datasets. python generate_cifar10_tfrecords.py --data-dir=${PWD}/cifar-10-data Copy After running the command above, you should see the following files in the --data-dir (ls -R cifar-10-data): train.tfrecordsvalidation.tfrecordseval.tfrecords "},{"title":"Training on a single machine with GPUs or CPU","type":1,"pageTitle":"README","url":"docs/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README#training-on-a-single-machine-with-gpus-or-cpu","content":"Run the training on CPU only. After training, it runs the evaluation. python cifar10_main.py --data-dir=${PWD}/cifar-10-data \\ --job-dir=/tmp/cifar10 \\ --num-gpus=0 \\ --train-steps=1000 Copy Run the model on 2 GPUs using CPU as parameter server. After training, it runs the evaluation. python cifar10_main.py --data-dir=${PWD}/cifar-10-data \\ --job-dir=/tmp/cifar10 \\ --num-gpus=2 \\ --train-steps=1000 Copy Run the model on 2 GPUs using GPU as parameter server. It will run an experiment, which for local setting basically means it will run stop training a couple of times to perform evaluation. python cifar10_main.py --data-dir=${PWD}/cifar-10-data \\ --job-dir=/tmp/cifar10 \\ --variable-strategy GPU \\ --num-gpus=2 \\ Copy There are more command line flags to play with; runpython cifar10_main.py --help for details. "},{"title":"Run distributed training","type":1,"pageTitle":"README","url":"docs/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README#run-distributed-training","content":""},{"title":"(Optional) Running on Google Cloud Machine Learning Engine","type":1,"pageTitle":"README","url":"docs/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README#optional-running-on-google-cloud-machine-learning-engine","content":"This example can be run on Google Cloud Machine Learning Engine (ML Engine), which will configure the environment and take care of running workers, parameters servers, and masters in a fault tolerant way. To install the command line tool, and set up a project and billing, see the quickstart here. You'll also need a Google Cloud Storage bucket for the data. If you followed the instructions above, you can just run: MY_BUCKET=gs://<my-bucket-name> gsutil cp -r ${PWD}/cifar-10-data $MY_BUCKET/ Copy Then run the following command from the tutorials/image directory of this repository (the parent directory of this README): gcloud ml-engine jobs submit training cifarmultigpu \\ --runtime-version 1.2 \\ --job-dir=$MY_BUCKET/model_dirs/cifarmultigpu \\ --config cifar10_estimator/cmle_config.yaml \\ --package-path cifar10_estimator/ \\ --module-name cifar10_estimator.cifar10_main \\ -- \\ --data-dir=$MY_BUCKET/cifar-10-data \\ --num-gpus=4 \\ --train-steps=1000 Copy "},{"title":"Set TF_CONFIG","type":1,"pageTitle":"README","url":"docs/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README#set-tf_config","content":"Considering that you already have multiple hosts configured, all you need is aTF_CONFIG environment variable on each host. You can set up the hosts manually or check tensorflow/ecosystem for instructions about how to set up a Cluster. The TF_CONFIG will be used by the RunConfig to know the existing hosts and their task: master, ps or worker. Here's an example of TF_CONFIG. cluster = {'master': ['master-ip:8000'], 'ps': ['ps-ip:8000'], 'worker': ['worker-ip:8000']} TF_CONFIG = json.dumps( {'cluster': cluster, 'task': {'type': master, 'index': 0}, 'model_dir': 'gs://<bucket_path>/<dir_path>', 'environment': 'cloud' }) Copy Cluster A cluster spec, which is basically a dictionary that describes all of the tasks in the cluster. More about it here. In this cluster spec we are defining a cluster with 1 master, 1 ps and 1 worker. ps: saves the parameters among all workers. All workers can read/write/update the parameters for model via ps. As some models are extremely large the parameters are shared among the ps (each ps stores a subset). worker: does the training. master: basically a special worker, it does training, but also restores and saves checkpoints and do evaluation. Task The Task defines what is the role of the current node, for this example the node is the master on index 0 on the cluster spec, the task will be different for each node. An example of the TF_CONFIG for a worker would be: cluster = {'master': ['master-ip:8000'], 'ps': ['ps-ip:8000'], 'worker': ['worker-ip:8000']} TF_CONFIG = json.dumps( {'cluster': cluster, 'task': {'type': worker, 'index': 0}, 'model_dir': 'gs://<bucket_path>/<dir_path>', 'environment': 'cloud' }) Copy Model_dir This is the path where the master will save the checkpoints, graph and TensorBoard files. For a multi host environment you may want to use a Distributed File System, Google Storage and DFS are supported. Environment By the default environment is local, for a distributed setting we need to change it to cloud. "},{"title":"Running script","type":1,"pageTitle":"README","url":"docs/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README#running-script","content":"Once you have a TF_CONFIG configured properly on each host you're ready to run on distributed settings. Master# Run this on master: Runs an Experiment in sync mode on 4 GPUs using CPU as parameter server for 40000 steps. It will run evaluation a couple of times during training. The num_workers argument is used only to update the learning rate correctly. Make sure the model_dir is the same as defined on the TF_CONFIG. python cifar10_main.py --data-dir=gs://path/cifar-10-data \\ --job-dir=gs://path/model_dir/ \\ --num-gpus=4 \\ --train-steps=40000 \\ --sync \\ --num-workers=2 Copy Output: INFO:tensorflow:Using model_dir in TF_CONFIG: gs://path/model_dir/ INFO:tensorflow:Using config: {'_save_checkpoints_secs': 600, '_num_ps_replicas': 1, '_keep_checkpoint_max': 5, '_task_type': u'master', '_is_chief': True, '_cluster_spec': <tensorflow.python.training.server_lib.ClusterSpec object at 0x7fd16fb2be10>, '_model_dir': 'gs://path/model_dir/', '_save_checkpoints_steps': None, '_keep_checkpoint_every_n_hours': 10000, '_session_config': intra_op_parallelism_threads: 1 gpu_options { } allow_soft_placement: true , '_tf_random_seed': None, '_environment': u'cloud', '_num_worker_replicas': 1, '_task_id': 0, '_save_summary_steps': 100, '_tf_config': gpu_options { per_process_gpu_memory_fraction: 1.0 } , '_evaluation_master': '', '_master': u'grpc://master-ip:8000'} ... 2017-08-01 19:59:26.496208: I tensorflow/core/common_runtime/gpu/gpu_device.cc:940] Found device 0 with properties: name: Tesla K80 major: 3 minor: 7 memoryClockRate (GHz) 0.8235 pciBusID 0000:00:04.0 Total memory: 11.17GiB Free memory: 11.09GiB 2017-08-01 19:59:26.775660: I tensorflow/core/common_runtime/gpu/gpu_device.cc:940] Found device 1 with properties: name: Tesla K80 major: 3 minor: 7 memoryClockRate (GHz) 0.8235 pciBusID 0000:00:05.0 Total memory: 11.17GiB Free memory: 11.10GiB ... 2017-08-01 19:59:29.675171: I tensorflow/core/distributed_runtime/rpc/grpc_server_lib.cc:316] Started server with target: grpc://localhost:8000 INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_1/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_2/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_3/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_4/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_5/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_6/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1/avg_pool/: (?, 16, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_1/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_2/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_3/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_4/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_1/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_2/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_3/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_4/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_5/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_6/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1/avg_pool/: (?, 32, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_1/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_2/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_3/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_4/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_5/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_6/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/global_avg_pool/: (?, 64) INFO:tensorflow:image after unit resnet/tower_0/fully_connected/: (?, 11) INFO:tensorflow:SyncReplicasV2: replicas_to_aggregate=1; total_num_replicas=1 INFO:tensorflow:Create CheckpointSaverHook. INFO:tensorflow:Restoring parameters from gs://path/model_dir/model.ckpt-0 2017-08-01 19:59:37.560775: I tensorflow/core/distributed_runtime/master_session.cc:999] Start master session 156fcb55fe6648d6 with config: intra_op_parallelism_threads: 1 gpu_options { per_process_gpu_memory_fraction: 1 } allow_soft_placement: true INFO:tensorflow:Saving checkpoints for 1 into gs://path/model_dir/model.ckpt. INFO:tensorflow:loss = 1.20682, step = 1 INFO:tensorflow:loss = 1.20682, learning_rate = 0.1 INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_1/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_2/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_3/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_4/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_5/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_6/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1/avg_pool/: (?, 16, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_1/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_2/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_3/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_4/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_5/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_6/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1/avg_pool/: (?, 32, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_1/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_2/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_3/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_4/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_5/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_6/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/global_avg_pool/: (?, 64) INFO:tensorflow:image after unit resnet/tower_0/fully_connected/: (?, 11) INFO:tensorflow:SyncReplicasV2: replicas_to_aggregate=2; total_num_replicas=2 INFO:tensorflow:Starting evaluation at 2017-08-01-20:00:14 2017-08-01 20:00:15.745881: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Creating TensorFlow device (/gpu:0) -> (device: 0, name: Tesla K80, pci bus id: 0000:00:04.0) 2017-08-01 20:00:15.745949: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Creating TensorFlow device (/gpu:1) -> (device: 1, name: Tesla K80, pci bus id: 0000:00:05.0) 2017-08-01 20:00:15.745958: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Creating TensorFlow device (/gpu:2) -> (device: 2, name: Tesla K80, pci bus id: 0000:00:06.0) 2017-08-01 20:00:15.745964: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Creating TensorFlow device (/gpu:3) -> (device: 3, name: Tesla K80, pci bus id: 0000:00:07.0) 2017-08-01 20:00:15.745969: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Creating TensorFlow device (/gpu:4) -> (device: 4, name: Tesla K80, pci bus id: 0000:00:08.0) 2017-08-01 20:00:15.745975: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Creating TensorFlow device (/gpu:5) -> (device: 5, name: Tesla K80, pci bus id: 0000:00:09.0) 2017-08-01 20:00:15.745987: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Creating TensorFlow device (/gpu:6) -> (device: 6, name: Tesla K80, pci bus id: 0000:00:0a.0) 2017-08-01 20:00:15.745997: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Creating TensorFlow device (/gpu:7) -> (device: 7, name: Tesla K80, pci bus id: 0000:00:0b.0) INFO:tensorflow:Restoring parameters from gs://path/model_dir/model.ckpt-10023 INFO:tensorflow:Evaluation [1/100] INFO:tensorflow:Evaluation [2/100] INFO:tensorflow:Evaluation [3/100] INFO:tensorflow:Evaluation [4/100] INFO:tensorflow:Evaluation [5/100] INFO:tensorflow:Evaluation [6/100] INFO:tensorflow:Evaluation [7/100] INFO:tensorflow:Evaluation [8/100] INFO:tensorflow:Evaluation [9/100] INFO:tensorflow:Evaluation [10/100] INFO:tensorflow:Evaluation [11/100] INFO:tensorflow:Evaluation [12/100] INFO:tensorflow:Evaluation [13/100] ... INFO:tensorflow:Evaluation [100/100] INFO:tensorflow:Finished evaluation at 2017-08-01-20:00:31 INFO:tensorflow:Saving dict for global step 1: accuracy = 0.0994, global_step = 1, loss = 630.425 Copy Worker# Run this on worker: Runs an Experiment in sync mode on 4 GPUs using CPU as parameter server for 40000 steps. It will run evaluation a couple of times during training. Make sure the model_dir is the same as defined on the TF_CONFIG. python cifar10_main.py --data-dir=gs://path/cifar-10-data \\ --job-dir=gs://path/model_dir/ \\ --num-gpus=4 \\ --train-steps=40000 \\ --sync Copy Output: INFO:tensorflow:Using model_dir in TF_CONFIG: gs://path/model_dir/ INFO:tensorflow:Using config: {'_save_checkpoints_secs': 600, '_num_ps_replicas': 1, '_keep_checkpoint_max': 5, '_task_type': u'worker', '_is_chief': False, '_cluster_spec': <tensorflow.python.training.server_lib.ClusterSpec object at 0x7f6918438e10>, '_model_dir': 'gs://<path>/model_dir/', '_save_checkpoints_steps': None, '_keep_checkpoint_every_n_hours': 10000, '_session_config': intra_op_parallelism_threads: 1 gpu_options { } allow_soft_placement: true , '_tf_random_seed': None, '_environment': u'cloud', '_num_worker_replicas': 1, '_task_id': 0, '_save_summary_steps': 100, '_tf_config': gpu_options { per_process_gpu_memory_fraction: 1.0 } ... 2017-08-01 19:59:26.496208: I tensorflow/core/common_runtime/gpu/gpu_device.cc:940] Found device 0 with properties: name: Tesla K80 major: 3 minor: 7 memoryClockRate (GHz) 0.8235 pciBusID 0000:00:04.0 Total memory: 11.17GiB Free memory: 11.09GiB 2017-08-01 19:59:26.775660: I tensorflow/core/common_runtime/gpu/gpu_device.cc:940] Found device 1 with properties: name: Tesla K80 major: 3 minor: 7 memoryClockRate (GHz) 0.8235 pciBusID 0000:00:05.0 Total memory: 11.17GiB Free memory: 11.10GiB ... 2017-08-01 19:59:29.675171: I tensorflow/core/distributed_runtime/rpc/grpc_server_lib.cc:316] Started server with target: grpc://localhost:8000 INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_1/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_2/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_3/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_4/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_5/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage/residual_v1_6/: (?, 16, 32, 32) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1/avg_pool/: (?, 16, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_1/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_2/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_3/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_4/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_1/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_2/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_3/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_4/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_5/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_1/residual_v1_6/: (?, 32, 16, 16) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1/avg_pool/: (?, 32, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_1/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_2/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_3/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_4/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_5/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/stage_2/residual_v1_6/: (?, 64, 8, 8) INFO:tensorflow:image after unit resnet/tower_0/global_avg_pool/: (?, 64) INFO:tensorflow:image after unit resnet/tower_0/fully_connected/: (?, 11) INFO:tensorflow:SyncReplicasV2: replicas_to_aggregate=2; total_num_replicas=2 INFO:tensorflow:Create CheckpointSaverHook. 2017-07-31 22:38:04.629150: I tensorflow/core/distributed_runtime/master.cc:209] CreateSession still waiting for response from worker: /job:master/replica:0/task:0 2017-07-31 22:38:09.263492: I tensorflow/core/distributed_runtime/master_session.cc:999] Start master session cc58f93b1e259b0c with config: intra_op_parallelism_threads: 1 gpu_options { per_process_gpu_memory_fraction: 1 } allow_soft_placement: true INFO:tensorflow:loss = 5.82382, step = 0 INFO:tensorflow:loss = 5.82382, learning_rate = 0.8 INFO:tensorflow:Average examples/sec: 1116.92 (1116.92), step = 10 INFO:tensorflow:Average examples/sec: 1233.73 (1377.83), step = 20 INFO:tensorflow:Average examples/sec: 1485.43 (2509.3), step = 30 INFO:tensorflow:Average examples/sec: 1680.27 (2770.39), step = 40 INFO:tensorflow:Average examples/sec: 1825.38 (2788.78), step = 50 INFO:tensorflow:Average examples/sec: 1929.32 (2697.27), step = 60 INFO:tensorflow:Average examples/sec: 2015.17 (2749.05), step = 70 INFO:tensorflow:loss = 37.6272, step = 79 (19.554 sec) INFO:tensorflow:loss = 37.6272, learning_rate = 0.8 (19.554 sec) INFO:tensorflow:Average examples/sec: 2074.92 (2618.36), step = 80 INFO:tensorflow:Average examples/sec: 2132.71 (2744.13), step = 90 INFO:tensorflow:Average examples/sec: 2183.38 (2777.21), step = 100 INFO:tensorflow:Average examples/sec: 2224.4 (2739.03), step = 110 INFO:tensorflow:Average examples/sec: 2240.28 (2431.26), step = 120 INFO:tensorflow:Average examples/sec: 2272.12 (2739.32), step = 130 INFO:tensorflow:Average examples/sec: 2300.68 (2750.03), step = 140 INFO:tensorflow:Average examples/sec: 2325.81 (2745.63), step = 150 INFO:tensorflow:Average examples/sec: 2347.14 (2721.53), step = 160 INFO:tensorflow:Average examples/sec: 2367.74 (2754.54), step = 170 INFO:tensorflow:loss = 27.8453, step = 179 (18.893 sec) ... Copy PS# Run this on ps: The ps will not do training so most of the arguments won't affect the execution python cifar10_main.py --job-dir=gs://path/model_dir/ Copy Output: INFO:tensorflow:Using model_dir in TF_CONFIG: gs://path/model_dir/ INFO:tensorflow:Using config: {'_save_checkpoints_secs': 600, '_num_ps_replicas': 1, '_keep_checkpoint_max': 5, '_task_type': u'ps', '_is_chief': False, '_cluster_spec': <tensorflow.python.training.server_lib.ClusterSpec object at 0x7f48f1addf90>, '_model_dir': 'gs://path/model_dir/', '_save_checkpoints_steps': None, '_keep_checkpoint_every_n_hours': 10000, '_session_config': intra_op_parallelism_threads: 1 gpu_options { } allow_soft_placement: true , '_tf_random_seed': None, '_environment': u'cloud', '_num_worker_replicas': 1, '_task_id': 0, '_save_summary_steps': 100, '_tf_config': gpu_options { per_process_gpu_memory_fraction: 1.0 } , '_evaluation_master': '', '_master': u'grpc://master-ip:8000'} 2017-07-31 22:54:58.928088: I tensorflow/core/distributed_runtime/rpc/grpc_channel.cc:215] Initialize GrpcChannelCache for job master -> {0 -> master-ip:8000} 2017-07-31 22:54:58.928153: I tensorflow/core/distributed_runtime/rpc/grpc_channel.cc:215] Initialize GrpcChannelCache for job ps -> {0 -> localhost:8000} 2017-07-31 22:54:58.928160: I tensorflow/core/distributed_runtime/rpc/grpc_channel.cc:215] Initialize GrpcChannelCache for job worker -> {0 -> worker-ip:8000} 2017-07-31 22:54:58.929873: I tensorflow/core/distributed_runtime/rpc/grpc_server_lib.cc:316] Started server with target: grpc://localhost:8000 Copy "},{"title":"Visualizing results with TensorBoard","type":1,"pageTitle":"README","url":"docs/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README#visualizing-results-with-tensorboard","content":"When using Estimators you can also visualize your data in TensorBoard, with no changes in your code. You can use TensorBoard to visualize your TensorFlow graph, plot quantitative metrics about the execution of your graph, and show additional data like images that pass through it. You'll see something similar to this if you \"point\" TensorBoard to thejob dir parameter you used to train or evaluate your model. Check TensorBoard during training or after it. Just point TensorBoard to the model_dir you chose on the previous step. tensorboard --log-dir=\"<job dir>\" Copy "},{"title":"Warnings","type":1,"pageTitle":"README","url":"docs/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README#warnings","content":"When running cifar10_main.py with --sync argument you may see an error similar to: File \"cifar10_main.py\", line 538, in <module> tf.app.run() File \"/usr/local/lib/python2.7/dist-packages/tensorflow/python/platform/app.py\", line 48, in run _sys.exit(main(_sys.argv[:1] + flags_passthrough)) File \"cifar10_main.py\", line 518, in main hooks), run_config=config) File \"/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/learn_runner.py\", line 210, in run return _execute_schedule(experiment, schedule) File \"/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/learn_runner.py\", line 47, in _execute_schedule return task() File \"/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/experiment.py\", line 501, in train_and_evaluate hooks=self._eval_hooks) File \"/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/experiment.py\", line 681, in _call_evaluate hooks=hooks) File \"/usr/local/lib/python2.7/dist-packages/tensorflow/python/estimator/estimator.py\", line 292, in evaluate name=name) File \"/usr/local/lib/python2.7/dist-packages/tensorflow/python/estimator/estimator.py\", line 638, in _evaluate_model features, labels, model_fn_lib.ModeKeys.EVAL) File \"/usr/local/lib/python2.7/dist-packages/tensorflow/python/estimator/estimator.py\", line 545, in _call_model_fn features=features, labels=labels, **kwargs) File \"cifar10_main.py\", line 331, in _resnet_model_fn gradvars, global_step=tf.train.get_global_step()) File \"/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/sync_replicas_optimizer.py\", line 252, in apply_gradients variables.global_variables()) File \"/usr/local/lib/python2.7/dist-packages/tensorflow/python/util/tf_should_use.py\", line 170, in wrapped return _add_should_use_warning(fn(*args, **kwargs)) File \"/usr/local/lib/python2.7/dist-packages/tensorflow/python/util/tf_should_use.py\", line 139, in _add_should_use_warning wrapped = TFShouldUseWarningWrapper(x) File \"/usr/local/lib/python2.7/dist-packages/tensorflow/python/util/tf_should_use.py\", line 96, in __init__ stack = [s.strip() for s in traceback.format_stack()] Copy This should not affect your training, and should be fixed on the next releases. "},{"title":"Docker Images for TensorFlow","type":0,"sectionRef":"#","url":"docs/userDocs/yarn/WriteDockerfileTF","content":"","keywords":""},{"title":"How to create docker images to run Tensorflow on YARN","type":1,"pageTitle":"Docker Images for TensorFlow","url":"docs/userDocs/yarn/WriteDockerfileTF#how-to-create-docker-images-to-run-tensorflow-on-yarn","content":"Dockerfile to run Tensorflow on YARN need two part: Base libraries which Tensorflow depends on 1) OS base image, for example ubuntu:18.04 2) Tensorflow depended libraries and packages. For example python, scipy. For GPU support, need cuda, cudnn, etc. 3) Tensorflow package. Libraries to access HDFS 1) JDK 2) Hadoop Here's an example of a base image (w/o GPU support) to install Tensorflow: FROM ubuntu:18.04 # Pick up some TF dependencies RUN apt-get update && apt-get install -y --no-install-recommends \\ build-essential \\ curl \\ libfreetype6-dev \\ libpng-dev \\ libzmq3-dev \\ pkg-config \\ python \\ python-dev \\ rsync \\ software-properties-common \\ unzip \\ && \\ apt-get clean && \\ rm -rf /var/lib/apt/lists/* RUN export DEBIAN_FRONTEND=noninteractive && apt-get update && apt-get install -yq krb5-user libpam-krb5 && apt-get clean RUN curl -O https://bootstrap.pypa.io/get-pip.py && \\ python get-pip.py && \\ rm get-pip.py RUN pip --no-cache-dir install \\ Pillow \\ h5py \\ ipykernel \\ jupyter \\ matplotlib \\ numpy \\ pandas \\ scipy \\ sklearn \\ && \\ python -m ipykernel.kernelspec RUN pip --no-cache-dir install \\ http://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.13.1-cp27-none-linux_x86_64.whl Copy On top of above image, add files, install packages to access HDFS RUN apt-get update && apt-get install -y openjdk-8-jdk wget # Install hadoop ENV HADOOP_VERSION=\"2.9.2\" RUN wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-${HADOOP_VERSION}/hadoop-${HADOOP_VERSION}.tar.gz RUN tar zxf hadoop-${HADOOP_VERSION}.tar.gz RUN ln -s hadoop-${HADOOP_VERSION} hadoop-current RUN rm hadoop-${HADOOP_VERSION}.tar.gz Copy Build and push to your own docker registry: Use docker build ... and docker push ... to finish this step. "},{"title":"Use examples to build your own Tensorflow docker images","type":1,"pageTitle":"Docker Images for TensorFlow","url":"docs/userDocs/yarn/WriteDockerfileTF#use-examples-to-build-your-own-tensorflow-docker-images","content":"We provided following examples for you to build tensorflow docker images. For Tensorflow 1.13.1 (Precompiled to CUDA 10.x) docker/tensorflow/base/ubuntu-18.04/Dockerfile.cpu.tf_1.13.1: Tensorflow 1.13.1 supports CPU only.docker/tensorflow/with-cifar10-models/ubuntu-18.04/Dockerfile.cpu.tf_1.13.1: Tensorflow 1.13.1 supports CPU only, and included modelsdocker/tensorflow/base/ubuntu-18.04/Dockerfile.gpu.tf_1.13.1: Tensorflow 1.13.1 supports GPU, which is prebuilt to CUDA10.docker/tensorflow/with-cifar10-models/ubuntu-18.04/Dockerfile.gpu.tf_1.13.1: Tensorflow 1.13.1 supports GPU, which is prebuilt to CUDA10, with models. "},{"title":"Build Docker images","type":1,"pageTitle":"Docker Images for TensorFlow","url":"docs/userDocs/yarn/WriteDockerfileTF#build-docker-images","content":""},{"title":"Manually build Docker image:","type":1,"pageTitle":"Docker Images for TensorFlow","url":"docs/userDocs/yarn/WriteDockerfileTF#manually-build-docker-image","content":"Under docker/ directory, run build-all.sh to build Docker images. It will build following images: tf-1.13.1-gpu-base:0.0.1 for base Docker image which includes Hadoop, Tensorflow, GPU base libraries.tf-1.13.1-gpu-base:0.0.1 for base Docker image which includes Hadoop. Tensorflow.tf-1.13.1-gpu:0.0.1 which includes cifar10 modeltf-1.13.1-cpu:0.0.1 which inclues cifar10 model (cpu only). "},{"title":"Use prebuilt images","type":1,"pageTitle":"Docker Images for TensorFlow","url":"docs/userDocs/yarn/WriteDockerfileTF#use-prebuilt-images","content":"(No liability) You can also use prebuilt images for convenience: hadoopsubmarine/tf-1.13.1-gpu:0.0.1hadoopsubmarine/tf-1.13.1-cpu:0.0.1 "},{"title":"YARN Runtime Quick Start Guide","type":0,"sectionRef":"#","url":"docs/userDocs/yarn/YARNRuntimeGuide","content":"","keywords":""},{"title":"Prerequisite","type":1,"pageTitle":"YARN Runtime Quick Start Guide","url":"docs/userDocs/yarn/YARNRuntimeGuide#prerequisite","content":"Check out the Running Submarine on YARN "},{"title":"Build your own Docker image","type":1,"pageTitle":"YARN Runtime Quick Start Guide","url":"docs/userDocs/yarn/YARNRuntimeGuide#build-your-own-docker-image","content":"When you follow the documents below, and want to build your own Docker image for Tensorflow/PyTorch/MXNet? Please check out Build your Docker image for more details. "},{"title":"Launch TensorFlow Application:","type":1,"pageTitle":"YARN Runtime Quick Start Guide","url":"docs/userDocs/yarn/YARNRuntimeGuide#launch-tensorflow-application","content":""},{"title":"Without Docker","type":1,"pageTitle":"YARN Runtime Quick Start Guide","url":"docs/userDocs/yarn/YARNRuntimeGuide#without-docker","content":"You need: Build a Python virtual environment with TensorFlow 1.13.1 installedA cluster with Hadoop 2.9 or above. "},{"title":"Building a Python virtual environment with TensorFlow","type":1,"pageTitle":"YARN Runtime Quick Start Guide","url":"docs/userDocs/yarn/YARNRuntimeGuide#building-a-python-virtual-environment-with-tensorflow","content":"TonY requires a Python virtual environment zip with TensorFlow and any needed Python libraries already installed. wget https://files.pythonhosted.org/packages/33/bc/fa0b5347139cd9564f0d44ebd2b147ac97c36b2403943dbee8a25fd74012/virtualenv-16.0.0.tar.gz tar xf virtualenv-16.0.0.tar.gz # Make sure to install using Python 3, as TensorFlow only provides Python 3 artifacts python virtualenv-16.0.0/virtualenv.py venv . venv/bin/activate pip install tensorflow==1.13.1 zip -r myvenv.zip venv deactivate Copy The above commands will produced a myvenv.zip and it will be used in below example. There's no need to copy it to other nodes. And it is not needed when using Docker to run the job. Note: If you require a version of TensorFlow and TensorBoard prior to 1.13.1, take a look at this issue. "},{"title":"Get the training examples","type":1,"pageTitle":"YARN Runtime Quick Start Guide","url":"docs/userDocs/yarn/YARNRuntimeGuide#get-the-training-examples","content":"Get mnist_distributed.py from https://github.com/linkedin/TonY/tree/master/tony-examples/mnist-tensorflow SUBMARINE_VERSION=<REPLACE_VERSION> SUBMARINE_HADOOP_VERSION=3.1 CLASSPATH=$(hadoop classpath --glob):path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar \\ java org.apache.submarine.client.cli.Cli job run --name tf-job-001 \\ --framework tensorflow \\ --verbose \\ --input_path \"\" \\ --num_workers 2 \\ --worker_resources memory=1G,vcores=1 \\ --num_ps 1 \\ --ps_resources memory=1G,vcores=1 \\ --worker_launch_cmd \"myvenv.zip/venv/bin/python mnist_distributed.py --steps 2 --data_dir /tmp/data --working_dir /tmp/mode\" \\ --ps_launch_cmd \"myvenv.zip/venv/bin/python mnist_distributed.py --steps 2 --data_dir /tmp/data --working_dir /tmp/mode\" \\ --insecure \\ --conf tony.containers.resources=path-to/myvenv.zip#archive,path-to/mnist_distributed.py,path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar Copy You should then be able to see links and status of the jobs from command line: 2019-04-22 20:30:42,611 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000003/pi status: RUNNING 2019-04-22 20:30:42,612 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 1 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000004/pi status: RUNNING 2019-04-22 20:30:42,612 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: ps index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000002/pi status: RUNNING 2019-04-22 20:30:42,612 INFO tony.TonyClient: Logs for ps 0 at: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000002/pi 2019-04-22 20:30:42,612 INFO tony.TonyClient: Logs for worker 0 at: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000003/pi 2019-04-22 20:30:42,612 INFO tony.TonyClient: Logs for worker 1 at: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000004/pi 2019-04-22 20:30:44,625 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: ps index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000002/pi status: FINISHED 2019-04-22 20:30:44,625 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000003/pi status: FINISHED 2019-04-22 20:30:44,626 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 1 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000004/pi status: FINISHED Copy "},{"title":"With Docker","type":1,"pageTitle":"YARN Runtime Quick Start Guide","url":"docs/userDocs/yarn/YARNRuntimeGuide#with-docker","content":"SUBMARINE_VERSION=<REPLACE_VERSION> SUBMARINE_HADOOP_VERSION=3.1 CLASSPATH=$(hadoop classpath --glob):path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar \\ java org.apache.submarine.client.cli.Cli job run --name tf-job-001 \\ --framework tensorflow \\ --docker_image hadoopsubmarine/tf-1.8.0-cpu:0.0.1 \\ --input_path hdfs://pi-aw:9000/dataset/cifar-10-data \\ --worker_resources memory=3G,vcores=2 \\ --worker_launch_cmd \"export CLASSPATH=\\$(/hadoop-3.1.0/bin/hadoop classpath --glob) && cd /test/models/tutorials/image/cifar10_estimator && python cifar10_main.py --data-dir=%input_path% --job-dir=%checkpoint_path% --train-steps=10000 --eval-batch-size=16 --train-batch-size=16 --variable-strategy=CPU --num-gpus=0 --sync\" \\ --env JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 \\ --env DOCKER_HADOOP_HDFS_HOME=/hadoop-3.1.0 \\ --env DOCKER_JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 \\ --env HADOOP_HOME=/hadoop-3.1.0 \\ --env HADOOP_YARN_HOME=/hadoop-3.1.0 \\ --env HADOOP_COMMON_HOME=/hadoop-3.1.0 \\ --env HADOOP_HDFS_HOME=/hadoop-3.1.0 \\ --env HADOOP_CONF_DIR=/hadoop-3.1.0/etc/hadoop \\ --conf tony.containers.resources=path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar Copy Notes:# 1) DOCKER_JAVA_HOME points to JAVA_HOME inside Docker image. 2) DOCKER_HADOOP_HDFS_HOME points to HADOOP_HDFS_HOME inside Docker image. We removed TonY submodule after applying SUBMARINE-371 and changed to use TonY dependency directly. After Submarine v0.2.0, there is a uber jar submarine-all-${SUBMARINE_VERSION}-hadoop-${HADOOP_VERSION}.jar released together with the submarine-core-${SUBMARINE_VERSION}.jar, submarine-yarnservice-runtime-${SUBMARINE_VERSION}.jar and submarine-tony-runtime-${SUBMARINE_VERSION}.jar.  "},{"title":"Launch PyTorch Application:","type":1,"pageTitle":"YARN Runtime Quick Start Guide","url":"docs/userDocs/yarn/YARNRuntimeGuide#launch-pytorch-application","content":""},{"title":"Without Docker","type":1,"pageTitle":"YARN Runtime Quick Start Guide","url":"docs/userDocs/yarn/YARNRuntimeGuide#without-docker-1","content":"You need: Build a Python virtual environment with PyTorch 0.4.0+ installedA cluster with Hadoop 2.9 or above. "},{"title":"Building a Python virtual environment with PyTorch","type":1,"pageTitle":"YARN Runtime Quick Start Guide","url":"docs/userDocs/yarn/YARNRuntimeGuide#building-a-python-virtual-environment-with-pytorch","content":"TonY requires a Python virtual environment zip with PyTorch and any needed Python libraries already installed. wget https://files.pythonhosted.org/packages/33/bc/fa0b5347139cd9564f0d44ebd2b147ac97c36b2403943dbee8a25fd74012/virtualenv-16.0.0.tar.gz tar xf virtualenv-16.0.0.tar.gz python virtualenv-16.0.0/virtualenv.py venv . venv/bin/activate pip install pytorch==0.4.0 zip -r myvenv.zip venv deactivate Copy "},{"title":"Get the training examples","type":1,"pageTitle":"YARN Runtime Quick Start Guide","url":"docs/userDocs/yarn/YARNRuntimeGuide#get-the-training-examples-1","content":"Get mnist_distributed.py from https://github.com/linkedin/TonY/tree/master/tony-examples/mnist-pytorch SUBMARINE_VERSION=<REPLACE_VERSION> SUBMARINE_HADOOP_VERSION=3.1 CLASSPATH=$(hadoop classpath --glob):path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar \\ java org.apache.submarine.client.cli.Cli job run --name PyTorch-job-001 \\ --framework pytorch --num_workers 2 \\ --worker_resources memory=3G,vcores=2 \\ --num_ps 2 \\ --ps_resources memory=3G,vcores=2 \\ --worker_launch_cmd \"myvenv.zip/venv/bin/python mnist_distributed.py\" \\ --ps_launch_cmd \"myvenv.zip/venv/bin/python mnist_distributed.py\" \\ --insecure \\ --conf tony.containers.resources=path-to/myvenv.zip#archive,path-to/mnist_distributed.py, \\ path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar Copy You should then be able to see links and status of the jobs from command line: 2019-04-22 20:30:42,611 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000003/pi status: RUNNING 2019-04-22 20:30:42,612 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 1 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000004/pi status: RUNNING 2019-04-22 20:30:42,612 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: ps index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000002/pi status: RUNNING 2019-04-22 20:30:42,612 INFO tony.TonyClient: Logs for ps 0 at: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000002/pi 2019-04-22 20:30:42,612 INFO tony.TonyClient: Logs for worker 0 at: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000003/pi 2019-04-22 20:30:42,612 INFO tony.TonyClient: Logs for worker 1 at: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000004/pi 2019-04-22 20:30:44,625 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: ps index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000002/pi status: FINISHED 2019-04-22 20:30:44,625 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 0 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000003/pi status: FINISHED 2019-04-22 20:30:44,626 INFO tony.TonyClient: Tasks Status Updated: [TaskInfo] name: worker index: 1 url: http://pi-aw:8042/node/containerlogs/container_1555916523933_0030_01_000004/pi status: FINISHED Copy "},{"title":"With Docker","type":1,"pageTitle":"YARN Runtime Quick Start Guide","url":"docs/userDocs/yarn/YARNRuntimeGuide#with-docker-1","content":"SUBMARINE_VERSION=<REPLACE_VERSION> SUBMARINE_HADOOP_VERSION=3.1 CLASSPATH=$(hadoop classpath --glob):path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar \\ java org.apache.submarine.client.cli.Cli job run --name PyTorch-job-001 \\ --framework pytorch --docker_image pytorch-latest-gpu:0.0.1 \\ --input_path \"\" \\ --num_workers 1 \\ --worker_resources memory=3G,vcores=2 \\ --worker_launch_cmd \"cd /test/ && python cifar10_tutorial.py\" \\ --env JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 \\ --env DOCKER_HADOOP_HDFS_HOME=/hadoop-3.1.2 \\ --env DOCKER_JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 \\ --env HADOOP_HOME=/hadoop-3.1.2 \\ --env HADOOP_YARN_HOME=/hadoop-3.1.2 \\ --env HADOOP_COMMON_HOME=/hadoop-3.1.2 \\ --env HADOOP_HDFS_HOME=/hadoop-3.1.2 \\ --env HADOOP_CONF_DIR=/hadoop-3.1.2/etc/hadoop \\ --conf tony.containers.resources=path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar Copy "},{"title":"Launch MXNet Application:","type":1,"pageTitle":"YARN Runtime Quick Start Guide","url":"docs/userDocs/yarn/YARNRuntimeGuide#launch-mxnet-application","content":""},{"title":"Without Docker","type":1,"pageTitle":"YARN Runtime Quick Start Guide","url":"docs/userDocs/yarn/YARNRuntimeGuide#without-docker-2","content":"You need: Build a Python virtual environment with MXNet installedA cluster with Hadoop 2.9 or above. "},{"title":"Building a Python virtual environment with MXNet","type":1,"pageTitle":"YARN Runtime Quick Start Guide","url":"docs/userDocs/yarn/YARNRuntimeGuide#building-a-python-virtual-environment-with-mxnet","content":"TonY requires a Python virtual environment zip with MXNet and any needed Python libraries already installed. wget https://files.pythonhosted.org/packages/33/bc/fa0b5347139cd9564f0d44ebd2b147ac97c36b2403943dbee8a25fd74012/virtualenv-16.0.0.tar.gz tar xf virtualenv-16.0.0.tar.gz python virtualenv-16.0.0/virtualenv.py venv . venv/bin/activate pip install mxnet==1.5.1 zip -r myvenv.zip venv deactivate Copy "},{"title":"Get the training examples","type":1,"pageTitle":"YARN Runtime Quick Start Guide","url":"docs/userDocs/yarn/YARNRuntimeGuide#get-the-training-examples-2","content":"Get image_classification.py from this link SUBMARINE_VERSION=<REPLACE_VERSION> SUBMARINE_HADOOP_VERSION=3.1 CLASSPATH=$(hadoop classpath --glob):path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar \\ java org.apache.submarine.client.cli.Cli job run --name MXNet-job-001 \\ --framework mxnet --input_path \"\" \\ --num_workers 2 \\ --worker_resources memory=3G,vcores=2 \\ --worker_launch_cmd \"myvenv.zip/venv/bin/python image_classification.py --dataset cifar10 --model vgg11 --epochs 1 --kvstore dist_sync\" \\ --num_ps 2 \\ --ps_resources memory=3G,vcores=2 \\ --ps_launch_cmd \"myvenv.zip/venv/bin/python image_classification.py --dataset cifar10 --model vgg11 --epochs 1 --kvstore dist_sync\" \\ --num_schedulers=1 \\ --scheduler_resources memory=1G,vcores=1 \\ --scheduler_launch_cmd=\"myvenv.zip/venv/bin/python image_classification.py --dataset cifar10 --model vgg11 --epochs 1 --kvstore dist_sync\" \\ --insecure \\ --conf tony.containers.resources=path-to/myvenv.zip#archive,path-to/image_classification.py, \\ path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar Copy You should then be able to see links and status of the jobs from command line: 2020-04-16 20:23:43,834 INFO tony.TonyClient: Task status updated: [TaskInfo] name: server, index: 1, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000004/pi status: RUNNING 2020-04-16 20:23:43,834 INFO tony.TonyClient: Task status updated: [TaskInfo] name: server, index: 0, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000003/pi status: RUNNING 2020-04-16 20:23:43,834 INFO tony.TonyClient: Task status updated: [TaskInfo] name: worker, index: 1, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000006/pi status: RUNNING 2020-04-16 20:23:43,834 INFO tony.TonyClient: Task status updated: [TaskInfo] name: worker, index: 0, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000005/pi status: RUNNING 2020-04-16 20:23:43,834 INFO tony.TonyClient: Task status updated: [TaskInfo] name: scheduler, index: 0, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000002/pi status: RUNNING 2020-04-16 20:23:43,839 INFO tony.TonyClient: Logs for scheduler 0 at: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000002/pi 2020-04-16 20:23:43,839 INFO tony.TonyClient: Logs for server 0 at: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000003/pi 2020-04-16 20:23:43,840 INFO tony.TonyClient: Logs for server 1 at: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000004/pi 2020-04-16 20:23:43,840 INFO tony.TonyClient: Logs for worker 0 at: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000005/pi 2020-04-16 20:23:43,840 INFO tony.TonyClient: Logs for worker 1 at: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000006/pi 2020-04-16 21:02:09,723 INFO tony.TonyClient: Task status updated: [TaskInfo] name: scheduler, index: 0, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000002/pi status: SUCCEEDED 2020-04-16 21:02:09,736 INFO tony.TonyClient: Task status updated: [TaskInfo] name: worker, index: 0, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000005/pi status: SUCCEEDED 2020-04-16 21:02:09,737 INFO tony.TonyClient: Task status updated: [TaskInfo] name: server, index: 1, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000004/pi status: SUCCEEDED 2020-04-16 21:02:09,737 INFO tony.TonyClient: Task status updated: [TaskInfo] name: worker, index: 1, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000006/pi status: SUCCEEDED 2020-04-16 21:02:09,737 INFO tony.TonyClient: Task status updated: [TaskInfo] name: server, index: 0, url: http://pi-aw:8042/node/containerlogs/container_1587037749540_0005_01_000003/pi status: SUCCEEDED Copy "},{"title":"With Docker","type":1,"pageTitle":"YARN Runtime Quick Start Guide","url":"docs/userDocs/yarn/YARNRuntimeGuide#with-docker-2","content":"You could refer to this sample Dockerfile for building your own Docker image. SUBMARINE_VERSION=<REPLACE_VERSION> SUBMARINE_HADOOP_VERSION=3.1 CLASSPATH=$(hadoop classpath --glob):path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar \\ java org.apache.submarine.client.cli.Cli job run --name MXNet-job-001 \\ --framework mxnet --docker_image <your_docker_image> \\ --input_path \"\" \\ --num_schedulers 1 \\ --scheduler_resources memory=1G,vcores=1 \\ --scheduler_launch_cmd \"/usr/bin/python image_classification.py --dataset cifar10 --model vgg11 --epochs 1 --kvstore dist_sync\" \\ --num_workers 2 \\ --worker_resources memory=2G,vcores=1 \\ --worker_launch_cmd \"/usr/bin/python image_classification.py --dataset cifar10 --model vgg11 --epochs 1 --kvstore dist_sync\" \\ --num_ps 2 \\ --ps_resources memory=2G,vcores=1 \\ --ps_launch_cmd \"/usr/bin/python image_classification.py --dataset cifar10 --model vgg11 --epochs 1 --kvstore dist_sync\" \\ --verbose \\ --insecure \\ --conf tony.containers.resources=path-to/image_classification.py,path-to/submarine-all-${SUBMARINE_VERSION}-hadoop-${SUBMARINE_HADOOP_VERSION}.jar Copy "},{"title":"Use YARN Service to run Submarine: Deprecated","type":1,"pageTitle":"YARN Runtime Quick Start Guide","url":"docs/userDocs/yarn/YARNRuntimeGuide#use-yarn-service-to-run-submarine-deprecated","content":"Historically, Submarine supports to use YARN Service to submit deep learning jobs. Now we stop supporting it because YARN service is not actively developed by community, and extra dependencies such as RegistryDNS/ATS-v2 causes lots of issues for setup. As of now, you can still use YARN service to run Submarine, but code will be removed in the future release. We will only support use TonY when use Submarine on YARN. "}]
\ No newline at end of file
diff --git a/sitemap.xml b/sitemap.xml
index a05bcc2..55e3916 100644
--- a/sitemap.xml
+++ b/sitemap.xml
@@ -1 +1 @@
-<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:mobile="http://www.google.com/schemas/sitemap-mobile/1.0" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"><url><loc>https://submarine.apache.org/</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/releases/submarine-release-0.2.0</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/releases/submarine-release-0.3.0</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/releases/submarine-release-0.4.0</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/releases/submarine-release-0.5.0</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/releases/submarine-release-0.6.0</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/versions</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/adminDocs/yarn/README</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/adminDocs/yarn/TestAndTroubleshooting</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/adminDocs/yarn/workbench/HowToRun</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/adminDocs/yarn/workbench/notebook/setup-jupyter</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/adminDocs/yarn/workbench/README</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/adminDocs/yarn/workbench/README.zh-CN</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/api/environment</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/api/experiment</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/api/experiment-template</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/api/model-version</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/api/notebook</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/api/registered-model</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/api/serve</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/community/Bylaws</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/community/contributing</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/community/HowToBecomeCommitter</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/community/HowToCommit</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/community/HowToVoteCommitterOrPMC</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/community/README</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/designDocs/architecture-and-requirements</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/designDocs/environments-implementation</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/designDocs/experiment-implementation</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/designDocs/implementation-notes</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/designDocs/notebook-implementation</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/designDocs/storage-implementation</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/designDocs/submarine-server/architecture</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/designDocs/submarine-server/experimentSpec</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/designDocs/wip-designs/security-implementation</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/designDocs/wip-designs/submarine-clusterServer</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/designDocs/wip-designs/submarine-launcher</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/devDocs/BuildFromCode</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/devDocs/Dependencies</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/devDocs/Development</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/devDocs/HowToRelease</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/devDocs/HowToVerify</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/devDocs/IntegrationTestE2E</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/devDocs/IntegrationTestK8s</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/devDocs/README</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/download</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/ecosystem/kaldi/WriteDockerfileKaldi</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/gettingStarted/helm</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/gettingStarted/kind</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/gettingStarted/notebook</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/gettingStarted/python-sdk</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/gettingStarted/quickstart</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/userDocs/api/environment</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/userDocs/api/experiment</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/userDocs/api/experiment-template</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/userDocs/api/notebook</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/userDocs/others/mlflow</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/userDocs/others/tensorboard</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/userDocs/submarine-sdk/experiment-client</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/userDocs/submarine-sdk/pysubmarine/development</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/userDocs/submarine-sdk/README</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/userDocs/submarine-sdk/submarine-cli</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/userDocs/submarine-sdk/tracking</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/userDocs/yarn/Dockerfiles</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/userDocs/yarn/TestAndTroubleshooting</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/userDocs/yarn/WriteDockerfileMX</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/userDocs/yarn/WriteDockerfilePT</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/userDocs/yarn/WriteDockerfileTF</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/userDocs/yarn/YARNRuntimeGuide</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/adminDocs/yarn/README</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/adminDocs/yarn/TestAndTroubleshooting</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/adminDocs/yarn/workbench/HowToRun</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/adminDocs/yarn/workbench/notebook/setup-jupyter</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/adminDocs/yarn/workbench/README</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/adminDocs/yarn/workbench/README.zh-CN</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/api/environment</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/api/experiment</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/api/experiment-template</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/api/notebook</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/community/contributing</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/community/HowToCommit</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/community/README</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/designDocs/architecture-and-requirements</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/designDocs/environments-implementation</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/designDocs/experiment-implementation</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/designDocs/implementation-notes</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/designDocs/notebook-implementation</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/designDocs/storage-implementation</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/designDocs/submarine-server/architecture</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/designDocs/submarine-server/experimentSpec</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/designDocs/wip-designs/security-implementation</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/designDocs/wip-designs/submarine-clusterServer</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/designDocs/wip-designs/submarine-launcher</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/devDocs/BuildFromCode</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/devDocs/Dependencies</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/devDocs/Development</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/devDocs/IntegrationTestE2E</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/devDocs/IntegrationTestK8s</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/devDocs/README</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/download</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/ecosystem/kaldi/WriteDockerfileKaldi</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/gettingStarted/helm</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/gettingStarted/kind</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/gettingStarted/notebook</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/gettingStarted/python-sdk</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/gettingStarted/quickstart</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/userDocs/api/environment</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/userDocs/api/experiment</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/userDocs/api/experiment-template</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/userDocs/api/notebook</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/userDocs/others/mlflow</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/userDocs/others/tensorboard</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/userDocs/submarine-sdk/experiment-client</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/userDocs/submarine-sdk/model-client</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/userDocs/submarine-sdk/pysubmarine/development</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/userDocs/submarine-sdk/README</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/userDocs/submarine-sdk/tracking</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/userDocs/submarine-security/spark-security/README</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/userDocs/yarn/Dockerfiles</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/userDocs/yarn/TestAndTroubleshooting</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/userDocs/yarn/WriteDockerfileMX</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/userDocs/yarn/WriteDockerfilePT</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/userDocs/yarn/WriteDockerfileTF</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/userDocs/yarn/YARNRuntimeGuide</loc><changefreq>weekly</changefreq><priority>0.5</priority></url></urlset>
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:mobile="http://www.google.com/schemas/sitemap-mobile/1.0" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"><url><loc>https://submarine.apache.org/</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/releases/submarine-release-0.2.0</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/releases/submarine-release-0.3.0</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/releases/submarine-release-0.4.0</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/releases/submarine-release-0.5.0</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/releases/submarine-release-0.6.0</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/versions</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/api/environment</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/api/experiment</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/api/experiment-template</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/api/model-version</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/api/notebook</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/api/registered-model</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/api/serve</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/community/Bylaws</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/community/contributing</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/community/HowToBecomeCommitter</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/community/HowToCommit</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/community/HowToVoteCommitterOrPMC</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/community/README</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/designDocs/architecture-and-requirements</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/designDocs/environments-implementation</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/designDocs/experiment-implementation</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/designDocs/implementation-notes</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/designDocs/notebook-implementation</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/designDocs/storage-implementation</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/designDocs/submarine-server/architecture</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/designDocs/submarine-server/experimentSpec</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/designDocs/wip-designs/security-implementation</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/designDocs/wip-designs/submarine-clusterServer</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/designDocs/wip-designs/submarine-launcher</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/devDocs/BuildFromCode</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/devDocs/Dependencies</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/devDocs/Development</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/devDocs/HowToRelease</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/devDocs/HowToVerify</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/devDocs/IntegrationTestE2E</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/devDocs/IntegrationTestK8s</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/devDocs/README</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/download</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/gettingStarted/helm</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/gettingStarted/kind</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/gettingStarted/notebook</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/gettingStarted/python-sdk</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/gettingStarted/quickstart</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/userDocs/api/environment</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/userDocs/api/experiment</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/userDocs/api/experiment-template</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/userDocs/api/notebook</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/userDocs/others/mlflow</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/userDocs/others/tensorboard</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/userDocs/submarine-sdk/experiment-client</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/userDocs/submarine-sdk/pysubmarine/development</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/userDocs/submarine-sdk/README</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/userDocs/submarine-sdk/submarine-cli</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/next/userDocs/submarine-sdk/tracking</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/adminDocs/yarn/README</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/adminDocs/yarn/TestAndTroubleshooting</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/adminDocs/yarn/workbench/HowToRun</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/adminDocs/yarn/workbench/notebook/setup-jupyter</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/adminDocs/yarn/workbench/README</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/adminDocs/yarn/workbench/README.zh-CN</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/api/environment</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/api/experiment</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/api/experiment-template</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/api/notebook</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/community/contributing</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/community/HowToCommit</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/community/README</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/designDocs/architecture-and-requirements</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/designDocs/environments-implementation</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/designDocs/experiment-implementation</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/designDocs/implementation-notes</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/designDocs/notebook-implementation</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/designDocs/storage-implementation</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/designDocs/submarine-server/architecture</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/designDocs/submarine-server/experimentSpec</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/designDocs/wip-designs/security-implementation</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/designDocs/wip-designs/submarine-clusterServer</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/designDocs/wip-designs/submarine-launcher</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/devDocs/BuildFromCode</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/devDocs/Dependencies</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/devDocs/Development</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/devDocs/IntegrationTestE2E</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/devDocs/IntegrationTestK8s</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/devDocs/README</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/download</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/ecosystem/kaldi/RunningDistributedThchs30KaldiJobs</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/ecosystem/kaldi/WriteDockerfileKaldi</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/gettingStarted/helm</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/gettingStarted/kind</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/gettingStarted/notebook</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/gettingStarted/python-sdk</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/gettingStarted/quickstart</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/userDocs/api/environment</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/userDocs/api/experiment</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/userDocs/api/experiment-template</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/userDocs/api/notebook</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/userDocs/others/mlflow</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/userDocs/others/tensorboard</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/userDocs/submarine-sdk/experiment-client</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/userDocs/submarine-sdk/model-client</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/userDocs/submarine-sdk/pysubmarine/development</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/userDocs/submarine-sdk/README</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/userDocs/submarine-sdk/tracking</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/userDocs/submarine-security/spark-security/build-submarine-spark-security-plugin</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/userDocs/submarine-security/spark-security/README</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/userDocs/yarn/docker/tensorflow/with-cifar10-models/ubuntu-18.04/cifar10_estimator_tf_1.13.1/README</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/userDocs/yarn/Dockerfiles</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/userDocs/yarn/TestAndTroubleshooting</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/userDocs/yarn/WriteDockerfileMX</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/userDocs/yarn/WriteDockerfilePT</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/userDocs/yarn/WriteDockerfileTF</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://submarine.apache.org/docs/userDocs/yarn/YARNRuntimeGuide</loc><changefreq>weekly</changefreq><priority>0.5</priority></url></urlset>
\ No newline at end of file
diff --git a/styles.8996f5d2.js b/styles.6ddab7ad.js
similarity index 90%
rename from styles.8996f5d2.js
rename to styles.6ddab7ad.js
index 11c5da7..7f17da7 100644
--- a/styles.8996f5d2.js
+++ b/styles.6ddab7ad.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[0],{17:function(e,n,o){},174:function(e,n,o){e.exports={heroBanner:"heroBanner_2Ftp",buttons:"buttons_1Wc3",features:"features_P2SU",featureImage:"featureImage_3Xqx"}},37:function(e,n,o){e.exports={baseUrlIssueBanner:"baseUrlIssueBanner_1-cE"}},47:function(e,n,o){},51:function(e,n,o){},52:function(e,n,o){},55:function(e,n,o){e.exports={tableOfContents:"tableOfContents_2xL-",docItemContainer:"docItemContainer_1Kik"}},56:function(e,n,o){e.exports={codeBlockContent:"codeBlockContent_actS",codeBlockTitle:"codeBlockTitle_2eSY",codeBlock:"codeBlock_tuNs",codeBlockWithTitle:"codeBlockWithTitle_1UkA",copyButton:"copyButton_2GIj",codeBlockLines:"codeBlockLines_3uvA"}},57:function(e,n,o){},58:function(e,n,o){e.exports={enhancedAnchor:"enhancedAnchor_prK2"}},59:function(e,n,o){e.exports={mdxCodeBlock:"mdxCodeBlock_1zKU"}},60:function(e,n,o){e.exports={skipToContent:"skipToContent_11B0"}},61:function(e,n,o){e.exports={announcementBar:"announcementBar_1JSk",announcementBarClose:"announcementBarClose_1-Um",announcementBarContent:"announcementBarContent_2EqR",announcementBarCloseable:"announcementBarCloseable_3bpQ"}},62:function(e,n,o){e.exports={toggle:"toggle_3NWk"}},63:function(e,n,o){e.exports={themedImage:"themedImage_YANc","themedImage--light":"themedImage--light_3CMI","themedImage--dark":"themedImage--dark_3ARp"}},64:function(e,n,o){e.exports={displayOnlyInLargeViewport:"displayOnlyInLargeViewport_2N3Q",hideLogoText:"hideLogoText_2jLQ",navbarHideable:"navbarHideable_17Wu",navbarHidden:"navbarHidden_19ww"}},65:function(e,n,o){e.exports={footerLogoLink:"footerLogoLink_31Aa"}},66:function(e,n,o){},67:function(e,n,o){},76:function(e,n,o){e.exports={iconEdit:"iconEdit_2LL7"}},77:function(e,n,o){e.exports={docTitle:"docTitle_Oumm",docItemContainer:"docItemContainer_a7m4",docItemCol:"docItemCol_U38p",docLastUpdatedAt:"docLastUpdatedAt_1Qna"}},79:function(e,n,o){e.exports={sidebar:"sidebar_3gvy",sidebarWithHideableNavbar:"sidebarWithHideableNavbar_CROi",sidebarHidden:"sidebarHidden_3AzR",sidebarLogo:"sidebarLogo_xFc8",menu:"menu_1yIk",menuLinkText:"menuLinkText_yu3-",menuWithAnnouncementBar:"menuWithAnnouncementBar_3qTP",collapseSidebarButton:"collapseSidebarButton_2WRA",collapseSidebarButtonIcon:"collapseSidebarButtonIcon_CoMu",sidebarMenuIcon:"sidebarMenuIcon_1CUI",sidebarMenuCloseIcon:"sidebarMenuCloseIcon_ZwX-"}},80:function(e,n,o){e.exports={docPage:"docPage_vMrn",docSidebarContainer:"docSidebarContainer_3Ak5",docSidebarContainerHidden:"docSidebarContainerHidden_27Ua",collapsedDocSidebar:"collapsedDocSidebar_2fQg",docMainContainer:"docMainContainer_2iGs",docItemWrapperEnhanced:"docItemWrapperEnhanced_1x_V",docItemWrapper:"docItemWrapper_1bxp"}}}]);
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[0],{162:function(e,n,o){e.exports={heroBanner:"heroBanner_2Ftp",buttons:"buttons_1Wc3",features:"features_P2SU",featureImage:"featureImage_3Xqx"}},17:function(e,n,o){},37:function(e,n,o){e.exports={baseUrlIssueBanner:"baseUrlIssueBanner_1-cE"}},47:function(e,n,o){},51:function(e,n,o){},52:function(e,n,o){},55:function(e,n,o){e.exports={tableOfContents:"tableOfContents_2xL-",docItemContainer:"docItemContainer_1Kik"}},56:function(e,n,o){e.exports={codeBlockContent:"codeBlockContent_actS",codeBlockTitle:"codeBlockTitle_2eSY",codeBlock:"codeBlock_tuNs",codeBlockWithTitle:"codeBlockWithTitle_1UkA",copyButton:"copyButton_2GIj",codeBlockLines:"codeBlockLines_3uvA"}},57:function(e,n,o){},58:function(e,n,o){e.exports={enhancedAnchor:"enhancedAnchor_prK2"}},59:function(e,n,o){e.exports={mdxCodeBlock:"mdxCodeBlock_1zKU"}},60:function(e,n,o){e.exports={skipToContent:"skipToContent_11B0"}},61:function(e,n,o){e.exports={announcementBar:"announcementBar_1JSk",announcementBarClose:"announcementBarClose_1-Um",announcementBarContent:"announcementBarContent_2EqR",announcementBarCloseable:"announcementBarCloseable_3bpQ"}},62:function(e,n,o){e.exports={toggle:"toggle_3NWk"}},63:function(e,n,o){e.exports={themedImage:"themedImage_YANc","themedImage--light":"themedImage--light_3CMI","themedImage--dark":"themedImage--dark_3ARp"}},64:function(e,n,o){e.exports={displayOnlyInLargeViewport:"displayOnlyInLargeViewport_2N3Q",hideLogoText:"hideLogoText_2jLQ",navbarHideable:"navbarHideable_17Wu",navbarHidden:"navbarHidden_19ww"}},65:function(e,n,o){e.exports={footerLogoLink:"footerLogoLink_31Aa"}},66:function(e,n,o){},67:function(e,n,o){},76:function(e,n,o){e.exports={iconEdit:"iconEdit_2LL7"}},77:function(e,n,o){e.exports={docTitle:"docTitle_Oumm",docItemContainer:"docItemContainer_a7m4",docItemCol:"docItemCol_U38p",docLastUpdatedAt:"docLastUpdatedAt_1Qna"}},79:function(e,n,o){e.exports={sidebar:"sidebar_3gvy",sidebarWithHideableNavbar:"sidebarWithHideableNavbar_CROi",sidebarHidden:"sidebarHidden_3AzR",sidebarLogo:"sidebarLogo_xFc8",menu:"menu_1yIk",menuLinkText:"menuLinkText_yu3-",menuWithAnnouncementBar:"menuWithAnnouncementBar_3qTP",collapseSidebarButton:"collapseSidebarButton_2WRA",collapseSidebarButtonIcon:"collapseSidebarButtonIcon_CoMu",sidebarMenuIcon:"sidebarMenuIcon_1CUI",sidebarMenuCloseIcon:"sidebarMenuCloseIcon_ZwX-"}},80:function(e,n,o){e.exports={docPage:"docPage_vMrn",docSidebarContainer:"docSidebarContainer_3Ak5",docSidebarContainerHidden:"docSidebarContainerHidden_27Ua",collapsedDocSidebar:"collapsedDocSidebar_2fQg",docMainContainer:"docMainContainer_2iGs",docItemWrapperEnhanced:"docItemWrapperEnhanced_1x_V",docItemWrapper:"docItemWrapper_1bxp"}}}]);
\ No newline at end of file
diff --git a/versions/index.html b/versions/index.html
index f888489..b3520a1 100644
--- a/versions/index.html
+++ b/versions/index.html
@@ -6,29 +6,29 @@
 <meta name="generator" content="Docusaurus v2.0.0-alpha.70">
 <link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Submarine Blog RSS Feed">
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Submarine Blog Atom Feed"><title data-react-helmet="true">Versions | Apache Submarine</title><meta data-react-helmet="true" property="og:title" content="Versions | Apache Submarine"><meta data-react-helmet="true" name="description" content="Submarine Versions page listing all documented site versions"><meta data-react-helmet="true" property="og:description" content="Submarine Versions page listing all documented site versions"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docusaurus_locale" content="en"><meta data-react-helmet="true" name="docusaurus_tag" content="default"><link data-react-helmet="true" rel="shortcut icon" href="/img/submarine.ico"><link rel="stylesheet" href="/styles.39775f96.css">
-<link rel="preload" href="/styles.8996f5d2.js" as="script">
-<link rel="preload" href="/runtime~main.8a45eeb2.js" as="script">
-<link rel="preload" href="/main.f5734e41.js" as="script">
-<link rel="preload" href="/1.a006e7ff.js" as="script">
-<link rel="preload" href="/2.fba10c87.js" as="script">
-<link rel="preload" href="/18b93cb3.603ff4e5.js" as="script">
-<link rel="preload" href="/1be78505.15c0b52a.js" as="script">
-<link rel="preload" href="/c4f5d8e4.89aae0ca.js" as="script">
-<link rel="preload" href="/145.4f2a58d3.js" as="script">
+<link rel="preload" href="/styles.6ddab7ad.js" as="script">
+<link rel="preload" href="/runtime~main.943b9f3a.js" as="script">
+<link rel="preload" href="/main.92db4fb0.js" as="script">
+<link rel="preload" href="/1.dab80c77.js" as="script">
+<link rel="preload" href="/2.6a1a8326.js" as="script">
+<link rel="preload" href="/18b93cb3.6bc02854.js" as="script">
+<link rel="preload" href="/1be78505.ed765e6d.js" as="script">
+<link rel="preload" href="/c4f5d8e4.4fc79c88.js" as="script">
+<link rel="preload" href="/130.4bee60be.js" as="script">
 </head>
 <body>
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a><a class="navbar__item navbar__link" href="/docs/gettingStarted/quickstart">Docs</a><a class="navbar__item navbar__link" href="/docs/api/environment">API</a><a class="navbar__item navbar__link" href="/docs/download">Download</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link" href="/docs/">0.6.0</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/next/">master 🏃</a></li><li><a class="dropdown__link" href="/docs/">0.6.0</a></li><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/versions">All versions</a></li></ul></div><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">Apache</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache License</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li></ul></div><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Search" aria-label="Search" class="navbar__search-input search-bar"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/img/icons/128.png" alt="Apache Submarine Site Logo" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Apache Submarine</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/gettingStarted/quickstart">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/api/environment">API</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/download">Download</a></li><li class="menu__list-item"><a role="button" class="menu__link menu__link--sublist">Versions</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/next/">master 🏃</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/">0.6.0</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active" href="/versions">All versions</a></li></ul></li><li class="menu__list-item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item menu__list-item--collapsed"><a role="button" class="menu__link menu__link--sublist">Apache</a><ul class="menu__list"><li class="menu__list-item"><a href="https://www.apache.org/foundation/how-it-works.html" target="_blank" rel="noopener noreferrer" class="menu__link">Apache Software Foundation</a></li><li class="menu__list-item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="menu__link">Events</a></li><li class="menu__list-item"><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="menu__link">Apache License</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="menu__link">Thanks</a></li><li class="menu__list-item"><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="menu__link">Security</a></li><li class="menu__list-item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="menu__link">Sponsorship</a></li></ul></li></ul></div></div></div></nav><div class="main-wrapper"><main class="container margin-vert--lg"><h1>Submarine documentation versions</h1><div class="margin-bottom--lg"><h3 id="next">Current version (Stable)</h3><p>Here you can find the documentation for current released version.</p><table><tbody><tr><th>0.6.0</th><td><a href="/docs">Documentation</a></td><td><a href="/releases/submarine-release-0.6.0">Release Notes</a></td></tr></tbody></table></div><div class="margin-bottom--lg"><h3 id="latest">Next version (Unreleased)</h3><p>Here you can find the documentation for work-in-process unreleased version.</p><table><tbody><tr><th>master 🏃</th><td><a href="/docs/next">Documentation</a></td><td><a href="https://github.com/apache/submarine-site" target="_blank" rel="noopener noreferrer">Source code</a></td></tr></tbody></table></div><div class="margin-bottom--lg"><h3 id="archive">Past versions (Not maintained anymore)</h3><p>Here you can find documentation for previous versions of Submarine.</p><table><tbody><tr><th>0.5.0</th><td>Documentation</td><td><a href="/releases/submarine-release-0.5.0">Release Notes</a></td></tr><tr><th>0.4.0</th><td>Documentation</td><td><a href="/releases/submarine-release-0.4.0">Release Notes</a></td></tr><tr><th>0.3.0</th><td>Documentation</td><td><a href="/releases/submarine-release-0.3.0">Release Notes</a></td></tr><tr><th>0.2.0</th><td>Documentation</td><td><a href="/releases/submarine-release-0.2.0">Release Notes</a></td></tr></tbody></table></div></main></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/gettingStarted/quickstart">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/environment">API docs</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/apache-submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow</a></li><li class="footer__item"><a href="https://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">More</h4><ul class="footer__items"><li class="footer__item"><a href="https://medium.com/@apache.submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/submarine" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_31Aa"><img class="footer__logo" alt="Apache Open Source Logo" src="https://hadoop.apache.org/asf_logo_wide.png"></a></div><div class="footer__copyright">Apache Submarine, Submarine, Apache, the Apache feather logo, and the Apache Submarine project logo are
        either registered trademarks or trademarks of the Apache Software Foundation in the United States and other
         countries.<br> Copyright © 2022 Apache Submarine is Apache2 Licensed software.</div></div></div></footer></div>
-<script src="/styles.8996f5d2.js"></script>
-<script src="/runtime~main.8a45eeb2.js"></script>
-<script src="/main.f5734e41.js"></script>
-<script src="/1.a006e7ff.js"></script>
-<script src="/2.fba10c87.js"></script>
-<script src="/18b93cb3.603ff4e5.js"></script>
-<script src="/1be78505.15c0b52a.js"></script>
-<script src="/c4f5d8e4.89aae0ca.js"></script>
-<script src="/145.4f2a58d3.js"></script>
+<script src="/styles.6ddab7ad.js"></script>
+<script src="/runtime~main.943b9f3a.js"></script>
+<script src="/main.92db4fb0.js"></script>
+<script src="/1.dab80c77.js"></script>
+<script src="/2.6a1a8326.js"></script>
+<script src="/18b93cb3.6bc02854.js"></script>
+<script src="/1be78505.ed765e6d.js"></script>
+<script src="/c4f5d8e4.4fc79c88.js"></script>
+<script src="/130.4bee60be.js"></script>
 </body>
 </html>
\ No newline at end of file